<?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>230477</bug_id>
          
          <creation_ts>2021-09-20 06:01:48 -0700</creation_ts>
          <short_desc>Disable FTP</short_desc>
          <delta_ts>2021-09-22 10:59:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1795038</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-09-20 06:01:48 -0700</bug_when>
    <thetext>Disable FTP

We&apos;ll do this as an on-by-default experimental feature

&lt;rdar://81193860&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795041</commentid>
    <comment_count>1</comment_count>
      <attachid>438665</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-09-20 06:07:19 -0700</bug_when>
    <thetext>Created attachment 438665
Patch (which no changeling, still sorting that out)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795042</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-09-20 06:07:46 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #1)
&gt; Created attachment 438665 [details]
&gt; Patch (which no changeling, still sorting that out)

ChangeLog &lt;--- DYAC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795044</commentid>
    <comment_count>3</comment_count>
      <attachid>438666</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-09-20 06:15:24 -0700</bug_when>
    <thetext>Created attachment 438666
v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795045</commentid>
    <comment_count>4</comment_count>
      <attachid>438666</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-09-20 06:20:53 -0700</bug_when>
    <thetext>Comment on attachment 438666
v2

Marking for review. Changelog on its way later</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795065</commentid>
    <comment_count>5</comment_count>
      <attachid>438674</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-09-20 07:17:29 -0700</bug_when>
    <thetext>Created attachment 438674
v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795087</commentid>
    <comment_count>6</comment_count>
      <attachid>438680</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-09-20 08:22:02 -0700</bug_when>
    <thetext>Created attachment 438680
v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795188</commentid>
    <comment_count>7</comment_count>
      <attachid>438680</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-09-20 11:51:32 -0700</bug_when>
    <thetext>Comment on attachment 438680
v4

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

r=me

Seems fine. Please rename the setting before landing.

EWS failure seems pre-existing.

&gt; Source/WTF/Scripts/Preferences/WebPreferencesExperimental.yaml:424
&gt; +FTPDisabled:

I prefer settings to be nouns or affirmative phrases. That way, we can avoid the double negative of talking about when &quot;ftp disabling is disabled&quot;. Let&apos;s call this just FTP or FTPEnabled or FTPSupport.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795286</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-09-20 14:26:46 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #7)
&gt; Comment on attachment 438680 [details]
&gt; v4
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=438680&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; Seems fine. Please rename the setting before landing.
&gt; 
&gt; EWS failure seems pre-existing.
&gt; 
&gt; &gt; Source/WTF/Scripts/Preferences/WebPreferencesExperimental.yaml:424
&gt; &gt; +FTPDisabled:
&gt; 
&gt; I prefer settings to be nouns or affirmative phrases. That way, we can avoid
&gt; the double negative of talking about when &quot;ftp disabling is disabled&quot;. Let&apos;s
&gt; call this just FTP or FTPEnabled or FTPSupport.

The reason we made it a negative (and there&apos;s precedent for this) is because Experimental Runtime Features are supposed to start off and then become enabled.

I&apos;ll ping you on Slack to followup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795387</commentid>
    <comment_count>9</comment_count>
      <attachid>438768</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-09-20 18:45:13 -0700</bug_when>
    <thetext>Created attachment 438768
PFL for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795400</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-09-20 20:06:44 -0700</bug_when>
    <thetext>Cq+&apos;ed too early - Wanna make sure the API bots are happy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795622</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-21 10:12:53 -0700</bug_when>
    <thetext>Found 1 new test failure: imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken-weird.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795652</commentid>
    <comment_count>12</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-09-21 10:56:12 -0700</bug_when>
    <thetext>(In reply to EWS from comment #11)
&gt; Found 1 new test failure:
&gt; imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/
&gt; location-protocol-setter-non-broken-weird.html

This appears to be a legit error.

Locally I&apos;d already moved on from this patch, it&apos;ll take some time to get back to it to explore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795850</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-09-21 16:34:07 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #12)
&gt; (In reply to EWS from comment #11)
&gt; &gt; Found 1 new test failure:
&gt; &gt; imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/
&gt; &gt; location-protocol-setter-non-broken-weird.html
&gt; 
&gt; This appears to be a legit error.
&gt; 
&gt; Locally I&apos;d already moved on from this patch, it&apos;ll take some time to get
&gt; back to it to explore.

Up and running and can reproduce.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796115</commentid>
    <comment_count>14</comment_count>
      <attachid>438959</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-09-22 09:52:53 -0700</bug_when>
    <thetext>Created attachment 438959
PFL for EWS #2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796131</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-22 10:58:53 -0700</bug_when>
    <thetext>Committed r282881 (242010@main): &lt;https://commits.webkit.org/242010@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 438959.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796132</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-22 10:59:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/83408253&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438665</attachid>
            <date>2021-09-20 06:07:19 -0700</date>
            <delta_ts>2021-09-20 06:15:36 -0700</delta_ts>
            <desc>Patch (which no changeling, still sorting that out)</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>25770</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNl
c0V4cGVyaW1lbnRhbC55YW1sIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlBy
ZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKaW5kZXggZjc1NzA5MTQ4NTExLi44YjRkYTkyM2Rm
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJl
bmNlc0V4cGVyaW1lbnRhbC55YW1sCisrKyBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNl
cy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCkBAIC00MDksNiArNDA5LDE4IEBAIEV4
cG9zZVNwZWFrZXJzRW5hYmxlZDoKICAgICBXZWJDb3JlOgogICAgICAgZGVmYXVsdDogZmFsc2UK
IAorRlRQRGlzYWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAgaHVtYW5SZWFkYWJsZU5hbWU6ICJGVFAg
c3VwcG9ydCBkaXNhYmxlZCIKKyAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRlRQIHN1cHBv
cnQgZGlzYWJsZWQiCisgIGRlZmF1bHRWYWx1ZToKKyAgICBXZWJDb3JlOgorICAgICAgZGVmYXVs
dDogdHJ1ZQorICAgIFdlYktpdDoKKyAgICAgIGRlZmF1bHQ6IHRydWUKKyAgICBXZWJLaXRMZWdh
Y3k6CisgICAgICBkZWZhdWx0OiB0cnVlCisgICAgICAKICMgRklYTUU6IFRoaXMgc2VlbXMgdG8g
YmUgYWNjaWRlbnRhbGx5IGVuYWJsZWQgZm9yIFdlYktpdDEgcmlnaHQgbm93IGR1ZSB0byB0aGUg
b2xkIGNvZGUgdXNpbmcgdGhlCiAjIHdyb25nIHByZWZlcmVuY2Uga2V5IGluIHNvbWUgcGxhY2Vz
LiBXZSBzaG91bGQgaWRlbnRpZnkgd2hldGhlciBpdCByZWFsbHkgbWFrZXMgc2Vuc2UgdG8ga2Vl
cCB0aGlzCiAjIGVuYWJsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwIGIv
U291cmNlL1dURi93dGYvVVJMLmNwcAppbmRleCBhN2M4ZDI0MWQzODcuLmYzZDhhYjAyMmEwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9V
UkwuY3BwCkBAIC0zMjksNiArMzI5LDExIEBAIGJvb2wgVVJMOjpwcm90b2NvbElzSmF2YVNjcmlw
dCgpIGNvbnN0CiAgICAgcmV0dXJuIFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoc3RyaW5nKCkp
OwogfQogCitib29sIFVSTDo6cHJvdG9jb2xJc0luRlRQRmFtaWx5KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gV1RGOjpwcm90b2NvbElzSW5GVFBGYW1pbHkoc3RyaW5nKCkpOworfQorCiBib29sIFVS
TDo6cHJvdG9jb2xJcyhjb25zdCBjaGFyKiBwcm90b2NvbCkgY29uc3QKIHsKICAgICBhc3NlcnRQ
cm90b2NvbElzR29vZChwcm90b2NvbCk7CkBAIC04NTYsNiArODYxLDE3IEBAIGJvb2wgcHJvdG9j
b2xJc0phdmFTY3JpcHQoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgcmV0dXJuIHByb3RvY29sSXNJ
bnRlcm5hbChzdHJpbmcsICJqYXZhc2NyaXB0Iik7CiB9CiAKK2Jvb2wgcHJvdG9jb2xJc0luRlRQ
RmFtaWx5KFN0cmluZ1ZpZXcgdXJsKQoreworICAgIGF1dG8gbGVuZ3RoID0gdXJsLmxlbmd0aCgp
OworICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBv
YmplY3QuCisgICAgcmV0dXJuIGxlbmd0aCA+PSA0CisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNh
c2VsZXNzRXF1YWwodXJsWzBdLCAnZicpCisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNz
RXF1YWwodXJsWzFdLCAndCcpCisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwo
dXJsWzJdLCAncCcpCisgICAgICAgICYmICh1cmxbM10gPT0gJzonIHx8IChpc0FTQ0lJQWxwaGFD
YXNlbGVzc0VxdWFsKHVybFszXSwgJ3MnKSAmJiBsZW5ndGggPj0gNSAmJiB1cmxbNF0gPT0gJzon
KSk7Cit9CisKIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShTdHJpbmdWaWV3IHVybCkKIHsK
ICAgICBhdXRvIGxlbmd0aCA9IHVybC5sZW5ndGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1VSTC5oIGIvU291cmNlL1dURi93dGYvVVJMLmgKaW5kZXggYTBjY2RjYzY0NjBhLi5lNTg2
OTAyNmVjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTC5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1VSTC5oCkBAIC0xMzYsNiArMTM2LDcgQEAgcHVibGljOgogICAgIGJvb2wgcHJvdG9j
b2xJc0RhdGEoKSBjb25zdCB7IHJldHVybiBwcm90b2NvbElzKCJkYXRhIik7IH0KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzQWJvdXQoKSBjb25zdDsKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdCgpIGNvbnN0OworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXNJbkZUUEZhbWlseSgpIGNvbnN0OwogICAgIGJv
b2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBib29sIGlzTG9jYWxGaWxlKCkgY29uc3Q7CiAgICAgYm9vbCBjYW5ub3RCZUFCYXNlVVJMKCkg
Y29uc3QgeyByZXR1cm4gbV9jYW5ub3RCZUFCYXNlVVJMOyB9CkBAIC0yNTksNiArMjYwLDcgQEAg
V1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVSTCYgYWJvdXRTcmNEb2NVUkwoKTsKIAogV1RGX0VY
UE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJcyhTdHJpbmdWaWV3IHVybCwgY29uc3QgY2hhciog
cHJvdG9jb2wpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQo
U3RyaW5nVmlldyB1cmwpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJc0luRlRQ
RmFtaWx5KFN0cmluZ1ZpZXcgdXJsKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29s
SXNJbkhUVFBGYW1pbHkoU3RyaW5nVmlldyB1cmwpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rk
OjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHBy
b3RvY29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAK
aW5kZXggM2U3MzExMTcxYTk0Li4zOTJmZWExMGE3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBAIC01OCw4ICs1OCwxOCBAQCBOZXR3b3JrTG9h
ZDo6TmV0d29ya0xvYWQoTmV0d29ya0xvYWRDbGllbnQmIGNsaWVudCwgQmxvYlJlZ2lzdHJ5SW1w
bCogYmxvYlJlZ2lzdAogCiB2b2lkIE5ldHdvcmtMb2FkOjpzdGFydCgpCiB7Ci0gICAgaWYgKG1f
dGFzaykKLSAgICAgICAgbV90YXNrLT5yZXN1bWUoKTsKKyAgICBpZiAoIW1fdGFzaykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MtPmZ0cERpc2FibGVkKCkgJiYg
bV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0luRlRQRmFtaWx5KCkpIHsKKyAg
ICAgICAgbV90YXNrLT5jbGVhckNsaWVudCgpOworICAgICAgICBtX3Rhc2sgPSBudWxscHRyOwor
ICAgICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MgZW1wdHlNZXRyaWNzOworICAgICAg
ICBkaWRDb21wbGV0ZVdpdGhFcnJvcihSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJ
bnRlcm5hbCwgMCwgdXJsKCksICJGVFAgVVJMcyBhcmUgZGlzYWJsZWQiX3MsIFJlc291cmNlRXJy
b3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSwgZW1wdHlNZXRyaWNzKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1fdGFzay0+cmVzdW1lKCk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6
OnN0YXJ0V2l0aFNjaGVkdWxpbmcoKQpAQCAtMTgxLDYgKzE5MSwxNyBAQCB2b2lkIE5ldHdvcmtM
b2FkOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJl
Y3RSZXNwb25zZQogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJUKCFt
X3JlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpOwogCisgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3Mt
PmZ0cERpc2FibGVkKCkgJiYgcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5GVFBGYW1pbHkoKSkg
eworICAgICAgICBtX3Rhc2stPmNsZWFyQ2xpZW50KCk7CisgICAgICAgIG1fdGFzayA9IG51bGxw
dHI7CisgICAgICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBlbXB0eU1ldHJpY3M7Cisg
ICAgICAgIGRpZENvbXBsZXRlV2l0aEVycm9yKFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldl
YktpdEludGVybmFsLCAwLCB1cmwoKSwgIkZUUCBVUkxzIGFyZSBkaXNhYmxlZCJfcywgUmVzb3Vy
Y2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9LCBlbXB0eU1ldHJpY3MpOworICAgICAgICAK
KyAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICByZWRpcmVjdFJl
c3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmspOwogICAg
IG1fcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CmluZGV4IDQ0NTE1ODk2MDhiZC4uYmRhNDU5YTFiYmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzQ1LDcgKzM0NSw4IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYmCiAKICAgICBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVu
YWJsZWQocGFyYW1ldGVycy5lbmFibGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk7CiAgICAgc2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGUocGFyYW1ldGVycy5lbmFibGVQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZSk7Ci0KKyAgICBtX2Z0cERpc2FibGVkID0gcGFyYW1l
dGVycy5mdHBEaXNhYmxlZDsKKyAgICAKICAgICBmb3IgKGF1dG8mIHN1cHBsZW1lbnQgOiBtX3N1
cHBsZW1lbnRzLnZhbHVlcygpKQogICAgICAgICBzdXBwbGVtZW50LT5pbml0aWFsaXplKHBhcmFt
ZXRlcnMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKaW5kZXggYWIyYWI0NGRjNDdkLi4yNTZjMmEwNTkxM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTM4OCw2ICszODgsOCBAQCBwdWJs
aWM6CiAgICAgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHkmIHJ0Y0RhdGFDaGFubmVs
UHJveHkoKTsKICNlbmRpZgogCisgICAgYm9vbCBmdHBEaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZnRwRGlzYWJsZWQ7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRp
YWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYpOwogCkBAIC02MDksNiArNjExLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9wcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEVuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX3ByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGVidWdNb2RlRW5hYmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2Z0cERp
c2FibGVkIHsgdHJ1ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDhmZTgxYjRjMWY2OS4uYjU3MWQ4YTc4MWMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNzIsNiArNzIsNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogCiAgICAgZW5jb2RlciA8PCBlbmFibGVQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDsKICAgICBlbmNvZGVyIDw8IGVuYWJsZVByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdN
b2RlOworICAgIGVuY29kZXIgPDwgZnRwRGlzYWJsZWQ7CiAgICAgZW5jb2RlciA8PCB3ZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVyczsKIH0KIApAQCAtMTQ2LDYgKzE0Nyw4IEBAIGJvb2wgTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIs
IE5ldHdvcmtQcm9jCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5lbmFibGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5mdHBEaXNh
YmxlZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzPj4gd2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM7
CiAgICAgZGVjb2RlciA+PiB3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaAppbmRleCBkOGQ5Y2ZkNjZkNWEuLjkwM2ExZThkOGJhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtODgsNiArODgsNyBAQCBzdHJ1Y3QgTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgYm9vbCBlbmFibGVQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCB7IHRydWUgfTsKICAgICBib29sIGVuYWJsZVByaXZhdGVDbGlja01lYXN1
cmVtZW50RGVidWdNb2RlIHsgZmFsc2UgfTsKKyAgICBib29sIGZ0cERpc2FibGVkIHsgdHJ1ZSB9
OwogCiAgICAgVmVjdG9yPFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzPiB3ZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVyczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCAxZWIyN2E5YmU1ZTYuLjVkNWJlNzQ3NDgw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UG9vbENvY29hLm1tCkBAIC01MzEsNiArNTMxLDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxh
dGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmEK
ICAgICBOU1N0cmluZyAqZm9ybWF0ID0gQCJXZWJLaXRFeHBlcmltZW50YWwlQCI7CiAjZW5kaWYK
ICAgICBwYXJhbWV0ZXJzLmVuYWJsZVByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlID0g
W2RlZmF1bHRzIGJvb2xGb3JLZXk6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6Zm9ybWF0LCBX
ZWJQcmVmZXJlbmNlc0tleTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGVFbmFibGVk
S2V5KCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKV1dOworICAgIAorICAgIHBhcmFtZXRlcnMuZnRw
RGlzYWJsZWQgPSAhW2RlZmF1bHRzIG9iamVjdEZvcktleTpXZWJQcmVmZXJlbmNlc0tleTo6ZnRw
RGlzYWJsZWRLZXkoKV0gfHwgW2RlZmF1bHRzIGJvb2xGb3JLZXk6V2ViUHJlZmVyZW5jZXNLZXk6
OmZ0cERpc2FibGVkS2V5KCldOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUlu
dmFsaWRhdGVDb250ZXh0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGMyODUwYTgxOWNhOS4uZTkxNTI1
NTBjY2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTY1LDYgKzY1LDcgQEAKICNpbmNsdWRlICJXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2xpZW50T3JpZ2lu
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0Fn
Z3JlZ2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KIApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCmluZGV4IDU2MjY4MDJiYzAzNy4uOWZlMTc3
NGQ4NDM5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVz
LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCkBAIC02NSw2
ICs2NSwxMCBAQCBib29sIGlzS2V5RG93bihXS05hdGl2ZUV2ZW50UHRyKTsKIAogc3RkOjpzdHJp
bmcgdG9TVEQoV0tTdHJpbmdSZWYpOwogc3RkOjpzdHJpbmcgdG9TVEQoV0tSZXRhaW5QdHI8V0tT
dHJpbmdSZWY+KTsKKyNpZiBQTEFURk9STShDT0NPQSkKK05TU3RyaW5nICp0b05TKFdLU3RyaW5n
UmVmKTsKK05TU3RyaW5nICp0b05TKFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPik7CisjZW5kaWYK
IAogV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHRvV0soY29uc3QgY2hhciogdXRmOFN0cmluZyk7
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMThlYmY5NDEwM2JhLi5jYjgzNTJlMGY3ZTEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNDYsNyArMzQ2LDkgQEAKIAkJNTE3MTRFQjQx
Q0Y4Qzc4QzAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0xLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTRFQjIx
Q0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0xLmh0bWwgKi87IH07
CiAJCTUxNzE0RUI1MUNGOEM3OEMwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAt
Mi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNzE0RUIzMUNGOEM3NjEwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAt
Mi5odG1sICovOyB9OwogCQk1MTcxNEVCODFDRjhDQTE3MDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tp
bGxJREJDbGVhbnVwLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE3MTRFQjYxQ0Y4QzdBNDAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51
cC5tbSAqLzsgfTsKKwkJNTE3NUM3QTIyNkY4NzYyMzAwMDNBRjVDIC8qIEJ1bmRsZVBhZ2VDb25z
b2xlTWVzc2FnZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNzVDN0ExMjZGODc2MjMwMDAzQUY1QyAvKiBCdW5kbGVQYWdlQ29uc29sZU1lc3NhZ2Uu
bW0gKi87IH07CiAJCTUxN0U3RTA0MTUxMTE5QzEwMEQwQjAwOCAvKiBNZW1vcnlDYWNoZVBydW5l
V2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdFN0UwMzE1MTExODc1MDBEMEIwMDggLyog
TWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgKi87IH07CisJ
CTUxODE5RjJBMjZFQUM5ODMwMEU0NzM3NSAvKiBGVFAubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgxOUYyOTI2RUFDOTgyMDBFNDczNzUgLyogRlRQ
Lm1tICovOyB9OwogCQk1MTgyMEE0RDIyRjRFRTdGMDBERjBBMDEgLyogSmF2YXNjcmlwdFVSTE5h
dmlnYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTgyMEE0QzIyRjRFRTc3MDBERjBBMDEgLyogSmF2YXNjcmlwdFVSTE5hdmlnYXRpb24ubW0g
Ki87IH07CiAJCTUxODJDMjJFMUYyQkNFNTQwMDU5QkE3QyAvKiBXS1VSTFNjaGVtZUhhbmRsZXIt
bGVha3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTgyQzIyRDFGMkJDQjQxMDA1OUJBN0MgLyogV0tVUkxTY2hlbWVIYW5kbGVyLWxlYWtzLm1tICov
OyB9OwogCQk1MThDMTE1MzIwNUIwNTA0MDAxRkY0QUUgLyogUHJvY2Vzc1N3YXBPbk5hdmlnYXRp
b24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MThD
MTE1MjIwNUIwNEY5MDAxRkY0QUUgLyogUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gKi87IH07
CkBAIC0yMTgxLDggKzIxODMsMTAgQEAKIAkJNTE3MTRFQjMxQ0Y4Qzc2MTAwNDcyM0M0IC8qIFdl
YlByb2Nlc3NLaWxsSURCQ2xlYW51cC0yLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSAiV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTIuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxNzE0RUI2MUNGOEM3QTQwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNs
ZWFudXAubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQcm9j
ZXNzS2lsbElEQkNsZWFudXAubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNzE0
RUI5MUQwODc0MTYwMDQ3MjNDNCAvKiBDcm9zc1RocmVhZFRhc2suY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3Jvc3NUaHJlYWRUYXNrLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTE3NUM3QTEyNkY4NzYyMzAwMDNBRjVDIC8qIEJ1bmRsZVBhZ2VD
b25zb2xlTWVzc2FnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEJ1bmRsZVBhZ2VDb25zb2xlTWVzc2FnZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE3RTdERkIxNTExMEVBNjAwRDBCMDA4IC8qIE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3RTdFMDMxNTExMTg3NTAwRDBCMDA4IC8qIE1lbW9y
eUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBwYXRoID0gTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRl
Lmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxODE5RjI5MjZFQUM5ODIwMEU0
NzM3NSAvKiBGVFAubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBG
VFAubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODIwQTRDMjJGNEVFNzcwMERG
MEEwMSAvKiBKYXZhc2NyaXB0VVJMTmF2aWdhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEphdmFzY3JpcHRVUkxOYXZpZ2F0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MTgyQzIyRDFGMkJDQjQxMDA1OUJBN0MgLyogV0tVUkxTY2hlbWVIYW5kbGVyLWxlYWtzLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gIldLVVJMU2NoZW1lSGFuZGxlci1sZWFrcy5tbSI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxOEMxMTUyMjA1QjA0RjkwMDFGRjRBRSAvKiBQ
cm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFByb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMzQwOCw2ICszNDEyLDcgQEAKIAkJCQk3QTg5QkI2NTIzMzE2MzVEMDA0MkNC
MUUgLyogQnVuZGxlRm9ybURlbGVnYXRlLm1tICovLAogCQkJCTdBODlCQjY2MjMzMTYzNUQwMDQy
Q0IxRSAvKiBCdW5kbGVGb3JtRGVsZWdhdGVQbHVnSW4ubW0gKi8sCiAJCQkJN0E4OUJCNjkyMzMx
NjU2NTAwNDJDQjFFIC8qIEJ1bmRsZUZvcm1EZWxlZ2F0ZVByb3RvY29sLmggKi8sCisJCQkJNTE3
NUM3QTEyNkY4NzYyMzAwMDNBRjVDIC8qIEJ1bmRsZVBhZ2VDb25zb2xlTWVzc2FnZS5tbSAqLywK
IAkJCQlBMTNFQkJBQzFCODc0MzZGMDAwOTcxMTAgLyogQnVuZGxlUGFyYW1ldGVycy5tbSAqLywK
IAkJCQlBMTNFQkJBRTFCODc0MzZGMDAwOTcxMTAgLyogQnVuZGxlUGFyYW1ldGVyc1BsdWdJbi5t
bSAqLywKIAkJCQkzN0E3MDlBRDFFM0VBOEIwMDBDQTU5NjkgLyogQnVuZGxlUmFuZ2VIYW5kbGUu
bW0gKi8sCkBAIC0zNDU5LDYgKzM0NjQsNyBAQAogCQkJCTZCMjVBNzUxMjVEQzhENEUwMDcwNzQ0
RiAvKiBFdmVudEF0dHJpYnV0aW9uLm1tICovLAogCQkJCUNEQTI5QjI4MjBGRDJBOTkwMEYxNUNF
RCAvKiBFeGl0RnVsbHNjcmVlbk9uRW50ZXJQaVAubW0gKi8sCiAJCQkJMUQxMkJFQkYyNDVCRUY4
NTAwNEMwQjdBIC8qIEV4aXRQaVBPblN1c3BlbmRWaWRlb0VsZW1lbnQubW0gKi8sCisJCQkJNTE4
MTlGMjkyNkVBQzk4MjAwRTQ3Mzc1IC8qIEZUUC5tbSAqLywKIAkJCQkyRDgxMDRDQjFCRUMxM0U3
MDAyMERBNDYgLyogRmluZEluUGFnZS5tbSAqLywKIAkJCQk1MTI0MkNENDIzNzRFNjFFMDBFRUQ5
QzEgLyogRmluZEluUGFnZUFQSS5tbSAqLywKIAkJCQkxMTgxNTM0NzIyMDhCQURGMDBCMkNDRDIg
LyogRmlyc3RWaXN1YWxseU5vbkVtcHR5TWlsZXN0b25lLm1tICovLApAQCAtNTc3Niw2ICs1Nzgy
LDcgQEAKIAkJCQk3Q0NFN0YxNDFBNDExQUU2MDA0NDdDNEMgLyogU2hvdWxkS2VlcEN1cnJlbnRC
YWNrRm9yd2FyZExpc3RJdGVtSW5MaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3QkNBNjFD
MUI1OTZCQTkwMDIwMTJDQSAvKiBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzSW5OZXdXaW5kb3dBY3Rp
b25zLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQzUxRDBBNjU0NjAwRkVCQ0YzIC8qIFNo
cmlua1RvRml0Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4MTlGMkEyNkVBQzk4MzAwRTQ3Mzc1
IC8qIEZUUC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUNEMUE0MTFBN0UwMDQ0N0M0QyAv
KiBTaW1wbGlmeU1hcmt1cC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUMxNDlENTUwMjQyRTk4REYw
MDNFQkIxMiAvKiBTbGVlcERpc2FibGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRGRjdCNkQx
REE0ODdBRjAwODE0NjE0IC8qIFNuYXBzaG90U3RvcmUubW0gaW4gU291cmNlcyAqLywKQEAgLTYw
MTIsNiArNjAxOSw3IEBACiAJCQkJMkQzQ0EzQTgyMjFERjRCNDAwODhFODAzIC8qIFBhZ2VPdmVy
bGF5UGx1Z2luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ0QzdBMDAyMEY5RUVCRjAwMTQ0NzhD
IC8qIFBhcnNlcllpZWxkVG9rZW5QbHVnSW4ubW0gaW4gU291cmNlcyAqLywKIAkJCQlBMTNFQkJB
QjFCODc0MzQ2MDAwOTcxMTAgLyogUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTUxNzVDN0EyMjZGODc2MjMwMDAzQUY1QyAvKiBCdW5kbGVQYWdlQ29uc29sZU1l
c3NhZ2UubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTRGODFDRjFCREZGRDUzMDA0RTY3MkUgLyog
UmVtb3RlT2JqZWN0UmVnaXN0cnlQbHVnSW4ubW0gaW4gU291cmNlcyAqLywKIAkJCQlBMTJEREMw
MjFFODM3QzI0MDBDRjZDQUUgLyogUmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zUGx1Z0luLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTI0NTE3ODcyMUI5RjU3QjAwODJDQjM0IC8qIFJlbmRlcmluZ1By
b2dyZXNzUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRsZVBhZ2VDb25zb2xlTWVzc2FnZS5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQnVuZGxlUGFnZUNvbnNvbGVNZXNz
YWdlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTFmOTk4M2Nl
ZGViCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9CdW5kbGVQYWdlQ29uc29sZU1lc3NhZ2UubW0KQEAgLTAsMCArMSw1NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0IDxXZWJLaXQvV0tCdW5kbGVQYWdl
Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tCdW5kbGVQYWdlVUlDbGllbnQuaD4KKyNpbXBvcnQgPFdl
YktpdC9XS1JldGFpblB0ci5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbi5o
PgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlclByaXZhdGUuaD4KKworCit2b2lkIHdpbGxBZGRNZXNzYWdlVG9Db25zb2xlQ2FsbGJhY2so
V0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIHVpbnQzMl90IGxpbmVO
dW1iZXIsIGNvbnN0IHZvaWQgKikKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVz
c2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDb25zb2xl
TWVzc2FnZSIpKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShwYWdlLCBtZXNzYWdlTmFt
ZS5nZXQoKSwgbWVzc2FnZSk7Cit9CisKK0BpbnRlcmZhY2UgQnVuZGxlUGFnZUNvbnNvbGVNZXNz
YWdlIDogTlNPYmplY3QgPFdLV2ViUHJvY2Vzc1BsdWdJbj4KK0BlbmQKKworQGltcGxlbWVudGF0
aW9uIEJ1bmRsZVBhZ2VDb25zb2xlTWVzc2FnZQorCistICh2b2lkKXdlYlByb2Nlc3NQbHVnSW46
KFdLV2ViUHJvY2Vzc1BsdWdJbkNvbnRyb2xsZXIgKilwbHVnSW5Db250cm9sbGVyIGRpZENyZWF0
ZUJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyICopYnJvd3NlckNvbnRleHRDb250cm9sbGVyCit7CisgICAgV0tCdW5kbGVQ
YWdlVUlDbGllbnRWNCBjbGllbnQ7CisgICAgbWVtc2V0KCZjbGllbnQsIDAsIHNpemVvZihjbGll
bnQpKTsKKyAgICBjbGllbnQuYmFzZS52ZXJzaW9uID0gNDsKKyAgICBjbGllbnQud2lsbEFkZE1l
c3NhZ2VUb0NvbnNvbGUgPSB3aWxsQWRkTWVzc2FnZVRvQ29uc29sZUNhbGxiYWNrOworICAgIFdL
QnVuZGxlUGFnZVNldFVJQ2xpZW50KFticm93c2VyQ29udGV4dENvbnRyb2xsZXIgX2J1bmRsZVBh
Z2VSZWZdLCAmY2xpZW50LmJhc2UpOworfQorCitAZW5kCisKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRlRQLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9GVFAubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5kOTY1YjQ1NjgzN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZUUC5tbQpAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJIVFRQU2VydmVyLmgiCisjaW1w
b3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVz
dE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9y
dCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLUHJl
ZmVyZW5jZXNQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlv
blByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5o
PgorI2ltcG9ydCA8V2ViS2l0L1dLV2VicGFnZVByZWZlcmVuY2VzUHJpdmF0ZS5oPgorI2ltcG9y
dCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIFJldGFpblB0cjxOU011dGFibGVBcnJh
eT4gY29uc29sZU1lc3NhZ2VzOworCitzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUGFnZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tU
eXBlUmVmIG1lc3NhZ2UsIGNvbnN0IHZvaWQqKQoreworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ29uc29sZU1lc3NhZ2UiKSkKKyAgICAgICAgW2Nv
bnNvbGVNZXNzYWdlcyBhZGRPYmplY3Q6VXRpbDo6dG9OUygoV0tTdHJpbmdSZWYpbWVzc2FnZSld
OworfQorCitzdGF0aWMgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChXS1dlYlZpZXcgKndl
YlZpZXcpCit7CisgICAgV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRWMCBpbmplY3RlZEJ1bmRs
ZUNsaWVudCA9IHsKKyAgICAgICAgeyAwLCBudWxscHRyIH0sCisgICAgICAgIGRpZFJlY2VpdmVQ
YWdlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSwKKyAgICAgICAgbnVsbHB0ciwKKyAgICB9Owor
ICAgIFdLUGFnZVNldFBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudCh3ZWJWaWV3Ll9wYWdlUmVmRm9y
VHJhbnNpdGlvblRvV0tXZWJWaWV3LCAmaW5qZWN0ZWRCdW5kbGVDbGllbnQuYmFzZSk7Cit9CisK
K1RFU1QoV0tXZWJWaWV3LCBGVFBNYWluUmVzb3VyY2UpCit7CisgICAgV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2Nv
bmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIkJ1bmRsZVBhZ2VDb25zb2xlTWVz
c2FnZSJdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbl0pOworICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KHdlYlZpZXcuZ2V0
KCkpOworICAgIAorICAgIGNvbnNvbGVNZXNzYWdlcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdp
dGhDYXBhY2l0eToyXTsKKyAKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiZnRwOi8vZXhhbXBsZS5jb20v
bWFpbi5odG1sIl1dXTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmFpbFByb3Zpc2lv
bmFsTmF2aWdhdGlvbl07CisKKyAgICBFWFBFQ1RfRVEoW2NvbnNvbGVNZXNzYWdlcyBjb3VudF0s
IDF1KTsKKyAgICBFWFBFQ1RfVFJVRShbY29uc29sZU1lc3NhZ2VzLmdldCgpWzBdIGlzRXF1YWxU
b1N0cmluZzpAIkZUUCBVUkxzIGFyZSBkaXNhYmxlZCJdKTsKK30KKworVEVTVChXS1dlYlZpZXcs
IEZUUE1haW5SZXNvdXJjZVJlZGlyZWN0KQoreworICAgIEhUVFBTZXJ2ZXIgaHR0cFNlcnZlcih7
CisgICAgICAgIHsgIi9mdHBfcmVkaXJlY3QiLCB7IDMwMSwge3sgIkxvY2F0aW9uIiwgImZ0cDov
L2V4YW1wbGUuY29tLyIgfX0gfSB9LAorICAgIH0pOworICAgIAorICAgIFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9j
b25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJCdW5kbGVQYWdlQ29uc29sZU1l
c3NhZ2UiXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb25dKTsKKyAgICBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudCh3ZWJWaWV3Lmdl
dCgpKTsKKyAgICAKKyAgICBjb25zb2xlTWVzc2FnZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlX
aXRoQ2FwYWNpdHk6Ml07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpodHRwU2VydmVyLnJl
cXVlc3QoIi9mdHBfcmVkaXJlY3QiKV07CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZh
aWxQcm92aXNpb25hbE5hdmlnYXRpb25dOworCisgICAgRVhQRUNUX0VRKFtjb25zb2xlTWVzc2Fn
ZXMgY291bnRdLCAxdSk7CisgICAgRVhQRUNUX1RSVUUoW2NvbnNvbGVNZXNzYWdlcy5nZXQoKVsw
XSBpc0VxdWFsVG9TdHJpbmc6QCJGVFAgVVJMcyBhcmUgZGlzYWJsZWQiXSk7Cit9CisKKworc3Rh
dGljIGNvbnN0IGNoYXIqIHN1YnJlc291cmNlQnl0ZXMgPSBSIkZUUFJFU09VUkNFKAorSGVsbG8K
KzxpbWcgc3JjPSJmdHA6Ly9leGFtcGxlLmNvbS93ZWJraXR0ZW4ucG5nIj4KK0dvb2RieWUKKylG
VFBSRVNPVVJDRSI7CisKK1RFU1QoV0tXZWJWaWV3LCBGVFBTdWJyZXNvdXJjZSkKK3sKKyAgICBX
S1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiQnVuZGxl
UGFnZUNvbnNvbGVNZXNzYWdlIl07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgc2V0SW5qZWN0ZWRCdW5kbGVDbGll
bnQod2ViVmlldy5nZXQoKSk7CisgICAgCisgICAgY29uc29sZU1lc3NhZ2VzID0gW05TTXV0YWJs
ZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OjJdOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlM
b2FkSFRNTFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6c3VicmVzb3VyY2VC
eXRlc11dOworCisgICAgRVhQRUNUX0VRKFtjb25zb2xlTWVzc2FnZXMgY291bnRdLCAydSk7Cisg
ICAgRVhQRUNUX1RSVUUoW2NvbnNvbGVNZXNzYWdlcy5nZXQoKVswXSBpc0VxdWFsVG9TdHJpbmc6
QCJGVFAgVVJMcyBhcmUgZGlzYWJsZWQiXSk7CisgICAgRVhQRUNUX1RSVUUoW2NvbnNvbGVNZXNz
YWdlcy5nZXQoKVsxXSBpc0VxdWFsVG9TdHJpbmc6QCJDYW5ub3QgbG9hZCBpbWFnZSBmdHA6Ly9l
eGFtcGxlLmNvbS93ZWJraXR0ZW4ucG5nIGR1ZSB0byBhY2Nlc3MgY29udHJvbCBjaGVja3MuIl0p
OworfQorCisvLyBSZWRpcmVjdCBmcm9tIEhUVFAgdG8gRlRQIGFscmVhZHkgZmFpbHMsIGJ1dCBs
ZXQncyBtYWtlIHN1cmUgaXQga2VlcHMgZmFpbGluZworVEVTVChXS1dlYlZpZXcsIEZUUFN1YnJl
c291cmNlUmVkaXJlY3QpCit7CisgICAgSFRUUFNlcnZlciBodHRwU2VydmVyKHsKKyAgICAgICAg
eyAiL3dlYmtpdHRlbi5wbmciLCB7IDMwMSwge3sgIkxvY2F0aW9uIiwgImZ0cDovL2V4YW1wbGUu
Y29tL3dlYmtpdHRlbi5wbmciIH19IH0gfSwKKyAgICB9KTsKKyAgICAgICAgCisgICAgV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9u
IF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIkJ1bmRsZVBhZ2VD
b25zb2xlTWVzc2FnZSJdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIAorICAgIC8vIEFsbG93IEhUVFAgdG8gcmVk
aXJlY3QgYXdheSBmcm9tIEhUVFAgZm9yIHN1YnJlc291cmNlcyBmb3IgdGhlIHB1cnBvc2VzIG9m
IHRoaXMgdGVzdAorICAgIGF1dG8gcHJlZmVyZW5jZXMgPSAoX19icmlkZ2UgV0tQcmVmZXJlbmNl
c1JlZilbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJlZmVyZW5jZXNdOworICAgIFdLUHJlZmVy
ZW5jZXNTZXRSZXN0cmljdGVkSFRUUFJlc3BvbnNlQWNjZXNzKHByZWZlcmVuY2VzLCBmYWxzZSk7
CisgICAgCisgICAgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQod2ViVmlldy5nZXQoKSk7CisgICAg
CisgICAgY29uc29sZU1lc3NhZ2VzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5
OjJdOworICAgIAorICAgIGF1dG8gaHRtbFN0cmluZyA9IG1ha2VTdHJpbmcoIjxpbWcgc3JjPSdo
dHRwOi8vMTI3LjAuMC4xOiIsIFN0cmluZzo6bnVtYmVyKGh0dHBTZXJ2ZXIucG9ydCgpKSwgIi93
ZWJraXR0ZW4ucG5nJz4iKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJp
bmc6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmh0bWxTdHJpbmcudXRmOCgpLmRhdGEo
KV1dOworCisgICAgRVhQRUNUX0VRKFtjb25zb2xlTWVzc2FnZXMgY291bnRdLCAydSk7CisgICAg
RVhQRUNUX1RSVUUoW2NvbnNvbGVNZXNzYWdlcy5nZXQoKVswXSBpc0VxdWFsVG9TdHJpbmc6QCJG
VFAgVVJMcyBhcmUgZGlzYWJsZWQiXSk7Cit9CisKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxp
dGllc0NvY29hLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGll
c0NvY29hLm1tCmluZGV4IGRhODg3ZGU5NzU1OS4uNDk4MTk2NDQzNjM5IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCkBAIC0z
Myw2ICszMywyMSBAQAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogbmFtZXNwYWNlIFV0aWwg
ewogCitOU1N0cmluZyAqdG9OUyhXS1N0cmluZ1JlZiBzdHJpbmcpCit7CisgICAgc2l6ZV90IGJ1
ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nKSArIDE7
CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFy
W10+KGJ1ZmZlclNpemUpOworICAgIHNpemVfdCBzdHJpbmdMZW5ndGggPSBXS1N0cmluZ0dldFVU
RjhDU3RyaW5nKHN0cmluZywgYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKKyAgICBidWZmZXJb
c3RyaW5nTGVuZ3RoXSA9ICdcMCc7CisKKyAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhV
VEY4U3RyaW5nOmJ1ZmZlci5nZXQoKV07Cit9CisKK05TU3RyaW5nICp0b05TKFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBzdHJpbmcpCit7CisgICAgcmV0dXJuIHRvTlMoc3RyaW5nLmdldCgpKTsK
K30KKwogc3RkOjpzdHJpbmcgdG9TVEQoTlNTdHJpbmcgKnN0cmluZykKIHsKICAgICBpZiAoIXN0
cmluZykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438666</attachid>
            <date>2021-09-20 06:15:24 -0700</date>
            <delta_ts>2021-09-20 07:17:29 -0700</delta_ts>
            <desc>v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>25278</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNl
c0V4cGVyaW1lbnRhbC55YW1sIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlBy
ZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKaW5kZXggMDk4OTliZjUzMTg0Li45ODFhYjk4NTI2
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJl
bmNlc0V4cGVyaW1lbnRhbC55YW1sCisrKyBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNl
cy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCkBAIC00MjEsNiArNDIxLDE4IEBAIEV4
cG9zZVNwZWFrZXJzRW5hYmxlZDoKICAgICBXZWJDb3JlOgogICAgICAgZGVmYXVsdDogZmFsc2UK
IAorRlRQRGlzYWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAgaHVtYW5SZWFkYWJsZU5hbWU6ICJGVFAg
c3VwcG9ydCBkaXNhYmxlZCIKKyAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRlRQIHN1cHBv
cnQgZGlzYWJsZWQiCisgIGRlZmF1bHRWYWx1ZToKKyAgICBXZWJDb3JlOgorICAgICAgZGVmYXVs
dDogdHJ1ZQorICAgIFdlYktpdDoKKyAgICAgIGRlZmF1bHQ6IHRydWUKKyAgICBXZWJLaXRMZWdh
Y3k6CisgICAgICBkZWZhdWx0OiB0cnVlCisgICAgICAKICMgRklYTUU6IFRoaXMgc2VlbXMgdG8g
YmUgYWNjaWRlbnRhbGx5IGVuYWJsZWQgZm9yIFdlYktpdDEgcmlnaHQgbm93IGR1ZSB0byB0aGUg
b2xkIGNvZGUgdXNpbmcgdGhlCiAjIHdyb25nIHByZWZlcmVuY2Uga2V5IGluIHNvbWUgcGxhY2Vz
LiBXZSBzaG91bGQgaWRlbnRpZnkgd2hldGhlciBpdCByZWFsbHkgbWFrZXMgc2Vuc2UgdG8ga2Vl
cCB0aGlzCiAjIGVuYWJsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwIGIv
U291cmNlL1dURi93dGYvVVJMLmNwcAppbmRleCBhN2M4ZDI0MWQzODcuLmYzZDhhYjAyMmEwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9V
UkwuY3BwCkBAIC0zMjksNiArMzI5LDExIEBAIGJvb2wgVVJMOjpwcm90b2NvbElzSmF2YVNjcmlw
dCgpIGNvbnN0CiAgICAgcmV0dXJuIFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoc3RyaW5nKCkp
OwogfQogCitib29sIFVSTDo6cHJvdG9jb2xJc0luRlRQRmFtaWx5KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gV1RGOjpwcm90b2NvbElzSW5GVFBGYW1pbHkoc3RyaW5nKCkpOworfQorCiBib29sIFVS
TDo6cHJvdG9jb2xJcyhjb25zdCBjaGFyKiBwcm90b2NvbCkgY29uc3QKIHsKICAgICBhc3NlcnRQ
cm90b2NvbElzR29vZChwcm90b2NvbCk7CkBAIC04NTYsNiArODYxLDE3IEBAIGJvb2wgcHJvdG9j
b2xJc0phdmFTY3JpcHQoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgcmV0dXJuIHByb3RvY29sSXNJ
bnRlcm5hbChzdHJpbmcsICJqYXZhc2NyaXB0Iik7CiB9CiAKK2Jvb2wgcHJvdG9jb2xJc0luRlRQ
RmFtaWx5KFN0cmluZ1ZpZXcgdXJsKQoreworICAgIGF1dG8gbGVuZ3RoID0gdXJsLmxlbmd0aCgp
OworICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBv
YmplY3QuCisgICAgcmV0dXJuIGxlbmd0aCA+PSA0CisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNh
c2VsZXNzRXF1YWwodXJsWzBdLCAnZicpCisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNz
RXF1YWwodXJsWzFdLCAndCcpCisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwo
dXJsWzJdLCAncCcpCisgICAgICAgICYmICh1cmxbM10gPT0gJzonIHx8IChpc0FTQ0lJQWxwaGFD
YXNlbGVzc0VxdWFsKHVybFszXSwgJ3MnKSAmJiBsZW5ndGggPj0gNSAmJiB1cmxbNF0gPT0gJzon
KSk7Cit9CisKIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShTdHJpbmdWaWV3IHVybCkKIHsK
ICAgICBhdXRvIGxlbmd0aCA9IHVybC5sZW5ndGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1VSTC5oIGIvU291cmNlL1dURi93dGYvVVJMLmgKaW5kZXggYTBjY2RjYzY0NjBhLi5lNTg2
OTAyNmVjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTC5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1VSTC5oCkBAIC0xMzYsNiArMTM2LDcgQEAgcHVibGljOgogICAgIGJvb2wgcHJvdG9j
b2xJc0RhdGEoKSBjb25zdCB7IHJldHVybiBwcm90b2NvbElzKCJkYXRhIik7IH0KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzQWJvdXQoKSBjb25zdDsKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdCgpIGNvbnN0OworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXNJbkZUUEZhbWlseSgpIGNvbnN0OwogICAgIGJv
b2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBib29sIGlzTG9jYWxGaWxlKCkgY29uc3Q7CiAgICAgYm9vbCBjYW5ub3RCZUFCYXNlVVJMKCkg
Y29uc3QgeyByZXR1cm4gbV9jYW5ub3RCZUFCYXNlVVJMOyB9CkBAIC0yNTksNiArMjYwLDcgQEAg
V1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVSTCYgYWJvdXRTcmNEb2NVUkwoKTsKIAogV1RGX0VY
UE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJcyhTdHJpbmdWaWV3IHVybCwgY29uc3QgY2hhciog
cHJvdG9jb2wpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQo
U3RyaW5nVmlldyB1cmwpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJc0luRlRQ
RmFtaWx5KFN0cmluZ1ZpZXcgdXJsKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29s
SXNJbkhUVFBGYW1pbHkoU3RyaW5nVmlldyB1cmwpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rk
OjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHBy
b3RvY29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAK
aW5kZXggMmFhMDM3NzJmYTU5Li44YWUxYjZlNGZkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBAIC01OCw4ICs1OCwxOCBAQCBOZXR3b3JrTG9h
ZDo6TmV0d29ya0xvYWQoTmV0d29ya0xvYWRDbGllbnQmIGNsaWVudCwgQmxvYlJlZ2lzdHJ5SW1w
bCogYmxvYlJlZ2lzdAogCiB2b2lkIE5ldHdvcmtMb2FkOjpzdGFydCgpCiB7Ci0gICAgaWYgKG1f
dGFzaykKLSAgICAgICAgbV90YXNrLT5yZXN1bWUoKTsKKyAgICBpZiAoIW1fdGFzaykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MtPmZ0cERpc2FibGVkKCkgJiYg
bV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0luRlRQRmFtaWx5KCkpIHsKKyAg
ICAgICAgbV90YXNrLT5jbGVhckNsaWVudCgpOworICAgICAgICBtX3Rhc2sgPSBudWxscHRyOwor
ICAgICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MgZW1wdHlNZXRyaWNzOworICAgICAg
ICBkaWRDb21wbGV0ZVdpdGhFcnJvcihSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJ
bnRlcm5hbCwgMCwgdXJsKCksICJGVFAgVVJMcyBhcmUgZGlzYWJsZWQiX3MsIFJlc291cmNlRXJy
b3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSwgZW1wdHlNZXRyaWNzKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1fdGFzay0+cmVzdW1lKCk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6
OnN0YXJ0V2l0aFNjaGVkdWxpbmcoKQpAQCAtMTgxLDYgKzE5MSwxNyBAQCB2b2lkIE5ldHdvcmtM
b2FkOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJl
Y3RSZXNwb25zZQogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJUKCFt
X3JlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpOwogCisgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3Mt
PmZ0cERpc2FibGVkKCkgJiYgcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5GVFBGYW1pbHkoKSkg
eworICAgICAgICBtX3Rhc2stPmNsZWFyQ2xpZW50KCk7CisgICAgICAgIG1fdGFzayA9IG51bGxw
dHI7CisgICAgICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBlbXB0eU1ldHJpY3M7Cisg
ICAgICAgIGRpZENvbXBsZXRlV2l0aEVycm9yKFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldl
YktpdEludGVybmFsLCAwLCB1cmwoKSwgIkZUUCBVUkxzIGFyZSBkaXNhYmxlZCJfcywgUmVzb3Vy
Y2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9LCBlbXB0eU1ldHJpY3MpOworICAgICAgICAK
KyAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICByZWRpcmVjdFJl
c3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmspOwogICAg
IG1fcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CmluZGV4IGMzMzMyMDdhNzY2NS4uNWQ5ZWM3MGVlZjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzQ2LDcgKzM0Niw4IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYmCiAKICAgICBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVu
YWJsZWQocGFyYW1ldGVycy5lbmFibGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk7CiAgICAgc2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGUocGFyYW1ldGVycy5lbmFibGVQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZSk7Ci0KKyAgICBtX2Z0cERpc2FibGVkID0gcGFyYW1l
dGVycy5mdHBEaXNhYmxlZDsKKyAgICAKICAgICBmb3IgKGF1dG8mIHN1cHBsZW1lbnQgOiBtX3N1
cHBsZW1lbnRzLnZhbHVlcygpKQogICAgICAgICBzdXBwbGVtZW50LT5pbml0aWFsaXplKHBhcmFt
ZXRlcnMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKaW5kZXggYTY0YTAxZmY0ZmJkLi43ZmMwZmE4NTkxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTM5MCw2ICszOTAsOCBAQCBwdWJs
aWM6CiAgICAgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHkmIHJ0Y0RhdGFDaGFubmVs
UHJveHkoKTsKICNlbmRpZgogCisgICAgYm9vbCBmdHBEaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZnRwRGlzYWJsZWQ7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRp
YWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYpOwogCkBAIC02MTUsNiArNjE3LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9wcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEVuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX3ByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGVidWdNb2RlRW5hYmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2Z0cERp
c2FibGVkIHsgdHJ1ZSB9OwogCiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmPE5ldHdv
cmtTdG9yYWdlTWFuYWdlcj4+IG1fc3RvcmFnZU1hbmFnZXJzOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggOGZlODFiNGMxZjY5Li5iNTcxZDhhNzgxYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC03Miw2ICs3Miw3IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiAKICAgICBlbmNvZGVyIDw8IGVuYWJsZVByaXZhdGVDbGlja01lYXN1cmVtZW50
OwogICAgIGVuY29kZXIgPDwgZW5hYmxlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGU7
CisgICAgZW5jb2RlciA8PCBmdHBEaXNhYmxlZDsKICAgICBlbmNvZGVyIDw8IHdlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzOwogfQogCkBAIC0xNDYsNiArMTQ3LDggQEAgYm9vbCBOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTmV0
d29ya1Byb2MKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LmVuYWJsZVByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmZ0cERpc2FibGVk
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+PiB3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczsKICAg
ICBkZWNvZGVyID4+IHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCmluZGV4IGQ4ZDljZmQ2NmQ1YS4uOTAzYTFlOGQ4YmE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC04OCw2ICs4OCw3IEBAIHN0cnVjdCBOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAKICAgICBib29sIGVuYWJsZVByaXZhdGVDbGlja01l
YXN1cmVtZW50IHsgdHJ1ZSB9OwogICAgIGJvb2wgZW5hYmxlUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnREZWJ1Z01vZGUgeyBmYWxzZSB9OworICAgIGJvb2wgZnRwRGlzYWJsZWQgeyB0cnVlIH07CiAK
ICAgICBWZWN0b3I8V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+IHdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IGUxN2RmZWVhNzc1OC4uMmNhZThhZTU2MmQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29s
Q29jb2EubW0KQEAgLTU2Nyw2ICs1NjcsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9y
bUluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYQogICAg
IE5TU3RyaW5nICpmb3JtYXQgPSBAIldlYktpdEV4cGVyaW1lbnRhbCVAIjsKICNlbmRpZgogICAg
IHBhcmFtZXRlcnMuZW5hYmxlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGUgPSBbZGVm
YXVsdHMgYm9vbEZvcktleTpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpmb3JtYXQsIFdlYlBy
ZWZlcmVuY2VzS2V5Ojpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZUVuYWJsZWRLZXko
KS5jcmVhdGVDRlN0cmluZygpLmdldCgpXV07CisgICAgCisgICAgcGFyYW1ldGVycy5mdHBEaXNh
YmxlZCA9ICFbZGVmYXVsdHMgb2JqZWN0Rm9yS2V5OldlYlByZWZlcmVuY2VzS2V5OjpmdHBEaXNh
YmxlZEtleSgpXSB8fCBbZGVmYXVsdHMgYm9vbEZvcktleTpXZWJQcmVmZXJlbmNlc0tleTo6ZnRw
RGlzYWJsZWRLZXkoKV07CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW52YWxp
ZGF0ZUNvbnRleHQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0
aWxpdGllcy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCmluZGV4
IDU2MjY4MDJiYzAzNy4uOWZlMTc3NGQ4NDM5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9y
bVV0aWxpdGllcy5oCkBAIC02NSw2ICs2NSwxMCBAQCBib29sIGlzS2V5RG93bihXS05hdGl2ZUV2
ZW50UHRyKTsKIAogc3RkOjpzdHJpbmcgdG9TVEQoV0tTdHJpbmdSZWYpOwogc3RkOjpzdHJpbmcg
dG9TVEQoV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+KTsKKyNpZiBQTEFURk9STShDT0NPQSkKK05T
U3RyaW5nICp0b05TKFdLU3RyaW5nUmVmKTsKK05TU3RyaW5nICp0b05TKFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPik7CisjZW5kaWYKIAogV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHRvV0soY29u
c3QgY2hhciogdXRmOFN0cmluZyk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzhmNjgy
Mjg5YWE4Li5kZGU5MjVmYWZmOWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNDgsNyAr
MzQ4LDkgQEAKIAkJNTE3MTRFQjQxQ0Y4Qzc4QzAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURC
Q2xlYW51cC0xLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE3MTRFQjIxQ0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURC
Q2xlYW51cC0xLmh0bWwgKi87IH07CiAJCTUxNzE0RUI1MUNGOEM3OEMwMDQ3MjNDNCAvKiBXZWJQ
cm9jZXNzS2lsbElEQkNsZWFudXAtMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzE0RUIzMUNGOEM3NjEwMDQ3MjNDNCAvKiBXZWJQ
cm9jZXNzS2lsbElEQkNsZWFudXAtMi5odG1sICovOyB9OwogCQk1MTcxNEVCODFDRjhDQTE3MDA0
NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTRFQjYxQ0Y4QzdBNDAwNDcyM0M0IC8qIFdl
YlByb2Nlc3NLaWxsSURCQ2xlYW51cC5tbSAqLzsgfTsKKwkJNTE3NUM3QTIyNkY4NzYyMzAwMDNB
RjVDIC8qIEJ1bmRsZVBhZ2VDb25zb2xlTWVzc2FnZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzVDN0ExMjZGODc2MjMwMDAzQUY1QyAvKiBCdW5k
bGVQYWdlQ29uc29sZU1lc3NhZ2UubW0gKi87IH07CiAJCTUxN0U3RTA0MTUxMTE5QzEwMEQwQjAw
OCAvKiBNZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdFN0Uw
MzE1MTExODc1MDBEMEIwMDggLyogTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERl
bGVnYXRlLmh0bWwgKi87IH07CisJCTUxODE5RjJBMjZFQUM5ODMwMEU0NzM3NSAvKiBGVFAubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgxOUYyOTI2
RUFDOTgyMDBFNDczNzUgLyogRlRQLm1tICovOyB9OwogCQk1MTgyMEE0RDIyRjRFRTdGMDBERjBB
MDEgLyogSmF2YXNjcmlwdFVSTE5hdmlnYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgyMEE0QzIyRjRFRTc3MDBERjBBMDEgLyogSmF2YXNj
cmlwdFVSTE5hdmlnYXRpb24ubW0gKi87IH07CiAJCTUxODJDMjJFMUYyQkNFNTQwMDU5QkE3QyAv
KiBXS1VSTFNjaGVtZUhhbmRsZXItbGVha3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgyQzIyRDFGMkJDQjQxMDA1OUJBN0MgLyogV0tVUkxTY2hl
bWVIYW5kbGVyLWxlYWtzLm1tICovOyB9OwogCQk1MThDMTE1MzIwNUIwNTA0MDAxRkY0QUUgLyog
UHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MThDMTE1MjIwNUIwNEY5MDAxRkY0QUUgLyogUHJvY2Vzc1N3YXBP
bk5hdmlnYXRpb24ubW0gKi87IH07CkBAIC0yMTkyLDggKzIxOTQsMTAgQEAKIAkJNTE3MTRFQjMx
Q0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0yLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTIuaHRtbCI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNzE0RUI2MUNGOEM3QTQwMDQ3MjNDNCAv
KiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxNzE0RUI5MUQwODc0MTYwMDQ3MjNDNCAvKiBDcm9zc1RocmVhZFRh
c2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3Jvc3NUaHJlYWRU
YXNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3NUM3QTEyNkY4NzYyMzAw
MDNBRjVDIC8qIEJ1bmRsZVBhZ2VDb25zb2xlTWVzc2FnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJ1bmRsZVBhZ2VDb25zb2xlTWVzc2FnZS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3RTdERkIxNTExMEVBNjAwRDBCMDA4IC8qIE1lbW9y
eUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxv
YWREZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3RTdFMDMxNTEx
MTg3NTAwRDBCMDA4IC8qIE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gTWVtb3J5Q2FjaGVQcnVuZVdpdGhp
blJlc291cmNlTG9hZERlbGVnYXRlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxODE5RjI5MjZFQUM5ODIwMEU0NzM3NSAvKiBGVFAubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBGVFAubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxODIwQTRDMjJGNEVFNzcwMERGMEEwMSAvKiBKYXZhc2NyaXB0VVJMTmF2aWdhdGlvbi5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEphdmFzY3JpcHRVUkxOYXZpZ2F0aW9uLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTgyQzIyRDFGMkJDQjQxMDA1OUJBN0MgLyogV0tVUkxT
Y2hlbWVIYW5kbGVyLWxlYWtzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gIldLVVJMU2NoZW1l
SGFuZGxlci1sZWFrcy5tbSI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxOEMxMTUy
MjA1QjA0RjkwMDFGRjRBRSAvKiBQcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQzMSw2ICszNDM1LDcgQEAKIAkJCQk3
QTg5QkI2NTIzMzE2MzVEMDA0MkNCMUUgLyogQnVuZGxlRm9ybURlbGVnYXRlLm1tICovLAogCQkJ
CTdBODlCQjY2MjMzMTYzNUQwMDQyQ0IxRSAvKiBCdW5kbGVGb3JtRGVsZWdhdGVQbHVnSW4ubW0g
Ki8sCiAJCQkJN0E4OUJCNjkyMzMxNjU2NTAwNDJDQjFFIC8qIEJ1bmRsZUZvcm1EZWxlZ2F0ZVBy
b3RvY29sLmggKi8sCisJCQkJNTE3NUM3QTEyNkY4NzYyMzAwMDNBRjVDIC8qIEJ1bmRsZVBhZ2VD
b25zb2xlTWVzc2FnZS5tbSAqLywKIAkJCQlBMTNFQkJBQzFCODc0MzZGMDAwOTcxMTAgLyogQnVu
ZGxlUGFyYW1ldGVycy5tbSAqLywKIAkJCQlBMTNFQkJBRTFCODc0MzZGMDAwOTcxMTAgLyogQnVu
ZGxlUGFyYW1ldGVyc1BsdWdJbi5tbSAqLywKIAkJCQkzN0E3MDlBRDFFM0VBOEIwMDBDQTU5Njkg
LyogQnVuZGxlUmFuZ2VIYW5kbGUubW0gKi8sCkBAIC0zNDgyLDYgKzM0ODcsNyBAQAogCQkJCTZC
MjVBNzUxMjVEQzhENEUwMDcwNzQ0RiAvKiBFdmVudEF0dHJpYnV0aW9uLm1tICovLAogCQkJCUNE
QTI5QjI4MjBGRDJBOTkwMEYxNUNFRCAvKiBFeGl0RnVsbHNjcmVlbk9uRW50ZXJQaVAubW0gKi8s
CiAJCQkJMUQxMkJFQkYyNDVCRUY4NTAwNEMwQjdBIC8qIEV4aXRQaVBPblN1c3BlbmRWaWRlb0Vs
ZW1lbnQubW0gKi8sCisJCQkJNTE4MTlGMjkyNkVBQzk4MjAwRTQ3Mzc1IC8qIEZUUC5tbSAqLywK
IAkJCQkyRDgxMDRDQjFCRUMxM0U3MDAyMERBNDYgLyogRmluZEluUGFnZS5tbSAqLywKIAkJCQk1
MTI0MkNENDIzNzRFNjFFMDBFRUQ5QzEgLyogRmluZEluUGFnZUFQSS5tbSAqLywKIAkJCQkxMTgx
NTM0NzIyMDhCQURGMDBCMkNDRDIgLyogRmlyc3RWaXN1YWxseU5vbkVtcHR5TWlsZXN0b25lLm1t
ICovLApAQCAtNTgyOCw2ICs1ODM0LDcgQEAKIAkJCQk3Q0NFN0YxNDFBNDExQUU2MDA0NDdDNEMg
LyogU2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2FyZExpc3RJdGVtSW5MaXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTM3QkNBNjFDMUI1OTZCQTkwMDIwMTJDQSAvKiBTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzSW5OZXdXaW5kb3dBY3Rpb25zLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQzUx
RDBBNjU0NjAwRkVCQ0YzIC8qIFNocmlua1RvRml0Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTE4
MTlGMkEyNkVBQzk4MzAwRTQ3Mzc1IC8qIEZUUC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3
RUNEMUE0MTFBN0UwMDQ0N0M0QyAvKiBTaW1wbGlmeU1hcmt1cC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUMxNDlENTUwMjQyRTk4REYwMDNFQkIxMiAvKiBTbGVlcERpc2FibGVyLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMkRGRjdCNkQxREE0ODdBRjAwODE0NjE0IC8qIFNuYXBzaG90U3RvcmUubW0g
aW4gU291cmNlcyAqLywKQEAgLTYwNjQsNiArNjA3MSw3IEBACiAJCQkJMkQzQ0EzQTgyMjFERjRC
NDAwODhFODAzIC8qIFBhZ2VPdmVybGF5UGx1Z2luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ0
QzdBMDAyMEY5RUVCRjAwMTQ0NzhDIC8qIFBhcnNlcllpZWxkVG9rZW5QbHVnSW4ubW0gaW4gU291
cmNlcyAqLywKIAkJCQlBMTNFQkJBQjFCODc0MzQ2MDAwOTcxMTAgLyogUGxhdGZvcm1VdGlsaXRp
ZXNDb2NvYS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxNzVDN0EyMjZGODc2MjMwMDAzQUY1QyAv
KiBCdW5kbGVQYWdlQ29uc29sZU1lc3NhZ2UubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTRGODFD
RjFCREZGRDUzMDA0RTY3MkUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnlQbHVnSW4ubW0gaW4gU291
cmNlcyAqLywKIAkJCQlBMTJEREMwMjFFODM3QzI0MDBDRjZDQUUgLyogUmVuZGVyZWRJbWFnZVdp
dGhPcHRpb25zUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTI0NTE3ODcyMUI5RjU3QjAw
ODJDQjM0IC8qIFJlbmRlcmluZ1Byb2dyZXNzUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRsZVBhZ2VD
b25zb2xlTWVzc2FnZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
QnVuZGxlUGFnZUNvbnNvbGVNZXNzYWdlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uNTFmOTk4M2NlZGViCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5kbGVQYWdlQ29uc29sZU1lc3NhZ2UubW0KQEAg
LTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0
IDxXZWJLaXQvV0tCdW5kbGVQYWdlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tCdW5kbGVQYWdlVUlD
bGllbnQuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1JldGFpblB0ci5oPgorI2ltcG9ydCA8V2ViS2l0
L1dLV2ViUHJvY2Vzc1BsdWdJbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlclByaXZhdGUuaD4KKworCit2b2lkIHdpbGxBZGRNZXNz
YWdlVG9Db25zb2xlQ2FsbGJhY2soV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1l
c3NhZ2UsIHVpbnQzMl90IGxpbmVOdW1iZXIsIGNvbnN0IHZvaWQgKikKK3sKKyAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJDb25zb2xlTWVzc2FnZSIpKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVz
c2FnZShwYWdlLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZSk7Cit9CisKK0BpbnRlcmZhY2Ug
QnVuZGxlUGFnZUNvbnNvbGVNZXNzYWdlIDogTlNPYmplY3QgPFdLV2ViUHJvY2Vzc1BsdWdJbj4K
K0BlbmQKKworQGltcGxlbWVudGF0aW9uIEJ1bmRsZVBhZ2VDb25zb2xlTWVzc2FnZQorCistICh2
b2lkKXdlYlByb2Nlc3NQbHVnSW46KFdLV2ViUHJvY2Vzc1BsdWdJbkNvbnRyb2xsZXIgKilwbHVn
SW5Db250cm9sbGVyIGRpZENyZWF0ZUJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopYnJvd3NlckNvbnRleHRDb250cm9s
bGVyCit7CisgICAgV0tCdW5kbGVQYWdlVUlDbGllbnRWNCBjbGllbnQ7CisgICAgbWVtc2V0KCZj
bGllbnQsIDAsIHNpemVvZihjbGllbnQpKTsKKyAgICBjbGllbnQuYmFzZS52ZXJzaW9uID0gNDsK
KyAgICBjbGllbnQud2lsbEFkZE1lc3NhZ2VUb0NvbnNvbGUgPSB3aWxsQWRkTWVzc2FnZVRvQ29u
c29sZUNhbGxiYWNrOworICAgIFdLQnVuZGxlUGFnZVNldFVJQ2xpZW50KFticm93c2VyQ29udGV4
dENvbnRyb2xsZXIgX2J1bmRsZVBhZ2VSZWZdLCAmY2xpZW50LmJhc2UpOworfQorCitAZW5kCisK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRlRQLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GVFAubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kOTY1YjQ1NjgzN2UKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZUUC5tbQpAQCAt
MCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0
ICJIVFRQU2VydmVyLmgiCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAi
VGVzdC5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVz
dFdLV2ViVmlldy5oIgorI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgor
I2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZp
ZXdQcml2YXRlRm9yVGVzdGluZy5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2VicGFnZVByZWZlcmVu
Y2VzUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIFJl
dGFpblB0cjxOU011dGFibGVBcnJheT4gY29uc29sZU1lc3NhZ2VzOworCitzdGF0aWMgdm9pZCBk
aWRSZWNlaXZlUGFnZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tQYWdlUmVmLCBXS1N0cmlu
Z1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2UsIGNvbnN0IHZvaWQqKQoreworICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ29uc29sZU1l
c3NhZ2UiKSkKKyAgICAgICAgW2NvbnNvbGVNZXNzYWdlcyBhZGRPYmplY3Q6VXRpbDo6dG9OUygo
V0tTdHJpbmdSZWYpbWVzc2FnZSldOworfQorCitzdGF0aWMgdm9pZCBzZXRJbmplY3RlZEJ1bmRs
ZUNsaWVudChXS1dlYlZpZXcgKndlYlZpZXcpCit7CisgICAgV0tQYWdlSW5qZWN0ZWRCdW5kbGVD
bGllbnRWMCBpbmplY3RlZEJ1bmRsZUNsaWVudCA9IHsKKyAgICAgICAgeyAwLCBudWxscHRyIH0s
CisgICAgICAgIGRpZFJlY2VpdmVQYWdlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSwKKyAgICAg
ICAgbnVsbHB0ciwKKyAgICB9OworICAgIFdLUGFnZVNldFBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVu
dCh3ZWJWaWV3Ll9wYWdlUmVmRm9yVHJhbnNpdGlvblRvV0tXZWJWaWV3LCAmaW5qZWN0ZWRCdW5k
bGVDbGllbnQuYmFzZSk7Cit9CisKK1RFU1QoV0tXZWJWaWV3LCBGVFBNYWluUmVzb3VyY2UpCit7
CisgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdD
b25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpA
IkJ1bmRsZVBhZ2VDb25zb2xlTWVzc2FnZSJdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIHNldEluamVjdGVkQnVu
ZGxlQ2xpZW50KHdlYlZpZXcuZ2V0KCkpOworICAgIAorICAgIGNvbnNvbGVNZXNzYWdlcyA9IFtO
U011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eToyXTsKKyAKKyAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiZnRwOi8vZXhhbXBsZS5jb20vbWFpbi5odG1sIl1dXTsKKyAgICBbd2ViVmlldyBfdGVzdF93
YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbl07CisKKyAgICBFWFBFQ1RfRVEoW2Nv
bnNvbGVNZXNzYWdlcyBjb3VudF0sIDF1KTsKKyAgICBFWFBFQ1RfVFJVRShbY29uc29sZU1lc3Nh
Z2VzLmdldCgpWzBdIGlzRXF1YWxUb1N0cmluZzpAIkZUUCBVUkxzIGFyZSBkaXNhYmxlZCJdKTsK
K30KKworVEVTVChXS1dlYlZpZXcsIEZUUE1haW5SZXNvdXJjZVJlZGlyZWN0KQoreworICAgIEhU
VFBTZXJ2ZXIgaHR0cFNlcnZlcih7CisgICAgICAgIHsgIi9mdHBfcmVkaXJlY3QiLCB7IDMwMSwg
e3sgIkxvY2F0aW9uIiwgImZ0cDovL2V4YW1wbGUuY29tLyIgfX0gfSB9LAorICAgIH0pOworICAg
IAorICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6
QCJCdW5kbGVQYWdlQ29uc29sZU1lc3NhZ2UiXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBzZXRJbmplY3RlZEJ1
bmRsZUNsaWVudCh3ZWJWaWV3LmdldCgpKTsKKyAgICAKKyAgICBjb25zb2xlTWVzc2FnZXMgPSBb
TlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6Ml07CisKKyAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpodHRwU2VydmVyLnJlcXVlc3QoIi9mdHBfcmVkaXJlY3QiKV07CisgICAgW3dlYlZp
ZXcgX3Rlc3Rfd2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25dOworCisgICAgRVhQ
RUNUX0VRKFtjb25zb2xlTWVzc2FnZXMgY291bnRdLCAxdSk7CisgICAgRVhQRUNUX1RSVUUoW2Nv
bnNvbGVNZXNzYWdlcy5nZXQoKVswXSBpc0VxdWFsVG9TdHJpbmc6QCJGVFAgVVJMcyBhcmUgZGlz
YWJsZWQiXSk7Cit9CisKKworc3RhdGljIGNvbnN0IGNoYXIqIHN1YnJlc291cmNlQnl0ZXMgPSBS
IkZUUFJFU09VUkNFKAorSGVsbG8KKzxpbWcgc3JjPSJmdHA6Ly9leGFtcGxlLmNvbS93ZWJraXR0
ZW4ucG5nIj4KK0dvb2RieWUKKylGVFBSRVNPVVJDRSI7CisKK1RFU1QoV0tXZWJWaWV3LCBGVFBT
dWJyZXNvdXJjZSkKK3sKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9u
ID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1
Z0luQ2xhc3NOYW1lOkAiQnVuZGxlUGFnZUNvbnNvbGVNZXNzYWdlIl07CisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAg
c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQod2ViVmlldy5nZXQoKSk7CisgICAgCisgICAgY29uc29s
ZU1lc3NhZ2VzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OjJdOworICAgIFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aFVU
RjhTdHJpbmc6c3VicmVzb3VyY2VCeXRlc11dOworCisgICAgRVhQRUNUX0VRKFtjb25zb2xlTWVz
c2FnZXMgY291bnRdLCAydSk7CisgICAgRVhQRUNUX1RSVUUoW2NvbnNvbGVNZXNzYWdlcy5nZXQo
KVswXSBpc0VxdWFsVG9TdHJpbmc6QCJGVFAgVVJMcyBhcmUgZGlzYWJsZWQiXSk7CisgICAgRVhQ
RUNUX1RSVUUoW2NvbnNvbGVNZXNzYWdlcy5nZXQoKVsxXSBpc0VxdWFsVG9TdHJpbmc6QCJDYW5u
b3QgbG9hZCBpbWFnZSBmdHA6Ly9leGFtcGxlLmNvbS93ZWJraXR0ZW4ucG5nIGR1ZSB0byBhY2Nl
c3MgY29udHJvbCBjaGVja3MuIl0pOworfQorCisvLyBSZWRpcmVjdCBmcm9tIEhUVFAgdG8gRlRQ
IGFscmVhZHkgZmFpbHMsIGJ1dCBsZXQncyBtYWtlIHN1cmUgaXQga2VlcHMgZmFpbGluZworVEVT
VChXS1dlYlZpZXcsIEZUUFN1YnJlc291cmNlUmVkaXJlY3QpCit7CisgICAgSFRUUFNlcnZlciBo
dHRwU2VydmVyKHsKKyAgICAgICAgeyAiL3dlYmtpdHRlbi5wbmciLCB7IDMwMSwge3sgIkxvY2F0
aW9uIiwgImZ0cDovL2V4YW1wbGUuY29tL3dlYmtpdHRlbi5wbmciIH19IH0gfSwKKyAgICB9KTsK
KyAgICAgICAgCisgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtX
S1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNs
YXNzTmFtZTpAIkJ1bmRsZVBhZ2VDb25zb2xlTWVzc2FnZSJdOworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2Uo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIAorICAg
IC8vIEFsbG93IEhUVFAgdG8gcmVkaXJlY3QgYXdheSBmcm9tIEhUVFAgZm9yIHN1YnJlc291cmNl
cyBmb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgdGVzdAorICAgIGF1dG8gcHJlZmVyZW5jZXMgPSAo
X19icmlkZ2UgV0tQcmVmZXJlbmNlc1JlZilbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJlZmVy
ZW5jZXNdOworICAgIFdLUHJlZmVyZW5jZXNTZXRSZXN0cmljdGVkSFRUUFJlc3BvbnNlQWNjZXNz
KHByZWZlcmVuY2VzLCBmYWxzZSk7CisgICAgCisgICAgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQo
d2ViVmlldy5nZXQoKSk7CisgICAgCisgICAgY29uc29sZU1lc3NhZ2VzID0gW05TTXV0YWJsZUFy
cmF5IGFycmF5V2l0aENhcGFjaXR5OjJdOworICAgIAorICAgIGF1dG8gaHRtbFN0cmluZyA9IG1h
a2VTdHJpbmcoIjxpbWcgc3JjPSdodHRwOi8vMTI3LjAuMC4xOiIsIFN0cmluZzo6bnVtYmVyKGh0
dHBTZXJ2ZXIucG9ydCgpKSwgIi93ZWJraXR0ZW4ucG5nJz4iKTsKKyAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmh0
bWxTdHJpbmcudXRmOCgpLmRhdGEoKV1dOworCisgICAgRVhQRUNUX0VRKFtjb25zb2xlTWVzc2Fn
ZXMgY291bnRdLCAydSk7CisgICAgRVhQRUNUX1RSVUUoW2NvbnNvbGVNZXNzYWdlcy5nZXQoKVsw
XSBpc0VxdWFsVG9TdHJpbmc6QCJGVFAgVVJMcyBhcmUgZGlzYWJsZWQiXSk7Cit9CisKKworfSAv
LyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCmluZGV4IGRhODg3ZGU5NzU1OS4uNDk4MTk2
NDQzNjM5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRmb3JtVXRp
bGl0aWVzQ29jb2EubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0
aWxpdGllc0NvY29hLm1tCkBAIC0zMyw2ICszMywyMSBAQAogbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgewogbmFtZXNwYWNlIFV0aWwgewogCitOU1N0cmluZyAqdG9OUyhXS1N0cmluZ1JlZiBzdHJp
bmcpCit7CisgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0
cmluZ1NpemUoc3RyaW5nKSArIDE7CisgICAgYXV0byBidWZmZXIgPSBtYWtlVW5pcXVlV2l0aG91
dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIHNpemVfdCBzdHJpbmdM
ZW5ndGggPSBXS1N0cmluZ0dldFVURjhDU3RyaW5nKHN0cmluZywgYnVmZmVyLmdldCgpLCBidWZm
ZXJTaXplKTsKKyAgICBidWZmZXJbc3RyaW5nTGVuZ3RoXSA9ICdcMCc7CisKKyAgICByZXR1cm4g
W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmJ1ZmZlci5nZXQoKV07Cit9CisKK05TU3Ry
aW5nICp0b05TKFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdHJpbmcpCit7CisgICAgcmV0dXJu
IHRvTlMoc3RyaW5nLmdldCgpKTsKK30KKwogc3RkOjpzdHJpbmcgdG9TVEQoTlNTdHJpbmcgKnN0
cmluZykKIHsKICAgICBpZiAoIXN0cmluZykK
</data>
<flag name="commit-queue"
          id="462115"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438674</attachid>
            <date>2021-09-20 07:17:29 -0700</date>
            <delta_ts>2021-09-20 08:22:02 -0700</delta_ts>
            <desc>v3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>25603</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNl
c0V4cGVyaW1lbnRhbC55YW1sIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlBy
ZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKaW5kZXggMDk4OTliZjUzMTg0Li45ODFhYjk4NTI2
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJl
bmNlc0V4cGVyaW1lbnRhbC55YW1sCisrKyBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNl
cy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCkBAIC00MjEsNiArNDIxLDE4IEBAIEV4
cG9zZVNwZWFrZXJzRW5hYmxlZDoKICAgICBXZWJDb3JlOgogICAgICAgZGVmYXVsdDogZmFsc2UK
IAorRlRQRGlzYWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAgaHVtYW5SZWFkYWJsZU5hbWU6ICJGVFAg
c3VwcG9ydCBkaXNhYmxlZCIKKyAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRlRQIHN1cHBv
cnQgZGlzYWJsZWQiCisgIGRlZmF1bHRWYWx1ZToKKyAgICBXZWJDb3JlOgorICAgICAgZGVmYXVs
dDogdHJ1ZQorICAgIFdlYktpdDoKKyAgICAgIGRlZmF1bHQ6IHRydWUKKyAgICBXZWJLaXRMZWdh
Y3k6CisgICAgICBkZWZhdWx0OiB0cnVlCisgICAgICAKICMgRklYTUU6IFRoaXMgc2VlbXMgdG8g
YmUgYWNjaWRlbnRhbGx5IGVuYWJsZWQgZm9yIFdlYktpdDEgcmlnaHQgbm93IGR1ZSB0byB0aGUg
b2xkIGNvZGUgdXNpbmcgdGhlCiAjIHdyb25nIHByZWZlcmVuY2Uga2V5IGluIHNvbWUgcGxhY2Vz
LiBXZSBzaG91bGQgaWRlbnRpZnkgd2hldGhlciBpdCByZWFsbHkgbWFrZXMgc2Vuc2UgdG8ga2Vl
cCB0aGlzCiAjIGVuYWJsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwIGIv
U291cmNlL1dURi93dGYvVVJMLmNwcAppbmRleCBhN2M4ZDI0MWQzODcuLmYzZDhhYjAyMmEwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9V
UkwuY3BwCkBAIC0zMjksNiArMzI5LDExIEBAIGJvb2wgVVJMOjpwcm90b2NvbElzSmF2YVNjcmlw
dCgpIGNvbnN0CiAgICAgcmV0dXJuIFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoc3RyaW5nKCkp
OwogfQogCitib29sIFVSTDo6cHJvdG9jb2xJc0luRlRQRmFtaWx5KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gV1RGOjpwcm90b2NvbElzSW5GVFBGYW1pbHkoc3RyaW5nKCkpOworfQorCiBib29sIFVS
TDo6cHJvdG9jb2xJcyhjb25zdCBjaGFyKiBwcm90b2NvbCkgY29uc3QKIHsKICAgICBhc3NlcnRQ
cm90b2NvbElzR29vZChwcm90b2NvbCk7CkBAIC04NTYsNiArODYxLDE3IEBAIGJvb2wgcHJvdG9j
b2xJc0phdmFTY3JpcHQoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgcmV0dXJuIHByb3RvY29sSXNJ
bnRlcm5hbChzdHJpbmcsICJqYXZhc2NyaXB0Iik7CiB9CiAKK2Jvb2wgcHJvdG9jb2xJc0luRlRQ
RmFtaWx5KFN0cmluZ1ZpZXcgdXJsKQoreworICAgIGF1dG8gbGVuZ3RoID0gdXJsLmxlbmd0aCgp
OworICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBv
YmplY3QuCisgICAgcmV0dXJuIGxlbmd0aCA+PSA0CisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNh
c2VsZXNzRXF1YWwodXJsWzBdLCAnZicpCisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNz
RXF1YWwodXJsWzFdLCAndCcpCisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwo
dXJsWzJdLCAncCcpCisgICAgICAgICYmICh1cmxbM10gPT0gJzonIHx8IChpc0FTQ0lJQWxwaGFD
YXNlbGVzc0VxdWFsKHVybFszXSwgJ3MnKSAmJiBsZW5ndGggPj0gNSAmJiB1cmxbNF0gPT0gJzon
KSk7Cit9CisKIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShTdHJpbmdWaWV3IHVybCkKIHsK
ICAgICBhdXRvIGxlbmd0aCA9IHVybC5sZW5ndGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1VSTC5oIGIvU291cmNlL1dURi93dGYvVVJMLmgKaW5kZXggYTBjY2RjYzY0NjBhLi5lNTg2
OTAyNmVjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTC5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1VSTC5oCkBAIC0xMzYsNiArMTM2LDcgQEAgcHVibGljOgogICAgIGJvb2wgcHJvdG9j
b2xJc0RhdGEoKSBjb25zdCB7IHJldHVybiBwcm90b2NvbElzKCJkYXRhIik7IH0KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzQWJvdXQoKSBjb25zdDsKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdCgpIGNvbnN0OworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXNJbkZUUEZhbWlseSgpIGNvbnN0OwogICAgIGJv
b2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBib29sIGlzTG9jYWxGaWxlKCkgY29uc3Q7CiAgICAgYm9vbCBjYW5ub3RCZUFCYXNlVVJMKCkg
Y29uc3QgeyByZXR1cm4gbV9jYW5ub3RCZUFCYXNlVVJMOyB9CkBAIC0yNTksNiArMjYwLDcgQEAg
V1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVSTCYgYWJvdXRTcmNEb2NVUkwoKTsKIAogV1RGX0VY
UE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJcyhTdHJpbmdWaWV3IHVybCwgY29uc3QgY2hhciog
cHJvdG9jb2wpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQo
U3RyaW5nVmlldyB1cmwpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJc0luRlRQ
RmFtaWx5KFN0cmluZ1ZpZXcgdXJsKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29s
SXNJbkhUVFBGYW1pbHkoU3RyaW5nVmlldyB1cmwpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rk
OjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHBy
b3RvY29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAK
aW5kZXggMmFhMDM3NzJmYTU5Li44YWUxYjZlNGZkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBAIC01OCw4ICs1OCwxOCBAQCBOZXR3b3JrTG9h
ZDo6TmV0d29ya0xvYWQoTmV0d29ya0xvYWRDbGllbnQmIGNsaWVudCwgQmxvYlJlZ2lzdHJ5SW1w
bCogYmxvYlJlZ2lzdAogCiB2b2lkIE5ldHdvcmtMb2FkOjpzdGFydCgpCiB7Ci0gICAgaWYgKG1f
dGFzaykKLSAgICAgICAgbV90YXNrLT5yZXN1bWUoKTsKKyAgICBpZiAoIW1fdGFzaykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MtPmZ0cERpc2FibGVkKCkgJiYg
bV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0luRlRQRmFtaWx5KCkpIHsKKyAg
ICAgICAgbV90YXNrLT5jbGVhckNsaWVudCgpOworICAgICAgICBtX3Rhc2sgPSBudWxscHRyOwor
ICAgICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MgZW1wdHlNZXRyaWNzOworICAgICAg
ICBkaWRDb21wbGV0ZVdpdGhFcnJvcihSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJ
bnRlcm5hbCwgMCwgdXJsKCksICJGVFAgVVJMcyBhcmUgZGlzYWJsZWQiX3MsIFJlc291cmNlRXJy
b3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSwgZW1wdHlNZXRyaWNzKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1fdGFzay0+cmVzdW1lKCk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6
OnN0YXJ0V2l0aFNjaGVkdWxpbmcoKQpAQCAtMTgxLDYgKzE5MSwxNyBAQCB2b2lkIE5ldHdvcmtM
b2FkOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJl
Y3RSZXNwb25zZQogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJUKCFt
X3JlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpOwogCisgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3Mt
PmZ0cERpc2FibGVkKCkgJiYgcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5GVFBGYW1pbHkoKSkg
eworICAgICAgICBtX3Rhc2stPmNsZWFyQ2xpZW50KCk7CisgICAgICAgIG1fdGFzayA9IG51bGxw
dHI7CisgICAgICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBlbXB0eU1ldHJpY3M7Cisg
ICAgICAgIGRpZENvbXBsZXRlV2l0aEVycm9yKFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldl
YktpdEludGVybmFsLCAwLCB1cmwoKSwgIkZUUCBVUkxzIGFyZSBkaXNhYmxlZCJfcywgUmVzb3Vy
Y2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9LCBlbXB0eU1ldHJpY3MpOworICAgICAgICAK
KyAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICByZWRpcmVjdFJl
c3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmspOwogICAg
IG1fcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CmluZGV4IGMzMzMyMDdhNzY2NS4uNWQ5ZWM3MGVlZjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzQ2LDcgKzM0Niw4IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYmCiAKICAgICBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVu
YWJsZWQocGFyYW1ldGVycy5lbmFibGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk7CiAgICAgc2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGUocGFyYW1ldGVycy5lbmFibGVQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZSk7Ci0KKyAgICBtX2Z0cERpc2FibGVkID0gcGFyYW1l
dGVycy5mdHBEaXNhYmxlZDsKKyAgICAKICAgICBmb3IgKGF1dG8mIHN1cHBsZW1lbnQgOiBtX3N1
cHBsZW1lbnRzLnZhbHVlcygpKQogICAgICAgICBzdXBwbGVtZW50LT5pbml0aWFsaXplKHBhcmFt
ZXRlcnMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKaW5kZXggYTY0YTAxZmY0ZmJkLi43ZmMwZmE4NTkxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTM5MCw2ICszOTAsOCBAQCBwdWJs
aWM6CiAgICAgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHkmIHJ0Y0RhdGFDaGFubmVs
UHJveHkoKTsKICNlbmRpZgogCisgICAgYm9vbCBmdHBEaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZnRwRGlzYWJsZWQ7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRp
YWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYpOwogCkBAIC02MTUsNiArNjE3LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9wcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEVuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX3ByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGVidWdNb2RlRW5hYmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2Z0cERp
c2FibGVkIHsgdHJ1ZSB9OwogCiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmPE5ldHdv
cmtTdG9yYWdlTWFuYWdlcj4+IG1fc3RvcmFnZU1hbmFnZXJzOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggOGZlODFiNGMxZjY5Li5iNTcxZDhhNzgxYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC03Miw2ICs3Miw3IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiAKICAgICBlbmNvZGVyIDw8IGVuYWJsZVByaXZhdGVDbGlja01lYXN1cmVtZW50
OwogICAgIGVuY29kZXIgPDwgZW5hYmxlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGU7
CisgICAgZW5jb2RlciA8PCBmdHBEaXNhYmxlZDsKICAgICBlbmNvZGVyIDw8IHdlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzOwogfQogCkBAIC0xNDYsNiArMTQ3LDggQEAgYm9vbCBOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTmV0
d29ya1Byb2MKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LmVuYWJsZVByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmZ0cERpc2FibGVk
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+PiB3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczsKICAg
ICBkZWNvZGVyID4+IHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCmluZGV4IGQ4ZDljZmQ2NmQ1YS4uOTAzYTFlOGQ4YmE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC04OCw2ICs4OCw3IEBAIHN0cnVjdCBOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAKICAgICBib29sIGVuYWJsZVByaXZhdGVDbGlja01l
YXN1cmVtZW50IHsgdHJ1ZSB9OwogICAgIGJvb2wgZW5hYmxlUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnREZWJ1Z01vZGUgeyBmYWxzZSB9OworICAgIGJvb2wgZnRwRGlzYWJsZWQgeyB0cnVlIH07CiAK
ICAgICBWZWN0b3I8V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+IHdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IGUxN2RmZWVhNzc1OC4uMmNhZThhZTU2MmQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29s
Q29jb2EubW0KQEAgLTU2Nyw2ICs1NjcsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9y
bUluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYQogICAg
IE5TU3RyaW5nICpmb3JtYXQgPSBAIldlYktpdEV4cGVyaW1lbnRhbCVAIjsKICNlbmRpZgogICAg
IHBhcmFtZXRlcnMuZW5hYmxlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGUgPSBbZGVm
YXVsdHMgYm9vbEZvcktleTpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpmb3JtYXQsIFdlYlBy
ZWZlcmVuY2VzS2V5Ojpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZUVuYWJsZWRLZXko
KS5jcmVhdGVDRlN0cmluZygpLmdldCgpXV07CisgICAgCisgICAgcGFyYW1ldGVycy5mdHBEaXNh
YmxlZCA9ICFbZGVmYXVsdHMgb2JqZWN0Rm9yS2V5OldlYlByZWZlcmVuY2VzS2V5OjpmdHBEaXNh
YmxlZEtleSgpXSB8fCBbZGVmYXVsdHMgYm9vbEZvcktleTpXZWJQcmVmZXJlbmNlc0tleTo6ZnRw
RGlzYWJsZWRLZXkoKV07CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW52YWxp
ZGF0ZUNvbnRleHQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0
aWxpdGllcy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCmluZGV4
IDU2MjY4MDJiYzAzNy4uNmVkMzAzODNlODIxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9y
bVV0aWxpdGllcy5oCkBAIC02NSw2ICs2NSwxMCBAQCBib29sIGlzS2V5RG93bihXS05hdGl2ZUV2
ZW50UHRyKTsKIAogc3RkOjpzdHJpbmcgdG9TVEQoV0tTdHJpbmdSZWYpOwogc3RkOjpzdHJpbmcg
dG9TVEQoV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+KTsKKyNpZiAhUExBVEZPUk0oV0FUQ0hPUykg
JiYgIVBMQVRGT1JNKEFQUExFVFYpCitOU1N0cmluZyAqdG9OUyhXS1N0cmluZ1JlZik7CitOU1N0
cmluZyAqdG9OUyhXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4pOworI2VuZGlmCiAKIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiB0b1dLKGNvbnN0IGNoYXIqIHV0ZjhTdHJpbmcpOwogCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGM4ZjY4MjI4OWFhOC4uZGRlOTI1ZmFmZjljIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMzQ4LDcgKzM0OCw5IEBACiAJCTUxNzE0RUI0MUNGOEM3OEMwMDQ3
MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzE0RUIyMUNGOEM3NjEwMDQ3
MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMS5odG1sICovOyB9OwogCQk1MTcxNEVC
NTFDRjhDNzhDMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTIuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxNEVC
MzFDRjhDNzYxMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTIuaHRtbCAqLzsg
fTsKIAkJNTE3MTRFQjgxQ0Y4Q0ExNzAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51
cC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzE0
RUI2MUNGOEM3QTQwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAubW0gKi87IH07
CisJCTUxNzVDN0EyMjZGODc2MjMwMDAzQUY1QyAvKiBCdW5kbGVQYWdlQ29uc29sZU1lc3NhZ2Uu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTc1QzdB
MTI2Rjg3NjIzMDAwM0FGNUMgLyogQnVuZGxlUGFnZUNvbnNvbGVNZXNzYWdlLm1tICovOyB9Owog
CQk1MTdFN0UwNDE1MTExOUMxMDBEMEIwMDggLyogTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291
cmNlTG9hZERlbGVnYXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE3RTdFMDMxNTExMTg3NTAwRDBCMDA4IC8qIE1lbW9yeUNhY2hl
UHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sICovOyB9OworCQk1MTgxOUYyQTI2
RUFDOTgzMDBFNDczNzUgLyogRlRQLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE4MTlGMjkyNkVBQzk4MjAwRTQ3Mzc1IC8qIEZUUC5tbSAqLzsgfTsK
IAkJNTE4MjBBNEQyMkY0RUU3RjAwREYwQTAxIC8qIEphdmFzY3JpcHRVUkxOYXZpZ2F0aW9uLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4MjBBNEMy
MkY0RUU3NzAwREYwQTAxIC8qIEphdmFzY3JpcHRVUkxOYXZpZ2F0aW9uLm1tICovOyB9OwogCQk1
MTgyQzIyRTFGMkJDRTU0MDA1OUJBN0MgLyogV0tVUkxTY2hlbWVIYW5kbGVyLWxlYWtzLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4MkMyMkQxRjJC
Q0I0MTAwNTlCQTdDIC8qIFdLVVJMU2NoZW1lSGFuZGxlci1sZWFrcy5tbSAqLzsgfTsKIAkJNTE4
QzExNTMyMDVCMDUwNDAwMUZGNEFFIC8qIFByb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4QzExNTIyMDVCMDRG
OTAwMUZGNEFFIC8qIFByb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tICovOyB9OwpAQCAtMjE5Miw4
ICsyMTk0LDEwIEBACiAJCTUxNzE0RUIzMUNGOEM3NjEwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2ls
bElEQkNsZWFudXAtMi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIldlYlByb2Nl
c3NLaWxsSURCQ2xlYW51cC0yLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTcxNEVCNjFDRjhDN0E0MDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHJvY2Vzc0tpbGxJREJD
bGVhbnVwLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTcxNEVCOTFEMDg3NDE2
MDA0NzIzQzQgLyogQ3Jvc3NUaHJlYWRUYXNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENyb3NzVGhyZWFkVGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUxNzVDN0ExMjZGODc2MjMwMDAzQUY1QyAvKiBCdW5kbGVQYWdlQ29uc29sZU1lc3Nh
Z2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBCdW5kbGVQYWdl
Q29uc29sZU1lc3NhZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0U3REZC
MTUxMTBFQTYwMEQwQjAwOCAvKiBNZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVs
ZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlD
YWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxN0U3RTAzMTUxMTE4NzUwMEQwQjAwOCAvKiBNZW1vcnlDYWNoZVBydW5l
V2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9IE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTgxOUYyOTI2RUFDOTgyMDBFNDczNzUgLyogRlRQ
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRlRQLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTgyMEE0QzIyRjRFRTc3MDBERjBBMDEgLyogSmF2
YXNjcmlwdFVSTE5hdmlnYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBKYXZhc2NyaXB0
VVJMTmF2aWdhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4MkMyMkQx
RjJCQ0I0MTAwNTlCQTdDIC8qIFdLVVJMU2NoZW1lSGFuZGxlci1sZWFrcy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9ICJXS1VSTFNjaGVtZUhhbmRsZXItbGVha3MubW0iOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MThDMTE1MjIwNUIwNEY5MDAxRkY0QUUgLyogUHJvY2Vzc1N3YXBP
bk5hdmlnYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQ
cm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTM0MzEsNiArMzQzNSw3IEBACiAJCQkJN0E4OUJCNjUyMzMxNjM1RDAwNDJDQjFFIC8qIEJ1bmRs
ZUZvcm1EZWxlZ2F0ZS5tbSAqLywKIAkJCQk3QTg5QkI2NjIzMzE2MzVEMDA0MkNCMUUgLyogQnVu
ZGxlRm9ybURlbGVnYXRlUGx1Z0luLm1tICovLAogCQkJCTdBODlCQjY5MjMzMTY1NjUwMDQyQ0Ix
RSAvKiBCdW5kbGVGb3JtRGVsZWdhdGVQcm90b2NvbC5oICovLAorCQkJCTUxNzVDN0ExMjZGODc2
MjMwMDAzQUY1QyAvKiBCdW5kbGVQYWdlQ29uc29sZU1lc3NhZ2UubW0gKi8sCiAJCQkJQTEzRUJC
QUMxQjg3NDM2RjAwMDk3MTEwIC8qIEJ1bmRsZVBhcmFtZXRlcnMubW0gKi8sCiAJCQkJQTEzRUJC
QUUxQjg3NDM2RjAwMDk3MTEwIC8qIEJ1bmRsZVBhcmFtZXRlcnNQbHVnSW4ubW0gKi8sCiAJCQkJ
MzdBNzA5QUQxRTNFQThCMDAwQ0E1OTY5IC8qIEJ1bmRsZVJhbmdlSGFuZGxlLm1tICovLApAQCAt
MzQ4Miw2ICszNDg3LDcgQEAKIAkJCQk2QjI1QTc1MTI1REM4RDRFMDA3MDc0NEYgLyogRXZlbnRB
dHRyaWJ1dGlvbi5tbSAqLywKIAkJCQlDREEyOUIyODIwRkQyQTk5MDBGMTVDRUQgLyogRXhpdEZ1
bGxzY3JlZW5PbkVudGVyUGlQLm1tICovLAogCQkJCTFEMTJCRUJGMjQ1QkVGODUwMDRDMEI3QSAv
KiBFeGl0UGlQT25TdXNwZW5kVmlkZW9FbGVtZW50Lm1tICovLAorCQkJCTUxODE5RjI5MjZFQUM5
ODIwMEU0NzM3NSAvKiBGVFAubW0gKi8sCiAJCQkJMkQ4MTA0Q0IxQkVDMTNFNzAwMjBEQTQ2IC8q
IEZpbmRJblBhZ2UubW0gKi8sCiAJCQkJNTEyNDJDRDQyMzc0RTYxRTAwRUVEOUMxIC8qIEZpbmRJ
blBhZ2VBUEkubW0gKi8sCiAJCQkJMTE4MTUzNDcyMjA4QkFERjAwQjJDQ0QyIC8qIEZpcnN0Vmlz
dWFsbHlOb25FbXB0eU1pbGVzdG9uZS5tbSAqLywKQEAgLTU4MjgsNiArNTgzNCw3IEBACiAJCQkJ
N0NDRTdGMTQxQTQxMUFFNjAwNDQ3QzRDIC8qIFNob3VsZEtlZXBDdXJyZW50QmFja0ZvcndhcmRM
aXN0SXRlbUluTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzN0JDQTYxQzFCNTk2QkE5MDAy
MDEyQ0EgLyogU2hvdWxkT3BlbkV4dGVybmFsVVJMc0luTmV3V2luZG93QWN0aW9ucy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTdDODNFMEM1MUQwQTY1NDYwMEZFQkNGMyAvKiBTaHJpbmtUb0ZpdC5t
bSBpbiBTb3VyY2VzICovLAorCQkJCTUxODE5RjJBMjZFQUM5ODMwMEU0NzM3NSAvKiBGVFAubW0g
aW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VDRDFBNDExQTdFMDA0NDdDNEMgLyogU2ltcGxpZnlN
YXJrdXAubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMTQ5RDU1MDI0MkU5OERGMDAzRUJCMTIgLyog
U2xlZXBEaXNhYmxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJERkY3QjZEMURBNDg3QUYwMDgx
NDYxNCAvKiBTbmFwc2hvdFN0b3JlLm1tIGluIFNvdXJjZXMgKi8sCkBAIC02MDY0LDYgKzYwNzEs
NyBAQAogCQkJCTJEM0NBM0E4MjIxREY0QjQwMDg4RTgwMyAvKiBQYWdlT3ZlcmxheVBsdWdpbi5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUY0NEM3QTAwMjBGOUVFQkYwMDE0NDc4QyAvKiBQYXJzZXJZ
aWVsZFRva2VuUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEzRUJCQUIxQjg3NDM0NjAw
MDk3MTEwIC8qIFBsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0gaW4gU291cmNlcyAqLywKKwkJCQk1
MTc1QzdBMjI2Rjg3NjIzMDAwM0FGNUMgLyogQnVuZGxlUGFnZUNvbnNvbGVNZXNzYWdlLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUE0RjgxQ0YxQkRGRkQ1MzAwNEU2NzJFIC8qIFJlbW90ZU9iamVj
dFJlZ2lzdHJ5UGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEyRERDMDIxRTgzN0MyNDAw
Q0Y2Q0FFIC8qIFJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uc1BsdWdJbi5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTUyNDUxNzg3MjFCOUY1N0IwMDgyQ0IzNCAvKiBSZW5kZXJpbmdQcm9ncmVzc1BsdWdJ
bi5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9CdW5kbGVQYWdlQ29uc29sZU1lc3NhZ2UubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRsZVBhZ2VDb25zb2xlTWVzc2FnZS5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjM0MDMwMDBjMjM1NAotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQnVuZGxl
UGFnZUNvbnNvbGVNZXNzYWdlLm1tCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0ICJjb25maWcuaCIKKworI2lmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQ
TEVUVikKKworI2ltcG9ydCA8V2ViS2l0L1dLQnVuZGxlUGFnZS5oPgorI2ltcG9ydCA8V2ViS2l0
L1dLQnVuZGxlUGFnZVVJQ2xpZW50Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4K
KyNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW4uaD4KKyNpbXBvcnQgPFdlYktpdC9X
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmg+CisKK3Zv
aWQgd2lsbEFkZE1lc3NhZ2VUb0NvbnNvbGVDYWxsYmFjayhXS0J1bmRsZVBhZ2VSZWYgcGFnZSwg
V0tTdHJpbmdSZWYgbWVzc2FnZSwgdWludDMyX3QgbGluZU51bWJlciwgY29uc3Qgdm9pZCAqKQor
eworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNvbnNvbGVNZXNzYWdlIikpOworICAgIFdLQnVu
ZGxlUGFnZVBvc3RNZXNzYWdlKHBhZ2UsIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlKTsKK30K
KworQGludGVyZmFjZSBCdW5kbGVQYWdlQ29uc29sZU1lc3NhZ2UgOiBOU09iamVjdCA8V0tXZWJQ
cm9jZXNzUGx1Z0luPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gQnVuZGxlUGFnZUNvbnNvbGVN
ZXNzYWdlCisKKy0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJbjooV0tXZWJQcm9jZXNzUGx1Z0luQ29u
dHJvbGxlciAqKXBsdWdJbkNvbnRyb2xsZXIgZGlkQ3JlYXRlQnJvd3NlckNvbnRleHRDb250cm9s
bGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKilicm93c2Vy
Q29udGV4dENvbnRyb2xsZXIKK3sKKyAgICBXS0J1bmRsZVBhZ2VVSUNsaWVudFY0IGNsaWVudDsK
KyAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkpOworICAgIGNsaWVudC5iYXNl
LnZlcnNpb24gPSA0OworICAgIGNsaWVudC53aWxsQWRkTWVzc2FnZVRvQ29uc29sZSA9IHdpbGxB
ZGRNZXNzYWdlVG9Db25zb2xlQ2FsbGJhY2s7CisgICAgV0tCdW5kbGVQYWdlU2V0VUlDbGllbnQo
W2Jyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfYnVuZGxlUGFnZVJlZl0sICZjbGllbnQuYmFzZSk7
Cit9CisKK0BlbmQKKworI2VuZGlmIC8vICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0o
QVBQTEVUVikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvRlRQLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GVFAubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jNWRkODdiMWYwZWIKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZU
UC5tbQpAQCAtMCwwICsxLDE0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
CisjaWYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQorCisjaW1wb3J0
ICJIVFRQU2VydmVyLmgiCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAi
VGVzdC5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVz
dFdLV2ViVmlldy5oIgorI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgor
I2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZp
ZXdQcml2YXRlRm9yVGVzdGluZy5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2VicGFnZVByZWZlcmVu
Y2VzUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIFJl
dGFpblB0cjxOU011dGFibGVBcnJheT4gY29uc29sZU1lc3NhZ2VzOworCitzdGF0aWMgdm9pZCBk
aWRSZWNlaXZlUGFnZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tQYWdlUmVmLCBXS1N0cmlu
Z1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2UsIGNvbnN0IHZvaWQqKQoreworICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ29uc29sZU1l
c3NhZ2UiKSkKKyAgICAgICAgW2NvbnNvbGVNZXNzYWdlcyBhZGRPYmplY3Q6VXRpbDo6dG9OUygo
V0tTdHJpbmdSZWYpbWVzc2FnZSldOworfQorCitzdGF0aWMgdm9pZCBzZXRJbmplY3RlZEJ1bmRs
ZUNsaWVudChXS1dlYlZpZXcgKndlYlZpZXcpCit7CisgICAgV0tQYWdlSW5qZWN0ZWRCdW5kbGVD
bGllbnRWMCBpbmplY3RlZEJ1bmRsZUNsaWVudCA9IHsKKyAgICAgICAgeyAwLCBudWxscHRyIH0s
CisgICAgICAgIGRpZFJlY2VpdmVQYWdlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSwKKyAgICAg
ICAgbnVsbHB0ciwKKyAgICB9OworICAgIFdLUGFnZVNldFBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVu
dCh3ZWJWaWV3Ll9wYWdlUmVmRm9yVHJhbnNpdGlvblRvV0tXZWJWaWV3LCAmaW5qZWN0ZWRCdW5k
bGVDbGllbnQuYmFzZSk7Cit9CisKK1RFU1QoV0tXZWJWaWV3LCBGVFBNYWluUmVzb3VyY2UpCit7
CisgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdD
b25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpA
IkJ1bmRsZVBhZ2VDb25zb2xlTWVzc2FnZSJdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIHNldEluamVjdGVkQnVu
ZGxlQ2xpZW50KHdlYlZpZXcuZ2V0KCkpOworICAgIAorICAgIGNvbnNvbGVNZXNzYWdlcyA9IFtO
U011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eToyXTsKKyAKKyAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiZnRwOi8vZXhhbXBsZS5jb20vbWFpbi5odG1sIl1dXTsKKyAgICBbd2ViVmlldyBfdGVzdF93
YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbl07CisKKyAgICBFWFBFQ1RfRVEoW2Nv
bnNvbGVNZXNzYWdlcyBjb3VudF0sIDF1KTsKKyAgICBFWFBFQ1RfVFJVRShbY29uc29sZU1lc3Nh
Z2VzLmdldCgpWzBdIGlzRXF1YWxUb1N0cmluZzpAIkZUUCBVUkxzIGFyZSBkaXNhYmxlZCJdKTsK
K30KKworVEVTVChXS1dlYlZpZXcsIEZUUE1haW5SZXNvdXJjZVJlZGlyZWN0KQoreworICAgIEhU
VFBTZXJ2ZXIgaHR0cFNlcnZlcih7CisgICAgICAgIHsgIi9mdHBfcmVkaXJlY3QiLCB7IDMwMSwg
e3sgIkxvY2F0aW9uIiwgImZ0cDovL2V4YW1wbGUuY29tLyIgfX0gfSB9LAorICAgIH0pOworICAg
IAorICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6
QCJCdW5kbGVQYWdlQ29uc29sZU1lc3NhZ2UiXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBzZXRJbmplY3RlZEJ1
bmRsZUNsaWVudCh3ZWJWaWV3LmdldCgpKTsKKyAgICAKKyAgICBjb25zb2xlTWVzc2FnZXMgPSBb
TlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6Ml07CisKKyAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpodHRwU2VydmVyLnJlcXVlc3QoIi9mdHBfcmVkaXJlY3QiKV07CisgICAgW3dlYlZp
ZXcgX3Rlc3Rfd2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25dOworCisgICAgRVhQ
RUNUX0VRKFtjb25zb2xlTWVzc2FnZXMgY291bnRdLCAxdSk7CisgICAgRVhQRUNUX1RSVUUoW2Nv
bnNvbGVNZXNzYWdlcy5nZXQoKVswXSBpc0VxdWFsVG9TdHJpbmc6QCJGVFAgVVJMcyBhcmUgZGlz
YWJsZWQiXSk7Cit9CisKKworc3RhdGljIGNvbnN0IGNoYXIqIHN1YnJlc291cmNlQnl0ZXMgPSBS
IkZUUFJFU09VUkNFKAorSGVsbG8KKzxpbWcgc3JjPSJmdHA6Ly9leGFtcGxlLmNvbS93ZWJraXR0
ZW4ucG5nIj4KK0dvb2RieWUKKylGVFBSRVNPVVJDRSI7CisKK1RFU1QoV0tXZWJWaWV3LCBGVFBT
dWJyZXNvdXJjZSkKK3sKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9u
ID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1
Z0luQ2xhc3NOYW1lOkAiQnVuZGxlUGFnZUNvbnNvbGVNZXNzYWdlIl07CisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAg
c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQod2ViVmlldy5nZXQoKSk7CisgICAgCisgICAgY29uc29s
ZU1lc3NhZ2VzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OjJdOworICAgIFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aFVU
RjhTdHJpbmc6c3VicmVzb3VyY2VCeXRlc11dOworCisgICAgRVhQRUNUX0VRKFtjb25zb2xlTWVz
c2FnZXMgY291bnRdLCAydSk7CisgICAgRVhQRUNUX1RSVUUoW2NvbnNvbGVNZXNzYWdlcy5nZXQo
KVswXSBpc0VxdWFsVG9TdHJpbmc6QCJGVFAgVVJMcyBhcmUgZGlzYWJsZWQiXSk7CisgICAgRVhQ
RUNUX1RSVUUoW2NvbnNvbGVNZXNzYWdlcy5nZXQoKVsxXSBpc0VxdWFsVG9TdHJpbmc6QCJDYW5u
b3QgbG9hZCBpbWFnZSBmdHA6Ly9leGFtcGxlLmNvbS93ZWJraXR0ZW4ucG5nIGR1ZSB0byBhY2Nl
c3MgY29udHJvbCBjaGVja3MuIl0pOworfQorCisvLyBSZWRpcmVjdCBmcm9tIEhUVFAgdG8gRlRQ
IGFscmVhZHkgZmFpbHMsIGJ1dCBsZXQncyBtYWtlIHN1cmUgaXQga2VlcHMgZmFpbGluZworVEVT
VChXS1dlYlZpZXcsIEZUUFN1YnJlc291cmNlUmVkaXJlY3QpCit7CisgICAgSFRUUFNlcnZlciBo
dHRwU2VydmVyKHsKKyAgICAgICAgeyAiL3dlYmtpdHRlbi5wbmciLCB7IDMwMSwge3sgIkxvY2F0
aW9uIiwgImZ0cDovL2V4YW1wbGUuY29tL3dlYmtpdHRlbi5wbmciIH19IH0gfSwKKyAgICB9KTsK
KyAgICAgICAgCisgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtX
S1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNs
YXNzTmFtZTpAIkJ1bmRsZVBhZ2VDb25zb2xlTWVzc2FnZSJdOworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2Uo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIAorICAg
IC8vIEFsbG93IEhUVFAgdG8gcmVkaXJlY3QgYXdheSBmcm9tIEhUVFAgZm9yIHN1YnJlc291cmNl
cyBmb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgdGVzdAorICAgIGF1dG8gcHJlZmVyZW5jZXMgPSAo
X19icmlkZ2UgV0tQcmVmZXJlbmNlc1JlZilbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJlZmVy
ZW5jZXNdOworICAgIFdLUHJlZmVyZW5jZXNTZXRSZXN0cmljdGVkSFRUUFJlc3BvbnNlQWNjZXNz
KHByZWZlcmVuY2VzLCBmYWxzZSk7CisgICAgCisgICAgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQo
d2ViVmlldy5nZXQoKSk7CisgICAgCisgICAgY29uc29sZU1lc3NhZ2VzID0gW05TTXV0YWJsZUFy
cmF5IGFycmF5V2l0aENhcGFjaXR5OjJdOworICAgIAorICAgIGF1dG8gaHRtbFN0cmluZyA9IG1h
a2VTdHJpbmcoIjxpbWcgc3JjPSdodHRwOi8vMTI3LjAuMC4xOiIsIFN0cmluZzo6bnVtYmVyKGh0
dHBTZXJ2ZXIucG9ydCgpKSwgIi93ZWJraXR0ZW4ucG5nJz4iKTsKKyAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmh0
bWxTdHJpbmcudXRmOCgpLmRhdGEoKV1dOworCisgICAgRVhQRUNUX0VRKFtjb25zb2xlTWVzc2Fn
ZXMgY291bnRdLCAydSk7CisgICAgRVhQRUNUX1RSVUUoW2NvbnNvbGVNZXNzYWdlcy5nZXQoKVsw
XSBpc0VxdWFsVG9TdHJpbmc6QCJGVFAgVVJMcyBhcmUgZGlzYWJsZWQiXSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vICFQTEFURk9STShXQVRDSE9TKSAm
JiAhUExBVEZPUk0oQVBQTEVUVikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
UGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbQppbmRleCBkYTg4N2RlOTc1NTkuLmZjNzdiZmFmYjE3
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGll
c0NvY29hLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvUGxhdGZvcm1VdGlsaXRp
ZXNDb2NvYS5tbQpAQCAtMzMsNiArMzMsMjUgQEAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
IG5hbWVzcGFjZSBVdGlsIHsKIAorI2lmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0o
QVBQTEVUVikKKworTlNTdHJpbmcgKnRvTlMoV0tTdHJpbmdSZWYgc3RyaW5nKQoreworICAgIHNp
emVfdCBidWZmZXJTaXplID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKHN0cmlu
ZykgKyAxOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hl
Y2s8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gV0tTdHJp
bmdHZXRVVEY4Q1N0cmluZyhzdHJpbmcsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CisgICAg
YnVmZmVyW3N0cmluZ0xlbmd0aF0gPSAnXDAnOworCisgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJp
bmdXaXRoVVRGOFN0cmluZzpidWZmZXIuZ2V0KCldOworfQorCitOU1N0cmluZyAqdG9OUyhXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gc3RyaW5nKQoreworICAgIHJldHVybiB0b05TKHN0cmluZy5n
ZXQoKSk7Cit9CisKKyNlbmRpZiAvLyAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQ
UExFVFYpCisKIHN0ZDo6c3RyaW5nIHRvU1REKE5TU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgaWYg
KCFzdHJpbmcpCg==
</data>
<flag name="commit-queue"
          id="462126"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438680</attachid>
            <date>2021-09-20 08:22:02 -0700</date>
            <delta_ts>2021-09-20 11:51:32 -0700</delta_ts>
            <desc>v4</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>25456</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNl
c0V4cGVyaW1lbnRhbC55YW1sIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlBy
ZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKaW5kZXggMDk4OTliZjUzMTg0Li45ODFhYjk4NTI2
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJl
bmNlc0V4cGVyaW1lbnRhbC55YW1sCisrKyBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNl
cy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCkBAIC00MjEsNiArNDIxLDE4IEBAIEV4
cG9zZVNwZWFrZXJzRW5hYmxlZDoKICAgICBXZWJDb3JlOgogICAgICAgZGVmYXVsdDogZmFsc2UK
IAorRlRQRGlzYWJsZWQ6CisgIHR5cGU6IGJvb2wKKyAgaHVtYW5SZWFkYWJsZU5hbWU6ICJGVFAg
c3VwcG9ydCBkaXNhYmxlZCIKKyAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRlRQIHN1cHBv
cnQgZGlzYWJsZWQiCisgIGRlZmF1bHRWYWx1ZToKKyAgICBXZWJDb3JlOgorICAgICAgZGVmYXVs
dDogdHJ1ZQorICAgIFdlYktpdDoKKyAgICAgIGRlZmF1bHQ6IHRydWUKKyAgICBXZWJLaXRMZWdh
Y3k6CisgICAgICBkZWZhdWx0OiB0cnVlCisgICAgICAKICMgRklYTUU6IFRoaXMgc2VlbXMgdG8g
YmUgYWNjaWRlbnRhbGx5IGVuYWJsZWQgZm9yIFdlYktpdDEgcmlnaHQgbm93IGR1ZSB0byB0aGUg
b2xkIGNvZGUgdXNpbmcgdGhlCiAjIHdyb25nIHByZWZlcmVuY2Uga2V5IGluIHNvbWUgcGxhY2Vz
LiBXZSBzaG91bGQgaWRlbnRpZnkgd2hldGhlciBpdCByZWFsbHkgbWFrZXMgc2Vuc2UgdG8ga2Vl
cCB0aGlzCiAjIGVuYWJsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwIGIv
U291cmNlL1dURi93dGYvVVJMLmNwcAppbmRleCBhN2M4ZDI0MWQzODcuLmYzZDhhYjAyMmEwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9V
UkwuY3BwCkBAIC0zMjksNiArMzI5LDExIEBAIGJvb2wgVVJMOjpwcm90b2NvbElzSmF2YVNjcmlw
dCgpIGNvbnN0CiAgICAgcmV0dXJuIFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoc3RyaW5nKCkp
OwogfQogCitib29sIFVSTDo6cHJvdG9jb2xJc0luRlRQRmFtaWx5KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gV1RGOjpwcm90b2NvbElzSW5GVFBGYW1pbHkoc3RyaW5nKCkpOworfQorCiBib29sIFVS
TDo6cHJvdG9jb2xJcyhjb25zdCBjaGFyKiBwcm90b2NvbCkgY29uc3QKIHsKICAgICBhc3NlcnRQ
cm90b2NvbElzR29vZChwcm90b2NvbCk7CkBAIC04NTYsNiArODYxLDE3IEBAIGJvb2wgcHJvdG9j
b2xJc0phdmFTY3JpcHQoU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgcmV0dXJuIHByb3RvY29sSXNJ
bnRlcm5hbChzdHJpbmcsICJqYXZhc2NyaXB0Iik7CiB9CiAKK2Jvb2wgcHJvdG9jb2xJc0luRlRQ
RmFtaWx5KFN0cmluZ1ZpZXcgdXJsKQoreworICAgIGF1dG8gbGVuZ3RoID0gdXJsLmxlbmd0aCgp
OworICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBv
YmplY3QuCisgICAgcmV0dXJuIGxlbmd0aCA+PSA0CisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNh
c2VsZXNzRXF1YWwodXJsWzBdLCAnZicpCisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNz
RXF1YWwodXJsWzFdLCAndCcpCisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwo
dXJsWzJdLCAncCcpCisgICAgICAgICYmICh1cmxbM10gPT0gJzonIHx8IChpc0FTQ0lJQWxwaGFD
YXNlbGVzc0VxdWFsKHVybFszXSwgJ3MnKSAmJiBsZW5ndGggPj0gNSAmJiB1cmxbNF0gPT0gJzon
KSk7Cit9CisKIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShTdHJpbmdWaWV3IHVybCkKIHsK
ICAgICBhdXRvIGxlbmd0aCA9IHVybC5sZW5ndGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1VSTC5oIGIvU291cmNlL1dURi93dGYvVVJMLmgKaW5kZXggYTBjY2RjYzY0NjBhLi5lNTg2
OTAyNmVjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTC5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1VSTC5oCkBAIC0xMzYsNiArMTM2LDcgQEAgcHVibGljOgogICAgIGJvb2wgcHJvdG9j
b2xJc0RhdGEoKSBjb25zdCB7IHJldHVybiBwcm90b2NvbElzKCJkYXRhIik7IH0KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzQWJvdXQoKSBjb25zdDsKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdCgpIGNvbnN0OworICAgIFdURl9F
WFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXNJbkZUUEZhbWlseSgpIGNvbnN0OwogICAgIGJv
b2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBib29sIGlzTG9jYWxGaWxlKCkgY29uc3Q7CiAgICAgYm9vbCBjYW5ub3RCZUFCYXNlVVJMKCkg
Y29uc3QgeyByZXR1cm4gbV9jYW5ub3RCZUFCYXNlVVJMOyB9CkBAIC0yNTksNiArMjYwLDcgQEAg
V1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IFVSTCYgYWJvdXRTcmNEb2NVUkwoKTsKIAogV1RGX0VY
UE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJcyhTdHJpbmdWaWV3IHVybCwgY29uc3QgY2hhciog
cHJvdG9jb2wpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQo
U3RyaW5nVmlldyB1cmwpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJc0luRlRQ
RmFtaWx5KFN0cmluZ1ZpZXcgdXJsKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29s
SXNJbkhUVFBGYW1pbHkoU3RyaW5nVmlldyB1cmwpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rk
OjpvcHRpb25hbDx1aW50MTZfdD4gZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHBy
b3RvY29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAK
aW5kZXggMmFhMDM3NzJmYTU5Li44YWUxYjZlNGZkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBAIC01OCw4ICs1OCwxOCBAQCBOZXR3b3JrTG9h
ZDo6TmV0d29ya0xvYWQoTmV0d29ya0xvYWRDbGllbnQmIGNsaWVudCwgQmxvYlJlZ2lzdHJ5SW1w
bCogYmxvYlJlZ2lzdAogCiB2b2lkIE5ldHdvcmtMb2FkOjpzdGFydCgpCiB7Ci0gICAgaWYgKG1f
dGFzaykKLSAgICAgICAgbV90YXNrLT5yZXN1bWUoKTsKKyAgICBpZiAoIW1fdGFzaykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3MtPmZ0cERpc2FibGVkKCkgJiYg
bV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0luRlRQRmFtaWx5KCkpIHsKKyAg
ICAgICAgbV90YXNrLT5jbGVhckNsaWVudCgpOworICAgICAgICBtX3Rhc2sgPSBudWxscHRyOwor
ICAgICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MgZW1wdHlNZXRyaWNzOworICAgICAg
ICBkaWRDb21wbGV0ZVdpdGhFcnJvcihSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJ
bnRlcm5hbCwgMCwgdXJsKCksICJGVFAgVVJMcyBhcmUgZGlzYWJsZWQiX3MsIFJlc291cmNlRXJy
b3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSwgZW1wdHlNZXRyaWNzKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1fdGFzay0+cmVzdW1lKCk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6
OnN0YXJ0V2l0aFNjaGVkdWxpbmcoKQpAQCAtMTgxLDYgKzE5MSwxNyBAQCB2b2lkIE5ldHdvcmtM
b2FkOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJl
Y3RSZXNwb25zZQogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJUKCFt
X3JlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpOwogCisgICAgaWYgKG1fbmV0d29ya1Byb2Nlc3Mt
PmZ0cERpc2FibGVkKCkgJiYgcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5GVFBGYW1pbHkoKSkg
eworICAgICAgICBtX3Rhc2stPmNsZWFyQ2xpZW50KCk7CisgICAgICAgIG1fdGFzayA9IG51bGxw
dHI7CisgICAgICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBlbXB0eU1ldHJpY3M7Cisg
ICAgICAgIGRpZENvbXBsZXRlV2l0aEVycm9yKFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldl
YktpdEludGVybmFsLCAwLCB1cmwoKSwgIkZUUCBVUkxzIGFyZSBkaXNhYmxlZCJfcywgUmVzb3Vy
Y2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9LCBlbXB0eU1ldHJpY3MpOworICAgICAgICAK
KyAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICByZWRpcmVjdFJl
c3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmspOwogICAg
IG1fcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CmluZGV4IGMzMzMyMDdhNzY2NS4uNWQ5ZWM3MGVlZjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzQ2LDcgKzM0Niw4IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYmCiAKICAgICBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVu
YWJsZWQocGFyYW1ldGVycy5lbmFibGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk7CiAgICAgc2V0
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGUocGFyYW1ldGVycy5lbmFibGVQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZSk7Ci0KKyAgICBtX2Z0cERpc2FibGVkID0gcGFyYW1l
dGVycy5mdHBEaXNhYmxlZDsKKyAgICAKICAgICBmb3IgKGF1dG8mIHN1cHBsZW1lbnQgOiBtX3N1
cHBsZW1lbnRzLnZhbHVlcygpKQogICAgICAgICBzdXBwbGVtZW50LT5pbml0aWFsaXplKHBhcmFt
ZXRlcnMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKaW5kZXggYTY0YTAxZmY0ZmJkLi43ZmMwZmE4NTkxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTM5MCw2ICszOTAsOCBAQCBwdWJs
aWM6CiAgICAgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHkmIHJ0Y0RhdGFDaGFubmVs
UHJveHkoKTsKICNlbmRpZgogCisgICAgYm9vbCBmdHBEaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZnRwRGlzYWJsZWQ7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRp
YWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYpOwogCkBAIC02MTUsNiArNjE3LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9wcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEVuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX3ByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGVidWdNb2RlRW5hYmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2Z0cERp
c2FibGVkIHsgdHJ1ZSB9OwogCiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmPE5ldHdv
cmtTdG9yYWdlTWFuYWdlcj4+IG1fc3RvcmFnZU1hbmFnZXJzOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggOGZlODFiNGMxZjY5Li5iNTcxZDhhNzgxYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC03Miw2ICs3Miw3IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiAKICAgICBlbmNvZGVyIDw8IGVuYWJsZVByaXZhdGVDbGlja01lYXN1cmVtZW50
OwogICAgIGVuY29kZXIgPDwgZW5hYmxlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGU7
CisgICAgZW5jb2RlciA8PCBmdHBEaXNhYmxlZDsKICAgICBlbmNvZGVyIDw8IHdlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzOwogfQogCkBAIC0xNDYsNiArMTQ3LDggQEAgYm9vbCBOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTmV0
d29ya1Byb2MKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LmVuYWJsZVByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmZ0cERpc2FibGVk
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+PiB3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczsKICAg
ICBkZWNvZGVyID4+IHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCmluZGV4IGQ4ZDljZmQ2NmQ1YS4uOTAzYTFlOGQ4YmE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC04OCw2ICs4OCw3IEBAIHN0cnVjdCBOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAKICAgICBib29sIGVuYWJsZVByaXZhdGVDbGlja01l
YXN1cmVtZW50IHsgdHJ1ZSB9OwogICAgIGJvb2wgZW5hYmxlUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnREZWJ1Z01vZGUgeyBmYWxzZSB9OworICAgIGJvb2wgZnRwRGlzYWJsZWQgeyB0cnVlIH07CiAK
ICAgICBWZWN0b3I8V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+IHdlYnNpdGVEYXRhU3RvcmVQ
YXJhbWV0ZXJzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IGUxN2RmZWVhNzc1OC4uMmNhZThhZTU2MmQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29s
Q29jb2EubW0KQEAgLTU2Nyw2ICs1NjcsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9y
bUluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYQogICAg
IE5TU3RyaW5nICpmb3JtYXQgPSBAIldlYktpdEV4cGVyaW1lbnRhbCVAIjsKICNlbmRpZgogICAg
IHBhcmFtZXRlcnMuZW5hYmxlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGUgPSBbZGVm
YXVsdHMgYm9vbEZvcktleTpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpmb3JtYXQsIFdlYlBy
ZWZlcmVuY2VzS2V5Ojpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZUVuYWJsZWRLZXko
KS5jcmVhdGVDRlN0cmluZygpLmdldCgpXV07CisgICAgCisgICAgcGFyYW1ldGVycy5mdHBEaXNh
YmxlZCA9ICFbZGVmYXVsdHMgb2JqZWN0Rm9yS2V5OldlYlByZWZlcmVuY2VzS2V5OjpmdHBEaXNh
YmxlZEtleSgpXSB8fCBbZGVmYXVsdHMgYm9vbEZvcktleTpXZWJQcmVmZXJlbmNlc0tleTo6ZnRw
RGlzYWJsZWRLZXkoKV07CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW52YWxp
ZGF0ZUNvbnRleHQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0
aWxpdGllcy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCmluZGV4
IDU2MjY4MDJiYzAzNy4uZTg1NWFkOWIyOTBkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9y
bVV0aWxpdGllcy5oCkBAIC02Niw2ICs2NiwxMSBAQCBib29sIGlzS2V5RG93bihXS05hdGl2ZUV2
ZW50UHRyKTsKIHN0ZDo6c3RyaW5nIHRvU1REKFdLU3RyaW5nUmVmKTsKIHN0ZDo6c3RyaW5nIHRv
U1REKFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPik7CiAKKyNpZiBQTEFURk9STShNQUMpCitOU1N0
cmluZyAqdG9OUyhXS1N0cmluZ1JlZik7CitOU1N0cmluZyAqdG9OUyhXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4pOworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKwogV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IHRvV0soY29uc3QgY2hhciogdXRmOFN0cmluZyk7CiAKICNlbmRpZiAvLyBXS19IQVZF
X0NfU1BJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM4ZjY4MjI4OWFhOC4uZGRlOTI1ZmFm
ZjljIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzQ4LDcgKzM0OCw5IEBACiAJCTUxNzE0
RUI0MUNGOEM3OEMwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMS5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzE0
RUIyMUNGOEM3NjEwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMS5odG1sICov
OyB9OwogCQk1MTcxNEVCNTFDRjhDNzhDMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVh
bnVwLTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTcxNEVCMzFDRjhDNzYxMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVh
bnVwLTIuaHRtbCAqLzsgfTsKIAkJNTE3MTRFQjgxQ0Y4Q0ExNzAwNDcyM0M0IC8qIFdlYlByb2Nl
c3NLaWxsSURCQ2xlYW51cC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNzE0RUI2MUNGOEM3QTQwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNs
ZWFudXAubW0gKi87IH07CisJCTUxNzVDN0EyMjZGODc2MjMwMDAzQUY1QyAvKiBCdW5kbGVQYWdl
Q29uc29sZU1lc3NhZ2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTc1QzdBMTI2Rjg3NjIzMDAwM0FGNUMgLyogQnVuZGxlUGFnZUNvbnNvbGVNZXNz
YWdlLm1tICovOyB9OwogCQk1MTdFN0UwNDE1MTExOUMxMDBEMEIwMDggLyogTWVtb3J5Q2FjaGVQ
cnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3RTdFMDMxNTExMTg3NTAwRDBCMDA4
IC8qIE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sICovOyB9
OworCQk1MTgxOUYyQTI2RUFDOTgzMDBFNDczNzUgLyogRlRQLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4MTlGMjkyNkVBQzk4MjAwRTQ3Mzc1IC8q
IEZUUC5tbSAqLzsgfTsKIAkJNTE4MjBBNEQyMkY0RUU3RjAwREYwQTAxIC8qIEphdmFzY3JpcHRV
UkxOYXZpZ2F0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE4MjBBNEMyMkY0RUU3NzAwREYwQTAxIC8qIEphdmFzY3JpcHRVUkxOYXZpZ2F0aW9u
Lm1tICovOyB9OwogCQk1MTgyQzIyRTFGMkJDRTU0MDA1OUJBN0MgLyogV0tVUkxTY2hlbWVIYW5k
bGVyLWxlYWtzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE4MkMyMkQxRjJCQ0I0MTAwNTlCQTdDIC8qIFdLVVJMU2NoZW1lSGFuZGxlci1sZWFrcy5t
bSAqLzsgfTsKIAkJNTE4QzExNTMyMDVCMDUwNDAwMUZGNEFFIC8qIFByb2Nlc3NTd2FwT25OYXZp
Z2F0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE4QzExNTIyMDVCMDRGOTAwMUZGNEFFIC8qIFByb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tICov
OyB9OwpAQCAtMjE5Miw4ICsyMTk0LDEwIEBACiAJCTUxNzE0RUIzMUNGOEM3NjEwMDQ3MjNDNCAv
KiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gIldlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0yLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTcxNEVCNjFDRjhDN0E0MDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJ
REJDbGVhbnVwLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
UHJvY2Vzc0tpbGxJREJDbGVhbnVwLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTcxNEVCOTFEMDg3NDE2MDA0NzIzQzQgLyogQ3Jvc3NUaHJlYWRUYXNrLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyb3NzVGhyZWFkVGFzay5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNzVDN0ExMjZGODc2MjMwMDAzQUY1QyAvKiBCdW5kbGVQ
YWdlQ29uc29sZU1lc3NhZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBCdW5kbGVQYWdlQ29uc29sZU1lc3NhZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxN0U3REZCMTUxMTBFQTYwMEQwQjAwOCAvKiBNZW1vcnlDYWNoZVBydW5lV2l0aGlu
UmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBNZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0U3RTAzMTUxMTE4NzUwMEQwQjAwOCAvKiBN
ZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgcGF0aCA9IE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxl
Z2F0ZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTgxOUYyOTI2RUFDOTgy
MDBFNDczNzUgLyogRlRQLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gRlRQLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTgyMEE0QzIyRjRFRTc3
MDBERjBBMDEgLyogSmF2YXNjcmlwdFVSTE5hdmlnYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBKYXZhc2NyaXB0VVJMTmF2aWdhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTE4MkMyMkQxRjJCQ0I0MTAwNTlCQTdDIC8qIFdLVVJMU2NoZW1lSGFuZGxlci1sZWFr
cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9ICJXS1VSTFNjaGVtZUhhbmRsZXItbGVha3MubW0i
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MThDMTE1MjIwNUIwNEY5MDAxRkY0QUUg
LyogUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBQcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTM0MzEsNiArMzQzNSw3IEBACiAJCQkJN0E4OUJCNjUyMzMxNjM1RDAw
NDJDQjFFIC8qIEJ1bmRsZUZvcm1EZWxlZ2F0ZS5tbSAqLywKIAkJCQk3QTg5QkI2NjIzMzE2MzVE
MDA0MkNCMUUgLyogQnVuZGxlRm9ybURlbGVnYXRlUGx1Z0luLm1tICovLAogCQkJCTdBODlCQjY5
MjMzMTY1NjUwMDQyQ0IxRSAvKiBCdW5kbGVGb3JtRGVsZWdhdGVQcm90b2NvbC5oICovLAorCQkJ
CTUxNzVDN0ExMjZGODc2MjMwMDAzQUY1QyAvKiBCdW5kbGVQYWdlQ29uc29sZU1lc3NhZ2UubW0g
Ki8sCiAJCQkJQTEzRUJCQUMxQjg3NDM2RjAwMDk3MTEwIC8qIEJ1bmRsZVBhcmFtZXRlcnMubW0g
Ki8sCiAJCQkJQTEzRUJCQUUxQjg3NDM2RjAwMDk3MTEwIC8qIEJ1bmRsZVBhcmFtZXRlcnNQbHVn
SW4ubW0gKi8sCiAJCQkJMzdBNzA5QUQxRTNFQThCMDAwQ0E1OTY5IC8qIEJ1bmRsZVJhbmdlSGFu
ZGxlLm1tICovLApAQCAtMzQ4Miw2ICszNDg3LDcgQEAKIAkJCQk2QjI1QTc1MTI1REM4RDRFMDA3
MDc0NEYgLyogRXZlbnRBdHRyaWJ1dGlvbi5tbSAqLywKIAkJCQlDREEyOUIyODIwRkQyQTk5MDBG
MTVDRUQgLyogRXhpdEZ1bGxzY3JlZW5PbkVudGVyUGlQLm1tICovLAogCQkJCTFEMTJCRUJGMjQ1
QkVGODUwMDRDMEI3QSAvKiBFeGl0UGlQT25TdXNwZW5kVmlkZW9FbGVtZW50Lm1tICovLAorCQkJ
CTUxODE5RjI5MjZFQUM5ODIwMEU0NzM3NSAvKiBGVFAubW0gKi8sCiAJCQkJMkQ4MTA0Q0IxQkVD
MTNFNzAwMjBEQTQ2IC8qIEZpbmRJblBhZ2UubW0gKi8sCiAJCQkJNTEyNDJDRDQyMzc0RTYxRTAw
RUVEOUMxIC8qIEZpbmRJblBhZ2VBUEkubW0gKi8sCiAJCQkJMTE4MTUzNDcyMjA4QkFERjAwQjJD
Q0QyIC8qIEZpcnN0VmlzdWFsbHlOb25FbXB0eU1pbGVzdG9uZS5tbSAqLywKQEAgLTU4MjgsNiAr
NTgzNCw3IEBACiAJCQkJN0NDRTdGMTQxQTQxMUFFNjAwNDQ3QzRDIC8qIFNob3VsZEtlZXBDdXJy
ZW50QmFja0ZvcndhcmRMaXN0SXRlbUluTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzN0JD
QTYxQzFCNTk2QkE5MDAyMDEyQ0EgLyogU2hvdWxkT3BlbkV4dGVybmFsVVJMc0luTmV3V2luZG93
QWN0aW9ucy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMEM1MUQwQTY1NDYwMEZFQkNGMyAv
KiBTaHJpbmtUb0ZpdC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxODE5RjJBMjZFQUM5ODMwMEU0
NzM3NSAvKiBGVFAubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VDRDFBNDExQTdFMDA0NDdD
NEMgLyogU2ltcGxpZnlNYXJrdXAubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMTQ5RDU1MDI0MkU5
OERGMDAzRUJCMTIgLyogU2xlZXBEaXNhYmxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJERkY3
QjZEMURBNDg3QUYwMDgxNDYxNCAvKiBTbmFwc2hvdFN0b3JlLm1tIGluIFNvdXJjZXMgKi8sCkBA
IC02MDY0LDYgKzYwNzEsNyBAQAogCQkJCTJEM0NBM0E4MjIxREY0QjQwMDg4RTgwMyAvKiBQYWdl
T3ZlcmxheVBsdWdpbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0NEM3QTAwMjBGOUVFQkYwMDE0
NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEz
RUJCQUIxQjg3NDM0NjAwMDk3MTEwIC8qIFBsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0gaW4gU291
cmNlcyAqLywKKwkJCQk1MTc1QzdBMjI2Rjg3NjIzMDAwM0FGNUMgLyogQnVuZGxlUGFnZUNvbnNv
bGVNZXNzYWdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0RjgxQ0YxQkRGRkQ1MzAwNEU2NzJF
IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5UGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEy
RERDMDIxRTgzN0MyNDAwQ0Y2Q0FFIC8qIFJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uc1BsdWdJbi5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTUyNDUxNzg3MjFCOUY1N0IwMDgyQ0IzNCAvKiBSZW5kZXJp
bmdQcm9ncmVzc1BsdWdJbi5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5kbGVQYWdlQ29uc29sZU1lc3NhZ2UubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRsZVBhZ2VDb25zb2xl
TWVzc2FnZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjRjY2Ew
MWQ2YWJlNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQnVuZGxlUGFnZUNvbnNvbGVNZXNzYWdlLm1tCkBAIC0wLDAgKzEsNTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIFBMQVRGT1JNKE1BQykKKworI2lt
cG9ydCA8V2ViS2l0L1dLQnVuZGxlUGFnZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLQnVuZGxlUGFn
ZVVJQ2xpZW50Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KKyNpbXBvcnQgPFdl
YktpdC9XS1dlYlByb2Nlc3NQbHVnSW4uaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmg+CisKK3ZvaWQgd2lsbEFkZE1l
c3NhZ2VUb0NvbnNvbGVDYWxsYmFjayhXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYg
bWVzc2FnZSwgdWludDMyX3QgbGluZU51bWJlciwgY29uc3Qgdm9pZCAqKQoreworICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIkNvbnNvbGVNZXNzYWdlIikpOworICAgIFdLQnVuZGxlUGFnZVBvc3RN
ZXNzYWdlKHBhZ2UsIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlKTsKK30KKworQGludGVyZmFj
ZSBCdW5kbGVQYWdlQ29uc29sZU1lc3NhZ2UgOiBOU09iamVjdCA8V0tXZWJQcm9jZXNzUGx1Z0lu
PgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gQnVuZGxlUGFnZUNvbnNvbGVNZXNzYWdlCisKKy0g
KHZvaWQpd2ViUHJvY2Vzc1BsdWdJbjooV0tXZWJQcm9jZXNzUGx1Z0luQ29udHJvbGxlciAqKXBs
dWdJbkNvbnRyb2xsZXIgZGlkQ3JlYXRlQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKilicm93c2VyQ29udGV4dENvbnRy
b2xsZXIKK3sKKyAgICBXS0J1bmRsZVBhZ2VVSUNsaWVudFY0IGNsaWVudDsKKyAgICBtZW1zZXQo
JmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkpOworICAgIGNsaWVudC5iYXNlLnZlcnNpb24gPSA0
OworICAgIGNsaWVudC53aWxsQWRkTWVzc2FnZVRvQ29uc29sZSA9IHdpbGxBZGRNZXNzYWdlVG9D
b25zb2xlQ2FsbGJhY2s7CisgICAgV0tCdW5kbGVQYWdlU2V0VUlDbGllbnQoW2Jyb3dzZXJDb250
ZXh0Q29udHJvbGxlciBfYnVuZGxlUGFnZVJlZl0sICZjbGllbnQuYmFzZSk7Cit9CisKK0BlbmQK
KworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvRlRQLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9GVFAubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li4wMTEwNTEyYzA5MzIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0ZUUC5tbQpAQCAtMCwwICsxLDE0NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorCisjaWYgUExBVEZPUk0oTUFDKQorCisjaW1wb3J0ICJIVFRQU2Vy
dmVyLmgiCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgor
I2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmll
dy5oIgorI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgorI2ltcG9ydCA8
V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3
Q29uZmlndXJhdGlvblByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRl
Rm9yVGVzdGluZy5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2VicGFnZVByZWZlcmVuY2VzUHJpdmF0
ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIFJldGFpblB0cjxO
U011dGFibGVBcnJheT4gY29uc29sZU1lc3NhZ2VzOworCitzdGF0aWMgdm9pZCBkaWRSZWNlaXZl
UGFnZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNz
YWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2UsIGNvbnN0IHZvaWQqKQoreworICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ29uc29sZU1lc3NhZ2UiKSkK
KyAgICAgICAgW2NvbnNvbGVNZXNzYWdlcyBhZGRPYmplY3Q6VXRpbDo6dG9OUygoV0tTdHJpbmdS
ZWYpbWVzc2FnZSldOworfQorCitzdGF0aWMgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChX
S1dlYlZpZXcgKndlYlZpZXcpCit7CisgICAgV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRWMCBp
bmplY3RlZEJ1bmRsZUNsaWVudCA9IHsKKyAgICAgICAgeyAwLCBudWxscHRyIH0sCisgICAgICAg
IGRpZFJlY2VpdmVQYWdlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSwKKyAgICAgICAgbnVsbHB0
ciwKKyAgICB9OworICAgIFdLUGFnZVNldFBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudCh3ZWJWaWV3
Ll9wYWdlUmVmRm9yVHJhbnNpdGlvblRvV0tXZWJWaWV3LCAmaW5qZWN0ZWRCdW5kbGVDbGllbnQu
YmFzZSk7Cit9CisKK1RFU1QoV0tXZWJWaWV3LCBGVFBNYWluUmVzb3VyY2UpCit7CisgICAgV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0
aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIkJ1bmRsZVBh
Z2VDb25zb2xlTWVzc2FnZSJdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50
KHdlYlZpZXcuZ2V0KCkpOworICAgIAorICAgIGNvbnNvbGVNZXNzYWdlcyA9IFtOU011dGFibGVB
cnJheSBhcnJheVdpdGhDYXBhY2l0eToyXTsKKyAKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiZnRwOi8v
ZXhhbXBsZS5jb20vbWFpbi5odG1sIl1dXTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlk
RmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbl07CisKKyAgICBFWFBFQ1RfRVEoW2NvbnNvbGVNZXNz
YWdlcyBjb3VudF0sIDF1KTsKKyAgICBFWFBFQ1RfVFJVRShbY29uc29sZU1lc3NhZ2VzLmdldCgp
WzBdIGlzRXF1YWxUb1N0cmluZzpAIkZUUCBVUkxzIGFyZSBkaXNhYmxlZCJdKTsKK30KKworVEVT
VChXS1dlYlZpZXcsIEZUUE1haW5SZXNvdXJjZVJlZGlyZWN0KQoreworICAgIEhUVFBTZXJ2ZXIg
aHR0cFNlcnZlcih7CisgICAgICAgIHsgIi9mdHBfcmVkaXJlY3QiLCB7IDMwMSwge3sgIkxvY2F0
aW9uIiwgImZ0cDovL2V4YW1wbGUuY29tLyIgfX0gfSB9LAorICAgIH0pOworICAgIAorICAgIFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJCdW5kbGVQ
YWdlQ29uc29sZU1lc3NhZ2UiXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBzZXRJbmplY3RlZEJ1bmRsZUNsaWVu
dCh3ZWJWaWV3LmdldCgpKTsKKyAgICAKKyAgICBjb25zb2xlTWVzc2FnZXMgPSBbTlNNdXRhYmxl
QXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6Ml07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpo
dHRwU2VydmVyLnJlcXVlc3QoIi9mdHBfcmVkaXJlY3QiKV07CisgICAgW3dlYlZpZXcgX3Rlc3Rf
d2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25dOworCisgICAgRVhQRUNUX0VRKFtj
b25zb2xlTWVzc2FnZXMgY291bnRdLCAxdSk7CisgICAgRVhQRUNUX1RSVUUoW2NvbnNvbGVNZXNz
YWdlcy5nZXQoKVswXSBpc0VxdWFsVG9TdHJpbmc6QCJGVFAgVVJMcyBhcmUgZGlzYWJsZWQiXSk7
Cit9CisKKworc3RhdGljIGNvbnN0IGNoYXIqIHN1YnJlc291cmNlQnl0ZXMgPSBSIkZUUFJFU09V
UkNFKAorSGVsbG8KKzxpbWcgc3JjPSJmdHA6Ly9leGFtcGxlLmNvbS93ZWJraXR0ZW4ucG5nIj4K
K0dvb2RieWUKKylGVFBSRVNPVVJDRSI7CisKK1RFU1QoV0tXZWJWaWV3LCBGVFBTdWJyZXNvdXJj
ZSkKK3sKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NO
YW1lOkAiQnVuZGxlUGFnZUNvbnNvbGVNZXNzYWdlIl07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAw
LCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgc2V0SW5qZWN0
ZWRCdW5kbGVDbGllbnQod2ViVmlldy5nZXQoKSk7CisgICAgCisgICAgY29uc29sZU1lc3NhZ2Vz
ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OjJdOworICAgIFt3ZWJWaWV3IHN5
bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6
c3VicmVzb3VyY2VCeXRlc11dOworCisgICAgRVhQRUNUX0VRKFtjb25zb2xlTWVzc2FnZXMgY291
bnRdLCAydSk7CisgICAgRVhQRUNUX1RSVUUoW2NvbnNvbGVNZXNzYWdlcy5nZXQoKVswXSBpc0Vx
dWFsVG9TdHJpbmc6QCJGVFAgVVJMcyBhcmUgZGlzYWJsZWQiXSk7CisgICAgRVhQRUNUX1RSVUUo
W2NvbnNvbGVNZXNzYWdlcy5nZXQoKVsxXSBpc0VxdWFsVG9TdHJpbmc6QCJDYW5ub3QgbG9hZCBp
bWFnZSBmdHA6Ly9leGFtcGxlLmNvbS93ZWJraXR0ZW4ucG5nIGR1ZSB0byBhY2Nlc3MgY29udHJv
bCBjaGVja3MuIl0pOworfQorCisvLyBSZWRpcmVjdCBmcm9tIEhUVFAgdG8gRlRQIGFscmVhZHkg
ZmFpbHMsIGJ1dCBsZXQncyBtYWtlIHN1cmUgaXQga2VlcHMgZmFpbGluZworVEVTVChXS1dlYlZp
ZXcsIEZUUFN1YnJlc291cmNlUmVkaXJlY3QpCit7CisgICAgSFRUUFNlcnZlciBodHRwU2VydmVy
KHsKKyAgICAgICAgeyAiL3dlYmtpdHRlbi5wbmciLCB7IDMwMSwge3sgIkxvY2F0aW9uIiwgImZ0
cDovL2V4YW1wbGUuY29tL3dlYmtpdHRlbi5wbmciIH19IH0gfSwKKyAgICB9KTsKKyAgICAgICAg
CisgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdD
b25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpA
IkJ1bmRsZVBhZ2VDb25zb2xlTWVzc2FnZSJdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIAorICAgIC8vIEFsbG93
IEhUVFAgdG8gcmVkaXJlY3QgYXdheSBmcm9tIEhUVFAgZm9yIHN1YnJlc291cmNlcyBmb3IgdGhl
IHB1cnBvc2VzIG9mIHRoaXMgdGVzdAorICAgIGF1dG8gcHJlZmVyZW5jZXMgPSAoX19icmlkZ2Ug
V0tQcmVmZXJlbmNlc1JlZilbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJlZmVyZW5jZXNdOwor
ICAgIFdLUHJlZmVyZW5jZXNTZXRSZXN0cmljdGVkSFRUUFJlc3BvbnNlQWNjZXNzKHByZWZlcmVu
Y2VzLCBmYWxzZSk7CisgICAgCisgICAgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQod2ViVmlldy5n
ZXQoKSk7CisgICAgCisgICAgY29uc29sZU1lc3NhZ2VzID0gW05TTXV0YWJsZUFycmF5IGFycmF5
V2l0aENhcGFjaXR5OjJdOworICAgIAorICAgIGF1dG8gaHRtbFN0cmluZyA9IG1ha2VTdHJpbmco
IjxpbWcgc3JjPSdodHRwOi8vMTI3LjAuMC4xOiIsIFN0cmluZzo6bnVtYmVyKGh0dHBTZXJ2ZXIu
cG9ydCgpKSwgIi93ZWJraXR0ZW4ucG5nJz4iKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5
TG9hZEhUTUxTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmh0bWxTdHJpbmcu
dXRmOCgpLmRhdGEoKV1dOworCisgICAgRVhQRUNUX0VRKFtjb25zb2xlTWVzc2FnZXMgY291bnRd
LCAydSk7CisgICAgRVhQRUNUX1RSVUUoW2NvbnNvbGVNZXNzYWdlcy5nZXQoKVswXSBpc0VxdWFs
VG9TdHJpbmc6QCJGVFAgVVJMcyBhcmUgZGlzYWJsZWQiXSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbQppbmRleCBkYTg4
N2RlOTc1NTkuLmViMDk1ZGUwMTBjOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbQpAQCAtMzMsNiArMzMsMjUgQEAKIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKIG5hbWVzcGFjZSBVdGlsIHsKIAorI2lmIFBMQVRGT1JNKE1B
QykKKworTlNTdHJpbmcgKnRvTlMoV0tTdHJpbmdSZWYgc3RyaW5nKQoreworICAgIHNpemVfdCBi
dWZmZXJTaXplID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKHN0cmluZykgKyAx
OworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8Y2hh
cltdPihidWZmZXJTaXplKTsKKyAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gV0tTdHJpbmdHZXRV
VEY4Q1N0cmluZyhzdHJpbmcsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7CisgICAgYnVmZmVy
W3N0cmluZ0xlbmd0aF0gPSAnXDAnOworCisgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRo
VVRGOFN0cmluZzpidWZmZXIuZ2V0KCldOworfQorCitOU1N0cmluZyAqdG9OUyhXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gc3RyaW5nKQoreworICAgIHJldHVybiB0b05TKHN0cmluZy5nZXQoKSk7
Cit9CisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCisKIHN0ZDo6c3RyaW5nIHRvU1REKE5TU3Ry
aW5nICpzdHJpbmcpCiB7CiAgICAgaWYgKCFzdHJpbmcpCg==
</data>
<flag name="review"
          id="462133"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="462157"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438768</attachid>
            <date>2021-09-20 18:45:13 -0700</date>
            <delta_ts>2021-09-22 09:52:53 -0700</delta_ts>
            <desc>PFL for EWS</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>28489</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYmU1YTdkYWI5ZWZiLi40N2Y2NGU1ZTQ5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MjEtMDktMjAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIERp
c2FibGUgRlRQLgorICAgICAgICA8cmRhcjovLzgxMTkzODYwPiBhbmQgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDQ3NworCisgICAgICAgIFJldmlld2VkIGJ5IEdl
b2ZmIEdhcmVuLgorCisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNl
c0V4cGVyaW1lbnRhbC55YW1sOgorCisgICAgICAgICogd3RmL1VSTC5jcHA6CisgICAgICAgIChX
VEY6OlVSTDo6cHJvdG9jb2xJc0luRlRQRmFtaWx5IGNvbnN0KToKKyAgICAgICAgKFdURjo6cHJv
dG9jb2xJc0luRlRQRmFtaWx5KToKKyAgICAgICAgKiB3dGYvVVJMLmg6CisKIDIwMjEtMDktMTgg
IE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9T
IEZhbWlseV0gRGVsZXRlIGxldHRlcnByZXNzIHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIGIv
U291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFs
LnlhbWwKaW5kZXggMDk4OTliZjUzMTg0Li5jMmFkZGE5OTNlY2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1s
CisrKyBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVy
aW1lbnRhbC55YW1sCkBAIC00MjEsNiArNDIxLDE4IEBAIEV4cG9zZVNwZWFrZXJzRW5hYmxlZDoK
ICAgICBXZWJDb3JlOgogICAgICAgZGVmYXVsdDogZmFsc2UKIAorRlRQRW5hYmxlZDoKKyAgdHlw
ZTogYm9vbAorICBodW1hblJlYWRhYmxlTmFtZTogIkZUUCBzdXBwb3J0IGVuYWJsZWQiCisgIGh1
bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIkZUUCBzdXBwb3J0IGVuYWJsZWQiCisgIGRlZmF1bHRW
YWx1ZToKKyAgICBXZWJDb3JlOgorICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICBXZWJLaXQ6Cisg
ICAgICBkZWZhdWx0OiBmYWxzZQorICAgIFdlYktpdExlZ2FjeToKKyAgICAgIGRlZmF1bHQ6IGZh
bHNlCisgICAgICAKICMgRklYTUU6IFRoaXMgc2VlbXMgdG8gYmUgYWNjaWRlbnRhbGx5IGVuYWJs
ZWQgZm9yIFdlYktpdDEgcmlnaHQgbm93IGR1ZSB0byB0aGUgb2xkIGNvZGUgdXNpbmcgdGhlCiAj
IHdyb25nIHByZWZlcmVuY2Uga2V5IGluIHNvbWUgcGxhY2VzLiBXZSBzaG91bGQgaWRlbnRpZnkg
d2hldGhlciBpdCByZWFsbHkgbWFrZXMgc2Vuc2UgdG8ga2VlcCB0aGlzCiAjIGVuYWJsZWQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwIGIvU291cmNlL1dURi93dGYvVVJMLmNw
cAppbmRleCBhN2M4ZDI0MWQzODcuLmYzZDhhYjAyMmEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvVVJMLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCkBAIC0zMjksNiArMzI5
LDExIEBAIGJvb2wgVVJMOjpwcm90b2NvbElzSmF2YVNjcmlwdCgpIGNvbnN0CiAgICAgcmV0dXJu
IFdURjo6cHJvdG9jb2xJc0phdmFTY3JpcHQoc3RyaW5nKCkpOwogfQogCitib29sIFVSTDo6cHJv
dG9jb2xJc0luRlRQRmFtaWx5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjpwcm90b2NvbElz
SW5GVFBGYW1pbHkoc3RyaW5nKCkpOworfQorCiBib29sIFVSTDo6cHJvdG9jb2xJcyhjb25zdCBj
aGFyKiBwcm90b2NvbCkgY29uc3QKIHsKICAgICBhc3NlcnRQcm90b2NvbElzR29vZChwcm90b2Nv
bCk7CkBAIC04NTYsNiArODYxLDE3IEBAIGJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoU3RyaW5n
VmlldyBzdHJpbmcpCiAgICAgcmV0dXJuIHByb3RvY29sSXNJbnRlcm5hbChzdHJpbmcsICJqYXZh
c2NyaXB0Iik7CiB9CiAKK2Jvb2wgcHJvdG9jb2xJc0luRlRQRmFtaWx5KFN0cmluZ1ZpZXcgdXJs
KQoreworICAgIGF1dG8gbGVuZ3RoID0gdXJsLmxlbmd0aCgpOworICAgIC8vIERvIHRoZSBjb21w
YXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBvYmplY3QuCisgICAgcmV0dXJuIGxl
bmd0aCA+PSA0CisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzBdLCAn
ZicpCisgICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzFdLCAndCcpCisg
ICAgICAgICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzJdLCAncCcpCisgICAgICAg
ICYmICh1cmxbM10gPT0gJzonIHx8IChpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKHVybFszXSwg
J3MnKSAmJiBsZW5ndGggPj0gNSAmJiB1cmxbNF0gPT0gJzonKSk7Cit9CisKIGJvb2wgcHJvdG9j
b2xJc0luSFRUUEZhbWlseShTdHJpbmdWaWV3IHVybCkKIHsKICAgICBhdXRvIGxlbmd0aCA9IHVy
bC5sZW5ndGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5oIGIvU291cmNlL1dU
Ri93dGYvVVJMLmgKaW5kZXggYTBjY2RjYzY0NjBhLi5lNTg2OTAyNmVjYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1VSTC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5oCkBAIC0xMzYs
NiArMTM2LDcgQEAgcHVibGljOgogICAgIGJvb2wgcHJvdG9jb2xJc0RhdGEoKSBjb25zdCB7IHJl
dHVybiBwcm90b2NvbElzKCJkYXRhIik7IH0KICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBw
cm90b2NvbElzQWJvdXQoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90
b2NvbElzSmF2YVNjcmlwdCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHBy
b3RvY29sSXNJbkZUUEZhbWlseSgpIGNvbnN0OwogICAgIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZh
bWlseSgpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzTG9jYWxGaWxlKCkg
Y29uc3Q7CiAgICAgYm9vbCBjYW5ub3RCZUFCYXNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9jYW5u
b3RCZUFCYXNlVVJMOyB9CkBAIC0yNTksNiArMjYwLDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIGNv
bnN0IFVSTCYgYWJvdXRTcmNEb2NVUkwoKTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJv
dG9jb2xJcyhTdHJpbmdWaWV3IHVybCwgY29uc3QgY2hhciogcHJvdG9jb2wpOwogV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoU3RyaW5nVmlldyB1cmwpOworV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJc0luRlRQRmFtaWx5KFN0cmluZ1ZpZXcgdXJs
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHByb3RvY29sSXNJbkhUVFBGYW1pbHkoU3RyaW5n
VmlldyB1cmwpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4g
ZGVmYXVsdFBvcnRGb3JQcm90b2NvbChTdHJpbmdWaWV3IHByb3RvY29sKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
YjFiOWRlYjZiNWE1Li5kMWMxOTYzYzVmZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIw
MjEtMDktMjAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIERp
c2FibGUgRlRQLgorICAgICAgICA8cmRhcjovLzgxMTkzODYwPiBhbmQgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDQ3NworCisgICAgICAgIFJldmlld2VkIGJ5IEdl
b2ZmIEdhcmVuLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0cy4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0xvYWQ6OnN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OndpbGxQZXJm
b3JtSFRUUFJlZGlyZWN0aW9uKToKKyAgICAgICAgCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6aW5p
dGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZnRwRW5hYmxlZCBj
b25zdCk6CisgICAgICAgIAorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgIAorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3Mp
OgorCiAyMDIxLTA5LTE5ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CiAgICAgICAgIFRlYWNoIGBXZWJLaXQ6OmNyZWF0ZVNoYXJlYWJsZUJpdG1hcGAgdG8gc25hcHNo
b3QgdmlkZW8gZWxlbWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZC5jcHAKaW5kZXggMmFhMDM3NzJmYTU5Li5hYWY2YjExZDNlZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBAIC01OCw4ICs1OCwxOCBAQCBO
ZXR3b3JrTG9hZDo6TmV0d29ya0xvYWQoTmV0d29ya0xvYWRDbGllbnQmIGNsaWVudCwgQmxvYlJl
Z2lzdHJ5SW1wbCogYmxvYlJlZ2lzdAogCiB2b2lkIE5ldHdvcmtMb2FkOjpzdGFydCgpCiB7Ci0g
ICAgaWYgKG1fdGFzaykKLSAgICAgICAgbV90YXNrLT5yZXN1bWUoKTsKKyAgICBpZiAoIW1fdGFz
aykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX25ldHdvcmtQcm9jZXNzLT5mdHBFbmFi
bGVkKCkgJiYgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0luRlRQRmFtaWx5
KCkpIHsKKyAgICAgICAgbV90YXNrLT5jbGVhckNsaWVudCgpOworICAgICAgICBtX3Rhc2sgPSBu
dWxscHRyOworICAgICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MgZW1wdHlNZXRyaWNz
OworICAgICAgICBkaWRDb21wbGV0ZVdpdGhFcnJvcihSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21h
aW5XZWJLaXRJbnRlcm5hbCwgMCwgdXJsKCksICJGVFAgVVJMcyBhcmUgZGlzYWJsZWQiX3MsIFJl
c291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSwgZW1wdHlNZXRyaWNzKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIG1fdGFzay0+cmVzdW1lKCk7CiB9CiAKIHZvaWQgTmV0
d29ya0xvYWQ6OnN0YXJ0V2l0aFNjaGVkdWxpbmcoKQpAQCAtMTgxLDYgKzE5MSwxNyBAQCB2b2lk
IE5ldHdvcmtMb2FkOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihSZXNvdXJjZVJlc3BvbnNl
JiYgcmVkaXJlY3RSZXNwb25zZQogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAg
QVNTRVJUKCFtX3JlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpOwogCisgICAgaWYgKCFtX25ldHdv
cmtQcm9jZXNzLT5mdHBFbmFibGVkKCkgJiYgcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5GVFBG
YW1pbHkoKSkgeworICAgICAgICBtX3Rhc2stPmNsZWFyQ2xpZW50KCk7CisgICAgICAgIG1fdGFz
ayA9IG51bGxwdHI7CisgICAgICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBlbXB0eU1l
dHJpY3M7CisgICAgICAgIGRpZENvbXBsZXRlV2l0aEVycm9yKFJlc291cmNlRXJyb3IgeyBlcnJv
ckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwoKSwgIkZUUCBVUkxzIGFyZSBkaXNhYmxlZCJf
cywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9LCBlbXB0eU1ldHJpY3MpOwor
ICAgICAgICAKKyAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBy
ZWRpcmVjdFJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdv
cmspOwogICAgIG1fcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCmluZGV4IGMzMzMyMDdhNzY2NS4uOTZhYmM5ZjdhNjI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzQ2LDYgKzM0
Niw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmCiAKICAgICBzZXRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEVuYWJsZWQocGFyYW1ldGVycy5lbmFibGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCk7
CiAgICAgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGUocGFyYW1ldGVycy5lbmFi
bGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZSk7CisgICAgbV9mdHBFbmFibGVkID0g
cGFyYW1ldGVycy5mdHBFbmFibGVkOwogCiAgICAgZm9yIChhdXRvJiBzdXBwbGVtZW50IDogbV9z
dXBwbGVtZW50cy52YWx1ZXMoKSkKICAgICAgICAgc3VwcGxlbWVudC0+aW5pdGlhbGl6ZShwYXJh
bWV0ZXJzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aAppbmRleCBhNjRhMDFmZjRmYmQuLjM0MzhkMDhhNjJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMzkwLDYgKzM5MCw4IEBAIHB1Ymxp
YzoKICAgICBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eSYgcnRjRGF0YUNoYW5uZWxQ
cm94eSgpOwogI2VuZGlmCiAKKyAgICBib29sIGZ0cEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2Z0cEVuYWJsZWQ7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5l
dHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAK
QEAgLTYxNSw2ICs2MTcsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX3ByaXZhdGVDbGlja01l
YXN1cmVtZW50RW5hYmxlZCB7IHRydWUgfTsKICAgICBib29sIG1fcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnREZWJ1Z01vZGVFbmFibGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZnRwRW5hYmxlZCB7
IGZhbHNlIH07CiAKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWY8TmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyPj4gbV9zdG9yYWdlTWFuYWdlcnM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAppbmRleCA4ZmU4MWI0YzFmNjkuLjBhNjM1NTUzMDIzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTcyLDYgKzcyLDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIAogICAgIGVuY29kZXIgPDwgZW5hYmxlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CiAgICAg
ZW5jb2RlciA8PCBlbmFibGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZTsKKyAgICBl
bmNvZGVyIDw8IGZ0cEVuYWJsZWQ7CiAgICAgZW5jb2RlciA8PCB3ZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVyczsKIH0KIApAQCAtMTQ2LDYgKzE0Nyw4IEBAIGJvb2wgTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE5ldHdvcmtQcm9j
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5l
bmFibGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5mdHBFbmFibGVkKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnM+PiB3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczsKICAgICBkZWNvZGVy
ID4+IHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oCmluZGV4IGQ4ZDljZmQ2NmQ1YS4uN2IzYjMyN2I4MzIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCkBAIC04OCw2ICs4OCw3IEBAIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyB7CiAKICAgICBib29sIGVuYWJsZVByaXZhdGVDbGlja01lYXN1cmVtZW50
IHsgdHJ1ZSB9OwogICAgIGJvb2wgZW5hYmxlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01v
ZGUgeyBmYWxzZSB9OworICAgIGJvb2wgZnRwRW5hYmxlZCB7IGZhbHNlIH07CiAKICAgICBWZWN0
b3I8V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+IHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UG9vbENvY29hLm1tCmluZGV4IGUxN2RmZWVhNzc1OC4uMjhhODJjOWRiMjkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0K
QEAgLTU2Nyw2ICs1NjcsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxp
emVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYQogICAgIE5TU3RyaW5n
ICpmb3JtYXQgPSBAIldlYktpdEV4cGVyaW1lbnRhbCVAIjsKICNlbmRpZgogICAgIHBhcmFtZXRl
cnMuZW5hYmxlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGUgPSBbZGVmYXVsdHMgYm9v
bEZvcktleTpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpmb3JtYXQsIFdlYlByZWZlcmVuY2Vz
S2V5Ojpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZUVuYWJsZWRLZXkoKS5jcmVhdGVD
RlN0cmluZygpLmdldCgpXV07CisgICAgCisgICAgcGFyYW1ldGVycy5mdHBFbmFibGVkID0gW2Rl
ZmF1bHRzIG9iamVjdEZvcktleTpXZWJQcmVmZXJlbmNlc0tleTo6ZnRwRW5hYmxlZEtleSgpXSAm
JiBbZGVmYXVsdHMgYm9vbEZvcktleTpXZWJQcmVmZXJlbmNlc0tleTo6ZnRwRW5hYmxlZEtleSgp
XTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCgp
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzRh
OTQyYzU1YzNjLi5iZjM4YjQ1NmNlYzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMS0wOS0yMCAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgRGlzYWJsZSBGVFAuCisgICAgICAg
IDxyZGFyOi8vODExOTM4NjA+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMwNDc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQnVuZGxlUGFn
ZUNvbnNvbGVNZXNzYWdlLm1tOiBBZGRlZC4KKyAgICAgICAgKHdpbGxBZGRNZXNzYWdlVG9Db25z
b2xlQ2FsbGJhY2spOgorICAgICAgICAoLVtCdW5kbGVQYWdlQ29uc29sZU1lc3NhZ2Ugd2ViUHJv
Y2Vzc1BsdWdJbjpkaWRDcmVhdGVCcm93c2VyQ29udGV4dENvbnRyb2xsZXI6XSk6CisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZUUC5tbTogQWRkZWQuCisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpkaWRSZWNlaXZlUGFnZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1BsYXRmb3JtVXRpbGl0aWVzLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0
Zm9ybVV0aWxpdGllc0NvY29hLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6dG9O
Uyk6CisKIDIwMjEtMDktMjAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtGbGF0cGFrIFNES10gTW92ZSB0b29sY2hhaW5zIHRvIFVzZXJGbGF0cGFr
IGFuZCBpbXByb3ZlIFNESyB1cGdyYWRlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybVV0aWxpdGllcy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxp
dGllcy5oCmluZGV4IDU2MjY4MDJiYzAzNy4uZTg1NWFkOWIyOTBkIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCkBAIC02Niw2ICs2NiwxMSBAQCBib29sIGlzS2V5RG93
bihXS05hdGl2ZUV2ZW50UHRyKTsKIHN0ZDo6c3RyaW5nIHRvU1REKFdLU3RyaW5nUmVmKTsKIHN0
ZDo6c3RyaW5nIHRvU1REKFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPik7CiAKKyNpZiBQTEFURk9S
TShNQUMpCitOU1N0cmluZyAqdG9OUyhXS1N0cmluZ1JlZik7CitOU1N0cmluZyAqdG9OUyhXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4pOworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKwogV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IHRvV0soY29uc3QgY2hhciogdXRmOFN0cmluZyk7CiAKICNlbmRp
ZiAvLyBXS19IQVZFX0NfU1BJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM4ZjY4MjI4OWFh
OC4uZGRlOTI1ZmFmZjljIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzQ4LDcgKzM0OCw5
IEBACiAJCTUxNzE0RUI0MUNGOEM3OEMwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFu
dXAtMS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNzE0RUIyMUNGOEM3NjEwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFu
dXAtMS5odG1sICovOyB9OwogCQk1MTcxNEVCNTFDRjhDNzhDMDA0NzIzQzQgLyogV2ViUHJvY2Vz
c0tpbGxJREJDbGVhbnVwLTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxNEVCMzFDRjhDNzYxMDA0NzIzQzQgLyogV2ViUHJvY2Vz
c0tpbGxJREJDbGVhbnVwLTIuaHRtbCAqLzsgfTsKIAkJNTE3MTRFQjgxQ0Y4Q0ExNzAwNDcyM0M0
IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzE0RUI2MUNGOEM3QTQwMDQ3MjNDNCAvKiBXZWJQcm9j
ZXNzS2lsbElEQkNsZWFudXAubW0gKi87IH07CisJCTUxNzVDN0EyMjZGODc2MjMwMDAzQUY1QyAv
KiBCdW5kbGVQYWdlQ29uc29sZU1lc3NhZ2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTc1QzdBMTI2Rjg3NjIzMDAwM0FGNUMgLyogQnVuZGxlUGFn
ZUNvbnNvbGVNZXNzYWdlLm1tICovOyB9OwogCQk1MTdFN0UwNDE1MTExOUMxMDBEMEIwMDggLyog
TWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3RTdFMDMxNTEx
MTg3NTAwRDBCMDA4IC8qIE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5odG1sICovOyB9OworCQk1MTgxOUYyQTI2RUFDOTgzMDBFNDczNzUgLyogRlRQLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4MTlGMjkyNkVBQzk4
MjAwRTQ3Mzc1IC8qIEZUUC5tbSAqLzsgfTsKIAkJNTE4MjBBNEQyMkY0RUU3RjAwREYwQTAxIC8q
IEphdmFzY3JpcHRVUkxOYXZpZ2F0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE4MjBBNEMyMkY0RUU3NzAwREYwQTAxIC8qIEphdmFzY3JpcHRV
UkxOYXZpZ2F0aW9uLm1tICovOyB9OwogCQk1MTgyQzIyRTFGMkJDRTU0MDA1OUJBN0MgLyogV0tV
UkxTY2hlbWVIYW5kbGVyLWxlYWtzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE4MkMyMkQxRjJCQ0I0MTAwNTlCQTdDIC8qIFdLVVJMU2NoZW1lSGFu
ZGxlci1sZWFrcy5tbSAqLzsgfTsKIAkJNTE4QzExNTMyMDVCMDUwNDAwMUZGNEFFIC8qIFByb2Nl
c3NTd2FwT25OYXZpZ2F0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE4QzExNTIyMDVCMDRGOTAwMUZGNEFFIC8qIFByb2Nlc3NTd2FwT25OYXZp
Z2F0aW9uLm1tICovOyB9OwpAQCAtMjE5Miw4ICsyMTk0LDEwIEBACiAJCTUxNzE0RUIzMUNGOEM3
NjEwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMi5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBwYXRoID0gIldlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0yLmh0bWwiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTcxNEVCNjFDRjhDN0E0MDA0NzIzQzQgLyogV2Vi
UHJvY2Vzc0tpbGxJREJDbGVhbnVwLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTcxNEVCOTFEMDg3NDE2MDA0NzIzQzQgLyogQ3Jvc3NUaHJlYWRUYXNrLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyb3NzVGhyZWFkVGFzay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNzVDN0ExMjZGODc2MjMwMDAzQUY1
QyAvKiBCdW5kbGVQYWdlQ29uc29sZU1lc3NhZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBCdW5kbGVQYWdlQ29uc29sZU1lc3NhZ2UubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxN0U3REZCMTUxMTBFQTYwMEQwQjAwOCAvKiBNZW1vcnlDYWNo
ZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVs
ZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0U3RTAzMTUxMTE4NzUw
MEQwQjAwOCAvKiBNZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTgx
OUYyOTI2RUFDOTgyMDBFNDczNzUgLyogRlRQLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRlRQLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTgy
MEE0QzIyRjRFRTc3MDBERjBBMDEgLyogSmF2YXNjcmlwdFVSTE5hdmlnYXRpb24ubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBKYXZhc2NyaXB0VVJMTmF2aWdhdGlvbi5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE4MkMyMkQxRjJCQ0I0MTAwNTlCQTdDIC8qIFdLVVJMU2NoZW1l
SGFuZGxlci1sZWFrcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9ICJXS1VSTFNjaGVtZUhhbmRs
ZXItbGVha3MubW0iOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MThDMTE1MjIwNUIw
NEY5MDAxRkY0QUUgLyogUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM0MzEsNiArMzQzNSw3IEBACiAJCQkJN0E4OUJC
NjUyMzMxNjM1RDAwNDJDQjFFIC8qIEJ1bmRsZUZvcm1EZWxlZ2F0ZS5tbSAqLywKIAkJCQk3QTg5
QkI2NjIzMzE2MzVEMDA0MkNCMUUgLyogQnVuZGxlRm9ybURlbGVnYXRlUGx1Z0luLm1tICovLAog
CQkJCTdBODlCQjY5MjMzMTY1NjUwMDQyQ0IxRSAvKiBCdW5kbGVGb3JtRGVsZWdhdGVQcm90b2Nv
bC5oICovLAorCQkJCTUxNzVDN0ExMjZGODc2MjMwMDAzQUY1QyAvKiBCdW5kbGVQYWdlQ29uc29s
ZU1lc3NhZ2UubW0gKi8sCiAJCQkJQTEzRUJCQUMxQjg3NDM2RjAwMDk3MTEwIC8qIEJ1bmRsZVBh
cmFtZXRlcnMubW0gKi8sCiAJCQkJQTEzRUJCQUUxQjg3NDM2RjAwMDk3MTEwIC8qIEJ1bmRsZVBh
cmFtZXRlcnNQbHVnSW4ubW0gKi8sCiAJCQkJMzdBNzA5QUQxRTNFQThCMDAwQ0E1OTY5IC8qIEJ1
bmRsZVJhbmdlSGFuZGxlLm1tICovLApAQCAtMzQ4Miw2ICszNDg3LDcgQEAKIAkJCQk2QjI1QTc1
MTI1REM4RDRFMDA3MDc0NEYgLyogRXZlbnRBdHRyaWJ1dGlvbi5tbSAqLywKIAkJCQlDREEyOUIy
ODIwRkQyQTk5MDBGMTVDRUQgLyogRXhpdEZ1bGxzY3JlZW5PbkVudGVyUGlQLm1tICovLAogCQkJ
CTFEMTJCRUJGMjQ1QkVGODUwMDRDMEI3QSAvKiBFeGl0UGlQT25TdXNwZW5kVmlkZW9FbGVtZW50
Lm1tICovLAorCQkJCTUxODE5RjI5MjZFQUM5ODIwMEU0NzM3NSAvKiBGVFAubW0gKi8sCiAJCQkJ
MkQ4MTA0Q0IxQkVDMTNFNzAwMjBEQTQ2IC8qIEZpbmRJblBhZ2UubW0gKi8sCiAJCQkJNTEyNDJD
RDQyMzc0RTYxRTAwRUVEOUMxIC8qIEZpbmRJblBhZ2VBUEkubW0gKi8sCiAJCQkJMTE4MTUzNDcy
MjA4QkFERjAwQjJDQ0QyIC8qIEZpcnN0VmlzdWFsbHlOb25FbXB0eU1pbGVzdG9uZS5tbSAqLywK
QEAgLTU4MjgsNiArNTgzNCw3IEBACiAJCQkJN0NDRTdGMTQxQTQxMUFFNjAwNDQ3QzRDIC8qIFNo
b3VsZEtlZXBDdXJyZW50QmFja0ZvcndhcmRMaXN0SXRlbUluTGlzdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkzN0JDQTYxQzFCNTk2QkE5MDAyMDEyQ0EgLyogU2hvdWxkT3BlbkV4dGVybmFsVVJM
c0luTmV3V2luZG93QWN0aW9ucy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMEM1MUQwQTY1
NDYwMEZFQkNGMyAvKiBTaHJpbmtUb0ZpdC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxODE5RjJB
MjZFQUM5ODMwMEU0NzM3NSAvKiBGVFAubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VDRDFB
NDExQTdFMDA0NDdDNEMgLyogU2ltcGxpZnlNYXJrdXAubW0gaW4gU291cmNlcyAqLywKIAkJCQlD
MTQ5RDU1MDI0MkU5OERGMDAzRUJCMTIgLyogU2xlZXBEaXNhYmxlci5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTJERkY3QjZEMURBNDg3QUYwMDgxNDYxNCAvKiBTbmFwc2hvdFN0b3JlLm1tIGluIFNv
dXJjZXMgKi8sCkBAIC02MDY0LDYgKzYwNzEsNyBAQAogCQkJCTJEM0NBM0E4MjIxREY0QjQwMDg4
RTgwMyAvKiBQYWdlT3ZlcmxheVBsdWdpbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0NEM3QTAw
MjBGOUVFQkYwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuUGx1Z0luLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTEzRUJCQUIxQjg3NDM0NjAwMDk3MTEwIC8qIFBsYXRmb3JtVXRpbGl0aWVzQ29j
b2EubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTc1QzdBMjI2Rjg3NjIzMDAwM0FGNUMgLyogQnVu
ZGxlUGFnZUNvbnNvbGVNZXNzYWdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0RjgxQ0YxQkRG
RkQ1MzAwNEU2NzJFIC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5UGx1Z0luLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTEyRERDMDIxRTgzN0MyNDAwQ0Y2Q0FFIC8qIFJlbmRlcmVkSW1hZ2VXaXRoT3B0
aW9uc1BsdWdJbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUyNDUxNzg3MjFCOUY1N0IwMDgyQ0Iz
NCAvKiBSZW5kZXJpbmdQcm9ncmVzc1BsdWdJbi5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5kbGVQYWdlQ29uc29s
ZU1lc3NhZ2UubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0J1bmRs
ZVBhZ2VDb25zb2xlTWVzc2FnZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjRjY2EwMWQ2YWJlNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQnVuZGxlUGFnZUNvbnNvbGVNZXNzYWdlLm1tCkBAIC0wLDAg
KzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIFBMQVRGT1JN
KE1BQykKKworI2ltcG9ydCA8V2ViS2l0L1dLQnVuZGxlUGFnZS5oPgorI2ltcG9ydCA8V2ViS2l0
L1dLQnVuZGxlUGFnZVVJQ2xpZW50Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4K
KyNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW4uaD4KKyNpbXBvcnQgPFdlYktpdC9X
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmg+CisKK3Zv
aWQgd2lsbEFkZE1lc3NhZ2VUb0NvbnNvbGVDYWxsYmFjayhXS0J1bmRsZVBhZ2VSZWYgcGFnZSwg
V0tTdHJpbmdSZWYgbWVzc2FnZSwgdWludDMyX3QgbGluZU51bWJlciwgY29uc3Qgdm9pZCAqKQor
eworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNvbnNvbGVNZXNzYWdlIikpOworICAgIFdLQnVu
ZGxlUGFnZVBvc3RNZXNzYWdlKHBhZ2UsIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlKTsKK30K
KworQGludGVyZmFjZSBCdW5kbGVQYWdlQ29uc29sZU1lc3NhZ2UgOiBOU09iamVjdCA8V0tXZWJQ
cm9jZXNzUGx1Z0luPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gQnVuZGxlUGFnZUNvbnNvbGVN
ZXNzYWdlCisKKy0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJbjooV0tXZWJQcm9jZXNzUGx1Z0luQ29u
dHJvbGxlciAqKXBsdWdJbkNvbnRyb2xsZXIgZGlkQ3JlYXRlQnJvd3NlckNvbnRleHRDb250cm9s
bGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKilicm93c2Vy
Q29udGV4dENvbnRyb2xsZXIKK3sKKyAgICBXS0J1bmRsZVBhZ2VVSUNsaWVudFY0IGNsaWVudDsK
KyAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkpOworICAgIGNsaWVudC5iYXNl
LnZlcnNpb24gPSA0OworICAgIGNsaWVudC53aWxsQWRkTWVzc2FnZVRvQ29uc29sZSA9IHdpbGxB
ZGRNZXNzYWdlVG9Db25zb2xlQ2FsbGJhY2s7CisgICAgV0tCdW5kbGVQYWdlU2V0VUlDbGllbnQo
W2Jyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfYnVuZGxlUGFnZVJlZl0sICZjbGllbnQuYmFzZSk7
Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRlRQLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GVFAubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi4wMTEwNTEyYzA5MzIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZUUC5tbQpAQCAtMCwwICsxLDE0NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgUExBVEZPUk0oTUFDKQorCisjaW1w
b3J0ICJIVFRQU2VydmVyLmgiCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9y
dCAiVGVzdC5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAi
VGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5o
IgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJL
aXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dl
YlZpZXdQcml2YXRlRm9yVGVzdGluZy5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2VicGFnZVByZWZl
cmVuY2VzUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGlj
IFJldGFpblB0cjxOU011dGFibGVBcnJheT4gY29uc29sZU1lc3NhZ2VzOworCitzdGF0aWMgdm9p
ZCBkaWRSZWNlaXZlUGFnZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tQYWdlUmVmLCBXS1N0
cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2UsIGNvbnN0IHZvaWQqKQorewor
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ29uc29s
ZU1lc3NhZ2UiKSkKKyAgICAgICAgW2NvbnNvbGVNZXNzYWdlcyBhZGRPYmplY3Q6VXRpbDo6dG9O
UygoV0tTdHJpbmdSZWYpbWVzc2FnZSldOworfQorCitzdGF0aWMgdm9pZCBzZXRJbmplY3RlZEJ1
bmRsZUNsaWVudChXS1dlYlZpZXcgKndlYlZpZXcpCit7CisgICAgV0tQYWdlSW5qZWN0ZWRCdW5k
bGVDbGllbnRWMCBpbmplY3RlZEJ1bmRsZUNsaWVudCA9IHsKKyAgICAgICAgeyAwLCBudWxscHRy
IH0sCisgICAgICAgIGRpZFJlY2VpdmVQYWdlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSwKKyAg
ICAgICAgbnVsbHB0ciwKKyAgICB9OworICAgIFdLUGFnZVNldFBhZ2VJbmplY3RlZEJ1bmRsZUNs
aWVudCh3ZWJWaWV3Ll9wYWdlUmVmRm9yVHJhbnNpdGlvblRvV0tXZWJWaWV3LCAmaW5qZWN0ZWRC
dW5kbGVDbGllbnQuYmFzZSk7Cit9CisKK1RFU1QoV0tXZWJWaWV3LCBGVFBNYWluUmVzb3VyY2Up
Cit7CisgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFt
ZTpAIkJ1bmRsZVBhZ2VDb25zb2xlTWVzc2FnZSJdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwg
ODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIHNldEluamVjdGVk
QnVuZGxlQ2xpZW50KHdlYlZpZXcuZ2V0KCkpOworICAgIAorICAgIGNvbnNvbGVNZXNzYWdlcyA9
IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eToyXTsKKyAKKyAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiZnRwOi8vZXhhbXBsZS5jb20vbWFpbi5odG1sIl1dXTsKKyAgICBbd2ViVmlldyBfdGVz
dF93YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbl07CisKKyAgICBFWFBFQ1RfRVEo
W2NvbnNvbGVNZXNzYWdlcyBjb3VudF0sIDF1KTsKKyAgICBFWFBFQ1RfVFJVRShbY29uc29sZU1l
c3NhZ2VzLmdldCgpWzBdIGlzRXF1YWxUb1N0cmluZzpAIkZUUCBVUkxzIGFyZSBkaXNhYmxlZCJd
KTsKK30KKworVEVTVChXS1dlYlZpZXcsIEZUUE1haW5SZXNvdXJjZVJlZGlyZWN0KQoreworICAg
IEhUVFBTZXJ2ZXIgaHR0cFNlcnZlcih7CisgICAgICAgIHsgIi9mdHBfcmVkaXJlY3QiLCB7IDMw
MSwge3sgIkxvY2F0aW9uIiwgImZ0cDovL2V4YW1wbGUuY29tLyIgfX0gfSB9LAorICAgIH0pOwor
ICAgIAorICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05h
bWU6QCJCdW5kbGVQYWdlQ29uc29sZU1lc3NhZ2UiXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBzZXRJbmplY3Rl
ZEJ1bmRsZUNsaWVudCh3ZWJWaWV3LmdldCgpKTsKKyAgICAKKyAgICBjb25zb2xlTWVzc2FnZXMg
PSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6Ml07CisKKyAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpodHRwU2VydmVyLnJlcXVlc3QoIi9mdHBfcmVkaXJlY3QiKV07CisgICAgW3dl
YlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25dOworCisgICAg
RVhQRUNUX0VRKFtjb25zb2xlTWVzc2FnZXMgY291bnRdLCAxdSk7CisgICAgRVhQRUNUX1RSVUUo
W2NvbnNvbGVNZXNzYWdlcy5nZXQoKVswXSBpc0VxdWFsVG9TdHJpbmc6QCJGVFAgVVJMcyBhcmUg
ZGlzYWJsZWQiXSk7Cit9CisKKworc3RhdGljIGNvbnN0IGNoYXIqIHN1YnJlc291cmNlQnl0ZXMg
PSBSIkZUUFJFU09VUkNFKAorSGVsbG8KKzxpbWcgc3JjPSJmdHA6Ly9leGFtcGxlLmNvbS93ZWJr
aXR0ZW4ucG5nIj4KK0dvb2RieWUKKylGVFBSRVNPVVJDRSI7CisKK1RFU1QoV0tXZWJWaWV3LCBG
VFBTdWJyZXNvdXJjZSkKK3sKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0
aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0
UGx1Z0luQ2xhc3NOYW1lOkAiQnVuZGxlUGFnZUNvbnNvbGVNZXNzYWdlIl07CisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dS
ZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7Cisg
ICAgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQod2ViVmlldy5nZXQoKSk7CisgICAgCisgICAgY29u
c29sZU1lc3NhZ2VzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OjJdOworICAg
IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0
aFVURjhTdHJpbmc6c3VicmVzb3VyY2VCeXRlc11dOworCisgICAgRVhQRUNUX0VRKFtjb25zb2xl
TWVzc2FnZXMgY291bnRdLCAydSk7CisgICAgRVhQRUNUX1RSVUUoW2NvbnNvbGVNZXNzYWdlcy5n
ZXQoKVswXSBpc0VxdWFsVG9TdHJpbmc6QCJGVFAgVVJMcyBhcmUgZGlzYWJsZWQiXSk7CisgICAg
RVhQRUNUX1RSVUUoW2NvbnNvbGVNZXNzYWdlcy5nZXQoKVsxXSBpc0VxdWFsVG9TdHJpbmc6QCJD
YW5ub3QgbG9hZCBpbWFnZSBmdHA6Ly9leGFtcGxlLmNvbS93ZWJraXR0ZW4ucG5nIGR1ZSB0byBh
Y2Nlc3MgY29udHJvbCBjaGVja3MuIl0pOworfQorCisvLyBSZWRpcmVjdCBmcm9tIEhUVFAgdG8g
RlRQIGFscmVhZHkgZmFpbHMsIGJ1dCBsZXQncyBtYWtlIHN1cmUgaXQga2VlcHMgZmFpbGluZwor
VEVTVChXS1dlYlZpZXcsIEZUUFN1YnJlc291cmNlUmVkaXJlY3QpCit7CisgICAgSFRUUFNlcnZl
ciBodHRwU2VydmVyKHsKKyAgICAgICAgeyAiL3dlYmtpdHRlbi5wbmciLCB7IDMwMSwge3sgIkxv
Y2F0aW9uIiwgImZ0cDovL2V4YW1wbGUuY29tL3dlYmtpdHRlbi5wbmciIH19IH0gfSwKKyAgICB9
KTsKKyAgICAgICAgCisgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9
IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJ
bkNsYXNzTmFtZTpAIkJ1bmRsZVBhZ2VDb25zb2xlTWVzc2FnZSJdOworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1h
a2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIAor
ICAgIC8vIEFsbG93IEhUVFAgdG8gcmVkaXJlY3QgYXdheSBmcm9tIEhUVFAgZm9yIHN1YnJlc291
cmNlcyBmb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgdGVzdAorICAgIGF1dG8gcHJlZmVyZW5jZXMg
PSAoX19icmlkZ2UgV0tQcmVmZXJlbmNlc1JlZilbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJl
ZmVyZW5jZXNdOworICAgIFdLUHJlZmVyZW5jZXNTZXRSZXN0cmljdGVkSFRUUFJlc3BvbnNlQWNj
ZXNzKHByZWZlcmVuY2VzLCBmYWxzZSk7CisgICAgCisgICAgc2V0SW5qZWN0ZWRCdW5kbGVDbGll
bnQod2ViVmlldy5nZXQoKSk7CisgICAgCisgICAgY29uc29sZU1lc3NhZ2VzID0gW05TTXV0YWJs
ZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OjJdOworICAgIAorICAgIGF1dG8gaHRtbFN0cmluZyA9
IG1ha2VTdHJpbmcoIjxpbWcgc3JjPSdodHRwOi8vMTI3LjAuMC4xOiIsIFN0cmluZzo6bnVtYmVy
KGh0dHBTZXJ2ZXIucG9ydCgpKSwgIi93ZWJraXR0ZW4ucG5nJz4iKTsKKyAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5n
Omh0bWxTdHJpbmcudXRmOCgpLmRhdGEoKV1dOworCisgICAgRVhQRUNUX0VRKFtjb25zb2xlTWVz
c2FnZXMgY291bnRdLCAydSk7CisgICAgRVhQRUNUX1RSVUUoW2NvbnNvbGVNZXNzYWdlcy5nZXQo
KVswXSBpc0VxdWFsVG9TdHJpbmc6QCJGVFAgVVJMcyBhcmUgZGlzYWJsZWQiXSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2Nv
YS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5t
bQppbmRleCBkYTg4N2RlOTc1NTkuLmViMDk1ZGUwMTBjOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbQpAQCAtMzMsNiArMzMs
MjUgQEAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIG5hbWVzcGFjZSBVdGlsIHsKIAorI2lm
IFBMQVRGT1JNKE1BQykKKworTlNTdHJpbmcgKnRvTlMoV0tTdHJpbmdSZWYgc3RyaW5nKQorewor
ICAgIHNpemVfdCBidWZmZXJTaXplID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXpl
KHN0cmluZykgKyAxOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFs
bG9jQ2hlY2s8Y2hhcltdPihidWZmZXJTaXplKTsKKyAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0g
V0tTdHJpbmdHZXRVVEY4Q1N0cmluZyhzdHJpbmcsIGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7
CisgICAgYnVmZmVyW3N0cmluZ0xlbmd0aF0gPSAnXDAnOworCisgICAgcmV0dXJuIFtOU1N0cmlu
ZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpidWZmZXIuZ2V0KCldOworfQorCitOU1N0cmluZyAqdG9O
UyhXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3RyaW5nKQoreworICAgIHJldHVybiB0b05TKHN0
cmluZy5nZXQoKSk7Cit9CisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCisKIHN0ZDo6c3RyaW5n
IHRvU1REKE5TU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgaWYgKCFzdHJpbmcpCg==
</data>
<flag name="commit-queue"
          id="462252"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438959</attachid>
            <date>2021-09-22 09:52:53 -0700</date>
            <delta_ts>2021-09-22 10:58:54 -0700</delta_ts>
            <desc>PFL for EWS #2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>29307</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggN2JlMTlmMDJlOTljLi4zMWY0YjE4NWJjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MjEtMDktMjEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIERp
c2FibGUgRlRQLgorICAgICAgICA8cmRhcjovLzgxMTkzODYwPiBhbmQgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDQ3NworCisgICAgICAgIFJldmlld2VkIGJ5IEdl
b2ZmIEdhcmVuLgorCisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNl
c0V4cGVyaW1lbnRhbC55YW1sOgorCisgICAgICAgICogd3RmL1VSTC5jcHA6CisgICAgICAgIChX
VEY6OlVSTDo6cHJvdG9jb2xJc0luRlRQRmFtaWx5IGNvbnN0KToKKyAgICAgICAgKFdURjo6cHJv
dG9jb2xJc0luRlRQRmFtaWx5KToKKyAgICAgICAgKiB3dGYvVVJMLmg6CisKIDIwMjEtMDktMjEg
IEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRW5hYmxl
IE1TRSBpbiBXS1dlYlZpZXdzIGJ5IGRlZmF1bHQgb24gaVBhZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwg
Yi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50
YWwueWFtbAppbmRleCAxZGIxNTc0YmUwMzQuLmQ3NzNlYmM1YTE5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlh
bWwKKysrIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhw
ZXJpbWVudGFsLnlhbWwKQEAgLTQyMSw2ICs0MjEsMTggQEAgRXhwb3NlU3BlYWtlcnNFbmFibGVk
OgogICAgIFdlYkNvcmU6CiAgICAgICBkZWZhdWx0OiBmYWxzZQogCitGVFBFbmFibGVkOgorICB0
eXBlOiBib29sCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiRlRQIHN1cHBvcnQgZW5hYmxlZCIKKyAg
aHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRlRQIHN1cHBvcnQgZW5hYmxlZCIKKyAgZGVmYXVs
dFZhbHVlOgorICAgIFdlYkNvcmU6CisgICAgICBkZWZhdWx0OiBmYWxzZQorICAgIFdlYktpdDoK
KyAgICAgIGRlZmF1bHQ6IGZhbHNlCisgICAgV2ViS2l0TGVnYWN5OgorICAgICAgZGVmYXVsdDog
ZmFsc2UKKyAgICAgIAogIyBGSVhNRTogVGhpcyBzZWVtcyB0byBiZSBhY2NpZGVudGFsbHkgZW5h
YmxlZCBmb3IgV2ViS2l0MSByaWdodCBub3cgZHVlIHRvIHRoZSBvbGQgY29kZSB1c2luZyB0aGUK
ICMgd3JvbmcgcHJlZmVyZW5jZSBrZXkgaW4gc29tZSBwbGFjZXMuIFdlIHNob3VsZCBpZGVudGlm
eSB3aGV0aGVyIGl0IHJlYWxseSBtYWtlcyBzZW5zZSB0byBrZWVwIHRoaXMKICMgZW5hYmxlZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwu
Y3BwCmluZGV4IGE3YzhkMjQxZDM4Ny4uZjNkOGFiMDIyYTA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9VUkwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKQEAgLTMyOSw2ICsz
MjksMTEgQEAgYm9vbCBVUkw6OnByb3RvY29sSXNKYXZhU2NyaXB0KCkgY29uc3QKICAgICByZXR1
cm4gV1RGOjpwcm90b2NvbElzSmF2YVNjcmlwdChzdHJpbmcoKSk7CiB9CiAKK2Jvb2wgVVJMOjpw
cm90b2NvbElzSW5GVFBGYW1pbHkoKSBjb25zdAoreworICAgIHJldHVybiBXVEY6OnByb3RvY29s
SXNJbkZUUEZhbWlseShzdHJpbmcoKSk7Cit9CisKIGJvb2wgVVJMOjpwcm90b2NvbElzKGNvbnN0
IGNoYXIqIHByb3RvY29sKSBjb25zdAogewogICAgIGFzc2VydFByb3RvY29sSXNHb29kKHByb3Rv
Y29sKTsKQEAgLTg1Niw2ICs4NjEsMTcgQEAgYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChTdHJp
bmdWaWV3IHN0cmluZykKICAgICByZXR1cm4gcHJvdG9jb2xJc0ludGVybmFsKHN0cmluZywgImph
dmFzY3JpcHQiKTsKIH0KIAorYm9vbCBwcm90b2NvbElzSW5GVFBGYW1pbHkoU3RyaW5nVmlldyB1
cmwpCit7CisgICAgYXV0byBsZW5ndGggPSB1cmwubGVuZ3RoKCk7CisgICAgLy8gRG8gdGhlIGNv
bXBhcmlzb24gd2l0aG91dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KKyAgICByZXR1cm4g
bGVuZ3RoID49IDQKKyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbMF0s
ICdmJykKKyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbMV0sICd0JykK
KyAgICAgICAgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbCh1cmxbMl0sICdwJykKKyAgICAg
ICAgJiYgKHVybFszXSA9PSAnOicgfHwgKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwodXJsWzNd
LCAncycpICYmIGxlbmd0aCA+PSA1ICYmIHVybFs0XSA9PSAnOicpKTsKK30KKwogYm9vbCBwcm90
b2NvbElzSW5IVFRQRmFtaWx5KFN0cmluZ1ZpZXcgdXJsKQogewogICAgIGF1dG8gbGVuZ3RoID0g
dXJsLmxlbmd0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9VUkwuaAppbmRleCBhMGNjZGNjNjQ2MGEuLmU1ODY5MDI2ZWNhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvVVJMLmgKKysrIGIvU291cmNlL1dURi93dGYvVVJMLmgKQEAgLTEz
Niw2ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBwcm90b2NvbElzRGF0YSgpIGNvbnN0IHsg
cmV0dXJuIHByb3RvY29sSXMoImRhdGEiKTsgfQogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29s
IHByb3RvY29sSXNBYm91dCgpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHBy
b3RvY29sSXNKYXZhU2NyaXB0KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
cHJvdG9jb2xJc0luRlRQRmFtaWx5KCkgY29uc3Q7CiAgICAgYm9vbCBwcm90b2NvbElzSW5IVFRQ
RmFtaWx5KCkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNMb2NhbEZpbGUo
KSBjb25zdDsKICAgICBib29sIGNhbm5vdEJlQUJhc2VVUkwoKSBjb25zdCB7IHJldHVybiBtX2Nh
bm5vdEJlQUJhc2VVUkw7IH0KQEAgLTI1OSw2ICsyNjAsNyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUg
Y29uc3QgVVJMJiBhYm91dFNyY0RvY1VSTCgpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBw
cm90b2NvbElzKFN0cmluZ1ZpZXcgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCk7CiBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChTdHJpbmdWaWV3IHVybCk7CitX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbElzSW5GVFBGYW1pbHkoU3RyaW5nVmlldyB1
cmwpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseShTdHJp
bmdWaWV3IHVybCk7CiAKIFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90
PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcgcHJvdG9jb2wpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA5Mjg3N2M2NDhjNDkuLjgwM2YxYThkYzc2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAor
MjAyMS0wOS0yMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
RGlzYWJsZSBGVFAuCisgICAgICAgIDxyZGFyOi8vODExOTM4NjA+IGFuZCBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNDc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
R2VvZmYgR2FyZW4uCisKKyAgICAgICAgQ292ZXJlZCBieSBuZXcgQVBJIHRlc3RzLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrTG9hZDo6c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6d2lsbFBl
cmZvcm1IVFRQUmVkaXJlY3Rpb24pOgorICAgICAgICAKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpp
bml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpmdHBFbmFibGVk
IGNvbnN0KToKKyAgICAgICAgCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgCisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vz
cyk6CisKIDIwMjEtMDktMjEgIFBlciBBcm5lICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIHByZWZlcmVuY2Ugd3JpdGUgYWNjZXNzIHRvIEFYIG1lZGlhIGRvbWFpbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAppbmRleCAyYWEwMzc3
MmZhNTkuLmFhZjZiMTFkM2VkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5jcHAKQEAgLTU4LDggKzU4LDE4IEBAIE5ldHdvcmtMb2FkOjpOZXR3b3JrTG9h
ZChOZXR3b3JrTG9hZENsaWVudCYgY2xpZW50LCBCbG9iUmVnaXN0cnlJbXBsKiBibG9iUmVnaXN0
CiAKIHZvaWQgTmV0d29ya0xvYWQ6OnN0YXJ0KCkKIHsKLSAgICBpZiAobV90YXNrKQotICAgICAg
ICBtX3Rhc2stPnJlc3VtZSgpOworICAgIGlmICghbV90YXNrKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MtPmZ0cEVuYWJsZWQoKSAmJiBtX3BhcmFtZXRlcnMu
cmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5GVFBGYW1pbHkoKSkgeworICAgICAgICBtX3Rhc2st
PmNsZWFyQ2xpZW50KCk7CisgICAgICAgIG1fdGFzayA9IG51bGxwdHI7CisgICAgICAgIFdlYkNv
cmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBlbXB0eU1ldHJpY3M7CisgICAgICAgIGRpZENvbXBsZXRl
V2l0aEVycm9yKFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1
cmwoKSwgIkZUUCBVUkxzIGFyZSBkaXNhYmxlZCJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNj
ZXNzQ29udHJvbCB9LCBlbXB0eU1ldHJpY3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgbV90YXNrLT5yZXN1bWUoKTsKIH0KIAogdm9pZCBOZXR3b3JrTG9hZDo6c3RhcnRXaXRoU2No
ZWR1bGluZygpCkBAIC0xODEsNiArMTkxLDE3IEBAIHZvaWQgTmV0d29ya0xvYWQ6OndpbGxQZXJm
b3JtSFRUUFJlZGlyZWN0aW9uKFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlCiAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQoIW1fcmVkaXJlY3RDb21w
bGV0aW9uSGFuZGxlcik7CiAKKyAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MtPmZ0cEVuYWJsZWQo
KSAmJiByZXF1ZXN0LnVybCgpLnByb3RvY29sSXNJbkZUUEZhbWlseSgpKSB7CisgICAgICAgIG1f
dGFzay0+Y2xlYXJDbGllbnQoKTsKKyAgICAgICAgbV90YXNrID0gbnVsbHB0cjsKKyAgICAgICAg
V2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzIGVtcHR5TWV0cmljczsKKyAgICAgICAgZGlkQ29t
cGxldGVXaXRoRXJyb3IoUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWws
IDAsIHVybCgpLCAiRlRQIFVSTHMgYXJlIGRpc2FibGVkIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBl
OjpBY2Nlc3NDb250cm9sIH0sIGVtcHR5TWV0cmljcyk7CisgICAgICAgIAorICAgICAgICBpZiAo
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAgIHJlZGlyZWN0UmVzcG9uc2Uuc2V0U291
cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7CiAgICAgbV9yZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggODQ2YmRk
NTNmMzQ2Li4yNTlmNjc3MDllODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0zNDYsNiArMzQ2LDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzJiYKIAogICAgIHNldFByaXZhdGVDbGlja01lYXN1cmVtZW50RW5hYmxlZChwYXJhbWV0
ZXJzLmVuYWJsZVByaXZhdGVDbGlja01lYXN1cmVtZW50KTsKICAgICBzZXRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERlYnVnTW9kZShwYXJhbWV0ZXJzLmVuYWJsZVByaXZhdGVDbGlja01lYXN1cmVt
ZW50RGVidWdNb2RlKTsKKyAgICBtX2Z0cEVuYWJsZWQgPSBwYXJhbWV0ZXJzLmZ0cEVuYWJsZWQ7
CiAKICAgICBmb3IgKGF1dG8mIHN1cHBsZW1lbnQgOiBtX3N1cHBsZW1lbnRzLnZhbHVlcygpKQog
ICAgICAgICBzdXBwbGVtZW50LT5pbml0aWFsaXplKHBhcmFtZXRlcnMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGE2NGEwMWZmNGZiZC4u
MzQzOGQwOGE2MmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCkBAIC0zOTAsNiArMzkwLDggQEAgcHVibGljOgogICAgIFJUQ0RhdGFDaGFubmVs
UmVtb3RlTWFuYWdlclByb3h5JiBydGNEYXRhQ2hhbm5lbFByb3h5KCk7CiAjZW5kaWYKIAorICAg
IGJvb2wgZnRwRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZnRwRW5hYmxlZDsgfQorCiBwcml2
YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKIApAQCAtNjE1LDYgKzYxNyw3IEBAIHBy
aXZhdGU6CiAKICAgICBib29sIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmFibGVkIHsgdHJ1
ZSB9OwogICAgIGJvb2wgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZUVuYWJsZWQg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9mdHBFbmFibGVkIHsgZmFsc2UgfTsKIAogICAgIEhhc2hN
YXA8UEFMOjpTZXNzaW9uSUQsIFJlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+PiBtX3N0b3JhZ2VN
YW5hZ2VyczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDhmZTgx
YjRjMWY2OS4uMGE2MzU1NTMwMjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cApAQCAtNzIsNiArNzIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogCiAgICAgZW5jb2RlciA8PCBl
bmFibGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDsKICAgICBlbmNvZGVyIDw8IGVuYWJsZVByaXZh
dGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlOworICAgIGVuY29kZXIgPDwgZnRwRW5hYmxlZDsK
ICAgICBlbmNvZGVyIDw8IHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOwogfQogCkBAIC0xNDYs
NiArMTQ3LDggQEAgYm9vbCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1Byb2MKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmVuYWJsZVByaXZhdGVDbGlja01lYXN1
cmVtZW50RGVidWdNb2RlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LmZ0cEVuYWJsZWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycz4+IHdlYnNp
dGVEYXRhU3RvcmVQYXJhbWV0ZXJzOwogICAgIGRlY29kZXIgPj4gd2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggZDhkOWNmZDY2ZDVh
Li43YjNiMzI3YjgzMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTg4LDYg
Kzg4LDcgQEAgc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAg
IGJvb2wgZW5hYmxlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgeyB0cnVlIH07CiAgICAgYm9vbCBl
bmFibGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZSB7IGZhbHNlIH07CisgICAgYm9v
bCBmdHBFbmFibGVkIHsgZmFsc2UgfTsKIAogICAgIFZlY3RvcjxXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycz4gd2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IDIwNTJhYWM2YjNkZS4uZWI0N2NiZGU4NDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zNDcsNyArMzQ3
LDggQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICBlbHNlCiAgICAgICAgIG1fbmV0d29y
a0xvYWQtPnN0YXJ0V2l0aFNjaGVkdWxpbmcoKTsKIAotICAgIExPQURFUl9SRUxFQVNFX0xPRygi
c3RhcnROZXR3b3JrTG9hZDogR29pbmcgdG8gdGhlIG5ldHdvcmsgKGRlc2NyaXB0aW9uPSUiIFBV
QkxJQ19MT0dfU1RSSU5HICIpIiwgbV9uZXR3b3JrTG9hZC0+ZGVzY3JpcHRpb24oKS51dGY4KCku
ZGF0YSgpKTsKKyAgICBpZiAobV9uZXR3b3JrTG9hZCkKKyAgICAgICAgTE9BREVSX1JFTEVBU0Vf
TE9HKCJzdGFydE5ldHdvcmtMb2FkOiBHb2luZyB0byB0aGUgbmV0d29yayAoZGVzY3JpcHRpb249
JSIgUFVCTElDX0xPR19TVFJJTkcgIikiLCBtX25ldHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0
ZjgoKS5kYXRhKCkpOwogfQogCiBSZXNvdXJjZUxvYWRJbmZvIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6cmVzb3VyY2VMb2FkSW5mbygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCBlMTdkZmVlYTc3NTguLjI4YTgyYzlk
YjI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vz
c1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUG9vbENvY29hLm1tCkBAIC01NjcsNiArNTY3LDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6
cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmEKICAgICBOU1N0cmluZyAqZm9ybWF0ID0gQCJXZWJLaXRFeHBlcmltZW50YWwlQCI7CiAjZW5k
aWYKICAgICBwYXJhbWV0ZXJzLmVuYWJsZVByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2Rl
ID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6Zm9ybWF0
LCBXZWJQcmVmZXJlbmNlc0tleTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGVFbmFi
bGVkS2V5KCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKV1dOworICAgIAorICAgIHBhcmFtZXRlcnMu
ZnRwRW5hYmxlZCA9IFtkZWZhdWx0cyBvYmplY3RGb3JLZXk6V2ViUHJlZmVyZW5jZXNLZXk6OmZ0
cEVuYWJsZWRLZXkoKV0gJiYgW2RlZmF1bHRzIGJvb2xGb3JLZXk6V2ViUHJlZmVyZW5jZXNLZXk6
OmZ0cEVuYWJsZWRLZXkoKV07CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW52
YWxpZGF0ZUNvbnRleHQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDNhZmQ0MDVjYmM4OC4uOTk5NjA4ZDIyYzhmIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjEt
MDktMjEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIERpc2Fi
bGUgRlRQLgorICAgICAgICA8cmRhcjovLzgxMTkzODYwPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDQ3NworCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2Zm
IEdhcmVuLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0J1bmRsZVBhZ2VDb25zb2xlTWVzc2FnZS5tbTogQWRkZWQuCisgICAgICAgICh3aWxs
QWRkTWVzc2FnZVRvQ29uc29sZUNhbGxiYWNrKToKKyAgICAgICAgKC1bQnVuZGxlUGFnZUNvbnNv
bGVNZXNzYWdlIHdlYlByb2Nlc3NQbHVnSW46ZGlkQ3JlYXRlQnJvd3NlckNvbnRleHRDb250cm9s
bGVyOl0pOgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GVFAu
bW06IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkUmVjZWl2ZVBhZ2VNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldEluamVjdGVk
QnVuZGxlQ2xpZW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvY29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnRvTlMpOgorCiAyMDIxLTA5LTIxICBZb3NoaWFraSBKaXRzdWthd2EgIDx5
b3NoaWFraS5qaXRzdWthd2FAc29ueS5jb20+CiAKICAgICAgICAgW1BsYXlTdGF0aW9uXVtNaW5p
QnJvd3Nlcl0gUmVtb3ZlIFdlYktpdCBwcml2YXRlIGhlYWRlciBpbmNsdWRlCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmggYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKaW5kZXggNTYyNjgwMmJjMDM3Li5lODU1YWQ5YjI5
MGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKQEAgLTY2LDYgKzY2
LDExIEBAIGJvb2wgaXNLZXlEb3duKFdLTmF0aXZlRXZlbnRQdHIpOwogc3RkOjpzdHJpbmcgdG9T
VEQoV0tTdHJpbmdSZWYpOwogc3RkOjpzdHJpbmcgdG9TVEQoV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+KTsKIAorI2lmIFBMQVRGT1JNKE1BQykKK05TU3RyaW5nICp0b05TKFdLU3RyaW5nUmVmKTsK
K05TU3RyaW5nICp0b05TKFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPik7CisjZW5kaWYgLy8gUExB
VEZPUk0oTUFDKQorCiBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdG9XSyhjb25zdCBjaGFyKiB1
dGY4U3RyaW5nKTsKIAogI2VuZGlmIC8vIFdLX0hBVkVfQ19TUEkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggOTkwZmM1NDhlMmZjLi40M2MzMzUyYjFlNGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0zNDgsNyArMzQ4LDkgQEAKIAkJNTE3MTRFQjQxQ0Y4Qzc4QzAwNDcyM0M0IC8qIFdl
YlByb2Nlc3NLaWxsSURCQ2xlYW51cC0xLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTRFQjIxQ0Y4Qzc2MTAwNDcyM0M0IC8qIFdl
YlByb2Nlc3NLaWxsSURCQ2xlYW51cC0xLmh0bWwgKi87IH07CiAJCTUxNzE0RUI1MUNGOEM3OEMw
MDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMi5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzE0RUIzMUNGOEM3NjEw
MDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMi5odG1sICovOyB9OwogCQk1MTcx
NEVCODFDRjhDQTE3MDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTRFQjYxQ0Y4QzdB
NDAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC5tbSAqLzsgfTsKKwkJNTE3NUM3
QTIyNkY4NzYyMzAwMDNBRjVDIC8qIEJ1bmRsZVBhZ2VDb25zb2xlTWVzc2FnZS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzVDN0ExMjZGODc2MjMw
MDAzQUY1QyAvKiBCdW5kbGVQYWdlQ29uc29sZU1lc3NhZ2UubW0gKi87IH07CiAJCTUxN0U3RTA0
MTUxMTE5QzEwMEQwQjAwOCAvKiBNZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVs
ZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTdFN0UwMzE1MTExODc1MDBEMEIwMDggLyogTWVtb3J5Q2FjaGVQcnVuZVdpdGhp
blJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgKi87IH07CisJCTUxODE5RjJBMjZFQUM5ODMwMEU0
NzM3NSAvKiBGVFAubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTgxOUYyOTI2RUFDOTgyMDBFNDczNzUgLyogRlRQLm1tICovOyB9OwogCQk1MTgyMEE0
RDIyRjRFRTdGMDBERjBBMDEgLyogSmF2YXNjcmlwdFVSTE5hdmlnYXRpb24ubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgyMEE0QzIyRjRFRTc3MDBE
RjBBMDEgLyogSmF2YXNjcmlwdFVSTE5hdmlnYXRpb24ubW0gKi87IH07CiAJCTUxODJDMjJFMUYy
QkNFNTQwMDU5QkE3QyAvKiBXS1VSTFNjaGVtZUhhbmRsZXItbGVha3MubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgyQzIyRDFGMkJDQjQxMDA1OUJB
N0MgLyogV0tVUkxTY2hlbWVIYW5kbGVyLWxlYWtzLm1tICovOyB9OwogCQk1MThDMTE1MzIwNUIw
NTA0MDAxRkY0QUUgLyogUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MThDMTE1MjIwNUIwNEY5MDAxRkY0QUUg
LyogUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gKi87IH07CkBAIC0yMTk0LDggKzIxOTYsMTAg
QEAKIAkJNTE3MTRFQjMxQ0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51
cC0yLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiV2ViUHJvY2Vzc0tpbGxJREJD
bGVhbnVwLTIuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNzE0RUI2MUNG
OEM3QTQwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNzE0RUI5MUQwODc0MTYwMDQ3MjNDNCAv
KiBDcm9zc1RocmVhZFRhc2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ3Jvc3NUaHJlYWRUYXNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3
NUM3QTEyNkY4NzYyMzAwMDNBRjVDIC8qIEJ1bmRsZVBhZ2VDb25zb2xlTWVzc2FnZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJ1bmRsZVBhZ2VDb25zb2xlTWVz
c2FnZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3RTdERkIxNTExMEVBNjAw
RDBCMDA4IC8qIE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lbW9yeUNhY2hlUHJ1bmVX
aXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE3RTdFMDMxNTExMTg3NTAwRDBCMDA4IC8qIE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gTWVtb3J5
Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxODE5RjI5MjZFQUM5ODIwMEU0NzM3NSAvKiBGVFAubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGVFAubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxODIwQTRDMjJGNEVFNzcwMERGMEEwMSAvKiBKYXZhc2NyaXB0VVJM
TmF2aWdhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEphdmFzY3JpcHRVUkxOYXZpZ2F0
aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTgyQzIyRDFGMkJDQjQxMDA1
OUJBN0MgLyogV0tVUkxTY2hlbWVIYW5kbGVyLWxlYWtzLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gIldLVVJMU2NoZW1lSGFuZGxlci1sZWFrcy5tbSI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxOEMxMTUyMjA1QjA0RjkwMDFGRjRBRSAvKiBQcm9jZXNzU3dhcE9uTmF2aWdhdGlv
bi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByb2Nlc3NTd2Fw
T25OYXZpZ2F0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQzNSw2ICsz
NDM5LDcgQEAKIAkJCQk3QTg5QkI2NTIzMzE2MzVEMDA0MkNCMUUgLyogQnVuZGxlRm9ybURlbGVn
YXRlLm1tICovLAogCQkJCTdBODlCQjY2MjMzMTYzNUQwMDQyQ0IxRSAvKiBCdW5kbGVGb3JtRGVs
ZWdhdGVQbHVnSW4ubW0gKi8sCiAJCQkJN0E4OUJCNjkyMzMxNjU2NTAwNDJDQjFFIC8qIEJ1bmRs
ZUZvcm1EZWxlZ2F0ZVByb3RvY29sLmggKi8sCisJCQkJNTE3NUM3QTEyNkY4NzYyMzAwMDNBRjVD
IC8qIEJ1bmRsZVBhZ2VDb25zb2xlTWVzc2FnZS5tbSAqLywKIAkJCQlBMTNFQkJBQzFCODc0MzZG
MDAwOTcxMTAgLyogQnVuZGxlUGFyYW1ldGVycy5tbSAqLywKIAkJCQlBMTNFQkJBRTFCODc0MzZG
MDAwOTcxMTAgLyogQnVuZGxlUGFyYW1ldGVyc1BsdWdJbi5tbSAqLywKIAkJCQkzN0E3MDlBRDFF
M0VBOEIwMDBDQTU5NjkgLyogQnVuZGxlUmFuZ2VIYW5kbGUubW0gKi8sCkBAIC0zNDg2LDYgKzM0
OTEsNyBAQAogCQkJCTZCMjVBNzUxMjVEQzhENEUwMDcwNzQ0RiAvKiBFdmVudEF0dHJpYnV0aW9u
Lm1tICovLAogCQkJCUNEQTI5QjI4MjBGRDJBOTkwMEYxNUNFRCAvKiBFeGl0RnVsbHNjcmVlbk9u
RW50ZXJQaVAubW0gKi8sCiAJCQkJMUQxMkJFQkYyNDVCRUY4NTAwNEMwQjdBIC8qIEV4aXRQaVBP
blN1c3BlbmRWaWRlb0VsZW1lbnQubW0gKi8sCisJCQkJNTE4MTlGMjkyNkVBQzk4MjAwRTQ3Mzc1
IC8qIEZUUC5tbSAqLywKIAkJCQkyRDgxMDRDQjFCRUMxM0U3MDAyMERBNDYgLyogRmluZEluUGFn
ZS5tbSAqLywKIAkJCQk1MTI0MkNENDIzNzRFNjFFMDBFRUQ5QzEgLyogRmluZEluUGFnZUFQSS5t
bSAqLywKIAkJCQkxMTgxNTM0NzIyMDhCQURGMDBCMkNDRDIgLyogRmlyc3RWaXN1YWxseU5vbkVt
cHR5TWlsZXN0b25lLm1tICovLApAQCAtNTgzNiw2ICs1ODQyLDcgQEAKIAkJCQk3Q0NFN0YxNDFB
NDExQUU2MDA0NDdDNEMgLyogU2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2FyZExpc3RJdGVtSW5M
aXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTM3QkNBNjFDMUI1OTZCQTkwMDIwMTJDQSAvKiBT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzSW5OZXdXaW5kb3dBY3Rpb25zLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0M4M0UwQzUxRDBBNjU0NjAwRkVCQ0YzIC8qIFNocmlua1RvRml0Lm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJNTE4MTlGMkEyNkVBQzk4MzAwRTQ3Mzc1IC8qIEZUUC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDQ0U3RUNEMUE0MTFBN0UwMDQ0N0M0QyAvKiBTaW1wbGlmeU1hcmt1cC5tbSBp
biBTb3VyY2VzICovLAogCQkJCUMxNDlENTUwMjQyRTk4REYwMDNFQkIxMiAvKiBTbGVlcERpc2Fi
bGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRGRjdCNkQxREE0ODdBRjAwODE0NjE0IC8qIFNu
YXBzaG90U3RvcmUubW0gaW4gU291cmNlcyAqLywKQEAgLTYwNzIsNiArNjA3OSw3IEBACiAJCQkJ
MkQzQ0EzQTgyMjFERjRCNDAwODhFODAzIC8qIFBhZ2VPdmVybGF5UGx1Z2luLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRjQ0QzdBMDAyMEY5RUVCRjAwMTQ0NzhDIC8qIFBhcnNlcllpZWxkVG9rZW5Q
bHVnSW4ubW0gaW4gU291cmNlcyAqLywKIAkJCQlBMTNFQkJBQjFCODc0MzQ2MDAwOTcxMTAgLyog
UGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxNzVDN0EyMjZG
ODc2MjMwMDAzQUY1QyAvKiBCdW5kbGVQYWdlQ29uc29sZU1lc3NhZ2UubW0gaW4gU291cmNlcyAq
LywKIAkJCQkxQTRGODFDRjFCREZGRDUzMDA0RTY3MkUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnlQ
bHVnSW4ubW0gaW4gU291cmNlcyAqLywKIAkJCQlBMTJEREMwMjFFODM3QzI0MDBDRjZDQUUgLyog
UmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTI0
NTE3ODcyMUI5RjU3QjAwODJDQjM0IC8qIFJlbmRlcmluZ1Byb2dyZXNzUGx1Z0luLm1tIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0J1bmRsZVBhZ2VDb25zb2xlTWVzc2FnZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQnVuZGxlUGFnZUNvbnNvbGVNZXNzYWdlLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGNjYTAxZDZhYmU1Ci0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9CdW5kbGVQYWdlQ29uc29s
ZU1lc3NhZ2UubW0KQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorCisjaWYgUExBVEZPUk0oTUFDKQorCisjaW1wb3J0IDxXZWJLaXQvV0tCdW5kbGVQYWdl
Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tCdW5kbGVQYWdlVUlDbGllbnQuaD4KKyNpbXBvcnQgPFdl
YktpdC9XS1JldGFpblB0ci5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbi5o
PgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlclByaXZhdGUuaD4KKwordm9pZCB3aWxsQWRkTWVzc2FnZVRvQ29uc29sZUNhbGxiYWNrKFdL
QnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlLCB1aW50MzJfdCBsaW5lTnVt
YmVyLCBjb25zdCB2b2lkICopCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3Nh
Z2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ29uc29sZU1l
c3NhZ2UiKSk7CisgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UocGFnZSwgbWVzc2FnZU5hbWUu
Z2V0KCksIG1lc3NhZ2UpOworfQorCitAaW50ZXJmYWNlIEJ1bmRsZVBhZ2VDb25zb2xlTWVzc2Fn
ZSA6IE5TT2JqZWN0IDxXS1dlYlByb2Nlc3NQbHVnSW4+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBCdW5kbGVQYWdlQ29uc29sZU1lc3NhZ2UKKworLSAodm9pZCl3ZWJQcm9jZXNzUGx1Z0luOihX
S1dlYlByb2Nlc3NQbHVnSW5Db250cm9sbGVyICopcGx1Z0luQ29udHJvbGxlciBkaWRDcmVhdGVC
cm93c2VyQ29udGV4dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlciAqKWJyb3dzZXJDb250ZXh0Q29udHJvbGxlcgoreworICAgIFdLQnVuZGxlUGFn
ZVVJQ2xpZW50VjQgY2xpZW50OworICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50
KSk7CisgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDQ7CisgICAgY2xpZW50LndpbGxBZGRNZXNz
YWdlVG9Db25zb2xlID0gd2lsbEFkZE1lc3NhZ2VUb0NvbnNvbGVDYWxsYmFjazsKKyAgICBXS0J1
bmRsZVBhZ2VTZXRVSUNsaWVudChbYnJvd3NlckNvbnRleHRDb250cm9sbGVyIF9idW5kbGVQYWdl
UmVmXSwgJmNsaWVudC5iYXNlKTsKK30KKworQGVuZAorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFD
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GVFAu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZUUC5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjAxMTA1MTJjMDkzMgotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRlRQLm1tCkBA
IC0wLDAgKzEsMTQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBQ
TEFURk9STShNQUMpCisKKyNpbXBvcnQgIkhUVFBTZXJ2ZXIuaCIKKyNpbXBvcnQgIlBsYXRmb3Jt
VXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRl
bGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0ICJXS1dlYlZpZXdD
b25maWd1cmF0aW9uRXh0cmFzLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZh
dGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgor
I2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmg+CisjaW1wb3J0IDxX
ZWJLaXQvV0tXZWJwYWdlUHJlZmVyZW5jZXNQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV2Vi
S2l0Lmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkgeworCitzdGF0aWMgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBjb25zb2xlTWVz
c2FnZXM7CisKK3N0YXRpYyB2b2lkIGRpZFJlY2VpdmVQYWdlTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZShXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2Fn
ZSwgY29uc3Qgdm9pZCopCit7CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
bWVzc2FnZU5hbWUsICJDb25zb2xlTWVzc2FnZSIpKQorICAgICAgICBbY29uc29sZU1lc3NhZ2Vz
IGFkZE9iamVjdDpVdGlsOjp0b05TKChXS1N0cmluZ1JlZiltZXNzYWdlKV07Cit9CisKK3N0YXRp
YyB2b2lkIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KFdLV2ViVmlldyAqd2ViVmlldykKK3sKKyAg
ICBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudFYwIGluamVjdGVkQnVuZGxlQ2xpZW50ID0gewor
ICAgICAgICB7IDAsIG51bGxwdHIgfSwKKyAgICAgICAgZGlkUmVjZWl2ZVBhZ2VNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlLAorICAgICAgICBudWxscHRyLAorICAgIH07CisgICAgV0tQYWdlU2V0
UGFnZUluamVjdGVkQnVuZGxlQ2xpZW50KHdlYlZpZXcuX3BhZ2VSZWZGb3JUcmFuc2l0aW9uVG9X
S1dlYlZpZXcsICZpbmplY3RlZEJ1bmRsZUNsaWVudC5iYXNlKTsKK30KKworVEVTVChXS1dlYlZp
ZXcsIEZUUE1haW5SZXNvdXJjZSkKK3sKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25m
aWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldp
dGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiQnVuZGxlUGFnZUNvbnNvbGVNZXNzYWdlIl07CisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
XSk7CisgICAgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQod2ViVmlldy5nZXQoKSk7CisgICAgCisg
ICAgY29uc29sZU1lc3NhZ2VzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OjJd
OworIAorICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJmdHA6Ly9leGFtcGxlLmNvbS9tYWluLmh0bWwiXV1d
OworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9u
XTsKKworICAgIEVYUEVDVF9FUShbY29uc29sZU1lc3NhZ2VzIGNvdW50XSwgMXUpOworICAgIEVY
UEVDVF9UUlVFKFtjb25zb2xlTWVzc2FnZXMuZ2V0KClbMF0gaXNFcXVhbFRvU3RyaW5nOkAiRlRQ
IFVSTHMgYXJlIGRpc2FibGVkIl0pOworfQorCitURVNUKFdLV2ViVmlldywgRlRQTWFpblJlc291
cmNlUmVkaXJlY3QpCit7CisgICAgSFRUUFNlcnZlciBodHRwU2VydmVyKHsKKyAgICAgICAgeyAi
L2Z0cF9yZWRpcmVjdCIsIHsgMzAxLCB7eyAiTG9jYXRpb24iLCAiZnRwOi8vZXhhbXBsZS5jb20v
IiB9fSB9IH0sCisgICAgfSk7CisgICAgCisgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29u
ZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25X
aXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIkJ1bmRsZVBhZ2VDb25zb2xlTWVzc2FnZSJdOworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bl0pOworICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KHdlYlZpZXcuZ2V0KCkpOworICAgIAor
ICAgIGNvbnNvbGVNZXNzYWdlcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eToy
XTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Omh0dHBTZXJ2ZXIucmVxdWVzdCgiL2Z0cF9y
ZWRpcmVjdCIpXTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFs
TmF2aWdhdGlvbl07CisKKyAgICBFWFBFQ1RfRVEoW2NvbnNvbGVNZXNzYWdlcyBjb3VudF0sIDF1
KTsKKyAgICBFWFBFQ1RfVFJVRShbY29uc29sZU1lc3NhZ2VzLmdldCgpWzBdIGlzRXF1YWxUb1N0
cmluZzpAIkZUUCBVUkxzIGFyZSBkaXNhYmxlZCJdKTsKK30KKworCitzdGF0aWMgY29uc3QgY2hh
ciogc3VicmVzb3VyY2VCeXRlcyA9IFIiRlRQUkVTT1VSQ0UoCitIZWxsbworPGltZyBzcmM9ImZ0
cDovL2V4YW1wbGUuY29tL3dlYmtpdHRlbi5wbmciPgorR29vZGJ5ZQorKUZUUFJFU09VUkNFIjsK
KworVEVTVChXS1dlYlZpZXcsIEZUUFN1YnJlc291cmNlKQoreworICAgIFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9j
b25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJCdW5kbGVQYWdlQ29uc29sZU1l
c3NhZ2UiXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb25dKTsKKyAgICBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudCh3ZWJWaWV3Lmdl
dCgpKTsKKyAgICAKKyAgICBjb25zb2xlTWVzc2FnZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlX
aXRoQ2FwYWNpdHk6Ml07CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5n
OltOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpzdWJyZXNvdXJjZUJ5dGVzXV07CisKKyAg
ICBFWFBFQ1RfRVEoW2NvbnNvbGVNZXNzYWdlcyBjb3VudF0sIDJ1KTsKKyAgICBFWFBFQ1RfVFJV
RShbY29uc29sZU1lc3NhZ2VzLmdldCgpWzBdIGlzRXF1YWxUb1N0cmluZzpAIkZUUCBVUkxzIGFy
ZSBkaXNhYmxlZCJdKTsKKyAgICBFWFBFQ1RfVFJVRShbY29uc29sZU1lc3NhZ2VzLmdldCgpWzFd
IGlzRXF1YWxUb1N0cmluZzpAIkNhbm5vdCBsb2FkIGltYWdlIGZ0cDovL2V4YW1wbGUuY29tL3dl
YmtpdHRlbi5wbmcgZHVlIHRvIGFjY2VzcyBjb250cm9sIGNoZWNrcy4iXSk7Cit9CisKKy8vIFJl
ZGlyZWN0IGZyb20gSFRUUCB0byBGVFAgYWxyZWFkeSBmYWlscywgYnV0IGxldCdzIG1ha2Ugc3Vy
ZSBpdCBrZWVwcyBmYWlsaW5nCitURVNUKFdLV2ViVmlldywgRlRQU3VicmVzb3VyY2VSZWRpcmVj
dCkKK3sKKyAgICBIVFRQU2VydmVyIGh0dHBTZXJ2ZXIoeworICAgICAgICB7ICIvd2Via2l0dGVu
LnBuZyIsIHsgMzAxLCB7eyAiTG9jYXRpb24iLCAiZnRwOi8vZXhhbXBsZS5jb20vd2Via2l0dGVu
LnBuZyIgfX0gfSB9LAorICAgIH0pOworICAgICAgICAKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0
aW9uICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmln
dXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiQnVuZGxlUGFnZUNvbnNvbGVNZXNzYWdl
Il07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uXSk7CisgICAgCisgICAgLy8gQWxsb3cgSFRUUCB0byByZWRpcmVjdCBhd2F5IGZy
b20gSFRUUCBmb3Igc3VicmVzb3VyY2VzIGZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyB0ZXN0Cisg
ICAgYXV0byBwcmVmZXJlbmNlcyA9IChfX2JyaWRnZSBXS1ByZWZlcmVuY2VzUmVmKVtbd2ViVmll
dyBjb25maWd1cmF0aW9uXSBwcmVmZXJlbmNlc107CisgICAgV0tQcmVmZXJlbmNlc1NldFJlc3Ry
aWN0ZWRIVFRQUmVzcG9uc2VBY2Nlc3MocHJlZmVyZW5jZXMsIGZhbHNlKTsKKyAgICAKKyAgICBz
ZXRJbmplY3RlZEJ1bmRsZUNsaWVudCh3ZWJWaWV3LmdldCgpKTsKKyAgICAKKyAgICBjb25zb2xl
TWVzc2FnZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6Ml07CisgICAgCisg
ICAgYXV0byBodG1sU3RyaW5nID0gbWFrZVN0cmluZygiPGltZyBzcmM9J2h0dHA6Ly8xMjcuMC4w
LjE6IiwgU3RyaW5nOjpudW1iZXIoaHR0cFNlcnZlci5wb3J0KCkpLCAiL3dlYmtpdHRlbi5wbmcn
PiIpOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpbTlNTdHJpbmcg
c3RyaW5nV2l0aFVURjhTdHJpbmc6aHRtbFN0cmluZy51dGY4KCkuZGF0YSgpXV07CisKKyAgICBF
WFBFQ1RfRVEoW2NvbnNvbGVNZXNzYWdlcyBjb3VudF0sIDJ1KTsKKyAgICBFWFBFQ1RfVFJVRShb
Y29uc29sZU1lc3NhZ2VzLmdldCgpWzBdIGlzRXF1YWxUb1N0cmluZzpAIkZUUCBVUkxzIGFyZSBk
aXNhYmxlZCJdKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYg
Ly8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9Q
bGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0
Zm9ybVV0aWxpdGllc0NvY29hLm1tCmluZGV4IGRhODg3ZGU5NzU1OS4uZWIwOTVkZTAxMGM5IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29j
b2EubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0Nv
Y29hLm1tCkBAIC0zMyw2ICszMywyNSBAQAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogbmFt
ZXNwYWNlIFV0aWwgewogCisjaWYgUExBVEZPUk0oTUFDKQorCitOU1N0cmluZyAqdG9OUyhXS1N0
cmluZ1JlZiBzdHJpbmcpCit7CisgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBXS1N0cmluZ0dldE1h
eGltdW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nKSArIDE7CisgICAgYXV0byBidWZmZXIgPSBtYWtl
VW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazxjaGFyW10+KGJ1ZmZlclNpemUpOworICAgIHNp
emVfdCBzdHJpbmdMZW5ndGggPSBXS1N0cmluZ0dldFVURjhDU3RyaW5nKHN0cmluZywgYnVmZmVy
LmdldCgpLCBidWZmZXJTaXplKTsKKyAgICBidWZmZXJbc3RyaW5nTGVuZ3RoXSA9ICdcMCc7CisK
KyAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmJ1ZmZlci5nZXQoKV07
Cit9CisKK05TU3RyaW5nICp0b05TKFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdHJpbmcpCit7
CisgICAgcmV0dXJuIHRvTlMoc3RyaW5nLmdldCgpKTsKK30KKworI2VuZGlmIC8vIFBMQVRGT1JN
KE1BQykKKwogc3RkOjpzdHJpbmcgdG9TVEQoTlNTdHJpbmcgKnN0cmluZykKIHsKICAgICBpZiAo
IXN0cmluZykK
</data>

          </attachment>
      

    </bug>

</bugzilla>