<?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>217880</bug_id>
          
          <creation_ts>2020-10-17 14:37:33 -0700</creation_ts>
          <short_desc>[Testing] Convert DumpRenderTree to use generated test header options</short_desc>
          <delta_ts>2020-11-01 12:20:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>koivisto</cc>
    
    <cc>lingho</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1699003</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-17 14:37:33 -0700</bug_when>
    <thetext>[Testing] Convert DumpRenderTree to use generated test header options</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699007</commentid>
    <comment_count>1</comment_count>
      <attachid>411678</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-17 14:52:36 -0700</bug_when>
    <thetext>Created attachment 411678
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699009</commentid>
    <comment_count>2</comment_count>
      <attachid>411680</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-17 14:56:11 -0700</bug_when>
    <thetext>Created attachment 411680
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699026</commentid>
    <comment_count>3</comment_count>
      <attachid>411688</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-17 17:08:22 -0700</bug_when>
    <thetext>Created attachment 411688
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699027</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-17 17:08:36 -0700</bug_when>
    <thetext>Going to try making the VPATH include the erb files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699028</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-17 17:11:04 -0700</bug_when>
    <thetext>If anyone has any idea what I am doing wrong with these Makefile rules, I could really use a pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699029</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-17 17:12:11 -0700</bug_when>
    <thetext>Specifically, it&apos;s these errors:
    /bin/sh -c \&quot;/Volumes/Data/worker/tvOS-14-Simulator-Build-EWS/build/WebKitBuild/DumpRenderTree.build/Release-appletvsimulator/Derived\ Sources.build/Script-0F18E7011D6B9CC60027E547.sh\&quot;
make: Circular /Volumes/Data/worker/tvOS-14-Simulator-Build-EWS/build/Tools/DumpRenderTree/Scripts/PreferencesTemplates/TestOptionsGeneratedWebKitLegacyKeyMapping.cpp.erb.cpp &lt;- /Volumes/Data/worker/tvOS-14-Simulator-Build-EWS/build/Tools/DumpRenderTree/Scripts/PreferencesTemplates/TestOptionsGeneratedWebKitLegacyKeyMapping.cpp.erb dependency dropped.
make: Circular /Volumes/Data/worker/tvOS-14-Simulator-Build-EWS/build/Tools/DumpRenderTree/Scripts/PreferencesTemplates/TestOptionsGeneratedKeys.h.erb.sh &lt;- /Volumes/Data/worker/tvOS-14-Simulator-Build-EWS/build/Tools/DumpRenderTree/Scripts/PreferencesTemplates/TestOptionsGene
ratedWebKitLegacyKeyMapping.cpp.erb dependency dropped.
make: Circular /Volumes/Data/worker/tvOS-14-Simulator-Build-EWS/build/Tools/DumpRenderTree/Scripts/PreferencesTemplates/TestOptionsGeneratedKeys.h.erb.sh &lt;- /Volumes/Data/worker/tvOS-14-Simulator-Build-EWS/build/Tools/DumpRenderTree/Scripts/PreferencesTemplates/TestOptionsGeneratedKeys.h.erb dependency dropped.
ruby /Volumes/Data/worker/tvOS-14-Simulator-Build-EWS/build/WebKitBuild/Release-appletvsimulator/usr/local/include/wtf/Scripts/GeneratePreferences.rb --frontend WebKitLegacy --base /Volumes/Data/worker/tvOS-14-Simulator-Build-EWS/build/WebKitBuild/Release-appletvsimulator/usr/local/include/wtf/Scripts/Preferences/WebPreferences.yaml --debug /Volumes/Data/worker/tvOS-14-Simulator-Build-EWS/build/WebKitBuild/Release-appletvsimulator/usr/local/include/wtf/Scripts/Preferences/WebPreferencesDebug.yaml --experimental /Volumes/Data/worker/tvOS-14-Simulator-Build-EWS/build/WebKitBuild/Release-appletvsimulator/usr/local/include/wtf/Scripts/Preferences/WebPreferencesExperimental.yaml --internal /Volumes/Data/worker/tvOS-14-Simulator-Build-EWS/build/WebKitBuild/Release-appletvsimulator/usr/local/include/wtf/Scripts/Preferences/WebPreferencesInternal.yaml --template /Volumes/Data/worker/tvOS-14-Simulator-Build-EWS/build/Tools/DumpRenderTree/Scripts/PreferencesTemplates/TestOptionsGeneratedWebKitLegacyKeyMapping.cpp.erb --template /Volumes/Data/worker/tvOS-14-Simulator-Build-EWS/build/Tools/DumpRenderTree/Scripts/PreferencesTemplates/TestOptionsGeneratedKeys.h.erb
cat /Volumes/Data/worker/tvOS-14-Simulator-Build-EWS/build/Tools/DumpRenderTree/Scripts/PreferencesTemplates/TestOptionsGeneratedKeys.h.erb.sh &gt;/Volumes/Data/worker/tvOS-14-Simulator-Build-EWS/build/Tools/DumpRenderTree/Scripts/PreferencesTemplates/TestOptionsGeneratedKeys.h.erb 
cat: /Volumes/Data/worker/tvOS-14-Simulator-Build-EWS/build/Tools/DumpRenderTree/Scripts/PreferencesTemplates/TestOptionsGeneratedKeys.h.erb.sh: No such file or directory


I don&apos;t understand where the .sh suffixes are coming from, but I am clearly doing something quite wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699030</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-17 17:34:54 -0700</bug_when>
    <thetext>I don’t see a &quot;cat&quot; command anywhere in DerivedSources.make.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699031</commentid>
    <comment_count>8</comment_count>
      <attachid>411688</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-17 17:35:11 -0700</bug_when>
    <thetext>Comment on attachment 411688
Patch

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

Trying to figure this out but so far nothing.

&gt; Tools/DumpRenderTree/DerivedSources.make:32
&gt; +VPATH = \
&gt; +    $(UISCRIPTCONTEXT_DIR) \
&gt; +    $(PREFERENCES_TEMPLATE_DIR) \
&gt; +#

I am not sure what we are trying to accomplish here. VPATH tells make where to *search* for prerequisites. I don’t think we need a VPATH to make a rule work when the prerequisites are full paths, so I don’t see why PREFERENCES_TEMPLATE_DIR needs to be in a VPATH.

&gt; Tools/DumpRenderTree/DerivedSources.make:46
&gt;  WEB_PREFERENCES_FILES = $(basename $(notdir $(WEB_PREFERENCES_TEMPLATES)))

WEB_PREFERENCES_FILES will be:

    TestOptionsGeneratedWebKitLegacyKeyMapping.cpp TestOptionsGeneratedKeys.h

&gt; Tools/DumpRenderTree/DerivedSources.make:47
&gt; +WEB_PREFERENCES_PATTERNS = $(subst .,%,$(WEB_PREFERENCES_FILES))

WEB_PREFERENCES_PATTERNS will be:

        TestOptionsGeneratedWebKitLegacyKeyMapping%cpp TestOptionsGeneratedKeys%h

&gt; Tools/DumpRenderTree/DerivedSources.make:49
&gt;  all : $(WEB_PREFERENCES_FILES)

A little strange to have this *before* the .PHONY : all rule below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699036</commentid>
    <comment_count>9</comment_count>
      <attachid>411689</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-17 18:00:53 -0700</bug_when>
    <thetext>Created attachment 411689
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699039</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-17 18:03:04 -0700</bug_when>
    <thetext>Try a more traditional Makefile pattern rule here:

%.cpp : %.cpp.erb $(WTF_BUILD_SCRIPTS_DIR)/GeneratePreferences.rb $(WEB_PREFERENCES_TEMPLATES) $(WEB_PREFERENCES)
	$(RUBY) $(WTF_BUILD_SCRIPTS_DIR)/GeneratePreferences.rb --frontend WebKitLegacy --base ${WTF_BUILD_SCRIPTS_DIR}/Preferences/WebPreferences.yaml --debug ${WTF_BUILD_SCRIPTS_DIR}/Preferences/WebPreferencesDebug.yaml --experimental ${WTF_BUILD_SCRIPTS_DIR}/Preferences/WebPreferencesExperimental.yaml --internal ${WTF_BUILD_SCRIPTS_DIR}/Preferences/WebPreferencesInternal.yaml --template $&lt;

%.h : %.h.erb $(WTF_BUILD_SCRIPTS_DIR)/GeneratePreferences.rb $(WEB_PREFERENCES_TEMPLATES) $(WEB_PREFERENCES)
	$(RUBY) $(WTF_BUILD_SCRIPTS_DIR)/GeneratePreferences.rb --frontend WebKitLegacy --base ${WTF_BUILD_SCRIPTS_DIR}/Preferences/WebPreferences.yaml --debug ${WTF_BUILD_SCRIPTS_DIR}/Preferences/WebPreferencesDebug.yaml --experimental ${WTF_BUILD_SCRIPTS_DIR}/Preferences/WebPreferencesExperimental.yaml --internal ${WTF_BUILD_SCRIPTS_DIR}/Preferences/WebPreferencesInternal.yaml --template $&lt;


I&apos;m not sure what the right way to say the output could either end in a .h or a .cpp here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699044</commentid>
    <comment_count>11</comment_count>
      <attachid>411693</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-17 18:41:18 -0700</bug_when>
    <thetext>Created attachment 411693
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699046</commentid>
    <comment_count>12</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-17 18:41:58 -0700</bug_when>
    <thetext>This one has make being invoked with make -d, see if we can find anything interesting from the debug logging make has.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699048</commentid>
    <comment_count>13</comment_count>
      <attachid>411695</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-17 19:13:13 -0700</bug_when>
    <thetext>Created attachment 411695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699095</commentid>
    <comment_count>14</comment_count>
      <attachid>411706</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-18 09:19:36 -0700</bug_when>
    <thetext>Created attachment 411706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699099</commentid>
    <comment_count>15</comment_count>
      <attachid>411707</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-18 10:04:47 -0700</bug_when>
    <thetext>Created attachment 411707
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699101</commentid>
    <comment_count>16</comment_count>
      <attachid>411709</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-18 10:30:09 -0700</bug_when>
    <thetext>Created attachment 411709
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699102</commentid>
    <comment_count>17</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-18 10:34:50 -0700</bug_when>
    <thetext>Yay! I think the static patterns work! Never used those before, but they seem like a good fit here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699105</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-18 11:40:29 -0700</bug_when>
    <thetext>Yes, that does seem like a great solution. Less exotic than the others, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699108</commentid>
    <comment_count>19</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-18 11:49:34 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #18)
&gt; Yes, that does seem like a great solution. Less exotic than the others, too.

Now just to fix the test failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699109</commentid>
    <comment_count>20</comment_count>
      <attachid>411711</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-18 11:53:52 -0700</bug_when>
    <thetext>Created attachment 411711
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699117</commentid>
    <comment_count>21</comment_count>
      <attachid>411712</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-18 12:53:57 -0700</bug_when>
    <thetext>Created attachment 411712
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699118</commentid>
    <comment_count>22</comment_count>
      <attachid>411713</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-18 12:57:56 -0700</bug_when>
    <thetext>Created attachment 411713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699120</commentid>
    <comment_count>23</comment_count>
      <attachid>411714</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-18 13:02:00 -0700</bug_when>
    <thetext>Created attachment 411714
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699122</commentid>
    <comment_count>24</comment_count>
      <attachid>411715</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-18 13:11:53 -0700</bug_when>
    <thetext>Created attachment 411715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699123</commentid>
    <comment_count>25</comment_count>
      <attachid>411716</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-18 13:22:45 -0700</bug_when>
    <thetext>Created attachment 411716
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699179</commentid>
    <comment_count>26</comment_count>
      <attachid>411723</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-18 18:29:33 -0700</bug_when>
    <thetext>Created attachment 411723
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699180</commentid>
    <comment_count>27</comment_count>
      <attachid>411724</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-18 18:43:24 -0700</bug_when>
    <thetext>Created attachment 411724
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699194</commentid>
    <comment_count>28</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-18 22:13:33 -0700</bug_when>
    <thetext>Looks like those tests are passing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699269</commentid>
    <comment_count>29</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-19 09:04:58 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #28)
&gt; Looks like those tests are passing.

The Mac-wk1 bots seem to have hit some issues extracting results, and seem to still be failing. I reached out to the bot-watchers to see what is up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699505</commentid>
    <comment_count>30</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-10-19 16:21:27 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #29)
&gt; The Mac-wk1 bots seem to have hit some issues extracting results, and seem
&gt; to still be failing. I reached out to the bot-watchers to see what is up.
mac-wk1 and mac-debug-wk1 seems to be consistently failing with 30+ failures. Also the layout-test runs for this patch on these queues have 500,000+ log lines which is unusually high (~10x the usual). Please have a look.

e.g.:
https://ews-build.webkit.org/#/builders/30/builds/20930
https://ews-build.webkit.org/#/builders/30/builds/20900
https://ews-build.webkit.org/#/builders/30/builds/20894
https://ews-build.webkit.org/#/builders/32/builds/20683
https://ews-build.webkit.org/#/builders/32/builds/20675</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701030</commentid>
    <comment_count>31</comment_count>
      <attachid>412186</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-23 09:08:35 -0700</bug_when>
    <thetext>Created attachment 412186
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701038</commentid>
    <comment_count>32</comment_count>
      <attachid>412189</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-23 09:18:04 -0700</bug_when>
    <thetext>Created attachment 412189
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701039</commentid>
    <comment_count>33</comment_count>
      <attachid>412189</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-23 09:21:23 -0700</bug_when>
    <thetext>Comment on attachment 412189
Patch

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

&gt; Source/WebKitLegacy/mac/WebView/WebPreferences.mm:2992
&gt;  @end
&gt;  
&gt; +
&gt; +@implementation WebPreferences (WebPrivateTesting)

Maybe just one blank line here?

&gt; Source/WebKitLegacy/mac/WebView/WebPreferences.mm:3004
&gt; +    RetainPtr&lt;CFHTTPCookieStorageRef&gt; cookieStorage = NetworkStorageSessionMap::defaultStorageSession().cookieStorage();

auto

&gt; Source/WebKitLegacy/mac/WebView/WebPreferences.mm:3005
&gt; +    ASSERT(cookieStorage); // Will fail when NetworkStorageSessionMap::switchToNewTestingSession() was not called beforehand.

Maybe RELEASE_ASSERT? Certainly harmless to do that, and can’t say that about all ASSERT.

&gt; Source/WebKitLegacy/mac/WebView/WebPreferencesPrivate.h:306
&gt; +@interface WebPreferences (WebPrivateTesting)

I suggest either a blank line after @interface or no blank line before @end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701043</commentid>
    <comment_count>34</comment_count>
      <attachid>412190</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-23 09:31:26 -0700</bug_when>
    <thetext>Created attachment 412190
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701046</commentid>
    <comment_count>35</comment_count>
      <attachid>412191</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-23 09:43:25 -0700</bug_when>
    <thetext>Created attachment 412191
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701048</commentid>
    <comment_count>36</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-23 10:02:55 -0700</bug_when>
    <thetext>hm, something is just destroying the tests here. 

09:56:21.563 29570 worker/9 animations/font-variations/font-stretch.html output stderr lines:
09:56:21.563 29570   2020-10-23 09:56:20.919 DumpRenderTree[29573:69131] NetworkStorageDB:_openDBReadConnections: failed to open read connection to DB @ (null)/Cache.db.  Error=14. Cause=unable to open database file
09:56:21.563 29570   2020-10-23 09:56:20.919 DumpRenderTree[29573:69131] CacheRead: unable to open cache files in (null)
09:56:21.563 29570   2020-10-23 09:56:21.436 DumpRenderTree[29573:69131] NetworkStorageDB:_openDBReadConnections: failed to open read connection to DB @ (null)/Cache.db.  Error=14. Cause=unable to open database file
09:56:21.563 29570   2020-10-23 09:56:21.436 DumpRenderTree[29573:69131] CacheRead: unable to open cache files in (null)
09:56:21.563 29570   2020-10-23 09:56:21.462 DumpRenderTree[29573:69131] NetworkStorageDB:_openDBReadConnections: failed to open read connection to DB @ (null)/Cache.db.  Error=14. Cause=unable to open database file
09:56:21.563 29570   2020-10-23 09:56:21.462 DumpRenderTree[29573:69131] CacheRead: unable to open cache files in (null)

I don&apos;t see this output when running locally, and can&apos;t find any references to NetworkStorageDB, so not sure what is going on yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701061</commentid>
    <comment_count>37</comment_count>
      <attachid>412194</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-23 10:38:50 -0700</bug_when>
    <thetext>Created attachment 412194
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701062</commentid>
    <comment_count>38</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-23 10:39:48 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #36)
&gt; hm, something is just destroying the tests here. 
&gt; 
&gt; 09:56:21.563 29570 worker/9 animations/font-variations/font-stretch.html
&gt; output stderr lines:
&gt; 09:56:21.563 29570   2020-10-23 09:56:20.919 DumpRenderTree[29573:69131]
&gt; NetworkStorageDB:_openDBReadConnections: failed to open read connection to
&gt; DB @ (null)/Cache.db.  Error=14. Cause=unable to open database file
&gt; 09:56:21.563 29570   2020-10-23 09:56:20.919 DumpRenderTree[29573:69131]
&gt; CacheRead: unable to open cache files in (null)
&gt; 09:56:21.563 29570   2020-10-23 09:56:21.436 DumpRenderTree[29573:69131]
&gt; NetworkStorageDB:_openDBReadConnections: failed to open read connection to
&gt; DB @ (null)/Cache.db.  Error=14. Cause=unable to open database file
&gt; 09:56:21.563 29570   2020-10-23 09:56:21.436 DumpRenderTree[29573:69131]
&gt; CacheRead: unable to open cache files in (null)
&gt; 09:56:21.563 29570   2020-10-23 09:56:21.462 DumpRenderTree[29573:69131]
&gt; NetworkStorageDB:_openDBReadConnections: failed to open read connection to
&gt; DB @ (null)/Cache.db.  Error=14. Cause=unable to open database file
&gt; 09:56:21.563 29570   2020-10-23 09:56:21.462 DumpRenderTree[29573:69131]
&gt; CacheRead: unable to open cache files in (null)
&gt; 
&gt; I don&apos;t see this output when running locally, and can&apos;t find any references
&gt; to NetworkStorageDB, so not sure what is going on yet.

Finally found NetworkStorageDB in CFNetwork. I broke the cache somehow here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701077</commentid>
    <comment_count>39</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-23 11:09:05 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #38)
&gt; (In reply to Sam Weinig from comment #36)
&gt; &gt; hm, something is just destroying the tests here. 
&gt; &gt; 
&gt; &gt; 09:56:21.563 29570 worker/9 animations/font-variations/font-stretch.html
&gt; &gt; output stderr lines:
&gt; &gt; 09:56:21.563 29570   2020-10-23 09:56:20.919 DumpRenderTree[29573:69131]
&gt; &gt; NetworkStorageDB:_openDBReadConnections: failed to open read connection to
&gt; &gt; DB @ (null)/Cache.db.  Error=14. Cause=unable to open database file
&gt; &gt; 09:56:21.563 29570   2020-10-23 09:56:20.919 DumpRenderTree[29573:69131]
&gt; &gt; CacheRead: unable to open cache files in (null)
&gt; &gt; 09:56:21.563 29570   2020-10-23 09:56:21.436 DumpRenderTree[29573:69131]
&gt; &gt; NetworkStorageDB:_openDBReadConnections: failed to open read connection to
&gt; &gt; DB @ (null)/Cache.db.  Error=14. Cause=unable to open database file
&gt; &gt; 09:56:21.563 29570   2020-10-23 09:56:21.436 DumpRenderTree[29573:69131]
&gt; &gt; CacheRead: unable to open cache files in (null)
&gt; &gt; 09:56:21.563 29570   2020-10-23 09:56:21.462 DumpRenderTree[29573:69131]
&gt; &gt; NetworkStorageDB:_openDBReadConnections: failed to open read connection to
&gt; &gt; DB @ (null)/Cache.db.  Error=14. Cause=unable to open database file
&gt; &gt; 09:56:21.563 29570   2020-10-23 09:56:21.462 DumpRenderTree[29573:69131]
&gt; &gt; CacheRead: unable to open cache files in (null)
&gt; &gt; 
&gt; &gt; I don&apos;t see this output when running locally, and can&apos;t find any references
&gt; &gt; to NetworkStorageDB, so not sure what is going on yet.
&gt; 
&gt; Finally found NetworkStorageDB in CFNetwork. I broke the cache somehow here.

Alex, Antti, Kilzer,

Do any of you know what might be causing this? Seems like the Cache.db path is getting set to null. But I can&apos;t quite figure out why (and for unrelated reasons, can&apos;t easily debug it locally.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701172</commentid>
    <comment_count>40</comment_count>
      <attachid>412194</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-23 17:30:54 -0700</bug_when>
    <thetext>Comment on attachment 412194
Patch

WebKitLegacy networking was mostly before my time, but I would look closely at the call to switchToNewTestingSession and the call to _resetToDefaultValuesForTesting looks  like a suspicious change in behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701177</commentid>
    <comment_count>41</comment_count>
      <attachid>412219</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-23 18:08:20 -0700</bug_when>
    <thetext>Created attachment 412219
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701237</commentid>
    <comment_count>42</comment_count>
      <attachid>412219</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-24 09:09:38 -0700</bug_when>
    <thetext>Comment on attachment 412219
Patch

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

&gt; Tools/DumpRenderTree/mac/DumpRenderTree.mm:855
&gt; +    // [preferences _resetToDefaultValuesForTesting];

This seems to have done it.  Please don&apos;t commit this, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701239</commentid>
    <comment_count>43</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-24 09:23:05 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #42)
&gt; Comment on attachment 412219 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=412219&amp;action=review
&gt; 
&gt; &gt; Tools/DumpRenderTree/mac/DumpRenderTree.mm:855
&gt; &gt; +    // [preferences _resetToDefaultValuesForTesting];
&gt; 
&gt; This seems to have done it.  Please don&apos;t commit this, though.

Oh, I&apos;m very well aware it&apos;s the reset that is breaking things (and won&apos;t commit until I figure it out and fix it), I&apos;ve done a variety of different reset methods and they all cause the breakage. Ordinarily I would just debug it, but can&apos;t at the moment, so am doing triage via the bots :(.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701246</commentid>
    <comment_count>44</comment_count>
      <attachid>412243</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-24 11:31:06 -0700</bug_when>
    <thetext>Created attachment 412243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701247</commentid>
    <comment_count>45</comment_count>
      <attachid>412244</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-24 11:56:37 -0700</bug_when>
    <thetext>Created attachment 412244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701266</commentid>
    <comment_count>46</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-24 14:38:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/70653177&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701271</commentid>
    <comment_count>47</comment_count>
      <attachid>412252</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-24 16:51:02 -0700</bug_when>
    <thetext>Created attachment 412252
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701272</commentid>
    <comment_count>48</comment_count>
      <attachid>412253</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-24 17:11:33 -0700</bug_when>
    <thetext>Created attachment 412253
Experiment: Remove setSharedURLCache  and add _resetToDefaultValuesForTesting</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701273</commentid>
    <comment_count>49</comment_count>
      <attachid>412254</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-24 17:13:23 -0700</bug_when>
    <thetext>Created attachment 412254
Experiment: Remove setSharedURLCache and new WebPreferences per test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701277</commentid>
    <comment_count>50</comment_count>
      <attachid>412256</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-24 18:55:47 -0700</bug_when>
    <thetext>Created attachment 412256
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701296</commentid>
    <comment_count>51</comment_count>
      <attachid>412264</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-25 08:57:36 -0700</bug_when>
    <thetext>Created attachment 412264
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703413</commentid>
    <comment_count>52</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-11-01 12:20:31 -0800</bug_when>
    <thetext>This ended up being done in via other changes in a slightly different way.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411678</attachid>
            <date>2020-10-17 14:52:36 -0700</date>
            <delta_ts>2020-10-17 16:31:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201017145235.patch</filename>
            <type>text/plain</type>
            <size>50038</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDIwLTEwLTE3ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVuZGVyVHJlZSB0
byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERPTidUIExBTkQuIEZJR1VSRSBPVVQgV0hZIFRI
SVMgSVMgQ0FVU0lORyBJU1NVRVMuCisKKyAgICAgICAgKiBTY3JpcHRzL0dlbmVyYXRlUHJlZmVy
ZW5jZXMucmI6CisgICAgICAgIEdvIGJhY2sgdG8gdGhlIG9sZCB3YXkgb2Ygd3JpdGluZyBvdXQg
cHJlZmVyZW5jZXMsIHJldmVydGluZyB0aGUgY2hhbmdlcyBmcm9tIAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MzcxLiBUaGlzIHdhcyBjYXVzaW5n
IGJ1aWxkIGVycm9ycy4KKwogMjAyMC0xMC0xNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3lzdGVtIHRyYWNlIHBvaW50cyBmb3IgZmx1c2hp
bmcgcmVtb3RlIGltYWdlIGJ1ZmZlcnMKSW5kZXg6IFNvdXJjZS9XVEYvU2NyaXB0cy9HZW5lcmF0
ZVByZWZlcmVuY2VzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvU2NyaXB0cy9HZW5lcmF0
ZVByZWZlcmVuY2VzLnJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV1RGL1NjcmlwdHMv
R2VuZXJhdGVQcmVmZXJlbmNlcy5yYgkod29ya2luZyBjb3B5KQpAQCAtMjE1LDE5ICsyMTUsMTIg
QEAgY2xhc3MgUHJlZmVyZW5jZXMKICAgZW5kCiAKICAgZGVmIHJlbmRlclRlbXBsYXRlKHRlbXBs
YXRlRmlsZSwgb3V0cHV0RGlyZWN0b3J5KQotICAgIHJlc3VsdEZpbGUgPSBGaWxlLmpvaW4ob3V0
cHV0RGlyZWN0b3J5LCBGaWxlLmJhc2VuYW1lKHRlbXBsYXRlRmlsZSwgIi5lcmIiKSkKLSAgICB0
ZW1wUmVzdWx0RmlsZSA9IHJlc3VsdEZpbGUgKyAiLnRtcCIKKyAgICByZXN1bHRGaWxlID0gRmls
ZS5iYXNlbmFtZSh0ZW1wbGF0ZUZpbGUsICIuZXJiIikKIAogICAgIG91dHB1dCA9IEVSQi5uZXco
RmlsZS5yZWFkKHRlbXBsYXRlRmlsZSksIDAsICItIikucmVzdWx0KGJpbmRpbmcpCi0gICAgRmls
ZS5vcGVuKHRlbXBSZXN1bHRGaWxlLCAidysiKSBkbyB8ZnwKKyAgICBGaWxlLm9wZW4oRmlsZS5q
b2luKG91dHB1dERpcmVjdG9yeSwgcmVzdWx0RmlsZSksICJ3KyIpIGRvIHxmfAogICAgICAgZi53
cml0ZShvdXRwdXQpCiAgICAgZW5kCi0gICAgaWYgKCFGaWxlLmV4aXN0PyhyZXN1bHRGaWxlKSB8
fCBJTzo6cmVhZChyZXN1bHRGaWxlKSAhPSBJTzo6cmVhZCh0ZW1wUmVzdWx0RmlsZSkpCi0gICAg
ICBGaWxlVXRpbHMubW92ZSh0ZW1wUmVzdWx0RmlsZSwgcmVzdWx0RmlsZSkKLSAgICBlbHNlCi0g
ICAgICBGaWxlVXRpbHMucmVtb3ZlX2ZpbGUodGVtcFJlc3VsdEZpbGUpCi0gICAgICBGaWxlVXRp
bHMudXB0b2RhdGU/KHJlc3VsdEZpbGUsIFt0ZW1wbGF0ZUZpbGVdKSBvciBGaWxlVXRpbHMudG91
Y2gocmVzdWx0RmlsZSkKLSAgICBlbmQKICAgZW5kCiBlbmQKIApJbmRleDogU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMjAtMTAtMTcgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29t
PgorCisgICAgICAgIFtUZXN0aW5nXSBDb252ZXJ0IER1bXBSZW5kZXJUcmVlIHRvIHVzZSBnZW5l
cmF0ZWQgdGVzdCBoZWFkZXIgb3B0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE3ODgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVuYW1lIFdLUHJlZmVyZW5jZXNTZXQqVmFsdWVGb3JLZXkgU1BJ
IHRvIFdLUHJlZmVyZW5jZXNTZXQqVmFsdWVGb3JLZXlGb3JUZXN0aW5nCisgICAgICAgIHRvIG1h
a2UgaXQgY2xlYXIgd2hhdCB0aGV5IGFyZSB1c2VkIGZvciBhbmQgZm9yIGNvbnNpc3RlbmN5IHdp
dGggV2ViS2l0TGVnYWN5LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5j
ZXMuY3BwOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleUZvclRlc3Rp
bmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5Rm9yVGVzdGlu
Zyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXlGb3JUZXN0aW5n
KToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleUZvclRlc3Rpbmcp
OgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleSk6IERlbGV0ZWQuCisg
ICAgICAgIChXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXkpOiBEZWxldGVkLgorICAg
ICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleSk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmg6CisKIDIwMjAtMTAt
MTYgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbR1BVIFByb2Nlc3NdIEludHJvZHVjZSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgdG8gbWFu
YWdlIHRoZSByZXNvdXJjZXMgaW4gdGhlIEdQVSBQcm9jZXNzCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gMjY4NjQ4
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc4LDIyICs3OCwyMiBAQCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRJbnRl
cm5hbERlYnVnRmVhdHVyCiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0SW50ZXJuYWxE
ZWJ1Z0ZlYXR1cmVFbmFibGVkRm9yS2V5KHRvV1RGU3RyaW5nKGludGVybmFsRGVidWdGZWF0dXJl
S2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXko
V0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1ZSwgV0tTdHJpbmdSZWYg
a2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkp
CiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0Qm9vbFZhbHVlRm9yS2V5KHRvV1RG
U3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFs
dWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgZG91YmxlIHZhbHVlLCBX
S1N0cmluZ1JlZiBrZXkpCit2b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleUZv
clRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgZG91YmxlIHZhbHVlLCBX
S1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0Qm9vbFZh
bHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVu
Y2VzU2V0VUludDMyVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwg
dWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldFVJ
bnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVm
LCB1aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJl
bmNlc1JlZiktPnNldFVJbnQzMlZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHZhbHVlKTsK
IH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkK
K3ZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZl
cmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdSZWYg
a2V5KQogewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldFN0cmluZ1ZhbHVlRm9yS2V5
KHRvV1RGU3RyaW5nKGtleSksIHRvV1RGU3RyaW5nKHZhbHVlKSk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2
YXRlLmgJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDEwICs1Niwx
MCBAQCBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzUmVzZXRBbGxJbnRlCiBXS19FWFBPUlQg
dm9pZCBXS1ByZWZlcmVuY2VzU2V0SW50ZXJuYWxEZWJ1Z0ZlYXR1cmVGb3JLZXkoV0tQcmVmZXJl
bmNlc1JlZiwgYm9vbCwgV0tTdHJpbmdSZWYpOwogCiAvLyBUaGUgZm9sbG93aW5nIGdlbmVyaWMg
c2V0dGVyIGZ1bmN0aW9ucyBhcmUgb25seSBpbnRlbmRlZCBmb3IgdXNlIGJ5IHRlc3RpbmcgaW5m
cmFzdHJ1Y3R1cmUuCi1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9y
S2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgdmFsdWUsIFdLU3RyaW5n
UmVmIGtleSk7Ci1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JL
ZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0cmlu
Z1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9y
S2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIHVpbnQzMl90IHZhbHVlLCBXS1N0
cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVl
Rm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RyaW5nUmVmIHZhbHVl
LCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldEJvb2xW
YWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9v
bCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNT
ZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNl
c1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQgV0tQ
cmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVm
IHByZWZlcmVuY2VzUmVmLCB1aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VY
UE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQ
cmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFsdWUsIFdLU3RyaW5n
UmVmIGtleSk7CiAKIC8vIEZvciBUZXN0IFJ1bm5lciBVc2Ugb25seS4KIFdLX0VYUE9SVCB2b2lk
IFdLUHJlZmVyZW5jZXNSZXNldFRlc3RSdW5uZXJPdmVycmlkZXMoV0tQcmVmZXJlbmNlc1JlZiBw
cmVmZXJlbmNlc1JlZik7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAyMC0xMC0xNyAgU2FtIFdlaW5pZyAgPHdlaW5pZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgW1Rlc3RpbmddIENvbnZlcnQgRHVtcFJlbmRlclRyZWUgdG8g
dXNlIGdlbmVyYXRlZCB0ZXN0IGhlYWRlciBvcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc4ODAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgYSBzZXQgb2Ygc2V0dGVycyB0byBmb3Ig
RHVtcFJlbmRlclRyZWUgdG8gdXNlIHdoZW4gc2V0dGluZyBwcmVmZXJlbmNlcworICAgICAgICBi
eSBzdHJpbmcuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tOgorICAgICAg
ICAoK1tXZWJQcmVmZXJlbmNlcyBfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Np
b25dKToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3NldEN1cnJlbnROZXR3b3JrTG9hZGVy
U2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTpdKToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMg
X2NsZWFyTmV0d29ya0xvYWRlclNlc3Npb25dKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMg
X3NldEJvb2xQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAg
ICgtW1dlYlByZWZlcmVuY2VzIF9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1
ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXREb3VibGVQcmVmZXJl
bmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVu
Y2VzIF9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6Cisg
ICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhWYWx1ZTpm
b3JLZXk6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZh
dGUuaDoKKwogMjAyMC0xMC0xNyAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgQ29udmVydCBwcmVmZXJlbmNlcyBpbiBXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaCB0byB1
c2UgQHByb3BlcnR5IHN5bnRheCB0byBtYWtlIHRoZW0gbW9yZSBtYW5hZ2VhYmxlCkluZGV4OiBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0J
KHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
UHJlZmVyZW5jZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2NjAsMjYgKzE2NjAsNiBAQCArICh2
b2lkKV9zZXRJQkNyZWF0b3JJRDooTlNTdHJpbmcgKilzdHJpCiAgICAgW29sZCByZWxlYXNlXTsK
IH0KIAotKyAodm9pZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb24KLXsK
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFdlYlRocmVhZExvY2soKTsKLSNlbmRpZgot
ICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigp
OwotfQotCi0rICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uCi17Ci0gICAgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5kZWxldGVBbGxDb29r
aWVzKCk7Ci19Ci0KLSsgKHZvaWQpX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tp
ZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeQotewotICAgIFJl
dGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCk7
Ci0gICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90IGNhbGxl
ZCBiZWZvcmVoYW5kLgotICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xp
Y3koY29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKLX0KLQogLSAoQk9PTClpc0RPTVBhc3Rl
QWxsb3dlZAogewogICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktpdERPTVBh
c3RlQWxsb3dlZFByZWZlcmVuY2VLZXldOwpAQCAtMTk2NiwxMSArMTk0Niw2IEBAIC0gKHZvaWQp
d2lsbEFkZFRvV2ViVmlldwogICAgICsrX3ByaXZhdGUtPm51bVdlYlZpZXdzOwogfQogCi0tICh2
b2lkKV9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZSBmb3JL
ZXk6KE5TU3RyaW5nICopa2V5Ci17Ci0gICAgW3NlbGYgX3NldFN0cmluZ1ZhbHVlOnZhbHVlIGZv
cktleTprZXldOwotfQotCiAtICh2b2lkKXNldEZ1bGxTY3JlZW5FbmFibGVkOihCT09MKWZsYWcK
IHsKICAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmZsYWcgZm9yS2V5OldlYktpdEZ1bGxTY3JlZW5F
bmFibGVkUHJlZmVyZW5jZUtleV07CkBAIC0zMDEzLDYgKzI5ODgsNTEgQEAgLSAodm9pZClfc2V0
RW5hYmxlZDooQk9PTCl2YWx1ZSBmb3JGZWF0dQogCiBAZW5kCiAKKworQGltcGxlbWVudGF0aW9u
IFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlVGVzdGluZykKKworKyAodm9pZClfc3dpdGNoTmV0
d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb24KK3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorICAgIFdlYlRocmVhZExvY2soKTsKKyNlbmRpZgorICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOworfQorCisrICh2b2lkKV9zZXRDdXJy
ZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFj
Y2VwdFBvbGljeSlwb2xpY3kKK3sKKyAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJl
Zj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3Jh
Z2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpOworICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsg
Ly8gV2lsbCBmYWlsIHdoZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rl
c3RpbmdTZXNzaW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KKyAgICBDRkhUVFBDb29r
aWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGlj
eSk7Cit9CisKKysgKHZvaWQpX2NsZWFyTmV0d29ya0xvYWRlclNlc3Npb24KK3sKKyAgICBOZXR3
b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmRlbGV0ZUFsbENv
b2tpZXMoKTsKK30KKworLSAodm9pZClfc2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZh
bHVlOihCT09MKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2VsZiBfc2V0
Qm9vbFZhbHVlOnZhbHVlIGZvcktleTprZXldOworfQorCistICh2b2lkKV9zZXRVSW50MzJQcmVm
ZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZToodWludDMyX3QpdmFsdWUgZm9yS2V5OihOU1N0cmlu
ZyAqKWtleQoreworICAgIFtzZWxmIF9zZXRJbnRlZ2VyVmFsdWU6dmFsdWUgZm9yS2V5OmtleV07
Cit9CisKKy0gKHZvaWQpX3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihk
b3VibGUpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9zZXRGbG9h
dFZhbHVlOnZhbHVlIGZvcktleTprZXldOworfQorCistICh2b2lkKV9zZXRTdHJpbmdQcmVmZXJl
bmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZSBmb3JLZXk6KE5TU3RyaW5n
ICopa2V5Cit7CisgICAgW3NlbGYgX3NldFN0cmluZ1ZhbHVlOnZhbHVlIGZvcktleTprZXldOwor
fQorCitAZW5kCisKIEBpbXBsZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVBy
ZWZlcmVuY2VzQ29udmVydGVkVG9XZWJGZWF0dXJlKQogCiAtIChCT09MKXVzZXJHZXN0dXJlUHJv
bWlzZVByb3BhZ2F0aW9uRW5hYmxlZApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCShyZXZpc2lvbiAyNjg2
NDgpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJp
dmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSwxMyArODksNiBAQCBAaW50ZXJmYWNlIFdlYlBy
ZWZlcmVuY2VzIChXZWJQcml2YXRlKQogKyAodm9pZClfc2V0SW5pdGlhbERlZmF1bHRUZXh0RW5j
b2RpbmdUb1N5c3RlbUVuY29kaW5nOwogKyAodm9pZClfc2V0SUJDcmVhdG9ySUQ6KE5TU3RyaW5n
ICopc3RyaW5nOwogCi0vLyBGb3IgRHVtcFJlbmRlclRyZWUgdXNlIG9ubHkuCi0rICh2b2lkKV9z
d2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbjsKLSsgKHZvaWQpX3NldEN1cnJl
bnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNj
ZXB0UG9saWN5KWNvb2tpZUFjY2VwdFBvbGljeTsKLSsgKHZvaWQpX2NsZWFyTmV0d29ya0xvYWRl
clNlc3Npb247Ci0vLyBVc2VkIHRvIHNldCBwcmVmZXJlbmNlIHNwZWNpZmllZCBpbiB0aGUgdGVz
dCB2aWEgTGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKC4uKS4KLS0gKHZv
aWQpX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZhbHVlOihOU1N0cmluZyAqKXZhbHVlIGZvcktl
eTooTlNTdHJpbmcgKilrZXk7Ci0KICsgKHZvaWQpc2V0V2ViS2l0TGlua1RpbWVWZXJzaW9uOihp
bnQpdmVyc2lvbjsKIAogLy8gRm9yIFdlYlZpZXcncyB1c2Ugb25seS4KQEAgLTMxMCw2ICszMDMs
MTggQEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZUZlYQogLSAodm9pZClf
c2V0RW5hYmxlZDooQk9PTCl2YWx1ZSBmb3JGZWF0dXJlOihXZWJGZWF0dXJlICopZmVhdHVyZTsK
IEBlbmQKIAorQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVRlc3RpbmcpCisr
ICh2b2lkKV9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbjsKKysgKHZvaWQp
X3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQ
Q29va2llQWNjZXB0UG9saWN5KWNvb2tpZUFjY2VwdFBvbGljeTsKKysgKHZvaWQpX2NsZWFyTmV0
d29ya0xvYWRlclNlc3Npb247CisKKy0gKHZvaWQpX3NldEJvb2xQcmVmZXJlbmNlRm9yVGVzdGlu
Z1dpdGhWYWx1ZTooQk9PTCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OworLSAodm9pZClf
c2V0VUludDMyUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KHVpbnQzMl90KXZhbHVlIGZv
cktleTooTlNTdHJpbmcgKilrZXk7CistICh2b2lkKV9zZXREb3VibGVQcmVmZXJlbmNlRm9yVGVz
dGluZ1dpdGhWYWx1ZTooZG91YmxlKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXk7CistICh2
b2lkKV9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTooTlNTdHJpbmcgKil2
YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OworCitAZW5kCisKIC8vIEZJWE1FOiBJZiB0aGVz
ZSBhcmUgbm90IHVzZWQgYW55d2hlcmUsIHdlIHNob3VsZCByZW1vdmUgdGhlbSBhbmQgb25seSB1
c2UgV2ViRmVhdHVyZSBtZWNoYW5pc20gZm9yIHRoZSBwcmVmZXJlbmNlLgogQGludGVyZmFjZSBX
ZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVByZWZlcmVuY2VzQ29udmVydGVkVG9XZWJGZWF0dXJl
KQogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgdXNlckdlc3R1cmVQcm9taXNlUHJvcGFnYXRp
b25FbmFibGVkOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0No
YW5nZUxvZwkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsNTggQEAKKzIwMjAtMTAtMTcgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBw
bGUuY29tPgorCisgICAgICAgIFtUZXN0aW5nXSBDb252ZXJ0IER1bXBSZW5kZXJUcmVlIHRvIHVz
ZSBnZW5lcmF0ZWQgdGVzdCBoZWFkZXIgb3B0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3ODgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW1dJUF0KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1w
UmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRX
ZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmI6IEFkZGVkLgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL1Rlc3RPcHRpb25zLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6OmRlZmF1
bHRzKToKKyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6OndlYlZpZXdJc0NvbXBhdGlibGVXaXRo
T3B0aW9ucyBjb25zdCk6CisgICAgICAgIChXVFI6OmZlYXR1cmVWYWx1ZSk6CisgICAgICAgIChX
VFI6OlRlc3RPcHRpb25zOjpib29sVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZSBjb25zdCk6CisgICAg
ICAgIChXVFI6OlRlc3RPcHRpb25zOjpzdHJpbmdUZXN0UnVubmVyRmVhdHVyZVZhbHVlIGNvbnN0
KToKKyAgICAgICAgKFdUUjo6c2V0VmFsdWVJZlNldEluTWFwKTogRGVsZXRlZC4KKyAgICAgICAg
KFdUUjo6VGVzdE9wdGlvbnM6OlRlc3RPcHRpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6VGVz
dE9wdGlvbnMpOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6ZHVtcEpTQ29uc29sZUxvZ0lu
U3RkRXJyIGNvbnN0KToKKyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6OmVuYWJsZURyYWdEZXN0
aW5hdGlvbkFjdGlvbkxvYWQgY29uc3QpOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6bGF5
ZXJCYWNrZWRXZWJWaWV3IGNvbnN0KToKKyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6OnVzZUVw
aGVtZXJhbFNlc3Npb24gY29uc3QpOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6YWRkaXRp
b25hbFN1cHBvcnRlZEltYWdlVHlwZXMgY29uc3QpOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9u
czo6anNjT3B0aW9ucyBjb25zdCk6CisgICAgICAgIChXVFI6OlRlc3RPcHRpb25zOjpib29sV2Vi
UHJlZmVyZW5jZUZlYXR1cmVzIGNvbnN0KToKKyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6OmRv
dWJsZVdlYlByZWZlcmVuY2VGZWF0dXJlcyBjb25zdCk6CisgICAgICAgIChXVFI6OlRlc3RPcHRp
b25zOjp1aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMgY29uc3QpOgorICAgICAgICAoV1RSOjpU
ZXN0T3B0aW9uczo6c3RyaW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzIGNvbnN0KToKKyAgICAgICAg
KCk6IERlbGV0ZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVl
Lm1tOgorICAgICAgICAodG9OUyk6CisgICAgICAgIChjcmVhdGVXZWJWaWV3QW5kT2Zmc2NyZWVu
V2luZG93KToKKyAgICAgICAgKHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMp
OgorICAgICAgICAoc2V0V2ViUHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9ucyk6CisgICAgICAgIChz
ZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlc0ZvclRlc3RpbmcpOgorICAgICAgICAoc2V0SlND
T3B0aW9ucyk6CisgICAgICAgIChyZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZSk6CisgICAg
ICAgICh0ZXN0T3B0aW9uc0ZvclRlc3QpOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06CisgICAgICAgIChUZXN0UnVubmVy
OjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0VXNl
clN0eWxlU2hlZXRMb2NhdGlvbik6CisgICAgICAgIChUZXN0UnVubmVyOjpvdmVycmlkZVByZWZl
cmVuY2UpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0Q2FjaGVNb2RlbCk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW06CisgICAgICAgICgtW1VJRGVsZWdhdGUg
cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rpbmc6XSk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpyZXNldFByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKToKKwogMjAyMC0xMC0xNyAg
UGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0ZsYXRw
YWsgU0RLXSBmbGF0cGFrdXRpbHMucHkgcmVwb3J0cyAiS2V5RXJyb3I6ICdnY2MnIiBlcnJvciBp
ZiB1c2luZyB3aXRoIGljZWNjIGFuZCB0b29sY2hhaW5zIGFyZW4ndCBnZW5lcmF0ZWQgeWV0Cklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNyw3
IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZS8KICQoUFJPSkVDVF9E
SVIpLy4uL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0
Q29udHJvbGxlci5pZGwKICQoUFJPSkVDVF9ESVIpL0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JEdW1w
UmVuZGVyVHJlZS5wbQogJChQUk9KRUNUX0RJUikvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRl
cy9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIKKyQoUFJPSkVDVF9ESVIpL1NjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlN
YXBwaW5nLmNwcC5lcmIKICQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9Db2RlR2VuZXJh
dG9yLnBtCiAkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvSURMQXR0cmlidXRlcy5qc29u
CiAkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvSURMUGFyc2VyLnBtCkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxl
bGlzdAkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTIsMyArMiw0IEBACiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUvSlNVSVNj
cmlwdENvbnRyb2xsZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
RHVtcFJlbmRlclRyZWUvSlNVSVNjcmlwdENvbnRyb2xsZXIuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5
cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUv
VGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcApJbmRleDogVG9v
bHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAyNjg2NDgpCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSwxMCArMzEsMTEgQEAgV0VCX1BSRUZFUkVOQ0VTID0gXAogIwogCiBXRUJfUFJFRkVS
RU5DRVNfVEVNUExBVEVTID0gXAorICAgICQoRHVtcFJlbmRlclRyZWUpL1NjcmlwdHMvUHJlZmVy
ZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5n
LmNwcC5lcmIgXAogICAgICQoRHVtcFJlbmRlclRyZWUpL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1w
bGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiIFwKICMKIFdFQl9QUkVGRVJFTkNF
U19GSUxFUyA9ICQoYmFzZW5hbWUgJChub3RkaXIgJChXRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVT
KSkpCi1XRUJfUFJFRkVSRU5DRVNfUEFUVEVSTlMgPSAkKHN1YnN0IC5lcmIsLCQoV0VCX1BSRUZF
UkVOQ0VTX0ZJTEVTKSkKK1dFQl9QUkVGRVJFTkNFU19QQVRURVJOUyA9ICQoc3Vic3QgLiwlLCQo
V0VCX1BSRUZFUkVOQ0VTX0ZJTEVTKSkKIAogYWxsIDogJChXRUJfUFJFRkVSRU5DRVNfRklMRVMp
CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHAJKHJldmlzaW9uIDI2ODY0
OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzAsNiArMzAsNDQgQEAKIAogbmFtZXNwYWNlIFdUUiB7CiAKK2NvbnN0IFRlc3RGZWF0
dXJlcyYgVGVzdE9wdGlvbnM6OmRlZmF1bHRzKCkKK3sKKyAgICBzdGF0aWMgVGVzdEZlYXR1cmVz
IGZlYXR1cmVzOworICAgIGlmIChmZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzLmVt
cHR5KCkpIHsKKyAgICAgICAgZmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyA9IHsK
KyAgICAgICAgICAgIC8vIFRoZXNlIGFyZSBXZWJQcmVmZXJlbmNlIHZhbHVlcyB0aGF0IG11c3Qg
YWx3YXlzIGJlIHNldCBhcyB0aGV5IG1heQorICAgICAgICAgICAgLy8gZGlmZmVyIGZyb20gdGhl
IGRlZmF1bHQgc2V0IGluIHRoZSBXZWJQcmVmZXJlbmNlcyoueWFtbCBjb25maWd1cmF0aW9uLgor
ICAgICAgICAgICAgeyAiQWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVu
dGlhbHMiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRh
VVJMcyIsIHRydWUgfSwKKyAgICAgICAgICAgIHsgIkFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQi
LCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQXR0YWNobWVudEVsZW1lbnRFbmFibGVkIiwgZmFs
c2UgfSwKKyAgICAgICAgICAgIHsgIlVzZXNCYWNrRm9yd2FyZENhY2hlIiwgZmFsc2UgfSwKKyAg
ICAgICAgICAgIHsgIkNvbG9yRmlsdGVyRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7
ICJJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIklu
dGVyc2VjdGlvbk9ic2VydmVyRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJLZXln
ZW5FbGVtZW50RW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJNZW51SXRlbUVsZW1l
bnRFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIk1vZGVybk1lZGlhQ29udHJvbHNF
bmFibGVkIiwgdHJ1ZSB9LAorCisgICAgICAgICAgICB7ICJDU1NMb2dpY2FsRW5hYmxlZCIsIGZh
bHNlIH0sCisgICAgICAgICAgICB7ICJMaW5lSGVpZ2h0VW5pdHNFbmFibGVkIiwgZmFsc2UgfSwK
KyAgICAgICAgICAgIHsgIlNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXNFbmFibGVkIiwg
dHJ1ZSB9LAorICAgICAgICAgICAgeyAiTGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlv
bkVuYWJsZWQiLCB0cnVlIH0sCisKKyAgICAgICAgICAgIHsgIkFkQ2xpY2tBdHRyaWJ1dGlvbkVu
YWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0
aEFuZEhlaWdodEVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQXN5bmNDbGlwYm9h
cmRBUElFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkNTU09NVmlld1Ntb290aFNj
cm9sbGluZ0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQ29udGFjdFBpY2tlckFQ
SUVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQ29yZU1hdGhNTEVuYWJsZWQiLCBm
YWxzZSB9LAorICAgICAgICAgICAgeyAiUmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWQiLCBmYWxz
ZSB9LAorICAgICAgICAgICAgeyAiUmVzaXplT2JzZXJ2ZXJFbmFibGVkIiwgZmFsc2UgfSwKKyAg
ICAgICAgICAgIHsgIldlYkdQVUVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICB9OworICAgIH0K
KyAgICByZXR1cm4gZmVhdHVyZXM7Cit9CisKIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6
OnN0cmluZywgVGVzdEhlYWRlcktleVR5cGU+JiBUZXN0T3B0aW9uczo6a2V5VHlwZU1hcHBpbmco
KQogewogICAgIHN0YXRpYyBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFRl
c3RIZWFkZXJLZXlUeXBlPiBtYXAgewpAQCAtNDcsNTYgKzg1LDQ3IEBAIGNvbnN0IHN0ZDo6dW5v
cmRlcmVkX21hcDxzdGQ6OnN0cmluZywgVGUKICAgICByZXR1cm4gbWFwOwogfQogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCBzZXRWYWx1ZUlmU2V0SW5NYXAoVCYgdmFsdWVUb1Nl
dCwgc3RkOjpzdHJpbmcga2V5LCBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcs
IFQ+JiBtYXApCitib29sIFRlc3RPcHRpb25zOjp3ZWJWaWV3SXNDb21wYXRpYmxlV2l0aE9wdGlv
bnMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpIGNvbnN0Cit7CisgICAgaWYgKG1fZmVhdHVy
ZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLmV4cGVyaW1lbnRh
bEZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuaW50
ZXJuYWxEZWJ1Z0ZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5pbnRlcm5hbERlYnVnRmVh
dHVyZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy5ib29sV2Vi
UHJlZmVyZW5jZUZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5j
ZUZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuZG91
YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5kb3VibGVXZWJQ
cmVmZXJlbmNlRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0
dXJlcy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLnVp
bnQzMldlYlByZWZlcmVuY2VGZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
IChtX2ZlYXR1cmVzLnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVh
dHVyZXMuc3RyaW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKG1fZmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0dXJlcyAhPSBvcHRpb25zLm1f
ZmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmIChtX2ZlYXR1cmVzLmRvdWJsZVRlc3RSdW5uZXJGZWF0dXJlcyAhPSBvcHRpb25zLm1f
ZmVhdHVyZXMuZG91YmxlVGVzdFJ1bm5lckZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKG1fZmVhdHVyZXMuc3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVzICE9IG9wdGlvbnMu
bV9mZWF0dXJlcy5zdHJpbmdUZXN0UnVubmVyRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAobV9mZWF0dXJlcy5zdHJpbmdWZWN0b3JUZXN0UnVubmVyRmVhdHVyZXMgIT0g
b3B0aW9ucy5tX2ZlYXR1cmVzLnN0cmluZ1ZlY3RvclRlc3RSdW5uZXJGZWF0dXJlcykKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBUIGZlYXR1cmVWYWx1ZShzdGQ6OnN0cmluZyBrZXksIFQgZGVmYXVsdFZhbHVlLCBjb25z
dCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFQ+JiBtYXApCiB7CiAgICAgYXV0byBp
dCA9IG1hcC5maW5kKGtleSk7Ci0gICAgaWYgKGl0ID09IG1hcC5lbmQoKSkKLSAgICAgICAgcmV0
dXJuOwotICAgIHZhbHVlVG9TZXQgPSBpdC0+c2Vjb25kOwotfQotCi1UZXN0T3B0aW9uczo6VGVz
dE9wdGlvbnMoVGVzdEZlYXR1cmVzIHRlc3RGZWF0dXJlcykKLXsKLSAgICBzZXRWYWx1ZUlmU2V0
SW5NYXAoYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMsICJB
bGxvd0Nyb3NzT3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyIsIHRlc3RGZWF0
dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAo
YWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcywgIkFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVS
THMiLCB0ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFs
dWVJZlNldEluTWFwKGVuYWJsZUFjY2VsZXJhdGVkRHJhd2luZywgIkFjY2VsZXJhdGVkRHJhd2lu
Z0VuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAg
c2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUF0dGFjaG1lbnRFbGVtZW50LCAiQXR0YWNobWVudEVs
ZW1lbnRFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwot
ICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVCYWNrRm9yd2FyZENhY2hlLCAiVXNlc0JhY2tG
b3J3YXJkQ2FjaGUiLCB0ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0g
ICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUNvbG9yRmlsdGVyLCAiQ29sb3JGaWx0ZXJFbmFi
bGVkIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZh
bHVlSWZTZXRJbk1hcChlbmFibGVJbnNwZWN0b3JBZGRpdGlvbnMsICJJbnNwZWN0b3JBZGRpdGlv
bnNFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAg
IHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVJbnRlcnNlY3Rpb25PYnNlcnZlciwgIkludGVyc2Vj
dGlvbk9ic2VydmVyRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1
cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlS2V5Z2VuRWxlbWVudCwgIktleWdl
bkVsZW1lbnRFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMp
OwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVNZW51SXRlbUVsZW1lbnQsICJNZW51SXRl
bUVsZW1lbnRFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMp
OwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVNb2Rlcm5NZWRpYUNvbnRyb2xzLCAiTW9k
ZXJuTWVkaWFDb250cm9sc0VuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VG
ZWF0dXJlcyk7Ci0KLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uTG9hZCwgImVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQiLCB0ZXN0RmVhdHVy
ZXMuYm9vbFRlc3RSdW5uZXJGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGR1bXBK
U0NvbnNvbGVMb2dJblN0ZEVyciwgImR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciIsIHRlc3RGZWF0
dXJlcy5ib29sVGVzdFJ1bm5lckZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAobGF5
ZXJCYWNrZWRXZWJWaWV3LCAibGF5ZXJCYWNrZWRXZWJWaWV3IiwgdGVzdEZlYXR1cmVzLmJvb2xU
ZXN0UnVubmVyRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcCh1c2VFcGhlbWVyYWxT
ZXNzaW9uLCAidXNlRXBoZW1lcmFsU2Vzc2lvbiIsIHRlc3RGZWF0dXJlcy5ib29sVGVzdFJ1bm5l
ckZlYXR1cmVzKTsKLQotICAgIHNldFZhbHVlSWZTZXRJbk1hcChhZGRpdGlvbmFsU3VwcG9ydGVk
SW1hZ2VUeXBlcywgImFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzIiwgdGVzdEZlYXR1cmVz
LnN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGpzY09w
dGlvbnMsICJqc2NPcHRpb25zIiwgdGVzdEZlYXR1cmVzLnN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJl
cyk7Ci0KLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQ1NTTG9naWNhbCwgIkNTU0xvZ2lj
YWxFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmludGVybmFsRGVidWdGZWF0dXJlcyk7Ci0gICAgc2V0
VmFsdWVJZlNldEluTWFwKGVuYWJsZUxpbmVIZWlnaHRVbml0cywgIkxpbmVIZWlnaHRVbml0c0Vu
YWJsZWQiLCB0ZXN0RmVhdHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKTsKLSAgICBzZXRWYWx1
ZUlmU2V0SW5NYXAoZW5hYmxlU2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllcywgInNlbGVj
dGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXNFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmludGVybmFs
RGVidWdGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGxheW91dEZvcm1hdHRpbmdD
b250ZXh0SW50ZWdyYXRpb25FbmFibGVkLCAiTGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3Jh
dGlvbkVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKTsKLQotICAg
IHNldFZhbHVlSWZTZXRJbk1hcChhZENsaWNrQXR0cmlidXRpb25FbmFibGVkLCAiQWRDbGlja0F0
dHJpYnV0aW9uRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7Ci0g
ICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRI
ZWlnaHQsICJBc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZCIsIHRlc3RG
ZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVu
YWJsZUFzeW5jQ2xpcGJvYXJkQVBJLCAiQXN5bmNDbGlwYm9hcmRBUElFbmFibGVkIiwgdGVzdEZl
YXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5h
YmxlQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nLCAiQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5h
YmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJ
ZlNldEluTWFwKGVuYWJsZUNvbnRhY3RQaWNrZXJBUEksICJDb250YWN0UGlja2VyQVBJRW5hYmxl
ZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNl
dEluTWFwKGVuYWJsZUNvcmVNYXRoTUwsICJDb3JlTWF0aE1MRW5hYmxlZCIsIHRlc3RGZWF0dXJl
cy5leHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZVJl
cXVlc3RJZGxlQ2FsbGJhY2ssICJSZXF1ZXN0SWRsZUNhbGxiYWNrRW5hYmxlZCIsIHRlc3RGZWF0
dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJs
ZVJlc2l6ZU9ic2VydmVyLCAiUmVzaXplT2JzZXJ2ZXJFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4
cGVyaW1lbnRhbEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlV2ViR1BV
LCAiV2ViR1BVRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7Cisg
ICAgaWYgKGl0ICE9IG1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7CisgICAg
cmV0dXJuIGRlZmF1bHRWYWx1ZTsKK30KKworYm9vbCBUZXN0T3B0aW9uczo6Ym9vbFRlc3RSdW5u
ZXJGZWF0dXJlVmFsdWUoc3RkOjpzdHJpbmcga2V5LCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QK
K3sKKyAgICByZXR1cm4gZmVhdHVyZVZhbHVlKGtleSwgZGVmYXVsdFZhbHVlLCBtX2ZlYXR1cmVz
LmJvb2xUZXN0UnVubmVyRmVhdHVyZXMpOwogfQogCi1ib29sIFRlc3RPcHRpb25zOjp3ZWJWaWV3
SXNDb21wYXRpYmxlV2l0aE9wdGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmIG90aGVyKSBjb25zdAor
c3RkOjpzdHJpbmcgVGVzdE9wdGlvbnM6OnN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlVmFsdWUoc3Rk
OjpzdHJpbmcga2V5LCBzdGQ6OnN0cmluZyBkZWZhdWx0VmFsdWUpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG90aGVyLmxheWVyQmFja2VkV2ViVmlldyA9PSBsYXllckJhY2tlZFdlYlZpZXcKLSAgICAg
ICAgJiYgb3RoZXIuanNjT3B0aW9ucyA9PSBqc2NPcHRpb25zOworICAgIHJldHVybiBmZWF0dXJl
VmFsdWUoa2V5LCBkZWZhdWx0VmFsdWUsIG1fZmVhdHVyZXMuc3RyaW5nVGVzdFJ1bm5lckZlYXR1
cmVzKTsKIH0KIAogfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oCShyZXZpc2lv
biAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw1MyArMzEsMzggQEAKIAogbmFtZXNwYWNlIFdUUiB7CiAKLXN0cnVjdCBU
ZXN0T3B0aW9ucyB7Ci0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGVzZSBhbmQgcmVwbGFjZSB3aXRo
IGFjY2VzcyB0byBUZXN0RmVhdHVyZXMgc2V0LgotICAgIC8vIFdlYiBQcmVmZXJlbmNlcwotICAg
IGJvb2wgYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMgeyBm
YWxzZSB9OwotICAgIGJvb2wgYWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyB7IHRydWUgfTsK
LSAgICBib29sIGVuYWJsZUFjY2VsZXJhdGVkRHJhd2luZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBl
bmFibGVBdHRhY2htZW50RWxlbWVudCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVCYWNrRm9y
d2FyZENhY2hlIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUNvbG9yRmlsdGVyIHsgZmFsc2Ug
fTsKLSAgICBib29sIGVuYWJsZUluc3BlY3RvckFkZGl0aW9ucyB7IGZhbHNlIH07Ci0gICAgYm9v
bCBlbmFibGVJbnRlcnNlY3Rpb25PYnNlcnZlciB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVL
ZXlnZW5FbGVtZW50IHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZU1lbnVJdGVtRWxlbWVudCB7
IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVNb2Rlcm5NZWRpYUNvbnRyb2xzIHsgdHJ1ZSB9Owot
Ci0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGVzZSBhbmQgcmVwbGFjZSB3aXRoIGFjY2VzcyB0byBU
ZXN0RmVhdHVyZXMgc2V0LgotICAgIC8vIEludGVybmFsIEZlYXR1cmVzCi0gICAgYm9vbCBlbmFi
bGVDU1NMb2dpY2FsIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUxpbmVIZWlnaHRVbml0cyB7
IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVTZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVz
IHsgdHJ1ZSB9OwotICAgIGJvb2wgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVu
YWJsZWQgeyB0cnVlIH07Ci0KLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZXNlIGFuZCByZXBsYWNl
IHdpdGggYWNjZXNzIHRvIFRlc3RGZWF0dXJlcyBzZXQuCi0gICAgLy8gRXhwZXJpbWVudGFsIEZl
YXR1cmVzCi0gICAgYm9vbCBhZENsaWNrQXR0cmlidXRpb25FbmFibGVkIHsgZmFsc2UgfTsKLSAg
ICBib29sIGVuYWJsZUFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHQgeyBmYWxzZSB9
OwotICAgIGJvb2wgZW5hYmxlQXN5bmNDbGlwYm9hcmRBUEkgeyBmYWxzZSB9OwotICAgIGJvb2wg
ZW5hYmxlQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJs
ZUNvbnRhY3RQaWNrZXJBUEkgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQ29yZU1hdGhNTCB7
IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVSZXF1ZXN0SWRsZUNhbGxiYWNrIHsgZmFsc2UgfTsK
LSAgICBib29sIGVuYWJsZVJlc2l6ZU9ic2VydmVyIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJs
ZVdlYkdQVSB7IGZhbHNlIH07CitjbGFzcyBUZXN0T3B0aW9ucyB7CitwdWJsaWM6CisgICAgc3Rh
dGljIGNvbnN0IFRlc3RGZWF0dXJlcyYgZGVmYXVsdHMoKTsKKyAgICBzdGF0aWMgY29uc3Qgc3Rk
Ojp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBUZXN0SGVhZGVyS2V5VHlwZT4mIGtleVR5cGVN
YXBwaW5nKCk7CiAKLSAgICAvLyBUZXN0IFJ1bm5lciBTcGVjaWZpYyBGZWF0dXJlcwotICAgIGJv
b2wgZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZURy
YWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlV2ViU1FM
IHsgdHJ1ZSB9OwotICAgIGJvb2wgbGF5ZXJCYWNrZWRXZWJWaWV3IHsgZmFsc2UgfTsKLSAgICBi
b29sIHVzZUVwaGVtZXJhbFNlc3Npb24geyBmYWxzZSB9OwotICAgIHN0ZDo6c3RyaW5nIGFkZGl0
aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzOwotICAgIHN0ZDo6c3RyaW5nIGpzY09wdGlvbnM7Cisg
ICAgZXhwbGljaXQgVGVzdE9wdGlvbnMoVGVzdEZlYXR1cmVzIGZlYXR1cmVzKQorICAgICAgICA6
IG1fZmVhdHVyZXMoc3RkOjptb3ZlKGZlYXR1cmVzKSkKKyAgICB7CisgICAgfQogCi0gICAgZXhw
bGljaXQgVGVzdE9wdGlvbnMoVGVzdEZlYXR1cmVzKTsKICAgICBib29sIHdlYlZpZXdJc0NvbXBh
dGlibGVXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYpIGNvbnN0OwotICAgIAotICAgIHN0
YXRpYyBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFRlc3RIZWFkZXJLZXlU
eXBlPiYga2V5VHlwZU1hcHBpbmcoKTsKKworICAgIC8vIFRlc3QgUnVubmVyIFNwZWNpZmljIEZl
YXR1cmVzCisgICAgYm9vbCBkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoKSBjb25zdCB7IHJldHVy
biBib29sVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZSgiZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIiwg
ZmFsc2UpOyB9CisgICAgYm9vbCBlbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkKCkgY29u
c3QgeyByZXR1cm4gYm9vbFRlc3RSdW5uZXJGZWF0dXJlVmFsdWUoImVuYWJsZURyYWdEZXN0aW5h
dGlvbkFjdGlvbkxvYWQiLCBmYWxzZSk7IH0KKyAgICBib29sIGxheWVyQmFja2VkV2ViVmlldygp
IGNvbnN0IHsgcmV0dXJuIGJvb2xUZXN0UnVubmVyRmVhdHVyZVZhbHVlKCJsYXllckJhY2tlZFdl
YlZpZXciLCBmYWxzZSk7IH0KKyAgICBib29sIHVzZUVwaGVtZXJhbFNlc3Npb24oKSBjb25zdCB7
IHJldHVybiBib29sVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZSgidXNlRXBoZW1lcmFsU2Vzc2lvbiIs
IGZhbHNlKTsgfQorICAgIHN0ZDo6c3RyaW5nIGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVz
KCkgY29uc3QgeyByZXR1cm4gc3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZSgiYWRkaXRpb25h
bFN1cHBvcnRlZEltYWdlVHlwZXMiLCB7IH0pOyB9CisgICAgc3RkOjpzdHJpbmcganNjT3B0aW9u
cygpIGNvbnN0IHsgcmV0dXJuIHN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlVmFsdWUoImpzY09wdGlv
bnMiLCB7IH0pOyB9CisKKyAgICBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcs
IGJvb2w+JiBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0
dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzOyB9CisgICAgY29uc3Qgc3RkOjp1bm9yZGVy
ZWRfbWFwPHN0ZDo6c3RyaW5nLCBkb3VibGU+JiBkb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMo
KSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzLmRvdWJsZVdlYlByZWZlcmVuY2VGZWF0dXJlczsg
fQorICAgIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgdWludDMyX3Q+JiB1
aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzLnVp
bnQzMldlYlByZWZlcmVuY2VGZWF0dXJlczsgfQorICAgIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21h
cDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+JiBzdHJpbmdXZWJQcmVmZXJlbmNlRmVhdHVyZXMo
KSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzLnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlczsg
fQorCisgICAgc3RhdGljIHN0ZDo6c3RyaW5nIHRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShj
b25zdCBzdGQ6OnN0cmluZyYpOworCitwcml2YXRlOgorICAgIGJvb2wgYm9vbFRlc3RSdW5uZXJG
ZWF0dXJlVmFsdWUoc3RkOjpzdHJpbmcga2V5LCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3Q7Cisg
ICAgc3RkOjpzdHJpbmcgc3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZShzdGQ6OnN0cmluZyBr
ZXksIHN0ZDo6c3RyaW5nIGRlZmF1bHRWYWx1ZSkgY29uc3Q7CisKKyAgICBUZXN0RmVhdHVyZXMg
bV9mZWF0dXJlczsKIH07CiAKIH0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5k
ZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVt
cFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSw3IEBA
CiAJCTVEQjlBQzlFMEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyNzAwLnR0
ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Mzc1RjA5NzcwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXI3MDAudHRmICov
OyB9OwogCQk1REI5QUM5RjBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjgw
MC50dGYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDM3NUYwOTc4MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyODAwLnR0
ZiAqLzsgfTsKIAkJNURCOUFDQTAwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktpdFdlaWdodFdhdGNo
ZXI5MDAudHRmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzNzVGMDk3OTBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjkw
MC50dGYgKi87IH07CisJCTdDNEYzMDQwMjUzQjk3MEYwMDMwNTQ1OCAvKiBUZXN0T3B0aW9uc0dl
bmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M0RjMwM0YyNTNCODM2OTAwMzA1NDU4IC8qIFRlc3RP
cHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgKi87IH07CiAJCTdDRkY5
QkJGMjUzM0JCMjQwMDA4MDA5RiAvKiBUZXN0RmVhdHVyZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NGRjlCQkUyNTMzQkIyNDAwMDgwMDlGIC8q
IFRlc3RGZWF0dXJlcy5jcHAgKi87IH07CiAJCTdDRkY5QkMyMjUzM0JDMTYwMDA4MDA5RiAvKiBU
ZXN0Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3Q0ZGOUJDMTI1MzNCQzE2MDAwODAwOUYgLyogVGVzdENvbW1hbmQuY3BwICovOyB9Owog
CQk4MDA0NUFFRTE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhh
bmRsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MDA0NUFFQzE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRs
ZXIubW0gKi87IH07CkBAIC0zMzMsNyArMzM0LDkgQEAKIAkJN0M0NDY5N0YyNTM3N0EwMjAwMjQy
OTBBIC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBUZXN0T3B0aW9uc0dl
bmVyYXRlZEtleXMuaC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNDQ2OTgw
MjUzNzdBMDIwMDI0MjkwQSAvKiBjaGVjay14Y2ZpbGVsaXN0cy5zaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnNoOyBwYXRoID0g
ImNoZWNrLXhjZmlsZWxpc3RzLnNoIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M0
NDY5ODEyNTM3N0EwMjAwMjQyOTBBIC8qIGdlbmVyYXRlLWRlcml2ZWQtc291cmNlcy5zaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0
LnNoOyBwYXRoID0gImdlbmVyYXRlLWRlcml2ZWQtc291cmNlcy5zaCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTdDNDQ2OTg1MjUzNzdFNTIwMDI0MjkwQSAvKiBUZXN0T3B0aW9uc0dl
bmVyYXRlZEtleXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmg7
IHBhdGggPSBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0M0NDY5ODUyNTM3N0U1MjAwMjQyOTBBIC8qIFRlc3RPcHRpb25zR2VuZXJhdGVk
S2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M0RjMwM0YyNTNCODM2OTAwMzA1NDU4IC8qIFRlc3RP
cHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwOyBwYXRo
ID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M5RTI1MEIyNTNCNzk0QTAwNDEzMDE4IC8qIFRlc3RP
cHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFRlc3RP
cHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3Q0JCQzMyMjFEREZDRjlBMDA3ODZCOUQgLyogVGVzdE9wdGlv
bnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdE9wdGlvbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NGRjlCQkQyNTMzQkIyNDAwMDgwMDlGIC8qIFRl
c3RGZWF0dXJlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0RmVhdHVyZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0NGRjlCQkUyNTMzQkIyNDAwMDgwMDlGIC8qIFRlc3RGZWF0dXJl
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXN0RmVhdHVyZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzcwLDYgKzc3Myw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCTdDNDQ2OTdGMjUzNzdBMDIwMDI0MjkwQSAvKiBUZXN0T3B0aW9u
c0dlbmVyYXRlZEtleXMuaC5lcmIgKi8sCisJCQkJN0M5RTI1MEIyNTNCNzk0QTAwNDEzMDE4IC8q
IFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiICovLAog
CQkJKTsKIAkJCXBhdGggPSBQcmVmZXJlbmNlc1RlbXBsYXRlczsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC03NzgsNiArNzgyLDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJN0M0NDY5ODUyNTM3N0U1MjAwMjQyOTBBIC8qIFRlc3RPcHRpb25zR2Vu
ZXJhdGVkS2V5cy5oICovLAorCQkJCTdDNEYzMDNGMjUzQjgzNjkwMDMwNTQ1OCAvKiBUZXN0T3B0
aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwICovLAogCQkJKTsKIAkJCW5h
bWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJCXBhdGggPSBEZXJpdmVkU291cmNlcy9EdW1wUmVu
ZGVyVHJlZTsKQEAgLTEyOTEsNiArMTI5Niw3IEBACiAJCQkJN0NGRjlCQzIyNTMzQkMxNjAwMDgw
MDlGIC8qIFRlc3RDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDRkY5QkJGMjUzM0JC
MjQwMDA4MDA5RiAvKiBUZXN0RmVhdHVyZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTMwQTIx
RjgyMDUxRDhDNDAwMDhGRjQyIC8qIFRlc3RPcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTdDNEYzMDQwMjUzQjk3MEYwMDMwNTQ1OCAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExl
Z2FjeUtleU1hcHBpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwMTMxREEwQzk3NzIwMTAw
ODczMTdEIC8qIFRlc3RSdW5uZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCMjQwQzlC
MDE0QjAwMTE0MzY5IC8qIFRlc3RSdW5uZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNEQ0
MjM2MTFERDUwNDgyMDA2NzgyOTAgLyogVGV4dElucHV0Q29udHJvbGxlcklPUy5tIGluIFNvdXJj
ZXMgKi8sCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVt
cGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1NjcmlwdHMvUHJlZmVyZW5jZXNU
ZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5l
cmIJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvU2NyaXB0cy9QcmVmZXJl
bmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcu
Y3BwLmVyYgkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogPCU9IEB3YXJu
aW5nICU+CisgKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3RP
cHRpb25zLmgiCisKK25hbWVzcGFjZSBXVFIgeworCitzdGQ6OnN0cmluZyBUZXN0T3B0aW9uczo6
dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGNvbnN0IHN0ZDo6c3RyaW5nJiB3ZWJQcmVmZXJl
bmNlc0tleSkKK3sKKyAgICBzdGF0aWMgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBz
dGQ6OnN0cmluZz4gbm9uU3RhbmRhcmRLZXlzID0geworPCUtIGZvciBAcHJlZiBpbiBAcHJlZmVy
ZW5jZXMuc2VsZWN0IHsgfHB8IHAub3B0c1sid2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleSJdIH0g
ZG8gLSU+CisgICAgICAgIHsgIjwlPSBAcHJlZi5uYW1lICU+IiwgIjwlPSBAcHJlZi5wcmVmZXJl
bmNlS2V5ICU+IiB9LCBcCis8JS0gZW5kIC0lPgorICAgIH07CisKKyAgICBhdXRvIGl0ID0gbm9u
U3RhbmRhcmRLZXlzLmZpbmQod2ViUHJlZmVyZW5jZXNLZXkpOworICAgIGlmIChpdCAhPSBub25T
dGFuZGFyZEtleXMuZW5kKCkpCisgICAgICAgIHJldHVybiBpdC0+c2Vjb25kOworCisgICAgcmV0
dXJuICJXZWJLaXQiICsgd2ViUHJlZmVyZW5jZXNLZXk7Cit9CisKK30KSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHJldmlzaW9uIDI2ODY0OCkKKysr
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTMxLDYgKzEzMSwxMiBAQCBleHRlcm4gIkMiIHsKIAogdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKIAorc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4gdG9OUyhjb25zdCBzdGQ6OnN0cmluZyYg
c3RyaW5nKQoreworICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRo
VVRGOFN0cmluZzpzdHJpbmcuY19zdHIoKV0pOworfQorCisKICNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIEBpbnRlcmZhY2UgRHVtcFJlbmRlclRyZWVBcHBsaWNhdGlvbiA6IE5TQXBwbGljYXRp
b24KIEBlbmQKQEAgLTY3Miw2ICs2NzgsMTAgQEAgV2ViVmlldyAqY3JlYXRlV2ViVmlld0FuZE9m
ZnNjcmVlbldpbmRvdwogICAgIFt3ZWJWaWV3IHNldEdyb3VwTmFtZTpAIm9yZy53ZWJraXQuRHVt
cFJlbmRlclRyZWUiXTsKICNlbmRpZgogCisgICAgV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2Vz
ID0gW1tXZWJQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF07CisgICAgW3ByZWZlcmVuY2VzIHNldEF1
dG9zYXZlczpOT107CisgICAgW3dlYlZpZXcgc2V0UHJlZmVyZW5jZXM6cHJlZmVyZW5jZXNdOwor
CiAgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTp1aURlbGVnYXRlXTsKICAgICBbd2ViVmlldyBz
ZXRGcmFtZUxvYWREZWxlZ2F0ZTpmcmFtZUxvYWREZWxlZ2F0ZV07CiAgICAgW3dlYlZpZXcgc2V0
RWRpdGluZ0RlbGVnYXRlOmVkaXRpbmdEZWxlZ2F0ZV07CkBAIC02ODUsOCArNjk1LDYgQEAgV2Vi
VmlldyAqY3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdwogICAgIFtXZWJWaWV3IHJlZ2lz
dGVyVVJMU2NoZW1lQXNMb2NhbDpAImZlZWRzIl07CiAgICAgW1dlYlZpZXcgcmVnaXN0ZXJVUkxT
Y2hlbWVBc0xvY2FsOkAiZmVlZHNlYXJjaCJdOwogCi0gICAgW1t3ZWJWaWV3IHByZWZlcmVuY2Vz
XSBfc2V0TWVkaWFSZWNvcmRlckVuYWJsZWQ6WUVTXTsKLQogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICBbd2ViVmlldyBzZXRXaW5kb3dPY2NsdXNpb25EZXRlY3Rpb25FbmFibGVkOk5PXTsKICAgICBb
V2ViVmlldyBfc2V0Rm9udEFsbG93TGlzdDpmb250QWxsb3dMaXN0KCldOwpAQCAtODQ0LDkgKzg1
Miw4IEBAIHN0YXRpYyB2b2lkIGVuYWJsZUV4cGVyaW1lbnRhbEZlYXR1cmVzKFcKIH0KIAogLy8g
Q2FsbGVkIGJlZm9yZSBlYWNoIHRlc3QuCi1zdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2Vz
VG9Db25zaXN0ZW50VmFsdWVzKCkKK3N0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0Nv
bnNpc3RlbnRWYWx1ZXMoV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzKQogewotICAgIFdlYlBy
ZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVu
Y2VzXTsKICAgICBlbmFibGVFeHBlcmltZW50YWxGZWF0dXJlcyhwcmVmZXJlbmNlcyk7CiAKICAg
ICBbcHJlZmVyZW5jZXMgc2V0TmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcms6IE5P
XTsKQEAgLTkwMiw2ICs5MDksNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9D
b25zaXN0CiAgICAgfSBlbHNlCiAgICAgICAgIFtwcmVmZXJlbmNlcyBzZXRVc2VyU3R5bGVTaGVl
dEVuYWJsZWQ6Tk9dOwogCisgICAgW3ByZWZlcmVuY2VzIHNldElubGluZU1lZGlhUGxheWJhY2tS
ZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRlOk5PXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0TWVk
aWFQbGF5YmFja0FsbG93c0lubGluZTpZRVNdOwogICAgIFtwcmVmZXJlbmNlcyBzZXRNZWRpYVBs
YXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZTpOT107CiAgICAgW3ByZWZlcmVuY2VzIHNldFZpZGVv
UGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlOk5PXTsKQEAgLTk2MCw2ICs5NjgsNyBAQCBzdGF0
aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0CiAgICAgcHJlZmVyZW5jZXMubWVk
aWFDYXBhYmlsaXRpZXNFbmFibGVkID0gWUVTOwogCiAgICAgcHJlZmVyZW5jZXMuc2VsZWN0aW9u
QWNyb3NzU2hhZG93Qm91bmRhcmllc0VuYWJsZWQgPSBZRVM7CisgICAgcHJlZmVyZW5jZXMuZnVs
bFNjcmVlbkVuYWJsZWQgPSBZRVM7CiAKICAgICBbcHJlZmVyZW5jZXMgc2V0V2ViU1FMRW5hYmxl
ZDpZRVNdOwogCkBAIC05NjcsMzQgKzk3NiwyMSBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZl
cmVuY2VzVG9Db25zaXN0CiAgICAgW1dlYlByZWZlcmVuY2VzIF9zZXRDdXJyZW50TmV0d29ya0xv
YWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6TlNIVFRQQ29va2llQWNjZXB0UG9saWN5T25s
eUZyb21NYWluRG9jdW1lbnREb21haW5dOwogfQogCi1zdGF0aWMgdm9pZCBzZXRXZWJQcmVmZXJl
bmNlc0ZvclRlc3RPcHRpb25zKGNvbnN0IFdUUjo6VGVzdE9wdGlvbnMmIG9wdGlvbnMpCitzdGF0
aWMgdm9pZCBzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKFdlYlByZWZlcmVuY2VzICpw
cmVmZXJlbmNlcywgY29uc3QgV1RSOjpUZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBXZWJQ
cmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJl
bmNlc107CisgICAgcHJlZmVyZW5jZXMucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IG9wdGlvbnMu
dXNlRXBoZW1lcmFsU2Vzc2lvbigpOworCisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1
ZV0gOiBvcHRpb25zLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAgICAgW3ByZWZl
cmVuY2VzIF9zZXRCb29sUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dmFsdWUgZm9yS2V5
OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGtleSkp
LmdldCgpXTsKKworICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5k
b3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXRE
b3VibGVQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZSBmb3JLZXk6dG9OUyhXVFI6
OlRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVuY2VLZXkoa2V5KSkuZ2V0KCldOwog
Ci0gICAgcHJlZmVyZW5jZXMuYXR0YWNobWVudEVsZW1lbnRFbmFibGVkID0gb3B0aW9ucy5lbmFi
bGVBdHRhY2htZW50RWxlbWVudDsKLSAgICBwcmVmZXJlbmNlcy5hY2NlbGVyYXRlZERyYXdpbmdF
bmFibGVkID0gb3B0aW9ucy5lbmFibGVBY2NlbGVyYXRlZERyYXdpbmc7Ci0gICAgcHJlZmVyZW5j
ZXMubWVudUl0ZW1FbGVtZW50RW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlTWVudUl0ZW1FbGVtZW50
OwotICAgIHByZWZlcmVuY2VzLmtleWdlbkVsZW1lbnRFbmFibGVkID0gb3B0aW9ucy5lbmFibGVL
ZXlnZW5FbGVtZW50OwotICAgIHByZWZlcmVuY2VzLm1vZGVybk1lZGlhQ29udHJvbHNFbmFibGVk
ID0gb3B0aW9ucy5lbmFibGVNb2Rlcm5NZWRpYUNvbnRyb2xzOwotICAgIHByZWZlcmVuY2VzLmlu
c3BlY3RvckFkZGl0aW9uc0VuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUluc3BlY3RvckFkZGl0aW9u
czsKLSAgICBwcmVmZXJlbmNlcy5hbGxvd0Nyb3NzT3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JD
cmVkZW50aWFscyA9IG9wdGlvbnMuYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9y
Q3JlZGVudGlhbHM7Ci0gICAgcHJlZmVyZW5jZXMuY29sb3JGaWx0ZXJFbmFibGVkID0gb3B0aW9u
cy5lbmFibGVDb2xvckZpbHRlcjsKLSAgICBwcmVmZXJlbmNlcy5zZWxlY3Rpb25BY3Jvc3NTaGFk
b3dCb3VuZGFyaWVzRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlU2VsZWN0aW9uQWNyb3NzU2hhZG93
Qm91bmRhcmllczsKLSAgICBwcmVmZXJlbmNlcy53ZWJHUFVFbmFibGVkID0gb3B0aW9ucy5lbmFi
bGVXZWJHUFU7Ci0gICAgcHJlZmVyZW5jZXMuQ1NTTG9naWNhbEVuYWJsZWQgPSBvcHRpb25zLmVu
YWJsZUNTU0xvZ2ljYWw7Ci0gICAgcHJlZmVyZW5jZXMubGluZUhlaWdodFVuaXRzRW5hYmxlZCA9
IG9wdGlvbnMuZW5hYmxlTGluZUhlaWdodFVuaXRzOwotICAgIHByZWZlcmVuY2VzLmFkQ2xpY2tB
dHRyaWJ1dGlvbkVuYWJsZWQgPSBvcHRpb25zLmFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQ7Ci0g
ICAgcHJlZmVyZW5jZXMucmVzaXplT2JzZXJ2ZXJFbmFibGVkID0gb3B0aW9ucy5lbmFibGVSZXNp
emVPYnNlcnZlcjsKLSAgICBwcmVmZXJlbmNlcy5DU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFi
bGVkID0gb3B0aW9ucy5lbmFibGVDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmc7Ci0gICAgcHJlZmVy
ZW5jZXMuY29yZU1hdGhNTEVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUNvcmVNYXRoTUw7Ci0gICAg
cHJlZmVyZW5jZXMucmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWQgPSBvcHRpb25zLmVuYWJsZVJl
cXVlc3RJZGxlQ2FsbGJhY2s7Ci0gICAgcHJlZmVyZW5jZXMuYXN5bmNDbGlwYm9hcmRBUElFbmFi
bGVkID0gb3B0aW9ucy5lbmFibGVBc3luY0NsaXBib2FyZEFQSTsKLSAgICBwcmVmZXJlbmNlcy5w
cml2YXRlQnJvd3NpbmdFbmFibGVkID0gb3B0aW9ucy51c2VFcGhlbWVyYWxTZXNzaW9uOwotICAg
IHByZWZlcmVuY2VzLnVzZXNQYWdlQ2FjaGUgPSBvcHRpb25zLmVuYWJsZUJhY2tGb3J3YXJkQ2Fj
aGU7Ci0gICAgcHJlZmVyZW5jZXMubGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVu
YWJsZWQgPSBvcHRpb25zLmxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVk
OwotICAgIHByZWZlcmVuY2VzLmFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFi
bGVkID0gb3B0aW9ucy5lbmFibGVBc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0Owot
ICAgIHByZWZlcmVuY2VzLmFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMgPSBvcHRpb25zLmFs
bG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHM7Ci0gICAgcHJlZmVyZW5jZXMuY29udGFjdFBpY2tl
ckFQSUVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUNvbnRhY3RQaWNrZXJBUEk7CisgICAgZm9yIChj
b25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0
dXJlcygpKQorICAgICAgICBbcHJlZmVyZW5jZXMgX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0
aW5nV2l0aFZhbHVlOnZhbHVlIGZvcktleTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0
TGVnYWN5UHJlZmVyZW5jZUtleShrZXkpKS5nZXQoKV07CisKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuc3RyaW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCisg
ICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFs
dWU6dG9OUyh2YWx1ZSkuZ2V0KCkgZm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJL
aXRMZWdhY3lQcmVmZXJlbmNlS2V5KGtleSkpLmdldCgpXTsKIH0KIAogLy8gQ2FsbGVkIG9uY2Ug
b24gRHVtcFJlbmRlclRyZWUgc3RhcnR1cC4KQEAgLTEwMTgsOSArMTAxNCw2IEBAIHN0YXRpYyB2
b2lkIHNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWUKICAgICAgICAgQCJBcHBsZU90aGVySGln
aGxpZ2h0Q29sb3IiOkAiMC41MDAwMDAgMC41MDAwMDAgMC41MDAwMDAiLAogICAgICAgICBAIkFw
cGxlTGFuZ3VhZ2VzIjogQFsgQCJlbiIgXSwKICAgICAgICAgV2ViS2l0RW5hYmxlRnVsbERvY3Vt
ZW50VGVhcmRvd25QcmVmZXJlbmNlS2V5OiBAWUVTLAotICAgICAgICBXZWJLaXRGdWxsU2NyZWVu
RW5hYmxlZFByZWZlcmVuY2VLZXk6IEBZRVMsCi0gICAgICAgIFdlYktpdEFsbG93c0lubGluZU1l
ZGlhUGxheWJhY2tQcmVmZXJlbmNlS2V5OiBAWUVTLAotICAgICAgICBXZWJLaXRJbmxpbmVNZWRp
YVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZUtleTogQE5PLAogICAgICAgICBA
IlVzZVdlYktpdFdlYkluc3BlY3RvciI6IEBZRVMsCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgICAgIEAiTlNQcmVmZXJyZWRTcGVsbFNlcnZlckxhbmd1YWdlIjogQCJlbl9VUyIsCkBA
IC0xODI2LDkgKzE4MTksOSBAQCBzdGF0aWMgdm9pZCBzZXRKU0NPcHRpb25zKGNvbnN0IFdUUjo6
VGVzCiAgICAgICAgIHNhdmVkT3B0aW9ucy5jbGVhcigpOwogICAgIH0KIAotICAgIGlmIChvcHRp
b25zLmpzY09wdGlvbnMubGVuZ3RoKCkpIHsKKyAgICBpZiAoIW9wdGlvbnMuanNjT3B0aW9ucygp
LmVtcHR5KCkpIHsKICAgICAgICAgSlNDOjpPcHRpb25zOjpkdW1wQWxsT3B0aW9uc0luQUxpbmUo
c2F2ZWRPcHRpb25zKTsKLSAgICAgICAgSlNDOjpPcHRpb25zOjpzZXRPcHRpb25zKG9wdGlvbnMu
anNjT3B0aW9ucy5jX3N0cigpKTsKKyAgICAgICAgSlNDOjpPcHRpb25zOjpzZXRPcHRpb25zKG9w
dGlvbnMuanNjT3B0aW9ucygpLmNfc3RyKCkpOwogICAgIH0KIH0KIApAQCAtMTgzOSw2ICsxODMy
LDEwIEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXQKIAogICAgIFdl
YlZpZXcgKndlYlZpZXcgPSBbbWFpbkZyYW1lIHdlYlZpZXddOwogCisgICAgV2ViUHJlZmVyZW5j
ZXMgKnByZWZlcmVuY2VzID0gW1tXZWJQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF07CisgICAgW3By
ZWZlcmVuY2VzIHNldEF1dG9zYXZlczpOT107CisgICAgW3dlYlZpZXcgc2V0UHJlZmVyZW5jZXM6
cHJlZmVyZW5jZXNdOworCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBhZGp1c3RXZWJE
b2N1bWVudEZvclN0YW5kYXJkVmlld3BvcnQoZ1dlYkJyb3dzZXJWaWV3LCBnV2ViU2Nyb2xsVmll
dyk7CiAgICAgW3dlYlZpZXcgX3NldEFsbG93c01lc3NhZ2luZzpZRVNdOwpAQCAtMTg2NywxMCAr
MTg2NCwxMCBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0CiAKICAg
ICBbV2ViQ2FjaGUgY2xlYXJDYWNoZWRDcmVkZW50aWFsc107CiAKLSAgICByZXNldFdlYlByZWZl
cmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKCk7Ci0gICAgc2V0V2ViUHJlZmVyZW5jZXNGb3JUZXN0
T3B0aW9ucyhvcHRpb25zKTsKKyAgICByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFs
dWVzKHByZWZlcmVuY2VzKTsKKyAgICBzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKHBy
ZWZlcmVuY2VzLCBvcHRpb25zKTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgW3dlYlZpZXcgc2V0
V2FudHNMYXllcjpvcHRpb25zLmxheWVyQmFja2VkV2ViVmlld107CisgICAgW3dlYlZpZXcgc2V0
V2FudHNMYXllcjpvcHRpb25zLmxheWVyQmFja2VkV2ViVmlldygpXTsKICNlbmRpZgogCiAgICAg
VGVzdFJ1bm5lcjo6c2V0U2VyaWFsaXplSFRUUExvYWRzKGZhbHNlKTsKQEAgLTE5MTQsNyArMTkx
MSw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXQKICAgICBbW05T
UGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gZGVjbGFyZVR5cGVzOkBbTlNTdHJpbmdQYm9h
cmRUeXBlXSBvd25lcjpuaWxdOwogI2VuZGlmCiAKLSAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNl
dEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzRm9yVGVzdGluZyhvcHRpb25zLmFkZGl0aW9u
YWxTdXBwb3J0ZWRJbWFnZVR5cGVzLmNfc3RyKCkpOworICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6
c2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXNGb3JUZXN0aW5nKG9wdGlvbnMuYWRkaXRp
b25hbFN1cHBvcnRlZEltYWdlVHlwZXMoKS5jX3N0cigpKTsKIAogICAgIFttYWluRnJhbWUgX2Ns
ZWFyT3BlbmVyXTsKIApAQCAtMTk3MCw3ICsxOTY3LDcgQEAgc3RhdGljIE5TVVJMICpjb21wdXRl
VGVzdFVSTChOU1N0cmluZyAqcAogCiBzdGF0aWMgV1RSOjpUZXN0T3B0aW9ucyB0ZXN0T3B0aW9u
c0ZvclRlc3QoY29uc3QgV1RSOjpUZXN0Q29tbWFuZCYgY29tbWFuZCkKIHsKLSAgICBXVFI6OlRl
c3RGZWF0dXJlcyBmZWF0dXJlczsKKyAgICBXVFI6OlRlc3RGZWF0dXJlcyBmZWF0dXJlcyA9IFdU
Ujo6VGVzdE9wdGlvbnM6OmRlZmF1bHRzKCk7CiAgICAgV1RSOjptZXJnZShmZWF0dXJlcywgV1RS
OjpoYXJkY29kZWRGZWF0dXJlc0Jhc2VkT25QYXRoRm9yVGVzdChjb21tYW5kKSk7CiAgICAgV1RS
OjptZXJnZShmZWF0dXJlcywgV1RSOjpmZWF0dXJlRGVmYXVsdHNGcm9tVGVzdEhlYWRlckZvclRl
c3QoY29tbWFuZCwgV1RSOjpUZXN0T3B0aW9uczo6a2V5VHlwZU1hcHBpbmcoKSkpOwogCkBAIC0y
MDE3LDcgKzIwMTQsNyBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgaW5wdXRM
CiAgICAgZ1Rlc3RSdW5uZXIgPSBUZXN0UnVubmVyOjpjcmVhdGUodGVzdFVSTCwgY29tbWFuZC5l
eHBlY3RlZFBpeGVsSGFzaCk7CiAgICAgZ1Rlc3RSdW5uZXItPnNldEFsbG93ZWRIb3N0cyhhbGxv
d2VkSG9zdHMpOwogICAgIGdUZXN0UnVubmVyLT5zZXRDdXN0b21UaW1lb3V0KGNvbW1hbmQudGlt
ZW91dC5taWxsaXNlY29uZHMoKSk7Ci0gICAgZ1Rlc3RSdW5uZXItPnNldER1bXBKU0NvbnNvbGVM
b2dJblN0ZEVycihjb21tYW5kLmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciB8fCBvcHRpb25zLmR1
bXBKU0NvbnNvbGVMb2dJblN0ZEVycik7CisgICAgZ1Rlc3RSdW5uZXItPnNldER1bXBKU0NvbnNv
bGVMb2dJblN0ZEVycihjb21tYW5kLmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciB8fCBvcHRpb25z
LmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVycigpKTsKIAogICAgIHJlc2V0V2ViVmlld1RvQ29uc2lz
dGVudFN0YXRlKG9wdGlvbnMsIFJlc2V0VGltZTo6QmVmb3JlVGVzdCk7CiAKSW5kZXg6IFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCShyZXZpc2lvbiAyNjg2NDgpCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtNTc2LDE0ICs1NzYsMTQgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRQYWdlUGF1c2VkKGJv
b2wgcGF1cwogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZChib29s
IGZsYWcpCiB7Ci0gICAgW1tXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXSBzZXRV
c2VyU3R5bGVTaGVldEVuYWJsZWQ6ZmxhZ107CisgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHBy
ZWZlcmVuY2VzXSBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQ6ZmxhZ107CiB9CiAKIHZvaWQgVGVz
dFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKQogewog
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGF0aENGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlD
RlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwYXRoKSk7CiAgICAgTlNVUkwgKnVybCA9IFtO
U1VSTCBVUkxXaXRoU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKXBhdGhDRi5nZXQoKV07Ci0g
ICAgW1tXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXSBzZXRVc2VyU3R5bGVTaGVl
dExvY2F0aW9uOnVybF07CisgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBz
ZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uOnVybF07CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0
VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3Qs
IEpTU3RyaW5nUmVmIHZhbHVlKQpAQCAtNjA5LDcgKzYwOSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6
b3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3QKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHZhbHVl
Q0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHZh
bHVlKSk7CiAgICAgTlNTdHJpbmcgKnZhbHVlTlMgPSAoX19icmlkZ2UgTlNTdHJpbmcgKil2YWx1
ZUNGLmdldCgpOwogCi0gICAgW1tXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXSBf
c2V0UHJlZmVyZW5jZUZvclRlc3RXaXRoVmFsdWU6dmFsdWVOUyBmb3JLZXk6a2V5TlNdOworICAg
IFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gX3NldFN0cmluZ1ByZWZlcmVuY2VG
b3JUZXN0aW5nV2l0aFZhbHVlOnZhbHVlTlMgZm9yS2V5OmtleU5TXTsKIH0KIAogdm9pZCBUZXN0
UnVubmVyOjpyZW1vdmVBbGxWaXNpdGVkTGlua3MoKQpAQCAtNzAwLDcgKzcwMCw3IEBAIGJvb2wg
VGVzdFJ1bm5lcjo6ZmluZFN0cmluZyhKU0NvbnRleHRSZWYKIAogdm9pZCBUZXN0UnVubmVyOjpz
ZXRDYWNoZU1vZGVsKGludCBjYWNoZU1vZGVsKQogewotICAgIFtbV2ViUHJlZmVyZW5jZXMgc3Rh
bmRhcmRQcmVmZXJlbmNlc10gc2V0Q2FjaGVNb2RlbDooV2ViQ2FjaGVNb2RlbCljYWNoZU1vZGVs
XTsKKyAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIHNldENhY2hlTW9kZWw6
KFdlYkNhY2hlTW9kZWwpY2FjaGVNb2RlbF07CiB9CiAKIGJvb2wgVGVzdFJ1bm5lcjo6aXNDb21t
YW5kRW5hYmxlZChKU1N0cmluZ1JlZiBuYW1lKQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL1VJRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L1VJRGVsZWdhdGUubW0JKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9VSURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIC0gKHZv
aWQpcmVzZXRXaW5kb3dPcmlnaW4KIAogLSAodm9pZClyZXNldFRvQ29uc2lzdGVudFN0YXRlQmVm
b3JlVGVzdGluZzooY29uc3QgV1RSOjpUZXN0T3B0aW9ucyYpb3B0aW9ucwogewotICAgIG1fZW5h
YmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCA9IG9wdGlvbnMuZW5hYmxlRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uTG9hZDsKKyAgICBtX2VuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQgPSBv
cHRpb25zLmVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQoKTsKIH0KIAogLSAodm9pZCl3
ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHNldEZyYW1lOihOU1JlY3QpZnJhbWUKSW5kZXg6IFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNjg2NDgp
CisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTIxLDE3ICs5MjEsMTYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cmVzZXRQcmVm
ZXJlbmNlc1RvQwogICAgIHBsYXRmb3JtUmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVl
cygpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLmJvb2xX
ZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKLSAgICAgICAgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1
ZUZvcktleShwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CisgICAgICAgIFdL
UHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKHByZWZlcmVuY2VzLCB2YWx1
ZSwgdG9XSyhrZXkpLmdldCgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVd
IDogb3B0aW9ucy5kb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKLSAgICAgICAgV0tQcmVm
ZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5KHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkp
LmdldCgpKTsKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5Rm9yVGVz
dGluZyhwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CiAKICAgICBmb3IgKGNv
bnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMudWludDMyV2ViUHJlZmVyZW5jZUZlYXR1
cmVzKCkpCi0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleShwcmVmZXJl
bmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRV
SW50MzJWYWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSku
Z2V0KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLnN0
cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAgICAgICBXS1ByZWZlcmVuY2VzU2V0U3Ry
aW5nVmFsdWVGb3JLZXkocHJlZmVyZW5jZXMsIHRvV0sodmFsdWUpLmdldCgpLCB0b1dLKGtleSku
Z2V0KCkpOwotCisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleUZvclRl
c3RpbmcocHJlZmVyZW5jZXMsIHRvV0sodmFsdWUpLmdldCgpLCB0b1dLKGtleSkuZ2V0KCkpOwog
fQogCiBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNv
bnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZXNldFN0YWdlIHJlc2V0U3RhZ2UpCg==
</data>
<flag name="commit-queue"
          id="427988"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411680</attachid>
            <date>2020-10-17 14:56:11 -0700</date>
            <delta_ts>2020-10-17 17:08:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201017145610.patch</filename>
            <type>text/plain</type>
            <size>48176</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTE3ICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVu
ZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBXS1ByZWZlcmVuY2Vz
U2V0KlZhbHVlRm9yS2V5IFNQSSB0byBXS1ByZWZlcmVuY2VzU2V0KlZhbHVlRm9yS2V5Rm9yVGVz
dGluZworICAgICAgICB0byBtYWtlIGl0IGNsZWFyIHdoYXQgdGhleSBhcmUgdXNlZCBmb3IgYW5k
IGZvciBjb25zaXN0ZW5jeSB3aXRoIFdlYktpdExlZ2FjeS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29s
VmFsdWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXREb3VibGVW
YWx1ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZh
bHVlRm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFs
dWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVG
b3JLZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9y
S2V5KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktl
eSk6IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJp
dmF0ZS5oOgorCiAyMDIwLTEwLTE2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBJbnRyb2R1Y2UgUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5IHRvIG1hbmFnZSB0aGUgcmVzb3VyY2VzIGluIHRoZSBHUFUgUHJvY2VzcwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5j
cHAJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UHJlZmVyZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCwyMiArNzgsMjIgQEAgdm9pZCBX
S1ByZWZlcmVuY2VzU2V0SW50ZXJuYWxEZWJ1Z0ZlYXR1cgogICAgIHRvSW1wbChwcmVmZXJlbmNl
c1JlZiktPnNldEludGVybmFsRGVidWdGZWF0dXJlRW5hYmxlZEZvcktleSh0b1dURlN0cmluZyhp
bnRlcm5hbERlYnVnRmVhdHVyZUtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2Vz
U2V0Qm9vbFZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wg
dmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZv
cktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1
ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldEJv
b2xWYWx1ZUZvcktleSh0b1dURlN0cmluZyhrZXkpLCB2YWx1ZSk7CiB9CiAKLXZvaWQgV0tQcmVm
ZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIGRvdWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0
RG91YmxlVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIGRvdWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJl
bmNlc1JlZiktPnNldEJvb2xWYWx1ZUZvcktleSh0b1dURlN0cmluZyhrZXkpLCB2YWx1ZSk7CiB9
CiAKLXZvaWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNS
ZWYgcHJlZmVyZW5jZXNSZWYsIHVpbnQzMl90IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCit2b2lk
IFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKIHsK
ICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRVSW50MzJWYWx1ZUZvcktleSh0b1dURlN0
cmluZyhrZXkpLCB2YWx1ZSk7CiB9CiAKLXZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVl
Rm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RyaW5nUmVmIHZhbHVl
LCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktl
eUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYg
dmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKIHsKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5z
ZXRTdHJpbmdWYWx1ZUZvcktleSh0b1dURlN0cmluZyhrZXkpLCB0b1dURlN0cmluZyh2YWx1ZSkp
OwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1Jl
ZlByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NiwxMCArNTYsMTAgQEAgV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1Jlc2V0
QWxsSW50ZQogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldEludGVybmFsRGVidWdGZWF0
dXJlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYsIGJvb2wsIFdLU3RyaW5nUmVmKTsKIAogLy8gVGhl
IGZvbGxvd2luZyBnZW5lcmljIHNldHRlciBmdW5jdGlvbnMgYXJlIG9ubHkgaW50ZW5kZWQgZm9y
IHVzZSBieSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlLgotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJl
bmNlc1NldEJvb2xWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBi
b29sIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNl
c1NldERvdWJsZVZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGRv
dWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKLVdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5j
ZXNTZXRVSW50MzJWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1
aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKLVdLX0VYUE9SVCB2b2lkIFdLUHJlZmVy
ZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVm
LCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VYUE9SVCB2b2lkIFdL
UHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXNSZWYsIGJvb2wgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7CitXS19FWFBPUlQg
dm9pZCBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVy
ZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGRvdWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsK
K1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleUZvclRlc3Rp
bmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3Ry
aW5nUmVmIGtleSk7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVG
b3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RyaW5n
UmVmIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwogCiAvLyBGb3IgVGVzdCBSdW5uZXIgVXNlIG9u
bHkuCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzUmVzZXRUZXN0UnVubmVyT3ZlcnJpZGVz
KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpOwpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMTAtMTcgIFNh
bSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFtUZXN0aW5nXSBDb252ZXJ0
IER1bXBSZW5kZXJUcmVlIHRvIHVzZSBnZW5lcmF0ZWQgdGVzdCBoZWFkZXIgb3B0aW9ucworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3ODgwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIGEgc2V0
IG9mIHNldHRlcnMgdG8gZm9yIER1bXBSZW5kZXJUcmVlIHRvIHVzZSB3aGVuIHNldHRpbmcgcHJl
ZmVyZW5jZXMKKyAgICAgICAgYnkgc3RyaW5nLgorCisgICAgICAgICogV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3N3aXRjaE5ldHdvcmtMb2Fk
ZXJUb05ld1Rlc3RpbmdTZXNzaW9uXSk6CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIF9zZXRD
dXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6XSk6CisgICAgICAg
ICgrW1dlYlByZWZlcmVuY2VzIF9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uXSk6CisgICAgICAg
ICgtW1dlYlByZWZlcmVuY2VzIF9zZXRCb29sUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6
Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0VUludDMyUHJlZmVyZW5j
ZUZvclRlc3RpbmdXaXRoVmFsdWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNl
cyBfc2V0RG91YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6Zm9yS2V5Ol0pOgorICAg
ICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRo
VmFsdWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0UHJlZmVyZW5j
ZUZvclRlc3RXaXRoVmFsdWU6Zm9yS2V5Ol0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlZpZXcv
V2ViUHJlZmVyZW5jZXNQcml2YXRlLmg6CisKIDIwMjAtMTAtMTcgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgogCiAgICAgICAgIENvbnZlcnQgcHJlZmVyZW5jZXMgaW4gV2ViUHJlZmVy
ZW5jZXNQcml2YXRlLmggdG8gdXNlIEBwcm9wZXJ0eSBzeW50YXggdG8gbWFrZSB0aGVtIG1vcmUg
bWFuYWdlYWJsZQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYw
LDI2ICsxNjYwLDYgQEAgKyAodm9pZClfc2V0SUJDcmVhdG9ySUQ6KE5TU3RyaW5nICopc3RyaQog
ICAgIFtvbGQgcmVsZWFzZV07CiB9CiAKLSsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05l
d1Rlc3RpbmdTZXNzaW9uCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBXZWJUaHJl
YWRMb2NrKCk7Ci0jZW5kaWYKLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRv
TmV3VGVzdGluZ1Nlc3Npb24oKTsKLX0KLQotKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vz
c2lvbgotewotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCkuZGVsZXRlQWxsQ29va2llcygpOwotfQotCi0rICh2b2lkKV9zZXRDdXJyZW50TmV0d29y
a0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSlwb2xpY3kKLXsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2ll
U3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCkuY29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsgLy8gV2lsbCBm
YWlsIHdoZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNz
aW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KLSAgICBDRkhUVFBDb29raWVTdG9yYWdl
U2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7Ci19Ci0K
IC0gKEJPT0wpaXNET01QYXN0ZUFsbG93ZWQKIHsKICAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1
ZUZvcktleTpXZWJLaXRET01QYXN0ZUFsbG93ZWRQcmVmZXJlbmNlS2V5XTsKQEAgLTE5NjYsMTEg
KzE5NDYsNiBAQCAtICh2b2lkKXdpbGxBZGRUb1dlYlZpZXcKICAgICArK19wcml2YXRlLT5udW1X
ZWJWaWV3czsKIH0KIAotLSAodm9pZClfc2V0UHJlZmVyZW5jZUZvclRlc3RXaXRoVmFsdWU6KE5T
U3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQotewotICAgIFtzZWxmIF9zZXRT
dHJpbmdWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKLX0KLQogLSAodm9pZClzZXRGdWxsU2NyZWVu
RW5hYmxlZDooQk9PTClmbGFnCiB7CiAgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTpmbGFnIGZvcktl
eTpXZWJLaXRGdWxsU2NyZWVuRW5hYmxlZFByZWZlcmVuY2VLZXldOwpAQCAtMzAxMyw2ICsyOTg4
LDUxIEBAIC0gKHZvaWQpX3NldEVuYWJsZWQ6KEJPT0wpdmFsdWUgZm9yRmVhdHUKIAogQGVuZAog
CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVRlc3RpbmcpCisK
KysgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uCit7CisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBXZWJUaHJlYWRMb2NrKCk7CisjZW5kaWYKKyAgICBO
ZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKK30K
KworKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9s
aWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9saWN5Cit7CisgICAgUmV0YWluUHRyPENG
SFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Np
b25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsKKyAgICBBU1NF
UlQoY29va2llU3RvcmFnZSk7IC8vIFdpbGwgZmFpbCB3aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhh
bmQuCisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVT
dG9yYWdlLmdldCgpLCBwb2xpY3kpOworfQorCisrICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJT
ZXNzaW9uCit7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKS5kZWxldGVBbGxDb29raWVzKCk7Cit9CisKKy0gKHZvaWQpX3NldEJvb2xQcmVmZXJl
bmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTooQk9PTCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5
Cit7CisgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAo
dm9pZClfc2V0VUludDMyUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KHVpbnQzMl90KXZh
bHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2VsZiBfc2V0SW50ZWdlclZhbHVl
OnZhbHVlIGZvcktleTprZXldOworfQorCistICh2b2lkKV9zZXREb3VibGVQcmVmZXJlbmNlRm9y
VGVzdGluZ1dpdGhWYWx1ZTooZG91YmxlKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sK
KyAgICBbc2VsZiBfc2V0RmxvYXRWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAodm9p
ZClfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KE5TU3RyaW5nICopdmFs
dWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9zZXRTdHJpbmdWYWx1ZTp2
YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworQGVuZAorCiBAaW1wbGVtZW50YXRpb24gV2ViUHJlZmVy
ZW5jZXMgKFdlYlByaXZhdGVQcmVmZXJlbmNlc0NvbnZlcnRlZFRvV2ViRmVhdHVyZSkKIAogLSAo
Qk9PTCl1c2VyR2VzdHVyZVByb21pc2VQcm9wYWdhdGlvbkVuYWJsZWQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZh
dGUuaAkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtODksMTMgKzg5LDYg
QEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZSkKICsgKHZvaWQpX3NldElu
aXRpYWxEZWZhdWx0VGV4dEVuY29kaW5nVG9TeXN0ZW1FbmNvZGluZzsKICsgKHZvaWQpX3NldElC
Q3JlYXRvcklEOihOU1N0cmluZyAqKXN0cmluZzsKIAotLy8gRm9yIER1bXBSZW5kZXJUcmVlIHVz
ZSBvbmx5LgotKyAodm9pZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb247
Ci0rICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xp
Y3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSljb29raWVBY2NlcHRQb2xpY3k7Ci0rICh2b2lk
KV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uOwotLy8gVXNlZCB0byBzZXQgcHJlZmVyZW5jZSBz
cGVjaWZpZWQgaW4gdGhlIHRlc3QgdmlhIExheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJl
ZmVyZW5jZSguLikuCi0tICh2b2lkKV9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhWYWx1ZTooTlNT
dHJpbmcgKil2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OwotCiArICh2b2lkKXNldFdlYktp
dExpbmtUaW1lVmVyc2lvbjooaW50KXZlcnNpb247CiAKIC8vIEZvciBXZWJWaWV3J3MgdXNlIG9u
bHkuCkBAIC0zMTAsNiArMzAzLDE4IEBAIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlBy
aXZhdGVGZWEKIC0gKHZvaWQpX3NldEVuYWJsZWQ6KEJPT0wpdmFsdWUgZm9yRmVhdHVyZTooV2Vi
RmVhdHVyZSAqKWZlYXR1cmU7CiBAZW5kCiAKK0BpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdl
YlByaXZhdGVUZXN0aW5nKQorKyAodm9pZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGlu
Z1Nlc3Npb247CisrICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVB
Y2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSljb29raWVBY2NlcHRQb2xpY3k7
CisrICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uOworCistICh2b2lkKV9zZXRCb29s
UHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KEJPT0wpdmFsdWUgZm9yS2V5OihOU1N0cmlu
ZyAqKWtleTsKKy0gKHZvaWQpX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVl
Oih1aW50MzJfdCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OworLSAodm9pZClfc2V0RG91
YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KGRvdWJsZSl2YWx1ZSBmb3JLZXk6KE5T
U3RyaW5nICopa2V5OworLSAodm9pZClfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRo
VmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKworQGVuZAor
CiAvLyBGSVhNRTogSWYgdGhlc2UgYXJlIG5vdCB1c2VkIGFueXdoZXJlLCB3ZSBzaG91bGQgcmVt
b3ZlIHRoZW0gYW5kIG9ubHkgdXNlIFdlYkZlYXR1cmUgbWVjaGFuaXNtIGZvciB0aGUgcHJlZmVy
ZW5jZS4KIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGVQcmVmZXJlbmNlc0Nv
bnZlcnRlZFRvV2ViRmVhdHVyZSkKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHVzZXJHZXN0
dXJlUHJvbWlzZVByb3BhZ2F0aW9uRW5hYmxlZDsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDIwLTEwLTE3ICBTYW0g
V2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBE
dW1wUmVuZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtXSVBdCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rl
c3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiOiBBZGRlZC4K
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RPcHRpb25zOjpkZWZhdWx0cyk6CisgICAgICAgIChXVFI6OlRlc3RPcHRpb25zOjp3ZWJW
aWV3SXNDb21wYXRpYmxlV2l0aE9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV1RSOjpmZWF0dXJl
VmFsdWUpOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6Ym9vbFRlc3RSdW5uZXJGZWF0dXJl
VmFsdWUgY29uc3QpOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6c3RyaW5nVGVzdFJ1bm5l
ckZlYXR1cmVWYWx1ZSBjb25zdCk6CisgICAgICAgIChXVFI6OnNldFZhbHVlSWZTZXRJbk1hcCk6
IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlRlc3RPcHRpb25zOjpUZXN0T3B0aW9ucyk6IERlbGV0
ZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuaDoKKyAgICAgICAgKFdU
Ujo6VGVzdE9wdGlvbnM6OlRlc3RPcHRpb25zKToKKyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6
OmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBjb25zdCk6CisgICAgICAgIChXVFI6OlRlc3RPcHRp
b25zOjplbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkIGNvbnN0KToKKyAgICAgICAgKFdU
Ujo6VGVzdE9wdGlvbnM6OmxheWVyQmFja2VkV2ViVmlldyBjb25zdCk6CisgICAgICAgIChXVFI6
OlRlc3RPcHRpb25zOjp1c2VFcGhlbWVyYWxTZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdUUjo6
VGVzdE9wdGlvbnM6OmFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzIGNvbnN0KToKKyAgICAg
ICAgKFdUUjo6VGVzdE9wdGlvbnM6OmpzY09wdGlvbnMgY29uc3QpOgorICAgICAgICAoV1RSOjpU
ZXN0T3B0aW9uczo6Ym9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyBjb25zdCk6CisgICAgICAgIChX
VFI6OlRlc3RPcHRpb25zOjpkb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMgY29uc3QpOgorICAg
ICAgICAoV1RSOjpUZXN0T3B0aW9uczo6dWludDMyV2ViUHJlZmVyZW5jZUZlYXR1cmVzIGNvbnN0
KToKKyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6OnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJl
cyBjb25zdCk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHRvTlMpOgorICAgICAgICAoY3JlYXRl
V2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdyk6CisgICAgICAgIChyZXNldFdlYlByZWZlcmVuY2Vz
VG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9w
dGlvbnMpOgorICAgICAgICAoc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXNGb3JUZXN0aW5n
KToKKyAgICAgICAgKHNldEpTQ09wdGlvbnMpOgorICAgICAgICAocmVzZXRXZWJWaWV3VG9Db25z
aXN0ZW50U3RhdGUpOgorICAgICAgICAodGVzdE9wdGlvbnNGb3JUZXN0KToKKyAgICAgICAgKHJ1
blRlc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgor
ICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKToKKyAgICAgICAg
KFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24pOgorICAgICAgICAoVGVzdFJ1
bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldENhY2hl
TW9kZWwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tOgorICAg
ICAgICAoLVtVSURlbGVnYXRlIHJlc2V0VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nOl0p
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVl
cyk6CisKIDIwMjAtMTAtMTcgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtGbGF0cGFrIFNES10gZmxhdHBha3V0aWxzLnB5IHJlcG9ydHMgIktleUVy
cm9yOiAnZ2NjJyIgZXJyb3IgaWYgdXNpbmcgd2l0aCBpY2VjYyBhbmQgdG9vbGNoYWlucyBhcmVu
J3QgZ2VuZXJhdGVkIHlldApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CSh3b3JraW5n
IGNvcHkpCkBAIC03LDYgKzcsNyBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2lu
Y2x1ZGUvCiAkKFBST0pFQ1RfRElSKS8uLi9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4
dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCiAkKFBST0pFQ1RfRElSKS9CaW5kaW5n
cy9Db2RlR2VuZXJhdG9yRHVtcFJlbmRlclRyZWUucG0KICQoUFJPSkVDVF9ESVIpL1NjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCiskKFBS
T0pFQ1RfRElSKS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJh
dGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiCiAkKFdFQkNPUkVfUFJJVkFURV9IRUFE
RVJTX0RJUikvQ29kZUdlbmVyYXRvci5wbQogJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIp
L0lETEF0dHJpYnV0ZXMuanNvbgogJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0lETFBh
cnNlci5wbQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNvcHkp
CkBAIC0yLDMgKzIsNCBAQAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1
bXBSZW5kZXJUcmVlL0pTVUlTY3JpcHRDb250cm9sbGVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVlL0pTVUlTY3JpcHRDb250cm9sbGVyLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9EdW1wUmVuZGVyVHJlZS9UZXN0
T3B0aW9uc0dlbmVyYXRlZEtleXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFw
cGluZy5jcHAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMubWFrZQko
cmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMu
bWFrZQkod29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDExIEBAIFdFQl9QUkVGRVJFTkNFUyA9
IFwKICMKIAogV0VCX1BSRUZFUkVOQ0VTX1RFTVBMQVRFUyA9IFwKKyAgICAkKER1bXBSZW5kZXJU
cmVlKS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2Vi
S2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiIFwKICAgICAkKER1bXBSZW5kZXJUcmVlKS9TY3Jp
cHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYiBc
CiAjCiBXRUJfUFJFRkVSRU5DRVNfRklMRVMgPSAkKGJhc2VuYW1lICQobm90ZGlyICQoV0VCX1BS
RUZFUkVOQ0VTX1RFTVBMQVRFUykpKQotV0VCX1BSRUZFUkVOQ0VTX1BBVFRFUk5TID0gJChzdWJz
dCAuZXJiLCwkKFdFQl9QUkVGRVJFTkNFU19GSUxFUykpCitXRUJfUFJFRkVSRU5DRVNfUEFUVEVS
TlMgPSAkKHN1YnN0IC4sJSwkKFdFQl9QUkVGRVJFTkNFU19GSUxFUykpCiAKIGFsbCA6ICQoV0VC
X1BSRUZFUkVOQ0VTX0ZJTEVTKQogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMu
Y3BwCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9u
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDQ0IEBACiAKIG5hbWVzcGFjZSBXVFIg
ewogCitjb25zdCBUZXN0RmVhdHVyZXMmIFRlc3RPcHRpb25zOjpkZWZhdWx0cygpCit7CisgICAg
c3RhdGljIFRlc3RGZWF0dXJlcyBmZWF0dXJlczsKKyAgICBpZiAoZmVhdHVyZXMuYm9vbFdlYlBy
ZWZlcmVuY2VGZWF0dXJlcy5lbXB0eSgpKSB7CisgICAgICAgIGZlYXR1cmVzLmJvb2xXZWJQcmVm
ZXJlbmNlRmVhdHVyZXMgPSB7CisgICAgICAgICAgICAvLyBUaGVzZSBhcmUgV2ViUHJlZmVyZW5j
ZSB2YWx1ZXMgdGhhdCBtdXN0IGFsd2F5cyBiZSBzZXQgYXMgdGhleSBtYXkKKyAgICAgICAgICAg
IC8vIGRpZmZlciBmcm9tIHRoZSBkZWZhdWx0IHNldCBpbiB0aGUgV2ViUHJlZmVyZW5jZXMqLnlh
bWwgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgIHsgIkFsbG93Q3Jvc3NPcmlnaW5TdWJyZXNv
dXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkFsbG93
VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMiLCB0cnVlIH0sCisgICAgICAgICAgICB7ICJBY2NlbGVy
YXRlZERyYXdpbmdFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkF0dGFjaG1lbnRF
bGVtZW50RW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJVc2VzQmFja0ZvcndhcmRD
YWNoZSIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJDb2xvckZpbHRlckVuYWJsZWQiLCBmYWxz
ZSB9LAorICAgICAgICAgICAgeyAiSW5zcGVjdG9yQWRkaXRpb25zRW5hYmxlZCIsIGZhbHNlIH0s
CisgICAgICAgICAgICB7ICJJbnRlcnNlY3Rpb25PYnNlcnZlckVuYWJsZWQiLCBmYWxzZSB9LAor
ICAgICAgICAgICAgeyAiS2V5Z2VuRWxlbWVudEVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAg
ICAgeyAiTWVudUl0ZW1FbGVtZW50RW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJN
b2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCIsIHRydWUgfSwKKworICAgICAgICAgICAgeyAiQ1NT
TG9naWNhbEVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiTGluZUhlaWdodFVuaXRz
RW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJTZWxlY3Rpb25BY3Jvc3NTaGFkb3dC
b3VuZGFyaWVzRW5hYmxlZCIsIHRydWUgfSwKKyAgICAgICAgICAgIHsgIkxheW91dEZvcm1hdHRp
bmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkIiwgdHJ1ZSB9LAorCisgICAgICAgICAgICB7ICJB
ZENsaWNrQXR0cmlidXRpb25FbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkFzcGVj
dFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAg
ICAgIHsgIkFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7
ICJDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAg
IHsgIkNvbnRhY3RQaWNrZXJBUElFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkNv
cmVNYXRoTUxFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIlJlcXVlc3RJZGxlQ2Fs
bGJhY2tFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIlJlc2l6ZU9ic2VydmVyRW5h
YmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJXZWJHUFVFbmFibGVkIiwgZmFsc2UgfSwK
KyAgICAgICAgfTsKKyAgICB9CisgICAgcmV0dXJuIGZlYXR1cmVzOworfQorCiBjb25zdCBzdGQ6
OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFRlc3RIZWFkZXJLZXlUeXBlPiYgVGVzdE9wdGlv
bnM6OmtleVR5cGVNYXBwaW5nKCkKIHsKICAgICBzdGF0aWMgY29uc3Qgc3RkOjp1bm9yZGVyZWRf
bWFwPHN0ZDo6c3RyaW5nLCBUZXN0SGVhZGVyS2V5VHlwZT4gbWFwIHsKQEAgLTQ3LDU2ICs4NSw0
NyBAQCBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFRlCiAgICAgcmV0dXJu
IG1hcDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHZvaWQgc2V0VmFsdWVJZlNl
dEluTWFwKFQmIHZhbHVlVG9TZXQsIHN0ZDo6c3RyaW5nIGtleSwgY29uc3Qgc3RkOjp1bm9yZGVy
ZWRfbWFwPHN0ZDo6c3RyaW5nLCBUPiYgbWFwKQorYm9vbCBUZXN0T3B0aW9uczo6d2ViVmlld0lz
Q29tcGF0aWJsZVdpdGhPcHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKSBjb25zdAor
eworICAgIGlmIChtX2ZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVzICE9IG9wdGlvbnMubV9m
ZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmIChtX2ZlYXR1cmVzLmludGVybmFsRGVidWdGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVy
ZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KG1fZmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVy
ZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmIChtX2ZlYXR1cmVzLmRvdWJsZVdlYlByZWZlcmVuY2VGZWF0dXJlcyAhPSBvcHRpb25zLm1f
ZmVhdHVyZXMuZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKG1fZmVhdHVyZXMudWludDMyV2ViUHJlZmVyZW5jZUZlYXR1cmVzICE9IG9w
dGlvbnMubV9mZWF0dXJlcy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy5zdHJpbmdXZWJQcmVmZXJlbmNlRmVhdHVy
ZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcykKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLmJvb2xUZXN0UnVubmVyRmVh
dHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLmJvb2xUZXN0UnVubmVyRmVhdHVyZXMpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy5kb3VibGVUZXN0UnVubmVyRmVh
dHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLmRvdWJsZVRlc3RSdW5uZXJGZWF0dXJlcykKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLnN0cmluZ1Rlc3RSdW5uZXJG
ZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMuc3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVzKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuc3RyaW5nVmVjdG9yVGVz
dFJ1bm5lckZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5zdHJpbmdWZWN0b3JUZXN0UnVu
bmVyRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBmZWF0dXJlVmFsdWUoc3RkOjpzdHJpbmcga2V5LCBU
IGRlZmF1bHRWYWx1ZSwgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBUPiYg
bWFwKQogewogICAgIGF1dG8gaXQgPSBtYXAuZmluZChrZXkpOwotICAgIGlmIChpdCA9PSBtYXAu
ZW5kKCkpCi0gICAgICAgIHJldHVybjsKLSAgICB2YWx1ZVRvU2V0ID0gaXQtPnNlY29uZDsKLX0K
LQotVGVzdE9wdGlvbnM6OlRlc3RPcHRpb25zKFRlc3RGZWF0dXJlcyB0ZXN0RmVhdHVyZXMpCi17
Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGFsbG93Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNUb0Fz
a0ZvckNyZWRlbnRpYWxzLCAiQWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3Jl
ZGVudGlhbHMiLCB0ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAg
c2V0VmFsdWVJZlNldEluTWFwKGFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMsICJBbGxvd1Rv
cE5hdmlnYXRpb25Ub0RhdGFVUkxzIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVh
dHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVBY2NlbGVyYXRlZERyYXdpbmcs
ICJBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJl
bmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVBdHRhY2htZW50RWxl
bWVudCwgIkF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5ib29sV2ViUHJl
ZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQmFja0Zvcndh
cmRDYWNoZSwgIlVzZXNCYWNrRm9yd2FyZENhY2hlIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVm
ZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVDb2xvckZpbHRl
ciwgIkNvbG9yRmlsdGVyRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZl
YXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlSW5zcGVjdG9yQWRkaXRpb25z
LCAiSW5zcGVjdG9yQWRkaXRpb25zRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVy
ZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlSW50ZXJzZWN0aW9u
T2JzZXJ2ZXIsICJJbnRlcnNlY3Rpb25PYnNlcnZlckVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuYm9v
bFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUtl
eWdlbkVsZW1lbnQsICJLZXlnZW5FbGVtZW50RW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5ib29sV2Vi
UHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlTWVudUl0
ZW1FbGVtZW50LCAiTWVudUl0ZW1FbGVtZW50RW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5ib29sV2Vi
UHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlTW9kZXJu
TWVkaWFDb250cm9scywgIk1vZGVybk1lZGlhQ29udHJvbHNFbmFibGVkIiwgdGVzdEZlYXR1cmVz
LmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotCi0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVu
YWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQsICJlbmFibGVEcmFnRGVzdGluYXRpb25BY3Rp
b25Mb2FkIiwgdGVzdEZlYXR1cmVzLmJvb2xUZXN0UnVubmVyRmVhdHVyZXMpOwotICAgIHNldFZh
bHVlSWZTZXRJbk1hcChkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIsICJkdW1wSlNDb25zb2xlTG9n
SW5TdGRFcnIiLCB0ZXN0RmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0dXJlcyk7Ci0gICAgc2V0
VmFsdWVJZlNldEluTWFwKGxheWVyQmFja2VkV2ViVmlldywgImxheWVyQmFja2VkV2ViVmlldyIs
IHRlc3RGZWF0dXJlcy5ib29sVGVzdFJ1bm5lckZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0
SW5NYXAodXNlRXBoZW1lcmFsU2Vzc2lvbiwgInVzZUVwaGVtZXJhbFNlc3Npb24iLCB0ZXN0RmVh
dHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0dXJlcyk7Ci0KLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAo
YWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMsICJhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VU
eXBlcyIsIHRlc3RGZWF0dXJlcy5zdHJpbmdUZXN0UnVubmVyRmVhdHVyZXMpOwotICAgIHNldFZh
bHVlSWZTZXRJbk1hcChqc2NPcHRpb25zLCAianNjT3B0aW9ucyIsIHRlc3RGZWF0dXJlcy5zdHJp
bmdUZXN0UnVubmVyRmVhdHVyZXMpOwotCi0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUNT
U0xvZ2ljYWwsICJDU1NMb2dpY2FsRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5pbnRlcm5hbERlYnVn
RmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVMaW5lSGVpZ2h0VW5pdHMs
ICJMaW5lSGVpZ2h0VW5pdHNFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmludGVybmFsRGVidWdGZWF0
dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZVNlbGVjdGlvbkFjcm9zc1NoYWRv
d0JvdW5kYXJpZXMsICJzZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzRW5hYmxlZCIsIHRl
c3RGZWF0dXJlcy5pbnRlcm5hbERlYnVnRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1h
cChsYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCwgIkxheW91dEZvcm1h
dHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkIiwgdGVzdEZlYXR1cmVzLmludGVybmFsRGVi
dWdGZWF0dXJlcyk7Ci0KLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoYWRDbGlja0F0dHJpYnV0aW9u
RW5hYmxlZCwgIkFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJp
bWVudGFsRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVBc3BlY3RSYXRp
b09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0LCAiQXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhl
aWdodEVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMpOwotICAgIHNl
dFZhbHVlSWZTZXRJbk1hcChlbmFibGVBc3luY0NsaXBib2FyZEFQSSwgIkFzeW5jQ2xpcGJvYXJk
QVBJRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0
VmFsdWVJZlNldEluTWFwKGVuYWJsZUNTU09NVmlld1Ntb290aFNjcm9sbGluZywgIkNTU09NVmll
d1Ntb290aFNjcm9sbGluZ0VuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVy
ZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVDb250YWN0UGlja2VyQVBJLCAiQ29u
dGFjdFBpY2tlckFQSUVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMp
OwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVDb3JlTWF0aE1MLCAiQ29yZU1hdGhNTEVu
YWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMpOwotICAgIHNldFZhbHVl
SWZTZXRJbk1hcChlbmFibGVSZXF1ZXN0SWRsZUNhbGxiYWNrLCAiUmVxdWVzdElkbGVDYWxsYmFj
a0VuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMpOwotICAgIHNldFZh
bHVlSWZTZXRJbk1hcChlbmFibGVSZXNpemVPYnNlcnZlciwgIlJlc2l6ZU9ic2VydmVyRW5hYmxl
ZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNl
dEluTWFwKGVuYWJsZVdlYkdQVSwgIldlYkdQVUVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJp
bWVudGFsRmVhdHVyZXMpOworICAgIGlmIChpdCAhPSBtYXAuZW5kKCkpCisgICAgICAgIHJldHVy
biBpdC0+c2Vjb25kOworICAgIHJldHVybiBkZWZhdWx0VmFsdWU7Cit9CisKK2Jvb2wgVGVzdE9w
dGlvbnM6OmJvb2xUZXN0UnVubmVyRmVhdHVyZVZhbHVlKHN0ZDo6c3RyaW5nIGtleSwgYm9vbCBk
ZWZhdWx0VmFsdWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZlYXR1cmVWYWx1ZShrZXksIGRlZmF1
bHRWYWx1ZSwgbV9mZWF0dXJlcy5ib29sVGVzdFJ1bm5lckZlYXR1cmVzKTsKIH0KIAotYm9vbCBU
ZXN0T3B0aW9uczo6d2ViVmlld0lzQ29tcGF0aWJsZVdpdGhPcHRpb25zKGNvbnN0IFRlc3RPcHRp
b25zJiBvdGhlcikgY29uc3QKK3N0ZDo6c3RyaW5nIFRlc3RPcHRpb25zOjpzdHJpbmdUZXN0UnVu
bmVyRmVhdHVyZVZhbHVlKHN0ZDo6c3RyaW5nIGtleSwgc3RkOjpzdHJpbmcgZGVmYXVsdFZhbHVl
KSBjb25zdAogewotICAgIHJldHVybiBvdGhlci5sYXllckJhY2tlZFdlYlZpZXcgPT0gbGF5ZXJC
YWNrZWRXZWJWaWV3Ci0gICAgICAgICYmIG90aGVyLmpzY09wdGlvbnMgPT0ganNjT3B0aW9uczsK
KyAgICByZXR1cm4gZmVhdHVyZVZhbHVlKGtleSwgZGVmYXVsdFZhbHVlLCBtX2ZlYXR1cmVzLnN0
cmluZ1Rlc3RSdW5uZXJGZWF0dXJlcyk7CiB9CiAKIH0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL1Rlc3RPcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVz
dE9wdGlvbnMuaAkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVz
dE9wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNTMgKzMxLDM4IEBACiAKIG5hbWVzcGFj
ZSBXVFIgewogCi1zdHJ1Y3QgVGVzdE9wdGlvbnMgewotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhl
c2UgYW5kIHJlcGxhY2Ugd2l0aCBhY2Nlc3MgdG8gVGVzdEZlYXR1cmVzIHNldC4KLSAgICAvLyBX
ZWIgUHJlZmVyZW5jZXMKLSAgICBib29sIGFsbG93Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNUb0Fz
a0ZvckNyZWRlbnRpYWxzIHsgZmFsc2UgfTsKLSAgICBib29sIGFsbG93VG9wTmF2aWdhdGlvblRv
RGF0YVVSTHMgeyB0cnVlIH07Ci0gICAgYm9vbCBlbmFibGVBY2NlbGVyYXRlZERyYXdpbmcgeyBm
YWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQXR0YWNobWVudEVsZW1lbnQgeyBmYWxzZSB9OwotICAg
IGJvb2wgZW5hYmxlQmFja0ZvcndhcmRDYWNoZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVD
b2xvckZpbHRlciB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVJbnNwZWN0b3JBZGRpdGlvbnMg
eyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgeyBmYWxzZSB9
OwotICAgIGJvb2wgZW5hYmxlS2V5Z2VuRWxlbWVudCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFi
bGVNZW51SXRlbUVsZW1lbnQgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlTW9kZXJuTWVkaWFD
b250cm9scyB7IHRydWUgfTsKLQotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlc2UgYW5kIHJlcGxh
Y2Ugd2l0aCBhY2Nlc3MgdG8gVGVzdEZlYXR1cmVzIHNldC4KLSAgICAvLyBJbnRlcm5hbCBGZWF0
dXJlcwotICAgIGJvb2wgZW5hYmxlQ1NTTG9naWNhbCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFi
bGVMaW5lSGVpZ2h0VW5pdHMgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlU2VsZWN0aW9uQWNy
b3NzU2hhZG93Qm91bmRhcmllcyB7IHRydWUgfTsKLSAgICBib29sIGxheW91dEZvcm1hdHRpbmdD
b250ZXh0SW50ZWdyYXRpb25FbmFibGVkIHsgdHJ1ZSB9OwotCi0gICAgLy8gRklYTUU6IFJlbW92
ZSB0aGVzZSBhbmQgcmVwbGFjZSB3aXRoIGFjY2VzcyB0byBUZXN0RmVhdHVyZXMgc2V0LgotICAg
IC8vIEV4cGVyaW1lbnRhbCBGZWF0dXJlcwotICAgIGJvb2wgYWRDbGlja0F0dHJpYnV0aW9uRW5h
YmxlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVBc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRo
QW5kSGVpZ2h0IHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUFzeW5jQ2xpcGJvYXJkQVBJIHsg
ZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUNTU09NVmlld1Ntb290aFNjcm9sbGluZyB7IGZhbHNl
IH07Ci0gICAgYm9vbCBlbmFibGVDb250YWN0UGlja2VyQVBJIHsgZmFsc2UgfTsKLSAgICBib29s
IGVuYWJsZUNvcmVNYXRoTUwgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlUmVxdWVzdElkbGVD
YWxsYmFjayB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVSZXNpemVPYnNlcnZlciB7IGZhbHNl
IH07Ci0gICAgYm9vbCBlbmFibGVXZWJHUFUgeyBmYWxzZSB9OworY2xhc3MgVGVzdE9wdGlvbnMg
eworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBUZXN0RmVhdHVyZXMmIGRlZmF1bHRzKCk7Cisg
ICAgc3RhdGljIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgVGVzdEhlYWRl
cktleVR5cGU+JiBrZXlUeXBlTWFwcGluZygpOwogCi0gICAgLy8gVGVzdCBSdW5uZXIgU3BlY2lm
aWMgRmVhdHVyZXMKLSAgICBib29sIGR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciB7IGZhbHNlIH07
Ci0gICAgYm9vbCBlbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkIHsgZmFsc2UgfTsKLSAg
ICBib29sIGVuYWJsZVdlYlNRTCB7IHRydWUgfTsKLSAgICBib29sIGxheWVyQmFja2VkV2ViVmll
dyB7IGZhbHNlIH07Ci0gICAgYm9vbCB1c2VFcGhlbWVyYWxTZXNzaW9uIHsgZmFsc2UgfTsKLSAg
ICBzdGQ6OnN0cmluZyBhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlczsKLSAgICBzdGQ6OnN0
cmluZyBqc2NPcHRpb25zOworICAgIGV4cGxpY2l0IFRlc3RPcHRpb25zKFRlc3RGZWF0dXJlcyBm
ZWF0dXJlcykKKyAgICAgICAgOiBtX2ZlYXR1cmVzKHN0ZDo6bW92ZShmZWF0dXJlcykpCisgICAg
eworICAgIH0KIAotICAgIGV4cGxpY2l0IFRlc3RPcHRpb25zKFRlc3RGZWF0dXJlcyk7CiAgICAg
Ym9vbCB3ZWJWaWV3SXNDb21wYXRpYmxlV2l0aE9wdGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmKSBj
b25zdDsKLSAgICAKLSAgICBzdGF0aWMgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3Ry
aW5nLCBUZXN0SGVhZGVyS2V5VHlwZT4mIGtleVR5cGVNYXBwaW5nKCk7CisKKyAgICAvLyBUZXN0
IFJ1bm5lciBTcGVjaWZpYyBGZWF0dXJlcworICAgIGJvb2wgZHVtcEpTQ29uc29sZUxvZ0luU3Rk
RXJyKCkgY29uc3QgeyByZXR1cm4gYm9vbFRlc3RSdW5uZXJGZWF0dXJlVmFsdWUoImR1bXBKU0Nv
bnNvbGVMb2dJblN0ZEVyciIsIGZhbHNlKTsgfQorICAgIGJvb2wgZW5hYmxlRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uTG9hZCgpIGNvbnN0IHsgcmV0dXJuIGJvb2xUZXN0UnVubmVyRmVhdHVyZVZhbHVl
KCJlbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkIiwgZmFsc2UpOyB9CisgICAgYm9vbCBs
YXllckJhY2tlZFdlYlZpZXcoKSBjb25zdCB7IHJldHVybiBib29sVGVzdFJ1bm5lckZlYXR1cmVW
YWx1ZSgibGF5ZXJCYWNrZWRXZWJWaWV3IiwgZmFsc2UpOyB9CisgICAgYm9vbCB1c2VFcGhlbWVy
YWxTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gYm9vbFRlc3RSdW5uZXJGZWF0dXJlVmFsdWUoInVz
ZUVwaGVtZXJhbFNlc3Npb24iLCBmYWxzZSk7IH0KKyAgICBzdGQ6OnN0cmluZyBhZGRpdGlvbmFs
U3VwcG9ydGVkSW1hZ2VUeXBlcygpIGNvbnN0IHsgcmV0dXJuIHN0cmluZ1Rlc3RSdW5uZXJGZWF0
dXJlVmFsdWUoImFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzIiwgeyB9KTsgfQorICAgIHN0
ZDo6c3RyaW5nIGpzY09wdGlvbnMoKSBjb25zdCB7IHJldHVybiBzdHJpbmdUZXN0UnVubmVyRmVh
dHVyZVZhbHVlKCJqc2NPcHRpb25zIiwgeyB9KTsgfQorCisgICAgY29uc3Qgc3RkOjp1bm9yZGVy
ZWRfbWFwPHN0ZDo6c3RyaW5nLCBib29sPiYgYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcygpIGNv
bnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlczsgfQorICAg
IGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgZG91YmxlPiYgZG91YmxlV2Vi
UHJlZmVyZW5jZUZlYXR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcy5kb3VibGVXZWJQ
cmVmZXJlbmNlRmVhdHVyZXM7IH0KKyAgICBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpz
dHJpbmcsIHVpbnQzMl90PiYgdWludDMyV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9mZWF0dXJlcy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXM7IH0KKyAgICBjb25z
dCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiYgc3RyaW5nV2Vi
UHJlZmVyZW5jZUZlYXR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcy5zdHJpbmdXZWJQ
cmVmZXJlbmNlRmVhdHVyZXM7IH0KKworICAgIHN0YXRpYyBzdGQ6OnN0cmluZyB0b1dlYktpdExl
Z2FjeVByZWZlcmVuY2VLZXkoY29uc3Qgc3RkOjpzdHJpbmcmKTsKKworcHJpdmF0ZToKKyAgICBi
b29sIGJvb2xUZXN0UnVubmVyRmVhdHVyZVZhbHVlKHN0ZDo6c3RyaW5nIGtleSwgYm9vbCBkZWZh
dWx0VmFsdWUpIGNvbnN0OworICAgIHN0ZDo6c3RyaW5nIHN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJl
VmFsdWUoc3RkOjpzdHJpbmcga2V5LCBzdGQ6OnN0cmluZyBkZWZhdWx0VmFsdWUpIGNvbnN0Owor
CisgICAgVGVzdEZlYXR1cmVzIG1fZmVhdHVyZXM7CiB9OwogCiB9CkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTEwOSw2ICsxMDksNyBAQAogCQk1REI5QUM5RTBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0
V2VpZ2h0V2F0Y2hlcjcwMC50dGYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDM3NUYwOTc3MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWln
aHRXYXRjaGVyNzAwLnR0ZiAqLzsgfTsKIAkJNURCOUFDOUYwRjcyMkMzNjAwNjg0NjQxIC8qIFdl
YktpdFdlaWdodFdhdGNoZXI4MDAudHRmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVGMDk3ODBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0
V2VpZ2h0V2F0Y2hlcjgwMC50dGYgKi87IH07CiAJCTVEQjlBQ0EwMEY3MjJDMzYwMDY4NDY0MSAv
KiBXZWJLaXRXZWlnaHRXYXRjaGVyOTAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc1RjA5NzkwREFDM0NCNjAwQzhCNEU1IC8qIFdl
YktpdFdlaWdodFdhdGNoZXI5MDAudHRmICovOyB9OworCQk3QzRGMzA0MDI1M0I5NzBGMDAzMDU0
NTggLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNEYzMDNGMjUzQjgz
NjkwMDMwNTQ1OCAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcu
Y3BwICovOyB9OwogCQk3Q0ZGOUJCRjI1MzNCQjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRkY5QkJF
MjUzM0JCMjQwMDA4MDA5RiAvKiBUZXN0RmVhdHVyZXMuY3BwICovOyB9OwogCQk3Q0ZGOUJDMjI1
MzNCQzE2MDAwODAwOUYgLyogVGVzdENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NGRjlCQzEyNTMzQkMxNjAwMDgwMDlGIC8qIFRlc3RD
b21tYW5kLmNwcCAqLzsgfTsKIAkJODAwNDVBRUUxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2li
aWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODAwNDVBRUMxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxp
dHlOb3RpZmljYXRpb25IYW5kbGVyLm1tICovOyB9OwpAQCAtMzMzLDcgKzMzNCw5IEBACiAJCTdD
NDQ2OTdGMjUzNzdBMDIwMDI0MjkwQSAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QzQ0Njk4MDI1Mzc3QTAyMDAyNDI5MEEgLyogY2hlY2steGNmaWxlbGlzdHMu
c2ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnNjcmlwdC5zaDsgcGF0aCA9ICJjaGVjay14Y2ZpbGVsaXN0cy5zaCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDNDQ2OTgxMjUzNzdBMDIwMDI0MjkwQSAvKiBnZW5lcmF0ZS1kZXJp
dmVkLXNvdXJjZXMuc2ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnNjcmlwdC5zaDsgcGF0aCA9ICJnZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMu
c2giOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5
MEEgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3RPcHRp
b25zR2VuZXJhdGVkS2V5cy5oOyBwYXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNDQ2OTg1MjUzNzdFNTIwMDI0MjkwQSAvKiBU
ZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdE9wdGlvbnNHZW5l
cmF0ZWRLZXlzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNEYzMDNGMjUzQjgz
NjkwMDMwNTQ1OCAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lL
ZXlNYXBwaW5nLmNwcDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5
TWFwcGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDOUUyNTBCMjUzQjc5
NEEwMDQxMzAxOCAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcu
Y3BwLmVyYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcu
Y3BwLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NCQkMzMjIxRERGQ0Y5QTAw
Nzg2QjlEIC8qIFRlc3RPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRlc3RPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRkY5QkJEMjUz
M0JCMjQwMDA4MDA5RiAvKiBUZXN0RmVhdHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdEZlYXR1
cmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRkY5QkJFMjUzM0JCMjQwMDA4
MDA5RiAvKiBUZXN0RmVhdHVyZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVzdEZlYXR1cmVz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc3MCw2ICs3NzMsNyBAQAogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk3QzQ0Njk3RjI1Mzc3QTAyMDAy
NDI5MEEgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiICovLAorCQkJCTdDOUUyNTBC
MjUzQjc5NEEwMDQxMzAxOCAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1h
cHBpbmcuY3BwLmVyYiAqLywKIAkJCSk7CiAJCQlwYXRoID0gUHJlZmVyZW5jZXNUZW1wbGF0ZXM7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzc4LDYgKzc4Miw3IEBACiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdDNDQ2OTg1MjUzNzdFNTIwMDI0Mjkw
QSAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaCAqLywKKwkJCQk3QzRGMzAzRjI1M0I4MzY5
MDAzMDU0NTggLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNw
cCAqLywKIAkJCSk7CiAJCQluYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCQlwYXRoID0gRGVy
aXZlZFNvdXJjZXMvRHVtcFJlbmRlclRyZWU7CkBAIC0xMjkxLDYgKzEyOTYsNyBAQAogCQkJCTdD
RkY5QkMyMjUzM0JDMTYwMDA4MDA5RiAvKiBUZXN0Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3Q0ZGOUJCRjI1MzNCQjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUEzMEEyMUY4MjA1MUQ4QzQwMDA4RkY0MiAvKiBUZXN0T3B0aW9ucy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk3QzRGMzA0MDI1M0I5NzBGMDAzMDU0NTggLyogVGVzdE9wdGlv
bnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDMDEzMURBMEM5NzcyMDEwMDg3MzE3RCAvKiBUZXN0UnVubmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDQTE4QjI0MEM5QjAxNEIwMDExNDM2OSAvKiBUZXN0UnVubmVyTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJRjRENDIzNjExREQ1MDQ4MjAwNjc4MjkwIC8qIFRleHRJbnB1dENvbnRy
b2xsZXJJT1MubSBpbiBTb3VyY2VzICovLApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvU2Ny
aXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2Fj
eUtleU1hcHBpbmcuY3BwLmVyYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9T
Y3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVn
YWN5S2V5TWFwcGluZy5jcHAuZXJiCShub25leGlzdGVudCkKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJL
aXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBA
QAorLyoKKyAqIDwlPSBAd2FybmluZyAlPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJUZXN0T3B0aW9ucy5oIgorCituYW1lc3BhY2UgV1RSIHsKKworc3RkOjpz
dHJpbmcgVGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShjb25zdCBzdGQ6
OnN0cmluZyYgd2ViUHJlZmVyZW5jZXNLZXkpCit7CisgICAgc3RhdGljIHN0ZDo6dW5vcmRlcmVk
X21hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IG5vblN0YW5kYXJkS2V5cyA9IHsKKzwlLSBm
b3IgQHByZWYgaW4gQHByZWZlcmVuY2VzLnNlbGVjdCB7IHxwfCBwLm9wdHNbIndlYktpdExlZ2Fj
eVByZWZlcmVuY2VLZXkiXSB9IGRvIC0lPgorICAgICAgICB7ICI8JT0gQHByZWYubmFtZSAlPiIs
ICI8JT0gQHByZWYucHJlZmVyZW5jZUtleSAlPiIgfSwgXAorPCUtIGVuZCAtJT4KKyAgICB9Owor
CisgICAgYXV0byBpdCA9IG5vblN0YW5kYXJkS2V5cy5maW5kKHdlYlByZWZlcmVuY2VzS2V5KTsK
KyAgICBpZiAoaXQgIT0gbm9uU3RhbmRhcmRLZXlzLmVuZCgpKQorICAgICAgICByZXR1cm4gaXQt
PnNlY29uZDsKKworICAgIHJldHVybiAiV2ViS2l0IiArIHdlYlByZWZlcmVuY2VzS2V5OworfQor
Cit9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCShy
ZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMSw2ICsxMzEsMTIgQEAgZXh0ZXJuICJDIiB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKK3N0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IHRvTlMo
Y29uc3Qgc3RkOjpzdHJpbmcmIHN0cmluZykKK3sKKyAgICByZXR1cm4gYWRvcHROUyhbW05TU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFVURjhTdHJpbmc6c3RyaW5nLmNfc3RyKCldKTsKK30KKworCiAj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBAaW50ZXJmYWNlIER1bXBSZW5kZXJUcmVlQXBwbGlj
YXRpb24gOiBOU0FwcGxpY2F0aW9uCiBAZW5kCkBAIC02NzIsNiArNjc4LDEwIEBAIFdlYlZpZXcg
KmNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3cKICAgICBbd2ViVmlldyBzZXRHcm91cE5h
bWU6QCJvcmcud2Via2l0LkR1bXBSZW5kZXJUcmVlIl07CiAjZW5kaWYKIAorICAgIFdlYlByZWZl
cmVuY2VzICpwcmVmZXJlbmNlcyA9IFtbV2ViUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdOworICAg
IFtwcmVmZXJlbmNlcyBzZXRBdXRvc2F2ZXM6Tk9dOworICAgIFt3ZWJWaWV3IHNldFByZWZlcmVu
Y2VzOnByZWZlcmVuY2VzXTsKKwogICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6dWlEZWxlZ2F0
ZV07CiAgICAgW3dlYlZpZXcgc2V0RnJhbWVMb2FkRGVsZWdhdGU6ZnJhbWVMb2FkRGVsZWdhdGVd
OwogICAgIFt3ZWJWaWV3IHNldEVkaXRpbmdEZWxlZ2F0ZTplZGl0aW5nRGVsZWdhdGVdOwpAQCAt
Njg1LDggKzY5NSw2IEBAIFdlYlZpZXcgKmNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3cK
ICAgICBbV2ViVmlldyByZWdpc3RlclVSTFNjaGVtZUFzTG9jYWw6QCJmZWVkcyJdOwogICAgIFtX
ZWJWaWV3IHJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbDpAImZlZWRzZWFyY2giXTsKIAotICAgIFtb
d2ViVmlldyBwcmVmZXJlbmNlc10gX3NldE1lZGlhUmVjb3JkZXJFbmFibGVkOllFU107Ci0KICNp
ZiBQTEFURk9STShNQUMpCiAgICAgW3dlYlZpZXcgc2V0V2luZG93T2NjbHVzaW9uRGV0ZWN0aW9u
RW5hYmxlZDpOT107CiAgICAgW1dlYlZpZXcgX3NldEZvbnRBbGxvd0xpc3Q6Zm9udEFsbG93TGlz
dCgpXTsKQEAgLTg0NCw5ICs4NTIsOCBAQCBzdGF0aWMgdm9pZCBlbmFibGVFeHBlcmltZW50YWxG
ZWF0dXJlcyhXCiB9CiAKIC8vIENhbGxlZCBiZWZvcmUgZWFjaCB0ZXN0Lgotc3RhdGljIHZvaWQg
cmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcygpCitzdGF0aWMgdm9pZCByZXNl
dFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKFdlYlByZWZlcmVuY2VzICpwcmVmZXJl
bmNlcykKIHsKLSAgICBXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbV2ViUHJlZmVyZW5j
ZXMgc3RhbmRhcmRQcmVmZXJlbmNlc107CiAgICAgZW5hYmxlRXhwZXJpbWVudGFsRmVhdHVyZXMo
cHJlZmVyZW5jZXMpOwogCiAgICAgW3ByZWZlcmVuY2VzIHNldE5lZWRzU3RvcmFnZUFjY2Vzc0Zy
b21GaWxlVVJMc1F1aXJrOiBOT107CkBAIC05MDIsNiArOTA5LDcgQEAgc3RhdGljIHZvaWQgcmVz
ZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdAogICAgIH0gZWxzZQogICAgICAgICBbcHJlZmVyZW5j
ZXMgc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkOk5PXTsKIAorICAgIFtwcmVmZXJlbmNlcyBzZXRJ
bmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZTpOT107CiAgICAg
W3ByZWZlcmVuY2VzIHNldE1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmU6WUVTXTsKICAgICBbcHJl
ZmVyZW5jZXMgc2V0TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmU6Tk9dOwogICAgIFtw
cmVmZXJlbmNlcyBzZXRWaWRlb1BsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZTpOT107CkBAIC05
NjAsNiArOTY4LDcgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdAog
ICAgIHByZWZlcmVuY2VzLm1lZGlhQ2FwYWJpbGl0aWVzRW5hYmxlZCA9IFlFUzsKIAogICAgIHBy
ZWZlcmVuY2VzLnNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXNFbmFibGVkID0gWUVTOwor
ICAgIHByZWZlcmVuY2VzLmZ1bGxTY3JlZW5FbmFibGVkID0gWUVTOwogCiAgICAgW3ByZWZlcmVu
Y2VzIHNldFdlYlNRTEVuYWJsZWQ6WUVTXTsKIApAQCAtOTY3LDM0ICs5NzYsMjEgQEAgc3RhdGlj
IHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdAogICAgIFtXZWJQcmVmZXJlbmNlcyBf
c2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5Ok5TSFRUUENv
b2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluXTsKIH0KIAotc3RhdGlj
IHZvaWQgc2V0V2ViUHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9ucyhjb25zdCBXVFI6OlRlc3RPcHRp
b25zJiBvcHRpb25zKQorc3RhdGljIHZvaWQgc2V0V2ViUHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9u
cyhXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMsIGNvbnN0IFdUUjo6VGVzdE9wdGlvbnMmIG9w
dGlvbnMpCiB7Ci0gICAgV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzID0gW1dlYlByZWZlcmVu
Y2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdOworICAgIHByZWZlcmVuY2VzLnByaXZhdGVCcm93c2lu
Z0VuYWJsZWQgPSBvcHRpb25zLnVzZUVwaGVtZXJhbFNlc3Npb24oKTsKKworICAgIGZvciAoY29u
c3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVz
KCkpCisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0aW5nV2l0
aFZhbHVlOnZhbHVlIGZvcktleTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5
UHJlZmVyZW5jZUtleShrZXkpKS5nZXQoKV07CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXks
IHZhbHVlXSA6IG9wdGlvbnMuZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAg
IFtwcmVmZXJlbmNlcyBfc2V0RG91YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dmFs
dWUgZm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNl
S2V5KGtleSkpLmdldCgpXTsKIAotICAgIHByZWZlcmVuY2VzLmF0dGFjaG1lbnRFbGVtZW50RW5h
YmxlZCA9IG9wdGlvbnMuZW5hYmxlQXR0YWNobWVudEVsZW1lbnQ7Ci0gICAgcHJlZmVyZW5jZXMu
YWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlQWNjZWxlcmF0ZWREcmF3
aW5nOwotICAgIHByZWZlcmVuY2VzLm1lbnVJdGVtRWxlbWVudEVuYWJsZWQgPSBvcHRpb25zLmVu
YWJsZU1lbnVJdGVtRWxlbWVudDsKLSAgICBwcmVmZXJlbmNlcy5rZXlnZW5FbGVtZW50RW5hYmxl
ZCA9IG9wdGlvbnMuZW5hYmxlS2V5Z2VuRWxlbWVudDsKLSAgICBwcmVmZXJlbmNlcy5tb2Rlcm5N
ZWRpYUNvbnRyb2xzRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlTW9kZXJuTWVkaWFDb250cm9sczsK
LSAgICBwcmVmZXJlbmNlcy5pbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkID0gb3B0aW9ucy5lbmFi
bGVJbnNwZWN0b3JBZGRpdGlvbnM7Ci0gICAgcHJlZmVyZW5jZXMuYWxsb3dDcm9zc09yaWdpblN1
YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMgPSBvcHRpb25zLmFsbG93Q3Jvc3NPcmlnaW5T
dWJyZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzOwotICAgIHByZWZlcmVuY2VzLmNvbG9yRmls
dGVyRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlQ29sb3JGaWx0ZXI7Ci0gICAgcHJlZmVyZW5jZXMu
c2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllc0VuYWJsZWQgPSBvcHRpb25zLmVuYWJsZVNl
bGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXM7Ci0gICAgcHJlZmVyZW5jZXMud2ViR1BVRW5h
YmxlZCA9IG9wdGlvbnMuZW5hYmxlV2ViR1BVOwotICAgIHByZWZlcmVuY2VzLkNTU0xvZ2ljYWxF
bmFibGVkID0gb3B0aW9ucy5lbmFibGVDU1NMb2dpY2FsOwotICAgIHByZWZlcmVuY2VzLmxpbmVI
ZWlnaHRVbml0c0VuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUxpbmVIZWlnaHRVbml0czsKLSAgICBw
cmVmZXJlbmNlcy5hZENsaWNrQXR0cmlidXRpb25FbmFibGVkID0gb3B0aW9ucy5hZENsaWNrQXR0
cmlidXRpb25FbmFibGVkOwotICAgIHByZWZlcmVuY2VzLnJlc2l6ZU9ic2VydmVyRW5hYmxlZCA9
IG9wdGlvbnMuZW5hYmxlUmVzaXplT2JzZXJ2ZXI7Ci0gICAgcHJlZmVyZW5jZXMuQ1NTT01WaWV3
U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlQ1NTT01WaWV3U21vb3RoU2Ny
b2xsaW5nOwotICAgIHByZWZlcmVuY2VzLmNvcmVNYXRoTUxFbmFibGVkID0gb3B0aW9ucy5lbmFi
bGVDb3JlTWF0aE1MOwotICAgIHByZWZlcmVuY2VzLnJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVk
ID0gb3B0aW9ucy5lbmFibGVSZXF1ZXN0SWRsZUNhbGxiYWNrOwotICAgIHByZWZlcmVuY2VzLmFz
eW5jQ2xpcGJvYXJkQVBJRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlQXN5bmNDbGlwYm9hcmRBUEk7
Ci0gICAgcHJlZmVyZW5jZXMucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IG9wdGlvbnMudXNlRXBo
ZW1lcmFsU2Vzc2lvbjsKLSAgICBwcmVmZXJlbmNlcy51c2VzUGFnZUNhY2hlID0gb3B0aW9ucy5l
bmFibGVCYWNrRm9yd2FyZENhY2hlOwotICAgIHByZWZlcmVuY2VzLmxheW91dEZvcm1hdHRpbmdD
b250ZXh0SW50ZWdyYXRpb25FbmFibGVkID0gb3B0aW9ucy5sYXlvdXRGb3JtYXR0aW5nQ29udGV4
dEludGVncmF0aW9uRW5hYmxlZDsKLSAgICBwcmVmZXJlbmNlcy5hc3BlY3RSYXRpb09mSW1nRnJv
bVdpZHRoQW5kSGVpZ2h0RW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlQXNwZWN0UmF0aW9PZkltZ0Zy
b21XaWR0aEFuZEhlaWdodDsKLSAgICBwcmVmZXJlbmNlcy5hbGxvd1RvcE5hdmlnYXRpb25Ub0Rh
dGFVUkxzID0gb3B0aW9ucy5hbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzOwotICAgIHByZWZl
cmVuY2VzLmNvbnRhY3RQaWNrZXJBUElFbmFibGVkID0gb3B0aW9ucy5lbmFibGVDb250YWN0UGlj
a2VyQVBJOworICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy51aW50
MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXRVSW50
MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZSBmb3JLZXk6dG9OUyhXVFI6OlRl
c3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVuY2VLZXkoa2V5KSkuZ2V0KCldOworCisg
ICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLnN0cmluZ1dlYlByZWZl
cmVuY2VGZWF0dXJlcygpKQorICAgICAgICBbcHJlZmVyZW5jZXMgX3NldFN0cmluZ1ByZWZlcmVu
Y2VGb3JUZXN0aW5nV2l0aFZhbHVlOnRvTlModmFsdWUpLmdldCgpIGZvcktleTp0b05TKFdUUjo6
VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShrZXkpKS5nZXQoKV07CiB9
CiAKIC8vIENhbGxlZCBvbmNlIG9uIER1bXBSZW5kZXJUcmVlIHN0YXJ0dXAuCkBAIC0xMDE4LDkg
KzEwMTQsNiBAQCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlCiAgICAg
ICAgIEAiQXBwbGVPdGhlckhpZ2hsaWdodENvbG9yIjpAIjAuNTAwMDAwIDAuNTAwMDAwIDAuNTAw
MDAwIiwKICAgICAgICAgQCJBcHBsZUxhbmd1YWdlcyI6IEBbIEAiZW4iIF0sCiAgICAgICAgIFdl
YktpdEVuYWJsZUZ1bGxEb2N1bWVudFRlYXJkb3duUHJlZmVyZW5jZUtleTogQFlFUywKLSAgICAg
ICAgV2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5OiBAWUVTLAotICAgICAgICBX
ZWJLaXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrUHJlZmVyZW5jZUtleTogQFlFUywKLSAgICAg
ICAgV2ViS2l0SW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGVL
ZXk6IEBOTywKICAgICAgICAgQCJVc2VXZWJLaXRXZWJJbnNwZWN0b3IiOiBAWUVTLAogI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBAIk5TUHJlZmVycmVkU3BlbGxTZXJ2ZXJMYW5n
dWFnZSI6IEAiZW5fVVMiLApAQCAtMTgyNiw5ICsxODE5LDkgQEAgc3RhdGljIHZvaWQgc2V0SlND
T3B0aW9ucyhjb25zdCBXVFI6OlRlcwogICAgICAgICBzYXZlZE9wdGlvbnMuY2xlYXIoKTsKICAg
ICB9CiAKLSAgICBpZiAob3B0aW9ucy5qc2NPcHRpb25zLmxlbmd0aCgpKSB7CisgICAgaWYgKCFv
cHRpb25zLmpzY09wdGlvbnMoKS5lbXB0eSgpKSB7CiAgICAgICAgIEpTQzo6T3B0aW9uczo6ZHVt
cEFsbE9wdGlvbnNJbkFMaW5lKHNhdmVkT3B0aW9ucyk7Ci0gICAgICAgIEpTQzo6T3B0aW9uczo6
c2V0T3B0aW9ucyhvcHRpb25zLmpzY09wdGlvbnMuY19zdHIoKSk7CisgICAgICAgIEpTQzo6T3B0
aW9uczo6c2V0T3B0aW9ucyhvcHRpb25zLmpzY09wdGlvbnMoKS5jX3N0cigpKTsKICAgICB9CiB9
CiAKQEAgLTE4MzksNiArMTgzMiwxMCBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNp
c3RlbnRTdGF0CiAKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW21haW5GcmFtZSB3ZWJWaWV3XTsK
IAorICAgIFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtbV2ViUHJlZmVyZW5jZXMgYWxs
b2NdIGluaXRdOworICAgIFtwcmVmZXJlbmNlcyBzZXRBdXRvc2F2ZXM6Tk9dOworICAgIFt3ZWJW
aWV3IHNldFByZWZlcmVuY2VzOnByZWZlcmVuY2VzXTsKKwogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgYWRqdXN0V2ViRG9jdW1lbnRGb3JTdGFuZGFyZFZpZXdwb3J0KGdXZWJCcm93c2Vy
VmlldywgZ1dlYlNjcm9sbFZpZXcpOwogICAgIFt3ZWJWaWV3IF9zZXRBbGxvd3NNZXNzYWdpbmc6
WUVTXTsKQEAgLTE4NjcsMTAgKzE4NjQsMTAgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9D
b25zaXN0ZW50U3RhdAogCiAgICAgW1dlYkNhY2hlIGNsZWFyQ2FjaGVkQ3JlZGVudGlhbHNdOwog
Ci0gICAgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcygpOwotICAgIHNldFdl
YlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMob3B0aW9ucyk7CisgICAgcmVzZXRXZWJQcmVmZXJl
bmNlc1RvQ29uc2lzdGVudFZhbHVlcyhwcmVmZXJlbmNlcyk7CisgICAgc2V0V2ViUHJlZmVyZW5j
ZXNGb3JUZXN0T3B0aW9ucyhwcmVmZXJlbmNlcywgb3B0aW9ucyk7CiAjaWYgUExBVEZPUk0oTUFD
KQotICAgIFt3ZWJWaWV3IHNldFdhbnRzTGF5ZXI6b3B0aW9ucy5sYXllckJhY2tlZFdlYlZpZXdd
OworICAgIFt3ZWJWaWV3IHNldFdhbnRzTGF5ZXI6b3B0aW9ucy5sYXllckJhY2tlZFdlYlZpZXco
KV07CiAjZW5kaWYKIAogICAgIFRlc3RSdW5uZXI6OnNldFNlcmlhbGl6ZUhUVFBMb2FkcyhmYWxz
ZSk7CkBAIC0xOTE0LDcgKzE5MTEsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNp
c3RlbnRTdGF0CiAgICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIGRlY2xhcmVU
eXBlczpAW05TU3RyaW5nUGJvYXJkVHlwZV0gb3duZXI6bmlsXTsKICNlbmRpZgogCi0gICAgV2Vi
Q29yZVRlc3RTdXBwb3J0OjpzZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlc0ZvclRlc3Rp
bmcob3B0aW9ucy5hZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5jX3N0cigpKTsKKyAgICBX
ZWJDb3JlVGVzdFN1cHBvcnQ6OnNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzRm9yVGVz
dGluZyhvcHRpb25zLmFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzKCkuY19zdHIoKSk7CiAK
ICAgICBbbWFpbkZyYW1lIF9jbGVhck9wZW5lcl07CiAKQEAgLTE5NzAsNyArMTk2Nyw3IEBAIHN0
YXRpYyBOU1VSTCAqY29tcHV0ZVRlc3RVUkwoTlNTdHJpbmcgKnAKIAogc3RhdGljIFdUUjo6VGVz
dE9wdGlvbnMgdGVzdE9wdGlvbnNGb3JUZXN0KGNvbnN0IFdUUjo6VGVzdENvbW1hbmQmIGNvbW1h
bmQpCiB7Ci0gICAgV1RSOjpUZXN0RmVhdHVyZXMgZmVhdHVyZXM7CisgICAgV1RSOjpUZXN0RmVh
dHVyZXMgZmVhdHVyZXMgPSBXVFI6OlRlc3RPcHRpb25zOjpkZWZhdWx0cygpOwogICAgIFdUUjo6
bWVyZ2UoZmVhdHVyZXMsIFdUUjo6aGFyZGNvZGVkRmVhdHVyZXNCYXNlZE9uUGF0aEZvclRlc3Qo
Y29tbWFuZCkpOwogICAgIFdUUjo6bWVyZ2UoZmVhdHVyZXMsIFdUUjo6ZmVhdHVyZURlZmF1bHRz
RnJvbVRlc3RIZWFkZXJGb3JUZXN0KGNvbW1hbmQsIFdUUjo6VGVzdE9wdGlvbnM6OmtleVR5cGVN
YXBwaW5nKCkpKTsKIApAQCAtMjAxNyw3ICsyMDE0LDcgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChj
b25zdCBzdHJpbmcmIGlucHV0TAogICAgIGdUZXN0UnVubmVyID0gVGVzdFJ1bm5lcjo6Y3JlYXRl
KHRlc3RVUkwsIGNvbW1hbmQuZXhwZWN0ZWRQaXhlbEhhc2gpOwogICAgIGdUZXN0UnVubmVyLT5z
ZXRBbGxvd2VkSG9zdHMoYWxsb3dlZEhvc3RzKTsKICAgICBnVGVzdFJ1bm5lci0+c2V0Q3VzdG9t
VGltZW91dChjb21tYW5kLnRpbWVvdXQubWlsbGlzZWNvbmRzKCkpOwotICAgIGdUZXN0UnVubmVy
LT5zZXREdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoY29tbWFuZC5kdW1wSlNDb25zb2xlTG9nSW5T
dGRFcnIgfHwgb3B0aW9ucy5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIpOworICAgIGdUZXN0UnVu
bmVyLT5zZXREdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoY29tbWFuZC5kdW1wSlNDb25zb2xlTG9n
SW5TdGRFcnIgfHwgb3B0aW9ucy5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoKSk7CiAKICAgICBy
ZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZShvcHRpb25zLCBSZXNldFRpbWU6OkJlZm9yZVRl
c3QpOwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQko
cmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3NiwxNCArNTc2LDE0IEBAIHZvaWQgVGVzdFJ1bm5l
cjo6c2V0UGFnZVBhdXNlZChib29sIHBhdXMKIAogdm9pZCBUZXN0UnVubmVyOjpzZXRVc2VyU3R5
bGVTaGVldEVuYWJsZWQoYm9vbCBmbGFnKQogewotICAgIFtbV2ViUHJlZmVyZW5jZXMgc3RhbmRh
cmRQcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkOmZsYWddOworICAgIFtbW21h
aW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkOmZs
YWddOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oSlNT
dHJpbmdSZWYgcGF0aCkKIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhDRiA9IGFk
b3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGF0aCkpOwog
ICAgIE5TVVJMICp1cmwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzooX19icmlkZ2UgTlNTdHJpbmcg
KilwYXRoQ0YuZ2V0KCldOwotICAgIFtbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNl
c10gc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbjp1cmxdOworICAgIFtbW21haW5GcmFtZSB3ZWJW
aWV3XSBwcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbjp1cmxdOwogfQogCiB2
b2lkIFRlc3RSdW5uZXI6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNW
YWx1ZVJlZiBub2RlT2JqZWN0LCBKU1N0cmluZ1JlZiB2YWx1ZSkKQEAgLTYwOSw3ICs2MDksNyBA
QCB2b2lkIFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZShKU1N0CiAgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiB2YWx1ZUNGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCB2YWx1ZSkpOwogICAgIE5TU3RyaW5nICp2YWx1ZU5TID0gKF9fYnJp
ZGdlIE5TU3RyaW5nICopdmFsdWVDRi5nZXQoKTsKIAotICAgIFtbV2ViUHJlZmVyZW5jZXMgc3Rh
bmRhcmRQcmVmZXJlbmNlc10gX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZhbHVlOnZhbHVlTlMg
Zm9yS2V5OmtleU5TXTsKKyAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIF9z
ZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZU5TIGZvcktleTprZXlO
U107CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQWxsVmlzaXRlZExpbmtzKCkKQEAgLTcw
MCw3ICs3MDAsNyBAQCBib29sIFRlc3RSdW5uZXI6OmZpbmRTdHJpbmcoSlNDb250ZXh0UmVmCiAK
IHZvaWQgVGVzdFJ1bm5lcjo6c2V0Q2FjaGVNb2RlbChpbnQgY2FjaGVNb2RlbCkKIHsKLSAgICBb
W1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdIHNldENhY2hlTW9kZWw6KFdlYkNh
Y2hlTW9kZWwpY2FjaGVNb2RlbF07CisgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVu
Y2VzXSBzZXRDYWNoZU1vZGVsOihXZWJDYWNoZU1vZGVsKWNhY2hlTW9kZWxdOwogfQogCiBib29s
IFRlc3RSdW5uZXI6OmlzQ29tbWFuZEVuYWJsZWQoSlNTdHJpbmdSZWYgbmFtZSkKSW5kZXg6IFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCShyZXZpc2lvbiAyNjg2NDgpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAt
NjAsNyArNjAsNyBAQCAtICh2b2lkKXJlc2V0V2luZG93T3JpZ2luCiAKIC0gKHZvaWQpcmVzZXRU
b0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rpbmc6KGNvbnN0IFdUUjo6VGVzdE9wdGlvbnMmKW9w
dGlvbnMKIHsKLSAgICBtX2VuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQgPSBvcHRpb25z
LmVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQ7CisgICAgbV9lbmFibGVEcmFnRGVzdGlu
YXRpb25BY3Rpb25Mb2FkID0gb3B0aW9ucy5lbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2Fk
KCk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBzZXRGcmFtZTooTlNS
ZWN0KWZyYW1lCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyMSwxNyArOTIxLDE2IEBAIHZvaWQgVGVzdENv
bnRyb2xsZXI6OnJlc2V0UHJlZmVyZW5jZXNUb0MKICAgICBwbGF0Zm9ybVJlc2V0UHJlZmVyZW5j
ZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFs
dWVdIDogb3B0aW9ucy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCi0gICAgICAgIFdLUHJl
ZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXkocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSku
Z2V0KCkpOworICAgICAgICBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9yVGVzdGlu
ZyhwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CiAKICAgICBmb3IgKGNvbnN0
IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVz
KCkpCi0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleShwcmVmZXJlbmNl
cywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXREb3Vi
bGVWYWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0
KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLnVpbnQz
MldlYlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAgICAgICBXS1ByZWZlcmVuY2VzU2V0VUludDMy
VmFsdWVGb3JLZXkocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOworICAgICAg
ICBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXlGb3JUZXN0aW5nKHByZWZlcmVuY2Vz
LCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwg
dmFsdWVdIDogb3B0aW9ucy5zdHJpbmdXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKLSAgICAgICAg
V0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5KHByZWZlcmVuY2VzLCB0b1dLKHZhbHVl
KS5nZXQoKSwgdG9XSyhrZXkpLmdldCgpKTsKLQorICAgICAgICBXS1ByZWZlcmVuY2VzU2V0U3Ry
aW5nVmFsdWVGb3JLZXlGb3JUZXN0aW5nKHByZWZlcmVuY2VzLCB0b1dLKHZhbHVlKS5nZXQoKSwg
dG9XSyhrZXkpLmdldCgpKTsKIH0KIAogYm9vbCBUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRv
Q29uc2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucywgUmVzZXRTdGFnZSBy
ZXNldFN0YWdlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411688</attachid>
            <date>2020-10-17 17:08:22 -0700</date>
            <delta_ts>2020-10-18 09:19:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201017170821.patch</filename>
            <type>text/plain</type>
            <size>50396</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTE3ICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVu
ZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBXS1ByZWZlcmVuY2Vz
U2V0KlZhbHVlRm9yS2V5IFNQSSB0byBXS1ByZWZlcmVuY2VzU2V0KlZhbHVlRm9yS2V5Rm9yVGVz
dGluZworICAgICAgICB0byBtYWtlIGl0IGNsZWFyIHdoYXQgdGhleSBhcmUgdXNlZCBmb3IgYW5k
IGZvciBjb25zaXN0ZW5jeSB3aXRoIFdlYktpdExlZ2FjeS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29s
VmFsdWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXREb3VibGVW
YWx1ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZh
bHVlRm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFs
dWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVG
b3JLZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9y
S2V5KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktl
eSk6IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJp
dmF0ZS5oOgorCiAyMDIwLTEwLTE2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBJbnRyb2R1Y2UgUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5IHRvIG1hbmFnZSB0aGUgcmVzb3VyY2VzIGluIHRoZSBHUFUgUHJvY2VzcwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5j
cHAJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UHJlZmVyZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCwyMiArNzgsMjIgQEAgdm9pZCBX
S1ByZWZlcmVuY2VzU2V0SW50ZXJuYWxEZWJ1Z0ZlYXR1cgogICAgIHRvSW1wbChwcmVmZXJlbmNl
c1JlZiktPnNldEludGVybmFsRGVidWdGZWF0dXJlRW5hYmxlZEZvcktleSh0b1dURlN0cmluZyhp
bnRlcm5hbERlYnVnRmVhdHVyZUtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2Vz
U2V0Qm9vbFZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wg
dmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZv
cktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1
ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldEJv
b2xWYWx1ZUZvcktleSh0b1dURlN0cmluZyhrZXkpLCB2YWx1ZSk7CiB9CiAKLXZvaWQgV0tQcmVm
ZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIGRvdWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0
RG91YmxlVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIGRvdWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJl
bmNlc1JlZiktPnNldEJvb2xWYWx1ZUZvcktleSh0b1dURlN0cmluZyhrZXkpLCB2YWx1ZSk7CiB9
CiAKLXZvaWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNS
ZWYgcHJlZmVyZW5jZXNSZWYsIHVpbnQzMl90IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCit2b2lk
IFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKIHsK
ICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRVSW50MzJWYWx1ZUZvcktleSh0b1dURlN0
cmluZyhrZXkpLCB2YWx1ZSk7CiB9CiAKLXZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVl
Rm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RyaW5nUmVmIHZhbHVl
LCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktl
eUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYg
dmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKIHsKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5z
ZXRTdHJpbmdWYWx1ZUZvcktleSh0b1dURlN0cmluZyhrZXkpLCB0b1dURlN0cmluZyh2YWx1ZSkp
OwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1Jl
ZlByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NiwxMCArNTYsMTAgQEAgV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1Jlc2V0
QWxsSW50ZQogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldEludGVybmFsRGVidWdGZWF0
dXJlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYsIGJvb2wsIFdLU3RyaW5nUmVmKTsKIAogLy8gVGhl
IGZvbGxvd2luZyBnZW5lcmljIHNldHRlciBmdW5jdGlvbnMgYXJlIG9ubHkgaW50ZW5kZWQgZm9y
IHVzZSBieSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlLgotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJl
bmNlc1NldEJvb2xWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBi
b29sIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNl
c1NldERvdWJsZVZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGRv
dWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKLVdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5j
ZXNTZXRVSW50MzJWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1
aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKLVdLX0VYUE9SVCB2b2lkIFdLUHJlZmVy
ZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVm
LCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VYUE9SVCB2b2lkIFdL
UHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXNSZWYsIGJvb2wgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7CitXS19FWFBPUlQg
dm9pZCBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVy
ZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGRvdWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsK
K1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleUZvclRlc3Rp
bmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3Ry
aW5nUmVmIGtleSk7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVG
b3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RyaW5n
UmVmIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwogCiAvLyBGb3IgVGVzdCBSdW5uZXIgVXNlIG9u
bHkuCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzUmVzZXRUZXN0UnVubmVyT3ZlcnJpZGVz
KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpOwpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMTAtMTcgIFNh
bSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFtUZXN0aW5nXSBDb252ZXJ0
IER1bXBSZW5kZXJUcmVlIHRvIHVzZSBnZW5lcmF0ZWQgdGVzdCBoZWFkZXIgb3B0aW9ucworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3ODgwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIGEgc2V0
IG9mIHNldHRlcnMgdG8gZm9yIER1bXBSZW5kZXJUcmVlIHRvIHVzZSB3aGVuIHNldHRpbmcgcHJl
ZmVyZW5jZXMKKyAgICAgICAgYnkgc3RyaW5nLgorCisgICAgICAgICogV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3N3aXRjaE5ldHdvcmtMb2Fk
ZXJUb05ld1Rlc3RpbmdTZXNzaW9uXSk6CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIF9zZXRD
dXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6XSk6CisgICAgICAg
ICgrW1dlYlByZWZlcmVuY2VzIF9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uXSk6CisgICAgICAg
ICgtW1dlYlByZWZlcmVuY2VzIF9zZXRCb29sUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6
Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0VUludDMyUHJlZmVyZW5j
ZUZvclRlc3RpbmdXaXRoVmFsdWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNl
cyBfc2V0RG91YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6Zm9yS2V5Ol0pOgorICAg
ICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRo
VmFsdWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0UHJlZmVyZW5j
ZUZvclRlc3RXaXRoVmFsdWU6Zm9yS2V5Ol0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlZpZXcv
V2ViUHJlZmVyZW5jZXNQcml2YXRlLmg6CisKIDIwMjAtMTAtMTcgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgogCiAgICAgICAgIENvbnZlcnQgcHJlZmVyZW5jZXMgaW4gV2ViUHJlZmVy
ZW5jZXNQcml2YXRlLmggdG8gdXNlIEBwcm9wZXJ0eSBzeW50YXggdG8gbWFrZSB0aGVtIG1vcmUg
bWFuYWdlYWJsZQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYw
LDI2ICsxNjYwLDYgQEAgKyAodm9pZClfc2V0SUJDcmVhdG9ySUQ6KE5TU3RyaW5nICopc3RyaQog
ICAgIFtvbGQgcmVsZWFzZV07CiB9CiAKLSsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05l
d1Rlc3RpbmdTZXNzaW9uCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBXZWJUaHJl
YWRMb2NrKCk7Ci0jZW5kaWYKLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRv
TmV3VGVzdGluZ1Nlc3Npb24oKTsKLX0KLQotKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vz
c2lvbgotewotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCkuZGVsZXRlQWxsQ29va2llcygpOwotfQotCi0rICh2b2lkKV9zZXRDdXJyZW50TmV0d29y
a0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSlwb2xpY3kKLXsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2ll
U3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCkuY29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsgLy8gV2lsbCBm
YWlsIHdoZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNz
aW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KLSAgICBDRkhUVFBDb29raWVTdG9yYWdl
U2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7Ci19Ci0K
IC0gKEJPT0wpaXNET01QYXN0ZUFsbG93ZWQKIHsKICAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1
ZUZvcktleTpXZWJLaXRET01QYXN0ZUFsbG93ZWRQcmVmZXJlbmNlS2V5XTsKQEAgLTE5NjYsMTEg
KzE5NDYsNiBAQCAtICh2b2lkKXdpbGxBZGRUb1dlYlZpZXcKICAgICArK19wcml2YXRlLT5udW1X
ZWJWaWV3czsKIH0KIAotLSAodm9pZClfc2V0UHJlZmVyZW5jZUZvclRlc3RXaXRoVmFsdWU6KE5T
U3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQotewotICAgIFtzZWxmIF9zZXRT
dHJpbmdWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKLX0KLQogLSAodm9pZClzZXRGdWxsU2NyZWVu
RW5hYmxlZDooQk9PTClmbGFnCiB7CiAgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTpmbGFnIGZvcktl
eTpXZWJLaXRGdWxsU2NyZWVuRW5hYmxlZFByZWZlcmVuY2VLZXldOwpAQCAtMzAxMyw2ICsyOTg4
LDUxIEBAIC0gKHZvaWQpX3NldEVuYWJsZWQ6KEJPT0wpdmFsdWUgZm9yRmVhdHUKIAogQGVuZAog
CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVRlc3RpbmcpCisK
KysgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uCit7CisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBXZWJUaHJlYWRMb2NrKCk7CisjZW5kaWYKKyAgICBO
ZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKK30K
KworKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9s
aWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9saWN5Cit7CisgICAgUmV0YWluUHRyPENG
SFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Np
b25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsKKyAgICBBU1NF
UlQoY29va2llU3RvcmFnZSk7IC8vIFdpbGwgZmFpbCB3aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhh
bmQuCisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVT
dG9yYWdlLmdldCgpLCBwb2xpY3kpOworfQorCisrICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJT
ZXNzaW9uCit7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKS5kZWxldGVBbGxDb29raWVzKCk7Cit9CisKKy0gKHZvaWQpX3NldEJvb2xQcmVmZXJl
bmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTooQk9PTCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5
Cit7CisgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAo
dm9pZClfc2V0VUludDMyUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KHVpbnQzMl90KXZh
bHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2VsZiBfc2V0SW50ZWdlclZhbHVl
OnZhbHVlIGZvcktleTprZXldOworfQorCistICh2b2lkKV9zZXREb3VibGVQcmVmZXJlbmNlRm9y
VGVzdGluZ1dpdGhWYWx1ZTooZG91YmxlKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sK
KyAgICBbc2VsZiBfc2V0RmxvYXRWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAodm9p
ZClfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KE5TU3RyaW5nICopdmFs
dWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9zZXRTdHJpbmdWYWx1ZTp2
YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworQGVuZAorCiBAaW1wbGVtZW50YXRpb24gV2ViUHJlZmVy
ZW5jZXMgKFdlYlByaXZhdGVQcmVmZXJlbmNlc0NvbnZlcnRlZFRvV2ViRmVhdHVyZSkKIAogLSAo
Qk9PTCl1c2VyR2VzdHVyZVByb21pc2VQcm9wYWdhdGlvbkVuYWJsZWQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZh
dGUuaAkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtODksMTMgKzg5LDYg
QEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZSkKICsgKHZvaWQpX3NldElu
aXRpYWxEZWZhdWx0VGV4dEVuY29kaW5nVG9TeXN0ZW1FbmNvZGluZzsKICsgKHZvaWQpX3NldElC
Q3JlYXRvcklEOihOU1N0cmluZyAqKXN0cmluZzsKIAotLy8gRm9yIER1bXBSZW5kZXJUcmVlIHVz
ZSBvbmx5LgotKyAodm9pZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb247
Ci0rICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xp
Y3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSljb29raWVBY2NlcHRQb2xpY3k7Ci0rICh2b2lk
KV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uOwotLy8gVXNlZCB0byBzZXQgcHJlZmVyZW5jZSBz
cGVjaWZpZWQgaW4gdGhlIHRlc3QgdmlhIExheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJl
ZmVyZW5jZSguLikuCi0tICh2b2lkKV9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhWYWx1ZTooTlNT
dHJpbmcgKil2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OwotCiArICh2b2lkKXNldFdlYktp
dExpbmtUaW1lVmVyc2lvbjooaW50KXZlcnNpb247CiAKIC8vIEZvciBXZWJWaWV3J3MgdXNlIG9u
bHkuCkBAIC0zMTAsNiArMzAzLDE4IEBAIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlBy
aXZhdGVGZWEKIC0gKHZvaWQpX3NldEVuYWJsZWQ6KEJPT0wpdmFsdWUgZm9yRmVhdHVyZTooV2Vi
RmVhdHVyZSAqKWZlYXR1cmU7CiBAZW5kCiAKK0BpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdl
YlByaXZhdGVUZXN0aW5nKQorKyAodm9pZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGlu
Z1Nlc3Npb247CisrICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVB
Y2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSljb29raWVBY2NlcHRQb2xpY3k7
CisrICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uOworCistICh2b2lkKV9zZXRCb29s
UHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KEJPT0wpdmFsdWUgZm9yS2V5OihOU1N0cmlu
ZyAqKWtleTsKKy0gKHZvaWQpX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVl
Oih1aW50MzJfdCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OworLSAodm9pZClfc2V0RG91
YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KGRvdWJsZSl2YWx1ZSBmb3JLZXk6KE5T
U3RyaW5nICopa2V5OworLSAodm9pZClfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRo
VmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKworQGVuZAor
CiAvLyBGSVhNRTogSWYgdGhlc2UgYXJlIG5vdCB1c2VkIGFueXdoZXJlLCB3ZSBzaG91bGQgcmVt
b3ZlIHRoZW0gYW5kIG9ubHkgdXNlIFdlYkZlYXR1cmUgbWVjaGFuaXNtIGZvciB0aGUgcHJlZmVy
ZW5jZS4KIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGVQcmVmZXJlbmNlc0Nv
bnZlcnRlZFRvV2ViRmVhdHVyZSkKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHVzZXJHZXN0
dXJlUHJvbWlzZVByb3BhZ2F0aW9uRW5hYmxlZDsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDIwLTEwLTE3ICBTYW0g
V2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBE
dW1wUmVuZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtXSVBdCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rl
c3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiOiBBZGRlZC4K
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RPcHRpb25zOjpkZWZhdWx0cyk6CisgICAgICAgIChXVFI6OlRlc3RPcHRpb25zOjp3ZWJW
aWV3SXNDb21wYXRpYmxlV2l0aE9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV1RSOjpmZWF0dXJl
VmFsdWUpOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6Ym9vbFRlc3RSdW5uZXJGZWF0dXJl
VmFsdWUgY29uc3QpOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6c3RyaW5nVGVzdFJ1bm5l
ckZlYXR1cmVWYWx1ZSBjb25zdCk6CisgICAgICAgIChXVFI6OnNldFZhbHVlSWZTZXRJbk1hcCk6
IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlRlc3RPcHRpb25zOjpUZXN0T3B0aW9ucyk6IERlbGV0
ZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuaDoKKyAgICAgICAgKFdU
Ujo6VGVzdE9wdGlvbnM6OlRlc3RPcHRpb25zKToKKyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6
OmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBjb25zdCk6CisgICAgICAgIChXVFI6OlRlc3RPcHRp
b25zOjplbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkIGNvbnN0KToKKyAgICAgICAgKFdU
Ujo6VGVzdE9wdGlvbnM6OmxheWVyQmFja2VkV2ViVmlldyBjb25zdCk6CisgICAgICAgIChXVFI6
OlRlc3RPcHRpb25zOjp1c2VFcGhlbWVyYWxTZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdUUjo6
VGVzdE9wdGlvbnM6OmFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzIGNvbnN0KToKKyAgICAg
ICAgKFdUUjo6VGVzdE9wdGlvbnM6OmpzY09wdGlvbnMgY29uc3QpOgorICAgICAgICAoV1RSOjpU
ZXN0T3B0aW9uczo6Ym9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyBjb25zdCk6CisgICAgICAgIChX
VFI6OlRlc3RPcHRpb25zOjpkb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMgY29uc3QpOgorICAg
ICAgICAoV1RSOjpUZXN0T3B0aW9uczo6dWludDMyV2ViUHJlZmVyZW5jZUZlYXR1cmVzIGNvbnN0
KToKKyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6OnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJl
cyBjb25zdCk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHRvTlMpOgorICAgICAgICAoY3JlYXRl
V2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdyk6CisgICAgICAgIChyZXNldFdlYlByZWZlcmVuY2Vz
VG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9w
dGlvbnMpOgorICAgICAgICAoc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXNGb3JUZXN0aW5n
KToKKyAgICAgICAgKHNldEpTQ09wdGlvbnMpOgorICAgICAgICAocmVzZXRXZWJWaWV3VG9Db25z
aXN0ZW50U3RhdGUpOgorICAgICAgICAodGVzdE9wdGlvbnNGb3JUZXN0KToKKyAgICAgICAgKHJ1
blRlc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgor
ICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKToKKyAgICAgICAg
KFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24pOgorICAgICAgICAoVGVzdFJ1
bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldENhY2hl
TW9kZWwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tOgorICAg
ICAgICAoLVtVSURlbGVnYXRlIHJlc2V0VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nOl0p
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVl
cyk6CisKIDIwMjAtMTAtMTcgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtGbGF0cGFrIFNES10gZmxhdHBha3V0aWxzLnB5IHJlcG9ydHMgIktleUVy
cm9yOiAnZ2NjJyIgZXJyb3IgaWYgdXNpbmcgd2l0aCBpY2VjYyBhbmQgdG9vbGNoYWlucyBhcmVu
J3QgZ2VuZXJhdGVkIHlldApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CSh3b3JraW5n
IGNvcHkpCkBAIC02LDcgKzYsMTAgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9p
bmNsdWRlLwogJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlL3d0Zi9TY3Jp
cHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAogJChQUk9KRUNUX0RJ
UikvLi4vVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRD
b250cm9sbGVyLmlkbAogJChQUk9KRUNUX0RJUikvQmluZGluZ3MvQ29kZUdlbmVyYXRvckR1bXBS
ZW5kZXJUcmVlLnBtCiskKFBST0pFQ1RfRElSKS9EZXJpdmVkU291cmNlcy5tYWtlCiAkKFBST0pF
Q1RfRElSKS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVk
S2V5cy5oLmVyYgorJChQUk9KRUNUX0RJUikvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9U
ZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYgorJChQUk9K
RUNUX0RJUikvU2NyaXB0cy9nZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2gKICQoV0VCQ09SRV9Q
UklWQVRFX0hFQURFUlNfRElSKS9Db2RlR2VuZXJhdG9yLnBtCiAkKFdFQkNPUkVfUFJJVkFURV9I
RUFERVJTX0RJUikvSURMQXR0cmlidXRlcy5qc29uCiAkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJT
X0RJUikvSURMUGFyc2VyLnBtCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjY4NjQ4KQorKysg
VG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHdv
cmtpbmcgY29weSkKQEAgLTIsMyArMiw0IEBACiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUvSlNVSVNjcmlwdENvbnRyb2xsZXIuY3BwCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUvSlNVSVNjcmlwdENv
bnRyb2xsZXIuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5k
ZXJUcmVlL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRM
ZWdhY3lLZXlNYXBwaW5nLmNwcApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNv
dXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291
cmNlcy5tYWtlCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJp
dmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMywxNSBAQAogCiBSVUJZ
ID0gcnVieQogCitVSVNDUklQVENPTlRFWFRfRElSID0gJChEdW1wUmVuZGVyVHJlZSkvLi4vVGVz
dFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MKK1BSRUZFUkVOQ0VTX1RFTVBM
QVRFX0RJUiA9ICQoRHVtcFJlbmRlclRyZWUpL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMK
KworVlBBVEggPSBcCisgICAgJChVSVNDUklQVENPTlRFWFRfRElSKSBcCisgICAgJChQUkVGRVJF
TkNFU19URU1QTEFURV9ESVIpIFwKKyMKKworCiBXRUJfUFJFRkVSRU5DRVMgPSBcCiAgICAgJHtX
VEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWwgXAog
ICAgICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0Rl
YnVnLnlhbWwgXApAQCAtMzEsMTAgKzQwLDExIEBAIFdFQl9QUkVGRVJFTkNFUyA9IFwKICMKIAog
V0VCX1BSRUZFUkVOQ0VTX1RFTVBMQVRFUyA9IFwKLSAgICAkKER1bXBSZW5kZXJUcmVlKS9TY3Jp
cHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYiBc
CisgICAgJChQUkVGRVJFTkNFU19URU1QTEFURV9ESVIpL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2Vi
S2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiIFwKKyAgICAkKFBSRUZFUkVOQ0VTX1RFTVBMQVRF
X0RJUikvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiIFwKICMKIFdFQl9QUkVGRVJFTkNF
U19GSUxFUyA9ICQoYmFzZW5hbWUgJChub3RkaXIgJChXRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVT
KSkpCi1XRUJfUFJFRkVSRU5DRVNfUEFUVEVSTlMgPSAkKHN1YnN0IC5lcmIsLCQoV0VCX1BSRUZF
UkVOQ0VTX0ZJTEVTKSkKK1dFQl9QUkVGRVJFTkNFU19QQVRURVJOUyA9ICQoc3Vic3QgLiwlLCQo
V0VCX1BSRUZFUkVOQ0VTX0ZJTEVTKSkKIAogYWxsIDogJChXRUJfUFJFRkVSRU5DRVNfRklMRVMp
CiAKQEAgLTQyLDExICs1Miw2IEBAICQoV0VCX1BSRUZFUkVOQ0VTX1BBVFRFUk5TKSA6ICQoV1RG
X0JVSUwKIAkkKFJVQlkpICQ8IC0tZnJvbnRlbmQgV2ViS2l0TGVnYWN5IC0tYmFzZSAke1dURl9C
VUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCAtLWRlYnVn
ICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0RlYnVn
LnlhbWwgLS1leHBlcmltZW50YWwgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2Vz
L1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgLS1pbnRlcm5hbCAke1dURl9CVUlMRF9T
Q1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sICQoYWRk
cHJlZml4IC0tdGVtcGxhdGUgLCAkKFdFQl9QUkVGRVJFTkNFU19URU1QTEFURVMpKQogCiAKLVVJ
U0NSSVBUQ09OVEVYVF9ESVIgPSAkKER1bXBSZW5kZXJUcmVlKS8uLi9UZXN0UnVubmVyU2hhcmVk
L1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncwotCi1WUEFUSCA9IFwKLSAgICAkKFVJU0NSSVBUQ09O
VEVYVF9ESVIpIFwKLSMKIAogVUlDT05URVhUX0lOVEVSRkFDRVMgPSBcCiAgICAgVUlTY3JpcHRD
b250cm9sbGVyIFwKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHAJKHJldmlz
aW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNDQgQEAKIAogbmFtZXNwYWNlIFdUUiB7CiAKK2NvbnN0
IFRlc3RGZWF0dXJlcyYgVGVzdE9wdGlvbnM6OmRlZmF1bHRzKCkKK3sKKyAgICBzdGF0aWMgVGVz
dEZlYXR1cmVzIGZlYXR1cmVzOworICAgIGlmIChmZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZl
YXR1cmVzLmVtcHR5KCkpIHsKKyAgICAgICAgZmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0
dXJlcyA9IHsKKyAgICAgICAgICAgIC8vIFRoZXNlIGFyZSBXZWJQcmVmZXJlbmNlIHZhbHVlcyB0
aGF0IG11c3QgYWx3YXlzIGJlIHNldCBhcyB0aGV5IG1heQorICAgICAgICAgICAgLy8gZGlmZmVy
IGZyb20gdGhlIGRlZmF1bHQgc2V0IGluIHRoZSBXZWJQcmVmZXJlbmNlcyoueWFtbCBjb25maWd1
cmF0aW9uLgorICAgICAgICAgICAgeyAiQWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNr
Rm9yQ3JlZGVudGlhbHMiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQWxsb3dUb3BOYXZpZ2F0
aW9uVG9EYXRhVVJMcyIsIHRydWUgfSwKKyAgICAgICAgICAgIHsgIkFjY2VsZXJhdGVkRHJhd2lu
Z0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQXR0YWNobWVudEVsZW1lbnRFbmFi
bGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIlVzZXNCYWNrRm9yd2FyZENhY2hlIiwgZmFs
c2UgfSwKKyAgICAgICAgICAgIHsgIkNvbG9yRmlsdGVyRW5hYmxlZCIsIGZhbHNlIH0sCisgICAg
ICAgICAgICB7ICJJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAg
ICAgIHsgIkludGVyc2VjdGlvbk9ic2VydmVyRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAg
ICB7ICJLZXlnZW5FbGVtZW50RW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJNZW51
SXRlbUVsZW1lbnRFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIk1vZGVybk1lZGlh
Q29udHJvbHNFbmFibGVkIiwgdHJ1ZSB9LAorCisgICAgICAgICAgICB7ICJDU1NMb2dpY2FsRW5h
YmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJMaW5lSGVpZ2h0VW5pdHNFbmFibGVkIiwg
ZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIlNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXNF
bmFibGVkIiwgdHJ1ZSB9LAorICAgICAgICAgICAgeyAiTGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJ
bnRlZ3JhdGlvbkVuYWJsZWQiLCB0cnVlIH0sCisKKyAgICAgICAgICAgIHsgIkFkQ2xpY2tBdHRy
aWJ1dGlvbkVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQXNwZWN0UmF0aW9PZklt
Z0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQXN5
bmNDbGlwYm9hcmRBUElFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkNTU09NVmll
d1Ntb290aFNjcm9sbGluZ0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQ29udGFj
dFBpY2tlckFQSUVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQ29yZU1hdGhNTEVu
YWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiUmVxdWVzdElkbGVDYWxsYmFja0VuYWJs
ZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiUmVzaXplT2JzZXJ2ZXJFbmFibGVkIiwgZmFs
c2UgfSwKKyAgICAgICAgICAgIHsgIldlYkdQVUVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICB9
OworICAgIH0KKyAgICByZXR1cm4gZmVhdHVyZXM7Cit9CisKIGNvbnN0IHN0ZDo6dW5vcmRlcmVk
X21hcDxzdGQ6OnN0cmluZywgVGVzdEhlYWRlcktleVR5cGU+JiBUZXN0T3B0aW9uczo6a2V5VHlw
ZU1hcHBpbmcoKQogewogICAgIHN0YXRpYyBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpz
dHJpbmcsIFRlc3RIZWFkZXJLZXlUeXBlPiBtYXAgewpAQCAtNDcsNTYgKzg1LDQ3IEBAIGNvbnN0
IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgVGUKICAgICByZXR1cm4gbWFwOwogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCBzZXRWYWx1ZUlmU2V0SW5NYXAoVCYg
dmFsdWVUb1NldCwgc3RkOjpzdHJpbmcga2V5LCBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3Rk
OjpzdHJpbmcsIFQ+JiBtYXApCitib29sIFRlc3RPcHRpb25zOjp3ZWJWaWV3SXNDb21wYXRpYmxl
V2l0aE9wdGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpIGNvbnN0Cit7CisgICAgaWYg
KG1fZmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLmV4
cGVyaW1lbnRhbEZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVh
dHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5pbnRlcm5h
bERlYnVnRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJl
cy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5ib29sV2Vi
UHJlZmVyZW5jZUZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVh
dHVyZXMuZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5k
b3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAobV9mZWF0dXJlcy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMgIT0gb3B0aW9ucy5tX2Zl
YXR1cmVzLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmIChtX2ZlYXR1cmVzLnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcyAhPSBvcHRp
b25zLm1fZmVhdHVyZXMuc3RyaW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0dXJlcyAhPSBv
cHRpb25zLm1fZmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0dXJlcykKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLmRvdWJsZVRlc3RSdW5uZXJGZWF0dXJlcyAhPSBv
cHRpb25zLm1fZmVhdHVyZXMuZG91YmxlVGVzdFJ1bm5lckZlYXR1cmVzKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuc3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVzICE9
IG9wdGlvbnMubV9mZWF0dXJlcy5zdHJpbmdUZXN0UnVubmVyRmVhdHVyZXMpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy5zdHJpbmdWZWN0b3JUZXN0UnVubmVyRmVh
dHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLnN0cmluZ1ZlY3RvclRlc3RSdW5uZXJGZWF0dXJl
cykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBUIGZlYXR1cmVWYWx1ZShzdGQ6OnN0cmluZyBrZXksIFQgZGVmYXVsdFZh
bHVlLCBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFQ+JiBtYXApCiB7CiAg
ICAgYXV0byBpdCA9IG1hcC5maW5kKGtleSk7Ci0gICAgaWYgKGl0ID09IG1hcC5lbmQoKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIHZhbHVlVG9TZXQgPSBpdC0+c2Vjb25kOwotfQotCi1UZXN0T3B0
aW9uczo6VGVzdE9wdGlvbnMoVGVzdEZlYXR1cmVzIHRlc3RGZWF0dXJlcykKLXsKLSAgICBzZXRW
YWx1ZUlmU2V0SW5NYXAoYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVu
dGlhbHMsICJBbGxvd0Nyb3NzT3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyIs
IHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlm
U2V0SW5NYXAoYWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcywgIkFsbG93VG9wTmF2aWdhdGlv
blRvRGF0YVVSTHMiLCB0ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0g
ICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUFjY2VsZXJhdGVkRHJhd2luZywgIkFjY2VsZXJh
dGVkRHJhd2luZ0VuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJl
cyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUF0dGFjaG1lbnRFbGVtZW50LCAiQXR0
YWNobWVudEVsZW1lbnRFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVh
dHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVCYWNrRm9yd2FyZENhY2hlLCAi
VXNlc0JhY2tGb3J3YXJkQ2FjaGUiLCB0ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0
dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUNvbG9yRmlsdGVyLCAiQ29sb3JG
aWx0ZXJFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwot
ICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVJbnNwZWN0b3JBZGRpdGlvbnMsICJJbnNwZWN0
b3JBZGRpdGlvbnNFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVy
ZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVJbnRlcnNlY3Rpb25PYnNlcnZlciwg
IkludGVyc2VjdGlvbk9ic2VydmVyRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVy
ZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlS2V5Z2VuRWxlbWVu
dCwgIktleWdlbkVsZW1lbnRFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNl
RmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVNZW51SXRlbUVsZW1lbnQs
ICJNZW51SXRlbUVsZW1lbnRFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNl
RmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVNb2Rlcm5NZWRpYUNvbnRy
b2xzLCAiTW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuYm9vbFdlYlBy
ZWZlcmVuY2VGZWF0dXJlcyk7Ci0KLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uTG9hZCwgImVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQiLCB0
ZXN0RmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldElu
TWFwKGR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciwgImR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciIs
IHRlc3RGZWF0dXJlcy5ib29sVGVzdFJ1bm5lckZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0
SW5NYXAobGF5ZXJCYWNrZWRXZWJWaWV3LCAibGF5ZXJCYWNrZWRXZWJWaWV3IiwgdGVzdEZlYXR1
cmVzLmJvb2xUZXN0UnVubmVyRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcCh1c2VF
cGhlbWVyYWxTZXNzaW9uLCAidXNlRXBoZW1lcmFsU2Vzc2lvbiIsIHRlc3RGZWF0dXJlcy5ib29s
VGVzdFJ1bm5lckZlYXR1cmVzKTsKLQotICAgIHNldFZhbHVlSWZTZXRJbk1hcChhZGRpdGlvbmFs
U3VwcG9ydGVkSW1hZ2VUeXBlcywgImFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzIiwgdGVz
dEZlYXR1cmVzLnN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldElu
TWFwKGpzY09wdGlvbnMsICJqc2NPcHRpb25zIiwgdGVzdEZlYXR1cmVzLnN0cmluZ1Rlc3RSdW5u
ZXJGZWF0dXJlcyk7Ci0KLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQ1NTTG9naWNhbCwg
IkNTU0xvZ2ljYWxFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmludGVybmFsRGVidWdGZWF0dXJlcyk7
Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUxpbmVIZWlnaHRVbml0cywgIkxpbmVIZWln
aHRVbml0c0VuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKTsKLSAg
ICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlU2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmll
cywgInNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXNFbmFibGVkIiwgdGVzdEZlYXR1cmVz
LmludGVybmFsRGVidWdGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGxheW91dEZv
cm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkLCAiTGF5b3V0Rm9ybWF0dGluZ0NvbnRl
eHRJbnRlZ3JhdGlvbkVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVz
KTsKLQotICAgIHNldFZhbHVlSWZTZXRJbk1hcChhZENsaWNrQXR0cmlidXRpb25FbmFibGVkLCAi
QWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0
dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUFzcGVjdFJhdGlvT2ZJbWdGcm9t
V2lkdGhBbmRIZWlnaHQsICJBc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxl
ZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNl
dEluTWFwKGVuYWJsZUFzeW5jQ2xpcGJvYXJkQVBJLCAiQXN5bmNDbGlwYm9hcmRBUElFbmFibGVk
IiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0
SW5NYXAoZW5hYmxlQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nLCAiQ1NTT01WaWV3U21vb3RoU2Ny
b2xsaW5nRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAg
c2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUNvbnRhY3RQaWNrZXJBUEksICJDb250YWN0UGlja2Vy
QVBJRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0
VmFsdWVJZlNldEluTWFwKGVuYWJsZUNvcmVNYXRoTUwsICJDb3JlTWF0aE1MRW5hYmxlZCIsIHRl
c3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFw
KGVuYWJsZVJlcXVlc3RJZGxlQ2FsbGJhY2ssICJSZXF1ZXN0SWRsZUNhbGxiYWNrRW5hYmxlZCIs
IHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldElu
TWFwKGVuYWJsZVJlc2l6ZU9ic2VydmVyLCAiUmVzaXplT2JzZXJ2ZXJFbmFibGVkIiwgdGVzdEZl
YXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5h
YmxlV2ViR1BVLCAiV2ViR1BVRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0
dXJlcyk7CisgICAgaWYgKGl0ICE9IG1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT5zZWNv
bmQ7CisgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKK30KKworYm9vbCBUZXN0T3B0aW9uczo6Ym9v
bFRlc3RSdW5uZXJGZWF0dXJlVmFsdWUoc3RkOjpzdHJpbmcga2V5LCBib29sIGRlZmF1bHRWYWx1
ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gZmVhdHVyZVZhbHVlKGtleSwgZGVmYXVsdFZhbHVlLCBt
X2ZlYXR1cmVzLmJvb2xUZXN0UnVubmVyRmVhdHVyZXMpOwogfQogCi1ib29sIFRlc3RPcHRpb25z
Ojp3ZWJWaWV3SXNDb21wYXRpYmxlV2l0aE9wdGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmIG90aGVy
KSBjb25zdAorc3RkOjpzdHJpbmcgVGVzdE9wdGlvbnM6OnN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJl
VmFsdWUoc3RkOjpzdHJpbmcga2V5LCBzdGQ6OnN0cmluZyBkZWZhdWx0VmFsdWUpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG90aGVyLmxheWVyQmFja2VkV2ViVmlldyA9PSBsYXllckJhY2tlZFdlYlZp
ZXcKLSAgICAgICAgJiYgb3RoZXIuanNjT3B0aW9ucyA9PSBqc2NPcHRpb25zOworICAgIHJldHVy
biBmZWF0dXJlVmFsdWUoa2V5LCBkZWZhdWx0VmFsdWUsIG1fZmVhdHVyZXMuc3RyaW5nVGVzdFJ1
bm5lckZlYXR1cmVzKTsKIH0KIAogfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9w
dGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5o
CShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw1MyArMzEsMzggQEAKIAogbmFtZXNwYWNlIFdUUiB7CiAK
LXN0cnVjdCBUZXN0T3B0aW9ucyB7Ci0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGVzZSBhbmQgcmVw
bGFjZSB3aXRoIGFjY2VzcyB0byBUZXN0RmVhdHVyZXMgc2V0LgotICAgIC8vIFdlYiBQcmVmZXJl
bmNlcwotICAgIGJvb2wgYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVu
dGlhbHMgeyBmYWxzZSB9OwotICAgIGJvb2wgYWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyB7
IHRydWUgfTsKLSAgICBib29sIGVuYWJsZUFjY2VsZXJhdGVkRHJhd2luZyB7IGZhbHNlIH07Ci0g
ICAgYm9vbCBlbmFibGVBdHRhY2htZW50RWxlbWVudCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFi
bGVCYWNrRm9yd2FyZENhY2hlIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUNvbG9yRmlsdGVy
IHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUluc3BlY3RvckFkZGl0aW9ucyB7IGZhbHNlIH07
Ci0gICAgYm9vbCBlbmFibGVJbnRlcnNlY3Rpb25PYnNlcnZlciB7IGZhbHNlIH07Ci0gICAgYm9v
bCBlbmFibGVLZXlnZW5FbGVtZW50IHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZU1lbnVJdGVt
RWxlbWVudCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVNb2Rlcm5NZWRpYUNvbnRyb2xzIHsg
dHJ1ZSB9OwotCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGVzZSBhbmQgcmVwbGFjZSB3aXRoIGFj
Y2VzcyB0byBUZXN0RmVhdHVyZXMgc2V0LgotICAgIC8vIEludGVybmFsIEZlYXR1cmVzCi0gICAg
Ym9vbCBlbmFibGVDU1NMb2dpY2FsIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUxpbmVIZWln
aHRVbml0cyB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVTZWxlY3Rpb25BY3Jvc3NTaGFkb3dC
b3VuZGFyaWVzIHsgdHJ1ZSB9OwotICAgIGJvb2wgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRl
Z3JhdGlvbkVuYWJsZWQgeyB0cnVlIH07Ci0KLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZXNlIGFu
ZCByZXBsYWNlIHdpdGggYWNjZXNzIHRvIFRlc3RGZWF0dXJlcyBzZXQuCi0gICAgLy8gRXhwZXJp
bWVudGFsIEZlYXR1cmVzCi0gICAgYm9vbCBhZENsaWNrQXR0cmlidXRpb25FbmFibGVkIHsgZmFs
c2UgfTsKLSAgICBib29sIGVuYWJsZUFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHQg
eyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQXN5bmNDbGlwYm9hcmRBUEkgeyBmYWxzZSB9Owot
ICAgIGJvb2wgZW5hYmxlQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nIHsgZmFsc2UgfTsKLSAgICBi
b29sIGVuYWJsZUNvbnRhY3RQaWNrZXJBUEkgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQ29y
ZU1hdGhNTCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVSZXF1ZXN0SWRsZUNhbGxiYWNrIHsg
ZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZVJlc2l6ZU9ic2VydmVyIHsgZmFsc2UgfTsKLSAgICBi
b29sIGVuYWJsZVdlYkdQVSB7IGZhbHNlIH07CitjbGFzcyBUZXN0T3B0aW9ucyB7CitwdWJsaWM6
CisgICAgc3RhdGljIGNvbnN0IFRlc3RGZWF0dXJlcyYgZGVmYXVsdHMoKTsKKyAgICBzdGF0aWMg
Y29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBUZXN0SGVhZGVyS2V5VHlwZT4m
IGtleVR5cGVNYXBwaW5nKCk7CiAKLSAgICAvLyBUZXN0IFJ1bm5lciBTcGVjaWZpYyBGZWF0dXJl
cwotICAgIGJvb2wgZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIHsgZmFsc2UgfTsKLSAgICBib29s
IGVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5h
YmxlV2ViU1FMIHsgdHJ1ZSB9OwotICAgIGJvb2wgbGF5ZXJCYWNrZWRXZWJWaWV3IHsgZmFsc2Ug
fTsKLSAgICBib29sIHVzZUVwaGVtZXJhbFNlc3Npb24geyBmYWxzZSB9OwotICAgIHN0ZDo6c3Ry
aW5nIGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzOwotICAgIHN0ZDo6c3RyaW5nIGpzY09w
dGlvbnM7CisgICAgZXhwbGljaXQgVGVzdE9wdGlvbnMoVGVzdEZlYXR1cmVzIGZlYXR1cmVzKQor
ICAgICAgICA6IG1fZmVhdHVyZXMoc3RkOjptb3ZlKGZlYXR1cmVzKSkKKyAgICB7CisgICAgfQog
Ci0gICAgZXhwbGljaXQgVGVzdE9wdGlvbnMoVGVzdEZlYXR1cmVzKTsKICAgICBib29sIHdlYlZp
ZXdJc0NvbXBhdGlibGVXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYpIGNvbnN0OwotICAg
IAotICAgIHN0YXRpYyBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFRlc3RI
ZWFkZXJLZXlUeXBlPiYga2V5VHlwZU1hcHBpbmcoKTsKKworICAgIC8vIFRlc3QgUnVubmVyIFNw
ZWNpZmljIEZlYXR1cmVzCisgICAgYm9vbCBkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoKSBjb25z
dCB7IHJldHVybiBib29sVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZSgiZHVtcEpTQ29uc29sZUxvZ0lu
U3RkRXJyIiwgZmFsc2UpOyB9CisgICAgYm9vbCBlbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25M
b2FkKCkgY29uc3QgeyByZXR1cm4gYm9vbFRlc3RSdW5uZXJGZWF0dXJlVmFsdWUoImVuYWJsZURy
YWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQiLCBmYWxzZSk7IH0KKyAgICBib29sIGxheWVyQmFja2Vk
V2ViVmlldygpIGNvbnN0IHsgcmV0dXJuIGJvb2xUZXN0UnVubmVyRmVhdHVyZVZhbHVlKCJsYXll
ckJhY2tlZFdlYlZpZXciLCBmYWxzZSk7IH0KKyAgICBib29sIHVzZUVwaGVtZXJhbFNlc3Npb24o
KSBjb25zdCB7IHJldHVybiBib29sVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZSgidXNlRXBoZW1lcmFs
U2Vzc2lvbiIsIGZhbHNlKTsgfQorICAgIHN0ZDo6c3RyaW5nIGFkZGl0aW9uYWxTdXBwb3J0ZWRJ
bWFnZVR5cGVzKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZSgi
YWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMiLCB7IH0pOyB9CisgICAgc3RkOjpzdHJpbmcg
anNjT3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIHN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlVmFsdWUo
ImpzY09wdGlvbnMiLCB7IH0pOyB9CisKKyAgICBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3Rk
OjpzdHJpbmcsIGJvb2w+JiBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkgY29uc3QgeyByZXR1
cm4gbV9mZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzOyB9CisgICAgY29uc3Qgc3Rk
Ojp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBkb3VibGU+JiBkb3VibGVXZWJQcmVmZXJlbmNl
RmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzLmRvdWJsZVdlYlByZWZlcmVuY2VG
ZWF0dXJlczsgfQorICAgIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgdWlu
dDMyX3Q+JiB1aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2Zl
YXR1cmVzLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJlczsgfQorICAgIGNvbnN0IHN0ZDo6dW5v
cmRlcmVkX21hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+JiBzdHJpbmdXZWJQcmVmZXJlbmNl
RmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzLnN0cmluZ1dlYlByZWZlcmVuY2VG
ZWF0dXJlczsgfQorCisgICAgc3RhdGljIHN0ZDo6c3RyaW5nIHRvV2ViS2l0TGVnYWN5UHJlZmVy
ZW5jZUtleShjb25zdCBzdGQ6OnN0cmluZyYpOworCitwcml2YXRlOgorICAgIGJvb2wgYm9vbFRl
c3RSdW5uZXJGZWF0dXJlVmFsdWUoc3RkOjpzdHJpbmcga2V5LCBib29sIGRlZmF1bHRWYWx1ZSkg
Y29uc3Q7CisgICAgc3RkOjpzdHJpbmcgc3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZShzdGQ6
OnN0cmluZyBrZXksIHN0ZDo6c3RyaW5nIGRlZmF1bHRWYWx1ZSkgY29uc3Q7CisKKyAgICBUZXN0
RmVhdHVyZXMgbV9mZWF0dXJlczsKIH07CiAKIH0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRl
clRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTA5LDYg
KzEwOSw3IEBACiAJCTVEQjlBQzlFMEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRXYXRj
aGVyNzAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzc1RjA5NzcwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXI3
MDAudHRmICovOyB9OwogCQk1REI5QUM5RjBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2VpZ2h0
V2F0Y2hlcjgwMC50dGYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDM3NUYwOTc4MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRj
aGVyODAwLnR0ZiAqLzsgfTsKIAkJNURCOUFDQTAwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktpdFdl
aWdodFdhdGNoZXI5MDAudHRmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzNzVGMDk3OTBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0
V2F0Y2hlcjkwMC50dGYgKi87IH07CisJCTdDNEYzMDQwMjUzQjk3MEYwMDMwNTQ1OCAvKiBUZXN0
T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M0RjMwM0YyNTNCODM2OTAwMzA1NDU4
IC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgKi87IH07
CiAJCTdDRkY5QkJGMjUzM0JCMjQwMDA4MDA5RiAvKiBUZXN0RmVhdHVyZXMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NGRjlCQkUyNTMzQkIyNDAw
MDgwMDlGIC8qIFRlc3RGZWF0dXJlcy5jcHAgKi87IH07CiAJCTdDRkY5QkMyMjUzM0JDMTYwMDA4
MDA5RiAvKiBUZXN0Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3Q0ZGOUJDMTI1MzNCQzE2MDAwODAwOUYgLyogVGVzdENvbW1hbmQuY3Bw
ICovOyB9OwogCQk4MDA0NUFFRTE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJpbGl0eU5vdGlm
aWNhdGlvbkhhbmRsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MDA0NUFFQzE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXIubW0gKi87IH07CkBAIC0zMzMsOCArMzM0LDEyIEBACiAJCTdDNDQ2OTdGMjUz
NzdBMDIwMDI0MjkwQSAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVGVz
dE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QzQ0Njk4MDI1Mzc3QTAyMDAyNDI5MEEgLyogY2hlY2steGNmaWxlbGlzdHMuc2ggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5z
aDsgcGF0aCA9ICJjaGVjay14Y2ZpbGVsaXN0cy5zaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdDNDQ2OTgxMjUzNzdBMDIwMDI0MjkwQSAvKiBnZW5lcmF0ZS1kZXJpdmVkLXNvdXJj
ZXMuc2ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnNjcmlwdC5zaDsgcGF0aCA9ICJnZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2giOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5MEEgLyogVGVz
dE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3RPcHRpb25zR2VuZXJh
dGVkS2V5cy5oOyBwYXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdDNDQ2OTg1MjUzNzdFNTIwMDI0MjkwQSAvKiBUZXN0T3B0aW9u
c0dlbmVyYXRlZEtleXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNEYzMDNGMjUzQjgzNjkwMDMwNTQ1
OCAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5n
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M5RTI1MEIyNTNCNzk0QTAwNDEz
MDE4IC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJi
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0JCQzMyMjFEREZDRjlBMDA3ODZCOUQg
LyogVGVzdE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdE9w
dGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0NDQkE1MUQyNTNCQjlEMzAw
QkIzMkMxIC8qIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjZmlsZWxpc3Q7IHBhdGgg
PSAiRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdDQ0JBNTFFMjUzQkI5RDMwMEJCMzJDMSAvKiBEZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQueGNmaWxlbGlzdDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRkY5QkJEMjUzM0JCMjQw
MDA4MDA5RiAvKiBUZXN0RmVhdHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdEZlYXR1cmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRkY5QkJFMjUzM0JCMjQwMDA4MDA5RiAv
KiBUZXN0RmVhdHVyZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVzdEZlYXR1cmVzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NGRjlCQzAyNTMzQkMxNjAwMDgwMDlGIC8q
IFRlc3RDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RDb21tYW5kLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC01MDEsNiArNTA2LDggQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCiAJCQkJMEYxOEU2RjExRDZCOUM2NDAwMjdFNTQ3IC8qIERlcml2ZWRT
b3VyY2VzLm1ha2UgKi8sCisJCQkJN0NDQkE1MUQyNTNCQjlEMzAwQkIzMkMxIC8qIERlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgKi8sCisJCQkJN0NDQkE1MUUyNTNCQjlEMzAwQkIzMkMx
IC8qIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0ICovLAogCQkJCTdDNDQ2OTgyMjUz
NzdDMzQwMDI0MjkwQSAvKiBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJCQkJMzE0OEEwNjUxRTZGOTBG
NDAwRDNCMzE2IC8qIFRlc3RSdW5uZXJTaGFyZWQgKi8sCiAJCQkJMEYxOEU2RTcxRDZCOUJGNTAw
MjdFNTQ3IC8qIFVJU2NyaXB0Q29udGV4dCAqLywKQEAgLTc3MCw2ICs3NzcsNyBAQAogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk3QzQ0Njk3RjI1Mzc3QTAyMDAyNDI5
MEEgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiICovLAorCQkJCTdDOUUyNTBCMjUz
Qjc5NEEwMDQxMzAxOCAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBp
bmcuY3BwLmVyYiAqLywKIAkJCSk7CiAJCQlwYXRoID0gUHJlZmVyZW5jZXNUZW1wbGF0ZXM7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzc4LDYgKzc4Niw3IEBACiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdDNDQ2OTg1MjUzNzdFNTIwMDI0MjkwQSAv
KiBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaCAqLywKKwkJCQk3QzRGMzAzRjI1M0I4MzY5MDAz
MDU0NTggLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAq
LywKIAkJCSk7CiAJCQluYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCQlwYXRoID0gRGVyaXZl
ZFNvdXJjZXMvRHVtcFJlbmRlclRyZWU7CkBAIC0xMjkxLDYgKzEzMDAsNyBAQAogCQkJCTdDRkY5
QkMyMjUzM0JDMTYwMDA4MDA5RiAvKiBUZXN0Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3Q0ZGOUJCRjI1MzNCQjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUEzMEEyMUY4MjA1MUQ4QzQwMDA4RkY0MiAvKiBUZXN0T3B0aW9ucy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3QzRGMzA0MDI1M0I5NzBGMDAzMDU0NTggLyogVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
MDEzMURBMEM5NzcyMDEwMDg3MzE3RCAvKiBUZXN0UnVubmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDQTE4QjI0MEM5QjAxNEIwMDExNDM2OSAvKiBUZXN0UnVubmVyTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRjRENDIzNjExREQ1MDQ4MjAwNjc4MjkwIC8qIFRleHRJbnB1dENvbnRyb2xs
ZXJJT1MubSBpbiBTb3VyY2VzICovLApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvU2NyaXB0
cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtl
eU1hcHBpbmcuY3BwLmVyYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9TY3Jp
cHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5
S2V5TWFwcGluZy5jcHAuZXJiCShub25leGlzdGVudCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRM
ZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAor
LyoKKyAqIDwlPSBAd2FybmluZyAlPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJUZXN0T3B0aW9ucy5oIgorCituYW1lc3BhY2UgV1RSIHsKKworc3RkOjpzdHJp
bmcgVGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShjb25zdCBzdGQ6OnN0
cmluZyYgd2ViUHJlZmVyZW5jZXNLZXkpCit7CisgICAgc3RhdGljIHN0ZDo6dW5vcmRlcmVkX21h
cDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IG5vblN0YW5kYXJkS2V5cyA9IHsKKzwlLSBmb3Ig
QHByZWYgaW4gQHByZWZlcmVuY2VzLnNlbGVjdCB7IHxwfCBwLm9wdHNbIndlYktpdExlZ2FjeVBy
ZWZlcmVuY2VLZXkiXSB9IGRvIC0lPgorICAgICAgICB7ICI8JT0gQHByZWYubmFtZSAlPiIsICI8
JT0gQHByZWYucHJlZmVyZW5jZUtleSAlPiIgfSwgXAorPCUtIGVuZCAtJT4KKyAgICB9OworCisg
ICAgYXV0byBpdCA9IG5vblN0YW5kYXJkS2V5cy5maW5kKHdlYlByZWZlcmVuY2VzS2V5KTsKKyAg
ICBpZiAoaXQgIT0gbm9uU3RhbmRhcmRLZXlzLmVuZCgpKQorICAgICAgICByZXR1cm4gaXQtPnNl
Y29uZDsKKworICAgIHJldHVybiAiV2ViS2l0IiArIHdlYlByZWZlcmVuY2VzS2V5OworfQorCit9
CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCShyZXZp
c2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMSw2ICsxMzEsMTIgQEAgZXh0ZXJuICJDIiB7CiAKIHVz
aW5nIG5hbWVzcGFjZSBzdGQ7CiAKK3N0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IHRvTlMoY29u
c3Qgc3RkOjpzdHJpbmcmIHN0cmluZykKK3sKKyAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5n
IGFsbG9jXSBpbml0V2l0aFVURjhTdHJpbmc6c3RyaW5nLmNfc3RyKCldKTsKK30KKworCiAjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiBAaW50ZXJmYWNlIER1bXBSZW5kZXJUcmVlQXBwbGljYXRp
b24gOiBOU0FwcGxpY2F0aW9uCiBAZW5kCkBAIC02NzIsNiArNjc4LDEwIEBAIFdlYlZpZXcgKmNy
ZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3cKICAgICBbd2ViVmlldyBzZXRHcm91cE5hbWU6
QCJvcmcud2Via2l0LkR1bXBSZW5kZXJUcmVlIl07CiAjZW5kaWYKIAorICAgIFdlYlByZWZlcmVu
Y2VzICpwcmVmZXJlbmNlcyA9IFtbV2ViUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdOworICAgIFtw
cmVmZXJlbmNlcyBzZXRBdXRvc2F2ZXM6Tk9dOworICAgIFt3ZWJWaWV3IHNldFByZWZlcmVuY2Vz
OnByZWZlcmVuY2VzXTsKKwogICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6dWlEZWxlZ2F0ZV07
CiAgICAgW3dlYlZpZXcgc2V0RnJhbWVMb2FkRGVsZWdhdGU6ZnJhbWVMb2FkRGVsZWdhdGVdOwog
ICAgIFt3ZWJWaWV3IHNldEVkaXRpbmdEZWxlZ2F0ZTplZGl0aW5nRGVsZWdhdGVdOwpAQCAtNjg1
LDggKzY5NSw2IEBAIFdlYlZpZXcgKmNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3cKICAg
ICBbV2ViVmlldyByZWdpc3RlclVSTFNjaGVtZUFzTG9jYWw6QCJmZWVkcyJdOwogICAgIFtXZWJW
aWV3IHJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbDpAImZlZWRzZWFyY2giXTsKIAotICAgIFtbd2Vi
VmlldyBwcmVmZXJlbmNlc10gX3NldE1lZGlhUmVjb3JkZXJFbmFibGVkOllFU107Ci0KICNpZiBQ
TEFURk9STShNQUMpCiAgICAgW3dlYlZpZXcgc2V0V2luZG93T2NjbHVzaW9uRGV0ZWN0aW9uRW5h
YmxlZDpOT107CiAgICAgW1dlYlZpZXcgX3NldEZvbnRBbGxvd0xpc3Q6Zm9udEFsbG93TGlzdCgp
XTsKQEAgLTg0NCw5ICs4NTIsOCBAQCBzdGF0aWMgdm9pZCBlbmFibGVFeHBlcmltZW50YWxGZWF0
dXJlcyhXCiB9CiAKIC8vIENhbGxlZCBiZWZvcmUgZWFjaCB0ZXN0Lgotc3RhdGljIHZvaWQgcmVz
ZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcygpCitzdGF0aWMgdm9pZCByZXNldFdl
YlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNl
cykKIHsKLSAgICBXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbV2ViUHJlZmVyZW5jZXMg
c3RhbmRhcmRQcmVmZXJlbmNlc107CiAgICAgZW5hYmxlRXhwZXJpbWVudGFsRmVhdHVyZXMocHJl
ZmVyZW5jZXMpOwogCiAgICAgW3ByZWZlcmVuY2VzIHNldE5lZWRzU3RvcmFnZUFjY2Vzc0Zyb21G
aWxlVVJMc1F1aXJrOiBOT107CkBAIC05MDIsNiArOTA5LDcgQEAgc3RhdGljIHZvaWQgcmVzZXRX
ZWJQcmVmZXJlbmNlc1RvQ29uc2lzdAogICAgIH0gZWxzZQogICAgICAgICBbcHJlZmVyZW5jZXMg
c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkOk5PXTsKIAorICAgIFtwcmVmZXJlbmNlcyBzZXRJbmxp
bmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZTpOT107CiAgICAgW3By
ZWZlcmVuY2VzIHNldE1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmU6WUVTXTsKICAgICBbcHJlZmVy
ZW5jZXMgc2V0TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmU6Tk9dOwogICAgIFtwcmVm
ZXJlbmNlcyBzZXRWaWRlb1BsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZTpOT107CkBAIC05NjAs
NiArOTY4LDcgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdAogICAg
IHByZWZlcmVuY2VzLm1lZGlhQ2FwYWJpbGl0aWVzRW5hYmxlZCA9IFlFUzsKIAogICAgIHByZWZl
cmVuY2VzLnNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXNFbmFibGVkID0gWUVTOworICAg
IHByZWZlcmVuY2VzLmZ1bGxTY3JlZW5FbmFibGVkID0gWUVTOwogCiAgICAgW3ByZWZlcmVuY2Vz
IHNldFdlYlNRTEVuYWJsZWQ6WUVTXTsKIApAQCAtOTY3LDM0ICs5NzYsMjEgQEAgc3RhdGljIHZv
aWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdAogICAgIFtXZWJQcmVmZXJlbmNlcyBfc2V0
Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5Ok5TSFRUUENvb2tp
ZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluXTsKIH0KIAotc3RhdGljIHZv
aWQgc2V0V2ViUHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9ucyhjb25zdCBXVFI6OlRlc3RPcHRpb25z
JiBvcHRpb25zKQorc3RhdGljIHZvaWQgc2V0V2ViUHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9ucyhX
ZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMsIGNvbnN0IFdUUjo6VGVzdE9wdGlvbnMmIG9wdGlv
bnMpCiB7Ci0gICAgV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzID0gW1dlYlByZWZlcmVuY2Vz
IHN0YW5kYXJkUHJlZmVyZW5jZXNdOworICAgIHByZWZlcmVuY2VzLnByaXZhdGVCcm93c2luZ0Vu
YWJsZWQgPSBvcHRpb25zLnVzZUVwaGVtZXJhbFNlc3Npb24oKTsKKworICAgIGZvciAoY29uc3Qg
YXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkp
CisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZh
bHVlOnZhbHVlIGZvcktleTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJl
ZmVyZW5jZUtleShrZXkpKS5nZXQoKV07CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZh
bHVlXSA6IG9wdGlvbnMuZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAgIFtw
cmVmZXJlbmNlcyBfc2V0RG91YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dmFsdWUg
Zm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5
KGtleSkpLmdldCgpXTsKIAotICAgIHByZWZlcmVuY2VzLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxl
ZCA9IG9wdGlvbnMuZW5hYmxlQXR0YWNobWVudEVsZW1lbnQ7Ci0gICAgcHJlZmVyZW5jZXMuYWNj
ZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlQWNjZWxlcmF0ZWREcmF3aW5n
OwotICAgIHByZWZlcmVuY2VzLm1lbnVJdGVtRWxlbWVudEVuYWJsZWQgPSBvcHRpb25zLmVuYWJs
ZU1lbnVJdGVtRWxlbWVudDsKLSAgICBwcmVmZXJlbmNlcy5rZXlnZW5FbGVtZW50RW5hYmxlZCA9
IG9wdGlvbnMuZW5hYmxlS2V5Z2VuRWxlbWVudDsKLSAgICBwcmVmZXJlbmNlcy5tb2Rlcm5NZWRp
YUNvbnRyb2xzRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlTW9kZXJuTWVkaWFDb250cm9sczsKLSAg
ICBwcmVmZXJlbmNlcy5pbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkID0gb3B0aW9ucy5lbmFibGVJ
bnNwZWN0b3JBZGRpdGlvbnM7Ci0gICAgcHJlZmVyZW5jZXMuYWxsb3dDcm9zc09yaWdpblN1YnJl
c291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMgPSBvcHRpb25zLmFsbG93Q3Jvc3NPcmlnaW5TdWJy
ZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzOwotICAgIHByZWZlcmVuY2VzLmNvbG9yRmlsdGVy
RW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlQ29sb3JGaWx0ZXI7Ci0gICAgcHJlZmVyZW5jZXMuc2Vs
ZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllc0VuYWJsZWQgPSBvcHRpb25zLmVuYWJsZVNlbGVj
dGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXM7Ci0gICAgcHJlZmVyZW5jZXMud2ViR1BVRW5hYmxl
ZCA9IG9wdGlvbnMuZW5hYmxlV2ViR1BVOwotICAgIHByZWZlcmVuY2VzLkNTU0xvZ2ljYWxFbmFi
bGVkID0gb3B0aW9ucy5lbmFibGVDU1NMb2dpY2FsOwotICAgIHByZWZlcmVuY2VzLmxpbmVIZWln
aHRVbml0c0VuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUxpbmVIZWlnaHRVbml0czsKLSAgICBwcmVm
ZXJlbmNlcy5hZENsaWNrQXR0cmlidXRpb25FbmFibGVkID0gb3B0aW9ucy5hZENsaWNrQXR0cmli
dXRpb25FbmFibGVkOwotICAgIHByZWZlcmVuY2VzLnJlc2l6ZU9ic2VydmVyRW5hYmxlZCA9IG9w
dGlvbnMuZW5hYmxlUmVzaXplT2JzZXJ2ZXI7Ci0gICAgcHJlZmVyZW5jZXMuQ1NTT01WaWV3U21v
b3RoU2Nyb2xsaW5nRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlQ1NTT01WaWV3U21vb3RoU2Nyb2xs
aW5nOwotICAgIHByZWZlcmVuY2VzLmNvcmVNYXRoTUxFbmFibGVkID0gb3B0aW9ucy5lbmFibGVD
b3JlTWF0aE1MOwotICAgIHByZWZlcmVuY2VzLnJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkID0g
b3B0aW9ucy5lbmFibGVSZXF1ZXN0SWRsZUNhbGxiYWNrOwotICAgIHByZWZlcmVuY2VzLmFzeW5j
Q2xpcGJvYXJkQVBJRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlQXN5bmNDbGlwYm9hcmRBUEk7Ci0g
ICAgcHJlZmVyZW5jZXMucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IG9wdGlvbnMudXNlRXBoZW1l
cmFsU2Vzc2lvbjsKLSAgICBwcmVmZXJlbmNlcy51c2VzUGFnZUNhY2hlID0gb3B0aW9ucy5lbmFi
bGVCYWNrRm9yd2FyZENhY2hlOwotICAgIHByZWZlcmVuY2VzLmxheW91dEZvcm1hdHRpbmdDb250
ZXh0SW50ZWdyYXRpb25FbmFibGVkID0gb3B0aW9ucy5sYXlvdXRGb3JtYXR0aW5nQ29udGV4dElu
dGVncmF0aW9uRW5hYmxlZDsKLSAgICBwcmVmZXJlbmNlcy5hc3BlY3RSYXRpb09mSW1nRnJvbVdp
ZHRoQW5kSGVpZ2h0RW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlQXNwZWN0UmF0aW9PZkltZ0Zyb21X
aWR0aEFuZEhlaWdodDsKLSAgICBwcmVmZXJlbmNlcy5hbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFV
UkxzID0gb3B0aW9ucy5hbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzOwotICAgIHByZWZlcmVu
Y2VzLmNvbnRhY3RQaWNrZXJBUElFbmFibGVkID0gb3B0aW9ucy5lbmFibGVDb250YWN0UGlja2Vy
QVBJOworICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy51aW50MzJX
ZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXRVSW50MzJQ
cmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZSBmb3JLZXk6dG9OUyhXVFI6OlRlc3RP
cHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVuY2VLZXkoa2V5KSkuZ2V0KCldOworCisgICAg
Zm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLnN0cmluZ1dlYlByZWZlcmVu
Y2VGZWF0dXJlcygpKQorICAgICAgICBbcHJlZmVyZW5jZXMgX3NldFN0cmluZ1ByZWZlcmVuY2VG
b3JUZXN0aW5nV2l0aFZhbHVlOnRvTlModmFsdWUpLmdldCgpIGZvcktleTp0b05TKFdUUjo6VGVz
dE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShrZXkpKS5nZXQoKV07CiB9CiAK
IC8vIENhbGxlZCBvbmNlIG9uIER1bXBSZW5kZXJUcmVlIHN0YXJ0dXAuCkBAIC0xMDE4LDkgKzEw
MTQsNiBAQCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlCiAgICAgICAg
IEAiQXBwbGVPdGhlckhpZ2hsaWdodENvbG9yIjpAIjAuNTAwMDAwIDAuNTAwMDAwIDAuNTAwMDAw
IiwKICAgICAgICAgQCJBcHBsZUxhbmd1YWdlcyI6IEBbIEAiZW4iIF0sCiAgICAgICAgIFdlYktp
dEVuYWJsZUZ1bGxEb2N1bWVudFRlYXJkb3duUHJlZmVyZW5jZUtleTogQFlFUywKLSAgICAgICAg
V2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5OiBAWUVTLAotICAgICAgICBXZWJL
aXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrUHJlZmVyZW5jZUtleTogQFlFUywKLSAgICAgICAg
V2ViS2l0SW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGVLZXk6
IEBOTywKICAgICAgICAgQCJVc2VXZWJLaXRXZWJJbnNwZWN0b3IiOiBAWUVTLAogI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgICAgICBAIk5TUHJlZmVycmVkU3BlbGxTZXJ2ZXJMYW5ndWFn
ZSI6IEAiZW5fVVMiLApAQCAtMTgyNiw5ICsxODE5LDkgQEAgc3RhdGljIHZvaWQgc2V0SlNDT3B0
aW9ucyhjb25zdCBXVFI6OlRlcwogICAgICAgICBzYXZlZE9wdGlvbnMuY2xlYXIoKTsKICAgICB9
CiAKLSAgICBpZiAob3B0aW9ucy5qc2NPcHRpb25zLmxlbmd0aCgpKSB7CisgICAgaWYgKCFvcHRp
b25zLmpzY09wdGlvbnMoKS5lbXB0eSgpKSB7CiAgICAgICAgIEpTQzo6T3B0aW9uczo6ZHVtcEFs
bE9wdGlvbnNJbkFMaW5lKHNhdmVkT3B0aW9ucyk7Ci0gICAgICAgIEpTQzo6T3B0aW9uczo6c2V0
T3B0aW9ucyhvcHRpb25zLmpzY09wdGlvbnMuY19zdHIoKSk7CisgICAgICAgIEpTQzo6T3B0aW9u
czo6c2V0T3B0aW9ucyhvcHRpb25zLmpzY09wdGlvbnMoKS5jX3N0cigpKTsKICAgICB9CiB9CiAK
QEAgLTE4MzksNiArMTgzMiwxMCBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNpc3Rl
bnRTdGF0CiAKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW21haW5GcmFtZSB3ZWJWaWV3XTsKIAor
ICAgIFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtbV2ViUHJlZmVyZW5jZXMgYWxsb2Nd
IGluaXRdOworICAgIFtwcmVmZXJlbmNlcyBzZXRBdXRvc2F2ZXM6Tk9dOworICAgIFt3ZWJWaWV3
IHNldFByZWZlcmVuY2VzOnByZWZlcmVuY2VzXTsKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgYWRqdXN0V2ViRG9jdW1lbnRGb3JTdGFuZGFyZFZpZXdwb3J0KGdXZWJCcm93c2VyVmll
dywgZ1dlYlNjcm9sbFZpZXcpOwogICAgIFt3ZWJWaWV3IF9zZXRBbGxvd3NNZXNzYWdpbmc6WUVT
XTsKQEAgLTE4NjcsMTAgKzE4NjQsMTAgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25z
aXN0ZW50U3RhdAogCiAgICAgW1dlYkNhY2hlIGNsZWFyQ2FjaGVkQ3JlZGVudGlhbHNdOwogCi0g
ICAgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcygpOwotICAgIHNldFdlYlBy
ZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMob3B0aW9ucyk7CisgICAgcmVzZXRXZWJQcmVmZXJlbmNl
c1RvQ29uc2lzdGVudFZhbHVlcyhwcmVmZXJlbmNlcyk7CisgICAgc2V0V2ViUHJlZmVyZW5jZXNG
b3JUZXN0T3B0aW9ucyhwcmVmZXJlbmNlcywgb3B0aW9ucyk7CiAjaWYgUExBVEZPUk0oTUFDKQot
ICAgIFt3ZWJWaWV3IHNldFdhbnRzTGF5ZXI6b3B0aW9ucy5sYXllckJhY2tlZFdlYlZpZXddOwor
ICAgIFt3ZWJWaWV3IHNldFdhbnRzTGF5ZXI6b3B0aW9ucy5sYXllckJhY2tlZFdlYlZpZXcoKV07
CiAjZW5kaWYKIAogICAgIFRlc3RSdW5uZXI6OnNldFNlcmlhbGl6ZUhUVFBMb2FkcyhmYWxzZSk7
CkBAIC0xOTE0LDcgKzE5MTEsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNpc3Rl
bnRTdGF0CiAgICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIGRlY2xhcmVUeXBl
czpAW05TU3RyaW5nUGJvYXJkVHlwZV0gb3duZXI6bmlsXTsKICNlbmRpZgogCi0gICAgV2ViQ29y
ZVRlc3RTdXBwb3J0OjpzZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlc0ZvclRlc3Rpbmco
b3B0aW9ucy5hZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5jX3N0cigpKTsKKyAgICBXZWJD
b3JlVGVzdFN1cHBvcnQ6OnNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzRm9yVGVzdGlu
ZyhvcHRpb25zLmFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzKCkuY19zdHIoKSk7CiAKICAg
ICBbbWFpbkZyYW1lIF9jbGVhck9wZW5lcl07CiAKQEAgLTE5NzAsNyArMTk2Nyw3IEBAIHN0YXRp
YyBOU1VSTCAqY29tcHV0ZVRlc3RVUkwoTlNTdHJpbmcgKnAKIAogc3RhdGljIFdUUjo6VGVzdE9w
dGlvbnMgdGVzdE9wdGlvbnNGb3JUZXN0KGNvbnN0IFdUUjo6VGVzdENvbW1hbmQmIGNvbW1hbmQp
CiB7Ci0gICAgV1RSOjpUZXN0RmVhdHVyZXMgZmVhdHVyZXM7CisgICAgV1RSOjpUZXN0RmVhdHVy
ZXMgZmVhdHVyZXMgPSBXVFI6OlRlc3RPcHRpb25zOjpkZWZhdWx0cygpOwogICAgIFdUUjo6bWVy
Z2UoZmVhdHVyZXMsIFdUUjo6aGFyZGNvZGVkRmVhdHVyZXNCYXNlZE9uUGF0aEZvclRlc3QoY29t
bWFuZCkpOwogICAgIFdUUjo6bWVyZ2UoZmVhdHVyZXMsIFdUUjo6ZmVhdHVyZURlZmF1bHRzRnJv
bVRlc3RIZWFkZXJGb3JUZXN0KGNvbW1hbmQsIFdUUjo6VGVzdE9wdGlvbnM6OmtleVR5cGVNYXBw
aW5nKCkpKTsKIApAQCAtMjAxNyw3ICsyMDE0LDcgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25z
dCBzdHJpbmcmIGlucHV0TAogICAgIGdUZXN0UnVubmVyID0gVGVzdFJ1bm5lcjo6Y3JlYXRlKHRl
c3RVUkwsIGNvbW1hbmQuZXhwZWN0ZWRQaXhlbEhhc2gpOwogICAgIGdUZXN0UnVubmVyLT5zZXRB
bGxvd2VkSG9zdHMoYWxsb3dlZEhvc3RzKTsKICAgICBnVGVzdFJ1bm5lci0+c2V0Q3VzdG9tVGlt
ZW91dChjb21tYW5kLnRpbWVvdXQubWlsbGlzZWNvbmRzKCkpOwotICAgIGdUZXN0UnVubmVyLT5z
ZXREdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoY29tbWFuZC5kdW1wSlNDb25zb2xlTG9nSW5TdGRF
cnIgfHwgb3B0aW9ucy5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIpOworICAgIGdUZXN0UnVubmVy
LT5zZXREdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoY29tbWFuZC5kdW1wSlNDb25zb2xlTG9nSW5T
dGRFcnIgfHwgb3B0aW9ucy5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoKSk7CiAKICAgICByZXNl
dFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZShvcHRpb25zLCBSZXNldFRpbWU6OkJlZm9yZVRlc3Qp
OwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQkocmV2
aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTU3NiwxNCArNTc2LDE0IEBAIHZvaWQgVGVzdFJ1bm5lcjo6
c2V0UGFnZVBhdXNlZChib29sIHBhdXMKIAogdm9pZCBUZXN0UnVubmVyOjpzZXRVc2VyU3R5bGVT
aGVldEVuYWJsZWQoYm9vbCBmbGFnKQogewotICAgIFtbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQ
cmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkOmZsYWddOworICAgIFtbW21haW5G
cmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkOmZsYWdd
OwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oSlNTdHJp
bmdSZWYgcGF0aCkKIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGhDRiA9IGFkb3B0
Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGF0aCkpOwogICAg
IE5TVVJMICp1cmwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilw
YXRoQ0YuZ2V0KCldOwotICAgIFtbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10g
c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbjp1cmxdOworICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3
XSBwcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbjp1cmxdOwogfQogCiB2b2lk
IFRlc3RSdW5uZXI6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1
ZVJlZiBub2RlT2JqZWN0LCBKU1N0cmluZ1JlZiB2YWx1ZSkKQEAgLTYwOSw3ICs2MDksNyBAQCB2
b2lkIFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZShKU1N0CiAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiB2YWx1ZUNGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCB2YWx1ZSkpOwogICAgIE5TU3RyaW5nICp2YWx1ZU5TID0gKF9fYnJpZGdl
IE5TU3RyaW5nICopdmFsdWVDRi5nZXQoKTsKIAotICAgIFtbV2ViUHJlZmVyZW5jZXMgc3RhbmRh
cmRQcmVmZXJlbmNlc10gX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZhbHVlOnZhbHVlTlMgZm9y
S2V5OmtleU5TXTsKKyAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIF9zZXRT
dHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZU5TIGZvcktleTprZXlOU107
CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQWxsVmlzaXRlZExpbmtzKCkKQEAgLTcwMCw3
ICs3MDAsNyBAQCBib29sIFRlc3RSdW5uZXI6OmZpbmRTdHJpbmcoSlNDb250ZXh0UmVmCiAKIHZv
aWQgVGVzdFJ1bm5lcjo6c2V0Q2FjaGVNb2RlbChpbnQgY2FjaGVNb2RlbCkKIHsKLSAgICBbW1dl
YlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdIHNldENhY2hlTW9kZWw6KFdlYkNhY2hl
TW9kZWwpY2FjaGVNb2RlbF07CisgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2Vz
XSBzZXRDYWNoZU1vZGVsOihXZWJDYWNoZU1vZGVsKWNhY2hlTW9kZWxdOwogfQogCiBib29sIFRl
c3RSdW5uZXI6OmlzQ29tbWFuZEVuYWJsZWQoSlNTdHJpbmdSZWYgbmFtZSkKSW5kZXg6IFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjAs
NyArNjAsNyBAQCAtICh2b2lkKXJlc2V0V2luZG93T3JpZ2luCiAKIC0gKHZvaWQpcmVzZXRUb0Nv
bnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rpbmc6KGNvbnN0IFdUUjo6VGVzdE9wdGlvbnMmKW9wdGlv
bnMKIHsKLSAgICBtX2VuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQgPSBvcHRpb25zLmVu
YWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQ7CisgICAgbV9lbmFibGVEcmFnRGVzdGluYXRp
b25BY3Rpb25Mb2FkID0gb3B0aW9ucy5lbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkKCk7
CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBzZXRGcmFtZTooTlNSZWN0
KWZyYW1lCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyMSwxNyArOTIxLDE2IEBAIHZvaWQgVGVzdENvbnRy
b2xsZXI6OnJlc2V0UHJlZmVyZW5jZXNUb0MKICAgICBwbGF0Zm9ybVJlc2V0UHJlZmVyZW5jZXNU
b0NvbnNpc3RlbnRWYWx1ZXMoKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVd
IDogb3B0aW9ucy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCi0gICAgICAgIFdLUHJlZmVy
ZW5jZXNTZXRCb29sVmFsdWVGb3JLZXkocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0
KCkpOworICAgICAgICBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9yVGVzdGluZyhw
cmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1
dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkp
Ci0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleShwcmVmZXJlbmNlcywg
dmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXREb3VibGVW
YWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkp
OwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLnVpbnQzMldl
YlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAgICAgICBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFs
dWVGb3JLZXkocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOworICAgICAgICBX
S1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXlGb3JUZXN0aW5nKHByZWZlcmVuY2VzLCB2
YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFs
dWVdIDogb3B0aW9ucy5zdHJpbmdXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKLSAgICAgICAgV0tQ
cmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5KHByZWZlcmVuY2VzLCB0b1dLKHZhbHVlKS5n
ZXQoKSwgdG9XSyhrZXkpLmdldCgpKTsKLQorICAgICAgICBXS1ByZWZlcmVuY2VzU2V0U3RyaW5n
VmFsdWVGb3JLZXlGb3JUZXN0aW5nKHByZWZlcmVuY2VzLCB0b1dLKHZhbHVlKS5nZXQoKSwgdG9X
SyhrZXkpLmdldCgpKTsKIH0KIAogYm9vbCBUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29u
c2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucywgUmVzZXRTdGFnZSByZXNl
dFN0YWdlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411689</attachid>
            <date>2020-10-17 18:00:53 -0700</date>
            <delta_ts>2020-10-18 09:19:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201017180052.patch</filename>
            <type>text/plain</type>
            <size>51908</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTE3ICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVu
ZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBXS1ByZWZlcmVuY2Vz
U2V0KlZhbHVlRm9yS2V5IFNQSSB0byBXS1ByZWZlcmVuY2VzU2V0KlZhbHVlRm9yS2V5Rm9yVGVz
dGluZworICAgICAgICB0byBtYWtlIGl0IGNsZWFyIHdoYXQgdGhleSBhcmUgdXNlZCBmb3IgYW5k
IGZvciBjb25zaXN0ZW5jeSB3aXRoIFdlYktpdExlZ2FjeS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29s
VmFsdWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXREb3VibGVW
YWx1ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZh
bHVlRm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFs
dWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVG
b3JLZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9y
S2V5KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktl
eSk6IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJp
dmF0ZS5oOgorCiAyMDIwLTEwLTE2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBJbnRyb2R1Y2UgUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5IHRvIG1hbmFnZSB0aGUgcmVzb3VyY2VzIGluIHRoZSBHUFUgUHJvY2VzcwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5j
cHAJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UHJlZmVyZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCwyMiArNzgsMjIgQEAgdm9pZCBX
S1ByZWZlcmVuY2VzU2V0SW50ZXJuYWxEZWJ1Z0ZlYXR1cgogICAgIHRvSW1wbChwcmVmZXJlbmNl
c1JlZiktPnNldEludGVybmFsRGVidWdGZWF0dXJlRW5hYmxlZEZvcktleSh0b1dURlN0cmluZyhp
bnRlcm5hbERlYnVnRmVhdHVyZUtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2Vz
U2V0Qm9vbFZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wg
dmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZv
cktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1
ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldEJv
b2xWYWx1ZUZvcktleSh0b1dURlN0cmluZyhrZXkpLCB2YWx1ZSk7CiB9CiAKLXZvaWQgV0tQcmVm
ZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIGRvdWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0
RG91YmxlVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIGRvdWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJl
bmNlc1JlZiktPnNldEJvb2xWYWx1ZUZvcktleSh0b1dURlN0cmluZyhrZXkpLCB2YWx1ZSk7CiB9
CiAKLXZvaWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNS
ZWYgcHJlZmVyZW5jZXNSZWYsIHVpbnQzMl90IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCit2b2lk
IFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKIHsK
ICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRVSW50MzJWYWx1ZUZvcktleSh0b1dURlN0
cmluZyhrZXkpLCB2YWx1ZSk7CiB9CiAKLXZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVl
Rm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RyaW5nUmVmIHZhbHVl
LCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktl
eUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYg
dmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKIHsKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5z
ZXRTdHJpbmdWYWx1ZUZvcktleSh0b1dURlN0cmluZyhrZXkpLCB0b1dURlN0cmluZyh2YWx1ZSkp
OwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1Jl
ZlByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NiwxMCArNTYsMTAgQEAgV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1Jlc2V0
QWxsSW50ZQogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldEludGVybmFsRGVidWdGZWF0
dXJlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYsIGJvb2wsIFdLU3RyaW5nUmVmKTsKIAogLy8gVGhl
IGZvbGxvd2luZyBnZW5lcmljIHNldHRlciBmdW5jdGlvbnMgYXJlIG9ubHkgaW50ZW5kZWQgZm9y
IHVzZSBieSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlLgotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJl
bmNlc1NldEJvb2xWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBi
b29sIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNl
c1NldERvdWJsZVZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGRv
dWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKLVdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5j
ZXNTZXRVSW50MzJWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1
aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKLVdLX0VYUE9SVCB2b2lkIFdLUHJlZmVy
ZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVm
LCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VYUE9SVCB2b2lkIFdL
UHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXNSZWYsIGJvb2wgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7CitXS19FWFBPUlQg
dm9pZCBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVy
ZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGRvdWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsK
K1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleUZvclRlc3Rp
bmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3Ry
aW5nUmVmIGtleSk7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVG
b3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RyaW5n
UmVmIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwogCiAvLyBGb3IgVGVzdCBSdW5uZXIgVXNlIG9u
bHkuCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzUmVzZXRUZXN0UnVubmVyT3ZlcnJpZGVz
KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpOwpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMTAtMTcgIFNh
bSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFtUZXN0aW5nXSBDb252ZXJ0
IER1bXBSZW5kZXJUcmVlIHRvIHVzZSBnZW5lcmF0ZWQgdGVzdCBoZWFkZXIgb3B0aW9ucworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3ODgwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIGEgc2V0
IG9mIHNldHRlcnMgdG8gZm9yIER1bXBSZW5kZXJUcmVlIHRvIHVzZSB3aGVuIHNldHRpbmcgcHJl
ZmVyZW5jZXMKKyAgICAgICAgYnkgc3RyaW5nLgorCisgICAgICAgICogV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3N3aXRjaE5ldHdvcmtMb2Fk
ZXJUb05ld1Rlc3RpbmdTZXNzaW9uXSk6CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIF9zZXRD
dXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6XSk6CisgICAgICAg
ICgrW1dlYlByZWZlcmVuY2VzIF9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uXSk6CisgICAgICAg
ICgtW1dlYlByZWZlcmVuY2VzIF9zZXRCb29sUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6
Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0VUludDMyUHJlZmVyZW5j
ZUZvclRlc3RpbmdXaXRoVmFsdWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNl
cyBfc2V0RG91YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6Zm9yS2V5Ol0pOgorICAg
ICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRo
VmFsdWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0UHJlZmVyZW5j
ZUZvclRlc3RXaXRoVmFsdWU6Zm9yS2V5Ol0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlZpZXcv
V2ViUHJlZmVyZW5jZXNQcml2YXRlLmg6CisKIDIwMjAtMTAtMTcgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgogCiAgICAgICAgIENvbnZlcnQgcHJlZmVyZW5jZXMgaW4gV2ViUHJlZmVy
ZW5jZXNQcml2YXRlLmggdG8gdXNlIEBwcm9wZXJ0eSBzeW50YXggdG8gbWFrZSB0aGVtIG1vcmUg
bWFuYWdlYWJsZQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYw
LDI2ICsxNjYwLDYgQEAgKyAodm9pZClfc2V0SUJDcmVhdG9ySUQ6KE5TU3RyaW5nICopc3RyaQog
ICAgIFtvbGQgcmVsZWFzZV07CiB9CiAKLSsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05l
d1Rlc3RpbmdTZXNzaW9uCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBXZWJUaHJl
YWRMb2NrKCk7Ci0jZW5kaWYKLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRv
TmV3VGVzdGluZ1Nlc3Npb24oKTsKLX0KLQotKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vz
c2lvbgotewotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCkuZGVsZXRlQWxsQ29va2llcygpOwotfQotCi0rICh2b2lkKV9zZXRDdXJyZW50TmV0d29y
a0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSlwb2xpY3kKLXsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2ll
U3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCkuY29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsgLy8gV2lsbCBm
YWlsIHdoZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNz
aW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KLSAgICBDRkhUVFBDb29raWVTdG9yYWdl
U2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7Ci19Ci0K
IC0gKEJPT0wpaXNET01QYXN0ZUFsbG93ZWQKIHsKICAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1
ZUZvcktleTpXZWJLaXRET01QYXN0ZUFsbG93ZWRQcmVmZXJlbmNlS2V5XTsKQEAgLTE5NjYsMTEg
KzE5NDYsNiBAQCAtICh2b2lkKXdpbGxBZGRUb1dlYlZpZXcKICAgICArK19wcml2YXRlLT5udW1X
ZWJWaWV3czsKIH0KIAotLSAodm9pZClfc2V0UHJlZmVyZW5jZUZvclRlc3RXaXRoVmFsdWU6KE5T
U3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQotewotICAgIFtzZWxmIF9zZXRT
dHJpbmdWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKLX0KLQogLSAodm9pZClzZXRGdWxsU2NyZWVu
RW5hYmxlZDooQk9PTClmbGFnCiB7CiAgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTpmbGFnIGZvcktl
eTpXZWJLaXRGdWxsU2NyZWVuRW5hYmxlZFByZWZlcmVuY2VLZXldOwpAQCAtMzAxMyw2ICsyOTg4
LDUxIEBAIC0gKHZvaWQpX3NldEVuYWJsZWQ6KEJPT0wpdmFsdWUgZm9yRmVhdHUKIAogQGVuZAog
CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVRlc3RpbmcpCisK
KysgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uCit7CisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBXZWJUaHJlYWRMb2NrKCk7CisjZW5kaWYKKyAgICBO
ZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKK30K
KworKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9s
aWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9saWN5Cit7CisgICAgUmV0YWluUHRyPENG
SFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Np
b25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsKKyAgICBBU1NF
UlQoY29va2llU3RvcmFnZSk7IC8vIFdpbGwgZmFpbCB3aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhh
bmQuCisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVT
dG9yYWdlLmdldCgpLCBwb2xpY3kpOworfQorCisrICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJT
ZXNzaW9uCit7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKS5kZWxldGVBbGxDb29raWVzKCk7Cit9CisKKy0gKHZvaWQpX3NldEJvb2xQcmVmZXJl
bmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTooQk9PTCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5
Cit7CisgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAo
dm9pZClfc2V0VUludDMyUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KHVpbnQzMl90KXZh
bHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2VsZiBfc2V0SW50ZWdlclZhbHVl
OnZhbHVlIGZvcktleTprZXldOworfQorCistICh2b2lkKV9zZXREb3VibGVQcmVmZXJlbmNlRm9y
VGVzdGluZ1dpdGhWYWx1ZTooZG91YmxlKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sK
KyAgICBbc2VsZiBfc2V0RmxvYXRWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAodm9p
ZClfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KE5TU3RyaW5nICopdmFs
dWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9zZXRTdHJpbmdWYWx1ZTp2
YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworQGVuZAorCiBAaW1wbGVtZW50YXRpb24gV2ViUHJlZmVy
ZW5jZXMgKFdlYlByaXZhdGVQcmVmZXJlbmNlc0NvbnZlcnRlZFRvV2ViRmVhdHVyZSkKIAogLSAo
Qk9PTCl1c2VyR2VzdHVyZVByb21pc2VQcm9wYWdhdGlvbkVuYWJsZWQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZh
dGUuaAkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtODksMTMgKzg5LDYg
QEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZSkKICsgKHZvaWQpX3NldElu
aXRpYWxEZWZhdWx0VGV4dEVuY29kaW5nVG9TeXN0ZW1FbmNvZGluZzsKICsgKHZvaWQpX3NldElC
Q3JlYXRvcklEOihOU1N0cmluZyAqKXN0cmluZzsKIAotLy8gRm9yIER1bXBSZW5kZXJUcmVlIHVz
ZSBvbmx5LgotKyAodm9pZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb247
Ci0rICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xp
Y3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSljb29raWVBY2NlcHRQb2xpY3k7Ci0rICh2b2lk
KV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uOwotLy8gVXNlZCB0byBzZXQgcHJlZmVyZW5jZSBz
cGVjaWZpZWQgaW4gdGhlIHRlc3QgdmlhIExheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJl
ZmVyZW5jZSguLikuCi0tICh2b2lkKV9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhWYWx1ZTooTlNT
dHJpbmcgKil2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OwotCiArICh2b2lkKXNldFdlYktp
dExpbmtUaW1lVmVyc2lvbjooaW50KXZlcnNpb247CiAKIC8vIEZvciBXZWJWaWV3J3MgdXNlIG9u
bHkuCkBAIC0zMTAsNiArMzAzLDE4IEBAIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlBy
aXZhdGVGZWEKIC0gKHZvaWQpX3NldEVuYWJsZWQ6KEJPT0wpdmFsdWUgZm9yRmVhdHVyZTooV2Vi
RmVhdHVyZSAqKWZlYXR1cmU7CiBAZW5kCiAKK0BpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdl
YlByaXZhdGVUZXN0aW5nKQorKyAodm9pZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGlu
Z1Nlc3Npb247CisrICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVB
Y2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSljb29raWVBY2NlcHRQb2xpY3k7
CisrICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uOworCistICh2b2lkKV9zZXRCb29s
UHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KEJPT0wpdmFsdWUgZm9yS2V5OihOU1N0cmlu
ZyAqKWtleTsKKy0gKHZvaWQpX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVl
Oih1aW50MzJfdCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OworLSAodm9pZClfc2V0RG91
YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KGRvdWJsZSl2YWx1ZSBmb3JLZXk6KE5T
U3RyaW5nICopa2V5OworLSAodm9pZClfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRo
VmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKworQGVuZAor
CiAvLyBGSVhNRTogSWYgdGhlc2UgYXJlIG5vdCB1c2VkIGFueXdoZXJlLCB3ZSBzaG91bGQgcmVt
b3ZlIHRoZW0gYW5kIG9ubHkgdXNlIFdlYkZlYXR1cmUgbWVjaGFuaXNtIGZvciB0aGUgcHJlZmVy
ZW5jZS4KIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGVQcmVmZXJlbmNlc0Nv
bnZlcnRlZFRvV2ViRmVhdHVyZSkKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHVzZXJHZXN0
dXJlUHJvbWlzZVByb3BhZ2F0aW9uRW5hYmxlZDsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDIwLTEwLTE3ICBTYW0g
V2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBE
dW1wUmVuZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtXSVBdCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rl
c3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiOiBBZGRlZC4K
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RPcHRpb25zOjpkZWZhdWx0cyk6CisgICAgICAgIChXVFI6OlRlc3RPcHRpb25zOjp3ZWJW
aWV3SXNDb21wYXRpYmxlV2l0aE9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV1RSOjpmZWF0dXJl
VmFsdWUpOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6Ym9vbFRlc3RSdW5uZXJGZWF0dXJl
VmFsdWUgY29uc3QpOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6c3RyaW5nVGVzdFJ1bm5l
ckZlYXR1cmVWYWx1ZSBjb25zdCk6CisgICAgICAgIChXVFI6OnNldFZhbHVlSWZTZXRJbk1hcCk6
IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlRlc3RPcHRpb25zOjpUZXN0T3B0aW9ucyk6IERlbGV0
ZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuaDoKKyAgICAgICAgKFdU
Ujo6VGVzdE9wdGlvbnM6OlRlc3RPcHRpb25zKToKKyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6
OmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBjb25zdCk6CisgICAgICAgIChXVFI6OlRlc3RPcHRp
b25zOjplbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkIGNvbnN0KToKKyAgICAgICAgKFdU
Ujo6VGVzdE9wdGlvbnM6OmxheWVyQmFja2VkV2ViVmlldyBjb25zdCk6CisgICAgICAgIChXVFI6
OlRlc3RPcHRpb25zOjp1c2VFcGhlbWVyYWxTZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdUUjo6
VGVzdE9wdGlvbnM6OmFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzIGNvbnN0KToKKyAgICAg
ICAgKFdUUjo6VGVzdE9wdGlvbnM6OmpzY09wdGlvbnMgY29uc3QpOgorICAgICAgICAoV1RSOjpU
ZXN0T3B0aW9uczo6Ym9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyBjb25zdCk6CisgICAgICAgIChX
VFI6OlRlc3RPcHRpb25zOjpkb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMgY29uc3QpOgorICAg
ICAgICAoV1RSOjpUZXN0T3B0aW9uczo6dWludDMyV2ViUHJlZmVyZW5jZUZlYXR1cmVzIGNvbnN0
KToKKyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6OnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJl
cyBjb25zdCk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHRvTlMpOgorICAgICAgICAoY3JlYXRl
V2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdyk6CisgICAgICAgIChyZXNldFdlYlByZWZlcmVuY2Vz
VG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9w
dGlvbnMpOgorICAgICAgICAoc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXNGb3JUZXN0aW5n
KToKKyAgICAgICAgKHNldEpTQ09wdGlvbnMpOgorICAgICAgICAocmVzZXRXZWJWaWV3VG9Db25z
aXN0ZW50U3RhdGUpOgorICAgICAgICAodGVzdE9wdGlvbnNGb3JUZXN0KToKKyAgICAgICAgKHJ1
blRlc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgor
ICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKToKKyAgICAgICAg
KFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24pOgorICAgICAgICAoVGVzdFJ1
bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldENhY2hl
TW9kZWwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tOgorICAg
ICAgICAoLVtVSURlbGVnYXRlIHJlc2V0VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nOl0p
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVl
cyk6CisKIDIwMjAtMTAtMTcgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtGbGF0cGFrIFNES10gZmxhdHBha3V0aWxzLnB5IHJlcG9ydHMgIktleUVy
cm9yOiAnZ2NjJyIgZXJyb3IgaWYgdXNpbmcgd2l0aCBpY2VjYyBhbmQgdG9vbGNoYWlucyBhcmVu
J3QgZ2VuZXJhdGVkIHlldApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CSh3b3JraW5n
IGNvcHkpCkBAIC02LDcgKzYsMTAgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9p
bmNsdWRlLwogJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlL3d0Zi9TY3Jp
cHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAogJChQUk9KRUNUX0RJ
UikvLi4vVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRD
b250cm9sbGVyLmlkbAogJChQUk9KRUNUX0RJUikvQmluZGluZ3MvQ29kZUdlbmVyYXRvckR1bXBS
ZW5kZXJUcmVlLnBtCiskKFBST0pFQ1RfRElSKS9EZXJpdmVkU291cmNlcy5tYWtlCiAkKFBST0pF
Q1RfRElSKS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVk
S2V5cy5oLmVyYgorJChQUk9KRUNUX0RJUikvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9U
ZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYgorJChQUk9K
RUNUX0RJUikvU2NyaXB0cy9nZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2gKICQoV0VCQ09SRV9Q
UklWQVRFX0hFQURFUlNfRElSKS9Db2RlR2VuZXJhdG9yLnBtCiAkKFdFQkNPUkVfUFJJVkFURV9I
RUFERVJTX0RJUikvSURMQXR0cmlidXRlcy5qc29uCiAkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJT
X0RJUikvSURMUGFyc2VyLnBtCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjY4NjQ4KQorKysg
VG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHdv
cmtpbmcgY29weSkKQEAgLTIsMyArMiw0IEBACiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUvSlNVSVNjcmlwdENvbnRyb2xsZXIuY3BwCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUvSlNVSVNjcmlwdENv
bnRyb2xsZXIuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5k
ZXJUcmVlL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRM
ZWdhY3lLZXlNYXBwaW5nLmNwcApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNv
dXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291
cmNlcy5tYWtlCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJp
dmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMywxNSBAQAogCiBSVUJZ
ID0gcnVieQogCitVSVNDUklQVENPTlRFWFRfRElSID0gJChEdW1wUmVuZGVyVHJlZSkvLi4vVGVz
dFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MKK1BSRUZFUkVOQ0VTX1RFTVBM
QVRFX0RJUiA9ICQoRHVtcFJlbmRlclRyZWUpL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMK
KworVlBBVEggPSBcCisgICAgJChVSVNDUklQVENPTlRFWFRfRElSKSBcCisgICAgJChQUkVGRVJF
TkNFU19URU1QTEFURV9ESVIpIFwKKyMKKworCiBXRUJfUFJFRkVSRU5DRVMgPSBcCiAgICAgJHtX
VEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWwgXAog
ICAgICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0Rl
YnVnLnlhbWwgXApAQCAtMzEsMjIgKzQwLDE5IEBAIFdFQl9QUkVGRVJFTkNFUyA9IFwKICMKIAog
V0VCX1BSRUZFUkVOQ0VTX1RFTVBMQVRFUyA9IFwKLSAgICAkKER1bXBSZW5kZXJUcmVlKS9TY3Jp
cHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYiBc
CisgICAgJChQUkVGRVJFTkNFU19URU1QTEFURV9ESVIpL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2Vi
S2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiIFwKKyAgICAkKFBSRUZFUkVOQ0VTX1RFTVBMQVRF
X0RJUikvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiIFwKICMKIFdFQl9QUkVGRVJFTkNF
U19GSUxFUyA9ICQoYmFzZW5hbWUgJChub3RkaXIgJChXRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVT
KSkpCi1XRUJfUFJFRkVSRU5DRVNfUEFUVEVSTlMgPSAkKHN1YnN0IC5lcmIsLCQoV0VCX1BSRUZF
UkVOQ0VTX0ZJTEVTKSkKLQotYWxsIDogJChXRUJfUFJFRkVSRU5DRVNfRklMRVMpCitXRUJfUFJF
RkVSRU5DRVNfUEFUVEVSTlMgPSAkKHN1YnN0IC4sJSwkKFdFQl9QUkVGRVJFTkNFU19GSUxFUykp
CiAKLSQoV0VCX1BSRUZFUkVOQ0VTX1BBVFRFUk5TKSA6ICQoV1RGX0JVSUxEX1NDUklQVFNfRElS
KS9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiICQoV0VCX1BSRUZFUkVOQ0VTX1RFTVBMQVRFUykgJChX
RUJfUFJFRkVSRU5DRVMpCi0JJChSVUJZKSAkPCAtLWZyb250ZW5kIFdlYktpdExlZ2FjeSAtLWJh
c2UgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlh
bWwgLS1kZWJ1ZyAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVy
ZW5jZXNEZWJ1Zy55YW1sIC0tZXhwZXJpbWVudGFsICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9Q
cmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIC0taW50ZXJuYWwgJHtX
VEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwu
eWFtbCAkKGFkZHByZWZpeCAtLXRlbXBsYXRlICwgJChXRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVT
KSkKKyUuY3BwIDogJS5jcHAuZXJiICQoV1RGX0JVSUxEX1NDUklQVFNfRElSKS9HZW5lcmF0ZVBy
ZWZlcmVuY2VzLnJiICQoV0VCX1BSRUZFUkVOQ0VTX1RFTVBMQVRFUykgJChXRUJfUFJFRkVSRU5D
RVMpCisJJChSVUJZKSAkKFdURl9CVUlMRF9TQ1JJUFRTX0RJUikvR2VuZXJhdGVQcmVmZXJlbmNl
cy5yYiAtLWZyb250ZW5kIFdlYktpdExlZ2FjeSAtLWJhc2UgJHtXVEZfQlVJTERfU0NSSVBUU19E
SVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWwgLS1kZWJ1ZyAke1dURl9CVUlMRF9T
Q1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNEZWJ1Zy55YW1sIC0tZXhwZXJp
bWVudGFsICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNl
c0V4cGVyaW1lbnRhbC55YW1sIC0taW50ZXJuYWwgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1By
ZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbCAtLXRlbXBsYXRlICQ8CiAKKyUu
aCA6ICUuaC5lcmIgJChXVEZfQlVJTERfU0NSSVBUU19ESVIpL0dlbmVyYXRlUHJlZmVyZW5jZXMu
cmIgJChXRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVTKSAkKFdFQl9QUkVGRVJFTkNFUykKKwkkKFJV
QlkpICQoV1RGX0JVSUxEX1NDUklQVFNfRElSKS9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiIC0tZnJv
bnRlbmQgV2ViS2l0TGVnYWN5IC0tYmFzZSAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVy
ZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCAtLWRlYnVnICR7V1RGX0JVSUxEX1NDUklQVFNfRElS
fS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0RlYnVnLnlhbWwgLS1leHBlcmltZW50YWwgJHtX
VEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVu
dGFsLnlhbWwgLS1pbnRlcm5hbCAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMv
V2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sIC0tdGVtcGxhdGUgJDwKIAotVUlTQ1JJUFRDT05U
RVhUX0RJUiA9ICQoRHVtcFJlbmRlclRyZWUpLy4uL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRD
b250ZXh0L0JpbmRpbmdzCiAKLVZQQVRIID0gXAotICAgICQoVUlTQ1JJUFRDT05URVhUX0RJUikg
XAotIwogCiBVSUNPTlRFWFRfSU5URVJGQUNFUyA9IFwKICAgICBVSVNjcmlwdENvbnRyb2xsZXIg
XApAQCAtNjgsNiArNzQsNyBAQCBKUyUuaCBKUyUuY3BwIDogJS5pZGwgJChTQ1JJUFRTKSAkKElE
TF9BCiAJQHBlcmwgLUkgJChXZWJDb3JlU2NyaXB0cykgLUkgJChVSVNDUklQVENPTlRFWFRfRElS
KSAtSSAkKER1bXBSZW5kZXJUcmVlKS9CaW5kaW5ncyAkKFdlYkNvcmVTY3JpcHRzKS9nZW5lcmF0
ZS1iaW5kaW5ncy5wbCAtLWRlZmluZXMgIiIgLS1pbmNsdWRlICQoVUlTQ1JJUFRDT05URVhUX0RJ
UikgLS1vdXRwdXREaXIgLiAtLWdlbmVyYXRvciBEdW1wUmVuZGVyVHJlZSAtLWlkbEF0dHJpYnV0
ZXNGaWxlICQoSURMX0FUVFJJQlVURVNfRklMRSkgJDwKIAogYWxsIDogXAorCSQoV0VCX1BSRUZF
UkVOQ0VTX0ZJTEVTKSBcCiAgICAgJChVSUNPTlRFWFRfSU5URVJGQUNFUzolPUpTJS5oKSBcCiAg
ICAgJChVSUNPTlRFWFRfSU5URVJGQUNFUzolPUpTJS5jcHApIFwKICMKSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHAJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNDQg
QEAKIAogbmFtZXNwYWNlIFdUUiB7CiAKK2NvbnN0IFRlc3RGZWF0dXJlcyYgVGVzdE9wdGlvbnM6
OmRlZmF1bHRzKCkKK3sKKyAgICBzdGF0aWMgVGVzdEZlYXR1cmVzIGZlYXR1cmVzOworICAgIGlm
IChmZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzLmVtcHR5KCkpIHsKKyAgICAgICAg
ZmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyA9IHsKKyAgICAgICAgICAgIC8vIFRo
ZXNlIGFyZSBXZWJQcmVmZXJlbmNlIHZhbHVlcyB0aGF0IG11c3QgYWx3YXlzIGJlIHNldCBhcyB0
aGV5IG1heQorICAgICAgICAgICAgLy8gZGlmZmVyIGZyb20gdGhlIGRlZmF1bHQgc2V0IGluIHRo
ZSBXZWJQcmVmZXJlbmNlcyoueWFtbCBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgeyAiQWxs
b3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMiLCBmYWxzZSB9LAor
ICAgICAgICAgICAgeyAiQWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyIsIHRydWUgfSwKKyAg
ICAgICAgICAgIHsgIkFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAg
ICAgICAgeyAiQXR0YWNobWVudEVsZW1lbnRFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAg
IHsgIlVzZXNCYWNrRm9yd2FyZENhY2hlIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkNvbG9y
RmlsdGVyRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJJbnNwZWN0b3JBZGRpdGlv
bnNFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkludGVyc2VjdGlvbk9ic2VydmVy
RW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJLZXlnZW5FbGVtZW50RW5hYmxlZCIs
IGZhbHNlIH0sCisgICAgICAgICAgICB7ICJNZW51SXRlbUVsZW1lbnRFbmFibGVkIiwgZmFsc2Ug
fSwKKyAgICAgICAgICAgIHsgIk1vZGVybk1lZGlhQ29udHJvbHNFbmFibGVkIiwgdHJ1ZSB9LAor
CisgICAgICAgICAgICB7ICJDU1NMb2dpY2FsRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAg
ICB7ICJMaW5lSGVpZ2h0VW5pdHNFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIlNl
bGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXNFbmFibGVkIiwgdHJ1ZSB9LAorICAgICAgICAg
ICAgeyAiTGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQiLCB0cnVlIH0s
CisKKyAgICAgICAgICAgIHsgIkFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQiLCBmYWxzZSB9LAor
ICAgICAgICAgICAgeyAiQXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWQi
LCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQXN5bmNDbGlwYm9hcmRBUElFbmFibGVkIiwgZmFs
c2UgfSwKKyAgICAgICAgICAgIHsgIkNTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWQiLCBm
YWxzZSB9LAorICAgICAgICAgICAgeyAiQ29udGFjdFBpY2tlckFQSUVuYWJsZWQiLCBmYWxzZSB9
LAorICAgICAgICAgICAgeyAiQ29yZU1hdGhNTEVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAg
ICAgeyAiUmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAg
eyAiUmVzaXplT2JzZXJ2ZXJFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIldlYkdQ
VUVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICB9OworICAgIH0KKyAgICByZXR1cm4gZmVhdHVy
ZXM7Cit9CisKIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgVGVzdEhlYWRl
cktleVR5cGU+JiBUZXN0T3B0aW9uczo6a2V5VHlwZU1hcHBpbmcoKQogewogICAgIHN0YXRpYyBj
b25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFRlc3RIZWFkZXJLZXlUeXBlPiBt
YXAgewpAQCAtNDcsNTYgKzg1LDQ3IEBAIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0
cmluZywgVGUKICAgICByZXR1cm4gbWFwOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0
aWMgdm9pZCBzZXRWYWx1ZUlmU2V0SW5NYXAoVCYgdmFsdWVUb1NldCwgc3RkOjpzdHJpbmcga2V5
LCBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFQ+JiBtYXApCitib29sIFRl
c3RPcHRpb25zOjp3ZWJWaWV3SXNDb21wYXRpYmxlV2l0aE9wdGlvbnMoY29uc3QgVGVzdE9wdGlv
bnMmIG9wdGlvbnMpIGNvbnN0Cit7CisgICAgaWYgKG1fZmVhdHVyZXMuZXhwZXJpbWVudGFsRmVh
dHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVz
ICE9IG9wdGlvbnMubV9mZWF0dXJlcy5pbnRlcm5hbERlYnVnRmVhdHVyZXMpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVz
ICE9IG9wdGlvbnMubV9mZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuZG91YmxlV2ViUHJlZmVyZW5jZUZl
YXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5kb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy51aW50MzJXZWJQcmVm
ZXJlbmNlRmVhdHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLnVpbnQzMldlYlByZWZlcmVuY2VG
ZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLnN0cmlu
Z1dlYlByZWZlcmVuY2VGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMuc3RyaW5nV2ViUHJl
ZmVyZW5jZUZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVy
ZXMuYm9vbFRlc3RSdW5uZXJGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMuYm9vbFRlc3RS
dW5uZXJGZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVz
LmRvdWJsZVRlc3RSdW5uZXJGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMuZG91YmxlVGVz
dFJ1bm5lckZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVy
ZXMuc3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5zdHJpbmdU
ZXN0UnVubmVyRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0
dXJlcy5zdHJpbmdWZWN0b3JUZXN0UnVubmVyRmVhdHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVz
LnN0cmluZ1ZlY3RvclRlc3RSdW5uZXJGZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGZlYXR1cmVWYWx1
ZShzdGQ6OnN0cmluZyBrZXksIFQgZGVmYXVsdFZhbHVlLCBjb25zdCBzdGQ6OnVub3JkZXJlZF9t
YXA8c3RkOjpzdHJpbmcsIFQ+JiBtYXApCiB7CiAgICAgYXV0byBpdCA9IG1hcC5maW5kKGtleSk7
Ci0gICAgaWYgKGl0ID09IG1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHZhbHVlVG9T
ZXQgPSBpdC0+c2Vjb25kOwotfQotCi1UZXN0T3B0aW9uczo6VGVzdE9wdGlvbnMoVGVzdEZlYXR1
cmVzIHRlc3RGZWF0dXJlcykKLXsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoYWxsb3dDcm9zc09y
aWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMsICJBbGxvd0Nyb3NzT3JpZ2luU3Vi
cmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyIsIHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVy
ZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoYWxsb3dUb3BOYXZpZ2F0aW9u
VG9EYXRhVVJMcywgIkFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMiLCB0ZXN0RmVhdHVyZXMu
Ym9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJs
ZUFjY2VsZXJhdGVkRHJhd2luZywgIkFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQiLCB0ZXN0RmVh
dHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFw
KGVuYWJsZUF0dGFjaG1lbnRFbGVtZW50LCAiQXR0YWNobWVudEVsZW1lbnRFbmFibGVkIiwgdGVz
dEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJ
bk1hcChlbmFibGVCYWNrRm9yd2FyZENhY2hlLCAiVXNlc0JhY2tGb3J3YXJkQ2FjaGUiLCB0ZXN0
RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldElu
TWFwKGVuYWJsZUNvbG9yRmlsdGVyLCAiQ29sb3JGaWx0ZXJFbmFibGVkIiwgdGVzdEZlYXR1cmVz
LmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFi
bGVJbnNwZWN0b3JBZGRpdGlvbnMsICJJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkIiwgdGVzdEZl
YXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1h
cChlbmFibGVJbnRlcnNlY3Rpb25PYnNlcnZlciwgIkludGVyc2VjdGlvbk9ic2VydmVyRW5hYmxl
ZCIsIHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1
ZUlmU2V0SW5NYXAoZW5hYmxlS2V5Z2VuRWxlbWVudCwgIktleWdlbkVsZW1lbnRFbmFibGVkIiwg
dGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZT
ZXRJbk1hcChlbmFibGVNZW51SXRlbUVsZW1lbnQsICJNZW51SXRlbUVsZW1lbnRFbmFibGVkIiwg
dGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZT
ZXRJbk1hcChlbmFibGVNb2Rlcm5NZWRpYUNvbnRyb2xzLCAiTW9kZXJuTWVkaWFDb250cm9sc0Vu
YWJsZWQiLCB0ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0KLSAgICBz
ZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCwgImVuYWJs
ZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQiLCB0ZXN0RmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJG
ZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGR1bXBKU0NvbnNvbGVMb2dJblN0ZEVy
ciwgImR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciIsIHRlc3RGZWF0dXJlcy5ib29sVGVzdFJ1bm5l
ckZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAobGF5ZXJCYWNrZWRXZWJWaWV3LCAi
bGF5ZXJCYWNrZWRXZWJWaWV3IiwgdGVzdEZlYXR1cmVzLmJvb2xUZXN0UnVubmVyRmVhdHVyZXMp
OwotICAgIHNldFZhbHVlSWZTZXRJbk1hcCh1c2VFcGhlbWVyYWxTZXNzaW9uLCAidXNlRXBoZW1l
cmFsU2Vzc2lvbiIsIHRlc3RGZWF0dXJlcy5ib29sVGVzdFJ1bm5lckZlYXR1cmVzKTsKLQotICAg
IHNldFZhbHVlSWZTZXRJbk1hcChhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcywgImFkZGl0
aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzIiwgdGVzdEZlYXR1cmVzLnN0cmluZ1Rlc3RSdW5uZXJG
ZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGpzY09wdGlvbnMsICJqc2NPcHRpb25z
IiwgdGVzdEZlYXR1cmVzLnN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlcyk7Ci0KLSAgICBzZXRWYWx1
ZUlmU2V0SW5NYXAoZW5hYmxlQ1NTTG9naWNhbCwgIkNTU0xvZ2ljYWxFbmFibGVkIiwgdGVzdEZl
YXR1cmVzLmludGVybmFsRGVidWdGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVu
YWJsZUxpbmVIZWlnaHRVbml0cywgIkxpbmVIZWlnaHRVbml0c0VuYWJsZWQiLCB0ZXN0RmVhdHVy
ZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxl
U2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllcywgInNlbGVjdGlvbkFjcm9zc1NoYWRvd0Jv
dW5kYXJpZXNFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmludGVybmFsRGVidWdGZWF0dXJlcyk7Ci0g
ICAgc2V0VmFsdWVJZlNldEluTWFwKGxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25F
bmFibGVkLCAiTGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQiLCB0ZXN0
RmVhdHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKTsKLQotICAgIHNldFZhbHVlSWZTZXRJbk1h
cChhZENsaWNrQXR0cmlidXRpb25FbmFibGVkLCAiQWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCIs
IHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldElu
TWFwKGVuYWJsZUFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHQsICJBc3BlY3RSYXRp
b09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50
YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUFzeW5jQ2xpcGJvYXJk
QVBJLCAiQXN5bmNDbGlwYm9hcmRBUElFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRh
bEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQ1NTT01WaWV3U21vb3Ro
U2Nyb2xsaW5nLCAiQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCIsIHRlc3RGZWF0dXJl
cy5leHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUNv
bnRhY3RQaWNrZXJBUEksICJDb250YWN0UGlja2VyQVBJRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5l
eHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUNvcmVN
YXRoTUwsICJDb3JlTWF0aE1MRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0
dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZVJlcXVlc3RJZGxlQ2FsbGJhY2ss
ICJSZXF1ZXN0SWRsZUNhbGxiYWNrRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxG
ZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZVJlc2l6ZU9ic2VydmVyLCAi
UmVzaXplT2JzZXJ2ZXJFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVz
KTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlV2ViR1BVLCAiV2ViR1BVRW5hYmxlZCIs
IHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7CisgICAgaWYgKGl0ICE9IG1hcC5l
bmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7CisgICAgcmV0dXJuIGRlZmF1bHRWYWx1
ZTsKK30KKworYm9vbCBUZXN0T3B0aW9uczo6Ym9vbFRlc3RSdW5uZXJGZWF0dXJlVmFsdWUoc3Rk
OjpzdHJpbmcga2V5LCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gZmVh
dHVyZVZhbHVlKGtleSwgZGVmYXVsdFZhbHVlLCBtX2ZlYXR1cmVzLmJvb2xUZXN0UnVubmVyRmVh
dHVyZXMpOwogfQogCi1ib29sIFRlc3RPcHRpb25zOjp3ZWJWaWV3SXNDb21wYXRpYmxlV2l0aE9w
dGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmIG90aGVyKSBjb25zdAorc3RkOjpzdHJpbmcgVGVzdE9w
dGlvbnM6OnN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlVmFsdWUoc3RkOjpzdHJpbmcga2V5LCBzdGQ6
OnN0cmluZyBkZWZhdWx0VmFsdWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG90aGVyLmxheWVyQmFj
a2VkV2ViVmlldyA9PSBsYXllckJhY2tlZFdlYlZpZXcKLSAgICAgICAgJiYgb3RoZXIuanNjT3B0
aW9ucyA9PSBqc2NPcHRpb25zOworICAgIHJldHVybiBmZWF0dXJlVmFsdWUoa2V5LCBkZWZhdWx0
VmFsdWUsIG1fZmVhdHVyZXMuc3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVzKTsKIH0KIAogfQpJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw1MyAr
MzEsMzggQEAKIAogbmFtZXNwYWNlIFdUUiB7CiAKLXN0cnVjdCBUZXN0T3B0aW9ucyB7Ci0gICAg
Ly8gRklYTUU6IFJlbW92ZSB0aGVzZSBhbmQgcmVwbGFjZSB3aXRoIGFjY2VzcyB0byBUZXN0RmVh
dHVyZXMgc2V0LgotICAgIC8vIFdlYiBQcmVmZXJlbmNlcwotICAgIGJvb2wgYWxsb3dDcm9zc09y
aWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMgeyBmYWxzZSB9OwotICAgIGJvb2wg
YWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyB7IHRydWUgfTsKLSAgICBib29sIGVuYWJsZUFj
Y2VsZXJhdGVkRHJhd2luZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVBdHRhY2htZW50RWxl
bWVudCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVCYWNrRm9yd2FyZENhY2hlIHsgZmFsc2Ug
fTsKLSAgICBib29sIGVuYWJsZUNvbG9yRmlsdGVyIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJs
ZUluc3BlY3RvckFkZGl0aW9ucyB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVJbnRlcnNlY3Rp
b25PYnNlcnZlciB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVLZXlnZW5FbGVtZW50IHsgZmFs
c2UgfTsKLSAgICBib29sIGVuYWJsZU1lbnVJdGVtRWxlbWVudCB7IGZhbHNlIH07Ci0gICAgYm9v
bCBlbmFibGVNb2Rlcm5NZWRpYUNvbnRyb2xzIHsgdHJ1ZSB9OwotCi0gICAgLy8gRklYTUU6IFJl
bW92ZSB0aGVzZSBhbmQgcmVwbGFjZSB3aXRoIGFjY2VzcyB0byBUZXN0RmVhdHVyZXMgc2V0Lgot
ICAgIC8vIEludGVybmFsIEZlYXR1cmVzCi0gICAgYm9vbCBlbmFibGVDU1NMb2dpY2FsIHsgZmFs
c2UgfTsKLSAgICBib29sIGVuYWJsZUxpbmVIZWlnaHRVbml0cyB7IGZhbHNlIH07Ci0gICAgYm9v
bCBlbmFibGVTZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzIHsgdHJ1ZSB9OwotICAgIGJv
b2wgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQgeyB0cnVlIH07Ci0K
LSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZXNlIGFuZCByZXBsYWNlIHdpdGggYWNjZXNzIHRvIFRl
c3RGZWF0dXJlcyBzZXQuCi0gICAgLy8gRXhwZXJpbWVudGFsIEZlYXR1cmVzCi0gICAgYm9vbCBh
ZENsaWNrQXR0cmlidXRpb25FbmFibGVkIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUFzcGVj
dFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHQgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxl
QXN5bmNDbGlwYm9hcmRBUEkgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQ1NTT01WaWV3U21v
b3RoU2Nyb2xsaW5nIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUNvbnRhY3RQaWNrZXJBUEkg
eyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQ29yZU1hdGhNTCB7IGZhbHNlIH07Ci0gICAgYm9v
bCBlbmFibGVSZXF1ZXN0SWRsZUNhbGxiYWNrIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZVJl
c2l6ZU9ic2VydmVyIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZVdlYkdQVSB7IGZhbHNlIH07
CitjbGFzcyBUZXN0T3B0aW9ucyB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFRlc3RGZWF0
dXJlcyYgZGVmYXVsdHMoKTsKKyAgICBzdGF0aWMgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0
ZDo6c3RyaW5nLCBUZXN0SGVhZGVyS2V5VHlwZT4mIGtleVR5cGVNYXBwaW5nKCk7CiAKLSAgICAv
LyBUZXN0IFJ1bm5lciBTcGVjaWZpYyBGZWF0dXJlcwotICAgIGJvb2wgZHVtcEpTQ29uc29sZUxv
Z0luU3RkRXJyIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlv
bkxvYWQgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlV2ViU1FMIHsgdHJ1ZSB9OwotICAgIGJv
b2wgbGF5ZXJCYWNrZWRXZWJWaWV3IHsgZmFsc2UgfTsKLSAgICBib29sIHVzZUVwaGVtZXJhbFNl
c3Npb24geyBmYWxzZSB9OwotICAgIHN0ZDo6c3RyaW5nIGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFn
ZVR5cGVzOwotICAgIHN0ZDo6c3RyaW5nIGpzY09wdGlvbnM7CisgICAgZXhwbGljaXQgVGVzdE9w
dGlvbnMoVGVzdEZlYXR1cmVzIGZlYXR1cmVzKQorICAgICAgICA6IG1fZmVhdHVyZXMoc3RkOjpt
b3ZlKGZlYXR1cmVzKSkKKyAgICB7CisgICAgfQogCi0gICAgZXhwbGljaXQgVGVzdE9wdGlvbnMo
VGVzdEZlYXR1cmVzKTsKICAgICBib29sIHdlYlZpZXdJc0NvbXBhdGlibGVXaXRoT3B0aW9ucyhj
b25zdCBUZXN0T3B0aW9ucyYpIGNvbnN0OwotICAgIAotICAgIHN0YXRpYyBjb25zdCBzdGQ6OnVu
b3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFRlc3RIZWFkZXJLZXlUeXBlPiYga2V5VHlwZU1hcHBp
bmcoKTsKKworICAgIC8vIFRlc3QgUnVubmVyIFNwZWNpZmljIEZlYXR1cmVzCisgICAgYm9vbCBk
dW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoKSBjb25zdCB7IHJldHVybiBib29sVGVzdFJ1bm5lckZl
YXR1cmVWYWx1ZSgiZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIiwgZmFsc2UpOyB9CisgICAgYm9v
bCBlbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkKCkgY29uc3QgeyByZXR1cm4gYm9vbFRl
c3RSdW5uZXJGZWF0dXJlVmFsdWUoImVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQiLCBm
YWxzZSk7IH0KKyAgICBib29sIGxheWVyQmFja2VkV2ViVmlldygpIGNvbnN0IHsgcmV0dXJuIGJv
b2xUZXN0UnVubmVyRmVhdHVyZVZhbHVlKCJsYXllckJhY2tlZFdlYlZpZXciLCBmYWxzZSk7IH0K
KyAgICBib29sIHVzZUVwaGVtZXJhbFNlc3Npb24oKSBjb25zdCB7IHJldHVybiBib29sVGVzdFJ1
bm5lckZlYXR1cmVWYWx1ZSgidXNlRXBoZW1lcmFsU2Vzc2lvbiIsIGZhbHNlKTsgfQorICAgIHN0
ZDo6c3RyaW5nIGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzKCkgY29uc3QgeyByZXR1cm4g
c3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZSgiYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlw
ZXMiLCB7IH0pOyB9CisgICAgc3RkOjpzdHJpbmcganNjT3B0aW9ucygpIGNvbnN0IHsgcmV0dXJu
IHN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlVmFsdWUoImpzY09wdGlvbnMiLCB7IH0pOyB9CisKKyAg
ICBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIGJvb2w+JiBib29sV2ViUHJl
ZmVyZW5jZUZlYXR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcy5ib29sV2ViUHJlZmVy
ZW5jZUZlYXR1cmVzOyB9CisgICAgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5n
LCBkb3VibGU+JiBkb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBt
X2ZlYXR1cmVzLmRvdWJsZVdlYlByZWZlcmVuY2VGZWF0dXJlczsgfQorICAgIGNvbnN0IHN0ZDo6
dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgdWludDMyX3Q+JiB1aW50MzJXZWJQcmVmZXJlbmNl
RmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzLnVpbnQzMldlYlByZWZlcmVuY2VG
ZWF0dXJlczsgfQorICAgIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgc3Rk
OjpzdHJpbmc+JiBzdHJpbmdXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBt
X2ZlYXR1cmVzLnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlczsgfQorCisgICAgc3RhdGljIHN0
ZDo6c3RyaW5nIHRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShjb25zdCBzdGQ6OnN0cmluZyYp
OworCitwcml2YXRlOgorICAgIGJvb2wgYm9vbFRlc3RSdW5uZXJGZWF0dXJlVmFsdWUoc3RkOjpz
dHJpbmcga2V5LCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3Q7CisgICAgc3RkOjpzdHJpbmcgc3Ry
aW5nVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZShzdGQ6OnN0cmluZyBrZXksIHN0ZDo6c3RyaW5nIGRl
ZmF1bHRWYWx1ZSkgY29uc3Q7CisKKyAgICBUZXN0RmVhdHVyZXMgbV9mZWF0dXJlczsKIH07CiAK
IH0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJl
bmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjY4NjQ4KQorKysg
VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSw3IEBACiAJCTVEQjlBQzlFMEY3MjJD
MzYwMDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyNzAwLnR0ZiBpbiBDb3B5IEZvbnQgRmls
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc1RjA5NzcwREFDM0NCNjAw
QzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXI3MDAudHRmICovOyB9OwogCQk1REI5QUM5RjBG
NzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjgwMC50dGYgaW4gQ29weSBGb250
IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NUYwOTc4MERBQzND
QjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyODAwLnR0ZiAqLzsgfTsKIAkJNURCOUFD
QTAwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktpdFdlaWdodFdhdGNoZXI5MDAudHRmIGluIENvcHkg
Rm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVGMDk3OTBE
QUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjkwMC50dGYgKi87IH07CisJCTdD
NEYzMDQwMjUzQjk3MEYwMDMwNTQ1OCAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2Fj
eUtleU1hcHBpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0M0RjMwM0YyNTNCODM2OTAwMzA1NDU4IC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkV2Vi
S2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgKi87IH07CiAJCTdDRkY5QkJGMjUzM0JCMjQwMDA4MDA5
RiAvKiBUZXN0RmVhdHVyZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0NGRjlCQkUyNTMzQkIyNDAwMDgwMDlGIC8qIFRlc3RGZWF0dXJlcy5jcHAg
Ki87IH07CiAJCTdDRkY5QkMyMjUzM0JDMTYwMDA4MDA5RiAvKiBUZXN0Q29tbWFuZC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0ZGOUJDMTI1MzNC
QzE2MDAwODAwOUYgLyogVGVzdENvbW1hbmQuY3BwICovOyB9OwogCQk4MDA0NUFFRTE0NzcxOEU3
MDA4MjkwQTggLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MDA0NUFFQzE0NzcxOEU3MDA4
MjkwQTggLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gKi87IH07CkBAIC0z
MzMsOCArMzM0LDEyIEBACiAJCTdDNDQ2OTdGMjUzNzdBMDIwMDI0MjkwQSAvKiBUZXN0T3B0aW9u
c0dlbmVyYXRlZEtleXMuaC5lcmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzQ0Njk4MDI1Mzc3QTAyMDAyNDI5MEEg
LyogY2hlY2steGNmaWxlbGlzdHMuc2ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5zaDsgcGF0aCA9ICJjaGVjay14Y2ZpbGVsaXN0
cy5zaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNDQ2OTgxMjUzNzdBMDIwMDI0
MjkwQSAvKiBnZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2ggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5zaDsgcGF0aCA9ICJnZW5l
cmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2giOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oOyBwYXRoID0gVGVzdE9wdGlv
bnNHZW5lcmF0ZWRLZXlzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNDQ2OTg1
MjUzNzdFNTIwMDI0MjkwQSAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdDNEYzMDNGMjUzQjgzNjkwMDMwNTQ1OCAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdl
YktpdExlZ2FjeUtleU1hcHBpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0M5RTI1MEIyNTNCNzk0QTAwNDEzMDE4IC8qIFRlc3RPcHRpb25zR2VuZXJhdGVk
V2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVk
V2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3Q0JCQzMyMjFEREZDRjlBMDA3ODZCOUQgLyogVGVzdE9wdGlvbnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdE9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0NDQkE1MUQyNTNCQjlEMzAwQkIzMkMxIC8qIERlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnhjZmlsZWxpc3Q7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDQ0JBNTFFMjUzQkI5RDMw
MEJCMzJDMSAvKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNmaWxlbGlzdDsgcGF0
aCA9ICJEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdDRkY5QkJEMjUzM0JCMjQwMDA4MDA5RiAvKiBUZXN0RmVhdHVyZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGVzdEZlYXR1cmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDRkY5QkJFMjUzM0JCMjQwMDA4MDA5RiAvKiBUZXN0RmVhdHVyZXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVGVzdEZlYXR1cmVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0NGRjlCQzAyNTMzQkMxNjAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRlc3RDb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDEsNiAr
NTA2LDggQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMEYxOEU2
RjExRDZCOUM2NDAwMjdFNTQ3IC8qIERlcml2ZWRTb3VyY2VzLm1ha2UgKi8sCisJCQkJN0NDQkE1
MUQyNTNCQjlEMzAwQkIzMkMxIC8qIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgKi8s
CisJCQkJN0NDQkE1MUUyNTNCQjlEMzAwQkIzMkMxIC8qIERlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0ICovLAogCQkJCTdDNDQ2OTgyMjUzNzdDMzQwMDI0MjkwQSAvKiBEZXJpdmVkIFNv
dXJjZXMgKi8sCiAJCQkJMzE0OEEwNjUxRTZGOTBGNDAwRDNCMzE2IC8qIFRlc3RSdW5uZXJTaGFy
ZWQgKi8sCiAJCQkJMEYxOEU2RTcxRDZCOUJGNTAwMjdFNTQ3IC8qIFVJU2NyaXB0Q29udGV4dCAq
LywKQEAgLTc3MCw2ICs3NzcsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKIAkJCQk3QzQ0Njk3RjI1Mzc3QTAyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRL
ZXlzLmguZXJiICovLAorCQkJCTdDOUUyNTBCMjUzQjc5NEEwMDQxMzAxOCAvKiBUZXN0T3B0aW9u
c0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYiAqLywKIAkJCSk7CiAJCQlw
YXRoID0gUHJlZmVyZW5jZXNUZW1wbGF0ZXM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpA
QCAtNzc4LDYgKzc4Niw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAog
CQkJCTdDNDQ2OTg1MjUzNzdFNTIwMDI0MjkwQSAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMu
aCAqLywKKwkJCQk3QzRGMzAzRjI1M0I4MzY5MDAzMDU0NTggLyogVGVzdE9wdGlvbnNHZW5lcmF0
ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAqLywKIAkJCSk7CiAJCQluYW1lID0gIkRlcml2
ZWQgU291cmNlcyI7CiAJCQlwYXRoID0gRGVyaXZlZFNvdXJjZXMvRHVtcFJlbmRlclRyZWU7CkBA
IC0xMjkxLDYgKzEzMDAsNyBAQAogCQkJCTdDRkY5QkMyMjUzM0JDMTYwMDA4MDA5RiAvKiBUZXN0
Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0ZGOUJCRjI1MzNCQjI0MDAwODAwOUYg
LyogVGVzdEZlYXR1cmVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzMEEyMUY4MjA1MUQ4QzQw
MDA4RkY0MiAvKiBUZXN0T3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QzRGMzA0MDI1
M0I5NzBGMDAzMDU0NTggLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBw
aW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMDEzMURBMEM5NzcyMDEwMDg3MzE3RCAvKiBU
ZXN0UnVubmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQTE4QjI0MEM5QjAxNEIwMDExNDM2
OSAvKiBUZXN0UnVubmVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjRENDIzNjExREQ1MDQ4
MjAwNjc4MjkwIC8qIFRleHRJbnB1dENvbnRyb2xsZXJJT1MubSBpbiBTb3VyY2VzICovLApJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0
T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rl
c3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiCShub25leGlz
dGVudCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0
ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIDwlPSBAd2FybmluZyAlPgorICoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0T3B0aW9ucy5oIgor
CituYW1lc3BhY2UgV1RSIHsKKworc3RkOjpzdHJpbmcgVGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVn
YWN5UHJlZmVyZW5jZUtleShjb25zdCBzdGQ6OnN0cmluZyYgd2ViUHJlZmVyZW5jZXNLZXkpCit7
CisgICAgc3RhdGljIHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+
IG5vblN0YW5kYXJkS2V5cyA9IHsKKzwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzLnNlbGVj
dCB7IHxwfCBwLm9wdHNbIndlYktpdExlZ2FjeVByZWZlcmVuY2VLZXkiXSB9IGRvIC0lPgorICAg
ICAgICB7ICI8JT0gQHByZWYubmFtZSAlPiIsICI8JT0gQHByZWYucHJlZmVyZW5jZUtleSAlPiIg
fSwgXAorPCUtIGVuZCAtJT4KKyAgICB9OworCisgICAgYXV0byBpdCA9IG5vblN0YW5kYXJkS2V5
cy5maW5kKHdlYlByZWZlcmVuY2VzS2V5KTsKKyAgICBpZiAoaXQgIT0gbm9uU3RhbmRhcmRLZXlz
LmVuZCgpKQorICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKKworICAgIHJldHVybiAiV2ViS2l0
IiArIHdlYlByZWZlcmVuY2VzS2V5OworfQorCit9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMSw2
ICsxMzEsMTIgQEAgZXh0ZXJuICJDIiB7CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKK3N0YXRp
YyBSZXRhaW5QdHI8TlNTdHJpbmc+IHRvTlMoY29uc3Qgc3RkOjpzdHJpbmcmIHN0cmluZykKK3sK
KyAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aFVURjhTdHJpbmc6
c3RyaW5nLmNfc3RyKCldKTsKK30KKworCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBAaW50
ZXJmYWNlIER1bXBSZW5kZXJUcmVlQXBwbGljYXRpb24gOiBOU0FwcGxpY2F0aW9uCiBAZW5kCkBA
IC02NzIsNiArNjc4LDEwIEBAIFdlYlZpZXcgKmNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5k
b3cKICAgICBbd2ViVmlldyBzZXRHcm91cE5hbWU6QCJvcmcud2Via2l0LkR1bXBSZW5kZXJUcmVl
Il07CiAjZW5kaWYKIAorICAgIFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtbV2ViUHJl
ZmVyZW5jZXMgYWxsb2NdIGluaXRdOworICAgIFtwcmVmZXJlbmNlcyBzZXRBdXRvc2F2ZXM6Tk9d
OworICAgIFt3ZWJWaWV3IHNldFByZWZlcmVuY2VzOnByZWZlcmVuY2VzXTsKKwogICAgIFt3ZWJW
aWV3IHNldFVJRGVsZWdhdGU6dWlEZWxlZ2F0ZV07CiAgICAgW3dlYlZpZXcgc2V0RnJhbWVMb2Fk
RGVsZWdhdGU6ZnJhbWVMb2FkRGVsZWdhdGVdOwogICAgIFt3ZWJWaWV3IHNldEVkaXRpbmdEZWxl
Z2F0ZTplZGl0aW5nRGVsZWdhdGVdOwpAQCAtNjg1LDggKzY5NSw2IEBAIFdlYlZpZXcgKmNyZWF0
ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3cKICAgICBbV2ViVmlldyByZWdpc3RlclVSTFNjaGVt
ZUFzTG9jYWw6QCJmZWVkcyJdOwogICAgIFtXZWJWaWV3IHJlZ2lzdGVyVVJMU2NoZW1lQXNMb2Nh
bDpAImZlZWRzZWFyY2giXTsKIAotICAgIFtbd2ViVmlldyBwcmVmZXJlbmNlc10gX3NldE1lZGlh
UmVjb3JkZXJFbmFibGVkOllFU107Ci0KICNpZiBQTEFURk9STShNQUMpCiAgICAgW3dlYlZpZXcg
c2V0V2luZG93T2NjbHVzaW9uRGV0ZWN0aW9uRW5hYmxlZDpOT107CiAgICAgW1dlYlZpZXcgX3Nl
dEZvbnRBbGxvd0xpc3Q6Zm9udEFsbG93TGlzdCgpXTsKQEAgLTg0NCw5ICs4NTIsOCBAQCBzdGF0
aWMgdm9pZCBlbmFibGVFeHBlcmltZW50YWxGZWF0dXJlcyhXCiB9CiAKIC8vIENhbGxlZCBiZWZv
cmUgZWFjaCB0ZXN0Lgotc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVu
dFZhbHVlcygpCitzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFs
dWVzKFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcykKIHsKLSAgICBXZWJQcmVmZXJlbmNlcyAq
cHJlZmVyZW5jZXMgPSBbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc107CiAgICAg
ZW5hYmxlRXhwZXJpbWVudGFsRmVhdHVyZXMocHJlZmVyZW5jZXMpOwogCiAgICAgW3ByZWZlcmVu
Y2VzIHNldE5lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrOiBOT107CkBAIC05MDIs
NiArOTA5LDcgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdAogICAg
IH0gZWxzZQogICAgICAgICBbcHJlZmVyZW5jZXMgc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkOk5P
XTsKIAorICAgIFtwcmVmZXJlbmNlcyBzZXRJbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5
c0lubGluZUF0dHJpYnV0ZTpOT107CiAgICAgW3ByZWZlcmVuY2VzIHNldE1lZGlhUGxheWJhY2tB
bGxvd3NJbmxpbmU6WUVTXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0TWVkaWFQbGF5YmFja1JlcXVp
cmVzVXNlckdlc3R1cmU6Tk9dOwogICAgIFtwcmVmZXJlbmNlcyBzZXRWaWRlb1BsYXliYWNrUmVx
dWlyZXNVc2VyR2VzdHVyZTpOT107CkBAIC05NjAsNiArOTY4LDcgQEAgc3RhdGljIHZvaWQgcmVz
ZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdAogICAgIHByZWZlcmVuY2VzLm1lZGlhQ2FwYWJpbGl0
aWVzRW5hYmxlZCA9IFlFUzsKIAogICAgIHByZWZlcmVuY2VzLnNlbGVjdGlvbkFjcm9zc1NoYWRv
d0JvdW5kYXJpZXNFbmFibGVkID0gWUVTOworICAgIHByZWZlcmVuY2VzLmZ1bGxTY3JlZW5FbmFi
bGVkID0gWUVTOwogCiAgICAgW3ByZWZlcmVuY2VzIHNldFdlYlNRTEVuYWJsZWQ6WUVTXTsKIApA
QCAtOTY3LDM0ICs5NzYsMjEgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29u
c2lzdAogICAgIFtXZWJQcmVmZXJlbmNlcyBfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9u
Q29va2llQWNjZXB0UG9saWN5Ok5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRv
Y3VtZW50RG9tYWluXTsKIH0KIAotc3RhdGljIHZvaWQgc2V0V2ViUHJlZmVyZW5jZXNGb3JUZXN0
T3B0aW9ucyhjb25zdCBXVFI6OlRlc3RPcHRpb25zJiBvcHRpb25zKQorc3RhdGljIHZvaWQgc2V0
V2ViUHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9ucyhXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMs
IGNvbnN0IFdUUjo6VGVzdE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgV2ViUHJlZmVyZW5jZXMg
KnByZWZlcmVuY2VzID0gW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdOworICAg
IHByZWZlcmVuY2VzLnByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBvcHRpb25zLnVzZUVwaGVtZXJh
bFNlc3Npb24oKTsKKworICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9u
cy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0
Qm9vbFByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnZhbHVlIGZvcktleTp0b05TKFdUUjo6
VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShrZXkpKS5nZXQoKV07CisK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuZG91YmxlV2ViUHJl
ZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0RG91YmxlUHJlZmVy
ZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dmFsdWUgZm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9u
czo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGtleSkpLmdldCgpXTsKIAotICAgIHByZWZl
cmVuY2VzLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlQXR0YWNobWVu
dEVsZW1lbnQ7Ci0gICAgcHJlZmVyZW5jZXMuYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCA9IG9w
dGlvbnMuZW5hYmxlQWNjZWxlcmF0ZWREcmF3aW5nOwotICAgIHByZWZlcmVuY2VzLm1lbnVJdGVt
RWxlbWVudEVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZU1lbnVJdGVtRWxlbWVudDsKLSAgICBwcmVm
ZXJlbmNlcy5rZXlnZW5FbGVtZW50RW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlS2V5Z2VuRWxlbWVu
dDsKLSAgICBwcmVmZXJlbmNlcy5tb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCA9IG9wdGlvbnMu
ZW5hYmxlTW9kZXJuTWVkaWFDb250cm9sczsKLSAgICBwcmVmZXJlbmNlcy5pbnNwZWN0b3JBZGRp
dGlvbnNFbmFibGVkID0gb3B0aW9ucy5lbmFibGVJbnNwZWN0b3JBZGRpdGlvbnM7Ci0gICAgcHJl
ZmVyZW5jZXMuYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMg
PSBvcHRpb25zLmFsbG93Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxz
OwotICAgIHByZWZlcmVuY2VzLmNvbG9yRmlsdGVyRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlQ29s
b3JGaWx0ZXI7Ci0gICAgcHJlZmVyZW5jZXMuc2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmll
c0VuYWJsZWQgPSBvcHRpb25zLmVuYWJsZVNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXM7
Ci0gICAgcHJlZmVyZW5jZXMud2ViR1BVRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlV2ViR1BVOwot
ICAgIHByZWZlcmVuY2VzLkNTU0xvZ2ljYWxFbmFibGVkID0gb3B0aW9ucy5lbmFibGVDU1NMb2dp
Y2FsOwotICAgIHByZWZlcmVuY2VzLmxpbmVIZWlnaHRVbml0c0VuYWJsZWQgPSBvcHRpb25zLmVu
YWJsZUxpbmVIZWlnaHRVbml0czsKLSAgICBwcmVmZXJlbmNlcy5hZENsaWNrQXR0cmlidXRpb25F
bmFibGVkID0gb3B0aW9ucy5hZENsaWNrQXR0cmlidXRpb25FbmFibGVkOwotICAgIHByZWZlcmVu
Y2VzLnJlc2l6ZU9ic2VydmVyRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlUmVzaXplT2JzZXJ2ZXI7
Ci0gICAgcHJlZmVyZW5jZXMuQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCA9IG9wdGlv
bnMuZW5hYmxlQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nOwotICAgIHByZWZlcmVuY2VzLmNvcmVN
YXRoTUxFbmFibGVkID0gb3B0aW9ucy5lbmFibGVDb3JlTWF0aE1MOwotICAgIHByZWZlcmVuY2Vz
LnJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkID0gb3B0aW9ucy5lbmFibGVSZXF1ZXN0SWRsZUNh
bGxiYWNrOwotICAgIHByZWZlcmVuY2VzLmFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxlZCA9IG9wdGlv
bnMuZW5hYmxlQXN5bmNDbGlwYm9hcmRBUEk7Ci0gICAgcHJlZmVyZW5jZXMucHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCA9IG9wdGlvbnMudXNlRXBoZW1lcmFsU2Vzc2lvbjsKLSAgICBwcmVmZXJlbmNl
cy51c2VzUGFnZUNhY2hlID0gb3B0aW9ucy5lbmFibGVCYWNrRm9yd2FyZENhY2hlOwotICAgIHBy
ZWZlcmVuY2VzLmxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkID0gb3B0
aW9ucy5sYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZDsKLSAgICBwcmVm
ZXJlbmNlcy5hc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZCA9IG9wdGlv
bnMuZW5hYmxlQXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodDsKLSAgICBwcmVmZXJl
bmNlcy5hbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzID0gb3B0aW9ucy5hbGxvd1RvcE5hdmln
YXRpb25Ub0RhdGFVUkxzOwotICAgIHByZWZlcmVuY2VzLmNvbnRhY3RQaWNrZXJBUElFbmFibGVk
ID0gb3B0aW9ucy5lbmFibGVDb250YWN0UGlja2VyQVBJOworICAgIGZvciAoY29uc3QgYXV0byYg
W2tleSwgdmFsdWVdIDogb3B0aW9ucy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAg
ICAgICAgW3ByZWZlcmVuY2VzIF9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1
ZTp2YWx1ZSBmb3JLZXk6dG9OUyhXVFI6OlRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZl
cmVuY2VLZXkoa2V5KSkuZ2V0KCldOworCisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1
ZV0gOiBvcHRpb25zLnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcygpKQorICAgICAgICBbcHJl
ZmVyZW5jZXMgX3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnRvTlModmFs
dWUpLmdldCgpIGZvcktleTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJl
ZmVyZW5jZUtleShrZXkpKS5nZXQoKV07CiB9CiAKIC8vIENhbGxlZCBvbmNlIG9uIER1bXBSZW5k
ZXJUcmVlIHN0YXJ0dXAuCkBAIC0xMDE4LDkgKzEwMTQsNiBAQCBzdGF0aWMgdm9pZCBzZXREZWZh
dWx0c1RvQ29uc2lzdGVudFZhbHVlCiAgICAgICAgIEAiQXBwbGVPdGhlckhpZ2hsaWdodENvbG9y
IjpAIjAuNTAwMDAwIDAuNTAwMDAwIDAuNTAwMDAwIiwKICAgICAgICAgQCJBcHBsZUxhbmd1YWdl
cyI6IEBbIEAiZW4iIF0sCiAgICAgICAgIFdlYktpdEVuYWJsZUZ1bGxEb2N1bWVudFRlYXJkb3du
UHJlZmVyZW5jZUtleTogQFlFUywKLSAgICAgICAgV2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVm
ZXJlbmNlS2V5OiBAWUVTLAotICAgICAgICBXZWJLaXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNr
UHJlZmVyZW5jZUtleTogQFlFUywKLSAgICAgICAgV2ViS2l0SW5saW5lTWVkaWFQbGF5YmFja1Jl
cXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGVLZXk6IEBOTywKICAgICAgICAgQCJVc2VXZWJLaXRX
ZWJJbnNwZWN0b3IiOiBAWUVTLAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBA
Ik5TUHJlZmVycmVkU3BlbGxTZXJ2ZXJMYW5ndWFnZSI6IEAiZW5fVVMiLApAQCAtMTgyNiw5ICsx
ODE5LDkgQEAgc3RhdGljIHZvaWQgc2V0SlNDT3B0aW9ucyhjb25zdCBXVFI6OlRlcwogICAgICAg
ICBzYXZlZE9wdGlvbnMuY2xlYXIoKTsKICAgICB9CiAKLSAgICBpZiAob3B0aW9ucy5qc2NPcHRp
b25zLmxlbmd0aCgpKSB7CisgICAgaWYgKCFvcHRpb25zLmpzY09wdGlvbnMoKS5lbXB0eSgpKSB7
CiAgICAgICAgIEpTQzo6T3B0aW9uczo6ZHVtcEFsbE9wdGlvbnNJbkFMaW5lKHNhdmVkT3B0aW9u
cyk7Ci0gICAgICAgIEpTQzo6T3B0aW9uczo6c2V0T3B0aW9ucyhvcHRpb25zLmpzY09wdGlvbnMu
Y19zdHIoKSk7CisgICAgICAgIEpTQzo6T3B0aW9uczo6c2V0T3B0aW9ucyhvcHRpb25zLmpzY09w
dGlvbnMoKS5jX3N0cigpKTsKICAgICB9CiB9CiAKQEAgLTE4MzksNiArMTgzMiwxMCBAQCBzdGF0
aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0CiAKICAgICBXZWJWaWV3ICp3ZWJW
aWV3ID0gW21haW5GcmFtZSB3ZWJWaWV3XTsKIAorICAgIFdlYlByZWZlcmVuY2VzICpwcmVmZXJl
bmNlcyA9IFtbV2ViUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdOworICAgIFtwcmVmZXJlbmNlcyBz
ZXRBdXRvc2F2ZXM6Tk9dOworICAgIFt3ZWJWaWV3IHNldFByZWZlcmVuY2VzOnByZWZlcmVuY2Vz
XTsKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYWRqdXN0V2ViRG9jdW1lbnRGb3JT
dGFuZGFyZFZpZXdwb3J0KGdXZWJCcm93c2VyVmlldywgZ1dlYlNjcm9sbFZpZXcpOwogICAgIFt3
ZWJWaWV3IF9zZXRBbGxvd3NNZXNzYWdpbmc6WUVTXTsKQEAgLTE4NjcsMTAgKzE4NjQsMTAgQEAg
c3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdAogCiAgICAgW1dlYkNhY2hl
IGNsZWFyQ2FjaGVkQ3JlZGVudGlhbHNdOwogCi0gICAgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29u
c2lzdGVudFZhbHVlcygpOwotICAgIHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMob3B0
aW9ucyk7CisgICAgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhwcmVmZXJl
bmNlcyk7CisgICAgc2V0V2ViUHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9ucyhwcmVmZXJlbmNlcywg
b3B0aW9ucyk7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFt3ZWJWaWV3IHNldFdhbnRzTGF5ZXI6
b3B0aW9ucy5sYXllckJhY2tlZFdlYlZpZXddOworICAgIFt3ZWJWaWV3IHNldFdhbnRzTGF5ZXI6
b3B0aW9ucy5sYXllckJhY2tlZFdlYlZpZXcoKV07CiAjZW5kaWYKIAogICAgIFRlc3RSdW5uZXI6
OnNldFNlcmlhbGl6ZUhUVFBMb2FkcyhmYWxzZSk7CkBAIC0xOTE0LDcgKzE5MTEsNyBAQCBzdGF0
aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0CiAgICAgW1tOU1Bhc3RlYm9hcmQg
Z2VuZXJhbFBhc3RlYm9hcmRdIGRlY2xhcmVUeXBlczpAW05TU3RyaW5nUGJvYXJkVHlwZV0gb3du
ZXI6bmlsXTsKICNlbmRpZgogCi0gICAgV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRBZGRpdGlvbmFs
U3VwcG9ydGVkSW1hZ2VUeXBlc0ZvclRlc3Rpbmcob3B0aW9ucy5hZGRpdGlvbmFsU3VwcG9ydGVk
SW1hZ2VUeXBlcy5jX3N0cigpKTsKKyAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldEFkZGl0aW9u
YWxTdXBwb3J0ZWRJbWFnZVR5cGVzRm9yVGVzdGluZyhvcHRpb25zLmFkZGl0aW9uYWxTdXBwb3J0
ZWRJbWFnZVR5cGVzKCkuY19zdHIoKSk7CiAKICAgICBbbWFpbkZyYW1lIF9jbGVhck9wZW5lcl07
CiAKQEAgLTE5NzAsNyArMTk2Nyw3IEBAIHN0YXRpYyBOU1VSTCAqY29tcHV0ZVRlc3RVUkwoTlNT
dHJpbmcgKnAKIAogc3RhdGljIFdUUjo6VGVzdE9wdGlvbnMgdGVzdE9wdGlvbnNGb3JUZXN0KGNv
bnN0IFdUUjo6VGVzdENvbW1hbmQmIGNvbW1hbmQpCiB7Ci0gICAgV1RSOjpUZXN0RmVhdHVyZXMg
ZmVhdHVyZXM7CisgICAgV1RSOjpUZXN0RmVhdHVyZXMgZmVhdHVyZXMgPSBXVFI6OlRlc3RPcHRp
b25zOjpkZWZhdWx0cygpOwogICAgIFdUUjo6bWVyZ2UoZmVhdHVyZXMsIFdUUjo6aGFyZGNvZGVk
RmVhdHVyZXNCYXNlZE9uUGF0aEZvclRlc3QoY29tbWFuZCkpOwogICAgIFdUUjo6bWVyZ2UoZmVh
dHVyZXMsIFdUUjo6ZmVhdHVyZURlZmF1bHRzRnJvbVRlc3RIZWFkZXJGb3JUZXN0KGNvbW1hbmQs
IFdUUjo6VGVzdE9wdGlvbnM6OmtleVR5cGVNYXBwaW5nKCkpKTsKIApAQCAtMjAxNyw3ICsyMDE0
LDcgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIGlucHV0TAogICAgIGdUZXN0
UnVubmVyID0gVGVzdFJ1bm5lcjo6Y3JlYXRlKHRlc3RVUkwsIGNvbW1hbmQuZXhwZWN0ZWRQaXhl
bEhhc2gpOwogICAgIGdUZXN0UnVubmVyLT5zZXRBbGxvd2VkSG9zdHMoYWxsb3dlZEhvc3RzKTsK
ICAgICBnVGVzdFJ1bm5lci0+c2V0Q3VzdG9tVGltZW91dChjb21tYW5kLnRpbWVvdXQubWlsbGlz
ZWNvbmRzKCkpOwotICAgIGdUZXN0UnVubmVyLT5zZXREdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIo
Y29tbWFuZC5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgfHwgb3B0aW9ucy5kdW1wSlNDb25zb2xl
TG9nSW5TdGRFcnIpOworICAgIGdUZXN0UnVubmVyLT5zZXREdW1wSlNDb25zb2xlTG9nSW5TdGRF
cnIoY29tbWFuZC5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgfHwgb3B0aW9ucy5kdW1wSlNDb25z
b2xlTG9nSW5TdGRFcnIoKSk7CiAKICAgICByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZShv
cHRpb25zLCBSZXNldFRpbWU6OkJlZm9yZVRlc3QpOwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3Niwx
NCArNTc2LDE0IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0UGFnZVBhdXNlZChib29sIHBhdXMKIAog
dm9pZCBUZXN0UnVubmVyOjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQoYm9vbCBmbGFnKQogewot
ICAgIFtbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hl
ZXRFbmFibGVkOmZsYWddOworICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10g
c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkOmZsYWddOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNl
dFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYgcGF0aCkKIHsKICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHBhdGhDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgcGF0aCkpOwogICAgIE5TVVJMICp1cmwgPSBbTlNVUkwgVVJMV2l0
aFN0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilwYXRoQ0YuZ2V0KCldOwotICAgIFtbV2ViUHJl
ZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbjp1
cmxdOworICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0VXNlclN0eWxl
U2hlZXRMb2NhdGlvbjp1cmxdOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFZhbHVlRm9yVXNl
cihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBKU1N0cmluZ1Jl
ZiB2YWx1ZSkKQEAgLTYwOSw3ICs2MDksNyBAQCB2b2lkIFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJl
ZmVyZW5jZShKU1N0CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB2YWx1ZUNGID0gYWRvcHRD
RihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB2YWx1ZSkpOwogICAg
IE5TU3RyaW5nICp2YWx1ZU5TID0gKF9fYnJpZGdlIE5TU3RyaW5nICopdmFsdWVDRi5nZXQoKTsK
IAotICAgIFtbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10gX3NldFByZWZlcmVu
Y2VGb3JUZXN0V2l0aFZhbHVlOnZhbHVlTlMgZm9yS2V5OmtleU5TXTsKKyAgICBbW1ttYWluRnJh
bWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIF9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dp
dGhWYWx1ZTp2YWx1ZU5TIGZvcktleTprZXlOU107CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6cmVt
b3ZlQWxsVmlzaXRlZExpbmtzKCkKQEAgLTcwMCw3ICs3MDAsNyBAQCBib29sIFRlc3RSdW5uZXI6
OmZpbmRTdHJpbmcoSlNDb250ZXh0UmVmCiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0Q2FjaGVNb2Rl
bChpbnQgY2FjaGVNb2RlbCkKIHsKLSAgICBbW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVy
ZW5jZXNdIHNldENhY2hlTW9kZWw6KFdlYkNhY2hlTW9kZWwpY2FjaGVNb2RlbF07CisgICAgW1tb
bWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBzZXRDYWNoZU1vZGVsOihXZWJDYWNoZU1v
ZGVsKWNhY2hlTW9kZWxdOwogfQogCiBib29sIFRlc3RSdW5uZXI6OmlzQ29tbWFuZEVuYWJsZWQo
SlNTdHJpbmdSZWYgbmFtZSkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVn
YXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRl
Lm1tCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxl
Z2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCAtICh2b2lkKXJlc2V0V2lu
ZG93T3JpZ2luCiAKIC0gKHZvaWQpcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rpbmc6
KGNvbnN0IFdUUjo6VGVzdE9wdGlvbnMmKW9wdGlvbnMKIHsKLSAgICBtX2VuYWJsZURyYWdEZXN0
aW5hdGlvbkFjdGlvbkxvYWQgPSBvcHRpb25zLmVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxv
YWQ7CisgICAgbV9lbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkID0gb3B0aW9ucy5lbmFi
bGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkKCk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV2Vi
VmlldyAqKXNlbmRlciBzZXRGcmFtZTooTlNSZWN0KWZyYW1lCkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTky
MSwxNyArOTIxLDE2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnJlc2V0UHJlZmVyZW5jZXNUb0MK
ICAgICBwbGF0Zm9ybVJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKTsKIAogICAg
IGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5ib29sV2ViUHJlZmVyZW5j
ZUZlYXR1cmVzKCkpCi0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXkocHJl
ZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOworICAgICAgICBXS1ByZWZlcmVuY2Vz
U2V0Qm9vbFZhbHVlRm9yS2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5
KS5nZXQoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMu
ZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCi0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXRE
b3VibGVWYWx1ZUZvcktleShwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7Cisg
ICAgICAgIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVy
ZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBb
a2V5LCB2YWx1ZV0gOiBvcHRpb25zLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAg
ICAgICBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXkocHJlZmVyZW5jZXMsIHZhbHVl
LCB0b1dLKGtleSkuZ2V0KCkpOworICAgICAgICBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVG
b3JLZXlGb3JUZXN0aW5nKHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKIAog
ICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5zdHJpbmdXZWJQcmVm
ZXJlbmNlRmVhdHVyZXMoKSkKLSAgICAgICAgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9y
S2V5KHByZWZlcmVuY2VzLCB0b1dLKHZhbHVlKS5nZXQoKSwgdG9XSyhrZXkpLmdldCgpKTsKLQor
ICAgICAgICBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXlGb3JUZXN0aW5nKHByZWZl
cmVuY2VzLCB0b1dLKHZhbHVlKS5nZXQoKSwgdG9XSyhrZXkpLmdldCgpKTsKIH0KIAogYm9vbCBU
ZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0
aW9ucyYgb3B0aW9ucywgUmVzZXRTdGFnZSByZXNldFN0YWdlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411693</attachid>
            <date>2020-10-17 18:41:18 -0700</date>
            <delta_ts>2020-10-18 09:19:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201017184117.patch</filename>
            <type>text/plain</type>
            <size>57981</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTE3ICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVu
ZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBXS1ByZWZlcmVuY2Vz
U2V0KlZhbHVlRm9yS2V5IFNQSSB0byBXS1ByZWZlcmVuY2VzU2V0KlZhbHVlRm9yS2V5Rm9yVGVz
dGluZworICAgICAgICB0byBtYWtlIGl0IGNsZWFyIHdoYXQgdGhleSBhcmUgdXNlZCBmb3IgYW5k
IGZvciBjb25zaXN0ZW5jeSB3aXRoIFdlYktpdExlZ2FjeS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29s
VmFsdWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXREb3VibGVW
YWx1ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZh
bHVlRm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFs
dWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVG
b3JLZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9y
S2V5KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktl
eSk6IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJp
dmF0ZS5oOgorCiAyMDIwLTEwLTE2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBJbnRyb2R1Y2UgUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5IHRvIG1hbmFnZSB0aGUgcmVzb3VyY2VzIGluIHRoZSBHUFUgUHJvY2VzcwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5j
cHAJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UHJlZmVyZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCwyMiArNzgsMjIgQEAgdm9pZCBX
S1ByZWZlcmVuY2VzU2V0SW50ZXJuYWxEZWJ1Z0ZlYXR1cgogICAgIHRvSW1wbChwcmVmZXJlbmNl
c1JlZiktPnNldEludGVybmFsRGVidWdGZWF0dXJlRW5hYmxlZEZvcktleSh0b1dURlN0cmluZyhp
bnRlcm5hbERlYnVnRmVhdHVyZUtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2Vz
U2V0Qm9vbFZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wg
dmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZv
cktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1
ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldEJv
b2xWYWx1ZUZvcktleSh0b1dURlN0cmluZyhrZXkpLCB2YWx1ZSk7CiB9CiAKLXZvaWQgV0tQcmVm
ZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIGRvdWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0
RG91YmxlVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIGRvdWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJl
bmNlc1JlZiktPnNldEJvb2xWYWx1ZUZvcktleSh0b1dURlN0cmluZyhrZXkpLCB2YWx1ZSk7CiB9
CiAKLXZvaWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNS
ZWYgcHJlZmVyZW5jZXNSZWYsIHVpbnQzMl90IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCit2b2lk
IFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKIHsK
ICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRVSW50MzJWYWx1ZUZvcktleSh0b1dURlN0
cmluZyhrZXkpLCB2YWx1ZSk7CiB9CiAKLXZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVl
Rm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RyaW5nUmVmIHZhbHVl
LCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktl
eUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYg
dmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKIHsKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5z
ZXRTdHJpbmdWYWx1ZUZvcktleSh0b1dURlN0cmluZyhrZXkpLCB0b1dURlN0cmluZyh2YWx1ZSkp
OwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1Jl
ZlByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NiwxMCArNTYsMTAgQEAgV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1Jlc2V0
QWxsSW50ZQogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldEludGVybmFsRGVidWdGZWF0
dXJlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYsIGJvb2wsIFdLU3RyaW5nUmVmKTsKIAogLy8gVGhl
IGZvbGxvd2luZyBnZW5lcmljIHNldHRlciBmdW5jdGlvbnMgYXJlIG9ubHkgaW50ZW5kZWQgZm9y
IHVzZSBieSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlLgotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJl
bmNlc1NldEJvb2xWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBi
b29sIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNl
c1NldERvdWJsZVZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGRv
dWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKLVdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5j
ZXNTZXRVSW50MzJWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1
aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKLVdLX0VYUE9SVCB2b2lkIFdLUHJlZmVy
ZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVm
LCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VYUE9SVCB2b2lkIFdL
UHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXNSZWYsIGJvb2wgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7CitXS19FWFBPUlQg
dm9pZCBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVy
ZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGRvdWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsK
K1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleUZvclRlc3Rp
bmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3Ry
aW5nUmVmIGtleSk7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVG
b3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RyaW5n
UmVmIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwogCiAvLyBGb3IgVGVzdCBSdW5uZXIgVXNlIG9u
bHkuCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzUmVzZXRUZXN0UnVubmVyT3ZlcnJpZGVz
KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpOwpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMTAtMTcgIFNh
bSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFtUZXN0aW5nXSBDb252ZXJ0
IER1bXBSZW5kZXJUcmVlIHRvIHVzZSBnZW5lcmF0ZWQgdGVzdCBoZWFkZXIgb3B0aW9ucworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3ODgwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIGEgc2V0
IG9mIHNldHRlcnMgdG8gZm9yIER1bXBSZW5kZXJUcmVlIHRvIHVzZSB3aGVuIHNldHRpbmcgcHJl
ZmVyZW5jZXMKKyAgICAgICAgYnkgc3RyaW5nLgorCisgICAgICAgICogV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3N3aXRjaE5ldHdvcmtMb2Fk
ZXJUb05ld1Rlc3RpbmdTZXNzaW9uXSk6CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIF9zZXRD
dXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6XSk6CisgICAgICAg
ICgrW1dlYlByZWZlcmVuY2VzIF9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uXSk6CisgICAgICAg
ICgtW1dlYlByZWZlcmVuY2VzIF9zZXRCb29sUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6
Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0VUludDMyUHJlZmVyZW5j
ZUZvclRlc3RpbmdXaXRoVmFsdWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNl
cyBfc2V0RG91YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6Zm9yS2V5Ol0pOgorICAg
ICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRo
VmFsdWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0UHJlZmVyZW5j
ZUZvclRlc3RXaXRoVmFsdWU6Zm9yS2V5Ol0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlZpZXcv
V2ViUHJlZmVyZW5jZXNQcml2YXRlLmg6CisKIDIwMjAtMTAtMTcgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgogCiAgICAgICAgIENvbnZlcnQgcHJlZmVyZW5jZXMgaW4gV2ViUHJlZmVy
ZW5jZXNQcml2YXRlLmggdG8gdXNlIEBwcm9wZXJ0eSBzeW50YXggdG8gbWFrZSB0aGVtIG1vcmUg
bWFuYWdlYWJsZQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYw
LDI2ICsxNjYwLDYgQEAgKyAodm9pZClfc2V0SUJDcmVhdG9ySUQ6KE5TU3RyaW5nICopc3RyaQog
ICAgIFtvbGQgcmVsZWFzZV07CiB9CiAKLSsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05l
d1Rlc3RpbmdTZXNzaW9uCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBXZWJUaHJl
YWRMb2NrKCk7Ci0jZW5kaWYKLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRv
TmV3VGVzdGluZ1Nlc3Npb24oKTsKLX0KLQotKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vz
c2lvbgotewotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCkuZGVsZXRlQWxsQ29va2llcygpOwotfQotCi0rICh2b2lkKV9zZXRDdXJyZW50TmV0d29y
a0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSlwb2xpY3kKLXsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2ll
U3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCkuY29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsgLy8gV2lsbCBm
YWlsIHdoZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNz
aW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KLSAgICBDRkhUVFBDb29raWVTdG9yYWdl
U2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7Ci19Ci0K
IC0gKEJPT0wpaXNET01QYXN0ZUFsbG93ZWQKIHsKICAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1
ZUZvcktleTpXZWJLaXRET01QYXN0ZUFsbG93ZWRQcmVmZXJlbmNlS2V5XTsKQEAgLTE5NjYsMTEg
KzE5NDYsNiBAQCAtICh2b2lkKXdpbGxBZGRUb1dlYlZpZXcKICAgICArK19wcml2YXRlLT5udW1X
ZWJWaWV3czsKIH0KIAotLSAodm9pZClfc2V0UHJlZmVyZW5jZUZvclRlc3RXaXRoVmFsdWU6KE5T
U3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQotewotICAgIFtzZWxmIF9zZXRT
dHJpbmdWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKLX0KLQogLSAodm9pZClzZXRGdWxsU2NyZWVu
RW5hYmxlZDooQk9PTClmbGFnCiB7CiAgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTpmbGFnIGZvcktl
eTpXZWJLaXRGdWxsU2NyZWVuRW5hYmxlZFByZWZlcmVuY2VLZXldOwpAQCAtMzAxMyw2ICsyOTg4
LDUxIEBAIC0gKHZvaWQpX3NldEVuYWJsZWQ6KEJPT0wpdmFsdWUgZm9yRmVhdHUKIAogQGVuZAog
CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVRlc3RpbmcpCisK
KysgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uCit7CisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBXZWJUaHJlYWRMb2NrKCk7CisjZW5kaWYKKyAgICBO
ZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKK30K
KworKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9s
aWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9saWN5Cit7CisgICAgUmV0YWluUHRyPENG
SFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Np
b25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsKKyAgICBBU1NF
UlQoY29va2llU3RvcmFnZSk7IC8vIFdpbGwgZmFpbCB3aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhh
bmQuCisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVT
dG9yYWdlLmdldCgpLCBwb2xpY3kpOworfQorCisrICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJT
ZXNzaW9uCit7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKS5kZWxldGVBbGxDb29raWVzKCk7Cit9CisKKy0gKHZvaWQpX3NldEJvb2xQcmVmZXJl
bmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTooQk9PTCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5
Cit7CisgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAo
dm9pZClfc2V0VUludDMyUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KHVpbnQzMl90KXZh
bHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2VsZiBfc2V0SW50ZWdlclZhbHVl
OnZhbHVlIGZvcktleTprZXldOworfQorCistICh2b2lkKV9zZXREb3VibGVQcmVmZXJlbmNlRm9y
VGVzdGluZ1dpdGhWYWx1ZTooZG91YmxlKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sK
KyAgICBbc2VsZiBfc2V0RmxvYXRWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAodm9p
ZClfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KE5TU3RyaW5nICopdmFs
dWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9zZXRTdHJpbmdWYWx1ZTp2
YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworQGVuZAorCiBAaW1wbGVtZW50YXRpb24gV2ViUHJlZmVy
ZW5jZXMgKFdlYlByaXZhdGVQcmVmZXJlbmNlc0NvbnZlcnRlZFRvV2ViRmVhdHVyZSkKIAogLSAo
Qk9PTCl1c2VyR2VzdHVyZVByb21pc2VQcm9wYWdhdGlvbkVuYWJsZWQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZh
dGUuaAkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtODksMTMgKzg5LDYg
QEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZSkKICsgKHZvaWQpX3NldElu
aXRpYWxEZWZhdWx0VGV4dEVuY29kaW5nVG9TeXN0ZW1FbmNvZGluZzsKICsgKHZvaWQpX3NldElC
Q3JlYXRvcklEOihOU1N0cmluZyAqKXN0cmluZzsKIAotLy8gRm9yIER1bXBSZW5kZXJUcmVlIHVz
ZSBvbmx5LgotKyAodm9pZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb247
Ci0rICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xp
Y3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSljb29raWVBY2NlcHRQb2xpY3k7Ci0rICh2b2lk
KV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uOwotLy8gVXNlZCB0byBzZXQgcHJlZmVyZW5jZSBz
cGVjaWZpZWQgaW4gdGhlIHRlc3QgdmlhIExheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJl
ZmVyZW5jZSguLikuCi0tICh2b2lkKV9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhWYWx1ZTooTlNT
dHJpbmcgKil2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OwotCiArICh2b2lkKXNldFdlYktp
dExpbmtUaW1lVmVyc2lvbjooaW50KXZlcnNpb247CiAKIC8vIEZvciBXZWJWaWV3J3MgdXNlIG9u
bHkuCkBAIC0zMTAsNiArMzAzLDE4IEBAIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlBy
aXZhdGVGZWEKIC0gKHZvaWQpX3NldEVuYWJsZWQ6KEJPT0wpdmFsdWUgZm9yRmVhdHVyZTooV2Vi
RmVhdHVyZSAqKWZlYXR1cmU7CiBAZW5kCiAKK0BpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdl
YlByaXZhdGVUZXN0aW5nKQorKyAodm9pZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGlu
Z1Nlc3Npb247CisrICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVB
Y2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSljb29raWVBY2NlcHRQb2xpY3k7
CisrICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uOworCistICh2b2lkKV9zZXRCb29s
UHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KEJPT0wpdmFsdWUgZm9yS2V5OihOU1N0cmlu
ZyAqKWtleTsKKy0gKHZvaWQpX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVl
Oih1aW50MzJfdCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OworLSAodm9pZClfc2V0RG91
YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KGRvdWJsZSl2YWx1ZSBmb3JLZXk6KE5T
U3RyaW5nICopa2V5OworLSAodm9pZClfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRo
VmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKworQGVuZAor
CiAvLyBGSVhNRTogSWYgdGhlc2UgYXJlIG5vdCB1c2VkIGFueXdoZXJlLCB3ZSBzaG91bGQgcmVt
b3ZlIHRoZW0gYW5kIG9ubHkgdXNlIFdlYkZlYXR1cmUgbWVjaGFuaXNtIGZvciB0aGUgcHJlZmVy
ZW5jZS4KIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGVQcmVmZXJlbmNlc0Nv
bnZlcnRlZFRvV2ViRmVhdHVyZSkKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHVzZXJHZXN0
dXJlUHJvbWlzZVByb3BhZ2F0aW9uRW5hYmxlZDsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDIwLTEwLTE3ICBTYW0g
V2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBE
dW1wUmVuZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtXSVBdCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rl
c3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiOiBBZGRlZC4K
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RPcHRpb25zOjpkZWZhdWx0cyk6CisgICAgICAgIChXVFI6OlRlc3RPcHRpb25zOjp3ZWJW
aWV3SXNDb21wYXRpYmxlV2l0aE9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV1RSOjpmZWF0dXJl
VmFsdWUpOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6Ym9vbFRlc3RSdW5uZXJGZWF0dXJl
VmFsdWUgY29uc3QpOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6c3RyaW5nVGVzdFJ1bm5l
ckZlYXR1cmVWYWx1ZSBjb25zdCk6CisgICAgICAgIChXVFI6OnNldFZhbHVlSWZTZXRJbk1hcCk6
IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlRlc3RPcHRpb25zOjpUZXN0T3B0aW9ucyk6IERlbGV0
ZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuaDoKKyAgICAgICAgKFdU
Ujo6VGVzdE9wdGlvbnM6OlRlc3RPcHRpb25zKToKKyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6
OmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBjb25zdCk6CisgICAgICAgIChXVFI6OlRlc3RPcHRp
b25zOjplbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkIGNvbnN0KToKKyAgICAgICAgKFdU
Ujo6VGVzdE9wdGlvbnM6OmxheWVyQmFja2VkV2ViVmlldyBjb25zdCk6CisgICAgICAgIChXVFI6
OlRlc3RPcHRpb25zOjp1c2VFcGhlbWVyYWxTZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdUUjo6
VGVzdE9wdGlvbnM6OmFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzIGNvbnN0KToKKyAgICAg
ICAgKFdUUjo6VGVzdE9wdGlvbnM6OmpzY09wdGlvbnMgY29uc3QpOgorICAgICAgICAoV1RSOjpU
ZXN0T3B0aW9uczo6Ym9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyBjb25zdCk6CisgICAgICAgIChX
VFI6OlRlc3RPcHRpb25zOjpkb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMgY29uc3QpOgorICAg
ICAgICAoV1RSOjpUZXN0T3B0aW9uczo6dWludDMyV2ViUHJlZmVyZW5jZUZlYXR1cmVzIGNvbnN0
KToKKyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6OnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJl
cyBjb25zdCk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHRvTlMpOgorICAgICAgICAoY3JlYXRl
V2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdyk6CisgICAgICAgIChyZXNldFdlYlByZWZlcmVuY2Vz
VG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9w
dGlvbnMpOgorICAgICAgICAoc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXNGb3JUZXN0aW5n
KToKKyAgICAgICAgKHNldEpTQ09wdGlvbnMpOgorICAgICAgICAocmVzZXRXZWJWaWV3VG9Db25z
aXN0ZW50U3RhdGUpOgorICAgICAgICAodGVzdE9wdGlvbnNGb3JUZXN0KToKKyAgICAgICAgKHJ1
blRlc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgor
ICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKToKKyAgICAgICAg
KFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24pOgorICAgICAgICAoVGVzdFJ1
bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldENhY2hl
TW9kZWwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tOgorICAg
ICAgICAoLVtVSURlbGVnYXRlIHJlc2V0VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nOl0p
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVl
cyk6CisKIDIwMjAtMTAtMTcgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtGbGF0cGFrIFNES10gZmxhdHBha3V0aWxzLnB5IHJlcG9ydHMgIktleUVy
cm9yOiAnZ2NjJyIgZXJyb3IgaWYgdXNpbmcgd2l0aCBpY2VjYyBhbmQgdG9vbGNoYWlucyBhcmVu
J3QgZ2VuZXJhdGVkIHlldApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvQ01ha2VMaXN0cy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvQ01ha2VMaXN0cy50eHQJKHJl
dmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIGxpc3QoQVBQRU5EIER1bXBSZW5kZXJUcmVl
X1BSSVZBVEVfSU5DTFUKICkKIAogc2V0KER1bXBSZW5kZXJUcmVlX1dFQl9QUkVGRVJFTkNFU19U
RU1QTEFURVMKKyAgICAke0R1bXBSZW5kZXJUcmVlX0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNlc1Rl
bXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVy
YgogICAgICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVz
L1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYgogKQogCkBAIC01NSwxMCArNTYsMTEgQEAg
c2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzKCR7RHVtcFJlbmRlcgogYWRkX2N1c3RvbV9jb21t
YW5kKAogICAgIE9VVFBVVCAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9L1Rl
c3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCiAgICAgREVQRU5EUyAke0R1bXBSZW5kZXJUcmVlX1dF
Ql9QUkVGRVJFTkNFU19URU1QTEFURVN9ICR7RHVtcFJlbmRlclRyZWVfV0VCX1BSRUZFUkVOQ0VT
fSBXVEZfQ29weVByZWZlcmVuY2VzCi0gICAgQ09NTUFORCAke1JVQllfRVhFQ1VUQUJMRX0gJHtX
VEZfU0NSSVBUU19ESVJ9L0dlbmVyYXRlUHJlZmVyZW5jZXMucmIgLS1mcm9udGVuZCBXZWJLaXRM
ZWdhY3kgLS1iYXNlICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNl
cy55YW1sIC0tZGVidWcgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVu
Y2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRhbCAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5j
ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCAtLWludGVybmFsICR7V1RGX1NDUklQ
VFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwgLS1vdXRwdXRE
aXIgIiR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0iIC0tdGVtcGxhdGUgJHtE
dW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlv
bnNHZW5lcmF0ZWRLZXlzLmguZXJiCisgICAgQ09NTUFORCAke1JVQllfRVhFQ1VUQUJMRX0gJHtX
VEZfU0NSSVBUU19ESVJ9L0dlbmVyYXRlUHJlZmVyZW5jZXMucmIgLS1mcm9udGVuZCBXZWJLaXRM
ZWdhY3kgLS1iYXNlICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNl
cy55YW1sIC0tZGVidWcgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVu
Y2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRhbCAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5j
ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCAtLWludGVybmFsICR7V1RGX1NDUklQ
VFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwgLS1vdXRwdXRE
aXIgIiR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0iIC0tdGVtcGxhdGUgJHtE
dW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlv
bnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIgLS10ZW1wbGF0ZSAke0R1
bXBSZW5kZXJUcmVlX0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9u
c0dlbmVyYXRlZEtleXMuaC5lcmIKICAgICBWRVJCQVRJTSkKIAogbGlzdChBUFBFTkQgRHVtcFJl
bmRlclRyZWVfU09VUkNFUworICAgICR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcAogICAgICR7
RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vVGVzdE9wdGlvbnNHZW5lcmF0ZWRL
ZXlzLmgKICkKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNvcHkp
CkBAIC02LDcgKzYsMTAgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRl
LwogJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlL3d0Zi9TY3JpcHRzL1By
ZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAogJChQUk9KRUNUX0RJUikvLi4v
VGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9s
bGVyLmlkbAogJChQUk9KRUNUX0RJUikvQmluZGluZ3MvQ29kZUdlbmVyYXRvckR1bXBSZW5kZXJU
cmVlLnBtCiskKFBST0pFQ1RfRElSKS9EZXJpdmVkU291cmNlcy5tYWtlCiAkKFBST0pFQ1RfRElS
KS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5o
LmVyYgorJChQUk9KRUNUX0RJUikvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0
aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYgorJChQUk9KRUNUX0RJ
UikvU2NyaXB0cy9nZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2gKICQoV0VCQ09SRV9QUklWQVRF
X0hFQURFUlNfRElSKS9Db2RlR2VuZXJhdG9yLnBtCiAkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJT
X0RJUikvSURMQXR0cmlidXRlcy5qc29uCiAkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikv
SURMUGFyc2VyLnBtCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMv
RHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHdvcmtpbmcg
Y29weSkKQEAgLTIsMyArMiw0IEBACiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvRHVtcFJlbmRlclRyZWUvSlNVSVNjcmlwdENvbnRyb2xsZXIuY3BwCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUvSlNVSVNjcmlwdENvbnRyb2xs
ZXIuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVl
L1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lL
ZXlNYXBwaW5nLmNwcApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMu
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy5t
YWtlCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291
cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNSArMzEsMTggQEAgV0VCX1BSRUZFUkVO
Q0VTID0gXAogIwogCiBXRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVTID0gXAorICAgICQoRHVtcFJl
bmRlclRyZWUpL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0
ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIgXAogICAgICQoRHVtcFJlbmRlclRyZWUp
L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmgu
ZXJiIFwKICMKIFdFQl9QUkVGRVJFTkNFU19GSUxFUyA9ICQoYmFzZW5hbWUgJChub3RkaXIgJChX
RUJfUFJFRkVSRU5DRVNfVEVNUExBVEVTKSkpCi1XRUJfUFJFRkVSRU5DRVNfUEFUVEVSTlMgPSAk
KHN1YnN0IC5lcmIsLCQoV0VCX1BSRUZFUkVOQ0VTX0ZJTEVTKSkKK1dFQl9QUkVGRVJFTkNFU19Q
QVRURVJOUyA9ICQoc3Vic3QgLiwlLCQoV0VCX1BSRUZFUkVOQ0VTX0ZJTEVTKSkKIAotYWxsIDog
JChXRUJfUFJFRkVSRU5DRVNfRklMRVMpCiskKGluZm8gJChXRUJfUFJFRkVSRU5DRVNfVEVNUExB
VEVTKSkKKyQoaW5mbyAkKFdFQl9QUkVGRVJFTkNFU19GSUxFUykpCiskKGluZm8gJChXRUJfUFJF
RkVSRU5DRVNfUEFUVEVSTlMpKQogCi0kKFdFQl9QUkVGRVJFTkNFU19QQVRURVJOUykgOiAkKFdU
Rl9CVUlMRF9TQ1JJUFRTX0RJUikvR2VuZXJhdGVQcmVmZXJlbmNlcy5yYiAkKFdFQl9QUkVGRVJF
TkNFU19URU1QTEFURVMpICQoV0VCX1BSRUZFUkVOQ0VTKQotCSQoUlVCWSkgJDwgLS1mcm9udGVu
ZCBXZWJLaXRMZWdhY3kgLS1iYXNlICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNl
cy9XZWJQcmVmZXJlbmNlcy55YW1sIC0tZGVidWcgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1By
ZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRhbCAke1dURl9C
VUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwu
eWFtbCAtLWludGVybmFsICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQ
cmVmZXJlbmNlc0ludGVybmFsLnlhbWwgJChhZGRwcmVmaXggLS10ZW1wbGF0ZSAsICQoV0VCX1BS
RUZFUkVOQ0VTX1RFTVBMQVRFUykpCiskKFdFQl9QUkVGRVJFTkNFU19QQVRURVJOUykgOiAkKFdF
Ql9QUkVGRVJFTkNFU19URU1QTEFURVMpICAkKFdFQl9QUkVGRVJFTkNFUykKKwkkKFJVQlkpICQo
V1RGX0JVSUxEX1NDUklQVFNfRElSKS9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiIC0tZnJvbnRlbmQg
V2ViS2l0TGVnYWN5IC0tYmFzZSAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMv
V2ViUHJlZmVyZW5jZXMueWFtbCAtLWRlYnVnICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVm
ZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0RlYnVnLnlhbWwgLS1leHBlcmltZW50YWwgJHtXVEZfQlVJ
TERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlh
bWwgLS1pbnRlcm5hbCAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXNJbnRlcm5hbC55YW1sICQoYWRkcHJlZml4IC0tdGVtcGxhdGUgLCAkKFdFQl9QUkVG
RVJFTkNFU19URU1QTEFURVMpKQogCiAKIFVJU0NSSVBUQ09OVEVYVF9ESVIgPSAkKER1bXBSZW5k
ZXJUcmVlKS8uLi9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncwpAQCAt
NjgsNiArNzEsNyBAQCBKUyUuaCBKUyUuY3BwIDogJS5pZGwgJChTQ1JJUFRTKSAkKElETF9BCiAJ
QHBlcmwgLUkgJChXZWJDb3JlU2NyaXB0cykgLUkgJChVSVNDUklQVENPTlRFWFRfRElSKSAtSSAk
KER1bXBSZW5kZXJUcmVlKS9CaW5kaW5ncyAkKFdlYkNvcmVTY3JpcHRzKS9nZW5lcmF0ZS1iaW5k
aW5ncy5wbCAtLWRlZmluZXMgIiIgLS1pbmNsdWRlICQoVUlTQ1JJUFRDT05URVhUX0RJUikgLS1v
dXRwdXREaXIgLiAtLWdlbmVyYXRvciBEdW1wUmVuZGVyVHJlZSAtLWlkbEF0dHJpYnV0ZXNGaWxl
ICQoSURMX0FUVFJJQlVURVNfRklMRSkgJDwKIAogYWxsIDogXAorICAgICQoV0VCX1BSRUZFUkVO
Q0VTX0ZJTEVTKSBcCiAgICAgJChVSUNPTlRFWFRfSU5URVJGQUNFUzolPUpTJS5oKSBcCiAgICAg
JChVSUNPTlRFWFRfSU5URVJGQUNFUzolPUpTJS5jcHApIFwKICMKSW5kZXg6IFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9UZXN0T3B0aW9ucy5jcHAJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL1Rlc3RPcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNDQgQEAK
IAogbmFtZXNwYWNlIFdUUiB7CiAKK2NvbnN0IFRlc3RGZWF0dXJlcyYgVGVzdE9wdGlvbnM6OmRl
ZmF1bHRzKCkKK3sKKyAgICBzdGF0aWMgVGVzdEZlYXR1cmVzIGZlYXR1cmVzOworICAgIGlmIChm
ZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzLmVtcHR5KCkpIHsKKyAgICAgICAgZmVh
dHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyA9IHsKKyAgICAgICAgICAgIC8vIFRoZXNl
IGFyZSBXZWJQcmVmZXJlbmNlIHZhbHVlcyB0aGF0IG11c3QgYWx3YXlzIGJlIHNldCBhcyB0aGV5
IG1heQorICAgICAgICAgICAgLy8gZGlmZmVyIGZyb20gdGhlIGRlZmF1bHQgc2V0IGluIHRoZSBX
ZWJQcmVmZXJlbmNlcyoueWFtbCBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgeyAiQWxsb3dD
cm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMiLCBmYWxzZSB9LAorICAg
ICAgICAgICAgeyAiQWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyIsIHRydWUgfSwKKyAgICAg
ICAgICAgIHsgIkFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAg
ICAgeyAiQXR0YWNobWVudEVsZW1lbnRFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsg
IlVzZXNCYWNrRm9yd2FyZENhY2hlIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkNvbG9yRmls
dGVyRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJJbnNwZWN0b3JBZGRpdGlvbnNF
bmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkludGVyc2VjdGlvbk9ic2VydmVyRW5h
YmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJLZXlnZW5FbGVtZW50RW5hYmxlZCIsIGZh
bHNlIH0sCisgICAgICAgICAgICB7ICJNZW51SXRlbUVsZW1lbnRFbmFibGVkIiwgZmFsc2UgfSwK
KyAgICAgICAgICAgIHsgIk1vZGVybk1lZGlhQ29udHJvbHNFbmFibGVkIiwgdHJ1ZSB9LAorCisg
ICAgICAgICAgICB7ICJDU1NMb2dpY2FsRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7
ICJMaW5lSGVpZ2h0VW5pdHNFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIlNlbGVj
dGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXNFbmFibGVkIiwgdHJ1ZSB9LAorICAgICAgICAgICAg
eyAiTGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQiLCB0cnVlIH0sCisK
KyAgICAgICAgICAgIHsgIkFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQiLCBmYWxzZSB9LAorICAg
ICAgICAgICAgeyAiQXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWQiLCBm
YWxzZSB9LAorICAgICAgICAgICAgeyAiQXN5bmNDbGlwYm9hcmRBUElFbmFibGVkIiwgZmFsc2Ug
fSwKKyAgICAgICAgICAgIHsgIkNTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWQiLCBmYWxz
ZSB9LAorICAgICAgICAgICAgeyAiQ29udGFjdFBpY2tlckFQSUVuYWJsZWQiLCBmYWxzZSB9LAor
ICAgICAgICAgICAgeyAiQ29yZU1hdGhNTEVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAg
eyAiUmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAi
UmVzaXplT2JzZXJ2ZXJFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIldlYkdQVUVu
YWJsZWQiLCBmYWxzZSB9LAorICAgICAgICB9OworICAgIH0KKyAgICByZXR1cm4gZmVhdHVyZXM7
Cit9CisKIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgVGVzdEhlYWRlcktl
eVR5cGU+JiBUZXN0T3B0aW9uczo6a2V5VHlwZU1hcHBpbmcoKQogewogICAgIHN0YXRpYyBjb25z
dCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFRlc3RIZWFkZXJLZXlUeXBlPiBtYXAg
ewpAQCAtNDcsNTYgKzg1LDQ3IEBAIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmlu
ZywgVGUKICAgICByZXR1cm4gbWFwOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMg
dm9pZCBzZXRWYWx1ZUlmU2V0SW5NYXAoVCYgdmFsdWVUb1NldCwgc3RkOjpzdHJpbmcga2V5LCBj
b25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFQ+JiBtYXApCitib29sIFRlc3RP
cHRpb25zOjp3ZWJWaWV3SXNDb21wYXRpYmxlV2l0aE9wdGlvbnMoY29uc3QgVGVzdE9wdGlvbnMm
IG9wdGlvbnMpIGNvbnN0Cit7CisgICAgaWYgKG1fZmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVy
ZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzICE9
IG9wdGlvbnMubV9mZWF0dXJlcy5pbnRlcm5hbERlYnVnRmVhdHVyZXMpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzICE9
IG9wdGlvbnMubV9mZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1
cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5kb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy51aW50MzJXZWJQcmVmZXJl
bmNlRmVhdHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0
dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLnN0cmluZ1dl
YlByZWZlcmVuY2VGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMuc3RyaW5nV2ViUHJlZmVy
ZW5jZUZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMu
Ym9vbFRlc3RSdW5uZXJGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMuYm9vbFRlc3RSdW5u
ZXJGZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLmRv
dWJsZVRlc3RSdW5uZXJGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMuZG91YmxlVGVzdFJ1
bm5lckZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMu
c3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5zdHJpbmdUZXN0
UnVubmVyRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJl
cy5zdHJpbmdWZWN0b3JUZXN0UnVubmVyRmVhdHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLnN0
cmluZ1ZlY3RvclRlc3RSdW5uZXJGZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGZlYXR1cmVWYWx1ZShz
dGQ6OnN0cmluZyBrZXksIFQgZGVmYXVsdFZhbHVlLCBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8
c3RkOjpzdHJpbmcsIFQ+JiBtYXApCiB7CiAgICAgYXV0byBpdCA9IG1hcC5maW5kKGtleSk7Ci0g
ICAgaWYgKGl0ID09IG1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHZhbHVlVG9TZXQg
PSBpdC0+c2Vjb25kOwotfQotCi1UZXN0T3B0aW9uczo6VGVzdE9wdGlvbnMoVGVzdEZlYXR1cmVz
IHRlc3RGZWF0dXJlcykKLXsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoYWxsb3dDcm9zc09yaWdp
blN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMsICJBbGxvd0Nyb3NzT3JpZ2luU3VicmVz
b3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyIsIHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5j
ZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoYWxsb3dUb3BOYXZpZ2F0aW9uVG9E
YXRhVVJMcywgIkFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMiLCB0ZXN0RmVhdHVyZXMuYm9v
bFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUFj
Y2VsZXJhdGVkRHJhd2luZywgIkFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQiLCB0ZXN0RmVhdHVy
ZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVu
YWJsZUF0dGFjaG1lbnRFbGVtZW50LCAiQXR0YWNobWVudEVsZW1lbnRFbmFibGVkIiwgdGVzdEZl
YXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1h
cChlbmFibGVCYWNrRm9yd2FyZENhY2hlLCAiVXNlc0JhY2tGb3J3YXJkQ2FjaGUiLCB0ZXN0RmVh
dHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFw
KGVuYWJsZUNvbG9yRmlsdGVyLCAiQ29sb3JGaWx0ZXJFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmJv
b2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVJ
bnNwZWN0b3JBZGRpdGlvbnMsICJJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkIiwgdGVzdEZlYXR1
cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChl
bmFibGVJbnRlcnNlY3Rpb25PYnNlcnZlciwgIkludGVyc2VjdGlvbk9ic2VydmVyRW5hYmxlZCIs
IHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlm
U2V0SW5NYXAoZW5hYmxlS2V5Z2VuRWxlbWVudCwgIktleWdlbkVsZW1lbnRFbmFibGVkIiwgdGVz
dEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJ
bk1hcChlbmFibGVNZW51SXRlbUVsZW1lbnQsICJNZW51SXRlbUVsZW1lbnRFbmFibGVkIiwgdGVz
dEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJ
bk1hcChlbmFibGVNb2Rlcm5NZWRpYUNvbnRyb2xzLCAiTW9kZXJuTWVkaWFDb250cm9sc0VuYWJs
ZWQiLCB0ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0KLSAgICBzZXRW
YWx1ZUlmU2V0SW5NYXAoZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCwgImVuYWJsZURy
YWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQiLCB0ZXN0RmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0
dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciwg
ImR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciIsIHRlc3RGZWF0dXJlcy5ib29sVGVzdFJ1bm5lckZl
YXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAobGF5ZXJCYWNrZWRXZWJWaWV3LCAibGF5
ZXJCYWNrZWRXZWJWaWV3IiwgdGVzdEZlYXR1cmVzLmJvb2xUZXN0UnVubmVyRmVhdHVyZXMpOwot
ICAgIHNldFZhbHVlSWZTZXRJbk1hcCh1c2VFcGhlbWVyYWxTZXNzaW9uLCAidXNlRXBoZW1lcmFs
U2Vzc2lvbiIsIHRlc3RGZWF0dXJlcy5ib29sVGVzdFJ1bm5lckZlYXR1cmVzKTsKLQotICAgIHNl
dFZhbHVlSWZTZXRJbk1hcChhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcywgImFkZGl0aW9u
YWxTdXBwb3J0ZWRJbWFnZVR5cGVzIiwgdGVzdEZlYXR1cmVzLnN0cmluZ1Rlc3RSdW5uZXJGZWF0
dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGpzY09wdGlvbnMsICJqc2NPcHRpb25zIiwg
dGVzdEZlYXR1cmVzLnN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlcyk7Ci0KLSAgICBzZXRWYWx1ZUlm
U2V0SW5NYXAoZW5hYmxlQ1NTTG9naWNhbCwgIkNTU0xvZ2ljYWxFbmFibGVkIiwgdGVzdEZlYXR1
cmVzLmludGVybmFsRGVidWdGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJs
ZUxpbmVIZWlnaHRVbml0cywgIkxpbmVIZWlnaHRVbml0c0VuYWJsZWQiLCB0ZXN0RmVhdHVyZXMu
aW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlU2Vs
ZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllcywgInNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5k
YXJpZXNFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmludGVybmFsRGVidWdGZWF0dXJlcyk7Ci0gICAg
c2V0VmFsdWVJZlNldEluTWFwKGxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFi
bGVkLCAiTGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQiLCB0ZXN0RmVh
dHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKTsKLQotICAgIHNldFZhbHVlSWZTZXRJbk1hcChh
ZENsaWNrQXR0cmlidXRpb25FbmFibGVkLCAiQWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCIsIHRl
c3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFw
KGVuYWJsZUFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHQsICJBc3BlY3RSYXRpb09m
SW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxG
ZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUFzeW5jQ2xpcGJvYXJkQVBJ
LCAiQXN5bmNDbGlwYm9hcmRBUElFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZl
YXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQ1NTT01WaWV3U21vb3RoU2Ny
b2xsaW5nLCAiQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5l
eHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUNvbnRh
Y3RQaWNrZXJBUEksICJDb250YWN0UGlja2VyQVBJRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBl
cmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUNvcmVNYXRo
TUwsICJDb3JlTWF0aE1MRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJl
cyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZVJlcXVlc3RJZGxlQ2FsbGJhY2ssICJS
ZXF1ZXN0SWRsZUNhbGxiYWNrRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0
dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZVJlc2l6ZU9ic2VydmVyLCAiUmVz
aXplT2JzZXJ2ZXJFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsK
LSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlV2ViR1BVLCAiV2ViR1BVRW5hYmxlZCIsIHRl
c3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7CisgICAgaWYgKGl0ICE9IG1hcC5lbmQo
KSkKKyAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7CisgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsK
K30KKworYm9vbCBUZXN0T3B0aW9uczo6Ym9vbFRlc3RSdW5uZXJGZWF0dXJlVmFsdWUoc3RkOjpz
dHJpbmcga2V5LCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gZmVhdHVy
ZVZhbHVlKGtleSwgZGVmYXVsdFZhbHVlLCBtX2ZlYXR1cmVzLmJvb2xUZXN0UnVubmVyRmVhdHVy
ZXMpOwogfQogCi1ib29sIFRlc3RPcHRpb25zOjp3ZWJWaWV3SXNDb21wYXRpYmxlV2l0aE9wdGlv
bnMoY29uc3QgVGVzdE9wdGlvbnMmIG90aGVyKSBjb25zdAorc3RkOjpzdHJpbmcgVGVzdE9wdGlv
bnM6OnN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlVmFsdWUoc3RkOjpzdHJpbmcga2V5LCBzdGQ6OnN0
cmluZyBkZWZhdWx0VmFsdWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG90aGVyLmxheWVyQmFja2Vk
V2ViVmlldyA9PSBsYXllckJhY2tlZFdlYlZpZXcKLSAgICAgICAgJiYgb3RoZXIuanNjT3B0aW9u
cyA9PSBqc2NPcHRpb25zOworICAgIHJldHVybiBmZWF0dXJlVmFsdWUoa2V5LCBkZWZhdWx0VmFs
dWUsIG1fZmVhdHVyZXMuc3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVzKTsKIH0KIAogfQpJbmRleDog
VG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw1MyArMzEs
MzkgQEAKIAogbmFtZXNwYWNlIFdUUiB7CiAKLXN0cnVjdCBUZXN0T3B0aW9ucyB7Ci0gICAgLy8g
RklYTUU6IFJlbW92ZSB0aGVzZSBhbmQgcmVwbGFjZSB3aXRoIGFjY2VzcyB0byBUZXN0RmVhdHVy
ZXMgc2V0LgotICAgIC8vIFdlYiBQcmVmZXJlbmNlcwotICAgIGJvb2wgYWxsb3dDcm9zc09yaWdp
blN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMgeyBmYWxzZSB9OwotICAgIGJvb2wgYWxs
b3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyB7IHRydWUgfTsKLSAgICBib29sIGVuYWJsZUFjY2Vs
ZXJhdGVkRHJhd2luZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVBdHRhY2htZW50RWxlbWVu
dCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVCYWNrRm9yd2FyZENhY2hlIHsgZmFsc2UgfTsK
LSAgICBib29sIGVuYWJsZUNvbG9yRmlsdGVyIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUlu
c3BlY3RvckFkZGl0aW9ucyB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVJbnRlcnNlY3Rpb25P
YnNlcnZlciB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVLZXlnZW5FbGVtZW50IHsgZmFsc2Ug
fTsKLSAgICBib29sIGVuYWJsZU1lbnVJdGVtRWxlbWVudCB7IGZhbHNlIH07Ci0gICAgYm9vbCBl
bmFibGVNb2Rlcm5NZWRpYUNvbnRyb2xzIHsgdHJ1ZSB9OwotCi0gICAgLy8gRklYTUU6IFJlbW92
ZSB0aGVzZSBhbmQgcmVwbGFjZSB3aXRoIGFjY2VzcyB0byBUZXN0RmVhdHVyZXMgc2V0LgotICAg
IC8vIEludGVybmFsIEZlYXR1cmVzCi0gICAgYm9vbCBlbmFibGVDU1NMb2dpY2FsIHsgZmFsc2Ug
fTsKLSAgICBib29sIGVuYWJsZUxpbmVIZWlnaHRVbml0cyB7IGZhbHNlIH07Ci0gICAgYm9vbCBl
bmFibGVTZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzIHsgdHJ1ZSB9OwotICAgIGJvb2wg
bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQgeyB0cnVlIH07Ci0KLSAg
ICAvLyBGSVhNRTogUmVtb3ZlIHRoZXNlIGFuZCByZXBsYWNlIHdpdGggYWNjZXNzIHRvIFRlc3RG
ZWF0dXJlcyBzZXQuCi0gICAgLy8gRXhwZXJpbWVudGFsIEZlYXR1cmVzCi0gICAgYm9vbCBhZENs
aWNrQXR0cmlidXRpb25FbmFibGVkIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUFzcGVjdFJh
dGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHQgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQXN5
bmNDbGlwYm9hcmRBUEkgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQ1NTT01WaWV3U21vb3Ro
U2Nyb2xsaW5nIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUNvbnRhY3RQaWNrZXJBUEkgeyBm
YWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQ29yZU1hdGhNTCB7IGZhbHNlIH07Ci0gICAgYm9vbCBl
bmFibGVSZXF1ZXN0SWRsZUNhbGxiYWNrIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZVJlc2l6
ZU9ic2VydmVyIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZVdlYkdQVSB7IGZhbHNlIH07Citj
bGFzcyBUZXN0T3B0aW9ucyB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFRlc3RGZWF0dXJl
cyYgZGVmYXVsdHMoKTsKKyAgICBzdGF0aWMgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6
c3RyaW5nLCBUZXN0SGVhZGVyS2V5VHlwZT4mIGtleVR5cGVNYXBwaW5nKCk7CiAKLSAgICAvLyBU
ZXN0IFJ1bm5lciBTcGVjaWZpYyBGZWF0dXJlcwotICAgIGJvb2wgZHVtcEpTQ29uc29sZUxvZ0lu
U3RkRXJyIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxv
YWQgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlV2ViU1FMIHsgdHJ1ZSB9OwotICAgIGJvb2wg
bGF5ZXJCYWNrZWRXZWJWaWV3IHsgZmFsc2UgfTsKLSAgICBib29sIHVzZUVwaGVtZXJhbFNlc3Np
b24geyBmYWxzZSB9OwotICAgIHN0ZDo6c3RyaW5nIGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5
cGVzOwotICAgIHN0ZDo6c3RyaW5nIGpzY09wdGlvbnM7CisgICAgZXhwbGljaXQgVGVzdE9wdGlv
bnMoVGVzdEZlYXR1cmVzIGZlYXR1cmVzKQorICAgICAgICA6IG1fZmVhdHVyZXMoc3RkOjptb3Zl
KGZlYXR1cmVzKSkKKyAgICB7CisgICAgfQogCi0gICAgZXhwbGljaXQgVGVzdE9wdGlvbnMoVGVz
dEZlYXR1cmVzKTsKICAgICBib29sIHdlYlZpZXdJc0NvbXBhdGlibGVXaXRoT3B0aW9ucyhjb25z
dCBUZXN0T3B0aW9ucyYpIGNvbnN0OwotICAgIAotICAgIHN0YXRpYyBjb25zdCBzdGQ6OnVub3Jk
ZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFRlc3RIZWFkZXJLZXlUeXBlPiYga2V5VHlwZU1hcHBpbmco
KTsKKworICAgIC8vIFRlc3QgUnVubmVyIFNwZWNpZmljIEZlYXR1cmVzCisgICAgYm9vbCBkdW1w
SlNDb25zb2xlTG9nSW5TdGRFcnIoKSBjb25zdCB7IHJldHVybiBib29sVGVzdFJ1bm5lckZlYXR1
cmVWYWx1ZSgiZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIiwgZmFsc2UpOyB9CisgICAgYm9vbCBl
bmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkKCkgY29uc3QgeyByZXR1cm4gYm9vbFRlc3RS
dW5uZXJGZWF0dXJlVmFsdWUoImVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQiLCBmYWxz
ZSk7IH0KKyAgICBib29sIGxheWVyQmFja2VkV2ViVmlldygpIGNvbnN0IHsgcmV0dXJuIGJvb2xU
ZXN0UnVubmVyRmVhdHVyZVZhbHVlKCJsYXllckJhY2tlZFdlYlZpZXciLCBmYWxzZSk7IH0KKyAg
ICBib29sIHVzZUVwaGVtZXJhbFNlc3Npb24oKSBjb25zdCB7IHJldHVybiBib29sVGVzdFJ1bm5l
ckZlYXR1cmVWYWx1ZSgidXNlRXBoZW1lcmFsU2Vzc2lvbiIsIGZhbHNlKTsgfQorICAgIHN0ZDo6
c3RyaW5nIGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzKCkgY29uc3QgeyByZXR1cm4gc3Ry
aW5nVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZSgiYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMi
LCB7IH0pOyB9CisgICAgc3RkOjpzdHJpbmcganNjT3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIHN0
cmluZ1Rlc3RSdW5uZXJGZWF0dXJlVmFsdWUoImpzY09wdGlvbnMiLCB7IH0pOyB9CisKKyAgICBj
b25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIGJvb2w+JiBib29sV2ViUHJlZmVy
ZW5jZUZlYXR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5j
ZUZlYXR1cmVzOyB9CisgICAgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBk
b3VibGU+JiBkb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2Zl
YXR1cmVzLmRvdWJsZVdlYlByZWZlcmVuY2VGZWF0dXJlczsgfQorICAgIGNvbnN0IHN0ZDo6dW5v
cmRlcmVkX21hcDxzdGQ6OnN0cmluZywgdWludDMyX3Q+JiB1aW50MzJXZWJQcmVmZXJlbmNlRmVh
dHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0
dXJlczsgfQorICAgIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgc3RkOjpz
dHJpbmc+JiBzdHJpbmdXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2Zl
YXR1cmVzLnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlczsgfQorCisgICAgc3RhdGljIHN0ZDo6
c3RyaW5nIHRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShjb25zdCBzdGQ6OnN0cmluZyYpOwor
Citwcml2YXRlOgorICAgIGJvb2wgYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoc3RkOjpz
dHJpbmcga2V5LCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3Q7CisgICAgYm9vbCBib29sVGVzdFJ1
bm5lckZlYXR1cmVWYWx1ZShzdGQ6OnN0cmluZyBrZXksIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25z
dDsKKyAgICBzdGQ6OnN0cmluZyBzdHJpbmdUZXN0UnVubmVyRmVhdHVyZVZhbHVlKHN0ZDo6c3Ry
aW5nIGtleSwgc3RkOjpzdHJpbmcgZGVmYXVsdFZhbHVlKSBjb25zdDsKKworICAgIFRlc3RGZWF0
dXJlcyBtX2ZlYXR1cmVzOwogfTsKIAogfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVt
cFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJl
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiArMTA5
LDcgQEAKIAkJNURCOUFDOUUwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktpdFdlaWdodFdhdGNoZXI3
MDAudHRmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzNzVGMDk3NzBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjcwMC50
dGYgKi87IH07CiAJCTVEQjlBQzlGMEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRXYXRj
aGVyODAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzc1RjA5NzgwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXI4
MDAudHRmICovOyB9OwogCQk1REI5QUNBMDBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2VpZ2h0
V2F0Y2hlcjkwMC50dGYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDM3NUYwOTc5MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRj
aGVyOTAwLnR0ZiAqLzsgfTsKKwkJN0M0RjMwNDAyNTNCOTcwRjAwMzA1NDU4IC8qIFRlc3RPcHRp
b25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzRGMzAzRjI1M0I4MzY5MDAzMDU0NTggLyog
VGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAqLzsgfTsKIAkJ
N0NGRjlCQkYyNTMzQkIyNDAwMDgwMDlGIC8qIFRlc3RGZWF0dXJlcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0ZGOUJCRTI1MzNCQjI0MDAwODAw
OUYgLyogVGVzdEZlYXR1cmVzLmNwcCAqLzsgfTsKIAkJN0NGRjlCQzIyNTMzQkMxNjAwMDgwMDlG
IC8qIFRlc3RDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDRkY5QkMxMjUzM0JDMTYwMDA4MDA5RiAvKiBUZXN0Q29tbWFuZC5jcHAgKi87
IH07CiAJCTgwMDQ1QUVFMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9uSGFuZGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgwMDQ1QUVDMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
SGFuZGxlci5tbSAqLzsgfTsKQEAgLTMzMyw4ICszMzQsMTIgQEAKIAkJN0M0NDY5N0YyNTM3N0Ew
MjAwMjQyOTBBIC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBUZXN0T3B0
aW9uc0dlbmVyYXRlZEtleXMuaC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
NDQ2OTgwMjUzNzdBMDIwMDI0MjkwQSAvKiBjaGVjay14Y2ZpbGVsaXN0cy5zaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnNoOyBw
YXRoID0gImNoZWNrLXhjZmlsZWxpc3RzLnNoIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0M0NDY5ODEyNTM3N0EwMjAwMjQyOTBBIC8qIGdlbmVyYXRlLWRlcml2ZWQtc291cmNlcy5z
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
c2NyaXB0LnNoOyBwYXRoID0gImdlbmVyYXRlLWRlcml2ZWQtc291cmNlcy5zaCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDNDQ2OTg1MjUzNzdFNTIwMDI0MjkwQSAvKiBUZXN0T3B0
aW9uc0dlbmVyYXRlZEtleXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRL
ZXlzLmg7IHBhdGggPSBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0M0NDY5ODUyNTM3N0U1MjAwMjQyOTBBIC8qIFRlc3RPcHRpb25zR2Vu
ZXJhdGVkS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M0RjMwM0YyNTNCODM2OTAwMzA1NDU4IC8q
IFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzlFMjUwQjI1M0I3OTRBMDA0MTMwMTgg
LyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQkJDMzIyMURERkNGOUEwMDc4NkI5RCAvKiBU
ZXN0T3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0T3B0aW9u
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Q0NCQTUxRDI1M0JCOUQzMDBCQjMy
QzEgLyogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNmaWxlbGlzdDsgcGF0aCA9ICJE
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0NDQkE1MUUyNTNCQjlEMzAwQkIzMkMxIC8qIERlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC54Y2ZpbGVsaXN0OyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NGRjlCQkQyNTMzQkIyNDAwMDgw
MDlGIC8qIFRlc3RGZWF0dXJlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0RmVhdHVyZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NGRjlCQkUyNTMzQkIyNDAwMDgwMDlGIC8qIFRl
c3RGZWF0dXJlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXN0RmVhdHVyZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0ZGOUJDMDI1MzNCQzE2MDAwODAwOUYgLyogVGVz
dENvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdENvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTUwMSw2ICs1MDYsOCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKIAkJCQkwRjE4RTZGMTFENkI5QzY0MDAyN0U1NDcgLyogRGVyaXZlZFNvdXJj
ZXMubWFrZSAqLywKKwkJCQk3Q0NCQTUxRDI1M0JCOUQzMDBCQjMyQzEgLyogRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdCAqLywKKwkJCQk3Q0NCQTUxRTI1M0JCOUQzMDBCQjMyQzEgLyog
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgKi8sCiAJCQkJN0M0NDY5ODIyNTM3N0Mz
NDAwMjQyOTBBIC8qIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQkzMTQ4QTA2NTFFNkY5MEY0MDBE
M0IzMTYgLyogVGVzdFJ1bm5lclNoYXJlZCAqLywKIAkJCQkwRjE4RTZFNzFENkI5QkY1MDAyN0U1
NDcgLyogVUlTY3JpcHRDb250ZXh0ICovLApAQCAtNzcwLDYgKzc3Nyw3IEBACiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdDNDQ2OTdGMjUzNzdBMDIwMDI0MjkwQSAv
KiBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIgKi8sCisJCQkJN0M5RTI1MEIyNTNCNzk0
QTAwNDEzMDE4IC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5j
cHAuZXJiICovLAogCQkJKTsKIAkJCXBhdGggPSBQcmVmZXJlbmNlc1RlbXBsYXRlczsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03NzgsNiArNzg2LDcgQEAKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJN0M0NDY5ODUyNTM3N0U1MjAwMjQyOTBBIC8qIFRl
c3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oICovLAorCQkJCTdDNEYzMDNGMjUzQjgzNjkwMDMwNTQ1
OCAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwICovLAog
CQkJKTsKIAkJCW5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJCXBhdGggPSBEZXJpdmVkU291
cmNlcy9EdW1wUmVuZGVyVHJlZTsKQEAgLTEyOTEsNiArMTMwMCw3IEBACiAJCQkJN0NGRjlCQzIy
NTMzQkMxNjAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdD
RkY5QkJGMjUzM0JCMjQwMDA4MDA5RiAvKiBUZXN0RmVhdHVyZXMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTMwQTIxRjgyMDUxRDhDNDAwMDhGRjQyIC8qIFRlc3RPcHRpb25zLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTdDNEYzMDQwMjUzQjk3MEYwMDMwNTQ1OCAvKiBUZXN0T3B0aW9uc0dlbmVy
YXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwMTMx
REEwQzk3NzIwMTAwODczMTdEIC8qIFRlc3RSdW5uZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkNBMThCMjQwQzlCMDE0QjAwMTE0MzY5IC8qIFRlc3RSdW5uZXJNYWMubW0gaW4gU291cmNlcyAq
LywKIAkJCQlGNEQ0MjM2MTFERDUwNDgyMDA2NzgyOTAgLyogVGV4dElucHV0Q29udHJvbGxlcklP
Uy5tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9TY3JpcHRzL2dl
bmVyYXRlLWRlcml2ZWQtc291cmNlcy5zaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9TY3JpcHRzL2dlbmVyYXRlLWRlcml2ZWQtc291cmNlcy5zaAkocmV2aXNpb24gMjY4NjQ4
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvU2NyaXB0cy9nZW5lcmF0ZS1kZXJpdmVkLXNvdXJj
ZXMuc2gJKHdvcmtpbmcgY29weSkKQEAgLTE1LDUgKzE1LDUgQEAgaWYgWyAhICRDQyBdOyB0aGVu
CiBmaQogCiBpZiBbICIke0FDVElPTn0iID0gImJ1aWxkIiAtbyAiJHtBQ1RJT059IiA9ICJpbnN0
YWxsIiAtbyAiJHtBQ1RJT059IiA9ICJpbnN0YWxsaGRycyIgXTsgdGhlbgotICAgIG1ha2UgLWYg
IiR7RHVtcFJlbmRlclRyZWV9L0Rlcml2ZWRTb3VyY2VzLm1ha2UiIC1qIGAvdXNyL3NiaW4vc3lz
Y3RsIC1uIGh3LmFjdGl2ZWNwdWAgIiR7QVJHU1tAXX0iCisgICAgbWFrZSAtZCAtZiAiJHtEdW1w
UmVuZGVyVHJlZX0vRGVyaXZlZFNvdXJjZXMubWFrZSIgLWogYC91c3Ivc2Jpbi9zeXNjdGwgLW4g
aHcuYWN0aXZlY3B1YCAiJHtBUkdTW0BdfSIKIGZpCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJl
ZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0
TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJL
aXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRl
ZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYgkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQ4IEBACisvKgorICogPCU9IEB3YXJuaW5nICU+CisgKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlRlc3RPcHRpb25zLmgiCisKK25hbWVzcGFjZSBXVFIgeworCitz
dGQ6OnN0cmluZyBUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGNvbnN0
IHN0ZDo6c3RyaW5nJiB3ZWJQcmVmZXJlbmNlc0tleSkKK3sKKyAgICBzdGF0aWMgc3RkOjp1bm9y
ZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4gbm9uU3RhbmRhcmRLZXlzID0gewor
PCUtIGZvciBAcHJlZiBpbiBAcHJlZmVyZW5jZXMuc2VsZWN0IHsgfHB8IHAub3B0c1sid2ViS2l0
TGVnYWN5UHJlZmVyZW5jZUtleSJdIH0gZG8gLSU+CisgICAgICAgIHsgIjwlPSBAcHJlZi5uYW1l
ICU+IiwgIjwlPSBAcHJlZi5wcmVmZXJlbmNlS2V5ICU+IiB9LCBcCis8JS0gZW5kIC0lPgorICAg
IH07CisKKyAgICBhdXRvIGl0ID0gbm9uU3RhbmRhcmRLZXlzLmZpbmQod2ViUHJlZmVyZW5jZXNL
ZXkpOworICAgIGlmIChpdCAhPSBub25TdGFuZGFyZEtleXMuZW5kKCkpCisgICAgICAgIHJldHVy
biBpdC0+c2Vjb25kOworCisgICAgcmV0dXJuICJXZWJLaXQiICsgd2ViUHJlZmVyZW5jZXNLZXk7
Cit9CisKK30KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUu
bW0JKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSwxMiBAQCBleHRlcm4gIkMi
IHsKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAorc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4g
dG9OUyhjb25zdCBzdGQ6OnN0cmluZyYgc3RyaW5nKQoreworICAgIHJldHVybiBhZG9wdE5TKFtb
TlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoVVRGOFN0cmluZzpzdHJpbmcuY19zdHIoKV0pOworfQor
CisKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBpbnRlcmZhY2UgRHVtcFJlbmRlclRyZWVB
cHBsaWNhdGlvbiA6IE5TQXBwbGljYXRpb24KIEBlbmQKQEAgLTY3Miw2ICs2NzgsMTAgQEAgV2Vi
VmlldyAqY3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdwogICAgIFt3ZWJWaWV3IHNldEdy
b3VwTmFtZTpAIm9yZy53ZWJraXQuRHVtcFJlbmRlclRyZWUiXTsKICNlbmRpZgogCisgICAgV2Vi
UHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzID0gW1tXZWJQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF07
CisgICAgW3ByZWZlcmVuY2VzIHNldEF1dG9zYXZlczpOT107CisgICAgW3dlYlZpZXcgc2V0UHJl
ZmVyZW5jZXM6cHJlZmVyZW5jZXNdOworCiAgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTp1aURl
bGVnYXRlXTsKICAgICBbd2ViVmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpmcmFtZUxvYWREZWxl
Z2F0ZV07CiAgICAgW3dlYlZpZXcgc2V0RWRpdGluZ0RlbGVnYXRlOmVkaXRpbmdEZWxlZ2F0ZV07
CkBAIC02ODUsOCArNjk1LDYgQEAgV2ViVmlldyAqY3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldp
bmRvdwogICAgIFtXZWJWaWV3IHJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbDpAImZlZWRzIl07CiAg
ICAgW1dlYlZpZXcgcmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsOkAiZmVlZHNlYXJjaCJdOwogCi0g
ICAgW1t3ZWJWaWV3IHByZWZlcmVuY2VzXSBfc2V0TWVkaWFSZWNvcmRlckVuYWJsZWQ6WUVTXTsK
LQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBbd2ViVmlldyBzZXRXaW5kb3dPY2NsdXNpb25EZXRl
Y3Rpb25FbmFibGVkOk5PXTsKICAgICBbV2ViVmlldyBfc2V0Rm9udEFsbG93TGlzdDpmb250QWxs
b3dMaXN0KCldOwpAQCAtODQ0LDkgKzg1Miw4IEBAIHN0YXRpYyB2b2lkIGVuYWJsZUV4cGVyaW1l
bnRhbEZlYXR1cmVzKFcKIH0KIAogLy8gQ2FsbGVkIGJlZm9yZSBlYWNoIHRlc3QuCi1zdGF0aWMg
dm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKCkKK3N0YXRpYyB2b2lk
IHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoV2ViUHJlZmVyZW5jZXMgKnBy
ZWZlcmVuY2VzKQogewotICAgIFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtXZWJQcmVm
ZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXTsKICAgICBlbmFibGVFeHBlcmltZW50YWxGZWF0
dXJlcyhwcmVmZXJlbmNlcyk7CiAKICAgICBbcHJlZmVyZW5jZXMgc2V0TmVlZHNTdG9yYWdlQWNj
ZXNzRnJvbUZpbGVVUkxzUXVpcms6IE5PXTsKQEAgLTkwMiw2ICs5MDksNyBAQCBzdGF0aWMgdm9p
ZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0CiAgICAgfSBlbHNlCiAgICAgICAgIFtwcmVm
ZXJlbmNlcyBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQ6Tk9dOwogCisgICAgW3ByZWZlcmVuY2Vz
IHNldElubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRlOk5PXTsK
ICAgICBbcHJlZmVyZW5jZXMgc2V0TWVkaWFQbGF5YmFja0FsbG93c0lubGluZTpZRVNdOwogICAg
IFtwcmVmZXJlbmNlcyBzZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZTpOT107CiAg
ICAgW3ByZWZlcmVuY2VzIHNldFZpZGVvUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlOk5PXTsK
QEAgLTk2MCw2ICs5NjgsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25z
aXN0CiAgICAgcHJlZmVyZW5jZXMubWVkaWFDYXBhYmlsaXRpZXNFbmFibGVkID0gWUVTOwogCiAg
ICAgcHJlZmVyZW5jZXMuc2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllc0VuYWJsZWQgPSBZ
RVM7CisgICAgcHJlZmVyZW5jZXMuZnVsbFNjcmVlbkVuYWJsZWQgPSBZRVM7CiAKICAgICBbcHJl
ZmVyZW5jZXMgc2V0V2ViU1FMRW5hYmxlZDpZRVNdOwogCkBAIC05NjcsMzQgKzk3NiwyMSBAQCBz
dGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0CiAgICAgW1dlYlByZWZlcmVu
Y2VzIF9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6TlNI
VFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW5dOwogfQogCi1z
dGF0aWMgdm9pZCBzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKGNvbnN0IFdUUjo6VGVz
dE9wdGlvbnMmIG9wdGlvbnMpCitzdGF0aWMgdm9pZCBzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RP
cHRpb25zKFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcywgY29uc3QgV1RSOjpUZXN0T3B0aW9u
cyYgb3B0aW9ucykKIHsKLSAgICBXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbV2ViUHJl
ZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc107CisgICAgcHJlZmVyZW5jZXMucHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCA9IG9wdGlvbnMudXNlRXBoZW1lcmFsU2Vzc2lvbigpOworCisgICAgZm9y
IChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLmJvb2xXZWJQcmVmZXJlbmNlRmVh
dHVyZXMoKSkKKyAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXRCb29sUHJlZmVyZW5jZUZvclRlc3Rp
bmdXaXRoVmFsdWU6dmFsdWUgZm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJLaXRM
ZWdhY3lQcmVmZXJlbmNlS2V5KGtleSkpLmdldCgpXTsKKworICAgIGZvciAoY29uc3QgYXV0byYg
W2tleSwgdmFsdWVdIDogb3B0aW9ucy5kb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAg
ICAgICAgW3ByZWZlcmVuY2VzIF9zZXREb3VibGVQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1
ZTp2YWx1ZSBmb3JLZXk6dG9OUyhXVFI6OlRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZl
cmVuY2VLZXkoa2V5KSkuZ2V0KCldOwogCi0gICAgcHJlZmVyZW5jZXMuYXR0YWNobWVudEVsZW1l
bnRFbmFibGVkID0gb3B0aW9ucy5lbmFibGVBdHRhY2htZW50RWxlbWVudDsKLSAgICBwcmVmZXJl
bmNlcy5hY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkID0gb3B0aW9ucy5lbmFibGVBY2NlbGVyYXRl
ZERyYXdpbmc7Ci0gICAgcHJlZmVyZW5jZXMubWVudUl0ZW1FbGVtZW50RW5hYmxlZCA9IG9wdGlv
bnMuZW5hYmxlTWVudUl0ZW1FbGVtZW50OwotICAgIHByZWZlcmVuY2VzLmtleWdlbkVsZW1lbnRF
bmFibGVkID0gb3B0aW9ucy5lbmFibGVLZXlnZW5FbGVtZW50OwotICAgIHByZWZlcmVuY2VzLm1v
ZGVybk1lZGlhQ29udHJvbHNFbmFibGVkID0gb3B0aW9ucy5lbmFibGVNb2Rlcm5NZWRpYUNvbnRy
b2xzOwotICAgIHByZWZlcmVuY2VzLmluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQgPSBvcHRpb25z
LmVuYWJsZUluc3BlY3RvckFkZGl0aW9uczsKLSAgICBwcmVmZXJlbmNlcy5hbGxvd0Nyb3NzT3Jp
Z2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyA9IG9wdGlvbnMuYWxsb3dDcm9zc09y
aWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHM7Ci0gICAgcHJlZmVyZW5jZXMuY29s
b3JGaWx0ZXJFbmFibGVkID0gb3B0aW9ucy5lbmFibGVDb2xvckZpbHRlcjsKLSAgICBwcmVmZXJl
bmNlcy5zZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzRW5hYmxlZCA9IG9wdGlvbnMuZW5h
YmxlU2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllczsKLSAgICBwcmVmZXJlbmNlcy53ZWJH
UFVFbmFibGVkID0gb3B0aW9ucy5lbmFibGVXZWJHUFU7Ci0gICAgcHJlZmVyZW5jZXMuQ1NTTG9n
aWNhbEVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUNTU0xvZ2ljYWw7Ci0gICAgcHJlZmVyZW5jZXMu
bGluZUhlaWdodFVuaXRzRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlTGluZUhlaWdodFVuaXRzOwot
ICAgIHByZWZlcmVuY2VzLmFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQgPSBvcHRpb25zLmFkQ2xp
Y2tBdHRyaWJ1dGlvbkVuYWJsZWQ7Ci0gICAgcHJlZmVyZW5jZXMucmVzaXplT2JzZXJ2ZXJFbmFi
bGVkID0gb3B0aW9ucy5lbmFibGVSZXNpemVPYnNlcnZlcjsKLSAgICBwcmVmZXJlbmNlcy5DU1NP
TVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkID0gb3B0aW9ucy5lbmFibGVDU1NPTVZpZXdTbW9v
dGhTY3JvbGxpbmc7Ci0gICAgcHJlZmVyZW5jZXMuY29yZU1hdGhNTEVuYWJsZWQgPSBvcHRpb25z
LmVuYWJsZUNvcmVNYXRoTUw7Ci0gICAgcHJlZmVyZW5jZXMucmVxdWVzdElkbGVDYWxsYmFja0Vu
YWJsZWQgPSBvcHRpb25zLmVuYWJsZVJlcXVlc3RJZGxlQ2FsbGJhY2s7Ci0gICAgcHJlZmVyZW5j
ZXMuYXN5bmNDbGlwYm9hcmRBUElFbmFibGVkID0gb3B0aW9ucy5lbmFibGVBc3luY0NsaXBib2Fy
ZEFQSTsKLSAgICBwcmVmZXJlbmNlcy5wcml2YXRlQnJvd3NpbmdFbmFibGVkID0gb3B0aW9ucy51
c2VFcGhlbWVyYWxTZXNzaW9uOwotICAgIHByZWZlcmVuY2VzLnVzZXNQYWdlQ2FjaGUgPSBvcHRp
b25zLmVuYWJsZUJhY2tGb3J3YXJkQ2FjaGU7Ci0gICAgcHJlZmVyZW5jZXMubGF5b3V0Rm9ybWF0
dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQgPSBvcHRpb25zLmxheW91dEZvcm1hdHRpbmdD
b250ZXh0SW50ZWdyYXRpb25FbmFibGVkOwotICAgIHByZWZlcmVuY2VzLmFzcGVjdFJhdGlvT2ZJ
bWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkID0gb3B0aW9ucy5lbmFibGVBc3BlY3RSYXRpb09m
SW1nRnJvbVdpZHRoQW5kSGVpZ2h0OwotICAgIHByZWZlcmVuY2VzLmFsbG93VG9wTmF2aWdhdGlv
blRvRGF0YVVSTHMgPSBvcHRpb25zLmFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHM7Ci0gICAg
cHJlZmVyZW5jZXMuY29udGFjdFBpY2tlckFQSUVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUNvbnRh
Y3RQaWNrZXJBUEk7CisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25z
LnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJlcygpKQorICAgICAgICBbcHJlZmVyZW5jZXMgX3Nl
dFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnZhbHVlIGZvcktleTp0b05TKFdU
Ujo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShrZXkpKS5nZXQoKV07
CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuc3RyaW5nV2Vi
UHJlZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0U3RyaW5nUHJl
ZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dG9OUyh2YWx1ZSkuZ2V0KCkgZm9yS2V5OnRvTlMo
V1RSOjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGtleSkpLmdldCgp
XTsKIH0KIAogLy8gQ2FsbGVkIG9uY2Ugb24gRHVtcFJlbmRlclRyZWUgc3RhcnR1cC4KQEAgLTEw
MTgsOSArMTAxNCw2IEBAIHN0YXRpYyB2b2lkIHNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWUK
ICAgICAgICAgQCJBcHBsZU90aGVySGlnaGxpZ2h0Q29sb3IiOkAiMC41MDAwMDAgMC41MDAwMDAg
MC41MDAwMDAiLAogICAgICAgICBAIkFwcGxlTGFuZ3VhZ2VzIjogQFsgQCJlbiIgXSwKICAgICAg
ICAgV2ViS2l0RW5hYmxlRnVsbERvY3VtZW50VGVhcmRvd25QcmVmZXJlbmNlS2V5OiBAWUVTLAot
ICAgICAgICBXZWJLaXRGdWxsU2NyZWVuRW5hYmxlZFByZWZlcmVuY2VLZXk6IEBZRVMsCi0gICAg
ICAgIFdlYktpdEFsbG93c0lubGluZU1lZGlhUGxheWJhY2tQcmVmZXJlbmNlS2V5OiBAWUVTLAot
ICAgICAgICBXZWJLaXRJbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJp
YnV0ZUtleTogQE5PLAogICAgICAgICBAIlVzZVdlYktpdFdlYkluc3BlY3RvciI6IEBZRVMsCiAj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIEAiTlNQcmVmZXJyZWRTcGVsbFNlcnZl
ckxhbmd1YWdlIjogQCJlbl9VUyIsCkBAIC0xODI2LDkgKzE4MTksOSBAQCBzdGF0aWMgdm9pZCBz
ZXRKU0NPcHRpb25zKGNvbnN0IFdUUjo6VGVzCiAgICAgICAgIHNhdmVkT3B0aW9ucy5jbGVhcigp
OwogICAgIH0KIAotICAgIGlmIChvcHRpb25zLmpzY09wdGlvbnMubGVuZ3RoKCkpIHsKKyAgICBp
ZiAoIW9wdGlvbnMuanNjT3B0aW9ucygpLmVtcHR5KCkpIHsKICAgICAgICAgSlNDOjpPcHRpb25z
OjpkdW1wQWxsT3B0aW9uc0luQUxpbmUoc2F2ZWRPcHRpb25zKTsKLSAgICAgICAgSlNDOjpPcHRp
b25zOjpzZXRPcHRpb25zKG9wdGlvbnMuanNjT3B0aW9ucy5jX3N0cigpKTsKKyAgICAgICAgSlND
OjpPcHRpb25zOjpzZXRPcHRpb25zKG9wdGlvbnMuanNjT3B0aW9ucygpLmNfc3RyKCkpOwogICAg
IH0KIH0KIApAQCAtMTgzOSw2ICsxODMyLDEwIEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViVmlld1Rv
Q29uc2lzdGVudFN0YXQKIAogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbbWFpbkZyYW1lIHdlYlZp
ZXddOwogCisgICAgV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzID0gW1tXZWJQcmVmZXJlbmNl
cyBhbGxvY10gaW5pdF07CisgICAgW3ByZWZlcmVuY2VzIHNldEF1dG9zYXZlczpOT107CisgICAg
W3dlYlZpZXcgc2V0UHJlZmVyZW5jZXM6cHJlZmVyZW5jZXNdOworCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBhZGp1c3RXZWJEb2N1bWVudEZvclN0YW5kYXJkVmlld3BvcnQoZ1dlYkJy
b3dzZXJWaWV3LCBnV2ViU2Nyb2xsVmlldyk7CiAgICAgW3dlYlZpZXcgX3NldEFsbG93c01lc3Nh
Z2luZzpZRVNdOwpAQCAtMTg2NywxMCArMTg2NCwxMCBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZp
ZXdUb0NvbnNpc3RlbnRTdGF0CiAKICAgICBbV2ViQ2FjaGUgY2xlYXJDYWNoZWRDcmVkZW50aWFs
c107CiAKLSAgICByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKCk7Ci0gICAg
c2V0V2ViUHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9ucyhvcHRpb25zKTsKKyAgICByZXNldFdlYlBy
ZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKHByZWZlcmVuY2VzKTsKKyAgICBzZXRXZWJQcmVm
ZXJlbmNlc0ZvclRlc3RPcHRpb25zKHByZWZlcmVuY2VzLCBvcHRpb25zKTsKICNpZiBQTEFURk9S
TShNQUMpCi0gICAgW3dlYlZpZXcgc2V0V2FudHNMYXllcjpvcHRpb25zLmxheWVyQmFja2VkV2Vi
Vmlld107CisgICAgW3dlYlZpZXcgc2V0V2FudHNMYXllcjpvcHRpb25zLmxheWVyQmFja2VkV2Vi
VmlldygpXTsKICNlbmRpZgogCiAgICAgVGVzdFJ1bm5lcjo6c2V0U2VyaWFsaXplSFRUUExvYWRz
KGZhbHNlKTsKQEAgLTE5MTQsNyArMTkxMSw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViVmlld1Rv
Q29uc2lzdGVudFN0YXQKICAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gZGVj
bGFyZVR5cGVzOkBbTlNTdHJpbmdQYm9hcmRUeXBlXSBvd25lcjpuaWxdOwogI2VuZGlmCiAKLSAg
ICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzRm9y
VGVzdGluZyhvcHRpb25zLmFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLmNfc3RyKCkpOwor
ICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6c2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXNG
b3JUZXN0aW5nKG9wdGlvbnMuYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMoKS5jX3N0cigp
KTsKIAogICAgIFttYWluRnJhbWUgX2NsZWFyT3BlbmVyXTsKIApAQCAtMTk3MCw3ICsxOTY3LDcg
QEAgc3RhdGljIE5TVVJMICpjb21wdXRlVGVzdFVSTChOU1N0cmluZyAqcAogCiBzdGF0aWMgV1RS
OjpUZXN0T3B0aW9ucyB0ZXN0T3B0aW9uc0ZvclRlc3QoY29uc3QgV1RSOjpUZXN0Q29tbWFuZCYg
Y29tbWFuZCkKIHsKLSAgICBXVFI6OlRlc3RGZWF0dXJlcyBmZWF0dXJlczsKKyAgICBXVFI6OlRl
c3RGZWF0dXJlcyBmZWF0dXJlcyA9IFdUUjo6VGVzdE9wdGlvbnM6OmRlZmF1bHRzKCk7CiAgICAg
V1RSOjptZXJnZShmZWF0dXJlcywgV1RSOjpoYXJkY29kZWRGZWF0dXJlc0Jhc2VkT25QYXRoRm9y
VGVzdChjb21tYW5kKSk7CiAgICAgV1RSOjptZXJnZShmZWF0dXJlcywgV1RSOjpmZWF0dXJlRGVm
YXVsdHNGcm9tVGVzdEhlYWRlckZvclRlc3QoY29tbWFuZCwgV1RSOjpUZXN0T3B0aW9uczo6a2V5
VHlwZU1hcHBpbmcoKSkpOwogCkBAIC0yMDE3LDcgKzIwMTQsNyBAQCBzdGF0aWMgdm9pZCBydW5U
ZXN0KGNvbnN0IHN0cmluZyYgaW5wdXRMCiAgICAgZ1Rlc3RSdW5uZXIgPSBUZXN0UnVubmVyOjpj
cmVhdGUodGVzdFVSTCwgY29tbWFuZC5leHBlY3RlZFBpeGVsSGFzaCk7CiAgICAgZ1Rlc3RSdW5u
ZXItPnNldEFsbG93ZWRIb3N0cyhhbGxvd2VkSG9zdHMpOwogICAgIGdUZXN0UnVubmVyLT5zZXRD
dXN0b21UaW1lb3V0KGNvbW1hbmQudGltZW91dC5taWxsaXNlY29uZHMoKSk7Ci0gICAgZ1Rlc3RS
dW5uZXItPnNldER1bXBKU0NvbnNvbGVMb2dJblN0ZEVycihjb21tYW5kLmR1bXBKU0NvbnNvbGVM
b2dJblN0ZEVyciB8fCBvcHRpb25zLmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVycik7CisgICAgZ1Rl
c3RSdW5uZXItPnNldER1bXBKU0NvbnNvbGVMb2dJblN0ZEVycihjb21tYW5kLmR1bXBKU0NvbnNv
bGVMb2dJblN0ZEVyciB8fCBvcHRpb25zLmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVycigpKTsKIAog
ICAgIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlKG9wdGlvbnMsIFJlc2V0VGltZTo6QmVm
b3JlVGVzdCk7CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFj
Lm1tCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1
bm5lck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTc2LDE0ICs1NzYsMTQgQEAgdm9pZCBUZXN0
UnVubmVyOjpzZXRQYWdlUGF1c2VkKGJvb2wgcGF1cwogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFVz
ZXJTdHlsZVNoZWV0RW5hYmxlZChib29sIGZsYWcpCiB7Ci0gICAgW1tXZWJQcmVmZXJlbmNlcyBz
dGFuZGFyZFByZWZlcmVuY2VzXSBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQ6ZmxhZ107CisgICAg
W1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBzZXRVc2VyU3R5bGVTaGVldEVuYWJs
ZWQ6ZmxhZ107CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlv
bihKU1N0cmluZ1JlZiBwYXRoKQogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGF0aENG
ID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwYXRo
KSk7CiAgICAgTlNVUkwgKnVybCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOihfX2JyaWRnZSBOU1N0
cmluZyAqKXBhdGhDRi5nZXQoKV07Ci0gICAgW1tXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZl
cmVuY2VzXSBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uOnVybF07CisgICAgW1tbbWFpbkZyYW1l
IHdlYlZpZXddIHByZWZlcmVuY2VzXSBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uOnVybF07CiB9
CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIEpTU3RyaW5nUmVmIHZhbHVlKQpAQCAtNjA5LDcgKzYw
OSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3QKICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHZhbHVlQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5n
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHZhbHVlKSk7CiAgICAgTlNTdHJpbmcgKnZhbHVlTlMgPSAo
X19icmlkZ2UgTlNTdHJpbmcgKil2YWx1ZUNGLmdldCgpOwogCi0gICAgW1tXZWJQcmVmZXJlbmNl
cyBzdGFuZGFyZFByZWZlcmVuY2VzXSBfc2V0UHJlZmVyZW5jZUZvclRlc3RXaXRoVmFsdWU6dmFs
dWVOUyBmb3JLZXk6a2V5TlNdOworICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNl
c10gX3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnZhbHVlTlMgZm9yS2V5
OmtleU5TXTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpyZW1vdmVBbGxWaXNpdGVkTGlua3MoKQpA
QCAtNzAwLDcgKzcwMCw3IEBAIGJvb2wgVGVzdFJ1bm5lcjo6ZmluZFN0cmluZyhKU0NvbnRleHRS
ZWYKIAogdm9pZCBUZXN0UnVubmVyOjpzZXRDYWNoZU1vZGVsKGludCBjYWNoZU1vZGVsKQogewot
ICAgIFtbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10gc2V0Q2FjaGVNb2RlbDoo
V2ViQ2FjaGVNb2RlbCljYWNoZU1vZGVsXTsKKyAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJl
ZmVyZW5jZXNdIHNldENhY2hlTW9kZWw6KFdlYkNhY2hlTW9kZWwpY2FjaGVNb2RlbF07CiB9CiAK
IGJvb2wgVGVzdFJ1bm5lcjo6aXNDb21tYW5kRW5hYmxlZChKU1N0cmluZ1JlZiBuYW1lKQpJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0JKHJldmlzaW9uIDI2ODY0OCkK
KysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC02MCw3ICs2MCw3IEBAIC0gKHZvaWQpcmVzZXRXaW5kb3dPcmlnaW4KIAogLSAodm9pZCly
ZXNldFRvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZzooY29uc3QgV1RSOjpUZXN0T3B0aW9u
cyYpb3B0aW9ucwogewotICAgIG1fZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCA9IG9w
dGlvbnMuZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZDsKKyAgICBtX2VuYWJsZURyYWdE
ZXN0aW5hdGlvbkFjdGlvbkxvYWQgPSBvcHRpb25zLmVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlv
bkxvYWQoKTsKIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHNldEZyYW1l
OihOU1JlY3QpZnJhbWUKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVy
VHJlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5k
ZXJUcmVlLmNwcAkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0R1bXBSZW5kZXJUcmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTA2LDI4ICs5MDYsMzcgQEAg
c3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdAogCiAgICAgcHJlZmVyZW5j
ZXMtPnNldEZvbnRTbW9vdGhpbmcoRm9udFNtb290aGluZ1R5cGVTdGFuZGFyZCk7CiAKKyAgICBw
cmVmc1ByaXZhdGUtPnNldFdlYlNRTEVuYWJsZWQodHJ1ZSk7CisKICAgICBwcmVmc1ByaXZhdGUt
PnNldERhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZChUUlVFKTsKICAgICBwcmVmc1ByaXZhdGUtPmNs
ZWFyTmV0d29ya0xvYWRlclNlc3Npb24oKTsKIAogICAgIHNldEFsd2F5c0FjY2VwdENvb2tpZXMo
ZmFsc2UpOwogfQogCitzdGF0aWMgYm9vbCBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZShz
dGQ6OnN0cmluZyBrZXksIGJvb2wgZGVmYXVsdFZhbHVlLCBjb25zdCBXVFI6OlRlc3RPcHRpb25z
JiBvcHRpb25zKQoreworICAgIGF1dG8gaXQgPSBvcHRpb25zLmJvb2xXZWJQcmVmZXJlbmNlRmVh
dHVyZXMoKS5maW5kKGtleSk7CisgICAgaWYgKGl0ICE9IG9wdGlvbnMuYm9vbFdlYlByZWZlcmVu
Y2VGZWF0dXJlcygpLmVuZCgpKQorICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKKyAgICByZXR1
cm4gZGVmYXVsdFZhbHVlOworfQorCiBzdGF0aWMgdm9pZCBzZXRXZWJQcmVmZXJlbmNlc0ZvclRl
c3RPcHRpb25zKElXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMsIGNvbnN0IFdUUjo6VGVzdE9w
dGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNlc1ByaXZhdGU4PiBw
cmVmc1ByaXZhdGUgeyBRdWVyeSwgcHJlZmVyZW5jZXMgfTsKIAotICAgIHByZWZzUHJpdmF0ZS0+
c2V0TWVudUl0ZW1FbGVtZW50RW5hYmxlZChvcHRpb25zLmVuYWJsZU1lbnVJdGVtRWxlbWVudCk7
Ci0gICAgcHJlZnNQcml2YXRlLT5zZXRLZXlnZW5FbGVtZW50RW5hYmxlZChvcHRpb25zLmVuYWJs
ZUtleWdlbkVsZW1lbnQpOwotICAgIHByZWZzUHJpdmF0ZS0+c2V0TW9kZXJuTWVkaWFDb250cm9s
c0VuYWJsZWQob3B0aW9ucy5lbmFibGVNb2Rlcm5NZWRpYUNvbnRyb2xzKTsKLSAgICBwcmVmc1By
aXZhdGUtPnNldEluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQob3B0aW9ucy5lbmFibGVJbnNwZWN0
b3JBZGRpdGlvbnMpOwotICAgIHByZWZzUHJpdmF0ZS0+c2V0UmVxdWVzdElkbGVDYWxsYmFja0Vu
YWJsZWQob3B0aW9ucy5lbmFibGVSZXF1ZXN0SWRsZUNhbGxiYWNrKTsKLSAgICBwcmVmc1ByaXZh
dGUtPnNldEFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxlZChvcHRpb25zLmVuYWJsZUFzeW5jQ2xpcGJv
YXJkQVBJKTsKLSAgICBwcmVmc1ByaXZhdGUtPnNldENvbnRhY3RQaWNrZXJBUElFbmFibGVkKG9w
dGlvbnMuZW5hYmxlQ29udGFjdFBpY2tlckFQSSk7Ci0gICAgcHJlZnNQcml2YXRlLT5zZXRXZWJT
UUxFbmFibGVkKG9wdGlvbnMuZW5hYmxlV2ViU1FMKTsKLSAgICBwcmVmc1ByaXZhdGUtPnNldEFs
bG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMob3B0aW9ucy5hbGxvd1RvcE5hdmlnYXRpb25Ub0Rh
dGFVUkxzKTsKLSAgICBwcmVmZXJlbmNlcy0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChvcHRp
b25zLnVzZUVwaGVtZXJhbFNlc3Npb24pOwotICAgIHByZWZlcmVuY2VzLT5zZXRVc2VzUGFnZUNh
Y2hlKG9wdGlvbnMuZW5hYmxlQmFja0ZvcndhcmRDYWNoZSk7Ci0gICAgcHJlZnNQcml2YXRlLT5z
ZXRDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkKG9wdGlvbnMuZW5hYmxlQ1NTT01WaWV3
U21vb3RoU2Nyb2xsaW5nKTsKKyAgICBwcmVmZXJlbmNlcy0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZChvcHRpb25zLnVzZUVwaGVtZXJhbFNlc3Npb24oKSk7CisgICAgcHJlZmVyZW5jZXMtPnNl
dFVzZXNQYWdlQ2FjaGUoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIlVzZXNCYWNrRm9y
d2FyZENhY2hlIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldE1lbnVJ
dGVtRWxlbWVudEVuYWJsZWQoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIk1lbnVJdGVt
RWxlbWVudEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucykpOworICAgIHByZWZzUHJpdmF0ZS0+c2V0
S2V5Z2VuRWxlbWVudEVuYWJsZWQoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIktleWdl
bkVsZW1lbnRFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOworICAgIHByZWZzUHJpdmF0ZS0+c2V0
TW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUo
Ik1vZGVybk1lZGlhQ29udHJvbHNFbmFibGVkIiwgdHJ1ZSwgb3B0aW9ucykpOworICAgIHByZWZz
UHJpdmF0ZS0+c2V0SW5zcGVjdG9yQWRkaXRpb25zRW5hYmxlZChib29sV2ViUHJlZmVyZW5jZUZl
YXR1cmVWYWx1ZSgiSW5zcGVjdG9yQWRkaXRpb25zRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKSk7
CisgICAgcHJlZnNQcml2YXRlLT5zZXRSZXF1ZXN0SWRsZUNhbGxiYWNrRW5hYmxlZChib29sV2Vi
UHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiUmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWQiLCBmYWxz
ZSwgb3B0aW9ucykpOworICAgIHByZWZzUHJpdmF0ZS0+c2V0QXN5bmNDbGlwYm9hcmRBUElFbmFi
bGVkKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJBc3luY0NsaXBib2FyZEFQSUVuYWJs
ZWQiLCBmYWxzZSwgb3B0aW9ucykpOworICAgIHByZWZzUHJpdmF0ZS0+c2V0Q29udGFjdFBpY2tl
ckFQSUVuYWJsZWQoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkNvbnRhY3RQaWNrZXJB
UElFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldEFsbG93
VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkFs
bG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMiLCB0cnVlLCBvcHRpb25zKSk7CisgICAgcHJlZnNQ
cml2YXRlLT5zZXRDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkKGJvb2xXZWJQcmVmZXJl
bmNlRmVhdHVyZVZhbHVlKCJDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkIiwgZmFsc2Us
IG9wdGlvbnMpKTsKIH0KIAogc3RhdGljIFN0cmluZyBhcHBsaWNhdGlvbklkKCkKQEAgLTk3Myw5
ICs5ODIsOSBAQCBzdGF0aWMgdm9pZCBzZXRKU0NPcHRpb25zKGNvbnN0IFdUUjo6VGVzCiAgICAg
ICAgIHNhdmVkT3B0aW9ucy5jbGVhcigpOwogICAgIH0KIAotICAgIGlmIChvcHRpb25zLmpzY09w
dGlvbnMubGVuZ3RoKCkpIHsKKyAgICBpZiAoIW9wdGlvbnMuanNjT3B0aW9ucy5lbXB0eSgpKSB7
CiAgICAgICAgIEpTQzo6T3B0aW9uczo6ZHVtcEFsbE9wdGlvbnNJbkFMaW5lKHNhdmVkT3B0aW9u
cyk7Ci0gICAgICAgIEpTQzo6T3B0aW9uczo6c2V0T3B0aW9ucyhvcHRpb25zLmpzY09wdGlvbnMu
Y19zdHIoKSk7CisgICAgICAgIEpTQzo6T3B0aW9uczo6c2V0T3B0aW9ucyhvcHRpb25zLmpzY09w
dGlvbnMoKS5jX3N0cigpKTsKICAgICB9CiB9CiAKQEAgLTExNjgsNyArMTE3Nyw3IEBAIHN0YXRp
YyBib29sIGhhbmRsZUNvbnRyb2xDb21tYW5kKGNvbnN0IGMKIAogc3RhdGljIFdUUjo6VGVzdE9w
dGlvbnMgdGVzdE9wdGlvbnNGb3JUZXN0KGNvbnN0IFdUUjo6VGVzdENvbW1hbmQmIGNvbW1hbmQp
CiB7Ci0gICAgV1RSOjpUZXN0RmVhdHVyZXMgZmVhdHVyZXM7CisgICAgV1RSOjpUZXN0RmVhdHVy
ZXMgZmVhdHVyZXMgPSBXVFI6OlRlc3RPcHRpb25zOjpkZWZhdWx0cygpOwogICAgIFdUUjo6bWVy
Z2UoZmVhdHVyZXMsIFdUUjo6aGFyZGNvZGVkRmVhdHVyZXNCYXNlZE9uUGF0aEZvclRlc3QoY29t
bWFuZCkpOwogICAgIFdUUjo6bWVyZ2UoZmVhdHVyZXMsIFdUUjo6ZmVhdHVyZURlZmF1bHRzRnJv
bVRlc3RIZWFkZXJGb3JUZXN0KGNvbW1hbmQsIFdUUjo6VGVzdE9wdGlvbnM6OmtleVR5cGVNYXBw
aW5nKCkpKTsKIApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MjEsMTcgKzkyMSwxNiBAQCB2b2lkIFRlc3RD
b250cm9sbGVyOjpyZXNldFByZWZlcmVuY2VzVG9DCiAgICAgcGxhdGZvcm1SZXNldFByZWZlcmVu
Y2VzVG9Db25zaXN0ZW50VmFsdWVzKCk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZh
bHVlXSA6IG9wdGlvbnMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAgICAgICBXS1By
ZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5KHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkp
LmdldCgpKTsKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleUZvclRlc3Rp
bmcocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOwogCiAgICAgZm9yIChjb25z
dCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLmRvdWJsZVdlYlByZWZlcmVuY2VGZWF0dXJl
cygpKQotICAgICAgICBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXkocHJlZmVyZW5j
ZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOworICAgICAgICBXS1ByZWZlcmVuY2VzU2V0RG91
YmxlVmFsdWVGb3JLZXlGb3JUZXN0aW5nKHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdl
dCgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy51aW50
MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKLSAgICAgICAgV0tQcmVmZXJlbmNlc1NldFVJbnQz
MlZhbHVlRm9yS2V5KHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKKyAgICAg
ICAgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNl
cywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXks
IHZhbHVlXSA6IG9wdGlvbnMuc3RyaW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCi0gICAgICAg
IFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleShwcmVmZXJlbmNlcywgdG9XSyh2YWx1
ZSkuZ2V0KCksIHRvV0soa2V5KS5nZXQoKSk7Ci0KKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldFN0
cmluZ1ZhbHVlRm9yS2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdG9XSyh2YWx1ZSkuZ2V0KCks
IHRvV0soa2V5KS5nZXQoKSk7CiB9CiAKIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVU
b0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlc2V0U3RhZ2Ug
cmVzZXRTdGFnZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411695</attachid>
            <date>2020-10-17 19:13:13 -0700</date>
            <delta_ts>2020-10-18 09:19:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201017191312.patch</filename>
            <type>text/plain</type>
            <size>58446</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTE3ICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVu
ZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBXS1ByZWZlcmVuY2Vz
U2V0KlZhbHVlRm9yS2V5IFNQSSB0byBXS1ByZWZlcmVuY2VzU2V0KlZhbHVlRm9yS2V5Rm9yVGVz
dGluZworICAgICAgICB0byBtYWtlIGl0IGNsZWFyIHdoYXQgdGhleSBhcmUgdXNlZCBmb3IgYW5k
IGZvciBjb25zaXN0ZW5jeSB3aXRoIFdlYktpdExlZ2FjeS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29s
VmFsdWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXREb3VibGVW
YWx1ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZh
bHVlRm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFs
dWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVG
b3JLZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9y
S2V5KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktl
eSk6IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJp
dmF0ZS5oOgorCiAyMDIwLTEwLTE2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBJbnRyb2R1Y2UgUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5IHRvIG1hbmFnZSB0aGUgcmVzb3VyY2VzIGluIHRoZSBHUFUgUHJvY2VzcwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5j
cHAJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UHJlZmVyZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCwyMiArNzgsMjIgQEAgdm9pZCBX
S1ByZWZlcmVuY2VzU2V0SW50ZXJuYWxEZWJ1Z0ZlYXR1cgogICAgIHRvSW1wbChwcmVmZXJlbmNl
c1JlZiktPnNldEludGVybmFsRGVidWdGZWF0dXJlRW5hYmxlZEZvcktleSh0b1dURlN0cmluZyhp
bnRlcm5hbERlYnVnRmVhdHVyZUtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2Vz
U2V0Qm9vbFZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wg
dmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZv
cktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1
ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldEJv
b2xWYWx1ZUZvcktleSh0b1dURlN0cmluZyhrZXkpLCB2YWx1ZSk7CiB9CiAKLXZvaWQgV0tQcmVm
ZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIGRvdWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0
RG91YmxlVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIGRvdWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJl
bmNlc1JlZiktPnNldEJvb2xWYWx1ZUZvcktleSh0b1dURlN0cmluZyhrZXkpLCB2YWx1ZSk7CiB9
CiAKLXZvaWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNS
ZWYgcHJlZmVyZW5jZXNSZWYsIHVpbnQzMl90IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCit2b2lk
IFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKIHsK
ICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRVSW50MzJWYWx1ZUZvcktleSh0b1dURlN0
cmluZyhrZXkpLCB2YWx1ZSk7CiB9CiAKLXZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVl
Rm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RyaW5nUmVmIHZhbHVl
LCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktl
eUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYg
dmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKIHsKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5z
ZXRTdHJpbmdWYWx1ZUZvcktleSh0b1dURlN0cmluZyhrZXkpLCB0b1dURlN0cmluZyh2YWx1ZSkp
OwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1Jl
ZlByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NiwxMCArNTYsMTAgQEAgV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1Jlc2V0
QWxsSW50ZQogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldEludGVybmFsRGVidWdGZWF0
dXJlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYsIGJvb2wsIFdLU3RyaW5nUmVmKTsKIAogLy8gVGhl
IGZvbGxvd2luZyBnZW5lcmljIHNldHRlciBmdW5jdGlvbnMgYXJlIG9ubHkgaW50ZW5kZWQgZm9y
IHVzZSBieSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlLgotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJl
bmNlc1NldEJvb2xWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBi
b29sIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNl
c1NldERvdWJsZVZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGRv
dWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKLVdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5j
ZXNTZXRVSW50MzJWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1
aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKLVdLX0VYUE9SVCB2b2lkIFdLUHJlZmVy
ZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVm
LCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VYUE9SVCB2b2lkIFdL
UHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXNSZWYsIGJvb2wgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7CitXS19FWFBPUlQg
dm9pZCBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVy
ZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGRvdWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsK
K1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleUZvclRlc3Rp
bmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3Ry
aW5nUmVmIGtleSk7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVG
b3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RyaW5n
UmVmIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwogCiAvLyBGb3IgVGVzdCBSdW5uZXIgVXNlIG9u
bHkuCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzUmVzZXRUZXN0UnVubmVyT3ZlcnJpZGVz
KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpOwpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMTAtMTcgIFNh
bSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFtUZXN0aW5nXSBDb252ZXJ0
IER1bXBSZW5kZXJUcmVlIHRvIHVzZSBnZW5lcmF0ZWQgdGVzdCBoZWFkZXIgb3B0aW9ucworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3ODgwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIGEgc2V0
IG9mIHNldHRlcnMgdG8gZm9yIER1bXBSZW5kZXJUcmVlIHRvIHVzZSB3aGVuIHNldHRpbmcgcHJl
ZmVyZW5jZXMKKyAgICAgICAgYnkgc3RyaW5nLgorCisgICAgICAgICogV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3N3aXRjaE5ldHdvcmtMb2Fk
ZXJUb05ld1Rlc3RpbmdTZXNzaW9uXSk6CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIF9zZXRD
dXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6XSk6CisgICAgICAg
ICgrW1dlYlByZWZlcmVuY2VzIF9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uXSk6CisgICAgICAg
ICgtW1dlYlByZWZlcmVuY2VzIF9zZXRCb29sUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6
Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0VUludDMyUHJlZmVyZW5j
ZUZvclRlc3RpbmdXaXRoVmFsdWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNl
cyBfc2V0RG91YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6Zm9yS2V5Ol0pOgorICAg
ICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRo
VmFsdWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0UHJlZmVyZW5j
ZUZvclRlc3RXaXRoVmFsdWU6Zm9yS2V5Ol0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlZpZXcv
V2ViUHJlZmVyZW5jZXNQcml2YXRlLmg6CisKIDIwMjAtMTAtMTcgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgogCiAgICAgICAgIENvbnZlcnQgcHJlZmVyZW5jZXMgaW4gV2ViUHJlZmVy
ZW5jZXNQcml2YXRlLmggdG8gdXNlIEBwcm9wZXJ0eSBzeW50YXggdG8gbWFrZSB0aGVtIG1vcmUg
bWFuYWdlYWJsZQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYw
LDI2ICsxNjYwLDYgQEAgKyAodm9pZClfc2V0SUJDcmVhdG9ySUQ6KE5TU3RyaW5nICopc3RyaQog
ICAgIFtvbGQgcmVsZWFzZV07CiB9CiAKLSsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05l
d1Rlc3RpbmdTZXNzaW9uCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBXZWJUaHJl
YWRMb2NrKCk7Ci0jZW5kaWYKLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRv
TmV3VGVzdGluZ1Nlc3Npb24oKTsKLX0KLQotKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vz
c2lvbgotewotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCkuZGVsZXRlQWxsQ29va2llcygpOwotfQotCi0rICh2b2lkKV9zZXRDdXJyZW50TmV0d29y
a0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSlwb2xpY3kKLXsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2ll
U3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCkuY29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsgLy8gV2lsbCBm
YWlsIHdoZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNz
aW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KLSAgICBDRkhUVFBDb29raWVTdG9yYWdl
U2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7Ci19Ci0K
IC0gKEJPT0wpaXNET01QYXN0ZUFsbG93ZWQKIHsKICAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1
ZUZvcktleTpXZWJLaXRET01QYXN0ZUFsbG93ZWRQcmVmZXJlbmNlS2V5XTsKQEAgLTE5NjYsMTEg
KzE5NDYsNiBAQCAtICh2b2lkKXdpbGxBZGRUb1dlYlZpZXcKICAgICArK19wcml2YXRlLT5udW1X
ZWJWaWV3czsKIH0KIAotLSAodm9pZClfc2V0UHJlZmVyZW5jZUZvclRlc3RXaXRoVmFsdWU6KE5T
U3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQotewotICAgIFtzZWxmIF9zZXRT
dHJpbmdWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKLX0KLQogLSAodm9pZClzZXRGdWxsU2NyZWVu
RW5hYmxlZDooQk9PTClmbGFnCiB7CiAgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTpmbGFnIGZvcktl
eTpXZWJLaXRGdWxsU2NyZWVuRW5hYmxlZFByZWZlcmVuY2VLZXldOwpAQCAtMzAxMyw2ICsyOTg4
LDUxIEBAIC0gKHZvaWQpX3NldEVuYWJsZWQ6KEJPT0wpdmFsdWUgZm9yRmVhdHUKIAogQGVuZAog
CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVRlc3RpbmcpCisK
KysgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uCit7CisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBXZWJUaHJlYWRMb2NrKCk7CisjZW5kaWYKKyAgICBO
ZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKK30K
KworKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9s
aWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9saWN5Cit7CisgICAgUmV0YWluUHRyPENG
SFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Np
b25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsKKyAgICBBU1NF
UlQoY29va2llU3RvcmFnZSk7IC8vIFdpbGwgZmFpbCB3aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhh
bmQuCisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVT
dG9yYWdlLmdldCgpLCBwb2xpY3kpOworfQorCisrICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJT
ZXNzaW9uCit7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKS5kZWxldGVBbGxDb29raWVzKCk7Cit9CisKKy0gKHZvaWQpX3NldEJvb2xQcmVmZXJl
bmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTooQk9PTCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5
Cit7CisgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAo
dm9pZClfc2V0VUludDMyUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KHVpbnQzMl90KXZh
bHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2VsZiBfc2V0SW50ZWdlclZhbHVl
OnZhbHVlIGZvcktleTprZXldOworfQorCistICh2b2lkKV9zZXREb3VibGVQcmVmZXJlbmNlRm9y
VGVzdGluZ1dpdGhWYWx1ZTooZG91YmxlKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sK
KyAgICBbc2VsZiBfc2V0RmxvYXRWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAodm9p
ZClfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KE5TU3RyaW5nICopdmFs
dWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9zZXRTdHJpbmdWYWx1ZTp2
YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworQGVuZAorCiBAaW1wbGVtZW50YXRpb24gV2ViUHJlZmVy
ZW5jZXMgKFdlYlByaXZhdGVQcmVmZXJlbmNlc0NvbnZlcnRlZFRvV2ViRmVhdHVyZSkKIAogLSAo
Qk9PTCl1c2VyR2VzdHVyZVByb21pc2VQcm9wYWdhdGlvbkVuYWJsZWQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZh
dGUuaAkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtODksMTMgKzg5LDYg
QEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZSkKICsgKHZvaWQpX3NldElu
aXRpYWxEZWZhdWx0VGV4dEVuY29kaW5nVG9TeXN0ZW1FbmNvZGluZzsKICsgKHZvaWQpX3NldElC
Q3JlYXRvcklEOihOU1N0cmluZyAqKXN0cmluZzsKIAotLy8gRm9yIER1bXBSZW5kZXJUcmVlIHVz
ZSBvbmx5LgotKyAodm9pZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb247
Ci0rICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xp
Y3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSljb29raWVBY2NlcHRQb2xpY3k7Ci0rICh2b2lk
KV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uOwotLy8gVXNlZCB0byBzZXQgcHJlZmVyZW5jZSBz
cGVjaWZpZWQgaW4gdGhlIHRlc3QgdmlhIExheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJl
ZmVyZW5jZSguLikuCi0tICh2b2lkKV9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhWYWx1ZTooTlNT
dHJpbmcgKil2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OwotCiArICh2b2lkKXNldFdlYktp
dExpbmtUaW1lVmVyc2lvbjooaW50KXZlcnNpb247CiAKIC8vIEZvciBXZWJWaWV3J3MgdXNlIG9u
bHkuCkBAIC0zMTAsNiArMzAzLDE4IEBAIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlBy
aXZhdGVGZWEKIC0gKHZvaWQpX3NldEVuYWJsZWQ6KEJPT0wpdmFsdWUgZm9yRmVhdHVyZTooV2Vi
RmVhdHVyZSAqKWZlYXR1cmU7CiBAZW5kCiAKK0BpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdl
YlByaXZhdGVUZXN0aW5nKQorKyAodm9pZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGlu
Z1Nlc3Npb247CisrICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVB
Y2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSljb29raWVBY2NlcHRQb2xpY3k7
CisrICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uOworCistICh2b2lkKV9zZXRCb29s
UHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KEJPT0wpdmFsdWUgZm9yS2V5OihOU1N0cmlu
ZyAqKWtleTsKKy0gKHZvaWQpX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVl
Oih1aW50MzJfdCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OworLSAodm9pZClfc2V0RG91
YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KGRvdWJsZSl2YWx1ZSBmb3JLZXk6KE5T
U3RyaW5nICopa2V5OworLSAodm9pZClfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRo
VmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKworQGVuZAor
CiAvLyBGSVhNRTogSWYgdGhlc2UgYXJlIG5vdCB1c2VkIGFueXdoZXJlLCB3ZSBzaG91bGQgcmVt
b3ZlIHRoZW0gYW5kIG9ubHkgdXNlIFdlYkZlYXR1cmUgbWVjaGFuaXNtIGZvciB0aGUgcHJlZmVy
ZW5jZS4KIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGVQcmVmZXJlbmNlc0Nv
bnZlcnRlZFRvV2ViRmVhdHVyZSkKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHVzZXJHZXN0
dXJlUHJvbWlzZVByb3BhZ2F0aW9uRW5hYmxlZDsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDIwLTEwLTE3ICBTYW0g
V2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBE
dW1wUmVuZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtXSVBdCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rl
c3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiOiBBZGRlZC4K
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RPcHRpb25zOjpkZWZhdWx0cyk6CisgICAgICAgIChXVFI6OlRlc3RPcHRpb25zOjp3ZWJW
aWV3SXNDb21wYXRpYmxlV2l0aE9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV1RSOjpmZWF0dXJl
VmFsdWUpOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6Ym9vbFRlc3RSdW5uZXJGZWF0dXJl
VmFsdWUgY29uc3QpOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6c3RyaW5nVGVzdFJ1bm5l
ckZlYXR1cmVWYWx1ZSBjb25zdCk6CisgICAgICAgIChXVFI6OnNldFZhbHVlSWZTZXRJbk1hcCk6
IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlRlc3RPcHRpb25zOjpUZXN0T3B0aW9ucyk6IERlbGV0
ZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuaDoKKyAgICAgICAgKFdU
Ujo6VGVzdE9wdGlvbnM6OlRlc3RPcHRpb25zKToKKyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6
OmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBjb25zdCk6CisgICAgICAgIChXVFI6OlRlc3RPcHRp
b25zOjplbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkIGNvbnN0KToKKyAgICAgICAgKFdU
Ujo6VGVzdE9wdGlvbnM6OmxheWVyQmFja2VkV2ViVmlldyBjb25zdCk6CisgICAgICAgIChXVFI6
OlRlc3RPcHRpb25zOjp1c2VFcGhlbWVyYWxTZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdUUjo6
VGVzdE9wdGlvbnM6OmFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzIGNvbnN0KToKKyAgICAg
ICAgKFdUUjo6VGVzdE9wdGlvbnM6OmpzY09wdGlvbnMgY29uc3QpOgorICAgICAgICAoV1RSOjpU
ZXN0T3B0aW9uczo6Ym9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyBjb25zdCk6CisgICAgICAgIChX
VFI6OlRlc3RPcHRpb25zOjpkb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMgY29uc3QpOgorICAg
ICAgICAoV1RSOjpUZXN0T3B0aW9uczo6dWludDMyV2ViUHJlZmVyZW5jZUZlYXR1cmVzIGNvbnN0
KToKKyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6OnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJl
cyBjb25zdCk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHRvTlMpOgorICAgICAgICAoY3JlYXRl
V2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdyk6CisgICAgICAgIChyZXNldFdlYlByZWZlcmVuY2Vz
VG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9w
dGlvbnMpOgorICAgICAgICAoc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXNGb3JUZXN0aW5n
KToKKyAgICAgICAgKHNldEpTQ09wdGlvbnMpOgorICAgICAgICAocmVzZXRXZWJWaWV3VG9Db25z
aXN0ZW50U3RhdGUpOgorICAgICAgICAodGVzdE9wdGlvbnNGb3JUZXN0KToKKyAgICAgICAgKHJ1
blRlc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgor
ICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKToKKyAgICAgICAg
KFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24pOgorICAgICAgICAoVGVzdFJ1
bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldENhY2hl
TW9kZWwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tOgorICAg
ICAgICAoLVtVSURlbGVnYXRlIHJlc2V0VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nOl0p
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVl
cyk6CisKIDIwMjAtMTAtMTcgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtGbGF0cGFrIFNES10gZmxhdHBha3V0aWxzLnB5IHJlcG9ydHMgIktleUVy
cm9yOiAnZ2NjJyIgZXJyb3IgaWYgdXNpbmcgd2l0aCBpY2VjYyBhbmQgdG9vbGNoYWlucyBhcmVu
J3QgZ2VuZXJhdGVkIHlldApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvQ01ha2VMaXN0cy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvQ01ha2VMaXN0cy50eHQJKHJl
dmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIGxpc3QoQVBQRU5EIER1bXBSZW5kZXJUcmVl
X1BSSVZBVEVfSU5DTFUKICkKIAogc2V0KER1bXBSZW5kZXJUcmVlX1dFQl9QUkVGRVJFTkNFU19U
RU1QTEFURVMKKyAgICAke0R1bXBSZW5kZXJUcmVlX0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNlc1Rl
bXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVy
YgogICAgICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVz
L1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYgogKQogCkBAIC01NSwxMCArNTYsMTEgQEAg
c2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzKCR7RHVtcFJlbmRlcgogYWRkX2N1c3RvbV9jb21t
YW5kKAogICAgIE9VVFBVVCAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9L1Rl
c3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCiAgICAgREVQRU5EUyAke0R1bXBSZW5kZXJUcmVlX1dF
Ql9QUkVGRVJFTkNFU19URU1QTEFURVN9ICR7RHVtcFJlbmRlclRyZWVfV0VCX1BSRUZFUkVOQ0VT
fSBXVEZfQ29weVByZWZlcmVuY2VzCi0gICAgQ09NTUFORCAke1JVQllfRVhFQ1VUQUJMRX0gJHtX
VEZfU0NSSVBUU19ESVJ9L0dlbmVyYXRlUHJlZmVyZW5jZXMucmIgLS1mcm9udGVuZCBXZWJLaXRM
ZWdhY3kgLS1iYXNlICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNl
cy55YW1sIC0tZGVidWcgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVu
Y2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRhbCAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5j
ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCAtLWludGVybmFsICR7V1RGX1NDUklQ
VFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwgLS1vdXRwdXRE
aXIgIiR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0iIC0tdGVtcGxhdGUgJHtE
dW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlv
bnNHZW5lcmF0ZWRLZXlzLmguZXJiCisgICAgQ09NTUFORCAke1JVQllfRVhFQ1VUQUJMRX0gJHtX
VEZfU0NSSVBUU19ESVJ9L0dlbmVyYXRlUHJlZmVyZW5jZXMucmIgLS1mcm9udGVuZCBXZWJLaXRM
ZWdhY3kgLS1iYXNlICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNl
cy55YW1sIC0tZGVidWcgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVu
Y2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRhbCAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5j
ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCAtLWludGVybmFsICR7V1RGX1NDUklQ
VFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwgLS1vdXRwdXRE
aXIgIiR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0iIC0tdGVtcGxhdGUgJHtE
dW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlv
bnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIgLS10ZW1wbGF0ZSAke0R1
bXBSZW5kZXJUcmVlX0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9u
c0dlbmVyYXRlZEtleXMuaC5lcmIKICAgICBWRVJCQVRJTSkKIAogbGlzdChBUFBFTkQgRHVtcFJl
bmRlclRyZWVfU09VUkNFUworICAgICR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcAogICAgICR7
RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vVGVzdE9wdGlvbnNHZW5lcmF0ZWRL
ZXlzLmgKICkKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNvcHkp
CkBAIC02LDcgKzYsMTAgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRl
LwogJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlL3d0Zi9TY3JpcHRzL1By
ZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAogJChQUk9KRUNUX0RJUikvLi4v
VGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9s
bGVyLmlkbAogJChQUk9KRUNUX0RJUikvQmluZGluZ3MvQ29kZUdlbmVyYXRvckR1bXBSZW5kZXJU
cmVlLnBtCiskKFBST0pFQ1RfRElSKS9EZXJpdmVkU291cmNlcy5tYWtlCiAkKFBST0pFQ1RfRElS
KS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5o
LmVyYgorJChQUk9KRUNUX0RJUikvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0
aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYgorJChQUk9KRUNUX0RJ
UikvU2NyaXB0cy9nZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2gKICQoV0VCQ09SRV9QUklWQVRF
X0hFQURFUlNfRElSKS9Db2RlR2VuZXJhdG9yLnBtCiAkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJT
X0RJUikvSURMQXR0cmlidXRlcy5qc29uCiAkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikv
SURMUGFyc2VyLnBtCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMv
RHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHdvcmtpbmcg
Y29weSkKQEAgLTIsMyArMiw0IEBACiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvRHVtcFJlbmRlclRyZWUvSlNVSVNjcmlwdENvbnRyb2xsZXIuY3BwCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUvSlNVSVNjcmlwdENvbnRyb2xs
ZXIuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVl
L1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lL
ZXlNYXBwaW5nLmNwcApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMu
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy5t
YWtlCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291
cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNSArMzEsMTggQEAgV0VCX1BSRUZFUkVO
Q0VTID0gXAogIwogCiBXRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVTID0gXAorICAgICQoRHVtcFJl
bmRlclRyZWUpL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0
ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIgXAogICAgICQoRHVtcFJlbmRlclRyZWUp
L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmgu
ZXJiIFwKICMKIFdFQl9QUkVGRVJFTkNFU19GSUxFUyA9ICQoYmFzZW5hbWUgJChub3RkaXIgJChX
RUJfUFJFRkVSRU5DRVNfVEVNUExBVEVTKSkpCi1XRUJfUFJFRkVSRU5DRVNfUEFUVEVSTlMgPSAk
KHN1YnN0IC5lcmIsLCQoV0VCX1BSRUZFUkVOQ0VTX0ZJTEVTKSkKK1dFQl9QUkVGRVJFTkNFU19Q
QVRURVJOUyA9ICQoc3Vic3QgLiwlLCQoV0VCX1BSRUZFUkVOQ0VTX0ZJTEVTKSkKIAotYWxsIDog
JChXRUJfUFJFRkVSRU5DRVNfRklMRVMpCiskKGluZm8gJChXRUJfUFJFRkVSRU5DRVNfVEVNUExB
VEVTKSkKKyQoaW5mbyAkKFdFQl9QUkVGRVJFTkNFU19GSUxFUykpCiskKGluZm8gJChXRUJfUFJF
RkVSRU5DRVNfUEFUVEVSTlMpKQogCi0kKFdFQl9QUkVGRVJFTkNFU19QQVRURVJOUykgOiAkKFdU
Rl9CVUlMRF9TQ1JJUFRTX0RJUikvR2VuZXJhdGVQcmVmZXJlbmNlcy5yYiAkKFdFQl9QUkVGRVJF
TkNFU19URU1QTEFURVMpICQoV0VCX1BSRUZFUkVOQ0VTKQotCSQoUlVCWSkgJDwgLS1mcm9udGVu
ZCBXZWJLaXRMZWdhY3kgLS1iYXNlICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNl
cy9XZWJQcmVmZXJlbmNlcy55YW1sIC0tZGVidWcgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1By
ZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRhbCAke1dURl9C
VUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwu
eWFtbCAtLWludGVybmFsICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQ
cmVmZXJlbmNlc0ludGVybmFsLnlhbWwgJChhZGRwcmVmaXggLS10ZW1wbGF0ZSAsICQoV0VCX1BS
RUZFUkVOQ0VTX1RFTVBMQVRFUykpCiskKFdFQl9QUkVGRVJFTkNFU19QQVRURVJOUykgOiAkKFdF
Ql9QUkVGRVJFTkNFU19URU1QTEFURVMpICQoV0VCX1BSRUZFUkVOQ0VTKSAkKFdURl9CVUlMRF9T
Q1JJUFRTX0RJUikvR2VuZXJhdGVQcmVmZXJlbmNlcy5yYgorCSQoUlVCWSkgJChXVEZfQlVJTERf
U0NSSVBUU19ESVIpL0dlbmVyYXRlUHJlZmVyZW5jZXMucmIgLS1mcm9udGVuZCBXZWJLaXRMZWdh
Y3kgLS1iYXNlICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJl
bmNlcy55YW1sIC0tZGVidWcgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dl
YlByZWZlcmVuY2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRhbCAke1dURl9CVUlMRF9TQ1JJUFRT
X0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCAtLWludGVy
bmFsICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0lu
dGVybmFsLnlhbWwgJChhZGRwcmVmaXggLS10ZW1wbGF0ZSAsICQoV0VCX1BSRUZFUkVOQ0VTX1RF
TVBMQVRFUykpCiAKIAogVUlTQ1JJUFRDT05URVhUX0RJUiA9ICQoRHVtcFJlbmRlclRyZWUpLy4u
L1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzCkBAIC02OCw2ICs3MSw3
IEBAIEpTJS5oIEpTJS5jcHAgOiAlLmlkbCAkKFNDUklQVFMpICQoSURMX0EKIAlAcGVybCAtSSAk
KFdlYkNvcmVTY3JpcHRzKSAtSSAkKFVJU0NSSVBUQ09OVEVYVF9ESVIpIC1JICQoRHVtcFJlbmRl
clRyZWUpL0JpbmRpbmdzICQoV2ViQ29yZVNjcmlwdHMpL2dlbmVyYXRlLWJpbmRpbmdzLnBsIC0t
ZGVmaW5lcyAiIiAtLWluY2x1ZGUgJChVSVNDUklQVENPTlRFWFRfRElSKSAtLW91dHB1dERpciAu
IC0tZ2VuZXJhdG9yIER1bXBSZW5kZXJUcmVlIC0taWRsQXR0cmlidXRlc0ZpbGUgJChJRExfQVRU
UklCVVRFU19GSUxFKSAkPAogCiBhbGwgOiBcCisgICAgJChXRUJfUFJFRkVSRU5DRVNfRklMRVMp
IFwKICAgICAkKFVJQ09OVEVYVF9JTlRFUkZBQ0VTOiU9SlMlLmgpIFwKICAgICAkKFVJQ09OVEVY
VF9JTlRFUkZBQ0VTOiU9SlMlLmNwcCkgXAogIwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUv
VGVzdE9wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RP
cHRpb25zLmNwcAkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVz
dE9wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw0NCBAQAogCiBuYW1lc3Bh
Y2UgV1RSIHsKIAorY29uc3QgVGVzdEZlYXR1cmVzJiBUZXN0T3B0aW9uczo6ZGVmYXVsdHMoKQor
eworICAgIHN0YXRpYyBUZXN0RmVhdHVyZXMgZmVhdHVyZXM7CisgICAgaWYgKGZlYXR1cmVzLmJv
b2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMuZW1wdHkoKSkgeworICAgICAgICBmZWF0dXJlcy5ib29s
V2ViUHJlZmVyZW5jZUZlYXR1cmVzID0geworICAgICAgICAgICAgLy8gVGhlc2UgYXJlIFdlYlBy
ZWZlcmVuY2UgdmFsdWVzIHRoYXQgbXVzdCBhbHdheXMgYmUgc2V0IGFzIHRoZXkgbWF5CisgICAg
ICAgICAgICAvLyBkaWZmZXIgZnJvbSB0aGUgZGVmYXVsdCBzZXQgaW4gdGhlIFdlYlByZWZlcmVu
Y2VzKi55YW1sIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICB7ICJBbGxvd0Nyb3NzT3JpZ2lu
U3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyIsIGZhbHNlIH0sCisgICAgICAgICAgICB7
ICJBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzIiwgdHJ1ZSB9LAorICAgICAgICAgICAgeyAi
QWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJBdHRh
Y2htZW50RWxlbWVudEVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiVXNlc0JhY2tG
b3J3YXJkQ2FjaGUiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQ29sb3JGaWx0ZXJFbmFibGVk
IiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQiLCBm
YWxzZSB9LAorICAgICAgICAgICAgeyAiSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbmFibGVkIiwgZmFs
c2UgfSwKKyAgICAgICAgICAgIHsgIktleWdlbkVsZW1lbnRFbmFibGVkIiwgZmFsc2UgfSwKKyAg
ICAgICAgICAgIHsgIk1lbnVJdGVtRWxlbWVudEVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAg
ICAgeyAiTW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQiLCB0cnVlIH0sCisKKyAgICAgICAgICAg
IHsgIkNTU0xvZ2ljYWxFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkxpbmVIZWln
aHRVbml0c0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiU2VsZWN0aW9uQWNyb3Nz
U2hhZG93Qm91bmRhcmllc0VuYWJsZWQiLCB0cnVlIH0sCisgICAgICAgICAgICB7ICJMYXlvdXRG
b3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCIsIHRydWUgfSwKKworICAgICAgICAg
ICAgeyAiQWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7
ICJBc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZCIsIGZhbHNlIH0sCisg
ICAgICAgICAgICB7ICJBc3luY0NsaXBib2FyZEFQSUVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAg
ICAgICAgeyAiQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCIsIGZhbHNlIH0sCisgICAg
ICAgICAgICB7ICJDb250YWN0UGlja2VyQVBJRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAg
ICB7ICJDb3JlTWF0aE1MRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJSZXF1ZXN0
SWRsZUNhbGxiYWNrRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJSZXNpemVPYnNl
cnZlckVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiV2ViR1BVRW5hYmxlZCIsIGZh
bHNlIH0sCisgICAgICAgIH07CisgICAgfQorICAgIHJldHVybiBmZWF0dXJlczsKK30KKwogY29u
c3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBUZXN0SGVhZGVyS2V5VHlwZT4mIFRl
c3RPcHRpb25zOjprZXlUeXBlTWFwcGluZygpCiB7CiAgICAgc3RhdGljIGNvbnN0IHN0ZDo6dW5v
cmRlcmVkX21hcDxzdGQ6OnN0cmluZywgVGVzdEhlYWRlcktleVR5cGU+IG1hcCB7CkBAIC00Nyw1
NiArODUsNDcgQEAgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBUZQogICAg
IHJldHVybiBtYXA7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIHNldFZh
bHVlSWZTZXRJbk1hcChUJiB2YWx1ZVRvU2V0LCBzdGQ6OnN0cmluZyBrZXksIGNvbnN0IHN0ZDo6
dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgVD4mIG1hcCkKK2Jvb2wgVGVzdE9wdGlvbnM6Ondl
YlZpZXdJc0NvbXBhdGlibGVXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykg
Y29uc3QKK3sKKyAgICBpZiAobV9mZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyAhPSBvcHRp
b25zLm1fZmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAobV9mZWF0dXJlcy5pbnRlcm5hbERlYnVnRmVhdHVyZXMgIT0gb3B0aW9ucy5t
X2ZlYXR1cmVzLmludGVybmFsRGVidWdGZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmIChtX2ZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMgIT0gb3B0aW9ucy5t
X2ZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAobV9mZWF0dXJlcy5kb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMgIT0gb3B0
aW9ucy5tX2ZlYXR1cmVzLmRvdWJsZVdlYlByZWZlcmVuY2VGZWF0dXJlcykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJl
cyAhPSBvcHRpb25zLm1fZmVhdHVyZXMudWludDMyV2ViUHJlZmVyZW5jZUZlYXR1cmVzKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuc3RyaW5nV2ViUHJlZmVyZW5j
ZUZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5zdHJpbmdXZWJQcmVmZXJlbmNlRmVhdHVy
ZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy5ib29sVGVzdFJ1
bm5lckZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5ib29sVGVzdFJ1bm5lckZlYXR1cmVz
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuZG91YmxlVGVzdFJ1
bm5lckZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5kb3VibGVUZXN0UnVubmVyRmVhdHVy
ZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy5zdHJpbmdUZXN0
UnVubmVyRmVhdHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLnN0cmluZ1Rlc3RSdW5uZXJGZWF0
dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLnN0cmluZ1Zl
Y3RvclRlc3RSdW5uZXJGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMuc3RyaW5nVmVjdG9y
VGVzdFJ1bm5lckZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgZmVhdHVyZVZhbHVlKHN0ZDo6c3RyaW5n
IGtleSwgVCBkZWZhdWx0VmFsdWUsIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmlu
ZywgVD4mIG1hcCkKIHsKICAgICBhdXRvIGl0ID0gbWFwLmZpbmQoa2V5KTsKLSAgICBpZiAoaXQg
PT0gbWFwLmVuZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgdmFsdWVUb1NldCA9IGl0LT5zZWNv
bmQ7Ci19Ci0KLVRlc3RPcHRpb25zOjpUZXN0T3B0aW9ucyhUZXN0RmVhdHVyZXMgdGVzdEZlYXR1
cmVzKQotewotICAgIHNldFZhbHVlSWZTZXRJbk1hcChhbGxvd0Nyb3NzT3JpZ2luU3VicmVzb3Vy
Y2VzVG9Bc2tGb3JDcmVkZW50aWFscywgIkFsbG93Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNUb0Fz
a0ZvckNyZWRlbnRpYWxzIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMp
OwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChhbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzLCAi
QWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyIsIHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVy
ZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQWNjZWxlcmF0ZWRE
cmF3aW5nLCAiQWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5ib29sV2Vi
UHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQXR0YWNo
bWVudEVsZW1lbnQsICJBdHRhY2htZW50RWxlbWVudEVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuYm9v
bFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUJh
Y2tGb3J3YXJkQ2FjaGUsICJVc2VzQmFja0ZvcndhcmRDYWNoZSIsIHRlc3RGZWF0dXJlcy5ib29s
V2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQ29s
b3JGaWx0ZXIsICJDb2xvckZpbHRlckVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZl
cmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUluc3BlY3RvckFk
ZGl0aW9ucywgIkluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuYm9vbFdl
YlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUludGVy
c2VjdGlvbk9ic2VydmVyLCAiSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbmFibGVkIiwgdGVzdEZlYXR1
cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChl
bmFibGVLZXlnZW5FbGVtZW50LCAiS2V5Z2VuRWxlbWVudEVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMu
Ym9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJs
ZU1lbnVJdGVtRWxlbWVudCwgIk1lbnVJdGVtRWxlbWVudEVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMu
Ym9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJs
ZU1vZGVybk1lZGlhQ29udHJvbHMsICJNb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCIsIHRlc3RG
ZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLQotICAgIHNldFZhbHVlSWZTZXRJ
bk1hcChlbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkLCAiZW5hYmxlRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uTG9hZCIsIHRlc3RGZWF0dXJlcy5ib29sVGVzdFJ1bm5lckZlYXR1cmVzKTsKLSAg
ICBzZXRWYWx1ZUlmU2V0SW5NYXAoZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyLCAiZHVtcEpTQ29u
c29sZUxvZ0luU3RkRXJyIiwgdGVzdEZlYXR1cmVzLmJvb2xUZXN0UnVubmVyRmVhdHVyZXMpOwot
ICAgIHNldFZhbHVlSWZTZXRJbk1hcChsYXllckJhY2tlZFdlYlZpZXcsICJsYXllckJhY2tlZFdl
YlZpZXciLCB0ZXN0RmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0dXJlcyk7Ci0gICAgc2V0VmFs
dWVJZlNldEluTWFwKHVzZUVwaGVtZXJhbFNlc3Npb24sICJ1c2VFcGhlbWVyYWxTZXNzaW9uIiwg
dGVzdEZlYXR1cmVzLmJvb2xUZXN0UnVubmVyRmVhdHVyZXMpOwotCi0gICAgc2V0VmFsdWVJZlNl
dEluTWFwKGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLCAiYWRkaXRpb25hbFN1cHBvcnRl
ZEltYWdlVHlwZXMiLCB0ZXN0RmVhdHVyZXMuc3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVzKTsKLSAg
ICBzZXRWYWx1ZUlmU2V0SW5NYXAoanNjT3B0aW9ucywgImpzY09wdGlvbnMiLCB0ZXN0RmVhdHVy
ZXMuc3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVzKTsKLQotICAgIHNldFZhbHVlSWZTZXRJbk1hcChl
bmFibGVDU1NMb2dpY2FsLCAiQ1NTTG9naWNhbEVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuaW50ZXJu
YWxEZWJ1Z0ZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlTGluZUhlaWdo
dFVuaXRzLCAiTGluZUhlaWdodFVuaXRzRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5pbnRlcm5hbERl
YnVnRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVTZWxlY3Rpb25BY3Jv
c3NTaGFkb3dCb3VuZGFyaWVzLCAic2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllc0VuYWJs
ZWQiLCB0ZXN0RmVhdHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlm
U2V0SW5NYXAobGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQsICJMYXlv
dXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5pbnRl
cm5hbERlYnVnRmVhdHVyZXMpOwotCi0gICAgc2V0VmFsdWVJZlNldEluTWFwKGFkQ2xpY2tBdHRy
aWJ1dGlvbkVuYWJsZWQsICJBZENsaWNrQXR0cmlidXRpb25FbmFibGVkIiwgdGVzdEZlYXR1cmVz
LmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQXNw
ZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodCwgIkFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lk
dGhBbmRIZWlnaHRFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsK
LSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQXN5bmNDbGlwYm9hcmRBUEksICJBc3luY0Ns
aXBib2FyZEFQSUVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMpOwot
ICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmcsICJD
U1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRh
bEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQ29udGFjdFBpY2tlckFQ
SSwgIkNvbnRhY3RQaWNrZXJBUElFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZl
YXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQ29yZU1hdGhNTCwgIkNvcmVN
YXRoTUxFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKLSAgICBz
ZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlUmVxdWVzdElkbGVDYWxsYmFjaywgIlJlcXVlc3RJZGxl
Q2FsbGJhY2tFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKLSAg
ICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlUmVzaXplT2JzZXJ2ZXIsICJSZXNpemVPYnNlcnZl
ckVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMpOwotICAgIHNldFZh
bHVlSWZTZXRJbk1hcChlbmFibGVXZWJHUFUsICJXZWJHUFVFbmFibGVkIiwgdGVzdEZlYXR1cmVz
LmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKKyAgICBpZiAoaXQgIT0gbWFwLmVuZCgpKQorICAgICAg
ICByZXR1cm4gaXQtPnNlY29uZDsKKyAgICByZXR1cm4gZGVmYXVsdFZhbHVlOworfQorCitib29s
IFRlc3RPcHRpb25zOjpib29sVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZShzdGQ6OnN0cmluZyBrZXks
IGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdAoreworICAgIHJldHVybiBmZWF0dXJlVmFsdWUoa2V5
LCBkZWZhdWx0VmFsdWUsIG1fZmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0dXJlcyk7CiB9CiAK
LWJvb2wgVGVzdE9wdGlvbnM6OndlYlZpZXdJc0NvbXBhdGlibGVXaXRoT3B0aW9ucyhjb25zdCBU
ZXN0T3B0aW9ucyYgb3RoZXIpIGNvbnN0CitzdGQ6OnN0cmluZyBUZXN0T3B0aW9uczo6c3RyaW5n
VGVzdFJ1bm5lckZlYXR1cmVWYWx1ZShzdGQ6OnN0cmluZyBrZXksIHN0ZDo6c3RyaW5nIGRlZmF1
bHRWYWx1ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gb3RoZXIubGF5ZXJCYWNrZWRXZWJWaWV3ID09
IGxheWVyQmFja2VkV2ViVmlldwotICAgICAgICAmJiBvdGhlci5qc2NPcHRpb25zID09IGpzY09w
dGlvbnM7CisgICAgcmV0dXJuIGZlYXR1cmVWYWx1ZShrZXksIGRlZmF1bHRWYWx1ZSwgbV9mZWF0
dXJlcy5zdHJpbmdUZXN0UnVubmVyRmVhdHVyZXMpOwogfQogCiB9CkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL1Rlc3RPcHRpb25zLmgJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL1Rlc3RPcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDUzICszMSwzOSBAQAogCiBu
YW1lc3BhY2UgV1RSIHsKIAotc3RydWN0IFRlc3RPcHRpb25zIHsKLSAgICAvLyBGSVhNRTogUmVt
b3ZlIHRoZXNlIGFuZCByZXBsYWNlIHdpdGggYWNjZXNzIHRvIFRlc3RGZWF0dXJlcyBzZXQuCi0g
ICAgLy8gV2ViIFByZWZlcmVuY2VzCi0gICAgYm9vbCBhbGxvd0Nyb3NzT3JpZ2luU3VicmVzb3Vy
Y2VzVG9Bc2tGb3JDcmVkZW50aWFscyB7IGZhbHNlIH07Ci0gICAgYm9vbCBhbGxvd1RvcE5hdmln
YXRpb25Ub0RhdGFVUkxzIHsgdHJ1ZSB9OwotICAgIGJvb2wgZW5hYmxlQWNjZWxlcmF0ZWREcmF3
aW5nIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUF0dGFjaG1lbnRFbGVtZW50IHsgZmFsc2Ug
fTsKLSAgICBib29sIGVuYWJsZUJhY2tGb3J3YXJkQ2FjaGUgeyBmYWxzZSB9OwotICAgIGJvb2wg
ZW5hYmxlQ29sb3JGaWx0ZXIgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlSW5zcGVjdG9yQWRk
aXRpb25zIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUludGVyc2VjdGlvbk9ic2VydmVyIHsg
ZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUtleWdlbkVsZW1lbnQgeyBmYWxzZSB9OwotICAgIGJv
b2wgZW5hYmxlTWVudUl0ZW1FbGVtZW50IHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZU1vZGVy
bk1lZGlhQ29udHJvbHMgeyB0cnVlIH07Ci0KLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZXNlIGFu
ZCByZXBsYWNlIHdpdGggYWNjZXNzIHRvIFRlc3RGZWF0dXJlcyBzZXQuCi0gICAgLy8gSW50ZXJu
YWwgRmVhdHVyZXMKLSAgICBib29sIGVuYWJsZUNTU0xvZ2ljYWwgeyBmYWxzZSB9OwotICAgIGJv
b2wgZW5hYmxlTGluZUhlaWdodFVuaXRzIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZVNlbGVj
dGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXMgeyB0cnVlIH07Ci0gICAgYm9vbCBsYXlvdXRGb3Jt
YXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCB7IHRydWUgfTsKLQotICAgIC8vIEZJWE1F
OiBSZW1vdmUgdGhlc2UgYW5kIHJlcGxhY2Ugd2l0aCBhY2Nlc3MgdG8gVGVzdEZlYXR1cmVzIHNl
dC4KLSAgICAvLyBFeHBlcmltZW50YWwgRmVhdHVyZXMKLSAgICBib29sIGFkQ2xpY2tBdHRyaWJ1
dGlvbkVuYWJsZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQXNwZWN0UmF0aW9PZkltZ0Zy
b21XaWR0aEFuZEhlaWdodCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVBc3luY0NsaXBib2Fy
ZEFQSSB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmcg
eyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQ29udGFjdFBpY2tlckFQSSB7IGZhbHNlIH07Ci0g
ICAgYm9vbCBlbmFibGVDb3JlTWF0aE1MIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZVJlcXVl
c3RJZGxlQ2FsbGJhY2sgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlUmVzaXplT2JzZXJ2ZXIg
eyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlV2ViR1BVIHsgZmFsc2UgfTsKK2NsYXNzIFRlc3RP
cHRpb25zIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVGVzdEZlYXR1cmVzJiBkZWZhdWx0
cygpOworICAgIHN0YXRpYyBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFRl
c3RIZWFkZXJLZXlUeXBlPiYga2V5VHlwZU1hcHBpbmcoKTsKIAotICAgIC8vIFRlc3QgUnVubmVy
IFNwZWNpZmljIEZlYXR1cmVzCi0gICAgYm9vbCBkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgeyBm
YWxzZSB9OwotICAgIGJvb2wgZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCB7IGZhbHNl
IH07Ci0gICAgYm9vbCBlbmFibGVXZWJTUUwgeyB0cnVlIH07Ci0gICAgYm9vbCBsYXllckJhY2tl
ZFdlYlZpZXcgeyBmYWxzZSB9OwotICAgIGJvb2wgdXNlRXBoZW1lcmFsU2Vzc2lvbiB7IGZhbHNl
IH07Ci0gICAgc3RkOjpzdHJpbmcgYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXM7Ci0gICAg
c3RkOjpzdHJpbmcganNjT3B0aW9uczsKKyAgICBleHBsaWNpdCBUZXN0T3B0aW9ucyhUZXN0RmVh
dHVyZXMgZmVhdHVyZXMpCisgICAgICAgIDogbV9mZWF0dXJlcyhzdGQ6Om1vdmUoZmVhdHVyZXMp
KQorICAgIHsKKyAgICB9CiAKLSAgICBleHBsaWNpdCBUZXN0T3B0aW9ucyhUZXN0RmVhdHVyZXMp
OwogICAgIGJvb2wgd2ViVmlld0lzQ29tcGF0aWJsZVdpdGhPcHRpb25zKGNvbnN0IFRlc3RPcHRp
b25zJikgY29uc3Q7Ci0gICAgCi0gICAgc3RhdGljIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxz
dGQ6OnN0cmluZywgVGVzdEhlYWRlcktleVR5cGU+JiBrZXlUeXBlTWFwcGluZygpOworCisgICAg
Ly8gVGVzdCBSdW5uZXIgU3BlY2lmaWMgRmVhdHVyZXMKKyAgICBib29sIGR1bXBKU0NvbnNvbGVM
b2dJblN0ZEVycigpIGNvbnN0IHsgcmV0dXJuIGJvb2xUZXN0UnVubmVyRmVhdHVyZVZhbHVlKCJk
dW1wSlNDb25zb2xlTG9nSW5TdGRFcnIiLCBmYWxzZSk7IH0KKyAgICBib29sIGVuYWJsZURyYWdE
ZXN0aW5hdGlvbkFjdGlvbkxvYWQoKSBjb25zdCB7IHJldHVybiBib29sVGVzdFJ1bm5lckZlYXR1
cmVWYWx1ZSgiZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCIsIGZhbHNlKTsgfQorICAg
IGJvb2wgbGF5ZXJCYWNrZWRXZWJWaWV3KCkgY29uc3QgeyByZXR1cm4gYm9vbFRlc3RSdW5uZXJG
ZWF0dXJlVmFsdWUoImxheWVyQmFja2VkV2ViVmlldyIsIGZhbHNlKTsgfQorICAgIGJvb2wgdXNl
RXBoZW1lcmFsU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGJvb2xUZXN0UnVubmVyRmVhdHVyZVZh
bHVlKCJ1c2VFcGhlbWVyYWxTZXNzaW9uIiwgZmFsc2UpOyB9CisgICAgc3RkOjpzdHJpbmcgYWRk
aXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMoKSBjb25zdCB7IHJldHVybiBzdHJpbmdUZXN0UnVu
bmVyRmVhdHVyZVZhbHVlKCJhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcyIsIHsgfSk7IH0K
KyAgICBzdGQ6OnN0cmluZyBqc2NPcHRpb25zKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nVGVzdFJ1
bm5lckZlYXR1cmVWYWx1ZSgianNjT3B0aW9ucyIsIHsgfSk7IH0KKworICAgIGNvbnN0IHN0ZDo6
dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgYm9vbD4mIGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVy
ZXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXM7
IH0KKyAgICBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIGRvdWJsZT4mIGRv
dWJsZVdlYlByZWZlcmVuY2VGZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMuZG91
YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzOyB9CisgICAgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFw
PHN0ZDo6c3RyaW5nLCB1aW50MzJfdD4mIHVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJlcygpIGNv
bnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMudWludDMyV2ViUHJlZmVyZW5jZUZlYXR1cmVzOyB9Cisg
ICAgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4mIHN0
cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMuc3Ry
aW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzOyB9CisKKyAgICBzdGF0aWMgc3RkOjpzdHJpbmcgdG9X
ZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGNvbnN0IHN0ZDo6c3RyaW5nJik7CisKK3ByaXZhdGU6
CisgICAgYm9vbCBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZShzdGQ6OnN0cmluZyBrZXks
IGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdDsKKyAgICBib29sIGJvb2xUZXN0UnVubmVyRmVhdHVy
ZVZhbHVlKHN0ZDo6c3RyaW5nIGtleSwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0OworICAgIHN0
ZDo6c3RyaW5nIHN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlVmFsdWUoc3RkOjpzdHJpbmcga2V5LCBz
dGQ6OnN0cmluZyBkZWZhdWx0VmFsdWUpIGNvbnN0OworCisgICAgVGVzdEZlYXR1cmVzIG1fZmVh
dHVyZXM7CiB9OwogCiB9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJl
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsxMDksNyBAQAogCQk1
REI5QUM5RTBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjcwMC50dGYgaW4g
Q29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NUYw
OTc3MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyNzAwLnR0ZiAqLzsgfTsK
IAkJNURCOUFDOUYwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktpdFdlaWdodFdhdGNoZXI4MDAudHRm
IGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
NzVGMDk3ODBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjgwMC50dGYgKi87
IH07CiAJCTVEQjlBQ0EwMEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyOTAw
LnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzc1RjA5NzkwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXI5MDAudHRm
ICovOyB9OworCQk3QzRGMzA0MDI1M0I5NzBGMDAzMDU0NTggLyogVGVzdE9wdGlvbnNHZW5lcmF0
ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDNEYzMDNGMjUzQjgzNjkwMDMwNTQ1OCAvKiBUZXN0T3B0aW9u
c0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwICovOyB9OwogCQk3Q0ZGOUJCRjI1
MzNCQjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRkY5QkJFMjUzM0JCMjQwMDA4MDA5RiAvKiBUZXN0
RmVhdHVyZXMuY3BwICovOyB9OwogCQk3Q0ZGOUJDMjI1MzNCQzE2MDAwODAwOUYgLyogVGVzdENv
bW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0NGRjlCQzEyNTMzQkMxNjAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmNwcCAqLzsgfTsKIAkJODAw
NDVBRUUxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODAwNDVB
RUMxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1t
ICovOyB9OwpAQCAtMzMzLDggKzMzNCwxMiBAQAogCQk3QzQ0Njk3RjI1Mzc3QTAyMDAyNDI5MEEg
LyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJh
dGVkS2V5cy5oLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M0NDY5ODAyNTM3
N0EwMjAwMjQyOTBBIC8qIGNoZWNrLXhjZmlsZWxpc3RzLnNoICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQuc2g7IHBhdGggPSAiY2hl
Y2steGNmaWxlbGlzdHMuc2giOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzQ0Njk4
MTI1Mzc3QTAyMDAyNDI5MEEgLyogZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzLnNoICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQuc2g7
IHBhdGggPSAiZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzLnNoIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJN0M0NDY5ODUyNTM3N0U1MjAwMjQyOTBBIC8qIFRlc3RPcHRpb25zR2VuZXJh
dGVkS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaDsgcGF0
aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QzRGMzAzRjI1M0I4MzY5MDAzMDU0NTggLyogVGVzdE9wdGlv
bnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDOUUyNTBCMjUzQjc5NEEwMDQxMzAxOCAvKiBUZXN0T3B0
aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBUZXN0T3B0
aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0NCQkMzMjIxRERGQ0Y5QTAwNzg2QjlEIC8qIFRlc3RPcHRpb25z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RPcHRpb25zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDQ0JBNTFEMjUzQkI5RDMwMEJCMzJDMSAvKiBEZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2ZpbGVsaXN0OyBwYXRoID0gIkRlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Q0NC
QTUxRTI1M0JCOUQzMDBCQjMyQzEgLyogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Qg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lnhj
ZmlsZWxpc3Q7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0ZGOUJCRDI1MzNCQjI0MDAwODAwOUYgLyogVGVz
dEZlYXR1cmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RGZWF0dXJlcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3Q0ZGOUJCRTI1MzNCQjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlc3RGZWF0dXJlcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDRkY5QkMwMjUzM0JDMTYwMDA4MDA5RiAvKiBUZXN0Q29tbWFuZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZXN0Q29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNTAxLDYgKzUwNiw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAogCQkJCTBGMThFNkYxMUQ2QjlDNjQwMDI3RTU0NyAvKiBEZXJpdmVkU291cmNlcy5tYWtlICov
LAorCQkJCTdDQ0JBNTFEMjUzQkI5RDMwMEJCMzJDMSAvKiBEZXJpdmVkU291cmNlcy1pbnB1dC54
Y2ZpbGVsaXN0ICovLAorCQkJCTdDQ0JBNTFFMjUzQkI5RDMwMEJCMzJDMSAvKiBEZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdCAqLywKIAkJCQk3QzQ0Njk4MjI1Mzc3QzM0MDAyNDI5MEEg
LyogRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTMxNDhBMDY1MUU2RjkwRjQwMEQzQjMxNiAvKiBU
ZXN0UnVubmVyU2hhcmVkICovLAogCQkJCTBGMThFNkU3MUQ2QjlCRjUwMDI3RTU0NyAvKiBVSVNj
cmlwdENvbnRleHQgKi8sCkBAIC03NzAsNiArNzc3LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCiAJCQkJN0M0NDY5N0YyNTM3N0EwMjAwMjQyOTBBIC8qIFRlc3RPcHRp
b25zR2VuZXJhdGVkS2V5cy5oLmVyYiAqLywKKwkJCQk3QzlFMjUwQjI1M0I3OTRBMDA0MTMwMTgg
LyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIgKi8s
CiAJCQkpOwogCQkJcGF0aCA9IFByZWZlcmVuY2VzVGVtcGxhdGVzOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKQEAgLTc3OCw2ICs3ODYsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKIAkJCQk3QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRLZXlzLmggKi8sCisJCQkJN0M0RjMwM0YyNTNCODM2OTAwMzA1NDU4IC8qIFRlc3RP
cHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgKi8sCiAJCQkpOwogCQkJ
bmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQkJcGF0aCA9IERlcml2ZWRTb3VyY2VzL0R1bXBS
ZW5kZXJUcmVlOwpAQCAtMTI5MSw2ICsxMzAwLDcgQEAKIAkJCQk3Q0ZGOUJDMjI1MzNCQzE2MDAw
ODAwOUYgLyogVGVzdENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NGRjlCQkYyNTMz
QkIyNDAwMDgwMDlGIC8qIFRlc3RGZWF0dXJlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMzBB
MjFGODIwNTFEOEM0MDAwOEZGNDIgLyogVGVzdE9wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJN0M0RjMwNDAyNTNCOTcwRjAwMzA1NDU4IC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0
TGVnYWN5S2V5TWFwcGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzAxMzFEQTBDOTc3MjAx
MDA4NzMxN0QgLyogVGVzdFJ1bm5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEIyNDBD
OUIwMTRCMDAxMTQzNjkgLyogVGVzdFJ1bm5lck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0
RDQyMzYxMURENTA0ODIwMDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVySU9TLm0gaW4gU291
cmNlcyAqLywKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1NjcmlwdHMvZ2VuZXJhdGUtZGVy
aXZlZC1zb3VyY2VzLnNoCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Njcmlw
dHMvZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzLnNoCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS9TY3JpcHRzL2dlbmVyYXRlLWRlcml2ZWQtc291cmNlcy5zaAkod29y
a2luZyBjb3B5KQpAQCAtMTUsNSArMTUsNSBAQCBpZiBbICEgJENDIF07IHRoZW4KIGZpCiAKIGlm
IFsgIiR7QUNUSU9OfSIgPSAiYnVpbGQiIC1vICIke0FDVElPTn0iID0gImluc3RhbGwiIC1vICIk
e0FDVElPTn0iID0gImluc3RhbGxoZHJzIiBdOyB0aGVuCi0gICAgbWFrZSAtZiAiJHtEdW1wUmVu
ZGVyVHJlZX0vRGVyaXZlZFNvdXJjZXMubWFrZSIgLWogYC91c3Ivc2Jpbi9zeXNjdGwgLW4gaHcu
YWN0aXZlY3B1YCAiJHtBUkdTW0BdfSIKKyAgICBtYWtlIC1kIC1mICIke0R1bXBSZW5kZXJUcmVl
fS9EZXJpdmVkU291cmNlcy5tYWtlIiAtaiBgL3Vzci9zYmluL3N5c2N0bCAtbiBody5hY3RpdmVj
cHVgICIke0FSR1NbQF19IgogZmkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1NjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlN
YXBwaW5nLmNwcC5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvU2NyaXB0
cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtl
eU1hcHBpbmcuY3BwLmVyYgkobm9uZXhpc3RlbnQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9T
Y3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVn
YWN5S2V5TWFwcGluZy5jcHAuZXJiCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKy8q
CisgKiA8JT0gQHdhcm5pbmcgJT4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiVGVzdE9wdGlvbnMuaCIKKworbmFtZXNwYWNlIFdUUiB7CisKK3N0ZDo6c3RyaW5n
IFRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVuY2VLZXkoY29uc3Qgc3RkOjpzdHJp
bmcmIHdlYlByZWZlcmVuY2VzS2V5KQoreworICAgIHN0YXRpYyBzdGQ6OnVub3JkZXJlZF9tYXA8
c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBub25TdGFuZGFyZEtleXMgPSB7Cis8JS0gZm9yIEBw
cmVmIGluIEBwcmVmZXJlbmNlcy5zZWxlY3QgeyB8cHwgcC5vcHRzWyJ3ZWJLaXRMZWdhY3lQcmVm
ZXJlbmNlS2V5Il0gfSBkbyAtJT4KKyAgICAgICAgeyAiPCU9IEBwcmVmLm5hbWUgJT4iLCAiPCU9
IEBwcmVmLnByZWZlcmVuY2VLZXkgJT4iIH0sIFwKKzwlLSBlbmQgLSU+CisgICAgfTsKKworICAg
IGF1dG8gaXQgPSBub25TdGFuZGFyZEtleXMuZmluZCh3ZWJQcmVmZXJlbmNlc0tleSk7CisgICAg
aWYgKGl0ICE9IG5vblN0YW5kYXJkS2V5cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT5zZWNv
bmQ7CisKKyAgICByZXR1cm4gIldlYktpdCIgKyB3ZWJQcmVmZXJlbmNlc0tleTsKK30KKworfQpJ
bmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkocmV2aXNp
b24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNiArMTMxLDEyIEBAIGV4dGVybiAiQyIgewogCiB1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwogCitzdGF0aWMgUmV0YWluUHRyPE5TU3RyaW5nPiB0b05TKGNvbnN0
IHN0ZDo6c3RyaW5nJiBzdHJpbmcpCit7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tOU1N0cmluZyBh
bGxvY10gaW5pdFdpdGhVVEY4U3RyaW5nOnN0cmluZy5jX3N0cigpXSk7Cit9CisKKwogI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQogQGludGVyZmFjZSBEdW1wUmVuZGVyVHJlZUFwcGxpY2F0aW9u
IDogTlNBcHBsaWNhdGlvbgogQGVuZApAQCAtNjcyLDYgKzY3OCwxMCBAQCBXZWJWaWV3ICpjcmVh
dGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93CiAgICAgW3dlYlZpZXcgc2V0R3JvdXBOYW1lOkAi
b3JnLndlYmtpdC5EdW1wUmVuZGVyVHJlZSJdOwogI2VuZGlmCiAKKyAgICBXZWJQcmVmZXJlbmNl
cyAqcHJlZmVyZW5jZXMgPSBbW1dlYlByZWZlcmVuY2VzIGFsbG9jXSBpbml0XTsKKyAgICBbcHJl
ZmVyZW5jZXMgc2V0QXV0b3NhdmVzOk5PXTsKKyAgICBbd2ViVmlldyBzZXRQcmVmZXJlbmNlczpw
cmVmZXJlbmNlc107CisKICAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOnVpRGVsZWdhdGVdOwog
ICAgIFt3ZWJWaWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOmZyYW1lTG9hZERlbGVnYXRlXTsKICAg
ICBbd2ViVmlldyBzZXRFZGl0aW5nRGVsZWdhdGU6ZWRpdGluZ0RlbGVnYXRlXTsKQEAgLTY4NSw4
ICs2OTUsNiBAQCBXZWJWaWV3ICpjcmVhdGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93CiAgICAg
W1dlYlZpZXcgcmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsOkAiZmVlZHMiXTsKICAgICBbV2ViVmll
dyByZWdpc3RlclVSTFNjaGVtZUFzTG9jYWw6QCJmZWVkc2VhcmNoIl07CiAKLSAgICBbW3dlYlZp
ZXcgcHJlZmVyZW5jZXNdIF9zZXRNZWRpYVJlY29yZGVyRW5hYmxlZDpZRVNdOwotCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIFt3ZWJWaWV3IHNldFdpbmRvd09jY2x1c2lvbkRldGVjdGlvbkVuYWJs
ZWQ6Tk9dOwogICAgIFtXZWJWaWV3IF9zZXRGb250QWxsb3dMaXN0OmZvbnRBbGxvd0xpc3QoKV07
CkBAIC04NDQsOSArODUyLDggQEAgc3RhdGljIHZvaWQgZW5hYmxlRXhwZXJpbWVudGFsRmVhdHVy
ZXMoVwogfQogCiAvLyBDYWxsZWQgYmVmb3JlIGVhY2ggdGVzdC4KLXN0YXRpYyB2b2lkIHJlc2V0
V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKQorc3RhdGljIHZvaWQgcmVzZXRXZWJQ
cmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMp
CiB7Ci0gICAgV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzID0gW1dlYlByZWZlcmVuY2VzIHN0
YW5kYXJkUHJlZmVyZW5jZXNdOwogICAgIGVuYWJsZUV4cGVyaW1lbnRhbEZlYXR1cmVzKHByZWZl
cmVuY2VzKTsKIAogICAgIFtwcmVmZXJlbmNlcyBzZXROZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmls
ZVVSTHNRdWlyazogTk9dOwpAQCAtOTAyLDYgKzkwOSw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2Vi
UHJlZmVyZW5jZXNUb0NvbnNpc3QKICAgICB9IGVsc2UKICAgICAgICAgW3ByZWZlcmVuY2VzIHNl
dFVzZXJTdHlsZVNoZWV0RW5hYmxlZDpOT107CiAKKyAgICBbcHJlZmVyZW5jZXMgc2V0SW5saW5l
TWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGU6Tk9dOwogICAgIFtwcmVm
ZXJlbmNlcyBzZXRNZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lOllFU107CiAgICAgW3ByZWZlcmVu
Y2VzIHNldE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlOk5PXTsKICAgICBbcHJlZmVy
ZW5jZXMgc2V0VmlkZW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmU6Tk9dOwpAQCAtOTI4LDkg
KzkzNiw4IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3QKICNlbmRp
ZgogICAgIFtwcmVmZXJlbmNlcyBzZXRVc2VQcmVIVE1MNVBhcnNlclF1aXJrczpOT107CiAgICAg
W3ByZWZlcmVuY2VzIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOk5PXTsKLSNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBBU1NFUlQoW3ByZWZlcmVuY2VzIG1vY2tTY3Jv
bGxiYXJzRW5hYmxlZF0pOwotI2VuZGlmCisKKyAgICBbcHJlZmVyZW5jZXMgc2V0TW9ja1Njcm9s
bGJhcnNFbmFibGVkOllFU107CiAKICAgICBbcHJlZmVyZW5jZXMgc2V0V2ViQXVkaW9FbmFibGVk
OllFU107CiAgICAgW3ByZWZlcmVuY2VzIHNldE1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJs
ZWQ6WUVTXTsKQEAgLTk2MCw2ICs5NjcsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVu
Y2VzVG9Db25zaXN0CiAgICAgcHJlZmVyZW5jZXMubWVkaWFDYXBhYmlsaXRpZXNFbmFibGVkID0g
WUVTOwogCiAgICAgcHJlZmVyZW5jZXMuc2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllc0Vu
YWJsZWQgPSBZRVM7CisgICAgcHJlZmVyZW5jZXMuZnVsbFNjcmVlbkVuYWJsZWQgPSBZRVM7CiAK
ICAgICBbcHJlZmVyZW5jZXMgc2V0V2ViU1FMRW5hYmxlZDpZRVNdOwogCkBAIC05NjcsMzQgKzk3
NSwyMSBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0CiAgICAgW1dl
YlByZWZlcmVuY2VzIF9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQ
b2xpY3k6TlNIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW5d
OwogfQogCi1zdGF0aWMgdm9pZCBzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKGNvbnN0
IFdUUjo6VGVzdE9wdGlvbnMmIG9wdGlvbnMpCitzdGF0aWMgdm9pZCBzZXRXZWJQcmVmZXJlbmNl
c0ZvclRlc3RPcHRpb25zKFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcywgY29uc3QgV1RSOjpU
ZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMg
PSBbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc107CisgICAgcHJlZmVyZW5jZXMu
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IG9wdGlvbnMudXNlRXBoZW1lcmFsU2Vzc2lvbigpOwor
CisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLmJvb2xXZWJQcmVm
ZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXRCb29sUHJlZmVyZW5j
ZUZvclRlc3RpbmdXaXRoVmFsdWU6dmFsdWUgZm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6
dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGtleSkpLmdldCgpXTsKIAotICAgIHByZWZlcmVu
Y2VzLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlQXR0YWNobWVudEVs
ZW1lbnQ7Ci0gICAgcHJlZmVyZW5jZXMuYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCA9IG9wdGlv
bnMuZW5hYmxlQWNjZWxlcmF0ZWREcmF3aW5nOwotICAgIHByZWZlcmVuY2VzLm1lbnVJdGVtRWxl
bWVudEVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZU1lbnVJdGVtRWxlbWVudDsKLSAgICBwcmVmZXJl
bmNlcy5rZXlnZW5FbGVtZW50RW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlS2V5Z2VuRWxlbWVudDsK
LSAgICBwcmVmZXJlbmNlcy5tb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCA9IG9wdGlvbnMuZW5h
YmxlTW9kZXJuTWVkaWFDb250cm9sczsKLSAgICBwcmVmZXJlbmNlcy5pbnNwZWN0b3JBZGRpdGlv
bnNFbmFibGVkID0gb3B0aW9ucy5lbmFibGVJbnNwZWN0b3JBZGRpdGlvbnM7Ci0gICAgcHJlZmVy
ZW5jZXMuYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMgPSBv
cHRpb25zLmFsbG93Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzOwot
ICAgIHByZWZlcmVuY2VzLmNvbG9yRmlsdGVyRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlQ29sb3JG
aWx0ZXI7Ci0gICAgcHJlZmVyZW5jZXMuc2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllc0Vu
YWJsZWQgPSBvcHRpb25zLmVuYWJsZVNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXM7Ci0g
ICAgcHJlZmVyZW5jZXMud2ViR1BVRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlV2ViR1BVOwotICAg
IHByZWZlcmVuY2VzLkNTU0xvZ2ljYWxFbmFibGVkID0gb3B0aW9ucy5lbmFibGVDU1NMb2dpY2Fs
OwotICAgIHByZWZlcmVuY2VzLmxpbmVIZWlnaHRVbml0c0VuYWJsZWQgPSBvcHRpb25zLmVuYWJs
ZUxpbmVIZWlnaHRVbml0czsKLSAgICBwcmVmZXJlbmNlcy5hZENsaWNrQXR0cmlidXRpb25FbmFi
bGVkID0gb3B0aW9ucy5hZENsaWNrQXR0cmlidXRpb25FbmFibGVkOwotICAgIHByZWZlcmVuY2Vz
LnJlc2l6ZU9ic2VydmVyRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlUmVzaXplT2JzZXJ2ZXI7Ci0g
ICAgcHJlZmVyZW5jZXMuQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCA9IG9wdGlvbnMu
ZW5hYmxlQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nOwotICAgIHByZWZlcmVuY2VzLmNvcmVNYXRo
TUxFbmFibGVkID0gb3B0aW9ucy5lbmFibGVDb3JlTWF0aE1MOwotICAgIHByZWZlcmVuY2VzLnJl
cXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkID0gb3B0aW9ucy5lbmFibGVSZXF1ZXN0SWRsZUNhbGxi
YWNrOwotICAgIHByZWZlcmVuY2VzLmFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxlZCA9IG9wdGlvbnMu
ZW5hYmxlQXN5bmNDbGlwYm9hcmRBUEk7Ci0gICAgcHJlZmVyZW5jZXMucHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCA9IG9wdGlvbnMudXNlRXBoZW1lcmFsU2Vzc2lvbjsKLSAgICBwcmVmZXJlbmNlcy51
c2VzUGFnZUNhY2hlID0gb3B0aW9ucy5lbmFibGVCYWNrRm9yd2FyZENhY2hlOwotICAgIHByZWZl
cmVuY2VzLmxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkID0gb3B0aW9u
cy5sYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZDsKLSAgICBwcmVmZXJl
bmNlcy5hc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZCA9IG9wdGlvbnMu
ZW5hYmxlQXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodDsKLSAgICBwcmVmZXJlbmNl
cy5hbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzID0gb3B0aW9ucy5hbGxvd1RvcE5hdmlnYXRp
b25Ub0RhdGFVUkxzOwotICAgIHByZWZlcmVuY2VzLmNvbnRhY3RQaWNrZXJBUElFbmFibGVkID0g
b3B0aW9ucy5lbmFibGVDb250YWN0UGlja2VyQVBJOworICAgIGZvciAoY29uc3QgYXV0byYgW2tl
eSwgdmFsdWVdIDogb3B0aW9ucy5kb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAg
ICAgW3ByZWZlcmVuY2VzIF9zZXREb3VibGVQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2
YWx1ZSBmb3JLZXk6dG9OUyhXVFI6OlRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVu
Y2VLZXkoa2V5KSkuZ2V0KCldOworCisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0g
OiBvcHRpb25zLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJlcygpKQorICAgICAgICBbcHJlZmVy
ZW5jZXMgX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnZhbHVlIGZvcktl
eTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShrZXkp
KS5nZXQoKV07CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMu
c3RyaW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0
U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dG9OUyh2YWx1ZSkuZ2V0KCkgZm9y
S2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGtl
eSkpLmdldCgpXTsKIH0KIAogLy8gQ2FsbGVkIG9uY2Ugb24gRHVtcFJlbmRlclRyZWUgc3RhcnR1
cC4KQEAgLTEwMTgsOSArMTAxMyw2IEBAIHN0YXRpYyB2b2lkIHNldERlZmF1bHRzVG9Db25zaXN0
ZW50VmFsdWUKICAgICAgICAgQCJBcHBsZU90aGVySGlnaGxpZ2h0Q29sb3IiOkAiMC41MDAwMDAg
MC41MDAwMDAgMC41MDAwMDAiLAogICAgICAgICBAIkFwcGxlTGFuZ3VhZ2VzIjogQFsgQCJlbiIg
XSwKICAgICAgICAgV2ViS2l0RW5hYmxlRnVsbERvY3VtZW50VGVhcmRvd25QcmVmZXJlbmNlS2V5
OiBAWUVTLAotICAgICAgICBXZWJLaXRGdWxsU2NyZWVuRW5hYmxlZFByZWZlcmVuY2VLZXk6IEBZ
RVMsCi0gICAgICAgIFdlYktpdEFsbG93c0lubGluZU1lZGlhUGxheWJhY2tQcmVmZXJlbmNlS2V5
OiBAWUVTLAotICAgICAgICBXZWJLaXRJbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lu
bGluZUF0dHJpYnV0ZUtleTogQE5PLAogICAgICAgICBAIlVzZVdlYktpdFdlYkluc3BlY3RvciI6
IEBZRVMsCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIEAiTlNQcmVmZXJyZWRT
cGVsbFNlcnZlckxhbmd1YWdlIjogQCJlbl9VUyIsCkBAIC0xODI2LDkgKzE4MTgsOSBAQCBzdGF0
aWMgdm9pZCBzZXRKU0NPcHRpb25zKGNvbnN0IFdUUjo6VGVzCiAgICAgICAgIHNhdmVkT3B0aW9u
cy5jbGVhcigpOwogICAgIH0KIAotICAgIGlmIChvcHRpb25zLmpzY09wdGlvbnMubGVuZ3RoKCkp
IHsKKyAgICBpZiAoIW9wdGlvbnMuanNjT3B0aW9ucygpLmVtcHR5KCkpIHsKICAgICAgICAgSlND
OjpPcHRpb25zOjpkdW1wQWxsT3B0aW9uc0luQUxpbmUoc2F2ZWRPcHRpb25zKTsKLSAgICAgICAg
SlNDOjpPcHRpb25zOjpzZXRPcHRpb25zKG9wdGlvbnMuanNjT3B0aW9ucy5jX3N0cigpKTsKKyAg
ICAgICAgSlNDOjpPcHRpb25zOjpzZXRPcHRpb25zKG9wdGlvbnMuanNjT3B0aW9ucygpLmNfc3Ry
KCkpOwogICAgIH0KIH0KIApAQCAtMTgzOSw2ICsxODMxLDEwIEBAIHN0YXRpYyB2b2lkIHJlc2V0
V2ViVmlld1RvQ29uc2lzdGVudFN0YXQKIAogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbbWFpbkZy
YW1lIHdlYlZpZXddOwogCisgICAgV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzID0gW1tXZWJQ
cmVmZXJlbmNlcyBhbGxvY10gaW5pdF07CisgICAgW3ByZWZlcmVuY2VzIHNldEF1dG9zYXZlczpO
T107CisgICAgW3dlYlZpZXcgc2V0UHJlZmVyZW5jZXM6cHJlZmVyZW5jZXNdOworCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBhZGp1c3RXZWJEb2N1bWVudEZvclN0YW5kYXJkVmlld3Bv
cnQoZ1dlYkJyb3dzZXJWaWV3LCBnV2ViU2Nyb2xsVmlldyk7CiAgICAgW3dlYlZpZXcgX3NldEFs
bG93c01lc3NhZ2luZzpZRVNdOwpAQCAtMTg2NywxMCArMTg2MywxMCBAQCBzdGF0aWMgdm9pZCBy
ZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0CiAKICAgICBbV2ViQ2FjaGUgY2xlYXJDYWNoZWRD
cmVkZW50aWFsc107CiAKLSAgICByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVz
KCk7Ci0gICAgc2V0V2ViUHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9ucyhvcHRpb25zKTsKKyAgICBy
ZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKHByZWZlcmVuY2VzKTsKKyAgICBz
ZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKHByZWZlcmVuY2VzLCBvcHRpb25zKTsKICNp
ZiBQTEFURk9STShNQUMpCi0gICAgW3dlYlZpZXcgc2V0V2FudHNMYXllcjpvcHRpb25zLmxheWVy
QmFja2VkV2ViVmlld107CisgICAgW3dlYlZpZXcgc2V0V2FudHNMYXllcjpvcHRpb25zLmxheWVy
QmFja2VkV2ViVmlldygpXTsKICNlbmRpZgogCiAgICAgVGVzdFJ1bm5lcjo6c2V0U2VyaWFsaXpl
SFRUUExvYWRzKGZhbHNlKTsKQEAgLTE5MTQsNyArMTkxMCw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0
V2ViVmlld1RvQ29uc2lzdGVudFN0YXQKICAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVi
b2FyZF0gZGVjbGFyZVR5cGVzOkBbTlNTdHJpbmdQYm9hcmRUeXBlXSBvd25lcjpuaWxdOwogI2Vu
ZGlmCiAKLSAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFn
ZVR5cGVzRm9yVGVzdGluZyhvcHRpb25zLmFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLmNf
c3RyKCkpOworICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6c2V0QWRkaXRpb25hbFN1cHBvcnRlZElt
YWdlVHlwZXNGb3JUZXN0aW5nKG9wdGlvbnMuYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMo
KS5jX3N0cigpKTsKIAogICAgIFttYWluRnJhbWUgX2NsZWFyT3BlbmVyXTsKIApAQCAtMTk3MCw3
ICsxOTY2LDcgQEAgc3RhdGljIE5TVVJMICpjb21wdXRlVGVzdFVSTChOU1N0cmluZyAqcAogCiBz
dGF0aWMgV1RSOjpUZXN0T3B0aW9ucyB0ZXN0T3B0aW9uc0ZvclRlc3QoY29uc3QgV1RSOjpUZXN0
Q29tbWFuZCYgY29tbWFuZCkKIHsKLSAgICBXVFI6OlRlc3RGZWF0dXJlcyBmZWF0dXJlczsKKyAg
ICBXVFI6OlRlc3RGZWF0dXJlcyBmZWF0dXJlcyA9IFdUUjo6VGVzdE9wdGlvbnM6OmRlZmF1bHRz
KCk7CiAgICAgV1RSOjptZXJnZShmZWF0dXJlcywgV1RSOjpoYXJkY29kZWRGZWF0dXJlc0Jhc2Vk
T25QYXRoRm9yVGVzdChjb21tYW5kKSk7CiAgICAgV1RSOjptZXJnZShmZWF0dXJlcywgV1RSOjpm
ZWF0dXJlRGVmYXVsdHNGcm9tVGVzdEhlYWRlckZvclRlc3QoY29tbWFuZCwgV1RSOjpUZXN0T3B0
aW9uczo6a2V5VHlwZU1hcHBpbmcoKSkpOwogCkBAIC0yMDE3LDcgKzIwMTMsNyBAQCBzdGF0aWMg
dm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgaW5wdXRMCiAgICAgZ1Rlc3RSdW5uZXIgPSBUZXN0
UnVubmVyOjpjcmVhdGUodGVzdFVSTCwgY29tbWFuZC5leHBlY3RlZFBpeGVsSGFzaCk7CiAgICAg
Z1Rlc3RSdW5uZXItPnNldEFsbG93ZWRIb3N0cyhhbGxvd2VkSG9zdHMpOwogICAgIGdUZXN0UnVu
bmVyLT5zZXRDdXN0b21UaW1lb3V0KGNvbW1hbmQudGltZW91dC5taWxsaXNlY29uZHMoKSk7Ci0g
ICAgZ1Rlc3RSdW5uZXItPnNldER1bXBKU0NvbnNvbGVMb2dJblN0ZEVycihjb21tYW5kLmR1bXBK
U0NvbnNvbGVMb2dJblN0ZEVyciB8fCBvcHRpb25zLmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVycik7
CisgICAgZ1Rlc3RSdW5uZXItPnNldER1bXBKU0NvbnNvbGVMb2dJblN0ZEVycihjb21tYW5kLmR1
bXBKU0NvbnNvbGVMb2dJblN0ZEVyciB8fCBvcHRpb25zLmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVy
cigpKTsKIAogICAgIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlKG9wdGlvbnMsIFJlc2V0
VGltZTo6QmVmb3JlVGVzdCk7CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0
UnVubmVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0
UnVubmVyTWFjLm1tCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvVGVzdFJ1bm5lck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTc2LDE0ICs1NzYsMTQgQEAg
dm9pZCBUZXN0UnVubmVyOjpzZXRQYWdlUGF1c2VkKGJvb2wgcGF1cwogCiB2b2lkIFRlc3RSdW5u
ZXI6OnNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZChib29sIGZsYWcpCiB7Ci0gICAgW1tXZWJQcmVm
ZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXSBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQ6Zmxh
Z107CisgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBzZXRVc2VyU3R5bGVT
aGVldEVuYWJsZWQ6ZmxhZ107CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hl
ZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKQogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gcGF0aENGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBwYXRoKSk7CiAgICAgTlNVUkwgKnVybCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOihfX2Jy
aWRnZSBOU1N0cmluZyAqKXBhdGhDRi5nZXQoKV07Ci0gICAgW1tXZWJQcmVmZXJlbmNlcyBzdGFu
ZGFyZFByZWZlcmVuY2VzXSBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uOnVybF07CisgICAgW1tb
bWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9u
OnVybF07CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIEpTU3RyaW5nUmVmIHZhbHVlKQpAQCAt
NjA5LDcgKzYwOSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3QK
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHZhbHVlQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29w
eUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHZhbHVlKSk7CiAgICAgTlNTdHJpbmcgKnZh
bHVlTlMgPSAoX19icmlkZ2UgTlNTdHJpbmcgKil2YWx1ZUNGLmdldCgpOwogCi0gICAgW1tXZWJQ
cmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXSBfc2V0UHJlZmVyZW5jZUZvclRlc3RXaXRo
VmFsdWU6dmFsdWVOUyBmb3JLZXk6a2V5TlNdOworICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBw
cmVmZXJlbmNlc10gX3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnZhbHVl
TlMgZm9yS2V5OmtleU5TXTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpyZW1vdmVBbGxWaXNpdGVk
TGlua3MoKQpAQCAtNzAwLDcgKzcwMCw3IEBAIGJvb2wgVGVzdFJ1bm5lcjo6ZmluZFN0cmluZyhK
U0NvbnRleHRSZWYKIAogdm9pZCBUZXN0UnVubmVyOjpzZXRDYWNoZU1vZGVsKGludCBjYWNoZU1v
ZGVsKQogewotICAgIFtbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10gc2V0Q2Fj
aGVNb2RlbDooV2ViQ2FjaGVNb2RlbCljYWNoZU1vZGVsXTsKKyAgICBbW1ttYWluRnJhbWUgd2Vi
Vmlld10gcHJlZmVyZW5jZXNdIHNldENhY2hlTW9kZWw6KFdlYkNhY2hlTW9kZWwpY2FjaGVNb2Rl
bF07CiB9CiAKIGJvb2wgVGVzdFJ1bm5lcjo6aXNDb21tYW5kRW5hYmxlZChKU1N0cmluZ1JlZiBu
YW1lKQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0JKHJldmlzaW9u
IDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIC0gKHZvaWQpcmVzZXRXaW5kb3dPcmlnaW4KIAog
LSAodm9pZClyZXNldFRvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZzooY29uc3QgV1RSOjpU
ZXN0T3B0aW9ucyYpb3B0aW9ucwogewotICAgIG1fZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
TG9hZCA9IG9wdGlvbnMuZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZDsKKyAgICBtX2Vu
YWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQgPSBvcHRpb25zLmVuYWJsZURyYWdEZXN0aW5h
dGlvbkFjdGlvbkxvYWQoKTsKIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVy
IHNldEZyYW1lOihOU1JlY3QpZnJhbWUKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9E
dW1wUmVuZGVyVHJlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0R1bXBSZW5kZXJUcmVlLmNwcAkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTA2LDI4ICs5
MDYsMzcgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdAogCiAgICAg
cHJlZmVyZW5jZXMtPnNldEZvbnRTbW9vdGhpbmcoRm9udFNtb290aGluZ1R5cGVTdGFuZGFyZCk7
CiAKKyAgICBwcmVmc1ByaXZhdGUtPnNldFdlYlNRTEVuYWJsZWQodHJ1ZSk7CisKICAgICBwcmVm
c1ByaXZhdGUtPnNldERhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZChUUlVFKTsKICAgICBwcmVmc1By
aXZhdGUtPmNsZWFyTmV0d29ya0xvYWRlclNlc3Npb24oKTsKIAogICAgIHNldEFsd2F5c0FjY2Vw
dENvb2tpZXMoZmFsc2UpOwogfQogCitzdGF0aWMgYm9vbCBib29sV2ViUHJlZmVyZW5jZUZlYXR1
cmVWYWx1ZShzdGQ6OnN0cmluZyBrZXksIGJvb2wgZGVmYXVsdFZhbHVlLCBjb25zdCBXVFI6OlRl
c3RPcHRpb25zJiBvcHRpb25zKQoreworICAgIGF1dG8gaXQgPSBvcHRpb25zLmJvb2xXZWJQcmVm
ZXJlbmNlRmVhdHVyZXMoKS5maW5kKGtleSk7CisgICAgaWYgKGl0ICE9IG9wdGlvbnMuYm9vbFdl
YlByZWZlcmVuY2VGZWF0dXJlcygpLmVuZCgpKQorICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsK
KyAgICByZXR1cm4gZGVmYXVsdFZhbHVlOworfQorCiBzdGF0aWMgdm9pZCBzZXRXZWJQcmVmZXJl
bmNlc0ZvclRlc3RPcHRpb25zKElXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMsIGNvbnN0IFdU
Ujo6VGVzdE9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNlc1By
aXZhdGU4PiBwcmVmc1ByaXZhdGUgeyBRdWVyeSwgcHJlZmVyZW5jZXMgfTsKIAotICAgIHByZWZz
UHJpdmF0ZS0+c2V0TWVudUl0ZW1FbGVtZW50RW5hYmxlZChvcHRpb25zLmVuYWJsZU1lbnVJdGVt
RWxlbWVudCk7Ci0gICAgcHJlZnNQcml2YXRlLT5zZXRLZXlnZW5FbGVtZW50RW5hYmxlZChvcHRp
b25zLmVuYWJsZUtleWdlbkVsZW1lbnQpOwotICAgIHByZWZzUHJpdmF0ZS0+c2V0TW9kZXJuTWVk
aWFDb250cm9sc0VuYWJsZWQob3B0aW9ucy5lbmFibGVNb2Rlcm5NZWRpYUNvbnRyb2xzKTsKLSAg
ICBwcmVmc1ByaXZhdGUtPnNldEluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQob3B0aW9ucy5lbmFi
bGVJbnNwZWN0b3JBZGRpdGlvbnMpOwotICAgIHByZWZzUHJpdmF0ZS0+c2V0UmVxdWVzdElkbGVD
YWxsYmFja0VuYWJsZWQob3B0aW9ucy5lbmFibGVSZXF1ZXN0SWRsZUNhbGxiYWNrKTsKLSAgICBw
cmVmc1ByaXZhdGUtPnNldEFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxlZChvcHRpb25zLmVuYWJsZUFz
eW5jQ2xpcGJvYXJkQVBJKTsKLSAgICBwcmVmc1ByaXZhdGUtPnNldENvbnRhY3RQaWNrZXJBUElF
bmFibGVkKG9wdGlvbnMuZW5hYmxlQ29udGFjdFBpY2tlckFQSSk7Ci0gICAgcHJlZnNQcml2YXRl
LT5zZXRXZWJTUUxFbmFibGVkKG9wdGlvbnMuZW5hYmxlV2ViU1FMKTsKLSAgICBwcmVmc1ByaXZh
dGUtPnNldEFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMob3B0aW9ucy5hbGxvd1RvcE5hdmln
YXRpb25Ub0RhdGFVUkxzKTsKLSAgICBwcmVmZXJlbmNlcy0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZChvcHRpb25zLnVzZUVwaGVtZXJhbFNlc3Npb24pOwotICAgIHByZWZlcmVuY2VzLT5zZXRV
c2VzUGFnZUNhY2hlKG9wdGlvbnMuZW5hYmxlQmFja0ZvcndhcmRDYWNoZSk7Ci0gICAgcHJlZnNQ
cml2YXRlLT5zZXRDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkKG9wdGlvbnMuZW5hYmxl
Q1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nKTsKKyAgICBwcmVmZXJlbmNlcy0+c2V0UHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZChvcHRpb25zLnVzZUVwaGVtZXJhbFNlc3Npb24oKSk7CisgICAgcHJlZmVy
ZW5jZXMtPnNldFVzZXNQYWdlQ2FjaGUoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIlVz
ZXNCYWNrRm9yd2FyZENhY2hlIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1ByaXZhdGUt
PnNldE1lbnVJdGVtRWxlbWVudEVuYWJsZWQoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUo
Ik1lbnVJdGVtRWxlbWVudEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucykpOworICAgIHByZWZzUHJp
dmF0ZS0+c2V0S2V5Z2VuRWxlbWVudEVuYWJsZWQoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFs
dWUoIktleWdlbkVsZW1lbnRFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOworICAgIHByZWZzUHJp
dmF0ZS0+c2V0TW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQoYm9vbFdlYlByZWZlcmVuY2VGZWF0
dXJlVmFsdWUoIk1vZGVybk1lZGlhQ29udHJvbHNFbmFibGVkIiwgdHJ1ZSwgb3B0aW9ucykpOwor
ICAgIHByZWZzUHJpdmF0ZS0+c2V0SW5zcGVjdG9yQWRkaXRpb25zRW5hYmxlZChib29sV2ViUHJl
ZmVyZW5jZUZlYXR1cmVWYWx1ZSgiSW5zcGVjdG9yQWRkaXRpb25zRW5hYmxlZCIsIGZhbHNlLCBv
cHRpb25zKSk7CisgICAgcHJlZnNQcml2YXRlLT5zZXRSZXF1ZXN0SWRsZUNhbGxiYWNrRW5hYmxl
ZChib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiUmVxdWVzdElkbGVDYWxsYmFja0VuYWJs
ZWQiLCBmYWxzZSwgb3B0aW9ucykpOworICAgIHByZWZzUHJpdmF0ZS0+c2V0QXN5bmNDbGlwYm9h
cmRBUElFbmFibGVkKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJBc3luY0NsaXBib2Fy
ZEFQSUVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucykpOworICAgIHByZWZzUHJpdmF0ZS0+c2V0Q29u
dGFjdFBpY2tlckFQSUVuYWJsZWQoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkNvbnRh
Y3RQaWNrZXJBUElFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1ByaXZhdGUt
PnNldEFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJl
VmFsdWUoIkFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMiLCB0cnVlLCBvcHRpb25zKSk7Cisg
ICAgcHJlZnNQcml2YXRlLT5zZXRDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkKGJvb2xX
ZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVk
IiwgZmFsc2UsIG9wdGlvbnMpKTsKIH0KIAogc3RhdGljIFN0cmluZyBhcHBsaWNhdGlvbklkKCkK
QEAgLTk3Myw5ICs5ODIsOSBAQCBzdGF0aWMgdm9pZCBzZXRKU0NPcHRpb25zKGNvbnN0IFdUUjo6
VGVzCiAgICAgICAgIHNhdmVkT3B0aW9ucy5jbGVhcigpOwogICAgIH0KIAotICAgIGlmIChvcHRp
b25zLmpzY09wdGlvbnMubGVuZ3RoKCkpIHsKKyAgICBpZiAoIW9wdGlvbnMuanNjT3B0aW9ucy5l
bXB0eSgpKSB7CiAgICAgICAgIEpTQzo6T3B0aW9uczo6ZHVtcEFsbE9wdGlvbnNJbkFMaW5lKHNh
dmVkT3B0aW9ucyk7Ci0gICAgICAgIEpTQzo6T3B0aW9uczo6c2V0T3B0aW9ucyhvcHRpb25zLmpz
Y09wdGlvbnMuY19zdHIoKSk7CisgICAgICAgIEpTQzo6T3B0aW9uczo6c2V0T3B0aW9ucyhvcHRp
b25zLmpzY09wdGlvbnMoKS5jX3N0cigpKTsKICAgICB9CiB9CiAKQEAgLTExNjgsNyArMTE3Nyw3
IEBAIHN0YXRpYyBib29sIGhhbmRsZUNvbnRyb2xDb21tYW5kKGNvbnN0IGMKIAogc3RhdGljIFdU
Ujo6VGVzdE9wdGlvbnMgdGVzdE9wdGlvbnNGb3JUZXN0KGNvbnN0IFdUUjo6VGVzdENvbW1hbmQm
IGNvbW1hbmQpCiB7Ci0gICAgV1RSOjpUZXN0RmVhdHVyZXMgZmVhdHVyZXM7CisgICAgV1RSOjpU
ZXN0RmVhdHVyZXMgZmVhdHVyZXMgPSBXVFI6OlRlc3RPcHRpb25zOjpkZWZhdWx0cygpOwogICAg
IFdUUjo6bWVyZ2UoZmVhdHVyZXMsIFdUUjo6aGFyZGNvZGVkRmVhdHVyZXNCYXNlZE9uUGF0aEZv
clRlc3QoY29tbWFuZCkpOwogICAgIFdUUjo6bWVyZ2UoZmVhdHVyZXMsIFdUUjo6ZmVhdHVyZURl
ZmF1bHRzRnJvbVRlc3RIZWFkZXJGb3JUZXN0KGNvbW1hbmQsIFdUUjo6VGVzdE9wdGlvbnM6Omtl
eVR5cGVNYXBwaW5nKCkpKTsKIApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MjEsMTcgKzkyMSwxNiBAQCB2
b2lkIFRlc3RDb250cm9sbGVyOjpyZXNldFByZWZlcmVuY2VzVG9DCiAgICAgcGxhdGZvcm1SZXNl
dFByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKCk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8m
IFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAg
ICAgICBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5KHByZWZlcmVuY2VzLCB2YWx1ZSwg
dG9XSyhrZXkpLmdldCgpKTsKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktl
eUZvclRlc3RpbmcocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOwogCiAgICAg
Zm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLmRvdWJsZVdlYlByZWZlcmVu
Y2VGZWF0dXJlcygpKQotICAgICAgICBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXko
cHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOworICAgICAgICBXS1ByZWZlcmVu
Y2VzU2V0RG91YmxlVmFsdWVGb3JLZXlGb3JUZXN0aW5nKHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9X
SyhrZXkpLmdldCgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0
aW9ucy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKLSAgICAgICAgV0tQcmVmZXJlbmNl
c1NldFVJbnQzMlZhbHVlRm9yS2V5KHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgp
KTsKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhw
cmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1
dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuc3RyaW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkp
Ci0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleShwcmVmZXJlbmNlcywg
dG9XSyh2YWx1ZSkuZ2V0KCksIHRvV0soa2V5KS5nZXQoKSk7Ci0KKyAgICAgICAgV0tQcmVmZXJl
bmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdG9XSyh2YWx1
ZSkuZ2V0KCksIHRvV0soa2V5KS5nZXQoKSk7CiB9CiAKIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJl
c2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJl
c2V0U3RhZ2UgcmVzZXRTdGFnZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411706</attachid>
            <date>2020-10-18 09:19:36 -0700</date>
            <delta_ts>2020-10-18 10:11:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201018091935.patch</filename>
            <type>text/plain</type>
            <size>58270</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTE3ICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVu
ZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBXS1ByZWZlcmVuY2Vz
U2V0KlZhbHVlRm9yS2V5IFNQSSB0byBXS1ByZWZlcmVuY2VzU2V0KlZhbHVlRm9yS2V5Rm9yVGVz
dGluZworICAgICAgICB0byBtYWtlIGl0IGNsZWFyIHdoYXQgdGhleSBhcmUgdXNlZCBmb3IgYW5k
IGZvciBjb25zaXN0ZW5jeSB3aXRoIFdlYktpdExlZ2FjeS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29s
VmFsdWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXREb3VibGVW
YWx1ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZh
bHVlRm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFs
dWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVG
b3JLZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9y
S2V5KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktl
eSk6IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJp
dmF0ZS5oOgorCiAyMDIwLTEwLTE2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBJbnRyb2R1Y2UgUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5IHRvIG1hbmFnZSB0aGUgcmVzb3VyY2VzIGluIHRoZSBHUFUgUHJvY2VzcwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5j
cHAJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UHJlZmVyZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCwyMiArNzgsMjIgQEAgdm9pZCBX
S1ByZWZlcmVuY2VzU2V0SW50ZXJuYWxEZWJ1Z0ZlYXR1cgogICAgIHRvSW1wbChwcmVmZXJlbmNl
c1JlZiktPnNldEludGVybmFsRGVidWdGZWF0dXJlRW5hYmxlZEZvcktleSh0b1dURlN0cmluZyhp
bnRlcm5hbERlYnVnRmVhdHVyZUtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2Vz
U2V0Qm9vbFZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wg
dmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZv
cktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1
ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldEJv
b2xWYWx1ZUZvcktleSh0b1dURlN0cmluZyhrZXkpLCB2YWx1ZSk7CiB9CiAKLXZvaWQgV0tQcmVm
ZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIGRvdWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0
RG91YmxlVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIGRvdWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJl
bmNlc1JlZiktPnNldEJvb2xWYWx1ZUZvcktleSh0b1dURlN0cmluZyhrZXkpLCB2YWx1ZSk7CiB9
CiAKLXZvaWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNS
ZWYgcHJlZmVyZW5jZXNSZWYsIHVpbnQzMl90IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCit2b2lk
IFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKIHsK
ICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRVSW50MzJWYWx1ZUZvcktleSh0b1dURlN0
cmluZyhrZXkpLCB2YWx1ZSk7CiB9CiAKLXZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVl
Rm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RyaW5nUmVmIHZhbHVl
LCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktl
eUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYg
dmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKIHsKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5z
ZXRTdHJpbmdWYWx1ZUZvcktleSh0b1dURlN0cmluZyhrZXkpLCB0b1dURlN0cmluZyh2YWx1ZSkp
OwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1Jl
ZlByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NiwxMCArNTYsMTAgQEAgV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1Jlc2V0
QWxsSW50ZQogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldEludGVybmFsRGVidWdGZWF0
dXJlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYsIGJvb2wsIFdLU3RyaW5nUmVmKTsKIAogLy8gVGhl
IGZvbGxvd2luZyBnZW5lcmljIHNldHRlciBmdW5jdGlvbnMgYXJlIG9ubHkgaW50ZW5kZWQgZm9y
IHVzZSBieSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlLgotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJl
bmNlc1NldEJvb2xWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBi
b29sIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNl
c1NldERvdWJsZVZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGRv
dWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKLVdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5j
ZXNTZXRVSW50MzJWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1
aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKLVdLX0VYUE9SVCB2b2lkIFdLUHJlZmVy
ZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVm
LCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VYUE9SVCB2b2lkIFdL
UHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXNSZWYsIGJvb2wgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7CitXS19FWFBPUlQg
dm9pZCBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVy
ZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGRvdWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsK
K1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleUZvclRlc3Rp
bmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3Ry
aW5nUmVmIGtleSk7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVG
b3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RyaW5n
UmVmIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwogCiAvLyBGb3IgVGVzdCBSdW5uZXIgVXNlIG9u
bHkuCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzUmVzZXRUZXN0UnVubmVyT3ZlcnJpZGVz
KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpOwpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMTAtMTcgIFNh
bSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFtUZXN0aW5nXSBDb252ZXJ0
IER1bXBSZW5kZXJUcmVlIHRvIHVzZSBnZW5lcmF0ZWQgdGVzdCBoZWFkZXIgb3B0aW9ucworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3ODgwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIGEgc2V0
IG9mIHNldHRlcnMgdG8gZm9yIER1bXBSZW5kZXJUcmVlIHRvIHVzZSB3aGVuIHNldHRpbmcgcHJl
ZmVyZW5jZXMKKyAgICAgICAgYnkgc3RyaW5nLgorCisgICAgICAgICogV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3N3aXRjaE5ldHdvcmtMb2Fk
ZXJUb05ld1Rlc3RpbmdTZXNzaW9uXSk6CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIF9zZXRD
dXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6XSk6CisgICAgICAg
ICgrW1dlYlByZWZlcmVuY2VzIF9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uXSk6CisgICAgICAg
ICgtW1dlYlByZWZlcmVuY2VzIF9zZXRCb29sUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6
Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0VUludDMyUHJlZmVyZW5j
ZUZvclRlc3RpbmdXaXRoVmFsdWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNl
cyBfc2V0RG91YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6Zm9yS2V5Ol0pOgorICAg
ICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRo
VmFsdWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0UHJlZmVyZW5j
ZUZvclRlc3RXaXRoVmFsdWU6Zm9yS2V5Ol0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlZpZXcv
V2ViUHJlZmVyZW5jZXNQcml2YXRlLmg6CisKIDIwMjAtMTAtMTcgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgogCiAgICAgICAgIENvbnZlcnQgcHJlZmVyZW5jZXMgaW4gV2ViUHJlZmVy
ZW5jZXNQcml2YXRlLmggdG8gdXNlIEBwcm9wZXJ0eSBzeW50YXggdG8gbWFrZSB0aGVtIG1vcmUg
bWFuYWdlYWJsZQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYw
LDI2ICsxNjYwLDYgQEAgKyAodm9pZClfc2V0SUJDcmVhdG9ySUQ6KE5TU3RyaW5nICopc3RyaQog
ICAgIFtvbGQgcmVsZWFzZV07CiB9CiAKLSsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05l
d1Rlc3RpbmdTZXNzaW9uCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBXZWJUaHJl
YWRMb2NrKCk7Ci0jZW5kaWYKLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRv
TmV3VGVzdGluZ1Nlc3Npb24oKTsKLX0KLQotKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vz
c2lvbgotewotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCkuZGVsZXRlQWxsQ29va2llcygpOwotfQotCi0rICh2b2lkKV9zZXRDdXJyZW50TmV0d29y
a0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSlwb2xpY3kKLXsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2ll
U3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCkuY29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsgLy8gV2lsbCBm
YWlsIHdoZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNz
aW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KLSAgICBDRkhUVFBDb29raWVTdG9yYWdl
U2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7Ci19Ci0K
IC0gKEJPT0wpaXNET01QYXN0ZUFsbG93ZWQKIHsKICAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1
ZUZvcktleTpXZWJLaXRET01QYXN0ZUFsbG93ZWRQcmVmZXJlbmNlS2V5XTsKQEAgLTE5NjYsMTEg
KzE5NDYsNiBAQCAtICh2b2lkKXdpbGxBZGRUb1dlYlZpZXcKICAgICArK19wcml2YXRlLT5udW1X
ZWJWaWV3czsKIH0KIAotLSAodm9pZClfc2V0UHJlZmVyZW5jZUZvclRlc3RXaXRoVmFsdWU6KE5T
U3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQotewotICAgIFtzZWxmIF9zZXRT
dHJpbmdWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKLX0KLQogLSAodm9pZClzZXRGdWxsU2NyZWVu
RW5hYmxlZDooQk9PTClmbGFnCiB7CiAgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTpmbGFnIGZvcktl
eTpXZWJLaXRGdWxsU2NyZWVuRW5hYmxlZFByZWZlcmVuY2VLZXldOwpAQCAtMzAxMyw2ICsyOTg4
LDUxIEBAIC0gKHZvaWQpX3NldEVuYWJsZWQ6KEJPT0wpdmFsdWUgZm9yRmVhdHUKIAogQGVuZAog
CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVRlc3RpbmcpCisK
KysgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uCit7CisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBXZWJUaHJlYWRMb2NrKCk7CisjZW5kaWYKKyAgICBO
ZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKK30K
KworKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9s
aWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9saWN5Cit7CisgICAgUmV0YWluUHRyPENG
SFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Np
b25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsKKyAgICBBU1NF
UlQoY29va2llU3RvcmFnZSk7IC8vIFdpbGwgZmFpbCB3aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhh
bmQuCisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVT
dG9yYWdlLmdldCgpLCBwb2xpY3kpOworfQorCisrICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJT
ZXNzaW9uCit7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKS5kZWxldGVBbGxDb29raWVzKCk7Cit9CisKKy0gKHZvaWQpX3NldEJvb2xQcmVmZXJl
bmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTooQk9PTCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5
Cit7CisgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAo
dm9pZClfc2V0VUludDMyUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KHVpbnQzMl90KXZh
bHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2VsZiBfc2V0SW50ZWdlclZhbHVl
OnZhbHVlIGZvcktleTprZXldOworfQorCistICh2b2lkKV9zZXREb3VibGVQcmVmZXJlbmNlRm9y
VGVzdGluZ1dpdGhWYWx1ZTooZG91YmxlKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sK
KyAgICBbc2VsZiBfc2V0RmxvYXRWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAodm9p
ZClfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KE5TU3RyaW5nICopdmFs
dWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9zZXRTdHJpbmdWYWx1ZTp2
YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworQGVuZAorCiBAaW1wbGVtZW50YXRpb24gV2ViUHJlZmVy
ZW5jZXMgKFdlYlByaXZhdGVQcmVmZXJlbmNlc0NvbnZlcnRlZFRvV2ViRmVhdHVyZSkKIAogLSAo
Qk9PTCl1c2VyR2VzdHVyZVByb21pc2VQcm9wYWdhdGlvbkVuYWJsZWQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZh
dGUuaAkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtODksMTMgKzg5LDYg
QEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZSkKICsgKHZvaWQpX3NldElu
aXRpYWxEZWZhdWx0VGV4dEVuY29kaW5nVG9TeXN0ZW1FbmNvZGluZzsKICsgKHZvaWQpX3NldElC
Q3JlYXRvcklEOihOU1N0cmluZyAqKXN0cmluZzsKIAotLy8gRm9yIER1bXBSZW5kZXJUcmVlIHVz
ZSBvbmx5LgotKyAodm9pZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb247
Ci0rICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xp
Y3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSljb29raWVBY2NlcHRQb2xpY3k7Ci0rICh2b2lk
KV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uOwotLy8gVXNlZCB0byBzZXQgcHJlZmVyZW5jZSBz
cGVjaWZpZWQgaW4gdGhlIHRlc3QgdmlhIExheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJl
ZmVyZW5jZSguLikuCi0tICh2b2lkKV9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhWYWx1ZTooTlNT
dHJpbmcgKil2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OwotCiArICh2b2lkKXNldFdlYktp
dExpbmtUaW1lVmVyc2lvbjooaW50KXZlcnNpb247CiAKIC8vIEZvciBXZWJWaWV3J3MgdXNlIG9u
bHkuCkBAIC0zMTAsNiArMzAzLDE4IEBAIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlBy
aXZhdGVGZWEKIC0gKHZvaWQpX3NldEVuYWJsZWQ6KEJPT0wpdmFsdWUgZm9yRmVhdHVyZTooV2Vi
RmVhdHVyZSAqKWZlYXR1cmU7CiBAZW5kCiAKK0BpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdl
YlByaXZhdGVUZXN0aW5nKQorKyAodm9pZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGlu
Z1Nlc3Npb247CisrICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVB
Y2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSljb29raWVBY2NlcHRQb2xpY3k7
CisrICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uOworCistICh2b2lkKV9zZXRCb29s
UHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KEJPT0wpdmFsdWUgZm9yS2V5OihOU1N0cmlu
ZyAqKWtleTsKKy0gKHZvaWQpX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVl
Oih1aW50MzJfdCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OworLSAodm9pZClfc2V0RG91
YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KGRvdWJsZSl2YWx1ZSBmb3JLZXk6KE5T
U3RyaW5nICopa2V5OworLSAodm9pZClfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRo
VmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKworQGVuZAor
CiAvLyBGSVhNRTogSWYgdGhlc2UgYXJlIG5vdCB1c2VkIGFueXdoZXJlLCB3ZSBzaG91bGQgcmVt
b3ZlIHRoZW0gYW5kIG9ubHkgdXNlIFdlYkZlYXR1cmUgbWVjaGFuaXNtIGZvciB0aGUgcHJlZmVy
ZW5jZS4KIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGVQcmVmZXJlbmNlc0Nv
bnZlcnRlZFRvV2ViRmVhdHVyZSkKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHVzZXJHZXN0
dXJlUHJvbWlzZVByb3BhZ2F0aW9uRW5hYmxlZDsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDIwLTEwLTE3ICBTYW0g
V2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBE
dW1wUmVuZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtXSVBdCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rl
c3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiOiBBZGRlZC4K
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RPcHRpb25zOjpkZWZhdWx0cyk6CisgICAgICAgIChXVFI6OlRlc3RPcHRpb25zOjp3ZWJW
aWV3SXNDb21wYXRpYmxlV2l0aE9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV1RSOjpmZWF0dXJl
VmFsdWUpOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6Ym9vbFRlc3RSdW5uZXJGZWF0dXJl
VmFsdWUgY29uc3QpOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6c3RyaW5nVGVzdFJ1bm5l
ckZlYXR1cmVWYWx1ZSBjb25zdCk6CisgICAgICAgIChXVFI6OnNldFZhbHVlSWZTZXRJbk1hcCk6
IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlRlc3RPcHRpb25zOjpUZXN0T3B0aW9ucyk6IERlbGV0
ZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuaDoKKyAgICAgICAgKFdU
Ujo6VGVzdE9wdGlvbnM6OlRlc3RPcHRpb25zKToKKyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6
OmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBjb25zdCk6CisgICAgICAgIChXVFI6OlRlc3RPcHRp
b25zOjplbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkIGNvbnN0KToKKyAgICAgICAgKFdU
Ujo6VGVzdE9wdGlvbnM6OmxheWVyQmFja2VkV2ViVmlldyBjb25zdCk6CisgICAgICAgIChXVFI6
OlRlc3RPcHRpb25zOjp1c2VFcGhlbWVyYWxTZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdUUjo6
VGVzdE9wdGlvbnM6OmFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzIGNvbnN0KToKKyAgICAg
ICAgKFdUUjo6VGVzdE9wdGlvbnM6OmpzY09wdGlvbnMgY29uc3QpOgorICAgICAgICAoV1RSOjpU
ZXN0T3B0aW9uczo6Ym9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyBjb25zdCk6CisgICAgICAgIChX
VFI6OlRlc3RPcHRpb25zOjpkb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMgY29uc3QpOgorICAg
ICAgICAoV1RSOjpUZXN0T3B0aW9uczo6dWludDMyV2ViUHJlZmVyZW5jZUZlYXR1cmVzIGNvbnN0
KToKKyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6OnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJl
cyBjb25zdCk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHRvTlMpOgorICAgICAgICAoY3JlYXRl
V2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdyk6CisgICAgICAgIChyZXNldFdlYlByZWZlcmVuY2Vz
VG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9w
dGlvbnMpOgorICAgICAgICAoc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXNGb3JUZXN0aW5n
KToKKyAgICAgICAgKHNldEpTQ09wdGlvbnMpOgorICAgICAgICAocmVzZXRXZWJWaWV3VG9Db25z
aXN0ZW50U3RhdGUpOgorICAgICAgICAodGVzdE9wdGlvbnNGb3JUZXN0KToKKyAgICAgICAgKHJ1
blRlc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgor
ICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKToKKyAgICAgICAg
KFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24pOgorICAgICAgICAoVGVzdFJ1
bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldENhY2hl
TW9kZWwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tOgorICAg
ICAgICAoLVtVSURlbGVnYXRlIHJlc2V0VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nOl0p
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVl
cyk6CisKIDIwMjAtMTAtMTcgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtGbGF0cGFrIFNES10gZmxhdHBha3V0aWxzLnB5IHJlcG9ydHMgIktleUVy
cm9yOiAnZ2NjJyIgZXJyb3IgaWYgdXNpbmcgd2l0aCBpY2VjYyBhbmQgdG9vbGNoYWlucyBhcmVu
J3QgZ2VuZXJhdGVkIHlldApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvQ01ha2VMaXN0cy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvQ01ha2VMaXN0cy50eHQJKHJl
dmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIGxpc3QoQVBQRU5EIER1bXBSZW5kZXJUcmVl
X1BSSVZBVEVfSU5DTFUKICkKIAogc2V0KER1bXBSZW5kZXJUcmVlX1dFQl9QUkVGRVJFTkNFU19U
RU1QTEFURVMKKyAgICAke0R1bXBSZW5kZXJUcmVlX0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNlc1Rl
bXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVy
YgogICAgICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVz
L1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYgogKQogCkBAIC01MywxMiArNTQsMTMgQEAg
c2V0KER1bXBSZW5kZXJUcmVlX1dFQl9QUkVGRVJFTkNFUwogc2V0X3NvdXJjZV9maWxlc19wcm9w
ZXJ0aWVzKCR7RHVtcFJlbmRlclRyZWVfV0VCX1BSRUZFUkVOQ0VTfSBQUk9QRVJUSUVTIEdFTkVS
QVRFRCBUUlVFKQogCiBhZGRfY3VzdG9tX2NvbW1hbmQoCi0gICAgT1VUUFVUICR7RHVtcFJlbmRl
clRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmgKKyAg
ICBPVVRQVVQgJHtEdW1wUmVuZGVyVHJlZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9UZXN0T3B0aW9u
c0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwICR7RHVtcFJlbmRlclRyZWVfREVS
SVZFRF9TT1VSQ0VTX0RJUn0vVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmgKICAgICBERVBFTkRT
ICR7RHVtcFJlbmRlclRyZWVfV0VCX1BSRUZFUkVOQ0VTX1RFTVBMQVRFU30gJHtEdW1wUmVuZGVy
VHJlZV9XRUJfUFJFRkVSRU5DRVN9IFdURl9Db3B5UHJlZmVyZW5jZXMKLSAgICBDT01NQU5EICR7
UlVCWV9FWEVDVVRBQkxFfSAke1dURl9TQ1JJUFRTX0RJUn0vR2VuZXJhdGVQcmVmZXJlbmNlcy5y
YiAtLWZyb250ZW5kIFdlYktpdExlZ2FjeSAtLWJhc2UgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZl
cmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWwgLS1kZWJ1ZyAke1dURl9TQ1JJUFRTX0RJUn0vUHJl
ZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNEZWJ1Zy55YW1sIC0tZXhwZXJpbWVudGFsICR7V1RGX1ND
UklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIC0t
aW50ZXJuYWwgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50
ZXJuYWwueWFtbCAtLW91dHB1dERpciAiJHtEdW1wUmVuZGVyVHJlZV9ERVJJVkVEX1NPVVJDRVNf
RElSfSIgLS10ZW1wbGF0ZSAke0R1bXBSZW5kZXJUcmVlX0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNl
c1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIKKyAgICBDT01NQU5EICR7
UlVCWV9FWEVDVVRBQkxFfSAke1dURl9TQ1JJUFRTX0RJUn0vR2VuZXJhdGVQcmVmZXJlbmNlcy5y
YiAtLWZyb250ZW5kIFdlYktpdExlZ2FjeSAtLWJhc2UgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZl
cmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWwgLS1kZWJ1ZyAke1dURl9TQ1JJUFRTX0RJUn0vUHJl
ZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNEZWJ1Zy55YW1sIC0tZXhwZXJpbWVudGFsICR7V1RGX1ND
UklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIC0t
aW50ZXJuYWwgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50
ZXJuYWwueWFtbCAtLW91dHB1dERpciAiJHtEdW1wUmVuZGVyVHJlZV9ERVJJVkVEX1NPVVJDRVNf
RElSfSIgLS10ZW1wbGF0ZSAke0R1bXBSZW5kZXJUcmVlX0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNl
c1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3Bw
LmVyYiAtLXRlbXBsYXRlICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2Vz
VGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYgogICAgIFZFUkJBVElNKQog
CiBsaXN0KEFQUEVORCBEdW1wUmVuZGVyVHJlZV9TT1VSQ0VTCisgICAgJHtEdW1wUmVuZGVyVHJl
ZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtl
eU1hcHBpbmcuY3BwCiAgICAgJHtEdW1wUmVuZGVyVHJlZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9U
ZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaAogKQogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJl
ZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI2
ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTYsNyArNiwxMCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvdXNyL2xvY2FsL2luY2x1ZGUvCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2lu
Y2x1ZGUvd3RmL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1s
CiAkKFBST0pFQ1RfRElSKS8uLi9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5k
aW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCiAkKFBST0pFQ1RfRElSKS9CaW5kaW5ncy9Db2Rl
R2VuZXJhdG9yRHVtcFJlbmRlclRyZWUucG0KKyQoUFJPSkVDVF9ESVIpL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKICQoUFJPSkVDVF9ESVIpL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9w
dGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCiskKFBST0pFQ1RfRElSKS9TY3JpcHRzL1ByZWZlcmVu
Y2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5j
cHAuZXJiCiskKFBST0pFQ1RfRElSKS9TY3JpcHRzL2dlbmVyYXRlLWRlcml2ZWQtc291cmNlcy5z
aAogJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0NvZGVHZW5lcmF0b3IucG0KICQoV0VC
Q09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9JRExBdHRyaWJ1dGVzLmpzb24KICQoV0VCQ09SRV9Q
UklWQVRFX0hFQURFUlNfRElSKS9JRExQYXJzZXIucG0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CShyZXZpc2lv
biAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdAkod29ya2luZyBjb3B5KQpAQCAtMiwzICsyLDQgQEAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9EdW1wUmVuZGVyVHJlZS9KU1VJU2NyaXB0Q29udHJvbGxl
ci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9EdW1wUmVuZGVyVHJl
ZS9KU1VJU2NyaXB0Q29udHJvbGxlci5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9uc0dl
bmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwCkluZGV4OiBUb29scy9EdW1wUmVuZGVy
VHJlZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE1ICsz
MSwxNiBAQCBXRUJfUFJFRkVSRU5DRVMgPSBcCiAjCiAKIFdFQl9QUkVGRVJFTkNFU19URU1QTEFU
RVMgPSBcCisgICAgJChEdW1wUmVuZGVyVHJlZSkvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRl
cy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYiBcCiAg
ICAgJChEdW1wUmVuZGVyVHJlZSkvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0
aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIgXAogIwogV0VCX1BSRUZFUkVOQ0VTX0ZJTEVTID0gJChi
YXNlbmFtZSAkKG5vdGRpciAkKFdFQl9QUkVGRVJFTkNFU19URU1QTEFURVMpKSkKLVdFQl9QUkVG
RVJFTkNFU19QQVRURVJOUyA9ICQoc3Vic3QgLmVyYiwsJChXRUJfUFJFRkVSRU5DRVNfRklMRVMp
KQogCi1hbGwgOiAkKFdFQl9QUkVGRVJFTkNFU19GSUxFUykKKyUuY3BwIDogJS5jcHAuZXJiICQo
V0VCX1BSRUZFUkVOQ0VTKSAkKFdURl9CVUlMRF9TQ1JJUFRTX0RJUikvR2VuZXJhdGVQcmVmZXJl
bmNlcy5yYgorCSQoUlVCWSkgJChXVEZfQlVJTERfU0NSSVBUU19ESVIpL0dlbmVyYXRlUHJlZmVy
ZW5jZXMucmIgLS1mcm9udGVuZCBXZWJLaXRMZWdhY3kgLS1iYXNlICR7V1RGX0JVSUxEX1NDUklQ
VFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlcy55YW1sIC0tZGVidWcgJHtXVEZfQlVJ
TERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRGVidWcueWFtbCAtLWV4
cGVyaW1lbnRhbCAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVy
ZW5jZXNFeHBlcmltZW50YWwueWFtbCAtLWludGVybmFsICR7V1RGX0JVSUxEX1NDUklQVFNfRElS
fS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwgLS10ZW1wbGF0ZSAkPAog
Ci0kKFdFQl9QUkVGRVJFTkNFU19QQVRURVJOUykgOiAkKFdURl9CVUlMRF9TQ1JJUFRTX0RJUikv
R2VuZXJhdGVQcmVmZXJlbmNlcy5yYiAkKFdFQl9QUkVGRVJFTkNFU19URU1QTEFURVMpICQoV0VC
X1BSRUZFUkVOQ0VTKQotCSQoUlVCWSkgJDwgLS1mcm9udGVuZCBXZWJLaXRMZWdhY3kgLS1iYXNl
ICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlcy55YW1s
IC0tZGVidWcgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVu
Y2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRhbCAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJl
ZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCAtLWludGVybmFsICR7V1RG
X0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlh
bWwgJChhZGRwcmVmaXggLS10ZW1wbGF0ZSAsICQoV0VCX1BSRUZFUkVOQ0VTX1RFTVBMQVRFUykp
CislLmggOiAlLmguZXJiICQoV0VCX1BSRUZFUkVOQ0VTKSAkKFdURl9CVUlMRF9TQ1JJUFRTX0RJ
UikvR2VuZXJhdGVQcmVmZXJlbmNlcy5yYgorCSQoUlVCWSkgJChXVEZfQlVJTERfU0NSSVBUU19E
SVIpL0dlbmVyYXRlUHJlZmVyZW5jZXMucmIgLS1mcm9udGVuZCBXZWJLaXRMZWdhY3kgLS1iYXNl
ICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlcy55YW1s
IC0tZGVidWcgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVu
Y2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRhbCAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJl
ZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCAtLWludGVybmFsICR7V1RG
X0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlh
bWwgLS10ZW1wbGF0ZSAkPAogCiAKIFVJU0NSSVBUQ09OVEVYVF9ESVIgPSAkKER1bXBSZW5kZXJU
cmVlKS8uLi9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncwpAQCAtNjgs
NiArNjksNyBAQCBKUyUuaCBKUyUuY3BwIDogJS5pZGwgJChTQ1JJUFRTKSAkKElETF9BCiAJQHBl
cmwgLUkgJChXZWJDb3JlU2NyaXB0cykgLUkgJChVSVNDUklQVENPTlRFWFRfRElSKSAtSSAkKER1
bXBSZW5kZXJUcmVlKS9CaW5kaW5ncyAkKFdlYkNvcmVTY3JpcHRzKS9nZW5lcmF0ZS1iaW5kaW5n
cy5wbCAtLWRlZmluZXMgIiIgLS1pbmNsdWRlICQoVUlTQ1JJUFRDT05URVhUX0RJUikgLS1vdXRw
dXREaXIgLiAtLWdlbmVyYXRvciBEdW1wUmVuZGVyVHJlZSAtLWlkbEF0dHJpYnV0ZXNGaWxlICQo
SURMX0FUVFJJQlVURVNfRklMRSkgJDwKIAogYWxsIDogXAorICAgICQoV0VCX1BSRUZFUkVOQ0VT
X0ZJTEVTKSBcCiAgICAgJChVSUNPTlRFWFRfSU5URVJGQUNFUzolPUpTJS5oKSBcCiAgICAgJChV
SUNPTlRFWFRfSU5URVJGQUNFUzolPUpTJS5jcHApIFwKICMKSW5kZXg6IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL1Rlc3RPcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9UZXN0T3B0aW9ucy5jcHAJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL1Rlc3RPcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNDQgQEAKIAog
bmFtZXNwYWNlIFdUUiB7CiAKK2NvbnN0IFRlc3RGZWF0dXJlcyYgVGVzdE9wdGlvbnM6OmRlZmF1
bHRzKCkKK3sKKyAgICBzdGF0aWMgVGVzdEZlYXR1cmVzIGZlYXR1cmVzOworICAgIGlmIChmZWF0
dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzLmVtcHR5KCkpIHsKKyAgICAgICAgZmVhdHVy
ZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyA9IHsKKyAgICAgICAgICAgIC8vIFRoZXNlIGFy
ZSBXZWJQcmVmZXJlbmNlIHZhbHVlcyB0aGF0IG11c3QgYWx3YXlzIGJlIHNldCBhcyB0aGV5IG1h
eQorICAgICAgICAgICAgLy8gZGlmZmVyIGZyb20gdGhlIGRlZmF1bHQgc2V0IGluIHRoZSBXZWJQ
cmVmZXJlbmNlcyoueWFtbCBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgeyAiQWxsb3dDcm9z
c09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMiLCBmYWxzZSB9LAorICAgICAg
ICAgICAgeyAiQWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyIsIHRydWUgfSwKKyAgICAgICAg
ICAgIHsgIkFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAg
eyAiQXR0YWNobWVudEVsZW1lbnRFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIlVz
ZXNCYWNrRm9yd2FyZENhY2hlIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkNvbG9yRmlsdGVy
RW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJJbnNwZWN0b3JBZGRpdGlvbnNFbmFi
bGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkludGVyc2VjdGlvbk9ic2VydmVyRW5hYmxl
ZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJLZXlnZW5FbGVtZW50RW5hYmxlZCIsIGZhbHNl
IH0sCisgICAgICAgICAgICB7ICJNZW51SXRlbUVsZW1lbnRFbmFibGVkIiwgZmFsc2UgfSwKKyAg
ICAgICAgICAgIHsgIk1vZGVybk1lZGlhQ29udHJvbHNFbmFibGVkIiwgdHJ1ZSB9LAorCisgICAg
ICAgICAgICB7ICJDU1NMb2dpY2FsRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJM
aW5lSGVpZ2h0VW5pdHNFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIlNlbGVjdGlv
bkFjcm9zc1NoYWRvd0JvdW5kYXJpZXNFbmFibGVkIiwgdHJ1ZSB9LAorICAgICAgICAgICAgeyAi
TGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQiLCB0cnVlIH0sCisKKyAg
ICAgICAgICAgIHsgIkFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAg
ICAgICAgeyAiQXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWQiLCBmYWxz
ZSB9LAorICAgICAgICAgICAgeyAiQXN5bmNDbGlwYm9hcmRBUElFbmFibGVkIiwgZmFsc2UgfSwK
KyAgICAgICAgICAgIHsgIkNTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWQiLCBmYWxzZSB9
LAorICAgICAgICAgICAgeyAiQ29udGFjdFBpY2tlckFQSUVuYWJsZWQiLCBmYWxzZSB9LAorICAg
ICAgICAgICAgeyAiQ29yZU1hdGhNTEVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAi
UmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiUmVz
aXplT2JzZXJ2ZXJFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIldlYkdQVUVuYWJs
ZWQiLCBmYWxzZSB9LAorICAgICAgICB9OworICAgIH0KKyAgICByZXR1cm4gZmVhdHVyZXM7Cit9
CisKIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgVGVzdEhlYWRlcktleVR5
cGU+JiBUZXN0T3B0aW9uczo6a2V5VHlwZU1hcHBpbmcoKQogewogICAgIHN0YXRpYyBjb25zdCBz
dGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFRlc3RIZWFkZXJLZXlUeXBlPiBtYXAgewpA
QCAtNDcsNTYgKzg1LDQ3IEBAIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywg
VGUKICAgICByZXR1cm4gbWFwOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdm9p
ZCBzZXRWYWx1ZUlmU2V0SW5NYXAoVCYgdmFsdWVUb1NldCwgc3RkOjpzdHJpbmcga2V5LCBjb25z
dCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFQ+JiBtYXApCitib29sIFRlc3RPcHRp
b25zOjp3ZWJWaWV3SXNDb21wYXRpYmxlV2l0aE9wdGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmIG9w
dGlvbnMpIGNvbnN0Cit7CisgICAgaWYgKG1fZmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMg
IT0gb3B0aW9ucy5tX2ZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzICE9IG9w
dGlvbnMubV9mZWF0dXJlcy5pbnRlcm5hbERlYnVnRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzICE9IG9w
dGlvbnMubV9mZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVz
ICE9IG9wdGlvbnMubV9mZWF0dXJlcy5kb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy51aW50MzJXZWJQcmVmZXJlbmNl
RmVhdHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJl
cykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLnN0cmluZ1dlYlBy
ZWZlcmVuY2VGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMuc3RyaW5nV2ViUHJlZmVyZW5j
ZUZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuYm9v
bFRlc3RSdW5uZXJGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJG
ZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLmRvdWJs
ZVRlc3RSdW5uZXJGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMuZG91YmxlVGVzdFJ1bm5l
ckZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuc3Ry
aW5nVGVzdFJ1bm5lckZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5zdHJpbmdUZXN0UnVu
bmVyRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy5z
dHJpbmdWZWN0b3JUZXN0UnVubmVyRmVhdHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLnN0cmlu
Z1ZlY3RvclRlc3RSdW5uZXJGZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGZlYXR1cmVWYWx1ZShzdGQ6
OnN0cmluZyBrZXksIFQgZGVmYXVsdFZhbHVlLCBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3Rk
OjpzdHJpbmcsIFQ+JiBtYXApCiB7CiAgICAgYXV0byBpdCA9IG1hcC5maW5kKGtleSk7Ci0gICAg
aWYgKGl0ID09IG1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHZhbHVlVG9TZXQgPSBp
dC0+c2Vjb25kOwotfQotCi1UZXN0T3B0aW9uczo6VGVzdE9wdGlvbnMoVGVzdEZlYXR1cmVzIHRl
c3RGZWF0dXJlcykKLXsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoYWxsb3dDcm9zc09yaWdpblN1
YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMsICJBbGxvd0Nyb3NzT3JpZ2luU3VicmVzb3Vy
Y2VzVG9Bc2tGb3JDcmVkZW50aWFscyIsIHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZl
YXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoYWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRh
VVJMcywgIkFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMiLCB0ZXN0RmVhdHVyZXMuYm9vbFdl
YlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUFjY2Vs
ZXJhdGVkRHJhd2luZywgIkFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQiLCB0ZXN0RmVhdHVyZXMu
Ym9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJs
ZUF0dGFjaG1lbnRFbGVtZW50LCAiQXR0YWNobWVudEVsZW1lbnRFbmFibGVkIiwgdGVzdEZlYXR1
cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChl
bmFibGVCYWNrRm9yd2FyZENhY2hlLCAiVXNlc0JhY2tGb3J3YXJkQ2FjaGUiLCB0ZXN0RmVhdHVy
ZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVu
YWJsZUNvbG9yRmlsdGVyLCAiQ29sb3JGaWx0ZXJFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmJvb2xX
ZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVJbnNw
ZWN0b3JBZGRpdGlvbnMsICJJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkIiwgdGVzdEZlYXR1cmVz
LmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFi
bGVJbnRlcnNlY3Rpb25PYnNlcnZlciwgIkludGVyc2VjdGlvbk9ic2VydmVyRW5hYmxlZCIsIHRl
c3RGZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0
SW5NYXAoZW5hYmxlS2V5Z2VuRWxlbWVudCwgIktleWdlbkVsZW1lbnRFbmFibGVkIiwgdGVzdEZl
YXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1h
cChlbmFibGVNZW51SXRlbUVsZW1lbnQsICJNZW51SXRlbUVsZW1lbnRFbmFibGVkIiwgdGVzdEZl
YXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1h
cChlbmFibGVNb2Rlcm5NZWRpYUNvbnRyb2xzLCAiTW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQi
LCB0ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0KLSAgICBzZXRWYWx1
ZUlmU2V0SW5NYXAoZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCwgImVuYWJsZURyYWdE
ZXN0aW5hdGlvbkFjdGlvbkxvYWQiLCB0ZXN0RmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0dXJl
cyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciwgImR1
bXBKU0NvbnNvbGVMb2dJblN0ZEVyciIsIHRlc3RGZWF0dXJlcy5ib29sVGVzdFJ1bm5lckZlYXR1
cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAobGF5ZXJCYWNrZWRXZWJWaWV3LCAibGF5ZXJC
YWNrZWRXZWJWaWV3IiwgdGVzdEZlYXR1cmVzLmJvb2xUZXN0UnVubmVyRmVhdHVyZXMpOwotICAg
IHNldFZhbHVlSWZTZXRJbk1hcCh1c2VFcGhlbWVyYWxTZXNzaW9uLCAidXNlRXBoZW1lcmFsU2Vz
c2lvbiIsIHRlc3RGZWF0dXJlcy5ib29sVGVzdFJ1bm5lckZlYXR1cmVzKTsKLQotICAgIHNldFZh
bHVlSWZTZXRJbk1hcChhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcywgImFkZGl0aW9uYWxT
dXBwb3J0ZWRJbWFnZVR5cGVzIiwgdGVzdEZlYXR1cmVzLnN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJl
cyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGpzY09wdGlvbnMsICJqc2NPcHRpb25zIiwgdGVz
dEZlYXR1cmVzLnN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlcyk7Ci0KLSAgICBzZXRWYWx1ZUlmU2V0
SW5NYXAoZW5hYmxlQ1NTTG9naWNhbCwgIkNTU0xvZ2ljYWxFbmFibGVkIiwgdGVzdEZlYXR1cmVz
LmludGVybmFsRGVidWdGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUxp
bmVIZWlnaHRVbml0cywgIkxpbmVIZWlnaHRVbml0c0VuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuaW50
ZXJuYWxEZWJ1Z0ZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlU2VsZWN0
aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllcywgInNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJp
ZXNFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmludGVybmFsRGVidWdGZWF0dXJlcyk7Ci0gICAgc2V0
VmFsdWVJZlNldEluTWFwKGxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVk
LCAiTGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQiLCB0ZXN0RmVhdHVy
ZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKTsKLQotICAgIHNldFZhbHVlSWZTZXRJbk1hcChhZENs
aWNrQXR0cmlidXRpb25FbmFibGVkLCAiQWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCIsIHRlc3RG
ZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVu
YWJsZUFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHQsICJBc3BlY3RSYXRpb09mSW1n
RnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0
dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUFzeW5jQ2xpcGJvYXJkQVBJLCAi
QXN5bmNDbGlwYm9hcmRBUElFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1
cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQ1NTT01WaWV3U21vb3RoU2Nyb2xs
aW5nLCAiQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBl
cmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUNvbnRhY3RQ
aWNrZXJBUEksICJDb250YWN0UGlja2VyQVBJRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmlt
ZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUNvcmVNYXRoTUws
ICJDb3JlTWF0aE1MRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7
Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZVJlcXVlc3RJZGxlQ2FsbGJhY2ssICJSZXF1
ZXN0SWRsZUNhbGxiYWNrRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJl
cyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZVJlc2l6ZU9ic2VydmVyLCAiUmVzaXpl
T2JzZXJ2ZXJFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKLSAg
ICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlV2ViR1BVLCAiV2ViR1BVRW5hYmxlZCIsIHRlc3RG
ZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7CisgICAgaWYgKGl0ICE9IG1hcC5lbmQoKSkK
KyAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7CisgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKK30K
KworYm9vbCBUZXN0T3B0aW9uczo6Ym9vbFRlc3RSdW5uZXJGZWF0dXJlVmFsdWUoc3RkOjpzdHJp
bmcga2V5LCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gZmVhdHVyZVZh
bHVlKGtleSwgZGVmYXVsdFZhbHVlLCBtX2ZlYXR1cmVzLmJvb2xUZXN0UnVubmVyRmVhdHVyZXMp
OwogfQogCi1ib29sIFRlc3RPcHRpb25zOjp3ZWJWaWV3SXNDb21wYXRpYmxlV2l0aE9wdGlvbnMo
Y29uc3QgVGVzdE9wdGlvbnMmIG90aGVyKSBjb25zdAorc3RkOjpzdHJpbmcgVGVzdE9wdGlvbnM6
OnN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlVmFsdWUoc3RkOjpzdHJpbmcga2V5LCBzdGQ6OnN0cmlu
ZyBkZWZhdWx0VmFsdWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG90aGVyLmxheWVyQmFja2VkV2Vi
VmlldyA9PSBsYXllckJhY2tlZFdlYlZpZXcKLSAgICAgICAgJiYgb3RoZXIuanNjT3B0aW9ucyA9
PSBqc2NPcHRpb25zOworICAgIHJldHVybiBmZWF0dXJlVmFsdWUoa2V5LCBkZWZhdWx0VmFsdWUs
IG1fZmVhdHVyZXMuc3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVzKTsKIH0KIAogfQpJbmRleDogVG9v
bHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1w
UmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw1MyArMzEsMzkg
QEAKIAogbmFtZXNwYWNlIFdUUiB7CiAKLXN0cnVjdCBUZXN0T3B0aW9ucyB7Ci0gICAgLy8gRklY
TUU6IFJlbW92ZSB0aGVzZSBhbmQgcmVwbGFjZSB3aXRoIGFjY2VzcyB0byBUZXN0RmVhdHVyZXMg
c2V0LgotICAgIC8vIFdlYiBQcmVmZXJlbmNlcwotICAgIGJvb2wgYWxsb3dDcm9zc09yaWdpblN1
YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMgeyBmYWxzZSB9OwotICAgIGJvb2wgYWxsb3dU
b3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyB7IHRydWUgfTsKLSAgICBib29sIGVuYWJsZUFjY2VsZXJh
dGVkRHJhd2luZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVBdHRhY2htZW50RWxlbWVudCB7
IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVCYWNrRm9yd2FyZENhY2hlIHsgZmFsc2UgfTsKLSAg
ICBib29sIGVuYWJsZUNvbG9yRmlsdGVyIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUluc3Bl
Y3RvckFkZGl0aW9ucyB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVJbnRlcnNlY3Rpb25PYnNl
cnZlciB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVLZXlnZW5FbGVtZW50IHsgZmFsc2UgfTsK
LSAgICBib29sIGVuYWJsZU1lbnVJdGVtRWxlbWVudCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFi
bGVNb2Rlcm5NZWRpYUNvbnRyb2xzIHsgdHJ1ZSB9OwotCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0
aGVzZSBhbmQgcmVwbGFjZSB3aXRoIGFjY2VzcyB0byBUZXN0RmVhdHVyZXMgc2V0LgotICAgIC8v
IEludGVybmFsIEZlYXR1cmVzCi0gICAgYm9vbCBlbmFibGVDU1NMb2dpY2FsIHsgZmFsc2UgfTsK
LSAgICBib29sIGVuYWJsZUxpbmVIZWlnaHRVbml0cyB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFi
bGVTZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzIHsgdHJ1ZSB9OwotICAgIGJvb2wgbGF5
b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQgeyB0cnVlIH07Ci0KLSAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoZXNlIGFuZCByZXBsYWNlIHdpdGggYWNjZXNzIHRvIFRlc3RGZWF0
dXJlcyBzZXQuCi0gICAgLy8gRXhwZXJpbWVudGFsIEZlYXR1cmVzCi0gICAgYm9vbCBhZENsaWNr
QXR0cmlidXRpb25FbmFibGVkIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUFzcGVjdFJhdGlv
T2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHQgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQXN5bmND
bGlwYm9hcmRBUEkgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQ1NTT01WaWV3U21vb3RoU2Ny
b2xsaW5nIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUNvbnRhY3RQaWNrZXJBUEkgeyBmYWxz
ZSB9OwotICAgIGJvb2wgZW5hYmxlQ29yZU1hdGhNTCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFi
bGVSZXF1ZXN0SWRsZUNhbGxiYWNrIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZVJlc2l6ZU9i
c2VydmVyIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZVdlYkdQVSB7IGZhbHNlIH07CitjbGFz
cyBUZXN0T3B0aW9ucyB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFRlc3RGZWF0dXJlcyYg
ZGVmYXVsdHMoKTsKKyAgICBzdGF0aWMgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3Ry
aW5nLCBUZXN0SGVhZGVyS2V5VHlwZT4mIGtleVR5cGVNYXBwaW5nKCk7CiAKLSAgICAvLyBUZXN0
IFJ1bm5lciBTcGVjaWZpYyBGZWF0dXJlcwotICAgIGJvb2wgZHVtcEpTQ29uc29sZUxvZ0luU3Rk
RXJyIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQg
eyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlV2ViU1FMIHsgdHJ1ZSB9OwotICAgIGJvb2wgbGF5
ZXJCYWNrZWRXZWJWaWV3IHsgZmFsc2UgfTsKLSAgICBib29sIHVzZUVwaGVtZXJhbFNlc3Npb24g
eyBmYWxzZSB9OwotICAgIHN0ZDo6c3RyaW5nIGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVz
OwotICAgIHN0ZDo6c3RyaW5nIGpzY09wdGlvbnM7CisgICAgZXhwbGljaXQgVGVzdE9wdGlvbnMo
VGVzdEZlYXR1cmVzIGZlYXR1cmVzKQorICAgICAgICA6IG1fZmVhdHVyZXMoc3RkOjptb3ZlKGZl
YXR1cmVzKSkKKyAgICB7CisgICAgfQogCi0gICAgZXhwbGljaXQgVGVzdE9wdGlvbnMoVGVzdEZl
YXR1cmVzKTsKICAgICBib29sIHdlYlZpZXdJc0NvbXBhdGlibGVXaXRoT3B0aW9ucyhjb25zdCBU
ZXN0T3B0aW9ucyYpIGNvbnN0OwotICAgIAotICAgIHN0YXRpYyBjb25zdCBzdGQ6OnVub3JkZXJl
ZF9tYXA8c3RkOjpzdHJpbmcsIFRlc3RIZWFkZXJLZXlUeXBlPiYga2V5VHlwZU1hcHBpbmcoKTsK
KworICAgIC8vIFRlc3QgUnVubmVyIFNwZWNpZmljIEZlYXR1cmVzCisgICAgYm9vbCBkdW1wSlND
b25zb2xlTG9nSW5TdGRFcnIoKSBjb25zdCB7IHJldHVybiBib29sVGVzdFJ1bm5lckZlYXR1cmVW
YWx1ZSgiZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIiwgZmFsc2UpOyB9CisgICAgYm9vbCBlbmFi
bGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkKCkgY29uc3QgeyByZXR1cm4gYm9vbFRlc3RSdW5u
ZXJGZWF0dXJlVmFsdWUoImVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQiLCBmYWxzZSk7
IH0KKyAgICBib29sIGxheWVyQmFja2VkV2ViVmlldygpIGNvbnN0IHsgcmV0dXJuIGJvb2xUZXN0
UnVubmVyRmVhdHVyZVZhbHVlKCJsYXllckJhY2tlZFdlYlZpZXciLCBmYWxzZSk7IH0KKyAgICBi
b29sIHVzZUVwaGVtZXJhbFNlc3Npb24oKSBjb25zdCB7IHJldHVybiBib29sVGVzdFJ1bm5lckZl
YXR1cmVWYWx1ZSgidXNlRXBoZW1lcmFsU2Vzc2lvbiIsIGZhbHNlKTsgfQorICAgIHN0ZDo6c3Ry
aW5nIGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzKCkgY29uc3QgeyByZXR1cm4gc3RyaW5n
VGVzdFJ1bm5lckZlYXR1cmVWYWx1ZSgiYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMiLCB7
IH0pOyB9CisgICAgc3RkOjpzdHJpbmcganNjT3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIHN0cmlu
Z1Rlc3RSdW5uZXJGZWF0dXJlVmFsdWUoImpzY09wdGlvbnMiLCB7IH0pOyB9CisKKyAgICBjb25z
dCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIGJvb2w+JiBib29sV2ViUHJlZmVyZW5j
ZUZlYXR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZl
YXR1cmVzOyB9CisgICAgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBkb3Vi
bGU+JiBkb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1
cmVzLmRvdWJsZVdlYlByZWZlcmVuY2VGZWF0dXJlczsgfQorICAgIGNvbnN0IHN0ZDo6dW5vcmRl
cmVkX21hcDxzdGQ6OnN0cmluZywgdWludDMyX3Q+JiB1aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVy
ZXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJl
czsgfQorICAgIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJp
bmc+JiBzdHJpbmdXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1
cmVzLnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlczsgfQorCisgICAgc3RhdGljIHN0ZDo6c3Ry
aW5nIHRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShjb25zdCBzdGQ6OnN0cmluZyYpOworCitw
cml2YXRlOgorICAgIGJvb2wgYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoc3RkOjpzdHJp
bmcga2V5LCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3Q7CisgICAgYm9vbCBib29sVGVzdFJ1bm5l
ckZlYXR1cmVWYWx1ZShzdGQ6OnN0cmluZyBrZXksIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdDsK
KyAgICBzdGQ6OnN0cmluZyBzdHJpbmdUZXN0UnVubmVyRmVhdHVyZVZhbHVlKHN0ZDo6c3RyaW5n
IGtleSwgc3RkOjpzdHJpbmcgZGVmYXVsdFZhbHVlKSBjb25zdDsKKworICAgIFRlc3RGZWF0dXJl
cyBtX2ZlYXR1cmVzOwogfTsKIAogfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJl
bmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiArMTA5LDcg
QEAKIAkJNURCOUFDOUUwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktpdFdlaWdodFdhdGNoZXI3MDAu
dHRmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzNzVGMDk3NzBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjcwMC50dGYg
Ki87IH07CiAJCTVEQjlBQzlGMEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVy
ODAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzc1RjA5NzgwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXI4MDAu
dHRmICovOyB9OwogCQk1REI5QUNBMDBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2VpZ2h0V2F0
Y2hlcjkwMC50dGYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDM3NUYwOTc5MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVy
OTAwLnR0ZiAqLzsgfTsKKwkJN0M0RjMwNDAyNTNCOTcwRjAwMzA1NDU4IC8qIFRlc3RPcHRpb25z
R2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzRGMzAzRjI1M0I4MzY5MDAzMDU0NTggLyogVGVz
dE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAqLzsgfTsKIAkJN0NG
RjlCQkYyNTMzQkIyNDAwMDgwMDlGIC8qIFRlc3RGZWF0dXJlcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0ZGOUJCRTI1MzNCQjI0MDAwODAwOUYg
LyogVGVzdEZlYXR1cmVzLmNwcCAqLzsgfTsKIAkJN0NGRjlCQzIyNTMzQkMxNjAwMDgwMDlGIC8q
IFRlc3RDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDRkY5QkMxMjUzM0JDMTYwMDA4MDA5RiAvKiBUZXN0Q29tbWFuZC5jcHAgKi87IH07
CiAJCTgwMDQ1QUVFMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
SGFuZGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgwMDQ1QUVDMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlci5tbSAqLzsgfTsKQEAgLTMzMyw4ICszMzQsMTIgQEAKIAkJN0M0NDY5N0YyNTM3N0EwMjAw
MjQyOTBBIC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBUZXN0T3B0aW9u
c0dlbmVyYXRlZEtleXMuaC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNDQ2
OTgwMjUzNzdBMDIwMDI0MjkwQSAvKiBjaGVjay14Y2ZpbGVsaXN0cy5zaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnNoOyBwYXRo
ID0gImNoZWNrLXhjZmlsZWxpc3RzLnNoIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0M0NDY5ODEyNTM3N0EwMjAwMjQyOTBBIC8qIGdlbmVyYXRlLWRlcml2ZWQtc291cmNlcy5zaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2Ny
aXB0LnNoOyBwYXRoID0gImdlbmVyYXRlLWRlcml2ZWQtc291cmNlcy5zaCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTdDNDQ2OTg1MjUzNzdFNTIwMDI0MjkwQSAvKiBUZXN0T3B0aW9u
c0dlbmVyYXRlZEtleXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlz
Lmg7IHBhdGggPSBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0M0NDY5ODUyNTM3N0U1MjAwMjQyOTBBIC8qIFRlc3RPcHRpb25zR2VuZXJh
dGVkS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M0RjMwM0YyNTNCODM2OTAwMzA1NDU4IC8qIFRl
c3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzlFMjUwQjI1M0I3OTRBMDA0MTMwMTggLyog
VGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
VGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQkJDMzIyMURERkNGOUEwMDc4NkI5RCAvKiBUZXN0
T3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0T3B0aW9ucy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Q0NCQTUxRDI1M0JCOUQzMDBCQjMyQzEg
LyogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNmaWxlbGlzdDsgcGF0aCA9ICJEZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0NDQkE1MUUyNTNCQjlEMzAwQkIzMkMxIC8qIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC54Y2ZpbGVsaXN0OyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NGRjlCQkQyNTMzQkIyNDAwMDgwMDlG
IC8qIFRlc3RGZWF0dXJlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0RmVhdHVyZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NGRjlCQkUyNTMzQkIyNDAwMDgwMDlGIC8qIFRlc3RG
ZWF0dXJlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXN0RmVhdHVyZXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0ZGOUJDMDI1MzNCQzE2MDAwODAwOUYgLyogVGVzdENv
bW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdENvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTUwMSw2ICs1MDYsOCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKIAkJCQkwRjE4RTZGMTFENkI5QzY0MDAyN0U1NDcgLyogRGVyaXZlZFNvdXJjZXMu
bWFrZSAqLywKKwkJCQk3Q0NCQTUxRDI1M0JCOUQzMDBCQjMyQzEgLyogRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdCAqLywKKwkJCQk3Q0NCQTUxRTI1M0JCOUQzMDBCQjMyQzEgLyogRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgKi8sCiAJCQkJN0M0NDY5ODIyNTM3N0MzNDAw
MjQyOTBBIC8qIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQkzMTQ4QTA2NTFFNkY5MEY0MDBEM0Iz
MTYgLyogVGVzdFJ1bm5lclNoYXJlZCAqLywKIAkJCQkwRjE4RTZFNzFENkI5QkY1MDAyN0U1NDcg
LyogVUlTY3JpcHRDb250ZXh0ICovLApAQCAtNzcwLDYgKzc3Nyw3IEBACiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdDNDQ2OTdGMjUzNzdBMDIwMDI0MjkwQSAvKiBU
ZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIgKi8sCisJCQkJN0M5RTI1MEIyNTNCNzk0QTAw
NDEzMDE4IC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAu
ZXJiICovLAogCQkJKTsKIAkJCXBhdGggPSBQcmVmZXJlbmNlc1RlbXBsYXRlczsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03NzgsNiArNzg2LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJN0M0NDY5ODUyNTM3N0U1MjAwMjQyOTBBIC8qIFRlc3RP
cHRpb25zR2VuZXJhdGVkS2V5cy5oICovLAorCQkJCTdDNEYzMDNGMjUzQjgzNjkwMDMwNTQ1OCAv
KiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwICovLAogCQkJ
KTsKIAkJCW5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJCXBhdGggPSBEZXJpdmVkU291cmNl
cy9EdW1wUmVuZGVyVHJlZTsKQEAgLTEyOTEsNiArMTMwMCw3IEBACiAJCQkJN0NGRjlCQzIyNTMz
QkMxNjAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDRkY5
QkJGMjUzM0JCMjQwMDA4MDA5RiAvKiBUZXN0RmVhdHVyZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTMwQTIxRjgyMDUxRDhDNDAwMDhGRjQyIC8qIFRlc3RPcHRpb25zLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTdDNEYzMDQwMjUzQjk3MEYwMDMwNTQ1OCAvKiBUZXN0T3B0aW9uc0dlbmVyYXRl
ZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwMTMxREEw
Qzk3NzIwMTAwODczMTdEIC8qIFRlc3RSdW5uZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNB
MThCMjQwQzlCMDE0QjAwMTE0MzY5IC8qIFRlc3RSdW5uZXJNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQlGNEQ0MjM2MTFERDUwNDgyMDA2NzgyOTAgLyogVGV4dElucHV0Q29udHJvbGxlcklPUy5t
IGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZl
cmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGlu
Zy5jcHAuZXJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1NjcmlwdHMvUHJl
ZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBw
aW5nLmNwcC5lcmIJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvU2NyaXB0
cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtl
eU1hcHBpbmcuY3BwLmVyYgkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICog
PCU9IEB3YXJuaW5nICU+CisgKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlRlc3RPcHRpb25zLmgiCisKK25hbWVzcGFjZSBXVFIgeworCitzdGQ6OnN0cmluZyBUZXN0
T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGNvbnN0IHN0ZDo6c3RyaW5nJiB3
ZWJQcmVmZXJlbmNlc0tleSkKK3sKKyAgICBzdGF0aWMgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6
c3RyaW5nLCBzdGQ6OnN0cmluZz4gbm9uU3RhbmRhcmRLZXlzID0geworPCUtIGZvciBAcHJlZiBp
biBAcHJlZmVyZW5jZXMuc2VsZWN0IHsgfHB8IHAub3B0c1sid2ViS2l0TGVnYWN5UHJlZmVyZW5j
ZUtleSJdIH0gZG8gLSU+CisgICAgICAgIHsgIjwlPSBAcHJlZi5uYW1lICU+IiwgIjwlPSBAcHJl
Zi5wcmVmZXJlbmNlS2V5ICU+IiB9LCBcCis8JS0gZW5kIC0lPgorICAgIH07CisKKyAgICBhdXRv
IGl0ID0gbm9uU3RhbmRhcmRLZXlzLmZpbmQod2ViUHJlZmVyZW5jZXNLZXkpOworICAgIGlmIChp
dCAhPSBub25TdGFuZGFyZEtleXMuZW5kKCkpCisgICAgICAgIHJldHVybiBpdC0+c2Vjb25kOwor
CisgICAgcmV0dXJuICJXZWJLaXQiICsgd2ViUHJlZmVyZW5jZXNLZXk7Cit9CisKK30KSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHJldmlzaW9uIDI2
ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSwxMiBAQCBleHRlcm4gIkMiIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKIAorc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4gdG9OUyhjb25zdCBzdGQ6
OnN0cmluZyYgc3RyaW5nKQoreworICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoVVRGOFN0cmluZzpzdHJpbmcuY19zdHIoKV0pOworfQorCisKICNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIEBpbnRlcmZhY2UgRHVtcFJlbmRlclRyZWVBcHBsaWNhdGlvbiA6IE5T
QXBwbGljYXRpb24KIEBlbmQKQEAgLTY3Miw2ICs2NzgsMTAgQEAgV2ViVmlldyAqY3JlYXRlV2Vi
Vmlld0FuZE9mZnNjcmVlbldpbmRvdwogICAgIFt3ZWJWaWV3IHNldEdyb3VwTmFtZTpAIm9yZy53
ZWJraXQuRHVtcFJlbmRlclRyZWUiXTsKICNlbmRpZgogCisgICAgV2ViUHJlZmVyZW5jZXMgKnBy
ZWZlcmVuY2VzID0gW1tXZWJQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF07CisgICAgW3ByZWZlcmVu
Y2VzIHNldEF1dG9zYXZlczpOT107CisgICAgW3dlYlZpZXcgc2V0UHJlZmVyZW5jZXM6cHJlZmVy
ZW5jZXNdOworCiAgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTp1aURlbGVnYXRlXTsKICAgICBb
d2ViVmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpmcmFtZUxvYWREZWxlZ2F0ZV07CiAgICAgW3dl
YlZpZXcgc2V0RWRpdGluZ0RlbGVnYXRlOmVkaXRpbmdEZWxlZ2F0ZV07CkBAIC02ODUsOCArNjk1
LDYgQEAgV2ViVmlldyAqY3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdwogICAgIFtXZWJW
aWV3IHJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbDpAImZlZWRzIl07CiAgICAgW1dlYlZpZXcgcmVn
aXN0ZXJVUkxTY2hlbWVBc0xvY2FsOkAiZmVlZHNlYXJjaCJdOwogCi0gICAgW1t3ZWJWaWV3IHBy
ZWZlcmVuY2VzXSBfc2V0TWVkaWFSZWNvcmRlckVuYWJsZWQ6WUVTXTsKLQogI2lmIFBMQVRGT1JN
KE1BQykKICAgICBbd2ViVmlldyBzZXRXaW5kb3dPY2NsdXNpb25EZXRlY3Rpb25FbmFibGVkOk5P
XTsKICAgICBbV2ViVmlldyBfc2V0Rm9udEFsbG93TGlzdDpmb250QWxsb3dMaXN0KCldOwpAQCAt
ODQ0LDkgKzg1Miw4IEBAIHN0YXRpYyB2b2lkIGVuYWJsZUV4cGVyaW1lbnRhbEZlYXR1cmVzKFcK
IH0KIAogLy8gQ2FsbGVkIGJlZm9yZSBlYWNoIHRlc3QuCi1zdGF0aWMgdm9pZCByZXNldFdlYlBy
ZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKCkKK3N0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVy
ZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzKQogewot
ICAgIFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtXZWJQcmVmZXJlbmNlcyBzdGFuZGFy
ZFByZWZlcmVuY2VzXTsKICAgICBlbmFibGVFeHBlcmltZW50YWxGZWF0dXJlcyhwcmVmZXJlbmNl
cyk7CiAKICAgICBbcHJlZmVyZW5jZXMgc2V0TmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxz
UXVpcms6IE5PXTsKQEAgLTkwMiw2ICs5MDksNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZl
cmVuY2VzVG9Db25zaXN0CiAgICAgfSBlbHNlCiAgICAgICAgIFtwcmVmZXJlbmNlcyBzZXRVc2Vy
U3R5bGVTaGVldEVuYWJsZWQ6Tk9dOwogCisgICAgW3ByZWZlcmVuY2VzIHNldElubGluZU1lZGlh
UGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRlOk5PXTsKICAgICBbcHJlZmVyZW5j
ZXMgc2V0TWVkaWFQbGF5YmFja0FsbG93c0lubGluZTpZRVNdOwogICAgIFtwcmVmZXJlbmNlcyBz
ZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZTpOT107CiAgICAgW3ByZWZlcmVuY2Vz
IHNldFZpZGVvUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlOk5PXTsKQEAgLTkyOCw5ICs5MzYs
OCBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0CiAjZW5kaWYKICAg
ICBbcHJlZmVyZW5jZXMgc2V0VXNlUHJlSFRNTDVQYXJzZXJRdWlya3M6Tk9dOwogICAgIFtwcmVm
ZXJlbmNlcyBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZDpOT107Ci0jaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgQVNTRVJUKFtwcmVmZXJlbmNlcyBtb2NrU2Nyb2xsYmFy
c0VuYWJsZWRdKTsKLSNlbmRpZgorCisgICAgW3ByZWZlcmVuY2VzIHNldE1vY2tTY3JvbGxiYXJz
RW5hYmxlZDpZRVNdOwogCiAgICAgW3ByZWZlcmVuY2VzIHNldFdlYkF1ZGlvRW5hYmxlZDpZRVNd
OwogICAgIFtwcmVmZXJlbmNlcyBzZXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVkOllF
U107CkBAIC05NjAsNiArOTY3LDcgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1Rv
Q29uc2lzdAogICAgIHByZWZlcmVuY2VzLm1lZGlhQ2FwYWJpbGl0aWVzRW5hYmxlZCA9IFlFUzsK
IAogICAgIHByZWZlcmVuY2VzLnNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXNFbmFibGVk
ID0gWUVTOworICAgIHByZWZlcmVuY2VzLmZ1bGxTY3JlZW5FbmFibGVkID0gWUVTOwogCiAgICAg
W3ByZWZlcmVuY2VzIHNldFdlYlNRTEVuYWJsZWQ6WUVTXTsKIApAQCAtOTY3LDM0ICs5NzUsMjEg
QEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdAogICAgIFtXZWJQcmVm
ZXJlbmNlcyBfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5
Ok5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluXTsKIH0K
IAotc3RhdGljIHZvaWQgc2V0V2ViUHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9ucyhjb25zdCBXVFI6
OlRlc3RPcHRpb25zJiBvcHRpb25zKQorc3RhdGljIHZvaWQgc2V0V2ViUHJlZmVyZW5jZXNGb3JU
ZXN0T3B0aW9ucyhXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMsIGNvbnN0IFdUUjo6VGVzdE9w
dGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzID0gW1dl
YlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdOworICAgIHByZWZlcmVuY2VzLnByaXZh
dGVCcm93c2luZ0VuYWJsZWQgPSBvcHRpb25zLnVzZUVwaGVtZXJhbFNlc3Npb24oKTsKKworICAg
IGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5ib29sV2ViUHJlZmVyZW5j
ZUZlYXR1cmVzKCkpCisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0Qm9vbFByZWZlcmVuY2VGb3JU
ZXN0aW5nV2l0aFZhbHVlOnZhbHVlIGZvcktleTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2Vi
S2l0TGVnYWN5UHJlZmVyZW5jZUtleShrZXkpKS5nZXQoKV07CiAKLSAgICBwcmVmZXJlbmNlcy5h
dHRhY2htZW50RWxlbWVudEVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUF0dGFjaG1lbnRFbGVtZW50
OwotICAgIHByZWZlcmVuY2VzLmFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQgPSBvcHRpb25zLmVu
YWJsZUFjY2VsZXJhdGVkRHJhd2luZzsKLSAgICBwcmVmZXJlbmNlcy5tZW51SXRlbUVsZW1lbnRF
bmFibGVkID0gb3B0aW9ucy5lbmFibGVNZW51SXRlbUVsZW1lbnQ7Ci0gICAgcHJlZmVyZW5jZXMu
a2V5Z2VuRWxlbWVudEVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUtleWdlbkVsZW1lbnQ7Ci0gICAg
cHJlZmVyZW5jZXMubW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQgPSBvcHRpb25zLmVuYWJsZU1v
ZGVybk1lZGlhQ29udHJvbHM7Ci0gICAgcHJlZmVyZW5jZXMuaW5zcGVjdG9yQWRkaXRpb25zRW5h
YmxlZCA9IG9wdGlvbnMuZW5hYmxlSW5zcGVjdG9yQWRkaXRpb25zOwotICAgIHByZWZlcmVuY2Vz
LmFsbG93Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzID0gb3B0aW9u
cy5hbGxvd0Nyb3NzT3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFsczsKLSAgICBw
cmVmZXJlbmNlcy5jb2xvckZpbHRlckVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUNvbG9yRmlsdGVy
OwotICAgIHByZWZlcmVuY2VzLnNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXNFbmFibGVk
ID0gb3B0aW9ucy5lbmFibGVTZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzOwotICAgIHBy
ZWZlcmVuY2VzLndlYkdQVUVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZVdlYkdQVTsKLSAgICBwcmVm
ZXJlbmNlcy5DU1NMb2dpY2FsRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlQ1NTTG9naWNhbDsKLSAg
ICBwcmVmZXJlbmNlcy5saW5lSGVpZ2h0VW5pdHNFbmFibGVkID0gb3B0aW9ucy5lbmFibGVMaW5l
SGVpZ2h0VW5pdHM7Ci0gICAgcHJlZmVyZW5jZXMuYWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCA9
IG9wdGlvbnMuYWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZDsKLSAgICBwcmVmZXJlbmNlcy5yZXNp
emVPYnNlcnZlckVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZVJlc2l6ZU9ic2VydmVyOwotICAgIHBy
ZWZlcmVuY2VzLkNTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWQgPSBvcHRpb25zLmVuYWJs
ZUNTU09NVmlld1Ntb290aFNjcm9sbGluZzsKLSAgICBwcmVmZXJlbmNlcy5jb3JlTWF0aE1MRW5h
YmxlZCA9IG9wdGlvbnMuZW5hYmxlQ29yZU1hdGhNTDsKLSAgICBwcmVmZXJlbmNlcy5yZXF1ZXN0
SWRsZUNhbGxiYWNrRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlUmVxdWVzdElkbGVDYWxsYmFjazsK
LSAgICBwcmVmZXJlbmNlcy5hc3luY0NsaXBib2FyZEFQSUVuYWJsZWQgPSBvcHRpb25zLmVuYWJs
ZUFzeW5jQ2xpcGJvYXJkQVBJOwotICAgIHByZWZlcmVuY2VzLnByaXZhdGVCcm93c2luZ0VuYWJs
ZWQgPSBvcHRpb25zLnVzZUVwaGVtZXJhbFNlc3Npb247Ci0gICAgcHJlZmVyZW5jZXMudXNlc1Bh
Z2VDYWNoZSA9IG9wdGlvbnMuZW5hYmxlQmFja0ZvcndhcmRDYWNoZTsKLSAgICBwcmVmZXJlbmNl
cy5sYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCA9IG9wdGlvbnMubGF5
b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQ7Ci0gICAgcHJlZmVyZW5jZXMu
YXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWQgPSBvcHRpb25zLmVuYWJs
ZUFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHQ7Ci0gICAgcHJlZmVyZW5jZXMuYWxs
b3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyA9IG9wdGlvbnMuYWxsb3dUb3BOYXZpZ2F0aW9uVG9E
YXRhVVJMczsKLSAgICBwcmVmZXJlbmNlcy5jb250YWN0UGlja2VyQVBJRW5hYmxlZCA9IG9wdGlv
bnMuZW5hYmxlQ29udGFjdFBpY2tlckFQSTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZh
bHVlXSA6IG9wdGlvbnMuZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAgIFtw
cmVmZXJlbmNlcyBfc2V0RG91YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dmFsdWUg
Zm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5
KGtleSkpLmdldCgpXTsKKworICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0
aW9ucy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAgICAgW3ByZWZlcmVuY2Vz
IF9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZSBmb3JLZXk6dG9O
UyhXVFI6OlRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVuY2VLZXkoa2V5KSkuZ2V0
KCldOworCisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLnN0cmlu
Z1dlYlByZWZlcmVuY2VGZWF0dXJlcygpKQorICAgICAgICBbcHJlZmVyZW5jZXMgX3NldFN0cmlu
Z1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnRvTlModmFsdWUpLmdldCgpIGZvcktleTp0
b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShrZXkpKS5n
ZXQoKV07CiB9CiAKIC8vIENhbGxlZCBvbmNlIG9uIER1bXBSZW5kZXJUcmVlIHN0YXJ0dXAuCkBA
IC0xMDE4LDkgKzEwMTMsNiBAQCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZh
bHVlCiAgICAgICAgIEAiQXBwbGVPdGhlckhpZ2hsaWdodENvbG9yIjpAIjAuNTAwMDAwIDAuNTAw
MDAwIDAuNTAwMDAwIiwKICAgICAgICAgQCJBcHBsZUxhbmd1YWdlcyI6IEBbIEAiZW4iIF0sCiAg
ICAgICAgIFdlYktpdEVuYWJsZUZ1bGxEb2N1bWVudFRlYXJkb3duUHJlZmVyZW5jZUtleTogQFlF
UywKLSAgICAgICAgV2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5OiBAWUVTLAot
ICAgICAgICBXZWJLaXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrUHJlZmVyZW5jZUtleTogQFlF
UywKLSAgICAgICAgV2ViS2l0SW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVB
dHRyaWJ1dGVLZXk6IEBOTywKICAgICAgICAgQCJVc2VXZWJLaXRXZWJJbnNwZWN0b3IiOiBAWUVT
LAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBAIk5TUHJlZmVycmVkU3BlbGxT
ZXJ2ZXJMYW5ndWFnZSI6IEAiZW5fVVMiLApAQCAtMTgyNiw5ICsxODE4LDkgQEAgc3RhdGljIHZv
aWQgc2V0SlNDT3B0aW9ucyhjb25zdCBXVFI6OlRlcwogICAgICAgICBzYXZlZE9wdGlvbnMuY2xl
YXIoKTsKICAgICB9CiAKLSAgICBpZiAob3B0aW9ucy5qc2NPcHRpb25zLmxlbmd0aCgpKSB7Cisg
ICAgaWYgKCFvcHRpb25zLmpzY09wdGlvbnMoKS5lbXB0eSgpKSB7CiAgICAgICAgIEpTQzo6T3B0
aW9uczo6ZHVtcEFsbE9wdGlvbnNJbkFMaW5lKHNhdmVkT3B0aW9ucyk7Ci0gICAgICAgIEpTQzo6
T3B0aW9uczo6c2V0T3B0aW9ucyhvcHRpb25zLmpzY09wdGlvbnMuY19zdHIoKSk7CisgICAgICAg
IEpTQzo6T3B0aW9uczo6c2V0T3B0aW9ucyhvcHRpb25zLmpzY09wdGlvbnMoKS5jX3N0cigpKTsK
ICAgICB9CiB9CiAKQEAgLTE4MzksNiArMTgzMSwxMCBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZp
ZXdUb0NvbnNpc3RlbnRTdGF0CiAKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW21haW5GcmFtZSB3
ZWJWaWV3XTsKIAorICAgIFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtbV2ViUHJlZmVy
ZW5jZXMgYWxsb2NdIGluaXRdOworICAgIFtwcmVmZXJlbmNlcyBzZXRBdXRvc2F2ZXM6Tk9dOwor
ICAgIFt3ZWJWaWV3IHNldFByZWZlcmVuY2VzOnByZWZlcmVuY2VzXTsKKwogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgYWRqdXN0V2ViRG9jdW1lbnRGb3JTdGFuZGFyZFZpZXdwb3J0KGdX
ZWJCcm93c2VyVmlldywgZ1dlYlNjcm9sbFZpZXcpOwogICAgIFt3ZWJWaWV3IF9zZXRBbGxvd3NN
ZXNzYWdpbmc6WUVTXTsKQEAgLTE4NjcsMTAgKzE4NjMsMTAgQEAgc3RhdGljIHZvaWQgcmVzZXRX
ZWJWaWV3VG9Db25zaXN0ZW50U3RhdAogCiAgICAgW1dlYkNhY2hlIGNsZWFyQ2FjaGVkQ3JlZGVu
dGlhbHNdOwogCi0gICAgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcygpOwot
ICAgIHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMob3B0aW9ucyk7CisgICAgcmVzZXRX
ZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhwcmVmZXJlbmNlcyk7CisgICAgc2V0V2Vi
UHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9ucyhwcmVmZXJlbmNlcywgb3B0aW9ucyk7CiAjaWYgUExB
VEZPUk0oTUFDKQotICAgIFt3ZWJWaWV3IHNldFdhbnRzTGF5ZXI6b3B0aW9ucy5sYXllckJhY2tl
ZFdlYlZpZXddOworICAgIFt3ZWJWaWV3IHNldFdhbnRzTGF5ZXI6b3B0aW9ucy5sYXllckJhY2tl
ZFdlYlZpZXcoKV07CiAjZW5kaWYKIAogICAgIFRlc3RSdW5uZXI6OnNldFNlcmlhbGl6ZUhUVFBM
b2FkcyhmYWxzZSk7CkBAIC0xOTE0LDcgKzE5MTAsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZp
ZXdUb0NvbnNpc3RlbnRTdGF0CiAgICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRd
IGRlY2xhcmVUeXBlczpAW05TU3RyaW5nUGJvYXJkVHlwZV0gb3duZXI6bmlsXTsKICNlbmRpZgog
Ci0gICAgV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBl
c0ZvclRlc3Rpbmcob3B0aW9ucy5hZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5jX3N0cigp
KTsKKyAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5
cGVzRm9yVGVzdGluZyhvcHRpb25zLmFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzKCkuY19z
dHIoKSk7CiAKICAgICBbbWFpbkZyYW1lIF9jbGVhck9wZW5lcl07CiAKQEAgLTE5NzAsNyArMTk2
Niw3IEBAIHN0YXRpYyBOU1VSTCAqY29tcHV0ZVRlc3RVUkwoTlNTdHJpbmcgKnAKIAogc3RhdGlj
IFdUUjo6VGVzdE9wdGlvbnMgdGVzdE9wdGlvbnNGb3JUZXN0KGNvbnN0IFdUUjo6VGVzdENvbW1h
bmQmIGNvbW1hbmQpCiB7Ci0gICAgV1RSOjpUZXN0RmVhdHVyZXMgZmVhdHVyZXM7CisgICAgV1RS
OjpUZXN0RmVhdHVyZXMgZmVhdHVyZXMgPSBXVFI6OlRlc3RPcHRpb25zOjpkZWZhdWx0cygpOwog
ICAgIFdUUjo6bWVyZ2UoZmVhdHVyZXMsIFdUUjo6aGFyZGNvZGVkRmVhdHVyZXNCYXNlZE9uUGF0
aEZvclRlc3QoY29tbWFuZCkpOwogICAgIFdUUjo6bWVyZ2UoZmVhdHVyZXMsIFdUUjo6ZmVhdHVy
ZURlZmF1bHRzRnJvbVRlc3RIZWFkZXJGb3JUZXN0KGNvbW1hbmQsIFdUUjo6VGVzdE9wdGlvbnM6
OmtleVR5cGVNYXBwaW5nKCkpKTsKIApAQCAtMjAxNyw3ICsyMDEzLDcgQEAgc3RhdGljIHZvaWQg
cnVuVGVzdChjb25zdCBzdHJpbmcmIGlucHV0TAogICAgIGdUZXN0UnVubmVyID0gVGVzdFJ1bm5l
cjo6Y3JlYXRlKHRlc3RVUkwsIGNvbW1hbmQuZXhwZWN0ZWRQaXhlbEhhc2gpOwogICAgIGdUZXN0
UnVubmVyLT5zZXRBbGxvd2VkSG9zdHMoYWxsb3dlZEhvc3RzKTsKICAgICBnVGVzdFJ1bm5lci0+
c2V0Q3VzdG9tVGltZW91dChjb21tYW5kLnRpbWVvdXQubWlsbGlzZWNvbmRzKCkpOwotICAgIGdU
ZXN0UnVubmVyLT5zZXREdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoY29tbWFuZC5kdW1wSlNDb25z
b2xlTG9nSW5TdGRFcnIgfHwgb3B0aW9ucy5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIpOworICAg
IGdUZXN0UnVubmVyLT5zZXREdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoY29tbWFuZC5kdW1wSlND
b25zb2xlTG9nSW5TdGRFcnIgfHwgb3B0aW9ucy5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoKSk7
CiAKICAgICByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZShvcHRpb25zLCBSZXNldFRpbWU6
OkJlZm9yZVRlc3QpOwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5l
ck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5l
ck1hYy5tbQkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rl
c3RSdW5uZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3NiwxNCArNTc2LDE0IEBAIHZvaWQg
VGVzdFJ1bm5lcjo6c2V0UGFnZVBhdXNlZChib29sIHBhdXMKIAogdm9pZCBUZXN0UnVubmVyOjpz
ZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQoYm9vbCBmbGFnKQogewotICAgIFtbV2ViUHJlZmVyZW5j
ZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkOmZsYWddOwor
ICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRF
bmFibGVkOmZsYWddOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0TG9j
YXRpb24oSlNTdHJpbmdSZWYgcGF0aCkKIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBh
dGhDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
cGF0aCkpOwogICAgIE5TVVJMICp1cmwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzooX19icmlkZ2Ug
TlNTdHJpbmcgKilwYXRoQ0YuZ2V0KCldOwotICAgIFtbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQ
cmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbjp1cmxdOworICAgIFtbW21haW5G
cmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbjp1cmxd
OwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBKU1N0cmluZ1JlZiB2YWx1ZSkKQEAgLTYwOSw3
ICs2MDksNyBAQCB2b2lkIFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZShKU1N0CiAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiB2YWx1ZUNGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0
cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB2YWx1ZSkpOwogICAgIE5TU3RyaW5nICp2YWx1ZU5T
ID0gKF9fYnJpZGdlIE5TU3RyaW5nICopdmFsdWVDRi5nZXQoKTsKIAotICAgIFtbV2ViUHJlZmVy
ZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10gX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZhbHVl
OnZhbHVlTlMgZm9yS2V5OmtleU5TXTsKKyAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVy
ZW5jZXNdIF9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZU5TIGZv
cktleTprZXlOU107CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQWxsVmlzaXRlZExpbmtz
KCkKQEAgLTcwMCw3ICs3MDAsNyBAQCBib29sIFRlc3RSdW5uZXI6OmZpbmRTdHJpbmcoSlNDb250
ZXh0UmVmCiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0Q2FjaGVNb2RlbChpbnQgY2FjaGVNb2RlbCkK
IHsKLSAgICBbW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdIHNldENhY2hlTW9k
ZWw6KFdlYkNhY2hlTW9kZWwpY2FjaGVNb2RlbF07CisgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXdd
IHByZWZlcmVuY2VzXSBzZXRDYWNoZU1vZGVsOihXZWJDYWNoZU1vZGVsKWNhY2hlTW9kZWxdOwog
fQogCiBib29sIFRlc3RSdW5uZXI6OmlzQ29tbWFuZEVuYWJsZWQoSlNTdHJpbmdSZWYgbmFtZSkK
SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCShyZXZpc2lvbiAyNjg2
NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQkod29ya2luZyBj
b3B5KQpAQCAtNjAsNyArNjAsNyBAQCAtICh2b2lkKXJlc2V0V2luZG93T3JpZ2luCiAKIC0gKHZv
aWQpcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rpbmc6KGNvbnN0IFdUUjo6VGVzdE9w
dGlvbnMmKW9wdGlvbnMKIHsKLSAgICBtX2VuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQg
PSBvcHRpb25zLmVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQ7CisgICAgbV9lbmFibGVE
cmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkID0gb3B0aW9ucy5lbmFibGVEcmFnRGVzdGluYXRpb25B
Y3Rpb25Mb2FkKCk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBzZXRG
cmFtZTooTlNSZWN0KWZyYW1lCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJl
bmRlclRyZWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1w
UmVuZGVyVHJlZS5jcHAJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwNiwyOCArOTA2LDM3
IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3QKIAogICAgIHByZWZl
cmVuY2VzLT5zZXRGb250U21vb3RoaW5nKEZvbnRTbW9vdGhpbmdUeXBlU3RhbmRhcmQpOwogCisg
ICAgcHJlZnNQcml2YXRlLT5zZXRXZWJTUUxFbmFibGVkKHRydWUpOworCiAgICAgcHJlZnNQcml2
YXRlLT5zZXREYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQoVFJVRSk7CiAgICAgcHJlZnNQcml2YXRl
LT5jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uKCk7CiAKICAgICBzZXRBbHdheXNBY2NlcHRDb29r
aWVzKGZhbHNlKTsKIH0KIAorc3RhdGljIGJvb2wgYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFs
dWUoc3RkOjpzdHJpbmcga2V5LCBib29sIGRlZmF1bHRWYWx1ZSwgY29uc3QgV1RSOjpUZXN0T3B0
aW9ucyYgb3B0aW9ucykKK3sKKyAgICBhdXRvIGl0ID0gb3B0aW9ucy5ib29sV2ViUHJlZmVyZW5j
ZUZlYXR1cmVzKCkuZmluZChrZXkpOworICAgIGlmIChpdCAhPSBvcHRpb25zLmJvb2xXZWJQcmVm
ZXJlbmNlRmVhdHVyZXMoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7CisgICAg
cmV0dXJuIGRlZmF1bHRWYWx1ZTsKK30KKwogc3RhdGljIHZvaWQgc2V0V2ViUHJlZmVyZW5jZXNG
b3JUZXN0T3B0aW9ucyhJV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzLCBjb25zdCBXVFI6OlRl
c3RPcHRpb25zJiBvcHRpb25zKQogewogICAgIENPTVB0cjxJV2ViUHJlZmVyZW5jZXNQcml2YXRl
OD4gcHJlZnNQcml2YXRlIHsgUXVlcnksIHByZWZlcmVuY2VzIH07CiAKLSAgICBwcmVmc1ByaXZh
dGUtPnNldE1lbnVJdGVtRWxlbWVudEVuYWJsZWQob3B0aW9ucy5lbmFibGVNZW51SXRlbUVsZW1l
bnQpOwotICAgIHByZWZzUHJpdmF0ZS0+c2V0S2V5Z2VuRWxlbWVudEVuYWJsZWQob3B0aW9ucy5l
bmFibGVLZXlnZW5FbGVtZW50KTsKLSAgICBwcmVmc1ByaXZhdGUtPnNldE1vZGVybk1lZGlhQ29u
dHJvbHNFbmFibGVkKG9wdGlvbnMuZW5hYmxlTW9kZXJuTWVkaWFDb250cm9scyk7Ci0gICAgcHJl
ZnNQcml2YXRlLT5zZXRJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkKG9wdGlvbnMuZW5hYmxlSW5z
cGVjdG9yQWRkaXRpb25zKTsKLSAgICBwcmVmc1ByaXZhdGUtPnNldFJlcXVlc3RJZGxlQ2FsbGJh
Y2tFbmFibGVkKG9wdGlvbnMuZW5hYmxlUmVxdWVzdElkbGVDYWxsYmFjayk7Ci0gICAgcHJlZnNQ
cml2YXRlLT5zZXRBc3luY0NsaXBib2FyZEFQSUVuYWJsZWQob3B0aW9ucy5lbmFibGVBc3luY0Ns
aXBib2FyZEFQSSk7Ci0gICAgcHJlZnNQcml2YXRlLT5zZXRDb250YWN0UGlja2VyQVBJRW5hYmxl
ZChvcHRpb25zLmVuYWJsZUNvbnRhY3RQaWNrZXJBUEkpOwotICAgIHByZWZzUHJpdmF0ZS0+c2V0
V2ViU1FMRW5hYmxlZChvcHRpb25zLmVuYWJsZVdlYlNRTCk7Ci0gICAgcHJlZnNQcml2YXRlLT5z
ZXRBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzKG9wdGlvbnMuYWxsb3dUb3BOYXZpZ2F0aW9u
VG9EYXRhVVJMcyk7Ci0gICAgcHJlZmVyZW5jZXMtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQo
b3B0aW9ucy51c2VFcGhlbWVyYWxTZXNzaW9uKTsKLSAgICBwcmVmZXJlbmNlcy0+c2V0VXNlc1Bh
Z2VDYWNoZShvcHRpb25zLmVuYWJsZUJhY2tGb3J3YXJkQ2FjaGUpOwotICAgIHByZWZzUHJpdmF0
ZS0+c2V0Q1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZChvcHRpb25zLmVuYWJsZUNTU09N
Vmlld1Ntb290aFNjcm9sbGluZyk7CisgICAgcHJlZmVyZW5jZXMtPnNldFByaXZhdGVCcm93c2lu
Z0VuYWJsZWQob3B0aW9ucy51c2VFcGhlbWVyYWxTZXNzaW9uKCkpOworICAgIHByZWZlcmVuY2Vz
LT5zZXRVc2VzUGFnZUNhY2hlKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJVc2VzQmFj
a0ZvcndhcmRDYWNoZSIsIGZhbHNlLCBvcHRpb25zKSk7CisgICAgcHJlZnNQcml2YXRlLT5zZXRN
ZW51SXRlbUVsZW1lbnRFbmFibGVkKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJNZW51
SXRlbUVsZW1lbnRFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1ByaXZhdGUt
PnNldEtleWdlbkVsZW1lbnRFbmFibGVkKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJL
ZXlnZW5FbGVtZW50RW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKKyAgICBwcmVmc1ByaXZhdGUt
PnNldE1vZGVybk1lZGlhQ29udHJvbHNFbmFibGVkKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZh
bHVlKCJNb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCIsIHRydWUsIG9wdGlvbnMpKTsKKyAgICBw
cmVmc1ByaXZhdGUtPnNldEluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQoYm9vbFdlYlByZWZlcmVu
Y2VGZWF0dXJlVmFsdWUoIkluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQiLCBmYWxzZSwgb3B0aW9u
cykpOworICAgIHByZWZzUHJpdmF0ZS0+c2V0UmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWQoYm9v
bFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIlJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkIiwg
ZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldEFzeW5jQ2xpcGJvYXJkQVBJ
RW5hYmxlZChib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQXN5bmNDbGlwYm9hcmRBUElF
bmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldENvbnRhY3RQ
aWNrZXJBUElFbmFibGVkKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJDb250YWN0UGlj
a2VyQVBJRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKSk7CisgICAgcHJlZnNQcml2YXRlLT5zZXRB
bGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVl
KCJBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzIiwgdHJ1ZSwgb3B0aW9ucykpOworICAgIHBy
ZWZzUHJpdmF0ZS0+c2V0Q1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZChib29sV2ViUHJl
ZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCIsIGZh
bHNlLCBvcHRpb25zKSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgYXBwbGljYXRpb25JZCgpCkBAIC05
NzMsOSArOTgyLDkgQEAgc3RhdGljIHZvaWQgc2V0SlNDT3B0aW9ucyhjb25zdCBXVFI6OlRlcwog
ICAgICAgICBzYXZlZE9wdGlvbnMuY2xlYXIoKTsKICAgICB9CiAKLSAgICBpZiAob3B0aW9ucy5q
c2NPcHRpb25zLmxlbmd0aCgpKSB7CisgICAgaWYgKCFvcHRpb25zLmpzY09wdGlvbnMuZW1wdHko
KSkgewogICAgICAgICBKU0M6Ok9wdGlvbnM6OmR1bXBBbGxPcHRpb25zSW5BTGluZShzYXZlZE9w
dGlvbnMpOwotICAgICAgICBKU0M6Ok9wdGlvbnM6OnNldE9wdGlvbnMob3B0aW9ucy5qc2NPcHRp
b25zLmNfc3RyKCkpOworICAgICAgICBKU0M6Ok9wdGlvbnM6OnNldE9wdGlvbnMob3B0aW9ucy5q
c2NPcHRpb25zKCkuY19zdHIoKSk7CiAgICAgfQogfQogCkBAIC0xMTY4LDcgKzExNzcsNyBAQCBz
dGF0aWMgYm9vbCBoYW5kbGVDb250cm9sQ29tbWFuZChjb25zdCBjCiAKIHN0YXRpYyBXVFI6OlRl
c3RPcHRpb25zIHRlc3RPcHRpb25zRm9yVGVzdChjb25zdCBXVFI6OlRlc3RDb21tYW5kJiBjb21t
YW5kKQogewotICAgIFdUUjo6VGVzdEZlYXR1cmVzIGZlYXR1cmVzOworICAgIFdUUjo6VGVzdEZl
YXR1cmVzIGZlYXR1cmVzID0gV1RSOjpUZXN0T3B0aW9uczo6ZGVmYXVsdHMoKTsKICAgICBXVFI6
Om1lcmdlKGZlYXR1cmVzLCBXVFI6OmhhcmRjb2RlZEZlYXR1cmVzQmFzZWRPblBhdGhGb3JUZXN0
KGNvbW1hbmQpKTsKICAgICBXVFI6Om1lcmdlKGZlYXR1cmVzLCBXVFI6OmZlYXR1cmVEZWZhdWx0
c0Zyb21UZXN0SGVhZGVyRm9yVGVzdChjb21tYW5kLCBXVFI6OlRlc3RPcHRpb25zOjprZXlUeXBl
TWFwcGluZygpKSk7CiAKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIxLDE3ICs5MjEsMTYgQEAgdm9pZCBU
ZXN0Q29udHJvbGxlcjo6cmVzZXRQcmVmZXJlbmNlc1RvQwogICAgIHBsYXRmb3JtUmVzZXRQcmVm
ZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcygpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBba2V5
LCB2YWx1ZV0gOiBvcHRpb25zLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKLSAgICAgICAg
V0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleShwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0so
a2V5KS5nZXQoKSk7CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JU
ZXN0aW5nKHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKIAogICAgIGZvciAo
Y29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5kb3VibGVXZWJQcmVmZXJlbmNlRmVh
dHVyZXMoKSkKLSAgICAgICAgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5KHByZWZl
cmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKKyAgICAgICAgV0tQcmVmZXJlbmNlc1Nl
dERvdWJsZVZhbHVlRm9yS2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5
KS5nZXQoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMu
dWludDMyV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCi0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXRV
SW50MzJWYWx1ZUZvcktleShwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7Cisg
ICAgICAgIFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVy
ZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBb
a2V5LCB2YWx1ZV0gOiBvcHRpb25zLnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAg
ICAgICBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkocHJlZmVyZW5jZXMsIHRvV0so
dmFsdWUpLmdldCgpLCB0b1dLKGtleSkuZ2V0KCkpOwotCisgICAgICAgIFdLUHJlZmVyZW5jZXNT
ZXRTdHJpbmdWYWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVyZW5jZXMsIHRvV0sodmFsdWUpLmdl
dCgpLCB0b1dLKGtleSkuZ2V0KCkpOwogfQogCiBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0
YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZXNldFN0
YWdlIHJlc2V0U3RhZ2UpCg==
</data>
<flag name="commit-queue"
          id="428029"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411707</attachid>
            <date>2020-10-18 10:04:47 -0700</date>
            <delta_ts>2020-10-18 11:17:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201018100447.patch</filename>
            <type>text/plain</type>
            <size>58904</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTE3ICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVu
ZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBXS1ByZWZlcmVuY2Vz
U2V0KlZhbHVlRm9yS2V5IFNQSSB0byBXS1ByZWZlcmVuY2VzU2V0KlZhbHVlRm9yS2V5Rm9yVGVz
dGluZworICAgICAgICB0byBtYWtlIGl0IGNsZWFyIHdoYXQgdGhleSBhcmUgdXNlZCBmb3IgYW5k
IGZvciBjb25zaXN0ZW5jeSB3aXRoIFdlYktpdExlZ2FjeS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29s
VmFsdWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXREb3VibGVW
YWx1ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZh
bHVlRm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFs
dWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVG
b3JLZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9y
S2V5KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktl
eSk6IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJp
dmF0ZS5oOgorCiAyMDIwLTEwLTE2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBJbnRyb2R1Y2UgUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5IHRvIG1hbmFnZSB0aGUgcmVzb3VyY2VzIGluIHRoZSBHUFUgUHJvY2VzcwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5j
cHAJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UHJlZmVyZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCwyMiArNzgsMjIgQEAgdm9pZCBX
S1ByZWZlcmVuY2VzU2V0SW50ZXJuYWxEZWJ1Z0ZlYXR1cgogICAgIHRvSW1wbChwcmVmZXJlbmNl
c1JlZiktPnNldEludGVybmFsRGVidWdGZWF0dXJlRW5hYmxlZEZvcktleSh0b1dURlN0cmluZyhp
bnRlcm5hbERlYnVnRmVhdHVyZUtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2Vz
U2V0Qm9vbFZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wg
dmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZv
cktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1
ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldEJv
b2xWYWx1ZUZvcktleSh0b1dURlN0cmluZyhrZXkpLCB2YWx1ZSk7CiB9CiAKLXZvaWQgV0tQcmVm
ZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIGRvdWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0
RG91YmxlVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIGRvdWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJl
bmNlc1JlZiktPnNldEJvb2xWYWx1ZUZvcktleSh0b1dURlN0cmluZyhrZXkpLCB2YWx1ZSk7CiB9
CiAKLXZvaWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNS
ZWYgcHJlZmVyZW5jZXNSZWYsIHVpbnQzMl90IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCit2b2lk
IFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKIHsK
ICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRVSW50MzJWYWx1ZUZvcktleSh0b1dURlN0
cmluZyhrZXkpLCB2YWx1ZSk7CiB9CiAKLXZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVl
Rm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RyaW5nUmVmIHZhbHVl
LCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktl
eUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYg
dmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKIHsKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5z
ZXRTdHJpbmdWYWx1ZUZvcktleSh0b1dURlN0cmluZyhrZXkpLCB0b1dURlN0cmluZyh2YWx1ZSkp
OwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1Jl
ZlByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NiwxMCArNTYsMTAgQEAgV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1Jlc2V0
QWxsSW50ZQogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldEludGVybmFsRGVidWdGZWF0
dXJlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYsIGJvb2wsIFdLU3RyaW5nUmVmKTsKIAogLy8gVGhl
IGZvbGxvd2luZyBnZW5lcmljIHNldHRlciBmdW5jdGlvbnMgYXJlIG9ubHkgaW50ZW5kZWQgZm9y
IHVzZSBieSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlLgotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJl
bmNlc1NldEJvb2xWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBi
b29sIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNl
c1NldERvdWJsZVZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGRv
dWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKLVdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5j
ZXNTZXRVSW50MzJWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1
aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKLVdLX0VYUE9SVCB2b2lkIFdLUHJlZmVy
ZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVm
LCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VYUE9SVCB2b2lkIFdL
UHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXNSZWYsIGJvb2wgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7CitXS19FWFBPUlQg
dm9pZCBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVy
ZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGRvdWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsK
K1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleUZvclRlc3Rp
bmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3Ry
aW5nUmVmIGtleSk7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVG
b3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RyaW5n
UmVmIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwogCiAvLyBGb3IgVGVzdCBSdW5uZXIgVXNlIG9u
bHkuCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzUmVzZXRUZXN0UnVubmVyT3ZlcnJpZGVz
KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpOwpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMTAtMTcgIFNh
bSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFtUZXN0aW5nXSBDb252ZXJ0
IER1bXBSZW5kZXJUcmVlIHRvIHVzZSBnZW5lcmF0ZWQgdGVzdCBoZWFkZXIgb3B0aW9ucworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3ODgwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIGEgc2V0
IG9mIHNldHRlcnMgdG8gZm9yIER1bXBSZW5kZXJUcmVlIHRvIHVzZSB3aGVuIHNldHRpbmcgcHJl
ZmVyZW5jZXMKKyAgICAgICAgYnkgc3RyaW5nLgorCisgICAgICAgICogV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3N3aXRjaE5ldHdvcmtMb2Fk
ZXJUb05ld1Rlc3RpbmdTZXNzaW9uXSk6CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIF9zZXRD
dXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6XSk6CisgICAgICAg
ICgrW1dlYlByZWZlcmVuY2VzIF9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uXSk6CisgICAgICAg
ICgtW1dlYlByZWZlcmVuY2VzIF9zZXRCb29sUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6
Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0VUludDMyUHJlZmVyZW5j
ZUZvclRlc3RpbmdXaXRoVmFsdWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNl
cyBfc2V0RG91YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6Zm9yS2V5Ol0pOgorICAg
ICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRo
VmFsdWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0UHJlZmVyZW5j
ZUZvclRlc3RXaXRoVmFsdWU6Zm9yS2V5Ol0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlZpZXcv
V2ViUHJlZmVyZW5jZXNQcml2YXRlLmg6CisKIDIwMjAtMTAtMTcgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgogCiAgICAgICAgIENvbnZlcnQgcHJlZmVyZW5jZXMgaW4gV2ViUHJlZmVy
ZW5jZXNQcml2YXRlLmggdG8gdXNlIEBwcm9wZXJ0eSBzeW50YXggdG8gbWFrZSB0aGVtIG1vcmUg
bWFuYWdlYWJsZQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYw
LDI2ICsxNjYwLDYgQEAgKyAodm9pZClfc2V0SUJDcmVhdG9ySUQ6KE5TU3RyaW5nICopc3RyaQog
ICAgIFtvbGQgcmVsZWFzZV07CiB9CiAKLSsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05l
d1Rlc3RpbmdTZXNzaW9uCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBXZWJUaHJl
YWRMb2NrKCk7Ci0jZW5kaWYKLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRv
TmV3VGVzdGluZ1Nlc3Npb24oKTsKLX0KLQotKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vz
c2lvbgotewotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCkuZGVsZXRlQWxsQ29va2llcygpOwotfQotCi0rICh2b2lkKV9zZXRDdXJyZW50TmV0d29y
a0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSlwb2xpY3kKLXsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2ll
U3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCkuY29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsgLy8gV2lsbCBm
YWlsIHdoZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNz
aW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KLSAgICBDRkhUVFBDb29raWVTdG9yYWdl
U2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7Ci19Ci0K
IC0gKEJPT0wpaXNET01QYXN0ZUFsbG93ZWQKIHsKICAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1
ZUZvcktleTpXZWJLaXRET01QYXN0ZUFsbG93ZWRQcmVmZXJlbmNlS2V5XTsKQEAgLTE5NjYsMTEg
KzE5NDYsNiBAQCAtICh2b2lkKXdpbGxBZGRUb1dlYlZpZXcKICAgICArK19wcml2YXRlLT5udW1X
ZWJWaWV3czsKIH0KIAotLSAodm9pZClfc2V0UHJlZmVyZW5jZUZvclRlc3RXaXRoVmFsdWU6KE5T
U3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQotewotICAgIFtzZWxmIF9zZXRT
dHJpbmdWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKLX0KLQogLSAodm9pZClzZXRGdWxsU2NyZWVu
RW5hYmxlZDooQk9PTClmbGFnCiB7CiAgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTpmbGFnIGZvcktl
eTpXZWJLaXRGdWxsU2NyZWVuRW5hYmxlZFByZWZlcmVuY2VLZXldOwpAQCAtMzAxMyw2ICsyOTg4
LDUxIEBAIC0gKHZvaWQpX3NldEVuYWJsZWQ6KEJPT0wpdmFsdWUgZm9yRmVhdHUKIAogQGVuZAog
CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVRlc3RpbmcpCisK
KysgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uCit7CisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBXZWJUaHJlYWRMb2NrKCk7CisjZW5kaWYKKyAgICBO
ZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKK30K
KworKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9s
aWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9saWN5Cit7CisgICAgUmV0YWluUHRyPENG
SFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Np
b25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsKKyAgICBBU1NF
UlQoY29va2llU3RvcmFnZSk7IC8vIFdpbGwgZmFpbCB3aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhh
bmQuCisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVT
dG9yYWdlLmdldCgpLCBwb2xpY3kpOworfQorCisrICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJT
ZXNzaW9uCit7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKS5kZWxldGVBbGxDb29raWVzKCk7Cit9CisKKy0gKHZvaWQpX3NldEJvb2xQcmVmZXJl
bmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTooQk9PTCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5
Cit7CisgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAo
dm9pZClfc2V0VUludDMyUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KHVpbnQzMl90KXZh
bHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2VsZiBfc2V0SW50ZWdlclZhbHVl
OnZhbHVlIGZvcktleTprZXldOworfQorCistICh2b2lkKV9zZXREb3VibGVQcmVmZXJlbmNlRm9y
VGVzdGluZ1dpdGhWYWx1ZTooZG91YmxlKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sK
KyAgICBbc2VsZiBfc2V0RmxvYXRWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAodm9p
ZClfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KE5TU3RyaW5nICopdmFs
dWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9zZXRTdHJpbmdWYWx1ZTp2
YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworQGVuZAorCiBAaW1wbGVtZW50YXRpb24gV2ViUHJlZmVy
ZW5jZXMgKFdlYlByaXZhdGVQcmVmZXJlbmNlc0NvbnZlcnRlZFRvV2ViRmVhdHVyZSkKIAogLSAo
Qk9PTCl1c2VyR2VzdHVyZVByb21pc2VQcm9wYWdhdGlvbkVuYWJsZWQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZh
dGUuaAkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtODksMTMgKzg5LDYg
QEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZSkKICsgKHZvaWQpX3NldElu
aXRpYWxEZWZhdWx0VGV4dEVuY29kaW5nVG9TeXN0ZW1FbmNvZGluZzsKICsgKHZvaWQpX3NldElC
Q3JlYXRvcklEOihOU1N0cmluZyAqKXN0cmluZzsKIAotLy8gRm9yIER1bXBSZW5kZXJUcmVlIHVz
ZSBvbmx5LgotKyAodm9pZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb247
Ci0rICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xp
Y3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSljb29raWVBY2NlcHRQb2xpY3k7Ci0rICh2b2lk
KV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uOwotLy8gVXNlZCB0byBzZXQgcHJlZmVyZW5jZSBz
cGVjaWZpZWQgaW4gdGhlIHRlc3QgdmlhIExheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJl
ZmVyZW5jZSguLikuCi0tICh2b2lkKV9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhWYWx1ZTooTlNT
dHJpbmcgKil2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OwotCiArICh2b2lkKXNldFdlYktp
dExpbmtUaW1lVmVyc2lvbjooaW50KXZlcnNpb247CiAKIC8vIEZvciBXZWJWaWV3J3MgdXNlIG9u
bHkuCkBAIC0zMTAsNiArMzAzLDE4IEBAIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlBy
aXZhdGVGZWEKIC0gKHZvaWQpX3NldEVuYWJsZWQ6KEJPT0wpdmFsdWUgZm9yRmVhdHVyZTooV2Vi
RmVhdHVyZSAqKWZlYXR1cmU7CiBAZW5kCiAKK0BpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdl
YlByaXZhdGVUZXN0aW5nKQorKyAodm9pZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGlu
Z1Nlc3Npb247CisrICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVB
Y2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSljb29raWVBY2NlcHRQb2xpY3k7
CisrICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uOworCistICh2b2lkKV9zZXRCb29s
UHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KEJPT0wpdmFsdWUgZm9yS2V5OihOU1N0cmlu
ZyAqKWtleTsKKy0gKHZvaWQpX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVl
Oih1aW50MzJfdCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OworLSAodm9pZClfc2V0RG91
YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KGRvdWJsZSl2YWx1ZSBmb3JLZXk6KE5T
U3RyaW5nICopa2V5OworLSAodm9pZClfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRo
VmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKworQGVuZAor
CiAvLyBGSVhNRTogSWYgdGhlc2UgYXJlIG5vdCB1c2VkIGFueXdoZXJlLCB3ZSBzaG91bGQgcmVt
b3ZlIHRoZW0gYW5kIG9ubHkgdXNlIFdlYkZlYXR1cmUgbWVjaGFuaXNtIGZvciB0aGUgcHJlZmVy
ZW5jZS4KIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGVQcmVmZXJlbmNlc0Nv
bnZlcnRlZFRvV2ViRmVhdHVyZSkKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHVzZXJHZXN0
dXJlUHJvbWlzZVByb3BhZ2F0aW9uRW5hYmxlZDsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDIwLTEwLTE3ICBTYW0g
V2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBE
dW1wUmVuZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtXSVBdCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rl
c3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiOiBBZGRlZC4K
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RPcHRpb25zOjpkZWZhdWx0cyk6CisgICAgICAgIChXVFI6OlRlc3RPcHRpb25zOjp3ZWJW
aWV3SXNDb21wYXRpYmxlV2l0aE9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV1RSOjpmZWF0dXJl
VmFsdWUpOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6Ym9vbFRlc3RSdW5uZXJGZWF0dXJl
VmFsdWUgY29uc3QpOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6c3RyaW5nVGVzdFJ1bm5l
ckZlYXR1cmVWYWx1ZSBjb25zdCk6CisgICAgICAgIChXVFI6OnNldFZhbHVlSWZTZXRJbk1hcCk6
IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlRlc3RPcHRpb25zOjpUZXN0T3B0aW9ucyk6IERlbGV0
ZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuaDoKKyAgICAgICAgKFdU
Ujo6VGVzdE9wdGlvbnM6OlRlc3RPcHRpb25zKToKKyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6
OmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBjb25zdCk6CisgICAgICAgIChXVFI6OlRlc3RPcHRp
b25zOjplbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkIGNvbnN0KToKKyAgICAgICAgKFdU
Ujo6VGVzdE9wdGlvbnM6OmxheWVyQmFja2VkV2ViVmlldyBjb25zdCk6CisgICAgICAgIChXVFI6
OlRlc3RPcHRpb25zOjp1c2VFcGhlbWVyYWxTZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdUUjo6
VGVzdE9wdGlvbnM6OmFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzIGNvbnN0KToKKyAgICAg
ICAgKFdUUjo6VGVzdE9wdGlvbnM6OmpzY09wdGlvbnMgY29uc3QpOgorICAgICAgICAoV1RSOjpU
ZXN0T3B0aW9uczo6Ym9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyBjb25zdCk6CisgICAgICAgIChX
VFI6OlRlc3RPcHRpb25zOjpkb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMgY29uc3QpOgorICAg
ICAgICAoV1RSOjpUZXN0T3B0aW9uczo6dWludDMyV2ViUHJlZmVyZW5jZUZlYXR1cmVzIGNvbnN0
KToKKyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6OnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJl
cyBjb25zdCk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHRvTlMpOgorICAgICAgICAoY3JlYXRl
V2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdyk6CisgICAgICAgIChyZXNldFdlYlByZWZlcmVuY2Vz
VG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9w
dGlvbnMpOgorICAgICAgICAoc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXNGb3JUZXN0aW5n
KToKKyAgICAgICAgKHNldEpTQ09wdGlvbnMpOgorICAgICAgICAocmVzZXRXZWJWaWV3VG9Db25z
aXN0ZW50U3RhdGUpOgorICAgICAgICAodGVzdE9wdGlvbnNGb3JUZXN0KToKKyAgICAgICAgKHJ1
blRlc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgor
ICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKToKKyAgICAgICAg
KFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24pOgorICAgICAgICAoVGVzdFJ1
bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldENhY2hl
TW9kZWwpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tOgorICAg
ICAgICAoLVtVSURlbGVnYXRlIHJlc2V0VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nOl0p
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVl
cyk6CisKIDIwMjAtMTAtMTcgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtGbGF0cGFrIFNES10gZmxhdHBha3V0aWxzLnB5IHJlcG9ydHMgIktleUVy
cm9yOiAnZ2NjJyIgZXJyb3IgaWYgdXNpbmcgd2l0aCBpY2VjYyBhbmQgdG9vbGNoYWlucyBhcmVu
J3QgZ2VuZXJhdGVkIHlldApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvQ01ha2VMaXN0cy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvQ01ha2VMaXN0cy50eHQJKHJl
dmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIGxpc3QoQVBQRU5EIER1bXBSZW5kZXJUcmVl
X1BSSVZBVEVfSU5DTFUKICkKIAogc2V0KER1bXBSZW5kZXJUcmVlX1dFQl9QUkVGRVJFTkNFU19U
RU1QTEFURVMKKyAgICAke0R1bXBSZW5kZXJUcmVlX0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNlc1Rl
bXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVy
YgogICAgICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVz
L1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYgogKQogCkBAIC01MywxMiArNTQsMTMgQEAg
c2V0KER1bXBSZW5kZXJUcmVlX1dFQl9QUkVGRVJFTkNFUwogc2V0X3NvdXJjZV9maWxlc19wcm9w
ZXJ0aWVzKCR7RHVtcFJlbmRlclRyZWVfV0VCX1BSRUZFUkVOQ0VTfSBQUk9QRVJUSUVTIEdFTkVS
QVRFRCBUUlVFKQogCiBhZGRfY3VzdG9tX2NvbW1hbmQoCi0gICAgT1VUUFVUICR7RHVtcFJlbmRl
clRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmgKKyAg
ICBPVVRQVVQgJHtEdW1wUmVuZGVyVHJlZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9UZXN0T3B0aW9u
c0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwICR7RHVtcFJlbmRlclRyZWVfREVS
SVZFRF9TT1VSQ0VTX0RJUn0vVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmgKICAgICBERVBFTkRT
ICR7RHVtcFJlbmRlclRyZWVfV0VCX1BSRUZFUkVOQ0VTX1RFTVBMQVRFU30gJHtEdW1wUmVuZGVy
VHJlZV9XRUJfUFJFRkVSRU5DRVN9IFdURl9Db3B5UHJlZmVyZW5jZXMKLSAgICBDT01NQU5EICR7
UlVCWV9FWEVDVVRBQkxFfSAke1dURl9TQ1JJUFRTX0RJUn0vR2VuZXJhdGVQcmVmZXJlbmNlcy5y
YiAtLWZyb250ZW5kIFdlYktpdExlZ2FjeSAtLWJhc2UgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZl
cmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWwgLS1kZWJ1ZyAke1dURl9TQ1JJUFRTX0RJUn0vUHJl
ZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNEZWJ1Zy55YW1sIC0tZXhwZXJpbWVudGFsICR7V1RGX1ND
UklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIC0t
aW50ZXJuYWwgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50
ZXJuYWwueWFtbCAtLW91dHB1dERpciAiJHtEdW1wUmVuZGVyVHJlZV9ERVJJVkVEX1NPVVJDRVNf
RElSfSIgLS10ZW1wbGF0ZSAke0R1bXBSZW5kZXJUcmVlX0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNl
c1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIKKyAgICBDT01NQU5EICR7
UlVCWV9FWEVDVVRBQkxFfSAke1dURl9TQ1JJUFRTX0RJUn0vR2VuZXJhdGVQcmVmZXJlbmNlcy5y
YiAtLWZyb250ZW5kIFdlYktpdExlZ2FjeSAtLWJhc2UgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZl
cmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWwgLS1kZWJ1ZyAke1dURl9TQ1JJUFRTX0RJUn0vUHJl
ZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNEZWJ1Zy55YW1sIC0tZXhwZXJpbWVudGFsICR7V1RGX1ND
UklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIC0t
aW50ZXJuYWwgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50
ZXJuYWwueWFtbCAtLW91dHB1dERpciAiJHtEdW1wUmVuZGVyVHJlZV9ERVJJVkVEX1NPVVJDRVNf
RElSfSIgLS10ZW1wbGF0ZSAke0R1bXBSZW5kZXJUcmVlX0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNl
c1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3Bw
LmVyYiAtLXRlbXBsYXRlICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2Vz
VGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYgogICAgIFZFUkJBVElNKQog
CiBsaXN0KEFQUEVORCBEdW1wUmVuZGVyVHJlZV9TT1VSQ0VTCisgICAgJHtEdW1wUmVuZGVyVHJl
ZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtl
eU1hcHBpbmcuY3BwCiAgICAgJHtEdW1wUmVuZGVyVHJlZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9U
ZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaAogKQogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJl
ZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI2
ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTYsNyArNiwxMCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvdXNyL2xvY2FsL2luY2x1ZGUvCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2lu
Y2x1ZGUvd3RmL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1s
CiAkKFBST0pFQ1RfRElSKS8uLi9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5k
aW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCiAkKFBST0pFQ1RfRElSKS9CaW5kaW5ncy9Db2Rl
R2VuZXJhdG9yRHVtcFJlbmRlclRyZWUucG0KKyQoUFJPSkVDVF9ESVIpL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKICQoUFJPSkVDVF9ESVIpL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9w
dGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCiskKFBST0pFQ1RfRElSKS9TY3JpcHRzL1ByZWZlcmVu
Y2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5j
cHAuZXJiCiskKFBST0pFQ1RfRElSKS9TY3JpcHRzL2dlbmVyYXRlLWRlcml2ZWQtc291cmNlcy5z
aAogJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0NvZGVHZW5lcmF0b3IucG0KICQoV0VC
Q09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9JRExBdHRyaWJ1dGVzLmpzb24KICQoV0VCQ09SRV9Q
UklWQVRFX0hFQURFUlNfRElSKS9JRExQYXJzZXIucG0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CShyZXZpc2lv
biAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdAkod29ya2luZyBjb3B5KQpAQCAtMiwzICsyLDQgQEAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9EdW1wUmVuZGVyVHJlZS9KU1VJU2NyaXB0Q29udHJvbGxl
ci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9EdW1wUmVuZGVyVHJl
ZS9KU1VJU2NyaXB0Q29udHJvbGxlci5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmgKKyQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9uc0dl
bmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwCkluZGV4OiBUb29scy9EdW1wUmVuZGVy
VHJlZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTIzLDI5ICsy
MywxMiBAQAogCiBSVUJZID0gcnVieQogCi1XRUJfUFJFRkVSRU5DRVMgPSBcCi0gICAgJHtXVEZf
QlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWwgXAotICAg
ICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0RlYnVn
LnlhbWwgXAotICAgICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVm
ZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIFwKLSAgICAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0v
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sIFwKLSMKLQotV0VCX1BSRUZF
UkVOQ0VTX1RFTVBMQVRFUyA9IFwKLSAgICAkKER1bXBSZW5kZXJUcmVlKS9TY3JpcHRzL1ByZWZl
cmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYiBcCi0jCi1XRUJf
UFJFRkVSRU5DRVNfRklMRVMgPSAkKGJhc2VuYW1lICQobm90ZGlyICQoV0VCX1BSRUZFUkVOQ0VT
X1RFTVBMQVRFUykpKQotV0VCX1BSRUZFUkVOQ0VTX1BBVFRFUk5TID0gJChzdWJzdCAuZXJiLCwk
KFdFQl9QUkVGRVJFTkNFU19GSUxFUykpCi0KLWFsbCA6ICQoV0VCX1BSRUZFUkVOQ0VTX0ZJTEVT
KQotCi0kKFdFQl9QUkVGRVJFTkNFU19QQVRURVJOUykgOiAkKFdURl9CVUlMRF9TQ1JJUFRTX0RJ
UikvR2VuZXJhdGVQcmVmZXJlbmNlcy5yYiAkKFdFQl9QUkVGRVJFTkNFU19URU1QTEFURVMpICQo
V0VCX1BSRUZFUkVOQ0VTKQotCSQoUlVCWSkgJDwgLS1mcm9udGVuZCBXZWJLaXRMZWdhY3kgLS1i
YXNlICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlcy55
YW1sIC0tZGVidWcgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZl
cmVuY2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRhbCAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0v
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCAtLWludGVybmFsICR7
V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFs
LnlhbWwgJChhZGRwcmVmaXggLS10ZW1wbGF0ZSAsICQoV0VCX1BSRUZFUkVOQ0VTX1RFTVBMQVRF
UykpCi0KLQogVUlTQ1JJUFRDT05URVhUX0RJUiA9ICQoRHVtcFJlbmRlclRyZWUpLy4uL1Rlc3RS
dW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzCitEVU1QUkVOREVSVFJFRV9QUkVG
RVJFTkNFU19URU1QTEFURVNfRElSID0gJChEdW1wUmVuZGVyVHJlZSkvU2NyaXB0cy9QcmVmZXJl
bmNlc1RlbXBsYXRlcwogCiBWUEFUSCA9IFwKICAgICAkKFVJU0NSSVBUQ09OVEVYVF9ESVIpIFwK
KyAgICAkKERVTVBSRU5ERVJUUkVFX1BSRUZFUkVOQ0VTX1RFTVBMQVRFU19ESVIpIFwKICMKIAog
VUlDT05URVhUX0lOVEVSRkFDRVMgPSBcCkBAIC03MSwzICs1NCwyMSBAQCBhbGwgOiBcCiAgICAg
JChVSUNPTlRFWFRfSU5URVJGQUNFUzolPUpTJS5oKSBcCiAgICAgJChVSUNPTlRFWFRfSU5URVJG
QUNFUzolPUpTJS5jcHApIFwKICMKKworCitXRUJfUFJFRkVSRU5DRVMgPSBcCisgICAgJHtXVEZf
QlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWwgXAorICAg
ICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0RlYnVn
LnlhbWwgXAorICAgICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVm
ZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIFwKKyAgICAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0v
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sIFwKKyMKKworV0VCX1BSRUZF
UkVOQ0VTX0dFTkVSQVRFRF9GSUxFUyA9IFwKKyAgICBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktp
dExlZ2FjeUtleU1hcHBpbmcuY3BwIFwKKyAgICBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaCBc
CisjCisKK2FsbCA6ICQoV0VCX1BSRUZFUkVOQ0VTX0dFTkVSQVRFRF9GSUxFUykKKworJChXRUJf
UFJFRkVSRU5DRVNfR0VORVJBVEVEX0ZJTEVTKSA6ICUgOiAlLmVyYiAkKFdFQl9QUkVGRVJFTkNF
UykgJChXVEZfQlVJTERfU0NSSVBUU19ESVIpL0dlbmVyYXRlUHJlZmVyZW5jZXMucmIKKwkkKFJV
QlkpICQoV1RGX0JVSUxEX1NDUklQVFNfRElSKS9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiIC0tZnJv
bnRlbmQgV2ViS2l0TGVnYWN5IC0tYmFzZSAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVy
ZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCAtLWRlYnVnICR7V1RGX0JVSUxEX1NDUklQVFNfRElS
fS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0RlYnVnLnlhbWwgLS1leHBlcmltZW50YWwgJHtX
VEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVu
dGFsLnlhbWwgLS1pbnRlcm5hbCAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMv
V2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sIC0tdGVtcGxhdGUgJDwKSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHAJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNDQg
QEAKIAogbmFtZXNwYWNlIFdUUiB7CiAKK2NvbnN0IFRlc3RGZWF0dXJlcyYgVGVzdE9wdGlvbnM6
OmRlZmF1bHRzKCkKK3sKKyAgICBzdGF0aWMgVGVzdEZlYXR1cmVzIGZlYXR1cmVzOworICAgIGlm
IChmZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzLmVtcHR5KCkpIHsKKyAgICAgICAg
ZmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyA9IHsKKyAgICAgICAgICAgIC8vIFRo
ZXNlIGFyZSBXZWJQcmVmZXJlbmNlIHZhbHVlcyB0aGF0IG11c3QgYWx3YXlzIGJlIHNldCBhcyB0
aGV5IG1heQorICAgICAgICAgICAgLy8gZGlmZmVyIGZyb20gdGhlIGRlZmF1bHQgc2V0IGluIHRo
ZSBXZWJQcmVmZXJlbmNlcyoueWFtbCBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgeyAiQWxs
b3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMiLCBmYWxzZSB9LAor
ICAgICAgICAgICAgeyAiQWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyIsIHRydWUgfSwKKyAg
ICAgICAgICAgIHsgIkFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAg
ICAgICAgeyAiQXR0YWNobWVudEVsZW1lbnRFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAg
IHsgIlVzZXNCYWNrRm9yd2FyZENhY2hlIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkNvbG9y
RmlsdGVyRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJJbnNwZWN0b3JBZGRpdGlv
bnNFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkludGVyc2VjdGlvbk9ic2VydmVy
RW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJLZXlnZW5FbGVtZW50RW5hYmxlZCIs
IGZhbHNlIH0sCisgICAgICAgICAgICB7ICJNZW51SXRlbUVsZW1lbnRFbmFibGVkIiwgZmFsc2Ug
fSwKKyAgICAgICAgICAgIHsgIk1vZGVybk1lZGlhQ29udHJvbHNFbmFibGVkIiwgdHJ1ZSB9LAor
CisgICAgICAgICAgICB7ICJDU1NMb2dpY2FsRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAg
ICB7ICJMaW5lSGVpZ2h0VW5pdHNFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIlNl
bGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXNFbmFibGVkIiwgdHJ1ZSB9LAorICAgICAgICAg
ICAgeyAiTGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQiLCB0cnVlIH0s
CisKKyAgICAgICAgICAgIHsgIkFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQiLCBmYWxzZSB9LAor
ICAgICAgICAgICAgeyAiQXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWQi
LCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQXN5bmNDbGlwYm9hcmRBUElFbmFibGVkIiwgZmFs
c2UgfSwKKyAgICAgICAgICAgIHsgIkNTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWQiLCBm
YWxzZSB9LAorICAgICAgICAgICAgeyAiQ29udGFjdFBpY2tlckFQSUVuYWJsZWQiLCBmYWxzZSB9
LAorICAgICAgICAgICAgeyAiQ29yZU1hdGhNTEVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAg
ICAgeyAiUmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAg
eyAiUmVzaXplT2JzZXJ2ZXJFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIldlYkdQ
VUVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICB9OworICAgIH0KKyAgICByZXR1cm4gZmVhdHVy
ZXM7Cit9CisKIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgVGVzdEhlYWRl
cktleVR5cGU+JiBUZXN0T3B0aW9uczo6a2V5VHlwZU1hcHBpbmcoKQogewogICAgIHN0YXRpYyBj
b25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFRlc3RIZWFkZXJLZXlUeXBlPiBt
YXAgewpAQCAtNDcsNTYgKzg1LDQ3IEBAIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0
cmluZywgVGUKICAgICByZXR1cm4gbWFwOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0
aWMgdm9pZCBzZXRWYWx1ZUlmU2V0SW5NYXAoVCYgdmFsdWVUb1NldCwgc3RkOjpzdHJpbmcga2V5
LCBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFQ+JiBtYXApCitib29sIFRl
c3RPcHRpb25zOjp3ZWJWaWV3SXNDb21wYXRpYmxlV2l0aE9wdGlvbnMoY29uc3QgVGVzdE9wdGlv
bnMmIG9wdGlvbnMpIGNvbnN0Cit7CisgICAgaWYgKG1fZmVhdHVyZXMuZXhwZXJpbWVudGFsRmVh
dHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVz
ICE9IG9wdGlvbnMubV9mZWF0dXJlcy5pbnRlcm5hbERlYnVnRmVhdHVyZXMpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVz
ICE9IG9wdGlvbnMubV9mZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuZG91YmxlV2ViUHJlZmVyZW5jZUZl
YXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5kb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy51aW50MzJXZWJQcmVm
ZXJlbmNlRmVhdHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLnVpbnQzMldlYlByZWZlcmVuY2VG
ZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLnN0cmlu
Z1dlYlByZWZlcmVuY2VGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMuc3RyaW5nV2ViUHJl
ZmVyZW5jZUZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVy
ZXMuYm9vbFRlc3RSdW5uZXJGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMuYm9vbFRlc3RS
dW5uZXJGZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVz
LmRvdWJsZVRlc3RSdW5uZXJGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMuZG91YmxlVGVz
dFJ1bm5lckZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVy
ZXMuc3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5zdHJpbmdU
ZXN0UnVubmVyRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0
dXJlcy5zdHJpbmdWZWN0b3JUZXN0UnVubmVyRmVhdHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVz
LnN0cmluZ1ZlY3RvclRlc3RSdW5uZXJGZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGZlYXR1cmVWYWx1
ZShzdGQ6OnN0cmluZyBrZXksIFQgZGVmYXVsdFZhbHVlLCBjb25zdCBzdGQ6OnVub3JkZXJlZF9t
YXA8c3RkOjpzdHJpbmcsIFQ+JiBtYXApCiB7CiAgICAgYXV0byBpdCA9IG1hcC5maW5kKGtleSk7
Ci0gICAgaWYgKGl0ID09IG1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHZhbHVlVG9T
ZXQgPSBpdC0+c2Vjb25kOwotfQotCi1UZXN0T3B0aW9uczo6VGVzdE9wdGlvbnMoVGVzdEZlYXR1
cmVzIHRlc3RGZWF0dXJlcykKLXsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoYWxsb3dDcm9zc09y
aWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMsICJBbGxvd0Nyb3NzT3JpZ2luU3Vi
cmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyIsIHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVy
ZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoYWxsb3dUb3BOYXZpZ2F0aW9u
VG9EYXRhVVJMcywgIkFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMiLCB0ZXN0RmVhdHVyZXMu
Ym9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJs
ZUFjY2VsZXJhdGVkRHJhd2luZywgIkFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQiLCB0ZXN0RmVh
dHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFw
KGVuYWJsZUF0dGFjaG1lbnRFbGVtZW50LCAiQXR0YWNobWVudEVsZW1lbnRFbmFibGVkIiwgdGVz
dEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJ
bk1hcChlbmFibGVCYWNrRm9yd2FyZENhY2hlLCAiVXNlc0JhY2tGb3J3YXJkQ2FjaGUiLCB0ZXN0
RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldElu
TWFwKGVuYWJsZUNvbG9yRmlsdGVyLCAiQ29sb3JGaWx0ZXJFbmFibGVkIiwgdGVzdEZlYXR1cmVz
LmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFi
bGVJbnNwZWN0b3JBZGRpdGlvbnMsICJJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkIiwgdGVzdEZl
YXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1h
cChlbmFibGVJbnRlcnNlY3Rpb25PYnNlcnZlciwgIkludGVyc2VjdGlvbk9ic2VydmVyRW5hYmxl
ZCIsIHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1
ZUlmU2V0SW5NYXAoZW5hYmxlS2V5Z2VuRWxlbWVudCwgIktleWdlbkVsZW1lbnRFbmFibGVkIiwg
dGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZT
ZXRJbk1hcChlbmFibGVNZW51SXRlbUVsZW1lbnQsICJNZW51SXRlbUVsZW1lbnRFbmFibGVkIiwg
dGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZT
ZXRJbk1hcChlbmFibGVNb2Rlcm5NZWRpYUNvbnRyb2xzLCAiTW9kZXJuTWVkaWFDb250cm9sc0Vu
YWJsZWQiLCB0ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0KLSAgICBz
ZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCwgImVuYWJs
ZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQiLCB0ZXN0RmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJG
ZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGR1bXBKU0NvbnNvbGVMb2dJblN0ZEVy
ciwgImR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciIsIHRlc3RGZWF0dXJlcy5ib29sVGVzdFJ1bm5l
ckZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAobGF5ZXJCYWNrZWRXZWJWaWV3LCAi
bGF5ZXJCYWNrZWRXZWJWaWV3IiwgdGVzdEZlYXR1cmVzLmJvb2xUZXN0UnVubmVyRmVhdHVyZXMp
OwotICAgIHNldFZhbHVlSWZTZXRJbk1hcCh1c2VFcGhlbWVyYWxTZXNzaW9uLCAidXNlRXBoZW1l
cmFsU2Vzc2lvbiIsIHRlc3RGZWF0dXJlcy5ib29sVGVzdFJ1bm5lckZlYXR1cmVzKTsKLQotICAg
IHNldFZhbHVlSWZTZXRJbk1hcChhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcywgImFkZGl0
aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzIiwgdGVzdEZlYXR1cmVzLnN0cmluZ1Rlc3RSdW5uZXJG
ZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGpzY09wdGlvbnMsICJqc2NPcHRpb25z
IiwgdGVzdEZlYXR1cmVzLnN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlcyk7Ci0KLSAgICBzZXRWYWx1
ZUlmU2V0SW5NYXAoZW5hYmxlQ1NTTG9naWNhbCwgIkNTU0xvZ2ljYWxFbmFibGVkIiwgdGVzdEZl
YXR1cmVzLmludGVybmFsRGVidWdGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVu
YWJsZUxpbmVIZWlnaHRVbml0cywgIkxpbmVIZWlnaHRVbml0c0VuYWJsZWQiLCB0ZXN0RmVhdHVy
ZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxl
U2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllcywgInNlbGVjdGlvbkFjcm9zc1NoYWRvd0Jv
dW5kYXJpZXNFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmludGVybmFsRGVidWdGZWF0dXJlcyk7Ci0g
ICAgc2V0VmFsdWVJZlNldEluTWFwKGxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25F
bmFibGVkLCAiTGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQiLCB0ZXN0
RmVhdHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKTsKLQotICAgIHNldFZhbHVlSWZTZXRJbk1h
cChhZENsaWNrQXR0cmlidXRpb25FbmFibGVkLCAiQWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCIs
IHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldElu
TWFwKGVuYWJsZUFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHQsICJBc3BlY3RSYXRp
b09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50
YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUFzeW5jQ2xpcGJvYXJk
QVBJLCAiQXN5bmNDbGlwYm9hcmRBUElFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRh
bEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQ1NTT01WaWV3U21vb3Ro
U2Nyb2xsaW5nLCAiQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCIsIHRlc3RGZWF0dXJl
cy5leHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUNv
bnRhY3RQaWNrZXJBUEksICJDb250YWN0UGlja2VyQVBJRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5l
eHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUNvcmVN
YXRoTUwsICJDb3JlTWF0aE1MRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0
dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZVJlcXVlc3RJZGxlQ2FsbGJhY2ss
ICJSZXF1ZXN0SWRsZUNhbGxiYWNrRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxG
ZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZVJlc2l6ZU9ic2VydmVyLCAi
UmVzaXplT2JzZXJ2ZXJFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVz
KTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlV2ViR1BVLCAiV2ViR1BVRW5hYmxlZCIs
IHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7CisgICAgaWYgKGl0ICE9IG1hcC5l
bmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7CisgICAgcmV0dXJuIGRlZmF1bHRWYWx1
ZTsKK30KKworYm9vbCBUZXN0T3B0aW9uczo6Ym9vbFRlc3RSdW5uZXJGZWF0dXJlVmFsdWUoc3Rk
OjpzdHJpbmcga2V5LCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gZmVh
dHVyZVZhbHVlKGtleSwgZGVmYXVsdFZhbHVlLCBtX2ZlYXR1cmVzLmJvb2xUZXN0UnVubmVyRmVh
dHVyZXMpOwogfQogCi1ib29sIFRlc3RPcHRpb25zOjp3ZWJWaWV3SXNDb21wYXRpYmxlV2l0aE9w
dGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmIG90aGVyKSBjb25zdAorc3RkOjpzdHJpbmcgVGVzdE9w
dGlvbnM6OnN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlVmFsdWUoc3RkOjpzdHJpbmcga2V5LCBzdGQ6
OnN0cmluZyBkZWZhdWx0VmFsdWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG90aGVyLmxheWVyQmFj
a2VkV2ViVmlldyA9PSBsYXllckJhY2tlZFdlYlZpZXcKLSAgICAgICAgJiYgb3RoZXIuanNjT3B0
aW9ucyA9PSBqc2NPcHRpb25zOworICAgIHJldHVybiBmZWF0dXJlVmFsdWUoa2V5LCBkZWZhdWx0
VmFsdWUsIG1fZmVhdHVyZXMuc3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVzKTsKIH0KIAogfQpJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw1MyAr
MzEsMzkgQEAKIAogbmFtZXNwYWNlIFdUUiB7CiAKLXN0cnVjdCBUZXN0T3B0aW9ucyB7Ci0gICAg
Ly8gRklYTUU6IFJlbW92ZSB0aGVzZSBhbmQgcmVwbGFjZSB3aXRoIGFjY2VzcyB0byBUZXN0RmVh
dHVyZXMgc2V0LgotICAgIC8vIFdlYiBQcmVmZXJlbmNlcwotICAgIGJvb2wgYWxsb3dDcm9zc09y
aWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMgeyBmYWxzZSB9OwotICAgIGJvb2wg
YWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyB7IHRydWUgfTsKLSAgICBib29sIGVuYWJsZUFj
Y2VsZXJhdGVkRHJhd2luZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVBdHRhY2htZW50RWxl
bWVudCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVCYWNrRm9yd2FyZENhY2hlIHsgZmFsc2Ug
fTsKLSAgICBib29sIGVuYWJsZUNvbG9yRmlsdGVyIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJs
ZUluc3BlY3RvckFkZGl0aW9ucyB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVJbnRlcnNlY3Rp
b25PYnNlcnZlciB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVLZXlnZW5FbGVtZW50IHsgZmFs
c2UgfTsKLSAgICBib29sIGVuYWJsZU1lbnVJdGVtRWxlbWVudCB7IGZhbHNlIH07Ci0gICAgYm9v
bCBlbmFibGVNb2Rlcm5NZWRpYUNvbnRyb2xzIHsgdHJ1ZSB9OwotCi0gICAgLy8gRklYTUU6IFJl
bW92ZSB0aGVzZSBhbmQgcmVwbGFjZSB3aXRoIGFjY2VzcyB0byBUZXN0RmVhdHVyZXMgc2V0Lgot
ICAgIC8vIEludGVybmFsIEZlYXR1cmVzCi0gICAgYm9vbCBlbmFibGVDU1NMb2dpY2FsIHsgZmFs
c2UgfTsKLSAgICBib29sIGVuYWJsZUxpbmVIZWlnaHRVbml0cyB7IGZhbHNlIH07Ci0gICAgYm9v
bCBlbmFibGVTZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzIHsgdHJ1ZSB9OwotICAgIGJv
b2wgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQgeyB0cnVlIH07Ci0K
LSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZXNlIGFuZCByZXBsYWNlIHdpdGggYWNjZXNzIHRvIFRl
c3RGZWF0dXJlcyBzZXQuCi0gICAgLy8gRXhwZXJpbWVudGFsIEZlYXR1cmVzCi0gICAgYm9vbCBh
ZENsaWNrQXR0cmlidXRpb25FbmFibGVkIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUFzcGVj
dFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHQgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxl
QXN5bmNDbGlwYm9hcmRBUEkgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQ1NTT01WaWV3U21v
b3RoU2Nyb2xsaW5nIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUNvbnRhY3RQaWNrZXJBUEkg
eyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQ29yZU1hdGhNTCB7IGZhbHNlIH07Ci0gICAgYm9v
bCBlbmFibGVSZXF1ZXN0SWRsZUNhbGxiYWNrIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZVJl
c2l6ZU9ic2VydmVyIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZVdlYkdQVSB7IGZhbHNlIH07
CitjbGFzcyBUZXN0T3B0aW9ucyB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFRlc3RGZWF0
dXJlcyYgZGVmYXVsdHMoKTsKKyAgICBzdGF0aWMgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0
ZDo6c3RyaW5nLCBUZXN0SGVhZGVyS2V5VHlwZT4mIGtleVR5cGVNYXBwaW5nKCk7CiAKLSAgICAv
LyBUZXN0IFJ1bm5lciBTcGVjaWZpYyBGZWF0dXJlcwotICAgIGJvb2wgZHVtcEpTQ29uc29sZUxv
Z0luU3RkRXJyIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlv
bkxvYWQgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlV2ViU1FMIHsgdHJ1ZSB9OwotICAgIGJv
b2wgbGF5ZXJCYWNrZWRXZWJWaWV3IHsgZmFsc2UgfTsKLSAgICBib29sIHVzZUVwaGVtZXJhbFNl
c3Npb24geyBmYWxzZSB9OwotICAgIHN0ZDo6c3RyaW5nIGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFn
ZVR5cGVzOwotICAgIHN0ZDo6c3RyaW5nIGpzY09wdGlvbnM7CisgICAgZXhwbGljaXQgVGVzdE9w
dGlvbnMoVGVzdEZlYXR1cmVzIGZlYXR1cmVzKQorICAgICAgICA6IG1fZmVhdHVyZXMoc3RkOjpt
b3ZlKGZlYXR1cmVzKSkKKyAgICB7CisgICAgfQogCi0gICAgZXhwbGljaXQgVGVzdE9wdGlvbnMo
VGVzdEZlYXR1cmVzKTsKICAgICBib29sIHdlYlZpZXdJc0NvbXBhdGlibGVXaXRoT3B0aW9ucyhj
b25zdCBUZXN0T3B0aW9ucyYpIGNvbnN0OwotICAgIAotICAgIHN0YXRpYyBjb25zdCBzdGQ6OnVu
b3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFRlc3RIZWFkZXJLZXlUeXBlPiYga2V5VHlwZU1hcHBp
bmcoKTsKKworICAgIC8vIFRlc3QgUnVubmVyIFNwZWNpZmljIEZlYXR1cmVzCisgICAgYm9vbCBk
dW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoKSBjb25zdCB7IHJldHVybiBib29sVGVzdFJ1bm5lckZl
YXR1cmVWYWx1ZSgiZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIiwgZmFsc2UpOyB9CisgICAgYm9v
bCBlbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkKCkgY29uc3QgeyByZXR1cm4gYm9vbFRl
c3RSdW5uZXJGZWF0dXJlVmFsdWUoImVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQiLCBm
YWxzZSk7IH0KKyAgICBib29sIGxheWVyQmFja2VkV2ViVmlldygpIGNvbnN0IHsgcmV0dXJuIGJv
b2xUZXN0UnVubmVyRmVhdHVyZVZhbHVlKCJsYXllckJhY2tlZFdlYlZpZXciLCBmYWxzZSk7IH0K
KyAgICBib29sIHVzZUVwaGVtZXJhbFNlc3Npb24oKSBjb25zdCB7IHJldHVybiBib29sVGVzdFJ1
bm5lckZlYXR1cmVWYWx1ZSgidXNlRXBoZW1lcmFsU2Vzc2lvbiIsIGZhbHNlKTsgfQorICAgIHN0
ZDo6c3RyaW5nIGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzKCkgY29uc3QgeyByZXR1cm4g
c3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZSgiYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlw
ZXMiLCB7IH0pOyB9CisgICAgc3RkOjpzdHJpbmcganNjT3B0aW9ucygpIGNvbnN0IHsgcmV0dXJu
IHN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlVmFsdWUoImpzY09wdGlvbnMiLCB7IH0pOyB9CisKKyAg
ICBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIGJvb2w+JiBib29sV2ViUHJl
ZmVyZW5jZUZlYXR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcy5ib29sV2ViUHJlZmVy
ZW5jZUZlYXR1cmVzOyB9CisgICAgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5n
LCBkb3VibGU+JiBkb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBt
X2ZlYXR1cmVzLmRvdWJsZVdlYlByZWZlcmVuY2VGZWF0dXJlczsgfQorICAgIGNvbnN0IHN0ZDo6
dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgdWludDMyX3Q+JiB1aW50MzJXZWJQcmVmZXJlbmNl
RmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzLnVpbnQzMldlYlByZWZlcmVuY2VG
ZWF0dXJlczsgfQorICAgIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgc3Rk
OjpzdHJpbmc+JiBzdHJpbmdXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBt
X2ZlYXR1cmVzLnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlczsgfQorCisgICAgc3RhdGljIHN0
ZDo6c3RyaW5nIHRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShjb25zdCBzdGQ6OnN0cmluZyYp
OworCitwcml2YXRlOgorICAgIGJvb2wgYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoc3Rk
OjpzdHJpbmcga2V5LCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3Q7CisgICAgYm9vbCBib29sVGVz
dFJ1bm5lckZlYXR1cmVWYWx1ZShzdGQ6OnN0cmluZyBrZXksIGJvb2wgZGVmYXVsdFZhbHVlKSBj
b25zdDsKKyAgICBzdGQ6OnN0cmluZyBzdHJpbmdUZXN0UnVubmVyRmVhdHVyZVZhbHVlKHN0ZDo6
c3RyaW5nIGtleSwgc3RkOjpzdHJpbmcgZGVmYXVsdFZhbHVlKSBjb25zdDsKKworICAgIFRlc3RG
ZWF0dXJlcyBtX2ZlYXR1cmVzOwogfTsKIAogfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUv
RHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVy
VHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiAr
MTA5LDcgQEAKIAkJNURCOUFDOUUwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktpdFdlaWdodFdhdGNo
ZXI3MDAudHRmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzNzVGMDk3NzBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjcw
MC50dGYgKi87IH07CiAJCTVEQjlBQzlGMEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRX
YXRjaGVyODAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzc1RjA5NzgwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNo
ZXI4MDAudHRmICovOyB9OwogCQk1REI5QUNBMDBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2Vp
Z2h0V2F0Y2hlcjkwMC50dGYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDM3NUYwOTc5MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRX
YXRjaGVyOTAwLnR0ZiAqLzsgfTsKKwkJN0M0RjMwNDAyNTNCOTcwRjAwMzA1NDU4IC8qIFRlc3RP
cHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzRGMzAzRjI1M0I4MzY5MDAzMDU0NTgg
LyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAqLzsgfTsK
IAkJN0NGRjlCQkYyNTMzQkIyNDAwMDgwMDlGIC8qIFRlc3RGZWF0dXJlcy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0ZGOUJCRTI1MzNCQjI0MDAw
ODAwOUYgLyogVGVzdEZlYXR1cmVzLmNwcCAqLzsgfTsKIAkJN0NGRjlCQzIyNTMzQkMxNjAwMDgw
MDlGIC8qIFRlc3RDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDRkY5QkMxMjUzM0JDMTYwMDA4MDA5RiAvKiBUZXN0Q29tbWFuZC5jcHAg
Ki87IH07CiAJCTgwMDQ1QUVFMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uSGFuZGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgwMDQ1QUVDMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9uSGFuZGxlci5tbSAqLzsgfTsKQEAgLTMzMyw4ICszMzQsMTIgQEAKIAkJN0M0NDY5N0YyNTM3
N0EwMjAwMjQyOTBBIC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBUZXN0
T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdDNDQ2OTgwMjUzNzdBMDIwMDI0MjkwQSAvKiBjaGVjay14Y2ZpbGVsaXN0cy5zaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnNo
OyBwYXRoID0gImNoZWNrLXhjZmlsZWxpc3RzLnNoIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0M0NDY5ODEyNTM3N0EwMjAwMjQyOTBBIC8qIGdlbmVyYXRlLWRlcml2ZWQtc291cmNl
cy5zaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuc2NyaXB0LnNoOyBwYXRoID0gImdlbmVyYXRlLWRlcml2ZWQtc291cmNlcy5zaCI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDNDQ2OTg1MjUzNzdFNTIwMDI0MjkwQSAvKiBUZXN0
T3B0aW9uc0dlbmVyYXRlZEtleXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGVzdE9wdGlvbnNHZW5lcmF0
ZWRLZXlzLmg7IHBhdGggPSBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0M0NDY5ODUyNTM3N0U1MjAwMjQyOTBBIC8qIFRlc3RPcHRpb25z
R2VuZXJhdGVkS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M0RjMwM0YyNTNCODM2OTAwMzA1NDU4
IC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzlFMjUwQjI1M0I3OTRBMDA0MTMw
MTggLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQkJDMzIyMURERkNGOUEwMDc4NkI5RCAv
KiBUZXN0T3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0T3B0
aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Q0NCQTUxRDI1M0JCOUQzMDBC
QjMyQzEgLyogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNmaWxlbGlzdDsgcGF0aCA9
ICJEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0NDQkE1MUUyNTNCQjlEMzAwQkIzMkMxIC8qIERlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC54Y2ZpbGVsaXN0OyBwYXRoID0gIkRlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NGRjlCQkQyNTMzQkIyNDAw
MDgwMDlGIC8qIFRlc3RGZWF0dXJlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0RmVhdHVyZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NGRjlCQkUyNTMzQkIyNDAwMDgwMDlGIC8q
IFRlc3RGZWF0dXJlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXN0RmVhdHVyZXMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0ZGOUJDMDI1MzNCQzE2MDAwODAwOUYgLyog
VGVzdENvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdENvbW1hbmQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTUwMSw2ICs1MDYsOCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKIAkJCQkwRjE4RTZGMTFENkI5QzY0MDAyN0U1NDcgLyogRGVyaXZlZFNv
dXJjZXMubWFrZSAqLywKKwkJCQk3Q0NCQTUxRDI1M0JCOUQzMDBCQjMyQzEgLyogRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdCAqLywKKwkJCQk3Q0NCQTUxRTI1M0JCOUQzMDBCQjMyQzEg
LyogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgKi8sCiAJCQkJN0M0NDY5ODIyNTM3
N0MzNDAwMjQyOTBBIC8qIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQkzMTQ4QTA2NTFFNkY5MEY0
MDBEM0IzMTYgLyogVGVzdFJ1bm5lclNoYXJlZCAqLywKIAkJCQkwRjE4RTZFNzFENkI5QkY1MDAy
N0U1NDcgLyogVUlTY3JpcHRDb250ZXh0ICovLApAQCAtNzcwLDYgKzc3Nyw3IEBACiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdDNDQ2OTdGMjUzNzdBMDIwMDI0Mjkw
QSAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIgKi8sCisJCQkJN0M5RTI1MEIyNTNC
Nzk0QTAwNDEzMDE4IC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGlu
Zy5jcHAuZXJiICovLAogCQkJKTsKIAkJCXBhdGggPSBQcmVmZXJlbmNlc1RlbXBsYXRlczsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03NzgsNiArNzg2LDcgQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJN0M0NDY5ODUyNTM3N0U1MjAwMjQyOTBBIC8q
IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oICovLAorCQkJCTdDNEYzMDNGMjUzQjgzNjkwMDMw
NTQ1OCAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwICov
LAogCQkJKTsKIAkJCW5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJCXBhdGggPSBEZXJpdmVk
U291cmNlcy9EdW1wUmVuZGVyVHJlZTsKQEAgLTEyOTEsNiArMTMwMCw3IEBACiAJCQkJN0NGRjlC
QzIyNTMzQkMxNjAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdDRkY5QkJGMjUzM0JCMjQwMDA4MDA5RiAvKiBUZXN0RmVhdHVyZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTMwQTIxRjgyMDUxRDhDNDAwMDhGRjQyIC8qIFRlc3RPcHRpb25zLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTdDNEYzMDQwMjUzQjk3MEYwMDMwNTQ1OCAvKiBUZXN0T3B0aW9uc0dl
bmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMw
MTMxREEwQzk3NzIwMTAwODczMTdEIC8qIFRlc3RSdW5uZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkNBMThCMjQwQzlCMDE0QjAwMTE0MzY5IC8qIFRlc3RSdW5uZXJNYWMubW0gaW4gU291cmNl
cyAqLywKIAkJCQlGNEQ0MjM2MTFERDUwNDgyMDA2NzgyOTAgLyogVGV4dElucHV0Q29udHJvbGxl
cklPUy5tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9TY3JpcHRz
L1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5
TWFwcGluZy5jcHAuZXJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Njcmlw
dHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lL
ZXlNYXBwaW5nLmNwcC5lcmIJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
U2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExl
Z2FjeUtleU1hcHBpbmcuY3BwLmVyYgkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisv
KgorICogPCU9IEB3YXJuaW5nICU+CisgKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlRlc3RPcHRpb25zLmgiCisKK25hbWVzcGFjZSBXVFIgeworCitzdGQ6OnN0cmlu
ZyBUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGNvbnN0IHN0ZDo6c3Ry
aW5nJiB3ZWJQcmVmZXJlbmNlc0tleSkKK3sKKyAgICBzdGF0aWMgc3RkOjp1bm9yZGVyZWRfbWFw
PHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4gbm9uU3RhbmRhcmRLZXlzID0geworPCUtIGZvciBA
cHJlZiBpbiBAcHJlZmVyZW5jZXMuc2VsZWN0IHsgfHB8IHAub3B0c1sid2ViS2l0TGVnYWN5UHJl
ZmVyZW5jZUtleSJdIH0gZG8gLSU+CisgICAgICAgIHsgIjwlPSBAcHJlZi5uYW1lICU+IiwgIjwl
PSBAcHJlZi5wcmVmZXJlbmNlS2V5ICU+IiB9LCBcCis8JS0gZW5kIC0lPgorICAgIH07CisKKyAg
ICBhdXRvIGl0ID0gbm9uU3RhbmRhcmRLZXlzLmZpbmQod2ViUHJlZmVyZW5jZXNLZXkpOworICAg
IGlmIChpdCAhPSBub25TdGFuZGFyZEtleXMuZW5kKCkpCisgICAgICAgIHJldHVybiBpdC0+c2Vj
b25kOworCisgICAgcmV0dXJuICJXZWJLaXQiICsgd2ViUHJlZmVyZW5jZXNLZXk7Cit9CisKK30K
SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHJldmlz
aW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSwxMiBAQCBleHRlcm4gIkMiIHsKIAogdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKIAorc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4gdG9OUyhjb25z
dCBzdGQ6OnN0cmluZyYgc3RyaW5nKQoreworICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcg
YWxsb2NdIGluaXRXaXRoVVRGOFN0cmluZzpzdHJpbmcuY19zdHIoKV0pOworfQorCisKICNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBpbnRlcmZhY2UgRHVtcFJlbmRlclRyZWVBcHBsaWNhdGlv
biA6IE5TQXBwbGljYXRpb24KIEBlbmQKQEAgLTY3Miw2ICs2NzgsMTAgQEAgV2ViVmlldyAqY3Jl
YXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdwogICAgIFt3ZWJWaWV3IHNldEdyb3VwTmFtZTpA
Im9yZy53ZWJraXQuRHVtcFJlbmRlclRyZWUiXTsKICNlbmRpZgogCisgICAgV2ViUHJlZmVyZW5j
ZXMgKnByZWZlcmVuY2VzID0gW1tXZWJQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF07CisgICAgW3By
ZWZlcmVuY2VzIHNldEF1dG9zYXZlczpOT107CisgICAgW3dlYlZpZXcgc2V0UHJlZmVyZW5jZXM6
cHJlZmVyZW5jZXNdOworCiAgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTp1aURlbGVnYXRlXTsK
ICAgICBbd2ViVmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpmcmFtZUxvYWREZWxlZ2F0ZV07CiAg
ICAgW3dlYlZpZXcgc2V0RWRpdGluZ0RlbGVnYXRlOmVkaXRpbmdEZWxlZ2F0ZV07CkBAIC02ODUs
OCArNjk1LDYgQEAgV2ViVmlldyAqY3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdwogICAg
IFtXZWJWaWV3IHJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbDpAImZlZWRzIl07CiAgICAgW1dlYlZp
ZXcgcmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsOkAiZmVlZHNlYXJjaCJdOwogCi0gICAgW1t3ZWJW
aWV3IHByZWZlcmVuY2VzXSBfc2V0TWVkaWFSZWNvcmRlckVuYWJsZWQ6WUVTXTsKLQogI2lmIFBM
QVRGT1JNKE1BQykKICAgICBbd2ViVmlldyBzZXRXaW5kb3dPY2NsdXNpb25EZXRlY3Rpb25FbmFi
bGVkOk5PXTsKICAgICBbV2ViVmlldyBfc2V0Rm9udEFsbG93TGlzdDpmb250QWxsb3dMaXN0KCld
OwpAQCAtODQ0LDkgKzg1Miw4IEBAIHN0YXRpYyB2b2lkIGVuYWJsZUV4cGVyaW1lbnRhbEZlYXR1
cmVzKFcKIH0KIAogLy8gQ2FsbGVkIGJlZm9yZSBlYWNoIHRlc3QuCi1zdGF0aWMgdm9pZCByZXNl
dFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKCkKK3N0YXRpYyB2b2lkIHJlc2V0V2Vi
UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2Vz
KQogewotICAgIFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtXZWJQcmVmZXJlbmNlcyBz
dGFuZGFyZFByZWZlcmVuY2VzXTsKICAgICBlbmFibGVFeHBlcmltZW50YWxGZWF0dXJlcyhwcmVm
ZXJlbmNlcyk7CiAKICAgICBbcHJlZmVyZW5jZXMgc2V0TmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZp
bGVVUkxzUXVpcms6IE5PXTsKQEAgLTkwMiw2ICs5MDksNyBAQCBzdGF0aWMgdm9pZCByZXNldFdl
YlByZWZlcmVuY2VzVG9Db25zaXN0CiAgICAgfSBlbHNlCiAgICAgICAgIFtwcmVmZXJlbmNlcyBz
ZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQ6Tk9dOwogCisgICAgW3ByZWZlcmVuY2VzIHNldElubGlu
ZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRlOk5PXTsKICAgICBbcHJl
ZmVyZW5jZXMgc2V0TWVkaWFQbGF5YmFja0FsbG93c0lubGluZTpZRVNdOwogICAgIFtwcmVmZXJl
bmNlcyBzZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZTpOT107CiAgICAgW3ByZWZl
cmVuY2VzIHNldFZpZGVvUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlOk5PXTsKQEAgLTkyOCw5
ICs5MzYsOCBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0CiAjZW5k
aWYKICAgICBbcHJlZmVyZW5jZXMgc2V0VXNlUHJlSFRNTDVQYXJzZXJRdWlya3M6Tk9dOwogICAg
IFtwcmVmZXJlbmNlcyBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZDpOT107Ci0j
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgQVNTRVJUKFtwcmVmZXJlbmNlcyBtb2NrU2Ny
b2xsYmFyc0VuYWJsZWRdKTsKLSNlbmRpZgorCisgICAgW3ByZWZlcmVuY2VzIHNldE1vY2tTY3Jv
bGxiYXJzRW5hYmxlZDpZRVNdOwogCiAgICAgW3ByZWZlcmVuY2VzIHNldFdlYkF1ZGlvRW5hYmxl
ZDpZRVNdOwogICAgIFtwcmVmZXJlbmNlcyBzZXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFi
bGVkOllFU107CkBAIC05NjAsNiArOTY3LDcgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJl
bmNlc1RvQ29uc2lzdAogICAgIHByZWZlcmVuY2VzLm1lZGlhQ2FwYWJpbGl0aWVzRW5hYmxlZCA9
IFlFUzsKIAogICAgIHByZWZlcmVuY2VzLnNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXNF
bmFibGVkID0gWUVTOworICAgIHByZWZlcmVuY2VzLmZ1bGxTY3JlZW5FbmFibGVkID0gWUVTOwog
CiAgICAgW3ByZWZlcmVuY2VzIHNldFdlYlNRTEVuYWJsZWQ6WUVTXTsKIApAQCAtOTY3LDM0ICs5
NzUsMjEgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdAogICAgIFtX
ZWJQcmVmZXJlbmNlcyBfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0
UG9saWN5Ok5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWlu
XTsKIH0KIAotc3RhdGljIHZvaWQgc2V0V2ViUHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9ucyhjb25z
dCBXVFI6OlRlc3RPcHRpb25zJiBvcHRpb25zKQorc3RhdGljIHZvaWQgc2V0V2ViUHJlZmVyZW5j
ZXNGb3JUZXN0T3B0aW9ucyhXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMsIGNvbnN0IFdUUjo6
VGVzdE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2Vz
ID0gW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdOworICAgIHByZWZlcmVuY2Vz
LnByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBvcHRpb25zLnVzZUVwaGVtZXJhbFNlc3Npb24oKTsK
KworICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5ib29sV2ViUHJl
ZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0Qm9vbFByZWZlcmVu
Y2VGb3JUZXN0aW5nV2l0aFZhbHVlOnZhbHVlIGZvcktleTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6
OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShrZXkpKS5nZXQoKV07CiAKLSAgICBwcmVmZXJl
bmNlcy5hdHRhY2htZW50RWxlbWVudEVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUF0dGFjaG1lbnRF
bGVtZW50OwotICAgIHByZWZlcmVuY2VzLmFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQgPSBvcHRp
b25zLmVuYWJsZUFjY2VsZXJhdGVkRHJhd2luZzsKLSAgICBwcmVmZXJlbmNlcy5tZW51SXRlbUVs
ZW1lbnRFbmFibGVkID0gb3B0aW9ucy5lbmFibGVNZW51SXRlbUVsZW1lbnQ7Ci0gICAgcHJlZmVy
ZW5jZXMua2V5Z2VuRWxlbWVudEVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUtleWdlbkVsZW1lbnQ7
Ci0gICAgcHJlZmVyZW5jZXMubW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQgPSBvcHRpb25zLmVu
YWJsZU1vZGVybk1lZGlhQ29udHJvbHM7Ci0gICAgcHJlZmVyZW5jZXMuaW5zcGVjdG9yQWRkaXRp
b25zRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlSW5zcGVjdG9yQWRkaXRpb25zOwotICAgIHByZWZl
cmVuY2VzLmFsbG93Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzID0g
b3B0aW9ucy5hbGxvd0Nyb3NzT3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFsczsK
LSAgICBwcmVmZXJlbmNlcy5jb2xvckZpbHRlckVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUNvbG9y
RmlsdGVyOwotICAgIHByZWZlcmVuY2VzLnNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXNF
bmFibGVkID0gb3B0aW9ucy5lbmFibGVTZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzOwot
ICAgIHByZWZlcmVuY2VzLndlYkdQVUVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZVdlYkdQVTsKLSAg
ICBwcmVmZXJlbmNlcy5DU1NMb2dpY2FsRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlQ1NTTG9naWNh
bDsKLSAgICBwcmVmZXJlbmNlcy5saW5lSGVpZ2h0VW5pdHNFbmFibGVkID0gb3B0aW9ucy5lbmFi
bGVMaW5lSGVpZ2h0VW5pdHM7Ci0gICAgcHJlZmVyZW5jZXMuYWRDbGlja0F0dHJpYnV0aW9uRW5h
YmxlZCA9IG9wdGlvbnMuYWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZDsKLSAgICBwcmVmZXJlbmNl
cy5yZXNpemVPYnNlcnZlckVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZVJlc2l6ZU9ic2VydmVyOwot
ICAgIHByZWZlcmVuY2VzLkNTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWQgPSBvcHRpb25z
LmVuYWJsZUNTU09NVmlld1Ntb290aFNjcm9sbGluZzsKLSAgICBwcmVmZXJlbmNlcy5jb3JlTWF0
aE1MRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlQ29yZU1hdGhNTDsKLSAgICBwcmVmZXJlbmNlcy5y
ZXF1ZXN0SWRsZUNhbGxiYWNrRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlUmVxdWVzdElkbGVDYWxs
YmFjazsKLSAgICBwcmVmZXJlbmNlcy5hc3luY0NsaXBib2FyZEFQSUVuYWJsZWQgPSBvcHRpb25z
LmVuYWJsZUFzeW5jQ2xpcGJvYXJkQVBJOwotICAgIHByZWZlcmVuY2VzLnByaXZhdGVCcm93c2lu
Z0VuYWJsZWQgPSBvcHRpb25zLnVzZUVwaGVtZXJhbFNlc3Npb247Ci0gICAgcHJlZmVyZW5jZXMu
dXNlc1BhZ2VDYWNoZSA9IG9wdGlvbnMuZW5hYmxlQmFja0ZvcndhcmRDYWNoZTsKLSAgICBwcmVm
ZXJlbmNlcy5sYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCA9IG9wdGlv
bnMubGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQ7Ci0gICAgcHJlZmVy
ZW5jZXMuYXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWQgPSBvcHRpb25z
LmVuYWJsZUFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHQ7Ci0gICAgcHJlZmVyZW5j
ZXMuYWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyA9IG9wdGlvbnMuYWxsb3dUb3BOYXZpZ2F0
aW9uVG9EYXRhVVJMczsKLSAgICBwcmVmZXJlbmNlcy5jb250YWN0UGlja2VyQVBJRW5hYmxlZCA9
IG9wdGlvbnMuZW5hYmxlQ29udGFjdFBpY2tlckFQSTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIFtr
ZXksIHZhbHVlXSA6IG9wdGlvbnMuZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCisgICAg
ICAgIFtwcmVmZXJlbmNlcyBfc2V0RG91YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6
dmFsdWUgZm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJl
bmNlS2V5KGtleSkpLmdldCgpXTsKKworICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVd
IDogb3B0aW9ucy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAgICAgW3ByZWZl
cmVuY2VzIF9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZSBmb3JL
ZXk6dG9OUyhXVFI6OlRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVuY2VLZXkoa2V5
KSkuZ2V0KCldOworCisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25z
LnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcygpKQorICAgICAgICBbcHJlZmVyZW5jZXMgX3Nl
dFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnRvTlModmFsdWUpLmdldCgpIGZv
cktleTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShr
ZXkpKS5nZXQoKV07CiB9CiAKIC8vIENhbGxlZCBvbmNlIG9uIER1bXBSZW5kZXJUcmVlIHN0YXJ0
dXAuCkBAIC0xMDE4LDkgKzEwMTMsNiBAQCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0c1RvQ29uc2lz
dGVudFZhbHVlCiAgICAgICAgIEAiQXBwbGVPdGhlckhpZ2hsaWdodENvbG9yIjpAIjAuNTAwMDAw
IDAuNTAwMDAwIDAuNTAwMDAwIiwKICAgICAgICAgQCJBcHBsZUxhbmd1YWdlcyI6IEBbIEAiZW4i
IF0sCiAgICAgICAgIFdlYktpdEVuYWJsZUZ1bGxEb2N1bWVudFRlYXJkb3duUHJlZmVyZW5jZUtl
eTogQFlFUywKLSAgICAgICAgV2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5OiBA
WUVTLAotICAgICAgICBXZWJLaXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrUHJlZmVyZW5jZUtl
eTogQFlFUywKLSAgICAgICAgV2ViS2l0SW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJ
bmxpbmVBdHRyaWJ1dGVLZXk6IEBOTywKICAgICAgICAgQCJVc2VXZWJLaXRXZWJJbnNwZWN0b3Ii
OiBAWUVTLAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBAIk5TUHJlZmVycmVk
U3BlbGxTZXJ2ZXJMYW5ndWFnZSI6IEAiZW5fVVMiLApAQCAtMTgyNiw5ICsxODE4LDkgQEAgc3Rh
dGljIHZvaWQgc2V0SlNDT3B0aW9ucyhjb25zdCBXVFI6OlRlcwogICAgICAgICBzYXZlZE9wdGlv
bnMuY2xlYXIoKTsKICAgICB9CiAKLSAgICBpZiAob3B0aW9ucy5qc2NPcHRpb25zLmxlbmd0aCgp
KSB7CisgICAgaWYgKCFvcHRpb25zLmpzY09wdGlvbnMoKS5lbXB0eSgpKSB7CiAgICAgICAgIEpT
Qzo6T3B0aW9uczo6ZHVtcEFsbE9wdGlvbnNJbkFMaW5lKHNhdmVkT3B0aW9ucyk7Ci0gICAgICAg
IEpTQzo6T3B0aW9uczo6c2V0T3B0aW9ucyhvcHRpb25zLmpzY09wdGlvbnMuY19zdHIoKSk7Cisg
ICAgICAgIEpTQzo6T3B0aW9uczo6c2V0T3B0aW9ucyhvcHRpb25zLmpzY09wdGlvbnMoKS5jX3N0
cigpKTsKICAgICB9CiB9CiAKQEAgLTE4MzksNiArMTgzMSwxMCBAQCBzdGF0aWMgdm9pZCByZXNl
dFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0CiAKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW21haW5G
cmFtZSB3ZWJWaWV3XTsKIAorICAgIFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtbV2Vi
UHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdOworICAgIFtwcmVmZXJlbmNlcyBzZXRBdXRvc2F2ZXM6
Tk9dOworICAgIFt3ZWJWaWV3IHNldFByZWZlcmVuY2VzOnByZWZlcmVuY2VzXTsKKwogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgYWRqdXN0V2ViRG9jdW1lbnRGb3JTdGFuZGFyZFZpZXdw
b3J0KGdXZWJCcm93c2VyVmlldywgZ1dlYlNjcm9sbFZpZXcpOwogICAgIFt3ZWJWaWV3IF9zZXRB
bGxvd3NNZXNzYWdpbmc6WUVTXTsKQEAgLTE4NjcsMTAgKzE4NjMsMTAgQEAgc3RhdGljIHZvaWQg
cmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdAogCiAgICAgW1dlYkNhY2hlIGNsZWFyQ2FjaGVk
Q3JlZGVudGlhbHNdOwogCi0gICAgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVl
cygpOwotICAgIHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMob3B0aW9ucyk7CisgICAg
cmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhwcmVmZXJlbmNlcyk7CisgICAg
c2V0V2ViUHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9ucyhwcmVmZXJlbmNlcywgb3B0aW9ucyk7CiAj
aWYgUExBVEZPUk0oTUFDKQotICAgIFt3ZWJWaWV3IHNldFdhbnRzTGF5ZXI6b3B0aW9ucy5sYXll
ckJhY2tlZFdlYlZpZXddOworICAgIFt3ZWJWaWV3IHNldFdhbnRzTGF5ZXI6b3B0aW9ucy5sYXll
ckJhY2tlZFdlYlZpZXcoKV07CiAjZW5kaWYKIAogICAgIFRlc3RSdW5uZXI6OnNldFNlcmlhbGl6
ZUhUVFBMb2FkcyhmYWxzZSk7CkBAIC0xOTE0LDcgKzE5MTAsNyBAQCBzdGF0aWMgdm9pZCByZXNl
dFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0CiAgICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3Rl
Ym9hcmRdIGRlY2xhcmVUeXBlczpAW05TU3RyaW5nUGJvYXJkVHlwZV0gb3duZXI6bmlsXTsKICNl
bmRpZgogCi0gICAgV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1h
Z2VUeXBlc0ZvclRlc3Rpbmcob3B0aW9ucy5hZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5j
X3N0cigpKTsKKyAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJ
bWFnZVR5cGVzRm9yVGVzdGluZyhvcHRpb25zLmFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVz
KCkuY19zdHIoKSk7CiAKICAgICBbbWFpbkZyYW1lIF9jbGVhck9wZW5lcl07CiAKQEAgLTE5NzAs
NyArMTk2Niw3IEBAIHN0YXRpYyBOU1VSTCAqY29tcHV0ZVRlc3RVUkwoTlNTdHJpbmcgKnAKIAog
c3RhdGljIFdUUjo6VGVzdE9wdGlvbnMgdGVzdE9wdGlvbnNGb3JUZXN0KGNvbnN0IFdUUjo6VGVz
dENvbW1hbmQmIGNvbW1hbmQpCiB7Ci0gICAgV1RSOjpUZXN0RmVhdHVyZXMgZmVhdHVyZXM7Cisg
ICAgV1RSOjpUZXN0RmVhdHVyZXMgZmVhdHVyZXMgPSBXVFI6OlRlc3RPcHRpb25zOjpkZWZhdWx0
cygpOwogICAgIFdUUjo6bWVyZ2UoZmVhdHVyZXMsIFdUUjo6aGFyZGNvZGVkRmVhdHVyZXNCYXNl
ZE9uUGF0aEZvclRlc3QoY29tbWFuZCkpOwogICAgIFdUUjo6bWVyZ2UoZmVhdHVyZXMsIFdUUjo6
ZmVhdHVyZURlZmF1bHRzRnJvbVRlc3RIZWFkZXJGb3JUZXN0KGNvbW1hbmQsIFdUUjo6VGVzdE9w
dGlvbnM6OmtleVR5cGVNYXBwaW5nKCkpKTsKIApAQCAtMjAxNyw3ICsyMDEzLDcgQEAgc3RhdGlj
IHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIGlucHV0TAogICAgIGdUZXN0UnVubmVyID0gVGVz
dFJ1bm5lcjo6Y3JlYXRlKHRlc3RVUkwsIGNvbW1hbmQuZXhwZWN0ZWRQaXhlbEhhc2gpOwogICAg
IGdUZXN0UnVubmVyLT5zZXRBbGxvd2VkSG9zdHMoYWxsb3dlZEhvc3RzKTsKICAgICBnVGVzdFJ1
bm5lci0+c2V0Q3VzdG9tVGltZW91dChjb21tYW5kLnRpbWVvdXQubWlsbGlzZWNvbmRzKCkpOwot
ICAgIGdUZXN0UnVubmVyLT5zZXREdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoY29tbWFuZC5kdW1w
SlNDb25zb2xlTG9nSW5TdGRFcnIgfHwgb3B0aW9ucy5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIp
OworICAgIGdUZXN0UnVubmVyLT5zZXREdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoY29tbWFuZC5k
dW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgfHwgb3B0aW9ucy5kdW1wSlNDb25zb2xlTG9nSW5TdGRF
cnIoKSk7CiAKICAgICByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZShvcHRpb25zLCBSZXNl
dFRpbWU6OkJlZm9yZVRlc3QpOwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVz
dFJ1bm5lck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVz
dFJ1bm5lck1hYy5tbQkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL1Rlc3RSdW5uZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3NiwxNCArNTc2LDE0IEBA
IHZvaWQgVGVzdFJ1bm5lcjo6c2V0UGFnZVBhdXNlZChib29sIHBhdXMKIAogdm9pZCBUZXN0UnVu
bmVyOjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQoYm9vbCBmbGFnKQogewotICAgIFtbV2ViUHJl
ZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkOmZs
YWddOworICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0VXNlclN0eWxl
U2hlZXRFbmFibGVkOmZsYWddOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNo
ZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYgcGF0aCkKIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHBhdGhDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgcGF0aCkpOwogICAgIE5TVVJMICp1cmwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzooX19i
cmlkZ2UgTlNTdHJpbmcgKilwYXRoQ0YuZ2V0KCldOwotICAgIFtbV2ViUHJlZmVyZW5jZXMgc3Rh
bmRhcmRQcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbjp1cmxdOworICAgIFtb
W21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlv
bjp1cmxdOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBKU1N0cmluZ1JlZiB2YWx1ZSkKQEAg
LTYwOSw3ICs2MDksNyBAQCB2b2lkIFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZShKU1N0
CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB2YWx1ZUNGID0gYWRvcHRDRihKU1N0cmluZ0Nv
cHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB2YWx1ZSkpOwogICAgIE5TU3RyaW5nICp2
YWx1ZU5TID0gKF9fYnJpZGdlIE5TU3RyaW5nICopdmFsdWVDRi5nZXQoKTsKIAotICAgIFtbV2Vi
UHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10gX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0
aFZhbHVlOnZhbHVlTlMgZm9yS2V5OmtleU5TXTsKKyAgICBbW1ttYWluRnJhbWUgd2ViVmlld10g
cHJlZmVyZW5jZXNdIF9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1
ZU5TIGZvcktleTprZXlOU107CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQWxsVmlzaXRl
ZExpbmtzKCkKQEAgLTcwMCw3ICs3MDAsNyBAQCBib29sIFRlc3RSdW5uZXI6OmZpbmRTdHJpbmco
SlNDb250ZXh0UmVmCiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0Q2FjaGVNb2RlbChpbnQgY2FjaGVN
b2RlbCkKIHsKLSAgICBbW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdIHNldENh
Y2hlTW9kZWw6KFdlYkNhY2hlTW9kZWwpY2FjaGVNb2RlbF07CisgICAgW1tbbWFpbkZyYW1lIHdl
YlZpZXddIHByZWZlcmVuY2VzXSBzZXRDYWNoZU1vZGVsOihXZWJDYWNoZU1vZGVsKWNhY2hlTW9k
ZWxdOwogfQogCiBib29sIFRlc3RSdW5uZXI6OmlzQ29tbWFuZEVuYWJsZWQoSlNTdHJpbmdSZWYg
bmFtZSkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCShyZXZpc2lv
biAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQkod29y
a2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCAtICh2b2lkKXJlc2V0V2luZG93T3JpZ2luCiAK
IC0gKHZvaWQpcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rpbmc6KGNvbnN0IFdUUjo6
VGVzdE9wdGlvbnMmKW9wdGlvbnMKIHsKLSAgICBtX2VuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlv
bkxvYWQgPSBvcHRpb25zLmVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQ7CisgICAgbV9l
bmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkID0gb3B0aW9ucy5lbmFibGVEcmFnRGVzdGlu
YXRpb25BY3Rpb25Mb2FkKCk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRl
ciBzZXRGcmFtZTooTlNSZWN0KWZyYW1lCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RHVtcFJlbmRlclRyZWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9EdW1wUmVuZGVyVHJlZS5jcHAJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwNiwyOCAr
OTA2LDM3IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3QKIAogICAg
IHByZWZlcmVuY2VzLT5zZXRGb250U21vb3RoaW5nKEZvbnRTbW9vdGhpbmdUeXBlU3RhbmRhcmQp
OwogCisgICAgcHJlZnNQcml2YXRlLT5zZXRXZWJTUUxFbmFibGVkKHRydWUpOworCiAgICAgcHJl
ZnNQcml2YXRlLT5zZXREYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQoVFJVRSk7CiAgICAgcHJlZnNQ
cml2YXRlLT5jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uKCk7CiAKICAgICBzZXRBbHdheXNBY2Nl
cHRDb29raWVzKGZhbHNlKTsKIH0KIAorc3RhdGljIGJvb2wgYm9vbFdlYlByZWZlcmVuY2VGZWF0
dXJlVmFsdWUoc3RkOjpzdHJpbmcga2V5LCBib29sIGRlZmF1bHRWYWx1ZSwgY29uc3QgV1RSOjpU
ZXN0T3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBhdXRvIGl0ID0gb3B0aW9ucy5ib29sV2ViUHJl
ZmVyZW5jZUZlYXR1cmVzKCkuZmluZChrZXkpOworICAgIGlmIChpdCAhPSBvcHRpb25zLmJvb2xX
ZWJQcmVmZXJlbmNlRmVhdHVyZXMoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7
CisgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKK30KKwogc3RhdGljIHZvaWQgc2V0V2ViUHJlZmVy
ZW5jZXNGb3JUZXN0T3B0aW9ucyhJV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzLCBjb25zdCBX
VFI6OlRlc3RPcHRpb25zJiBvcHRpb25zKQogewogICAgIENPTVB0cjxJV2ViUHJlZmVyZW5jZXNQ
cml2YXRlOD4gcHJlZnNQcml2YXRlIHsgUXVlcnksIHByZWZlcmVuY2VzIH07CiAKLSAgICBwcmVm
c1ByaXZhdGUtPnNldE1lbnVJdGVtRWxlbWVudEVuYWJsZWQob3B0aW9ucy5lbmFibGVNZW51SXRl
bUVsZW1lbnQpOwotICAgIHByZWZzUHJpdmF0ZS0+c2V0S2V5Z2VuRWxlbWVudEVuYWJsZWQob3B0
aW9ucy5lbmFibGVLZXlnZW5FbGVtZW50KTsKLSAgICBwcmVmc1ByaXZhdGUtPnNldE1vZGVybk1l
ZGlhQ29udHJvbHNFbmFibGVkKG9wdGlvbnMuZW5hYmxlTW9kZXJuTWVkaWFDb250cm9scyk7Ci0g
ICAgcHJlZnNQcml2YXRlLT5zZXRJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkKG9wdGlvbnMuZW5h
YmxlSW5zcGVjdG9yQWRkaXRpb25zKTsKLSAgICBwcmVmc1ByaXZhdGUtPnNldFJlcXVlc3RJZGxl
Q2FsbGJhY2tFbmFibGVkKG9wdGlvbnMuZW5hYmxlUmVxdWVzdElkbGVDYWxsYmFjayk7Ci0gICAg
cHJlZnNQcml2YXRlLT5zZXRBc3luY0NsaXBib2FyZEFQSUVuYWJsZWQob3B0aW9ucy5lbmFibGVB
c3luY0NsaXBib2FyZEFQSSk7Ci0gICAgcHJlZnNQcml2YXRlLT5zZXRDb250YWN0UGlja2VyQVBJ
RW5hYmxlZChvcHRpb25zLmVuYWJsZUNvbnRhY3RQaWNrZXJBUEkpOwotICAgIHByZWZzUHJpdmF0
ZS0+c2V0V2ViU1FMRW5hYmxlZChvcHRpb25zLmVuYWJsZVdlYlNRTCk7Ci0gICAgcHJlZnNQcml2
YXRlLT5zZXRBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzKG9wdGlvbnMuYWxsb3dUb3BOYXZp
Z2F0aW9uVG9EYXRhVVJMcyk7Ci0gICAgcHJlZmVyZW5jZXMtPnNldFByaXZhdGVCcm93c2luZ0Vu
YWJsZWQob3B0aW9ucy51c2VFcGhlbWVyYWxTZXNzaW9uKTsKLSAgICBwcmVmZXJlbmNlcy0+c2V0
VXNlc1BhZ2VDYWNoZShvcHRpb25zLmVuYWJsZUJhY2tGb3J3YXJkQ2FjaGUpOwotICAgIHByZWZz
UHJpdmF0ZS0+c2V0Q1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZChvcHRpb25zLmVuYWJs
ZUNTU09NVmlld1Ntb290aFNjcm9sbGluZyk7CisgICAgcHJlZmVyZW5jZXMtPnNldFByaXZhdGVC
cm93c2luZ0VuYWJsZWQob3B0aW9ucy51c2VFcGhlbWVyYWxTZXNzaW9uKCkpOworICAgIHByZWZl
cmVuY2VzLT5zZXRVc2VzUGFnZUNhY2hlKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJV
c2VzQmFja0ZvcndhcmRDYWNoZSIsIGZhbHNlLCBvcHRpb25zKSk7CisgICAgcHJlZnNQcml2YXRl
LT5zZXRNZW51SXRlbUVsZW1lbnRFbmFibGVkKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVl
KCJNZW51SXRlbUVsZW1lbnRFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1By
aXZhdGUtPnNldEtleWdlbkVsZW1lbnRFbmFibGVkKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZh
bHVlKCJLZXlnZW5FbGVtZW50RW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKKyAgICBwcmVmc1By
aXZhdGUtPnNldE1vZGVybk1lZGlhQ29udHJvbHNFbmFibGVkKGJvb2xXZWJQcmVmZXJlbmNlRmVh
dHVyZVZhbHVlKCJNb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCIsIHRydWUsIG9wdGlvbnMpKTsK
KyAgICBwcmVmc1ByaXZhdGUtPnNldEluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQoYm9vbFdlYlBy
ZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQiLCBmYWxzZSwg
b3B0aW9ucykpOworICAgIHByZWZzUHJpdmF0ZS0+c2V0UmVxdWVzdElkbGVDYWxsYmFja0VuYWJs
ZWQoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIlJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFi
bGVkIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldEFzeW5jQ2xpcGJv
YXJkQVBJRW5hYmxlZChib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQXN5bmNDbGlwYm9h
cmRBUElFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldENv
bnRhY3RQaWNrZXJBUElFbmFibGVkKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJDb250
YWN0UGlja2VyQVBJRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKSk7CisgICAgcHJlZnNQcml2YXRl
LT5zZXRBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVy
ZVZhbHVlKCJBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzIiwgdHJ1ZSwgb3B0aW9ucykpOwor
ICAgIHByZWZzUHJpdmF0ZS0+c2V0Q1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZChib29s
V2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxl
ZCIsIGZhbHNlLCBvcHRpb25zKSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgYXBwbGljYXRpb25JZCgp
CkBAIC05NzMsOSArOTgyLDkgQEAgc3RhdGljIHZvaWQgc2V0SlNDT3B0aW9ucyhjb25zdCBXVFI6
OlRlcwogICAgICAgICBzYXZlZE9wdGlvbnMuY2xlYXIoKTsKICAgICB9CiAKLSAgICBpZiAob3B0
aW9ucy5qc2NPcHRpb25zLmxlbmd0aCgpKSB7CisgICAgaWYgKCFvcHRpb25zLmpzY09wdGlvbnMo
KS5lbXB0eSgpKSB7CiAgICAgICAgIEpTQzo6T3B0aW9uczo6ZHVtcEFsbE9wdGlvbnNJbkFMaW5l
KHNhdmVkT3B0aW9ucyk7Ci0gICAgICAgIEpTQzo6T3B0aW9uczo6c2V0T3B0aW9ucyhvcHRpb25z
LmpzY09wdGlvbnMuY19zdHIoKSk7CisgICAgICAgIEpTQzo6T3B0aW9uczo6c2V0T3B0aW9ucyhv
cHRpb25zLmpzY09wdGlvbnMoKS5jX3N0cigpKTsKICAgICB9CiB9CiAKQEAgLTExNjgsNyArMTE3
Nyw3IEBAIHN0YXRpYyBib29sIGhhbmRsZUNvbnRyb2xDb21tYW5kKGNvbnN0IGMKIAogc3RhdGlj
IFdUUjo6VGVzdE9wdGlvbnMgdGVzdE9wdGlvbnNGb3JUZXN0KGNvbnN0IFdUUjo6VGVzdENvbW1h
bmQmIGNvbW1hbmQpCiB7Ci0gICAgV1RSOjpUZXN0RmVhdHVyZXMgZmVhdHVyZXM7CisgICAgV1RS
OjpUZXN0RmVhdHVyZXMgZmVhdHVyZXMgPSBXVFI6OlRlc3RPcHRpb25zOjpkZWZhdWx0cygpOwog
ICAgIFdUUjo6bWVyZ2UoZmVhdHVyZXMsIFdUUjo6aGFyZGNvZGVkRmVhdHVyZXNCYXNlZE9uUGF0
aEZvclRlc3QoY29tbWFuZCkpOwogICAgIFdUUjo6bWVyZ2UoZmVhdHVyZXMsIFdUUjo6ZmVhdHVy
ZURlZmF1bHRzRnJvbVRlc3RIZWFkZXJGb3JUZXN0KGNvbW1hbmQsIFdUUjo6VGVzdE9wdGlvbnM6
OmtleVR5cGVNYXBwaW5nKCkpKTsKIApAQCAtMTIyOSw3ICsxMjM4LDcgQEAgc3RhdGljIHZvaWQg
cnVuVGVzdChjb25zdCBzdHJpbmcmIGlucHV0TAogCiAgICAgOjpnVGVzdFJ1bm5lciA9IFRlc3RS
dW5uZXI6OmNyZWF0ZSh0ZXN0VVJMLmRhdGEoKSwgY29tbWFuZC5leHBlY3RlZFBpeGVsSGFzaCk7
CiAgICAgOjpnVGVzdFJ1bm5lci0+c2V0Q3VzdG9tVGltZW91dChjb21tYW5kLnRpbWVvdXQubWls
bGlzZWNvbmRzKCkpOwotICAgIDo6Z1Rlc3RSdW5uZXItPnNldER1bXBKU0NvbnNvbGVMb2dJblN0
ZEVycihjb21tYW5kLmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciB8fCBvcHRpb25zLmR1bXBKU0Nv
bnNvbGVMb2dJblN0ZEVycik7CisgICAgOjpnVGVzdFJ1bm5lci0+c2V0RHVtcEpTQ29uc29sZUxv
Z0luU3RkRXJyKGNvbW1hbmQuZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIHx8IG9wdGlvbnMuZHVt
cEpTQ29uc29sZUxvZ0luU3RkRXJyKCkpOwogCiAgICAgdG9wTG9hZGluZ0ZyYW1lID0gbnVsbHB0
cjsKICAgICBkb25lID0gZmFsc2U7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyMSwxNyArOTIxLDE2IEBA
IHZvaWQgVGVzdENvbnRyb2xsZXI6OnJlc2V0UHJlZmVyZW5jZXNUb0MKICAgICBwbGF0Zm9ybVJl
c2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKTsKIAogICAgIGZvciAoY29uc3QgYXV0
byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCi0g
ICAgICAgIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXkocHJlZmVyZW5jZXMsIHZhbHVl
LCB0b1dLKGtleSkuZ2V0KCkpOworICAgICAgICBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9y
S2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CiAKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuZG91YmxlV2ViUHJlZmVy
ZW5jZUZlYXR1cmVzKCkpCi0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktl
eShwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CisgICAgICAgIFdLUHJlZmVy
ZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVyZW5jZXMsIHZhbHVlLCB0
b1dLKGtleSkuZ2V0KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBv
cHRpb25zLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAgICAgICBXS1ByZWZlcmVu
Y2VzU2V0VUludDMyVmFsdWVGb3JLZXkocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0
KCkpOworICAgICAgICBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXlGb3JUZXN0aW5n
KHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKIAogICAgIGZvciAoY29uc3Qg
YXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5zdHJpbmdXZWJQcmVmZXJlbmNlRmVhdHVyZXMo
KSkKLSAgICAgICAgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5KHByZWZlcmVuY2Vz
LCB0b1dLKHZhbHVlKS5nZXQoKSwgdG9XSyhrZXkpLmdldCgpKTsKLQorICAgICAgICBXS1ByZWZl
cmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXlGb3JUZXN0aW5nKHByZWZlcmVuY2VzLCB0b1dLKHZh
bHVlKS5nZXQoKSwgdG9XSyhrZXkpLmdldCgpKTsKIH0KIAogYm9vbCBUZXN0Q29udHJvbGxlcjo6
cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucywg
UmVzZXRTdGFnZSByZXNldFN0YWdlKQo=
</data>
<flag name="commit-queue"
          id="428033"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411709</attachid>
            <date>2020-10-18 10:30:09 -0700</date>
            <delta_ts>2020-10-18 11:53:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201018103008.patch</filename>
            <type>text/plain</type>
            <size>61114</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTE3ICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVu
ZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBXS1ByZWZlcmVuY2Vz
U2V0KlZhbHVlRm9yS2V5IFNQSSB0byBXS1ByZWZlcmVuY2VzU2V0KlZhbHVlRm9yS2V5Rm9yVGVz
dGluZworICAgICAgICB0byBtYWtlIGl0IGNsZWFyIHdoYXQgdGhleSBhcmUgdXNlZCBmb3IgYW5k
IGZvciBjb25zaXN0ZW5jeSB3aXRoIFdlYktpdExlZ2FjeS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29s
VmFsdWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXREb3VibGVW
YWx1ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZh
bHVlRm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFs
dWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVG
b3JLZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9y
S2V5KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktl
eSk6IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJp
dmF0ZS5oOgorCiAyMDIwLTEwLTE2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBJbnRyb2R1Y2UgUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5IHRvIG1hbmFnZSB0aGUgcmVzb3VyY2VzIGluIHRoZSBHUFUgUHJvY2VzcwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5j
cHAJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UHJlZmVyZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCwyMiArNzgsMjIgQEAgdm9pZCBX
S1ByZWZlcmVuY2VzU2V0SW50ZXJuYWxEZWJ1Z0ZlYXR1cgogICAgIHRvSW1wbChwcmVmZXJlbmNl
c1JlZiktPnNldEludGVybmFsRGVidWdGZWF0dXJlRW5hYmxlZEZvcktleSh0b1dURlN0cmluZyhp
bnRlcm5hbERlYnVnRmVhdHVyZUtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2Vz
U2V0Qm9vbFZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wg
dmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZv
cktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1
ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldEJv
b2xWYWx1ZUZvcktleSh0b1dURlN0cmluZyhrZXkpLCB2YWx1ZSk7CiB9CiAKLXZvaWQgV0tQcmVm
ZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIGRvdWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0
RG91YmxlVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIGRvdWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJl
bmNlc1JlZiktPnNldEJvb2xWYWx1ZUZvcktleSh0b1dURlN0cmluZyhrZXkpLCB2YWx1ZSk7CiB9
CiAKLXZvaWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNS
ZWYgcHJlZmVyZW5jZXNSZWYsIHVpbnQzMl90IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCit2b2lk
IFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKIHsK
ICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRVSW50MzJWYWx1ZUZvcktleSh0b1dURlN0
cmluZyhrZXkpLCB2YWx1ZSk7CiB9CiAKLXZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVl
Rm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RyaW5nUmVmIHZhbHVl
LCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktl
eUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYg
dmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKIHsKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5z
ZXRTdHJpbmdWYWx1ZUZvcktleSh0b1dURlN0cmluZyhrZXkpLCB0b1dURlN0cmluZyh2YWx1ZSkp
OwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1Jl
ZlByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NiwxMCArNTYsMTAgQEAgV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1Jlc2V0
QWxsSW50ZQogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldEludGVybmFsRGVidWdGZWF0
dXJlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYsIGJvb2wsIFdLU3RyaW5nUmVmKTsKIAogLy8gVGhl
IGZvbGxvd2luZyBnZW5lcmljIHNldHRlciBmdW5jdGlvbnMgYXJlIG9ubHkgaW50ZW5kZWQgZm9y
IHVzZSBieSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlLgotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJl
bmNlc1NldEJvb2xWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBi
b29sIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNl
c1NldERvdWJsZVZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGRv
dWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKLVdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5j
ZXNTZXRVSW50MzJWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1
aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKLVdLX0VYUE9SVCB2b2lkIFdLUHJlZmVy
ZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVm
LCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VYUE9SVCB2b2lkIFdL
UHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXNSZWYsIGJvb2wgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7CitXS19FWFBPUlQg
dm9pZCBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVy
ZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGRvdWJsZSB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsK
K1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleUZvclRlc3Rp
bmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3Ry
aW5nUmVmIGtleSk7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVG
b3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RyaW5n
UmVmIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwogCiAvLyBGb3IgVGVzdCBSdW5uZXIgVXNlIG9u
bHkuCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzUmVzZXRUZXN0UnVubmVyT3ZlcnJpZGVz
KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpOwpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMTAtMTcgIFNh
bSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFtUZXN0aW5nXSBDb252ZXJ0
IER1bXBSZW5kZXJUcmVlIHRvIHVzZSBnZW5lcmF0ZWQgdGVzdCBoZWFkZXIgb3B0aW9ucworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3ODgwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIGEgc2V0
IG9mIHNldHRlcnMgdG8gZm9yIER1bXBSZW5kZXJUcmVlIHRvIHVzZSB3aGVuIHNldHRpbmcgcHJl
ZmVyZW5jZXMKKyAgICAgICAgYnkgc3RyaW5nLgorCisgICAgICAgICogV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3N3aXRjaE5ldHdvcmtMb2Fk
ZXJUb05ld1Rlc3RpbmdTZXNzaW9uXSk6CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIF9zZXRD
dXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6XSk6CisgICAgICAg
ICgrW1dlYlByZWZlcmVuY2VzIF9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uXSk6CisgICAgICAg
ICgtW1dlYlByZWZlcmVuY2VzIF9zZXRCb29sUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6
Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0VUludDMyUHJlZmVyZW5j
ZUZvclRlc3RpbmdXaXRoVmFsdWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNl
cyBfc2V0RG91YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6Zm9yS2V5Ol0pOgorICAg
ICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRo
VmFsdWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0UHJlZmVyZW5j
ZUZvclRlc3RXaXRoVmFsdWU6Zm9yS2V5Ol0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlZpZXcv
V2ViUHJlZmVyZW5jZXNQcml2YXRlLmg6CisKIDIwMjAtMTAtMTcgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgogCiAgICAgICAgIENvbnZlcnQgcHJlZmVyZW5jZXMgaW4gV2ViUHJlZmVy
ZW5jZXNQcml2YXRlLmggdG8gdXNlIEBwcm9wZXJ0eSBzeW50YXggdG8gbWFrZSB0aGVtIG1vcmUg
bWFuYWdlYWJsZQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYw
LDI2ICsxNjYwLDYgQEAgKyAodm9pZClfc2V0SUJDcmVhdG9ySUQ6KE5TU3RyaW5nICopc3RyaQog
ICAgIFtvbGQgcmVsZWFzZV07CiB9CiAKLSsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05l
d1Rlc3RpbmdTZXNzaW9uCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBXZWJUaHJl
YWRMb2NrKCk7Ci0jZW5kaWYKLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRv
TmV3VGVzdGluZ1Nlc3Npb24oKTsKLX0KLQotKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vz
c2lvbgotewotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCkuZGVsZXRlQWxsQ29va2llcygpOwotfQotCi0rICh2b2lkKV9zZXRDdXJyZW50TmV0d29y
a0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSlwb2xpY3kKLXsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2ll
U3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCkuY29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsgLy8gV2lsbCBm
YWlsIHdoZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNz
aW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KLSAgICBDRkhUVFBDb29raWVTdG9yYWdl
U2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7Ci19Ci0K
IC0gKEJPT0wpaXNET01QYXN0ZUFsbG93ZWQKIHsKICAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1
ZUZvcktleTpXZWJLaXRET01QYXN0ZUFsbG93ZWRQcmVmZXJlbmNlS2V5XTsKQEAgLTE5NjYsMTEg
KzE5NDYsNiBAQCAtICh2b2lkKXdpbGxBZGRUb1dlYlZpZXcKICAgICArK19wcml2YXRlLT5udW1X
ZWJWaWV3czsKIH0KIAotLSAodm9pZClfc2V0UHJlZmVyZW5jZUZvclRlc3RXaXRoVmFsdWU6KE5T
U3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQotewotICAgIFtzZWxmIF9zZXRT
dHJpbmdWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKLX0KLQogLSAodm9pZClzZXRGdWxsU2NyZWVu
RW5hYmxlZDooQk9PTClmbGFnCiB7CiAgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTpmbGFnIGZvcktl
eTpXZWJLaXRGdWxsU2NyZWVuRW5hYmxlZFByZWZlcmVuY2VLZXldOwpAQCAtMzAxMyw2ICsyOTg4
LDUxIEBAIC0gKHZvaWQpX3NldEVuYWJsZWQ6KEJPT0wpdmFsdWUgZm9yRmVhdHUKIAogQGVuZAog
CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVRlc3RpbmcpCisK
KysgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uCit7CisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBXZWJUaHJlYWRMb2NrKCk7CisjZW5kaWYKKyAgICBO
ZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKK30K
KworKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9s
aWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9saWN5Cit7CisgICAgUmV0YWluUHRyPENG
SFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Np
b25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsKKyAgICBBU1NF
UlQoY29va2llU3RvcmFnZSk7IC8vIFdpbGwgZmFpbCB3aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhh
bmQuCisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVT
dG9yYWdlLmdldCgpLCBwb2xpY3kpOworfQorCisrICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJT
ZXNzaW9uCit7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKS5kZWxldGVBbGxDb29raWVzKCk7Cit9CisKKy0gKHZvaWQpX3NldEJvb2xQcmVmZXJl
bmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTooQk9PTCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5
Cit7CisgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAo
dm9pZClfc2V0VUludDMyUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KHVpbnQzMl90KXZh
bHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2VsZiBfc2V0SW50ZWdlclZhbHVl
OnZhbHVlIGZvcktleTprZXldOworfQorCistICh2b2lkKV9zZXREb3VibGVQcmVmZXJlbmNlRm9y
VGVzdGluZ1dpdGhWYWx1ZTooZG91YmxlKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sK
KyAgICBbc2VsZiBfc2V0RmxvYXRWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAodm9p
ZClfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KE5TU3RyaW5nICopdmFs
dWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9zZXRTdHJpbmdWYWx1ZTp2
YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworQGVuZAorCiBAaW1wbGVtZW50YXRpb24gV2ViUHJlZmVy
ZW5jZXMgKFdlYlByaXZhdGVQcmVmZXJlbmNlc0NvbnZlcnRlZFRvV2ViRmVhdHVyZSkKIAogLSAo
Qk9PTCl1c2VyR2VzdHVyZVByb21pc2VQcm9wYWdhdGlvbkVuYWJsZWQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZh
dGUuaAkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtODksMTMgKzg5LDYg
QEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZSkKICsgKHZvaWQpX3NldElu
aXRpYWxEZWZhdWx0VGV4dEVuY29kaW5nVG9TeXN0ZW1FbmNvZGluZzsKICsgKHZvaWQpX3NldElC
Q3JlYXRvcklEOihOU1N0cmluZyAqKXN0cmluZzsKIAotLy8gRm9yIER1bXBSZW5kZXJUcmVlIHVz
ZSBvbmx5LgotKyAodm9pZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb247
Ci0rICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xp
Y3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSljb29raWVBY2NlcHRQb2xpY3k7Ci0rICh2b2lk
KV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uOwotLy8gVXNlZCB0byBzZXQgcHJlZmVyZW5jZSBz
cGVjaWZpZWQgaW4gdGhlIHRlc3QgdmlhIExheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJl
ZmVyZW5jZSguLikuCi0tICh2b2lkKV9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhWYWx1ZTooTlNT
dHJpbmcgKil2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OwotCiArICh2b2lkKXNldFdlYktp
dExpbmtUaW1lVmVyc2lvbjooaW50KXZlcnNpb247CiAKIC8vIEZvciBXZWJWaWV3J3MgdXNlIG9u
bHkuCkBAIC0zMTAsNiArMzAzLDE4IEBAIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlBy
aXZhdGVGZWEKIC0gKHZvaWQpX3NldEVuYWJsZWQ6KEJPT0wpdmFsdWUgZm9yRmVhdHVyZTooV2Vi
RmVhdHVyZSAqKWZlYXR1cmU7CiBAZW5kCiAKK0BpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdl
YlByaXZhdGVUZXN0aW5nKQorKyAodm9pZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGlu
Z1Nlc3Npb247CisrICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVB
Y2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSljb29raWVBY2NlcHRQb2xpY3k7
CisrICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uOworCistICh2b2lkKV9zZXRCb29s
UHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KEJPT0wpdmFsdWUgZm9yS2V5OihOU1N0cmlu
ZyAqKWtleTsKKy0gKHZvaWQpX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVl
Oih1aW50MzJfdCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OworLSAodm9pZClfc2V0RG91
YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KGRvdWJsZSl2YWx1ZSBmb3JLZXk6KE5T
U3RyaW5nICopa2V5OworLSAodm9pZClfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRo
VmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKworQGVuZAor
CiAvLyBGSVhNRTogSWYgdGhlc2UgYXJlIG5vdCB1c2VkIGFueXdoZXJlLCB3ZSBzaG91bGQgcmVt
b3ZlIHRoZW0gYW5kIG9ubHkgdXNlIFdlYkZlYXR1cmUgbWVjaGFuaXNtIGZvciB0aGUgcHJlZmVy
ZW5jZS4KIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGVQcmVmZXJlbmNlc0Nv
bnZlcnRlZFRvV2ViRmVhdHVyZSkKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHVzZXJHZXN0
dXJlUHJvbWlzZVByb3BhZ2F0aW9uRW5hYmxlZDsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODY1OSkKKysrIFRvb2xzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk5IEBACisyMDIwLTEwLTE3ICBTYW0g
V2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBE
dW1wUmVuZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZ1bGx5IHN1cHBvcnQg
dXNlIG9mIGFueSBXZWJQcmVmZXJlbmNlcyoueWFtbCBwcmVmZXJlbmNlIGluIER1bXBSZW5kZXJU
cmVlIChmb3IgbWFjT1MpIGJ5OgorICAgICAgICAgICAgLSBNb3ZpbmcgRHVtcFJlbmRlclRyZWUn
cyBUZXN0T3B0aW9ucyB0byBiZSBmdWxseSBiYWNrZWQgYnkgVGVzdEZlYXR1cmVzIGxpa2UgV2Vi
S2l0VGVzdFJ1bm5uZXIuCisgICAgICAgICAgICAtIEFkb3B0aW5nIG5ldyBXZWJQcmVmZXJlbmNl
cyBTUEkgZm9yIHNldHRpbmcgYW55IHByZWZlcmVuY2UgYnkga2V5LgorICAgICAgICAgICAgLSBH
ZW5lcmF0aW5nIG1hcHBpbmcgZnJvbSBXZWJQcmVmZXJlbmNlcyoueWFtbCB0byBXZWJLaXRMZWdh
Y3kga2V5IG5hbWVzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgIEdlbmVyYXRlIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFw
cGluZy5jcHAKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3Q6CisgICAgICAgIEFkZCBuZXcgdGVtcGxhdGUgZmlsZSwgVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIsIGFuZCBhZGQKKyAgICAgICAg
RGVyaXZlZFNvdXJjZXMubWFrZSBhbmQgZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzLnNoLCBzbyB0
aGF0IGlmIGVpdGhlciBvZiB0aGVtIGNoYW5nZQorICAgICAgICB0aGUgRGVyaXZlZFNvdXJjZXMu
bWFrZSBpcyBhY3R1YWxseSBpbnZva2VkLgorIAorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICBBZGRzIFRlc3RPcHRpb25z
R2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9EZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICBTd2l0Y2ggZ2VuZXJhdGlvbiBv
ZiBwcmVmZXJlbmNlcyB0byB1c2UgYSBzdGF0aWMgcGF0dGVybiB0byBhdm9pZCBpc3N1ZXMgd2l0
aCBjaXJjdWxhciBkZXBlbmRlbmNpZXMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1w
UmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGRzIFRlc3RP
cHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2Vu
ZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiOiBBZGRlZC4KKyAgICAgICAgVGVt
cGxhdGUgZm9yIGdlbmVyYXRpbmcgbWFwcGluZyBmcm9tIFdlYlByZWZlcmVuY2VzKi55YW1sIGtl
eSBuYW1lcyB0byBXZWJLaXRMZWdhY3kga2V5IG5hbWVzLgorCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvVGVzdE9wdGlvbnMuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RPcHRp
b25zLmg6CisgICAgICAgIFN3aXRjaCB0byBhIG1vZGVsIG1vcmUgc2ltaWxhciB0byB0aGF0IGlu
IFdlYktpdFRlc3RSdW5uZXIsIHdoZXJlIFRlc3RPcHRpb25zIHN0b3JlcyB0aGUgcGFzc2VkIGlu
IAorICAgICAgICBUZXN0RmVhdHVyZXMgYW5kIG9ubHkgZXhwb3NlcyB2YWx1ZXMgdGhhdCBoYXZl
IGJlZW4gc2V0IG9yIGRlZmF1bHQgdmFsdWVzIHdoZW4gbmVlZGVkLgorICAgICAgICAKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgICh0b05T
KToKKyAgICAgICAgQWRkIGhlbHBlciB0byBjb252ZXJ0IGZyb20gYSBzdGQ6OnN0cmluZyB0byBh
biBOU1N0cmluZy4KKworICAgICAgICAoY3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdyk6
CisgICAgICAgIE5vdyB0aGF0IHdlIGFyZW4ndCBuZWNjZXNzYXJpbHkgc2V0dGluZyBhbGwgcHJl
ZmVyZW5jZXMgZWFjaCB0ZXN0LCB3ZSBuZWVkIHRvIGZ1bGx5IHJlc2V0IHRoZQorICAgICAgICBX
ZWJQcmVmZXJlbmNlcyBvbiBlYWNoIHJ1biBieSBjcmVhdGluZyBhIG5ldyBvbmUuIFRoaXMgbWVh
bnMgcmVtb3ZpbmcgdGhlIHVzZXMgb2YgCisgICAgICAgIFtXZWJQcmVmZXJlbmNlcyBzdGFuZGFy
ZFByZWZlcmVuY2VzXSwgYW5kIGluc3RlYWQgZ3JhYmJpbmcgdGhlIFdlYlZpZXcncyBwcmVmZXJl
bmNlcyB3aGVuIG5lZWRlZC4KKworICAgICAgICAocmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lz
dGVudFZhbHVlcyk6CisgICAgICAgIE1vdmVzIHNvbWUgc2NhdHRlcmVkIGRlZmF1bHQgdmFsdWUg
c2V0dGluZyBoZXJlLiBSZW1vdmUgYXNzZXJ0IHRoYXQgaXMgbm8gbG9uZ2VyIGFjY3VyYXRlCisg
ICAgICAgIG5vdyB0aGF0IHdlIGRvbid0IHVzZSBzdGFuZGFyZFByZWZlcmVuY2VzIGFuZCB3aWxs
IG5vdCBoYXZlIHNldCB0aGlzIHZhbHVlIGJ5IHRoaXMgcG9pbnQuCisKKyAgICAgICAgKHNldFdl
YlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMpOgorICAgICAgICBVc2UgbmV3IF9zZXQqUHJlZmVy
ZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6Zm9yS2V5KiBTUEkgdG8gc2V0IGFueSBzcGVjaWZpZWQg
cHJlZmVybmVjZXMuCisKKyAgICAgICAgKHNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzRm9y
VGVzdGluZyk6CisgICAgICAgIE1vdmUgZGVmYXVsdHMgc2V0IGhlcmUgdG8gdGhlIG1vcmUgYXBw
cm9wcmlhdGUgYW5kIGNlbnRyYWxpemVkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRW
YWx1ZXMuCisKKyAgICAgICAgKHNldEpTQ09wdGlvbnMpOgorICAgICAgICBVc2UgbmV3IGdldHRl
ciBmdW5jdGlvbiByYXRoZXIgdGhhbiBkaXJlY3QgbWVtYmVyIGFjY2Vzcy4KKworICAgICAgICAo
cmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGUpOgorICAgICAgICBGdWxseSByZXNldCBwcmVm
ZXJuZWNlcyBieSBhbGxvY2F0aW5nIGEgbmV3IFdlYlByZWZlcmVuY2VzIG9uIHJlc2V0IGFuZCB1
c2UgbmV3IFRlc3RPcHRpb25zIGdldHRlcgorICAgICAgICBmdW5jdGlvbnMuCisKKyAgICAgICAg
KHRlc3RPcHRpb25zRm9yVGVzdCk6CisgICAgICAgIFNlZWQgVGVzdEZlYXR1cmVzIHdpdGggZGVm
YXVsdCBnbG9iYWwgdmFsdWVzLCBtYXRjaGluZyB0aGUgaWRpb20gaW4gV2ViS2l0VGVzdFJ1bm5l
ci4KKworICAgICAgICAocnVuVGVzdCk6CisgICAgICAgIFVzZSBuZXcgZ2V0dGVyIGZ1bmN0aW9u
IHJhdGhlciB0aGFuIGRpcmVjdCBtZW1iZXIgYWNjZXNzLgorCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRVc2Vy
U3R5bGVTaGVldEVuYWJsZWQpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hl
ZXRMb2NhdGlvbik6CisgICAgICAgIChUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UpOgor
ICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0Q2FjaGVNb2RlbCk6CisgICAgICAgIEFjY2VzcyB0aGUg
Y29ycmVjdCBXZWJQcmVmZXJlbmNlcyB2aWEgdGhlIFdlYlZpZXcsIHJhdGhlciB0aGFuIGFzc3Vt
aW5nIHN0YW5kYXJkUHJlZmVyZW5jZXMKKyAgICAgICAgYXJlIGJlaW5nIHVzZWQuCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bVUlEZWxl
Z2F0ZSByZXNldFRvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZzpdKToKKyAgICAgICAgVXNl
IG5ldyBnZXR0ZXIgZnVuY3Rpb24gcmF0aGVyIHRoYW4gZGlyZWN0IG1lbWJlciBhY2Nlc3MuCisK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAg
ICAocmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChib29s
V2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSk6CisgICAgICAgIChzZXRXZWJQcmVmZXJlbmNlc0Zv
clRlc3RPcHRpb25zKToKKyAgICAgICAgKHNldEpTQ09wdGlvbnMpOgorICAgICAgICAodGVzdE9w
dGlvbnNGb3JUZXN0KToKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICBLZWVwIFdpbmRvd3Mg
RHVtcFJlbmRlclRyZWUgd29ya2luZyB3aXRoIHRoZSBuZXcgVGVzdE9wdGlvbnMgYnkgZ2V0dGlu
ZyBmZWF0dXJlIHZhbHVlcyBieQorICAgICAgICBzdHJpbmcga2V5cyB3aXRoIHNwZWNpZmllZCBk
ZWZhdWx0cyBhbmQgYWRvcHRpbmcgbmV3IGdldHRlciBmdW5jdGlvbnMuIEluIHRoZSBmdXR1cmUs
IHdlCisgICAgICAgIHdpbGwgYWRkIHNpbWlsYXIgU1BJIGFzIHdhcyBhZGRlZCBmb3IgbWFjIFdl
YktpdExlZ2FjeSB0byBXaW5kb3dzIFdlYktpdExlZ2FjeSB0byBhdm9pZCB0aGlzLgorCisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpyZXNldFByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKToKKyAg
ICAgICAgVXBkYXRlIGZvciByZW5hbWVkIFdLUHJlZmVyZW5jZXNSZWYgU1BJLgorCiAyMDIwLTEw
LTE3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
RmxhdHBhayBTREtdIGZsYXRwYWt1dGlscy5weSByZXBvcnRzICJLZXlFcnJvcjogJ2djYyciIGVy
cm9yIGlmIHVzaW5nIHdpdGggaWNlY2MgYW5kIHRvb2xjaGFpbnMgYXJlbid0IGdlbmVyYXRlZCB5
ZXQKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNjg2NDgp
CisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNDAsNiArNDAsNyBAQCBsaXN0KEFQUEVORCBEdW1wUmVuZGVyVHJlZV9QUklWQVRFX0lOQ0xV
CiApCiAKIHNldChEdW1wUmVuZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVTCisgICAg
JHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9w
dGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIKICAgICAke0R1bXBS
ZW5kZXJUcmVlX0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dl
bmVyYXRlZEtleXMuaC5lcmIKICkKIApAQCAtNTMsMTIgKzU0LDEzIEBAIHNldChEdW1wUmVuZGVy
VHJlZV9XRUJfUFJFRkVSRU5DRVMKIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcygke0R1bXBS
ZW5kZXJUcmVlX1dFQl9QUkVGRVJFTkNFU30gUFJPUEVSVElFUyBHRU5FUkFURUQgVFJVRSkKIAog
YWRkX2N1c3RvbV9jb21tYW5kKAotICAgIE9VVFBVVCAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURf
U09VUkNFU19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCisgICAgT1VUUFVUICR7RHVt
cFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJL
aXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19E
SVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCiAgICAgREVQRU5EUyAke0R1bXBSZW5kZXJU
cmVlX1dFQl9QUkVGRVJFTkNFU19URU1QTEFURVN9ICR7RHVtcFJlbmRlclRyZWVfV0VCX1BSRUZF
UkVOQ0VTfSBXVEZfQ29weVByZWZlcmVuY2VzCi0gICAgQ09NTUFORCAke1JVQllfRVhFQ1VUQUJM
RX0gJHtXVEZfU0NSSVBUU19ESVJ9L0dlbmVyYXRlUHJlZmVyZW5jZXMucmIgLS1mcm9udGVuZCBX
ZWJLaXRMZWdhY3kgLS1iYXNlICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVm
ZXJlbmNlcy55YW1sIC0tZGVidWcgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlBy
ZWZlcmVuY2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRhbCAke1dURl9TQ1JJUFRTX0RJUn0vUHJl
ZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCAtLWludGVybmFsICR7V1RG
X1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwgLS1v
dXRwdXREaXIgIiR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0iIC0tdGVtcGxh
dGUgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVz
dE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCisgICAgQ09NTUFORCAke1JVQllfRVhFQ1VUQUJM
RX0gJHtXVEZfU0NSSVBUU19ESVJ9L0dlbmVyYXRlUHJlZmVyZW5jZXMucmIgLS1mcm9udGVuZCBX
ZWJLaXRMZWdhY3kgLS1iYXNlICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVm
ZXJlbmNlcy55YW1sIC0tZGVidWcgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlBy
ZWZlcmVuY2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRhbCAke1dURl9TQ1JJUFRTX0RJUn0vUHJl
ZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCAtLWludGVybmFsICR7V1RG
X1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwgLS1v
dXRwdXREaXIgIiR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0iIC0tdGVtcGxh
dGUgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVz
dE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIgLS10ZW1wbGF0
ZSAke0R1bXBSZW5kZXJUcmVlX0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0
T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIKICAgICBWRVJCQVRJTSkKIAogbGlzdChBUFBFTkQg
RHVtcFJlbmRlclRyZWVfU09VUkNFUworICAgICR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VS
Q0VTX0RJUn0vVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcAog
ICAgICR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vVGVzdE9wdGlvbnNHZW5l
cmF0ZWRLZXlzLmgKICkKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9E
ZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CSh3b3JraW5n
IGNvcHkpCkBAIC02LDcgKzYsMTAgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9p
bmNsdWRlLwogJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlL3d0Zi9TY3Jp
cHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAogJChQUk9KRUNUX0RJ
UikvLi4vVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRD
b250cm9sbGVyLmlkbAogJChQUk9KRUNUX0RJUikvQmluZGluZ3MvQ29kZUdlbmVyYXRvckR1bXBS
ZW5kZXJUcmVlLnBtCiskKFBST0pFQ1RfRElSKS9EZXJpdmVkU291cmNlcy5tYWtlCiAkKFBST0pF
Q1RfRElSKS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVk
S2V5cy5oLmVyYgorJChQUk9KRUNUX0RJUikvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9U
ZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYgorJChQUk9K
RUNUX0RJUikvU2NyaXB0cy9nZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2gKICQoV0VCQ09SRV9Q
UklWQVRFX0hFQURFUlNfRElSKS9Db2RlR2VuZXJhdG9yLnBtCiAkKFdFQkNPUkVfUFJJVkFURV9I
RUFERVJTX0RJUikvSURMQXR0cmlidXRlcy5qc29uCiAkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJT
X0RJUikvSURMUGFyc2VyLnBtCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjY4NjQ4KQorKysg
VG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHdv
cmtpbmcgY29weSkKQEAgLTIsMyArMiw0IEBACiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUvSlNVSVNjcmlwdENvbnRyb2xsZXIuY3BwCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUvSlNVSVNjcmlwdENv
bnRyb2xsZXIuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5k
ZXJUcmVlL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRM
ZWdhY3lLZXlNYXBwaW5nLmNwcApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNv
dXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291
cmNlcy5tYWtlCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJp
dmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yMywyOSArMjMsMTIgQEAKIAogUlVC
WSA9IHJ1YnkKIAotV0VCX1BSRUZFUkVOQ0VTID0gXAotICAgICR7V1RGX0JVSUxEX1NDUklQVFNf
RElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlcy55YW1sIFwKLSAgICAke1dURl9CVUlMRF9T
Q1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNEZWJ1Zy55YW1sIFwKLSAgICAk
e1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmlt
ZW50YWwueWFtbCBcCi0gICAgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dl
YlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbCBcCi0jCi0KLVdFQl9QUkVGRVJFTkNFU19URU1QTEFU
RVMgPSBcCi0gICAgJChEdW1wUmVuZGVyVHJlZSkvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRl
cy9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIgXAotIwotV0VCX1BSRUZFUkVOQ0VTX0ZJ
TEVTID0gJChiYXNlbmFtZSAkKG5vdGRpciAkKFdFQl9QUkVGRVJFTkNFU19URU1QTEFURVMpKSkK
LVdFQl9QUkVGRVJFTkNFU19QQVRURVJOUyA9ICQoc3Vic3QgLmVyYiwsJChXRUJfUFJFRkVSRU5D
RVNfRklMRVMpKQotCi1hbGwgOiAkKFdFQl9QUkVGRVJFTkNFU19GSUxFUykKLQotJChXRUJfUFJF
RkVSRU5DRVNfUEFUVEVSTlMpIDogJChXVEZfQlVJTERfU0NSSVBUU19ESVIpL0dlbmVyYXRlUHJl
ZmVyZW5jZXMucmIgJChXRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVTKSAkKFdFQl9QUkVGRVJFTkNF
UykKLQkkKFJVQlkpICQ8IC0tZnJvbnRlbmQgV2ViS2l0TGVnYWN5IC0tYmFzZSAke1dURl9CVUlM
RF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCAtLWRlYnVnICR7
V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0RlYnVnLnlh
bWwgLS1leHBlcmltZW50YWwgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dl
YlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgLS1pbnRlcm5hbCAke1dURl9CVUlMRF9TQ1JJ
UFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sICQoYWRkcHJl
Zml4IC0tdGVtcGxhdGUgLCAkKFdFQl9QUkVGRVJFTkNFU19URU1QTEFURVMpKQotCi0KIFVJU0NS
SVBUQ09OVEVYVF9ESVIgPSAkKER1bXBSZW5kZXJUcmVlKS8uLi9UZXN0UnVubmVyU2hhcmVkL1VJ
U2NyaXB0Q29udGV4dC9CaW5kaW5ncworRFVNUFJFTkRFUlRSRUVfUFJFRkVSRU5DRVNfVEVNUExB
VEVTX0RJUiA9ICQoRHVtcFJlbmRlclRyZWUpL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMK
IAogVlBBVEggPSBcCiAgICAgJChVSVNDUklQVENPTlRFWFRfRElSKSBcCisgICAgJChEVU1QUkVO
REVSVFJFRV9QUkVGRVJFTkNFU19URU1QTEFURVNfRElSKSBcCiAjCiAKIFVJQ09OVEVYVF9JTlRF
UkZBQ0VTID0gXApAQCAtNzEsMyArNTQsMjEgQEAgYWxsIDogXAogICAgICQoVUlDT05URVhUX0lO
VEVSRkFDRVM6JT1KUyUuaCkgXAogICAgICQoVUlDT05URVhUX0lOVEVSRkFDRVM6JT1KUyUuY3Bw
KSBcCiAjCisKKworV0VCX1BSRUZFUkVOQ0VTID0gXAorICAgICR7V1RGX0JVSUxEX1NDUklQVFNf
RElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlcy55YW1sIFwKKyAgICAke1dURl9CVUlMRF9T
Q1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNEZWJ1Zy55YW1sIFwKKyAgICAk
e1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmlt
ZW50YWwueWFtbCBcCisgICAgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dl
YlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbCBcCisjCisKK1dFQl9QUkVGRVJFTkNFU19HRU5FUkFU
RURfRklMRVMgPSBcCisgICAgVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBw
aW5nLmNwcCBcCisgICAgVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmggXAorIworCithbGwgOiAk
KFdFQl9QUkVGRVJFTkNFU19HRU5FUkFURURfRklMRVMpCisKKyQoV0VCX1BSRUZFUkVOQ0VTX0dF
TkVSQVRFRF9GSUxFUykgOiAlIDogJS5lcmIgJChXRUJfUFJFRkVSRU5DRVMpICQoV1RGX0JVSUxE
X1NDUklQVFNfRElSKS9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiCisJJChSVUJZKSAkKFdURl9CVUlM
RF9TQ1JJUFRTX0RJUikvR2VuZXJhdGVQcmVmZXJlbmNlcy5yYiAtLWZyb250ZW5kIFdlYktpdExl
Z2FjeSAtLWJhc2UgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZl
cmVuY2VzLnlhbWwgLS1kZWJ1ZyAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMv
V2ViUHJlZmVyZW5jZXNEZWJ1Zy55YW1sIC0tZXhwZXJpbWVudGFsICR7V1RGX0JVSUxEX1NDUklQ
VFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIC0taW50
ZXJuYWwgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2Vz
SW50ZXJuYWwueWFtbCAtLXRlbXBsYXRlICQ8CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9U
ZXN0T3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9w
dGlvbnMuY3BwCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0
T3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDQ0IEBACiAKIG5hbWVzcGFj
ZSBXVFIgewogCitjb25zdCBUZXN0RmVhdHVyZXMmIFRlc3RPcHRpb25zOjpkZWZhdWx0cygpCit7
CisgICAgc3RhdGljIFRlc3RGZWF0dXJlcyBmZWF0dXJlczsKKyAgICBpZiAoZmVhdHVyZXMuYm9v
bFdlYlByZWZlcmVuY2VGZWF0dXJlcy5lbXB0eSgpKSB7CisgICAgICAgIGZlYXR1cmVzLmJvb2xX
ZWJQcmVmZXJlbmNlRmVhdHVyZXMgPSB7CisgICAgICAgICAgICAvLyBUaGVzZSBhcmUgV2ViUHJl
ZmVyZW5jZSB2YWx1ZXMgdGhhdCBtdXN0IGFsd2F5cyBiZSBzZXQgYXMgdGhleSBtYXkKKyAgICAg
ICAgICAgIC8vIGRpZmZlciBmcm9tIHRoZSBkZWZhdWx0IHNldCBpbiB0aGUgV2ViUHJlZmVyZW5j
ZXMqLnlhbWwgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgIHsgIkFsbG93Q3Jvc3NPcmlnaW5T
dWJyZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsg
IkFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMiLCB0cnVlIH0sCisgICAgICAgICAgICB7ICJB
Y2NlbGVyYXRlZERyYXdpbmdFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkF0dGFj
aG1lbnRFbGVtZW50RW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJVc2VzQmFja0Zv
cndhcmRDYWNoZSIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJDb2xvckZpbHRlckVuYWJsZWQi
LCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiSW5zcGVjdG9yQWRkaXRpb25zRW5hYmxlZCIsIGZh
bHNlIH0sCisgICAgICAgICAgICB7ICJJbnRlcnNlY3Rpb25PYnNlcnZlckVuYWJsZWQiLCBmYWxz
ZSB9LAorICAgICAgICAgICAgeyAiS2V5Z2VuRWxlbWVudEVuYWJsZWQiLCBmYWxzZSB9LAorICAg
ICAgICAgICAgeyAiTWVudUl0ZW1FbGVtZW50RW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAg
ICB7ICJNb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCIsIHRydWUgfSwKKworICAgICAgICAgICAg
eyAiQ1NTTG9naWNhbEVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiTGluZUhlaWdo
dFVuaXRzRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJTZWxlY3Rpb25BY3Jvc3NT
aGFkb3dCb3VuZGFyaWVzRW5hYmxlZCIsIHRydWUgfSwKKyAgICAgICAgICAgIHsgIkxheW91dEZv
cm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkIiwgdHJ1ZSB9LAorCisgICAgICAgICAg
ICB7ICJBZENsaWNrQXR0cmlidXRpb25FbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsg
IkFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkIiwgZmFsc2UgfSwKKyAg
ICAgICAgICAgIHsgIkFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAg
ICAgICB7ICJDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAg
ICAgICAgIHsgIkNvbnRhY3RQaWNrZXJBUElFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAg
IHsgIkNvcmVNYXRoTUxFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIlJlcXVlc3RJ
ZGxlQ2FsbGJhY2tFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIlJlc2l6ZU9ic2Vy
dmVyRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJXZWJHUFVFbmFibGVkIiwgZmFs
c2UgfSwKKyAgICAgICAgfTsKKyAgICB9CisgICAgcmV0dXJuIGZlYXR1cmVzOworfQorCiBjb25z
dCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFRlc3RIZWFkZXJLZXlUeXBlPiYgVGVz
dE9wdGlvbnM6OmtleVR5cGVNYXBwaW5nKCkKIHsKICAgICBzdGF0aWMgY29uc3Qgc3RkOjp1bm9y
ZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBUZXN0SGVhZGVyS2V5VHlwZT4gbWFwIHsKQEAgLTQ3LDU2
ICs4NSw0NyBAQCBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFRlCiAgICAg
cmV0dXJuIG1hcDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHZvaWQgc2V0VmFs
dWVJZlNldEluTWFwKFQmIHZhbHVlVG9TZXQsIHN0ZDo6c3RyaW5nIGtleSwgY29uc3Qgc3RkOjp1
bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBUPiYgbWFwKQorYm9vbCBUZXN0T3B0aW9uczo6d2Vi
Vmlld0lzQ29tcGF0aWJsZVdpdGhPcHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKSBj
b25zdAoreworICAgIGlmIChtX2ZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVzICE9IG9wdGlv
bnMubV9mZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmIChtX2ZlYXR1cmVzLmludGVybmFsRGVidWdGZWF0dXJlcyAhPSBvcHRpb25zLm1f
ZmVhdHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKG1fZmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyAhPSBvcHRpb25zLm1f
ZmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmIChtX2ZlYXR1cmVzLmRvdWJsZVdlYlByZWZlcmVuY2VGZWF0dXJlcyAhPSBvcHRp
b25zLm1fZmVhdHVyZXMuZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMudWludDMyV2ViUHJlZmVyZW5jZUZlYXR1cmVz
ICE9IG9wdGlvbnMubV9mZWF0dXJlcy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy5zdHJpbmdXZWJQcmVmZXJlbmNl
RmVhdHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJl
cykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLmJvb2xUZXN0UnVu
bmVyRmVhdHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLmJvb2xUZXN0UnVubmVyRmVhdHVyZXMp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy5kb3VibGVUZXN0UnVu
bmVyRmVhdHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLmRvdWJsZVRlc3RSdW5uZXJGZWF0dXJl
cykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLnN0cmluZ1Rlc3RS
dW5uZXJGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMuc3RyaW5nVGVzdFJ1bm5lckZlYXR1
cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuc3RyaW5nVmVj
dG9yVGVzdFJ1bm5lckZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5zdHJpbmdWZWN0b3JU
ZXN0UnVubmVyRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBmZWF0dXJlVmFsdWUoc3RkOjpzdHJpbmcg
a2V5LCBUIGRlZmF1bHRWYWx1ZSwgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5n
LCBUPiYgbWFwKQogewogICAgIGF1dG8gaXQgPSBtYXAuZmluZChrZXkpOwotICAgIGlmIChpdCA9
PSBtYXAuZW5kKCkpCi0gICAgICAgIHJldHVybjsKLSAgICB2YWx1ZVRvU2V0ID0gaXQtPnNlY29u
ZDsKLX0KLQotVGVzdE9wdGlvbnM6OlRlc3RPcHRpb25zKFRlc3RGZWF0dXJlcyB0ZXN0RmVhdHVy
ZXMpCi17Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGFsbG93Q3Jvc3NPcmlnaW5TdWJyZXNvdXJj
ZXNUb0Fza0ZvckNyZWRlbnRpYWxzLCAiQWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNr
Rm9yQ3JlZGVudGlhbHMiLCB0ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7
Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMsICJB
bGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJl
bmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVBY2NlbGVyYXRlZERy
YXdpbmcsICJBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQ
cmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVBdHRhY2ht
ZW50RWxlbWVudCwgIkF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5ib29s
V2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQmFj
a0ZvcndhcmRDYWNoZSwgIlVzZXNCYWNrRm9yd2FyZENhY2hlIiwgdGVzdEZlYXR1cmVzLmJvb2xX
ZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVDb2xv
ckZpbHRlciwgIkNvbG9yRmlsdGVyRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVy
ZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlSW5zcGVjdG9yQWRk
aXRpb25zLCAiSW5zcGVjdG9yQWRkaXRpb25zRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5ib29sV2Vi
UHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXIsICJJbnRlcnNlY3Rpb25PYnNlcnZlckVuYWJsZWQiLCB0ZXN0RmVhdHVy
ZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVu
YWJsZUtleWdlbkVsZW1lbnQsICJLZXlnZW5FbGVtZW50RW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5i
b29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxl
TWVudUl0ZW1FbGVtZW50LCAiTWVudUl0ZW1FbGVtZW50RW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5i
b29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxl
TW9kZXJuTWVkaWFDb250cm9scywgIk1vZGVybk1lZGlhQ29udHJvbHNFbmFibGVkIiwgdGVzdEZl
YXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotCi0gICAgc2V0VmFsdWVJZlNldElu
TWFwKGVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQsICJlbmFibGVEcmFnRGVzdGluYXRp
b25BY3Rpb25Mb2FkIiwgdGVzdEZlYXR1cmVzLmJvb2xUZXN0UnVubmVyRmVhdHVyZXMpOwotICAg
IHNldFZhbHVlSWZTZXRJbk1hcChkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIsICJkdW1wSlNDb25z
b2xlTG9nSW5TdGRFcnIiLCB0ZXN0RmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0dXJlcyk7Ci0g
ICAgc2V0VmFsdWVJZlNldEluTWFwKGxheWVyQmFja2VkV2ViVmlldywgImxheWVyQmFja2VkV2Vi
VmlldyIsIHRlc3RGZWF0dXJlcy5ib29sVGVzdFJ1bm5lckZlYXR1cmVzKTsKLSAgICBzZXRWYWx1
ZUlmU2V0SW5NYXAodXNlRXBoZW1lcmFsU2Vzc2lvbiwgInVzZUVwaGVtZXJhbFNlc3Npb24iLCB0
ZXN0RmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0dXJlcyk7Ci0KLSAgICBzZXRWYWx1ZUlmU2V0
SW5NYXAoYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMsICJhZGRpdGlvbmFsU3VwcG9ydGVk
SW1hZ2VUeXBlcyIsIHRlc3RGZWF0dXJlcy5zdHJpbmdUZXN0UnVubmVyRmVhdHVyZXMpOwotICAg
IHNldFZhbHVlSWZTZXRJbk1hcChqc2NPcHRpb25zLCAianNjT3B0aW9ucyIsIHRlc3RGZWF0dXJl
cy5zdHJpbmdUZXN0UnVubmVyRmVhdHVyZXMpOwotCi0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVu
YWJsZUNTU0xvZ2ljYWwsICJDU1NMb2dpY2FsRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5pbnRlcm5h
bERlYnVnRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVMaW5lSGVpZ2h0
VW5pdHMsICJMaW5lSGVpZ2h0VW5pdHNFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmludGVybmFsRGVi
dWdGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZVNlbGVjdGlvbkFjcm9z
c1NoYWRvd0JvdW5kYXJpZXMsICJzZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzRW5hYmxl
ZCIsIHRlc3RGZWF0dXJlcy5pbnRlcm5hbERlYnVnRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZT
ZXRJbk1hcChsYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCwgIkxheW91
dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkIiwgdGVzdEZlYXR1cmVzLmludGVy
bmFsRGVidWdGZWF0dXJlcyk7Ci0KLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoYWRDbGlja0F0dHJp
YnV0aW9uRW5hYmxlZCwgIkFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMu
ZXhwZXJpbWVudGFsRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVBc3Bl
Y3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0LCAiQXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0
aEFuZEhlaWdodEVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMpOwot
ICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVBc3luY0NsaXBib2FyZEFQSSwgIkFzeW5jQ2xp
cGJvYXJkQVBJRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7Ci0g
ICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUNTU09NVmlld1Ntb290aFNjcm9sbGluZywgIkNT
U09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJpbWVudGFs
RmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVDb250YWN0UGlja2VyQVBJ
LCAiQ29udGFjdFBpY2tlckFQSUVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJpbWVudGFsRmVh
dHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVDb3JlTWF0aE1MLCAiQ29yZU1h
dGhNTEVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMpOwotICAgIHNl
dFZhbHVlSWZTZXRJbk1hcChlbmFibGVSZXF1ZXN0SWRsZUNhbGxiYWNrLCAiUmVxdWVzdElkbGVD
YWxsYmFja0VuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMpOwotICAg
IHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVSZXNpemVPYnNlcnZlciwgIlJlc2l6ZU9ic2VydmVy
RW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFs
dWVJZlNldEluTWFwKGVuYWJsZVdlYkdQVSwgIldlYkdQVUVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMu
ZXhwZXJpbWVudGFsRmVhdHVyZXMpOworICAgIGlmIChpdCAhPSBtYXAuZW5kKCkpCisgICAgICAg
IHJldHVybiBpdC0+c2Vjb25kOworICAgIHJldHVybiBkZWZhdWx0VmFsdWU7Cit9CisKK2Jvb2wg
VGVzdE9wdGlvbnM6OmJvb2xUZXN0UnVubmVyRmVhdHVyZVZhbHVlKHN0ZDo6c3RyaW5nIGtleSwg
Ym9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZlYXR1cmVWYWx1ZShrZXks
IGRlZmF1bHRWYWx1ZSwgbV9mZWF0dXJlcy5ib29sVGVzdFJ1bm5lckZlYXR1cmVzKTsKIH0KIAot
Ym9vbCBUZXN0T3B0aW9uczo6d2ViVmlld0lzQ29tcGF0aWJsZVdpdGhPcHRpb25zKGNvbnN0IFRl
c3RPcHRpb25zJiBvdGhlcikgY29uc3QKK3N0ZDo6c3RyaW5nIFRlc3RPcHRpb25zOjpzdHJpbmdU
ZXN0UnVubmVyRmVhdHVyZVZhbHVlKHN0ZDo6c3RyaW5nIGtleSwgc3RkOjpzdHJpbmcgZGVmYXVs
dFZhbHVlKSBjb25zdAogewotICAgIHJldHVybiBvdGhlci5sYXllckJhY2tlZFdlYlZpZXcgPT0g
bGF5ZXJCYWNrZWRXZWJWaWV3Ci0gICAgICAgICYmIG90aGVyLmpzY09wdGlvbnMgPT0ganNjT3B0
aW9uczsKKyAgICByZXR1cm4gZmVhdHVyZVZhbHVlKGtleSwgZGVmYXVsdFZhbHVlLCBtX2ZlYXR1
cmVzLnN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlcyk7CiB9CiAKIH0KSW5kZXg6IFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvVGVzdE9wdGlvbnMuaAkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRy
ZWUvVGVzdE9wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNTMgKzMxLDM5IEBACiAKIG5h
bWVzcGFjZSBXVFIgewogCi1zdHJ1Y3QgVGVzdE9wdGlvbnMgewotICAgIC8vIEZJWE1FOiBSZW1v
dmUgdGhlc2UgYW5kIHJlcGxhY2Ugd2l0aCBhY2Nlc3MgdG8gVGVzdEZlYXR1cmVzIHNldC4KLSAg
ICAvLyBXZWIgUHJlZmVyZW5jZXMKLSAgICBib29sIGFsbG93Q3Jvc3NPcmlnaW5TdWJyZXNvdXJj
ZXNUb0Fza0ZvckNyZWRlbnRpYWxzIHsgZmFsc2UgfTsKLSAgICBib29sIGFsbG93VG9wTmF2aWdh
dGlvblRvRGF0YVVSTHMgeyB0cnVlIH07Ci0gICAgYm9vbCBlbmFibGVBY2NlbGVyYXRlZERyYXdp
bmcgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQXR0YWNobWVudEVsZW1lbnQgeyBmYWxzZSB9
OwotICAgIGJvb2wgZW5hYmxlQmFja0ZvcndhcmRDYWNoZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBl
bmFibGVDb2xvckZpbHRlciB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVJbnNwZWN0b3JBZGRp
dGlvbnMgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgeyBm
YWxzZSB9OwotICAgIGJvb2wgZW5hYmxlS2V5Z2VuRWxlbWVudCB7IGZhbHNlIH07Ci0gICAgYm9v
bCBlbmFibGVNZW51SXRlbUVsZW1lbnQgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlTW9kZXJu
TWVkaWFDb250cm9scyB7IHRydWUgfTsKLQotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlc2UgYW5k
IHJlcGxhY2Ugd2l0aCBhY2Nlc3MgdG8gVGVzdEZlYXR1cmVzIHNldC4KLSAgICAvLyBJbnRlcm5h
bCBGZWF0dXJlcwotICAgIGJvb2wgZW5hYmxlQ1NTTG9naWNhbCB7IGZhbHNlIH07Ci0gICAgYm9v
bCBlbmFibGVMaW5lSGVpZ2h0VW5pdHMgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlU2VsZWN0
aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllcyB7IHRydWUgfTsKLSAgICBib29sIGxheW91dEZvcm1h
dHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkIHsgdHJ1ZSB9OwotCi0gICAgLy8gRklYTUU6
IFJlbW92ZSB0aGVzZSBhbmQgcmVwbGFjZSB3aXRoIGFjY2VzcyB0byBUZXN0RmVhdHVyZXMgc2V0
LgotICAgIC8vIEV4cGVyaW1lbnRhbCBGZWF0dXJlcwotICAgIGJvb2wgYWRDbGlja0F0dHJpYnV0
aW9uRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVBc3BlY3RSYXRpb09mSW1nRnJv
bVdpZHRoQW5kSGVpZ2h0IHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUFzeW5jQ2xpcGJvYXJk
QVBJIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUNTU09NVmlld1Ntb290aFNjcm9sbGluZyB7
IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVDb250YWN0UGlja2VyQVBJIHsgZmFsc2UgfTsKLSAg
ICBib29sIGVuYWJsZUNvcmVNYXRoTUwgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlUmVxdWVz
dElkbGVDYWxsYmFjayB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVSZXNpemVPYnNlcnZlciB7
IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVXZWJHUFUgeyBmYWxzZSB9OworY2xhc3MgVGVzdE9w
dGlvbnMgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBUZXN0RmVhdHVyZXMmIGRlZmF1bHRz
KCk7CisgICAgc3RhdGljIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgVGVz
dEhlYWRlcktleVR5cGU+JiBrZXlUeXBlTWFwcGluZygpOwogCi0gICAgLy8gVGVzdCBSdW5uZXIg
U3BlY2lmaWMgRmVhdHVyZXMKLSAgICBib29sIGR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciB7IGZh
bHNlIH07Ci0gICAgYm9vbCBlbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkIHsgZmFsc2Ug
fTsKLSAgICBib29sIGVuYWJsZVdlYlNRTCB7IHRydWUgfTsKLSAgICBib29sIGxheWVyQmFja2Vk
V2ViVmlldyB7IGZhbHNlIH07Ci0gICAgYm9vbCB1c2VFcGhlbWVyYWxTZXNzaW9uIHsgZmFsc2Ug
fTsKLSAgICBzdGQ6OnN0cmluZyBhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlczsKLSAgICBz
dGQ6OnN0cmluZyBqc2NPcHRpb25zOworICAgIGV4cGxpY2l0IFRlc3RPcHRpb25zKFRlc3RGZWF0
dXJlcyBmZWF0dXJlcykKKyAgICAgICAgOiBtX2ZlYXR1cmVzKHN0ZDo6bW92ZShmZWF0dXJlcykp
CisgICAgeworICAgIH0KIAotICAgIGV4cGxpY2l0IFRlc3RPcHRpb25zKFRlc3RGZWF0dXJlcyk7
CiAgICAgYm9vbCB3ZWJWaWV3SXNDb21wYXRpYmxlV2l0aE9wdGlvbnMoY29uc3QgVGVzdE9wdGlv
bnMmKSBjb25zdDsKLSAgICAKLSAgICBzdGF0aWMgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0
ZDo6c3RyaW5nLCBUZXN0SGVhZGVyS2V5VHlwZT4mIGtleVR5cGVNYXBwaW5nKCk7CisKKyAgICAv
LyBUZXN0IFJ1bm5lciBTcGVjaWZpYyBGZWF0dXJlcworICAgIGJvb2wgZHVtcEpTQ29uc29sZUxv
Z0luU3RkRXJyKCkgY29uc3QgeyByZXR1cm4gYm9vbFRlc3RSdW5uZXJGZWF0dXJlVmFsdWUoImR1
bXBKU0NvbnNvbGVMb2dJblN0ZEVyciIsIGZhbHNlKTsgfQorICAgIGJvb2wgZW5hYmxlRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uTG9hZCgpIGNvbnN0IHsgcmV0dXJuIGJvb2xUZXN0UnVubmVyRmVhdHVy
ZVZhbHVlKCJlbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkIiwgZmFsc2UpOyB9CisgICAg
Ym9vbCBsYXllckJhY2tlZFdlYlZpZXcoKSBjb25zdCB7IHJldHVybiBib29sVGVzdFJ1bm5lckZl
YXR1cmVWYWx1ZSgibGF5ZXJCYWNrZWRXZWJWaWV3IiwgZmFsc2UpOyB9CisgICAgYm9vbCB1c2VF
cGhlbWVyYWxTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gYm9vbFRlc3RSdW5uZXJGZWF0dXJlVmFs
dWUoInVzZUVwaGVtZXJhbFNlc3Npb24iLCBmYWxzZSk7IH0KKyAgICBzdGQ6OnN0cmluZyBhZGRp
dGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcygpIGNvbnN0IHsgcmV0dXJuIHN0cmluZ1Rlc3RSdW5u
ZXJGZWF0dXJlVmFsdWUoImFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzIiwgeyB9KTsgfQor
ICAgIHN0ZDo6c3RyaW5nIGpzY09wdGlvbnMoKSBjb25zdCB7IHJldHVybiBzdHJpbmdUZXN0UnVu
bmVyRmVhdHVyZVZhbHVlKCJqc2NPcHRpb25zIiwgeyB9KTsgfQorCisgICAgY29uc3Qgc3RkOjp1
bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBib29sPiYgYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJl
cygpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlczsg
fQorICAgIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgZG91YmxlPiYgZG91
YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcy5kb3Vi
bGVXZWJQcmVmZXJlbmNlRmVhdHVyZXM7IH0KKyAgICBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8
c3RkOjpzdHJpbmcsIHVpbnQzMl90PiYgdWludDMyV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkgY29u
c3QgeyByZXR1cm4gbV9mZWF0dXJlcy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXM7IH0KKyAg
ICBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiYgc3Ry
aW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcy5zdHJp
bmdXZWJQcmVmZXJlbmNlRmVhdHVyZXM7IH0KKworICAgIHN0YXRpYyBzdGQ6OnN0cmluZyB0b1dl
YktpdExlZ2FjeVByZWZlcmVuY2VLZXkoY29uc3Qgc3RkOjpzdHJpbmcmKTsKKworcHJpdmF0ZToK
KyAgICBib29sIGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKHN0ZDo6c3RyaW5nIGtleSwg
Ym9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0OworICAgIGJvb2wgYm9vbFRlc3RSdW5uZXJGZWF0dXJl
VmFsdWUoc3RkOjpzdHJpbmcga2V5LCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3Q7CisgICAgc3Rk
OjpzdHJpbmcgc3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZShzdGQ6OnN0cmluZyBrZXksIHN0
ZDo6c3RyaW5nIGRlZmF1bHRWYWx1ZSkgY29uc3Q7CisKKyAgICBUZXN0RmVhdHVyZXMgbV9mZWF0
dXJlczsKIH07CiAKIH0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRl
clRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSw3IEBACiAJCTVE
QjlBQzlFMEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyNzAwLnR0ZiBpbiBD
b3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc1RjA5
NzcwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXI3MDAudHRmICovOyB9Owog
CQk1REI5QUM5RjBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjgwMC50dGYg
aW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3
NUYwOTc4MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyODAwLnR0ZiAqLzsg
fTsKIAkJNURCOUFDQTAwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktpdFdlaWdodFdhdGNoZXI5MDAu
dHRmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzNzVGMDk3OTBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjkwMC50dGYg
Ki87IH07CisJCTdDNEYzMDQwMjUzQjk3MEYwMDMwNTQ1OCAvKiBUZXN0T3B0aW9uc0dlbmVyYXRl
ZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0M0RjMwM0YyNTNCODM2OTAwMzA1NDU4IC8qIFRlc3RPcHRpb25z
R2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgKi87IH07CiAJCTdDRkY5QkJGMjUz
M0JCMjQwMDA4MDA5RiAvKiBUZXN0RmVhdHVyZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NGRjlCQkUyNTMzQkIyNDAwMDgwMDlGIC8qIFRlc3RG
ZWF0dXJlcy5jcHAgKi87IH07CiAJCTdDRkY5QkMyMjUzM0JDMTYwMDA4MDA5RiAvKiBUZXN0Q29t
bWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
Q0ZGOUJDMTI1MzNCQzE2MDAwODAwOUYgLyogVGVzdENvbW1hbmQuY3BwICovOyB9OwogCQk4MDA0
NUFFRTE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MDA0NUFF
QzE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0g
Ki87IH07CkBAIC0zMzMsOCArMzM0LDEyIEBACiAJCTdDNDQ2OTdGMjUzNzdBMDIwMDI0MjkwQSAv
KiBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0
ZWRLZXlzLmguZXJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzQ0Njk4MDI1Mzc3
QTAyMDAyNDI5MEEgLyogY2hlY2steGNmaWxlbGlzdHMuc2ggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5zaDsgcGF0aCA9ICJjaGVj
ay14Y2ZpbGVsaXN0cy5zaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNDQ2OTgx
MjUzNzdBMDIwMDI0MjkwQSAvKiBnZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2ggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5zaDsg
cGF0aCA9ICJnZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2giOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk3QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNHZW5lcmF0
ZWRLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oOyBwYXRo
ID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdDNDQ2OTg1MjUzNzdFNTIwMDI0MjkwQSAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdDNEYzMDNGMjUzQjgzNjkwMDMwNTQ1OCAvKiBUZXN0T3B0aW9u
c0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M5RTI1MEIyNTNCNzk0QTAwNDEzMDE4IC8qIFRlc3RPcHRp
b25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFRlc3RPcHRp
b25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3Q0JCQzMyMjFEREZDRjlBMDA3ODZCOUQgLyogVGVzdE9wdGlvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdE9wdGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0NDQkE1MUQyNTNCQjlEMzAwQkIzMkMxIC8qIERlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjZmlsZWxpc3Q7IHBhdGggPSAiRGVyaXZlZFNvdXJj
ZXMtaW5wdXQueGNmaWxlbGlzdCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDQ0JB
NTFFMjUzQkI5RDMwMEJCMzJDMSAvKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNm
aWxlbGlzdDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRkY5QkJEMjUzM0JCMjQwMDA4MDA5RiAvKiBUZXN0
RmVhdHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdEZlYXR1cmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDRkY5QkJFMjUzM0JCMjQwMDA4MDA5RiAvKiBUZXN0RmVhdHVyZXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVzdEZlYXR1cmVzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0NGRjlCQzAyNTMzQkMxNjAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRlc3RDb21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC01MDEsNiArNTA2LDggQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CiAJCQkJMEYxOEU2RjExRDZCOUM2NDAwMjdFNTQ3IC8qIERlcml2ZWRTb3VyY2VzLm1ha2UgKi8s
CisJCQkJN0NDQkE1MUQyNTNCQjlEMzAwQkIzMkMxIC8qIERlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3QgKi8sCisJCQkJN0NDQkE1MUUyNTNCQjlEMzAwQkIzMkMxIC8qIERlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0ICovLAogCQkJCTdDNDQ2OTgyMjUzNzdDMzQwMDI0MjkwQSAv
KiBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJCQkJMzE0OEEwNjUxRTZGOTBGNDAwRDNCMzE2IC8qIFRl
c3RSdW5uZXJTaGFyZWQgKi8sCiAJCQkJMEYxOEU2RTcxRDZCOUJGNTAwMjdFNTQ3IC8qIFVJU2Ny
aXB0Q29udGV4dCAqLywKQEAgLTc3MCw2ICs3NzcsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKIAkJCQk3QzQ0Njk3RjI1Mzc3QTAyMDAyNDI5MEEgLyogVGVzdE9wdGlv
bnNHZW5lcmF0ZWRLZXlzLmguZXJiICovLAorCQkJCTdDOUUyNTBCMjUzQjc5NEEwMDQxMzAxOCAv
KiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYiAqLywK
IAkJCSk7CiAJCQlwYXRoID0gUHJlZmVyZW5jZXNUZW1wbGF0ZXM7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtNzc4LDYgKzc4Niw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAogCQkJCTdDNDQ2OTg1MjUzNzdFNTIwMDI0MjkwQSAvKiBUZXN0T3B0aW9uc0dl
bmVyYXRlZEtleXMuaCAqLywKKwkJCQk3QzRGMzAzRjI1M0I4MzY5MDAzMDU0NTggLyogVGVzdE9w
dGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAqLywKIAkJCSk7CiAJCQlu
YW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCQlwYXRoID0gRGVyaXZlZFNvdXJjZXMvRHVtcFJl
bmRlclRyZWU7CkBAIC0xMjkxLDYgKzEzMDAsNyBAQAogCQkJCTdDRkY5QkMyMjUzM0JDMTYwMDA4
MDA5RiAvKiBUZXN0Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0ZGOUJCRjI1MzNC
QjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzMEEy
MUY4MjA1MUQ4QzQwMDA4RkY0MiAvKiBUZXN0T3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk3QzRGMzA0MDI1M0I5NzBGMDAzMDU0NTggLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRM
ZWdhY3lLZXlNYXBwaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMDEzMURBMEM5NzcyMDEw
MDg3MzE3RCAvKiBUZXN0UnVubmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQTE4QjI0MEM5
QjAxNEIwMDExNDM2OSAvKiBUZXN0UnVubmVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjRE
NDIzNjExREQ1MDQ4MjAwNjc4MjkwIC8qIFRleHRJbnB1dENvbnRyb2xsZXJJT1MubSBpbiBTb3Vy
Y2VzICovLApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvU2NyaXB0cy9QcmVmZXJlbmNlc1Rl
bXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVy
Ygo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2Vz
VGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAu
ZXJiCShub25leGlzdGVudCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1NjcmlwdHMvUHJlZmVy
ZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5n
LmNwcC5lcmIJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIDwlPSBAd2Fy
bmluZyAlPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0
T3B0aW9ucy5oIgorCituYW1lc3BhY2UgV1RSIHsKKworc3RkOjpzdHJpbmcgVGVzdE9wdGlvbnM6
OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShjb25zdCBzdGQ6OnN0cmluZyYgd2ViUHJlZmVy
ZW5jZXNLZXkpCit7CisgICAgc3RhdGljIHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywg
c3RkOjpzdHJpbmc+IG5vblN0YW5kYXJkS2V5cyA9IHsKKzwlLSBmb3IgQHByZWYgaW4gQHByZWZl
cmVuY2VzLnNlbGVjdCB7IHxwfCBwLm9wdHNbIndlYktpdExlZ2FjeVByZWZlcmVuY2VLZXkiXSB9
IGRvIC0lPgorICAgICAgICB7ICI8JT0gQHByZWYubmFtZSAlPiIsICI8JT0gQHByZWYucHJlZmVy
ZW5jZUtleSAlPiIgfSwgXAorPCUtIGVuZCAtJT4KKyAgICB9OworCisgICAgYXV0byBpdCA9IG5v
blN0YW5kYXJkS2V5cy5maW5kKHdlYlByZWZlcmVuY2VzS2V5KTsKKyAgICBpZiAoaXQgIT0gbm9u
U3RhbmRhcmRLZXlzLmVuZCgpKQorICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKKworICAgIHJl
dHVybiAiV2ViS2l0IiArIHdlYlByZWZlcmVuY2VzS2V5OworfQorCit9CkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCShyZXZpc2lvbiAyNjg2NDgpCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTEzMSw2ICsxMzEsMTIgQEAgZXh0ZXJuICJDIiB7CiAKIHVzaW5nIG5hbWVzcGFjZSBz
dGQ7CiAKK3N0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IHRvTlMoY29uc3Qgc3RkOjpzdHJpbmcm
IHN0cmluZykKK3sKKyAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0
aFVURjhTdHJpbmc6c3RyaW5nLmNfc3RyKCldKTsKK30KKworCiAjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCiBAaW50ZXJmYWNlIER1bXBSZW5kZXJUcmVlQXBwbGljYXRpb24gOiBOU0FwcGxpY2F0
aW9uCiBAZW5kCkBAIC02NzIsNiArNjc4LDEwIEBAIFdlYlZpZXcgKmNyZWF0ZVdlYlZpZXdBbmRP
ZmZzY3JlZW5XaW5kb3cKICAgICBbd2ViVmlldyBzZXRHcm91cE5hbWU6QCJvcmcud2Via2l0LkR1
bXBSZW5kZXJUcmVlIl07CiAjZW5kaWYKIAorICAgIFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNl
cyA9IFtbV2ViUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdOworICAgIFtwcmVmZXJlbmNlcyBzZXRB
dXRvc2F2ZXM6Tk9dOworICAgIFt3ZWJWaWV3IHNldFByZWZlcmVuY2VzOnByZWZlcmVuY2VzXTsK
KwogICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6dWlEZWxlZ2F0ZV07CiAgICAgW3dlYlZpZXcg
c2V0RnJhbWVMb2FkRGVsZWdhdGU6ZnJhbWVMb2FkRGVsZWdhdGVdOwogICAgIFt3ZWJWaWV3IHNl
dEVkaXRpbmdEZWxlZ2F0ZTplZGl0aW5nRGVsZWdhdGVdOwpAQCAtNjg1LDggKzY5NSw2IEBAIFdl
YlZpZXcgKmNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3cKICAgICBbV2ViVmlldyByZWdp
c3RlclVSTFNjaGVtZUFzTG9jYWw6QCJmZWVkcyJdOwogICAgIFtXZWJWaWV3IHJlZ2lzdGVyVVJM
U2NoZW1lQXNMb2NhbDpAImZlZWRzZWFyY2giXTsKIAotICAgIFtbd2ViVmlldyBwcmVmZXJlbmNl
c10gX3NldE1lZGlhUmVjb3JkZXJFbmFibGVkOllFU107Ci0KICNpZiBQTEFURk9STShNQUMpCiAg
ICAgW3dlYlZpZXcgc2V0V2luZG93T2NjbHVzaW9uRGV0ZWN0aW9uRW5hYmxlZDpOT107CiAgICAg
W1dlYlZpZXcgX3NldEZvbnRBbGxvd0xpc3Q6Zm9udEFsbG93TGlzdCgpXTsKQEAgLTg0NCw5ICs4
NTIsOCBAQCBzdGF0aWMgdm9pZCBlbmFibGVFeHBlcmltZW50YWxGZWF0dXJlcyhXCiB9CiAKIC8v
IENhbGxlZCBiZWZvcmUgZWFjaCB0ZXN0Lgotc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNl
c1RvQ29uc2lzdGVudFZhbHVlcygpCitzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9D
b25zaXN0ZW50VmFsdWVzKFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcykKIHsKLSAgICBXZWJQ
cmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJl
bmNlc107CiAgICAgZW5hYmxlRXhwZXJpbWVudGFsRmVhdHVyZXMocHJlZmVyZW5jZXMpOwogCiAg
ICAgW3ByZWZlcmVuY2VzIHNldE5lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrOiBO
T107CkBAIC05MDIsNiArOTA5LDcgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1Rv
Q29uc2lzdAogICAgIH0gZWxzZQogICAgICAgICBbcHJlZmVyZW5jZXMgc2V0VXNlclN0eWxlU2hl
ZXRFbmFibGVkOk5PXTsKIAorICAgIFtwcmVmZXJlbmNlcyBzZXRJbmxpbmVNZWRpYVBsYXliYWNr
UmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZTpOT107CiAgICAgW3ByZWZlcmVuY2VzIHNldE1l
ZGlhUGxheWJhY2tBbGxvd3NJbmxpbmU6WUVTXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0TWVkaWFQ
bGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmU6Tk9dOwogICAgIFtwcmVmZXJlbmNlcyBzZXRWaWRl
b1BsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZTpOT107CkBAIC05MjgsOSArOTM2LDggQEAgc3Rh
dGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdAogI2VuZGlmCiAgICAgW3ByZWZl
cmVuY2VzIHNldFVzZVByZUhUTUw1UGFyc2VyUXVpcmtzOk5PXTsKICAgICBbcHJlZmVyZW5jZXMg
c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQ6Tk9dOwotI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgIEFTU0VSVChbcHJlZmVyZW5jZXMgbW9ja1Njcm9sbGJhcnNFbmFibGVk
XSk7Ci0jZW5kaWYKKworICAgIFtwcmVmZXJlbmNlcyBzZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWQ6
WUVTXTsKIAogICAgIFtwcmVmZXJlbmNlcyBzZXRXZWJBdWRpb0VuYWJsZWQ6WUVTXTsKICAgICBb
cHJlZmVyZW5jZXMgc2V0TW9kZXJuVW5wcmVmaXhlZFdlYkF1ZGlvRW5hYmxlZDpZRVNdOwpAQCAt
OTYwLDYgKzk2Nyw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3QK
ICAgICBwcmVmZXJlbmNlcy5tZWRpYUNhcGFiaWxpdGllc0VuYWJsZWQgPSBZRVM7CiAKICAgICBw
cmVmZXJlbmNlcy5zZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzRW5hYmxlZCA9IFlFUzsK
KyAgICBwcmVmZXJlbmNlcy5mdWxsU2NyZWVuRW5hYmxlZCA9IFlFUzsKIAogICAgIFtwcmVmZXJl
bmNlcyBzZXRXZWJTUUxFbmFibGVkOllFU107CiAKQEAgLTk2NywzNCArOTc1LDIxIEBAIHN0YXRp
YyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3QKICAgICBbV2ViUHJlZmVyZW5jZXMg
X3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTpOU0hUVFBD
b29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbl07CiB9CiAKLXN0YXRp
YyB2b2lkIHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMoY29uc3QgV1RSOjpUZXN0T3B0
aW9ucyYgb3B0aW9ucykKK3N0YXRpYyB2b2lkIHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlv
bnMoV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzLCBjb25zdCBXVFI6OlRlc3RPcHRpb25zJiBv
cHRpb25zKQogewotICAgIFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtXZWJQcmVmZXJl
bmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXTsKKyAgICBwcmVmZXJlbmNlcy5wcml2YXRlQnJvd3Np
bmdFbmFibGVkID0gb3B0aW9ucy51c2VFcGhlbWVyYWxTZXNzaW9uKCk7CisKKyAgICBmb3IgKGNv
bnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJl
cygpKQorICAgICAgICBbcHJlZmVyZW5jZXMgX3NldEJvb2xQcmVmZXJlbmNlRm9yVGVzdGluZ1dp
dGhWYWx1ZTp2YWx1ZSBmb3JLZXk6dG9OUyhXVFI6OlRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2Fj
eVByZWZlcmVuY2VLZXkoa2V5KSkuZ2V0KCldOwogCi0gICAgcHJlZmVyZW5jZXMuYXR0YWNobWVu
dEVsZW1lbnRFbmFibGVkID0gb3B0aW9ucy5lbmFibGVBdHRhY2htZW50RWxlbWVudDsKLSAgICBw
cmVmZXJlbmNlcy5hY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkID0gb3B0aW9ucy5lbmFibGVBY2Nl
bGVyYXRlZERyYXdpbmc7Ci0gICAgcHJlZmVyZW5jZXMubWVudUl0ZW1FbGVtZW50RW5hYmxlZCA9
IG9wdGlvbnMuZW5hYmxlTWVudUl0ZW1FbGVtZW50OwotICAgIHByZWZlcmVuY2VzLmtleWdlbkVs
ZW1lbnRFbmFibGVkID0gb3B0aW9ucy5lbmFibGVLZXlnZW5FbGVtZW50OwotICAgIHByZWZlcmVu
Y2VzLm1vZGVybk1lZGlhQ29udHJvbHNFbmFibGVkID0gb3B0aW9ucy5lbmFibGVNb2Rlcm5NZWRp
YUNvbnRyb2xzOwotICAgIHByZWZlcmVuY2VzLmluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQgPSBv
cHRpb25zLmVuYWJsZUluc3BlY3RvckFkZGl0aW9uczsKLSAgICBwcmVmZXJlbmNlcy5hbGxvd0Ny
b3NzT3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyA9IG9wdGlvbnMuYWxsb3dD
cm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHM7Ci0gICAgcHJlZmVyZW5j
ZXMuY29sb3JGaWx0ZXJFbmFibGVkID0gb3B0aW9ucy5lbmFibGVDb2xvckZpbHRlcjsKLSAgICBw
cmVmZXJlbmNlcy5zZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzRW5hYmxlZCA9IG9wdGlv
bnMuZW5hYmxlU2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllczsKLSAgICBwcmVmZXJlbmNl
cy53ZWJHUFVFbmFibGVkID0gb3B0aW9ucy5lbmFibGVXZWJHUFU7Ci0gICAgcHJlZmVyZW5jZXMu
Q1NTTG9naWNhbEVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUNTU0xvZ2ljYWw7Ci0gICAgcHJlZmVy
ZW5jZXMubGluZUhlaWdodFVuaXRzRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlTGluZUhlaWdodFVu
aXRzOwotICAgIHByZWZlcmVuY2VzLmFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQgPSBvcHRpb25z
LmFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQ7Ci0gICAgcHJlZmVyZW5jZXMucmVzaXplT2JzZXJ2
ZXJFbmFibGVkID0gb3B0aW9ucy5lbmFibGVSZXNpemVPYnNlcnZlcjsKLSAgICBwcmVmZXJlbmNl
cy5DU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkID0gb3B0aW9ucy5lbmFibGVDU1NPTVZp
ZXdTbW9vdGhTY3JvbGxpbmc7Ci0gICAgcHJlZmVyZW5jZXMuY29yZU1hdGhNTEVuYWJsZWQgPSBv
cHRpb25zLmVuYWJsZUNvcmVNYXRoTUw7Ci0gICAgcHJlZmVyZW5jZXMucmVxdWVzdElkbGVDYWxs
YmFja0VuYWJsZWQgPSBvcHRpb25zLmVuYWJsZVJlcXVlc3RJZGxlQ2FsbGJhY2s7Ci0gICAgcHJl
ZmVyZW5jZXMuYXN5bmNDbGlwYm9hcmRBUElFbmFibGVkID0gb3B0aW9ucy5lbmFibGVBc3luY0Ns
aXBib2FyZEFQSTsKLSAgICBwcmVmZXJlbmNlcy5wcml2YXRlQnJvd3NpbmdFbmFibGVkID0gb3B0
aW9ucy51c2VFcGhlbWVyYWxTZXNzaW9uOwotICAgIHByZWZlcmVuY2VzLnVzZXNQYWdlQ2FjaGUg
PSBvcHRpb25zLmVuYWJsZUJhY2tGb3J3YXJkQ2FjaGU7Ci0gICAgcHJlZmVyZW5jZXMubGF5b3V0
Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQgPSBvcHRpb25zLmxheW91dEZvcm1h
dHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkOwotICAgIHByZWZlcmVuY2VzLmFzcGVjdFJh
dGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkID0gb3B0aW9ucy5lbmFibGVBc3BlY3RS
YXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0OwotICAgIHByZWZlcmVuY2VzLmFsbG93VG9wTmF2
aWdhdGlvblRvRGF0YVVSTHMgPSBvcHRpb25zLmFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHM7
Ci0gICAgcHJlZmVyZW5jZXMuY29udGFjdFBpY2tlckFQSUVuYWJsZWQgPSBvcHRpb25zLmVuYWJs
ZUNvbnRhY3RQaWNrZXJBUEk7CisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBv
cHRpb25zLmRvdWJsZVdlYlByZWZlcmVuY2VGZWF0dXJlcygpKQorICAgICAgICBbcHJlZmVyZW5j
ZXMgX3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnZhbHVlIGZvcktleTp0
b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShrZXkpKS5n
ZXQoKV07CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMudWlu
dDMyV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0VUlu
dDMyUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dmFsdWUgZm9yS2V5OnRvTlMoV1RSOjpU
ZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGtleSkpLmdldCgpXTsKKwor
ICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5zdHJpbmdXZWJQcmVm
ZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXRTdHJpbmdQcmVmZXJl
bmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp0b05TKHZhbHVlKS5nZXQoKSBmb3JLZXk6dG9OUyhXVFI6
OlRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVuY2VLZXkoa2V5KSkuZ2V0KCldOwog
fQogCiAvLyBDYWxsZWQgb25jZSBvbiBEdW1wUmVuZGVyVHJlZSBzdGFydHVwLgpAQCAtMTAxOCw5
ICsxMDEzLDYgQEAgc3RhdGljIHZvaWQgc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZQogICAg
ICAgICBAIkFwcGxlT3RoZXJIaWdobGlnaHRDb2xvciI6QCIwLjUwMDAwMCAwLjUwMDAwMCAwLjUw
MDAwMCIsCiAgICAgICAgIEAiQXBwbGVMYW5ndWFnZXMiOiBAWyBAImVuIiBdLAogICAgICAgICBX
ZWJLaXRFbmFibGVGdWxsRG9jdW1lbnRUZWFyZG93blByZWZlcmVuY2VLZXk6IEBZRVMsCi0gICAg
ICAgIFdlYktpdEZ1bGxTY3JlZW5FbmFibGVkUHJlZmVyZW5jZUtleTogQFlFUywKLSAgICAgICAg
V2ViS2l0QWxsb3dzSW5saW5lTWVkaWFQbGF5YmFja1ByZWZlcmVuY2VLZXk6IEBZRVMsCi0gICAg
ICAgIFdlYktpdElubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRl
S2V5OiBATk8sCiAgICAgICAgIEAiVXNlV2ViS2l0V2ViSW5zcGVjdG9yIjogQFlFUywKICNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgQCJOU1ByZWZlcnJlZFNwZWxsU2VydmVyTGFu
Z3VhZ2UiOiBAImVuX1VTIiwKQEAgLTE4MjYsOSArMTgxOCw5IEBAIHN0YXRpYyB2b2lkIHNldEpT
Q09wdGlvbnMoY29uc3QgV1RSOjpUZXMKICAgICAgICAgc2F2ZWRPcHRpb25zLmNsZWFyKCk7CiAg
ICAgfQogCi0gICAgaWYgKG9wdGlvbnMuanNjT3B0aW9ucy5sZW5ndGgoKSkgeworICAgIGlmICgh
b3B0aW9ucy5qc2NPcHRpb25zKCkuZW1wdHkoKSkgewogICAgICAgICBKU0M6Ok9wdGlvbnM6OmR1
bXBBbGxPcHRpb25zSW5BTGluZShzYXZlZE9wdGlvbnMpOwotICAgICAgICBKU0M6Ok9wdGlvbnM6
OnNldE9wdGlvbnMob3B0aW9ucy5qc2NPcHRpb25zLmNfc3RyKCkpOworICAgICAgICBKU0M6Ok9w
dGlvbnM6OnNldE9wdGlvbnMob3B0aW9ucy5qc2NPcHRpb25zKCkuY19zdHIoKSk7CiAgICAgfQog
fQogCkBAIC0xODM5LDYgKzE4MzEsMTAgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25z
aXN0ZW50U3RhdAogCiAgICAgV2ViVmlldyAqd2ViVmlldyA9IFttYWluRnJhbWUgd2ViVmlld107
CiAKKyAgICBXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbW1dlYlByZWZlcmVuY2VzIGFs
bG9jXSBpbml0XTsKKyAgICBbcHJlZmVyZW5jZXMgc2V0QXV0b3NhdmVzOk5PXTsKKyAgICBbd2Vi
VmlldyBzZXRQcmVmZXJlbmNlczpwcmVmZXJlbmNlc107CisKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIGFkanVzdFdlYkRvY3VtZW50Rm9yU3RhbmRhcmRWaWV3cG9ydChnV2ViQnJvd3Nl
clZpZXcsIGdXZWJTY3JvbGxWaWV3KTsKICAgICBbd2ViVmlldyBfc2V0QWxsb3dzTWVzc2FnaW5n
OllFU107CkBAIC0xODY3LDEwICsxODYzLDEwIEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViVmlld1Rv
Q29uc2lzdGVudFN0YXQKIAogICAgIFtXZWJDYWNoZSBjbGVhckNhY2hlZENyZWRlbnRpYWxzXTsK
IAotICAgIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKTsKLSAgICBzZXRX
ZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKG9wdGlvbnMpOworICAgIHJlc2V0V2ViUHJlZmVy
ZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMocHJlZmVyZW5jZXMpOworICAgIHNldFdlYlByZWZlcmVu
Y2VzRm9yVGVzdE9wdGlvbnMocHJlZmVyZW5jZXMsIG9wdGlvbnMpOwogI2lmIFBMQVRGT1JNKE1B
QykKLSAgICBbd2ViVmlldyBzZXRXYW50c0xheWVyOm9wdGlvbnMubGF5ZXJCYWNrZWRXZWJWaWV3
XTsKKyAgICBbd2ViVmlldyBzZXRXYW50c0xheWVyOm9wdGlvbnMubGF5ZXJCYWNrZWRXZWJWaWV3
KCldOwogI2VuZGlmCiAKICAgICBUZXN0UnVubmVyOjpzZXRTZXJpYWxpemVIVFRQTG9hZHMoZmFs
c2UpOwpAQCAtMTkxNCw3ICsxOTEwLDcgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25z
aXN0ZW50U3RhdAogICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBkZWNsYXJl
VHlwZXM6QFtOU1N0cmluZ1Bib2FyZFR5cGVdIG93bmVyOm5pbF07CiAjZW5kaWYKIAotICAgIFdl
YkNvcmVUZXN0U3VwcG9ydDo6c2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXNGb3JUZXN0
aW5nKG9wdGlvbnMuYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMuY19zdHIoKSk7CisgICAg
V2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlc0ZvclRl
c3Rpbmcob3B0aW9ucy5hZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcygpLmNfc3RyKCkpOwog
CiAgICAgW21haW5GcmFtZSBfY2xlYXJPcGVuZXJdOwogCkBAIC0xOTcwLDcgKzE5NjYsNyBAQCBz
dGF0aWMgTlNVUkwgKmNvbXB1dGVUZXN0VVJMKE5TU3RyaW5nICpwCiAKIHN0YXRpYyBXVFI6OlRl
c3RPcHRpb25zIHRlc3RPcHRpb25zRm9yVGVzdChjb25zdCBXVFI6OlRlc3RDb21tYW5kJiBjb21t
YW5kKQogewotICAgIFdUUjo6VGVzdEZlYXR1cmVzIGZlYXR1cmVzOworICAgIFdUUjo6VGVzdEZl
YXR1cmVzIGZlYXR1cmVzID0gV1RSOjpUZXN0T3B0aW9uczo6ZGVmYXVsdHMoKTsKICAgICBXVFI6
Om1lcmdlKGZlYXR1cmVzLCBXVFI6OmhhcmRjb2RlZEZlYXR1cmVzQmFzZWRPblBhdGhGb3JUZXN0
KGNvbW1hbmQpKTsKICAgICBXVFI6Om1lcmdlKGZlYXR1cmVzLCBXVFI6OmZlYXR1cmVEZWZhdWx0
c0Zyb21UZXN0SGVhZGVyRm9yVGVzdChjb21tYW5kLCBXVFI6OlRlc3RPcHRpb25zOjprZXlUeXBl
TWFwcGluZygpKSk7CiAKQEAgLTIwMTcsNyArMjAxMyw3IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3Qo
Y29uc3Qgc3RyaW5nJiBpbnB1dEwKICAgICBnVGVzdFJ1bm5lciA9IFRlc3RSdW5uZXI6OmNyZWF0
ZSh0ZXN0VVJMLCBjb21tYW5kLmV4cGVjdGVkUGl4ZWxIYXNoKTsKICAgICBnVGVzdFJ1bm5lci0+
c2V0QWxsb3dlZEhvc3RzKGFsbG93ZWRIb3N0cyk7CiAgICAgZ1Rlc3RSdW5uZXItPnNldEN1c3Rv
bVRpbWVvdXQoY29tbWFuZC50aW1lb3V0Lm1pbGxpc2Vjb25kcygpKTsKLSAgICBnVGVzdFJ1bm5l
ci0+c2V0RHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyKGNvbW1hbmQuZHVtcEpTQ29uc29sZUxvZ0lu
U3RkRXJyIHx8IG9wdGlvbnMuZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyKTsKKyAgICBnVGVzdFJ1
bm5lci0+c2V0RHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyKGNvbW1hbmQuZHVtcEpTQ29uc29sZUxv
Z0luU3RkRXJyIHx8IG9wdGlvbnMuZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyKCkpOwogCiAgICAg
cmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGUob3B0aW9ucywgUmVzZXRUaW1lOjpCZWZvcmVU
ZXN0KTsKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0J
KHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVy
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NzYsMTQgKzU3NiwxNCBAQCB2b2lkIFRlc3RSdW5u
ZXI6OnNldFBhZ2VQYXVzZWQoYm9vbCBwYXVzCiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VXNlclN0
eWxlU2hlZXRFbmFibGVkKGJvb2wgZmxhZykKIHsKLSAgICBbW1dlYlByZWZlcmVuY2VzIHN0YW5k
YXJkUHJlZmVyZW5jZXNdIHNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZDpmbGFnXTsKKyAgICBbW1tt
YWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIHNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZDpm
bGFnXTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEpT
U3RyaW5nUmVmIHBhdGgpCiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXRoQ0YgPSBh
ZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBhdGgpKTsK
ICAgICBOU1VSTCAqdXJsID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5n
ICopcGF0aENGLmdldCgpXTsKLSAgICBbW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5j
ZXNdIHNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb246dXJsXTsKKyAgICBbW1ttYWluRnJhbWUgd2Vi
Vmlld10gcHJlZmVyZW5jZXNdIHNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb246dXJsXTsKIH0KIAog
dm9pZCBUZXN0UnVubmVyOjpzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
VmFsdWVSZWYgbm9kZU9iamVjdCwgSlNTdHJpbmdSZWYgdmFsdWUpCkBAIC02MDksNyArNjA5LDcg
QEAgdm9pZCBUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UoSlNTdAogICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gdmFsdWVDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgdmFsdWUpKTsKICAgICBOU1N0cmluZyAqdmFsdWVOUyA9IChfX2Jy
aWRnZSBOU1N0cmluZyAqKXZhbHVlQ0YuZ2V0KCk7CiAKLSAgICBbW1dlYlByZWZlcmVuY2VzIHN0
YW5kYXJkUHJlZmVyZW5jZXNdIF9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhWYWx1ZTp2YWx1ZU5T
IGZvcktleTprZXlOU107CisgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBf
c2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dmFsdWVOUyBmb3JLZXk6a2V5
TlNdOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnJlbW92ZUFsbFZpc2l0ZWRMaW5rcygpCkBAIC03
MDAsNyArNzAwLDcgQEAgYm9vbCBUZXN0UnVubmVyOjpmaW5kU3RyaW5nKEpTQ29udGV4dFJlZgog
CiB2b2lkIFRlc3RSdW5uZXI6OnNldENhY2hlTW9kZWwoaW50IGNhY2hlTW9kZWwpCiB7Ci0gICAg
W1tXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXSBzZXRDYWNoZU1vZGVsOihXZWJD
YWNoZU1vZGVsKWNhY2hlTW9kZWxdOworICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJl
bmNlc10gc2V0Q2FjaGVNb2RlbDooV2ViQ2FjaGVNb2RlbCljYWNoZU1vZGVsXTsKIH0KIAogYm9v
bCBUZXN0UnVubmVyOjppc0NvbW1hbmRFbmFibGVkKEpTU3RyaW5nUmVmIG5hbWUpCkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjY4NjQ4KQorKysg
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAg
LTYwLDcgKzYwLDcgQEAgLSAodm9pZClyZXNldFdpbmRvd09yaWdpbgogCiAtICh2b2lkKXJlc2V0
VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nOihjb25zdCBXVFI6OlRlc3RPcHRpb25zJilv
cHRpb25zCiB7Ci0gICAgbV9lbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkID0gb3B0aW9u
cy5lbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkOworICAgIG1fZW5hYmxlRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uTG9hZCA9IG9wdGlvbnMuZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9h
ZCgpOwogfQogCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgc2V0RnJhbWU6KE5T
UmVjdClmcmFtZQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRy
ZWUuY3BwCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVt
cFJlbmRlclRyZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MDYsMjggKzkwNiwzNyBAQCBzdGF0
aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0CiAKICAgICBwcmVmZXJlbmNlcy0+
c2V0Rm9udFNtb290aGluZyhGb250U21vb3RoaW5nVHlwZVN0YW5kYXJkKTsKIAorICAgIHByZWZz
UHJpdmF0ZS0+c2V0V2ViU1FMRW5hYmxlZCh0cnVlKTsKKwogICAgIHByZWZzUHJpdmF0ZS0+c2V0
RGF0YVRyYW5zZmVySXRlbXNFbmFibGVkKFRSVUUpOwogICAgIHByZWZzUHJpdmF0ZS0+Y2xlYXJO
ZXR3b3JrTG9hZGVyU2Vzc2lvbigpOwogCiAgICAgc2V0QWx3YXlzQWNjZXB0Q29va2llcyhmYWxz
ZSk7CiB9CiAKK3N0YXRpYyBib29sIGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKHN0ZDo6
c3RyaW5nIGtleSwgYm9vbCBkZWZhdWx0VmFsdWUsIGNvbnN0IFdUUjo6VGVzdE9wdGlvbnMmIG9w
dGlvbnMpCit7CisgICAgYXV0byBpdCA9IG9wdGlvbnMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJl
cygpLmZpbmQoa2V5KTsKKyAgICBpZiAoaXQgIT0gb3B0aW9ucy5ib29sV2ViUHJlZmVyZW5jZUZl
YXR1cmVzKCkuZW5kKCkpCisgICAgICAgIHJldHVybiBpdC0+c2Vjb25kOworICAgIHJldHVybiBk
ZWZhdWx0VmFsdWU7Cit9CisKIHN0YXRpYyB2b2lkIHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9w
dGlvbnMoSVdlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcywgY29uc3QgV1RSOjpUZXN0T3B0aW9u
cyYgb3B0aW9ucykKIHsKICAgICBDT01QdHI8SVdlYlByZWZlcmVuY2VzUHJpdmF0ZTg+IHByZWZz
UHJpdmF0ZSB7IFF1ZXJ5LCBwcmVmZXJlbmNlcyB9OwogCi0gICAgcHJlZnNQcml2YXRlLT5zZXRN
ZW51SXRlbUVsZW1lbnRFbmFibGVkKG9wdGlvbnMuZW5hYmxlTWVudUl0ZW1FbGVtZW50KTsKLSAg
ICBwcmVmc1ByaXZhdGUtPnNldEtleWdlbkVsZW1lbnRFbmFibGVkKG9wdGlvbnMuZW5hYmxlS2V5
Z2VuRWxlbWVudCk7Ci0gICAgcHJlZnNQcml2YXRlLT5zZXRNb2Rlcm5NZWRpYUNvbnRyb2xzRW5h
YmxlZChvcHRpb25zLmVuYWJsZU1vZGVybk1lZGlhQ29udHJvbHMpOwotICAgIHByZWZzUHJpdmF0
ZS0+c2V0SW5zcGVjdG9yQWRkaXRpb25zRW5hYmxlZChvcHRpb25zLmVuYWJsZUluc3BlY3RvckFk
ZGl0aW9ucyk7Ci0gICAgcHJlZnNQcml2YXRlLT5zZXRSZXF1ZXN0SWRsZUNhbGxiYWNrRW5hYmxl
ZChvcHRpb25zLmVuYWJsZVJlcXVlc3RJZGxlQ2FsbGJhY2spOwotICAgIHByZWZzUHJpdmF0ZS0+
c2V0QXN5bmNDbGlwYm9hcmRBUElFbmFibGVkKG9wdGlvbnMuZW5hYmxlQXN5bmNDbGlwYm9hcmRB
UEkpOwotICAgIHByZWZzUHJpdmF0ZS0+c2V0Q29udGFjdFBpY2tlckFQSUVuYWJsZWQob3B0aW9u
cy5lbmFibGVDb250YWN0UGlja2VyQVBJKTsKLSAgICBwcmVmc1ByaXZhdGUtPnNldFdlYlNRTEVu
YWJsZWQob3B0aW9ucy5lbmFibGVXZWJTUUwpOwotICAgIHByZWZzUHJpdmF0ZS0+c2V0QWxsb3dU
b3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyhvcHRpb25zLmFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVS
THMpOwotICAgIHByZWZlcmVuY2VzLT5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKG9wdGlvbnMu
dXNlRXBoZW1lcmFsU2Vzc2lvbik7Ci0gICAgcHJlZmVyZW5jZXMtPnNldFVzZXNQYWdlQ2FjaGUo
b3B0aW9ucy5lbmFibGVCYWNrRm9yd2FyZENhY2hlKTsKLSAgICBwcmVmc1ByaXZhdGUtPnNldENT
U09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWQob3B0aW9ucy5lbmFibGVDU1NPTVZpZXdTbW9v
dGhTY3JvbGxpbmcpOworICAgIHByZWZlcmVuY2VzLT5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVk
KG9wdGlvbnMudXNlRXBoZW1lcmFsU2Vzc2lvbigpKTsKKyAgICBwcmVmZXJlbmNlcy0+c2V0VXNl
c1BhZ2VDYWNoZShib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiVXNlc0JhY2tGb3J3YXJk
Q2FjaGUiLCBmYWxzZSwgb3B0aW9ucykpOworICAgIHByZWZzUHJpdmF0ZS0+c2V0TWVudUl0ZW1F
bGVtZW50RW5hYmxlZChib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiTWVudUl0ZW1FbGVt
ZW50RW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKSk7CisgICAgcHJlZnNQcml2YXRlLT5zZXRLZXln
ZW5FbGVtZW50RW5hYmxlZChib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiS2V5Z2VuRWxl
bWVudEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucykpOworICAgIHByZWZzUHJpdmF0ZS0+c2V0TW9k
ZXJuTWVkaWFDb250cm9sc0VuYWJsZWQoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIk1v
ZGVybk1lZGlhQ29udHJvbHNFbmFibGVkIiwgdHJ1ZSwgb3B0aW9ucykpOworICAgIHByZWZzUHJp
dmF0ZS0+c2V0SW5zcGVjdG9yQWRkaXRpb25zRW5hYmxlZChib29sV2ViUHJlZmVyZW5jZUZlYXR1
cmVWYWx1ZSgiSW5zcGVjdG9yQWRkaXRpb25zRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKSk7Cisg
ICAgcHJlZnNQcml2YXRlLT5zZXRSZXF1ZXN0SWRsZUNhbGxiYWNrRW5hYmxlZChib29sV2ViUHJl
ZmVyZW5jZUZlYXR1cmVWYWx1ZSgiUmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWQiLCBmYWxzZSwg
b3B0aW9ucykpOworICAgIHByZWZzUHJpdmF0ZS0+c2V0QXN5bmNDbGlwYm9hcmRBUElFbmFibGVk
KGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJBc3luY0NsaXBib2FyZEFQSUVuYWJsZWQi
LCBmYWxzZSwgb3B0aW9ucykpOworICAgIHByZWZzUHJpdmF0ZS0+c2V0Q29udGFjdFBpY2tlckFQ
SUVuYWJsZWQoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkNvbnRhY3RQaWNrZXJBUElF
bmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldEFsbG93VG9w
TmF2aWdhdGlvblRvRGF0YVVSTHMoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkFsbG93
VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMiLCB0cnVlLCBvcHRpb25zKSk7CisgICAgcHJlZnNQcml2
YXRlLT5zZXRDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkKGJvb2xXZWJQcmVmZXJlbmNl
RmVhdHVyZVZhbHVlKCJDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkIiwgZmFsc2UsIG9w
dGlvbnMpKTsKIH0KIAogc3RhdGljIFN0cmluZyBhcHBsaWNhdGlvbklkKCkKQEAgLTk3Myw5ICs5
ODIsOSBAQCBzdGF0aWMgdm9pZCBzZXRKU0NPcHRpb25zKGNvbnN0IFdUUjo6VGVzCiAgICAgICAg
IHNhdmVkT3B0aW9ucy5jbGVhcigpOwogICAgIH0KIAotICAgIGlmIChvcHRpb25zLmpzY09wdGlv
bnMubGVuZ3RoKCkpIHsKKyAgICBpZiAoIW9wdGlvbnMuanNjT3B0aW9ucygpLmVtcHR5KCkpIHsK
ICAgICAgICAgSlNDOjpPcHRpb25zOjpkdW1wQWxsT3B0aW9uc0luQUxpbmUoc2F2ZWRPcHRpb25z
KTsKLSAgICAgICAgSlNDOjpPcHRpb25zOjpzZXRPcHRpb25zKG9wdGlvbnMuanNjT3B0aW9ucy5j
X3N0cigpKTsKKyAgICAgICAgSlNDOjpPcHRpb25zOjpzZXRPcHRpb25zKG9wdGlvbnMuanNjT3B0
aW9ucygpLmNfc3RyKCkpOwogICAgIH0KIH0KIApAQCAtMTE2OCw3ICsxMTc3LDcgQEAgc3RhdGlj
IGJvb2wgaGFuZGxlQ29udHJvbENvbW1hbmQoY29uc3QgYwogCiBzdGF0aWMgV1RSOjpUZXN0T3B0
aW9ucyB0ZXN0T3B0aW9uc0ZvclRlc3QoY29uc3QgV1RSOjpUZXN0Q29tbWFuZCYgY29tbWFuZCkK
IHsKLSAgICBXVFI6OlRlc3RGZWF0dXJlcyBmZWF0dXJlczsKKyAgICBXVFI6OlRlc3RGZWF0dXJl
cyBmZWF0dXJlcyA9IFdUUjo6VGVzdE9wdGlvbnM6OmRlZmF1bHRzKCk7CiAgICAgV1RSOjptZXJn
ZShmZWF0dXJlcywgV1RSOjpoYXJkY29kZWRGZWF0dXJlc0Jhc2VkT25QYXRoRm9yVGVzdChjb21t
YW5kKSk7CiAgICAgV1RSOjptZXJnZShmZWF0dXJlcywgV1RSOjpmZWF0dXJlRGVmYXVsdHNGcm9t
VGVzdEhlYWRlckZvclRlc3QoY29tbWFuZCwgV1RSOjpUZXN0T3B0aW9uczo6a2V5VHlwZU1hcHBp
bmcoKSkpOwogCkBAIC0xMjI5LDcgKzEyMzgsNyBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0
IHN0cmluZyYgaW5wdXRMCiAKICAgICA6OmdUZXN0UnVubmVyID0gVGVzdFJ1bm5lcjo6Y3JlYXRl
KHRlc3RVUkwuZGF0YSgpLCBjb21tYW5kLmV4cGVjdGVkUGl4ZWxIYXNoKTsKICAgICA6OmdUZXN0
UnVubmVyLT5zZXRDdXN0b21UaW1lb3V0KGNvbW1hbmQudGltZW91dC5taWxsaXNlY29uZHMoKSk7
Ci0gICAgOjpnVGVzdFJ1bm5lci0+c2V0RHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyKGNvbW1hbmQu
ZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIHx8IG9wdGlvbnMuZHVtcEpTQ29uc29sZUxvZ0luU3Rk
RXJyKTsKKyAgICA6OmdUZXN0UnVubmVyLT5zZXREdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoY29t
bWFuZC5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgfHwgb3B0aW9ucy5kdW1wSlNDb25zb2xlTG9n
SW5TdGRFcnIoKSk7CiAKICAgICB0b3BMb2FkaW5nRnJhbWUgPSBudWxscHRyOwogICAgIGRvbmUg
PSBmYWxzZTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
CShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIxLDE3ICs5MjEsMTYgQEAgdm9pZCBUZXN0Q29u
dHJvbGxlcjo6cmVzZXRQcmVmZXJlbmNlc1RvQwogICAgIHBsYXRmb3JtUmVzZXRQcmVmZXJlbmNl
c1RvQ29uc2lzdGVudFZhbHVlcygpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1
ZV0gOiBvcHRpb25zLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKLSAgICAgICAgV0tQcmVm
ZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleShwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5n
ZXQoKSk7CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5n
KHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKIAogICAgIGZvciAoY29uc3Qg
YXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5kb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMo
KSkKLSAgICAgICAgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5KHByZWZlcmVuY2Vz
LCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldERvdWJs
ZVZhbHVlRm9yS2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQo
KSk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMudWludDMy
V2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCi0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXRVSW50MzJW
YWx1ZUZvcktleShwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CisgICAgICAg
IFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVyZW5jZXMs
IHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2
YWx1ZV0gOiBvcHRpb25zLnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAgICAgICBX
S1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkocHJlZmVyZW5jZXMsIHRvV0sodmFsdWUp
LmdldCgpLCB0b1dLKGtleSkuZ2V0KCkpOwotCisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRTdHJp
bmdWYWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVyZW5jZXMsIHRvV0sodmFsdWUpLmdldCgpLCB0
b1dLKGtleSkuZ2V0KCkpOwogfQogCiBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9D
b25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZXNldFN0YWdlIHJl
c2V0U3RhZ2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411711</attachid>
            <date>2020-10-18 11:53:52 -0700</date>
            <delta_ts>2020-10-18 12:53:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201018115351.patch</filename>
            <type>text/plain</type>
            <size>70133</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvU2NyaXB0cy9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvU2NyaXB0cy9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiCShyZXZpc2lv
biAyNjg2NDgpCisrKyBTb3VyY2UvV1RGL1NjcmlwdHMvR2VuZXJhdGVQcmVmZXJlbmNlcy5yYgko
d29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw3IEBAIGNsYXNzIFByZWZlcmVuY2UKICAgYXR0
cl9hY2Nlc3NvciA6Y29uZGl0aW9uCiAgIGF0dHJfYWNjZXNzb3IgOmhpZGRlbgogICBhdHRyX2Fj
Y2Vzc29yIDpkZWZhdWx0VmFsdWVzCisgIGF0dHJfYWNjZXNzb3IgOmV4cG9zZWQKIAogICBkZWYg
aW5pdGlhbGl6ZShuYW1lLCBvcHRzLCBmcm9udGVuZCkKICAgICBAbmFtZSA9IG5hbWUKQEAgLTEx
Myw2ICsxMTQsNyBAQCBjbGFzcyBQcmVmZXJlbmNlCiAgICAgQGNvbmRpdGlvbiA9IG9wdHNbImNv
bmRpdGlvbiJdCiAgICAgQGhpZGRlbiA9IG9wdHNbImhpZGRlbiJdIHx8IGZhbHNlCiAgICAgQGRl
ZmF1bHRWYWx1ZXMgPSBvcHRzWyJkZWZhdWx0VmFsdWUiXVtmcm9udGVuZF0KKyAgICBAZXhwb3Nl
ZCA9ICFvcHRzWyJleHBvc2VkIl0gb3Igb3B0c1siZXhwb3NlZCJdLmluY2x1ZGU/KGZyb250ZW5k
KQogICBlbmQKIAogICBkZWYgbmFtZUxvd2VyCkBAIC0yMDQsNyArMjA2LDcgQEAgY2xhc3MgUHJl
ZmVyZW5jZXMKICAgICAgICAgaWYgIW9wdGlvbnNbIndlYmNvcmVCaW5kaW5nIl0gJiYgb3B0aW9u
c1siZGVmYXVsdFZhbHVlIl0uc2l6ZSAhPSAzCiAgICAgICAgICAgcmFpc2UgIkVSUk9SOiBQcmVm
ZXJlbmNlcyBib3VuZCB0byBXZWJDb3JlOjpTZXR0aW5ncyBtdXN0IGhhdmUgZGVmYXVsdCB2YWx1
ZXMgZm9yIGFsbCBmcm9udGVuZHM6ICN7bmFtZX0iCiAgICAgICAgIGVuZAotICAgICAgICBpZiAh
b3B0aW9uc1siZXhwb3NlZCJdIG9yIG9wdGlvbnNbImV4cG9zZWQiXS5pbmNsdWRlPyhAZnJvbnRl
bmQpCisgICAgICAgIGlmIG9wdGlvbnNbImRlZmF1bHRWYWx1ZSJdLmluY2x1ZGU/KEBmcm9udGVu
ZCkKICAgICAgICAgICBwcmVmZXJlbmNlID0gUHJlZmVyZW5jZS5uZXcobmFtZSwgb3B0aW9ucywg
QGZyb250ZW5kKQogICAgICAgICAgIEBwcmVmZXJlbmNlcyA8PCBwcmVmZXJlbmNlCiAgICAgICAg
ICAgcmVzdWx0IDw8IHByZWZlcmVuY2UKSW5kZXg6IFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJl
bmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAkocmV2aXNp
b24gMjY4NjQ4KQorKysgU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVu
Y2VzSW50ZXJuYWwueWFtbAkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsNyBAQCBBc3luY0Zy
YW1lU2Nyb2xsaW5nRW5hYmxlZDoKICAgd2ViY29yZU9uQ2hhbmdlOiBzZXROZWVkc1JlbGF5b3V0
QWxsRnJhbWVzCiAgIGh1bWFuUmVhZGFibGVOYW1lOiAiQXN5bmMgRnJhbWUgU2Nyb2xsaW5nIgog
ICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJQZXJmb3JtIGZyYW1lIHNjcm9sbGluZyBvZmYg
dGhlIG1haW4gdGhyZWFkIgorICBleHBvc2VkOiBbIFdlYktpdCBdCiAgIGRlZmF1bHRWYWx1ZToK
ICAgICBXZWJLaXRMZWdhY3k6CiAgICAgICBkZWZhdWx0OiBmYWxzZQpAQCAtOTYsNiArOTcsNyBA
QCBBc3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZDoKICAgd2ViY29yZU9uQ2hhbmdlOiBzZXRO
ZWVkc1JlbGF5b3V0QWxsRnJhbWVzCiAgIGh1bWFuUmVhZGFibGVOYW1lOiAiQXN5bmMgT3ZlcmZs
b3cgU2Nyb2xsaW5nIgogICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJQZXJmb3JtIG92ZXJm
bG93IHNjcm9sbGluZyBvZmYgdGhlIG1haW4gdGhyZWFkIgorICBleHBvc2VkOiBbIFdlYktpdCBd
CiAgIGRlZmF1bHRWYWx1ZToKICAgICBXZWJLaXRMZWdhY3k6CiAgICAgICBkZWZhdWx0OiBmYWxz
ZQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMTAtMTcgIFNhbSBXZWlu
aWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFtUZXN0aW5nXSBDb252ZXJ0IER1bXBS
ZW5kZXJUcmVlIHRvIHVzZSBnZW5lcmF0ZWQgdGVzdCBoZWFkZXIgb3B0aW9ucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3ODgwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIFdLUHJlZmVyZW5j
ZXNTZXQqVmFsdWVGb3JLZXkgU1BJIHRvIFdLUHJlZmVyZW5jZXNTZXQqVmFsdWVGb3JLZXlGb3JU
ZXN0aW5nCisgICAgICAgIHRvIG1ha2UgaXQgY2xlYXIgd2hhdCB0aGV5IGFyZSB1c2VkIGZvciBh
bmQgZm9yIGNvbnNpc3RlbmN5IHdpdGggV2ViS2l0TGVnYWN5LgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldEJv
b2xWYWx1ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJs
ZVZhbHVlRm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0VUludDMy
VmFsdWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdW
YWx1ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1
ZUZvcktleSk6IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVG
b3JLZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9y
S2V5KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktl
eSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQ
cml2YXRlLmg6CisKIDIwMjAtMTAtMTYgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIEludHJvZHVjZSBSZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkgdG8gbWFuYWdlIHRoZSByZXNvdXJjZXMgaW4gdGhlIEdQVSBQcm9jZXNz
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2Vz
LmNwcAkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tQcmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDIyICs3OCwyMiBAQCB2b2lk
IFdLUHJlZmVyZW5jZXNTZXRJbnRlcm5hbERlYnVnRmVhdHVyCiAgICAgdG9JbXBsKHByZWZlcmVu
Y2VzUmVmKS0+c2V0SW50ZXJuYWxEZWJ1Z0ZlYXR1cmVFbmFibGVkRm9yS2V5KHRvV1RGU3RyaW5n
KGludGVybmFsRGVidWdGZWF0dXJlS2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5j
ZXNTZXRCb29sVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9v
bCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVl
Rm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZh
bHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0
Qm9vbFZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1By
ZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNl
c1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdLUHJlZmVyZW5jZXNT
ZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNl
c1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZl
cmVuY2VzUmVmKS0+c2V0Qm9vbFZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHZhbHVlKTsK
IH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKK3Zv
aWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVu
Y2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQog
ewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldFVJbnQzMlZhbHVlRm9yS2V5KHRvV1RG
U3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFs
dWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFs
dWUsIFdLU3RyaW5nUmVmIGtleSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9y
S2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1Jl
ZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZikt
PnNldFN0cmluZ1ZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHRvV1RGU3RyaW5nKHZhbHVl
KSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2Vz
UmVmUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU2LDEwICs1NiwxMCBAQCBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzUmVz
ZXRBbGxJbnRlCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0SW50ZXJuYWxEZWJ1Z0Zl
YXR1cmVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiwgYm9vbCwgV0tTdHJpbmdSZWYpOwogCiAvLyBU
aGUgZm9sbG93aW5nIGdlbmVyaWMgc2V0dGVyIGZ1bmN0aW9ucyBhcmUgb25seSBpbnRlbmRlZCBm
b3IgdXNlIGJ5IHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUuCi1XS19FWFBPUlQgdm9pZCBXS1ByZWZl
cmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYs
IGJvb2wgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7Ci1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVu
Y2VzU2V0RG91YmxlVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwg
ZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJl
bmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYs
IHVpbnQzMl90IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVm
ZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIFdLU3RyaW5nUmVmIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQg
V0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1Jl
ZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VYUE9S
VCB2b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVm
ZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkp
OworV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVz
dGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1aW50MzJfdCB2YWx1ZSwgV0tT
dHJpbmdSZWYga2V5KTsKK1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1
ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJp
bmdSZWYgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7CiAKIC8vIEZvciBUZXN0IFJ1bm5lciBVc2Ug
b25seS4KIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNSZXNldFRlc3RSdW5uZXJPdmVycmlk
ZXMoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7CkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAyMC0xMC0xNyAg
U2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1Rlc3RpbmddIENvbnZl
cnQgRHVtcFJlbmRlclRyZWUgdG8gdXNlIGdlbmVyYXRlZCB0ZXN0IGhlYWRlciBvcHRpb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc4ODAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgYSBz
ZXQgb2Ygc2V0dGVycyB0byBmb3IgRHVtcFJlbmRlclRyZWUgdG8gdXNlIHdoZW4gc2V0dGluZyBw
cmVmZXJlbmNlcworICAgICAgICBieSBzdHJpbmcuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzLm1tOgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBfc3dpdGNoTmV0d29ya0xv
YWRlclRvTmV3VGVzdGluZ1Nlc3Npb25dKToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3Nl
dEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTpdKToKKyAgICAg
ICAgKCtbV2ViUHJlZmVyZW5jZXMgX2NsZWFyTmV0d29ya0xvYWRlclNlc3Npb25dKToKKyAgICAg
ICAgKC1bV2ViUHJlZmVyZW5jZXMgX3NldEJvb2xQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1
ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXRVSW50MzJQcmVmZXJl
bmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVu
Y2VzIF9zZXREb3VibGVQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6Cisg
ICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dp
dGhWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXRQcmVmZXJl
bmNlRm9yVGVzdFdpdGhWYWx1ZTpmb3JLZXk6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmll
dy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKwogMjAyMC0xMC0xNyAgU2FtIFdlaW5pZyAgPHdl
aW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQ29udmVydCBwcmVmZXJlbmNlcyBpbiBXZWJQcmVm
ZXJlbmNlc1ByaXZhdGUuaCB0byB1c2UgQHByb3BlcnR5IHN5bnRheCB0byBtYWtlIHRoZW0gbW9y
ZSBtYW5hZ2VhYmxlCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TY3JpcHRzL1ByZWZl
cmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVyZXMubW0uZXJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1NjcmlwdHMvUHJlZmVyZW5j
ZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5tbS5lcmIJKHJl
dmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1NjcmlwdHMvUHJlZmVy
ZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5tbS5lcmIJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
ICsgKE5TQXJyYXk8V2ViRmVhdHVyZSAqPiAqKV9leHBlcmltZW50YWxGZWF0dXJlcwogewogICAg
IHN0YXRpYyBOU0FycmF5PFdlYkZlYXR1cmUgKj4gKmZlYXR1cmVzID0gQFsKLTwlLSBmb3IgQHBy
ZWYgaW4gQGV4cGVyaW1lbnRhbEZlYXR1cmVzIGRvIC0lPgorPCUtIGZvciBAcHJlZiBpbiBAZXhw
ZXJpbWVudGFsRmVhdHVyZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3NlZCB9IGRvIC0lPgogPCUtIGlm
IEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5k
IC0lPgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU2NyaXB0cy9QcmVmZXJlbmNlc1Rl
bXBsYXRlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsRmVhdHVyZXMubW0uZXJiCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
V2ViUHJlZmVyZW5jZXNJbnRlcm5hbEZlYXR1cmVzLm1tLmVyYgkocmV2aXNpb24gMjY4NjQ4KQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9X
ZWJQcmVmZXJlbmNlc0ludGVybmFsRmVhdHVyZXMubW0uZXJiCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw3ICszNyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiArIChOU0FycmF5PFdlYkZlYXR1
cmUgKj4gKilfaW50ZXJuYWxGZWF0dXJlcwogewogICAgIHN0YXRpYyBOU0FycmF5PFdlYkZlYXR1
cmUgKj4gKmZlYXR1cmVzID0gQFsKLTwlLSBmb3IgQHByZWYgaW4gQGludGVybmFsRmVhdHVyZXMg
ZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGluIEBpbnRlcm5hbEZlYXR1cmVzLnNlbGVjdCB7IHxwfCBw
LmV4cG9zZWQgfSBkbyAtJT4KIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYgPCU9IEBw
cmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViVmlld1ByZWZlcmVuY2VzQ2hhbmdl
ZEdlbmVyYXRlZC5tbS5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
U2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJWaWV3UHJlZmVyZW5jZXNDaGFuZ2VkR2Vu
ZXJhdGVkLm1tLmVyYgkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJWaWV3UHJlZmVyZW5jZXNDaGFuZ2Vk
R2VuZXJhdGVkLm1tLmVyYgkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW1w
b3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKIAorI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNEZWZpbml0
aW9ucy5oIgogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2Vi
Vmlld0RhdGEuaCIKICNpbXBvcnQgPFdlYkNvcmUvRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmg+
CkBAIC00NCw3ICs0NSwxMSBAQAogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0g
QHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgorPCUtIGlmIEBwcmVmLmV4cG9zZWQgLSU+
CisgICAgc2V0dGluZ3Muc2V0PCU9IEBwcmVmLndlYmNvcmVOYW1lVXBwZXIgJT4oREVGQVVMVF9W
QUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4pOworPCUtIGVsc2UgLSU+CiAgICAgc2V0dGluZ3Mu
c2V0PCU9IEBwcmVmLndlYmNvcmVOYW1lVXBwZXIgJT4oW3ByZWZlcmVuY2VzIDwlPSBAcHJlZi5w
cmVmZXJlbmNlQWNjZXNzb3IgJT46QCI8JT0gQHByZWYucHJlZmVyZW5jZUtleSAlPiJdKTsKKzwl
LSBlbmQgLSU+CiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2VuZGlmCiA8JS0gZW5kIC0l
PgpAQCAtNTQsNyArNTksMTEgQEAKIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYgPCU9
IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KKzwlLSBpZiBAcHJlZi5leHBvc2VkIC0l
PgorICAgIFdlYkNvcmU6OkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0PCU9IEBwcmVmLndl
YmNvcmVOYW1lVXBwZXIgJT4oREVGQVVMVF9WQUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4pOwor
PCUtIGVsc2UgLSU+CiAgICAgV2ViQ29yZTo6RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpzZXQ8
JT0gQHByZWYud2ViY29yZU5hbWVVcHBlciAlPihbcHJlZmVyZW5jZXMgPCU9IEBwcmVmLnByZWZl
cmVuY2VBY2Nlc3NvciAlPjpAIjwlPSBAcHJlZi5wcmVmZXJlbmNlS2V5ICU+Il0pOworPCUtIGVu
ZCAtJT4KIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjZW5kaWYKIDwlLSBlbmQgLSU+CkBA
IC02NCw3ICs3MywxMiBAQAogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHBy
ZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgorPCUtIGlmIEBwcmVmLmV4cG9zZWQgLSU+Cisg
ICAgc2V0dGluZ3Muc2V0PCU9IEBwcmVmLndlYmNvcmVOYW1lVXBwZXIgJT4oREVGQVVMVF9WQUxV
RV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4pOworICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0PCU9IEBwcmVmLndlYmNvcmVOYW1lVXBwZXIgJT4o
REVGQVVMVF9WQUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4pOworPCUtIGVsc2UgLSU+CiAgICAg
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXQ8JT0g
QHByZWYud2ViY29yZU5hbWVVcHBlciAlPihbcHJlZmVyZW5jZXMgPCU9IEBwcmVmLnByZWZlcmVu
Y2VBY2Nlc3NvciAlPjpAIjwlPSBAcHJlZi5wcmVmZXJlbmNlS2V5ICU+Il0pOworPCUtIGVuZCAt
JT4KIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjZW5kaWYKIDwlLSBlbmQgLSU+CkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMu
bW0JKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViUHJlZmVyZW5jZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2NjAsMjYgKzE2NjAsNiBAQCAr
ICh2b2lkKV9zZXRJQkNyZWF0b3JJRDooTlNTdHJpbmcgKilzdHJpCiAgICAgW29sZCByZWxlYXNl
XTsKIH0KIAotKyAodm9pZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb24K
LXsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFdlYlRocmVhZExvY2soKTsKLSNlbmRp
ZgotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lv
bigpOwotfQotCi0rICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uCi17Ci0gICAgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5kZWxldGVBbGxD
b29raWVzKCk7Ci19Ci0KLSsgKHZvaWQpX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNv
b2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeQotewotICAg
IFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdl
KCk7Ci0gICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90IGNh
bGxlZCBiZWZvcmVoYW5kLgotICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQ
b2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKLX0KLQogLSAoQk9PTClpc0RPTVBh
c3RlQWxsb3dlZAogewogICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktpdERP
TVBhc3RlQWxsb3dlZFByZWZlcmVuY2VLZXldOwpAQCAtMTk2NiwxMSArMTk0Niw2IEBAIC0gKHZv
aWQpd2lsbEFkZFRvV2ViVmlldwogICAgICsrX3ByaXZhdGUtPm51bVdlYlZpZXdzOwogfQogCi0t
ICh2b2lkKV9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZSBm
b3JLZXk6KE5TU3RyaW5nICopa2V5Ci17Ci0gICAgW3NlbGYgX3NldFN0cmluZ1ZhbHVlOnZhbHVl
IGZvcktleTprZXldOwotfQotCiAtICh2b2lkKXNldEZ1bGxTY3JlZW5FbmFibGVkOihCT09MKWZs
YWcKIHsKICAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmZsYWcgZm9yS2V5OldlYktpdEZ1bGxTY3Jl
ZW5FbmFibGVkUHJlZmVyZW5jZUtleV07CkBAIC0zMDEzLDYgKzI5ODgsNTEgQEAgLSAodm9pZClf
c2V0RW5hYmxlZDooQk9PTCl2YWx1ZSBmb3JGZWF0dQogCiBAZW5kCiAKKworQGltcGxlbWVudGF0
aW9uIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlVGVzdGluZykKKworKyAodm9pZClfc3dpdGNo
TmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb24KK3sKKyNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQorICAgIFdlYlRocmVhZExvY2soKTsKKyNlbmRpZgorICAgIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOworfQorCisrICh2b2lkKV9zZXRD
dXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tp
ZUFjY2VwdFBvbGljeSlwb2xpY3kKK3sKKyAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFn
ZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0
b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpOworICAgIEFTU0VSVChjb29raWVTdG9yYWdl
KTsgLy8gV2lsbCBmYWlsIHdoZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05l
d1Rlc3RpbmdTZXNzaW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KKyAgICBDRkhUVFBD
b29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBv
bGljeSk7Cit9CisKKysgKHZvaWQpX2NsZWFyTmV0d29ya0xvYWRlclNlc3Npb24KK3sKKyAgICBO
ZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmRlbGV0ZUFs
bENvb2tpZXMoKTsKK30KKworLSAodm9pZClfc2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0aW5nV2l0
aFZhbHVlOihCT09MKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2VsZiBf
c2V0Qm9vbFZhbHVlOnZhbHVlIGZvcktleTprZXldOworfQorCistICh2b2lkKV9zZXRVSW50MzJQ
cmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZToodWludDMyX3QpdmFsdWUgZm9yS2V5OihOU1N0
cmluZyAqKWtleQoreworICAgIFtzZWxmIF9zZXRJbnRlZ2VyVmFsdWU6dmFsdWUgZm9yS2V5Omtl
eV07Cit9CisKKy0gKHZvaWQpX3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVl
Oihkb3VibGUpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9zZXRG
bG9hdFZhbHVlOnZhbHVlIGZvcktleTprZXldOworfQorCistICh2b2lkKV9zZXRTdHJpbmdQcmVm
ZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZSBmb3JLZXk6KE5TU3Ry
aW5nICopa2V5Cit7CisgICAgW3NlbGYgX3NldFN0cmluZ1ZhbHVlOnZhbHVlIGZvcktleTprZXld
OworfQorCitAZW5kCisKIEBpbXBsZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0
ZVByZWZlcmVuY2VzQ29udmVydGVkVG9XZWJGZWF0dXJlKQogCiAtIChCT09MKXVzZXJHZXN0dXJl
UHJvbWlzZVByb3BhZ2F0aW9uRW5hYmxlZApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCShyZXZpc2lvbiAy
Njg2NDgpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2Vz
UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSwxMyArODksNiBAQCBAaW50ZXJmYWNlIFdl
YlByZWZlcmVuY2VzIChXZWJQcml2YXRlKQogKyAodm9pZClfc2V0SW5pdGlhbERlZmF1bHRUZXh0
RW5jb2RpbmdUb1N5c3RlbUVuY29kaW5nOwogKyAodm9pZClfc2V0SUJDcmVhdG9ySUQ6KE5TU3Ry
aW5nICopc3RyaW5nOwogCi0vLyBGb3IgRHVtcFJlbmRlclRyZWUgdXNlIG9ubHkuCi0rICh2b2lk
KV9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbjsKLSsgKHZvaWQpX3NldEN1
cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2ll
QWNjZXB0UG9saWN5KWNvb2tpZUFjY2VwdFBvbGljeTsKLSsgKHZvaWQpX2NsZWFyTmV0d29ya0xv
YWRlclNlc3Npb247Ci0vLyBVc2VkIHRvIHNldCBwcmVmZXJlbmNlIHNwZWNpZmllZCBpbiB0aGUg
dGVzdCB2aWEgTGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKC4uKS4KLS0g
KHZvaWQpX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZhbHVlOihOU1N0cmluZyAqKXZhbHVlIGZv
cktleTooTlNTdHJpbmcgKilrZXk7Ci0KICsgKHZvaWQpc2V0V2ViS2l0TGlua1RpbWVWZXJzaW9u
OihpbnQpdmVyc2lvbjsKIAogLy8gRm9yIFdlYlZpZXcncyB1c2Ugb25seS4KQEAgLTMxMCw2ICsz
MDMsMTggQEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZUZlYQogLSAodm9p
ZClfc2V0RW5hYmxlZDooQk9PTCl2YWx1ZSBmb3JGZWF0dXJlOihXZWJGZWF0dXJlICopZmVhdHVy
ZTsKIEBlbmQKIAorQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVRlc3Rpbmcp
CisrICh2b2lkKV9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbjsKKysgKHZv
aWQpX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTooTlNI
VFRQQ29va2llQWNjZXB0UG9saWN5KWNvb2tpZUFjY2VwdFBvbGljeTsKKysgKHZvaWQpX2NsZWFy
TmV0d29ya0xvYWRlclNlc3Npb247CisKKy0gKHZvaWQpX3NldEJvb2xQcmVmZXJlbmNlRm9yVGVz
dGluZ1dpdGhWYWx1ZTooQk9PTCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OworLSAodm9p
ZClfc2V0VUludDMyUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KHVpbnQzMl90KXZhbHVl
IGZvcktleTooTlNTdHJpbmcgKilrZXk7CistICh2b2lkKV9zZXREb3VibGVQcmVmZXJlbmNlRm9y
VGVzdGluZ1dpdGhWYWx1ZTooZG91YmxlKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXk7Cist
ICh2b2lkKV9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTooTlNTdHJpbmcg
Kil2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OworCitAZW5kCisKIC8vIEZJWE1FOiBJZiB0
aGVzZSBhcmUgbm90IHVzZWQgYW55d2hlcmUsIHdlIHNob3VsZCByZW1vdmUgdGhlbSBhbmQgb25s
eSB1c2UgV2ViRmVhdHVyZSBtZWNoYW5pc20gZm9yIHRoZSBwcmVmZXJlbmNlLgogQGludGVyZmFj
ZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVByZWZlcmVuY2VzQ29udmVydGVkVG9XZWJGZWF0
dXJlKQogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgdXNlckdlc3R1cmVQcm9taXNlUHJvcGFn
YXRpb25FbmFibGVkOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gMjY4NjU5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsOTkgQEAKKzIwMjAtMTAtMTcgIFNhbSBXZWluaWcgIDx3ZWluaWdA
YXBwbGUuY29tPgorCisgICAgICAgIFtUZXN0aW5nXSBDb252ZXJ0IER1bXBSZW5kZXJUcmVlIHRv
IHVzZSBnZW5lcmF0ZWQgdGVzdCBoZWFkZXIgb3B0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3ODgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRnVsbHkgc3VwcG9ydCB1c2Ugb2YgYW55IFdlYlBy
ZWZlcmVuY2VzKi55YW1sIHByZWZlcmVuY2UgaW4gRHVtcFJlbmRlclRyZWUgKGZvciBtYWNPUykg
Ynk6CisgICAgICAgICAgICAtIE1vdmluZyBEdW1wUmVuZGVyVHJlZSdzIFRlc3RPcHRpb25zIHRv
IGJlIGZ1bGx5IGJhY2tlZCBieSBUZXN0RmVhdHVyZXMgbGlrZSBXZWJLaXRUZXN0UnVubm5lci4K
KyAgICAgICAgICAgIC0gQWRvcHRpbmcgbmV3IFdlYlByZWZlcmVuY2VzIFNQSSBmb3Igc2V0dGlu
ZyBhbnkgcHJlZmVyZW5jZSBieSBrZXkuCisgICAgICAgICAgICAtIEdlbmVyYXRpbmcgbWFwcGlu
ZyBmcm9tIFdlYlByZWZlcmVuY2VzKi55YW1sIHRvIFdlYktpdExlZ2FjeSBrZXkgbmFtZXMuCisK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgR2VuZXJh
dGUgVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcAorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAg
ICAgICAgQWRkIG5ldyB0ZW1wbGF0ZSBmaWxlLCBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExl
Z2FjeUtleU1hcHBpbmcuY3BwLmVyYiwgYW5kIGFkZAorICAgICAgICBEZXJpdmVkU291cmNlcy5t
YWtlIGFuZCBnZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2gsIHNvIHRoYXQgaWYgZWl0aGVyIG9m
IHRoZW0gY2hhbmdlCisgICAgICAgIHRoZSBEZXJpdmVkU291cmNlcy5tYWtlIGlzIGFjdHVhbGx5
IGludm9rZWQuCisgCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgIEFkZHMgVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRM
ZWdhY3lLZXlNYXBwaW5nLmNwcC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0Rlcml2ZWRT
b3VyY2VzLm1ha2U6CisgICAgICAgIFN3aXRjaCBnZW5lcmF0aW9uIG9mIHByZWZlcmVuY2VzIHRv
IHVzZSBhIHN0YXRpYyBwYXR0ZXJuIHRvIGF2b2lkIGlzc3VlcyB3aXRoIGNpcmN1bGFyIGRlcGVu
ZGVuY2llcy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZHMgVGVzdE9wdGlvbnNHZW5lcmF0ZWRX
ZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Nj
cmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdh
Y3lLZXlNYXBwaW5nLmNwcC5lcmI6IEFkZGVkLgorICAgICAgICBUZW1wbGF0ZSBmb3IgZ2VuZXJh
dGluZyBtYXBwaW5nIGZyb20gV2ViUHJlZmVyZW5jZXMqLnlhbWwga2V5IG5hbWVzIHRvIFdlYktp
dExlZ2FjeSBrZXkgbmFtZXMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9u
cy5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuaDoKKyAgICAgICAg
U3dpdGNoIHRvIGEgbW9kZWwgbW9yZSBzaW1pbGFyIHRvIHRoYXQgaW4gV2ViS2l0VGVzdFJ1bm5l
ciwgd2hlcmUgVGVzdE9wdGlvbnMgc3RvcmVzIHRoZSBwYXNzZWQgaW4gCisgICAgICAgIFRlc3RG
ZWF0dXJlcyBhbmQgb25seSBleHBvc2VzIHZhbHVlcyB0aGF0IGhhdmUgYmVlbiBzZXQgb3IgZGVm
YXVsdCB2YWx1ZXMgd2hlbiBuZWVkZWQuCisgICAgICAgIAorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHRvTlMpOgorICAgICAgICBBZGQg
aGVscGVyIHRvIGNvbnZlcnQgZnJvbSBhIHN0ZDo6c3RyaW5nIHRvIGFuIE5TU3RyaW5nLgorCisg
ICAgICAgIChjcmVhdGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KToKKyAgICAgICAgTm93IHRo
YXQgd2UgYXJlbid0IG5lY2Nlc3NhcmlseSBzZXR0aW5nIGFsbCBwcmVmZXJlbmNlcyBlYWNoIHRl
c3QsIHdlIG5lZWQgdG8gZnVsbHkgcmVzZXQgdGhlCisgICAgICAgIFdlYlByZWZlcmVuY2VzIG9u
IGVhY2ggcnVuIGJ5IGNyZWF0aW5nIGEgbmV3IG9uZS4gVGhpcyBtZWFucyByZW1vdmluZyB0aGUg
dXNlcyBvZiAKKyAgICAgICAgW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdLCBh
bmQgaW5zdGVhZCBncmFiYmluZyB0aGUgV2ViVmlldydzIHByZWZlcmVuY2VzIHdoZW4gbmVlZGVk
LgorCisgICAgICAgIChyZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKToKKyAg
ICAgICAgTW92ZXMgc29tZSBzY2F0dGVyZWQgZGVmYXVsdCB2YWx1ZSBzZXR0aW5nIGhlcmUuIFJl
bW92ZSBhc3NlcnQgdGhhdCBpcyBubyBsb25nZXIgYWNjdXJhdGUKKyAgICAgICAgbm93IHRoYXQg
d2UgZG9uJ3QgdXNlIHN0YW5kYXJkUHJlZmVyZW5jZXMgYW5kIHdpbGwgbm90IGhhdmUgc2V0IHRo
aXMgdmFsdWUgYnkgdGhpcyBwb2ludC4KKworICAgICAgICAoc2V0V2ViUHJlZmVyZW5jZXNGb3JU
ZXN0T3B0aW9ucyk6CisgICAgICAgIFVzZSBuZXcgX3NldCpQcmVmZXJlbmNlRm9yVGVzdGluZ1dp
dGhWYWx1ZTpmb3JLZXkqIFNQSSB0byBzZXQgYW55IHNwZWNpZmllZCBwcmVmZXJuZWNlcy4KKwor
ICAgICAgICAoc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXNGb3JUZXN0aW5nKToKKyAgICAg
ICAgTW92ZSBkZWZhdWx0cyBzZXQgaGVyZSB0byB0aGUgbW9yZSBhcHByb3ByaWF0ZSBhbmQgY2Vu
dHJhbGl6ZWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcy4KKworICAgICAg
ICAoc2V0SlNDT3B0aW9ucyk6CisgICAgICAgIFVzZSBuZXcgZ2V0dGVyIGZ1bmN0aW9uIHJhdGhl
ciB0aGFuIGRpcmVjdCBtZW1iZXIgYWNjZXNzLgorCisgICAgICAgIChyZXNldFdlYlZpZXdUb0Nv
bnNpc3RlbnRTdGF0ZSk6CisgICAgICAgIEZ1bGx5IHJlc2V0IHByZWZlcm5lY2VzIGJ5IGFsbG9j
YXRpbmcgYSBuZXcgV2ViUHJlZmVyZW5jZXMgb24gcmVzZXQgYW5kIHVzZSBuZXcgVGVzdE9wdGlv
bnMgZ2V0dGVyCisgICAgICAgIGZ1bmN0aW9ucy4KKworICAgICAgICAodGVzdE9wdGlvbnNGb3JU
ZXN0KToKKyAgICAgICAgU2VlZCBUZXN0RmVhdHVyZXMgd2l0aCBkZWZhdWx0IGdsb2JhbCB2YWx1
ZXMsIG1hdGNoaW5nIHRoZSBpZGlvbSBpbiBXZWJLaXRUZXN0UnVubmVyLgorCisgICAgICAgIChy
dW5UZXN0KToKKyAgICAgICAgVXNlIG5ldyBnZXR0ZXIgZnVuY3Rpb24gcmF0aGVyIHRoYW4gZGly
ZWN0IG1lbWJlciBhY2Nlc3MuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1
bm5lck1hYy5tbToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0RW5hYmxl
ZCk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKToKKyAg
ICAgICAgKFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZSk6CisgICAgICAgIChUZXN0UnVu
bmVyOjpzZXRDYWNoZU1vZGVsKToKKyAgICAgICAgQWNjZXNzIHRoZSBjb3JyZWN0IFdlYlByZWZl
cmVuY2VzIHZpYSB0aGUgV2ViVmlldywgcmF0aGVyIHRoYW4gYXNzdW1pbmcgc3RhbmRhcmRQcmVm
ZXJlbmNlcworICAgICAgICBhcmUgYmVpbmcgdXNlZC4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL21hYy9VSURlbGVnYXRlLm1tOgorICAgICAgICAoLVtVSURlbGVnYXRlIHJlc2V0VG9Db25z
aXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nOl0pOgorICAgICAgICBVc2UgbmV3IGdldHRlciBmdW5j
dGlvbiByYXRoZXIgdGhhbiBkaXJlY3QgbWVtYmVyIGFjY2Vzcy4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChyZXNldFdlYlByZWZl
cmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKGJvb2xXZWJQcmVmZXJlbmNlRmVh
dHVyZVZhbHVlKToKKyAgICAgICAgKHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMpOgor
ICAgICAgICAoc2V0SlNDT3B0aW9ucyk6CisgICAgICAgICh0ZXN0T3B0aW9uc0ZvclRlc3QpOgor
ICAgICAgICAocnVuVGVzdCk6CisgICAgICAgIEtlZXAgV2luZG93cyBEdW1wUmVuZGVyVHJlZSB3
b3JraW5nIHdpdGggdGhlIG5ldyBUZXN0T3B0aW9ucyBieSBnZXR0aW5nIGZlYXR1cmUgdmFsdWVz
IGJ5CisgICAgICAgIHN0cmluZyBrZXlzIHdpdGggc3BlY2lmaWVkIGRlZmF1bHRzIGFuZCBhZG9w
dGluZyBuZXcgZ2V0dGVyIGZ1bmN0aW9ucy4gSW4gdGhlIGZ1dHVyZSwgd2UKKyAgICAgICAgd2ls
bCBhZGQgc2ltaWxhciBTUEkgYXMgd2FzIGFkZGVkIGZvciBtYWMgV2ViS2l0TGVnYWN5IHRvIFdp
bmRvd3MgV2ViS2l0TGVnYWN5IHRvIGF2b2lkIHRoaXMuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OnJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICBVcGRhdGUgZm9y
IHJlbmFtZWQgV0tQcmVmZXJlbmNlc1JlZiBTUEkuCisKIDIwMjAtMTAtMTcgIFBoaWxpcHBlIE5v
cm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtGbGF0cGFrIFNES10gZmxh
dHBha3V0aWxzLnB5IHJlcG9ydHMgIktleUVycm9yOiAnZ2NjJyIgZXJyb3IgaWYgdXNpbmcgd2l0
aCBpY2VjYyBhbmQgdG9vbGNoYWlucyBhcmVuJ3QgZ2VuZXJhdGVkIHlldApJbmRleDogVG9vbHMv
RHVtcFJlbmRlclRyZWUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJl
bmRlclRyZWUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBA
IGxpc3QoQVBQRU5EIER1bXBSZW5kZXJUcmVlX1BSSVZBVEVfSU5DTFUKICkKIAogc2V0KER1bXBS
ZW5kZXJUcmVlX1dFQl9QUkVGRVJFTkNFU19URU1QTEFURVMKKyAgICAke0R1bXBSZW5kZXJUcmVl
X0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdl
YktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYgogICAgICR7RHVtcFJlbmRlclRyZWVfRElSfS9T
Y3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVy
YgogKQogCkBAIC01MywxMiArNTQsMTMgQEAgc2V0KER1bXBSZW5kZXJUcmVlX1dFQl9QUkVGRVJF
TkNFUwogc2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzKCR7RHVtcFJlbmRlclRyZWVfV0VCX1BS
RUZFUkVOQ0VTfSBQUk9QRVJUSUVTIEdFTkVSQVRFRCBUUlVFKQogCiBhZGRfY3VzdG9tX2NvbW1h
bmQoCi0gICAgT1VUUFVUICR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vVGVz
dE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmgKKyAgICBPVVRQVVQgJHtEdW1wUmVuZGVyVHJlZV9ERVJJ
VkVEX1NPVVJDRVNfRElSfS9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBp
bmcuY3BwICR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRLZXlzLmgKICAgICBERVBFTkRTICR7RHVtcFJlbmRlclRyZWVfV0VCX1BSRUZFUkVO
Q0VTX1RFTVBMQVRFU30gJHtEdW1wUmVuZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVN9IFdURl9Db3B5
UHJlZmVyZW5jZXMKLSAgICBDT01NQU5EICR7UlVCWV9FWEVDVVRBQkxFfSAke1dURl9TQ1JJUFRT
X0RJUn0vR2VuZXJhdGVQcmVmZXJlbmNlcy5yYiAtLWZyb250ZW5kIFdlYktpdExlZ2FjeSAtLWJh
c2UgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWwgLS1k
ZWJ1ZyAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNEZWJ1Zy55
YW1sIC0tZXhwZXJpbWVudGFsICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVm
ZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIC0taW50ZXJuYWwgJHtXVEZfU0NSSVBUU19ESVJ9L1By
ZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbCAtLW91dHB1dERpciAiJHtEdW1w
UmVuZGVyVHJlZV9ERVJJVkVEX1NPVVJDRVNfRElSfSIgLS10ZW1wbGF0ZSAke0R1bXBSZW5kZXJU
cmVlX0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRl
ZEtleXMuaC5lcmIKKyAgICBDT01NQU5EICR7UlVCWV9FWEVDVVRBQkxFfSAke1dURl9TQ1JJUFRT
X0RJUn0vR2VuZXJhdGVQcmVmZXJlbmNlcy5yYiAtLWZyb250ZW5kIFdlYktpdExlZ2FjeSAtLWJh
c2UgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWwgLS1k
ZWJ1ZyAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNEZWJ1Zy55
YW1sIC0tZXhwZXJpbWVudGFsICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVm
ZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIC0taW50ZXJuYWwgJHtXVEZfU0NSSVBUU19ESVJ9L1By
ZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbCAtLW91dHB1dERpciAiJHtEdW1w
UmVuZGVyVHJlZV9ERVJJVkVEX1NPVVJDRVNfRElSfSIgLS10ZW1wbGF0ZSAke0R1bXBSZW5kZXJU
cmVlX0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRl
ZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYiAtLXRlbXBsYXRlICR7RHVtcFJlbmRlclRy
ZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVk
S2V5cy5oLmVyYgogICAgIFZFUkJBVElNKQogCiBsaXN0KEFQUEVORCBEdW1wUmVuZGVyVHJlZV9T
T1VSQ0VTCisgICAgJHtEdW1wUmVuZGVyVHJlZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9UZXN0T3B0
aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwCiAgICAgJHtEdW1wUmVuZGVy
VHJlZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaAogKQog
CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTYsNyAr
NiwxMCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUvCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUvd3RmL1NjcmlwdHMvUHJlZmVyZW5jZXMv
V2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCiAkKFBST0pFQ1RfRElSKS8uLi9UZXN0UnVubmVy
U2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCiAk
KFBST0pFQ1RfRElSKS9CaW5kaW5ncy9Db2RlR2VuZXJhdG9yRHVtcFJlbmRlclRyZWUucG0KKyQo
UFJPSkVDVF9ESVIpL0Rlcml2ZWRTb3VyY2VzLm1ha2UKICQoUFJPSkVDVF9ESVIpL1NjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCiskKFBS
T0pFQ1RfRElSKS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJh
dGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiCiskKFBST0pFQ1RfRElSKS9TY3JpcHRz
L2dlbmVyYXRlLWRlcml2ZWQtc291cmNlcy5zaAogJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19E
SVIpL0NvZGVHZW5lcmF0b3IucG0KICQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9JRExB
dHRyaWJ1dGVzLmpzb24KICQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9JRExQYXJzZXIu
cG0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVy
VHJlZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkod29ya2luZyBjb3B5KQpAQCAt
MiwzICsyLDQgQEAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9EdW1wUmVu
ZGVyVHJlZS9KU1VJU2NyaXB0Q29udHJvbGxlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9EdW1wUmVuZGVyVHJlZS9KU1VJU2NyaXB0Q29udHJvbGxlci5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlv
bnNHZW5lcmF0ZWRLZXlzLmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9E
dW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcu
Y3BwCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlz
aW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTIzLDI5ICsyMywxMiBAQAogCiBSVUJZID0gcnVieQogCi1XRUJf
UFJFRkVSRU5DRVMgPSBcCi0gICAgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2Vz
L1dlYlByZWZlcmVuY2VzLnlhbWwgXAotICAgICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVm
ZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0RlYnVnLnlhbWwgXAotICAgICR7V1RGX0JVSUxEX1NDUklQ
VFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIFwKLSAg
ICAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRl
cm5hbC55YW1sIFwKLSMKLQotV0VCX1BSRUZFUkVOQ0VTX1RFTVBMQVRFUyA9IFwKLSAgICAkKER1
bXBSZW5kZXJUcmVlKS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2Vu
ZXJhdGVkS2V5cy5oLmVyYiBcCi0jCi1XRUJfUFJFRkVSRU5DRVNfRklMRVMgPSAkKGJhc2VuYW1l
ICQobm90ZGlyICQoV0VCX1BSRUZFUkVOQ0VTX1RFTVBMQVRFUykpKQotV0VCX1BSRUZFUkVOQ0VT
X1BBVFRFUk5TID0gJChzdWJzdCAuZXJiLCwkKFdFQl9QUkVGRVJFTkNFU19GSUxFUykpCi0KLWFs
bCA6ICQoV0VCX1BSRUZFUkVOQ0VTX0ZJTEVTKQotCi0kKFdFQl9QUkVGRVJFTkNFU19QQVRURVJO
UykgOiAkKFdURl9CVUlMRF9TQ1JJUFRTX0RJUikvR2VuZXJhdGVQcmVmZXJlbmNlcy5yYiAkKFdF
Ql9QUkVGRVJFTkNFU19URU1QTEFURVMpICQoV0VCX1BSRUZFUkVOQ0VTKQotCSQoUlVCWSkgJDwg
LS1mcm9udGVuZCBXZWJLaXRMZWdhY3kgLS1iYXNlICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9Q
cmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlcy55YW1sIC0tZGVidWcgJHtXVEZfQlVJTERfU0NSSVBU
U19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRh
bCAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBl
cmltZW50YWwueWFtbCAtLWludGVybmFsICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJl
bmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwgJChhZGRwcmVmaXggLS10ZW1wbGF0ZSAs
ICQoV0VCX1BSRUZFUkVOQ0VTX1RFTVBMQVRFUykpCi0KLQogVUlTQ1JJUFRDT05URVhUX0RJUiA9
ICQoRHVtcFJlbmRlclRyZWUpLy4uL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0Jp
bmRpbmdzCitEVU1QUkVOREVSVFJFRV9QUkVGRVJFTkNFU19URU1QTEFURVNfRElSID0gJChEdW1w
UmVuZGVyVHJlZSkvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcwogCiBWUEFUSCA9IFwKICAg
ICAkKFVJU0NSSVBUQ09OVEVYVF9ESVIpIFwKKyAgICAkKERVTVBSRU5ERVJUUkVFX1BSRUZFUkVO
Q0VTX1RFTVBMQVRFU19ESVIpIFwKICMKIAogVUlDT05URVhUX0lOVEVSRkFDRVMgPSBcCkBAIC03
MSwzICs1NCwyMSBAQCBhbGwgOiBcCiAgICAgJChVSUNPTlRFWFRfSU5URVJGQUNFUzolPUpTJS5o
KSBcCiAgICAgJChVSUNPTlRFWFRfSU5URVJGQUNFUzolPUpTJS5jcHApIFwKICMKKworCitXRUJf
UFJFRkVSRU5DRVMgPSBcCisgICAgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2Vz
L1dlYlByZWZlcmVuY2VzLnlhbWwgXAorICAgICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVm
ZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0RlYnVnLnlhbWwgXAorICAgICR7V1RGX0JVSUxEX1NDUklQ
VFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIFwKKyAg
ICAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRl
cm5hbC55YW1sIFwKKyMKKworV0VCX1BSRUZFUkVOQ0VTX0dFTkVSQVRFRF9GSUxFUyA9IFwKKyAg
ICBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwIFwKKyAgICBU
ZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaCBcCisjCisKK2FsbCA6ICQoV0VCX1BSRUZFUkVOQ0VT
X0dFTkVSQVRFRF9GSUxFUykKKworJChXRUJfUFJFRkVSRU5DRVNfR0VORVJBVEVEX0ZJTEVTKSA6
ICUgOiAlLmVyYiAkKFdFQl9QUkVGRVJFTkNFUykgJChXVEZfQlVJTERfU0NSSVBUU19ESVIpL0dl
bmVyYXRlUHJlZmVyZW5jZXMucmIKKwkkKFJVQlkpICQoV1RGX0JVSUxEX1NDUklQVFNfRElSKS9H
ZW5lcmF0ZVByZWZlcmVuY2VzLnJiIC0tZnJvbnRlbmQgV2ViS2l0TGVnYWN5IC0tYmFzZSAke1dU
Rl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCAtLWRl
YnVnICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0Rl
YnVnLnlhbWwgLS1leHBlcmltZW50YWwgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVu
Y2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgLS1pbnRlcm5hbCAke1dURl9CVUlM
RF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sIC0t
dGVtcGxhdGUgJDwKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHAJKHJldmlz
aW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNDQgQEAKIAogbmFtZXNwYWNlIFdUUiB7CiAKK2NvbnN0
IFRlc3RGZWF0dXJlcyYgVGVzdE9wdGlvbnM6OmRlZmF1bHRzKCkKK3sKKyAgICBzdGF0aWMgVGVz
dEZlYXR1cmVzIGZlYXR1cmVzOworICAgIGlmIChmZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZl
YXR1cmVzLmVtcHR5KCkpIHsKKyAgICAgICAgZmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0
dXJlcyA9IHsKKyAgICAgICAgICAgIC8vIFRoZXNlIGFyZSBXZWJQcmVmZXJlbmNlIHZhbHVlcyB0
aGF0IG11c3QgYWx3YXlzIGJlIHNldCBhcyB0aGV5IG1heQorICAgICAgICAgICAgLy8gZGlmZmVy
IGZyb20gdGhlIGRlZmF1bHQgc2V0IGluIHRoZSBXZWJQcmVmZXJlbmNlcyoueWFtbCBjb25maWd1
cmF0aW9uLgorICAgICAgICAgICAgeyAiQWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNr
Rm9yQ3JlZGVudGlhbHMiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQWxsb3dUb3BOYXZpZ2F0
aW9uVG9EYXRhVVJMcyIsIHRydWUgfSwKKyAgICAgICAgICAgIHsgIkFjY2VsZXJhdGVkRHJhd2lu
Z0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQXR0YWNobWVudEVsZW1lbnRFbmFi
bGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIlVzZXNCYWNrRm9yd2FyZENhY2hlIiwgZmFs
c2UgfSwKKyAgICAgICAgICAgIHsgIkNvbG9yRmlsdGVyRW5hYmxlZCIsIGZhbHNlIH0sCisgICAg
ICAgICAgICB7ICJJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAg
ICAgIHsgIkludGVyc2VjdGlvbk9ic2VydmVyRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAg
ICB7ICJLZXlnZW5FbGVtZW50RW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJNZW51
SXRlbUVsZW1lbnRFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIk1vZGVybk1lZGlh
Q29udHJvbHNFbmFibGVkIiwgdHJ1ZSB9LAorCisgICAgICAgICAgICB7ICJDU1NMb2dpY2FsRW5h
YmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJMaW5lSGVpZ2h0VW5pdHNFbmFibGVkIiwg
ZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIlNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXNF
bmFibGVkIiwgdHJ1ZSB9LAorICAgICAgICAgICAgeyAiTGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJ
bnRlZ3JhdGlvbkVuYWJsZWQiLCB0cnVlIH0sCisKKyAgICAgICAgICAgIHsgIkFkQ2xpY2tBdHRy
aWJ1dGlvbkVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQXNwZWN0UmF0aW9PZklt
Z0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQXN5
bmNDbGlwYm9hcmRBUElFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkNTU09NVmll
d1Ntb290aFNjcm9sbGluZ0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQ29udGFj
dFBpY2tlckFQSUVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQ29yZU1hdGhNTEVu
YWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiUmVxdWVzdElkbGVDYWxsYmFja0VuYWJs
ZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiUmVzaXplT2JzZXJ2ZXJFbmFibGVkIiwgZmFs
c2UgfSwKKyAgICAgICAgICAgIHsgIldlYkdQVUVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICB9
OworICAgIH0KKyAgICByZXR1cm4gZmVhdHVyZXM7Cit9CisKIGNvbnN0IHN0ZDo6dW5vcmRlcmVk
X21hcDxzdGQ6OnN0cmluZywgVGVzdEhlYWRlcktleVR5cGU+JiBUZXN0T3B0aW9uczo6a2V5VHlw
ZU1hcHBpbmcoKQogewogICAgIHN0YXRpYyBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpz
dHJpbmcsIFRlc3RIZWFkZXJLZXlUeXBlPiBtYXAgewpAQCAtNDcsNTYgKzg1LDQ3IEBAIGNvbnN0
IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgVGUKICAgICByZXR1cm4gbWFwOwogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCBzZXRWYWx1ZUlmU2V0SW5NYXAoVCYg
dmFsdWVUb1NldCwgc3RkOjpzdHJpbmcga2V5LCBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3Rk
OjpzdHJpbmcsIFQ+JiBtYXApCitib29sIFRlc3RPcHRpb25zOjp3ZWJWaWV3SXNDb21wYXRpYmxl
V2l0aE9wdGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpIGNvbnN0Cit7CisgICAgaWYg
KG1fZmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLmV4
cGVyaW1lbnRhbEZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVh
dHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5pbnRlcm5h
bERlYnVnRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJl
cy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5ib29sV2Vi
UHJlZmVyZW5jZUZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVh
dHVyZXMuZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5k
b3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAobV9mZWF0dXJlcy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMgIT0gb3B0aW9ucy5tX2Zl
YXR1cmVzLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmIChtX2ZlYXR1cmVzLnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcyAhPSBvcHRp
b25zLm1fZmVhdHVyZXMuc3RyaW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0dXJlcyAhPSBv
cHRpb25zLm1fZmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0dXJlcykKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLmRvdWJsZVRlc3RSdW5uZXJGZWF0dXJlcyAhPSBv
cHRpb25zLm1fZmVhdHVyZXMuZG91YmxlVGVzdFJ1bm5lckZlYXR1cmVzKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuc3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVzICE9
IG9wdGlvbnMubV9mZWF0dXJlcy5zdHJpbmdUZXN0UnVubmVyRmVhdHVyZXMpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy5zdHJpbmdWZWN0b3JUZXN0UnVubmVyRmVh
dHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLnN0cmluZ1ZlY3RvclRlc3RSdW5uZXJGZWF0dXJl
cykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBUIGZlYXR1cmVWYWx1ZShzdGQ6OnN0cmluZyBrZXksIFQgZGVmYXVsdFZh
bHVlLCBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFQ+JiBtYXApCiB7CiAg
ICAgYXV0byBpdCA9IG1hcC5maW5kKGtleSk7Ci0gICAgaWYgKGl0ID09IG1hcC5lbmQoKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIHZhbHVlVG9TZXQgPSBpdC0+c2Vjb25kOwotfQotCi1UZXN0T3B0
aW9uczo6VGVzdE9wdGlvbnMoVGVzdEZlYXR1cmVzIHRlc3RGZWF0dXJlcykKLXsKLSAgICBzZXRW
YWx1ZUlmU2V0SW5NYXAoYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVu
dGlhbHMsICJBbGxvd0Nyb3NzT3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyIs
IHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlm
U2V0SW5NYXAoYWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcywgIkFsbG93VG9wTmF2aWdhdGlv
blRvRGF0YVVSTHMiLCB0ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0g
ICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUFjY2VsZXJhdGVkRHJhd2luZywgIkFjY2VsZXJh
dGVkRHJhd2luZ0VuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJl
cyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUF0dGFjaG1lbnRFbGVtZW50LCAiQXR0
YWNobWVudEVsZW1lbnRFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVh
dHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVCYWNrRm9yd2FyZENhY2hlLCAi
VXNlc0JhY2tGb3J3YXJkQ2FjaGUiLCB0ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0
dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUNvbG9yRmlsdGVyLCAiQ29sb3JG
aWx0ZXJFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwot
ICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVJbnNwZWN0b3JBZGRpdGlvbnMsICJJbnNwZWN0
b3JBZGRpdGlvbnNFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVy
ZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVJbnRlcnNlY3Rpb25PYnNlcnZlciwg
IkludGVyc2VjdGlvbk9ic2VydmVyRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVy
ZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlS2V5Z2VuRWxlbWVu
dCwgIktleWdlbkVsZW1lbnRFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNl
RmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVNZW51SXRlbUVsZW1lbnQs
ICJNZW51SXRlbUVsZW1lbnRFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNl
RmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVNb2Rlcm5NZWRpYUNvbnRy
b2xzLCAiTW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuYm9vbFdlYlBy
ZWZlcmVuY2VGZWF0dXJlcyk7Ci0KLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uTG9hZCwgImVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQiLCB0
ZXN0RmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldElu
TWFwKGR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciwgImR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciIs
IHRlc3RGZWF0dXJlcy5ib29sVGVzdFJ1bm5lckZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0
SW5NYXAobGF5ZXJCYWNrZWRXZWJWaWV3LCAibGF5ZXJCYWNrZWRXZWJWaWV3IiwgdGVzdEZlYXR1
cmVzLmJvb2xUZXN0UnVubmVyRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcCh1c2VF
cGhlbWVyYWxTZXNzaW9uLCAidXNlRXBoZW1lcmFsU2Vzc2lvbiIsIHRlc3RGZWF0dXJlcy5ib29s
VGVzdFJ1bm5lckZlYXR1cmVzKTsKLQotICAgIHNldFZhbHVlSWZTZXRJbk1hcChhZGRpdGlvbmFs
U3VwcG9ydGVkSW1hZ2VUeXBlcywgImFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzIiwgdGVz
dEZlYXR1cmVzLnN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldElu
TWFwKGpzY09wdGlvbnMsICJqc2NPcHRpb25zIiwgdGVzdEZlYXR1cmVzLnN0cmluZ1Rlc3RSdW5u
ZXJGZWF0dXJlcyk7Ci0KLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQ1NTTG9naWNhbCwg
IkNTU0xvZ2ljYWxFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmludGVybmFsRGVidWdGZWF0dXJlcyk7
Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUxpbmVIZWlnaHRVbml0cywgIkxpbmVIZWln
aHRVbml0c0VuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKTsKLSAg
ICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlU2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmll
cywgInNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXNFbmFibGVkIiwgdGVzdEZlYXR1cmVz
LmludGVybmFsRGVidWdGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGxheW91dEZv
cm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkLCAiTGF5b3V0Rm9ybWF0dGluZ0NvbnRl
eHRJbnRlZ3JhdGlvbkVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVz
KTsKLQotICAgIHNldFZhbHVlSWZTZXRJbk1hcChhZENsaWNrQXR0cmlidXRpb25FbmFibGVkLCAi
QWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0
dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUFzcGVjdFJhdGlvT2ZJbWdGcm9t
V2lkdGhBbmRIZWlnaHQsICJBc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxl
ZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNl
dEluTWFwKGVuYWJsZUFzeW5jQ2xpcGJvYXJkQVBJLCAiQXN5bmNDbGlwYm9hcmRBUElFbmFibGVk
IiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0
SW5NYXAoZW5hYmxlQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nLCAiQ1NTT01WaWV3U21vb3RoU2Ny
b2xsaW5nRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAg
c2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUNvbnRhY3RQaWNrZXJBUEksICJDb250YWN0UGlja2Vy
QVBJRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0
VmFsdWVJZlNldEluTWFwKGVuYWJsZUNvcmVNYXRoTUwsICJDb3JlTWF0aE1MRW5hYmxlZCIsIHRl
c3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFw
KGVuYWJsZVJlcXVlc3RJZGxlQ2FsbGJhY2ssICJSZXF1ZXN0SWRsZUNhbGxiYWNrRW5hYmxlZCIs
IHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldElu
TWFwKGVuYWJsZVJlc2l6ZU9ic2VydmVyLCAiUmVzaXplT2JzZXJ2ZXJFbmFibGVkIiwgdGVzdEZl
YXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5h
YmxlV2ViR1BVLCAiV2ViR1BVRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxGZWF0
dXJlcyk7CisgICAgaWYgKGl0ICE9IG1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT5zZWNv
bmQ7CisgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKK30KKworYm9vbCBUZXN0T3B0aW9uczo6Ym9v
bFRlc3RSdW5uZXJGZWF0dXJlVmFsdWUoc3RkOjpzdHJpbmcga2V5LCBib29sIGRlZmF1bHRWYWx1
ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gZmVhdHVyZVZhbHVlKGtleSwgZGVmYXVsdFZhbHVlLCBt
X2ZlYXR1cmVzLmJvb2xUZXN0UnVubmVyRmVhdHVyZXMpOwogfQogCi1ib29sIFRlc3RPcHRpb25z
Ojp3ZWJWaWV3SXNDb21wYXRpYmxlV2l0aE9wdGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmIG90aGVy
KSBjb25zdAorc3RkOjpzdHJpbmcgVGVzdE9wdGlvbnM6OnN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJl
VmFsdWUoc3RkOjpzdHJpbmcga2V5LCBzdGQ6OnN0cmluZyBkZWZhdWx0VmFsdWUpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG90aGVyLmxheWVyQmFja2VkV2ViVmlldyA9PSBsYXllckJhY2tlZFdlYlZp
ZXcKLSAgICAgICAgJiYgb3RoZXIuanNjT3B0aW9ucyA9PSBqc2NPcHRpb25zOworICAgIHJldHVy
biBmZWF0dXJlVmFsdWUoa2V5LCBkZWZhdWx0VmFsdWUsIG1fZmVhdHVyZXMuc3RyaW5nVGVzdFJ1
bm5lckZlYXR1cmVzKTsKIH0KIAogfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9w
dGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5o
CShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw1MyArMzEsMzkgQEAKIAogbmFtZXNwYWNlIFdUUiB7CiAK
LXN0cnVjdCBUZXN0T3B0aW9ucyB7Ci0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGVzZSBhbmQgcmVw
bGFjZSB3aXRoIGFjY2VzcyB0byBUZXN0RmVhdHVyZXMgc2V0LgotICAgIC8vIFdlYiBQcmVmZXJl
bmNlcwotICAgIGJvb2wgYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVu
dGlhbHMgeyBmYWxzZSB9OwotICAgIGJvb2wgYWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyB7
IHRydWUgfTsKLSAgICBib29sIGVuYWJsZUFjY2VsZXJhdGVkRHJhd2luZyB7IGZhbHNlIH07Ci0g
ICAgYm9vbCBlbmFibGVBdHRhY2htZW50RWxlbWVudCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFi
bGVCYWNrRm9yd2FyZENhY2hlIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUNvbG9yRmlsdGVy
IHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUluc3BlY3RvckFkZGl0aW9ucyB7IGZhbHNlIH07
Ci0gICAgYm9vbCBlbmFibGVJbnRlcnNlY3Rpb25PYnNlcnZlciB7IGZhbHNlIH07Ci0gICAgYm9v
bCBlbmFibGVLZXlnZW5FbGVtZW50IHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZU1lbnVJdGVt
RWxlbWVudCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVNb2Rlcm5NZWRpYUNvbnRyb2xzIHsg
dHJ1ZSB9OwotCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGVzZSBhbmQgcmVwbGFjZSB3aXRoIGFj
Y2VzcyB0byBUZXN0RmVhdHVyZXMgc2V0LgotICAgIC8vIEludGVybmFsIEZlYXR1cmVzCi0gICAg
Ym9vbCBlbmFibGVDU1NMb2dpY2FsIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUxpbmVIZWln
aHRVbml0cyB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVTZWxlY3Rpb25BY3Jvc3NTaGFkb3dC
b3VuZGFyaWVzIHsgdHJ1ZSB9OwotICAgIGJvb2wgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRl
Z3JhdGlvbkVuYWJsZWQgeyB0cnVlIH07Ci0KLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZXNlIGFu
ZCByZXBsYWNlIHdpdGggYWNjZXNzIHRvIFRlc3RGZWF0dXJlcyBzZXQuCi0gICAgLy8gRXhwZXJp
bWVudGFsIEZlYXR1cmVzCi0gICAgYm9vbCBhZENsaWNrQXR0cmlidXRpb25FbmFibGVkIHsgZmFs
c2UgfTsKLSAgICBib29sIGVuYWJsZUFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHQg
eyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQXN5bmNDbGlwYm9hcmRBUEkgeyBmYWxzZSB9Owot
ICAgIGJvb2wgZW5hYmxlQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nIHsgZmFsc2UgfTsKLSAgICBi
b29sIGVuYWJsZUNvbnRhY3RQaWNrZXJBUEkgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQ29y
ZU1hdGhNTCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVSZXF1ZXN0SWRsZUNhbGxiYWNrIHsg
ZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZVJlc2l6ZU9ic2VydmVyIHsgZmFsc2UgfTsKLSAgICBi
b29sIGVuYWJsZVdlYkdQVSB7IGZhbHNlIH07CitjbGFzcyBUZXN0T3B0aW9ucyB7CitwdWJsaWM6
CisgICAgc3RhdGljIGNvbnN0IFRlc3RGZWF0dXJlcyYgZGVmYXVsdHMoKTsKKyAgICBzdGF0aWMg
Y29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBUZXN0SGVhZGVyS2V5VHlwZT4m
IGtleVR5cGVNYXBwaW5nKCk7CiAKLSAgICAvLyBUZXN0IFJ1bm5lciBTcGVjaWZpYyBGZWF0dXJl
cwotICAgIGJvb2wgZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIHsgZmFsc2UgfTsKLSAgICBib29s
IGVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5h
YmxlV2ViU1FMIHsgdHJ1ZSB9OwotICAgIGJvb2wgbGF5ZXJCYWNrZWRXZWJWaWV3IHsgZmFsc2Ug
fTsKLSAgICBib29sIHVzZUVwaGVtZXJhbFNlc3Npb24geyBmYWxzZSB9OwotICAgIHN0ZDo6c3Ry
aW5nIGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzOwotICAgIHN0ZDo6c3RyaW5nIGpzY09w
dGlvbnM7CisgICAgZXhwbGljaXQgVGVzdE9wdGlvbnMoVGVzdEZlYXR1cmVzIGZlYXR1cmVzKQor
ICAgICAgICA6IG1fZmVhdHVyZXMoc3RkOjptb3ZlKGZlYXR1cmVzKSkKKyAgICB7CisgICAgfQog
Ci0gICAgZXhwbGljaXQgVGVzdE9wdGlvbnMoVGVzdEZlYXR1cmVzKTsKICAgICBib29sIHdlYlZp
ZXdJc0NvbXBhdGlibGVXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYpIGNvbnN0OwotICAg
IAotICAgIHN0YXRpYyBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFRlc3RI
ZWFkZXJLZXlUeXBlPiYga2V5VHlwZU1hcHBpbmcoKTsKKworICAgIC8vIFRlc3QgUnVubmVyIFNw
ZWNpZmljIEZlYXR1cmVzCisgICAgYm9vbCBkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoKSBjb25z
dCB7IHJldHVybiBib29sVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZSgiZHVtcEpTQ29uc29sZUxvZ0lu
U3RkRXJyIiwgZmFsc2UpOyB9CisgICAgYm9vbCBlbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25M
b2FkKCkgY29uc3QgeyByZXR1cm4gYm9vbFRlc3RSdW5uZXJGZWF0dXJlVmFsdWUoImVuYWJsZURy
YWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQiLCBmYWxzZSk7IH0KKyAgICBib29sIGxheWVyQmFja2Vk
V2ViVmlldygpIGNvbnN0IHsgcmV0dXJuIGJvb2xUZXN0UnVubmVyRmVhdHVyZVZhbHVlKCJsYXll
ckJhY2tlZFdlYlZpZXciLCBmYWxzZSk7IH0KKyAgICBib29sIHVzZUVwaGVtZXJhbFNlc3Npb24o
KSBjb25zdCB7IHJldHVybiBib29sVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZSgidXNlRXBoZW1lcmFs
U2Vzc2lvbiIsIGZhbHNlKTsgfQorICAgIHN0ZDo6c3RyaW5nIGFkZGl0aW9uYWxTdXBwb3J0ZWRJ
bWFnZVR5cGVzKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZSgi
YWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMiLCB7IH0pOyB9CisgICAgc3RkOjpzdHJpbmcg
anNjT3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIHN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlVmFsdWUo
ImpzY09wdGlvbnMiLCB7IH0pOyB9CisKKyAgICBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3Rk
OjpzdHJpbmcsIGJvb2w+JiBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkgY29uc3QgeyByZXR1
cm4gbV9mZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzOyB9CisgICAgY29uc3Qgc3Rk
Ojp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBkb3VibGU+JiBkb3VibGVXZWJQcmVmZXJlbmNl
RmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzLmRvdWJsZVdlYlByZWZlcmVuY2VG
ZWF0dXJlczsgfQorICAgIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgdWlu
dDMyX3Q+JiB1aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2Zl
YXR1cmVzLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJlczsgfQorICAgIGNvbnN0IHN0ZDo6dW5v
cmRlcmVkX21hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+JiBzdHJpbmdXZWJQcmVmZXJlbmNl
RmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzLnN0cmluZ1dlYlByZWZlcmVuY2VG
ZWF0dXJlczsgfQorCisgICAgc3RhdGljIHN0ZDo6c3RyaW5nIHRvV2ViS2l0TGVnYWN5UHJlZmVy
ZW5jZUtleShjb25zdCBzdGQ6OnN0cmluZyYpOworCitwcml2YXRlOgorICAgIGJvb2wgYm9vbFdl
YlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoc3RkOjpzdHJpbmcga2V5LCBib29sIGRlZmF1bHRWYWx1
ZSkgY29uc3Q7CisgICAgYm9vbCBib29sVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZShzdGQ6OnN0cmlu
ZyBrZXksIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdDsKKyAgICBzdGQ6OnN0cmluZyBzdHJpbmdU
ZXN0UnVubmVyRmVhdHVyZVZhbHVlKHN0ZDo6c3RyaW5nIGtleSwgc3RkOjpzdHJpbmcgZGVmYXVs
dFZhbHVlKSBjb25zdDsKKworICAgIFRlc3RGZWF0dXJlcyBtX2ZlYXR1cmVzOwogfTsKIAogfQpJ
bmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVy
VHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiArMTA5LDcgQEAKIAkJNURCOUFDOUUwRjcyMkMzNjAw
Njg0NjQxIC8qIFdlYktpdFdlaWdodFdhdGNoZXI3MDAudHRmIGluIENvcHkgRm9udCBGaWxlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVGMDk3NzBEQUMzQ0I2MDBDOEI0
RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjcwMC50dGYgKi87IH07CiAJCTVEQjlBQzlGMEY3MjJD
MzYwMDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyODAwLnR0ZiBpbiBDb3B5IEZvbnQgRmls
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc1RjA5NzgwREFDM0NCNjAw
QzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXI4MDAudHRmICovOyB9OwogCQk1REI5QUNBMDBG
NzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjkwMC50dGYgaW4gQ29weSBGb250
IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NUYwOTc5MERBQzND
QjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyOTAwLnR0ZiAqLzsgfTsKKwkJN0M0RjMw
NDAyNTNCOTcwRjAwMzA1NDU4IC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5
TWFwcGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QzRGMzAzRjI1M0I4MzY5MDAzMDU0NTggLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRM
ZWdhY3lLZXlNYXBwaW5nLmNwcCAqLzsgfTsKIAkJN0NGRjlCQkYyNTMzQkIyNDAwMDgwMDlGIC8q
IFRlc3RGZWF0dXJlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3Q0ZGOUJCRTI1MzNCQjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVzLmNwcCAqLzsg
fTsKIAkJN0NGRjlCQzIyNTMzQkMxNjAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRkY5QkMxMjUzM0JDMTYw
MDA4MDA5RiAvKiBUZXN0Q29tbWFuZC5jcHAgKi87IH07CiAJCTgwMDQ1QUVFMTQ3NzE4RTcwMDgy
OTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgwMDQ1QUVDMTQ3NzE4RTcwMDgyOTBB
OCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbSAqLzsgfTsKQEAgLTMzMyw4
ICszMzQsMTIgQEAKIAkJN0M0NDY5N0YyNTM3N0EwMjAwMjQyOTBBIC8qIFRlc3RPcHRpb25zR2Vu
ZXJhdGVkS2V5cy5oLmVyYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNDQ2OTgwMjUzNzdBMDIwMDI0MjkwQSAvKiBj
aGVjay14Y2ZpbGVsaXN0cy5zaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnNoOyBwYXRoID0gImNoZWNrLXhjZmlsZWxpc3RzLnNo
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M0NDY5ODEyNTM3N0EwMjAwMjQyOTBB
IC8qIGdlbmVyYXRlLWRlcml2ZWQtc291cmNlcy5zaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnNoOyBwYXRoID0gImdlbmVyYXRl
LWRlcml2ZWQtc291cmNlcy5zaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDNDQ2
OTg1MjUzNzdFNTIwMDI0MjkwQSAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmg7IHBhdGggPSBUZXN0T3B0aW9uc0dl
bmVyYXRlZEtleXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M0NDY5ODUyNTM3
N0U1MjAwMjQyOTBBIC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0M0RjMwM0YyNTNCODM2OTAwMzA1NDU4IC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0
TGVnYWN5S2V5TWFwcGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXN0T3B0aW9uc0dlbmVy
YXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QzlFMjUwQjI1M0I3OTRBMDA0MTMwMTggLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJL
aXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJL
aXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdDQkJDMzIyMURERkNGOUEwMDc4NkI5RCAvKiBUZXN0T3B0aW9ucy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0T3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3Q0NCQTUxRDI1M0JCOUQzMDBCQjMyQzEgLyogRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQueGNmaWxlbGlzdDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0NDQkE1MUUyNTNCQjlEMzAwQkIz
MkMxIC8qIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0ICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2ZpbGVsaXN0OyBwYXRoID0g
IkRlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0NGRjlCQkQyNTMzQkIyNDAwMDgwMDlGIC8qIFRlc3RGZWF0dXJlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUZXN0RmVhdHVyZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0NGRjlCQkUyNTMzQkIyNDAwMDgwMDlGIC8qIFRlc3RGZWF0dXJlcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUZXN0RmVhdHVyZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
Q0ZGOUJDMDI1MzNCQzE2MDAwODAwOUYgLyogVGVzdENvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VGVzdENvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwMSw2ICs1MDYs
OCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRjE4RTZGMTFE
NkI5QzY0MDAyN0U1NDcgLyogRGVyaXZlZFNvdXJjZXMubWFrZSAqLywKKwkJCQk3Q0NCQTUxRDI1
M0JCOUQzMDBCQjMyQzEgLyogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCAqLywKKwkJ
CQk3Q0NCQTUxRTI1M0JCOUQzMDBCQjMyQzEgLyogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QgKi8sCiAJCQkJN0M0NDY5ODIyNTM3N0MzNDAwMjQyOTBBIC8qIERlcml2ZWQgU291cmNl
cyAqLywKIAkJCQkzMTQ4QTA2NTFFNkY5MEY0MDBEM0IzMTYgLyogVGVzdFJ1bm5lclNoYXJlZCAq
LywKIAkJCQkwRjE4RTZFNzFENkI5QkY1MDAyN0U1NDcgLyogVUlTY3JpcHRDb250ZXh0ICovLApA
QCAtNzcwLDYgKzc3Nyw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAog
CQkJCTdDNDQ2OTdGMjUzNzdBMDIwMDI0MjkwQSAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMu
aC5lcmIgKi8sCisJCQkJN0M5RTI1MEIyNTNCNzk0QTAwNDEzMDE4IC8qIFRlc3RPcHRpb25zR2Vu
ZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiICovLAogCQkJKTsKIAkJCXBhdGgg
PSBQcmVmZXJlbmNlc1RlbXBsYXRlczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03
NzgsNiArNzg2LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJ
N0M0NDY5ODUyNTM3N0U1MjAwMjQyOTBBIC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oICov
LAorCQkJCTdDNEYzMDNGMjUzQjgzNjkwMDMwNTQ1OCAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdl
YktpdExlZ2FjeUtleU1hcHBpbmcuY3BwICovLAogCQkJKTsKIAkJCW5hbWUgPSAiRGVyaXZlZCBT
b3VyY2VzIjsKIAkJCXBhdGggPSBEZXJpdmVkU291cmNlcy9EdW1wUmVuZGVyVHJlZTsKQEAgLTEy
OTEsNiArMTMwMCw3IEBACiAJCQkJN0NGRjlCQzIyNTMzQkMxNjAwMDgwMDlGIC8qIFRlc3RDb21t
YW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDRkY5QkJGMjUzM0JCMjQwMDA4MDA5RiAvKiBU
ZXN0RmVhdHVyZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTMwQTIxRjgyMDUxRDhDNDAwMDhG
RjQyIC8qIFRlc3RPcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdDNEYzMDQwMjUzQjk3
MEYwMDMwNTQ1OCAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwMTMxREEwQzk3NzIwMTAwODczMTdEIC8qIFRlc3RS
dW5uZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCMjQwQzlCMDE0QjAwMTE0MzY5IC8q
IFRlc3RSdW5uZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNEQ0MjM2MTFERDUwNDgyMDA2
NzgyOTAgLyogVGV4dElucHV0Q29udHJvbGxlcklPUy5tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRp
b25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9w
dGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIJKG5vbmV4aXN0ZW50
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9U
ZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYgkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogPCU9IEB3YXJuaW5nICU+CisgKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3RPcHRpb25zLmgiCisKK25h
bWVzcGFjZSBXVFIgeworCitzdGQ6OnN0cmluZyBUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQ
cmVmZXJlbmNlS2V5KGNvbnN0IHN0ZDo6c3RyaW5nJiB3ZWJQcmVmZXJlbmNlc0tleSkKK3sKKyAg
ICBzdGF0aWMgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4gbm9u
U3RhbmRhcmRLZXlzID0geworPCUtIGZvciBAcHJlZiBpbiBAcHJlZmVyZW5jZXMuc2VsZWN0IHsg
fHB8IHAub3B0c1sid2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleSJdIH0gZG8gLSU+CisgICAgICAg
IHsgIjwlPSBAcHJlZi5uYW1lICU+IiwgIjwlPSBAcHJlZi5wcmVmZXJlbmNlS2V5ICU+IiB9LCBc
Cis8JS0gZW5kIC0lPgorICAgIH07CisKKyAgICBhdXRvIGl0ID0gbm9uU3RhbmRhcmRLZXlzLmZp
bmQod2ViUHJlZmVyZW5jZXNLZXkpOworICAgIGlmIChpdCAhPSBub25TdGFuZGFyZEtleXMuZW5k
KCkpCisgICAgICAgIHJldHVybiBpdC0+c2Vjb25kOworCisgICAgcmV0dXJuICJXZWJLaXQiICsg
d2ViUHJlZmVyZW5jZXNLZXk7Cit9CisKK30KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWUubW0JKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI5LDcgKzEy
OSwxMCBAQCBleHRlcm4gIkMiIHsKICNpbXBvcnQgPG1hY2gtby9nZXRzZWN0Lmg+CiB9CiAKLXVz
aW5nIG5hbWVzcGFjZSBzdGQ7CitzdGF0aWMgUmV0YWluUHRyPE5TU3RyaW5nPiB0b05TKGNvbnN0
IHN0ZDo6c3RyaW5nJiBzdHJpbmcpCit7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tOU1N0cmluZyBh
bGxvY10gaW5pdFdpdGhVVEY4U3RyaW5nOnN0cmluZy5jX3N0cigpXSk7Cit9CiAKICNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIEBpbnRlcmZhY2UgRHVtcFJlbmRlclRyZWVBcHBsaWNhdGlvbiA6
IE5TQXBwbGljYXRpb24KQEAgLTE3Nyw3ICsxODAsNyBAQCAtIChXZWJDb3JlOjpGcmFtZSopX21h
aW5Db3JlRnJhbWU7CiBAZW5kCiAjZW5kaWYKIAotc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBz
dHJpbmcmIHRlc3RVUkwpOworc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdGQ6OnN0cmluZyYg
dGVzdFVSTCk7CiAKIC8vIERlY2lkaW5nIHdoZW4gaXQncyBPSyB0byBkdW1wIG91dCB0aGUgc3Rh
dGUgaXMgYSBiaXQgdHJpY2t5LiAgQWxsIHRoZXNlIG11c3QgYmUgdHJ1ZToKIC8vIC0gVGhlcmUg
aXMgbm8gbG9hZCBpbiBwcm9ncmVzcwpAQCAtMjQ4LDcgKzI1MSw3IEBAIHZvaWQgc2V0UGVyc2lz
dGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24KICAgICBwZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRM
b2NhdGlvbiA9IHVybDsKIH0KIAotc3RhdGljIGJvb2wgc2hvdWxkSWdub3JlV2ViQ29yZU5vZGVM
ZWFrcyhjb25zdCBzdHJpbmcmIHVybFN0cmluZykKK3N0YXRpYyBib29sIHNob3VsZElnbm9yZVdl
YkNvcmVOb2RlTGVha3MoY29uc3Qgc3RkOjpzdHJpbmcmIHVybFN0cmluZykKIHsKICAgICBzdGF0
aWMgY2hhciogY29uc3QgaWdub3JlU2V0W10gPSB7CiAgICAgICAgIC8vIEtlZXBpbmcgdGhpcyBp
bmZyYXN0cnVjdHVyZSBhcm91bmQgaW4gY2FzZSB3ZSBldmVyIG5lZWQgaXQgYWdhaW4uCkBAIC0y
NTcsNyArMjYwLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkSWdub3JlV2ViQ29yZU5vZGVMZWFrcwog
CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpZ25vcmVTZXRDb3VudDsgaSsrKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBpZ25vcmUgY2FzZQotICAgICAgICBzdHJpbmcgY3VySWdub3JlKGlnbm9yZVNl
dFtpXSk7CisgICAgICAgIHN0ZDo6c3RyaW5nIGN1cklnbm9yZShpZ25vcmVTZXRbaV0pOwogICAg
ICAgICAvLyBNYXRjaCBhdCB0aGUgZW5kIG9mIHRoZSB1cmxTdHJpbmcuCiAgICAgICAgIGlmICgh
dXJsU3RyaW5nLmNvbXBhcmUodXJsU3RyaW5nLmxlbmd0aCgpIC0gY3VySWdub3JlLmxlbmd0aCgp
LCBjdXJJZ25vcmUubGVuZ3RoKCksIGN1cklnbm9yZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTYxNSw4ICs2MTgsOCBAQCAtIChOU1JlY3QpcmVjdEZvclBhcnQ6KE5TU2Nyb2xsZXJQ
YXJ0KXBhCiAgICAgQk9PTCBpc0hvcml6b250YWwgPSBmcmFtZVJlY3Quc2l6ZS53aWR0aCA+IGZy
YW1lUmVjdC5zaXplLmhlaWdodDsKICAgICBDR0Zsb2F0IHRyYWNrTGVuZ3RoID0gaXNIb3Jpem9u
dGFsID8gYm91bmRzLnNpemUud2lkdGggOiBib3VuZHMuc2l6ZS5oZWlnaHQ7CiAgICAgQ0dGbG9h
dCBtaW5Lbm9iU2l6ZSA9IGlzSG9yaXpvbnRhbCA/IGJvdW5kcy5zaXplLmhlaWdodCA6IGJvdW5k
cy5zaXplLndpZHRoOwotICAgIENHRmxvYXQga25vYkxlbmd0aCA9IG1heChtaW5Lbm9iU2l6ZSwg
c3RhdGljX2Nhc3Q8Q0dGbG9hdD4ocm91bmQodHJhY2tMZW5ndGggKiBbc2VsZiBrbm9iUHJvcG9y
dGlvbl0pKSk7Ci0gICAgQ0dGbG9hdCBrbm9iUG9zaXRpb24gPSBzdGF0aWNfY2FzdDxDR0Zsb2F0
Pigocm91bmQoW3NlbGYgZG91YmxlVmFsdWVdICogKHRyYWNrTGVuZ3RoIC0ga25vYkxlbmd0aCkp
KSk7CisgICAgQ0dGbG9hdCBrbm9iTGVuZ3RoID0gc3RkOjptYXgobWluS25vYlNpemUsIHN0YXRp
Y19jYXN0PENHRmxvYXQ+KHN0ZDo6cm91bmQodHJhY2tMZW5ndGggKiBbc2VsZiBrbm9iUHJvcG9y
dGlvbl0pKSk7CisgICAgQ0dGbG9hdCBrbm9iUG9zaXRpb24gPSBzdGF0aWNfY2FzdDxDR0Zsb2F0
Pigoc3RkOjpyb3VuZChbc2VsZiBkb3VibGVWYWx1ZV0gKiAodHJhY2tMZW5ndGggLSBrbm9iTGVu
Z3RoKSkpKTsKIAogICAgIGlmIChpc0hvcml6b250YWwpCiAgICAgICAgIHJldHVybiBOU01ha2VS
ZWN0KGJvdW5kcy5vcmlnaW4ueCArIGtub2JQb3NpdGlvbiwgYm91bmRzLm9yaWdpbi55LCBrbm9i
TGVuZ3RoLCBib3VuZHMuc2l6ZS5oZWlnaHQpOwpAQCAtNjcyLDYgKzY3NSwxMCBAQCBXZWJWaWV3
ICpjcmVhdGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93CiAgICAgW3dlYlZpZXcgc2V0R3JvdXBO
YW1lOkAib3JnLndlYmtpdC5EdW1wUmVuZGVyVHJlZSJdOwogI2VuZGlmCiAKKyAgICBXZWJQcmVm
ZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbW1dlYlByZWZlcmVuY2VzIGFsbG9jXSBpbml0XTsKKyAg
ICBbcHJlZmVyZW5jZXMgc2V0QXV0b3NhdmVzOk5PXTsKKyAgICBbd2ViVmlldyBzZXRQcmVmZXJl
bmNlczpwcmVmZXJlbmNlc107CisKICAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOnVpRGVsZWdh
dGVdOwogICAgIFt3ZWJWaWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOmZyYW1lTG9hZERlbGVnYXRl
XTsKICAgICBbd2ViVmlldyBzZXRFZGl0aW5nRGVsZWdhdGU6ZWRpdGluZ0RlbGVnYXRlXTsKQEAg
LTY4NSw4ICs2OTIsNiBAQCBXZWJWaWV3ICpjcmVhdGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93
CiAgICAgW1dlYlZpZXcgcmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsOkAiZmVlZHMiXTsKICAgICBb
V2ViVmlldyByZWdpc3RlclVSTFNjaGVtZUFzTG9jYWw6QCJmZWVkc2VhcmNoIl07CiAKLSAgICBb
W3dlYlZpZXcgcHJlZmVyZW5jZXNdIF9zZXRNZWRpYVJlY29yZGVyRW5hYmxlZDpZRVNdOwotCiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIFt3ZWJWaWV3IHNldFdpbmRvd09jY2x1c2lvbkRldGVjdGlv
bkVuYWJsZWQ6Tk9dOwogICAgIFtXZWJWaWV3IF9zZXRGb250QWxsb3dMaXN0OmZvbnRBbGxvd0xp
c3QoKV07CkBAIC04NDQsOSArODQ5LDggQEAgc3RhdGljIHZvaWQgZW5hYmxlRXhwZXJpbWVudGFs
RmVhdHVyZXMoVwogfQogCiAvLyBDYWxsZWQgYmVmb3JlIGVhY2ggdGVzdC4KLXN0YXRpYyB2b2lk
IHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKQorc3RhdGljIHZvaWQgcmVz
ZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhXZWJQcmVmZXJlbmNlcyAqcHJlZmVy
ZW5jZXMpCiB7Ci0gICAgV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzID0gW1dlYlByZWZlcmVu
Y2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdOwogICAgIGVuYWJsZUV4cGVyaW1lbnRhbEZlYXR1cmVz
KHByZWZlcmVuY2VzKTsKIAogICAgIFtwcmVmZXJlbmNlcyBzZXROZWVkc1N0b3JhZ2VBY2Nlc3NG
cm9tRmlsZVVSTHNRdWlyazogTk9dOwpAQCAtOTAyLDYgKzkwNiw3IEBAIHN0YXRpYyB2b2lkIHJl
c2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3QKICAgICB9IGVsc2UKICAgICAgICAgW3ByZWZlcmVu
Y2VzIHNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZDpOT107CiAKKyAgICBbcHJlZmVyZW5jZXMgc2V0
SW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGU6Tk9dOwogICAg
IFtwcmVmZXJlbmNlcyBzZXRNZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lOllFU107CiAgICAgW3By
ZWZlcmVuY2VzIHNldE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlOk5PXTsKICAgICBb
cHJlZmVyZW5jZXMgc2V0VmlkZW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmU6Tk9dOwpAQCAt
OTI4LDkgKzkzMyw4IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3QK
ICNlbmRpZgogICAgIFtwcmVmZXJlbmNlcyBzZXRVc2VQcmVIVE1MNVBhcnNlclF1aXJrczpOT107
CiAgICAgW3ByZWZlcmVuY2VzIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOk5P
XTsKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBBU1NFUlQoW3ByZWZlcmVuY2VzIG1v
Y2tTY3JvbGxiYXJzRW5hYmxlZF0pOwotI2VuZGlmCisKKyAgICBbcHJlZmVyZW5jZXMgc2V0TW9j
a1Njcm9sbGJhcnNFbmFibGVkOllFU107CiAKICAgICBbcHJlZmVyZW5jZXMgc2V0V2ViQXVkaW9F
bmFibGVkOllFU107CiAgICAgW3ByZWZlcmVuY2VzIHNldE1vZGVyblVucHJlZml4ZWRXZWJBdWRp
b0VuYWJsZWQ6WUVTXTsKQEAgLTk2MCw2ICs5NjQsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlBy
ZWZlcmVuY2VzVG9Db25zaXN0CiAgICAgcHJlZmVyZW5jZXMubWVkaWFDYXBhYmlsaXRpZXNFbmFi
bGVkID0gWUVTOwogCiAgICAgcHJlZmVyZW5jZXMuc2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRh
cmllc0VuYWJsZWQgPSBZRVM7CisgICAgcHJlZmVyZW5jZXMuZnVsbFNjcmVlbkVuYWJsZWQgPSBZ
RVM7CiAKICAgICBbcHJlZmVyZW5jZXMgc2V0V2ViU1FMRW5hYmxlZDpZRVNdOwogCkBAIC05Njcs
MzQgKzk3MiwyMSBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0CiAg
ICAgW1dlYlByZWZlcmVuY2VzIF9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVB
Y2NlcHRQb2xpY3k6TlNIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnRE
b21haW5dOwogfQogCi1zdGF0aWMgdm9pZCBzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25z
KGNvbnN0IFdUUjo6VGVzdE9wdGlvbnMmIG9wdGlvbnMpCitzdGF0aWMgdm9pZCBzZXRXZWJQcmVm
ZXJlbmNlc0ZvclRlc3RPcHRpb25zKFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcywgY29uc3Qg
V1RSOjpUZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBXZWJQcmVmZXJlbmNlcyAqcHJlZmVy
ZW5jZXMgPSBbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc107CisgICAgcHJlZmVy
ZW5jZXMucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IG9wdGlvbnMudXNlRXBoZW1lcmFsU2Vzc2lv
bigpOworCisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLmJvb2xX
ZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXRCb29sUHJl
ZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dmFsdWUgZm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0
aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGtleSkpLmdldCgpXTsKKworICAgIGZv
ciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5kb3VibGVXZWJQcmVmZXJlbmNl
RmVhdHVyZXMoKSkKKyAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXREb3VibGVQcmVmZXJlbmNlRm9y
VGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZSBmb3JLZXk6dG9OUyhXVFI6OlRlc3RPcHRpb25zOjp0b1dl
YktpdExlZ2FjeVByZWZlcmVuY2VLZXkoa2V5KSkuZ2V0KCldOwogCi0gICAgcHJlZmVyZW5jZXMu
YXR0YWNobWVudEVsZW1lbnRFbmFibGVkID0gb3B0aW9ucy5lbmFibGVBdHRhY2htZW50RWxlbWVu
dDsKLSAgICBwcmVmZXJlbmNlcy5hY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkID0gb3B0aW9ucy5l
bmFibGVBY2NlbGVyYXRlZERyYXdpbmc7Ci0gICAgcHJlZmVyZW5jZXMubWVudUl0ZW1FbGVtZW50
RW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlTWVudUl0ZW1FbGVtZW50OwotICAgIHByZWZlcmVuY2Vz
LmtleWdlbkVsZW1lbnRFbmFibGVkID0gb3B0aW9ucy5lbmFibGVLZXlnZW5FbGVtZW50OwotICAg
IHByZWZlcmVuY2VzLm1vZGVybk1lZGlhQ29udHJvbHNFbmFibGVkID0gb3B0aW9ucy5lbmFibGVN
b2Rlcm5NZWRpYUNvbnRyb2xzOwotICAgIHByZWZlcmVuY2VzLmluc3BlY3RvckFkZGl0aW9uc0Vu
YWJsZWQgPSBvcHRpb25zLmVuYWJsZUluc3BlY3RvckFkZGl0aW9uczsKLSAgICBwcmVmZXJlbmNl
cy5hbGxvd0Nyb3NzT3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyA9IG9wdGlv
bnMuYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHM7Ci0gICAg
cHJlZmVyZW5jZXMuY29sb3JGaWx0ZXJFbmFibGVkID0gb3B0aW9ucy5lbmFibGVDb2xvckZpbHRl
cjsKLSAgICBwcmVmZXJlbmNlcy5zZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzRW5hYmxl
ZCA9IG9wdGlvbnMuZW5hYmxlU2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllczsKLSAgICBw
cmVmZXJlbmNlcy53ZWJHUFVFbmFibGVkID0gb3B0aW9ucy5lbmFibGVXZWJHUFU7Ci0gICAgcHJl
ZmVyZW5jZXMuQ1NTTG9naWNhbEVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUNTU0xvZ2ljYWw7Ci0g
ICAgcHJlZmVyZW5jZXMubGluZUhlaWdodFVuaXRzRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlTGlu
ZUhlaWdodFVuaXRzOwotICAgIHByZWZlcmVuY2VzLmFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQg
PSBvcHRpb25zLmFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQ7Ci0gICAgcHJlZmVyZW5jZXMucmVz
aXplT2JzZXJ2ZXJFbmFibGVkID0gb3B0aW9ucy5lbmFibGVSZXNpemVPYnNlcnZlcjsKLSAgICBw
cmVmZXJlbmNlcy5DU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkID0gb3B0aW9ucy5lbmFi
bGVDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmc7Ci0gICAgcHJlZmVyZW5jZXMuY29yZU1hdGhNTEVu
YWJsZWQgPSBvcHRpb25zLmVuYWJsZUNvcmVNYXRoTUw7Ci0gICAgcHJlZmVyZW5jZXMucmVxdWVz
dElkbGVDYWxsYmFja0VuYWJsZWQgPSBvcHRpb25zLmVuYWJsZVJlcXVlc3RJZGxlQ2FsbGJhY2s7
Ci0gICAgcHJlZmVyZW5jZXMuYXN5bmNDbGlwYm9hcmRBUElFbmFibGVkID0gb3B0aW9ucy5lbmFi
bGVBc3luY0NsaXBib2FyZEFQSTsKLSAgICBwcmVmZXJlbmNlcy5wcml2YXRlQnJvd3NpbmdFbmFi
bGVkID0gb3B0aW9ucy51c2VFcGhlbWVyYWxTZXNzaW9uOwotICAgIHByZWZlcmVuY2VzLnVzZXNQ
YWdlQ2FjaGUgPSBvcHRpb25zLmVuYWJsZUJhY2tGb3J3YXJkQ2FjaGU7Ci0gICAgcHJlZmVyZW5j
ZXMubGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQgPSBvcHRpb25zLmxh
eW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkOwotICAgIHByZWZlcmVuY2Vz
LmFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkID0gb3B0aW9ucy5lbmFi
bGVBc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0OwotICAgIHByZWZlcmVuY2VzLmFs
bG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMgPSBvcHRpb25zLmFsbG93VG9wTmF2aWdhdGlvblRv
RGF0YVVSTHM7Ci0gICAgcHJlZmVyZW5jZXMuY29udGFjdFBpY2tlckFQSUVuYWJsZWQgPSBvcHRp
b25zLmVuYWJsZUNvbnRhY3RQaWNrZXJBUEk7CisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2
YWx1ZV0gOiBvcHRpb25zLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJlcygpKQorICAgICAgICBb
cHJlZmVyZW5jZXMgX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnZhbHVl
IGZvcktleTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtl
eShrZXkpKS5nZXQoKV07CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9w
dGlvbnMuc3RyaW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAgIFtwcmVmZXJlbmNl
cyBfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dG9OUyh2YWx1ZSkuZ2V0
KCkgZm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNl
S2V5KGtleSkpLmdldCgpXTsKIH0KIAogLy8gQ2FsbGVkIG9uY2Ugb24gRHVtcFJlbmRlclRyZWUg
c3RhcnR1cC4KQEAgLTEwMTgsOSArMTAxMCw2IEBAIHN0YXRpYyB2b2lkIHNldERlZmF1bHRzVG9D
b25zaXN0ZW50VmFsdWUKICAgICAgICAgQCJBcHBsZU90aGVySGlnaGxpZ2h0Q29sb3IiOkAiMC41
MDAwMDAgMC41MDAwMDAgMC41MDAwMDAiLAogICAgICAgICBAIkFwcGxlTGFuZ3VhZ2VzIjogQFsg
QCJlbiIgXSwKICAgICAgICAgV2ViS2l0RW5hYmxlRnVsbERvY3VtZW50VGVhcmRvd25QcmVmZXJl
bmNlS2V5OiBAWUVTLAotICAgICAgICBXZWJLaXRGdWxsU2NyZWVuRW5hYmxlZFByZWZlcmVuY2VL
ZXk6IEBZRVMsCi0gICAgICAgIFdlYktpdEFsbG93c0lubGluZU1lZGlhUGxheWJhY2tQcmVmZXJl
bmNlS2V5OiBAWUVTLAotICAgICAgICBXZWJLaXRJbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQ
bGF5c0lubGluZUF0dHJpYnV0ZUtleTogQE5PLAogICAgICAgICBAIlVzZVdlYktpdFdlYkluc3Bl
Y3RvciI6IEBZRVMsCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIEAiTlNQcmVm
ZXJyZWRTcGVsbFNlcnZlckxhbmd1YWdlIjogQCJlbl9VUyIsCkBAIC0xNDMxLDcgKzE0MjAsNyBA
QCBzdGF0aWMgTlNJbnRlZ2VyIGNvbXBhcmVIaXN0b3J5SXRlbXMoaWQgCiAKIHN0YXRpYyBOU0Rh
dGEgKmR1bXBBdWRpbygpCiB7Ci0gICAgY29uc3QgdmVjdG9yPGNoYXI+JiBkYXRhVmVjdG9yID0g
Z1Rlc3RSdW5uZXItPmF1ZGlvUmVzdWx0KCk7CisgICAgY29uc3QgYXV0byYgZGF0YVZlY3RvciA9
IGdUZXN0UnVubmVyLT5hdWRpb1Jlc3VsdCgpOwogCiAgICAgTlNEYXRhICpkYXRhID0gW05TRGF0
YSBkYXRhV2l0aEJ5dGVzOmRhdGFWZWN0b3IuZGF0YSgpIGxlbmd0aDpkYXRhVmVjdG9yLnNpemUo
KV07CiAgICAgcmV0dXJuIGRhdGE7CkBAIC0xNjI3LDcgKzE2MTYsNyBAQCBzdGF0aWMgdm9pZCBz
aXplV2ViVmlld0ZvckN1cnJlbnRUZXN0KCkKICAgICBbdWlEZWxlZ2F0ZSByZXNldFdpbmRvd09y
aWdpbl07CiAKICAgICAvLyBXM0MgU1ZHIHRlc3RzIGV4cGVjdCB0byBiZSA0ODB4MzYwCi0gICAg
Ym9vbCBpc1NWR1czQ1Rlc3QgPSAoZ1Rlc3RSdW5uZXItPnRlc3RVUkwoKS5maW5kKCJzdmcvVzND
LVNWRy0xLjEiKSAhPSBzdHJpbmc6Om5wb3MpOworICAgIGJvb2wgaXNTVkdXM0NUZXN0ID0gKGdU
ZXN0UnVubmVyLT50ZXN0VVJMKCkuZmluZCgic3ZnL1czQy1TVkctMS4xIikgIT0gc3RkOjpzdHJp
bmc6Om5wb3MpOwogICAgIE5TU2l6ZSBmcmFtZVNpemUgPSBpc1NWR1czQ1Rlc3QgPyBOU01ha2VT
aXplKFRlc3RSdW5uZXI6OnczY1NWR1ZpZXdXaWR0aCwgVGVzdFJ1bm5lcjo6dzNjU1ZHVmlld0hl
aWdodCkgOiBOU01ha2VTaXplKFRlc3RSdW5uZXI6OnZpZXdXaWR0aCwgVGVzdFJ1bm5lcjo6dmll
d0hlaWdodCk7CiAgICAgW1ttYWluRnJhbWUgd2ViVmlld10gc2V0RnJhbWVTaXplOmZyYW1lU2l6
ZV07CiAgICAgW1ttYWluRnJhbWUgZnJhbWVWaWV3XSBzZXRGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IGZyYW1lU2l6ZS53aWR0aCwgZnJhbWVTaXplLmhlaWdodCldOwpAQCAtMTgyNiw5ICsxODE1LDkg
QEAgc3RhdGljIHZvaWQgc2V0SlNDT3B0aW9ucyhjb25zdCBXVFI6OlRlcwogICAgICAgICBzYXZl
ZE9wdGlvbnMuY2xlYXIoKTsKICAgICB9CiAKLSAgICBpZiAob3B0aW9ucy5qc2NPcHRpb25zLmxl
bmd0aCgpKSB7CisgICAgaWYgKCFvcHRpb25zLmpzY09wdGlvbnMoKS5lbXB0eSgpKSB7CiAgICAg
ICAgIEpTQzo6T3B0aW9uczo6ZHVtcEFsbE9wdGlvbnNJbkFMaW5lKHNhdmVkT3B0aW9ucyk7Ci0g
ICAgICAgIEpTQzo6T3B0aW9uczo6c2V0T3B0aW9ucyhvcHRpb25zLmpzY09wdGlvbnMuY19zdHIo
KSk7CisgICAgICAgIEpTQzo6T3B0aW9uczo6c2V0T3B0aW9ucyhvcHRpb25zLmpzY09wdGlvbnMo
KS5jX3N0cigpKTsKICAgICB9CiB9CiAKQEAgLTE4MzksNiArMTgyOCwxMCBAQCBzdGF0aWMgdm9p
ZCByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0CiAKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0g
W21haW5GcmFtZSB3ZWJWaWV3XTsKIAorICAgIFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9
IFtbV2ViUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdOworICAgIFtwcmVmZXJlbmNlcyBzZXRBdXRv
c2F2ZXM6Tk9dOworICAgIFt3ZWJWaWV3IHNldFByZWZlcmVuY2VzOnByZWZlcmVuY2VzXTsKKwog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYWRqdXN0V2ViRG9jdW1lbnRGb3JTdGFuZGFy
ZFZpZXdwb3J0KGdXZWJCcm93c2VyVmlldywgZ1dlYlNjcm9sbFZpZXcpOwogICAgIFt3ZWJWaWV3
IF9zZXRBbGxvd3NNZXNzYWdpbmc6WUVTXTsKQEAgLTE4NjcsMTAgKzE4NjAsMTAgQEAgc3RhdGlj
IHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdAogCiAgICAgW1dlYkNhY2hlIGNsZWFy
Q2FjaGVkQ3JlZGVudGlhbHNdOwogCi0gICAgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVu
dFZhbHVlcygpOwotICAgIHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMob3B0aW9ucyk7
CisgICAgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhwcmVmZXJlbmNlcyk7
CisgICAgc2V0V2ViUHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9ucyhwcmVmZXJlbmNlcywgb3B0aW9u
cyk7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFt3ZWJWaWV3IHNldFdhbnRzTGF5ZXI6b3B0aW9u
cy5sYXllckJhY2tlZFdlYlZpZXddOworICAgIFt3ZWJWaWV3IHNldFdhbnRzTGF5ZXI6b3B0aW9u
cy5sYXllckJhY2tlZFdlYlZpZXcoKV07CiAjZW5kaWYKIAogICAgIFRlc3RSdW5uZXI6OnNldFNl
cmlhbGl6ZUhUVFBMb2FkcyhmYWxzZSk7CkBAIC0xOTE0LDcgKzE5MDcsNyBAQCBzdGF0aWMgdm9p
ZCByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0CiAgICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJh
bFBhc3RlYm9hcmRdIGRlY2xhcmVUeXBlczpAW05TU3RyaW5nUGJvYXJkVHlwZV0gb3duZXI6bmls
XTsKICNlbmRpZgogCi0gICAgV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRBZGRpdGlvbmFsU3VwcG9y
dGVkSW1hZ2VUeXBlc0ZvclRlc3Rpbmcob3B0aW9ucy5hZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VU
eXBlcy5jX3N0cigpKTsKKyAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldEFkZGl0aW9uYWxTdXBw
b3J0ZWRJbWFnZVR5cGVzRm9yVGVzdGluZyhvcHRpb25zLmFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFn
ZVR5cGVzKCkuY19zdHIoKSk7CiAKICAgICBbbWFpbkZyYW1lIF9jbGVhck9wZW5lcl07CiAKQEAg
LTE5NzAsMTkgKzE5NjMsMTkgQEAgc3RhdGljIE5TVVJMICpjb21wdXRlVGVzdFVSTChOU1N0cmlu
ZyAqcAogCiBzdGF0aWMgV1RSOjpUZXN0T3B0aW9ucyB0ZXN0T3B0aW9uc0ZvclRlc3QoY29uc3Qg
V1RSOjpUZXN0Q29tbWFuZCYgY29tbWFuZCkKIHsKLSAgICBXVFI6OlRlc3RGZWF0dXJlcyBmZWF0
dXJlczsKKyAgICBXVFI6OlRlc3RGZWF0dXJlcyBmZWF0dXJlcyA9IFdUUjo6VGVzdE9wdGlvbnM6
OmRlZmF1bHRzKCk7CiAgICAgV1RSOjptZXJnZShmZWF0dXJlcywgV1RSOjpoYXJkY29kZWRGZWF0
dXJlc0Jhc2VkT25QYXRoRm9yVGVzdChjb21tYW5kKSk7CiAgICAgV1RSOjptZXJnZShmZWF0dXJl
cywgV1RSOjpmZWF0dXJlRGVmYXVsdHNGcm9tVGVzdEhlYWRlckZvclRlc3QoY29tbWFuZCwgV1RS
OjpUZXN0T3B0aW9uczo6a2V5VHlwZU1hcHBpbmcoKSkpOwogCiAgICAgcmV0dXJuIFdUUjo6VGVz
dE9wdGlvbnMgeyBXVEZNb3ZlKGZlYXR1cmVzKSB9OwogfQogCi1zdGF0aWMgdm9pZCBydW5UZXN0
KGNvbnN0IHN0cmluZyYgaW5wdXRMaW5lKQorc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdGQ6
OnN0cmluZyYgaW5wdXRMaW5lKQogewogICAgIEFTU0VSVCghaW5wdXRMaW5lLmVtcHR5KCkpOwog
CiAgICAgYXV0byBjb21tYW5kID0gV1RSOjpwYXJzZUlucHV0TGluZShpbnB1dExpbmUpOwotICAg
IGNvbnN0IHN0cmluZyYgcGF0aE9yVVJMID0gY29tbWFuZC5wYXRoT3JVUkw7CisgICAgYXV0byBw
YXRoT3JVUkwgPSBjb21tYW5kLnBhdGhPclVSTDsKICAgICBkdW1wUGl4ZWxzRm9yQ3VycmVudFRl
c3QgPSBjb21tYW5kLnNob3VsZER1bXBQaXhlbHMgfHwgZHVtcFBpeGVsc0ZvckFsbFRlc3RzOwog
CiAgICAgTlNTdHJpbmcgKnBhdGhPclVSTFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRG
OFN0cmluZzpwYXRoT3JVUkwuY19zdHIoKV07CkBAIC0yMDE3LDcgKzIwMTAsNyBAQCBzdGF0aWMg
dm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgaW5wdXRMCiAgICAgZ1Rlc3RSdW5uZXIgPSBUZXN0
UnVubmVyOjpjcmVhdGUodGVzdFVSTCwgY29tbWFuZC5leHBlY3RlZFBpeGVsSGFzaCk7CiAgICAg
Z1Rlc3RSdW5uZXItPnNldEFsbG93ZWRIb3N0cyhhbGxvd2VkSG9zdHMpOwogICAgIGdUZXN0UnVu
bmVyLT5zZXRDdXN0b21UaW1lb3V0KGNvbW1hbmQudGltZW91dC5taWxsaXNlY29uZHMoKSk7Ci0g
ICAgZ1Rlc3RSdW5uZXItPnNldER1bXBKU0NvbnNvbGVMb2dJblN0ZEVycihjb21tYW5kLmR1bXBK
U0NvbnNvbGVMb2dJblN0ZEVyciB8fCBvcHRpb25zLmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVycik7
CisgICAgZ1Rlc3RSdW5uZXItPnNldER1bXBKU0NvbnNvbGVMb2dJblN0ZEVycihjb21tYW5kLmR1
bXBKU0NvbnNvbGVMb2dJblN0ZEVyciB8fCBvcHRpb25zLmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVy
cigpKTsKIAogICAgIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlKG9wdGlvbnMsIFJlc2V0
VGltZTo6QmVmb3JlVGVzdCk7CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0
UnVubmVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0
UnVubmVyTWFjLm1tCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvVGVzdFJ1bm5lck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTc2LDE0ICs1NzYsMTQgQEAg
dm9pZCBUZXN0UnVubmVyOjpzZXRQYWdlUGF1c2VkKGJvb2wgcGF1cwogCiB2b2lkIFRlc3RSdW5u
ZXI6OnNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZChib29sIGZsYWcpCiB7Ci0gICAgW1tXZWJQcmVm
ZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXSBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQ6Zmxh
Z107CisgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBzZXRVc2VyU3R5bGVT
aGVldEVuYWJsZWQ6ZmxhZ107CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hl
ZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKQogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gcGF0aENGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBwYXRoKSk7CiAgICAgTlNVUkwgKnVybCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOihfX2Jy
aWRnZSBOU1N0cmluZyAqKXBhdGhDRi5nZXQoKV07Ci0gICAgW1tXZWJQcmVmZXJlbmNlcyBzdGFu
ZGFyZFByZWZlcmVuY2VzXSBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uOnVybF07CisgICAgW1tb
bWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9u
OnVybF07CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIEpTU3RyaW5nUmVmIHZhbHVlKQpAQCAt
NjA5LDcgKzYwOSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3QK
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHZhbHVlQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29w
eUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHZhbHVlKSk7CiAgICAgTlNTdHJpbmcgKnZh
bHVlTlMgPSAoX19icmlkZ2UgTlNTdHJpbmcgKil2YWx1ZUNGLmdldCgpOwogCi0gICAgW1tXZWJQ
cmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXSBfc2V0UHJlZmVyZW5jZUZvclRlc3RXaXRo
VmFsdWU6dmFsdWVOUyBmb3JLZXk6a2V5TlNdOworICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBw
cmVmZXJlbmNlc10gX3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnZhbHVl
TlMgZm9yS2V5OmtleU5TXTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpyZW1vdmVBbGxWaXNpdGVk
TGlua3MoKQpAQCAtNzAwLDcgKzcwMCw3IEBAIGJvb2wgVGVzdFJ1bm5lcjo6ZmluZFN0cmluZyhK
U0NvbnRleHRSZWYKIAogdm9pZCBUZXN0UnVubmVyOjpzZXRDYWNoZU1vZGVsKGludCBjYWNoZU1v
ZGVsKQogewotICAgIFtbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10gc2V0Q2Fj
aGVNb2RlbDooV2ViQ2FjaGVNb2RlbCljYWNoZU1vZGVsXTsKKyAgICBbW1ttYWluRnJhbWUgd2Vi
Vmlld10gcHJlZmVyZW5jZXNdIHNldENhY2hlTW9kZWw6KFdlYkNhY2hlTW9kZWwpY2FjaGVNb2Rl
bF07CiB9CiAKIGJvb2wgVGVzdFJ1bm5lcjo6aXNDb21tYW5kRW5hYmxlZChKU1N0cmluZ1JlZiBu
YW1lKQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0JKHJldmlzaW9u
IDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIC0gKHZvaWQpcmVzZXRXaW5kb3dPcmlnaW4KIAog
LSAodm9pZClyZXNldFRvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZzooY29uc3QgV1RSOjpU
ZXN0T3B0aW9ucyYpb3B0aW9ucwogewotICAgIG1fZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
TG9hZCA9IG9wdGlvbnMuZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZDsKKyAgICBtX2Vu
YWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQgPSBvcHRpb25zLmVuYWJsZURyYWdEZXN0aW5h
dGlvbkFjdGlvbkxvYWQoKTsKIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVy
IHNldEZyYW1lOihOU1JlY3QpZnJhbWUKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9E
dW1wUmVuZGVyVHJlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0R1bXBSZW5kZXJUcmVlLmNwcAkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTA2LDI4ICs5
MDYsMzcgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdAogCiAgICAg
cHJlZmVyZW5jZXMtPnNldEZvbnRTbW9vdGhpbmcoRm9udFNtb290aGluZ1R5cGVTdGFuZGFyZCk7
CiAKKyAgICBwcmVmc1ByaXZhdGUtPnNldFdlYlNRTEVuYWJsZWQodHJ1ZSk7CisKICAgICBwcmVm
c1ByaXZhdGUtPnNldERhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZChUUlVFKTsKICAgICBwcmVmc1By
aXZhdGUtPmNsZWFyTmV0d29ya0xvYWRlclNlc3Npb24oKTsKIAogICAgIHNldEFsd2F5c0FjY2Vw
dENvb2tpZXMoZmFsc2UpOwogfQogCitzdGF0aWMgYm9vbCBib29sV2ViUHJlZmVyZW5jZUZlYXR1
cmVWYWx1ZShzdGQ6OnN0cmluZyBrZXksIGJvb2wgZGVmYXVsdFZhbHVlLCBjb25zdCBXVFI6OlRl
c3RPcHRpb25zJiBvcHRpb25zKQoreworICAgIGF1dG8gaXQgPSBvcHRpb25zLmJvb2xXZWJQcmVm
ZXJlbmNlRmVhdHVyZXMoKS5maW5kKGtleSk7CisgICAgaWYgKGl0ICE9IG9wdGlvbnMuYm9vbFdl
YlByZWZlcmVuY2VGZWF0dXJlcygpLmVuZCgpKQorICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsK
KyAgICByZXR1cm4gZGVmYXVsdFZhbHVlOworfQorCiBzdGF0aWMgdm9pZCBzZXRXZWJQcmVmZXJl
bmNlc0ZvclRlc3RPcHRpb25zKElXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMsIGNvbnN0IFdU
Ujo6VGVzdE9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNlc1By
aXZhdGU4PiBwcmVmc1ByaXZhdGUgeyBRdWVyeSwgcHJlZmVyZW5jZXMgfTsKIAotICAgIHByZWZz
UHJpdmF0ZS0+c2V0TWVudUl0ZW1FbGVtZW50RW5hYmxlZChvcHRpb25zLmVuYWJsZU1lbnVJdGVt
RWxlbWVudCk7Ci0gICAgcHJlZnNQcml2YXRlLT5zZXRLZXlnZW5FbGVtZW50RW5hYmxlZChvcHRp
b25zLmVuYWJsZUtleWdlbkVsZW1lbnQpOwotICAgIHByZWZzUHJpdmF0ZS0+c2V0TW9kZXJuTWVk
aWFDb250cm9sc0VuYWJsZWQob3B0aW9ucy5lbmFibGVNb2Rlcm5NZWRpYUNvbnRyb2xzKTsKLSAg
ICBwcmVmc1ByaXZhdGUtPnNldEluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQob3B0aW9ucy5lbmFi
bGVJbnNwZWN0b3JBZGRpdGlvbnMpOwotICAgIHByZWZzUHJpdmF0ZS0+c2V0UmVxdWVzdElkbGVD
YWxsYmFja0VuYWJsZWQob3B0aW9ucy5lbmFibGVSZXF1ZXN0SWRsZUNhbGxiYWNrKTsKLSAgICBw
cmVmc1ByaXZhdGUtPnNldEFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxlZChvcHRpb25zLmVuYWJsZUFz
eW5jQ2xpcGJvYXJkQVBJKTsKLSAgICBwcmVmc1ByaXZhdGUtPnNldENvbnRhY3RQaWNrZXJBUElF
bmFibGVkKG9wdGlvbnMuZW5hYmxlQ29udGFjdFBpY2tlckFQSSk7Ci0gICAgcHJlZnNQcml2YXRl
LT5zZXRXZWJTUUxFbmFibGVkKG9wdGlvbnMuZW5hYmxlV2ViU1FMKTsKLSAgICBwcmVmc1ByaXZh
dGUtPnNldEFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMob3B0aW9ucy5hbGxvd1RvcE5hdmln
YXRpb25Ub0RhdGFVUkxzKTsKLSAgICBwcmVmZXJlbmNlcy0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZChvcHRpb25zLnVzZUVwaGVtZXJhbFNlc3Npb24pOwotICAgIHByZWZlcmVuY2VzLT5zZXRV
c2VzUGFnZUNhY2hlKG9wdGlvbnMuZW5hYmxlQmFja0ZvcndhcmRDYWNoZSk7Ci0gICAgcHJlZnNQ
cml2YXRlLT5zZXRDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkKG9wdGlvbnMuZW5hYmxl
Q1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nKTsKKyAgICBwcmVmZXJlbmNlcy0+c2V0UHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZChvcHRpb25zLnVzZUVwaGVtZXJhbFNlc3Npb24oKSk7CisgICAgcHJlZmVy
ZW5jZXMtPnNldFVzZXNQYWdlQ2FjaGUoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIlVz
ZXNCYWNrRm9yd2FyZENhY2hlIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1ByaXZhdGUt
PnNldE1lbnVJdGVtRWxlbWVudEVuYWJsZWQoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUo
Ik1lbnVJdGVtRWxlbWVudEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucykpOworICAgIHByZWZzUHJp
dmF0ZS0+c2V0S2V5Z2VuRWxlbWVudEVuYWJsZWQoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFs
dWUoIktleWdlbkVsZW1lbnRFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1By
aXZhdGUtPnNldE1vZGVybk1lZGlhQ29udHJvbHNFbmFibGVkKGJvb2xXZWJQcmVmZXJlbmNlRmVh
dHVyZVZhbHVlKCJNb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCIsIHRydWUsIG9wdGlvbnMpKTsK
KyAgICBwcmVmc1ByaXZhdGUtPnNldEluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQoYm9vbFdlYlBy
ZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQiLCBmYWxzZSwg
b3B0aW9ucykpOworICAgIHByZWZzUHJpdmF0ZS0+c2V0UmVxdWVzdElkbGVDYWxsYmFja0VuYWJs
ZWQoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIlJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFi
bGVkIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldEFzeW5jQ2xpcGJv
YXJkQVBJRW5hYmxlZChib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQXN5bmNDbGlwYm9h
cmRBUElFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldENv
bnRhY3RQaWNrZXJBUElFbmFibGVkKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJDb250
YWN0UGlja2VyQVBJRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKSk7CisgICAgcHJlZnNQcml2YXRl
LT5zZXRBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVy
ZVZhbHVlKCJBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzIiwgdHJ1ZSwgb3B0aW9ucykpOwor
ICAgIHByZWZzUHJpdmF0ZS0+c2V0Q1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZChib29s
V2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxl
ZCIsIGZhbHNlLCBvcHRpb25zKSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgYXBwbGljYXRpb25JZCgp
CkBAIC05NzMsOSArOTgyLDkgQEAgc3RhdGljIHZvaWQgc2V0SlNDT3B0aW9ucyhjb25zdCBXVFI6
OlRlcwogICAgICAgICBzYXZlZE9wdGlvbnMuY2xlYXIoKTsKICAgICB9CiAKLSAgICBpZiAob3B0
aW9ucy5qc2NPcHRpb25zLmxlbmd0aCgpKSB7CisgICAgaWYgKCFvcHRpb25zLmpzY09wdGlvbnMo
KS5lbXB0eSgpKSB7CiAgICAgICAgIEpTQzo6T3B0aW9uczo6ZHVtcEFsbE9wdGlvbnNJbkFMaW5l
KHNhdmVkT3B0aW9ucyk7Ci0gICAgICAgIEpTQzo6T3B0aW9uczo6c2V0T3B0aW9ucyhvcHRpb25z
LmpzY09wdGlvbnMuY19zdHIoKSk7CisgICAgICAgIEpTQzo6T3B0aW9uczo6c2V0T3B0aW9ucyhv
cHRpb25zLmpzY09wdGlvbnMoKS5jX3N0cigpKTsKICAgICB9CiB9CiAKQEAgLTExNjgsNyArMTE3
Nyw3IEBAIHN0YXRpYyBib29sIGhhbmRsZUNvbnRyb2xDb21tYW5kKGNvbnN0IGMKIAogc3RhdGlj
IFdUUjo6VGVzdE9wdGlvbnMgdGVzdE9wdGlvbnNGb3JUZXN0KGNvbnN0IFdUUjo6VGVzdENvbW1h
bmQmIGNvbW1hbmQpCiB7Ci0gICAgV1RSOjpUZXN0RmVhdHVyZXMgZmVhdHVyZXM7CisgICAgV1RS
OjpUZXN0RmVhdHVyZXMgZmVhdHVyZXMgPSBXVFI6OlRlc3RPcHRpb25zOjpkZWZhdWx0cygpOwog
ICAgIFdUUjo6bWVyZ2UoZmVhdHVyZXMsIFdUUjo6aGFyZGNvZGVkRmVhdHVyZXNCYXNlZE9uUGF0
aEZvclRlc3QoY29tbWFuZCkpOwogICAgIFdUUjo6bWVyZ2UoZmVhdHVyZXMsIFdUUjo6ZmVhdHVy
ZURlZmF1bHRzRnJvbVRlc3RIZWFkZXJGb3JUZXN0KGNvbW1hbmQsIFdUUjo6VGVzdE9wdGlvbnM6
OmtleVR5cGVNYXBwaW5nKCkpKTsKIApAQCAtMTIyOSw3ICsxMjM4LDcgQEAgc3RhdGljIHZvaWQg
cnVuVGVzdChjb25zdCBzdHJpbmcmIGlucHV0TAogCiAgICAgOjpnVGVzdFJ1bm5lciA9IFRlc3RS
dW5uZXI6OmNyZWF0ZSh0ZXN0VVJMLmRhdGEoKSwgY29tbWFuZC5leHBlY3RlZFBpeGVsSGFzaCk7
CiAgICAgOjpnVGVzdFJ1bm5lci0+c2V0Q3VzdG9tVGltZW91dChjb21tYW5kLnRpbWVvdXQubWls
bGlzZWNvbmRzKCkpOwotICAgIDo6Z1Rlc3RSdW5uZXItPnNldER1bXBKU0NvbnNvbGVMb2dJblN0
ZEVycihjb21tYW5kLmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciB8fCBvcHRpb25zLmR1bXBKU0Nv
bnNvbGVMb2dJblN0ZEVycik7CisgICAgOjpnVGVzdFJ1bm5lci0+c2V0RHVtcEpTQ29uc29sZUxv
Z0luU3RkRXJyKGNvbW1hbmQuZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIHx8IG9wdGlvbnMuZHVt
cEpTQ29uc29sZUxvZ0luU3RkRXJyKCkpOwogCiAgICAgdG9wTG9hZGluZ0ZyYW1lID0gbnVsbHB0
cjsKICAgICBkb25lID0gZmFsc2U7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyMSwxNyArOTIxLDE2IEBA
IHZvaWQgVGVzdENvbnRyb2xsZXI6OnJlc2V0UHJlZmVyZW5jZXNUb0MKICAgICBwbGF0Zm9ybVJl
c2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKTsKIAogICAgIGZvciAoY29uc3QgYXV0
byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCi0g
ICAgICAgIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXkocHJlZmVyZW5jZXMsIHZhbHVl
LCB0b1dLKGtleSkuZ2V0KCkpOworICAgICAgICBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9y
S2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CiAKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuZG91YmxlV2ViUHJlZmVy
ZW5jZUZlYXR1cmVzKCkpCi0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktl
eShwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CisgICAgICAgIFdLUHJlZmVy
ZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVyZW5jZXMsIHZhbHVlLCB0
b1dLKGtleSkuZ2V0KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBv
cHRpb25zLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAgICAgICBXS1ByZWZlcmVu
Y2VzU2V0VUludDMyVmFsdWVGb3JLZXkocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0
KCkpOworICAgICAgICBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXlGb3JUZXN0aW5n
KHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKIAogICAgIGZvciAoY29uc3Qg
YXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5zdHJpbmdXZWJQcmVmZXJlbmNlRmVhdHVyZXMo
KSkKLSAgICAgICAgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5KHByZWZlcmVuY2Vz
LCB0b1dLKHZhbHVlKS5nZXQoKSwgdG9XSyhrZXkpLmdldCgpKTsKLQorICAgICAgICBXS1ByZWZl
cmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXlGb3JUZXN0aW5nKHByZWZlcmVuY2VzLCB0b1dLKHZh
bHVlKS5nZXQoKSwgdG9XSyhrZXkpLmdldCgpKTsKIH0KIAogYm9vbCBUZXN0Q29udHJvbGxlcjo6
cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucywg
UmVzZXRTdGFnZSByZXNldFN0YWdlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411712</attachid>
            <date>2020-10-18 12:53:57 -0700</date>
            <delta_ts>2020-10-18 12:57:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201018125356.patch</filename>
            <type>text/plain</type>
            <size>70701</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvU2NyaXB0cy9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvU2NyaXB0cy9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiCShyZXZpc2lv
biAyNjg2NDgpCisrKyBTb3VyY2UvV1RGL1NjcmlwdHMvR2VuZXJhdGVQcmVmZXJlbmNlcy5yYgko
d29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw3IEBAIGNsYXNzIFByZWZlcmVuY2UKICAgYXR0
cl9hY2Nlc3NvciA6Y29uZGl0aW9uCiAgIGF0dHJfYWNjZXNzb3IgOmhpZGRlbgogICBhdHRyX2Fj
Y2Vzc29yIDpkZWZhdWx0VmFsdWVzCisgIGF0dHJfYWNjZXNzb3IgOmV4cG9zZWQKIAogICBkZWYg
aW5pdGlhbGl6ZShuYW1lLCBvcHRzLCBmcm9udGVuZCkKICAgICBAbmFtZSA9IG5hbWUKQEAgLTEx
Myw2ICsxMTQsNyBAQCBjbGFzcyBQcmVmZXJlbmNlCiAgICAgQGNvbmRpdGlvbiA9IG9wdHNbImNv
bmRpdGlvbiJdCiAgICAgQGhpZGRlbiA9IG9wdHNbImhpZGRlbiJdIHx8IGZhbHNlCiAgICAgQGRl
ZmF1bHRWYWx1ZXMgPSBvcHRzWyJkZWZhdWx0VmFsdWUiXVtmcm9udGVuZF0KKyAgICBAZXhwb3Nl
ZCA9ICFvcHRzWyJleHBvc2VkIl0gb3Igb3B0c1siZXhwb3NlZCJdLmluY2x1ZGU/KGZyb250ZW5k
KQogICBlbmQKIAogICBkZWYgbmFtZUxvd2VyCkBAIC0yMDQsNyArMjA2LDcgQEAgY2xhc3MgUHJl
ZmVyZW5jZXMKICAgICAgICAgaWYgIW9wdGlvbnNbIndlYmNvcmVCaW5kaW5nIl0gJiYgb3B0aW9u
c1siZGVmYXVsdFZhbHVlIl0uc2l6ZSAhPSAzCiAgICAgICAgICAgcmFpc2UgIkVSUk9SOiBQcmVm
ZXJlbmNlcyBib3VuZCB0byBXZWJDb3JlOjpTZXR0aW5ncyBtdXN0IGhhdmUgZGVmYXVsdCB2YWx1
ZXMgZm9yIGFsbCBmcm9udGVuZHM6ICN7bmFtZX0iCiAgICAgICAgIGVuZAotICAgICAgICBpZiAh
b3B0aW9uc1siZXhwb3NlZCJdIG9yIG9wdGlvbnNbImV4cG9zZWQiXS5pbmNsdWRlPyhAZnJvbnRl
bmQpCisgICAgICAgIGlmIG9wdGlvbnNbImRlZmF1bHRWYWx1ZSJdLmluY2x1ZGU/KEBmcm9udGVu
ZCkKICAgICAgICAgICBwcmVmZXJlbmNlID0gUHJlZmVyZW5jZS5uZXcobmFtZSwgb3B0aW9ucywg
QGZyb250ZW5kKQogICAgICAgICAgIEBwcmVmZXJlbmNlcyA8PCBwcmVmZXJlbmNlCiAgICAgICAg
ICAgcmVzdWx0IDw8IHByZWZlcmVuY2UKSW5kZXg6IFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJl
bmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAkocmV2aXNp
b24gMjY4NjQ4KQorKysgU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVu
Y2VzSW50ZXJuYWwueWFtbAkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsNyBAQCBBc3luY0Zy
YW1lU2Nyb2xsaW5nRW5hYmxlZDoKICAgd2ViY29yZU9uQ2hhbmdlOiBzZXROZWVkc1JlbGF5b3V0
QWxsRnJhbWVzCiAgIGh1bWFuUmVhZGFibGVOYW1lOiAiQXN5bmMgRnJhbWUgU2Nyb2xsaW5nIgog
ICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJQZXJmb3JtIGZyYW1lIHNjcm9sbGluZyBvZmYg
dGhlIG1haW4gdGhyZWFkIgorICBleHBvc2VkOiBbIFdlYktpdCBdCiAgIGRlZmF1bHRWYWx1ZToK
ICAgICBXZWJLaXRMZWdhY3k6CiAgICAgICBkZWZhdWx0OiBmYWxzZQpAQCAtOTYsNiArOTcsNyBA
QCBBc3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZDoKICAgd2ViY29yZU9uQ2hhbmdlOiBzZXRO
ZWVkc1JlbGF5b3V0QWxsRnJhbWVzCiAgIGh1bWFuUmVhZGFibGVOYW1lOiAiQXN5bmMgT3ZlcmZs
b3cgU2Nyb2xsaW5nIgogICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJQZXJmb3JtIG92ZXJm
bG93IHNjcm9sbGluZyBvZmYgdGhlIG1haW4gdGhyZWFkIgorICBleHBvc2VkOiBbIFdlYktpdCBd
CiAgIGRlZmF1bHRWYWx1ZToKICAgICBXZWJLaXRMZWdhY3k6CiAgICAgICBkZWZhdWx0OiBmYWxz
ZQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMTAtMTcgIFNhbSBXZWlu
aWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFtUZXN0aW5nXSBDb252ZXJ0IER1bXBS
ZW5kZXJUcmVlIHRvIHVzZSBnZW5lcmF0ZWQgdGVzdCBoZWFkZXIgb3B0aW9ucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3ODgwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIFdLUHJlZmVyZW5j
ZXNTZXQqVmFsdWVGb3JLZXkgU1BJIHRvIFdLUHJlZmVyZW5jZXNTZXQqVmFsdWVGb3JLZXlGb3JU
ZXN0aW5nCisgICAgICAgIHRvIG1ha2UgaXQgY2xlYXIgd2hhdCB0aGV5IGFyZSB1c2VkIGZvciBh
bmQgZm9yIGNvbnNpc3RlbmN5IHdpdGggV2ViS2l0TGVnYWN5LgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldEJv
b2xWYWx1ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJs
ZVZhbHVlRm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0VUludDMy
VmFsdWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdW
YWx1ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1
ZUZvcktleSk6IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVG
b3JLZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9y
S2V5KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktl
eSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQ
cml2YXRlLmg6CisKIDIwMjAtMTAtMTYgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIEludHJvZHVjZSBSZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkgdG8gbWFuYWdlIHRoZSByZXNvdXJjZXMgaW4gdGhlIEdQVSBQcm9jZXNz
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2Vz
LmNwcAkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tQcmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDIyICs3OCwyMiBAQCB2b2lk
IFdLUHJlZmVyZW5jZXNTZXRJbnRlcm5hbERlYnVnRmVhdHVyCiAgICAgdG9JbXBsKHByZWZlcmVu
Y2VzUmVmKS0+c2V0SW50ZXJuYWxEZWJ1Z0ZlYXR1cmVFbmFibGVkRm9yS2V5KHRvV1RGU3RyaW5n
KGludGVybmFsRGVidWdGZWF0dXJlS2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5j
ZXNTZXRCb29sVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9v
bCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVl
Rm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZh
bHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0
Qm9vbFZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1By
ZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNl
c1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdLUHJlZmVyZW5jZXNT
ZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNl
c1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZl
cmVuY2VzUmVmKS0+c2V0Qm9vbFZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHZhbHVlKTsK
IH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKK3Zv
aWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVu
Y2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQog
ewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldFVJbnQzMlZhbHVlRm9yS2V5KHRvV1RG
U3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFs
dWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFs
dWUsIFdLU3RyaW5nUmVmIGtleSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9y
S2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1Jl
ZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZikt
PnNldFN0cmluZ1ZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHRvV1RGU3RyaW5nKHZhbHVl
KSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2Vz
UmVmUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU2LDEwICs1NiwxMCBAQCBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzUmVz
ZXRBbGxJbnRlCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0SW50ZXJuYWxEZWJ1Z0Zl
YXR1cmVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiwgYm9vbCwgV0tTdHJpbmdSZWYpOwogCiAvLyBU
aGUgZm9sbG93aW5nIGdlbmVyaWMgc2V0dGVyIGZ1bmN0aW9ucyBhcmUgb25seSBpbnRlbmRlZCBm
b3IgdXNlIGJ5IHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUuCi1XS19FWFBPUlQgdm9pZCBXS1ByZWZl
cmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYs
IGJvb2wgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7Ci1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVu
Y2VzU2V0RG91YmxlVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwg
ZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJl
bmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYs
IHVpbnQzMl90IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVm
ZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIFdLU3RyaW5nUmVmIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQg
V0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1Jl
ZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VYUE9S
VCB2b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVm
ZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkp
OworV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVz
dGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1aW50MzJfdCB2YWx1ZSwgV0tT
dHJpbmdSZWYga2V5KTsKK1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1
ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJp
bmdSZWYgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7CiAKIC8vIEZvciBUZXN0IFJ1bm5lciBVc2Ug
b25seS4KIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNSZXNldFRlc3RSdW5uZXJPdmVycmlk
ZXMoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7CkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAyMC0xMC0xNyAg
U2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1Rlc3RpbmddIENvbnZl
cnQgRHVtcFJlbmRlclRyZWUgdG8gdXNlIGdlbmVyYXRlZCB0ZXN0IGhlYWRlciBvcHRpb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc4ODAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgYSBz
ZXQgb2Ygc2V0dGVycyB0byBmb3IgRHVtcFJlbmRlclRyZWUgdG8gdXNlIHdoZW4gc2V0dGluZyBw
cmVmZXJlbmNlcworICAgICAgICBieSBzdHJpbmcuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzLm1tOgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBfc3dpdGNoTmV0d29ya0xv
YWRlclRvTmV3VGVzdGluZ1Nlc3Npb25dKToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3Nl
dEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTpdKToKKyAgICAg
ICAgKCtbV2ViUHJlZmVyZW5jZXMgX2NsZWFyTmV0d29ya0xvYWRlclNlc3Npb25dKToKKyAgICAg
ICAgKC1bV2ViUHJlZmVyZW5jZXMgX3NldEJvb2xQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1
ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXRVSW50MzJQcmVmZXJl
bmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVu
Y2VzIF9zZXREb3VibGVQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6Cisg
ICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dp
dGhWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXRQcmVmZXJl
bmNlRm9yVGVzdFdpdGhWYWx1ZTpmb3JLZXk6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmll
dy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKwogMjAyMC0xMC0xNyAgU2FtIFdlaW5pZyAgPHdl
aW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQ29udmVydCBwcmVmZXJlbmNlcyBpbiBXZWJQcmVm
ZXJlbmNlc1ByaXZhdGUuaCB0byB1c2UgQHByb3BlcnR5IHN5bnRheCB0byBtYWtlIHRoZW0gbW9y
ZSBtYW5hZ2VhYmxlCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TY3JpcHRzL1ByZWZl
cmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVyZXMubW0uZXJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1NjcmlwdHMvUHJlZmVyZW5j
ZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5tbS5lcmIJKHJl
dmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1NjcmlwdHMvUHJlZmVy
ZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5tbS5lcmIJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
ICsgKE5TQXJyYXk8V2ViRmVhdHVyZSAqPiAqKV9leHBlcmltZW50YWxGZWF0dXJlcwogewogICAg
IHN0YXRpYyBOU0FycmF5PFdlYkZlYXR1cmUgKj4gKmZlYXR1cmVzID0gQFsKLTwlLSBmb3IgQHBy
ZWYgaW4gQGV4cGVyaW1lbnRhbEZlYXR1cmVzIGRvIC0lPgorPCUtIGZvciBAcHJlZiBpbiBAZXhw
ZXJpbWVudGFsRmVhdHVyZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3NlZCB9IGRvIC0lPgogPCUtIGlm
IEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5k
IC0lPgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU2NyaXB0cy9QcmVmZXJlbmNlc1Rl
bXBsYXRlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsRmVhdHVyZXMubW0uZXJiCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
V2ViUHJlZmVyZW5jZXNJbnRlcm5hbEZlYXR1cmVzLm1tLmVyYgkocmV2aXNpb24gMjY4NjQ4KQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9X
ZWJQcmVmZXJlbmNlc0ludGVybmFsRmVhdHVyZXMubW0uZXJiCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw3ICszNyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiArIChOU0FycmF5PFdlYkZlYXR1
cmUgKj4gKilfaW50ZXJuYWxGZWF0dXJlcwogewogICAgIHN0YXRpYyBOU0FycmF5PFdlYkZlYXR1
cmUgKj4gKmZlYXR1cmVzID0gQFsKLTwlLSBmb3IgQHByZWYgaW4gQGludGVybmFsRmVhdHVyZXMg
ZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGluIEBpbnRlcm5hbEZlYXR1cmVzLnNlbGVjdCB7IHxwfCBw
LmV4cG9zZWQgfSBkbyAtJT4KIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYgPCU9IEBw
cmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViVmlld1ByZWZlcmVuY2VzQ2hhbmdl
ZEdlbmVyYXRlZC5tbS5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
U2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJWaWV3UHJlZmVyZW5jZXNDaGFuZ2VkR2Vu
ZXJhdGVkLm1tLmVyYgkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJWaWV3UHJlZmVyZW5jZXNDaGFuZ2Vk
R2VuZXJhdGVkLm1tLmVyYgkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW1w
b3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKIAorI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNEZWZpbml0
aW9ucy5oIgogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2Vi
Vmlld0RhdGEuaCIKICNpbXBvcnQgPFdlYkNvcmUvRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmg+
CkBAIC00NCw3ICs0NSwxMSBAQAogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0g
QHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgorPCUtIGlmIEBwcmVmLmV4cG9zZWQgLSU+
CisgICAgc2V0dGluZ3Muc2V0PCU9IEBwcmVmLndlYmNvcmVOYW1lVXBwZXIgJT4oREVGQVVMVF9W
QUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4pOworPCUtIGVsc2UgLSU+CiAgICAgc2V0dGluZ3Mu
c2V0PCU9IEBwcmVmLndlYmNvcmVOYW1lVXBwZXIgJT4oW3ByZWZlcmVuY2VzIDwlPSBAcHJlZi5w
cmVmZXJlbmNlQWNjZXNzb3IgJT46QCI8JT0gQHByZWYucHJlZmVyZW5jZUtleSAlPiJdKTsKKzwl
LSBlbmQgLSU+CiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2VuZGlmCiA8JS0gZW5kIC0l
PgpAQCAtNTQsNyArNTksMTEgQEAKIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYgPCU9
IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KKzwlLSBpZiBAcHJlZi5leHBvc2VkIC0l
PgorICAgIFdlYkNvcmU6OkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0PCU9IEBwcmVmLndl
YmNvcmVOYW1lVXBwZXIgJT4oREVGQVVMVF9WQUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4pOwor
PCUtIGVsc2UgLSU+CiAgICAgV2ViQ29yZTo6RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpzZXQ8
JT0gQHByZWYud2ViY29yZU5hbWVVcHBlciAlPihbcHJlZmVyZW5jZXMgPCU9IEBwcmVmLnByZWZl
cmVuY2VBY2Nlc3NvciAlPjpAIjwlPSBAcHJlZi5wcmVmZXJlbmNlS2V5ICU+Il0pOworPCUtIGVu
ZCAtJT4KIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjZW5kaWYKIDwlLSBlbmQgLSU+CkBA
IC02NCw3ICs3MywxMSBAQAogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHBy
ZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgorPCUtIGlmIEBwcmVmLmV4cG9zZWQgLSU+Cisg
ICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXQ8
JT0gQHByZWYud2ViY29yZU5hbWVVcHBlciAlPihERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYu
bmFtZSAlPik7Cis8JS0gZWxzZSAtJT4KICAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldDwlPSBAcHJlZi53ZWJjb3JlTmFtZVVwcGVyICU+KFtw
cmVmZXJlbmNlcyA8JT0gQHByZWYucHJlZmVyZW5jZUFjY2Vzc29yICU+OkAiPCU9IEBwcmVmLnBy
ZWZlcmVuY2VLZXkgJT4iXSk7Cis8JS0gZW5kIC0lPgogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAt
JT4KICNlbmRpZgogPCUtIGVuZCAtJT4KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkocmV2aXNpb24gMjY4NjQ4KQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTY2MCwyNiArMTY2MCw2IEBAICsgKHZvaWQpX3NldElCQ3JlYXRvcklEOihOU1N0
cmluZyAqKXN0cmkKICAgICBbb2xkIHJlbGVhc2VdOwogfQogCi0rICh2b2lkKV9zd2l0Y2hOZXR3
b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbgotewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgV2ViVGhyZWFkTG9jaygpOwotI2VuZGlmCi0gICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
TWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7Ci19Ci0KLSsgKHZvaWQpX2NsZWFyTmV0
d29ya0xvYWRlclNlc3Npb24KLXsKLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1
bHRTdG9yYWdlU2Vzc2lvbigpLmRlbGV0ZUFsbENvb2tpZXMoKTsKLX0KLQotKyAodm9pZClfc2V0
Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29r
aWVBY2NlcHRQb2xpY3kpcG9saWN5Ci17Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1bHRT
dG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFn
ZSk7IC8vIFdpbGwgZmFpbCB3aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9O
ZXdUZXN0aW5nU2Vzc2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhhbmQuCi0gICAgQ0ZIVFRQ
Q29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBw
b2xpY3kpOwotfQotCiAtIChCT09MKWlzRE9NUGFzdGVBbGxvd2VkCiB7CiAgICAgcmV0dXJuIFtz
ZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0RE9NUGFzdGVBbGxvd2VkUHJlZmVyZW5jZUtleV07
CkBAIC0xOTY2LDExICsxOTQ2LDYgQEAgLSAodm9pZCl3aWxsQWRkVG9XZWJWaWV3CiAgICAgKytf
cHJpdmF0ZS0+bnVtV2ViVmlld3M7CiB9CiAKLS0gKHZvaWQpX3NldFByZWZlcmVuY2VGb3JUZXN0
V2l0aFZhbHVlOihOU1N0cmluZyAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKLXsKLSAg
ICBbc2VsZiBfc2V0U3RyaW5nVmFsdWU6dmFsdWUgZm9yS2V5OmtleV07Ci19Ci0KIC0gKHZvaWQp
c2V0RnVsbFNjcmVlbkVuYWJsZWQ6KEJPT0wpZmxhZwogewogICAgIFtzZWxmIF9zZXRCb29sVmFs
dWU6ZmxhZyBmb3JLZXk6V2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5XTsKQEAg
LTMwMTMsNiArMjk4OCw1MSBAQCAtICh2b2lkKV9zZXRFbmFibGVkOihCT09MKXZhbHVlIGZvckZl
YXR1CiAKIEBlbmQKIAorCitAaW1wbGVtZW50YXRpb24gV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZh
dGVUZXN0aW5nKQorCisrICh2b2lkKV9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vz
c2lvbgoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgV2ViVGhyZWFkTG9jaygpOwor
I2VuZGlmCisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdT
ZXNzaW9uKCk7Cit9CisKKysgKHZvaWQpX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNv
b2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeQoreworICAg
IFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdl
KCk7CisgICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90IGNh
bGxlZCBiZWZvcmVoYW5kLgorICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQ
b2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKK30KKworKyAodm9pZClfY2xlYXJO
ZXR3b3JrTG9hZGVyU2Vzc2lvbgoreworICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVm
YXVsdFN0b3JhZ2VTZXNzaW9uKCkuZGVsZXRlQWxsQ29va2llcygpOworfQorCistICh2b2lkKV9z
ZXRCb29sUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KEJPT0wpdmFsdWUgZm9yS2V5OihO
U1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6dmFsdWUgZm9yS2V5Omtl
eV07Cit9CisKKy0gKHZvaWQpX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVl
Oih1aW50MzJfdCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5Cit7CisgICAgW3NlbGYgX3Nl
dEludGVnZXJWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAodm9pZClfc2V0RG91Ymxl
UHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KGRvdWJsZSl2YWx1ZSBmb3JLZXk6KE5TU3Ry
aW5nICopa2V5Cit7CisgICAgW3NlbGYgX3NldEZsb2F0VmFsdWU6dmFsdWUgZm9yS2V5OmtleV07
Cit9CisKKy0gKHZvaWQpX3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihO
U1N0cmluZyAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2VsZiBfc2V0
U3RyaW5nVmFsdWU6dmFsdWUgZm9yS2V5OmtleV07Cit9CisKK0BlbmQKKwogQGltcGxlbWVudGF0
aW9uIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlUHJlZmVyZW5jZXNDb252ZXJ0ZWRUb1dlYkZl
YXR1cmUpCiAKIC0gKEJPT0wpdXNlckdlc3R1cmVQcm9taXNlUHJvcGFnYXRpb25FbmFibGVkCklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJl
ZmVyZW5jZXNQcml2YXRlLmgJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTg5LDEzICs4OSw2IEBAIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGUpCiAr
ICh2b2lkKV9zZXRJbml0aWFsRGVmYXVsdFRleHRFbmNvZGluZ1RvU3lzdGVtRW5jb2Rpbmc7CiAr
ICh2b2lkKV9zZXRJQkNyZWF0b3JJRDooTlNTdHJpbmcgKilzdHJpbmc7CiAKLS8vIEZvciBEdW1w
UmVuZGVyVHJlZSB1c2Ugb25seS4KLSsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rl
c3RpbmdTZXNzaW9uOwotKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29v
a2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpY29va2llQWNjZXB0UG9s
aWN5OwotKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbjsKLS8vIFVzZWQgdG8gc2V0
IHByZWZlcmVuY2Ugc3BlY2lmaWVkIGluIHRoZSB0ZXN0IHZpYSBMYXlvdXRUZXN0Q29udHJvbGxl
ci5vdmVycmlkZVByZWZlcmVuY2UoLi4pLgotLSAodm9pZClfc2V0UHJlZmVyZW5jZUZvclRlc3RX
aXRoVmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKLQogKyAo
dm9pZClzZXRXZWJLaXRMaW5rVGltZVZlcnNpb246KGludCl2ZXJzaW9uOwogCiAvLyBGb3IgV2Vi
VmlldydzIHVzZSBvbmx5LgpAQCAtMzEwLDYgKzMwMywxOCBAQCBAaW50ZXJmYWNlIFdlYlByZWZl
cmVuY2VzIChXZWJQcml2YXRlRmVhCiAtICh2b2lkKV9zZXRFbmFibGVkOihCT09MKXZhbHVlIGZv
ckZlYXR1cmU6KFdlYkZlYXR1cmUgKilmZWF0dXJlOwogQGVuZAogCitAaW50ZXJmYWNlIFdlYlBy
ZWZlcmVuY2VzIChXZWJQcml2YXRlVGVzdGluZykKKysgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2Fk
ZXJUb05ld1Rlc3RpbmdTZXNzaW9uOworKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJT
ZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpY29va2ll
QWNjZXB0UG9saWN5OworKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbjsKKworLSAo
dm9pZClfc2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihCT09MKXZhbHVlIGZv
cktleTooTlNTdHJpbmcgKilrZXk7CistICh2b2lkKV9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVz
dGluZ1dpdGhWYWx1ZToodWludDMyX3QpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0g
KHZvaWQpX3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihkb3VibGUpdmFs
dWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZvaWQpX3NldFN0cmluZ1ByZWZlcmVuY2VG
b3JUZXN0aW5nV2l0aFZhbHVlOihOU1N0cmluZyAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilr
ZXk7CisKK0BlbmQKKwogLy8gRklYTUU6IElmIHRoZXNlIGFyZSBub3QgdXNlZCBhbnl3aGVyZSwg
d2Ugc2hvdWxkIHJlbW92ZSB0aGVtIGFuZCBvbmx5IHVzZSBXZWJGZWF0dXJlIG1lY2hhbmlzbSBm
b3IgdGhlIHByZWZlcmVuY2UuCiBAaW50ZXJmYWNlIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRl
UHJlZmVyZW5jZXNDb252ZXJ0ZWRUb1dlYkZlYXR1cmUpCiBAcHJvcGVydHkgKG5vbmF0b21pYykg
Qk9PTCB1c2VyR2VzdHVyZVByb21pc2VQcm9wYWdhdGlvbkVuYWJsZWQ7CkluZGV4OiBUb29scy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg2NTkp
CisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw5OSBAQAorMjAy
MC0xMC0xNyAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1Rlc3Rp
bmddIENvbnZlcnQgRHVtcFJlbmRlclRyZWUgdG8gdXNlIGdlbmVyYXRlZCB0ZXN0IGhlYWRlciBv
cHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTc4ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
dWxseSBzdXBwb3J0IHVzZSBvZiBhbnkgV2ViUHJlZmVyZW5jZXMqLnlhbWwgcHJlZmVyZW5jZSBp
biBEdW1wUmVuZGVyVHJlZSAoZm9yIG1hY09TKSBieToKKyAgICAgICAgICAgIC0gTW92aW5nIER1
bXBSZW5kZXJUcmVlJ3MgVGVzdE9wdGlvbnMgdG8gYmUgZnVsbHkgYmFja2VkIGJ5IFRlc3RGZWF0
dXJlcyBsaWtlIFdlYktpdFRlc3RSdW5ubmVyLgorICAgICAgICAgICAgLSBBZG9wdGluZyBuZXcg
V2ViUHJlZmVyZW5jZXMgU1BJIGZvciBzZXR0aW5nIGFueSBwcmVmZXJlbmNlIGJ5IGtleS4KKyAg
ICAgICAgICAgIC0gR2VuZXJhdGluZyBtYXBwaW5nIGZyb20gV2ViUHJlZmVyZW5jZXMqLnlhbWwg
dG8gV2ViS2l0TGVnYWN5IGtleSBuYW1lcy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0NN
YWtlTGlzdHMudHh0OgorICAgICAgICBHZW5lcmF0ZSBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktp
dExlZ2FjeUtleU1hcHBpbmcuY3BwCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICBBZGQgbmV3IHRlbXBsYXRlIGZpbGUs
IFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiLCBhbmQg
YWRkCisgICAgICAgIERlcml2ZWRTb3VyY2VzLm1ha2UgYW5kIGdlbmVyYXRlLWRlcml2ZWQtc291
cmNlcy5zaCwgc28gdGhhdCBpZiBlaXRoZXIgb2YgdGhlbSBjaGFuZ2UKKyAgICAgICAgdGhlIERl
cml2ZWRTb3VyY2VzLm1ha2UgaXMgYWN0dWFsbHkgaW52b2tlZC4KKyAKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgQWRk
cyBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgU3dpdGNo
IGdlbmVyYXRpb24gb2YgcHJlZmVyZW5jZXMgdG8gdXNlIGEgc3RhdGljIHBhdHRlcm4gdG8gYXZv
aWQgaXNzdWVzIHdpdGggY2lyY3VsYXIgZGVwZW5kZW5jaWVzLgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgQWRkcyBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9U
ZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYjogQWRkZWQu
CisgICAgICAgIFRlbXBsYXRlIGZvciBnZW5lcmF0aW5nIG1hcHBpbmcgZnJvbSBXZWJQcmVmZXJl
bmNlcyoueWFtbCBrZXkgbmFtZXMgdG8gV2ViS2l0TGVnYWN5IGtleSBuYW1lcy4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9UZXN0T3B0aW9ucy5oOgorICAgICAgICBTd2l0Y2ggdG8gYSBtb2RlbCBtb3JlIHNpbWls
YXIgdG8gdGhhdCBpbiBXZWJLaXRUZXN0UnVubmVyLCB3aGVyZSBUZXN0T3B0aW9ucyBzdG9yZXMg
dGhlIHBhc3NlZCBpbiAKKyAgICAgICAgVGVzdEZlYXR1cmVzIGFuZCBvbmx5IGV4cG9zZXMgdmFs
dWVzIHRoYXQgaGF2ZSBiZWVuIHNldCBvciBkZWZhdWx0IHZhbHVlcyB3aGVuIG5lZWRlZC4KKyAg
ICAgICAgCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgor
ICAgICAgICAodG9OUyk6CisgICAgICAgIEFkZCBoZWxwZXIgdG8gY29udmVydCBmcm9tIGEgc3Rk
OjpzdHJpbmcgdG8gYW4gTlNTdHJpbmcuCisKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXdBbmRPZmZz
Y3JlZW5XaW5kb3cpOgorICAgICAgICBOb3cgdGhhdCB3ZSBhcmVuJ3QgbmVjY2Vzc2FyaWx5IHNl
dHRpbmcgYWxsIHByZWZlcmVuY2VzIGVhY2ggdGVzdCwgd2UgbmVlZCB0byBmdWxseSByZXNldCB0
aGUKKyAgICAgICAgV2ViUHJlZmVyZW5jZXMgb24gZWFjaCBydW4gYnkgY3JlYXRpbmcgYSBuZXcg
b25lLiBUaGlzIG1lYW5zIHJlbW92aW5nIHRoZSB1c2VzIG9mIAorICAgICAgICBbV2ViUHJlZmVy
ZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10sIGFuZCBpbnN0ZWFkIGdyYWJiaW5nIHRoZSBXZWJW
aWV3J3MgcHJlZmVyZW5jZXMgd2hlbiBuZWVkZWQuCisKKyAgICAgICAgKHJlc2V0V2ViUHJlZmVy
ZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICBNb3ZlcyBzb21lIHNjYXR0ZXJlZCBk
ZWZhdWx0IHZhbHVlIHNldHRpbmcgaGVyZS4gUmVtb3ZlIGFzc2VydCB0aGF0IGlzIG5vIGxvbmdl
ciBhY2N1cmF0ZQorICAgICAgICBub3cgdGhhdCB3ZSBkb24ndCB1c2Ugc3RhbmRhcmRQcmVmZXJl
bmNlcyBhbmQgd2lsbCBub3QgaGF2ZSBzZXQgdGhpcyB2YWx1ZSBieSB0aGlzIHBvaW50LgorCisg
ICAgICAgIChzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKToKKyAgICAgICAgVXNlIG5l
dyBfc2V0KlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleSogU1BJIHRvIHNldCBh
bnkgc3BlY2lmaWVkIHByZWZlcm5lY2VzLgorCisgICAgICAgIChzZXREZWZhdWx0c1RvQ29uc2lz
dGVudFZhbHVlc0ZvclRlc3RpbmcpOgorICAgICAgICBNb3ZlIGRlZmF1bHRzIHNldCBoZXJlIHRv
IHRoZSBtb3JlIGFwcHJvcHJpYXRlIGFuZCBjZW50cmFsaXplZCByZXNldFdlYlByZWZlcmVuY2Vz
VG9Db25zaXN0ZW50VmFsdWVzLgorCisgICAgICAgIChzZXRKU0NPcHRpb25zKToKKyAgICAgICAg
VXNlIG5ldyBnZXR0ZXIgZnVuY3Rpb24gcmF0aGVyIHRoYW4gZGlyZWN0IG1lbWJlciBhY2Nlc3Mu
CisKKyAgICAgICAgKHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgRnVs
bHkgcmVzZXQgcHJlZmVybmVjZXMgYnkgYWxsb2NhdGluZyBhIG5ldyBXZWJQcmVmZXJlbmNlcyBv
biByZXNldCBhbmQgdXNlIG5ldyBUZXN0T3B0aW9ucyBnZXR0ZXIKKyAgICAgICAgZnVuY3Rpb25z
LgorCisgICAgICAgICh0ZXN0T3B0aW9uc0ZvclRlc3QpOgorICAgICAgICBTZWVkIFRlc3RGZWF0
dXJlcyB3aXRoIGRlZmF1bHQgZ2xvYmFsIHZhbHVlcywgbWF0Y2hpbmcgdGhlIGlkaW9tIGluIFdl
YktpdFRlc3RSdW5uZXIuCisKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICBVc2UgbmV3IGdl
dHRlciBmdW5jdGlvbiByYXRoZXIgdGhhbiBkaXJlY3QgbWVtYmVyIGFjY2Vzcy4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgorICAgICAgICAoVGVzdFJ1
bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNl
dFVzZXJTdHlsZVNoZWV0TG9jYXRpb24pOgorICAgICAgICAoVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQ
cmVmZXJlbmNlKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldENhY2hlTW9kZWwpOgorICAgICAg
ICBBY2Nlc3MgdGhlIGNvcnJlY3QgV2ViUHJlZmVyZW5jZXMgdmlhIHRoZSBXZWJWaWV3LCByYXRo
ZXIgdGhhbiBhc3N1bWluZyBzdGFuZGFyZFByZWZlcmVuY2VzCisgICAgICAgIGFyZSBiZWluZyB1
c2VkLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW06CisgICAg
ICAgICgtW1VJRGVsZWdhdGUgcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rpbmc6XSk6
CisgICAgICAgIFVzZSBuZXcgZ2V0dGVyIGZ1bmN0aW9uIHJhdGhlciB0aGFuIGRpcmVjdCBtZW1i
ZXIgYWNjZXNzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcDoKKyAgICAgICAgKHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMpOgor
ICAgICAgICAoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUpOgorICAgICAgICAoc2V0V2Vi
UHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9ucyk6CisgICAgICAgIChzZXRKU0NPcHRpb25zKToKKyAg
ICAgICAgKHRlc3RPcHRpb25zRm9yVGVzdCk6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAg
S2VlcCBXaW5kb3dzIER1bXBSZW5kZXJUcmVlIHdvcmtpbmcgd2l0aCB0aGUgbmV3IFRlc3RPcHRp
b25zIGJ5IGdldHRpbmcgZmVhdHVyZSB2YWx1ZXMgYnkKKyAgICAgICAgc3RyaW5nIGtleXMgd2l0
aCBzcGVjaWZpZWQgZGVmYXVsdHMgYW5kIGFkb3B0aW5nIG5ldyBnZXR0ZXIgZnVuY3Rpb25zLiBJ
biB0aGUgZnV0dXJlLCB3ZQorICAgICAgICB3aWxsIGFkZCBzaW1pbGFyIFNQSSBhcyB3YXMgYWRk
ZWQgZm9yIG1hYyBXZWJLaXRMZWdhY3kgdG8gV2luZG93cyBXZWJLaXRMZWdhY3kgdG8gYXZvaWQg
dGhpcy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVu
dFZhbHVlcyk6CisgICAgICAgIFVwZGF0ZSBmb3IgcmVuYW1lZCBXS1ByZWZlcmVuY2VzUmVmIFNQ
SS4KKwogMjAyMC0xMC0xNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0ZsYXRwYWsgU0RLXSBmbGF0cGFrdXRpbHMucHkgcmVwb3J0cyAiS2V5RXJy
b3I6ICdnY2MnIiBlcnJvciBpZiB1c2luZyB3aXRoIGljZWNjIGFuZCB0b29sY2hhaW5zIGFyZW4n
dCBnZW5lcmF0ZWQgeWV0CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dAkocmV2
aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgbGlzdChBUFBFTkQgRHVtcFJlbmRlclRyZWVf
UFJJVkFURV9JTkNMVQogKQogCiBzZXQoRHVtcFJlbmRlclRyZWVfV0VCX1BSRUZFUkVOQ0VTX1RF
TVBMQVRFUworICAgICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVt
cGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJi
CiAgICAgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
VGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCiApCiAKQEAgLTUzLDEyICs1NCwxMyBAQCBz
ZXQoRHVtcFJlbmRlclRyZWVfV0VCX1BSRUZFUkVOQ0VTCiBzZXRfc291cmNlX2ZpbGVzX3Byb3Bl
cnRpZXMoJHtEdW1wUmVuZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVN9IFBST1BFUlRJRVMgR0VORVJB
VEVEIFRSVUUpCiAKIGFkZF9jdXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtEdW1wUmVuZGVy
VHJlZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaAorICAg
IE9VVFBVVCAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9L1Rlc3RPcHRpb25z
R2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgJHtEdW1wUmVuZGVyVHJlZV9ERVJJ
VkVEX1NPVVJDRVNfRElSfS9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaAogICAgIERFUEVORFMg
JHtEdW1wUmVuZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVTfSAke0R1bXBSZW5kZXJU
cmVlX1dFQl9QUkVGRVJFTkNFU30gV1RGX0NvcHlQcmVmZXJlbmNlcwotICAgIENPTU1BTkQgJHtS
VUJZX0VYRUNVVEFCTEV9ICR7V1RGX1NDUklQVFNfRElSfS9HZW5lcmF0ZVByZWZlcmVuY2VzLnJi
IC0tZnJvbnRlbmQgV2ViS2l0TGVnYWN5IC0tYmFzZSAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVy
ZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCAtLWRlYnVnICR7V1RGX1NDUklQVFNfRElSfS9QcmVm
ZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0RlYnVnLnlhbWwgLS1leHBlcmltZW50YWwgJHtXVEZfU0NS
SVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgLS1p
bnRlcm5hbCAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRl
cm5hbC55YW1sIC0tb3V0cHV0RGlyICIke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19E
SVJ9IiAtLXRlbXBsYXRlICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2Vz
VGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYgorICAgIENPTU1BTkQgJHtS
VUJZX0VYRUNVVEFCTEV9ICR7V1RGX1NDUklQVFNfRElSfS9HZW5lcmF0ZVByZWZlcmVuY2VzLnJi
IC0tZnJvbnRlbmQgV2ViS2l0TGVnYWN5IC0tYmFzZSAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVy
ZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCAtLWRlYnVnICR7V1RGX1NDUklQVFNfRElSfS9QcmVm
ZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0RlYnVnLnlhbWwgLS1leHBlcmltZW50YWwgJHtXVEZfU0NS
SVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgLS1p
bnRlcm5hbCAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRl
cm5hbC55YW1sIC0tb3V0cHV0RGlyICIke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19E
SVJ9IiAtLXRlbXBsYXRlICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2Vz
VGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAu
ZXJiIC0tdGVtcGxhdGUgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNU
ZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCiAgICAgVkVSQkFUSU0pCiAK
IGxpc3QoQVBQRU5EIER1bXBSZW5kZXJUcmVlX1NPVVJDRVMKKyAgICAke0R1bXBSZW5kZXJUcmVl
X0RFUklWRURfU09VUkNFU19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5
TWFwcGluZy5jcHAKICAgICAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9L1Rl
c3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCiApCiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVt
cFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjY4
NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdAkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDEwIEBAICQoQlVJTFRfUFJPRFVDVFNfRElS
KS91c3IvbG9jYWwvaW5jbHVkZS8KICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5j
bHVkZS93dGYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwK
ICQoUFJPSkVDVF9ESVIpLy4uL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRp
bmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwKICQoUFJPSkVDVF9ESVIpL0JpbmRpbmdzL0NvZGVH
ZW5lcmF0b3JEdW1wUmVuZGVyVHJlZS5wbQorJChQUk9KRUNUX0RJUikvRGVyaXZlZFNvdXJjZXMu
bWFrZQogJChQUk9KRUNUX0RJUikvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0
aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIKKyQoUFJPSkVDVF9ESVIpL1NjcmlwdHMvUHJlZmVyZW5j
ZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNw
cC5lcmIKKyQoUFJPSkVDVF9ESVIpL1NjcmlwdHMvZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzLnNo
CiAkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvQ29kZUdlbmVyYXRvci5wbQogJChXRUJD
T1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0lETEF0dHJpYnV0ZXMuanNvbgogJChXRUJDT1JFX1BS
SVZBVEVfSEVBREVSU19ESVIpL0lETFBhcnNlci5wbQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHJldmlzaW9u
IDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDMgKzIsNCBAQAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVlL0pTVUlTY3JpcHRDb250cm9sbGVy
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVl
L0pTVUlTY3JpcHRDb250cm9sbGVyLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zR2Vu
ZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjMsMjkgKzIz
LDEyIEBACiAKIFJVQlkgPSBydWJ5CiAKLVdFQl9QUkVGRVJFTkNFUyA9IFwKLSAgICAke1dURl9C
VUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCBcCi0gICAg
JHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRGVidWcu
eWFtbCBcCi0gICAgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZl
cmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgXAotICAgICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9Q
cmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwgXAotIwotCi1XRUJfUFJFRkVS
RU5DRVNfVEVNUExBVEVTID0gXAotICAgICQoRHVtcFJlbmRlclRyZWUpL1NjcmlwdHMvUHJlZmVy
ZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiIFwKLSMKLVdFQl9Q
UkVGRVJFTkNFU19GSUxFUyA9ICQoYmFzZW5hbWUgJChub3RkaXIgJChXRUJfUFJFRkVSRU5DRVNf
VEVNUExBVEVTKSkpCi1XRUJfUFJFRkVSRU5DRVNfUEFUVEVSTlMgPSAkKHN1YnN0IC5lcmIsLCQo
V0VCX1BSRUZFUkVOQ0VTX0ZJTEVTKSkKLQotYWxsIDogJChXRUJfUFJFRkVSRU5DRVNfRklMRVMp
Ci0KLSQoV0VCX1BSRUZFUkVOQ0VTX1BBVFRFUk5TKSA6ICQoV1RGX0JVSUxEX1NDUklQVFNfRElS
KS9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiICQoV0VCX1BSRUZFUkVOQ0VTX1RFTVBMQVRFUykgJChX
RUJfUFJFRkVSRU5DRVMpCi0JJChSVUJZKSAkPCAtLWZyb250ZW5kIFdlYktpdExlZ2FjeSAtLWJh
c2UgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlh
bWwgLS1kZWJ1ZyAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVy
ZW5jZXNEZWJ1Zy55YW1sIC0tZXhwZXJpbWVudGFsICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9Q
cmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIC0taW50ZXJuYWwgJHtX
VEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwu
eWFtbCAkKGFkZHByZWZpeCAtLXRlbXBsYXRlICwgJChXRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVT
KSkKLQotCiBVSVNDUklQVENPTlRFWFRfRElSID0gJChEdW1wUmVuZGVyVHJlZSkvLi4vVGVzdFJ1
bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MKK0RVTVBSRU5ERVJUUkVFX1BSRUZF
UkVOQ0VTX1RFTVBMQVRFU19ESVIgPSAkKER1bXBSZW5kZXJUcmVlKS9TY3JpcHRzL1ByZWZlcmVu
Y2VzVGVtcGxhdGVzCiAKIFZQQVRIID0gXAogICAgICQoVUlTQ1JJUFRDT05URVhUX0RJUikgXAor
ICAgICQoRFVNUFJFTkRFUlRSRUVfUFJFRkVSRU5DRVNfVEVNUExBVEVTX0RJUikgXAogIwogCiBV
SUNPTlRFWFRfSU5URVJGQUNFUyA9IFwKQEAgLTcxLDMgKzU0LDIxIEBAIGFsbCA6IFwKICAgICAk
KFVJQ09OVEVYVF9JTlRFUkZBQ0VTOiU9SlMlLmgpIFwKICAgICAkKFVJQ09OVEVYVF9JTlRFUkZB
Q0VTOiU9SlMlLmNwcCkgXAogIworCisKK1dFQl9QUkVGRVJFTkNFUyA9IFwKKyAgICAke1dURl9C
VUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCBcCisgICAg
JHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRGVidWcu
eWFtbCBcCisgICAgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZl
cmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgXAorICAgICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9Q
cmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwgXAorIworCitXRUJfUFJFRkVS
RU5DRVNfR0VORVJBVEVEX0ZJTEVTID0gXAorICAgIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0
TGVnYWN5S2V5TWFwcGluZy5jcHAgXAorICAgIFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oIFwK
KyMKKworYWxsIDogJChXRUJfUFJFRkVSRU5DRVNfR0VORVJBVEVEX0ZJTEVTKQorCiskKFdFQl9Q
UkVGRVJFTkNFU19HRU5FUkFURURfRklMRVMpIDogJSA6ICUuZXJiICQoV0VCX1BSRUZFUkVOQ0VT
KSAkKFdURl9CVUlMRF9TQ1JJUFRTX0RJUikvR2VuZXJhdGVQcmVmZXJlbmNlcy5yYgorCSQoUlVC
WSkgJChXVEZfQlVJTERfU0NSSVBUU19ESVIpL0dlbmVyYXRlUHJlZmVyZW5jZXMucmIgLS1mcm9u
dGVuZCBXZWJLaXRMZWdhY3kgLS1iYXNlICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJl
bmNlcy9XZWJQcmVmZXJlbmNlcy55YW1sIC0tZGVidWcgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9
L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRhbCAke1dU
Rl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50
YWwueWFtbCAtLWludGVybmFsICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9X
ZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwgLS10ZW1wbGF0ZSAkPApJbmRleDogVG9vbHMvRHVt
cFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL1Rlc3RPcHRpb25zLmNwcAkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw0NCBA
QAogCiBuYW1lc3BhY2UgV1RSIHsKIAorY29uc3QgVGVzdEZlYXR1cmVzJiBUZXN0T3B0aW9uczo6
ZGVmYXVsdHMoKQoreworICAgIHN0YXRpYyBUZXN0RmVhdHVyZXMgZmVhdHVyZXM7CisgICAgaWYg
KGZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMuZW1wdHkoKSkgeworICAgICAgICBm
ZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzID0geworICAgICAgICAgICAgLy8gVGhl
c2UgYXJlIFdlYlByZWZlcmVuY2UgdmFsdWVzIHRoYXQgbXVzdCBhbHdheXMgYmUgc2V0IGFzIHRo
ZXkgbWF5CisgICAgICAgICAgICAvLyBkaWZmZXIgZnJvbSB0aGUgZGVmYXVsdCBzZXQgaW4gdGhl
IFdlYlByZWZlcmVuY2VzKi55YW1sIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICB7ICJBbGxv
d0Nyb3NzT3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyIsIGZhbHNlIH0sCisg
ICAgICAgICAgICB7ICJBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzIiwgdHJ1ZSB9LAorICAg
ICAgICAgICAgeyAiQWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAg
ICAgICB7ICJBdHRhY2htZW50RWxlbWVudEVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAg
eyAiVXNlc0JhY2tGb3J3YXJkQ2FjaGUiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQ29sb3JG
aWx0ZXJFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkluc3BlY3RvckFkZGl0aW9u
c0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiSW50ZXJzZWN0aW9uT2JzZXJ2ZXJF
bmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIktleWdlbkVsZW1lbnRFbmFibGVkIiwg
ZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIk1lbnVJdGVtRWxlbWVudEVuYWJsZWQiLCBmYWxzZSB9
LAorICAgICAgICAgICAgeyAiTW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQiLCB0cnVlIH0sCisK
KyAgICAgICAgICAgIHsgIkNTU0xvZ2ljYWxFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAg
IHsgIkxpbmVIZWlnaHRVbml0c0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiU2Vs
ZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllc0VuYWJsZWQiLCB0cnVlIH0sCisgICAgICAgICAg
ICB7ICJMYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCIsIHRydWUgfSwK
KworICAgICAgICAgICAgeyAiQWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCIsIGZhbHNlIH0sCisg
ICAgICAgICAgICB7ICJBc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZCIs
IGZhbHNlIH0sCisgICAgICAgICAgICB7ICJBc3luY0NsaXBib2FyZEFQSUVuYWJsZWQiLCBmYWxz
ZSB9LAorICAgICAgICAgICAgeyAiQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCIsIGZh
bHNlIH0sCisgICAgICAgICAgICB7ICJDb250YWN0UGlja2VyQVBJRW5hYmxlZCIsIGZhbHNlIH0s
CisgICAgICAgICAgICB7ICJDb3JlTWF0aE1MRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAg
ICB7ICJSZXF1ZXN0SWRsZUNhbGxiYWNrRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7
ICJSZXNpemVPYnNlcnZlckVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiV2ViR1BV
RW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgIH07CisgICAgfQorICAgIHJldHVybiBmZWF0dXJl
czsKK30KKwogY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBUZXN0SGVhZGVy
S2V5VHlwZT4mIFRlc3RPcHRpb25zOjprZXlUeXBlTWFwcGluZygpCiB7CiAgICAgc3RhdGljIGNv
bnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgVGVzdEhlYWRlcktleVR5cGU+IG1h
cCB7CkBAIC00Nyw1NiArODUsNDcgQEAgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3Ry
aW5nLCBUZQogICAgIHJldHVybiBtYXA7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRp
YyB2b2lkIHNldFZhbHVlSWZTZXRJbk1hcChUJiB2YWx1ZVRvU2V0LCBzdGQ6OnN0cmluZyBrZXks
IGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgVD4mIG1hcCkKK2Jvb2wgVGVz
dE9wdGlvbnM6OndlYlZpZXdJc0NvbXBhdGlibGVXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9u
cyYgb3B0aW9ucykgY29uc3QKK3sKKyAgICBpZiAobV9mZWF0dXJlcy5leHBlcmltZW50YWxGZWF0
dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy5pbnRlcm5hbERlYnVnRmVhdHVyZXMg
IT0gb3B0aW9ucy5tX2ZlYXR1cmVzLmludGVybmFsRGVidWdGZWF0dXJlcykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMg
IT0gb3B0aW9ucy5tX2ZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy5kb3VibGVXZWJQcmVmZXJlbmNlRmVh
dHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLmRvdWJsZVdlYlByZWZlcmVuY2VGZWF0dXJlcykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLnVpbnQzMldlYlByZWZl
cmVuY2VGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMudWludDMyV2ViUHJlZmVyZW5jZUZl
YXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuc3RyaW5n
V2ViUHJlZmVyZW5jZUZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5zdHJpbmdXZWJQcmVm
ZXJlbmNlRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJl
cy5ib29sVGVzdFJ1bm5lckZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5ib29sVGVzdFJ1
bm5lckZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMu
ZG91YmxlVGVzdFJ1bm5lckZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5kb3VibGVUZXN0
UnVubmVyRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJl
cy5zdHJpbmdUZXN0UnVubmVyRmVhdHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLnN0cmluZ1Rl
c3RSdW5uZXJGZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1
cmVzLnN0cmluZ1ZlY3RvclRlc3RSdW5uZXJGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMu
c3RyaW5nVmVjdG9yVGVzdFJ1bm5lckZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgZmVhdHVyZVZhbHVl
KHN0ZDo6c3RyaW5nIGtleSwgVCBkZWZhdWx0VmFsdWUsIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21h
cDxzdGQ6OnN0cmluZywgVD4mIG1hcCkKIHsKICAgICBhdXRvIGl0ID0gbWFwLmZpbmQoa2V5KTsK
LSAgICBpZiAoaXQgPT0gbWFwLmVuZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgdmFsdWVUb1Nl
dCA9IGl0LT5zZWNvbmQ7Ci19Ci0KLVRlc3RPcHRpb25zOjpUZXN0T3B0aW9ucyhUZXN0RmVhdHVy
ZXMgdGVzdEZlYXR1cmVzKQotewotICAgIHNldFZhbHVlSWZTZXRJbk1hcChhbGxvd0Nyb3NzT3Jp
Z2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscywgIkFsbG93Q3Jvc3NPcmlnaW5TdWJy
ZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJl
bmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChhbGxvd1RvcE5hdmlnYXRpb25U
b0RhdGFVUkxzLCAiQWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyIsIHRlc3RGZWF0dXJlcy5i
b29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxl
QWNjZWxlcmF0ZWREcmF3aW5nLCAiQWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCIsIHRlc3RGZWF0
dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAo
ZW5hYmxlQXR0YWNobWVudEVsZW1lbnQsICJBdHRhY2htZW50RWxlbWVudEVuYWJsZWQiLCB0ZXN0
RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldElu
TWFwKGVuYWJsZUJhY2tGb3J3YXJkQ2FjaGUsICJVc2VzQmFja0ZvcndhcmRDYWNoZSIsIHRlc3RG
ZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5N
YXAoZW5hYmxlQ29sb3JGaWx0ZXIsICJDb2xvckZpbHRlckVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMu
Ym9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJs
ZUluc3BlY3RvckFkZGl0aW9ucywgIkluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQiLCB0ZXN0RmVh
dHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFw
KGVuYWJsZUludGVyc2VjdGlvbk9ic2VydmVyLCAiSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbmFibGVk
IiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVl
SWZTZXRJbk1hcChlbmFibGVLZXlnZW5FbGVtZW50LCAiS2V5Z2VuRWxlbWVudEVuYWJsZWQiLCB0
ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNl
dEluTWFwKGVuYWJsZU1lbnVJdGVtRWxlbWVudCwgIk1lbnVJdGVtRWxlbWVudEVuYWJsZWQiLCB0
ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNl
dEluTWFwKGVuYWJsZU1vZGVybk1lZGlhQ29udHJvbHMsICJNb2Rlcm5NZWRpYUNvbnRyb2xzRW5h
YmxlZCIsIHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLQotICAgIHNl
dFZhbHVlSWZTZXRJbk1hcChlbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkLCAiZW5hYmxl
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCIsIHRlc3RGZWF0dXJlcy5ib29sVGVzdFJ1bm5lckZl
YXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJy
LCAiZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIiwgdGVzdEZlYXR1cmVzLmJvb2xUZXN0UnVubmVy
RmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChsYXllckJhY2tlZFdlYlZpZXcsICJs
YXllckJhY2tlZFdlYlZpZXciLCB0ZXN0RmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0dXJlcyk7
Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKHVzZUVwaGVtZXJhbFNlc3Npb24sICJ1c2VFcGhlbWVy
YWxTZXNzaW9uIiwgdGVzdEZlYXR1cmVzLmJvb2xUZXN0UnVubmVyRmVhdHVyZXMpOwotCi0gICAg
c2V0VmFsdWVJZlNldEluTWFwKGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLCAiYWRkaXRp
b25hbFN1cHBvcnRlZEltYWdlVHlwZXMiLCB0ZXN0RmVhdHVyZXMuc3RyaW5nVGVzdFJ1bm5lckZl
YXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoanNjT3B0aW9ucywgImpzY09wdGlvbnMi
LCB0ZXN0RmVhdHVyZXMuc3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVzKTsKLQotICAgIHNldFZhbHVl
SWZTZXRJbk1hcChlbmFibGVDU1NMb2dpY2FsLCAiQ1NTTG9naWNhbEVuYWJsZWQiLCB0ZXN0RmVh
dHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5h
YmxlTGluZUhlaWdodFVuaXRzLCAiTGluZUhlaWdodFVuaXRzRW5hYmxlZCIsIHRlc3RGZWF0dXJl
cy5pbnRlcm5hbERlYnVnRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVT
ZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzLCAic2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91
bmRhcmllc0VuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKTsKLSAg
ICBzZXRWYWx1ZUlmU2V0SW5NYXAobGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVu
YWJsZWQsICJMYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCIsIHRlc3RG
ZWF0dXJlcy5pbnRlcm5hbERlYnVnRmVhdHVyZXMpOwotCi0gICAgc2V0VmFsdWVJZlNldEluTWFw
KGFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQsICJBZENsaWNrQXR0cmlidXRpb25FbmFibGVkIiwg
dGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5N
YXAoZW5hYmxlQXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodCwgIkFzcGVjdFJhdGlv
T2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRh
bEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQXN5bmNDbGlwYm9hcmRB
UEksICJBc3luY0NsaXBib2FyZEFQSUVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJpbWVudGFs
RmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVDU1NPTVZpZXdTbW9vdGhT
Y3JvbGxpbmcsICJDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkIiwgdGVzdEZlYXR1cmVz
LmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQ29u
dGFjdFBpY2tlckFQSSwgIkNvbnRhY3RQaWNrZXJBUElFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4
cGVyaW1lbnRhbEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQ29yZU1h
dGhNTCwgIkNvcmVNYXRoTUxFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1
cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlUmVxdWVzdElkbGVDYWxsYmFjaywg
IlJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZl
YXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlUmVzaXplT2JzZXJ2ZXIsICJS
ZXNpemVPYnNlcnZlckVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMp
OwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVXZWJHUFUsICJXZWJHUFVFbmFibGVkIiwg
dGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKKyAgICBpZiAoaXQgIT0gbWFwLmVu
ZCgpKQorICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKKyAgICByZXR1cm4gZGVmYXVsdFZhbHVl
OworfQorCitib29sIFRlc3RPcHRpb25zOjpib29sVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZShzdGQ6
OnN0cmluZyBrZXksIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdAoreworICAgIHJldHVybiBmZWF0
dXJlVmFsdWUoa2V5LCBkZWZhdWx0VmFsdWUsIG1fZmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0
dXJlcyk7CiB9CiAKLWJvb2wgVGVzdE9wdGlvbnM6OndlYlZpZXdJc0NvbXBhdGlibGVXaXRoT3B0
aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3RoZXIpIGNvbnN0CitzdGQ6OnN0cmluZyBUZXN0T3B0
aW9uczo6c3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZShzdGQ6OnN0cmluZyBrZXksIHN0ZDo6
c3RyaW5nIGRlZmF1bHRWYWx1ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gb3RoZXIubGF5ZXJCYWNr
ZWRXZWJWaWV3ID09IGxheWVyQmFja2VkV2ViVmlldwotICAgICAgICAmJiBvdGhlci5qc2NPcHRp
b25zID09IGpzY09wdGlvbnM7CisgICAgcmV0dXJuIGZlYXR1cmVWYWx1ZShrZXksIGRlZmF1bHRW
YWx1ZSwgbV9mZWF0dXJlcy5zdHJpbmdUZXN0UnVubmVyRmVhdHVyZXMpOwogfQogCiB9CkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmgJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDUzICsz
MSwzOSBAQAogCiBuYW1lc3BhY2UgV1RSIHsKIAotc3RydWN0IFRlc3RPcHRpb25zIHsKLSAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoZXNlIGFuZCByZXBsYWNlIHdpdGggYWNjZXNzIHRvIFRlc3RGZWF0
dXJlcyBzZXQuCi0gICAgLy8gV2ViIFByZWZlcmVuY2VzCi0gICAgYm9vbCBhbGxvd0Nyb3NzT3Jp
Z2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyB7IGZhbHNlIH07Ci0gICAgYm9vbCBh
bGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzIHsgdHJ1ZSB9OwotICAgIGJvb2wgZW5hYmxlQWNj
ZWxlcmF0ZWREcmF3aW5nIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUF0dGFjaG1lbnRFbGVt
ZW50IHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUJhY2tGb3J3YXJkQ2FjaGUgeyBmYWxzZSB9
OwotICAgIGJvb2wgZW5hYmxlQ29sb3JGaWx0ZXIgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxl
SW5zcGVjdG9yQWRkaXRpb25zIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUludGVyc2VjdGlv
bk9ic2VydmVyIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUtleWdlbkVsZW1lbnQgeyBmYWxz
ZSB9OwotICAgIGJvb2wgZW5hYmxlTWVudUl0ZW1FbGVtZW50IHsgZmFsc2UgfTsKLSAgICBib29s
IGVuYWJsZU1vZGVybk1lZGlhQ29udHJvbHMgeyB0cnVlIH07Ci0KLSAgICAvLyBGSVhNRTogUmVt
b3ZlIHRoZXNlIGFuZCByZXBsYWNlIHdpdGggYWNjZXNzIHRvIFRlc3RGZWF0dXJlcyBzZXQuCi0g
ICAgLy8gSW50ZXJuYWwgRmVhdHVyZXMKLSAgICBib29sIGVuYWJsZUNTU0xvZ2ljYWwgeyBmYWxz
ZSB9OwotICAgIGJvb2wgZW5hYmxlTGluZUhlaWdodFVuaXRzIHsgZmFsc2UgfTsKLSAgICBib29s
IGVuYWJsZVNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXMgeyB0cnVlIH07Ci0gICAgYm9v
bCBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCB7IHRydWUgfTsKLQot
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlc2UgYW5kIHJlcGxhY2Ugd2l0aCBhY2Nlc3MgdG8gVGVz
dEZlYXR1cmVzIHNldC4KLSAgICAvLyBFeHBlcmltZW50YWwgRmVhdHVyZXMKLSAgICBib29sIGFk
Q2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQXNwZWN0
UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVB
c3luY0NsaXBib2FyZEFQSSB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVDU1NPTVZpZXdTbW9v
dGhTY3JvbGxpbmcgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQ29udGFjdFBpY2tlckFQSSB7
IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVDb3JlTWF0aE1MIHsgZmFsc2UgfTsKLSAgICBib29s
IGVuYWJsZVJlcXVlc3RJZGxlQ2FsbGJhY2sgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlUmVz
aXplT2JzZXJ2ZXIgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlV2ViR1BVIHsgZmFsc2UgfTsK
K2NsYXNzIFRlc3RPcHRpb25zIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVGVzdEZlYXR1
cmVzJiBkZWZhdWx0cygpOworICAgIHN0YXRpYyBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3Rk
OjpzdHJpbmcsIFRlc3RIZWFkZXJLZXlUeXBlPiYga2V5VHlwZU1hcHBpbmcoKTsKIAotICAgIC8v
IFRlc3QgUnVubmVyIFNwZWNpZmljIEZlYXR1cmVzCi0gICAgYm9vbCBkdW1wSlNDb25zb2xlTG9n
SW5TdGRFcnIgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
TG9hZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVXZWJTUUwgeyB0cnVlIH07Ci0gICAgYm9v
bCBsYXllckJhY2tlZFdlYlZpZXcgeyBmYWxzZSB9OwotICAgIGJvb2wgdXNlRXBoZW1lcmFsU2Vz
c2lvbiB7IGZhbHNlIH07Ci0gICAgc3RkOjpzdHJpbmcgYWRkaXRpb25hbFN1cHBvcnRlZEltYWdl
VHlwZXM7Ci0gICAgc3RkOjpzdHJpbmcganNjT3B0aW9uczsKKyAgICBleHBsaWNpdCBUZXN0T3B0
aW9ucyhUZXN0RmVhdHVyZXMgZmVhdHVyZXMpCisgICAgICAgIDogbV9mZWF0dXJlcyhzdGQ6Om1v
dmUoZmVhdHVyZXMpKQorICAgIHsKKyAgICB9CiAKLSAgICBleHBsaWNpdCBUZXN0T3B0aW9ucyhU
ZXN0RmVhdHVyZXMpOwogICAgIGJvb2wgd2ViVmlld0lzQ29tcGF0aWJsZVdpdGhPcHRpb25zKGNv
bnN0IFRlc3RPcHRpb25zJikgY29uc3Q7Ci0gICAgCi0gICAgc3RhdGljIGNvbnN0IHN0ZDo6dW5v
cmRlcmVkX21hcDxzdGQ6OnN0cmluZywgVGVzdEhlYWRlcktleVR5cGU+JiBrZXlUeXBlTWFwcGlu
ZygpOworCisgICAgLy8gVGVzdCBSdW5uZXIgU3BlY2lmaWMgRmVhdHVyZXMKKyAgICBib29sIGR1
bXBKU0NvbnNvbGVMb2dJblN0ZEVycigpIGNvbnN0IHsgcmV0dXJuIGJvb2xUZXN0UnVubmVyRmVh
dHVyZVZhbHVlKCJkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIiLCBmYWxzZSk7IH0KKyAgICBib29s
IGVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQoKSBjb25zdCB7IHJldHVybiBib29sVGVz
dFJ1bm5lckZlYXR1cmVWYWx1ZSgiZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCIsIGZh
bHNlKTsgfQorICAgIGJvb2wgbGF5ZXJCYWNrZWRXZWJWaWV3KCkgY29uc3QgeyByZXR1cm4gYm9v
bFRlc3RSdW5uZXJGZWF0dXJlVmFsdWUoImxheWVyQmFja2VkV2ViVmlldyIsIGZhbHNlKTsgfQor
ICAgIGJvb2wgdXNlRXBoZW1lcmFsU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGJvb2xUZXN0UnVu
bmVyRmVhdHVyZVZhbHVlKCJ1c2VFcGhlbWVyYWxTZXNzaW9uIiwgZmFsc2UpOyB9CisgICAgc3Rk
OjpzdHJpbmcgYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMoKSBjb25zdCB7IHJldHVybiBz
dHJpbmdUZXN0UnVubmVyRmVhdHVyZVZhbHVlKCJhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBl
cyIsIHsgfSk7IH0KKyAgICBzdGQ6OnN0cmluZyBqc2NPcHRpb25zKCkgY29uc3QgeyByZXR1cm4g
c3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZSgianNjT3B0aW9ucyIsIHsgfSk7IH0KKworICAg
IGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgYm9vbD4mIGJvb2xXZWJQcmVm
ZXJlbmNlRmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzLmJvb2xXZWJQcmVmZXJl
bmNlRmVhdHVyZXM7IH0KKyAgICBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcs
IGRvdWJsZT4mIGRvdWJsZVdlYlByZWZlcmVuY2VGZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1f
ZmVhdHVyZXMuZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzOyB9CisgICAgY29uc3Qgc3RkOjp1
bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCB1aW50MzJfdD4mIHVpbnQzMldlYlByZWZlcmVuY2VG
ZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMudWludDMyV2ViUHJlZmVyZW5jZUZl
YXR1cmVzOyB9CisgICAgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBzdGQ6
OnN0cmluZz4mIHN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1f
ZmVhdHVyZXMuc3RyaW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzOyB9CisKKyAgICBzdGF0aWMgc3Rk
OjpzdHJpbmcgdG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGNvbnN0IHN0ZDo6c3RyaW5nJik7
CisKK3ByaXZhdGU6CisgICAgYm9vbCBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZShzdGQ6
OnN0cmluZyBrZXksIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdDsKKyAgICBib29sIGJvb2xUZXN0
UnVubmVyRmVhdHVyZVZhbHVlKHN0ZDo6c3RyaW5nIGtleSwgYm9vbCBkZWZhdWx0VmFsdWUpIGNv
bnN0OworICAgIHN0ZDo6c3RyaW5nIHN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlVmFsdWUoc3RkOjpz
dHJpbmcga2V5LCBzdGQ6OnN0cmluZyBkZWZhdWx0VmFsdWUpIGNvbnN0OworCisgICAgVGVzdEZl
YXR1cmVzIG1fZmVhdHVyZXM7CiB9OwogCiB9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9E
dW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsx
MDksNyBAQAogCQk1REI5QUM5RTBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2VpZ2h0V2F0Y2hl
cjcwMC50dGYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDM3NUYwOTc3MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyNzAw
LnR0ZiAqLzsgfTsKIAkJNURCOUFDOUYwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktpdFdlaWdodFdh
dGNoZXI4MDAudHRmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzNzVGMDk3ODBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hl
cjgwMC50dGYgKi87IH07CiAJCTVEQjlBQ0EwMEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWln
aHRXYXRjaGVyOTAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzc1RjA5NzkwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdh
dGNoZXI5MDAudHRmICovOyB9OworCQk3QzRGMzA0MDI1M0I5NzBGMDAzMDU0NTggLyogVGVzdE9w
dGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNEYzMDNGMjUzQjgzNjkwMDMwNTQ1OCAv
KiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwICovOyB9Owog
CQk3Q0ZGOUJCRjI1MzNCQjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRkY5QkJFMjUzM0JCMjQwMDA4
MDA5RiAvKiBUZXN0RmVhdHVyZXMuY3BwICovOyB9OwogCQk3Q0ZGOUJDMjI1MzNCQzE2MDAwODAw
OUYgLyogVGVzdENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0NGRjlCQzEyNTMzQkMxNjAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmNwcCAq
LzsgfTsKIAkJODAwNDVBRUUxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODAwNDVBRUMxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyLm1tICovOyB9OwpAQCAtMzMzLDggKzMzNCwxMiBAQAogCQk3QzQ0Njk3RjI1Mzc3
QTAyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFRlc3RP
cHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0M0NDY5ODAyNTM3N0EwMjAwMjQyOTBBIC8qIGNoZWNrLXhjZmlsZWxpc3RzLnNoICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQuc2g7
IHBhdGggPSAiY2hlY2steGNmaWxlbGlzdHMuc2giOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzQ0Njk4MTI1Mzc3QTAyMDAyNDI5MEEgLyogZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2Vz
LnNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5zY3JpcHQuc2g7IHBhdGggPSAiZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzLnNoIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M0NDY5ODUyNTM3N0U1MjAwMjQyOTBBIC8qIFRlc3RP
cHRpb25zR2VuZXJhdGVkS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXN0T3B0aW9uc0dlbmVyYXRl
ZEtleXMuaDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzRGMzAzRjI1M0I4MzY5MDAzMDU0NTgg
LyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDOUUyNTBCMjUzQjc5NEEwMDQxMzAx
OCAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NCQkMzMjIxRERGQ0Y5QTAwNzg2QjlEIC8q
IFRlc3RPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RPcHRp
b25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDQ0JBNTFEMjUzQkI5RDMwMEJC
MzJDMSAvKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0ICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2ZpbGVsaXN0OyBwYXRoID0g
IkRlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3Q0NCQTUxRTI1M0JCOUQzMDBCQjMyQzEgLyogRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnhjZmlsZWxpc3Q7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0ZGOUJCRDI1MzNCQjI0MDAw
ODAwOUYgLyogVGVzdEZlYXR1cmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RGZWF0dXJlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0ZGOUJCRTI1MzNCQjI0MDAwODAwOUYgLyog
VGVzdEZlYXR1cmVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlc3RGZWF0dXJlcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRkY5QkMwMjUzM0JDMTYwMDA4MDA5RiAvKiBU
ZXN0Q29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0Q29tbWFuZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTAxLDYgKzUwNiw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCTBGMThFNkYxMUQ2QjlDNjQwMDI3RTU0NyAvKiBEZXJpdmVkU291
cmNlcy5tYWtlICovLAorCQkJCTdDQ0JBNTFEMjUzQkI5RDMwMEJCMzJDMSAvKiBEZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0ICovLAorCQkJCTdDQ0JBNTFFMjUzQkI5RDMwMEJCMzJDMSAv
KiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCAqLywKIAkJCQk3QzQ0Njk4MjI1Mzc3
QzM0MDAyNDI5MEEgLyogRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTMxNDhBMDY1MUU2RjkwRjQw
MEQzQjMxNiAvKiBUZXN0UnVubmVyU2hhcmVkICovLAogCQkJCTBGMThFNkU3MUQ2QjlCRjUwMDI3
RTU0NyAvKiBVSVNjcmlwdENvbnRleHQgKi8sCkBAIC03NzAsNiArNzc3LDcgQEAKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJN0M0NDY5N0YyNTM3N0EwMjAwMjQyOTBB
IC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYiAqLywKKwkJCQk3QzlFMjUwQjI1M0I3
OTRBMDA0MTMwMTggLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5n
LmNwcC5lcmIgKi8sCiAJCQkpOwogCQkJcGF0aCA9IFByZWZlcmVuY2VzVGVtcGxhdGVzOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTc3OCw2ICs3ODYsNyBAQAogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk3QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5MEEgLyog
VGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmggKi8sCisJCQkJN0M0RjMwM0YyNTNCODM2OTAwMzA1
NDU4IC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgKi8s
CiAJCQkpOwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQkJcGF0aCA9IERlcml2ZWRT
b3VyY2VzL0R1bXBSZW5kZXJUcmVlOwpAQCAtMTI5MSw2ICsxMzAwLDcgQEAKIAkJCQk3Q0ZGOUJD
MjI1MzNCQzE2MDAwODAwOUYgLyogVGVzdENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0NGRjlCQkYyNTMzQkIyNDAwMDgwMDlGIC8qIFRlc3RGZWF0dXJlcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBMzBBMjFGODIwNTFEOEM0MDAwOEZGNDIgLyogVGVzdE9wdGlvbnMuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJN0M0RjMwNDAyNTNCOTcwRjAwMzA1NDU4IC8qIFRlc3RPcHRpb25zR2Vu
ZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzAx
MzFEQTBDOTc3MjAxMDA4NzMxN0QgLyogVGVzdFJ1bm5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQ0ExOEIyNDBDOUIwMTRCMDAxMTQzNjkgLyogVGVzdFJ1bm5lck1hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUY0RDQyMzYxMURENTA0ODIwMDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVy
SU9TLm0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1NjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0
ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRp
b25zR2VuZXJhdGVkS2V5cy5oLmVyYgkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAog
I3ByYWdtYSBvbmNlCiAKICNkZWZpbmUgR0VORVJBVEVEX1dFQl9QUkVGRVJFTkNFX0tFWV9UWVBF
X01BUFBJTkdTIFwKLTwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzIGRvIC0lPgorPCUtIGZv
ciBAcHJlZiBpbiBAcHJlZmVyZW5jZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3NlZCB9ICBkbyAtJT4K
ICAgICB7ICI8JT0gQHByZWYubmFtZSAlPiIsIFRlc3RIZWFkZXJLZXlUeXBlOjo8JT0gQHByZWYu
dHlwZVVwcGVyICU+V2ViUHJlZmVyZW5jZSB9LCBcCiA8JS0gZW5kIC0lPgogXApJbmRleDogVG9v
bHMvRHVtcFJlbmRlclRyZWUvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9u
c0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9EdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRp
b25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiCShub25leGlzdGVudCkK
KysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVz
dE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIDwlPSBAd2FybmluZyAlPgorICoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0T3B0aW9ucy5oIgorCituYW1l
c3BhY2UgV1RSIHsKKworc3RkOjpzdHJpbmcgVGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJl
ZmVyZW5jZUtleShjb25zdCBzdGQ6OnN0cmluZyYgd2ViUHJlZmVyZW5jZXNLZXkpCit7CisgICAg
c3RhdGljIHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IG5vblN0
YW5kYXJkS2V5cyA9IHsKKzwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzLnNlbGVjdCB7IHxw
fCBwLm9wdHNbIndlYktpdExlZ2FjeVByZWZlcmVuY2VLZXkiXSB9IGRvIC0lPgorICAgICAgICB7
ICI8JT0gQHByZWYubmFtZSAlPiIsICI8JT0gQHByZWYucHJlZmVyZW5jZUtleSAlPiIgfSwgXAor
PCUtIGVuZCAtJT4KKyAgICB9OworCisgICAgYXV0byBpdCA9IG5vblN0YW5kYXJkS2V5cy5maW5k
KHdlYlByZWZlcmVuY2VzS2V5KTsKKyAgICBpZiAoaXQgIT0gbm9uU3RhbmRhcmRLZXlzLmVuZCgp
KQorICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKKworICAgIHJldHVybiAiV2ViS2l0IiArIHdl
YlByZWZlcmVuY2VzS2V5OworfQorCit9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RHVtcFJlbmRlclRyZWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlLm1tCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyOSw3ICsxMjks
MTAgQEAgZXh0ZXJuICJDIiB7CiAjaW1wb3J0IDxtYWNoLW8vZ2V0c2VjdC5oPgogfQogCi11c2lu
ZyBuYW1lc3BhY2Ugc3RkOworc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4gdG9OUyhjb25zdCBz
dGQ6OnN0cmluZyYgc3RyaW5nKQoreworICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxs
b2NdIGluaXRXaXRoVVRGOFN0cmluZzpzdHJpbmcuY19zdHIoKV0pOworfQogCiAjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiBAaW50ZXJmYWNlIER1bXBSZW5kZXJUcmVlQXBwbGljYXRpb24gOiBO
U0FwcGxpY2F0aW9uCkBAIC0xNzcsNyArMTgwLDcgQEAgLSAoV2ViQ29yZTo6RnJhbWUqKV9tYWlu
Q29yZUZyYW1lOwogQGVuZAogI2VuZGlmCiAKLXN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3Ry
aW5nJiB0ZXN0VVJMKTsKK3N0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIHRl
c3RVUkwpOwogCiAvLyBEZWNpZGluZyB3aGVuIGl0J3MgT0sgdG8gZHVtcCBvdXQgdGhlIHN0YXRl
IGlzIGEgYml0IHRyaWNreS4gIEFsbCB0aGVzZSBtdXN0IGJlIHRydWU6CiAvLyAtIFRoZXJlIGlz
IG5vIGxvYWQgaW4gcHJvZ3Jlc3MKQEAgLTI0OCw3ICsyNTEsNyBAQCB2b2lkIHNldFBlcnNpc3Rl
bnRVc2VyU3R5bGVTaGVldExvY2F0aW9uCiAgICAgcGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9j
YXRpb24gPSB1cmw7CiB9CiAKLXN0YXRpYyBib29sIHNob3VsZElnbm9yZVdlYkNvcmVOb2RlTGVh
a3MoY29uc3Qgc3RyaW5nJiB1cmxTdHJpbmcpCitzdGF0aWMgYm9vbCBzaG91bGRJZ25vcmVXZWJD
b3JlTm9kZUxlYWtzKGNvbnN0IHN0ZDo6c3RyaW5nJiB1cmxTdHJpbmcpCiB7CiAgICAgc3RhdGlj
IGNoYXIqIGNvbnN0IGlnbm9yZVNldFtdID0gewogICAgICAgICAvLyBLZWVwaW5nIHRoaXMgaW5m
cmFzdHJ1Y3R1cmUgYXJvdW5kIGluIGNhc2Ugd2UgZXZlciBuZWVkIGl0IGFnYWluLgpAQCAtMjU3
LDcgKzI2MCw3IEBAIHN0YXRpYyBib29sIHNob3VsZElnbm9yZVdlYkNvcmVOb2RlTGVha3MKIAog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaWdub3JlU2V0Q291bnQ7IGkrKykgewogICAgICAgICAv
LyBGSVhNRTogaWdub3JlIGNhc2UKLSAgICAgICAgc3RyaW5nIGN1cklnbm9yZShpZ25vcmVTZXRb
aV0pOworICAgICAgICBzdGQ6OnN0cmluZyBjdXJJZ25vcmUoaWdub3JlU2V0W2ldKTsKICAgICAg
ICAgLy8gTWF0Y2ggYXQgdGhlIGVuZCBvZiB0aGUgdXJsU3RyaW5nLgogICAgICAgICBpZiAoIXVy
bFN0cmluZy5jb21wYXJlKHVybFN0cmluZy5sZW5ndGgoKSAtIGN1cklnbm9yZS5sZW5ndGgoKSwg
Y3VySWdub3JlLmxlbmd0aCgpLCBjdXJJZ25vcmUpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC02MTUsOCArNjE4LDggQEAgLSAoTlNSZWN0KXJlY3RGb3JQYXJ0OihOU1Njcm9sbGVyUGFy
dClwYQogICAgIEJPT0wgaXNIb3Jpem9udGFsID0gZnJhbWVSZWN0LnNpemUud2lkdGggPiBmcmFt
ZVJlY3Quc2l6ZS5oZWlnaHQ7CiAgICAgQ0dGbG9hdCB0cmFja0xlbmd0aCA9IGlzSG9yaXpvbnRh
bCA/IGJvdW5kcy5zaXplLndpZHRoIDogYm91bmRzLnNpemUuaGVpZ2h0OwogICAgIENHRmxvYXQg
bWluS25vYlNpemUgPSBpc0hvcml6b250YWwgPyBib3VuZHMuc2l6ZS5oZWlnaHQgOiBib3VuZHMu
c2l6ZS53aWR0aDsKLSAgICBDR0Zsb2F0IGtub2JMZW5ndGggPSBtYXgobWluS25vYlNpemUsIHN0
YXRpY19jYXN0PENHRmxvYXQ+KHJvdW5kKHRyYWNrTGVuZ3RoICogW3NlbGYga25vYlByb3BvcnRp
b25dKSkpOwotICAgIENHRmxvYXQga25vYlBvc2l0aW9uID0gc3RhdGljX2Nhc3Q8Q0dGbG9hdD4o
KHJvdW5kKFtzZWxmIGRvdWJsZVZhbHVlXSAqICh0cmFja0xlbmd0aCAtIGtub2JMZW5ndGgpKSkp
OworICAgIENHRmxvYXQga25vYkxlbmd0aCA9IHN0ZDo6bWF4KG1pbktub2JTaXplLCBzdGF0aWNf
Y2FzdDxDR0Zsb2F0PihzdGQ6OnJvdW5kKHRyYWNrTGVuZ3RoICogW3NlbGYga25vYlByb3BvcnRp
b25dKSkpOworICAgIENHRmxvYXQga25vYlBvc2l0aW9uID0gc3RhdGljX2Nhc3Q8Q0dGbG9hdD4o
KHN0ZDo6cm91bmQoW3NlbGYgZG91YmxlVmFsdWVdICogKHRyYWNrTGVuZ3RoIC0ga25vYkxlbmd0
aCkpKSk7CiAKICAgICBpZiAoaXNIb3Jpem9udGFsKQogICAgICAgICByZXR1cm4gTlNNYWtlUmVj
dChib3VuZHMub3JpZ2luLnggKyBrbm9iUG9zaXRpb24sIGJvdW5kcy5vcmlnaW4ueSwga25vYkxl
bmd0aCwgYm91bmRzLnNpemUuaGVpZ2h0KTsKQEAgLTY3Miw2ICs2NzUsMTAgQEAgV2ViVmlldyAq
Y3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdwogICAgIFt3ZWJWaWV3IHNldEdyb3VwTmFt
ZTpAIm9yZy53ZWJraXQuRHVtcFJlbmRlclRyZWUiXTsKICNlbmRpZgogCisgICAgV2ViUHJlZmVy
ZW5jZXMgKnByZWZlcmVuY2VzID0gW1tXZWJQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF07CisgICAg
W3ByZWZlcmVuY2VzIHNldEF1dG9zYXZlczpOT107CisgICAgW3dlYlZpZXcgc2V0UHJlZmVyZW5j
ZXM6cHJlZmVyZW5jZXNdOworCiAgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTp1aURlbGVnYXRl
XTsKICAgICBbd2ViVmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpmcmFtZUxvYWREZWxlZ2F0ZV07
CiAgICAgW3dlYlZpZXcgc2V0RWRpdGluZ0RlbGVnYXRlOmVkaXRpbmdEZWxlZ2F0ZV07CkBAIC02
ODUsOCArNjkyLDYgQEAgV2ViVmlldyAqY3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdwog
ICAgIFtXZWJWaWV3IHJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbDpAImZlZWRzIl07CiAgICAgW1dl
YlZpZXcgcmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsOkAiZmVlZHNlYXJjaCJdOwogCi0gICAgW1t3
ZWJWaWV3IHByZWZlcmVuY2VzXSBfc2V0TWVkaWFSZWNvcmRlckVuYWJsZWQ6WUVTXTsKLQogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBbd2ViVmlldyBzZXRXaW5kb3dPY2NsdXNpb25EZXRlY3Rpb25F
bmFibGVkOk5PXTsKICAgICBbV2ViVmlldyBfc2V0Rm9udEFsbG93TGlzdDpmb250QWxsb3dMaXN0
KCldOwpAQCAtODQ0LDkgKzg0OSw4IEBAIHN0YXRpYyB2b2lkIGVuYWJsZUV4cGVyaW1lbnRhbEZl
YXR1cmVzKFcKIH0KIAogLy8gQ2FsbGVkIGJlZm9yZSBlYWNoIHRlc3QuCi1zdGF0aWMgdm9pZCBy
ZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKCkKK3N0YXRpYyB2b2lkIHJlc2V0
V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVu
Y2VzKQogewotICAgIFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtXZWJQcmVmZXJlbmNl
cyBzdGFuZGFyZFByZWZlcmVuY2VzXTsKICAgICBlbmFibGVFeHBlcmltZW50YWxGZWF0dXJlcyhw
cmVmZXJlbmNlcyk7CiAKICAgICBbcHJlZmVyZW5jZXMgc2V0TmVlZHNTdG9yYWdlQWNjZXNzRnJv
bUZpbGVVUkxzUXVpcms6IE5PXTsKQEAgLTkwMiw2ICs5MDYsNyBAQCBzdGF0aWMgdm9pZCByZXNl
dFdlYlByZWZlcmVuY2VzVG9Db25zaXN0CiAgICAgfSBlbHNlCiAgICAgICAgIFtwcmVmZXJlbmNl
cyBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQ6Tk9dOwogCisgICAgW3ByZWZlcmVuY2VzIHNldElu
bGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRlOk5PXTsKICAgICBb
cHJlZmVyZW5jZXMgc2V0TWVkaWFQbGF5YmFja0FsbG93c0lubGluZTpZRVNdOwogICAgIFtwcmVm
ZXJlbmNlcyBzZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZTpOT107CiAgICAgW3By
ZWZlcmVuY2VzIHNldFZpZGVvUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlOk5PXTsKQEAgLTky
OCw5ICs5MzMsOCBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0CiAj
ZW5kaWYKICAgICBbcHJlZmVyZW5jZXMgc2V0VXNlUHJlSFRNTDVQYXJzZXJRdWlya3M6Tk9dOwog
ICAgIFtwcmVmZXJlbmNlcyBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZDpOT107
Ci0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgQVNTRVJUKFtwcmVmZXJlbmNlcyBtb2Nr
U2Nyb2xsYmFyc0VuYWJsZWRdKTsKLSNlbmRpZgorCisgICAgW3ByZWZlcmVuY2VzIHNldE1vY2tT
Y3JvbGxiYXJzRW5hYmxlZDpZRVNdOwogCiAgICAgW3ByZWZlcmVuY2VzIHNldFdlYkF1ZGlvRW5h
YmxlZDpZRVNdOwogICAgIFtwcmVmZXJlbmNlcyBzZXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9F
bmFibGVkOllFU107CkBAIC05NjAsNiArOTY0LDcgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVm
ZXJlbmNlc1RvQ29uc2lzdAogICAgIHByZWZlcmVuY2VzLm1lZGlhQ2FwYWJpbGl0aWVzRW5hYmxl
ZCA9IFlFUzsKIAogICAgIHByZWZlcmVuY2VzLnNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJp
ZXNFbmFibGVkID0gWUVTOworICAgIHByZWZlcmVuY2VzLmZ1bGxTY3JlZW5FbmFibGVkID0gWUVT
OwogCiAgICAgW3ByZWZlcmVuY2VzIHNldFdlYlNRTEVuYWJsZWQ6WUVTXTsKIApAQCAtOTY3LDM0
ICs5NzIsMjEgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdAogICAg
IFtXZWJQcmVmZXJlbmNlcyBfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNj
ZXB0UG9saWN5Ok5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9t
YWluXTsKIH0KIAotc3RhdGljIHZvaWQgc2V0V2ViUHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9ucyhj
b25zdCBXVFI6OlRlc3RPcHRpb25zJiBvcHRpb25zKQorc3RhdGljIHZvaWQgc2V0V2ViUHJlZmVy
ZW5jZXNGb3JUZXN0T3B0aW9ucyhXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMsIGNvbnN0IFdU
Ujo6VGVzdE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVu
Y2VzID0gW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdOworICAgIHByZWZlcmVu
Y2VzLnByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBvcHRpb25zLnVzZUVwaGVtZXJhbFNlc3Npb24o
KTsKKworICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5ib29sV2Vi
UHJlZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0Qm9vbFByZWZl
cmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnZhbHVlIGZvcktleTp0b05TKFdUUjo6VGVzdE9wdGlv
bnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShrZXkpKS5nZXQoKV07CisKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuZG91YmxlV2ViUHJlZmVyZW5jZUZl
YXR1cmVzKCkpCisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0RG91YmxlUHJlZmVyZW5jZUZvclRl
c3RpbmdXaXRoVmFsdWU6dmFsdWUgZm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJL
aXRMZWdhY3lQcmVmZXJlbmNlS2V5KGtleSkpLmdldCgpXTsKIAotICAgIHByZWZlcmVuY2VzLmF0
dGFjaG1lbnRFbGVtZW50RW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlQXR0YWNobWVudEVsZW1lbnQ7
Ci0gICAgcHJlZmVyZW5jZXMuYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCA9IG9wdGlvbnMuZW5h
YmxlQWNjZWxlcmF0ZWREcmF3aW5nOwotICAgIHByZWZlcmVuY2VzLm1lbnVJdGVtRWxlbWVudEVu
YWJsZWQgPSBvcHRpb25zLmVuYWJsZU1lbnVJdGVtRWxlbWVudDsKLSAgICBwcmVmZXJlbmNlcy5r
ZXlnZW5FbGVtZW50RW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlS2V5Z2VuRWxlbWVudDsKLSAgICBw
cmVmZXJlbmNlcy5tb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlTW9k
ZXJuTWVkaWFDb250cm9sczsKLSAgICBwcmVmZXJlbmNlcy5pbnNwZWN0b3JBZGRpdGlvbnNFbmFi
bGVkID0gb3B0aW9ucy5lbmFibGVJbnNwZWN0b3JBZGRpdGlvbnM7Ci0gICAgcHJlZmVyZW5jZXMu
YWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMgPSBvcHRpb25z
LmFsbG93Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzOwotICAgIHBy
ZWZlcmVuY2VzLmNvbG9yRmlsdGVyRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlQ29sb3JGaWx0ZXI7
Ci0gICAgcHJlZmVyZW5jZXMuc2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllc0VuYWJsZWQg
PSBvcHRpb25zLmVuYWJsZVNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXM7Ci0gICAgcHJl
ZmVyZW5jZXMud2ViR1BVRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlV2ViR1BVOwotICAgIHByZWZl
cmVuY2VzLkNTU0xvZ2ljYWxFbmFibGVkID0gb3B0aW9ucy5lbmFibGVDU1NMb2dpY2FsOwotICAg
IHByZWZlcmVuY2VzLmxpbmVIZWlnaHRVbml0c0VuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUxpbmVI
ZWlnaHRVbml0czsKLSAgICBwcmVmZXJlbmNlcy5hZENsaWNrQXR0cmlidXRpb25FbmFibGVkID0g
b3B0aW9ucy5hZENsaWNrQXR0cmlidXRpb25FbmFibGVkOwotICAgIHByZWZlcmVuY2VzLnJlc2l6
ZU9ic2VydmVyRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlUmVzaXplT2JzZXJ2ZXI7Ci0gICAgcHJl
ZmVyZW5jZXMuQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxl
Q1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nOwotICAgIHByZWZlcmVuY2VzLmNvcmVNYXRoTUxFbmFi
bGVkID0gb3B0aW9ucy5lbmFibGVDb3JlTWF0aE1MOwotICAgIHByZWZlcmVuY2VzLnJlcXVlc3RJ
ZGxlQ2FsbGJhY2tFbmFibGVkID0gb3B0aW9ucy5lbmFibGVSZXF1ZXN0SWRsZUNhbGxiYWNrOwot
ICAgIHByZWZlcmVuY2VzLmFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxl
QXN5bmNDbGlwYm9hcmRBUEk7Ci0gICAgcHJlZmVyZW5jZXMucHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCA9IG9wdGlvbnMudXNlRXBoZW1lcmFsU2Vzc2lvbjsKLSAgICBwcmVmZXJlbmNlcy51c2VzUGFn
ZUNhY2hlID0gb3B0aW9ucy5lbmFibGVCYWNrRm9yd2FyZENhY2hlOwotICAgIHByZWZlcmVuY2Vz
LmxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkID0gb3B0aW9ucy5sYXlv
dXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZDsKLSAgICBwcmVmZXJlbmNlcy5h
c3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxl
QXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodDsKLSAgICBwcmVmZXJlbmNlcy5hbGxv
d1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzID0gb3B0aW9ucy5hbGxvd1RvcE5hdmlnYXRpb25Ub0Rh
dGFVUkxzOwotICAgIHByZWZlcmVuY2VzLmNvbnRhY3RQaWNrZXJBUElFbmFibGVkID0gb3B0aW9u
cy5lbmFibGVDb250YWN0UGlja2VyQVBJOworICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFs
dWVdIDogb3B0aW9ucy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAgICAgW3By
ZWZlcmVuY2VzIF9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZSBm
b3JLZXk6dG9OUyhXVFI6OlRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVuY2VLZXko
a2V5KSkuZ2V0KCldOworCisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRp
b25zLnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcygpKQorICAgICAgICBbcHJlZmVyZW5jZXMg
X3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnRvTlModmFsdWUpLmdldCgp
IGZvcktleTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtl
eShrZXkpKS5nZXQoKV07CiB9CiAKIC8vIENhbGxlZCBvbmNlIG9uIER1bXBSZW5kZXJUcmVlIHN0
YXJ0dXAuCkBAIC0xMDE4LDkgKzEwMTAsNiBAQCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0c1RvQ29u
c2lzdGVudFZhbHVlCiAgICAgICAgIEAiQXBwbGVPdGhlckhpZ2hsaWdodENvbG9yIjpAIjAuNTAw
MDAwIDAuNTAwMDAwIDAuNTAwMDAwIiwKICAgICAgICAgQCJBcHBsZUxhbmd1YWdlcyI6IEBbIEAi
ZW4iIF0sCiAgICAgICAgIFdlYktpdEVuYWJsZUZ1bGxEb2N1bWVudFRlYXJkb3duUHJlZmVyZW5j
ZUtleTogQFlFUywKLSAgICAgICAgV2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5
OiBAWUVTLAotICAgICAgICBXZWJLaXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrUHJlZmVyZW5j
ZUtleTogQFlFUywKLSAgICAgICAgV2ViS2l0SW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxh
eXNJbmxpbmVBdHRyaWJ1dGVLZXk6IEBOTywKICAgICAgICAgQCJVc2VXZWJLaXRXZWJJbnNwZWN0
b3IiOiBAWUVTLAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBAIk5TUHJlZmVy
cmVkU3BlbGxTZXJ2ZXJMYW5ndWFnZSI6IEAiZW5fVVMiLApAQCAtMTQzMSw3ICsxNDIwLDcgQEAg
c3RhdGljIE5TSW50ZWdlciBjb21wYXJlSGlzdG9yeUl0ZW1zKGlkIAogCiBzdGF0aWMgTlNEYXRh
ICpkdW1wQXVkaW8oKQogewotICAgIGNvbnN0IHZlY3RvcjxjaGFyPiYgZGF0YVZlY3RvciA9IGdU
ZXN0UnVubmVyLT5hdWRpb1Jlc3VsdCgpOworICAgIGNvbnN0IGF1dG8mIGRhdGFWZWN0b3IgPSBn
VGVzdFJ1bm5lci0+YXVkaW9SZXN1bHQoKTsKIAogICAgIE5TRGF0YSAqZGF0YSA9IFtOU0RhdGEg
ZGF0YVdpdGhCeXRlczpkYXRhVmVjdG9yLmRhdGEoKSBsZW5ndGg6ZGF0YVZlY3Rvci5zaXplKCld
OwogICAgIHJldHVybiBkYXRhOwpAQCAtMTYyNyw3ICsxNjE2LDcgQEAgc3RhdGljIHZvaWQgc2l6
ZVdlYlZpZXdGb3JDdXJyZW50VGVzdCgpCiAgICAgW3VpRGVsZWdhdGUgcmVzZXRXaW5kb3dPcmln
aW5dOwogCiAgICAgLy8gVzNDIFNWRyB0ZXN0cyBleHBlY3QgdG8gYmUgNDgweDM2MAotICAgIGJv
b2wgaXNTVkdXM0NUZXN0ID0gKGdUZXN0UnVubmVyLT50ZXN0VVJMKCkuZmluZCgic3ZnL1czQy1T
VkctMS4xIikgIT0gc3RyaW5nOjpucG9zKTsKKyAgICBib29sIGlzU1ZHVzNDVGVzdCA9IChnVGVz
dFJ1bm5lci0+dGVzdFVSTCgpLmZpbmQoInN2Zy9XM0MtU1ZHLTEuMSIpICE9IHN0ZDo6c3RyaW5n
OjpucG9zKTsKICAgICBOU1NpemUgZnJhbWVTaXplID0gaXNTVkdXM0NUZXN0ID8gTlNNYWtlU2l6
ZShUZXN0UnVubmVyOjp3M2NTVkdWaWV3V2lkdGgsIFRlc3RSdW5uZXI6OnczY1NWR1ZpZXdIZWln
aHQpIDogTlNNYWtlU2l6ZShUZXN0UnVubmVyOjp2aWV3V2lkdGgsIFRlc3RSdW5uZXI6OnZpZXdI
ZWlnaHQpOwogICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldEZyYW1lU2l6ZTpmcmFtZVNpemVd
OwogICAgIFtbbWFpbkZyYW1lIGZyYW1lVmlld10gc2V0RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCBm
cmFtZVNpemUud2lkdGgsIGZyYW1lU2l6ZS5oZWlnaHQpXTsKQEAgLTE4MjYsOSArMTgxNSw5IEBA
IHN0YXRpYyB2b2lkIHNldEpTQ09wdGlvbnMoY29uc3QgV1RSOjpUZXMKICAgICAgICAgc2F2ZWRP
cHRpb25zLmNsZWFyKCk7CiAgICAgfQogCi0gICAgaWYgKG9wdGlvbnMuanNjT3B0aW9ucy5sZW5n
dGgoKSkgeworICAgIGlmICghb3B0aW9ucy5qc2NPcHRpb25zKCkuZW1wdHkoKSkgewogICAgICAg
ICBKU0M6Ok9wdGlvbnM6OmR1bXBBbGxPcHRpb25zSW5BTGluZShzYXZlZE9wdGlvbnMpOwotICAg
ICAgICBKU0M6Ok9wdGlvbnM6OnNldE9wdGlvbnMob3B0aW9ucy5qc2NPcHRpb25zLmNfc3RyKCkp
OworICAgICAgICBKU0M6Ok9wdGlvbnM6OnNldE9wdGlvbnMob3B0aW9ucy5qc2NPcHRpb25zKCku
Y19zdHIoKSk7CiAgICAgfQogfQogCkBAIC0xODM5LDYgKzE4MjgsMTAgQEAgc3RhdGljIHZvaWQg
cmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdAogCiAgICAgV2ViVmlldyAqd2ViVmlldyA9IFtt
YWluRnJhbWUgd2ViVmlld107CiAKKyAgICBXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBb
W1dlYlByZWZlcmVuY2VzIGFsbG9jXSBpbml0XTsKKyAgICBbcHJlZmVyZW5jZXMgc2V0QXV0b3Nh
dmVzOk5PXTsKKyAgICBbd2ViVmlldyBzZXRQcmVmZXJlbmNlczpwcmVmZXJlbmNlc107CisKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGFkanVzdFdlYkRvY3VtZW50Rm9yU3RhbmRhcmRW
aWV3cG9ydChnV2ViQnJvd3NlclZpZXcsIGdXZWJTY3JvbGxWaWV3KTsKICAgICBbd2ViVmlldyBf
c2V0QWxsb3dzTWVzc2FnaW5nOllFU107CkBAIC0xODY3LDEwICsxODYwLDEwIEBAIHN0YXRpYyB2
b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXQKIAogICAgIFtXZWJDYWNoZSBjbGVhckNh
Y2hlZENyZWRlbnRpYWxzXTsKIAotICAgIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRW
YWx1ZXMoKTsKLSAgICBzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKG9wdGlvbnMpOwor
ICAgIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMocHJlZmVyZW5jZXMpOwor
ICAgIHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMocHJlZmVyZW5jZXMsIG9wdGlvbnMp
OwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBbd2ViVmlldyBzZXRXYW50c0xheWVyOm9wdGlvbnMu
bGF5ZXJCYWNrZWRXZWJWaWV3XTsKKyAgICBbd2ViVmlldyBzZXRXYW50c0xheWVyOm9wdGlvbnMu
bGF5ZXJCYWNrZWRXZWJWaWV3KCldOwogI2VuZGlmCiAKICAgICBUZXN0UnVubmVyOjpzZXRTZXJp
YWxpemVIVFRQTG9hZHMoZmFsc2UpOwpAQCAtMTkxNCw3ICsxOTA3LDcgQEAgc3RhdGljIHZvaWQg
cmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdAogICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQ
YXN0ZWJvYXJkXSBkZWNsYXJlVHlwZXM6QFtOU1N0cmluZ1Bib2FyZFR5cGVdIG93bmVyOm5pbF07
CiAjZW5kaWYKIAotICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6c2V0QWRkaXRpb25hbFN1cHBvcnRl
ZEltYWdlVHlwZXNGb3JUZXN0aW5nKG9wdGlvbnMuYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlw
ZXMuY19zdHIoKSk7CisgICAgV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRBZGRpdGlvbmFsU3VwcG9y
dGVkSW1hZ2VUeXBlc0ZvclRlc3Rpbmcob3B0aW9ucy5hZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VU
eXBlcygpLmNfc3RyKCkpOwogCiAgICAgW21haW5GcmFtZSBfY2xlYXJPcGVuZXJdOwogCkBAIC0x
OTcwLDE5ICsxOTYzLDE5IEBAIHN0YXRpYyBOU1VSTCAqY29tcHV0ZVRlc3RVUkwoTlNTdHJpbmcg
KnAKIAogc3RhdGljIFdUUjo6VGVzdE9wdGlvbnMgdGVzdE9wdGlvbnNGb3JUZXN0KGNvbnN0IFdU
Ujo6VGVzdENvbW1hbmQmIGNvbW1hbmQpCiB7Ci0gICAgV1RSOjpUZXN0RmVhdHVyZXMgZmVhdHVy
ZXM7CisgICAgV1RSOjpUZXN0RmVhdHVyZXMgZmVhdHVyZXMgPSBXVFI6OlRlc3RPcHRpb25zOjpk
ZWZhdWx0cygpOwogICAgIFdUUjo6bWVyZ2UoZmVhdHVyZXMsIFdUUjo6aGFyZGNvZGVkRmVhdHVy
ZXNCYXNlZE9uUGF0aEZvclRlc3QoY29tbWFuZCkpOwogICAgIFdUUjo6bWVyZ2UoZmVhdHVyZXMs
IFdUUjo6ZmVhdHVyZURlZmF1bHRzRnJvbVRlc3RIZWFkZXJGb3JUZXN0KGNvbW1hbmQsIFdUUjo6
VGVzdE9wdGlvbnM6OmtleVR5cGVNYXBwaW5nKCkpKTsKIAogICAgIHJldHVybiBXVFI6OlRlc3RP
cHRpb25zIHsgV1RGTW92ZShmZWF0dXJlcykgfTsKIH0KIAotc3RhdGljIHZvaWQgcnVuVGVzdChj
b25zdCBzdHJpbmcmIGlucHV0TGluZSkKK3N0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RkOjpz
dHJpbmcmIGlucHV0TGluZSkKIHsKICAgICBBU1NFUlQoIWlucHV0TGluZS5lbXB0eSgpKTsKIAog
ICAgIGF1dG8gY29tbWFuZCA9IFdUUjo6cGFyc2VJbnB1dExpbmUoaW5wdXRMaW5lKTsKLSAgICBj
b25zdCBzdHJpbmcmIHBhdGhPclVSTCA9IGNvbW1hbmQucGF0aE9yVVJMOworICAgIGF1dG8gcGF0
aE9yVVJMID0gY29tbWFuZC5wYXRoT3JVUkw7CiAgICAgZHVtcFBpeGVsc0ZvckN1cnJlbnRUZXN0
ID0gY29tbWFuZC5zaG91bGREdW1wUGl4ZWxzIHx8IGR1bXBQaXhlbHNGb3JBbGxUZXN0czsKIAog
ICAgIE5TU3RyaW5nICpwYXRoT3JVUkxTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhT
dHJpbmc6cGF0aE9yVVJMLmNfc3RyKCldOwpAQCAtMjAxNyw3ICsyMDEwLDcgQEAgc3RhdGljIHZv
aWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIGlucHV0TAogICAgIGdUZXN0UnVubmVyID0gVGVzdFJ1
bm5lcjo6Y3JlYXRlKHRlc3RVUkwsIGNvbW1hbmQuZXhwZWN0ZWRQaXhlbEhhc2gpOwogICAgIGdU
ZXN0UnVubmVyLT5zZXRBbGxvd2VkSG9zdHMoYWxsb3dlZEhvc3RzKTsKICAgICBnVGVzdFJ1bm5l
ci0+c2V0Q3VzdG9tVGltZW91dChjb21tYW5kLnRpbWVvdXQubWlsbGlzZWNvbmRzKCkpOwotICAg
IGdUZXN0UnVubmVyLT5zZXREdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoY29tbWFuZC5kdW1wSlND
b25zb2xlTG9nSW5TdGRFcnIgfHwgb3B0aW9ucy5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIpOwor
ICAgIGdUZXN0UnVubmVyLT5zZXREdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoY29tbWFuZC5kdW1w
SlNDb25zb2xlTG9nSW5TdGRFcnIgfHwgb3B0aW9ucy5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIo
KSk7CiAKICAgICByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZShvcHRpb25zLCBSZXNldFRp
bWU6OkJlZm9yZVRlc3QpOwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1
bm5lck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1
bm5lck1hYy5tbQkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L1Rlc3RSdW5uZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3NiwxNCArNTc2LDE0IEBAIHZv
aWQgVGVzdFJ1bm5lcjo6c2V0UGFnZVBhdXNlZChib29sIHBhdXMKIAogdm9pZCBUZXN0UnVubmVy
OjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQoYm9vbCBmbGFnKQogewotICAgIFtbV2ViUHJlZmVy
ZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkOmZsYWdd
OworICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hl
ZXRFbmFibGVkOmZsYWddOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0
TG9jYXRpb24oSlNTdHJpbmdSZWYgcGF0aCkKIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHBhdGhDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgcGF0aCkpOwogICAgIE5TVVJMICp1cmwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzooX19icmlk
Z2UgTlNTdHJpbmcgKilwYXRoQ0YuZ2V0KCldOwotICAgIFtbV2ViUHJlZmVyZW5jZXMgc3RhbmRh
cmRQcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbjp1cmxdOworICAgIFtbW21h
aW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbjp1
cmxdOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBKU1N0cmluZ1JlZiB2YWx1ZSkKQEAgLTYw
OSw3ICs2MDksNyBAQCB2b2lkIFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZShKU1N0CiAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB2YWx1ZUNGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlD
RlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB2YWx1ZSkpOwogICAgIE5TU3RyaW5nICp2YWx1
ZU5TID0gKF9fYnJpZGdlIE5TU3RyaW5nICopdmFsdWVDRi5nZXQoKTsKIAotICAgIFtbV2ViUHJl
ZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10gX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZh
bHVlOnZhbHVlTlMgZm9yS2V5OmtleU5TXTsKKyAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJl
ZmVyZW5jZXNdIF9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZU5T
IGZvcktleTprZXlOU107CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQWxsVmlzaXRlZExp
bmtzKCkKQEAgLTcwMCw3ICs3MDAsNyBAQCBib29sIFRlc3RSdW5uZXI6OmZpbmRTdHJpbmcoSlND
b250ZXh0UmVmCiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0Q2FjaGVNb2RlbChpbnQgY2FjaGVNb2Rl
bCkKIHsKLSAgICBbW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdIHNldENhY2hl
TW9kZWw6KFdlYkNhY2hlTW9kZWwpY2FjaGVNb2RlbF07CisgICAgW1tbbWFpbkZyYW1lIHdlYlZp
ZXddIHByZWZlcmVuY2VzXSBzZXRDYWNoZU1vZGVsOihXZWJDYWNoZU1vZGVsKWNhY2hlTW9kZWxd
OwogfQogCiBib29sIFRlc3RSdW5uZXI6OmlzQ29tbWFuZEVuYWJsZWQoSlNTdHJpbmdSZWYgbmFt
ZSkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCShyZXZpc2lvbiAy
Njg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCAtICh2b2lkKXJlc2V0V2luZG93T3JpZ2luCiAKIC0g
KHZvaWQpcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rpbmc6KGNvbnN0IFdUUjo6VGVz
dE9wdGlvbnMmKW9wdGlvbnMKIHsKLSAgICBtX2VuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxv
YWQgPSBvcHRpb25zLmVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQ7CisgICAgbV9lbmFi
bGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkID0gb3B0aW9ucy5lbmFibGVEcmFnRGVzdGluYXRp
b25BY3Rpb25Mb2FkKCk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBz
ZXRGcmFtZTooTlNSZWN0KWZyYW1lCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVt
cFJlbmRlclRyZWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9E
dW1wUmVuZGVyVHJlZS5jcHAJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwNiwyOCArOTA2
LDM3IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3QKIAogICAgIHBy
ZWZlcmVuY2VzLT5zZXRGb250U21vb3RoaW5nKEZvbnRTbW9vdGhpbmdUeXBlU3RhbmRhcmQpOwog
CisgICAgcHJlZnNQcml2YXRlLT5zZXRXZWJTUUxFbmFibGVkKHRydWUpOworCiAgICAgcHJlZnNQ
cml2YXRlLT5zZXREYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQoVFJVRSk7CiAgICAgcHJlZnNQcml2
YXRlLT5jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uKCk7CiAKICAgICBzZXRBbHdheXNBY2NlcHRD
b29raWVzKGZhbHNlKTsKIH0KIAorc3RhdGljIGJvb2wgYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJl
VmFsdWUoc3RkOjpzdHJpbmcga2V5LCBib29sIGRlZmF1bHRWYWx1ZSwgY29uc3QgV1RSOjpUZXN0
T3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBhdXRvIGl0ID0gb3B0aW9ucy5ib29sV2ViUHJlZmVy
ZW5jZUZlYXR1cmVzKCkuZmluZChrZXkpOworICAgIGlmIChpdCAhPSBvcHRpb25zLmJvb2xXZWJQ
cmVmZXJlbmNlRmVhdHVyZXMoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7Cisg
ICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKK30KKwogc3RhdGljIHZvaWQgc2V0V2ViUHJlZmVyZW5j
ZXNGb3JUZXN0T3B0aW9ucyhJV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzLCBjb25zdCBXVFI6
OlRlc3RPcHRpb25zJiBvcHRpb25zKQogewogICAgIENPTVB0cjxJV2ViUHJlZmVyZW5jZXNQcml2
YXRlOD4gcHJlZnNQcml2YXRlIHsgUXVlcnksIHByZWZlcmVuY2VzIH07CiAKLSAgICBwcmVmc1By
aXZhdGUtPnNldE1lbnVJdGVtRWxlbWVudEVuYWJsZWQob3B0aW9ucy5lbmFibGVNZW51SXRlbUVs
ZW1lbnQpOwotICAgIHByZWZzUHJpdmF0ZS0+c2V0S2V5Z2VuRWxlbWVudEVuYWJsZWQob3B0aW9u
cy5lbmFibGVLZXlnZW5FbGVtZW50KTsKLSAgICBwcmVmc1ByaXZhdGUtPnNldE1vZGVybk1lZGlh
Q29udHJvbHNFbmFibGVkKG9wdGlvbnMuZW5hYmxlTW9kZXJuTWVkaWFDb250cm9scyk7Ci0gICAg
cHJlZnNQcml2YXRlLT5zZXRJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkKG9wdGlvbnMuZW5hYmxl
SW5zcGVjdG9yQWRkaXRpb25zKTsKLSAgICBwcmVmc1ByaXZhdGUtPnNldFJlcXVlc3RJZGxlQ2Fs
bGJhY2tFbmFibGVkKG9wdGlvbnMuZW5hYmxlUmVxdWVzdElkbGVDYWxsYmFjayk7Ci0gICAgcHJl
ZnNQcml2YXRlLT5zZXRBc3luY0NsaXBib2FyZEFQSUVuYWJsZWQob3B0aW9ucy5lbmFibGVBc3lu
Y0NsaXBib2FyZEFQSSk7Ci0gICAgcHJlZnNQcml2YXRlLT5zZXRDb250YWN0UGlja2VyQVBJRW5h
YmxlZChvcHRpb25zLmVuYWJsZUNvbnRhY3RQaWNrZXJBUEkpOwotICAgIHByZWZzUHJpdmF0ZS0+
c2V0V2ViU1FMRW5hYmxlZChvcHRpb25zLmVuYWJsZVdlYlNRTCk7Ci0gICAgcHJlZnNQcml2YXRl
LT5zZXRBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzKG9wdGlvbnMuYWxsb3dUb3BOYXZpZ2F0
aW9uVG9EYXRhVVJMcyk7Ci0gICAgcHJlZmVyZW5jZXMtPnNldFByaXZhdGVCcm93c2luZ0VuYWJs
ZWQob3B0aW9ucy51c2VFcGhlbWVyYWxTZXNzaW9uKTsKLSAgICBwcmVmZXJlbmNlcy0+c2V0VXNl
c1BhZ2VDYWNoZShvcHRpb25zLmVuYWJsZUJhY2tGb3J3YXJkQ2FjaGUpOwotICAgIHByZWZzUHJp
dmF0ZS0+c2V0Q1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZChvcHRpb25zLmVuYWJsZUNT
U09NVmlld1Ntb290aFNjcm9sbGluZyk7CisgICAgcHJlZmVyZW5jZXMtPnNldFByaXZhdGVCcm93
c2luZ0VuYWJsZWQob3B0aW9ucy51c2VFcGhlbWVyYWxTZXNzaW9uKCkpOworICAgIHByZWZlcmVu
Y2VzLT5zZXRVc2VzUGFnZUNhY2hlKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJVc2Vz
QmFja0ZvcndhcmRDYWNoZSIsIGZhbHNlLCBvcHRpb25zKSk7CisgICAgcHJlZnNQcml2YXRlLT5z
ZXRNZW51SXRlbUVsZW1lbnRFbmFibGVkKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJN
ZW51SXRlbUVsZW1lbnRFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1ByaXZh
dGUtPnNldEtleWdlbkVsZW1lbnRFbmFibGVkKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVl
KCJLZXlnZW5FbGVtZW50RW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKSk7CisgICAgcHJlZnNQcml2
YXRlLT5zZXRNb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZChib29sV2ViUHJlZmVyZW5jZUZlYXR1
cmVWYWx1ZSgiTW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQiLCB0cnVlLCBvcHRpb25zKSk7Cisg
ICAgcHJlZnNQcml2YXRlLT5zZXRJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkKGJvb2xXZWJQcmVm
ZXJlbmNlRmVhdHVyZVZhbHVlKCJJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkIiwgZmFsc2UsIG9w
dGlvbnMpKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldFJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVk
KGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJSZXF1ZXN0SWRsZUNhbGxiYWNrRW5hYmxl
ZCIsIGZhbHNlLCBvcHRpb25zKSk7CisgICAgcHJlZnNQcml2YXRlLT5zZXRBc3luY0NsaXBib2Fy
ZEFQSUVuYWJsZWQoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkFzeW5jQ2xpcGJvYXJk
QVBJRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKSk7CisgICAgcHJlZnNQcml2YXRlLT5zZXRDb250
YWN0UGlja2VyQVBJRW5hYmxlZChib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQ29udGFj
dFBpY2tlckFQSUVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucykpOworICAgIHByZWZzUHJpdmF0ZS0+
c2V0QWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyhib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVW
YWx1ZSgiQWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyIsIHRydWUsIG9wdGlvbnMpKTsKKyAg
ICBwcmVmc1ByaXZhdGUtPnNldENTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWQoYm9vbFdl
YlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkNTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWQi
LCBmYWxzZSwgb3B0aW9ucykpOwogfQogCiBzdGF0aWMgU3RyaW5nIGFwcGxpY2F0aW9uSWQoKQpA
QCAtOTczLDkgKzk4Miw5IEBAIHN0YXRpYyB2b2lkIHNldEpTQ09wdGlvbnMoY29uc3QgV1RSOjpU
ZXMKICAgICAgICAgc2F2ZWRPcHRpb25zLmNsZWFyKCk7CiAgICAgfQogCi0gICAgaWYgKG9wdGlv
bnMuanNjT3B0aW9ucy5sZW5ndGgoKSkgeworICAgIGlmICghb3B0aW9ucy5qc2NPcHRpb25zKCku
ZW1wdHkoKSkgewogICAgICAgICBKU0M6Ok9wdGlvbnM6OmR1bXBBbGxPcHRpb25zSW5BTGluZShz
YXZlZE9wdGlvbnMpOwotICAgICAgICBKU0M6Ok9wdGlvbnM6OnNldE9wdGlvbnMob3B0aW9ucy5q
c2NPcHRpb25zLmNfc3RyKCkpOworICAgICAgICBKU0M6Ok9wdGlvbnM6OnNldE9wdGlvbnMob3B0
aW9ucy5qc2NPcHRpb25zKCkuY19zdHIoKSk7CiAgICAgfQogfQogCkBAIC0xMTY4LDcgKzExNzcs
NyBAQCBzdGF0aWMgYm9vbCBoYW5kbGVDb250cm9sQ29tbWFuZChjb25zdCBjCiAKIHN0YXRpYyBX
VFI6OlRlc3RPcHRpb25zIHRlc3RPcHRpb25zRm9yVGVzdChjb25zdCBXVFI6OlRlc3RDb21tYW5k
JiBjb21tYW5kKQogewotICAgIFdUUjo6VGVzdEZlYXR1cmVzIGZlYXR1cmVzOworICAgIFdUUjo6
VGVzdEZlYXR1cmVzIGZlYXR1cmVzID0gV1RSOjpUZXN0T3B0aW9uczo6ZGVmYXVsdHMoKTsKICAg
ICBXVFI6Om1lcmdlKGZlYXR1cmVzLCBXVFI6OmhhcmRjb2RlZEZlYXR1cmVzQmFzZWRPblBhdGhG
b3JUZXN0KGNvbW1hbmQpKTsKICAgICBXVFI6Om1lcmdlKGZlYXR1cmVzLCBXVFI6OmZlYXR1cmVE
ZWZhdWx0c0Zyb21UZXN0SGVhZGVyRm9yVGVzdChjb21tYW5kLCBXVFI6OlRlc3RPcHRpb25zOjpr
ZXlUeXBlTWFwcGluZygpKSk7CiAKQEAgLTEyMjksNyArMTIzOCw3IEBAIHN0YXRpYyB2b2lkIHJ1
blRlc3QoY29uc3Qgc3RyaW5nJiBpbnB1dEwKIAogICAgIDo6Z1Rlc3RSdW5uZXIgPSBUZXN0UnVu
bmVyOjpjcmVhdGUodGVzdFVSTC5kYXRhKCksIGNvbW1hbmQuZXhwZWN0ZWRQaXhlbEhhc2gpOwog
ICAgIDo6Z1Rlc3RSdW5uZXItPnNldEN1c3RvbVRpbWVvdXQoY29tbWFuZC50aW1lb3V0Lm1pbGxp
c2Vjb25kcygpKTsKLSAgICA6OmdUZXN0UnVubmVyLT5zZXREdW1wSlNDb25zb2xlTG9nSW5TdGRF
cnIoY29tbWFuZC5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgfHwgb3B0aW9ucy5kdW1wSlNDb25z
b2xlTG9nSW5TdGRFcnIpOworICAgIDo6Z1Rlc3RSdW5uZXItPnNldER1bXBKU0NvbnNvbGVMb2dJ
blN0ZEVycihjb21tYW5kLmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciB8fCBvcHRpb25zLmR1bXBK
U0NvbnNvbGVMb2dJblN0ZEVycigpKTsKIAogICAgIHRvcExvYWRpbmdGcmFtZSA9IG51bGxwdHI7
CiAgICAgZG9uZSA9IGZhbHNlOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MjEsMTcgKzkyMSwxNiBAQCB2
b2lkIFRlc3RDb250cm9sbGVyOjpyZXNldFByZWZlcmVuY2VzVG9DCiAgICAgcGxhdGZvcm1SZXNl
dFByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKCk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8m
IFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAg
ICAgICBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5KHByZWZlcmVuY2VzLCB2YWx1ZSwg
dG9XSyhrZXkpLmdldCgpKTsKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktl
eUZvclRlc3RpbmcocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOwogCiAgICAg
Zm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLmRvdWJsZVdlYlByZWZlcmVu
Y2VGZWF0dXJlcygpKQotICAgICAgICBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXko
cHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOworICAgICAgICBXS1ByZWZlcmVu
Y2VzU2V0RG91YmxlVmFsdWVGb3JLZXlGb3JUZXN0aW5nKHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9X
SyhrZXkpLmdldCgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0
aW9ucy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKLSAgICAgICAgV0tQcmVmZXJlbmNl
c1NldFVJbnQzMlZhbHVlRm9yS2V5KHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgp
KTsKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhw
cmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1
dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuc3RyaW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkp
Ci0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleShwcmVmZXJlbmNlcywg
dG9XSyh2YWx1ZSkuZ2V0KCksIHRvV0soa2V5KS5nZXQoKSk7Ci0KKyAgICAgICAgV0tQcmVmZXJl
bmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdG9XSyh2YWx1
ZSkuZ2V0KCksIHRvV0soa2V5KS5nZXQoKSk7CiB9CiAKIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJl
c2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJl
c2V0U3RhZ2UgcmVzZXRTdGFnZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411713</attachid>
            <date>2020-10-18 12:57:56 -0700</date>
            <delta_ts>2020-10-18 13:01:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201018125756.patch</filename>
            <type>text/plain</type>
            <size>72764</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvU2NyaXB0cy9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvU2NyaXB0cy9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiCShyZXZpc2lv
biAyNjg2NDgpCisrKyBTb3VyY2UvV1RGL1NjcmlwdHMvR2VuZXJhdGVQcmVmZXJlbmNlcy5yYgko
d29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw3IEBAIGNsYXNzIFByZWZlcmVuY2UKICAgYXR0
cl9hY2Nlc3NvciA6Y29uZGl0aW9uCiAgIGF0dHJfYWNjZXNzb3IgOmhpZGRlbgogICBhdHRyX2Fj
Y2Vzc29yIDpkZWZhdWx0VmFsdWVzCisgIGF0dHJfYWNjZXNzb3IgOmV4cG9zZWQKIAogICBkZWYg
aW5pdGlhbGl6ZShuYW1lLCBvcHRzLCBmcm9udGVuZCkKICAgICBAbmFtZSA9IG5hbWUKQEAgLTEx
Myw2ICsxMTQsNyBAQCBjbGFzcyBQcmVmZXJlbmNlCiAgICAgQGNvbmRpdGlvbiA9IG9wdHNbImNv
bmRpdGlvbiJdCiAgICAgQGhpZGRlbiA9IG9wdHNbImhpZGRlbiJdIHx8IGZhbHNlCiAgICAgQGRl
ZmF1bHRWYWx1ZXMgPSBvcHRzWyJkZWZhdWx0VmFsdWUiXVtmcm9udGVuZF0KKyAgICBAZXhwb3Nl
ZCA9ICFvcHRzWyJleHBvc2VkIl0gb3Igb3B0c1siZXhwb3NlZCJdLmluY2x1ZGU/KGZyb250ZW5k
KQogICBlbmQKIAogICBkZWYgbmFtZUxvd2VyCkBAIC0yMDQsNyArMjA2LDcgQEAgY2xhc3MgUHJl
ZmVyZW5jZXMKICAgICAgICAgaWYgIW9wdGlvbnNbIndlYmNvcmVCaW5kaW5nIl0gJiYgb3B0aW9u
c1siZGVmYXVsdFZhbHVlIl0uc2l6ZSAhPSAzCiAgICAgICAgICAgcmFpc2UgIkVSUk9SOiBQcmVm
ZXJlbmNlcyBib3VuZCB0byBXZWJDb3JlOjpTZXR0aW5ncyBtdXN0IGhhdmUgZGVmYXVsdCB2YWx1
ZXMgZm9yIGFsbCBmcm9udGVuZHM6ICN7bmFtZX0iCiAgICAgICAgIGVuZAotICAgICAgICBpZiAh
b3B0aW9uc1siZXhwb3NlZCJdIG9yIG9wdGlvbnNbImV4cG9zZWQiXS5pbmNsdWRlPyhAZnJvbnRl
bmQpCisgICAgICAgIGlmIG9wdGlvbnNbImRlZmF1bHRWYWx1ZSJdLmluY2x1ZGU/KEBmcm9udGVu
ZCkKICAgICAgICAgICBwcmVmZXJlbmNlID0gUHJlZmVyZW5jZS5uZXcobmFtZSwgb3B0aW9ucywg
QGZyb250ZW5kKQogICAgICAgICAgIEBwcmVmZXJlbmNlcyA8PCBwcmVmZXJlbmNlCiAgICAgICAg
ICAgcmVzdWx0IDw8IHByZWZlcmVuY2UKSW5kZXg6IFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJl
bmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAkocmV2aXNp
b24gMjY4NjQ4KQorKysgU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVu
Y2VzSW50ZXJuYWwueWFtbAkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsNyBAQCBBc3luY0Zy
YW1lU2Nyb2xsaW5nRW5hYmxlZDoKICAgd2ViY29yZU9uQ2hhbmdlOiBzZXROZWVkc1JlbGF5b3V0
QWxsRnJhbWVzCiAgIGh1bWFuUmVhZGFibGVOYW1lOiAiQXN5bmMgRnJhbWUgU2Nyb2xsaW5nIgog
ICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJQZXJmb3JtIGZyYW1lIHNjcm9sbGluZyBvZmYg
dGhlIG1haW4gdGhyZWFkIgorICBleHBvc2VkOiBbIFdlYktpdCBdCiAgIGRlZmF1bHRWYWx1ZToK
ICAgICBXZWJLaXRMZWdhY3k6CiAgICAgICBkZWZhdWx0OiBmYWxzZQpAQCAtOTYsNiArOTcsNyBA
QCBBc3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZDoKICAgd2ViY29yZU9uQ2hhbmdlOiBzZXRO
ZWVkc1JlbGF5b3V0QWxsRnJhbWVzCiAgIGh1bWFuUmVhZGFibGVOYW1lOiAiQXN5bmMgT3ZlcmZs
b3cgU2Nyb2xsaW5nIgogICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJQZXJmb3JtIG92ZXJm
bG93IHNjcm9sbGluZyBvZmYgdGhlIG1haW4gdGhyZWFkIgorICBleHBvc2VkOiBbIFdlYktpdCBd
CiAgIGRlZmF1bHRWYWx1ZToKICAgICBXZWJLaXRMZWdhY3k6CiAgICAgICBkZWZhdWx0OiBmYWxz
ZQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMTAtMTcgIFNhbSBXZWlu
aWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFtUZXN0aW5nXSBDb252ZXJ0IER1bXBS
ZW5kZXJUcmVlIHRvIHVzZSBnZW5lcmF0ZWQgdGVzdCBoZWFkZXIgb3B0aW9ucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3ODgwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIFdLUHJlZmVyZW5j
ZXNTZXQqVmFsdWVGb3JLZXkgU1BJIHRvIFdLUHJlZmVyZW5jZXNTZXQqVmFsdWVGb3JLZXlGb3JU
ZXN0aW5nCisgICAgICAgIHRvIG1ha2UgaXQgY2xlYXIgd2hhdCB0aGV5IGFyZSB1c2VkIGZvciBh
bmQgZm9yIGNvbnNpc3RlbmN5IHdpdGggV2ViS2l0TGVnYWN5LgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldEJv
b2xWYWx1ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJs
ZVZhbHVlRm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0VUludDMy
VmFsdWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdW
YWx1ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1
ZUZvcktleSk6IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVG
b3JLZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9y
S2V5KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktl
eSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQ
cml2YXRlLmg6CisKIDIwMjAtMTAtMTYgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIEludHJvZHVjZSBSZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkgdG8gbWFuYWdlIHRoZSByZXNvdXJjZXMgaW4gdGhlIEdQVSBQcm9jZXNz
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUGFn
ZVVwZGF0ZVByZWZlcmVuY2VzLmNwcC5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
Y3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlBhZ2VVcGRhdGVQcmVmZXJlbmNlcy5jcHAu
ZXJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5j
ZXNUZW1wbGF0ZXMvV2ViUGFnZVVwZGF0ZVByZWZlcmVuY2VzLmNwcC5lcmIJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQ
YWdlLmgiCiAKKyNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmgiCiAjaW5jbHVk
ZSAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmg+CkBAIC00NSw3
ICs0NiwxMSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNldHRpbmdzR2VuZXJhdGVkKGNvCiA8JS0g
aWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBl
bmQgLSU+Cis8JS0gaWYgQHByZWYuZXhwb3NlZCAtJT4KICAgICBzZXR0aW5ncy5zZXQ8JT0gQHBy
ZWYud2ViY29yZU5hbWVVcHBlciAlPihzdG9yZS5nZXQ8JT0gQHByZWYudHlwZVVwcGVyICU+VmFs
dWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OjwlPSBAcHJlZi5uYW1lTG93ZXIgJT5LZXkoKSkp
OworPCUtIGVsc2UgLSU+CisgICAgc2V0dGluZ3Muc2V0PCU9IEBwcmVmLndlYmNvcmVOYW1lVXBw
ZXIgJT4oREVGQVVMVF9WQUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4pOworPCUtIGVuZCAtJT4K
IDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjZW5kaWYKIDwlLSBlbmQgLSU+CkBAIC01OCw3
ICs2MywxMSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzR2VuZXJhdGVkCiA8JS0g
aWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBl
bmQgLSU+Cis8JS0gaWYgQHByZWYuZXhwb3NlZCAtJT4KICAgICBXZWJDb3JlOjpEZXByZWNhdGVk
R2xvYmFsU2V0dGluZ3M6OnNldDwlPSBAcHJlZi53ZWJjb3JlTmFtZVVwcGVyICU+KHN0b3JlLmdl
dDwlPSBAcHJlZi50eXBlVXBwZXIgJT5WYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6PCU9
IEBwcmVmLm5hbWVMb3dlciAlPktleSgpKSk7Cis8JS0gZWxzZSAtJT4KKyAgICBXZWJDb3JlOjpE
ZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldDwlPSBAcHJlZi53ZWJjb3JlTmFtZVVwcGVyICU+
KERFRkFVTFRfVkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+KTsKKzwlLSBlbmQgLSU+CiA8JS0g
aWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2VuZGlmCiA8JS0gZW5kIC0lPgpAQCAtNjgsNyArNzcs
MTEgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlc0dlbmVyYXRlZAogPCUtIGlmIEBw
cmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0l
PgorPCUtIGlmIEBwcmVmLmV4cG9zZWQgLSU+CiAgICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXQ8JT0gQHByZWYud2ViY29yZU5hbWVVcHBlciAl
PihzdG9yZS5nZXQ8JT0gQHByZWYudHlwZVVwcGVyICU+VmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5j
ZXNLZXk6OjwlPSBAcHJlZi5uYW1lTG93ZXIgJT5LZXkoKSkpOworPCUtIGVsc2UgLSU+CisgICAg
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXQ8JT0g
QHByZWYud2ViY29yZU5hbWVVcHBlciAlPihERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFt
ZSAlPik7Cis8JS0gZW5kIC0lPgogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNlbmRpZgog
PCUtIGVuZCAtJT4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVy
ZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UHJlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsMjIgKzc4
LDIyIEBAIHZvaWQgV0tQcmVmZXJlbmNlc1NldEludGVybmFsRGVidWdGZWF0dXIKICAgICB0b0lt
cGwocHJlZmVyZW5jZXNSZWYpLT5zZXRJbnRlcm5hbERlYnVnRmVhdHVyZUVuYWJsZWRGb3JLZXko
dG9XVEZTdHJpbmcoaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVLZXkpLCB2YWx1ZSk7CiB9CiAKLXZvaWQg
V0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVu
Y2VzUmVmLCBib29sIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdLUHJlZmVyZW5jZXNT
ZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIGJvb2wgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKIHsKICAgICB0b0ltcGwocHJlZmVyZW5j
ZXNSZWYpLT5zZXRCb29sVmFsdWVGb3JLZXkodG9XVEZTdHJpbmcoa2V5KSwgdmFsdWUpOwogfQog
Ci12b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVm
IHByZWZlcmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKK3ZvaWQgV0tQ
cmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVm
IHByZWZlcmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKIHsKICAgICB0
b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRCb29sVmFsdWVGb3JLZXkodG9XVEZTdHJpbmcoa2V5
KSwgdmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleShX
S1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdS
ZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXlGb3JUZXN0aW5n
KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIHVpbnQzMl90IHZhbHVlLCBXS1N0cmlu
Z1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0VUludDMyVmFsdWVG
b3JLZXkodG9XVEZTdHJpbmcoa2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5jZXNT
ZXRTdHJpbmdWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBXS1N0
cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0U3Ry
aW5nVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYs
IFdLU3RyaW5nUmVmIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZl
cmVuY2VzUmVmKS0+c2V0U3RyaW5nVmFsdWVGb3JLZXkodG9XVEZTdHJpbmcoa2V5KSwgdG9XVEZT
dHJpbmcodmFsdWUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UHJlZmVyZW5jZXNSZWZQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaAkocmV2aXNpb24gMjY4NjQ4KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDEwIEBAIFdLX0VYUE9SVCB2b2lkIFdLUHJl
ZmVyZW5jZXNSZXNldEFsbEludGUKIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRJbnRl
cm5hbERlYnVnRmVhdHVyZUZvcktleShXS1ByZWZlcmVuY2VzUmVmLCBib29sLCBXS1N0cmluZ1Jl
Zik7CiAKIC8vIFRoZSBmb2xsb3dpbmcgZ2VuZXJpYyBzZXR0ZXIgZnVuY3Rpb25zIGFyZSBvbmx5
IGludGVuZGVkIGZvciB1c2UgYnkgdGVzdGluZyBpbmZyYXN0cnVjdHVyZS4KLVdLX0VYUE9SVCB2
b2lkIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVm
ZXJlbmNlc1JlZiwgYm9vbCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKLVdLX0VYUE9SVCB2b2lk
IFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZl
cmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7Ci1XS19FWFBPUlQgdm9p
ZCBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVm
ZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7Ci1XS19FWFBPUlQg
dm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBw
cmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7CitXS19F
WFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkp
OworV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5Rm9yVGVz
dGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdLU3Ry
aW5nUmVmIGtleSk7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVG
b3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIHVpbnQzMl90
IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1Nl
dFN0cmluZ1ZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2Vz
UmVmLCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKIAogLy8gRm9yIFRlc3Qg
UnVubmVyIFVzZSBvbmx5LgogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1Jlc2V0VGVzdFJ1
bm5lck92ZXJyaWRlcyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisy
MDIwLTEwLTE3ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVz
dGluZ10gQ29udmVydCBEdW1wUmVuZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVy
IG9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxNzg4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEV4cG9zZSBhIHNldCBvZiBzZXR0ZXJzIHRvIGZvciBEdW1wUmVuZGVyVHJlZSB0byB1c2Ugd2hl
biBzZXR0aW5nIHByZWZlcmVuY2VzCisgICAgICAgIGJ5IHN0cmluZy4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIF9zd2l0
Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbl0pOgorICAgICAgICAoK1tXZWJQcmVm
ZXJlbmNlcyBfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5
Ol0pOgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lv
bl0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0
aW5nV2l0aFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgX3NldFVJ
bnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1b
V2ViUHJlZmVyZW5jZXMgX3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZv
cktleTpdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgX3NldFN0cmluZ1ByZWZlcmVuY2VG
b3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMg
X3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZhbHVlOmZvcktleTpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oOgorCiAyMDIwLTEwLTE3ICBTYW0g
V2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBDb252ZXJ0IHByZWZlcmVuY2Vz
IGluIFdlYlByZWZlcmVuY2VzUHJpdmF0ZS5oIHRvIHVzZSBAcHJvcGVydHkgc3ludGF4IHRvIG1h
a2UgdGhlbSBtb3JlIG1hbmFnZWFibGUKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Nj
cmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0
dXJlcy5tbS5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU2NyaXB0
cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbEZlYXR1cmVz
Lm1tLmVyYgkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU2Ny
aXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbEZlYXR1
cmVzLm1tLmVyYgkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwogKyAoTlNBcnJheTxXZWJGZWF0dXJlICo+ICopX2V4cGVyaW1lbnRhbEZlYXR1
cmVzCiB7CiAgICAgc3RhdGljIE5TQXJyYXk8V2ViRmVhdHVyZSAqPiAqZmVhdHVyZXMgPSBAWwot
PCUtIGZvciBAcHJlZiBpbiBAZXhwZXJpbWVudGFsRmVhdHVyZXMgZG8gLSU+Cis8JS0gZm9yIEBw
cmVmIGluIEBleHBlcmltZW50YWxGZWF0dXJlcy5zZWxlY3QgeyB8cHwgcC5leHBvc2VkIH0gZG8g
LSU+CiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24g
JT4KIDwlLSBlbmQgLSU+CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TY3JpcHRzL1By
ZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxGZWF0dXJlcy5tbS5lcmIK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU2NyaXB0cy9QcmVmZXJlbmNl
c1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsRmVhdHVyZXMubW0uZXJiCShyZXZpc2lv
biAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TY3JpcHRzL1ByZWZlcmVuY2Vz
VGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxGZWF0dXJlcy5tbS5lcmIJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICsgKE5TQXJy
YXk8V2ViRmVhdHVyZSAqPiAqKV9pbnRlcm5hbEZlYXR1cmVzCiB7CiAgICAgc3RhdGljIE5TQXJy
YXk8V2ViRmVhdHVyZSAqPiAqZmVhdHVyZXMgPSBAWwotPCUtIGZvciBAcHJlZiBpbiBAaW50ZXJu
YWxGZWF0dXJlcyBkbyAtJT4KKzwlLSBmb3IgQHByZWYgaW4gQGludGVybmFsRmVhdHVyZXMuc2Vs
ZWN0IHsgfHB8IHAuZXhwb3NlZCB9IGRvIC0lPgogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4K
ICNpZiA8JT0gQHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgpJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJWaWV3UHJlZmVy
ZW5jZXNDaGFuZ2VkR2VuZXJhdGVkLm1tLmVyYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlZpZXdQcmVmZXJlbmNl
c0NoYW5nZWRHZW5lcmF0ZWQubW0uZXJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlZpZXdQcmVmZXJl
bmNlc0NoYW5nZWRHZW5lcmF0ZWQubW0uZXJiCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3
IEBACiAKICNpbXBvcnQgIldlYlZpZXdJbnRlcm5hbC5oIgogCisjaW1wb3J0ICJXZWJQcmVmZXJl
bmNlc0RlZmluaXRpb25zLmgiCiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNlc0ludGVybmFsLmgiCiAj
aW1wb3J0ICJXZWJWaWV3RGF0YS5oIgogI2ltcG9ydCA8V2ViQ29yZS9EZXByZWNhdGVkR2xvYmFs
U2V0dGluZ3MuaD4KQEAgLTQ0LDcgKzQ1LDExIEBACiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0l
PgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBlbmQgLSU+Cis8JS0gaWYgQHByZWYu
ZXhwb3NlZCAtJT4KICAgICBzZXR0aW5ncy5zZXQ8JT0gQHByZWYud2ViY29yZU5hbWVVcHBlciAl
PihbcHJlZmVyZW5jZXMgPCU9IEBwcmVmLnByZWZlcmVuY2VBY2Nlc3NvciAlPjpAIjwlPSBAcHJl
Zi5wcmVmZXJlbmNlS2V5ICU+Il0pOworPCUtIGVsc2UgLSU+CisgICAgc2V0dGluZ3Muc2V0PCU9
IEBwcmVmLndlYmNvcmVOYW1lVXBwZXIgJT4oREVGQVVMVF9WQUxVRV9GT1JfPCU9IEBwcmVmLm5h
bWUgJT4pOworPCUtIGVuZCAtJT4KIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjZW5kaWYK
IDwlLSBlbmQgLSU+CkBAIC01NCw3ICs1OSwxMSBAQAogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAt
JT4KICNpZiA8JT0gQHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgorPCUtIGlmIEBwcmVm
LmV4cG9zZWQgLSU+CiAgICAgV2ViQ29yZTo6RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpzZXQ8
JT0gQHByZWYud2ViY29yZU5hbWVVcHBlciAlPihbcHJlZmVyZW5jZXMgPCU9IEBwcmVmLnByZWZl
cmVuY2VBY2Nlc3NvciAlPjpAIjwlPSBAcHJlZi5wcmVmZXJlbmNlS2V5ICU+Il0pOworPCUtIGVs
c2UgLSU+CisgICAgV2ViQ29yZTo6RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpzZXQ8JT0gQHBy
ZWYud2ViY29yZU5hbWVVcHBlciAlPihERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFtZSAl
Pik7Cis8JS0gZW5kIC0lPgogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNlbmRpZgogPCUt
IGVuZCAtJT4KQEAgLTY0LDcgKzczLDExIEBACiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0lPgog
I2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBlbmQgLSU+Cis8JS0gaWYgQHByZWYuZXhw
b3NlZCAtJT4KICAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLnNldDwlPSBAcHJlZi53ZWJjb3JlTmFtZVVwcGVyICU+KFtwcmVmZXJlbmNlcyA8JT0g
QHByZWYucHJlZmVyZW5jZUFjY2Vzc29yICU+OkAiPCU9IEBwcmVmLnByZWZlcmVuY2VLZXkgJT4i
XSk7Cis8JS0gZWxzZSAtJT4KKyAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLnNldDwlPSBAcHJlZi53ZWJjb3JlTmFtZVVwcGVyICU+KERFRkFVTFRf
VkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+KTsKKzwlLSBlbmQgLSU+CiA8JS0gaWYgQHByZWYu
Y29uZGl0aW9uIC0lPgogI2VuZGlmCiA8JS0gZW5kIC0lPgpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiAyNjg2
NDgpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjYwLDI2ICsxNjYwLDYgQEAgKyAodm9pZClfc2V0SUJDcmVh
dG9ySUQ6KE5TU3RyaW5nICopc3RyaQogICAgIFtvbGQgcmVsZWFzZV07CiB9CiAKLSsgKHZvaWQp
X3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uCi17Ci0jaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICBXZWJUaHJlYWRMb2NrKCk7Ci0jZW5kaWYKLSAgICBOZXR3b3JrU3Rv
cmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKLX0KLQotKyAodm9p
ZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbgotewotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZGVsZXRlQWxsQ29va2llcygpOwotfQotCi0r
ICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6
KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSlwb2xpY3kKLXsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQ
Q29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1h
cDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChj
b29raWVTdG9yYWdlKTsgLy8gV2lsbCBmYWlsIHdoZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFw
Ojpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4K
LSAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3Jh
Z2UuZ2V0KCksIHBvbGljeSk7Ci19Ci0KIC0gKEJPT0wpaXNET01QYXN0ZUFsbG93ZWQKIHsKICAg
ICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktleTpXZWJLaXRET01QYXN0ZUFsbG93ZWRQcmVm
ZXJlbmNlS2V5XTsKQEAgLTE5NjYsMTEgKzE5NDYsNiBAQCAtICh2b2lkKXdpbGxBZGRUb1dlYlZp
ZXcKICAgICArK19wcml2YXRlLT5udW1XZWJWaWV3czsKIH0KIAotLSAodm9pZClfc2V0UHJlZmVy
ZW5jZUZvclRlc3RXaXRoVmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAq
KWtleQotewotICAgIFtzZWxmIF9zZXRTdHJpbmdWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKLX0K
LQogLSAodm9pZClzZXRGdWxsU2NyZWVuRW5hYmxlZDooQk9PTClmbGFnCiB7CiAgICAgW3NlbGYg
X3NldEJvb2xWYWx1ZTpmbGFnIGZvcktleTpXZWJLaXRGdWxsU2NyZWVuRW5hYmxlZFByZWZlcmVu
Y2VLZXldOwpAQCAtMzAxMyw2ICsyOTg4LDUxIEBAIC0gKHZvaWQpX3NldEVuYWJsZWQ6KEJPT0wp
dmFsdWUgZm9yRmVhdHUKIAogQGVuZAogCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNl
cyAoV2ViUHJpdmF0ZVRlc3RpbmcpCisKKysgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05l
d1Rlc3RpbmdTZXNzaW9uCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBXZWJUaHJl
YWRMb2NrKCk7CisjZW5kaWYKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRv
TmV3VGVzdGluZ1Nlc3Npb24oKTsKK30KKworKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2Fk
ZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9s
aWN5Cit7CisgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3Jh
Z2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNv
b2tpZVN0b3JhZ2UoKTsKKyAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7IC8vIFdpbGwgZmFpbCB3
aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigp
IHdhcyBub3QgY2FsbGVkIGJlZm9yZWhhbmQuCisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENv
b2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBwb2xpY3kpOworfQorCisrICh2
b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uCit7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5kZWxldGVBbGxDb29raWVzKCk7Cit9CisK
Ky0gKHZvaWQpX3NldEJvb2xQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTooQk9PTCl2YWx1
ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5Cit7CisgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTp2YWx1
ZSBmb3JLZXk6a2V5XTsKK30KKworLSAodm9pZClfc2V0VUludDMyUHJlZmVyZW5jZUZvclRlc3Rp
bmdXaXRoVmFsdWU6KHVpbnQzMl90KXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAg
ICBbc2VsZiBfc2V0SW50ZWdlclZhbHVlOnZhbHVlIGZvcktleTprZXldOworfQorCistICh2b2lk
KV9zZXREb3VibGVQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTooZG91YmxlKXZhbHVlIGZv
cktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2VsZiBfc2V0RmxvYXRWYWx1ZTp2YWx1ZSBm
b3JLZXk6a2V5XTsKK30KKworLSAodm9pZClfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdX
aXRoVmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQoreworICAg
IFtzZWxmIF9zZXRTdHJpbmdWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworQGVuZAorCiBA
aW1wbGVtZW50YXRpb24gV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGVQcmVmZXJlbmNlc0NvbnZl
cnRlZFRvV2ViRmVhdHVyZSkKIAogLSAoQk9PTCl1c2VyR2VzdHVyZVByb21pc2VQcm9wYWdhdGlv
bkVuYWJsZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVy
ZW5jZXNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODksMTMgKzg5LDYgQEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2Vi
UHJpdmF0ZSkKICsgKHZvaWQpX3NldEluaXRpYWxEZWZhdWx0VGV4dEVuY29kaW5nVG9TeXN0ZW1F
bmNvZGluZzsKICsgKHZvaWQpX3NldElCQ3JlYXRvcklEOihOU1N0cmluZyAqKXN0cmluZzsKIAot
Ly8gRm9yIER1bXBSZW5kZXJUcmVlIHVzZSBvbmx5LgotKyAodm9pZClfc3dpdGNoTmV0d29ya0xv
YWRlclRvTmV3VGVzdGluZ1Nlc3Npb247Ci0rICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xvYWRl
clNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSljb29r
aWVBY2NlcHRQb2xpY3k7Ci0rICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uOwotLy8g
VXNlZCB0byBzZXQgcHJlZmVyZW5jZSBzcGVjaWZpZWQgaW4gdGhlIHRlc3QgdmlhIExheW91dFRl
c3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSguLikuCi0tICh2b2lkKV9zZXRQcmVmZXJl
bmNlRm9yVGVzdFdpdGhWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICop
a2V5OwotCiArICh2b2lkKXNldFdlYktpdExpbmtUaW1lVmVyc2lvbjooaW50KXZlcnNpb247CiAK
IC8vIEZvciBXZWJWaWV3J3MgdXNlIG9ubHkuCkBAIC0zMTAsNiArMzAzLDE4IEBAIEBpbnRlcmZh
Y2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGVGZWEKIC0gKHZvaWQpX3NldEVuYWJsZWQ6KEJP
T0wpdmFsdWUgZm9yRmVhdHVyZTooV2ViRmVhdHVyZSAqKWZlYXR1cmU7CiBAZW5kCiAKK0BpbnRl
cmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGVUZXN0aW5nKQorKyAodm9pZClfc3dpdGNo
TmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb247CisrICh2b2lkKV9zZXRDdXJyZW50TmV0
d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBv
bGljeSljb29raWVBY2NlcHRQb2xpY3k7CisrICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNz
aW9uOworCistICh2b2lkKV9zZXRCb29sUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KEJP
T0wpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZvaWQpX3NldFVJbnQzMlByZWZl
cmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOih1aW50MzJfdCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5n
ICopa2V5OworLSAodm9pZClfc2V0RG91YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6
KGRvdWJsZSl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OworLSAodm9pZClfc2V0U3RyaW5n
UHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihO
U1N0cmluZyAqKWtleTsKKworQGVuZAorCiAvLyBGSVhNRTogSWYgdGhlc2UgYXJlIG5vdCB1c2Vk
IGFueXdoZXJlLCB3ZSBzaG91bGQgcmVtb3ZlIHRoZW0gYW5kIG9ubHkgdXNlIFdlYkZlYXR1cmUg
bWVjaGFuaXNtIGZvciB0aGUgcHJlZmVyZW5jZS4KIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMg
KFdlYlByaXZhdGVQcmVmZXJlbmNlc0NvbnZlcnRlZFRvV2ViRmVhdHVyZSkKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljKSBCT09MIHVzZXJHZXN0dXJlUHJvbWlzZVByb3BhZ2F0aW9uRW5hYmxlZDsKSW5k
ZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI2ODY1OSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDk5IEBACisyMDIwLTEwLTE3ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAg
ICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVuZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRl
c3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEZ1bGx5IHN1cHBvcnQgdXNlIG9mIGFueSBXZWJQcmVmZXJlbmNlcyoueWFtbCBw
cmVmZXJlbmNlIGluIER1bXBSZW5kZXJUcmVlIChmb3IgbWFjT1MpIGJ5OgorICAgICAgICAgICAg
LSBNb3ZpbmcgRHVtcFJlbmRlclRyZWUncyBUZXN0T3B0aW9ucyB0byBiZSBmdWxseSBiYWNrZWQg
YnkgVGVzdEZlYXR1cmVzIGxpa2UgV2ViS2l0VGVzdFJ1bm5uZXIuCisgICAgICAgICAgICAtIEFk
b3B0aW5nIG5ldyBXZWJQcmVmZXJlbmNlcyBTUEkgZm9yIHNldHRpbmcgYW55IHByZWZlcmVuY2Ug
Ynkga2V5LgorICAgICAgICAgICAgLSBHZW5lcmF0aW5nIG1hcHBpbmcgZnJvbSBXZWJQcmVmZXJl
bmNlcyoueWFtbCB0byBXZWJLaXRMZWdhY3kga2V5IG5hbWVzLgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgIEdlbmVyYXRlIFRlc3RPcHRpb25zR2Vu
ZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAKKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgIEFkZCBuZXcgdGVt
cGxhdGUgZmlsZSwgVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNw
cC5lcmIsIGFuZCBhZGQKKyAgICAgICAgRGVyaXZlZFNvdXJjZXMubWFrZSBhbmQgZ2VuZXJhdGUt
ZGVyaXZlZC1zb3VyY2VzLnNoLCBzbyB0aGF0IGlmIGVpdGhlciBvZiB0aGVtIGNoYW5nZQorICAg
ICAgICB0aGUgRGVyaXZlZFNvdXJjZXMubWFrZSBpcyBhY3R1YWxseSBpbnZva2VkLgorIAorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICBBZGRzIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5j
cHAuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy5tYWtlOgorICAg
ICAgICBTd2l0Y2ggZ2VuZXJhdGlvbiBvZiBwcmVmZXJlbmNlcyB0byB1c2UgYSBzdGF0aWMgcGF0
dGVybiB0byBhdm9pZCBpc3N1ZXMgd2l0aCBjaXJjdWxhciBkZXBlbmRlbmNpZXMuCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICBBZGRzIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFw
cGluZy5jcHAuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2Vz
VGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAu
ZXJiOiBBZGRlZC4KKyAgICAgICAgVGVtcGxhdGUgZm9yIGdlbmVyYXRpbmcgbWFwcGluZyBmcm9t
IFdlYlByZWZlcmVuY2VzKi55YW1sIGtleSBuYW1lcyB0byBXZWJLaXRMZWdhY3kga2V5IG5hbWVz
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmg6CisgICAgICAgIFN3aXRjaCB0byBhIG1vZGVs
IG1vcmUgc2ltaWxhciB0byB0aGF0IGluIFdlYktpdFRlc3RSdW5uZXIsIHdoZXJlIFRlc3RPcHRp
b25zIHN0b3JlcyB0aGUgcGFzc2VkIGluIAorICAgICAgICBUZXN0RmVhdHVyZXMgYW5kIG9ubHkg
ZXhwb3NlcyB2YWx1ZXMgdGhhdCBoYXZlIGJlZW4gc2V0IG9yIGRlZmF1bHQgdmFsdWVzIHdoZW4g
bmVlZGVkLgorICAgICAgICAKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRl
clRyZWUubW06CisgICAgICAgICh0b05TKToKKyAgICAgICAgQWRkIGhlbHBlciB0byBjb252ZXJ0
IGZyb20gYSBzdGQ6OnN0cmluZyB0byBhbiBOU1N0cmluZy4KKworICAgICAgICAoY3JlYXRlV2Vi
Vmlld0FuZE9mZnNjcmVlbldpbmRvdyk6CisgICAgICAgIE5vdyB0aGF0IHdlIGFyZW4ndCBuZWNj
ZXNzYXJpbHkgc2V0dGluZyBhbGwgcHJlZmVyZW5jZXMgZWFjaCB0ZXN0LCB3ZSBuZWVkIHRvIGZ1
bGx5IHJlc2V0IHRoZQorICAgICAgICBXZWJQcmVmZXJlbmNlcyBvbiBlYWNoIHJ1biBieSBjcmVh
dGluZyBhIG5ldyBvbmUuIFRoaXMgbWVhbnMgcmVtb3ZpbmcgdGhlIHVzZXMgb2YgCisgICAgICAg
IFtXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXSwgYW5kIGluc3RlYWQgZ3JhYmJp
bmcgdGhlIFdlYlZpZXcncyBwcmVmZXJlbmNlcyB3aGVuIG5lZWRlZC4KKworICAgICAgICAocmVz
ZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIE1vdmVzIHNvbWUg
c2NhdHRlcmVkIGRlZmF1bHQgdmFsdWUgc2V0dGluZyBoZXJlLiBSZW1vdmUgYXNzZXJ0IHRoYXQg
aXMgbm8gbG9uZ2VyIGFjY3VyYXRlCisgICAgICAgIG5vdyB0aGF0IHdlIGRvbid0IHVzZSBzdGFu
ZGFyZFByZWZlcmVuY2VzIGFuZCB3aWxsIG5vdCBoYXZlIHNldCB0aGlzIHZhbHVlIGJ5IHRoaXMg
cG9pbnQuCisKKyAgICAgICAgKHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMpOgorICAg
ICAgICBVc2UgbmV3IF9zZXQqUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6Zm9yS2V5KiBT
UEkgdG8gc2V0IGFueSBzcGVjaWZpZWQgcHJlZmVybmVjZXMuCisKKyAgICAgICAgKHNldERlZmF1
bHRzVG9Db25zaXN0ZW50VmFsdWVzRm9yVGVzdGluZyk6CisgICAgICAgIE1vdmUgZGVmYXVsdHMg
c2V0IGhlcmUgdG8gdGhlIG1vcmUgYXBwcm9wcmlhdGUgYW5kIGNlbnRyYWxpemVkIHJlc2V0V2Vi
UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMuCisKKyAgICAgICAgKHNldEpTQ09wdGlvbnMp
OgorICAgICAgICBVc2UgbmV3IGdldHRlciBmdW5jdGlvbiByYXRoZXIgdGhhbiBkaXJlY3QgbWVt
YmVyIGFjY2Vzcy4KKworICAgICAgICAocmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGUpOgor
ICAgICAgICBGdWxseSByZXNldCBwcmVmZXJuZWNlcyBieSBhbGxvY2F0aW5nIGEgbmV3IFdlYlBy
ZWZlcmVuY2VzIG9uIHJlc2V0IGFuZCB1c2UgbmV3IFRlc3RPcHRpb25zIGdldHRlcgorICAgICAg
ICBmdW5jdGlvbnMuCisKKyAgICAgICAgKHRlc3RPcHRpb25zRm9yVGVzdCk6CisgICAgICAgIFNl
ZWQgVGVzdEZlYXR1cmVzIHdpdGggZGVmYXVsdCBnbG9iYWwgdmFsdWVzLCBtYXRjaGluZyB0aGUg
aWRpb20gaW4gV2ViS2l0VGVzdFJ1bm5lci4KKworICAgICAgICAocnVuVGVzdCk6CisgICAgICAg
IFVzZSBuZXcgZ2V0dGVyIGZ1bmN0aW9uIHJhdGhlciB0aGFuIGRpcmVjdCBtZW1iZXIgYWNjZXNz
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06CisgICAg
ICAgIChUZXN0UnVubmVyOjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQpOgorICAgICAgICAoVGVz
dFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbik6CisgICAgICAgIChUZXN0UnVubmVy
OjpvdmVycmlkZVByZWZlcmVuY2UpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0Q2FjaGVNb2Rl
bCk6CisgICAgICAgIEFjY2VzcyB0aGUgY29ycmVjdCBXZWJQcmVmZXJlbmNlcyB2aWEgdGhlIFdl
YlZpZXcsIHJhdGhlciB0aGFuIGFzc3VtaW5nIHN0YW5kYXJkUHJlZmVyZW5jZXMKKyAgICAgICAg
YXJlIGJlaW5nIHVzZWQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0
ZS5tbToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZSByZXNldFRvQ29uc2lzdGVudFN0YXRlQmVmb3Jl
VGVzdGluZzpdKToKKyAgICAgICAgVXNlIG5ldyBnZXR0ZXIgZnVuY3Rpb24gcmF0aGVyIHRoYW4g
ZGlyZWN0IG1lbWJlciBhY2Nlc3MuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRHVt
cFJlbmRlclRyZWUuY3BwOgorICAgICAgICAocmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVu
dFZhbHVlcyk6CisgICAgICAgIChib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSk6CisgICAg
ICAgIChzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKToKKyAgICAgICAgKHNldEpTQ09w
dGlvbnMpOgorICAgICAgICAodGVzdE9wdGlvbnNGb3JUZXN0KToKKyAgICAgICAgKHJ1blRlc3Qp
OgorICAgICAgICBLZWVwIFdpbmRvd3MgRHVtcFJlbmRlclRyZWUgd29ya2luZyB3aXRoIHRoZSBu
ZXcgVGVzdE9wdGlvbnMgYnkgZ2V0dGluZyBmZWF0dXJlIHZhbHVlcyBieQorICAgICAgICBzdHJp
bmcga2V5cyB3aXRoIHNwZWNpZmllZCBkZWZhdWx0cyBhbmQgYWRvcHRpbmcgbmV3IGdldHRlciBm
dW5jdGlvbnMuIEluIHRoZSBmdXR1cmUsIHdlCisgICAgICAgIHdpbGwgYWRkIHNpbWlsYXIgU1BJ
IGFzIHdhcyBhZGRlZCBmb3IgbWFjIFdlYktpdExlZ2FjeSB0byBXaW5kb3dzIFdlYktpdExlZ2Fj
eSB0byBhdm9pZCB0aGlzLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFByZWZlcmVuY2Vz
VG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgVXBkYXRlIGZvciByZW5hbWVkIFdLUHJlZmVy
ZW5jZXNSZWYgU1BJLgorCiAyMDIwLTEwLTE3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbRmxhdHBhayBTREtdIGZsYXRwYWt1dGlscy5weSByZXBv
cnRzICJLZXlFcnJvcjogJ2djYyciIGVycm9yIGlmIHVzaW5nIHdpdGggaWNlY2MgYW5kIHRvb2xj
aGFpbnMgYXJlbid0IGdlbmVyYXRlZCB5ZXQKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxp
c3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBsaXN0KEFQUEVORCBEdW1w
UmVuZGVyVHJlZV9QUklWQVRFX0lOQ0xVCiApCiAKIHNldChEdW1wUmVuZGVyVHJlZV9XRUJfUFJF
RkVSRU5DRVNfVEVNUExBVEVTCisgICAgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJl
ZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBw
aW5nLmNwcC5lcmIKICAgICAke0R1bXBSZW5kZXJUcmVlX0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNl
c1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIKICkKIApAQCAtNTMsMTIg
KzU0LDEzIEBAIHNldChEdW1wUmVuZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVMKIHNldF9zb3VyY2Vf
ZmlsZXNfcHJvcGVydGllcygke0R1bXBSZW5kZXJUcmVlX1dFQl9QUkVGRVJFTkNFU30gUFJPUEVS
VElFUyBHRU5FUkFURUQgVFJVRSkKIAogYWRkX2N1c3RvbV9jb21tYW5kKAotICAgIE9VVFBVVCAk
e0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVk
S2V5cy5oCisgICAgT1VUUFVUICR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0v
VGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAke0R1bXBSZW5k
ZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCiAg
ICAgREVQRU5EUyAke0R1bXBSZW5kZXJUcmVlX1dFQl9QUkVGRVJFTkNFU19URU1QTEFURVN9ICR7
RHVtcFJlbmRlclRyZWVfV0VCX1BSRUZFUkVOQ0VTfSBXVEZfQ29weVByZWZlcmVuY2VzCi0gICAg
Q09NTUFORCAke1JVQllfRVhFQ1VUQUJMRX0gJHtXVEZfU0NSSVBUU19ESVJ9L0dlbmVyYXRlUHJl
ZmVyZW5jZXMucmIgLS1mcm9udGVuZCBXZWJLaXRMZWdhY3kgLS1iYXNlICR7V1RGX1NDUklQVFNf
RElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlcy55YW1sIC0tZGVidWcgJHtXVEZfU0NSSVBU
U19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRh
bCAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50
YWwueWFtbCAtLWludGVybmFsICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVm
ZXJlbmNlc0ludGVybmFsLnlhbWwgLS1vdXRwdXREaXIgIiR7RHVtcFJlbmRlclRyZWVfREVSSVZF
RF9TT1VSQ0VTX0RJUn0iIC0tdGVtcGxhdGUgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCisgICAg
Q09NTUFORCAke1JVQllfRVhFQ1VUQUJMRX0gJHtXVEZfU0NSSVBUU19ESVJ9L0dlbmVyYXRlUHJl
ZmVyZW5jZXMucmIgLS1mcm9udGVuZCBXZWJLaXRMZWdhY3kgLS1iYXNlICR7V1RGX1NDUklQVFNf
RElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlcy55YW1sIC0tZGVidWcgJHtXVEZfU0NSSVBU
U19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRh
bCAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50
YWwueWFtbCAtLWludGVybmFsICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVm
ZXJlbmNlc0ludGVybmFsLnlhbWwgLS1vdXRwdXREaXIgIiR7RHVtcFJlbmRlclRyZWVfREVSSVZF
RF9TT1VSQ0VTX0RJUn0iIC0tdGVtcGxhdGUgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlN
YXBwaW5nLmNwcC5lcmIgLS10ZW1wbGF0ZSAke0R1bXBSZW5kZXJUcmVlX0RJUn0vU2NyaXB0cy9Q
cmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIKICAgICBW
RVJCQVRJTSkKIAogbGlzdChBUFBFTkQgRHVtcFJlbmRlclRyZWVfU09VUkNFUworICAgICR7RHVt
cFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJL
aXRMZWdhY3lLZXlNYXBwaW5nLmNwcAogICAgICR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VS
Q0VTX0RJUn0vVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmgKICkKIApJbmRleDogVG9vbHMvRHVt
cFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CShy
ZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC02LDcgKzYsMTAgQEAgJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlLwogJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vz
ci9sb2NhbC9pbmNsdWRlL3d0Zi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50
ZXJuYWwueWFtbAogJChQUk9KRUNUX0RJUikvLi4vVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENv
bnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbAogJChQUk9KRUNUX0RJUikvQmlu
ZGluZ3MvQ29kZUdlbmVyYXRvckR1bXBSZW5kZXJUcmVlLnBtCiskKFBST0pFQ1RfRElSKS9EZXJp
dmVkU291cmNlcy5tYWtlCiAkKFBST0pFQ1RfRElSKS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxh
dGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYgorJChQUk9KRUNUX0RJUikvU2NyaXB0
cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtl
eU1hcHBpbmcuY3BwLmVyYgorJChQUk9KRUNUX0RJUikvU2NyaXB0cy9nZW5lcmF0ZS1kZXJpdmVk
LXNvdXJjZXMuc2gKICQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9Db2RlR2VuZXJhdG9y
LnBtCiAkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvSURMQXR0cmlidXRlcy5qc29uCiAk
KFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvSURMUGFyc2VyLnBtCkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlz
dAkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTIsMyArMiw0IEBACiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUvSlNVSVNjcmlw
dENvbnRyb2xsZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvRHVt
cFJlbmRlclRyZWUvSlNVSVNjcmlwdENvbnRyb2xsZXIuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUvVGVz
dE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcApJbmRleDogVG9vbHMv
RHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAyNjg2NDgpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBA
IC0yMywyOSArMjMsMTIgQEAKIAogUlVCWSA9IHJ1YnkKIAotV0VCX1BSRUZFUkVOQ0VTID0gXAot
ICAgICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlcy55
YW1sIFwKLSAgICAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVy
ZW5jZXNEZWJ1Zy55YW1sIFwKLSAgICAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5j
ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCBcCi0gICAgJHtXVEZfQlVJTERfU0NS
SVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbCBcCi0jCi0K
LVdFQl9QUkVGRVJFTkNFU19URU1QTEFURVMgPSBcCi0gICAgJChEdW1wUmVuZGVyVHJlZSkvU2Ny
aXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIg
XAotIwotV0VCX1BSRUZFUkVOQ0VTX0ZJTEVTID0gJChiYXNlbmFtZSAkKG5vdGRpciAkKFdFQl9Q
UkVGRVJFTkNFU19URU1QTEFURVMpKSkKLVdFQl9QUkVGRVJFTkNFU19QQVRURVJOUyA9ICQoc3Vi
c3QgLmVyYiwsJChXRUJfUFJFRkVSRU5DRVNfRklMRVMpKQotCi1hbGwgOiAkKFdFQl9QUkVGRVJF
TkNFU19GSUxFUykKLQotJChXRUJfUFJFRkVSRU5DRVNfUEFUVEVSTlMpIDogJChXVEZfQlVJTERf
U0NSSVBUU19ESVIpL0dlbmVyYXRlUHJlZmVyZW5jZXMucmIgJChXRUJfUFJFRkVSRU5DRVNfVEVN
UExBVEVTKSAkKFdFQl9QUkVGRVJFTkNFUykKLQkkKFJVQlkpICQ8IC0tZnJvbnRlbmQgV2ViS2l0
TGVnYWN5IC0tYmFzZSAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXMueWFtbCAtLWRlYnVnICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNl
cy9XZWJQcmVmZXJlbmNlc0RlYnVnLnlhbWwgLS1leHBlcmltZW50YWwgJHtXVEZfQlVJTERfU0NS
SVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgLS1p
bnRlcm5hbCAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5j
ZXNJbnRlcm5hbC55YW1sICQoYWRkcHJlZml4IC0tdGVtcGxhdGUgLCAkKFdFQl9QUkVGRVJFTkNF
U19URU1QTEFURVMpKQotCi0KIFVJU0NSSVBUQ09OVEVYVF9ESVIgPSAkKER1bXBSZW5kZXJUcmVl
KS8uLi9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncworRFVNUFJFTkRF
UlRSRUVfUFJFRkVSRU5DRVNfVEVNUExBVEVTX0RJUiA9ICQoRHVtcFJlbmRlclRyZWUpL1Njcmlw
dHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMKIAogVlBBVEggPSBcCiAgICAgJChVSVNDUklQVENPTlRF
WFRfRElSKSBcCisgICAgJChEVU1QUkVOREVSVFJFRV9QUkVGRVJFTkNFU19URU1QTEFURVNfRElS
KSBcCiAjCiAKIFVJQ09OVEVYVF9JTlRFUkZBQ0VTID0gXApAQCAtNzEsMyArNTQsMjEgQEAgYWxs
IDogXAogICAgICQoVUlDT05URVhUX0lOVEVSRkFDRVM6JT1KUyUuaCkgXAogICAgICQoVUlDT05U
RVhUX0lOVEVSRkFDRVM6JT1KUyUuY3BwKSBcCiAjCisKKworV0VCX1BSRUZFUkVOQ0VTID0gXAor
ICAgICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlcy55
YW1sIFwKKyAgICAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVy
ZW5jZXNEZWJ1Zy55YW1sIFwKKyAgICAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5j
ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCBcCisgICAgJHtXVEZfQlVJTERfU0NS
SVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbCBcCisjCisK
K1dFQl9QUkVGRVJFTkNFU19HRU5FUkFURURfRklMRVMgPSBcCisgICAgVGVzdE9wdGlvbnNHZW5l
cmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCBcCisgICAgVGVzdE9wdGlvbnNHZW5lcmF0
ZWRLZXlzLmggXAorIworCithbGwgOiAkKFdFQl9QUkVGRVJFTkNFU19HRU5FUkFURURfRklMRVMp
CisKKyQoV0VCX1BSRUZFUkVOQ0VTX0dFTkVSQVRFRF9GSUxFUykgOiAlIDogJS5lcmIgJChXRUJf
UFJFRkVSRU5DRVMpICQoV1RGX0JVSUxEX1NDUklQVFNfRElSKS9HZW5lcmF0ZVByZWZlcmVuY2Vz
LnJiCisJJChSVUJZKSAkKFdURl9CVUlMRF9TQ1JJUFRTX0RJUikvR2VuZXJhdGVQcmVmZXJlbmNl
cy5yYiAtLWZyb250ZW5kIFdlYktpdExlZ2FjeSAtLWJhc2UgJHtXVEZfQlVJTERfU0NSSVBUU19E
SVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWwgLS1kZWJ1ZyAke1dURl9CVUlMRF9T
Q1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNEZWJ1Zy55YW1sIC0tZXhwZXJp
bWVudGFsICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNl
c0V4cGVyaW1lbnRhbC55YW1sIC0taW50ZXJuYWwgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1By
ZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbCAtLXRlbXBsYXRlICQ8CkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwCShyZXZpc2lvbiAyNjg2NDgpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDYgKzMwLDQ0IEBACiAKIG5hbWVzcGFjZSBXVFIgewogCitjb25zdCBUZXN0RmVhdHVyZXMmIFRl
c3RPcHRpb25zOjpkZWZhdWx0cygpCit7CisgICAgc3RhdGljIFRlc3RGZWF0dXJlcyBmZWF0dXJl
czsKKyAgICBpZiAoZmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcy5lbXB0eSgpKSB7
CisgICAgICAgIGZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMgPSB7CisgICAgICAg
ICAgICAvLyBUaGVzZSBhcmUgV2ViUHJlZmVyZW5jZSB2YWx1ZXMgdGhhdCBtdXN0IGFsd2F5cyBi
ZSBzZXQgYXMgdGhleSBtYXkKKyAgICAgICAgICAgIC8vIGRpZmZlciBmcm9tIHRoZSBkZWZhdWx0
IHNldCBpbiB0aGUgV2ViUHJlZmVyZW5jZXMqLnlhbWwgY29uZmlndXJhdGlvbi4KKyAgICAgICAg
ICAgIHsgIkFsbG93Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzIiwg
ZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMiLCB0
cnVlIH0sCisgICAgICAgICAgICB7ICJBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkIiwgZmFsc2Ug
fSwKKyAgICAgICAgICAgIHsgIkF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCIsIGZhbHNlIH0sCisg
ICAgICAgICAgICB7ICJVc2VzQmFja0ZvcndhcmRDYWNoZSIsIGZhbHNlIH0sCisgICAgICAgICAg
ICB7ICJDb2xvckZpbHRlckVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiSW5zcGVj
dG9yQWRkaXRpb25zRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJJbnRlcnNlY3Rp
b25PYnNlcnZlckVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiS2V5Z2VuRWxlbWVu
dEVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiTWVudUl0ZW1FbGVtZW50RW5hYmxl
ZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJNb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCIs
IHRydWUgfSwKKworICAgICAgICAgICAgeyAiQ1NTTG9naWNhbEVuYWJsZWQiLCBmYWxzZSB9LAor
ICAgICAgICAgICAgeyAiTGluZUhlaWdodFVuaXRzRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAg
ICAgICB7ICJTZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzRW5hYmxlZCIsIHRydWUgfSwK
KyAgICAgICAgICAgIHsgIkxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVk
IiwgdHJ1ZSB9LAorCisgICAgICAgICAgICB7ICJBZENsaWNrQXR0cmlidXRpb25FbmFibGVkIiwg
ZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWln
aHRFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkFzeW5jQ2xpcGJvYXJkQVBJRW5h
YmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdF
bmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkNvbnRhY3RQaWNrZXJBUElFbmFibGVk
IiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkNvcmVNYXRoTUxFbmFibGVkIiwgZmFsc2UgfSwK
KyAgICAgICAgICAgIHsgIlJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkIiwgZmFsc2UgfSwKKyAg
ICAgICAgICAgIHsgIlJlc2l6ZU9ic2VydmVyRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAg
ICB7ICJXZWJHUFVFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgfTsKKyAgICB9CisgICAgcmV0
dXJuIGZlYXR1cmVzOworfQorCiBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcs
IFRlc3RIZWFkZXJLZXlUeXBlPiYgVGVzdE9wdGlvbnM6OmtleVR5cGVNYXBwaW5nKCkKIHsKICAg
ICBzdGF0aWMgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBUZXN0SGVhZGVy
S2V5VHlwZT4gbWFwIHsKQEAgLTQ3LDU2ICs4NSw0NyBAQCBjb25zdCBzdGQ6OnVub3JkZXJlZF9t
YXA8c3RkOjpzdHJpbmcsIFRlCiAgICAgcmV0dXJuIG1hcDsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RhdGljIHZvaWQgc2V0VmFsdWVJZlNldEluTWFwKFQmIHZhbHVlVG9TZXQsIHN0ZDo6
c3RyaW5nIGtleSwgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBUPiYgbWFw
KQorYm9vbCBUZXN0T3B0aW9uczo6d2ViVmlld0lzQ29tcGF0aWJsZVdpdGhPcHRpb25zKGNvbnN0
IFRlc3RPcHRpb25zJiBvcHRpb25zKSBjb25zdAoreworICAgIGlmIChtX2ZlYXR1cmVzLmV4cGVy
aW1lbnRhbEZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJl
cykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLmludGVybmFsRGVi
dWdGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuYm9vbFdlYlByZWZlcmVu
Y2VGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJl
cykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLmRvdWJsZVdlYlBy
ZWZlcmVuY2VGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMuZG91YmxlV2ViUHJlZmVyZW5j
ZUZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMudWlu
dDMyV2ViUHJlZmVyZW5jZUZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy51aW50MzJXZWJQ
cmVmZXJlbmNlRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0
dXJlcy5zdHJpbmdXZWJQcmVmZXJlbmNlRmVhdHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLnN0
cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
IChtX2ZlYXR1cmVzLmJvb2xUZXN0UnVubmVyRmVhdHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVz
LmJvb2xUZXN0UnVubmVyRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
bV9mZWF0dXJlcy5kb3VibGVUZXN0UnVubmVyRmVhdHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVz
LmRvdWJsZVRlc3RSdW5uZXJGZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
IChtX2ZlYXR1cmVzLnN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVy
ZXMuc3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKG1fZmVhdHVyZXMuc3RyaW5nVmVjdG9yVGVzdFJ1bm5lckZlYXR1cmVzICE9IG9wdGlvbnMu
bV9mZWF0dXJlcy5zdHJpbmdWZWN0b3JUZXN0UnVubmVyRmVhdHVyZXMpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBm
ZWF0dXJlVmFsdWUoc3RkOjpzdHJpbmcga2V5LCBUIGRlZmF1bHRWYWx1ZSwgY29uc3Qgc3RkOjp1
bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBUPiYgbWFwKQogewogICAgIGF1dG8gaXQgPSBtYXAu
ZmluZChrZXkpOwotICAgIGlmIChpdCA9PSBtYXAuZW5kKCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICB2YWx1ZVRvU2V0ID0gaXQtPnNlY29uZDsKLX0KLQotVGVzdE9wdGlvbnM6OlRlc3RPcHRpb25z
KFRlc3RGZWF0dXJlcyB0ZXN0RmVhdHVyZXMpCi17Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGFs
bG93Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzLCAiQWxsb3dDcm9z
c09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMiLCB0ZXN0RmVhdHVyZXMuYm9v
bFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGFsbG93VG9w
TmF2aWdhdGlvblRvRGF0YVVSTHMsICJBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzIiwgdGVz
dEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJ
bk1hcChlbmFibGVBY2NlbGVyYXRlZERyYXdpbmcsICJBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVk
IiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVl
SWZTZXRJbk1hcChlbmFibGVBdHRhY2htZW50RWxlbWVudCwgIkF0dGFjaG1lbnRFbGVtZW50RW5h
YmxlZCIsIHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRW
YWx1ZUlmU2V0SW5NYXAoZW5hYmxlQmFja0ZvcndhcmRDYWNoZSwgIlVzZXNCYWNrRm9yd2FyZENh
Y2hlIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZh
bHVlSWZTZXRJbk1hcChlbmFibGVDb2xvckZpbHRlciwgIkNvbG9yRmlsdGVyRW5hYmxlZCIsIHRl
c3RGZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0
SW5NYXAoZW5hYmxlSW5zcGVjdG9yQWRkaXRpb25zLCAiSW5zcGVjdG9yQWRkaXRpb25zRW5hYmxl
ZCIsIHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1
ZUlmU2V0SW5NYXAoZW5hYmxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIsICJJbnRlcnNlY3Rpb25PYnNl
cnZlckVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0g
ICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUtleWdlbkVsZW1lbnQsICJLZXlnZW5FbGVtZW50
RW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBz
ZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlTWVudUl0ZW1FbGVtZW50LCAiTWVudUl0ZW1FbGVtZW50
RW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBz
ZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlTW9kZXJuTWVkaWFDb250cm9scywgIk1vZGVybk1lZGlh
Q29udHJvbHNFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMp
OwotCi0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxv
YWQsICJlbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkIiwgdGVzdEZlYXR1cmVzLmJvb2xU
ZXN0UnVubmVyRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChkdW1wSlNDb25zb2xl
TG9nSW5TdGRFcnIsICJkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIiLCB0ZXN0RmVhdHVyZXMuYm9v
bFRlc3RSdW5uZXJGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGxheWVyQmFja2Vk
V2ViVmlldywgImxheWVyQmFja2VkV2ViVmlldyIsIHRlc3RGZWF0dXJlcy5ib29sVGVzdFJ1bm5l
ckZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAodXNlRXBoZW1lcmFsU2Vzc2lvbiwg
InVzZUVwaGVtZXJhbFNlc3Npb24iLCB0ZXN0RmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0dXJl
cyk7Ci0KLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlw
ZXMsICJhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcyIsIHRlc3RGZWF0dXJlcy5zdHJpbmdU
ZXN0UnVubmVyRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChqc2NPcHRpb25zLCAi
anNjT3B0aW9ucyIsIHRlc3RGZWF0dXJlcy5zdHJpbmdUZXN0UnVubmVyRmVhdHVyZXMpOwotCi0g
ICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUNTU0xvZ2ljYWwsICJDU1NMb2dpY2FsRW5hYmxl
ZCIsIHRlc3RGZWF0dXJlcy5pbnRlcm5hbERlYnVnRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZT
ZXRJbk1hcChlbmFibGVMaW5lSGVpZ2h0VW5pdHMsICJMaW5lSGVpZ2h0VW5pdHNFbmFibGVkIiwg
dGVzdEZlYXR1cmVzLmludGVybmFsRGVidWdGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldElu
TWFwKGVuYWJsZVNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXMsICJzZWxlY3Rpb25BY3Jv
c3NTaGFkb3dCb3VuZGFyaWVzRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5pbnRlcm5hbERlYnVnRmVh
dHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChsYXlvdXRGb3JtYXR0aW5nQ29udGV4dElu
dGVncmF0aW9uRW5hYmxlZCwgIkxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFi
bGVkIiwgdGVzdEZlYXR1cmVzLmludGVybmFsRGVidWdGZWF0dXJlcyk7Ci0KLSAgICBzZXRWYWx1
ZUlmU2V0SW5NYXAoYWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCwgIkFkQ2xpY2tBdHRyaWJ1dGlv
bkVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMpOwotICAgIHNldFZh
bHVlSWZTZXRJbk1hcChlbmFibGVBc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0LCAi
QXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMu
ZXhwZXJpbWVudGFsRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVBc3lu
Y0NsaXBib2FyZEFQSSwgIkFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5l
eHBlcmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUNTU09N
Vmlld1Ntb290aFNjcm9sbGluZywgIkNTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWQiLCB0
ZXN0RmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1h
cChlbmFibGVDb250YWN0UGlja2VyQVBJLCAiQ29udGFjdFBpY2tlckFQSUVuYWJsZWQiLCB0ZXN0
RmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChl
bmFibGVDb3JlTWF0aE1MLCAiQ29yZU1hdGhNTEVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJp
bWVudGFsRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVSZXF1ZXN0SWRs
ZUNhbGxiYWNrLCAiUmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhw
ZXJpbWVudGFsRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVSZXNpemVP
YnNlcnZlciwgIlJlc2l6ZU9ic2VydmVyRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50
YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZVdlYkdQVSwgIldlYkdQ
VUVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMpOworICAgIGlmIChp
dCAhPSBtYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBpdC0+c2Vjb25kOworICAgIHJldHVybiBk
ZWZhdWx0VmFsdWU7Cit9CisKK2Jvb2wgVGVzdE9wdGlvbnM6OmJvb2xUZXN0UnVubmVyRmVhdHVy
ZVZhbHVlKHN0ZDo6c3RyaW5nIGtleSwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGZlYXR1cmVWYWx1ZShrZXksIGRlZmF1bHRWYWx1ZSwgbV9mZWF0dXJlcy5ib29sVGVz
dFJ1bm5lckZlYXR1cmVzKTsKIH0KIAotYm9vbCBUZXN0T3B0aW9uczo6d2ViVmlld0lzQ29tcGF0
aWJsZVdpdGhPcHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvdGhlcikgY29uc3QKK3N0ZDo6c3Ry
aW5nIFRlc3RPcHRpb25zOjpzdHJpbmdUZXN0UnVubmVyRmVhdHVyZVZhbHVlKHN0ZDo6c3RyaW5n
IGtleSwgc3RkOjpzdHJpbmcgZGVmYXVsdFZhbHVlKSBjb25zdAogewotICAgIHJldHVybiBvdGhl
ci5sYXllckJhY2tlZFdlYlZpZXcgPT0gbGF5ZXJCYWNrZWRXZWJWaWV3Ci0gICAgICAgICYmIG90
aGVyLmpzY09wdGlvbnMgPT0ganNjT3B0aW9uczsKKyAgICByZXR1cm4gZmVhdHVyZVZhbHVlKGtl
eSwgZGVmYXVsdFZhbHVlLCBtX2ZlYXR1cmVzLnN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlcyk7CiB9
CiAKIH0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuaAkocmV2aXNpb24gMjY4NjQ4
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNTMgKzMxLDM5IEBACiAKIG5hbWVzcGFjZSBXVFIgewogCi1zdHJ1Y3QgVGVzdE9wdGlv
bnMgewotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlc2UgYW5kIHJlcGxhY2Ugd2l0aCBhY2Nlc3Mg
dG8gVGVzdEZlYXR1cmVzIHNldC4KLSAgICAvLyBXZWIgUHJlZmVyZW5jZXMKLSAgICBib29sIGFs
bG93Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzIHsgZmFsc2UgfTsK
LSAgICBib29sIGFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMgeyB0cnVlIH07Ci0gICAgYm9v
bCBlbmFibGVBY2NlbGVyYXRlZERyYXdpbmcgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQXR0
YWNobWVudEVsZW1lbnQgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQmFja0ZvcndhcmRDYWNo
ZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVDb2xvckZpbHRlciB7IGZhbHNlIH07Ci0gICAg
Ym9vbCBlbmFibGVJbnNwZWN0b3JBZGRpdGlvbnMgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxl
SW50ZXJzZWN0aW9uT2JzZXJ2ZXIgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlS2V5Z2VuRWxl
bWVudCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVNZW51SXRlbUVsZW1lbnQgeyBmYWxzZSB9
OwotICAgIGJvb2wgZW5hYmxlTW9kZXJuTWVkaWFDb250cm9scyB7IHRydWUgfTsKLQotICAgIC8v
IEZJWE1FOiBSZW1vdmUgdGhlc2UgYW5kIHJlcGxhY2Ugd2l0aCBhY2Nlc3MgdG8gVGVzdEZlYXR1
cmVzIHNldC4KLSAgICAvLyBJbnRlcm5hbCBGZWF0dXJlcwotICAgIGJvb2wgZW5hYmxlQ1NTTG9n
aWNhbCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVMaW5lSGVpZ2h0VW5pdHMgeyBmYWxzZSB9
OwotICAgIGJvb2wgZW5hYmxlU2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllcyB7IHRydWUg
fTsKLSAgICBib29sIGxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkIHsg
dHJ1ZSB9OwotCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGVzZSBhbmQgcmVwbGFjZSB3aXRoIGFj
Y2VzcyB0byBUZXN0RmVhdHVyZXMgc2V0LgotICAgIC8vIEV4cGVyaW1lbnRhbCBGZWF0dXJlcwot
ICAgIGJvb2wgYWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBl
bmFibGVBc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0IHsgZmFsc2UgfTsKLSAgICBi
b29sIGVuYWJsZUFzeW5jQ2xpcGJvYXJkQVBJIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUNT
U09NVmlld1Ntb290aFNjcm9sbGluZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVDb250YWN0
UGlja2VyQVBJIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUNvcmVNYXRoTUwgeyBmYWxzZSB9
OwotICAgIGJvb2wgZW5hYmxlUmVxdWVzdElkbGVDYWxsYmFjayB7IGZhbHNlIH07Ci0gICAgYm9v
bCBlbmFibGVSZXNpemVPYnNlcnZlciB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVXZWJHUFUg
eyBmYWxzZSB9OworY2xhc3MgVGVzdE9wdGlvbnMgeworcHVibGljOgorICAgIHN0YXRpYyBjb25z
dCBUZXN0RmVhdHVyZXMmIGRlZmF1bHRzKCk7CisgICAgc3RhdGljIGNvbnN0IHN0ZDo6dW5vcmRl
cmVkX21hcDxzdGQ6OnN0cmluZywgVGVzdEhlYWRlcktleVR5cGU+JiBrZXlUeXBlTWFwcGluZygp
OwogCi0gICAgLy8gVGVzdCBSdW5uZXIgU3BlY2lmaWMgRmVhdHVyZXMKLSAgICBib29sIGR1bXBK
U0NvbnNvbGVMb2dJblN0ZEVyciB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVEcmFnRGVzdGlu
YXRpb25BY3Rpb25Mb2FkIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZVdlYlNRTCB7IHRydWUg
fTsKLSAgICBib29sIGxheWVyQmFja2VkV2ViVmlldyB7IGZhbHNlIH07Ci0gICAgYm9vbCB1c2VF
cGhlbWVyYWxTZXNzaW9uIHsgZmFsc2UgfTsKLSAgICBzdGQ6OnN0cmluZyBhZGRpdGlvbmFsU3Vw
cG9ydGVkSW1hZ2VUeXBlczsKLSAgICBzdGQ6OnN0cmluZyBqc2NPcHRpb25zOworICAgIGV4cGxp
Y2l0IFRlc3RPcHRpb25zKFRlc3RGZWF0dXJlcyBmZWF0dXJlcykKKyAgICAgICAgOiBtX2ZlYXR1
cmVzKHN0ZDo6bW92ZShmZWF0dXJlcykpCisgICAgeworICAgIH0KIAotICAgIGV4cGxpY2l0IFRl
c3RPcHRpb25zKFRlc3RGZWF0dXJlcyk7CiAgICAgYm9vbCB3ZWJWaWV3SXNDb21wYXRpYmxlV2l0
aE9wdGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmKSBjb25zdDsKLSAgICAKLSAgICBzdGF0aWMgY29u
c3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBUZXN0SGVhZGVyS2V5VHlwZT4mIGtl
eVR5cGVNYXBwaW5nKCk7CisKKyAgICAvLyBUZXN0IFJ1bm5lciBTcGVjaWZpYyBGZWF0dXJlcwor
ICAgIGJvb2wgZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyKCkgY29uc3QgeyByZXR1cm4gYm9vbFRl
c3RSdW5uZXJGZWF0dXJlVmFsdWUoImR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciIsIGZhbHNlKTsg
fQorICAgIGJvb2wgZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCgpIGNvbnN0IHsgcmV0
dXJuIGJvb2xUZXN0UnVubmVyRmVhdHVyZVZhbHVlKCJlbmFibGVEcmFnRGVzdGluYXRpb25BY3Rp
b25Mb2FkIiwgZmFsc2UpOyB9CisgICAgYm9vbCBsYXllckJhY2tlZFdlYlZpZXcoKSBjb25zdCB7
IHJldHVybiBib29sVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZSgibGF5ZXJCYWNrZWRXZWJWaWV3Iiwg
ZmFsc2UpOyB9CisgICAgYm9vbCB1c2VFcGhlbWVyYWxTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4g
Ym9vbFRlc3RSdW5uZXJGZWF0dXJlVmFsdWUoInVzZUVwaGVtZXJhbFNlc3Npb24iLCBmYWxzZSk7
IH0KKyAgICBzdGQ6OnN0cmluZyBhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcygpIGNvbnN0
IHsgcmV0dXJuIHN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlVmFsdWUoImFkZGl0aW9uYWxTdXBwb3J0
ZWRJbWFnZVR5cGVzIiwgeyB9KTsgfQorICAgIHN0ZDo6c3RyaW5nIGpzY09wdGlvbnMoKSBjb25z
dCB7IHJldHVybiBzdHJpbmdUZXN0UnVubmVyRmVhdHVyZVZhbHVlKCJqc2NPcHRpb25zIiwgeyB9
KTsgfQorCisgICAgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBib29sPiYg
Ym9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMuYm9v
bFdlYlByZWZlcmVuY2VGZWF0dXJlczsgfQorICAgIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxz
dGQ6OnN0cmluZywgZG91YmxlPiYgZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkgY29uc3Qg
eyByZXR1cm4gbV9mZWF0dXJlcy5kb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXM7IH0KKyAgICBj
b25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIHVpbnQzMl90PiYgdWludDMyV2Vi
UHJlZmVyZW5jZUZlYXR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcy51aW50MzJXZWJQ
cmVmZXJlbmNlRmVhdHVyZXM7IH0KKyAgICBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpz
dHJpbmcsIHN0ZDo6c3RyaW5nPiYgc3RyaW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkgY29uc3Qg
eyByZXR1cm4gbV9mZWF0dXJlcy5zdHJpbmdXZWJQcmVmZXJlbmNlRmVhdHVyZXM7IH0KKworICAg
IHN0YXRpYyBzdGQ6OnN0cmluZyB0b1dlYktpdExlZ2FjeVByZWZlcmVuY2VLZXkoY29uc3Qgc3Rk
OjpzdHJpbmcmKTsKKworcHJpdmF0ZToKKyAgICBib29sIGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVy
ZVZhbHVlKHN0ZDo6c3RyaW5nIGtleSwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0OworICAgIGJv
b2wgYm9vbFRlc3RSdW5uZXJGZWF0dXJlVmFsdWUoc3RkOjpzdHJpbmcga2V5LCBib29sIGRlZmF1
bHRWYWx1ZSkgY29uc3Q7CisgICAgc3RkOjpzdHJpbmcgc3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVW
YWx1ZShzdGQ6OnN0cmluZyBrZXksIHN0ZDo6c3RyaW5nIGRlZmF1bHRWYWx1ZSkgY29uc3Q7CisK
KyAgICBUZXN0RmVhdHVyZXMgbV9mZWF0dXJlczsKIH07CiAKIH0KSW5kZXg6IFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
RHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMTA5LDYgKzEwOSw3IEBACiAJCTVEQjlBQzlFMEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRX
ZWlnaHRXYXRjaGVyNzAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzc1RjA5NzcwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdo
dFdhdGNoZXI3MDAudHRmICovOyB9OwogCQk1REI5QUM5RjBGNzIyQzM2MDA2ODQ2NDEgLyogV2Vi
S2l0V2VpZ2h0V2F0Y2hlcjgwMC50dGYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NUYwOTc4MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRX
ZWlnaHRXYXRjaGVyODAwLnR0ZiAqLzsgfTsKIAkJNURCOUFDQTAwRjcyMkMzNjAwNjg0NjQxIC8q
IFdlYktpdFdlaWdodFdhdGNoZXI5MDAudHRmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVGMDk3OTBEQUMzQ0I2MDBDOEI0RTUgLyogV2Vi
S2l0V2VpZ2h0V2F0Y2hlcjkwMC50dGYgKi87IH07CisJCTdDNEYzMDQwMjUzQjk3MEYwMDMwNTQ1
OCAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M0RjMwM0YyNTNCODM2
OTAwMzA1NDU4IC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5j
cHAgKi87IH07CiAJCTdDRkY5QkJGMjUzM0JCMjQwMDA4MDA5RiAvKiBUZXN0RmVhdHVyZXMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NGRjlCQkUy
NTMzQkIyNDAwMDgwMDlGIC8qIFRlc3RGZWF0dXJlcy5jcHAgKi87IH07CiAJCTdDRkY5QkMyMjUz
M0JDMTYwMDA4MDA5RiAvKiBUZXN0Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0ZGOUJDMTI1MzNCQzE2MDAwODAwOUYgLyogVGVzdENv
bW1hbmQuY3BwICovOyB9OwogCQk4MDA0NUFFRTE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4MDA0NUFFQzE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJpbGl0
eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gKi87IH07CkBAIC0zMzMsOCArMzM0LDEyIEBACiAJCTdD
NDQ2OTdGMjUzNzdBMDIwMDI0MjkwQSAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QzQ0Njk4MDI1Mzc3QTAyMDAyNDI5MEEgLyogY2hlY2steGNmaWxlbGlzdHMu
c2ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnNjcmlwdC5zaDsgcGF0aCA9ICJjaGVjay14Y2ZpbGVsaXN0cy5zaCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDNDQ2OTgxMjUzNzdBMDIwMDI0MjkwQSAvKiBnZW5lcmF0ZS1kZXJp
dmVkLXNvdXJjZXMuc2ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnNjcmlwdC5zaDsgcGF0aCA9ICJnZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMu
c2giOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5
MEEgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3RPcHRp
b25zR2VuZXJhdGVkS2V5cy5oOyBwYXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNDQ2OTg1MjUzNzdFNTIwMDI0MjkwQSAvKiBU
ZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdE9wdGlvbnNHZW5l
cmF0ZWRLZXlzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNEYzMDNGMjUzQjgz
NjkwMDMwNTQ1OCAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lL
ZXlNYXBwaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M5RTI1MEIyNTNC
Nzk0QTAwNDEzMDE4IC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGlu
Zy5jcHAuZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGlu
Zy5jcHAuZXJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0JCQzMyMjFEREZDRjlB
MDA3ODZCOUQgLyogVGVzdE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGVzdE9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0NDQkE1MUQy
NTNCQjlEMzAwQkIzMkMxIC8qIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjZmlsZWxp
c3Q7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdDQ0JBNTFFMjUzQkI5RDMwMEJCMzJDMSAvKiBEZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueGNmaWxlbGlzdDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRkY5QkJE
MjUzM0JCMjQwMDA4MDA5RiAvKiBUZXN0RmVhdHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdEZl
YXR1cmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRkY5QkJFMjUzM0JCMjQw
MDA4MDA5RiAvKiBUZXN0RmVhdHVyZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVzdEZlYXR1
cmVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NGRjlCQzAyNTMzQkMxNjAw
MDgwMDlGIC8qIFRlc3RDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RDb21tYW5kLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDEsNiArNTA2LDggQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMEYxOEU2RjExRDZCOUM2NDAwMjdFNTQ3IC8q
IERlcml2ZWRTb3VyY2VzLm1ha2UgKi8sCisJCQkJN0NDQkE1MUQyNTNCQjlEMzAwQkIzMkMxIC8q
IERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgKi8sCisJCQkJN0NDQkE1MUUyNTNCQjlE
MzAwQkIzMkMxIC8qIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0ICovLAogCQkJCTdD
NDQ2OTgyMjUzNzdDMzQwMDI0MjkwQSAvKiBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJCQkJMzE0OEEw
NjUxRTZGOTBGNDAwRDNCMzE2IC8qIFRlc3RSdW5uZXJTaGFyZWQgKi8sCiAJCQkJMEYxOEU2RTcx
RDZCOUJGNTAwMjdFNTQ3IC8qIFVJU2NyaXB0Q29udGV4dCAqLywKQEAgLTc3MCw2ICs3NzcsNyBA
QAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk3QzQ0Njk3RjI1Mzc3
QTAyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiICovLAorCQkJCTdD
OUUyNTBCMjUzQjc5NEEwMDQxMzAxOCAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2Fj
eUtleU1hcHBpbmcuY3BwLmVyYiAqLywKIAkJCSk7CiAJCQlwYXRoID0gUHJlZmVyZW5jZXNUZW1w
bGF0ZXM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzc4LDYgKzc4Niw3IEBACiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdDNDQ2OTg1MjUzNzdFNTIw
MDI0MjkwQSAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaCAqLywKKwkJCQk3QzRGMzAzRjI1
M0I4MzY5MDAzMDU0NTggLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBw
aW5nLmNwcCAqLywKIAkJCSk7CiAJCQluYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCQlwYXRo
ID0gRGVyaXZlZFNvdXJjZXMvRHVtcFJlbmRlclRyZWU7CkBAIC0xMjkxLDYgKzEzMDAsNyBAQAog
CQkJCTdDRkY5QkMyMjUzM0JDMTYwMDA4MDA5RiAvKiBUZXN0Q29tbWFuZC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3Q0ZGOUJCRjI1MzNCQjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUEzMEEyMUY4MjA1MUQ4QzQwMDA4RkY0MiAvKiBUZXN0T3B0aW9u
cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QzRGMzA0MDI1M0I5NzBGMDAzMDU0NTggLyogVGVz
dE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDMDEzMURBMEM5NzcyMDEwMDg3MzE3RCAvKiBUZXN0UnVubmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDQTE4QjI0MEM5QjAxNEIwMDExNDM2OSAvKiBUZXN0UnVubmVyTWFjLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJRjRENDIzNjExREQ1MDQ4MjAwNjc4MjkwIC8qIFRleHRJbnB1
dENvbnRyb2xsZXJJT1MubSBpbiBTb3VyY2VzICovLApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMu
aC5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvU2NyaXB0cy9QcmVmZXJl
bmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIJKHJldmlzaW9uIDI2
ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0
ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3
ICsyOCw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2RlZmluZSBHRU5FUkFURURfV0VCX1BSRUZFUkVO
Q0VfS0VZX1RZUEVfTUFQUElOR1MgXAotPCUtIGZvciBAcHJlZiBpbiBAcHJlZmVyZW5jZXMgZG8g
LSU+Cis8JS0gZm9yIEBwcmVmIGluIEBwcmVmZXJlbmNlcy5zZWxlY3QgeyB8cHwgcC5leHBvc2Vk
IH0gIGRvIC0lPgogICAgIHsgIjwlPSBAcHJlZi5uYW1lICU+IiwgVGVzdEhlYWRlcktleVR5cGU6
OjwlPSBAcHJlZi50eXBlVXBwZXIgJT5XZWJQcmVmZXJlbmNlIH0sIFwKIDwlLSBlbmQgLSU+CiBc
CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVz
L1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0
ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIJKG5v
bmV4aXN0ZW50KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvU2NyaXB0cy9QcmVmZXJlbmNlc1Rl
bXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVy
Ygkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogPCU9IEB3YXJuaW5nICU+
CisgKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3RPcHRpb25z
LmgiCisKK25hbWVzcGFjZSBXVFIgeworCitzdGQ6OnN0cmluZyBUZXN0T3B0aW9uczo6dG9XZWJL
aXRMZWdhY3lQcmVmZXJlbmNlS2V5KGNvbnN0IHN0ZDo6c3RyaW5nJiB3ZWJQcmVmZXJlbmNlc0tl
eSkKK3sKKyAgICBzdGF0aWMgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0
cmluZz4gbm9uU3RhbmRhcmRLZXlzID0geworPCUtIGZvciBAcHJlZiBpbiBAcHJlZmVyZW5jZXMu
c2VsZWN0IHsgfHB8IHAub3B0c1sid2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleSJdIH0gZG8gLSU+
CisgICAgICAgIHsgIjwlPSBAcHJlZi5uYW1lICU+IiwgIjwlPSBAcHJlZi5wcmVmZXJlbmNlS2V5
ICU+IiB9LCBcCis8JS0gZW5kIC0lPgorICAgIH07CisKKyAgICBhdXRvIGl0ID0gbm9uU3RhbmRh
cmRLZXlzLmZpbmQod2ViUHJlZmVyZW5jZXNLZXkpOworICAgIGlmIChpdCAhPSBub25TdGFuZGFy
ZEtleXMuZW5kKCkpCisgICAgICAgIHJldHVybiBpdC0+c2Vjb25kOworCisgICAgcmV0dXJuICJX
ZWJLaXQiICsgd2ViUHJlZmVyZW5jZXNLZXk7Cit9CisKK30KSW5kZXg6IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTI5LDcgKzEyOSwxMCBAQCBleHRlcm4gIkMiIHsKICNpbXBvcnQgPG1hY2gtby9nZXRzZWN0Lmg+
CiB9CiAKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7CitzdGF0aWMgUmV0YWluUHRyPE5TU3RyaW5nPiB0
b05TKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHJpbmcpCit7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tO
U1N0cmluZyBhbGxvY10gaW5pdFdpdGhVVEY4U3RyaW5nOnN0cmluZy5jX3N0cigpXSk7Cit9CiAK
ICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBpbnRlcmZhY2UgRHVtcFJlbmRlclRyZWVBcHBs
aWNhdGlvbiA6IE5TQXBwbGljYXRpb24KQEAgLTE3Nyw3ICsxODAsNyBAQCAtIChXZWJDb3JlOjpG
cmFtZSopX21haW5Db3JlRnJhbWU7CiBAZW5kCiAjZW5kaWYKIAotc3RhdGljIHZvaWQgcnVuVGVz
dChjb25zdCBzdHJpbmcmIHRlc3RVUkwpOworc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdGQ6
OnN0cmluZyYgdGVzdFVSTCk7CiAKIC8vIERlY2lkaW5nIHdoZW4gaXQncyBPSyB0byBkdW1wIG91
dCB0aGUgc3RhdGUgaXMgYSBiaXQgdHJpY2t5LiAgQWxsIHRoZXNlIG11c3QgYmUgdHJ1ZToKIC8v
IC0gVGhlcmUgaXMgbm8gbG9hZCBpbiBwcm9ncmVzcwpAQCAtMjQ4LDcgKzI1MSw3IEBAIHZvaWQg
c2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24KICAgICBwZXJzaXN0ZW50VXNlclN0
eWxlU2hlZXRMb2NhdGlvbiA9IHVybDsKIH0KIAotc3RhdGljIGJvb2wgc2hvdWxkSWdub3JlV2Vi
Q29yZU5vZGVMZWFrcyhjb25zdCBzdHJpbmcmIHVybFN0cmluZykKK3N0YXRpYyBib29sIHNob3Vs
ZElnbm9yZVdlYkNvcmVOb2RlTGVha3MoY29uc3Qgc3RkOjpzdHJpbmcmIHVybFN0cmluZykKIHsK
ICAgICBzdGF0aWMgY2hhciogY29uc3QgaWdub3JlU2V0W10gPSB7CiAgICAgICAgIC8vIEtlZXBp
bmcgdGhpcyBpbmZyYXN0cnVjdHVyZSBhcm91bmQgaW4gY2FzZSB3ZSBldmVyIG5lZWQgaXQgYWdh
aW4uCkBAIC0yNTcsNyArMjYwLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkSWdub3JlV2ViQ29yZU5v
ZGVMZWFrcwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpZ25vcmVTZXRDb3VudDsgaSsrKSB7
CiAgICAgICAgIC8vIEZJWE1FOiBpZ25vcmUgY2FzZQotICAgICAgICBzdHJpbmcgY3VySWdub3Jl
KGlnbm9yZVNldFtpXSk7CisgICAgICAgIHN0ZDo6c3RyaW5nIGN1cklnbm9yZShpZ25vcmVTZXRb
aV0pOwogICAgICAgICAvLyBNYXRjaCBhdCB0aGUgZW5kIG9mIHRoZSB1cmxTdHJpbmcuCiAgICAg
ICAgIGlmICghdXJsU3RyaW5nLmNvbXBhcmUodXJsU3RyaW5nLmxlbmd0aCgpIC0gY3VySWdub3Jl
Lmxlbmd0aCgpLCBjdXJJZ25vcmUubGVuZ3RoKCksIGN1cklnbm9yZSkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTYxNSw4ICs2MTgsOCBAQCAtIChOU1JlY3QpcmVjdEZvclBhcnQ6KE5T
U2Nyb2xsZXJQYXJ0KXBhCiAgICAgQk9PTCBpc0hvcml6b250YWwgPSBmcmFtZVJlY3Quc2l6ZS53
aWR0aCA+IGZyYW1lUmVjdC5zaXplLmhlaWdodDsKICAgICBDR0Zsb2F0IHRyYWNrTGVuZ3RoID0g
aXNIb3Jpem9udGFsID8gYm91bmRzLnNpemUud2lkdGggOiBib3VuZHMuc2l6ZS5oZWlnaHQ7CiAg
ICAgQ0dGbG9hdCBtaW5Lbm9iU2l6ZSA9IGlzSG9yaXpvbnRhbCA/IGJvdW5kcy5zaXplLmhlaWdo
dCA6IGJvdW5kcy5zaXplLndpZHRoOwotICAgIENHRmxvYXQga25vYkxlbmd0aCA9IG1heChtaW5L
bm9iU2l6ZSwgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4ocm91bmQodHJhY2tMZW5ndGggKiBbc2VsZiBr
bm9iUHJvcG9ydGlvbl0pKSk7Ci0gICAgQ0dGbG9hdCBrbm9iUG9zaXRpb24gPSBzdGF0aWNfY2Fz
dDxDR0Zsb2F0Pigocm91bmQoW3NlbGYgZG91YmxlVmFsdWVdICogKHRyYWNrTGVuZ3RoIC0ga25v
Ykxlbmd0aCkpKSk7CisgICAgQ0dGbG9hdCBrbm9iTGVuZ3RoID0gc3RkOjptYXgobWluS25vYlNp
emUsIHN0YXRpY19jYXN0PENHRmxvYXQ+KHN0ZDo6cm91bmQodHJhY2tMZW5ndGggKiBbc2VsZiBr
bm9iUHJvcG9ydGlvbl0pKSk7CisgICAgQ0dGbG9hdCBrbm9iUG9zaXRpb24gPSBzdGF0aWNfY2Fz
dDxDR0Zsb2F0Pigoc3RkOjpyb3VuZChbc2VsZiBkb3VibGVWYWx1ZV0gKiAodHJhY2tMZW5ndGgg
LSBrbm9iTGVuZ3RoKSkpKTsKIAogICAgIGlmIChpc0hvcml6b250YWwpCiAgICAgICAgIHJldHVy
biBOU01ha2VSZWN0KGJvdW5kcy5vcmlnaW4ueCArIGtub2JQb3NpdGlvbiwgYm91bmRzLm9yaWdp
bi55LCBrbm9iTGVuZ3RoLCBib3VuZHMuc2l6ZS5oZWlnaHQpOwpAQCAtNjcyLDYgKzY3NSwxMCBA
QCBXZWJWaWV3ICpjcmVhdGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93CiAgICAgW3dlYlZpZXcg
c2V0R3JvdXBOYW1lOkAib3JnLndlYmtpdC5EdW1wUmVuZGVyVHJlZSJdOwogI2VuZGlmCiAKKyAg
ICBXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbW1dlYlByZWZlcmVuY2VzIGFsbG9jXSBp
bml0XTsKKyAgICBbcHJlZmVyZW5jZXMgc2V0QXV0b3NhdmVzOk5PXTsKKyAgICBbd2ViVmlldyBz
ZXRQcmVmZXJlbmNlczpwcmVmZXJlbmNlc107CisKICAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRl
OnVpRGVsZWdhdGVdOwogICAgIFt3ZWJWaWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOmZyYW1lTG9h
ZERlbGVnYXRlXTsKICAgICBbd2ViVmlldyBzZXRFZGl0aW5nRGVsZWdhdGU6ZWRpdGluZ0RlbGVn
YXRlXTsKQEAgLTY4NSw4ICs2OTIsNiBAQCBXZWJWaWV3ICpjcmVhdGVXZWJWaWV3QW5kT2Zmc2Ny
ZWVuV2luZG93CiAgICAgW1dlYlZpZXcgcmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsOkAiZmVlZHMi
XTsKICAgICBbV2ViVmlldyByZWdpc3RlclVSTFNjaGVtZUFzTG9jYWw6QCJmZWVkc2VhcmNoIl07
CiAKLSAgICBbW3dlYlZpZXcgcHJlZmVyZW5jZXNdIF9zZXRNZWRpYVJlY29yZGVyRW5hYmxlZDpZ
RVNdOwotCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFt3ZWJWaWV3IHNldFdpbmRvd09jY2x1c2lv
bkRldGVjdGlvbkVuYWJsZWQ6Tk9dOwogICAgIFtXZWJWaWV3IF9zZXRGb250QWxsb3dMaXN0OmZv
bnRBbGxvd0xpc3QoKV07CkBAIC04NDQsOSArODQ5LDggQEAgc3RhdGljIHZvaWQgZW5hYmxlRXhw
ZXJpbWVudGFsRmVhdHVyZXMoVwogfQogCiAvLyBDYWxsZWQgYmVmb3JlIGVhY2ggdGVzdC4KLXN0
YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKQorc3RhdGlj
IHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhXZWJQcmVmZXJlbmNl
cyAqcHJlZmVyZW5jZXMpCiB7Ci0gICAgV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzID0gW1dl
YlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdOwogICAgIGVuYWJsZUV4cGVyaW1lbnRh
bEZlYXR1cmVzKHByZWZlcmVuY2VzKTsKIAogICAgIFtwcmVmZXJlbmNlcyBzZXROZWVkc1N0b3Jh
Z2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyazogTk9dOwpAQCAtOTAyLDYgKzkwNiw3IEBAIHN0YXRp
YyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3QKICAgICB9IGVsc2UKICAgICAgICAg
W3ByZWZlcmVuY2VzIHNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZDpOT107CiAKKyAgICBbcHJlZmVy
ZW5jZXMgc2V0SW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGU6
Tk9dOwogICAgIFtwcmVmZXJlbmNlcyBzZXRNZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lOllFU107
CiAgICAgW3ByZWZlcmVuY2VzIHNldE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlOk5P
XTsKICAgICBbcHJlZmVyZW5jZXMgc2V0VmlkZW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmU6
Tk9dOwpAQCAtOTI4LDkgKzkzMyw4IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNU
b0NvbnNpc3QKICNlbmRpZgogICAgIFtwcmVmZXJlbmNlcyBzZXRVc2VQcmVIVE1MNVBhcnNlclF1
aXJrczpOT107CiAgICAgW3ByZWZlcmVuY2VzIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkOk5PXTsKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBBU1NFUlQoW3ByZWZl
cmVuY2VzIG1vY2tTY3JvbGxiYXJzRW5hYmxlZF0pOwotI2VuZGlmCisKKyAgICBbcHJlZmVyZW5j
ZXMgc2V0TW9ja1Njcm9sbGJhcnNFbmFibGVkOllFU107CiAKICAgICBbcHJlZmVyZW5jZXMgc2V0
V2ViQXVkaW9FbmFibGVkOllFU107CiAgICAgW3ByZWZlcmVuY2VzIHNldE1vZGVyblVucHJlZml4
ZWRXZWJBdWRpb0VuYWJsZWQ6WUVTXTsKQEAgLTk2MCw2ICs5NjQsNyBAQCBzdGF0aWMgdm9pZCBy
ZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0CiAgICAgcHJlZmVyZW5jZXMubWVkaWFDYXBhYmls
aXRpZXNFbmFibGVkID0gWUVTOwogCiAgICAgcHJlZmVyZW5jZXMuc2VsZWN0aW9uQWNyb3NzU2hh
ZG93Qm91bmRhcmllc0VuYWJsZWQgPSBZRVM7CisgICAgcHJlZmVyZW5jZXMuZnVsbFNjcmVlbkVu
YWJsZWQgPSBZRVM7CiAKICAgICBbcHJlZmVyZW5jZXMgc2V0V2ViU1FMRW5hYmxlZDpZRVNdOwog
CkBAIC05NjcsMzQgKzk3MiwyMSBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9D
b25zaXN0CiAgICAgW1dlYlByZWZlcmVuY2VzIF9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Np
b25Db29raWVBY2NlcHRQb2xpY3k6TlNIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWlu
RG9jdW1lbnREb21haW5dOwogfQogCi1zdGF0aWMgdm9pZCBzZXRXZWJQcmVmZXJlbmNlc0ZvclRl
c3RPcHRpb25zKGNvbnN0IFdUUjo6VGVzdE9wdGlvbnMmIG9wdGlvbnMpCitzdGF0aWMgdm9pZCBz
ZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNl
cywgY29uc3QgV1RSOjpUZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBXZWJQcmVmZXJlbmNl
cyAqcHJlZmVyZW5jZXMgPSBbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc107Cisg
ICAgcHJlZmVyZW5jZXMucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IG9wdGlvbnMudXNlRXBoZW1l
cmFsU2Vzc2lvbigpOworCisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRp
b25zLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAgICAgW3ByZWZlcmVuY2VzIF9z
ZXRCb29sUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dmFsdWUgZm9yS2V5OnRvTlMoV1RS
OjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGtleSkpLmdldCgpXTsK
KworICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5kb3VibGVXZWJQ
cmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXREb3VibGVQcmVm
ZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZSBmb3JLZXk6dG9OUyhXVFI6OlRlc3RPcHRp
b25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVuY2VLZXkoa2V5KSkuZ2V0KCldOwogCi0gICAgcHJl
ZmVyZW5jZXMuYXR0YWNobWVudEVsZW1lbnRFbmFibGVkID0gb3B0aW9ucy5lbmFibGVBdHRhY2ht
ZW50RWxlbWVudDsKLSAgICBwcmVmZXJlbmNlcy5hY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkID0g
b3B0aW9ucy5lbmFibGVBY2NlbGVyYXRlZERyYXdpbmc7Ci0gICAgcHJlZmVyZW5jZXMubWVudUl0
ZW1FbGVtZW50RW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlTWVudUl0ZW1FbGVtZW50OwotICAgIHBy
ZWZlcmVuY2VzLmtleWdlbkVsZW1lbnRFbmFibGVkID0gb3B0aW9ucy5lbmFibGVLZXlnZW5FbGVt
ZW50OwotICAgIHByZWZlcmVuY2VzLm1vZGVybk1lZGlhQ29udHJvbHNFbmFibGVkID0gb3B0aW9u
cy5lbmFibGVNb2Rlcm5NZWRpYUNvbnRyb2xzOwotICAgIHByZWZlcmVuY2VzLmluc3BlY3RvckFk
ZGl0aW9uc0VuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUluc3BlY3RvckFkZGl0aW9uczsKLSAgICBw
cmVmZXJlbmNlcy5hbGxvd0Nyb3NzT3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFs
cyA9IG9wdGlvbnMuYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlh
bHM7Ci0gICAgcHJlZmVyZW5jZXMuY29sb3JGaWx0ZXJFbmFibGVkID0gb3B0aW9ucy5lbmFibGVD
b2xvckZpbHRlcjsKLSAgICBwcmVmZXJlbmNlcy5zZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFy
aWVzRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlU2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmll
czsKLSAgICBwcmVmZXJlbmNlcy53ZWJHUFVFbmFibGVkID0gb3B0aW9ucy5lbmFibGVXZWJHUFU7
Ci0gICAgcHJlZmVyZW5jZXMuQ1NTTG9naWNhbEVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUNTU0xv
Z2ljYWw7Ci0gICAgcHJlZmVyZW5jZXMubGluZUhlaWdodFVuaXRzRW5hYmxlZCA9IG9wdGlvbnMu
ZW5hYmxlTGluZUhlaWdodFVuaXRzOwotICAgIHByZWZlcmVuY2VzLmFkQ2xpY2tBdHRyaWJ1dGlv
bkVuYWJsZWQgPSBvcHRpb25zLmFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQ7Ci0gICAgcHJlZmVy
ZW5jZXMucmVzaXplT2JzZXJ2ZXJFbmFibGVkID0gb3B0aW9ucy5lbmFibGVSZXNpemVPYnNlcnZl
cjsKLSAgICBwcmVmZXJlbmNlcy5DU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkID0gb3B0
aW9ucy5lbmFibGVDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmc7Ci0gICAgcHJlZmVyZW5jZXMuY29y
ZU1hdGhNTEVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUNvcmVNYXRoTUw7Ci0gICAgcHJlZmVyZW5j
ZXMucmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWQgPSBvcHRpb25zLmVuYWJsZVJlcXVlc3RJZGxl
Q2FsbGJhY2s7Ci0gICAgcHJlZmVyZW5jZXMuYXN5bmNDbGlwYm9hcmRBUElFbmFibGVkID0gb3B0
aW9ucy5lbmFibGVBc3luY0NsaXBib2FyZEFQSTsKLSAgICBwcmVmZXJlbmNlcy5wcml2YXRlQnJv
d3NpbmdFbmFibGVkID0gb3B0aW9ucy51c2VFcGhlbWVyYWxTZXNzaW9uOwotICAgIHByZWZlcmVu
Y2VzLnVzZXNQYWdlQ2FjaGUgPSBvcHRpb25zLmVuYWJsZUJhY2tGb3J3YXJkQ2FjaGU7Ci0gICAg
cHJlZmVyZW5jZXMubGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQgPSBv
cHRpb25zLmxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkOwotICAgIHBy
ZWZlcmVuY2VzLmFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkID0gb3B0
aW9ucy5lbmFibGVBc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0OwotICAgIHByZWZl
cmVuY2VzLmFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMgPSBvcHRpb25zLmFsbG93VG9wTmF2
aWdhdGlvblRvRGF0YVVSTHM7Ci0gICAgcHJlZmVyZW5jZXMuY29udGFjdFBpY2tlckFQSUVuYWJs
ZWQgPSBvcHRpb25zLmVuYWJsZUNvbnRhY3RQaWNrZXJBUEk7CisgICAgZm9yIChjb25zdCBhdXRv
JiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJlcygpKQor
ICAgICAgICBbcHJlZmVyZW5jZXMgX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZh
bHVlOnZhbHVlIGZvcktleTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJl
ZmVyZW5jZUtleShrZXkpKS5nZXQoKV07CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZh
bHVlXSA6IG9wdGlvbnMuc3RyaW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAgIFtw
cmVmZXJlbmNlcyBfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dG9OUyh2
YWx1ZSkuZ2V0KCkgZm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQ
cmVmZXJlbmNlS2V5KGtleSkpLmdldCgpXTsKIH0KIAogLy8gQ2FsbGVkIG9uY2Ugb24gRHVtcFJl
bmRlclRyZWUgc3RhcnR1cC4KQEAgLTEwMTgsOSArMTAxMCw2IEBAIHN0YXRpYyB2b2lkIHNldERl
ZmF1bHRzVG9Db25zaXN0ZW50VmFsdWUKICAgICAgICAgQCJBcHBsZU90aGVySGlnaGxpZ2h0Q29s
b3IiOkAiMC41MDAwMDAgMC41MDAwMDAgMC41MDAwMDAiLAogICAgICAgICBAIkFwcGxlTGFuZ3Vh
Z2VzIjogQFsgQCJlbiIgXSwKICAgICAgICAgV2ViS2l0RW5hYmxlRnVsbERvY3VtZW50VGVhcmRv
d25QcmVmZXJlbmNlS2V5OiBAWUVTLAotICAgICAgICBXZWJLaXRGdWxsU2NyZWVuRW5hYmxlZFBy
ZWZlcmVuY2VLZXk6IEBZRVMsCi0gICAgICAgIFdlYktpdEFsbG93c0lubGluZU1lZGlhUGxheWJh
Y2tQcmVmZXJlbmNlS2V5OiBAWUVTLAotICAgICAgICBXZWJLaXRJbmxpbmVNZWRpYVBsYXliYWNr
UmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZUtleTogQE5PLAogICAgICAgICBAIlVzZVdlYktp
dFdlYkluc3BlY3RvciI6IEBZRVMsCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAg
IEAiTlNQcmVmZXJyZWRTcGVsbFNlcnZlckxhbmd1YWdlIjogQCJlbl9VUyIsCkBAIC0xNDMxLDcg
KzE0MjAsNyBAQCBzdGF0aWMgTlNJbnRlZ2VyIGNvbXBhcmVIaXN0b3J5SXRlbXMoaWQgCiAKIHN0
YXRpYyBOU0RhdGEgKmR1bXBBdWRpbygpCiB7Ci0gICAgY29uc3QgdmVjdG9yPGNoYXI+JiBkYXRh
VmVjdG9yID0gZ1Rlc3RSdW5uZXItPmF1ZGlvUmVzdWx0KCk7CisgICAgY29uc3QgYXV0byYgZGF0
YVZlY3RvciA9IGdUZXN0UnVubmVyLT5hdWRpb1Jlc3VsdCgpOwogCiAgICAgTlNEYXRhICpkYXRh
ID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRhdGFWZWN0b3IuZGF0YSgpIGxlbmd0aDpkYXRhVmVj
dG9yLnNpemUoKV07CiAgICAgcmV0dXJuIGRhdGE7CkBAIC0xNjI3LDcgKzE2MTYsNyBAQCBzdGF0
aWMgdm9pZCBzaXplV2ViVmlld0ZvckN1cnJlbnRUZXN0KCkKICAgICBbdWlEZWxlZ2F0ZSByZXNl
dFdpbmRvd09yaWdpbl07CiAKICAgICAvLyBXM0MgU1ZHIHRlc3RzIGV4cGVjdCB0byBiZSA0ODB4
MzYwCi0gICAgYm9vbCBpc1NWR1czQ1Rlc3QgPSAoZ1Rlc3RSdW5uZXItPnRlc3RVUkwoKS5maW5k
KCJzdmcvVzNDLVNWRy0xLjEiKSAhPSBzdHJpbmc6Om5wb3MpOworICAgIGJvb2wgaXNTVkdXM0NU
ZXN0ID0gKGdUZXN0UnVubmVyLT50ZXN0VVJMKCkuZmluZCgic3ZnL1czQy1TVkctMS4xIikgIT0g
c3RkOjpzdHJpbmc6Om5wb3MpOwogICAgIE5TU2l6ZSBmcmFtZVNpemUgPSBpc1NWR1czQ1Rlc3Qg
PyBOU01ha2VTaXplKFRlc3RSdW5uZXI6OnczY1NWR1ZpZXdXaWR0aCwgVGVzdFJ1bm5lcjo6dzNj
U1ZHVmlld0hlaWdodCkgOiBOU01ha2VTaXplKFRlc3RSdW5uZXI6OnZpZXdXaWR0aCwgVGVzdFJ1
bm5lcjo6dmlld0hlaWdodCk7CiAgICAgW1ttYWluRnJhbWUgd2ViVmlld10gc2V0RnJhbWVTaXpl
OmZyYW1lU2l6ZV07CiAgICAgW1ttYWluRnJhbWUgZnJhbWVWaWV3XSBzZXRGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIGZyYW1lU2l6ZS53aWR0aCwgZnJhbWVTaXplLmhlaWdodCldOwpAQCAtMTgyNiw5
ICsxODE1LDkgQEAgc3RhdGljIHZvaWQgc2V0SlNDT3B0aW9ucyhjb25zdCBXVFI6OlRlcwogICAg
ICAgICBzYXZlZE9wdGlvbnMuY2xlYXIoKTsKICAgICB9CiAKLSAgICBpZiAob3B0aW9ucy5qc2NP
cHRpb25zLmxlbmd0aCgpKSB7CisgICAgaWYgKCFvcHRpb25zLmpzY09wdGlvbnMoKS5lbXB0eSgp
KSB7CiAgICAgICAgIEpTQzo6T3B0aW9uczo6ZHVtcEFsbE9wdGlvbnNJbkFMaW5lKHNhdmVkT3B0
aW9ucyk7Ci0gICAgICAgIEpTQzo6T3B0aW9uczo6c2V0T3B0aW9ucyhvcHRpb25zLmpzY09wdGlv
bnMuY19zdHIoKSk7CisgICAgICAgIEpTQzo6T3B0aW9uczo6c2V0T3B0aW9ucyhvcHRpb25zLmpz
Y09wdGlvbnMoKS5jX3N0cigpKTsKICAgICB9CiB9CiAKQEAgLTE4MzksNiArMTgyOCwxMCBAQCBz
dGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0CiAKICAgICBXZWJWaWV3ICp3
ZWJWaWV3ID0gW21haW5GcmFtZSB3ZWJWaWV3XTsKIAorICAgIFdlYlByZWZlcmVuY2VzICpwcmVm
ZXJlbmNlcyA9IFtbV2ViUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdOworICAgIFtwcmVmZXJlbmNl
cyBzZXRBdXRvc2F2ZXM6Tk9dOworICAgIFt3ZWJWaWV3IHNldFByZWZlcmVuY2VzOnByZWZlcmVu
Y2VzXTsKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYWRqdXN0V2ViRG9jdW1lbnRG
b3JTdGFuZGFyZFZpZXdwb3J0KGdXZWJCcm93c2VyVmlldywgZ1dlYlNjcm9sbFZpZXcpOwogICAg
IFt3ZWJWaWV3IF9zZXRBbGxvd3NNZXNzYWdpbmc6WUVTXTsKQEAgLTE4NjcsMTAgKzE4NjAsMTAg
QEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdAogCiAgICAgW1dlYkNh
Y2hlIGNsZWFyQ2FjaGVkQ3JlZGVudGlhbHNdOwogCi0gICAgcmVzZXRXZWJQcmVmZXJlbmNlc1Rv
Q29uc2lzdGVudFZhbHVlcygpOwotICAgIHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMo
b3B0aW9ucyk7CisgICAgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhwcmVm
ZXJlbmNlcyk7CisgICAgc2V0V2ViUHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9ucyhwcmVmZXJlbmNl
cywgb3B0aW9ucyk7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFt3ZWJWaWV3IHNldFdhbnRzTGF5
ZXI6b3B0aW9ucy5sYXllckJhY2tlZFdlYlZpZXddOworICAgIFt3ZWJWaWV3IHNldFdhbnRzTGF5
ZXI6b3B0aW9ucy5sYXllckJhY2tlZFdlYlZpZXcoKV07CiAjZW5kaWYKIAogICAgIFRlc3RSdW5u
ZXI6OnNldFNlcmlhbGl6ZUhUVFBMb2FkcyhmYWxzZSk7CkBAIC0xOTE0LDcgKzE5MDcsNyBAQCBz
dGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0CiAgICAgW1tOU1Bhc3RlYm9h
cmQgZ2VuZXJhbFBhc3RlYm9hcmRdIGRlY2xhcmVUeXBlczpAW05TU3RyaW5nUGJvYXJkVHlwZV0g
b3duZXI6bmlsXTsKICNlbmRpZgogCi0gICAgV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRBZGRpdGlv
bmFsU3VwcG9ydGVkSW1hZ2VUeXBlc0ZvclRlc3Rpbmcob3B0aW9ucy5hZGRpdGlvbmFsU3VwcG9y
dGVkSW1hZ2VUeXBlcy5jX3N0cigpKTsKKyAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldEFkZGl0
aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzRm9yVGVzdGluZyhvcHRpb25zLmFkZGl0aW9uYWxTdXBw
b3J0ZWRJbWFnZVR5cGVzKCkuY19zdHIoKSk7CiAKICAgICBbbWFpbkZyYW1lIF9jbGVhck9wZW5l
cl07CiAKQEAgLTE5NzAsMTkgKzE5NjMsMTkgQEAgc3RhdGljIE5TVVJMICpjb21wdXRlVGVzdFVS
TChOU1N0cmluZyAqcAogCiBzdGF0aWMgV1RSOjpUZXN0T3B0aW9ucyB0ZXN0T3B0aW9uc0ZvclRl
c3QoY29uc3QgV1RSOjpUZXN0Q29tbWFuZCYgY29tbWFuZCkKIHsKLSAgICBXVFI6OlRlc3RGZWF0
dXJlcyBmZWF0dXJlczsKKyAgICBXVFI6OlRlc3RGZWF0dXJlcyBmZWF0dXJlcyA9IFdUUjo6VGVz
dE9wdGlvbnM6OmRlZmF1bHRzKCk7CiAgICAgV1RSOjptZXJnZShmZWF0dXJlcywgV1RSOjpoYXJk
Y29kZWRGZWF0dXJlc0Jhc2VkT25QYXRoRm9yVGVzdChjb21tYW5kKSk7CiAgICAgV1RSOjptZXJn
ZShmZWF0dXJlcywgV1RSOjpmZWF0dXJlRGVmYXVsdHNGcm9tVGVzdEhlYWRlckZvclRlc3QoY29t
bWFuZCwgV1RSOjpUZXN0T3B0aW9uczo6a2V5VHlwZU1hcHBpbmcoKSkpOwogCiAgICAgcmV0dXJu
IFdUUjo6VGVzdE9wdGlvbnMgeyBXVEZNb3ZlKGZlYXR1cmVzKSB9OwogfQogCi1zdGF0aWMgdm9p
ZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgaW5wdXRMaW5lKQorc3RhdGljIHZvaWQgcnVuVGVzdChj
b25zdCBzdGQ6OnN0cmluZyYgaW5wdXRMaW5lKQogewogICAgIEFTU0VSVCghaW5wdXRMaW5lLmVt
cHR5KCkpOwogCiAgICAgYXV0byBjb21tYW5kID0gV1RSOjpwYXJzZUlucHV0TGluZShpbnB1dExp
bmUpOwotICAgIGNvbnN0IHN0cmluZyYgcGF0aE9yVVJMID0gY29tbWFuZC5wYXRoT3JVUkw7Cisg
ICAgYXV0byBwYXRoT3JVUkwgPSBjb21tYW5kLnBhdGhPclVSTDsKICAgICBkdW1wUGl4ZWxzRm9y
Q3VycmVudFRlc3QgPSBjb21tYW5kLnNob3VsZER1bXBQaXhlbHMgfHwgZHVtcFBpeGVsc0ZvckFs
bFRlc3RzOwogCiAgICAgTlNTdHJpbmcgKnBhdGhPclVSTFN0cmluZyA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoVVRGOFN0cmluZzpwYXRoT3JVUkwuY19zdHIoKV07CkBAIC0yMDE3LDcgKzIwMTAsNyBA
QCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgaW5wdXRMCiAgICAgZ1Rlc3RSdW5u
ZXIgPSBUZXN0UnVubmVyOjpjcmVhdGUodGVzdFVSTCwgY29tbWFuZC5leHBlY3RlZFBpeGVsSGFz
aCk7CiAgICAgZ1Rlc3RSdW5uZXItPnNldEFsbG93ZWRIb3N0cyhhbGxvd2VkSG9zdHMpOwogICAg
IGdUZXN0UnVubmVyLT5zZXRDdXN0b21UaW1lb3V0KGNvbW1hbmQudGltZW91dC5taWxsaXNlY29u
ZHMoKSk7Ci0gICAgZ1Rlc3RSdW5uZXItPnNldER1bXBKU0NvbnNvbGVMb2dJblN0ZEVycihjb21t
YW5kLmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciB8fCBvcHRpb25zLmR1bXBKU0NvbnNvbGVMb2dJ
blN0ZEVycik7CisgICAgZ1Rlc3RSdW5uZXItPnNldER1bXBKU0NvbnNvbGVMb2dJblN0ZEVycihj
b21tYW5kLmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciB8fCBvcHRpb25zLmR1bXBKU0NvbnNvbGVM
b2dJblN0ZEVycigpKTsKIAogICAgIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlKG9wdGlv
bnMsIFJlc2V0VGltZTo6QmVmb3JlVGVzdCk7CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9UZXN0UnVubmVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9UZXN0UnVubmVyTWFjLm1tCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTc2LDE0ICs1
NzYsMTQgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRQYWdlUGF1c2VkKGJvb2wgcGF1cwogCiB2b2lk
IFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZChib29sIGZsYWcpCiB7Ci0gICAg
W1tXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXSBzZXRVc2VyU3R5bGVTaGVldEVu
YWJsZWQ6ZmxhZ107CisgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBzZXRV
c2VyU3R5bGVTaGVldEVuYWJsZWQ6ZmxhZ107CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VXNl
clN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKQogewogICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gcGF0aENGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBwYXRoKSk7CiAgICAgTlNVUkwgKnVybCA9IFtOU1VSTCBVUkxXaXRoU3Ry
aW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKXBhdGhDRi5nZXQoKV07Ci0gICAgW1tXZWJQcmVmZXJl
bmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXSBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uOnVybF07
CisgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBzZXRVc2VyU3R5bGVTaGVl
dExvY2F0aW9uOnVybF07CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VmFsdWVGb3JVc2VyKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIEpTU3RyaW5nUmVmIHZh
bHVlKQpAQCAtNjA5LDcgKzYwOSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJl
bmNlKEpTU3QKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHZhbHVlQ0YgPSBhZG9wdENGKEpT
U3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHZhbHVlKSk7CiAgICAgTlNT
dHJpbmcgKnZhbHVlTlMgPSAoX19icmlkZ2UgTlNTdHJpbmcgKil2YWx1ZUNGLmdldCgpOwogCi0g
ICAgW1tXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXSBfc2V0UHJlZmVyZW5jZUZv
clRlc3RXaXRoVmFsdWU6dmFsdWVOUyBmb3JLZXk6a2V5TlNdOworICAgIFtbW21haW5GcmFtZSB3
ZWJWaWV3XSBwcmVmZXJlbmNlc10gX3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZh
bHVlOnZhbHVlTlMgZm9yS2V5OmtleU5TXTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpyZW1vdmVB
bGxWaXNpdGVkTGlua3MoKQpAQCAtNzAwLDcgKzcwMCw3IEBAIGJvb2wgVGVzdFJ1bm5lcjo6Zmlu
ZFN0cmluZyhKU0NvbnRleHRSZWYKIAogdm9pZCBUZXN0UnVubmVyOjpzZXRDYWNoZU1vZGVsKGlu
dCBjYWNoZU1vZGVsKQogewotICAgIFtbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNl
c10gc2V0Q2FjaGVNb2RlbDooV2ViQ2FjaGVNb2RlbCljYWNoZU1vZGVsXTsKKyAgICBbW1ttYWlu
RnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIHNldENhY2hlTW9kZWw6KFdlYkNhY2hlTW9kZWwp
Y2FjaGVNb2RlbF07CiB9CiAKIGJvb2wgVGVzdFJ1bm5lcjo6aXNDb21tYW5kRW5hYmxlZChKU1N0
cmluZ1JlZiBuYW1lKQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0J
KHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRl
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIC0gKHZvaWQpcmVzZXRXaW5kb3dP
cmlnaW4KIAogLSAodm9pZClyZXNldFRvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZzooY29u
c3QgV1RSOjpUZXN0T3B0aW9ucyYpb3B0aW9ucwogewotICAgIG1fZW5hYmxlRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uTG9hZCA9IG9wdGlvbnMuZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZDsK
KyAgICBtX2VuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQgPSBvcHRpb25zLmVuYWJsZURy
YWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQoKTsKIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3
ICopc2VuZGVyIHNldEZyYW1lOihOU1JlY3QpZnJhbWUKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTA2LDI4ICs5MDYsMzcgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lz
dAogCiAgICAgcHJlZmVyZW5jZXMtPnNldEZvbnRTbW9vdGhpbmcoRm9udFNtb290aGluZ1R5cGVT
dGFuZGFyZCk7CiAKKyAgICBwcmVmc1ByaXZhdGUtPnNldFdlYlNRTEVuYWJsZWQodHJ1ZSk7CisK
ICAgICBwcmVmc1ByaXZhdGUtPnNldERhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZChUUlVFKTsKICAg
ICBwcmVmc1ByaXZhdGUtPmNsZWFyTmV0d29ya0xvYWRlclNlc3Npb24oKTsKIAogICAgIHNldEFs
d2F5c0FjY2VwdENvb2tpZXMoZmFsc2UpOwogfQogCitzdGF0aWMgYm9vbCBib29sV2ViUHJlZmVy
ZW5jZUZlYXR1cmVWYWx1ZShzdGQ6OnN0cmluZyBrZXksIGJvb2wgZGVmYXVsdFZhbHVlLCBjb25z
dCBXVFI6OlRlc3RPcHRpb25zJiBvcHRpb25zKQoreworICAgIGF1dG8gaXQgPSBvcHRpb25zLmJv
b2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKS5maW5kKGtleSk7CisgICAgaWYgKGl0ICE9IG9wdGlv
bnMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcygpLmVuZCgpKQorICAgICAgICByZXR1cm4gaXQt
PnNlY29uZDsKKyAgICByZXR1cm4gZGVmYXVsdFZhbHVlOworfQorCiBzdGF0aWMgdm9pZCBzZXRX
ZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKElXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMs
IGNvbnN0IFdUUjo6VGVzdE9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgQ09NUHRyPElXZWJQcmVm
ZXJlbmNlc1ByaXZhdGU4PiBwcmVmc1ByaXZhdGUgeyBRdWVyeSwgcHJlZmVyZW5jZXMgfTsKIAot
ICAgIHByZWZzUHJpdmF0ZS0+c2V0TWVudUl0ZW1FbGVtZW50RW5hYmxlZChvcHRpb25zLmVuYWJs
ZU1lbnVJdGVtRWxlbWVudCk7Ci0gICAgcHJlZnNQcml2YXRlLT5zZXRLZXlnZW5FbGVtZW50RW5h
YmxlZChvcHRpb25zLmVuYWJsZUtleWdlbkVsZW1lbnQpOwotICAgIHByZWZzUHJpdmF0ZS0+c2V0
TW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQob3B0aW9ucy5lbmFibGVNb2Rlcm5NZWRpYUNvbnRy
b2xzKTsKLSAgICBwcmVmc1ByaXZhdGUtPnNldEluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQob3B0
aW9ucy5lbmFibGVJbnNwZWN0b3JBZGRpdGlvbnMpOwotICAgIHByZWZzUHJpdmF0ZS0+c2V0UmVx
dWVzdElkbGVDYWxsYmFja0VuYWJsZWQob3B0aW9ucy5lbmFibGVSZXF1ZXN0SWRsZUNhbGxiYWNr
KTsKLSAgICBwcmVmc1ByaXZhdGUtPnNldEFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxlZChvcHRpb25z
LmVuYWJsZUFzeW5jQ2xpcGJvYXJkQVBJKTsKLSAgICBwcmVmc1ByaXZhdGUtPnNldENvbnRhY3RQ
aWNrZXJBUElFbmFibGVkKG9wdGlvbnMuZW5hYmxlQ29udGFjdFBpY2tlckFQSSk7Ci0gICAgcHJl
ZnNQcml2YXRlLT5zZXRXZWJTUUxFbmFibGVkKG9wdGlvbnMuZW5hYmxlV2ViU1FMKTsKLSAgICBw
cmVmc1ByaXZhdGUtPnNldEFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMob3B0aW9ucy5hbGxv
d1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzKTsKLSAgICBwcmVmZXJlbmNlcy0+c2V0UHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZChvcHRpb25zLnVzZUVwaGVtZXJhbFNlc3Npb24pOwotICAgIHByZWZlcmVu
Y2VzLT5zZXRVc2VzUGFnZUNhY2hlKG9wdGlvbnMuZW5hYmxlQmFja0ZvcndhcmRDYWNoZSk7Ci0g
ICAgcHJlZnNQcml2YXRlLT5zZXRDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkKG9wdGlv
bnMuZW5hYmxlQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nKTsKKyAgICBwcmVmZXJlbmNlcy0+c2V0
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChvcHRpb25zLnVzZUVwaGVtZXJhbFNlc3Npb24oKSk7Cisg
ICAgcHJlZmVyZW5jZXMtPnNldFVzZXNQYWdlQ2FjaGUoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJl
VmFsdWUoIlVzZXNCYWNrRm9yd2FyZENhY2hlIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVm
c1ByaXZhdGUtPnNldE1lbnVJdGVtRWxlbWVudEVuYWJsZWQoYm9vbFdlYlByZWZlcmVuY2VGZWF0
dXJlVmFsdWUoIk1lbnVJdGVtRWxlbWVudEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucykpOworICAg
IHByZWZzUHJpdmF0ZS0+c2V0S2V5Z2VuRWxlbWVudEVuYWJsZWQoYm9vbFdlYlByZWZlcmVuY2VG
ZWF0dXJlVmFsdWUoIktleWdlbkVsZW1lbnRFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAg
ICBwcmVmc1ByaXZhdGUtPnNldE1vZGVybk1lZGlhQ29udHJvbHNFbmFibGVkKGJvb2xXZWJQcmVm
ZXJlbmNlRmVhdHVyZVZhbHVlKCJNb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCIsIHRydWUsIG9w
dGlvbnMpKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldEluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQo
Ym9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQi
LCBmYWxzZSwgb3B0aW9ucykpOworICAgIHByZWZzUHJpdmF0ZS0+c2V0UmVxdWVzdElkbGVDYWxs
YmFja0VuYWJsZWQoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIlJlcXVlc3RJZGxlQ2Fs
bGJhY2tFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldEFz
eW5jQ2xpcGJvYXJkQVBJRW5hYmxlZChib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQXN5
bmNDbGlwYm9hcmRBUElFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1ByaXZh
dGUtPnNldENvbnRhY3RQaWNrZXJBUElFbmFibGVkKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZh
bHVlKCJDb250YWN0UGlja2VyQVBJRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKSk7CisgICAgcHJl
ZnNQcml2YXRlLT5zZXRBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzKGJvb2xXZWJQcmVmZXJl
bmNlRmVhdHVyZVZhbHVlKCJBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzIiwgdHJ1ZSwgb3B0
aW9ucykpOworICAgIHByZWZzUHJpdmF0ZS0+c2V0Q1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5h
YmxlZChib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQ1NTT01WaWV3U21vb3RoU2Nyb2xs
aW5nRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgYXBwbGlj
YXRpb25JZCgpCkBAIC05NzMsOSArOTgyLDkgQEAgc3RhdGljIHZvaWQgc2V0SlNDT3B0aW9ucyhj
b25zdCBXVFI6OlRlcwogICAgICAgICBzYXZlZE9wdGlvbnMuY2xlYXIoKTsKICAgICB9CiAKLSAg
ICBpZiAob3B0aW9ucy5qc2NPcHRpb25zLmxlbmd0aCgpKSB7CisgICAgaWYgKCFvcHRpb25zLmpz
Y09wdGlvbnMoKS5lbXB0eSgpKSB7CiAgICAgICAgIEpTQzo6T3B0aW9uczo6ZHVtcEFsbE9wdGlv
bnNJbkFMaW5lKHNhdmVkT3B0aW9ucyk7Ci0gICAgICAgIEpTQzo6T3B0aW9uczo6c2V0T3B0aW9u
cyhvcHRpb25zLmpzY09wdGlvbnMuY19zdHIoKSk7CisgICAgICAgIEpTQzo6T3B0aW9uczo6c2V0
T3B0aW9ucyhvcHRpb25zLmpzY09wdGlvbnMoKS5jX3N0cigpKTsKICAgICB9CiB9CiAKQEAgLTEx
NjgsNyArMTE3Nyw3IEBAIHN0YXRpYyBib29sIGhhbmRsZUNvbnRyb2xDb21tYW5kKGNvbnN0IGMK
IAogc3RhdGljIFdUUjo6VGVzdE9wdGlvbnMgdGVzdE9wdGlvbnNGb3JUZXN0KGNvbnN0IFdUUjo6
VGVzdENvbW1hbmQmIGNvbW1hbmQpCiB7Ci0gICAgV1RSOjpUZXN0RmVhdHVyZXMgZmVhdHVyZXM7
CisgICAgV1RSOjpUZXN0RmVhdHVyZXMgZmVhdHVyZXMgPSBXVFI6OlRlc3RPcHRpb25zOjpkZWZh
dWx0cygpOwogICAgIFdUUjo6bWVyZ2UoZmVhdHVyZXMsIFdUUjo6aGFyZGNvZGVkRmVhdHVyZXNC
YXNlZE9uUGF0aEZvclRlc3QoY29tbWFuZCkpOwogICAgIFdUUjo6bWVyZ2UoZmVhdHVyZXMsIFdU
Ujo6ZmVhdHVyZURlZmF1bHRzRnJvbVRlc3RIZWFkZXJGb3JUZXN0KGNvbW1hbmQsIFdUUjo6VGVz
dE9wdGlvbnM6OmtleVR5cGVNYXBwaW5nKCkpKTsKIApAQCAtMTIyOSw3ICsxMjM4LDcgQEAgc3Rh
dGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIGlucHV0TAogCiAgICAgOjpnVGVzdFJ1bm5l
ciA9IFRlc3RSdW5uZXI6OmNyZWF0ZSh0ZXN0VVJMLmRhdGEoKSwgY29tbWFuZC5leHBlY3RlZFBp
eGVsSGFzaCk7CiAgICAgOjpnVGVzdFJ1bm5lci0+c2V0Q3VzdG9tVGltZW91dChjb21tYW5kLnRp
bWVvdXQubWlsbGlzZWNvbmRzKCkpOwotICAgIDo6Z1Rlc3RSdW5uZXItPnNldER1bXBKU0NvbnNv
bGVMb2dJblN0ZEVycihjb21tYW5kLmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciB8fCBvcHRpb25z
LmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVycik7CisgICAgOjpnVGVzdFJ1bm5lci0+c2V0RHVtcEpT
Q29uc29sZUxvZ0luU3RkRXJyKGNvbW1hbmQuZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIHx8IG9w
dGlvbnMuZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyKCkpOwogCiAgICAgdG9wTG9hZGluZ0ZyYW1l
ID0gbnVsbHB0cjsKICAgICBkb25lID0gZmFsc2U7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyMSwxNyAr
OTIxLDE2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnJlc2V0UHJlZmVyZW5jZXNUb0MKICAgICBw
bGF0Zm9ybVJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKTsKIAogICAgIGZvciAo
Y29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1
cmVzKCkpCi0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXkocHJlZmVyZW5j
ZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOworICAgICAgICBXS1ByZWZlcmVuY2VzU2V0Qm9v
bFZhbHVlRm9yS2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQo
KSk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuZG91Ymxl
V2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCi0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXREb3VibGVW
YWx1ZUZvcktleShwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CisgICAgICAg
IFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVyZW5jZXMs
IHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2
YWx1ZV0gOiBvcHRpb25zLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAgICAgICBX
S1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXkocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dL
KGtleSkuZ2V0KCkpOworICAgICAgICBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXlG
b3JUZXN0aW5nKHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKIAogICAgIGZv
ciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5zdHJpbmdXZWJQcmVmZXJlbmNl
RmVhdHVyZXMoKSkKLSAgICAgICAgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5KHBy
ZWZlcmVuY2VzLCB0b1dLKHZhbHVlKS5nZXQoKSwgdG9XSyhrZXkpLmdldCgpKTsKLQorICAgICAg
ICBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXlGb3JUZXN0aW5nKHByZWZlcmVuY2Vz
LCB0b1dLKHZhbHVlKS5nZXQoKSwgdG9XSyhrZXkpLmdldCgpKTsKIH0KIAogYm9vbCBUZXN0Q29u
dHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYg
b3B0aW9ucywgUmVzZXRTdGFnZSByZXNldFN0YWdlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411714</attachid>
            <date>2020-10-18 13:02:00 -0700</date>
            <delta_ts>2020-10-18 13:30:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201018130159.patch</filename>
            <type>text/plain</type>
            <size>82246</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvU2NyaXB0cy9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvU2NyaXB0cy9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiCShyZXZpc2lv
biAyNjg2NDgpCisrKyBTb3VyY2UvV1RGL1NjcmlwdHMvR2VuZXJhdGVQcmVmZXJlbmNlcy5yYgko
d29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw3IEBAIGNsYXNzIFByZWZlcmVuY2UKICAgYXR0
cl9hY2Nlc3NvciA6Y29uZGl0aW9uCiAgIGF0dHJfYWNjZXNzb3IgOmhpZGRlbgogICBhdHRyX2Fj
Y2Vzc29yIDpkZWZhdWx0VmFsdWVzCisgIGF0dHJfYWNjZXNzb3IgOmV4cG9zZWQKIAogICBkZWYg
aW5pdGlhbGl6ZShuYW1lLCBvcHRzLCBmcm9udGVuZCkKICAgICBAbmFtZSA9IG5hbWUKQEAgLTEx
Myw2ICsxMTQsNyBAQCBjbGFzcyBQcmVmZXJlbmNlCiAgICAgQGNvbmRpdGlvbiA9IG9wdHNbImNv
bmRpdGlvbiJdCiAgICAgQGhpZGRlbiA9IG9wdHNbImhpZGRlbiJdIHx8IGZhbHNlCiAgICAgQGRl
ZmF1bHRWYWx1ZXMgPSBvcHRzWyJkZWZhdWx0VmFsdWUiXVtmcm9udGVuZF0KKyAgICBAZXhwb3Nl
ZCA9ICFvcHRzWyJleHBvc2VkIl0gb3Igb3B0c1siZXhwb3NlZCJdLmluY2x1ZGU/KGZyb250ZW5k
KQogICBlbmQKIAogICBkZWYgbmFtZUxvd2VyCkBAIC0yMDQsNyArMjA2LDcgQEAgY2xhc3MgUHJl
ZmVyZW5jZXMKICAgICAgICAgaWYgIW9wdGlvbnNbIndlYmNvcmVCaW5kaW5nIl0gJiYgb3B0aW9u
c1siZGVmYXVsdFZhbHVlIl0uc2l6ZSAhPSAzCiAgICAgICAgICAgcmFpc2UgIkVSUk9SOiBQcmVm
ZXJlbmNlcyBib3VuZCB0byBXZWJDb3JlOjpTZXR0aW5ncyBtdXN0IGhhdmUgZGVmYXVsdCB2YWx1
ZXMgZm9yIGFsbCBmcm9udGVuZHM6ICN7bmFtZX0iCiAgICAgICAgIGVuZAotICAgICAgICBpZiAh
b3B0aW9uc1siZXhwb3NlZCJdIG9yIG9wdGlvbnNbImV4cG9zZWQiXS5pbmNsdWRlPyhAZnJvbnRl
bmQpCisgICAgICAgIGlmIG9wdGlvbnNbImRlZmF1bHRWYWx1ZSJdLmluY2x1ZGU/KEBmcm9udGVu
ZCkKICAgICAgICAgICBwcmVmZXJlbmNlID0gUHJlZmVyZW5jZS5uZXcobmFtZSwgb3B0aW9ucywg
QGZyb250ZW5kKQogICAgICAgICAgIEBwcmVmZXJlbmNlcyA8PCBwcmVmZXJlbmNlCiAgICAgICAg
ICAgcmVzdWx0IDw8IHByZWZlcmVuY2UKSW5kZXg6IFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJl
bmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAkocmV2aXNp
b24gMjY4NjQ4KQorKysgU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVu
Y2VzSW50ZXJuYWwueWFtbAkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsNyBAQCBBc3luY0Zy
YW1lU2Nyb2xsaW5nRW5hYmxlZDoKICAgd2ViY29yZU9uQ2hhbmdlOiBzZXROZWVkc1JlbGF5b3V0
QWxsRnJhbWVzCiAgIGh1bWFuUmVhZGFibGVOYW1lOiAiQXN5bmMgRnJhbWUgU2Nyb2xsaW5nIgog
ICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJQZXJmb3JtIGZyYW1lIHNjcm9sbGluZyBvZmYg
dGhlIG1haW4gdGhyZWFkIgorICBleHBvc2VkOiBbIFdlYktpdCBdCiAgIGRlZmF1bHRWYWx1ZToK
ICAgICBXZWJLaXRMZWdhY3k6CiAgICAgICBkZWZhdWx0OiBmYWxzZQpAQCAtOTYsNiArOTcsNyBA
QCBBc3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZDoKICAgd2ViY29yZU9uQ2hhbmdlOiBzZXRO
ZWVkc1JlbGF5b3V0QWxsRnJhbWVzCiAgIGh1bWFuUmVhZGFibGVOYW1lOiAiQXN5bmMgT3ZlcmZs
b3cgU2Nyb2xsaW5nIgogICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJQZXJmb3JtIG92ZXJm
bG93IHNjcm9sbGluZyBvZmYgdGhlIG1haW4gdGhyZWFkIgorICBleHBvc2VkOiBbIFdlYktpdCBd
CiAgIGRlZmF1bHRWYWx1ZToKICAgICBXZWJLaXRMZWdhY3k6CiAgICAgICBkZWZhdWx0OiBmYWxz
ZQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMTAtMTcgIFNhbSBXZWlu
aWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFtUZXN0aW5nXSBDb252ZXJ0IER1bXBS
ZW5kZXJUcmVlIHRvIHVzZSBnZW5lcmF0ZWQgdGVzdCBoZWFkZXIgb3B0aW9ucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3ODgwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIFdLUHJlZmVyZW5j
ZXNTZXQqVmFsdWVGb3JLZXkgU1BJIHRvIFdLUHJlZmVyZW5jZXNTZXQqVmFsdWVGb3JLZXlGb3JU
ZXN0aW5nCisgICAgICAgIHRvIG1ha2UgaXQgY2xlYXIgd2hhdCB0aGV5IGFyZSB1c2VkIGZvciBh
bmQgZm9yIGNvbnNpc3RlbmN5IHdpdGggV2ViS2l0TGVnYWN5LgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldEJv
b2xWYWx1ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJs
ZVZhbHVlRm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0VUludDMy
VmFsdWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdW
YWx1ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1
ZUZvcktleSk6IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVG
b3JLZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9y
S2V5KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktl
eSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQ
cml2YXRlLmg6CisKIDIwMjAtMTAtMTYgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIEludHJvZHVjZSBSZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkgdG8gbWFuYWdlIHRoZSByZXNvdXJjZXMgaW4gdGhlIEdQVSBQcm9jZXNz
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUGFn
ZVVwZGF0ZVByZWZlcmVuY2VzLmNwcC5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
Y3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlBhZ2VVcGRhdGVQcmVmZXJlbmNlcy5jcHAu
ZXJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5j
ZXNUZW1wbGF0ZXMvV2ViUGFnZVVwZGF0ZVByZWZlcmVuY2VzLmNwcC5lcmIJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQ
YWdlLmgiCiAKKyNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmgiCiAjaW5jbHVk
ZSAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmg+CkBAIC00NSw3
ICs0NiwxMSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNldHRpbmdzR2VuZXJhdGVkKGNvCiA8JS0g
aWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBl
bmQgLSU+Cis8JS0gaWYgQHByZWYuZXhwb3NlZCAtJT4KICAgICBzZXR0aW5ncy5zZXQ8JT0gQHBy
ZWYud2ViY29yZU5hbWVVcHBlciAlPihzdG9yZS5nZXQ8JT0gQHByZWYudHlwZVVwcGVyICU+VmFs
dWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OjwlPSBAcHJlZi5uYW1lTG93ZXIgJT5LZXkoKSkp
OworPCUtIGVsc2UgLSU+CisgICAgc2V0dGluZ3Muc2V0PCU9IEBwcmVmLndlYmNvcmVOYW1lVXBw
ZXIgJT4oREVGQVVMVF9WQUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4pOworPCUtIGVuZCAtJT4K
IDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjZW5kaWYKIDwlLSBlbmQgLSU+CkBAIC01OCw3
ICs2MywxMSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzR2VuZXJhdGVkCiA8JS0g
aWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBl
bmQgLSU+Cis8JS0gaWYgQHByZWYuZXhwb3NlZCAtJT4KICAgICBXZWJDb3JlOjpEZXByZWNhdGVk
R2xvYmFsU2V0dGluZ3M6OnNldDwlPSBAcHJlZi53ZWJjb3JlTmFtZVVwcGVyICU+KHN0b3JlLmdl
dDwlPSBAcHJlZi50eXBlVXBwZXIgJT5WYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6PCU9
IEBwcmVmLm5hbWVMb3dlciAlPktleSgpKSk7Cis8JS0gZWxzZSAtJT4KKyAgICBXZWJDb3JlOjpE
ZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldDwlPSBAcHJlZi53ZWJjb3JlTmFtZVVwcGVyICU+
KERFRkFVTFRfVkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+KTsKKzwlLSBlbmQgLSU+CiA8JS0g
aWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2VuZGlmCiA8JS0gZW5kIC0lPgpAQCAtNjgsNyArNzcs
MTEgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlc0dlbmVyYXRlZAogPCUtIGlmIEBw
cmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0l
PgorPCUtIGlmIEBwcmVmLmV4cG9zZWQgLSU+CiAgICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXQ8JT0gQHByZWYud2ViY29yZU5hbWVVcHBlciAl
PihzdG9yZS5nZXQ8JT0gQHByZWYudHlwZVVwcGVyICU+VmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5j
ZXNLZXk6OjwlPSBAcHJlZi5uYW1lTG93ZXIgJT5LZXkoKSkpOworPCUtIGVsc2UgLSU+CisgICAg
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXQ8JT0g
QHByZWYud2ViY29yZU5hbWVVcHBlciAlPihERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFt
ZSAlPik7Cis8JS0gZW5kIC0lPgogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNlbmRpZgog
PCUtIGVuZCAtJT4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBs
YXRlcy9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmguZXJiCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0RlZmlu
aXRpb25zLmguZXJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oLmVyYgkod29y
a2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQAogLy8gbWFjcm8oS2V5VXBwZXIsIEtleUxvd2Vy
LCBUeXBlTmFtZVVwcGVyLCBUeXBlTmFtZSwgRGVmYXVsdFZhbHVlLCBIdW1hblJlYWRhYmxlTmFt
ZSwgSHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uKQogCiAjZGVmaW5lIEZPUl9FQUNIX1dFQktJVF9Q
UkVGRVJFTkNFKG1hY3JvKSBcCi08JS0gZm9yIEBwcmVmIGluIEBwcmVmZXJlbmNlc05vdERlYnVn
IGRvIC0lPgorPCUtIGZvciBAcHJlZiBpbiBAcHJlZmVyZW5jZXNOb3REZWJ1Zy5zZWxlY3QgeyB8
cHwgcC5leHBvc2VkIH0gZG8gLSU+CiAgICAgbWFjcm8oPCU9IEBwcmVmLm5hbWUgJT4sIDwlPSBA
cHJlZi5uYW1lTG93ZXIgJT4sIDwlPSBAcHJlZi50eXBlVXBwZXIgJT4sIDwlPSBAcHJlZi50eXBl
ICU+LCBERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFtZSAlPiwgPCU9IEBwcmVmLmh1bWFu
UmVhZGFibGVOYW1lICU+LCA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uICU+KSBc
CiA8JS0gZW5kIC0lPgogICAgIFwKQEAgLTY1LDcgKzY1LDcgQEAKIC8vIERlYnVnIFByZWZlcmVu
Y2VzCiAKICNkZWZpbmUgRk9SX0VBQ0hfV0VCS0lUX0RFQlVHX1BSRUZFUkVOQ0UobWFjcm8pIFwK
LTwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzRGVidWcgZG8gLSU+Cis8JS0gZm9yIEBwcmVm
IGluIEBwcmVmZXJlbmNlc0RlYnVnLnNlbGVjdCB7IHxwfCBwLmV4cG9zZWQgfSBkbyAtJT4KICAg
ICBtYWNybyg8JT0gQHByZWYubmFtZSAlPiwgPCU9IEBwcmVmLm5hbWVMb3dlciAlPiwgPCU9IEBw
cmVmLnR5cGVVcHBlciAlPiwgPCU9IEBwcmVmLnR5cGUgJT4sIERFRkFVTFRfVkFMVUVfRk9SXzwl
PSBAcHJlZi5uYW1lICU+LCA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZU5hbWUgJT4sIDwlPSBAcHJl
Zi5odW1hblJlYWRhYmxlRGVzY3JpcHRpb24gJT4pIFwKIDwlLSBlbmQgLSU+CiAgICAgXApAQCAt
NzMsNyArNzMsNyBAQAogLy8gSW50ZXJuYWwgRGVidWcgRmVhdHVyZXMKIAogI2RlZmluZSBGT1Jf
RUFDSF9XRUJLSVRfSU5URVJOQUxfREVCVUdfRkVBVFVSRV9QUkVGRVJFTkNFKG1hY3JvKSBcCi08
JS0gZm9yIEBwcmVmIGluIEBpbnRlcm5hbEZlYXR1cmVzIGRvIC0lPgorPCUtIGZvciBAcHJlZiBp
biBAaW50ZXJuYWxGZWF0dXJlcy5zZWxlY3QgeyB8cHwgcC5leHBvc2VkIH0gZG8gLSU+CiAgICAg
bWFjcm8oPCU9IEBwcmVmLm5hbWUgJT4sIDwlPSBAcHJlZi5uYW1lTG93ZXIgJT4sIEJvb2wsIGJv
b2wsIERFRkFVTFRfVkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+LCA8JT0gQHByZWYuaHVtYW5S
ZWFkYWJsZU5hbWUgJT4sIDwlPSBAcHJlZi5odW1hblJlYWRhYmxlRGVzY3JpcHRpb24gJT4pIFwK
IDwlLSBlbmQgLSU+CiAgICBcCkBAIC04MSw3ICs4MSw3IEBACiAvLyBFeHBlcmltZW50YWwgRmVh
dHVyZXMKIAogI2RlZmluZSBGT1JfRUFDSF9XRUJLSVRfRVhQRVJJTUVOVEFMX0ZFQVRVUkVfUFJF
RkVSRU5DRShtYWNybykgXAotPCUtIGZvciBAcHJlZiBpbiBAZXhwZXJpbWVudGFsRmVhdHVyZXMg
ZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGluIEBleHBlcmltZW50YWxGZWF0dXJlcy5zZWxlY3QgeyB8
cHwgcC5leHBvc2VkIH0gZG8gLSU+CiAgICAgbWFjcm8oPCU9IEBwcmVmLm5hbWUgJT4sIDwlPSBA
cHJlZi5uYW1lTG93ZXIgJT4sIEJvb2wsIGJvb2wsIERFRkFVTFRfVkFMVUVfRk9SXzwlPSBAcHJl
Zi5uYW1lICU+LCA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZU5hbWUgJT4sIDwlPSBAcHJlZi5odW1h
blJlYWRhYmxlRGVzY3JpcHRpb24gJT4pIFwKIDwlLSBlbmQgLSU+CiAgICAgXApJbmRleDogU291
cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhw
ZXJpbWVudGFsRmVhdHVyZXMuY3BwLmVyYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0
dXJlcy5jcHAuZXJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5j
cHAuZXJiCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogY29uc3QgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+JiBXZWJQcmVmZXJlbmNlczo6ZXhw
ZXJpbWVudGFsRmVhdHVyZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8
UmVmUHRyPEFQSTo6T2JqZWN0Pj4+IGZlYXR1cmVzKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxSZWZQ
dHI8QVBJOjpPYmplY3Q+PiB7Ci08JS0gZm9yIEBwcmVmIGluIEBleHBlcmltZW50YWxGZWF0dXJl
cyBkbyAtJT4KKzwlLSBmb3IgQHByZWYgaW4gQGV4cGVyaW1lbnRhbEZlYXR1cmVzLnNlbGVjdCB7
IHxwfCBwLmV4cG9zZWQgfSBkbyAtJT4KIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYg
PCU9IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KQEAgLTU4LDcgKzU4LDcgQEAgYm9v
bCBXZWJQcmVmZXJlbmNlczo6aXNGZWF0dXJlRW5hYmxlZChjbwogICAgIH07CiAKICAgICBzdGF0
aWMgRmVhdHVyZUdldHRlck1hcHBpbmcgZ2V0dGVyc1tdID0gewotPCUtIGZvciBAcHJlZiBpbiBA
ZXhwZXJpbWVudGFsRmVhdHVyZXMgZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGluIEBleHBlcmltZW50
YWxGZWF0dXJlcy5zZWxlY3QgeyB8cHwgcC5leHBvc2VkIH0gZG8gLSU+CiA8JS0gaWYgQHByZWYu
Y29uZGl0aW9uIC0lPgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBlbmQgLSU+CkBA
IC05Miw3ICs5Miw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnNldEV4cGVyaW1lbnRhbEZlYXQK
ICAgICB9OwogCiAgICAgc3RhdGljIEZlYXR1cmVTZXR0ZXJNYXBwaW5nIHNldHRlcnNbXSA9IHsK
LTwlLSBmb3IgQHByZWYgaW4gQGV4cGVyaW1lbnRhbEZlYXR1cmVzIGRvIC0lPgorPCUtIGZvciBA
cHJlZiBpbiBAZXhwZXJpbWVudGFsRmVhdHVyZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3NlZCB9IGRv
IC0lPgogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYuY29uZGl0aW9u
ICU+CiA8JS0gZW5kIC0lPgpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6
OnNldEV4cGVyaW1lbnRhbEZlYXQKIAogdm9pZCBXZWJQcmVmZXJlbmNlczo6ZW5hYmxlQWxsRXhw
ZXJpbWVudGFsRmVhdHVyZXMoKQogewotPCUtIGZvciBAcHJlZiBpbiBAZXhwZXJpbWVudGFsRmVh
dHVyZXMgZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGluIEBleHBlcmltZW50YWxGZWF0dXJlcy5zZWxl
Y3QgeyB8cHwgcC5leHBvc2VkIH0gZG8gLSU+CiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0lPgog
I2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBlbmQgLSU+CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNHZXR0ZXJTZXR0
ZXJzLmNwcC5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVu
Y2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzR2V0dGVyU2V0dGVycy5jcHAuZXJiCShyZXZpc2lv
biAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
V2ViUHJlZmVyZW5jZXNHZXR0ZXJTZXR0ZXJzLmNwcC5lcmIJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLTwlLSBmb3IgQHByZWYgaW4gKEBw
cmVmZXJlbmNlc05vdERlYnVnICsgQHByZWZlcmVuY2VzRGVidWcpIGRvIC0lPgorPCUtIGZvciBA
cHJlZiBpbiAoQHByZWZlcmVuY2VzTm90RGVidWcgKyBAcHJlZmVyZW5jZXNEZWJ1Zykuc2VsZWN0
IHsgfHB8IHAuZXhwb3NlZCB9IGRvIC0lPgogdm9pZCBXZWJQcmVmZXJlbmNlczo6c2V0PCU9IEBw
cmVmLm5hbWUgJT4oY29uc3QgPCU9IEBwcmVmLnR5cGUgJT4mIHZhbHVlKQogewogICAgIGlmICgh
bV9zdG9yZS5zZXQ8JT0gQHByZWYudHlwZVVwcGVyICU+VmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5j
ZXNLZXk6OjwlPSBAcHJlZi5uYW1lTG93ZXIgJT5LZXkoKSwgdmFsdWUpKQpAQCAtNTIsNyArNTIs
NyBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjpkZWxldGU8JT0gQHByZWYubmFtCiAKIDwlLSBlbmQg
LSU+CiAKLTwlLSBmb3IgQHByZWYgaW4gQGV4cGVyaW1lbnRhbEZlYXR1cmVzIGRvIC0lPgorPCUt
IGZvciBAcHJlZiBpbiBAZXhwZXJpbWVudGFsRmVhdHVyZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3Nl
ZCB9IGRvIC0lPgogdm9pZCBXZWJQcmVmZXJlbmNlczo6c2V0PCU9IEBwcmVmLm5hbWUgJT4oY29u
c3QgYm9vbCYgdmFsdWUpCiB7CiAgICAgaWYgKCFtX3N0b3JlLnNldEJvb2xWYWx1ZUZvcktleShX
ZWJQcmVmZXJlbmNlc0tleTo6PCU9IEBwcmVmLm5hbWVMb3dlciAlPktleSgpLCB2YWx1ZSkpCkBA
IC03Miw3ICs3Miw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OmRlbGV0ZTwlPSBAcHJlZi5uYW0K
IAogPCUtIGVuZCAtJT4KIAotPCUtIGZvciBAcHJlZiBpbiBAaW50ZXJuYWxGZWF0dXJlcyBkbyAt
JT4KKzwlLSBmb3IgQHByZWYgaW4gQGludGVybmFsRmVhdHVyZXMuc2VsZWN0IHsgfHB8IHAuZXhw
b3NlZCB9IGRvIC0lPgogdm9pZCBXZWJQcmVmZXJlbmNlczo6c2V0PCU9IEBwcmVmLm5hbWUgJT4o
Y29uc3QgYm9vbCYgdmFsdWUpCiB7CiAgICAgaWYgKCFtX3N0b3JlLnNldEJvb2xWYWx1ZUZvcktl
eShXZWJQcmVmZXJlbmNlc0tleTo6PCU9IEBwcmVmLm5hbWVMb3dlciAlPktleSgpLCB2YWx1ZSkp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJl
ZmVyZW5jZXNJbnRlcm5hbERlYnVnRmVhdHVyZXMuY3BwLmVyYgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNJbnRl
cm5hbERlYnVnRmVhdHVyZXMuY3BwLmVyYgkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dl
YktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxE
ZWJ1Z0ZlYXR1cmVzLmNwcC5lcmIJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBjb25zdCBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4mIFdlYlBy
ZWZlcmVuY2VzOjppbnRlcm5hbERlYnVnRmVhdHVyZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4+IGZlYXR1cmVzKHN0ZDo6aW5pdGlh
bGl6ZXJfbGlzdDxSZWZQdHI8QVBJOjpPYmplY3Q+PiB7Ci08JS0gZm9yIEBwcmVmIGluIEBpbnRl
cm5hbEZlYXR1cmVzIGRvIC0lPgorPCUtIGZvciBAcHJlZiBpbiBAaW50ZXJuYWxGZWF0dXJlcy5z
ZWxlY3QgeyB8cHwgcC5leHBvc2VkIH0gZG8gLSU+CiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0l
PgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBlbmQgLSU+CkBAIC01OCw3ICs1OCw3
IEBAIGJvb2wgV2ViUHJlZmVyZW5jZXM6OmlzRmVhdHVyZUVuYWJsZWQoY28KICAgICB9OwogCiAg
ICAgc3RhdGljIEZlYXR1cmVHZXR0ZXJNYXBwaW5nIGdldHRlcnNbXSA9IHsKLTwlLSBmb3IgQHBy
ZWYgaW4gQGludGVybmFsRmVhdHVyZXMgZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGluIEBpbnRlcm5h
bEZlYXR1cmVzLnNlbGVjdCB7IHxwfCBwLmV4cG9zZWQgfSBkbyAtJT4KIDwlLSBpZiBAcHJlZi5j
b25kaXRpb24gLSU+CiAjaWYgPCU9IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KQEAg
LTkyLDcgKzkyLDcgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6c2V0SW50ZXJuYWxEZWJ1Z0ZlYQog
ICAgIH07CiAKICAgICBzdGF0aWMgRmVhdHVyZVNldHRlck1hcHBpbmcgc2V0dGVyc1tdID0gewot
PCUtIGZvciBAcHJlZiBpbiBAaW50ZXJuYWxGZWF0dXJlcyBkbyAtJT4KKzwlLSBmb3IgQHByZWYg
aW4gQGludGVybmFsRmVhdHVyZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3NlZCB9IGRvIC0lPgogPCUt
IGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYuY29uZGl0aW9uICU+CiA8JS0g
ZW5kIC0lPgpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnNldEludGVy
bmFsRGVidWdGZWEKIAogdm9pZCBXZWJQcmVmZXJlbmNlczo6cmVzZXRBbGxJbnRlcm5hbERlYnVn
RmVhdHVyZXMoKQogewotPCUtIGZvciBAcHJlZiBpbiBAaW50ZXJuYWxGZWF0dXJlcyBkbyAtJT4K
KzwlLSBmb3IgQHByZWYgaW4gQGludGVybmFsRmVhdHVyZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3Nl
ZCB9IGRvIC0lPgogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYuY29u
ZGl0aW9uICU+CiA8JS0gZW5kIC0lPgpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZl
cmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzS2V5cy5jcHAuZXJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNl
c0tleXMuY3BwLmVyYgkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRz
L1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzS2V5cy5jcHAuZXJiCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBX
ZWJQcmVmZXJlbmNlc0tleSB7CiAKLTwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzIGRvIC0l
PgorPCUtIGZvciBAcHJlZiBpbiBAcHJlZmVyZW5jZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3NlZCB9
IGRvIC0lPgogY29uc3QgU3RyaW5nJiA8JT0gQHByZWYubmFtZUxvd2VyICU+S2V5KCkKIHsKICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBrZXkoTUFLRV9TVEFUSUNfU1RSSU5HX0lN
UEwoIjwlPSBAcHJlZi5uYW1lICU+IikpOwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL1By
ZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzS2V5cy5oLmVyYgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5j
ZXNLZXlzLmguZXJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNLZXlzLmguZXJiCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBXZWJQ
cmVmZXJlbmNlc0tleSB7CiAKLTwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzIGRvIC0lPgor
PCUtIGZvciBAcHJlZiBpbiBAcHJlZmVyZW5jZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3NlZCB9IGRv
IC0lPgogY29uc3QgU3RyaW5nJiA8JT0gQHByZWYubmFtZUxvd2VyICU+S2V5KCk7CiA8JS0gZW5k
IC0lPgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
V2ViUHJlZmVyZW5jZXNTdG9yZURlZmF1bHRzTWFwLmNwcC5lcmIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzU3Rv
cmVEZWZhdWx0c01hcC5jcHAuZXJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNTdG9yZURlZmF1bHRz
TWFwLmNwcC5lcmIJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgV2ViUHJlZmVyZW5j
ZXNTdG9yZTo6VmFsdWVNYXAmIFdlYlByZWZlcgogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxWYWx1ZU1hcD4gZGVmYXVsdHM7CiAgICAgaWYgKGRlZmF1bHRzLmdldCgpLmlzRW1wdHkoKSkg
ewotPCUtIGZvciBAcHJlZiBpbiBAcHJlZmVyZW5jZXMgZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGlu
IEBwcmVmZXJlbmNlcy5zZWxlY3QgeyB8cHwgcC5leHBvc2VkIH0gZG8gLSU+CiA8JS0gaWYgQHBy
ZWYuY29uZGl0aW9uIC0lPgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBlbmQgLSU+
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2Vz
LmNwcAkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tQcmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDIyICs3OCwyMiBAQCB2b2lk
IFdLUHJlZmVyZW5jZXNTZXRJbnRlcm5hbERlYnVnRmVhdHVyCiAgICAgdG9JbXBsKHByZWZlcmVu
Y2VzUmVmKS0+c2V0SW50ZXJuYWxEZWJ1Z0ZlYXR1cmVFbmFibGVkRm9yS2V5KHRvV1RGU3RyaW5n
KGludGVybmFsRGVidWdGZWF0dXJlS2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5j
ZXNTZXRCb29sVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9v
bCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVl
Rm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZh
bHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0
Qm9vbFZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1By
ZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNl
c1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdLUHJlZmVyZW5jZXNT
ZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNl
c1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZl
cmVuY2VzUmVmKS0+c2V0Qm9vbFZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHZhbHVlKTsK
IH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKK3Zv
aWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVu
Y2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQog
ewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldFVJbnQzMlZhbHVlRm9yS2V5KHRvV1RG
U3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFs
dWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFs
dWUsIFdLU3RyaW5nUmVmIGtleSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9y
S2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1Jl
ZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZikt
PnNldFN0cmluZ1ZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHRvV1RGU3RyaW5nKHZhbHVl
KSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2Vz
UmVmUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU2LDEwICs1NiwxMCBAQCBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzUmVz
ZXRBbGxJbnRlCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0SW50ZXJuYWxEZWJ1Z0Zl
YXR1cmVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiwgYm9vbCwgV0tTdHJpbmdSZWYpOwogCiAvLyBU
aGUgZm9sbG93aW5nIGdlbmVyaWMgc2V0dGVyIGZ1bmN0aW9ucyBhcmUgb25seSBpbnRlbmRlZCBm
b3IgdXNlIGJ5IHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUuCi1XS19FWFBPUlQgdm9pZCBXS1ByZWZl
cmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYs
IGJvb2wgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7Ci1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVu
Y2VzU2V0RG91YmxlVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwg
ZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJl
bmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYs
IHVpbnQzMl90IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVm
ZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIFdLU3RyaW5nUmVmIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQg
V0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1Jl
ZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VYUE9S
VCB2b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVm
ZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkp
OworV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVz
dGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1aW50MzJfdCB2YWx1ZSwgV0tT
dHJpbmdSZWYga2V5KTsKK1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1
ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJp
bmdSZWYgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7CiAKIC8vIEZvciBUZXN0IFJ1bm5lciBVc2Ug
b25seS4KIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNSZXNldFRlc3RSdW5uZXJPdmVycmlk
ZXMoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7CkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAyMC0xMC0xNyAg
U2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1Rlc3RpbmddIENvbnZl
cnQgRHVtcFJlbmRlclRyZWUgdG8gdXNlIGdlbmVyYXRlZCB0ZXN0IGhlYWRlciBvcHRpb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc4ODAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgYSBz
ZXQgb2Ygc2V0dGVycyB0byBmb3IgRHVtcFJlbmRlclRyZWUgdG8gdXNlIHdoZW4gc2V0dGluZyBw
cmVmZXJlbmNlcworICAgICAgICBieSBzdHJpbmcuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzLm1tOgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBfc3dpdGNoTmV0d29ya0xv
YWRlclRvTmV3VGVzdGluZ1Nlc3Npb25dKToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3Nl
dEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTpdKToKKyAgICAg
ICAgKCtbV2ViUHJlZmVyZW5jZXMgX2NsZWFyTmV0d29ya0xvYWRlclNlc3Npb25dKToKKyAgICAg
ICAgKC1bV2ViUHJlZmVyZW5jZXMgX3NldEJvb2xQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1
ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXRVSW50MzJQcmVmZXJl
bmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVu
Y2VzIF9zZXREb3VibGVQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6Cisg
ICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dp
dGhWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXRQcmVmZXJl
bmNlRm9yVGVzdFdpdGhWYWx1ZTpmb3JLZXk6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmll
dy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKwogMjAyMC0xMC0xNyAgU2FtIFdlaW5pZyAgPHdl
aW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQ29udmVydCBwcmVmZXJlbmNlcyBpbiBXZWJQcmVm
ZXJlbmNlc1ByaXZhdGUuaCB0byB1c2UgQHByb3BlcnR5IHN5bnRheCB0byBtYWtlIHRoZW0gbW9y
ZSBtYW5hZ2VhYmxlCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TY3JpcHRzL1ByZWZl
cmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVyZXMubW0uZXJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1NjcmlwdHMvUHJlZmVyZW5j
ZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5tbS5lcmIJKHJl
dmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1NjcmlwdHMvUHJlZmVy
ZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5tbS5lcmIJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
ICsgKE5TQXJyYXk8V2ViRmVhdHVyZSAqPiAqKV9leHBlcmltZW50YWxGZWF0dXJlcwogewogICAg
IHN0YXRpYyBOU0FycmF5PFdlYkZlYXR1cmUgKj4gKmZlYXR1cmVzID0gQFsKLTwlLSBmb3IgQHBy
ZWYgaW4gQGV4cGVyaW1lbnRhbEZlYXR1cmVzIGRvIC0lPgorPCUtIGZvciBAcHJlZiBpbiBAZXhw
ZXJpbWVudGFsRmVhdHVyZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3NlZCB9IGRvIC0lPgogPCUtIGlm
IEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5k
IC0lPgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU2NyaXB0cy9QcmVmZXJlbmNlc1Rl
bXBsYXRlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsRmVhdHVyZXMubW0uZXJiCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
V2ViUHJlZmVyZW5jZXNJbnRlcm5hbEZlYXR1cmVzLm1tLmVyYgkocmV2aXNpb24gMjY4NjQ4KQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9X
ZWJQcmVmZXJlbmNlc0ludGVybmFsRmVhdHVyZXMubW0uZXJiCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw3ICszNyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiArIChOU0FycmF5PFdlYkZlYXR1
cmUgKj4gKilfaW50ZXJuYWxGZWF0dXJlcwogewogICAgIHN0YXRpYyBOU0FycmF5PFdlYkZlYXR1
cmUgKj4gKmZlYXR1cmVzID0gQFsKLTwlLSBmb3IgQHByZWYgaW4gQGludGVybmFsRmVhdHVyZXMg
ZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGluIEBpbnRlcm5hbEZlYXR1cmVzLnNlbGVjdCB7IHxwfCBw
LmV4cG9zZWQgfSBkbyAtJT4KIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYgPCU9IEBw
cmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViVmlld1ByZWZlcmVuY2VzQ2hhbmdl
ZEdlbmVyYXRlZC5tbS5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
U2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJWaWV3UHJlZmVyZW5jZXNDaGFuZ2VkR2Vu
ZXJhdGVkLm1tLmVyYgkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJWaWV3UHJlZmVyZW5jZXNDaGFuZ2Vk
R2VuZXJhdGVkLm1tLmVyYgkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW1w
b3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKIAorI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNEZWZpbml0
aW9ucy5oIgogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2Vi
Vmlld0RhdGEuaCIKICNpbXBvcnQgPFdlYkNvcmUvRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmg+
CkBAIC00NCw3ICs0NSwxMSBAQAogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0g
QHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgorPCUtIGlmIEBwcmVmLmV4cG9zZWQgLSU+
CiAgICAgc2V0dGluZ3Muc2V0PCU9IEBwcmVmLndlYmNvcmVOYW1lVXBwZXIgJT4oW3ByZWZlcmVu
Y2VzIDwlPSBAcHJlZi5wcmVmZXJlbmNlQWNjZXNzb3IgJT46QCI8JT0gQHByZWYucHJlZmVyZW5j
ZUtleSAlPiJdKTsKKzwlLSBlbHNlIC0lPgorICAgIHNldHRpbmdzLnNldDwlPSBAcHJlZi53ZWJj
b3JlTmFtZVVwcGVyICU+KERFRkFVTFRfVkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+KTsKKzwl
LSBlbmQgLSU+CiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2VuZGlmCiA8JS0gZW5kIC0l
PgpAQCAtNTQsNyArNTksMTEgQEAKIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYgPCU9
IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KKzwlLSBpZiBAcHJlZi5leHBvc2VkIC0l
PgogICAgIFdlYkNvcmU6OkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0PCU9IEBwcmVmLndl
YmNvcmVOYW1lVXBwZXIgJT4oW3ByZWZlcmVuY2VzIDwlPSBAcHJlZi5wcmVmZXJlbmNlQWNjZXNz
b3IgJT46QCI8JT0gQHByZWYucHJlZmVyZW5jZUtleSAlPiJdKTsKKzwlLSBlbHNlIC0lPgorICAg
IFdlYkNvcmU6OkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0PCU9IEBwcmVmLndlYmNvcmVO
YW1lVXBwZXIgJT4oREVGQVVMVF9WQUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4pOworPCUtIGVu
ZCAtJT4KIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjZW5kaWYKIDwlLSBlbmQgLSU+CkBA
IC02NCw3ICs3MywxMSBAQAogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHBy
ZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgorPCUtIGlmIEBwcmVmLmV4cG9zZWQgLSU+CiAg
ICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXQ8
JT0gQHByZWYud2ViY29yZU5hbWVVcHBlciAlPihbcHJlZmVyZW5jZXMgPCU9IEBwcmVmLnByZWZl
cmVuY2VBY2Nlc3NvciAlPjpAIjwlPSBAcHJlZi5wcmVmZXJlbmNlS2V5ICU+Il0pOworPCUtIGVs
c2UgLSU+CisgICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5zZXQ8JT0gQHByZWYud2ViY29yZU5hbWVVcHBlciAlPihERUZBVUxUX1ZBTFVFX0ZPUl88
JT0gQHByZWYubmFtZSAlPik7Cis8JS0gZW5kIC0lPgogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAt
JT4KICNlbmRpZgogPCUtIGVuZCAtJT4KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkocmV2aXNpb24gMjY4NjQ4KQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTY2MCwyNiArMTY2MCw2IEBAICsgKHZvaWQpX3NldElCQ3JlYXRvcklEOihOU1N0
cmluZyAqKXN0cmkKICAgICBbb2xkIHJlbGVhc2VdOwogfQogCi0rICh2b2lkKV9zd2l0Y2hOZXR3
b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbgotewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgV2ViVGhyZWFkTG9jaygpOwotI2VuZGlmCi0gICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
TWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7Ci19Ci0KLSsgKHZvaWQpX2NsZWFyTmV0
d29ya0xvYWRlclNlc3Npb24KLXsKLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1
bHRTdG9yYWdlU2Vzc2lvbigpLmRlbGV0ZUFsbENvb2tpZXMoKTsKLX0KLQotKyAodm9pZClfc2V0
Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29r
aWVBY2NlcHRQb2xpY3kpcG9saWN5Ci17Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1bHRT
dG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFn
ZSk7IC8vIFdpbGwgZmFpbCB3aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9O
ZXdUZXN0aW5nU2Vzc2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhhbmQuCi0gICAgQ0ZIVFRQ
Q29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBw
b2xpY3kpOwotfQotCiAtIChCT09MKWlzRE9NUGFzdGVBbGxvd2VkCiB7CiAgICAgcmV0dXJuIFtz
ZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0RE9NUGFzdGVBbGxvd2VkUHJlZmVyZW5jZUtleV07
CkBAIC0xOTY2LDExICsxOTQ2LDYgQEAgLSAodm9pZCl3aWxsQWRkVG9XZWJWaWV3CiAgICAgKytf
cHJpdmF0ZS0+bnVtV2ViVmlld3M7CiB9CiAKLS0gKHZvaWQpX3NldFByZWZlcmVuY2VGb3JUZXN0
V2l0aFZhbHVlOihOU1N0cmluZyAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKLXsKLSAg
ICBbc2VsZiBfc2V0U3RyaW5nVmFsdWU6dmFsdWUgZm9yS2V5OmtleV07Ci19Ci0KIC0gKHZvaWQp
c2V0RnVsbFNjcmVlbkVuYWJsZWQ6KEJPT0wpZmxhZwogewogICAgIFtzZWxmIF9zZXRCb29sVmFs
dWU6ZmxhZyBmb3JLZXk6V2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5XTsKQEAg
LTMwMTMsNiArMjk4OCw1MSBAQCAtICh2b2lkKV9zZXRFbmFibGVkOihCT09MKXZhbHVlIGZvckZl
YXR1CiAKIEBlbmQKIAorCitAaW1wbGVtZW50YXRpb24gV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZh
dGVUZXN0aW5nKQorCisrICh2b2lkKV9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vz
c2lvbgoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgV2ViVGhyZWFkTG9jaygpOwor
I2VuZGlmCisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdT
ZXNzaW9uKCk7Cit9CisKKysgKHZvaWQpX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNv
b2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeQoreworICAg
IFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdl
KCk7CisgICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90IGNh
bGxlZCBiZWZvcmVoYW5kLgorICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQ
b2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKK30KKworKyAodm9pZClfY2xlYXJO
ZXR3b3JrTG9hZGVyU2Vzc2lvbgoreworICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVm
YXVsdFN0b3JhZ2VTZXNzaW9uKCkuZGVsZXRlQWxsQ29va2llcygpOworfQorCistICh2b2lkKV9z
ZXRCb29sUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KEJPT0wpdmFsdWUgZm9yS2V5OihO
U1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6dmFsdWUgZm9yS2V5Omtl
eV07Cit9CisKKy0gKHZvaWQpX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVl
Oih1aW50MzJfdCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5Cit7CisgICAgW3NlbGYgX3Nl
dEludGVnZXJWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAodm9pZClfc2V0RG91Ymxl
UHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KGRvdWJsZSl2YWx1ZSBmb3JLZXk6KE5TU3Ry
aW5nICopa2V5Cit7CisgICAgW3NlbGYgX3NldEZsb2F0VmFsdWU6dmFsdWUgZm9yS2V5OmtleV07
Cit9CisKKy0gKHZvaWQpX3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihO
U1N0cmluZyAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2VsZiBfc2V0
U3RyaW5nVmFsdWU6dmFsdWUgZm9yS2V5OmtleV07Cit9CisKK0BlbmQKKwogQGltcGxlbWVudGF0
aW9uIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlUHJlZmVyZW5jZXNDb252ZXJ0ZWRUb1dlYkZl
YXR1cmUpCiAKIC0gKEJPT0wpdXNlckdlc3R1cmVQcm9taXNlUHJvcGFnYXRpb25FbmFibGVkCklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJl
ZmVyZW5jZXNQcml2YXRlLmgJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTg5LDEzICs4OSw2IEBAIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGUpCiAr
ICh2b2lkKV9zZXRJbml0aWFsRGVmYXVsdFRleHRFbmNvZGluZ1RvU3lzdGVtRW5jb2Rpbmc7CiAr
ICh2b2lkKV9zZXRJQkNyZWF0b3JJRDooTlNTdHJpbmcgKilzdHJpbmc7CiAKLS8vIEZvciBEdW1w
UmVuZGVyVHJlZSB1c2Ugb25seS4KLSsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rl
c3RpbmdTZXNzaW9uOwotKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29v
a2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpY29va2llQWNjZXB0UG9s
aWN5OwotKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbjsKLS8vIFVzZWQgdG8gc2V0
IHByZWZlcmVuY2Ugc3BlY2lmaWVkIGluIHRoZSB0ZXN0IHZpYSBMYXlvdXRUZXN0Q29udHJvbGxl
ci5vdmVycmlkZVByZWZlcmVuY2UoLi4pLgotLSAodm9pZClfc2V0UHJlZmVyZW5jZUZvclRlc3RX
aXRoVmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKLQogKyAo
dm9pZClzZXRXZWJLaXRMaW5rVGltZVZlcnNpb246KGludCl2ZXJzaW9uOwogCiAvLyBGb3IgV2Vi
VmlldydzIHVzZSBvbmx5LgpAQCAtMzEwLDYgKzMwMywxOCBAQCBAaW50ZXJmYWNlIFdlYlByZWZl
cmVuY2VzIChXZWJQcml2YXRlRmVhCiAtICh2b2lkKV9zZXRFbmFibGVkOihCT09MKXZhbHVlIGZv
ckZlYXR1cmU6KFdlYkZlYXR1cmUgKilmZWF0dXJlOwogQGVuZAogCitAaW50ZXJmYWNlIFdlYlBy
ZWZlcmVuY2VzIChXZWJQcml2YXRlVGVzdGluZykKKysgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2Fk
ZXJUb05ld1Rlc3RpbmdTZXNzaW9uOworKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJT
ZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpY29va2ll
QWNjZXB0UG9saWN5OworKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbjsKKworLSAo
dm9pZClfc2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihCT09MKXZhbHVlIGZv
cktleTooTlNTdHJpbmcgKilrZXk7CistICh2b2lkKV9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVz
dGluZ1dpdGhWYWx1ZToodWludDMyX3QpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0g
KHZvaWQpX3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihkb3VibGUpdmFs
dWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZvaWQpX3NldFN0cmluZ1ByZWZlcmVuY2VG
b3JUZXN0aW5nV2l0aFZhbHVlOihOU1N0cmluZyAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilr
ZXk7CisKK0BlbmQKKwogLy8gRklYTUU6IElmIHRoZXNlIGFyZSBub3QgdXNlZCBhbnl3aGVyZSwg
d2Ugc2hvdWxkIHJlbW92ZSB0aGVtIGFuZCBvbmx5IHVzZSBXZWJGZWF0dXJlIG1lY2hhbmlzbSBm
b3IgdGhlIHByZWZlcmVuY2UuCiBAaW50ZXJmYWNlIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRl
UHJlZmVyZW5jZXNDb252ZXJ0ZWRUb1dlYkZlYXR1cmUpCiBAcHJvcGVydHkgKG5vbmF0b21pYykg
Qk9PTCB1c2VyR2VzdHVyZVByb21pc2VQcm9wYWdhdGlvbkVuYWJsZWQ7CkluZGV4OiBUb29scy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg2NTkp
CisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw5OSBAQAorMjAy
MC0xMC0xNyAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1Rlc3Rp
bmddIENvbnZlcnQgRHVtcFJlbmRlclRyZWUgdG8gdXNlIGdlbmVyYXRlZCB0ZXN0IGhlYWRlciBv
cHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTc4ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
dWxseSBzdXBwb3J0IHVzZSBvZiBhbnkgV2ViUHJlZmVyZW5jZXMqLnlhbWwgcHJlZmVyZW5jZSBp
biBEdW1wUmVuZGVyVHJlZSAoZm9yIG1hY09TKSBieToKKyAgICAgICAgICAgIC0gTW92aW5nIER1
bXBSZW5kZXJUcmVlJ3MgVGVzdE9wdGlvbnMgdG8gYmUgZnVsbHkgYmFja2VkIGJ5IFRlc3RGZWF0
dXJlcyBsaWtlIFdlYktpdFRlc3RSdW5ubmVyLgorICAgICAgICAgICAgLSBBZG9wdGluZyBuZXcg
V2ViUHJlZmVyZW5jZXMgU1BJIGZvciBzZXR0aW5nIGFueSBwcmVmZXJlbmNlIGJ5IGtleS4KKyAg
ICAgICAgICAgIC0gR2VuZXJhdGluZyBtYXBwaW5nIGZyb20gV2ViUHJlZmVyZW5jZXMqLnlhbWwg
dG8gV2ViS2l0TGVnYWN5IGtleSBuYW1lcy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0NN
YWtlTGlzdHMudHh0OgorICAgICAgICBHZW5lcmF0ZSBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktp
dExlZ2FjeUtleU1hcHBpbmcuY3BwCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICBBZGQgbmV3IHRlbXBsYXRlIGZpbGUs
IFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiLCBhbmQg
YWRkCisgICAgICAgIERlcml2ZWRTb3VyY2VzLm1ha2UgYW5kIGdlbmVyYXRlLWRlcml2ZWQtc291
cmNlcy5zaCwgc28gdGhhdCBpZiBlaXRoZXIgb2YgdGhlbSBjaGFuZ2UKKyAgICAgICAgdGhlIERl
cml2ZWRTb3VyY2VzLm1ha2UgaXMgYWN0dWFsbHkgaW52b2tlZC4KKyAKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgQWRk
cyBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgU3dpdGNo
IGdlbmVyYXRpb24gb2YgcHJlZmVyZW5jZXMgdG8gdXNlIGEgc3RhdGljIHBhdHRlcm4gdG8gYXZv
aWQgaXNzdWVzIHdpdGggY2lyY3VsYXIgZGVwZW5kZW5jaWVzLgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgQWRkcyBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9U
ZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYjogQWRkZWQu
CisgICAgICAgIFRlbXBsYXRlIGZvciBnZW5lcmF0aW5nIG1hcHBpbmcgZnJvbSBXZWJQcmVmZXJl
bmNlcyoueWFtbCBrZXkgbmFtZXMgdG8gV2ViS2l0TGVnYWN5IGtleSBuYW1lcy4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9UZXN0T3B0aW9ucy5oOgorICAgICAgICBTd2l0Y2ggdG8gYSBtb2RlbCBtb3JlIHNpbWls
YXIgdG8gdGhhdCBpbiBXZWJLaXRUZXN0UnVubmVyLCB3aGVyZSBUZXN0T3B0aW9ucyBzdG9yZXMg
dGhlIHBhc3NlZCBpbiAKKyAgICAgICAgVGVzdEZlYXR1cmVzIGFuZCBvbmx5IGV4cG9zZXMgdmFs
dWVzIHRoYXQgaGF2ZSBiZWVuIHNldCBvciBkZWZhdWx0IHZhbHVlcyB3aGVuIG5lZWRlZC4KKyAg
ICAgICAgCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgor
ICAgICAgICAodG9OUyk6CisgICAgICAgIEFkZCBoZWxwZXIgdG8gY29udmVydCBmcm9tIGEgc3Rk
OjpzdHJpbmcgdG8gYW4gTlNTdHJpbmcuCisKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXdBbmRPZmZz
Y3JlZW5XaW5kb3cpOgorICAgICAgICBOb3cgdGhhdCB3ZSBhcmVuJ3QgbmVjY2Vzc2FyaWx5IHNl
dHRpbmcgYWxsIHByZWZlcmVuY2VzIGVhY2ggdGVzdCwgd2UgbmVlZCB0byBmdWxseSByZXNldCB0
aGUKKyAgICAgICAgV2ViUHJlZmVyZW5jZXMgb24gZWFjaCBydW4gYnkgY3JlYXRpbmcgYSBuZXcg
b25lLiBUaGlzIG1lYW5zIHJlbW92aW5nIHRoZSB1c2VzIG9mIAorICAgICAgICBbV2ViUHJlZmVy
ZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10sIGFuZCBpbnN0ZWFkIGdyYWJiaW5nIHRoZSBXZWJW
aWV3J3MgcHJlZmVyZW5jZXMgd2hlbiBuZWVkZWQuCisKKyAgICAgICAgKHJlc2V0V2ViUHJlZmVy
ZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICBNb3ZlcyBzb21lIHNjYXR0ZXJlZCBk
ZWZhdWx0IHZhbHVlIHNldHRpbmcgaGVyZS4gUmVtb3ZlIGFzc2VydCB0aGF0IGlzIG5vIGxvbmdl
ciBhY2N1cmF0ZQorICAgICAgICBub3cgdGhhdCB3ZSBkb24ndCB1c2Ugc3RhbmRhcmRQcmVmZXJl
bmNlcyBhbmQgd2lsbCBub3QgaGF2ZSBzZXQgdGhpcyB2YWx1ZSBieSB0aGlzIHBvaW50LgorCisg
ICAgICAgIChzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKToKKyAgICAgICAgVXNlIG5l
dyBfc2V0KlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleSogU1BJIHRvIHNldCBh
bnkgc3BlY2lmaWVkIHByZWZlcm5lY2VzLgorCisgICAgICAgIChzZXREZWZhdWx0c1RvQ29uc2lz
dGVudFZhbHVlc0ZvclRlc3RpbmcpOgorICAgICAgICBNb3ZlIGRlZmF1bHRzIHNldCBoZXJlIHRv
IHRoZSBtb3JlIGFwcHJvcHJpYXRlIGFuZCBjZW50cmFsaXplZCByZXNldFdlYlByZWZlcmVuY2Vz
VG9Db25zaXN0ZW50VmFsdWVzLgorCisgICAgICAgIChzZXRKU0NPcHRpb25zKToKKyAgICAgICAg
VXNlIG5ldyBnZXR0ZXIgZnVuY3Rpb24gcmF0aGVyIHRoYW4gZGlyZWN0IG1lbWJlciBhY2Nlc3Mu
CisKKyAgICAgICAgKHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgRnVs
bHkgcmVzZXQgcHJlZmVybmVjZXMgYnkgYWxsb2NhdGluZyBhIG5ldyBXZWJQcmVmZXJlbmNlcyBv
biByZXNldCBhbmQgdXNlIG5ldyBUZXN0T3B0aW9ucyBnZXR0ZXIKKyAgICAgICAgZnVuY3Rpb25z
LgorCisgICAgICAgICh0ZXN0T3B0aW9uc0ZvclRlc3QpOgorICAgICAgICBTZWVkIFRlc3RGZWF0
dXJlcyB3aXRoIGRlZmF1bHQgZ2xvYmFsIHZhbHVlcywgbWF0Y2hpbmcgdGhlIGlkaW9tIGluIFdl
YktpdFRlc3RSdW5uZXIuCisKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICBVc2UgbmV3IGdl
dHRlciBmdW5jdGlvbiByYXRoZXIgdGhhbiBkaXJlY3QgbWVtYmVyIGFjY2Vzcy4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgorICAgICAgICAoVGVzdFJ1
bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNl
dFVzZXJTdHlsZVNoZWV0TG9jYXRpb24pOgorICAgICAgICAoVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQ
cmVmZXJlbmNlKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldENhY2hlTW9kZWwpOgorICAgICAg
ICBBY2Nlc3MgdGhlIGNvcnJlY3QgV2ViUHJlZmVyZW5jZXMgdmlhIHRoZSBXZWJWaWV3LCByYXRo
ZXIgdGhhbiBhc3N1bWluZyBzdGFuZGFyZFByZWZlcmVuY2VzCisgICAgICAgIGFyZSBiZWluZyB1
c2VkLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW06CisgICAg
ICAgICgtW1VJRGVsZWdhdGUgcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rpbmc6XSk6
CisgICAgICAgIFVzZSBuZXcgZ2V0dGVyIGZ1bmN0aW9uIHJhdGhlciB0aGFuIGRpcmVjdCBtZW1i
ZXIgYWNjZXNzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcDoKKyAgICAgICAgKHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMpOgor
ICAgICAgICAoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUpOgorICAgICAgICAoc2V0V2Vi
UHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9ucyk6CisgICAgICAgIChzZXRKU0NPcHRpb25zKToKKyAg
ICAgICAgKHRlc3RPcHRpb25zRm9yVGVzdCk6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAg
S2VlcCBXaW5kb3dzIER1bXBSZW5kZXJUcmVlIHdvcmtpbmcgd2l0aCB0aGUgbmV3IFRlc3RPcHRp
b25zIGJ5IGdldHRpbmcgZmVhdHVyZSB2YWx1ZXMgYnkKKyAgICAgICAgc3RyaW5nIGtleXMgd2l0
aCBzcGVjaWZpZWQgZGVmYXVsdHMgYW5kIGFkb3B0aW5nIG5ldyBnZXR0ZXIgZnVuY3Rpb25zLiBJ
biB0aGUgZnV0dXJlLCB3ZQorICAgICAgICB3aWxsIGFkZCBzaW1pbGFyIFNQSSBhcyB3YXMgYWRk
ZWQgZm9yIG1hYyBXZWJLaXRMZWdhY3kgdG8gV2luZG93cyBXZWJLaXRMZWdhY3kgdG8gYXZvaWQg
dGhpcy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVu
dFZhbHVlcyk6CisgICAgICAgIFVwZGF0ZSBmb3IgcmVuYW1lZCBXS1ByZWZlcmVuY2VzUmVmIFNQ
SS4KKwogMjAyMC0xMC0xNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0ZsYXRwYWsgU0RLXSBmbGF0cGFrdXRpbHMucHkgcmVwb3J0cyAiS2V5RXJy
b3I6ICdnY2MnIiBlcnJvciBpZiB1c2luZyB3aXRoIGljZWNjIGFuZCB0b29sY2hhaW5zIGFyZW4n
dCBnZW5lcmF0ZWQgeWV0CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dAkocmV2
aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgbGlzdChBUFBFTkQgRHVtcFJlbmRlclRyZWVf
UFJJVkFURV9JTkNMVQogKQogCiBzZXQoRHVtcFJlbmRlclRyZWVfV0VCX1BSRUZFUkVOQ0VTX1RF
TVBMQVRFUworICAgICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVt
cGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJi
CiAgICAgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
VGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCiApCiAKQEAgLTUzLDEyICs1NCwxMyBAQCBz
ZXQoRHVtcFJlbmRlclRyZWVfV0VCX1BSRUZFUkVOQ0VTCiBzZXRfc291cmNlX2ZpbGVzX3Byb3Bl
cnRpZXMoJHtEdW1wUmVuZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVN9IFBST1BFUlRJRVMgR0VORVJB
VEVEIFRSVUUpCiAKIGFkZF9jdXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtEdW1wUmVuZGVy
VHJlZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaAorICAg
IE9VVFBVVCAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9L1Rlc3RPcHRpb25z
R2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgJHtEdW1wUmVuZGVyVHJlZV9ERVJJ
VkVEX1NPVVJDRVNfRElSfS9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaAogICAgIERFUEVORFMg
JHtEdW1wUmVuZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVTfSAke0R1bXBSZW5kZXJU
cmVlX1dFQl9QUkVGRVJFTkNFU30gV1RGX0NvcHlQcmVmZXJlbmNlcwotICAgIENPTU1BTkQgJHtS
VUJZX0VYRUNVVEFCTEV9ICR7V1RGX1NDUklQVFNfRElSfS9HZW5lcmF0ZVByZWZlcmVuY2VzLnJi
IC0tZnJvbnRlbmQgV2ViS2l0TGVnYWN5IC0tYmFzZSAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVy
ZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCAtLWRlYnVnICR7V1RGX1NDUklQVFNfRElSfS9QcmVm
ZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0RlYnVnLnlhbWwgLS1leHBlcmltZW50YWwgJHtXVEZfU0NS
SVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgLS1p
bnRlcm5hbCAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRl
cm5hbC55YW1sIC0tb3V0cHV0RGlyICIke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19E
SVJ9IiAtLXRlbXBsYXRlICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2Vz
VGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYgorICAgIENPTU1BTkQgJHtS
VUJZX0VYRUNVVEFCTEV9ICR7V1RGX1NDUklQVFNfRElSfS9HZW5lcmF0ZVByZWZlcmVuY2VzLnJi
IC0tZnJvbnRlbmQgV2ViS2l0TGVnYWN5IC0tYmFzZSAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVy
ZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCAtLWRlYnVnICR7V1RGX1NDUklQVFNfRElSfS9QcmVm
ZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0RlYnVnLnlhbWwgLS1leHBlcmltZW50YWwgJHtXVEZfU0NS
SVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgLS1p
bnRlcm5hbCAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRl
cm5hbC55YW1sIC0tb3V0cHV0RGlyICIke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19E
SVJ9IiAtLXRlbXBsYXRlICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2Vz
VGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAu
ZXJiIC0tdGVtcGxhdGUgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNU
ZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCiAgICAgVkVSQkFUSU0pCiAK
IGxpc3QoQVBQRU5EIER1bXBSZW5kZXJUcmVlX1NPVVJDRVMKKyAgICAke0R1bXBSZW5kZXJUcmVl
X0RFUklWRURfU09VUkNFU19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5
TWFwcGluZy5jcHAKICAgICAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9L1Rl
c3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCiApCiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVt
cFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjY4
NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdAkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDEwIEBAICQoQlVJTFRfUFJPRFVDVFNfRElS
KS91c3IvbG9jYWwvaW5jbHVkZS8KICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5j
bHVkZS93dGYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwK
ICQoUFJPSkVDVF9ESVIpLy4uL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRp
bmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwKICQoUFJPSkVDVF9ESVIpL0JpbmRpbmdzL0NvZGVH
ZW5lcmF0b3JEdW1wUmVuZGVyVHJlZS5wbQorJChQUk9KRUNUX0RJUikvRGVyaXZlZFNvdXJjZXMu
bWFrZQogJChQUk9KRUNUX0RJUikvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0
aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIKKyQoUFJPSkVDVF9ESVIpL1NjcmlwdHMvUHJlZmVyZW5j
ZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNw
cC5lcmIKKyQoUFJPSkVDVF9ESVIpL1NjcmlwdHMvZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzLnNo
CiAkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvQ29kZUdlbmVyYXRvci5wbQogJChXRUJD
T1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0lETEF0dHJpYnV0ZXMuanNvbgogJChXRUJDT1JFX1BS
SVZBVEVfSEVBREVSU19ESVIpL0lETFBhcnNlci5wbQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHJldmlzaW9u
IDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDMgKzIsNCBAQAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVlL0pTVUlTY3JpcHRDb250cm9sbGVy
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVl
L0pTVUlTY3JpcHRDb250cm9sbGVyLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zR2Vu
ZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjMsMjkgKzIz
LDEyIEBACiAKIFJVQlkgPSBydWJ5CiAKLVdFQl9QUkVGRVJFTkNFUyA9IFwKLSAgICAke1dURl9C
VUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCBcCi0gICAg
JHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRGVidWcu
eWFtbCBcCi0gICAgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZl
cmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgXAotICAgICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9Q
cmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwgXAotIwotCi1XRUJfUFJFRkVS
RU5DRVNfVEVNUExBVEVTID0gXAotICAgICQoRHVtcFJlbmRlclRyZWUpL1NjcmlwdHMvUHJlZmVy
ZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiIFwKLSMKLVdFQl9Q
UkVGRVJFTkNFU19GSUxFUyA9ICQoYmFzZW5hbWUgJChub3RkaXIgJChXRUJfUFJFRkVSRU5DRVNf
VEVNUExBVEVTKSkpCi1XRUJfUFJFRkVSRU5DRVNfUEFUVEVSTlMgPSAkKHN1YnN0IC5lcmIsLCQo
V0VCX1BSRUZFUkVOQ0VTX0ZJTEVTKSkKLQotYWxsIDogJChXRUJfUFJFRkVSRU5DRVNfRklMRVMp
Ci0KLSQoV0VCX1BSRUZFUkVOQ0VTX1BBVFRFUk5TKSA6ICQoV1RGX0JVSUxEX1NDUklQVFNfRElS
KS9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiICQoV0VCX1BSRUZFUkVOQ0VTX1RFTVBMQVRFUykgJChX
RUJfUFJFRkVSRU5DRVMpCi0JJChSVUJZKSAkPCAtLWZyb250ZW5kIFdlYktpdExlZ2FjeSAtLWJh
c2UgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlh
bWwgLS1kZWJ1ZyAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVy
ZW5jZXNEZWJ1Zy55YW1sIC0tZXhwZXJpbWVudGFsICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9Q
cmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIC0taW50ZXJuYWwgJHtX
VEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwu
eWFtbCAkKGFkZHByZWZpeCAtLXRlbXBsYXRlICwgJChXRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVT
KSkKLQotCiBVSVNDUklQVENPTlRFWFRfRElSID0gJChEdW1wUmVuZGVyVHJlZSkvLi4vVGVzdFJ1
bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MKK0RVTVBSRU5ERVJUUkVFX1BSRUZF
UkVOQ0VTX1RFTVBMQVRFU19ESVIgPSAkKER1bXBSZW5kZXJUcmVlKS9TY3JpcHRzL1ByZWZlcmVu
Y2VzVGVtcGxhdGVzCiAKIFZQQVRIID0gXAogICAgICQoVUlTQ1JJUFRDT05URVhUX0RJUikgXAor
ICAgICQoRFVNUFJFTkRFUlRSRUVfUFJFRkVSRU5DRVNfVEVNUExBVEVTX0RJUikgXAogIwogCiBV
SUNPTlRFWFRfSU5URVJGQUNFUyA9IFwKQEAgLTcxLDMgKzU0LDIxIEBAIGFsbCA6IFwKICAgICAk
KFVJQ09OVEVYVF9JTlRFUkZBQ0VTOiU9SlMlLmgpIFwKICAgICAkKFVJQ09OVEVYVF9JTlRFUkZB
Q0VTOiU9SlMlLmNwcCkgXAogIworCisKK1dFQl9QUkVGRVJFTkNFUyA9IFwKKyAgICAke1dURl9C
VUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCBcCisgICAg
JHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRGVidWcu
eWFtbCBcCisgICAgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZl
cmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgXAorICAgICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9Q
cmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwgXAorIworCitXRUJfUFJFRkVS
RU5DRVNfR0VORVJBVEVEX0ZJTEVTID0gXAorICAgIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0
TGVnYWN5S2V5TWFwcGluZy5jcHAgXAorICAgIFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oIFwK
KyMKKworYWxsIDogJChXRUJfUFJFRkVSRU5DRVNfR0VORVJBVEVEX0ZJTEVTKQorCiskKFdFQl9Q
UkVGRVJFTkNFU19HRU5FUkFURURfRklMRVMpIDogJSA6ICUuZXJiICQoV0VCX1BSRUZFUkVOQ0VT
KSAkKFdURl9CVUlMRF9TQ1JJUFRTX0RJUikvR2VuZXJhdGVQcmVmZXJlbmNlcy5yYgorCSQoUlVC
WSkgJChXVEZfQlVJTERfU0NSSVBUU19ESVIpL0dlbmVyYXRlUHJlZmVyZW5jZXMucmIgLS1mcm9u
dGVuZCBXZWJLaXRMZWdhY3kgLS1iYXNlICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJl
bmNlcy9XZWJQcmVmZXJlbmNlcy55YW1sIC0tZGVidWcgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9
L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRhbCAke1dU
Rl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50
YWwueWFtbCAtLWludGVybmFsICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9X
ZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwgLS10ZW1wbGF0ZSAkPApJbmRleDogVG9vbHMvRHVt
cFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL1Rlc3RPcHRpb25zLmNwcAkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw0NCBA
QAogCiBuYW1lc3BhY2UgV1RSIHsKIAorY29uc3QgVGVzdEZlYXR1cmVzJiBUZXN0T3B0aW9uczo6
ZGVmYXVsdHMoKQoreworICAgIHN0YXRpYyBUZXN0RmVhdHVyZXMgZmVhdHVyZXM7CisgICAgaWYg
KGZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMuZW1wdHkoKSkgeworICAgICAgICBm
ZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzID0geworICAgICAgICAgICAgLy8gVGhl
c2UgYXJlIFdlYlByZWZlcmVuY2UgdmFsdWVzIHRoYXQgbXVzdCBhbHdheXMgYmUgc2V0IGFzIHRo
ZXkgbWF5CisgICAgICAgICAgICAvLyBkaWZmZXIgZnJvbSB0aGUgZGVmYXVsdCBzZXQgaW4gdGhl
IFdlYlByZWZlcmVuY2VzKi55YW1sIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICB7ICJBbGxv
d0Nyb3NzT3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyIsIGZhbHNlIH0sCisg
ICAgICAgICAgICB7ICJBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzIiwgdHJ1ZSB9LAorICAg
ICAgICAgICAgeyAiQWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAg
ICAgICB7ICJBdHRhY2htZW50RWxlbWVudEVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAg
eyAiVXNlc0JhY2tGb3J3YXJkQ2FjaGUiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQ29sb3JG
aWx0ZXJFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkluc3BlY3RvckFkZGl0aW9u
c0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiSW50ZXJzZWN0aW9uT2JzZXJ2ZXJF
bmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIktleWdlbkVsZW1lbnRFbmFibGVkIiwg
ZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIk1lbnVJdGVtRWxlbWVudEVuYWJsZWQiLCBmYWxzZSB9
LAorICAgICAgICAgICAgeyAiTW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQiLCB0cnVlIH0sCisK
KyAgICAgICAgICAgIHsgIkNTU0xvZ2ljYWxFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAg
IHsgIkxpbmVIZWlnaHRVbml0c0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiU2Vs
ZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllc0VuYWJsZWQiLCB0cnVlIH0sCisgICAgICAgICAg
ICB7ICJMYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCIsIHRydWUgfSwK
KworICAgICAgICAgICAgeyAiQWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCIsIGZhbHNlIH0sCisg
ICAgICAgICAgICB7ICJBc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZCIs
IGZhbHNlIH0sCisgICAgICAgICAgICB7ICJBc3luY0NsaXBib2FyZEFQSUVuYWJsZWQiLCBmYWxz
ZSB9LAorICAgICAgICAgICAgeyAiQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCIsIGZh
bHNlIH0sCisgICAgICAgICAgICB7ICJDb250YWN0UGlja2VyQVBJRW5hYmxlZCIsIGZhbHNlIH0s
CisgICAgICAgICAgICB7ICJDb3JlTWF0aE1MRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAg
ICB7ICJSZXF1ZXN0SWRsZUNhbGxiYWNrRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7
ICJSZXNpemVPYnNlcnZlckVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiV2ViR1BV
RW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgIH07CisgICAgfQorICAgIHJldHVybiBmZWF0dXJl
czsKK30KKwogY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBUZXN0SGVhZGVy
S2V5VHlwZT4mIFRlc3RPcHRpb25zOjprZXlUeXBlTWFwcGluZygpCiB7CiAgICAgc3RhdGljIGNv
bnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgVGVzdEhlYWRlcktleVR5cGU+IG1h
cCB7CkBAIC00Nyw1NiArODUsNDcgQEAgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3Ry
aW5nLCBUZQogICAgIHJldHVybiBtYXA7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRp
YyB2b2lkIHNldFZhbHVlSWZTZXRJbk1hcChUJiB2YWx1ZVRvU2V0LCBzdGQ6OnN0cmluZyBrZXks
IGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgVD4mIG1hcCkKK2Jvb2wgVGVz
dE9wdGlvbnM6OndlYlZpZXdJc0NvbXBhdGlibGVXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9u
cyYgb3B0aW9ucykgY29uc3QKK3sKKyAgICBpZiAobV9mZWF0dXJlcy5leHBlcmltZW50YWxGZWF0
dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy5pbnRlcm5hbERlYnVnRmVhdHVyZXMg
IT0gb3B0aW9ucy5tX2ZlYXR1cmVzLmludGVybmFsRGVidWdGZWF0dXJlcykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMg
IT0gb3B0aW9ucy5tX2ZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy5kb3VibGVXZWJQcmVmZXJlbmNlRmVh
dHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLmRvdWJsZVdlYlByZWZlcmVuY2VGZWF0dXJlcykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLnVpbnQzMldlYlByZWZl
cmVuY2VGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMudWludDMyV2ViUHJlZmVyZW5jZUZl
YXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuc3RyaW5n
V2ViUHJlZmVyZW5jZUZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5zdHJpbmdXZWJQcmVm
ZXJlbmNlRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJl
cy5ib29sVGVzdFJ1bm5lckZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5ib29sVGVzdFJ1
bm5lckZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMu
ZG91YmxlVGVzdFJ1bm5lckZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5kb3VibGVUZXN0
UnVubmVyRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJl
cy5zdHJpbmdUZXN0UnVubmVyRmVhdHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLnN0cmluZ1Rl
c3RSdW5uZXJGZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1
cmVzLnN0cmluZ1ZlY3RvclRlc3RSdW5uZXJGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMu
c3RyaW5nVmVjdG9yVGVzdFJ1bm5lckZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgZmVhdHVyZVZhbHVl
KHN0ZDo6c3RyaW5nIGtleSwgVCBkZWZhdWx0VmFsdWUsIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21h
cDxzdGQ6OnN0cmluZywgVD4mIG1hcCkKIHsKICAgICBhdXRvIGl0ID0gbWFwLmZpbmQoa2V5KTsK
LSAgICBpZiAoaXQgPT0gbWFwLmVuZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgdmFsdWVUb1Nl
dCA9IGl0LT5zZWNvbmQ7Ci19Ci0KLVRlc3RPcHRpb25zOjpUZXN0T3B0aW9ucyhUZXN0RmVhdHVy
ZXMgdGVzdEZlYXR1cmVzKQotewotICAgIHNldFZhbHVlSWZTZXRJbk1hcChhbGxvd0Nyb3NzT3Jp
Z2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscywgIkFsbG93Q3Jvc3NPcmlnaW5TdWJy
ZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJl
bmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChhbGxvd1RvcE5hdmlnYXRpb25U
b0RhdGFVUkxzLCAiQWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyIsIHRlc3RGZWF0dXJlcy5i
b29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxl
QWNjZWxlcmF0ZWREcmF3aW5nLCAiQWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCIsIHRlc3RGZWF0
dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAo
ZW5hYmxlQXR0YWNobWVudEVsZW1lbnQsICJBdHRhY2htZW50RWxlbWVudEVuYWJsZWQiLCB0ZXN0
RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldElu
TWFwKGVuYWJsZUJhY2tGb3J3YXJkQ2FjaGUsICJVc2VzQmFja0ZvcndhcmRDYWNoZSIsIHRlc3RG
ZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5N
YXAoZW5hYmxlQ29sb3JGaWx0ZXIsICJDb2xvckZpbHRlckVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMu
Ym9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJs
ZUluc3BlY3RvckFkZGl0aW9ucywgIkluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQiLCB0ZXN0RmVh
dHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFw
KGVuYWJsZUludGVyc2VjdGlvbk9ic2VydmVyLCAiSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbmFibGVk
IiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVl
SWZTZXRJbk1hcChlbmFibGVLZXlnZW5FbGVtZW50LCAiS2V5Z2VuRWxlbWVudEVuYWJsZWQiLCB0
ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNl
dEluTWFwKGVuYWJsZU1lbnVJdGVtRWxlbWVudCwgIk1lbnVJdGVtRWxlbWVudEVuYWJsZWQiLCB0
ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNl
dEluTWFwKGVuYWJsZU1vZGVybk1lZGlhQ29udHJvbHMsICJNb2Rlcm5NZWRpYUNvbnRyb2xzRW5h
YmxlZCIsIHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLQotICAgIHNl
dFZhbHVlSWZTZXRJbk1hcChlbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkLCAiZW5hYmxl
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCIsIHRlc3RGZWF0dXJlcy5ib29sVGVzdFJ1bm5lckZl
YXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJy
LCAiZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIiwgdGVzdEZlYXR1cmVzLmJvb2xUZXN0UnVubmVy
RmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChsYXllckJhY2tlZFdlYlZpZXcsICJs
YXllckJhY2tlZFdlYlZpZXciLCB0ZXN0RmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0dXJlcyk7
Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKHVzZUVwaGVtZXJhbFNlc3Npb24sICJ1c2VFcGhlbWVy
YWxTZXNzaW9uIiwgdGVzdEZlYXR1cmVzLmJvb2xUZXN0UnVubmVyRmVhdHVyZXMpOwotCi0gICAg
c2V0VmFsdWVJZlNldEluTWFwKGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLCAiYWRkaXRp
b25hbFN1cHBvcnRlZEltYWdlVHlwZXMiLCB0ZXN0RmVhdHVyZXMuc3RyaW5nVGVzdFJ1bm5lckZl
YXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoanNjT3B0aW9ucywgImpzY09wdGlvbnMi
LCB0ZXN0RmVhdHVyZXMuc3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVzKTsKLQotICAgIHNldFZhbHVl
SWZTZXRJbk1hcChlbmFibGVDU1NMb2dpY2FsLCAiQ1NTTG9naWNhbEVuYWJsZWQiLCB0ZXN0RmVh
dHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5h
YmxlTGluZUhlaWdodFVuaXRzLCAiTGluZUhlaWdodFVuaXRzRW5hYmxlZCIsIHRlc3RGZWF0dXJl
cy5pbnRlcm5hbERlYnVnRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVT
ZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzLCAic2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91
bmRhcmllc0VuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKTsKLSAg
ICBzZXRWYWx1ZUlmU2V0SW5NYXAobGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVu
YWJsZWQsICJMYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCIsIHRlc3RG
ZWF0dXJlcy5pbnRlcm5hbERlYnVnRmVhdHVyZXMpOwotCi0gICAgc2V0VmFsdWVJZlNldEluTWFw
KGFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQsICJBZENsaWNrQXR0cmlidXRpb25FbmFibGVkIiwg
dGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5N
YXAoZW5hYmxlQXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodCwgIkFzcGVjdFJhdGlv
T2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRh
bEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQXN5bmNDbGlwYm9hcmRB
UEksICJBc3luY0NsaXBib2FyZEFQSUVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJpbWVudGFs
RmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVDU1NPTVZpZXdTbW9vdGhT
Y3JvbGxpbmcsICJDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkIiwgdGVzdEZlYXR1cmVz
LmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQ29u
dGFjdFBpY2tlckFQSSwgIkNvbnRhY3RQaWNrZXJBUElFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4
cGVyaW1lbnRhbEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQ29yZU1h
dGhNTCwgIkNvcmVNYXRoTUxFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1
cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlUmVxdWVzdElkbGVDYWxsYmFjaywg
IlJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZl
YXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlUmVzaXplT2JzZXJ2ZXIsICJS
ZXNpemVPYnNlcnZlckVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMp
OwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVXZWJHUFUsICJXZWJHUFVFbmFibGVkIiwg
dGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKKyAgICBpZiAoaXQgIT0gbWFwLmVu
ZCgpKQorICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKKyAgICByZXR1cm4gZGVmYXVsdFZhbHVl
OworfQorCitib29sIFRlc3RPcHRpb25zOjpib29sVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZShzdGQ6
OnN0cmluZyBrZXksIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdAoreworICAgIHJldHVybiBmZWF0
dXJlVmFsdWUoa2V5LCBkZWZhdWx0VmFsdWUsIG1fZmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0
dXJlcyk7CiB9CiAKLWJvb2wgVGVzdE9wdGlvbnM6OndlYlZpZXdJc0NvbXBhdGlibGVXaXRoT3B0
aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3RoZXIpIGNvbnN0CitzdGQ6OnN0cmluZyBUZXN0T3B0
aW9uczo6c3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZShzdGQ6OnN0cmluZyBrZXksIHN0ZDo6
c3RyaW5nIGRlZmF1bHRWYWx1ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gb3RoZXIubGF5ZXJCYWNr
ZWRXZWJWaWV3ID09IGxheWVyQmFja2VkV2ViVmlldwotICAgICAgICAmJiBvdGhlci5qc2NPcHRp
b25zID09IGpzY09wdGlvbnM7CisgICAgcmV0dXJuIGZlYXR1cmVWYWx1ZShrZXksIGRlZmF1bHRW
YWx1ZSwgbV9mZWF0dXJlcy5zdHJpbmdUZXN0UnVubmVyRmVhdHVyZXMpOwogfQogCiB9CkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmgJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDUzICsz
MSwzOSBAQAogCiBuYW1lc3BhY2UgV1RSIHsKIAotc3RydWN0IFRlc3RPcHRpb25zIHsKLSAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoZXNlIGFuZCByZXBsYWNlIHdpdGggYWNjZXNzIHRvIFRlc3RGZWF0
dXJlcyBzZXQuCi0gICAgLy8gV2ViIFByZWZlcmVuY2VzCi0gICAgYm9vbCBhbGxvd0Nyb3NzT3Jp
Z2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyB7IGZhbHNlIH07Ci0gICAgYm9vbCBh
bGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzIHsgdHJ1ZSB9OwotICAgIGJvb2wgZW5hYmxlQWNj
ZWxlcmF0ZWREcmF3aW5nIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUF0dGFjaG1lbnRFbGVt
ZW50IHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUJhY2tGb3J3YXJkQ2FjaGUgeyBmYWxzZSB9
OwotICAgIGJvb2wgZW5hYmxlQ29sb3JGaWx0ZXIgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxl
SW5zcGVjdG9yQWRkaXRpb25zIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUludGVyc2VjdGlv
bk9ic2VydmVyIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUtleWdlbkVsZW1lbnQgeyBmYWxz
ZSB9OwotICAgIGJvb2wgZW5hYmxlTWVudUl0ZW1FbGVtZW50IHsgZmFsc2UgfTsKLSAgICBib29s
IGVuYWJsZU1vZGVybk1lZGlhQ29udHJvbHMgeyB0cnVlIH07Ci0KLSAgICAvLyBGSVhNRTogUmVt
b3ZlIHRoZXNlIGFuZCByZXBsYWNlIHdpdGggYWNjZXNzIHRvIFRlc3RGZWF0dXJlcyBzZXQuCi0g
ICAgLy8gSW50ZXJuYWwgRmVhdHVyZXMKLSAgICBib29sIGVuYWJsZUNTU0xvZ2ljYWwgeyBmYWxz
ZSB9OwotICAgIGJvb2wgZW5hYmxlTGluZUhlaWdodFVuaXRzIHsgZmFsc2UgfTsKLSAgICBib29s
IGVuYWJsZVNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXMgeyB0cnVlIH07Ci0gICAgYm9v
bCBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCB7IHRydWUgfTsKLQot
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlc2UgYW5kIHJlcGxhY2Ugd2l0aCBhY2Nlc3MgdG8gVGVz
dEZlYXR1cmVzIHNldC4KLSAgICAvLyBFeHBlcmltZW50YWwgRmVhdHVyZXMKLSAgICBib29sIGFk
Q2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQXNwZWN0
UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVB
c3luY0NsaXBib2FyZEFQSSB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVDU1NPTVZpZXdTbW9v
dGhTY3JvbGxpbmcgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQ29udGFjdFBpY2tlckFQSSB7
IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVDb3JlTWF0aE1MIHsgZmFsc2UgfTsKLSAgICBib29s
IGVuYWJsZVJlcXVlc3RJZGxlQ2FsbGJhY2sgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlUmVz
aXplT2JzZXJ2ZXIgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlV2ViR1BVIHsgZmFsc2UgfTsK
K2NsYXNzIFRlc3RPcHRpb25zIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVGVzdEZlYXR1
cmVzJiBkZWZhdWx0cygpOworICAgIHN0YXRpYyBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3Rk
OjpzdHJpbmcsIFRlc3RIZWFkZXJLZXlUeXBlPiYga2V5VHlwZU1hcHBpbmcoKTsKIAotICAgIC8v
IFRlc3QgUnVubmVyIFNwZWNpZmljIEZlYXR1cmVzCi0gICAgYm9vbCBkdW1wSlNDb25zb2xlTG9n
SW5TdGRFcnIgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
TG9hZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVXZWJTUUwgeyB0cnVlIH07Ci0gICAgYm9v
bCBsYXllckJhY2tlZFdlYlZpZXcgeyBmYWxzZSB9OwotICAgIGJvb2wgdXNlRXBoZW1lcmFsU2Vz
c2lvbiB7IGZhbHNlIH07Ci0gICAgc3RkOjpzdHJpbmcgYWRkaXRpb25hbFN1cHBvcnRlZEltYWdl
VHlwZXM7Ci0gICAgc3RkOjpzdHJpbmcganNjT3B0aW9uczsKKyAgICBleHBsaWNpdCBUZXN0T3B0
aW9ucyhUZXN0RmVhdHVyZXMgZmVhdHVyZXMpCisgICAgICAgIDogbV9mZWF0dXJlcyhzdGQ6Om1v
dmUoZmVhdHVyZXMpKQorICAgIHsKKyAgICB9CiAKLSAgICBleHBsaWNpdCBUZXN0T3B0aW9ucyhU
ZXN0RmVhdHVyZXMpOwogICAgIGJvb2wgd2ViVmlld0lzQ29tcGF0aWJsZVdpdGhPcHRpb25zKGNv
bnN0IFRlc3RPcHRpb25zJikgY29uc3Q7Ci0gICAgCi0gICAgc3RhdGljIGNvbnN0IHN0ZDo6dW5v
cmRlcmVkX21hcDxzdGQ6OnN0cmluZywgVGVzdEhlYWRlcktleVR5cGU+JiBrZXlUeXBlTWFwcGlu
ZygpOworCisgICAgLy8gVGVzdCBSdW5uZXIgU3BlY2lmaWMgRmVhdHVyZXMKKyAgICBib29sIGR1
bXBKU0NvbnNvbGVMb2dJblN0ZEVycigpIGNvbnN0IHsgcmV0dXJuIGJvb2xUZXN0UnVubmVyRmVh
dHVyZVZhbHVlKCJkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIiLCBmYWxzZSk7IH0KKyAgICBib29s
IGVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQoKSBjb25zdCB7IHJldHVybiBib29sVGVz
dFJ1bm5lckZlYXR1cmVWYWx1ZSgiZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCIsIGZh
bHNlKTsgfQorICAgIGJvb2wgbGF5ZXJCYWNrZWRXZWJWaWV3KCkgY29uc3QgeyByZXR1cm4gYm9v
bFRlc3RSdW5uZXJGZWF0dXJlVmFsdWUoImxheWVyQmFja2VkV2ViVmlldyIsIGZhbHNlKTsgfQor
ICAgIGJvb2wgdXNlRXBoZW1lcmFsU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGJvb2xUZXN0UnVu
bmVyRmVhdHVyZVZhbHVlKCJ1c2VFcGhlbWVyYWxTZXNzaW9uIiwgZmFsc2UpOyB9CisgICAgc3Rk
OjpzdHJpbmcgYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMoKSBjb25zdCB7IHJldHVybiBz
dHJpbmdUZXN0UnVubmVyRmVhdHVyZVZhbHVlKCJhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBl
cyIsIHsgfSk7IH0KKyAgICBzdGQ6OnN0cmluZyBqc2NPcHRpb25zKCkgY29uc3QgeyByZXR1cm4g
c3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZSgianNjT3B0aW9ucyIsIHsgfSk7IH0KKworICAg
IGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgYm9vbD4mIGJvb2xXZWJQcmVm
ZXJlbmNlRmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzLmJvb2xXZWJQcmVmZXJl
bmNlRmVhdHVyZXM7IH0KKyAgICBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcs
IGRvdWJsZT4mIGRvdWJsZVdlYlByZWZlcmVuY2VGZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1f
ZmVhdHVyZXMuZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzOyB9CisgICAgY29uc3Qgc3RkOjp1
bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCB1aW50MzJfdD4mIHVpbnQzMldlYlByZWZlcmVuY2VG
ZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMudWludDMyV2ViUHJlZmVyZW5jZUZl
YXR1cmVzOyB9CisgICAgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBzdGQ6
OnN0cmluZz4mIHN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1f
ZmVhdHVyZXMuc3RyaW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzOyB9CisKKyAgICBzdGF0aWMgc3Rk
OjpzdHJpbmcgdG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGNvbnN0IHN0ZDo6c3RyaW5nJik7
CisKK3ByaXZhdGU6CisgICAgYm9vbCBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZShzdGQ6
OnN0cmluZyBrZXksIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdDsKKyAgICBib29sIGJvb2xUZXN0
UnVubmVyRmVhdHVyZVZhbHVlKHN0ZDo6c3RyaW5nIGtleSwgYm9vbCBkZWZhdWx0VmFsdWUpIGNv
bnN0OworICAgIHN0ZDo6c3RyaW5nIHN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlVmFsdWUoc3RkOjpz
dHJpbmcga2V5LCBzdGQ6OnN0cmluZyBkZWZhdWx0VmFsdWUpIGNvbnN0OworCisgICAgVGVzdEZl
YXR1cmVzIG1fZmVhdHVyZXM7CiB9OwogCiB9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9E
dW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsx
MDksNyBAQAogCQk1REI5QUM5RTBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2VpZ2h0V2F0Y2hl
cjcwMC50dGYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDM3NUYwOTc3MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyNzAw
LnR0ZiAqLzsgfTsKIAkJNURCOUFDOUYwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktpdFdlaWdodFdh
dGNoZXI4MDAudHRmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzNzVGMDk3ODBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hl
cjgwMC50dGYgKi87IH07CiAJCTVEQjlBQ0EwMEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWln
aHRXYXRjaGVyOTAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzc1RjA5NzkwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdh
dGNoZXI5MDAudHRmICovOyB9OworCQk3QzRGMzA0MDI1M0I5NzBGMDAzMDU0NTggLyogVGVzdE9w
dGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNEYzMDNGMjUzQjgzNjkwMDMwNTQ1OCAv
KiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwICovOyB9Owog
CQk3Q0ZGOUJCRjI1MzNCQjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRkY5QkJFMjUzM0JCMjQwMDA4
MDA5RiAvKiBUZXN0RmVhdHVyZXMuY3BwICovOyB9OwogCQk3Q0ZGOUJDMjI1MzNCQzE2MDAwODAw
OUYgLyogVGVzdENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0NGRjlCQzEyNTMzQkMxNjAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmNwcCAq
LzsgfTsKIAkJODAwNDVBRUUxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODAwNDVBRUMxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyLm1tICovOyB9OwpAQCAtMzMzLDggKzMzNCwxMiBAQAogCQk3QzQ0Njk3RjI1Mzc3
QTAyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFRlc3RP
cHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0M0NDY5ODAyNTM3N0EwMjAwMjQyOTBBIC8qIGNoZWNrLXhjZmlsZWxpc3RzLnNoICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQuc2g7
IHBhdGggPSAiY2hlY2steGNmaWxlbGlzdHMuc2giOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzQ0Njk4MTI1Mzc3QTAyMDAyNDI5MEEgLyogZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2Vz
LnNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5zY3JpcHQuc2g7IHBhdGggPSAiZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzLnNoIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M0NDY5ODUyNTM3N0U1MjAwMjQyOTBBIC8qIFRlc3RP
cHRpb25zR2VuZXJhdGVkS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXN0T3B0aW9uc0dlbmVyYXRl
ZEtleXMuaDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzRGMzAzRjI1M0I4MzY5MDAzMDU0NTgg
LyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDOUUyNTBCMjUzQjc5NEEwMDQxMzAx
OCAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NCQkMzMjIxRERGQ0Y5QTAwNzg2QjlEIC8q
IFRlc3RPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RPcHRp
b25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDQ0JBNTFEMjUzQkI5RDMwMEJC
MzJDMSAvKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0ICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2ZpbGVsaXN0OyBwYXRoID0g
IkRlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3Q0NCQTUxRTI1M0JCOUQzMDBCQjMyQzEgLyogRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnhjZmlsZWxpc3Q7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0ZGOUJCRDI1MzNCQjI0MDAw
ODAwOUYgLyogVGVzdEZlYXR1cmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RGZWF0dXJlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0ZGOUJCRTI1MzNCQjI0MDAwODAwOUYgLyog
VGVzdEZlYXR1cmVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlc3RGZWF0dXJlcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRkY5QkMwMjUzM0JDMTYwMDA4MDA5RiAvKiBU
ZXN0Q29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0Q29tbWFuZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTAxLDYgKzUwNiw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCTBGMThFNkYxMUQ2QjlDNjQwMDI3RTU0NyAvKiBEZXJpdmVkU291
cmNlcy5tYWtlICovLAorCQkJCTdDQ0JBNTFEMjUzQkI5RDMwMEJCMzJDMSAvKiBEZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0ICovLAorCQkJCTdDQ0JBNTFFMjUzQkI5RDMwMEJCMzJDMSAv
KiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCAqLywKIAkJCQk3QzQ0Njk4MjI1Mzc3
QzM0MDAyNDI5MEEgLyogRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTMxNDhBMDY1MUU2RjkwRjQw
MEQzQjMxNiAvKiBUZXN0UnVubmVyU2hhcmVkICovLAogCQkJCTBGMThFNkU3MUQ2QjlCRjUwMDI3
RTU0NyAvKiBVSVNjcmlwdENvbnRleHQgKi8sCkBAIC03NzAsNiArNzc3LDcgQEAKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJN0M0NDY5N0YyNTM3N0EwMjAwMjQyOTBB
IC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYiAqLywKKwkJCQk3QzlFMjUwQjI1M0I3
OTRBMDA0MTMwMTggLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5n
LmNwcC5lcmIgKi8sCiAJCQkpOwogCQkJcGF0aCA9IFByZWZlcmVuY2VzVGVtcGxhdGVzOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTc3OCw2ICs3ODYsNyBAQAogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk3QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5MEEgLyog
VGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmggKi8sCisJCQkJN0M0RjMwM0YyNTNCODM2OTAwMzA1
NDU4IC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgKi8s
CiAJCQkpOwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQkJcGF0aCA9IERlcml2ZWRT
b3VyY2VzL0R1bXBSZW5kZXJUcmVlOwpAQCAtMTI5MSw2ICsxMzAwLDcgQEAKIAkJCQk3Q0ZGOUJD
MjI1MzNCQzE2MDAwODAwOUYgLyogVGVzdENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0NGRjlCQkYyNTMzQkIyNDAwMDgwMDlGIC8qIFRlc3RGZWF0dXJlcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBMzBBMjFGODIwNTFEOEM0MDAwOEZGNDIgLyogVGVzdE9wdGlvbnMuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJN0M0RjMwNDAyNTNCOTcwRjAwMzA1NDU4IC8qIFRlc3RPcHRpb25zR2Vu
ZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzAx
MzFEQTBDOTc3MjAxMDA4NzMxN0QgLyogVGVzdFJ1bm5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQ0ExOEIyNDBDOUIwMTRCMDAxMTQzNjkgLyogVGVzdFJ1bm5lck1hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUY0RDQyMzYxMURENTA0ODIwMDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVy
SU9TLm0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1NjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0
ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRp
b25zR2VuZXJhdGVkS2V5cy5oLmVyYgkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAog
I3ByYWdtYSBvbmNlCiAKICNkZWZpbmUgR0VORVJBVEVEX1dFQl9QUkVGRVJFTkNFX0tFWV9UWVBF
X01BUFBJTkdTIFwKLTwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzIGRvIC0lPgorPCUtIGZv
ciBAcHJlZiBpbiBAcHJlZmVyZW5jZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3NlZCB9ICBkbyAtJT4K
ICAgICB7ICI8JT0gQHByZWYubmFtZSAlPiIsIFRlc3RIZWFkZXJLZXlUeXBlOjo8JT0gQHByZWYu
dHlwZVVwcGVyICU+V2ViUHJlZmVyZW5jZSB9LCBcCiA8JS0gZW5kIC0lPgogXApJbmRleDogVG9v
bHMvRHVtcFJlbmRlclRyZWUvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9u
c0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9EdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRp
b25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiCShub25leGlzdGVudCkK
KysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVz
dE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIDwlPSBAd2FybmluZyAlPgorICoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0T3B0aW9ucy5oIgorCituYW1l
c3BhY2UgV1RSIHsKKworc3RkOjpzdHJpbmcgVGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJl
ZmVyZW5jZUtleShjb25zdCBzdGQ6OnN0cmluZyYgd2ViUHJlZmVyZW5jZXNLZXkpCit7CisgICAg
c3RhdGljIHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IG5vblN0
YW5kYXJkS2V5cyA9IHsKKzwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzLnNlbGVjdCB7IHxw
fCBwLm9wdHNbIndlYktpdExlZ2FjeVByZWZlcmVuY2VLZXkiXSB9IGRvIC0lPgorICAgICAgICB7
ICI8JT0gQHByZWYubmFtZSAlPiIsICI8JT0gQHByZWYucHJlZmVyZW5jZUtleSAlPiIgfSwgXAor
PCUtIGVuZCAtJT4KKyAgICB9OworCisgICAgYXV0byBpdCA9IG5vblN0YW5kYXJkS2V5cy5maW5k
KHdlYlByZWZlcmVuY2VzS2V5KTsKKyAgICBpZiAoaXQgIT0gbm9uU3RhbmRhcmRLZXlzLmVuZCgp
KQorICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKKworICAgIHJldHVybiAiV2ViS2l0IiArIHdl
YlByZWZlcmVuY2VzS2V5OworfQorCit9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RHVtcFJlbmRlclRyZWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlLm1tCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyOSw3ICsxMjks
MTAgQEAgZXh0ZXJuICJDIiB7CiAjaW1wb3J0IDxtYWNoLW8vZ2V0c2VjdC5oPgogfQogCi11c2lu
ZyBuYW1lc3BhY2Ugc3RkOworc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4gdG9OUyhjb25zdCBz
dGQ6OnN0cmluZyYgc3RyaW5nKQoreworICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxs
b2NdIGluaXRXaXRoVVRGOFN0cmluZzpzdHJpbmcuY19zdHIoKV0pOworfQogCiAjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiBAaW50ZXJmYWNlIER1bXBSZW5kZXJUcmVlQXBwbGljYXRpb24gOiBO
U0FwcGxpY2F0aW9uCkBAIC0xNzcsNyArMTgwLDcgQEAgLSAoV2ViQ29yZTo6RnJhbWUqKV9tYWlu
Q29yZUZyYW1lOwogQGVuZAogI2VuZGlmCiAKLXN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3Ry
aW5nJiB0ZXN0VVJMKTsKK3N0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIHRl
c3RVUkwpOwogCiAvLyBEZWNpZGluZyB3aGVuIGl0J3MgT0sgdG8gZHVtcCBvdXQgdGhlIHN0YXRl
IGlzIGEgYml0IHRyaWNreS4gIEFsbCB0aGVzZSBtdXN0IGJlIHRydWU6CiAvLyAtIFRoZXJlIGlz
IG5vIGxvYWQgaW4gcHJvZ3Jlc3MKQEAgLTI0OCw3ICsyNTEsNyBAQCB2b2lkIHNldFBlcnNpc3Rl
bnRVc2VyU3R5bGVTaGVldExvY2F0aW9uCiAgICAgcGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9j
YXRpb24gPSB1cmw7CiB9CiAKLXN0YXRpYyBib29sIHNob3VsZElnbm9yZVdlYkNvcmVOb2RlTGVh
a3MoY29uc3Qgc3RyaW5nJiB1cmxTdHJpbmcpCitzdGF0aWMgYm9vbCBzaG91bGRJZ25vcmVXZWJD
b3JlTm9kZUxlYWtzKGNvbnN0IHN0ZDo6c3RyaW5nJiB1cmxTdHJpbmcpCiB7CiAgICAgc3RhdGlj
IGNoYXIqIGNvbnN0IGlnbm9yZVNldFtdID0gewogICAgICAgICAvLyBLZWVwaW5nIHRoaXMgaW5m
cmFzdHJ1Y3R1cmUgYXJvdW5kIGluIGNhc2Ugd2UgZXZlciBuZWVkIGl0IGFnYWluLgpAQCAtMjU3
LDcgKzI2MCw3IEBAIHN0YXRpYyBib29sIHNob3VsZElnbm9yZVdlYkNvcmVOb2RlTGVha3MKIAog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaWdub3JlU2V0Q291bnQ7IGkrKykgewogICAgICAgICAv
LyBGSVhNRTogaWdub3JlIGNhc2UKLSAgICAgICAgc3RyaW5nIGN1cklnbm9yZShpZ25vcmVTZXRb
aV0pOworICAgICAgICBzdGQ6OnN0cmluZyBjdXJJZ25vcmUoaWdub3JlU2V0W2ldKTsKICAgICAg
ICAgLy8gTWF0Y2ggYXQgdGhlIGVuZCBvZiB0aGUgdXJsU3RyaW5nLgogICAgICAgICBpZiAoIXVy
bFN0cmluZy5jb21wYXJlKHVybFN0cmluZy5sZW5ndGgoKSAtIGN1cklnbm9yZS5sZW5ndGgoKSwg
Y3VySWdub3JlLmxlbmd0aCgpLCBjdXJJZ25vcmUpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC02MTUsOCArNjE4LDggQEAgLSAoTlNSZWN0KXJlY3RGb3JQYXJ0OihOU1Njcm9sbGVyUGFy
dClwYQogICAgIEJPT0wgaXNIb3Jpem9udGFsID0gZnJhbWVSZWN0LnNpemUud2lkdGggPiBmcmFt
ZVJlY3Quc2l6ZS5oZWlnaHQ7CiAgICAgQ0dGbG9hdCB0cmFja0xlbmd0aCA9IGlzSG9yaXpvbnRh
bCA/IGJvdW5kcy5zaXplLndpZHRoIDogYm91bmRzLnNpemUuaGVpZ2h0OwogICAgIENHRmxvYXQg
bWluS25vYlNpemUgPSBpc0hvcml6b250YWwgPyBib3VuZHMuc2l6ZS5oZWlnaHQgOiBib3VuZHMu
c2l6ZS53aWR0aDsKLSAgICBDR0Zsb2F0IGtub2JMZW5ndGggPSBtYXgobWluS25vYlNpemUsIHN0
YXRpY19jYXN0PENHRmxvYXQ+KHJvdW5kKHRyYWNrTGVuZ3RoICogW3NlbGYga25vYlByb3BvcnRp
b25dKSkpOwotICAgIENHRmxvYXQga25vYlBvc2l0aW9uID0gc3RhdGljX2Nhc3Q8Q0dGbG9hdD4o
KHJvdW5kKFtzZWxmIGRvdWJsZVZhbHVlXSAqICh0cmFja0xlbmd0aCAtIGtub2JMZW5ndGgpKSkp
OworICAgIENHRmxvYXQga25vYkxlbmd0aCA9IHN0ZDo6bWF4KG1pbktub2JTaXplLCBzdGF0aWNf
Y2FzdDxDR0Zsb2F0PihzdGQ6OnJvdW5kKHRyYWNrTGVuZ3RoICogW3NlbGYga25vYlByb3BvcnRp
b25dKSkpOworICAgIENHRmxvYXQga25vYlBvc2l0aW9uID0gc3RhdGljX2Nhc3Q8Q0dGbG9hdD4o
KHN0ZDo6cm91bmQoW3NlbGYgZG91YmxlVmFsdWVdICogKHRyYWNrTGVuZ3RoIC0ga25vYkxlbmd0
aCkpKSk7CiAKICAgICBpZiAoaXNIb3Jpem9udGFsKQogICAgICAgICByZXR1cm4gTlNNYWtlUmVj
dChib3VuZHMub3JpZ2luLnggKyBrbm9iUG9zaXRpb24sIGJvdW5kcy5vcmlnaW4ueSwga25vYkxl
bmd0aCwgYm91bmRzLnNpemUuaGVpZ2h0KTsKQEAgLTY3Miw2ICs2NzUsMTAgQEAgV2ViVmlldyAq
Y3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdwogICAgIFt3ZWJWaWV3IHNldEdyb3VwTmFt
ZTpAIm9yZy53ZWJraXQuRHVtcFJlbmRlclRyZWUiXTsKICNlbmRpZgogCisgICAgV2ViUHJlZmVy
ZW5jZXMgKnByZWZlcmVuY2VzID0gW1tXZWJQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF07CisgICAg
W3ByZWZlcmVuY2VzIHNldEF1dG9zYXZlczpOT107CisgICAgW3dlYlZpZXcgc2V0UHJlZmVyZW5j
ZXM6cHJlZmVyZW5jZXNdOworCiAgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTp1aURlbGVnYXRl
XTsKICAgICBbd2ViVmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpmcmFtZUxvYWREZWxlZ2F0ZV07
CiAgICAgW3dlYlZpZXcgc2V0RWRpdGluZ0RlbGVnYXRlOmVkaXRpbmdEZWxlZ2F0ZV07CkBAIC02
ODUsOCArNjkyLDYgQEAgV2ViVmlldyAqY3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdwog
ICAgIFtXZWJWaWV3IHJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbDpAImZlZWRzIl07CiAgICAgW1dl
YlZpZXcgcmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsOkAiZmVlZHNlYXJjaCJdOwogCi0gICAgW1t3
ZWJWaWV3IHByZWZlcmVuY2VzXSBfc2V0TWVkaWFSZWNvcmRlckVuYWJsZWQ6WUVTXTsKLQogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBbd2ViVmlldyBzZXRXaW5kb3dPY2NsdXNpb25EZXRlY3Rpb25F
bmFibGVkOk5PXTsKICAgICBbV2ViVmlldyBfc2V0Rm9udEFsbG93TGlzdDpmb250QWxsb3dMaXN0
KCldOwpAQCAtODQ0LDkgKzg0OSw4IEBAIHN0YXRpYyB2b2lkIGVuYWJsZUV4cGVyaW1lbnRhbEZl
YXR1cmVzKFcKIH0KIAogLy8gQ2FsbGVkIGJlZm9yZSBlYWNoIHRlc3QuCi1zdGF0aWMgdm9pZCBy
ZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKCkKK3N0YXRpYyB2b2lkIHJlc2V0
V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVu
Y2VzKQogewotICAgIFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtXZWJQcmVmZXJlbmNl
cyBzdGFuZGFyZFByZWZlcmVuY2VzXTsKICAgICBlbmFibGVFeHBlcmltZW50YWxGZWF0dXJlcyhw
cmVmZXJlbmNlcyk7CiAKICAgICBbcHJlZmVyZW5jZXMgc2V0TmVlZHNTdG9yYWdlQWNjZXNzRnJv
bUZpbGVVUkxzUXVpcms6IE5PXTsKQEAgLTkwMiw2ICs5MDYsNyBAQCBzdGF0aWMgdm9pZCByZXNl
dFdlYlByZWZlcmVuY2VzVG9Db25zaXN0CiAgICAgfSBlbHNlCiAgICAgICAgIFtwcmVmZXJlbmNl
cyBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQ6Tk9dOwogCisgICAgW3ByZWZlcmVuY2VzIHNldElu
bGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRlOk5PXTsKICAgICBb
cHJlZmVyZW5jZXMgc2V0TWVkaWFQbGF5YmFja0FsbG93c0lubGluZTpZRVNdOwogICAgIFtwcmVm
ZXJlbmNlcyBzZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZTpOT107CiAgICAgW3By
ZWZlcmVuY2VzIHNldFZpZGVvUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlOk5PXTsKQEAgLTky
OCw5ICs5MzMsOCBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0CiAj
ZW5kaWYKICAgICBbcHJlZmVyZW5jZXMgc2V0VXNlUHJlSFRNTDVQYXJzZXJRdWlya3M6Tk9dOwog
ICAgIFtwcmVmZXJlbmNlcyBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZDpOT107
Ci0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgQVNTRVJUKFtwcmVmZXJlbmNlcyBtb2Nr
U2Nyb2xsYmFyc0VuYWJsZWRdKTsKLSNlbmRpZgorCisgICAgW3ByZWZlcmVuY2VzIHNldE1vY2tT
Y3JvbGxiYXJzRW5hYmxlZDpZRVNdOwogCiAgICAgW3ByZWZlcmVuY2VzIHNldFdlYkF1ZGlvRW5h
YmxlZDpZRVNdOwogICAgIFtwcmVmZXJlbmNlcyBzZXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9F
bmFibGVkOllFU107CkBAIC05NjAsNiArOTY0LDcgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVm
ZXJlbmNlc1RvQ29uc2lzdAogICAgIHByZWZlcmVuY2VzLm1lZGlhQ2FwYWJpbGl0aWVzRW5hYmxl
ZCA9IFlFUzsKIAogICAgIHByZWZlcmVuY2VzLnNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJp
ZXNFbmFibGVkID0gWUVTOworICAgIHByZWZlcmVuY2VzLmZ1bGxTY3JlZW5FbmFibGVkID0gWUVT
OwogCiAgICAgW3ByZWZlcmVuY2VzIHNldFdlYlNRTEVuYWJsZWQ6WUVTXTsKIApAQCAtOTY3LDM0
ICs5NzIsMjEgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdAogICAg
IFtXZWJQcmVmZXJlbmNlcyBfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNj
ZXB0UG9saWN5Ok5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9t
YWluXTsKIH0KIAotc3RhdGljIHZvaWQgc2V0V2ViUHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9ucyhj
b25zdCBXVFI6OlRlc3RPcHRpb25zJiBvcHRpb25zKQorc3RhdGljIHZvaWQgc2V0V2ViUHJlZmVy
ZW5jZXNGb3JUZXN0T3B0aW9ucyhXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMsIGNvbnN0IFdU
Ujo6VGVzdE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVu
Y2VzID0gW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdOworICAgIHByZWZlcmVu
Y2VzLnByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBvcHRpb25zLnVzZUVwaGVtZXJhbFNlc3Npb24o
KTsKKworICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5ib29sV2Vi
UHJlZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0Qm9vbFByZWZl
cmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnZhbHVlIGZvcktleTp0b05TKFdUUjo6VGVzdE9wdGlv
bnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShrZXkpKS5nZXQoKV07CisKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuZG91YmxlV2ViUHJlZmVyZW5jZUZl
YXR1cmVzKCkpCisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0RG91YmxlUHJlZmVyZW5jZUZvclRl
c3RpbmdXaXRoVmFsdWU6dmFsdWUgZm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJL
aXRMZWdhY3lQcmVmZXJlbmNlS2V5KGtleSkpLmdldCgpXTsKIAotICAgIHByZWZlcmVuY2VzLmF0
dGFjaG1lbnRFbGVtZW50RW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlQXR0YWNobWVudEVsZW1lbnQ7
Ci0gICAgcHJlZmVyZW5jZXMuYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCA9IG9wdGlvbnMuZW5h
YmxlQWNjZWxlcmF0ZWREcmF3aW5nOwotICAgIHByZWZlcmVuY2VzLm1lbnVJdGVtRWxlbWVudEVu
YWJsZWQgPSBvcHRpb25zLmVuYWJsZU1lbnVJdGVtRWxlbWVudDsKLSAgICBwcmVmZXJlbmNlcy5r
ZXlnZW5FbGVtZW50RW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlS2V5Z2VuRWxlbWVudDsKLSAgICBw
cmVmZXJlbmNlcy5tb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlTW9k
ZXJuTWVkaWFDb250cm9sczsKLSAgICBwcmVmZXJlbmNlcy5pbnNwZWN0b3JBZGRpdGlvbnNFbmFi
bGVkID0gb3B0aW9ucy5lbmFibGVJbnNwZWN0b3JBZGRpdGlvbnM7Ci0gICAgcHJlZmVyZW5jZXMu
YWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMgPSBvcHRpb25z
LmFsbG93Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzOwotICAgIHBy
ZWZlcmVuY2VzLmNvbG9yRmlsdGVyRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlQ29sb3JGaWx0ZXI7
Ci0gICAgcHJlZmVyZW5jZXMuc2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllc0VuYWJsZWQg
PSBvcHRpb25zLmVuYWJsZVNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXM7Ci0gICAgcHJl
ZmVyZW5jZXMud2ViR1BVRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlV2ViR1BVOwotICAgIHByZWZl
cmVuY2VzLkNTU0xvZ2ljYWxFbmFibGVkID0gb3B0aW9ucy5lbmFibGVDU1NMb2dpY2FsOwotICAg
IHByZWZlcmVuY2VzLmxpbmVIZWlnaHRVbml0c0VuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUxpbmVI
ZWlnaHRVbml0czsKLSAgICBwcmVmZXJlbmNlcy5hZENsaWNrQXR0cmlidXRpb25FbmFibGVkID0g
b3B0aW9ucy5hZENsaWNrQXR0cmlidXRpb25FbmFibGVkOwotICAgIHByZWZlcmVuY2VzLnJlc2l6
ZU9ic2VydmVyRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlUmVzaXplT2JzZXJ2ZXI7Ci0gICAgcHJl
ZmVyZW5jZXMuQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxl
Q1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nOwotICAgIHByZWZlcmVuY2VzLmNvcmVNYXRoTUxFbmFi
bGVkID0gb3B0aW9ucy5lbmFibGVDb3JlTWF0aE1MOwotICAgIHByZWZlcmVuY2VzLnJlcXVlc3RJ
ZGxlQ2FsbGJhY2tFbmFibGVkID0gb3B0aW9ucy5lbmFibGVSZXF1ZXN0SWRsZUNhbGxiYWNrOwot
ICAgIHByZWZlcmVuY2VzLmFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxl
QXN5bmNDbGlwYm9hcmRBUEk7Ci0gICAgcHJlZmVyZW5jZXMucHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCA9IG9wdGlvbnMudXNlRXBoZW1lcmFsU2Vzc2lvbjsKLSAgICBwcmVmZXJlbmNlcy51c2VzUGFn
ZUNhY2hlID0gb3B0aW9ucy5lbmFibGVCYWNrRm9yd2FyZENhY2hlOwotICAgIHByZWZlcmVuY2Vz
LmxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkID0gb3B0aW9ucy5sYXlv
dXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZDsKLSAgICBwcmVmZXJlbmNlcy5h
c3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxl
QXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodDsKLSAgICBwcmVmZXJlbmNlcy5hbGxv
d1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzID0gb3B0aW9ucy5hbGxvd1RvcE5hdmlnYXRpb25Ub0Rh
dGFVUkxzOwotICAgIHByZWZlcmVuY2VzLmNvbnRhY3RQaWNrZXJBUElFbmFibGVkID0gb3B0aW9u
cy5lbmFibGVDb250YWN0UGlja2VyQVBJOworICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFs
dWVdIDogb3B0aW9ucy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAgICAgW3By
ZWZlcmVuY2VzIF9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZSBm
b3JLZXk6dG9OUyhXVFI6OlRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVuY2VLZXko
a2V5KSkuZ2V0KCldOworCisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRp
b25zLnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcygpKQorICAgICAgICBbcHJlZmVyZW5jZXMg
X3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnRvTlModmFsdWUpLmdldCgp
IGZvcktleTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtl
eShrZXkpKS5nZXQoKV07CiB9CiAKIC8vIENhbGxlZCBvbmNlIG9uIER1bXBSZW5kZXJUcmVlIHN0
YXJ0dXAuCkBAIC0xMDE4LDkgKzEwMTAsNiBAQCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0c1RvQ29u
c2lzdGVudFZhbHVlCiAgICAgICAgIEAiQXBwbGVPdGhlckhpZ2hsaWdodENvbG9yIjpAIjAuNTAw
MDAwIDAuNTAwMDAwIDAuNTAwMDAwIiwKICAgICAgICAgQCJBcHBsZUxhbmd1YWdlcyI6IEBbIEAi
ZW4iIF0sCiAgICAgICAgIFdlYktpdEVuYWJsZUZ1bGxEb2N1bWVudFRlYXJkb3duUHJlZmVyZW5j
ZUtleTogQFlFUywKLSAgICAgICAgV2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5
OiBAWUVTLAotICAgICAgICBXZWJLaXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrUHJlZmVyZW5j
ZUtleTogQFlFUywKLSAgICAgICAgV2ViS2l0SW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxh
eXNJbmxpbmVBdHRyaWJ1dGVLZXk6IEBOTywKICAgICAgICAgQCJVc2VXZWJLaXRXZWJJbnNwZWN0
b3IiOiBAWUVTLAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBAIk5TUHJlZmVy
cmVkU3BlbGxTZXJ2ZXJMYW5ndWFnZSI6IEAiZW5fVVMiLApAQCAtMTQzMSw3ICsxNDIwLDcgQEAg
c3RhdGljIE5TSW50ZWdlciBjb21wYXJlSGlzdG9yeUl0ZW1zKGlkIAogCiBzdGF0aWMgTlNEYXRh
ICpkdW1wQXVkaW8oKQogewotICAgIGNvbnN0IHZlY3RvcjxjaGFyPiYgZGF0YVZlY3RvciA9IGdU
ZXN0UnVubmVyLT5hdWRpb1Jlc3VsdCgpOworICAgIGNvbnN0IGF1dG8mIGRhdGFWZWN0b3IgPSBn
VGVzdFJ1bm5lci0+YXVkaW9SZXN1bHQoKTsKIAogICAgIE5TRGF0YSAqZGF0YSA9IFtOU0RhdGEg
ZGF0YVdpdGhCeXRlczpkYXRhVmVjdG9yLmRhdGEoKSBsZW5ndGg6ZGF0YVZlY3Rvci5zaXplKCld
OwogICAgIHJldHVybiBkYXRhOwpAQCAtMTYyNyw3ICsxNjE2LDcgQEAgc3RhdGljIHZvaWQgc2l6
ZVdlYlZpZXdGb3JDdXJyZW50VGVzdCgpCiAgICAgW3VpRGVsZWdhdGUgcmVzZXRXaW5kb3dPcmln
aW5dOwogCiAgICAgLy8gVzNDIFNWRyB0ZXN0cyBleHBlY3QgdG8gYmUgNDgweDM2MAotICAgIGJv
b2wgaXNTVkdXM0NUZXN0ID0gKGdUZXN0UnVubmVyLT50ZXN0VVJMKCkuZmluZCgic3ZnL1czQy1T
VkctMS4xIikgIT0gc3RyaW5nOjpucG9zKTsKKyAgICBib29sIGlzU1ZHVzNDVGVzdCA9IChnVGVz
dFJ1bm5lci0+dGVzdFVSTCgpLmZpbmQoInN2Zy9XM0MtU1ZHLTEuMSIpICE9IHN0ZDo6c3RyaW5n
OjpucG9zKTsKICAgICBOU1NpemUgZnJhbWVTaXplID0gaXNTVkdXM0NUZXN0ID8gTlNNYWtlU2l6
ZShUZXN0UnVubmVyOjp3M2NTVkdWaWV3V2lkdGgsIFRlc3RSdW5uZXI6OnczY1NWR1ZpZXdIZWln
aHQpIDogTlNNYWtlU2l6ZShUZXN0UnVubmVyOjp2aWV3V2lkdGgsIFRlc3RSdW5uZXI6OnZpZXdI
ZWlnaHQpOwogICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldEZyYW1lU2l6ZTpmcmFtZVNpemVd
OwogICAgIFtbbWFpbkZyYW1lIGZyYW1lVmlld10gc2V0RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCBm
cmFtZVNpemUud2lkdGgsIGZyYW1lU2l6ZS5oZWlnaHQpXTsKQEAgLTE4MjYsOSArMTgxNSw5IEBA
IHN0YXRpYyB2b2lkIHNldEpTQ09wdGlvbnMoY29uc3QgV1RSOjpUZXMKICAgICAgICAgc2F2ZWRP
cHRpb25zLmNsZWFyKCk7CiAgICAgfQogCi0gICAgaWYgKG9wdGlvbnMuanNjT3B0aW9ucy5sZW5n
dGgoKSkgeworICAgIGlmICghb3B0aW9ucy5qc2NPcHRpb25zKCkuZW1wdHkoKSkgewogICAgICAg
ICBKU0M6Ok9wdGlvbnM6OmR1bXBBbGxPcHRpb25zSW5BTGluZShzYXZlZE9wdGlvbnMpOwotICAg
ICAgICBKU0M6Ok9wdGlvbnM6OnNldE9wdGlvbnMob3B0aW9ucy5qc2NPcHRpb25zLmNfc3RyKCkp
OworICAgICAgICBKU0M6Ok9wdGlvbnM6OnNldE9wdGlvbnMob3B0aW9ucy5qc2NPcHRpb25zKCku
Y19zdHIoKSk7CiAgICAgfQogfQogCkBAIC0xODM5LDYgKzE4MjgsMTAgQEAgc3RhdGljIHZvaWQg
cmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdAogCiAgICAgV2ViVmlldyAqd2ViVmlldyA9IFtt
YWluRnJhbWUgd2ViVmlld107CiAKKyAgICBXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBb
W1dlYlByZWZlcmVuY2VzIGFsbG9jXSBpbml0XTsKKyAgICBbcHJlZmVyZW5jZXMgc2V0QXV0b3Nh
dmVzOk5PXTsKKyAgICBbd2ViVmlldyBzZXRQcmVmZXJlbmNlczpwcmVmZXJlbmNlc107CisKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGFkanVzdFdlYkRvY3VtZW50Rm9yU3RhbmRhcmRW
aWV3cG9ydChnV2ViQnJvd3NlclZpZXcsIGdXZWJTY3JvbGxWaWV3KTsKICAgICBbd2ViVmlldyBf
c2V0QWxsb3dzTWVzc2FnaW5nOllFU107CkBAIC0xODY3LDEwICsxODYwLDEwIEBAIHN0YXRpYyB2
b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXQKIAogICAgIFtXZWJDYWNoZSBjbGVhckNh
Y2hlZENyZWRlbnRpYWxzXTsKIAotICAgIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRW
YWx1ZXMoKTsKLSAgICBzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKG9wdGlvbnMpOwor
ICAgIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMocHJlZmVyZW5jZXMpOwor
ICAgIHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMocHJlZmVyZW5jZXMsIG9wdGlvbnMp
OwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBbd2ViVmlldyBzZXRXYW50c0xheWVyOm9wdGlvbnMu
bGF5ZXJCYWNrZWRXZWJWaWV3XTsKKyAgICBbd2ViVmlldyBzZXRXYW50c0xheWVyOm9wdGlvbnMu
bGF5ZXJCYWNrZWRXZWJWaWV3KCldOwogI2VuZGlmCiAKICAgICBUZXN0UnVubmVyOjpzZXRTZXJp
YWxpemVIVFRQTG9hZHMoZmFsc2UpOwpAQCAtMTkxNCw3ICsxOTA3LDcgQEAgc3RhdGljIHZvaWQg
cmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdAogICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQ
YXN0ZWJvYXJkXSBkZWNsYXJlVHlwZXM6QFtOU1N0cmluZ1Bib2FyZFR5cGVdIG93bmVyOm5pbF07
CiAjZW5kaWYKIAotICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6c2V0QWRkaXRpb25hbFN1cHBvcnRl
ZEltYWdlVHlwZXNGb3JUZXN0aW5nKG9wdGlvbnMuYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlw
ZXMuY19zdHIoKSk7CisgICAgV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRBZGRpdGlvbmFsU3VwcG9y
dGVkSW1hZ2VUeXBlc0ZvclRlc3Rpbmcob3B0aW9ucy5hZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VU
eXBlcygpLmNfc3RyKCkpOwogCiAgICAgW21haW5GcmFtZSBfY2xlYXJPcGVuZXJdOwogCkBAIC0x
OTcwLDE5ICsxOTYzLDE5IEBAIHN0YXRpYyBOU1VSTCAqY29tcHV0ZVRlc3RVUkwoTlNTdHJpbmcg
KnAKIAogc3RhdGljIFdUUjo6VGVzdE9wdGlvbnMgdGVzdE9wdGlvbnNGb3JUZXN0KGNvbnN0IFdU
Ujo6VGVzdENvbW1hbmQmIGNvbW1hbmQpCiB7Ci0gICAgV1RSOjpUZXN0RmVhdHVyZXMgZmVhdHVy
ZXM7CisgICAgV1RSOjpUZXN0RmVhdHVyZXMgZmVhdHVyZXMgPSBXVFI6OlRlc3RPcHRpb25zOjpk
ZWZhdWx0cygpOwogICAgIFdUUjo6bWVyZ2UoZmVhdHVyZXMsIFdUUjo6aGFyZGNvZGVkRmVhdHVy
ZXNCYXNlZE9uUGF0aEZvclRlc3QoY29tbWFuZCkpOwogICAgIFdUUjo6bWVyZ2UoZmVhdHVyZXMs
IFdUUjo6ZmVhdHVyZURlZmF1bHRzRnJvbVRlc3RIZWFkZXJGb3JUZXN0KGNvbW1hbmQsIFdUUjo6
VGVzdE9wdGlvbnM6OmtleVR5cGVNYXBwaW5nKCkpKTsKIAogICAgIHJldHVybiBXVFI6OlRlc3RP
cHRpb25zIHsgV1RGTW92ZShmZWF0dXJlcykgfTsKIH0KIAotc3RhdGljIHZvaWQgcnVuVGVzdChj
b25zdCBzdHJpbmcmIGlucHV0TGluZSkKK3N0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RkOjpz
dHJpbmcmIGlucHV0TGluZSkKIHsKICAgICBBU1NFUlQoIWlucHV0TGluZS5lbXB0eSgpKTsKIAog
ICAgIGF1dG8gY29tbWFuZCA9IFdUUjo6cGFyc2VJbnB1dExpbmUoaW5wdXRMaW5lKTsKLSAgICBj
b25zdCBzdHJpbmcmIHBhdGhPclVSTCA9IGNvbW1hbmQucGF0aE9yVVJMOworICAgIGF1dG8gcGF0
aE9yVVJMID0gY29tbWFuZC5wYXRoT3JVUkw7CiAgICAgZHVtcFBpeGVsc0ZvckN1cnJlbnRUZXN0
ID0gY29tbWFuZC5zaG91bGREdW1wUGl4ZWxzIHx8IGR1bXBQaXhlbHNGb3JBbGxUZXN0czsKIAog
ICAgIE5TU3RyaW5nICpwYXRoT3JVUkxTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhT
dHJpbmc6cGF0aE9yVVJMLmNfc3RyKCldOwpAQCAtMjAxNyw3ICsyMDEwLDcgQEAgc3RhdGljIHZv
aWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIGlucHV0TAogICAgIGdUZXN0UnVubmVyID0gVGVzdFJ1
bm5lcjo6Y3JlYXRlKHRlc3RVUkwsIGNvbW1hbmQuZXhwZWN0ZWRQaXhlbEhhc2gpOwogICAgIGdU
ZXN0UnVubmVyLT5zZXRBbGxvd2VkSG9zdHMoYWxsb3dlZEhvc3RzKTsKICAgICBnVGVzdFJ1bm5l
ci0+c2V0Q3VzdG9tVGltZW91dChjb21tYW5kLnRpbWVvdXQubWlsbGlzZWNvbmRzKCkpOwotICAg
IGdUZXN0UnVubmVyLT5zZXREdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoY29tbWFuZC5kdW1wSlND
b25zb2xlTG9nSW5TdGRFcnIgfHwgb3B0aW9ucy5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIpOwor
ICAgIGdUZXN0UnVubmVyLT5zZXREdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoY29tbWFuZC5kdW1w
SlNDb25zb2xlTG9nSW5TdGRFcnIgfHwgb3B0aW9ucy5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIo
KSk7CiAKICAgICByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZShvcHRpb25zLCBSZXNldFRp
bWU6OkJlZm9yZVRlc3QpOwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1
bm5lck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1
bm5lck1hYy5tbQkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L1Rlc3RSdW5uZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3NiwxNCArNTc2LDE0IEBAIHZv
aWQgVGVzdFJ1bm5lcjo6c2V0UGFnZVBhdXNlZChib29sIHBhdXMKIAogdm9pZCBUZXN0UnVubmVy
OjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQoYm9vbCBmbGFnKQogewotICAgIFtbV2ViUHJlZmVy
ZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkOmZsYWdd
OworICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hl
ZXRFbmFibGVkOmZsYWddOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0
TG9jYXRpb24oSlNTdHJpbmdSZWYgcGF0aCkKIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHBhdGhDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgcGF0aCkpOwogICAgIE5TVVJMICp1cmwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzooX19icmlk
Z2UgTlNTdHJpbmcgKilwYXRoQ0YuZ2V0KCldOwotICAgIFtbV2ViUHJlZmVyZW5jZXMgc3RhbmRh
cmRQcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbjp1cmxdOworICAgIFtbW21h
aW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbjp1
cmxdOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBKU1N0cmluZ1JlZiB2YWx1ZSkKQEAgLTYw
OSw3ICs2MDksNyBAQCB2b2lkIFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZShKU1N0CiAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB2YWx1ZUNGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlD
RlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB2YWx1ZSkpOwogICAgIE5TU3RyaW5nICp2YWx1
ZU5TID0gKF9fYnJpZGdlIE5TU3RyaW5nICopdmFsdWVDRi5nZXQoKTsKIAotICAgIFtbV2ViUHJl
ZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10gX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZh
bHVlOnZhbHVlTlMgZm9yS2V5OmtleU5TXTsKKyAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJl
ZmVyZW5jZXNdIF9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZU5T
IGZvcktleTprZXlOU107CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQWxsVmlzaXRlZExp
bmtzKCkKQEAgLTcwMCw3ICs3MDAsNyBAQCBib29sIFRlc3RSdW5uZXI6OmZpbmRTdHJpbmcoSlND
b250ZXh0UmVmCiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0Q2FjaGVNb2RlbChpbnQgY2FjaGVNb2Rl
bCkKIHsKLSAgICBbW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdIHNldENhY2hl
TW9kZWw6KFdlYkNhY2hlTW9kZWwpY2FjaGVNb2RlbF07CisgICAgW1tbbWFpbkZyYW1lIHdlYlZp
ZXddIHByZWZlcmVuY2VzXSBzZXRDYWNoZU1vZGVsOihXZWJDYWNoZU1vZGVsKWNhY2hlTW9kZWxd
OwogfQogCiBib29sIFRlc3RSdW5uZXI6OmlzQ29tbWFuZEVuYWJsZWQoSlNTdHJpbmdSZWYgbmFt
ZSkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCShyZXZpc2lvbiAy
Njg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCAtICh2b2lkKXJlc2V0V2luZG93T3JpZ2luCiAKIC0g
KHZvaWQpcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rpbmc6KGNvbnN0IFdUUjo6VGVz
dE9wdGlvbnMmKW9wdGlvbnMKIHsKLSAgICBtX2VuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxv
YWQgPSBvcHRpb25zLmVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQ7CisgICAgbV9lbmFi
bGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkID0gb3B0aW9ucy5lbmFibGVEcmFnRGVzdGluYXRp
b25BY3Rpb25Mb2FkKCk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBz
ZXRGcmFtZTooTlNSZWN0KWZyYW1lCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVt
cFJlbmRlclRyZWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9E
dW1wUmVuZGVyVHJlZS5jcHAJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwNiwyOCArOTA2
LDM3IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3QKIAogICAgIHBy
ZWZlcmVuY2VzLT5zZXRGb250U21vb3RoaW5nKEZvbnRTbW9vdGhpbmdUeXBlU3RhbmRhcmQpOwog
CisgICAgcHJlZnNQcml2YXRlLT5zZXRXZWJTUUxFbmFibGVkKHRydWUpOworCiAgICAgcHJlZnNQ
cml2YXRlLT5zZXREYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQoVFJVRSk7CiAgICAgcHJlZnNQcml2
YXRlLT5jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uKCk7CiAKICAgICBzZXRBbHdheXNBY2NlcHRD
b29raWVzKGZhbHNlKTsKIH0KIAorc3RhdGljIGJvb2wgYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJl
VmFsdWUoc3RkOjpzdHJpbmcga2V5LCBib29sIGRlZmF1bHRWYWx1ZSwgY29uc3QgV1RSOjpUZXN0
T3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBhdXRvIGl0ID0gb3B0aW9ucy5ib29sV2ViUHJlZmVy
ZW5jZUZlYXR1cmVzKCkuZmluZChrZXkpOworICAgIGlmIChpdCAhPSBvcHRpb25zLmJvb2xXZWJQ
cmVmZXJlbmNlRmVhdHVyZXMoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7Cisg
ICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKK30KKwogc3RhdGljIHZvaWQgc2V0V2ViUHJlZmVyZW5j
ZXNGb3JUZXN0T3B0aW9ucyhJV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzLCBjb25zdCBXVFI6
OlRlc3RPcHRpb25zJiBvcHRpb25zKQogewogICAgIENPTVB0cjxJV2ViUHJlZmVyZW5jZXNQcml2
YXRlOD4gcHJlZnNQcml2YXRlIHsgUXVlcnksIHByZWZlcmVuY2VzIH07CiAKLSAgICBwcmVmc1By
aXZhdGUtPnNldE1lbnVJdGVtRWxlbWVudEVuYWJsZWQob3B0aW9ucy5lbmFibGVNZW51SXRlbUVs
ZW1lbnQpOwotICAgIHByZWZzUHJpdmF0ZS0+c2V0S2V5Z2VuRWxlbWVudEVuYWJsZWQob3B0aW9u
cy5lbmFibGVLZXlnZW5FbGVtZW50KTsKLSAgICBwcmVmc1ByaXZhdGUtPnNldE1vZGVybk1lZGlh
Q29udHJvbHNFbmFibGVkKG9wdGlvbnMuZW5hYmxlTW9kZXJuTWVkaWFDb250cm9scyk7Ci0gICAg
cHJlZnNQcml2YXRlLT5zZXRJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkKG9wdGlvbnMuZW5hYmxl
SW5zcGVjdG9yQWRkaXRpb25zKTsKLSAgICBwcmVmc1ByaXZhdGUtPnNldFJlcXVlc3RJZGxlQ2Fs
bGJhY2tFbmFibGVkKG9wdGlvbnMuZW5hYmxlUmVxdWVzdElkbGVDYWxsYmFjayk7Ci0gICAgcHJl
ZnNQcml2YXRlLT5zZXRBc3luY0NsaXBib2FyZEFQSUVuYWJsZWQob3B0aW9ucy5lbmFibGVBc3lu
Y0NsaXBib2FyZEFQSSk7Ci0gICAgcHJlZnNQcml2YXRlLT5zZXRDb250YWN0UGlja2VyQVBJRW5h
YmxlZChvcHRpb25zLmVuYWJsZUNvbnRhY3RQaWNrZXJBUEkpOwotICAgIHByZWZzUHJpdmF0ZS0+
c2V0V2ViU1FMRW5hYmxlZChvcHRpb25zLmVuYWJsZVdlYlNRTCk7Ci0gICAgcHJlZnNQcml2YXRl
LT5zZXRBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzKG9wdGlvbnMuYWxsb3dUb3BOYXZpZ2F0
aW9uVG9EYXRhVVJMcyk7Ci0gICAgcHJlZmVyZW5jZXMtPnNldFByaXZhdGVCcm93c2luZ0VuYWJs
ZWQob3B0aW9ucy51c2VFcGhlbWVyYWxTZXNzaW9uKTsKLSAgICBwcmVmZXJlbmNlcy0+c2V0VXNl
c1BhZ2VDYWNoZShvcHRpb25zLmVuYWJsZUJhY2tGb3J3YXJkQ2FjaGUpOwotICAgIHByZWZzUHJp
dmF0ZS0+c2V0Q1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZChvcHRpb25zLmVuYWJsZUNT
U09NVmlld1Ntb290aFNjcm9sbGluZyk7CisgICAgcHJlZmVyZW5jZXMtPnNldFByaXZhdGVCcm93
c2luZ0VuYWJsZWQob3B0aW9ucy51c2VFcGhlbWVyYWxTZXNzaW9uKCkpOworICAgIHByZWZlcmVu
Y2VzLT5zZXRVc2VzUGFnZUNhY2hlKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJVc2Vz
QmFja0ZvcndhcmRDYWNoZSIsIGZhbHNlLCBvcHRpb25zKSk7CisgICAgcHJlZnNQcml2YXRlLT5z
ZXRNZW51SXRlbUVsZW1lbnRFbmFibGVkKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJN
ZW51SXRlbUVsZW1lbnRFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1ByaXZh
dGUtPnNldEtleWdlbkVsZW1lbnRFbmFibGVkKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVl
KCJLZXlnZW5FbGVtZW50RW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKSk7CisgICAgcHJlZnNQcml2
YXRlLT5zZXRNb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZChib29sV2ViUHJlZmVyZW5jZUZlYXR1
cmVWYWx1ZSgiTW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQiLCB0cnVlLCBvcHRpb25zKSk7Cisg
ICAgcHJlZnNQcml2YXRlLT5zZXRJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkKGJvb2xXZWJQcmVm
ZXJlbmNlRmVhdHVyZVZhbHVlKCJJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkIiwgZmFsc2UsIG9w
dGlvbnMpKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldFJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVk
KGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJSZXF1ZXN0SWRsZUNhbGxiYWNrRW5hYmxl
ZCIsIGZhbHNlLCBvcHRpb25zKSk7CisgICAgcHJlZnNQcml2YXRlLT5zZXRBc3luY0NsaXBib2Fy
ZEFQSUVuYWJsZWQoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkFzeW5jQ2xpcGJvYXJk
QVBJRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKSk7CisgICAgcHJlZnNQcml2YXRlLT5zZXRDb250
YWN0UGlja2VyQVBJRW5hYmxlZChib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQ29udGFj
dFBpY2tlckFQSUVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucykpOworICAgIHByZWZzUHJpdmF0ZS0+
c2V0QWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyhib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVW
YWx1ZSgiQWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyIsIHRydWUsIG9wdGlvbnMpKTsKKyAg
ICBwcmVmc1ByaXZhdGUtPnNldENTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWQoYm9vbFdl
YlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkNTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWQi
LCBmYWxzZSwgb3B0aW9ucykpOwogfQogCiBzdGF0aWMgU3RyaW5nIGFwcGxpY2F0aW9uSWQoKQpA
QCAtOTczLDkgKzk4Miw5IEBAIHN0YXRpYyB2b2lkIHNldEpTQ09wdGlvbnMoY29uc3QgV1RSOjpU
ZXMKICAgICAgICAgc2F2ZWRPcHRpb25zLmNsZWFyKCk7CiAgICAgfQogCi0gICAgaWYgKG9wdGlv
bnMuanNjT3B0aW9ucy5sZW5ndGgoKSkgeworICAgIGlmICghb3B0aW9ucy5qc2NPcHRpb25zKCku
ZW1wdHkoKSkgewogICAgICAgICBKU0M6Ok9wdGlvbnM6OmR1bXBBbGxPcHRpb25zSW5BTGluZShz
YXZlZE9wdGlvbnMpOwotICAgICAgICBKU0M6Ok9wdGlvbnM6OnNldE9wdGlvbnMob3B0aW9ucy5q
c2NPcHRpb25zLmNfc3RyKCkpOworICAgICAgICBKU0M6Ok9wdGlvbnM6OnNldE9wdGlvbnMob3B0
aW9ucy5qc2NPcHRpb25zKCkuY19zdHIoKSk7CiAgICAgfQogfQogCkBAIC0xMTY4LDcgKzExNzcs
NyBAQCBzdGF0aWMgYm9vbCBoYW5kbGVDb250cm9sQ29tbWFuZChjb25zdCBjCiAKIHN0YXRpYyBX
VFI6OlRlc3RPcHRpb25zIHRlc3RPcHRpb25zRm9yVGVzdChjb25zdCBXVFI6OlRlc3RDb21tYW5k
JiBjb21tYW5kKQogewotICAgIFdUUjo6VGVzdEZlYXR1cmVzIGZlYXR1cmVzOworICAgIFdUUjo6
VGVzdEZlYXR1cmVzIGZlYXR1cmVzID0gV1RSOjpUZXN0T3B0aW9uczo6ZGVmYXVsdHMoKTsKICAg
ICBXVFI6Om1lcmdlKGZlYXR1cmVzLCBXVFI6OmhhcmRjb2RlZEZlYXR1cmVzQmFzZWRPblBhdGhG
b3JUZXN0KGNvbW1hbmQpKTsKICAgICBXVFI6Om1lcmdlKGZlYXR1cmVzLCBXVFI6OmZlYXR1cmVE
ZWZhdWx0c0Zyb21UZXN0SGVhZGVyRm9yVGVzdChjb21tYW5kLCBXVFI6OlRlc3RPcHRpb25zOjpr
ZXlUeXBlTWFwcGluZygpKSk7CiAKQEAgLTEyMjksNyArMTIzOCw3IEBAIHN0YXRpYyB2b2lkIHJ1
blRlc3QoY29uc3Qgc3RyaW5nJiBpbnB1dEwKIAogICAgIDo6Z1Rlc3RSdW5uZXIgPSBUZXN0UnVu
bmVyOjpjcmVhdGUodGVzdFVSTC5kYXRhKCksIGNvbW1hbmQuZXhwZWN0ZWRQaXhlbEhhc2gpOwog
ICAgIDo6Z1Rlc3RSdW5uZXItPnNldEN1c3RvbVRpbWVvdXQoY29tbWFuZC50aW1lb3V0Lm1pbGxp
c2Vjb25kcygpKTsKLSAgICA6OmdUZXN0UnVubmVyLT5zZXREdW1wSlNDb25zb2xlTG9nSW5TdGRF
cnIoY29tbWFuZC5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgfHwgb3B0aW9ucy5kdW1wSlNDb25z
b2xlTG9nSW5TdGRFcnIpOworICAgIDo6Z1Rlc3RSdW5uZXItPnNldER1bXBKU0NvbnNvbGVMb2dJ
blN0ZEVycihjb21tYW5kLmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciB8fCBvcHRpb25zLmR1bXBK
U0NvbnNvbGVMb2dJblN0ZEVycigpKTsKIAogICAgIHRvcExvYWRpbmdGcmFtZSA9IG51bGxwdHI7
CiAgICAgZG9uZSA9IGZhbHNlOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MjEsMTcgKzkyMSwxNiBAQCB2
b2lkIFRlc3RDb250cm9sbGVyOjpyZXNldFByZWZlcmVuY2VzVG9DCiAgICAgcGxhdGZvcm1SZXNl
dFByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKCk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8m
IFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAg
ICAgICBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5KHByZWZlcmVuY2VzLCB2YWx1ZSwg
dG9XSyhrZXkpLmdldCgpKTsKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktl
eUZvclRlc3RpbmcocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOwogCiAgICAg
Zm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLmRvdWJsZVdlYlByZWZlcmVu
Y2VGZWF0dXJlcygpKQotICAgICAgICBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXko
cHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOworICAgICAgICBXS1ByZWZlcmVu
Y2VzU2V0RG91YmxlVmFsdWVGb3JLZXlGb3JUZXN0aW5nKHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9X
SyhrZXkpLmdldCgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0
aW9ucy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKLSAgICAgICAgV0tQcmVmZXJlbmNl
c1NldFVJbnQzMlZhbHVlRm9yS2V5KHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgp
KTsKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhw
cmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1
dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuc3RyaW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkp
Ci0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleShwcmVmZXJlbmNlcywg
dG9XSyh2YWx1ZSkuZ2V0KCksIHRvV0soa2V5KS5nZXQoKSk7Ci0KKyAgICAgICAgV0tQcmVmZXJl
bmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdG9XSyh2YWx1
ZSkuZ2V0KCksIHRvV0soa2V5KS5nZXQoKSk7CiB9CiAKIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJl
c2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJl
c2V0U3RhZ2UgcmVzZXRTdGFnZSkKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvU2NyaXB0
cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9TY3JpcHRzL1ByZWZlcmVuY2VzVGVt
cGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYgkocmV2aXNpb24gMjY4NjQ4KQor
KysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rl
c3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYgkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgs
NyBAQAogI3ByYWdtYSBvbmNlCiAKICNkZWZpbmUgR0VORVJBVEVEX1dFQl9QUkVGRVJFTkNFX0tF
WV9UWVBFX01BUFBJTkdTIFwKLTwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzIGRvIC0lPgor
PCUtIGZvciBAcHJlZiBpbiBAcHJlZmVyZW5jZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3NlZCB9IGRv
IC0lPgogICAgIHsgIjwlPSBAcHJlZi5uYW1lICU+IiwgVGVzdEhlYWRlcktleVR5cGU6OjwlPSBA
cHJlZi50eXBlVXBwZXIgJT5XZWJQcmVmZXJlbmNlIH0sIFwKIDwlLSBlbmQgLSU+CiBcCg==
</data>
<flag name="commit-queue"
          id="428038"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411715</attachid>
            <date>2020-10-18 13:11:53 -0700</date>
            <delta_ts>2020-10-18 13:31:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201018131152.patch</filename>
            <type>text/plain</type>
            <size>82246</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvU2NyaXB0cy9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvU2NyaXB0cy9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiCShyZXZpc2lv
biAyNjg2NDgpCisrKyBTb3VyY2UvV1RGL1NjcmlwdHMvR2VuZXJhdGVQcmVmZXJlbmNlcy5yYgko
d29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw3IEBAIGNsYXNzIFByZWZlcmVuY2UKICAgYXR0
cl9hY2Nlc3NvciA6Y29uZGl0aW9uCiAgIGF0dHJfYWNjZXNzb3IgOmhpZGRlbgogICBhdHRyX2Fj
Y2Vzc29yIDpkZWZhdWx0VmFsdWVzCisgIGF0dHJfYWNjZXNzb3IgOmV4cG9zZWQKIAogICBkZWYg
aW5pdGlhbGl6ZShuYW1lLCBvcHRzLCBmcm9udGVuZCkKICAgICBAbmFtZSA9IG5hbWUKQEAgLTEx
Myw2ICsxMTQsNyBAQCBjbGFzcyBQcmVmZXJlbmNlCiAgICAgQGNvbmRpdGlvbiA9IG9wdHNbImNv
bmRpdGlvbiJdCiAgICAgQGhpZGRlbiA9IG9wdHNbImhpZGRlbiJdIHx8IGZhbHNlCiAgICAgQGRl
ZmF1bHRWYWx1ZXMgPSBvcHRzWyJkZWZhdWx0VmFsdWUiXVtmcm9udGVuZF0KKyAgICBAZXhwb3Nl
ZCA9ICFvcHRzWyJleHBvc2VkIl0gfHwgb3B0c1siZXhwb3NlZCJdLmluY2x1ZGU/KGZyb250ZW5k
KQogICBlbmQKIAogICBkZWYgbmFtZUxvd2VyCkBAIC0yMDQsNyArMjA2LDcgQEAgY2xhc3MgUHJl
ZmVyZW5jZXMKICAgICAgICAgaWYgIW9wdGlvbnNbIndlYmNvcmVCaW5kaW5nIl0gJiYgb3B0aW9u
c1siZGVmYXVsdFZhbHVlIl0uc2l6ZSAhPSAzCiAgICAgICAgICAgcmFpc2UgIkVSUk9SOiBQcmVm
ZXJlbmNlcyBib3VuZCB0byBXZWJDb3JlOjpTZXR0aW5ncyBtdXN0IGhhdmUgZGVmYXVsdCB2YWx1
ZXMgZm9yIGFsbCBmcm9udGVuZHM6ICN7bmFtZX0iCiAgICAgICAgIGVuZAotICAgICAgICBpZiAh
b3B0aW9uc1siZXhwb3NlZCJdIG9yIG9wdGlvbnNbImV4cG9zZWQiXS5pbmNsdWRlPyhAZnJvbnRl
bmQpCisgICAgICAgIGlmIG9wdGlvbnNbImRlZmF1bHRWYWx1ZSJdLmluY2x1ZGU/KEBmcm9udGVu
ZCkKICAgICAgICAgICBwcmVmZXJlbmNlID0gUHJlZmVyZW5jZS5uZXcobmFtZSwgb3B0aW9ucywg
QGZyb250ZW5kKQogICAgICAgICAgIEBwcmVmZXJlbmNlcyA8PCBwcmVmZXJlbmNlCiAgICAgICAg
ICAgcmVzdWx0IDw8IHByZWZlcmVuY2UKSW5kZXg6IFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJl
bmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAkocmV2aXNp
b24gMjY4NjQ4KQorKysgU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVu
Y2VzSW50ZXJuYWwueWFtbAkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsNyBAQCBBc3luY0Zy
YW1lU2Nyb2xsaW5nRW5hYmxlZDoKICAgd2ViY29yZU9uQ2hhbmdlOiBzZXROZWVkc1JlbGF5b3V0
QWxsRnJhbWVzCiAgIGh1bWFuUmVhZGFibGVOYW1lOiAiQXN5bmMgRnJhbWUgU2Nyb2xsaW5nIgog
ICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJQZXJmb3JtIGZyYW1lIHNjcm9sbGluZyBvZmYg
dGhlIG1haW4gdGhyZWFkIgorICBleHBvc2VkOiBbIFdlYktpdCBdCiAgIGRlZmF1bHRWYWx1ZToK
ICAgICBXZWJLaXRMZWdhY3k6CiAgICAgICBkZWZhdWx0OiBmYWxzZQpAQCAtOTYsNiArOTcsNyBA
QCBBc3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZDoKICAgd2ViY29yZU9uQ2hhbmdlOiBzZXRO
ZWVkc1JlbGF5b3V0QWxsRnJhbWVzCiAgIGh1bWFuUmVhZGFibGVOYW1lOiAiQXN5bmMgT3ZlcmZs
b3cgU2Nyb2xsaW5nIgogICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJQZXJmb3JtIG92ZXJm
bG93IHNjcm9sbGluZyBvZmYgdGhlIG1haW4gdGhyZWFkIgorICBleHBvc2VkOiBbIFdlYktpdCBd
CiAgIGRlZmF1bHRWYWx1ZToKICAgICBXZWJLaXRMZWdhY3k6CiAgICAgICBkZWZhdWx0OiBmYWxz
ZQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMTAtMTcgIFNhbSBXZWlu
aWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFtUZXN0aW5nXSBDb252ZXJ0IER1bXBS
ZW5kZXJUcmVlIHRvIHVzZSBnZW5lcmF0ZWQgdGVzdCBoZWFkZXIgb3B0aW9ucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3ODgwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIFdLUHJlZmVyZW5j
ZXNTZXQqVmFsdWVGb3JLZXkgU1BJIHRvIFdLUHJlZmVyZW5jZXNTZXQqVmFsdWVGb3JLZXlGb3JU
ZXN0aW5nCisgICAgICAgIHRvIG1ha2UgaXQgY2xlYXIgd2hhdCB0aGV5IGFyZSB1c2VkIGZvciBh
bmQgZm9yIGNvbnNpc3RlbmN5IHdpdGggV2ViS2l0TGVnYWN5LgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldEJv
b2xWYWx1ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJs
ZVZhbHVlRm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0VUludDMy
VmFsdWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdW
YWx1ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1
ZUZvcktleSk6IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVG
b3JLZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9y
S2V5KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktl
eSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQ
cml2YXRlLmg6CisKIDIwMjAtMTAtMTYgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIEludHJvZHVjZSBSZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkgdG8gbWFuYWdlIHRoZSByZXNvdXJjZXMgaW4gdGhlIEdQVSBQcm9jZXNz
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUGFn
ZVVwZGF0ZVByZWZlcmVuY2VzLmNwcC5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
Y3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlBhZ2VVcGRhdGVQcmVmZXJlbmNlcy5jcHAu
ZXJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5j
ZXNUZW1wbGF0ZXMvV2ViUGFnZVVwZGF0ZVByZWZlcmVuY2VzLmNwcC5lcmIJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQ
YWdlLmgiCiAKKyNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmgiCiAjaW5jbHVk
ZSAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmg+CkBAIC00NSw3
ICs0NiwxMSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNldHRpbmdzR2VuZXJhdGVkKGNvCiA8JS0g
aWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBl
bmQgLSU+Cis8JS0gaWYgQHByZWYuZXhwb3NlZCAtJT4KICAgICBzZXR0aW5ncy5zZXQ8JT0gQHBy
ZWYud2ViY29yZU5hbWVVcHBlciAlPihzdG9yZS5nZXQ8JT0gQHByZWYudHlwZVVwcGVyICU+VmFs
dWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OjwlPSBAcHJlZi5uYW1lTG93ZXIgJT5LZXkoKSkp
OworPCUtIGVsc2UgLSU+CisgICAgc2V0dGluZ3Muc2V0PCU9IEBwcmVmLndlYmNvcmVOYW1lVXBw
ZXIgJT4oREVGQVVMVF9WQUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4pOworPCUtIGVuZCAtJT4K
IDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjZW5kaWYKIDwlLSBlbmQgLSU+CkBAIC01OCw3
ICs2MywxMSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzR2VuZXJhdGVkCiA8JS0g
aWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBl
bmQgLSU+Cis8JS0gaWYgQHByZWYuZXhwb3NlZCAtJT4KICAgICBXZWJDb3JlOjpEZXByZWNhdGVk
R2xvYmFsU2V0dGluZ3M6OnNldDwlPSBAcHJlZi53ZWJjb3JlTmFtZVVwcGVyICU+KHN0b3JlLmdl
dDwlPSBAcHJlZi50eXBlVXBwZXIgJT5WYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6PCU9
IEBwcmVmLm5hbWVMb3dlciAlPktleSgpKSk7Cis8JS0gZWxzZSAtJT4KKyAgICBXZWJDb3JlOjpE
ZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldDwlPSBAcHJlZi53ZWJjb3JlTmFtZVVwcGVyICU+
KERFRkFVTFRfVkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+KTsKKzwlLSBlbmQgLSU+CiA8JS0g
aWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2VuZGlmCiA8JS0gZW5kIC0lPgpAQCAtNjgsNyArNzcs
MTEgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlc0dlbmVyYXRlZAogPCUtIGlmIEBw
cmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0l
PgorPCUtIGlmIEBwcmVmLmV4cG9zZWQgLSU+CiAgICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXQ8JT0gQHByZWYud2ViY29yZU5hbWVVcHBlciAl
PihzdG9yZS5nZXQ8JT0gQHByZWYudHlwZVVwcGVyICU+VmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5j
ZXNLZXk6OjwlPSBAcHJlZi5uYW1lTG93ZXIgJT5LZXkoKSkpOworPCUtIGVsc2UgLSU+CisgICAg
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXQ8JT0g
QHByZWYud2ViY29yZU5hbWVVcHBlciAlPihERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFt
ZSAlPik7Cis8JS0gZW5kIC0lPgogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNlbmRpZgog
PCUtIGVuZCAtJT4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBs
YXRlcy9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmguZXJiCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0RlZmlu
aXRpb25zLmguZXJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oLmVyYgkod29y
a2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQAogLy8gbWFjcm8oS2V5VXBwZXIsIEtleUxvd2Vy
LCBUeXBlTmFtZVVwcGVyLCBUeXBlTmFtZSwgRGVmYXVsdFZhbHVlLCBIdW1hblJlYWRhYmxlTmFt
ZSwgSHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uKQogCiAjZGVmaW5lIEZPUl9FQUNIX1dFQktJVF9Q
UkVGRVJFTkNFKG1hY3JvKSBcCi08JS0gZm9yIEBwcmVmIGluIEBwcmVmZXJlbmNlc05vdERlYnVn
IGRvIC0lPgorPCUtIGZvciBAcHJlZiBpbiBAcHJlZmVyZW5jZXNOb3REZWJ1Zy5zZWxlY3QgeyB8
cHwgcC5leHBvc2VkIH0gZG8gLSU+CiAgICAgbWFjcm8oPCU9IEBwcmVmLm5hbWUgJT4sIDwlPSBA
cHJlZi5uYW1lTG93ZXIgJT4sIDwlPSBAcHJlZi50eXBlVXBwZXIgJT4sIDwlPSBAcHJlZi50eXBl
ICU+LCBERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFtZSAlPiwgPCU9IEBwcmVmLmh1bWFu
UmVhZGFibGVOYW1lICU+LCA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uICU+KSBc
CiA8JS0gZW5kIC0lPgogICAgIFwKQEAgLTY1LDcgKzY1LDcgQEAKIC8vIERlYnVnIFByZWZlcmVu
Y2VzCiAKICNkZWZpbmUgRk9SX0VBQ0hfV0VCS0lUX0RFQlVHX1BSRUZFUkVOQ0UobWFjcm8pIFwK
LTwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzRGVidWcgZG8gLSU+Cis8JS0gZm9yIEBwcmVm
IGluIEBwcmVmZXJlbmNlc0RlYnVnLnNlbGVjdCB7IHxwfCBwLmV4cG9zZWQgfSBkbyAtJT4KICAg
ICBtYWNybyg8JT0gQHByZWYubmFtZSAlPiwgPCU9IEBwcmVmLm5hbWVMb3dlciAlPiwgPCU9IEBw
cmVmLnR5cGVVcHBlciAlPiwgPCU9IEBwcmVmLnR5cGUgJT4sIERFRkFVTFRfVkFMVUVfRk9SXzwl
PSBAcHJlZi5uYW1lICU+LCA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZU5hbWUgJT4sIDwlPSBAcHJl
Zi5odW1hblJlYWRhYmxlRGVzY3JpcHRpb24gJT4pIFwKIDwlLSBlbmQgLSU+CiAgICAgXApAQCAt
NzMsNyArNzMsNyBAQAogLy8gSW50ZXJuYWwgRGVidWcgRmVhdHVyZXMKIAogI2RlZmluZSBGT1Jf
RUFDSF9XRUJLSVRfSU5URVJOQUxfREVCVUdfRkVBVFVSRV9QUkVGRVJFTkNFKG1hY3JvKSBcCi08
JS0gZm9yIEBwcmVmIGluIEBpbnRlcm5hbEZlYXR1cmVzIGRvIC0lPgorPCUtIGZvciBAcHJlZiBp
biBAaW50ZXJuYWxGZWF0dXJlcy5zZWxlY3QgeyB8cHwgcC5leHBvc2VkIH0gZG8gLSU+CiAgICAg
bWFjcm8oPCU9IEBwcmVmLm5hbWUgJT4sIDwlPSBAcHJlZi5uYW1lTG93ZXIgJT4sIEJvb2wsIGJv
b2wsIERFRkFVTFRfVkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+LCA8JT0gQHByZWYuaHVtYW5S
ZWFkYWJsZU5hbWUgJT4sIDwlPSBAcHJlZi5odW1hblJlYWRhYmxlRGVzY3JpcHRpb24gJT4pIFwK
IDwlLSBlbmQgLSU+CiAgICBcCkBAIC04MSw3ICs4MSw3IEBACiAvLyBFeHBlcmltZW50YWwgRmVh
dHVyZXMKIAogI2RlZmluZSBGT1JfRUFDSF9XRUJLSVRfRVhQRVJJTUVOVEFMX0ZFQVRVUkVfUFJF
RkVSRU5DRShtYWNybykgXAotPCUtIGZvciBAcHJlZiBpbiBAZXhwZXJpbWVudGFsRmVhdHVyZXMg
ZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGluIEBleHBlcmltZW50YWxGZWF0dXJlcy5zZWxlY3QgeyB8
cHwgcC5leHBvc2VkIH0gZG8gLSU+CiAgICAgbWFjcm8oPCU9IEBwcmVmLm5hbWUgJT4sIDwlPSBA
cHJlZi5uYW1lTG93ZXIgJT4sIEJvb2wsIGJvb2wsIERFRkFVTFRfVkFMVUVfRk9SXzwlPSBAcHJl
Zi5uYW1lICU+LCA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZU5hbWUgJT4sIDwlPSBAcHJlZi5odW1h
blJlYWRhYmxlRGVzY3JpcHRpb24gJT4pIFwKIDwlLSBlbmQgLSU+CiAgICAgXApJbmRleDogU291
cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhw
ZXJpbWVudGFsRmVhdHVyZXMuY3BwLmVyYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0
dXJlcy5jcHAuZXJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5j
cHAuZXJiCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogY29uc3QgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+JiBXZWJQcmVmZXJlbmNlczo6ZXhw
ZXJpbWVudGFsRmVhdHVyZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8
UmVmUHRyPEFQSTo6T2JqZWN0Pj4+IGZlYXR1cmVzKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxSZWZQ
dHI8QVBJOjpPYmplY3Q+PiB7Ci08JS0gZm9yIEBwcmVmIGluIEBleHBlcmltZW50YWxGZWF0dXJl
cyBkbyAtJT4KKzwlLSBmb3IgQHByZWYgaW4gQGV4cGVyaW1lbnRhbEZlYXR1cmVzLnNlbGVjdCB7
IHxwfCBwLmV4cG9zZWQgfSBkbyAtJT4KIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYg
PCU9IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KQEAgLTU4LDcgKzU4LDcgQEAgYm9v
bCBXZWJQcmVmZXJlbmNlczo6aXNGZWF0dXJlRW5hYmxlZChjbwogICAgIH07CiAKICAgICBzdGF0
aWMgRmVhdHVyZUdldHRlck1hcHBpbmcgZ2V0dGVyc1tdID0gewotPCUtIGZvciBAcHJlZiBpbiBA
ZXhwZXJpbWVudGFsRmVhdHVyZXMgZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGluIEBleHBlcmltZW50
YWxGZWF0dXJlcy5zZWxlY3QgeyB8cHwgcC5leHBvc2VkIH0gZG8gLSU+CiA8JS0gaWYgQHByZWYu
Y29uZGl0aW9uIC0lPgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBlbmQgLSU+CkBA
IC05Miw3ICs5Miw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnNldEV4cGVyaW1lbnRhbEZlYXQK
ICAgICB9OwogCiAgICAgc3RhdGljIEZlYXR1cmVTZXR0ZXJNYXBwaW5nIHNldHRlcnNbXSA9IHsK
LTwlLSBmb3IgQHByZWYgaW4gQGV4cGVyaW1lbnRhbEZlYXR1cmVzIGRvIC0lPgorPCUtIGZvciBA
cHJlZiBpbiBAZXhwZXJpbWVudGFsRmVhdHVyZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3NlZCB9IGRv
IC0lPgogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYuY29uZGl0aW9u
ICU+CiA8JS0gZW5kIC0lPgpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6
OnNldEV4cGVyaW1lbnRhbEZlYXQKIAogdm9pZCBXZWJQcmVmZXJlbmNlczo6ZW5hYmxlQWxsRXhw
ZXJpbWVudGFsRmVhdHVyZXMoKQogewotPCUtIGZvciBAcHJlZiBpbiBAZXhwZXJpbWVudGFsRmVh
dHVyZXMgZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGluIEBleHBlcmltZW50YWxGZWF0dXJlcy5zZWxl
Y3QgeyB8cHwgcC5leHBvc2VkIH0gZG8gLSU+CiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0lPgog
I2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBlbmQgLSU+CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNHZXR0ZXJTZXR0
ZXJzLmNwcC5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVu
Y2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzR2V0dGVyU2V0dGVycy5jcHAuZXJiCShyZXZpc2lv
biAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
V2ViUHJlZmVyZW5jZXNHZXR0ZXJTZXR0ZXJzLmNwcC5lcmIJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLTwlLSBmb3IgQHByZWYgaW4gKEBw
cmVmZXJlbmNlc05vdERlYnVnICsgQHByZWZlcmVuY2VzRGVidWcpIGRvIC0lPgorPCUtIGZvciBA
cHJlZiBpbiAoQHByZWZlcmVuY2VzTm90RGVidWcgKyBAcHJlZmVyZW5jZXNEZWJ1Zykuc2VsZWN0
IHsgfHB8IHAuZXhwb3NlZCB9IGRvIC0lPgogdm9pZCBXZWJQcmVmZXJlbmNlczo6c2V0PCU9IEBw
cmVmLm5hbWUgJT4oY29uc3QgPCU9IEBwcmVmLnR5cGUgJT4mIHZhbHVlKQogewogICAgIGlmICgh
bV9zdG9yZS5zZXQ8JT0gQHByZWYudHlwZVVwcGVyICU+VmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5j
ZXNLZXk6OjwlPSBAcHJlZi5uYW1lTG93ZXIgJT5LZXkoKSwgdmFsdWUpKQpAQCAtNTIsNyArNTIs
NyBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjpkZWxldGU8JT0gQHByZWYubmFtCiAKIDwlLSBlbmQg
LSU+CiAKLTwlLSBmb3IgQHByZWYgaW4gQGV4cGVyaW1lbnRhbEZlYXR1cmVzIGRvIC0lPgorPCUt
IGZvciBAcHJlZiBpbiBAZXhwZXJpbWVudGFsRmVhdHVyZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3Nl
ZCB9IGRvIC0lPgogdm9pZCBXZWJQcmVmZXJlbmNlczo6c2V0PCU9IEBwcmVmLm5hbWUgJT4oY29u
c3QgYm9vbCYgdmFsdWUpCiB7CiAgICAgaWYgKCFtX3N0b3JlLnNldEJvb2xWYWx1ZUZvcktleShX
ZWJQcmVmZXJlbmNlc0tleTo6PCU9IEBwcmVmLm5hbWVMb3dlciAlPktleSgpLCB2YWx1ZSkpCkBA
IC03Miw3ICs3Miw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OmRlbGV0ZTwlPSBAcHJlZi5uYW0K
IAogPCUtIGVuZCAtJT4KIAotPCUtIGZvciBAcHJlZiBpbiBAaW50ZXJuYWxGZWF0dXJlcyBkbyAt
JT4KKzwlLSBmb3IgQHByZWYgaW4gQGludGVybmFsRmVhdHVyZXMuc2VsZWN0IHsgfHB8IHAuZXhw
b3NlZCB9IGRvIC0lPgogdm9pZCBXZWJQcmVmZXJlbmNlczo6c2V0PCU9IEBwcmVmLm5hbWUgJT4o
Y29uc3QgYm9vbCYgdmFsdWUpCiB7CiAgICAgaWYgKCFtX3N0b3JlLnNldEJvb2xWYWx1ZUZvcktl
eShXZWJQcmVmZXJlbmNlc0tleTo6PCU9IEBwcmVmLm5hbWVMb3dlciAlPktleSgpLCB2YWx1ZSkp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJl
ZmVyZW5jZXNJbnRlcm5hbERlYnVnRmVhdHVyZXMuY3BwLmVyYgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNJbnRl
cm5hbERlYnVnRmVhdHVyZXMuY3BwLmVyYgkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dl
YktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxE
ZWJ1Z0ZlYXR1cmVzLmNwcC5lcmIJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBjb25zdCBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4mIFdlYlBy
ZWZlcmVuY2VzOjppbnRlcm5hbERlYnVnRmVhdHVyZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4+IGZlYXR1cmVzKHN0ZDo6aW5pdGlh
bGl6ZXJfbGlzdDxSZWZQdHI8QVBJOjpPYmplY3Q+PiB7Ci08JS0gZm9yIEBwcmVmIGluIEBpbnRl
cm5hbEZlYXR1cmVzIGRvIC0lPgorPCUtIGZvciBAcHJlZiBpbiBAaW50ZXJuYWxGZWF0dXJlcy5z
ZWxlY3QgeyB8cHwgcC5leHBvc2VkIH0gZG8gLSU+CiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0l
PgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBlbmQgLSU+CkBAIC01OCw3ICs1OCw3
IEBAIGJvb2wgV2ViUHJlZmVyZW5jZXM6OmlzRmVhdHVyZUVuYWJsZWQoY28KICAgICB9OwogCiAg
ICAgc3RhdGljIEZlYXR1cmVHZXR0ZXJNYXBwaW5nIGdldHRlcnNbXSA9IHsKLTwlLSBmb3IgQHBy
ZWYgaW4gQGludGVybmFsRmVhdHVyZXMgZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGluIEBpbnRlcm5h
bEZlYXR1cmVzLnNlbGVjdCB7IHxwfCBwLmV4cG9zZWQgfSBkbyAtJT4KIDwlLSBpZiBAcHJlZi5j
b25kaXRpb24gLSU+CiAjaWYgPCU9IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KQEAg
LTkyLDcgKzkyLDcgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6c2V0SW50ZXJuYWxEZWJ1Z0ZlYQog
ICAgIH07CiAKICAgICBzdGF0aWMgRmVhdHVyZVNldHRlck1hcHBpbmcgc2V0dGVyc1tdID0gewot
PCUtIGZvciBAcHJlZiBpbiBAaW50ZXJuYWxGZWF0dXJlcyBkbyAtJT4KKzwlLSBmb3IgQHByZWYg
aW4gQGludGVybmFsRmVhdHVyZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3NlZCB9IGRvIC0lPgogPCUt
IGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYuY29uZGl0aW9uICU+CiA8JS0g
ZW5kIC0lPgpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnNldEludGVy
bmFsRGVidWdGZWEKIAogdm9pZCBXZWJQcmVmZXJlbmNlczo6cmVzZXRBbGxJbnRlcm5hbERlYnVn
RmVhdHVyZXMoKQogewotPCUtIGZvciBAcHJlZiBpbiBAaW50ZXJuYWxGZWF0dXJlcyBkbyAtJT4K
KzwlLSBmb3IgQHByZWYgaW4gQGludGVybmFsRmVhdHVyZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3Nl
ZCB9IGRvIC0lPgogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYuY29u
ZGl0aW9uICU+CiA8JS0gZW5kIC0lPgpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZl
cmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzS2V5cy5jcHAuZXJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNl
c0tleXMuY3BwLmVyYgkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRz
L1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzS2V5cy5jcHAuZXJiCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBX
ZWJQcmVmZXJlbmNlc0tleSB7CiAKLTwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzIGRvIC0l
PgorPCUtIGZvciBAcHJlZiBpbiBAcHJlZmVyZW5jZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3NlZCB9
IGRvIC0lPgogY29uc3QgU3RyaW5nJiA8JT0gQHByZWYubmFtZUxvd2VyICU+S2V5KCkKIHsKICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBrZXkoTUFLRV9TVEFUSUNfU1RSSU5HX0lN
UEwoIjwlPSBAcHJlZi5uYW1lICU+IikpOwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL1By
ZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzS2V5cy5oLmVyYgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5j
ZXNLZXlzLmguZXJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNLZXlzLmguZXJiCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBXZWJQ
cmVmZXJlbmNlc0tleSB7CiAKLTwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzIGRvIC0lPgor
PCUtIGZvciBAcHJlZiBpbiBAcHJlZmVyZW5jZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3NlZCB9IGRv
IC0lPgogY29uc3QgU3RyaW5nJiA8JT0gQHByZWYubmFtZUxvd2VyICU+S2V5KCk7CiA8JS0gZW5k
IC0lPgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
V2ViUHJlZmVyZW5jZXNTdG9yZURlZmF1bHRzTWFwLmNwcC5lcmIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzU3Rv
cmVEZWZhdWx0c01hcC5jcHAuZXJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNTdG9yZURlZmF1bHRz
TWFwLmNwcC5lcmIJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgV2ViUHJlZmVyZW5j
ZXNTdG9yZTo6VmFsdWVNYXAmIFdlYlByZWZlcgogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxWYWx1ZU1hcD4gZGVmYXVsdHM7CiAgICAgaWYgKGRlZmF1bHRzLmdldCgpLmlzRW1wdHkoKSkg
ewotPCUtIGZvciBAcHJlZiBpbiBAcHJlZmVyZW5jZXMgZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGlu
IEBwcmVmZXJlbmNlcy5zZWxlY3QgeyB8cHwgcC5leHBvc2VkIH0gZG8gLSU+CiA8JS0gaWYgQHBy
ZWYuY29uZGl0aW9uIC0lPgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBlbmQgLSU+
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2Vz
LmNwcAkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tQcmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDIyICs3OCwyMiBAQCB2b2lk
IFdLUHJlZmVyZW5jZXNTZXRJbnRlcm5hbERlYnVnRmVhdHVyCiAgICAgdG9JbXBsKHByZWZlcmVu
Y2VzUmVmKS0+c2V0SW50ZXJuYWxEZWJ1Z0ZlYXR1cmVFbmFibGVkRm9yS2V5KHRvV1RGU3RyaW5n
KGludGVybmFsRGVidWdGZWF0dXJlS2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5j
ZXNTZXRCb29sVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9v
bCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVl
Rm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZh
bHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0
Qm9vbFZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1By
ZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNl
c1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdLUHJlZmVyZW5jZXNT
ZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNl
c1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZl
cmVuY2VzUmVmKS0+c2V0Qm9vbFZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHZhbHVlKTsK
IH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKK3Zv
aWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVu
Y2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQog
ewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldFVJbnQzMlZhbHVlRm9yS2V5KHRvV1RG
U3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFs
dWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFs
dWUsIFdLU3RyaW5nUmVmIGtleSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9y
S2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1Jl
ZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZikt
PnNldFN0cmluZ1ZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHRvV1RGU3RyaW5nKHZhbHVl
KSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2Vz
UmVmUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU2LDEwICs1NiwxMCBAQCBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzUmVz
ZXRBbGxJbnRlCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0SW50ZXJuYWxEZWJ1Z0Zl
YXR1cmVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiwgYm9vbCwgV0tTdHJpbmdSZWYpOwogCiAvLyBU
aGUgZm9sbG93aW5nIGdlbmVyaWMgc2V0dGVyIGZ1bmN0aW9ucyBhcmUgb25seSBpbnRlbmRlZCBm
b3IgdXNlIGJ5IHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUuCi1XS19FWFBPUlQgdm9pZCBXS1ByZWZl
cmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYs
IGJvb2wgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7Ci1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVu
Y2VzU2V0RG91YmxlVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwg
ZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJl
bmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYs
IHVpbnQzMl90IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVm
ZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIFdLU3RyaW5nUmVmIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQg
V0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1Jl
ZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VYUE9S
VCB2b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVm
ZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkp
OworV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVz
dGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1aW50MzJfdCB2YWx1ZSwgV0tT
dHJpbmdSZWYga2V5KTsKK1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1
ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJp
bmdSZWYgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7CiAKIC8vIEZvciBUZXN0IFJ1bm5lciBVc2Ug
b25seS4KIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNSZXNldFRlc3RSdW5uZXJPdmVycmlk
ZXMoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7CkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAyMC0xMC0xNyAg
U2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1Rlc3RpbmddIENvbnZl
cnQgRHVtcFJlbmRlclRyZWUgdG8gdXNlIGdlbmVyYXRlZCB0ZXN0IGhlYWRlciBvcHRpb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc4ODAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgYSBz
ZXQgb2Ygc2V0dGVycyB0byBmb3IgRHVtcFJlbmRlclRyZWUgdG8gdXNlIHdoZW4gc2V0dGluZyBw
cmVmZXJlbmNlcworICAgICAgICBieSBzdHJpbmcuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzLm1tOgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBfc3dpdGNoTmV0d29ya0xv
YWRlclRvTmV3VGVzdGluZ1Nlc3Npb25dKToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3Nl
dEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTpdKToKKyAgICAg
ICAgKCtbV2ViUHJlZmVyZW5jZXMgX2NsZWFyTmV0d29ya0xvYWRlclNlc3Npb25dKToKKyAgICAg
ICAgKC1bV2ViUHJlZmVyZW5jZXMgX3NldEJvb2xQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1
ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXRVSW50MzJQcmVmZXJl
bmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVu
Y2VzIF9zZXREb3VibGVQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6Cisg
ICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dp
dGhWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXRQcmVmZXJl
bmNlRm9yVGVzdFdpdGhWYWx1ZTpmb3JLZXk6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmll
dy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKwogMjAyMC0xMC0xNyAgU2FtIFdlaW5pZyAgPHdl
aW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQ29udmVydCBwcmVmZXJlbmNlcyBpbiBXZWJQcmVm
ZXJlbmNlc1ByaXZhdGUuaCB0byB1c2UgQHByb3BlcnR5IHN5bnRheCB0byBtYWtlIHRoZW0gbW9y
ZSBtYW5hZ2VhYmxlCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TY3JpcHRzL1ByZWZl
cmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVyZXMubW0uZXJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1NjcmlwdHMvUHJlZmVyZW5j
ZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5tbS5lcmIJKHJl
dmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1NjcmlwdHMvUHJlZmVy
ZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5tbS5lcmIJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
ICsgKE5TQXJyYXk8V2ViRmVhdHVyZSAqPiAqKV9leHBlcmltZW50YWxGZWF0dXJlcwogewogICAg
IHN0YXRpYyBOU0FycmF5PFdlYkZlYXR1cmUgKj4gKmZlYXR1cmVzID0gQFsKLTwlLSBmb3IgQHBy
ZWYgaW4gQGV4cGVyaW1lbnRhbEZlYXR1cmVzIGRvIC0lPgorPCUtIGZvciBAcHJlZiBpbiBAZXhw
ZXJpbWVudGFsRmVhdHVyZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3NlZCB9IGRvIC0lPgogPCUtIGlm
IEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5k
IC0lPgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU2NyaXB0cy9QcmVmZXJlbmNlc1Rl
bXBsYXRlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsRmVhdHVyZXMubW0uZXJiCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
V2ViUHJlZmVyZW5jZXNJbnRlcm5hbEZlYXR1cmVzLm1tLmVyYgkocmV2aXNpb24gMjY4NjQ4KQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9X
ZWJQcmVmZXJlbmNlc0ludGVybmFsRmVhdHVyZXMubW0uZXJiCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw3ICszNyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiArIChOU0FycmF5PFdlYkZlYXR1
cmUgKj4gKilfaW50ZXJuYWxGZWF0dXJlcwogewogICAgIHN0YXRpYyBOU0FycmF5PFdlYkZlYXR1
cmUgKj4gKmZlYXR1cmVzID0gQFsKLTwlLSBmb3IgQHByZWYgaW4gQGludGVybmFsRmVhdHVyZXMg
ZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGluIEBpbnRlcm5hbEZlYXR1cmVzLnNlbGVjdCB7IHxwfCBw
LmV4cG9zZWQgfSBkbyAtJT4KIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYgPCU9IEBw
cmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViVmlld1ByZWZlcmVuY2VzQ2hhbmdl
ZEdlbmVyYXRlZC5tbS5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
U2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJWaWV3UHJlZmVyZW5jZXNDaGFuZ2VkR2Vu
ZXJhdGVkLm1tLmVyYgkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJWaWV3UHJlZmVyZW5jZXNDaGFuZ2Vk
R2VuZXJhdGVkLm1tLmVyYgkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW1w
b3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKIAorI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNEZWZpbml0
aW9ucy5oIgogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2Vi
Vmlld0RhdGEuaCIKICNpbXBvcnQgPFdlYkNvcmUvRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmg+
CkBAIC00NCw3ICs0NSwxMSBAQAogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0g
QHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgorPCUtIGlmIEBwcmVmLmV4cG9zZWQgLSU+
CiAgICAgc2V0dGluZ3Muc2V0PCU9IEBwcmVmLndlYmNvcmVOYW1lVXBwZXIgJT4oW3ByZWZlcmVu
Y2VzIDwlPSBAcHJlZi5wcmVmZXJlbmNlQWNjZXNzb3IgJT46QCI8JT0gQHByZWYucHJlZmVyZW5j
ZUtleSAlPiJdKTsKKzwlLSBlbHNlIC0lPgorICAgIHNldHRpbmdzLnNldDwlPSBAcHJlZi53ZWJj
b3JlTmFtZVVwcGVyICU+KERFRkFVTFRfVkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+KTsKKzwl
LSBlbmQgLSU+CiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2VuZGlmCiA8JS0gZW5kIC0l
PgpAQCAtNTQsNyArNTksMTEgQEAKIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYgPCU9
IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KKzwlLSBpZiBAcHJlZi5leHBvc2VkIC0l
PgogICAgIFdlYkNvcmU6OkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0PCU9IEBwcmVmLndl
YmNvcmVOYW1lVXBwZXIgJT4oW3ByZWZlcmVuY2VzIDwlPSBAcHJlZi5wcmVmZXJlbmNlQWNjZXNz
b3IgJT46QCI8JT0gQHByZWYucHJlZmVyZW5jZUtleSAlPiJdKTsKKzwlLSBlbHNlIC0lPgorICAg
IFdlYkNvcmU6OkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0PCU9IEBwcmVmLndlYmNvcmVO
YW1lVXBwZXIgJT4oREVGQVVMVF9WQUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4pOworPCUtIGVu
ZCAtJT4KIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjZW5kaWYKIDwlLSBlbmQgLSU+CkBA
IC02NCw3ICs3MywxMSBAQAogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHBy
ZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgorPCUtIGlmIEBwcmVmLmV4cG9zZWQgLSU+CiAg
ICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXQ8
JT0gQHByZWYud2ViY29yZU5hbWVVcHBlciAlPihbcHJlZmVyZW5jZXMgPCU9IEBwcmVmLnByZWZl
cmVuY2VBY2Nlc3NvciAlPjpAIjwlPSBAcHJlZi5wcmVmZXJlbmNlS2V5ICU+Il0pOworPCUtIGVs
c2UgLSU+CisgICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5zZXQ8JT0gQHByZWYud2ViY29yZU5hbWVVcHBlciAlPihERUZBVUxUX1ZBTFVFX0ZPUl88
JT0gQHByZWYubmFtZSAlPik7Cis8JS0gZW5kIC0lPgogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAt
JT4KICNlbmRpZgogPCUtIGVuZCAtJT4KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkocmV2aXNpb24gMjY4NjQ4KQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTY2MCwyNiArMTY2MCw2IEBAICsgKHZvaWQpX3NldElCQ3JlYXRvcklEOihOU1N0
cmluZyAqKXN0cmkKICAgICBbb2xkIHJlbGVhc2VdOwogfQogCi0rICh2b2lkKV9zd2l0Y2hOZXR3
b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbgotewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgV2ViVGhyZWFkTG9jaygpOwotI2VuZGlmCi0gICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
TWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7Ci19Ci0KLSsgKHZvaWQpX2NsZWFyTmV0
d29ya0xvYWRlclNlc3Npb24KLXsKLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1
bHRTdG9yYWdlU2Vzc2lvbigpLmRlbGV0ZUFsbENvb2tpZXMoKTsKLX0KLQotKyAodm9pZClfc2V0
Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29r
aWVBY2NlcHRQb2xpY3kpcG9saWN5Ci17Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1bHRT
dG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFn
ZSk7IC8vIFdpbGwgZmFpbCB3aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9O
ZXdUZXN0aW5nU2Vzc2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhhbmQuCi0gICAgQ0ZIVFRQ
Q29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBw
b2xpY3kpOwotfQotCiAtIChCT09MKWlzRE9NUGFzdGVBbGxvd2VkCiB7CiAgICAgcmV0dXJuIFtz
ZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0RE9NUGFzdGVBbGxvd2VkUHJlZmVyZW5jZUtleV07
CkBAIC0xOTY2LDExICsxOTQ2LDYgQEAgLSAodm9pZCl3aWxsQWRkVG9XZWJWaWV3CiAgICAgKytf
cHJpdmF0ZS0+bnVtV2ViVmlld3M7CiB9CiAKLS0gKHZvaWQpX3NldFByZWZlcmVuY2VGb3JUZXN0
V2l0aFZhbHVlOihOU1N0cmluZyAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKLXsKLSAg
ICBbc2VsZiBfc2V0U3RyaW5nVmFsdWU6dmFsdWUgZm9yS2V5OmtleV07Ci19Ci0KIC0gKHZvaWQp
c2V0RnVsbFNjcmVlbkVuYWJsZWQ6KEJPT0wpZmxhZwogewogICAgIFtzZWxmIF9zZXRCb29sVmFs
dWU6ZmxhZyBmb3JLZXk6V2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5XTsKQEAg
LTMwMTMsNiArMjk4OCw1MSBAQCAtICh2b2lkKV9zZXRFbmFibGVkOihCT09MKXZhbHVlIGZvckZl
YXR1CiAKIEBlbmQKIAorCitAaW1wbGVtZW50YXRpb24gV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZh
dGVUZXN0aW5nKQorCisrICh2b2lkKV9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vz
c2lvbgoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgV2ViVGhyZWFkTG9jaygpOwor
I2VuZGlmCisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdT
ZXNzaW9uKCk7Cit9CisKKysgKHZvaWQpX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNv
b2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeQoreworICAg
IFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdl
KCk7CisgICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90IGNh
bGxlZCBiZWZvcmVoYW5kLgorICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQ
b2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKK30KKworKyAodm9pZClfY2xlYXJO
ZXR3b3JrTG9hZGVyU2Vzc2lvbgoreworICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVm
YXVsdFN0b3JhZ2VTZXNzaW9uKCkuZGVsZXRlQWxsQ29va2llcygpOworfQorCistICh2b2lkKV9z
ZXRCb29sUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KEJPT0wpdmFsdWUgZm9yS2V5OihO
U1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6dmFsdWUgZm9yS2V5Omtl
eV07Cit9CisKKy0gKHZvaWQpX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVl
Oih1aW50MzJfdCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5Cit7CisgICAgW3NlbGYgX3Nl
dEludGVnZXJWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAodm9pZClfc2V0RG91Ymxl
UHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KGRvdWJsZSl2YWx1ZSBmb3JLZXk6KE5TU3Ry
aW5nICopa2V5Cit7CisgICAgW3NlbGYgX3NldEZsb2F0VmFsdWU6dmFsdWUgZm9yS2V5OmtleV07
Cit9CisKKy0gKHZvaWQpX3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihO
U1N0cmluZyAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2VsZiBfc2V0
U3RyaW5nVmFsdWU6dmFsdWUgZm9yS2V5OmtleV07Cit9CisKK0BlbmQKKwogQGltcGxlbWVudGF0
aW9uIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlUHJlZmVyZW5jZXNDb252ZXJ0ZWRUb1dlYkZl
YXR1cmUpCiAKIC0gKEJPT0wpdXNlckdlc3R1cmVQcm9taXNlUHJvcGFnYXRpb25FbmFibGVkCklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJl
ZmVyZW5jZXNQcml2YXRlLmgJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTg5LDEzICs4OSw2IEBAIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGUpCiAr
ICh2b2lkKV9zZXRJbml0aWFsRGVmYXVsdFRleHRFbmNvZGluZ1RvU3lzdGVtRW5jb2Rpbmc7CiAr
ICh2b2lkKV9zZXRJQkNyZWF0b3JJRDooTlNTdHJpbmcgKilzdHJpbmc7CiAKLS8vIEZvciBEdW1w
UmVuZGVyVHJlZSB1c2Ugb25seS4KLSsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rl
c3RpbmdTZXNzaW9uOwotKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29v
a2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpY29va2llQWNjZXB0UG9s
aWN5OwotKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbjsKLS8vIFVzZWQgdG8gc2V0
IHByZWZlcmVuY2Ugc3BlY2lmaWVkIGluIHRoZSB0ZXN0IHZpYSBMYXlvdXRUZXN0Q29udHJvbGxl
ci5vdmVycmlkZVByZWZlcmVuY2UoLi4pLgotLSAodm9pZClfc2V0UHJlZmVyZW5jZUZvclRlc3RX
aXRoVmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKLQogKyAo
dm9pZClzZXRXZWJLaXRMaW5rVGltZVZlcnNpb246KGludCl2ZXJzaW9uOwogCiAvLyBGb3IgV2Vi
VmlldydzIHVzZSBvbmx5LgpAQCAtMzEwLDYgKzMwMywxOCBAQCBAaW50ZXJmYWNlIFdlYlByZWZl
cmVuY2VzIChXZWJQcml2YXRlRmVhCiAtICh2b2lkKV9zZXRFbmFibGVkOihCT09MKXZhbHVlIGZv
ckZlYXR1cmU6KFdlYkZlYXR1cmUgKilmZWF0dXJlOwogQGVuZAogCitAaW50ZXJmYWNlIFdlYlBy
ZWZlcmVuY2VzIChXZWJQcml2YXRlVGVzdGluZykKKysgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2Fk
ZXJUb05ld1Rlc3RpbmdTZXNzaW9uOworKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJT
ZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpY29va2ll
QWNjZXB0UG9saWN5OworKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbjsKKworLSAo
dm9pZClfc2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihCT09MKXZhbHVlIGZv
cktleTooTlNTdHJpbmcgKilrZXk7CistICh2b2lkKV9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVz
dGluZ1dpdGhWYWx1ZToodWludDMyX3QpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0g
KHZvaWQpX3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihkb3VibGUpdmFs
dWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZvaWQpX3NldFN0cmluZ1ByZWZlcmVuY2VG
b3JUZXN0aW5nV2l0aFZhbHVlOihOU1N0cmluZyAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilr
ZXk7CisKK0BlbmQKKwogLy8gRklYTUU6IElmIHRoZXNlIGFyZSBub3QgdXNlZCBhbnl3aGVyZSwg
d2Ugc2hvdWxkIHJlbW92ZSB0aGVtIGFuZCBvbmx5IHVzZSBXZWJGZWF0dXJlIG1lY2hhbmlzbSBm
b3IgdGhlIHByZWZlcmVuY2UuCiBAaW50ZXJmYWNlIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRl
UHJlZmVyZW5jZXNDb252ZXJ0ZWRUb1dlYkZlYXR1cmUpCiBAcHJvcGVydHkgKG5vbmF0b21pYykg
Qk9PTCB1c2VyR2VzdHVyZVByb21pc2VQcm9wYWdhdGlvbkVuYWJsZWQ7CkluZGV4OiBUb29scy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg2NTkp
CisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw5OSBAQAorMjAy
MC0xMC0xNyAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1Rlc3Rp
bmddIENvbnZlcnQgRHVtcFJlbmRlclRyZWUgdG8gdXNlIGdlbmVyYXRlZCB0ZXN0IGhlYWRlciBv
cHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTc4ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
dWxseSBzdXBwb3J0IHVzZSBvZiBhbnkgV2ViUHJlZmVyZW5jZXMqLnlhbWwgcHJlZmVyZW5jZSBp
biBEdW1wUmVuZGVyVHJlZSAoZm9yIG1hY09TKSBieToKKyAgICAgICAgICAgIC0gTW92aW5nIER1
bXBSZW5kZXJUcmVlJ3MgVGVzdE9wdGlvbnMgdG8gYmUgZnVsbHkgYmFja2VkIGJ5IFRlc3RGZWF0
dXJlcyBsaWtlIFdlYktpdFRlc3RSdW5ubmVyLgorICAgICAgICAgICAgLSBBZG9wdGluZyBuZXcg
V2ViUHJlZmVyZW5jZXMgU1BJIGZvciBzZXR0aW5nIGFueSBwcmVmZXJlbmNlIGJ5IGtleS4KKyAg
ICAgICAgICAgIC0gR2VuZXJhdGluZyBtYXBwaW5nIGZyb20gV2ViUHJlZmVyZW5jZXMqLnlhbWwg
dG8gV2ViS2l0TGVnYWN5IGtleSBuYW1lcy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0NN
YWtlTGlzdHMudHh0OgorICAgICAgICBHZW5lcmF0ZSBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktp
dExlZ2FjeUtleU1hcHBpbmcuY3BwCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICBBZGQgbmV3IHRlbXBsYXRlIGZpbGUs
IFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiLCBhbmQg
YWRkCisgICAgICAgIERlcml2ZWRTb3VyY2VzLm1ha2UgYW5kIGdlbmVyYXRlLWRlcml2ZWQtc291
cmNlcy5zaCwgc28gdGhhdCBpZiBlaXRoZXIgb2YgdGhlbSBjaGFuZ2UKKyAgICAgICAgdGhlIERl
cml2ZWRTb3VyY2VzLm1ha2UgaXMgYWN0dWFsbHkgaW52b2tlZC4KKyAKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgQWRk
cyBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgU3dpdGNo
IGdlbmVyYXRpb24gb2YgcHJlZmVyZW5jZXMgdG8gdXNlIGEgc3RhdGljIHBhdHRlcm4gdG8gYXZv
aWQgaXNzdWVzIHdpdGggY2lyY3VsYXIgZGVwZW5kZW5jaWVzLgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgQWRkcyBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9U
ZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYjogQWRkZWQu
CisgICAgICAgIFRlbXBsYXRlIGZvciBnZW5lcmF0aW5nIG1hcHBpbmcgZnJvbSBXZWJQcmVmZXJl
bmNlcyoueWFtbCBrZXkgbmFtZXMgdG8gV2ViS2l0TGVnYWN5IGtleSBuYW1lcy4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9UZXN0T3B0aW9ucy5oOgorICAgICAgICBTd2l0Y2ggdG8gYSBtb2RlbCBtb3JlIHNpbWls
YXIgdG8gdGhhdCBpbiBXZWJLaXRUZXN0UnVubmVyLCB3aGVyZSBUZXN0T3B0aW9ucyBzdG9yZXMg
dGhlIHBhc3NlZCBpbiAKKyAgICAgICAgVGVzdEZlYXR1cmVzIGFuZCBvbmx5IGV4cG9zZXMgdmFs
dWVzIHRoYXQgaGF2ZSBiZWVuIHNldCBvciBkZWZhdWx0IHZhbHVlcyB3aGVuIG5lZWRlZC4KKyAg
ICAgICAgCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgor
ICAgICAgICAodG9OUyk6CisgICAgICAgIEFkZCBoZWxwZXIgdG8gY29udmVydCBmcm9tIGEgc3Rk
OjpzdHJpbmcgdG8gYW4gTlNTdHJpbmcuCisKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXdBbmRPZmZz
Y3JlZW5XaW5kb3cpOgorICAgICAgICBOb3cgdGhhdCB3ZSBhcmVuJ3QgbmVjY2Vzc2FyaWx5IHNl
dHRpbmcgYWxsIHByZWZlcmVuY2VzIGVhY2ggdGVzdCwgd2UgbmVlZCB0byBmdWxseSByZXNldCB0
aGUKKyAgICAgICAgV2ViUHJlZmVyZW5jZXMgb24gZWFjaCBydW4gYnkgY3JlYXRpbmcgYSBuZXcg
b25lLiBUaGlzIG1lYW5zIHJlbW92aW5nIHRoZSB1c2VzIG9mIAorICAgICAgICBbV2ViUHJlZmVy
ZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10sIGFuZCBpbnN0ZWFkIGdyYWJiaW5nIHRoZSBXZWJW
aWV3J3MgcHJlZmVyZW5jZXMgd2hlbiBuZWVkZWQuCisKKyAgICAgICAgKHJlc2V0V2ViUHJlZmVy
ZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICBNb3ZlcyBzb21lIHNjYXR0ZXJlZCBk
ZWZhdWx0IHZhbHVlIHNldHRpbmcgaGVyZS4gUmVtb3ZlIGFzc2VydCB0aGF0IGlzIG5vIGxvbmdl
ciBhY2N1cmF0ZQorICAgICAgICBub3cgdGhhdCB3ZSBkb24ndCB1c2Ugc3RhbmRhcmRQcmVmZXJl
bmNlcyBhbmQgd2lsbCBub3QgaGF2ZSBzZXQgdGhpcyB2YWx1ZSBieSB0aGlzIHBvaW50LgorCisg
ICAgICAgIChzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKToKKyAgICAgICAgVXNlIG5l
dyBfc2V0KlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleSogU1BJIHRvIHNldCBh
bnkgc3BlY2lmaWVkIHByZWZlcm5lY2VzLgorCisgICAgICAgIChzZXREZWZhdWx0c1RvQ29uc2lz
dGVudFZhbHVlc0ZvclRlc3RpbmcpOgorICAgICAgICBNb3ZlIGRlZmF1bHRzIHNldCBoZXJlIHRv
IHRoZSBtb3JlIGFwcHJvcHJpYXRlIGFuZCBjZW50cmFsaXplZCByZXNldFdlYlByZWZlcmVuY2Vz
VG9Db25zaXN0ZW50VmFsdWVzLgorCisgICAgICAgIChzZXRKU0NPcHRpb25zKToKKyAgICAgICAg
VXNlIG5ldyBnZXR0ZXIgZnVuY3Rpb24gcmF0aGVyIHRoYW4gZGlyZWN0IG1lbWJlciBhY2Nlc3Mu
CisKKyAgICAgICAgKHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgRnVs
bHkgcmVzZXQgcHJlZmVybmVjZXMgYnkgYWxsb2NhdGluZyBhIG5ldyBXZWJQcmVmZXJlbmNlcyBv
biByZXNldCBhbmQgdXNlIG5ldyBUZXN0T3B0aW9ucyBnZXR0ZXIKKyAgICAgICAgZnVuY3Rpb25z
LgorCisgICAgICAgICh0ZXN0T3B0aW9uc0ZvclRlc3QpOgorICAgICAgICBTZWVkIFRlc3RGZWF0
dXJlcyB3aXRoIGRlZmF1bHQgZ2xvYmFsIHZhbHVlcywgbWF0Y2hpbmcgdGhlIGlkaW9tIGluIFdl
YktpdFRlc3RSdW5uZXIuCisKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICBVc2UgbmV3IGdl
dHRlciBmdW5jdGlvbiByYXRoZXIgdGhhbiBkaXJlY3QgbWVtYmVyIGFjY2Vzcy4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgorICAgICAgICAoVGVzdFJ1
bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNl
dFVzZXJTdHlsZVNoZWV0TG9jYXRpb24pOgorICAgICAgICAoVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQ
cmVmZXJlbmNlKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldENhY2hlTW9kZWwpOgorICAgICAg
ICBBY2Nlc3MgdGhlIGNvcnJlY3QgV2ViUHJlZmVyZW5jZXMgdmlhIHRoZSBXZWJWaWV3LCByYXRo
ZXIgdGhhbiBhc3N1bWluZyBzdGFuZGFyZFByZWZlcmVuY2VzCisgICAgICAgIGFyZSBiZWluZyB1
c2VkLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW06CisgICAg
ICAgICgtW1VJRGVsZWdhdGUgcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rpbmc6XSk6
CisgICAgICAgIFVzZSBuZXcgZ2V0dGVyIGZ1bmN0aW9uIHJhdGhlciB0aGFuIGRpcmVjdCBtZW1i
ZXIgYWNjZXNzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcDoKKyAgICAgICAgKHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMpOgor
ICAgICAgICAoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUpOgorICAgICAgICAoc2V0V2Vi
UHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9ucyk6CisgICAgICAgIChzZXRKU0NPcHRpb25zKToKKyAg
ICAgICAgKHRlc3RPcHRpb25zRm9yVGVzdCk6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAg
S2VlcCBXaW5kb3dzIER1bXBSZW5kZXJUcmVlIHdvcmtpbmcgd2l0aCB0aGUgbmV3IFRlc3RPcHRp
b25zIGJ5IGdldHRpbmcgZmVhdHVyZSB2YWx1ZXMgYnkKKyAgICAgICAgc3RyaW5nIGtleXMgd2l0
aCBzcGVjaWZpZWQgZGVmYXVsdHMgYW5kIGFkb3B0aW5nIG5ldyBnZXR0ZXIgZnVuY3Rpb25zLiBJ
biB0aGUgZnV0dXJlLCB3ZQorICAgICAgICB3aWxsIGFkZCBzaW1pbGFyIFNQSSBhcyB3YXMgYWRk
ZWQgZm9yIG1hYyBXZWJLaXRMZWdhY3kgdG8gV2luZG93cyBXZWJLaXRMZWdhY3kgdG8gYXZvaWQg
dGhpcy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVu
dFZhbHVlcyk6CisgICAgICAgIFVwZGF0ZSBmb3IgcmVuYW1lZCBXS1ByZWZlcmVuY2VzUmVmIFNQ
SS4KKwogMjAyMC0xMC0xNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0ZsYXRwYWsgU0RLXSBmbGF0cGFrdXRpbHMucHkgcmVwb3J0cyAiS2V5RXJy
b3I6ICdnY2MnIiBlcnJvciBpZiB1c2luZyB3aXRoIGljZWNjIGFuZCB0b29sY2hhaW5zIGFyZW4n
dCBnZW5lcmF0ZWQgeWV0CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dAkocmV2
aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgbGlzdChBUFBFTkQgRHVtcFJlbmRlclRyZWVf
UFJJVkFURV9JTkNMVQogKQogCiBzZXQoRHVtcFJlbmRlclRyZWVfV0VCX1BSRUZFUkVOQ0VTX1RF
TVBMQVRFUworICAgICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVt
cGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJi
CiAgICAgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
VGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCiApCiAKQEAgLTUzLDEyICs1NCwxMyBAQCBz
ZXQoRHVtcFJlbmRlclRyZWVfV0VCX1BSRUZFUkVOQ0VTCiBzZXRfc291cmNlX2ZpbGVzX3Byb3Bl
cnRpZXMoJHtEdW1wUmVuZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVN9IFBST1BFUlRJRVMgR0VORVJB
VEVEIFRSVUUpCiAKIGFkZF9jdXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtEdW1wUmVuZGVy
VHJlZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaAorICAg
IE9VVFBVVCAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9L1Rlc3RPcHRpb25z
R2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgJHtEdW1wUmVuZGVyVHJlZV9ERVJJ
VkVEX1NPVVJDRVNfRElSfS9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaAogICAgIERFUEVORFMg
JHtEdW1wUmVuZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVTfSAke0R1bXBSZW5kZXJU
cmVlX1dFQl9QUkVGRVJFTkNFU30gV1RGX0NvcHlQcmVmZXJlbmNlcwotICAgIENPTU1BTkQgJHtS
VUJZX0VYRUNVVEFCTEV9ICR7V1RGX1NDUklQVFNfRElSfS9HZW5lcmF0ZVByZWZlcmVuY2VzLnJi
IC0tZnJvbnRlbmQgV2ViS2l0TGVnYWN5IC0tYmFzZSAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVy
ZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCAtLWRlYnVnICR7V1RGX1NDUklQVFNfRElSfS9QcmVm
ZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0RlYnVnLnlhbWwgLS1leHBlcmltZW50YWwgJHtXVEZfU0NS
SVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgLS1p
bnRlcm5hbCAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRl
cm5hbC55YW1sIC0tb3V0cHV0RGlyICIke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19E
SVJ9IiAtLXRlbXBsYXRlICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2Vz
VGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYgorICAgIENPTU1BTkQgJHtS
VUJZX0VYRUNVVEFCTEV9ICR7V1RGX1NDUklQVFNfRElSfS9HZW5lcmF0ZVByZWZlcmVuY2VzLnJi
IC0tZnJvbnRlbmQgV2ViS2l0TGVnYWN5IC0tYmFzZSAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVy
ZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCAtLWRlYnVnICR7V1RGX1NDUklQVFNfRElSfS9QcmVm
ZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0RlYnVnLnlhbWwgLS1leHBlcmltZW50YWwgJHtXVEZfU0NS
SVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgLS1p
bnRlcm5hbCAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRl
cm5hbC55YW1sIC0tb3V0cHV0RGlyICIke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19E
SVJ9IiAtLXRlbXBsYXRlICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2Vz
VGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAu
ZXJiIC0tdGVtcGxhdGUgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNU
ZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCiAgICAgVkVSQkFUSU0pCiAK
IGxpc3QoQVBQRU5EIER1bXBSZW5kZXJUcmVlX1NPVVJDRVMKKyAgICAke0R1bXBSZW5kZXJUcmVl
X0RFUklWRURfU09VUkNFU19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5
TWFwcGluZy5jcHAKICAgICAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9L1Rl
c3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCiApCiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVt
cFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjY4
NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdAkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDEwIEBAICQoQlVJTFRfUFJPRFVDVFNfRElS
KS91c3IvbG9jYWwvaW5jbHVkZS8KICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5j
bHVkZS93dGYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwK
ICQoUFJPSkVDVF9ESVIpLy4uL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRp
bmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwKICQoUFJPSkVDVF9ESVIpL0JpbmRpbmdzL0NvZGVH
ZW5lcmF0b3JEdW1wUmVuZGVyVHJlZS5wbQorJChQUk9KRUNUX0RJUikvRGVyaXZlZFNvdXJjZXMu
bWFrZQogJChQUk9KRUNUX0RJUikvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0
aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIKKyQoUFJPSkVDVF9ESVIpL1NjcmlwdHMvUHJlZmVyZW5j
ZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNw
cC5lcmIKKyQoUFJPSkVDVF9ESVIpL1NjcmlwdHMvZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzLnNo
CiAkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvQ29kZUdlbmVyYXRvci5wbQogJChXRUJD
T1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0lETEF0dHJpYnV0ZXMuanNvbgogJChXRUJDT1JFX1BS
SVZBVEVfSEVBREVSU19ESVIpL0lETFBhcnNlci5wbQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHJldmlzaW9u
IDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDMgKzIsNCBAQAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVlL0pTVUlTY3JpcHRDb250cm9sbGVy
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVl
L0pTVUlTY3JpcHRDb250cm9sbGVyLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zR2Vu
ZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjMsMjkgKzIz
LDEyIEBACiAKIFJVQlkgPSBydWJ5CiAKLVdFQl9QUkVGRVJFTkNFUyA9IFwKLSAgICAke1dURl9C
VUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCBcCi0gICAg
JHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRGVidWcu
eWFtbCBcCi0gICAgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZl
cmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgXAotICAgICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9Q
cmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwgXAotIwotCi1XRUJfUFJFRkVS
RU5DRVNfVEVNUExBVEVTID0gXAotICAgICQoRHVtcFJlbmRlclRyZWUpL1NjcmlwdHMvUHJlZmVy
ZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiIFwKLSMKLVdFQl9Q
UkVGRVJFTkNFU19GSUxFUyA9ICQoYmFzZW5hbWUgJChub3RkaXIgJChXRUJfUFJFRkVSRU5DRVNf
VEVNUExBVEVTKSkpCi1XRUJfUFJFRkVSRU5DRVNfUEFUVEVSTlMgPSAkKHN1YnN0IC5lcmIsLCQo
V0VCX1BSRUZFUkVOQ0VTX0ZJTEVTKSkKLQotYWxsIDogJChXRUJfUFJFRkVSRU5DRVNfRklMRVMp
Ci0KLSQoV0VCX1BSRUZFUkVOQ0VTX1BBVFRFUk5TKSA6ICQoV1RGX0JVSUxEX1NDUklQVFNfRElS
KS9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiICQoV0VCX1BSRUZFUkVOQ0VTX1RFTVBMQVRFUykgJChX
RUJfUFJFRkVSRU5DRVMpCi0JJChSVUJZKSAkPCAtLWZyb250ZW5kIFdlYktpdExlZ2FjeSAtLWJh
c2UgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlh
bWwgLS1kZWJ1ZyAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVy
ZW5jZXNEZWJ1Zy55YW1sIC0tZXhwZXJpbWVudGFsICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9Q
cmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIC0taW50ZXJuYWwgJHtX
VEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwu
eWFtbCAkKGFkZHByZWZpeCAtLXRlbXBsYXRlICwgJChXRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVT
KSkKLQotCiBVSVNDUklQVENPTlRFWFRfRElSID0gJChEdW1wUmVuZGVyVHJlZSkvLi4vVGVzdFJ1
bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MKK0RVTVBSRU5ERVJUUkVFX1BSRUZF
UkVOQ0VTX1RFTVBMQVRFU19ESVIgPSAkKER1bXBSZW5kZXJUcmVlKS9TY3JpcHRzL1ByZWZlcmVu
Y2VzVGVtcGxhdGVzCiAKIFZQQVRIID0gXAogICAgICQoVUlTQ1JJUFRDT05URVhUX0RJUikgXAor
ICAgICQoRFVNUFJFTkRFUlRSRUVfUFJFRkVSRU5DRVNfVEVNUExBVEVTX0RJUikgXAogIwogCiBV
SUNPTlRFWFRfSU5URVJGQUNFUyA9IFwKQEAgLTcxLDMgKzU0LDIxIEBAIGFsbCA6IFwKICAgICAk
KFVJQ09OVEVYVF9JTlRFUkZBQ0VTOiU9SlMlLmgpIFwKICAgICAkKFVJQ09OVEVYVF9JTlRFUkZB
Q0VTOiU9SlMlLmNwcCkgXAogIworCisKK1dFQl9QUkVGRVJFTkNFUyA9IFwKKyAgICAke1dURl9C
VUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCBcCisgICAg
JHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRGVidWcu
eWFtbCBcCisgICAgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZl
cmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgXAorICAgICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9Q
cmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwgXAorIworCitXRUJfUFJFRkVS
RU5DRVNfR0VORVJBVEVEX0ZJTEVTID0gXAorICAgIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0
TGVnYWN5S2V5TWFwcGluZy5jcHAgXAorICAgIFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oIFwK
KyMKKworYWxsIDogJChXRUJfUFJFRkVSRU5DRVNfR0VORVJBVEVEX0ZJTEVTKQorCiskKFdFQl9Q
UkVGRVJFTkNFU19HRU5FUkFURURfRklMRVMpIDogJSA6ICUuZXJiICQoV0VCX1BSRUZFUkVOQ0VT
KSAkKFdURl9CVUlMRF9TQ1JJUFRTX0RJUikvR2VuZXJhdGVQcmVmZXJlbmNlcy5yYgorCSQoUlVC
WSkgJChXVEZfQlVJTERfU0NSSVBUU19ESVIpL0dlbmVyYXRlUHJlZmVyZW5jZXMucmIgLS1mcm9u
dGVuZCBXZWJLaXRMZWdhY3kgLS1iYXNlICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJl
bmNlcy9XZWJQcmVmZXJlbmNlcy55YW1sIC0tZGVidWcgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9
L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRhbCAke1dU
Rl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50
YWwueWFtbCAtLWludGVybmFsICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9X
ZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwgLS10ZW1wbGF0ZSAkPApJbmRleDogVG9vbHMvRHVt
cFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL1Rlc3RPcHRpb25zLmNwcAkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw0NCBA
QAogCiBuYW1lc3BhY2UgV1RSIHsKIAorY29uc3QgVGVzdEZlYXR1cmVzJiBUZXN0T3B0aW9uczo6
ZGVmYXVsdHMoKQoreworICAgIHN0YXRpYyBUZXN0RmVhdHVyZXMgZmVhdHVyZXM7CisgICAgaWYg
KGZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMuZW1wdHkoKSkgeworICAgICAgICBm
ZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzID0geworICAgICAgICAgICAgLy8gVGhl
c2UgYXJlIFdlYlByZWZlcmVuY2UgdmFsdWVzIHRoYXQgbXVzdCBhbHdheXMgYmUgc2V0IGFzIHRo
ZXkgbWF5CisgICAgICAgICAgICAvLyBkaWZmZXIgZnJvbSB0aGUgZGVmYXVsdCBzZXQgaW4gdGhl
IFdlYlByZWZlcmVuY2VzKi55YW1sIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICB7ICJBbGxv
d0Nyb3NzT3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyIsIGZhbHNlIH0sCisg
ICAgICAgICAgICB7ICJBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzIiwgdHJ1ZSB9LAorICAg
ICAgICAgICAgeyAiQWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAg
ICAgICB7ICJBdHRhY2htZW50RWxlbWVudEVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAg
eyAiVXNlc0JhY2tGb3J3YXJkQ2FjaGUiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQ29sb3JG
aWx0ZXJFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkluc3BlY3RvckFkZGl0aW9u
c0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiSW50ZXJzZWN0aW9uT2JzZXJ2ZXJF
bmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIktleWdlbkVsZW1lbnRFbmFibGVkIiwg
ZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIk1lbnVJdGVtRWxlbWVudEVuYWJsZWQiLCBmYWxzZSB9
LAorICAgICAgICAgICAgeyAiTW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQiLCB0cnVlIH0sCisK
KyAgICAgICAgICAgIHsgIkNTU0xvZ2ljYWxFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAg
IHsgIkxpbmVIZWlnaHRVbml0c0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiU2Vs
ZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllc0VuYWJsZWQiLCB0cnVlIH0sCisgICAgICAgICAg
ICB7ICJMYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCIsIHRydWUgfSwK
KworICAgICAgICAgICAgeyAiQWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCIsIGZhbHNlIH0sCisg
ICAgICAgICAgICB7ICJBc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZCIs
IGZhbHNlIH0sCisgICAgICAgICAgICB7ICJBc3luY0NsaXBib2FyZEFQSUVuYWJsZWQiLCBmYWxz
ZSB9LAorICAgICAgICAgICAgeyAiQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCIsIGZh
bHNlIH0sCisgICAgICAgICAgICB7ICJDb250YWN0UGlja2VyQVBJRW5hYmxlZCIsIGZhbHNlIH0s
CisgICAgICAgICAgICB7ICJDb3JlTWF0aE1MRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAg
ICB7ICJSZXF1ZXN0SWRsZUNhbGxiYWNrRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7
ICJSZXNpemVPYnNlcnZlckVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiV2ViR1BV
RW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgIH07CisgICAgfQorICAgIHJldHVybiBmZWF0dXJl
czsKK30KKwogY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBUZXN0SGVhZGVy
S2V5VHlwZT4mIFRlc3RPcHRpb25zOjprZXlUeXBlTWFwcGluZygpCiB7CiAgICAgc3RhdGljIGNv
bnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgVGVzdEhlYWRlcktleVR5cGU+IG1h
cCB7CkBAIC00Nyw1NiArODUsNDcgQEAgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3Ry
aW5nLCBUZQogICAgIHJldHVybiBtYXA7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRp
YyB2b2lkIHNldFZhbHVlSWZTZXRJbk1hcChUJiB2YWx1ZVRvU2V0LCBzdGQ6OnN0cmluZyBrZXks
IGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgVD4mIG1hcCkKK2Jvb2wgVGVz
dE9wdGlvbnM6OndlYlZpZXdJc0NvbXBhdGlibGVXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9u
cyYgb3B0aW9ucykgY29uc3QKK3sKKyAgICBpZiAobV9mZWF0dXJlcy5leHBlcmltZW50YWxGZWF0
dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy5pbnRlcm5hbERlYnVnRmVhdHVyZXMg
IT0gb3B0aW9ucy5tX2ZlYXR1cmVzLmludGVybmFsRGVidWdGZWF0dXJlcykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMg
IT0gb3B0aW9ucy5tX2ZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy5kb3VibGVXZWJQcmVmZXJlbmNlRmVh
dHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLmRvdWJsZVdlYlByZWZlcmVuY2VGZWF0dXJlcykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLnVpbnQzMldlYlByZWZl
cmVuY2VGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMudWludDMyV2ViUHJlZmVyZW5jZUZl
YXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuc3RyaW5n
V2ViUHJlZmVyZW5jZUZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5zdHJpbmdXZWJQcmVm
ZXJlbmNlRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJl
cy5ib29sVGVzdFJ1bm5lckZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5ib29sVGVzdFJ1
bm5lckZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMu
ZG91YmxlVGVzdFJ1bm5lckZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5kb3VibGVUZXN0
UnVubmVyRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJl
cy5zdHJpbmdUZXN0UnVubmVyRmVhdHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLnN0cmluZ1Rl
c3RSdW5uZXJGZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1
cmVzLnN0cmluZ1ZlY3RvclRlc3RSdW5uZXJGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMu
c3RyaW5nVmVjdG9yVGVzdFJ1bm5lckZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgZmVhdHVyZVZhbHVl
KHN0ZDo6c3RyaW5nIGtleSwgVCBkZWZhdWx0VmFsdWUsIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21h
cDxzdGQ6OnN0cmluZywgVD4mIG1hcCkKIHsKICAgICBhdXRvIGl0ID0gbWFwLmZpbmQoa2V5KTsK
LSAgICBpZiAoaXQgPT0gbWFwLmVuZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgdmFsdWVUb1Nl
dCA9IGl0LT5zZWNvbmQ7Ci19Ci0KLVRlc3RPcHRpb25zOjpUZXN0T3B0aW9ucyhUZXN0RmVhdHVy
ZXMgdGVzdEZlYXR1cmVzKQotewotICAgIHNldFZhbHVlSWZTZXRJbk1hcChhbGxvd0Nyb3NzT3Jp
Z2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscywgIkFsbG93Q3Jvc3NPcmlnaW5TdWJy
ZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJl
bmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChhbGxvd1RvcE5hdmlnYXRpb25U
b0RhdGFVUkxzLCAiQWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyIsIHRlc3RGZWF0dXJlcy5i
b29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxl
QWNjZWxlcmF0ZWREcmF3aW5nLCAiQWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCIsIHRlc3RGZWF0
dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAo
ZW5hYmxlQXR0YWNobWVudEVsZW1lbnQsICJBdHRhY2htZW50RWxlbWVudEVuYWJsZWQiLCB0ZXN0
RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldElu
TWFwKGVuYWJsZUJhY2tGb3J3YXJkQ2FjaGUsICJVc2VzQmFja0ZvcndhcmRDYWNoZSIsIHRlc3RG
ZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5N
YXAoZW5hYmxlQ29sb3JGaWx0ZXIsICJDb2xvckZpbHRlckVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMu
Ym9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJs
ZUluc3BlY3RvckFkZGl0aW9ucywgIkluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQiLCB0ZXN0RmVh
dHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFw
KGVuYWJsZUludGVyc2VjdGlvbk9ic2VydmVyLCAiSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbmFibGVk
IiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVl
SWZTZXRJbk1hcChlbmFibGVLZXlnZW5FbGVtZW50LCAiS2V5Z2VuRWxlbWVudEVuYWJsZWQiLCB0
ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNl
dEluTWFwKGVuYWJsZU1lbnVJdGVtRWxlbWVudCwgIk1lbnVJdGVtRWxlbWVudEVuYWJsZWQiLCB0
ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNl
dEluTWFwKGVuYWJsZU1vZGVybk1lZGlhQ29udHJvbHMsICJNb2Rlcm5NZWRpYUNvbnRyb2xzRW5h
YmxlZCIsIHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLQotICAgIHNl
dFZhbHVlSWZTZXRJbk1hcChlbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkLCAiZW5hYmxl
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCIsIHRlc3RGZWF0dXJlcy5ib29sVGVzdFJ1bm5lckZl
YXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJy
LCAiZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIiwgdGVzdEZlYXR1cmVzLmJvb2xUZXN0UnVubmVy
RmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChsYXllckJhY2tlZFdlYlZpZXcsICJs
YXllckJhY2tlZFdlYlZpZXciLCB0ZXN0RmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0dXJlcyk7
Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKHVzZUVwaGVtZXJhbFNlc3Npb24sICJ1c2VFcGhlbWVy
YWxTZXNzaW9uIiwgdGVzdEZlYXR1cmVzLmJvb2xUZXN0UnVubmVyRmVhdHVyZXMpOwotCi0gICAg
c2V0VmFsdWVJZlNldEluTWFwKGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLCAiYWRkaXRp
b25hbFN1cHBvcnRlZEltYWdlVHlwZXMiLCB0ZXN0RmVhdHVyZXMuc3RyaW5nVGVzdFJ1bm5lckZl
YXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoanNjT3B0aW9ucywgImpzY09wdGlvbnMi
LCB0ZXN0RmVhdHVyZXMuc3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVzKTsKLQotICAgIHNldFZhbHVl
SWZTZXRJbk1hcChlbmFibGVDU1NMb2dpY2FsLCAiQ1NTTG9naWNhbEVuYWJsZWQiLCB0ZXN0RmVh
dHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5h
YmxlTGluZUhlaWdodFVuaXRzLCAiTGluZUhlaWdodFVuaXRzRW5hYmxlZCIsIHRlc3RGZWF0dXJl
cy5pbnRlcm5hbERlYnVnRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVT
ZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzLCAic2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91
bmRhcmllc0VuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKTsKLSAg
ICBzZXRWYWx1ZUlmU2V0SW5NYXAobGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVu
YWJsZWQsICJMYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCIsIHRlc3RG
ZWF0dXJlcy5pbnRlcm5hbERlYnVnRmVhdHVyZXMpOwotCi0gICAgc2V0VmFsdWVJZlNldEluTWFw
KGFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQsICJBZENsaWNrQXR0cmlidXRpb25FbmFibGVkIiwg
dGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5N
YXAoZW5hYmxlQXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodCwgIkFzcGVjdFJhdGlv
T2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRh
bEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQXN5bmNDbGlwYm9hcmRB
UEksICJBc3luY0NsaXBib2FyZEFQSUVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJpbWVudGFs
RmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVDU1NPTVZpZXdTbW9vdGhT
Y3JvbGxpbmcsICJDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkIiwgdGVzdEZlYXR1cmVz
LmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQ29u
dGFjdFBpY2tlckFQSSwgIkNvbnRhY3RQaWNrZXJBUElFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4
cGVyaW1lbnRhbEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQ29yZU1h
dGhNTCwgIkNvcmVNYXRoTUxFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1
cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlUmVxdWVzdElkbGVDYWxsYmFjaywg
IlJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZl
YXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlUmVzaXplT2JzZXJ2ZXIsICJS
ZXNpemVPYnNlcnZlckVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMp
OwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVXZWJHUFUsICJXZWJHUFVFbmFibGVkIiwg
dGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKKyAgICBpZiAoaXQgIT0gbWFwLmVu
ZCgpKQorICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKKyAgICByZXR1cm4gZGVmYXVsdFZhbHVl
OworfQorCitib29sIFRlc3RPcHRpb25zOjpib29sVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZShzdGQ6
OnN0cmluZyBrZXksIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdAoreworICAgIHJldHVybiBmZWF0
dXJlVmFsdWUoa2V5LCBkZWZhdWx0VmFsdWUsIG1fZmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0
dXJlcyk7CiB9CiAKLWJvb2wgVGVzdE9wdGlvbnM6OndlYlZpZXdJc0NvbXBhdGlibGVXaXRoT3B0
aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3RoZXIpIGNvbnN0CitzdGQ6OnN0cmluZyBUZXN0T3B0
aW9uczo6c3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZShzdGQ6OnN0cmluZyBrZXksIHN0ZDo6
c3RyaW5nIGRlZmF1bHRWYWx1ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gb3RoZXIubGF5ZXJCYWNr
ZWRXZWJWaWV3ID09IGxheWVyQmFja2VkV2ViVmlldwotICAgICAgICAmJiBvdGhlci5qc2NPcHRp
b25zID09IGpzY09wdGlvbnM7CisgICAgcmV0dXJuIGZlYXR1cmVWYWx1ZShrZXksIGRlZmF1bHRW
YWx1ZSwgbV9mZWF0dXJlcy5zdHJpbmdUZXN0UnVubmVyRmVhdHVyZXMpOwogfQogCiB9CkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmgJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDUzICsz
MSwzOSBAQAogCiBuYW1lc3BhY2UgV1RSIHsKIAotc3RydWN0IFRlc3RPcHRpb25zIHsKLSAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoZXNlIGFuZCByZXBsYWNlIHdpdGggYWNjZXNzIHRvIFRlc3RGZWF0
dXJlcyBzZXQuCi0gICAgLy8gV2ViIFByZWZlcmVuY2VzCi0gICAgYm9vbCBhbGxvd0Nyb3NzT3Jp
Z2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyB7IGZhbHNlIH07Ci0gICAgYm9vbCBh
bGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzIHsgdHJ1ZSB9OwotICAgIGJvb2wgZW5hYmxlQWNj
ZWxlcmF0ZWREcmF3aW5nIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUF0dGFjaG1lbnRFbGVt
ZW50IHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUJhY2tGb3J3YXJkQ2FjaGUgeyBmYWxzZSB9
OwotICAgIGJvb2wgZW5hYmxlQ29sb3JGaWx0ZXIgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxl
SW5zcGVjdG9yQWRkaXRpb25zIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUludGVyc2VjdGlv
bk9ic2VydmVyIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUtleWdlbkVsZW1lbnQgeyBmYWxz
ZSB9OwotICAgIGJvb2wgZW5hYmxlTWVudUl0ZW1FbGVtZW50IHsgZmFsc2UgfTsKLSAgICBib29s
IGVuYWJsZU1vZGVybk1lZGlhQ29udHJvbHMgeyB0cnVlIH07Ci0KLSAgICAvLyBGSVhNRTogUmVt
b3ZlIHRoZXNlIGFuZCByZXBsYWNlIHdpdGggYWNjZXNzIHRvIFRlc3RGZWF0dXJlcyBzZXQuCi0g
ICAgLy8gSW50ZXJuYWwgRmVhdHVyZXMKLSAgICBib29sIGVuYWJsZUNTU0xvZ2ljYWwgeyBmYWxz
ZSB9OwotICAgIGJvb2wgZW5hYmxlTGluZUhlaWdodFVuaXRzIHsgZmFsc2UgfTsKLSAgICBib29s
IGVuYWJsZVNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXMgeyB0cnVlIH07Ci0gICAgYm9v
bCBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCB7IHRydWUgfTsKLQot
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlc2UgYW5kIHJlcGxhY2Ugd2l0aCBhY2Nlc3MgdG8gVGVz
dEZlYXR1cmVzIHNldC4KLSAgICAvLyBFeHBlcmltZW50YWwgRmVhdHVyZXMKLSAgICBib29sIGFk
Q2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQXNwZWN0
UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVB
c3luY0NsaXBib2FyZEFQSSB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVDU1NPTVZpZXdTbW9v
dGhTY3JvbGxpbmcgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQ29udGFjdFBpY2tlckFQSSB7
IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVDb3JlTWF0aE1MIHsgZmFsc2UgfTsKLSAgICBib29s
IGVuYWJsZVJlcXVlc3RJZGxlQ2FsbGJhY2sgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlUmVz
aXplT2JzZXJ2ZXIgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlV2ViR1BVIHsgZmFsc2UgfTsK
K2NsYXNzIFRlc3RPcHRpb25zIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVGVzdEZlYXR1
cmVzJiBkZWZhdWx0cygpOworICAgIHN0YXRpYyBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3Rk
OjpzdHJpbmcsIFRlc3RIZWFkZXJLZXlUeXBlPiYga2V5VHlwZU1hcHBpbmcoKTsKIAotICAgIC8v
IFRlc3QgUnVubmVyIFNwZWNpZmljIEZlYXR1cmVzCi0gICAgYm9vbCBkdW1wSlNDb25zb2xlTG9n
SW5TdGRFcnIgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
TG9hZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVXZWJTUUwgeyB0cnVlIH07Ci0gICAgYm9v
bCBsYXllckJhY2tlZFdlYlZpZXcgeyBmYWxzZSB9OwotICAgIGJvb2wgdXNlRXBoZW1lcmFsU2Vz
c2lvbiB7IGZhbHNlIH07Ci0gICAgc3RkOjpzdHJpbmcgYWRkaXRpb25hbFN1cHBvcnRlZEltYWdl
VHlwZXM7Ci0gICAgc3RkOjpzdHJpbmcganNjT3B0aW9uczsKKyAgICBleHBsaWNpdCBUZXN0T3B0
aW9ucyhUZXN0RmVhdHVyZXMgZmVhdHVyZXMpCisgICAgICAgIDogbV9mZWF0dXJlcyhzdGQ6Om1v
dmUoZmVhdHVyZXMpKQorICAgIHsKKyAgICB9CiAKLSAgICBleHBsaWNpdCBUZXN0T3B0aW9ucyhU
ZXN0RmVhdHVyZXMpOwogICAgIGJvb2wgd2ViVmlld0lzQ29tcGF0aWJsZVdpdGhPcHRpb25zKGNv
bnN0IFRlc3RPcHRpb25zJikgY29uc3Q7Ci0gICAgCi0gICAgc3RhdGljIGNvbnN0IHN0ZDo6dW5v
cmRlcmVkX21hcDxzdGQ6OnN0cmluZywgVGVzdEhlYWRlcktleVR5cGU+JiBrZXlUeXBlTWFwcGlu
ZygpOworCisgICAgLy8gVGVzdCBSdW5uZXIgU3BlY2lmaWMgRmVhdHVyZXMKKyAgICBib29sIGR1
bXBKU0NvbnNvbGVMb2dJblN0ZEVycigpIGNvbnN0IHsgcmV0dXJuIGJvb2xUZXN0UnVubmVyRmVh
dHVyZVZhbHVlKCJkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIiLCBmYWxzZSk7IH0KKyAgICBib29s
IGVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQoKSBjb25zdCB7IHJldHVybiBib29sVGVz
dFJ1bm5lckZlYXR1cmVWYWx1ZSgiZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCIsIGZh
bHNlKTsgfQorICAgIGJvb2wgbGF5ZXJCYWNrZWRXZWJWaWV3KCkgY29uc3QgeyByZXR1cm4gYm9v
bFRlc3RSdW5uZXJGZWF0dXJlVmFsdWUoImxheWVyQmFja2VkV2ViVmlldyIsIGZhbHNlKTsgfQor
ICAgIGJvb2wgdXNlRXBoZW1lcmFsU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGJvb2xUZXN0UnVu
bmVyRmVhdHVyZVZhbHVlKCJ1c2VFcGhlbWVyYWxTZXNzaW9uIiwgZmFsc2UpOyB9CisgICAgc3Rk
OjpzdHJpbmcgYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMoKSBjb25zdCB7IHJldHVybiBz
dHJpbmdUZXN0UnVubmVyRmVhdHVyZVZhbHVlKCJhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBl
cyIsIHsgfSk7IH0KKyAgICBzdGQ6OnN0cmluZyBqc2NPcHRpb25zKCkgY29uc3QgeyByZXR1cm4g
c3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZSgianNjT3B0aW9ucyIsIHsgfSk7IH0KKworICAg
IGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgYm9vbD4mIGJvb2xXZWJQcmVm
ZXJlbmNlRmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzLmJvb2xXZWJQcmVmZXJl
bmNlRmVhdHVyZXM7IH0KKyAgICBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcs
IGRvdWJsZT4mIGRvdWJsZVdlYlByZWZlcmVuY2VGZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1f
ZmVhdHVyZXMuZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzOyB9CisgICAgY29uc3Qgc3RkOjp1
bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCB1aW50MzJfdD4mIHVpbnQzMldlYlByZWZlcmVuY2VG
ZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMudWludDMyV2ViUHJlZmVyZW5jZUZl
YXR1cmVzOyB9CisgICAgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBzdGQ6
OnN0cmluZz4mIHN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1f
ZmVhdHVyZXMuc3RyaW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzOyB9CisKKyAgICBzdGF0aWMgc3Rk
OjpzdHJpbmcgdG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGNvbnN0IHN0ZDo6c3RyaW5nJik7
CisKK3ByaXZhdGU6CisgICAgYm9vbCBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZShzdGQ6
OnN0cmluZyBrZXksIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdDsKKyAgICBib29sIGJvb2xUZXN0
UnVubmVyRmVhdHVyZVZhbHVlKHN0ZDo6c3RyaW5nIGtleSwgYm9vbCBkZWZhdWx0VmFsdWUpIGNv
bnN0OworICAgIHN0ZDo6c3RyaW5nIHN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlVmFsdWUoc3RkOjpz
dHJpbmcga2V5LCBzdGQ6OnN0cmluZyBkZWZhdWx0VmFsdWUpIGNvbnN0OworCisgICAgVGVzdEZl
YXR1cmVzIG1fZmVhdHVyZXM7CiB9OwogCiB9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9E
dW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsx
MDksNyBAQAogCQk1REI5QUM5RTBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2VpZ2h0V2F0Y2hl
cjcwMC50dGYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDM3NUYwOTc3MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyNzAw
LnR0ZiAqLzsgfTsKIAkJNURCOUFDOUYwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktpdFdlaWdodFdh
dGNoZXI4MDAudHRmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzNzVGMDk3ODBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hl
cjgwMC50dGYgKi87IH07CiAJCTVEQjlBQ0EwMEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWln
aHRXYXRjaGVyOTAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzc1RjA5NzkwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdh
dGNoZXI5MDAudHRmICovOyB9OworCQk3QzRGMzA0MDI1M0I5NzBGMDAzMDU0NTggLyogVGVzdE9w
dGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNEYzMDNGMjUzQjgzNjkwMDMwNTQ1OCAv
KiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwICovOyB9Owog
CQk3Q0ZGOUJCRjI1MzNCQjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRkY5QkJFMjUzM0JCMjQwMDA4
MDA5RiAvKiBUZXN0RmVhdHVyZXMuY3BwICovOyB9OwogCQk3Q0ZGOUJDMjI1MzNCQzE2MDAwODAw
OUYgLyogVGVzdENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0NGRjlCQzEyNTMzQkMxNjAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmNwcCAq
LzsgfTsKIAkJODAwNDVBRUUxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODAwNDVBRUMxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyLm1tICovOyB9OwpAQCAtMzMzLDggKzMzNCwxMiBAQAogCQk3QzQ0Njk3RjI1Mzc3
QTAyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFRlc3RP
cHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0M0NDY5ODAyNTM3N0EwMjAwMjQyOTBBIC8qIGNoZWNrLXhjZmlsZWxpc3RzLnNoICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQuc2g7
IHBhdGggPSAiY2hlY2steGNmaWxlbGlzdHMuc2giOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzQ0Njk4MTI1Mzc3QTAyMDAyNDI5MEEgLyogZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2Vz
LnNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5zY3JpcHQuc2g7IHBhdGggPSAiZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzLnNoIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M0NDY5ODUyNTM3N0U1MjAwMjQyOTBBIC8qIFRlc3RP
cHRpb25zR2VuZXJhdGVkS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXN0T3B0aW9uc0dlbmVyYXRl
ZEtleXMuaDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzRGMzAzRjI1M0I4MzY5MDAzMDU0NTgg
LyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDOUUyNTBCMjUzQjc5NEEwMDQxMzAx
OCAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NCQkMzMjIxRERGQ0Y5QTAwNzg2QjlEIC8q
IFRlc3RPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RPcHRp
b25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDQ0JBNTFEMjUzQkI5RDMwMEJC
MzJDMSAvKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0ICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2ZpbGVsaXN0OyBwYXRoID0g
IkRlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3Q0NCQTUxRTI1M0JCOUQzMDBCQjMyQzEgLyogRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnhjZmlsZWxpc3Q7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0ZGOUJCRDI1MzNCQjI0MDAw
ODAwOUYgLyogVGVzdEZlYXR1cmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RGZWF0dXJlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0ZGOUJCRTI1MzNCQjI0MDAwODAwOUYgLyog
VGVzdEZlYXR1cmVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlc3RGZWF0dXJlcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRkY5QkMwMjUzM0JDMTYwMDA4MDA5RiAvKiBU
ZXN0Q29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0Q29tbWFuZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTAxLDYgKzUwNiw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCTBGMThFNkYxMUQ2QjlDNjQwMDI3RTU0NyAvKiBEZXJpdmVkU291
cmNlcy5tYWtlICovLAorCQkJCTdDQ0JBNTFEMjUzQkI5RDMwMEJCMzJDMSAvKiBEZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0ICovLAorCQkJCTdDQ0JBNTFFMjUzQkI5RDMwMEJCMzJDMSAv
KiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCAqLywKIAkJCQk3QzQ0Njk4MjI1Mzc3
QzM0MDAyNDI5MEEgLyogRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTMxNDhBMDY1MUU2RjkwRjQw
MEQzQjMxNiAvKiBUZXN0UnVubmVyU2hhcmVkICovLAogCQkJCTBGMThFNkU3MUQ2QjlCRjUwMDI3
RTU0NyAvKiBVSVNjcmlwdENvbnRleHQgKi8sCkBAIC03NzAsNiArNzc3LDcgQEAKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJN0M0NDY5N0YyNTM3N0EwMjAwMjQyOTBB
IC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYiAqLywKKwkJCQk3QzlFMjUwQjI1M0I3
OTRBMDA0MTMwMTggLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5n
LmNwcC5lcmIgKi8sCiAJCQkpOwogCQkJcGF0aCA9IFByZWZlcmVuY2VzVGVtcGxhdGVzOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTc3OCw2ICs3ODYsNyBAQAogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk3QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5MEEgLyog
VGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmggKi8sCisJCQkJN0M0RjMwM0YyNTNCODM2OTAwMzA1
NDU4IC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgKi8s
CiAJCQkpOwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQkJcGF0aCA9IERlcml2ZWRT
b3VyY2VzL0R1bXBSZW5kZXJUcmVlOwpAQCAtMTI5MSw2ICsxMzAwLDcgQEAKIAkJCQk3Q0ZGOUJD
MjI1MzNCQzE2MDAwODAwOUYgLyogVGVzdENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0NGRjlCQkYyNTMzQkIyNDAwMDgwMDlGIC8qIFRlc3RGZWF0dXJlcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBMzBBMjFGODIwNTFEOEM0MDAwOEZGNDIgLyogVGVzdE9wdGlvbnMuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJN0M0RjMwNDAyNTNCOTcwRjAwMzA1NDU4IC8qIFRlc3RPcHRpb25zR2Vu
ZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzAx
MzFEQTBDOTc3MjAxMDA4NzMxN0QgLyogVGVzdFJ1bm5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQ0ExOEIyNDBDOUIwMTRCMDAxMTQzNjkgLyogVGVzdFJ1bm5lck1hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUY0RDQyMzYxMURENTA0ODIwMDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVy
SU9TLm0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1NjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0
ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRp
b25zR2VuZXJhdGVkS2V5cy5oLmVyYgkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAog
I3ByYWdtYSBvbmNlCiAKICNkZWZpbmUgR0VORVJBVEVEX1dFQl9QUkVGRVJFTkNFX0tFWV9UWVBF
X01BUFBJTkdTIFwKLTwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzIGRvIC0lPgorPCUtIGZv
ciBAcHJlZiBpbiBAcHJlZmVyZW5jZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3NlZCB9ICBkbyAtJT4K
ICAgICB7ICI8JT0gQHByZWYubmFtZSAlPiIsIFRlc3RIZWFkZXJLZXlUeXBlOjo8JT0gQHByZWYu
dHlwZVVwcGVyICU+V2ViUHJlZmVyZW5jZSB9LCBcCiA8JS0gZW5kIC0lPgogXApJbmRleDogVG9v
bHMvRHVtcFJlbmRlclRyZWUvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9u
c0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9EdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRp
b25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiCShub25leGlzdGVudCkK
KysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVz
dE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIDwlPSBAd2FybmluZyAlPgorICoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0T3B0aW9ucy5oIgorCituYW1l
c3BhY2UgV1RSIHsKKworc3RkOjpzdHJpbmcgVGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJl
ZmVyZW5jZUtleShjb25zdCBzdGQ6OnN0cmluZyYgd2ViUHJlZmVyZW5jZXNLZXkpCit7CisgICAg
c3RhdGljIHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IG5vblN0
YW5kYXJkS2V5cyA9IHsKKzwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzLnNlbGVjdCB7IHxw
fCBwLm9wdHNbIndlYktpdExlZ2FjeVByZWZlcmVuY2VLZXkiXSB9IGRvIC0lPgorICAgICAgICB7
ICI8JT0gQHByZWYubmFtZSAlPiIsICI8JT0gQHByZWYucHJlZmVyZW5jZUtleSAlPiIgfSwgXAor
PCUtIGVuZCAtJT4KKyAgICB9OworCisgICAgYXV0byBpdCA9IG5vblN0YW5kYXJkS2V5cy5maW5k
KHdlYlByZWZlcmVuY2VzS2V5KTsKKyAgICBpZiAoaXQgIT0gbm9uU3RhbmRhcmRLZXlzLmVuZCgp
KQorICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKKworICAgIHJldHVybiAiV2ViS2l0IiArIHdl
YlByZWZlcmVuY2VzS2V5OworfQorCit9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RHVtcFJlbmRlclRyZWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlLm1tCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyOSw3ICsxMjks
MTAgQEAgZXh0ZXJuICJDIiB7CiAjaW1wb3J0IDxtYWNoLW8vZ2V0c2VjdC5oPgogfQogCi11c2lu
ZyBuYW1lc3BhY2Ugc3RkOworc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4gdG9OUyhjb25zdCBz
dGQ6OnN0cmluZyYgc3RyaW5nKQoreworICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxs
b2NdIGluaXRXaXRoVVRGOFN0cmluZzpzdHJpbmcuY19zdHIoKV0pOworfQogCiAjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiBAaW50ZXJmYWNlIER1bXBSZW5kZXJUcmVlQXBwbGljYXRpb24gOiBO
U0FwcGxpY2F0aW9uCkBAIC0xNzcsNyArMTgwLDcgQEAgLSAoV2ViQ29yZTo6RnJhbWUqKV9tYWlu
Q29yZUZyYW1lOwogQGVuZAogI2VuZGlmCiAKLXN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3Ry
aW5nJiB0ZXN0VVJMKTsKK3N0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIHRl
c3RVUkwpOwogCiAvLyBEZWNpZGluZyB3aGVuIGl0J3MgT0sgdG8gZHVtcCBvdXQgdGhlIHN0YXRl
IGlzIGEgYml0IHRyaWNreS4gIEFsbCB0aGVzZSBtdXN0IGJlIHRydWU6CiAvLyAtIFRoZXJlIGlz
IG5vIGxvYWQgaW4gcHJvZ3Jlc3MKQEAgLTI0OCw3ICsyNTEsNyBAQCB2b2lkIHNldFBlcnNpc3Rl
bnRVc2VyU3R5bGVTaGVldExvY2F0aW9uCiAgICAgcGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9j
YXRpb24gPSB1cmw7CiB9CiAKLXN0YXRpYyBib29sIHNob3VsZElnbm9yZVdlYkNvcmVOb2RlTGVh
a3MoY29uc3Qgc3RyaW5nJiB1cmxTdHJpbmcpCitzdGF0aWMgYm9vbCBzaG91bGRJZ25vcmVXZWJD
b3JlTm9kZUxlYWtzKGNvbnN0IHN0ZDo6c3RyaW5nJiB1cmxTdHJpbmcpCiB7CiAgICAgc3RhdGlj
IGNoYXIqIGNvbnN0IGlnbm9yZVNldFtdID0gewogICAgICAgICAvLyBLZWVwaW5nIHRoaXMgaW5m
cmFzdHJ1Y3R1cmUgYXJvdW5kIGluIGNhc2Ugd2UgZXZlciBuZWVkIGl0IGFnYWluLgpAQCAtMjU3
LDcgKzI2MCw3IEBAIHN0YXRpYyBib29sIHNob3VsZElnbm9yZVdlYkNvcmVOb2RlTGVha3MKIAog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaWdub3JlU2V0Q291bnQ7IGkrKykgewogICAgICAgICAv
LyBGSVhNRTogaWdub3JlIGNhc2UKLSAgICAgICAgc3RyaW5nIGN1cklnbm9yZShpZ25vcmVTZXRb
aV0pOworICAgICAgICBzdGQ6OnN0cmluZyBjdXJJZ25vcmUoaWdub3JlU2V0W2ldKTsKICAgICAg
ICAgLy8gTWF0Y2ggYXQgdGhlIGVuZCBvZiB0aGUgdXJsU3RyaW5nLgogICAgICAgICBpZiAoIXVy
bFN0cmluZy5jb21wYXJlKHVybFN0cmluZy5sZW5ndGgoKSAtIGN1cklnbm9yZS5sZW5ndGgoKSwg
Y3VySWdub3JlLmxlbmd0aCgpLCBjdXJJZ25vcmUpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC02MTUsOCArNjE4LDggQEAgLSAoTlNSZWN0KXJlY3RGb3JQYXJ0OihOU1Njcm9sbGVyUGFy
dClwYQogICAgIEJPT0wgaXNIb3Jpem9udGFsID0gZnJhbWVSZWN0LnNpemUud2lkdGggPiBmcmFt
ZVJlY3Quc2l6ZS5oZWlnaHQ7CiAgICAgQ0dGbG9hdCB0cmFja0xlbmd0aCA9IGlzSG9yaXpvbnRh
bCA/IGJvdW5kcy5zaXplLndpZHRoIDogYm91bmRzLnNpemUuaGVpZ2h0OwogICAgIENHRmxvYXQg
bWluS25vYlNpemUgPSBpc0hvcml6b250YWwgPyBib3VuZHMuc2l6ZS5oZWlnaHQgOiBib3VuZHMu
c2l6ZS53aWR0aDsKLSAgICBDR0Zsb2F0IGtub2JMZW5ndGggPSBtYXgobWluS25vYlNpemUsIHN0
YXRpY19jYXN0PENHRmxvYXQ+KHJvdW5kKHRyYWNrTGVuZ3RoICogW3NlbGYga25vYlByb3BvcnRp
b25dKSkpOwotICAgIENHRmxvYXQga25vYlBvc2l0aW9uID0gc3RhdGljX2Nhc3Q8Q0dGbG9hdD4o
KHJvdW5kKFtzZWxmIGRvdWJsZVZhbHVlXSAqICh0cmFja0xlbmd0aCAtIGtub2JMZW5ndGgpKSkp
OworICAgIENHRmxvYXQga25vYkxlbmd0aCA9IHN0ZDo6bWF4KG1pbktub2JTaXplLCBzdGF0aWNf
Y2FzdDxDR0Zsb2F0PihzdGQ6OnJvdW5kKHRyYWNrTGVuZ3RoICogW3NlbGYga25vYlByb3BvcnRp
b25dKSkpOworICAgIENHRmxvYXQga25vYlBvc2l0aW9uID0gc3RhdGljX2Nhc3Q8Q0dGbG9hdD4o
KHN0ZDo6cm91bmQoW3NlbGYgZG91YmxlVmFsdWVdICogKHRyYWNrTGVuZ3RoIC0ga25vYkxlbmd0
aCkpKSk7CiAKICAgICBpZiAoaXNIb3Jpem9udGFsKQogICAgICAgICByZXR1cm4gTlNNYWtlUmVj
dChib3VuZHMub3JpZ2luLnggKyBrbm9iUG9zaXRpb24sIGJvdW5kcy5vcmlnaW4ueSwga25vYkxl
bmd0aCwgYm91bmRzLnNpemUuaGVpZ2h0KTsKQEAgLTY3Miw2ICs2NzUsMTAgQEAgV2ViVmlldyAq
Y3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdwogICAgIFt3ZWJWaWV3IHNldEdyb3VwTmFt
ZTpAIm9yZy53ZWJraXQuRHVtcFJlbmRlclRyZWUiXTsKICNlbmRpZgogCisgICAgV2ViUHJlZmVy
ZW5jZXMgKnByZWZlcmVuY2VzID0gW1tXZWJQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF07CisgICAg
W3ByZWZlcmVuY2VzIHNldEF1dG9zYXZlczpOT107CisgICAgW3dlYlZpZXcgc2V0UHJlZmVyZW5j
ZXM6cHJlZmVyZW5jZXNdOworCiAgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTp1aURlbGVnYXRl
XTsKICAgICBbd2ViVmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpmcmFtZUxvYWREZWxlZ2F0ZV07
CiAgICAgW3dlYlZpZXcgc2V0RWRpdGluZ0RlbGVnYXRlOmVkaXRpbmdEZWxlZ2F0ZV07CkBAIC02
ODUsOCArNjkyLDYgQEAgV2ViVmlldyAqY3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdwog
ICAgIFtXZWJWaWV3IHJlZ2lzdGVyVVJMU2NoZW1lQXNMb2NhbDpAImZlZWRzIl07CiAgICAgW1dl
YlZpZXcgcmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsOkAiZmVlZHNlYXJjaCJdOwogCi0gICAgW1t3
ZWJWaWV3IHByZWZlcmVuY2VzXSBfc2V0TWVkaWFSZWNvcmRlckVuYWJsZWQ6WUVTXTsKLQogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBbd2ViVmlldyBzZXRXaW5kb3dPY2NsdXNpb25EZXRlY3Rpb25F
bmFibGVkOk5PXTsKICAgICBbV2ViVmlldyBfc2V0Rm9udEFsbG93TGlzdDpmb250QWxsb3dMaXN0
KCldOwpAQCAtODQ0LDkgKzg0OSw4IEBAIHN0YXRpYyB2b2lkIGVuYWJsZUV4cGVyaW1lbnRhbEZl
YXR1cmVzKFcKIH0KIAogLy8gQ2FsbGVkIGJlZm9yZSBlYWNoIHRlc3QuCi1zdGF0aWMgdm9pZCBy
ZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKCkKK3N0YXRpYyB2b2lkIHJlc2V0
V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVu
Y2VzKQogewotICAgIFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtXZWJQcmVmZXJlbmNl
cyBzdGFuZGFyZFByZWZlcmVuY2VzXTsKICAgICBlbmFibGVFeHBlcmltZW50YWxGZWF0dXJlcyhw
cmVmZXJlbmNlcyk7CiAKICAgICBbcHJlZmVyZW5jZXMgc2V0TmVlZHNTdG9yYWdlQWNjZXNzRnJv
bUZpbGVVUkxzUXVpcms6IE5PXTsKQEAgLTkwMiw2ICs5MDYsNyBAQCBzdGF0aWMgdm9pZCByZXNl
dFdlYlByZWZlcmVuY2VzVG9Db25zaXN0CiAgICAgfSBlbHNlCiAgICAgICAgIFtwcmVmZXJlbmNl
cyBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQ6Tk9dOwogCisgICAgW3ByZWZlcmVuY2VzIHNldElu
bGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRlOk5PXTsKICAgICBb
cHJlZmVyZW5jZXMgc2V0TWVkaWFQbGF5YmFja0FsbG93c0lubGluZTpZRVNdOwogICAgIFtwcmVm
ZXJlbmNlcyBzZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZTpOT107CiAgICAgW3By
ZWZlcmVuY2VzIHNldFZpZGVvUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlOk5PXTsKQEAgLTky
OCw5ICs5MzMsOCBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0CiAj
ZW5kaWYKICAgICBbcHJlZmVyZW5jZXMgc2V0VXNlUHJlSFRNTDVQYXJzZXJRdWlya3M6Tk9dOwog
ICAgIFtwcmVmZXJlbmNlcyBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZDpOT107
Ci0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgQVNTRVJUKFtwcmVmZXJlbmNlcyBtb2Nr
U2Nyb2xsYmFyc0VuYWJsZWRdKTsKLSNlbmRpZgorCisgICAgW3ByZWZlcmVuY2VzIHNldE1vY2tT
Y3JvbGxiYXJzRW5hYmxlZDpZRVNdOwogCiAgICAgW3ByZWZlcmVuY2VzIHNldFdlYkF1ZGlvRW5h
YmxlZDpZRVNdOwogICAgIFtwcmVmZXJlbmNlcyBzZXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9F
bmFibGVkOllFU107CkBAIC05NjAsNiArOTY0LDcgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVm
ZXJlbmNlc1RvQ29uc2lzdAogICAgIHByZWZlcmVuY2VzLm1lZGlhQ2FwYWJpbGl0aWVzRW5hYmxl
ZCA9IFlFUzsKIAogICAgIHByZWZlcmVuY2VzLnNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJp
ZXNFbmFibGVkID0gWUVTOworICAgIHByZWZlcmVuY2VzLmZ1bGxTY3JlZW5FbmFibGVkID0gWUVT
OwogCiAgICAgW3ByZWZlcmVuY2VzIHNldFdlYlNRTEVuYWJsZWQ6WUVTXTsKIApAQCAtOTY3LDM0
ICs5NzIsMjEgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdAogICAg
IFtXZWJQcmVmZXJlbmNlcyBfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNj
ZXB0UG9saWN5Ok5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9t
YWluXTsKIH0KIAotc3RhdGljIHZvaWQgc2V0V2ViUHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9ucyhj
b25zdCBXVFI6OlRlc3RPcHRpb25zJiBvcHRpb25zKQorc3RhdGljIHZvaWQgc2V0V2ViUHJlZmVy
ZW5jZXNGb3JUZXN0T3B0aW9ucyhXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMsIGNvbnN0IFdU
Ujo6VGVzdE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVu
Y2VzID0gW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdOworICAgIHByZWZlcmVu
Y2VzLnByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBvcHRpb25zLnVzZUVwaGVtZXJhbFNlc3Npb24o
KTsKKworICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5ib29sV2Vi
UHJlZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0Qm9vbFByZWZl
cmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnZhbHVlIGZvcktleTp0b05TKFdUUjo6VGVzdE9wdGlv
bnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShrZXkpKS5nZXQoKV07CisKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuZG91YmxlV2ViUHJlZmVyZW5jZUZl
YXR1cmVzKCkpCisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0RG91YmxlUHJlZmVyZW5jZUZvclRl
c3RpbmdXaXRoVmFsdWU6dmFsdWUgZm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJL
aXRMZWdhY3lQcmVmZXJlbmNlS2V5KGtleSkpLmdldCgpXTsKIAotICAgIHByZWZlcmVuY2VzLmF0
dGFjaG1lbnRFbGVtZW50RW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlQXR0YWNobWVudEVsZW1lbnQ7
Ci0gICAgcHJlZmVyZW5jZXMuYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCA9IG9wdGlvbnMuZW5h
YmxlQWNjZWxlcmF0ZWREcmF3aW5nOwotICAgIHByZWZlcmVuY2VzLm1lbnVJdGVtRWxlbWVudEVu
YWJsZWQgPSBvcHRpb25zLmVuYWJsZU1lbnVJdGVtRWxlbWVudDsKLSAgICBwcmVmZXJlbmNlcy5r
ZXlnZW5FbGVtZW50RW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlS2V5Z2VuRWxlbWVudDsKLSAgICBw
cmVmZXJlbmNlcy5tb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlTW9k
ZXJuTWVkaWFDb250cm9sczsKLSAgICBwcmVmZXJlbmNlcy5pbnNwZWN0b3JBZGRpdGlvbnNFbmFi
bGVkID0gb3B0aW9ucy5lbmFibGVJbnNwZWN0b3JBZGRpdGlvbnM7Ci0gICAgcHJlZmVyZW5jZXMu
YWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMgPSBvcHRpb25z
LmFsbG93Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzOwotICAgIHBy
ZWZlcmVuY2VzLmNvbG9yRmlsdGVyRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlQ29sb3JGaWx0ZXI7
Ci0gICAgcHJlZmVyZW5jZXMuc2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllc0VuYWJsZWQg
PSBvcHRpb25zLmVuYWJsZVNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXM7Ci0gICAgcHJl
ZmVyZW5jZXMud2ViR1BVRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlV2ViR1BVOwotICAgIHByZWZl
cmVuY2VzLkNTU0xvZ2ljYWxFbmFibGVkID0gb3B0aW9ucy5lbmFibGVDU1NMb2dpY2FsOwotICAg
IHByZWZlcmVuY2VzLmxpbmVIZWlnaHRVbml0c0VuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUxpbmVI
ZWlnaHRVbml0czsKLSAgICBwcmVmZXJlbmNlcy5hZENsaWNrQXR0cmlidXRpb25FbmFibGVkID0g
b3B0aW9ucy5hZENsaWNrQXR0cmlidXRpb25FbmFibGVkOwotICAgIHByZWZlcmVuY2VzLnJlc2l6
ZU9ic2VydmVyRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlUmVzaXplT2JzZXJ2ZXI7Ci0gICAgcHJl
ZmVyZW5jZXMuQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxl
Q1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nOwotICAgIHByZWZlcmVuY2VzLmNvcmVNYXRoTUxFbmFi
bGVkID0gb3B0aW9ucy5lbmFibGVDb3JlTWF0aE1MOwotICAgIHByZWZlcmVuY2VzLnJlcXVlc3RJ
ZGxlQ2FsbGJhY2tFbmFibGVkID0gb3B0aW9ucy5lbmFibGVSZXF1ZXN0SWRsZUNhbGxiYWNrOwot
ICAgIHByZWZlcmVuY2VzLmFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxl
QXN5bmNDbGlwYm9hcmRBUEk7Ci0gICAgcHJlZmVyZW5jZXMucHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCA9IG9wdGlvbnMudXNlRXBoZW1lcmFsU2Vzc2lvbjsKLSAgICBwcmVmZXJlbmNlcy51c2VzUGFn
ZUNhY2hlID0gb3B0aW9ucy5lbmFibGVCYWNrRm9yd2FyZENhY2hlOwotICAgIHByZWZlcmVuY2Vz
LmxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkID0gb3B0aW9ucy5sYXlv
dXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZDsKLSAgICBwcmVmZXJlbmNlcy5h
c3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxl
QXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodDsKLSAgICBwcmVmZXJlbmNlcy5hbGxv
d1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzID0gb3B0aW9ucy5hbGxvd1RvcE5hdmlnYXRpb25Ub0Rh
dGFVUkxzOwotICAgIHByZWZlcmVuY2VzLmNvbnRhY3RQaWNrZXJBUElFbmFibGVkID0gb3B0aW9u
cy5lbmFibGVDb250YWN0UGlja2VyQVBJOworICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFs
dWVdIDogb3B0aW9ucy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAgICAgW3By
ZWZlcmVuY2VzIF9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZSBm
b3JLZXk6dG9OUyhXVFI6OlRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVuY2VLZXko
a2V5KSkuZ2V0KCldOworCisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRp
b25zLnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcygpKQorICAgICAgICBbcHJlZmVyZW5jZXMg
X3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnRvTlModmFsdWUpLmdldCgp
IGZvcktleTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtl
eShrZXkpKS5nZXQoKV07CiB9CiAKIC8vIENhbGxlZCBvbmNlIG9uIER1bXBSZW5kZXJUcmVlIHN0
YXJ0dXAuCkBAIC0xMDE4LDkgKzEwMTAsNiBAQCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0c1RvQ29u
c2lzdGVudFZhbHVlCiAgICAgICAgIEAiQXBwbGVPdGhlckhpZ2hsaWdodENvbG9yIjpAIjAuNTAw
MDAwIDAuNTAwMDAwIDAuNTAwMDAwIiwKICAgICAgICAgQCJBcHBsZUxhbmd1YWdlcyI6IEBbIEAi
ZW4iIF0sCiAgICAgICAgIFdlYktpdEVuYWJsZUZ1bGxEb2N1bWVudFRlYXJkb3duUHJlZmVyZW5j
ZUtleTogQFlFUywKLSAgICAgICAgV2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5
OiBAWUVTLAotICAgICAgICBXZWJLaXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrUHJlZmVyZW5j
ZUtleTogQFlFUywKLSAgICAgICAgV2ViS2l0SW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxh
eXNJbmxpbmVBdHRyaWJ1dGVLZXk6IEBOTywKICAgICAgICAgQCJVc2VXZWJLaXRXZWJJbnNwZWN0
b3IiOiBAWUVTLAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBAIk5TUHJlZmVy
cmVkU3BlbGxTZXJ2ZXJMYW5ndWFnZSI6IEAiZW5fVVMiLApAQCAtMTQzMSw3ICsxNDIwLDcgQEAg
c3RhdGljIE5TSW50ZWdlciBjb21wYXJlSGlzdG9yeUl0ZW1zKGlkIAogCiBzdGF0aWMgTlNEYXRh
ICpkdW1wQXVkaW8oKQogewotICAgIGNvbnN0IHZlY3RvcjxjaGFyPiYgZGF0YVZlY3RvciA9IGdU
ZXN0UnVubmVyLT5hdWRpb1Jlc3VsdCgpOworICAgIGNvbnN0IGF1dG8mIGRhdGFWZWN0b3IgPSBn
VGVzdFJ1bm5lci0+YXVkaW9SZXN1bHQoKTsKIAogICAgIE5TRGF0YSAqZGF0YSA9IFtOU0RhdGEg
ZGF0YVdpdGhCeXRlczpkYXRhVmVjdG9yLmRhdGEoKSBsZW5ndGg6ZGF0YVZlY3Rvci5zaXplKCld
OwogICAgIHJldHVybiBkYXRhOwpAQCAtMTYyNyw3ICsxNjE2LDcgQEAgc3RhdGljIHZvaWQgc2l6
ZVdlYlZpZXdGb3JDdXJyZW50VGVzdCgpCiAgICAgW3VpRGVsZWdhdGUgcmVzZXRXaW5kb3dPcmln
aW5dOwogCiAgICAgLy8gVzNDIFNWRyB0ZXN0cyBleHBlY3QgdG8gYmUgNDgweDM2MAotICAgIGJv
b2wgaXNTVkdXM0NUZXN0ID0gKGdUZXN0UnVubmVyLT50ZXN0VVJMKCkuZmluZCgic3ZnL1czQy1T
VkctMS4xIikgIT0gc3RyaW5nOjpucG9zKTsKKyAgICBib29sIGlzU1ZHVzNDVGVzdCA9IChnVGVz
dFJ1bm5lci0+dGVzdFVSTCgpLmZpbmQoInN2Zy9XM0MtU1ZHLTEuMSIpICE9IHN0ZDo6c3RyaW5n
OjpucG9zKTsKICAgICBOU1NpemUgZnJhbWVTaXplID0gaXNTVkdXM0NUZXN0ID8gTlNNYWtlU2l6
ZShUZXN0UnVubmVyOjp3M2NTVkdWaWV3V2lkdGgsIFRlc3RSdW5uZXI6OnczY1NWR1ZpZXdIZWln
aHQpIDogTlNNYWtlU2l6ZShUZXN0UnVubmVyOjp2aWV3V2lkdGgsIFRlc3RSdW5uZXI6OnZpZXdI
ZWlnaHQpOwogICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldEZyYW1lU2l6ZTpmcmFtZVNpemVd
OwogICAgIFtbbWFpbkZyYW1lIGZyYW1lVmlld10gc2V0RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCBm
cmFtZVNpemUud2lkdGgsIGZyYW1lU2l6ZS5oZWlnaHQpXTsKQEAgLTE4MjYsOSArMTgxNSw5IEBA
IHN0YXRpYyB2b2lkIHNldEpTQ09wdGlvbnMoY29uc3QgV1RSOjpUZXMKICAgICAgICAgc2F2ZWRP
cHRpb25zLmNsZWFyKCk7CiAgICAgfQogCi0gICAgaWYgKG9wdGlvbnMuanNjT3B0aW9ucy5sZW5n
dGgoKSkgeworICAgIGlmICghb3B0aW9ucy5qc2NPcHRpb25zKCkuZW1wdHkoKSkgewogICAgICAg
ICBKU0M6Ok9wdGlvbnM6OmR1bXBBbGxPcHRpb25zSW5BTGluZShzYXZlZE9wdGlvbnMpOwotICAg
ICAgICBKU0M6Ok9wdGlvbnM6OnNldE9wdGlvbnMob3B0aW9ucy5qc2NPcHRpb25zLmNfc3RyKCkp
OworICAgICAgICBKU0M6Ok9wdGlvbnM6OnNldE9wdGlvbnMob3B0aW9ucy5qc2NPcHRpb25zKCku
Y19zdHIoKSk7CiAgICAgfQogfQogCkBAIC0xODM5LDYgKzE4MjgsMTAgQEAgc3RhdGljIHZvaWQg
cmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdAogCiAgICAgV2ViVmlldyAqd2ViVmlldyA9IFtt
YWluRnJhbWUgd2ViVmlld107CiAKKyAgICBXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBb
W1dlYlByZWZlcmVuY2VzIGFsbG9jXSBpbml0XTsKKyAgICBbcHJlZmVyZW5jZXMgc2V0QXV0b3Nh
dmVzOk5PXTsKKyAgICBbd2ViVmlldyBzZXRQcmVmZXJlbmNlczpwcmVmZXJlbmNlc107CisKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGFkanVzdFdlYkRvY3VtZW50Rm9yU3RhbmRhcmRW
aWV3cG9ydChnV2ViQnJvd3NlclZpZXcsIGdXZWJTY3JvbGxWaWV3KTsKICAgICBbd2ViVmlldyBf
c2V0QWxsb3dzTWVzc2FnaW5nOllFU107CkBAIC0xODY3LDEwICsxODYwLDEwIEBAIHN0YXRpYyB2
b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXQKIAogICAgIFtXZWJDYWNoZSBjbGVhckNh
Y2hlZENyZWRlbnRpYWxzXTsKIAotICAgIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRW
YWx1ZXMoKTsKLSAgICBzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKG9wdGlvbnMpOwor
ICAgIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMocHJlZmVyZW5jZXMpOwor
ICAgIHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMocHJlZmVyZW5jZXMsIG9wdGlvbnMp
OwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBbd2ViVmlldyBzZXRXYW50c0xheWVyOm9wdGlvbnMu
bGF5ZXJCYWNrZWRXZWJWaWV3XTsKKyAgICBbd2ViVmlldyBzZXRXYW50c0xheWVyOm9wdGlvbnMu
bGF5ZXJCYWNrZWRXZWJWaWV3KCldOwogI2VuZGlmCiAKICAgICBUZXN0UnVubmVyOjpzZXRTZXJp
YWxpemVIVFRQTG9hZHMoZmFsc2UpOwpAQCAtMTkxNCw3ICsxOTA3LDcgQEAgc3RhdGljIHZvaWQg
cmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdAogICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQ
YXN0ZWJvYXJkXSBkZWNsYXJlVHlwZXM6QFtOU1N0cmluZ1Bib2FyZFR5cGVdIG93bmVyOm5pbF07
CiAjZW5kaWYKIAotICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6c2V0QWRkaXRpb25hbFN1cHBvcnRl
ZEltYWdlVHlwZXNGb3JUZXN0aW5nKG9wdGlvbnMuYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlw
ZXMuY19zdHIoKSk7CisgICAgV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRBZGRpdGlvbmFsU3VwcG9y
dGVkSW1hZ2VUeXBlc0ZvclRlc3Rpbmcob3B0aW9ucy5hZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VU
eXBlcygpLmNfc3RyKCkpOwogCiAgICAgW21haW5GcmFtZSBfY2xlYXJPcGVuZXJdOwogCkBAIC0x
OTcwLDE5ICsxOTYzLDE5IEBAIHN0YXRpYyBOU1VSTCAqY29tcHV0ZVRlc3RVUkwoTlNTdHJpbmcg
KnAKIAogc3RhdGljIFdUUjo6VGVzdE9wdGlvbnMgdGVzdE9wdGlvbnNGb3JUZXN0KGNvbnN0IFdU
Ujo6VGVzdENvbW1hbmQmIGNvbW1hbmQpCiB7Ci0gICAgV1RSOjpUZXN0RmVhdHVyZXMgZmVhdHVy
ZXM7CisgICAgV1RSOjpUZXN0RmVhdHVyZXMgZmVhdHVyZXMgPSBXVFI6OlRlc3RPcHRpb25zOjpk
ZWZhdWx0cygpOwogICAgIFdUUjo6bWVyZ2UoZmVhdHVyZXMsIFdUUjo6aGFyZGNvZGVkRmVhdHVy
ZXNCYXNlZE9uUGF0aEZvclRlc3QoY29tbWFuZCkpOwogICAgIFdUUjo6bWVyZ2UoZmVhdHVyZXMs
IFdUUjo6ZmVhdHVyZURlZmF1bHRzRnJvbVRlc3RIZWFkZXJGb3JUZXN0KGNvbW1hbmQsIFdUUjo6
VGVzdE9wdGlvbnM6OmtleVR5cGVNYXBwaW5nKCkpKTsKIAogICAgIHJldHVybiBXVFI6OlRlc3RP
cHRpb25zIHsgV1RGTW92ZShmZWF0dXJlcykgfTsKIH0KIAotc3RhdGljIHZvaWQgcnVuVGVzdChj
b25zdCBzdHJpbmcmIGlucHV0TGluZSkKK3N0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RkOjpz
dHJpbmcmIGlucHV0TGluZSkKIHsKICAgICBBU1NFUlQoIWlucHV0TGluZS5lbXB0eSgpKTsKIAog
ICAgIGF1dG8gY29tbWFuZCA9IFdUUjo6cGFyc2VJbnB1dExpbmUoaW5wdXRMaW5lKTsKLSAgICBj
b25zdCBzdHJpbmcmIHBhdGhPclVSTCA9IGNvbW1hbmQucGF0aE9yVVJMOworICAgIGF1dG8gcGF0
aE9yVVJMID0gY29tbWFuZC5wYXRoT3JVUkw7CiAgICAgZHVtcFBpeGVsc0ZvckN1cnJlbnRUZXN0
ID0gY29tbWFuZC5zaG91bGREdW1wUGl4ZWxzIHx8IGR1bXBQaXhlbHNGb3JBbGxUZXN0czsKIAog
ICAgIE5TU3RyaW5nICpwYXRoT3JVUkxTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhT
dHJpbmc6cGF0aE9yVVJMLmNfc3RyKCldOwpAQCAtMjAxNyw3ICsyMDEwLDcgQEAgc3RhdGljIHZv
aWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIGlucHV0TAogICAgIGdUZXN0UnVubmVyID0gVGVzdFJ1
bm5lcjo6Y3JlYXRlKHRlc3RVUkwsIGNvbW1hbmQuZXhwZWN0ZWRQaXhlbEhhc2gpOwogICAgIGdU
ZXN0UnVubmVyLT5zZXRBbGxvd2VkSG9zdHMoYWxsb3dlZEhvc3RzKTsKICAgICBnVGVzdFJ1bm5l
ci0+c2V0Q3VzdG9tVGltZW91dChjb21tYW5kLnRpbWVvdXQubWlsbGlzZWNvbmRzKCkpOwotICAg
IGdUZXN0UnVubmVyLT5zZXREdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoY29tbWFuZC5kdW1wSlND
b25zb2xlTG9nSW5TdGRFcnIgfHwgb3B0aW9ucy5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIpOwor
ICAgIGdUZXN0UnVubmVyLT5zZXREdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoY29tbWFuZC5kdW1w
SlNDb25zb2xlTG9nSW5TdGRFcnIgfHwgb3B0aW9ucy5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIo
KSk7CiAKICAgICByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZShvcHRpb25zLCBSZXNldFRp
bWU6OkJlZm9yZVRlc3QpOwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1
bm5lck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1
bm5lck1hYy5tbQkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L1Rlc3RSdW5uZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3NiwxNCArNTc2LDE0IEBAIHZv
aWQgVGVzdFJ1bm5lcjo6c2V0UGFnZVBhdXNlZChib29sIHBhdXMKIAogdm9pZCBUZXN0UnVubmVy
OjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQoYm9vbCBmbGFnKQogewotICAgIFtbV2ViUHJlZmVy
ZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkOmZsYWdd
OworICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hl
ZXRFbmFibGVkOmZsYWddOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0
TG9jYXRpb24oSlNTdHJpbmdSZWYgcGF0aCkKIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHBhdGhDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgcGF0aCkpOwogICAgIE5TVVJMICp1cmwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzooX19icmlk
Z2UgTlNTdHJpbmcgKilwYXRoQ0YuZ2V0KCldOwotICAgIFtbV2ViUHJlZmVyZW5jZXMgc3RhbmRh
cmRQcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbjp1cmxdOworICAgIFtbW21h
aW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbjp1
cmxdOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBKU1N0cmluZ1JlZiB2YWx1ZSkKQEAgLTYw
OSw3ICs2MDksNyBAQCB2b2lkIFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZShKU1N0CiAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB2YWx1ZUNGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlD
RlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB2YWx1ZSkpOwogICAgIE5TU3RyaW5nICp2YWx1
ZU5TID0gKF9fYnJpZGdlIE5TU3RyaW5nICopdmFsdWVDRi5nZXQoKTsKIAotICAgIFtbV2ViUHJl
ZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10gX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZh
bHVlOnZhbHVlTlMgZm9yS2V5OmtleU5TXTsKKyAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJl
ZmVyZW5jZXNdIF9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZU5T
IGZvcktleTprZXlOU107CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQWxsVmlzaXRlZExp
bmtzKCkKQEAgLTcwMCw3ICs3MDAsNyBAQCBib29sIFRlc3RSdW5uZXI6OmZpbmRTdHJpbmcoSlND
b250ZXh0UmVmCiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0Q2FjaGVNb2RlbChpbnQgY2FjaGVNb2Rl
bCkKIHsKLSAgICBbW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdIHNldENhY2hl
TW9kZWw6KFdlYkNhY2hlTW9kZWwpY2FjaGVNb2RlbF07CisgICAgW1tbbWFpbkZyYW1lIHdlYlZp
ZXddIHByZWZlcmVuY2VzXSBzZXRDYWNoZU1vZGVsOihXZWJDYWNoZU1vZGVsKWNhY2hlTW9kZWxd
OwogfQogCiBib29sIFRlc3RSdW5uZXI6OmlzQ29tbWFuZEVuYWJsZWQoSlNTdHJpbmdSZWYgbmFt
ZSkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCShyZXZpc2lvbiAy
Njg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCAtICh2b2lkKXJlc2V0V2luZG93T3JpZ2luCiAKIC0g
KHZvaWQpcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rpbmc6KGNvbnN0IFdUUjo6VGVz
dE9wdGlvbnMmKW9wdGlvbnMKIHsKLSAgICBtX2VuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxv
YWQgPSBvcHRpb25zLmVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQ7CisgICAgbV9lbmFi
bGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkID0gb3B0aW9ucy5lbmFibGVEcmFnRGVzdGluYXRp
b25BY3Rpb25Mb2FkKCk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBz
ZXRGcmFtZTooTlNSZWN0KWZyYW1lCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVt
cFJlbmRlclRyZWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9E
dW1wUmVuZGVyVHJlZS5jcHAJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwNiwyOCArOTA2
LDM3IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3QKIAogICAgIHBy
ZWZlcmVuY2VzLT5zZXRGb250U21vb3RoaW5nKEZvbnRTbW9vdGhpbmdUeXBlU3RhbmRhcmQpOwog
CisgICAgcHJlZnNQcml2YXRlLT5zZXRXZWJTUUxFbmFibGVkKHRydWUpOworCiAgICAgcHJlZnNQ
cml2YXRlLT5zZXREYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQoVFJVRSk7CiAgICAgcHJlZnNQcml2
YXRlLT5jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uKCk7CiAKICAgICBzZXRBbHdheXNBY2NlcHRD
b29raWVzKGZhbHNlKTsKIH0KIAorc3RhdGljIGJvb2wgYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJl
VmFsdWUoc3RkOjpzdHJpbmcga2V5LCBib29sIGRlZmF1bHRWYWx1ZSwgY29uc3QgV1RSOjpUZXN0
T3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBhdXRvIGl0ID0gb3B0aW9ucy5ib29sV2ViUHJlZmVy
ZW5jZUZlYXR1cmVzKCkuZmluZChrZXkpOworICAgIGlmIChpdCAhPSBvcHRpb25zLmJvb2xXZWJQ
cmVmZXJlbmNlRmVhdHVyZXMoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7Cisg
ICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsKK30KKwogc3RhdGljIHZvaWQgc2V0V2ViUHJlZmVyZW5j
ZXNGb3JUZXN0T3B0aW9ucyhJV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzLCBjb25zdCBXVFI6
OlRlc3RPcHRpb25zJiBvcHRpb25zKQogewogICAgIENPTVB0cjxJV2ViUHJlZmVyZW5jZXNQcml2
YXRlOD4gcHJlZnNQcml2YXRlIHsgUXVlcnksIHByZWZlcmVuY2VzIH07CiAKLSAgICBwcmVmc1By
aXZhdGUtPnNldE1lbnVJdGVtRWxlbWVudEVuYWJsZWQob3B0aW9ucy5lbmFibGVNZW51SXRlbUVs
ZW1lbnQpOwotICAgIHByZWZzUHJpdmF0ZS0+c2V0S2V5Z2VuRWxlbWVudEVuYWJsZWQob3B0aW9u
cy5lbmFibGVLZXlnZW5FbGVtZW50KTsKLSAgICBwcmVmc1ByaXZhdGUtPnNldE1vZGVybk1lZGlh
Q29udHJvbHNFbmFibGVkKG9wdGlvbnMuZW5hYmxlTW9kZXJuTWVkaWFDb250cm9scyk7Ci0gICAg
cHJlZnNQcml2YXRlLT5zZXRJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkKG9wdGlvbnMuZW5hYmxl
SW5zcGVjdG9yQWRkaXRpb25zKTsKLSAgICBwcmVmc1ByaXZhdGUtPnNldFJlcXVlc3RJZGxlQ2Fs
bGJhY2tFbmFibGVkKG9wdGlvbnMuZW5hYmxlUmVxdWVzdElkbGVDYWxsYmFjayk7Ci0gICAgcHJl
ZnNQcml2YXRlLT5zZXRBc3luY0NsaXBib2FyZEFQSUVuYWJsZWQob3B0aW9ucy5lbmFibGVBc3lu
Y0NsaXBib2FyZEFQSSk7Ci0gICAgcHJlZnNQcml2YXRlLT5zZXRDb250YWN0UGlja2VyQVBJRW5h
YmxlZChvcHRpb25zLmVuYWJsZUNvbnRhY3RQaWNrZXJBUEkpOwotICAgIHByZWZzUHJpdmF0ZS0+
c2V0V2ViU1FMRW5hYmxlZChvcHRpb25zLmVuYWJsZVdlYlNRTCk7Ci0gICAgcHJlZnNQcml2YXRl
LT5zZXRBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzKG9wdGlvbnMuYWxsb3dUb3BOYXZpZ2F0
aW9uVG9EYXRhVVJMcyk7Ci0gICAgcHJlZmVyZW5jZXMtPnNldFByaXZhdGVCcm93c2luZ0VuYWJs
ZWQob3B0aW9ucy51c2VFcGhlbWVyYWxTZXNzaW9uKTsKLSAgICBwcmVmZXJlbmNlcy0+c2V0VXNl
c1BhZ2VDYWNoZShvcHRpb25zLmVuYWJsZUJhY2tGb3J3YXJkQ2FjaGUpOwotICAgIHByZWZzUHJp
dmF0ZS0+c2V0Q1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZChvcHRpb25zLmVuYWJsZUNT
U09NVmlld1Ntb290aFNjcm9sbGluZyk7CisgICAgcHJlZmVyZW5jZXMtPnNldFByaXZhdGVCcm93
c2luZ0VuYWJsZWQob3B0aW9ucy51c2VFcGhlbWVyYWxTZXNzaW9uKCkpOworICAgIHByZWZlcmVu
Y2VzLT5zZXRVc2VzUGFnZUNhY2hlKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJVc2Vz
QmFja0ZvcndhcmRDYWNoZSIsIGZhbHNlLCBvcHRpb25zKSk7CisgICAgcHJlZnNQcml2YXRlLT5z
ZXRNZW51SXRlbUVsZW1lbnRFbmFibGVkKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJN
ZW51SXRlbUVsZW1lbnRFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1ByaXZh
dGUtPnNldEtleWdlbkVsZW1lbnRFbmFibGVkKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVl
KCJLZXlnZW5FbGVtZW50RW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKSk7CisgICAgcHJlZnNQcml2
YXRlLT5zZXRNb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZChib29sV2ViUHJlZmVyZW5jZUZlYXR1
cmVWYWx1ZSgiTW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQiLCB0cnVlLCBvcHRpb25zKSk7Cisg
ICAgcHJlZnNQcml2YXRlLT5zZXRJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkKGJvb2xXZWJQcmVm
ZXJlbmNlRmVhdHVyZVZhbHVlKCJJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkIiwgZmFsc2UsIG9w
dGlvbnMpKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldFJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVk
KGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJSZXF1ZXN0SWRsZUNhbGxiYWNrRW5hYmxl
ZCIsIGZhbHNlLCBvcHRpb25zKSk7CisgICAgcHJlZnNQcml2YXRlLT5zZXRBc3luY0NsaXBib2Fy
ZEFQSUVuYWJsZWQoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkFzeW5jQ2xpcGJvYXJk
QVBJRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKSk7CisgICAgcHJlZnNQcml2YXRlLT5zZXRDb250
YWN0UGlja2VyQVBJRW5hYmxlZChib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQ29udGFj
dFBpY2tlckFQSUVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucykpOworICAgIHByZWZzUHJpdmF0ZS0+
c2V0QWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyhib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVW
YWx1ZSgiQWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyIsIHRydWUsIG9wdGlvbnMpKTsKKyAg
ICBwcmVmc1ByaXZhdGUtPnNldENTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWQoYm9vbFdl
YlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkNTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWQi
LCBmYWxzZSwgb3B0aW9ucykpOwogfQogCiBzdGF0aWMgU3RyaW5nIGFwcGxpY2F0aW9uSWQoKQpA
QCAtOTczLDkgKzk4Miw5IEBAIHN0YXRpYyB2b2lkIHNldEpTQ09wdGlvbnMoY29uc3QgV1RSOjpU
ZXMKICAgICAgICAgc2F2ZWRPcHRpb25zLmNsZWFyKCk7CiAgICAgfQogCi0gICAgaWYgKG9wdGlv
bnMuanNjT3B0aW9ucy5sZW5ndGgoKSkgeworICAgIGlmICghb3B0aW9ucy5qc2NPcHRpb25zKCku
ZW1wdHkoKSkgewogICAgICAgICBKU0M6Ok9wdGlvbnM6OmR1bXBBbGxPcHRpb25zSW5BTGluZShz
YXZlZE9wdGlvbnMpOwotICAgICAgICBKU0M6Ok9wdGlvbnM6OnNldE9wdGlvbnMob3B0aW9ucy5q
c2NPcHRpb25zLmNfc3RyKCkpOworICAgICAgICBKU0M6Ok9wdGlvbnM6OnNldE9wdGlvbnMob3B0
aW9ucy5qc2NPcHRpb25zKCkuY19zdHIoKSk7CiAgICAgfQogfQogCkBAIC0xMTY4LDcgKzExNzcs
NyBAQCBzdGF0aWMgYm9vbCBoYW5kbGVDb250cm9sQ29tbWFuZChjb25zdCBjCiAKIHN0YXRpYyBX
VFI6OlRlc3RPcHRpb25zIHRlc3RPcHRpb25zRm9yVGVzdChjb25zdCBXVFI6OlRlc3RDb21tYW5k
JiBjb21tYW5kKQogewotICAgIFdUUjo6VGVzdEZlYXR1cmVzIGZlYXR1cmVzOworICAgIFdUUjo6
VGVzdEZlYXR1cmVzIGZlYXR1cmVzID0gV1RSOjpUZXN0T3B0aW9uczo6ZGVmYXVsdHMoKTsKICAg
ICBXVFI6Om1lcmdlKGZlYXR1cmVzLCBXVFI6OmhhcmRjb2RlZEZlYXR1cmVzQmFzZWRPblBhdGhG
b3JUZXN0KGNvbW1hbmQpKTsKICAgICBXVFI6Om1lcmdlKGZlYXR1cmVzLCBXVFI6OmZlYXR1cmVE
ZWZhdWx0c0Zyb21UZXN0SGVhZGVyRm9yVGVzdChjb21tYW5kLCBXVFI6OlRlc3RPcHRpb25zOjpr
ZXlUeXBlTWFwcGluZygpKSk7CiAKQEAgLTEyMjksNyArMTIzOCw3IEBAIHN0YXRpYyB2b2lkIHJ1
blRlc3QoY29uc3Qgc3RyaW5nJiBpbnB1dEwKIAogICAgIDo6Z1Rlc3RSdW5uZXIgPSBUZXN0UnVu
bmVyOjpjcmVhdGUodGVzdFVSTC5kYXRhKCksIGNvbW1hbmQuZXhwZWN0ZWRQaXhlbEhhc2gpOwog
ICAgIDo6Z1Rlc3RSdW5uZXItPnNldEN1c3RvbVRpbWVvdXQoY29tbWFuZC50aW1lb3V0Lm1pbGxp
c2Vjb25kcygpKTsKLSAgICA6OmdUZXN0UnVubmVyLT5zZXREdW1wSlNDb25zb2xlTG9nSW5TdGRF
cnIoY29tbWFuZC5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgfHwgb3B0aW9ucy5kdW1wSlNDb25z
b2xlTG9nSW5TdGRFcnIpOworICAgIDo6Z1Rlc3RSdW5uZXItPnNldER1bXBKU0NvbnNvbGVMb2dJ
blN0ZEVycihjb21tYW5kLmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciB8fCBvcHRpb25zLmR1bXBK
U0NvbnNvbGVMb2dJblN0ZEVycigpKTsKIAogICAgIHRvcExvYWRpbmdGcmFtZSA9IG51bGxwdHI7
CiAgICAgZG9uZSA9IGZhbHNlOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MjEsMTcgKzkyMSwxNiBAQCB2
b2lkIFRlc3RDb250cm9sbGVyOjpyZXNldFByZWZlcmVuY2VzVG9DCiAgICAgcGxhdGZvcm1SZXNl
dFByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKCk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8m
IFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAg
ICAgICBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5KHByZWZlcmVuY2VzLCB2YWx1ZSwg
dG9XSyhrZXkpLmdldCgpKTsKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktl
eUZvclRlc3RpbmcocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOwogCiAgICAg
Zm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLmRvdWJsZVdlYlByZWZlcmVu
Y2VGZWF0dXJlcygpKQotICAgICAgICBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXko
cHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOworICAgICAgICBXS1ByZWZlcmVu
Y2VzU2V0RG91YmxlVmFsdWVGb3JLZXlGb3JUZXN0aW5nKHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9X
SyhrZXkpLmdldCgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0
aW9ucy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKLSAgICAgICAgV0tQcmVmZXJlbmNl
c1NldFVJbnQzMlZhbHVlRm9yS2V5KHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgp
KTsKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhw
cmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1
dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuc3RyaW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkp
Ci0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleShwcmVmZXJlbmNlcywg
dG9XSyh2YWx1ZSkuZ2V0KCksIHRvV0soa2V5KS5nZXQoKSk7Ci0KKyAgICAgICAgV0tQcmVmZXJl
bmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdG9XSyh2YWx1
ZSkuZ2V0KCksIHRvV0soa2V5KS5nZXQoKSk7CiB9CiAKIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJl
c2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJl
c2V0U3RhZ2UgcmVzZXRTdGFnZSkKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvU2NyaXB0
cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9TY3JpcHRzL1ByZWZlcmVuY2VzVGVt
cGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYgkocmV2aXNpb24gMjY4NjQ4KQor
KysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rl
c3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYgkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgs
NyBAQAogI3ByYWdtYSBvbmNlCiAKICNkZWZpbmUgR0VORVJBVEVEX1dFQl9QUkVGRVJFTkNFX0tF
WV9UWVBFX01BUFBJTkdTIFwKLTwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzIGRvIC0lPgor
PCUtIGZvciBAcHJlZiBpbiBAcHJlZmVyZW5jZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3NlZCB9IGRv
IC0lPgogICAgIHsgIjwlPSBAcHJlZi5uYW1lICU+IiwgVGVzdEhlYWRlcktleVR5cGU6OjwlPSBA
cHJlZi50eXBlVXBwZXIgJT5XZWJQcmVmZXJlbmNlIH0sIFwKIDwlLSBlbmQgLSU+CiBcCg==
</data>
<flag name="commit-queue"
          id="428039"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411716</attachid>
            <date>2020-10-18 13:22:45 -0700</date>
            <delta_ts>2020-10-18 18:29:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201018132244.patch</filename>
            <type>text/plain</type>
            <size>82743</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvU2NyaXB0cy9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvU2NyaXB0cy9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiCShyZXZpc2lv
biAyNjg2NDgpCisrKyBTb3VyY2UvV1RGL1NjcmlwdHMvR2VuZXJhdGVQcmVmZXJlbmNlcy5yYgko
d29ya2luZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw3IEBAIGNsYXNzIFByZWZlcmVuY2UKICAgYXR0
cl9hY2Nlc3NvciA6Y29uZGl0aW9uCiAgIGF0dHJfYWNjZXNzb3IgOmhpZGRlbgogICBhdHRyX2Fj
Y2Vzc29yIDpkZWZhdWx0VmFsdWVzCisgIGF0dHJfYWNjZXNzb3IgOmV4cG9zZWQKIAogICBkZWYg
aW5pdGlhbGl6ZShuYW1lLCBvcHRzLCBmcm9udGVuZCkKICAgICBAbmFtZSA9IG5hbWUKQEAgLTEx
Myw2ICsxMTQsNyBAQCBjbGFzcyBQcmVmZXJlbmNlCiAgICAgQGNvbmRpdGlvbiA9IG9wdHNbImNv
bmRpdGlvbiJdCiAgICAgQGhpZGRlbiA9IG9wdHNbImhpZGRlbiJdIHx8IGZhbHNlCiAgICAgQGRl
ZmF1bHRWYWx1ZXMgPSBvcHRzWyJkZWZhdWx0VmFsdWUiXVtmcm9udGVuZF0KKyAgICBAZXhwb3Nl
ZCA9ICFvcHRzWyJleHBvc2VkIl0gfHwgb3B0c1siZXhwb3NlZCJdLmluY2x1ZGU/KGZyb250ZW5k
KQogICBlbmQKIAogICBkZWYgbmFtZUxvd2VyCkBAIC0yMDQsNyArMjA2LDcgQEAgY2xhc3MgUHJl
ZmVyZW5jZXMKICAgICAgICAgaWYgIW9wdGlvbnNbIndlYmNvcmVCaW5kaW5nIl0gJiYgb3B0aW9u
c1siZGVmYXVsdFZhbHVlIl0uc2l6ZSAhPSAzCiAgICAgICAgICAgcmFpc2UgIkVSUk9SOiBQcmVm
ZXJlbmNlcyBib3VuZCB0byBXZWJDb3JlOjpTZXR0aW5ncyBtdXN0IGhhdmUgZGVmYXVsdCB2YWx1
ZXMgZm9yIGFsbCBmcm9udGVuZHM6ICN7bmFtZX0iCiAgICAgICAgIGVuZAotICAgICAgICBpZiAh
b3B0aW9uc1siZXhwb3NlZCJdIG9yIG9wdGlvbnNbImV4cG9zZWQiXS5pbmNsdWRlPyhAZnJvbnRl
bmQpCisgICAgICAgIGlmIG9wdGlvbnNbImRlZmF1bHRWYWx1ZSJdLmluY2x1ZGU/KEBmcm9udGVu
ZCkKICAgICAgICAgICBwcmVmZXJlbmNlID0gUHJlZmVyZW5jZS5uZXcobmFtZSwgb3B0aW9ucywg
QGZyb250ZW5kKQogICAgICAgICAgIEBwcmVmZXJlbmNlcyA8PCBwcmVmZXJlbmNlCiAgICAgICAg
ICAgcmVzdWx0IDw8IHByZWZlcmVuY2UKSW5kZXg6IFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJl
bmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAkocmV2aXNp
b24gMjY4NjQ4KQorKysgU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVu
Y2VzSW50ZXJuYWwueWFtbAkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsNyBAQCBBc3luY0Zy
YW1lU2Nyb2xsaW5nRW5hYmxlZDoKICAgd2ViY29yZU9uQ2hhbmdlOiBzZXROZWVkc1JlbGF5b3V0
QWxsRnJhbWVzCiAgIGh1bWFuUmVhZGFibGVOYW1lOiAiQXN5bmMgRnJhbWUgU2Nyb2xsaW5nIgog
ICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJQZXJmb3JtIGZyYW1lIHNjcm9sbGluZyBvZmYg
dGhlIG1haW4gdGhyZWFkIgorICBleHBvc2VkOiBbIFdlYktpdCBdCiAgIGRlZmF1bHRWYWx1ZToK
ICAgICBXZWJLaXRMZWdhY3k6CiAgICAgICBkZWZhdWx0OiBmYWxzZQpAQCAtOTYsNiArOTcsNyBA
QCBBc3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZDoKICAgd2ViY29yZU9uQ2hhbmdlOiBzZXRO
ZWVkc1JlbGF5b3V0QWxsRnJhbWVzCiAgIGh1bWFuUmVhZGFibGVOYW1lOiAiQXN5bmMgT3ZlcmZs
b3cgU2Nyb2xsaW5nIgogICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJQZXJmb3JtIG92ZXJm
bG93IHNjcm9sbGluZyBvZmYgdGhlIG1haW4gdGhyZWFkIgorICBleHBvc2VkOiBbIFdlYktpdCBd
CiAgIGRlZmF1bHRWYWx1ZToKICAgICBXZWJLaXRMZWdhY3k6CiAgICAgICBkZWZhdWx0OiBmYWxz
ZQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMTAtMTcgIFNhbSBXZWlu
aWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFtUZXN0aW5nXSBDb252ZXJ0IER1bXBS
ZW5kZXJUcmVlIHRvIHVzZSBnZW5lcmF0ZWQgdGVzdCBoZWFkZXIgb3B0aW9ucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3ODgwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIFdLUHJlZmVyZW5j
ZXNTZXQqVmFsdWVGb3JLZXkgU1BJIHRvIFdLUHJlZmVyZW5jZXNTZXQqVmFsdWVGb3JLZXlGb3JU
ZXN0aW5nCisgICAgICAgIHRvIG1ha2UgaXQgY2xlYXIgd2hhdCB0aGV5IGFyZSB1c2VkIGZvciBh
bmQgZm9yIGNvbnNpc3RlbmN5IHdpdGggV2ViS2l0TGVnYWN5LgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldEJv
b2xWYWx1ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJs
ZVZhbHVlRm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0VUludDMy
VmFsdWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdW
YWx1ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1
ZUZvcktleSk6IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVG
b3JLZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9y
S2V5KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktl
eSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQ
cml2YXRlLmg6CisKIDIwMjAtMTAtMTYgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIEludHJvZHVjZSBSZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkgdG8gbWFuYWdlIHRoZSByZXNvdXJjZXMgaW4gdGhlIEdQVSBQcm9jZXNz
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUGFn
ZVVwZGF0ZVByZWZlcmVuY2VzLmNwcC5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
Y3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlBhZ2VVcGRhdGVQcmVmZXJlbmNlcy5jcHAu
ZXJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5j
ZXNUZW1wbGF0ZXMvV2ViUGFnZVVwZGF0ZVByZWZlcmVuY2VzLmNwcC5lcmIJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQ
YWdlLmgiCiAKKyNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmgiCiAjaW5jbHVk
ZSAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmg+CkBAIC00NSw3
ICs0NiwxMSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNldHRpbmdzR2VuZXJhdGVkKGNvCiA8JS0g
aWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBl
bmQgLSU+Cis8JS0gaWYgQHByZWYuZXhwb3NlZCAtJT4KICAgICBzZXR0aW5ncy5zZXQ8JT0gQHBy
ZWYud2ViY29yZU5hbWVVcHBlciAlPihzdG9yZS5nZXQ8JT0gQHByZWYudHlwZVVwcGVyICU+VmFs
dWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OjwlPSBAcHJlZi5uYW1lTG93ZXIgJT5LZXkoKSkp
OworPCUtIGVsc2UgLSU+CisgICAgc2V0dGluZ3Muc2V0PCU9IEBwcmVmLndlYmNvcmVOYW1lVXBw
ZXIgJT4oREVGQVVMVF9WQUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4pOworPCUtIGVuZCAtJT4K
IDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjZW5kaWYKIDwlLSBlbmQgLSU+CkBAIC01OCw3
ICs2MywxMSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzR2VuZXJhdGVkCiA8JS0g
aWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBl
bmQgLSU+Cis8JS0gaWYgQHByZWYuZXhwb3NlZCAtJT4KICAgICBXZWJDb3JlOjpEZXByZWNhdGVk
R2xvYmFsU2V0dGluZ3M6OnNldDwlPSBAcHJlZi53ZWJjb3JlTmFtZVVwcGVyICU+KHN0b3JlLmdl
dDwlPSBAcHJlZi50eXBlVXBwZXIgJT5WYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6PCU9
IEBwcmVmLm5hbWVMb3dlciAlPktleSgpKSk7Cis8JS0gZWxzZSAtJT4KKyAgICBXZWJDb3JlOjpE
ZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldDwlPSBAcHJlZi53ZWJjb3JlTmFtZVVwcGVyICU+
KERFRkFVTFRfVkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+KTsKKzwlLSBlbmQgLSU+CiA8JS0g
aWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2VuZGlmCiA8JS0gZW5kIC0lPgpAQCAtNjgsNyArNzcs
MTEgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlc0dlbmVyYXRlZAogPCUtIGlmIEBw
cmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0l
PgorPCUtIGlmIEBwcmVmLmV4cG9zZWQgLSU+CiAgICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXQ8JT0gQHByZWYud2ViY29yZU5hbWVVcHBlciAl
PihzdG9yZS5nZXQ8JT0gQHByZWYudHlwZVVwcGVyICU+VmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5j
ZXNLZXk6OjwlPSBAcHJlZi5uYW1lTG93ZXIgJT5LZXkoKSkpOworPCUtIGVsc2UgLSU+CisgICAg
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXQ8JT0g
QHByZWYud2ViY29yZU5hbWVVcHBlciAlPihERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFt
ZSAlPik7Cis8JS0gZW5kIC0lPgogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNlbmRpZgog
PCUtIGVuZCAtJT4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBs
YXRlcy9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmguZXJiCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0RlZmlu
aXRpb25zLmguZXJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oLmVyYgkod29y
a2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQAogLy8gbWFjcm8oS2V5VXBwZXIsIEtleUxvd2Vy
LCBUeXBlTmFtZVVwcGVyLCBUeXBlTmFtZSwgRGVmYXVsdFZhbHVlLCBIdW1hblJlYWRhYmxlTmFt
ZSwgSHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uKQogCiAjZGVmaW5lIEZPUl9FQUNIX1dFQktJVF9Q
UkVGRVJFTkNFKG1hY3JvKSBcCi08JS0gZm9yIEBwcmVmIGluIEBwcmVmZXJlbmNlc05vdERlYnVn
IGRvIC0lPgorPCUtIGZvciBAcHJlZiBpbiBAcHJlZmVyZW5jZXNOb3REZWJ1Zy5zZWxlY3QgeyB8
cHwgcC5leHBvc2VkIH0gZG8gLSU+CiAgICAgbWFjcm8oPCU9IEBwcmVmLm5hbWUgJT4sIDwlPSBA
cHJlZi5uYW1lTG93ZXIgJT4sIDwlPSBAcHJlZi50eXBlVXBwZXIgJT4sIDwlPSBAcHJlZi50eXBl
ICU+LCBERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFtZSAlPiwgPCU9IEBwcmVmLmh1bWFu
UmVhZGFibGVOYW1lICU+LCA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uICU+KSBc
CiA8JS0gZW5kIC0lPgogICAgIFwKQEAgLTY1LDcgKzY1LDcgQEAKIC8vIERlYnVnIFByZWZlcmVu
Y2VzCiAKICNkZWZpbmUgRk9SX0VBQ0hfV0VCS0lUX0RFQlVHX1BSRUZFUkVOQ0UobWFjcm8pIFwK
LTwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzRGVidWcgZG8gLSU+Cis8JS0gZm9yIEBwcmVm
IGluIEBwcmVmZXJlbmNlc0RlYnVnLnNlbGVjdCB7IHxwfCBwLmV4cG9zZWQgfSBkbyAtJT4KICAg
ICBtYWNybyg8JT0gQHByZWYubmFtZSAlPiwgPCU9IEBwcmVmLm5hbWVMb3dlciAlPiwgPCU9IEBw
cmVmLnR5cGVVcHBlciAlPiwgPCU9IEBwcmVmLnR5cGUgJT4sIERFRkFVTFRfVkFMVUVfRk9SXzwl
PSBAcHJlZi5uYW1lICU+LCA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZU5hbWUgJT4sIDwlPSBAcHJl
Zi5odW1hblJlYWRhYmxlRGVzY3JpcHRpb24gJT4pIFwKIDwlLSBlbmQgLSU+CiAgICAgXApAQCAt
NzMsNyArNzMsNyBAQAogLy8gSW50ZXJuYWwgRGVidWcgRmVhdHVyZXMKIAogI2RlZmluZSBGT1Jf
RUFDSF9XRUJLSVRfSU5URVJOQUxfREVCVUdfRkVBVFVSRV9QUkVGRVJFTkNFKG1hY3JvKSBcCi08
JS0gZm9yIEBwcmVmIGluIEBpbnRlcm5hbEZlYXR1cmVzIGRvIC0lPgorPCUtIGZvciBAcHJlZiBp
biBAaW50ZXJuYWxGZWF0dXJlcy5zZWxlY3QgeyB8cHwgcC5leHBvc2VkIH0gZG8gLSU+CiAgICAg
bWFjcm8oPCU9IEBwcmVmLm5hbWUgJT4sIDwlPSBAcHJlZi5uYW1lTG93ZXIgJT4sIEJvb2wsIGJv
b2wsIERFRkFVTFRfVkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+LCA8JT0gQHByZWYuaHVtYW5S
ZWFkYWJsZU5hbWUgJT4sIDwlPSBAcHJlZi5odW1hblJlYWRhYmxlRGVzY3JpcHRpb24gJT4pIFwK
IDwlLSBlbmQgLSU+CiAgICBcCkBAIC04MSw3ICs4MSw3IEBACiAvLyBFeHBlcmltZW50YWwgRmVh
dHVyZXMKIAogI2RlZmluZSBGT1JfRUFDSF9XRUJLSVRfRVhQRVJJTUVOVEFMX0ZFQVRVUkVfUFJF
RkVSRU5DRShtYWNybykgXAotPCUtIGZvciBAcHJlZiBpbiBAZXhwZXJpbWVudGFsRmVhdHVyZXMg
ZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGluIEBleHBlcmltZW50YWxGZWF0dXJlcy5zZWxlY3QgeyB8
cHwgcC5leHBvc2VkIH0gZG8gLSU+CiAgICAgbWFjcm8oPCU9IEBwcmVmLm5hbWUgJT4sIDwlPSBA
cHJlZi5uYW1lTG93ZXIgJT4sIEJvb2wsIGJvb2wsIERFRkFVTFRfVkFMVUVfRk9SXzwlPSBAcHJl
Zi5uYW1lICU+LCA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZU5hbWUgJT4sIDwlPSBAcHJlZi5odW1h
blJlYWRhYmxlRGVzY3JpcHRpb24gJT4pIFwKIDwlLSBlbmQgLSU+CiAgICAgXApJbmRleDogU291
cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhw
ZXJpbWVudGFsRmVhdHVyZXMuY3BwLmVyYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0
dXJlcy5jcHAuZXJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5j
cHAuZXJiCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogY29uc3QgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+JiBXZWJQcmVmZXJlbmNlczo6ZXhw
ZXJpbWVudGFsRmVhdHVyZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8
UmVmUHRyPEFQSTo6T2JqZWN0Pj4+IGZlYXR1cmVzKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxSZWZQ
dHI8QVBJOjpPYmplY3Q+PiB7Ci08JS0gZm9yIEBwcmVmIGluIEBleHBlcmltZW50YWxGZWF0dXJl
cyBkbyAtJT4KKzwlLSBmb3IgQHByZWYgaW4gQGV4cGVyaW1lbnRhbEZlYXR1cmVzLnNlbGVjdCB7
IHxwfCBwLmV4cG9zZWQgfSBkbyAtJT4KIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYg
PCU9IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KQEAgLTU4LDcgKzU4LDcgQEAgYm9v
bCBXZWJQcmVmZXJlbmNlczo6aXNGZWF0dXJlRW5hYmxlZChjbwogICAgIH07CiAKICAgICBzdGF0
aWMgRmVhdHVyZUdldHRlck1hcHBpbmcgZ2V0dGVyc1tdID0gewotPCUtIGZvciBAcHJlZiBpbiBA
ZXhwZXJpbWVudGFsRmVhdHVyZXMgZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGluIEBleHBlcmltZW50
YWxGZWF0dXJlcy5zZWxlY3QgeyB8cHwgcC5leHBvc2VkIH0gZG8gLSU+CiA8JS0gaWYgQHByZWYu
Y29uZGl0aW9uIC0lPgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBlbmQgLSU+CkBA
IC05Miw3ICs5Miw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnNldEV4cGVyaW1lbnRhbEZlYXQK
ICAgICB9OwogCiAgICAgc3RhdGljIEZlYXR1cmVTZXR0ZXJNYXBwaW5nIHNldHRlcnNbXSA9IHsK
LTwlLSBmb3IgQHByZWYgaW4gQGV4cGVyaW1lbnRhbEZlYXR1cmVzIGRvIC0lPgorPCUtIGZvciBA
cHJlZiBpbiBAZXhwZXJpbWVudGFsRmVhdHVyZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3NlZCB9IGRv
IC0lPgogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYuY29uZGl0aW9u
ICU+CiA8JS0gZW5kIC0lPgpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6
OnNldEV4cGVyaW1lbnRhbEZlYXQKIAogdm9pZCBXZWJQcmVmZXJlbmNlczo6ZW5hYmxlQWxsRXhw
ZXJpbWVudGFsRmVhdHVyZXMoKQogewotPCUtIGZvciBAcHJlZiBpbiBAZXhwZXJpbWVudGFsRmVh
dHVyZXMgZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGluIEBleHBlcmltZW50YWxGZWF0dXJlcy5zZWxl
Y3QgeyB8cHwgcC5leHBvc2VkIH0gZG8gLSU+CiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0lPgog
I2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBlbmQgLSU+CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNHZXR0ZXJTZXR0
ZXJzLmNwcC5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVu
Y2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzR2V0dGVyU2V0dGVycy5jcHAuZXJiCShyZXZpc2lv
biAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
V2ViUHJlZmVyZW5jZXNHZXR0ZXJTZXR0ZXJzLmNwcC5lcmIJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLTwlLSBmb3IgQHByZWYgaW4gKEBw
cmVmZXJlbmNlc05vdERlYnVnICsgQHByZWZlcmVuY2VzRGVidWcpIGRvIC0lPgorPCUtIGZvciBA
cHJlZiBpbiAoQHByZWZlcmVuY2VzTm90RGVidWcgKyBAcHJlZmVyZW5jZXNEZWJ1Zykuc2VsZWN0
IHsgfHB8IHAuZXhwb3NlZCB9IGRvIC0lPgogdm9pZCBXZWJQcmVmZXJlbmNlczo6c2V0PCU9IEBw
cmVmLm5hbWUgJT4oY29uc3QgPCU9IEBwcmVmLnR5cGUgJT4mIHZhbHVlKQogewogICAgIGlmICgh
bV9zdG9yZS5zZXQ8JT0gQHByZWYudHlwZVVwcGVyICU+VmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5j
ZXNLZXk6OjwlPSBAcHJlZi5uYW1lTG93ZXIgJT5LZXkoKSwgdmFsdWUpKQpAQCAtNTIsNyArNTIs
NyBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjpkZWxldGU8JT0gQHByZWYubmFtCiAKIDwlLSBlbmQg
LSU+CiAKLTwlLSBmb3IgQHByZWYgaW4gQGV4cGVyaW1lbnRhbEZlYXR1cmVzIGRvIC0lPgorPCUt
IGZvciBAcHJlZiBpbiBAZXhwZXJpbWVudGFsRmVhdHVyZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3Nl
ZCB9IGRvIC0lPgogdm9pZCBXZWJQcmVmZXJlbmNlczo6c2V0PCU9IEBwcmVmLm5hbWUgJT4oY29u
c3QgYm9vbCYgdmFsdWUpCiB7CiAgICAgaWYgKCFtX3N0b3JlLnNldEJvb2xWYWx1ZUZvcktleShX
ZWJQcmVmZXJlbmNlc0tleTo6PCU9IEBwcmVmLm5hbWVMb3dlciAlPktleSgpLCB2YWx1ZSkpCkBA
IC03Miw3ICs3Miw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OmRlbGV0ZTwlPSBAcHJlZi5uYW0K
IAogPCUtIGVuZCAtJT4KIAotPCUtIGZvciBAcHJlZiBpbiBAaW50ZXJuYWxGZWF0dXJlcyBkbyAt
JT4KKzwlLSBmb3IgQHByZWYgaW4gQGludGVybmFsRmVhdHVyZXMuc2VsZWN0IHsgfHB8IHAuZXhw
b3NlZCB9IGRvIC0lPgogdm9pZCBXZWJQcmVmZXJlbmNlczo6c2V0PCU9IEBwcmVmLm5hbWUgJT4o
Y29uc3QgYm9vbCYgdmFsdWUpCiB7CiAgICAgaWYgKCFtX3N0b3JlLnNldEJvb2xWYWx1ZUZvcktl
eShXZWJQcmVmZXJlbmNlc0tleTo6PCU9IEBwcmVmLm5hbWVMb3dlciAlPktleSgpLCB2YWx1ZSkp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJl
ZmVyZW5jZXNJbnRlcm5hbERlYnVnRmVhdHVyZXMuY3BwLmVyYgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNJbnRl
cm5hbERlYnVnRmVhdHVyZXMuY3BwLmVyYgkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dl
YktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxE
ZWJ1Z0ZlYXR1cmVzLmNwcC5lcmIJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBjb25zdCBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4mIFdlYlBy
ZWZlcmVuY2VzOjppbnRlcm5hbERlYnVnRmVhdHVyZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4+IGZlYXR1cmVzKHN0ZDo6aW5pdGlh
bGl6ZXJfbGlzdDxSZWZQdHI8QVBJOjpPYmplY3Q+PiB7Ci08JS0gZm9yIEBwcmVmIGluIEBpbnRl
cm5hbEZlYXR1cmVzIGRvIC0lPgorPCUtIGZvciBAcHJlZiBpbiBAaW50ZXJuYWxGZWF0dXJlcy5z
ZWxlY3QgeyB8cHwgcC5leHBvc2VkIH0gZG8gLSU+CiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0l
PgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBlbmQgLSU+CkBAIC01OCw3ICs1OCw3
IEBAIGJvb2wgV2ViUHJlZmVyZW5jZXM6OmlzRmVhdHVyZUVuYWJsZWQoY28KICAgICB9OwogCiAg
ICAgc3RhdGljIEZlYXR1cmVHZXR0ZXJNYXBwaW5nIGdldHRlcnNbXSA9IHsKLTwlLSBmb3IgQHBy
ZWYgaW4gQGludGVybmFsRmVhdHVyZXMgZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGluIEBpbnRlcm5h
bEZlYXR1cmVzLnNlbGVjdCB7IHxwfCBwLmV4cG9zZWQgfSBkbyAtJT4KIDwlLSBpZiBAcHJlZi5j
b25kaXRpb24gLSU+CiAjaWYgPCU9IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KQEAg
LTkyLDcgKzkyLDcgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6c2V0SW50ZXJuYWxEZWJ1Z0ZlYQog
ICAgIH07CiAKICAgICBzdGF0aWMgRmVhdHVyZVNldHRlck1hcHBpbmcgc2V0dGVyc1tdID0gewot
PCUtIGZvciBAcHJlZiBpbiBAaW50ZXJuYWxGZWF0dXJlcyBkbyAtJT4KKzwlLSBmb3IgQHByZWYg
aW4gQGludGVybmFsRmVhdHVyZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3NlZCB9IGRvIC0lPgogPCUt
IGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYuY29uZGl0aW9uICU+CiA8JS0g
ZW5kIC0lPgpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnNldEludGVy
bmFsRGVidWdGZWEKIAogdm9pZCBXZWJQcmVmZXJlbmNlczo6cmVzZXRBbGxJbnRlcm5hbERlYnVn
RmVhdHVyZXMoKQogewotPCUtIGZvciBAcHJlZiBpbiBAaW50ZXJuYWxGZWF0dXJlcyBkbyAtJT4K
KzwlLSBmb3IgQHByZWYgaW4gQGludGVybmFsRmVhdHVyZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3Nl
ZCB9IGRvIC0lPgogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYuY29u
ZGl0aW9uICU+CiA8JS0gZW5kIC0lPgpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZl
cmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzS2V5cy5jcHAuZXJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNl
c0tleXMuY3BwLmVyYgkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRz
L1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzS2V5cy5jcHAuZXJiCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBX
ZWJQcmVmZXJlbmNlc0tleSB7CiAKLTwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzIGRvIC0l
PgorPCUtIGZvciBAcHJlZiBpbiBAcHJlZmVyZW5jZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3NlZCB9
IGRvIC0lPgogY29uc3QgU3RyaW5nJiA8JT0gQHByZWYubmFtZUxvd2VyICU+S2V5KCkKIHsKICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBrZXkoTUFLRV9TVEFUSUNfU1RSSU5HX0lN
UEwoIjwlPSBAcHJlZi5uYW1lICU+IikpOwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL1By
ZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzS2V5cy5oLmVyYgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5j
ZXNLZXlzLmguZXJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNLZXlzLmguZXJiCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBXZWJQ
cmVmZXJlbmNlc0tleSB7CiAKLTwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzIGRvIC0lPgor
PCUtIGZvciBAcHJlZiBpbiBAcHJlZmVyZW5jZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3NlZCB9IGRv
IC0lPgogY29uc3QgU3RyaW5nJiA8JT0gQHByZWYubmFtZUxvd2VyICU+S2V5KCk7CiA8JS0gZW5k
IC0lPgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
V2ViUHJlZmVyZW5jZXNTdG9yZURlZmF1bHRzTWFwLmNwcC5lcmIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzU3Rv
cmVEZWZhdWx0c01hcC5jcHAuZXJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNTdG9yZURlZmF1bHRz
TWFwLmNwcC5lcmIJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgV2ViUHJlZmVyZW5j
ZXNTdG9yZTo6VmFsdWVNYXAmIFdlYlByZWZlcgogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxWYWx1ZU1hcD4gZGVmYXVsdHM7CiAgICAgaWYgKGRlZmF1bHRzLmdldCgpLmlzRW1wdHkoKSkg
ewotPCUtIGZvciBAcHJlZiBpbiBAcHJlZmVyZW5jZXMgZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGlu
IEBwcmVmZXJlbmNlcy5zZWxlY3QgeyB8cHwgcC5leHBvc2VkIH0gZG8gLSU+CiA8JS0gaWYgQHBy
ZWYuY29uZGl0aW9uIC0lPgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBlbmQgLSU+
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2Vz
LmNwcAkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tQcmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDIyICs3OCwyMiBAQCB2b2lk
IFdLUHJlZmVyZW5jZXNTZXRJbnRlcm5hbERlYnVnRmVhdHVyCiAgICAgdG9JbXBsKHByZWZlcmVu
Y2VzUmVmKS0+c2V0SW50ZXJuYWxEZWJ1Z0ZlYXR1cmVFbmFibGVkRm9yS2V5KHRvV1RGU3RyaW5n
KGludGVybmFsRGVidWdGZWF0dXJlS2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5j
ZXNTZXRCb29sVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9v
bCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVl
Rm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZh
bHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0
Qm9vbFZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1By
ZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNl
c1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdLUHJlZmVyZW5jZXNT
ZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNl
c1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZl
cmVuY2VzUmVmKS0+c2V0Qm9vbFZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHZhbHVlKTsK
IH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKK3Zv
aWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVu
Y2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQog
ewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldFVJbnQzMlZhbHVlRm9yS2V5KHRvV1RG
U3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFs
dWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFs
dWUsIFdLU3RyaW5nUmVmIGtleSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9y
S2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1Jl
ZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZikt
PnNldFN0cmluZ1ZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHRvV1RGU3RyaW5nKHZhbHVl
KSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2Vz
UmVmUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU2LDEwICs1NiwxMCBAQCBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzUmVz
ZXRBbGxJbnRlCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0SW50ZXJuYWxEZWJ1Z0Zl
YXR1cmVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiwgYm9vbCwgV0tTdHJpbmdSZWYpOwogCiAvLyBU
aGUgZm9sbG93aW5nIGdlbmVyaWMgc2V0dGVyIGZ1bmN0aW9ucyBhcmUgb25seSBpbnRlbmRlZCBm
b3IgdXNlIGJ5IHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUuCi1XS19FWFBPUlQgdm9pZCBXS1ByZWZl
cmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYs
IGJvb2wgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7Ci1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVu
Y2VzU2V0RG91YmxlVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwg
ZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJl
bmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYs
IHVpbnQzMl90IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVm
ZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIFdLU3RyaW5nUmVmIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQg
V0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1Jl
ZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VYUE9S
VCB2b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVm
ZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkp
OworV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVz
dGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1aW50MzJfdCB2YWx1ZSwgV0tT
dHJpbmdSZWYga2V5KTsKK1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1
ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJp
bmdSZWYgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7CiAKIC8vIEZvciBUZXN0IFJ1bm5lciBVc2Ug
b25seS4KIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNSZXNldFRlc3RSdW5uZXJPdmVycmlk
ZXMoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7CkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAyMC0xMC0xNyAg
U2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1Rlc3RpbmddIENvbnZl
cnQgRHVtcFJlbmRlclRyZWUgdG8gdXNlIGdlbmVyYXRlZCB0ZXN0IGhlYWRlciBvcHRpb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc4ODAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgYSBz
ZXQgb2Ygc2V0dGVycyB0byBmb3IgRHVtcFJlbmRlclRyZWUgdG8gdXNlIHdoZW4gc2V0dGluZyBw
cmVmZXJlbmNlcworICAgICAgICBieSBzdHJpbmcuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzLm1tOgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBfc3dpdGNoTmV0d29ya0xv
YWRlclRvTmV3VGVzdGluZ1Nlc3Npb25dKToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3Nl
dEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTpdKToKKyAgICAg
ICAgKCtbV2ViUHJlZmVyZW5jZXMgX2NsZWFyTmV0d29ya0xvYWRlclNlc3Npb25dKToKKyAgICAg
ICAgKC1bV2ViUHJlZmVyZW5jZXMgX3NldEJvb2xQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1
ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXRVSW50MzJQcmVmZXJl
bmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVu
Y2VzIF9zZXREb3VibGVQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6Cisg
ICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dp
dGhWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXRQcmVmZXJl
bmNlRm9yVGVzdFdpdGhWYWx1ZTpmb3JLZXk6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmll
dy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKwogMjAyMC0xMC0xNyAgU2FtIFdlaW5pZyAgPHdl
aW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQ29udmVydCBwcmVmZXJlbmNlcyBpbiBXZWJQcmVm
ZXJlbmNlc1ByaXZhdGUuaCB0byB1c2UgQHByb3BlcnR5IHN5bnRheCB0byBtYWtlIHRoZW0gbW9y
ZSBtYW5hZ2VhYmxlCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TY3JpcHRzL1ByZWZl
cmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVyZXMubW0uZXJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1NjcmlwdHMvUHJlZmVyZW5j
ZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5tbS5lcmIJKHJl
dmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1NjcmlwdHMvUHJlZmVy
ZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5tbS5lcmIJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
ICsgKE5TQXJyYXk8V2ViRmVhdHVyZSAqPiAqKV9leHBlcmltZW50YWxGZWF0dXJlcwogewogICAg
IHN0YXRpYyBOU0FycmF5PFdlYkZlYXR1cmUgKj4gKmZlYXR1cmVzID0gQFsKLTwlLSBmb3IgQHBy
ZWYgaW4gQGV4cGVyaW1lbnRhbEZlYXR1cmVzIGRvIC0lPgorPCUtIGZvciBAcHJlZiBpbiBAZXhw
ZXJpbWVudGFsRmVhdHVyZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3NlZCB9IGRvIC0lPgogPCUtIGlm
IEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5k
IC0lPgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU2NyaXB0cy9QcmVmZXJlbmNlc1Rl
bXBsYXRlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsRmVhdHVyZXMubW0uZXJiCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
V2ViUHJlZmVyZW5jZXNJbnRlcm5hbEZlYXR1cmVzLm1tLmVyYgkocmV2aXNpb24gMjY4NjQ4KQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9X
ZWJQcmVmZXJlbmNlc0ludGVybmFsRmVhdHVyZXMubW0uZXJiCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw3ICszNyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiArIChOU0FycmF5PFdlYkZlYXR1
cmUgKj4gKilfaW50ZXJuYWxGZWF0dXJlcwogewogICAgIHN0YXRpYyBOU0FycmF5PFdlYkZlYXR1
cmUgKj4gKmZlYXR1cmVzID0gQFsKLTwlLSBmb3IgQHByZWYgaW4gQGludGVybmFsRmVhdHVyZXMg
ZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGluIEBpbnRlcm5hbEZlYXR1cmVzLnNlbGVjdCB7IHxwfCBw
LmV4cG9zZWQgfSBkbyAtJT4KIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYgPCU9IEBw
cmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViVmlld1ByZWZlcmVuY2VzQ2hhbmdl
ZEdlbmVyYXRlZC5tbS5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
U2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJWaWV3UHJlZmVyZW5jZXNDaGFuZ2VkR2Vu
ZXJhdGVkLm1tLmVyYgkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJWaWV3UHJlZmVyZW5jZXNDaGFuZ2Vk
R2VuZXJhdGVkLm1tLmVyYgkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW1w
b3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKIAorI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNEZWZpbml0
aW9ucy5oIgogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2Vi
Vmlld0RhdGEuaCIKICNpbXBvcnQgPFdlYkNvcmUvRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmg+
CkBAIC00NCw3ICs0NSwxMSBAQAogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0g
QHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgorPCUtIGlmIEBwcmVmLmV4cG9zZWQgLSU+
CiAgICAgc2V0dGluZ3Muc2V0PCU9IEBwcmVmLndlYmNvcmVOYW1lVXBwZXIgJT4oW3ByZWZlcmVu
Y2VzIDwlPSBAcHJlZi5wcmVmZXJlbmNlQWNjZXNzb3IgJT46QCI8JT0gQHByZWYucHJlZmVyZW5j
ZUtleSAlPiJdKTsKKzwlLSBlbHNlIC0lPgorICAgIHNldHRpbmdzLnNldDwlPSBAcHJlZi53ZWJj
b3JlTmFtZVVwcGVyICU+KERFRkFVTFRfVkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+KTsKKzwl
LSBlbmQgLSU+CiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2VuZGlmCiA8JS0gZW5kIC0l
PgpAQCAtNTQsNyArNTksMTEgQEAKIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYgPCU9
IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KKzwlLSBpZiBAcHJlZi5leHBvc2VkIC0l
PgogICAgIFdlYkNvcmU6OkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0PCU9IEBwcmVmLndl
YmNvcmVOYW1lVXBwZXIgJT4oW3ByZWZlcmVuY2VzIDwlPSBAcHJlZi5wcmVmZXJlbmNlQWNjZXNz
b3IgJT46QCI8JT0gQHByZWYucHJlZmVyZW5jZUtleSAlPiJdKTsKKzwlLSBlbHNlIC0lPgorICAg
IFdlYkNvcmU6OkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0PCU9IEBwcmVmLndlYmNvcmVO
YW1lVXBwZXIgJT4oREVGQVVMVF9WQUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4pOworPCUtIGVu
ZCAtJT4KIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjZW5kaWYKIDwlLSBlbmQgLSU+CkBA
IC02NCw3ICs3MywxMSBAQAogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHBy
ZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgorPCUtIGlmIEBwcmVmLmV4cG9zZWQgLSU+CiAg
ICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXQ8
JT0gQHByZWYud2ViY29yZU5hbWVVcHBlciAlPihbcHJlZmVyZW5jZXMgPCU9IEBwcmVmLnByZWZl
cmVuY2VBY2Nlc3NvciAlPjpAIjwlPSBAcHJlZi5wcmVmZXJlbmNlS2V5ICU+Il0pOworPCUtIGVs
c2UgLSU+CisgICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5zZXQ8JT0gQHByZWYud2ViY29yZU5hbWVVcHBlciAlPihERUZBVUxUX1ZBTFVFX0ZPUl88
JT0gQHByZWYubmFtZSAlPik7Cis8JS0gZW5kIC0lPgogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAt
JT4KICNlbmRpZgogPCUtIGVuZCAtJT4KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkocmV2aXNpb24gMjY4NjQ4KQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTY2MCwyNiArMTY2MCw2IEBAICsgKHZvaWQpX3NldElCQ3JlYXRvcklEOihOU1N0
cmluZyAqKXN0cmkKICAgICBbb2xkIHJlbGVhc2VdOwogfQogCi0rICh2b2lkKV9zd2l0Y2hOZXR3
b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbgotewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgV2ViVGhyZWFkTG9jaygpOwotI2VuZGlmCi0gICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
TWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7Ci19Ci0KLSsgKHZvaWQpX2NsZWFyTmV0
d29ya0xvYWRlclNlc3Npb24KLXsKLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1
bHRTdG9yYWdlU2Vzc2lvbigpLmRlbGV0ZUFsbENvb2tpZXMoKTsKLX0KLQotKyAodm9pZClfc2V0
Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29r
aWVBY2NlcHRQb2xpY3kpcG9saWN5Ci17Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1bHRT
dG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFn
ZSk7IC8vIFdpbGwgZmFpbCB3aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9O
ZXdUZXN0aW5nU2Vzc2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhhbmQuCi0gICAgQ0ZIVFRQ
Q29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBw
b2xpY3kpOwotfQotCiAtIChCT09MKWlzRE9NUGFzdGVBbGxvd2VkCiB7CiAgICAgcmV0dXJuIFtz
ZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0RE9NUGFzdGVBbGxvd2VkUHJlZmVyZW5jZUtleV07
CkBAIC0xOTY2LDExICsxOTQ2LDYgQEAgLSAodm9pZCl3aWxsQWRkVG9XZWJWaWV3CiAgICAgKytf
cHJpdmF0ZS0+bnVtV2ViVmlld3M7CiB9CiAKLS0gKHZvaWQpX3NldFByZWZlcmVuY2VGb3JUZXN0
V2l0aFZhbHVlOihOU1N0cmluZyAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKLXsKLSAg
ICBbc2VsZiBfc2V0U3RyaW5nVmFsdWU6dmFsdWUgZm9yS2V5OmtleV07Ci19Ci0KIC0gKHZvaWQp
c2V0RnVsbFNjcmVlbkVuYWJsZWQ6KEJPT0wpZmxhZwogewogICAgIFtzZWxmIF9zZXRCb29sVmFs
dWU6ZmxhZyBmb3JLZXk6V2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5XTsKQEAg
LTMwMTMsNiArMjk4OCw1MSBAQCAtICh2b2lkKV9zZXRFbmFibGVkOihCT09MKXZhbHVlIGZvckZl
YXR1CiAKIEBlbmQKIAorCitAaW1wbGVtZW50YXRpb24gV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZh
dGVUZXN0aW5nKQorCisrICh2b2lkKV9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vz
c2lvbgoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgV2ViVGhyZWFkTG9jaygpOwor
I2VuZGlmCisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdT
ZXNzaW9uKCk7Cit9CisKKysgKHZvaWQpX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNv
b2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeQoreworICAg
IFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdl
KCk7CisgICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90IGNh
bGxlZCBiZWZvcmVoYW5kLgorICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQ
b2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKK30KKworKyAodm9pZClfY2xlYXJO
ZXR3b3JrTG9hZGVyU2Vzc2lvbgoreworICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVm
YXVsdFN0b3JhZ2VTZXNzaW9uKCkuZGVsZXRlQWxsQ29va2llcygpOworfQorCistICh2b2lkKV9z
ZXRCb29sUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KEJPT0wpdmFsdWUgZm9yS2V5OihO
U1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6dmFsdWUgZm9yS2V5Omtl
eV07Cit9CisKKy0gKHZvaWQpX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVl
Oih1aW50MzJfdCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5Cit7CisgICAgW3NlbGYgX3Nl
dEludGVnZXJWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAodm9pZClfc2V0RG91Ymxl
UHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KGRvdWJsZSl2YWx1ZSBmb3JLZXk6KE5TU3Ry
aW5nICopa2V5Cit7CisgICAgW3NlbGYgX3NldEZsb2F0VmFsdWU6dmFsdWUgZm9yS2V5OmtleV07
Cit9CisKKy0gKHZvaWQpX3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihO
U1N0cmluZyAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2VsZiBfc2V0
U3RyaW5nVmFsdWU6dmFsdWUgZm9yS2V5OmtleV07Cit9CisKK0BlbmQKKwogQGltcGxlbWVudGF0
aW9uIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlUHJlZmVyZW5jZXNDb252ZXJ0ZWRUb1dlYkZl
YXR1cmUpCiAKIC0gKEJPT0wpdXNlckdlc3R1cmVQcm9taXNlUHJvcGFnYXRpb25FbmFibGVkCklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJl
ZmVyZW5jZXNQcml2YXRlLmgJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTg5LDEzICs4OSw2IEBAIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGUpCiAr
ICh2b2lkKV9zZXRJbml0aWFsRGVmYXVsdFRleHRFbmNvZGluZ1RvU3lzdGVtRW5jb2Rpbmc7CiAr
ICh2b2lkKV9zZXRJQkNyZWF0b3JJRDooTlNTdHJpbmcgKilzdHJpbmc7CiAKLS8vIEZvciBEdW1w
UmVuZGVyVHJlZSB1c2Ugb25seS4KLSsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rl
c3RpbmdTZXNzaW9uOwotKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29v
a2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpY29va2llQWNjZXB0UG9s
aWN5OwotKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbjsKLS8vIFVzZWQgdG8gc2V0
IHByZWZlcmVuY2Ugc3BlY2lmaWVkIGluIHRoZSB0ZXN0IHZpYSBMYXlvdXRUZXN0Q29udHJvbGxl
ci5vdmVycmlkZVByZWZlcmVuY2UoLi4pLgotLSAodm9pZClfc2V0UHJlZmVyZW5jZUZvclRlc3RX
aXRoVmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKLQogKyAo
dm9pZClzZXRXZWJLaXRMaW5rVGltZVZlcnNpb246KGludCl2ZXJzaW9uOwogCiAvLyBGb3IgV2Vi
VmlldydzIHVzZSBvbmx5LgpAQCAtMzEwLDYgKzMwMywxOCBAQCBAaW50ZXJmYWNlIFdlYlByZWZl
cmVuY2VzIChXZWJQcml2YXRlRmVhCiAtICh2b2lkKV9zZXRFbmFibGVkOihCT09MKXZhbHVlIGZv
ckZlYXR1cmU6KFdlYkZlYXR1cmUgKilmZWF0dXJlOwogQGVuZAogCitAaW50ZXJmYWNlIFdlYlBy
ZWZlcmVuY2VzIChXZWJQcml2YXRlVGVzdGluZykKKysgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2Fk
ZXJUb05ld1Rlc3RpbmdTZXNzaW9uOworKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJT
ZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpY29va2ll
QWNjZXB0UG9saWN5OworKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbjsKKworLSAo
dm9pZClfc2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihCT09MKXZhbHVlIGZv
cktleTooTlNTdHJpbmcgKilrZXk7CistICh2b2lkKV9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVz
dGluZ1dpdGhWYWx1ZToodWludDMyX3QpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0g
KHZvaWQpX3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihkb3VibGUpdmFs
dWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZvaWQpX3NldFN0cmluZ1ByZWZlcmVuY2VG
b3JUZXN0aW5nV2l0aFZhbHVlOihOU1N0cmluZyAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilr
ZXk7CisKK0BlbmQKKwogLy8gRklYTUU6IElmIHRoZXNlIGFyZSBub3QgdXNlZCBhbnl3aGVyZSwg
d2Ugc2hvdWxkIHJlbW92ZSB0aGVtIGFuZCBvbmx5IHVzZSBXZWJGZWF0dXJlIG1lY2hhbmlzbSBm
b3IgdGhlIHByZWZlcmVuY2UuCiBAaW50ZXJmYWNlIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRl
UHJlZmVyZW5jZXNDb252ZXJ0ZWRUb1dlYkZlYXR1cmUpCiBAcHJvcGVydHkgKG5vbmF0b21pYykg
Qk9PTCB1c2VyR2VzdHVyZVByb21pc2VQcm9wYWdhdGlvbkVuYWJsZWQ7CkluZGV4OiBUb29scy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg2NTkp
CisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw5OSBAQAorMjAy
MC0xMC0xNyAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1Rlc3Rp
bmddIENvbnZlcnQgRHVtcFJlbmRlclRyZWUgdG8gdXNlIGdlbmVyYXRlZCB0ZXN0IGhlYWRlciBv
cHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTc4ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
dWxseSBzdXBwb3J0IHVzZSBvZiBhbnkgV2ViUHJlZmVyZW5jZXMqLnlhbWwgcHJlZmVyZW5jZSBp
biBEdW1wUmVuZGVyVHJlZSAoZm9yIG1hY09TKSBieToKKyAgICAgICAgICAgIC0gTW92aW5nIER1
bXBSZW5kZXJUcmVlJ3MgVGVzdE9wdGlvbnMgdG8gYmUgZnVsbHkgYmFja2VkIGJ5IFRlc3RGZWF0
dXJlcyBsaWtlIFdlYktpdFRlc3RSdW5ubmVyLgorICAgICAgICAgICAgLSBBZG9wdGluZyBuZXcg
V2ViUHJlZmVyZW5jZXMgU1BJIGZvciBzZXR0aW5nIGFueSBwcmVmZXJlbmNlIGJ5IGtleS4KKyAg
ICAgICAgICAgIC0gR2VuZXJhdGluZyBtYXBwaW5nIGZyb20gV2ViUHJlZmVyZW5jZXMqLnlhbWwg
dG8gV2ViS2l0TGVnYWN5IGtleSBuYW1lcy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0NN
YWtlTGlzdHMudHh0OgorICAgICAgICBHZW5lcmF0ZSBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktp
dExlZ2FjeUtleU1hcHBpbmcuY3BwCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICBBZGQgbmV3IHRlbXBsYXRlIGZpbGUs
IFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiLCBhbmQg
YWRkCisgICAgICAgIERlcml2ZWRTb3VyY2VzLm1ha2UgYW5kIGdlbmVyYXRlLWRlcml2ZWQtc291
cmNlcy5zaCwgc28gdGhhdCBpZiBlaXRoZXIgb2YgdGhlbSBjaGFuZ2UKKyAgICAgICAgdGhlIERl
cml2ZWRTb3VyY2VzLm1ha2UgaXMgYWN0dWFsbHkgaW52b2tlZC4KKyAKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgQWRk
cyBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgU3dpdGNo
IGdlbmVyYXRpb24gb2YgcHJlZmVyZW5jZXMgdG8gdXNlIGEgc3RhdGljIHBhdHRlcm4gdG8gYXZv
aWQgaXNzdWVzIHdpdGggY2lyY3VsYXIgZGVwZW5kZW5jaWVzLgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgQWRkcyBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9U
ZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYjogQWRkZWQu
CisgICAgICAgIFRlbXBsYXRlIGZvciBnZW5lcmF0aW5nIG1hcHBpbmcgZnJvbSBXZWJQcmVmZXJl
bmNlcyoueWFtbCBrZXkgbmFtZXMgdG8gV2ViS2l0TGVnYWN5IGtleSBuYW1lcy4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9UZXN0T3B0aW9ucy5oOgorICAgICAgICBTd2l0Y2ggdG8gYSBtb2RlbCBtb3JlIHNpbWls
YXIgdG8gdGhhdCBpbiBXZWJLaXRUZXN0UnVubmVyLCB3aGVyZSBUZXN0T3B0aW9ucyBzdG9yZXMg
dGhlIHBhc3NlZCBpbiAKKyAgICAgICAgVGVzdEZlYXR1cmVzIGFuZCBvbmx5IGV4cG9zZXMgdmFs
dWVzIHRoYXQgaGF2ZSBiZWVuIHNldCBvciBkZWZhdWx0IHZhbHVlcyB3aGVuIG5lZWRlZC4KKyAg
ICAgICAgCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgor
ICAgICAgICAodG9OUyk6CisgICAgICAgIEFkZCBoZWxwZXIgdG8gY29udmVydCBmcm9tIGEgc3Rk
OjpzdHJpbmcgdG8gYW4gTlNTdHJpbmcuCisKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXdBbmRPZmZz
Y3JlZW5XaW5kb3cpOgorICAgICAgICBOb3cgdGhhdCB3ZSBhcmVuJ3QgbmVjY2Vzc2FyaWx5IHNl
dHRpbmcgYWxsIHByZWZlcmVuY2VzIGVhY2ggdGVzdCwgd2UgbmVlZCB0byBmdWxseSByZXNldCB0
aGUKKyAgICAgICAgV2ViUHJlZmVyZW5jZXMgb24gZWFjaCBydW4gYnkgY3JlYXRpbmcgYSBuZXcg
b25lLiBUaGlzIG1lYW5zIHJlbW92aW5nIHRoZSB1c2VzIG9mIAorICAgICAgICBbV2ViUHJlZmVy
ZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10sIGFuZCBpbnN0ZWFkIGdyYWJiaW5nIHRoZSBXZWJW
aWV3J3MgcHJlZmVyZW5jZXMgd2hlbiBuZWVkZWQuCisKKyAgICAgICAgKHJlc2V0V2ViUHJlZmVy
ZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICBNb3ZlcyBzb21lIHNjYXR0ZXJlZCBk
ZWZhdWx0IHZhbHVlIHNldHRpbmcgaGVyZS4gUmVtb3ZlIGFzc2VydCB0aGF0IGlzIG5vIGxvbmdl
ciBhY2N1cmF0ZQorICAgICAgICBub3cgdGhhdCB3ZSBkb24ndCB1c2Ugc3RhbmRhcmRQcmVmZXJl
bmNlcyBhbmQgd2lsbCBub3QgaGF2ZSBzZXQgdGhpcyB2YWx1ZSBieSB0aGlzIHBvaW50LgorCisg
ICAgICAgIChzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKToKKyAgICAgICAgVXNlIG5l
dyBfc2V0KlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleSogU1BJIHRvIHNldCBh
bnkgc3BlY2lmaWVkIHByZWZlcm5lY2VzLgorCisgICAgICAgIChzZXREZWZhdWx0c1RvQ29uc2lz
dGVudFZhbHVlc0ZvclRlc3RpbmcpOgorICAgICAgICBNb3ZlIGRlZmF1bHRzIHNldCBoZXJlIHRv
IHRoZSBtb3JlIGFwcHJvcHJpYXRlIGFuZCBjZW50cmFsaXplZCByZXNldFdlYlByZWZlcmVuY2Vz
VG9Db25zaXN0ZW50VmFsdWVzLgorCisgICAgICAgIChzZXRKU0NPcHRpb25zKToKKyAgICAgICAg
VXNlIG5ldyBnZXR0ZXIgZnVuY3Rpb24gcmF0aGVyIHRoYW4gZGlyZWN0IG1lbWJlciBhY2Nlc3Mu
CisKKyAgICAgICAgKHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgRnVs
bHkgcmVzZXQgcHJlZmVybmVjZXMgYnkgYWxsb2NhdGluZyBhIG5ldyBXZWJQcmVmZXJlbmNlcyBv
biByZXNldCBhbmQgdXNlIG5ldyBUZXN0T3B0aW9ucyBnZXR0ZXIKKyAgICAgICAgZnVuY3Rpb25z
LgorCisgICAgICAgICh0ZXN0T3B0aW9uc0ZvclRlc3QpOgorICAgICAgICBTZWVkIFRlc3RGZWF0
dXJlcyB3aXRoIGRlZmF1bHQgZ2xvYmFsIHZhbHVlcywgbWF0Y2hpbmcgdGhlIGlkaW9tIGluIFdl
YktpdFRlc3RSdW5uZXIuCisKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICBVc2UgbmV3IGdl
dHRlciBmdW5jdGlvbiByYXRoZXIgdGhhbiBkaXJlY3QgbWVtYmVyIGFjY2Vzcy4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgorICAgICAgICAoVGVzdFJ1
bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNl
dFVzZXJTdHlsZVNoZWV0TG9jYXRpb24pOgorICAgICAgICAoVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQ
cmVmZXJlbmNlKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldENhY2hlTW9kZWwpOgorICAgICAg
ICBBY2Nlc3MgdGhlIGNvcnJlY3QgV2ViUHJlZmVyZW5jZXMgdmlhIHRoZSBXZWJWaWV3LCByYXRo
ZXIgdGhhbiBhc3N1bWluZyBzdGFuZGFyZFByZWZlcmVuY2VzCisgICAgICAgIGFyZSBiZWluZyB1
c2VkLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW06CisgICAg
ICAgICgtW1VJRGVsZWdhdGUgcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rpbmc6XSk6
CisgICAgICAgIFVzZSBuZXcgZ2V0dGVyIGZ1bmN0aW9uIHJhdGhlciB0aGFuIGRpcmVjdCBtZW1i
ZXIgYWNjZXNzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcDoKKyAgICAgICAgKHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMpOgor
ICAgICAgICAoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUpOgorICAgICAgICAoc2V0V2Vi
UHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9ucyk6CisgICAgICAgIChzZXRKU0NPcHRpb25zKToKKyAg
ICAgICAgKHRlc3RPcHRpb25zRm9yVGVzdCk6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAg
S2VlcCBXaW5kb3dzIER1bXBSZW5kZXJUcmVlIHdvcmtpbmcgd2l0aCB0aGUgbmV3IFRlc3RPcHRp
b25zIGJ5IGdldHRpbmcgZmVhdHVyZSB2YWx1ZXMgYnkKKyAgICAgICAgc3RyaW5nIGtleXMgd2l0
aCBzcGVjaWZpZWQgZGVmYXVsdHMgYW5kIGFkb3B0aW5nIG5ldyBnZXR0ZXIgZnVuY3Rpb25zLiBJ
biB0aGUgZnV0dXJlLCB3ZQorICAgICAgICB3aWxsIGFkZCBzaW1pbGFyIFNQSSBhcyB3YXMgYWRk
ZWQgZm9yIG1hYyBXZWJLaXRMZWdhY3kgdG8gV2luZG93cyBXZWJLaXRMZWdhY3kgdG8gYXZvaWQg
dGhpcy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVu
dFZhbHVlcyk6CisgICAgICAgIFVwZGF0ZSBmb3IgcmVuYW1lZCBXS1ByZWZlcmVuY2VzUmVmIFNQ
SS4KKwogMjAyMC0xMC0xNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0ZsYXRwYWsgU0RLXSBmbGF0cGFrdXRpbHMucHkgcmVwb3J0cyAiS2V5RXJy
b3I6ICdnY2MnIiBlcnJvciBpZiB1c2luZyB3aXRoIGljZWNjIGFuZCB0b29sY2hhaW5zIGFyZW4n
dCBnZW5lcmF0ZWQgeWV0CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dAkocmV2
aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgbGlzdChBUFBFTkQgRHVtcFJlbmRlclRyZWVf
UFJJVkFURV9JTkNMVQogKQogCiBzZXQoRHVtcFJlbmRlclRyZWVfV0VCX1BSRUZFUkVOQ0VTX1RF
TVBMQVRFUworICAgICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVt
cGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJi
CiAgICAgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
VGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCiApCiAKQEAgLTUzLDEyICs1NCwxMyBAQCBz
ZXQoRHVtcFJlbmRlclRyZWVfV0VCX1BSRUZFUkVOQ0VTCiBzZXRfc291cmNlX2ZpbGVzX3Byb3Bl
cnRpZXMoJHtEdW1wUmVuZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVN9IFBST1BFUlRJRVMgR0VORVJB
VEVEIFRSVUUpCiAKIGFkZF9jdXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtEdW1wUmVuZGVy
VHJlZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaAorICAg
IE9VVFBVVCAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9L1Rlc3RPcHRpb25z
R2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgJHtEdW1wUmVuZGVyVHJlZV9ERVJJ
VkVEX1NPVVJDRVNfRElSfS9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaAogICAgIERFUEVORFMg
JHtEdW1wUmVuZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVTfSAke0R1bXBSZW5kZXJU
cmVlX1dFQl9QUkVGRVJFTkNFU30gV1RGX0NvcHlQcmVmZXJlbmNlcwotICAgIENPTU1BTkQgJHtS
VUJZX0VYRUNVVEFCTEV9ICR7V1RGX1NDUklQVFNfRElSfS9HZW5lcmF0ZVByZWZlcmVuY2VzLnJi
IC0tZnJvbnRlbmQgV2ViS2l0TGVnYWN5IC0tYmFzZSAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVy
ZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCAtLWRlYnVnICR7V1RGX1NDUklQVFNfRElSfS9QcmVm
ZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0RlYnVnLnlhbWwgLS1leHBlcmltZW50YWwgJHtXVEZfU0NS
SVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgLS1p
bnRlcm5hbCAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRl
cm5hbC55YW1sIC0tb3V0cHV0RGlyICIke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19E
SVJ9IiAtLXRlbXBsYXRlICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2Vz
VGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYgorICAgIENPTU1BTkQgJHtS
VUJZX0VYRUNVVEFCTEV9ICR7V1RGX1NDUklQVFNfRElSfS9HZW5lcmF0ZVByZWZlcmVuY2VzLnJi
IC0tZnJvbnRlbmQgV2ViS2l0TGVnYWN5IC0tYmFzZSAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVy
ZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCAtLWRlYnVnICR7V1RGX1NDUklQVFNfRElSfS9QcmVm
ZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0RlYnVnLnlhbWwgLS1leHBlcmltZW50YWwgJHtXVEZfU0NS
SVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgLS1p
bnRlcm5hbCAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRl
cm5hbC55YW1sIC0tb3V0cHV0RGlyICIke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19E
SVJ9IiAtLXRlbXBsYXRlICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2Vz
VGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAu
ZXJiIC0tdGVtcGxhdGUgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNU
ZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCiAgICAgVkVSQkFUSU0pCiAK
IGxpc3QoQVBQRU5EIER1bXBSZW5kZXJUcmVlX1NPVVJDRVMKKyAgICAke0R1bXBSZW5kZXJUcmVl
X0RFUklWRURfU09VUkNFU19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5
TWFwcGluZy5jcHAKICAgICAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9L1Rl
c3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCiApCiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVt
cFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjY4
NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdAkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDEwIEBAICQoQlVJTFRfUFJPRFVDVFNfRElS
KS91c3IvbG9jYWwvaW5jbHVkZS8KICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5j
bHVkZS93dGYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwK
ICQoUFJPSkVDVF9ESVIpLy4uL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRp
bmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwKICQoUFJPSkVDVF9ESVIpL0JpbmRpbmdzL0NvZGVH
ZW5lcmF0b3JEdW1wUmVuZGVyVHJlZS5wbQorJChQUk9KRUNUX0RJUikvRGVyaXZlZFNvdXJjZXMu
bWFrZQogJChQUk9KRUNUX0RJUikvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0
aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIKKyQoUFJPSkVDVF9ESVIpL1NjcmlwdHMvUHJlZmVyZW5j
ZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNw
cC5lcmIKKyQoUFJPSkVDVF9ESVIpL1NjcmlwdHMvZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzLnNo
CiAkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvQ29kZUdlbmVyYXRvci5wbQogJChXRUJD
T1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0lETEF0dHJpYnV0ZXMuanNvbgogJChXRUJDT1JFX1BS
SVZBVEVfSEVBREVSU19ESVIpL0lETFBhcnNlci5wbQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHJldmlzaW9u
IDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54
Y2ZpbGVsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDMgKzIsNCBAQAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVlL0pTVUlTY3JpcHRDb250cm9sbGVy
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVl
L0pTVUlTY3JpcHRDb250cm9sbGVyLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaAorJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zR2Vu
ZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjMsMjkgKzIz
LDEyIEBACiAKIFJVQlkgPSBydWJ5CiAKLVdFQl9QUkVGRVJFTkNFUyA9IFwKLSAgICAke1dURl9C
VUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCBcCi0gICAg
JHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRGVidWcu
eWFtbCBcCi0gICAgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZl
cmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgXAotICAgICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9Q
cmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwgXAotIwotCi1XRUJfUFJFRkVS
RU5DRVNfVEVNUExBVEVTID0gXAotICAgICQoRHVtcFJlbmRlclRyZWUpL1NjcmlwdHMvUHJlZmVy
ZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiIFwKLSMKLVdFQl9Q
UkVGRVJFTkNFU19GSUxFUyA9ICQoYmFzZW5hbWUgJChub3RkaXIgJChXRUJfUFJFRkVSRU5DRVNf
VEVNUExBVEVTKSkpCi1XRUJfUFJFRkVSRU5DRVNfUEFUVEVSTlMgPSAkKHN1YnN0IC5lcmIsLCQo
V0VCX1BSRUZFUkVOQ0VTX0ZJTEVTKSkKLQotYWxsIDogJChXRUJfUFJFRkVSRU5DRVNfRklMRVMp
Ci0KLSQoV0VCX1BSRUZFUkVOQ0VTX1BBVFRFUk5TKSA6ICQoV1RGX0JVSUxEX1NDUklQVFNfRElS
KS9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiICQoV0VCX1BSRUZFUkVOQ0VTX1RFTVBMQVRFUykgJChX
RUJfUFJFRkVSRU5DRVMpCi0JJChSVUJZKSAkPCAtLWZyb250ZW5kIFdlYktpdExlZ2FjeSAtLWJh
c2UgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlh
bWwgLS1kZWJ1ZyAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVy
ZW5jZXNEZWJ1Zy55YW1sIC0tZXhwZXJpbWVudGFsICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9Q
cmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIC0taW50ZXJuYWwgJHtX
VEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwu
eWFtbCAkKGFkZHByZWZpeCAtLXRlbXBsYXRlICwgJChXRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVT
KSkKLQotCiBVSVNDUklQVENPTlRFWFRfRElSID0gJChEdW1wUmVuZGVyVHJlZSkvLi4vVGVzdFJ1
bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MKK0RVTVBSRU5ERVJUUkVFX1BSRUZF
UkVOQ0VTX1RFTVBMQVRFU19ESVIgPSAkKER1bXBSZW5kZXJUcmVlKS9TY3JpcHRzL1ByZWZlcmVu
Y2VzVGVtcGxhdGVzCiAKIFZQQVRIID0gXAogICAgICQoVUlTQ1JJUFRDT05URVhUX0RJUikgXAor
ICAgICQoRFVNUFJFTkRFUlRSRUVfUFJFRkVSRU5DRVNfVEVNUExBVEVTX0RJUikgXAogIwogCiBV
SUNPTlRFWFRfSU5URVJGQUNFUyA9IFwKQEAgLTcxLDMgKzU0LDIxIEBAIGFsbCA6IFwKICAgICAk
KFVJQ09OVEVYVF9JTlRFUkZBQ0VTOiU9SlMlLmgpIFwKICAgICAkKFVJQ09OVEVYVF9JTlRFUkZB
Q0VTOiU9SlMlLmNwcCkgXAogIworCisKK1dFQl9QUkVGRVJFTkNFUyA9IFwKKyAgICAke1dURl9C
VUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCBcCisgICAg
JHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRGVidWcu
eWFtbCBcCisgICAgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZl
cmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgXAorICAgICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9Q
cmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwgXAorIworCitXRUJfUFJFRkVS
RU5DRVNfR0VORVJBVEVEX0ZJTEVTID0gXAorICAgIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0
TGVnYWN5S2V5TWFwcGluZy5jcHAgXAorICAgIFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oIFwK
KyMKKworYWxsIDogJChXRUJfUFJFRkVSRU5DRVNfR0VORVJBVEVEX0ZJTEVTKQorCiskKFdFQl9Q
UkVGRVJFTkNFU19HRU5FUkFURURfRklMRVMpIDogJSA6ICUuZXJiICQoV0VCX1BSRUZFUkVOQ0VT
KSAkKFdURl9CVUlMRF9TQ1JJUFRTX0RJUikvR2VuZXJhdGVQcmVmZXJlbmNlcy5yYgorCSQoUlVC
WSkgJChXVEZfQlVJTERfU0NSSVBUU19ESVIpL0dlbmVyYXRlUHJlZmVyZW5jZXMucmIgLS1mcm9u
dGVuZCBXZWJLaXRMZWdhY3kgLS1iYXNlICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJl
bmNlcy9XZWJQcmVmZXJlbmNlcy55YW1sIC0tZGVidWcgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9
L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRhbCAke1dU
Rl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50
YWwueWFtbCAtLWludGVybmFsICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9X
ZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwgLS10ZW1wbGF0ZSAkPApJbmRleDogVG9vbHMvRHVt
cFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL1Rlc3RPcHRpb25zLmNwcAkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw0NCBA
QAogCiBuYW1lc3BhY2UgV1RSIHsKIAorY29uc3QgVGVzdEZlYXR1cmVzJiBUZXN0T3B0aW9uczo6
ZGVmYXVsdHMoKQoreworICAgIHN0YXRpYyBUZXN0RmVhdHVyZXMgZmVhdHVyZXM7CisgICAgaWYg
KGZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMuZW1wdHkoKSkgeworICAgICAgICBm
ZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzID0geworICAgICAgICAgICAgLy8gVGhl
c2UgYXJlIFdlYlByZWZlcmVuY2UgdmFsdWVzIHRoYXQgbXVzdCBhbHdheXMgYmUgc2V0IGFzIHRo
ZXkgbWF5CisgICAgICAgICAgICAvLyBkaWZmZXIgZnJvbSB0aGUgZGVmYXVsdCBzZXQgaW4gdGhl
IFdlYlByZWZlcmVuY2VzKi55YW1sIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICB7ICJBbGxv
d0Nyb3NzT3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyIsIGZhbHNlIH0sCisg
ICAgICAgICAgICB7ICJBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzIiwgdHJ1ZSB9LAorICAg
ICAgICAgICAgeyAiQWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAg
ICAgICB7ICJBdHRhY2htZW50RWxlbWVudEVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAg
eyAiVXNlc0JhY2tGb3J3YXJkQ2FjaGUiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQ29sb3JG
aWx0ZXJFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkluc3BlY3RvckFkZGl0aW9u
c0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiSW50ZXJzZWN0aW9uT2JzZXJ2ZXJF
bmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIktleWdlbkVsZW1lbnRFbmFibGVkIiwg
ZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIk1lbnVJdGVtRWxlbWVudEVuYWJsZWQiLCBmYWxzZSB9
LAorICAgICAgICAgICAgeyAiTW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQiLCB0cnVlIH0sCisK
KyAgICAgICAgICAgIHsgIkNTU0xvZ2ljYWxFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAg
IHsgIkxpbmVIZWlnaHRVbml0c0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiU2Vs
ZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllc0VuYWJsZWQiLCB0cnVlIH0sCisgICAgICAgICAg
ICB7ICJMYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCIsIHRydWUgfSwK
KworICAgICAgICAgICAgeyAiQWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCIsIGZhbHNlIH0sCisg
ICAgICAgICAgICB7ICJBc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZCIs
IGZhbHNlIH0sCisgICAgICAgICAgICB7ICJBc3luY0NsaXBib2FyZEFQSUVuYWJsZWQiLCBmYWxz
ZSB9LAorICAgICAgICAgICAgeyAiQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCIsIGZh
bHNlIH0sCisgICAgICAgICAgICB7ICJDb250YWN0UGlja2VyQVBJRW5hYmxlZCIsIGZhbHNlIH0s
CisgICAgICAgICAgICB7ICJDb3JlTWF0aE1MRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAg
ICB7ICJSZXF1ZXN0SWRsZUNhbGxiYWNrRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7
ICJSZXNpemVPYnNlcnZlckVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiV2ViR1BV
RW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgIH07CisgICAgfQorICAgIHJldHVybiBmZWF0dXJl
czsKK30KKwogY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBUZXN0SGVhZGVy
S2V5VHlwZT4mIFRlc3RPcHRpb25zOjprZXlUeXBlTWFwcGluZygpCiB7CiAgICAgc3RhdGljIGNv
bnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgVGVzdEhlYWRlcktleVR5cGU+IG1h
cCB7CkBAIC00Nyw1NiArODUsNDcgQEAgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3Ry
aW5nLCBUZQogICAgIHJldHVybiBtYXA7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRp
YyB2b2lkIHNldFZhbHVlSWZTZXRJbk1hcChUJiB2YWx1ZVRvU2V0LCBzdGQ6OnN0cmluZyBrZXks
IGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgVD4mIG1hcCkKK2Jvb2wgVGVz
dE9wdGlvbnM6OndlYlZpZXdJc0NvbXBhdGlibGVXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9u
cyYgb3B0aW9ucykgY29uc3QKK3sKKyAgICBpZiAobV9mZWF0dXJlcy5leHBlcmltZW50YWxGZWF0
dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy5pbnRlcm5hbERlYnVnRmVhdHVyZXMg
IT0gb3B0aW9ucy5tX2ZlYXR1cmVzLmludGVybmFsRGVidWdGZWF0dXJlcykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMg
IT0gb3B0aW9ucy5tX2ZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy5kb3VibGVXZWJQcmVmZXJlbmNlRmVh
dHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLmRvdWJsZVdlYlByZWZlcmVuY2VGZWF0dXJlcykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLnVpbnQzMldlYlByZWZl
cmVuY2VGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMudWludDMyV2ViUHJlZmVyZW5jZUZl
YXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuc3RyaW5n
V2ViUHJlZmVyZW5jZUZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5zdHJpbmdXZWJQcmVm
ZXJlbmNlRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJl
cy5ib29sVGVzdFJ1bm5lckZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5ib29sVGVzdFJ1
bm5lckZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMu
ZG91YmxlVGVzdFJ1bm5lckZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5kb3VibGVUZXN0
UnVubmVyRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJl
cy5zdHJpbmdUZXN0UnVubmVyRmVhdHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLnN0cmluZ1Rl
c3RSdW5uZXJGZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1
cmVzLnN0cmluZ1ZlY3RvclRlc3RSdW5uZXJGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMu
c3RyaW5nVmVjdG9yVGVzdFJ1bm5lckZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgZmVhdHVyZVZhbHVl
KHN0ZDo6c3RyaW5nIGtleSwgVCBkZWZhdWx0VmFsdWUsIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21h
cDxzdGQ6OnN0cmluZywgVD4mIG1hcCkKIHsKICAgICBhdXRvIGl0ID0gbWFwLmZpbmQoa2V5KTsK
LSAgICBpZiAoaXQgPT0gbWFwLmVuZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgdmFsdWVUb1Nl
dCA9IGl0LT5zZWNvbmQ7Ci19Ci0KLVRlc3RPcHRpb25zOjpUZXN0T3B0aW9ucyhUZXN0RmVhdHVy
ZXMgdGVzdEZlYXR1cmVzKQotewotICAgIHNldFZhbHVlSWZTZXRJbk1hcChhbGxvd0Nyb3NzT3Jp
Z2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscywgIkFsbG93Q3Jvc3NPcmlnaW5TdWJy
ZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJl
bmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChhbGxvd1RvcE5hdmlnYXRpb25U
b0RhdGFVUkxzLCAiQWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyIsIHRlc3RGZWF0dXJlcy5i
b29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxl
QWNjZWxlcmF0ZWREcmF3aW5nLCAiQWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCIsIHRlc3RGZWF0
dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAo
ZW5hYmxlQXR0YWNobWVudEVsZW1lbnQsICJBdHRhY2htZW50RWxlbWVudEVuYWJsZWQiLCB0ZXN0
RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldElu
TWFwKGVuYWJsZUJhY2tGb3J3YXJkQ2FjaGUsICJVc2VzQmFja0ZvcndhcmRDYWNoZSIsIHRlc3RG
ZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5N
YXAoZW5hYmxlQ29sb3JGaWx0ZXIsICJDb2xvckZpbHRlckVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMu
Ym9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJs
ZUluc3BlY3RvckFkZGl0aW9ucywgIkluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQiLCB0ZXN0RmVh
dHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFw
KGVuYWJsZUludGVyc2VjdGlvbk9ic2VydmVyLCAiSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbmFibGVk
IiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVl
SWZTZXRJbk1hcChlbmFibGVLZXlnZW5FbGVtZW50LCAiS2V5Z2VuRWxlbWVudEVuYWJsZWQiLCB0
ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNl
dEluTWFwKGVuYWJsZU1lbnVJdGVtRWxlbWVudCwgIk1lbnVJdGVtRWxlbWVudEVuYWJsZWQiLCB0
ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNl
dEluTWFwKGVuYWJsZU1vZGVybk1lZGlhQ29udHJvbHMsICJNb2Rlcm5NZWRpYUNvbnRyb2xzRW5h
YmxlZCIsIHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLQotICAgIHNl
dFZhbHVlSWZTZXRJbk1hcChlbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkLCAiZW5hYmxl
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCIsIHRlc3RGZWF0dXJlcy5ib29sVGVzdFJ1bm5lckZl
YXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJy
LCAiZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIiwgdGVzdEZlYXR1cmVzLmJvb2xUZXN0UnVubmVy
RmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChsYXllckJhY2tlZFdlYlZpZXcsICJs
YXllckJhY2tlZFdlYlZpZXciLCB0ZXN0RmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0dXJlcyk7
Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKHVzZUVwaGVtZXJhbFNlc3Npb24sICJ1c2VFcGhlbWVy
YWxTZXNzaW9uIiwgdGVzdEZlYXR1cmVzLmJvb2xUZXN0UnVubmVyRmVhdHVyZXMpOwotCi0gICAg
c2V0VmFsdWVJZlNldEluTWFwKGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLCAiYWRkaXRp
b25hbFN1cHBvcnRlZEltYWdlVHlwZXMiLCB0ZXN0RmVhdHVyZXMuc3RyaW5nVGVzdFJ1bm5lckZl
YXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoanNjT3B0aW9ucywgImpzY09wdGlvbnMi
LCB0ZXN0RmVhdHVyZXMuc3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVzKTsKLQotICAgIHNldFZhbHVl
SWZTZXRJbk1hcChlbmFibGVDU1NMb2dpY2FsLCAiQ1NTTG9naWNhbEVuYWJsZWQiLCB0ZXN0RmVh
dHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5h
YmxlTGluZUhlaWdodFVuaXRzLCAiTGluZUhlaWdodFVuaXRzRW5hYmxlZCIsIHRlc3RGZWF0dXJl
cy5pbnRlcm5hbERlYnVnRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVT
ZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzLCAic2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91
bmRhcmllc0VuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKTsKLSAg
ICBzZXRWYWx1ZUlmU2V0SW5NYXAobGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVu
YWJsZWQsICJMYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCIsIHRlc3RG
ZWF0dXJlcy5pbnRlcm5hbERlYnVnRmVhdHVyZXMpOwotCi0gICAgc2V0VmFsdWVJZlNldEluTWFw
KGFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQsICJBZENsaWNrQXR0cmlidXRpb25FbmFibGVkIiwg
dGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5N
YXAoZW5hYmxlQXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodCwgIkFzcGVjdFJhdGlv
T2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRh
bEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQXN5bmNDbGlwYm9hcmRB
UEksICJBc3luY0NsaXBib2FyZEFQSUVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJpbWVudGFs
RmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVDU1NPTVZpZXdTbW9vdGhT
Y3JvbGxpbmcsICJDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkIiwgdGVzdEZlYXR1cmVz
LmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQ29u
dGFjdFBpY2tlckFQSSwgIkNvbnRhY3RQaWNrZXJBUElFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4
cGVyaW1lbnRhbEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQ29yZU1h
dGhNTCwgIkNvcmVNYXRoTUxFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1
cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlUmVxdWVzdElkbGVDYWxsYmFjaywg
IlJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZl
YXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlUmVzaXplT2JzZXJ2ZXIsICJS
ZXNpemVPYnNlcnZlckVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMp
OwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVXZWJHUFUsICJXZWJHUFVFbmFibGVkIiwg
dGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKKyAgICBpZiAoaXQgIT0gbWFwLmVu
ZCgpKQorICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKKyAgICByZXR1cm4gZGVmYXVsdFZhbHVl
OworfQorCitib29sIFRlc3RPcHRpb25zOjpib29sVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZShzdGQ6
OnN0cmluZyBrZXksIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdAoreworICAgIHJldHVybiBmZWF0
dXJlVmFsdWUoa2V5LCBkZWZhdWx0VmFsdWUsIG1fZmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0
dXJlcyk7CiB9CiAKLWJvb2wgVGVzdE9wdGlvbnM6OndlYlZpZXdJc0NvbXBhdGlibGVXaXRoT3B0
aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3RoZXIpIGNvbnN0CitzdGQ6OnN0cmluZyBUZXN0T3B0
aW9uczo6c3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZShzdGQ6OnN0cmluZyBrZXksIHN0ZDo6
c3RyaW5nIGRlZmF1bHRWYWx1ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gb3RoZXIubGF5ZXJCYWNr
ZWRXZWJWaWV3ID09IGxheWVyQmFja2VkV2ViVmlldwotICAgICAgICAmJiBvdGhlci5qc2NPcHRp
b25zID09IGpzY09wdGlvbnM7CisgICAgcmV0dXJuIGZlYXR1cmVWYWx1ZShrZXksIGRlZmF1bHRW
YWx1ZSwgbV9mZWF0dXJlcy5zdHJpbmdUZXN0UnVubmVyRmVhdHVyZXMpOwogfQogCiB9CkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmgJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDUzICsz
MSwzOSBAQAogCiBuYW1lc3BhY2UgV1RSIHsKIAotc3RydWN0IFRlc3RPcHRpb25zIHsKLSAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoZXNlIGFuZCByZXBsYWNlIHdpdGggYWNjZXNzIHRvIFRlc3RGZWF0
dXJlcyBzZXQuCi0gICAgLy8gV2ViIFByZWZlcmVuY2VzCi0gICAgYm9vbCBhbGxvd0Nyb3NzT3Jp
Z2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyB7IGZhbHNlIH07Ci0gICAgYm9vbCBh
bGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzIHsgdHJ1ZSB9OwotICAgIGJvb2wgZW5hYmxlQWNj
ZWxlcmF0ZWREcmF3aW5nIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUF0dGFjaG1lbnRFbGVt
ZW50IHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUJhY2tGb3J3YXJkQ2FjaGUgeyBmYWxzZSB9
OwotICAgIGJvb2wgZW5hYmxlQ29sb3JGaWx0ZXIgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxl
SW5zcGVjdG9yQWRkaXRpb25zIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUludGVyc2VjdGlv
bk9ic2VydmVyIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUtleWdlbkVsZW1lbnQgeyBmYWxz
ZSB9OwotICAgIGJvb2wgZW5hYmxlTWVudUl0ZW1FbGVtZW50IHsgZmFsc2UgfTsKLSAgICBib29s
IGVuYWJsZU1vZGVybk1lZGlhQ29udHJvbHMgeyB0cnVlIH07Ci0KLSAgICAvLyBGSVhNRTogUmVt
b3ZlIHRoZXNlIGFuZCByZXBsYWNlIHdpdGggYWNjZXNzIHRvIFRlc3RGZWF0dXJlcyBzZXQuCi0g
ICAgLy8gSW50ZXJuYWwgRmVhdHVyZXMKLSAgICBib29sIGVuYWJsZUNTU0xvZ2ljYWwgeyBmYWxz
ZSB9OwotICAgIGJvb2wgZW5hYmxlTGluZUhlaWdodFVuaXRzIHsgZmFsc2UgfTsKLSAgICBib29s
IGVuYWJsZVNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXMgeyB0cnVlIH07Ci0gICAgYm9v
bCBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCB7IHRydWUgfTsKLQot
ICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlc2UgYW5kIHJlcGxhY2Ugd2l0aCBhY2Nlc3MgdG8gVGVz
dEZlYXR1cmVzIHNldC4KLSAgICAvLyBFeHBlcmltZW50YWwgRmVhdHVyZXMKLSAgICBib29sIGFk
Q2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQXNwZWN0
UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVB
c3luY0NsaXBib2FyZEFQSSB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVDU1NPTVZpZXdTbW9v
dGhTY3JvbGxpbmcgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQ29udGFjdFBpY2tlckFQSSB7
IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVDb3JlTWF0aE1MIHsgZmFsc2UgfTsKLSAgICBib29s
IGVuYWJsZVJlcXVlc3RJZGxlQ2FsbGJhY2sgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlUmVz
aXplT2JzZXJ2ZXIgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlV2ViR1BVIHsgZmFsc2UgfTsK
K2NsYXNzIFRlc3RPcHRpb25zIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVGVzdEZlYXR1
cmVzJiBkZWZhdWx0cygpOworICAgIHN0YXRpYyBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3Rk
OjpzdHJpbmcsIFRlc3RIZWFkZXJLZXlUeXBlPiYga2V5VHlwZU1hcHBpbmcoKTsKIAotICAgIC8v
IFRlc3QgUnVubmVyIFNwZWNpZmljIEZlYXR1cmVzCi0gICAgYm9vbCBkdW1wSlNDb25zb2xlTG9n
SW5TdGRFcnIgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
TG9hZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVXZWJTUUwgeyB0cnVlIH07Ci0gICAgYm9v
bCBsYXllckJhY2tlZFdlYlZpZXcgeyBmYWxzZSB9OwotICAgIGJvb2wgdXNlRXBoZW1lcmFsU2Vz
c2lvbiB7IGZhbHNlIH07Ci0gICAgc3RkOjpzdHJpbmcgYWRkaXRpb25hbFN1cHBvcnRlZEltYWdl
VHlwZXM7Ci0gICAgc3RkOjpzdHJpbmcganNjT3B0aW9uczsKKyAgICBleHBsaWNpdCBUZXN0T3B0
aW9ucyhUZXN0RmVhdHVyZXMgZmVhdHVyZXMpCisgICAgICAgIDogbV9mZWF0dXJlcyhzdGQ6Om1v
dmUoZmVhdHVyZXMpKQorICAgIHsKKyAgICB9CiAKLSAgICBleHBsaWNpdCBUZXN0T3B0aW9ucyhU
ZXN0RmVhdHVyZXMpOwogICAgIGJvb2wgd2ViVmlld0lzQ29tcGF0aWJsZVdpdGhPcHRpb25zKGNv
bnN0IFRlc3RPcHRpb25zJikgY29uc3Q7Ci0gICAgCi0gICAgc3RhdGljIGNvbnN0IHN0ZDo6dW5v
cmRlcmVkX21hcDxzdGQ6OnN0cmluZywgVGVzdEhlYWRlcktleVR5cGU+JiBrZXlUeXBlTWFwcGlu
ZygpOworCisgICAgLy8gVGVzdCBSdW5uZXIgU3BlY2lmaWMgRmVhdHVyZXMKKyAgICBib29sIGR1
bXBKU0NvbnNvbGVMb2dJblN0ZEVycigpIGNvbnN0IHsgcmV0dXJuIGJvb2xUZXN0UnVubmVyRmVh
dHVyZVZhbHVlKCJkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIiLCBmYWxzZSk7IH0KKyAgICBib29s
IGVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQoKSBjb25zdCB7IHJldHVybiBib29sVGVz
dFJ1bm5lckZlYXR1cmVWYWx1ZSgiZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCIsIGZh
bHNlKTsgfQorICAgIGJvb2wgbGF5ZXJCYWNrZWRXZWJWaWV3KCkgY29uc3QgeyByZXR1cm4gYm9v
bFRlc3RSdW5uZXJGZWF0dXJlVmFsdWUoImxheWVyQmFja2VkV2ViVmlldyIsIGZhbHNlKTsgfQor
ICAgIGJvb2wgdXNlRXBoZW1lcmFsU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGJvb2xUZXN0UnVu
bmVyRmVhdHVyZVZhbHVlKCJ1c2VFcGhlbWVyYWxTZXNzaW9uIiwgZmFsc2UpOyB9CisgICAgc3Rk
OjpzdHJpbmcgYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMoKSBjb25zdCB7IHJldHVybiBz
dHJpbmdUZXN0UnVubmVyRmVhdHVyZVZhbHVlKCJhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBl
cyIsIHsgfSk7IH0KKyAgICBzdGQ6OnN0cmluZyBqc2NPcHRpb25zKCkgY29uc3QgeyByZXR1cm4g
c3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZSgianNjT3B0aW9ucyIsIHsgfSk7IH0KKworICAg
IGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgYm9vbD4mIGJvb2xXZWJQcmVm
ZXJlbmNlRmVhdHVyZXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzLmJvb2xXZWJQcmVmZXJl
bmNlRmVhdHVyZXM7IH0KKyAgICBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcs
IGRvdWJsZT4mIGRvdWJsZVdlYlByZWZlcmVuY2VGZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1f
ZmVhdHVyZXMuZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzOyB9CisgICAgY29uc3Qgc3RkOjp1
bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCB1aW50MzJfdD4mIHVpbnQzMldlYlByZWZlcmVuY2VG
ZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMudWludDMyV2ViUHJlZmVyZW5jZUZl
YXR1cmVzOyB9CisgICAgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBzdGQ6
OnN0cmluZz4mIHN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1f
ZmVhdHVyZXMuc3RyaW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzOyB9CisKKyAgICBzdGF0aWMgc3Rk
OjpzdHJpbmcgdG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGNvbnN0IHN0ZDo6c3RyaW5nJik7
CisKK3ByaXZhdGU6CisgICAgYm9vbCBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZShzdGQ6
OnN0cmluZyBrZXksIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdDsKKyAgICBib29sIGJvb2xUZXN0
UnVubmVyRmVhdHVyZVZhbHVlKHN0ZDo6c3RyaW5nIGtleSwgYm9vbCBkZWZhdWx0VmFsdWUpIGNv
bnN0OworICAgIHN0ZDo6c3RyaW5nIHN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlVmFsdWUoc3RkOjpz
dHJpbmcga2V5LCBzdGQ6OnN0cmluZyBkZWZhdWx0VmFsdWUpIGNvbnN0OworCisgICAgVGVzdEZl
YXR1cmVzIG1fZmVhdHVyZXM7CiB9OwogCiB9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9E
dW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsx
MDksNyBAQAogCQk1REI5QUM5RTBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2VpZ2h0V2F0Y2hl
cjcwMC50dGYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDM3NUYwOTc3MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyNzAw
LnR0ZiAqLzsgfTsKIAkJNURCOUFDOUYwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktpdFdlaWdodFdh
dGNoZXI4MDAudHRmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzNzVGMDk3ODBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hl
cjgwMC50dGYgKi87IH07CiAJCTVEQjlBQ0EwMEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWln
aHRXYXRjaGVyOTAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzc1RjA5NzkwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdh
dGNoZXI5MDAudHRmICovOyB9OworCQk3QzRGMzA0MDI1M0I5NzBGMDAzMDU0NTggLyogVGVzdE9w
dGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNEYzMDNGMjUzQjgzNjkwMDMwNTQ1OCAv
KiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwICovOyB9Owog
CQk3Q0ZGOUJCRjI1MzNCQjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRkY5QkJFMjUzM0JCMjQwMDA4
MDA5RiAvKiBUZXN0RmVhdHVyZXMuY3BwICovOyB9OwogCQk3Q0ZGOUJDMjI1MzNCQzE2MDAwODAw
OUYgLyogVGVzdENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0NGRjlCQzEyNTMzQkMxNjAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmNwcCAq
LzsgfTsKIAkJODAwNDVBRUUxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODAwNDVBRUMxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyLm1tICovOyB9OwpAQCAtMzMzLDggKzMzNCwxMiBAQAogCQk3QzQ0Njk3RjI1Mzc3
QTAyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFRlc3RP
cHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0M0NDY5ODAyNTM3N0EwMjAwMjQyOTBBIC8qIGNoZWNrLXhjZmlsZWxpc3RzLnNoICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQuc2g7
IHBhdGggPSAiY2hlY2steGNmaWxlbGlzdHMuc2giOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzQ0Njk4MTI1Mzc3QTAyMDAyNDI5MEEgLyogZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2Vz
LnNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5zY3JpcHQuc2g7IHBhdGggPSAiZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzLnNoIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M0NDY5ODUyNTM3N0U1MjAwMjQyOTBBIC8qIFRlc3RP
cHRpb25zR2VuZXJhdGVkS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXN0T3B0aW9uc0dlbmVyYXRl
ZEtleXMuaDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzRGMzAzRjI1M0I4MzY5MDAzMDU0NTgg
LyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDOUUyNTBCMjUzQjc5NEEwMDQxMzAx
OCAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NCQkMzMjIxRERGQ0Y5QTAwNzg2QjlEIC8q
IFRlc3RPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RPcHRp
b25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDQ0JBNTFEMjUzQkI5RDMwMEJC
MzJDMSAvKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0ICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2ZpbGVsaXN0OyBwYXRoID0g
IkRlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3Q0NCQTUxRTI1M0JCOUQzMDBCQjMyQzEgLyogRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnhjZmlsZWxpc3Q7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0ZGOUJCRDI1MzNCQjI0MDAw
ODAwOUYgLyogVGVzdEZlYXR1cmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RGZWF0dXJlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0ZGOUJCRTI1MzNCQjI0MDAwODAwOUYgLyog
VGVzdEZlYXR1cmVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlc3RGZWF0dXJlcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRkY5QkMwMjUzM0JDMTYwMDA4MDA5RiAvKiBU
ZXN0Q29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0Q29tbWFuZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTAxLDYgKzUwNiw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCTBGMThFNkYxMUQ2QjlDNjQwMDI3RTU0NyAvKiBEZXJpdmVkU291
cmNlcy5tYWtlICovLAorCQkJCTdDQ0JBNTFEMjUzQkI5RDMwMEJCMzJDMSAvKiBEZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0ICovLAorCQkJCTdDQ0JBNTFFMjUzQkI5RDMwMEJCMzJDMSAv
KiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCAqLywKIAkJCQk3QzQ0Njk4MjI1Mzc3
QzM0MDAyNDI5MEEgLyogRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTMxNDhBMDY1MUU2RjkwRjQw
MEQzQjMxNiAvKiBUZXN0UnVubmVyU2hhcmVkICovLAogCQkJCTBGMThFNkU3MUQ2QjlCRjUwMDI3
RTU0NyAvKiBVSVNjcmlwdENvbnRleHQgKi8sCkBAIC03NzAsNiArNzc3LDcgQEAKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJN0M0NDY5N0YyNTM3N0EwMjAwMjQyOTBB
IC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYiAqLywKKwkJCQk3QzlFMjUwQjI1M0I3
OTRBMDA0MTMwMTggLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5n
LmNwcC5lcmIgKi8sCiAJCQkpOwogCQkJcGF0aCA9IFByZWZlcmVuY2VzVGVtcGxhdGVzOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTc3OCw2ICs3ODYsNyBAQAogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk3QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5MEEgLyog
VGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmggKi8sCisJCQkJN0M0RjMwM0YyNTNCODM2OTAwMzA1
NDU4IC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgKi8s
CiAJCQkpOwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQkJcGF0aCA9IERlcml2ZWRT
b3VyY2VzL0R1bXBSZW5kZXJUcmVlOwpAQCAtMTI5MSw2ICsxMzAwLDcgQEAKIAkJCQk3Q0ZGOUJD
MjI1MzNCQzE2MDAwODAwOUYgLyogVGVzdENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0NGRjlCQkYyNTMzQkIyNDAwMDgwMDlGIC8qIFRlc3RGZWF0dXJlcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBMzBBMjFGODIwNTFEOEM0MDAwOEZGNDIgLyogVGVzdE9wdGlvbnMuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJN0M0RjMwNDAyNTNCOTcwRjAwMzA1NDU4IC8qIFRlc3RPcHRpb25zR2Vu
ZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzAx
MzFEQTBDOTc3MjAxMDA4NzMxN0QgLyogVGVzdFJ1bm5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQ0ExOEIyNDBDOUIwMTRCMDAxMTQzNjkgLyogVGVzdFJ1bm5lck1hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUY0RDQyMzYxMURENTA0ODIwMDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVy
SU9TLm0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1NjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0
ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRp
b25zR2VuZXJhdGVkS2V5cy5oLmVyYgkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAog
I3ByYWdtYSBvbmNlCiAKICNkZWZpbmUgR0VORVJBVEVEX1dFQl9QUkVGRVJFTkNFX0tFWV9UWVBF
X01BUFBJTkdTIFwKLTwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzIGRvIC0lPgorPCUtIGZv
ciBAcHJlZiBpbiBAcHJlZmVyZW5jZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3NlZCB9ICBkbyAtJT4K
ICAgICB7ICI8JT0gQHByZWYubmFtZSAlPiIsIFRlc3RIZWFkZXJLZXlUeXBlOjo8JT0gQHByZWYu
dHlwZVVwcGVyICU+V2ViUHJlZmVyZW5jZSB9LCBcCiA8JS0gZW5kIC0lPgogXApJbmRleDogVG9v
bHMvRHVtcFJlbmRlclRyZWUvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9u
c0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9EdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRp
b25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiCShub25leGlzdGVudCkK
KysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVz
dE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIDwlPSBAd2FybmluZyAlPgorICoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0T3B0aW9ucy5oIgorCituYW1l
c3BhY2UgV1RSIHsKKworc3RkOjpzdHJpbmcgVGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJl
ZmVyZW5jZUtleShjb25zdCBzdGQ6OnN0cmluZyYgd2ViUHJlZmVyZW5jZXNLZXkpCit7CisgICAg
c3RhdGljIHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IG5vblN0
YW5kYXJkS2V5cyA9IHsKKzwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzLnNlbGVjdCB7IHxw
fCBwLm9wdHNbIndlYktpdExlZ2FjeVByZWZlcmVuY2VLZXkiXSB9IGRvIC0lPgorICAgICAgICB7
ICI8JT0gQHByZWYubmFtZSAlPiIsICI8JT0gQHByZWYucHJlZmVyZW5jZUtleSAlPiIgfSwgXAor
PCUtIGVuZCAtJT4KKyAgICB9OworCisgICAgYXV0byBpdCA9IG5vblN0YW5kYXJkS2V5cy5maW5k
KHdlYlByZWZlcmVuY2VzS2V5KTsKKyAgICBpZiAoaXQgIT0gbm9uU3RhbmRhcmRLZXlzLmVuZCgp
KQorICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKKworICAgIHJldHVybiAiV2ViS2l0IiArIHdl
YlByZWZlcmVuY2VzS2V5OworfQorCit9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RHVtcFJlbmRlclRyZWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlLm1tCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyOSw3ICsxMjks
MTAgQEAgZXh0ZXJuICJDIiB7CiAjaW1wb3J0IDxtYWNoLW8vZ2V0c2VjdC5oPgogfQogCi11c2lu
ZyBuYW1lc3BhY2Ugc3RkOworc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4gdG9OUyhjb25zdCBz
dGQ6OnN0cmluZyYgc3RyaW5nKQoreworICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxs
b2NdIGluaXRXaXRoVVRGOFN0cmluZzpzdHJpbmcuY19zdHIoKV0pOworfQogCiAjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiBAaW50ZXJmYWNlIER1bXBSZW5kZXJUcmVlQXBwbGljYXRpb24gOiBO
U0FwcGxpY2F0aW9uCkBAIC0xNTEsNyArMTU0LDcgQEAgLSAodm9pZCl2aWV3OihVSVdlYkRvY3Vt
ZW50VmlldyAqKXZpZXcgZAogICAgIEFTU0VSVChzY3JvbGxWaWV3ICYmIFtzY3JvbGxWaWV3IGlz
S2luZE9mQ2xhc3M6W1VJV2ViU2Nyb2xsVmlldyBjbGFzc11dKTsKICAgICBjb25zdCBDR1NpemUg
c2Nyb2xsVmlld1NpemUgPSBbc2Nyb2xsVmlldyBib3VuZHNdLnNpemU7CiAgICAgQ0dTaXplIGNv
bnRlbnRTaXplID0gbmV3RnJhbWUuc2l6ZTsKLSAgICBjb250ZW50U2l6ZS5oZWlnaHQgPSBDR1Jv
dW5kKG1heChDR1JlY3RHZXRNYXhZKG5ld0ZyYW1lKSwgc2Nyb2xsVmlld1NpemUuaGVpZ2h0KSk7
CisgICAgY29udGVudFNpemUuaGVpZ2h0ID0gQ0dSb3VuZChzdGQ6Om1heChDR1JlY3RHZXRNYXhZ
KG5ld0ZyYW1lKSwgc2Nyb2xsVmlld1NpemUuaGVpZ2h0KSk7CiAgICAgWyhVSVdlYlNjcm9sbFZp
ZXcgKilzY3JvbGxWaWV3IHNldENvbnRlbnRTaXplOmNvbnRlbnRTaXplXTsKIH0KIEBlbmQKQEAg
LTE3Nyw3ICsxODAsNyBAQCAtIChXZWJDb3JlOjpGcmFtZSopX21haW5Db3JlRnJhbWU7CiBAZW5k
CiAjZW5kaWYKIAotc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIHRlc3RVUkwpOwor
c3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgdGVzdFVSTCk7CiAKIC8vIERl
Y2lkaW5nIHdoZW4gaXQncyBPSyB0byBkdW1wIG91dCB0aGUgc3RhdGUgaXMgYSBiaXQgdHJpY2t5
LiAgQWxsIHRoZXNlIG11c3QgYmUgdHJ1ZToKIC8vIC0gVGhlcmUgaXMgbm8gbG9hZCBpbiBwcm9n
cmVzcwpAQCAtMjQ4LDcgKzI1MSw3IEBAIHZvaWQgc2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0
TG9jYXRpb24KICAgICBwZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbiA9IHVybDsKIH0K
IAotc3RhdGljIGJvb2wgc2hvdWxkSWdub3JlV2ViQ29yZU5vZGVMZWFrcyhjb25zdCBzdHJpbmcm
IHVybFN0cmluZykKK3N0YXRpYyBib29sIHNob3VsZElnbm9yZVdlYkNvcmVOb2RlTGVha3MoY29u
c3Qgc3RkOjpzdHJpbmcmIHVybFN0cmluZykKIHsKICAgICBzdGF0aWMgY2hhciogY29uc3QgaWdu
b3JlU2V0W10gPSB7CiAgICAgICAgIC8vIEtlZXBpbmcgdGhpcyBpbmZyYXN0cnVjdHVyZSBhcm91
bmQgaW4gY2FzZSB3ZSBldmVyIG5lZWQgaXQgYWdhaW4uCkBAIC0yNTcsNyArMjYwLDcgQEAgc3Rh
dGljIGJvb2wgc2hvdWxkSWdub3JlV2ViQ29yZU5vZGVMZWFrcwogCiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBpZ25vcmVTZXRDb3VudDsgaSsrKSB7CiAgICAgICAgIC8vIEZJWE1FOiBpZ25vcmUg
Y2FzZQotICAgICAgICBzdHJpbmcgY3VySWdub3JlKGlnbm9yZVNldFtpXSk7CisgICAgICAgIHN0
ZDo6c3RyaW5nIGN1cklnbm9yZShpZ25vcmVTZXRbaV0pOwogICAgICAgICAvLyBNYXRjaCBhdCB0
aGUgZW5kIG9mIHRoZSB1cmxTdHJpbmcuCiAgICAgICAgIGlmICghdXJsU3RyaW5nLmNvbXBhcmUo
dXJsU3RyaW5nLmxlbmd0aCgpIC0gY3VySWdub3JlLmxlbmd0aCgpLCBjdXJJZ25vcmUubGVuZ3Ro
KCksIGN1cklnbm9yZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTYxNSw4ICs2MTgs
OCBAQCAtIChOU1JlY3QpcmVjdEZvclBhcnQ6KE5TU2Nyb2xsZXJQYXJ0KXBhCiAgICAgQk9PTCBp
c0hvcml6b250YWwgPSBmcmFtZVJlY3Quc2l6ZS53aWR0aCA+IGZyYW1lUmVjdC5zaXplLmhlaWdo
dDsKICAgICBDR0Zsb2F0IHRyYWNrTGVuZ3RoID0gaXNIb3Jpem9udGFsID8gYm91bmRzLnNpemUu
d2lkdGggOiBib3VuZHMuc2l6ZS5oZWlnaHQ7CiAgICAgQ0dGbG9hdCBtaW5Lbm9iU2l6ZSA9IGlz
SG9yaXpvbnRhbCA/IGJvdW5kcy5zaXplLmhlaWdodCA6IGJvdW5kcy5zaXplLndpZHRoOwotICAg
IENHRmxvYXQga25vYkxlbmd0aCA9IG1heChtaW5Lbm9iU2l6ZSwgc3RhdGljX2Nhc3Q8Q0dGbG9h
dD4ocm91bmQodHJhY2tMZW5ndGggKiBbc2VsZiBrbm9iUHJvcG9ydGlvbl0pKSk7Ci0gICAgQ0dG
bG9hdCBrbm9iUG9zaXRpb24gPSBzdGF0aWNfY2FzdDxDR0Zsb2F0Pigocm91bmQoW3NlbGYgZG91
YmxlVmFsdWVdICogKHRyYWNrTGVuZ3RoIC0ga25vYkxlbmd0aCkpKSk7CisgICAgQ0dGbG9hdCBr
bm9iTGVuZ3RoID0gc3RkOjptYXgobWluS25vYlNpemUsIHN0YXRpY19jYXN0PENHRmxvYXQ+KHN0
ZDo6cm91bmQodHJhY2tMZW5ndGggKiBbc2VsZiBrbm9iUHJvcG9ydGlvbl0pKSk7CisgICAgQ0dG
bG9hdCBrbm9iUG9zaXRpb24gPSBzdGF0aWNfY2FzdDxDR0Zsb2F0Pigoc3RkOjpyb3VuZChbc2Vs
ZiBkb3VibGVWYWx1ZV0gKiAodHJhY2tMZW5ndGggLSBrbm9iTGVuZ3RoKSkpKTsKIAogICAgIGlm
IChpc0hvcml6b250YWwpCiAgICAgICAgIHJldHVybiBOU01ha2VSZWN0KGJvdW5kcy5vcmlnaW4u
eCArIGtub2JQb3NpdGlvbiwgYm91bmRzLm9yaWdpbi55LCBrbm9iTGVuZ3RoLCBib3VuZHMuc2l6
ZS5oZWlnaHQpOwpAQCAtNjcyLDYgKzY3NSwxMCBAQCBXZWJWaWV3ICpjcmVhdGVXZWJWaWV3QW5k
T2Zmc2NyZWVuV2luZG93CiAgICAgW3dlYlZpZXcgc2V0R3JvdXBOYW1lOkAib3JnLndlYmtpdC5E
dW1wUmVuZGVyVHJlZSJdOwogI2VuZGlmCiAKKyAgICBXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5j
ZXMgPSBbW1dlYlByZWZlcmVuY2VzIGFsbG9jXSBpbml0XTsKKyAgICBbcHJlZmVyZW5jZXMgc2V0
QXV0b3NhdmVzOk5PXTsKKyAgICBbd2ViVmlldyBzZXRQcmVmZXJlbmNlczpwcmVmZXJlbmNlc107
CisKICAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOnVpRGVsZWdhdGVdOwogICAgIFt3ZWJWaWV3
IHNldEZyYW1lTG9hZERlbGVnYXRlOmZyYW1lTG9hZERlbGVnYXRlXTsKICAgICBbd2ViVmlldyBz
ZXRFZGl0aW5nRGVsZWdhdGU6ZWRpdGluZ0RlbGVnYXRlXTsKQEAgLTY4NSw4ICs2OTIsNiBAQCBX
ZWJWaWV3ICpjcmVhdGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93CiAgICAgW1dlYlZpZXcgcmVn
aXN0ZXJVUkxTY2hlbWVBc0xvY2FsOkAiZmVlZHMiXTsKICAgICBbV2ViVmlldyByZWdpc3RlclVS
TFNjaGVtZUFzTG9jYWw6QCJmZWVkc2VhcmNoIl07CiAKLSAgICBbW3dlYlZpZXcgcHJlZmVyZW5j
ZXNdIF9zZXRNZWRpYVJlY29yZGVyRW5hYmxlZDpZRVNdOwotCiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIFt3ZWJWaWV3IHNldFdpbmRvd09jY2x1c2lvbkRldGVjdGlvbkVuYWJsZWQ6Tk9dOwogICAg
IFtXZWJWaWV3IF9zZXRGb250QWxsb3dMaXN0OmZvbnRBbGxvd0xpc3QoKV07CkBAIC04NDQsOSAr
ODQ5LDggQEAgc3RhdGljIHZvaWQgZW5hYmxlRXhwZXJpbWVudGFsRmVhdHVyZXMoVwogfQogCiAv
LyBDYWxsZWQgYmVmb3JlIGVhY2ggdGVzdC4KLXN0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5j
ZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKQorc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1Rv
Q29uc2lzdGVudFZhbHVlcyhXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMpCiB7Ci0gICAgV2Vi
UHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzID0gW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVy
ZW5jZXNdOwogICAgIGVuYWJsZUV4cGVyaW1lbnRhbEZlYXR1cmVzKHByZWZlcmVuY2VzKTsKIAog
ICAgIFtwcmVmZXJlbmNlcyBzZXROZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyazog
Tk9dOwpAQCAtOTAyLDYgKzkwNiw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNU
b0NvbnNpc3QKICAgICB9IGVsc2UKICAgICAgICAgW3ByZWZlcmVuY2VzIHNldFVzZXJTdHlsZVNo
ZWV0RW5hYmxlZDpOT107CiAKKyAgICBbcHJlZmVyZW5jZXMgc2V0SW5saW5lTWVkaWFQbGF5YmFj
a1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGU6Tk9dOwogICAgIFtwcmVmZXJlbmNlcyBzZXRN
ZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lOllFU107CiAgICAgW3ByZWZlcmVuY2VzIHNldE1lZGlh
UGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlOk5PXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0Vmlk
ZW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmU6Tk9dOwpAQCAtOTI4LDkgKzkzMyw4IEBAIHN0
YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3QKICNlbmRpZgogICAgIFtwcmVm
ZXJlbmNlcyBzZXRVc2VQcmVIVE1MNVBhcnNlclF1aXJrczpOT107CiAgICAgW3ByZWZlcmVuY2Vz
IHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOk5PXTsKLSNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICBBU1NFUlQoW3ByZWZlcmVuY2VzIG1vY2tTY3JvbGxiYXJzRW5hYmxl
ZF0pOwotI2VuZGlmCisKKyAgICBbcHJlZmVyZW5jZXMgc2V0TW9ja1Njcm9sbGJhcnNFbmFibGVk
OllFU107CiAKICAgICBbcHJlZmVyZW5jZXMgc2V0V2ViQXVkaW9FbmFibGVkOllFU107CiAgICAg
W3ByZWZlcmVuY2VzIHNldE1vZGVyblVucHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ6WUVTXTsKQEAg
LTk2MCw2ICs5NjQsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0
CiAgICAgcHJlZmVyZW5jZXMubWVkaWFDYXBhYmlsaXRpZXNFbmFibGVkID0gWUVTOwogCiAgICAg
cHJlZmVyZW5jZXMuc2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllc0VuYWJsZWQgPSBZRVM7
CisgICAgcHJlZmVyZW5jZXMuZnVsbFNjcmVlbkVuYWJsZWQgPSBZRVM7CiAKICAgICBbcHJlZmVy
ZW5jZXMgc2V0V2ViU1FMRW5hYmxlZDpZRVNdOwogCkBAIC05NjcsMzQgKzk3MiwyMSBAQCBzdGF0
aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0CiAgICAgW1dlYlByZWZlcmVuY2Vz
IF9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6TlNIVFRQ
Q29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW5dOwogfQogCi1zdGF0
aWMgdm9pZCBzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKGNvbnN0IFdUUjo6VGVzdE9w
dGlvbnMmIG9wdGlvbnMpCitzdGF0aWMgdm9pZCBzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRp
b25zKFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcywgY29uc3QgV1RSOjpUZXN0T3B0aW9ucyYg
b3B0aW9ucykKIHsKLSAgICBXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbV2ViUHJlZmVy
ZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc107CisgICAgcHJlZmVyZW5jZXMucHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCA9IG9wdGlvbnMudXNlRXBoZW1lcmFsU2Vzc2lvbigpOworCisgICAgZm9yIChj
b25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVy
ZXMoKSkKKyAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXRCb29sUHJlZmVyZW5jZUZvclRlc3RpbmdX
aXRoVmFsdWU6dmFsdWUgZm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdh
Y3lQcmVmZXJlbmNlS2V5KGtleSkpLmdldCgpXTsKKworICAgIGZvciAoY29uc3QgYXV0byYgW2tl
eSwgdmFsdWVdIDogb3B0aW9ucy5kb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAg
ICAgW3ByZWZlcmVuY2VzIF9zZXREb3VibGVQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2
YWx1ZSBmb3JLZXk6dG9OUyhXVFI6OlRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVu
Y2VLZXkoa2V5KSkuZ2V0KCldOwogCi0gICAgcHJlZmVyZW5jZXMuYXR0YWNobWVudEVsZW1lbnRF
bmFibGVkID0gb3B0aW9ucy5lbmFibGVBdHRhY2htZW50RWxlbWVudDsKLSAgICBwcmVmZXJlbmNl
cy5hY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkID0gb3B0aW9ucy5lbmFibGVBY2NlbGVyYXRlZERy
YXdpbmc7Ci0gICAgcHJlZmVyZW5jZXMubWVudUl0ZW1FbGVtZW50RW5hYmxlZCA9IG9wdGlvbnMu
ZW5hYmxlTWVudUl0ZW1FbGVtZW50OwotICAgIHByZWZlcmVuY2VzLmtleWdlbkVsZW1lbnRFbmFi
bGVkID0gb3B0aW9ucy5lbmFibGVLZXlnZW5FbGVtZW50OwotICAgIHByZWZlcmVuY2VzLm1vZGVy
bk1lZGlhQ29udHJvbHNFbmFibGVkID0gb3B0aW9ucy5lbmFibGVNb2Rlcm5NZWRpYUNvbnRyb2xz
OwotICAgIHByZWZlcmVuY2VzLmluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQgPSBvcHRpb25zLmVu
YWJsZUluc3BlY3RvckFkZGl0aW9uczsKLSAgICBwcmVmZXJlbmNlcy5hbGxvd0Nyb3NzT3JpZ2lu
U3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyA9IG9wdGlvbnMuYWxsb3dDcm9zc09yaWdp
blN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHM7Ci0gICAgcHJlZmVyZW5jZXMuY29sb3JG
aWx0ZXJFbmFibGVkID0gb3B0aW9ucy5lbmFibGVDb2xvckZpbHRlcjsKLSAgICBwcmVmZXJlbmNl
cy5zZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxl
U2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllczsKLSAgICBwcmVmZXJlbmNlcy53ZWJHUFVF
bmFibGVkID0gb3B0aW9ucy5lbmFibGVXZWJHUFU7Ci0gICAgcHJlZmVyZW5jZXMuQ1NTTG9naWNh
bEVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUNTU0xvZ2ljYWw7Ci0gICAgcHJlZmVyZW5jZXMubGlu
ZUhlaWdodFVuaXRzRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlTGluZUhlaWdodFVuaXRzOwotICAg
IHByZWZlcmVuY2VzLmFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQgPSBvcHRpb25zLmFkQ2xpY2tB
dHRyaWJ1dGlvbkVuYWJsZWQ7Ci0gICAgcHJlZmVyZW5jZXMucmVzaXplT2JzZXJ2ZXJFbmFibGVk
ID0gb3B0aW9ucy5lbmFibGVSZXNpemVPYnNlcnZlcjsKLSAgICBwcmVmZXJlbmNlcy5DU1NPTVZp
ZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkID0gb3B0aW9ucy5lbmFibGVDU1NPTVZpZXdTbW9vdGhT
Y3JvbGxpbmc7Ci0gICAgcHJlZmVyZW5jZXMuY29yZU1hdGhNTEVuYWJsZWQgPSBvcHRpb25zLmVu
YWJsZUNvcmVNYXRoTUw7Ci0gICAgcHJlZmVyZW5jZXMucmVxdWVzdElkbGVDYWxsYmFja0VuYWJs
ZWQgPSBvcHRpb25zLmVuYWJsZVJlcXVlc3RJZGxlQ2FsbGJhY2s7Ci0gICAgcHJlZmVyZW5jZXMu
YXN5bmNDbGlwYm9hcmRBUElFbmFibGVkID0gb3B0aW9ucy5lbmFibGVBc3luY0NsaXBib2FyZEFQ
STsKLSAgICBwcmVmZXJlbmNlcy5wcml2YXRlQnJvd3NpbmdFbmFibGVkID0gb3B0aW9ucy51c2VF
cGhlbWVyYWxTZXNzaW9uOwotICAgIHByZWZlcmVuY2VzLnVzZXNQYWdlQ2FjaGUgPSBvcHRpb25z
LmVuYWJsZUJhY2tGb3J3YXJkQ2FjaGU7Ci0gICAgcHJlZmVyZW5jZXMubGF5b3V0Rm9ybWF0dGlu
Z0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQgPSBvcHRpb25zLmxheW91dEZvcm1hdHRpbmdDb250
ZXh0SW50ZWdyYXRpb25FbmFibGVkOwotICAgIHByZWZlcmVuY2VzLmFzcGVjdFJhdGlvT2ZJbWdG
cm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkID0gb3B0aW9ucy5lbmFibGVBc3BlY3RSYXRpb09mSW1n
RnJvbVdpZHRoQW5kSGVpZ2h0OwotICAgIHByZWZlcmVuY2VzLmFsbG93VG9wTmF2aWdhdGlvblRv
RGF0YVVSTHMgPSBvcHRpb25zLmFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHM7Ci0gICAgcHJl
ZmVyZW5jZXMuY29udGFjdFBpY2tlckFQSUVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUNvbnRhY3RQ
aWNrZXJBUEk7CisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLnVp
bnQzMldlYlByZWZlcmVuY2VGZWF0dXJlcygpKQorICAgICAgICBbcHJlZmVyZW5jZXMgX3NldFVJ
bnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnZhbHVlIGZvcktleTp0b05TKFdUUjo6
VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShrZXkpKS5nZXQoKV07CisK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuc3RyaW5nV2ViUHJl
ZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0U3RyaW5nUHJlZmVy
ZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dG9OUyh2YWx1ZSkuZ2V0KCkgZm9yS2V5OnRvTlMoV1RS
OjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGtleSkpLmdldCgpXTsK
IH0KIAogLy8gQ2FsbGVkIG9uY2Ugb24gRHVtcFJlbmRlclRyZWUgc3RhcnR1cC4KQEAgLTEwMTgs
OSArMTAxMCw2IEBAIHN0YXRpYyB2b2lkIHNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWUKICAg
ICAgICAgQCJBcHBsZU90aGVySGlnaGxpZ2h0Q29sb3IiOkAiMC41MDAwMDAgMC41MDAwMDAgMC41
MDAwMDAiLAogICAgICAgICBAIkFwcGxlTGFuZ3VhZ2VzIjogQFsgQCJlbiIgXSwKICAgICAgICAg
V2ViS2l0RW5hYmxlRnVsbERvY3VtZW50VGVhcmRvd25QcmVmZXJlbmNlS2V5OiBAWUVTLAotICAg
ICAgICBXZWJLaXRGdWxsU2NyZWVuRW5hYmxlZFByZWZlcmVuY2VLZXk6IEBZRVMsCi0gICAgICAg
IFdlYktpdEFsbG93c0lubGluZU1lZGlhUGxheWJhY2tQcmVmZXJlbmNlS2V5OiBAWUVTLAotICAg
ICAgICBXZWJLaXRJbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0
ZUtleTogQE5PLAogICAgICAgICBAIlVzZVdlYktpdFdlYkluc3BlY3RvciI6IEBZRVMsCiAjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIEAiTlNQcmVmZXJyZWRTcGVsbFNlcnZlckxh
bmd1YWdlIjogQCJlbl9VUyIsCkBAIC0xNDMxLDcgKzE0MjAsNyBAQCBzdGF0aWMgTlNJbnRlZ2Vy
IGNvbXBhcmVIaXN0b3J5SXRlbXMoaWQgCiAKIHN0YXRpYyBOU0RhdGEgKmR1bXBBdWRpbygpCiB7
Ci0gICAgY29uc3QgdmVjdG9yPGNoYXI+JiBkYXRhVmVjdG9yID0gZ1Rlc3RSdW5uZXItPmF1ZGlv
UmVzdWx0KCk7CisgICAgY29uc3QgYXV0byYgZGF0YVZlY3RvciA9IGdUZXN0UnVubmVyLT5hdWRp
b1Jlc3VsdCgpOwogCiAgICAgTlNEYXRhICpkYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmRh
dGFWZWN0b3IuZGF0YSgpIGxlbmd0aDpkYXRhVmVjdG9yLnNpemUoKV07CiAgICAgcmV0dXJuIGRh
dGE7CkBAIC0xNjI3LDcgKzE2MTYsNyBAQCBzdGF0aWMgdm9pZCBzaXplV2ViVmlld0ZvckN1cnJl
bnRUZXN0KCkKICAgICBbdWlEZWxlZ2F0ZSByZXNldFdpbmRvd09yaWdpbl07CiAKICAgICAvLyBX
M0MgU1ZHIHRlc3RzIGV4cGVjdCB0byBiZSA0ODB4MzYwCi0gICAgYm9vbCBpc1NWR1czQ1Rlc3Qg
PSAoZ1Rlc3RSdW5uZXItPnRlc3RVUkwoKS5maW5kKCJzdmcvVzNDLVNWRy0xLjEiKSAhPSBzdHJp
bmc6Om5wb3MpOworICAgIGJvb2wgaXNTVkdXM0NUZXN0ID0gKGdUZXN0UnVubmVyLT50ZXN0VVJM
KCkuZmluZCgic3ZnL1czQy1TVkctMS4xIikgIT0gc3RkOjpzdHJpbmc6Om5wb3MpOwogICAgIE5T
U2l6ZSBmcmFtZVNpemUgPSBpc1NWR1czQ1Rlc3QgPyBOU01ha2VTaXplKFRlc3RSdW5uZXI6Oncz
Y1NWR1ZpZXdXaWR0aCwgVGVzdFJ1bm5lcjo6dzNjU1ZHVmlld0hlaWdodCkgOiBOU01ha2VTaXpl
KFRlc3RSdW5uZXI6OnZpZXdXaWR0aCwgVGVzdFJ1bm5lcjo6dmlld0hlaWdodCk7CiAgICAgW1tt
YWluRnJhbWUgd2ViVmlld10gc2V0RnJhbWVTaXplOmZyYW1lU2l6ZV07CiAgICAgW1ttYWluRnJh
bWUgZnJhbWVWaWV3XSBzZXRGcmFtZTpOU01ha2VSZWN0KDAsIDAsIGZyYW1lU2l6ZS53aWR0aCwg
ZnJhbWVTaXplLmhlaWdodCldOwpAQCAtMTgyNiw5ICsxODE1LDkgQEAgc3RhdGljIHZvaWQgc2V0
SlNDT3B0aW9ucyhjb25zdCBXVFI6OlRlcwogICAgICAgICBzYXZlZE9wdGlvbnMuY2xlYXIoKTsK
ICAgICB9CiAKLSAgICBpZiAob3B0aW9ucy5qc2NPcHRpb25zLmxlbmd0aCgpKSB7CisgICAgaWYg
KCFvcHRpb25zLmpzY09wdGlvbnMoKS5lbXB0eSgpKSB7CiAgICAgICAgIEpTQzo6T3B0aW9uczo6
ZHVtcEFsbE9wdGlvbnNJbkFMaW5lKHNhdmVkT3B0aW9ucyk7Ci0gICAgICAgIEpTQzo6T3B0aW9u
czo6c2V0T3B0aW9ucyhvcHRpb25zLmpzY09wdGlvbnMuY19zdHIoKSk7CisgICAgICAgIEpTQzo6
T3B0aW9uczo6c2V0T3B0aW9ucyhvcHRpb25zLmpzY09wdGlvbnMoKS5jX3N0cigpKTsKICAgICB9
CiB9CiAKQEAgLTE4MzksNiArMTgyOCwxMCBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0Nv
bnNpc3RlbnRTdGF0CiAKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW21haW5GcmFtZSB3ZWJWaWV3
XTsKIAorICAgIFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtbV2ViUHJlZmVyZW5jZXMg
YWxsb2NdIGluaXRdOworICAgIFtwcmVmZXJlbmNlcyBzZXRBdXRvc2F2ZXM6Tk9dOworICAgIFt3
ZWJWaWV3IHNldFByZWZlcmVuY2VzOnByZWZlcmVuY2VzXTsKKwogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgYWRqdXN0V2ViRG9jdW1lbnRGb3JTdGFuZGFyZFZpZXdwb3J0KGdXZWJCcm93
c2VyVmlldywgZ1dlYlNjcm9sbFZpZXcpOwogICAgIFt3ZWJWaWV3IF9zZXRBbGxvd3NNZXNzYWdp
bmc6WUVTXTsKQEAgLTE4NjcsMTAgKzE4NjAsMTAgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3
VG9Db25zaXN0ZW50U3RhdAogCiAgICAgW1dlYkNhY2hlIGNsZWFyQ2FjaGVkQ3JlZGVudGlhbHNd
OwogCi0gICAgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcygpOwotICAgIHNl
dFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMob3B0aW9ucyk7CisgICAgcmVzZXRXZWJQcmVm
ZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhwcmVmZXJlbmNlcyk7CisgICAgc2V0V2ViUHJlZmVy
ZW5jZXNGb3JUZXN0T3B0aW9ucyhwcmVmZXJlbmNlcywgb3B0aW9ucyk7CiAjaWYgUExBVEZPUk0o
TUFDKQotICAgIFt3ZWJWaWV3IHNldFdhbnRzTGF5ZXI6b3B0aW9ucy5sYXllckJhY2tlZFdlYlZp
ZXddOworICAgIFt3ZWJWaWV3IHNldFdhbnRzTGF5ZXI6b3B0aW9ucy5sYXllckJhY2tlZFdlYlZp
ZXcoKV07CiAjZW5kaWYKIAogICAgIFRlc3RSdW5uZXI6OnNldFNlcmlhbGl6ZUhUVFBMb2Fkcyhm
YWxzZSk7CkBAIC0xOTE0LDcgKzE5MDcsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0Nv
bnNpc3RlbnRTdGF0CiAgICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIGRlY2xh
cmVUeXBlczpAW05TU3RyaW5nUGJvYXJkVHlwZV0gb3duZXI6bmlsXTsKICNlbmRpZgogCi0gICAg
V2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRBZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlc0ZvclRl
c3Rpbmcob3B0aW9ucy5hZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcy5jX3N0cigpKTsKKyAg
ICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzRm9y
VGVzdGluZyhvcHRpb25zLmFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzKCkuY19zdHIoKSk7
CiAKICAgICBbbWFpbkZyYW1lIF9jbGVhck9wZW5lcl07CiAKQEAgLTE5NzAsMTkgKzE5NjMsMTkg
QEAgc3RhdGljIE5TVVJMICpjb21wdXRlVGVzdFVSTChOU1N0cmluZyAqcAogCiBzdGF0aWMgV1RS
OjpUZXN0T3B0aW9ucyB0ZXN0T3B0aW9uc0ZvclRlc3QoY29uc3QgV1RSOjpUZXN0Q29tbWFuZCYg
Y29tbWFuZCkKIHsKLSAgICBXVFI6OlRlc3RGZWF0dXJlcyBmZWF0dXJlczsKKyAgICBXVFI6OlRl
c3RGZWF0dXJlcyBmZWF0dXJlcyA9IFdUUjo6VGVzdE9wdGlvbnM6OmRlZmF1bHRzKCk7CiAgICAg
V1RSOjptZXJnZShmZWF0dXJlcywgV1RSOjpoYXJkY29kZWRGZWF0dXJlc0Jhc2VkT25QYXRoRm9y
VGVzdChjb21tYW5kKSk7CiAgICAgV1RSOjptZXJnZShmZWF0dXJlcywgV1RSOjpmZWF0dXJlRGVm
YXVsdHNGcm9tVGVzdEhlYWRlckZvclRlc3QoY29tbWFuZCwgV1RSOjpUZXN0T3B0aW9uczo6a2V5
VHlwZU1hcHBpbmcoKSkpOwogCiAgICAgcmV0dXJuIFdUUjo6VGVzdE9wdGlvbnMgeyBXVEZNb3Zl
KGZlYXR1cmVzKSB9OwogfQogCi1zdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgaW5w
dXRMaW5lKQorc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgaW5wdXRMaW5l
KQogewogICAgIEFTU0VSVCghaW5wdXRMaW5lLmVtcHR5KCkpOwogCiAgICAgYXV0byBjb21tYW5k
ID0gV1RSOjpwYXJzZUlucHV0TGluZShpbnB1dExpbmUpOwotICAgIGNvbnN0IHN0cmluZyYgcGF0
aE9yVVJMID0gY29tbWFuZC5wYXRoT3JVUkw7CisgICAgYXV0byBwYXRoT3JVUkwgPSBjb21tYW5k
LnBhdGhPclVSTDsKICAgICBkdW1wUGl4ZWxzRm9yQ3VycmVudFRlc3QgPSBjb21tYW5kLnNob3Vs
ZER1bXBQaXhlbHMgfHwgZHVtcFBpeGVsc0ZvckFsbFRlc3RzOwogCiAgICAgTlNTdHJpbmcgKnBh
dGhPclVSTFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpwYXRoT3JVUkwu
Y19zdHIoKV07CkBAIC0yMDE3LDcgKzIwMTAsNyBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0
IHN0cmluZyYgaW5wdXRMCiAgICAgZ1Rlc3RSdW5uZXIgPSBUZXN0UnVubmVyOjpjcmVhdGUodGVz
dFVSTCwgY29tbWFuZC5leHBlY3RlZFBpeGVsSGFzaCk7CiAgICAgZ1Rlc3RSdW5uZXItPnNldEFs
bG93ZWRIb3N0cyhhbGxvd2VkSG9zdHMpOwogICAgIGdUZXN0UnVubmVyLT5zZXRDdXN0b21UaW1l
b3V0KGNvbW1hbmQudGltZW91dC5taWxsaXNlY29uZHMoKSk7Ci0gICAgZ1Rlc3RSdW5uZXItPnNl
dER1bXBKU0NvbnNvbGVMb2dJblN0ZEVycihjb21tYW5kLmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVy
ciB8fCBvcHRpb25zLmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVycik7CisgICAgZ1Rlc3RSdW5uZXIt
PnNldER1bXBKU0NvbnNvbGVMb2dJblN0ZEVycihjb21tYW5kLmR1bXBKU0NvbnNvbGVMb2dJblN0
ZEVyciB8fCBvcHRpb25zLmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVycigpKTsKIAogICAgIHJlc2V0
V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlKG9wdGlvbnMsIFJlc2V0VGltZTo6QmVmb3JlVGVzdCk7
CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCShyZXZp
c2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtNTc2LDE0ICs1NzYsMTQgQEAgdm9pZCBUZXN0UnVubmVyOjpz
ZXRQYWdlUGF1c2VkKGJvb2wgcGF1cwogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNo
ZWV0RW5hYmxlZChib29sIGZsYWcpCiB7Ci0gICAgW1tXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFBy
ZWZlcmVuY2VzXSBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQ6ZmxhZ107CisgICAgW1tbbWFpbkZy
YW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQ6ZmxhZ107
CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmlu
Z1JlZiBwYXRoKQogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGF0aENGID0gYWRvcHRD
RihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwYXRoKSk7CiAgICAg
TlNVUkwgKnVybCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKXBh
dGhDRi5nZXQoKV07Ci0gICAgW1tXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXSBz
ZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uOnVybF07CisgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXdd
IHByZWZlcmVuY2VzXSBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uOnVybF07CiB9CiAKIHZvaWQg
VGVzdFJ1bm5lcjo6c2V0VmFsdWVGb3JVc2VyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVl
UmVmIG5vZGVPYmplY3QsIEpTU3RyaW5nUmVmIHZhbHVlKQpAQCAtNjA5LDcgKzYwOSw3IEBAIHZv
aWQgVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3QKICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHZhbHVlQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9j
YXRvckRlZmF1bHQsIHZhbHVlKSk7CiAgICAgTlNTdHJpbmcgKnZhbHVlTlMgPSAoX19icmlkZ2Ug
TlNTdHJpbmcgKil2YWx1ZUNGLmdldCgpOwogCi0gICAgW1tXZWJQcmVmZXJlbmNlcyBzdGFuZGFy
ZFByZWZlcmVuY2VzXSBfc2V0UHJlZmVyZW5jZUZvclRlc3RXaXRoVmFsdWU6dmFsdWVOUyBmb3JL
ZXk6a2V5TlNdOworICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gX3NldFN0
cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnZhbHVlTlMgZm9yS2V5OmtleU5TXTsK
IH0KIAogdm9pZCBUZXN0UnVubmVyOjpyZW1vdmVBbGxWaXNpdGVkTGlua3MoKQpAQCAtNzAwLDcg
KzcwMCw3IEBAIGJvb2wgVGVzdFJ1bm5lcjo6ZmluZFN0cmluZyhKU0NvbnRleHRSZWYKIAogdm9p
ZCBUZXN0UnVubmVyOjpzZXRDYWNoZU1vZGVsKGludCBjYWNoZU1vZGVsKQogewotICAgIFtbV2Vi
UHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10gc2V0Q2FjaGVNb2RlbDooV2ViQ2FjaGVN
b2RlbCljYWNoZU1vZGVsXTsKKyAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNd
IHNldENhY2hlTW9kZWw6KFdlYkNhY2hlTW9kZWwpY2FjaGVNb2RlbF07CiB9CiAKIGJvb2wgVGVz
dFJ1bm5lcjo6aXNDb21tYW5kRW5hYmxlZChKU1N0cmluZ1JlZiBuYW1lKQpJbmRleDogVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0JKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3
ICs2MCw3IEBAIC0gKHZvaWQpcmVzZXRXaW5kb3dPcmlnaW4KIAogLSAodm9pZClyZXNldFRvQ29u
c2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZzooY29uc3QgV1RSOjpUZXN0T3B0aW9ucyYpb3B0aW9u
cwogewotICAgIG1fZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCA9IG9wdGlvbnMuZW5h
YmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZDsKKyAgICBtX2VuYWJsZURyYWdEZXN0aW5hdGlv
bkFjdGlvbkxvYWQgPSBvcHRpb25zLmVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQoKTsK
IH0KIAogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHNldEZyYW1lOihOU1JlY3Qp
ZnJhbWUKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNw
cAkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5k
ZXJUcmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTA2LDI4ICs5MDYsMzcgQEAgc3RhdGljIHZv
aWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdAogCiAgICAgcHJlZmVyZW5jZXMtPnNldEZv
bnRTbW9vdGhpbmcoRm9udFNtb290aGluZ1R5cGVTdGFuZGFyZCk7CiAKKyAgICBwcmVmc1ByaXZh
dGUtPnNldFdlYlNRTEVuYWJsZWQodHJ1ZSk7CisKICAgICBwcmVmc1ByaXZhdGUtPnNldERhdGFU
cmFuc2Zlckl0ZW1zRW5hYmxlZChUUlVFKTsKICAgICBwcmVmc1ByaXZhdGUtPmNsZWFyTmV0d29y
a0xvYWRlclNlc3Npb24oKTsKIAogICAgIHNldEFsd2F5c0FjY2VwdENvb2tpZXMoZmFsc2UpOwog
fQogCitzdGF0aWMgYm9vbCBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZShzdGQ6OnN0cmlu
ZyBrZXksIGJvb2wgZGVmYXVsdFZhbHVlLCBjb25zdCBXVFI6OlRlc3RPcHRpb25zJiBvcHRpb25z
KQoreworICAgIGF1dG8gaXQgPSBvcHRpb25zLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKS5m
aW5kKGtleSk7CisgICAgaWYgKGl0ICE9IG9wdGlvbnMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJl
cygpLmVuZCgpKQorICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKKyAgICByZXR1cm4gZGVmYXVs
dFZhbHVlOworfQorCiBzdGF0aWMgdm9pZCBzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25z
KElXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMsIGNvbnN0IFdUUjo6VGVzdE9wdGlvbnMmIG9w
dGlvbnMpCiB7CiAgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNlc1ByaXZhdGU4PiBwcmVmc1ByaXZh
dGUgeyBRdWVyeSwgcHJlZmVyZW5jZXMgfTsKIAotICAgIHByZWZzUHJpdmF0ZS0+c2V0TWVudUl0
ZW1FbGVtZW50RW5hYmxlZChvcHRpb25zLmVuYWJsZU1lbnVJdGVtRWxlbWVudCk7Ci0gICAgcHJl
ZnNQcml2YXRlLT5zZXRLZXlnZW5FbGVtZW50RW5hYmxlZChvcHRpb25zLmVuYWJsZUtleWdlbkVs
ZW1lbnQpOwotICAgIHByZWZzUHJpdmF0ZS0+c2V0TW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQo
b3B0aW9ucy5lbmFibGVNb2Rlcm5NZWRpYUNvbnRyb2xzKTsKLSAgICBwcmVmc1ByaXZhdGUtPnNl
dEluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQob3B0aW9ucy5lbmFibGVJbnNwZWN0b3JBZGRpdGlv
bnMpOwotICAgIHByZWZzUHJpdmF0ZS0+c2V0UmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWQob3B0
aW9ucy5lbmFibGVSZXF1ZXN0SWRsZUNhbGxiYWNrKTsKLSAgICBwcmVmc1ByaXZhdGUtPnNldEFz
eW5jQ2xpcGJvYXJkQVBJRW5hYmxlZChvcHRpb25zLmVuYWJsZUFzeW5jQ2xpcGJvYXJkQVBJKTsK
LSAgICBwcmVmc1ByaXZhdGUtPnNldENvbnRhY3RQaWNrZXJBUElFbmFibGVkKG9wdGlvbnMuZW5h
YmxlQ29udGFjdFBpY2tlckFQSSk7Ci0gICAgcHJlZnNQcml2YXRlLT5zZXRXZWJTUUxFbmFibGVk
KG9wdGlvbnMuZW5hYmxlV2ViU1FMKTsKLSAgICBwcmVmc1ByaXZhdGUtPnNldEFsbG93VG9wTmF2
aWdhdGlvblRvRGF0YVVSTHMob3B0aW9ucy5hbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzKTsK
LSAgICBwcmVmZXJlbmNlcy0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChvcHRpb25zLnVzZUVw
aGVtZXJhbFNlc3Npb24pOwotICAgIHByZWZlcmVuY2VzLT5zZXRVc2VzUGFnZUNhY2hlKG9wdGlv
bnMuZW5hYmxlQmFja0ZvcndhcmRDYWNoZSk7Ci0gICAgcHJlZnNQcml2YXRlLT5zZXRDU1NPTVZp
ZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkKG9wdGlvbnMuZW5hYmxlQ1NTT01WaWV3U21vb3RoU2Ny
b2xsaW5nKTsKKyAgICBwcmVmZXJlbmNlcy0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChvcHRp
b25zLnVzZUVwaGVtZXJhbFNlc3Npb24oKSk7CisgICAgcHJlZmVyZW5jZXMtPnNldFVzZXNQYWdl
Q2FjaGUoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIlVzZXNCYWNrRm9yd2FyZENhY2hl
IiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldE1lbnVJdGVtRWxlbWVu
dEVuYWJsZWQoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIk1lbnVJdGVtRWxlbWVudEVu
YWJsZWQiLCBmYWxzZSwgb3B0aW9ucykpOworICAgIHByZWZzUHJpdmF0ZS0+c2V0S2V5Z2VuRWxl
bWVudEVuYWJsZWQoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIktleWdlbkVsZW1lbnRF
bmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldE1vZGVybk1l
ZGlhQ29udHJvbHNFbmFibGVkKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJNb2Rlcm5N
ZWRpYUNvbnRyb2xzRW5hYmxlZCIsIHRydWUsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1ByaXZhdGUt
PnNldEluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFs
dWUoIkluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucykpOworICAgIHBy
ZWZzUHJpdmF0ZS0+c2V0UmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWQoYm9vbFdlYlByZWZlcmVu
Y2VGZWF0dXJlVmFsdWUoIlJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkIiwgZmFsc2UsIG9wdGlv
bnMpKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldEFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxlZChib29s
V2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQXN5bmNDbGlwYm9hcmRBUElFbmFibGVkIiwgZmFs
c2UsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldENvbnRhY3RQaWNrZXJBUElFbmFi
bGVkKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJDb250YWN0UGlja2VyQVBJRW5hYmxl
ZCIsIGZhbHNlLCBvcHRpb25zKSk7CisgICAgcHJlZnNQcml2YXRlLT5zZXRBbGxvd1RvcE5hdmln
YXRpb25Ub0RhdGFVUkxzKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJBbGxvd1RvcE5h
dmlnYXRpb25Ub0RhdGFVUkxzIiwgdHJ1ZSwgb3B0aW9ucykpOworICAgIHByZWZzUHJpdmF0ZS0+
c2V0Q1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZChib29sV2ViUHJlZmVyZW5jZUZlYXR1
cmVWYWx1ZSgiQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25z
KSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgYXBwbGljYXRpb25JZCgpCkBAIC05NzMsOSArOTgyLDkg
QEAgc3RhdGljIHZvaWQgc2V0SlNDT3B0aW9ucyhjb25zdCBXVFI6OlRlcwogICAgICAgICBzYXZl
ZE9wdGlvbnMuY2xlYXIoKTsKICAgICB9CiAKLSAgICBpZiAob3B0aW9ucy5qc2NPcHRpb25zLmxl
bmd0aCgpKSB7CisgICAgaWYgKCFvcHRpb25zLmpzY09wdGlvbnMoKS5lbXB0eSgpKSB7CiAgICAg
ICAgIEpTQzo6T3B0aW9uczo6ZHVtcEFsbE9wdGlvbnNJbkFMaW5lKHNhdmVkT3B0aW9ucyk7Ci0g
ICAgICAgIEpTQzo6T3B0aW9uczo6c2V0T3B0aW9ucyhvcHRpb25zLmpzY09wdGlvbnMuY19zdHIo
KSk7CisgICAgICAgIEpTQzo6T3B0aW9uczo6c2V0T3B0aW9ucyhvcHRpb25zLmpzY09wdGlvbnMo
KS5jX3N0cigpKTsKICAgICB9CiB9CiAKQEAgLTExNjgsNyArMTE3Nyw3IEBAIHN0YXRpYyBib29s
IGhhbmRsZUNvbnRyb2xDb21tYW5kKGNvbnN0IGMKIAogc3RhdGljIFdUUjo6VGVzdE9wdGlvbnMg
dGVzdE9wdGlvbnNGb3JUZXN0KGNvbnN0IFdUUjo6VGVzdENvbW1hbmQmIGNvbW1hbmQpCiB7Ci0g
ICAgV1RSOjpUZXN0RmVhdHVyZXMgZmVhdHVyZXM7CisgICAgV1RSOjpUZXN0RmVhdHVyZXMgZmVh
dHVyZXMgPSBXVFI6OlRlc3RPcHRpb25zOjpkZWZhdWx0cygpOwogICAgIFdUUjo6bWVyZ2UoZmVh
dHVyZXMsIFdUUjo6aGFyZGNvZGVkRmVhdHVyZXNCYXNlZE9uUGF0aEZvclRlc3QoY29tbWFuZCkp
OwogICAgIFdUUjo6bWVyZ2UoZmVhdHVyZXMsIFdUUjo6ZmVhdHVyZURlZmF1bHRzRnJvbVRlc3RI
ZWFkZXJGb3JUZXN0KGNvbW1hbmQsIFdUUjo6VGVzdE9wdGlvbnM6OmtleVR5cGVNYXBwaW5nKCkp
KTsKIApAQCAtMTIyOSw3ICsxMjM4LDcgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdHJp
bmcmIGlucHV0TAogCiAgICAgOjpnVGVzdFJ1bm5lciA9IFRlc3RSdW5uZXI6OmNyZWF0ZSh0ZXN0
VVJMLmRhdGEoKSwgY29tbWFuZC5leHBlY3RlZFBpeGVsSGFzaCk7CiAgICAgOjpnVGVzdFJ1bm5l
ci0+c2V0Q3VzdG9tVGltZW91dChjb21tYW5kLnRpbWVvdXQubWlsbGlzZWNvbmRzKCkpOwotICAg
IDo6Z1Rlc3RSdW5uZXItPnNldER1bXBKU0NvbnNvbGVMb2dJblN0ZEVycihjb21tYW5kLmR1bXBK
U0NvbnNvbGVMb2dJblN0ZEVyciB8fCBvcHRpb25zLmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVycik7
CisgICAgOjpnVGVzdFJ1bm5lci0+c2V0RHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyKGNvbW1hbmQu
ZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIHx8IG9wdGlvbnMuZHVtcEpTQ29uc29sZUxvZ0luU3Rk
RXJyKCkpOwogCiAgICAgdG9wTG9hZGluZ0ZyYW1lID0gbnVsbHB0cjsKICAgICBkb25lID0gZmFs
c2U7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkyMSwxNyArOTIxLDE2IEBAIHZvaWQgVGVzdENvbnRyb2xs
ZXI6OnJlc2V0UHJlZmVyZW5jZXNUb0MKICAgICBwbGF0Zm9ybVJlc2V0UHJlZmVyZW5jZXNUb0Nv
bnNpc3RlbnRWYWx1ZXMoKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDog
b3B0aW9ucy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCi0gICAgICAgIFdLUHJlZmVyZW5j
ZXNTZXRCb29sVmFsdWVGb3JLZXkocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkp
OworICAgICAgICBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9yVGVzdGluZyhwcmVm
ZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8m
IFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCi0g
ICAgICAgIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleShwcmVmZXJlbmNlcywgdmFs
dWUsIHRvV0soa2V5KS5nZXQoKSk7CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1
ZUZvcktleUZvclRlc3RpbmcocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOwog
CiAgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLnVpbnQzMldlYlBy
ZWZlcmVuY2VGZWF0dXJlcygpKQotICAgICAgICBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVG
b3JLZXkocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOworICAgICAgICBXS1By
ZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXlGb3JUZXN0aW5nKHByZWZlcmVuY2VzLCB2YWx1
ZSwgdG9XSyhrZXkpLmdldCgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVd
IDogb3B0aW9ucy5zdHJpbmdXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKLSAgICAgICAgV0tQcmVm
ZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5KHByZWZlcmVuY2VzLCB0b1dLKHZhbHVlKS5nZXQo
KSwgdG9XSyhrZXkpLmdldCgpKTsKLQorICAgICAgICBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFs
dWVGb3JLZXlGb3JUZXN0aW5nKHByZWZlcmVuY2VzLCB0b1dLKHZhbHVlKS5nZXQoKSwgdG9XSyhr
ZXkpLmdldCgpKTsKIH0KIAogYm9vbCBUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lz
dGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucywgUmVzZXRTdGFnZSByZXNldFN0
YWdlKQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9TY3JpcHRzL1ByZWZlcmVuY2VzVGVt
cGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlv
bnNHZW5lcmF0ZWRLZXlzLmguZXJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0
ZWRLZXlzLmguZXJiCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2RlZmluZSBHRU5FUkFURURfV0VCX1BSRUZFUkVOQ0VfS0VZX1RZUEVfTUFQUElOR1Mg
XAotPCUtIGZvciBAcHJlZiBpbiBAcHJlZmVyZW5jZXMgZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGlu
IEBwcmVmZXJlbmNlcy5zZWxlY3QgeyB8cHwgcC5leHBvc2VkIH0gZG8gLSU+CiAgICAgeyAiPCU9
IEBwcmVmLm5hbWUgJT4iLCBUZXN0SGVhZGVyS2V5VHlwZTo6PCU9IEBwcmVmLnR5cGVVcHBlciAl
PldlYlByZWZlcmVuY2UgfSwgXAogPCUtIGVuZCAtJT4KIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411723</attachid>
            <date>2020-10-18 18:29:33 -0700</date>
            <delta_ts>2020-10-18 18:43:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201018182932.patch</filename>
            <type>text/plain</type>
            <size>96520</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjg2NjApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTE4ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVuZGVyVHJlZSB0
byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9HZW5lcmF0ZVByZWZlcmVuY2Vz
LnJiOgorICAgICAgICBUd2VhayBob3cgdGhlICJleHBvc2VkIiBrZXkgaXMgaW50ZXJwcmV0ZWQg
dG8gZXh0ZW5kIHRvIGtleXMgd2l0aCBkZWZhdWx0IHZhbHVlcworICAgICAgICBmb3IgdGhlIGN1
cnJlbnQgZnJvbnRlbmQgKHRoYXQgc2hvdWxkIGNvbnRpbnVlIHRvIGJlIHNldCBvbiBTZXR0aW5n
cyBmb3IgaW5zdGFuY2UpCisgICAgICAgIGJ1dCB0aGF0IHNob3VsZCBub3QgcmVzcGVjdCB0aGUg
a2V5IGJlaW5nIHBhc3NlZCBpbi4gRm9yIGluc3RhbmNlLCB0aGUga2V5IAorICAgICAgICAiQXN5
bmNGcmFtZVNjcm9sbGluZ0VuYWJsZWQiIGhhcyBkZWZhdWx0IHZhbHVlcyBmb3IgYWxsIGZyb250
IGVuZHMsIHNpbmNlIHdlIG5lZWQKKyAgICAgICAgdG8gc2V0IGl0IHRvIGZhbHNlIGluIFNldHRp
bmdzIHdoZW4gYnVpbGRpbmcgV2ViS2l0TGVnYWN5LCBidXQgaXMgb25seSBleHBvc2VkIHRvCisg
ICAgICAgIFdlYktpdCwgc28gaXQgd29uJ3QgYmUgaW4gV2ViS2l0TGVnYWN5J3MgLVtXZWJQcmVm
ZXJlbmNlcyBpbnRlcm5hbEZlYXR1cmVzXSBhcnJheQorICAgICAgICBhbmQgd29uJ3QgZG8gYW55
dGhpbmcgaWYgcGFzc2VkIHRvIC1bV2ViUHJlZmVyZW5jZXMgX3NldEJvb2xQcmVmZXJlbmNlRm9y
VGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XS4KKyAgICAgICAgCisgICAgICAgICogU2NyaXB0cy9Q
cmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWw6CisgICAgICAgIE9ubHkgZXhw
b3NlIEFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkIGFuZCBBc3luY092ZXJmbG93U2Nyb2xsaW5n
RW5hYmxlZCB0byBXZWJLaXQuCisgICAgICAgIFRoaXMgbWFpbnRhaW5zIHRoZSBiZWhhdmlvciB0
aGF0IHRoZXNlIGtleXMgYXJlIG5vdCB2YWxpZCBrZXlzIGFzIHRlc3QgaGVhZGVyIGNvbW1hbmRz
CisgICAgICAgIHdoZW4gcnVuIHRocm91Z2ggRHVtcFJlbmRlclRyZWUuCisKIDIwMjAtMTAtMTgg
IERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggLVdkZXBy
ZWNhdGVkLWNvcHkgd2FybmluZ3MgaW4gV1RGIGFuZCBKYXZhU2NyaXB0Q29yZQpJbmRleDogU291
cmNlL1dURi9TY3JpcHRzL0dlbmVyYXRlUHJlZmVyZW5jZXMucmIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi9TY3JpcHRzL0dlbmVyYXRlUHJlZmVyZW5jZXMucmIJKHJldmlzaW9uIDI2ODY0OCkK
KysrIFNvdXJjZS9XVEYvU2NyaXB0cy9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw3ICszOCw3IEBAIG9wdGlvbnMgPSB7CiAgIDp0ZW1wbGF0ZXMgPT4gW10KIH0K
IG9wdHBhcnNlID0gT3B0aW9uUGFyc2VyLm5ldyBkbyB8b3B0c3wKLSAgb3B0cy5iYW5uZXIgPSAi
VXNhZ2U6ICN7RmlsZS5iYXNlbmFtZSgkMCl9IC0taW5wdXQgZmlsZSIKKyAgb3B0cy5iYW5uZXIg
PSAiVXNhZ2U6ICN7RmlsZS5iYXNlbmFtZSgkMCl9IC0tZnJvbnRlbmQgPGZyb250ZW5kPiAtLWJh
c2UgPGJhc2U+IC0tZGVidWcgPGRlYnVnPiAtLWV4cGVyaW1lbnRhbCA8ZXhwZXJpbWVudGFsPiAt
LWludGVybmFsIDxpbnRlcm5hbD4gLS10ZW1wbGF0ZSBmaWxlIgogCiAgIG9wdHMuc2VwYXJhdG9y
ICIiCiAKQEAgLTEwMCw2ICsxMDAsNyBAQCBjbGFzcyBQcmVmZXJlbmNlCiAgIGF0dHJfYWNjZXNz
b3IgOmNvbmRpdGlvbgogICBhdHRyX2FjY2Vzc29yIDpoaWRkZW4KICAgYXR0cl9hY2Nlc3NvciA6
ZGVmYXVsdFZhbHVlcworICBhdHRyX2FjY2Vzc29yIDpleHBvc2VkCiAKICAgZGVmIGluaXRpYWxp
emUobmFtZSwgb3B0cywgZnJvbnRlbmQpCiAgICAgQG5hbWUgPSBuYW1lCkBAIC0xMTMsNiArMTE0
LDcgQEAgY2xhc3MgUHJlZmVyZW5jZQogICAgIEBjb25kaXRpb24gPSBvcHRzWyJjb25kaXRpb24i
XQogICAgIEBoaWRkZW4gPSBvcHRzWyJoaWRkZW4iXSB8fCBmYWxzZQogICAgIEBkZWZhdWx0VmFs
dWVzID0gb3B0c1siZGVmYXVsdFZhbHVlIl1bZnJvbnRlbmRdCisgICAgQGV4cG9zZWQgPSAhb3B0
c1siZXhwb3NlZCJdIHx8IG9wdHNbImV4cG9zZWQiXS5pbmNsdWRlPyhmcm9udGVuZCkKICAgZW5k
CiAKICAgZGVmIG5hbWVMb3dlcgpAQCAtMTkwLDYgKzE5MiwxMiBAQCBjbGFzcyBQcmVmZXJlbmNl
cwogICAgIEBleHBlcmltZW50YWxGZWF0dXJlcy5zb3J0ISB7IHx4LCB5fCB4Lm5hbWUgPD0+IHku
bmFtZSB9LnNvcnQhIHsgfHgsIHl8IHguaHVtYW5SZWFkYWJsZU5hbWUgPD0+IHkuaHVtYW5SZWFk
YWJsZU5hbWUgfQogICAgIEBpbnRlcm5hbEZlYXR1cmVzLnNvcnQhIHsgfHgsIHl8IHgubmFtZSA8
PT4geS5uYW1lIH0uc29ydCEgeyB8eCwgeXwgeC5odW1hblJlYWRhYmxlTmFtZSA8PT4geS5odW1h
blJlYWRhYmxlTmFtZSB9CiAKKyAgICBAZXhwb3NlZFByZWZlcmVuY2VzID0gQHByZWZlcmVuY2Vz
LnNlbGVjdCB7IHxwfCBwLmV4cG9zZWQgfQorICAgIEBleHBvc2VkUHJlZmVyZW5jZXNOb3REZWJ1
ZyA9IEBwcmVmZXJlbmNlc05vdERlYnVnLnNlbGVjdCB7IHxwfCBwLmV4cG9zZWQgfQorICAgIEBl
eHBvc2VkUHJlZmVyZW5jZXNEZWJ1ZyA9IEBwcmVmZXJlbmNlc0RlYnVnLnNlbGVjdCB7IHxwfCBw
LmV4cG9zZWQgfQorICAgIEBleHBvc2VkRXhwZXJpbWVudGFsRmVhdHVyZXMgPSBAZXhwZXJpbWVu
dGFsRmVhdHVyZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3NlZCB9CisgICAgQGV4cG9zZWRJbnRlcm5h
bEZlYXR1cmVzID0gQGludGVybmFsRmVhdHVyZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3NlZCB9CisK
ICAgICBAcHJlZmVyZW5jZXNCb3VuZFRvU2V0dGluZyA9IEBwcmVmZXJlbmNlcy5zZWxlY3QgeyB8
cHwgIXAud2ViY29yZUJpbmRpbmcgfQogICAgIEBwcmVmZXJlbmNlc0JvdW5kVG9EZXByZWNhdGVk
R2xvYmFsU2V0dGluZ3MgPSBAcHJlZmVyZW5jZXMuc2VsZWN0IHsgfHB8IHAud2ViY29yZUJpbmRp
bmcgPT0gIkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncyIgfQogICAgIEBwcmVmZXJlbmNlc0JvdW5k
VG9SdW50aW1lRW5hYmxlZEZlYXR1cmVzID0gQHByZWZlcmVuY2VzLnNlbGVjdCB7IHxwfCBwLndl
YmNvcmVCaW5kaW5nID09ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzIiB9CkBAIC0yMDQsNyArMjEy
LDcgQEAgY2xhc3MgUHJlZmVyZW5jZXMKICAgICAgICAgaWYgIW9wdGlvbnNbIndlYmNvcmVCaW5k
aW5nIl0gJiYgb3B0aW9uc1siZGVmYXVsdFZhbHVlIl0uc2l6ZSAhPSAzCiAgICAgICAgICAgcmFp
c2UgIkVSUk9SOiBQcmVmZXJlbmNlcyBib3VuZCB0byBXZWJDb3JlOjpTZXR0aW5ncyBtdXN0IGhh
dmUgZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCBmcm9udGVuZHM6ICN7bmFtZX0iCiAgICAgICAgIGVu
ZAotICAgICAgICBpZiAhb3B0aW9uc1siZXhwb3NlZCJdIG9yIG9wdGlvbnNbImV4cG9zZWQiXS5p
bmNsdWRlPyhAZnJvbnRlbmQpCisgICAgICAgIGlmIG9wdGlvbnNbImRlZmF1bHRWYWx1ZSJdLmlu
Y2x1ZGU/KEBmcm9udGVuZCkKICAgICAgICAgICBwcmVmZXJlbmNlID0gUHJlZmVyZW5jZS5uZXco
bmFtZSwgb3B0aW9ucywgQGZyb250ZW5kKQogICAgICAgICAgIEBwcmVmZXJlbmNlcyA8PCBwcmVm
ZXJlbmNlCiAgICAgICAgICAgcmVzdWx0IDw8IHByZWZlcmVuY2UKSW5kZXg6IFNvdXJjZS9XVEYv
U2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJu
YWwueWFtbAkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVu
Y2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbAkod29ya2luZyBjb3B5KQpAQCAtODEsNiAr
ODEsNyBAQCBBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZDoKICAgd2ViY29yZU9uQ2hhbmdlOiBz
ZXROZWVkc1JlbGF5b3V0QWxsRnJhbWVzCiAgIGh1bWFuUmVhZGFibGVOYW1lOiAiQXN5bmMgRnJh
bWUgU2Nyb2xsaW5nIgogICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJQZXJmb3JtIGZyYW1l
IHNjcm9sbGluZyBvZmYgdGhlIG1haW4gdGhyZWFkIgorICBleHBvc2VkOiBbIFdlYktpdCBdCiAg
IGRlZmF1bHRWYWx1ZToKICAgICBXZWJLaXRMZWdhY3k6CiAgICAgICBkZWZhdWx0OiBmYWxzZQpA
QCAtOTYsNiArOTcsNyBAQCBBc3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZDoKICAgd2ViY29y
ZU9uQ2hhbmdlOiBzZXROZWVkc1JlbGF5b3V0QWxsRnJhbWVzCiAgIGh1bWFuUmVhZGFibGVOYW1l
OiAiQXN5bmMgT3ZlcmZsb3cgU2Nyb2xsaW5nIgogICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246
ICJQZXJmb3JtIG92ZXJmbG93IHNjcm9sbGluZyBvZmYgdGhlIG1haW4gdGhyZWFkIgorICBleHBv
c2VkOiBbIFdlYktpdCBdCiAgIGRlZmF1bHRWYWx1ZToKICAgICBXZWJLaXRMZWdhY3k6CiAgICAg
ICBkZWZhdWx0OiBmYWxzZQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODY2MCkKKysrIFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjAt
MTAtMTggIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFtUZXN0aW5n
XSBDb252ZXJ0IER1bXBSZW5kZXJUcmVlIHRvIHVzZSBnZW5lcmF0ZWQgdGVzdCBoZWFkZXIgb3B0
aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3
ODgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVu
YW1lIFdLUHJlZmVyZW5jZXNTZXQqVmFsdWVGb3JLZXkgU1BJIHRvIFdLUHJlZmVyZW5jZXNTZXQq
VmFsdWVGb3JLZXlGb3JUZXN0aW5nCisgICAgICAgIHRvIG1ha2UgaXQgY2xlYXIgd2hhdCB0aGV5
IGFyZSB1c2VkIGZvciBhbmQgZm9yIGNvbnNpc3RlbmN5IHdpdGggV2ViS2l0TGVnYWN5LgorCisg
ICAgICAgIFVwZGF0ZSB0byB1c2UgbmV3ICJleHBvc2VkIiBwcmVmaXggYmluZGluZ3MgYW5kIHVz
ZSBkZWZhdWx0IHZhbHVlIGV4cGxpY2l0bHkKKyAgICAgICAgd2hlbiB1cGRhdGluZyBzZXR0aW5n
cyBmb3Igbm9uLWV4cG9zZWQgcHJlZmVyZW5jZXMuCisKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZl
cmVuY2VzVGVtcGxhdGVzL1dlYlBhZ2VVcGRhdGVQcmVmZXJlbmNlcy5jcHAuZXJiOgorICAgICAg
ICAqIFNjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9u
cy5oLmVyYjoKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZl
cmVuY2VzRXhwZXJpbWVudGFsRmVhdHVyZXMuY3BwLmVyYjoKKyAgICAgICAgKiBTY3JpcHRzL1By
ZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzR2V0dGVyU2V0dGVycy5jcHAuZXJiOgor
ICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNJbnRl
cm5hbERlYnVnRmVhdHVyZXMuY3BwLmVyYjoKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2Vz
VGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzS2V5cy5jcHAuZXJiOgorICAgICAgICAqIFNjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNLZXlzLmguZXJiOgorICAgICAgICAq
IFNjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNTdG9yZURlZmF1bHRz
TWFwLmNwcC5lcmI6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3Bw
OgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleUZvclRlc3RpbmcpOgor
ICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5Rm9yVGVzdGluZyk6Cisg
ICAgICAgIChXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXlGb3JUZXN0aW5nKToKKyAg
ICAgICAgKFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleUZvclRlc3RpbmcpOgorICAg
ICAgICAoV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleSk6IERlbGV0ZWQuCisgICAgICAg
IChXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXkpOiBEZWxldGVkLgorICAgICAgICAo
V0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5KTogRGVsZXRlZC4KKyAgICAgICAgKFdL
UHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmg6CisKIDIwMjAtMTAtMTcgIERh
dmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChy
MTkxNjM3KTogRml4IC1XbWlzbGVhZGluZy1pbmRlbnRhdGlvbiB3YXJuaW5ncyBpbiBvcGVuIHNv
dXJjZSBjbGFuZwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxh
dGVzL1dlYlBhZ2VVcGRhdGVQcmVmZXJlbmNlcy5jcHAuZXJiCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQYWdlVXBkYXRlUHJlZmVy
ZW5jZXMuY3BwLmVyYgkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRz
L1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlBhZ2VVcGRhdGVQcmVmZXJlbmNlcy5jcHAuZXJiCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZS5oIgogCisjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5o
IgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzS2V5cy5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVu
Y2VzU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5o
PgpAQCAtNDUsNyArNDYsMTEgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVTZXR0aW5nc0dlbmVyYXRl
ZChjbwogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYuY29uZGl0aW9u
ICU+CiA8JS0gZW5kIC0lPgorPCUtIGlmIEBwcmVmLmV4cG9zZWQgLSU+CiAgICAgc2V0dGluZ3Mu
c2V0PCU9IEBwcmVmLndlYmNvcmVOYW1lVXBwZXIgJT4oc3RvcmUuZ2V0PCU9IEBwcmVmLnR5cGVV
cHBlciAlPlZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojo8JT0gQHByZWYubmFtZUxvd2Vy
ICU+S2V5KCkpKTsKKzwlLSBlbHNlIC0lPgorICAgIHNldHRpbmdzLnNldDwlPSBAcHJlZi53ZWJj
b3JlTmFtZVVwcGVyICU+KERFRkFVTFRfVkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+KTsKKzwl
LSBlbmQgLSU+CiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2VuZGlmCiA8JS0gZW5kIC0l
PgpAQCAtNTgsNyArNjMsMTEgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlc0dlbmVy
YXRlZAogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYuY29uZGl0aW9u
ICU+CiA8JS0gZW5kIC0lPgorPCUtIGlmIEBwcmVmLmV4cG9zZWQgLSU+CiAgICAgV2ViQ29yZTo6
RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpzZXQ8JT0gQHByZWYud2ViY29yZU5hbWVVcHBlciAl
PihzdG9yZS5nZXQ8JT0gQHByZWYudHlwZVVwcGVyICU+VmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5j
ZXNLZXk6OjwlPSBAcHJlZi5uYW1lTG93ZXIgJT5LZXkoKSkpOworPCUtIGVsc2UgLSU+CisgICAg
V2ViQ29yZTo6RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpzZXQ8JT0gQHByZWYud2ViY29yZU5h
bWVVcHBlciAlPihERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFtZSAlPik7Cis8JS0gZW5k
IC0lPgogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNlbmRpZgogPCUtIGVuZCAtJT4KQEAg
LTY4LDcgKzc3LDExIEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXNHZW5lcmF0ZWQK
IDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYgPCU9IEBwcmVmLmNvbmRpdGlvbiAlPgog
PCUtIGVuZCAtJT4KKzwlLSBpZiBAcHJlZi5leHBvc2VkIC0lPgogICAgIFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0PCU9IEBwcmVmLndlYmNvcmVO
YW1lVXBwZXIgJT4oc3RvcmUuZ2V0PCU9IEBwcmVmLnR5cGVVcHBlciAlPlZhbHVlRm9yS2V5KFdl
YlByZWZlcmVuY2VzS2V5Ojo8JT0gQHByZWYubmFtZUxvd2VyICU+S2V5KCkpKTsKKzwlLSBlbHNl
IC0lPgorICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkuc2V0PCU9IEBwcmVmLndlYmNvcmVOYW1lVXBwZXIgJT4oREVGQVVMVF9WQUxVRV9GT1JfPCU9
IEBwcmVmLm5hbWUgJT4pOworPCUtIGVuZCAtJT4KIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+
CiAjZW5kaWYKIDwlLSBlbmQgLSU+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVy
ZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oLmVyYgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVy
ZW5jZXNEZWZpbml0aW9ucy5oLmVyYgkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktp
dC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMu
aC5lcmIJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAKIC8vIG1hY3JvKEtleVVwcGVy
LCBLZXlMb3dlciwgVHlwZU5hbWVVcHBlciwgVHlwZU5hbWUsIERlZmF1bHRWYWx1ZSwgSHVtYW5S
ZWFkYWJsZU5hbWUsIEh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbikKIAogI2RlZmluZSBGT1JfRUFD
SF9XRUJLSVRfUFJFRkVSRU5DRShtYWNybykgXAotPCUtIGZvciBAcHJlZiBpbiBAcHJlZmVyZW5j
ZXNOb3REZWJ1ZyBkbyAtJT4KKzwlLSBmb3IgQHByZWYgaW4gQGV4cG9zZWRQcmVmZXJlbmNlc05v
dERlYnVnIGRvIC0lPgogICAgIG1hY3JvKDwlPSBAcHJlZi5uYW1lICU+LCA8JT0gQHByZWYubmFt
ZUxvd2VyICU+LCA8JT0gQHByZWYudHlwZVVwcGVyICU+LCA8JT0gQHByZWYudHlwZSAlPiwgREVG
QVVMVF9WQUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4sIDwlPSBAcHJlZi5odW1hblJlYWRhYmxl
TmFtZSAlPiwgPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbiAlPikgXAogPCUtIGVu
ZCAtJT4KICAgICBcCkBAIC02NSw3ICs2NSw3IEBACiAvLyBEZWJ1ZyBQcmVmZXJlbmNlcwogCiAj
ZGVmaW5lIEZPUl9FQUNIX1dFQktJVF9ERUJVR19QUkVGRVJFTkNFKG1hY3JvKSBcCi08JS0gZm9y
IEBwcmVmIGluIEBwcmVmZXJlbmNlc0RlYnVnIGRvIC0lPgorPCUtIGZvciBAcHJlZiBpbiBAZXhw
b3NlZFByZWZlcmVuY2VzRGVidWcgZG8gLSU+CiAgICAgbWFjcm8oPCU9IEBwcmVmLm5hbWUgJT4s
IDwlPSBAcHJlZi5uYW1lTG93ZXIgJT4sIDwlPSBAcHJlZi50eXBlVXBwZXIgJT4sIDwlPSBAcHJl
Zi50eXBlICU+LCBERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFtZSAlPiwgPCU9IEBwcmVm
Lmh1bWFuUmVhZGFibGVOYW1lICU+LCA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9u
ICU+KSBcCiA8JS0gZW5kIC0lPgogICAgIFwKQEAgLTczLDcgKzczLDcgQEAKIC8vIEludGVybmFs
IERlYnVnIEZlYXR1cmVzCiAKICNkZWZpbmUgRk9SX0VBQ0hfV0VCS0lUX0lOVEVSTkFMX0RFQlVH
X0ZFQVRVUkVfUFJFRkVSRU5DRShtYWNybykgXAotPCUtIGZvciBAcHJlZiBpbiBAaW50ZXJuYWxG
ZWF0dXJlcyBkbyAtJT4KKzwlLSBmb3IgQHByZWYgaW4gQGV4cG9zZWRJbnRlcm5hbEZlYXR1cmVz
IGRvIC0lPgogICAgIG1hY3JvKDwlPSBAcHJlZi5uYW1lICU+LCA8JT0gQHByZWYubmFtZUxvd2Vy
ICU+LCBCb29sLCBib29sLCBERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFtZSAlPiwgPCU9
IEBwcmVmLmh1bWFuUmVhZGFibGVOYW1lICU+LCA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZURlc2Ny
aXB0aW9uICU+KSBcCiA8JS0gZW5kIC0lPgogICAgXApAQCAtODEsNyArODEsNyBAQAogLy8gRXhw
ZXJpbWVudGFsIEZlYXR1cmVzCiAKICNkZWZpbmUgRk9SX0VBQ0hfV0VCS0lUX0VYUEVSSU1FTlRB
TF9GRUFUVVJFX1BSRUZFUkVOQ0UobWFjcm8pIFwKLTwlLSBmb3IgQHByZWYgaW4gQGV4cGVyaW1l
bnRhbEZlYXR1cmVzIGRvIC0lPgorPCUtIGZvciBAcHJlZiBpbiBAZXhwb3NlZEV4cGVyaW1lbnRh
bEZlYXR1cmVzIGRvIC0lPgogICAgIG1hY3JvKDwlPSBAcHJlZi5uYW1lICU+LCA8JT0gQHByZWYu
bmFtZUxvd2VyICU+LCBCb29sLCBib29sLCBERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFt
ZSAlPiwgPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVOYW1lICU+LCA8JT0gQHByZWYuaHVtYW5SZWFk
YWJsZURlc2NyaXB0aW9uICU+KSBcCiA8JS0gZW5kIC0lPgogICAgIFwKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1l
bnRhbEZlYXR1cmVzLmNwcC5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRz
L1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVyZXMu
Y3BwLmVyYgkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZl
cmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVyZXMuY3BwLmVy
Ygkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNv
bnN0IFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiYgV2ViUHJlZmVyZW5jZXM6OmV4cGVyaW1l
bnRhbEZlYXR1cmVzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VmVjdG9yPFJlZlB0
cjxBUEk6Ok9iamVjdD4+PiBmZWF0dXJlcyhzdGQ6OmluaXRpYWxpemVyX2xpc3Q8UmVmUHRyPEFQ
STo6T2JqZWN0Pj4gewotPCUtIGZvciBAcHJlZiBpbiBAZXhwZXJpbWVudGFsRmVhdHVyZXMgZG8g
LSU+Cis8JS0gZm9yIEBwcmVmIGluIEBleHBvc2VkRXhwZXJpbWVudGFsRmVhdHVyZXMgZG8gLSU+
CiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4K
IDwlLSBlbmQgLSU+CkBAIC01OCw3ICs1OCw3IEBAIGJvb2wgV2ViUHJlZmVyZW5jZXM6OmlzRmVh
dHVyZUVuYWJsZWQoY28KICAgICB9OwogCiAgICAgc3RhdGljIEZlYXR1cmVHZXR0ZXJNYXBwaW5n
IGdldHRlcnNbXSA9IHsKLTwlLSBmb3IgQHByZWYgaW4gQGV4cGVyaW1lbnRhbEZlYXR1cmVzIGRv
IC0lPgorPCUtIGZvciBAcHJlZiBpbiBAZXhwb3NlZEV4cGVyaW1lbnRhbEZlYXR1cmVzIGRvIC0l
PgogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYuY29uZGl0aW9uICU+
CiA8JS0gZW5kIC0lPgpAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjpzZXRF
eHBlcmltZW50YWxGZWF0CiAgICAgfTsKIAogICAgIHN0YXRpYyBGZWF0dXJlU2V0dGVyTWFwcGlu
ZyBzZXR0ZXJzW10gPSB7Ci08JS0gZm9yIEBwcmVmIGluIEBleHBlcmltZW50YWxGZWF0dXJlcyBk
byAtJT4KKzwlLSBmb3IgQHByZWYgaW4gQGV4cG9zZWRFeHBlcmltZW50YWxGZWF0dXJlcyBkbyAt
JT4KIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYgPCU9IEBwcmVmLmNvbmRpdGlvbiAl
PgogPCUtIGVuZCAtJT4KQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjpz
ZXRFeHBlcmltZW50YWxGZWF0CiAKIHZvaWQgV2ViUHJlZmVyZW5jZXM6OmVuYWJsZUFsbEV4cGVy
aW1lbnRhbEZlYXR1cmVzKCkKIHsKLTwlLSBmb3IgQHByZWYgaW4gQGV4cGVyaW1lbnRhbEZlYXR1
cmVzIGRvIC0lPgorPCUtIGZvciBAcHJlZiBpbiBAZXhwb3NlZEV4cGVyaW1lbnRhbEZlYXR1cmVz
IGRvIC0lPgogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYuY29uZGl0
aW9uICU+CiA8JS0gZW5kIC0lPgpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVu
Y2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzR2V0dGVyU2V0dGVycy5jcHAuZXJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVm
ZXJlbmNlc0dldHRlclNldHRlcnMuY3BwLmVyYgkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNl
L1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzR2V0dGVy
U2V0dGVycy5jcHAuZXJiCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi08JS0gZm9yIEBwcmVmIGluIChAcHJlZmVyZW5jZXNOb3REZWJ1ZyAr
IEBwcmVmZXJlbmNlc0RlYnVnKSBkbyAtJT4KKzwlLSBmb3IgQHByZWYgaW4gKEBleHBvc2VkUHJl
ZmVyZW5jZXNOb3REZWJ1ZyArIEBleHBvc2VkUHJlZmVyZW5jZXNEZWJ1ZykgZG8gLSU+CiB2b2lk
IFdlYlByZWZlcmVuY2VzOjpzZXQ8JT0gQHByZWYubmFtZSAlPihjb25zdCA8JT0gQHByZWYudHlw
ZSAlPiYgdmFsdWUpCiB7CiAgICAgaWYgKCFtX3N0b3JlLnNldDwlPSBAcHJlZi50eXBlVXBwZXIg
JT5WYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6PCU9IEBwcmVmLm5hbWVMb3dlciAlPktl
eSgpLCB2YWx1ZSkpCkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OmRlbGV0
ZTwlPSBAcHJlZi5uYW0KIAogPCUtIGVuZCAtJT4KIAotPCUtIGZvciBAcHJlZiBpbiBAZXhwZXJp
bWVudGFsRmVhdHVyZXMgZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGluIEBleHBvc2VkRXhwZXJpbWVu
dGFsRmVhdHVyZXMgZG8gLSU+CiB2b2lkIFdlYlByZWZlcmVuY2VzOjpzZXQ8JT0gQHByZWYubmFt
ZSAlPihjb25zdCBib29sJiB2YWx1ZSkKIHsKICAgICBpZiAoIW1fc3RvcmUuc2V0Qm9vbFZhbHVl
Rm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojo8JT0gQHByZWYubmFtZUxvd2VyICU+S2V5KCksIHZh
bHVlKSkKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6ZGVsZXRlPCU9IEBw
cmVmLm5hbQogCiA8JS0gZW5kIC0lPgogCi08JS0gZm9yIEBwcmVmIGluIEBpbnRlcm5hbEZlYXR1
cmVzIGRvIC0lPgorPCUtIGZvciBAcHJlZiBpbiBAZXhwb3NlZEludGVybmFsRmVhdHVyZXMgZG8g
LSU+CiB2b2lkIFdlYlByZWZlcmVuY2VzOjpzZXQ8JT0gQHByZWYubmFtZSAlPihjb25zdCBib29s
JiB2YWx1ZSkKIHsKICAgICBpZiAoIW1fc3RvcmUuc2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZl
cmVuY2VzS2V5Ojo8JT0gQHByZWYubmFtZUxvd2VyICU+S2V5KCksIHZhbHVlKSkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0lu
dGVybmFsRGVidWdGZWF0dXJlcy5jcHAuZXJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsRGVidWdG
ZWF0dXJlcy5jcHAuZXJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L1Njcmlw
dHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbERlYnVnRmVhdHVy
ZXMuY3BwLmVyYgkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGNvbnN0IFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiYgV2ViUHJlZmVyZW5jZXM6
OmludGVybmFsRGVidWdGZWF0dXJlcygpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZl
Y3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+Pj4gZmVhdHVyZXMoc3RkOjppbml0aWFsaXplcl9saXN0
PFJlZlB0cjxBUEk6Ok9iamVjdD4+IHsKLTwlLSBmb3IgQHByZWYgaW4gQGludGVybmFsRmVhdHVy
ZXMgZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGluIEBleHBvc2VkSW50ZXJuYWxGZWF0dXJlcyBkbyAt
JT4KIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYgPCU9IEBwcmVmLmNvbmRpdGlvbiAl
PgogPCUtIGVuZCAtJT4KQEAgLTU4LDcgKzU4LDcgQEAgYm9vbCBXZWJQcmVmZXJlbmNlczo6aXNG
ZWF0dXJlRW5hYmxlZChjbwogICAgIH07CiAKICAgICBzdGF0aWMgRmVhdHVyZUdldHRlck1hcHBp
bmcgZ2V0dGVyc1tdID0gewotPCUtIGZvciBAcHJlZiBpbiBAaW50ZXJuYWxGZWF0dXJlcyBkbyAt
JT4KKzwlLSBmb3IgQHByZWYgaW4gQGV4cG9zZWRJbnRlcm5hbEZlYXR1cmVzIGRvIC0lPgogPCUt
IGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYuY29uZGl0aW9uICU+CiA8JS0g
ZW5kIC0lPgpAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjpzZXRJbnRlcm5h
bERlYnVnRmVhCiAgICAgfTsKIAogICAgIHN0YXRpYyBGZWF0dXJlU2V0dGVyTWFwcGluZyBzZXR0
ZXJzW10gPSB7Ci08JS0gZm9yIEBwcmVmIGluIEBpbnRlcm5hbEZlYXR1cmVzIGRvIC0lPgorPCUt
IGZvciBAcHJlZiBpbiBAZXhwb3NlZEludGVybmFsRmVhdHVyZXMgZG8gLSU+CiA8JS0gaWYgQHBy
ZWYuY29uZGl0aW9uIC0lPgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBlbmQgLSU+
CkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6c2V0SW50ZXJuYWxEZWJ1
Z0ZlYQogCiB2b2lkIFdlYlByZWZlcmVuY2VzOjpyZXNldEFsbEludGVybmFsRGVidWdGZWF0dXJl
cygpCiB7Ci08JS0gZm9yIEBwcmVmIGluIEBpbnRlcm5hbEZlYXR1cmVzIGRvIC0lPgorPCUtIGZv
ciBAcHJlZiBpbiBAZXhwb3NlZEludGVybmFsRmVhdHVyZXMgZG8gLSU+CiA8JS0gaWYgQHByZWYu
Y29uZGl0aW9uIC0lPgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBlbmQgLSU+Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVy
ZW5jZXNLZXlzLmNwcC5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL1By
ZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzS2V5cy5jcHAuZXJiCShyZXZpc2lvbiAy
Njg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2Vi
UHJlZmVyZW5jZXNLZXlzLmNwcC5lcmIJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAK
IG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNwYWNlIFdlYlByZWZlcmVuY2VzS2V5IHsKIAotPCUt
IGZvciBAcHJlZiBpbiBAcHJlZmVyZW5jZXMgZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGluIEBleHBv
c2VkUHJlZmVyZW5jZXMgZG8gLSU+CiBjb25zdCBTdHJpbmcmIDwlPSBAcHJlZi5uYW1lTG93ZXIg
JT5LZXkoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGtleShNQUtFX1NU
QVRJQ19TVFJJTkdfSU1QTCgiPCU9IEBwcmVmLm5hbWUgJT4iKSk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNLZXlzLmguZXJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRl
cy9XZWJQcmVmZXJlbmNlc0tleXMuaC5lcmIJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9X
ZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0tleXMuaC5l
cmIJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewog
bmFtZXNwYWNlIFdlYlByZWZlcmVuY2VzS2V5IHsKIAotPCUtIGZvciBAcHJlZiBpbiBAcHJlZmVy
ZW5jZXMgZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGluIEBleHBvc2VkUHJlZmVyZW5jZXMgZG8gLSU+
CiBjb25zdCBTdHJpbmcmIDwlPSBAcHJlZi5uYW1lTG93ZXIgJT5LZXkoKTsKIDwlLSBlbmQgLSU+
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQ
cmVmZXJlbmNlc1N0b3JlRGVmYXVsdHNNYXAuY3BwLmVyYgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNTdG9yZURl
ZmF1bHRzTWFwLmNwcC5lcmIJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc1N0b3JlRGVmYXVsdHNNYXAu
Y3BwLmVyYgkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBXZWJQcmVmZXJlbmNlc1N0
b3JlOjpWYWx1ZU1hcCYgV2ViUHJlZmVyCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZh
bHVlTWFwPiBkZWZhdWx0czsKICAgICBpZiAoZGVmYXVsdHMuZ2V0KCkuaXNFbXB0eSgpKSB7Ci08
JS0gZm9yIEBwcmVmIGluIEBwcmVmZXJlbmNlcyBkbyAtJT4KKzwlLSBmb3IgQHByZWYgaW4gQGV4
cG9zZWRQcmVmZXJlbmNlcyBkbyAtJT4KIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYg
PCU9IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiAyNjg2NDgp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzgsMjIgKzc4LDIyIEBAIHZvaWQgV0tQcmVmZXJlbmNlc1NldEludGVy
bmFsRGVidWdGZWF0dXIKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRJbnRlcm5hbERl
YnVnRmVhdHVyZUVuYWJsZWRGb3JLZXkodG9XVEZTdHJpbmcoaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVL
ZXkpLCB2YWx1ZSk7CiB9CiAKLXZvaWQgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleShX
S1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZhbHVlLCBXS1N0cmluZ1JlZiBr
ZXkpCit2b2lkIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJl
ZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkK
IHsKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRCb29sVmFsdWVGb3JLZXkodG9XVEZT
dHJpbmcoa2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1
ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdL
U3RyaW5nUmVmIGtleSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5Rm9y
VGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdL
U3RyaW5nUmVmIGtleSkKIHsKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRCb29sVmFs
dWVGb3JLZXkodG9XVEZTdHJpbmcoa2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5j
ZXNTZXRVSW50MzJWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1
aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0VUlu
dDMyVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYs
IHVpbnQzMl90IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVu
Y2VzUmVmKS0+c2V0VUludDMyVmFsdWVGb3JLZXkodG9XVEZTdHJpbmcoa2V5KSwgdmFsdWUpOwog
fQogCi12b2lkIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleShXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQor
dm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVy
ZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RyaW5nUmVmIHZhbHVlLCBXS1N0cmluZ1JlZiBr
ZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0U3RyaW5nVmFsdWVGb3JLZXko
dG9XVEZTdHJpbmcoa2V5KSwgdG9XVEZTdHJpbmcodmFsdWUpKTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZh
dGUuaAkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDEw
IEBAIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNSZXNldEFsbEludGUKIFdLX0VYUE9SVCB2
b2lkIFdLUHJlZmVyZW5jZXNTZXRJbnRlcm5hbERlYnVnRmVhdHVyZUZvcktleShXS1ByZWZlcmVu
Y2VzUmVmLCBib29sLCBXS1N0cmluZ1JlZik7CiAKIC8vIFRoZSBmb2xsb3dpbmcgZ2VuZXJpYyBz
ZXR0ZXIgZnVuY3Rpb25zIGFyZSBvbmx5IGludGVuZGVkIGZvciB1c2UgYnkgdGVzdGluZyBpbmZy
YXN0cnVjdHVyZS4KLVdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JL
ZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1ZSwgV0tTdHJpbmdS
ZWYga2V5KTsKLVdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktl
eShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdLU3RyaW5n
UmVmIGtleSk7Ci1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JL
ZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3Ry
aW5nUmVmIGtleSk7Ci1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVG
b3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFsdWUs
IFdLU3RyaW5nUmVmIGtleSk7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZh
bHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29s
IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1Nl
dERvdWJsZVZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2Vz
UmVmLCBkb3VibGUgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7CitXS19FWFBPUlQgdm9pZCBXS1By
ZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXNSZWYsIHVpbnQzMl90IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQ
T1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdS
ZWYga2V5KTsKIAogLy8gRm9yIFRlc3QgUnVubmVyIFVzZSBvbmx5LgogV0tfRVhQT1JUIHZvaWQg
V0tQcmVmZXJlbmNlc1Jlc2V0VGVzdFJ1bm5lck92ZXJyaWRlcyhXS1ByZWZlcmVuY2VzUmVmIHBy
ZWZlcmVuY2VzUmVmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI2ODY2MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDIwLTEwLTE4ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFw
cGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVuZGVyVHJlZSB0byB1
c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBhIHNldCBvZiBzZXR0ZXJzIHRvIGZvciBE
dW1wUmVuZGVyVHJlZSB0byB1c2Ugd2hlbiBzZXR0aW5nIHByZWZlcmVuY2VzCisgICAgICAgIGJ5
IHN0cmluZy4KKworICAgICAgICBVcGRhdGUgdG8gdXNlIG5ldyAiZXhwb3NlZCIgcHJlZml4IGJp
bmRpbmdzIGFuZCB1c2UgZGVmYXVsdCB2YWx1ZSBleHBsaWNpdGx5CisgICAgICAgIHdoZW4gdXBk
YXRpbmcgc2V0dGluZ3MgZm9yIG5vbi1leHBvc2VkIHByZWZlcmVuY2VzLgorCisgICAgICAgICog
U2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmgu
ZXJiOgorICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5j
ZXNFeHBlcmltZW50YWxGZWF0dXJlcy5tbS5lcmI6CisgICAgICAgICogU2NyaXB0cy9QcmVmZXJl
bmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsRmVhdHVyZXMubW0uZXJiOgorICAg
ICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViVmlld1ByZWZlcmVuY2VzQ2hh
bmdlZEdlbmVyYXRlZC5tbS5lcmI6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5t
bToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rl
c3RpbmdTZXNzaW9uXSk6CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIF9zZXRDdXJyZW50TmV0
d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6XSk6CisgICAgICAgICgrW1dlYlBy
ZWZlcmVuY2VzIF9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uXSk6CisgICAgICAgICgtW1dlYlBy
ZWZlcmVuY2VzIF9zZXRCb29sUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6Zm9yS2V5Ol0p
OgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0VUludDMyUHJlZmVyZW5jZUZvclRlc3Rp
bmdXaXRoVmFsdWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0RG91
YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtX
ZWJQcmVmZXJlbmNlcyBfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6Zm9y
S2V5Ol0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0UHJlZmVyZW5jZUZvclRlc3RX
aXRoVmFsdWU6Zm9yS2V5Ol0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVy
ZW5jZXNQcml2YXRlLmg6CisKIDIwMjAtMTAtMTcgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjU0MzApOiBGaXggLVdzdHJpbmctY29u
Y2F0ZW5hdGlvbiB3YXJuaW5nIGZyb20gb3BlbiBzb3VyY2UgY2xhbmcKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5j
ZXNEZWZpbml0aW9ucy5oLmVyYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMu
aC5lcmIJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1Njcmlw
dHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oLmVyYgko
d29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQAogCiAvLyBEZWZhdWx0IGluaXRpYWxpemF0
aW9uIG9mIFdlYlByZWZlcmVuY2VzJyBpbnRlcm5hbCBkaWN0aW9uYXJ5LgogCi08JS0gZm9yIEBw
cmVmIGluIEBwcmVmZXJlbmNlcyBkbyAtJT4KKzwlLSBmb3IgQHByZWYgaW4gQGV4cG9zZWRQcmVm
ZXJlbmNlcyBkbyAtJT4KIDwlLSAgIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHBy
ZWYuY29uZGl0aW9uICU+CiA8JS0gICBlbmQgLSU+CkBAIC03MSw3ICs3MSw3IEBACiA8JS0gZW5k
IC0lPgogCiAjZGVmaW5lIElOSVRJQUxJWkVfREVGQVVMVF9QUkVGRVJFTkNFU19ESUNUSU9OQVJZ
X0ZST01fR0VORVJBVEVEX1BSRUZFUkVOQ0VTIFwKLTwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVu
Y2VzIGRvIC0lPgorPCUtIGZvciBAcHJlZiBpbiBAZXhwb3NlZFByZWZlcmVuY2VzIGRvIC0lPgog
ICAgICBJTklUSUFMSVpFX0RFRkFVTFRfUFJFRkVSRU5DRVNfRk9SXzwlPSBAcHJlZi5uYW1lICU+
IFwKIDwlLSBlbmQgLSU+CiAgICAgXApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU2Ny
aXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbEZlYXR1
cmVzLm1tLmVyYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TY3JpcHRz
L1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVyZXMu
bW0uZXJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TY3Jp
cHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVy
ZXMubW0uZXJiCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CiArIChOU0FycmF5PFdlYkZlYXR1cmUgKj4gKilfZXhwZXJpbWVudGFsRmVhdHVy
ZXMKIHsKICAgICBzdGF0aWMgTlNBcnJheTxXZWJGZWF0dXJlICo+ICpmZWF0dXJlcyA9IEBbCi08
JS0gZm9yIEBwcmVmIGluIEBleHBlcmltZW50YWxGZWF0dXJlcyBkbyAtJT4KKzwlLSBmb3IgQHBy
ZWYgaW4gQGV4cG9zZWRFeHBlcmltZW50YWxGZWF0dXJlcyBkbyAtJT4KIDwlLSBpZiBAcHJlZi5j
b25kaXRpb24gLSU+CiAjaWYgPCU9IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
V2ViUHJlZmVyZW5jZXNJbnRlcm5hbEZlYXR1cmVzLm1tLmVyYgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZl
cmVuY2VzSW50ZXJuYWxGZWF0dXJlcy5tbS5lcmIJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVy
ZW5jZXNJbnRlcm5hbEZlYXR1cmVzLm1tLmVyYgkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcs
NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogKyAoTlNBcnJheTxXZWJGZWF0dXJlICo+ICop
X2ludGVybmFsRmVhdHVyZXMKIHsKICAgICBzdGF0aWMgTlNBcnJheTxXZWJGZWF0dXJlICo+ICpm
ZWF0dXJlcyA9IEBbCi08JS0gZm9yIEBwcmVmIGluIEBpbnRlcm5hbEZlYXR1cmVzIGRvIC0lPgor
PCUtIGZvciBAcHJlZiBpbiBAZXhwb3NlZEludGVybmFsRmVhdHVyZXMgZG8gLSU+CiA8JS0gaWYg
QHByZWYuY29uZGl0aW9uIC0lPgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBlbmQg
LSU+CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TY3JpcHRzL1ByZWZlcmVuY2VzVGVt
cGxhdGVzL1dlYlZpZXdQcmVmZXJlbmNlc0NoYW5nZWRHZW5lcmF0ZWQubW0uZXJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0
ZXMvV2ViVmlld1ByZWZlcmVuY2VzQ2hhbmdlZEdlbmVyYXRlZC5tbS5lcmIJKHJldmlzaW9uIDI2
ODY0OCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1w
bGF0ZXMvV2ViVmlld1ByZWZlcmVuY2VzQ2hhbmdlZEdlbmVyYXRlZC5tbS5lcmIJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgiCiAK
KyNpbXBvcnQgIldlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaCIKICNpbXBvcnQgIldlYlByZWZl
cmVuY2VzSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYlZpZXdEYXRhLmgiCiAjaW1wb3J0IDxXZWJD
b3JlL0RlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oPgpAQCAtNDQsNyArNDUsMTEgQEAKIDwlLSBp
ZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYgPCU9IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVu
ZCAtJT4KKzwlLSBpZiBAcHJlZi5leHBvc2VkIC0lPgogICAgIHNldHRpbmdzLnNldDwlPSBAcHJl
Zi53ZWJjb3JlTmFtZVVwcGVyICU+KFtwcmVmZXJlbmNlcyA8JT0gQHByZWYucHJlZmVyZW5jZUFj
Y2Vzc29yICU+OkAiPCU9IEBwcmVmLnByZWZlcmVuY2VLZXkgJT4iXSk7Cis8JS0gZWxzZSAtJT4K
KyAgICBzZXR0aW5ncy5zZXQ8JT0gQHByZWYud2ViY29yZU5hbWVVcHBlciAlPihERUZBVUxUX1ZB
TFVFX0ZPUl88JT0gQHByZWYubmFtZSAlPik7Cis8JS0gZW5kIC0lPgogPCUtIGlmIEBwcmVmLmNv
bmRpdGlvbiAtJT4KICNlbmRpZgogPCUtIGVuZCAtJT4KQEAgLTU0LDcgKzU5LDExIEBACiA8JS0g
aWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBl
bmQgLSU+Cis8JS0gaWYgQHByZWYuZXhwb3NlZCAtJT4KICAgICBXZWJDb3JlOjpEZXByZWNhdGVk
R2xvYmFsU2V0dGluZ3M6OnNldDwlPSBAcHJlZi53ZWJjb3JlTmFtZVVwcGVyICU+KFtwcmVmZXJl
bmNlcyA8JT0gQHByZWYucHJlZmVyZW5jZUFjY2Vzc29yICU+OkAiPCU9IEBwcmVmLnByZWZlcmVu
Y2VLZXkgJT4iXSk7Cis8JS0gZWxzZSAtJT4KKyAgICBXZWJDb3JlOjpEZXByZWNhdGVkR2xvYmFs
U2V0dGluZ3M6OnNldDwlPSBAcHJlZi53ZWJjb3JlTmFtZVVwcGVyICU+KERFRkFVTFRfVkFMVUVf
Rk9SXzwlPSBAcHJlZi5uYW1lICU+KTsKKzwlLSBlbmQgLSU+CiA8JS0gaWYgQHByZWYuY29uZGl0
aW9uIC0lPgogI2VuZGlmCiA8JS0gZW5kIC0lPgpAQCAtNjQsNyArNzMsMTEgQEAKIDwlLSBpZiBA
cHJlZi5jb25kaXRpb24gLSU+CiAjaWYgPCU9IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAt
JT4KKzwlLSBpZiBAcHJlZi5leHBvc2VkIC0lPgogICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0PCU9IEBwcmVmLndlYmNvcmVOYW1lVXBwZXIg
JT4oW3ByZWZlcmVuY2VzIDwlPSBAcHJlZi5wcmVmZXJlbmNlQWNjZXNzb3IgJT46QCI8JT0gQHBy
ZWYucHJlZmVyZW5jZUtleSAlPiJdKTsKKzwlLSBlbHNlIC0lPgorICAgIFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0PCU9IEBwcmVmLndlYmNvcmVO
YW1lVXBwZXIgJT4oREVGQVVMVF9WQUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4pOworPCUtIGVu
ZCAtJT4KIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjZW5kaWYKIDwlLSBlbmQgLSU+Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5j
ZXMubW0JKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2NjAsMjYgKzE2NjAsNiBA
QCArICh2b2lkKV9zZXRJQkNyZWF0b3JJRDooTlNTdHJpbmcgKilzdHJpCiAgICAgW29sZCByZWxl
YXNlXTsKIH0KIAotKyAodm9pZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Np
b24KLXsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFdlYlRocmVhZExvY2soKTsKLSNl
bmRpZgotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vz
c2lvbigpOwotfQotCi0rICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uCi17Ci0gICAg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5kZWxldGVB
bGxDb29raWVzKCk7Ci19Ci0KLSsgKHZvaWQpX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lv
bkNvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeQotewot
ICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9y
YWdlKCk7Ci0gICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBOZXR3
b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90
IGNhbGxlZCBiZWZvcmVoYW5kLgotICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2Nl
cHRQb2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKLX0KLQogLSAoQk9PTClpc0RP
TVBhc3RlQWxsb3dlZAogewogICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktp
dERPTVBhc3RlQWxsb3dlZFByZWZlcmVuY2VLZXldOwpAQCAtMTk2NiwxMSArMTk0Niw2IEBAIC0g
KHZvaWQpd2lsbEFkZFRvV2ViVmlldwogICAgICsrX3ByaXZhdGUtPm51bVdlYlZpZXdzOwogfQog
Ci0tICh2b2lkKV9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhWYWx1ZTooTlNTdHJpbmcgKil2YWx1
ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5Ci17Ci0gICAgW3NlbGYgX3NldFN0cmluZ1ZhbHVlOnZh
bHVlIGZvcktleTprZXldOwotfQotCiAtICh2b2lkKXNldEZ1bGxTY3JlZW5FbmFibGVkOihCT09M
KWZsYWcKIHsKICAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmZsYWcgZm9yS2V5OldlYktpdEZ1bGxT
Y3JlZW5FbmFibGVkUHJlZmVyZW5jZUtleV07CkBAIC0zMDEzLDYgKzI5ODgsNTEgQEAgLSAodm9p
ZClfc2V0RW5hYmxlZDooQk9PTCl2YWx1ZSBmb3JGZWF0dQogCiBAZW5kCiAKKworQGltcGxlbWVu
dGF0aW9uIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlVGVzdGluZykKKworKyAodm9pZClfc3dp
dGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb24KK3sKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorICAgIFdlYlRocmVhZExvY2soKTsKKyNlbmRpZgorICAgIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOworfQorCisrICh2b2lkKV9z
ZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENv
b2tpZUFjY2VwdFBvbGljeSlwb2xpY3kKK3sKKyAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3Rv
cmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVs
dFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpOworICAgIEFTU0VSVChjb29raWVTdG9y
YWdlKTsgLy8gV2lsbCBmYWlsIHdoZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hU
b05ld1Rlc3RpbmdTZXNzaW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KKyAgICBDRkhU
VFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCks
IHBvbGljeSk7Cit9CisKKysgKHZvaWQpX2NsZWFyTmV0d29ya0xvYWRlclNlc3Npb24KK3sKKyAg
ICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmRlbGV0
ZUFsbENvb2tpZXMoKTsKK30KKworLSAodm9pZClfc2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0aW5n
V2l0aFZhbHVlOihCT09MKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2Vs
ZiBfc2V0Qm9vbFZhbHVlOnZhbHVlIGZvcktleTprZXldOworfQorCistICh2b2lkKV9zZXRVSW50
MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZToodWludDMyX3QpdmFsdWUgZm9yS2V5OihO
U1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9zZXRJbnRlZ2VyVmFsdWU6dmFsdWUgZm9yS2V5
OmtleV07Cit9CisKKy0gKHZvaWQpX3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZh
bHVlOihkb3VibGUpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9z
ZXRGbG9hdFZhbHVlOnZhbHVlIGZvcktleTprZXldOworfQorCistICh2b2lkKV9zZXRTdHJpbmdQ
cmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZSBmb3JLZXk6KE5T
U3RyaW5nICopa2V5Cit7CisgICAgW3NlbGYgX3NldFN0cmluZ1ZhbHVlOnZhbHVlIGZvcktleTpr
ZXldOworfQorCitAZW5kCisKIEBpbXBsZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNlcyAoV2ViUHJp
dmF0ZVByZWZlcmVuY2VzQ29udmVydGVkVG9XZWJGZWF0dXJlKQogCiAtIChCT09MKXVzZXJHZXN0
dXJlUHJvbWlzZVByb3BhZ2F0aW9uRW5hYmxlZApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCShyZXZpc2lv
biAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVu
Y2VzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSwxMyArODksNiBAQCBAaW50ZXJmYWNl
IFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlKQogKyAodm9pZClfc2V0SW5pdGlhbERlZmF1bHRU
ZXh0RW5jb2RpbmdUb1N5c3RlbUVuY29kaW5nOwogKyAodm9pZClfc2V0SUJDcmVhdG9ySUQ6KE5T
U3RyaW5nICopc3RyaW5nOwogCi0vLyBGb3IgRHVtcFJlbmRlclRyZWUgdXNlIG9ubHkuCi0rICh2
b2lkKV9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbjsKLSsgKHZvaWQpX3Nl
dEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29v
a2llQWNjZXB0UG9saWN5KWNvb2tpZUFjY2VwdFBvbGljeTsKLSsgKHZvaWQpX2NsZWFyTmV0d29y
a0xvYWRlclNlc3Npb247Ci0vLyBVc2VkIHRvIHNldCBwcmVmZXJlbmNlIHNwZWNpZmllZCBpbiB0
aGUgdGVzdCB2aWEgTGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKC4uKS4K
LS0gKHZvaWQpX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZhbHVlOihOU1N0cmluZyAqKXZhbHVl
IGZvcktleTooTlNTdHJpbmcgKilrZXk7Ci0KICsgKHZvaWQpc2V0V2ViS2l0TGlua1RpbWVWZXJz
aW9uOihpbnQpdmVyc2lvbjsKIAogLy8gRm9yIFdlYlZpZXcncyB1c2Ugb25seS4KQEAgLTMxMCw2
ICszMDMsMTggQEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZUZlYQogLSAo
dm9pZClfc2V0RW5hYmxlZDooQk9PTCl2YWx1ZSBmb3JGZWF0dXJlOihXZWJGZWF0dXJlICopZmVh
dHVyZTsKIEBlbmQKIAorQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVRlc3Rp
bmcpCisrICh2b2lkKV9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbjsKKysg
KHZvaWQpX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeToo
TlNIVFRQQ29va2llQWNjZXB0UG9saWN5KWNvb2tpZUFjY2VwdFBvbGljeTsKKysgKHZvaWQpX2Ns
ZWFyTmV0d29ya0xvYWRlclNlc3Npb247CisKKy0gKHZvaWQpX3NldEJvb2xQcmVmZXJlbmNlRm9y
VGVzdGluZ1dpdGhWYWx1ZTooQk9PTCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OworLSAo
dm9pZClfc2V0VUludDMyUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KHVpbnQzMl90KXZh
bHVlIGZvcktleTooTlNTdHJpbmcgKilrZXk7CistICh2b2lkKV9zZXREb3VibGVQcmVmZXJlbmNl
Rm9yVGVzdGluZ1dpdGhWYWx1ZTooZG91YmxlKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXk7
CistICh2b2lkKV9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTooTlNTdHJp
bmcgKil2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OworCitAZW5kCisKIC8vIEZJWE1FOiBJ
ZiB0aGVzZSBhcmUgbm90IHVzZWQgYW55d2hlcmUsIHdlIHNob3VsZCByZW1vdmUgdGhlbSBhbmQg
b25seSB1c2UgV2ViRmVhdHVyZSBtZWNoYW5pc20gZm9yIHRoZSBwcmVmZXJlbmNlLgogQGludGVy
ZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVByZWZlcmVuY2VzQ29udmVydGVkVG9XZWJG
ZWF0dXJlKQogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgdXNlckdlc3R1cmVQcm9taXNlUHJv
cGFnYXRpb25FbmFibGVkOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjY4NjYwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTY4IEBACisyMDIwLTEwLTE4ICBTYW0gV2VpbmlnICA8d2Vp
bmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVuZGVyVHJl
ZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy5tYWtl
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvU2NyaXB0cy9QcmVmZXJlbmNl
c1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmI6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVy
YXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYjogQWRkZWQuCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6
ZGVmYXVsdHMpOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6d2ViVmlld0lzQ29tcGF0aWJs
ZVdpdGhPcHRpb25zIGNvbnN0KToKKyAgICAgICAgKFdUUjo6ZmVhdHVyZVZhbHVlKToKKyAgICAg
ICAgKFdUUjo6VGVzdE9wdGlvbnM6OmJvb2xUZXN0UnVubmVyRmVhdHVyZVZhbHVlIGNvbnN0KToK
KyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6OnN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlVmFsdWUg
Y29uc3QpOgorICAgICAgICAoV1RSOjpzZXRWYWx1ZUlmU2V0SW5NYXApOiBEZWxldGVkLgorICAg
ICAgICAoV1RSOjpUZXN0T3B0aW9uczo6VGVzdE9wdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmg6CisgICAgICAgIChXVFI6OlRlc3RPcHRpb25z
OjpUZXN0T3B0aW9ucyk6CisgICAgICAgIChXVFI6OlRlc3RPcHRpb25zOjpkdW1wSlNDb25zb2xl
TG9nSW5TdGRFcnIgY29uc3QpOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6ZW5hYmxlRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCBjb25zdCk6CisgICAgICAgIChXVFI6OlRlc3RPcHRpb25z
OjpsYXllckJhY2tlZFdlYlZpZXcgY29uc3QpOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6
dXNlRXBoZW1lcmFsU2Vzc2lvbiBjb25zdCk6CisgICAgICAgIChXVFI6OlRlc3RPcHRpb25zOjph
ZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcyBjb25zdCk6CisgICAgICAgIChXVFI6OlRlc3RP
cHRpb25zOjpqc2NPcHRpb25zIGNvbnN0KToKKyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6OmJv
b2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMgY29uc3QpOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9u
czo6ZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzIGNvbnN0KToKKyAgICAgICAgKFdUUjo6VGVz
dE9wdGlvbnM6OnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJlcyBjb25zdCk6CisgICAgICAgIChX
VFI6OlRlc3RPcHRpb25zOjpzdHJpbmdXZWJQcmVmZXJlbmNlRmVhdHVyZXMgY29uc3QpOgorICAg
ICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRl
clRyZWUubW06CisgICAgICAgICh0b05TKToKKyAgICAgICAgKC1bU2Nyb2xsVmlld1Jlc2l6ZXJE
ZWxlZ2F0ZSB2aWV3OmRpZFNldEZyYW1lOm9sZEZyYW1lOmFzUmVzdWx0T2Zab29tOl0pOgorICAg
ICAgICAoc2hvdWxkSWdub3JlV2ViQ29yZU5vZGVMZWFrcyk6CisgICAgICAgICgtW0RSVE1vY2tT
Y3JvbGxlciByZWN0Rm9yUGFydDpdKToKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXdBbmRPZmZzY3Jl
ZW5XaW5kb3cpOgorICAgICAgICAoZW5hYmxlRXhwZXJpbWVudGFsRmVhdHVyZXMpOgorICAgICAg
ICAocmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChzZXRX
ZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKToKKyAgICAgICAgKHNldERlZmF1bHRzVG9Db25z
aXN0ZW50VmFsdWVzRm9yVGVzdGluZyk6CisgICAgICAgIChkdW1wQXVkaW8pOgorICAgICAgICAo
c2l6ZVdlYlZpZXdGb3JDdXJyZW50VGVzdCk6CisgICAgICAgIChzZXRKU0NPcHRpb25zKToKKyAg
ICAgICAgKHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgKHRlc3RPcHRp
b25zRm9yVGVzdCk6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldFVzZXJTdHls
ZVNoZWV0RW5hYmxlZCk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRVc2VyU3R5bGVTaGVldExv
Y2F0aW9uKToKKyAgICAgICAgKFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZSk6CisgICAg
ICAgIChUZXN0UnVubmVyOjpzZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9tYWMvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZSByZXNldFRvQ29uc2lz
dGVudFN0YXRlQmVmb3JlVGVzdGluZzpdKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4v
RHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAocmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lz
dGVudFZhbHVlcyk6CisgICAgICAgIChib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSk6Cisg
ICAgICAgIChzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKToKKyAgICAgICAgKHNldEpT
Q09wdGlvbnMpOgorICAgICAgICAodGVzdE9wdGlvbnNGb3JUZXN0KToKKyAgICAgICAgKHJ1blRl
c3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBs
YXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmI6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVy
OjpyZXNldFByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKToKKworMjAyMC0xMC0xNyAgU2Ft
IFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1Rlc3RpbmddIENvbnZlcnQg
RHVtcFJlbmRlclRyZWUgdG8gdXNlIGdlbmVyYXRlZCB0ZXN0IGhlYWRlciBvcHRpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc4ODAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGdWxseSBzdXBwb3J0
IHVzZSBvZiBhbnkgV2ViUHJlZmVyZW5jZXMqLnlhbWwgcHJlZmVyZW5jZSBpbiBEdW1wUmVuZGVy
VHJlZSAoZm9yIG1hY09TKSBieToKKyAgICAgICAgICAgIC0gTW92aW5nIER1bXBSZW5kZXJUcmVl
J3MgVGVzdE9wdGlvbnMgdG8gYmUgZnVsbHkgYmFja2VkIGJ5IFRlc3RGZWF0dXJlcyBsaWtlIFdl
YktpdFRlc3RSdW5ubmVyLgorICAgICAgICAgICAgLSBBZG9wdGluZyBuZXcgV2ViUHJlZmVyZW5j
ZXMgU1BJIGZvciBzZXR0aW5nIGFueSBwcmVmZXJlbmNlIGJ5IGtleS4KKyAgICAgICAgICAgIC0g
R2VuZXJhdGluZyBtYXBwaW5nIGZyb20gV2ViUHJlZmVyZW5jZXMqLnlhbWwgdG8gV2ViS2l0TGVn
YWN5IGtleSBuYW1lcy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0
OgorICAgICAgICBHZW5lcmF0ZSBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1h
cHBpbmcuY3BwCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0OgorICAgICAgICBBZGQgbmV3IHRlbXBsYXRlIGZpbGUsIFRlc3RPcHRpb25z
R2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiLCBhbmQgYWRkCisgICAgICAg
IERlcml2ZWRTb3VyY2VzLm1ha2UgYW5kIGdlbmVyYXRlLWRlcml2ZWQtc291cmNlcy5zaCwgc28g
dGhhdCBpZiBlaXRoZXIgb2YgdGhlbSBjaGFuZ2UKKyAgICAgICAgdGhlIERlcml2ZWRTb3VyY2Vz
Lm1ha2UgaXMgYWN0dWFsbHkgaW52b2tlZC4KKyAKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgQWRkcyBUZXN0T3B0aW9u
c0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgU3dpdGNoIGdlbmVyYXRpb24g
b2YgcHJlZmVyZW5jZXMgdG8gdXNlIGEgc3RhdGljIHBhdHRlcm4gdG8gYXZvaWQgaXNzdWVzIHdp
dGggY2lyY3VsYXIgZGVwZW5kZW5jaWVzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVt
cFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkcyBUZXN0
T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dl
bmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYjogQWRkZWQuCisgICAgICAgIFRl
bXBsYXRlIGZvciBnZW5lcmF0aW5nIG1hcHBpbmcgZnJvbSBXZWJQcmVmZXJlbmNlcyoueWFtbCBr
ZXkgbmFtZXMgdG8gV2ViS2l0TGVnYWN5IGtleSBuYW1lcy4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL1Rlc3RPcHRpb25zLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0T3B0
aW9ucy5oOgorICAgICAgICBTd2l0Y2ggdG8gYSBtb2RlbCBtb3JlIHNpbWlsYXIgdG8gdGhhdCBp
biBXZWJLaXRUZXN0UnVubmVyLCB3aGVyZSBUZXN0T3B0aW9ucyBzdG9yZXMgdGhlIHBhc3NlZCBp
biAKKyAgICAgICAgVGVzdEZlYXR1cmVzIGFuZCBvbmx5IGV4cG9zZXMgdmFsdWVzIHRoYXQgaGF2
ZSBiZWVuIHNldCBvciBkZWZhdWx0IHZhbHVlcyB3aGVuIG5lZWRlZC4KKyAgICAgICAgCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAodG9O
Uyk6CisgICAgICAgIEFkZCBoZWxwZXIgdG8gY29udmVydCBmcm9tIGEgc3RkOjpzdHJpbmcgdG8g
YW4gTlNTdHJpbmcuCisKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3cp
OgorICAgICAgICBOb3cgdGhhdCB3ZSBhcmVuJ3QgbmVjY2Vzc2FyaWx5IHNldHRpbmcgYWxsIHBy
ZWZlcmVuY2VzIGVhY2ggdGVzdCwgd2UgbmVlZCB0byBmdWxseSByZXNldCB0aGUKKyAgICAgICAg
V2ViUHJlZmVyZW5jZXMgb24gZWFjaCBydW4gYnkgY3JlYXRpbmcgYSBuZXcgb25lLiBUaGlzIG1l
YW5zIHJlbW92aW5nIHRoZSB1c2VzIG9mIAorICAgICAgICBbV2ViUHJlZmVyZW5jZXMgc3RhbmRh
cmRQcmVmZXJlbmNlc10sIGFuZCBpbnN0ZWFkIGdyYWJiaW5nIHRoZSBXZWJWaWV3J3MgcHJlZmVy
ZW5jZXMgd2hlbiBuZWVkZWQuCisKKyAgICAgICAgKHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNp
c3RlbnRWYWx1ZXMpOgorICAgICAgICBNb3ZlcyBzb21lIHNjYXR0ZXJlZCBkZWZhdWx0IHZhbHVl
IHNldHRpbmcgaGVyZS4gUmVtb3ZlIGFzc2VydCB0aGF0IGlzIG5vIGxvbmdlciBhY2N1cmF0ZQor
ICAgICAgICBub3cgdGhhdCB3ZSBkb24ndCB1c2Ugc3RhbmRhcmRQcmVmZXJlbmNlcyBhbmQgd2ls
bCBub3QgaGF2ZSBzZXQgdGhpcyB2YWx1ZSBieSB0aGlzIHBvaW50LgorCisgICAgICAgIChzZXRX
ZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKToKKyAgICAgICAgVXNlIG5ldyBfc2V0KlByZWZl
cmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleSogU1BJIHRvIHNldCBhbnkgc3BlY2lmaWVk
IHByZWZlcm5lY2VzLgorCisgICAgICAgIChzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlc0Zv
clRlc3RpbmcpOgorICAgICAgICBNb3ZlIGRlZmF1bHRzIHNldCBoZXJlIHRvIHRoZSBtb3JlIGFw
cHJvcHJpYXRlIGFuZCBjZW50cmFsaXplZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50
VmFsdWVzLgorCisgICAgICAgIChzZXRKU0NPcHRpb25zKToKKyAgICAgICAgVXNlIG5ldyBnZXR0
ZXIgZnVuY3Rpb24gcmF0aGVyIHRoYW4gZGlyZWN0IG1lbWJlciBhY2Nlc3MuCisKKyAgICAgICAg
KHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlKToKKyAgICAgICAgRnVsbHkgcmVzZXQgcHJl
ZmVybmVjZXMgYnkgYWxsb2NhdGluZyBhIG5ldyBXZWJQcmVmZXJlbmNlcyBvbiByZXNldCBhbmQg
dXNlIG5ldyBUZXN0T3B0aW9ucyBnZXR0ZXIKKyAgICAgICAgZnVuY3Rpb25zLgorCisgICAgICAg
ICh0ZXN0T3B0aW9uc0ZvclRlc3QpOgorICAgICAgICBTZWVkIFRlc3RGZWF0dXJlcyB3aXRoIGRl
ZmF1bHQgZ2xvYmFsIHZhbHVlcywgbWF0Y2hpbmcgdGhlIGlkaW9tIGluIFdlYktpdFRlc3RSdW5u
ZXIuCisKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICBVc2UgbmV3IGdldHRlciBmdW5jdGlv
biByYXRoZXIgdGhhbiBkaXJlY3QgbWVtYmVyIGFjY2Vzcy4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0VXNl
clN0eWxlU2hlZXRFbmFibGVkKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNo
ZWV0TG9jYXRpb24pOgorICAgICAgICAoVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKToK
KyAgICAgICAgKFRlc3RSdW5uZXI6OnNldENhY2hlTW9kZWwpOgorICAgICAgICBBY2Nlc3MgdGhl
IGNvcnJlY3QgV2ViUHJlZmVyZW5jZXMgdmlhIHRoZSBXZWJWaWV3LCByYXRoZXIgdGhhbiBhc3N1
bWluZyBzdGFuZGFyZFByZWZlcmVuY2VzCisgICAgICAgIGFyZSBiZWluZyB1c2VkLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW06CisgICAgICAgICgtW1VJRGVs
ZWdhdGUgcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rpbmc6XSk6CisgICAgICAgIFVz
ZSBuZXcgZ2V0dGVyIGZ1bmN0aW9uIHJhdGhlciB0aGFuIGRpcmVjdCBtZW1iZXIgYWNjZXNzLgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAg
ICAgKHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoYm9v
bFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUpOgorICAgICAgICAoc2V0V2ViUHJlZmVyZW5jZXNG
b3JUZXN0T3B0aW9ucyk6CisgICAgICAgIChzZXRKU0NPcHRpb25zKToKKyAgICAgICAgKHRlc3RP
cHRpb25zRm9yVGVzdCk6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgS2VlcCBXaW5kb3dz
IER1bXBSZW5kZXJUcmVlIHdvcmtpbmcgd2l0aCB0aGUgbmV3IFRlc3RPcHRpb25zIGJ5IGdldHRp
bmcgZmVhdHVyZSB2YWx1ZXMgYnkKKyAgICAgICAgc3RyaW5nIGtleXMgd2l0aCBzcGVjaWZpZWQg
ZGVmYXVsdHMgYW5kIGFkb3B0aW5nIG5ldyBnZXR0ZXIgZnVuY3Rpb25zLiBJbiB0aGUgZnV0dXJl
LCB3ZQorICAgICAgICB3aWxsIGFkZCBzaW1pbGFyIFNQSSBhcyB3YXMgYWRkZWQgZm9yIG1hYyBX
ZWJLaXRMZWdhY3kgdG8gV2luZG93cyBXZWJLaXRMZWdhY3kgdG8gYXZvaWQgdGhpcy4KKworICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6cmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyk6Cisg
ICAgICAgIFVwZGF0ZSBmb3IgcmVuYW1lZCBXS1ByZWZlcmVuY2VzUmVmIFNQSS4KKwogMjAyMC0x
MC0xNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0ZsYXRwYWsgU0RLXSBmbGF0cGFrdXRpbHMucHkgcmVwb3J0cyAiS2V5RXJyb3I6ICdnY2MnIiBl
cnJvciBpZiB1c2luZyB3aXRoIGljZWNjIGFuZCB0b29sY2hhaW5zIGFyZW4ndCBnZW5lcmF0ZWQg
eWV0CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjY4NjQ4
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDYgKzQwLDcgQEAgbGlzdChBUFBFTkQgRHVtcFJlbmRlclRyZWVfUFJJVkFURV9JTkNM
VQogKQogCiBzZXQoRHVtcFJlbmRlclRyZWVfV0VCX1BSRUZFUkVOQ0VTX1RFTVBMQVRFUworICAg
ICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RP
cHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiCiAgICAgJHtEdW1w
UmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRLZXlzLmguZXJiCiApCiAKQEAgLTUzLDEyICs1NCwxMyBAQCBzZXQoRHVtcFJlbmRl
clRyZWVfV0VCX1BSRUZFUkVOQ0VTCiBzZXRfc291cmNlX2ZpbGVzX3Byb3BlcnRpZXMoJHtEdW1w
UmVuZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVN9IFBST1BFUlRJRVMgR0VORVJBVEVEIFRSVUUpCiAK
IGFkZF9jdXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtEdW1wUmVuZGVyVHJlZV9ERVJJVkVE
X1NPVVJDRVNfRElSfS9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaAorICAgIE9VVFBVVCAke0R1
bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkV2Vi
S2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgJHtEdW1wUmVuZGVyVHJlZV9ERVJJVkVEX1NPVVJDRVNf
RElSfS9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaAogICAgIERFUEVORFMgJHtEdW1wUmVuZGVy
VHJlZV9XRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVTfSAke0R1bXBSZW5kZXJUcmVlX1dFQl9QUkVG
RVJFTkNFU30gV1RGX0NvcHlQcmVmZXJlbmNlcwotICAgIENPTU1BTkQgJHtSVUJZX0VYRUNVVEFC
TEV9ICR7V1RGX1NDUklQVFNfRElSfS9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiIC0tZnJvbnRlbmQg
V2ViS2l0TGVnYWN5IC0tYmFzZSAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXMueWFtbCAtLWRlYnVnICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQ
cmVmZXJlbmNlc0RlYnVnLnlhbWwgLS1leHBlcmltZW50YWwgJHtXVEZfU0NSSVBUU19ESVJ9L1By
ZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgLS1pbnRlcm5hbCAke1dU
Rl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sIC0t
b3V0cHV0RGlyICIke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9IiAtLXRlbXBs
YXRlICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rl
c3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYgorICAgIENPTU1BTkQgJHtSVUJZX0VYRUNVVEFC
TEV9ICR7V1RGX1NDUklQVFNfRElSfS9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiIC0tZnJvbnRlbmQg
V2ViS2l0TGVnYWN5IC0tYmFzZSAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXMueWFtbCAtLWRlYnVnICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQ
cmVmZXJlbmNlc0RlYnVnLnlhbWwgLS1leHBlcmltZW50YWwgJHtXVEZfU0NSSVBUU19ESVJ9L1By
ZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgLS1pbnRlcm5hbCAke1dU
Rl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sIC0t
b3V0cHV0RGlyICIke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9IiAtLXRlbXBs
YXRlICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rl
c3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiIC0tdGVtcGxh
dGUgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVz
dE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCiAgICAgVkVSQkFUSU0pCiAKIGxpc3QoQVBQRU5E
IER1bXBSZW5kZXJUcmVlX1NPVVJDRVMKKyAgICAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09V
UkNFU19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAK
ICAgICAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9L1Rlc3RPcHRpb25zR2Vu
ZXJhdGVkS2V5cy5oCiApCiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUv
RGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9v
bHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAkod29ya2lu
ZyBjb3B5KQpAQCAtNiw3ICs2LDEwIEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwv
aW5jbHVkZS8KICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZS93dGYvU2Ny
aXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKICQoUFJPSkVDVF9E
SVIpLy4uL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0
Q29udHJvbGxlci5pZGwKICQoUFJPSkVDVF9ESVIpL0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JEdW1w
UmVuZGVyVHJlZS5wbQorJChQUk9KRUNUX0RJUikvRGVyaXZlZFNvdXJjZXMubWFrZQogJChQUk9K
RUNUX0RJUikvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRl
ZEtleXMuaC5lcmIKKyQoUFJPSkVDVF9ESVIpL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
VGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIKKyQoUFJP
SkVDVF9ESVIpL1NjcmlwdHMvZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzLnNoCiAkKFdFQkNPUkVf
UFJJVkFURV9IRUFERVJTX0RJUikvQ29kZUdlbmVyYXRvci5wbQogJChXRUJDT1JFX1BSSVZBVEVf
SEVBREVSU19ESVIpL0lETEF0dHJpYnV0ZXMuanNvbgogJChXRUJDT1JFX1BSSVZBVEVfSEVBREVS
U19ESVIpL0lETFBhcnNlci5wbQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI2ODY0OCkKKysr
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CSh3
b3JraW5nIGNvcHkpCkBAIC0yLDMgKzIsNCBAQAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVlL0pTVUlTY3JpcHRDb250cm9sbGVyLmNwcAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVlL0pTVUlTY3JpcHRD
b250cm9sbGVyLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9EdW1wUmVu
ZGVyVHJlZS9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0
TGVnYWN5S2V5TWFwcGluZy5jcHAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNv
dXJjZXMubWFrZQkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVy
aXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjMsMjkgKzIzLDEyIEBACiAKIFJV
QlkgPSBydWJ5CiAKLVdFQl9QUkVGRVJFTkNFUyA9IFwKLSAgICAke1dURl9CVUlMRF9TQ1JJUFRT
X0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCBcCi0gICAgJHtXVEZfQlVJTERf
U0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRGVidWcueWFtbCBcCi0gICAg
JHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJp
bWVudGFsLnlhbWwgXAotICAgICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9X
ZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwgXAotIwotCi1XRUJfUFJFRkVSRU5DRVNfVEVNUExB
VEVTID0gXAotICAgICQoRHVtcFJlbmRlclRyZWUpL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0
ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiIFwKLSMKLVdFQl9QUkVGRVJFTkNFU19G
SUxFUyA9ICQoYmFzZW5hbWUgJChub3RkaXIgJChXRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVTKSkp
Ci1XRUJfUFJFRkVSRU5DRVNfUEFUVEVSTlMgPSAkKHN1YnN0IC5lcmIsLCQoV0VCX1BSRUZFUkVO
Q0VTX0ZJTEVTKSkKLQotYWxsIDogJChXRUJfUFJFRkVSRU5DRVNfRklMRVMpCi0KLSQoV0VCX1BS
RUZFUkVOQ0VTX1BBVFRFUk5TKSA6ICQoV1RGX0JVSUxEX1NDUklQVFNfRElSKS9HZW5lcmF0ZVBy
ZWZlcmVuY2VzLnJiICQoV0VCX1BSRUZFUkVOQ0VTX1RFTVBMQVRFUykgJChXRUJfUFJFRkVSRU5D
RVMpCi0JJChSVUJZKSAkPCAtLWZyb250ZW5kIFdlYktpdExlZ2FjeSAtLWJhc2UgJHtXVEZfQlVJ
TERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWwgLS1kZWJ1ZyAk
e1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNEZWJ1Zy55
YW1sIC0tZXhwZXJpbWVudGFsICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9X
ZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIC0taW50ZXJuYWwgJHtXVEZfQlVJTERfU0NS
SVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbCAkKGFkZHBy
ZWZpeCAtLXRlbXBsYXRlICwgJChXRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVTKSkKLQotCiBVSVND
UklQVENPTlRFWFRfRElSID0gJChEdW1wUmVuZGVyVHJlZSkvLi4vVGVzdFJ1bm5lclNoYXJlZC9V
SVNjcmlwdENvbnRleHQvQmluZGluZ3MKK0RVTVBSRU5ERVJUUkVFX1BSRUZFUkVOQ0VTX1RFTVBM
QVRFU19ESVIgPSAkKER1bXBSZW5kZXJUcmVlKS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVz
CiAKIFZQQVRIID0gXAogICAgICQoVUlTQ1JJUFRDT05URVhUX0RJUikgXAorICAgICQoRFVNUFJF
TkRFUlRSRUVfUFJFRkVSRU5DRVNfVEVNUExBVEVTX0RJUikgXAogIwogCiBVSUNPTlRFWFRfSU5U
RVJGQUNFUyA9IFwKQEAgLTcxLDMgKzU0LDIxIEBAIGFsbCA6IFwKICAgICAkKFVJQ09OVEVYVF9J
TlRFUkZBQ0VTOiU9SlMlLmgpIFwKICAgICAkKFVJQ09OVEVYVF9JTlRFUkZBQ0VTOiU9SlMlLmNw
cCkgXAogIworCisKK1dFQl9QUkVGRVJFTkNFUyA9IFwKKyAgICAke1dURl9CVUlMRF9TQ1JJUFRT
X0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCBcCisgICAgJHtXVEZfQlVJTERf
U0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRGVidWcueWFtbCBcCisgICAg
JHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJp
bWVudGFsLnlhbWwgXAorICAgICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9X
ZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwgXAorIworCitXRUJfUFJFRkVSRU5DRVNfR0VORVJB
VEVEX0ZJTEVTID0gXAorICAgIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFw
cGluZy5jcHAgXAorICAgIFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oIFwKKyMKKworYWxsIDog
JChXRUJfUFJFRkVSRU5DRVNfR0VORVJBVEVEX0ZJTEVTKQorCiskKFdFQl9QUkVGRVJFTkNFU19H
RU5FUkFURURfRklMRVMpIDogJSA6ICUuZXJiICQoV0VCX1BSRUZFUkVOQ0VTKSAkKFdURl9CVUlM
RF9TQ1JJUFRTX0RJUikvR2VuZXJhdGVQcmVmZXJlbmNlcy5yYgorCSQoUlVCWSkgJChXVEZfQlVJ
TERfU0NSSVBUU19ESVIpL0dlbmVyYXRlUHJlZmVyZW5jZXMucmIgLS1mcm9udGVuZCBXZWJLaXRM
ZWdhY3kgLS1iYXNlICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVm
ZXJlbmNlcy55YW1sIC0tZGVidWcgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2Vz
L1dlYlByZWZlcmVuY2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRhbCAke1dURl9CVUlMRF9TQ1JJ
UFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCAtLWlu
dGVybmFsICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNl
c0ludGVybmFsLnlhbWwgLS10ZW1wbGF0ZSAkPApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUv
VGVzdE9wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RP
cHRpb25zLmNwcAkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVz
dE9wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw0NCBAQAogCiBuYW1lc3Bh
Y2UgV1RSIHsKIAorY29uc3QgVGVzdEZlYXR1cmVzJiBUZXN0T3B0aW9uczo6ZGVmYXVsdHMoKQor
eworICAgIHN0YXRpYyBUZXN0RmVhdHVyZXMgZmVhdHVyZXM7CisgICAgaWYgKGZlYXR1cmVzLmJv
b2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMuZW1wdHkoKSkgeworICAgICAgICBmZWF0dXJlcy5ib29s
V2ViUHJlZmVyZW5jZUZlYXR1cmVzID0geworICAgICAgICAgICAgLy8gVGhlc2UgYXJlIFdlYlBy
ZWZlcmVuY2UgdmFsdWVzIHRoYXQgbXVzdCBhbHdheXMgYmUgc2V0IGFzIHRoZXkgbWF5CisgICAg
ICAgICAgICAvLyBkaWZmZXIgZnJvbSB0aGUgZGVmYXVsdCBzZXQgaW4gdGhlIFdlYlByZWZlcmVu
Y2VzKi55YW1sIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICB7ICJBbGxvd0Nyb3NzT3JpZ2lu
U3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyIsIGZhbHNlIH0sCisgICAgICAgICAgICB7
ICJBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzIiwgdHJ1ZSB9LAorICAgICAgICAgICAgeyAi
QWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJBdHRh
Y2htZW50RWxlbWVudEVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiVXNlc0JhY2tG
b3J3YXJkQ2FjaGUiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiQ29sb3JGaWx0ZXJFbmFibGVk
IiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQiLCBm
YWxzZSB9LAorICAgICAgICAgICAgeyAiSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbmFibGVkIiwgZmFs
c2UgfSwKKyAgICAgICAgICAgIHsgIktleWdlbkVsZW1lbnRFbmFibGVkIiwgZmFsc2UgfSwKKyAg
ICAgICAgICAgIHsgIk1lbnVJdGVtRWxlbWVudEVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAg
ICAgeyAiTW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQiLCB0cnVlIH0sCisKKyAgICAgICAgICAg
IHsgIkNTU0xvZ2ljYWxFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkxpbmVIZWln
aHRVbml0c0VuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiU2VsZWN0aW9uQWNyb3Nz
U2hhZG93Qm91bmRhcmllc0VuYWJsZWQiLCB0cnVlIH0sCisgICAgICAgICAgICB7ICJMYXlvdXRG
b3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCIsIHRydWUgfSwKKworICAgICAgICAg
ICAgeyAiQWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7
ICJBc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZCIsIGZhbHNlIH0sCisg
ICAgICAgICAgICB7ICJBc3luY0NsaXBib2FyZEFQSUVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAg
ICAgICAgeyAiQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCIsIGZhbHNlIH0sCisgICAg
ICAgICAgICB7ICJDb250YWN0UGlja2VyQVBJRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAg
ICB7ICJDb3JlTWF0aE1MRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJSZXF1ZXN0
SWRsZUNhbGxiYWNrRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJSZXNpemVPYnNl
cnZlckVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiV2ViR1BVRW5hYmxlZCIsIGZh
bHNlIH0sCisgICAgICAgIH07CisgICAgfQorICAgIHJldHVybiBmZWF0dXJlczsKK30KKwogY29u
c3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBUZXN0SGVhZGVyS2V5VHlwZT4mIFRl
c3RPcHRpb25zOjprZXlUeXBlTWFwcGluZygpCiB7CiAgICAgc3RhdGljIGNvbnN0IHN0ZDo6dW5v
cmRlcmVkX21hcDxzdGQ6OnN0cmluZywgVGVzdEhlYWRlcktleVR5cGU+IG1hcCB7CkBAIC00Nyw1
NiArODUsNDcgQEAgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBUZQogICAg
IHJldHVybiBtYXA7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIHNldFZh
bHVlSWZTZXRJbk1hcChUJiB2YWx1ZVRvU2V0LCBzdGQ6OnN0cmluZyBrZXksIGNvbnN0IHN0ZDo6
dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgVD4mIG1hcCkKK2Jvb2wgVGVzdE9wdGlvbnM6Ondl
YlZpZXdJc0NvbXBhdGlibGVXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykg
Y29uc3QKK3sKKyAgICBpZiAobV9mZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcyAhPSBvcHRp
b25zLm1fZmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAobV9mZWF0dXJlcy5pbnRlcm5hbERlYnVnRmVhdHVyZXMgIT0gb3B0aW9ucy5t
X2ZlYXR1cmVzLmludGVybmFsRGVidWdGZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmIChtX2ZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMgIT0gb3B0aW9ucy5t
X2ZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAobV9mZWF0dXJlcy5kb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMgIT0gb3B0
aW9ucy5tX2ZlYXR1cmVzLmRvdWJsZVdlYlByZWZlcmVuY2VGZWF0dXJlcykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJl
cyAhPSBvcHRpb25zLm1fZmVhdHVyZXMudWludDMyV2ViUHJlZmVyZW5jZUZlYXR1cmVzKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuc3RyaW5nV2ViUHJlZmVyZW5j
ZUZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5zdHJpbmdXZWJQcmVmZXJlbmNlRmVhdHVy
ZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy5ib29sVGVzdFJ1
bm5lckZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5ib29sVGVzdFJ1bm5lckZlYXR1cmVz
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuZG91YmxlVGVzdFJ1
bm5lckZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5kb3VibGVUZXN0UnVubmVyRmVhdHVy
ZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJlcy5zdHJpbmdUZXN0
UnVubmVyRmVhdHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLnN0cmluZ1Rlc3RSdW5uZXJGZWF0
dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLnN0cmluZ1Zl
Y3RvclRlc3RSdW5uZXJGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMuc3RyaW5nVmVjdG9y
VGVzdFJ1bm5lckZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgZmVhdHVyZVZhbHVlKHN0ZDo6c3RyaW5n
IGtleSwgVCBkZWZhdWx0VmFsdWUsIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmlu
ZywgVD4mIG1hcCkKIHsKICAgICBhdXRvIGl0ID0gbWFwLmZpbmQoa2V5KTsKLSAgICBpZiAoaXQg
PT0gbWFwLmVuZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgdmFsdWVUb1NldCA9IGl0LT5zZWNv
bmQ7Ci19Ci0KLVRlc3RPcHRpb25zOjpUZXN0T3B0aW9ucyhUZXN0RmVhdHVyZXMgdGVzdEZlYXR1
cmVzKQotewotICAgIHNldFZhbHVlSWZTZXRJbk1hcChhbGxvd0Nyb3NzT3JpZ2luU3VicmVzb3Vy
Y2VzVG9Bc2tGb3JDcmVkZW50aWFscywgIkFsbG93Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNUb0Fz
a0ZvckNyZWRlbnRpYWxzIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMp
OwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChhbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzLCAi
QWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyIsIHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVy
ZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQWNjZWxlcmF0ZWRE
cmF3aW5nLCAiQWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5ib29sV2Vi
UHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQXR0YWNo
bWVudEVsZW1lbnQsICJBdHRhY2htZW50RWxlbWVudEVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuYm9v
bFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUJh
Y2tGb3J3YXJkQ2FjaGUsICJVc2VzQmFja0ZvcndhcmRDYWNoZSIsIHRlc3RGZWF0dXJlcy5ib29s
V2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQ29s
b3JGaWx0ZXIsICJDb2xvckZpbHRlckVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZl
cmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUluc3BlY3RvckFk
ZGl0aW9ucywgIkluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuYm9vbFdl
YlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUludGVy
c2VjdGlvbk9ic2VydmVyLCAiSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbmFibGVkIiwgdGVzdEZlYXR1
cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChl
bmFibGVLZXlnZW5FbGVtZW50LCAiS2V5Z2VuRWxlbWVudEVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMu
Ym9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJs
ZU1lbnVJdGVtRWxlbWVudCwgIk1lbnVJdGVtRWxlbWVudEVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMu
Ym9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJs
ZU1vZGVybk1lZGlhQ29udHJvbHMsICJNb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCIsIHRlc3RG
ZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLQotICAgIHNldFZhbHVlSWZTZXRJ
bk1hcChlbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkLCAiZW5hYmxlRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uTG9hZCIsIHRlc3RGZWF0dXJlcy5ib29sVGVzdFJ1bm5lckZlYXR1cmVzKTsKLSAg
ICBzZXRWYWx1ZUlmU2V0SW5NYXAoZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyLCAiZHVtcEpTQ29u
c29sZUxvZ0luU3RkRXJyIiwgdGVzdEZlYXR1cmVzLmJvb2xUZXN0UnVubmVyRmVhdHVyZXMpOwot
ICAgIHNldFZhbHVlSWZTZXRJbk1hcChsYXllckJhY2tlZFdlYlZpZXcsICJsYXllckJhY2tlZFdl
YlZpZXciLCB0ZXN0RmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0dXJlcyk7Ci0gICAgc2V0VmFs
dWVJZlNldEluTWFwKHVzZUVwaGVtZXJhbFNlc3Npb24sICJ1c2VFcGhlbWVyYWxTZXNzaW9uIiwg
dGVzdEZlYXR1cmVzLmJvb2xUZXN0UnVubmVyRmVhdHVyZXMpOwotCi0gICAgc2V0VmFsdWVJZlNl
dEluTWFwKGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLCAiYWRkaXRpb25hbFN1cHBvcnRl
ZEltYWdlVHlwZXMiLCB0ZXN0RmVhdHVyZXMuc3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVzKTsKLSAg
ICBzZXRWYWx1ZUlmU2V0SW5NYXAoanNjT3B0aW9ucywgImpzY09wdGlvbnMiLCB0ZXN0RmVhdHVy
ZXMuc3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVzKTsKLQotICAgIHNldFZhbHVlSWZTZXRJbk1hcChl
bmFibGVDU1NMb2dpY2FsLCAiQ1NTTG9naWNhbEVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuaW50ZXJu
YWxEZWJ1Z0ZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlTGluZUhlaWdo
dFVuaXRzLCAiTGluZUhlaWdodFVuaXRzRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5pbnRlcm5hbERl
YnVnRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVTZWxlY3Rpb25BY3Jv
c3NTaGFkb3dCb3VuZGFyaWVzLCAic2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllc0VuYWJs
ZWQiLCB0ZXN0RmVhdHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlm
U2V0SW5NYXAobGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQsICJMYXlv
dXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5pbnRl
cm5hbERlYnVnRmVhdHVyZXMpOwotCi0gICAgc2V0VmFsdWVJZlNldEluTWFwKGFkQ2xpY2tBdHRy
aWJ1dGlvbkVuYWJsZWQsICJBZENsaWNrQXR0cmlidXRpb25FbmFibGVkIiwgdGVzdEZlYXR1cmVz
LmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQXNw
ZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodCwgIkFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lk
dGhBbmRIZWlnaHRFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsK
LSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQXN5bmNDbGlwYm9hcmRBUEksICJBc3luY0Ns
aXBib2FyZEFQSUVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMpOwot
ICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmcsICJD
U1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRh
bEZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQ29udGFjdFBpY2tlckFQ
SSwgIkNvbnRhY3RQaWNrZXJBUElFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZl
YXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlQ29yZU1hdGhNTCwgIkNvcmVN
YXRoTUxFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKLSAgICBz
ZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlUmVxdWVzdElkbGVDYWxsYmFjaywgIlJlcXVlc3RJZGxl
Q2FsbGJhY2tFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKLSAg
ICBzZXRWYWx1ZUlmU2V0SW5NYXAoZW5hYmxlUmVzaXplT2JzZXJ2ZXIsICJSZXNpemVPYnNlcnZl
ckVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMpOwotICAgIHNldFZh
bHVlSWZTZXRJbk1hcChlbmFibGVXZWJHUFUsICJXZWJHUFVFbmFibGVkIiwgdGVzdEZlYXR1cmVz
LmV4cGVyaW1lbnRhbEZlYXR1cmVzKTsKKyAgICBpZiAoaXQgIT0gbWFwLmVuZCgpKQorICAgICAg
ICByZXR1cm4gaXQtPnNlY29uZDsKKyAgICByZXR1cm4gZGVmYXVsdFZhbHVlOworfQorCitib29s
IFRlc3RPcHRpb25zOjpib29sVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZShzdGQ6OnN0cmluZyBrZXks
IGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdAoreworICAgIHJldHVybiBmZWF0dXJlVmFsdWUoa2V5
LCBkZWZhdWx0VmFsdWUsIG1fZmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0dXJlcyk7CiB9CiAK
LWJvb2wgVGVzdE9wdGlvbnM6OndlYlZpZXdJc0NvbXBhdGlibGVXaXRoT3B0aW9ucyhjb25zdCBU
ZXN0T3B0aW9ucyYgb3RoZXIpIGNvbnN0CitzdGQ6OnN0cmluZyBUZXN0T3B0aW9uczo6c3RyaW5n
VGVzdFJ1bm5lckZlYXR1cmVWYWx1ZShzdGQ6OnN0cmluZyBrZXksIHN0ZDo6c3RyaW5nIGRlZmF1
bHRWYWx1ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gb3RoZXIubGF5ZXJCYWNrZWRXZWJWaWV3ID09
IGxheWVyQmFja2VkV2ViVmlldwotICAgICAgICAmJiBvdGhlci5qc2NPcHRpb25zID09IGpzY09w
dGlvbnM7CisgICAgcmV0dXJuIGZlYXR1cmVWYWx1ZShrZXksIGRlZmF1bHRWYWx1ZSwgbV9mZWF0
dXJlcy5zdHJpbmdUZXN0UnVubmVyRmVhdHVyZXMpOwogfQogCiB9CkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL1Rlc3RPcHRpb25zLmgJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL1Rlc3RPcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDUzICszMSwzOSBAQAogCiBu
YW1lc3BhY2UgV1RSIHsKIAotc3RydWN0IFRlc3RPcHRpb25zIHsKLSAgICAvLyBGSVhNRTogUmVt
b3ZlIHRoZXNlIGFuZCByZXBsYWNlIHdpdGggYWNjZXNzIHRvIFRlc3RGZWF0dXJlcyBzZXQuCi0g
ICAgLy8gV2ViIFByZWZlcmVuY2VzCi0gICAgYm9vbCBhbGxvd0Nyb3NzT3JpZ2luU3VicmVzb3Vy
Y2VzVG9Bc2tGb3JDcmVkZW50aWFscyB7IGZhbHNlIH07Ci0gICAgYm9vbCBhbGxvd1RvcE5hdmln
YXRpb25Ub0RhdGFVUkxzIHsgdHJ1ZSB9OwotICAgIGJvb2wgZW5hYmxlQWNjZWxlcmF0ZWREcmF3
aW5nIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUF0dGFjaG1lbnRFbGVtZW50IHsgZmFsc2Ug
fTsKLSAgICBib29sIGVuYWJsZUJhY2tGb3J3YXJkQ2FjaGUgeyBmYWxzZSB9OwotICAgIGJvb2wg
ZW5hYmxlQ29sb3JGaWx0ZXIgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlSW5zcGVjdG9yQWRk
aXRpb25zIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUludGVyc2VjdGlvbk9ic2VydmVyIHsg
ZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUtleWdlbkVsZW1lbnQgeyBmYWxzZSB9OwotICAgIGJv
b2wgZW5hYmxlTWVudUl0ZW1FbGVtZW50IHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZU1vZGVy
bk1lZGlhQ29udHJvbHMgeyB0cnVlIH07Ci0KLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZXNlIGFu
ZCByZXBsYWNlIHdpdGggYWNjZXNzIHRvIFRlc3RGZWF0dXJlcyBzZXQuCi0gICAgLy8gSW50ZXJu
YWwgRmVhdHVyZXMKLSAgICBib29sIGVuYWJsZUNTU0xvZ2ljYWwgeyBmYWxzZSB9OwotICAgIGJv
b2wgZW5hYmxlTGluZUhlaWdodFVuaXRzIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZVNlbGVj
dGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXMgeyB0cnVlIH07Ci0gICAgYm9vbCBsYXlvdXRGb3Jt
YXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCB7IHRydWUgfTsKLQotICAgIC8vIEZJWE1F
OiBSZW1vdmUgdGhlc2UgYW5kIHJlcGxhY2Ugd2l0aCBhY2Nlc3MgdG8gVGVzdEZlYXR1cmVzIHNl
dC4KLSAgICAvLyBFeHBlcmltZW50YWwgRmVhdHVyZXMKLSAgICBib29sIGFkQ2xpY2tBdHRyaWJ1
dGlvbkVuYWJsZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQXNwZWN0UmF0aW9PZkltZ0Zy
b21XaWR0aEFuZEhlaWdodCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVBc3luY0NsaXBib2Fy
ZEFQSSB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmcg
eyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQ29udGFjdFBpY2tlckFQSSB7IGZhbHNlIH07Ci0g
ICAgYm9vbCBlbmFibGVDb3JlTWF0aE1MIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZVJlcXVl
c3RJZGxlQ2FsbGJhY2sgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlUmVzaXplT2JzZXJ2ZXIg
eyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlV2ViR1BVIHsgZmFsc2UgfTsKK2NsYXNzIFRlc3RP
cHRpb25zIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVGVzdEZlYXR1cmVzJiBkZWZhdWx0
cygpOworICAgIHN0YXRpYyBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFRl
c3RIZWFkZXJLZXlUeXBlPiYga2V5VHlwZU1hcHBpbmcoKTsKIAotICAgIC8vIFRlc3QgUnVubmVy
IFNwZWNpZmljIEZlYXR1cmVzCi0gICAgYm9vbCBkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgeyBm
YWxzZSB9OwotICAgIGJvb2wgZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCB7IGZhbHNl
IH07Ci0gICAgYm9vbCBlbmFibGVXZWJTUUwgeyB0cnVlIH07Ci0gICAgYm9vbCBsYXllckJhY2tl
ZFdlYlZpZXcgeyBmYWxzZSB9OwotICAgIGJvb2wgdXNlRXBoZW1lcmFsU2Vzc2lvbiB7IGZhbHNl
IH07Ci0gICAgc3RkOjpzdHJpbmcgYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXM7Ci0gICAg
c3RkOjpzdHJpbmcganNjT3B0aW9uczsKKyAgICBleHBsaWNpdCBUZXN0T3B0aW9ucyhUZXN0RmVh
dHVyZXMgZmVhdHVyZXMpCisgICAgICAgIDogbV9mZWF0dXJlcyhzdGQ6Om1vdmUoZmVhdHVyZXMp
KQorICAgIHsKKyAgICB9CiAKLSAgICBleHBsaWNpdCBUZXN0T3B0aW9ucyhUZXN0RmVhdHVyZXMp
OwogICAgIGJvb2wgd2ViVmlld0lzQ29tcGF0aWJsZVdpdGhPcHRpb25zKGNvbnN0IFRlc3RPcHRp
b25zJikgY29uc3Q7Ci0gICAgCi0gICAgc3RhdGljIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxz
dGQ6OnN0cmluZywgVGVzdEhlYWRlcktleVR5cGU+JiBrZXlUeXBlTWFwcGluZygpOworCisgICAg
Ly8gVGVzdCBSdW5uZXIgU3BlY2lmaWMgRmVhdHVyZXMKKyAgICBib29sIGR1bXBKU0NvbnNvbGVM
b2dJblN0ZEVycigpIGNvbnN0IHsgcmV0dXJuIGJvb2xUZXN0UnVubmVyRmVhdHVyZVZhbHVlKCJk
dW1wSlNDb25zb2xlTG9nSW5TdGRFcnIiLCBmYWxzZSk7IH0KKyAgICBib29sIGVuYWJsZURyYWdE
ZXN0aW5hdGlvbkFjdGlvbkxvYWQoKSBjb25zdCB7IHJldHVybiBib29sVGVzdFJ1bm5lckZlYXR1
cmVWYWx1ZSgiZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCIsIGZhbHNlKTsgfQorICAg
IGJvb2wgbGF5ZXJCYWNrZWRXZWJWaWV3KCkgY29uc3QgeyByZXR1cm4gYm9vbFRlc3RSdW5uZXJG
ZWF0dXJlVmFsdWUoImxheWVyQmFja2VkV2ViVmlldyIsIGZhbHNlKTsgfQorICAgIGJvb2wgdXNl
RXBoZW1lcmFsU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIGJvb2xUZXN0UnVubmVyRmVhdHVyZVZh
bHVlKCJ1c2VFcGhlbWVyYWxTZXNzaW9uIiwgZmFsc2UpOyB9CisgICAgc3RkOjpzdHJpbmcgYWRk
aXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMoKSBjb25zdCB7IHJldHVybiBzdHJpbmdUZXN0UnVu
bmVyRmVhdHVyZVZhbHVlKCJhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcyIsIHsgfSk7IH0K
KyAgICBzdGQ6OnN0cmluZyBqc2NPcHRpb25zKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nVGVzdFJ1
bm5lckZlYXR1cmVWYWx1ZSgianNjT3B0aW9ucyIsIHsgfSk7IH0KKworICAgIGNvbnN0IHN0ZDo6
dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgYm9vbD4mIGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVy
ZXMoKSBjb25zdCB7IHJldHVybiBtX2ZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXM7
IH0KKyAgICBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIGRvdWJsZT4mIGRv
dWJsZVdlYlByZWZlcmVuY2VGZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMuZG91
YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzOyB9CisgICAgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFw
PHN0ZDo6c3RyaW5nLCB1aW50MzJfdD4mIHVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJlcygpIGNv
bnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMudWludDMyV2ViUHJlZmVyZW5jZUZlYXR1cmVzOyB9Cisg
ICAgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4mIHN0
cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMuc3Ry
aW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzOyB9CisKKyAgICBzdGF0aWMgc3RkOjpzdHJpbmcgdG9X
ZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGNvbnN0IHN0ZDo6c3RyaW5nJik7CisKK3ByaXZhdGU6
CisgICAgYm9vbCBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZShzdGQ6OnN0cmluZyBrZXks
IGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdDsKKyAgICBib29sIGJvb2xUZXN0UnVubmVyRmVhdHVy
ZVZhbHVlKHN0ZDo6c3RyaW5nIGtleSwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0OworICAgIHN0
ZDo6c3RyaW5nIHN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlVmFsdWUoc3RkOjpzdHJpbmcga2V5LCBz
dGQ6OnN0cmluZyBkZWZhdWx0VmFsdWUpIGNvbnN0OworCisgICAgVGVzdEZlYXR1cmVzIG1fZmVh
dHVyZXM7CiB9OwogCiB9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJl
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsxMDksNyBAQAogCQk1
REI5QUM5RTBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjcwMC50dGYgaW4g
Q29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NUYw
OTc3MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyNzAwLnR0ZiAqLzsgfTsK
IAkJNURCOUFDOUYwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktpdFdlaWdodFdhdGNoZXI4MDAudHRm
IGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
NzVGMDk3ODBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjgwMC50dGYgKi87
IH07CiAJCTVEQjlBQ0EwMEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyOTAw
LnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzc1RjA5NzkwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXI5MDAudHRm
ICovOyB9OworCQk3QzRGMzA0MDI1M0I5NzBGMDAzMDU0NTggLyogVGVzdE9wdGlvbnNHZW5lcmF0
ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDNEYzMDNGMjUzQjgzNjkwMDMwNTQ1OCAvKiBUZXN0T3B0aW9u
c0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwICovOyB9OwogCQk3Q0ZGOUJCRjI1
MzNCQjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRkY5QkJFMjUzM0JCMjQwMDA4MDA5RiAvKiBUZXN0
RmVhdHVyZXMuY3BwICovOyB9OwogCQk3Q0ZGOUJDMjI1MzNCQzE2MDAwODAwOUYgLyogVGVzdENv
bW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0NGRjlCQzEyNTMzQkMxNjAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmNwcCAqLzsgfTsKIAkJODAw
NDVBRUUxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODAwNDVB
RUMxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1t
ICovOyB9OwpAQCAtMzMzLDggKzMzNCwxMiBAQAogCQk3QzQ0Njk3RjI1Mzc3QTAyMDAyNDI5MEEg
LyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJh
dGVkS2V5cy5oLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M0NDY5ODAyNTM3
N0EwMjAwMjQyOTBBIC8qIGNoZWNrLXhjZmlsZWxpc3RzLnNoICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQuc2g7IHBhdGggPSAiY2hl
Y2steGNmaWxlbGlzdHMuc2giOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzQ0Njk4
MTI1Mzc3QTAyMDAyNDI5MEEgLyogZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzLnNoICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQuc2g7
IHBhdGggPSAiZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzLnNoIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJN0M0NDY5ODUyNTM3N0U1MjAwMjQyOTBBIC8qIFRlc3RPcHRpb25zR2VuZXJh
dGVkS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaDsgcGF0
aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QzRGMzAzRjI1M0I4MzY5MDAzMDU0NTggLyogVGVzdE9wdGlv
bnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDOUUyNTBCMjUzQjc5NEEwMDQxMzAxOCAvKiBUZXN0T3B0
aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBUZXN0T3B0
aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0NCQkMzMjIxRERGQ0Y5QTAwNzg2QjlEIC8qIFRlc3RPcHRpb25z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RPcHRpb25zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDQ0JBNTFEMjUzQkI5RDMwMEJCMzJDMSAvKiBEZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2ZpbGVsaXN0OyBwYXRoID0gIkRlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Q0NC
QTUxRTI1M0JCOUQzMDBCQjMyQzEgLyogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Qg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lnhj
ZmlsZWxpc3Q7IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0ZGOUJCRDI1MzNCQjI0MDAwODAwOUYgLyogVGVz
dEZlYXR1cmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RGZWF0dXJlcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3Q0ZGOUJCRTI1MzNCQjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlc3RGZWF0dXJlcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDRkY5QkMwMjUzM0JDMTYwMDA4MDA5RiAvKiBUZXN0Q29tbWFuZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZXN0Q29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNTAxLDYgKzUwNiw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAogCQkJCTBGMThFNkYxMUQ2QjlDNjQwMDI3RTU0NyAvKiBEZXJpdmVkU291cmNlcy5tYWtlICov
LAorCQkJCTdDQ0JBNTFEMjUzQkI5RDMwMEJCMzJDMSAvKiBEZXJpdmVkU291cmNlcy1pbnB1dC54
Y2ZpbGVsaXN0ICovLAorCQkJCTdDQ0JBNTFFMjUzQkI5RDMwMEJCMzJDMSAvKiBEZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdCAqLywKIAkJCQk3QzQ0Njk4MjI1Mzc3QzM0MDAyNDI5MEEg
LyogRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTMxNDhBMDY1MUU2RjkwRjQwMEQzQjMxNiAvKiBU
ZXN0UnVubmVyU2hhcmVkICovLAogCQkJCTBGMThFNkU3MUQ2QjlCRjUwMDI3RTU0NyAvKiBVSVNj
cmlwdENvbnRleHQgKi8sCkBAIC03NzAsNiArNzc3LDcgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCiAJCQkJN0M0NDY5N0YyNTM3N0EwMjAwMjQyOTBBIC8qIFRlc3RPcHRp
b25zR2VuZXJhdGVkS2V5cy5oLmVyYiAqLywKKwkJCQk3QzlFMjUwQjI1M0I3OTRBMDA0MTMwMTgg
LyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIgKi8s
CiAJCQkpOwogCQkJcGF0aCA9IFByZWZlcmVuY2VzVGVtcGxhdGVzOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKQEAgLTc3OCw2ICs3ODYsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKIAkJCQk3QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRLZXlzLmggKi8sCisJCQkJN0M0RjMwM0YyNTNCODM2OTAwMzA1NDU4IC8qIFRlc3RP
cHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgKi8sCiAJCQkpOwogCQkJ
bmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQkJcGF0aCA9IERlcml2ZWRTb3VyY2VzL0R1bXBS
ZW5kZXJUcmVlOwpAQCAtMTI5MSw2ICsxMzAwLDcgQEAKIAkJCQk3Q0ZGOUJDMjI1MzNCQzE2MDAw
ODAwOUYgLyogVGVzdENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NGRjlCQkYyNTMz
QkIyNDAwMDgwMDlGIC8qIFRlc3RGZWF0dXJlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMzBB
MjFGODIwNTFEOEM0MDAwOEZGNDIgLyogVGVzdE9wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJN0M0RjMwNDAyNTNCOTcwRjAwMzA1NDU4IC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0
TGVnYWN5S2V5TWFwcGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzAxMzFEQTBDOTc3MjAx
MDA4NzMxN0QgLyogVGVzdFJ1bm5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEIyNDBD
OUIwMTRCMDAxMTQzNjkgLyogVGVzdFJ1bm5lck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0
RDQyMzYxMURENTA0ODIwMDY3ODI5MCAvKiBUZXh0SW5wdXRDb250cm9sbGVySU9TLm0gaW4gU291
cmNlcyAqLywKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1NjcmlwdHMvUHJlZmVyZW5jZXNU
ZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlv
bnNHZW5lcmF0ZWRLZXlzLmguZXJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVu
ZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVk
S2V5cy5oLmVyYgkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogI3ByYWdtYSBvbmNl
CiAKICNkZWZpbmUgR0VORVJBVEVEX1dFQl9QUkVGRVJFTkNFX0tFWV9UWVBFX01BUFBJTkdTIFwK
LTwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzIGRvIC0lPgorPCUtIGZvciBAcHJlZiBpbiBA
ZXhwb3NlZFByZWZlcmVuY2VzIGRvIC0lPgogICAgIHsgIjwlPSBAcHJlZi5uYW1lICU+IiwgVGVz
dEhlYWRlcktleVR5cGU6OjwlPSBAcHJlZi50eXBlVXBwZXIgJT5XZWJQcmVmZXJlbmNlIH0sIFwK
IDwlLSBlbmQgLSU+CiBcCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZl
cmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGlu
Zy5jcHAuZXJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1NjcmlwdHMvUHJl
ZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBw
aW5nLmNwcC5lcmIJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvU2NyaXB0
cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtl
eU1hcHBpbmcuY3BwLmVyYgkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICog
PCU9IEB3YXJuaW5nICU+CisgKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlRlc3RPcHRpb25zLmgiCisKK25hbWVzcGFjZSBXVFIgeworCitzdGQ6OnN0cmluZyBUZXN0
T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGNvbnN0IHN0ZDo6c3RyaW5nJiB3
ZWJQcmVmZXJlbmNlc0tleSkKK3sKKyAgICBzdGF0aWMgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6
c3RyaW5nLCBzdGQ6OnN0cmluZz4gbm9uU3RhbmRhcmRLZXlzID0geworPCUtIGZvciBAcHJlZiBp
biBAZXhwb3NlZFByZWZlcmVuY2VzLnNlbGVjdCB7IHxwfCBwLm9wdHNbIndlYktpdExlZ2FjeVBy
ZWZlcmVuY2VLZXkiXSB9IGRvIC0lPgorICAgICAgICB7ICI8JT0gQHByZWYubmFtZSAlPiIsICI8
JT0gQHByZWYucHJlZmVyZW5jZUtleSAlPiIgfSwgXAorPCUtIGVuZCAtJT4KKyAgICB9OworCisg
ICAgYXV0byBpdCA9IG5vblN0YW5kYXJkS2V5cy5maW5kKHdlYlByZWZlcmVuY2VzS2V5KTsKKyAg
ICBpZiAoaXQgIT0gbm9uU3RhbmRhcmRLZXlzLmVuZCgpKQorICAgICAgICByZXR1cm4gaXQtPnNl
Y29uZDsKKworICAgIHJldHVybiAiV2ViS2l0IiArIHdlYlByZWZlcmVuY2VzS2V5OworfQorCit9
CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCShyZXZp
c2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEyOSw3ICsxMjksMTAgQEAgZXh0ZXJuICJDIiB7CiAjaW1w
b3J0IDxtYWNoLW8vZ2V0c2VjdC5oPgogfQogCi11c2luZyBuYW1lc3BhY2Ugc3RkOworc3RhdGlj
IFJldGFpblB0cjxOU1N0cmluZz4gdG9OUyhjb25zdCBzdGQ6OnN0cmluZyYgc3RyaW5nKQorewor
ICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoVVRGOFN0cmluZzpz
dHJpbmcuY19zdHIoKV0pOworfQogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBAaW50ZXJm
YWNlIER1bXBSZW5kZXJUcmVlQXBwbGljYXRpb24gOiBOU0FwcGxpY2F0aW9uCkBAIC0xNTEsNyAr
MTU0LDcgQEAgLSAodm9pZCl2aWV3OihVSVdlYkRvY3VtZW50VmlldyAqKXZpZXcgZAogICAgIEFT
U0VSVChzY3JvbGxWaWV3ICYmIFtzY3JvbGxWaWV3IGlzS2luZE9mQ2xhc3M6W1VJV2ViU2Nyb2xs
VmlldyBjbGFzc11dKTsKICAgICBjb25zdCBDR1NpemUgc2Nyb2xsVmlld1NpemUgPSBbc2Nyb2xs
VmlldyBib3VuZHNdLnNpemU7CiAgICAgQ0dTaXplIGNvbnRlbnRTaXplID0gbmV3RnJhbWUuc2l6
ZTsKLSAgICBjb250ZW50U2l6ZS5oZWlnaHQgPSBDR1JvdW5kKG1heChDR1JlY3RHZXRNYXhZKG5l
d0ZyYW1lKSwgc2Nyb2xsVmlld1NpemUuaGVpZ2h0KSk7CisgICAgY29udGVudFNpemUuaGVpZ2h0
ID0gQ0dSb3VuZChzdGQ6Om1heChDR1JlY3RHZXRNYXhZKG5ld0ZyYW1lKSwgc2Nyb2xsVmlld1Np
emUuaGVpZ2h0KSk7CiAgICAgWyhVSVdlYlNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IHNldENvbnRl
bnRTaXplOmNvbnRlbnRTaXplXTsKIH0KIEBlbmQKQEAgLTE3Nyw3ICsxODAsNyBAQCAtIChXZWJD
b3JlOjpGcmFtZSopX21haW5Db3JlRnJhbWU7CiBAZW5kCiAjZW5kaWYKIAotc3RhdGljIHZvaWQg
cnVuVGVzdChjb25zdCBzdHJpbmcmIHRlc3RVUkwpOworc3RhdGljIHZvaWQgcnVuVGVzdChjb25z
dCBzdGQ6OnN0cmluZyYgdGVzdFVSTCk7CiAKIC8vIERlY2lkaW5nIHdoZW4gaXQncyBPSyB0byBk
dW1wIG91dCB0aGUgc3RhdGUgaXMgYSBiaXQgdHJpY2t5LiAgQWxsIHRoZXNlIG11c3QgYmUgdHJ1
ZToKIC8vIC0gVGhlcmUgaXMgbm8gbG9hZCBpbiBwcm9ncmVzcwpAQCAtMjQ4LDcgKzI1MSw3IEBA
IHZvaWQgc2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24KICAgICBwZXJzaXN0ZW50
VXNlclN0eWxlU2hlZXRMb2NhdGlvbiA9IHVybDsKIH0KIAotc3RhdGljIGJvb2wgc2hvdWxkSWdu
b3JlV2ViQ29yZU5vZGVMZWFrcyhjb25zdCBzdHJpbmcmIHVybFN0cmluZykKK3N0YXRpYyBib29s
IHNob3VsZElnbm9yZVdlYkNvcmVOb2RlTGVha3MoY29uc3Qgc3RkOjpzdHJpbmcmIHVybFN0cmlu
ZykKIHsKICAgICBzdGF0aWMgY2hhciogY29uc3QgaWdub3JlU2V0W10gPSB7CiAgICAgICAgIC8v
IEtlZXBpbmcgdGhpcyBpbmZyYXN0cnVjdHVyZSBhcm91bmQgaW4gY2FzZSB3ZSBldmVyIG5lZWQg
aXQgYWdhaW4uCkBAIC0yNTcsNyArMjYwLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkSWdub3JlV2Vi
Q29yZU5vZGVMZWFrcwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpZ25vcmVTZXRDb3VudDsg
aSsrKSB7CiAgICAgICAgIC8vIEZJWE1FOiBpZ25vcmUgY2FzZQotICAgICAgICBzdHJpbmcgY3Vy
SWdub3JlKGlnbm9yZVNldFtpXSk7CisgICAgICAgIHN0ZDo6c3RyaW5nIGN1cklnbm9yZShpZ25v
cmVTZXRbaV0pOwogICAgICAgICAvLyBNYXRjaCBhdCB0aGUgZW5kIG9mIHRoZSB1cmxTdHJpbmcu
CiAgICAgICAgIGlmICghdXJsU3RyaW5nLmNvbXBhcmUodXJsU3RyaW5nLmxlbmd0aCgpIC0gY3Vy
SWdub3JlLmxlbmd0aCgpLCBjdXJJZ25vcmUubGVuZ3RoKCksIGN1cklnbm9yZSkpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTYxNSw4ICs2MTgsOCBAQCAtIChOU1JlY3QpcmVjdEZvclBh
cnQ6KE5TU2Nyb2xsZXJQYXJ0KXBhCiAgICAgQk9PTCBpc0hvcml6b250YWwgPSBmcmFtZVJlY3Qu
c2l6ZS53aWR0aCA+IGZyYW1lUmVjdC5zaXplLmhlaWdodDsKICAgICBDR0Zsb2F0IHRyYWNrTGVu
Z3RoID0gaXNIb3Jpem9udGFsID8gYm91bmRzLnNpemUud2lkdGggOiBib3VuZHMuc2l6ZS5oZWln
aHQ7CiAgICAgQ0dGbG9hdCBtaW5Lbm9iU2l6ZSA9IGlzSG9yaXpvbnRhbCA/IGJvdW5kcy5zaXpl
LmhlaWdodCA6IGJvdW5kcy5zaXplLndpZHRoOwotICAgIENHRmxvYXQga25vYkxlbmd0aCA9IG1h
eChtaW5Lbm9iU2l6ZSwgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4ocm91bmQodHJhY2tMZW5ndGggKiBb
c2VsZiBrbm9iUHJvcG9ydGlvbl0pKSk7Ci0gICAgQ0dGbG9hdCBrbm9iUG9zaXRpb24gPSBzdGF0
aWNfY2FzdDxDR0Zsb2F0Pigocm91bmQoW3NlbGYgZG91YmxlVmFsdWVdICogKHRyYWNrTGVuZ3Ro
IC0ga25vYkxlbmd0aCkpKSk7CisgICAgQ0dGbG9hdCBrbm9iTGVuZ3RoID0gc3RkOjptYXgobWlu
S25vYlNpemUsIHN0YXRpY19jYXN0PENHRmxvYXQ+KHN0ZDo6cm91bmQodHJhY2tMZW5ndGggKiBb
c2VsZiBrbm9iUHJvcG9ydGlvbl0pKSk7CisgICAgQ0dGbG9hdCBrbm9iUG9zaXRpb24gPSBzdGF0
aWNfY2FzdDxDR0Zsb2F0Pigoc3RkOjpyb3VuZChbc2VsZiBkb3VibGVWYWx1ZV0gKiAodHJhY2tM
ZW5ndGggLSBrbm9iTGVuZ3RoKSkpKTsKIAogICAgIGlmIChpc0hvcml6b250YWwpCiAgICAgICAg
IHJldHVybiBOU01ha2VSZWN0KGJvdW5kcy5vcmlnaW4ueCArIGtub2JQb3NpdGlvbiwgYm91bmRz
Lm9yaWdpbi55LCBrbm9iTGVuZ3RoLCBib3VuZHMuc2l6ZS5oZWlnaHQpOwpAQCAtNjcyLDYgKzY3
NSwxMCBAQCBXZWJWaWV3ICpjcmVhdGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93CiAgICAgW3dl
YlZpZXcgc2V0R3JvdXBOYW1lOkAib3JnLndlYmtpdC5EdW1wUmVuZGVyVHJlZSJdOwogI2VuZGlm
CiAKKyAgICBXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbW1dlYlByZWZlcmVuY2VzIGFs
bG9jXSBpbml0XTsKKyAgICBbcHJlZmVyZW5jZXMgc2V0QXV0b3NhdmVzOk5PXTsKKyAgICBbd2Vi
VmlldyBzZXRQcmVmZXJlbmNlczpwcmVmZXJlbmNlc107CisKICAgICBbd2ViVmlldyBzZXRVSURl
bGVnYXRlOnVpRGVsZWdhdGVdOwogICAgIFt3ZWJWaWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOmZy
YW1lTG9hZERlbGVnYXRlXTsKICAgICBbd2ViVmlldyBzZXRFZGl0aW5nRGVsZWdhdGU6ZWRpdGlu
Z0RlbGVnYXRlXTsKQEAgLTY4NSw4ICs2OTIsNiBAQCBXZWJWaWV3ICpjcmVhdGVXZWJWaWV3QW5k
T2Zmc2NyZWVuV2luZG93CiAgICAgW1dlYlZpZXcgcmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsOkAi
ZmVlZHMiXTsKICAgICBbV2ViVmlldyByZWdpc3RlclVSTFNjaGVtZUFzTG9jYWw6QCJmZWVkc2Vh
cmNoIl07CiAKLSAgICBbW3dlYlZpZXcgcHJlZmVyZW5jZXNdIF9zZXRNZWRpYVJlY29yZGVyRW5h
YmxlZDpZRVNdOwotCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFt3ZWJWaWV3IHNldFdpbmRvd09j
Y2x1c2lvbkRldGVjdGlvbkVuYWJsZWQ6Tk9dOwogICAgIFtXZWJWaWV3IF9zZXRGb250QWxsb3dM
aXN0OmZvbnRBbGxvd0xpc3QoKV07CkBAIC04MDgsMzIgKzgxMywzMSBAQCBzdGF0aWMgTlNTdHJp
bmcgKmxpYnJhcnlQYXRoRm9yRHVtcFJlbmRlCiAgICAgICAgIHJldHVybiBbQCJ+L0xpYnJhcnkv
QXBwbGljYXRpb24gU3VwcG9ydC9EdW1wUmVuZGVyVHJlZSIgc3RyaW5nQnlFeHBhbmRpbmdUaWxk
ZUluUGF0aF07CiB9CiAKLXN0YXRpYyB2b2lkIGVuYWJsZUV4cGVyaW1lbnRhbEZlYXR1cmVzKFdl
YlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcykKK3N0YXRpYyB2b2lkIGVuYWJsZUV4cGVyaW1lbnRh
bEZlYXR1cmVzKFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcykKIHsKICAgICAvLyBGSVhNRTog
U3ByaW5nVGltaW5nRnVuY3Rpb24KKyAgICAvLyBGSVhNRTogSW5wdXRFdmVudHMKICAgICBbcHJl
ZmVyZW5jZXMgc2V0R2FtZXBhZHNFbmFibGVkOllFU107CiAgICAgW3ByZWZlcmVuY2VzIHNldEhp
Z2hsaWdodEFQSUVuYWJsZWQ6WUVTXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0TGlua1ByZWxvYWRF
bmFibGVkOllFU107CiAgICAgW3ByZWZlcmVuY2VzIHNldE1lZGlhUHJlbG9hZGluZ0VuYWJsZWQ6
WUVTXTsKLSAgICAvLyBGSVhNRTogSW5wdXRFdmVudHMKICAgICBbcHJlZmVyZW5jZXMgc2V0RmV0
Y2hBUElLZWVwQWxpdmVFbmFibGVkOllFU107CiAgICAgW3ByZWZlcmVuY2VzIHNldFdlYkFuaW1h
dGlvbnNDb21wb3NpdGVPcGVyYXRpb25zRW5hYmxlZDpZRVNdOwogICAgIFtwcmVmZXJlbmNlcyBz
ZXRXZWJBbmltYXRpb25zTXV0YWJsZVRpbWVsaW5lc0VuYWJsZWQ6WUVTXTsKICAgICBbcHJlZmVy
ZW5jZXMgc2V0Q1NTQ3VzdG9tUHJvcGVydGllc0FuZFZhbHVlc0VuYWJsZWQ6WUVTXTsKICAgICBb
cHJlZmVyZW5jZXMgc2V0V2ViR0wyRW5hYmxlZDpZRVNdOwotICAgIC8vIEZJWE1FOiBBc3luY0Zy
YW1lU2Nyb2xsaW5nRW5hYmxlZAogICAgIFtwcmVmZXJlbmNlcyBzZXRDYWNoZUFQSUVuYWJsZWQ6
Tk9dOwogICAgIFtwcmVmZXJlbmNlcyBzZXRSZWFkYWJsZUJ5dGVTdHJlYW1BUElFbmFibGVkOllF
U107CiAgICAgW3ByZWZlcmVuY2VzIHNldFdyaXRhYmxlU3RyZWFtQVBJRW5hYmxlZDpZRVNdOwog
ICAgIFtwcmVmZXJlbmNlcyBzZXRUcmFuc2Zvcm1TdHJlYW1BUElFbmFibGVkOllFU107Ci0gICAg
cHJlZmVyZW5jZXMuZW5jcnlwdGVkTWVkaWFBUElFbmFibGVkID0gWUVTOworICAgIFtwcmVmZXJl
bmNlcyBzZXRFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQ6WUVTXTsKICAgICBbcHJlZmVyZW5jZXMg
c2V0QWNjZXNzaWJpbGl0eU9iamVjdE1vZGVsRW5hYmxlZDpZRVNdOwogICAgIFtwcmVmZXJlbmNl
cyBzZXRBcmlhUmVmbGVjdGlvbkVuYWJsZWQ6WUVTXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0Vmlz
dWFsVmlld3BvcnRBUElFbmFibGVkOllFU107CiAgICAgW3ByZWZlcmVuY2VzIHNldENvbG9yRmls
dGVyRW5hYmxlZDpZRVNdOwogICAgIFtwcmVmZXJlbmNlcyBzZXRTZXJ2ZXJUaW1pbmdFbmFibGVk
OllFU107CiAgICAgW3ByZWZlcmVuY2VzIHNldEludGVyc2VjdGlvbk9ic2VydmVyRW5hYmxlZDpZ
RVNdOwotICAgIHByZWZlcmVuY2VzLnNvdXJjZUJ1ZmZlckNoYW5nZVR5cGVFbmFibGVkID0gWUVT
OworICAgIFtwcmVmZXJlbmNlcyBzZXRTb3VyY2VCdWZmZXJDaGFuZ2VUeXBlRW5hYmxlZDpZRVNd
OwogICAgIFtwcmVmZXJlbmNlcyBzZXRDU1NPTVZpZXdTY3JvbGxpbmdBUElFbmFibGVkOllFU107
CiAgICAgW3ByZWZlcmVuY2VzIHNldE1lZGlhUmVjb3JkZXJFbmFibGVkOllFU107CiAgICAgW3By
ZWZlcmVuY2VzIHNldFJlZmVycmVyUG9saWN5QXR0cmlidXRlRW5hYmxlZDpZRVNdOwpAQCAtODQ0
LDkgKzg0OCw4IEBAIHN0YXRpYyB2b2lkIGVuYWJsZUV4cGVyaW1lbnRhbEZlYXR1cmVzKFcKIH0K
IAogLy8gQ2FsbGVkIGJlZm9yZSBlYWNoIHRlc3QuCi1zdGF0aWMgdm9pZCByZXNldFdlYlByZWZl
cmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKCkKK3N0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5j
ZXNUb0NvbnNpc3RlbnRWYWx1ZXMoV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzKQogewotICAg
IFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9IFtXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFBy
ZWZlcmVuY2VzXTsKICAgICBlbmFibGVFeHBlcmltZW50YWxGZWF0dXJlcyhwcmVmZXJlbmNlcyk7
CiAKICAgICBbcHJlZmVyZW5jZXMgc2V0TmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVp
cms6IE5PXTsKQEAgLTg2NiwyMSArODY5LDExIEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVy
ZW5jZXNUb0NvbnNpc3QKICAgICBbcHJlZmVyZW5jZXMgc2V0SmF2YUVuYWJsZWQ6Tk9dOwogICAg
IFtwcmVmZXJlbmNlcyBzZXRKYXZhU2NyaXB0RW5hYmxlZDpZRVNdOwogICAgIFtwcmVmZXJlbmNl
cyBzZXRFZGl0YWJsZUxpbmtCZWhhdmlvcjpXZWJLaXRFZGl0YWJsZUxpbmtPbmx5TGl2ZVdpdGhT
aGlmdEtleV07Ci0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgW3ByZWZlcmVuY2VzIHNl
dFRhYnNUb0xpbmtzOk5PXTsKLSNlbmRpZgogICAgIFtwcmVmZXJlbmNlcyBzZXRET01QYXN0ZUFs
bG93ZWQ6WUVTXTsKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBbcHJlZmVyZW5jZXMg
c2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kczpZRVNdOwotI2VuZGlmCiAgICAgW3ByZWZlcmVuY2Vz
IHNldENhY2hlTW9kZWw6V2ViQ2FjaGVNb2RlbERvY3VtZW50QnJvd3Nlcl07CiAgICAgW3ByZWZl
cmVuY2VzIHNldFhTU0F1ZGl0b3JFbmFibGVkOk5PXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0RXhw
ZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJsZWQ6Tk9dOwogICAgIFtwcmVmZXJlbmNlcyBzZXRQ
bHVnSW5zRW5hYmxlZDpZRVNdOwotI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFtwcmVm
ZXJlbmNlcyBzZXRUZXh0QXJlYXNBcmVSZXNpemFibGU6WUVTXTsKLSNlbmRpZgotCiAgICAgW3By
ZWZlcmVuY2VzIHNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQ6Tk9dOwogICAgIFtwcmVmZXJlbmNl
cyBzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZDpZRVNdOwogICAgIFtwcmVmZXJlbmNlcyBz
ZXRTaHJpbmtzU3RhbmRhbG9uZUltYWdlc1RvRml0OllFU107CkBAIC04OTUsMTMgKzg4OCw3IEBA
IHN0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3QKICAgICBbcHJlZmVyZW5j
ZXMgc2V0QXN5bmNGcmFtZVNjcm9sbGluZ0VuYWJsZWQ6Tk9dOwogICAgIFtwcmVmZXJlbmNlcyBz
ZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQ6Tk9dOwogICAgIFtwcmVmZXJlbmNlcyBzZXRNZXRh
UmVmcmVzaEVuYWJsZWQ6WUVTXTsKLQotICAgIGlmIChwZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRM
b2NhdGlvbikgewotICAgICAgICBbcHJlZmVyZW5jZXMgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlv
bjpbTlNVUkwgVVJMV2l0aFN0cmluZzooX19icmlkZ2UgTlNTdHJpbmcgKilwZXJzaXN0ZW50VXNl
clN0eWxlU2hlZXRMb2NhdGlvbi5nZXQoKV1dOwotICAgICAgICBbcHJlZmVyZW5jZXMgc2V0VXNl
clN0eWxlU2hlZXRFbmFibGVkOllFU107Ci0gICAgfSBlbHNlCi0gICAgICAgIFtwcmVmZXJlbmNl
cyBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQ6Tk9dOwotCisgICAgW3ByZWZlcmVuY2VzIHNldElu
bGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRlOk5PXTsKICAgICBb
cHJlZmVyZW5jZXMgc2V0TWVkaWFQbGF5YmFja0FsbG93c0lubGluZTpZRVNdOwogICAgIFtwcmVm
ZXJlbmNlcyBzZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZTpOT107CiAgICAgW3By
ZWZlcmVuY2VzIHNldFZpZGVvUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlOk5PXTsKQEAgLTkw
OSw5MiArODk2LDczIEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3QK
ICAgICBbcHJlZmVyZW5jZXMgc2V0TWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5OllFU107CiAg
ICAgW3ByZWZlcmVuY2VzIHNldEludmlzaWJsZUF1dG9wbGF5Tm90UGVybWl0dGVkOk5PXTsKICAg
ICBbcHJlZmVyZW5jZXMgc2V0U3VicGl4ZWxBbnRpYWxpYXNlZExheWVyVGV4dEVuYWJsZWQ6Tk9d
OwotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAvLyBFbmFibGUgdGhlIHRyYWNrZXIg
YmVmb3JlIGNyZWF0aW5nIHRoZSBmaXJzdCBXZWJWaWV3IHdpbGwKLSAgICAvLyBjYXVzZSBpbml0
aWFsaXphdGlvbiB0byB1c2UgdGhlIGNvcnJlY3QgZGF0YWJhc2UgcGF0aHMuCi0gICAgW3ByZWZl
cmVuY2VzIHNldFN0b3JhZ2VUcmFja2VyRW5hYmxlZDpZRVNdOwotI2VuZGlmCi0KICAgICBbcHJl
ZmVyZW5jZXMgX3NldFRleHRBdXRvc2l6aW5nRW5hYmxlZDpOT107Ci0KLSAgICAvLyBUaGUgYmFj
ay9mb3J3YXJkIGNhY2hlIGlzIGNhdXNpbmcgcHJvYmxlbXMgZHVlIHRvIGxheW91dHMgZHVyaW5n
IHRyYW5zaXRpb24gZnJvbSBvbmUgcGFnZSB0byBhbm90aGVyLgotICAgIC8vIFNvLCB0dXJuIGl0
IG9mZiBmb3Igbm93LCBidXQgd2UgbWlnaHQgd2FudCB0byB0dXJuIGl0IGJhY2sgb24gc29tZSBk
YXkuCiAgICAgW3ByZWZlcmVuY2VzIHNldFVzZXNQYWdlQ2FjaGU6Tk9dOwogICAgIFtwcmVmZXJl
bmNlcyBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZDpZRVNdOwotI2lmIFVTRShDQSkK
LSAgICBbcHJlZmVyZW5jZXMgc2V0Q2FudmFzVXNlc0FjY2VsZXJhdGVkRHJhd2luZzpZRVNdOwot
ICAgIFtwcmVmZXJlbmNlcyBzZXRBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkOnVzZUFjY2VsZXJh
dGVkRHJhd2luZ107Ci0jZW5kaWYKICAgICBbcHJlZmVyZW5jZXMgc2V0VXNlUHJlSFRNTDVQYXJz
ZXJRdWlya3M6Tk9dOwogICAgIFtwcmVmZXJlbmNlcyBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNr
aW5nRW5hYmxlZDpOT107Ci0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgQVNTRVJUKFtw
cmVmZXJlbmNlcyBtb2NrU2Nyb2xsYmFyc0VuYWJsZWRdKTsKLSNlbmRpZgotCisgICAgW3ByZWZl
cmVuY2VzIHNldE1vY2tTY3JvbGxiYXJzRW5hYmxlZDpZRVNdOwogICAgIFtwcmVmZXJlbmNlcyBz
ZXRXZWJBdWRpb0VuYWJsZWQ6WUVTXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0TW9kZXJuVW5wcmVm
aXhlZFdlYkF1ZGlvRW5hYmxlZDpZRVNdOwogICAgIFtwcmVmZXJlbmNlcyBzZXRNZWRpYVNvdXJj
ZUVuYWJsZWQ6WUVTXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0U291cmNlQnVmZmVyQ2hhbmdlVHlw
ZUVuYWJsZWQ6WUVTXTsKLQogICAgIFtwcmVmZXJlbmNlcyBzZXREYXRhVHJhbnNmZXJJdGVtc0Vu
YWJsZWQ6WUVTXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0Q3VzdG9tUGFzdGVib2FyZERhdGFFbmFi
bGVkOllFU107CiAgICAgW3ByZWZlcmVuY2VzIHNldERpYWxvZ0VsZW1lbnRFbmFibGVkOllFU107
Ci0KICAgICBbcHJlZmVyZW5jZXMgc2V0V2ViR0wyRW5hYmxlZDpZRVNdOwotCiAgICAgW3ByZWZl
cmVuY2VzIHNldERvd25sb2FkQXR0cmlidXRlRW5hYmxlZDpZRVNdOwogICAgIFtwcmVmZXJlbmNl
cyBzZXREaXJlY3RvcnlVcGxvYWRFbmFibGVkOllFU107Ci0KICAgICBbcHJlZmVyZW5jZXMgc2V0
SGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ0VuYWJsZWQ6Tk9dOwogICAgIFtwcmVmZXJlbmNl
cyBzZXRIaWRkZW5QYWdlQ1NTQW5pbWF0aW9uU3VzcGVuc2lvbkVuYWJsZWQ6Tk9dOwogICAgIFtw
cmVmZXJlbmNlcyBzZXRSZW1vdGVQbGF5YmFja0VuYWJsZWQ6WUVTXTsKLQogICAgIFtwcmVmZXJl
bmNlcyBzZXRNZWRpYURldmljZXNFbmFibGVkOllFU107Ci0KICAgICBbcHJlZmVyZW5jZXMgc2V0
TGFyZ2VJbWFnZUFzeW5jRGVjb2RpbmdFbmFibGVkOk5PXTsKLQogICAgIFtwcmVmZXJlbmNlcyBz
ZXRNb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZDpZRVNdOworICAgIFtwcmVmZXJlbmNlcyBzZXRN
ZWRpYUNhcGFiaWxpdGllc0VuYWJsZWQ6WUVTXTsKKyAgICBbcHJlZmVyZW5jZXMgc2V0U2VsZWN0
aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllc0VuYWJsZWQ6WUVTXTsKKyAgICBbcHJlZmVyZW5jZXMg
c2V0RnVsbFNjcmVlbkVuYWJsZWQ6WUVTXTsKKyAgICBbcHJlZmVyZW5jZXMgc2V0V2ViU1FMRW5h
YmxlZDpZRVNdOwogCi0gICAgW3ByZWZlcmVuY2VzIHNldENhY2hlQVBJRW5hYmxlZDpOT107Ci0g
ICAgcHJlZmVyZW5jZXMubWVkaWFDYXBhYmlsaXRpZXNFbmFibGVkID0gWUVTOworICAgIGlmIChw
ZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbikgeworICAgICAgICBbcHJlZmVyZW5jZXMg
c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbjpbTlNVUkwgVVJMV2l0aFN0cmluZzooX19icmlkZ2Ug
TlNTdHJpbmcgKilwZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbi5nZXQoKV1dOworICAg
ICAgICBbcHJlZmVyZW5jZXMgc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkOllFU107CisgICAgfSBl
bHNlCisgICAgICAgIFtwcmVmZXJlbmNlcyBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQ6Tk9dOwog
Ci0gICAgcHJlZmVyZW5jZXMuc2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllc0VuYWJsZWQg
PSBZRVM7CisjaWYgVVNFKENBKQorICAgIFtwcmVmZXJlbmNlcyBzZXRDYW52YXNVc2VzQWNjZWxl
cmF0ZWREcmF3aW5nOllFU107CisgICAgW3ByZWZlcmVuY2VzIHNldEFjY2VsZXJhdGVkRHJhd2lu
Z0VuYWJsZWQ6dXNlQWNjZWxlcmF0ZWREcmF3aW5nXTsKKyNlbmRpZgogCi0gICAgW3ByZWZlcmVu
Y2VzIHNldFdlYlNRTEVuYWJsZWQ6WUVTXTsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAg
IC8vIEVuYWJsZSB0aGUgdHJhY2tlciBiZWZvcmUgY3JlYXRpbmcgdGhlIGZpcnN0IFdlYlZpZXcg
d2lsbAorICAgIC8vIGNhdXNlIGluaXRpYWxpemF0aW9uIHRvIHVzZSB0aGUgY29ycmVjdCBkYXRh
YmFzZSBwYXRocy4KKyAgICBbcHJlZmVyZW5jZXMgc2V0U3RvcmFnZVRyYWNrZXJFbmFibGVkOllF
U107CisjZWxzZQorICAgIFtwcmVmZXJlbmNlcyBzZXRUYWJzVG9MaW5rczpOT107CisgICAgW3By
ZWZlcmVuY2VzIHNldFNob3VsZFByaW50QmFja2dyb3VuZHM6WUVTXTsKKyAgICBbcHJlZmVyZW5j
ZXMgc2V0VGV4dEFyZWFzQXJlUmVzaXphYmxlOllFU107CisjZW5kaWYKIAogICAgIFtXZWJQcmVm
ZXJlbmNlcyBfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbl07CiAgICAgW1dlYlByZWZlcmVuY2Vz
IF9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6TlNIVFRQ
Q29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW5dOwogfQogCi1zdGF0
aWMgdm9pZCBzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKGNvbnN0IFdUUjo6VGVzdE9w
dGlvbnMmIG9wdGlvbnMpCitzdGF0aWMgdm9pZCBzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRp
b25zKFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcywgY29uc3QgV1RSOjpUZXN0T3B0aW9ucyYg
b3B0aW9ucykKIHsKLSAgICBXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSBbV2ViUHJlZmVy
ZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc107CisgICAgcHJlZmVyZW5jZXMucHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCA9IG9wdGlvbnMudXNlRXBoZW1lcmFsU2Vzc2lvbigpOwogCi0gICAgcHJlZmVy
ZW5jZXMuYXR0YWNobWVudEVsZW1lbnRFbmFibGVkID0gb3B0aW9ucy5lbmFibGVBdHRhY2htZW50
RWxlbWVudDsKLSAgICBwcmVmZXJlbmNlcy5hY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkID0gb3B0
aW9ucy5lbmFibGVBY2NlbGVyYXRlZERyYXdpbmc7Ci0gICAgcHJlZmVyZW5jZXMubWVudUl0ZW1F
bGVtZW50RW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlTWVudUl0ZW1FbGVtZW50OwotICAgIHByZWZl
cmVuY2VzLmtleWdlbkVsZW1lbnRFbmFibGVkID0gb3B0aW9ucy5lbmFibGVLZXlnZW5FbGVtZW50
OwotICAgIHByZWZlcmVuY2VzLm1vZGVybk1lZGlhQ29udHJvbHNFbmFibGVkID0gb3B0aW9ucy5l
bmFibGVNb2Rlcm5NZWRpYUNvbnRyb2xzOwotICAgIHByZWZlcmVuY2VzLmluc3BlY3RvckFkZGl0
aW9uc0VuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUluc3BlY3RvckFkZGl0aW9uczsKLSAgICBwcmVm
ZXJlbmNlcy5hbGxvd0Nyb3NzT3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyA9
IG9wdGlvbnMuYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHM7
Ci0gICAgcHJlZmVyZW5jZXMuY29sb3JGaWx0ZXJFbmFibGVkID0gb3B0aW9ucy5lbmFibGVDb2xv
ckZpbHRlcjsKLSAgICBwcmVmZXJlbmNlcy5zZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVz
RW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlU2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllczsK
LSAgICBwcmVmZXJlbmNlcy53ZWJHUFVFbmFibGVkID0gb3B0aW9ucy5lbmFibGVXZWJHUFU7Ci0g
ICAgcHJlZmVyZW5jZXMuQ1NTTG9naWNhbEVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUNTU0xvZ2lj
YWw7Ci0gICAgcHJlZmVyZW5jZXMubGluZUhlaWdodFVuaXRzRW5hYmxlZCA9IG9wdGlvbnMuZW5h
YmxlTGluZUhlaWdodFVuaXRzOwotICAgIHByZWZlcmVuY2VzLmFkQ2xpY2tBdHRyaWJ1dGlvbkVu
YWJsZWQgPSBvcHRpb25zLmFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQ7Ci0gICAgcHJlZmVyZW5j
ZXMucmVzaXplT2JzZXJ2ZXJFbmFibGVkID0gb3B0aW9ucy5lbmFibGVSZXNpemVPYnNlcnZlcjsK
LSAgICBwcmVmZXJlbmNlcy5DU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkID0gb3B0aW9u
cy5lbmFibGVDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmc7Ci0gICAgcHJlZmVyZW5jZXMuY29yZU1h
dGhNTEVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUNvcmVNYXRoTUw7Ci0gICAgcHJlZmVyZW5jZXMu
cmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWQgPSBvcHRpb25zLmVuYWJsZVJlcXVlc3RJZGxlQ2Fs
bGJhY2s7Ci0gICAgcHJlZmVyZW5jZXMuYXN5bmNDbGlwYm9hcmRBUElFbmFibGVkID0gb3B0aW9u
cy5lbmFibGVBc3luY0NsaXBib2FyZEFQSTsKLSAgICBwcmVmZXJlbmNlcy5wcml2YXRlQnJvd3Np
bmdFbmFibGVkID0gb3B0aW9ucy51c2VFcGhlbWVyYWxTZXNzaW9uOwotICAgIHByZWZlcmVuY2Vz
LnVzZXNQYWdlQ2FjaGUgPSBvcHRpb25zLmVuYWJsZUJhY2tGb3J3YXJkQ2FjaGU7Ci0gICAgcHJl
ZmVyZW5jZXMubGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQgPSBvcHRp
b25zLmxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkOwotICAgIHByZWZl
cmVuY2VzLmFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkID0gb3B0aW9u
cy5lbmFibGVBc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0OwotICAgIHByZWZlcmVu
Y2VzLmFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMgPSBvcHRpb25zLmFsbG93VG9wTmF2aWdh
dGlvblRvRGF0YVVSTHM7Ci0gICAgcHJlZmVyZW5jZXMuY29udGFjdFBpY2tlckFQSUVuYWJsZWQg
PSBvcHRpb25zLmVuYWJsZUNvbnRhY3RQaWNrZXJBUEk7CisgICAgZm9yIChjb25zdCBhdXRvJiBb
a2V5LCB2YWx1ZV0gOiBvcHRpb25zLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAg
ICAgW3ByZWZlcmVuY2VzIF9zZXRCb29sUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dmFs
dWUgZm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNl
S2V5KGtleSkpLmdldCgpXTsKKworICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDog
b3B0aW9ucy5kb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAgICAgW3ByZWZlcmVu
Y2VzIF9zZXREb3VibGVQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZSBmb3JLZXk6
dG9OUyhXVFI6OlRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVuY2VLZXkoa2V5KSku
Z2V0KCldOworCisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLnVp
bnQzMldlYlByZWZlcmVuY2VGZWF0dXJlcygpKQorICAgICAgICBbcHJlZmVyZW5jZXMgX3NldFVJ
bnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnZhbHVlIGZvcktleTp0b05TKFdUUjo6
VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShrZXkpKS5nZXQoKV07CisK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuc3RyaW5nV2ViUHJl
ZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0U3RyaW5nUHJlZmVy
ZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dG9OUyh2YWx1ZSkuZ2V0KCkgZm9yS2V5OnRvTlMoV1RS
OjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGtleSkpLmdldCgpXTsK
IH0KIAogLy8gQ2FsbGVkIG9uY2Ugb24gRHVtcFJlbmRlclRyZWUgc3RhcnR1cC4KQEAgLTEwMTgs
OSArOTg2LDYgQEAgc3RhdGljIHZvaWQgc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZQogICAg
ICAgICBAIkFwcGxlT3RoZXJIaWdobGlnaHRDb2xvciI6QCIwLjUwMDAwMCAwLjUwMDAwMCAwLjUw
MDAwMCIsCiAgICAgICAgIEAiQXBwbGVMYW5ndWFnZXMiOiBAWyBAImVuIiBdLAogICAgICAgICBX
ZWJLaXRFbmFibGVGdWxsRG9jdW1lbnRUZWFyZG93blByZWZlcmVuY2VLZXk6IEBZRVMsCi0gICAg
ICAgIFdlYktpdEZ1bGxTY3JlZW5FbmFibGVkUHJlZmVyZW5jZUtleTogQFlFUywKLSAgICAgICAg
V2ViS2l0QWxsb3dzSW5saW5lTWVkaWFQbGF5YmFja1ByZWZlcmVuY2VLZXk6IEBZRVMsCi0gICAg
ICAgIFdlYktpdElubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRl
S2V5OiBATk8sCiAgICAgICAgIEAiVXNlV2ViS2l0V2ViSW5zcGVjdG9yIjogQFlFUywKICNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgQCJOU1ByZWZlcnJlZFNwZWxsU2VydmVyTGFu
Z3VhZ2UiOiBAImVuX1VTIiwKQEAgLTE0MzEsNyArMTM5Niw3IEBAIHN0YXRpYyBOU0ludGVnZXIg
Y29tcGFyZUhpc3RvcnlJdGVtcyhpZCAKIAogc3RhdGljIE5TRGF0YSAqZHVtcEF1ZGlvKCkKIHsK
LSAgICBjb25zdCB2ZWN0b3I8Y2hhcj4mIGRhdGFWZWN0b3IgPSBnVGVzdFJ1bm5lci0+YXVkaW9S
ZXN1bHQoKTsKKyAgICBjb25zdCBhdXRvJiBkYXRhVmVjdG9yID0gZ1Rlc3RSdW5uZXItPmF1ZGlv
UmVzdWx0KCk7CiAKICAgICBOU0RhdGEgKmRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6ZGF0
YVZlY3Rvci5kYXRhKCkgbGVuZ3RoOmRhdGFWZWN0b3Iuc2l6ZSgpXTsKICAgICByZXR1cm4gZGF0
YTsKQEAgLTE2MjcsNyArMTU5Miw3IEBAIHN0YXRpYyB2b2lkIHNpemVXZWJWaWV3Rm9yQ3VycmVu
dFRlc3QoKQogICAgIFt1aURlbGVnYXRlIHJlc2V0V2luZG93T3JpZ2luXTsKIAogICAgIC8vIFcz
QyBTVkcgdGVzdHMgZXhwZWN0IHRvIGJlIDQ4MHgzNjAKLSAgICBib29sIGlzU1ZHVzNDVGVzdCA9
IChnVGVzdFJ1bm5lci0+dGVzdFVSTCgpLmZpbmQoInN2Zy9XM0MtU1ZHLTEuMSIpICE9IHN0cmlu
Zzo6bnBvcyk7CisgICAgYm9vbCBpc1NWR1czQ1Rlc3QgPSAoZ1Rlc3RSdW5uZXItPnRlc3RVUkwo
KS5maW5kKCJzdmcvVzNDLVNWRy0xLjEiKSAhPSBzdGQ6OnN0cmluZzo6bnBvcyk7CiAgICAgTlNT
aXplIGZyYW1lU2l6ZSA9IGlzU1ZHVzNDVGVzdCA/IE5TTWFrZVNpemUoVGVzdFJ1bm5lcjo6dzNj
U1ZHVmlld1dpZHRoLCBUZXN0UnVubmVyOjp3M2NTVkdWaWV3SGVpZ2h0KSA6IE5TTWFrZVNpemUo
VGVzdFJ1bm5lcjo6dmlld1dpZHRoLCBUZXN0UnVubmVyOjp2aWV3SGVpZ2h0KTsKICAgICBbW21h
aW5GcmFtZSB3ZWJWaWV3XSBzZXRGcmFtZVNpemU6ZnJhbWVTaXplXTsKICAgICBbW21haW5GcmFt
ZSBmcmFtZVZpZXddIHNldEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgZnJhbWVTaXplLndpZHRoLCBm
cmFtZVNpemUuaGVpZ2h0KV07CkBAIC0xODI2LDkgKzE3OTEsOSBAQCBzdGF0aWMgdm9pZCBzZXRK
U0NPcHRpb25zKGNvbnN0IFdUUjo6VGVzCiAgICAgICAgIHNhdmVkT3B0aW9ucy5jbGVhcigpOwog
ICAgIH0KIAotICAgIGlmIChvcHRpb25zLmpzY09wdGlvbnMubGVuZ3RoKCkpIHsKKyAgICBpZiAo
IW9wdGlvbnMuanNjT3B0aW9ucygpLmVtcHR5KCkpIHsKICAgICAgICAgSlNDOjpPcHRpb25zOjpk
dW1wQWxsT3B0aW9uc0luQUxpbmUoc2F2ZWRPcHRpb25zKTsKLSAgICAgICAgSlNDOjpPcHRpb25z
OjpzZXRPcHRpb25zKG9wdGlvbnMuanNjT3B0aW9ucy5jX3N0cigpKTsKKyAgICAgICAgSlNDOjpP
cHRpb25zOjpzZXRPcHRpb25zKG9wdGlvbnMuanNjT3B0aW9ucygpLmNfc3RyKCkpOwogICAgIH0K
IH0KIApAQCAtMTgzOSw2ICsxODA0LDEwIEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViVmlld1RvQ29u
c2lzdGVudFN0YXQKIAogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbbWFpbkZyYW1lIHdlYlZpZXdd
OwogCisgICAgV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzID0gW1tXZWJQcmVmZXJlbmNlcyBh
bGxvY10gaW5pdF07CisgICAgW3ByZWZlcmVuY2VzIHNldEF1dG9zYXZlczpOT107CisgICAgW3dl
YlZpZXcgc2V0UHJlZmVyZW5jZXM6cHJlZmVyZW5jZXNdOworCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBhZGp1c3RXZWJEb2N1bWVudEZvclN0YW5kYXJkVmlld3BvcnQoZ1dlYkJyb3dz
ZXJWaWV3LCBnV2ViU2Nyb2xsVmlldyk7CiAgICAgW3dlYlZpZXcgX3NldEFsbG93c01lc3NhZ2lu
ZzpZRVNdOwpAQCAtMTg2NywxMCArMTgzNiwxMCBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdU
b0NvbnNpc3RlbnRTdGF0CiAKICAgICBbV2ViQ2FjaGUgY2xlYXJDYWNoZWRDcmVkZW50aWFsc107
CiAKLSAgICByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKCk7Ci0gICAgc2V0
V2ViUHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9ucyhvcHRpb25zKTsKKyAgICByZXNldFdlYlByZWZl
cmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKHByZWZlcmVuY2VzKTsKKyAgICBzZXRXZWJQcmVmZXJl
bmNlc0ZvclRlc3RPcHRpb25zKHByZWZlcmVuY2VzLCBvcHRpb25zKTsKICNpZiBQTEFURk9STShN
QUMpCi0gICAgW3dlYlZpZXcgc2V0V2FudHNMYXllcjpvcHRpb25zLmxheWVyQmFja2VkV2ViVmll
d107CisgICAgW3dlYlZpZXcgc2V0V2FudHNMYXllcjpvcHRpb25zLmxheWVyQmFja2VkV2ViVmll
dygpXTsKICNlbmRpZgogCiAgICAgVGVzdFJ1bm5lcjo6c2V0U2VyaWFsaXplSFRUUExvYWRzKGZh
bHNlKTsKQEAgLTE5MTQsNyArMTg4Myw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViVmlld1RvQ29u
c2lzdGVudFN0YXQKICAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gZGVjbGFy
ZVR5cGVzOkBbTlNTdHJpbmdQYm9hcmRUeXBlXSBvd25lcjpuaWxdOwogI2VuZGlmCiAKLSAgICBX
ZWJDb3JlVGVzdFN1cHBvcnQ6OnNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzRm9yVGVz
dGluZyhvcHRpb25zLmFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzLmNfc3RyKCkpOworICAg
IFdlYkNvcmVUZXN0U3VwcG9ydDo6c2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXNGb3JU
ZXN0aW5nKG9wdGlvbnMuYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMoKS5jX3N0cigpKTsK
IAogICAgIFttYWluRnJhbWUgX2NsZWFyT3BlbmVyXTsKIApAQCAtMTk3MCwxOSArMTkzOSwxOSBA
QCBzdGF0aWMgTlNVUkwgKmNvbXB1dGVUZXN0VVJMKE5TU3RyaW5nICpwCiAKIHN0YXRpYyBXVFI6
OlRlc3RPcHRpb25zIHRlc3RPcHRpb25zRm9yVGVzdChjb25zdCBXVFI6OlRlc3RDb21tYW5kJiBj
b21tYW5kKQogewotICAgIFdUUjo6VGVzdEZlYXR1cmVzIGZlYXR1cmVzOworICAgIFdUUjo6VGVz
dEZlYXR1cmVzIGZlYXR1cmVzID0gV1RSOjpUZXN0T3B0aW9uczo6ZGVmYXVsdHMoKTsKICAgICBX
VFI6Om1lcmdlKGZlYXR1cmVzLCBXVFI6OmhhcmRjb2RlZEZlYXR1cmVzQmFzZWRPblBhdGhGb3JU
ZXN0KGNvbW1hbmQpKTsKICAgICBXVFI6Om1lcmdlKGZlYXR1cmVzLCBXVFI6OmZlYXR1cmVEZWZh
dWx0c0Zyb21UZXN0SGVhZGVyRm9yVGVzdChjb21tYW5kLCBXVFI6OlRlc3RPcHRpb25zOjprZXlU
eXBlTWFwcGluZygpKSk7CiAKICAgICByZXR1cm4gV1RSOjpUZXN0T3B0aW9ucyB7IFdURk1vdmUo
ZmVhdHVyZXMpIH07CiB9CiAKLXN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RyaW5nJiBpbnB1
dExpbmUpCitzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnB1dExpbmUp
CiB7CiAgICAgQVNTRVJUKCFpbnB1dExpbmUuZW1wdHkoKSk7CiAKICAgICBhdXRvIGNvbW1hbmQg
PSBXVFI6OnBhcnNlSW5wdXRMaW5lKGlucHV0TGluZSk7Ci0gICAgY29uc3Qgc3RyaW5nJiBwYXRo
T3JVUkwgPSBjb21tYW5kLnBhdGhPclVSTDsKKyAgICBhdXRvIHBhdGhPclVSTCA9IGNvbW1hbmQu
cGF0aE9yVVJMOwogICAgIGR1bXBQaXhlbHNGb3JDdXJyZW50VGVzdCA9IGNvbW1hbmQuc2hvdWxk
RHVtcFBpeGVscyB8fCBkdW1wUGl4ZWxzRm9yQWxsVGVzdHM7CiAKICAgICBOU1N0cmluZyAqcGF0
aE9yVVJMU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOnBhdGhPclVSTC5j
X3N0cigpXTsKQEAgLTIwMTcsNyArMTk4Niw3IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qg
c3RyaW5nJiBpbnB1dEwKICAgICBnVGVzdFJ1bm5lciA9IFRlc3RSdW5uZXI6OmNyZWF0ZSh0ZXN0
VVJMLCBjb21tYW5kLmV4cGVjdGVkUGl4ZWxIYXNoKTsKICAgICBnVGVzdFJ1bm5lci0+c2V0QWxs
b3dlZEhvc3RzKGFsbG93ZWRIb3N0cyk7CiAgICAgZ1Rlc3RSdW5uZXItPnNldEN1c3RvbVRpbWVv
dXQoY29tbWFuZC50aW1lb3V0Lm1pbGxpc2Vjb25kcygpKTsKLSAgICBnVGVzdFJ1bm5lci0+c2V0
RHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyKGNvbW1hbmQuZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJy
IHx8IG9wdGlvbnMuZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyKTsKKyAgICBnVGVzdFJ1bm5lci0+
c2V0RHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyKGNvbW1hbmQuZHVtcEpTQ29uc29sZUxvZ0luU3Rk
RXJyIHx8IG9wdGlvbnMuZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyKCkpOwogCiAgICAgcmVzZXRX
ZWJWaWV3VG9Db25zaXN0ZW50U3RhdGUob3B0aW9ucywgUmVzZXRUaW1lOjpCZWZvcmVUZXN0KTsK
IApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0JKHJldmlz
aW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC01NzYsMTQgKzU3NiwxNCBAQCB2b2lkIFRlc3RSdW5uZXI6OnNl
dFBhZ2VQYXVzZWQoYm9vbCBwYXVzCiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hl
ZXRFbmFibGVkKGJvb2wgZmxhZykKIHsKLSAgICBbW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJl
ZmVyZW5jZXNdIHNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZDpmbGFnXTsKKyAgICBbW1ttYWluRnJh
bWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIHNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZDpmbGFnXTsK
IH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5n
UmVmIHBhdGgpCiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXRoQ0YgPSBhZG9wdENG
KEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBhdGgpKTsKICAgICBO
U1VSTCAqdXJsID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6KF9fYnJpZGdlIE5TU3RyaW5nICopcGF0
aENGLmdldCgpXTsKLSAgICBbW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdIHNl
dFVzZXJTdHlsZVNoZWV0TG9jYXRpb246dXJsXTsKKyAgICBbW1ttYWluRnJhbWUgd2ViVmlld10g
cHJlZmVyZW5jZXNdIHNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb246dXJsXTsKIH0KIAogdm9pZCBU
ZXN0UnVubmVyOjpzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVS
ZWYgbm9kZU9iamVjdCwgSlNTdHJpbmdSZWYgdmFsdWUpCkBAIC02MDksNyArNjA5LDcgQEAgdm9p
ZCBUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UoSlNTdAogICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gdmFsdWVDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgdmFsdWUpKTsKICAgICBOU1N0cmluZyAqdmFsdWVOUyA9IChfX2JyaWRnZSBO
U1N0cmluZyAqKXZhbHVlQ0YuZ2V0KCk7CiAKLSAgICBbW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJk
UHJlZmVyZW5jZXNdIF9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhWYWx1ZTp2YWx1ZU5TIGZvcktl
eTprZXlOU107CisgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBfc2V0U3Ry
aW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dmFsdWVOUyBmb3JLZXk6a2V5TlNdOwog
fQogCiB2b2lkIFRlc3RSdW5uZXI6OnJlbW92ZUFsbFZpc2l0ZWRMaW5rcygpCkBAIC03MDAsNyAr
NzAwLDcgQEAgYm9vbCBUZXN0UnVubmVyOjpmaW5kU3RyaW5nKEpTQ29udGV4dFJlZgogCiB2b2lk
IFRlc3RSdW5uZXI6OnNldENhY2hlTW9kZWwoaW50IGNhY2hlTW9kZWwpCiB7Ci0gICAgW1tXZWJQ
cmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXSBzZXRDYWNoZU1vZGVsOihXZWJDYWNoZU1v
ZGVsKWNhY2hlTW9kZWxdOworICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10g
c2V0Q2FjaGVNb2RlbDooV2ViQ2FjaGVNb2RlbCljYWNoZU1vZGVsXTsKIH0KIAogYm9vbCBUZXN0
UnVubmVyOjppc0NvbW1hbmRFbmFibGVkKEpTU3RyaW5nUmVmIG5hbWUpCkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTYwLDcg
KzYwLDcgQEAgLSAodm9pZClyZXNldFdpbmRvd09yaWdpbgogCiAtICh2b2lkKXJlc2V0VG9Db25z
aXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nOihjb25zdCBXVFI6OlRlc3RPcHRpb25zJilvcHRpb25z
CiB7Ci0gICAgbV9lbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkID0gb3B0aW9ucy5lbmFi
bGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkOworICAgIG1fZW5hYmxlRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uTG9hZCA9IG9wdGlvbnMuZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCgpOwog
fQogCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgc2V0RnJhbWU6KE5TUmVjdClm
cmFtZQpAQCAtMTc5LDcgKzE3OSw4IEBAIC0gKFdlYlZpZXcgKil3ZWJWaWV3OihXZWJWaWV3ICop
c2VuZGVyIGMKICAgICBBU1NFUlQoZ1Rlc3RSdW5uZXItPndhaXRUb0R1bXAoKSk7CiAKICAgICBX
ZWJWaWV3ICp3ZWJWaWV3ID0gY3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdygpOwotICAg
IAorICAgIFt3ZWJWaWV3IHNldFByZWZlcmVuY2VzOltzZW5kZXIgcHJlZmVyZW5jZXNdXTsKKwog
ICAgIGlmIChnVGVzdFJ1bm5lci0+bmV3V2luZG93c0NvcHlCYWNrRm9yd2FyZExpc3QoKSkKICAg
ICAgICAgW3dlYlZpZXcgX2xvYWRCYWNrRm9yd2FyZExpc3RGcm9tT3RoZXJWaWV3OnNlbmRlcl07
CiAgICAgCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5j
cHAJKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVu
ZGVyVHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwNiwyOCArOTA2LDM3IEBAIHN0YXRpYyB2
b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3QKIAogICAgIHByZWZlcmVuY2VzLT5zZXRG
b250U21vb3RoaW5nKEZvbnRTbW9vdGhpbmdUeXBlU3RhbmRhcmQpOwogCisgICAgcHJlZnNQcml2
YXRlLT5zZXRXZWJTUUxFbmFibGVkKHRydWUpOworCiAgICAgcHJlZnNQcml2YXRlLT5zZXREYXRh
VHJhbnNmZXJJdGVtc0VuYWJsZWQoVFJVRSk7CiAgICAgcHJlZnNQcml2YXRlLT5jbGVhck5ldHdv
cmtMb2FkZXJTZXNzaW9uKCk7CiAKICAgICBzZXRBbHdheXNBY2NlcHRDb29raWVzKGZhbHNlKTsK
IH0KIAorc3RhdGljIGJvb2wgYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoc3RkOjpzdHJp
bmcga2V5LCBib29sIGRlZmF1bHRWYWx1ZSwgY29uc3QgV1RSOjpUZXN0T3B0aW9ucyYgb3B0aW9u
cykKK3sKKyAgICBhdXRvIGl0ID0gb3B0aW9ucy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCku
ZmluZChrZXkpOworICAgIGlmIChpdCAhPSBvcHRpb25zLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVy
ZXMoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7CisgICAgcmV0dXJuIGRlZmF1
bHRWYWx1ZTsKK30KKwogc3RhdGljIHZvaWQgc2V0V2ViUHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9u
cyhJV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzLCBjb25zdCBXVFI6OlRlc3RPcHRpb25zJiBv
cHRpb25zKQogewogICAgIENPTVB0cjxJV2ViUHJlZmVyZW5jZXNQcml2YXRlOD4gcHJlZnNQcml2
YXRlIHsgUXVlcnksIHByZWZlcmVuY2VzIH07CiAKLSAgICBwcmVmc1ByaXZhdGUtPnNldE1lbnVJ
dGVtRWxlbWVudEVuYWJsZWQob3B0aW9ucy5lbmFibGVNZW51SXRlbUVsZW1lbnQpOwotICAgIHBy
ZWZzUHJpdmF0ZS0+c2V0S2V5Z2VuRWxlbWVudEVuYWJsZWQob3B0aW9ucy5lbmFibGVLZXlnZW5F
bGVtZW50KTsKLSAgICBwcmVmc1ByaXZhdGUtPnNldE1vZGVybk1lZGlhQ29udHJvbHNFbmFibGVk
KG9wdGlvbnMuZW5hYmxlTW9kZXJuTWVkaWFDb250cm9scyk7Ci0gICAgcHJlZnNQcml2YXRlLT5z
ZXRJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkKG9wdGlvbnMuZW5hYmxlSW5zcGVjdG9yQWRkaXRp
b25zKTsKLSAgICBwcmVmc1ByaXZhdGUtPnNldFJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkKG9w
dGlvbnMuZW5hYmxlUmVxdWVzdElkbGVDYWxsYmFjayk7Ci0gICAgcHJlZnNQcml2YXRlLT5zZXRB
c3luY0NsaXBib2FyZEFQSUVuYWJsZWQob3B0aW9ucy5lbmFibGVBc3luY0NsaXBib2FyZEFQSSk7
Ci0gICAgcHJlZnNQcml2YXRlLT5zZXRDb250YWN0UGlja2VyQVBJRW5hYmxlZChvcHRpb25zLmVu
YWJsZUNvbnRhY3RQaWNrZXJBUEkpOwotICAgIHByZWZzUHJpdmF0ZS0+c2V0V2ViU1FMRW5hYmxl
ZChvcHRpb25zLmVuYWJsZVdlYlNRTCk7Ci0gICAgcHJlZnNQcml2YXRlLT5zZXRBbGxvd1RvcE5h
dmlnYXRpb25Ub0RhdGFVUkxzKG9wdGlvbnMuYWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyk7
Ci0gICAgcHJlZmVyZW5jZXMtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQob3B0aW9ucy51c2VF
cGhlbWVyYWxTZXNzaW9uKTsKLSAgICBwcmVmZXJlbmNlcy0+c2V0VXNlc1BhZ2VDYWNoZShvcHRp
b25zLmVuYWJsZUJhY2tGb3J3YXJkQ2FjaGUpOwotICAgIHByZWZzUHJpdmF0ZS0+c2V0Q1NTT01W
aWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZChvcHRpb25zLmVuYWJsZUNTU09NVmlld1Ntb290aFNj
cm9sbGluZyk7CisgICAgcHJlZmVyZW5jZXMtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQob3B0
aW9ucy51c2VFcGhlbWVyYWxTZXNzaW9uKCkpOworICAgIHByZWZlcmVuY2VzLT5zZXRVc2VzUGFn
ZUNhY2hlKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJVc2VzQmFja0ZvcndhcmRDYWNo
ZSIsIGZhbHNlLCBvcHRpb25zKSk7CisgICAgcHJlZnNQcml2YXRlLT5zZXRNZW51SXRlbUVsZW1l
bnRFbmFibGVkKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJNZW51SXRlbUVsZW1lbnRF
bmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldEtleWdlbkVs
ZW1lbnRFbmFibGVkKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJLZXlnZW5FbGVtZW50
RW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKSk7CisgICAgcHJlZnNQcml2YXRlLT5zZXRNb2Rlcm5N
ZWRpYUNvbnRyb2xzRW5hYmxlZChib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiTW9kZXJu
TWVkaWFDb250cm9sc0VuYWJsZWQiLCB0cnVlLCBvcHRpb25zKSk7CisgICAgcHJlZnNQcml2YXRl
LT5zZXRJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZh
bHVlKCJJbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBw
cmVmc1ByaXZhdGUtPnNldFJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkKGJvb2xXZWJQcmVmZXJl
bmNlRmVhdHVyZVZhbHVlKCJSZXF1ZXN0SWRsZUNhbGxiYWNrRW5hYmxlZCIsIGZhbHNlLCBvcHRp
b25zKSk7CisgICAgcHJlZnNQcml2YXRlLT5zZXRBc3luY0NsaXBib2FyZEFQSUVuYWJsZWQoYm9v
bFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxlZCIsIGZh
bHNlLCBvcHRpb25zKSk7CisgICAgcHJlZnNQcml2YXRlLT5zZXRDb250YWN0UGlja2VyQVBJRW5h
YmxlZChib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQ29udGFjdFBpY2tlckFQSUVuYWJs
ZWQiLCBmYWxzZSwgb3B0aW9ucykpOworICAgIHByZWZzUHJpdmF0ZS0+c2V0QWxsb3dUb3BOYXZp
Z2F0aW9uVG9EYXRhVVJMcyhib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQWxsb3dUb3BO
YXZpZ2F0aW9uVG9EYXRhVVJMcyIsIHRydWUsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1ByaXZhdGUt
PnNldENTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWQoYm9vbFdlYlByZWZlcmVuY2VGZWF0
dXJlVmFsdWUoIkNTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWQiLCBmYWxzZSwgb3B0aW9u
cykpOwogfQogCiBzdGF0aWMgU3RyaW5nIGFwcGxpY2F0aW9uSWQoKQpAQCAtOTczLDkgKzk4Miw5
IEBAIHN0YXRpYyB2b2lkIHNldEpTQ09wdGlvbnMoY29uc3QgV1RSOjpUZXMKICAgICAgICAgc2F2
ZWRPcHRpb25zLmNsZWFyKCk7CiAgICAgfQogCi0gICAgaWYgKG9wdGlvbnMuanNjT3B0aW9ucy5s
ZW5ndGgoKSkgeworICAgIGlmICghb3B0aW9ucy5qc2NPcHRpb25zKCkuZW1wdHkoKSkgewogICAg
ICAgICBKU0M6Ok9wdGlvbnM6OmR1bXBBbGxPcHRpb25zSW5BTGluZShzYXZlZE9wdGlvbnMpOwot
ICAgICAgICBKU0M6Ok9wdGlvbnM6OnNldE9wdGlvbnMob3B0aW9ucy5qc2NPcHRpb25zLmNfc3Ry
KCkpOworICAgICAgICBKU0M6Ok9wdGlvbnM6OnNldE9wdGlvbnMob3B0aW9ucy5qc2NPcHRpb25z
KCkuY19zdHIoKSk7CiAgICAgfQogfQogCkBAIC0xMTY4LDcgKzExNzcsNyBAQCBzdGF0aWMgYm9v
bCBoYW5kbGVDb250cm9sQ29tbWFuZChjb25zdCBjCiAKIHN0YXRpYyBXVFI6OlRlc3RPcHRpb25z
IHRlc3RPcHRpb25zRm9yVGVzdChjb25zdCBXVFI6OlRlc3RDb21tYW5kJiBjb21tYW5kKQogewot
ICAgIFdUUjo6VGVzdEZlYXR1cmVzIGZlYXR1cmVzOworICAgIFdUUjo6VGVzdEZlYXR1cmVzIGZl
YXR1cmVzID0gV1RSOjpUZXN0T3B0aW9uczo6ZGVmYXVsdHMoKTsKICAgICBXVFI6Om1lcmdlKGZl
YXR1cmVzLCBXVFI6OmhhcmRjb2RlZEZlYXR1cmVzQmFzZWRPblBhdGhGb3JUZXN0KGNvbW1hbmQp
KTsKICAgICBXVFI6Om1lcmdlKGZlYXR1cmVzLCBXVFI6OmZlYXR1cmVEZWZhdWx0c0Zyb21UZXN0
SGVhZGVyRm9yVGVzdChjb21tYW5kLCBXVFI6OlRlc3RPcHRpb25zOjprZXlUeXBlTWFwcGluZygp
KSk7CiAKQEAgLTEyMjksNyArMTIzOCw3IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3Ry
aW5nJiBpbnB1dEwKIAogICAgIDo6Z1Rlc3RSdW5uZXIgPSBUZXN0UnVubmVyOjpjcmVhdGUodGVz
dFVSTC5kYXRhKCksIGNvbW1hbmQuZXhwZWN0ZWRQaXhlbEhhc2gpOwogICAgIDo6Z1Rlc3RSdW5u
ZXItPnNldEN1c3RvbVRpbWVvdXQoY29tbWFuZC50aW1lb3V0Lm1pbGxpc2Vjb25kcygpKTsKLSAg
ICA6OmdUZXN0UnVubmVyLT5zZXREdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoY29tbWFuZC5kdW1w
SlNDb25zb2xlTG9nSW5TdGRFcnIgfHwgb3B0aW9ucy5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIp
OworICAgIDo6Z1Rlc3RSdW5uZXItPnNldER1bXBKU0NvbnNvbGVMb2dJblN0ZEVycihjb21tYW5k
LmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciB8fCBvcHRpb25zLmR1bXBKU0NvbnNvbGVMb2dJblN0
ZEVycigpKTsKIAogICAgIHRvcExvYWRpbmdGcmFtZSA9IG51bGxwdHI7CiAgICAgZG9uZSA9IGZh
bHNlOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJl
dmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MjEsMTcgKzkyMSwxNiBAQCB2b2lkIFRlc3RDb250cm9s
bGVyOjpyZXNldFByZWZlcmVuY2VzVG9DCiAgICAgcGxhdGZvcm1SZXNldFByZWZlcmVuY2VzVG9D
b25zaXN0ZW50VmFsdWVzKCk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6
IG9wdGlvbnMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAgICAgICBXS1ByZWZlcmVu
Y2VzU2V0Qm9vbFZhbHVlRm9yS2V5KHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgp
KTsKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleUZvclRlc3RpbmcocHJl
ZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRv
JiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLmRvdWJsZVdlYlByZWZlcmVuY2VGZWF0dXJlcygpKQot
ICAgICAgICBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXkocHJlZmVyZW5jZXMsIHZh
bHVlLCB0b1dLKGtleSkuZ2V0KCkpOworICAgICAgICBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFs
dWVGb3JLZXlGb3JUZXN0aW5nKHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsK
IAogICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy51aW50MzJXZWJQ
cmVmZXJlbmNlRmVhdHVyZXMoKSkKLSAgICAgICAgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVl
Rm9yS2V5KHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKKyAgICAgICAgV0tQ
cmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdmFs
dWUsIHRvV0soa2V5KS5nZXQoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVl
XSA6IG9wdGlvbnMuc3RyaW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCi0gICAgICAgIFdLUHJl
ZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleShwcmVmZXJlbmNlcywgdG9XSyh2YWx1ZSkuZ2V0
KCksIHRvV0soa2V5KS5nZXQoKSk7Ci0KKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1Zh
bHVlRm9yS2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdG9XSyh2YWx1ZSkuZ2V0KCksIHRvV0so
a2V5KS5nZXQoKSk7CiB9CiAKIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNp
c3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlc2V0U3RhZ2UgcmVzZXRT
dGFnZSkKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvU2NyaXB0cy9QcmVmZXJlbmNlc1Rl
bXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRp
b25zR2VuZXJhdGVkS2V5cy5oLmVyYgkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJh
dGVkS2V5cy5oLmVyYgkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogI3ByYWdtYSBv
bmNlCiAKICNkZWZpbmUgR0VORVJBVEVEX1dFQl9QUkVGRVJFTkNFX0tFWV9UWVBFX01BUFBJTkdT
IFwKLTwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzIGRvIC0lPgorPCUtIGZvciBAcHJlZiBp
biBAZXhwb3NlZFByZWZlcmVuY2VzIGRvIC0lPgogICAgIHsgIjwlPSBAcHJlZi5uYW1lICU+Iiwg
VGVzdEhlYWRlcktleVR5cGU6OjwlPSBAcHJlZi50eXBlVXBwZXIgJT5XZWJQcmVmZXJlbmNlIH0s
IFwKIDwlLSBlbmQgLSU+CiBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411724</attachid>
            <date>2020-10-18 18:43:24 -0700</date>
            <delta_ts>2020-10-23 09:08:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201018184323.patch</filename>
            <type>text/plain</type>
            <size>98706</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjg2NjApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTE4ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVuZGVyVHJlZSB0
byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9HZW5lcmF0ZVByZWZlcmVuY2Vz
LnJiOgorICAgICAgICBUd2VhayBob3cgdGhlICJleHBvc2VkIiBrZXkgaXMgaW50ZXJwcmV0ZWQg
dG8gZXh0ZW5kIHRvIGtleXMgd2l0aCBkZWZhdWx0IHZhbHVlcworICAgICAgICBmb3IgdGhlIGN1
cnJlbnQgZnJvbnRlbmQgKHRoYXQgc2hvdWxkIGNvbnRpbnVlIHRvIGJlIHNldCBvbiBTZXR0aW5n
cyBmb3IgaW5zdGFuY2UpCisgICAgICAgIGJ1dCB0aGF0IHNob3VsZCBub3QgcmVzcGVjdCB0aGUg
a2V5IGJlaW5nIHBhc3NlZCBpbi4gRm9yIGluc3RhbmNlLCB0aGUga2V5IAorICAgICAgICAiQXN5
bmNGcmFtZVNjcm9sbGluZ0VuYWJsZWQiIGhhcyBkZWZhdWx0IHZhbHVlcyBmb3IgYWxsIGZyb250
IGVuZHMsIHNpbmNlIHdlIG5lZWQKKyAgICAgICAgdG8gc2V0IGl0IHRvIGZhbHNlIGluIFNldHRp
bmdzIHdoZW4gYnVpbGRpbmcgV2ViS2l0TGVnYWN5LCBidXQgaXMgb25seSBleHBvc2VkIHRvCisg
ICAgICAgIFdlYktpdCwgc28gaXQgd29uJ3QgYmUgaW4gV2ViS2l0TGVnYWN5J3MgLVtXZWJQcmVm
ZXJlbmNlcyBpbnRlcm5hbEZlYXR1cmVzXSBhcnJheQorICAgICAgICBhbmQgd29uJ3QgZG8gYW55
dGhpbmcgaWYgcGFzc2VkIHRvIC1bV2ViUHJlZmVyZW5jZXMgX3NldEJvb2xQcmVmZXJlbmNlRm9y
VGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XS4KKyAgICAgICAgCisgICAgICAgICogU2NyaXB0cy9Q
cmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWw6CisgICAgICAgIE9ubHkgZXhw
b3NlIEFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkIGFuZCBBc3luY092ZXJmbG93U2Nyb2xsaW5n
RW5hYmxlZCB0byBXZWJLaXQuCisgICAgICAgIFRoaXMgbWFpbnRhaW5zIHRoZSBiZWhhdmlvciB0
aGF0IHRoZXNlIGtleXMgYXJlIG5vdCB2YWxpZCBrZXlzIGFzIHRlc3QgaGVhZGVyIGNvbW1hbmRz
CisgICAgICAgIHdoZW4gcnVuIHRocm91Z2ggRHVtcFJlbmRlclRyZWUuCisKIDIwMjAtMTAtMTgg
IERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggLVdkZXBy
ZWNhdGVkLWNvcHkgd2FybmluZ3MgaW4gV1RGIGFuZCBKYXZhU2NyaXB0Q29yZQpJbmRleDogU291
cmNlL1dURi9TY3JpcHRzL0dlbmVyYXRlUHJlZmVyZW5jZXMucmIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi9TY3JpcHRzL0dlbmVyYXRlUHJlZmVyZW5jZXMucmIJKHJldmlzaW9uIDI2ODY0OCkK
KysrIFNvdXJjZS9XVEYvU2NyaXB0cy9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw3ICszOCw3IEBAIG9wdGlvbnMgPSB7CiAgIDp0ZW1wbGF0ZXMgPT4gW10KIH0K
IG9wdHBhcnNlID0gT3B0aW9uUGFyc2VyLm5ldyBkbyB8b3B0c3wKLSAgb3B0cy5iYW5uZXIgPSAi
VXNhZ2U6ICN7RmlsZS5iYXNlbmFtZSgkMCl9IC0taW5wdXQgZmlsZSIKKyAgb3B0cy5iYW5uZXIg
PSAiVXNhZ2U6ICN7RmlsZS5iYXNlbmFtZSgkMCl9IC0tZnJvbnRlbmQgPGZyb250ZW5kPiAtLWJh
c2UgPGJhc2U+IC0tZGVidWcgPGRlYnVnPiAtLWV4cGVyaW1lbnRhbCA8ZXhwZXJpbWVudGFsPiAt
LWludGVybmFsIDxpbnRlcm5hbD4gLS10ZW1wbGF0ZSBmaWxlIgogCiAgIG9wdHMuc2VwYXJhdG9y
ICIiCiAKQEAgLTEwMCw2ICsxMDAsNyBAQCBjbGFzcyBQcmVmZXJlbmNlCiAgIGF0dHJfYWNjZXNz
b3IgOmNvbmRpdGlvbgogICBhdHRyX2FjY2Vzc29yIDpoaWRkZW4KICAgYXR0cl9hY2Nlc3NvciA6
ZGVmYXVsdFZhbHVlcworICBhdHRyX2FjY2Vzc29yIDpleHBvc2VkCiAKICAgZGVmIGluaXRpYWxp
emUobmFtZSwgb3B0cywgZnJvbnRlbmQpCiAgICAgQG5hbWUgPSBuYW1lCkBAIC0xMTMsNiArMTE0
LDcgQEAgY2xhc3MgUHJlZmVyZW5jZQogICAgIEBjb25kaXRpb24gPSBvcHRzWyJjb25kaXRpb24i
XQogICAgIEBoaWRkZW4gPSBvcHRzWyJoaWRkZW4iXSB8fCBmYWxzZQogICAgIEBkZWZhdWx0VmFs
dWVzID0gb3B0c1siZGVmYXVsdFZhbHVlIl1bZnJvbnRlbmRdCisgICAgQGV4cG9zZWQgPSAhb3B0
c1siZXhwb3NlZCJdIHx8IG9wdHNbImV4cG9zZWQiXS5pbmNsdWRlPyhmcm9udGVuZCkKICAgZW5k
CiAKICAgZGVmIG5hbWVMb3dlcgpAQCAtMTkwLDYgKzE5MiwxMiBAQCBjbGFzcyBQcmVmZXJlbmNl
cwogICAgIEBleHBlcmltZW50YWxGZWF0dXJlcy5zb3J0ISB7IHx4LCB5fCB4Lm5hbWUgPD0+IHku
bmFtZSB9LnNvcnQhIHsgfHgsIHl8IHguaHVtYW5SZWFkYWJsZU5hbWUgPD0+IHkuaHVtYW5SZWFk
YWJsZU5hbWUgfQogICAgIEBpbnRlcm5hbEZlYXR1cmVzLnNvcnQhIHsgfHgsIHl8IHgubmFtZSA8
PT4geS5uYW1lIH0uc29ydCEgeyB8eCwgeXwgeC5odW1hblJlYWRhYmxlTmFtZSA8PT4geS5odW1h
blJlYWRhYmxlTmFtZSB9CiAKKyAgICBAZXhwb3NlZFByZWZlcmVuY2VzID0gQHByZWZlcmVuY2Vz
LnNlbGVjdCB7IHxwfCBwLmV4cG9zZWQgfQorICAgIEBleHBvc2VkUHJlZmVyZW5jZXNOb3REZWJ1
ZyA9IEBwcmVmZXJlbmNlc05vdERlYnVnLnNlbGVjdCB7IHxwfCBwLmV4cG9zZWQgfQorICAgIEBl
eHBvc2VkUHJlZmVyZW5jZXNEZWJ1ZyA9IEBwcmVmZXJlbmNlc0RlYnVnLnNlbGVjdCB7IHxwfCBw
LmV4cG9zZWQgfQorICAgIEBleHBvc2VkRXhwZXJpbWVudGFsRmVhdHVyZXMgPSBAZXhwZXJpbWVu
dGFsRmVhdHVyZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3NlZCB9CisgICAgQGV4cG9zZWRJbnRlcm5h
bEZlYXR1cmVzID0gQGludGVybmFsRmVhdHVyZXMuc2VsZWN0IHsgfHB8IHAuZXhwb3NlZCB9CisK
ICAgICBAcHJlZmVyZW5jZXNCb3VuZFRvU2V0dGluZyA9IEBwcmVmZXJlbmNlcy5zZWxlY3QgeyB8
cHwgIXAud2ViY29yZUJpbmRpbmcgfQogICAgIEBwcmVmZXJlbmNlc0JvdW5kVG9EZXByZWNhdGVk
R2xvYmFsU2V0dGluZ3MgPSBAcHJlZmVyZW5jZXMuc2VsZWN0IHsgfHB8IHAud2ViY29yZUJpbmRp
bmcgPT0gIkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncyIgfQogICAgIEBwcmVmZXJlbmNlc0JvdW5k
VG9SdW50aW1lRW5hYmxlZEZlYXR1cmVzID0gQHByZWZlcmVuY2VzLnNlbGVjdCB7IHxwfCBwLndl
YmNvcmVCaW5kaW5nID09ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzIiB9CkBAIC0yMDQsNyArMjEy
LDcgQEAgY2xhc3MgUHJlZmVyZW5jZXMKICAgICAgICAgaWYgIW9wdGlvbnNbIndlYmNvcmVCaW5k
aW5nIl0gJiYgb3B0aW9uc1siZGVmYXVsdFZhbHVlIl0uc2l6ZSAhPSAzCiAgICAgICAgICAgcmFp
c2UgIkVSUk9SOiBQcmVmZXJlbmNlcyBib3VuZCB0byBXZWJDb3JlOjpTZXR0aW5ncyBtdXN0IGhh
dmUgZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCBmcm9udGVuZHM6ICN7bmFtZX0iCiAgICAgICAgIGVu
ZAotICAgICAgICBpZiAhb3B0aW9uc1siZXhwb3NlZCJdIG9yIG9wdGlvbnNbImV4cG9zZWQiXS5p
bmNsdWRlPyhAZnJvbnRlbmQpCisgICAgICAgIGlmIG9wdGlvbnNbImRlZmF1bHRWYWx1ZSJdLmlu
Y2x1ZGU/KEBmcm9udGVuZCkKICAgICAgICAgICBwcmVmZXJlbmNlID0gUHJlZmVyZW5jZS5uZXco
bmFtZSwgb3B0aW9ucywgQGZyb250ZW5kKQogICAgICAgICAgIEBwcmVmZXJlbmNlcyA8PCBwcmVm
ZXJlbmNlCiAgICAgICAgICAgcmVzdWx0IDw8IHByZWZlcmVuY2UKSW5kZXg6IFNvdXJjZS9XVEYv
U2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlcy55YW1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlcy55YW1sCShyZXZpc2lv
biAyNjg2NDgpCisrKyBTb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5j
ZXMueWFtbAkod29ya2luZyBjb3B5KQpAQCAtNDE2LDcgKzQxNiw3IEBAIENvbnRlbnRDaGFuZ2VP
YnNlcnZlckVuYWJsZWQ6CiAjIEZJWE1FOiBUaGlzIGlzIGhhbmRsZWQgdmlhIFdlYlZpZXcgU1BJ
IHJhdGhlciB0aGFuIFdlYlByZWZlcmVuY2VzIGZvciBXZWJLaXRMZWdhY3kuIFdlIHNob3VsZCBj
aGFuZ2UgdGhlIFNQSSB0byBsb29rdXAgdGhlIFdlYlByZWZlcmVuY2VzIHZhbHVlIGluc3RlYWQu
CiBDb29raWVFbmFibGVkOgogICB0eXBlOiBib29sCi0gIGV4cG9zZWQ6IFsgV2ViS2l0IF0KKyAg
d2ViS2l0TGVnYWN5QmluZGluZzogY3VzdG9tCiAgIGRlZmF1bHRWYWx1ZToKICAgICBXZWJLaXQ6
CiAgICAgICBkZWZhdWx0OiB0cnVlCkBAIC05NjIsNyArOTYyLDcgQEAgSW50ZXJhY3RpdmVGb3Jt
VmFsaWRhdGlvbkVuYWJsZWQ6CiAgIHR5cGU6IGJvb2wKICAgaHVtYW5SZWFkYWJsZU5hbWU6ICJI
VE1MIEludGVyYWN0aXZlIEZvcm0gVmFsaWRhdGlvbiIKICAgaHVtYW5SZWFkYWJsZURlc2NyaXB0
aW9uOiAiSFRNTCBpbnRlcmFjdGl2ZSBmb3JtIHZhbGlkYXRpb24iCi0gIGV4cG9zZWQ6IFsgV2Vi
S2l0IF0KKyAgd2ViS2l0TGVnYWN5QmluZGluZzogY3VzdG9tCiAgIGRlZmF1bHRWYWx1ZToKICAg
ICBXZWJLaXQ6CiAgICAgICBkZWZhdWx0OiB0cnVlCkBAIC0xNzI3LDcgKzE3MjcsNyBAQCBTY3Jv
bGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkOgogIyBGSVhNRTogVGhpcyBpcyBoYW5kbGVk
IHZpYSBXZWJWaWV3IFNQSSByYXRoZXIgdGhhbiBXZWJQcmVmZXJlbmNlcyBmb3IgV2ViS2l0TGVn
YWN5LiBXZSBzaG91bGQgY2hhbmdlIHRoZSBTUEkgdG8gbG9va3VwIHRoZSBXZWJQcmVmZXJlbmNl
cyB2YWx1ZSBpbnN0ZWFkLgogU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZDoKICAgdHlw
ZTogYm9vbAotICBleHBvc2VkOiBbIFdlYktpdCBdCisgIHdlYktpdExlZ2FjeUJpbmRpbmc6IGN1
c3RvbQogICBkZWZhdWx0VmFsdWU6CiAgICAgV2ViS2l0OgogICAgICAgZGVmYXVsdDogZmFsc2UK
QEAgLTE5NDYsNyArMTk0Niw3IEBAIFNob3dzVVJMc0luVG9vbFRpcHNFbmFibGVkOgogIyBGSVhN
RTogVGhpcyBpcyBoYW5kbGVkIHZpYSBXZWJWaWV3IFNQSSByYXRoZXIgdGhhbiBXZWJQcmVmZXJl
bmNlcyBmb3IgV2ViS2l0TGVnYWN5LiBXZSBzaG91bGQgY2hhbmdlIHRoZSBTUEkgdG8gbG9va3Vw
IHRoZSBXZWJQcmVmZXJlbmNlcyB2YWx1ZSBpbnN0ZWFkLgogU21hcnRJbnNlcnREZWxldGVFbmFi
bGVkOgogICB0eXBlOiBib29sCi0gIGV4cG9zZWQ6IFsgV2ViS2l0IF0KKyAgd2ViS2l0TGVnYWN5
QmluZGluZzogY3VzdG9tCiAgIGRlZmF1bHRWYWx1ZToKICAgICBXZWJLaXQ6CiAgICAgICBkZWZh
dWx0OiB0cnVlCkluZGV4OiBTb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVy
ZW5jZXNJbnRlcm5hbC55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVm
ZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwJKHJldmlzaW9uIDI2ODY0OCkKKysr
IFNvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlh
bWwJKHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDcgQEAgQXN5bmNGcmFtZVNjcm9sbGluZ0Vu
YWJsZWQ6CiAgIHdlYmNvcmVPbkNoYW5nZTogc2V0TmVlZHNSZWxheW91dEFsbEZyYW1lcwogICBo
dW1hblJlYWRhYmxlTmFtZTogIkFzeW5jIEZyYW1lIFNjcm9sbGluZyIKICAgaHVtYW5SZWFkYWJs
ZURlc2NyaXB0aW9uOiAiUGVyZm9ybSBmcmFtZSBzY3JvbGxpbmcgb2ZmIHRoZSBtYWluIHRocmVh
ZCIKKyAgZXhwb3NlZDogWyBXZWJLaXQgXQogICBkZWZhdWx0VmFsdWU6CiAgICAgV2ViS2l0TGVn
YWN5OgogICAgICAgZGVmYXVsdDogZmFsc2UKQEAgLTk2LDYgKzk3LDcgQEAgQXN5bmNPdmVyZmxv
d1Njcm9sbGluZ0VuYWJsZWQ6CiAgIHdlYmNvcmVPbkNoYW5nZTogc2V0TmVlZHNSZWxheW91dEFs
bEZyYW1lcwogICBodW1hblJlYWRhYmxlTmFtZTogIkFzeW5jIE92ZXJmbG93IFNjcm9sbGluZyIK
ICAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiUGVyZm9ybSBvdmVyZmxvdyBzY3JvbGxpbmcg
b2ZmIHRoZSBtYWluIHRocmVhZCIKKyAgZXhwb3NlZDogWyBXZWJLaXQgXQogICBkZWZhdWx0VmFs
dWU6CiAgICAgV2ViS2l0TGVnYWN5OgogICAgICAgZGVmYXVsdDogZmFsc2UKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjg2NjApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDIwLTEwLTE4ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFw
cGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVuZGVyVHJlZSB0byB1
c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBXS1ByZWZlcmVuY2VzU2V0KlZhbHVlRm9y
S2V5IFNQSSB0byBXS1ByZWZlcmVuY2VzU2V0KlZhbHVlRm9yS2V5Rm9yVGVzdGluZworICAgICAg
ICB0byBtYWtlIGl0IGNsZWFyIHdoYXQgdGhleSBhcmUgdXNlZCBmb3IgYW5kIGZvciBjb25zaXN0
ZW5jeSB3aXRoIFdlYktpdExlZ2FjeS4KKworICAgICAgICBVcGRhdGUgdG8gdXNlIG5ldyAiZXhw
b3NlZCIgcHJlZml4IGJpbmRpbmdzIGFuZCB1c2UgZGVmYXVsdCB2YWx1ZSBleHBsaWNpdGx5Cisg
ICAgICAgIHdoZW4gdXBkYXRpbmcgc2V0dGluZ3MgZm9yIG5vbi1leHBvc2VkIHByZWZlcmVuY2Vz
LgorCisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQYWdlVXBkYXRl
UHJlZmVyZW5jZXMuY3BwLmVyYjoKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxh
dGVzL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaC5lcmI6CisgICAgICAgICogU2NyaXB0cy9Q
cmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbEZlYXR1cmVzLmNw
cC5lcmI6CisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJl
bmNlc0dldHRlclNldHRlcnMuY3BwLmVyYjoKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2Vz
VGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzLmNwcC5lcmI6Cisg
ICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0tleXMu
Y3BwLmVyYjoKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZl
cmVuY2VzS2V5cy5oLmVyYjoKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVz
L1dlYlByZWZlcmVuY2VzU3RvcmVEZWZhdWx0c01hcC5jcHAuZXJiOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRC
b29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXREb3Vi
bGVWYWx1ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQz
MlZhbHVlRm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5n
VmFsdWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFs
dWVGb3JLZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVl
Rm9yS2V5KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZv
cktleSk6IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JL
ZXkpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVm
UHJpdmF0ZS5oOgorCiAyMDIwLTEwLTE3ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5j
b20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjE5MTYzNyk6IEZpeCAtV21pc2xlYWRpbmctaW5k
ZW50YXRpb24gd2FybmluZ3MgaW4gb3BlbiBzb3VyY2UgY2xhbmcKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQYWdlVXBkYXRlUHJlZmVyZW5jZXMu
Y3BwLmVyYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNU
ZW1wbGF0ZXMvV2ViUGFnZVVwZGF0ZVByZWZlcmVuY2VzLmNwcC5lcmIJKHJldmlzaW9uIDI2ODY0
OCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQYWdl
VXBkYXRlUHJlZmVyZW5jZXMuY3BwLmVyYgkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKIAorI2luY2x1ZGUg
IldlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc0tl
eXMuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9EZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaD4KQEAgLTQ1LDcgKzQ2LDExIEBAIHZvaWQgV2Vi
UGFnZTo6dXBkYXRlU2V0dGluZ3NHZW5lcmF0ZWQoY28KIDwlLSBpZiBAcHJlZi5jb25kaXRpb24g
LSU+CiAjaWYgPCU9IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KKzwlLSBpZiBAcHJl
Zi5leHBvc2VkIC0lPgogICAgIHNldHRpbmdzLnNldDwlPSBAcHJlZi53ZWJjb3JlTmFtZVVwcGVy
ICU+KHN0b3JlLmdldDwlPSBAcHJlZi50eXBlVXBwZXIgJT5WYWx1ZUZvcktleShXZWJQcmVmZXJl
bmNlc0tleTo6PCU9IEBwcmVmLm5hbWVMb3dlciAlPktleSgpKSk7Cis8JS0gZWxzZSAtJT4KKyAg
ICBzZXR0aW5ncy5zZXQ8JT0gQHByZWYud2ViY29yZU5hbWVVcHBlciAlPihERUZBVUxUX1ZBTFVF
X0ZPUl88JT0gQHByZWYubmFtZSAlPik7Cis8JS0gZW5kIC0lPgogPCUtIGlmIEBwcmVmLmNvbmRp
dGlvbiAtJT4KICNlbmRpZgogPCUtIGVuZCAtJT4KQEAgLTU4LDcgKzYzLDExIEBAIHZvaWQgV2Vi
UGFnZTo6dXBkYXRlUHJlZmVyZW5jZXNHZW5lcmF0ZWQKIDwlLSBpZiBAcHJlZi5jb25kaXRpb24g
LSU+CiAjaWYgPCU9IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KKzwlLSBpZiBAcHJl
Zi5leHBvc2VkIC0lPgogICAgIFdlYkNvcmU6OkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0
PCU9IEBwcmVmLndlYmNvcmVOYW1lVXBwZXIgJT4oc3RvcmUuZ2V0PCU9IEBwcmVmLnR5cGVVcHBl
ciAlPlZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojo8JT0gQHByZWYubmFtZUxvd2VyICU+
S2V5KCkpKTsKKzwlLSBlbHNlIC0lPgorICAgIFdlYkNvcmU6OkRlcHJlY2F0ZWRHbG9iYWxTZXR0
aW5nczo6c2V0PCU9IEBwcmVmLndlYmNvcmVOYW1lVXBwZXIgJT4oREVGQVVMVF9WQUxVRV9GT1Jf
PCU9IEBwcmVmLm5hbWUgJT4pOworPCUtIGVuZCAtJT4KIDwlLSBpZiBAcHJlZi5jb25kaXRpb24g
LSU+CiAjZW5kaWYKIDwlLSBlbmQgLSU+CkBAIC02OCw3ICs3NywxMSBAQCB2b2lkIFdlYlBhZ2U6
OnVwZGF0ZVByZWZlcmVuY2VzR2VuZXJhdGVkCiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0lPgog
I2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBlbmQgLSU+Cis8JS0gaWYgQHByZWYuZXhw
b3NlZCAtJT4KICAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLnNldDwlPSBAcHJlZi53ZWJjb3JlTmFtZVVwcGVyICU+KHN0b3JlLmdldDwlPSBAcHJl
Zi50eXBlVXBwZXIgJT5WYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6PCU9IEBwcmVmLm5h
bWVMb3dlciAlPktleSgpKSk7Cis8JS0gZWxzZSAtJT4KKyAgICBXZWJDb3JlOjpSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldDwlPSBAcHJlZi53ZWJjb3JlTmFtZVVw
cGVyICU+KERFRkFVTFRfVkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+KTsKKzwlLSBlbmQgLSU+
CiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2VuZGlmCiA8JS0gZW5kIC0lPgpJbmRleDog
U291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2Vz
RGVmaW5pdGlvbnMuaC5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL1By
ZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaC5lcmIJKHJldmlz
aW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRl
cy9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmguZXJiCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3
ICs1Niw3IEBACiAvLyBtYWNybyhLZXlVcHBlciwgS2V5TG93ZXIsIFR5cGVOYW1lVXBwZXIsIFR5
cGVOYW1lLCBEZWZhdWx0VmFsdWUsIEh1bWFuUmVhZGFibGVOYW1lLCBIdW1hblJlYWRhYmxlRGVz
Y3JpcHRpb24pCiAKICNkZWZpbmUgRk9SX0VBQ0hfV0VCS0lUX1BSRUZFUkVOQ0UobWFjcm8pIFwK
LTwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzTm90RGVidWcgZG8gLSU+Cis8JS0gZm9yIEBw
cmVmIGluIEBleHBvc2VkUHJlZmVyZW5jZXNOb3REZWJ1ZyBkbyAtJT4KICAgICBtYWNybyg8JT0g
QHByZWYubmFtZSAlPiwgPCU9IEBwcmVmLm5hbWVMb3dlciAlPiwgPCU9IEBwcmVmLnR5cGVVcHBl
ciAlPiwgPCU9IEBwcmVmLnR5cGUgJT4sIERFRkFVTFRfVkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1l
ICU+LCA8JT0gQHByZWYuaHVtYW5SZWFkYWJsZU5hbWUgJT4sIDwlPSBAcHJlZi5odW1hblJlYWRh
YmxlRGVzY3JpcHRpb24gJT4pIFwKIDwlLSBlbmQgLSU+CiAgICAgXApAQCAtNjUsNyArNjUsNyBA
QAogLy8gRGVidWcgUHJlZmVyZW5jZXMKIAogI2RlZmluZSBGT1JfRUFDSF9XRUJLSVRfREVCVUdf
UFJFRkVSRU5DRShtYWNybykgXAotPCUtIGZvciBAcHJlZiBpbiBAcHJlZmVyZW5jZXNEZWJ1ZyBk
byAtJT4KKzwlLSBmb3IgQHByZWYgaW4gQGV4cG9zZWRQcmVmZXJlbmNlc0RlYnVnIGRvIC0lPgog
ICAgIG1hY3JvKDwlPSBAcHJlZi5uYW1lICU+LCA8JT0gQHByZWYubmFtZUxvd2VyICU+LCA8JT0g
QHByZWYudHlwZVVwcGVyICU+LCA8JT0gQHByZWYudHlwZSAlPiwgREVGQVVMVF9WQUxVRV9GT1Jf
PCU9IEBwcmVmLm5hbWUgJT4sIDwlPSBAcHJlZi5odW1hblJlYWRhYmxlTmFtZSAlPiwgPCU9IEBw
cmVmLmh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbiAlPikgXAogPCUtIGVuZCAtJT4KICAgICBcCkBA
IC03Myw3ICs3Myw3IEBACiAvLyBJbnRlcm5hbCBEZWJ1ZyBGZWF0dXJlcwogCiAjZGVmaW5lIEZP
Ul9FQUNIX1dFQktJVF9JTlRFUk5BTF9ERUJVR19GRUFUVVJFX1BSRUZFUkVOQ0UobWFjcm8pIFwK
LTwlLSBmb3IgQHByZWYgaW4gQGludGVybmFsRmVhdHVyZXMgZG8gLSU+Cis8JS0gZm9yIEBwcmVm
IGluIEBleHBvc2VkSW50ZXJuYWxGZWF0dXJlcyBkbyAtJT4KICAgICBtYWNybyg8JT0gQHByZWYu
bmFtZSAlPiwgPCU9IEBwcmVmLm5hbWVMb3dlciAlPiwgQm9vbCwgYm9vbCwgREVGQVVMVF9WQUxV
RV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4sIDwlPSBAcHJlZi5odW1hblJlYWRhYmxlTmFtZSAlPiwg
PCU9IEBwcmVmLmh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbiAlPikgXAogPCUtIGVuZCAtJT4KICAg
IFwKQEAgLTgxLDcgKzgxLDcgQEAKIC8vIEV4cGVyaW1lbnRhbCBGZWF0dXJlcwogCiAjZGVmaW5l
IEZPUl9FQUNIX1dFQktJVF9FWFBFUklNRU5UQUxfRkVBVFVSRV9QUkVGRVJFTkNFKG1hY3JvKSBc
Ci08JS0gZm9yIEBwcmVmIGluIEBleHBlcmltZW50YWxGZWF0dXJlcyBkbyAtJT4KKzwlLSBmb3Ig
QHByZWYgaW4gQGV4cG9zZWRFeHBlcmltZW50YWxGZWF0dXJlcyBkbyAtJT4KICAgICBtYWNybyg8
JT0gQHByZWYubmFtZSAlPiwgPCU9IEBwcmVmLm5hbWVMb3dlciAlPiwgQm9vbCwgYm9vbCwgREVG
QVVMVF9WQUxVRV9GT1JfPCU9IEBwcmVmLm5hbWUgJT4sIDwlPSBAcHJlZi5odW1hblJlYWRhYmxl
TmFtZSAlPiwgPCU9IEBwcmVmLmh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbiAlPikgXAogPCUtIGVu
ZCAtJT4KICAgICBcCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1w
bGF0ZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5jcHAuZXJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVm
ZXJlbmNlc0V4cGVyaW1lbnRhbEZlYXR1cmVzLmNwcC5lcmIJKHJldmlzaW9uIDI2ODY0OCkKKysr
IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNl
c0V4cGVyaW1lbnRhbEZlYXR1cmVzLmNwcC5lcmIJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjb25zdCBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0
Pj4mIFdlYlByZWZlcmVuY2VzOjpleHBlcmltZW50YWxGZWF0dXJlcygpCiB7CiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+Pj4gZmVhdHVyZXMoc3Rk
Ojppbml0aWFsaXplcl9saXN0PFJlZlB0cjxBUEk6Ok9iamVjdD4+IHsKLTwlLSBmb3IgQHByZWYg
aW4gQGV4cGVyaW1lbnRhbEZlYXR1cmVzIGRvIC0lPgorPCUtIGZvciBAcHJlZiBpbiBAZXhwb3Nl
ZEV4cGVyaW1lbnRhbEZlYXR1cmVzIGRvIC0lPgogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4K
ICNpZiA8JT0gQHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgpAQCAtNTgsNyArNTgsNyBA
QCBib29sIFdlYlByZWZlcmVuY2VzOjppc0ZlYXR1cmVFbmFibGVkKGNvCiAgICAgfTsKIAogICAg
IHN0YXRpYyBGZWF0dXJlR2V0dGVyTWFwcGluZyBnZXR0ZXJzW10gPSB7Ci08JS0gZm9yIEBwcmVm
IGluIEBleHBlcmltZW50YWxGZWF0dXJlcyBkbyAtJT4KKzwlLSBmb3IgQHByZWYgaW4gQGV4cG9z
ZWRFeHBlcmltZW50YWxGZWF0dXJlcyBkbyAtJT4KIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+
CiAjaWYgPCU9IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KQEAgLTkyLDcgKzkyLDcg
QEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6c2V0RXhwZXJpbWVudGFsRmVhdAogICAgIH07CiAKICAg
ICBzdGF0aWMgRmVhdHVyZVNldHRlck1hcHBpbmcgc2V0dGVyc1tdID0gewotPCUtIGZvciBAcHJl
ZiBpbiBAZXhwZXJpbWVudGFsRmVhdHVyZXMgZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGluIEBleHBv
c2VkRXhwZXJpbWVudGFsRmVhdHVyZXMgZG8gLSU+CiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0l
PgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBlbmQgLSU+CkBAIC0xMTMsNyArMTEz
LDcgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6c2V0RXhwZXJpbWVudGFsRmVhdAogCiB2b2lkIFdl
YlByZWZlcmVuY2VzOjplbmFibGVBbGxFeHBlcmltZW50YWxGZWF0dXJlcygpCiB7Ci08JS0gZm9y
IEBwcmVmIGluIEBleHBlcmltZW50YWxGZWF0dXJlcyBkbyAtJT4KKzwlLSBmb3IgQHByZWYgaW4g
QGV4cG9zZWRFeHBlcmltZW50YWxGZWF0dXJlcyBkbyAtJT4KIDwlLSBpZiBAcHJlZi5jb25kaXRp
b24gLSU+CiAjaWYgPCU9IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0dl
dHRlclNldHRlcnMuY3BwLmVyYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNHZXR0ZXJTZXR0ZXJzLmNwcC5lcmIJ
KHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1Rl
bXBsYXRlcy9XZWJQcmVmZXJlbmNlc0dldHRlclNldHRlcnMuY3BwLmVyYgkod29ya2luZyBjb3B5
KQpAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotPCUtIGZvciBAcHJl
ZiBpbiAoQHByZWZlcmVuY2VzTm90RGVidWcgKyBAcHJlZmVyZW5jZXNEZWJ1ZykgZG8gLSU+Cis8
JS0gZm9yIEBwcmVmIGluIChAZXhwb3NlZFByZWZlcmVuY2VzTm90RGVidWcgKyBAZXhwb3NlZFBy
ZWZlcmVuY2VzRGVidWcpIGRvIC0lPgogdm9pZCBXZWJQcmVmZXJlbmNlczo6c2V0PCU9IEBwcmVm
Lm5hbWUgJT4oY29uc3QgPCU9IEBwcmVmLnR5cGUgJT4mIHZhbHVlKQogewogICAgIGlmICghbV9z
dG9yZS5zZXQ8JT0gQHByZWYudHlwZVVwcGVyICU+VmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNL
ZXk6OjwlPSBAcHJlZi5uYW1lTG93ZXIgJT5LZXkoKSwgdmFsdWUpKQpAQCAtNTIsNyArNTIsNyBA
QCB2b2lkIFdlYlByZWZlcmVuY2VzOjpkZWxldGU8JT0gQHByZWYubmFtCiAKIDwlLSBlbmQgLSU+
CiAKLTwlLSBmb3IgQHByZWYgaW4gQGV4cGVyaW1lbnRhbEZlYXR1cmVzIGRvIC0lPgorPCUtIGZv
ciBAcHJlZiBpbiBAZXhwb3NlZEV4cGVyaW1lbnRhbEZlYXR1cmVzIGRvIC0lPgogdm9pZCBXZWJQ
cmVmZXJlbmNlczo6c2V0PCU9IEBwcmVmLm5hbWUgJT4oY29uc3QgYm9vbCYgdmFsdWUpCiB7CiAg
ICAgaWYgKCFtX3N0b3JlLnNldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6PCU9
IEBwcmVmLm5hbWVMb3dlciAlPktleSgpLCB2YWx1ZSkpCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQg
V2ViUHJlZmVyZW5jZXM6OmRlbGV0ZTwlPSBAcHJlZi5uYW0KIAogPCUtIGVuZCAtJT4KIAotPCUt
IGZvciBAcHJlZiBpbiBAaW50ZXJuYWxGZWF0dXJlcyBkbyAtJT4KKzwlLSBmb3IgQHByZWYgaW4g
QGV4cG9zZWRJbnRlcm5hbEZlYXR1cmVzIGRvIC0lPgogdm9pZCBXZWJQcmVmZXJlbmNlczo6c2V0
PCU9IEBwcmVmLm5hbWUgJT4oY29uc3QgYm9vbCYgdmFsdWUpCiB7CiAgICAgaWYgKCFtX3N0b3Jl
LnNldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6PCU9IEBwcmVmLm5hbWVMb3dl
ciAlPktleSgpLCB2YWx1ZSkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5j
ZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbERlYnVnRmVhdHVyZXMuY3BwLmVyYgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
V2ViUHJlZmVyZW5jZXNJbnRlcm5hbERlYnVnRmVhdHVyZXMuY3BwLmVyYgkocmV2aXNpb24gMjY4
NjQ4KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlBy
ZWZlcmVuY2VzSW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzLmNwcC5lcmIJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjb25zdCBWZWN0b3I8UmVmUHRyPEFQ
STo6T2JqZWN0Pj4mIFdlYlByZWZlcmVuY2VzOjppbnRlcm5hbERlYnVnRmVhdHVyZXMoKQogewog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4+IGZl
YXR1cmVzKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxSZWZQdHI8QVBJOjpPYmplY3Q+PiB7Ci08JS0g
Zm9yIEBwcmVmIGluIEBpbnRlcm5hbEZlYXR1cmVzIGRvIC0lPgorPCUtIGZvciBAcHJlZiBpbiBA
ZXhwb3NlZEludGVybmFsRmVhdHVyZXMgZG8gLSU+CiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0l
PgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBlbmQgLSU+CkBAIC01OCw3ICs1OCw3
IEBAIGJvb2wgV2ViUHJlZmVyZW5jZXM6OmlzRmVhdHVyZUVuYWJsZWQoY28KICAgICB9OwogCiAg
ICAgc3RhdGljIEZlYXR1cmVHZXR0ZXJNYXBwaW5nIGdldHRlcnNbXSA9IHsKLTwlLSBmb3IgQHBy
ZWYgaW4gQGludGVybmFsRmVhdHVyZXMgZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGluIEBleHBvc2Vk
SW50ZXJuYWxGZWF0dXJlcyBkbyAtJT4KIDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYg
PCU9IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtIGVuZCAtJT4KQEAgLTkyLDcgKzkyLDcgQEAgdm9p
ZCBXZWJQcmVmZXJlbmNlczo6c2V0SW50ZXJuYWxEZWJ1Z0ZlYQogICAgIH07CiAKICAgICBzdGF0
aWMgRmVhdHVyZVNldHRlck1hcHBpbmcgc2V0dGVyc1tdID0gewotPCUtIGZvciBAcHJlZiBpbiBA
aW50ZXJuYWxGZWF0dXJlcyBkbyAtJT4KKzwlLSBmb3IgQHByZWYgaW4gQGV4cG9zZWRJbnRlcm5h
bEZlYXR1cmVzIGRvIC0lPgogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHBy
ZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgV2Vi
UHJlZmVyZW5jZXM6OnNldEludGVybmFsRGVidWdGZWEKIAogdm9pZCBXZWJQcmVmZXJlbmNlczo6
cmVzZXRBbGxJbnRlcm5hbERlYnVnRmVhdHVyZXMoKQogewotPCUtIGZvciBAcHJlZiBpbiBAaW50
ZXJuYWxGZWF0dXJlcyBkbyAtJT4KKzwlLSBmb3IgQHByZWYgaW4gQGV4cG9zZWRJbnRlcm5hbEZl
YXR1cmVzIGRvIC0lPgogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYu
Y29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL1By
ZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzS2V5cy5jcHAuZXJiCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJl
bmNlc0tleXMuY3BwLmVyYgkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdC9TY3Jp
cHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzS2V5cy5jcHAuZXJiCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFj
ZSBXZWJQcmVmZXJlbmNlc0tleSB7CiAKLTwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzIGRv
IC0lPgorPCUtIGZvciBAcHJlZiBpbiBAZXhwb3NlZFByZWZlcmVuY2VzIGRvIC0lPgogY29uc3Qg
U3RyaW5nJiA8JT0gQHByZWYubmFtZUxvd2VyICU+S2V5KCkKIHsKICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8U3RyaW5nPiBrZXkoTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIjwlPSBAcHJlZi5u
YW1lICU+IikpOwpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxh
dGVzL1dlYlByZWZlcmVuY2VzS2V5cy5oLmVyYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNLZXlzLmguZXJiCShy
ZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1w
bGF0ZXMvV2ViUHJlZmVyZW5jZXNLZXlzLmguZXJiCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICsz
Miw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBXZWJQcmVmZXJlbmNlc0tleSB7
CiAKLTwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzIGRvIC0lPgorPCUtIGZvciBAcHJlZiBp
biBAZXhwb3NlZFByZWZlcmVuY2VzIGRvIC0lPgogY29uc3QgU3RyaW5nJiA8JT0gQHByZWYubmFt
ZUxvd2VyICU+S2V5KCk7CiA8JS0gZW5kIC0lPgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1Njcmlw
dHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNTdG9yZURlZmF1bHRzTWFwLmNw
cC5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL1ByZWZlcmVuY2VzVGVt
cGxhdGVzL1dlYlByZWZlcmVuY2VzU3RvcmVEZWZhdWx0c01hcC5jcHAuZXJiCShyZXZpc2lvbiAy
Njg2NDgpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2Vi
UHJlZmVyZW5jZXNTdG9yZURlZmF1bHRzTWFwLmNwcC5lcmIJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDcgKzQ4LDcgQEAgV2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFsdWVNYXAmIFdlYlByZWZlcgogewog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWYWx1ZU1hcD4gZGVmYXVsdHM7CiAgICAgaWYgKGRl
ZmF1bHRzLmdldCgpLmlzRW1wdHkoKSkgewotPCUtIGZvciBAcHJlZiBpbiBAcHJlZmVyZW5jZXMg
ZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGluIEBleHBvc2VkUHJlZmVyZW5jZXMgZG8gLSU+CiA8JS0g
aWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2lmIDwlPSBAcHJlZi5jb25kaXRpb24gJT4KIDwlLSBl
bmQgLSU+CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2Vz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZl
cmVuY2VzLmNwcAkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDIyICs3OCwyMiBA
QCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRJbnRlcm5hbERlYnVnRmVhdHVyCiAgICAgdG9JbXBsKHBy
ZWZlcmVuY2VzUmVmKS0+c2V0SW50ZXJuYWxEZWJ1Z0ZlYXR1cmVFbmFibGVkRm9yS2V5KHRvV1RG
U3RyaW5nKGludGVybmFsRGVidWdGZWF0dXJlS2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdLUHJl
ZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1Jl
ZiwgYm9vbCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9v
bFZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBi
b29sIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVm
KS0+c2V0Qm9vbFZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAotdm9p
ZCBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVm
ZXJlbmNlc1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdLUHJlZmVy
ZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVm
ZXJlbmNlc1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBs
KHByZWZlcmVuY2VzUmVmKS0+c2V0Qm9vbFZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHZh
bHVlKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXkoV0tQcmVm
ZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtl
eSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYg
a2V5KQogewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldFVJbnQzMlZhbHVlRm9yS2V5
KHRvV1RGU3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3Ry
aW5nVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdS
ZWYgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1Zh
bHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBXS1N0
cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJlbmNl
c1JlZiktPnNldFN0cmluZ1ZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHRvV1RGU3RyaW5n
KHZhbHVlKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZl
cmVuY2VzUmVmUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU2LDEwICs1NiwxMCBAQCBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVu
Y2VzUmVzZXRBbGxJbnRlCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0SW50ZXJuYWxE
ZWJ1Z0ZlYXR1cmVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiwgYm9vbCwgV0tTdHJpbmdSZWYpOwog
CiAvLyBUaGUgZm9sbG93aW5nIGdlbmVyaWMgc2V0dGVyIGZ1bmN0aW9ucyBhcmUgb25seSBpbnRl
bmRlZCBmb3IgdXNlIGJ5IHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUuCi1XS19FWFBPUlQgdm9pZCBX
S1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5j
ZXNSZWYsIGJvb2wgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7Ci1XS19FWFBPUlQgdm9pZCBXS1By
ZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNl
c1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQ
cmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5j
ZXNSZWYsIHVpbnQzMl90IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQg
V0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVy
ZW5jZXNSZWYsIFdLU3RyaW5nUmVmIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JU
IHZvaWQgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKK1dL
X0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3Rpbmco
V0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0cmluZ1Jl
ZiBrZXkpOworV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5
Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1aW50MzJfdCB2YWx1
ZSwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRTdHJp
bmdWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwg
V0tTdHJpbmdSZWYgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7CiAKIC8vIEZvciBUZXN0IFJ1bm5l
ciBVc2Ugb25seS4KIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNSZXNldFRlc3RSdW5uZXJP
dmVycmlkZXMoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg2NjApCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMSBAQAorMjAyMC0x
MC0xOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1Rlc3Rpbmdd
IENvbnZlcnQgRHVtcFJlbmRlclRyZWUgdG8gdXNlIGdlbmVyYXRlZCB0ZXN0IGhlYWRlciBvcHRp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc4
ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBv
c2UgYSBzZXQgb2Ygc2V0dGVycyB0byBmb3IgRHVtcFJlbmRlclRyZWUgdG8gdXNlIHdoZW4gc2V0
dGluZyBwcmVmZXJlbmNlcworICAgICAgICBieSBzdHJpbmcuCisKKyAgICAgICAgVXBkYXRlIHRv
IHVzZSBuZXcgImV4cG9zZWQiIHByZWZpeCBiaW5kaW5ncyBhbmQgdXNlIGRlZmF1bHQgdmFsdWUg
ZXhwbGljaXRseQorICAgICAgICB3aGVuIHVwZGF0aW5nIHNldHRpbmdzIGZvciBub24tZXhwb3Nl
ZCBwcmVmZXJlbmNlcy4KKworICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
V2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oLmVyYjoKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZl
cmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsRmVhdHVyZXMubW0uZXJi
OgorICAgICAgICAqIFNjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2ViUHJlZmVyZW5jZXNJ
bnRlcm5hbEZlYXR1cmVzLm1tLmVyYjoKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzVGVt
cGxhdGVzL1dlYlZpZXdQcmVmZXJlbmNlc0NoYW5nZWRHZW5lcmF0ZWQubW0uZXJiOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVuY2Vz
IF9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbl0pOgorICAgICAgICAoK1tX
ZWJQcmVmZXJlbmNlcyBfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0
UG9saWN5Ol0pOgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBfY2xlYXJOZXR3b3JrTG9hZGVy
U2Vzc2lvbl0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0Qm9vbFByZWZlcmVuY2VG
b3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMg
X3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleTpdKToKKyAgICAg
ICAgKC1bV2ViUHJlZmVyZW5jZXMgX3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZh
bHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgX3NldFN0cmluZ1ByZWZl
cmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJlZmVy
ZW5jZXMgX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZhbHVlOmZvcktleTpdKTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oOgorCiAyMDIwLTEwLTE3
ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lP
TiAocjI1NDMwKTogRml4IC1Xc3RyaW5nLWNvbmNhdGVuYXRpb24gd2FybmluZyBmcm9tIG9wZW4g
c291cmNlIGNsYW5nCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TY3JpcHRzL1ByZWZl
cmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaC5lcmIKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRl
cy9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmguZXJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlBy
ZWZlcmVuY2VzRGVmaW5pdGlvbnMuaC5lcmIJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcg
QEAKIAogLy8gRGVmYXVsdCBpbml0aWFsaXphdGlvbiBvZiBXZWJQcmVmZXJlbmNlcycgaW50ZXJu
YWwgZGljdGlvbmFyeS4KIAotPCUtIGZvciBAcHJlZiBpbiBAcHJlZmVyZW5jZXMgZG8gLSU+Cis8
JS0gZm9yIEBwcmVmIGluIEBleHBvc2VkUHJlZmVyZW5jZXMgZG8gLSU+CiA8JS0gICBpZiBAcHJl
Zi5jb25kaXRpb24gLSU+CiAjaWYgPCU9IEBwcmVmLmNvbmRpdGlvbiAlPgogPCUtICAgZW5kIC0l
PgpAQCAtNzEsNyArNzEsNyBAQAogPCUtIGVuZCAtJT4KIAogI2RlZmluZSBJTklUSUFMSVpFX0RF
RkFVTFRfUFJFRkVSRU5DRVNfRElDVElPTkFSWV9GUk9NX0dFTkVSQVRFRF9QUkVGRVJFTkNFUyBc
Ci08JS0gZm9yIEBwcmVmIGluIEBwcmVmZXJlbmNlcyBkbyAtJT4KKzwlLSBmb3IgQHByZWYgaW4g
QGV4cG9zZWRQcmVmZXJlbmNlcyBkbyAtJT4KICAgICAgSU5JVElBTElaRV9ERUZBVUxUX1BSRUZF
UkVOQ0VTX0ZPUl88JT0gQHByZWYubmFtZSAlPiBcCiA8JS0gZW5kIC0lPgogICAgIFwKSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvV2Vi
UHJlZmVyZW5jZXNFeHBlcmltZW50YWxGZWF0dXJlcy5tbS5lcmIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVm
ZXJlbmNlc0V4cGVyaW1lbnRhbEZlYXR1cmVzLm1tLmVyYgkocmV2aXNpb24gMjY4NjQ4KQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQ
cmVmZXJlbmNlc0V4cGVyaW1lbnRhbEZlYXR1cmVzLm1tLmVyYgkod29ya2luZyBjb3B5KQpAQCAt
MzcsNyArMzcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogKyAoTlNBcnJheTxXZWJGZWF0
dXJlICo+ICopX2V4cGVyaW1lbnRhbEZlYXR1cmVzCiB7CiAgICAgc3RhdGljIE5TQXJyYXk8V2Vi
RmVhdHVyZSAqPiAqZmVhdHVyZXMgPSBAWwotPCUtIGZvciBAcHJlZiBpbiBAZXhwZXJpbWVudGFs
RmVhdHVyZXMgZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGluIEBleHBvc2VkRXhwZXJpbWVudGFsRmVh
dHVyZXMgZG8gLSU+CiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2lmIDwlPSBAcHJlZi5j
b25kaXRpb24gJT4KIDwlLSBlbmQgLSU+CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9T
Y3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxGZWF0dXJl
cy5tbS5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU2NyaXB0cy9Q
cmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsRmVhdHVyZXMubW0uZXJi
CShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TY3JpcHRzL1By
ZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWxGZWF0dXJlcy5tbS5lcmIJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
ICsgKE5TQXJyYXk8V2ViRmVhdHVyZSAqPiAqKV9pbnRlcm5hbEZlYXR1cmVzCiB7CiAgICAgc3Rh
dGljIE5TQXJyYXk8V2ViRmVhdHVyZSAqPiAqZmVhdHVyZXMgPSBAWwotPCUtIGZvciBAcHJlZiBp
biBAaW50ZXJuYWxGZWF0dXJlcyBkbyAtJT4KKzwlLSBmb3IgQHByZWYgaW4gQGV4cG9zZWRJbnRl
cm5hbEZlYXR1cmVzIGRvIC0lPgogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0g
QHByZWYuY29uZGl0aW9uICU+CiA8JS0gZW5kIC0lPgpJbmRleDogU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9XZWJWaWV3UHJlZmVyZW5jZXNDaGFu
Z2VkR2VuZXJhdGVkLm1tLmVyYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlZpZXdQcmVmZXJlbmNlc0NoYW5nZWRH
ZW5lcmF0ZWQubW0uZXJiCShyZXZpc2lvbiAyNjg2NDgpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1dlYlZpZXdQcmVmZXJlbmNlc0NoYW5n
ZWRHZW5lcmF0ZWQubW0uZXJiCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNp
bXBvcnQgIldlYlZpZXdJbnRlcm5hbC5oIgogCisjaW1wb3J0ICJXZWJQcmVmZXJlbmNlc0RlZmlu
aXRpb25zLmgiCiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNlc0ludGVybmFsLmgiCiAjaW1wb3J0ICJX
ZWJWaWV3RGF0YS5oIgogI2ltcG9ydCA8V2ViQ29yZS9EZXByZWNhdGVkR2xvYmFsU2V0dGluZ3Mu
aD4KQEAgLTQwLDMxICs0MSw0MyBAQAogewogICAgIGF1dG8mIHNldHRpbmdzID0gX3ByaXZhdGUt
PnBhZ2UtPnNldHRpbmdzKCk7CiAKLTwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzQm91bmRU
b1NldHRpbmcgZG8gLSU+Cis8JS0gZm9yIEBwcmVmIGluIEBwcmVmZXJlbmNlc0JvdW5kVG9TZXR0
aW5nLnNlbGVjdCB7IHxwfCAhcC5vcHRzWyJ3ZWJLaXRMZWdhY3lCaW5kaW5nIl0gfSBkbyAtJT4K
IDwlLSBpZiBAcHJlZi5jb25kaXRpb24gLSU+CiAjaWYgPCU9IEBwcmVmLmNvbmRpdGlvbiAlPgog
PCUtIGVuZCAtJT4KKzwlLSBpZiBAcHJlZi5leHBvc2VkIC0lPgogICAgIHNldHRpbmdzLnNldDwl
PSBAcHJlZi53ZWJjb3JlTmFtZVVwcGVyICU+KFtwcmVmZXJlbmNlcyA8JT0gQHByZWYucHJlZmVy
ZW5jZUFjY2Vzc29yICU+OkAiPCU9IEBwcmVmLnByZWZlcmVuY2VLZXkgJT4iXSk7Cis8JS0gZWxz
ZSAtJT4KKyAgICBzZXR0aW5ncy5zZXQ8JT0gQHByZWYud2ViY29yZU5hbWVVcHBlciAlPihERUZB
VUxUX1ZBTFVFX0ZPUl88JT0gQHByZWYubmFtZSAlPik7Cis8JS0gZW5kIC0lPgogPCUtIGlmIEBw
cmVmLmNvbmRpdGlvbiAtJT4KICNlbmRpZgogPCUtIGVuZCAtJT4KIDwlLSBlbmQgLSU+CiAKLTwl
LSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzQm91bmRUb0RlcHJlY2F0ZWRHbG9iYWxTZXR0aW5n
cyBkbyAtJT4KKzwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzQm91bmRUb0RlcHJlY2F0ZWRH
bG9iYWxTZXR0aW5ncy5zZWxlY3QgeyB8cHwgIXAub3B0c1sid2ViS2l0TGVnYWN5QmluZGluZyJd
IH0gZG8gLSU+CiA8JS0gaWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2lmIDwlPSBAcHJlZi5jb25k
aXRpb24gJT4KIDwlLSBlbmQgLSU+Cis8JS0gaWYgQHByZWYuZXhwb3NlZCAtJT4KICAgICBXZWJD
b3JlOjpEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldDwlPSBAcHJlZi53ZWJjb3JlTmFtZVVw
cGVyICU+KFtwcmVmZXJlbmNlcyA8JT0gQHByZWYucHJlZmVyZW5jZUFjY2Vzc29yICU+OkAiPCU9
IEBwcmVmLnByZWZlcmVuY2VLZXkgJT4iXSk7Cis8JS0gZWxzZSAtJT4KKyAgICBXZWJDb3JlOjpE
ZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldDwlPSBAcHJlZi53ZWJjb3JlTmFtZVVwcGVyICU+
KERFRkFVTFRfVkFMVUVfRk9SXzwlPSBAcHJlZi5uYW1lICU+KTsKKzwlLSBlbmQgLSU+CiA8JS0g
aWYgQHByZWYuY29uZGl0aW9uIC0lPgogI2VuZGlmCiA8JS0gZW5kIC0lPgogPCUtIGVuZCAtJT4K
IAotPCUtIGZvciBAcHJlZiBpbiBAcHJlZmVyZW5jZXNCb3VuZFRvUnVudGltZUVuYWJsZWRGZWF0
dXJlcyBkbyAtJT4KKzwlLSBmb3IgQHByZWYgaW4gQHByZWZlcmVuY2VzQm91bmRUb1J1bnRpbWVF
bmFibGVkRmVhdHVyZXMuc2VsZWN0IHsgfHB8ICFwLm9wdHNbIndlYktpdExlZ2FjeUJpbmRpbmci
XSB9IGRvIC0lPgogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNpZiA8JT0gQHByZWYuY29u
ZGl0aW9uICU+CiA8JS0gZW5kIC0lPgorPCUtIGlmIEBwcmVmLmV4cG9zZWQgLSU+CiAgICAgV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXQ8JT0gQHBy
ZWYud2ViY29yZU5hbWVVcHBlciAlPihbcHJlZmVyZW5jZXMgPCU9IEBwcmVmLnByZWZlcmVuY2VB
Y2Nlc3NvciAlPjpAIjwlPSBAcHJlZi5wcmVmZXJlbmNlS2V5ICU+Il0pOworPCUtIGVsc2UgLSU+
CisgICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5z
ZXQ8JT0gQHByZWYud2ViY29yZU5hbWVVcHBlciAlPihERUZBVUxUX1ZBTFVFX0ZPUl88JT0gQHBy
ZWYubmFtZSAlPik7Cis8JS0gZW5kIC0lPgogPCUtIGlmIEBwcmVmLmNvbmRpdGlvbiAtJT4KICNl
bmRpZgogPCUtIGVuZCAtJT4KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViUHJlZmVyZW5jZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkocmV2aXNpb24gMjY4NjQ4KQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTY2MCwyNiArMTY2MCw2IEBAICsgKHZvaWQpX3NldElCQ3JlYXRvcklEOihOU1N0cmluZyAq
KXN0cmkKICAgICBbb2xkIHJlbGVhc2VdOwogfQogCi0rICh2b2lkKV9zd2l0Y2hOZXR3b3JrTG9h
ZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbgotewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
V2ViVGhyZWFkTG9jaygpOwotI2VuZGlmCi0gICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpz
d2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7Ci19Ci0KLSsgKHZvaWQpX2NsZWFyTmV0d29ya0xv
YWRlclNlc3Npb24KLXsKLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1bHRTdG9y
YWdlU2Vzc2lvbigpLmRlbGV0ZUFsbENvb2tpZXMoKTsKLX0KLQotKyAodm9pZClfc2V0Q3VycmVu
dE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2Nl
cHRQb2xpY3kpcG9saWN5Ci17Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+
IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7IC8v
IFdpbGwgZmFpbCB3aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdUZXN0
aW5nU2Vzc2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhhbmQuCi0gICAgQ0ZIVFRQQ29va2ll
U3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBwb2xpY3kp
OwotfQotCiAtIChCT09MKWlzRE9NUGFzdGVBbGxvd2VkCiB7CiAgICAgcmV0dXJuIFtzZWxmIF9i
b29sVmFsdWVGb3JLZXk6V2ViS2l0RE9NUGFzdGVBbGxvd2VkUHJlZmVyZW5jZUtleV07CkBAIC0x
OTY2LDExICsxOTQ2LDYgQEAgLSAodm9pZCl3aWxsQWRkVG9XZWJWaWV3CiAgICAgKytfcHJpdmF0
ZS0+bnVtV2ViVmlld3M7CiB9CiAKLS0gKHZvaWQpX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZh
bHVlOihOU1N0cmluZyAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKLXsKLSAgICBbc2Vs
ZiBfc2V0U3RyaW5nVmFsdWU6dmFsdWUgZm9yS2V5OmtleV07Ci19Ci0KIC0gKHZvaWQpc2V0RnVs
bFNjcmVlbkVuYWJsZWQ6KEJPT0wpZmxhZwogewogICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6Zmxh
ZyBmb3JLZXk6V2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5XTsKQEAgLTMwMTMs
NiArMjk4OCw1MSBAQCAtICh2b2lkKV9zZXRFbmFibGVkOihCT09MKXZhbHVlIGZvckZlYXR1CiAK
IEBlbmQKIAorCitAaW1wbGVtZW50YXRpb24gV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGVUZXN0
aW5nKQorCisrICh2b2lkKV9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbgor
eworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgV2ViVGhyZWFkTG9jaygpOworI2VuZGlm
CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9u
KCk7Cit9CisKKysgKHZvaWQpX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFj
Y2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeQoreworICAgIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCk7Cisg
ICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90IGNhbGxlZCBi
ZWZvcmVoYW5kLgorICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3ko
Y29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKK30KKworKyAodm9pZClfY2xlYXJOZXR3b3Jr
TG9hZGVyU2Vzc2lvbgoreworICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0
b3JhZ2VTZXNzaW9uKCkuZGVsZXRlQWxsQ29va2llcygpOworfQorCistICh2b2lkKV9zZXRCb29s
UHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KEJPT0wpdmFsdWUgZm9yS2V5OihOU1N0cmlu
ZyAqKWtleQoreworICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6dmFsdWUgZm9yS2V5OmtleV07Cit9
CisKKy0gKHZvaWQpX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOih1aW50
MzJfdCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5Cit7CisgICAgW3NlbGYgX3NldEludGVn
ZXJWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAodm9pZClfc2V0RG91YmxlUHJlZmVy
ZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KGRvdWJsZSl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICop
a2V5Cit7CisgICAgW3NlbGYgX3NldEZsb2F0VmFsdWU6dmFsdWUgZm9yS2V5OmtleV07Cit9CisK
Ky0gKHZvaWQpX3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihOU1N0cmlu
ZyAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2VsZiBfc2V0U3RyaW5n
VmFsdWU6dmFsdWUgZm9yS2V5OmtleV07Cit9CisKK0BlbmQKKwogQGltcGxlbWVudGF0aW9uIFdl
YlByZWZlcmVuY2VzIChXZWJQcml2YXRlUHJlZmVyZW5jZXNDb252ZXJ0ZWRUb1dlYkZlYXR1cmUp
CiAKIC0gKEJPT0wpdXNlckdlc3R1cmVQcm9taXNlUHJvcGFnYXRpb25FbmFibGVkCkluZGV4OiBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5j
ZXNQcml2YXRlLmgJKHJldmlzaW9uIDI2ODY0OCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDEz
ICs4OSw2IEBAIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGUpCiArICh2b2lk
KV9zZXRJbml0aWFsRGVmYXVsdFRleHRFbmNvZGluZ1RvU3lzdGVtRW5jb2Rpbmc7CiArICh2b2lk
KV9zZXRJQkNyZWF0b3JJRDooTlNTdHJpbmcgKilzdHJpbmc7CiAKLS8vIEZvciBEdW1wUmVuZGVy
VHJlZSB1c2Ugb25seS4KLSsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdT
ZXNzaW9uOwotKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNj
ZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpY29va2llQWNjZXB0UG9saWN5Owot
KyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbjsKLS8vIFVzZWQgdG8gc2V0IHByZWZl
cmVuY2Ugc3BlY2lmaWVkIGluIHRoZSB0ZXN0IHZpYSBMYXlvdXRUZXN0Q29udHJvbGxlci5vdmVy
cmlkZVByZWZlcmVuY2UoLi4pLgotLSAodm9pZClfc2V0UHJlZmVyZW5jZUZvclRlc3RXaXRoVmFs
dWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKLQogKyAodm9pZClz
ZXRXZWJLaXRMaW5rVGltZVZlcnNpb246KGludCl2ZXJzaW9uOwogCiAvLyBGb3IgV2ViVmlldydz
IHVzZSBvbmx5LgpAQCAtMzEwLDYgKzMwMywxOCBAQCBAaW50ZXJmYWNlIFdlYlByZWZlcmVuY2Vz
IChXZWJQcml2YXRlRmVhCiAtICh2b2lkKV9zZXRFbmFibGVkOihCT09MKXZhbHVlIGZvckZlYXR1
cmU6KFdlYkZlYXR1cmUgKilmZWF0dXJlOwogQGVuZAogCitAaW50ZXJmYWNlIFdlYlByZWZlcmVu
Y2VzIChXZWJQcml2YXRlVGVzdGluZykKKysgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05l
d1Rlc3RpbmdTZXNzaW9uOworKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9u
Q29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpY29va2llQWNjZXB0
UG9saWN5OworKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbjsKKworLSAodm9pZClf
c2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihCT09MKXZhbHVlIGZvcktleToo
TlNTdHJpbmcgKilrZXk7CistICh2b2lkKV9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dp
dGhWYWx1ZToodWludDMyX3QpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZvaWQp
X3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihkb3VibGUpdmFsdWUgZm9y
S2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZvaWQpX3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0
aW5nV2l0aFZhbHVlOihOU1N0cmluZyAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXk7CisK
K0BlbmQKKwogLy8gRklYTUU6IElmIHRoZXNlIGFyZSBub3QgdXNlZCBhbnl3aGVyZSwgd2Ugc2hv
dWxkIHJlbW92ZSB0aGVtIGFuZCBvbmx5IHVzZSBXZWJGZWF0dXJlIG1lY2hhbmlzbSBmb3IgdGhl
IHByZWZlcmVuY2UuCiBAaW50ZXJmYWNlIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlUHJlZmVy
ZW5jZXNDb252ZXJ0ZWRUb1dlYkZlYXR1cmUpCiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCB1
c2VyR2VzdHVyZVByb21pc2VQcm9wYWdhdGlvbkVuYWJsZWQ7CkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg2NjApCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNjggQEAKKzIwMjAtMTAt
MTggIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFtUZXN0aW5nXSBD
b252ZXJ0IER1bXBSZW5kZXJUcmVlIHRvIHVzZSBnZW5lcmF0ZWQgdGVzdCBoZWFkZXIgb3B0aW9u
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3ODgw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EZXJp
dmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L0Rlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRl
clRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5o
LmVyYjoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxh
dGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiOiBB
ZGRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHA6CisgICAgICAg
IChXVFI6OlRlc3RPcHRpb25zOjpkZWZhdWx0cyk6CisgICAgICAgIChXVFI6OlRlc3RPcHRpb25z
Ojp3ZWJWaWV3SXNDb21wYXRpYmxlV2l0aE9wdGlvbnMgY29uc3QpOgorICAgICAgICAoV1RSOjpm
ZWF0dXJlVmFsdWUpOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6Ym9vbFRlc3RSdW5uZXJG
ZWF0dXJlVmFsdWUgY29uc3QpOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6c3RyaW5nVGVz
dFJ1bm5lckZlYXR1cmVWYWx1ZSBjb25zdCk6CisgICAgICAgIChXVFI6OnNldFZhbHVlSWZTZXRJ
bk1hcCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlRlc3RPcHRpb25zOjpUZXN0T3B0aW9ucyk6
IERlbGV0ZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuaDoKKyAgICAg
ICAgKFdUUjo6VGVzdE9wdGlvbnM6OlRlc3RPcHRpb25zKToKKyAgICAgICAgKFdUUjo6VGVzdE9w
dGlvbnM6OmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciBjb25zdCk6CisgICAgICAgIChXVFI6OlRl
c3RPcHRpb25zOjplbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkIGNvbnN0KToKKyAgICAg
ICAgKFdUUjo6VGVzdE9wdGlvbnM6OmxheWVyQmFja2VkV2ViVmlldyBjb25zdCk6CisgICAgICAg
IChXVFI6OlRlc3RPcHRpb25zOjp1c2VFcGhlbWVyYWxTZXNzaW9uIGNvbnN0KToKKyAgICAgICAg
KFdUUjo6VGVzdE9wdGlvbnM6OmFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzIGNvbnN0KToK
KyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6OmpzY09wdGlvbnMgY29uc3QpOgorICAgICAgICAo
V1RSOjpUZXN0T3B0aW9uczo6Ym9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyBjb25zdCk6CisgICAg
ICAgIChXVFI6OlRlc3RPcHRpb25zOjpkb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMgY29uc3Qp
OgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6dWludDMyV2ViUHJlZmVyZW5jZUZlYXR1cmVz
IGNvbnN0KToKKyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6OnN0cmluZ1dlYlByZWZlcmVuY2VG
ZWF0dXJlcyBjb25zdCk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHRvTlMpOgorICAgICAgICAo
LVtTY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlIHZpZXc6ZGlkU2V0RnJhbWU6b2xkRnJhbWU6YXNS
ZXN1bHRPZlpvb206XSk6CisgICAgICAgIChzaG91bGRJZ25vcmVXZWJDb3JlTm9kZUxlYWtzKToK
KyAgICAgICAgKC1bRFJUTW9ja1Njcm9sbGVyIHJlY3RGb3JQYXJ0Ol0pOgorICAgICAgICAoY3Jl
YXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdyk6CisgICAgICAgIChlbmFibGVFeHBlcmltZW50
YWxGZWF0dXJlcyk6CisgICAgICAgIChyZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFs
dWVzKToKKyAgICAgICAgKHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMpOgorICAgICAg
ICAoc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXNGb3JUZXN0aW5nKToKKyAgICAgICAgKGR1
bXBBdWRpbyk6CisgICAgICAgIChzaXplV2ViVmlld0ZvckN1cnJlbnRUZXN0KToKKyAgICAgICAg
KHNldEpTQ09wdGlvbnMpOgorICAgICAgICAocmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGUp
OgorICAgICAgICAodGVzdE9wdGlvbnNGb3JUZXN0KToKKyAgICAgICAgKHJ1blRlc3QpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgorICAgICAgICAoVGVz
dFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKToKKyAgICAgICAgKFRlc3RSdW5uZXI6
OnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24pOgorICAgICAgICAoVGVzdFJ1bm5lcjo6b3ZlcnJp
ZGVQcmVmZXJlbmNlKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldENhY2hlTW9kZWwpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tOgorICAgICAgICAoLVtVSURl
bGVnYXRlIHJlc2V0VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nOl0pOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChyZXNldFdl
YlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKGJvb2xXZWJQcmVmZXJl
bmNlRmVhdHVyZVZhbHVlKToKKyAgICAgICAgKHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlv
bnMpOgorICAgICAgICAoc2V0SlNDT3B0aW9ucyk6CisgICAgICAgICh0ZXN0T3B0aW9uc0ZvclRl
c3QpOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9TY3Jp
cHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYjoK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMp
OgorCisyMDIwLTEwLTE3ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAg
ICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVuZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3Qg
aGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEZ1bGx5IHN1cHBvcnQgdXNlIG9mIGFueSBXZWJQcmVmZXJlbmNlcyoueWFtbCBwcmVm
ZXJlbmNlIGluIER1bXBSZW5kZXJUcmVlIChmb3IgbWFjT1MpIGJ5OgorICAgICAgICAgICAgLSBN
b3ZpbmcgRHVtcFJlbmRlclRyZWUncyBUZXN0T3B0aW9ucyB0byBiZSBmdWxseSBiYWNrZWQgYnkg
VGVzdEZlYXR1cmVzIGxpa2UgV2ViS2l0VGVzdFJ1bm5uZXIuCisgICAgICAgICAgICAtIEFkb3B0
aW5nIG5ldyBXZWJQcmVmZXJlbmNlcyBTUEkgZm9yIHNldHRpbmcgYW55IHByZWZlcmVuY2UgYnkg
a2V5LgorICAgICAgICAgICAgLSBHZW5lcmF0aW5nIG1hcHBpbmcgZnJvbSBXZWJQcmVmZXJlbmNl
cyoueWFtbCB0byBXZWJLaXRMZWdhY3kga2V5IG5hbWVzLgorCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgIEdlbmVyYXRlIFRlc3RPcHRpb25zR2VuZXJh
dGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgIEFkZCBuZXcgdGVtcGxh
dGUgZmlsZSwgVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5l
cmIsIGFuZCBhZGQKKyAgICAgICAgRGVyaXZlZFNvdXJjZXMubWFrZSBhbmQgZ2VuZXJhdGUtZGVy
aXZlZC1zb3VyY2VzLnNoLCBzbyB0aGF0IGlmIGVpdGhlciBvZiB0aGVtIGNoYW5nZQorICAgICAg
ICB0aGUgRGVyaXZlZFNvdXJjZXMubWFrZSBpcyBhY3R1YWxseSBpbnZva2VkLgorIAorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAg
ICAgICBBZGRzIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAu
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAg
ICBTd2l0Y2ggZ2VuZXJhdGlvbiBvZiBwcmVmZXJlbmNlcyB0byB1c2UgYSBzdGF0aWMgcGF0dGVy
biB0byBhdm9pZCBpc3N1ZXMgd2l0aCBjaXJjdWxhciBkZXBlbmRlbmNpZXMuCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICBBZGRzIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGlu
Zy5jcHAuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVt
cGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJi
OiBBZGRlZC4KKyAgICAgICAgVGVtcGxhdGUgZm9yIGdlbmVyYXRpbmcgbWFwcGluZyBmcm9tIFdl
YlByZWZlcmVuY2VzKi55YW1sIGtleSBuYW1lcyB0byBXZWJLaXRMZWdhY3kga2V5IG5hbWVzLgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmg6CisgICAgICAgIFN3aXRjaCB0byBhIG1vZGVsIG1v
cmUgc2ltaWxhciB0byB0aGF0IGluIFdlYktpdFRlc3RSdW5uZXIsIHdoZXJlIFRlc3RPcHRpb25z
IHN0b3JlcyB0aGUgcGFzc2VkIGluIAorICAgICAgICBUZXN0RmVhdHVyZXMgYW5kIG9ubHkgZXhw
b3NlcyB2YWx1ZXMgdGhhdCBoYXZlIGJlZW4gc2V0IG9yIGRlZmF1bHQgdmFsdWVzIHdoZW4gbmVl
ZGVkLgorICAgICAgICAKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWUubW06CisgICAgICAgICh0b05TKToKKyAgICAgICAgQWRkIGhlbHBlciB0byBjb252ZXJ0IGZy
b20gYSBzdGQ6OnN0cmluZyB0byBhbiBOU1N0cmluZy4KKworICAgICAgICAoY3JlYXRlV2ViVmll
d0FuZE9mZnNjcmVlbldpbmRvdyk6CisgICAgICAgIE5vdyB0aGF0IHdlIGFyZW4ndCBuZWNjZXNz
YXJpbHkgc2V0dGluZyBhbGwgcHJlZmVyZW5jZXMgZWFjaCB0ZXN0LCB3ZSBuZWVkIHRvIGZ1bGx5
IHJlc2V0IHRoZQorICAgICAgICBXZWJQcmVmZXJlbmNlcyBvbiBlYWNoIHJ1biBieSBjcmVhdGlu
ZyBhIG5ldyBvbmUuIFRoaXMgbWVhbnMgcmVtb3ZpbmcgdGhlIHVzZXMgb2YgCisgICAgICAgIFtX
ZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXSwgYW5kIGluc3RlYWQgZ3JhYmJpbmcg
dGhlIFdlYlZpZXcncyBwcmVmZXJlbmNlcyB3aGVuIG5lZWRlZC4KKworICAgICAgICAocmVzZXRX
ZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIE1vdmVzIHNvbWUgc2Nh
dHRlcmVkIGRlZmF1bHQgdmFsdWUgc2V0dGluZyBoZXJlLiBSZW1vdmUgYXNzZXJ0IHRoYXQgaXMg
bm8gbG9uZ2VyIGFjY3VyYXRlCisgICAgICAgIG5vdyB0aGF0IHdlIGRvbid0IHVzZSBzdGFuZGFy
ZFByZWZlcmVuY2VzIGFuZCB3aWxsIG5vdCBoYXZlIHNldCB0aGlzIHZhbHVlIGJ5IHRoaXMgcG9p
bnQuCisKKyAgICAgICAgKHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMpOgorICAgICAg
ICBVc2UgbmV3IF9zZXQqUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6Zm9yS2V5KiBTUEkg
dG8gc2V0IGFueSBzcGVjaWZpZWQgcHJlZmVybmVjZXMuCisKKyAgICAgICAgKHNldERlZmF1bHRz
VG9Db25zaXN0ZW50VmFsdWVzRm9yVGVzdGluZyk6CisgICAgICAgIE1vdmUgZGVmYXVsdHMgc2V0
IGhlcmUgdG8gdGhlIG1vcmUgYXBwcm9wcmlhdGUgYW5kIGNlbnRyYWxpemVkIHJlc2V0V2ViUHJl
ZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMuCisKKyAgICAgICAgKHNldEpTQ09wdGlvbnMpOgor
ICAgICAgICBVc2UgbmV3IGdldHRlciBmdW5jdGlvbiByYXRoZXIgdGhhbiBkaXJlY3QgbWVtYmVy
IGFjY2Vzcy4KKworICAgICAgICAocmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGUpOgorICAg
ICAgICBGdWxseSByZXNldCBwcmVmZXJuZWNlcyBieSBhbGxvY2F0aW5nIGEgbmV3IFdlYlByZWZl
cmVuY2VzIG9uIHJlc2V0IGFuZCB1c2UgbmV3IFRlc3RPcHRpb25zIGdldHRlcgorICAgICAgICBm
dW5jdGlvbnMuCisKKyAgICAgICAgKHRlc3RPcHRpb25zRm9yVGVzdCk6CisgICAgICAgIFNlZWQg
VGVzdEZlYXR1cmVzIHdpdGggZGVmYXVsdCBnbG9iYWwgdmFsdWVzLCBtYXRjaGluZyB0aGUgaWRp
b20gaW4gV2ViS2l0VGVzdFJ1bm5lci4KKworICAgICAgICAocnVuVGVzdCk6CisgICAgICAgIFVz
ZSBuZXcgZ2V0dGVyIGZ1bmN0aW9uIHJhdGhlciB0aGFuIGRpcmVjdCBtZW1iZXIgYWNjZXNzLgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06CisgICAgICAg
IChUZXN0UnVubmVyOjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQpOgorICAgICAgICAoVGVzdFJ1
bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbik6CisgICAgICAgIChUZXN0UnVubmVyOjpv
dmVycmlkZVByZWZlcmVuY2UpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0Q2FjaGVNb2RlbCk6
CisgICAgICAgIEFjY2VzcyB0aGUgY29ycmVjdCBXZWJQcmVmZXJlbmNlcyB2aWEgdGhlIFdlYlZp
ZXcsIHJhdGhlciB0aGFuIGFzc3VtaW5nIHN0YW5kYXJkUHJlZmVyZW5jZXMKKyAgICAgICAgYXJl
IGJlaW5nIHVzZWQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5t
bToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZSByZXNldFRvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVz
dGluZzpdKToKKyAgICAgICAgVXNlIG5ldyBnZXR0ZXIgZnVuY3Rpb24gcmF0aGVyIHRoYW4gZGly
ZWN0IG1lbWJlciBhY2Nlc3MuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJl
bmRlclRyZWUuY3BwOgorICAgICAgICAocmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZh
bHVlcyk6CisgICAgICAgIChib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSk6CisgICAgICAg
IChzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKToKKyAgICAgICAgKHNldEpTQ09wdGlv
bnMpOgorICAgICAgICAodGVzdE9wdGlvbnNGb3JUZXN0KToKKyAgICAgICAgKHJ1blRlc3QpOgor
ICAgICAgICBLZWVwIFdpbmRvd3MgRHVtcFJlbmRlclRyZWUgd29ya2luZyB3aXRoIHRoZSBuZXcg
VGVzdE9wdGlvbnMgYnkgZ2V0dGluZyBmZWF0dXJlIHZhbHVlcyBieQorICAgICAgICBzdHJpbmcg
a2V5cyB3aXRoIHNwZWNpZmllZCBkZWZhdWx0cyBhbmQgYWRvcHRpbmcgbmV3IGdldHRlciBmdW5j
dGlvbnMuIEluIHRoZSBmdXR1cmUsIHdlCisgICAgICAgIHdpbGwgYWRkIHNpbWlsYXIgU1BJIGFz
IHdhcyBhZGRlZCBmb3IgbWFjIFdlYktpdExlZ2FjeSB0byBXaW5kb3dzIFdlYktpdExlZ2FjeSB0
byBhdm9pZCB0aGlzLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFByZWZlcmVuY2VzVG9D
b25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgVXBkYXRlIGZvciByZW5hbWVkIFdLUHJlZmVyZW5j
ZXNSZWYgU1BJLgorCiAyMDIwLTEwLTE3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbRmxhdHBhayBTREtdIGZsYXRwYWt1dGlscy5weSByZXBvcnRz
ICJLZXlFcnJvcjogJ2djYyciIGVycm9yIGlmIHVzaW5nIHdpdGggaWNlY2MgYW5kIHRvb2xjaGFp
bnMgYXJlbid0IGdlbmVyYXRlZCB5ZXQKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtl
TGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMu
dHh0CShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3Rz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBsaXN0KEFQUEVORCBEdW1wUmVu
ZGVyVHJlZV9QUklWQVRFX0lOQ0xVCiApCiAKIHNldChEdW1wUmVuZGVyVHJlZV9XRUJfUFJFRkVS
RU5DRVNfVEVNUExBVEVTCisgICAgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVy
ZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5n
LmNwcC5lcmIKICAgICAke0R1bXBSZW5kZXJUcmVlX0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNlc1Rl
bXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIKICkKIApAQCAtNTMsMTIgKzU0
LDEzIEBAIHNldChEdW1wUmVuZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVMKIHNldF9zb3VyY2VfZmls
ZXNfcHJvcGVydGllcygke0R1bXBSZW5kZXJUcmVlX1dFQl9QUkVGRVJFTkNFU30gUFJPUEVSVElF
UyBHRU5FUkFURUQgVFJVRSkKIAogYWRkX2N1c3RvbV9jb21tYW5kKAotICAgIE9VVFBVVCAke0R1
bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5
cy5oCisgICAgT1VUUFVUICR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vVGVz
dE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAke0R1bXBSZW5kZXJU
cmVlX0RFUklWRURfU09VUkNFU19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCiAgICAg
REVQRU5EUyAke0R1bXBSZW5kZXJUcmVlX1dFQl9QUkVGRVJFTkNFU19URU1QTEFURVN9ICR7RHVt
cFJlbmRlclRyZWVfV0VCX1BSRUZFUkVOQ0VTfSBXVEZfQ29weVByZWZlcmVuY2VzCi0gICAgQ09N
TUFORCAke1JVQllfRVhFQ1VUQUJMRX0gJHtXVEZfU0NSSVBUU19ESVJ9L0dlbmVyYXRlUHJlZmVy
ZW5jZXMucmIgLS1mcm9udGVuZCBXZWJLaXRMZWdhY3kgLS1iYXNlICR7V1RGX1NDUklQVFNfRElS
fS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlcy55YW1sIC0tZGVidWcgJHtXVEZfU0NSSVBUU19E
SVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRhbCAk
e1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwu
eWFtbCAtLWludGVybmFsICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJl
bmNlc0ludGVybmFsLnlhbWwgLS1vdXRwdXREaXIgIiR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9T
T1VSQ0VTX0RJUn0iIC0tdGVtcGxhdGUgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJl
ZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCisgICAgQ09N
TUFORCAke1JVQllfRVhFQ1VUQUJMRX0gJHtXVEZfU0NSSVBUU19ESVJ9L0dlbmVyYXRlUHJlZmVy
ZW5jZXMucmIgLS1mcm9udGVuZCBXZWJLaXRMZWdhY3kgLS1iYXNlICR7V1RGX1NDUklQVFNfRElS
fS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlcy55YW1sIC0tZGVidWcgJHtXVEZfU0NSSVBUU19E
SVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRhbCAk
e1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwu
eWFtbCAtLWludGVybmFsICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJl
bmNlc0ludGVybmFsLnlhbWwgLS1vdXRwdXREaXIgIiR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9T
T1VSQ0VTX0RJUn0iIC0tdGVtcGxhdGUgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJl
ZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBw
aW5nLmNwcC5lcmIgLS10ZW1wbGF0ZSAke0R1bXBSZW5kZXJUcmVlX0RJUn0vU2NyaXB0cy9QcmVm
ZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIKICAgICBWRVJC
QVRJTSkKIAogbGlzdChBUFBFTkQgRHVtcFJlbmRlclRyZWVfU09VUkNFUworICAgICR7RHVtcFJl
bmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRM
ZWdhY3lLZXlNYXBwaW5nLmNwcAogICAgICR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmgKICkKIApJbmRleDogVG9vbHMvRHVtcFJl
bmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CShyZXZp
c2lvbiAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC02LDcgKzYsMTAgQEAgJChCVUlMVF9QUk9E
VUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlLwogJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9s
b2NhbC9pbmNsdWRlL3d0Zi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJu
YWwueWFtbAogJChQUk9KRUNUX0RJUikvLi4vVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRl
eHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbAogJChQUk9KRUNUX0RJUikvQmluZGlu
Z3MvQ29kZUdlbmVyYXRvckR1bXBSZW5kZXJUcmVlLnBtCiskKFBST0pFQ1RfRElSKS9EZXJpdmVk
U291cmNlcy5tYWtlCiAkKFBST0pFQ1RfRElSKS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVz
L1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYgorJChQUk9KRUNUX0RJUikvU2NyaXB0cy9Q
cmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1h
cHBpbmcuY3BwLmVyYgorJChQUk9KRUNUX0RJUikvU2NyaXB0cy9nZW5lcmF0ZS1kZXJpdmVkLXNv
dXJjZXMuc2gKICQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9Db2RlR2VuZXJhdG9yLnBt
CiAkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvSURMQXR0cmlidXRlcy5qc29uCiAkKFdF
QkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvSURMUGFyc2VyLnBtCkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAko
cmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTIsMyArMiw0IEBACiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUvSlNVSVNjcmlwdENv
bnRyb2xsZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvRHVtcFJl
bmRlclRyZWUvSlNVSVNjcmlwdENvbnRyb2xsZXIuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUvVGVzdE9w
dGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcApJbmRleDogVG9vbHMvRHVt
cFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1w
UmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0y
MywyOSArMjMsMTIgQEAKIAogUlVCWSA9IHJ1YnkKIAotV0VCX1BSRUZFUkVOQ0VTID0gXAotICAg
ICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlcy55YW1s
IFwKLSAgICAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5j
ZXNEZWJ1Zy55YW1sIFwKLSAgICAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMv
V2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCBcCi0gICAgJHtXVEZfQlVJTERfU0NSSVBU
U19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbCBcCi0jCi0KLVdF
Ql9QUkVGRVJFTkNFU19URU1QTEFURVMgPSBcCi0gICAgJChEdW1wUmVuZGVyVHJlZSkvU2NyaXB0
cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIgXAot
IwotV0VCX1BSRUZFUkVOQ0VTX0ZJTEVTID0gJChiYXNlbmFtZSAkKG5vdGRpciAkKFdFQl9QUkVG
RVJFTkNFU19URU1QTEFURVMpKSkKLVdFQl9QUkVGRVJFTkNFU19QQVRURVJOUyA9ICQoc3Vic3Qg
LmVyYiwsJChXRUJfUFJFRkVSRU5DRVNfRklMRVMpKQotCi1hbGwgOiAkKFdFQl9QUkVGRVJFTkNF
U19GSUxFUykKLQotJChXRUJfUFJFRkVSRU5DRVNfUEFUVEVSTlMpIDogJChXVEZfQlVJTERfU0NS
SVBUU19ESVIpL0dlbmVyYXRlUHJlZmVyZW5jZXMucmIgJChXRUJfUFJFRkVSRU5DRVNfVEVNUExB
VEVTKSAkKFdFQl9QUkVGRVJFTkNFUykKLQkkKFJVQlkpICQ8IC0tZnJvbnRlbmQgV2ViS2l0TGVn
YWN5IC0tYmFzZSAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVy
ZW5jZXMueWFtbCAtLWRlYnVnICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9X
ZWJQcmVmZXJlbmNlc0RlYnVnLnlhbWwgLS1leHBlcmltZW50YWwgJHtXVEZfQlVJTERfU0NSSVBU
U19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgLS1pbnRl
cm5hbCAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJ
bnRlcm5hbC55YW1sICQoYWRkcHJlZml4IC0tdGVtcGxhdGUgLCAkKFdFQl9QUkVGRVJFTkNFU19U
RU1QTEFURVMpKQotCi0KIFVJU0NSSVBUQ09OVEVYVF9ESVIgPSAkKER1bXBSZW5kZXJUcmVlKS8u
Li9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncworRFVNUFJFTkRFUlRS
RUVfUFJFRkVSRU5DRVNfVEVNUExBVEVTX0RJUiA9ICQoRHVtcFJlbmRlclRyZWUpL1NjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMKIAogVlBBVEggPSBcCiAgICAgJChVSVNDUklQVENPTlRFWFRf
RElSKSBcCisgICAgJChEVU1QUkVOREVSVFJFRV9QUkVGRVJFTkNFU19URU1QTEFURVNfRElSKSBc
CiAjCiAKIFVJQ09OVEVYVF9JTlRFUkZBQ0VTID0gXApAQCAtNzEsMyArNTQsMjEgQEAgYWxsIDog
XAogICAgICQoVUlDT05URVhUX0lOVEVSRkFDRVM6JT1KUyUuaCkgXAogICAgICQoVUlDT05URVhU
X0lOVEVSRkFDRVM6JT1KUyUuY3BwKSBcCiAjCisKKworV0VCX1BSRUZFUkVOQ0VTID0gXAorICAg
ICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlcy55YW1s
IFwKKyAgICAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5j
ZXNEZWJ1Zy55YW1sIFwKKyAgICAke1dURl9CVUlMRF9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMv
V2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCBcCisgICAgJHtXVEZfQlVJTERfU0NSSVBU
U19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbCBcCisjCisKK1dF
Ql9QUkVGRVJFTkNFU19HRU5FUkFURURfRklMRVMgPSBcCisgICAgVGVzdE9wdGlvbnNHZW5lcmF0
ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCBcCisgICAgVGVzdE9wdGlvbnNHZW5lcmF0ZWRL
ZXlzLmggXAorIworCithbGwgOiAkKFdFQl9QUkVGRVJFTkNFU19HRU5FUkFURURfRklMRVMpCisK
KyQoV0VCX1BSRUZFUkVOQ0VTX0dFTkVSQVRFRF9GSUxFUykgOiAlIDogJS5lcmIgJChXRUJfUFJF
RkVSRU5DRVMpICQoV1RGX0JVSUxEX1NDUklQVFNfRElSKS9HZW5lcmF0ZVByZWZlcmVuY2VzLnJi
CisJJChSVUJZKSAkKFdURl9CVUlMRF9TQ1JJUFRTX0RJUikvR2VuZXJhdGVQcmVmZXJlbmNlcy5y
YiAtLWZyb250ZW5kIFdlYktpdExlZ2FjeSAtLWJhc2UgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9
L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzLnlhbWwgLS1kZWJ1ZyAke1dURl9CVUlMRF9TQ1JJ
UFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNEZWJ1Zy55YW1sIC0tZXhwZXJpbWVu
dGFsICR7V1RGX0JVSUxEX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4
cGVyaW1lbnRhbC55YW1sIC0taW50ZXJuYWwgJHtXVEZfQlVJTERfU0NSSVBUU19ESVJ9L1ByZWZl
cmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFtbCAtLXRlbXBsYXRlICQ8CkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3BwCShyZXZpc2lvbiAyNjg2NDgpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYg
KzMwLDQ0IEBACiAKIG5hbWVzcGFjZSBXVFIgewogCitjb25zdCBUZXN0RmVhdHVyZXMmIFRlc3RP
cHRpb25zOjpkZWZhdWx0cygpCit7CisgICAgc3RhdGljIFRlc3RGZWF0dXJlcyBmZWF0dXJlczsK
KyAgICBpZiAoZmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcy5lbXB0eSgpKSB7Cisg
ICAgICAgIGZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMgPSB7CisgICAgICAgICAg
ICAvLyBUaGVzZSBhcmUgV2ViUHJlZmVyZW5jZSB2YWx1ZXMgdGhhdCBtdXN0IGFsd2F5cyBiZSBz
ZXQgYXMgdGhleSBtYXkKKyAgICAgICAgICAgIC8vIGRpZmZlciBmcm9tIHRoZSBkZWZhdWx0IHNl
dCBpbiB0aGUgV2ViUHJlZmVyZW5jZXMqLnlhbWwgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAg
IHsgIkFsbG93Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzIiwgZmFs
c2UgfSwKKyAgICAgICAgICAgIHsgIkFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMiLCB0cnVl
IH0sCisgICAgICAgICAgICB7ICJBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkIiwgZmFsc2UgfSwK
KyAgICAgICAgICAgIHsgIkF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCIsIGZhbHNlIH0sCisgICAg
ICAgICAgICB7ICJVc2VzQmFja0ZvcndhcmRDYWNoZSIsIGZhbHNlIH0sCisgICAgICAgICAgICB7
ICJDb2xvckZpbHRlckVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiSW5zcGVjdG9y
QWRkaXRpb25zRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJJbnRlcnNlY3Rpb25P
YnNlcnZlckVuYWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiS2V5Z2VuRWxlbWVudEVu
YWJsZWQiLCBmYWxzZSB9LAorICAgICAgICAgICAgeyAiTWVudUl0ZW1FbGVtZW50RW5hYmxlZCIs
IGZhbHNlIH0sCisgICAgICAgICAgICB7ICJNb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCIsIHRy
dWUgfSwKKworICAgICAgICAgICAgeyAiQ1NTTG9naWNhbEVuYWJsZWQiLCBmYWxzZSB9LAorICAg
ICAgICAgICAgeyAiTGluZUhlaWdodFVuaXRzRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAg
ICB7ICJTZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzRW5hYmxlZCIsIHRydWUgfSwKKyAg
ICAgICAgICAgIHsgIkxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkIiwg
dHJ1ZSB9LAorCisgICAgICAgICAgICB7ICJBZENsaWNrQXR0cmlidXRpb25FbmFibGVkIiwgZmFs
c2UgfSwKKyAgICAgICAgICAgIHsgIkFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRF
bmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxl
ZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7ICJDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFi
bGVkIiwgZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkNvbnRhY3RQaWNrZXJBUElFbmFibGVkIiwg
ZmFsc2UgfSwKKyAgICAgICAgICAgIHsgIkNvcmVNYXRoTUxFbmFibGVkIiwgZmFsc2UgfSwKKyAg
ICAgICAgICAgIHsgIlJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAg
ICAgICAgIHsgIlJlc2l6ZU9ic2VydmVyRW5hYmxlZCIsIGZhbHNlIH0sCisgICAgICAgICAgICB7
ICJXZWJHUFVFbmFibGVkIiwgZmFsc2UgfSwKKyAgICAgICAgfTsKKyAgICB9CisgICAgcmV0dXJu
IGZlYXR1cmVzOworfQorCiBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIFRl
c3RIZWFkZXJLZXlUeXBlPiYgVGVzdE9wdGlvbnM6OmtleVR5cGVNYXBwaW5nKCkKIHsKICAgICBz
dGF0aWMgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBUZXN0SGVhZGVyS2V5
VHlwZT4gbWFwIHsKQEAgLTQ3LDU2ICs4NSw0NyBAQCBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8
c3RkOjpzdHJpbmcsIFRlCiAgICAgcmV0dXJuIG1hcDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RhdGljIHZvaWQgc2V0VmFsdWVJZlNldEluTWFwKFQmIHZhbHVlVG9TZXQsIHN0ZDo6c3Ry
aW5nIGtleSwgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBUPiYgbWFwKQor
Ym9vbCBUZXN0T3B0aW9uczo6d2ViVmlld0lzQ29tcGF0aWJsZVdpdGhPcHRpb25zKGNvbnN0IFRl
c3RPcHRpb25zJiBvcHRpb25zKSBjb25zdAoreworICAgIGlmIChtX2ZlYXR1cmVzLmV4cGVyaW1l
bnRhbEZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy5leHBlcmltZW50YWxGZWF0dXJlcykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLmludGVybmFsRGVidWdG
ZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMuaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VG
ZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ZlYXR1cmVzLmRvdWJsZVdlYlByZWZl
cmVuY2VGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMuZG91YmxlV2ViUHJlZmVyZW5jZUZl
YXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fZmVhdHVyZXMudWludDMy
V2ViUHJlZmVyZW5jZUZlYXR1cmVzICE9IG9wdGlvbnMubV9mZWF0dXJlcy51aW50MzJXZWJQcmVm
ZXJlbmNlRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9mZWF0dXJl
cy5zdHJpbmdXZWJQcmVmZXJlbmNlRmVhdHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLnN0cmlu
Z1dlYlByZWZlcmVuY2VGZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICht
X2ZlYXR1cmVzLmJvb2xUZXN0UnVubmVyRmVhdHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLmJv
b2xUZXN0UnVubmVyRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9m
ZWF0dXJlcy5kb3VibGVUZXN0UnVubmVyRmVhdHVyZXMgIT0gb3B0aW9ucy5tX2ZlYXR1cmVzLmRv
dWJsZVRlc3RSdW5uZXJGZWF0dXJlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICht
X2ZlYXR1cmVzLnN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlcyAhPSBvcHRpb25zLm1fZmVhdHVyZXMu
c3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KG1fZmVhdHVyZXMuc3RyaW5nVmVjdG9yVGVzdFJ1bm5lckZlYXR1cmVzICE9IG9wdGlvbnMubV9m
ZWF0dXJlcy5zdHJpbmdWZWN0b3JUZXN0UnVubmVyRmVhdHVyZXMpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBmZWF0
dXJlVmFsdWUoc3RkOjpzdHJpbmcga2V5LCBUIGRlZmF1bHRWYWx1ZSwgY29uc3Qgc3RkOjp1bm9y
ZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBUPiYgbWFwKQogewogICAgIGF1dG8gaXQgPSBtYXAuZmlu
ZChrZXkpOwotICAgIGlmIChpdCA9PSBtYXAuZW5kKCkpCi0gICAgICAgIHJldHVybjsKLSAgICB2
YWx1ZVRvU2V0ID0gaXQtPnNlY29uZDsKLX0KLQotVGVzdE9wdGlvbnM6OlRlc3RPcHRpb25zKFRl
c3RGZWF0dXJlcyB0ZXN0RmVhdHVyZXMpCi17Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGFsbG93
Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzLCAiQWxsb3dDcm9zc09y
aWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMiLCB0ZXN0RmVhdHVyZXMuYm9vbFdl
YlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGFsbG93VG9wTmF2
aWdhdGlvblRvRGF0YVVSTHMsICJBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzIiwgdGVzdEZl
YXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1h
cChlbmFibGVBY2NlbGVyYXRlZERyYXdpbmcsICJBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkIiwg
dGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZT
ZXRJbk1hcChlbmFibGVBdHRhY2htZW50RWxlbWVudCwgIkF0dGFjaG1lbnRFbGVtZW50RW5hYmxl
ZCIsIHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1
ZUlmU2V0SW5NYXAoZW5hYmxlQmFja0ZvcndhcmRDYWNoZSwgIlVzZXNCYWNrRm9yd2FyZENhY2hl
IiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwotICAgIHNldFZhbHVl
SWZTZXRJbk1hcChlbmFibGVDb2xvckZpbHRlciwgIkNvbG9yRmlsdGVyRW5hYmxlZCIsIHRlc3RG
ZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5N
YXAoZW5hYmxlSW5zcGVjdG9yQWRkaXRpb25zLCAiSW5zcGVjdG9yQWRkaXRpb25zRW5hYmxlZCIs
IHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlm
U2V0SW5NYXAoZW5hYmxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIsICJJbnRlcnNlY3Rpb25PYnNlcnZl
ckVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcyk7Ci0gICAg
c2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUtleWdlbkVsZW1lbnQsICJLZXlnZW5FbGVtZW50RW5h
YmxlZCIsIHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRW
YWx1ZUlmU2V0SW5NYXAoZW5hYmxlTWVudUl0ZW1FbGVtZW50LCAiTWVudUl0ZW1FbGVtZW50RW5h
YmxlZCIsIHRlc3RGZWF0dXJlcy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKTsKLSAgICBzZXRW
YWx1ZUlmU2V0SW5NYXAoZW5hYmxlTW9kZXJuTWVkaWFDb250cm9scywgIk1vZGVybk1lZGlhQ29u
dHJvbHNFbmFibGVkIiwgdGVzdEZlYXR1cmVzLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMpOwot
Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQs
ICJlbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkIiwgdGVzdEZlYXR1cmVzLmJvb2xUZXN0
UnVubmVyRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChkdW1wSlNDb25zb2xlTG9n
SW5TdGRFcnIsICJkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIiLCB0ZXN0RmVhdHVyZXMuYm9vbFRl
c3RSdW5uZXJGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGxheWVyQmFja2VkV2Vi
VmlldywgImxheWVyQmFja2VkV2ViVmlldyIsIHRlc3RGZWF0dXJlcy5ib29sVGVzdFJ1bm5lckZl
YXR1cmVzKTsKLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAodXNlRXBoZW1lcmFsU2Vzc2lvbiwgInVz
ZUVwaGVtZXJhbFNlc3Npb24iLCB0ZXN0RmVhdHVyZXMuYm9vbFRlc3RSdW5uZXJGZWF0dXJlcyk7
Ci0KLSAgICBzZXRWYWx1ZUlmU2V0SW5NYXAoYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMs
ICJhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcyIsIHRlc3RGZWF0dXJlcy5zdHJpbmdUZXN0
UnVubmVyRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChqc2NPcHRpb25zLCAianNj
T3B0aW9ucyIsIHRlc3RGZWF0dXJlcy5zdHJpbmdUZXN0UnVubmVyRmVhdHVyZXMpOwotCi0gICAg
c2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUNTU0xvZ2ljYWwsICJDU1NMb2dpY2FsRW5hYmxlZCIs
IHRlc3RGZWF0dXJlcy5pbnRlcm5hbERlYnVnRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJ
bk1hcChlbmFibGVMaW5lSGVpZ2h0VW5pdHMsICJMaW5lSGVpZ2h0VW5pdHNFbmFibGVkIiwgdGVz
dEZlYXR1cmVzLmludGVybmFsRGVidWdGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFw
KGVuYWJsZVNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXMsICJzZWxlY3Rpb25BY3Jvc3NT
aGFkb3dCb3VuZGFyaWVzRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5pbnRlcm5hbERlYnVnRmVhdHVy
ZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChsYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVn
cmF0aW9uRW5hYmxlZCwgIkxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVk
IiwgdGVzdEZlYXR1cmVzLmludGVybmFsRGVidWdGZWF0dXJlcyk7Ci0KLSAgICBzZXRWYWx1ZUlm
U2V0SW5NYXAoYWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCwgIkFkQ2xpY2tBdHRyaWJ1dGlvbkVu
YWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMpOwotICAgIHNldFZhbHVl
SWZTZXRJbk1hcChlbmFibGVBc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0LCAiQXNw
ZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhw
ZXJpbWVudGFsRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVBc3luY0Ns
aXBib2FyZEFQSSwgIkFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBl
cmltZW50YWxGZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZUNTU09NVmll
d1Ntb290aFNjcm9sbGluZywgIkNTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWQiLCB0ZXN0
RmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChl
bmFibGVDb250YWN0UGlja2VyQVBJLCAiQ29udGFjdFBpY2tlckFQSUVuYWJsZWQiLCB0ZXN0RmVh
dHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFi
bGVDb3JlTWF0aE1MLCAiQ29yZU1hdGhNTEVuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJpbWVu
dGFsRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVSZXF1ZXN0SWRsZUNh
bGxiYWNrLCAiUmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJp
bWVudGFsRmVhdHVyZXMpOwotICAgIHNldFZhbHVlSWZTZXRJbk1hcChlbmFibGVSZXNpemVPYnNl
cnZlciwgIlJlc2l6ZU9ic2VydmVyRW5hYmxlZCIsIHRlc3RGZWF0dXJlcy5leHBlcmltZW50YWxG
ZWF0dXJlcyk7Ci0gICAgc2V0VmFsdWVJZlNldEluTWFwKGVuYWJsZVdlYkdQVSwgIldlYkdQVUVu
YWJsZWQiLCB0ZXN0RmVhdHVyZXMuZXhwZXJpbWVudGFsRmVhdHVyZXMpOworICAgIGlmIChpdCAh
PSBtYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBpdC0+c2Vjb25kOworICAgIHJldHVybiBkZWZh
dWx0VmFsdWU7Cit9CisKK2Jvb2wgVGVzdE9wdGlvbnM6OmJvb2xUZXN0UnVubmVyRmVhdHVyZVZh
bHVlKHN0ZDo6c3RyaW5nIGtleSwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGZlYXR1cmVWYWx1ZShrZXksIGRlZmF1bHRWYWx1ZSwgbV9mZWF0dXJlcy5ib29sVGVzdFJ1
bm5lckZlYXR1cmVzKTsKIH0KIAotYm9vbCBUZXN0T3B0aW9uczo6d2ViVmlld0lzQ29tcGF0aWJs
ZVdpdGhPcHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvdGhlcikgY29uc3QKK3N0ZDo6c3RyaW5n
IFRlc3RPcHRpb25zOjpzdHJpbmdUZXN0UnVubmVyRmVhdHVyZVZhbHVlKHN0ZDo6c3RyaW5nIGtl
eSwgc3RkOjpzdHJpbmcgZGVmYXVsdFZhbHVlKSBjb25zdAogewotICAgIHJldHVybiBvdGhlci5s
YXllckJhY2tlZFdlYlZpZXcgPT0gbGF5ZXJCYWNrZWRXZWJWaWV3Ci0gICAgICAgICYmIG90aGVy
LmpzY09wdGlvbnMgPT0ganNjT3B0aW9uczsKKyAgICByZXR1cm4gZmVhdHVyZVZhbHVlKGtleSwg
ZGVmYXVsdFZhbHVlLCBtX2ZlYXR1cmVzLnN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlcyk7CiB9CiAK
IH0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuaAkocmV2aXNpb24gMjY4NjQ4KQor
KysgVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNTMgKzMxLDM5IEBACiAKIG5hbWVzcGFjZSBXVFIgewogCi1zdHJ1Y3QgVGVzdE9wdGlvbnMg
ewotICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlc2UgYW5kIHJlcGxhY2Ugd2l0aCBhY2Nlc3MgdG8g
VGVzdEZlYXR1cmVzIHNldC4KLSAgICAvLyBXZWIgUHJlZmVyZW5jZXMKLSAgICBib29sIGFsbG93
Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzIHsgZmFsc2UgfTsKLSAg
ICBib29sIGFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMgeyB0cnVlIH07Ci0gICAgYm9vbCBl
bmFibGVBY2NlbGVyYXRlZERyYXdpbmcgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQXR0YWNo
bWVudEVsZW1lbnQgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlQmFja0ZvcndhcmRDYWNoZSB7
IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVDb2xvckZpbHRlciB7IGZhbHNlIH07Ci0gICAgYm9v
bCBlbmFibGVJbnNwZWN0b3JBZGRpdGlvbnMgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlSW50
ZXJzZWN0aW9uT2JzZXJ2ZXIgeyBmYWxzZSB9OwotICAgIGJvb2wgZW5hYmxlS2V5Z2VuRWxlbWVu
dCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVNZW51SXRlbUVsZW1lbnQgeyBmYWxzZSB9Owot
ICAgIGJvb2wgZW5hYmxlTW9kZXJuTWVkaWFDb250cm9scyB7IHRydWUgfTsKLQotICAgIC8vIEZJ
WE1FOiBSZW1vdmUgdGhlc2UgYW5kIHJlcGxhY2Ugd2l0aCBhY2Nlc3MgdG8gVGVzdEZlYXR1cmVz
IHNldC4KLSAgICAvLyBJbnRlcm5hbCBGZWF0dXJlcwotICAgIGJvb2wgZW5hYmxlQ1NTTG9naWNh
bCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVMaW5lSGVpZ2h0VW5pdHMgeyBmYWxzZSB9Owot
ICAgIGJvb2wgZW5hYmxlU2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllcyB7IHRydWUgfTsK
LSAgICBib29sIGxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkIHsgdHJ1
ZSB9OwotCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGVzZSBhbmQgcmVwbGFjZSB3aXRoIGFjY2Vz
cyB0byBUZXN0RmVhdHVyZXMgc2V0LgotICAgIC8vIEV4cGVyaW1lbnRhbCBGZWF0dXJlcwotICAg
IGJvb2wgYWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFi
bGVBc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0IHsgZmFsc2UgfTsKLSAgICBib29s
IGVuYWJsZUFzeW5jQ2xpcGJvYXJkQVBJIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUNTU09N
Vmlld1Ntb290aFNjcm9sbGluZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVDb250YWN0UGlj
a2VyQVBJIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZUNvcmVNYXRoTUwgeyBmYWxzZSB9Owot
ICAgIGJvb2wgZW5hYmxlUmVxdWVzdElkbGVDYWxsYmFjayB7IGZhbHNlIH07Ci0gICAgYm9vbCBl
bmFibGVSZXNpemVPYnNlcnZlciB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVXZWJHUFUgeyBm
YWxzZSB9OworY2xhc3MgVGVzdE9wdGlvbnMgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBU
ZXN0RmVhdHVyZXMmIGRlZmF1bHRzKCk7CisgICAgc3RhdGljIGNvbnN0IHN0ZDo6dW5vcmRlcmVk
X21hcDxzdGQ6OnN0cmluZywgVGVzdEhlYWRlcktleVR5cGU+JiBrZXlUeXBlTWFwcGluZygpOwog
Ci0gICAgLy8gVGVzdCBSdW5uZXIgU3BlY2lmaWMgRmVhdHVyZXMKLSAgICBib29sIGR1bXBKU0Nv
bnNvbGVMb2dJblN0ZEVyciB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVEcmFnRGVzdGluYXRp
b25BY3Rpb25Mb2FkIHsgZmFsc2UgfTsKLSAgICBib29sIGVuYWJsZVdlYlNRTCB7IHRydWUgfTsK
LSAgICBib29sIGxheWVyQmFja2VkV2ViVmlldyB7IGZhbHNlIH07Ci0gICAgYm9vbCB1c2VFcGhl
bWVyYWxTZXNzaW9uIHsgZmFsc2UgfTsKLSAgICBzdGQ6OnN0cmluZyBhZGRpdGlvbmFsU3VwcG9y
dGVkSW1hZ2VUeXBlczsKLSAgICBzdGQ6OnN0cmluZyBqc2NPcHRpb25zOworICAgIGV4cGxpY2l0
IFRlc3RPcHRpb25zKFRlc3RGZWF0dXJlcyBmZWF0dXJlcykKKyAgICAgICAgOiBtX2ZlYXR1cmVz
KHN0ZDo6bW92ZShmZWF0dXJlcykpCisgICAgeworICAgIH0KIAotICAgIGV4cGxpY2l0IFRlc3RP
cHRpb25zKFRlc3RGZWF0dXJlcyk7CiAgICAgYm9vbCB3ZWJWaWV3SXNDb21wYXRpYmxlV2l0aE9w
dGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmKSBjb25zdDsKLSAgICAKLSAgICBzdGF0aWMgY29uc3Qg
c3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBUZXN0SGVhZGVyS2V5VHlwZT4mIGtleVR5
cGVNYXBwaW5nKCk7CisKKyAgICAvLyBUZXN0IFJ1bm5lciBTcGVjaWZpYyBGZWF0dXJlcworICAg
IGJvb2wgZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyKCkgY29uc3QgeyByZXR1cm4gYm9vbFRlc3RS
dW5uZXJGZWF0dXJlVmFsdWUoImR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciIsIGZhbHNlKTsgfQor
ICAgIGJvb2wgZW5hYmxlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZCgpIGNvbnN0IHsgcmV0dXJu
IGJvb2xUZXN0UnVubmVyRmVhdHVyZVZhbHVlKCJlbmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25M
b2FkIiwgZmFsc2UpOyB9CisgICAgYm9vbCBsYXllckJhY2tlZFdlYlZpZXcoKSBjb25zdCB7IHJl
dHVybiBib29sVGVzdFJ1bm5lckZlYXR1cmVWYWx1ZSgibGF5ZXJCYWNrZWRXZWJWaWV3IiwgZmFs
c2UpOyB9CisgICAgYm9vbCB1c2VFcGhlbWVyYWxTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gYm9v
bFRlc3RSdW5uZXJGZWF0dXJlVmFsdWUoInVzZUVwaGVtZXJhbFNlc3Npb24iLCBmYWxzZSk7IH0K
KyAgICBzdGQ6OnN0cmluZyBhZGRpdGlvbmFsU3VwcG9ydGVkSW1hZ2VUeXBlcygpIGNvbnN0IHsg
cmV0dXJuIHN0cmluZ1Rlc3RSdW5uZXJGZWF0dXJlVmFsdWUoImFkZGl0aW9uYWxTdXBwb3J0ZWRJ
bWFnZVR5cGVzIiwgeyB9KTsgfQorICAgIHN0ZDo6c3RyaW5nIGpzY09wdGlvbnMoKSBjb25zdCB7
IHJldHVybiBzdHJpbmdUZXN0UnVubmVyRmVhdHVyZVZhbHVlKCJqc2NPcHRpb25zIiwgeyB9KTsg
fQorCisgICAgY29uc3Qgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBib29sPiYgYm9v
bFdlYlByZWZlcmVuY2VGZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJuIG1fZmVhdHVyZXMuYm9vbFdl
YlByZWZlcmVuY2VGZWF0dXJlczsgfQorICAgIGNvbnN0IHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6
OnN0cmluZywgZG91YmxlPiYgZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9mZWF0dXJlcy5kb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXM7IH0KKyAgICBjb25z
dCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIHVpbnQzMl90PiYgdWludDMyV2ViUHJl
ZmVyZW5jZUZlYXR1cmVzKCkgY29uc3QgeyByZXR1cm4gbV9mZWF0dXJlcy51aW50MzJXZWJQcmVm
ZXJlbmNlRmVhdHVyZXM7IH0KKyAgICBjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJp
bmcsIHN0ZDo6c3RyaW5nPiYgc3RyaW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9mZWF0dXJlcy5zdHJpbmdXZWJQcmVmZXJlbmNlRmVhdHVyZXM7IH0KKworICAgIHN0
YXRpYyBzdGQ6OnN0cmluZyB0b1dlYktpdExlZ2FjeVByZWZlcmVuY2VLZXkoY29uc3Qgc3RkOjpz
dHJpbmcmKTsKKworcHJpdmF0ZToKKyAgICBib29sIGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZh
bHVlKHN0ZDo6c3RyaW5nIGtleSwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0OworICAgIGJvb2wg
Ym9vbFRlc3RSdW5uZXJGZWF0dXJlVmFsdWUoc3RkOjpzdHJpbmcga2V5LCBib29sIGRlZmF1bHRW
YWx1ZSkgY29uc3Q7CisgICAgc3RkOjpzdHJpbmcgc3RyaW5nVGVzdFJ1bm5lckZlYXR1cmVWYWx1
ZShzdGQ6OnN0cmluZyBrZXksIHN0ZDo6c3RyaW5nIGRlZmF1bHRWYWx1ZSkgY29uc3Q7CisKKyAg
ICBUZXN0RmVhdHVyZXMgbV9mZWF0dXJlczsKIH07CiAKIH0KSW5kZXg6IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVt
cFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MTA5LDYgKzEwOSw3IEBACiAJCTVEQjlBQzlFMEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWln
aHRXYXRjaGVyNzAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzc1RjA5NzcwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdh
dGNoZXI3MDAudHRmICovOyB9OwogCQk1REI5QUM5RjBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0
V2VpZ2h0V2F0Y2hlcjgwMC50dGYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDM3NUYwOTc4MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWln
aHRXYXRjaGVyODAwLnR0ZiAqLzsgfTsKIAkJNURCOUFDQTAwRjcyMkMzNjAwNjg0NjQxIC8qIFdl
YktpdFdlaWdodFdhdGNoZXI5MDAudHRmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVGMDk3OTBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0
V2VpZ2h0V2F0Y2hlcjkwMC50dGYgKi87IH07CisJCTdDNEYzMDQwMjUzQjk3MEYwMDMwNTQ1OCAv
KiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M0RjMwM0YyNTNCODM2OTAw
MzA1NDU4IC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAg
Ki87IH07CiAJCTdDRkY5QkJGMjUzM0JCMjQwMDA4MDA5RiAvKiBUZXN0RmVhdHVyZXMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NGRjlCQkUyNTMz
QkIyNDAwMDgwMDlGIC8qIFRlc3RGZWF0dXJlcy5jcHAgKi87IH07CiAJCTdDRkY5QkMyMjUzM0JD
MTYwMDA4MDA5RiAvKiBUZXN0Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0ZGOUJDMTI1MzNCQzE2MDAwODAwOUYgLyogVGVzdENvbW1h
bmQuY3BwICovOyB9OwogCQk4MDA0NUFFRTE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJpbGl0
eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MDA0NUFFQzE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJpbGl0eU5v
dGlmaWNhdGlvbkhhbmRsZXIubW0gKi87IH07CkBAIC0zMzMsOCArMzM0LDEyIEBACiAJCTdDNDQ2
OTdGMjUzNzdBMDIwMDI0MjkwQSAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QzQ0Njk4MDI1Mzc3QTAyMDAyNDI5MEEgLyogY2hlY2steGNmaWxlbGlzdHMuc2gg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNj
cmlwdC5zaDsgcGF0aCA9ICJjaGVjay14Y2ZpbGVsaXN0cy5zaCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdDNDQ2OTgxMjUzNzdBMDIwMDI0MjkwQSAvKiBnZW5lcmF0ZS1kZXJpdmVk
LXNvdXJjZXMuc2ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnNjcmlwdC5zaDsgcGF0aCA9ICJnZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2gi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5MEEg
LyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3RPcHRpb25z
R2VuZXJhdGVkS2V5cy5oOyBwYXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNDQ2OTg1MjUzNzdFNTIwMDI0MjkwQSAvKiBUZXN0
T3B0aW9uc0dlbmVyYXRlZEtleXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0
ZWRLZXlzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNEYzMDNGMjUzQjgzNjkw
MDMwNTQ1OCAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlN
YXBwaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M5RTI1MEIyNTNCNzk0
QTAwNDEzMDE4IC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5j
cHAuZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5j
cHAuZXJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0JCQzMyMjFEREZDRjlBMDA3
ODZCOUQgLyogVGVzdE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VGVzdE9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0NDQkE1MUQyNTNC
QjlEMzAwQkIzMkMxIC8qIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjZmlsZWxpc3Q7
IHBhdGggPSAiRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdDQ0JBNTFFMjUzQkI5RDMwMEJCMzJDMSAvKiBEZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQueGNmaWxlbGlzdDsgcGF0aCA9ICJEZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRkY5QkJEMjUz
M0JCMjQwMDA4MDA5RiAvKiBUZXN0RmVhdHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdEZlYXR1
cmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRkY5QkJFMjUzM0JCMjQwMDA4
MDA5RiAvKiBUZXN0RmVhdHVyZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVzdEZlYXR1cmVz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NGRjlCQzAyNTMzQkMxNjAwMDgw
MDlGIC8qIFRlc3RDb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RDb21tYW5kLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDEsNiArNTA2LDggQEAKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMEYxOEU2RjExRDZCOUM2NDAwMjdFNTQ3IC8qIERl
cml2ZWRTb3VyY2VzLm1ha2UgKi8sCisJCQkJN0NDQkE1MUQyNTNCQjlEMzAwQkIzMkMxIC8qIERl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgKi8sCisJCQkJN0NDQkE1MUUyNTNCQjlEMzAw
QkIzMkMxIC8qIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0ICovLAogCQkJCTdDNDQ2
OTgyMjUzNzdDMzQwMDI0MjkwQSAvKiBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJCQkJMzE0OEEwNjUx
RTZGOTBGNDAwRDNCMzE2IC8qIFRlc3RSdW5uZXJTaGFyZWQgKi8sCiAJCQkJMEYxOEU2RTcxRDZC
OUJGNTAwMjdFNTQ3IC8qIFVJU2NyaXB0Q29udGV4dCAqLywKQEAgLTc3MCw2ICs3NzcsNyBAQAog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk3QzQ0Njk3RjI1Mzc3QTAy
MDAyNDI5MEEgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiICovLAorCQkJCTdDOUUy
NTBCMjUzQjc5NEEwMDQxMzAxOCAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtl
eU1hcHBpbmcuY3BwLmVyYiAqLywKIAkJCSk7CiAJCQlwYXRoID0gUHJlZmVyZW5jZXNUZW1wbGF0
ZXM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzc4LDYgKzc4Niw3IEBACiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTdDNDQ2OTg1MjUzNzdFNTIwMDI0
MjkwQSAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaCAqLywKKwkJCQk3QzRGMzAzRjI1M0I4
MzY5MDAzMDU0NTggLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5n
LmNwcCAqLywKIAkJCSk7CiAJCQluYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCQlwYXRoID0g
RGVyaXZlZFNvdXJjZXMvRHVtcFJlbmRlclRyZWU7CkBAIC0xMjkxLDYgKzEzMDAsNyBAQAogCQkJ
CTdDRkY5QkMyMjUzM0JDMTYwMDA4MDA5RiAvKiBUZXN0Q29tbWFuZC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3Q0ZGOUJCRjI1MzNCQjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUEzMEEyMUY4MjA1MUQ4QzQwMDA4RkY0MiAvKiBUZXN0T3B0aW9ucy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk3QzRGMzA0MDI1M0I5NzBGMDAzMDU0NTggLyogVGVzdE9w
dGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDMDEzMURBMEM5NzcyMDEwMDg3MzE3RCAvKiBUZXN0UnVubmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDQTE4QjI0MEM5QjAxNEIwMDExNDM2OSAvKiBUZXN0UnVubmVyTWFjLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRjRENDIzNjExREQ1MDQ4MjAwNjc4MjkwIC8qIFRleHRJbnB1dENv
bnRyb2xsZXJJT1MubSBpbiBTb3VyY2VzICovLApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUv
U2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5l
cmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvU2NyaXB0cy9QcmVmZXJlbmNl
c1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIJKHJldmlzaW9uIDI2ODY0
OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
VGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsy
OCw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2RlZmluZSBHRU5FUkFURURfV0VCX1BSRUZFUkVOQ0Vf
S0VZX1RZUEVfTUFQUElOR1MgXAotPCUtIGZvciBAcHJlZiBpbiBAcHJlZmVyZW5jZXMgZG8gLSU+
Cis8JS0gZm9yIEBwcmVmIGluIEBleHBvc2VkUHJlZmVyZW5jZXMgZG8gLSU+CiAgICAgeyAiPCU9
IEBwcmVmLm5hbWUgJT4iLCBUZXN0SGVhZGVyS2V5VHlwZTo6PCU9IEBwcmVmLnR5cGVVcHBlciAl
PldlYlByZWZlcmVuY2UgfSwgXAogPCUtIGVuZCAtJT4KIFwKSW5kZXg6IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRX
ZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJl
bmRlclRyZWUvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRl
ZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYgkobm9uZXhpc3RlbnQpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2Vu
ZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNDggQEAKKy8qCisgKiA8JT0gQHdhcm5pbmcgJT4KKyAqCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdE9wdGlvbnMuaCIKKworbmFtZXNwYWNlIFdUUiB7
CisKK3N0ZDo6c3RyaW5nIFRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVuY2VLZXko
Y29uc3Qgc3RkOjpzdHJpbmcmIHdlYlByZWZlcmVuY2VzS2V5KQoreworICAgIHN0YXRpYyBzdGQ6
OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBub25TdGFuZGFyZEtleXMg
PSB7Cis8JS0gZm9yIEBwcmVmIGluIEBleHBvc2VkUHJlZmVyZW5jZXMuc2VsZWN0IHsgfHB8IHAu
b3B0c1sid2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleSJdIH0gZG8gLSU+CisgICAgICAgIHsgIjwl
PSBAcHJlZi5uYW1lICU+IiwgIjwlPSBAcHJlZi5wcmVmZXJlbmNlS2V5ICU+IiB9LCBcCis8JS0g
ZW5kIC0lPgorICAgIH07CisKKyAgICBhdXRvIGl0ID0gbm9uU3RhbmRhcmRLZXlzLmZpbmQod2Vi
UHJlZmVyZW5jZXNLZXkpOworICAgIGlmIChpdCAhPSBub25TdGFuZGFyZEtleXMuZW5kKCkpCisg
ICAgICAgIHJldHVybiBpdC0+c2Vjb25kOworCisgICAgcmV0dXJuICJXZWJLaXQiICsgd2ViUHJl
ZmVyZW5jZXNLZXk7Cit9CisKK30KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWUubW0JKHJldmlzaW9uIDI2ODY0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSwxMCBA
QCBleHRlcm4gIkMiIHsKICNpbXBvcnQgPG1hY2gtby9nZXRzZWN0Lmg+CiB9CiAKLXVzaW5nIG5h
bWVzcGFjZSBzdGQ7CitzdGF0aWMgUmV0YWluUHRyPE5TU3RyaW5nPiB0b05TKGNvbnN0IHN0ZDo6
c3RyaW5nJiBzdHJpbmcpCit7CisgICAgcmV0dXJuIGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10g
aW5pdFdpdGhVVEY4U3RyaW5nOnN0cmluZy5jX3N0cigpXSk7Cit9CiAKICNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIEBpbnRlcmZhY2UgRHVtcFJlbmRlclRyZWVBcHBsaWNhdGlvbiA6IE5TQXBw
bGljYXRpb24KQEAgLTE1MSw3ICsxNTQsNyBAQCAtICh2b2lkKXZpZXc6KFVJV2ViRG9jdW1lbnRW
aWV3ICopdmlldyBkCiAgICAgQVNTRVJUKHNjcm9sbFZpZXcgJiYgW3Njcm9sbFZpZXcgaXNLaW5k
T2ZDbGFzczpbVUlXZWJTY3JvbGxWaWV3IGNsYXNzXV0pOwogICAgIGNvbnN0IENHU2l6ZSBzY3Jv
bGxWaWV3U2l6ZSA9IFtzY3JvbGxWaWV3IGJvdW5kc10uc2l6ZTsKICAgICBDR1NpemUgY29udGVu
dFNpemUgPSBuZXdGcmFtZS5zaXplOwotICAgIGNvbnRlbnRTaXplLmhlaWdodCA9IENHUm91bmQo
bWF4KENHUmVjdEdldE1heFkobmV3RnJhbWUpLCBzY3JvbGxWaWV3U2l6ZS5oZWlnaHQpKTsKKyAg
ICBjb250ZW50U2l6ZS5oZWlnaHQgPSBDR1JvdW5kKHN0ZDo6bWF4KENHUmVjdEdldE1heFkobmV3
RnJhbWUpLCBzY3JvbGxWaWV3U2l6ZS5oZWlnaHQpKTsKICAgICBbKFVJV2ViU2Nyb2xsVmlldyAq
KXNjcm9sbFZpZXcgc2V0Q29udGVudFNpemU6Y29udGVudFNpemVdOwogfQogQGVuZApAQCAtMTc3
LDcgKzE4MCw3IEBAIC0gKFdlYkNvcmU6OkZyYW1lKilfbWFpbkNvcmVGcmFtZTsKIEBlbmQKICNl
bmRpZgogCi1zdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgdGVzdFVSTCk7CitzdGF0
aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0VVJMKTsKIAogLy8gRGVjaWRp
bmcgd2hlbiBpdCdzIE9LIHRvIGR1bXAgb3V0IHRoZSBzdGF0ZSBpcyBhIGJpdCB0cmlja3kuICBB
bGwgdGhlc2UgbXVzdCBiZSB0cnVlOgogLy8gLSBUaGVyZSBpcyBubyBsb2FkIGluIHByb2dyZXNz
CkBAIC0yNDgsNyArMjUxLDcgQEAgdm9pZCBzZXRQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2Nh
dGlvbgogICAgIHBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uID0gdXJsOwogfQogCi1z
dGF0aWMgYm9vbCBzaG91bGRJZ25vcmVXZWJDb3JlTm9kZUxlYWtzKGNvbnN0IHN0cmluZyYgdXJs
U3RyaW5nKQorc3RhdGljIGJvb2wgc2hvdWxkSWdub3JlV2ViQ29yZU5vZGVMZWFrcyhjb25zdCBz
dGQ6OnN0cmluZyYgdXJsU3RyaW5nKQogewogICAgIHN0YXRpYyBjaGFyKiBjb25zdCBpZ25vcmVT
ZXRbXSA9IHsKICAgICAgICAgLy8gS2VlcGluZyB0aGlzIGluZnJhc3RydWN0dXJlIGFyb3VuZCBp
biBjYXNlIHdlIGV2ZXIgbmVlZCBpdCBhZ2Fpbi4KQEAgLTI1Nyw3ICsyNjAsNyBAQCBzdGF0aWMg
Ym9vbCBzaG91bGRJZ25vcmVXZWJDb3JlTm9kZUxlYWtzCiAKICAgICBmb3IgKGludCBpID0gMDsg
aSA8IGlnbm9yZVNldENvdW50OyBpKyspIHsKICAgICAgICAgLy8gRklYTUU6IGlnbm9yZSBjYXNl
Ci0gICAgICAgIHN0cmluZyBjdXJJZ25vcmUoaWdub3JlU2V0W2ldKTsKKyAgICAgICAgc3RkOjpz
dHJpbmcgY3VySWdub3JlKGlnbm9yZVNldFtpXSk7CiAgICAgICAgIC8vIE1hdGNoIGF0IHRoZSBl
bmQgb2YgdGhlIHVybFN0cmluZy4KICAgICAgICAgaWYgKCF1cmxTdHJpbmcuY29tcGFyZSh1cmxT
dHJpbmcubGVuZ3RoKCkgLSBjdXJJZ25vcmUubGVuZ3RoKCksIGN1cklnbm9yZS5sZW5ndGgoKSwg
Y3VySWdub3JlKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNjE1LDggKzYxOCw4IEBA
IC0gKE5TUmVjdClyZWN0Rm9yUGFydDooTlNTY3JvbGxlclBhcnQpcGEKICAgICBCT09MIGlzSG9y
aXpvbnRhbCA9IGZyYW1lUmVjdC5zaXplLndpZHRoID4gZnJhbWVSZWN0LnNpemUuaGVpZ2h0Owog
ICAgIENHRmxvYXQgdHJhY2tMZW5ndGggPSBpc0hvcml6b250YWwgPyBib3VuZHMuc2l6ZS53aWR0
aCA6IGJvdW5kcy5zaXplLmhlaWdodDsKICAgICBDR0Zsb2F0IG1pbktub2JTaXplID0gaXNIb3Jp
em9udGFsID8gYm91bmRzLnNpemUuaGVpZ2h0IDogYm91bmRzLnNpemUud2lkdGg7Ci0gICAgQ0dG
bG9hdCBrbm9iTGVuZ3RoID0gbWF4KG1pbktub2JTaXplLCBzdGF0aWNfY2FzdDxDR0Zsb2F0Pihy
b3VuZCh0cmFja0xlbmd0aCAqIFtzZWxmIGtub2JQcm9wb3J0aW9uXSkpKTsKLSAgICBDR0Zsb2F0
IGtub2JQb3NpdGlvbiA9IHN0YXRpY19jYXN0PENHRmxvYXQ+KChyb3VuZChbc2VsZiBkb3VibGVW
YWx1ZV0gKiAodHJhY2tMZW5ndGggLSBrbm9iTGVuZ3RoKSkpKTsKKyAgICBDR0Zsb2F0IGtub2JM
ZW5ndGggPSBzdGQ6Om1heChtaW5Lbm9iU2l6ZSwgc3RhdGljX2Nhc3Q8Q0dGbG9hdD4oc3RkOjpy
b3VuZCh0cmFja0xlbmd0aCAqIFtzZWxmIGtub2JQcm9wb3J0aW9uXSkpKTsKKyAgICBDR0Zsb2F0
IGtub2JQb3NpdGlvbiA9IHN0YXRpY19jYXN0PENHRmxvYXQ+KChzdGQ6OnJvdW5kKFtzZWxmIGRv
dWJsZVZhbHVlXSAqICh0cmFja0xlbmd0aCAtIGtub2JMZW5ndGgpKSkpOwogCiAgICAgaWYgKGlz
SG9yaXpvbnRhbCkKICAgICAgICAgcmV0dXJuIE5TTWFrZVJlY3QoYm91bmRzLm9yaWdpbi54ICsg
a25vYlBvc2l0aW9uLCBib3VuZHMub3JpZ2luLnksIGtub2JMZW5ndGgsIGJvdW5kcy5zaXplLmhl
aWdodCk7CkBAIC02NzIsNiArNjc1LDEwIEBAIFdlYlZpZXcgKmNyZWF0ZVdlYlZpZXdBbmRPZmZz
Y3JlZW5XaW5kb3cKICAgICBbd2ViVmlldyBzZXRHcm91cE5hbWU6QCJvcmcud2Via2l0LkR1bXBS
ZW5kZXJUcmVlIl07CiAjZW5kaWYKIAorICAgIFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcyA9
IFtbV2ViUHJlZmVyZW5jZXMgYWxsb2NdIGluaXRdOworICAgIFtwcmVmZXJlbmNlcyBzZXRBdXRv
c2F2ZXM6Tk9dOworICAgIFt3ZWJWaWV3IHNldFByZWZlcmVuY2VzOnByZWZlcmVuY2VzXTsKKwog
ICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6dWlEZWxlZ2F0ZV07CiAgICAgW3dlYlZpZXcgc2V0
RnJhbWVMb2FkRGVsZWdhdGU6ZnJhbWVMb2FkRGVsZWdhdGVdOwogICAgIFt3ZWJWaWV3IHNldEVk
aXRpbmdEZWxlZ2F0ZTplZGl0aW5nRGVsZWdhdGVdOwpAQCAtNjg1LDggKzY5Miw2IEBAIFdlYlZp
ZXcgKmNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3cKICAgICBbV2ViVmlldyByZWdpc3Rl
clVSTFNjaGVtZUFzTG9jYWw6QCJmZWVkcyJdOwogICAgIFtXZWJWaWV3IHJlZ2lzdGVyVVJMU2No
ZW1lQXNMb2NhbDpAImZlZWRzZWFyY2giXTsKIAotICAgIFtbd2ViVmlldyBwcmVmZXJlbmNlc10g
X3NldE1lZGlhUmVjb3JkZXJFbmFibGVkOllFU107Ci0KICNpZiBQTEFURk9STShNQUMpCiAgICAg
W3dlYlZpZXcgc2V0V2luZG93T2NjbHVzaW9uRGV0ZWN0aW9uRW5hYmxlZDpOT107CiAgICAgW1dl
YlZpZXcgX3NldEZvbnRBbGxvd0xpc3Q6Zm9udEFsbG93TGlzdCgpXTsKQEAgLTgwOCwzMiArODEz
LDMxIEBAIHN0YXRpYyBOU1N0cmluZyAqbGlicmFyeVBhdGhGb3JEdW1wUmVuZGUKICAgICAgICAg
cmV0dXJuIFtAIn4vTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0L0R1bXBSZW5kZXJUcmVlIiBz
dHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXTsKIH0KIAotc3RhdGljIHZvaWQgZW5hYmxlRXhw
ZXJpbWVudGFsRmVhdHVyZXMoV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzKQorc3RhdGljIHZv
aWQgZW5hYmxlRXhwZXJpbWVudGFsRmVhdHVyZXMoV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2Vz
KQogewogICAgIC8vIEZJWE1FOiBTcHJpbmdUaW1pbmdGdW5jdGlvbgorICAgIC8vIEZJWE1FOiBJ
bnB1dEV2ZW50cwogICAgIFtwcmVmZXJlbmNlcyBzZXRHYW1lcGFkc0VuYWJsZWQ6WUVTXTsKICAg
ICBbcHJlZmVyZW5jZXMgc2V0SGlnaGxpZ2h0QVBJRW5hYmxlZDpZRVNdOwogICAgIFtwcmVmZXJl
bmNlcyBzZXRMaW5rUHJlbG9hZEVuYWJsZWQ6WUVTXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0TWVk
aWFQcmVsb2FkaW5nRW5hYmxlZDpZRVNdOwotICAgIC8vIEZJWE1FOiBJbnB1dEV2ZW50cwogICAg
IFtwcmVmZXJlbmNlcyBzZXRGZXRjaEFQSUtlZXBBbGl2ZUVuYWJsZWQ6WUVTXTsKICAgICBbcHJl
ZmVyZW5jZXMgc2V0V2ViQW5pbWF0aW9uc0NvbXBvc2l0ZU9wZXJhdGlvbnNFbmFibGVkOllFU107
CiAgICAgW3ByZWZlcmVuY2VzIHNldFdlYkFuaW1hdGlvbnNNdXRhYmxlVGltZWxpbmVzRW5hYmxl
ZDpZRVNdOwogICAgIFtwcmVmZXJlbmNlcyBzZXRDU1NDdXN0b21Qcm9wZXJ0aWVzQW5kVmFsdWVz
RW5hYmxlZDpZRVNdOwogICAgIFtwcmVmZXJlbmNlcyBzZXRXZWJHTDJFbmFibGVkOllFU107Ci0g
ICAgLy8gRklYTUU6IEFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkCiAgICAgW3ByZWZlcmVuY2Vz
IHNldENhY2hlQVBJRW5hYmxlZDpOT107CiAgICAgW3ByZWZlcmVuY2VzIHNldFJlYWRhYmxlQnl0
ZVN0cmVhbUFQSUVuYWJsZWQ6WUVTXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0V3JpdGFibGVTdHJl
YW1BUElFbmFibGVkOllFU107CiAgICAgW3ByZWZlcmVuY2VzIHNldFRyYW5zZm9ybVN0cmVhbUFQ
SUVuYWJsZWQ6WUVTXTsKLSAgICBwcmVmZXJlbmNlcy5lbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQg
PSBZRVM7CisgICAgW3ByZWZlcmVuY2VzIHNldEVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZDpZRVNd
OwogICAgIFtwcmVmZXJlbmNlcyBzZXRBY2Nlc3NpYmlsaXR5T2JqZWN0TW9kZWxFbmFibGVkOllF
U107CiAgICAgW3ByZWZlcmVuY2VzIHNldEFyaWFSZWZsZWN0aW9uRW5hYmxlZDpZRVNdOwogICAg
IFtwcmVmZXJlbmNlcyBzZXRWaXN1YWxWaWV3cG9ydEFQSUVuYWJsZWQ6WUVTXTsKICAgICBbcHJl
ZmVyZW5jZXMgc2V0Q29sb3JGaWx0ZXJFbmFibGVkOllFU107CiAgICAgW3ByZWZlcmVuY2VzIHNl
dFNlcnZlclRpbWluZ0VuYWJsZWQ6WUVTXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0SW50ZXJzZWN0
aW9uT2JzZXJ2ZXJFbmFibGVkOllFU107Ci0gICAgcHJlZmVyZW5jZXMuc291cmNlQnVmZmVyQ2hh
bmdlVHlwZUVuYWJsZWQgPSBZRVM7CisgICAgW3ByZWZlcmVuY2VzIHNldFNvdXJjZUJ1ZmZlckNo
YW5nZVR5cGVFbmFibGVkOllFU107CiAgICAgW3ByZWZlcmVuY2VzIHNldENTU09NVmlld1Njcm9s
bGluZ0FQSUVuYWJsZWQ6WUVTXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0TWVkaWFSZWNvcmRlckVu
YWJsZWQ6WUVTXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0UmVmZXJyZXJQb2xpY3lBdHRyaWJ1dGVF
bmFibGVkOllFU107CkBAIC04NDQsOSArODQ4LDggQEAgc3RhdGljIHZvaWQgZW5hYmxlRXhwZXJp
bWVudGFsRmVhdHVyZXMoVwogfQogCiAvLyBDYWxsZWQgYmVmb3JlIGVhY2ggdGVzdC4KLXN0YXRp
YyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKQorc3RhdGljIHZv
aWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhXZWJQcmVmZXJlbmNlcyAq
cHJlZmVyZW5jZXMpCiB7Ci0gICAgV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzID0gW1dlYlBy
ZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdOwogICAgIGVuYWJsZUV4cGVyaW1lbnRhbEZl
YXR1cmVzKHByZWZlcmVuY2VzKTsKIAogICAgIFtwcmVmZXJlbmNlcyBzZXROZWVkc1N0b3JhZ2VB
Y2Nlc3NGcm9tRmlsZVVSTHNRdWlyazogTk9dOwpAQCAtODY2LDIxICs4NjksMTEgQEAgc3RhdGlj
IHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdAogICAgIFtwcmVmZXJlbmNlcyBzZXRK
YXZhRW5hYmxlZDpOT107CiAgICAgW3ByZWZlcmVuY2VzIHNldEphdmFTY3JpcHRFbmFibGVkOllF
U107CiAgICAgW3ByZWZlcmVuY2VzIHNldEVkaXRhYmxlTGlua0JlaGF2aW9yOldlYktpdEVkaXRh
YmxlTGlua09ubHlMaXZlV2l0aFNoaWZ0S2V5XTsKLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSAgICBbcHJlZmVyZW5jZXMgc2V0VGFic1RvTGlua3M6Tk9dOwotI2VuZGlmCiAgICAgW3ByZWZl
cmVuY2VzIHNldERPTVBhc3RlQWxsb3dlZDpZRVNdOwotI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQotICAgIFtwcmVmZXJlbmNlcyBzZXRTaG91bGRQcmludEJhY2tncm91bmRzOllFU107Ci0jZW5k
aWYKICAgICBbcHJlZmVyZW5jZXMgc2V0Q2FjaGVNb2RlbDpXZWJDYWNoZU1vZGVsRG9jdW1lbnRC
cm93c2VyXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0WFNTQXVkaXRvckVuYWJsZWQ6Tk9dOwogICAg
IFtwcmVmZXJlbmNlcyBzZXRFeHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZDpOT107CiAg
ICAgW3ByZWZlcmVuY2VzIHNldFBsdWdJbnNFbmFibGVkOllFU107Ci0jaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgW3ByZWZlcmVuY2VzIHNldFRleHRBcmVhc0FyZVJlc2l6YWJsZTpZRVNd
OwotI2VuZGlmCi0KICAgICBbcHJlZmVyZW5jZXMgc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDpO
T107CiAgICAgW3ByZWZlcmVuY2VzIHNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkOllFU107
CiAgICAgW3ByZWZlcmVuY2VzIHNldFNocmlua3NTdGFuZGFsb25lSW1hZ2VzVG9GaXQ6WUVTXTsK
QEAgLTg5NSwxMyArODg4LDcgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29u
c2lzdAogICAgIFtwcmVmZXJlbmNlcyBzZXRBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZDpOT107
CiAgICAgW3ByZWZlcmVuY2VzIHNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZDpOT107CiAgICAg
W3ByZWZlcmVuY2VzIHNldE1ldGFSZWZyZXNoRW5hYmxlZDpZRVNdOwotCi0gICAgaWYgKHBlcnNp
c3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uKSB7Ci0gICAgICAgIFtwcmVmZXJlbmNlcyBzZXRV
c2VyU3R5bGVTaGVldExvY2F0aW9uOltOU1VSTCBVUkxXaXRoU3RyaW5nOihfX2JyaWRnZSBOU1N0
cmluZyAqKXBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uLmdldCgpXV07Ci0gICAgICAg
IFtwcmVmZXJlbmNlcyBzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQ6WUVTXTsKLSAgICB9IGVsc2UK
LSAgICAgICAgW3ByZWZlcmVuY2VzIHNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZDpOT107Ci0KKyAg
ICBbcHJlZmVyZW5jZXMgc2V0SW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVB
dHRyaWJ1dGU6Tk9dOwogICAgIFtwcmVmZXJlbmNlcyBzZXRNZWRpYVBsYXliYWNrQWxsb3dzSW5s
aW5lOllFU107CiAgICAgW3ByZWZlcmVuY2VzIHNldE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJH
ZXN0dXJlOk5PXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0VmlkZW9QbGF5YmFja1JlcXVpcmVzVXNl
ckdlc3R1cmU6Tk9dOwpAQCAtOTA5LDkyICs4OTYsNzMgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQ
cmVmZXJlbmNlc1RvQ29uc2lzdAogICAgIFtwcmVmZXJlbmNlcyBzZXRNZWRpYURhdGFMb2Fkc0F1
dG9tYXRpY2FsbHk6WUVTXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0SW52aXNpYmxlQXV0b3BsYXlO
b3RQZXJtaXR0ZWQ6Tk9dOwogICAgIFtwcmVmZXJlbmNlcyBzZXRTdWJwaXhlbEFudGlhbGlhc2Vk
TGF5ZXJUZXh0RW5hYmxlZDpOT107Ci0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIC8v
IEVuYWJsZSB0aGUgdHJhY2tlciBiZWZvcmUgY3JlYXRpbmcgdGhlIGZpcnN0IFdlYlZpZXcgd2ls
bAotICAgIC8vIGNhdXNlIGluaXRpYWxpemF0aW9uIHRvIHVzZSB0aGUgY29ycmVjdCBkYXRhYmFz
ZSBwYXRocy4KLSAgICBbcHJlZmVyZW5jZXMgc2V0U3RvcmFnZVRyYWNrZXJFbmFibGVkOllFU107
Ci0jZW5kaWYKLQogICAgIFtwcmVmZXJlbmNlcyBfc2V0VGV4dEF1dG9zaXppbmdFbmFibGVkOk5P
XTsKLQotICAgIC8vIFRoZSBiYWNrL2ZvcndhcmQgY2FjaGUgaXMgY2F1c2luZyBwcm9ibGVtcyBk
dWUgdG8gbGF5b3V0cyBkdXJpbmcgdHJhbnNpdGlvbiBmcm9tIG9uZSBwYWdlIHRvIGFub3RoZXIu
Ci0gICAgLy8gU28sIHR1cm4gaXQgb2ZmIGZvciBub3csIGJ1dCB3ZSBtaWdodCB3YW50IHRvIHR1
cm4gaXQgYmFjayBvbiBzb21lIGRheS4KICAgICBbcHJlZmVyZW5jZXMgc2V0VXNlc1BhZ2VDYWNo
ZTpOT107CiAgICAgW3ByZWZlcmVuY2VzIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVk
OllFU107Ci0jaWYgVVNFKENBKQotICAgIFtwcmVmZXJlbmNlcyBzZXRDYW52YXNVc2VzQWNjZWxl
cmF0ZWREcmF3aW5nOllFU107Ci0gICAgW3ByZWZlcmVuY2VzIHNldEFjY2VsZXJhdGVkRHJhd2lu
Z0VuYWJsZWQ6dXNlQWNjZWxlcmF0ZWREcmF3aW5nXTsKLSNlbmRpZgogICAgIFtwcmVmZXJlbmNl
cyBzZXRVc2VQcmVIVE1MNVBhcnNlclF1aXJrczpOT107CiAgICAgW3ByZWZlcmVuY2VzIHNldEFz
eW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOk5PXTsKLSNpZiAhUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICBBU1NFUlQoW3ByZWZlcmVuY2VzIG1vY2tTY3JvbGxiYXJzRW5hYmxlZF0pOwot
I2VuZGlmCi0KKyAgICBbcHJlZmVyZW5jZXMgc2V0TW9ja1Njcm9sbGJhcnNFbmFibGVkOllFU107
CiAgICAgW3ByZWZlcmVuY2VzIHNldFdlYkF1ZGlvRW5hYmxlZDpZRVNdOwogICAgIFtwcmVmZXJl
bmNlcyBzZXRNb2Rlcm5VbnByZWZpeGVkV2ViQXVkaW9FbmFibGVkOllFU107CiAgICAgW3ByZWZl
cmVuY2VzIHNldE1lZGlhU291cmNlRW5hYmxlZDpZRVNdOwogICAgIFtwcmVmZXJlbmNlcyBzZXRT
b3VyY2VCdWZmZXJDaGFuZ2VUeXBlRW5hYmxlZDpZRVNdOwotCiAgICAgW3ByZWZlcmVuY2VzIHNl
dERhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZDpZRVNdOwogICAgIFtwcmVmZXJlbmNlcyBzZXRDdXN0
b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQ6WUVTXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0RGlhbG9n
RWxlbWVudEVuYWJsZWQ6WUVTXTsKLQogICAgIFtwcmVmZXJlbmNlcyBzZXRXZWJHTDJFbmFibGVk
OllFU107Ci0KICAgICBbcHJlZmVyZW5jZXMgc2V0RG93bmxvYWRBdHRyaWJ1dGVFbmFibGVkOllF
U107CiAgICAgW3ByZWZlcmVuY2VzIHNldERpcmVjdG9yeVVwbG9hZEVuYWJsZWQ6WUVTXTsKLQog
ICAgIFtwcmVmZXJlbmNlcyBzZXRIaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nRW5hYmxlZDpO
T107CiAgICAgW3ByZWZlcmVuY2VzIHNldEhpZGRlblBhZ2VDU1NBbmltYXRpb25TdXNwZW5zaW9u
RW5hYmxlZDpOT107CiAgICAgW3ByZWZlcmVuY2VzIHNldFJlbW90ZVBsYXliYWNrRW5hYmxlZDpZ
RVNdOwotCiAgICAgW3ByZWZlcmVuY2VzIHNldE1lZGlhRGV2aWNlc0VuYWJsZWQ6WUVTXTsKLQog
ICAgIFtwcmVmZXJlbmNlcyBzZXRMYXJnZUltYWdlQXN5bmNEZWNvZGluZ0VuYWJsZWQ6Tk9dOwot
CiAgICAgW3ByZWZlcmVuY2VzIHNldE1vZGVybk1lZGlhQ29udHJvbHNFbmFibGVkOllFU107Cisg
ICAgW3ByZWZlcmVuY2VzIHNldE1lZGlhQ2FwYWJpbGl0aWVzRW5hYmxlZDpZRVNdOworICAgIFtw
cmVmZXJlbmNlcyBzZXRTZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzRW5hYmxlZDpZRVNd
OworICAgIFtwcmVmZXJlbmNlcyBzZXRGdWxsU2NyZWVuRW5hYmxlZDpZRVNdOworICAgIFtwcmVm
ZXJlbmNlcyBzZXRXZWJTUUxFbmFibGVkOllFU107CiAKLSAgICBbcHJlZmVyZW5jZXMgc2V0Q2Fj
aGVBUElFbmFibGVkOk5PXTsKLSAgICBwcmVmZXJlbmNlcy5tZWRpYUNhcGFiaWxpdGllc0VuYWJs
ZWQgPSBZRVM7CisgICAgaWYgKHBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uKSB7Cisg
ICAgICAgIFtwcmVmZXJlbmNlcyBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uOltOU1VSTCBVUkxX
aXRoU3RyaW5nOihfX2JyaWRnZSBOU1N0cmluZyAqKXBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExv
Y2F0aW9uLmdldCgpXV07CisgICAgICAgIFtwcmVmZXJlbmNlcyBzZXRVc2VyU3R5bGVTaGVldEVu
YWJsZWQ6WUVTXTsKKyAgICB9IGVsc2UKKyAgICAgICAgW3ByZWZlcmVuY2VzIHNldFVzZXJTdHls
ZVNoZWV0RW5hYmxlZDpOT107CiAKLSAgICBwcmVmZXJlbmNlcy5zZWxlY3Rpb25BY3Jvc3NTaGFk
b3dCb3VuZGFyaWVzRW5hYmxlZCA9IFlFUzsKKyNpZiBVU0UoQ0EpCisgICAgW3ByZWZlcmVuY2Vz
IHNldENhbnZhc1VzZXNBY2NlbGVyYXRlZERyYXdpbmc6WUVTXTsKKyAgICBbcHJlZmVyZW5jZXMg
c2V0QWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZDp1c2VBY2NlbGVyYXRlZERyYXdpbmddOworI2Vu
ZGlmCiAKLSAgICBbcHJlZmVyZW5jZXMgc2V0V2ViU1FMRW5hYmxlZDpZRVNdOworI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisgICAgLy8gRW5hYmxlIHRoZSB0cmFja2VyIGJlZm9yZSBjcmVhdGlu
ZyB0aGUgZmlyc3QgV2ViVmlldyB3aWxsCisgICAgLy8gY2F1c2UgaW5pdGlhbGl6YXRpb24gdG8g
dXNlIHRoZSBjb3JyZWN0IGRhdGFiYXNlIHBhdGhzLgorICAgIFtwcmVmZXJlbmNlcyBzZXRTdG9y
YWdlVHJhY2tlckVuYWJsZWQ6WUVTXTsKKyNlbHNlCisgICAgW3ByZWZlcmVuY2VzIHNldFRhYnNU
b0xpbmtzOk5PXTsKKyAgICBbcHJlZmVyZW5jZXMgc2V0U2hvdWxkUHJpbnRCYWNrZ3JvdW5kczpZ
RVNdOworICAgIFtwcmVmZXJlbmNlcyBzZXRUZXh0QXJlYXNBcmVSZXNpemFibGU6WUVTXTsKKyNl
bmRpZgogCiAgICAgW1dlYlByZWZlcmVuY2VzIF9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uXTsK
ICAgICBbV2ViUHJlZmVyZW5jZXMgX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tp
ZUFjY2VwdFBvbGljeTpOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVu
dERvbWFpbl07CiB9CiAKLXN0YXRpYyB2b2lkIHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlv
bnMoY29uc3QgV1RSOjpUZXN0T3B0aW9ucyYgb3B0aW9ucykKK3N0YXRpYyB2b2lkIHNldFdlYlBy
ZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMoV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzLCBjb25z
dCBXVFI6OlRlc3RPcHRpb25zJiBvcHRpb25zKQogewotICAgIFdlYlByZWZlcmVuY2VzICpwcmVm
ZXJlbmNlcyA9IFtXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXTsKKyAgICBwcmVm
ZXJlbmNlcy5wcml2YXRlQnJvd3NpbmdFbmFibGVkID0gb3B0aW9ucy51c2VFcGhlbWVyYWxTZXNz
aW9uKCk7CiAKLSAgICBwcmVmZXJlbmNlcy5hdHRhY2htZW50RWxlbWVudEVuYWJsZWQgPSBvcHRp
b25zLmVuYWJsZUF0dGFjaG1lbnRFbGVtZW50OwotICAgIHByZWZlcmVuY2VzLmFjY2VsZXJhdGVk
RHJhd2luZ0VuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUFjY2VsZXJhdGVkRHJhd2luZzsKLSAgICBw
cmVmZXJlbmNlcy5tZW51SXRlbUVsZW1lbnRFbmFibGVkID0gb3B0aW9ucy5lbmFibGVNZW51SXRl
bUVsZW1lbnQ7Ci0gICAgcHJlZmVyZW5jZXMua2V5Z2VuRWxlbWVudEVuYWJsZWQgPSBvcHRpb25z
LmVuYWJsZUtleWdlbkVsZW1lbnQ7Ci0gICAgcHJlZmVyZW5jZXMubW9kZXJuTWVkaWFDb250cm9s
c0VuYWJsZWQgPSBvcHRpb25zLmVuYWJsZU1vZGVybk1lZGlhQ29udHJvbHM7Ci0gICAgcHJlZmVy
ZW5jZXMuaW5zcGVjdG9yQWRkaXRpb25zRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlSW5zcGVjdG9y
QWRkaXRpb25zOwotICAgIHByZWZlcmVuY2VzLmFsbG93Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNU
b0Fza0ZvckNyZWRlbnRpYWxzID0gb3B0aW9ucy5hbGxvd0Nyb3NzT3JpZ2luU3VicmVzb3VyY2Vz
VG9Bc2tGb3JDcmVkZW50aWFsczsKLSAgICBwcmVmZXJlbmNlcy5jb2xvckZpbHRlckVuYWJsZWQg
PSBvcHRpb25zLmVuYWJsZUNvbG9yRmlsdGVyOwotICAgIHByZWZlcmVuY2VzLnNlbGVjdGlvbkFj
cm9zc1NoYWRvd0JvdW5kYXJpZXNFbmFibGVkID0gb3B0aW9ucy5lbmFibGVTZWxlY3Rpb25BY3Jv
c3NTaGFkb3dCb3VuZGFyaWVzOwotICAgIHByZWZlcmVuY2VzLndlYkdQVUVuYWJsZWQgPSBvcHRp
b25zLmVuYWJsZVdlYkdQVTsKLSAgICBwcmVmZXJlbmNlcy5DU1NMb2dpY2FsRW5hYmxlZCA9IG9w
dGlvbnMuZW5hYmxlQ1NTTG9naWNhbDsKLSAgICBwcmVmZXJlbmNlcy5saW5lSGVpZ2h0VW5pdHNF
bmFibGVkID0gb3B0aW9ucy5lbmFibGVMaW5lSGVpZ2h0VW5pdHM7Ci0gICAgcHJlZmVyZW5jZXMu
YWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCA9IG9wdGlvbnMuYWRDbGlja0F0dHJpYnV0aW9uRW5h
YmxlZDsKLSAgICBwcmVmZXJlbmNlcy5yZXNpemVPYnNlcnZlckVuYWJsZWQgPSBvcHRpb25zLmVu
YWJsZVJlc2l6ZU9ic2VydmVyOwotICAgIHByZWZlcmVuY2VzLkNTU09NVmlld1Ntb290aFNjcm9s
bGluZ0VuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUNTU09NVmlld1Ntb290aFNjcm9sbGluZzsKLSAg
ICBwcmVmZXJlbmNlcy5jb3JlTWF0aE1MRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlQ29yZU1hdGhN
TDsKLSAgICBwcmVmZXJlbmNlcy5yZXF1ZXN0SWRsZUNhbGxiYWNrRW5hYmxlZCA9IG9wdGlvbnMu
ZW5hYmxlUmVxdWVzdElkbGVDYWxsYmFjazsKLSAgICBwcmVmZXJlbmNlcy5hc3luY0NsaXBib2Fy
ZEFQSUVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUFzeW5jQ2xpcGJvYXJkQVBJOwotICAgIHByZWZl
cmVuY2VzLnByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBvcHRpb25zLnVzZUVwaGVtZXJhbFNlc3Np
b247Ci0gICAgcHJlZmVyZW5jZXMudXNlc1BhZ2VDYWNoZSA9IG9wdGlvbnMuZW5hYmxlQmFja0Zv
cndhcmRDYWNoZTsKLSAgICBwcmVmZXJlbmNlcy5sYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVn
cmF0aW9uRW5hYmxlZCA9IG9wdGlvbnMubGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlv
bkVuYWJsZWQ7Ci0gICAgcHJlZmVyZW5jZXMuYXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhl
aWdodEVuYWJsZWQgPSBvcHRpb25zLmVuYWJsZUFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRI
ZWlnaHQ7Ci0gICAgcHJlZmVyZW5jZXMuYWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyA9IG9w
dGlvbnMuYWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMczsKLSAgICBwcmVmZXJlbmNlcy5jb250
YWN0UGlja2VyQVBJRW5hYmxlZCA9IG9wdGlvbnMuZW5hYmxlQ29udGFjdFBpY2tlckFQSTsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuYm9vbFdlYlByZWZlcmVu
Y2VGZWF0dXJlcygpKQorICAgICAgICBbcHJlZmVyZW5jZXMgX3NldEJvb2xQcmVmZXJlbmNlRm9y
VGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZSBmb3JLZXk6dG9OUyhXVFI6OlRlc3RPcHRpb25zOjp0b1dl
YktpdExlZ2FjeVByZWZlcmVuY2VLZXkoa2V5KSkuZ2V0KCldOworCisgICAgZm9yIChjb25zdCBh
dXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLmRvdWJsZVdlYlByZWZlcmVuY2VGZWF0dXJlcygp
KQorICAgICAgICBbcHJlZmVyZW5jZXMgX3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0
aFZhbHVlOnZhbHVlIGZvcktleTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5
UHJlZmVyZW5jZUtleShrZXkpKS5nZXQoKV07CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXks
IHZhbHVlXSA6IG9wdGlvbnMudWludDMyV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAg
IFtwcmVmZXJlbmNlcyBfc2V0VUludDMyUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dmFs
dWUgZm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNl
S2V5KGtleSkpLmdldCgpXTsKKworICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDog
b3B0aW9ucy5zdHJpbmdXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAgICAgW3ByZWZlcmVu
Y2VzIF9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp0b05TKHZhbHVlKS5n
ZXQoKSBmb3JLZXk6dG9OUyhXVFI6OlRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVu
Y2VLZXkoa2V5KSkuZ2V0KCldOwogfQogCiAvLyBDYWxsZWQgb25jZSBvbiBEdW1wUmVuZGVyVHJl
ZSBzdGFydHVwLgpAQCAtMTAxOCw5ICs5ODYsNiBAQCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0c1Rv
Q29uc2lzdGVudFZhbHVlCiAgICAgICAgIEAiQXBwbGVPdGhlckhpZ2hsaWdodENvbG9yIjpAIjAu
NTAwMDAwIDAuNTAwMDAwIDAuNTAwMDAwIiwKICAgICAgICAgQCJBcHBsZUxhbmd1YWdlcyI6IEBb
IEAiZW4iIF0sCiAgICAgICAgIFdlYktpdEVuYWJsZUZ1bGxEb2N1bWVudFRlYXJkb3duUHJlZmVy
ZW5jZUtleTogQFlFUywKLSAgICAgICAgV2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNl
S2V5OiBAWUVTLAotICAgICAgICBXZWJLaXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrUHJlZmVy
ZW5jZUtleTogQFlFUywKLSAgICAgICAgV2ViS2l0SW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVz
UGxheXNJbmxpbmVBdHRyaWJ1dGVLZXk6IEBOTywKICAgICAgICAgQCJVc2VXZWJLaXRXZWJJbnNw
ZWN0b3IiOiBAWUVTLAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBAIk5TUHJl
ZmVycmVkU3BlbGxTZXJ2ZXJMYW5ndWFnZSI6IEAiZW5fVVMiLApAQCAtMTQzMSw3ICsxMzk2LDcg
QEAgc3RhdGljIE5TSW50ZWdlciBjb21wYXJlSGlzdG9yeUl0ZW1zKGlkIAogCiBzdGF0aWMgTlNE
YXRhICpkdW1wQXVkaW8oKQogewotICAgIGNvbnN0IHZlY3RvcjxjaGFyPiYgZGF0YVZlY3RvciA9
IGdUZXN0UnVubmVyLT5hdWRpb1Jlc3VsdCgpOworICAgIGNvbnN0IGF1dG8mIGRhdGFWZWN0b3Ig
PSBnVGVzdFJ1bm5lci0+YXVkaW9SZXN1bHQoKTsKIAogICAgIE5TRGF0YSAqZGF0YSA9IFtOU0Rh
dGEgZGF0YVdpdGhCeXRlczpkYXRhVmVjdG9yLmRhdGEoKSBsZW5ndGg6ZGF0YVZlY3Rvci5zaXpl
KCldOwogICAgIHJldHVybiBkYXRhOwpAQCAtMTYyNyw3ICsxNTkyLDcgQEAgc3RhdGljIHZvaWQg
c2l6ZVdlYlZpZXdGb3JDdXJyZW50VGVzdCgpCiAgICAgW3VpRGVsZWdhdGUgcmVzZXRXaW5kb3dP
cmlnaW5dOwogCiAgICAgLy8gVzNDIFNWRyB0ZXN0cyBleHBlY3QgdG8gYmUgNDgweDM2MAotICAg
IGJvb2wgaXNTVkdXM0NUZXN0ID0gKGdUZXN0UnVubmVyLT50ZXN0VVJMKCkuZmluZCgic3ZnL1cz
Qy1TVkctMS4xIikgIT0gc3RyaW5nOjpucG9zKTsKKyAgICBib29sIGlzU1ZHVzNDVGVzdCA9IChn
VGVzdFJ1bm5lci0+dGVzdFVSTCgpLmZpbmQoInN2Zy9XM0MtU1ZHLTEuMSIpICE9IHN0ZDo6c3Ry
aW5nOjpucG9zKTsKICAgICBOU1NpemUgZnJhbWVTaXplID0gaXNTVkdXM0NUZXN0ID8gTlNNYWtl
U2l6ZShUZXN0UnVubmVyOjp3M2NTVkdWaWV3V2lkdGgsIFRlc3RSdW5uZXI6OnczY1NWR1ZpZXdI
ZWlnaHQpIDogTlNNYWtlU2l6ZShUZXN0UnVubmVyOjp2aWV3V2lkdGgsIFRlc3RSdW5uZXI6OnZp
ZXdIZWlnaHQpOwogICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldEZyYW1lU2l6ZTpmcmFtZVNp
emVdOwogICAgIFtbbWFpbkZyYW1lIGZyYW1lVmlld10gc2V0RnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCBmcmFtZVNpemUud2lkdGgsIGZyYW1lU2l6ZS5oZWlnaHQpXTsKQEAgLTE4MjYsOSArMTc5MSw5
IEBAIHN0YXRpYyB2b2lkIHNldEpTQ09wdGlvbnMoY29uc3QgV1RSOjpUZXMKICAgICAgICAgc2F2
ZWRPcHRpb25zLmNsZWFyKCk7CiAgICAgfQogCi0gICAgaWYgKG9wdGlvbnMuanNjT3B0aW9ucy5s
ZW5ndGgoKSkgeworICAgIGlmICghb3B0aW9ucy5qc2NPcHRpb25zKCkuZW1wdHkoKSkgewogICAg
ICAgICBKU0M6Ok9wdGlvbnM6OmR1bXBBbGxPcHRpb25zSW5BTGluZShzYXZlZE9wdGlvbnMpOwot
ICAgICAgICBKU0M6Ok9wdGlvbnM6OnNldE9wdGlvbnMob3B0aW9ucy5qc2NPcHRpb25zLmNfc3Ry
KCkpOworICAgICAgICBKU0M6Ok9wdGlvbnM6OnNldE9wdGlvbnMob3B0aW9ucy5qc2NPcHRpb25z
KCkuY19zdHIoKSk7CiAgICAgfQogfQogCkBAIC0xODM5LDYgKzE4MDQsMTAgQEAgc3RhdGljIHZv
aWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdAogCiAgICAgV2ViVmlldyAqd2ViVmlldyA9
IFttYWluRnJhbWUgd2ViVmlld107CiAKKyAgICBXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMg
PSBbW1dlYlByZWZlcmVuY2VzIGFsbG9jXSBpbml0XTsKKyAgICBbcHJlZmVyZW5jZXMgc2V0QXV0
b3NhdmVzOk5PXTsKKyAgICBbd2ViVmlldyBzZXRQcmVmZXJlbmNlczpwcmVmZXJlbmNlc107CisK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGFkanVzdFdlYkRvY3VtZW50Rm9yU3RhbmRh
cmRWaWV3cG9ydChnV2ViQnJvd3NlclZpZXcsIGdXZWJTY3JvbGxWaWV3KTsKICAgICBbd2ViVmll
dyBfc2V0QWxsb3dzTWVzc2FnaW5nOllFU107CkBAIC0xODY3LDEwICsxODM2LDEwIEBAIHN0YXRp
YyB2b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXQKIAogICAgIFtXZWJDYWNoZSBjbGVh
ckNhY2hlZENyZWRlbnRpYWxzXTsKIAotICAgIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3Rl
bnRWYWx1ZXMoKTsKLSAgICBzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKG9wdGlvbnMp
OworICAgIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMocHJlZmVyZW5jZXMp
OworICAgIHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMocHJlZmVyZW5jZXMsIG9wdGlv
bnMpOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBbd2ViVmlldyBzZXRXYW50c0xheWVyOm9wdGlv
bnMubGF5ZXJCYWNrZWRXZWJWaWV3XTsKKyAgICBbd2ViVmlldyBzZXRXYW50c0xheWVyOm9wdGlv
bnMubGF5ZXJCYWNrZWRXZWJWaWV3KCldOwogI2VuZGlmCiAKICAgICBUZXN0UnVubmVyOjpzZXRT
ZXJpYWxpemVIVFRQTG9hZHMoZmFsc2UpOwpAQCAtMTkxNCw3ICsxODgzLDcgQEAgc3RhdGljIHZv
aWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdAogICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVy
YWxQYXN0ZWJvYXJkXSBkZWNsYXJlVHlwZXM6QFtOU1N0cmluZ1Bib2FyZFR5cGVdIG93bmVyOm5p
bF07CiAjZW5kaWYKIAotICAgIFdlYkNvcmVUZXN0U3VwcG9ydDo6c2V0QWRkaXRpb25hbFN1cHBv
cnRlZEltYWdlVHlwZXNGb3JUZXN0aW5nKG9wdGlvbnMuYWRkaXRpb25hbFN1cHBvcnRlZEltYWdl
VHlwZXMuY19zdHIoKSk7CisgICAgV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRBZGRpdGlvbmFsU3Vw
cG9ydGVkSW1hZ2VUeXBlc0ZvclRlc3Rpbmcob3B0aW9ucy5hZGRpdGlvbmFsU3VwcG9ydGVkSW1h
Z2VUeXBlcygpLmNfc3RyKCkpOwogCiAgICAgW21haW5GcmFtZSBfY2xlYXJPcGVuZXJdOwogCkBA
IC0xOTcwLDE5ICsxOTM5LDE5IEBAIHN0YXRpYyBOU1VSTCAqY29tcHV0ZVRlc3RVUkwoTlNTdHJp
bmcgKnAKIAogc3RhdGljIFdUUjo6VGVzdE9wdGlvbnMgdGVzdE9wdGlvbnNGb3JUZXN0KGNvbnN0
IFdUUjo6VGVzdENvbW1hbmQmIGNvbW1hbmQpCiB7Ci0gICAgV1RSOjpUZXN0RmVhdHVyZXMgZmVh
dHVyZXM7CisgICAgV1RSOjpUZXN0RmVhdHVyZXMgZmVhdHVyZXMgPSBXVFI6OlRlc3RPcHRpb25z
OjpkZWZhdWx0cygpOwogICAgIFdUUjo6bWVyZ2UoZmVhdHVyZXMsIFdUUjo6aGFyZGNvZGVkRmVh
dHVyZXNCYXNlZE9uUGF0aEZvclRlc3QoY29tbWFuZCkpOwogICAgIFdUUjo6bWVyZ2UoZmVhdHVy
ZXMsIFdUUjo6ZmVhdHVyZURlZmF1bHRzRnJvbVRlc3RIZWFkZXJGb3JUZXN0KGNvbW1hbmQsIFdU
Ujo6VGVzdE9wdGlvbnM6OmtleVR5cGVNYXBwaW5nKCkpKTsKIAogICAgIHJldHVybiBXVFI6OlRl
c3RPcHRpb25zIHsgV1RGTW92ZShmZWF0dXJlcykgfTsKIH0KIAotc3RhdGljIHZvaWQgcnVuVGVz
dChjb25zdCBzdHJpbmcmIGlucHV0TGluZSkKK3N0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3Rk
OjpzdHJpbmcmIGlucHV0TGluZSkKIHsKICAgICBBU1NFUlQoIWlucHV0TGluZS5lbXB0eSgpKTsK
IAogICAgIGF1dG8gY29tbWFuZCA9IFdUUjo6cGFyc2VJbnB1dExpbmUoaW5wdXRMaW5lKTsKLSAg
ICBjb25zdCBzdHJpbmcmIHBhdGhPclVSTCA9IGNvbW1hbmQucGF0aE9yVVJMOworICAgIGF1dG8g
cGF0aE9yVVJMID0gY29tbWFuZC5wYXRoT3JVUkw7CiAgICAgZHVtcFBpeGVsc0ZvckN1cnJlbnRU
ZXN0ID0gY29tbWFuZC5zaG91bGREdW1wUGl4ZWxzIHx8IGR1bXBQaXhlbHNGb3JBbGxUZXN0czsK
IAogICAgIE5TU3RyaW5nICpwYXRoT3JVUkxTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aFVU
RjhTdHJpbmc6cGF0aE9yVVJMLmNfc3RyKCldOwpAQCAtMjAxNyw3ICsxOTg2LDcgQEAgc3RhdGlj
IHZvaWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIGlucHV0TAogICAgIGdUZXN0UnVubmVyID0gVGVz
dFJ1bm5lcjo6Y3JlYXRlKHRlc3RVUkwsIGNvbW1hbmQuZXhwZWN0ZWRQaXhlbEhhc2gpOwogICAg
IGdUZXN0UnVubmVyLT5zZXRBbGxvd2VkSG9zdHMoYWxsb3dlZEhvc3RzKTsKICAgICBnVGVzdFJ1
bm5lci0+c2V0Q3VzdG9tVGltZW91dChjb21tYW5kLnRpbWVvdXQubWlsbGlzZWNvbmRzKCkpOwot
ICAgIGdUZXN0UnVubmVyLT5zZXREdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoY29tbWFuZC5kdW1w
SlNDb25zb2xlTG9nSW5TdGRFcnIgfHwgb3B0aW9ucy5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIp
OworICAgIGdUZXN0UnVubmVyLT5zZXREdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoY29tbWFuZC5k
dW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgfHwgb3B0aW9ucy5kdW1wSlNDb25zb2xlTG9nSW5TdGRF
cnIoKSk7CiAKICAgICByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZShvcHRpb25zLCBSZXNl
dFRpbWU6OkJlZm9yZVRlc3QpOwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVz
dFJ1bm5lck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVz
dFJ1bm5lck1hYy5tbQkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL1Rlc3RSdW5uZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3NiwxNCArNTc2LDE0IEBA
IHZvaWQgVGVzdFJ1bm5lcjo6c2V0UGFnZVBhdXNlZChib29sIHBhdXMKIAogdm9pZCBUZXN0UnVu
bmVyOjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQoYm9vbCBmbGFnKQogewotICAgIFtbV2ViUHJl
ZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkOmZs
YWddOworICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0VXNlclN0eWxl
U2hlZXRFbmFibGVkOmZsYWddOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNo
ZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYgcGF0aCkKIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHBhdGhDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgcGF0aCkpOwogICAgIE5TVVJMICp1cmwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzooX19i
cmlkZ2UgTlNTdHJpbmcgKilwYXRoQ0YuZ2V0KCldOwotICAgIFtbV2ViUHJlZmVyZW5jZXMgc3Rh
bmRhcmRQcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbjp1cmxdOworICAgIFtb
W21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlv
bjp1cmxdOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0LCBKU1N0cmluZ1JlZiB2YWx1ZSkKQEAg
LTYwOSw3ICs2MDksNyBAQCB2b2lkIFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZShKU1N0
CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB2YWx1ZUNGID0gYWRvcHRDRihKU1N0cmluZ0Nv
cHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB2YWx1ZSkpOwogICAgIE5TU3RyaW5nICp2
YWx1ZU5TID0gKF9fYnJpZGdlIE5TU3RyaW5nICopdmFsdWVDRi5nZXQoKTsKIAotICAgIFtbV2Vi
UHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10gX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0
aFZhbHVlOnZhbHVlTlMgZm9yS2V5OmtleU5TXTsKKyAgICBbW1ttYWluRnJhbWUgd2ViVmlld10g
cHJlZmVyZW5jZXNdIF9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1
ZU5TIGZvcktleTprZXlOU107CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQWxsVmlzaXRl
ZExpbmtzKCkKQEAgLTcwMCw3ICs3MDAsNyBAQCBib29sIFRlc3RSdW5uZXI6OmZpbmRTdHJpbmco
SlNDb250ZXh0UmVmCiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0Q2FjaGVNb2RlbChpbnQgY2FjaGVN
b2RlbCkKIHsKLSAgICBbW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdIHNldENh
Y2hlTW9kZWw6KFdlYkNhY2hlTW9kZWwpY2FjaGVNb2RlbF07CisgICAgW1tbbWFpbkZyYW1lIHdl
YlZpZXddIHByZWZlcmVuY2VzXSBzZXRDYWNoZU1vZGVsOihXZWJDYWNoZU1vZGVsKWNhY2hlTW9k
ZWxdOwogfQogCiBib29sIFRlc3RSdW5uZXI6OmlzQ29tbWFuZEVuYWJsZWQoSlNTdHJpbmdSZWYg
bmFtZSkKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCShyZXZpc2lv
biAyNjg2NDgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQkod29y
a2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCAtICh2b2lkKXJlc2V0V2luZG93T3JpZ2luCiAK
IC0gKHZvaWQpcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rpbmc6KGNvbnN0IFdUUjo6
VGVzdE9wdGlvbnMmKW9wdGlvbnMKIHsKLSAgICBtX2VuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlv
bkxvYWQgPSBvcHRpb25zLmVuYWJsZURyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQ7CisgICAgbV9l
bmFibGVEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkID0gb3B0aW9ucy5lbmFibGVEcmFnRGVzdGlu
YXRpb25BY3Rpb25Mb2FkKCk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRl
ciBzZXRGcmFtZTooTlNSZWN0KWZyYW1lCkBAIC0xNzksNyArMTc5LDggQEAgLSAoV2ViVmlldyAq
KXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgYwogICAgIEFTU0VSVChnVGVzdFJ1bm5lci0+d2Fp
dFRvRHVtcCgpKTsKIAogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBjcmVhdGVXZWJWaWV3QW5kT2Zm
c2NyZWVuV2luZG93KCk7Ci0gICAgCisgICAgW3dlYlZpZXcgc2V0UHJlZmVyZW5jZXM6W3NlbmRl
ciBwcmVmZXJlbmNlc11dOworCiAgICAgaWYgKGdUZXN0UnVubmVyLT5uZXdXaW5kb3dzQ29weUJh
Y2tGb3J3YXJkTGlzdCgpKQogICAgICAgICBbd2ViVmlldyBfbG9hZEJhY2tGb3J3YXJkTGlzdEZy
b21PdGhlclZpZXc6c2VuZGVyXTsKICAgICAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9EdW1wUmVuZGVyVHJlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0R1bXBSZW5kZXJUcmVlLmNwcAkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTA2LDI4
ICs5MDYsMzcgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdAogCiAg
ICAgcHJlZmVyZW5jZXMtPnNldEZvbnRTbW9vdGhpbmcoRm9udFNtb290aGluZ1R5cGVTdGFuZGFy
ZCk7CiAKKyAgICBwcmVmc1ByaXZhdGUtPnNldFdlYlNRTEVuYWJsZWQodHJ1ZSk7CisKICAgICBw
cmVmc1ByaXZhdGUtPnNldERhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZChUUlVFKTsKICAgICBwcmVm
c1ByaXZhdGUtPmNsZWFyTmV0d29ya0xvYWRlclNlc3Npb24oKTsKIAogICAgIHNldEFsd2F5c0Fj
Y2VwdENvb2tpZXMoZmFsc2UpOwogfQogCitzdGF0aWMgYm9vbCBib29sV2ViUHJlZmVyZW5jZUZl
YXR1cmVWYWx1ZShzdGQ6OnN0cmluZyBrZXksIGJvb2wgZGVmYXVsdFZhbHVlLCBjb25zdCBXVFI6
OlRlc3RPcHRpb25zJiBvcHRpb25zKQoreworICAgIGF1dG8gaXQgPSBvcHRpb25zLmJvb2xXZWJQ
cmVmZXJlbmNlRmVhdHVyZXMoKS5maW5kKGtleSk7CisgICAgaWYgKGl0ICE9IG9wdGlvbnMuYm9v
bFdlYlByZWZlcmVuY2VGZWF0dXJlcygpLmVuZCgpKQorICAgICAgICByZXR1cm4gaXQtPnNlY29u
ZDsKKyAgICByZXR1cm4gZGVmYXVsdFZhbHVlOworfQorCiBzdGF0aWMgdm9pZCBzZXRXZWJQcmVm
ZXJlbmNlc0ZvclRlc3RPcHRpb25zKElXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMsIGNvbnN0
IFdUUjo6VGVzdE9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNl
c1ByaXZhdGU4PiBwcmVmc1ByaXZhdGUgeyBRdWVyeSwgcHJlZmVyZW5jZXMgfTsKIAotICAgIHBy
ZWZzUHJpdmF0ZS0+c2V0TWVudUl0ZW1FbGVtZW50RW5hYmxlZChvcHRpb25zLmVuYWJsZU1lbnVJ
dGVtRWxlbWVudCk7Ci0gICAgcHJlZnNQcml2YXRlLT5zZXRLZXlnZW5FbGVtZW50RW5hYmxlZChv
cHRpb25zLmVuYWJsZUtleWdlbkVsZW1lbnQpOwotICAgIHByZWZzUHJpdmF0ZS0+c2V0TW9kZXJu
TWVkaWFDb250cm9sc0VuYWJsZWQob3B0aW9ucy5lbmFibGVNb2Rlcm5NZWRpYUNvbnRyb2xzKTsK
LSAgICBwcmVmc1ByaXZhdGUtPnNldEluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQob3B0aW9ucy5l
bmFibGVJbnNwZWN0b3JBZGRpdGlvbnMpOwotICAgIHByZWZzUHJpdmF0ZS0+c2V0UmVxdWVzdElk
bGVDYWxsYmFja0VuYWJsZWQob3B0aW9ucy5lbmFibGVSZXF1ZXN0SWRsZUNhbGxiYWNrKTsKLSAg
ICBwcmVmc1ByaXZhdGUtPnNldEFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxlZChvcHRpb25zLmVuYWJs
ZUFzeW5jQ2xpcGJvYXJkQVBJKTsKLSAgICBwcmVmc1ByaXZhdGUtPnNldENvbnRhY3RQaWNrZXJB
UElFbmFibGVkKG9wdGlvbnMuZW5hYmxlQ29udGFjdFBpY2tlckFQSSk7Ci0gICAgcHJlZnNQcml2
YXRlLT5zZXRXZWJTUUxFbmFibGVkKG9wdGlvbnMuZW5hYmxlV2ViU1FMKTsKLSAgICBwcmVmc1By
aXZhdGUtPnNldEFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMob3B0aW9ucy5hbGxvd1RvcE5h
dmlnYXRpb25Ub0RhdGFVUkxzKTsKLSAgICBwcmVmZXJlbmNlcy0+c2V0UHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZChvcHRpb25zLnVzZUVwaGVtZXJhbFNlc3Npb24pOwotICAgIHByZWZlcmVuY2VzLT5z
ZXRVc2VzUGFnZUNhY2hlKG9wdGlvbnMuZW5hYmxlQmFja0ZvcndhcmRDYWNoZSk7Ci0gICAgcHJl
ZnNQcml2YXRlLT5zZXRDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkKG9wdGlvbnMuZW5h
YmxlQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nKTsKKyAgICBwcmVmZXJlbmNlcy0+c2V0UHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZChvcHRpb25zLnVzZUVwaGVtZXJhbFNlc3Npb24oKSk7CisgICAgcHJl
ZmVyZW5jZXMtPnNldFVzZXNQYWdlQ2FjaGUoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUo
IlVzZXNCYWNrRm9yd2FyZENhY2hlIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1ByaXZh
dGUtPnNldE1lbnVJdGVtRWxlbWVudEVuYWJsZWQoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFs
dWUoIk1lbnVJdGVtRWxlbWVudEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucykpOworICAgIHByZWZz
UHJpdmF0ZS0+c2V0S2V5Z2VuRWxlbWVudEVuYWJsZWQoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJl
VmFsdWUoIktleWdlbkVsZW1lbnRFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVm
c1ByaXZhdGUtPnNldE1vZGVybk1lZGlhQ29udHJvbHNFbmFibGVkKGJvb2xXZWJQcmVmZXJlbmNl
RmVhdHVyZVZhbHVlKCJNb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCIsIHRydWUsIG9wdGlvbnMp
KTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldEluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQoYm9vbFdl
YlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQiLCBmYWxz
ZSwgb3B0aW9ucykpOworICAgIHByZWZzUHJpdmF0ZS0+c2V0UmVxdWVzdElkbGVDYWxsYmFja0Vu
YWJsZWQoYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIlJlcXVlc3RJZGxlQ2FsbGJhY2tF
bmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNldEFzeW5jQ2xp
cGJvYXJkQVBJRW5hYmxlZChib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQXN5bmNDbGlw
Ym9hcmRBUElFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpKTsKKyAgICBwcmVmc1ByaXZhdGUtPnNl
dENvbnRhY3RQaWNrZXJBUElFbmFibGVkKGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJD
b250YWN0UGlja2VyQVBJRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKSk7CisgICAgcHJlZnNQcml2
YXRlLT5zZXRBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzKGJvb2xXZWJQcmVmZXJlbmNlRmVh
dHVyZVZhbHVlKCJBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzIiwgdHJ1ZSwgb3B0aW9ucykp
OworICAgIHByZWZzUHJpdmF0ZS0+c2V0Q1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZChi
b29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5h
YmxlZCIsIGZhbHNlLCBvcHRpb25zKSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgYXBwbGljYXRpb25J
ZCgpCkBAIC05NzMsOSArOTgyLDkgQEAgc3RhdGljIHZvaWQgc2V0SlNDT3B0aW9ucyhjb25zdCBX
VFI6OlRlcwogICAgICAgICBzYXZlZE9wdGlvbnMuY2xlYXIoKTsKICAgICB9CiAKLSAgICBpZiAo
b3B0aW9ucy5qc2NPcHRpb25zLmxlbmd0aCgpKSB7CisgICAgaWYgKCFvcHRpb25zLmpzY09wdGlv
bnMoKS5lbXB0eSgpKSB7CiAgICAgICAgIEpTQzo6T3B0aW9uczo6ZHVtcEFsbE9wdGlvbnNJbkFM
aW5lKHNhdmVkT3B0aW9ucyk7Ci0gICAgICAgIEpTQzo6T3B0aW9uczo6c2V0T3B0aW9ucyhvcHRp
b25zLmpzY09wdGlvbnMuY19zdHIoKSk7CisgICAgICAgIEpTQzo6T3B0aW9uczo6c2V0T3B0aW9u
cyhvcHRpb25zLmpzY09wdGlvbnMoKS5jX3N0cigpKTsKICAgICB9CiB9CiAKQEAgLTExNjgsNyAr
MTE3Nyw3IEBAIHN0YXRpYyBib29sIGhhbmRsZUNvbnRyb2xDb21tYW5kKGNvbnN0IGMKIAogc3Rh
dGljIFdUUjo6VGVzdE9wdGlvbnMgdGVzdE9wdGlvbnNGb3JUZXN0KGNvbnN0IFdUUjo6VGVzdENv
bW1hbmQmIGNvbW1hbmQpCiB7Ci0gICAgV1RSOjpUZXN0RmVhdHVyZXMgZmVhdHVyZXM7CisgICAg
V1RSOjpUZXN0RmVhdHVyZXMgZmVhdHVyZXMgPSBXVFI6OlRlc3RPcHRpb25zOjpkZWZhdWx0cygp
OwogICAgIFdUUjo6bWVyZ2UoZmVhdHVyZXMsIFdUUjo6aGFyZGNvZGVkRmVhdHVyZXNCYXNlZE9u
UGF0aEZvclRlc3QoY29tbWFuZCkpOwogICAgIFdUUjo6bWVyZ2UoZmVhdHVyZXMsIFdUUjo6ZmVh
dHVyZURlZmF1bHRzRnJvbVRlc3RIZWFkZXJGb3JUZXN0KGNvbW1hbmQsIFdUUjo6VGVzdE9wdGlv
bnM6OmtleVR5cGVNYXBwaW5nKCkpKTsKIApAQCAtMTIyOSw3ICsxMjM4LDcgQEAgc3RhdGljIHZv
aWQgcnVuVGVzdChjb25zdCBzdHJpbmcmIGlucHV0TAogCiAgICAgOjpnVGVzdFJ1bm5lciA9IFRl
c3RSdW5uZXI6OmNyZWF0ZSh0ZXN0VVJMLmRhdGEoKSwgY29tbWFuZC5leHBlY3RlZFBpeGVsSGFz
aCk7CiAgICAgOjpnVGVzdFJ1bm5lci0+c2V0Q3VzdG9tVGltZW91dChjb21tYW5kLnRpbWVvdXQu
bWlsbGlzZWNvbmRzKCkpOwotICAgIDo6Z1Rlc3RSdW5uZXItPnNldER1bXBKU0NvbnNvbGVMb2dJ
blN0ZEVycihjb21tYW5kLmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciB8fCBvcHRpb25zLmR1bXBK
U0NvbnNvbGVMb2dJblN0ZEVycik7CisgICAgOjpnVGVzdFJ1bm5lci0+c2V0RHVtcEpTQ29uc29s
ZUxvZ0luU3RkRXJyKGNvbW1hbmQuZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIHx8IG9wdGlvbnMu
ZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyKCkpOwogCiAgICAgdG9wTG9hZGluZ0ZyYW1lID0gbnVs
bHB0cjsKICAgICBkb25lID0gZmFsc2U7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjY4NjQ4KQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyMSwxNyArOTIxLDE2
IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnJlc2V0UHJlZmVyZW5jZXNUb0MKICAgICBwbGF0Zm9y
bVJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKTsKIAogICAgIGZvciAoY29uc3Qg
YXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkp
Ci0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXkocHJlZmVyZW5jZXMsIHZh
bHVlLCB0b1dLKGtleSkuZ2V0KCkpOworICAgICAgICBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVl
Rm9yS2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CiAK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuZG91YmxlV2ViUHJl
ZmVyZW5jZUZlYXR1cmVzKCkpCi0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZv
cktleShwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CisgICAgICAgIFdLUHJl
ZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVyZW5jZXMsIHZhbHVl
LCB0b1dLKGtleSkuZ2V0KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0g
OiBvcHRpb25zLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAgICAgICBXS1ByZWZl
cmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXkocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSku
Z2V0KCkpOworICAgICAgICBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXlGb3JUZXN0
aW5nKHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKIAogICAgIGZvciAoY29u
c3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5zdHJpbmdXZWJQcmVmZXJlbmNlRmVhdHVy
ZXMoKSkKLSAgICAgICAgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5KHByZWZlcmVu
Y2VzLCB0b1dLKHZhbHVlKS5nZXQoKSwgdG9XSyhrZXkpLmdldCgpKTsKLQorICAgICAgICBXS1By
ZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXlGb3JUZXN0aW5nKHByZWZlcmVuY2VzLCB0b1dL
KHZhbHVlKS5nZXQoKSwgdG9XSyhrZXkpLmdldCgpKTsKIH0KIAogYm9vbCBUZXN0Q29udHJvbGxl
cjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9u
cywgUmVzZXRTdGFnZSByZXNldFN0YWdlKQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9T
Y3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVy
Ygo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1NjcmlwdHMvUHJlZmVyZW5j
ZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCShyZXZpc2lvbiAyNjg2
NDgpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0
ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3
ICsyOCw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2RlZmluZSBHRU5FUkFURURfV0VCX1BSRUZFUkVO
Q0VfS0VZX1RZUEVfTUFQUElOR1MgXAotPCUtIGZvciBAcHJlZiBpbiBAcHJlZmVyZW5jZXMgZG8g
LSU+Cis8JS0gZm9yIEBwcmVmIGluIEBleHBvc2VkUHJlZmVyZW5jZXMgZG8gLSU+CiAgICAgeyAi
PCU9IEBwcmVmLm5hbWUgJT4iLCBUZXN0SGVhZGVyS2V5VHlwZTo6PCU9IEBwcmVmLnR5cGVVcHBl
ciAlPldlYlByZWZlcmVuY2UgfSwgXAogPCUtIGVuZCAtJT4KIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412186</attachid>
            <date>2020-10-23 09:08:35 -0700</date>
            <delta_ts>2020-10-23 09:24:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201023090835.patch</filename>
            <type>text/plain</type>
            <size>19462</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg4NzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTIwICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVu
ZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBXS1ByZWZlcmVuY2Vz
U2V0KlZhbHVlRm9yS2V5IFNQSSB0byBXS1ByZWZlcmVuY2VzU2V0KlZhbHVlRm9yS2V5Rm9yVGVz
dGluZworICAgICAgICB0byBtYWtlIGl0IGNsZWFyIHdoYXQgdGhleSBhcmUgdXNlZCBmb3IgYW5k
IGZvciBjb25zaXN0ZW5jeSB3aXRoIFdlYktpdExlZ2FjeS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29s
VmFsdWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXREb3VibGVW
YWx1ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZh
bHVlRm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFs
dWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVG
b3JLZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9y
S2V5KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktl
eSk6IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJp
dmF0ZS5oOgorCiAyMDIwLTEwLTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
IAogICAgICAgICBJbnRyb2R1Y2Ugd29ya2xldCBkZXN0aW5hdGlvbnMgYW5kIGFsbG93IHRvIGZl
dGNoIG1vZHVsZXMgd2l0aCBDT1JTIGJhc2VkIG9uIGRlc3RpbmF0aW9uCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24g
MjY4ODcyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDIyICs3OCwyMiBAQCB2b2lkIFdLUHJlZmVyZW5jZXNT
ZXRJbnRlcm5hbERlYnVnRmVhdHVyCiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0SW50
ZXJuYWxEZWJ1Z0ZlYXR1cmVFbmFibGVkRm9yS2V5KHRvV1RGU3RyaW5nKGludGVybmFsRGVidWdG
ZWF0dXJlS2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVG
b3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1ZSwgV0tTdHJp
bmdSZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9yVGVzdGlu
ZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZhbHVlLCBXS1N0cmluZ1Jl
ZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0Qm9vbFZhbHVlRm9yS2V5
KHRvV1RGU3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0RG91
YmxlVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgZG91YmxlIHZh
bHVlLCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZv
cktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgZG91YmxlIHZh
bHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0
Qm9vbFZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1By
ZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNl
c1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKK3ZvaWQgV0tQcmVmZXJlbmNl
c1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVu
Y2VzUmVmLCB1aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChw
cmVmZXJlbmNlc1JlZiktPnNldFVJbnQzMlZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHZh
bHVlKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkoV0tQcmVm
ZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFsdWUsIFdLU3RyaW5nUmVm
IGtleSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5Rm9yVGVzdGluZyhX
S1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJp
bmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldFN0cmluZ1ZhbHVl
Rm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHRvV1RGU3RyaW5nKHZhbHVlKSk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNS
ZWZQcml2YXRlLmgJKHJldmlzaW9uIDI2ODg3MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDEw
ICs1NiwxMCBAQCBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzUmVzZXRBbGxJbnRlCiBXS19F
WFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0SW50ZXJuYWxEZWJ1Z0ZlYXR1cmVGb3JLZXkoV0tQ
cmVmZXJlbmNlc1JlZiwgYm9vbCwgV0tTdHJpbmdSZWYpOwogCiAvLyBUaGUgZm9sbG93aW5nIGdl
bmVyaWMgc2V0dGVyIGZ1bmN0aW9ucyBhcmUgb25seSBpbnRlbmRlZCBmb3IgdXNlIGJ5IHRlc3Rp
bmcgaW5mcmFzdHJ1Y3R1cmUuCi1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZh
bHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgdmFsdWUsIFdL
U3RyaW5nUmVmIGtleSk7Ci1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFs
dWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgZG91YmxlIHZhbHVlLCBX
S1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZh
bHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIHVpbnQzMl90IHZhbHVl
LCBXS1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmlu
Z1ZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RyaW5nUmVm
IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1Nl
dEJvb2xWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1Jl
ZiwgYm9vbCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVy
ZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVm
ZXJlbmNlc1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZv
aWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVu
Y2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsK
K1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleUZvclRlc3Rp
bmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFsdWUsIFdL
U3RyaW5nUmVmIGtleSk7CiAKIC8vIEZvciBUZXN0IFJ1bm5lciBVc2Ugb25seS4KIFdLX0VYUE9S
VCB2b2lkIFdLUHJlZmVyZW5jZXNSZXNldFRlc3RSdW5uZXJPdmVycmlkZXMoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZik7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNjg4NzIpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAyMC0xMC0yMCAgU2FtIFdlaW5pZyAgPHdl
aW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1Rlc3RpbmddIENvbnZlcnQgRHVtcFJlbmRlclRy
ZWUgdG8gdXNlIGdlbmVyYXRlZCB0ZXN0IGhlYWRlciBvcHRpb25zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc4ODAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgYSBzZXQgb2Ygc2V0dGVycyB0
byBmb3IgRHVtcFJlbmRlclRyZWUgdG8gdXNlIHdoZW4gc2V0dGluZyBwcmVmZXJlbmNlcworICAg
ICAgICBieSBzdHJpbmcuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tOgor
ICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGlu
Z1Nlc3Npb25dKToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3NldEN1cnJlbnROZXR3b3Jr
TG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTpdKToKKyAgICAgICAgKCtbV2ViUHJlZmVy
ZW5jZXMgX2NsZWFyTmV0d29ya0xvYWRlclNlc3Npb25dKToKKyAgICAgICAgKC1bV2ViUHJlZmVy
ZW5jZXMgX3NldEJvb2xQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6Cisg
ICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dp
dGhWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXREb3VibGVQ
cmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlBy
ZWZlcmVuY2VzIF9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6
XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhW
YWx1ZTpmb3JLZXk6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNl
c1ByaXZhdGUuaDoKKwogMjAyMC0xMC0yMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5j
b20+CiAKICAgICAgICAgW21hY09TIFdLMV0gcHJvdmlkZSBhIHdheSBmb3IgQXBwbGUtaW50ZXJu
YWwgY2xpZW50cyB0byBkaXNhYmxlIGxpbmsgcHJldmlldwpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiAyNjg4
NzIpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjYwLDI2ICsxNjYwLDYgQEAgKyAodm9pZClfc2V0SUJDcmVh
dG9ySUQ6KE5TU3RyaW5nICopc3RyaQogICAgIFtvbGQgcmVsZWFzZV07CiB9CiAKLSsgKHZvaWQp
X3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uCi17Ci0jaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICBXZWJUaHJlYWRMb2NrKCk7Ci0jZW5kaWYKLSAgICBOZXR3b3JrU3Rv
cmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKLX0KLQotKyAodm9p
ZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbgotewotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZGVsZXRlQWxsQ29va2llcygpOwotfQotCi0r
ICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6
KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSlwb2xpY3kKLXsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQ
Q29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1h
cDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChj
b29raWVTdG9yYWdlKTsgLy8gV2lsbCBmYWlsIHdoZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFw
Ojpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4K
LSAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3Jh
Z2UuZ2V0KCksIHBvbGljeSk7Ci19Ci0KIC0gKEJPT0wpaXNET01QYXN0ZUFsbG93ZWQKIHsKICAg
ICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktleTpXZWJLaXRET01QYXN0ZUFsbG93ZWRQcmVm
ZXJlbmNlS2V5XTsKQEAgLTE5NjYsMTEgKzE5NDYsNiBAQCAtICh2b2lkKXdpbGxBZGRUb1dlYlZp
ZXcKICAgICArK19wcml2YXRlLT5udW1XZWJWaWV3czsKIH0KIAotLSAodm9pZClfc2V0UHJlZmVy
ZW5jZUZvclRlc3RXaXRoVmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAq
KWtleQotewotICAgIFtzZWxmIF9zZXRTdHJpbmdWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKLX0K
LQogLSAodm9pZClzZXRGdWxsU2NyZWVuRW5hYmxlZDooQk9PTClmbGFnCiB7CiAgICAgW3NlbGYg
X3NldEJvb2xWYWx1ZTpmbGFnIGZvcktleTpXZWJLaXRGdWxsU2NyZWVuRW5hYmxlZFByZWZlcmVu
Y2VLZXldOwpAQCAtMzAxMyw2ICsyOTg4LDU5IEBAIC0gKHZvaWQpX3NldEVuYWJsZWQ6KEJPT0wp
dmFsdWUgZm9yRmVhdHUKIAogQGVuZAogCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNl
cyAoV2ViUHJpdmF0ZVRlc3RpbmcpCisKKysgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05l
d1Rlc3RpbmdTZXNzaW9uCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBXZWJUaHJl
YWRMb2NrKCk7CisjZW5kaWYKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRv
TmV3VGVzdGluZ1Nlc3Npb24oKTsKK30KKworKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2Fk
ZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9s
aWN5Cit7CisgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3Jh
Z2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNv
b2tpZVN0b3JhZ2UoKTsKKyAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7IC8vIFdpbGwgZmFpbCB3
aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigp
IHdhcyBub3QgY2FsbGVkIGJlZm9yZWhhbmQuCisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENv
b2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBwb2xpY3kpOworfQorCisrICh2
b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uCit7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5kZWxldGVBbGxDb29raWVzKCk7Cit9CisK
Ky0gKHZvaWQpX3Jlc2V0VG9EZWZhdWx0VmFsdWVzRm9yVGVzdGluZworeworICAgIF9wcml2YXRl
LT52YWx1ZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwor
ICAgIFtzZWxmIF91cGRhdGVQcml2YXRlQnJvd3NpbmdTdGF0ZVRvOltzZWxmIHByaXZhdGVCcm93
c2luZ0VuYWJsZWRdXTsKKyAgICBbc2VsZiBfcG9zdFByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNh
dGlvbl07CisgICAgW3NlbGYgX3Bvc3RDYWNoZU1vZGVsQ2hhbmdlZE5vdGlmaWNhdGlvbl07Cit9
CisKKy0gKHZvaWQpX3NldEJvb2xQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTooQk9PTCl2
YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5Cit7CisgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTp2
YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAodm9pZClfc2V0VUludDMyUHJlZmVyZW5jZUZvclRl
c3RpbmdXaXRoVmFsdWU6KHVpbnQzMl90KXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sK
KyAgICBbc2VsZiBfc2V0SW50ZWdlclZhbHVlOnZhbHVlIGZvcktleTprZXldOworfQorCistICh2
b2lkKV9zZXREb3VibGVQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTooZG91YmxlKXZhbHVl
IGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2VsZiBfc2V0RmxvYXRWYWx1ZTp2YWx1
ZSBmb3JLZXk6a2V5XTsKK30KKworLSAodm9pZClfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3Rp
bmdXaXRoVmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQorewor
ICAgIFtzZWxmIF9zZXRTdHJpbmdWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworQGVuZAor
CiBAaW1wbGVtZW50YXRpb24gV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGVQcmVmZXJlbmNlc0Nv
bnZlcnRlZFRvV2ViRmVhdHVyZSkKIAogLSAoQk9PTCl1c2VyR2VzdHVyZVByb21pc2VQcm9wYWdh
dGlvbkVuYWJsZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJl
ZmVyZW5jZXNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkocmV2aXNpb24gMjY4ODcyKQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkod29y
a2luZyBjb3B5KQpAQCAtODksMTMgKzg5LDYgQEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAo
V2ViUHJpdmF0ZSkKICsgKHZvaWQpX3NldEluaXRpYWxEZWZhdWx0VGV4dEVuY29kaW5nVG9TeXN0
ZW1FbmNvZGluZzsKICsgKHZvaWQpX3NldElCQ3JlYXRvcklEOihOU1N0cmluZyAqKXN0cmluZzsK
IAotLy8gRm9yIER1bXBSZW5kZXJUcmVlIHVzZSBvbmx5LgotKyAodm9pZClfc3dpdGNoTmV0d29y
a0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb247Ci0rICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xv
YWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSlj
b29raWVBY2NlcHRQb2xpY3k7Ci0rICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uOwot
Ly8gVXNlZCB0byBzZXQgcHJlZmVyZW5jZSBzcGVjaWZpZWQgaW4gdGhlIHRlc3QgdmlhIExheW91
dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSguLikuCi0tICh2b2lkKV9zZXRQcmVm
ZXJlbmNlRm9yVGVzdFdpdGhWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZSBmb3JLZXk6KE5TU3RyaW5n
ICopa2V5OwotCiArICh2b2lkKXNldFdlYktpdExpbmtUaW1lVmVyc2lvbjooaW50KXZlcnNpb247
CiAKIC8vIEZvciBXZWJWaWV3J3MgdXNlIG9ubHkuCkBAIC0zMTAsNiArMzAzLDE5IEBAIEBpbnRl
cmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGVGZWEKIC0gKHZvaWQpX3NldEVuYWJsZWQ6
KEJPT0wpdmFsdWUgZm9yRmVhdHVyZTooV2ViRmVhdHVyZSAqKWZlYXR1cmU7CiBAZW5kCiAKK0Bp
bnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGVUZXN0aW5nKQorKyAodm9pZClfc3dp
dGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb247CisrICh2b2lkKV9zZXRDdXJyZW50
TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSljb29raWVBY2NlcHRQb2xpY3k7CisrICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJT
ZXNzaW9uOworCistICh2b2lkKV9yZXNldFRvRGVmYXVsdFZhbHVlc0ZvclRlc3Rpbmc7CistICh2
b2lkKV9zZXRCb29sUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KEJPT0wpdmFsdWUgZm9y
S2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZvaWQpX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0
aW5nV2l0aFZhbHVlOih1aW50MzJfdCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OworLSAo
dm9pZClfc2V0RG91YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KGRvdWJsZSl2YWx1
ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OworLSAodm9pZClfc2V0U3RyaW5nUHJlZmVyZW5jZUZv
clRlc3RpbmdXaXRoVmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtl
eTsKKworQGVuZAorCiAvLyBGSVhNRTogSWYgdGhlc2UgYXJlIG5vdCB1c2VkIGFueXdoZXJlLCB3
ZSBzaG91bGQgcmVtb3ZlIHRoZW0gYW5kIG9ubHkgdXNlIFdlYkZlYXR1cmUgbWVjaGFuaXNtIGZv
ciB0aGUgcHJlZmVyZW5jZS4KIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGVQ
cmVmZXJlbmNlc0NvbnZlcnRlZFRvV2ViRmVhdHVyZSkKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBC
T09MIHVzZXJHZXN0dXJlUHJvbWlzZVByb3BhZ2F0aW9uRW5hYmxlZDsKSW5kZXg6IFRvb2xzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODkyNCkK
KysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDIw
LTEwLTIzICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGlu
Z10gQ29udmVydCBEdW1wUmVuZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9w
dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
Nzg4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZ1
bGx5IHN1cHBvcnQgdXNlIG9mIGFueSBXZWJQcmVmZXJlbmNlcyoueWFtbCBwcmVmZXJlbmNlIGlu
IER1bXBSZW5kZXJUcmVlIChmb3IgbWFjT1MpIGJ5OgorICAgICAgICAgICAgLSBNb3ZpbmcgRHVt
cFJlbmRlclRyZWUncyBUZXN0T3B0aW9ucyB0byBiZSBmdWxseSBiYWNrZWQgYnkgVGVzdEZlYXR1
cmVzIGxpa2UgV2ViS2l0VGVzdFJ1bm5uZXIuCisgICAgICAgICAgICAtIEFkb3B0aW5nIG5ldyBX
ZWJQcmVmZXJlbmNlcyBTUEkgZm9yIHNldHRpbmcgYW55IHByZWZlcmVuY2UgYnkga2V5IGFuZCBy
ZXNldCBhbGwgcHJlZmVyZW5jZXMga2V5cy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHRvTlMpOgorICAgICAgICAocmVzZXRXZWJQ
cmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChzZXRXZWJQcmVmZXJlbmNl
c0ZvclRlc3RPcHRpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5l
ck1hYy5tbToKKyAgICAgICAgKFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZSk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpyZXNldFByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKToKKwog
MjAyMC0xMC0yMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIE51bGwgY2hlY2sgcGxhdGZvcm1TdHJhdGVnaWVzIHdoZW4gbWFraW5nIGJsb2Ig
cmVhZCBzdHJlYW0gZm9yIGFuIE5TVVJMUmVxdWVzdApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkocmV2aXNpb24gMjY4ODcyKQorKysgVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAs
NiArMTMwLDExIEBAIGV4dGVybiAiQyIgewogI2ltcG9ydCA8bWFjaC1vL2dldHNlY3QuaD4KIH0K
IAorc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4gdG9OUyhjb25zdCBzdGQ6OnN0cmluZyYgc3Ry
aW5nKQoreworICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoVVRG
OFN0cmluZzpzdHJpbmcuY19zdHIoKV0pOworfQorCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiBAaW50ZXJmYWNlIER1bXBSZW5kZXJUcmVlQXBwbGljYXRpb24gOiBOU0FwcGxpY2F0aW9uCiBA
ZW5kCkBAIC04NDcsNiArODUyLDggQEAgc3RhdGljIHZvaWQgZW5hYmxlRXhwZXJpbWVudGFsRmVh
dHVyZXMoVwogLy8gQ2FsbGVkIGJlZm9yZSBlYWNoIHRlc3QuCiBzdGF0aWMgdm9pZCByZXNldFdl
YlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNl
cykKIHsKKyAgICBbcHJlZmVyZW5jZXMgX3Jlc2V0VG9EZWZhdWx0VmFsdWVzRm9yVGVzdGluZ107
CisKICAgICBlbmFibGVFeHBlcmltZW50YWxGZWF0dXJlcyhwcmVmZXJlbmNlcyk7CiAKICAgICBb
cHJlZmVyZW5jZXMgc2V0TmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcms6IE5PXTsK
QEAgLTk4MSwyOSArOTg4LDE3IEBAIHN0YXRpYyB2b2lkIHNldFdlYlByZWZlcmVuY2VzRm9yVGVz
dE9wdGkKIHsKICAgICBwcmVmZXJlbmNlcy5wcml2YXRlQnJvd3NpbmdFbmFibGVkID0gb3B0aW9u
cy51c2VFcGhlbWVyYWxTZXNzaW9uKCk7CiAKLSAgICBwcmVmZXJlbmNlcy5hdHRhY2htZW50RWxl
bWVudEVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQXR0YWNobWVudEVs
ZW1lbnRFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmFjY2VsZXJh
dGVkRHJhd2luZ0VuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQWNjZWxl
cmF0ZWREcmF3aW5nRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5t
ZW51SXRlbUVsZW1lbnRFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIk1l
bnVJdGVtRWxlbWVudEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMu
a2V5Z2VuRWxlbWVudEVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiS2V5
Z2VuRWxlbWVudEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMubW9k
ZXJuTWVkaWFDb250cm9sc0VuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgi
TW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQiLCB0cnVlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJl
bmNlcy5pbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJl
VmFsdWUoIkluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAg
cHJlZmVyZW5jZXMuYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlh
bHMgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQWxsb3dDcm9zc09yaWdpblN1YnJl
c291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVy
ZW5jZXMuY29sb3JGaWx0ZXJFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUo
IkNvbG9yRmlsdGVyRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5z
ZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNl
RmVhdHVyZVZhbHVlKCJTZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzRW5hYmxlZCIsIHRy
dWUsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLndlYkdQVUVuYWJsZWQgPSBib29sV2ViUHJl
ZmVyZW5jZUZlYXR1cmVWYWx1ZSgiV2ViR1BVRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAg
ICBwcmVmZXJlbmNlcy5DU1NMb2dpY2FsRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVy
ZVZhbHVlKCJDU1NMb2dpY2FsRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJl
bmNlcy5saW5lSGVpZ2h0VW5pdHNFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFs
dWUoIkxpbmVIZWlnaHRVbml0c0VuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVy
ZW5jZXMuYWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVy
ZVZhbHVlKCJBZENsaWNrQXR0cmlidXRpb25FbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAg
IHByZWZlcmVuY2VzLnJlc2l6ZU9ic2VydmVyRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVh
dHVyZVZhbHVlKCJSZXNpemVPYnNlcnZlckVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAg
cHJlZmVyZW5jZXMuQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCA9IGJvb2xXZWJQcmVm
ZXJlbmNlRmVhdHVyZVZhbHVlKCJDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkIiwgZmFs
c2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmNvcmVNYXRoTUxFbmFibGVkID0gYm9vbFdl
YlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkNvcmVNYXRoTUxFbmFibGVkIiwgZmFsc2UsIG9wdGlv
bnMpOwotICAgIHByZWZlcmVuY2VzLnJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkID0gYm9vbFdl
YlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIlJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkIiwgZmFs
c2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxlZCA9
IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJBc3luY0NsaXBib2FyZEFQSUVuYWJsZWQi
LCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMudXNlc1BhZ2VDYWNoZSA9IGJvb2xX
ZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJVc2VzQmFja0ZvcndhcmRDYWNoZSIsIGZhbHNlLCBv
cHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5sYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0
aW9uRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJMYXlvdXRGb3JtYXR0
aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCIsIHRydWUsIG9wdGlvbnMpOwotICAgIHByZWZl
cmVuY2VzLmFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkID0gYm9vbFdl
YlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWln
aHRFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmFsbG93VG9wTmF2
aWdhdGlvblRvRGF0YVVSTHMgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQWxsb3dU
b3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyIsIHRydWUsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2Vz
LmNvbnRhY3RQaWNrZXJBUElFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUo
IkNvbnRhY3RQaWNrZXJBUElFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOworICAgIGZvciAoY29u
c3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVz
KCkpCisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0aW5nV2l0
aFZhbHVlOnZhbHVlIGZvcktleTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5
UHJlZmVyZW5jZUtleShrZXkpKS5nZXQoKV07CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXks
IHZhbHVlXSA6IG9wdGlvbnMuZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAg
IFtwcmVmZXJlbmNlcyBfc2V0RG91YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dmFs
dWUgZm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNl
S2V5KGtleSkpLmdldCgpXTsKKworICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDog
b3B0aW9ucy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAgICAgW3ByZWZlcmVu
Y2VzIF9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZSBmb3JLZXk6
dG9OUyhXVFI6OlRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVuY2VLZXkoa2V5KSku
Z2V0KCldOworCisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLnN0
cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcygpKQorICAgICAgICBbcHJlZmVyZW5jZXMgX3NldFN0
cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnRvTlModmFsdWUpLmdldCgpIGZvcktl
eTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShrZXkp
KS5nZXQoKV07CiB9CiAKIC8vIENhbGxlZCBvbmNlIG9uIER1bXBSZW5kZXJUcmVlIHN0YXJ0dXAu
CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQkocmV2aXNp
b24gMjY4ODcyKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTYwOSw3ICs2MDksNyBAQCB2b2lkIFRlc3RSdW5uZXI6Om92ZXJy
aWRlUHJlZmVyZW5jZShKU1N0CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB2YWx1ZUNGID0g
YWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB2YWx1ZSkp
OwogICAgIE5TU3RyaW5nICp2YWx1ZU5TID0gKF9fYnJpZGdlIE5TU3RyaW5nICopdmFsdWVDRi5n
ZXQoKTsKIAotICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gX3NldFByZWZl
cmVuY2VGb3JUZXN0V2l0aFZhbHVlOnZhbHVlTlMgZm9yS2V5OmtleU5TXTsKKyAgICBbW1ttYWlu
RnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIF9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGlu
Z1dpdGhWYWx1ZTp2YWx1ZU5TIGZvcktleTprZXlOU107CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6
cmVtb3ZlQWxsVmlzaXRlZExpbmtzKCkKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNjg4NzIpCisrKyBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIxLDE3ICs5MjEsMTYg
QEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cmVzZXRQcmVmZXJlbmNlc1RvQwogICAgIHBsYXRmb3Jt
UmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcygpOwogCiAgICAgZm9yIChjb25zdCBh
dXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkK
LSAgICAgICAgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleShwcmVmZXJlbmNlcywgdmFs
dWUsIHRvV0soa2V5KS5nZXQoKSk7CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVG
b3JLZXlGb3JUZXN0aW5nKHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKIAog
ICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5kb3VibGVXZWJQcmVm
ZXJlbmNlRmVhdHVyZXMoKSkKLSAgICAgICAgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9y
S2V5KHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKKyAgICAgICAgV0tQcmVm
ZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdmFsdWUs
IHRvV0soa2V5KS5nZXQoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6
IG9wdGlvbnMudWludDMyV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCi0gICAgICAgIFdLUHJlZmVy
ZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleShwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5n
ZXQoKSk7CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleUZvclRlc3Rp
bmcocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOwogCiAgICAgZm9yIChjb25z
dCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJl
cygpKQotICAgICAgICBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkocHJlZmVyZW5j
ZXMsIHRvV0sodmFsdWUpLmdldCgpLCB0b1dLKGtleSkuZ2V0KCkpOwotCisgICAgICAgIFdLUHJl
ZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVyZW5jZXMsIHRvV0so
dmFsdWUpLmdldCgpLCB0b1dLKGtleSkuZ2V0KCkpOwogfQogCiBib29sIFRlc3RDb250cm9sbGVy
OjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25z
LCBSZXNldFN0YWdlIHJlc2V0U3RhZ2UpCg==
</data>
<flag name="commit-queue"
          id="428585"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412189</attachid>
            <date>2020-10-23 09:18:04 -0700</date>
            <delta_ts>2020-10-23 09:39:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201023091803.patch</filename>
            <type>text/plain</type>
            <size>19992</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg4NzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTIwICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVu
ZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmFtZSBXS1ByZWZlcmVuY2Vz
U2V0KlZhbHVlRm9yS2V5IFNQSSB0byBXS1ByZWZlcmVuY2VzU2V0KlZhbHVlRm9yS2V5Rm9yVGVz
dGluZworICAgICAgICB0byBtYWtlIGl0IGNsZWFyIHdoYXQgdGhleSBhcmUgdXNlZCBmb3IgYW5k
IGZvciBjb25zaXN0ZW5jeSB3aXRoIFdlYktpdExlZ2FjeS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29s
VmFsdWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXREb3VibGVW
YWx1ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZh
bHVlRm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFs
dWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVG
b3JLZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9y
S2V5KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktl
eSk6IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJp
dmF0ZS5oOgorCiAyMDIwLTEwLTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
IAogICAgICAgICBJbnRyb2R1Y2Ugd29ya2xldCBkZXN0aW5hdGlvbnMgYW5kIGFsbG93IHRvIGZl
dGNoIG1vZHVsZXMgd2l0aCBDT1JTIGJhc2VkIG9uIGRlc3RpbmF0aW9uCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24g
MjY4ODcyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDIyICs3OCwyMiBAQCB2b2lkIFdLUHJlZmVyZW5jZXNT
ZXRJbnRlcm5hbERlYnVnRmVhdHVyCiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0SW50
ZXJuYWxEZWJ1Z0ZlYXR1cmVFbmFibGVkRm9yS2V5KHRvV1RGU3RyaW5nKGludGVybmFsRGVidWdG
ZWF0dXJlS2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVG
b3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1ZSwgV0tTdHJp
bmdSZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9yVGVzdGlu
ZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZhbHVlLCBXS1N0cmluZ1Jl
ZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0Qm9vbFZhbHVlRm9yS2V5
KHRvV1RGU3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0RG91
YmxlVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgZG91YmxlIHZh
bHVlLCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZv
cktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgZG91YmxlIHZh
bHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0
Qm9vbFZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1By
ZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNl
c1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKK3ZvaWQgV0tQcmVmZXJlbmNl
c1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVu
Y2VzUmVmLCB1aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChw
cmVmZXJlbmNlc1JlZiktPnNldFVJbnQzMlZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHZh
bHVlKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkoV0tQcmVm
ZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFsdWUsIFdLU3RyaW5nUmVm
IGtleSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5Rm9yVGVzdGluZyhX
S1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJp
bmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldFN0cmluZ1ZhbHVl
Rm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHRvV1RGU3RyaW5nKHZhbHVlKSk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNS
ZWZQcml2YXRlLmgJKHJldmlzaW9uIDI2ODg3MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDEw
ICs1NiwxMCBAQCBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzUmVzZXRBbGxJbnRlCiBXS19F
WFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0SW50ZXJuYWxEZWJ1Z0ZlYXR1cmVGb3JLZXkoV0tQ
cmVmZXJlbmNlc1JlZiwgYm9vbCwgV0tTdHJpbmdSZWYpOwogCiAvLyBUaGUgZm9sbG93aW5nIGdl
bmVyaWMgc2V0dGVyIGZ1bmN0aW9ucyBhcmUgb25seSBpbnRlbmRlZCBmb3IgdXNlIGJ5IHRlc3Rp
bmcgaW5mcmFzdHJ1Y3R1cmUuCi1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZh
bHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgdmFsdWUsIFdL
U3RyaW5nUmVmIGtleSk7Ci1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFs
dWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgZG91YmxlIHZhbHVlLCBX
S1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZh
bHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIHVpbnQzMl90IHZhbHVl
LCBXS1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmlu
Z1ZhbHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RyaW5nUmVm
IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1Nl
dEJvb2xWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1Jl
ZiwgYm9vbCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVy
ZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVm
ZXJlbmNlc1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZv
aWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVu
Y2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsK
K1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleUZvclRlc3Rp
bmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFsdWUsIFdL
U3RyaW5nUmVmIGtleSk7CiAKIC8vIEZvciBUZXN0IFJ1bm5lciBVc2Ugb25seS4KIFdLX0VYUE9S
VCB2b2lkIFdLUHJlZmVyZW5jZXNSZXNldFRlc3RSdW5uZXJPdmVycmlkZXMoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZik7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNjg4NzIpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAyMC0xMC0yMCAgU2FtIFdlaW5pZyAgPHdl
aW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1Rlc3RpbmddIENvbnZlcnQgRHVtcFJlbmRlclRy
ZWUgdG8gdXNlIGdlbmVyYXRlZCB0ZXN0IGhlYWRlciBvcHRpb25zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc4ODAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgYSBzZXQgb2Ygc2V0dGVycyB0
byBmb3IgRHVtcFJlbmRlclRyZWUgdG8gdXNlIHdoZW4gc2V0dGluZyBwcmVmZXJlbmNlcworICAg
ICAgICBieSBzdHJpbmcuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tOgor
ICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGlu
Z1Nlc3Npb25dKToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3NldEN1cnJlbnROZXR3b3Jr
TG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTpdKToKKyAgICAgICAgKCtbV2ViUHJlZmVy
ZW5jZXMgX2NsZWFyTmV0d29ya0xvYWRlclNlc3Npb25dKToKKyAgICAgICAgKC1bV2ViUHJlZmVy
ZW5jZXMgX3NldEJvb2xQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6Cisg
ICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dp
dGhWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXREb3VibGVQ
cmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlBy
ZWZlcmVuY2VzIF9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6
XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhW
YWx1ZTpmb3JLZXk6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNl
c1ByaXZhdGUuaDoKKwogMjAyMC0xMC0yMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5j
b20+CiAKICAgICAgICAgW21hY09TIFdLMV0gcHJvdmlkZSBhIHdheSBmb3IgQXBwbGUtaW50ZXJu
YWwgY2xpZW50cyB0byBkaXNhYmxlIGxpbmsgcHJldmlldwpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiAyNjg4
NzIpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjYwLDI2ICsxNjYwLDYgQEAgKyAodm9pZClfc2V0SUJDcmVh
dG9ySUQ6KE5TU3RyaW5nICopc3RyaQogICAgIFtvbGQgcmVsZWFzZV07CiB9CiAKLSsgKHZvaWQp
X3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uCi17Ci0jaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICBXZWJUaHJlYWRMb2NrKCk7Ci0jZW5kaWYKLSAgICBOZXR3b3JrU3Rv
cmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKLX0KLQotKyAodm9p
ZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbgotewotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZGVsZXRlQWxsQ29va2llcygpOwotfQotCi0r
ICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6
KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSlwb2xpY3kKLXsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQ
Q29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1h
cDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChj
b29raWVTdG9yYWdlKTsgLy8gV2lsbCBmYWlsIHdoZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFw
Ojpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4K
LSAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3Jh
Z2UuZ2V0KCksIHBvbGljeSk7Ci19Ci0KIC0gKEJPT0wpaXNET01QYXN0ZUFsbG93ZWQKIHsKICAg
ICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktleTpXZWJLaXRET01QYXN0ZUFsbG93ZWRQcmVm
ZXJlbmNlS2V5XTsKQEAgLTE5NjYsMTEgKzE5NDYsNiBAQCAtICh2b2lkKXdpbGxBZGRUb1dlYlZp
ZXcKICAgICArK19wcml2YXRlLT5udW1XZWJWaWV3czsKIH0KIAotLSAodm9pZClfc2V0UHJlZmVy
ZW5jZUZvclRlc3RXaXRoVmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAq
KWtleQotewotICAgIFtzZWxmIF9zZXRTdHJpbmdWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKLX0K
LQogLSAodm9pZClzZXRGdWxsU2NyZWVuRW5hYmxlZDooQk9PTClmbGFnCiB7CiAgICAgW3NlbGYg
X3NldEJvb2xWYWx1ZTpmbGFnIGZvcktleTpXZWJLaXRGdWxsU2NyZWVuRW5hYmxlZFByZWZlcmVu
Y2VLZXldOwpAQCAtMzAxMyw2ICsyOTg4LDU5IEBAIC0gKHZvaWQpX3NldEVuYWJsZWQ6KEJPT0wp
dmFsdWUgZm9yRmVhdHUKIAogQGVuZAogCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNl
cyAoV2ViUHJpdmF0ZVRlc3RpbmcpCisKKysgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05l
d1Rlc3RpbmdTZXNzaW9uCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBXZWJUaHJl
YWRMb2NrKCk7CisjZW5kaWYKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRv
TmV3VGVzdGluZ1Nlc3Npb24oKTsKK30KKworKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2Fk
ZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9s
aWN5Cit7CisgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3Jh
Z2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNv
b2tpZVN0b3JhZ2UoKTsKKyAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7IC8vIFdpbGwgZmFpbCB3
aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigp
IHdhcyBub3QgY2FsbGVkIGJlZm9yZWhhbmQuCisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENv
b2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBwb2xpY3kpOworfQorCisrICh2
b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uCit7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5kZWxldGVBbGxDb29raWVzKCk7Cit9CisK
Ky0gKHZvaWQpX3Jlc2V0VG9EZWZhdWx0VmFsdWVzRm9yVGVzdGluZworeworICAgIF9wcml2YXRl
LT52YWx1ZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwor
ICAgIFtzZWxmIF91cGRhdGVQcml2YXRlQnJvd3NpbmdTdGF0ZVRvOltzZWxmIHByaXZhdGVCcm93
c2luZ0VuYWJsZWRdXTsKKyAgICBbc2VsZiBfcG9zdFByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNh
dGlvbl07CisgICAgW3NlbGYgX3Bvc3RDYWNoZU1vZGVsQ2hhbmdlZE5vdGlmaWNhdGlvbl07Cit9
CisKKy0gKHZvaWQpX3NldEJvb2xQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTooQk9PTCl2
YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5Cit7CisgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTp2
YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAodm9pZClfc2V0VUludDMyUHJlZmVyZW5jZUZvclRl
c3RpbmdXaXRoVmFsdWU6KHVpbnQzMl90KXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sK
KyAgICBbc2VsZiBfc2V0SW50ZWdlclZhbHVlOnZhbHVlIGZvcktleTprZXldOworfQorCistICh2
b2lkKV9zZXREb3VibGVQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTooZG91YmxlKXZhbHVl
IGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2VsZiBfc2V0RmxvYXRWYWx1ZTp2YWx1
ZSBmb3JLZXk6a2V5XTsKK30KKworLSAodm9pZClfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3Rp
bmdXaXRoVmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQorewor
ICAgIFtzZWxmIF9zZXRTdHJpbmdWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworQGVuZAor
CiBAaW1wbGVtZW50YXRpb24gV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGVQcmVmZXJlbmNlc0Nv
bnZlcnRlZFRvV2ViRmVhdHVyZSkKIAogLSAoQk9PTCl1c2VyR2VzdHVyZVByb21pc2VQcm9wYWdh
dGlvbkVuYWJsZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJl
ZmVyZW5jZXNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkocmV2aXNpb24gMjY4ODcyKQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkod29y
a2luZyBjb3B5KQpAQCAtODksMTMgKzg5LDYgQEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAo
V2ViUHJpdmF0ZSkKICsgKHZvaWQpX3NldEluaXRpYWxEZWZhdWx0VGV4dEVuY29kaW5nVG9TeXN0
ZW1FbmNvZGluZzsKICsgKHZvaWQpX3NldElCQ3JlYXRvcklEOihOU1N0cmluZyAqKXN0cmluZzsK
IAotLy8gRm9yIER1bXBSZW5kZXJUcmVlIHVzZSBvbmx5LgotKyAodm9pZClfc3dpdGNoTmV0d29y
a0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb247Ci0rICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xv
YWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSlj
b29raWVBY2NlcHRQb2xpY3k7Ci0rICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uOwot
Ly8gVXNlZCB0byBzZXQgcHJlZmVyZW5jZSBzcGVjaWZpZWQgaW4gdGhlIHRlc3QgdmlhIExheW91
dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSguLikuCi0tICh2b2lkKV9zZXRQcmVm
ZXJlbmNlRm9yVGVzdFdpdGhWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZSBmb3JLZXk6KE5TU3RyaW5n
ICopa2V5OwotCiArICh2b2lkKXNldFdlYktpdExpbmtUaW1lVmVyc2lvbjooaW50KXZlcnNpb247
CiAKIC8vIEZvciBXZWJWaWV3J3MgdXNlIG9ubHkuCkBAIC0zMTAsNiArMzAzLDE5IEBAIEBpbnRl
cmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGVGZWEKIC0gKHZvaWQpX3NldEVuYWJsZWQ6
KEJPT0wpdmFsdWUgZm9yRmVhdHVyZTooV2ViRmVhdHVyZSAqKWZlYXR1cmU7CiBAZW5kCiAKK0Bp
bnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGVUZXN0aW5nKQorKyAodm9pZClfc3dp
dGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb247CisrICh2b2lkKV9zZXRDdXJyZW50
TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSljb29raWVBY2NlcHRQb2xpY3k7CisrICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJT
ZXNzaW9uOworCistICh2b2lkKV9yZXNldFRvRGVmYXVsdFZhbHVlc0ZvclRlc3Rpbmc7CistICh2
b2lkKV9zZXRCb29sUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KEJPT0wpdmFsdWUgZm9y
S2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZvaWQpX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0
aW5nV2l0aFZhbHVlOih1aW50MzJfdCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OworLSAo
dm9pZClfc2V0RG91YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KGRvdWJsZSl2YWx1
ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OworLSAodm9pZClfc2V0U3RyaW5nUHJlZmVyZW5jZUZv
clRlc3RpbmdXaXRoVmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtl
eTsKKworQGVuZAorCiAvLyBGSVhNRTogSWYgdGhlc2UgYXJlIG5vdCB1c2VkIGFueXdoZXJlLCB3
ZSBzaG91bGQgcmVtb3ZlIHRoZW0gYW5kIG9ubHkgdXNlIFdlYkZlYXR1cmUgbWVjaGFuaXNtIGZv
ciB0aGUgcHJlZmVyZW5jZS4KIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGVQ
cmVmZXJlbmNlc0NvbnZlcnRlZFRvV2ViRmVhdHVyZSkKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBC
T09MIHVzZXJHZXN0dXJlUHJvbWlzZVByb3BhZ2F0aW9uRW5hYmxlZDsKSW5kZXg6IFRvb2xzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODkyNCkK
KysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDIw
LTEwLTIzICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGlu
Z10gQ29udmVydCBEdW1wUmVuZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9w
dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
Nzg4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZ1
bGx5IHN1cHBvcnQgdXNlIG9mIGFueSBXZWJQcmVmZXJlbmNlcyoueWFtbCBwcmVmZXJlbmNlIGlu
IER1bXBSZW5kZXJUcmVlIChmb3IgbWFjT1MpIGJ5OgorICAgICAgICAgICAgLSBNb3ZpbmcgRHVt
cFJlbmRlclRyZWUncyBUZXN0T3B0aW9ucyB0byBiZSBmdWxseSBiYWNrZWQgYnkgVGVzdEZlYXR1
cmVzIGxpa2UgV2ViS2l0VGVzdFJ1bm5uZXIuCisgICAgICAgICAgICAtIEFkb3B0aW5nIG5ldyBX
ZWJQcmVmZXJlbmNlcyBTUEkgZm9yIHNldHRpbmcgYW55IHByZWZlcmVuY2UgYnkga2V5IGFuZCBy
ZXNldCBhbGwgcHJlZmVyZW5jZXMga2V5cy4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHRvTlMpOgorICAgICAgICAocmVzZXRXZWJQ
cmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChzZXRXZWJQcmVmZXJlbmNl
c0ZvclRlc3RPcHRpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5l
ck1hYy5tbToKKyAgICAgICAgKFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZSk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpyZXNldFByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKToKKwog
MjAyMC0xMC0yMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIE51bGwgY2hlY2sgcGxhdGZvcm1TdHJhdGVnaWVzIHdoZW4gbWFraW5nIGJsb2Ig
cmVhZCBzdHJlYW0gZm9yIGFuIE5TVVJMUmVxdWVzdApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkocmV2aXNpb24gMjY4ODcyKQorKysgVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAs
NiArMTMwLDExIEBAIGV4dGVybiAiQyIgewogI2ltcG9ydCA8bWFjaC1vL2dldHNlY3QuaD4KIH0K
IAorc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4gdG9OUyhjb25zdCBzdGQ6OnN0cmluZyYgc3Ry
aW5nKQoreworICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoVVRG
OFN0cmluZzpzdHJpbmcuY19zdHIoKV0pOworfQorCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiBAaW50ZXJmYWNlIER1bXBSZW5kZXJUcmVlQXBwbGljYXRpb24gOiBOU0FwcGxpY2F0aW9uCiBA
ZW5kCkBAIC04NDcsNiArODUyLDggQEAgc3RhdGljIHZvaWQgZW5hYmxlRXhwZXJpbWVudGFsRmVh
dHVyZXMoVwogLy8gQ2FsbGVkIGJlZm9yZSBlYWNoIHRlc3QuCiBzdGF0aWMgdm9pZCByZXNldFdl
YlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNl
cykKIHsKKyAgICBbcHJlZmVyZW5jZXMgX3Jlc2V0VG9EZWZhdWx0VmFsdWVzRm9yVGVzdGluZ107
CisKICAgICBlbmFibGVFeHBlcmltZW50YWxGZWF0dXJlcyhwcmVmZXJlbmNlcyk7CiAKICAgICBb
cHJlZmVyZW5jZXMgc2V0TmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcms6IE5PXTsK
QEAgLTk2OSw0MSArOTc2LDIxIEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0Nv
bnNpc3QKICAgICBbV2ViUHJlZmVyZW5jZXMgX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lv
bkNvb2tpZUFjY2VwdFBvbGljeTpOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5E
b2N1bWVudERvbWFpbl07CiB9CiAKLXN0YXRpYyBib29sIGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVy
ZVZhbHVlKHN0ZDo6c3RyaW5nIGtleSwgYm9vbCBkZWZhdWx0VmFsdWUsIGNvbnN0IFdUUjo6VGVz
dE9wdGlvbnMmIG9wdGlvbnMpCi17Ci0gICAgYXV0byBpdCA9IG9wdGlvbnMuYm9vbFdlYlByZWZl
cmVuY2VGZWF0dXJlcygpLmZpbmQoa2V5KTsKLSAgICBpZiAoaXQgIT0gb3B0aW9ucy5ib29sV2Vi
UHJlZmVyZW5jZUZlYXR1cmVzKCkuZW5kKCkpCi0gICAgICAgIHJldHVybiBpdC0+c2Vjb25kOwot
ICAgIHJldHVybiBkZWZhdWx0VmFsdWU7Ci19Ci0KIHN0YXRpYyB2b2lkIHNldFdlYlByZWZlcmVu
Y2VzRm9yVGVzdE9wdGlvbnMoV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzLCBjb25zdCBXVFI6
OlRlc3RPcHRpb25zJiBvcHRpb25zKQogewogICAgIHByZWZlcmVuY2VzLnByaXZhdGVCcm93c2lu
Z0VuYWJsZWQgPSBvcHRpb25zLnVzZUVwaGVtZXJhbFNlc3Npb24oKTsKIAotICAgIHByZWZlcmVu
Y2VzLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZh
bHVlKCJBdHRhY2htZW50RWxlbWVudEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJl
ZmVyZW5jZXMuYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVh
dHVyZVZhbHVlKCJBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwot
ICAgIHByZWZlcmVuY2VzLm1lbnVJdGVtRWxlbWVudEVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5j
ZUZlYXR1cmVWYWx1ZSgiTWVudUl0ZW1FbGVtZW50RW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsK
LSAgICBwcmVmZXJlbmNlcy5rZXlnZW5FbGVtZW50RW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNl
RmVhdHVyZVZhbHVlKCJLZXlnZW5FbGVtZW50RW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAg
ICBwcmVmZXJlbmNlcy5tb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJl
bmNlRmVhdHVyZVZhbHVlKCJNb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCIsIHRydWUsIG9wdGlv
bnMpOwotICAgIHByZWZlcmVuY2VzLmluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQgPSBib29sV2Vi
UHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiSW5zcGVjdG9yQWRkaXRpb25zRW5hYmxlZCIsIGZhbHNl
LCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5hbGxvd0Nyb3NzT3JpZ2luU3VicmVzb3VyY2Vz
VG9Bc2tGb3JDcmVkZW50aWFscyA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJBbGxv
d0Nyb3NzT3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyIsIGZhbHNlLCBvcHRp
b25zKTsKLSAgICBwcmVmZXJlbmNlcy5jb2xvckZpbHRlckVuYWJsZWQgPSBib29sV2ViUHJlZmVy
ZW5jZUZlYXR1cmVWYWx1ZSgiQ29sb3JGaWx0ZXJFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwot
ICAgIHByZWZlcmVuY2VzLnNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXNFbmFibGVkID0g
Ym9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIlNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5k
YXJpZXNFbmFibGVkIiwgdHJ1ZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMud2ViR1BVRW5h
YmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJXZWJHUFVFbmFibGVkIiwgZmFs
c2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLkNTU0xvZ2ljYWxFbmFibGVkID0gYm9vbFdl
YlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkNTU0xvZ2ljYWxFbmFibGVkIiwgZmFsc2UsIG9wdGlv
bnMpOwotICAgIHByZWZlcmVuY2VzLmxpbmVIZWlnaHRVbml0c0VuYWJsZWQgPSBib29sV2ViUHJl
ZmVyZW5jZUZlYXR1cmVWYWx1ZSgiTGluZUhlaWdodFVuaXRzRW5hYmxlZCIsIGZhbHNlLCBvcHRp
b25zKTsKLSAgICBwcmVmZXJlbmNlcy5hZENsaWNrQXR0cmlidXRpb25FbmFibGVkID0gYm9vbFdl
YlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQiLCBmYWxz
ZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMucmVzaXplT2JzZXJ2ZXJFbmFibGVkID0gYm9v
bFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIlJlc2l6ZU9ic2VydmVyRW5hYmxlZCIsIGZhbHNl
LCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5DU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFi
bGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkNTU09NVmlld1Ntb290aFNjcm9s
bGluZ0VuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuY29yZU1hdGhN
TEVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQ29yZU1hdGhNTEVuYWJs
ZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMucmVxdWVzdElkbGVDYWxsYmFj
a0VuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiUmVxdWVzdElkbGVDYWxs
YmFja0VuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuYXN5bmNDbGlw
Ym9hcmRBUElFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkFzeW5jQ2xp
cGJvYXJkQVBJRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy51c2Vz
UGFnZUNhY2hlID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIlVzZXNCYWNrRm9yd2Fy
ZENhY2hlIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmxheW91dEZvcm1hdHRp
bmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFs
dWUoIkxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkIiwgdHJ1ZSwgb3B0
aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuYXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdo
dEVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQXNwZWN0UmF0aW9PZklt
Z0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVy
ZW5jZXMuYWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyA9IGJvb2xXZWJQcmVmZXJlbmNlRmVh
dHVyZVZhbHVlKCJBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzIiwgdHJ1ZSwgb3B0aW9ucyk7
Ci0gICAgcHJlZmVyZW5jZXMuY29udGFjdFBpY2tlckFQSUVuYWJsZWQgPSBib29sV2ViUHJlZmVy
ZW5jZUZlYXR1cmVWYWx1ZSgiQ29udGFjdFBpY2tlckFQSUVuYWJsZWQiLCBmYWxzZSwgb3B0aW9u
cyk7CisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLmJvb2xXZWJQ
cmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXRCb29sUHJlZmVy
ZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dmFsdWUgZm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9u
czo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGtleSkpLmdldCgpXTsKKworICAgIGZvciAo
Y29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5kb3VibGVXZWJQcmVmZXJlbmNlRmVh
dHVyZXMoKSkKKyAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXREb3VibGVQcmVmZXJlbmNlRm9yVGVz
dGluZ1dpdGhWYWx1ZTp2YWx1ZSBmb3JLZXk6dG9OUyhXVFI6OlRlc3RPcHRpb25zOjp0b1dlYktp
dExlZ2FjeVByZWZlcmVuY2VLZXkoa2V5KSkuZ2V0KCldOworCisgICAgZm9yIChjb25zdCBhdXRv
JiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJlcygpKQor
ICAgICAgICBbcHJlZmVyZW5jZXMgX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZh
bHVlOnZhbHVlIGZvcktleTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJl
ZmVyZW5jZUtleShrZXkpKS5nZXQoKV07CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZh
bHVlXSA6IG9wdGlvbnMuc3RyaW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAgIFtw
cmVmZXJlbmNlcyBfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dG9OUyh2
YWx1ZSkuZ2V0KCkgZm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQ
cmVmZXJlbmNlS2V5KGtleSkpLmdldCgpXTsKIH0KIAogLy8gQ2FsbGVkIG9uY2Ugb24gRHVtcFJl
bmRlclRyZWUgc3RhcnR1cC4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tCShyZXZpc2lvbiAyNjg4NzIpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
VGVzdFJ1bm5lck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjA5LDcgKzYwOSw3IEBAIHZvaWQg
VGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3QKICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IHZhbHVlQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHZhbHVlKSk7CiAgICAgTlNTdHJpbmcgKnZhbHVlTlMgPSAoX19icmlkZ2UgTlNT
dHJpbmcgKil2YWx1ZUNGLmdldCgpOwogCi0gICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZl
cmVuY2VzXSBfc2V0UHJlZmVyZW5jZUZvclRlc3RXaXRoVmFsdWU6dmFsdWVOUyBmb3JLZXk6a2V5
TlNdOworICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gX3NldFN0cmluZ1By
ZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnZhbHVlTlMgZm9yS2V5OmtleU5TXTsKIH0KIAog
dm9pZCBUZXN0UnVubmVyOjpyZW1vdmVBbGxWaXNpdGVkTGlua3MoKQpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI2ODg3MikKKysrIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05MjEsMTcgKzkyMSwxNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpyZXNldFByZWZlcmVuY2Vz
VG9DCiAgICAgcGxhdGZvcm1SZXNldFByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKCk7CiAK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuYm9vbFdlYlByZWZl
cmVuY2VGZWF0dXJlcygpKQotICAgICAgICBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5
KHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKKyAgICAgICAgV0tQcmVmZXJl
bmNlc1NldEJvb2xWYWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dL
KGtleSkuZ2V0KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRp
b25zLmRvdWJsZVdlYlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAgICAgICBXS1ByZWZlcmVuY2Vz
U2V0RG91YmxlVmFsdWVGb3JLZXkocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkp
OworICAgICAgICBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXlGb3JUZXN0aW5nKHBy
ZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0
byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkK
LSAgICAgICAgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5KHByZWZlcmVuY2VzLCB2
YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZh
bHVlRm9yS2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7
CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuc3RyaW5nV2Vi
UHJlZmVyZW5jZUZlYXR1cmVzKCkpCi0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1
ZUZvcktleShwcmVmZXJlbmNlcywgdG9XSyh2YWx1ZSkuZ2V0KCksIHRvV0soa2V5KS5nZXQoKSk7
Ci0KKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5Rm9yVGVzdGluZyhw
cmVmZXJlbmNlcywgdG9XSyh2YWx1ZSkuZ2V0KCksIHRvV0soa2V5KS5nZXQoKSk7CiB9CiAKIGJv
b2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVz
dE9wdGlvbnMmIG9wdGlvbnMsIFJlc2V0U3RhZ2UgcmVzZXRTdGFnZSkK
</data>
<flag name="commit-queue"
          id="428586"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412190</attachid>
            <date>2020-10-23 09:31:26 -0700</date>
            <delta_ts>2020-10-23 09:48:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201023093125.patch</filename>
            <type>text/plain</type>
            <size>29055</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg4NzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTIwICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVu
ZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlbmFtZSBXS1ByZWZlcmVuY2VzU2V0
KlZhbHVlRm9yS2V5IFNQSSB0byBXS1ByZWZlcmVuY2VzU2V0KlZhbHVlRm9yS2V5Rm9yVGVzdGlu
ZworICAgICAgICB0byBtYWtlIGl0IGNsZWFyIHdoYXQgdGhleSBhcmUgdXNlZCBmb3IgYW5kIGZv
ciBjb25zaXN0ZW5jeSB3aXRoIFdlYktpdExlZ2FjeS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFs
dWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1
ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVl
Rm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVG
b3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JL
ZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5
KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleSk6
IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0
ZS5oOgorCiAyMDIwLTEwLTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBJbnRyb2R1Y2Ugd29ya2xldCBkZXN0aW5hdGlvbnMgYW5kIGFsbG93IHRvIGZldGNo
IG1vZHVsZXMgd2l0aCBDT1JTIGJhc2VkIG9uIGRlc3RpbmF0aW9uCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gMjY4
ODcyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc4LDIyICs3OCwyMiBAQCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRJ
bnRlcm5hbERlYnVnRmVhdHVyCiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0SW50ZXJu
YWxEZWJ1Z0ZlYXR1cmVFbmFibGVkRm9yS2V5KHRvV1RGU3RyaW5nKGludGVybmFsRGVidWdGZWF0
dXJlS2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JL
ZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1ZSwgV0tTdHJpbmdS
ZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9yVGVzdGluZyhX
S1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZhbHVlLCBXS1N0cmluZ1JlZiBr
ZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0Qm9vbFZhbHVlRm9yS2V5KHRv
V1RGU3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0RG91Ymxl
VmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgZG91YmxlIHZhbHVl
LCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktl
eUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgZG91YmxlIHZhbHVl
LCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0Qm9v
bFZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1ByZWZl
cmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1Jl
ZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1Nl
dFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2Vz
UmVmLCB1aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVm
ZXJlbmNlc1JlZiktPnNldFVJbnQzMlZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHZhbHVl
KTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFsdWUsIFdLU3RyaW5nUmVmIGtl
eSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdS
ZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldFN0cmluZ1ZhbHVlRm9y
S2V5KHRvV1RGU3RyaW5nKGtleSksIHRvV1RGU3RyaW5nKHZhbHVlKSk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQ
cml2YXRlLmgJKHJldmlzaW9uIDI2ODg3MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDEwICs1
NiwxMCBAQCBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzUmVzZXRBbGxJbnRlCiBXS19FWFBP
UlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0SW50ZXJuYWxEZWJ1Z0ZlYXR1cmVGb3JLZXkoV0tQcmVm
ZXJlbmNlc1JlZiwgYm9vbCwgV0tTdHJpbmdSZWYpOwogCiAvLyBUaGUgZm9sbG93aW5nIGdlbmVy
aWMgc2V0dGVyIGZ1bmN0aW9ucyBhcmUgb25seSBpbnRlbmRlZCBmb3IgdXNlIGJ5IHRlc3Rpbmcg
aW5mcmFzdHJ1Y3R1cmUuCi1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVl
Rm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgdmFsdWUsIFdLU3Ry
aW5nUmVmIGtleSk7Ci1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVG
b3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0
cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVl
Rm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIHVpbnQzMl90IHZhbHVlLCBX
S1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1Zh
bHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RyaW5nUmVmIHZh
bHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldEJv
b2xWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwg
Ym9vbCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5j
ZXNTZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJl
bmNlc1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQg
V0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzUmVmLCB1aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKK1dL
X0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleUZvclRlc3Rpbmco
V0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFsdWUsIFdLU3Ry
aW5nUmVmIGtleSk7CiAKIC8vIEZvciBUZXN0IFJ1bm5lciBVc2Ugb25seS4KIFdLX0VYUE9SVCB2
b2lkIFdLUHJlZmVyZW5jZXNSZXNldFRlc3RSdW5uZXJPdmVycmlkZXMoV0tQcmVmZXJlbmNlc1Jl
ZiBwcmVmZXJlbmNlc1JlZik7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNjg4NzIpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAyMC0xMC0yMCAgU2FtIFdlaW5pZyAgPHdlaW5p
Z0BhcHBsZS5jb20+CisKKyAgICAgICAgW1Rlc3RpbmddIENvbnZlcnQgRHVtcFJlbmRlclRyZWUg
dG8gdXNlIGdlbmVyYXRlZCB0ZXN0IGhlYWRlciBvcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc4ODAKKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICBFeHBvc2UgYSBzZXQgb2Ygc2V0dGVycyB0byBmb3Ig
RHVtcFJlbmRlclRyZWUgdG8gdXNlIHdoZW4gc2V0dGluZyBwcmVmZXJlbmNlcworICAgICAgICBi
eSBzdHJpbmcuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tOgorICAgICAg
ICAoK1tXZWJQcmVmZXJlbmNlcyBfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Np
b25dKToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3NldEN1cnJlbnROZXR3b3JrTG9hZGVy
U2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTpdKToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMg
X2NsZWFyTmV0d29ya0xvYWRlclNlc3Npb25dKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMg
X3NldEJvb2xQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAg
ICgtW1dlYlByZWZlcmVuY2VzIF9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1
ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXREb3VibGVQcmVmZXJl
bmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVu
Y2VzIF9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6Cisg
ICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhWYWx1ZTpm
b3JLZXk6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZh
dGUuaDoKKwogMjAyMC0xMC0yMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgW21hY09TIFdLMV0gcHJvdmlkZSBhIHdheSBmb3IgQXBwbGUtaW50ZXJuYWwgY2xp
ZW50cyB0byBkaXNhYmxlIGxpbmsgcHJldmlldwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiAyNjg4NzIpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjYwLDI2ICsxNjYwLDYgQEAgKyAodm9pZClfc2V0SUJDcmVhdG9ySUQ6
KE5TU3RyaW5nICopc3RyaQogICAgIFtvbGQgcmVsZWFzZV07CiB9CiAKLSsgKHZvaWQpX3N3aXRj
aE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICBXZWJUaHJlYWRMb2NrKCk7Ci0jZW5kaWYKLSAgICBOZXR3b3JrU3RvcmFnZVNl
c3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKLX0KLQotKyAodm9pZClfY2xl
YXJOZXR3b3JrTG9hZGVyU2Vzc2lvbgotewotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6
ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZGVsZXRlQWxsQ29va2llcygpOwotfQotCi0rICh2b2lk
KV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRU
UENvb2tpZUFjY2VwdFBvbGljeSlwb2xpY3kKLXsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2ll
U3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVm
YXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVT
dG9yYWdlKTsgLy8gV2lsbCBmYWlsIHdoZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0
Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KLSAgICBD
RkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0
KCksIHBvbGljeSk7Ci19Ci0KIC0gKEJPT0wpaXNET01QYXN0ZUFsbG93ZWQKIHsKICAgICByZXR1
cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktleTpXZWJLaXRET01QYXN0ZUFsbG93ZWRQcmVmZXJlbmNl
S2V5XTsKQEAgLTE5NjYsMTEgKzE5NDYsNiBAQCAtICh2b2lkKXdpbGxBZGRUb1dlYlZpZXcKICAg
ICArK19wcml2YXRlLT5udW1XZWJWaWV3czsKIH0KIAotLSAodm9pZClfc2V0UHJlZmVyZW5jZUZv
clRlc3RXaXRoVmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQot
ewotICAgIFtzZWxmIF9zZXRTdHJpbmdWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKLX0KLQogLSAo
dm9pZClzZXRGdWxsU2NyZWVuRW5hYmxlZDooQk9PTClmbGFnCiB7CiAgICAgW3NlbGYgX3NldEJv
b2xWYWx1ZTpmbGFnIGZvcktleTpXZWJLaXRGdWxsU2NyZWVuRW5hYmxlZFByZWZlcmVuY2VLZXld
OwpAQCAtMzAxMyw2ICsyOTg4LDU4IEBAIC0gKHZvaWQpX3NldEVuYWJsZWQ6KEJPT0wpdmFsdWUg
Zm9yRmVhdHUKIAogQGVuZAogCitAaW1wbGVtZW50YXRpb24gV2ViUHJlZmVyZW5jZXMgKFdlYlBy
aXZhdGVUZXN0aW5nKQorCisrICh2b2lkKV9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5n
U2Vzc2lvbgoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgV2ViVGhyZWFkTG9jaygp
OworI2VuZGlmCisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3Rp
bmdTZXNzaW9uKCk7Cit9CisKKysgKHZvaWQpX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lv
bkNvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeQorewor
ICAgIGF1dG8gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVs
dFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpOworICAgIFJFTEVBU0VfQVNTRVJUKGNv
b2tpZVN0b3JhZ2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6
OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90IGNhbGxlZCBiZWZvcmVoYW5kLgor
ICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFn
ZS5nZXQoKSwgcG9saWN5KTsKK30KKworKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lv
bgoreworICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCkuZGVsZXRlQWxsQ29va2llcygpOworfQorCistICh2b2lkKV9yZXNldFRvRGVmYXVsdFZhbHVl
c0ZvclRlc3RpbmcKK3sKKyAgICBfcHJpdmF0ZS0+dmFsdWVzID0gYWRvcHROUyhbW05TTXV0YWJs
ZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICBbc2VsZiBfdXBkYXRlUHJpdmF0ZUJyb3dz
aW5nU3RhdGVUbzpbc2VsZiBwcml2YXRlQnJvd3NpbmdFbmFibGVkXV07CisgICAgW3NlbGYgX3Bv
c3RQcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb25dOworICAgIFtzZWxmIF9wb3N0Q2FjaGVN
b2RlbENoYW5nZWROb3RpZmljYXRpb25dOworfQorCistICh2b2lkKV9zZXRCb29sUHJlZmVyZW5j
ZUZvclRlc3RpbmdXaXRoVmFsdWU6KEJPT0wpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQor
eworICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6dmFsdWUgZm9yS2V5OmtleV07Cit9CisKKy0gKHZv
aWQpX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOih1aW50MzJfdCl2YWx1
ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5Cit7CisgICAgW3NlbGYgX3NldEludGVnZXJWYWx1ZTp2
YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAodm9pZClfc2V0RG91YmxlUHJlZmVyZW5jZUZvclRl
c3RpbmdXaXRoVmFsdWU6KGRvdWJsZSl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5Cit7Cisg
ICAgW3NlbGYgX3NldEZsb2F0VmFsdWU6dmFsdWUgZm9yS2V5OmtleV07Cit9CisKKy0gKHZvaWQp
X3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihOU1N0cmluZyAqKXZhbHVl
IGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2VsZiBfc2V0U3RyaW5nVmFsdWU6dmFs
dWUgZm9yS2V5OmtleV07Cit9CisKK0BlbmQKKwogQGltcGxlbWVudGF0aW9uIFdlYlByZWZlcmVu
Y2VzIChXZWJQcml2YXRlUHJlZmVyZW5jZXNDb252ZXJ0ZWRUb1dlYkZlYXR1cmUpCiAKIC0gKEJP
T0wpdXNlckdlc3R1cmVQcm9taXNlUHJvcGFnYXRpb25FbmFibGVkCkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRl
LmgJKHJldmlzaW9uIDI2ODg3MikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViUHJlZmVyZW5jZXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDEzICs4OSw2IEBA
IEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGUpCiArICh2b2lkKV9zZXRJbml0
aWFsRGVmYXVsdFRleHRFbmNvZGluZ1RvU3lzdGVtRW5jb2Rpbmc7CiArICh2b2lkKV9zZXRJQkNy
ZWF0b3JJRDooTlNTdHJpbmcgKilzdHJpbmc7CiAKLS8vIEZvciBEdW1wUmVuZGVyVHJlZSB1c2Ug
b25seS4KLSsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uOwot
KyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5
OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpY29va2llQWNjZXB0UG9saWN5OwotKyAodm9pZClf
Y2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbjsKLS8vIFVzZWQgdG8gc2V0IHByZWZlcmVuY2Ugc3Bl
Y2lmaWVkIGluIHRoZSB0ZXN0IHZpYSBMYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZl
cmVuY2UoLi4pLgotLSAodm9pZClfc2V0UHJlZmVyZW5jZUZvclRlc3RXaXRoVmFsdWU6KE5TU3Ry
aW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKLQogKyAodm9pZClzZXRXZWJLaXRM
aW5rVGltZVZlcnNpb246KGludCl2ZXJzaW9uOwogCiAvLyBGb3IgV2ViVmlldydzIHVzZSBvbmx5
LgpAQCAtMzEwLDYgKzMwMywxOCBAQCBAaW50ZXJmYWNlIFdlYlByZWZlcmVuY2VzIChXZWJQcml2
YXRlRmVhCiAtICh2b2lkKV9zZXRFbmFibGVkOihCT09MKXZhbHVlIGZvckZlYXR1cmU6KFdlYkZl
YXR1cmUgKilmZWF0dXJlOwogQGVuZAogCitAaW50ZXJmYWNlIFdlYlByZWZlcmVuY2VzIChXZWJQ
cml2YXRlVGVzdGluZykKKysgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdT
ZXNzaW9uOworKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNj
ZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpY29va2llQWNjZXB0UG9saWN5Owor
KyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbjsKKworLSAodm9pZClfcmVzZXRUb0Rl
ZmF1bHRWYWx1ZXNGb3JUZXN0aW5nOworLSAodm9pZClfc2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0
aW5nV2l0aFZhbHVlOihCT09MKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXk7CistICh2b2lk
KV9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZToodWludDMyX3QpdmFsdWUg
Zm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZvaWQpX3NldERvdWJsZVByZWZlcmVuY2VGb3JU
ZXN0aW5nV2l0aFZhbHVlOihkb3VibGUpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0g
KHZvaWQpX3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihOU1N0cmluZyAq
KXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXk7CitAZW5kCisKIC8vIEZJWE1FOiBJZiB0aGVz
ZSBhcmUgbm90IHVzZWQgYW55d2hlcmUsIHdlIHNob3VsZCByZW1vdmUgdGhlbSBhbmQgb25seSB1
c2UgV2ViRmVhdHVyZSBtZWNoYW5pc20gZm9yIHRoZSBwcmVmZXJlbmNlLgogQGludGVyZmFjZSBX
ZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVByZWZlcmVuY2VzQ29udmVydGVkVG9XZWJGZWF0dXJl
KQogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgdXNlckdlc3R1cmVQcm9taXNlUHJvcGFnYXRp
b25FbmFibGVkOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0No
YW5nZUxvZwkocmV2aXNpb24gMjY4OTI0KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjAtMTAtMjMgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBw
bGUuY29tPgorCisgICAgICAgIFtUZXN0aW5nXSBDb252ZXJ0IER1bXBSZW5kZXJUcmVlIHRvIHVz
ZSBnZW5lcmF0ZWQgdGVzdCBoZWFkZXIgb3B0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3ODgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgRnVsbHkgc3VwcG9ydCB1c2Ugb2YgYW55IFdlYlByZWZlcmVu
Y2VzKi55YW1sIHByZWZlcmVuY2UgaW4gRHVtcFJlbmRlclRyZWUgKGZvciBtYWNPUykgYnk6Cisg
ICAgICAgICAgICAtIE1vdmluZyBEdW1wUmVuZGVyVHJlZSdzIFRlc3RPcHRpb25zIHRvIGJlIGZ1
bGx5IGJhY2tlZCBieSBUZXN0RmVhdHVyZXMgbGlrZSBXZWJLaXRUZXN0UnVubm5lci4KKyAgICAg
ICAgICAgIC0gQWRvcHRpbmcgbmV3IFdlYlByZWZlcmVuY2VzIFNQSSBmb3Igc2V0dGluZyBhbnkg
cHJlZmVyZW5jZSBieSBrZXkgYW5kIHJlc2V0IGFsbCBwcmVmZXJlbmNlcyBrZXlzLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAodG9O
Uyk6CisgICAgICAgIChyZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKToKKyAg
ICAgICAgKHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgorICAgICAgICAoVGVzdFJ1bm5lcjo6b3Zl
cnJpZGVQcmVmZXJlbmNlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0UHJlZmVyZW5jZXNU
b0NvbnNpc3RlbnRWYWx1ZXMpOgorCiAyMDIwLTEwLTIyICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTnVsbCBjaGVjayBwbGF0Zm9ybVN0cmF0
ZWdpZXMgd2hlbiBtYWtpbmcgYmxvYiByZWFkIHN0cmVhbSBmb3IgYW4gTlNVUkxSZXF1ZXN0Cklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjY4ODcyKQorKysg
VG9vbHMvRHVtcFJlbmRlclRyZWUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDYgKzQwLDcgQEAgbGlzdChBUFBFTkQgRHVtcFJlbmRlclRyZWVfUFJJVkFURV9JTkNMVQogKQog
CiBzZXQoRHVtcFJlbmRlclRyZWVfV0VCX1BSRUZFUkVOQ0VTX1RFTVBMQVRFUworICAgICR7RHVt
cFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25z
R2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiCiAgICAgJHtEdW1wUmVuZGVy
VHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0
ZWRLZXlzLmguZXJiCiApCiAKQEAgLTUzLDEyICs1NCwxMyBAQCBzZXQoRHVtcFJlbmRlclRyZWVf
V0VCX1BSRUZFUkVOQ0VTCiBzZXRfc291cmNlX2ZpbGVzX3Byb3BlcnRpZXMoJHtEdW1wUmVuZGVy
VHJlZV9XRUJfUFJFRkVSRU5DRVN9IFBST1BFUlRJRVMgR0VORVJBVEVEIFRSVUUpCiAKIGFkZF9j
dXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtEdW1wUmVuZGVyVHJlZV9ERVJJVkVEX1NPVVJD
RVNfRElSfS9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaAorICAgIE9VVFBVVCAke0R1bXBSZW5k
ZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVn
YWN5S2V5TWFwcGluZy5jcHAgJHtEdW1wUmVuZGVyVHJlZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9U
ZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaAogICAgIERFUEVORFMgJHtEdW1wUmVuZGVyVHJlZV9X
RUJfUFJFRkVSRU5DRVNfVEVNUExBVEVTfSAke0R1bXBSZW5kZXJUcmVlX1dFQl9QUkVGRVJFTkNF
U30gV1RGX0NvcHlQcmVmZXJlbmNlcwotICAgIENPTU1BTkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7
V1RGX1NDUklQVFNfRElSfS9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiIC0tZnJvbnRlbmQgV2ViS2l0
TGVnYWN5IC0tYmFzZSAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5j
ZXMueWFtbCAtLWRlYnVnICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJl
bmNlc0RlYnVnLnlhbWwgLS1leHBlcmltZW50YWwgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVu
Y2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgLS1pbnRlcm5hbCAke1dURl9TQ1JJ
UFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sIC0tb3V0cHV0
RGlyICIke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9IiAtLXRlbXBsYXRlICR7
RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRp
b25zR2VuZXJhdGVkS2V5cy5oLmVyYgorICAgIENPTU1BTkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7
V1RGX1NDUklQVFNfRElSfS9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiIC0tZnJvbnRlbmQgV2ViS2l0
TGVnYWN5IC0tYmFzZSAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5j
ZXMueWFtbCAtLWRlYnVnICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJl
bmNlc0RlYnVnLnlhbWwgLS1leHBlcmltZW50YWwgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVu
Y2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgLS1pbnRlcm5hbCAke1dURl9TQ1JJ
UFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sIC0tb3V0cHV0
RGlyICIke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9IiAtLXRlbXBsYXRlICR7
RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRp
b25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiIC0tdGVtcGxhdGUgJHtE
dW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlv
bnNHZW5lcmF0ZWRLZXlzLmguZXJiCiAgICAgVkVSQkFUSU0pCiAKIGxpc3QoQVBQRU5EIER1bXBS
ZW5kZXJUcmVlX1NPVVJDRVMKKyAgICAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19E
SVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAKICAgICAk
e0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVk
S2V5cy5oCiApCiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjY4ODcyKQorKysgVG9vbHMvRHVt
cFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAkod29ya2luZyBjb3B5
KQpAQCAtNyw2ICs3LDcgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRl
LwogJChQUk9KRUNUX0RJUikvLi4vVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmlu
ZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbAogJChQUk9KRUNUX0RJUikvQmluZGluZ3MvQ29k
ZUdlbmVyYXRvckR1bXBSZW5kZXJUcmVlLnBtCiAkKFBST0pFQ1RfRElSKS9EZXJpdmVkU291cmNl
cy5tYWtlCiskKFBST0pFQ1RfRElSKS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RP
cHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiCiAkKFBST0pFQ1Rf
RElSKS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5
cy5oLmVyYgogJChQUk9KRUNUX0RJUikvU2NyaXB0cy9nZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMu
c2gKICQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9Db2RlR2VuZXJhdG9yLnBtCkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdAkocmV2aXNpb24gMjY4ODcyKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw1
IEBACiAjIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgdGhlIGdlbmVyYXRlLXhjZmlsZWxpc3Rz
IHNjcmlwdC4KICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9EdW1wUmVuZGVy
VHJlZS9KU1VJU2NyaXB0Q29udHJvbGxlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9EdW1wUmVuZGVyVHJlZS9KU1VJU2NyaXB0Q29udHJvbGxlci5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5o
CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9u
IDI2ODg3MikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdv
cmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDcgQEAgV0VCX1BSRUZFUkVOQ0VTID0gXAogIwogCiBX
RUJfUFJFRkVSRU5DRVNfR0VORVJBVEVEX0ZJTEVTID0gXAorICAgIFRlc3RPcHRpb25zR2VuZXJh
dGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgXAogICAgIFRlc3RPcHRpb25zR2VuZXJhdGVk
S2V5cy5oIFwKICMKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAy
Njg4NzIpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzMsNyArMzMzLDggQEAKIAkJN0M0
NDY5N0YyNTM3N0EwMjAwMjQyOTBBIC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDNDQ2OTgwMjUzNzdBMDIwMDI0MjkwQSAvKiBjaGVjay14Y2ZpbGVsaXN0cy5z
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
c2NyaXB0LnNoOyBwYXRoID0gImNoZWNrLXhjZmlsZWxpc3RzLnNoIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0M0NDY5ODEyNTM3N0EwMjAwMjQyOTBBIC8qIGdlbmVyYXRlLWRlcml2
ZWQtc291cmNlcy5zaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuc2NyaXB0LnNoOyBwYXRoID0gImdlbmVyYXRlLWRlcml2ZWQtc291cmNlcy5z
aCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDNDQ2OTg1MjUzNzdFNTIwMDI0Mjkw
QSAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGVzdE9wdGlv
bnNHZW5lcmF0ZWRLZXlzLmg7IHBhdGggPSBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M0NDY5ODUyNTM3N0U1MjAwMjQyOTBBIC8qIFRl
c3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0T3B0aW9uc0dlbmVy
YXRlZEtleXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M5ODkzREUyNTQzM0M4
NzAwMzU0RUJDIC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtl
eU1hcHBpbmcuY3BwOyBwYXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlN
YXBwaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NCQkMzMjIxRERGQ0Y5
QTAwNzg2QjlEIC8qIFRlc3RPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRlc3RPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRkY5QkJE
MjUzM0JCMjQwMDA4MDA5RiAvKiBUZXN0RmVhdHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdEZl
YXR1cmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRkY5QkJFMjUzM0JCMjQw
MDA4MDA5RiAvKiBUZXN0RmVhdHVyZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVzdEZlYXR1
cmVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc3Nyw2ICs3NzgsNyBAQAog
CQk3QzQ0Njk4MjI1Mzc3QzM0MDAyNDI5MEEgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk3Qzk4OTNERTI1NDMzQzg3MDAz
NTRFQkMgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAq
LywKIAkJCQk3QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRL
ZXlzLmggKi8sCiAJCQkpOwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwpJbmRleDogVG9v
bHMvRHVtcFJlbmRlclRyZWUvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9u
c0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9EdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRp
b25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiCShub25leGlzdGVudCkK
KysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVz
dE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIDwlPSBAd2FybmluZyAlPgorICoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0T3B0aW9ucy5oIgorCituYW1l
c3BhY2UgV1RSIHsKKworc3RkOjpzdHJpbmcgVGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJl
ZmVyZW5jZUtleShjb25zdCBzdGQ6OnN0cmluZyYgd2ViUHJlZmVyZW5jZXNLZXkpCit7CisgICAg
c3RhdGljIHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IG5vblN0
YW5kYXJkS2V5cyA9IHsKKzwlLSBmb3IgQHByZWYgaW4gQGV4cG9zZWRQcmVmZXJlbmNlcy5zZWxl
Y3QgeyB8cHwgcC5vcHRzWyJ3ZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5Il0gfSBkbyAtJT4KKyAg
ICAgICAgeyAiPCU9IEBwcmVmLm5hbWUgJT4iLCAiPCU9IEBwcmVmLnByZWZlcmVuY2VLZXkgJT4i
IH0sIFwKKzwlLSBlbmQgLSU+CisgICAgfTsKKworICAgIGF1dG8gaXQgPSBub25TdGFuZGFyZEtl
eXMuZmluZCh3ZWJQcmVmZXJlbmNlc0tleSk7CisgICAgaWYgKGl0ICE9IG5vblN0YW5kYXJkS2V5
cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7CisKKyAgICByZXR1cm4gIldlYktp
dCIgKyB3ZWJQcmVmZXJlbmNlc0tleTsKK30KKworfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkocmV2aXNpb24gMjY4ODcyKQorKysgVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAs
NiArMTMwLDExIEBAIGV4dGVybiAiQyIgewogI2ltcG9ydCA8bWFjaC1vL2dldHNlY3QuaD4KIH0K
IAorc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4gdG9OUyhjb25zdCBzdGQ6OnN0cmluZyYgc3Ry
aW5nKQoreworICAgIHJldHVybiBhZG9wdE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoVVRG
OFN0cmluZzpzdHJpbmcuY19zdHIoKV0pOworfQorCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiBAaW50ZXJmYWNlIER1bXBSZW5kZXJUcmVlQXBwbGljYXRpb24gOiBOU0FwcGxpY2F0aW9uCiBA
ZW5kCkBAIC04NDcsNiArODUyLDggQEAgc3RhdGljIHZvaWQgZW5hYmxlRXhwZXJpbWVudGFsRmVh
dHVyZXMoVwogLy8gQ2FsbGVkIGJlZm9yZSBlYWNoIHRlc3QuCiBzdGF0aWMgdm9pZCByZXNldFdl
YlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNl
cykKIHsKKyAgICBbcHJlZmVyZW5jZXMgX3Jlc2V0VG9EZWZhdWx0VmFsdWVzRm9yVGVzdGluZ107
CisKICAgICBlbmFibGVFeHBlcmltZW50YWxGZWF0dXJlcyhwcmVmZXJlbmNlcyk7CiAKICAgICBb
cHJlZmVyZW5jZXMgc2V0TmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcms6IE5PXTsK
QEAgLTk2OSw0MSArOTc2LDIxIEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0Nv
bnNpc3QKICAgICBbV2ViUHJlZmVyZW5jZXMgX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lv
bkNvb2tpZUFjY2VwdFBvbGljeTpOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5E
b2N1bWVudERvbWFpbl07CiB9CiAKLXN0YXRpYyBib29sIGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVy
ZVZhbHVlKHN0ZDo6c3RyaW5nIGtleSwgYm9vbCBkZWZhdWx0VmFsdWUsIGNvbnN0IFdUUjo6VGVz
dE9wdGlvbnMmIG9wdGlvbnMpCi17Ci0gICAgYXV0byBpdCA9IG9wdGlvbnMuYm9vbFdlYlByZWZl
cmVuY2VGZWF0dXJlcygpLmZpbmQoa2V5KTsKLSAgICBpZiAoaXQgIT0gb3B0aW9ucy5ib29sV2Vi
UHJlZmVyZW5jZUZlYXR1cmVzKCkuZW5kKCkpCi0gICAgICAgIHJldHVybiBpdC0+c2Vjb25kOwot
ICAgIHJldHVybiBkZWZhdWx0VmFsdWU7Ci19Ci0KIHN0YXRpYyB2b2lkIHNldFdlYlByZWZlcmVu
Y2VzRm9yVGVzdE9wdGlvbnMoV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzLCBjb25zdCBXVFI6
OlRlc3RPcHRpb25zJiBvcHRpb25zKQogewogICAgIHByZWZlcmVuY2VzLnByaXZhdGVCcm93c2lu
Z0VuYWJsZWQgPSBvcHRpb25zLnVzZUVwaGVtZXJhbFNlc3Npb24oKTsKIAotICAgIHByZWZlcmVu
Y2VzLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZh
bHVlKCJBdHRhY2htZW50RWxlbWVudEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJl
ZmVyZW5jZXMuYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVh
dHVyZVZhbHVlKCJBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwot
ICAgIHByZWZlcmVuY2VzLm1lbnVJdGVtRWxlbWVudEVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5j
ZUZlYXR1cmVWYWx1ZSgiTWVudUl0ZW1FbGVtZW50RW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsK
LSAgICBwcmVmZXJlbmNlcy5rZXlnZW5FbGVtZW50RW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNl
RmVhdHVyZVZhbHVlKCJLZXlnZW5FbGVtZW50RW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAg
ICBwcmVmZXJlbmNlcy5tb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJl
bmNlRmVhdHVyZVZhbHVlKCJNb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCIsIHRydWUsIG9wdGlv
bnMpOwotICAgIHByZWZlcmVuY2VzLmluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQgPSBib29sV2Vi
UHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiSW5zcGVjdG9yQWRkaXRpb25zRW5hYmxlZCIsIGZhbHNl
LCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5hbGxvd0Nyb3NzT3JpZ2luU3VicmVzb3VyY2Vz
VG9Bc2tGb3JDcmVkZW50aWFscyA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJBbGxv
d0Nyb3NzT3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyIsIGZhbHNlLCBvcHRp
b25zKTsKLSAgICBwcmVmZXJlbmNlcy5jb2xvckZpbHRlckVuYWJsZWQgPSBib29sV2ViUHJlZmVy
ZW5jZUZlYXR1cmVWYWx1ZSgiQ29sb3JGaWx0ZXJFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwot
ICAgIHByZWZlcmVuY2VzLnNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXNFbmFibGVkID0g
Ym9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIlNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5k
YXJpZXNFbmFibGVkIiwgdHJ1ZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMud2ViR1BVRW5h
YmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJXZWJHUFVFbmFibGVkIiwgZmFs
c2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLkNTU0xvZ2ljYWxFbmFibGVkID0gYm9vbFdl
YlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkNTU0xvZ2ljYWxFbmFibGVkIiwgZmFsc2UsIG9wdGlv
bnMpOwotICAgIHByZWZlcmVuY2VzLmxpbmVIZWlnaHRVbml0c0VuYWJsZWQgPSBib29sV2ViUHJl
ZmVyZW5jZUZlYXR1cmVWYWx1ZSgiTGluZUhlaWdodFVuaXRzRW5hYmxlZCIsIGZhbHNlLCBvcHRp
b25zKTsKLSAgICBwcmVmZXJlbmNlcy5hZENsaWNrQXR0cmlidXRpb25FbmFibGVkID0gYm9vbFdl
YlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQiLCBmYWxz
ZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMucmVzaXplT2JzZXJ2ZXJFbmFibGVkID0gYm9v
bFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIlJlc2l6ZU9ic2VydmVyRW5hYmxlZCIsIGZhbHNl
LCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5DU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFi
bGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkNTU09NVmlld1Ntb290aFNjcm9s
bGluZ0VuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuY29yZU1hdGhN
TEVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQ29yZU1hdGhNTEVuYWJs
ZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMucmVxdWVzdElkbGVDYWxsYmFj
a0VuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiUmVxdWVzdElkbGVDYWxs
YmFja0VuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuYXN5bmNDbGlw
Ym9hcmRBUElFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkFzeW5jQ2xp
cGJvYXJkQVBJRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy51c2Vz
UGFnZUNhY2hlID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIlVzZXNCYWNrRm9yd2Fy
ZENhY2hlIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmxheW91dEZvcm1hdHRp
bmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFs
dWUoIkxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkIiwgdHJ1ZSwgb3B0
aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuYXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdo
dEVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQXNwZWN0UmF0aW9PZklt
Z0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVy
ZW5jZXMuYWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyA9IGJvb2xXZWJQcmVmZXJlbmNlRmVh
dHVyZVZhbHVlKCJBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzIiwgdHJ1ZSwgb3B0aW9ucyk7
Ci0gICAgcHJlZmVyZW5jZXMuY29udGFjdFBpY2tlckFQSUVuYWJsZWQgPSBib29sV2ViUHJlZmVy
ZW5jZUZlYXR1cmVWYWx1ZSgiQ29udGFjdFBpY2tlckFQSUVuYWJsZWQiLCBmYWxzZSwgb3B0aW9u
cyk7CisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLmJvb2xXZWJQ
cmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXRCb29sUHJlZmVy
ZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dmFsdWUgZm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9u
czo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGtleSkpLmdldCgpXTsKKworICAgIGZvciAo
Y29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5kb3VibGVXZWJQcmVmZXJlbmNlRmVh
dHVyZXMoKSkKKyAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXREb3VibGVQcmVmZXJlbmNlRm9yVGVz
dGluZ1dpdGhWYWx1ZTp2YWx1ZSBmb3JLZXk6dG9OUyhXVFI6OlRlc3RPcHRpb25zOjp0b1dlYktp
dExlZ2FjeVByZWZlcmVuY2VLZXkoa2V5KSkuZ2V0KCldOworCisgICAgZm9yIChjb25zdCBhdXRv
JiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJlcygpKQor
ICAgICAgICBbcHJlZmVyZW5jZXMgX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZh
bHVlOnZhbHVlIGZvcktleTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJl
ZmVyZW5jZUtleShrZXkpKS5nZXQoKV07CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZh
bHVlXSA6IG9wdGlvbnMuc3RyaW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAgIFtw
cmVmZXJlbmNlcyBfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dG9OUyh2
YWx1ZSkuZ2V0KCkgZm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQ
cmVmZXJlbmNlS2V5KGtleSkpLmdldCgpXTsKIH0KIAogLy8gQ2FsbGVkIG9uY2Ugb24gRHVtcFJl
bmRlclRyZWUgc3RhcnR1cC4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tCShyZXZpc2lvbiAyNjg4NzIpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
VGVzdFJ1bm5lck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjA5LDcgKzYwOSw3IEBAIHZvaWQg
VGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3QKICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IHZhbHVlQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHZhbHVlKSk7CiAgICAgTlNTdHJpbmcgKnZhbHVlTlMgPSAoX19icmlkZ2UgTlNT
dHJpbmcgKil2YWx1ZUNGLmdldCgpOwogCi0gICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZl
cmVuY2VzXSBfc2V0UHJlZmVyZW5jZUZvclRlc3RXaXRoVmFsdWU6dmFsdWVOUyBmb3JLZXk6a2V5
TlNdOworICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gX3NldFN0cmluZ1By
ZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnZhbHVlTlMgZm9yS2V5OmtleU5TXTsKIH0KIAog
dm9pZCBUZXN0UnVubmVyOjpyZW1vdmVBbGxWaXNpdGVkTGlua3MoKQpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI2ODg3MikKKysrIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05MjEsMTcgKzkyMSwxNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpyZXNldFByZWZlcmVuY2Vz
VG9DCiAgICAgcGxhdGZvcm1SZXNldFByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKCk7CiAK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuYm9vbFdlYlByZWZl
cmVuY2VGZWF0dXJlcygpKQotICAgICAgICBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5
KHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKKyAgICAgICAgV0tQcmVmZXJl
bmNlc1NldEJvb2xWYWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dL
KGtleSkuZ2V0KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRp
b25zLmRvdWJsZVdlYlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAgICAgICBXS1ByZWZlcmVuY2Vz
U2V0RG91YmxlVmFsdWVGb3JLZXkocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkp
OworICAgICAgICBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXlGb3JUZXN0aW5nKHBy
ZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0
byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkK
LSAgICAgICAgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5KHByZWZlcmVuY2VzLCB2
YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZh
bHVlRm9yS2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7
CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuc3RyaW5nV2Vi
UHJlZmVyZW5jZUZlYXR1cmVzKCkpCi0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1
ZUZvcktleShwcmVmZXJlbmNlcywgdG9XSyh2YWx1ZSkuZ2V0KCksIHRvV0soa2V5KS5nZXQoKSk7
Ci0KKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5Rm9yVGVzdGluZyhw
cmVmZXJlbmNlcywgdG9XSyh2YWx1ZSkuZ2V0KCksIHRvV0soa2V5KS5nZXQoKSk7CiB9CiAKIGJv
b2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVz
dE9wdGlvbnMmIG9wdGlvbnMsIFJlc2V0U3RhZ2UgcmVzZXRTdGFnZSkK
</data>
<flag name="commit-queue"
          id="428587"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412191</attachid>
            <date>2020-10-23 09:43:25 -0700</date>
            <delta_ts>2020-10-23 10:38:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201023094324.patch</filename>
            <type>text/plain</type>
            <size>30787</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg4NzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTIwICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVu
ZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlbmFtZSBXS1ByZWZlcmVuY2VzU2V0
KlZhbHVlRm9yS2V5IFNQSSB0byBXS1ByZWZlcmVuY2VzU2V0KlZhbHVlRm9yS2V5Rm9yVGVzdGlu
ZworICAgICAgICB0byBtYWtlIGl0IGNsZWFyIHdoYXQgdGhleSBhcmUgdXNlZCBmb3IgYW5kIGZv
ciBjb25zaXN0ZW5jeSB3aXRoIFdlYktpdExlZ2FjeS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFs
dWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1
ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVl
Rm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVG
b3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JL
ZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5
KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleSk6
IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0
ZS5oOgorCiAyMDIwLTEwLTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBJbnRyb2R1Y2Ugd29ya2xldCBkZXN0aW5hdGlvbnMgYW5kIGFsbG93IHRvIGZldGNo
IG1vZHVsZXMgd2l0aCBDT1JTIGJhc2VkIG9uIGRlc3RpbmF0aW9uCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gMjY4
ODcyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc4LDIyICs3OCwyMiBAQCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRJ
bnRlcm5hbERlYnVnRmVhdHVyCiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0SW50ZXJu
YWxEZWJ1Z0ZlYXR1cmVFbmFibGVkRm9yS2V5KHRvV1RGU3RyaW5nKGludGVybmFsRGVidWdGZWF0
dXJlS2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JL
ZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1ZSwgV0tTdHJpbmdS
ZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9yVGVzdGluZyhX
S1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZhbHVlLCBXS1N0cmluZ1JlZiBr
ZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0Qm9vbFZhbHVlRm9yS2V5KHRv
V1RGU3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0RG91Ymxl
VmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgZG91YmxlIHZhbHVl
LCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktl
eUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgZG91YmxlIHZhbHVl
LCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0Qm9v
bFZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1ByZWZl
cmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1Jl
ZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1Nl
dFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2Vz
UmVmLCB1aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVm
ZXJlbmNlc1JlZiktPnNldFVJbnQzMlZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHZhbHVl
KTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFsdWUsIFdLU3RyaW5nUmVmIGtl
eSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdS
ZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldFN0cmluZ1ZhbHVlRm9y
S2V5KHRvV1RGU3RyaW5nKGtleSksIHRvV1RGU3RyaW5nKHZhbHVlKSk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQ
cml2YXRlLmgJKHJldmlzaW9uIDI2ODg3MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDEwICs1
NiwxMCBAQCBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzUmVzZXRBbGxJbnRlCiBXS19FWFBP
UlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0SW50ZXJuYWxEZWJ1Z0ZlYXR1cmVGb3JLZXkoV0tQcmVm
ZXJlbmNlc1JlZiwgYm9vbCwgV0tTdHJpbmdSZWYpOwogCiAvLyBUaGUgZm9sbG93aW5nIGdlbmVy
aWMgc2V0dGVyIGZ1bmN0aW9ucyBhcmUgb25seSBpbnRlbmRlZCBmb3IgdXNlIGJ5IHRlc3Rpbmcg
aW5mcmFzdHJ1Y3R1cmUuCi1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVl
Rm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgdmFsdWUsIFdLU3Ry
aW5nUmVmIGtleSk7Ci1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVG
b3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0
cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVl
Rm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIHVpbnQzMl90IHZhbHVlLCBX
S1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1Zh
bHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RyaW5nUmVmIHZh
bHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldEJv
b2xWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwg
Ym9vbCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5j
ZXNTZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJl
bmNlc1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQg
V0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzUmVmLCB1aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKK1dL
X0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleUZvclRlc3Rpbmco
V0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFsdWUsIFdLU3Ry
aW5nUmVmIGtleSk7CiAKIC8vIEZvciBUZXN0IFJ1bm5lciBVc2Ugb25seS4KIFdLX0VYUE9SVCB2
b2lkIFdLUHJlZmVyZW5jZXNSZXNldFRlc3RSdW5uZXJPdmVycmlkZXMoV0tQcmVmZXJlbmNlc1Jl
ZiBwcmVmZXJlbmNlc1JlZik7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNjg4NzIpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAyMC0xMC0yMCAgU2FtIFdlaW5pZyAgPHdlaW5p
Z0BhcHBsZS5jb20+CisKKyAgICAgICAgW1Rlc3RpbmddIENvbnZlcnQgRHVtcFJlbmRlclRyZWUg
dG8gdXNlIGdlbmVyYXRlZCB0ZXN0IGhlYWRlciBvcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc4ODAKKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICBFeHBvc2UgYSBzZXQgb2Ygc2V0dGVycyB0byBmb3Ig
RHVtcFJlbmRlclRyZWUgdG8gdXNlIHdoZW4gc2V0dGluZyBwcmVmZXJlbmNlcworICAgICAgICBi
eSBzdHJpbmcuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tOgorICAgICAg
ICAoK1tXZWJQcmVmZXJlbmNlcyBfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Np
b25dKToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3NldEN1cnJlbnROZXR3b3JrTG9hZGVy
U2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTpdKToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMg
X2NsZWFyTmV0d29ya0xvYWRlclNlc3Npb25dKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMg
X3NldEJvb2xQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAg
ICgtW1dlYlByZWZlcmVuY2VzIF9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1
ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXREb3VibGVQcmVmZXJl
bmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVu
Y2VzIF9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6Cisg
ICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhWYWx1ZTpm
b3JLZXk6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZh
dGUuaDoKKwogMjAyMC0xMC0yMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgW21hY09TIFdLMV0gcHJvdmlkZSBhIHdheSBmb3IgQXBwbGUtaW50ZXJuYWwgY2xp
ZW50cyB0byBkaXNhYmxlIGxpbmsgcHJldmlldwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiAyNjg4NzIpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjYwLDI2ICsxNjYwLDYgQEAgKyAodm9pZClfc2V0SUJDcmVhdG9ySUQ6
KE5TU3RyaW5nICopc3RyaQogICAgIFtvbGQgcmVsZWFzZV07CiB9CiAKLSsgKHZvaWQpX3N3aXRj
aE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICBXZWJUaHJlYWRMb2NrKCk7Ci0jZW5kaWYKLSAgICBOZXR3b3JrU3RvcmFnZVNl
c3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKLX0KLQotKyAodm9pZClfY2xl
YXJOZXR3b3JrTG9hZGVyU2Vzc2lvbgotewotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6
ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZGVsZXRlQWxsQ29va2llcygpOwotfQotCi0rICh2b2lk
KV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRU
UENvb2tpZUFjY2VwdFBvbGljeSlwb2xpY3kKLXsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2ll
U3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVm
YXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVT
dG9yYWdlKTsgLy8gV2lsbCBmYWlsIHdoZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0
Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KLSAgICBD
RkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0
KCksIHBvbGljeSk7Ci19Ci0KIC0gKEJPT0wpaXNET01QYXN0ZUFsbG93ZWQKIHsKICAgICByZXR1
cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktleTpXZWJLaXRET01QYXN0ZUFsbG93ZWRQcmVmZXJlbmNl
S2V5XTsKQEAgLTE5NjYsMTEgKzE5NDYsNiBAQCAtICh2b2lkKXdpbGxBZGRUb1dlYlZpZXcKICAg
ICArK19wcml2YXRlLT5udW1XZWJWaWV3czsKIH0KIAotLSAodm9pZClfc2V0UHJlZmVyZW5jZUZv
clRlc3RXaXRoVmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQot
ewotICAgIFtzZWxmIF9zZXRTdHJpbmdWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKLX0KLQogLSAo
dm9pZClzZXRGdWxsU2NyZWVuRW5hYmxlZDooQk9PTClmbGFnCiB7CiAgICAgW3NlbGYgX3NldEJv
b2xWYWx1ZTpmbGFnIGZvcktleTpXZWJLaXRGdWxsU2NyZWVuRW5hYmxlZFByZWZlcmVuY2VLZXld
OwpAQCAtMzAxMyw2ICsyOTg4LDU4IEBAIC0gKHZvaWQpX3NldEVuYWJsZWQ6KEJPT0wpdmFsdWUg
Zm9yRmVhdHUKIAogQGVuZAogCitAaW1wbGVtZW50YXRpb24gV2ViUHJlZmVyZW5jZXMgKFdlYlBy
aXZhdGVUZXN0aW5nKQorCisrICh2b2lkKV9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5n
U2Vzc2lvbgoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgV2ViVGhyZWFkTG9jaygp
OworI2VuZGlmCisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3Rp
bmdTZXNzaW9uKCk7Cit9CisKKysgKHZvaWQpX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lv
bkNvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeQorewor
ICAgIGF1dG8gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVs
dFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpOworICAgIFJFTEVBU0VfQVNTRVJUKGNv
b2tpZVN0b3JhZ2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6
OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90IGNhbGxlZCBiZWZvcmVoYW5kLgor
ICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFn
ZS5nZXQoKSwgcG9saWN5KTsKK30KKworKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lv
bgoreworICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCkuZGVsZXRlQWxsQ29va2llcygpOworfQorCistICh2b2lkKV9yZXNldFRvRGVmYXVsdFZhbHVl
c0ZvclRlc3RpbmcKK3sKKyAgICBfcHJpdmF0ZS0+dmFsdWVzID0gYWRvcHROUyhbW05TTXV0YWJs
ZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICBbc2VsZiBfdXBkYXRlUHJpdmF0ZUJyb3dz
aW5nU3RhdGVUbzpbc2VsZiBwcml2YXRlQnJvd3NpbmdFbmFibGVkXV07CisgICAgW3NlbGYgX3Bv
c3RQcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb25dOworICAgIFtzZWxmIF9wb3N0Q2FjaGVN
b2RlbENoYW5nZWROb3RpZmljYXRpb25dOworfQorCistICh2b2lkKV9zZXRCb29sUHJlZmVyZW5j
ZUZvclRlc3RpbmdXaXRoVmFsdWU6KEJPT0wpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQor
eworICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6dmFsdWUgZm9yS2V5OmtleV07Cit9CisKKy0gKHZv
aWQpX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOih1aW50MzJfdCl2YWx1
ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5Cit7CisgICAgW3NlbGYgX3NldEludGVnZXJWYWx1ZTp2
YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAodm9pZClfc2V0RG91YmxlUHJlZmVyZW5jZUZvclRl
c3RpbmdXaXRoVmFsdWU6KGRvdWJsZSl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5Cit7Cisg
ICAgW3NlbGYgX3NldEZsb2F0VmFsdWU6dmFsdWUgZm9yS2V5OmtleV07Cit9CisKKy0gKHZvaWQp
X3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihOU1N0cmluZyAqKXZhbHVl
IGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2VsZiBfc2V0U3RyaW5nVmFsdWU6dmFs
dWUgZm9yS2V5OmtleV07Cit9CisKK0BlbmQKKwogQGltcGxlbWVudGF0aW9uIFdlYlByZWZlcmVu
Y2VzIChXZWJQcml2YXRlUHJlZmVyZW5jZXNDb252ZXJ0ZWRUb1dlYkZlYXR1cmUpCiAKIC0gKEJP
T0wpdXNlckdlc3R1cmVQcm9taXNlUHJvcGFnYXRpb25FbmFibGVkCkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRl
LmgJKHJldmlzaW9uIDI2ODg3MikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViUHJlZmVyZW5jZXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDEzICs4OSw2IEBA
IEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGUpCiArICh2b2lkKV9zZXRJbml0
aWFsRGVmYXVsdFRleHRFbmNvZGluZ1RvU3lzdGVtRW5jb2Rpbmc7CiArICh2b2lkKV9zZXRJQkNy
ZWF0b3JJRDooTlNTdHJpbmcgKilzdHJpbmc7CiAKLS8vIEZvciBEdW1wUmVuZGVyVHJlZSB1c2Ug
b25seS4KLSsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uOwot
KyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5
OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpY29va2llQWNjZXB0UG9saWN5OwotKyAodm9pZClf
Y2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbjsKLS8vIFVzZWQgdG8gc2V0IHByZWZlcmVuY2Ugc3Bl
Y2lmaWVkIGluIHRoZSB0ZXN0IHZpYSBMYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZl
cmVuY2UoLi4pLgotLSAodm9pZClfc2V0UHJlZmVyZW5jZUZvclRlc3RXaXRoVmFsdWU6KE5TU3Ry
aW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKLQogKyAodm9pZClzZXRXZWJLaXRM
aW5rVGltZVZlcnNpb246KGludCl2ZXJzaW9uOwogCiAvLyBGb3IgV2ViVmlldydzIHVzZSBvbmx5
LgpAQCAtMzEwLDYgKzMwMywxOCBAQCBAaW50ZXJmYWNlIFdlYlByZWZlcmVuY2VzIChXZWJQcml2
YXRlRmVhCiAtICh2b2lkKV9zZXRFbmFibGVkOihCT09MKXZhbHVlIGZvckZlYXR1cmU6KFdlYkZl
YXR1cmUgKilmZWF0dXJlOwogQGVuZAogCitAaW50ZXJmYWNlIFdlYlByZWZlcmVuY2VzIChXZWJQ
cml2YXRlVGVzdGluZykKKysgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdT
ZXNzaW9uOworKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNj
ZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpY29va2llQWNjZXB0UG9saWN5Owor
KyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbjsKKworLSAodm9pZClfcmVzZXRUb0Rl
ZmF1bHRWYWx1ZXNGb3JUZXN0aW5nOworLSAodm9pZClfc2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0
aW5nV2l0aFZhbHVlOihCT09MKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXk7CistICh2b2lk
KV9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZToodWludDMyX3QpdmFsdWUg
Zm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZvaWQpX3NldERvdWJsZVByZWZlcmVuY2VGb3JU
ZXN0aW5nV2l0aFZhbHVlOihkb3VibGUpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0g
KHZvaWQpX3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihOU1N0cmluZyAq
KXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXk7CitAZW5kCisKIC8vIEZJWE1FOiBJZiB0aGVz
ZSBhcmUgbm90IHVzZWQgYW55d2hlcmUsIHdlIHNob3VsZCByZW1vdmUgdGhlbSBhbmQgb25seSB1
c2UgV2ViRmVhdHVyZSBtZWNoYW5pc20gZm9yIHRoZSBwcmVmZXJlbmNlLgogQGludGVyZmFjZSBX
ZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVByZWZlcmVuY2VzQ29udmVydGVkVG9XZWJGZWF0dXJl
KQogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgdXNlckdlc3R1cmVQcm9taXNlUHJvcGFnYXRp
b25FbmFibGVkOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0No
YW5nZUxvZwkocmV2aXNpb24gMjY4OTI0KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjAtMTAtMjMgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBw
bGUuY29tPgorCisgICAgICAgIFtUZXN0aW5nXSBDb252ZXJ0IER1bXBSZW5kZXJUcmVlIHRvIHVz
ZSBnZW5lcmF0ZWQgdGVzdCBoZWFkZXIgb3B0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3ODgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgRnVsbHkgc3VwcG9ydCB1c2Ugb2YgYW55IFdlYlByZWZlcmVu
Y2VzKi55YW1sIHByZWZlcmVuY2UgaW4gRHVtcFJlbmRlclRyZWUgKGZvciBtYWNPUykgYnk6Cisg
ICAgICAgICAgICAtIE1vdmluZyBEdW1wUmVuZGVyVHJlZSdzIFRlc3RPcHRpb25zIHRvIGJlIGZ1
bGx5IGJhY2tlZCBieSBUZXN0RmVhdHVyZXMgbGlrZSBXZWJLaXRUZXN0UnVubm5lci4KKyAgICAg
ICAgICAgIC0gQWRvcHRpbmcgbmV3IFdlYlByZWZlcmVuY2VzIFNQSSBmb3Igc2V0dGluZyBhbnkg
cHJlZmVyZW5jZSBieSBrZXkgYW5kIHJlc2V0IGFsbCBwcmVmZXJlbmNlcyBrZXlzLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAodG9O
Uyk6CisgICAgICAgIChyZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKToKKyAg
ICAgICAgKHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgorICAgICAgICAoVGVzdFJ1bm5lcjo6b3Zl
cnJpZGVQcmVmZXJlbmNlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0UHJlZmVyZW5jZXNU
b0NvbnNpc3RlbnRWYWx1ZXMpOgorCiAyMDIwLTEwLTIyICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTnVsbCBjaGVjayBwbGF0Zm9ybVN0cmF0
ZWdpZXMgd2hlbiBtYWtpbmcgYmxvYiByZWFkIHN0cmVhbSBmb3IgYW4gTlNVUkxSZXF1ZXN0Cklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjY4ODcyKQorKysg
VG9vbHMvRHVtcFJlbmRlclRyZWUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDYgKzQwLDcgQEAgbGlzdChBUFBFTkQgRHVtcFJlbmRlclRyZWVfUFJJVkFURV9JTkNMVQogKQog
CiBzZXQoRHVtcFJlbmRlclRyZWVfV0VCX1BSRUZFUkVOQ0VTX1RFTVBMQVRFUworICAgICR7RHVt
cFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25z
R2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiCiAgICAgJHtEdW1wUmVuZGVy
VHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0
ZWRLZXlzLmguZXJiCiApCiAKQEAgLTUzLDEyICs1NCwxMyBAQCBzZXQoRHVtcFJlbmRlclRyZWVf
V0VCX1BSRUZFUkVOQ0VTCiBzZXRfc291cmNlX2ZpbGVzX3Byb3BlcnRpZXMoJHtEdW1wUmVuZGVy
VHJlZV9XRUJfUFJFRkVSRU5DRVN9IFBST1BFUlRJRVMgR0VORVJBVEVEIFRSVUUpCiAKIGFkZF9j
dXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtEdW1wUmVuZGVyVHJlZV9ERVJJVkVEX1NPVVJD
RVNfRElSfS9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaAorICAgIE9VVFBVVCAke0R1bXBSZW5k
ZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVn
YWN5S2V5TWFwcGluZy5jcHAgJHtEdW1wUmVuZGVyVHJlZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9U
ZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaAogICAgIERFUEVORFMgJHtEdW1wUmVuZGVyVHJlZV9X
RUJfUFJFRkVSRU5DRVNfVEVNUExBVEVTfSAke0R1bXBSZW5kZXJUcmVlX1dFQl9QUkVGRVJFTkNF
U30gV1RGX0NvcHlQcmVmZXJlbmNlcwotICAgIENPTU1BTkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7
V1RGX1NDUklQVFNfRElSfS9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiIC0tZnJvbnRlbmQgV2ViS2l0
TGVnYWN5IC0tYmFzZSAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5j
ZXMueWFtbCAtLWRlYnVnICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJl
bmNlc0RlYnVnLnlhbWwgLS1leHBlcmltZW50YWwgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVu
Y2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgLS1pbnRlcm5hbCAke1dURl9TQ1JJ
UFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sIC0tb3V0cHV0
RGlyICIke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9IiAtLXRlbXBsYXRlICR7
RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRp
b25zR2VuZXJhdGVkS2V5cy5oLmVyYgorICAgIENPTU1BTkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7
V1RGX1NDUklQVFNfRElSfS9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiIC0tZnJvbnRlbmQgV2ViS2l0
TGVnYWN5IC0tYmFzZSAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5j
ZXMueWFtbCAtLWRlYnVnICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJl
bmNlc0RlYnVnLnlhbWwgLS1leHBlcmltZW50YWwgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVu
Y2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgLS1pbnRlcm5hbCAke1dURl9TQ1JJ
UFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sIC0tb3V0cHV0
RGlyICIke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9IiAtLXRlbXBsYXRlICR7
RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRp
b25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiIC0tdGVtcGxhdGUgJHtE
dW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlv
bnNHZW5lcmF0ZWRLZXlzLmguZXJiCiAgICAgVkVSQkFUSU0pCiAKIGxpc3QoQVBQRU5EIER1bXBS
ZW5kZXJUcmVlX1NPVVJDRVMKKyAgICAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19E
SVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAKICAgICAk
e0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVk
S2V5cy5oCiApCiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLWlu
cHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjY4ODcyKQorKysgVG9vbHMvRHVt
cFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAkod29ya2luZyBjb3B5
KQpAQCAtNyw2ICs3LDcgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRl
LwogJChQUk9KRUNUX0RJUikvLi4vVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmlu
ZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbAogJChQUk9KRUNUX0RJUikvQmluZGluZ3MvQ29k
ZUdlbmVyYXRvckR1bXBSZW5kZXJUcmVlLnBtCiAkKFBST0pFQ1RfRElSKS9EZXJpdmVkU291cmNl
cy5tYWtlCiskKFBST0pFQ1RfRElSKS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RP
cHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiCiAkKFBST0pFQ1Rf
RElSKS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5
cy5oLmVyYgogJChQUk9KRUNUX0RJUikvU2NyaXB0cy9nZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMu
c2gKICQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9Db2RlR2VuZXJhdG9yLnBtCkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdAkocmV2aXNpb24gMjY4ODcyKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVy
aXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw1
IEBACiAjIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgdGhlIGdlbmVyYXRlLXhjZmlsZWxpc3Rz
IHNjcmlwdC4KICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9EdW1wUmVuZGVy
VHJlZS9KU1VJU2NyaXB0Q29udHJvbGxlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9EdW1wUmVuZGVyVHJlZS9KU1VJU2NyaXB0Q29udHJvbGxlci5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5o
CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9u
IDI2ODg3MikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdv
cmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDcgQEAgV0VCX1BSRUZFUkVOQ0VTID0gXAogIwogCiBX
RUJfUFJFRkVSRU5DRVNfR0VORVJBVEVEX0ZJTEVTID0gXAorICAgIFRlc3RPcHRpb25zR2VuZXJh
dGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgXAogICAgIFRlc3RPcHRpb25zR2VuZXJhdGVk
S2V5cy5oIFwKICMKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAy
Njg4NzIpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiArMTA5LDcgQEAKIAkJNURC
OUFDOUUwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktpdFdlaWdodFdhdGNoZXI3MDAudHRmIGluIENv
cHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVGMDk3
NzBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjcwMC50dGYgKi87IH07CiAJ
CTVEQjlBQzlGMEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyODAwLnR0ZiBp
biBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc1
RjA5NzgwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXI4MDAudHRmICovOyB9
OwogCQk1REI5QUNBMDBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjkwMC50
dGYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDM3NUYwOTc5MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyOTAwLnR0ZiAq
LzsgfTsKKwkJN0M5ODkzREYyNTQzM0Y4RTAwMzU0RUJDIC8qIFRlc3RPcHRpb25zR2VuZXJhdGVk
V2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3Qzk4OTNERTI1NDMzQzg3MDAzNTRFQkMgLyogVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAqLzsgfTsKIAkJN0NGRjlCQkYyNTMz
QkIyNDAwMDgwMDlGIC8qIFRlc3RGZWF0dXJlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0ZGOUJCRTI1MzNCQjI0MDAwODAwOUYgLyogVGVzdEZl
YXR1cmVzLmNwcCAqLzsgfTsKIAkJN0NGRjlCQzIyNTMzQkMxNjAwMDgwMDlGIC8qIFRlc3RDb21t
YW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
RkY5QkMxMjUzM0JDMTYwMDA4MDA5RiAvKiBUZXN0Q29tbWFuZC5jcHAgKi87IH07CiAJCTgwMDQ1
QUVFMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgwMDQ1QUVD
MTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbSAq
LzsgfTsKQEAgLTMzMyw3ICszMzQsOCBAQAogCQk3QzQ0Njk3RjI1Mzc3QTAyMDAyNDI5MEEgLyog
VGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVk
S2V5cy5oLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M0NDY5ODAyNTM3N0Ew
MjAwMjQyOTBBIC8qIGNoZWNrLXhjZmlsZWxpc3RzLnNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQuc2g7IHBhdGggPSAiY2hlY2st
eGNmaWxlbGlzdHMuc2giOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzQ0Njk4MTI1
Mzc3QTAyMDAyNDI5MEEgLyogZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzLnNoICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQuc2g7IHBh
dGggPSAiZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzLnNoIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJN0M0NDY5ODUyNTM3N0U1MjAwMjQyOTBBIC8qIFRlc3RPcHRpb25zR2VuZXJhdGVk
S2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaDsgcGF0aCA9
IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3Qzk4OTNERTI1NDMzQzg3MDAzNTRFQkMgLyogVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRl
c3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDQkJDMzIyMURERkNGOUEwMDc4NkI5RCAvKiBUZXN0T3B0aW9u
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0T3B0aW9ucy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0ZGOUJCRDI1MzNCQjI0MDAwODAwOUYgLyogVGVz
dEZlYXR1cmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RGZWF0dXJlcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3Q0ZGOUJCRTI1MzNCQjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlc3RGZWF0dXJlcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC03NzcsNiArNzc5LDcgQEAKIAkJN0M0NDY5ODIyNTM3N0MzNDAwMjQy
OTBBIC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJN0M5ODkzREUyNTQzM0M4NzAwMzU0RUJDIC8qIFRlc3RPcHRpb25zR2Vu
ZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgKi8sCiAJCQkJN0M0NDY5ODUyNTM3N0U1
MjAwMjQyOTBBIC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oICovLAogCQkJKTsKIAkJCW5h
bWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKQEAgLTEyNjAsNiArMTI2Myw3IEBACiAJCQkJQThENzlD
RUIwRkMyOEIyQzAwNEFDOEZFIC8qIER1bXBSZW5kZXJUcmVlRmlsZURyYWdnaW5nU291cmNlLm0g
aW4gU291cmNlcyAqLywKIAkJCQlBOEI5MUFEQTBDRjNCMzJGMDA4RjkxRkYgLyogRHVtcFJlbmRl
clRyZWVQYXN0ZWJvYXJkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThCOTFBREMwQ0YzQjMyRjAw
OEY5MUZGIC8qIER1bXBSZW5kZXJUcmVlV2luZG93Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJN0M5
ODkzREYyNTQzM0Y4RTAwMzU0RUJDIC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5
S2V5TWFwcGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI2MjBDOUIwOEMyMDAxMTQz
NjkgLyogRWRpdGluZ0RlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCNzAwQzlC
MDhEQjAwMTE0MzY5IC8qIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywK
IAkJCQlCQ0ExOEI2NDBDOUIwOEMyMDAxMTQzNjkgLyogRnJhbWVMb2FkRGVsZWdhdGUubW0gaW4g
U291cmNlcyAqLywKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1NjcmlwdHMvUHJlZmVyZW5j
ZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNw
cC5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvU2NyaXB0cy9QcmVmZXJl
bmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcu
Y3BwLmVyYgkobm9uZXhpc3RlbnQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1By
ZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFw
cGluZy5jcHAuZXJiCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiA8JT0g
QHdhcm5pbmcgJT4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
VGVzdE9wdGlvbnMuaCIKKworbmFtZXNwYWNlIFdUUiB7CisKK3N0ZDo6c3RyaW5nIFRlc3RPcHRp
b25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVuY2VLZXkoY29uc3Qgc3RkOjpzdHJpbmcmIHdlYlBy
ZWZlcmVuY2VzS2V5KQoreworICAgIHN0YXRpYyBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJp
bmcsIHN0ZDo6c3RyaW5nPiBub25TdGFuZGFyZEtleXMgPSB7Cis8JS0gZm9yIEBwcmVmIGluIEBl
eHBvc2VkUHJlZmVyZW5jZXMuc2VsZWN0IHsgfHB8IHAub3B0c1sid2ViS2l0TGVnYWN5UHJlZmVy
ZW5jZUtleSJdIH0gZG8gLSU+CisgICAgICAgIHsgIjwlPSBAcHJlZi5uYW1lICU+IiwgIjwlPSBA
cHJlZi5wcmVmZXJlbmNlS2V5ICU+IiB9LCBcCis8JS0gZW5kIC0lPgorICAgIH07CisKKyAgICBh
dXRvIGl0ID0gbm9uU3RhbmRhcmRLZXlzLmZpbmQod2ViUHJlZmVyZW5jZXNLZXkpOworICAgIGlm
IChpdCAhPSBub25TdGFuZGFyZEtleXMuZW5kKCkpCisgICAgICAgIHJldHVybiBpdC0+c2Vjb25k
OworCisgICAgcmV0dXJuICJXZWJLaXQiICsgd2ViUHJlZmVyZW5jZXNLZXk7Cit9CisKK30KSW5k
ZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHJldmlzaW9u
IDI2ODg3MikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTMwLDYgKzEzMCwxMSBAQCBleHRlcm4gIkMiIHsKICNpbXBvcnQg
PG1hY2gtby9nZXRzZWN0Lmg+CiB9CiAKK3N0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IHRvTlMo
Y29uc3Qgc3RkOjpzdHJpbmcmIHN0cmluZykKK3sKKyAgICByZXR1cm4gYWRvcHROUyhbW05TU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFVURjhTdHJpbmc6c3RyaW5nLmNfc3RyKCldKTsKK30KKwogI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogQGludGVyZmFjZSBEdW1wUmVuZGVyVHJlZUFwcGxpY2F0
aW9uIDogTlNBcHBsaWNhdGlvbgogQGVuZApAQCAtODQ3LDYgKzg1Miw4IEBAIHN0YXRpYyB2b2lk
IGVuYWJsZUV4cGVyaW1lbnRhbEZlYXR1cmVzKFcKIC8vIENhbGxlZCBiZWZvcmUgZWFjaCB0ZXN0
Lgogc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhXZWJQ
cmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMpCiB7CisgICAgW3ByZWZlcmVuY2VzIF9yZXNldFRvRGVm
YXVsdFZhbHVlc0ZvclRlc3RpbmddOworCiAgICAgZW5hYmxlRXhwZXJpbWVudGFsRmVhdHVyZXMo
cHJlZmVyZW5jZXMpOwogCiAgICAgW3ByZWZlcmVuY2VzIHNldE5lZWRzU3RvcmFnZUFjY2Vzc0Zy
b21GaWxlVVJMc1F1aXJrOiBOT107CkBAIC05NjksNDEgKzk3NiwyMSBAQCBzdGF0aWMgdm9pZCBy
ZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0CiAgICAgW1dlYlByZWZlcmVuY2VzIF9zZXRDdXJy
ZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6TlNIVFRQQ29va2llQWNj
ZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW5dOwogfQogCi1zdGF0aWMgYm9vbCBi
b29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZShzdGQ6OnN0cmluZyBrZXksIGJvb2wgZGVmYXVs
dFZhbHVlLCBjb25zdCBXVFI6OlRlc3RPcHRpb25zJiBvcHRpb25zKQotewotICAgIGF1dG8gaXQg
PSBvcHRpb25zLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKS5maW5kKGtleSk7Ci0gICAgaWYg
KGl0ICE9IG9wdGlvbnMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcygpLmVuZCgpKQotICAgICAg
ICByZXR1cm4gaXQtPnNlY29uZDsKLSAgICByZXR1cm4gZGVmYXVsdFZhbHVlOwotfQotCiBzdGF0
aWMgdm9pZCBzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKFdlYlByZWZlcmVuY2VzICpw
cmVmZXJlbmNlcywgY29uc3QgV1RSOjpUZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBwcmVm
ZXJlbmNlcy5wcml2YXRlQnJvd3NpbmdFbmFibGVkID0gb3B0aW9ucy51c2VFcGhlbWVyYWxTZXNz
aW9uKCk7CiAKLSAgICBwcmVmZXJlbmNlcy5hdHRhY2htZW50RWxlbWVudEVuYWJsZWQgPSBib29s
V2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQXR0YWNobWVudEVsZW1lbnRFbmFibGVkIiwgZmFs
c2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQg
PSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxl
ZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5tZW51SXRlbUVsZW1lbnRFbmFi
bGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIk1lbnVJdGVtRWxlbWVudEVuYWJs
ZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMua2V5Z2VuRWxlbWVudEVuYWJs
ZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiS2V5Z2VuRWxlbWVudEVuYWJsZWQi
LCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMubW9kZXJuTWVkaWFDb250cm9sc0Vu
YWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiTW9kZXJuTWVkaWFDb250cm9s
c0VuYWJsZWQiLCB0cnVlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5pbnNwZWN0b3JBZGRp
dGlvbnNFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkluc3BlY3RvckFk
ZGl0aW9uc0VuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuYWxsb3dD
cm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMgPSBib29sV2ViUHJlZmVy
ZW5jZUZlYXR1cmVWYWx1ZSgiQWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3Jl
ZGVudGlhbHMiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuY29sb3JGaWx0ZXJF
bmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkNvbG9yRmlsdGVyRW5hYmxl
ZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5zZWxlY3Rpb25BY3Jvc3NTaGFk
b3dCb3VuZGFyaWVzRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJTZWxl
Y3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzRW5hYmxlZCIsIHRydWUsIG9wdGlvbnMpOwotICAg
IHByZWZlcmVuY2VzLndlYkdQVUVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1
ZSgiV2ViR1BVRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5DU1NM
b2dpY2FsRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJDU1NMb2dpY2Fs
RW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5saW5lSGVpZ2h0VW5p
dHNFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkxpbmVIZWlnaHRVbml0
c0VuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuYWRDbGlja0F0dHJp
YnV0aW9uRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJBZENsaWNrQXR0
cmlidXRpb25FbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLnJlc2l6
ZU9ic2VydmVyRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJSZXNpemVP
YnNlcnZlckVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuQ1NTT01W
aWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVl
KCJDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAg
IHByZWZlcmVuY2VzLmNvcmVNYXRoTUxFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJl
VmFsdWUoIkNvcmVNYXRoTUxFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVu
Y2VzLnJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJl
VmFsdWUoIlJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAg
IHByZWZlcmVuY2VzLmFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNl
RmVhdHVyZVZhbHVlKCJBc3luY0NsaXBib2FyZEFQSUVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7
Ci0gICAgcHJlZmVyZW5jZXMudXNlc1BhZ2VDYWNoZSA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVy
ZVZhbHVlKCJVc2VzQmFja0ZvcndhcmRDYWNoZSIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVm
ZXJlbmNlcy5sYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCA9IGJvb2xX
ZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJMYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0
aW9uRW5hYmxlZCIsIHRydWUsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmFzcGVjdFJhdGlv
T2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJl
VmFsdWUoIkFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkIiwgZmFsc2Us
IG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMg
PSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRh
VVJMcyIsIHRydWUsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmNvbnRhY3RQaWNrZXJBUElF
bmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkNvbnRhY3RQaWNrZXJBUElF
bmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOworICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFs
dWVdIDogb3B0aW9ucy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAgIFtwcmVm
ZXJlbmNlcyBfc2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnZhbHVlIGZvcktl
eTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShrZXkp
KS5nZXQoKV07CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMu
ZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0
RG91YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dmFsdWUgZm9yS2V5OnRvTlMoV1RS
OjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGtleSkpLmdldCgpXTsK
KworICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy51aW50MzJXZWJQ
cmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXRVSW50MzJQcmVm
ZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZSBmb3JLZXk6dG9OUyhXVFI6OlRlc3RPcHRp
b25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVuY2VLZXkoa2V5KSkuZ2V0KCldOworCisgICAgZm9y
IChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLnN0cmluZ1dlYlByZWZlcmVuY2VG
ZWF0dXJlcygpKQorICAgICAgICBbcHJlZmVyZW5jZXMgX3NldFN0cmluZ1ByZWZlcmVuY2VGb3JU
ZXN0aW5nV2l0aFZhbHVlOnRvTlModmFsdWUpLmdldCgpIGZvcktleTp0b05TKFdUUjo6VGVzdE9w
dGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShrZXkpKS5nZXQoKV07CiB9CiAKIC8v
IENhbGxlZCBvbmNlIG9uIER1bXBSZW5kZXJUcmVlIHN0YXJ0dXAuCkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQkocmV2aXNpb24gMjY4ODcyKQorKysgVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTYwOSw3ICs2MDksNyBAQCB2b2lkIFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZShKU1N0
CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB2YWx1ZUNGID0gYWRvcHRDRihKU1N0cmluZ0Nv
cHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB2YWx1ZSkpOwogICAgIE5TU3RyaW5nICp2
YWx1ZU5TID0gKF9fYnJpZGdlIE5TU3RyaW5nICopdmFsdWVDRi5nZXQoKTsKIAotICAgIFtbW21h
aW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZh
bHVlOnZhbHVlTlMgZm9yS2V5OmtleU5TXTsKKyAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJl
ZmVyZW5jZXNdIF9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZU5T
IGZvcktleTprZXlOU107CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQWxsVmlzaXRlZExp
bmtzKCkKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShy
ZXZpc2lvbiAyNjg4NzIpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIxLDE3ICs5MjEsMTYgQEAgdm9pZCBUZXN0Q29udHJv
bGxlcjo6cmVzZXRQcmVmZXJlbmNlc1RvQwogICAgIHBsYXRmb3JtUmVzZXRQcmVmZXJlbmNlc1Rv
Q29uc2lzdGVudFZhbHVlcygpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0g
OiBvcHRpb25zLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKLSAgICAgICAgV0tQcmVmZXJl
bmNlc1NldEJvb2xWYWx1ZUZvcktleShwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQo
KSk7CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKHBy
ZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0
byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5kb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkK
LSAgICAgICAgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5KHByZWZlcmVuY2VzLCB2
YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZh
bHVlRm9yS2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7
CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMudWludDMyV2Vi
UHJlZmVyZW5jZUZlYXR1cmVzKCkpCi0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1
ZUZvcktleShwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CisgICAgICAgIFdL
UHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVyZW5jZXMsIHZh
bHVlLCB0b1dLKGtleSkuZ2V0KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1
ZV0gOiBvcHRpb25zLnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAgICAgICBXS1By
ZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkocHJlZmVyZW5jZXMsIHRvV0sodmFsdWUpLmdl
dCgpLCB0b1dLKGtleSkuZ2V0KCkpOwotCisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdW
YWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVyZW5jZXMsIHRvV0sodmFsdWUpLmdldCgpLCB0b1dL
KGtleSkuZ2V0KCkpOwogfQogCiBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25z
aXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZXNldFN0YWdlIHJlc2V0
U3RhZ2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412194</attachid>
            <date>2020-10-23 10:38:50 -0700</date>
            <delta_ts>2020-10-23 18:08:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201023103849.patch</filename>
            <type>text/plain</type>
            <size>31666</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg4NzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTIwICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVu
ZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlbmFtZSBXS1ByZWZlcmVuY2VzU2V0
KlZhbHVlRm9yS2V5IFNQSSB0byBXS1ByZWZlcmVuY2VzU2V0KlZhbHVlRm9yS2V5Rm9yVGVzdGlu
ZworICAgICAgICB0byBtYWtlIGl0IGNsZWFyIHdoYXQgdGhleSBhcmUgdXNlZCBmb3IgYW5kIGZv
ciBjb25zaXN0ZW5jeSB3aXRoIFdlYktpdExlZ2FjeS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFs
dWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1
ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVl
Rm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVG
b3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JL
ZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5
KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleSk6
IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0
ZS5oOgorCiAyMDIwLTEwLTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBJbnRyb2R1Y2Ugd29ya2xldCBkZXN0aW5hdGlvbnMgYW5kIGFsbG93IHRvIGZldGNo
IG1vZHVsZXMgd2l0aCBDT1JTIGJhc2VkIG9uIGRlc3RpbmF0aW9uCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gMjY4
ODcyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc4LDIyICs3OCwyMiBAQCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRJ
bnRlcm5hbERlYnVnRmVhdHVyCiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0SW50ZXJu
YWxEZWJ1Z0ZlYXR1cmVFbmFibGVkRm9yS2V5KHRvV1RGU3RyaW5nKGludGVybmFsRGVidWdGZWF0
dXJlS2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JL
ZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1ZSwgV0tTdHJpbmdS
ZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9yVGVzdGluZyhX
S1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZhbHVlLCBXS1N0cmluZ1JlZiBr
ZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0Qm9vbFZhbHVlRm9yS2V5KHRv
V1RGU3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0RG91Ymxl
VmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgZG91YmxlIHZhbHVl
LCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktl
eUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgZG91YmxlIHZhbHVl
LCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0Qm9v
bFZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1ByZWZl
cmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1Jl
ZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1Nl
dFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2Vz
UmVmLCB1aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVm
ZXJlbmNlc1JlZiktPnNldFVJbnQzMlZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHZhbHVl
KTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFsdWUsIFdLU3RyaW5nUmVmIGtl
eSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdS
ZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldFN0cmluZ1ZhbHVlRm9y
S2V5KHRvV1RGU3RyaW5nKGtleSksIHRvV1RGU3RyaW5nKHZhbHVlKSk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQ
cml2YXRlLmgJKHJldmlzaW9uIDI2ODg3MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDEwICs1
NiwxMCBAQCBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzUmVzZXRBbGxJbnRlCiBXS19FWFBP
UlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0SW50ZXJuYWxEZWJ1Z0ZlYXR1cmVGb3JLZXkoV0tQcmVm
ZXJlbmNlc1JlZiwgYm9vbCwgV0tTdHJpbmdSZWYpOwogCiAvLyBUaGUgZm9sbG93aW5nIGdlbmVy
aWMgc2V0dGVyIGZ1bmN0aW9ucyBhcmUgb25seSBpbnRlbmRlZCBmb3IgdXNlIGJ5IHRlc3Rpbmcg
aW5mcmFzdHJ1Y3R1cmUuCi1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVl
Rm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgdmFsdWUsIFdLU3Ry
aW5nUmVmIGtleSk7Ci1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVG
b3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0
cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVl
Rm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIHVpbnQzMl90IHZhbHVlLCBX
S1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1Zh
bHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RyaW5nUmVmIHZh
bHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldEJv
b2xWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwg
Ym9vbCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5j
ZXNTZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJl
bmNlc1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQg
V0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzUmVmLCB1aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKK1dL
X0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleUZvclRlc3Rpbmco
V0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFsdWUsIFdLU3Ry
aW5nUmVmIGtleSk7CiAKIC8vIEZvciBUZXN0IFJ1bm5lciBVc2Ugb25seS4KIFdLX0VYUE9SVCB2
b2lkIFdLUHJlZmVyZW5jZXNSZXNldFRlc3RSdW5uZXJPdmVycmlkZXMoV0tQcmVmZXJlbmNlc1Jl
ZiBwcmVmZXJlbmNlc1JlZik7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNjg4NzIpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAyMC0xMC0yMCAgU2FtIFdlaW5pZyAgPHdlaW5p
Z0BhcHBsZS5jb20+CisKKyAgICAgICAgW1Rlc3RpbmddIENvbnZlcnQgRHVtcFJlbmRlclRyZWUg
dG8gdXNlIGdlbmVyYXRlZCB0ZXN0IGhlYWRlciBvcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc4ODAKKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICBFeHBvc2UgYSBzZXQgb2Ygc2V0dGVycyB0byBmb3Ig
RHVtcFJlbmRlclRyZWUgdG8gdXNlIHdoZW4gc2V0dGluZyBwcmVmZXJlbmNlcworICAgICAgICBi
eSBzdHJpbmcuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tOgorICAgICAg
ICAoK1tXZWJQcmVmZXJlbmNlcyBfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Np
b25dKToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3NldEN1cnJlbnROZXR3b3JrTG9hZGVy
U2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTpdKToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMg
X2NsZWFyTmV0d29ya0xvYWRlclNlc3Npb25dKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMg
X3NldEJvb2xQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAg
ICgtW1dlYlByZWZlcmVuY2VzIF9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1
ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXREb3VibGVQcmVmZXJl
bmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVu
Y2VzIF9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6Cisg
ICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhWYWx1ZTpm
b3JLZXk6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZh
dGUuaDoKKwogMjAyMC0xMC0yMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgW21hY09TIFdLMV0gcHJvdmlkZSBhIHdheSBmb3IgQXBwbGUtaW50ZXJuYWwgY2xp
ZW50cyB0byBkaXNhYmxlIGxpbmsgcHJldmlldwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiAyNjg4NzIpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjYwLDI0ICsxNjYwLDE2IEBAICsgKHZvaWQpX3NldElCQ3JlYXRvcklE
OihOU1N0cmluZyAqKXN0cmkKICAgICBbb2xkIHJlbGVhc2VdOwogfQogCi0rICh2b2lkKV9zd2l0
Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbgotewotI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgV2ViVGhyZWFkTG9jaygpOwotI2VuZGlmCi0gICAgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7Ci19Ci0KLSsgKHZvaWQpX2Ns
ZWFyTmV0d29ya0xvYWRlclNlc3Npb24KKy0gKHZvaWQpZGlkUmVtb3ZlRnJvbVdlYlZpZXcKIHsK
LSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmRl
bGV0ZUFsbENvb2tpZXMoKTsKKyAgICBBU1NFUlQoX3ByaXZhdGUtPm51bVdlYlZpZXdzKTsKKyAg
ICBpZiAoLS1fcHJpdmF0ZS0+bnVtV2ViVmlld3MgPT0gMCkKKyAgICAgICAgW1tOU05vdGlmaWNh
dGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpXZWJQcmVmZXJl
bmNlc1JlbW92ZWROb3RpZmljYXRpb24gb2JqZWN0OnNlbGYgdXNlckluZm86bmlsXTsKIH0KIAot
KyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5
OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9saWN5CistICh2b2lkKXdpbGxBZGRUb1dlYlZp
ZXcKIHsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFn
ZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29v
a2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsgLy8gV2lsbCBmYWlsIHdo
ZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkg
d2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KLSAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29v
a2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7CisgICAgKytfcHJp
dmF0ZS0+bnVtV2ViVmlld3M7CiB9CiAKIC0gKEJPT0wpaXNET01QYXN0ZUFsbG93ZWQKQEAgLTE5
NTEsMjYgKzE5NDMsNiBAQCAtICh2b2lkKXNldFVzZVByZUhUTUw1UGFyc2VyUXVpcmtzOihCT09M
CiAgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTpmbGFnIGZvcktleTpXZWJLaXRVc2VQcmVIVE1MNVBh
cnNlclF1aXJrc0tleV07CiB9CiAKLS0gKHZvaWQpZGlkUmVtb3ZlRnJvbVdlYlZpZXcKLXsKLSAg
ICBBU1NFUlQoX3ByaXZhdGUtPm51bVdlYlZpZXdzKTsKLSAgICBpZiAoLS1fcHJpdmF0ZS0+bnVt
V2ViVmlld3MgPT0gMCkKLSAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2Vu
dGVyXQotICAgICAgICAgICAgcG9zdE5vdGlmaWNhdGlvbk5hbWU6V2ViUHJlZmVyZW5jZXNSZW1v
dmVkTm90aWZpY2F0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDpzZWxmCi0g
ICAgICAgICAgICAgICAgICAgICAgICB1c2VySW5mbzpuaWxdOwotfQotCi0tICh2b2lkKXdpbGxB
ZGRUb1dlYlZpZXcKLXsKLSAgICArK19wcml2YXRlLT5udW1XZWJWaWV3czsKLX0KLQotLSAodm9p
ZClfc2V0UHJlZmVyZW5jZUZvclRlc3RXaXRoVmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5
OihOU1N0cmluZyAqKWtleQotewotICAgIFtzZWxmIF9zZXRTdHJpbmdWYWx1ZTp2YWx1ZSBmb3JL
ZXk6a2V5XTsKLX0KLQogLSAodm9pZClzZXRGdWxsU2NyZWVuRW5hYmxlZDooQk9PTClmbGFnCiB7
CiAgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTpmbGFnIGZvcktleTpXZWJLaXRGdWxsU2NyZWVuRW5h
YmxlZFByZWZlcmVuY2VLZXldOwpAQCAtMzAxMyw2ICsyOTg1LDY2IEBAIC0gKHZvaWQpX3NldEVu
YWJsZWQ6KEJPT0wpdmFsdWUgZm9yRmVhdHUKIAogQGVuZAogCitAaW1wbGVtZW50YXRpb24gV2Vi
UHJlZmVyZW5jZXMgKFdlYlByaXZhdGVUZXN0aW5nKQorCisrICh2b2lkKV9zd2l0Y2hOZXR3b3Jr
TG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbgoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisg
ICAgV2ViVGhyZWFkTG9jaygpOworI2VuZGlmCisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFw
Ojpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7Cit9CisKKysgKHZvaWQpX3NldEN1cnJlbnRO
ZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0
UG9saWN5KXBvbGljeQoreworICAgIGF1dG8gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpOworICAg
IFJFTEVBU0VfQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90IGNh
bGxlZCBiZWZvcmVoYW5kLgorICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQ
b2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKK30KKworKyAodm9pZClfY2xlYXJO
ZXR3b3JrTG9hZGVyU2Vzc2lvbgoreworICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVm
YXVsdFN0b3JhZ2VTZXNzaW9uKCkuZGVsZXRlQWxsQ29va2llcygpOworfQorCistICh2b2lkKV9y
ZXNldFRvRGVmYXVsdFZhbHVlc0ZvclRlc3RpbmcKK3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorICAgIGRpc3BhdGNoX2JhcnJpZXJfc3luYyhfcHJpdmF0ZS0+cmVhZFdyaXRlUXVldWUsIF57
CisgICAgICAgIF9wcml2YXRlLT52YWx1ZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFy
eSBhbGxvY10gaW5pdF0pOworICAgIH0pOworI2Vsc2UKKyAgICBfcHJpdmF0ZS0+dmFsdWVzID0g
YWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyNlbmRpZgorICAg
IF9wcml2YXRlLT5hdXRvbWF0aWNhbGx5RGV0ZWN0c0NhY2hlTW9kZWwgPSBZRVM7CisKKyAgICBb
c2VsZiBfdXBkYXRlUHJpdmF0ZUJyb3dzaW5nU3RhdGVUbzpbc2VsZiBwcml2YXRlQnJvd3NpbmdF
bmFibGVkXV07CisgICAgW3NlbGYgX3Bvc3RQcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb25d
OworICAgIFtzZWxmIF9wb3N0Q2FjaGVNb2RlbENoYW5nZWROb3RpZmljYXRpb25dOworfQorCist
ICh2b2lkKV9zZXRCb29sUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KEJPT0wpdmFsdWUg
Zm9yS2V5OihOU1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6dmFsdWUg
Zm9yS2V5OmtleV07Cit9CisKKy0gKHZvaWQpX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5n
V2l0aFZhbHVlOih1aW50MzJfdCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5Cit7CisgICAg
W3NlbGYgX3NldEludGVnZXJWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAodm9pZClf
c2V0RG91YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KGRvdWJsZSl2YWx1ZSBmb3JL
ZXk6KE5TU3RyaW5nICopa2V5Cit7CisgICAgW3NlbGYgX3NldEZsb2F0VmFsdWU6dmFsdWUgZm9y
S2V5OmtleV07Cit9CisKKy0gKHZvaWQpX3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0
aFZhbHVlOihOU1N0cmluZyAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBb
c2VsZiBfc2V0U3RyaW5nVmFsdWU6dmFsdWUgZm9yS2V5OmtleV07Cit9CisKK0BlbmQKKwogQGlt
cGxlbWVudGF0aW9uIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlUHJlZmVyZW5jZXNDb252ZXJ0
ZWRUb1dlYkZlYXR1cmUpCiAKIC0gKEJPT0wpdXNlckdlc3R1cmVQcm9taXNlUHJvcGFnYXRpb25F
bmFibGVkCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVu
Y2VzUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgJKHJldmlzaW9uIDI2ODg3MikKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg5LDEzICs4OSw2IEBAIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlBy
aXZhdGUpCiArICh2b2lkKV9zZXRJbml0aWFsRGVmYXVsdFRleHRFbmNvZGluZ1RvU3lzdGVtRW5j
b2Rpbmc7CiArICh2b2lkKV9zZXRJQkNyZWF0b3JJRDooTlNTdHJpbmcgKilzdHJpbmc7CiAKLS8v
IEZvciBEdW1wUmVuZGVyVHJlZSB1c2Ugb25seS4KLSsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2Fk
ZXJUb05ld1Rlc3RpbmdTZXNzaW9uOwotKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJT
ZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpY29va2ll
QWNjZXB0UG9saWN5OwotKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbjsKLS8vIFVz
ZWQgdG8gc2V0IHByZWZlcmVuY2Ugc3BlY2lmaWVkIGluIHRoZSB0ZXN0IHZpYSBMYXlvdXRUZXN0
Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoLi4pLgotLSAodm9pZClfc2V0UHJlZmVyZW5j
ZUZvclRlc3RXaXRoVmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtl
eTsKLQogKyAodm9pZClzZXRXZWJLaXRMaW5rVGltZVZlcnNpb246KGludCl2ZXJzaW9uOwogCiAv
LyBGb3IgV2ViVmlldydzIHVzZSBvbmx5LgpAQCAtMzEwLDYgKzMwMywxOCBAQCBAaW50ZXJmYWNl
IFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlRmVhCiAtICh2b2lkKV9zZXRFbmFibGVkOihCT09M
KXZhbHVlIGZvckZlYXR1cmU6KFdlYkZlYXR1cmUgKilmZWF0dXJlOwogQGVuZAogCitAaW50ZXJm
YWNlIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlVGVzdGluZykKKysgKHZvaWQpX3N3aXRjaE5l
dHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uOworKyAodm9pZClfc2V0Q3VycmVudE5ldHdv
cmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xp
Y3kpY29va2llQWNjZXB0UG9saWN5OworKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lv
bjsKKworLSAodm9pZClfcmVzZXRUb0RlZmF1bHRWYWx1ZXNGb3JUZXN0aW5nOworLSAodm9pZClf
c2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihCT09MKXZhbHVlIGZvcktleToo
TlNTdHJpbmcgKilrZXk7CistICh2b2lkKV9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dp
dGhWYWx1ZToodWludDMyX3QpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZvaWQp
X3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihkb3VibGUpdmFsdWUgZm9y
S2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZvaWQpX3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0
aW5nV2l0aFZhbHVlOihOU1N0cmluZyAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXk7CitA
ZW5kCisKIC8vIEZJWE1FOiBJZiB0aGVzZSBhcmUgbm90IHVzZWQgYW55d2hlcmUsIHdlIHNob3Vs
ZCByZW1vdmUgdGhlbSBhbmQgb25seSB1c2UgV2ViRmVhdHVyZSBtZWNoYW5pc20gZm9yIHRoZSBw
cmVmZXJlbmNlLgogQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVByZWZlcmVu
Y2VzQ29udmVydGVkVG9XZWJGZWF0dXJlKQogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgdXNl
ckdlc3R1cmVQcm9taXNlUHJvcGFnYXRpb25FbmFibGVkOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjY4OTI0KQorKysgVG9v
bHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjAtMTAtMjMg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFtUZXN0aW5nXSBDb252
ZXJ0IER1bXBSZW5kZXJUcmVlIHRvIHVzZSBnZW5lcmF0ZWQgdGVzdCBoZWFkZXIgb3B0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3ODgwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgRnVsbHkgc3VwcG9y
dCB1c2Ugb2YgYW55IFdlYlByZWZlcmVuY2VzKi55YW1sIHByZWZlcmVuY2UgaW4gRHVtcFJlbmRl
clRyZWUgKGZvciBtYWNPUykgYnk6CisgICAgICAgICAgICAtIE1vdmluZyBEdW1wUmVuZGVyVHJl
ZSdzIFRlc3RPcHRpb25zIHRvIGJlIGZ1bGx5IGJhY2tlZCBieSBUZXN0RmVhdHVyZXMgbGlrZSBX
ZWJLaXRUZXN0UnVubm5lci4KKyAgICAgICAgICAgIC0gQWRvcHRpbmcgbmV3IFdlYlByZWZlcmVu
Y2VzIFNQSSBmb3Igc2V0dGluZyBhbnkgcHJlZmVyZW5jZSBieSBrZXkgYW5kIHJlc2V0IGFsbCBw
cmVmZXJlbmNlcyBrZXlzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tOgorICAgICAgICAodG9OUyk6CisgICAgICAgIChyZXNldFdlYlByZWZlcmVuY2Vz
VG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9w
dGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgor
ICAgICAgICAoVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMpOgorCiAyMDIwLTEwLTIy
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
TnVsbCBjaGVjayBwbGF0Zm9ybVN0cmF0ZWdpZXMgd2hlbiBtYWtpbmcgYmxvYiByZWFkIHN0cmVh
bSBmb3IgYW4gTlNVUkxSZXF1ZXN0CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4
dAkocmV2aXNpb24gMjY4ODcyKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQ01ha2VMaXN0cy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgbGlzdChBUFBFTkQgRHVtcFJlbmRl
clRyZWVfUFJJVkFURV9JTkNMVQogKQogCiBzZXQoRHVtcFJlbmRlclRyZWVfV0VCX1BSRUZFUkVO
Q0VTX1RFTVBMQVRFUworICAgICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVu
Y2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5j
cHAuZXJiCiAgICAgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1w
bGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCiApCiAKQEAgLTUzLDEyICs1NCwx
MyBAQCBzZXQoRHVtcFJlbmRlclRyZWVfV0VCX1BSRUZFUkVOQ0VTCiBzZXRfc291cmNlX2ZpbGVz
X3Byb3BlcnRpZXMoJHtEdW1wUmVuZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVN9IFBST1BFUlRJRVMg
R0VORVJBVEVEIFRSVUUpCiAKIGFkZF9jdXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtEdW1w
UmVuZGVyVHJlZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMu
aAorICAgIE9VVFBVVCAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9L1Rlc3RP
cHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgJHtEdW1wUmVuZGVyVHJl
ZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaAogICAgIERF
UEVORFMgJHtEdW1wUmVuZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVTfSAke0R1bXBS
ZW5kZXJUcmVlX1dFQl9QUkVGRVJFTkNFU30gV1RGX0NvcHlQcmVmZXJlbmNlcwotICAgIENPTU1B
TkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7V1RGX1NDUklQVFNfRElSfS9HZW5lcmF0ZVByZWZlcmVu
Y2VzLnJiIC0tZnJvbnRlbmQgV2ViS2l0TGVnYWN5IC0tYmFzZSAke1dURl9TQ1JJUFRTX0RJUn0v
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCAtLWRlYnVnICR7V1RGX1NDUklQVFNfRElS
fS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0RlYnVnLnlhbWwgLS1leHBlcmltZW50YWwgJHtX
VEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlh
bWwgLS1pbnRlcm5hbCAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5j
ZXNJbnRlcm5hbC55YW1sIC0tb3V0cHV0RGlyICIke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09V
UkNFU19ESVJ9IiAtLXRlbXBsYXRlICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZl
cmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYgorICAgIENPTU1B
TkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7V1RGX1NDUklQVFNfRElSfS9HZW5lcmF0ZVByZWZlcmVu
Y2VzLnJiIC0tZnJvbnRlbmQgV2ViS2l0TGVnYWN5IC0tYmFzZSAke1dURl9TQ1JJUFRTX0RJUn0v
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCAtLWRlYnVnICR7V1RGX1NDUklQVFNfRElS
fS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0RlYnVnLnlhbWwgLS1leHBlcmltZW50YWwgJHtX
VEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlh
bWwgLS1pbnRlcm5hbCAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5j
ZXNJbnRlcm5hbC55YW1sIC0tb3V0cHV0RGlyICIke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09V
UkNFU19ESVJ9IiAtLXRlbXBsYXRlICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZl
cmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGlu
Zy5jcHAuZXJiIC0tdGVtcGxhdGUgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVy
ZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCiAgICAgVkVSQkFU
SU0pCiAKIGxpc3QoQVBQRU5EIER1bXBSZW5kZXJUcmVlX1NPVVJDRVMKKyAgICAke0R1bXBSZW5k
ZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVn
YWN5S2V5TWFwcGluZy5jcHAKICAgICAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19E
SVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCiApCiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAkocmV2aXNp
b24gMjY4ODcyKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdAkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDcgQEAgJChCVUlMVF9QUk9EVUNU
U19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlLwogJChQUk9KRUNUX0RJUikvLi4vVGVzdFJ1bm5lclNo
YXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbAogJChQ
Uk9KRUNUX0RJUikvQmluZGluZ3MvQ29kZUdlbmVyYXRvckR1bXBSZW5kZXJUcmVlLnBtCiAkKFBS
T0pFQ1RfRElSKS9EZXJpdmVkU291cmNlcy5tYWtlCiskKFBST0pFQ1RfRElSKS9TY3JpcHRzL1By
ZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFw
cGluZy5jcHAuZXJiCiAkKFBST0pFQ1RfRElSKS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVz
L1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYgogJChQUk9KRUNUX0RJUikvU2NyaXB0cy9n
ZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2gKICQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElS
KS9Db2RlR2VuZXJhdG9yLnBtCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjY4ODcyKQorKysg
VG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHdv
cmtpbmcgY29weSkKQEAgLTEsNCArMSw1IEBACiAjIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkg
dGhlIGdlbmVyYXRlLXhjZmlsZWxpc3RzIHNjcmlwdC4KICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9EdW1wUmVuZGVyVHJlZS9KU1VJU2NyaXB0Q29udHJvbGxlci5jcHAKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9EdW1wUmVuZGVyVHJlZS9KU1VJU2Ny
aXB0Q29udHJvbGxlci5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvRHVt
cFJlbmRlclRyZWUvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNw
cAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVlL1Rl
c3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJp
dmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2
ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDI2ODg3MikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDcgQEAgV0VC
X1BSRUZFUkVOQ0VTID0gXAogIwogCiBXRUJfUFJFRkVSRU5DRVNfR0VORVJBVEVEX0ZJTEVTID0g
XAorICAgIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgXAog
ICAgIFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oIFwKICMKIApJbmRleDogVG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjg4NzIpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9E
dW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDksNiArMTA5LDcgQEAKIAkJNURCOUFDOUUwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktpdFdl
aWdodFdhdGNoZXI3MDAudHRmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzNzVGMDk3NzBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0
V2F0Y2hlcjcwMC50dGYgKi87IH07CiAJCTVEQjlBQzlGMEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJL
aXRXZWlnaHRXYXRjaGVyODAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzc1RjA5NzgwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdl
aWdodFdhdGNoZXI4MDAudHRmICovOyB9OwogCQk1REI5QUNBMDBGNzIyQzM2MDA2ODQ2NDEgLyog
V2ViS2l0V2VpZ2h0V2F0Y2hlcjkwMC50dGYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NUYwOTc5MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJL
aXRXZWlnaHRXYXRjaGVyOTAwLnR0ZiAqLzsgfTsKKwkJN0M5ODkzREYyNTQzM0Y4RTAwMzU0RUJD
IC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzk4OTNERTI1NDMzQzg3
MDAzNTRFQkMgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNw
cCAqLzsgfTsKIAkJN0NGRjlCQkYyNTMzQkIyNDAwMDgwMDlGIC8qIFRlc3RGZWF0dXJlcy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0ZGOUJCRTI1
MzNCQjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVzLmNwcCAqLzsgfTsKIAkJN0NGRjlCQzIyNTMz
QkMxNjAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRkY5QkMxMjUzM0JDMTYwMDA4MDA5RiAvKiBUZXN0Q29t
bWFuZC5jcHAgKi87IH07CiAJCTgwMDQ1QUVFMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmls
aXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgwMDQ1QUVDMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5
Tm90aWZpY2F0aW9uSGFuZGxlci5tbSAqLzsgfTsKQEAgLTMzMyw3ICszMzQsOCBAQAogCQk3QzQ0
Njk3RjI1Mzc3QTAyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0M0NDY5ODAyNTM3N0EwMjAwMjQyOTBBIC8qIGNoZWNrLXhjZmlsZWxpc3RzLnNo
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5z
Y3JpcHQuc2g7IHBhdGggPSAiY2hlY2steGNmaWxlbGlzdHMuc2giOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzQ0Njk4MTI1Mzc3QTAyMDAyNDI5MEEgLyogZ2VuZXJhdGUtZGVyaXZl
ZC1zb3VyY2VzLnNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5zY3JpcHQuc2g7IHBhdGggPSAiZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzLnNo
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M0NDY5ODUyNTM3N0U1MjAwMjQyOTBB
IC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXN0T3B0aW9u
c0dlbmVyYXRlZEtleXMuaDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5MEEgLyogVGVz
dE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJh
dGVkS2V5cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Qzk4OTNERTI1NDMzQzg3
MDAzNTRFQkMgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5
TWFwcGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQkJDMzIyMURERkNG
OUEwMDc4NkI5RCAvKiBUZXN0T3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUZXN0T3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0ZGOUJC
RDI1MzNCQjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RG
ZWF0dXJlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0ZGOUJCRTI1MzNCQjI0
MDAwODAwOUYgLyogVGVzdEZlYXR1cmVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlc3RGZWF0
dXJlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NzcsNiArNzc5LDcgQEAK
IAkJN0M0NDY5ODIyNTM3N0MzNDAwMjQyOTBBIC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJN0M5ODkzREUyNTQzM0M4NzAw
MzU0RUJDIC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAg
Ki8sCiAJCQkJN0M0NDY5ODUyNTM3N0U1MjAwMjQyOTBBIC8qIFRlc3RPcHRpb25zR2VuZXJhdGVk
S2V5cy5oICovLAogCQkJKTsKIAkJCW5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKQEAgLTEyNjAs
NiArMTI2Myw3IEBACiAJCQkJQThENzlDRUIwRkMyOEIyQzAwNEFDOEZFIC8qIER1bXBSZW5kZXJU
cmVlRmlsZURyYWdnaW5nU291cmNlLm0gaW4gU291cmNlcyAqLywKIAkJCQlBOEI5MUFEQTBDRjNC
MzJGMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQThCOTFBREMwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBSZW5kZXJUcmVlV2luZG93Lm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJN0M5ODkzREYyNTQzM0Y4RTAwMzU0RUJDIC8qIFRlc3RPcHRp
b25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQ0ExOEI2MjBDOUIwOEMyMDAxMTQzNjkgLyogRWRpdGluZ0RlbGVnYXRlLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkNBMThCNzAwQzlCMDhEQjAwMTE0MzY5IC8qIEV2ZW50U2VuZGluZ0NvbnRy
b2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI2NDBDOUIwOEMyMDAxMTQzNjkgLyog
RnJhbWVMb2FkRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRX
ZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJl
bmRlclRyZWUvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRl
ZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYgkobm9uZXhpc3RlbnQpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2Vu
ZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNDggQEAKKy8qCisgKiA8JT0gQHdhcm5pbmcgJT4KKyAqCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdE9wdGlvbnMuaCIKKworbmFtZXNwYWNlIFdUUiB7
CisKK3N0ZDo6c3RyaW5nIFRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVuY2VLZXko
Y29uc3Qgc3RkOjpzdHJpbmcmIHdlYlByZWZlcmVuY2VzS2V5KQoreworICAgIHN0YXRpYyBzdGQ6
OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBub25TdGFuZGFyZEtleXMg
PSB7Cis8JS0gZm9yIEBwcmVmIGluIEBleHBvc2VkUHJlZmVyZW5jZXMuc2VsZWN0IHsgfHB8IHAu
b3B0c1sid2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleSJdIH0gZG8gLSU+CisgICAgICAgIHsgIjwl
PSBAcHJlZi5uYW1lICU+IiwgIjwlPSBAcHJlZi5wcmVmZXJlbmNlS2V5ICU+IiB9LCBcCis8JS0g
ZW5kIC0lPgorICAgIH07CisKKyAgICBhdXRvIGl0ID0gbm9uU3RhbmRhcmRLZXlzLmZpbmQod2Vi
UHJlZmVyZW5jZXNLZXkpOworICAgIGlmIChpdCAhPSBub25TdGFuZGFyZEtleXMuZW5kKCkpCisg
ICAgICAgIHJldHVybiBpdC0+c2Vjb25kOworCisgICAgcmV0dXJuICJXZWJLaXQiICsgd2ViUHJl
ZmVyZW5jZXNLZXk7Cit9CisKK30KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWUubW0JKHJldmlzaW9uIDI2ODg3MikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMwLDYgKzEzMCwxMSBA
QCBleHRlcm4gIkMiIHsKICNpbXBvcnQgPG1hY2gtby9nZXRzZWN0Lmg+CiB9CiAKK3N0YXRpYyBS
ZXRhaW5QdHI8TlNTdHJpbmc+IHRvTlMoY29uc3Qgc3RkOjpzdHJpbmcmIHN0cmluZykKK3sKKyAg
ICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aFVURjhTdHJpbmc6c3Ry
aW5nLmNfc3RyKCldKTsKK30KKwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogQGludGVyZmFj
ZSBEdW1wUmVuZGVyVHJlZUFwcGxpY2F0aW9uIDogTlNBcHBsaWNhdGlvbgogQGVuZApAQCAtODQ3
LDYgKzg1Miw4IEBAIHN0YXRpYyB2b2lkIGVuYWJsZUV4cGVyaW1lbnRhbEZlYXR1cmVzKFcKIC8v
IENhbGxlZCBiZWZvcmUgZWFjaCB0ZXN0Lgogc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNl
c1RvQ29uc2lzdGVudFZhbHVlcyhXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMpCiB7CisgICAg
W3ByZWZlcmVuY2VzIF9yZXNldFRvRGVmYXVsdFZhbHVlc0ZvclRlc3RpbmddOworCiAgICAgZW5h
YmxlRXhwZXJpbWVudGFsRmVhdHVyZXMocHJlZmVyZW5jZXMpOwogCiAgICAgW3ByZWZlcmVuY2Vz
IHNldE5lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrOiBOT107CkBAIC05NjksNDEg
Kzk3NiwyMSBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0CiAgICAg
W1dlYlByZWZlcmVuY2VzIF9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2Nl
cHRQb2xpY3k6TlNIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21h
aW5dOwogfQogCi1zdGF0aWMgYm9vbCBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZShzdGQ6
OnN0cmluZyBrZXksIGJvb2wgZGVmYXVsdFZhbHVlLCBjb25zdCBXVFI6OlRlc3RPcHRpb25zJiBv
cHRpb25zKQotewotICAgIGF1dG8gaXQgPSBvcHRpb25zLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVy
ZXMoKS5maW5kKGtleSk7Ci0gICAgaWYgKGl0ICE9IG9wdGlvbnMuYm9vbFdlYlByZWZlcmVuY2VG
ZWF0dXJlcygpLmVuZCgpKQotICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKLSAgICByZXR1cm4g
ZGVmYXVsdFZhbHVlOwotfQotCiBzdGF0aWMgdm9pZCBzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RP
cHRpb25zKFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcywgY29uc3QgV1RSOjpUZXN0T3B0aW9u
cyYgb3B0aW9ucykKIHsKICAgICBwcmVmZXJlbmNlcy5wcml2YXRlQnJvd3NpbmdFbmFibGVkID0g
b3B0aW9ucy51c2VFcGhlbWVyYWxTZXNzaW9uKCk7CiAKLSAgICBwcmVmZXJlbmNlcy5hdHRhY2ht
ZW50RWxlbWVudEVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQXR0YWNo
bWVudEVsZW1lbnRFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmFj
Y2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgi
QWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJl
bmNlcy5tZW51SXRlbUVsZW1lbnRFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFs
dWUoIk1lbnVJdGVtRWxlbWVudEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVy
ZW5jZXMua2V5Z2VuRWxlbWVudEVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1
ZSgiS2V5Z2VuRWxlbWVudEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5j
ZXMubW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVW
YWx1ZSgiTW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQiLCB0cnVlLCBvcHRpb25zKTsKLSAgICBw
cmVmZXJlbmNlcy5pbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VG
ZWF0dXJlVmFsdWUoIkluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7
Ci0gICAgcHJlZmVyZW5jZXMuYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3Jl
ZGVudGlhbHMgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQWxsb3dDcm9zc09yaWdp
blN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAg
cHJlZmVyZW5jZXMuY29sb3JGaWx0ZXJFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJl
VmFsdWUoIkNvbG9yRmlsdGVyRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJl
bmNlcy5zZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzRW5hYmxlZCA9IGJvb2xXZWJQcmVm
ZXJlbmNlRmVhdHVyZVZhbHVlKCJTZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzRW5hYmxl
ZCIsIHRydWUsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLndlYkdQVUVuYWJsZWQgPSBib29s
V2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiV2ViR1BVRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25z
KTsKLSAgICBwcmVmZXJlbmNlcy5DU1NMb2dpY2FsRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNl
RmVhdHVyZVZhbHVlKCJDU1NMb2dpY2FsRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBw
cmVmZXJlbmNlcy5saW5lSGVpZ2h0VW5pdHNFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0
dXJlVmFsdWUoIkxpbmVIZWlnaHRVbml0c0VuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAg
cHJlZmVyZW5jZXMuYWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNl
RmVhdHVyZVZhbHVlKCJBZENsaWNrQXR0cmlidXRpb25FbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMp
OwotICAgIHByZWZlcmVuY2VzLnJlc2l6ZU9ic2VydmVyRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJl
bmNlRmVhdHVyZVZhbHVlKCJSZXNpemVPYnNlcnZlckVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7
Ci0gICAgcHJlZmVyZW5jZXMuQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCA9IGJvb2xX
ZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVk
IiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmNvcmVNYXRoTUxFbmFibGVkID0g
Ym9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkNvcmVNYXRoTUxFbmFibGVkIiwgZmFsc2Us
IG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLnJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkID0g
Ym9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIlJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVk
IiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmFzeW5jQ2xpcGJvYXJkQVBJRW5h
YmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJBc3luY0NsaXBib2FyZEFQSUVu
YWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMudXNlc1BhZ2VDYWNoZSA9
IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJVc2VzQmFja0ZvcndhcmRDYWNoZSIsIGZh
bHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5sYXlvdXRGb3JtYXR0aW5nQ29udGV4dElu
dGVncmF0aW9uRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJMYXlvdXRG
b3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCIsIHRydWUsIG9wdGlvbnMpOwotICAg
IHByZWZlcmVuY2VzLmFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkID0g
Ym9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhB
bmRIZWlnaHRFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmFsbG93
VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgi
QWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyIsIHRydWUsIG9wdGlvbnMpOwotICAgIHByZWZl
cmVuY2VzLmNvbnRhY3RQaWNrZXJBUElFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJl
VmFsdWUoIkNvbnRhY3RQaWNrZXJBUElFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOworICAgIGZv
ciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5ib29sV2ViUHJlZmVyZW5jZUZl
YXR1cmVzKCkpCisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0
aW5nV2l0aFZhbHVlOnZhbHVlIGZvcktleTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0
TGVnYWN5UHJlZmVyZW5jZUtleShrZXkpKS5nZXQoKV07CisKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCisg
ICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0RG91YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFs
dWU6dmFsdWUgZm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVm
ZXJlbmNlS2V5KGtleSkpLmdldCgpXTsKKworICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFs
dWVdIDogb3B0aW9ucy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAgICAgW3By
ZWZlcmVuY2VzIF9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZSBm
b3JLZXk6dG9OUyhXVFI6OlRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVuY2VLZXko
a2V5KSkuZ2V0KCldOworCisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRp
b25zLnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcygpKQorICAgICAgICBbcHJlZmVyZW5jZXMg
X3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnRvTlModmFsdWUpLmdldCgp
IGZvcktleTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtl
eShrZXkpKS5nZXQoKV07CiB9CiAKIC8vIENhbGxlZCBvbmNlIG9uIER1bXBSZW5kZXJUcmVlIHN0
YXJ0dXAuCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQko
cmV2aXNpb24gMjY4ODcyKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTYwOSw3ICs2MDksNyBAQCB2b2lkIFRlc3RSdW5uZXI6
Om92ZXJyaWRlUHJlZmVyZW5jZShKU1N0CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB2YWx1
ZUNGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB2
YWx1ZSkpOwogICAgIE5TU3RyaW5nICp2YWx1ZU5TID0gKF9fYnJpZGdlIE5TU3RyaW5nICopdmFs
dWVDRi5nZXQoKTsKIAotICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gX3Nl
dFByZWZlcmVuY2VGb3JUZXN0V2l0aFZhbHVlOnZhbHVlTlMgZm9yS2V5OmtleU5TXTsKKyAgICBb
W1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIF9zZXRTdHJpbmdQcmVmZXJlbmNlRm9y
VGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZU5TIGZvcktleTprZXlOU107CiB9CiAKIHZvaWQgVGVzdFJ1
bm5lcjo6cmVtb3ZlQWxsVmlzaXRlZExpbmtzKCkKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNjg4NzIpCisrKyBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIxLDE3ICs5
MjEsMTYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cmVzZXRQcmVmZXJlbmNlc1RvQwogICAgIHBs
YXRmb3JtUmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcygpOwogCiAgICAgZm9yIChj
b25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVy
ZXMoKSkKLSAgICAgICAgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleShwcmVmZXJlbmNl
cywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRCb29s
VmFsdWVGb3JLZXlGb3JUZXN0aW5nKHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgp
KTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5kb3VibGVX
ZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKLSAgICAgICAgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZh
bHVlRm9yS2V5KHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKKyAgICAgICAg
V0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywg
dmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZh
bHVlXSA6IG9wdGlvbnMudWludDMyV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCi0gICAgICAgIFdL
UHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleShwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0so
a2V5KS5nZXQoKSk7CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleUZv
clRlc3RpbmcocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOwogCiAgICAgZm9y
IChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLnN0cmluZ1dlYlByZWZlcmVuY2VG
ZWF0dXJlcygpKQotICAgICAgICBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkocHJl
ZmVyZW5jZXMsIHRvV0sodmFsdWUpLmdldCgpLCB0b1dLKGtleSkuZ2V0KCkpOwotCisgICAgICAg
IFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVyZW5jZXMs
IHRvV0sodmFsdWUpLmdldCgpLCB0b1dLKGtleSkuZ2V0KCkpOwogfQogCiBib29sIFRlc3RDb250
cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBv
cHRpb25zLCBSZXNldFN0YWdlIHJlc2V0U3RhZ2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412219</attachid>
            <date>2020-10-23 18:08:20 -0700</date>
            <delta_ts>2020-10-24 11:31:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201023180819.patch</filename>
            <type>text/plain</type>
            <size>32285</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg4NzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTIwICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVu
ZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlbmFtZSBXS1ByZWZlcmVuY2VzU2V0
KlZhbHVlRm9yS2V5IFNQSSB0byBXS1ByZWZlcmVuY2VzU2V0KlZhbHVlRm9yS2V5Rm9yVGVzdGlu
ZworICAgICAgICB0byBtYWtlIGl0IGNsZWFyIHdoYXQgdGhleSBhcmUgdXNlZCBmb3IgYW5kIGZv
ciBjb25zaXN0ZW5jeSB3aXRoIFdlYktpdExlZ2FjeS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFs
dWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1
ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVl
Rm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVG
b3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JL
ZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5
KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleSk6
IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0
ZS5oOgorCiAyMDIwLTEwLTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBJbnRyb2R1Y2Ugd29ya2xldCBkZXN0aW5hdGlvbnMgYW5kIGFsbG93IHRvIGZldGNo
IG1vZHVsZXMgd2l0aCBDT1JTIGJhc2VkIG9uIGRlc3RpbmF0aW9uCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gMjY4
ODcyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc4LDIyICs3OCwyMiBAQCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRJ
bnRlcm5hbERlYnVnRmVhdHVyCiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0SW50ZXJu
YWxEZWJ1Z0ZlYXR1cmVFbmFibGVkRm9yS2V5KHRvV1RGU3RyaW5nKGludGVybmFsRGVidWdGZWF0
dXJlS2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JL
ZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1ZSwgV0tTdHJpbmdS
ZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9yVGVzdGluZyhX
S1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZhbHVlLCBXS1N0cmluZ1JlZiBr
ZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0Qm9vbFZhbHVlRm9yS2V5KHRv
V1RGU3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0RG91Ymxl
VmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgZG91YmxlIHZhbHVl
LCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktl
eUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgZG91YmxlIHZhbHVl
LCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0Qm9v
bFZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHZhbHVlKTsKIH0KIAotdm9pZCBXS1ByZWZl
cmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1Jl
ZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1Nl
dFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2Vz
UmVmLCB1aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQogewogICAgIHRvSW1wbChwcmVm
ZXJlbmNlc1JlZiktPnNldFVJbnQzMlZhbHVlRm9yS2V5KHRvV1RGU3RyaW5nKGtleSksIHZhbHVl
KTsKIH0KIAotdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFsdWUsIFdLU3RyaW5nUmVmIGtl
eSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdS
ZWYga2V5KQogewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldFN0cmluZ1ZhbHVlRm9y
S2V5KHRvV1RGU3RyaW5nKGtleSksIHRvV1RGU3RyaW5nKHZhbHVlKSk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQ
cml2YXRlLmgJKHJldmlzaW9uIDI2ODg3MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDEwICs1
NiwxMCBAQCBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzUmVzZXRBbGxJbnRlCiBXS19FWFBP
UlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0SW50ZXJuYWxEZWJ1Z0ZlYXR1cmVGb3JLZXkoV0tQcmVm
ZXJlbmNlc1JlZiwgYm9vbCwgV0tTdHJpbmdSZWYpOwogCiAvLyBUaGUgZm9sbG93aW5nIGdlbmVy
aWMgc2V0dGVyIGZ1bmN0aW9ucyBhcmUgb25seSBpbnRlbmRlZCBmb3IgdXNlIGJ5IHRlc3Rpbmcg
aW5mcmFzdHJ1Y3R1cmUuCi1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVl
Rm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgdmFsdWUsIFdLU3Ry
aW5nUmVmIGtleSk7Ci1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVG
b3JLZXkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0
cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVl
Rm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIHVpbnQzMl90IHZhbHVlLCBX
S1N0cmluZ1JlZiBrZXkpOwotV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1Zh
bHVlRm9yS2V5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIFdLU3RyaW5nUmVmIHZh
bHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldEJv
b2xWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwg
Ym9vbCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5j
ZXNTZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3RpbmcoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJl
bmNlc1JlZiwgZG91YmxlIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQg
V0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzUmVmLCB1aW50MzJfdCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKK1dL
X0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleUZvclRlc3Rpbmco
V0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFsdWUsIFdLU3Ry
aW5nUmVmIGtleSk7CiAKIC8vIEZvciBUZXN0IFJ1bm5lciBVc2Ugb25seS4KIFdLX0VYUE9SVCB2
b2lkIFdLUHJlZmVyZW5jZXNSZXNldFRlc3RSdW5uZXJPdmVycmlkZXMoV0tQcmVmZXJlbmNlc1Jl
ZiBwcmVmZXJlbmNlc1JlZik7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNjg4NzIpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAyMC0xMC0yMCAgU2FtIFdlaW5pZyAgPHdlaW5p
Z0BhcHBsZS5jb20+CisKKyAgICAgICAgW1Rlc3RpbmddIENvbnZlcnQgRHVtcFJlbmRlclRyZWUg
dG8gdXNlIGdlbmVyYXRlZCB0ZXN0IGhlYWRlciBvcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc4ODAKKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICBFeHBvc2UgYSBzZXQgb2Ygc2V0dGVycyB0byBmb3Ig
RHVtcFJlbmRlclRyZWUgdG8gdXNlIHdoZW4gc2V0dGluZyBwcmVmZXJlbmNlcworICAgICAgICBi
eSBzdHJpbmcuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tOgorICAgICAg
ICAoK1tXZWJQcmVmZXJlbmNlcyBfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Np
b25dKToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3NldEN1cnJlbnROZXR3b3JrTG9hZGVy
U2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTpdKToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMg
X2NsZWFyTmV0d29ya0xvYWRlclNlc3Npb25dKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMg
X3NldEJvb2xQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAg
ICgtW1dlYlByZWZlcmVuY2VzIF9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1
ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXREb3VibGVQcmVmZXJl
bmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVu
Y2VzIF9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTpmb3JLZXk6XSk6Cisg
ICAgICAgICgtW1dlYlByZWZlcmVuY2VzIF9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhWYWx1ZTpm
b3JLZXk6XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZh
dGUuaDoKKwogMjAyMC0xMC0yMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgW21hY09TIFdLMV0gcHJvdmlkZSBhIHdheSBmb3IgQXBwbGUtaW50ZXJuYWwgY2xp
ZW50cyB0byBkaXNhYmxlIGxpbmsgcHJldmlldwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiAyNjg4NzIpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDI1LDcgKzEwMjUsNiBAQCAtIChXZWJDYWNoZU1vZGVsKWNhY2hlTW9k
ZWwKICAgICByZXR1cm4gKFdlYkNhY2hlTW9kZWwpW3NlbGYgX2ludGVnZXJWYWx1ZUZvcktleTpX
ZWJLaXRDYWNoZU1vZGVsUHJlZmVyZW5jZUtleV07CiB9CiAKLQogLSAodm9pZClzZXRTdXBwcmVz
c2VzSW5jcmVtZW50YWxSZW5kZXJpbmc6KEJPT0wpc3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVy
aW5nCiB7CiAgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTpzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5k
ZXJpbmcgZm9yS2V5OldlYktpdFN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZ0tleV07CkBA
IC0xNjYwLDI0ICsxNjU5LDE2IEBAICsgKHZvaWQpX3NldElCQ3JlYXRvcklEOihOU1N0cmluZyAq
KXN0cmkKICAgICBbb2xkIHJlbGVhc2VdOwogfQogCi0rICh2b2lkKV9zd2l0Y2hOZXR3b3JrTG9h
ZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbgotewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
V2ViVGhyZWFkTG9jaygpOwotI2VuZGlmCi0gICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpz
d2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7Ci19Ci0KLSsgKHZvaWQpX2NsZWFyTmV0d29ya0xv
YWRlclNlc3Npb24KKy0gKHZvaWQpZGlkUmVtb3ZlRnJvbVdlYlZpZXcKIHsKLSAgICBOZXR3b3Jr
U3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmRlbGV0ZUFsbENvb2tp
ZXMoKTsKKyAgICBBU1NFUlQoX3ByaXZhdGUtPm51bVdlYlZpZXdzKTsKKyAgICBpZiAoLS1fcHJp
dmF0ZS0+bnVtV2ViVmlld3MgPT0gMCkKKyAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBk
ZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpXZWJQcmVmZXJlbmNlc1JlbW92ZWRO
b3RpZmljYXRpb24gb2JqZWN0OnNlbGYgdXNlckluZm86bmlsXTsKIH0KIAotKyAodm9pZClfc2V0
Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29r
aWVBY2NlcHRQb2xpY3kpcG9saWN5CistICh2b2lkKXdpbGxBZGRUb1dlYlZpZXcKIHsKLSAgICBS
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgp
OwotICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsgLy8gV2lsbCBmYWlsIHdoZW4gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkgd2FzIG5vdCBjYWxs
ZWQgYmVmb3JlaGFuZC4KLSAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9s
aWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7CisgICAgKytfcHJpdmF0ZS0+bnVtV2Vi
Vmlld3M7CiB9CiAKIC0gKEJPT0wpaXNET01QYXN0ZUFsbG93ZWQKQEAgLTE5NTEsMjYgKzE5NDIs
NiBAQCAtICh2b2lkKXNldFVzZVByZUhUTUw1UGFyc2VyUXVpcmtzOihCT09MCiAgICAgW3NlbGYg
X3NldEJvb2xWYWx1ZTpmbGFnIGZvcktleTpXZWJLaXRVc2VQcmVIVE1MNVBhcnNlclF1aXJrc0tl
eV07CiB9CiAKLS0gKHZvaWQpZGlkUmVtb3ZlRnJvbVdlYlZpZXcKLXsKLSAgICBBU1NFUlQoX3By
aXZhdGUtPm51bVdlYlZpZXdzKTsKLSAgICBpZiAoLS1fcHJpdmF0ZS0+bnVtV2ViVmlld3MgPT0g
MCkKLSAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXQotICAgICAg
ICAgICAgcG9zdE5vdGlmaWNhdGlvbk5hbWU6V2ViUHJlZmVyZW5jZXNSZW1vdmVkTm90aWZpY2F0
aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDpzZWxmCi0gICAgICAgICAgICAg
ICAgICAgICAgICB1c2VySW5mbzpuaWxdOwotfQotCi0tICh2b2lkKXdpbGxBZGRUb1dlYlZpZXcK
LXsKLSAgICArK19wcml2YXRlLT5udW1XZWJWaWV3czsKLX0KLQotLSAodm9pZClfc2V0UHJlZmVy
ZW5jZUZvclRlc3RXaXRoVmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAq
KWtleQotewotICAgIFtzZWxmIF9zZXRTdHJpbmdWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKLX0K
LQogLSAodm9pZClzZXRGdWxsU2NyZWVuRW5hYmxlZDooQk9PTClmbGFnCiB7CiAgICAgW3NlbGYg
X3NldEJvb2xWYWx1ZTpmbGFnIGZvcktleTpXZWJLaXRGdWxsU2NyZWVuRW5hYmxlZFByZWZlcmVu
Y2VLZXldOwpAQCAtMzAxMyw2ICsyOTg0LDY2IEBAIC0gKHZvaWQpX3NldEVuYWJsZWQ6KEJPT0wp
dmFsdWUgZm9yRmVhdHUKIAogQGVuZAogCitAaW1wbGVtZW50YXRpb24gV2ViUHJlZmVyZW5jZXMg
KFdlYlByaXZhdGVUZXN0aW5nKQorCisrICh2b2lkKV9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdU
ZXN0aW5nU2Vzc2lvbgoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgV2ViVGhyZWFk
TG9jaygpOworI2VuZGlmCisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05l
d1Rlc3RpbmdTZXNzaW9uKCk7Cit9CisKKysgKHZvaWQpX3NldEN1cnJlbnROZXR3b3JrTG9hZGVy
U2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGlj
eQoreworICAgIGF1dG8gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6
ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpOworICAgIFJFTEVBU0VfQVNT
RVJUKGNvb2tpZVN0b3JhZ2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBOZXR3b3JrU3RvcmFnZVNlc3Np
b25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90IGNhbGxlZCBiZWZvcmVo
YW5kLgorICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3koY29va2ll
U3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKK30KKworKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVy
U2Vzc2lvbgoreworICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6ZGVmYXVsdFN0b3JhZ2VT
ZXNzaW9uKCkuZGVsZXRlQWxsQ29va2llcygpOworfQorCistICh2b2lkKV9yZXNldFRvRGVmYXVs
dFZhbHVlc0ZvclRlc3RpbmcKK3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGRpc3Bh
dGNoX2JhcnJpZXJfc3luYyhfcHJpdmF0ZS0+cmVhZFdyaXRlUXVldWUsIF57CisgICAgICAgIF9w
cml2YXRlLT52YWx1ZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5p
dF0pOworICAgIH0pOworI2Vsc2UKKyAgICBfcHJpdmF0ZS0+dmFsdWVzID0gYWRvcHROUyhbW05T
TXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyNlbmRpZgorICAgIF9wcml2YXRlLT5h
dXRvbWF0aWNhbGx5RGV0ZWN0c0NhY2hlTW9kZWwgPSBZRVM7CisKKyAgICBbc2VsZiBfdXBkYXRl
UHJpdmF0ZUJyb3dzaW5nU3RhdGVUbzpbc2VsZiBwcml2YXRlQnJvd3NpbmdFbmFibGVkXV07Cisg
ICAgW3NlbGYgX3Bvc3RQcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb25dOworICAgIFtzZWxm
IF9wb3N0Q2FjaGVNb2RlbENoYW5nZWROb3RpZmljYXRpb25dOworfQorCistICh2b2lkKV9zZXRC
b29sUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KEJPT0wpdmFsdWUgZm9yS2V5OihOU1N0
cmluZyAqKWtleQoreworICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6dmFsdWUgZm9yS2V5OmtleV07
Cit9CisKKy0gKHZvaWQpX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOih1
aW50MzJfdCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5Cit7CisgICAgW3NlbGYgX3NldElu
dGVnZXJWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAodm9pZClfc2V0RG91YmxlUHJl
ZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KGRvdWJsZSl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5n
ICopa2V5Cit7CisgICAgW3NlbGYgX3NldEZsb2F0VmFsdWU6dmFsdWUgZm9yS2V5OmtleV07Cit9
CisKKy0gKHZvaWQpX3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihOU1N0
cmluZyAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2VsZiBfc2V0U3Ry
aW5nVmFsdWU6dmFsdWUgZm9yS2V5OmtleV07Cit9CisKK0BlbmQKKwogQGltcGxlbWVudGF0aW9u
IFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlUHJlZmVyZW5jZXNDb252ZXJ0ZWRUb1dlYkZlYXR1
cmUpCiAKIC0gKEJPT0wpdXNlckdlc3R1cmVQcm9taXNlUHJvcGFnYXRpb25FbmFibGVkCkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVy
ZW5jZXNQcml2YXRlLmgJKHJldmlzaW9uIDI2ODg3MikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg5
LDEzICs4OSw2IEBAIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGUpCiArICh2
b2lkKV9zZXRJbml0aWFsRGVmYXVsdFRleHRFbmNvZGluZ1RvU3lzdGVtRW5jb2Rpbmc7CiArICh2
b2lkKV9zZXRJQkNyZWF0b3JJRDooTlNTdHJpbmcgKilzdHJpbmc7CiAKLS8vIEZvciBEdW1wUmVu
ZGVyVHJlZSB1c2Ugb25seS4KLSsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3Rp
bmdTZXNzaW9uOwotKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2ll
QWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpY29va2llQWNjZXB0UG9saWN5
OwotKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbjsKLS8vIFVzZWQgdG8gc2V0IHBy
ZWZlcmVuY2Ugc3BlY2lmaWVkIGluIHRoZSB0ZXN0IHZpYSBMYXlvdXRUZXN0Q29udHJvbGxlci5v
dmVycmlkZVByZWZlcmVuY2UoLi4pLgotLSAodm9pZClfc2V0UHJlZmVyZW5jZUZvclRlc3RXaXRo
VmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKLQogKyAodm9p
ZClzZXRXZWJLaXRMaW5rVGltZVZlcnNpb246KGludCl2ZXJzaW9uOwogCiAvLyBGb3IgV2ViVmll
dydzIHVzZSBvbmx5LgpAQCAtMzEwLDYgKzMwMywxOCBAQCBAaW50ZXJmYWNlIFdlYlByZWZlcmVu
Y2VzIChXZWJQcml2YXRlRmVhCiAtICh2b2lkKV9zZXRFbmFibGVkOihCT09MKXZhbHVlIGZvckZl
YXR1cmU6KFdlYkZlYXR1cmUgKilmZWF0dXJlOwogQGVuZAogCitAaW50ZXJmYWNlIFdlYlByZWZl
cmVuY2VzIChXZWJQcml2YXRlVGVzdGluZykKKysgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJU
b05ld1Rlc3RpbmdTZXNzaW9uOworKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNz
aW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpY29va2llQWNj
ZXB0UG9saWN5OworKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbjsKKworLSAodm9p
ZClfcmVzZXRUb0RlZmF1bHRWYWx1ZXNGb3JUZXN0aW5nOworLSAodm9pZClfc2V0Qm9vbFByZWZl
cmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihCT09MKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilr
ZXk7CistICh2b2lkKV9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZToodWlu
dDMyX3QpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZvaWQpX3NldERvdWJsZVBy
ZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihkb3VibGUpdmFsdWUgZm9yS2V5OihOU1N0cmlu
ZyAqKWtleTsKKy0gKHZvaWQpX3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVl
OihOU1N0cmluZyAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXk7CitAZW5kCisKIC8vIEZJ
WE1FOiBJZiB0aGVzZSBhcmUgbm90IHVzZWQgYW55d2hlcmUsIHdlIHNob3VsZCByZW1vdmUgdGhl
bSBhbmQgb25seSB1c2UgV2ViRmVhdHVyZSBtZWNoYW5pc20gZm9yIHRoZSBwcmVmZXJlbmNlLgog
QGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVByZWZlcmVuY2VzQ29udmVydGVk
VG9XZWJGZWF0dXJlKQogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgdXNlckdlc3R1cmVQcm9t
aXNlUHJvcGFnYXRpb25FbmFibGVkOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjY4OTI0KQorKysgVG9vbHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjAtMTAtMjMgIFNhbSBXZWluaWcg
IDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFtUZXN0aW5nXSBDb252ZXJ0IER1bXBSZW5k
ZXJUcmVlIHRvIHVzZSBnZW5lcmF0ZWQgdGVzdCBoZWFkZXIgb3B0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3ODgwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgRnVsbHkgc3VwcG9ydCB1c2Ugb2YgYW55
IFdlYlByZWZlcmVuY2VzKi55YW1sIHByZWZlcmVuY2UgaW4gRHVtcFJlbmRlclRyZWUgKGZvciBt
YWNPUykgYnk6CisgICAgICAgICAgICAtIE1vdmluZyBEdW1wUmVuZGVyVHJlZSdzIFRlc3RPcHRp
b25zIHRvIGJlIGZ1bGx5IGJhY2tlZCBieSBUZXN0RmVhdHVyZXMgbGlrZSBXZWJLaXRUZXN0UnVu
bm5lci4KKyAgICAgICAgICAgIC0gQWRvcHRpbmcgbmV3IFdlYlByZWZlcmVuY2VzIFNQSSBmb3Ig
c2V0dGluZyBhbnkgcHJlZmVyZW5jZSBieSBrZXkgYW5kIHJlc2V0IGFsbCBwcmVmZXJlbmNlcyBr
ZXlzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgor
ICAgICAgICAodG9OUyk6CisgICAgICAgIChyZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50
VmFsdWVzKToKKyAgICAgICAgKHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgorICAgICAgICAoVGVz
dFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0
UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMpOgorCiAyMDIwLTEwLTIyICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTnVsbCBjaGVjayBw
bGF0Zm9ybVN0cmF0ZWdpZXMgd2hlbiBtYWtpbmcgYmxvYiByZWFkIHN0cmVhbSBmb3IgYW4gTlNV
UkxSZXF1ZXN0CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24g
MjY4ODcyKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDYgKzQwLDcgQEAgbGlzdChBUFBFTkQgRHVtcFJlbmRlclRyZWVfUFJJVkFU
RV9JTkNMVQogKQogCiBzZXQoRHVtcFJlbmRlclRyZWVfV0VCX1BSRUZFUkVOQ0VTX1RFTVBMQVRF
UworICAgICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVz
L1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiCiAgICAg
JHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9w
dGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCiApCiAKQEAgLTUzLDEyICs1NCwxMyBAQCBzZXQoRHVt
cFJlbmRlclRyZWVfV0VCX1BSRUZFUkVOQ0VTCiBzZXRfc291cmNlX2ZpbGVzX3Byb3BlcnRpZXMo
JHtEdW1wUmVuZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVN9IFBST1BFUlRJRVMgR0VORVJBVEVEIFRS
VUUpCiAKIGFkZF9jdXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQgJHtEdW1wUmVuZGVyVHJlZV9E
RVJJVkVEX1NPVVJDRVNfRElSfS9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaAorICAgIE9VVFBV
VCAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJh
dGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgJHtEdW1wUmVuZGVyVHJlZV9ERVJJVkVEX1NP
VVJDRVNfRElSfS9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaAogICAgIERFUEVORFMgJHtEdW1w
UmVuZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVTfSAke0R1bXBSZW5kZXJUcmVlX1dF
Ql9QUkVGRVJFTkNFU30gV1RGX0NvcHlQcmVmZXJlbmNlcwotICAgIENPTU1BTkQgJHtSVUJZX0VY
RUNVVEFCTEV9ICR7V1RGX1NDUklQVFNfRElSfS9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiIC0tZnJv
bnRlbmQgV2ViS2l0TGVnYWN5IC0tYmFzZSAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMv
V2ViUHJlZmVyZW5jZXMueWFtbCAtLWRlYnVnICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNl
cy9XZWJQcmVmZXJlbmNlc0RlYnVnLnlhbWwgLS1leHBlcmltZW50YWwgJHtXVEZfU0NSSVBUU19E
SVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgLS1pbnRlcm5h
bCAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55
YW1sIC0tb3V0cHV0RGlyICIke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9IiAt
LXRlbXBsYXRlICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxh
dGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYgorICAgIENPTU1BTkQgJHtSVUJZX0VY
RUNVVEFCTEV9ICR7V1RGX1NDUklQVFNfRElSfS9HZW5lcmF0ZVByZWZlcmVuY2VzLnJiIC0tZnJv
bnRlbmQgV2ViS2l0TGVnYWN5IC0tYmFzZSAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMv
V2ViUHJlZmVyZW5jZXMueWFtbCAtLWRlYnVnICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNl
cy9XZWJQcmVmZXJlbmNlc0RlYnVnLnlhbWwgLS1leHBlcmltZW50YWwgJHtXVEZfU0NSSVBUU19E
SVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVudGFsLnlhbWwgLS1pbnRlcm5h
bCAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55
YW1sIC0tb3V0cHV0RGlyICIke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9IiAt
LXRlbXBsYXRlICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxh
dGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiIC0t
dGVtcGxhdGUgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0
ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCiAgICAgVkVSQkFUSU0pCiAKIGxpc3Qo
QVBQRU5EIER1bXBSZW5kZXJUcmVlX1NPVVJDRVMKKyAgICAke0R1bXBSZW5kZXJUcmVlX0RFUklW
RURfU09VUkNFU19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGlu
Zy5jcHAKICAgICAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9L1Rlc3RPcHRp
b25zR2VuZXJhdGVkS2V5cy5oCiApCiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRl
clRyZWUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjY4ODcyKQor
KysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAko
d29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDcgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9s
b2NhbC9pbmNsdWRlLwogJChQUk9KRUNUX0RJUikvLi4vVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlw
dENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbAogJChQUk9KRUNUX0RJUikv
QmluZGluZ3MvQ29kZUdlbmVyYXRvckR1bXBSZW5kZXJUcmVlLnBtCiAkKFBST0pFQ1RfRElSKS9E
ZXJpdmVkU291cmNlcy5tYWtlCiskKFBST0pFQ1RfRElSKS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVt
cGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJi
CiAkKFBST0pFQ1RfRElSKS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25z
R2VuZXJhdGVkS2V5cy5oLmVyYgogJChQUk9KRUNUX0RJUikvU2NyaXB0cy9nZW5lcmF0ZS1kZXJp
dmVkLXNvdXJjZXMuc2gKICQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9Db2RlR2VuZXJh
dG9yLnBtCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjY4ODcyKQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHdvcmtpbmcgY29weSkK
QEAgLTEsNCArMSw1IEBACiAjIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgdGhlIGdlbmVyYXRl
LXhjZmlsZWxpc3RzIHNjcmlwdC4KICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9EdW1wUmVuZGVyVHJlZS9KU1VJU2NyaXB0Q29udHJvbGxlci5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9EdW1wUmVuZGVyVHJlZS9KU1VJU2NyaXB0Q29udHJvbGxl
ci5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUv
VGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zR2Vu
ZXJhdGVkS2V5cy5oCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy5t
YWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UJKHJldmlzaW9uIDI2ODg3MikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDcgQEAgV0VCX1BSRUZFUkVOQ0VT
ID0gXAogIwogCiBXRUJfUFJFRkVSRU5DRVNfR0VORVJBVEVEX0ZJTEVTID0gXAorICAgIFRlc3RP
cHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgXAogICAgIFRlc3RPcHRp
b25zR2VuZXJhdGVkS2V5cy5oIFwKICMKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVt
cFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyNjg4NzIpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJl
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiArMTA5
LDcgQEAKIAkJNURCOUFDOUUwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktpdFdlaWdodFdhdGNoZXI3
MDAudHRmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzNzVGMDk3NzBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjcwMC50
dGYgKi87IH07CiAJCTVEQjlBQzlGMEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRXYXRj
aGVyODAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzc1RjA5NzgwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXI4
MDAudHRmICovOyB9OwogCQk1REI5QUNBMDBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2VpZ2h0
V2F0Y2hlcjkwMC50dGYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDM3NUYwOTc5MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRj
aGVyOTAwLnR0ZiAqLzsgfTsKKwkJN0M5ODkzREYyNTQzM0Y4RTAwMzU0RUJDIC8qIFRlc3RPcHRp
b25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzk4OTNERTI1NDMzQzg3MDAzNTRFQkMgLyog
VGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAqLzsgfTsKIAkJ
N0NGRjlCQkYyNTMzQkIyNDAwMDgwMDlGIC8qIFRlc3RGZWF0dXJlcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0ZGOUJCRTI1MzNCQjI0MDAwODAw
OUYgLyogVGVzdEZlYXR1cmVzLmNwcCAqLzsgfTsKIAkJN0NGRjlCQzIyNTMzQkMxNjAwMDgwMDlG
IC8qIFRlc3RDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDRkY5QkMxMjUzM0JDMTYwMDA4MDA5RiAvKiBUZXN0Q29tbWFuZC5jcHAgKi87
IH07CiAJCTgwMDQ1QUVFMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9uSGFuZGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgwMDQ1QUVDMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
SGFuZGxlci5tbSAqLzsgfTsKQEAgLTMzMyw3ICszMzQsOCBAQAogCQk3QzQ0Njk3RjI1Mzc3QTAy
MDAyNDI5MEEgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFRlc3RPcHRp
b25zR2VuZXJhdGVkS2V5cy5oLmVyYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M0
NDY5ODAyNTM3N0EwMjAwMjQyOTBBIC8qIGNoZWNrLXhjZmlsZWxpc3RzLnNoICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQuc2g7IHBh
dGggPSAiY2hlY2steGNmaWxlbGlzdHMuc2giOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QzQ0Njk4MTI1Mzc3QTAyMDAyNDI5MEEgLyogZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzLnNo
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5z
Y3JpcHQuc2g7IHBhdGggPSAiZ2VuZXJhdGUtZGVyaXZlZC1zb3VyY2VzLnNoIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M0NDY5ODUyNTM3N0U1MjAwMjQyOTBBIC8qIFRlc3RPcHRp
b25zR2VuZXJhdGVkS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXN0T3B0aW9uc0dlbmVyYXRlZEtl
eXMuaDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNHZW5l
cmF0ZWRLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Qzk4OTNERTI1NDMzQzg3MDAzNTRFQkMgLyog
VGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQkJDMzIyMURERkNGOUEwMDc4NkI5RCAv
KiBUZXN0T3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0T3B0
aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0ZGOUJCRDI1MzNCQjI0MDAw
ODAwOUYgLyogVGVzdEZlYXR1cmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RGZWF0dXJlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0ZGOUJCRTI1MzNCQjI0MDAwODAwOUYgLyog
VGVzdEZlYXR1cmVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlc3RGZWF0dXJlcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NzcsNiArNzc5LDcgQEAKIAkJN0M0NDY5ODIy
NTM3N0MzNDAwMjQyOTBBIC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJN0M5ODkzREUyNTQzM0M4NzAwMzU0RUJDIC8qIFRl
c3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgKi8sCiAJCQkJN0M0
NDY5ODUyNTM3N0U1MjAwMjQyOTBBIC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oICovLAog
CQkJKTsKIAkJCW5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKQEAgLTEyNjAsNiArMTI2Myw3IEBA
CiAJCQkJQThENzlDRUIwRkMyOEIyQzAwNEFDOEZFIC8qIER1bXBSZW5kZXJUcmVlRmlsZURyYWdn
aW5nU291cmNlLm0gaW4gU291cmNlcyAqLywKIAkJCQlBOEI5MUFEQTBDRjNCMzJGMDA4RjkxRkYg
LyogRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThCOTFB
REMwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBSZW5kZXJUcmVlV2luZG93Lm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJN0M5ODkzREYyNTQzM0Y4RTAwMzU0RUJDIC8qIFRlc3RPcHRpb25zR2VuZXJhdGVk
V2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI2MjBD
OUIwOEMyMDAxMTQzNjkgLyogRWRpdGluZ0RlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkNBMThCNzAwQzlCMDhEQjAwMTE0MzY5IC8qIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0gaW4g
U291cmNlcyAqLywKIAkJCQlCQ0ExOEI2NDBDOUIwOEMyMDAxMTQzNjkgLyogRnJhbWVMb2FkRGVs
ZWdhdGUubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Njcmlw
dHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lL
ZXlNYXBwaW5nLmNwcC5lcmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvU2Ny
aXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2Fj
eUtleU1hcHBpbmcuY3BwLmVyYgkobm9uZXhpc3RlbnQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJl
ZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0
TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAK
Ky8qCisgKiA8JT0gQHdhcm5pbmcgJT4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVGVzdE9wdGlvbnMuaCIKKworbmFtZXNwYWNlIFdUUiB7CisKK3N0ZDo6c3Ry
aW5nIFRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVuY2VLZXkoY29uc3Qgc3RkOjpz
dHJpbmcmIHdlYlByZWZlcmVuY2VzS2V5KQoreworICAgIHN0YXRpYyBzdGQ6OnVub3JkZXJlZF9t
YXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBub25TdGFuZGFyZEtleXMgPSB7Cis8JS0gZm9y
IEBwcmVmIGluIEBleHBvc2VkUHJlZmVyZW5jZXMuc2VsZWN0IHsgfHB8IHAub3B0c1sid2ViS2l0
TGVnYWN5UHJlZmVyZW5jZUtleSJdIH0gZG8gLSU+CisgICAgICAgIHsgIjwlPSBAcHJlZi5uYW1l
ICU+IiwgIjwlPSBAcHJlZi5wcmVmZXJlbmNlS2V5ICU+IiB9LCBcCis8JS0gZW5kIC0lPgorICAg
IH07CisKKyAgICBhdXRvIGl0ID0gbm9uU3RhbmRhcmRLZXlzLmZpbmQod2ViUHJlZmVyZW5jZXNL
ZXkpOworICAgIGlmIChpdCAhPSBub25TdGFuZGFyZEtleXMuZW5kKCkpCisgICAgICAgIHJldHVy
biBpdC0+c2Vjb25kOworCisgICAgcmV0dXJuICJXZWJLaXQiICsgd2ViUHJlZmVyZW5jZXNLZXk7
Cit9CisKK30KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUu
bW0JKHJldmlzaW9uIDI2ODg3MikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMwLDYgKzEzMCwxMSBAQCBleHRlcm4gIkMi
IHsKICNpbXBvcnQgPG1hY2gtby9nZXRzZWN0Lmg+CiB9CiAKK3N0YXRpYyBSZXRhaW5QdHI8TlNT
dHJpbmc+IHRvTlMoY29uc3Qgc3RkOjpzdHJpbmcmIHN0cmluZykKK3sKKyAgICByZXR1cm4gYWRv
cHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aFVURjhTdHJpbmc6c3RyaW5nLmNfc3RyKCld
KTsKK30KKwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogQGludGVyZmFjZSBEdW1wUmVuZGVy
VHJlZUFwcGxpY2F0aW9uIDogTlNBcHBsaWNhdGlvbgogQGVuZApAQCAtODQ3LDYgKzg1Miw4IEBA
IHN0YXRpYyB2b2lkIGVuYWJsZUV4cGVyaW1lbnRhbEZlYXR1cmVzKFcKIC8vIENhbGxlZCBiZWZv
cmUgZWFjaCB0ZXN0Lgogc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVu
dFZhbHVlcyhXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMpCiB7CisgICAgLy8gW3ByZWZlcmVu
Y2VzIF9yZXNldFRvRGVmYXVsdFZhbHVlc0ZvclRlc3RpbmddOworCiAgICAgZW5hYmxlRXhwZXJp
bWVudGFsRmVhdHVyZXMocHJlZmVyZW5jZXMpOwogCiAgICAgW3ByZWZlcmVuY2VzIHNldE5lZWRz
U3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrOiBOT107CkBAIC05NjksNDEgKzk3NiwyMSBA
QCBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0CiAgICAgW1dlYlByZWZl
cmVuY2VzIF9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6
TlNIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW5dOwogfQog
Ci1zdGF0aWMgYm9vbCBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZShzdGQ6OnN0cmluZyBr
ZXksIGJvb2wgZGVmYXVsdFZhbHVlLCBjb25zdCBXVFI6OlRlc3RPcHRpb25zJiBvcHRpb25zKQot
ewotICAgIGF1dG8gaXQgPSBvcHRpb25zLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKS5maW5k
KGtleSk7Ci0gICAgaWYgKGl0ICE9IG9wdGlvbnMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcygp
LmVuZCgpKQotICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKLSAgICByZXR1cm4gZGVmYXVsdFZh
bHVlOwotfQotCiBzdGF0aWMgdm9pZCBzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKFdl
YlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcywgY29uc3QgV1RSOjpUZXN0T3B0aW9ucyYgb3B0aW9u
cykKIHsKICAgICBwcmVmZXJlbmNlcy5wcml2YXRlQnJvd3NpbmdFbmFibGVkID0gb3B0aW9ucy51
c2VFcGhlbWVyYWxTZXNzaW9uKCk7CiAKLSAgICBwcmVmZXJlbmNlcy5hdHRhY2htZW50RWxlbWVu
dEVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQXR0YWNobWVudEVsZW1l
bnRFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmFjY2VsZXJhdGVk
RHJhd2luZ0VuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQWNjZWxlcmF0
ZWREcmF3aW5nRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5tZW51
SXRlbUVsZW1lbnRFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIk1lbnVJ
dGVtRWxlbWVudEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMua2V5
Z2VuRWxlbWVudEVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiS2V5Z2Vu
RWxlbWVudEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMubW9kZXJu
TWVkaWFDb250cm9sc0VuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiTW9k
ZXJuTWVkaWFDb250cm9sc0VuYWJsZWQiLCB0cnVlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNl
cy5pbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFs
dWUoIkluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJl
ZmVyZW5jZXMuYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMg
PSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQWxsb3dDcm9zc09yaWdpblN1YnJlc291
cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5j
ZXMuY29sb3JGaWx0ZXJFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkNv
bG9yRmlsdGVyRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5zZWxl
Y3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVh
dHVyZVZhbHVlKCJTZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzRW5hYmxlZCIsIHRydWUs
IG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLndlYkdQVUVuYWJsZWQgPSBib29sV2ViUHJlZmVy
ZW5jZUZlYXR1cmVWYWx1ZSgiV2ViR1BVRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBw
cmVmZXJlbmNlcy5DU1NMb2dpY2FsRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZh
bHVlKCJDU1NMb2dpY2FsRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNl
cy5saW5lSGVpZ2h0VW5pdHNFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUo
IkxpbmVIZWlnaHRVbml0c0VuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5j
ZXMuYWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZh
bHVlKCJBZENsaWNrQXR0cmlidXRpb25FbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHBy
ZWZlcmVuY2VzLnJlc2l6ZU9ic2VydmVyRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVy
ZVZhbHVlKCJSZXNpemVPYnNlcnZlckVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJl
ZmVyZW5jZXMuQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJl
bmNlRmVhdHVyZVZhbHVlKCJDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkIiwgZmFsc2Us
IG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmNvcmVNYXRoTUxFbmFibGVkID0gYm9vbFdlYlBy
ZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkNvcmVNYXRoTUxFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMp
OwotICAgIHByZWZlcmVuY2VzLnJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkID0gYm9vbFdlYlBy
ZWZlcmVuY2VGZWF0dXJlVmFsdWUoIlJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkIiwgZmFsc2Us
IG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxlZCA9IGJv
b2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJBc3luY0NsaXBib2FyZEFQSUVuYWJsZWQiLCBm
YWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMudXNlc1BhZ2VDYWNoZSA9IGJvb2xXZWJQ
cmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJVc2VzQmFja0ZvcndhcmRDYWNoZSIsIGZhbHNlLCBvcHRp
b25zKTsKLSAgICBwcmVmZXJlbmNlcy5sYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9u
RW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJMYXlvdXRGb3JtYXR0aW5n
Q29udGV4dEludGVncmF0aW9uRW5hYmxlZCIsIHRydWUsIG9wdGlvbnMpOwotICAgIHByZWZlcmVu
Y2VzLmFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkID0gYm9vbFdlYlBy
ZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRF
bmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmFsbG93VG9wTmF2aWdh
dGlvblRvRGF0YVVSTHMgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQWxsb3dUb3BO
YXZpZ2F0aW9uVG9EYXRhVVJMcyIsIHRydWUsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmNv
bnRhY3RQaWNrZXJBUElFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkNv
bnRhY3RQaWNrZXJBUElFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOworICAgIGZvciAoY29uc3Qg
YXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkp
CisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZh
bHVlOnZhbHVlIGZvcktleTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJl
ZmVyZW5jZUtleShrZXkpKS5nZXQoKV07CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZh
bHVlXSA6IG9wdGlvbnMuZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAgIFtw
cmVmZXJlbmNlcyBfc2V0RG91YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dmFsdWUg
Zm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5
KGtleSkpLmdldCgpXTsKKworICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0
aW9ucy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAgICAgW3ByZWZlcmVuY2Vz
IF9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZSBmb3JLZXk6dG9O
UyhXVFI6OlRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVuY2VLZXkoa2V5KSkuZ2V0
KCldOworCisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLnN0cmlu
Z1dlYlByZWZlcmVuY2VGZWF0dXJlcygpKQorICAgICAgICBbcHJlZmVyZW5jZXMgX3NldFN0cmlu
Z1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnRvTlModmFsdWUpLmdldCgpIGZvcktleTp0
b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShrZXkpKS5n
ZXQoKV07CiB9CiAKIC8vIENhbGxlZCBvbmNlIG9uIER1bXBSZW5kZXJUcmVlIHN0YXJ0dXAuCkBA
IC0xODc4LDYgKzE4NjUsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRT
dGF0CiAKICAgICByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKHdlYlZpZXcu
cHJlZmVyZW5jZXMpOwogICAgIHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMod2ViVmll
dy5wcmVmZXJlbmNlcywgb3B0aW9ucyk7CisKICNpZiBQTEFURk9STShNQUMpCiAgICAgW3dlYlZp
ZXcgc2V0V2FudHNMYXllcjpvcHRpb25zLmxheWVyQmFja2VkV2ViVmlldygpXTsKICNlbmRpZgpJ
bmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0JKHJldmlzaW9u
IDI2ODg3MikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC02MDksNyArNjA5LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpvdmVycmlk
ZVByZWZlcmVuY2UoSlNTdAogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdmFsdWVDRiA9IGFk
b3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdmFsdWUpKTsK
ICAgICBOU1N0cmluZyAqdmFsdWVOUyA9IChfX2JyaWRnZSBOU1N0cmluZyAqKXZhbHVlQ0YuZ2V0
KCk7CiAKLSAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIF9zZXRQcmVmZXJl
bmNlRm9yVGVzdFdpdGhWYWx1ZTp2YWx1ZU5TIGZvcktleTprZXlOU107CisgICAgW1tbbWFpbkZy
YW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdX
aXRoVmFsdWU6dmFsdWVOUyBmb3JLZXk6a2V5TlNdOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnJl
bW92ZUFsbFZpc2l0ZWRMaW5rcygpCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAkocmV2aXNpb24gMjY4ODcyKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyMSwxNyArOTIxLDE2IEBA
IHZvaWQgVGVzdENvbnRyb2xsZXI6OnJlc2V0UHJlZmVyZW5jZXNUb0MKICAgICBwbGF0Zm9ybVJl
c2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKTsKIAogICAgIGZvciAoY29uc3QgYXV0
byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCi0g
ICAgICAgIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXkocHJlZmVyZW5jZXMsIHZhbHVl
LCB0b1dLKGtleSkuZ2V0KCkpOworICAgICAgICBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9y
S2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CiAKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuZG91YmxlV2ViUHJlZmVy
ZW5jZUZlYXR1cmVzKCkpCi0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktl
eShwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CisgICAgICAgIFdLUHJlZmVy
ZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVyZW5jZXMsIHZhbHVlLCB0
b1dLKGtleSkuZ2V0KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBv
cHRpb25zLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAgICAgICBXS1ByZWZlcmVu
Y2VzU2V0VUludDMyVmFsdWVGb3JLZXkocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0
KCkpOworICAgICAgICBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXlGb3JUZXN0aW5n
KHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKIAogICAgIGZvciAoY29uc3Qg
YXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5zdHJpbmdXZWJQcmVmZXJlbmNlRmVhdHVyZXMo
KSkKLSAgICAgICAgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5KHByZWZlcmVuY2Vz
LCB0b1dLKHZhbHVlKS5nZXQoKSwgdG9XSyhrZXkpLmdldCgpKTsKLQorICAgICAgICBXS1ByZWZl
cmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXlGb3JUZXN0aW5nKHByZWZlcmVuY2VzLCB0b1dLKHZh
bHVlKS5nZXQoKSwgdG9XSyhrZXkpLmdldCgpKTsKIH0KIAogYm9vbCBUZXN0Q29udHJvbGxlcjo6
cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucywg
UmVzZXRTdGFnZSByZXNldFN0YWdlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412243</attachid>
            <date>2020-10-24 11:31:06 -0700</date>
            <delta_ts>2020-10-24 11:56:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201024113105.patch</filename>
            <type>text/plain</type>
            <size>33192</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg5NTEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTIwICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVu
ZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlbmFtZSBXS1ByZWZlcmVuY2VzU2V0
KlZhbHVlRm9yS2V5IFNQSSB0byBXS1ByZWZlcmVuY2VzU2V0KlZhbHVlRm9yS2V5Rm9yVGVzdGlu
ZworICAgICAgICB0byBtYWtlIGl0IGNsZWFyIHdoYXQgdGhleSBhcmUgdXNlZCBmb3IgYW5kIGZv
ciBjb25zaXN0ZW5jeSB3aXRoIFdlYktpdExlZ2FjeS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFs
dWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1
ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVl
Rm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVG
b3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JL
ZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5
KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleSk6
IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0
ZS5oOgorCiAyMDIwLTEwLTIyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIElQQyB0ZXN0aW5nIEFQSSBzaG91bGQgZXhwb3NlIEFycmF5QnVmZmVyIGZvciBhbiB1
bmtub3duIGRlY29kZWQgYXJndW1lbnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiAyNjg5NTEpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzgsMjIgKzc4LDIyIEBAIHZvaWQgV0tQcmVmZXJlbmNlc1NldEludGVybmFsRGVidWdGZWF0
dXIKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRJbnRlcm5hbERlYnVnRmVhdHVyZUVu
YWJsZWRGb3JLZXkodG9XVEZTdHJpbmcoaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVLZXkpLCB2YWx1ZSk7
CiB9CiAKLXZvaWQgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleShXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdL
UHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXNSZWYsIGJvb2wgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKIHsKICAgICB0b0lt
cGwocHJlZmVyZW5jZXNSZWYpLT5zZXRCb29sVmFsdWVGb3JLZXkodG9XVEZTdHJpbmcoa2V5KSwg
dmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleShXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdLU3RyaW5nUmVmIGtl
eSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdLU3RyaW5nUmVmIGtl
eSkKIHsKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRCb29sVmFsdWVGb3JLZXkodG9X
VEZTdHJpbmcoa2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5jZXNTZXRVSW50MzJW
YWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1aW50MzJfdCB2YWx1
ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JL
ZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIHVpbnQzMl90IHZh
bHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0
VUludDMyVmFsdWVGb3JLZXkodG9XVEZTdHJpbmcoa2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdL
UHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVu
Y2VzUmVmLCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZl
cmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJl
ZmVyZW5jZXNSZWYsIFdLU3RyaW5nUmVmIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAg
dG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0U3RyaW5nVmFsdWVGb3JLZXkodG9XVEZTdHJpbmco
a2V5KSwgdG9XVEZTdHJpbmcodmFsdWUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaAkocmV2aXNp
b24gMjY4OTUxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNl
c1JlZlByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDEwIEBAIFdLX0VYUE9S
VCB2b2lkIFdLUHJlZmVyZW5jZXNSZXNldEFsbEludGUKIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVy
ZW5jZXNTZXRJbnRlcm5hbERlYnVnRmVhdHVyZUZvcktleShXS1ByZWZlcmVuY2VzUmVmLCBib29s
LCBXS1N0cmluZ1JlZik7CiAKIC8vIFRoZSBmb2xsb3dpbmcgZ2VuZXJpYyBzZXR0ZXIgZnVuY3Rp
b25zIGFyZSBvbmx5IGludGVuZGVkIGZvciB1c2UgYnkgdGVzdGluZyBpbmZyYXN0cnVjdHVyZS4K
LVdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXkoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKLVdL
X0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleShXS1ByZWZlcmVu
Y2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7Ci1X
S19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXkoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7
Ci1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkoV0tQcmVm
ZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFsdWUsIFdLU3RyaW5nUmVm
IGtleSk7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9y
VGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZhbHVlLCBXS1N0
cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVl
Rm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUg
dmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0
VUludDMyVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIHVpbnQzMl90IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQgV0tQ
cmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVm
IHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKIAog
Ly8gRm9yIFRlc3QgUnVubmVyIFVzZSBvbmx5LgogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNl
c1Jlc2V0VGVzdFJ1bm5lck92ZXJyaWRlcyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVm
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODk1MSkKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDIwLTEwLTIwICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVuZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVk
IHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgIEV4cG9zZSBhIHNldCBvZiBzZXR0ZXJzIHRvIGZvciBEdW1wUmVuZGVyVHJlZSB0
byB1c2Ugd2hlbiBzZXR0aW5nIHByZWZlcmVuY2VzCisgICAgICAgIGJ5IHN0cmluZy4KKworICAg
ICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVu
Y2VzIF9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbl0pOgorICAgICAgICAo
K1tXZWJQcmVmZXJlbmNlcyBfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNj
ZXB0UG9saWN5Ol0pOgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBfY2xlYXJOZXR3b3JrTG9h
ZGVyU2Vzc2lvbl0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0Qm9vbFByZWZlcmVu
Y2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5j
ZXMgX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleTpdKToKKyAg
ICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgX3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0
aFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgX3NldFN0cmluZ1By
ZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJl
ZmVyZW5jZXMgX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZhbHVlOmZvcktleTpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oOgorCiAyMDIwLTEw
LTIxICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1Mg
V0sxXSBwcm92aWRlIGEgd2F5IGZvciBBcHBsZS1pbnRlcm5hbCBjbGllbnRzIHRvIGRpc2FibGUg
bGluayBwcmV2aWV3CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZXMubW0JKHJldmlzaW9uIDI2ODk1MSkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEw
MjUsNyArMTAyNSw2IEBAIC0gKFdlYkNhY2hlTW9kZWwpY2FjaGVNb2RlbAogICAgIHJldHVybiAo
V2ViQ2FjaGVNb2RlbClbc2VsZiBfaW50ZWdlclZhbHVlRm9yS2V5OldlYktpdENhY2hlTW9kZWxQ
cmVmZXJlbmNlS2V5XTsKIH0KIAotCiAtICh2b2lkKXNldFN1cHByZXNzZXNJbmNyZW1lbnRhbFJl
bmRlcmluZzooQk9PTClzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmcKIHsKICAgICBbc2Vs
ZiBfc2V0Qm9vbFZhbHVlOnN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZyBmb3JLZXk6V2Vi
S2l0U3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nS2V5XTsKQEAgLTE2NjAsMjQgKzE2NTks
MTYgQEAgKyAodm9pZClfc2V0SUJDcmVhdG9ySUQ6KE5TU3RyaW5nICopc3RyaQogICAgIFtvbGQg
cmVsZWFzZV07CiB9CiAKLSsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdT
ZXNzaW9uCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBXZWJUaHJlYWRMb2NrKCk7
Ci0jZW5kaWYKLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGlu
Z1Nlc3Npb24oKTsKLX0KLQotKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbgorLSAo
dm9pZClkaWRSZW1vdmVGcm9tV2ViVmlldwogewotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1h
cDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZGVsZXRlQWxsQ29va2llcygpOworICAgIEFTU0VS
VChfcHJpdmF0ZS0+bnVtV2ViVmlld3MpOworICAgIGlmICgtLV9wcml2YXRlLT5udW1XZWJWaWV3
cyA9PSAwKQorICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBv
c3ROb3RpZmljYXRpb25OYW1lOldlYlByZWZlcmVuY2VzUmVtb3ZlZE5vdGlmaWNhdGlvbiBvYmpl
Y3Q6c2VsZiB1c2VySW5mbzpuaWxdOwogfQogCi0rICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xv
YWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSlw
b2xpY3kKKy0gKHZvaWQpd2lsbEFkZFRvV2ViVmlldwogewotICAgIFJldGFpblB0cjxDRkhUVFBD
b29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFw
OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCk7Ci0gICAgQVNTRVJUKGNv
b2tpZVN0b3JhZ2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6
OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90IGNhbGxlZCBiZWZvcmVoYW5kLgot
ICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFn
ZS5nZXQoKSwgcG9saWN5KTsKKyAgICArK19wcml2YXRlLT5udW1XZWJWaWV3czsKIH0KIAogLSAo
Qk9PTClpc0RPTVBhc3RlQWxsb3dlZApAQCAtMTk1MSwyNiArMTk0Miw2IEBAIC0gKHZvaWQpc2V0
VXNlUHJlSFRNTDVQYXJzZXJRdWlya3M6KEJPT0wKICAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmZs
YWcgZm9yS2V5OldlYktpdFVzZVByZUhUTUw1UGFyc2VyUXVpcmtzS2V5XTsKIH0KIAotLSAodm9p
ZClkaWRSZW1vdmVGcm9tV2ViVmlldwotewotICAgIEFTU0VSVChfcHJpdmF0ZS0+bnVtV2ViVmll
d3MpOwotICAgIGlmICgtLV9wcml2YXRlLT5udW1XZWJWaWV3cyA9PSAwKQotICAgICAgICBbW05T
Tm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdCi0gICAgICAgICAgICBwb3N0Tm90aWZp
Y2F0aW9uTmFtZTpXZWJQcmVmZXJlbmNlc1JlbW92ZWROb3RpZmljYXRpb24KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgb2JqZWN0OnNlbGYKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJJ
bmZvOm5pbF07Ci19Ci0KLS0gKHZvaWQpd2lsbEFkZFRvV2ViVmlldwotewotICAgICsrX3ByaXZh
dGUtPm51bVdlYlZpZXdzOwotfQotCi0tICh2b2lkKV9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhW
YWx1ZTooTlNTdHJpbmcgKil2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5Ci17Ci0gICAgW3Nl
bGYgX3NldFN0cmluZ1ZhbHVlOnZhbHVlIGZvcktleTprZXldOwotfQotCiAtICh2b2lkKXNldEZ1
bGxTY3JlZW5FbmFibGVkOihCT09MKWZsYWcKIHsKICAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmZs
YWcgZm9yS2V5OldlYktpdEZ1bGxTY3JlZW5FbmFibGVkUHJlZmVyZW5jZUtleV07CkBAIC0zMDEz
LDYgKzI5ODQsNjggQEAgLSAodm9pZClfc2V0RW5hYmxlZDooQk9PTCl2YWx1ZSBmb3JGZWF0dQog
CiBAZW5kCiAKK0BpbXBsZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVRlc3Rp
bmcpCisKKysgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uCit7
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBXZWJUaHJlYWRMb2NrKCk7CisjZW5kaWYK
KyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24o
KTsKK30KKworKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNj
ZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9saWN5Cit7CisgICAgYXV0byBj
b29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKS5jb29raWVTdG9yYWdlKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoY29va2llU3RvcmFn
ZSk7IC8vIFdpbGwgZmFpbCB3aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9O
ZXdUZXN0aW5nU2Vzc2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhhbmQuCisgICAgQ0ZIVFRQ
Q29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBw
b2xpY3kpOworfQorCisrICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uCit7CisgICAg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5kZWxldGVB
bGxDb29raWVzKCk7Cit9CisKKy0gKHZvaWQpX3Jlc2V0VG9EZWZhdWx0VmFsdWVzRm9yVGVzdGlu
ZworeworICAgIFdlYkNhY2hlTW9kZWwgb2xkQ2FjaGVNb2RlbCA9IHNlbGYuY2FjaGVNb2RlbDsK
KworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgZGlzcGF0Y2hfYmFycmllcl9zeW5jKF9w
cml2YXRlLT5yZWFkV3JpdGVRdWV1ZSwgXnsKKyAgICAgICAgX3ByaXZhdGUtPnZhbHVlcyA9IGFk
b3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgfSk7CisjZWxz
ZQorICAgIF9wcml2YXRlLT52YWx1ZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBh
bGxvY10gaW5pdF0pOworI2VuZGlmCisKKyAgICBbc2VsZiBfdXBkYXRlUHJpdmF0ZUJyb3dzaW5n
U3RhdGVUbzpbc2VsZiBwcml2YXRlQnJvd3NpbmdFbmFibGVkXV07CisgICAgW3NlbGYgX3Bvc3RQ
cmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb25dOworICAgIGlmIChvbGRDYWNoZU1vZGVsICE9
IFtzZWxmIGNhY2hlTW9kZWxdKQorICAgICAgICBbc2VsZiBfcG9zdENhY2hlTW9kZWxDaGFuZ2Vk
Tm90aWZpY2F0aW9uXTsKK30KKworLSAodm9pZClfc2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0aW5n
V2l0aFZhbHVlOihCT09MKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2Vs
ZiBfc2V0Qm9vbFZhbHVlOnZhbHVlIGZvcktleTprZXldOworfQorCistICh2b2lkKV9zZXRVSW50
MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZToodWludDMyX3QpdmFsdWUgZm9yS2V5OihO
U1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9zZXRJbnRlZ2VyVmFsdWU6dmFsdWUgZm9yS2V5
OmtleV07Cit9CisKKy0gKHZvaWQpX3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZh
bHVlOihkb3VibGUpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9z
ZXRGbG9hdFZhbHVlOnZhbHVlIGZvcktleTprZXldOworfQorCistICh2b2lkKV9zZXRTdHJpbmdQ
cmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZSBmb3JLZXk6KE5T
U3RyaW5nICopa2V5Cit7CisgICAgW3NlbGYgX3NldFN0cmluZ1ZhbHVlOnZhbHVlIGZvcktleTpr
ZXldOworfQorCitAZW5kCisKIEBpbXBsZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNlcyAoV2ViUHJp
dmF0ZVByZWZlcmVuY2VzQ29udmVydGVkVG9XZWJGZWF0dXJlKQogCiAtIChCT09MKXVzZXJHZXN0
dXJlUHJvbWlzZVByb3BhZ2F0aW9uRW5hYmxlZApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCShyZXZpc2lv
biAyNjg5NTEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVu
Y2VzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSwxMyArODksNiBAQCBAaW50ZXJmYWNl
IFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlKQogKyAodm9pZClfc2V0SW5pdGlhbERlZmF1bHRU
ZXh0RW5jb2RpbmdUb1N5c3RlbUVuY29kaW5nOwogKyAodm9pZClfc2V0SUJDcmVhdG9ySUQ6KE5T
U3RyaW5nICopc3RyaW5nOwogCi0vLyBGb3IgRHVtcFJlbmRlclRyZWUgdXNlIG9ubHkuCi0rICh2
b2lkKV9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbjsKLSsgKHZvaWQpX3Nl
dEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29v
a2llQWNjZXB0UG9saWN5KWNvb2tpZUFjY2VwdFBvbGljeTsKLSsgKHZvaWQpX2NsZWFyTmV0d29y
a0xvYWRlclNlc3Npb247Ci0vLyBVc2VkIHRvIHNldCBwcmVmZXJlbmNlIHNwZWNpZmllZCBpbiB0
aGUgdGVzdCB2aWEgTGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKC4uKS4K
LS0gKHZvaWQpX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZhbHVlOihOU1N0cmluZyAqKXZhbHVl
IGZvcktleTooTlNTdHJpbmcgKilrZXk7Ci0KICsgKHZvaWQpc2V0V2ViS2l0TGlua1RpbWVWZXJz
aW9uOihpbnQpdmVyc2lvbjsKIAogLy8gRm9yIFdlYlZpZXcncyB1c2Ugb25seS4KQEAgLTEwNyw2
ICsxMDAsOSBAQCBAaW50ZXJmYWNlIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlKQogLSAodm9p
ZClfc3luY2hyb25pemVXZWJTdG9yYWdlUG9saWN5V2l0aENvb2tpZVBvbGljeTsKICNlbmRpZgog
CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBhdXRvbWF0aWNhbGx5RGV0ZWN0c0NhY2hlTW9k
ZWw7CisKKwogQHByb3BlcnR5IChub25hdG9taWMsIGdldHRlcj1pc0ROU1ByZWZldGNoaW5nRW5h
YmxlZCkgQk9PTCBETlNQcmVmZXRjaGluZ0VuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYykg
Qk9PTCBkZXZlbG9wZXJFeHRyYXNFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMpIFdlYktp
dEphdmFTY3JpcHRSdW50aW1lRmxhZ3MgamF2YVNjcmlwdFJ1bnRpbWVGbGFnczsKQEAgLTExNCw3
ICsxMTAsNiBAQCBAaW50ZXJmYWNlIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlKQogQHByb3Bl
cnR5IChub25hdG9taWMpIEJPT0wgYXBwbGljYXRpb25DaHJvbWVNb2RlRW5hYmxlZDsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljKSBCT09MIHVzZXNFbmNvZGluZ0RldGVjdG9yOwogQHByb3BlcnR5IChu
b25hdG9taWMpIEJPT0wgc2hyaW5rc1N0YW5kYWxvbmVJbWFnZXNUb0ZpdDsKLUBwcm9wZXJ0eSAo
bm9uYXRvbWljKSBCT09MIGF1dG9tYXRpY2FsbHlEZXRlY3RzQ2FjaGVNb2RlbDsKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCBnZXR0ZXI9ZG9tVGltZXJzVGhyb3R0bGluZ0VuYWJsZWQpIEJPT0wgRE9N
VGltZXJzVGhyb3R0bGluZ0VuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCB3ZWJB
cmNoaXZlRGVidWdNb2RlRW5hYmxlZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGxvY2Fs
RmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQ7CkBAIC0zMTAsNiArMzA1LDE4IEBAIEBpbnRlcmZh
Y2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGVGZWEKIC0gKHZvaWQpX3NldEVuYWJsZWQ6KEJP
T0wpdmFsdWUgZm9yRmVhdHVyZTooV2ViRmVhdHVyZSAqKWZlYXR1cmU7CiBAZW5kCiAKK0BpbnRl
cmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGVUZXN0aW5nKQorKyAodm9pZClfc3dpdGNo
TmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb247CisrICh2b2lkKV9zZXRDdXJyZW50TmV0
d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBv
bGljeSljb29raWVBY2NlcHRQb2xpY3k7CisrICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNz
aW9uOworCistICh2b2lkKV9yZXNldFRvRGVmYXVsdFZhbHVlc0ZvclRlc3Rpbmc7CistICh2b2lk
KV9zZXRCb29sUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KEJPT0wpdmFsdWUgZm9yS2V5
OihOU1N0cmluZyAqKWtleTsKKy0gKHZvaWQpX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5n
V2l0aFZhbHVlOih1aW50MzJfdCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OworLSAodm9p
ZClfc2V0RG91YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KGRvdWJsZSl2YWx1ZSBm
b3JLZXk6KE5TU3RyaW5nICopa2V5OworLSAodm9pZClfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRl
c3RpbmdXaXRoVmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsK
K0BlbmQKKwogLy8gRklYTUU6IElmIHRoZXNlIGFyZSBub3QgdXNlZCBhbnl3aGVyZSwgd2Ugc2hv
dWxkIHJlbW92ZSB0aGVtIGFuZCBvbmx5IHVzZSBXZWJGZWF0dXJlIG1lY2hhbmlzbSBmb3IgdGhl
IHByZWZlcmVuY2UuCiBAaW50ZXJmYWNlIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlUHJlZmVy
ZW5jZXNDb252ZXJ0ZWRUb1dlYkZlYXR1cmUpCiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCB1
c2VyR2VzdHVyZVByb21pc2VQcm9wYWdhdGlvbkVuYWJsZWQ7CkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg5NTEpCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAyMC0xMC0y
MyAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW1Rlc3RpbmddIENv
bnZlcnQgRHVtcFJlbmRlclRyZWUgdG8gdXNlIGdlbmVyYXRlZCB0ZXN0IGhlYWRlciBvcHRpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc4ODAK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBGdWxseSBzdXBw
b3J0IHVzZSBvZiBhbnkgV2ViUHJlZmVyZW5jZXMqLnlhbWwgcHJlZmVyZW5jZSBpbiBEdW1wUmVu
ZGVyVHJlZSAoZm9yIG1hY09TKSBieToKKyAgICAgICAgICAgIC0gTW92aW5nIER1bXBSZW5kZXJU
cmVlJ3MgVGVzdE9wdGlvbnMgdG8gYmUgZnVsbHkgYmFja2VkIGJ5IFRlc3RGZWF0dXJlcyBsaWtl
IFdlYktpdFRlc3RSdW5ubmVyLgorICAgICAgICAgICAgLSBBZG9wdGluZyBuZXcgV2ViUHJlZmVy
ZW5jZXMgU1BJIGZvciBzZXR0aW5nIGFueSBwcmVmZXJlbmNlIGJ5IGtleSBhbmQgcmVzZXQgYWxs
IHByZWZlcmVuY2VzIGtleXMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWUubW06CisgICAgICAgICh0b05TKToKKyAgICAgICAgKHJlc2V0V2ViUHJlZmVyZW5j
ZXNUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoc2V0V2ViUHJlZmVyZW5jZXNGb3JUZXN0
T3B0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW06
CisgICAgICAgIChUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UpOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6cmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyk6CisKIDIwMjAtMTAt
MjIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgSVBDIHRlc3Rp
bmcgQVBJIHNob3VsZCBleHBvc2UgQXJyYXlCdWZmZXIgZm9yIGFuIHVua25vd24gZGVjb2RlZCBh
cmd1bWVudApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvQ01ha2VMaXN0cy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI2
ODk1MSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC00MCw2ICs0MCw3IEBAIGxpc3QoQVBQRU5EIER1bXBSZW5kZXJUcmVlX1BSSVZBVEVf
SU5DTFUKICkKIAogc2V0KER1bXBSZW5kZXJUcmVlX1dFQl9QUkVGRVJFTkNFU19URU1QTEFURVMK
KyAgICAke0R1bXBSZW5kZXJUcmVlX0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9U
ZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYgogICAgICR7
RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRp
b25zR2VuZXJhdGVkS2V5cy5oLmVyYgogKQogCkBAIC01MywxMiArNTQsMTMgQEAgc2V0KER1bXBS
ZW5kZXJUcmVlX1dFQl9QUkVGRVJFTkNFUwogc2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzKCR7
RHVtcFJlbmRlclRyZWVfV0VCX1BSRUZFUkVOQ0VTfSBQUk9QRVJUSUVTIEdFTkVSQVRFRCBUUlVF
KQogCiBhZGRfY3VzdG9tX2NvbW1hbmQoCi0gICAgT1VUUFVUICR7RHVtcFJlbmRlclRyZWVfREVS
SVZFRF9TT1VSQ0VTX0RJUn0vVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmgKKyAgICBPVVRQVVQg
JHtEdW1wUmVuZGVyVHJlZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9UZXN0T3B0aW9uc0dlbmVyYXRl
ZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwICR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VS
Q0VTX0RJUn0vVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmgKICAgICBERVBFTkRTICR7RHVtcFJl
bmRlclRyZWVfV0VCX1BSRUZFUkVOQ0VTX1RFTVBMQVRFU30gJHtEdW1wUmVuZGVyVHJlZV9XRUJf
UFJFRkVSRU5DRVN9IFdURl9Db3B5UHJlZmVyZW5jZXMKLSAgICBDT01NQU5EICR7UlVCWV9FWEVD
VVRBQkxFfSAke1dURl9TQ1JJUFRTX0RJUn0vR2VuZXJhdGVQcmVmZXJlbmNlcy5yYiAtLWZyb250
ZW5kIFdlYktpdExlZ2FjeSAtLWJhc2UgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dl
YlByZWZlcmVuY2VzLnlhbWwgLS1kZWJ1ZyAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMv
V2ViUHJlZmVyZW5jZXNEZWJ1Zy55YW1sIC0tZXhwZXJpbWVudGFsICR7V1RGX1NDUklQVFNfRElS
fS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIC0taW50ZXJuYWwg
JHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFt
bCAtLW91dHB1dERpciAiJHtEdW1wUmVuZGVyVHJlZV9ERVJJVkVEX1NPVVJDRVNfRElSfSIgLS10
ZW1wbGF0ZSAke0R1bXBSZW5kZXJUcmVlX0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRl
cy9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIKKyAgICBDT01NQU5EICR7UlVCWV9FWEVD
VVRBQkxFfSAke1dURl9TQ1JJUFRTX0RJUn0vR2VuZXJhdGVQcmVmZXJlbmNlcy5yYiAtLWZyb250
ZW5kIFdlYktpdExlZ2FjeSAtLWJhc2UgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dl
YlByZWZlcmVuY2VzLnlhbWwgLS1kZWJ1ZyAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMv
V2ViUHJlZmVyZW5jZXNEZWJ1Zy55YW1sIC0tZXhwZXJpbWVudGFsICR7V1RGX1NDUklQVFNfRElS
fS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sIC0taW50ZXJuYWwg
JHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFt
bCAtLW91dHB1dERpciAiJHtEdW1wUmVuZGVyVHJlZV9ERVJJVkVEX1NPVVJDRVNfRElSfSIgLS10
ZW1wbGF0ZSAke0R1bXBSZW5kZXJUcmVlX0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRl
cy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYiAtLXRl
bXBsYXRlICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVz
L1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYgogICAgIFZFUkJBVElNKQogCiBsaXN0KEFQ
UEVORCBEdW1wUmVuZGVyVHJlZV9TT1VSQ0VTCisgICAgJHtEdW1wUmVuZGVyVHJlZV9ERVJJVkVE
X1NPVVJDRVNfRElSfS9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcu
Y3BwCiAgICAgJHtEdW1wUmVuZGVyVHJlZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9UZXN0T3B0aW9u
c0dlbmVyYXRlZEtleXMuaAogKQogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI2ODk1MSkKKysr
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QJKHdv
cmtpbmcgY29weSkKQEAgLTcsNiArNyw3IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9j
YWwvaW5jbHVkZS8KICQoUFJPSkVDVF9ESVIpLy4uL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRD
b250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwKICQoUFJPSkVDVF9ESVIpL0Jp
bmRpbmdzL0NvZGVHZW5lcmF0b3JEdW1wUmVuZGVyVHJlZS5wbQogJChQUk9KRUNUX0RJUikvRGVy
aXZlZFNvdXJjZXMubWFrZQorJChQUk9KRUNUX0RJUikvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBs
YXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYgog
JChQUk9KRUNUX0RJUikvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dl
bmVyYXRlZEtleXMuaC5lcmIKICQoUFJPSkVDVF9ESVIpL1NjcmlwdHMvZ2VuZXJhdGUtZGVyaXZl
ZC1zb3VyY2VzLnNoCiAkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJUikvQ29kZUdlbmVyYXRv
ci5wbQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QJKHJldmlzaW9uIDI2ODk1MSkKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDQgKzEsNSBAQAogIyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IHRoZSBnZW5lcmF0ZS14
Y2ZpbGVsaXN0cyBzY3JpcHQuCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
RHVtcFJlbmRlclRyZWUvSlNVSVNjcmlwdENvbnRyb2xsZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvRGVyaXZlZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUvSlNVSVNjcmlwdENvbnRyb2xsZXIu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVlL1Rl
c3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9uc0dlbmVy
YXRlZEtleXMuaApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMubWFr
ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy5tYWtl
CShyZXZpc2lvbiAyNjg5NTEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNl
cy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBAIFdFQl9QUkVGRVJFTkNFUyA9
IFwKICMKIAogV0VCX1BSRUZFUkVOQ0VTX0dFTkVSQVRFRF9GSUxFUyA9IFwKKyAgICBUZXN0T3B0
aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwIFwKICAgICBUZXN0T3B0aW9u
c0dlbmVyYXRlZEtleXMuaCBcCiAjCiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjY4OTUxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSw3
IEBACiAJCTVEQjlBQzlFMEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyNzAw
LnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzc1RjA5NzcwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXI3MDAudHRm
ICovOyB9OwogCQk1REI5QUM5RjBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2VpZ2h0V2F0Y2hl
cjgwMC50dGYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDM3NUYwOTc4MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyODAw
LnR0ZiAqLzsgfTsKIAkJNURCOUFDQTAwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktpdFdlaWdodFdh
dGNoZXI5MDAudHRmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzNzVGMDk3OTBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hl
cjkwMC50dGYgKi87IH07CisJCTdDOTg5M0RGMjU0MzNGOEUwMDM1NEVCQyAvKiBUZXN0T3B0aW9u
c0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M5ODkzREUyNTQzM0M4NzAwMzU0RUJDIC8qIFRl
c3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgKi87IH07CiAJCTdD
RkY5QkJGMjUzM0JCMjQwMDA4MDA5RiAvKiBUZXN0RmVhdHVyZXMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NGRjlCQkUyNTMzQkIyNDAwMDgwMDlG
IC8qIFRlc3RGZWF0dXJlcy5jcHAgKi87IH07CiAJCTdDRkY5QkMyMjUzM0JDMTYwMDA4MDA5RiAv
KiBUZXN0Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3Q0ZGOUJDMTI1MzNCQzE2MDAwODAwOUYgLyogVGVzdENvbW1hbmQuY3BwICovOyB9
OwogCQk4MDA0NUFFRTE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bkhhbmRsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MDA0NUFFQzE0NzcxOEU3MDA4MjkwQTggLyogQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhh
bmRsZXIubW0gKi87IH07CkBAIC0zMzMsNyArMzM0LDggQEAKIAkJN0M0NDY5N0YyNTM3N0EwMjAw
MjQyOTBBIC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBUZXN0T3B0aW9u
c0dlbmVyYXRlZEtleXMuaC5lcmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNDQ2
OTgwMjUzNzdBMDIwMDI0MjkwQSAvKiBjaGVjay14Y2ZpbGVsaXN0cy5zaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnNoOyBwYXRo
ID0gImNoZWNrLXhjZmlsZWxpc3RzLnNoIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0M0NDY5ODEyNTM3N0EwMjAwMjQyOTBBIC8qIGdlbmVyYXRlLWRlcml2ZWQtc291cmNlcy5zaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2Ny
aXB0LnNoOyBwYXRoID0gImdlbmVyYXRlLWRlcml2ZWQtc291cmNlcy5zaCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTdDNDQ2OTg1MjUzNzdFNTIwMDI0MjkwQSAvKiBUZXN0T3B0aW9u
c0dlbmVyYXRlZEtleXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlz
Lmg7IHBhdGggPSBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJN0M0NDY5ODUyNTM3N0U1MjAwMjQyOTBBIC8qIFRlc3RPcHRpb25zR2VuZXJh
dGVkS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M5ODkzREUyNTQzM0M4NzAwMzU0RUJDIC8qIFRl
c3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0JCQzMyMjFEREZDRjlBMDA3ODZCOUQgLyog
VGVzdE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdE9wdGlv
bnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NGRjlCQkQyNTMzQkIyNDAwMDgw
MDlGIC8qIFRlc3RGZWF0dXJlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0RmVhdHVyZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NGRjlCQkUyNTMzQkIyNDAwMDgwMDlGIC8qIFRl
c3RGZWF0dXJlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXN0RmVhdHVyZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzc3LDYgKzc3OSw3IEBACiAJCTdDNDQ2OTgyMjUz
NzdDMzQwMDI0MjkwQSAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTdDOTg5M0RFMjU0MzNDODcwMDM1NEVCQyAvKiBUZXN0
T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwICovLAogCQkJCTdDNDQ2
OTg1MjUzNzdFNTIwMDI0MjkwQSAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaCAqLywKIAkJ
CSk7CiAJCQluYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CkBAIC0xMjYwLDYgKzEyNjMsNyBAQAog
CQkJCUE4RDc5Q0VCMEZDMjhCMkMwMDRBQzhGRSAvKiBEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2lu
Z1NvdXJjZS5tIGluIFNvdXJjZXMgKi8sCiAJCQkJQThCOTFBREEwQ0YzQjMyRjAwOEY5MUZGIC8q
IER1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE4QjkxQURD
MENGM0IzMkYwMDhGOTFGRiAvKiBEdW1wUmVuZGVyVHJlZVdpbmRvdy5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTdDOTg5M0RGMjU0MzNGOEUwMDM1NEVCQyAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZFdl
YktpdExlZ2FjeUtleU1hcHBpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCNjIwQzlC
MDhDMjAwMTE0MzY5IC8qIEVkaXRpbmdEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJD
QTE4QjcwMEM5QjA4REIwMDExNDM2OSAvKiBFdmVudFNlbmRpbmdDb250cm9sbGVyLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNBMThCNjQwQzlCMDhDMjAwMTE0MzY5IC8qIEZyYW1lTG9hZERlbGVn
YXRlLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9TY3JpcHRz
L1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5
TWFwcGluZy5jcHAuZXJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Njcmlw
dHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lL
ZXlNYXBwaW5nLmNwcC5lcmIJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
U2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExl
Z2FjeUtleU1hcHBpbmcuY3BwLmVyYgkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisv
KgorICogPCU9IEB3YXJuaW5nICU+CisgKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlRlc3RPcHRpb25zLmgiCisKK25hbWVzcGFjZSBXVFIgeworCitzdGQ6OnN0cmlu
ZyBUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGNvbnN0IHN0ZDo6c3Ry
aW5nJiB3ZWJQcmVmZXJlbmNlc0tleSkKK3sKKyAgICBzdGF0aWMgc3RkOjp1bm9yZGVyZWRfbWFw
PHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4gbm9uU3RhbmRhcmRLZXlzID0geworPCUtIGZvciBA
cHJlZiBpbiBAZXhwb3NlZFByZWZlcmVuY2VzLnNlbGVjdCB7IHxwfCBwLm9wdHNbIndlYktpdExl
Z2FjeVByZWZlcmVuY2VLZXkiXSB9IGRvIC0lPgorICAgICAgICB7ICI8JT0gQHByZWYubmFtZSAl
PiIsICI8JT0gQHByZWYucHJlZmVyZW5jZUtleSAlPiIgfSwgXAorPCUtIGVuZCAtJT4KKyAgICB9
OworCisgICAgYXV0byBpdCA9IG5vblN0YW5kYXJkS2V5cy5maW5kKHdlYlByZWZlcmVuY2VzS2V5
KTsKKyAgICBpZiAoaXQgIT0gbm9uU3RhbmRhcmRLZXlzLmVuZCgpKQorICAgICAgICByZXR1cm4g
aXQtPnNlY29uZDsKKworICAgIHJldHVybiAiV2ViS2l0IiArIHdlYlByZWZlcmVuY2VzS2V5Owor
fQorCit9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
CShyZXZpc2lvbiAyNjg5NTEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRl
clRyZWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMCw2ICsxMzAsMTEgQEAgZXh0ZXJuICJDIiB7
CiAjaW1wb3J0IDxtYWNoLW8vZ2V0c2VjdC5oPgogfQogCitzdGF0aWMgUmV0YWluUHRyPE5TU3Ry
aW5nPiB0b05TKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHJpbmcpCit7CisgICAgcmV0dXJuIGFkb3B0
TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhVVEY4U3RyaW5nOnN0cmluZy5jX3N0cigpXSk7
Cit9CisKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIEBpbnRlcmZhY2UgRHVtcFJlbmRlclRy
ZWVBcHBsaWNhdGlvbiA6IE5TQXBwbGljYXRpb24KIEBlbmQKQEAgLTg0Nyw2ICs4NTIsOCBAQCBz
dGF0aWMgdm9pZCBlbmFibGVFeHBlcmltZW50YWxGZWF0dXJlcyhXCiAvLyBDYWxsZWQgYmVmb3Jl
IGVhY2ggdGVzdC4KIHN0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRW
YWx1ZXMoV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzKQogeworICAgIFtwcmVmZXJlbmNlcyBf
cmVzZXRUb0RlZmF1bHRWYWx1ZXNGb3JUZXN0aW5nXTsKKwogICAgIGVuYWJsZUV4cGVyaW1lbnRh
bEZlYXR1cmVzKHByZWZlcmVuY2VzKTsKIAogICAgIFtwcmVmZXJlbmNlcyBzZXROZWVkc1N0b3Jh
Z2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyazogTk9dOwpAQCAtOTY5LDQxICs5NzYsMjEgQEAgc3Rh
dGljIHZvaWQgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdAogICAgIFtXZWJQcmVmZXJlbmNl
cyBfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5Ok5TSFRU
UENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluXTsKIH0KIAotc3Rh
dGljIGJvb2wgYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoc3RkOjpzdHJpbmcga2V5LCBi
b29sIGRlZmF1bHRWYWx1ZSwgY29uc3QgV1RSOjpUZXN0T3B0aW9ucyYgb3B0aW9ucykKLXsKLSAg
ICBhdXRvIGl0ID0gb3B0aW9ucy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkuZmluZChrZXkp
OwotICAgIGlmIChpdCAhPSBvcHRpb25zLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKS5lbmQo
KSkKLSAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQ7Ci0gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsK
LX0KLQogc3RhdGljIHZvaWQgc2V0V2ViUHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9ucyhXZWJQcmVm
ZXJlbmNlcyAqcHJlZmVyZW5jZXMsIGNvbnN0IFdUUjo6VGVzdE9wdGlvbnMmIG9wdGlvbnMpCiB7
CiAgICAgcHJlZmVyZW5jZXMucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IG9wdGlvbnMudXNlRXBo
ZW1lcmFsU2Vzc2lvbigpOwogCi0gICAgcHJlZmVyZW5jZXMuYXR0YWNobWVudEVsZW1lbnRFbmFi
bGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkF0dGFjaG1lbnRFbGVtZW50RW5h
YmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5hY2NlbGVyYXRlZERyYXdp
bmdFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkFjY2VsZXJhdGVkRHJh
d2luZ0VuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMubWVudUl0ZW1F
bGVtZW50RW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJNZW51SXRlbUVs
ZW1lbnRFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmtleWdlbkVs
ZW1lbnRFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIktleWdlbkVsZW1l
bnRFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLm1vZGVybk1lZGlh
Q29udHJvbHNFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIk1vZGVybk1l
ZGlhQ29udHJvbHNFbmFibGVkIiwgdHJ1ZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuaW5z
cGVjdG9yQWRkaXRpb25zRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJJ
bnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVu
Y2VzLmFsbG93Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzID0gYm9v
bFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkFsbG93Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNU
b0Fza0ZvckNyZWRlbnRpYWxzIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmNv
bG9yRmlsdGVyRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJDb2xvckZp
bHRlckVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuc2VsZWN0aW9u
QWNyb3NzU2hhZG93Qm91bmRhcmllc0VuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVW
YWx1ZSgiU2VsZWN0aW9uQWNyb3NzU2hhZG93Qm91bmRhcmllc0VuYWJsZWQiLCB0cnVlLCBvcHRp
b25zKTsKLSAgICBwcmVmZXJlbmNlcy53ZWJHUFVFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VG
ZWF0dXJlVmFsdWUoIldlYkdQVUVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVy
ZW5jZXMuQ1NTTG9naWNhbEVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgi
Q1NTTG9naWNhbEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMubGlu
ZUhlaWdodFVuaXRzRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJMaW5l
SGVpZ2h0VW5pdHNFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmFk
Q2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgi
QWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJl
bmNlcy5yZXNpemVPYnNlcnZlckVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1
ZSgiUmVzaXplT2JzZXJ2ZXJFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVu
Y2VzLkNTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZl
YXR1cmVWYWx1ZSgiQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCIsIGZhbHNlLCBvcHRp
b25zKTsKLSAgICBwcmVmZXJlbmNlcy5jb3JlTWF0aE1MRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJl
bmNlRmVhdHVyZVZhbHVlKCJDb3JlTWF0aE1MRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAg
ICBwcmVmZXJlbmNlcy5yZXF1ZXN0SWRsZUNhbGxiYWNrRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJl
bmNlRmVhdHVyZVZhbHVlKCJSZXF1ZXN0SWRsZUNhbGxiYWNrRW5hYmxlZCIsIGZhbHNlLCBvcHRp
b25zKTsKLSAgICBwcmVmZXJlbmNlcy5hc3luY0NsaXBib2FyZEFQSUVuYWJsZWQgPSBib29sV2Vi
UHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQXN5bmNDbGlwYm9hcmRBUElFbmFibGVkIiwgZmFsc2Us
IG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLnVzZXNQYWdlQ2FjaGUgPSBib29sV2ViUHJlZmVy
ZW5jZUZlYXR1cmVWYWx1ZSgiVXNlc0JhY2tGb3J3YXJkQ2FjaGUiLCBmYWxzZSwgb3B0aW9ucyk7
Ci0gICAgcHJlZmVyZW5jZXMubGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJs
ZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiTGF5b3V0Rm9ybWF0dGluZ0NvbnRl
eHRJbnRlZ3JhdGlvbkVuYWJsZWQiLCB0cnVlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5h
c3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJl
bmNlRmVhdHVyZVZhbHVlKCJBc3BlY3RSYXRpb09mSW1nRnJvbVdpZHRoQW5kSGVpZ2h0RW5hYmxl
ZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5hbGxvd1RvcE5hdmlnYXRpb25U
b0RhdGFVUkxzID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkFsbG93VG9wTmF2aWdh
dGlvblRvRGF0YVVSTHMiLCB0cnVlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5jb250YWN0
UGlja2VyQVBJRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJDb250YWN0
UGlja2VyQVBJRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcygpKQorICAg
ICAgICBbcHJlZmVyZW5jZXMgX3NldEJvb2xQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2
YWx1ZSBmb3JLZXk6dG9OUyhXVFI6OlRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVu
Y2VLZXkoa2V5KSkuZ2V0KCldOworCisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0g
OiBvcHRpb25zLmRvdWJsZVdlYlByZWZlcmVuY2VGZWF0dXJlcygpKQorICAgICAgICBbcHJlZmVy
ZW5jZXMgX3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnZhbHVlIGZvcktl
eTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShrZXkp
KS5nZXQoKV07CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMu
dWludDMyV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0
VUludDMyUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dmFsdWUgZm9yS2V5OnRvTlMoV1RS
OjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGtleSkpLmdldCgpXTsK
KworICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5zdHJpbmdXZWJQ
cmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXRTdHJpbmdQcmVm
ZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp0b05TKHZhbHVlKS5nZXQoKSBmb3JLZXk6dG9OUyhX
VFI6OlRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVuY2VLZXkoa2V5KSkuZ2V0KCld
OwogfQogCiAvLyBDYWxsZWQgb25jZSBvbiBEdW1wUmVuZGVyVHJlZSBzdGFydHVwLgpAQCAtMTg3
OCw2ICsxODY1LDcgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdAog
CiAgICAgcmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyh3ZWJWaWV3LnByZWZl
cmVuY2VzKTsKICAgICBzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKHdlYlZpZXcucHJl
ZmVyZW5jZXMsIG9wdGlvbnMpOworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFt3ZWJWaWV3IHNl
dFdhbnRzTGF5ZXI6b3B0aW9ucy5sYXllckJhY2tlZFdlYlZpZXcoKV07CiAjZW5kaWYKSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCShyZXZpc2lvbiAyNjg5
NTEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNjA5LDcgKzYwOSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVm
ZXJlbmNlKEpTU3QKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHZhbHVlQ0YgPSBhZG9wdENG
KEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHZhbHVlKSk7CiAgICAg
TlNTdHJpbmcgKnZhbHVlTlMgPSAoX19icmlkZ2UgTlNTdHJpbmcgKil2YWx1ZUNGLmdldCgpOwog
Ci0gICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBfc2V0UHJlZmVyZW5jZUZv
clRlc3RXaXRoVmFsdWU6dmFsdWVOUyBmb3JLZXk6a2V5TlNdOworICAgIFtbW21haW5GcmFtZSB3
ZWJWaWV3XSBwcmVmZXJlbmNlc10gX3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZh
bHVlOnZhbHVlTlMgZm9yS2V5OmtleU5TXTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpyZW1vdmVB
bGxWaXNpdGVkTGlua3MoKQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAJKHJldmlzaW9uIDI2ODk1MSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MjEsMTcgKzkyMSwxNiBAQCB2b2lk
IFRlc3RDb250cm9sbGVyOjpyZXNldFByZWZlcmVuY2VzVG9DCiAgICAgcGxhdGZvcm1SZXNldFBy
ZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVzKCk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIFtr
ZXksIHZhbHVlXSA6IG9wdGlvbnMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAgICAg
ICBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5KHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9X
SyhrZXkpLmdldCgpKTsKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleUZv
clRlc3RpbmcocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOwogCiAgICAgZm9y
IChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLmRvdWJsZVdlYlByZWZlcmVuY2VG
ZWF0dXJlcygpKQotICAgICAgICBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXkocHJl
ZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOworICAgICAgICBXS1ByZWZlcmVuY2Vz
U2V0RG91YmxlVmFsdWVGb3JLZXlGb3JUZXN0aW5nKHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhr
ZXkpLmdldCgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9u
cy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKLSAgICAgICAgV0tQcmVmZXJlbmNlc1Nl
dFVJbnQzMlZhbHVlRm9yS2V5KHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsK
KyAgICAgICAgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhwcmVm
ZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8m
IFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuc3RyaW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCi0g
ICAgICAgIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleShwcmVmZXJlbmNlcywgdG9X
Syh2YWx1ZSkuZ2V0KCksIHRvV0soa2V5KS5nZXQoKSk7Ci0KKyAgICAgICAgV0tQcmVmZXJlbmNl
c1NldFN0cmluZ1ZhbHVlRm9yS2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdG9XSyh2YWx1ZSku
Z2V0KCksIHRvV0soa2V5KS5nZXQoKSk7CiB9CiAKIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0
U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlc2V0
U3RhZ2UgcmVzZXRTdGFnZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412244</attachid>
            <date>2020-10-24 11:56:37 -0700</date>
            <delta_ts>2020-10-24 11:57:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201024115636.patch</filename>
            <type>text/plain</type>
            <size>36860</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg5NTEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTIwICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVu
ZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlbmFtZSBXS1ByZWZlcmVuY2VzU2V0
KlZhbHVlRm9yS2V5IFNQSSB0byBXS1ByZWZlcmVuY2VzU2V0KlZhbHVlRm9yS2V5Rm9yVGVzdGlu
ZworICAgICAgICB0byBtYWtlIGl0IGNsZWFyIHdoYXQgdGhleSBhcmUgdXNlZCBmb3IgYW5kIGZv
ciBjb25zaXN0ZW5jeSB3aXRoIFdlYktpdExlZ2FjeS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFs
dWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1
ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVl
Rm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVG
b3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JL
ZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5
KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleSk6
IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0
ZS5oOgorCiAyMDIwLTEwLTIyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIElQQyB0ZXN0aW5nIEFQSSBzaG91bGQgZXhwb3NlIEFycmF5QnVmZmVyIGZvciBhbiB1
bmtub3duIGRlY29kZWQgYXJndW1lbnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiAyNjg5NTEpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzgsMjIgKzc4LDIyIEBAIHZvaWQgV0tQcmVmZXJlbmNlc1NldEludGVybmFsRGVidWdGZWF0
dXIKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRJbnRlcm5hbERlYnVnRmVhdHVyZUVu
YWJsZWRGb3JLZXkodG9XVEZTdHJpbmcoaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVLZXkpLCB2YWx1ZSk7
CiB9CiAKLXZvaWQgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleShXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdL
UHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXNSZWYsIGJvb2wgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKIHsKICAgICB0b0lt
cGwocHJlZmVyZW5jZXNSZWYpLT5zZXRCb29sVmFsdWVGb3JLZXkodG9XVEZTdHJpbmcoa2V5KSwg
dmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleShXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdLU3RyaW5nUmVmIGtl
eSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdLU3RyaW5nUmVmIGtl
eSkKIHsKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRCb29sVmFsdWVGb3JLZXkodG9X
VEZTdHJpbmcoa2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5jZXNTZXRVSW50MzJW
YWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1aW50MzJfdCB2YWx1
ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JL
ZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIHVpbnQzMl90IHZh
bHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0
VUludDMyVmFsdWVGb3JLZXkodG9XVEZTdHJpbmcoa2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdL
UHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVu
Y2VzUmVmLCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZl
cmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJl
ZmVyZW5jZXNSZWYsIFdLU3RyaW5nUmVmIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAg
dG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0U3RyaW5nVmFsdWVGb3JLZXkodG9XVEZTdHJpbmco
a2V5KSwgdG9XVEZTdHJpbmcodmFsdWUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaAkocmV2aXNp
b24gMjY4OTUxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNl
c1JlZlByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDEwIEBAIFdLX0VYUE9S
VCB2b2lkIFdLUHJlZmVyZW5jZXNSZXNldEFsbEludGUKIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVy
ZW5jZXNTZXRJbnRlcm5hbERlYnVnRmVhdHVyZUZvcktleShXS1ByZWZlcmVuY2VzUmVmLCBib29s
LCBXS1N0cmluZ1JlZik7CiAKIC8vIFRoZSBmb2xsb3dpbmcgZ2VuZXJpYyBzZXR0ZXIgZnVuY3Rp
b25zIGFyZSBvbmx5IGludGVuZGVkIGZvciB1c2UgYnkgdGVzdGluZyBpbmZyYXN0cnVjdHVyZS4K
LVdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXkoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKLVdL
X0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleShXS1ByZWZlcmVu
Y2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7Ci1X
S19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXkoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7
Ci1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkoV0tQcmVm
ZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFsdWUsIFdLU3RyaW5nUmVm
IGtleSk7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9y
VGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZhbHVlLCBXS1N0
cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVl
Rm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUg
dmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0
VUludDMyVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIHVpbnQzMl90IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQgV0tQ
cmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVm
IHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKIAog
Ly8gRm9yIFRlc3QgUnVubmVyIFVzZSBvbmx5LgogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNl
c1Jlc2V0VGVzdFJ1bm5lck92ZXJyaWRlcyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVm
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODk1MSkKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDIwLTEwLTIwICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVuZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVk
IHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgIEV4cG9zZSBhIHNldCBvZiBzZXR0ZXJzIHRvIGZvciBEdW1wUmVuZGVyVHJlZSB0
byB1c2Ugd2hlbiBzZXR0aW5nIHByZWZlcmVuY2VzCisgICAgICAgIGJ5IHN0cmluZy4KKworICAg
ICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVu
Y2VzIF9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbl0pOgorICAgICAgICAo
K1tXZWJQcmVmZXJlbmNlcyBfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNj
ZXB0UG9saWN5Ol0pOgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBfY2xlYXJOZXR3b3JrTG9h
ZGVyU2Vzc2lvbl0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0Qm9vbFByZWZlcmVu
Y2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5j
ZXMgX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleTpdKToKKyAg
ICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgX3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0
aFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgX3NldFN0cmluZ1By
ZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJl
ZmVyZW5jZXMgX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZhbHVlOmZvcktleTpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oOgorCiAyMDIwLTEw
LTIxICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1Mg
V0sxXSBwcm92aWRlIGEgd2F5IGZvciBBcHBsZS1pbnRlcm5hbCBjbGllbnRzIHRvIGRpc2FibGUg
bGluayBwcmV2aWV3CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZXMubW0JKHJldmlzaW9uIDI2ODk1MSkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEw
MTUsNiArMTAxNSw4IEBAIC0gKHZvaWQpX3Bvc3RDYWNoZU1vZGVsQ2hhbmdlZE5vdGlmaWNhdGkK
IAogLSAodm9pZClzZXRDYWNoZU1vZGVsOihXZWJDYWNoZU1vZGVsKWNhY2hlTW9kZWwKIHsKKyAg
ICBOU0xvZyhAInNldENhY2hlTW9kZWw6ICVkIiwgKGludCljYWNoZU1vZGVsKTsKKwogICAgIFtz
ZWxmIF9zZXRJbnRlZ2VyVmFsdWU6Y2FjaGVNb2RlbCBmb3JLZXk6V2ViS2l0Q2FjaGVNb2RlbFBy
ZWZlcmVuY2VLZXldOwogICAgIFtzZWxmIHNldEF1dG9tYXRpY2FsbHlEZXRlY3RzQ2FjaGVNb2Rl
bDpOT107CiAgICAgW3NlbGYgX3Bvc3RDYWNoZU1vZGVsQ2hhbmdlZE5vdGlmaWNhdGlvbl07CkBA
IC0xMDI1LDcgKzEwMjcsNiBAQCAtIChXZWJDYWNoZU1vZGVsKWNhY2hlTW9kZWwKICAgICByZXR1
cm4gKFdlYkNhY2hlTW9kZWwpW3NlbGYgX2ludGVnZXJWYWx1ZUZvcktleTpXZWJLaXRDYWNoZU1v
ZGVsUHJlZmVyZW5jZUtleV07CiB9CiAKLQogLSAodm9pZClzZXRTdXBwcmVzc2VzSW5jcmVtZW50
YWxSZW5kZXJpbmc6KEJPT0wpc3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nCiB7CiAgICAg
W3NlbGYgX3NldEJvb2xWYWx1ZTpzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmcgZm9yS2V5
OldlYktpdFN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZ0tleV07CkBAIC0xNjE5LDYgKzE2
MjAsOCBAQCArICh2b2lkKV9yZW1vdmVSZWZlcmVuY2VGb3JJZGVudGlmaWVyOihOCiAKIC0gKHZv
aWQpX3Bvc3RQcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb24KIHsKKyAgICBOU0xvZyhAIl9w
b3N0UHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uIik7CisKICNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBpZiAoIXB0aHJlYWRfbWFpbl9ucCgpKSB7CiAgICAgICAgIFtzZWxmIHBl
cmZvcm1TZWxlY3Rvck9uTWFpblRocmVhZDpfY21kIHdpdGhPYmplY3Q6bmlsIHdhaXRVbnRpbERv
bmU6Tk9dOwpAQCAtMTYzMiw2ICsxNjM1LDggQEAgLSAodm9pZClfcG9zdFByZWZlcmVuY2VzQ2hh
bmdlZE5vdGlmaWNhdAogCiAtICh2b2lkKV9wb3N0UHJlZmVyZW5jZXNDaGFuZ2VkQVBJTm90aWZp
Y2F0aW9uCiB7CisgICAgTlNMb2coQCJfcG9zdFByZWZlcmVuY2VzQ2hhbmdlZEFQSU5vdGlmaWNh
dGlvbiIpOworCiAgICAgaWYgKCFwdGhyZWFkX21haW5fbnAoKSkgewogICAgICAgICBbc2VsZiBw
ZXJmb3JtU2VsZWN0b3JPbk1haW5UaHJlYWQ6X2NtZCB3aXRoT2JqZWN0Om5pbCB3YWl0VW50aWxE
b25lOk5PXTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTY2MCwyNCArMTY2NSwxNiBAQCArICh2b2lk
KV9zZXRJQkNyZWF0b3JJRDooTlNTdHJpbmcgKilzdHJpCiAgICAgW29sZCByZWxlYXNlXTsKIH0K
IAotKyAodm9pZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb24KLXsKLSNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFdlYlRocmVhZExvY2soKTsKLSNlbmRpZgotICAg
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOwot
fQotCi0rICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uCistICh2b2lkKWRpZFJlbW92
ZUZyb21XZWJWaWV3CiB7Ci0gICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3Rv
cmFnZVNlc3Npb24oKS5kZWxldGVBbGxDb29raWVzKCk7CisgICAgQVNTRVJUKF9wcml2YXRlLT5u
dW1XZWJWaWV3cyk7CisgICAgaWYgKC0tX3ByaXZhdGUtPm51bVdlYlZpZXdzID09IDApCisgICAg
ICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlv
bk5hbWU6V2ViUHJlZmVyZW5jZXNSZW1vdmVkTm90aWZpY2F0aW9uIG9iamVjdDpzZWxmIHVzZXJJ
bmZvOm5pbF07CiB9CiAKLSsgKHZvaWQpX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNv
b2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeQorLSAodm9p
ZCl3aWxsQWRkVG9XZWJWaWV3CiB7Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1bHRTdG9y
YWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7
IC8vIFdpbGwgZmFpbCB3aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdU
ZXN0aW5nU2Vzc2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhhbmQuCi0gICAgQ0ZIVFRQQ29v
a2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBwb2xp
Y3kpOworICAgICsrX3ByaXZhdGUtPm51bVdlYlZpZXdzOwogfQogCiAtIChCT09MKWlzRE9NUGFz
dGVBbGxvd2VkCkBAIC0xOTUxLDI2ICsxOTQ4LDYgQEAgLSAodm9pZClzZXRVc2VQcmVIVE1MNVBh
cnNlclF1aXJrczooQk9PTAogICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6ZmxhZyBmb3JLZXk6V2Vi
S2l0VXNlUHJlSFRNTDVQYXJzZXJRdWlya3NLZXldOwogfQogCi0tICh2b2lkKWRpZFJlbW92ZUZy
b21XZWJWaWV3Ci17Ci0gICAgQVNTRVJUKF9wcml2YXRlLT5udW1XZWJWaWV3cyk7Ci0gICAgaWYg
KC0tX3ByaXZhdGUtPm51bVdlYlZpZXdzID09IDApCi0gICAgICAgIFtbTlNOb3RpZmljYXRpb25D
ZW50ZXIgZGVmYXVsdENlbnRlcl0KLSAgICAgICAgICAgIHBvc3ROb3RpZmljYXRpb25OYW1lOldl
YlByZWZlcmVuY2VzUmVtb3ZlZE5vdGlmaWNhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAg
ICBvYmplY3Q6c2VsZgotICAgICAgICAgICAgICAgICAgICAgICAgdXNlckluZm86bmlsXTsKLX0K
LQotLSAodm9pZCl3aWxsQWRkVG9XZWJWaWV3Ci17Ci0gICAgKytfcHJpdmF0ZS0+bnVtV2ViVmll
d3M7Ci19Ci0KLS0gKHZvaWQpX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZhbHVlOihOU1N0cmlu
ZyAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKLXsKLSAgICBbc2VsZiBfc2V0U3RyaW5n
VmFsdWU6dmFsdWUgZm9yS2V5OmtleV07Ci19Ci0KIC0gKHZvaWQpc2V0RnVsbFNjcmVlbkVuYWJs
ZWQ6KEJPT0wpZmxhZwogewogICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6ZmxhZyBmb3JLZXk6V2Vi
S2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5XTsKQEAgLTMwMTMsNiArMjk5MCw2OSBA
QCAtICh2b2lkKV9zZXRFbmFibGVkOihCT09MKXZhbHVlIGZvckZlYXR1CiAKIEBlbmQKIAorQGlt
cGxlbWVudGF0aW9uIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlVGVzdGluZykKKworKyAodm9p
ZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb24KK3sKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorICAgIFdlYlRocmVhZExvY2soKTsKKyNlbmRpZgorICAgIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOworfQorCisrICh2
b2lkKV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5T
SFRUUENvb2tpZUFjY2VwdFBvbGljeSlwb2xpY3kKK3sKKyAgICBhdXRvIGNvb2tpZVN0b3JhZ2Ug
PSBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tp
ZVN0b3JhZ2UoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjb29raWVTdG9yYWdlKTsgLy8gV2lsbCBm
YWlsIHdoZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNz
aW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KKyAgICBDRkhUVFBDb29raWVTdG9yYWdl
U2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7Cit9CisK
KysgKHZvaWQpX2NsZWFyTmV0d29ya0xvYWRlclNlc3Npb24KK3sKKyAgICBOZXR3b3JrU3RvcmFn
ZVNlc3Npb25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmRlbGV0ZUFsbENvb2tpZXMoKTsK
K30KKworLSAodm9pZClfcmVzZXRUb0RlZmF1bHRWYWx1ZXNGb3JUZXN0aW5nCit7CisgICAgV2Vi
Q2FjaGVNb2RlbCBvbGRDYWNoZU1vZGVsID0gc2VsZi5jYWNoZU1vZGVsOworICAgIE5TTG9nKEAi
X3Jlc2V0VG9EZWZhdWx0VmFsdWVzRm9yVGVzdGluZyAlZCIsIChpbnQpb2xkQ2FjaGVNb2RlbCk7
CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGRpc3BhdGNoX2JhcnJpZXJfc3luYyhf
cHJpdmF0ZS0+cmVhZFdyaXRlUXVldWUsIF57CisgICAgICAgIF9wcml2YXRlLT52YWx1ZXMgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworICAgIH0pOworI2Vs
c2UKKyAgICBfcHJpdmF0ZS0+dmFsdWVzID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRdKTsKKyNlbmRpZgorCisgICAgW3NlbGYgX3VwZGF0ZVByaXZhdGVCcm93c2lu
Z1N0YXRlVG86W3NlbGYgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZF1dOworICAgIFtzZWxmIF9wb3N0
UHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uXTsKKyAgICBpZiAob2xkQ2FjaGVNb2RlbCAh
PSBbc2VsZiBjYWNoZU1vZGVsXSkKKyAgICAgICAgW3NlbGYgX3Bvc3RDYWNoZU1vZGVsQ2hhbmdl
ZE5vdGlmaWNhdGlvbl07Cit9CisKKy0gKHZvaWQpX3NldEJvb2xQcmVmZXJlbmNlRm9yVGVzdGlu
Z1dpdGhWYWx1ZTooQk9PTCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5Cit7CisgICAgW3Nl
bGYgX3NldEJvb2xWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAodm9pZClfc2V0VUlu
dDMyUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KHVpbnQzMl90KXZhbHVlIGZvcktleToo
TlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2VsZiBfc2V0SW50ZWdlclZhbHVlOnZhbHVlIGZvcktl
eTprZXldOworfQorCistICh2b2lkKV9zZXREb3VibGVQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhW
YWx1ZTooZG91YmxlKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2VsZiBf
c2V0RmxvYXRWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAodm9pZClfc2V0U3RyaW5n
UHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihO
U1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9zZXRTdHJpbmdWYWx1ZTp2YWx1ZSBmb3JLZXk6
a2V5XTsKK30KKworQGVuZAorCiBAaW1wbGVtZW50YXRpb24gV2ViUHJlZmVyZW5jZXMgKFdlYlBy
aXZhdGVQcmVmZXJlbmNlc0NvbnZlcnRlZFRvV2ViRmVhdHVyZSkKIAogLSAoQk9PTCl1c2VyR2Vz
dHVyZVByb21pc2VQcm9wYWdhdGlvbkVuYWJsZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkocmV2aXNp
b24gMjY4OTUxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtODksMTMgKzg5LDYgQEAgQGludGVyZmFj
ZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZSkKICsgKHZvaWQpX3NldEluaXRpYWxEZWZhdWx0
VGV4dEVuY29kaW5nVG9TeXN0ZW1FbmNvZGluZzsKICsgKHZvaWQpX3NldElCQ3JlYXRvcklEOihO
U1N0cmluZyAqKXN0cmluZzsKIAotLy8gRm9yIER1bXBSZW5kZXJUcmVlIHVzZSBvbmx5LgotKyAo
dm9pZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb247Ci0rICh2b2lkKV9z
ZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENv
b2tpZUFjY2VwdFBvbGljeSljb29raWVBY2NlcHRQb2xpY3k7Ci0rICh2b2lkKV9jbGVhck5ldHdv
cmtMb2FkZXJTZXNzaW9uOwotLy8gVXNlZCB0byBzZXQgcHJlZmVyZW5jZSBzcGVjaWZpZWQgaW4g
dGhlIHRlc3QgdmlhIExheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSguLiku
Ci0tICh2b2lkKV9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhWYWx1ZTooTlNTdHJpbmcgKil2YWx1
ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OwotCiArICh2b2lkKXNldFdlYktpdExpbmtUaW1lVmVy
c2lvbjooaW50KXZlcnNpb247CiAKIC8vIEZvciBXZWJWaWV3J3MgdXNlIG9ubHkuCkBAIC0xMDcs
NiArMTAwLDkgQEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZSkKIC0gKHZv
aWQpX3N5bmNocm9uaXplV2ViU3RvcmFnZVBvbGljeVdpdGhDb29raWVQb2xpY3k7CiAjZW5kaWYK
IAorQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgYXV0b21hdGljYWxseURldGVjdHNDYWNoZU1v
ZGVsOworCisKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9aXNETlNQcmVmZXRjaGluZ0Vu
YWJsZWQpIEJPT0wgRE5TUHJlZmV0Y2hpbmdFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMp
IEJPT0wgZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBXZWJL
aXRKYXZhU2NyaXB0UnVudGltZUZsYWdzIGphdmFTY3JpcHRSdW50aW1lRmxhZ3M7CkBAIC0xMTQs
NyArMTEwLDYgQEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZSkKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljKSBCT09MIGFwcGxpY2F0aW9uQ2hyb21lTW9kZUVuYWJsZWQ7CiBAcHJv
cGVydHkgKG5vbmF0b21pYykgQk9PTCB1c2VzRW5jb2RpbmdEZXRlY3RvcjsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljKSBCT09MIHNocmlua3NTdGFuZGFsb25lSW1hZ2VzVG9GaXQ7Ci1AcHJvcGVydHkg
KG5vbmF0b21pYykgQk9PTCBhdXRvbWF0aWNhbGx5RGV0ZWN0c0NhY2hlTW9kZWw7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgZ2V0dGVyPWRvbVRpbWVyc1Rocm90dGxpbmdFbmFibGVkKSBCT09MIERP
TVRpbWVyc1Rocm90dGxpbmdFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgd2Vi
QXJjaGl2ZURlYnVnTW9kZUVuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBsb2Nh
bEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkOwpAQCAtMzEwLDYgKzMwNSwxOCBAQCBAaW50ZXJm
YWNlIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlRmVhCiAtICh2b2lkKV9zZXRFbmFibGVkOihC
T09MKXZhbHVlIGZvckZlYXR1cmU6KFdlYkZlYXR1cmUgKilmZWF0dXJlOwogQGVuZAogCitAaW50
ZXJmYWNlIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlVGVzdGluZykKKysgKHZvaWQpX3N3aXRj
aE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uOworKyAodm9pZClfc2V0Q3VycmVudE5l
dHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQ
b2xpY3kpY29va2llQWNjZXB0UG9saWN5OworKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vz
c2lvbjsKKworLSAodm9pZClfcmVzZXRUb0RlZmF1bHRWYWx1ZXNGb3JUZXN0aW5nOworLSAodm9p
ZClfc2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihCT09MKXZhbHVlIGZvcktl
eTooTlNTdHJpbmcgKilrZXk7CistICh2b2lkKV9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGlu
Z1dpdGhWYWx1ZToodWludDMyX3QpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZv
aWQpX3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihkb3VibGUpdmFsdWUg
Zm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZvaWQpX3NldFN0cmluZ1ByZWZlcmVuY2VGb3JU
ZXN0aW5nV2l0aFZhbHVlOihOU1N0cmluZyAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXk7
CitAZW5kCisKIC8vIEZJWE1FOiBJZiB0aGVzZSBhcmUgbm90IHVzZWQgYW55d2hlcmUsIHdlIHNo
b3VsZCByZW1vdmUgdGhlbSBhbmQgb25seSB1c2UgV2ViRmVhdHVyZSBtZWNoYW5pc20gZm9yIHRo
ZSBwcmVmZXJlbmNlLgogQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVByZWZl
cmVuY2VzQ29udmVydGVkVG9XZWJGZWF0dXJlKQogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wg
dXNlckdlc3R1cmVQcm9taXNlUHJvcGFnYXRpb25FbmFibGVkOwpJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjY4OTUxKQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC03MTQ0LDEwICs3MTQ0LDE3IEBAICsgKHZvaWQpX2NhY2hlTW9kZWxDaGFuZ2VkTm90aWZpY2F0
aW9uOigKICAgICBBU1NFUlQoW3ByZWZlcmVuY2VzIGlzS2luZE9mQ2xhc3M6W1dlYlByZWZlcmVu
Y2VzIGNsYXNzXV0pOwogCiAgICAgV2ViQ2FjaGVNb2RlbCBjYWNoZU1vZGVsID0gW3ByZWZlcmVu
Y2VzIGNhY2hlTW9kZWxdOwotICAgIGlmICghW3NlbGYgX2RpZFNldENhY2hlTW9kZWxdIHx8IGNh
Y2hlTW9kZWwgPiBbc2VsZiBfY2FjaGVNb2RlbF0pCisgICAgTlNMb2coQCJfY2FjaGVNb2RlbENo
YW5nZWROb3RpZmljYXRpb246ICVkIiwgKGludCljYWNoZU1vZGVsKTsKKworICAgIGlmICghW3Nl
bGYgX2RpZFNldENhY2hlTW9kZWxdIHx8IGNhY2hlTW9kZWwgPiBbc2VsZiBfY2FjaGVNb2RlbF0p
IHsKKyAgICAgICAgTlNMb2coQCItPiAxKSB1cGRhdGluZyBjYWNoZSBtb2RlbCBmcm9tICVkIiwg
KGludClbc2VsZiBfY2FjaGVNb2RlbF0pOwogICAgICAgICBbc2VsZiBfc2V0Q2FjaGVNb2RlbDpj
YWNoZU1vZGVsXTsKLSAgICBlbHNlIGlmIChjYWNoZU1vZGVsIDwgW3NlbGYgX2NhY2hlTW9kZWxd
KQorICAgIH0gZWxzZSBpZiAoY2FjaGVNb2RlbCA8IFtzZWxmIF9jYWNoZU1vZGVsXSkgeworICAg
ICAgICBOU0xvZyhAIi0+IDIpIHVwZGF0aW5nIGNhY2hlIG1vZGVsIGZyb20gJWQgJWQiLCAoaW50
KVtzZWxmIF9jYWNoZU1vZGVsXSwgKGludClbc2VsZiBfbWF4Q2FjaGVNb2RlbEluQW55SW5zdGFu
Y2VdKTsKICAgICAgICAgW3NlbGYgX3NldENhY2hlTW9kZWw6c3RkOjptYXgoW1tXZWJQcmVmZXJl
bmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXSBjYWNoZU1vZGVsXSwgW3NlbGYgX21heENhY2hlTW9k
ZWxJbkFueUluc3RhbmNlXSldOworICAgIH0gZWxzZSB7CisgICAgICAgIE5TTG9nKEAiLT4gMykg
Tk9UIHVwZGF0aW5nIGNhY2hlIG1vZGVsIGZyb20gJWQiLCAoaW50KVtzZWxmIF9jYWNoZU1vZGVs
XSk7CisgICAgfQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgfSk7CiAjZW5kaWYKQEAg
LTcxNTgsNiArNzE2NSw4IEBAICsgKHZvaWQpX3ByZWZlcmVuY2VzUmVtb3ZlZE5vdGlmaWNhdGlv
bjoKICAgICBXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSAoV2ViUHJlZmVyZW5jZXMgKilb
bm90aWZpY2F0aW9uIG9iamVjdF07CiAgICAgQVNTRVJUKFtwcmVmZXJlbmNlcyBpc0tpbmRPZkNs
YXNzOltXZWJQcmVmZXJlbmNlcyBjbGFzc11dKTsKIAorICAgIE5TTG9nKEAiX3ByZWZlcmVuY2Vz
UmVtb3ZlZE5vdGlmaWNhdGlvbjogW3ByZWZlcmVuY2VzIGNhY2hlTW9kZWxdPSVkIFtzZWxmIF9j
YWNoZU1vZGVsXT0lZCIsIChpbnQpW3ByZWZlcmVuY2VzIGNhY2hlTW9kZWxdLCAoaW50KVtzZWxm
IF9jYWNoZU1vZGVsXSk7CisKICAgICBpZiAoW3ByZWZlcmVuY2VzIGNhY2hlTW9kZWxdID09IFtz
ZWxmIF9jYWNoZU1vZGVsXSkKICAgICAgICAgW3NlbGYgX3NldENhY2hlTW9kZWw6c3RkOjptYXgo
W1tXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXSBjYWNoZU1vZGVsXSwgW3NlbGYg
X21heENhY2hlTW9kZWxJbkFueUluc3RhbmNlXSldOwogfQpAQCAtODYwNywxMiArODYxNiwxOCBA
QCAtICh2b2lkKV9zaW1wbGlmeU1hcmt1cDooRE9NTm9kZSAqKXN0YXJ0CiAKICsgKHZvaWQpX3Nl
dENhY2hlTW9kZWw6KFdlYkNhY2hlTW9kZWwpY2FjaGVNb2RlbAogeworICAgIE5TTG9nKEAiX3Nl
dENhY2hlTW9kZWw6IHNfZGlkU2V0Q2FjaGVNb2RlbD0lcyBjYWNoZU1vZGVsPSVkIHNfY2FjaGVN
b2RlbD0lZCIsIHNfZGlkU2V0Q2FjaGVNb2RlbCA/ICJ5ZXMiIDogIm5vIiwgKGludCljYWNoZU1v
ZGVsLCAoaW50KXNfY2FjaGVNb2RlbCk7CisKICAgICBpZiAoc19kaWRTZXRDYWNoZU1vZGVsICYm
IGNhY2hlTW9kZWwgPT0gc19jYWNoZU1vZGVsKQogICAgICAgICByZXR1cm47CiAKICAgICBOU1N0
cmluZyAqbnN1cmxDYWNoZURpcmVjdG9yeSA9IENGQnJpZGdpbmdSZWxlYXNlKF9DRlVSTENhY2hl
Q29weUNhY2hlRGlyZWN0b3J5KFtbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNoZV0gX0NGVVJMQ2Fj
aGVdKSk7Ci0gICAgaWYgKCFuc3VybENhY2hlRGlyZWN0b3J5KQorICAgIGlmICghbnN1cmxDYWNo
ZURpcmVjdG9yeSkgewogICAgICAgICBuc3VybENhY2hlRGlyZWN0b3J5ID0gTlNIb21lRGlyZWN0
b3J5KCk7CisgICAgICAgIE5TTG9nKEAiTk9UIFNFVCBuc3VybENhY2hlRGlyZWN0b3J5ICVAIiwg
bnN1cmxDYWNoZURpcmVjdG9yeSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTlNMb2coQCJTRVQg
bnN1cmxDYWNoZURpcmVjdG9yeSAlQCIsIG5zdXJsQ2FjaGVEaXJlY3RvcnkpOworICAgIH0KIAog
ICAgIHN0YXRpYyB1aW50NjRfdCBtZW1TaXplID0gcmFtU2l6ZSgpIC8gMTAyNCAvIDEwMjQ7CiAK
SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2ODk1MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIzIEBACisyMDIwLTEwLTIzICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVuZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVk
IHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgIEZ1bGx5IHN1cHBvcnQgdXNlIG9mIGFueSBXZWJQcmVmZXJlbmNlcyoueWFtbCBw
cmVmZXJlbmNlIGluIER1bXBSZW5kZXJUcmVlIChmb3IgbWFjT1MpIGJ5OgorICAgICAgICAgICAg
LSBNb3ZpbmcgRHVtcFJlbmRlclRyZWUncyBUZXN0T3B0aW9ucyB0byBiZSBmdWxseSBiYWNrZWQg
YnkgVGVzdEZlYXR1cmVzIGxpa2UgV2ViS2l0VGVzdFJ1bm5uZXIuCisgICAgICAgICAgICAtIEFk
b3B0aW5nIG5ldyBXZWJQcmVmZXJlbmNlcyBTUEkgZm9yIHNldHRpbmcgYW55IHByZWZlcmVuY2Ug
Ynkga2V5IGFuZCByZXNldCBhbGwgcHJlZmVyZW5jZXMga2V5cy4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHRvTlMpOgorICAgICAg
ICAocmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChzZXRX
ZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9t
YWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAgICAgKFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVy
ZW5jZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFByZWZlcmVuY2VzVG9Db25zaXN0ZW50
VmFsdWVzKToKKwogMjAyMC0xMC0yMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBJUEMgdGVzdGluZyBBUEkgc2hvdWxkIGV4cG9zZSBBcnJheUJ1ZmZlciBmb3Ig
YW4gdW5rbm93biBkZWNvZGVkIGFyZ3VtZW50CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9D
TWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gMjY4OTUxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQ01ha2VM
aXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgbGlzdChBUFBFTkQgRHVt
cFJlbmRlclRyZWVfUFJJVkFURV9JTkNMVQogKQogCiBzZXQoRHVtcFJlbmRlclRyZWVfV0VCX1BS
RUZFUkVOQ0VTX1RFTVBMQVRFUworICAgICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1By
ZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFw
cGluZy5jcHAuZXJiCiAgICAgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5j
ZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCiApCiAKQEAgLTUzLDEy
ICs1NCwxMyBAQCBzZXQoRHVtcFJlbmRlclRyZWVfV0VCX1BSRUZFUkVOQ0VTCiBzZXRfc291cmNl
X2ZpbGVzX3Byb3BlcnRpZXMoJHtEdW1wUmVuZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVN9IFBST1BF
UlRJRVMgR0VORVJBVEVEIFRSVUUpCiAKIGFkZF9jdXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQg
JHtEdW1wUmVuZGVyVHJlZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9UZXN0T3B0aW9uc0dlbmVyYXRl
ZEtleXMuaAorICAgIE9VVFBVVCAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9
L1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgJHtEdW1wUmVu
ZGVyVHJlZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaAog
ICAgIERFUEVORFMgJHtEdW1wUmVuZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVTfSAk
e0R1bXBSZW5kZXJUcmVlX1dFQl9QUkVGRVJFTkNFU30gV1RGX0NvcHlQcmVmZXJlbmNlcwotICAg
IENPTU1BTkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7V1RGX1NDUklQVFNfRElSfS9HZW5lcmF0ZVBy
ZWZlcmVuY2VzLnJiIC0tZnJvbnRlbmQgV2ViS2l0TGVnYWN5IC0tYmFzZSAke1dURl9TQ1JJUFRT
X0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCAtLWRlYnVnICR7V1RGX1NDUklQ
VFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0RlYnVnLnlhbWwgLS1leHBlcmltZW50
YWwgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVu
dGFsLnlhbWwgLS1pbnRlcm5hbCAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXNJbnRlcm5hbC55YW1sIC0tb3V0cHV0RGlyICIke0R1bXBSZW5kZXJUcmVlX0RFUklW
RURfU09VUkNFU19ESVJ9IiAtLXRlbXBsYXRlICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRz
L1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYgorICAg
IENPTU1BTkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7V1RGX1NDUklQVFNfRElSfS9HZW5lcmF0ZVBy
ZWZlcmVuY2VzLnJiIC0tZnJvbnRlbmQgV2ViS2l0TGVnYWN5IC0tYmFzZSAke1dURl9TQ1JJUFRT
X0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCAtLWRlYnVnICR7V1RGX1NDUklQ
VFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0RlYnVnLnlhbWwgLS1leHBlcmltZW50
YWwgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVu
dGFsLnlhbWwgLS1pbnRlcm5hbCAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXNJbnRlcm5hbC55YW1sIC0tb3V0cHV0RGlyICIke0R1bXBSZW5kZXJUcmVlX0RFUklW
RURfU09VUkNFU19ESVJ9IiAtLXRlbXBsYXRlICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRz
L1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5
TWFwcGluZy5jcHAuZXJiIC0tdGVtcGxhdGUgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCiAgICAg
VkVSQkFUSU0pCiAKIGxpc3QoQVBQRU5EIER1bXBSZW5kZXJUcmVlX1NPVVJDRVMKKyAgICAke0R1
bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkV2Vi
S2l0TGVnYWN5S2V5TWFwcGluZy5jcHAKICAgICAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09V
UkNFU19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCiApCiAKSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAko
cmV2aXNpb24gMjY4OTUxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdAkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDcgQEAgJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlLwogJChQUk9KRUNUX0RJUikvLi4vVGVzdFJ1
bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlk
bAogJChQUk9KRUNUX0RJUikvQmluZGluZ3MvQ29kZUdlbmVyYXRvckR1bXBSZW5kZXJUcmVlLnBt
CiAkKFBST0pFQ1RfRElSKS9EZXJpdmVkU291cmNlcy5tYWtlCiskKFBST0pFQ1RfRElSKS9TY3Jp
cHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5
S2V5TWFwcGluZy5jcHAuZXJiCiAkKFBST0pFQ1RfRElSKS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVt
cGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYgogJChQUk9KRUNUX0RJUikvU2Ny
aXB0cy9nZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2gKICQoV0VCQ09SRV9QUklWQVRFX0hFQURF
UlNfRElSKS9Db2RlR2VuZXJhdG9yLnBtCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjY4OTUx
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw1IEBACiAjIFRoaXMgZmlsZSBpcyBnZW5lcmF0
ZWQgYnkgdGhlIGdlbmVyYXRlLXhjZmlsZWxpc3RzIHNjcmlwdC4KICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9EdW1wUmVuZGVyVHJlZS9KU1VJU2NyaXB0Q29udHJvbGxlci5j
cHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9EdW1wUmVuZGVyVHJlZS9K
U1VJU2NyaXB0Q29udHJvbGxlci5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBw
aW5nLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJU
cmVlL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJl
ZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDI2ODk1MSkKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDcg
QEAgV0VCX1BSRUZFUkVOQ0VTID0gXAogIwogCiBXRUJfUFJFRkVSRU5DRVNfR0VORVJBVEVEX0ZJ
TEVTID0gXAorICAgIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5j
cHAgXAogICAgIFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oIFwKICMKIApJbmRleDogVG9vbHMv
RHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjg5NTEpCisrKyBUb29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDksNiArMTA5LDcgQEAKIAkJNURCOUFDOUUwRjcyMkMzNjAwNjg0NjQxIC8qIFdl
YktpdFdlaWdodFdhdGNoZXI3MDAudHRmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVGMDk3NzBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0
V2VpZ2h0V2F0Y2hlcjcwMC50dGYgKi87IH07CiAJCTVEQjlBQzlGMEY3MjJDMzYwMDY4NDY0MSAv
KiBXZWJLaXRXZWlnaHRXYXRjaGVyODAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc1RjA5NzgwREFDM0NCNjAwQzhCNEU1IC8qIFdl
YktpdFdlaWdodFdhdGNoZXI4MDAudHRmICovOyB9OwogCQk1REI5QUNBMDBGNzIyQzM2MDA2ODQ2
NDEgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjkwMC50dGYgaW4gQ29weSBGb250IEZpbGVzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NUYwOTc5MERBQzNDQjYwMEM4QjRFNSAv
KiBXZWJLaXRXZWlnaHRXYXRjaGVyOTAwLnR0ZiAqLzsgfTsKKwkJN0M5ODkzREYyNTQzM0Y4RTAw
MzU0RUJDIC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzk4OTNERTI1
NDMzQzg3MDAzNTRFQkMgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBw
aW5nLmNwcCAqLzsgfTsKIAkJN0NGRjlCQkYyNTMzQkIyNDAwMDgwMDlGIC8qIFRlc3RGZWF0dXJl
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0ZG
OUJCRTI1MzNCQjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVzLmNwcCAqLzsgfTsKIAkJN0NGRjlC
QzIyNTMzQkMxNjAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRkY5QkMxMjUzM0JDMTYwMDA4MDA5RiAvKiBU
ZXN0Q29tbWFuZC5jcHAgKi87IH07CiAJCTgwMDQ1QUVFMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgwMDQ1QUVDMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbSAqLzsgfTsKQEAgLTMzMyw3ICszMzQsOCBAQAog
CQk3QzQ0Njk3RjI1Mzc3QTAyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmgu
ZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0M0NDY5ODAyNTM3N0EwMjAwMjQyOTBBIC8qIGNoZWNrLXhjZmlsZWxp
c3RzLnNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5zY3JpcHQuc2g7IHBhdGggPSAiY2hlY2steGNmaWxlbGlzdHMuc2giOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QzQ0Njk4MTI1Mzc3QTAyMDAyNDI5MEEgLyogZ2VuZXJhdGUt
ZGVyaXZlZC1zb3VyY2VzLnNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQuc2g7IHBhdGggPSAiZ2VuZXJhdGUtZGVyaXZlZC1zb3Vy
Y2VzLnNoIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M0NDY5ODUyNTM3N0U1MjAw
MjQyOTBBIC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXN0
T3B0aW9uc0dlbmVyYXRlZEtleXMuaDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5MEEg
LyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RPcHRpb25z
R2VuZXJhdGVkS2V5cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Qzk4OTNERTI1
NDMzQzg3MDAzNTRFQkMgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBw
aW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVn
YWN5S2V5TWFwcGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQkJDMzIy
MURERkNGOUEwMDc4NkI5RCAvKiBUZXN0T3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUZXN0T3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
Q0ZGOUJCRDI1MzNCQjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRlc3RGZWF0dXJlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0ZGOUJCRTI1
MzNCQjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRl
c3RGZWF0dXJlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NzcsNiArNzc5
LDcgQEAKIAkJN0M0NDY5ODIyNTM3N0MzNDAwMjQyOTBBIC8qIERlcml2ZWQgU291cmNlcyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJN0M5ODkzREUyNTQz
M0M4NzAwMzU0RUJDIC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGlu
Zy5jcHAgKi8sCiAJCQkJN0M0NDY5ODUyNTM3N0U1MjAwMjQyOTBBIC8qIFRlc3RPcHRpb25zR2Vu
ZXJhdGVkS2V5cy5oICovLAogCQkJKTsKIAkJCW5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKQEAg
LTEyNjAsNiArMTI2Myw3IEBACiAJCQkJQThENzlDRUIwRkMyOEIyQzAwNEFDOEZFIC8qIER1bXBS
ZW5kZXJUcmVlRmlsZURyYWdnaW5nU291cmNlLm0gaW4gU291cmNlcyAqLywKIAkJCQlBOEI5MUFE
QTBDRjNCMzJGMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQThCOTFBREMwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBSZW5kZXJUcmVlV2lu
ZG93Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJN0M5ODkzREYyNTQzM0Y4RTAwMzU0RUJDIC8qIFRl
c3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQ0ExOEI2MjBDOUIwOEMyMDAxMTQzNjkgLyogRWRpdGluZ0RlbGVnYXRlLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCNzAwQzlCMDhEQjAwMTE0MzY5IC8qIEV2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI2NDBDOUIwOEMyMDAxMTQz
NjkgLyogRnJhbWVMb2FkRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5l
cmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dl
bmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYgkobm9uZXhpc3RlbnQpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRp
b25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiA8JT0gQHdhcm5pbmcgJT4KKyAqCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdE9wdGlvbnMuaCIKKworbmFtZXNwYWNl
IFdUUiB7CisKK3N0ZDo6c3RyaW5nIFRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVu
Y2VLZXkoY29uc3Qgc3RkOjpzdHJpbmcmIHdlYlByZWZlcmVuY2VzS2V5KQoreworICAgIHN0YXRp
YyBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBub25TdGFuZGFy
ZEtleXMgPSB7Cis8JS0gZm9yIEBwcmVmIGluIEBleHBvc2VkUHJlZmVyZW5jZXMuc2VsZWN0IHsg
fHB8IHAub3B0c1sid2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleSJdIH0gZG8gLSU+CisgICAgICAg
IHsgIjwlPSBAcHJlZi5uYW1lICU+IiwgIjwlPSBAcHJlZi5wcmVmZXJlbmNlS2V5ICU+IiB9LCBc
Cis8JS0gZW5kIC0lPgorICAgIH07CisKKyAgICBhdXRvIGl0ID0gbm9uU3RhbmRhcmRLZXlzLmZp
bmQod2ViUHJlZmVyZW5jZXNLZXkpOworICAgIGlmIChpdCAhPSBub25TdGFuZGFyZEtleXMuZW5k
KCkpCisgICAgICAgIHJldHVybiBpdC0+c2Vjb25kOworCisgICAgcmV0dXJuICJXZWJLaXQiICsg
d2ViUHJlZmVyZW5jZXNLZXk7Cit9CisKK30KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWUubW0JKHJldmlzaW9uIDI2ODk1MSkKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMwLDYgKzEz
MCwxMSBAQCBleHRlcm4gIkMiIHsKICNpbXBvcnQgPG1hY2gtby9nZXRzZWN0Lmg+CiB9CiAKK3N0
YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IHRvTlMoY29uc3Qgc3RkOjpzdHJpbmcmIHN0cmluZykK
K3sKKyAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aFVURjhTdHJp
bmc6c3RyaW5nLmNfc3RyKCldKTsKK30KKwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogQGlu
dGVyZmFjZSBEdW1wUmVuZGVyVHJlZUFwcGxpY2F0aW9uIDogTlNBcHBsaWNhdGlvbgogQGVuZApA
QCAtODQ3LDYgKzg1Miw4IEBAIHN0YXRpYyB2b2lkIGVuYWJsZUV4cGVyaW1lbnRhbEZlYXR1cmVz
KFcKIC8vIENhbGxlZCBiZWZvcmUgZWFjaCB0ZXN0Lgogc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVm
ZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMpCiB7
CisgICAgW3ByZWZlcmVuY2VzIF9yZXNldFRvRGVmYXVsdFZhbHVlc0ZvclRlc3RpbmddOworCiAg
ICAgZW5hYmxlRXhwZXJpbWVudGFsRmVhdHVyZXMocHJlZmVyZW5jZXMpOwogCiAgICAgW3ByZWZl
cmVuY2VzIHNldE5lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrOiBOT107CkBAIC05
NjksNDEgKzk3NiwyMSBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0
CiAgICAgW1dlYlByZWZlcmVuY2VzIF9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29r
aWVBY2NlcHRQb2xpY3k6TlNIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1l
bnREb21haW5dOwogfQogCi1zdGF0aWMgYm9vbCBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1
ZShzdGQ6OnN0cmluZyBrZXksIGJvb2wgZGVmYXVsdFZhbHVlLCBjb25zdCBXVFI6OlRlc3RPcHRp
b25zJiBvcHRpb25zKQotewotICAgIGF1dG8gaXQgPSBvcHRpb25zLmJvb2xXZWJQcmVmZXJlbmNl
RmVhdHVyZXMoKS5maW5kKGtleSk7Ci0gICAgaWYgKGl0ICE9IG9wdGlvbnMuYm9vbFdlYlByZWZl
cmVuY2VGZWF0dXJlcygpLmVuZCgpKQotICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKLSAgICBy
ZXR1cm4gZGVmYXVsdFZhbHVlOwotfQotCiBzdGF0aWMgdm9pZCBzZXRXZWJQcmVmZXJlbmNlc0Zv
clRlc3RPcHRpb25zKFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcywgY29uc3QgV1RSOjpUZXN0
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBwcmVmZXJlbmNlcy5wcml2YXRlQnJvd3NpbmdFbmFi
bGVkID0gb3B0aW9ucy51c2VFcGhlbWVyYWxTZXNzaW9uKCk7CiAKLSAgICBwcmVmZXJlbmNlcy5h
dHRhY2htZW50RWxlbWVudEVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgi
QXR0YWNobWVudEVsZW1lbnRFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVu
Y2VzLmFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVW
YWx1ZSgiQWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBw
cmVmZXJlbmNlcy5tZW51SXRlbUVsZW1lbnRFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0
dXJlVmFsdWUoIk1lbnVJdGVtRWxlbWVudEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAg
cHJlZmVyZW5jZXMua2V5Z2VuRWxlbWVudEVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1
cmVWYWx1ZSgiS2V5Z2VuRWxlbWVudEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJl
ZmVyZW5jZXMubW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZl
YXR1cmVWYWx1ZSgiTW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQiLCB0cnVlLCBvcHRpb25zKTsK
LSAgICBwcmVmZXJlbmNlcy5pbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkID0gYm9vbFdlYlByZWZl
cmVuY2VGZWF0dXJlVmFsdWUoIkluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQiLCBmYWxzZSwgb3B0
aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNr
Rm9yQ3JlZGVudGlhbHMgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQWxsb3dDcm9z
c09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMiLCBmYWxzZSwgb3B0aW9ucyk7
Ci0gICAgcHJlZmVyZW5jZXMuY29sb3JGaWx0ZXJFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VG
ZWF0dXJlVmFsdWUoIkNvbG9yRmlsdGVyRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBw
cmVmZXJlbmNlcy5zZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzRW5hYmxlZCA9IGJvb2xX
ZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJTZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVz
RW5hYmxlZCIsIHRydWUsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLndlYkdQVUVuYWJsZWQg
PSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiV2ViR1BVRW5hYmxlZCIsIGZhbHNlLCBv
cHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5DU1NMb2dpY2FsRW5hYmxlZCA9IGJvb2xXZWJQcmVm
ZXJlbmNlRmVhdHVyZVZhbHVlKCJDU1NMb2dpY2FsRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsK
LSAgICBwcmVmZXJlbmNlcy5saW5lSGVpZ2h0VW5pdHNFbmFibGVkID0gYm9vbFdlYlByZWZlcmVu
Y2VGZWF0dXJlVmFsdWUoIkxpbmVIZWlnaHRVbml0c0VuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7
Ci0gICAgcHJlZmVyZW5jZXMuYWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCA9IGJvb2xXZWJQcmVm
ZXJlbmNlRmVhdHVyZVZhbHVlKCJBZENsaWNrQXR0cmlidXRpb25FbmFibGVkIiwgZmFsc2UsIG9w
dGlvbnMpOwotICAgIHByZWZlcmVuY2VzLnJlc2l6ZU9ic2VydmVyRW5hYmxlZCA9IGJvb2xXZWJQ
cmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJSZXNpemVPYnNlcnZlckVuYWJsZWQiLCBmYWxzZSwgb3B0
aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCA9
IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdF
bmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmNvcmVNYXRoTUxFbmFi
bGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkNvcmVNYXRoTUxFbmFibGVkIiwg
ZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLnJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFi
bGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIlJlcXVlc3RJZGxlQ2FsbGJhY2tF
bmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmFzeW5jQ2xpcGJvYXJk
QVBJRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJBc3luY0NsaXBib2Fy
ZEFQSUVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMudXNlc1BhZ2VD
YWNoZSA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJVc2VzQmFja0ZvcndhcmRDYWNo
ZSIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5sYXlvdXRGb3JtYXR0aW5nQ29u
dGV4dEludGVncmF0aW9uRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJM
YXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCIsIHRydWUsIG9wdGlvbnMp
OwotICAgIHByZWZlcmVuY2VzLmFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFi
bGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkFzcGVjdFJhdGlvT2ZJbWdGcm9t
V2lkdGhBbmRIZWlnaHRFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2Vz
LmFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVW
YWx1ZSgiQWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyIsIHRydWUsIG9wdGlvbnMpOwotICAg
IHByZWZlcmVuY2VzLmNvbnRhY3RQaWNrZXJBUElFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VG
ZWF0dXJlVmFsdWUoIkNvbnRhY3RQaWNrZXJBUElFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwor
ICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5ib29sV2ViUHJlZmVy
ZW5jZUZlYXR1cmVzKCkpCisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0Qm9vbFByZWZlcmVuY2VG
b3JUZXN0aW5nV2l0aFZhbHVlOnZhbHVlIGZvcktleTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRv
V2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShrZXkpKS5nZXQoKV07CisKKyAgICBmb3IgKGNvbnN0
IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVz
KCkpCisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0RG91YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdX
aXRoVmFsdWU6dmFsdWUgZm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdh
Y3lQcmVmZXJlbmNlS2V5KGtleSkpLmdldCgpXTsKKworICAgIGZvciAoY29uc3QgYXV0byYgW2tl
eSwgdmFsdWVdIDogb3B0aW9ucy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAg
ICAgW3ByZWZlcmVuY2VzIF9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2
YWx1ZSBmb3JLZXk6dG9OUyhXVFI6OlRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVu
Y2VLZXkoa2V5KSkuZ2V0KCldOworCisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0g
OiBvcHRpb25zLnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcygpKQorICAgICAgICBbcHJlZmVy
ZW5jZXMgX3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnRvTlModmFsdWUp
LmdldCgpIGZvcktleTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVy
ZW5jZUtleShrZXkpKS5nZXQoKV07CiB9CiAKIC8vIENhbGxlZCBvbmNlIG9uIER1bXBSZW5kZXJU
cmVlIHN0YXJ0dXAuCkBAIC0xODc4LDYgKzE4NjUsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZp
ZXdUb0NvbnNpc3RlbnRTdGF0CiAKICAgICByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50
VmFsdWVzKHdlYlZpZXcucHJlZmVyZW5jZXMpOwogICAgIHNldFdlYlByZWZlcmVuY2VzRm9yVGVz
dE9wdGlvbnMod2ViVmlldy5wcmVmZXJlbmNlcywgb3B0aW9ucyk7CisKICNpZiBQTEFURk9STShN
QUMpCiAgICAgW3dlYlZpZXcgc2V0V2FudHNMYXllcjpvcHRpb25zLmxheWVyQmFja2VkV2ViVmll
dygpXTsKICNlbmRpZgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJN
YWMubW0JKHJldmlzaW9uIDI2ODk1MSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0
UnVubmVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MDksNyArNjA5LDcgQEAgdm9pZCBUZXN0
UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UoSlNTdAogICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gdmFsdWVDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgdmFsdWUpKTsKICAgICBOU1N0cmluZyAqdmFsdWVOUyA9IChfX2JyaWRnZSBOU1N0cmlu
ZyAqKXZhbHVlQ0YuZ2V0KCk7CiAKLSAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5j
ZXNdIF9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhWYWx1ZTp2YWx1ZU5TIGZvcktleTprZXlOU107
CisgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBfc2V0U3RyaW5nUHJlZmVy
ZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dmFsdWVOUyBmb3JLZXk6a2V5TlNdOwogfQogCiB2b2lk
IFRlc3RSdW5uZXI6OnJlbW92ZUFsbFZpc2l0ZWRMaW5rcygpCkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjY4OTUxKQorKysgVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTky
MSwxNyArOTIxLDE2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnJlc2V0UHJlZmVyZW5jZXNUb0MK
ICAgICBwbGF0Zm9ybVJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKTsKIAogICAg
IGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5ib29sV2ViUHJlZmVyZW5j
ZUZlYXR1cmVzKCkpCi0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXkocHJl
ZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOworICAgICAgICBXS1ByZWZlcmVuY2Vz
U2V0Qm9vbFZhbHVlRm9yS2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5
KS5nZXQoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMu
ZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCi0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXRE
b3VibGVWYWx1ZUZvcktleShwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7Cisg
ICAgICAgIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVy
ZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBb
a2V5LCB2YWx1ZV0gOiBvcHRpb25zLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAg
ICAgICBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXkocHJlZmVyZW5jZXMsIHZhbHVl
LCB0b1dLKGtleSkuZ2V0KCkpOworICAgICAgICBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVG
b3JLZXlGb3JUZXN0aW5nKHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKIAog
ICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5zdHJpbmdXZWJQcmVm
ZXJlbmNlRmVhdHVyZXMoKSkKLSAgICAgICAgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9y
S2V5KHByZWZlcmVuY2VzLCB0b1dLKHZhbHVlKS5nZXQoKSwgdG9XSyhrZXkpLmdldCgpKTsKLQor
ICAgICAgICBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXlGb3JUZXN0aW5nKHByZWZl
cmVuY2VzLCB0b1dLKHZhbHVlKS5nZXQoKSwgdG9XSyhrZXkpLmdldCgpKTsKIH0KIAogYm9vbCBU
ZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0
aW9ucyYgb3B0aW9ucywgUmVzZXRTdGFnZSByZXNldFN0YWdlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412252</attachid>
            <date>2020-10-24 16:51:02 -0700</date>
            <delta_ts>2020-10-24 16:51:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201024165101.patch</filename>
            <type>text/plain</type>
            <size>36863</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg5NTEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTIwICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVu
ZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlbmFtZSBXS1ByZWZlcmVuY2VzU2V0
KlZhbHVlRm9yS2V5IFNQSSB0byBXS1ByZWZlcmVuY2VzU2V0KlZhbHVlRm9yS2V5Rm9yVGVzdGlu
ZworICAgICAgICB0byBtYWtlIGl0IGNsZWFyIHdoYXQgdGhleSBhcmUgdXNlZCBmb3IgYW5kIGZv
ciBjb25zaXN0ZW5jeSB3aXRoIFdlYktpdExlZ2FjeS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFs
dWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1
ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVl
Rm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVG
b3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JL
ZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5
KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleSk6
IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0
ZS5oOgorCiAyMDIwLTEwLTIyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIElQQyB0ZXN0aW5nIEFQSSBzaG91bGQgZXhwb3NlIEFycmF5QnVmZmVyIGZvciBhbiB1
bmtub3duIGRlY29kZWQgYXJndW1lbnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiAyNjg5NTEpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzgsMjIgKzc4LDIyIEBAIHZvaWQgV0tQcmVmZXJlbmNlc1NldEludGVybmFsRGVidWdGZWF0
dXIKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRJbnRlcm5hbERlYnVnRmVhdHVyZUVu
YWJsZWRGb3JLZXkodG9XVEZTdHJpbmcoaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVLZXkpLCB2YWx1ZSk7
CiB9CiAKLXZvaWQgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleShXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdL
UHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXNSZWYsIGJvb2wgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKIHsKICAgICB0b0lt
cGwocHJlZmVyZW5jZXNSZWYpLT5zZXRCb29sVmFsdWVGb3JLZXkodG9XVEZTdHJpbmcoa2V5KSwg
dmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleShXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdLU3RyaW5nUmVmIGtl
eSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdLU3RyaW5nUmVmIGtl
eSkKIHsKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRCb29sVmFsdWVGb3JLZXkodG9X
VEZTdHJpbmcoa2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5jZXNTZXRVSW50MzJW
YWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1aW50MzJfdCB2YWx1
ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JL
ZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIHVpbnQzMl90IHZh
bHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0
VUludDMyVmFsdWVGb3JLZXkodG9XVEZTdHJpbmcoa2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdL
UHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVu
Y2VzUmVmLCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZl
cmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJl
ZmVyZW5jZXNSZWYsIFdLU3RyaW5nUmVmIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAg
dG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0U3RyaW5nVmFsdWVGb3JLZXkodG9XVEZTdHJpbmco
a2V5KSwgdG9XVEZTdHJpbmcodmFsdWUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaAkocmV2aXNp
b24gMjY4OTUxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNl
c1JlZlByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDEwIEBAIFdLX0VYUE9S
VCB2b2lkIFdLUHJlZmVyZW5jZXNSZXNldEFsbEludGUKIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVy
ZW5jZXNTZXRJbnRlcm5hbERlYnVnRmVhdHVyZUZvcktleShXS1ByZWZlcmVuY2VzUmVmLCBib29s
LCBXS1N0cmluZ1JlZik7CiAKIC8vIFRoZSBmb2xsb3dpbmcgZ2VuZXJpYyBzZXR0ZXIgZnVuY3Rp
b25zIGFyZSBvbmx5IGludGVuZGVkIGZvciB1c2UgYnkgdGVzdGluZyBpbmZyYXN0cnVjdHVyZS4K
LVdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXkoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKLVdL
X0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleShXS1ByZWZlcmVu
Y2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7Ci1X
S19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXkoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7
Ci1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkoV0tQcmVm
ZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFsdWUsIFdLU3RyaW5nUmVm
IGtleSk7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9y
VGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZhbHVlLCBXS1N0
cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVl
Rm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUg
dmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0
VUludDMyVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIHVpbnQzMl90IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQgV0tQ
cmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVm
IHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKIAog
Ly8gRm9yIFRlc3QgUnVubmVyIFVzZSBvbmx5LgogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNl
c1Jlc2V0VGVzdFJ1bm5lck92ZXJyaWRlcyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVm
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODk1MSkKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDIwLTEwLTIwICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVuZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVk
IHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgIEV4cG9zZSBhIHNldCBvZiBzZXR0ZXJzIHRvIGZvciBEdW1wUmVuZGVyVHJlZSB0
byB1c2Ugd2hlbiBzZXR0aW5nIHByZWZlcmVuY2VzCisgICAgICAgIGJ5IHN0cmluZy4KKworICAg
ICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVu
Y2VzIF9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbl0pOgorICAgICAgICAo
K1tXZWJQcmVmZXJlbmNlcyBfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNj
ZXB0UG9saWN5Ol0pOgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBfY2xlYXJOZXR3b3JrTG9h
ZGVyU2Vzc2lvbl0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0Qm9vbFByZWZlcmVu
Y2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5j
ZXMgX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleTpdKToKKyAg
ICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgX3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0
aFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgX3NldFN0cmluZ1By
ZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJl
ZmVyZW5jZXMgX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZhbHVlOmZvcktleTpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oOgorCiAyMDIwLTEw
LTIxICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1Mg
V0sxXSBwcm92aWRlIGEgd2F5IGZvciBBcHBsZS1pbnRlcm5hbCBjbGllbnRzIHRvIGRpc2FibGUg
bGluayBwcmV2aWV3CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZXMubW0JKHJldmlzaW9uIDI2ODk1MSkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEw
MTUsNiArMTAxNSw4IEBAIC0gKHZvaWQpX3Bvc3RDYWNoZU1vZGVsQ2hhbmdlZE5vdGlmaWNhdGkK
IAogLSAodm9pZClzZXRDYWNoZU1vZGVsOihXZWJDYWNoZU1vZGVsKWNhY2hlTW9kZWwKIHsKKyAg
ICBOU0xvZyhAInNldENhY2hlTW9kZWw6ICVkIiwgKGludCljYWNoZU1vZGVsKTsKKwogICAgIFtz
ZWxmIF9zZXRJbnRlZ2VyVmFsdWU6Y2FjaGVNb2RlbCBmb3JLZXk6V2ViS2l0Q2FjaGVNb2RlbFBy
ZWZlcmVuY2VLZXldOwogICAgIFtzZWxmIHNldEF1dG9tYXRpY2FsbHlEZXRlY3RzQ2FjaGVNb2Rl
bDpOT107CiAgICAgW3NlbGYgX3Bvc3RDYWNoZU1vZGVsQ2hhbmdlZE5vdGlmaWNhdGlvbl07CkBA
IC0xMDI1LDcgKzEwMjcsNiBAQCAtIChXZWJDYWNoZU1vZGVsKWNhY2hlTW9kZWwKICAgICByZXR1
cm4gKFdlYkNhY2hlTW9kZWwpW3NlbGYgX2ludGVnZXJWYWx1ZUZvcktleTpXZWJLaXRDYWNoZU1v
ZGVsUHJlZmVyZW5jZUtleV07CiB9CiAKLQogLSAodm9pZClzZXRTdXBwcmVzc2VzSW5jcmVtZW50
YWxSZW5kZXJpbmc6KEJPT0wpc3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nCiB7CiAgICAg
W3NlbGYgX3NldEJvb2xWYWx1ZTpzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmcgZm9yS2V5
OldlYktpdFN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZ0tleV07CkBAIC0xNjE5LDYgKzE2
MjAsOCBAQCArICh2b2lkKV9yZW1vdmVSZWZlcmVuY2VGb3JJZGVudGlmaWVyOihOCiAKIC0gKHZv
aWQpX3Bvc3RQcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb24KIHsKKyAgICBOU0xvZyhAIl9w
b3N0UHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uIik7CisKICNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBpZiAoIXB0aHJlYWRfbWFpbl9ucCgpKSB7CiAgICAgICAgIFtzZWxmIHBl
cmZvcm1TZWxlY3Rvck9uTWFpblRocmVhZDpfY21kIHdpdGhPYmplY3Q6bmlsIHdhaXRVbnRpbERv
bmU6Tk9dOwpAQCAtMTYzMiw2ICsxNjM1LDggQEAgLSAodm9pZClfcG9zdFByZWZlcmVuY2VzQ2hh
bmdlZE5vdGlmaWNhdAogCiAtICh2b2lkKV9wb3N0UHJlZmVyZW5jZXNDaGFuZ2VkQVBJTm90aWZp
Y2F0aW9uCiB7CisgICAgTlNMb2coQCJfcG9zdFByZWZlcmVuY2VzQ2hhbmdlZEFQSU5vdGlmaWNh
dGlvbiIpOworCiAgICAgaWYgKCFwdGhyZWFkX21haW5fbnAoKSkgewogICAgICAgICBbc2VsZiBw
ZXJmb3JtU2VsZWN0b3JPbk1haW5UaHJlYWQ6X2NtZCB3aXRoT2JqZWN0Om5pbCB3YWl0VW50aWxE
b25lOk5PXTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTY2MCwyNCArMTY2NSwxNiBAQCArICh2b2lk
KV9zZXRJQkNyZWF0b3JJRDooTlNTdHJpbmcgKilzdHJpCiAgICAgW29sZCByZWxlYXNlXTsKIH0K
IAotKyAodm9pZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb24KLXsKLSNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFdlYlRocmVhZExvY2soKTsKLSNlbmRpZgotICAg
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOwot
fQotCi0rICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uCistICh2b2lkKWRpZFJlbW92
ZUZyb21XZWJWaWV3CiB7Ci0gICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3Rv
cmFnZVNlc3Npb24oKS5kZWxldGVBbGxDb29raWVzKCk7CisgICAgQVNTRVJUKF9wcml2YXRlLT5u
dW1XZWJWaWV3cyk7CisgICAgaWYgKC0tX3ByaXZhdGUtPm51bVdlYlZpZXdzID09IDApCisgICAg
ICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlv
bk5hbWU6V2ViUHJlZmVyZW5jZXNSZW1vdmVkTm90aWZpY2F0aW9uIG9iamVjdDpzZWxmIHVzZXJJ
bmZvOm5pbF07CiB9CiAKLSsgKHZvaWQpX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNv
b2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeQorLSAodm9p
ZCl3aWxsQWRkVG9XZWJWaWV3CiB7Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1bHRTdG9y
YWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7
IC8vIFdpbGwgZmFpbCB3aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdU
ZXN0aW5nU2Vzc2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhhbmQuCi0gICAgQ0ZIVFRQQ29v
a2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBwb2xp
Y3kpOworICAgICsrX3ByaXZhdGUtPm51bVdlYlZpZXdzOwogfQogCiAtIChCT09MKWlzRE9NUGFz
dGVBbGxvd2VkCkBAIC0xOTUxLDI2ICsxOTQ4LDYgQEAgLSAodm9pZClzZXRVc2VQcmVIVE1MNVBh
cnNlclF1aXJrczooQk9PTAogICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6ZmxhZyBmb3JLZXk6V2Vi
S2l0VXNlUHJlSFRNTDVQYXJzZXJRdWlya3NLZXldOwogfQogCi0tICh2b2lkKWRpZFJlbW92ZUZy
b21XZWJWaWV3Ci17Ci0gICAgQVNTRVJUKF9wcml2YXRlLT5udW1XZWJWaWV3cyk7Ci0gICAgaWYg
KC0tX3ByaXZhdGUtPm51bVdlYlZpZXdzID09IDApCi0gICAgICAgIFtbTlNOb3RpZmljYXRpb25D
ZW50ZXIgZGVmYXVsdENlbnRlcl0KLSAgICAgICAgICAgIHBvc3ROb3RpZmljYXRpb25OYW1lOldl
YlByZWZlcmVuY2VzUmVtb3ZlZE5vdGlmaWNhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAg
ICBvYmplY3Q6c2VsZgotICAgICAgICAgICAgICAgICAgICAgICAgdXNlckluZm86bmlsXTsKLX0K
LQotLSAodm9pZCl3aWxsQWRkVG9XZWJWaWV3Ci17Ci0gICAgKytfcHJpdmF0ZS0+bnVtV2ViVmll
d3M7Ci19Ci0KLS0gKHZvaWQpX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZhbHVlOihOU1N0cmlu
ZyAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKLXsKLSAgICBbc2VsZiBfc2V0U3RyaW5n
VmFsdWU6dmFsdWUgZm9yS2V5OmtleV07Ci19Ci0KIC0gKHZvaWQpc2V0RnVsbFNjcmVlbkVuYWJs
ZWQ6KEJPT0wpZmxhZwogewogICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6ZmxhZyBmb3JLZXk6V2Vi
S2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5XTsKQEAgLTMwMTMsNiArMjk5MCw2OSBA
QCAtICh2b2lkKV9zZXRFbmFibGVkOihCT09MKXZhbHVlIGZvckZlYXR1CiAKIEBlbmQKIAorQGlt
cGxlbWVudGF0aW9uIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlVGVzdGluZykKKworKyAodm9p
ZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb24KK3sKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorICAgIFdlYlRocmVhZExvY2soKTsKKyNlbmRpZgorICAgIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOworfQorCisrICh2
b2lkKV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5T
SFRUUENvb2tpZUFjY2VwdFBvbGljeSlwb2xpY3kKK3sKKyAgICBhdXRvIGNvb2tpZVN0b3JhZ2Ug
PSBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tp
ZVN0b3JhZ2UoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjb29raWVTdG9yYWdlKTsgLy8gV2lsbCBm
YWlsIHdoZW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNz
aW9uKCkgd2FzIG5vdCBjYWxsZWQgYmVmb3JlaGFuZC4KKyAgICBDRkhUVFBDb29raWVTdG9yYWdl
U2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7Cit9CisK
KysgKHZvaWQpX2NsZWFyTmV0d29ya0xvYWRlclNlc3Npb24KK3sKKyAgICBOZXR3b3JrU3RvcmFn
ZVNlc3Npb25NYXA6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmRlbGV0ZUFsbENvb2tpZXMoKTsK
K30KKworLSAodm9pZClfcmVzZXRUb0RlZmF1bHRWYWx1ZXNGb3JUZXN0aW5nCit7CisgICAgV2Vi
Q2FjaGVNb2RlbCBvbGRDYWNoZU1vZGVsID0gc2VsZi5jYWNoZU1vZGVsOworICAgIE5TTG9nKEAi
X3Jlc2V0VG9EZWZhdWx0VmFsdWVzRm9yVGVzdGluZyAlZCIsIChpbnQpb2xkQ2FjaGVNb2RlbCk7
CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGRpc3BhdGNoX2JhcnJpZXJfc3luYyhf
cHJpdmF0ZS0+cmVhZFdyaXRlUXVldWUsIF57CisgICAgICAgIF9wcml2YXRlLT52YWx1ZXMgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworICAgIH0pOworI2Vs
c2UKKyAgICBfcHJpdmF0ZS0+dmFsdWVzID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRdKTsKKyNlbmRpZgorCisgICAgW3NlbGYgX3VwZGF0ZVByaXZhdGVCcm93c2lu
Z1N0YXRlVG86W3NlbGYgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZF1dOworICAgIFtzZWxmIF9wb3N0
UHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uXTsKKyAgICBpZiAob2xkQ2FjaGVNb2RlbCAh
PSBbc2VsZiBjYWNoZU1vZGVsXSkKKyAgICAgICAgW3NlbGYgX3Bvc3RDYWNoZU1vZGVsQ2hhbmdl
ZE5vdGlmaWNhdGlvbl07Cit9CisKKy0gKHZvaWQpX3NldEJvb2xQcmVmZXJlbmNlRm9yVGVzdGlu
Z1dpdGhWYWx1ZTooQk9PTCl2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5Cit7CisgICAgW3Nl
bGYgX3NldEJvb2xWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAodm9pZClfc2V0VUlu
dDMyUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KHVpbnQzMl90KXZhbHVlIGZvcktleToo
TlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2VsZiBfc2V0SW50ZWdlclZhbHVlOnZhbHVlIGZvcktl
eTprZXldOworfQorCistICh2b2lkKV9zZXREb3VibGVQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhW
YWx1ZTooZG91YmxlKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2VsZiBf
c2V0RmxvYXRWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKK30KKworLSAodm9pZClfc2V0U3RyaW5n
UHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6KE5TU3RyaW5nICopdmFsdWUgZm9yS2V5OihO
U1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9zZXRTdHJpbmdWYWx1ZTp2YWx1ZSBmb3JLZXk6
a2V5XTsKK30KKworQGVuZAorCiBAaW1wbGVtZW50YXRpb24gV2ViUHJlZmVyZW5jZXMgKFdlYlBy
aXZhdGVQcmVmZXJlbmNlc0NvbnZlcnRlZFRvV2ViRmVhdHVyZSkKIAogLSAoQk9PTCl1c2VyR2Vz
dHVyZVByb21pc2VQcm9wYWdhdGlvbkVuYWJsZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkocmV2aXNp
b24gMjY4OTUxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtODksMTMgKzg5LDYgQEAgQGludGVyZmFj
ZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZSkKICsgKHZvaWQpX3NldEluaXRpYWxEZWZhdWx0
VGV4dEVuY29kaW5nVG9TeXN0ZW1FbmNvZGluZzsKICsgKHZvaWQpX3NldElCQ3JlYXRvcklEOihO
U1N0cmluZyAqKXN0cmluZzsKIAotLy8gRm9yIER1bXBSZW5kZXJUcmVlIHVzZSBvbmx5LgotKyAo
dm9pZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb247Ci0rICh2b2lkKV9z
ZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENv
b2tpZUFjY2VwdFBvbGljeSljb29raWVBY2NlcHRQb2xpY3k7Ci0rICh2b2lkKV9jbGVhck5ldHdv
cmtMb2FkZXJTZXNzaW9uOwotLy8gVXNlZCB0byBzZXQgcHJlZmVyZW5jZSBzcGVjaWZpZWQgaW4g
dGhlIHRlc3QgdmlhIExheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSguLiku
Ci0tICh2b2lkKV9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhWYWx1ZTooTlNTdHJpbmcgKil2YWx1
ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OwotCiArICh2b2lkKXNldFdlYktpdExpbmtUaW1lVmVy
c2lvbjooaW50KXZlcnNpb247CiAKIC8vIEZvciBXZWJWaWV3J3MgdXNlIG9ubHkuCkBAIC0xMDcs
NiArMTAwLDkgQEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZSkKIC0gKHZv
aWQpX3N5bmNocm9uaXplV2ViU3RvcmFnZVBvbGljeVdpdGhDb29raWVQb2xpY3k7CiAjZW5kaWYK
IAorQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgYXV0b21hdGljYWxseURldGVjdHNDYWNoZU1v
ZGVsOworCisKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9aXNETlNQcmVmZXRjaGluZ0Vu
YWJsZWQpIEJPT0wgRE5TUHJlZmV0Y2hpbmdFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMp
IEJPT0wgZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBXZWJL
aXRKYXZhU2NyaXB0UnVudGltZUZsYWdzIGphdmFTY3JpcHRSdW50aW1lRmxhZ3M7CkBAIC0xMTQs
NyArMTEwLDYgQEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZSkKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljKSBCT09MIGFwcGxpY2F0aW9uQ2hyb21lTW9kZUVuYWJsZWQ7CiBAcHJv
cGVydHkgKG5vbmF0b21pYykgQk9PTCB1c2VzRW5jb2RpbmdEZXRlY3RvcjsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljKSBCT09MIHNocmlua3NTdGFuZGFsb25lSW1hZ2VzVG9GaXQ7Ci1AcHJvcGVydHkg
KG5vbmF0b21pYykgQk9PTCBhdXRvbWF0aWNhbGx5RGV0ZWN0c0NhY2hlTW9kZWw7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgZ2V0dGVyPWRvbVRpbWVyc1Rocm90dGxpbmdFbmFibGVkKSBCT09MIERP
TVRpbWVyc1Rocm90dGxpbmdFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgd2Vi
QXJjaGl2ZURlYnVnTW9kZUVuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBsb2Nh
bEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkOwpAQCAtMzEwLDYgKzMwNSwxOCBAQCBAaW50ZXJm
YWNlIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlRmVhCiAtICh2b2lkKV9zZXRFbmFibGVkOihC
T09MKXZhbHVlIGZvckZlYXR1cmU6KFdlYkZlYXR1cmUgKilmZWF0dXJlOwogQGVuZAogCitAaW50
ZXJmYWNlIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlVGVzdGluZykKKysgKHZvaWQpX3N3aXRj
aE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uOworKyAodm9pZClfc2V0Q3VycmVudE5l
dHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQ
b2xpY3kpY29va2llQWNjZXB0UG9saWN5OworKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vz
c2lvbjsKKworLSAodm9pZClfcmVzZXRUb0RlZmF1bHRWYWx1ZXNGb3JUZXN0aW5nOworLSAodm9p
ZClfc2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihCT09MKXZhbHVlIGZvcktl
eTooTlNTdHJpbmcgKilrZXk7CistICh2b2lkKV9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGlu
Z1dpdGhWYWx1ZToodWludDMyX3QpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZv
aWQpX3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihkb3VibGUpdmFsdWUg
Zm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZvaWQpX3NldFN0cmluZ1ByZWZlcmVuY2VGb3JU
ZXN0aW5nV2l0aFZhbHVlOihOU1N0cmluZyAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXk7
CitAZW5kCisKIC8vIEZJWE1FOiBJZiB0aGVzZSBhcmUgbm90IHVzZWQgYW55d2hlcmUsIHdlIHNo
b3VsZCByZW1vdmUgdGhlbSBhbmQgb25seSB1c2UgV2ViRmVhdHVyZSBtZWNoYW5pc20gZm9yIHRo
ZSBwcmVmZXJlbmNlLgogQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVByZWZl
cmVuY2VzQ29udmVydGVkVG9XZWJGZWF0dXJlKQogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wg
dXNlckdlc3R1cmVQcm9taXNlUHJvcGFnYXRpb25FbmFibGVkOwpJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjY4OTUxKQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC03MTQ0LDEwICs3MTQ0LDE3IEBAICsgKHZvaWQpX2NhY2hlTW9kZWxDaGFuZ2VkTm90aWZpY2F0
aW9uOigKICAgICBBU1NFUlQoW3ByZWZlcmVuY2VzIGlzS2luZE9mQ2xhc3M6W1dlYlByZWZlcmVu
Y2VzIGNsYXNzXV0pOwogCiAgICAgV2ViQ2FjaGVNb2RlbCBjYWNoZU1vZGVsID0gW3ByZWZlcmVu
Y2VzIGNhY2hlTW9kZWxdOwotICAgIGlmICghW3NlbGYgX2RpZFNldENhY2hlTW9kZWxdIHx8IGNh
Y2hlTW9kZWwgPiBbc2VsZiBfY2FjaGVNb2RlbF0pCisgICAgTlNMb2coQCJfY2FjaGVNb2RlbENo
YW5nZWROb3RpZmljYXRpb246ICVkIiwgKGludCljYWNoZU1vZGVsKTsKKworICAgIGlmICghW3Nl
bGYgX2RpZFNldENhY2hlTW9kZWxdIHx8IGNhY2hlTW9kZWwgPiBbc2VsZiBfY2FjaGVNb2RlbF0p
IHsKKyAgICAgICAgTlNMb2coQCItPiAxKSB1cGRhdGluZyBjYWNoZSBtb2RlbCBmcm9tICVkIiwg
KGludClbc2VsZiBfY2FjaGVNb2RlbF0pOwogICAgICAgICBbc2VsZiBfc2V0Q2FjaGVNb2RlbDpj
YWNoZU1vZGVsXTsKLSAgICBlbHNlIGlmIChjYWNoZU1vZGVsIDwgW3NlbGYgX2NhY2hlTW9kZWxd
KQorICAgIH0gZWxzZSBpZiAoY2FjaGVNb2RlbCA8IFtzZWxmIF9jYWNoZU1vZGVsXSkgeworICAg
ICAgICBOU0xvZyhAIi0+IDIpIHVwZGF0aW5nIGNhY2hlIG1vZGVsIGZyb20gJWQgJWQiLCAoaW50
KVtzZWxmIF9jYWNoZU1vZGVsXSwgKGludClbc2VsZiBfbWF4Q2FjaGVNb2RlbEluQW55SW5zdGFu
Y2VdKTsKICAgICAgICAgW3NlbGYgX3NldENhY2hlTW9kZWw6c3RkOjptYXgoW1tXZWJQcmVmZXJl
bmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXSBjYWNoZU1vZGVsXSwgW3NlbGYgX21heENhY2hlTW9k
ZWxJbkFueUluc3RhbmNlXSldOworICAgIH0gZWxzZSB7CisgICAgICAgIE5TTG9nKEAiLT4gMykg
Tk9UIHVwZGF0aW5nIGNhY2hlIG1vZGVsIGZyb20gJWQiLCAoaW50KVtzZWxmIF9jYWNoZU1vZGVs
XSk7CisgICAgfQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgfSk7CiAjZW5kaWYKQEAg
LTcxNTgsNiArNzE2NSw4IEBAICsgKHZvaWQpX3ByZWZlcmVuY2VzUmVtb3ZlZE5vdGlmaWNhdGlv
bjoKICAgICBXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMgPSAoV2ViUHJlZmVyZW5jZXMgKilb
bm90aWZpY2F0aW9uIG9iamVjdF07CiAgICAgQVNTRVJUKFtwcmVmZXJlbmNlcyBpc0tpbmRPZkNs
YXNzOltXZWJQcmVmZXJlbmNlcyBjbGFzc11dKTsKIAorICAgIE5TTG9nKEAiX3ByZWZlcmVuY2Vz
UmVtb3ZlZE5vdGlmaWNhdGlvbjogW3ByZWZlcmVuY2VzIGNhY2hlTW9kZWxdPSVkIFtzZWxmIF9j
YWNoZU1vZGVsXT0lZCIsIChpbnQpW3ByZWZlcmVuY2VzIGNhY2hlTW9kZWxdLCAoaW50KVtzZWxm
IF9jYWNoZU1vZGVsXSk7CisKICAgICBpZiAoW3ByZWZlcmVuY2VzIGNhY2hlTW9kZWxdID09IFtz
ZWxmIF9jYWNoZU1vZGVsXSkKICAgICAgICAgW3NlbGYgX3NldENhY2hlTW9kZWw6c3RkOjptYXgo
W1tXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXSBjYWNoZU1vZGVsXSwgW3NlbGYg
X21heENhY2hlTW9kZWxJbkFueUluc3RhbmNlXSldOwogfQpAQCAtODYwNywxMiArODYxNiwxOCBA
QCAtICh2b2lkKV9zaW1wbGlmeU1hcmt1cDooRE9NTm9kZSAqKXN0YXJ0CiAKICsgKHZvaWQpX3Nl
dENhY2hlTW9kZWw6KFdlYkNhY2hlTW9kZWwpY2FjaGVNb2RlbAogeworICAgIE5TTG9nKEAiX3Nl
dENhY2hlTW9kZWw6IHNfZGlkU2V0Q2FjaGVNb2RlbD0lcyBjYWNoZU1vZGVsPSVkIHNfY2FjaGVN
b2RlbD0lZCIsIHNfZGlkU2V0Q2FjaGVNb2RlbCA/ICJ5ZXMiIDogIm5vIiwgKGludCljYWNoZU1v
ZGVsLCAoaW50KXNfY2FjaGVNb2RlbCk7CisKICAgICBpZiAoc19kaWRTZXRDYWNoZU1vZGVsICYm
IGNhY2hlTW9kZWwgPT0gc19jYWNoZU1vZGVsKQogICAgICAgICByZXR1cm47CiAKICAgICBOU1N0
cmluZyAqbnN1cmxDYWNoZURpcmVjdG9yeSA9IENGQnJpZGdpbmdSZWxlYXNlKF9DRlVSTENhY2hl
Q29weUNhY2hlRGlyZWN0b3J5KFtbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNoZV0gX0NGVVJMQ2Fj
aGVdKSk7Ci0gICAgaWYgKCFuc3VybENhY2hlRGlyZWN0b3J5KQorICAgIGlmICghbnN1cmxDYWNo
ZURpcmVjdG9yeSkgewogICAgICAgICBuc3VybENhY2hlRGlyZWN0b3J5ID0gTlNIb21lRGlyZWN0
b3J5KCk7CisgICAgICAgIE5TTG9nKEAiTk9UIFNFVCBuc3VybENhY2hlRGlyZWN0b3J5ICVAIiwg
bnN1cmxDYWNoZURpcmVjdG9yeSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTlNMb2coQCJTRVQg
bnN1cmxDYWNoZURpcmVjdG9yeSAlQCIsIG5zdXJsQ2FjaGVEaXJlY3RvcnkpOworICAgIH0KIAog
ICAgIHN0YXRpYyB1aW50NjRfdCBtZW1TaXplID0gcmFtU2l6ZSgpIC8gMTAyNCAvIDEwMjQ7CiAK
SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2ODk1MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIzIEBACisyMDIwLTEwLTIzICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVuZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVk
IHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgIEZ1bGx5IHN1cHBvcnQgdXNlIG9mIGFueSBXZWJQcmVmZXJlbmNlcyoueWFtbCBw
cmVmZXJlbmNlIGluIER1bXBSZW5kZXJUcmVlIChmb3IgbWFjT1MpIGJ5OgorICAgICAgICAgICAg
LSBNb3ZpbmcgRHVtcFJlbmRlclRyZWUncyBUZXN0T3B0aW9ucyB0byBiZSBmdWxseSBiYWNrZWQg
YnkgVGVzdEZlYXR1cmVzIGxpa2UgV2ViS2l0VGVzdFJ1bm5uZXIuCisgICAgICAgICAgICAtIEFk
b3B0aW5nIG5ldyBXZWJQcmVmZXJlbmNlcyBTUEkgZm9yIHNldHRpbmcgYW55IHByZWZlcmVuY2Ug
Ynkga2V5IGFuZCByZXNldCBhbGwgcHJlZmVyZW5jZXMga2V5cy4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHRvTlMpOgorICAgICAg
ICAocmVzZXRXZWJQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChzZXRX
ZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9t
YWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAgICAgKFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVy
ZW5jZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFByZWZlcmVuY2VzVG9Db25zaXN0ZW50
VmFsdWVzKToKKwogMjAyMC0xMC0yMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBJUEMgdGVzdGluZyBBUEkgc2hvdWxkIGV4cG9zZSBBcnJheUJ1ZmZlciBmb3Ig
YW4gdW5rbm93biBkZWNvZGVkIGFyZ3VtZW50CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9D
TWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gMjY4OTUxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQ01ha2VM
aXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgbGlzdChBUFBFTkQgRHVt
cFJlbmRlclRyZWVfUFJJVkFURV9JTkNMVQogKQogCiBzZXQoRHVtcFJlbmRlclRyZWVfV0VCX1BS
RUZFUkVOQ0VTX1RFTVBMQVRFUworICAgICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRzL1By
ZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFw
cGluZy5jcHAuZXJiCiAgICAgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5j
ZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCiApCiAKQEAgLTUzLDEy
ICs1NCwxMyBAQCBzZXQoRHVtcFJlbmRlclRyZWVfV0VCX1BSRUZFUkVOQ0VTCiBzZXRfc291cmNl
X2ZpbGVzX3Byb3BlcnRpZXMoJHtEdW1wUmVuZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVN9IFBST1BF
UlRJRVMgR0VORVJBVEVEIFRSVUUpCiAKIGFkZF9jdXN0b21fY29tbWFuZCgKLSAgICBPVVRQVVQg
JHtEdW1wUmVuZGVyVHJlZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9UZXN0T3B0aW9uc0dlbmVyYXRl
ZEtleXMuaAorICAgIE9VVFBVVCAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9
L1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgJHtEdW1wUmVu
ZGVyVHJlZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9UZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaAog
ICAgIERFUEVORFMgJHtEdW1wUmVuZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVTfSAk
e0R1bXBSZW5kZXJUcmVlX1dFQl9QUkVGRVJFTkNFU30gV1RGX0NvcHlQcmVmZXJlbmNlcwotICAg
IENPTU1BTkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7V1RGX1NDUklQVFNfRElSfS9HZW5lcmF0ZVBy
ZWZlcmVuY2VzLnJiIC0tZnJvbnRlbmQgV2ViS2l0TGVnYWN5IC0tYmFzZSAke1dURl9TQ1JJUFRT
X0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCAtLWRlYnVnICR7V1RGX1NDUklQ
VFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0RlYnVnLnlhbWwgLS1leHBlcmltZW50
YWwgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVu
dGFsLnlhbWwgLS1pbnRlcm5hbCAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXNJbnRlcm5hbC55YW1sIC0tb3V0cHV0RGlyICIke0R1bXBSZW5kZXJUcmVlX0RFUklW
RURfU09VUkNFU19ESVJ9IiAtLXRlbXBsYXRlICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRz
L1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYgorICAg
IENPTU1BTkQgJHtSVUJZX0VYRUNVVEFCTEV9ICR7V1RGX1NDUklQVFNfRElSfS9HZW5lcmF0ZVBy
ZWZlcmVuY2VzLnJiIC0tZnJvbnRlbmQgV2ViS2l0TGVnYWN5IC0tYmFzZSAke1dURl9TQ1JJUFRT
X0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXMueWFtbCAtLWRlYnVnICR7V1RGX1NDUklQ
VFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0RlYnVnLnlhbWwgLS1leHBlcmltZW50
YWwgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzRXhwZXJpbWVu
dGFsLnlhbWwgLS1pbnRlcm5hbCAke1dURl9TQ1JJUFRTX0RJUn0vUHJlZmVyZW5jZXMvV2ViUHJl
ZmVyZW5jZXNJbnRlcm5hbC55YW1sIC0tb3V0cHV0RGlyICIke0R1bXBSZW5kZXJUcmVlX0RFUklW
RURfU09VUkNFU19ESVJ9IiAtLXRlbXBsYXRlICR7RHVtcFJlbmRlclRyZWVfRElSfS9TY3JpcHRz
L1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5
TWFwcGluZy5jcHAuZXJiIC0tdGVtcGxhdGUgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMv
UHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCiAgICAg
VkVSQkFUSU0pCiAKIGxpc3QoQVBQRU5EIER1bXBSZW5kZXJUcmVlX1NPVVJDRVMKKyAgICAke0R1
bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNFU19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkV2Vi
S2l0TGVnYWN5S2V5TWFwcGluZy5jcHAKICAgICAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09V
UkNFU19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCiApCiAKSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAko
cmV2aXNpb24gMjY4OTUxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdAkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDcgQEAgJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlLwogJChQUk9KRUNUX0RJUikvLi4vVGVzdFJ1
bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlk
bAogJChQUk9KRUNUX0RJUikvQmluZGluZ3MvQ29kZUdlbmVyYXRvckR1bXBSZW5kZXJUcmVlLnBt
CiAkKFBST0pFQ1RfRElSKS9EZXJpdmVkU291cmNlcy5tYWtlCiskKFBST0pFQ1RfRElSKS9TY3Jp
cHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5
S2V5TWFwcGluZy5jcHAuZXJiCiAkKFBST0pFQ1RfRElSKS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVt
cGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYgogJChQUk9KRUNUX0RJUikvU2Ny
aXB0cy9nZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2gKICQoV0VCQ09SRV9QUklWQVRFX0hFQURF
UlNfRElSKS9Db2RlR2VuZXJhdG9yLnBtCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkocmV2aXNpb24gMjY4OTUx
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw1IEBACiAjIFRoaXMgZmlsZSBpcyBnZW5lcmF0
ZWQgYnkgdGhlIGdlbmVyYXRlLXhjZmlsZWxpc3RzIHNjcmlwdC4KICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9EdW1wUmVuZGVyVHJlZS9KU1VJU2NyaXB0Q29udHJvbGxlci5j
cHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9EdW1wUmVuZGVyVHJlZS9K
U1VJU2NyaXB0Q29udHJvbGxlci5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBw
aW5nLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJU
cmVlL1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJl
ZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDI2ODk1MSkKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDcg
QEAgV0VCX1BSRUZFUkVOQ0VTID0gXAogIwogCiBXRUJfUFJFRkVSRU5DRVNfR0VORVJBVEVEX0ZJ
TEVTID0gXAorICAgIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5j
cHAgXAogICAgIFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oIFwKICMKIApJbmRleDogVG9vbHMv
RHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjg5NTEpCisrKyBUb29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDksNiArMTA5LDcgQEAKIAkJNURCOUFDOUUwRjcyMkMzNjAwNjg0NjQxIC8qIFdl
YktpdFdlaWdodFdhdGNoZXI3MDAudHRmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzVGMDk3NzBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0
V2VpZ2h0V2F0Y2hlcjcwMC50dGYgKi87IH07CiAJCTVEQjlBQzlGMEY3MjJDMzYwMDY4NDY0MSAv
KiBXZWJLaXRXZWlnaHRXYXRjaGVyODAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc1RjA5NzgwREFDM0NCNjAwQzhCNEU1IC8qIFdl
YktpdFdlaWdodFdhdGNoZXI4MDAudHRmICovOyB9OwogCQk1REI5QUNBMDBGNzIyQzM2MDA2ODQ2
NDEgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjkwMC50dGYgaW4gQ29weSBGb250IEZpbGVzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NUYwOTc5MERBQzNDQjYwMEM4QjRFNSAv
KiBXZWJLaXRXZWlnaHRXYXRjaGVyOTAwLnR0ZiAqLzsgfTsKKwkJN0M5ODkzREYyNTQzM0Y4RTAw
MzU0RUJDIC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzk4OTNERTI1
NDMzQzg3MDAzNTRFQkMgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBw
aW5nLmNwcCAqLzsgfTsKIAkJN0NGRjlCQkYyNTMzQkIyNDAwMDgwMDlGIC8qIFRlc3RGZWF0dXJl
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0ZG
OUJCRTI1MzNCQjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVzLmNwcCAqLzsgfTsKIAkJN0NGRjlC
QzIyNTMzQkMxNjAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRkY5QkMxMjUzM0JDMTYwMDA4MDA5RiAvKiBU
ZXN0Q29tbWFuZC5jcHAgKi87IH07CiAJCTgwMDQ1QUVFMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgwMDQ1QUVDMTQ3NzE4RTcwMDgyOTBBOCAvKiBBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbSAqLzsgfTsKQEAgLTMzMyw3ICszMzQsOCBAQAog
CQk3QzQ0Njk3RjI1Mzc3QTAyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmgu
ZXJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oLmVyYjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0M0NDY5ODAyNTM3N0EwMjAwMjQyOTBBIC8qIGNoZWNrLXhjZmlsZWxp
c3RzLnNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5zY3JpcHQuc2g7IHBhdGggPSAiY2hlY2steGNmaWxlbGlzdHMuc2giOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QzQ0Njk4MTI1Mzc3QTAyMDAyNDI5MEEgLyogZ2VuZXJhdGUt
ZGVyaXZlZC1zb3VyY2VzLnNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQuc2g7IHBhdGggPSAiZ2VuZXJhdGUtZGVyaXZlZC1zb3Vy
Y2VzLnNoIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M0NDY5ODUyNTM3N0U1MjAw
MjQyOTBBIC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXN0
T3B0aW9uc0dlbmVyYXRlZEtleXMuaDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5MEEg
LyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RPcHRpb25z
R2VuZXJhdGVkS2V5cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3Qzk4OTNERTI1
NDMzQzg3MDAzNTRFQkMgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBw
aW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVn
YWN5S2V5TWFwcGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQkJDMzIy
MURERkNGOUEwMDc4NkI5RCAvKiBUZXN0T3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUZXN0T3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
Q0ZGOUJCRDI1MzNCQjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRlc3RGZWF0dXJlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0ZGOUJCRTI1
MzNCQjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRl
c3RGZWF0dXJlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NzcsNiArNzc5
LDcgQEAKIAkJN0M0NDY5ODIyNTM3N0MzNDAwMjQyOTBBIC8qIERlcml2ZWQgU291cmNlcyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJN0M5ODkzREUyNTQz
M0M4NzAwMzU0RUJDIC8qIFRlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGlu
Zy5jcHAgKi8sCiAJCQkJN0M0NDY5ODUyNTM3N0U1MjAwMjQyOTBBIC8qIFRlc3RPcHRpb25zR2Vu
ZXJhdGVkS2V5cy5oICovLAogCQkJKTsKIAkJCW5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKQEAg
LTEyNjAsNiArMTI2Myw3IEBACiAJCQkJQThENzlDRUIwRkMyOEIyQzAwNEFDOEZFIC8qIER1bXBS
ZW5kZXJUcmVlRmlsZURyYWdnaW5nU291cmNlLm0gaW4gU291cmNlcyAqLywKIAkJCQlBOEI5MUFE
QTBDRjNCMzJGMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQThCOTFBREMwQ0YzQjMyRjAwOEY5MUZGIC8qIER1bXBSZW5kZXJUcmVlV2lu
ZG93Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJN0M5ODkzREYyNTQzM0Y4RTAwMzU0RUJDIC8qIFRl
c3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQ0ExOEI2MjBDOUIwOEMyMDAxMTQzNjkgLyogRWRpdGluZ0RlbGVnYXRlLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCNzAwQzlCMDhEQjAwMTE0MzY5IC8qIEV2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0ExOEI2NDBDOUIwOEMyMDAxMTQz
NjkgLyogRnJhbWVMb2FkRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5l
cmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dl
bmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwLmVyYgkobm9uZXhpc3RlbnQpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9TY3JpcHRzL1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRp
b25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5TWFwcGluZy5jcHAuZXJiCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiA8JT0gQHdhcm5pbmcgJT4KKyAqCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdE9wdGlvbnMuaCIKKworbmFtZXNwYWNl
IFdUUiB7CisKK3N0ZDo6c3RyaW5nIFRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVu
Y2VLZXkoY29uc3Qgc3RkOjpzdHJpbmcmIHdlYlByZWZlcmVuY2VzS2V5KQoreworICAgIHN0YXRp
YyBzdGQ6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBub25TdGFuZGFy
ZEtleXMgPSB7Cis8JS0gZm9yIEBwcmVmIGluIEBleHBvc2VkUHJlZmVyZW5jZXMuc2VsZWN0IHsg
fHB8IHAub3B0c1sid2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleSJdIH0gZG8gLSU+CisgICAgICAg
IHsgIjwlPSBAcHJlZi5uYW1lICU+IiwgIjwlPSBAcHJlZi5wcmVmZXJlbmNlS2V5ICU+IiB9LCBc
Cis8JS0gZW5kIC0lPgorICAgIH07CisKKyAgICBhdXRvIGl0ID0gbm9uU3RhbmRhcmRLZXlzLmZp
bmQod2ViUHJlZmVyZW5jZXNLZXkpOworICAgIGlmIChpdCAhPSBub25TdGFuZGFyZEtleXMuZW5k
KCkpCisgICAgICAgIHJldHVybiBpdC0+c2Vjb25kOworCisgICAgcmV0dXJuICJXZWJLaXQiICsg
d2ViUHJlZmVyZW5jZXNLZXk7Cit9CisKK30KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWUubW0JKHJldmlzaW9uIDI2ODk1MSkKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMwLDYgKzEz
MCwxMSBAQCBleHRlcm4gIkMiIHsKICNpbXBvcnQgPG1hY2gtby9nZXRzZWN0Lmg+CiB9CiAKK3N0
YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IHRvTlMoY29uc3Qgc3RkOjpzdHJpbmcmIHN0cmluZykK
K3sKKyAgICByZXR1cm4gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aFVURjhTdHJp
bmc6c3RyaW5nLmNfc3RyKCldKTsKK30KKwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogQGlu
dGVyZmFjZSBEdW1wUmVuZGVyVHJlZUFwcGxpY2F0aW9uIDogTlNBcHBsaWNhdGlvbgogQGVuZApA
QCAtODQ3LDYgKzg1Miw4IEBAIHN0YXRpYyB2b2lkIGVuYWJsZUV4cGVyaW1lbnRhbEZlYXR1cmVz
KFcKIC8vIENhbGxlZCBiZWZvcmUgZWFjaCB0ZXN0Lgogc3RhdGljIHZvaWQgcmVzZXRXZWJQcmVm
ZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhXZWJQcmVmZXJlbmNlcyAqcHJlZmVyZW5jZXMpCiB7
CisgICAgLy8gW3ByZWZlcmVuY2VzIF9yZXNldFRvRGVmYXVsdFZhbHVlc0ZvclRlc3RpbmddOwor
CiAgICAgZW5hYmxlRXhwZXJpbWVudGFsRmVhdHVyZXMocHJlZmVyZW5jZXMpOwogCiAgICAgW3By
ZWZlcmVuY2VzIHNldE5lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrOiBOT107CkBA
IC05NjksNDEgKzk3NiwyMSBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25z
aXN0CiAgICAgW1dlYlByZWZlcmVuY2VzIF9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25D
b29raWVBY2NlcHRQb2xpY3k6TlNIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9j
dW1lbnREb21haW5dOwogfQogCi1zdGF0aWMgYm9vbCBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVW
YWx1ZShzdGQ6OnN0cmluZyBrZXksIGJvb2wgZGVmYXVsdFZhbHVlLCBjb25zdCBXVFI6OlRlc3RP
cHRpb25zJiBvcHRpb25zKQotewotICAgIGF1dG8gaXQgPSBvcHRpb25zLmJvb2xXZWJQcmVmZXJl
bmNlRmVhdHVyZXMoKS5maW5kKGtleSk7Ci0gICAgaWYgKGl0ICE9IG9wdGlvbnMuYm9vbFdlYlBy
ZWZlcmVuY2VGZWF0dXJlcygpLmVuZCgpKQotICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKLSAg
ICByZXR1cm4gZGVmYXVsdFZhbHVlOwotfQotCiBzdGF0aWMgdm9pZCBzZXRXZWJQcmVmZXJlbmNl
c0ZvclRlc3RPcHRpb25zKFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcywgY29uc3QgV1RSOjpU
ZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBwcmVmZXJlbmNlcy5wcml2YXRlQnJvd3NpbmdF
bmFibGVkID0gb3B0aW9ucy51c2VFcGhlbWVyYWxTZXNzaW9uKCk7CiAKLSAgICBwcmVmZXJlbmNl
cy5hdHRhY2htZW50RWxlbWVudEVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1
ZSgiQXR0YWNobWVudEVsZW1lbnRFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZl
cmVuY2VzLmFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1
cmVWYWx1ZSgiQWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAg
ICBwcmVmZXJlbmNlcy5tZW51SXRlbUVsZW1lbnRFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VG
ZWF0dXJlVmFsdWUoIk1lbnVJdGVtRWxlbWVudEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0g
ICAgcHJlZmVyZW5jZXMua2V5Z2VuRWxlbWVudEVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZl
YXR1cmVWYWx1ZSgiS2V5Z2VuRWxlbWVudEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAg
cHJlZmVyZW5jZXMubW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5j
ZUZlYXR1cmVWYWx1ZSgiTW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQiLCB0cnVlLCBvcHRpb25z
KTsKLSAgICBwcmVmZXJlbmNlcy5pbnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkID0gYm9vbFdlYlBy
ZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQiLCBmYWxzZSwg
b3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1Rv
QXNrRm9yQ3JlZGVudGlhbHMgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQWxsb3dD
cm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMiLCBmYWxzZSwgb3B0aW9u
cyk7Ci0gICAgcHJlZmVyZW5jZXMuY29sb3JGaWx0ZXJFbmFibGVkID0gYm9vbFdlYlByZWZlcmVu
Y2VGZWF0dXJlVmFsdWUoIkNvbG9yRmlsdGVyRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAg
ICBwcmVmZXJlbmNlcy5zZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzRW5hYmxlZCA9IGJv
b2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJTZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFy
aWVzRW5hYmxlZCIsIHRydWUsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLndlYkdQVUVuYWJs
ZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiV2ViR1BVRW5hYmxlZCIsIGZhbHNl
LCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5DU1NMb2dpY2FsRW5hYmxlZCA9IGJvb2xXZWJQ
cmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJDU1NMb2dpY2FsRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25z
KTsKLSAgICBwcmVmZXJlbmNlcy5saW5lSGVpZ2h0VW5pdHNFbmFibGVkID0gYm9vbFdlYlByZWZl
cmVuY2VGZWF0dXJlVmFsdWUoIkxpbmVIZWlnaHRVbml0c0VuYWJsZWQiLCBmYWxzZSwgb3B0aW9u
cyk7Ci0gICAgcHJlZmVyZW5jZXMuYWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCA9IGJvb2xXZWJQ
cmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJBZENsaWNrQXR0cmlidXRpb25FbmFibGVkIiwgZmFsc2Us
IG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLnJlc2l6ZU9ic2VydmVyRW5hYmxlZCA9IGJvb2xX
ZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJSZXNpemVPYnNlcnZlckVuYWJsZWQiLCBmYWxzZSwg
b3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxl
ZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJDU1NPTVZpZXdTbW9vdGhTY3JvbGxp
bmdFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmNvcmVNYXRoTUxF
bmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkNvcmVNYXRoTUxFbmFibGVk
IiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLnJlcXVlc3RJZGxlQ2FsbGJhY2tF
bmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIlJlcXVlc3RJZGxlQ2FsbGJh
Y2tFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmFzeW5jQ2xpcGJv
YXJkQVBJRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJBc3luY0NsaXBi
b2FyZEFQSUVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMudXNlc1Bh
Z2VDYWNoZSA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJVc2VzQmFja0ZvcndhcmRD
YWNoZSIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5sYXlvdXRGb3JtYXR0aW5n
Q29udGV4dEludGVncmF0aW9uRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVl
KCJMYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCIsIHRydWUsIG9wdGlv
bnMpOwotICAgIHByZWZlcmVuY2VzLmFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRF
bmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkFzcGVjdFJhdGlvT2ZJbWdG
cm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVu
Y2VzLmFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1
cmVWYWx1ZSgiQWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyIsIHRydWUsIG9wdGlvbnMpOwot
ICAgIHByZWZlcmVuY2VzLmNvbnRhY3RQaWNrZXJBUElFbmFibGVkID0gYm9vbFdlYlByZWZlcmVu
Y2VGZWF0dXJlVmFsdWUoIkNvbnRhY3RQaWNrZXJBUElFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMp
OworICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5ib29sV2ViUHJl
ZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0Qm9vbFByZWZlcmVu
Y2VGb3JUZXN0aW5nV2l0aFZhbHVlOnZhbHVlIGZvcktleTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6
OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShrZXkpKS5nZXQoKV07CisKKyAgICBmb3IgKGNv
bnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1
cmVzKCkpCisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0RG91YmxlUHJlZmVyZW5jZUZvclRlc3Rp
bmdXaXRoVmFsdWU6dmFsdWUgZm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJLaXRM
ZWdhY3lQcmVmZXJlbmNlS2V5KGtleSkpLmdldCgpXTsKKworICAgIGZvciAoY29uc3QgYXV0byYg
W2tleSwgdmFsdWVdIDogb3B0aW9ucy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAg
ICAgICAgW3ByZWZlcmVuY2VzIF9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1
ZTp2YWx1ZSBmb3JLZXk6dG9OUyhXVFI6OlRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZl
cmVuY2VLZXkoa2V5KSkuZ2V0KCldOworCisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1
ZV0gOiBvcHRpb25zLnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcygpKQorICAgICAgICBbcHJl
ZmVyZW5jZXMgX3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnRvTlModmFs
dWUpLmdldCgpIGZvcktleTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJl
ZmVyZW5jZUtleShrZXkpKS5nZXQoKV07CiB9CiAKIC8vIENhbGxlZCBvbmNlIG9uIER1bXBSZW5k
ZXJUcmVlIHN0YXJ0dXAuCkBAIC0xODc4LDYgKzE4NjUsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdl
YlZpZXdUb0NvbnNpc3RlbnRTdGF0CiAKICAgICByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0
ZW50VmFsdWVzKHdlYlZpZXcucHJlZmVyZW5jZXMpOwogICAgIHNldFdlYlByZWZlcmVuY2VzRm9y
VGVzdE9wdGlvbnMod2ViVmlldy5wcmVmZXJlbmNlcywgb3B0aW9ucyk7CisKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgW3dlYlZpZXcgc2V0V2FudHNMYXllcjpvcHRpb25zLmxheWVyQmFja2VkV2Vi
VmlldygpXTsKICNlbmRpZgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5u
ZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5u
ZXJNYWMubW0JKHJldmlzaW9uIDI2ODk1MSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9U
ZXN0UnVubmVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MDksNyArNjA5LDcgQEAgdm9pZCBU
ZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UoSlNTdAogICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gdmFsdWVDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgdmFsdWUpKTsKICAgICBOU1N0cmluZyAqdmFsdWVOUyA9IChfX2JyaWRnZSBOU1N0
cmluZyAqKXZhbHVlQ0YuZ2V0KCk7CiAKLSAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVy
ZW5jZXNdIF9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhWYWx1ZTp2YWx1ZU5TIGZvcktleTprZXlO
U107CisgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBfc2V0U3RyaW5nUHJl
ZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dmFsdWVOUyBmb3JLZXk6a2V5TlNdOwogfQogCiB2
b2lkIFRlc3RSdW5uZXI6OnJlbW92ZUFsbFZpc2l0ZWRMaW5rcygpCkluZGV4OiBUb29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjY4OTUxKQorKysgVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTkyMSwxNyArOTIxLDE2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnJlc2V0UHJlZmVyZW5jZXNU
b0MKICAgICBwbGF0Zm9ybVJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoKTsKIAog
ICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5ib29sV2ViUHJlZmVy
ZW5jZUZlYXR1cmVzKCkpCi0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXko
cHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOworICAgICAgICBXS1ByZWZlcmVu
Y2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0so
a2V5KS5nZXQoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlv
bnMuZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCi0gICAgICAgIFdLUHJlZmVyZW5jZXNT
ZXREb3VibGVWYWx1ZUZvcktleShwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7
CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleUZvclRlc3RpbmcocHJl
ZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRv
JiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJlcygpKQot
ICAgICAgICBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXkocHJlZmVyZW5jZXMsIHZh
bHVlLCB0b1dLKGtleSkuZ2V0KCkpOworICAgICAgICBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFs
dWVGb3JLZXlGb3JUZXN0aW5nKHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsK
IAogICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5zdHJpbmdXZWJQ
cmVmZXJlbmNlRmVhdHVyZXMoKSkKLSAgICAgICAgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVl
Rm9yS2V5KHByZWZlcmVuY2VzLCB0b1dLKHZhbHVlKS5nZXQoKSwgdG9XSyhrZXkpLmdldCgpKTsK
LQorICAgICAgICBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXlGb3JUZXN0aW5nKHBy
ZWZlcmVuY2VzLCB0b1dLKHZhbHVlKS5nZXQoKSwgdG9XSyhrZXkpLmdldCgpKTsKIH0KIAogYm9v
bCBUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhjb25zdCBUZXN0
T3B0aW9ucyYgb3B0aW9ucywgUmVzZXRTdGFnZSByZXNldFN0YWdlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412253</attachid>
            <date>2020-10-24 17:11:33 -0700</date>
            <delta_ts>2020-10-24 20:07:56 -0700</delta_ts>
            <desc>Experiment: Remove setSharedURLCache  and add _resetToDefaultValuesForTesting</desc>
            <filename>bug-217880-20201024171133.patch</filename>
            <type>text/plain</type>
            <size>33916</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg5NTEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTIwICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVu
ZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlbmFtZSBXS1ByZWZlcmVuY2VzU2V0
KlZhbHVlRm9yS2V5IFNQSSB0byBXS1ByZWZlcmVuY2VzU2V0KlZhbHVlRm9yS2V5Rm9yVGVzdGlu
ZworICAgICAgICB0byBtYWtlIGl0IGNsZWFyIHdoYXQgdGhleSBhcmUgdXNlZCBmb3IgYW5kIGZv
ciBjb25zaXN0ZW5jeSB3aXRoIFdlYktpdExlZ2FjeS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFs
dWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1
ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVl
Rm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVG
b3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JL
ZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5
KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleSk6
IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0
ZS5oOgorCiAyMDIwLTEwLTIyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIElQQyB0ZXN0aW5nIEFQSSBzaG91bGQgZXhwb3NlIEFycmF5QnVmZmVyIGZvciBhbiB1
bmtub3duIGRlY29kZWQgYXJndW1lbnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiAyNjg5NTEpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzgsMjIgKzc4LDIyIEBAIHZvaWQgV0tQcmVmZXJlbmNlc1NldEludGVybmFsRGVidWdGZWF0
dXIKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRJbnRlcm5hbERlYnVnRmVhdHVyZUVu
YWJsZWRGb3JLZXkodG9XVEZTdHJpbmcoaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVLZXkpLCB2YWx1ZSk7
CiB9CiAKLXZvaWQgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleShXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdL
UHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXNSZWYsIGJvb2wgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKIHsKICAgICB0b0lt
cGwocHJlZmVyZW5jZXNSZWYpLT5zZXRCb29sVmFsdWVGb3JLZXkodG9XVEZTdHJpbmcoa2V5KSwg
dmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleShXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdLU3RyaW5nUmVmIGtl
eSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdLU3RyaW5nUmVmIGtl
eSkKIHsKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRCb29sVmFsdWVGb3JLZXkodG9X
VEZTdHJpbmcoa2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5jZXNTZXRVSW50MzJW
YWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1aW50MzJfdCB2YWx1
ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JL
ZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIHVpbnQzMl90IHZh
bHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0
VUludDMyVmFsdWVGb3JLZXkodG9XVEZTdHJpbmcoa2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdL
UHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVu
Y2VzUmVmLCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZl
cmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJl
ZmVyZW5jZXNSZWYsIFdLU3RyaW5nUmVmIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAg
dG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0U3RyaW5nVmFsdWVGb3JLZXkodG9XVEZTdHJpbmco
a2V5KSwgdG9XVEZTdHJpbmcodmFsdWUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaAkocmV2aXNp
b24gMjY4OTUxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNl
c1JlZlByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDEwIEBAIFdLX0VYUE9S
VCB2b2lkIFdLUHJlZmVyZW5jZXNSZXNldEFsbEludGUKIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVy
ZW5jZXNTZXRJbnRlcm5hbERlYnVnRmVhdHVyZUZvcktleShXS1ByZWZlcmVuY2VzUmVmLCBib29s
LCBXS1N0cmluZ1JlZik7CiAKIC8vIFRoZSBmb2xsb3dpbmcgZ2VuZXJpYyBzZXR0ZXIgZnVuY3Rp
b25zIGFyZSBvbmx5IGludGVuZGVkIGZvciB1c2UgYnkgdGVzdGluZyBpbmZyYXN0cnVjdHVyZS4K
LVdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXkoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKLVdL
X0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleShXS1ByZWZlcmVu
Y2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7Ci1X
S19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXkoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7
Ci1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkoV0tQcmVm
ZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFsdWUsIFdLU3RyaW5nUmVm
IGtleSk7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9y
VGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZhbHVlLCBXS1N0
cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVl
Rm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUg
dmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0
VUludDMyVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIHVpbnQzMl90IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQgV0tQ
cmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVm
IHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKIAog
Ly8gRm9yIFRlc3QgUnVubmVyIFVzZSBvbmx5LgogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNl
c1Jlc2V0VGVzdFJ1bm5lck92ZXJyaWRlcyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVm
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODk1MSkKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDIwLTEwLTIwICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVuZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVk
IHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgIEV4cG9zZSBhIHNldCBvZiBzZXR0ZXJzIHRvIGZvciBEdW1wUmVuZGVyVHJlZSB0
byB1c2Ugd2hlbiBzZXR0aW5nIHByZWZlcmVuY2VzCisgICAgICAgIGJ5IHN0cmluZy4KKworICAg
ICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVu
Y2VzIF9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbl0pOgorICAgICAgICAo
K1tXZWJQcmVmZXJlbmNlcyBfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNj
ZXB0UG9saWN5Ol0pOgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBfY2xlYXJOZXR3b3JrTG9h
ZGVyU2Vzc2lvbl0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0Qm9vbFByZWZlcmVu
Y2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5j
ZXMgX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleTpdKToKKyAg
ICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgX3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0
aFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgX3NldFN0cmluZ1By
ZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJl
ZmVyZW5jZXMgX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZhbHVlOmZvcktleTpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oOgorCiAyMDIwLTEw
LTIxICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1Mg
V0sxXSBwcm92aWRlIGEgd2F5IGZvciBBcHBsZS1pbnRlcm5hbCBjbGllbnRzIHRvIGRpc2FibGUg
bGluayBwcmV2aWV3CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZXMubW0JKHJldmlzaW9uIDI2ODk1MSkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEw
MjUsNyArMTAyNSw2IEBAIC0gKFdlYkNhY2hlTW9kZWwpY2FjaGVNb2RlbAogICAgIHJldHVybiAo
V2ViQ2FjaGVNb2RlbClbc2VsZiBfaW50ZWdlclZhbHVlRm9yS2V5OldlYktpdENhY2hlTW9kZWxQ
cmVmZXJlbmNlS2V5XTsKIH0KIAotCiAtICh2b2lkKXNldFN1cHByZXNzZXNJbmNyZW1lbnRhbFJl
bmRlcmluZzooQk9PTClzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmcKIHsKICAgICBbc2Vs
ZiBfc2V0Qm9vbFZhbHVlOnN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZyBmb3JLZXk6V2Vi
S2l0U3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nS2V5XTsKQEAgLTE2NjAsMjQgKzE2NTks
MTYgQEAgKyAodm9pZClfc2V0SUJDcmVhdG9ySUQ6KE5TU3RyaW5nICopc3RyaQogICAgIFtvbGQg
cmVsZWFzZV07CiB9CiAKLSsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdT
ZXNzaW9uCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBXZWJUaHJlYWRMb2NrKCk7
Ci0jZW5kaWYKLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGlu
Z1Nlc3Npb24oKTsKLX0KLQotKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbgorLSAo
dm9pZClkaWRSZW1vdmVGcm9tV2ViVmlldwogewotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1h
cDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZGVsZXRlQWxsQ29va2llcygpOworICAgIEFTU0VS
VChfcHJpdmF0ZS0+bnVtV2ViVmlld3MpOworICAgIGlmICgtLV9wcml2YXRlLT5udW1XZWJWaWV3
cyA9PSAwKQorICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBv
c3ROb3RpZmljYXRpb25OYW1lOldlYlByZWZlcmVuY2VzUmVtb3ZlZE5vdGlmaWNhdGlvbiBvYmpl
Y3Q6c2VsZiB1c2VySW5mbzpuaWxdOwogfQogCi0rICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xv
YWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSlw
b2xpY3kKKy0gKHZvaWQpd2lsbEFkZFRvV2ViVmlldwogewotICAgIFJldGFpblB0cjxDRkhUVFBD
b29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFw
OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCk7Ci0gICAgQVNTRVJUKGNv
b2tpZVN0b3JhZ2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6
OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90IGNhbGxlZCBiZWZvcmVoYW5kLgot
ICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFn
ZS5nZXQoKSwgcG9saWN5KTsKKyAgICArK19wcml2YXRlLT5udW1XZWJWaWV3czsKIH0KIAogLSAo
Qk9PTClpc0RPTVBhc3RlQWxsb3dlZApAQCAtMTk1MSwyNiArMTk0Miw2IEBAIC0gKHZvaWQpc2V0
VXNlUHJlSFRNTDVQYXJzZXJRdWlya3M6KEJPT0wKICAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmZs
YWcgZm9yS2V5OldlYktpdFVzZVByZUhUTUw1UGFyc2VyUXVpcmtzS2V5XTsKIH0KIAotLSAodm9p
ZClkaWRSZW1vdmVGcm9tV2ViVmlldwotewotICAgIEFTU0VSVChfcHJpdmF0ZS0+bnVtV2ViVmll
d3MpOwotICAgIGlmICgtLV9wcml2YXRlLT5udW1XZWJWaWV3cyA9PSAwKQotICAgICAgICBbW05T
Tm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdCi0gICAgICAgICAgICBwb3N0Tm90aWZp
Y2F0aW9uTmFtZTpXZWJQcmVmZXJlbmNlc1JlbW92ZWROb3RpZmljYXRpb24KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgb2JqZWN0OnNlbGYKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJJ
bmZvOm5pbF07Ci19Ci0KLS0gKHZvaWQpd2lsbEFkZFRvV2ViVmlldwotewotICAgICsrX3ByaXZh
dGUtPm51bVdlYlZpZXdzOwotfQotCi0tICh2b2lkKV9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhW
YWx1ZTooTlNTdHJpbmcgKil2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5Ci17Ci0gICAgW3Nl
bGYgX3NldFN0cmluZ1ZhbHVlOnZhbHVlIGZvcktleTprZXldOwotfQotCiAtICh2b2lkKXNldEZ1
bGxTY3JlZW5FbmFibGVkOihCT09MKWZsYWcKIHsKICAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmZs
YWcgZm9yS2V5OldlYktpdEZ1bGxTY3JlZW5FbmFibGVkUHJlZmVyZW5jZUtleV07CkBAIC0zMDEz
LDYgKzI5ODQsNjggQEAgLSAodm9pZClfc2V0RW5hYmxlZDooQk9PTCl2YWx1ZSBmb3JGZWF0dQog
CiBAZW5kCiAKK0BpbXBsZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVRlc3Rp
bmcpCisKKysgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uCit7
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBXZWJUaHJlYWRMb2NrKCk7CisjZW5kaWYK
KyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24o
KTsKK30KKworKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNj
ZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9saWN5Cit7CisgICAgYXV0byBj
b29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKS5jb29raWVTdG9yYWdlKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoY29va2llU3RvcmFn
ZSk7IC8vIFdpbGwgZmFpbCB3aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9O
ZXdUZXN0aW5nU2Vzc2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhhbmQuCisgICAgQ0ZIVFRQ
Q29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBw
b2xpY3kpOworfQorCisrICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uCit7CisgICAg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5kZWxldGVB
bGxDb29raWVzKCk7Cit9CisKKy0gKHZvaWQpX3Jlc2V0VG9EZWZhdWx0VmFsdWVzRm9yVGVzdGlu
ZworeworICAgIFdlYkNhY2hlTW9kZWwgb2xkQ2FjaGVNb2RlbCA9IHNlbGYuY2FjaGVNb2RlbDsK
KworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgZGlzcGF0Y2hfYmFycmllcl9zeW5jKF9w
cml2YXRlLT5yZWFkV3JpdGVRdWV1ZSwgXnsKKyAgICAgICAgX3ByaXZhdGUtPnZhbHVlcyA9IGFk
b3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgfSk7CisjZWxz
ZQorICAgIF9wcml2YXRlLT52YWx1ZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBh
bGxvY10gaW5pdF0pOworI2VuZGlmCisKKyAgICBbc2VsZiBfdXBkYXRlUHJpdmF0ZUJyb3dzaW5n
U3RhdGVUbzpbc2VsZiBwcml2YXRlQnJvd3NpbmdFbmFibGVkXV07CisgICAgW3NlbGYgX3Bvc3RQ
cmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb25dOworICAgIGlmIChvbGRDYWNoZU1vZGVsICE9
IFtzZWxmIGNhY2hlTW9kZWxdKQorICAgICAgICBbc2VsZiBfcG9zdENhY2hlTW9kZWxDaGFuZ2Vk
Tm90aWZpY2F0aW9uXTsKK30KKworLSAodm9pZClfc2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0aW5n
V2l0aFZhbHVlOihCT09MKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2Vs
ZiBfc2V0Qm9vbFZhbHVlOnZhbHVlIGZvcktleTprZXldOworfQorCistICh2b2lkKV9zZXRVSW50
MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZToodWludDMyX3QpdmFsdWUgZm9yS2V5OihO
U1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9zZXRJbnRlZ2VyVmFsdWU6dmFsdWUgZm9yS2V5
OmtleV07Cit9CisKKy0gKHZvaWQpX3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZh
bHVlOihkb3VibGUpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9z
ZXRGbG9hdFZhbHVlOnZhbHVlIGZvcktleTprZXldOworfQorCistICh2b2lkKV9zZXRTdHJpbmdQ
cmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZSBmb3JLZXk6KE5T
U3RyaW5nICopa2V5Cit7CisgICAgW3NlbGYgX3NldFN0cmluZ1ZhbHVlOnZhbHVlIGZvcktleTpr
ZXldOworfQorCitAZW5kCisKIEBpbXBsZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNlcyAoV2ViUHJp
dmF0ZVByZWZlcmVuY2VzQ29udmVydGVkVG9XZWJGZWF0dXJlKQogCiAtIChCT09MKXVzZXJHZXN0
dXJlUHJvbWlzZVByb3BhZ2F0aW9uRW5hYmxlZApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCShyZXZpc2lv
biAyNjg5NTEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVu
Y2VzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSwxMyArODksNiBAQCBAaW50ZXJmYWNl
IFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlKQogKyAodm9pZClfc2V0SW5pdGlhbERlZmF1bHRU
ZXh0RW5jb2RpbmdUb1N5c3RlbUVuY29kaW5nOwogKyAodm9pZClfc2V0SUJDcmVhdG9ySUQ6KE5T
U3RyaW5nICopc3RyaW5nOwogCi0vLyBGb3IgRHVtcFJlbmRlclRyZWUgdXNlIG9ubHkuCi0rICh2
b2lkKV9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbjsKLSsgKHZvaWQpX3Nl
dEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29v
a2llQWNjZXB0UG9saWN5KWNvb2tpZUFjY2VwdFBvbGljeTsKLSsgKHZvaWQpX2NsZWFyTmV0d29y
a0xvYWRlclNlc3Npb247Ci0vLyBVc2VkIHRvIHNldCBwcmVmZXJlbmNlIHNwZWNpZmllZCBpbiB0
aGUgdGVzdCB2aWEgTGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKC4uKS4K
LS0gKHZvaWQpX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZhbHVlOihOU1N0cmluZyAqKXZhbHVl
IGZvcktleTooTlNTdHJpbmcgKilrZXk7Ci0KICsgKHZvaWQpc2V0V2ViS2l0TGlua1RpbWVWZXJz
aW9uOihpbnQpdmVyc2lvbjsKIAogLy8gRm9yIFdlYlZpZXcncyB1c2Ugb25seS4KQEAgLTEwNyw2
ICsxMDAsOCBAQCBAaW50ZXJmYWNlIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlKQogLSAodm9p
ZClfc3luY2hyb25pemVXZWJTdG9yYWdlUG9saWN5V2l0aENvb2tpZVBvbGljeTsKICNlbmRpZgog
CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBhdXRvbWF0aWNhbGx5RGV0ZWN0c0NhY2hlTW9k
ZWw7CisKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9aXNETlNQcmVmZXRjaGluZ0VuYWJs
ZWQpIEJPT0wgRE5TUHJlZmV0Y2hpbmdFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMpIEJP
T0wgZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBXZWJLaXRK
YXZhU2NyaXB0UnVudGltZUZsYWdzIGphdmFTY3JpcHRSdW50aW1lRmxhZ3M7CkBAIC0xMTQsNyAr
MTA5LDYgQEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZSkKIEBwcm9wZXJ0
eSAobm9uYXRvbWljKSBCT09MIGFwcGxpY2F0aW9uQ2hyb21lTW9kZUVuYWJsZWQ7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYykgQk9PTCB1c2VzRW5jb2RpbmdEZXRlY3RvcjsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljKSBCT09MIHNocmlua3NTdGFuZGFsb25lSW1hZ2VzVG9GaXQ7Ci1AcHJvcGVydHkgKG5v
bmF0b21pYykgQk9PTCBhdXRvbWF0aWNhbGx5RGV0ZWN0c0NhY2hlTW9kZWw7CiBAcHJvcGVydHkg
KG5vbmF0b21pYywgZ2V0dGVyPWRvbVRpbWVyc1Rocm90dGxpbmdFbmFibGVkKSBCT09MIERPTVRp
bWVyc1Rocm90dGxpbmdFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgd2ViQXJj
aGl2ZURlYnVnTW9kZUVuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBsb2NhbEZp
bGVDb250ZW50U25pZmZpbmdFbmFibGVkOwpAQCAtMzEwLDYgKzMwNCwxOCBAQCBAaW50ZXJmYWNl
IFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlRmVhCiAtICh2b2lkKV9zZXRFbmFibGVkOihCT09M
KXZhbHVlIGZvckZlYXR1cmU6KFdlYkZlYXR1cmUgKilmZWF0dXJlOwogQGVuZAogCitAaW50ZXJm
YWNlIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlVGVzdGluZykKKysgKHZvaWQpX3N3aXRjaE5l
dHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uOworKyAodm9pZClfc2V0Q3VycmVudE5ldHdv
cmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xp
Y3kpY29va2llQWNjZXB0UG9saWN5OworKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lv
bjsKKworLSAodm9pZClfcmVzZXRUb0RlZmF1bHRWYWx1ZXNGb3JUZXN0aW5nOworLSAodm9pZClf
c2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihCT09MKXZhbHVlIGZvcktleToo
TlNTdHJpbmcgKilrZXk7CistICh2b2lkKV9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dp
dGhWYWx1ZToodWludDMyX3QpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZvaWQp
X3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihkb3VibGUpdmFsdWUgZm9y
S2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZvaWQpX3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0
aW5nV2l0aFZhbHVlOihOU1N0cmluZyAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXk7CitA
ZW5kCisKIC8vIEZJWE1FOiBJZiB0aGVzZSBhcmUgbm90IHVzZWQgYW55d2hlcmUsIHdlIHNob3Vs
ZCByZW1vdmUgdGhlbSBhbmQgb25seSB1c2UgV2ViRmVhdHVyZSBtZWNoYW5pc20gZm9yIHRoZSBw
cmVmZXJlbmNlLgogQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVByZWZlcmVu
Y2VzQ29udmVydGVkVG9XZWJGZWF0dXJlKQogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgdXNl
ckdlc3R1cmVQcm9taXNlUHJvcGFnYXRpb25FbmFibGVkOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjY4OTUxKQorKysgVG9v
bHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjAtMTAtMjMg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFtUZXN0aW5nXSBDb252
ZXJ0IER1bXBSZW5kZXJUcmVlIHRvIHVzZSBnZW5lcmF0ZWQgdGVzdCBoZWFkZXIgb3B0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3ODgwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgRnVsbHkgc3VwcG9y
dCB1c2Ugb2YgYW55IFdlYlByZWZlcmVuY2VzKi55YW1sIHByZWZlcmVuY2UgaW4gRHVtcFJlbmRl
clRyZWUgKGZvciBtYWNPUykgYnk6CisgICAgICAgICAgICAtIE1vdmluZyBEdW1wUmVuZGVyVHJl
ZSdzIFRlc3RPcHRpb25zIHRvIGJlIGZ1bGx5IGJhY2tlZCBieSBUZXN0RmVhdHVyZXMgbGlrZSBX
ZWJLaXRUZXN0UnVubm5lci4KKyAgICAgICAgICAgIC0gQWRvcHRpbmcgbmV3IFdlYlByZWZlcmVu
Y2VzIFNQSSBmb3Igc2V0dGluZyBhbnkgcHJlZmVyZW5jZSBieSBrZXkgYW5kIHJlc2V0IGFsbCBw
cmVmZXJlbmNlcyBrZXlzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tOgorICAgICAgICAodG9OUyk6CisgICAgICAgIChyZXNldFdlYlByZWZlcmVuY2Vz
VG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9w
dGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgor
ICAgICAgICAoVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMpOgorCiAyMDIwLTEwLTIy
ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIElQQyB0ZXN0aW5n
IEFQSSBzaG91bGQgZXhwb3NlIEFycmF5QnVmZmVyIGZvciBhbiB1bmtub3duIGRlY29kZWQgYXJn
dW1lbnQKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNjg5
NTEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNiArNDAsNyBAQCBsaXN0KEFQUEVORCBEdW1wUmVuZGVyVHJlZV9QUklWQVRFX0lO
Q0xVCiApCiAKIHNldChEdW1wUmVuZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVTCisg
ICAgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVz
dE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIKICAgICAke0R1
bXBSZW5kZXJUcmVlX0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9u
c0dlbmVyYXRlZEtleXMuaC5lcmIKICkKIApAQCAtNTMsMTIgKzU0LDEzIEBAIHNldChEdW1wUmVu
ZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVMKIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcygke0R1
bXBSZW5kZXJUcmVlX1dFQl9QUkVGRVJFTkNFU30gUFJPUEVSVElFUyBHRU5FUkFURUQgVFJVRSkK
IAogYWRkX2N1c3RvbV9jb21tYW5kKAotICAgIE9VVFBVVCAke0R1bXBSZW5kZXJUcmVlX0RFUklW
RURfU09VUkNFU19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCisgICAgT1VUUFVUICR7
RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vVGVzdE9wdGlvbnNHZW5lcmF0ZWRX
ZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNF
U19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCiAgICAgREVQRU5EUyAke0R1bXBSZW5k
ZXJUcmVlX1dFQl9QUkVGRVJFTkNFU19URU1QTEFURVN9ICR7RHVtcFJlbmRlclRyZWVfV0VCX1BS
RUZFUkVOQ0VTfSBXVEZfQ29weVByZWZlcmVuY2VzCi0gICAgQ09NTUFORCAke1JVQllfRVhFQ1VU
QUJMRX0gJHtXVEZfU0NSSVBUU19ESVJ9L0dlbmVyYXRlUHJlZmVyZW5jZXMucmIgLS1mcm9udGVu
ZCBXZWJLaXRMZWdhY3kgLS1iYXNlICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQ
cmVmZXJlbmNlcy55YW1sIC0tZGVidWcgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dl
YlByZWZlcmVuY2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRhbCAke1dURl9TQ1JJUFRTX0RJUn0v
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCAtLWludGVybmFsICR7
V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwg
LS1vdXRwdXREaXIgIiR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0iIC0tdGVt
cGxhdGUgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
VGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCisgICAgQ09NTUFORCAke1JVQllfRVhFQ1VU
QUJMRX0gJHtXVEZfU0NSSVBUU19ESVJ9L0dlbmVyYXRlUHJlZmVyZW5jZXMucmIgLS1mcm9udGVu
ZCBXZWJLaXRMZWdhY3kgLS1iYXNlICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQ
cmVmZXJlbmNlcy55YW1sIC0tZGVidWcgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dl
YlByZWZlcmVuY2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRhbCAke1dURl9TQ1JJUFRTX0RJUn0v
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCAtLWludGVybmFsICR7
V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwg
LS1vdXRwdXREaXIgIiR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0iIC0tdGVt
cGxhdGUgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
VGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIgLS10ZW1w
bGF0ZSAke0R1bXBSZW5kZXJUcmVlX0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9U
ZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIKICAgICBWRVJCQVRJTSkKIAogbGlzdChBUFBF
TkQgRHVtcFJlbmRlclRyZWVfU09VUkNFUworICAgICR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9T
T1VSQ0VTX0RJUn0vVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNw
cAogICAgICR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRLZXlzLmgKICkKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjg5NTEpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CSh3b3Jr
aW5nIGNvcHkpCkBAIC03LDYgKzcsNyBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2Fs
L2luY2x1ZGUvCiAkKFBST0pFQ1RfRElSKS8uLi9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29u
dGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCiAkKFBST0pFQ1RfRElSKS9CaW5k
aW5ncy9Db2RlR2VuZXJhdG9yRHVtcFJlbmRlclRyZWUucG0KICQoUFJPSkVDVF9ESVIpL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKKyQoUFJPSkVDVF9ESVIpL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0
ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIKICQo
UFJPSkVDVF9ESVIpL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5l
cmF0ZWRLZXlzLmguZXJiCiAkKFBST0pFQ1RfRElSKS9TY3JpcHRzL2dlbmVyYXRlLWRlcml2ZWQt
c291cmNlcy5zaAogJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0NvZGVHZW5lcmF0b3Iu
cG0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjg5NTEpCisrKyBUb29scy9EdW1wUmVuZGVy
VHJlZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkod29ya2luZyBjb3B5KQpAQCAt
MSw0ICsxLDUgQEAKICMgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSB0aGUgZ2VuZXJhdGUteGNm
aWxlbGlzdHMgc2NyaXB0LgogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1
bXBSZW5kZXJUcmVlL0pTVUlTY3JpcHRDb250cm9sbGVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVlL0pTVUlTY3JpcHRDb250cm9sbGVyLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9EdW1wUmVuZGVyVHJlZS9UZXN0
T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnNHZW5lcmF0
ZWRLZXlzLmgKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMubWFrZQko
cmV2aXNpb24gMjY4OTUxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMu
bWFrZQkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsNyBAQCBXRUJfUFJFRkVSRU5DRVMgPSBc
CiAjCiAKIFdFQl9QUkVGRVJFTkNFU19HRU5FUkFURURfRklMRVMgPSBcCisgICAgVGVzdE9wdGlv
bnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCBcCiAgICAgVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRLZXlzLmggXAogIwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDI2ODk1MSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsxMDksNyBA
QAogCQk1REI5QUM5RTBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjcwMC50
dGYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDM3NUYwOTc3MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyNzAwLnR0ZiAq
LzsgfTsKIAkJNURCOUFDOUYwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktpdFdlaWdodFdhdGNoZXI4
MDAudHRmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzNzVGMDk3ODBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjgwMC50
dGYgKi87IH07CiAJCTVEQjlBQ0EwMEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRXYXRj
aGVyOTAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzc1RjA5NzkwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXI5
MDAudHRmICovOyB9OworCQk3Qzk4OTNERjI1NDMzRjhFMDAzNTRFQkMgLyogVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTg5M0RFMjU0MzNDODcwMDM1NEVCQyAvKiBUZXN0
T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwICovOyB9OwogCQk3Q0ZG
OUJCRjI1MzNCQjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRkY5QkJFMjUzM0JCMjQwMDA4MDA5RiAv
KiBUZXN0RmVhdHVyZXMuY3BwICovOyB9OwogCQk3Q0ZGOUJDMjI1MzNCQzE2MDAwODAwOUYgLyog
VGVzdENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0NGRjlCQzEyNTMzQkMxNjAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmNwcCAqLzsgfTsK
IAkJODAwNDVBRUUxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25I
YW5kbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODAwNDVBRUMxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5k
bGVyLm1tICovOyB9OwpAQCAtMzMzLDcgKzMzNCw4IEBACiAJCTdDNDQ2OTdGMjUzNzdBMDIwMDI0
MjkwQSAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRLZXlzLmguZXJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzQ0Njk4
MDI1Mzc3QTAyMDAyNDI5MEEgLyogY2hlY2steGNmaWxlbGlzdHMuc2ggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5zaDsgcGF0aCA9
ICJjaGVjay14Y2ZpbGVsaXN0cy5zaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
NDQ2OTgxMjUzNzdBMDIwMDI0MjkwQSAvKiBnZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2ggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlw
dC5zaDsgcGF0aCA9ICJnZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2giOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk3QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5o
OyBwYXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdDNDQ2OTg1MjUzNzdFNTIwMDI0MjkwQSAvKiBUZXN0T3B0aW9uc0dlbmVyYXRl
ZEtleXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDOTg5M0RFMjU0MzNDODcwMDM1NEVCQyAvKiBUZXN0
T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NCQkMzMjIxRERGQ0Y5QTAwNzg2QjlEIC8qIFRl
c3RPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RPcHRpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRkY5QkJEMjUzM0JCMjQwMDA4MDA5
RiAvKiBUZXN0RmVhdHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdEZlYXR1cmVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRkY5QkJFMjUzM0JCMjQwMDA4MDA5RiAvKiBUZXN0
RmVhdHVyZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVzdEZlYXR1cmVzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc3Nyw2ICs3NzksNyBAQAogCQk3QzQ0Njk4MjI1Mzc3
QzM0MDAyNDI5MEEgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk3Qzk4OTNERTI1NDMzQzg3MDAzNTRFQkMgLyogVGVzdE9w
dGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAqLywKIAkJCQk3QzQ0Njk4
NTI1Mzc3RTUyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmggKi8sCiAJCQkp
OwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwpAQCAtMTI2MCw2ICsxMjYzLDcgQEAKIAkJ
CQlBOEQ3OUNFQjBGQzI4QjJDMDA0QUM4RkUgLyogRHVtcFJlbmRlclRyZWVGaWxlRHJhZ2dpbmdT
b3VyY2UubSBpbiBTb3VyY2VzICovLAogCQkJCUE4QjkxQURBMENGM0IzMkYwMDhGOTFGRiAvKiBE
dW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEI5MUFEQzBD
RjNCMzJGMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVXaW5kb3cubW0gaW4gU291cmNlcyAqLywK
KwkJCQk3Qzk4OTNERjI1NDMzRjhFMDAzNTRFQkMgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJL
aXRMZWdhY3lLZXlNYXBwaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQTE4QjYyMEM5QjA4
QzIwMDExNDM2OSAvKiBFZGl0aW5nRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0Ex
OEI3MDBDOUIwOERCMDAxMTQzNjkgLyogRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDQTE4QjY0MEM5QjA4QzIwMDExNDM2OSAvKiBGcmFtZUxvYWREZWxlZ2F0
ZS5tbSBpbiBTb3VyY2VzICovLApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvU2NyaXB0cy9Q
cmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1h
cHBpbmcuY3BwLmVyYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9TY3JpcHRz
L1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5
TWFwcGluZy5jcHAuZXJiCShub25leGlzdGVudCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Nj
cmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdh
Y3lLZXlNYXBwaW5nLmNwcC5lcmIJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoK
KyAqIDwlPSBAd2FybmluZyAlPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJUZXN0T3B0aW9ucy5oIgorCituYW1lc3BhY2UgV1RSIHsKKworc3RkOjpzdHJpbmcg
VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShjb25zdCBzdGQ6OnN0cmlu
ZyYgd2ViUHJlZmVyZW5jZXNLZXkpCit7CisgICAgc3RhdGljIHN0ZDo6dW5vcmRlcmVkX21hcDxz
dGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IG5vblN0YW5kYXJkS2V5cyA9IHsKKzwlLSBmb3IgQHBy
ZWYgaW4gQGV4cG9zZWRQcmVmZXJlbmNlcy5zZWxlY3QgeyB8cHwgcC5vcHRzWyJ3ZWJLaXRMZWdh
Y3lQcmVmZXJlbmNlS2V5Il0gfSBkbyAtJT4KKyAgICAgICAgeyAiPCU9IEBwcmVmLm5hbWUgJT4i
LCAiPCU9IEBwcmVmLnByZWZlcmVuY2VLZXkgJT4iIH0sIFwKKzwlLSBlbmQgLSU+CisgICAgfTsK
KworICAgIGF1dG8gaXQgPSBub25TdGFuZGFyZEtleXMuZmluZCh3ZWJQcmVmZXJlbmNlc0tleSk7
CisgICAgaWYgKGl0ICE9IG5vblN0YW5kYXJkS2V5cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0
LT5zZWNvbmQ7CisKKyAgICByZXR1cm4gIldlYktpdCIgKyB3ZWJQcmVmZXJlbmNlc0tleTsKK30K
KworfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQko
cmV2aXNpb24gMjY4OTUxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNiArMTMwLDExIEBAIGV4dGVybiAiQyIgewog
I2ltcG9ydCA8bWFjaC1vL2dldHNlY3QuaD4KIH0KIAorc3RhdGljIFJldGFpblB0cjxOU1N0cmlu
Zz4gdG9OUyhjb25zdCBzdGQ6OnN0cmluZyYgc3RyaW5nKQoreworICAgIHJldHVybiBhZG9wdE5T
KFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoVVRGOFN0cmluZzpzdHJpbmcuY19zdHIoKV0pOwor
fQorCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBAaW50ZXJmYWNlIER1bXBSZW5kZXJUcmVl
QXBwbGljYXRpb24gOiBOU0FwcGxpY2F0aW9uCiBAZW5kCkBAIC04NDcsNiArODUyLDggQEAgc3Rh
dGljIHZvaWQgZW5hYmxlRXhwZXJpbWVudGFsRmVhdHVyZXMoVwogLy8gQ2FsbGVkIGJlZm9yZSBl
YWNoIHRlc3QuCiBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFs
dWVzKFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcykKIHsKKyAgICBbcHJlZmVyZW5jZXMgX3Jl
c2V0VG9EZWZhdWx0VmFsdWVzRm9yVGVzdGluZ107CisKICAgICBlbmFibGVFeHBlcmltZW50YWxG
ZWF0dXJlcyhwcmVmZXJlbmNlcyk7CiAKICAgICBbcHJlZmVyZW5jZXMgc2V0TmVlZHNTdG9yYWdl
QWNjZXNzRnJvbUZpbGVVUkxzUXVpcms6IE5PXTsKQEAgLTk2OSw0MSArOTc2LDIxIEBAIHN0YXRp
YyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3QKICAgICBbV2ViUHJlZmVyZW5jZXMg
X3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTpOU0hUVFBD
b29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbl07CiB9CiAKLXN0YXRp
YyBib29sIGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKHN0ZDo6c3RyaW5nIGtleSwgYm9v
bCBkZWZhdWx0VmFsdWUsIGNvbnN0IFdUUjo6VGVzdE9wdGlvbnMmIG9wdGlvbnMpCi17Ci0gICAg
YXV0byBpdCA9IG9wdGlvbnMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcygpLmZpbmQoa2V5KTsK
LSAgICBpZiAoaXQgIT0gb3B0aW9ucy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkuZW5kKCkp
Ci0gICAgICAgIHJldHVybiBpdC0+c2Vjb25kOwotICAgIHJldHVybiBkZWZhdWx0VmFsdWU7Ci19
Ci0KIHN0YXRpYyB2b2lkIHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlvbnMoV2ViUHJlZmVy
ZW5jZXMgKnByZWZlcmVuY2VzLCBjb25zdCBXVFI6OlRlc3RPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIHByZWZlcmVuY2VzLnByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBvcHRpb25zLnVzZUVwaGVt
ZXJhbFNlc3Npb24oKTsKIAotICAgIHByZWZlcmVuY2VzLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxl
ZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJBdHRhY2htZW50RWxlbWVudEVuYWJs
ZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuYWNjZWxlcmF0ZWREcmF3aW5n
RW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJBY2NlbGVyYXRlZERyYXdp
bmdFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLm1lbnVJdGVtRWxl
bWVudEVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiTWVudUl0ZW1FbGVt
ZW50RW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5rZXlnZW5FbGVt
ZW50RW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJLZXlnZW5FbGVtZW50
RW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5tb2Rlcm5NZWRpYUNv
bnRyb2xzRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJNb2Rlcm5NZWRp
YUNvbnRyb2xzRW5hYmxlZCIsIHRydWUsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmluc3Bl
Y3RvckFkZGl0aW9uc0VuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiSW5z
cGVjdG9yQWRkaXRpb25zRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNl
cy5hbGxvd0Nyb3NzT3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyA9IGJvb2xX
ZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJBbGxvd0Nyb3NzT3JpZ2luU3VicmVzb3VyY2VzVG9B
c2tGb3JDcmVkZW50aWFscyIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5jb2xv
ckZpbHRlckVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQ29sb3JGaWx0
ZXJFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLnNlbGVjdGlvbkFj
cm9zc1NoYWRvd0JvdW5kYXJpZXNFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFs
dWUoIlNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXNFbmFibGVkIiwgdHJ1ZSwgb3B0aW9u
cyk7Ci0gICAgcHJlZmVyZW5jZXMud2ViR1BVRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVh
dHVyZVZhbHVlKCJXZWJHUFVFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVu
Y2VzLkNTU0xvZ2ljYWxFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkNT
U0xvZ2ljYWxFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmxpbmVI
ZWlnaHRVbml0c0VuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiTGluZUhl
aWdodFVuaXRzRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5hZENs
aWNrQXR0cmlidXRpb25FbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkFk
Q2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5j
ZXMucmVzaXplT2JzZXJ2ZXJFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUo
IlJlc2l6ZU9ic2VydmVyRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNl
cy5DU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0
dXJlVmFsdWUoIkNTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWQiLCBmYWxzZSwgb3B0aW9u
cyk7Ci0gICAgcHJlZmVyZW5jZXMuY29yZU1hdGhNTEVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5j
ZUZlYXR1cmVWYWx1ZSgiQ29yZU1hdGhNTEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAg
cHJlZmVyZW5jZXMucmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5j
ZUZlYXR1cmVWYWx1ZSgiUmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWQiLCBmYWxzZSwgb3B0aW9u
cyk7Ci0gICAgcHJlZmVyZW5jZXMuYXN5bmNDbGlwYm9hcmRBUElFbmFibGVkID0gYm9vbFdlYlBy
ZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxlZCIsIGZhbHNlLCBv
cHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy51c2VzUGFnZUNhY2hlID0gYm9vbFdlYlByZWZlcmVu
Y2VGZWF0dXJlVmFsdWUoIlVzZXNCYWNrRm9yd2FyZENhY2hlIiwgZmFsc2UsIG9wdGlvbnMpOwot
ICAgIHByZWZlcmVuY2VzLmxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVk
ID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkxheW91dEZvcm1hdHRpbmdDb250ZXh0
SW50ZWdyYXRpb25FbmFibGVkIiwgdHJ1ZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuYXNw
ZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5j
ZUZlYXR1cmVWYWx1ZSgiQXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWQi
LCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuYWxsb3dUb3BOYXZpZ2F0aW9uVG9E
YXRhVVJMcyA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJBbGxvd1RvcE5hdmlnYXRp
b25Ub0RhdGFVUkxzIiwgdHJ1ZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuY29udGFjdFBp
Y2tlckFQSUVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQ29udGFjdFBp
Y2tlckFQSUVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7CisgICAgZm9yIChjb25zdCBhdXRvJiBb
a2V5LCB2YWx1ZV0gOiBvcHRpb25zLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAg
ICAgW3ByZWZlcmVuY2VzIF9zZXRCb29sUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dmFs
dWUgZm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNl
S2V5KGtleSkpLmdldCgpXTsKKworICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDog
b3B0aW9ucy5kb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAgICAgW3ByZWZlcmVu
Y2VzIF9zZXREb3VibGVQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZSBmb3JLZXk6
dG9OUyhXVFI6OlRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVuY2VLZXkoa2V5KSku
Z2V0KCldOworCisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLnVp
bnQzMldlYlByZWZlcmVuY2VGZWF0dXJlcygpKQorICAgICAgICBbcHJlZmVyZW5jZXMgX3NldFVJ
bnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnZhbHVlIGZvcktleTp0b05TKFdUUjo6
VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShrZXkpKS5nZXQoKV07CisK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuc3RyaW5nV2ViUHJl
ZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0U3RyaW5nUHJlZmVy
ZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dG9OUyh2YWx1ZSkuZ2V0KCkgZm9yS2V5OnRvTlMoV1RS
OjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGtleSkpLmdldCgpXTsK
IH0KIAogLy8gQ2FsbGVkIG9uY2Ugb24gRHVtcFJlbmRlclRyZWUgc3RhcnR1cC4KQEAgLTEyMTYs
MTQgKzEyMDMsNiBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlQ29uc2lzdGVudFRlc3RpbmdFbnZpCiAK
ICAgICBbW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdIHNldEF1dG9zYXZlczpO
T107CiAKLSAgICAvLyArW1dlYlByZWZlcmVuY2VzIF9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdU
ZXN0aW5nU2Vzc2lvbl0gY2FsbHMgK1tOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXSwgd2hpY2gg
aW5pdGlhbGl6ZXMgYSBkZWZhdWx0IGNhY2hlIG9uIGRpc2suCi0gICAgLy8gTWFraW5nIHRoZSBz
aGFyZWQgY2FjaGUgbWVtb3J5LW9ubHkgYXZvaWRzIHRvdWNoaW5nIHRoZSBmaWxlIHN5c3RlbS4K
LSAgICBSZXRhaW5QdHI8TlNVUkxDYWNoZT4gc2hhcmVkQ2FjaGUgPQotICAgICAgICBhZG9wdE5T
KFtbTlNVUkxDYWNoZSBhbGxvY10gaW5pdFdpdGhNZW1vcnlDYXBhY2l0eToxMDI0ICogMTAyNAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNrQ2FwYWNpdHk6MAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlza1BhdGg6bmlsXSk7Ci0g
ICAgW05TVVJMQ2FjaGUgc2V0U2hhcmVkVVJMQ2FjaGU6c2hhcmVkQ2FjaGUuZ2V0KCldOwotCiAg
ICAgW1dlYlByZWZlcmVuY2VzIF9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lv
bl07CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTE4NzgsNiArMTg1Nyw3IEBAIHN0
YXRpYyB2b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXQKIAogICAgIHJlc2V0V2ViUHJl
ZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMod2ViVmlldy5wcmVmZXJlbmNlcyk7CiAgICAgc2V0
V2ViUHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9ucyh3ZWJWaWV3LnByZWZlcmVuY2VzLCBvcHRpb25z
KTsKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBbd2ViVmlldyBzZXRXYW50c0xheWVyOm9wdGlv
bnMubGF5ZXJCYWNrZWRXZWJWaWV3KCldOwogI2VuZGlmCkluZGV4OiBUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQkocmV2aXNpb24gMjY4OTUxKQorKysgVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTYwOSw3
ICs2MDksNyBAQCB2b2lkIFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZShKU1N0CiAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiB2YWx1ZUNGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0
cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB2YWx1ZSkpOwogICAgIE5TU3RyaW5nICp2YWx1ZU5T
ID0gKF9fYnJpZGdlIE5TU3RyaW5nICopdmFsdWVDRi5nZXQoKTsKIAotICAgIFtbW21haW5GcmFt
ZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZhbHVlOnZh
bHVlTlMgZm9yS2V5OmtleU5TXTsKKyAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5j
ZXNdIF9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZU5TIGZvcktl
eTprZXlOU107CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQWxsVmlzaXRlZExpbmtzKCkK
SW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lv
biAyNjg5NTEpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTIxLDE3ICs5MjEsMTYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6
cmVzZXRQcmVmZXJlbmNlc1RvQwogICAgIHBsYXRmb3JtUmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lz
dGVudFZhbHVlcygpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRp
b25zLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKLSAgICAgICAgV0tQcmVmZXJlbmNlc1Nl
dEJvb2xWYWx1ZUZvcktleShwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7Cisg
ICAgICAgIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKHByZWZlcmVu
Y2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgW2tl
eSwgdmFsdWVdIDogb3B0aW9ucy5kb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKLSAgICAg
ICAgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5KHByZWZlcmVuY2VzLCB2YWx1ZSwg
dG9XSyhrZXkpLmdldCgpKTsKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9y
S2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CiAKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMudWludDMyV2ViUHJlZmVy
ZW5jZUZlYXR1cmVzKCkpCi0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktl
eShwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CisgICAgICAgIFdLUHJlZmVy
ZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVyZW5jZXMsIHZhbHVlLCB0
b1dLKGtleSkuZ2V0KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBv
cHRpb25zLnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAgICAgICBXS1ByZWZlcmVu
Y2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkocHJlZmVyZW5jZXMsIHRvV0sodmFsdWUpLmdldCgpLCB0
b1dLKGtleSkuZ2V0KCkpOwotCisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZv
cktleUZvclRlc3RpbmcocHJlZmVyZW5jZXMsIHRvV0sodmFsdWUpLmdldCgpLCB0b1dLKGtleSku
Z2V0KCkpOwogfQogCiBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50
VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZXNldFN0YWdlIHJlc2V0U3RhZ2Up
Cg==
</data>
<flag name="commit-queue"
          id="428674"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412254</attachid>
            <date>2020-10-24 17:13:23 -0700</date>
            <delta_ts>2020-10-24 19:27:56 -0700</delta_ts>
            <desc>Experiment: Remove setSharedURLCache and new WebPreferences per test</desc>
            <filename>bug-217880-20201024171322.patch</filename>
            <type>text/plain</type>
            <size>33736</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg5NTEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTIwICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVu
ZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlbmFtZSBXS1ByZWZlcmVuY2VzU2V0
KlZhbHVlRm9yS2V5IFNQSSB0byBXS1ByZWZlcmVuY2VzU2V0KlZhbHVlRm9yS2V5Rm9yVGVzdGlu
ZworICAgICAgICB0byBtYWtlIGl0IGNsZWFyIHdoYXQgdGhleSBhcmUgdXNlZCBmb3IgYW5kIGZv
ciBjb25zaXN0ZW5jeSB3aXRoIFdlYktpdExlZ2FjeS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFs
dWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1
ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVl
Rm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVG
b3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JL
ZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5
KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleSk6
IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0
ZS5oOgorCiAyMDIwLTEwLTIyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIElQQyB0ZXN0aW5nIEFQSSBzaG91bGQgZXhwb3NlIEFycmF5QnVmZmVyIGZvciBhbiB1
bmtub3duIGRlY29kZWQgYXJndW1lbnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiAyNjg5NTEpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzgsMjIgKzc4LDIyIEBAIHZvaWQgV0tQcmVmZXJlbmNlc1NldEludGVybmFsRGVidWdGZWF0
dXIKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRJbnRlcm5hbERlYnVnRmVhdHVyZUVu
YWJsZWRGb3JLZXkodG9XVEZTdHJpbmcoaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVLZXkpLCB2YWx1ZSk7
CiB9CiAKLXZvaWQgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleShXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdL
UHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXNSZWYsIGJvb2wgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKIHsKICAgICB0b0lt
cGwocHJlZmVyZW5jZXNSZWYpLT5zZXRCb29sVmFsdWVGb3JLZXkodG9XVEZTdHJpbmcoa2V5KSwg
dmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleShXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdLU3RyaW5nUmVmIGtl
eSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdLU3RyaW5nUmVmIGtl
eSkKIHsKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRCb29sVmFsdWVGb3JLZXkodG9X
VEZTdHJpbmcoa2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5jZXNTZXRVSW50MzJW
YWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1aW50MzJfdCB2YWx1
ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JL
ZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIHVpbnQzMl90IHZh
bHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0
VUludDMyVmFsdWVGb3JLZXkodG9XVEZTdHJpbmcoa2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdL
UHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVu
Y2VzUmVmLCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZl
cmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJl
ZmVyZW5jZXNSZWYsIFdLU3RyaW5nUmVmIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAg
dG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0U3RyaW5nVmFsdWVGb3JLZXkodG9XVEZTdHJpbmco
a2V5KSwgdG9XVEZTdHJpbmcodmFsdWUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaAkocmV2aXNp
b24gMjY4OTUxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNl
c1JlZlByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDEwIEBAIFdLX0VYUE9S
VCB2b2lkIFdLUHJlZmVyZW5jZXNSZXNldEFsbEludGUKIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVy
ZW5jZXNTZXRJbnRlcm5hbERlYnVnRmVhdHVyZUZvcktleShXS1ByZWZlcmVuY2VzUmVmLCBib29s
LCBXS1N0cmluZ1JlZik7CiAKIC8vIFRoZSBmb2xsb3dpbmcgZ2VuZXJpYyBzZXR0ZXIgZnVuY3Rp
b25zIGFyZSBvbmx5IGludGVuZGVkIGZvciB1c2UgYnkgdGVzdGluZyBpbmZyYXN0cnVjdHVyZS4K
LVdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXkoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKLVdL
X0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleShXS1ByZWZlcmVu
Y2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7Ci1X
S19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXkoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7
Ci1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkoV0tQcmVm
ZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFsdWUsIFdLU3RyaW5nUmVm
IGtleSk7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9y
VGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZhbHVlLCBXS1N0
cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVl
Rm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUg
dmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0
VUludDMyVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIHVpbnQzMl90IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQgV0tQ
cmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVm
IHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKIAog
Ly8gRm9yIFRlc3QgUnVubmVyIFVzZSBvbmx5LgogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNl
c1Jlc2V0VGVzdFJ1bm5lck92ZXJyaWRlcyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVm
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODk1MSkKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDIwLTEwLTIwICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVuZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVk
IHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgIEV4cG9zZSBhIHNldCBvZiBzZXR0ZXJzIHRvIGZvciBEdW1wUmVuZGVyVHJlZSB0
byB1c2Ugd2hlbiBzZXR0aW5nIHByZWZlcmVuY2VzCisgICAgICAgIGJ5IHN0cmluZy4KKworICAg
ICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVu
Y2VzIF9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbl0pOgorICAgICAgICAo
K1tXZWJQcmVmZXJlbmNlcyBfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNj
ZXB0UG9saWN5Ol0pOgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBfY2xlYXJOZXR3b3JrTG9h
ZGVyU2Vzc2lvbl0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0Qm9vbFByZWZlcmVu
Y2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5j
ZXMgX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleTpdKToKKyAg
ICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgX3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0
aFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgX3NldFN0cmluZ1By
ZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJl
ZmVyZW5jZXMgX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZhbHVlOmZvcktleTpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oOgorCiAyMDIwLTEw
LTIxICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1Mg
V0sxXSBwcm92aWRlIGEgd2F5IGZvciBBcHBsZS1pbnRlcm5hbCBjbGllbnRzIHRvIGRpc2FibGUg
bGluayBwcmV2aWV3CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZXMubW0JKHJldmlzaW9uIDI2ODk1MSkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEw
MjUsNyArMTAyNSw2IEBAIC0gKFdlYkNhY2hlTW9kZWwpY2FjaGVNb2RlbAogICAgIHJldHVybiAo
V2ViQ2FjaGVNb2RlbClbc2VsZiBfaW50ZWdlclZhbHVlRm9yS2V5OldlYktpdENhY2hlTW9kZWxQ
cmVmZXJlbmNlS2V5XTsKIH0KIAotCiAtICh2b2lkKXNldFN1cHByZXNzZXNJbmNyZW1lbnRhbFJl
bmRlcmluZzooQk9PTClzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmcKIHsKICAgICBbc2Vs
ZiBfc2V0Qm9vbFZhbHVlOnN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZyBmb3JLZXk6V2Vi
S2l0U3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nS2V5XTsKQEAgLTE2NjAsMjQgKzE2NTks
MTYgQEAgKyAodm9pZClfc2V0SUJDcmVhdG9ySUQ6KE5TU3RyaW5nICopc3RyaQogICAgIFtvbGQg
cmVsZWFzZV07CiB9CiAKLSsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdT
ZXNzaW9uCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBXZWJUaHJlYWRMb2NrKCk7
Ci0jZW5kaWYKLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGlu
Z1Nlc3Npb24oKTsKLX0KLQotKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbgorLSAo
dm9pZClkaWRSZW1vdmVGcm9tV2ViVmlldwogewotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1h
cDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZGVsZXRlQWxsQ29va2llcygpOworICAgIEFTU0VS
VChfcHJpdmF0ZS0+bnVtV2ViVmlld3MpOworICAgIGlmICgtLV9wcml2YXRlLT5udW1XZWJWaWV3
cyA9PSAwKQorICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBv
c3ROb3RpZmljYXRpb25OYW1lOldlYlByZWZlcmVuY2VzUmVtb3ZlZE5vdGlmaWNhdGlvbiBvYmpl
Y3Q6c2VsZiB1c2VySW5mbzpuaWxdOwogfQogCi0rICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xv
YWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSlw
b2xpY3kKKy0gKHZvaWQpd2lsbEFkZFRvV2ViVmlldwogewotICAgIFJldGFpblB0cjxDRkhUVFBD
b29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFw
OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCk7Ci0gICAgQVNTRVJUKGNv
b2tpZVN0b3JhZ2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6
OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90IGNhbGxlZCBiZWZvcmVoYW5kLgot
ICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFn
ZS5nZXQoKSwgcG9saWN5KTsKKyAgICArK19wcml2YXRlLT5udW1XZWJWaWV3czsKIH0KIAogLSAo
Qk9PTClpc0RPTVBhc3RlQWxsb3dlZApAQCAtMTk1MSwyNiArMTk0Miw2IEBAIC0gKHZvaWQpc2V0
VXNlUHJlSFRNTDVQYXJzZXJRdWlya3M6KEJPT0wKICAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmZs
YWcgZm9yS2V5OldlYktpdFVzZVByZUhUTUw1UGFyc2VyUXVpcmtzS2V5XTsKIH0KIAotLSAodm9p
ZClkaWRSZW1vdmVGcm9tV2ViVmlldwotewotICAgIEFTU0VSVChfcHJpdmF0ZS0+bnVtV2ViVmll
d3MpOwotICAgIGlmICgtLV9wcml2YXRlLT5udW1XZWJWaWV3cyA9PSAwKQotICAgICAgICBbW05T
Tm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdCi0gICAgICAgICAgICBwb3N0Tm90aWZp
Y2F0aW9uTmFtZTpXZWJQcmVmZXJlbmNlc1JlbW92ZWROb3RpZmljYXRpb24KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgb2JqZWN0OnNlbGYKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJJ
bmZvOm5pbF07Ci19Ci0KLS0gKHZvaWQpd2lsbEFkZFRvV2ViVmlldwotewotICAgICsrX3ByaXZh
dGUtPm51bVdlYlZpZXdzOwotfQotCi0tICh2b2lkKV9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhW
YWx1ZTooTlNTdHJpbmcgKil2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5Ci17Ci0gICAgW3Nl
bGYgX3NldFN0cmluZ1ZhbHVlOnZhbHVlIGZvcktleTprZXldOwotfQotCiAtICh2b2lkKXNldEZ1
bGxTY3JlZW5FbmFibGVkOihCT09MKWZsYWcKIHsKICAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmZs
YWcgZm9yS2V5OldlYktpdEZ1bGxTY3JlZW5FbmFibGVkUHJlZmVyZW5jZUtleV07CkBAIC0zMDEz
LDYgKzI5ODQsNjggQEAgLSAodm9pZClfc2V0RW5hYmxlZDooQk9PTCl2YWx1ZSBmb3JGZWF0dQog
CiBAZW5kCiAKK0BpbXBsZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVRlc3Rp
bmcpCisKKysgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uCit7
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBXZWJUaHJlYWRMb2NrKCk7CisjZW5kaWYK
KyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24o
KTsKK30KKworKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNj
ZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9saWN5Cit7CisgICAgYXV0byBj
b29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKS5jb29raWVTdG9yYWdlKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoY29va2llU3RvcmFn
ZSk7IC8vIFdpbGwgZmFpbCB3aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9O
ZXdUZXN0aW5nU2Vzc2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhhbmQuCisgICAgQ0ZIVFRQ
Q29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBw
b2xpY3kpOworfQorCisrICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uCit7CisgICAg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5kZWxldGVB
bGxDb29raWVzKCk7Cit9CisKKy0gKHZvaWQpX3Jlc2V0VG9EZWZhdWx0VmFsdWVzRm9yVGVzdGlu
ZworeworICAgIFdlYkNhY2hlTW9kZWwgb2xkQ2FjaGVNb2RlbCA9IHNlbGYuY2FjaGVNb2RlbDsK
KworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgZGlzcGF0Y2hfYmFycmllcl9zeW5jKF9w
cml2YXRlLT5yZWFkV3JpdGVRdWV1ZSwgXnsKKyAgICAgICAgX3ByaXZhdGUtPnZhbHVlcyA9IGFk
b3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgfSk7CisjZWxz
ZQorICAgIF9wcml2YXRlLT52YWx1ZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBh
bGxvY10gaW5pdF0pOworI2VuZGlmCisKKyAgICBbc2VsZiBfdXBkYXRlUHJpdmF0ZUJyb3dzaW5n
U3RhdGVUbzpbc2VsZiBwcml2YXRlQnJvd3NpbmdFbmFibGVkXV07CisgICAgW3NlbGYgX3Bvc3RQ
cmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb25dOworICAgIGlmIChvbGRDYWNoZU1vZGVsICE9
IFtzZWxmIGNhY2hlTW9kZWxdKQorICAgICAgICBbc2VsZiBfcG9zdENhY2hlTW9kZWxDaGFuZ2Vk
Tm90aWZpY2F0aW9uXTsKK30KKworLSAodm9pZClfc2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0aW5n
V2l0aFZhbHVlOihCT09MKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2Vs
ZiBfc2V0Qm9vbFZhbHVlOnZhbHVlIGZvcktleTprZXldOworfQorCistICh2b2lkKV9zZXRVSW50
MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZToodWludDMyX3QpdmFsdWUgZm9yS2V5OihO
U1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9zZXRJbnRlZ2VyVmFsdWU6dmFsdWUgZm9yS2V5
OmtleV07Cit9CisKKy0gKHZvaWQpX3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZh
bHVlOihkb3VibGUpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9z
ZXRGbG9hdFZhbHVlOnZhbHVlIGZvcktleTprZXldOworfQorCistICh2b2lkKV9zZXRTdHJpbmdQ
cmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZSBmb3JLZXk6KE5T
U3RyaW5nICopa2V5Cit7CisgICAgW3NlbGYgX3NldFN0cmluZ1ZhbHVlOnZhbHVlIGZvcktleTpr
ZXldOworfQorCitAZW5kCisKIEBpbXBsZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNlcyAoV2ViUHJp
dmF0ZVByZWZlcmVuY2VzQ29udmVydGVkVG9XZWJGZWF0dXJlKQogCiAtIChCT09MKXVzZXJHZXN0
dXJlUHJvbWlzZVByb3BhZ2F0aW9uRW5hYmxlZApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCShyZXZpc2lv
biAyNjg5NTEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVu
Y2VzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSwxMyArODksNiBAQCBAaW50ZXJmYWNl
IFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlKQogKyAodm9pZClfc2V0SW5pdGlhbERlZmF1bHRU
ZXh0RW5jb2RpbmdUb1N5c3RlbUVuY29kaW5nOwogKyAodm9pZClfc2V0SUJDcmVhdG9ySUQ6KE5T
U3RyaW5nICopc3RyaW5nOwogCi0vLyBGb3IgRHVtcFJlbmRlclRyZWUgdXNlIG9ubHkuCi0rICh2
b2lkKV9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbjsKLSsgKHZvaWQpX3Nl
dEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29v
a2llQWNjZXB0UG9saWN5KWNvb2tpZUFjY2VwdFBvbGljeTsKLSsgKHZvaWQpX2NsZWFyTmV0d29y
a0xvYWRlclNlc3Npb247Ci0vLyBVc2VkIHRvIHNldCBwcmVmZXJlbmNlIHNwZWNpZmllZCBpbiB0
aGUgdGVzdCB2aWEgTGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKC4uKS4K
LS0gKHZvaWQpX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZhbHVlOihOU1N0cmluZyAqKXZhbHVl
IGZvcktleTooTlNTdHJpbmcgKilrZXk7Ci0KICsgKHZvaWQpc2V0V2ViS2l0TGlua1RpbWVWZXJz
aW9uOihpbnQpdmVyc2lvbjsKIAogLy8gRm9yIFdlYlZpZXcncyB1c2Ugb25seS4KQEAgLTEwNyw2
ICsxMDAsOCBAQCBAaW50ZXJmYWNlIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlKQogLSAodm9p
ZClfc3luY2hyb25pemVXZWJTdG9yYWdlUG9saWN5V2l0aENvb2tpZVBvbGljeTsKICNlbmRpZgog
CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBhdXRvbWF0aWNhbGx5RGV0ZWN0c0NhY2hlTW9k
ZWw7CisKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9aXNETlNQcmVmZXRjaGluZ0VuYWJs
ZWQpIEJPT0wgRE5TUHJlZmV0Y2hpbmdFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMpIEJP
T0wgZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBXZWJLaXRK
YXZhU2NyaXB0UnVudGltZUZsYWdzIGphdmFTY3JpcHRSdW50aW1lRmxhZ3M7CkBAIC0xMTQsNyAr
MTA5LDYgQEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZSkKIEBwcm9wZXJ0
eSAobm9uYXRvbWljKSBCT09MIGFwcGxpY2F0aW9uQ2hyb21lTW9kZUVuYWJsZWQ7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYykgQk9PTCB1c2VzRW5jb2RpbmdEZXRlY3RvcjsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljKSBCT09MIHNocmlua3NTdGFuZGFsb25lSW1hZ2VzVG9GaXQ7Ci1AcHJvcGVydHkgKG5v
bmF0b21pYykgQk9PTCBhdXRvbWF0aWNhbGx5RGV0ZWN0c0NhY2hlTW9kZWw7CiBAcHJvcGVydHkg
KG5vbmF0b21pYywgZ2V0dGVyPWRvbVRpbWVyc1Rocm90dGxpbmdFbmFibGVkKSBCT09MIERPTVRp
bWVyc1Rocm90dGxpbmdFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgd2ViQXJj
aGl2ZURlYnVnTW9kZUVuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBsb2NhbEZp
bGVDb250ZW50U25pZmZpbmdFbmFibGVkOwpAQCAtMzEwLDYgKzMwNCwxOCBAQCBAaW50ZXJmYWNl
IFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlRmVhCiAtICh2b2lkKV9zZXRFbmFibGVkOihCT09M
KXZhbHVlIGZvckZlYXR1cmU6KFdlYkZlYXR1cmUgKilmZWF0dXJlOwogQGVuZAogCitAaW50ZXJm
YWNlIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlVGVzdGluZykKKysgKHZvaWQpX3N3aXRjaE5l
dHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uOworKyAodm9pZClfc2V0Q3VycmVudE5ldHdv
cmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xp
Y3kpY29va2llQWNjZXB0UG9saWN5OworKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lv
bjsKKworLSAodm9pZClfcmVzZXRUb0RlZmF1bHRWYWx1ZXNGb3JUZXN0aW5nOworLSAodm9pZClf
c2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihCT09MKXZhbHVlIGZvcktleToo
TlNTdHJpbmcgKilrZXk7CistICh2b2lkKV9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dp
dGhWYWx1ZToodWludDMyX3QpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZvaWQp
X3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihkb3VibGUpdmFsdWUgZm9y
S2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZvaWQpX3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0
aW5nV2l0aFZhbHVlOihOU1N0cmluZyAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXk7CitA
ZW5kCisKIC8vIEZJWE1FOiBJZiB0aGVzZSBhcmUgbm90IHVzZWQgYW55d2hlcmUsIHdlIHNob3Vs
ZCByZW1vdmUgdGhlbSBhbmQgb25seSB1c2UgV2ViRmVhdHVyZSBtZWNoYW5pc20gZm9yIHRoZSBw
cmVmZXJlbmNlLgogQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVByZWZlcmVu
Y2VzQ29udmVydGVkVG9XZWJGZWF0dXJlKQogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgdXNl
ckdlc3R1cmVQcm9taXNlUHJvcGFnYXRpb25FbmFibGVkOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjY4OTUxKQorKysgVG9v
bHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjAtMTAtMjMg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFtUZXN0aW5nXSBDb252
ZXJ0IER1bXBSZW5kZXJUcmVlIHRvIHVzZSBnZW5lcmF0ZWQgdGVzdCBoZWFkZXIgb3B0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3ODgwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgRnVsbHkgc3VwcG9y
dCB1c2Ugb2YgYW55IFdlYlByZWZlcmVuY2VzKi55YW1sIHByZWZlcmVuY2UgaW4gRHVtcFJlbmRl
clRyZWUgKGZvciBtYWNPUykgYnk6CisgICAgICAgICAgICAtIE1vdmluZyBEdW1wUmVuZGVyVHJl
ZSdzIFRlc3RPcHRpb25zIHRvIGJlIGZ1bGx5IGJhY2tlZCBieSBUZXN0RmVhdHVyZXMgbGlrZSBX
ZWJLaXRUZXN0UnVubm5lci4KKyAgICAgICAgICAgIC0gQWRvcHRpbmcgbmV3IFdlYlByZWZlcmVu
Y2VzIFNQSSBmb3Igc2V0dGluZyBhbnkgcHJlZmVyZW5jZSBieSBrZXkgYW5kIHJlc2V0IGFsbCBw
cmVmZXJlbmNlcyBrZXlzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tOgorICAgICAgICAodG9OUyk6CisgICAgICAgIChyZXNldFdlYlByZWZlcmVuY2Vz
VG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9w
dGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgor
ICAgICAgICAoVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMpOgorCiAyMDIwLTEwLTIy
ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIElQQyB0ZXN0aW5n
IEFQSSBzaG91bGQgZXhwb3NlIEFycmF5QnVmZmVyIGZvciBhbiB1bmtub3duIGRlY29kZWQgYXJn
dW1lbnQKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNjg5
NTEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNiArNDAsNyBAQCBsaXN0KEFQUEVORCBEdW1wUmVuZGVyVHJlZV9QUklWQVRFX0lO
Q0xVCiApCiAKIHNldChEdW1wUmVuZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVTCisg
ICAgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVz
dE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIKICAgICAke0R1
bXBSZW5kZXJUcmVlX0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9u
c0dlbmVyYXRlZEtleXMuaC5lcmIKICkKIApAQCAtNTMsMTIgKzU0LDEzIEBAIHNldChEdW1wUmVu
ZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVMKIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcygke0R1
bXBSZW5kZXJUcmVlX1dFQl9QUkVGRVJFTkNFU30gUFJPUEVSVElFUyBHRU5FUkFURUQgVFJVRSkK
IAogYWRkX2N1c3RvbV9jb21tYW5kKAotICAgIE9VVFBVVCAke0R1bXBSZW5kZXJUcmVlX0RFUklW
RURfU09VUkNFU19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCisgICAgT1VUUFVUICR7
RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vVGVzdE9wdGlvbnNHZW5lcmF0ZWRX
ZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNF
U19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCiAgICAgREVQRU5EUyAke0R1bXBSZW5k
ZXJUcmVlX1dFQl9QUkVGRVJFTkNFU19URU1QTEFURVN9ICR7RHVtcFJlbmRlclRyZWVfV0VCX1BS
RUZFUkVOQ0VTfSBXVEZfQ29weVByZWZlcmVuY2VzCi0gICAgQ09NTUFORCAke1JVQllfRVhFQ1VU
QUJMRX0gJHtXVEZfU0NSSVBUU19ESVJ9L0dlbmVyYXRlUHJlZmVyZW5jZXMucmIgLS1mcm9udGVu
ZCBXZWJLaXRMZWdhY3kgLS1iYXNlICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQ
cmVmZXJlbmNlcy55YW1sIC0tZGVidWcgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dl
YlByZWZlcmVuY2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRhbCAke1dURl9TQ1JJUFRTX0RJUn0v
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCAtLWludGVybmFsICR7
V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwg
LS1vdXRwdXREaXIgIiR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0iIC0tdGVt
cGxhdGUgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
VGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCisgICAgQ09NTUFORCAke1JVQllfRVhFQ1VU
QUJMRX0gJHtXVEZfU0NSSVBUU19ESVJ9L0dlbmVyYXRlUHJlZmVyZW5jZXMucmIgLS1mcm9udGVu
ZCBXZWJLaXRMZWdhY3kgLS1iYXNlICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQ
cmVmZXJlbmNlcy55YW1sIC0tZGVidWcgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dl
YlByZWZlcmVuY2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRhbCAke1dURl9TQ1JJUFRTX0RJUn0v
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCAtLWludGVybmFsICR7
V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwg
LS1vdXRwdXREaXIgIiR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0iIC0tdGVt
cGxhdGUgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
VGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIgLS10ZW1w
bGF0ZSAke0R1bXBSZW5kZXJUcmVlX0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9U
ZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIKICAgICBWRVJCQVRJTSkKIAogbGlzdChBUFBF
TkQgRHVtcFJlbmRlclRyZWVfU09VUkNFUworICAgICR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9T
T1VSQ0VTX0RJUn0vVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNw
cAogICAgICR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRLZXlzLmgKICkKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjg5NTEpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CSh3b3Jr
aW5nIGNvcHkpCkBAIC03LDYgKzcsNyBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2Fs
L2luY2x1ZGUvCiAkKFBST0pFQ1RfRElSKS8uLi9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29u
dGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCiAkKFBST0pFQ1RfRElSKS9CaW5k
aW5ncy9Db2RlR2VuZXJhdG9yRHVtcFJlbmRlclRyZWUucG0KICQoUFJPSkVDVF9ESVIpL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKKyQoUFJPSkVDVF9ESVIpL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0
ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIKICQo
UFJPSkVDVF9ESVIpL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5l
cmF0ZWRLZXlzLmguZXJiCiAkKFBST0pFQ1RfRElSKS9TY3JpcHRzL2dlbmVyYXRlLWRlcml2ZWQt
c291cmNlcy5zaAogJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0NvZGVHZW5lcmF0b3Iu
cG0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjg5NTEpCisrKyBUb29scy9EdW1wUmVuZGVy
VHJlZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkod29ya2luZyBjb3B5KQpAQCAt
MSw0ICsxLDUgQEAKICMgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSB0aGUgZ2VuZXJhdGUteGNm
aWxlbGlzdHMgc2NyaXB0LgogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1
bXBSZW5kZXJUcmVlL0pTVUlTY3JpcHRDb250cm9sbGVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVlL0pTVUlTY3JpcHRDb250cm9sbGVyLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9EdW1wUmVuZGVyVHJlZS9UZXN0
T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnNHZW5lcmF0
ZWRLZXlzLmgKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMubWFrZQko
cmV2aXNpb24gMjY4OTUxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMu
bWFrZQkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsNyBAQCBXRUJfUFJFRkVSRU5DRVMgPSBc
CiAjCiAKIFdFQl9QUkVGRVJFTkNFU19HRU5FUkFURURfRklMRVMgPSBcCisgICAgVGVzdE9wdGlv
bnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCBcCiAgICAgVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRLZXlzLmggXAogIwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDI2ODk1MSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsxMDksNyBA
QAogCQk1REI5QUM5RTBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjcwMC50
dGYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDM3NUYwOTc3MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyNzAwLnR0ZiAq
LzsgfTsKIAkJNURCOUFDOUYwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktpdFdlaWdodFdhdGNoZXI4
MDAudHRmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzNzVGMDk3ODBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjgwMC50
dGYgKi87IH07CiAJCTVEQjlBQ0EwMEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRXYXRj
aGVyOTAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzc1RjA5NzkwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXI5
MDAudHRmICovOyB9OworCQk3Qzk4OTNERjI1NDMzRjhFMDAzNTRFQkMgLyogVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTg5M0RFMjU0MzNDODcwMDM1NEVCQyAvKiBUZXN0
T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwICovOyB9OwogCQk3Q0ZG
OUJCRjI1MzNCQjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRkY5QkJFMjUzM0JCMjQwMDA4MDA5RiAv
KiBUZXN0RmVhdHVyZXMuY3BwICovOyB9OwogCQk3Q0ZGOUJDMjI1MzNCQzE2MDAwODAwOUYgLyog
VGVzdENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0NGRjlCQzEyNTMzQkMxNjAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmNwcCAqLzsgfTsK
IAkJODAwNDVBRUUxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25I
YW5kbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODAwNDVBRUMxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5k
bGVyLm1tICovOyB9OwpAQCAtMzMzLDcgKzMzNCw4IEBACiAJCTdDNDQ2OTdGMjUzNzdBMDIwMDI0
MjkwQSAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRLZXlzLmguZXJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzQ0Njk4
MDI1Mzc3QTAyMDAyNDI5MEEgLyogY2hlY2steGNmaWxlbGlzdHMuc2ggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5zaDsgcGF0aCA9
ICJjaGVjay14Y2ZpbGVsaXN0cy5zaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
NDQ2OTgxMjUzNzdBMDIwMDI0MjkwQSAvKiBnZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2ggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlw
dC5zaDsgcGF0aCA9ICJnZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2giOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk3QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5o
OyBwYXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdDNDQ2OTg1MjUzNzdFNTIwMDI0MjkwQSAvKiBUZXN0T3B0aW9uc0dlbmVyYXRl
ZEtleXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDOTg5M0RFMjU0MzNDODcwMDM1NEVCQyAvKiBUZXN0
T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NCQkMzMjIxRERGQ0Y5QTAwNzg2QjlEIC8qIFRl
c3RPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RPcHRpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRkY5QkJEMjUzM0JCMjQwMDA4MDA5
RiAvKiBUZXN0RmVhdHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdEZlYXR1cmVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRkY5QkJFMjUzM0JCMjQwMDA4MDA5RiAvKiBUZXN0
RmVhdHVyZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVzdEZlYXR1cmVzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc3Nyw2ICs3NzksNyBAQAogCQk3QzQ0Njk4MjI1Mzc3
QzM0MDAyNDI5MEEgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk3Qzk4OTNERTI1NDMzQzg3MDAzNTRFQkMgLyogVGVzdE9w
dGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAqLywKIAkJCQk3QzQ0Njk4
NTI1Mzc3RTUyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmggKi8sCiAJCQkp
OwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwpAQCAtMTI2MCw2ICsxMjYzLDcgQEAKIAkJ
CQlBOEQ3OUNFQjBGQzI4QjJDMDA0QUM4RkUgLyogRHVtcFJlbmRlclRyZWVGaWxlRHJhZ2dpbmdT
b3VyY2UubSBpbiBTb3VyY2VzICovLAogCQkJCUE4QjkxQURBMENGM0IzMkYwMDhGOTFGRiAvKiBE
dW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEI5MUFEQzBD
RjNCMzJGMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVXaW5kb3cubW0gaW4gU291cmNlcyAqLywK
KwkJCQk3Qzk4OTNERjI1NDMzRjhFMDAzNTRFQkMgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJL
aXRMZWdhY3lLZXlNYXBwaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQTE4QjYyMEM5QjA4
QzIwMDExNDM2OSAvKiBFZGl0aW5nRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0Ex
OEI3MDBDOUIwOERCMDAxMTQzNjkgLyogRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDQTE4QjY0MEM5QjA4QzIwMDExNDM2OSAvKiBGcmFtZUxvYWREZWxlZ2F0
ZS5tbSBpbiBTb3VyY2VzICovLApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvU2NyaXB0cy9Q
cmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1h
cHBpbmcuY3BwLmVyYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9TY3JpcHRz
L1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5
TWFwcGluZy5jcHAuZXJiCShub25leGlzdGVudCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Nj
cmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdh
Y3lLZXlNYXBwaW5nLmNwcC5lcmIJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoK
KyAqIDwlPSBAd2FybmluZyAlPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJUZXN0T3B0aW9ucy5oIgorCituYW1lc3BhY2UgV1RSIHsKKworc3RkOjpzdHJpbmcg
VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShjb25zdCBzdGQ6OnN0cmlu
ZyYgd2ViUHJlZmVyZW5jZXNLZXkpCit7CisgICAgc3RhdGljIHN0ZDo6dW5vcmRlcmVkX21hcDxz
dGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IG5vblN0YW5kYXJkS2V5cyA9IHsKKzwlLSBmb3IgQHBy
ZWYgaW4gQGV4cG9zZWRQcmVmZXJlbmNlcy5zZWxlY3QgeyB8cHwgcC5vcHRzWyJ3ZWJLaXRMZWdh
Y3lQcmVmZXJlbmNlS2V5Il0gfSBkbyAtJT4KKyAgICAgICAgeyAiPCU9IEBwcmVmLm5hbWUgJT4i
LCAiPCU9IEBwcmVmLnByZWZlcmVuY2VLZXkgJT4iIH0sIFwKKzwlLSBlbmQgLSU+CisgICAgfTsK
KworICAgIGF1dG8gaXQgPSBub25TdGFuZGFyZEtleXMuZmluZCh3ZWJQcmVmZXJlbmNlc0tleSk7
CisgICAgaWYgKGl0ICE9IG5vblN0YW5kYXJkS2V5cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0
LT5zZWNvbmQ7CisKKyAgICByZXR1cm4gIldlYktpdCIgKyB3ZWJQcmVmZXJlbmNlc0tleTsKK30K
KworfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQko
cmV2aXNpb24gMjY4OTUxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNiArMTMwLDExIEBAIGV4dGVybiAiQyIgewog
I2ltcG9ydCA8bWFjaC1vL2dldHNlY3QuaD4KIH0KIAorc3RhdGljIFJldGFpblB0cjxOU1N0cmlu
Zz4gdG9OUyhjb25zdCBzdGQ6OnN0cmluZyYgc3RyaW5nKQoreworICAgIHJldHVybiBhZG9wdE5T
KFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoVVRGOFN0cmluZzpzdHJpbmcuY19zdHIoKV0pOwor
fQorCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBAaW50ZXJmYWNlIER1bXBSZW5kZXJUcmVl
QXBwbGljYXRpb24gOiBOU0FwcGxpY2F0aW9uCiBAZW5kCkBAIC05NjksNDEgKzk3NCwyMSBAQCBz
dGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0CiAgICAgW1dlYlByZWZlcmVu
Y2VzIF9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6TlNI
VFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW5dOwogfQogCi1z
dGF0aWMgYm9vbCBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZShzdGQ6OnN0cmluZyBrZXks
IGJvb2wgZGVmYXVsdFZhbHVlLCBjb25zdCBXVFI6OlRlc3RPcHRpb25zJiBvcHRpb25zKQotewot
ICAgIGF1dG8gaXQgPSBvcHRpb25zLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKS5maW5kKGtl
eSk7Ci0gICAgaWYgKGl0ICE9IG9wdGlvbnMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcygpLmVu
ZCgpKQotICAgICAgICByZXR1cm4gaXQtPnNlY29uZDsKLSAgICByZXR1cm4gZGVmYXVsdFZhbHVl
OwotfQotCiBzdGF0aWMgdm9pZCBzZXRXZWJQcmVmZXJlbmNlc0ZvclRlc3RPcHRpb25zKFdlYlBy
ZWZlcmVuY2VzICpwcmVmZXJlbmNlcywgY29uc3QgV1RSOjpUZXN0T3B0aW9ucyYgb3B0aW9ucykK
IHsKICAgICBwcmVmZXJlbmNlcy5wcml2YXRlQnJvd3NpbmdFbmFibGVkID0gb3B0aW9ucy51c2VF
cGhlbWVyYWxTZXNzaW9uKCk7CiAKLSAgICBwcmVmZXJlbmNlcy5hdHRhY2htZW50RWxlbWVudEVu
YWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQXR0YWNobWVudEVsZW1lbnRF
bmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmFjY2VsZXJhdGVkRHJh
d2luZ0VuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQWNjZWxlcmF0ZWRE
cmF3aW5nRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5tZW51SXRl
bUVsZW1lbnRFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIk1lbnVJdGVt
RWxlbWVudEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMua2V5Z2Vu
RWxlbWVudEVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiS2V5Z2VuRWxl
bWVudEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMubW9kZXJuTWVk
aWFDb250cm9sc0VuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiTW9kZXJu
TWVkaWFDb250cm9sc0VuYWJsZWQiLCB0cnVlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5p
bnNwZWN0b3JBZGRpdGlvbnNFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUo
Ikluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVy
ZW5jZXMuYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMgPSBi
b29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNl
c1RvQXNrRm9yQ3JlZGVudGlhbHMiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMu
Y29sb3JGaWx0ZXJFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkNvbG9y
RmlsdGVyRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5zZWxlY3Rp
b25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVy
ZVZhbHVlKCJTZWxlY3Rpb25BY3Jvc3NTaGFkb3dCb3VuZGFyaWVzRW5hYmxlZCIsIHRydWUsIG9w
dGlvbnMpOwotICAgIHByZWZlcmVuY2VzLndlYkdQVUVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5j
ZUZlYXR1cmVWYWx1ZSgiV2ViR1BVRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVm
ZXJlbmNlcy5DU1NMb2dpY2FsRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVl
KCJDU1NMb2dpY2FsRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5s
aW5lSGVpZ2h0VW5pdHNFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkxp
bmVIZWlnaHRVbml0c0VuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMu
YWRDbGlja0F0dHJpYnV0aW9uRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVl
KCJBZENsaWNrQXR0cmlidXRpb25FbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZl
cmVuY2VzLnJlc2l6ZU9ic2VydmVyRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZh
bHVlKCJSZXNpemVPYnNlcnZlckVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVy
ZW5jZXMuQ1NTT01WaWV3U21vb3RoU2Nyb2xsaW5nRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNl
RmVhdHVyZVZhbHVlKCJDU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkIiwgZmFsc2UsIG9w
dGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmNvcmVNYXRoTUxFbmFibGVkID0gYm9vbFdlYlByZWZl
cmVuY2VGZWF0dXJlVmFsdWUoIkNvcmVNYXRoTUxFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwot
ICAgIHByZWZlcmVuY2VzLnJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkID0gYm9vbFdlYlByZWZl
cmVuY2VGZWF0dXJlVmFsdWUoIlJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkIiwgZmFsc2UsIG9w
dGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxlZCA9IGJvb2xX
ZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJBc3luY0NsaXBib2FyZEFQSUVuYWJsZWQiLCBmYWxz
ZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMudXNlc1BhZ2VDYWNoZSA9IGJvb2xXZWJQcmVm
ZXJlbmNlRmVhdHVyZVZhbHVlKCJVc2VzQmFja0ZvcndhcmRDYWNoZSIsIGZhbHNlLCBvcHRpb25z
KTsKLSAgICBwcmVmZXJlbmNlcy5sYXlvdXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5h
YmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJMYXlvdXRGb3JtYXR0aW5nQ29u
dGV4dEludGVncmF0aW9uRW5hYmxlZCIsIHRydWUsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2Vz
LmFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFibGVkID0gYm9vbFdlYlByZWZl
cmVuY2VGZWF0dXJlVmFsdWUoIkFzcGVjdFJhdGlvT2ZJbWdGcm9tV2lkdGhBbmRIZWlnaHRFbmFi
bGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmFsbG93VG9wTmF2aWdhdGlv
blRvRGF0YVVSTHMgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQWxsb3dUb3BOYXZp
Z2F0aW9uVG9EYXRhVVJMcyIsIHRydWUsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmNvbnRh
Y3RQaWNrZXJBUElFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkNvbnRh
Y3RQaWNrZXJBUElFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOworICAgIGZvciAoY29uc3QgYXV0
byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCisg
ICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVl
OnZhbHVlIGZvcktleTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVy
ZW5jZUtleShrZXkpKS5nZXQoKV07CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVl
XSA6IG9wdGlvbnMuZG91YmxlV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAgIFtwcmVm
ZXJlbmNlcyBfc2V0RG91YmxlUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dmFsdWUgZm9y
S2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGtl
eSkpLmdldCgpXTsKKworICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9u
cy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAgICAgW3ByZWZlcmVuY2VzIF9z
ZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZSBmb3JLZXk6dG9OUyhX
VFI6OlRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVuY2VLZXkoa2V5KSkuZ2V0KCld
OworCisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLnN0cmluZ1dl
YlByZWZlcmVuY2VGZWF0dXJlcygpKQorICAgICAgICBbcHJlZmVyZW5jZXMgX3NldFN0cmluZ1By
ZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnRvTlModmFsdWUpLmdldCgpIGZvcktleTp0b05T
KFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShrZXkpKS5nZXQo
KV07CiB9CiAKIC8vIENhbGxlZCBvbmNlIG9uIER1bXBSZW5kZXJUcmVlIHN0YXJ0dXAuCkBAIC0x
MjE2LDE0ICsxMjAxLDYgQEAgc3RhdGljIHZvaWQgcHJlcGFyZUNvbnNpc3RlbnRUZXN0aW5nRW52
aQogCiAgICAgW1tXZWJQcmVmZXJlbmNlcyBzdGFuZGFyZFByZWZlcmVuY2VzXSBzZXRBdXRvc2F2
ZXM6Tk9dOwogCi0gICAgLy8gK1tXZWJQcmVmZXJlbmNlcyBfc3dpdGNoTmV0d29ya0xvYWRlclRv
TmV3VGVzdGluZ1Nlc3Npb25dIGNhbGxzICtbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNoZV0sIHdo
aWNoIGluaXRpYWxpemVzIGEgZGVmYXVsdCBjYWNoZSBvbiBkaXNrLgotICAgIC8vIE1ha2luZyB0
aGUgc2hhcmVkIGNhY2hlIG1lbW9yeS1vbmx5IGF2b2lkcyB0b3VjaGluZyB0aGUgZmlsZSBzeXN0
ZW0uCi0gICAgUmV0YWluUHRyPE5TVVJMQ2FjaGU+IHNoYXJlZENhY2hlID0KLSAgICAgICAgYWRv
cHROUyhbW05TVVJMQ2FjaGUgYWxsb2NdIGluaXRXaXRoTWVtb3J5Q2FwYWNpdHk6MTAyNCAqIDEw
MjQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlza0NhcGFjaXR5OjAK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2tQYXRoOm5pbF0p
OwotICAgIFtOU1VSTENhY2hlIHNldFNoYXJlZFVSTENhY2hlOnNoYXJlZENhY2hlLmdldCgpXTsK
LQogICAgIFtXZWJQcmVmZXJlbmNlcyBfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nl
c3Npb25dOwogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0xODc2LDggKzE4NTMsMTIg
QEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdAogCiAgICAgW1dlYkNh
Y2hlIGNsZWFyQ2FjaGVkQ3JlZGVudGlhbHNdOwogCisgICAgYXV0byBwcmVmZXJlbmNlcyA9IGFk
b3B0TlMoW1tXZWJQcmVmZXJlbmNlcyBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldFBy
ZWZlcmVuY2VzOnByZWZlcmVuY2VzLmdldCgpXTsKKwogICAgIHJlc2V0V2ViUHJlZmVyZW5jZXNU
b0NvbnNpc3RlbnRWYWx1ZXMod2ViVmlldy5wcmVmZXJlbmNlcyk7CiAgICAgc2V0V2ViUHJlZmVy
ZW5jZXNGb3JUZXN0T3B0aW9ucyh3ZWJWaWV3LnByZWZlcmVuY2VzLCBvcHRpb25zKTsKKwogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBbd2ViVmlldyBzZXRXYW50c0xheWVyOm9wdGlvbnMubGF5ZXJC
YWNrZWRXZWJWaWV3KCldOwogI2VuZGlmCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
VGVzdFJ1bm5lck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
VGVzdFJ1bm5lck1hYy5tbQkocmV2aXNpb24gMjY4OTUxKQorKysgVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTYwOSw3ICs2MDksNyBA
QCB2b2lkIFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZShKU1N0CiAgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiB2YWx1ZUNGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCB2YWx1ZSkpOwogICAgIE5TU3RyaW5nICp2YWx1ZU5TID0gKF9fYnJp
ZGdlIE5TU3RyaW5nICopdmFsdWVDRi5nZXQoKTsKIAotICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3
XSBwcmVmZXJlbmNlc10gX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZhbHVlOnZhbHVlTlMgZm9y
S2V5OmtleU5TXTsKKyAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIF9zZXRT
dHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZU5TIGZvcktleTprZXlOU107
CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQWxsVmlzaXRlZExpbmtzKCkKSW5kZXg6IFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNjg5NTEp
CisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTIxLDE3ICs5MjEsMTYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cmVzZXRQcmVm
ZXJlbmNlc1RvQwogICAgIHBsYXRmb3JtUmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVl
cygpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLmJvb2xX
ZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKLSAgICAgICAgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1
ZUZvcktleShwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CisgICAgICAgIFdL
UHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKHByZWZlcmVuY2VzLCB2YWx1
ZSwgdG9XSyhrZXkpLmdldCgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgW2tleSwgdmFsdWVd
IDogb3B0aW9ucy5kb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKLSAgICAgICAgV0tQcmVm
ZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5KHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkp
LmdldCgpKTsKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5Rm9yVGVz
dGluZyhwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CiAKICAgICBmb3IgKGNv
bnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMudWludDMyV2ViUHJlZmVyZW5jZUZlYXR1
cmVzKCkpCi0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleShwcmVmZXJl
bmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRV
SW50MzJWYWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSku
Z2V0KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLnN0
cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAgICAgICBXS1ByZWZlcmVuY2VzU2V0U3Ry
aW5nVmFsdWVGb3JLZXkocHJlZmVyZW5jZXMsIHRvV0sodmFsdWUpLmdldCgpLCB0b1dLKGtleSku
Z2V0KCkpOwotCisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleUZvclRl
c3RpbmcocHJlZmVyZW5jZXMsIHRvV0sodmFsdWUpLmdldCgpLCB0b1dLKGtleSkuZ2V0KCkpOwog
fQogCiBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNv
bnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZXNldFN0YWdlIHJlc2V0U3RhZ2UpCg==
</data>
<flag name="commit-queue"
          id="428670"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412256</attachid>
            <date>2020-10-24 18:55:47 -0700</date>
            <delta_ts>2020-10-24 20:04:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201024185546.patch</filename>
            <type>text/plain</type>
            <size>33988</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg5NTEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTIwICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVu
ZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlbmFtZSBXS1ByZWZlcmVuY2VzU2V0
KlZhbHVlRm9yS2V5IFNQSSB0byBXS1ByZWZlcmVuY2VzU2V0KlZhbHVlRm9yS2V5Rm9yVGVzdGlu
ZworICAgICAgICB0byBtYWtlIGl0IGNsZWFyIHdoYXQgdGhleSBhcmUgdXNlZCBmb3IgYW5kIGZv
ciBjb25zaXN0ZW5jeSB3aXRoIFdlYktpdExlZ2FjeS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFs
dWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1
ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVl
Rm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVG
b3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JL
ZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5
KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleSk6
IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0
ZS5oOgorCiAyMDIwLTEwLTIyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIElQQyB0ZXN0aW5nIEFQSSBzaG91bGQgZXhwb3NlIEFycmF5QnVmZmVyIGZvciBhbiB1
bmtub3duIGRlY29kZWQgYXJndW1lbnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiAyNjg5NTEpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzgsMjIgKzc4LDIyIEBAIHZvaWQgV0tQcmVmZXJlbmNlc1NldEludGVybmFsRGVidWdGZWF0
dXIKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRJbnRlcm5hbERlYnVnRmVhdHVyZUVu
YWJsZWRGb3JLZXkodG9XVEZTdHJpbmcoaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVLZXkpLCB2YWx1ZSk7
CiB9CiAKLXZvaWQgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleShXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdL
UHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXNSZWYsIGJvb2wgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKIHsKICAgICB0b0lt
cGwocHJlZmVyZW5jZXNSZWYpLT5zZXRCb29sVmFsdWVGb3JLZXkodG9XVEZTdHJpbmcoa2V5KSwg
dmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleShXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdLU3RyaW5nUmVmIGtl
eSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdLU3RyaW5nUmVmIGtl
eSkKIHsKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRCb29sVmFsdWVGb3JLZXkodG9X
VEZTdHJpbmcoa2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5jZXNTZXRVSW50MzJW
YWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1aW50MzJfdCB2YWx1
ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JL
ZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIHVpbnQzMl90IHZh
bHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0
VUludDMyVmFsdWVGb3JLZXkodG9XVEZTdHJpbmcoa2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdL
UHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVu
Y2VzUmVmLCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZl
cmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJl
ZmVyZW5jZXNSZWYsIFdLU3RyaW5nUmVmIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAg
dG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0U3RyaW5nVmFsdWVGb3JLZXkodG9XVEZTdHJpbmco
a2V5KSwgdG9XVEZTdHJpbmcodmFsdWUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaAkocmV2aXNp
b24gMjY4OTUxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNl
c1JlZlByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDEwIEBAIFdLX0VYUE9S
VCB2b2lkIFdLUHJlZmVyZW5jZXNSZXNldEFsbEludGUKIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVy
ZW5jZXNTZXRJbnRlcm5hbERlYnVnRmVhdHVyZUZvcktleShXS1ByZWZlcmVuY2VzUmVmLCBib29s
LCBXS1N0cmluZ1JlZik7CiAKIC8vIFRoZSBmb2xsb3dpbmcgZ2VuZXJpYyBzZXR0ZXIgZnVuY3Rp
b25zIGFyZSBvbmx5IGludGVuZGVkIGZvciB1c2UgYnkgdGVzdGluZyBpbmZyYXN0cnVjdHVyZS4K
LVdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXkoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKLVdL
X0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleShXS1ByZWZlcmVu
Y2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7Ci1X
S19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXkoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7
Ci1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkoV0tQcmVm
ZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFsdWUsIFdLU3RyaW5nUmVm
IGtleSk7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9y
VGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZhbHVlLCBXS1N0
cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVl
Rm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUg
dmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0
VUludDMyVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIHVpbnQzMl90IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQgV0tQ
cmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVm
IHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKIAog
Ly8gRm9yIFRlc3QgUnVubmVyIFVzZSBvbmx5LgogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNl
c1Jlc2V0VGVzdFJ1bm5lck92ZXJyaWRlcyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVm
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODk1MSkKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDIwLTEwLTIwICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVuZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVk
IHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgIEV4cG9zZSBhIHNldCBvZiBzZXR0ZXJzIHRvIGZvciBEdW1wUmVuZGVyVHJlZSB0
byB1c2Ugd2hlbiBzZXR0aW5nIHByZWZlcmVuY2VzCisgICAgICAgIGJ5IHN0cmluZy4KKworICAg
ICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVu
Y2VzIF9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbl0pOgorICAgICAgICAo
K1tXZWJQcmVmZXJlbmNlcyBfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNj
ZXB0UG9saWN5Ol0pOgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBfY2xlYXJOZXR3b3JrTG9h
ZGVyU2Vzc2lvbl0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0Qm9vbFByZWZlcmVu
Y2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5j
ZXMgX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleTpdKToKKyAg
ICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgX3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0
aFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgX3NldFN0cmluZ1By
ZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJl
ZmVyZW5jZXMgX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZhbHVlOmZvcktleTpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oOgorCiAyMDIwLTEw
LTIxICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1Mg
V0sxXSBwcm92aWRlIGEgd2F5IGZvciBBcHBsZS1pbnRlcm5hbCBjbGllbnRzIHRvIGRpc2FibGUg
bGluayBwcmV2aWV3CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZXMubW0JKHJldmlzaW9uIDI2ODk1MSkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEw
MjUsNyArMTAyNSw2IEBAIC0gKFdlYkNhY2hlTW9kZWwpY2FjaGVNb2RlbAogICAgIHJldHVybiAo
V2ViQ2FjaGVNb2RlbClbc2VsZiBfaW50ZWdlclZhbHVlRm9yS2V5OldlYktpdENhY2hlTW9kZWxQ
cmVmZXJlbmNlS2V5XTsKIH0KIAotCiAtICh2b2lkKXNldFN1cHByZXNzZXNJbmNyZW1lbnRhbFJl
bmRlcmluZzooQk9PTClzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmcKIHsKICAgICBbc2Vs
ZiBfc2V0Qm9vbFZhbHVlOnN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZyBmb3JLZXk6V2Vi
S2l0U3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nS2V5XTsKQEAgLTE2NjAsMjQgKzE2NTks
MTYgQEAgKyAodm9pZClfc2V0SUJDcmVhdG9ySUQ6KE5TU3RyaW5nICopc3RyaQogICAgIFtvbGQg
cmVsZWFzZV07CiB9CiAKLSsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdT
ZXNzaW9uCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBXZWJUaHJlYWRMb2NrKCk7
Ci0jZW5kaWYKLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGlu
Z1Nlc3Npb24oKTsKLX0KLQotKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbgorLSAo
dm9pZClkaWRSZW1vdmVGcm9tV2ViVmlldwogewotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1h
cDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZGVsZXRlQWxsQ29va2llcygpOworICAgIEFTU0VS
VChfcHJpdmF0ZS0+bnVtV2ViVmlld3MpOworICAgIGlmICgtLV9wcml2YXRlLT5udW1XZWJWaWV3
cyA9PSAwKQorICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBv
c3ROb3RpZmljYXRpb25OYW1lOldlYlByZWZlcmVuY2VzUmVtb3ZlZE5vdGlmaWNhdGlvbiBvYmpl
Y3Q6c2VsZiB1c2VySW5mbzpuaWxdOwogfQogCi0rICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xv
YWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSlw
b2xpY3kKKy0gKHZvaWQpd2lsbEFkZFRvV2ViVmlldwogewotICAgIFJldGFpblB0cjxDRkhUVFBD
b29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFw
OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCk7Ci0gICAgQVNTRVJUKGNv
b2tpZVN0b3JhZ2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6
OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90IGNhbGxlZCBiZWZvcmVoYW5kLgot
ICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFn
ZS5nZXQoKSwgcG9saWN5KTsKKyAgICArK19wcml2YXRlLT5udW1XZWJWaWV3czsKIH0KIAogLSAo
Qk9PTClpc0RPTVBhc3RlQWxsb3dlZApAQCAtMTk1MSwyNiArMTk0Miw2IEBAIC0gKHZvaWQpc2V0
VXNlUHJlSFRNTDVQYXJzZXJRdWlya3M6KEJPT0wKICAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmZs
YWcgZm9yS2V5OldlYktpdFVzZVByZUhUTUw1UGFyc2VyUXVpcmtzS2V5XTsKIH0KIAotLSAodm9p
ZClkaWRSZW1vdmVGcm9tV2ViVmlldwotewotICAgIEFTU0VSVChfcHJpdmF0ZS0+bnVtV2ViVmll
d3MpOwotICAgIGlmICgtLV9wcml2YXRlLT5udW1XZWJWaWV3cyA9PSAwKQotICAgICAgICBbW05T
Tm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdCi0gICAgICAgICAgICBwb3N0Tm90aWZp
Y2F0aW9uTmFtZTpXZWJQcmVmZXJlbmNlc1JlbW92ZWROb3RpZmljYXRpb24KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgb2JqZWN0OnNlbGYKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJJ
bmZvOm5pbF07Ci19Ci0KLS0gKHZvaWQpd2lsbEFkZFRvV2ViVmlldwotewotICAgICsrX3ByaXZh
dGUtPm51bVdlYlZpZXdzOwotfQotCi0tICh2b2lkKV9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhW
YWx1ZTooTlNTdHJpbmcgKil2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5Ci17Ci0gICAgW3Nl
bGYgX3NldFN0cmluZ1ZhbHVlOnZhbHVlIGZvcktleTprZXldOwotfQotCiAtICh2b2lkKXNldEZ1
bGxTY3JlZW5FbmFibGVkOihCT09MKWZsYWcKIHsKICAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmZs
YWcgZm9yS2V5OldlYktpdEZ1bGxTY3JlZW5FbmFibGVkUHJlZmVyZW5jZUtleV07CkBAIC0zMDEz
LDYgKzI5ODQsNjggQEAgLSAodm9pZClfc2V0RW5hYmxlZDooQk9PTCl2YWx1ZSBmb3JGZWF0dQog
CiBAZW5kCiAKK0BpbXBsZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVRlc3Rp
bmcpCisKKysgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uCit7
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBXZWJUaHJlYWRMb2NrKCk7CisjZW5kaWYK
KyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24o
KTsKK30KKworKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNj
ZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9saWN5Cit7CisgICAgYXV0byBj
b29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKS5jb29raWVTdG9yYWdlKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoY29va2llU3RvcmFn
ZSk7IC8vIFdpbGwgZmFpbCB3aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9O
ZXdUZXN0aW5nU2Vzc2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhhbmQuCisgICAgQ0ZIVFRQ
Q29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBw
b2xpY3kpOworfQorCisrICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uCit7CisgICAg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5kZWxldGVB
bGxDb29raWVzKCk7Cit9CisKKy0gKHZvaWQpX3Jlc2V0VG9EZWZhdWx0VmFsdWVzRm9yVGVzdGlu
ZworeworICAgIFdlYkNhY2hlTW9kZWwgb2xkQ2FjaGVNb2RlbCA9IHNlbGYuY2FjaGVNb2RlbDsK
KworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgZGlzcGF0Y2hfYmFycmllcl9zeW5jKF9w
cml2YXRlLT5yZWFkV3JpdGVRdWV1ZSwgXnsKKyAgICAgICAgX3ByaXZhdGUtPnZhbHVlcyA9IGFk
b3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgfSk7CisjZWxz
ZQorICAgIF9wcml2YXRlLT52YWx1ZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBh
bGxvY10gaW5pdF0pOworI2VuZGlmCisKKyAgICBbc2VsZiBfdXBkYXRlUHJpdmF0ZUJyb3dzaW5n
U3RhdGVUbzpbc2VsZiBwcml2YXRlQnJvd3NpbmdFbmFibGVkXV07CisgICAgW3NlbGYgX3Bvc3RQ
cmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb25dOworICAgIGlmIChvbGRDYWNoZU1vZGVsICE9
IFtzZWxmIGNhY2hlTW9kZWxdKQorICAgICAgICBbc2VsZiBfcG9zdENhY2hlTW9kZWxDaGFuZ2Vk
Tm90aWZpY2F0aW9uXTsKK30KKworLSAodm9pZClfc2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0aW5n
V2l0aFZhbHVlOihCT09MKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2Vs
ZiBfc2V0Qm9vbFZhbHVlOnZhbHVlIGZvcktleTprZXldOworfQorCistICh2b2lkKV9zZXRVSW50
MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZToodWludDMyX3QpdmFsdWUgZm9yS2V5OihO
U1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9zZXRJbnRlZ2VyVmFsdWU6dmFsdWUgZm9yS2V5
OmtleV07Cit9CisKKy0gKHZvaWQpX3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZh
bHVlOihkb3VibGUpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9z
ZXRGbG9hdFZhbHVlOnZhbHVlIGZvcktleTprZXldOworfQorCistICh2b2lkKV9zZXRTdHJpbmdQ
cmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZSBmb3JLZXk6KE5T
U3RyaW5nICopa2V5Cit7CisgICAgW3NlbGYgX3NldFN0cmluZ1ZhbHVlOnZhbHVlIGZvcktleTpr
ZXldOworfQorCitAZW5kCisKIEBpbXBsZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNlcyAoV2ViUHJp
dmF0ZVByZWZlcmVuY2VzQ29udmVydGVkVG9XZWJGZWF0dXJlKQogCiAtIChCT09MKXVzZXJHZXN0
dXJlUHJvbWlzZVByb3BhZ2F0aW9uRW5hYmxlZApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCShyZXZpc2lv
biAyNjg5NTEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVu
Y2VzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSwxMyArODksNiBAQCBAaW50ZXJmYWNl
IFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlKQogKyAodm9pZClfc2V0SW5pdGlhbERlZmF1bHRU
ZXh0RW5jb2RpbmdUb1N5c3RlbUVuY29kaW5nOwogKyAodm9pZClfc2V0SUJDcmVhdG9ySUQ6KE5T
U3RyaW5nICopc3RyaW5nOwogCi0vLyBGb3IgRHVtcFJlbmRlclRyZWUgdXNlIG9ubHkuCi0rICh2
b2lkKV9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbjsKLSsgKHZvaWQpX3Nl
dEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29v
a2llQWNjZXB0UG9saWN5KWNvb2tpZUFjY2VwdFBvbGljeTsKLSsgKHZvaWQpX2NsZWFyTmV0d29y
a0xvYWRlclNlc3Npb247Ci0vLyBVc2VkIHRvIHNldCBwcmVmZXJlbmNlIHNwZWNpZmllZCBpbiB0
aGUgdGVzdCB2aWEgTGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKC4uKS4K
LS0gKHZvaWQpX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZhbHVlOihOU1N0cmluZyAqKXZhbHVl
IGZvcktleTooTlNTdHJpbmcgKilrZXk7Ci0KICsgKHZvaWQpc2V0V2ViS2l0TGlua1RpbWVWZXJz
aW9uOihpbnQpdmVyc2lvbjsKIAogLy8gRm9yIFdlYlZpZXcncyB1c2Ugb25seS4KQEAgLTEwNyw2
ICsxMDAsOCBAQCBAaW50ZXJmYWNlIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlKQogLSAodm9p
ZClfc3luY2hyb25pemVXZWJTdG9yYWdlUG9saWN5V2l0aENvb2tpZVBvbGljeTsKICNlbmRpZgog
CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBhdXRvbWF0aWNhbGx5RGV0ZWN0c0NhY2hlTW9k
ZWw7CisKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9aXNETlNQcmVmZXRjaGluZ0VuYWJs
ZWQpIEJPT0wgRE5TUHJlZmV0Y2hpbmdFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMpIEJP
T0wgZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBXZWJLaXRK
YXZhU2NyaXB0UnVudGltZUZsYWdzIGphdmFTY3JpcHRSdW50aW1lRmxhZ3M7CkBAIC0xMTQsNyAr
MTA5LDYgQEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZSkKIEBwcm9wZXJ0
eSAobm9uYXRvbWljKSBCT09MIGFwcGxpY2F0aW9uQ2hyb21lTW9kZUVuYWJsZWQ7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYykgQk9PTCB1c2VzRW5jb2RpbmdEZXRlY3RvcjsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljKSBCT09MIHNocmlua3NTdGFuZGFsb25lSW1hZ2VzVG9GaXQ7Ci1AcHJvcGVydHkgKG5v
bmF0b21pYykgQk9PTCBhdXRvbWF0aWNhbGx5RGV0ZWN0c0NhY2hlTW9kZWw7CiBAcHJvcGVydHkg
KG5vbmF0b21pYywgZ2V0dGVyPWRvbVRpbWVyc1Rocm90dGxpbmdFbmFibGVkKSBCT09MIERPTVRp
bWVyc1Rocm90dGxpbmdFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgd2ViQXJj
aGl2ZURlYnVnTW9kZUVuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBsb2NhbEZp
bGVDb250ZW50U25pZmZpbmdFbmFibGVkOwpAQCAtMzEwLDYgKzMwNCwxOCBAQCBAaW50ZXJmYWNl
IFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlRmVhCiAtICh2b2lkKV9zZXRFbmFibGVkOihCT09M
KXZhbHVlIGZvckZlYXR1cmU6KFdlYkZlYXR1cmUgKilmZWF0dXJlOwogQGVuZAogCitAaW50ZXJm
YWNlIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlVGVzdGluZykKKysgKHZvaWQpX3N3aXRjaE5l
dHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uOworKyAodm9pZClfc2V0Q3VycmVudE5ldHdv
cmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xp
Y3kpY29va2llQWNjZXB0UG9saWN5OworKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lv
bjsKKworLSAodm9pZClfcmVzZXRUb0RlZmF1bHRWYWx1ZXNGb3JUZXN0aW5nOworLSAodm9pZClf
c2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihCT09MKXZhbHVlIGZvcktleToo
TlNTdHJpbmcgKilrZXk7CistICh2b2lkKV9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dp
dGhWYWx1ZToodWludDMyX3QpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZvaWQp
X3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihkb3VibGUpdmFsdWUgZm9y
S2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZvaWQpX3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0
aW5nV2l0aFZhbHVlOihOU1N0cmluZyAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXk7CitA
ZW5kCisKIC8vIEZJWE1FOiBJZiB0aGVzZSBhcmUgbm90IHVzZWQgYW55d2hlcmUsIHdlIHNob3Vs
ZCByZW1vdmUgdGhlbSBhbmQgb25seSB1c2UgV2ViRmVhdHVyZSBtZWNoYW5pc20gZm9yIHRoZSBw
cmVmZXJlbmNlLgogQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVByZWZlcmVu
Y2VzQ29udmVydGVkVG9XZWJGZWF0dXJlKQogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgdXNl
ckdlc3R1cmVQcm9taXNlUHJvcGFnYXRpb25FbmFibGVkOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjY4OTUxKQorKysgVG9v
bHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjAtMTAtMjMg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFtUZXN0aW5nXSBDb252
ZXJ0IER1bXBSZW5kZXJUcmVlIHRvIHVzZSBnZW5lcmF0ZWQgdGVzdCBoZWFkZXIgb3B0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3ODgwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgRnVsbHkgc3VwcG9y
dCB1c2Ugb2YgYW55IFdlYlByZWZlcmVuY2VzKi55YW1sIHByZWZlcmVuY2UgaW4gRHVtcFJlbmRl
clRyZWUgKGZvciBtYWNPUykgYnk6CisgICAgICAgICAgICAtIE1vdmluZyBEdW1wUmVuZGVyVHJl
ZSdzIFRlc3RPcHRpb25zIHRvIGJlIGZ1bGx5IGJhY2tlZCBieSBUZXN0RmVhdHVyZXMgbGlrZSBX
ZWJLaXRUZXN0UnVubm5lci4KKyAgICAgICAgICAgIC0gQWRvcHRpbmcgbmV3IFdlYlByZWZlcmVu
Y2VzIFNQSSBmb3Igc2V0dGluZyBhbnkgcHJlZmVyZW5jZSBieSBrZXkgYW5kIHJlc2V0IGFsbCBw
cmVmZXJlbmNlcyBrZXlzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tOgorICAgICAgICAodG9OUyk6CisgICAgICAgIChyZXNldFdlYlByZWZlcmVuY2Vz
VG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9w
dGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgor
ICAgICAgICAoVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMpOgorCiAyMDIwLTEwLTIy
ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIElQQyB0ZXN0aW5n
IEFQSSBzaG91bGQgZXhwb3NlIEFycmF5QnVmZmVyIGZvciBhbiB1bmtub3duIGRlY29kZWQgYXJn
dW1lbnQKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNjg5
NTEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNiArNDAsNyBAQCBsaXN0KEFQUEVORCBEdW1wUmVuZGVyVHJlZV9QUklWQVRFX0lO
Q0xVCiApCiAKIHNldChEdW1wUmVuZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVTCisg
ICAgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVz
dE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIKICAgICAke0R1
bXBSZW5kZXJUcmVlX0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9u
c0dlbmVyYXRlZEtleXMuaC5lcmIKICkKIApAQCAtNTMsMTIgKzU0LDEzIEBAIHNldChEdW1wUmVu
ZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVMKIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcygke0R1
bXBSZW5kZXJUcmVlX1dFQl9QUkVGRVJFTkNFU30gUFJPUEVSVElFUyBHRU5FUkFURUQgVFJVRSkK
IAogYWRkX2N1c3RvbV9jb21tYW5kKAotICAgIE9VVFBVVCAke0R1bXBSZW5kZXJUcmVlX0RFUklW
RURfU09VUkNFU19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCisgICAgT1VUUFVUICR7
RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vVGVzdE9wdGlvbnNHZW5lcmF0ZWRX
ZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNF
U19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCiAgICAgREVQRU5EUyAke0R1bXBSZW5k
ZXJUcmVlX1dFQl9QUkVGRVJFTkNFU19URU1QTEFURVN9ICR7RHVtcFJlbmRlclRyZWVfV0VCX1BS
RUZFUkVOQ0VTfSBXVEZfQ29weVByZWZlcmVuY2VzCi0gICAgQ09NTUFORCAke1JVQllfRVhFQ1VU
QUJMRX0gJHtXVEZfU0NSSVBUU19ESVJ9L0dlbmVyYXRlUHJlZmVyZW5jZXMucmIgLS1mcm9udGVu
ZCBXZWJLaXRMZWdhY3kgLS1iYXNlICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQ
cmVmZXJlbmNlcy55YW1sIC0tZGVidWcgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dl
YlByZWZlcmVuY2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRhbCAke1dURl9TQ1JJUFRTX0RJUn0v
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCAtLWludGVybmFsICR7
V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwg
LS1vdXRwdXREaXIgIiR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0iIC0tdGVt
cGxhdGUgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
VGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCisgICAgQ09NTUFORCAke1JVQllfRVhFQ1VU
QUJMRX0gJHtXVEZfU0NSSVBUU19ESVJ9L0dlbmVyYXRlUHJlZmVyZW5jZXMucmIgLS1mcm9udGVu
ZCBXZWJLaXRMZWdhY3kgLS1iYXNlICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQ
cmVmZXJlbmNlcy55YW1sIC0tZGVidWcgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dl
YlByZWZlcmVuY2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRhbCAke1dURl9TQ1JJUFRTX0RJUn0v
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCAtLWludGVybmFsICR7
V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwg
LS1vdXRwdXREaXIgIiR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0iIC0tdGVt
cGxhdGUgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
VGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIgLS10ZW1w
bGF0ZSAke0R1bXBSZW5kZXJUcmVlX0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9U
ZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIKICAgICBWRVJCQVRJTSkKIAogbGlzdChBUFBF
TkQgRHVtcFJlbmRlclRyZWVfU09VUkNFUworICAgICR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9T
T1VSQ0VTX0RJUn0vVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNw
cAogICAgICR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRLZXlzLmgKICkKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjg5NTEpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CSh3b3Jr
aW5nIGNvcHkpCkBAIC03LDYgKzcsNyBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2Fs
L2luY2x1ZGUvCiAkKFBST0pFQ1RfRElSKS8uLi9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29u
dGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCiAkKFBST0pFQ1RfRElSKS9CaW5k
aW5ncy9Db2RlR2VuZXJhdG9yRHVtcFJlbmRlclRyZWUucG0KICQoUFJPSkVDVF9ESVIpL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKKyQoUFJPSkVDVF9ESVIpL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0
ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIKICQo
UFJPSkVDVF9ESVIpL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5l
cmF0ZWRLZXlzLmguZXJiCiAkKFBST0pFQ1RfRElSKS9TY3JpcHRzL2dlbmVyYXRlLWRlcml2ZWQt
c291cmNlcy5zaAogJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0NvZGVHZW5lcmF0b3Iu
cG0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjg5NTEpCisrKyBUb29scy9EdW1wUmVuZGVy
VHJlZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkod29ya2luZyBjb3B5KQpAQCAt
MSw0ICsxLDUgQEAKICMgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSB0aGUgZ2VuZXJhdGUteGNm
aWxlbGlzdHMgc2NyaXB0LgogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1
bXBSZW5kZXJUcmVlL0pTVUlTY3JpcHRDb250cm9sbGVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVlL0pTVUlTY3JpcHRDb250cm9sbGVyLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9EdW1wUmVuZGVyVHJlZS9UZXN0
T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnNHZW5lcmF0
ZWRLZXlzLmgKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMubWFrZQko
cmV2aXNpb24gMjY4OTUxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMu
bWFrZQkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsNyBAQCBXRUJfUFJFRkVSRU5DRVMgPSBc
CiAjCiAKIFdFQl9QUkVGRVJFTkNFU19HRU5FUkFURURfRklMRVMgPSBcCisgICAgVGVzdE9wdGlv
bnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCBcCiAgICAgVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRLZXlzLmggXAogIwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDI2ODk1MSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsxMDksNyBA
QAogCQk1REI5QUM5RTBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjcwMC50
dGYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDM3NUYwOTc3MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyNzAwLnR0ZiAq
LzsgfTsKIAkJNURCOUFDOUYwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktpdFdlaWdodFdhdGNoZXI4
MDAudHRmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzNzVGMDk3ODBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjgwMC50
dGYgKi87IH07CiAJCTVEQjlBQ0EwMEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRXYXRj
aGVyOTAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzc1RjA5NzkwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXI5
MDAudHRmICovOyB9OworCQk3Qzk4OTNERjI1NDMzRjhFMDAzNTRFQkMgLyogVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTg5M0RFMjU0MzNDODcwMDM1NEVCQyAvKiBUZXN0
T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwICovOyB9OwogCQk3Q0ZG
OUJCRjI1MzNCQjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRkY5QkJFMjUzM0JCMjQwMDA4MDA5RiAv
KiBUZXN0RmVhdHVyZXMuY3BwICovOyB9OwogCQk3Q0ZGOUJDMjI1MzNCQzE2MDAwODAwOUYgLyog
VGVzdENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0NGRjlCQzEyNTMzQkMxNjAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmNwcCAqLzsgfTsK
IAkJODAwNDVBRUUxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25I
YW5kbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODAwNDVBRUMxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5k
bGVyLm1tICovOyB9OwpAQCAtMzMzLDcgKzMzNCw4IEBACiAJCTdDNDQ2OTdGMjUzNzdBMDIwMDI0
MjkwQSAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRLZXlzLmguZXJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzQ0Njk4
MDI1Mzc3QTAyMDAyNDI5MEEgLyogY2hlY2steGNmaWxlbGlzdHMuc2ggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5zaDsgcGF0aCA9
ICJjaGVjay14Y2ZpbGVsaXN0cy5zaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
NDQ2OTgxMjUzNzdBMDIwMDI0MjkwQSAvKiBnZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2ggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlw
dC5zaDsgcGF0aCA9ICJnZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2giOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk3QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5o
OyBwYXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdDNDQ2OTg1MjUzNzdFNTIwMDI0MjkwQSAvKiBUZXN0T3B0aW9uc0dlbmVyYXRl
ZEtleXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDOTg5M0RFMjU0MzNDODcwMDM1NEVCQyAvKiBUZXN0
T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NCQkMzMjIxRERGQ0Y5QTAwNzg2QjlEIC8qIFRl
c3RPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RPcHRpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRkY5QkJEMjUzM0JCMjQwMDA4MDA5
RiAvKiBUZXN0RmVhdHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdEZlYXR1cmVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRkY5QkJFMjUzM0JCMjQwMDA4MDA5RiAvKiBUZXN0
RmVhdHVyZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVzdEZlYXR1cmVzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc3Nyw2ICs3NzksNyBAQAogCQk3QzQ0Njk4MjI1Mzc3
QzM0MDAyNDI5MEEgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk3Qzk4OTNERTI1NDMzQzg3MDAzNTRFQkMgLyogVGVzdE9w
dGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAqLywKIAkJCQk3QzQ0Njk4
NTI1Mzc3RTUyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmggKi8sCiAJCQkp
OwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwpAQCAtMTI2MCw2ICsxMjYzLDcgQEAKIAkJ
CQlBOEQ3OUNFQjBGQzI4QjJDMDA0QUM4RkUgLyogRHVtcFJlbmRlclRyZWVGaWxlRHJhZ2dpbmdT
b3VyY2UubSBpbiBTb3VyY2VzICovLAogCQkJCUE4QjkxQURBMENGM0IzMkYwMDhGOTFGRiAvKiBE
dW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEI5MUFEQzBD
RjNCMzJGMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVXaW5kb3cubW0gaW4gU291cmNlcyAqLywK
KwkJCQk3Qzk4OTNERjI1NDMzRjhFMDAzNTRFQkMgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJL
aXRMZWdhY3lLZXlNYXBwaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQTE4QjYyMEM5QjA4
QzIwMDExNDM2OSAvKiBFZGl0aW5nRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0Ex
OEI3MDBDOUIwOERCMDAxMTQzNjkgLyogRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDQTE4QjY0MEM5QjA4QzIwMDExNDM2OSAvKiBGcmFtZUxvYWREZWxlZ2F0
ZS5tbSBpbiBTb3VyY2VzICovLApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvU2NyaXB0cy9Q
cmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1h
cHBpbmcuY3BwLmVyYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9TY3JpcHRz
L1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5
TWFwcGluZy5jcHAuZXJiCShub25leGlzdGVudCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Nj
cmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdh
Y3lLZXlNYXBwaW5nLmNwcC5lcmIJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoK
KyAqIDwlPSBAd2FybmluZyAlPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJUZXN0T3B0aW9ucy5oIgorCituYW1lc3BhY2UgV1RSIHsKKworc3RkOjpzdHJpbmcg
VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShjb25zdCBzdGQ6OnN0cmlu
ZyYgd2ViUHJlZmVyZW5jZXNLZXkpCit7CisgICAgc3RhdGljIHN0ZDo6dW5vcmRlcmVkX21hcDxz
dGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IG5vblN0YW5kYXJkS2V5cyA9IHsKKzwlLSBmb3IgQHBy
ZWYgaW4gQGV4cG9zZWRQcmVmZXJlbmNlcy5zZWxlY3QgeyB8cHwgcC5vcHRzWyJ3ZWJLaXRMZWdh
Y3lQcmVmZXJlbmNlS2V5Il0gfSBkbyAtJT4KKyAgICAgICAgeyAiPCU9IEBwcmVmLm5hbWUgJT4i
LCAiPCU9IEBwcmVmLnByZWZlcmVuY2VLZXkgJT4iIH0sIFwKKzwlLSBlbmQgLSU+CisgICAgfTsK
KworICAgIGF1dG8gaXQgPSBub25TdGFuZGFyZEtleXMuZmluZCh3ZWJQcmVmZXJlbmNlc0tleSk7
CisgICAgaWYgKGl0ICE9IG5vblN0YW5kYXJkS2V5cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0
LT5zZWNvbmQ7CisKKyAgICByZXR1cm4gIldlYktpdCIgKyB3ZWJQcmVmZXJlbmNlc0tleTsKK30K
KworfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQko
cmV2aXNpb24gMjY4OTUxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNiArMTMwLDExIEBAIGV4dGVybiAiQyIgewog
I2ltcG9ydCA8bWFjaC1vL2dldHNlY3QuaD4KIH0KIAorc3RhdGljIFJldGFpblB0cjxOU1N0cmlu
Zz4gdG9OUyhjb25zdCBzdGQ6OnN0cmluZyYgc3RyaW5nKQoreworICAgIHJldHVybiBhZG9wdE5T
KFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoVVRGOFN0cmluZzpzdHJpbmcuY19zdHIoKV0pOwor
fQorCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBAaW50ZXJmYWNlIER1bXBSZW5kZXJUcmVl
QXBwbGljYXRpb24gOiBOU0FwcGxpY2F0aW9uCiBAZW5kCkBAIC04NDcsNiArODUyLDggQEAgc3Rh
dGljIHZvaWQgZW5hYmxlRXhwZXJpbWVudGFsRmVhdHVyZXMoVwogLy8gQ2FsbGVkIGJlZm9yZSBl
YWNoIHRlc3QuCiBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFs
dWVzKFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcykKIHsKKyAgICBbcHJlZmVyZW5jZXMgX3Jl
c2V0VG9EZWZhdWx0VmFsdWVzRm9yVGVzdGluZ107CisKICAgICBlbmFibGVFeHBlcmltZW50YWxG
ZWF0dXJlcyhwcmVmZXJlbmNlcyk7CiAKICAgICBbcHJlZmVyZW5jZXMgc2V0TmVlZHNTdG9yYWdl
QWNjZXNzRnJvbUZpbGVVUkxzUXVpcms6IE5PXTsKQEAgLTg3Myw3ICs4ODAsNiBAQCBzdGF0aWMg
dm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0CiAjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgW3ByZWZlcmVuY2VzIHNldFNob3VsZFByaW50QmFja2dyb3VuZHM6WUVTXTsKICNl
bmRpZgotICAgIFtwcmVmZXJlbmNlcyBzZXRDYWNoZU1vZGVsOldlYkNhY2hlTW9kZWxEb2N1bWVu
dEJyb3dzZXJdOwogICAgIFtwcmVmZXJlbmNlcyBzZXRYU1NBdWRpdG9yRW5hYmxlZDpOT107CiAg
ICAgW3ByZWZlcmVuY2VzIHNldEV4cGVyaW1lbnRhbE5vdGlmaWNhdGlvbnNFbmFibGVkOk5PXTsK
ICAgICBbcHJlZmVyZW5jZXMgc2V0UGx1Z0luc0VuYWJsZWQ6WUVTXTsKQEAgLTk2OSw0MSArOTc1
LDIxIEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3QKICAgICBbV2Vi
UHJlZmVyZW5jZXMgX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBv
bGljeTpOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbl07
CiB9CiAKLXN0YXRpYyBib29sIGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKHN0ZDo6c3Ry
aW5nIGtleSwgYm9vbCBkZWZhdWx0VmFsdWUsIGNvbnN0IFdUUjo6VGVzdE9wdGlvbnMmIG9wdGlv
bnMpCi17Ci0gICAgYXV0byBpdCA9IG9wdGlvbnMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcygp
LmZpbmQoa2V5KTsKLSAgICBpZiAoaXQgIT0gb3B0aW9ucy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1
cmVzKCkuZW5kKCkpCi0gICAgICAgIHJldHVybiBpdC0+c2Vjb25kOwotICAgIHJldHVybiBkZWZh
dWx0VmFsdWU7Ci19Ci0KIHN0YXRpYyB2b2lkIHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlv
bnMoV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzLCBjb25zdCBXVFI6OlRlc3RPcHRpb25zJiBv
cHRpb25zKQogewogICAgIHByZWZlcmVuY2VzLnByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBvcHRp
b25zLnVzZUVwaGVtZXJhbFNlc3Npb24oKTsKIAotICAgIHByZWZlcmVuY2VzLmF0dGFjaG1lbnRF
bGVtZW50RW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJBdHRhY2htZW50
RWxlbWVudEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuYWNjZWxl
cmF0ZWREcmF3aW5nRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJBY2Nl
bGVyYXRlZERyYXdpbmdFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2Vz
Lm1lbnVJdGVtRWxlbWVudEVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgi
TWVudUl0ZW1FbGVtZW50RW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNl
cy5rZXlnZW5FbGVtZW50RW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJL
ZXlnZW5FbGVtZW50RW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5t
b2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVl
KCJNb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCIsIHRydWUsIG9wdGlvbnMpOwotICAgIHByZWZl
cmVuY2VzLmluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1
cmVWYWx1ZSgiSW5zcGVjdG9yQWRkaXRpb25zRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAg
ICBwcmVmZXJlbmNlcy5hbGxvd0Nyb3NzT3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50
aWFscyA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJBbGxvd0Nyb3NzT3JpZ2luU3Vi
cmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVm
ZXJlbmNlcy5jb2xvckZpbHRlckVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1
ZSgiQ29sb3JGaWx0ZXJFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2Vz
LnNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXNFbmFibGVkID0gYm9vbFdlYlByZWZlcmVu
Y2VGZWF0dXJlVmFsdWUoIlNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXNFbmFibGVkIiwg
dHJ1ZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMud2ViR1BVRW5hYmxlZCA9IGJvb2xXZWJQ
cmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJXZWJHUFVFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwot
ICAgIHByZWZlcmVuY2VzLkNTU0xvZ2ljYWxFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0
dXJlVmFsdWUoIkNTU0xvZ2ljYWxFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZl
cmVuY2VzLmxpbmVIZWlnaHRVbml0c0VuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVW
YWx1ZSgiTGluZUhlaWdodFVuaXRzRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVm
ZXJlbmNlcy5hZENsaWNrQXR0cmlidXRpb25FbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0
dXJlVmFsdWUoIkFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0g
ICAgcHJlZmVyZW5jZXMucmVzaXplT2JzZXJ2ZXJFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VG
ZWF0dXJlVmFsdWUoIlJlc2l6ZU9ic2VydmVyRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAg
ICBwcmVmZXJlbmNlcy5DU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkID0gYm9vbFdlYlBy
ZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkNTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWQiLCBm
YWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuY29yZU1hdGhNTEVuYWJsZWQgPSBib29s
V2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQ29yZU1hdGhNTEVuYWJsZWQiLCBmYWxzZSwgb3B0
aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMucmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWQgPSBib29s
V2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiUmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWQiLCBm
YWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuYXN5bmNDbGlwYm9hcmRBUElFbmFibGVk
ID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxl
ZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy51c2VzUGFnZUNhY2hlID0gYm9v
bFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIlVzZXNCYWNrRm9yd2FyZENhY2hlIiwgZmFsc2Us
IG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdy
YXRpb25FbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkxheW91dEZvcm1h
dHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkIiwgdHJ1ZSwgb3B0aW9ucyk7Ci0gICAgcHJl
ZmVyZW5jZXMuYXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWQgPSBib29s
V2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhl
aWdodEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuYWxsb3dUb3BO
YXZpZ2F0aW9uVG9EYXRhVVJMcyA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJBbGxv
d1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzIiwgdHJ1ZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5j
ZXMuY29udGFjdFBpY2tlckFQSUVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1
ZSgiQ29udGFjdFBpY2tlckFQSUVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7CisgICAgZm9yIChj
b25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVy
ZXMoKSkKKyAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXRCb29sUHJlZmVyZW5jZUZvclRlc3RpbmdX
aXRoVmFsdWU6dmFsdWUgZm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdh
Y3lQcmVmZXJlbmNlS2V5KGtleSkpLmdldCgpXTsKKworICAgIGZvciAoY29uc3QgYXV0byYgW2tl
eSwgdmFsdWVdIDogb3B0aW9ucy5kb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAg
ICAgW3ByZWZlcmVuY2VzIF9zZXREb3VibGVQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2
YWx1ZSBmb3JLZXk6dG9OUyhXVFI6OlRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVu
Y2VLZXkoa2V5KSkuZ2V0KCldOworCisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0g
OiBvcHRpb25zLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJlcygpKQorICAgICAgICBbcHJlZmVy
ZW5jZXMgX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnZhbHVlIGZvcktl
eTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShrZXkp
KS5nZXQoKV07CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMu
c3RyaW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0
U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dG9OUyh2YWx1ZSkuZ2V0KCkgZm9y
S2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGtl
eSkpLmdldCgpXTsKIH0KIAogLy8gQ2FsbGVkIG9uY2Ugb24gRHVtcFJlbmRlclRyZWUgc3RhcnR1
cC4KQEAgLTEwMzAsNiArMTAxNiw3IEBAIHN0YXRpYyB2b2lkIHNldERlZmF1bHRzVG9Db25zaXN0
ZW50VmFsdWUKICAgICAgICAgV2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5OiBA
WUVTLAogICAgICAgICBXZWJLaXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrUHJlZmVyZW5jZUtl
eTogQFlFUywKICAgICAgICAgV2ViS2l0SW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJ
bmxpbmVBdHRyaWJ1dGVLZXk6IEBOTywKKyAgICAgICAgV2ViS2l0Q2FjaGVNb2RlbFByZWZlcmVu
Y2VLZXk6IEAoV2ViQ2FjaGVNb2RlbERvY3VtZW50QnJvd3NlciksCiAgICAgICAgIEAiVXNlV2Vi
S2l0V2ViSW5zcGVjdG9yIjogQFlFUywKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAg
ICAgQCJOU1ByZWZlcnJlZFNwZWxsU2VydmVyTGFuZ3VhZ2UiOiBAImVuX1VTIiwKQEAgLTE4Nzgs
NiArMTg2NSw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXQKIAog
ICAgIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMod2ViVmlldy5wcmVmZXJl
bmNlcyk7CiAgICAgc2V0V2ViUHJlZmVyZW5jZXNGb3JUZXN0T3B0aW9ucyh3ZWJWaWV3LnByZWZl
cmVuY2VzLCBvcHRpb25zKTsKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBbd2ViVmlldyBzZXRX
YW50c0xheWVyOm9wdGlvbnMubGF5ZXJCYWNrZWRXZWJWaWV3KCldOwogI2VuZGlmCkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQkocmV2aXNpb24gMjY4OTUx
KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTYwOSw3ICs2MDksNyBAQCB2b2lkIFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVy
ZW5jZShKU1N0CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB2YWx1ZUNGID0gYWRvcHRDRihK
U1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB2YWx1ZSkpOwogICAgIE5T
U3RyaW5nICp2YWx1ZU5TID0gKF9fYnJpZGdlIE5TU3RyaW5nICopdmFsdWVDRi5nZXQoKTsKIAot
ICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gX3NldFByZWZlcmVuY2VGb3JU
ZXN0V2l0aFZhbHVlOnZhbHVlTlMgZm9yS2V5OmtleU5TXTsKKyAgICBbW1ttYWluRnJhbWUgd2Vi
Vmlld10gcHJlZmVyZW5jZXNdIF9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1
ZTp2YWx1ZU5TIGZvcktleTprZXlOU107CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQWxs
VmlzaXRlZExpbmtzKCkKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCShyZXZpc2lvbiAyNjg5NTEpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIxLDE3ICs5MjEsMTYgQEAgdm9pZCBU
ZXN0Q29udHJvbGxlcjo6cmVzZXRQcmVmZXJlbmNlc1RvQwogICAgIHBsYXRmb3JtUmVzZXRQcmVm
ZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcygpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBba2V5
LCB2YWx1ZV0gOiBvcHRpb25zLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKLSAgICAgICAg
V0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleShwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0so
a2V5KS5nZXQoKSk7CisgICAgICAgIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JU
ZXN0aW5nKHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKIAogICAgIGZvciAo
Y29uc3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy5kb3VibGVXZWJQcmVmZXJlbmNlRmVh
dHVyZXMoKSkKLSAgICAgICAgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5KHByZWZl
cmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKKyAgICAgICAgV0tQcmVmZXJlbmNlc1Nl
dERvdWJsZVZhbHVlRm9yS2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5
KS5nZXQoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMu
dWludDMyV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCi0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXRV
SW50MzJWYWx1ZUZvcktleShwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5nZXQoKSk7Cisg
ICAgICAgIFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVy
ZW5jZXMsIHZhbHVlLCB0b1dLKGtleSkuZ2V0KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBb
a2V5LCB2YWx1ZV0gOiBvcHRpb25zLnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAg
ICAgICBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkocHJlZmVyZW5jZXMsIHRvV0so
dmFsdWUpLmdldCgpLCB0b1dLKGtleSkuZ2V0KCkpOwotCisgICAgICAgIFdLUHJlZmVyZW5jZXNT
ZXRTdHJpbmdWYWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVyZW5jZXMsIHRvV0sodmFsdWUpLmdl
dCgpLCB0b1dLKGtleSkuZ2V0KCkpOwogfQogCiBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0
YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZXNldFN0
YWdlIHJlc2V0U3RhZ2UpCg==
</data>
<flag name="commit-queue"
          id="428673"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412264</attachid>
            <date>2020-10-25 08:57:36 -0700</date>
            <delta_ts>2020-10-25 12:16:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217880-20201025085735.patch</filename>
            <type>text/plain</type>
            <size>34875</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjg5NTEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDIwLTEwLTIwICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVu
ZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVkIHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlbmFtZSBXS1ByZWZlcmVuY2VzU2V0
KlZhbHVlRm9yS2V5IFNQSSB0byBXS1ByZWZlcmVuY2VzU2V0KlZhbHVlRm9yS2V5Rm9yVGVzdGlu
ZworICAgICAgICB0byBtYWtlIGl0IGNsZWFyIHdoYXQgdGhleSBhcmUgdXNlZCBmb3IgYW5kIGZv
ciBjb25zaXN0ZW5jeSB3aXRoIFdlYktpdExlZ2FjeS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFs
dWVGb3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1
ZUZvcktleUZvclRlc3RpbmcpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVl
Rm9yS2V5Rm9yVGVzdGluZyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVG
b3JLZXlGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JL
ZXkpOiBEZWxldGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5
KTogRGVsZXRlZC4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRVSW50MzJWYWx1ZUZvcktleSk6
IERlbGV0ZWQuCisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0
ZS5oOgorCiAyMDIwLTEwLTIyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIElQQyB0ZXN0aW5nIEFQSSBzaG91bGQgZXhwb3NlIEFycmF5QnVmZmVyIGZvciBhbiB1
bmtub3duIGRlY29kZWQgYXJndW1lbnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiAyNjg5NTEpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzgsMjIgKzc4LDIyIEBAIHZvaWQgV0tQcmVmZXJlbmNlc1NldEludGVybmFsRGVidWdGZWF0
dXIKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRJbnRlcm5hbERlYnVnRmVhdHVyZUVu
YWJsZWRGb3JLZXkodG9XVEZTdHJpbmcoaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVLZXkpLCB2YWx1ZSk7
CiB9CiAKLXZvaWQgV0tQcmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleShXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCit2b2lkIFdL
UHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXNSZWYsIGJvb2wgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSkKIHsKICAgICB0b0lt
cGwocHJlZmVyZW5jZXNSZWYpLT5zZXRCb29sVmFsdWVGb3JLZXkodG9XVEZTdHJpbmcoa2V5KSwg
dmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleShXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdLU3RyaW5nUmVmIGtl
eSkKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdLU3RyaW5nUmVmIGtl
eSkKIHsKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRCb29sVmFsdWVGb3JLZXkodG9X
VEZTdHJpbmcoa2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdLUHJlZmVyZW5jZXNTZXRVSW50MzJW
YWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCB1aW50MzJfdCB2YWx1
ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JL
ZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIHVpbnQzMl90IHZh
bHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0
VUludDMyVmFsdWVGb3JLZXkodG9XVEZTdHJpbmcoa2V5KSwgdmFsdWUpOwogfQogCi12b2lkIFdL
UHJlZmVyZW5jZXNTZXRTdHJpbmdWYWx1ZUZvcktleShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVu
Y2VzUmVmLCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KQordm9pZCBXS1ByZWZl
cmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJl
ZmVyZW5jZXNSZWYsIFdLU3RyaW5nUmVmIHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAgICAg
dG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0U3RyaW5nVmFsdWVGb3JLZXkodG9XVEZTdHJpbmco
a2V5KSwgdG9XVEZTdHJpbmcodmFsdWUpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaAkocmV2aXNp
b24gMjY4OTUxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNl
c1JlZlByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDEwIEBAIFdLX0VYUE9S
VCB2b2lkIFdLUHJlZmVyZW5jZXNSZXNldEFsbEludGUKIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVy
ZW5jZXNTZXRJbnRlcm5hbERlYnVnRmVhdHVyZUZvcktleShXS1ByZWZlcmVuY2VzUmVmLCBib29s
LCBXS1N0cmluZ1JlZik7CiAKIC8vIFRoZSBmb2xsb3dpbmcgZ2VuZXJpYyBzZXR0ZXIgZnVuY3Rp
b25zIGFyZSBvbmx5IGludGVuZGVkIGZvciB1c2UgYnkgdGVzdGluZyBpbmZyYXN0cnVjdHVyZS4K
LVdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRCb29sVmFsdWVGb3JLZXkoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKLVdL
X0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXREb3VibGVWYWx1ZUZvcktleShXS1ByZWZlcmVu
Y2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7Ci1X
S19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0VUludDMyVmFsdWVGb3JLZXkoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgdWludDMyX3QgdmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7
Ci1XS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3RyaW5nVmFsdWVGb3JLZXkoV0tQcmVm
ZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgdmFsdWUsIFdLU3RyaW5nUmVm
IGtleSk7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVlRm9yS2V5Rm9y
VGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIHZhbHVlLCBXS1N0
cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldERvdWJsZVZhbHVl
Rm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBkb3VibGUg
dmFsdWUsIFdLU3RyaW5nUmVmIGtleSk7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0
VUludDMyVmFsdWVGb3JLZXlGb3JUZXN0aW5nKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIHVpbnQzMl90IHZhbHVlLCBXS1N0cmluZ1JlZiBrZXkpOworV0tfRVhQT1JUIHZvaWQgV0tQ
cmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5Rm9yVGVzdGluZyhXS1ByZWZlcmVuY2VzUmVm
IHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1JlZiB2YWx1ZSwgV0tTdHJpbmdSZWYga2V5KTsKIAog
Ly8gRm9yIFRlc3QgUnVubmVyIFVzZSBvbmx5LgogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNl
c1Jlc2V0VGVzdFJ1bm5lck92ZXJyaWRlcyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVm
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODk1MSkKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDIwLTEwLTIwICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbVGVzdGluZ10gQ29udmVydCBEdW1wUmVuZGVyVHJlZSB0byB1c2UgZ2VuZXJhdGVk
IHRlc3QgaGVhZGVyIG9wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNzg4MAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgIEV4cG9zZSBhIHNldCBvZiBzZXR0ZXJzIHRvIGZvciBEdW1wUmVuZGVyVHJlZSB0
byB1c2Ugd2hlbiBzZXR0aW5nIHByZWZlcmVuY2VzCisgICAgICAgIGJ5IHN0cmluZy4KKworICAg
ICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVu
Y2VzIF9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbl0pOgorICAgICAgICAo
K1tXZWJQcmVmZXJlbmNlcyBfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNj
ZXB0UG9saWN5Ol0pOgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBfY2xlYXJOZXR3b3JrTG9h
ZGVyU2Vzc2lvbl0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBfc2V0Qm9vbFByZWZlcmVu
Y2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5j
ZXMgX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleTpdKToKKyAg
ICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgX3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0
aFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgX3NldFN0cmluZ1By
ZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOmZvcktleTpdKToKKyAgICAgICAgKC1bV2ViUHJl
ZmVyZW5jZXMgX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZhbHVlOmZvcktleTpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oOgorCiAyMDIwLTEw
LTIxICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1Mg
V0sxXSBwcm92aWRlIGEgd2F5IGZvciBBcHBsZS1pbnRlcm5hbCBjbGllbnRzIHRvIGRpc2FibGUg
bGluayBwcmV2aWV3CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZXMubW0JKHJldmlzaW9uIDI2ODk1MSkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEw
MjUsNyArMTAyNSw2IEBAIC0gKFdlYkNhY2hlTW9kZWwpY2FjaGVNb2RlbAogICAgIHJldHVybiAo
V2ViQ2FjaGVNb2RlbClbc2VsZiBfaW50ZWdlclZhbHVlRm9yS2V5OldlYktpdENhY2hlTW9kZWxQ
cmVmZXJlbmNlS2V5XTsKIH0KIAotCiAtICh2b2lkKXNldFN1cHByZXNzZXNJbmNyZW1lbnRhbFJl
bmRlcmluZzooQk9PTClzdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmcKIHsKICAgICBbc2Vs
ZiBfc2V0Qm9vbFZhbHVlOnN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZyBmb3JLZXk6V2Vi
S2l0U3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nS2V5XTsKQEAgLTE2NjAsMjQgKzE2NTks
MTYgQEAgKyAodm9pZClfc2V0SUJDcmVhdG9ySUQ6KE5TU3RyaW5nICopc3RyaQogICAgIFtvbGQg
cmVsZWFzZV07CiB9CiAKLSsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdT
ZXNzaW9uCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBXZWJUaHJlYWRMb2NrKCk7
Ci0jZW5kaWYKLSAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGlu
Z1Nlc3Npb24oKTsKLX0KLQotKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lvbgorLSAo
dm9pZClkaWRSZW1vdmVGcm9tV2ViVmlldwogewotICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1h
cDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuZGVsZXRlQWxsQ29va2llcygpOworICAgIEFTU0VS
VChfcHJpdmF0ZS0+bnVtV2ViVmlld3MpOworICAgIGlmICgtLV9wcml2YXRlLT5udW1XZWJWaWV3
cyA9PSAwKQorICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBv
c3ROb3RpZmljYXRpb25OYW1lOldlYlByZWZlcmVuY2VzUmVtb3ZlZE5vdGlmaWNhdGlvbiBvYmpl
Y3Q6c2VsZiB1c2VySW5mbzpuaWxdOwogfQogCi0rICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xv
YWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSlw
b2xpY3kKKy0gKHZvaWQpd2lsbEFkZFRvV2ViVmlldwogewotICAgIFJldGFpblB0cjxDRkhUVFBD
b29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFw
OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCk7Ci0gICAgQVNTRVJUKGNv
b2tpZVN0b3JhZ2UpOyAvLyBXaWxsIGZhaWwgd2hlbiBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6
OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKSB3YXMgbm90IGNhbGxlZCBiZWZvcmVoYW5kLgot
ICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFn
ZS5nZXQoKSwgcG9saWN5KTsKKyAgICArK19wcml2YXRlLT5udW1XZWJWaWV3czsKIH0KIAogLSAo
Qk9PTClpc0RPTVBhc3RlQWxsb3dlZApAQCAtMTk1MSwyNiArMTk0Miw2IEBAIC0gKHZvaWQpc2V0
VXNlUHJlSFRNTDVQYXJzZXJRdWlya3M6KEJPT0wKICAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmZs
YWcgZm9yS2V5OldlYktpdFVzZVByZUhUTUw1UGFyc2VyUXVpcmtzS2V5XTsKIH0KIAotLSAodm9p
ZClkaWRSZW1vdmVGcm9tV2ViVmlldwotewotICAgIEFTU0VSVChfcHJpdmF0ZS0+bnVtV2ViVmll
d3MpOwotICAgIGlmICgtLV9wcml2YXRlLT5udW1XZWJWaWV3cyA9PSAwKQotICAgICAgICBbW05T
Tm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdCi0gICAgICAgICAgICBwb3N0Tm90aWZp
Y2F0aW9uTmFtZTpXZWJQcmVmZXJlbmNlc1JlbW92ZWROb3RpZmljYXRpb24KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgb2JqZWN0OnNlbGYKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJJ
bmZvOm5pbF07Ci19Ci0KLS0gKHZvaWQpd2lsbEFkZFRvV2ViVmlldwotewotICAgICsrX3ByaXZh
dGUtPm51bVdlYlZpZXdzOwotfQotCi0tICh2b2lkKV9zZXRQcmVmZXJlbmNlRm9yVGVzdFdpdGhW
YWx1ZTooTlNTdHJpbmcgKil2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5Ci17Ci0gICAgW3Nl
bGYgX3NldFN0cmluZ1ZhbHVlOnZhbHVlIGZvcktleTprZXldOwotfQotCiAtICh2b2lkKXNldEZ1
bGxTY3JlZW5FbmFibGVkOihCT09MKWZsYWcKIHsKICAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmZs
YWcgZm9yS2V5OldlYktpdEZ1bGxTY3JlZW5FbmFibGVkUHJlZmVyZW5jZUtleV07CkBAIC0zMDEz
LDYgKzI5ODQsNjggQEAgLSAodm9pZClfc2V0RW5hYmxlZDooQk9PTCl2YWx1ZSBmb3JGZWF0dQog
CiBAZW5kCiAKK0BpbXBsZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVRlc3Rp
bmcpCisKKysgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uCit7
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBXZWJUaHJlYWRMb2NrKCk7CisjZW5kaWYK
KyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb25NYXA6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24o
KTsKK30KKworKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNj
ZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9saWN5Cit7CisgICAgYXV0byBj
b29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKS5jb29raWVTdG9yYWdlKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoY29va2llU3RvcmFn
ZSk7IC8vIFdpbGwgZmFpbCB3aGVuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbk1hcDo6c3dpdGNoVG9O
ZXdUZXN0aW5nU2Vzc2lvbigpIHdhcyBub3QgY2FsbGVkIGJlZm9yZWhhbmQuCisgICAgQ0ZIVFRQ
Q29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBw
b2xpY3kpOworfQorCisrICh2b2lkKV9jbGVhck5ldHdvcmtMb2FkZXJTZXNzaW9uCit7CisgICAg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uTWFwOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5kZWxldGVB
bGxDb29raWVzKCk7Cit9CisKKy0gKHZvaWQpX3Jlc2V0VG9EZWZhdWx0VmFsdWVzRm9yVGVzdGlu
ZworeworICAgIFdlYkNhY2hlTW9kZWwgb2xkQ2FjaGVNb2RlbCA9IHNlbGYuY2FjaGVNb2RlbDsK
KworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgZGlzcGF0Y2hfYmFycmllcl9zeW5jKF9w
cml2YXRlLT5yZWFkV3JpdGVRdWV1ZSwgXnsKKyAgICAgICAgX3ByaXZhdGUtPnZhbHVlcyA9IGFk
b3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgfSk7CisjZWxz
ZQorICAgIF9wcml2YXRlLT52YWx1ZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBh
bGxvY10gaW5pdF0pOworI2VuZGlmCisKKyAgICBbc2VsZiBfdXBkYXRlUHJpdmF0ZUJyb3dzaW5n
U3RhdGVUbzpbc2VsZiBwcml2YXRlQnJvd3NpbmdFbmFibGVkXV07CisgICAgW3NlbGYgX3Bvc3RQ
cmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb25dOworICAgIGlmIChvbGRDYWNoZU1vZGVsICE9
IFtzZWxmIGNhY2hlTW9kZWxdKQorICAgICAgICBbc2VsZiBfcG9zdENhY2hlTW9kZWxDaGFuZ2Vk
Tm90aWZpY2F0aW9uXTsKK30KKworLSAodm9pZClfc2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0aW5n
V2l0aFZhbHVlOihCT09MKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBbc2Vs
ZiBfc2V0Qm9vbFZhbHVlOnZhbHVlIGZvcktleTprZXldOworfQorCistICh2b2lkKV9zZXRVSW50
MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZToodWludDMyX3QpdmFsdWUgZm9yS2V5OihO
U1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9zZXRJbnRlZ2VyVmFsdWU6dmFsdWUgZm9yS2V5
OmtleV07Cit9CisKKy0gKHZvaWQpX3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZh
bHVlOihkb3VibGUpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQoreworICAgIFtzZWxmIF9z
ZXRGbG9hdFZhbHVlOnZhbHVlIGZvcktleTprZXldOworfQorCistICh2b2lkKV9zZXRTdHJpbmdQ
cmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTooTlNTdHJpbmcgKil2YWx1ZSBmb3JLZXk6KE5T
U3RyaW5nICopa2V5Cit7CisgICAgW3NlbGYgX3NldFN0cmluZ1ZhbHVlOnZhbHVlIGZvcktleTpr
ZXldOworfQorCitAZW5kCisKIEBpbXBsZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNlcyAoV2ViUHJp
dmF0ZVByZWZlcmVuY2VzQ29udmVydGVkVG9XZWJGZWF0dXJlKQogCiAtIChCT09MKXVzZXJHZXN0
dXJlUHJvbWlzZVByb3BhZ2F0aW9uRW5hYmxlZApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCShyZXZpc2lv
biAyNjg5NTEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlByZWZlcmVu
Y2VzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSwxMyArODksNiBAQCBAaW50ZXJmYWNl
IFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlKQogKyAodm9pZClfc2V0SW5pdGlhbERlZmF1bHRU
ZXh0RW5jb2RpbmdUb1N5c3RlbUVuY29kaW5nOwogKyAodm9pZClfc2V0SUJDcmVhdG9ySUQ6KE5T
U3RyaW5nICopc3RyaW5nOwogCi0vLyBGb3IgRHVtcFJlbmRlclRyZWUgdXNlIG9ubHkuCi0rICh2
b2lkKV9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdUZXN0aW5nU2Vzc2lvbjsKLSsgKHZvaWQpX3Nl
dEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29v
a2llQWNjZXB0UG9saWN5KWNvb2tpZUFjY2VwdFBvbGljeTsKLSsgKHZvaWQpX2NsZWFyTmV0d29y
a0xvYWRlclNlc3Npb247Ci0vLyBVc2VkIHRvIHNldCBwcmVmZXJlbmNlIHNwZWNpZmllZCBpbiB0
aGUgdGVzdCB2aWEgTGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKC4uKS4K
LS0gKHZvaWQpX3NldFByZWZlcmVuY2VGb3JUZXN0V2l0aFZhbHVlOihOU1N0cmluZyAqKXZhbHVl
IGZvcktleTooTlNTdHJpbmcgKilrZXk7Ci0KICsgKHZvaWQpc2V0V2ViS2l0TGlua1RpbWVWZXJz
aW9uOihpbnQpdmVyc2lvbjsKIAogLy8gRm9yIFdlYlZpZXcncyB1c2Ugb25seS4KQEAgLTEwNyw2
ICsxMDAsOCBAQCBAaW50ZXJmYWNlIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlKQogLSAodm9p
ZClfc3luY2hyb25pemVXZWJTdG9yYWdlUG9saWN5V2l0aENvb2tpZVBvbGljeTsKICNlbmRpZgog
CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBhdXRvbWF0aWNhbGx5RGV0ZWN0c0NhY2hlTW9k
ZWw7CisKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9aXNETlNQcmVmZXRjaGluZ0VuYWJs
ZWQpIEJPT0wgRE5TUHJlZmV0Y2hpbmdFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMpIEJP
T0wgZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBXZWJLaXRK
YXZhU2NyaXB0UnVudGltZUZsYWdzIGphdmFTY3JpcHRSdW50aW1lRmxhZ3M7CkBAIC0xMTQsNyAr
MTA5LDYgQEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZSkKIEBwcm9wZXJ0
eSAobm9uYXRvbWljKSBCT09MIGFwcGxpY2F0aW9uQ2hyb21lTW9kZUVuYWJsZWQ7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYykgQk9PTCB1c2VzRW5jb2RpbmdEZXRlY3RvcjsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljKSBCT09MIHNocmlua3NTdGFuZGFsb25lSW1hZ2VzVG9GaXQ7Ci1AcHJvcGVydHkgKG5v
bmF0b21pYykgQk9PTCBhdXRvbWF0aWNhbGx5RGV0ZWN0c0NhY2hlTW9kZWw7CiBAcHJvcGVydHkg
KG5vbmF0b21pYywgZ2V0dGVyPWRvbVRpbWVyc1Rocm90dGxpbmdFbmFibGVkKSBCT09MIERPTVRp
bWVyc1Rocm90dGxpbmdFbmFibGVkOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgd2ViQXJj
aGl2ZURlYnVnTW9kZUVuYWJsZWQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBsb2NhbEZp
bGVDb250ZW50U25pZmZpbmdFbmFibGVkOwpAQCAtMzEwLDYgKzMwNCwxOCBAQCBAaW50ZXJmYWNl
IFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlRmVhCiAtICh2b2lkKV9zZXRFbmFibGVkOihCT09M
KXZhbHVlIGZvckZlYXR1cmU6KFdlYkZlYXR1cmUgKilmZWF0dXJlOwogQGVuZAogCitAaW50ZXJm
YWNlIFdlYlByZWZlcmVuY2VzIChXZWJQcml2YXRlVGVzdGluZykKKysgKHZvaWQpX3N3aXRjaE5l
dHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uOworKyAodm9pZClfc2V0Q3VycmVudE5ldHdv
cmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xp
Y3kpY29va2llQWNjZXB0UG9saWN5OworKyAodm9pZClfY2xlYXJOZXR3b3JrTG9hZGVyU2Vzc2lv
bjsKKworLSAodm9pZClfcmVzZXRUb0RlZmF1bHRWYWx1ZXNGb3JUZXN0aW5nOworLSAodm9pZClf
c2V0Qm9vbFByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihCT09MKXZhbHVlIGZvcktleToo
TlNTdHJpbmcgKilrZXk7CistICh2b2lkKV9zZXRVSW50MzJQcmVmZXJlbmNlRm9yVGVzdGluZ1dp
dGhWYWx1ZToodWludDMyX3QpdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZvaWQp
X3NldERvdWJsZVByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOihkb3VibGUpdmFsdWUgZm9y
S2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZvaWQpX3NldFN0cmluZ1ByZWZlcmVuY2VGb3JUZXN0
aW5nV2l0aFZhbHVlOihOU1N0cmluZyAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXk7CitA
ZW5kCisKIC8vIEZJWE1FOiBJZiB0aGVzZSBhcmUgbm90IHVzZWQgYW55d2hlcmUsIHdlIHNob3Vs
ZCByZW1vdmUgdGhlbSBhbmQgb25seSB1c2UgV2ViRmVhdHVyZSBtZWNoYW5pc20gZm9yIHRoZSBw
cmVmZXJlbmNlLgogQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZVByZWZlcmVu
Y2VzQ29udmVydGVkVG9XZWJGZWF0dXJlKQogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgdXNl
ckdlc3R1cmVQcm9taXNlUHJvcGFnYXRpb25FbmFibGVkOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjY4OTUxKQorKysgVG9v
bHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjAtMTAtMjMg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFtUZXN0aW5nXSBDb252
ZXJ0IER1bXBSZW5kZXJUcmVlIHRvIHVzZSBnZW5lcmF0ZWQgdGVzdCBoZWFkZXIgb3B0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3ODgwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgRnVsbHkgc3VwcG9y
dCB1c2Ugb2YgYW55IFdlYlByZWZlcmVuY2VzKi55YW1sIHByZWZlcmVuY2UgaW4gRHVtcFJlbmRl
clRyZWUgKGZvciBtYWNPUykgYnk6CisgICAgICAgICAgICAtIE1vdmluZyBEdW1wUmVuZGVyVHJl
ZSdzIFRlc3RPcHRpb25zIHRvIGJlIGZ1bGx5IGJhY2tlZCBieSBUZXN0RmVhdHVyZXMgbGlrZSBX
ZWJLaXRUZXN0UnVubm5lci4KKyAgICAgICAgICAgIC0gQWRvcHRpbmcgbmV3IFdlYlByZWZlcmVu
Y2VzIFNQSSBmb3Igc2V0dGluZyBhbnkgcHJlZmVyZW5jZSBieSBrZXkgYW5kIHJlc2V0IGFsbCBw
cmVmZXJlbmNlcyBrZXlzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tOgorICAgICAgICAodG9OUyk6CisgICAgICAgIChyZXNldFdlYlByZWZlcmVuY2Vz
VG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9w
dGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgor
ICAgICAgICAoVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OnJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMpOgorCiAyMDIwLTEwLTIy
ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIElQQyB0ZXN0aW5n
IEFQSSBzaG91bGQgZXhwb3NlIEFycmF5QnVmZmVyIGZvciBhbiB1bmtub3duIGRlY29kZWQgYXJn
dW1lbnQKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNjg5
NTEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNiArNDAsNyBAQCBsaXN0KEFQUEVORCBEdW1wUmVuZGVyVHJlZV9QUklWQVRFX0lO
Q0xVCiApCiAKIHNldChEdW1wUmVuZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVNfVEVNUExBVEVTCisg
ICAgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVz
dE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIKICAgICAke0R1
bXBSZW5kZXJUcmVlX0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9u
c0dlbmVyYXRlZEtleXMuaC5lcmIKICkKIApAQCAtNTMsMTIgKzU0LDEzIEBAIHNldChEdW1wUmVu
ZGVyVHJlZV9XRUJfUFJFRkVSRU5DRVMKIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcygke0R1
bXBSZW5kZXJUcmVlX1dFQl9QUkVGRVJFTkNFU30gUFJPUEVSVElFUyBHRU5FUkFURUQgVFJVRSkK
IAogYWRkX2N1c3RvbV9jb21tYW5kKAotICAgIE9VVFBVVCAke0R1bXBSZW5kZXJUcmVlX0RFUklW
RURfU09VUkNFU19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCisgICAgT1VUUFVUICR7
RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vVGVzdE9wdGlvbnNHZW5lcmF0ZWRX
ZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAke0R1bXBSZW5kZXJUcmVlX0RFUklWRURfU09VUkNF
U19ESVJ9L1Rlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5oCiAgICAgREVQRU5EUyAke0R1bXBSZW5k
ZXJUcmVlX1dFQl9QUkVGRVJFTkNFU19URU1QTEFURVN9ICR7RHVtcFJlbmRlclRyZWVfV0VCX1BS
RUZFUkVOQ0VTfSBXVEZfQ29weVByZWZlcmVuY2VzCi0gICAgQ09NTUFORCAke1JVQllfRVhFQ1VU
QUJMRX0gJHtXVEZfU0NSSVBUU19ESVJ9L0dlbmVyYXRlUHJlZmVyZW5jZXMucmIgLS1mcm9udGVu
ZCBXZWJLaXRMZWdhY3kgLS1iYXNlICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQ
cmVmZXJlbmNlcy55YW1sIC0tZGVidWcgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dl
YlByZWZlcmVuY2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRhbCAke1dURl9TQ1JJUFRTX0RJUn0v
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCAtLWludGVybmFsICR7
V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwg
LS1vdXRwdXREaXIgIiR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0iIC0tdGVt
cGxhdGUgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
VGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmguZXJiCisgICAgQ09NTUFORCAke1JVQllfRVhFQ1VU
QUJMRX0gJHtXVEZfU0NSSVBUU19ESVJ9L0dlbmVyYXRlUHJlZmVyZW5jZXMucmIgLS1mcm9udGVu
ZCBXZWJLaXRMZWdhY3kgLS1iYXNlICR7V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQ
cmVmZXJlbmNlcy55YW1sIC0tZGVidWcgJHtXVEZfU0NSSVBUU19ESVJ9L1ByZWZlcmVuY2VzL1dl
YlByZWZlcmVuY2VzRGVidWcueWFtbCAtLWV4cGVyaW1lbnRhbCAke1dURl9TQ1JJUFRTX0RJUn0v
UHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNFeHBlcmltZW50YWwueWFtbCAtLWludGVybmFsICR7
V1RGX1NDUklQVFNfRElSfS9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwg
LS1vdXRwdXREaXIgIiR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0iIC0tdGVt
cGxhdGUgJHtEdW1wUmVuZGVyVHJlZV9ESVJ9L1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMv
VGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIgLS10ZW1w
bGF0ZSAke0R1bXBSZW5kZXJUcmVlX0RJUn0vU2NyaXB0cy9QcmVmZXJlbmNlc1RlbXBsYXRlcy9U
ZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIKICAgICBWRVJCQVRJTSkKIAogbGlzdChBUFBF
TkQgRHVtcFJlbmRlclRyZWVfU09VUkNFUworICAgICR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9T
T1VSQ0VTX0RJUn0vVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNw
cAogICAgICR7RHVtcFJlbmRlclRyZWVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRLZXlzLmgKICkKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjg5NTEpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CSh3b3Jr
aW5nIGNvcHkpCkBAIC03LDYgKzcsNyBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2Fs
L2luY2x1ZGUvCiAkKFBST0pFQ1RfRElSKS8uLi9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29u
dGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCiAkKFBST0pFQ1RfRElSKS9CaW5k
aW5ncy9Db2RlR2VuZXJhdG9yRHVtcFJlbmRlclRyZWUucG0KICQoUFJPSkVDVF9ESVIpL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKKyQoUFJPSkVDVF9ESVIpL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0
ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcC5lcmIKICQo
UFJPSkVDVF9ESVIpL1NjcmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5l
cmF0ZWRLZXlzLmguZXJiCiAkKFBST0pFQ1RfRElSKS9TY3JpcHRzL2dlbmVyYXRlLWRlcml2ZWQt
c291cmNlcy5zaAogJChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0NvZGVHZW5lcmF0b3Iu
cG0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CShyZXZpc2lvbiAyNjg5NTEpCisrKyBUb29scy9EdW1wUmVuZGVy
VHJlZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAkod29ya2luZyBjb3B5KQpAQCAt
MSw0ICsxLDUgQEAKICMgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSB0aGUgZ2VuZXJhdGUteGNm
aWxlbGlzdHMgc2NyaXB0LgogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0R1
bXBSZW5kZXJUcmVlL0pTVUlTY3JpcHRDb250cm9sbGVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL0R1bXBSZW5kZXJUcmVlL0pTVUlTY3JpcHRDb250cm9sbGVyLmgK
KyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9EdW1wUmVuZGVyVHJlZS9UZXN0
T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnNHZW5lcmF0
ZWRLZXlzLmgKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMubWFrZQko
cmV2aXNpb24gMjY4OTUxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvRGVyaXZlZFNvdXJjZXMu
bWFrZQkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsNyBAQCBXRUJfUFJFRkVSRU5DRVMgPSBc
CiAjCiAKIFdFQl9QUkVGRVJFTkNFU19HRU5FUkFURURfRklMRVMgPSBcCisgICAgVGVzdE9wdGlv
bnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCBcCiAgICAgVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRLZXlzLmggXAogIwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDI2ODk1MSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsxMDksNyBA
QAogCQk1REI5QUM5RTBGNzIyQzM2MDA2ODQ2NDEgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjcwMC50
dGYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDM3NUYwOTc3MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyNzAwLnR0ZiAq
LzsgfTsKIAkJNURCOUFDOUYwRjcyMkMzNjAwNjg0NjQxIC8qIFdlYktpdFdlaWdodFdhdGNoZXI4
MDAudHRmIGluIENvcHkgRm9udCBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzNzVGMDk3ODBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjgwMC50
dGYgKi87IH07CiAJCTVEQjlBQ0EwMEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRXYXRj
aGVyOTAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzc1RjA5NzkwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXI5
MDAudHRmICovOyB9OworCQk3Qzk4OTNERjI1NDMzRjhFMDAzNTRFQkMgLyogVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTg5M0RFMjU0MzNDODcwMDM1NEVCQyAvKiBUZXN0
T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwICovOyB9OwogCQk3Q0ZG
OUJCRjI1MzNCQjI0MDAwODAwOUYgLyogVGVzdEZlYXR1cmVzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRkY5QkJFMjUzM0JCMjQwMDA4MDA5RiAv
KiBUZXN0RmVhdHVyZXMuY3BwICovOyB9OwogCQk3Q0ZGOUJDMjI1MzNCQzE2MDAwODAwOUYgLyog
VGVzdENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0NGRjlCQzEyNTMzQkMxNjAwMDgwMDlGIC8qIFRlc3RDb21tYW5kLmNwcCAqLzsgfTsK
IAkJODAwNDVBRUUxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25I
YW5kbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODAwNDVBRUMxNDc3MThFNzAwODI5MEE4IC8qIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5k
bGVyLm1tICovOyB9OwpAQCAtMzMzLDcgKzMzNCw4IEBACiAJCTdDNDQ2OTdGMjUzNzdBMDIwMDI0
MjkwQSAvKiBUZXN0T3B0aW9uc0dlbmVyYXRlZEtleXMuaC5lcmIgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRLZXlzLmguZXJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzQ0Njk4
MDI1Mzc3QTAyMDAyNDI5MEEgLyogY2hlY2steGNmaWxlbGlzdHMuc2ggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5zaDsgcGF0aCA9
ICJjaGVjay14Y2ZpbGVsaXN0cy5zaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
NDQ2OTgxMjUzNzdBMDIwMDI0MjkwQSAvKiBnZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2ggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlw
dC5zaDsgcGF0aCA9ICJnZW5lcmF0ZS1kZXJpdmVkLXNvdXJjZXMuc2giOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk3QzQ0Njk4NTI1Mzc3RTUyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNH
ZW5lcmF0ZWRLZXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3RPcHRpb25zR2VuZXJhdGVkS2V5cy5o
OyBwYXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdDNDQ2OTg1MjUzNzdFNTIwMDI0MjkwQSAvKiBUZXN0T3B0aW9uc0dlbmVyYXRl
ZEtleXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDOTg5M0RFMjU0MzNDODcwMDM1NEVCQyAvKiBUZXN0
T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1hcHBpbmcuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NCQkMzMjIxRERGQ0Y5QTAwNzg2QjlEIC8qIFRl
c3RPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3RPcHRpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRkY5QkJEMjUzM0JCMjQwMDA4MDA5
RiAvKiBUZXN0RmVhdHVyZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdEZlYXR1cmVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDRkY5QkJFMjUzM0JCMjQwMDA4MDA5RiAvKiBUZXN0
RmVhdHVyZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVzdEZlYXR1cmVzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc3Nyw2ICs3NzksNyBAQAogCQk3QzQ0Njk4MjI1Mzc3
QzM0MDAyNDI5MEEgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk3Qzk4OTNERTI1NDMzQzg3MDAzNTRFQkMgLyogVGVzdE9w
dGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdhY3lLZXlNYXBwaW5nLmNwcCAqLywKIAkJCQk3QzQ0Njk4
NTI1Mzc3RTUyMDAyNDI5MEEgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRLZXlzLmggKi8sCiAJCQkp
OwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwpAQCAtMTI2MCw2ICsxMjYzLDcgQEAKIAkJ
CQlBOEQ3OUNFQjBGQzI4QjJDMDA0QUM4RkUgLyogRHVtcFJlbmRlclRyZWVGaWxlRHJhZ2dpbmdT
b3VyY2UubSBpbiBTb3VyY2VzICovLAogCQkJCUE4QjkxQURBMENGM0IzMkYwMDhGOTFGRiAvKiBE
dW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0gaW4gU291cmNlcyAqLywKIAkJCQlBOEI5MUFEQzBD
RjNCMzJGMDA4RjkxRkYgLyogRHVtcFJlbmRlclRyZWVXaW5kb3cubW0gaW4gU291cmNlcyAqLywK
KwkJCQk3Qzk4OTNERjI1NDMzRjhFMDAzNTRFQkMgLyogVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJL
aXRMZWdhY3lLZXlNYXBwaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQTE4QjYyMEM5QjA4
QzIwMDExNDM2OSAvKiBFZGl0aW5nRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0Ex
OEI3MDBDOUIwOERCMDAxMTQzNjkgLyogRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDQTE4QjY0MEM5QjA4QzIwMDExNDM2OSAvKiBGcmFtZUxvYWREZWxlZ2F0
ZS5tbSBpbiBTb3VyY2VzICovLApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvU2NyaXB0cy9Q
cmVmZXJlbmNlc1RlbXBsYXRlcy9UZXN0T3B0aW9uc0dlbmVyYXRlZFdlYktpdExlZ2FjeUtleU1h
cHBpbmcuY3BwLmVyYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9TY3JpcHRz
L1ByZWZlcmVuY2VzVGVtcGxhdGVzL1Rlc3RPcHRpb25zR2VuZXJhdGVkV2ViS2l0TGVnYWN5S2V5
TWFwcGluZy5jcHAuZXJiCShub25leGlzdGVudCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Nj
cmlwdHMvUHJlZmVyZW5jZXNUZW1wbGF0ZXMvVGVzdE9wdGlvbnNHZW5lcmF0ZWRXZWJLaXRMZWdh
Y3lLZXlNYXBwaW5nLmNwcC5lcmIJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoK
KyAqIDwlPSBAd2FybmluZyAlPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJUZXN0T3B0aW9ucy5oIgorCituYW1lc3BhY2UgV1RSIHsKKworc3RkOjpzdHJpbmcg
VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShjb25zdCBzdGQ6OnN0cmlu
ZyYgd2ViUHJlZmVyZW5jZXNLZXkpCit7CisgICAgc3RhdGljIHN0ZDo6dW5vcmRlcmVkX21hcDxz
dGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+IG5vblN0YW5kYXJkS2V5cyA9IHsKKzwlLSBmb3IgQHBy
ZWYgaW4gQGV4cG9zZWRQcmVmZXJlbmNlcy5zZWxlY3QgeyB8cHwgcC5vcHRzWyJ3ZWJLaXRMZWdh
Y3lQcmVmZXJlbmNlS2V5Il0gfSBkbyAtJT4KKyAgICAgICAgeyAiPCU9IEBwcmVmLm5hbWUgJT4i
LCAiPCU9IEBwcmVmLnByZWZlcmVuY2VLZXkgJT4iIH0sIFwKKzwlLSBlbmQgLSU+CisgICAgfTsK
KworICAgIGF1dG8gaXQgPSBub25TdGFuZGFyZEtleXMuZmluZCh3ZWJQcmVmZXJlbmNlc0tleSk7
CisgICAgaWYgKGl0ICE9IG5vblN0YW5kYXJkS2V5cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0
LT5zZWNvbmQ7CisKKyAgICByZXR1cm4gIldlYktpdCIgKyB3ZWJQcmVmZXJlbmNlc0tleTsKK30K
KworfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQko
cmV2aXNpb24gMjY4OTUxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNiArMTMwLDExIEBAIGV4dGVybiAiQyIgewog
I2ltcG9ydCA8bWFjaC1vL2dldHNlY3QuaD4KIH0KIAorc3RhdGljIFJldGFpblB0cjxOU1N0cmlu
Zz4gdG9OUyhjb25zdCBzdGQ6OnN0cmluZyYgc3RyaW5nKQoreworICAgIHJldHVybiBhZG9wdE5T
KFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoVVRGOFN0cmluZzpzdHJpbmcuY19zdHIoKV0pOwor
fQorCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiBAaW50ZXJmYWNlIER1bXBSZW5kZXJUcmVl
QXBwbGljYXRpb24gOiBOU0FwcGxpY2F0aW9uCiBAZW5kCkBAIC04NDcsNiArODUyLDggQEAgc3Rh
dGljIHZvaWQgZW5hYmxlRXhwZXJpbWVudGFsRmVhdHVyZXMoVwogLy8gQ2FsbGVkIGJlZm9yZSBl
YWNoIHRlc3QuCiBzdGF0aWMgdm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFs
dWVzKFdlYlByZWZlcmVuY2VzICpwcmVmZXJlbmNlcykKIHsKKyAgICBbcHJlZmVyZW5jZXMgX3Jl
c2V0VG9EZWZhdWx0VmFsdWVzRm9yVGVzdGluZ107CisKICAgICBlbmFibGVFeHBlcmltZW50YWxG
ZWF0dXJlcyhwcmVmZXJlbmNlcyk7CiAKICAgICBbcHJlZmVyZW5jZXMgc2V0TmVlZHNTdG9yYWdl
QWNjZXNzRnJvbUZpbGVVUkxzUXVpcms6IE5PXTsKQEAgLTg3Myw3ICs4ODAsNiBAQCBzdGF0aWMg
dm9pZCByZXNldFdlYlByZWZlcmVuY2VzVG9Db25zaXN0CiAjaWYgIVBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgW3ByZWZlcmVuY2VzIHNldFNob3VsZFByaW50QmFja2dyb3VuZHM6WUVTXTsKICNl
bmRpZgotICAgIFtwcmVmZXJlbmNlcyBzZXRDYWNoZU1vZGVsOldlYkNhY2hlTW9kZWxEb2N1bWVu
dEJyb3dzZXJdOwogICAgIFtwcmVmZXJlbmNlcyBzZXRYU1NBdWRpdG9yRW5hYmxlZDpOT107CiAg
ICAgW3ByZWZlcmVuY2VzIHNldEV4cGVyaW1lbnRhbE5vdGlmaWNhdGlvbnNFbmFibGVkOk5PXTsK
ICAgICBbcHJlZmVyZW5jZXMgc2V0UGx1Z0luc0VuYWJsZWQ6WUVTXTsKQEAgLTk2OSw0MSArOTc1
LDIxIEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViUHJlZmVyZW5jZXNUb0NvbnNpc3QKICAgICBbV2Vi
UHJlZmVyZW5jZXMgX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBv
bGljeTpOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbl07
CiB9CiAKLXN0YXRpYyBib29sIGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKHN0ZDo6c3Ry
aW5nIGtleSwgYm9vbCBkZWZhdWx0VmFsdWUsIGNvbnN0IFdUUjo6VGVzdE9wdGlvbnMmIG9wdGlv
bnMpCi17Ci0gICAgYXV0byBpdCA9IG9wdGlvbnMuYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlcygp
LmZpbmQoa2V5KTsKLSAgICBpZiAoaXQgIT0gb3B0aW9ucy5ib29sV2ViUHJlZmVyZW5jZUZlYXR1
cmVzKCkuZW5kKCkpCi0gICAgICAgIHJldHVybiBpdC0+c2Vjb25kOwotICAgIHJldHVybiBkZWZh
dWx0VmFsdWU7Ci19Ci0KIHN0YXRpYyB2b2lkIHNldFdlYlByZWZlcmVuY2VzRm9yVGVzdE9wdGlv
bnMoV2ViUHJlZmVyZW5jZXMgKnByZWZlcmVuY2VzLCBjb25zdCBXVFI6OlRlc3RPcHRpb25zJiBv
cHRpb25zKQogewogICAgIHByZWZlcmVuY2VzLnByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBvcHRp
b25zLnVzZUVwaGVtZXJhbFNlc3Npb24oKTsKIAotICAgIHByZWZlcmVuY2VzLmF0dGFjaG1lbnRF
bGVtZW50RW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJBdHRhY2htZW50
RWxlbWVudEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuYWNjZWxl
cmF0ZWREcmF3aW5nRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJBY2Nl
bGVyYXRlZERyYXdpbmdFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2Vz
Lm1lbnVJdGVtRWxlbWVudEVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgi
TWVudUl0ZW1FbGVtZW50RW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNl
cy5rZXlnZW5FbGVtZW50RW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJL
ZXlnZW5FbGVtZW50RW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy5t
b2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVl
KCJNb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCIsIHRydWUsIG9wdGlvbnMpOwotICAgIHByZWZl
cmVuY2VzLmluc3BlY3RvckFkZGl0aW9uc0VuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1
cmVWYWx1ZSgiSW5zcGVjdG9yQWRkaXRpb25zRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAg
ICBwcmVmZXJlbmNlcy5hbGxvd0Nyb3NzT3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50
aWFscyA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJBbGxvd0Nyb3NzT3JpZ2luU3Vi
cmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVm
ZXJlbmNlcy5jb2xvckZpbHRlckVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1
ZSgiQ29sb3JGaWx0ZXJFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2Vz
LnNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXNFbmFibGVkID0gYm9vbFdlYlByZWZlcmVu
Y2VGZWF0dXJlVmFsdWUoIlNlbGVjdGlvbkFjcm9zc1NoYWRvd0JvdW5kYXJpZXNFbmFibGVkIiwg
dHJ1ZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMud2ViR1BVRW5hYmxlZCA9IGJvb2xXZWJQ
cmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJXZWJHUFVFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwot
ICAgIHByZWZlcmVuY2VzLkNTU0xvZ2ljYWxFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0
dXJlVmFsdWUoIkNTU0xvZ2ljYWxFbmFibGVkIiwgZmFsc2UsIG9wdGlvbnMpOwotICAgIHByZWZl
cmVuY2VzLmxpbmVIZWlnaHRVbml0c0VuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVW
YWx1ZSgiTGluZUhlaWdodFVuaXRzRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVm
ZXJlbmNlcy5hZENsaWNrQXR0cmlidXRpb25FbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0
dXJlVmFsdWUoIkFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0g
ICAgcHJlZmVyZW5jZXMucmVzaXplT2JzZXJ2ZXJFbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VG
ZWF0dXJlVmFsdWUoIlJlc2l6ZU9ic2VydmVyRW5hYmxlZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAg
ICBwcmVmZXJlbmNlcy5DU1NPTVZpZXdTbW9vdGhTY3JvbGxpbmdFbmFibGVkID0gYm9vbFdlYlBy
ZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkNTU09NVmlld1Ntb290aFNjcm9sbGluZ0VuYWJsZWQiLCBm
YWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuY29yZU1hdGhNTEVuYWJsZWQgPSBib29s
V2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQ29yZU1hdGhNTEVuYWJsZWQiLCBmYWxzZSwgb3B0
aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMucmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWQgPSBib29s
V2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiUmVxdWVzdElkbGVDYWxsYmFja0VuYWJsZWQiLCBm
YWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuYXN5bmNDbGlwYm9hcmRBUElFbmFibGVk
ID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkFzeW5jQ2xpcGJvYXJkQVBJRW5hYmxl
ZCIsIGZhbHNlLCBvcHRpb25zKTsKLSAgICBwcmVmZXJlbmNlcy51c2VzUGFnZUNhY2hlID0gYm9v
bFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIlVzZXNCYWNrRm9yd2FyZENhY2hlIiwgZmFsc2Us
IG9wdGlvbnMpOwotICAgIHByZWZlcmVuY2VzLmxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdy
YXRpb25FbmFibGVkID0gYm9vbFdlYlByZWZlcmVuY2VGZWF0dXJlVmFsdWUoIkxheW91dEZvcm1h
dHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFibGVkIiwgdHJ1ZSwgb3B0aW9ucyk7Ci0gICAgcHJl
ZmVyZW5jZXMuYXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhlaWdodEVuYWJsZWQgPSBib29s
V2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1ZSgiQXNwZWN0UmF0aW9PZkltZ0Zyb21XaWR0aEFuZEhl
aWdodEVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5jZXMuYWxsb3dUb3BO
YXZpZ2F0aW9uVG9EYXRhVVJMcyA9IGJvb2xXZWJQcmVmZXJlbmNlRmVhdHVyZVZhbHVlKCJBbGxv
d1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzIiwgdHJ1ZSwgb3B0aW9ucyk7Ci0gICAgcHJlZmVyZW5j
ZXMuY29udGFjdFBpY2tlckFQSUVuYWJsZWQgPSBib29sV2ViUHJlZmVyZW5jZUZlYXR1cmVWYWx1
ZSgiQ29udGFjdFBpY2tlckFQSUVuYWJsZWQiLCBmYWxzZSwgb3B0aW9ucyk7CisgICAgZm9yIChj
b25zdCBhdXRvJiBba2V5LCB2YWx1ZV0gOiBvcHRpb25zLmJvb2xXZWJQcmVmZXJlbmNlRmVhdHVy
ZXMoKSkKKyAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXRCb29sUHJlZmVyZW5jZUZvclRlc3RpbmdX
aXRoVmFsdWU6dmFsdWUgZm9yS2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdh
Y3lQcmVmZXJlbmNlS2V5KGtleSkpLmdldCgpXTsKKworICAgIGZvciAoY29uc3QgYXV0byYgW2tl
eSwgdmFsdWVdIDogb3B0aW9ucy5kb3VibGVXZWJQcmVmZXJlbmNlRmVhdHVyZXMoKSkKKyAgICAg
ICAgW3ByZWZlcmVuY2VzIF9zZXREb3VibGVQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2
YWx1ZSBmb3JLZXk6dG9OUyhXVFI6OlRlc3RPcHRpb25zOjp0b1dlYktpdExlZ2FjeVByZWZlcmVu
Y2VLZXkoa2V5KSkuZ2V0KCldOworCisgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0g
OiBvcHRpb25zLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJlcygpKQorICAgICAgICBbcHJlZmVy
ZW5jZXMgX3NldFVJbnQzMlByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnZhbHVlIGZvcktl
eTp0b05TKFdUUjo6VGVzdE9wdGlvbnM6OnRvV2ViS2l0TGVnYWN5UHJlZmVyZW5jZUtleShrZXkp
KS5nZXQoKV07CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMu
c3RyaW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCisgICAgICAgIFtwcmVmZXJlbmNlcyBfc2V0
U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dG9OUyh2YWx1ZSkuZ2V0KCkgZm9y
S2V5OnRvTlMoV1RSOjpUZXN0T3B0aW9uczo6dG9XZWJLaXRMZWdhY3lQcmVmZXJlbmNlS2V5KGtl
eSkpLmdldCgpXTsKIH0KIAogLy8gQ2FsbGVkIG9uY2Ugb24gRHVtcFJlbmRlclRyZWUgc3RhcnR1
cC4KQEAgLTEwMzAsNiArMTAxNiw3IEBAIHN0YXRpYyB2b2lkIHNldERlZmF1bHRzVG9Db25zaXN0
ZW50VmFsdWUKICAgICAgICAgV2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5OiBA
WUVTLAogICAgICAgICBXZWJLaXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrUHJlZmVyZW5jZUtl
eTogQFlFUywKICAgICAgICAgV2ViS2l0SW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJ
bmxpbmVBdHRyaWJ1dGVLZXk6IEBOTywKKyAgICAgICAgV2ViS2l0Q2FjaGVNb2RlbFByZWZlcmVu
Y2VLZXk6IEAoV2ViQ2FjaGVNb2RlbERvY3VtZW50QnJvd3NlciksCiAgICAgICAgIEAiVXNlV2Vi
S2l0V2ViSW5zcGVjdG9yIjogQFlFUywKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAg
ICAgQCJOU1ByZWZlcnJlZFNwZWxsU2VydmVyTGFuZ3VhZ2UiOiBAImVuX1VTIiwKQEAgLTEyMTgs
MTIgKzEyMDUsMTAgQEAgc3RhdGljIHZvaWQgcHJlcGFyZUNvbnNpc3RlbnRUZXN0aW5nRW52aQog
CiAgICAgLy8gK1tXZWJQcmVmZXJlbmNlcyBfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGlu
Z1Nlc3Npb25dIGNhbGxzICtbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNoZV0sIHdoaWNoIGluaXRp
YWxpemVzIGEgZGVmYXVsdCBjYWNoZSBvbiBkaXNrLgogICAgIC8vIE1ha2luZyB0aGUgc2hhcmVk
IGNhY2hlIG1lbW9yeS1vbmx5IGF2b2lkcyB0b3VjaGluZyB0aGUgZmlsZSBzeXN0ZW0uCi0gICAg
UmV0YWluUHRyPE5TVVJMQ2FjaGU+IHNoYXJlZENhY2hlID0KLSAgICAgICAgYWRvcHROUyhbW05T
VVJMQ2FjaGUgYWxsb2NdIGluaXRXaXRoTWVtb3J5Q2FwYWNpdHk6MTAyNCAqIDEwMjQKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlza0NhcGFjaXR5OjAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2tQYXRoOm5pbF0pOworICAgIFJl
dGFpblB0cjxOU1VSTENhY2hlPiBzaGFyZWRDYWNoZSA9IGFkb3B0TlMoW1tOU1VSTENhY2hlIGFs
bG9jXSBpbml0V2l0aE1lbW9yeUNhcGFjaXR5OjEwMjQgKiAxMDI0IGRpc2tDYXBhY2l0eTowIGRp
c2tQYXRoOm5pbF0pOwogICAgIFtOU1VSTENhY2hlIHNldFNoYXJlZFVSTENhY2hlOnNoYXJlZENh
Y2hlLmdldCgpXTsKIAorICAgIFtbV2ViUHJlZmVyZW5jZXMgc3RhbmRhcmRQcmVmZXJlbmNlc10g
c2V0Q2FjaGVNb2RlbDpXZWJDYWNoZU1vZGVsRG9jdW1lbnRCcm93c2VyXTsKICAgICBbV2ViUHJl
ZmVyZW5jZXMgX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uXTsKIAogI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMTg3OCw2ICsxODYzLDcgQEAgc3RhdGljIHZvaWQg
cmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdAogCiAgICAgcmVzZXRXZWJQcmVmZXJlbmNlc1Rv
Q29uc2lzdGVudFZhbHVlcyh3ZWJWaWV3LnByZWZlcmVuY2VzKTsKICAgICBzZXRXZWJQcmVmZXJl
bmNlc0ZvclRlc3RPcHRpb25zKHdlYlZpZXcucHJlZmVyZW5jZXMsIG9wdGlvbnMpOworCiAjaWYg
UExBVEZPUk0oTUFDKQogICAgIFt3ZWJWaWV3IHNldFdhbnRzTGF5ZXI6b3B0aW9ucy5sYXllckJh
Y2tlZFdlYlZpZXcoKV07CiAjZW5kaWYKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9U
ZXN0UnVubmVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9U
ZXN0UnVubmVyTWFjLm1tCShyZXZpc2lvbiAyNjg5NTEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjA5LDcgKzYwOSw3IEBA
IHZvaWQgVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3QKICAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHZhbHVlQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFs
bG9jYXRvckRlZmF1bHQsIHZhbHVlKSk7CiAgICAgTlNTdHJpbmcgKnZhbHVlTlMgPSAoX19icmlk
Z2UgTlNTdHJpbmcgKil2YWx1ZUNGLmdldCgpOwogCi0gICAgW1tbbWFpbkZyYW1lIHdlYlZpZXdd
IHByZWZlcmVuY2VzXSBfc2V0UHJlZmVyZW5jZUZvclRlc3RXaXRoVmFsdWU6dmFsdWVOUyBmb3JL
ZXk6a2V5TlNdOworICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gX3NldFN0
cmluZ1ByZWZlcmVuY2VGb3JUZXN0aW5nV2l0aFZhbHVlOnZhbHVlTlMgZm9yS2V5OmtleU5TXTsK
IH0KIAogdm9pZCBUZXN0UnVubmVyOjpyZW1vdmVBbGxWaXNpdGVkTGlua3MoKQpJbmRleDogVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI2ODk1MSkK
KysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05MjEsMTcgKzkyMSwxNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpyZXNldFByZWZl
cmVuY2VzVG9DCiAgICAgcGxhdGZvcm1SZXNldFByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFsdWVz
KCk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuYm9vbFdl
YlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAgICAgICBXS1ByZWZlcmVuY2VzU2V0Qm9vbFZhbHVl
Rm9yS2V5KHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKKyAgICAgICAgV0tQ
cmVmZXJlbmNlc1NldEJvb2xWYWx1ZUZvcktleUZvclRlc3RpbmcocHJlZmVyZW5jZXMsIHZhbHVl
LCB0b1dLKGtleSkuZ2V0KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBba2V5LCB2YWx1ZV0g
OiBvcHRpb25zLmRvdWJsZVdlYlByZWZlcmVuY2VGZWF0dXJlcygpKQotICAgICAgICBXS1ByZWZl
cmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXkocHJlZmVyZW5jZXMsIHZhbHVlLCB0b1dLKGtleSku
Z2V0KCkpOworICAgICAgICBXS1ByZWZlcmVuY2VzU2V0RG91YmxlVmFsdWVGb3JLZXlGb3JUZXN0
aW5nKHByZWZlcmVuY2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKIAogICAgIGZvciAoY29u
c3QgYXV0byYgW2tleSwgdmFsdWVdIDogb3B0aW9ucy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVy
ZXMoKSkKLSAgICAgICAgV0tQcmVmZXJlbmNlc1NldFVJbnQzMlZhbHVlRm9yS2V5KHByZWZlcmVu
Y2VzLCB2YWx1ZSwgdG9XSyhrZXkpLmdldCgpKTsKKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldFVJ
bnQzMlZhbHVlRm9yS2V5Rm9yVGVzdGluZyhwcmVmZXJlbmNlcywgdmFsdWUsIHRvV0soa2V5KS5n
ZXQoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIFtrZXksIHZhbHVlXSA6IG9wdGlvbnMuc3Ry
aW5nV2ViUHJlZmVyZW5jZUZlYXR1cmVzKCkpCi0gICAgICAgIFdLUHJlZmVyZW5jZXNTZXRTdHJp
bmdWYWx1ZUZvcktleShwcmVmZXJlbmNlcywgdG9XSyh2YWx1ZSkuZ2V0KCksIHRvV0soa2V5KS5n
ZXQoKSk7Ci0KKyAgICAgICAgV0tQcmVmZXJlbmNlc1NldFN0cmluZ1ZhbHVlRm9yS2V5Rm9yVGVz
dGluZyhwcmVmZXJlbmNlcywgdG9XSyh2YWx1ZSkuZ2V0KCksIHRvV0soa2V5KS5nZXQoKSk7CiB9
CiAKIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29u
c3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlc2V0U3RhZ2UgcmVzZXRTdGFnZSkK
</data>
<flag name="commit-queue"
          id="428693"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>