<?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>94290</bug_id>
          
          <creation_ts>2012-08-16 21:15:13 -0700</creation_ts>
          <short_desc>Pre-process CSSGrammar.y before running through bison.</short_desc>
          <delta_ts>2012-10-17 01:31:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>98946</dependson>
          <blocked>86146</blocked>
    
    <blocked>94099</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Shane Stephens">shanestephens</reporter>
          <assigned_to name="Pablo Flouret">pf</assigned_to>
          <cc>abarth</cc>
    
    <cc>abecsi</cc>
    
    <cc>ap</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gergely</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hausmann</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ossy</cc>
    
    <cc>peter+ews</cc>
    
    <cc>pf</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>tony</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zarvai</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>697850</commentid>
    <comment_count>0</comment_count>
    <who name="Shane Stephens">shanestephens</who>
    <bug_when>2012-08-16 21:15:13 -0700</bug_when>
    <thetext>[WIP] Pre-process CSSGrammar.y before running through bison.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697851</commentid>
    <comment_count>1</comment_count>
      <attachid>158988</attachid>
    <who name="Shane Stephens">shanestephens</who>
    <bug_when>2012-08-16 21:19:51 -0700</bug_when>
    <thetext>Created attachment 158988
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697860</commentid>
    <comment_count>2</comment_count>
      <attachid>158988</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-08-16 21:26:22 -0700</bug_when>
    <thetext>Comment on attachment 158988
Patch

Attachment 158988 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13506976</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697861</commentid>
    <comment_count>3</comment_count>
      <attachid>158988</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-08-16 21:28:48 -0700</bug_when>
    <thetext>Comment on attachment 158988
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        * DerivedSources.make:

Chromium doens&apos;t use DerivedSources.make.  You&apos;ll have to update WebCore.gyp/Webcore.gyp too.

&gt; Source/WebCore/ChangeLog:11
&gt; +        * css/makegrammar.pl:

Did you mean to include makegrammar.pl here? I don&apos;t see any changes to this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698436</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-17 09:56:56 -0700</bug_when>
    <thetext>Neither the patch nor the bug explain the rationale. Please do provide it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699785</commentid>
    <comment_count>5</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-08-20 12:22:29 -0700</bug_when>
    <thetext>In https://bugs.webkit.org/show_bug.cgi?id=94099#c4 , Antti asked that all code related to CSS hierarchies be wrapped with #ifs.

Antti, I assume you wanted this for the changes to CSSGrammar.y too, right? Is this what you had in mind?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734853</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-10-04 11:18:24 -0700</bug_when>
    <thetext>Right, I think it would be useful to have feature defines in grammar too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737985</commentid>
    <comment_count>7</comment_count>
      <attachid>167800</attachid>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-10-09 11:33:49 -0700</bug_when>
    <thetext>Created attachment 167800
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738000</commentid>
    <comment_count>8</comment_count>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-10-09 11:39:17 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created an attachment (id=167800) [details]
&gt; Patch

I could only test this on the mac and chromium ports, so if this works correctly on the first try i&apos;ll probably be very surprised :-)

If there&apos;s someone from a port not on the cc list that i should cc, let me know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738010</commentid>
    <comment_count>9</comment_count>
      <attachid>167800</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-09 11:45:03 -0700</bug_when>
    <thetext>Comment on attachment 167800
Patch

Attachment 167800 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14245172</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738018</commentid>
    <comment_count>10</comment_count>
      <attachid>167800</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-09 11:53:29 -0700</bug_when>
    <thetext>Comment on attachment 167800
Patch

Attachment 167800 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14229665</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738054</commentid>
    <comment_count>11</comment_count>
      <attachid>167800</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-09 12:19:26 -0700</bug_when>
    <thetext>Comment on attachment 167800
Patch

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

Overall, looks great once the ews bots all go green.  I think it would also be OK to use makegrammar.pl in the Chromium build, but this is also fine.

&gt; Source/WebCore/WebCore.gyp/WebCore.gyp:1082
&gt; +            &apos;../css/CSSGrammar.y.in&apos;,

Shouldn&apos;t CSSGrammar.y.includes be an input too?

&gt; Source/WebCore/WebCore.gyp/scripts/action_preprocessgrammar.py:50
&gt; +inputFile = sys.argv[1]
&gt; +outputDir = sys.argv[2]

Nit: python style variable naming is input_file.

&gt; Source/WebCore/WebCore.gyp/scripts/action_preprocessgrammar.py:54
&gt; +    # featureFlags = [&quot;-D&quot;, &quot;ENABLE_FEATURE1=1&quot;, &quot;-D&quot;, &quot;ENABLE_FEATURE2=0&quot;, ...]

Nit: Remove testing comment?

&gt; Source/WebCore/WebCore.gyp/scripts/action_preprocessgrammar.py:57
&gt; +gccExe = &quot;gcc&quot;

gcc_exe and other variables below.

&gt; Source/WebCore/WebCore.gyp/scripts/action_preprocessgrammar.py:61
&gt; +(inputRoot, inputExt) = os.path.splitext(inputFile)

Nit: () on the left side aren&apos;t necessary.

&gt; Source/WebCore/WebCore.gyp/scripts/action_preprocessgrammar.py:64
&gt; +output = subprocess.Popen([&apos;ls&apos;, &apos;-l&apos;], stdout=subprocess.PIPE).communicate()[0]

Remove testing command?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738070</commentid>
    <comment_count>12</comment_count>
      <attachid>167817</attachid>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-10-09 12:27:44 -0700</bug_when>
    <thetext>Created attachment 167817
Patch

Trying to fix qt/gtk build errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738074</commentid>
    <comment_count>13</comment_count>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-10-09 12:30:11 -0700</bug_when>
    <thetext>If i understand my own patch correctly, the targets don&apos;t really depend on CSSGrammar.y.includes, so changing that file won&apos;t trigger a re-generation of CSSGrammar.y, which i imagine could be annoying.

If anyone knows how to do this for each build system i can modify the patch, or do it on a subsequent one.

(PS: i hate build systems)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738083</commentid>
    <comment_count>14</comment_count>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-10-09 12:39:23 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 167800 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=167800&amp;action=review
&gt; 
&gt; Overall, looks great once the ews bots all go green.  I think it would also be OK to use makegrammar.pl in the Chromium build, but this is also fine.

I thought about using makegrammar.pl here as well, but it would need some shoehorning. The python way goes a bit better with the gyp ways, i think.

&gt; &gt; Source/WebCore/WebCore.gyp/WebCore.gyp:1082
&gt; &gt; +            &apos;../css/CSSGrammar.y.in&apos;,
&gt; 
&gt; Shouldn&apos;t CSSGrammar.y.includes be an input too?

Yeah, i guess, it was easier like this in terms of parsing the arguments in the script, but i could make that more robust. Should i make the script more generic to handle multiple .y.in files, or should that bridge be crossed if it&apos;s ever needed? (I imagine XPathGrammar.y doesn&apos;t see much action?)

&gt; &gt; Source/WebCore/WebCore.gyp/scripts/action_preprocessgrammar.py:50
&gt; &gt; +inputFile = sys.argv[1]
&gt; &gt; +outputDir = sys.argv[2]
&gt; 
&gt; Nit: python style variable naming is input_file.

All the other action_* and rule_* scripts use this style, should i change it anyway?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738132</commentid>
    <comment_count>15</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-09 13:28:41 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #11)
&gt; &gt; Shouldn&apos;t CSSGrammar.y.includes be an input too?
&gt; 
&gt; Yeah, i guess, it was easier like this in terms of parsing the arguments in the script, but i could make that more robust. Should i make the script more generic to handle multiple .y.in files, or should that bridge be crossed if it&apos;s ever needed? (I imagine XPathGrammar.y doesn&apos;t see much action?)

I wouldn&apos;t bother making the script handle multiple .y.in files. Like you said, this stuff doesn&apos;t change that often.

&gt; &gt; &gt; Source/WebCore/WebCore.gyp/scripts/action_preprocessgrammar.py:50
&gt; &gt; &gt; +inputFile = sys.argv[1]
&gt; &gt; &gt; +outputDir = sys.argv[2]
&gt; &gt; 
&gt; &gt; Nit: python style variable naming is input_file.
&gt; 
&gt; All the other action_* and rule_* scripts use this style, should i change it anyway?

The other scripts were written before we had much python code in WebKit and had converged on PEP8 style.  We should try to use PEP8 style in new files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738251</commentid>
    <comment_count>16</comment_count>
      <attachid>167860</attachid>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-10-09 15:20:56 -0700</bug_when>
    <thetext>Created attachment 167860
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738308</commentid>
    <comment_count>17</comment_count>
      <attachid>167860</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-09 16:25:03 -0700</bug_when>
    <thetext>Comment on attachment 167860
Patch

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

LGTM assuming all the ews bots go green.  The feedback on the python script are minor, so feel free to ignore.

&gt; Source/WebCore/WebCore.gyp/scripts/action_preprocessgrammar.py:62
&gt; +if len(arguments) == 0:
&gt; +    exit_with_usage(1)

Nit: &quot;if not len(arguments):&quot; would be more like WebKit style.

&gt; Source/WebCore/WebCore.gyp/scripts/action_preprocessgrammar.py:76
&gt; +gcc_exe = &quot;gcc&quot;
&gt; +if &quot;CC&quot; in os.environ:
&gt; +    gcc_exe = os.environ[&quot;CC&quot;]

Nit: This could just be gcc_exe = os.environ.get(&quot;CC&quot;, &quot;gcc&quot;).

&gt; Source/WebCore/WebCore.gyp/scripts/action_preprocessgrammar.py:86
&gt; +output_file = open(os.path.join(output_dir, os.path.basename(input_root)), &quot;w&quot;)

Nit: Using &apos;with&apos; for files would automatically close it for you.  It&apos;s a bit more idiomatic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738322</commentid>
    <comment_count>18</comment_count>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-10-09 16:41:11 -0700</bug_when>
    <thetext>Looks like they&apos;re all green. If you want we can wait overnight to see if anyone from the other ports has any comments. Otherwise cq+ away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739168</commentid>
    <comment_count>19</comment_count>
      <attachid>167860</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-10 11:34:19 -0700</bug_when>
    <thetext>Comment on attachment 167860
Patch

Clearing flags on attachment: 167860

Committed r130937: &lt;http://trac.webkit.org/changeset/130937&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739169</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-10 11:34:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739192</commentid>
    <comment_count>21</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-10 12:01:57 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 167860 [details])
&gt; Clearing flags on attachment: 167860
&gt; 
&gt; Committed r130937: &lt;http://trac.webkit.org/changeset/130937&gt;

It broke the Qt Win build:
	perl C:/WebKitBuildSlave/szeged-windows-1/qt-windows-32bit-release/build/Source/WebCore/css/makegrammar.pl --grammar C:\WebKitBuildSlave\szeged-windows-1\qt-windows-32bit-release\build\Source\WebCore\css\CSSGrammar.y.in --outputDir generated --extraDefines &quot;UNICODE WIN32 ENABLE_3D_RENDERING=1 ENABLE_BLOB=1 ENABLE_CHANNEL_MESSAGING=1 ENABLE_CSS_BOX_DECORATION_BREAK=1 ENABLE_CSS_COMPOSITING=1 ENABLE_CSS_EXCLUSIONS=1 ENABLE_CSS_FILTERS=1 ENABLE_CSS_IMAGE_SET=1 ENABLE_CSS_REGIONS=1 ENABLE_CSS_STICKY_POSITION=1 ENABLE_DATALIST_ELEMENT=1 ENABLE_DETAILS_ELEMENT=1 ENABLE_FAST_MOBILE_SCROLLING=1 ENABLE_FILTERS=1 ENABLE_FTPDIR=1 ENABLE_FULLSCREEN_API=1 ENABLE_GESTURE_EVENTS=1 ENABLE_ICONDATABASE=1 ENABLE_IFRAME_SEAMLESS=1 ENABLE_INPUT_TYPE_COLOR=1 ENABLE_INSPECTOR=1 ENABLE_INSPECTOR_SERVER=1 ENABLE_JAVASCRIPT_DEBUGGER=1 ENABLE_LEGACY_NOTIFICATIONS=1 ENABLE_LEGACY_VIEWPORT_ADAPTION=1 ENABLE_LEGACY_VENDOR_PREFIXES=1 ENABLE_METER_ELEMENT=1 ENABLE_NOTIFICATIONS=1 ENABLE_PAGE_VISIBILITY_API=1 ENABLE_PROGRESS_ELEMENT=1 ENABLE_REQUEST_ANIMATION_FRAME=1 ENABLE_SHARED_WORKERS=1 ENABLE_SMOOTH_SCROLLING=1 ENABLE_SQL_DATABASE=1 ENABLE_SVG=1 ENABLE_SVG_FONTS=1 ENABLE_TOUCH_ADJUSTMENT=1 ENABLE_TOUCH_EVENTS=1 ENABLE_WEB_SOCKETS=1 ENABLE_WEB_TIMING=1 ENABLE_WORKERS=1 WTF_USE_TILED_BACKING_STORE=1 HAVE_QTQUICK=1 HAVE_QTPRINTSUPPORT=1 HAVE_QSTYLE=1 HAVE_QTTESTLIB=1 ENABLE_NETSCAPE_PLUGIN_API=1 PLUGIN_ARCHITECTURE_UNSUPPORTED=1 WTF_USE_3D_GRAPHICS=1 ENABLE_WEBGL=1 ENABLE_CSS_SHADERS=1 ENABLE_ORIENTATION_EVENTS=1 ENABLE_DEVICE_ORIENTATION=1 ENABLE_TOUCH_SLIDER=1 ENABLE_ACCELERATED_2D_CANVAS=0 ENABLE_ANIMATION_API=0 ENABLE_BATTERY_STATUS=0 ENABLE_CSP_NEXT=0 ENABLE_CSS_GRID_LAYOUT=0 ENABLE_CSS_HIERARCHIES=0 ENABLE_CSS_IMAGE_ORIENTATION=0 ENABLE_CSS_IMAGE_RESOLUTION=0 ENABLE_CSS_VARIABLES=0 ENABLE_CSS3_TEXT_DECORATION=0 ENABLE_DASHBOARD_SUPPORT=0 ENABLE_DATAGRID=0 ENABLE_DATA_TRANSFER_ITEMS=0 ENABLE_DIRECTORY_UPLOAD=0 ENABLE_DOWNLOAD_ATTRIBUTE=0 ENABLE_FILE_SYSTEM=0 ENABLE_GAMEPAD=0 ENABLE_GEOLOCATION=0 ENABLE_HIGH_DPI_CANVAS=0 ENABLE_INDEXED_DATABASE=0 ENABLE_INPUT_SPEECH=0 ENABLE_INPUT_TYPE_DATE=0 ENABLE_INPUT_TYPE_DATETIME=0 ENABLE_INPUT_TYPE_DATETIMELOCAL=0 ENABLE_INPUT_TYPE_MONTH=0 ENABLE_INPUT_TYPE_TIME=0 ENABLE_INPUT_TYPE_WEEK=0 ENABLE_LEGACY_CSS_VENDOR_PREFIXES=0 ENABLE_LINK_PREFETCH=0 ENABLE_LINK_PRERENDER=0 ENABLE_MATHML=0 ENABLE_MEDIA_SOURCE=0 ENABLE_MEDIA_STATISTICS=0 ENABLE_MEDIA_STREAM=0 ENABLE_MHTML=0 ENABLE_MICRODATA=0 ENABLE_MUTATION_OBSERVERS=0 ENABLE_NAVIGATOR_CONTENT_UTILS=0 ENABLE_NETWORK_INFO=0 ENABLE_QUOTA=0 ENABLE_SCRIPTED_SPEECH=0 ENABLE_SHADOW_DOM=0 ENABLE_STYLE_SCOPED=0 ENABLE_SVG_DOM_OBJC_BINDINGS=0 ENABLE_TEXT_AUTOSIZING=0 ENABLE_TEXT_NOTIFICATIONS_ONLY=0 ENABLE_TOUCH_ICON_LOADING=0 ENABLE_UNDO_MANAGER=0 ENABLE_VIBRATION=0 ENABLE_VIDEO=0 ENABLE_VIDEO_TRACK=0 ENABLE_WEB_AUDIO=0 ENABLE_XSLT=0&quot; --symbolsPrefix cssyy
The system cannot find the path specified.
generated\\CSSGrammar.y:86.1: syntax error, unexpected end of file
Died at C:/WebKitBuildSlave/szeged-windows-1/qt-windows-32bit-release/build/Source/WebCore/css/makegrammar.pl line 88.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739218</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-10 12:35:04 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 98946</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739224</commentid>
    <comment_count>23</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-10 12:40:52 -0700</bug_when>
    <thetext>Actually, I think this is just using the wrong slash for paths.  Let me try to fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739227</commentid>
    <comment_count>24</comment_count>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-10-10 12:42:41 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; Actually, I think this is just using the wrong slash for paths.  Let me try to fix.

If that&apos;s not it then this might do it:

diff --git a/Source/WebCore/css/makegrammar.pl b/Source/WebCore/css/makegrammar.pl
index 32f757e..4b587ea 100644
--- a/Source/WebCore/css/makegrammar.pl
+++ b/Source/WebCore/css/makegrammar.pl
@@ -25,6 +25,7 @@ use Config;
 use File::Basename;
 use File::Spec;
 use Getopt::Long;
+use IO::File;
 
 require Config;
 
@@ -58,21 +59,20 @@ if ($suffix eq &quot;.y.in&quot;) {
     my $grammarFileOutPath = File::Spec-&gt;join($outputDir, &quot;$filename.y&quot;);
     my $featureFlags = &quot;-D &quot; . join(&quot; -D &quot;, split(&quot; &quot;, $extraDefines));
 
-    system($gcc . &quot; -E -P -x c $grammarFilePath $featureFlags &gt; $grammarFileOutPath.processed&quot; );
+    my $processed = new IO::File;
+    open $processed, &quot;$gcc -E -P -x c $grammarFilePath $featureFlags|&quot;;
 
     open GRAMMAR, &quot;&gt;$grammarFileOutPath&quot; or die;
     open INCLUDES, &quot;&lt;$grammarFileIncludesPath&quot; or die;
-    open PROCESSED, &quot;&lt;$grammarFileOutPath.processed&quot; or die;
 
     while (&lt;INCLUDES&gt;) {
         print GRAMMAR;
     }
-    while (&lt;PROCESSED&gt;) {
+    while (&lt;$processed&gt;) {
         print GRAMMAR;
     }
 
     close GRAMMAR;
-    unlink(&quot;$grammarFileOutPath.processed&quot;);
     $grammarFilePath = $grammarFileOutPath;
 }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739295</commentid>
    <comment_count>25</comment_count>
    <who name="Zoltan Arvai">zarvai</who>
    <bug_when>2012-10-10 14:18:06 -0700</bug_when>
    <thetext>If it helps here is the content of CSSGrammar.y that read by makegrammar.pl line 88:
https://gist.github.com/3868405</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739303</commentid>
    <comment_count>26</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-10 14:32:51 -0700</bug_when>
    <thetext>Reverted r130937 for reason:

Breaks Qt build

Committed r130962: &lt;http://trac.webkit.org/changeset/130962&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739307</commentid>
    <comment_count>27</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-10 14:36:38 -0700</bug_when>
    <thetext>This is what we learned:

Qt uses --preprocessor \&quot;$${QMAKE_MOC} -E\&quot; in other places that we use the proprocessor.  My last attempt to fix the build (http://trac.webkit.org/changeset/130957) used that, but the output from moc -E is different from gcc (namely, it doesn&apos;t maintain leading spaces).

I&apos;m not sure what the right fix for this is.  Is there a way we can get moc to behave more like gcc?  Alternately, maybe we can use cl.exe on Qt Win?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739424</commentid>
    <comment_count>28</comment_count>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-10-10 17:11:57 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; This is what we learned:
&gt; 
&gt; Qt uses --preprocessor \&quot;$${QMAKE_MOC} -E\&quot; in other places that we use the proprocessor.  My last attempt to fix the build (http://trac.webkit.org/changeset/130957) used that, but the output from moc -E is different from gcc (namely, it doesn&apos;t maintain leading spaces).
&gt; 
&gt; I&apos;m not sure what the right fix for this is.  Is there a way we can get moc to behave more like gcc?  Alternately, maybe we can use cl.exe on Qt Win?

Why did this not fail on chromium win? Is it using cygwin or requiring gcc around?

Alternatively, i could modify the script to do very dumb preprocessing of just #if ENABLE_* directives, since doing anything fancier than that in the .y file would probably break anyway...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739435</commentid>
    <comment_count>29</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-10 17:35:23 -0700</bug_when>
    <thetext>This caused trouble for the ChromiumOS build as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739475</commentid>
    <comment_count>30</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-10 18:30:17 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #27)
&gt; &gt; This is what we learned:
&gt; &gt; 
&gt; &gt; Qt uses --preprocessor \&quot;$${QMAKE_MOC} -E\&quot; in other places that we use the proprocessor.  My last attempt to fix the build (http://trac.webkit.org/changeset/130957) used that, but the output from moc -E is different from gcc (namely, it doesn&apos;t maintain leading spaces).
&gt; &gt; 
&gt; &gt; I&apos;m not sure what the right fix for this is.  Is there a way we can get moc to behave more like gcc?  Alternately, maybe we can use cl.exe on Qt Win?
&gt; 
&gt; Why did this not fail on chromium win? Is it using cygwin or requiring gcc around?

I suspect gcc is installed.

&gt; Alternatively, i could modify the script to do very dumb preprocessing of just #if ENABLE_* directives, since doing anything fancier than that in the .y file would probably break anyway...

I think it would be better to figure out how to use cl.exe on the various Windows platforms, unless the Qt guys have another suggestion.

Adam, do you have a link to the chromiumos failure? I don&apos;t see any chromiumos bots on either build.webkit.org or http://build.chromium.org/p/chromium.webkit/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739533</commentid>
    <comment_count>31</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-10 19:52:59 -0700</bug_when>
    <thetext>We didn&apos;t see the problem until the patch reached the main waterfall:

http://build.chromium.org/p/chromium.chromiumos/builders/ChromiumOS%20%28daisy%29/builds/3657/steps/cbuildbot/logs/stdio

chromeos-chrome-24.0.1292.0_alpha-r1: Traceback (most recent call last):
chromeos-chrome-24.0.1292.0_alpha-r1:   File &quot;scripts/action_preprocessgrammar.py&quot;, line 82, in &lt;module&gt;
chromeos-chrome-24.0.1292.0_alpha-r1:     stdout=subprocess.PIPE)
chromeos-chrome-24.0.1292.0_alpha-r1:   File &quot;/usr/lib64/python2.6/subprocess.py&quot;, line 623, in __init__
chromeos-chrome-24.0.1292.0_alpha-r1:     errread, errwrite)
chromeos-chrome-24.0.1292.0_alpha-r1:   File &quot;/usr/lib64/python2.6/subprocess.py&quot;, line 1141, in _execute_child
chromeos-chrome-24.0.1292.0_alpha-r1:     raise child_exception
chromeos-chrome-24.0.1292.0_alpha-r1: OSError: [Errno 2] No such file or directory
chromeos-chrome-24.0.1292.0_alpha-r1: make: *** [c/Release/obj/gen/webkit/CSSGrammar.y] Error 1
chromeos-chrome-24.0.1292.0_alpha-r1: make: *** Waiting for unfinished jobs....
chromeos-chrome-24.0.1292.0_alpha-r1: emake failed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740121</commentid>
    <comment_count>32</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-11 10:37:21 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; We didn&apos;t see the problem until the patch reached the main waterfall:
&gt; 
&gt; http://build.chromium.org/p/chromium.chromiumos/builders/ChromiumOS%20%28daisy%29/builds/3657/steps/cbuildbot/logs/stdio

Hmm, that error means it didn&apos;t find the compiler (it&apos;s an arm compile, the lines above use armv7a-cros-linux-gnueabi-g++).  I&apos;m not sure if the CC environment variable was set.  It doesn&apos;t look like it, so I&apos;m not sure how make knows to use armv7a-cros-linux-gnueabi-g++.

The other .py scripts used by the chromium build just call the .pl file and the .pl scripts mostly use Source/WebCore/bindings/scripts/preprocessor.pm.  Maybe we can continue to use that method rather than trying to write new code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740148</commentid>
    <comment_count>33</comment_count>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-10-11 11:24:57 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; 
&gt; The other .py scripts used by the chromium build just call the .pl file and the .pl scripts mostly use Source/WebCore/bindings/scripts/preprocessor.pm.  Maybe we can continue to use that method rather than trying to write new code.

applyPreprocessor() essentially does the same that&apos;s being done in makegrammar.pl, so it wouldn&apos;t solve Qt woes anyway.

I&apos;m wondering if just handling simple #if ENABLE_* directives in makegrammar.pl isn&apos;t the right thing to do after all. Anything other than that should probably pass through to the CSSGrammar.y, there would be no need to separate into .y.in and .y.includes, we could get rid of action_preprocessgrammar.py, no fumbling to find a preprocessor in every platform under the sun, etc.

What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740824</commentid>
    <comment_count>34</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-10-12 05:05:24 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; This is what we learned:
&gt; 
&gt; Qt uses --preprocessor \&quot;$${QMAKE_MOC} -E\&quot; in other places that we use the proprocessor.  My last attempt to fix the build (http://trac.webkit.org/changeset/130957) used that, but the output from moc -E is different from gcc (namely, it doesn&apos;t maintain leading spaces).
&gt; 
&gt; I&apos;m not sure what the right fix for this is.  Is there a way we can get moc to behave more like gcc?  Alternately, maybe we can use cl.exe on Qt Win?

I&apos;ve looked a bit into this and the issue seems to be the following:

The bison grammar contains things like

  $$ = parser-&gt;createFloatingSelector();

Moc is tokenizing the input and due to the way it works it is tokenizing this in a way that it _usually_ works, which is as a C++ parser, because of its actual purpose. In C++ the dollar sign is not a valid character for identifiers, and therefore this causes an error (that is silently discarded).

When moc is used in preprocessor-only mode however it should not do that. I&apos;m working on a fix for that. Locally applied I can build with the original patch that passes --preprocessor to makegrammar.pl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740830</commentid>
    <comment_count>35</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-10-12 05:11:39 -0700</bug_when>
    <thetext>(In reply to comment #34)
[...]
&gt; When moc is used in preprocessor-only mode however it should not do that. I&apos;m working on a fix for that. Locally applied I can build with the original patch that passes --preprocessor to makegrammar.pl.

Fix uploaded into Qt Gerrit:

    https://codereview.qt-project.org/#change,37022</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741153</commentid>
    <comment_count>36</comment_count>
      <attachid>168471</attachid>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-10-12 13:34:09 -0700</bug_when>
    <thetext>Created attachment 168471
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741161</commentid>
    <comment_count>37</comment_count>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-10-12 13:38:41 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; Created an attachment (id=168471) [details]
&gt; Patch

Cleaned up makegrammar.pl a bit and made it take the preprocessor and bison executables as arguments whenever possible, so provided the moc fix is in the bots i think now it should work correctly everywhere (including chromiumOS, since it should&apos;ve failed the first time because the preprocessor wasn&apos;t an argument, i believe; we still need to keep an eye, of course).

Also got rid of action_preprocessgrammar.py, used makegrammar.pl on chromium here as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741173</commentid>
    <comment_count>38</comment_count>
      <attachid>168475</attachid>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-10-12 13:53:16 -0700</bug_when>
    <thetext>Created attachment 168475
Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741190</commentid>
    <comment_count>39</comment_count>
      <attachid>168475</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-12 14:05:41 -0700</bug_when>
    <thetext>Comment on attachment 168475
Rebased patch

Attachment 168475 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14292008</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741194</commentid>
    <comment_count>40</comment_count>
      <attachid>168479</attachid>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-10-12 14:12:01 -0700</bug_when>
    <thetext>Created attachment 168479
Patch

Some debugging cruft was in the way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741217</commentid>
    <comment_count>41</comment_count>
      <attachid>168479</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-12 14:36:54 -0700</bug_when>
    <thetext>Comment on attachment 168479
Patch

Thanks! Re-using preprocess.pm and using the same perl script on Chromium seems more likely to work.

Maybe someone from Qt can try landing this and making sure the bots don&apos;t go red.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741220</commentid>
    <comment_count>42</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-12 14:39:41 -0700</bug_when>
    <thetext>Can you hold off landing this for a while?  The tree has been a disaster recently and I haven&apos;t been able to get a roll in all day.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741229</commentid>
    <comment_count>43</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-12 14:43:42 -0700</bug_when>
    <thetext>(In reply to comment #42)
&gt; Can you hold off landing this for a while?  The tree has been a disaster recently and I haven&apos;t been able to get a roll in all day.

Yeah, I was hoping that after the ews bubbles all go green, someone from Qt can try landing it during their Monday morning (i.e., not today).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741250</commentid>
    <comment_count>44</comment_count>
      <attachid>168479</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-12 15:03:46 -0700</bug_when>
    <thetext>Comment on attachment 168479
Patch

Attachment 168479 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14294026</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741271</commentid>
    <comment_count>45</comment_count>
      <attachid>168479</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-12 15:35:57 -0700</bug_when>
    <thetext>Comment on attachment 168479
Patch

Attachment 168479 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14291031</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741279</commentid>
    <comment_count>46</comment_count>
      <attachid>168479</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-12 15:46:46 -0700</bug_when>
    <thetext>Comment on attachment 168479
Patch

Attachment 168479 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14296041</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741481</commentid>
    <comment_count>47</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-10-13 09:32:40 -0700</bug_when>
    <thetext>(In reply to comment #43)
&gt; (In reply to comment #42)
&gt; &gt; Can you hold off landing this for a while?  The tree has been a disaster recently and I haven&apos;t been able to get a roll in all day.
&gt; 
&gt; Yeah, I was hoping that after the ews bubbles all go green, someone from Qt can try landing it during their Monday morning (i.e., not today).

The Qt fix went in, but it&apos;s not through all the stage of the Qt CI system yet. I hope that the change will be available in the final repo by middle of next week. It will require anyone building the Qt port of WebKit to update the Qt version, so could we perhaps aim for landing this end of next week? Or is that too late for you guys?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741562</commentid>
    <comment_count>48</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-10-14 03:00:01 -0700</bug_when>
    <thetext>(In reply to comment #47)
&gt; (In reply to comment #43)
&gt; &gt; (In reply to comment #42)
&gt; &gt; &gt; Can you hold off landing this for a while?  The tree has been a disaster recently and I haven&apos;t been able to get a roll in all day.
&gt; &gt; 
&gt; &gt; Yeah, I was hoping that after the ews bubbles all go green, someone from Qt can try landing it during their Monday morning (i.e., not today).
&gt; 
&gt; The Qt fix went in, but it&apos;s not through all the stage of the Qt CI system yet. I hope that the change will be available in the final repo by middle of next week. It will require anyone building the Qt port of WebKit to update the Qt version, so could we perhaps aim for landing this end of next week? Or is that too late for you guys?

The good news is that unexpectedly the update went through very fast and from the Qt side things are ready. I&apos;ll send a heads-up for the upcoming update to the webkit-qt mailing list and leave it as Ossy&apos;s discretion when to do the update (whenever it suits you best time wise :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741920</commentid>
    <comment_count>49</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-15 03:48:17 -0700</bug_when>
    <thetext>I&apos;m updating the Linux bots today, Zoltán will update the Windows bot today or tomorrow, so we will be able to land it soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742127</commentid>
    <comment_count>50</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-15 10:00:23 -0700</bug_when>
    <thetext>FWIW, it&apos;s fine to wait until later in the week to land this.  I don&apos;t think it&apos;s blocking anything that time critical.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742326</commentid>
    <comment_count>51</comment_count>
      <attachid>168764</attachid>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-10-15 12:53:33 -0700</bug_when>
    <thetext>Created attachment 168764
Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742329</commentid>
    <comment_count>52</comment_count>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-10-15 12:55:23 -0700</bug_when>
    <thetext>(In reply to comment #51)
&gt; Created an attachment (id=168764) [details]
&gt; Rebased patch

The bots were pretty wonky on friday, new ews run to be sure everything is still green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742333</commentid>
    <comment_count>53</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-15 13:00:40 -0700</bug_when>
    <thetext>I updated the Qt 5 on the Linux bots. We are waiting for the update on Qt-ARM bot and the update on Qt-Windows bot. I think the guys will finish it tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742431</commentid>
    <comment_count>54</comment_count>
      <attachid>168764</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-15 14:18:57 -0700</bug_when>
    <thetext>Comment on attachment 168764
Rebased patch

Attachment 168764 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14288842</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742486</commentid>
    <comment_count>55</comment_count>
      <attachid>168764</attachid>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-10-15 14:56:47 -0700</bug_when>
    <thetext>Comment on attachment 168764
Rebased patch

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

&gt; Source/cmake/WebKitMacros.cmake:156
&gt; +        COMMAND ${PERL_EXECUTABLE} -I ${WEBCORE_DIR}/bindings/scripts ${WEBCORE_DIR}/css/makegrammar.pl ${_input} --outputDir ${DERIVED_SOURCES_WEBCORE_DIR} --extraDefines &quot;${_features}&quot; --preprocessor &quot;${CODE_GENERATOR_PREPROCESSOR}&quot; --bison &quot;${BISON_EXECUTABLE}&quot; --symbolsPrefix ${_prefix} ${_input}

EFL build fails due to the (erroneous) extra ${_input} here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742657</commentid>
    <comment_count>56</comment_count>
      <attachid>168823</attachid>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-10-15 17:45:11 -0700</bug_when>
    <thetext>Created attachment 168823
Patch for landing

Got rid of the extra ${_input}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742995</commentid>
    <comment_count>57</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-16 02:30:19 -0700</bug_when>
    <thetext>We updated all Qt bots, so it is safe to land the patch now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743245</commentid>
    <comment_count>58</comment_count>
      <attachid>168823</attachid>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-10-16 10:18:55 -0700</bug_when>
    <thetext>Comment on attachment 168823
Patch for landing

Tony, feel free to cq+ whenever you think is best. I can keep an eye on the bots to see if any problems come up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743314</commentid>
    <comment_count>59</comment_count>
      <attachid>168823</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-16 11:03:57 -0700</bug_when>
    <thetext>Comment on attachment 168823
Patch for landing

Clearing flags on attachment: 168823

Committed r131477: &lt;http://trac.webkit.org/changeset/131477&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743394</commentid>
    <comment_count>60</comment_count>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-10-16 12:06:27 -0700</bug_when>
    <thetext>Qt MIPS missing the moc update?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743401</commentid>
    <comment_count>61</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-16 12:12:01 -0700</bug_when>
    <thetext>(In reply to comment #60)
&gt; Qt MIPS missing the moc update?

Hmm ... it seems yes. Gergely, could you update the Qt 5 on the MIPS bot?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743403</commentid>
    <comment_count>62</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-16 12:13:05 -0700</bug_when>
    <thetext>(In reply to comment #61)
&gt; (In reply to comment #60)
&gt; &gt; Qt MIPS missing the moc update?
&gt; 
&gt; Hmm ... it seems yes. Gergely, could you update the Qt 5 on the MIPS bot?

FYI: http://lists.webkit.org/pipermail/webkit-qt/2012-October/003182.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744004</commentid>
    <comment_count>63</comment_count>
    <who name="Gergely Kis">gergely</who>
    <bug_when>2012-10-17 01:31:35 -0700</bug_when>
    <thetext>(In reply to comment #62)
&gt; (In reply to comment #61)
&gt; &gt; (In reply to comment #60)
&gt; &gt; &gt; Qt MIPS missing the moc update?
&gt; &gt; 
&gt; &gt; Hmm ... it seems yes. Gergely, could you update the Qt 5 on the MIPS bot?
&gt; 
&gt; FYI: http://lists.webkit.org/pipermail/webkit-qt/2012-October/003182.html

Working on the update right now, thanks for the heads up.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158988</attachid>
            <date>2012-08-16 21:19:51 -0700</date>
            <delta_ts>2012-10-09 11:33:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94290-20120817141914.patch</filename>
            <type>text/plain</type>
            <size>97250</size>
            <attacher name="Shane Stephens">shanestephens</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDg4YWU4YTNjNDUyYTYw
N2ZiMzBmMGNiMmUyNWVjOWJiNTA4OWI3Ny4uZWY0YTQyZmYzYmZlZGQ3ODE2YzI4YmVmZTY0MzJk
NGE2MmY4YjY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA4LTE2ICBTaGFu
ZSBTdGVwaGVucyAgPHNoYW5lc3RlcGhlbnNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbV0lQXSBQ
cmUtcHJvY2VzcyBDU1NHcmFtbWFyLnkgYmVmb3JlIHJ1bm5pbmcgdGhyb3VnaCBiaXNvbi4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MjkwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy5tYWtlOgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnkuaW46IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFy
LnkuaW5jbHVkZXM6IEFkZGVkLgorICAgICAgICAqIGNzcy9tYWtlZ3JhbW1hci5wbDoKKwogMjAx
Mi0wOC0xMyAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZW1vdmUgZmFkZSBpbiB0cmFuc2l0aW9uIGZyb20gY2FsZW5kYXIgcGlja2VyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQppbmRleCBjNTdhZDliYjk2ZTk3YWZmNzQ5Y2ZiOTIxZWYwMTQ5Njk1
ZTVlNjVlLi42MGM5ODM3YmZjNTg5NzMzM2M0MTk3NGI1NzBmZmMzMDA3MWE0YzRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTc3NCwxNiArNzc0LDIxIEBAIGVuZGlmCiAKICMg
Q1NTIGdyYW1tYXIKICMgTk9URTogT2xkZXIgdmVyc2lvbnMgb2YgYmlzb24gZG8gbm90IGluamVj
dCBhbiBpbmNsdXNpb24gZ3VhcmQsIHNvIHdlIGFkZCBvbmUuCitGRUFUVVJFX0ZMQUdTID0gJChz
aGVsbCBlY2hvICQoRkVBVFVSRV9ERUZJTkVTKSB8IHBlcmwgLWUgJ3ByaW50ICItRCAiIC4gam9p
bigiIC1EICIsIHNwbGl0KCIgIiwgPD4pKTsnKQogCi1DU1NHcmFtbWFyLmNwcCA6IGNzcy9DU1NH
cmFtbWFyLnkKLQkkKEJJU09OKSAtZCAtcCBjc3N5eSAkPCAtbyAkQAorQ1NTR3JhbW1hci55LnBy
b2Nlc3NlZDogY3NzL0NTU0dyYW1tYXIueS5pbgorCSQoQ0MpIC1FIC1QIC14IGMgJF4gJChGRUFU
VVJFX0ZMQUdTKSA+IENTU0dyYW1tYXIueS5wcm9jZXNzZWQKKworQ1NTR3JhbW1hci5jcHAgOiBj
c3MvQ1NTR3JhbW1hci55LmluY2x1ZGVzIENTU0dyYW1tYXIueS5wcm9jZXNzZWQKKwljYXQgJCsg
Pj4gQ1NTR3JhbW1hci55CisJJChCSVNPTikgLWQgLXAgY3NzeXkgQ1NTR3JhbW1hci55IC1vICRA
CiAJdG91Y2ggQ1NTR3JhbW1hci5jcHAuaAogCXRvdWNoIENTU0dyYW1tYXIuaHBwCiAJZWNobyAn
I2lmbmRlZiBDU1NHcmFtbWFyX2gnID4gQ1NTR3JhbW1hci5oCiAJZWNobyAnI2RlZmluZSBDU1NH
cmFtbWFyX2gnID4+IENTU0dyYW1tYXIuaAogCWNhdCBDU1NHcmFtbWFyLmNwcC5oIENTU0dyYW1t
YXIuaHBwID4+IENTU0dyYW1tYXIuaAogCWVjaG8gJyNlbmRpZicgPj4gQ1NTR3JhbW1hci5oCi0J
cm0gLWYgQ1NTR3JhbW1hci5jcHAuaCBDU1NHcmFtbWFyLmhwcAorCXJtIC1mIENTU0dyYW1tYXIu
Y3BwLmggQ1NTR3JhbW1hci5ocHAgQ1NTR3JhbW1hci55LnByb2Nlc3NlZAogCiAjIC0tLS0tLS0t
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy
OWZhYjRmZmVkZDY0YWU5ZDkxNjBjN2Y0MzhlYzZiNTAxZDMzMGQxLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFt
bWFyLnkKKysrIC9kZXYvbnVsbApAQCAtMSwxNzMwICswLDAgQEAKLSV7Ci0KLS8qCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDAyLTIwMDMgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKLSAqICBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkg
UHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMg
U2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+Ci0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
KiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAg
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwotICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3Jp
dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCi0jaW5j
bHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgotI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCi0j
aW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgotI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCi0j
aW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJNZWRpYUxpc3QuaCIKLSNpbmNsdWRlICJNZWRp
YVF1ZXJ5RXhwLmgiCi0jaW5jbHVkZSAiU3R5bGVSdWxlLmgiCi0jaW5jbHVkZSAiU3R5bGVTaGVl
dENvbnRlbnRzLmgiCi0jaW5jbHVkZSAiV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmgiCi0jaW5jbHVk
ZSAiV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+
Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLQotI2RlZmluZSBZWU1B
TExPQyBmYXN0TWFsbG9jCi0jZGVmaW5lIFlZRlJFRSBmYXN0RnJlZQotCi0jZGVmaW5lIFlZRU5B
QkxFX05MUyAwCi0jZGVmaW5lIFlZTFRZUEVfSVNfVFJJVklBTCAxCi0jZGVmaW5lIFlZTUFYREVQ
VEggMTAwMDAKLSNkZWZpbmUgWVlERUJVRyAwCi0KLSV9Ci0KLSVwdXJlX3BhcnNlcgotCi0lcGFy
c2UtcGFyYW0geyBDU1NQYXJzZXIqIHBhcnNlciB9Ci0lbGV4LXBhcmFtIHsgQ1NTUGFyc2VyKiBw
YXJzZXIgfQotCi0ldW5pb24gewotICAgIGJvb2wgYm9vbGVhbjsKLSAgICBjaGFyIGNoYXJhY3Rl
cjsKLSAgICBpbnQgaW50ZWdlcjsKLSAgICBkb3VibGUgbnVtYmVyOwotICAgIENTU1BhcnNlclN0
cmluZyBzdHJpbmc7Ci0KLSAgICBTdHlsZVJ1bGVCYXNlKiBydWxlOwotICAgIFZlY3RvcjxSZWZQ
dHI8U3R5bGVSdWxlQmFzZT4gPiogcnVsZUxpc3Q7Ci0gICAgQ1NTUGFyc2VyU2VsZWN0b3IqIHNl
bGVjdG9yOwotICAgIENTU1NlbGVjdG9yVmVjdG9yKiBzZWxlY3Rvckxpc3Q7Ci0gICAgQ1NTU2Vs
ZWN0b3I6Ok1hcmdpbkJveFR5cGUgbWFyZ2luQm94OwotICAgIENTU1NlbGVjdG9yOjpSZWxhdGlv
biByZWxhdGlvbjsKLSAgICBNZWRpYVF1ZXJ5U2V0KiBtZWRpYUxpc3Q7Ci0gICAgTWVkaWFRdWVy
eSogbWVkaWFRdWVyeTsKLSAgICBNZWRpYVF1ZXJ5OjpSZXN0cmljdG9yIG1lZGlhUXVlcnlSZXN0
cmljdG9yOwotICAgIE1lZGlhUXVlcnlFeHAqIG1lZGlhUXVlcnlFeHA7Ci0gICAgQ1NTUGFyc2Vy
VmFsdWUgdmFsdWU7Ci0gICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3Q7Ci0gICAgVmVj
dG9yPE93blB0cjxNZWRpYVF1ZXJ5RXhwPiA+KiBtZWRpYVF1ZXJ5RXhwTGlzdDsKLSAgICBTdHls
ZUtleWZyYW1lKiBrZXlmcmFtZTsKLSAgICBWZWN0b3I8UmVmUHRyPFN0eWxlS2V5ZnJhbWU+ID4q
IGtleWZyYW1lUnVsZUxpc3Q7Ci0gICAgZmxvYXQgdmFsOwotICAgIENTU1Byb3BlcnR5SUQgaWQ7
Ci19Ci0KLSV7Ci0KLXN0YXRpYyBpbmxpbmUgaW50IGNzc3l5ZXJyb3Iodm9pZCosIGNvbnN0IGNo
YXIqKQotewotICAgIHJldHVybiAxOwotfQotCi1zdGF0aWMgaW50IGNzc3l5bGV4KFlZU1RZUEUq
IHl5bHZhbCwgQ1NTUGFyc2VyKiBwYXJzZXIpCi17Ci0gICAgcmV0dXJuIHBhcnNlci0+bGV4KHl5
bHZhbCk7Ci19Ci0KLSV9Ci0KLSVleHBlY3QgNjIKLQotJW5vbmFzc29jIExPV0VTVF9QUkVDCi0K
LSVsZWZ0IFVOSU1QT1JUQU5UX1RPSwotCi0ldG9rZW4gV0hJVEVTUEFDRSBTR01MX0NECi0ldG9r
ZW4gVE9LRU5fRU9GIDAKLQotJXRva2VuIElOQ0xVREVTCi0ldG9rZW4gREFTSE1BVENICi0ldG9r
ZW4gQkVHSU5TV0lUSAotJXRva2VuIEVORFNXSVRICi0ldG9rZW4gQ09OVEFJTlMKLQotJXRva2Vu
IDxzdHJpbmc+IFNUUklORwotJXJpZ2h0IDxzdHJpbmc+IElERU5UCi0ldG9rZW4gPHN0cmluZz4g
TlRICi0KLSVub25hc3NvYyA8c3RyaW5nPiBIRVgKLSVub25hc3NvYyA8c3RyaW5nPiBJRFNFTAot
JW5vbmFzc29jICc6JwotJW5vbmFzc29jICcuJwotJW5vbmFzc29jICdbJwotJW5vbmFzc29jIDxz
dHJpbmc+ICcqJwotJW5vbmFzc29jIGVycm9yCi0lbGVmdCAnfCcKLQotJXRva2VuIElNUE9SVF9T
WU0KLSV0b2tlbiBQQUdFX1NZTQotJXRva2VuIE1FRElBX1NZTQotJXRva2VuIEZPTlRfRkFDRV9T
WU0KLSV0b2tlbiBDSEFSU0VUX1NZTQotJXRva2VuIE5BTUVTUEFDRV9TWU0KLSV0b2tlbiBWQVJG
VU5DVElPTgotJXRva2VuIFdFQktJVF9SVUxFX1NZTQotJXRva2VuIFdFQktJVF9ERUNMU19TWU0K
LSV0b2tlbiBXRUJLSVRfS0VZRlJBTUVfUlVMRV9TWU0KLSV0b2tlbiBXRUJLSVRfS0VZRlJBTUVT
X1NZTQotJXRva2VuIFdFQktJVF9WQUxVRV9TWU0KLSV0b2tlbiBXRUJLSVRfTUVESUFRVUVSWV9T
WU0KLSV0b2tlbiBXRUJLSVRfU0VMRUNUT1JfU1lNCi0ldG9rZW4gV0VCS0lUX1JFR0lPTl9SVUxF
X1NZTQotJXRva2VuIDxtYXJnaW5Cb3g+IFRPUExFRlRDT1JORVJfU1lNCi0ldG9rZW4gPG1hcmdp
bkJveD4gVE9QTEVGVF9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBUT1BDRU5URVJfU1lNCi0ldG9r
ZW4gPG1hcmdpbkJveD4gVE9QUklHSFRfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gVE9QUklHSFRD
T1JORVJfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gQk9UVE9NTEVGVENPUk5FUl9TWU0KLSV0b2tl
biA8bWFyZ2luQm94PiBCT1RUT01MRUZUX1NZTQotJXRva2VuIDxtYXJnaW5Cb3g+IEJPVFRPTUNF
TlRFUl9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBCT1RUT01SSUdIVF9TWU0KLSV0b2tlbiA8bWFy
Z2luQm94PiBCT1RUT01SSUdIVENPUk5FUl9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBMRUZUVE9Q
X1NZTQotJXRva2VuIDxtYXJnaW5Cb3g+IExFRlRNSURETEVfU1lNCi0ldG9rZW4gPG1hcmdpbkJv
eD4gTEVGVEJPVFRPTV9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBSSUdIVFRPUF9TWU0KLSV0b2tl
biA8bWFyZ2luQm94PiBSSUdIVE1JRERMRV9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBSSUdIVEJP
VFRPTV9TWU0KLQotJXRva2VuIEFUS0VZV09SRAotCi0ldG9rZW4gSU1QT1JUQU5UX1NZTQotJXRv
a2VuIE1FRElBX09OTFkKLSV0b2tlbiBNRURJQV9OT1QKLSV0b2tlbiBNRURJQV9BTkQKLQotJXRv
a2VuIDxudW1iZXI+IFJFTVMKLSV0b2tlbiA8bnVtYmVyPiBRRU1TCi0ldG9rZW4gPG51bWJlcj4g
RU1TCi0ldG9rZW4gPG51bWJlcj4gRVhTCi0ldG9rZW4gPG51bWJlcj4gUFhTCi0ldG9rZW4gPG51
bWJlcj4gQ01TCi0ldG9rZW4gPG51bWJlcj4gTU1TCi0ldG9rZW4gPG51bWJlcj4gSU5TCi0ldG9r
ZW4gPG51bWJlcj4gUFRTCi0ldG9rZW4gPG51bWJlcj4gUENTCi0ldG9rZW4gPG51bWJlcj4gREVH
UwotJXRva2VuIDxudW1iZXI+IFJBRFMKLSV0b2tlbiA8bnVtYmVyPiBHUkFEUwotJXRva2VuIDxu
dW1iZXI+IFRVUk5TCi0ldG9rZW4gPG51bWJlcj4gTVNFQ1MKLSV0b2tlbiA8bnVtYmVyPiBTRUNT
Ci0ldG9rZW4gPG51bWJlcj4gSEVSVFoKLSV0b2tlbiA8bnVtYmVyPiBLSEVSVFoKLSV0b2tlbiA8
c3RyaW5nPiBESU1FTgotJXRva2VuIDxzdHJpbmc+IElOVkFMSURESU1FTgotJXRva2VuIDxudW1i
ZXI+IFBFUkNFTlRBR0UKLSV0b2tlbiA8bnVtYmVyPiBGTE9BVFRPS0VOCi0ldG9rZW4gPG51bWJl
cj4gSU5URUdFUgotJXRva2VuIDxudW1iZXI+IFZXCi0ldG9rZW4gPG51bWJlcj4gVkgKLSV0b2tl
biA8bnVtYmVyPiBWTUlOCi0ldG9rZW4gPG51bWJlcj4gRFBQWAotJXRva2VuIDxudW1iZXI+IERQ
SQotJXRva2VuIDxudW1iZXI+IERQQ00KLQotJXRva2VuIDxzdHJpbmc+IFVSSQotJXRva2VuIDxz
dHJpbmc+IEZVTkNUSU9OCi0ldG9rZW4gPHN0cmluZz4gQU5ZRlVOQ1RJT04KLSV0b2tlbiA8c3Ry
aW5nPiBOT1RGVU5DVElPTgotJXRva2VuIDxzdHJpbmc+IENBTENGVU5DVElPTgotJXRva2VuIDxz
dHJpbmc+IE1JTkZVTkNUSU9OCi0ldG9rZW4gPHN0cmluZz4gTUFYRlVOQ1RJT04KLSV0b2tlbiA8
c3RyaW5nPiBWQVJfREVGSU5JVElPTgotCi0ldG9rZW4gPHN0cmluZz4gVU5JQ09ERVJBTkdFCi0K
LSV0eXBlIDxyZWxhdGlvbj4gY29tYmluYXRvcgotCi0ldHlwZSA8cnVsZT4gY2hhcnNldAotJXR5
cGUgPHJ1bGU+IGlnbm9yZWRfY2hhcnNldAotJXR5cGUgPHJ1bGU+IHJ1bGVzZXQKLSV0eXBlIDxy
dWxlPiBtZWRpYQotJXR5cGUgPHJ1bGU+IGltcG9ydAotJXR5cGUgPHJ1bGU+IG5hbWVzcGFjZQot
JXR5cGUgPHJ1bGU+IHBhZ2UKLSV0eXBlIDxydWxlPiBtYXJnaW5fYm94Ci0ldHlwZSA8cnVsZT4g
Zm9udF9mYWNlCi0ldHlwZSA8cnVsZT4ga2V5ZnJhbWVzCi0ldHlwZSA8cnVsZT4gaW52YWxpZF9y
dWxlCi0ldHlwZSA8cnVsZT4gc2F2ZV9ibG9jawotJXR5cGUgPHJ1bGU+IGludmFsaWRfYXQKLSV0
eXBlIDxydWxlPiBydWxlCi0ldHlwZSA8cnVsZT4gdmFsaWRfcnVsZQotJXR5cGUgPHJ1bGVMaXN0
PiBibG9ja19ydWxlX2xpc3QgCi0ldHlwZSA8cnVsZT4gYmxvY2tfcnVsZQotJXR5cGUgPHJ1bGU+
IGJsb2NrX3ZhbGlkX3J1bGUKLSV0eXBlIDxydWxlPiByZWdpb24KLQotJXR5cGUgPHN0cmluZz4g
bWF5YmVfbnNfcHJlZml4Ci0KLSV0eXBlIDxzdHJpbmc+IG5hbWVzcGFjZV9zZWxlY3RvcgotCi0l
dHlwZSA8c3RyaW5nPiBzdHJpbmdfb3JfdXJpCi0ldHlwZSA8c3RyaW5nPiBpZGVudF9vcl9zdHJp
bmcKLSV0eXBlIDxzdHJpbmc+IG1lZGl1bQotJXR5cGUgPG1hcmdpbkJveD4gbWFyZ2luX3N5bQot
Ci0ldHlwZSA8c3RyaW5nPiBtZWRpYV9mZWF0dXJlCi0ldHlwZSA8bWVkaWFMaXN0PiBtZWRpYV9s
aXN0Ci0ldHlwZSA8bWVkaWFMaXN0PiBtYXliZV9tZWRpYV9saXN0Ci0ldHlwZSA8bWVkaWFRdWVy
eT4gbWVkaWFfcXVlcnkKLSV0eXBlIDxtZWRpYVF1ZXJ5UmVzdHJpY3Rvcj4gbWF5YmVfbWVkaWFf
cmVzdHJpY3RvcgotJXR5cGUgPHZhbHVlTGlzdD4gbWF5YmVfbWVkaWFfdmFsdWUKLSV0eXBlIDxt
ZWRpYVF1ZXJ5RXhwPiBtZWRpYV9xdWVyeV9leHAKLSV0eXBlIDxtZWRpYVF1ZXJ5RXhwTGlzdD4g
bWVkaWFfcXVlcnlfZXhwX2xpc3QKLSV0eXBlIDxtZWRpYVF1ZXJ5RXhwTGlzdD4gbWF5YmVfYW5k
X21lZGlhX3F1ZXJ5X2V4cF9saXN0Ci0KLSV0eXBlIDxzdHJpbmc+IGtleWZyYW1lX25hbWUKLSV0
eXBlIDxrZXlmcmFtZT4ga2V5ZnJhbWVfcnVsZQotJXR5cGUgPGtleWZyYW1lUnVsZUxpc3Q+IGtl
eWZyYW1lc19ydWxlCi0ldHlwZSA8dmFsdWVMaXN0PiBrZXlfbGlzdAotJXR5cGUgPHZhbHVlPiBr
ZXkKLQotJXR5cGUgPGlkPiBwcm9wZXJ0eQotCi0ldHlwZSA8c2VsZWN0b3I+IHNwZWNpZmllcgot
JXR5cGUgPHNlbGVjdG9yPiBzcGVjaWZpZXJfbGlzdAotJXR5cGUgPHNlbGVjdG9yPiBzaW1wbGVf
c2VsZWN0b3IKLSV0eXBlIDxzZWxlY3Rvcj4gc2VsZWN0b3IKLSV0eXBlIDxzZWxlY3Rvckxpc3Q+
IHNlbGVjdG9yX2xpc3QKLSV0eXBlIDxzZWxlY3Rvckxpc3Q+IHNpbXBsZV9zZWxlY3Rvcl9saXN0
Ci0ldHlwZSA8c2VsZWN0b3JMaXN0PiByZWdpb25fc2VsZWN0b3IKLSV0eXBlIDxzZWxlY3Rvcj4g
c2VsZWN0b3Jfd2l0aF90cmFpbGluZ193aGl0ZXNwYWNlCi0ldHlwZSA8c2VsZWN0b3I+IGNsYXNz
Ci0ldHlwZSA8c2VsZWN0b3I+IGF0dHJpYgotJXR5cGUgPHNlbGVjdG9yPiBwc2V1ZG8KLSV0eXBl
IDxzZWxlY3Rvcj4gcHNldWRvX3BhZ2UKLSV0eXBlIDxzZWxlY3Rvcj4gcGFnZV9zZWxlY3Rvcgot
Ci0ldHlwZSA8Ym9vbGVhbj4gZGVjbGFyYXRpb25fbGlzdAotJXR5cGUgPGJvb2xlYW4+IGRlY2xf
bGlzdAotJXR5cGUgPGJvb2xlYW4+IGRlY2xhcmF0aW9uCi0ldHlwZSA8Ym9vbGVhbj4gZGVjbGFy
YXRpb25zX2FuZF9tYXJnaW5zCi0KLSV0eXBlIDxib29sZWFuPiBwcmlvCi0KLSV0eXBlIDxpbnRl
Z2VyPiBtYXRjaAotJXR5cGUgPGludGVnZXI+IHVuYXJ5X29wZXJhdG9yCi0ldHlwZSA8aW50ZWdl
cj4gbWF5YmVfdW5hcnlfb3BlcmF0b3IKLSV0eXBlIDxjaGFyYWN0ZXI+IG9wZXJhdG9yCi0KLSV0
eXBlIDx2YWx1ZUxpc3Q+IGV4cHIKLSV0eXBlIDx2YWx1ZT4gdGVybQotJXR5cGUgPHZhbHVlPiB1
bmFyeV90ZXJtCi0ldHlwZSA8dmFsdWU+IGZ1bmN0aW9uCi0ldHlwZSA8dmFsdWU+IGNhbGNfZnVu
Y190ZXJtCi0ldHlwZSA8Y2hhcmFjdGVyPiBjYWxjX2Z1bmNfb3BlcmF0b3IKLSV0eXBlIDx2YWx1
ZUxpc3Q+IGNhbGNfZnVuY19leHByCi0ldHlwZSA8dmFsdWVMaXN0PiBjYWxjX2Z1bmNfZXhwcl9s
aXN0Ci0ldHlwZSA8dmFsdWVMaXN0PiBjYWxjX2Z1bmNfcGFyZW5fZXhwcgotJXR5cGUgPHZhbHVl
PiBjYWxjX2Z1bmN0aW9uCi0ldHlwZSA8c3RyaW5nPiBtaW5fb3JfbWF4Ci0ldHlwZSA8dmFsdWU+
IG1pbl9vcl9tYXhfZnVuY3Rpb24KLQotJXR5cGUgPHN0cmluZz4gZWxlbWVudF9uYW1lCi0ldHlw
ZSA8c3RyaW5nPiBhdHRyX25hbWUKLQotJSUKLQotc3R5bGVzaGVldDoKLSAgICBtYXliZV9zcGFj
ZSBtYXliZV9jaGFyc2V0IG1heWJlX3NnbWwgcnVsZV9saXN0Ci0gIHwgd2Via2l0X3J1bGUgbWF5
YmVfc3BhY2UKLSAgfCB3ZWJraXRfZGVjbHMgbWF5YmVfc3BhY2UKLSAgfCB3ZWJraXRfdmFsdWUg
bWF5YmVfc3BhY2UKLSAgfCB3ZWJraXRfbWVkaWFxdWVyeSBtYXliZV9zcGFjZQotICB8IHdlYmtp
dF9zZWxlY3RvciBtYXliZV9zcGFjZQotICB8IHdlYmtpdF9rZXlmcmFtZV9ydWxlIG1heWJlX3Nw
YWNlCi0gIDsKLQotd2Via2l0X3J1bGU6Ci0gICAgV0VCS0lUX1JVTEVfU1lNICd7JyBtYXliZV9z
cGFjZSB2YWxpZF9ydWxlIG1heWJlX3NwYWNlICd9JyB7Ci0gICAgICAgIHBhcnNlci0+bV9ydWxl
ID0gJDQ7Ci0gICAgfQotOwotCi13ZWJraXRfa2V5ZnJhbWVfcnVsZToKLSAgICBXRUJLSVRfS0VZ
RlJBTUVfUlVMRV9TWU0gJ3snIG1heWJlX3NwYWNlIGtleWZyYW1lX3J1bGUgbWF5YmVfc3BhY2Ug
J30nIHsKLSAgICAgICAgcGFyc2VyLT5tX2tleWZyYW1lID0gJDQ7Ci0gICAgfQotOwotCi13ZWJr
aXRfZGVjbHM6Ci0gICAgV0VCS0lUX0RFQ0xTX1NZTSAneycgbWF5YmVfc3BhY2VfYmVmb3JlX2Rl
Y2xhcmF0aW9uIGRlY2xhcmF0aW9uX2xpc3QgJ30nIHsKLSAgICAgICAgLyogY2FuIGJlIGVtcHR5
ICovCi0gICAgfQotOwotCi13ZWJraXRfdmFsdWU6Ci0gICAgV0VCS0lUX1ZBTFVFX1NZTSAneycg
bWF5YmVfc3BhY2UgZXhwciAnfScgewotICAgICAgICBpZiAoJDQpIHsKLSAgICAgICAgICAgIHBh
cnNlci0+bV92YWx1ZUxpc3QgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCk7Ci0g
ICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHBhcnNlci0+bV9wYXJzZWRQcm9w
ZXJ0aWVzLT5zaXplKCk7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlci0+cGFyc2VWYWx1ZShwYXJz
ZXItPm1faWQsIHBhcnNlci0+bV9pbXBvcnRhbnQpKQotICAgICAgICAgICAgICAgIHBhcnNlci0+
cm9sbGJhY2tMYXN0UHJvcGVydGllcyhwYXJzZXItPm1fcGFyc2VkUHJvcGVydGllcy0+c2l6ZSgp
IC0gb2xkUGFyc2VkUHJvcGVydGllcyk7Ci0gICAgICAgICAgICBwYXJzZXItPm1fdmFsdWVMaXN0
ID0gbnVsbHB0cjsKLSAgICAgICAgfQotICAgIH0KLTsKLQotd2Via2l0X21lZGlhcXVlcnk6Ci0g
ICAgIFdFQktJVF9NRURJQVFVRVJZX1NZTSBXSElURVNQQUNFIG1heWJlX3NwYWNlIG1lZGlhX3F1
ZXJ5ICd9JyB7Ci0gICAgICAgICBwYXJzZXItPm1fbWVkaWFRdWVyeSA9IHBhcnNlci0+c2lua0Zs
b2F0aW5nTWVkaWFRdWVyeSgkNCk7Ci0gICAgIH0KLTsKLQotd2Via2l0X3NlbGVjdG9yOgotICAg
IFdFQktJVF9TRUxFQ1RPUl9TWU0gJ3snIG1heWJlX3NwYWNlIHNlbGVjdG9yX2xpc3QgJ30nIHsK
LSAgICAgICAgaWYgKCQ0KSB7Ci0gICAgICAgICAgICBpZiAocGFyc2VyLT5tX3NlbGVjdG9yTGlz
dEZvclBhcnNlU2VsZWN0b3IpCi0gICAgICAgICAgICAgICAgcGFyc2VyLT5tX3NlbGVjdG9yTGlz
dEZvclBhcnNlU2VsZWN0b3ItPmFkb3B0U2VsZWN0b3JWZWN0b3IoKiQ0KTsKLSAgICAgICAgfQot
ICAgIH0KLTsKLQotbWF5YmVfc3BhY2U6Ci0gICAgLyogZW1wdHkgKi8gJXByZWMgVU5JTVBPUlRB
TlRfVE9LCi0gIHwgbWF5YmVfc3BhY2UgV0hJVEVTUEFDRQotICA7Ci0KLW1heWJlX3NnbWw6Ci0g
ICAgLyogZW1wdHkgKi8KLSAgfCBtYXliZV9zZ21sIFNHTUxfQ0QKLSAgfCBtYXliZV9zZ21sIFdI
SVRFU1BBQ0UKLSAgOwotCi1tYXliZV9jaGFyc2V0OgotICAgLyogZW1wdHkgKi8KLSAgfCBjaGFy
c2V0IHsKLSAgfQotICA7Ci0KLWNsb3NpbmdfYnJhY2U6Ci0gICAgJ30nCi0gIHwgJXByZWMgTE9X
RVNUX1BSRUMgVE9LRU5fRU9GCi0gIDsKLQotY2hhcnNldDoKLSAgQ0hBUlNFVF9TWU0gbWF5YmVf
c3BhY2UgU1RSSU5HIG1heWJlX3NwYWNlICc7JyB7Ci0gICAgIGlmIChwYXJzZXItPm1fc3R5bGVT
aGVldCkKLSAgICAgICAgIHBhcnNlci0+bV9zdHlsZVNoZWV0LT5wYXJzZXJTZXRFbmNvZGluZ0Zy
b21DaGFyc2V0UnVsZSgkMyk7Ci0gICAgIGlmIChwYXJzZXItPmlzRXh0cmFjdGluZ1NvdXJjZURh
dGEoKSAmJiBwYXJzZXItPm1fY3VycmVudFJ1bGVEYXRhU3RhY2stPmlzRW1wdHkoKSAmJiBwYXJz
ZXItPm1fcnVsZVNvdXJjZURhdGFSZXN1bHQpCi0gICAgICAgICBwYXJzZXItPmFkZE5ld1J1bGVU
b1NvdXJjZVRyZWUoQ1NTUnVsZVNvdXJjZURhdGE6OmNyZWF0ZVVua25vd24oKSk7Ci0gICAgICQk
ID0gMDsKLSAgfQotICB8IENIQVJTRVRfU1lNIGVycm9yIGludmFsaWRfYmxvY2sgewotICB9Ci0g
IHwgQ0hBUlNFVF9TWU0gZXJyb3IgJzsnIHsKLSAgfQotOwotCi1pZ25vcmVkX2NoYXJzZXQ6Ci0g
ICAgQ0hBUlNFVF9TWU0gbWF5YmVfc3BhY2UgU1RSSU5HIG1heWJlX3NwYWNlICc7JyB7Ci0gICAg
ICAgIC8vIElnbm9yZSBhbnkgQGNoYXJzZXQgcnVsZSBub3QgYXQgdGhlIGJlZ2lubmluZyBvZiB0
aGUgc3R5bGUgc2hlZXQuCi0gICAgICAgICQkID0gMDsKLSAgICB9Ci0gICAgfCBDSEFSU0VUX1NZ
TSBtYXliZV9zcGFjZSAnOycgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotOwotCi1ydWxlX2xp
c3Q6Ci0gICAvKiBlbXB0eSAqLwotIHwgcnVsZV9saXN0IHJ1bGUgbWF5YmVfc2dtbCB7Ci0gICAg
IGlmICgkMiAmJiBwYXJzZXItPm1fc3R5bGVTaGVldCkKLSAgICAgICAgIHBhcnNlci0+bV9zdHls
ZVNoZWV0LT5wYXJzZXJBcHBlbmRSdWxlKCQyKTsKLSB9Ci0gOwotCi12YWxpZF9ydWxlOgotICAg
IHJ1bGVzZXQKLSAgfCBtZWRpYQotICB8IHBhZ2UKLSAgfCBmb250X2ZhY2UKLSAgfCBrZXlmcmFt
ZXMKLSAgfCBuYW1lc3BhY2UKLSAgfCBpbXBvcnQKLSAgfCByZWdpb24KLSAgOwotCi1ydWxlOgot
ICAgIHZhbGlkX3J1bGUgewotICAgICAgICBwYXJzZXItPm1faGFkU3ludGFjdGljYWxseVZhbGlk
Q1NTUnVsZSA9IHRydWU7Ci0gICAgfQotICB8IGlnbm9yZWRfY2hhcnNldAotICB8IGludmFsaWRf
cnVsZQotICB8IGludmFsaWRfYXQKLSAgOwotCi1ibG9ja19ydWxlX2xpc3Q6IAotICAgIC8qIGVt
cHR5ICovIHsgJCQgPSAwOyB9Ci0gIHwgYmxvY2tfcnVsZV9saXN0IGJsb2NrX3J1bGUgbWF5YmVf
c2dtbCB7Ci0gICAgICAkJCA9ICQxOwotICAgICAgaWYgKCQyKSB7Ci0gICAgICAgICAgaWYgKCEk
JCkKLSAgICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZVJ1bGVMaXN0KCk7Ci0gICAgICAg
ICAgJCQtPmFwcGVuZCgkMik7Ci0gICAgICB9Ci0gIH0KLSAgOwotCi1ibG9ja192YWxpZF9ydWxl
OgotICAgIHJ1bGVzZXQKLSAgfCBwYWdlCi0gIHwgZm9udF9mYWNlCi0gIHwga2V5ZnJhbWVzCi0g
IDsKLQotYmxvY2tfcnVsZToKLSAgICBibG9ja192YWxpZF9ydWxlCi0gIHwgaW52YWxpZF9ydWxl
Ci0gIHwgaW52YWxpZF9hdAotICB8IG5hbWVzcGFjZQotICB8IGltcG9ydAotICB8IG1lZGlhCi0g
IDsKLQotYXRfaW1wb3J0X2hlYWRlcl9lbmRfbWF5YmVfc3BhY2U6Ci0gICAgbWF5YmVfc3BhY2Ug
ewotICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyRW5kKCk7Ci0gICAgICAgIHBhcnNlci0+
bWFya1J1bGVCb2R5U3RhcnQoKTsKLSAgICB9Ci0gICAgOwotCi1iZWZvcmVfaW1wb3J0X3J1bGU6
Ci0gICAgLyogZW1wdHkgKi8gewotICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQo
Q1NTUnVsZVNvdXJjZURhdGE6OklNUE9SVF9SVUxFKTsKLSAgICB9Ci0gICAgOwotCi1pbXBvcnQ6
Ci0gICAgYmVmb3JlX2ltcG9ydF9ydWxlIElNUE9SVF9TWU0gYXRfaW1wb3J0X2hlYWRlcl9lbmRf
bWF5YmVfc3BhY2Ugc3RyaW5nX29yX3VyaSBtYXliZV9zcGFjZSBtYXliZV9tZWRpYV9saXN0ICc7
JyB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVJbXBvcnRSdWxlKCQ0LCAkNik7Ci0gICAg
fQotICB8IGJlZm9yZV9pbXBvcnRfcnVsZSBJTVBPUlRfU1lNIGF0X2ltcG9ydF9oZWFkZXJfZW5k
X21heWJlX3NwYWNlIHN0cmluZ19vcl91cmkgbWF5YmVfc3BhY2UgbWF5YmVfbWVkaWFfbGlzdCBU
T0tFTl9FT0YgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlSW1wb3J0UnVsZSgkNCwgJDYp
OwotICAgIH0KLSAgfCBiZWZvcmVfaW1wb3J0X3J1bGUgSU1QT1JUX1NZTSBhdF9pbXBvcnRfaGVh
ZGVyX2VuZF9tYXliZV9zcGFjZSBzdHJpbmdfb3JfdXJpIG1heWJlX3NwYWNlIG1heWJlX21lZGlh
X2xpc3QgaW52YWxpZF9ibG9jayB7Ci0gICAgICAgICQkID0gMDsKLSAgICAgICAgcGFyc2VyLT5w
b3BSdWxlRGF0YSgpOwotICAgIH0KLSAgfCBiZWZvcmVfaW1wb3J0X3J1bGUgSU1QT1JUX1NZTSBl
cnJvciAnOycgewotICAgICAgICAkJCA9IDA7Ci0gICAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEo
KTsKLSAgICB9Ci0gIHwgYmVmb3JlX2ltcG9ydF9ydWxlIElNUE9SVF9TWU0gZXJyb3IgaW52YWxp
ZF9ibG9jayB7Ci0gICAgICAgICQkID0gMDsKLSAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgp
OwotICAgIH0KLSAgOwotCi1uYW1lc3BhY2U6Ci1OQU1FU1BBQ0VfU1lNIG1heWJlX3NwYWNlIG1h
eWJlX25zX3ByZWZpeCBzdHJpbmdfb3JfdXJpIG1heWJlX3NwYWNlICc7JyB7Ci0gICAgcGFyc2Vy
LT5hZGROYW1lc3BhY2UoJDMsICQ0KTsKLSAgICAkJCA9IDA7Ci19Ci18IE5BTUVTUEFDRV9TWU0g
bWF5YmVfc3BhY2UgbWF5YmVfbnNfcHJlZml4IHN0cmluZ19vcl91cmkgbWF5YmVfc3BhY2UgaW52
YWxpZF9ibG9jayB7Ci0gICAgJCQgPSAwOwotfQotfCBOQU1FU1BBQ0VfU1lNIGVycm9yIGludmFs
aWRfYmxvY2sgewotICAgICQkID0gMDsKLX0KLXwgTkFNRVNQQUNFX1NZTSBlcnJvciAnOycgewot
ICAgICQkID0gMDsKLX0KLTsKLQotbWF5YmVfbnNfcHJlZml4OgotLyogZW1wdHkgKi8geyAkJC5j
aGFyYWN0ZXJzID0gMDsgfQotfCBJREVOVCBtYXliZV9zcGFjZSB7ICQkID0gJDE7IH0KLTsKLQot
c3RyaW5nX29yX3VyaToKLVNUUklORwotfCBVUkkKLTsKLQotbWVkaWFfZmVhdHVyZToKLSAgICBJ
REVOVCBtYXliZV9zcGFjZSB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAgIDsKLQotbWF5
YmVfbWVkaWFfdmFsdWU6Ci0gICAgLyplbXB0eSovIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0K
LSAgICB8ICc6JyBtYXliZV9zcGFjZSBleHByIG1heWJlX3NwYWNlIHsKLSAgICAgICAgJCQgPSAk
MzsKLSAgICB9Ci0gICAgOwotCi1tZWRpYV9xdWVyeV9leHA6Ci0gICAgJygnIG1heWJlX3NwYWNl
IG1lZGlhX2ZlYXR1cmUgbWF5YmVfc3BhY2UgbWF5YmVfbWVkaWFfdmFsdWUgJyknIG1heWJlX3Nw
YWNlIHsKLSAgICAgICAgJDMubG93ZXIoKTsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZs
b2F0aW5nTWVkaWFRdWVyeUV4cCgkMywgJDUpOwotICAgIH0KLSAgICA7Ci0KLW1lZGlhX3F1ZXJ5
X2V4cF9saXN0OgotICAgIG1lZGlhX3F1ZXJ5X2V4cCB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5j
cmVhdGVGbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KCk7Ci0gICAgICAgICQkLT5hcHBlbmQocGFy
c2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwKCQxKSk7Ci0gICAgfQotICAgIHwgbWVkaWFf
cXVlcnlfZXhwX2xpc3QgbWF5YmVfc3BhY2UgTUVESUFfQU5EIG1heWJlX3NwYWNlIG1lZGlhX3F1
ZXJ5X2V4cCB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgICAgICQkLT5hcHBlbmQocGFyc2VyLT5z
aW5rRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwKCQ1KSk7Ci0gICAgfQotICAgIDsKLQotbWF5YmVfYW5k
X21lZGlhX3F1ZXJ5X2V4cF9saXN0OgotICAgIC8qZW1wdHkqLyB7Ci0gICAgICAgICQkID0gcGFy
c2VyLT5jcmVhdGVGbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KCk7Ci0gICAgfQotICAgIHwgTUVE
SUFfQU5EIG1heWJlX3NwYWNlIG1lZGlhX3F1ZXJ5X2V4cF9saXN0IHsKLSAgICAgICAgJCQgPSAk
MzsKLSAgICB9Ci0gICAgOwotCi1tYXliZV9tZWRpYV9yZXN0cmljdG9yOgotICAgIC8qZW1wdHkq
LyB7Ci0gICAgICAgICQkID0gTWVkaWFRdWVyeTo6Tm9uZTsKLSAgICB9Ci0gICAgfCBNRURJQV9P
TkxZIHsKLSAgICAgICAgJCQgPSBNZWRpYVF1ZXJ5OjpPbmx5OwotICAgIH0KLSAgICB8IE1FRElB
X05PVCB7Ci0gICAgICAgICQkID0gTWVkaWFRdWVyeTo6Tm90OwotICAgIH0KLSAgICA7Ci0KLW1l
ZGlhX3F1ZXJ5OgotICAgIG1lZGlhX3F1ZXJ5X2V4cF9saXN0IHsKLSAgICAgICAgJCQgPSBwYXJz
ZXItPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeShwYXJzZXItPnNpbmtGbG9hdGluZ01lZGlhUXVl
cnlFeHBMaXN0KCQxKSk7Ci0gICAgfQotICAgIHwKLSAgICBtYXliZV9tZWRpYV9yZXN0cmljdG9y
IG1heWJlX3NwYWNlIG1lZGl1bSBtYXliZV9hbmRfbWVkaWFfcXVlcnlfZXhwX2xpc3QgewotICAg
ICAgICAkMy5sb3dlcigpOwotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdNZWRp
YVF1ZXJ5KCQxLCAkMywgcGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwTGlzdCgkNCkp
OwotICAgIH0KLSAgICA7Ci0KLW1heWJlX21lZGlhX2xpc3Q6Ci0gICAgIC8qIGVtcHR5ICovIHsK
LSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZU1lZGlhUXVlcnlTZXQoKTsKLSAgICAgfQotICAg
ICB8IG1lZGlhX2xpc3QKLSAgICAgOwotCi1tZWRpYV9saXN0OgotICAgIG1lZGlhX3F1ZXJ5IHsK
LSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZU1lZGlhUXVlcnlTZXQoKTsKLSAgICAgICAgJCQt
PmFkZE1lZGlhUXVlcnkocGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5KCQxKSk7Ci0gICAg
ICAgIHBhcnNlci0+dXBkYXRlTGFzdE1lZGlhTGluZSgkJCk7Ci0gICAgfQotICAgIHwgbWVkaWFf
bGlzdCAnLCcgbWF5YmVfc3BhY2UgbWVkaWFfcXVlcnkgewotICAgICAgICAkJCA9ICQxOwotICAg
ICAgICBpZiAoJCQpIHsKLSAgICAgICAgICAgICQkLT5hZGRNZWRpYVF1ZXJ5KHBhcnNlci0+c2lu
a0Zsb2F0aW5nTWVkaWFRdWVyeSgkNCkpOwotICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVMYXN0
TWVkaWFMaW5lKCQkKTsKLSAgICAgICAgfQotICAgIH0KLSAgICB8IG1lZGlhX2xpc3QgZXJyb3Ig
ewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgIDsKLQotYXRfcnVsZV9ib2R5X3N0YXJ0Ogot
ICAgIC8qIGVtcHR5ICovIHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUJvZHlTdGFydCgpOwot
ICAgIH0KLSAgICA7Ci0KLWJlZm9yZV9tZWRpYV9ydWxlOgotICAgIC8qIGVtcHR5ICovIHsKLSAg
ICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRhOjpNRURJ
QV9SVUxFKTsKLSAgICB9Ci0gICAgOwotCi1hdF9ydWxlX2hlYWRlcl9lbmRfbWF5YmVfc3BhY2U6
Ci0gICAgbWF5YmVfc3BhY2UgewotICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyRW5kKCk7
Ci0gICAgfQotICAgIDsKLQotbWVkaWE6Ci0gICAgYmVmb3JlX21lZGlhX3J1bGUgTUVESUFfU1lN
IG1heWJlX3NwYWNlIG1lZGlhX2xpc3QgYXRfcnVsZV9oZWFkZXJfZW5kICd7JyBhdF9ydWxlX2Jv
ZHlfc3RhcnQgbWF5YmVfc3BhY2UgYmxvY2tfcnVsZV9saXN0IHNhdmVfYmxvY2sgewotICAgICAg
ICAkJCA9IHBhcnNlci0+Y3JlYXRlTWVkaWFSdWxlKCQ0LCAkOSk7Ci0gICAgfQotICAgIHwgYmVm
b3JlX21lZGlhX3J1bGUgTUVESUFfU1lNIGF0X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9zcGFjZSAn
eycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1heWJlX3NwYWNlIGJsb2NrX3J1bGVfbGlzdCBzYXZlX2Js
b2NrIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZU1lZGlhUnVsZSgwLCAkNyk7Ci0gICAg
fQotICAgIHwgYmVmb3JlX21lZGlhX3J1bGUgTUVESUFfU1lNIGF0X3J1bGVfaGVhZGVyX2VuZF9t
YXliZV9zcGFjZSAnOycgewotICAgICAgICAkJCA9IDA7Ci0gICAgICAgIHBhcnNlci0+cG9wUnVs
ZURhdGEoKTsKLSAgICB9Ci0gICAgOwotCi1tZWRpdW06Ci0gIElERU5UIG1heWJlX3NwYWNlIHsK
LSAgICAgICQkID0gJDE7Ci0gIH0KLSAgOwotCi1iZWZvcmVfa2V5ZnJhbWVzX3J1bGU6Ci0gICAg
LyogZW1wdHkgKi8gewotICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVs
ZVNvdXJjZURhdGE6OktFWUZSQU1FU19SVUxFKTsKLSAgICB9Ci0gICAgOwotCi1rZXlmcmFtZXM6
Ci0gICAgYmVmb3JlX2tleWZyYW1lc19ydWxlIFdFQktJVF9LRVlGUkFNRVNfU1lNIG1heWJlX3Nw
YWNlIGtleWZyYW1lX25hbWUgYXRfcnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlICd7JyBhdF9y
dWxlX2JvZHlfc3RhcnQgbWF5YmVfc3BhY2Uga2V5ZnJhbWVzX3J1bGUgY2xvc2luZ19icmFjZSB7
Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVLZXlmcmFtZXNSdWxlKCQ0LCBwYXJzZXItPnNp
bmtGbG9hdGluZ0tleWZyYW1lVmVjdG9yKCQ5KSk7Ci0gICAgfQotICAgIDsKLSAgCi1rZXlmcmFt
ZV9uYW1lOgotICAgIElERU5UCi0gICAgfCBTVFJJTkcKLSAgICA7Ci0KLWtleWZyYW1lc19ydWxl
OgotICAgIC8qIGVtcHR5ICovIHsgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nS2V5ZnJhbWVW
ZWN0b3IoKTsgfQotICAgIHwga2V5ZnJhbWVzX3J1bGUga2V5ZnJhbWVfcnVsZSBtYXliZV9zcGFj
ZSB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgICAgIGlmICgkMikKLSAgICAgICAgICAgICQkLT5h
cHBlbmQoJDIpOwotICAgIH0KLSAgICA7Ci0KLWtleWZyYW1lX3J1bGU6Ci0gICAga2V5X2xpc3Qg
bWF5YmVfc3BhY2UgJ3snIG1heWJlX3NwYWNlIGRlY2xhcmF0aW9uX2xpc3QgJ30nIHsKLSAgICAg
ICAgJCQgPSBwYXJzZXItPmNyZWF0ZUtleWZyYW1lKCQxKTsKLSAgICB9Ci0gICAgOwotCi1rZXlf
bGlzdDoKLSAgICBrZXkgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdWYWx1
ZUxpc3QoKTsKLSAgICAgICAgJCQtPmFkZFZhbHVlKHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWUo
JDEpKTsKLSAgICB9Ci0gICAgfCBrZXlfbGlzdCBtYXliZV9zcGFjZSAnLCcgbWF5YmVfc3BhY2Ug
a2V5IHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAgJCQt
PmFkZFZhbHVlKHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWUoJDUpKTsKLSAgICB9Ci0gICAgOwot
Ci1rZXk6Ci0gICAgUEVSQ0VOVEFHRSB7ICQkLmlkID0gMDsgJCQuaXNJbnQgPSBmYWxzZTsgJCQu
ZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjsgfQot
ICAgIHwgSURFTlQgewotICAgICAgICAkJC5pZCA9IDA7ICQkLmlzSW50ID0gZmFsc2U7ICQkLnVu
aXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjsKLSAgICAgICAgQ1NTUGFyc2VyU3Ry
aW5nJiBzdHIgPSAkMTsKLSAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKCJmcm9tIiwgc3Ry
LmNoYXJhY3RlcnMsIHN0ci5sZW5ndGgpKQotICAgICAgICAgICAgJCQuZlZhbHVlID0gMDsKLSAg
ICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoInRvIiwgc3RyLmNoYXJhY3RlcnMsIHN0
ci5sZW5ndGgpKQotICAgICAgICAgICAgJCQuZlZhbHVlID0gMTAwOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBZWUVSUk9SOwotICAgIH0KLSAgICA7Ci0KLWJlZm9yZV9wYWdlX3J1bGU6Ci0g
ICAgLyogZW1wdHkgKi8gewotICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NT
UnVsZVNvdXJjZURhdGE6OlBBR0VfUlVMRSk7Ci0gICAgfQotICAgIDsKLQotcGFnZToKLSAgICBi
ZWZvcmVfcGFnZV9ydWxlIFBBR0VfU1lNIG1heWJlX3NwYWNlIHBhZ2Vfc2VsZWN0b3IgYXRfcnVs
ZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlCi0gICAgJ3snIGF0X3J1bGVfYm9keV9zdGFydCBtYXli
ZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRpb24gZGVjbGFyYXRpb25zX2FuZF9tYXJnaW5zIGNsb3Np
bmdfYnJhY2UgewotICAgICAgICBpZiAoJDQpCi0gICAgICAgICAgICAkJCA9IHBhcnNlci0+Y3Jl
YXRlUGFnZVJ1bGUocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkNCkpOwotICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIC8vIENsZWFyIHByb3BlcnRpZXMgaW4gdGhlIGludmFsaWQgQHBh
Z2UgcnVsZS4KLSAgICAgICAgICAgIHBhcnNlci0+Y2xlYXJQcm9wZXJ0aWVzKCk7Ci0gICAgICAg
ICAgICAvLyBBbHNvIGNsZWFyIG1hcmdpbiBhdC1ydWxlcyBoZXJlIG9uY2Ugd2UgZnVsbHkgaW1w
bGVtZW50IG1hcmdpbiBhdC1ydWxlcyBwYXJzaW5nLgotICAgICAgICAgICAgJCQgPSAwOwotICAg
ICAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOwotICAgICAgICB9Ci0gICAgfQotICAgIHwg
YmVmb3JlX3BhZ2VfcnVsZSBQQUdFX1NZTSBlcnJvciBpbnZhbGlkX2Jsb2NrIHsKLSAgICAgIHBh
cnNlci0+cG9wUnVsZURhdGEoKTsKLSAgICAgICQkID0gMDsKLSAgICB9Ci0gICAgfCBiZWZvcmVf
cGFnZV9ydWxlIFBBR0VfU1lNIGVycm9yICc7JyB7Ci0gICAgICBwYXJzZXItPnBvcFJ1bGVEYXRh
KCk7Ci0gICAgICAkJCA9IDA7Ci0gICAgfQotICAgIDsKLQotcGFnZV9zZWxlY3RvcjoKLSAgICBJ
REVOVCB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0g
ICAgICAgICQkLT5zZXRUYWcoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDEsIHBhcnNlci0+bV9k
ZWZhdWx0TmFtZXNwYWNlKSk7Ci0gICAgICAgICQkLT5zZXRGb3JQYWdlKCk7Ci0gICAgfQotICAg
IHwgSURFTlQgcHNldWRvX3BhZ2UgewotICAgICAgICAkJCA9ICQyOwotICAgICAgICBpZiAoJCQp
IHsKLSAgICAgICAgICAgICQkLT5zZXRUYWcoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDEsIHBh
cnNlci0+bV9kZWZhdWx0TmFtZXNwYWNlKSk7Ci0gICAgICAgICAgICAkJC0+c2V0Rm9yUGFnZSgp
OwotICAgICAgICB9Ci0gICAgfQotICAgIHwgcHNldWRvX3BhZ2UgewotICAgICAgICAkJCA9ICQx
OwotICAgICAgICBpZiAoJCQpCi0gICAgICAgICAgICAkJC0+c2V0Rm9yUGFnZSgpOwotICAgIH0K
LSAgICB8IC8qIGVtcHR5ICovIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5n
U2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldEZvclBhZ2UoKTsKLSAgICB9Ci0gICAgOwotCi1k
ZWNsYXJhdGlvbnNfYW5kX21hcmdpbnM6Ci0gICAgZGVjbGFyYXRpb25fbGlzdAotICAgIHwgZGVj
bGFyYXRpb25zX2FuZF9tYXJnaW5zIG1hcmdpbl9ib3ggbWF5YmVfc3BhY2UgZGVjbGFyYXRpb25f
bGlzdAotICAgIDsKLQotbWFyZ2luX2JveDoKLSAgICBtYXJnaW5fc3ltIHsKLSAgICAgICAgcGFy
c2VyLT5zdGFydERlY2xhcmF0aW9uc0Zvck1hcmdpbkJveCgpOwotICAgIH0gbWF5YmVfc3BhY2Ug
J3snIG1heWJlX3NwYWNlIGRlY2xhcmF0aW9uX2xpc3QgY2xvc2luZ19icmFjZSB7Ci0gICAgICAg
ICQkID0gcGFyc2VyLT5jcmVhdGVNYXJnaW5BdFJ1bGUoJDEpOwotICAgIH0KLSAgICA7Ci0KLW1h
cmdpbl9zeW0gOgotICAgIFRPUExFRlRDT1JORVJfU1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxl
Y3Rvcjo6VG9wTGVmdENvcm5lck1hcmdpbkJveDsKLSAgICB9Ci0gICAgfCBUT1BMRUZUX1NZTSB7
Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OlRvcExlZnRNYXJnaW5Cb3g7Ci0gICAgfQotICAg
IHwgVE9QQ0VOVEVSX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OlRvcENlbnRlck1h
cmdpbkJveDsKLSAgICB9Ci0gICAgfCBUT1BSSUdIVF9TWU0gewotICAgICAgICAkJCA9IENTU1Nl
bGVjdG9yOjpUb3BSaWdodE1hcmdpbkJveDsKLSAgICB9Ci0gICAgfCBUT1BSSUdIVENPUk5FUl9T
WU0gewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpUb3BSaWdodENvcm5lck1hcmdpbkJveDsK
LSAgICB9Ci0gICAgfCBCT1RUT01MRUZUQ09STkVSX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2Vs
ZWN0b3I6OkJvdHRvbUxlZnRDb3JuZXJNYXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgQk9UVE9NTEVG
VF9TWU0gewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpCb3R0b21MZWZ0TWFyZ2luQm94Owot
ICAgIH0KLSAgICB8IEJPVFRPTUNFTlRFUl9TWU0gewotICAgICAgICAkJCA9IENTU1NlbGVjdG9y
OjpCb3R0b21DZW50ZXJNYXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgQk9UVE9NUklHSFRfU1lNIHsK
LSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6Qm90dG9tUmlnaHRNYXJnaW5Cb3g7Ci0gICAgfQot
ICAgIHwgQk9UVE9NUklHSFRDT1JORVJfU1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6
Qm90dG9tUmlnaHRDb3JuZXJNYXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgTEVGVFRPUF9TWU0gewot
ICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpMZWZ0VG9wTWFyZ2luQm94OwotICAgIH0KLSAgICB8
IExFRlRNSURETEVfU1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6TGVmdE1pZGRsZU1h
cmdpbkJveDsKLSAgICB9Ci0gICAgfCBMRUZUQk9UVE9NX1NZTSB7Ci0gICAgICAgICQkID0gQ1NT
U2VsZWN0b3I6OkxlZnRCb3R0b21NYXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgUklHSFRUT1BfU1lN
IHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6UmlnaHRUb3BNYXJnaW5Cb3g7Ci0gICAgfQot
ICAgIHwgUklHSFRNSURETEVfU1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6UmlnaHRN
aWRkbGVNYXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgUklHSFRCT1RUT01fU1lNIHsKLSAgICAgICAg
JCQgPSBDU1NTZWxlY3Rvcjo6UmlnaHRCb3R0b21NYXJnaW5Cb3g7Ci0gICAgfQotICAgIDsKLQot
YmVmb3JlX2ZvbnRfZmFjZV9ydWxlOgotICAgIC8qIGVtcHR5ICovIHsKLSAgICAgICAgcGFyc2Vy
LT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRhOjpGT05UX0ZBQ0VfUlVMRSk7
Ci0gICAgfQotICAgIDsKLQotZm9udF9mYWNlOgotICAgIGJlZm9yZV9mb250X2ZhY2VfcnVsZSBG
T05UX0ZBQ0VfU1lNIGF0X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9zcGFjZQotICAgICd7JyBhdF9y
dWxlX2JvZHlfc3RhcnQgbWF5YmVfc3BhY2VfYmVmb3JlX2RlY2xhcmF0aW9uIGRlY2xhcmF0aW9u
X2xpc3QgY2xvc2luZ19icmFjZSB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGb250RmFj
ZVJ1bGUoKTsKLSAgICB9Ci0gICAgfCBiZWZvcmVfZm9udF9mYWNlX3J1bGUgRk9OVF9GQUNFX1NZ
TSBlcnJvciBpbnZhbGlkX2Jsb2NrIHsKLSAgICAgICQkID0gMDsKLSAgICAgIHBhcnNlci0+cG9w
UnVsZURhdGEoKTsKLSAgICB9Ci0gICAgfCBiZWZvcmVfZm9udF9mYWNlX3J1bGUgRk9OVF9GQUNF
X1NZTSBlcnJvciAnOycgewotICAgICAgJCQgPSAwOwotICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0
YSgpOwotICAgIH0KLTsKLQotcmVnaW9uX3NlbGVjdG9yOgotICAgIHNlbGVjdG9yX2xpc3Qgewot
ICAgICAgICBpZiAoJDEpIHsKLSAgICAgICAgICAgIHBhcnNlci0+c2V0UmV1c2FibGVSZWdpb25T
ZWxlY3RvclZlY3RvcigkMSk7Ci0gICAgICAgICAgICAkJCA9IHBhcnNlci0+cmV1c2FibGVSZWdp
b25TZWxlY3RvclZlY3RvcigpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICQkID0gMDsKLSAgICB9Ci07Ci0KLWJlZm9yZV9yZWdpb25fcnVsZToKLSAgICAvKiBlbXB0eSAq
LyB7Ci0gICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0
YTo6UkVHSU9OX1JVTEUpOwotICAgIH0KLSAgICA7Ci0KLXJlZ2lvbjoKLSAgICBiZWZvcmVfcmVn
aW9uX3J1bGUgV0VCS0lUX1JFR0lPTl9SVUxFX1NZTSBXSElURVNQQUNFIHJlZ2lvbl9zZWxlY3Rv
ciBhdF9ydWxlX2hlYWRlcl9lbmQgJ3snIGF0X3J1bGVfYm9keV9zdGFydCBtYXliZV9zcGFjZSBi
bG9ja19ydWxlX2xpc3Qgc2F2ZV9ibG9jayB7Ci0gICAgICAgIGlmICgkNCkKLSAgICAgICAgICAg
ICQkID0gcGFyc2VyLT5jcmVhdGVSZWdpb25SdWxlKCQ0LCAkOSk7Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgJCQgPSAwOwotICAgICAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOwot
ICAgICAgICB9Ci0gICAgfQotOwotCi1jb21iaW5hdG9yOgotICAgICcrJyBtYXliZV9zcGFjZSB7
ICQkID0gQ1NTU2VsZWN0b3I6OkRpcmVjdEFkamFjZW50OyB9Ci0gIHwgJ34nIG1heWJlX3NwYWNl
IHsgJCQgPSBDU1NTZWxlY3Rvcjo6SW5kaXJlY3RBZGphY2VudDsgfQotICB8ICc+JyBtYXliZV9z
cGFjZSB7ICQkID0gQ1NTU2VsZWN0b3I6OkNoaWxkOyB9Ci0gIDsKLQotbWF5YmVfdW5hcnlfb3Bl
cmF0b3I6Ci0gICAgdW5hcnlfb3BlcmF0b3IgeyAkJCA9ICQxOyB9Ci0gICAgfCB7ICQkID0gMTsg
fQotICAgIDsKLQotdW5hcnlfb3BlcmF0b3I6Ci0gICAgJy0nIHsgJCQgPSAtMTsgfQotICB8ICcr
JyB7ICQkID0gMTsgfQotICA7Ci0KLW1heWJlX3NwYWNlX2JlZm9yZV9kZWNsYXJhdGlvbjoKLSAg
ICBtYXliZV9zcGFjZSB7Ci0gICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5U3RhcnQoKTsKLSAg
ICB9Ci0gIDsKLQotYmVmb3JlX3NlbGVjdG9yX2xpc3Q6Ci0gICAgLyogZW1wdHkgKi8gewotICAg
ICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6OlNUWUxF
X1JVTEUpOwotICAgIH0KLSAgOwotCi1hdF9ydWxlX2hlYWRlcl9lbmQ6Ci0gICAgLyogZW1wdHkg
Ki8gewotICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyRW5kKCk7Ci0gICAgfQotICA7Ci0K
LXJ1bGVzZXQ6Ci0gICAgYmVmb3JlX3NlbGVjdG9yX2xpc3Qgc2VsZWN0b3JfbGlzdCBhdF9ydWxl
X2hlYWRlcl9lbmQgJ3snIGF0X3J1bGVfYm9keV9zdGFydCBtYXliZV9zcGFjZV9iZWZvcmVfZGVj
bGFyYXRpb24gZGVjbGFyYXRpb25fbGlzdCBjbG9zaW5nX2JyYWNlIHsKLSAgICAgICAgJCQgPSBw
YXJzZXItPmNyZWF0ZVN0eWxlUnVsZSgkMik7Ci0gICAgfQotICA7Ci0KLXNlbGVjdG9yX2xpc3Q6
Ci0gICAgc2VsZWN0b3IgJXByZWMgVU5JTVBPUlRBTlRfVE9LIHsKLSAgICAgICAgaWYgKCQxKSB7
Ci0gICAgICAgICAgICAkJCA9IHBhcnNlci0+c2VsZWN0b3JWZWN0b3IoKTsKLSAgICAgICAgICAg
ICQkLT5zaHJpbmsoMCk7Ci0gICAgICAgICAgICAkJC0+YXBwZW5kKHBhcnNlci0+c2lua0Zsb2F0
aW5nU2VsZWN0b3IoJDEpKTsKLSAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlTGFzdFNlbGVjdG9y
TGluZUFuZFBvc2l0aW9uKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgfCBzZWxlY3Rvcl9saXN0
ICcsJyBtYXliZV9zcGFjZSBzZWxlY3RvciAlcHJlYyBVTklNUE9SVEFOVF9UT0sgewotICAgICAg
ICBpZiAoJDEgJiYgJDQpIHsKLSAgICAgICAgICAgICQkID0gJDE7Ci0gICAgICAgICAgICAkJC0+
YXBwZW5kKHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDQpKTsKLSAgICAgICAgICAgIHBh
cnNlci0+dXBkYXRlTGFzdFNlbGVjdG9yTGluZUFuZFBvc2l0aW9uKCk7Ci0gICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgfCBzZWxlY3Rvcl9saXN0IGVycm9yIHsK
LSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgIDsKLQotc2VsZWN0b3Jfd2l0aF90cmFpbGluZ193
aGl0ZXNwYWNlOgotICAgIHNlbGVjdG9yIFdISVRFU1BBQ0UgewotICAgICAgICAkJCA9ICQxOwot
ICAgIH0KLSAgICA7Ci0KLXNlbGVjdG9yOgotICAgIHNpbXBsZV9zZWxlY3RvciB7Ci0gICAgICAg
ICQkID0gJDE7Ci0gICAgfQotICAgIHwgc2VsZWN0b3Jfd2l0aF90cmFpbGluZ193aGl0ZXNwYWNl
Ci0gICAgewotICAgICAgICAkJCA9ICQxOwotICAgIH0KLSAgICB8IHNlbGVjdG9yX3dpdGhfdHJh
aWxpbmdfd2hpdGVzcGFjZSBzaW1wbGVfc2VsZWN0b3IKLSAgICB7Ci0gICAgICAgICQkID0gJDI7
Ci0gICAgICAgIGlmICghJDEpCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgICAgIGVsc2UgaWYg
KCQkKSB7Ci0gICAgICAgICAgICBDU1NQYXJzZXJTZWxlY3RvciogZW5kID0gJCQ7Ci0gICAgICAg
ICAgICB3aGlsZSAoZW5kLT50YWdIaXN0b3J5KCkpCi0gICAgICAgICAgICAgICAgZW5kID0gZW5k
LT50YWdIaXN0b3J5KCk7Ci0gICAgICAgICAgICBlbmQtPnNldFJlbGF0aW9uKENTU1NlbGVjdG9y
OjpEZXNjZW5kYW50KTsKLSAgICAgICAgICAgIGVuZC0+c2V0VGFnSGlzdG9yeShwYXJzZXItPnNp
bmtGbG9hdGluZ1NlbGVjdG9yKCQxKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgfCBzZWxlY3Rv
ciBjb21iaW5hdG9yIHNpbXBsZV9zZWxlY3RvciB7Ci0gICAgICAgICQkID0gJDM7Ci0gICAgICAg
IGlmICghJDEpCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgICAgIGVsc2UgaWYgKCQkKSB7Ci0g
ICAgICAgICAgICBDU1NQYXJzZXJTZWxlY3RvciogZW5kID0gJCQ7Ci0gICAgICAgICAgICB3aGls
ZSAoZW5kLT50YWdIaXN0b3J5KCkpCi0gICAgICAgICAgICAgICAgZW5kID0gZW5kLT50YWdIaXN0
b3J5KCk7Ci0gICAgICAgICAgICBlbmQtPnNldFJlbGF0aW9uKCQyKTsKLSAgICAgICAgICAgIGVu
ZC0+c2V0VGFnSGlzdG9yeShwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQxKSk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgfCBzZWxlY3RvciBlcnJvciB7Ci0gICAgICAgICQkID0gMDsKLSAg
ICB9Ci0gICAgOwotCi1uYW1lc3BhY2Vfc2VsZWN0b3I6Ci0gICAgLyogZW1wdHkgKi8gJ3wnIHsg
JCQuY2hhcmFjdGVycyA9IDA7ICQkLmxlbmd0aCA9IDA7IH0KLSAgICB8ICcqJyAnfCcgeyBzdGF0
aWMgVUNoYXIgc3RhciA9ICcqJzsgJCQuY2hhcmFjdGVycyA9ICZzdGFyOyAkJC5sZW5ndGggPSAx
OyB9Ci0gICAgfCBJREVOVCAnfCcgeyAkJCA9ICQxOyB9Ci07Ci0gICAgCi1zaW1wbGVfc2VsZWN0
b3I6Ci0gICAgZWxlbWVudF9uYW1lIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0
aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldFRhZyhRdWFsaWZpZWROYW1lKG51bGxBdG9t
LCAkMSwgcGFyc2VyLT5tX2RlZmF1bHROYW1lc3BhY2UpKTsKLSAgICB9Ci0gICAgfCBlbGVtZW50
X25hbWUgc3BlY2lmaWVyX2xpc3QgewotICAgICAgICAkJCA9ICQyOwotICAgICAgICBpZiAoJCQp
Ci0gICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUobnVs
bEF0b20sICQxLCAkJCk7Ci0gICAgfQotICAgIHwgc3BlY2lmaWVyX2xpc3QgewotICAgICAgICAk
JCA9ICQxOwotICAgICAgICBpZiAoJCQpCi0gICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNp
ZmllcnNXaXRoRWxlbWVudE5hbWUobnVsbEF0b20sIHN0YXJBdG9tLCAkJCk7Ci0gICAgfQotICAg
IHwgbmFtZXNwYWNlX3NlbGVjdG9yIGVsZW1lbnRfbmFtZSB7Ci0gICAgICAgICQkID0gcGFyc2Vy
LT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5zZXRUYWcocGFyc2VyLT5k
ZXRlcm1pbmVOYW1lSW5OYW1lc3BhY2UoJDEsICQyKSk7Ci0gICAgfQotICAgIHwgbmFtZXNwYWNl
X3NlbGVjdG9yIGVsZW1lbnRfbmFtZSBzcGVjaWZpZXJfbGlzdCB7Ci0gICAgICAgICQkID0gJDM7
Ci0gICAgICAgIGlmICgkJCkKLSAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dp
dGhFbGVtZW50TmFtZSgkMSwgJDIsICQkKTsKLSAgICB9Ci0gICAgfCBuYW1lc3BhY2Vfc2VsZWN0
b3Igc3BlY2lmaWVyX2xpc3QgewotICAgICAgICAkJCA9ICQyOwotICAgICAgICBpZiAoJCQpCi0g
ICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoJDEsIHN0
YXJBdG9tLCAkJCk7Ci0gICAgfQotICA7Ci0KLXNpbXBsZV9zZWxlY3Rvcl9saXN0OgotICAgIHNp
bXBsZV9zZWxlY3RvciAlcHJlYyBVTklNUE9SVEFOVF9UT0sgewotICAgICAgICBpZiAoJDEpIHsK
LSAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yVmVjdG9yKCk7
Ci0gICAgICAgICAgICAkJC0+YXBwZW5kKHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDEp
KTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgIHwgc2lt
cGxlX3NlbGVjdG9yX2xpc3QgbWF5YmVfc3BhY2UgJywnIG1heWJlX3NwYWNlIHNpbXBsZV9zZWxl
Y3RvciAlcHJlYyBVTklNUE9SVEFOVF9UT0sgewotICAgICAgICBpZiAoJDEgJiYgJDUpIHsKLSAg
ICAgICAgICAgICQkID0gJDE7Ci0gICAgICAgICAgICAkJC0+YXBwZW5kKHBhcnNlci0+c2lua0Zs
b2F0aW5nU2VsZWN0b3IoJDUpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAkJCA9IDA7
Ci0gICAgfQotICAgIHwgc2ltcGxlX3NlbGVjdG9yX2xpc3QgZXJyb3IgewotICAgICAgICAkJCA9
IDA7Ci0gICAgfQotICA7Ci0KLWVsZW1lbnRfbmFtZToKLSAgICBJREVOVCB7Ci0gICAgICAgIENT
U1BhcnNlclN0cmluZyYgc3RyID0gJDE7Ci0gICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4dC5p
c0hUTUxEb2N1bWVudCkKLSAgICAgICAgICAgIHN0ci5sb3dlcigpOwotICAgICAgICAkJCA9IHN0
cjsKLSAgICB9Ci0gICAgfCAnKicgewotICAgICAgICBzdGF0aWMgVUNoYXIgc3RhciA9ICcqJzsK
LSAgICAgICAgJCQuY2hhcmFjdGVycyA9ICZzdGFyOwotICAgICAgICAkJC5sZW5ndGggPSAxOwot
ICAgIH0KLSAgOwotCi1zcGVjaWZpZXJfbGlzdDoKLSAgICBzcGVjaWZpZXIgewotICAgICAgICAk
JCA9ICQxOwotICAgIH0KLSAgICB8IHNwZWNpZmllcl9saXN0IHNwZWNpZmllciB7Ci0gICAgICAg
IGlmICghJDIpCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgICAgIGVsc2UgaWYgKCQxKQotICAg
ICAgICAgICAgJCQgPSBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnMoJDEsICQyKTsKLSAgICB9Ci0g
ICAgfCBzcGVjaWZpZXJfbGlzdCBlcnJvciB7Ci0gICAgICAgICQkID0gMDsKLSAgICB9Ci07Ci0K
LXNwZWNpZmllcjoKLSAgICBJRFNFTCB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9h
dGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6SWQpOwot
ICAgICAgICBpZiAocGFyc2VyLT5tX2NvbnRleHQubW9kZSA9PSBDU1NRdWlya3NNb2RlKQotICAg
ICAgICAgICAgJDEubG93ZXIoKTsKLSAgICAgICAgJCQtPnNldFZhbHVlKCQxKTsKLSAgICB9Ci0g
IHwgSEVYIHsKLSAgICAgICAgaWYgKCQxLmNoYXJhY3RlcnNbMF0gPj0gJzAnICYmICQxLmNoYXJh
Y3RlcnNbMF0gPD0gJzknKSB7Ci0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAg
ICAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpJZCk7Ci0gICAgICAgICAgICBpZiAo
cGFyc2VyLT5tX2NvbnRleHQubW9kZSA9PSBDU1NRdWlya3NNb2RlKQotICAgICAgICAgICAgICAg
ICQxLmxvd2VyKCk7Ci0gICAgICAgICAgICAkJC0+c2V0VmFsdWUoJDEpOwotICAgICAgICB9Ci0g
ICAgfQotICB8IGNsYXNzCi0gIHwgYXR0cmliCi0gIHwgcHNldWRvCi0gICAgOwotCi1jbGFzczoK
LSAgICAnLicgSURFTlQgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxl
Y3RvcigpOwotICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OkNsYXNzKTsKLSAgICAg
ICAgaWYgKHBhcnNlci0+bV9jb250ZXh0Lm1vZGUgPT0gQ1NTUXVpcmtzTW9kZSkKLSAgICAgICAg
ICAgICQyLmxvd2VyKCk7Ci0gICAgICAgICQkLT5zZXRWYWx1ZSgkMik7Ci0gICAgfQotICA7Ci0K
LWF0dHJfbmFtZToKLSAgICBJREVOVCBtYXliZV9zcGFjZSB7Ci0gICAgICAgIENTU1BhcnNlclN0
cmluZyYgc3RyID0gJDE7Ci0gICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4dC5pc0hUTUxEb2N1
bWVudCkKLSAgICAgICAgICAgIHN0ci5sb3dlcigpOwotICAgICAgICAkJCA9IHN0cjsKLSAgICB9
Ci0gICAgOwotCi1hdHRyaWI6Ci0gICAgJ1snIG1heWJlX3NwYWNlIGF0dHJfbmFtZSAnXScgewot
ICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAk
JC0+c2V0QXR0cmlidXRlKFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQzLCBudWxsQXRvbSkpOwot
ICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlNldCk7Ci0gICAgfQotICAgIHwgJ1sn
IG1heWJlX3NwYWNlIGF0dHJfbmFtZSBtYXRjaCBtYXliZV9zcGFjZSBpZGVudF9vcl9zdHJpbmcg
bWF5YmVfc3BhY2UgJ10nIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2Vs
ZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldEF0dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9t
LCAkMywgbnVsbEF0b20pKTsKLSAgICAgICAgJCQtPnNldE1hdGNoKChDU1NTZWxlY3Rvcjo6TWF0
Y2gpJDQpOwotICAgICAgICAkJC0+c2V0VmFsdWUoJDYpOwotICAgIH0KLSAgICB8ICdbJyBtYXli
ZV9zcGFjZSBuYW1lc3BhY2Vfc2VsZWN0b3IgYXR0cl9uYW1lICddJyB7Ci0gICAgICAgICQkID0g
cGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5zZXRBdHRyaWJ1
dGUocGFyc2VyLT5kZXRlcm1pbmVOYW1lSW5OYW1lc3BhY2UoJDMsICQ0KSk7Ci0gICAgICAgICQk
LT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6U2V0KTsKLSAgICB9Ci0gICAgfCAnWycgbWF5YmVfc3Bh
Y2UgbmFtZXNwYWNlX3NlbGVjdG9yIGF0dHJfbmFtZSBtYXRjaCBtYXliZV9zcGFjZSBpZGVudF9v
cl9zdHJpbmcgbWF5YmVfc3BhY2UgJ10nIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZs
b2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldEF0dHJpYnV0ZShwYXJzZXItPmRldGVy
bWluZU5hbWVJbk5hbWVzcGFjZSgkMywgJDQpKTsKLSAgICAgICAgJCQtPnNldE1hdGNoKChDU1NT
ZWxlY3Rvcjo6TWF0Y2gpJDUpOwotICAgICAgICAkJC0+c2V0VmFsdWUoJDcpOwotICAgIH0KLSAg
OwotCi1tYXRjaDoKLSAgICAnPScgewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpFeGFjdDsK
LSAgICB9Ci0gICAgfCBJTkNMVURFUyB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6Okxpc3Q7
Ci0gICAgfQotICAgIHwgREFTSE1BVENIIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6SHlw
aGVuOwotICAgIH0KLSAgICB8IEJFR0lOU1dJVEggewotICAgICAgICAkJCA9IENTU1NlbGVjdG9y
OjpCZWdpbjsKLSAgICB9Ci0gICAgfCBFTkRTV0lUSCB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0
b3I6OkVuZDsKLSAgICB9Ci0gICAgfCBDT05UQUlOUyB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0
b3I6OkNvbnRhaW47Ci0gICAgfQotICAgIDsKLQotaWRlbnRfb3Jfc3RyaW5nOgotICAgIElERU5U
Ci0gIHwgU1RSSU5HCi0gICAgOwotCi1wc2V1ZG9fcGFnZToKLSAgICAnOicgSURFTlQgewotICAg
ICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+
c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBhZ2VQc2V1ZG9DbGFzcyk7Ci0gICAgICAgICQyLmxvd2Vy
KCk7Ci0gICAgICAgICQkLT5zZXRWYWx1ZSgkMik7Ci0gICAgICAgIENTU1NlbGVjdG9yOjpQc2V1
ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOwotICAgICAgICBpZiAodHlwZSA9PSBDU1NT
ZWxlY3Rvcjo6UHNldWRvVW5rbm93bikKLSAgICAgICAgICAgICQkID0gMDsKLSAgICB9Ci0KLXBz
ZXVkbzoKLSAgICAnOicgSURFTlQgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRp
bmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzKTsKLSAgICAgICAgJDIubG93ZXIoKTsKLSAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsKLSAg
ICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgdHlwZSA9ICQkLT5wc2V1ZG9UeXBlKCk7Ci0g
ICAgICAgIGlmICh0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9Vbmtub3duKQotICAgICAgICAg
ICAgJCQgPSAwOwotICAgIH0KLSAgICB8ICc6JyAnOicgSURFTlQgewotICAgICAgICAkJCA9IHBh
cnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0TWF0Y2goQ1NT
U2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQpOwotICAgICAgICAkMy5sb3dlcigpOwotICAgICAgICAk
JC0+c2V0VmFsdWUoJDMpOwotICAgICAgICAvLyBGSVhNRTogVGhpcyBjYWxsIGlzIG5lZWRlZCB0
byBmb3JjZSBzZWxlY3RvciB0byBjb21wdXRlIHRoZSBwc2V1ZG9UeXBlIGVhcmx5IGVub3VnaC4K
LSAgICAgICAgJCQtPnBzZXVkb1R5cGUoKTsKLSAgICB9Ci0gICAgLy8gdXNlIGJ5IDotd2Via2l0
LWFueS4KLSAgICAvLyBGSVhNRTogc2hvdWxkIHdlIHN1cHBvcnQgZ2VuZXJpYyBzZWxlY3RvcnMg
aGVyZSBvciBqdXN0IHNpbXBsZV9zZWxlY3RvcnM/Ci0gICAgLy8gVXNlIHNpbXBsZV9zZWxlY3Rv
cl9saXN0IGZvciBub3cgdG8gbWF0Y2ggLW1vei1hbnkuCi0gICAgLy8gU2VlIGh0dHA6Ly9saXN0
cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy1zdHlsZS8yMDEwU2VwLzA1NjYuaHRtbCBmb3Ig
c29tZQotICAgIC8vIHJlbGF0ZWQgZGlzY3Vzc2lvbiB3aXRoIHJlc3BlY3QgdG8gOm5vdC4KLSAg
ICB8ICc6JyBBTllGVU5DVElPTiBtYXliZV9zcGFjZSBzaW1wbGVfc2VsZWN0b3JfbGlzdCBtYXli
ZV9zcGFjZSAnKScgewotICAgICAgICBpZiAoJDQpIHsKLSAgICAgICAgICAgICQkID0gcGFyc2Vy
LT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICAgICAkJC0+c2V0TWF0Y2goQ1NT
U2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKLSAgICAgICAgICAgICQkLT5hZG9wdFNlbGVjdG9yVmVj
dG9yKCpwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yVmVjdG9yKCQ0KSk7Ci0gICAgICAgICAg
ICAkMi5sb3dlcigpOwotICAgICAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsKLSAgICAgICAgICAg
IENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOwotICAgICAg
ICAgICAgaWYgKHR5cGUgIT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0FueSkKLSAgICAgICAgICAgICAg
ICAkJCA9IDA7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgJCQgPSAwOwotICAgIH0KLSAg
ICAvLyB1c2VkIGJ5IDpudGgtKihheCtiKQotICAgIHwgJzonIEZVTkNUSU9OIG1heWJlX3NwYWNl
IE5USCBtYXliZV9zcGFjZSAnKScgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRp
bmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzKTsKLSAgICAgICAgJCQtPnNldEFyZ3VtZW50KCQ0KTsKLSAgICAgICAgJCQtPnNldFZhbHVl
KCQyKTsKLSAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgdHlwZSA9ICQkLT5wc2V1ZG9U
eXBlKCk7Ci0gICAgICAgIGlmICh0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9Vbmtub3duKQot
ICAgICAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICAvLyB1c2VkIGJ5IDpudGgtKgotICAgIHwg
JzonIEZVTkNUSU9OIG1heWJlX3NwYWNlIG1heWJlX3VuYXJ5X29wZXJhdG9yIElOVEVHRVIgbWF5
YmVfc3BhY2UgJyknIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0
b3IoKTsKLSAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7Ci0g
ICAgICAgICQkLT5zZXRBcmd1bWVudChTdHJpbmc6Om51bWJlcigkNCAqICQ1KSk7Ci0gICAgICAg
ICQkLT5zZXRWYWx1ZSgkMik7Ci0gICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUg
PSAkJC0+cHNldWRvVHlwZSgpOwotICAgICAgICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNl
dWRvVW5rbm93bikKLSAgICAgICAgICAgICQkID0gMDsKLSAgICB9Ci0gICAgLy8gdXNlZCBieSA6
bnRoLSoob2RkL2V2ZW4pIGFuZCA6bGFuZwotICAgIHwgJzonIEZVTkNUSU9OIG1heWJlX3NwYWNl
IElERU5UIG1heWJlX3NwYWNlICcpJyB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9h
dGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRv
Q2xhc3MpOwotICAgICAgICAkJC0+c2V0QXJndW1lbnQoJDQpOwotICAgICAgICAkMi5sb3dlcigp
OwotICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOwotICAgICAgICBDU1NTZWxlY3Rvcjo6UHNldWRv
VHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUoKTsKLSAgICAgICAgaWYgKHR5cGUgPT0gQ1NTU2Vs
ZWN0b3I6OlBzZXVkb1Vua25vd24pCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgICAgIGVsc2Ug
aWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb050aENoaWxkIHx8Ci0gICAgICAgICAgICAg
ICAgIHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb050aE9mVHlwZSB8fAotICAgICAgICAgICAg
ICAgICB0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9OdGhMYXN0Q2hpbGQgfHwKLSAgICAgICAg
ICAgICAgICAgdHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvTnRoTGFzdE9mVHlwZSkgewotICAg
ICAgICAgICAgaWYgKCFpc1ZhbGlkTnRoVG9rZW4oJDQpKQotICAgICAgICAgICAgICAgICQkID0g
MDsKLSAgICAgICAgfQotICAgIH0KLSAgICAvLyB1c2VkIGJ5IDpub3QKLSAgICB8ICc6JyBOT1RG
VU5DVElPTiBtYXliZV9zcGFjZSBzaW1wbGVfc2VsZWN0b3IgbWF5YmVfc3BhY2UgJyknIHsKLSAg
ICAgICAgaWYgKCEkNCB8fCAhJDQtPmlzU2ltcGxlKCkpCi0gICAgICAgICAgICAkJCA9IDA7Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2Vs
ZWN0b3IoKTsKLSAgICAgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xh
c3MpOwotCi0gICAgICAgICAgICBDU1NTZWxlY3RvclZlY3RvciBzZWxlY3RvclZlY3RvcjsKLSAg
ICAgICAgICAgIHNlbGVjdG9yVmVjdG9yLmFwcGVuZChwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVj
dG9yKCQ0KSk7Ci0gICAgICAgICAgICAkJC0+YWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvclZl
Y3Rvcik7Ci0KLSAgICAgICAgICAgICQyLmxvd2VyKCk7Ci0gICAgICAgICAgICAkJC0+c2V0VmFs
dWUoJDIpOwotICAgICAgICB9Ci0gICAgfQotICA7Ci0KLWRlY2xhcmF0aW9uX2xpc3Q6Ci0gICAg
ZGVjbGFyYXRpb24gewotICAgICAgICAkJCA9ICQxOwotICAgIH0KLSAgICB8IGRlY2xfbGlzdCBk
ZWNsYXJhdGlvbiB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgICAgIGlmICggJDIgKQotICAgICAg
ICAgICAgJCQgPSAkMjsKLSAgICB9Ci0gICAgfCBkZWNsX2xpc3QgewotICAgICAgICAkJCA9ICQx
OwotICAgIH0KLSAgICB8IGVycm9yIGludmFsaWRfYmxvY2tfbGlzdCBlcnJvciB7Ci0gICAgICAg
ICQkID0gZmFsc2U7Ci0gICAgfQotICAgIHwgZXJyb3IgewotICAgICAgICAkJCA9IGZhbHNlOwot
ICAgIH0KLSAgICB8IGRlY2xfbGlzdCBlcnJvciB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQot
ICAgIHwgZGVjbF9saXN0IGludmFsaWRfYmxvY2tfbGlzdCB7Ci0gICAgICAgICQkID0gJDE7Ci0g
ICAgfQotICAgIDsKLQotZGVjbF9saXN0OgotICAgIGRlY2xhcmF0aW9uICc7JyBtYXliZV9zcGFj
ZSB7Ci0gICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5U3RhcnQoKTsKLSAgICAgICAgJCQgPSAk
MTsKLSAgICB9Ci0gICAgfCBkZWNsYXJhdGlvbiBpbnZhbGlkX2Jsb2NrX2xpc3QgbWF5YmVfc3Bh
Y2UgewotICAgICAgICAkJCA9IGZhbHNlOwotICAgIH0KLSAgICB8IGRlY2xhcmF0aW9uIGludmFs
aWRfYmxvY2tfbGlzdCAnOycgbWF5YmVfc3BhY2UgewotICAgICAgICAkJCA9IGZhbHNlOwotICAg
IH0KLSAgICB8IGVycm9yICc7JyBtYXliZV9zcGFjZSB7Ci0gICAgICAgIHBhcnNlci0+bWFya1By
b3BlcnR5U3RhcnQoKTsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAgICB9Ci0gICAgfCBlcnJvciBp
bnZhbGlkX2Jsb2NrX2xpc3QgZXJyb3IgJzsnIG1heWJlX3NwYWNlIHsKLSAgICAgICAgJCQgPSBm
YWxzZTsKLSAgICB9Ci0gICAgfCBkZWNsX2xpc3QgZGVjbGFyYXRpb24gJzsnIG1heWJlX3NwYWNl
IHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlTdGFydCgpOwotICAgICAgICAkJCA9ICQx
OwotICAgICAgICBpZiAoJDIpCi0gICAgICAgICAgICAkJCA9ICQyOwotICAgIH0KLSAgICB8IGRl
Y2xfbGlzdCBlcnJvciAnOycgbWF5YmVfc3BhY2UgewotICAgICAgICBwYXJzZXItPm1hcmtQcm9w
ZXJ0eVN0YXJ0KCk7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAgIHwgZGVjbF9saXN0IGVy
cm9yIGludmFsaWRfYmxvY2tfbGlzdCBlcnJvciAnOycgbWF5YmVfc3BhY2UgewotICAgICAgICBw
YXJzZXItPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAg
IDsKLQotZGVjbGFyYXRpb246Ci0gICAgVkFSX0RFRklOSVRJT04gJzonIG1heWJlX3NwYWNlIGV4
cHIgcHJpbyB7Ci0jaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCi0gICAgICAgIHBhcnNlci0+c3Rv
cmVWYXJpYWJsZURlY2xhcmF0aW9uKCQxLCBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgk
NCksICQ1KTsKLSAgICAgICAgJCQgPSB0cnVlOwotICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0
eUVuZCgkNSwgdHJ1ZSk7Ci0jZWxzZQotICAgICAgICAkJCA9IGZhbHNlOwotI2VuZGlmCi0gICAg
fQotICAgIHwKLSAgICBwcm9wZXJ0eSAnOicgbWF5YmVfc3BhY2UgZXhwciBwcmlvIHsKLSAgICAg
ICAgJCQgPSBmYWxzZTsKLSAgICAgICAgYm9vbCBpc1Byb3BlcnR5UGFyc2VkID0gZmFsc2U7Ci0g
ICAgICAgIGlmICgkMSAmJiAkNCkgewotICAgICAgICAgICAgcGFyc2VyLT5tX3ZhbHVlTGlzdCA9
IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQ0KTsKLSAgICAgICAgICAgIGludCBvbGRQ
YXJzZWRQcm9wZXJ0aWVzID0gcGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKTsKLSAg
ICAgICAgICAgICQkID0gcGFyc2VyLT5wYXJzZVZhbHVlKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5
SUQ+KCQxKSwgJDUpOwotICAgICAgICAgICAgaWYgKCEkJCkKLSAgICAgICAgICAgICAgICBwYXJz
ZXItPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXMtPnNp
emUoKSAtIG9sZFBhcnNlZFByb3BlcnRpZXMpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIGlzUHJvcGVydHlQYXJzZWQgPSB0cnVlOwotICAgICAgICAgICAgcGFyc2VyLT5tX3Zh
bHVlTGlzdCA9IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVy
dHlFbmQoJDUsIGlzUHJvcGVydHlQYXJzZWQpOwotICAgIH0KLSAgICB8Ci0gICAgcHJvcGVydHkg
ZXJyb3IgewotICAgICAgICAkJCA9IGZhbHNlOwotICAgIH0KLSAgICB8Ci0gICAgcHJvcGVydHkg
JzonIG1heWJlX3NwYWNlIGVycm9yIGV4cHIgcHJpbyB7Ci0gICAgICAgIC8qIFRoZSBkZWZhdWx0
IG1vdmFibGUgdHlwZSB0ZW1wbGF0ZSBoYXMgbGV0dGVyLXNwYWNpbmc6IC5ub25lOyAgSGFuZGxl
IHRoaXMgYnkgbG9va2luZyBmb3IKLSAgICAgICAgZXJyb3IgdG9rZW5zIGF0IHRoZSBzdGFydCBv
ZiBhbiBleHByLCByZWNvdmVyIHRoZSBleHByIGFuZCB0aGVuIHRyZWF0IGFzIGFuIGVycm9yLCBj
bGVhbmluZwotICAgICAgICB1cCBhbmQgZGVsZXRpbmcgdGhlIHNoaWZ0ZWQgZXhwci4gICovCi0g
ICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5RW5kKGZhbHNlLCBmYWxzZSk7Ci0gICAgICAgICQk
ID0gZmFsc2U7Ci0gICAgfQotICAgIHwKLSAgICBwcm9wZXJ0eSAnOicgbWF5YmVfc3BhY2UgZXhw
ciBwcmlvIGVycm9yIHsKLSAgICAgICAgLyogV2hlbiB3ZSBlbmNvdW50ZXIgc29tZXRoaW5nIGxp
a2UgcCB7Y29sb3I6IHJlZCAhaW1wb3J0YW50IGZhaWw7fSB3ZSBzaG91bGQgZHJvcCB0aGUgZGVj
bGFyYXRpb24gKi8KLSAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlFbmQoZmFsc2UsIGZhbHNl
KTsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAgICB9Ci0gICAgfAotICAgIElNUE9SVEFOVF9TWU0g
bWF5YmVfc3BhY2UgewotICAgICAgICAvKiBIYW5kbGUgdGhpcyBjYXNlOiBkaXYgeyB0ZXh0LWFs
aWduOiBjZW50ZXI7ICFpbXBvcnRhbnQgfSBKdXN0IHJlZHVjZSBhd2F5IHRoZSBzdHJheSAhaW1w
b3J0YW50LiAqLwotICAgICAgICAkJCA9IGZhbHNlOwotICAgIH0KLSAgICB8Ci0gICAgcHJvcGVy
dHkgJzonIG1heWJlX3NwYWNlIHsKLSAgICAgICAgLyogZGl2IHsgZm9udC1mYW1pbHk6IH0gSnVz
dCByZWR1Y2UgYXdheSB0aGlzIHByb3BlcnR5IHdpdGggbm8gdmFsdWUuICovCi0gICAgICAgIHBh
cnNlci0+bWFya1Byb3BlcnR5RW5kKGZhbHNlLCBmYWxzZSk7Ci0gICAgICAgICQkID0gZmFsc2U7
Ci0gICAgfQotICAgIHwKLSAgICBwcm9wZXJ0eSAnOicgbWF5YmVfc3BhY2UgZXJyb3IgewotICAg
ICAgICAvKiBpZiB3ZSBjb21lIGFjcm9zcyBydWxlcyB3aXRoIGludmFsaWQgdmFsdWVzIGxpa2Ug
dGhpcyBjYXNlOiBwIHsgd2VpZ2h0OiAqOyB9LCBqdXN0IGRpc2NhcmQgdGhlIHJ1bGUgKi8KLSAg
ICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlFbmQoZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgJCQg
PSBmYWxzZTsKLSAgICB9Ci0gICAgfAotICAgIHByb3BlcnR5IGludmFsaWRfYmxvY2sgewotICAg
ICAgICAvKiBpZiB3ZSBjb21lIGFjcm9zczogZGl2IHsgY29sb3J7O2NvbG9yOm1hcm9vbn0gfSwg
aWdub3JlIGV2ZXJ5dGhpbmcgd2l0aGluIGN1cmx5IGJyYWNrZXRzICovCi0gICAgICAgICQkID0g
ZmFsc2U7Ci0gICAgfQotICA7Ci0KLXByb3BlcnR5OgotICAgIElERU5UIG1heWJlX3NwYWNlIHsK
LSAgICAgICAgJCQgPSBjc3NQcm9wZXJ0eUlEKCQxKTsKLSAgICB9Ci0gIDsKLQotcHJpbzoKLSAg
ICBJTVBPUlRBTlRfU1lNIG1heWJlX3NwYWNlIHsgJCQgPSB0cnVlOyB9Ci0gICAgfCAvKiBlbXB0
eSAqLyB7ICQkID0gZmFsc2U7IH0KLSAgOwotCi1leHByOgotICAgIHRlcm0gewotICAgICAgICAk
JCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdWYWx1ZUxpc3QoKTsKLSAgICAgICAgJCQtPmFkZFZh
bHVlKHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWUoJDEpKTsKLSAgICB9Ci0gICAgfCBleHByIG9w
ZXJhdG9yIHRlcm0gewotICAgICAgICAkJCA9ICQxOwotICAgICAgICBpZiAoJCQpIHsKLSAgICAg
ICAgICAgIGlmICgkMikgewotICAgICAgICAgICAgICAgIENTU1BhcnNlclZhbHVlIHY7Ci0gICAg
ICAgICAgICAgICAgdi5pZCA9IDA7Ci0gICAgICAgICAgICAgICAgdi51bml0ID0gQ1NTUGFyc2Vy
VmFsdWU6Ok9wZXJhdG9yOwotICAgICAgICAgICAgICAgIHYuaVZhbHVlID0gJDI7Ci0gICAgICAg
ICAgICAgICAgJCQtPmFkZFZhbHVlKHYpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgJCQt
PmFkZFZhbHVlKHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWUoJDMpKTsKLSAgICAgICAgfQotICAg
IH0KLSAgICB8IGV4cHIgaW52YWxpZF9ibG9ja19saXN0IHsKLSAgICAgICAgJCQgPSAwOwotICAg
IH0KLSAgICB8IGV4cHIgaW52YWxpZF9ibG9ja19saXN0IGVycm9yIHsKLSAgICAgICAgJCQgPSAw
OwotICAgIH0KLSAgICB8IGV4cHIgZXJyb3IgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICA7
Ci0KLW9wZXJhdG9yOgotICAgICcvJyBtYXliZV9zcGFjZSB7Ci0gICAgICAgICQkID0gJy8nOwot
ICAgIH0KLSAgfCAnLCcgbWF5YmVfc3BhY2UgewotICAgICAgICAkJCA9ICcsJzsKLSAgICB9Ci0g
IHwgLyogZW1wdHkgKi8gewotICAgICAgICAkJCA9IDA7Ci0gIH0KLSAgOwotCi10ZXJtOgotICB1
bmFyeV90ZXJtIHsgJCQgPSAkMTsgfQotICB8IHVuYXJ5X29wZXJhdG9yIHVuYXJ5X3Rlcm0geyAk
JCA9ICQyOyAkJC5mVmFsdWUgKj0gJDE7IH0KLSAgfCBTVFJJTkcgbWF5YmVfc3BhY2UgeyAkJC5p
ZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19T
VFJJTkc7IH0KLSAgfCBJREVOVCBtYXliZV9zcGFjZSB7Ci0gICAgICAkJC5pZCA9IGNzc1ZhbHVl
S2V5d29yZElEKCQxKTsKLSAgICAgICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lE
RU5UOwotICAgICAgJCQuc3RyaW5nID0gJDE7Ci0gIH0KLSAgLyogV2UgbWlnaHQgbmVlZCB0byBh
Y3R1YWxseSBwYXJzZSB0aGUgbnVtYmVyIGZyb20gYSBkaW1lbnNpb24sIGJ1dCB3ZSBjYW4ndCBq
dXN0IHB1dCBzb21ldGhpbmcgdGhhdCB1c2VzICQkLnN0cmluZyBpbnRvIHVuYXJ5X3Rlcm0uICov
Ci0gIHwgRElNRU4gbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51
bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ESU1FTlNJT047IH0KLSAgfCB1bmFyeV9vcGVy
YXRvciBESU1FTiBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDI7ICQkLnVu
aXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RJTUVOU0lPTjsgfQotICB8IFVSSSBtYXliZV9z
cGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1VSSTsgfQotICB8IFVOSUNPREVSQU5HRSBtYXliZV9zcGFjZSB7ICQkLmlkID0g
MDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VOSUNP
REVfUkFOR0U7IH0KLSAgfCBIRVggbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9
ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1I7IH0K
LSAgfCAnIycgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9IENTU1BhcnNlclN0
cmluZygpOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1I7
IH0gLyogSGFuZGxlIGVycm9yIGNhc2U6ICJjb2xvcjogIzsiICovCi0gIHwgVkFSRlVOQ1RJT04g
bWF5YmVfc3BhY2UgSURFTlQgJyknIG1heWJlX3NwYWNlIHsKLSNpZiBFTkFCTEUoQ1NTX1ZBUklB
QkxFUykKLSAgICAgICQkLmlkID0gMDsKLSAgICAgICQkLnN0cmluZyA9ICQzOwotICAgICAgJCQu
dW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVkFSSUFCTEVfTkFNRTsKLSNlbmRpZgotICB9
Ci0gIC8qIEZJWE1FOiBhY2NvcmRpbmcgdG8gdGhlIHNwZWNzIGEgZnVuY3Rpb24gY2FuIGhhdmUg
YSB1bmFyeV9vcGVyYXRvciBpbiBmcm9udC4gSSBrbm93IG5vIGNhc2Ugd2hlcmUgdGhpcyBtYWtl
cyBzZW5zZSAqLwotICB8IGZ1bmN0aW9uIHsKLSAgICAgICQkID0gJDE7Ci0gIH0KLSAgfCBjYWxj
X2Z1bmN0aW9uIHsKLSAgICAgICQkID0gJDE7Ci0gIH0KLSAgfCBtaW5fb3JfbWF4X2Z1bmN0aW9u
IHsKLSAgICAgICQkID0gJDE7Ci0gIH0KLSAgfCAnJScgbWF5YmVfc3BhY2UgeyAvKiBIYW5kbGUg
d2lkdGg6ICU7ICovCi0gICAgICAkJC5pZCA9IDA7ICQkLnVuaXQgPSAwOwotICB9Ci0gIDsKLQot
dW5hcnlfdGVybToKLSAgSU5URUdFUiBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuaXNJbnQg
PSB0cnVlOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
TlVNQkVSOyB9Ci0gIHwgRkxPQVRUT0tFTiBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuaXNJ
bnQgPSBmYWxzZTsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX05VTUJFUjsgfQotICB8IFBFUkNFTlRBR0UgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQk
LmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdF
OyB9Ci0gIHwgUFhTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQu
dW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFg7IH0KLSAgfCBDTVMgbWF5YmVfc3BhY2Ug
eyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19DTTsgfQotICB8IE1NUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0g
JDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01NOyB9Ci0gIHwgSU5TIG1heWJl
X3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfSU47IH0KLSAgfCBQVFMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZW
YWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QVDsgfQotICB8IFBD
UyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1BDOyB9Ci0gIHwgREVHUyBtYXliZV9zcGFjZSB7ICQkLmlkID0g
MDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRzsg
fQotICB8IFJBRFMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51
bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SQUQ7IH0KLSAgfCBHUkFEUyBtYXliZV9zcGFj
ZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX0dSQUQ7IH0KLSAgfCBUVVJOUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZh
bHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1RVUk47IH0KLSAgfCBN
U0VDUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01TOyB9Ci0gIHwgU0VDUyBtYXliZV9zcGFjZSB7ICQkLmlk
ID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1M7
IH0KLSAgfCBIRVJUWiBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQk
LnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0haOyB9Ci0gIHwgS0hFUlRaIG1heWJlX3Nw
YWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfS0haOyB9Ci0gIHwgRU1TIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFs
dWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TOyB9Ci0gIHwgUUVN
UyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQ
YXJzZXJWYWx1ZTo6UV9FTVM7IH0KLSAgfCBFWFMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQk
LmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FWFM7IH0KLSAg
fCBSRU1TIG1heWJlX3NwYWNlIHsKLSAgICAgICQkLmlkID0gMDsKLSAgICAgICQkLmZWYWx1ZSA9
ICQxOwotICAgICAgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkVNUzsKLSAgICAg
IGlmIChwYXJzZXItPm1fc3R5bGVTaGVldCkKLSAgICAgICAgICBwYXJzZXItPm1fc3R5bGVTaGVl
dC0+cGFyc2VyU2V0VXNlc1JlbVVuaXRzKHRydWUpOwotICB9Ci0gIHwgVlcgbWF5YmVfc3BhY2Ug
eyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19WVzsgfQotICB8IFZIIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAk
MTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVkg7IH0KLSAgfCBWTUlOIG1heWJl
X3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfVk1JTjsgfQotICB8IERQUFggbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQk
LmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19EUFBYOyB9Ci0g
IHwgRFBJIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRFBJOyB9Ci0gIHwgRFBDTSBtYXliZV9zcGFjZSB7ICQk
LmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X0RQQ007IH0KLSAgOwotCi1mdW5jdGlvbjoKLSAgICBGVU5DVElPTiBtYXliZV9zcGFjZSBleHBy
ICcpJyBtYXliZV9zcGFjZSB7Ci0gICAgICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2Vy
LT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7Ci0gICAgICAgIGYtPm5hbWUgPSAkMTsKLSAgICAg
ICAgZi0+YXJncyA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQzKTsKLSAgICAgICAg
JCQuaWQgPSAwOwotICAgICAgICAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uOwot
ICAgICAgICAkJC5mdW5jdGlvbiA9IGY7Ci0gICAgfSB8Ci0gICAgRlVOQ1RJT04gbWF5YmVfc3Bh
Y2UgZXhwciBUT0tFTl9FT0YgewotICAgICAgICBDU1NQYXJzZXJGdW5jdGlvbiogZiA9IHBhcnNl
ci0+Y3JlYXRlRmxvYXRpbmdGdW5jdGlvbigpOwotICAgICAgICBmLT5uYW1lID0gJDE7Ci0gICAg
ICAgIGYtPmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkMyk7Ci0gICAgICAg
ICQkLmlkID0gMDsKLSAgICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsK
LSAgICAgICAgJCQuZnVuY3Rpb24gPSBmOwotICAgIH0gfAotICAgIEZVTkNUSU9OIG1heWJlX3Nw
YWNlICcpJyBtYXliZV9zcGFjZSB7Ci0gICAgICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFy
c2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7Ci0gICAgICAgIGYtPm5hbWUgPSAkMTsKLSAg
ICAgICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBwYXJzZXItPmNyZWF0ZUZsb2F0
aW5nVmFsdWVMaXN0KCk7Ci0gICAgICAgIGYtPmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1Zh
bHVlTGlzdCh2YWx1ZUxpc3QpOwotICAgICAgICAkJC5pZCA9IDA7Ci0gICAgICAgICQkLnVuaXQg
PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb247Ci0gICAgICAgICQkLmZ1bmN0aW9uID0gZjsKLSAg
ICB9IHwKLSAgICBGVU5DVElPTiBtYXliZV9zcGFjZSBlcnJvciB7Ci0gICAgICAgIENTU1BhcnNl
ckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7Ci0gICAgICAg
IGYtPm5hbWUgPSAkMTsKLSAgICAgICAgZi0+YXJncyA9IG51bGxwdHI7Ci0gICAgICAgICQkLmlk
ID0gMDsKLSAgICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKLSAgICAg
ICAgJCQuZnVuY3Rpb24gPSBmOwotICB9Ci0gIDsKLSAKLWNhbGNfZnVuY190ZXJtOgotICB1bmFy
eV90ZXJtIHsgJCQgPSAkMTsgfQotICB8IHVuYXJ5X29wZXJhdG9yIHVuYXJ5X3Rlcm0geyAkJCA9
ICQyOyAkJC5mVmFsdWUgKj0gJDE7IH0KLSAgOwotCi1jYWxjX2Z1bmNfb3BlcmF0b3I6Ci0gICAg
JysnIFdISVRFU1BBQ0UgewotICAgICAgICAkJCA9ICcrJzsKLSAgICB9Ci0gICAgfCAnLScgV0hJ
VEVTUEFDRSB7Ci0gICAgICAgICQkID0gJy0nOwotICAgIH0KLSAgICB8ICcqJyBtYXliZV9zcGFj
ZSB7Ci0gICAgICAgICQkID0gJyonOwotICAgIH0KLSAgICB8ICcvJyBtYXliZV9zcGFjZSB7Ci0g
ICAgICAgICQkID0gJy8nOwotICAgIH0KLSAgOwotCi1jYWxjX2Z1bmNfcGFyZW5fZXhwcjoKLSAg
ICAnKCcgbWF5YmVfc3BhY2UgY2FsY19mdW5jX2V4cHIgbWF5YmVfc3BhY2UgJyknIG1heWJlX3Nw
YWNlIHsKLSAgICAgICAgaWYgKCQzKSB7Ci0gICAgICAgICAgICAkJCA9ICQzOwotICAgICAgICAg
ICAgQ1NTUGFyc2VyVmFsdWUgdjsKLSAgICAgICAgICAgIHYuaWQgPSAwOwotICAgICAgICAgICAg
di51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOwotICAgICAgICAgICAgdi5pVmFsdWUg
PSAnKCc7Ci0gICAgICAgICAgICAkJC0+aW5zZXJ0VmFsdWVBdCgwLCB2KTsKLSAgICAgICAgICAg
IHYuaVZhbHVlID0gJyknOwotICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHYpOwotICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgICQkID0gMDsKLSAgICB9Ci0KLWNhbGNfZnVuY19leHByOgotICAg
IGNhbGNfZnVuY190ZXJtIG1heWJlX3NwYWNlIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0
ZUZsb2F0aW5nVmFsdWVMaXN0KCk7Ci0gICAgICAgICQkLT5hZGRWYWx1ZShwYXJzZXItPnNpbmtG
bG9hdGluZ1ZhbHVlKCQxKSk7Ci0gICAgfQotICAgIHwgY2FsY19mdW5jX2V4cHIgY2FsY19mdW5j
X29wZXJhdG9yIGNhbGNfZnVuY190ZXJtIHsKLSAgICAgICAgaWYgKCQxICYmICQyKSB7Ci0gICAg
ICAgICAgICAkJCA9ICQxOwotICAgICAgICAgICAgQ1NTUGFyc2VyVmFsdWUgdjsKLSAgICAgICAg
ICAgIHYuaWQgPSAwOwotICAgICAgICAgICAgdi51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJh
dG9yOwotICAgICAgICAgICAgdi5pVmFsdWUgPSAkMjsKLSAgICAgICAgICAgICQkLT5hZGRWYWx1
ZSh2KTsKLSAgICAgICAgICAgICQkLT5hZGRWYWx1ZShwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVl
KCQzKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgJCQgPSAwOwotCi0gICAgfQotICAg
IHwgY2FsY19mdW5jX2V4cHIgY2FsY19mdW5jX29wZXJhdG9yIGNhbGNfZnVuY19wYXJlbl9leHBy
IHsKLSAgICAgICAgaWYgKCQxICYmICQyICYmICQzKSB7Ci0gICAgICAgICAgICAkJCA9ICQxOwot
ICAgICAgICAgICAgQ1NTUGFyc2VyVmFsdWUgdjsKLSAgICAgICAgICAgIHYuaWQgPSAwOwotICAg
ICAgICAgICAgdi51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOwotICAgICAgICAgICAg
di5pVmFsdWUgPSAkMjsKLSAgICAgICAgICAgICQkLT5hZGRWYWx1ZSh2KTsKLSAgICAgICAgICAg
ICQkLT5leHRlbmQoKigkMykpOwotICAgICAgICB9IGVsc2UgCi0gICAgICAgICAgICAkJCA9IDA7
Ci0gICAgfQotICAgIHwgY2FsY19mdW5jX3BhcmVuX2V4cHIKLSAgICB8IGNhbGNfZnVuY19leHBy
IGVycm9yIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgOwotCi1jYWxjX2Z1bmNfZXhwcl9s
aXN0OgotICAgIGNhbGNfZnVuY19leHByICB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfSAgICAK
LSAgICB8IGNhbGNfZnVuY19leHByX2xpc3QgJywnIG1heWJlX3NwYWNlIGNhbGNfZnVuY19leHBy
IHsKLSAgICAgICAgaWYgKCQxICYmICQ0KSB7Ci0gICAgICAgICAgICAkJCA9ICQxOwotICAgICAg
ICAgICAgQ1NTUGFyc2VyVmFsdWUgdjsKLSAgICAgICAgICAgIHYuaWQgPSAwOwotICAgICAgICAg
ICAgdi51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOwotICAgICAgICAgICAgdi5pVmFs
dWUgPSAnLCc7Ci0gICAgICAgICAgICAkJC0+YWRkVmFsdWUodik7Ci0gICAgICAgICAgICAkJC0+
ZXh0ZW5kKCooJDQpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAg
fQotICAgIAotCi1jYWxjX2Z1bmN0aW9uOgotICAgIENBTENGVU5DVElPTiBtYXliZV9zcGFjZSBj
YWxjX2Z1bmNfZXhwciAnKScgbWF5YmVfc3BhY2UgewotICAgICAgICBDU1NQYXJzZXJGdW5jdGlv
biogZiA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdGdW5jdGlvbigpOwotICAgICAgICBmLT5uYW1l
ID0gJDE7Ci0gICAgICAgIGYtPmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgk
Myk7Ci0gICAgICAgICQkLmlkID0gMDsKLSAgICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVl
OjpGdW5jdGlvbjsKLSAgICAgICAgJCQuZnVuY3Rpb24gPSBmOwotICAgIH0KLSAgICB8IENBTENG
VU5DVElPTiBtYXliZV9zcGFjZSBlcnJvciB7Ci0gICAgICAgIFlZRVJST1I7Ci0gICAgfQotICAg
IDsKLQotCi1taW5fb3JfbWF4OgotICAgIE1JTkZVTkNUSU9OIHsKLSAgICAgICAgJCQgPSAkMTsK
LSAgICB9Ci0gICAgfCBNQVhGVU5DVElPTiB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAg
IDsKLQotbWluX29yX21heF9mdW5jdGlvbjoKLSAgICBtaW5fb3JfbWF4IG1heWJlX3NwYWNlIGNh
bGNfZnVuY19leHByX2xpc3QgJyknIG1heWJlX3NwYWNlIHsKLSAgICAgICAgQ1NTUGFyc2VyRnVu
Y3Rpb24qIGYgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsKLSAgICAgICAgZi0+
bmFtZSA9ICQxOwotICAgICAgICBmLT5hcmdzID0gcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxp
c3QoJDMpOwotICAgICAgICAkJC5pZCA9IDA7Ci0gICAgICAgICQkLnVuaXQgPSBDU1NQYXJzZXJW
YWx1ZTo6RnVuY3Rpb247Ci0gICAgICAgICQkLmZ1bmN0aW9uID0gZjsKLSAgICB9IAotICAgIHwg
bWluX29yX21heCBtYXliZV9zcGFjZSBlcnJvciB7Ci0gICAgICAgIFlZRVJST1I7Ci0gICAgfQot
ICAgIDsKLQotLyogZXJyb3IgaGFuZGxpbmcgcnVsZXMgKi8KLQotc2F2ZV9ibG9jazoKLSAgICBj
bG9zaW5nX2JyYWNlIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgfCBlcnJvciBjbG9zaW5n
X2JyYWNlIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICA7Ci0KLWludmFsaWRfYXQ6Ci0g
ICAgQVRLRVlXT1JEIGVycm9yIGludmFsaWRfYmxvY2sgewotICAgICAgICAkJCA9IDA7Ci0gICAg
fQotICB8IEFUS0VZV09SRCBlcnJvciAnOycgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAg
IDsKLQotaW52YWxpZF9ydWxlOgotICAgIGVycm9yIGludmFsaWRfYmxvY2sgewotICAgICAgICAk
JCA9IDA7Ci0gICAgfQotCi0vKgotICBTZWVtcyBsaWtlIHRoZSB0d28gcnVsZXMgYmVsb3cgYXJl
IHRyeWluZyB0b28gbXVjaCBhbmQgdmlvbGF0aW5nCi0gIGh0dHA6Ly93d3cuaGl4aWUuY2gvdGVz
dHMvZXZpbC9taXhlZC9jc3NlcnJvcmhhbmRsaW5nLmh0bWwKLQotICB8IGVycm9yICc7JyB7Ci0g
ICAgICAgICQkID0gMDsKLSAgICB9Ci0gIHwgZXJyb3IgJ30nIHsKLSAgICAgICAgJCQgPSAwOwot
ICAgIH0KLSovCi0gICAgOwotCi1pbnZhbGlkX2Jsb2NrOgotICAgICd7JyBlcnJvciBpbnZhbGlk
X2Jsb2NrX2xpc3QgZXJyb3IgY2xvc2luZ19icmFjZSB7Ci0gICAgICAgIHBhcnNlci0+aW52YWxp
ZEJsb2NrSGl0KCk7Ci0gICAgfQotICB8ICd7JyBlcnJvciBjbG9zaW5nX2JyYWNlIHsKLSAgICAg
ICAgcGFyc2VyLT5pbnZhbGlkQmxvY2tIaXQoKTsKLSAgICB9Ci0gICAgOwotCi1pbnZhbGlkX2Js
b2NrX2xpc3Q6Ci0gICAgaW52YWxpZF9ibG9jawotICB8IGludmFsaWRfYmxvY2tfbGlzdCBlcnJv
ciBpbnZhbGlkX2Jsb2NrCi07Ci0KLSUlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTR3JhbW1hci55LmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jYzc5MTI5YWVkZWViY2FmMDQ5NTEzMGM0NmQ1OTdjZTFkZWJhMDBhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgpAQCAtMCwwICsx
LDE2OTUgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDAyLTIwMDMgTGFycyBLbm9sbCAoa25v
bGxAa2RlLm9yZykKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHly
aWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgKgorICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAw
MjExMC0xMzAxICBVU0EKKyAqCisgKi8KKworJXB1cmVfcGFyc2VyCisKKyVwYXJzZS1wYXJhbSB7
IENTU1BhcnNlciogcGFyc2VyIH0KKyVsZXgtcGFyYW0geyBDU1NQYXJzZXIqIHBhcnNlciB9CisK
KyV1bmlvbiB7CisgICAgYm9vbCBib29sZWFuOworICAgIGNoYXIgY2hhcmFjdGVyOworICAgIGlu
dCBpbnRlZ2VyOworICAgIGRvdWJsZSBudW1iZXI7CisgICAgQ1NTUGFyc2VyU3RyaW5nIHN0cmlu
ZzsKKworICAgIFN0eWxlUnVsZUJhc2UqIHJ1bGU7CisgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1
bGVCYXNlPiA+KiBydWxlTGlzdDsKKyAgICBDU1NQYXJzZXJTZWxlY3Rvciogc2VsZWN0b3I7Cisg
ICAgQ1NTU2VsZWN0b3JWZWN0b3IqIHNlbGVjdG9yTGlzdDsKKyAgICBDU1NTZWxlY3Rvcjo6TWFy
Z2luQm94VHlwZSBtYXJnaW5Cb3g7CisgICAgQ1NTU2VsZWN0b3I6OlJlbGF0aW9uIHJlbGF0aW9u
OworICAgIE1lZGlhUXVlcnlTZXQqIG1lZGlhTGlzdDsKKyAgICBNZWRpYVF1ZXJ5KiBtZWRpYVF1
ZXJ5OworICAgIE1lZGlhUXVlcnk6OlJlc3RyaWN0b3IgbWVkaWFRdWVyeVJlc3RyaWN0b3I7Cisg
ICAgTWVkaWFRdWVyeUV4cCogbWVkaWFRdWVyeUV4cDsKKyAgICBDU1NQYXJzZXJWYWx1ZSB2YWx1
ZTsKKyAgICBDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlTGlzdDsKKyAgICBWZWN0b3I8T3duUHRy
PE1lZGlhUXVlcnlFeHA+ID4qIG1lZGlhUXVlcnlFeHBMaXN0OworICAgIFN0eWxlS2V5ZnJhbWUq
IGtleWZyYW1lOworICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVLZXlmcmFtZT4gPioga2V5ZnJhbWVS
dWxlTGlzdDsKKyAgICBmbG9hdCB2YWw7CisgICAgQ1NTUHJvcGVydHlJRCBpZDsKK30KKworJXsK
Kworc3RhdGljIGlubGluZSBpbnQgY3NzeXllcnJvcih2b2lkKiwgY29uc3QgY2hhciopCit7Cisg
ICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQgY3NzeXlsZXgoWVlTVFlQRSogeXlsdmFsLCBD
U1NQYXJzZXIqIHBhcnNlcikKK3sKKyAgICByZXR1cm4gcGFyc2VyLT5sZXgoeXlsdmFsKTsKK30K
KworJX0KKworJWV4cGVjdCA2MgorCislbm9uYXNzb2MgTE9XRVNUX1BSRUMKKworJWxlZnQgVU5J
TVBPUlRBTlRfVE9LCisKKyV0b2tlbiBXSElURVNQQUNFIFNHTUxfQ0QKKyV0b2tlbiBUT0tFTl9F
T0YgMAorCisldG9rZW4gSU5DTFVERVMKKyV0b2tlbiBEQVNITUFUQ0gKKyV0b2tlbiBCRUdJTlNX
SVRICisldG9rZW4gRU5EU1dJVEgKKyV0b2tlbiBDT05UQUlOUworCisldG9rZW4gPHN0cmluZz4g
U1RSSU5HCislcmlnaHQgPHN0cmluZz4gSURFTlQKKyV0b2tlbiA8c3RyaW5nPiBOVEgKKworJW5v
bmFzc29jIDxzdHJpbmc+IEhFWAorJW5vbmFzc29jIDxzdHJpbmc+IElEU0VMCislbm9uYXNzb2Mg
JzonCislbm9uYXNzb2MgJy4nCislbm9uYXNzb2MgJ1snCislbm9uYXNzb2MgPHN0cmluZz4gJyon
Cislbm9uYXNzb2MgZXJyb3IKKyVsZWZ0ICd8JworCisldG9rZW4gSU1QT1JUX1NZTQorJXRva2Vu
IFBBR0VfU1lNCisldG9rZW4gTUVESUFfU1lNCisldG9rZW4gRk9OVF9GQUNFX1NZTQorJXRva2Vu
IENIQVJTRVRfU1lNCisldG9rZW4gTkFNRVNQQUNFX1NZTQorJXRva2VuIFZBUkZVTkNUSU9OCisl
dG9rZW4gV0VCS0lUX1JVTEVfU1lNCisldG9rZW4gV0VCS0lUX0RFQ0xTX1NZTQorJXRva2VuIFdF
QktJVF9LRVlGUkFNRV9SVUxFX1NZTQorJXRva2VuIFdFQktJVF9LRVlGUkFNRVNfU1lNCisldG9r
ZW4gV0VCS0lUX1ZBTFVFX1NZTQorJXRva2VuIFdFQktJVF9NRURJQVFVRVJZX1NZTQorJXRva2Vu
IFdFQktJVF9TRUxFQ1RPUl9TWU0KKyV0b2tlbiBXRUJLSVRfUkVHSU9OX1JVTEVfU1lNCisldG9r
ZW4gPG1hcmdpbkJveD4gVE9QTEVGVENPUk5FUl9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBUT1BM
RUZUX1NZTQorJXRva2VuIDxtYXJnaW5Cb3g+IFRPUENFTlRFUl9TWU0KKyV0b2tlbiA8bWFyZ2lu
Qm94PiBUT1BSSUdIVF9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBUT1BSSUdIVENPUk5FUl9TWU0K
KyV0b2tlbiA8bWFyZ2luQm94PiBCT1RUT01MRUZUQ09STkVSX1NZTQorJXRva2VuIDxtYXJnaW5C
b3g+IEJPVFRPTUxFRlRfU1lNCisldG9rZW4gPG1hcmdpbkJveD4gQk9UVE9NQ0VOVEVSX1NZTQor
JXRva2VuIDxtYXJnaW5Cb3g+IEJPVFRPTVJJR0hUX1NZTQorJXRva2VuIDxtYXJnaW5Cb3g+IEJP
VFRPTVJJR0hUQ09STkVSX1NZTQorJXRva2VuIDxtYXJnaW5Cb3g+IExFRlRUT1BfU1lNCisldG9r
ZW4gPG1hcmdpbkJveD4gTEVGVE1JRERMRV9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBMRUZUQk9U
VE9NX1NZTQorJXRva2VuIDxtYXJnaW5Cb3g+IFJJR0hUVE9QX1NZTQorJXRva2VuIDxtYXJnaW5C
b3g+IFJJR0hUTUlERExFX1NZTQorJXRva2VuIDxtYXJnaW5Cb3g+IFJJR0hUQk9UVE9NX1NZTQor
CisldG9rZW4gQVRLRVlXT1JECisKKyV0b2tlbiBJTVBPUlRBTlRfU1lNCisldG9rZW4gTUVESUFf
T05MWQorJXRva2VuIE1FRElBX05PVAorJXRva2VuIE1FRElBX0FORAorCisldG9rZW4gPG51bWJl
cj4gUkVNUworJXRva2VuIDxudW1iZXI+IFFFTVMKKyV0b2tlbiA8bnVtYmVyPiBFTVMKKyV0b2tl
biA8bnVtYmVyPiBFWFMKKyV0b2tlbiA8bnVtYmVyPiBQWFMKKyV0b2tlbiA8bnVtYmVyPiBDTVMK
KyV0b2tlbiA8bnVtYmVyPiBNTVMKKyV0b2tlbiA8bnVtYmVyPiBJTlMKKyV0b2tlbiA8bnVtYmVy
PiBQVFMKKyV0b2tlbiA8bnVtYmVyPiBQQ1MKKyV0b2tlbiA8bnVtYmVyPiBERUdTCisldG9rZW4g
PG51bWJlcj4gUkFEUworJXRva2VuIDxudW1iZXI+IEdSQURTCisldG9rZW4gPG51bWJlcj4gVFVS
TlMKKyV0b2tlbiA8bnVtYmVyPiBNU0VDUworJXRva2VuIDxudW1iZXI+IFNFQ1MKKyV0b2tlbiA8
bnVtYmVyPiBIRVJUWgorJXRva2VuIDxudW1iZXI+IEtIRVJUWgorJXRva2VuIDxzdHJpbmc+IERJ
TUVOCisldG9rZW4gPHN0cmluZz4gSU5WQUxJRERJTUVOCisldG9rZW4gPG51bWJlcj4gUEVSQ0VO
VEFHRQorJXRva2VuIDxudW1iZXI+IEZMT0FUVE9LRU4KKyV0b2tlbiA8bnVtYmVyPiBJTlRFR0VS
CisldG9rZW4gPG51bWJlcj4gVlcKKyV0b2tlbiA8bnVtYmVyPiBWSAorJXRva2VuIDxudW1iZXI+
IFZNSU4KKyV0b2tlbiA8bnVtYmVyPiBEUFBYCisldG9rZW4gPG51bWJlcj4gRFBJCisldG9rZW4g
PG51bWJlcj4gRFBDTQorCisldG9rZW4gPHN0cmluZz4gVVJJCisldG9rZW4gPHN0cmluZz4gRlVO
Q1RJT04KKyV0b2tlbiA8c3RyaW5nPiBBTllGVU5DVElPTgorJXRva2VuIDxzdHJpbmc+IE5PVEZV
TkNUSU9OCisldG9rZW4gPHN0cmluZz4gQ0FMQ0ZVTkNUSU9OCisldG9rZW4gPHN0cmluZz4gTUlO
RlVOQ1RJT04KKyV0b2tlbiA8c3RyaW5nPiBNQVhGVU5DVElPTgorJXRva2VuIDxzdHJpbmc+IFZB
Ul9ERUZJTklUSU9OCisKKyV0b2tlbiA8c3RyaW5nPiBVTklDT0RFUkFOR0UKKworJXR5cGUgPHJl
bGF0aW9uPiBjb21iaW5hdG9yCisKKyV0eXBlIDxydWxlPiBjaGFyc2V0CisldHlwZSA8cnVsZT4g
aWdub3JlZF9jaGFyc2V0CisldHlwZSA8cnVsZT4gcnVsZXNldAorJXR5cGUgPHJ1bGU+IG1lZGlh
CisldHlwZSA8cnVsZT4gaW1wb3J0CisldHlwZSA8cnVsZT4gbmFtZXNwYWNlCisldHlwZSA8cnVs
ZT4gcGFnZQorJXR5cGUgPHJ1bGU+IG1hcmdpbl9ib3gKKyV0eXBlIDxydWxlPiBmb250X2ZhY2UK
KyV0eXBlIDxydWxlPiBrZXlmcmFtZXMKKyV0eXBlIDxydWxlPiBpbnZhbGlkX3J1bGUKKyV0eXBl
IDxydWxlPiBzYXZlX2Jsb2NrCisldHlwZSA8cnVsZT4gaW52YWxpZF9hdAorJXR5cGUgPHJ1bGU+
IHJ1bGUKKyV0eXBlIDxydWxlPiB2YWxpZF9ydWxlCisldHlwZSA8cnVsZUxpc3Q+IGJsb2NrX3J1
bGVfbGlzdCAKKyV0eXBlIDxydWxlPiBibG9ja19ydWxlCisldHlwZSA8cnVsZT4gYmxvY2tfdmFs
aWRfcnVsZQorJXR5cGUgPHJ1bGU+IHJlZ2lvbgorCisldHlwZSA8c3RyaW5nPiBtYXliZV9uc19w
cmVmaXgKKworJXR5cGUgPHN0cmluZz4gbmFtZXNwYWNlX3NlbGVjdG9yCisKKyV0eXBlIDxzdHJp
bmc+IHN0cmluZ19vcl91cmkKKyV0eXBlIDxzdHJpbmc+IGlkZW50X29yX3N0cmluZworJXR5cGUg
PHN0cmluZz4gbWVkaXVtCisldHlwZSA8bWFyZ2luQm94PiBtYXJnaW5fc3ltCisKKyV0eXBlIDxz
dHJpbmc+IG1lZGlhX2ZlYXR1cmUKKyV0eXBlIDxtZWRpYUxpc3Q+IG1lZGlhX2xpc3QKKyV0eXBl
IDxtZWRpYUxpc3Q+IG1heWJlX21lZGlhX2xpc3QKKyV0eXBlIDxtZWRpYVF1ZXJ5PiBtZWRpYV9x
dWVyeQorJXR5cGUgPG1lZGlhUXVlcnlSZXN0cmljdG9yPiBtYXliZV9tZWRpYV9yZXN0cmljdG9y
CisldHlwZSA8dmFsdWVMaXN0PiBtYXliZV9tZWRpYV92YWx1ZQorJXR5cGUgPG1lZGlhUXVlcnlF
eHA+IG1lZGlhX3F1ZXJ5X2V4cAorJXR5cGUgPG1lZGlhUXVlcnlFeHBMaXN0PiBtZWRpYV9xdWVy
eV9leHBfbGlzdAorJXR5cGUgPG1lZGlhUXVlcnlFeHBMaXN0PiBtYXliZV9hbmRfbWVkaWFfcXVl
cnlfZXhwX2xpc3QKKworJXR5cGUgPHN0cmluZz4ga2V5ZnJhbWVfbmFtZQorJXR5cGUgPGtleWZy
YW1lPiBrZXlmcmFtZV9ydWxlCisldHlwZSA8a2V5ZnJhbWVSdWxlTGlzdD4ga2V5ZnJhbWVzX3J1
bGUKKyV0eXBlIDx2YWx1ZUxpc3Q+IGtleV9saXN0CisldHlwZSA8dmFsdWU+IGtleQorCisldHlw
ZSA8aWQ+IHByb3BlcnR5CisKKyV0eXBlIDxzZWxlY3Rvcj4gc3BlY2lmaWVyCisldHlwZSA8c2Vs
ZWN0b3I+IHNwZWNpZmllcl9saXN0CisldHlwZSA8c2VsZWN0b3I+IHNpbXBsZV9zZWxlY3Rvcgor
JXR5cGUgPHNlbGVjdG9yPiBzZWxlY3RvcgorJXR5cGUgPHNlbGVjdG9yTGlzdD4gc2VsZWN0b3Jf
bGlzdAorJXR5cGUgPHNlbGVjdG9yTGlzdD4gc2ltcGxlX3NlbGVjdG9yX2xpc3QKKyV0eXBlIDxz
ZWxlY3Rvckxpc3Q+IHJlZ2lvbl9zZWxlY3RvcgorJXR5cGUgPHNlbGVjdG9yPiBzZWxlY3Rvcl93
aXRoX3RyYWlsaW5nX3doaXRlc3BhY2UKKyV0eXBlIDxzZWxlY3Rvcj4gY2xhc3MKKyV0eXBlIDxz
ZWxlY3Rvcj4gYXR0cmliCisldHlwZSA8c2VsZWN0b3I+IHBzZXVkbworJXR5cGUgPHNlbGVjdG9y
PiBwc2V1ZG9fcGFnZQorJXR5cGUgPHNlbGVjdG9yPiBwYWdlX3NlbGVjdG9yCisKKyV0eXBlIDxi
b29sZWFuPiBkZWNsYXJhdGlvbl9saXN0CisldHlwZSA8Ym9vbGVhbj4gZGVjbF9saXN0CisldHlw
ZSA8Ym9vbGVhbj4gZGVjbGFyYXRpb24KKyV0eXBlIDxib29sZWFuPiBkZWNsYXJhdGlvbnNfYW5k
X21hcmdpbnMKKworJXR5cGUgPGJvb2xlYW4+IHByaW8KKworJXR5cGUgPGludGVnZXI+IG1hdGNo
CisldHlwZSA8aW50ZWdlcj4gdW5hcnlfb3BlcmF0b3IKKyV0eXBlIDxpbnRlZ2VyPiBtYXliZV91
bmFyeV9vcGVyYXRvcgorJXR5cGUgPGNoYXJhY3Rlcj4gb3BlcmF0b3IKKworJXR5cGUgPHZhbHVl
TGlzdD4gZXhwcgorJXR5cGUgPHZhbHVlPiB0ZXJtCisldHlwZSA8dmFsdWU+IHVuYXJ5X3Rlcm0K
KyV0eXBlIDx2YWx1ZT4gZnVuY3Rpb24KKyV0eXBlIDx2YWx1ZT4gY2FsY19mdW5jX3Rlcm0KKyV0
eXBlIDxjaGFyYWN0ZXI+IGNhbGNfZnVuY19vcGVyYXRvcgorJXR5cGUgPHZhbHVlTGlzdD4gY2Fs
Y19mdW5jX2V4cHIKKyV0eXBlIDx2YWx1ZUxpc3Q+IGNhbGNfZnVuY19leHByX2xpc3QKKyV0eXBl
IDx2YWx1ZUxpc3Q+IGNhbGNfZnVuY19wYXJlbl9leHByCisldHlwZSA8dmFsdWU+IGNhbGNfZnVu
Y3Rpb24KKyV0eXBlIDxzdHJpbmc+IG1pbl9vcl9tYXgKKyV0eXBlIDx2YWx1ZT4gbWluX29yX21h
eF9mdW5jdGlvbgorCisldHlwZSA8c3RyaW5nPiBlbGVtZW50X25hbWUKKyV0eXBlIDxzdHJpbmc+
IGF0dHJfbmFtZQorCislJQorCitzdHlsZXNoZWV0OgorICAgIG1heWJlX3NwYWNlIG1heWJlX2No
YXJzZXQgbWF5YmVfc2dtbCBydWxlX2xpc3QKKyAgfCB3ZWJraXRfcnVsZSBtYXliZV9zcGFjZQor
ICB8IHdlYmtpdF9kZWNscyBtYXliZV9zcGFjZQorICB8IHdlYmtpdF92YWx1ZSBtYXliZV9zcGFj
ZQorICB8IHdlYmtpdF9tZWRpYXF1ZXJ5IG1heWJlX3NwYWNlCisgIHwgd2Via2l0X3NlbGVjdG9y
IG1heWJlX3NwYWNlCisgIHwgd2Via2l0X2tleWZyYW1lX3J1bGUgbWF5YmVfc3BhY2UKKyAgOwor
Cit3ZWJraXRfcnVsZToKKyAgICBXRUJLSVRfUlVMRV9TWU0gJ3snIG1heWJlX3NwYWNlIHZhbGlk
X3J1bGUgbWF5YmVfc3BhY2UgJ30nIHsKKyAgICAgICAgcGFyc2VyLT5tX3J1bGUgPSAkNDsKKyAg
ICB9Cis7CisKK3dlYmtpdF9rZXlmcmFtZV9ydWxlOgorICAgIFdFQktJVF9LRVlGUkFNRV9SVUxF
X1NZTSAneycgbWF5YmVfc3BhY2Uga2V5ZnJhbWVfcnVsZSBtYXliZV9zcGFjZSAnfScgeworICAg
ICAgICBwYXJzZXItPm1fa2V5ZnJhbWUgPSAkNDsKKyAgICB9Cis7CisKK3dlYmtpdF9kZWNsczoK
KyAgICBXRUJLSVRfREVDTFNfU1lNICd7JyBtYXliZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRpb24g
ZGVjbGFyYXRpb25fbGlzdCAnfScgeworICAgICAgICAvKiBjYW4gYmUgZW1wdHkgKi8KKyAgICB9
Cis7CisKK3dlYmtpdF92YWx1ZToKKyAgICBXRUJLSVRfVkFMVUVfU1lNICd7JyBtYXliZV9zcGFj
ZSBleHByICd9JyB7CisgICAgICAgIGlmICgkNCkgeworICAgICAgICAgICAgcGFyc2VyLT5tX3Zh
bHVlTGlzdCA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQ0KTsKKyAgICAgICAgICAg
IGludCBvbGRQYXJzZWRQcm9wZXJ0aWVzID0gcGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXMtPnNp
emUoKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VyLT5wYXJzZVZhbHVlKHBhcnNlci0+bV9pZCwg
cGFyc2VyLT5tX2ltcG9ydGFudCkpCisgICAgICAgICAgICAgICAgcGFyc2VyLT5yb2xsYmFja0xh
c3RQcm9wZXJ0aWVzKHBhcnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCkgLSBvbGRQYXJz
ZWRQcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgIHBhcnNlci0+bV92YWx1ZUxpc3QgPSBudWxscHRy
OworICAgICAgICB9CisgICAgfQorOworCit3ZWJraXRfbWVkaWFxdWVyeToKKyAgICAgV0VCS0lU
X01FRElBUVVFUllfU1lNIFdISVRFU1BBQ0UgbWF5YmVfc3BhY2UgbWVkaWFfcXVlcnkgJ30nIHsK
KyAgICAgICAgIHBhcnNlci0+bV9tZWRpYVF1ZXJ5ID0gcGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRp
YVF1ZXJ5KCQ0KTsKKyAgICAgfQorOworCit3ZWJraXRfc2VsZWN0b3I6CisgICAgV0VCS0lUX1NF
TEVDVE9SX1NZTSAneycgbWF5YmVfc3BhY2Ugc2VsZWN0b3JfbGlzdCAnfScgeworICAgICAgICBp
ZiAoJDQpIHsKKyAgICAgICAgICAgIGlmIChwYXJzZXItPm1fc2VsZWN0b3JMaXN0Rm9yUGFyc2VT
ZWxlY3RvcikKKyAgICAgICAgICAgICAgICBwYXJzZXItPm1fc2VsZWN0b3JMaXN0Rm9yUGFyc2VT
ZWxlY3Rvci0+YWRvcHRTZWxlY3RvclZlY3RvcigqJDQpOworICAgICAgICB9CisgICAgfQorOwor
CittYXliZV9zcGFjZToKKyAgICAvKiBlbXB0eSAqLyAlcHJlYyBVTklNUE9SVEFOVF9UT0sKKyAg
fCBtYXliZV9zcGFjZSBXSElURVNQQUNFCisgIDsKKworbWF5YmVfc2dtbDoKKyAgICAvKiBlbXB0
eSAqLworICB8IG1heWJlX3NnbWwgU0dNTF9DRAorICB8IG1heWJlX3NnbWwgV0hJVEVTUEFDRQor
ICA7CisKK21heWJlX2NoYXJzZXQ6CisgICAvKiBlbXB0eSAqLworICB8IGNoYXJzZXQgeworICB9
CisgIDsKKworY2xvc2luZ19icmFjZToKKyAgICAnfScKKyAgfCAlcHJlYyBMT1dFU1RfUFJFQyBU
T0tFTl9FT0YKKyAgOworCitjaGFyc2V0OgorICBDSEFSU0VUX1NZTSBtYXliZV9zcGFjZSBTVFJJ
TkcgbWF5YmVfc3BhY2UgJzsnIHsKKyAgICAgaWYgKHBhcnNlci0+bV9zdHlsZVNoZWV0KQorICAg
ICAgICAgcGFyc2VyLT5tX3N0eWxlU2hlZXQtPnBhcnNlclNldEVuY29kaW5nRnJvbUNoYXJzZXRS
dWxlKCQzKTsKKyAgICAgaWYgKHBhcnNlci0+aXNFeHRyYWN0aW5nU291cmNlRGF0YSgpICYmIHBh
cnNlci0+bV9jdXJyZW50UnVsZURhdGFTdGFjay0+aXNFbXB0eSgpICYmIHBhcnNlci0+bV9ydWxl
U291cmNlRGF0YVJlc3VsdCkKKyAgICAgICAgIHBhcnNlci0+YWRkTmV3UnVsZVRvU291cmNlVHJl
ZShDU1NSdWxlU291cmNlRGF0YTo6Y3JlYXRlVW5rbm93bigpKTsKKyAgICAgJCQgPSAwOworICB9
CisgIHwgQ0hBUlNFVF9TWU0gZXJyb3IgaW52YWxpZF9ibG9jayB7CisgIH0KKyAgfCBDSEFSU0VU
X1NZTSBlcnJvciAnOycgeworICB9Cis7CisKK2lnbm9yZWRfY2hhcnNldDoKKyAgICBDSEFSU0VU
X1NZTSBtYXliZV9zcGFjZSBTVFJJTkcgbWF5YmVfc3BhY2UgJzsnIHsKKyAgICAgICAgLy8gSWdu
b3JlIGFueSBAY2hhcnNldCBydWxlIG5vdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHlsZSBz
aGVldC4KKyAgICAgICAgJCQgPSAwOworICAgIH0KKyAgICB8IENIQVJTRVRfU1lNIG1heWJlX3Nw
YWNlICc7JyB7CisgICAgICAgICQkID0gMDsKKyAgICB9Cis7CisKK3J1bGVfbGlzdDoKKyAgIC8q
IGVtcHR5ICovCisgfCBydWxlX2xpc3QgcnVsZSBtYXliZV9zZ21sIHsKKyAgICAgaWYgKCQyICYm
IHBhcnNlci0+bV9zdHlsZVNoZWV0KQorICAgICAgICAgcGFyc2VyLT5tX3N0eWxlU2hlZXQtPnBh
cnNlckFwcGVuZFJ1bGUoJDIpOworIH0KKyA7CisKK3ZhbGlkX3J1bGU6CisgICAgcnVsZXNldAor
ICB8IG1lZGlhCisgIHwgcGFnZQorICB8IGZvbnRfZmFjZQorICB8IGtleWZyYW1lcworICB8IG5h
bWVzcGFjZQorICB8IGltcG9ydAorICB8IHJlZ2lvbgorICA7CisKK3J1bGU6CisgICAgdmFsaWRf
cnVsZSB7CisgICAgICAgIHBhcnNlci0+bV9oYWRTeW50YWN0aWNhbGx5VmFsaWRDU1NSdWxlID0g
dHJ1ZTsKKyAgICB9CisgIHwgaWdub3JlZF9jaGFyc2V0CisgIHwgaW52YWxpZF9ydWxlCisgIHwg
aW52YWxpZF9hdAorICA7CisKK2Jsb2NrX3J1bGVfbGlzdDogCisgICAgLyogZW1wdHkgKi8geyAk
JCA9IDA7IH0KKyAgfCBibG9ja19ydWxlX2xpc3QgYmxvY2tfcnVsZSBtYXliZV9zZ21sIHsKKyAg
ICAgICQkID0gJDE7CisgICAgICBpZiAoJDIpIHsKKyAgICAgICAgICBpZiAoISQkKQorICAgICAg
ICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlUnVsZUxpc3QoKTsKKyAgICAgICAgICAkJC0+YXBw
ZW5kKCQyKTsKKyAgICAgIH0KKyAgfQorICA7CisKK2Jsb2NrX3ZhbGlkX3J1bGU6CisgICAgcnVs
ZXNldAorICB8IHBhZ2UKKyAgfCBmb250X2ZhY2UKKyAgfCBrZXlmcmFtZXMKKyAgOworCitibG9j
a19ydWxlOgorICAgIGJsb2NrX3ZhbGlkX3J1bGUKKyAgfCBpbnZhbGlkX3J1bGUKKyAgfCBpbnZh
bGlkX2F0CisgIHwgbmFtZXNwYWNlCisgIHwgaW1wb3J0CisgIHwgbWVkaWEKKyAgOworCithdF9p
bXBvcnRfaGVhZGVyX2VuZF9tYXliZV9zcGFjZToKKyAgICBtYXliZV9zcGFjZSB7CisgICAgICAg
IHBhcnNlci0+bWFya1J1bGVIZWFkZXJFbmQoKTsKKyAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUJv
ZHlTdGFydCgpOworICAgIH0KKyAgICA7CisKK2JlZm9yZV9pbXBvcnRfcnVsZToKKyAgICAvKiBl
bXB0eSAqLyB7CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291
cmNlRGF0YTo6SU1QT1JUX1JVTEUpOworICAgIH0KKyAgICA7CisKK2ltcG9ydDoKKyAgICBiZWZv
cmVfaW1wb3J0X3J1bGUgSU1QT1JUX1NZTSBhdF9pbXBvcnRfaGVhZGVyX2VuZF9tYXliZV9zcGFj
ZSBzdHJpbmdfb3JfdXJpIG1heWJlX3NwYWNlIG1heWJlX21lZGlhX2xpc3QgJzsnIHsKKyAgICAg
ICAgJCQgPSBwYXJzZXItPmNyZWF0ZUltcG9ydFJ1bGUoJDQsICQ2KTsKKyAgICB9CisgIHwgYmVm
b3JlX2ltcG9ydF9ydWxlIElNUE9SVF9TWU0gYXRfaW1wb3J0X2hlYWRlcl9lbmRfbWF5YmVfc3Bh
Y2Ugc3RyaW5nX29yX3VyaSBtYXliZV9zcGFjZSBtYXliZV9tZWRpYV9saXN0IFRPS0VOX0VPRiB7
CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVJbXBvcnRSdWxlKCQ0LCAkNik7CisgICAgfQor
ICB8IGJlZm9yZV9pbXBvcnRfcnVsZSBJTVBPUlRfU1lNIGF0X2ltcG9ydF9oZWFkZXJfZW5kX21h
eWJlX3NwYWNlIHN0cmluZ19vcl91cmkgbWF5YmVfc3BhY2UgbWF5YmVfbWVkaWFfbGlzdCBpbnZh
bGlkX2Jsb2NrIHsKKyAgICAgICAgJCQgPSAwOworICAgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRh
KCk7CisgICAgfQorICB8IGJlZm9yZV9pbXBvcnRfcnVsZSBJTVBPUlRfU1lNIGVycm9yICc7JyB7
CisgICAgICAgICQkID0gMDsKKyAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOworICAgIH0K
KyAgfCBiZWZvcmVfaW1wb3J0X3J1bGUgSU1QT1JUX1NZTSBlcnJvciBpbnZhbGlkX2Jsb2NrIHsK
KyAgICAgICAgJCQgPSAwOworICAgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7CisgICAgfQor
ICA7CisKK25hbWVzcGFjZToKK05BTUVTUEFDRV9TWU0gbWF5YmVfc3BhY2UgbWF5YmVfbnNfcHJl
Zml4IHN0cmluZ19vcl91cmkgbWF5YmVfc3BhY2UgJzsnIHsKKyAgICBwYXJzZXItPmFkZE5hbWVz
cGFjZSgkMywgJDQpOworICAgICQkID0gMDsKK30KK3wgTkFNRVNQQUNFX1NZTSBtYXliZV9zcGFj
ZSBtYXliZV9uc19wcmVmaXggc3RyaW5nX29yX3VyaSBtYXliZV9zcGFjZSBpbnZhbGlkX2Jsb2Nr
IHsKKyAgICAkJCA9IDA7Cit9Cit8IE5BTUVTUEFDRV9TWU0gZXJyb3IgaW52YWxpZF9ibG9jayB7
CisgICAgJCQgPSAwOworfQorfCBOQU1FU1BBQ0VfU1lNIGVycm9yICc7JyB7CisgICAgJCQgPSAw
OworfQorOworCittYXliZV9uc19wcmVmaXg6CisvKiBlbXB0eSAqLyB7ICQkLmNoYXJhY3RlcnMg
PSAwOyB9Cit8IElERU5UIG1heWJlX3NwYWNlIHsgJCQgPSAkMTsgfQorOworCitzdHJpbmdfb3Jf
dXJpOgorU1RSSU5HCit8IFVSSQorOworCittZWRpYV9mZWF0dXJlOgorICAgIElERU5UIG1heWJl
X3NwYWNlIHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAgOworCittYXliZV9tZWRpYV92
YWx1ZToKKyAgICAvKmVtcHR5Ki8geworICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIHwgJzon
IG1heWJlX3NwYWNlIGV4cHIgbWF5YmVfc3BhY2UgeworICAgICAgICAkJCA9ICQzOworICAgIH0K
KyAgICA7CisKK21lZGlhX3F1ZXJ5X2V4cDoKKyAgICAnKCcgbWF5YmVfc3BhY2UgbWVkaWFfZmVh
dHVyZSBtYXliZV9zcGFjZSBtYXliZV9tZWRpYV92YWx1ZSAnKScgbWF5YmVfc3BhY2UgeworICAg
ICAgICAkMy5sb3dlcigpOworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdNZWRp
YVF1ZXJ5RXhwKCQzLCAkNSk7CisgICAgfQorICAgIDsKKworbWVkaWFfcXVlcnlfZXhwX2xpc3Q6
CisgICAgbWVkaWFfcXVlcnlfZXhwIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0
aW5nTWVkaWFRdWVyeUV4cExpc3QoKTsKKyAgICAgICAgJCQtPmFwcGVuZChwYXJzZXItPnNpbmtG
bG9hdGluZ01lZGlhUXVlcnlFeHAoJDEpKTsKKyAgICB9CisgICAgfCBtZWRpYV9xdWVyeV9leHBf
bGlzdCBtYXliZV9zcGFjZSBNRURJQV9BTkQgbWF5YmVfc3BhY2UgbWVkaWFfcXVlcnlfZXhwIHsK
KyAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgJCQtPmFwcGVuZChwYXJzZXItPnNpbmtGbG9hdGlu
Z01lZGlhUXVlcnlFeHAoJDUpKTsKKyAgICB9CisgICAgOworCittYXliZV9hbmRfbWVkaWFfcXVl
cnlfZXhwX2xpc3Q6CisgICAgLyplbXB0eSovIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0
ZUZsb2F0aW5nTWVkaWFRdWVyeUV4cExpc3QoKTsKKyAgICB9CisgICAgfCBNRURJQV9BTkQgbWF5
YmVfc3BhY2UgbWVkaWFfcXVlcnlfZXhwX2xpc3QgeworICAgICAgICAkJCA9ICQzOworICAgIH0K
KyAgICA7CisKK21heWJlX21lZGlhX3Jlc3RyaWN0b3I6CisgICAgLyplbXB0eSovIHsKKyAgICAg
ICAgJCQgPSBNZWRpYVF1ZXJ5OjpOb25lOworICAgIH0KKyAgICB8IE1FRElBX09OTFkgeworICAg
ICAgICAkJCA9IE1lZGlhUXVlcnk6Ok9ubHk7CisgICAgfQorICAgIHwgTUVESUFfTk9UIHsKKyAg
ICAgICAgJCQgPSBNZWRpYVF1ZXJ5OjpOb3Q7CisgICAgfQorICAgIDsKKworbWVkaWFfcXVlcnk6
CisgICAgbWVkaWFfcXVlcnlfZXhwX2xpc3QgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRl
RmxvYXRpbmdNZWRpYVF1ZXJ5KHBhcnNlci0+c2lua0Zsb2F0aW5nTWVkaWFRdWVyeUV4cExpc3Qo
JDEpKTsKKyAgICB9CisgICAgfAorICAgIG1heWJlX21lZGlhX3Jlc3RyaWN0b3IgbWF5YmVfc3Bh
Y2UgbWVkaXVtIG1heWJlX2FuZF9tZWRpYV9xdWVyeV9leHBfbGlzdCB7CisgICAgICAgICQzLmxv
d2VyKCk7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ01lZGlhUXVlcnkoJDEs
ICQzLCBwYXJzZXItPnNpbmtGbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KCQ0KSk7CisgICAgfQor
ICAgIDsKKworbWF5YmVfbWVkaWFfbGlzdDoKKyAgICAgLyogZW1wdHkgKi8geworICAgICAgICAk
JCA9IHBhcnNlci0+Y3JlYXRlTWVkaWFRdWVyeVNldCgpOworICAgICB9CisgICAgIHwgbWVkaWFf
bGlzdAorICAgICA7CisKK21lZGlhX2xpc3Q6CisgICAgbWVkaWFfcXVlcnkgeworICAgICAgICAk
JCA9IHBhcnNlci0+Y3JlYXRlTWVkaWFRdWVyeVNldCgpOworICAgICAgICAkJC0+YWRkTWVkaWFR
dWVyeShwYXJzZXItPnNpbmtGbG9hdGluZ01lZGlhUXVlcnkoJDEpKTsKKyAgICAgICAgcGFyc2Vy
LT51cGRhdGVMYXN0TWVkaWFMaW5lKCQkKTsKKyAgICB9CisgICAgfCBtZWRpYV9saXN0ICcsJyBt
YXliZV9zcGFjZSBtZWRpYV9xdWVyeSB7CisgICAgICAgICQkID0gJDE7CisgICAgICAgIGlmICgk
JCkgeworICAgICAgICAgICAgJCQtPmFkZE1lZGlhUXVlcnkocGFyc2VyLT5zaW5rRmxvYXRpbmdN
ZWRpYVF1ZXJ5KCQ0KSk7CisgICAgICAgICAgICBwYXJzZXItPnVwZGF0ZUxhc3RNZWRpYUxpbmUo
JCQpOworICAgICAgICB9CisgICAgfQorICAgIHwgbWVkaWFfbGlzdCBlcnJvciB7CisgICAgICAg
ICQkID0gMDsKKyAgICB9CisgICAgOworCithdF9ydWxlX2JvZHlfc3RhcnQ6CisgICAgLyogZW1w
dHkgKi8geworICAgICAgICBwYXJzZXItPm1hcmtSdWxlQm9keVN0YXJ0KCk7CisgICAgfQorICAg
IDsKKworYmVmb3JlX21lZGlhX3J1bGU6CisgICAgLyogZW1wdHkgKi8geworICAgICAgICBwYXJz
ZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6Ok1FRElBX1JVTEUpOwor
ICAgIH0KKyAgICA7CisKK2F0X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9zcGFjZToKKyAgICBtYXli
ZV9zcGFjZSB7CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJFbmQoKTsKKyAgICB9Cisg
ICAgOworCittZWRpYToKKyAgICBiZWZvcmVfbWVkaWFfcnVsZSBNRURJQV9TWU0gbWF5YmVfc3Bh
Y2UgbWVkaWFfbGlzdCBhdF9ydWxlX2hlYWRlcl9lbmQgJ3snIGF0X3J1bGVfYm9keV9zdGFydCBt
YXliZV9zcGFjZSBibG9ja19ydWxlX2xpc3Qgc2F2ZV9ibG9jayB7CisgICAgICAgICQkID0gcGFy
c2VyLT5jcmVhdGVNZWRpYVJ1bGUoJDQsICQ5KTsKKyAgICB9CisgICAgfCBiZWZvcmVfbWVkaWFf
cnVsZSBNRURJQV9TWU0gYXRfcnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlICd7JyBhdF9ydWxl
X2JvZHlfc3RhcnQgbWF5YmVfc3BhY2UgYmxvY2tfcnVsZV9saXN0IHNhdmVfYmxvY2sgeworICAg
ICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlTWVkaWFSdWxlKDAsICQ3KTsKKyAgICB9CisgICAgfCBi
ZWZvcmVfbWVkaWFfcnVsZSBNRURJQV9TWU0gYXRfcnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNl
ICc7JyB7CisgICAgICAgICQkID0gMDsKKyAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOwor
ICAgIH0KKyAgICA7CisKK21lZGl1bToKKyAgSURFTlQgbWF5YmVfc3BhY2UgeworICAgICAgJCQg
PSAkMTsKKyAgfQorICA7CisKK2JlZm9yZV9rZXlmcmFtZXNfcnVsZToKKyAgICAvKiBlbXB0eSAq
LyB7CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0
YTo6S0VZRlJBTUVTX1JVTEUpOworICAgIH0KKyAgICA7CisKK2tleWZyYW1lczoKKyAgICBiZWZv
cmVfa2V5ZnJhbWVzX3J1bGUgV0VCS0lUX0tFWUZSQU1FU19TWU0gbWF5YmVfc3BhY2Uga2V5ZnJh
bWVfbmFtZSBhdF9ydWxlX2hlYWRlcl9lbmRfbWF5YmVfc3BhY2UgJ3snIGF0X3J1bGVfYm9keV9z
dGFydCBtYXliZV9zcGFjZSBrZXlmcmFtZXNfcnVsZSBjbG9zaW5nX2JyYWNlIHsKKyAgICAgICAg
JCQgPSBwYXJzZXItPmNyZWF0ZUtleWZyYW1lc1J1bGUoJDQsIHBhcnNlci0+c2lua0Zsb2F0aW5n
S2V5ZnJhbWVWZWN0b3IoJDkpKTsKKyAgICB9CisgICAgOworICAKK2tleWZyYW1lX25hbWU6Cisg
ICAgSURFTlQKKyAgICB8IFNUUklORworICAgIDsKKwora2V5ZnJhbWVzX3J1bGU6CisgICAgLyog
ZW1wdHkgKi8geyAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdLZXlmcmFtZVZlY3RvcigpOyB9
CisgICAgfCBrZXlmcmFtZXNfcnVsZSBrZXlmcmFtZV9ydWxlIG1heWJlX3NwYWNlIHsKKyAgICAg
ICAgJCQgPSAkMTsKKyAgICAgICAgaWYgKCQyKQorICAgICAgICAgICAgJCQtPmFwcGVuZCgkMik7
CisgICAgfQorICAgIDsKKwora2V5ZnJhbWVfcnVsZToKKyAgICBrZXlfbGlzdCBtYXliZV9zcGFj
ZSAneycgbWF5YmVfc3BhY2UgZGVjbGFyYXRpb25fbGlzdCAnfScgeworICAgICAgICAkJCA9IHBh
cnNlci0+Y3JlYXRlS2V5ZnJhbWUoJDEpOworICAgIH0KKyAgICA7CisKK2tleV9saXN0OgorICAg
IGtleSB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1ZhbHVlTGlzdCgpOwor
ICAgICAgICAkJC0+YWRkVmFsdWUocGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZSgkMSkpOworICAg
IH0KKyAgICB8IGtleV9saXN0IG1heWJlX3NwYWNlICcsJyBtYXliZV9zcGFjZSBrZXkgeworICAg
ICAgICAkJCA9ICQxOworICAgICAgICBpZiAoJCQpCisgICAgICAgICAgICAkJC0+YWRkVmFsdWUo
cGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZSgkNSkpOworICAgIH0KKyAgICA7CisKK2tleToKKyAg
ICBQRVJDRU5UQUdFIHsgJCQuaWQgPSAwOyAkJC5pc0ludCA9IGZhbHNlOyAkJC5mVmFsdWUgPSAk
MTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOyB9CisgICAgfCBJREVO
VCB7CisgICAgICAgICQkLmlkID0gMDsgJCQuaXNJbnQgPSBmYWxzZTsgJCQudW5pdCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOworICAgICAgICBDU1NQYXJzZXJTdHJpbmcmIHN0ciA9
ICQxOworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoImZyb20iLCBzdHIuY2hhcmFjdGVy
cywgc3RyLmxlbmd0aCkpCisgICAgICAgICAgICAkJC5mVmFsdWUgPSAwOworICAgICAgICBlbHNl
IGlmIChlcXVhbElnbm9yaW5nQ2FzZSgidG8iLCBzdHIuY2hhcmFjdGVycywgc3RyLmxlbmd0aCkp
CisgICAgICAgICAgICAkJC5mVmFsdWUgPSAxMDA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IFlZRVJST1I7CisgICAgfQorICAgIDsKKworYmVmb3JlX3BhZ2VfcnVsZToKKyAgICAvKiBlbXB0
eSAqLyB7CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNl
RGF0YTo6UEFHRV9SVUxFKTsKKyAgICB9CisgICAgOworCitwYWdlOgorICAgIGJlZm9yZV9wYWdl
X3J1bGUgUEFHRV9TWU0gbWF5YmVfc3BhY2UgcGFnZV9zZWxlY3RvciBhdF9ydWxlX2hlYWRlcl9l
bmRfbWF5YmVfc3BhY2UKKyAgICAneycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1heWJlX3NwYWNlX2Jl
Zm9yZV9kZWNsYXJhdGlvbiBkZWNsYXJhdGlvbnNfYW5kX21hcmdpbnMgY2xvc2luZ19icmFjZSB7
CisgICAgICAgIGlmICgkNCkKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVQYWdlUnVs
ZShwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQ0KSk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgLy8gQ2xlYXIgcHJvcGVydGllcyBpbiB0aGUgaW52YWxpZCBAcGFnZSBydWxlLgor
ICAgICAgICAgICAgcGFyc2VyLT5jbGVhclByb3BlcnRpZXMoKTsKKyAgICAgICAgICAgIC8vIEFs
c28gY2xlYXIgbWFyZ2luIGF0LXJ1bGVzIGhlcmUgb25jZSB3ZSBmdWxseSBpbXBsZW1lbnQgbWFy
Z2luIGF0LXJ1bGVzIHBhcnNpbmcuCisgICAgICAgICAgICAkJCA9IDA7CisgICAgICAgICAgICBw
YXJzZXItPnBvcFJ1bGVEYXRhKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgfCBiZWZvcmVfcGFn
ZV9ydWxlIFBBR0VfU1lNIGVycm9yIGludmFsaWRfYmxvY2sgeworICAgICAgcGFyc2VyLT5wb3BS
dWxlRGF0YSgpOworICAgICAgJCQgPSAwOworICAgIH0KKyAgICB8IGJlZm9yZV9wYWdlX3J1bGUg
UEFHRV9TWU0gZXJyb3IgJzsnIHsKKyAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKKyAgICAg
ICQkID0gMDsKKyAgICB9CisgICAgOworCitwYWdlX3NlbGVjdG9yOgorICAgIElERU5UIHsKKyAg
ICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQt
PnNldFRhZyhRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMSwgcGFyc2VyLT5tX2RlZmF1bHROYW1l
c3BhY2UpKTsKKyAgICAgICAgJCQtPnNldEZvclBhZ2UoKTsKKyAgICB9CisgICAgfCBJREVOVCBw
c2V1ZG9fcGFnZSB7CisgICAgICAgICQkID0gJDI7CisgICAgICAgIGlmICgkJCkgeworICAgICAg
ICAgICAgJCQtPnNldFRhZyhRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMSwgcGFyc2VyLT5tX2Rl
ZmF1bHROYW1lc3BhY2UpKTsKKyAgICAgICAgICAgICQkLT5zZXRGb3JQYWdlKCk7CisgICAgICAg
IH0KKyAgICB9CisgICAgfCBwc2V1ZG9fcGFnZSB7CisgICAgICAgICQkID0gJDE7CisgICAgICAg
IGlmICgkJCkKKyAgICAgICAgICAgICQkLT5zZXRGb3JQYWdlKCk7CisgICAgfQorICAgIHwgLyog
ZW1wdHkgKi8geworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3Rvcigp
OworICAgICAgICAkJC0+c2V0Rm9yUGFnZSgpOworICAgIH0KKyAgICA7CisKK2RlY2xhcmF0aW9u
c19hbmRfbWFyZ2luczoKKyAgICBkZWNsYXJhdGlvbl9saXN0CisgICAgfCBkZWNsYXJhdGlvbnNf
YW5kX21hcmdpbnMgbWFyZ2luX2JveCBtYXliZV9zcGFjZSBkZWNsYXJhdGlvbl9saXN0CisgICAg
OworCittYXJnaW5fYm94OgorICAgIG1hcmdpbl9zeW0geworICAgICAgICBwYXJzZXItPnN0YXJ0
RGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KCk7CisgICAgfSBtYXliZV9zcGFjZSAneycgbWF5YmVf
c3BhY2UgZGVjbGFyYXRpb25fbGlzdCBjbG9zaW5nX2JyYWNlIHsKKyAgICAgICAgJCQgPSBwYXJz
ZXItPmNyZWF0ZU1hcmdpbkF0UnVsZSgkMSk7CisgICAgfQorICAgIDsKKworbWFyZ2luX3N5bSA6
CisgICAgVE9QTEVGVENPUk5FUl9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpUb3BM
ZWZ0Q29ybmVyTWFyZ2luQm94OworICAgIH0KKyAgICB8IFRPUExFRlRfU1lNIHsKKyAgICAgICAg
JCQgPSBDU1NTZWxlY3Rvcjo6VG9wTGVmdE1hcmdpbkJveDsKKyAgICB9CisgICAgfCBUT1BDRU5U
RVJfU1lNIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6VG9wQ2VudGVyTWFyZ2luQm94Owor
ICAgIH0KKyAgICB8IFRPUFJJR0hUX1NZTSB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OlRv
cFJpZ2h0TWFyZ2luQm94OworICAgIH0KKyAgICB8IFRPUFJJR0hUQ09STkVSX1NZTSB7CisgICAg
ICAgICQkID0gQ1NTU2VsZWN0b3I6OlRvcFJpZ2h0Q29ybmVyTWFyZ2luQm94OworICAgIH0KKyAg
ICB8IEJPVFRPTUxFRlRDT1JORVJfU1lNIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6Qm90
dG9tTGVmdENvcm5lck1hcmdpbkJveDsKKyAgICB9CisgICAgfCBCT1RUT01MRUZUX1NZTSB7Cisg
ICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkJvdHRvbUxlZnRNYXJnaW5Cb3g7CisgICAgfQorICAg
IHwgQk9UVE9NQ0VOVEVSX1NZTSB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkJvdHRvbUNl
bnRlck1hcmdpbkJveDsKKyAgICB9CisgICAgfCBCT1RUT01SSUdIVF9TWU0geworICAgICAgICAk
JCA9IENTU1NlbGVjdG9yOjpCb3R0b21SaWdodE1hcmdpbkJveDsKKyAgICB9CisgICAgfCBCT1RU
T01SSUdIVENPUk5FUl9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpCb3R0b21SaWdo
dENvcm5lck1hcmdpbkJveDsKKyAgICB9CisgICAgfCBMRUZUVE9QX1NZTSB7CisgICAgICAgICQk
ID0gQ1NTU2VsZWN0b3I6OkxlZnRUb3BNYXJnaW5Cb3g7CisgICAgfQorICAgIHwgTEVGVE1JRERM
RV9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpMZWZ0TWlkZGxlTWFyZ2luQm94Owor
ICAgIH0KKyAgICB8IExFRlRCT1RUT01fU1lNIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6
TGVmdEJvdHRvbU1hcmdpbkJveDsKKyAgICB9CisgICAgfCBSSUdIVFRPUF9TWU0geworICAgICAg
ICAkJCA9IENTU1NlbGVjdG9yOjpSaWdodFRvcE1hcmdpbkJveDsKKyAgICB9CisgICAgfCBSSUdI
VE1JRERMRV9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpSaWdodE1pZGRsZU1hcmdp
bkJveDsKKyAgICB9CisgICAgfCBSSUdIVEJPVFRPTV9TWU0geworICAgICAgICAkJCA9IENTU1Nl
bGVjdG9yOjpSaWdodEJvdHRvbU1hcmdpbkJveDsKKyAgICB9CisgICAgOworCitiZWZvcmVfZm9u
dF9mYWNlX3J1bGU6CisgICAgLyogZW1wdHkgKi8geworICAgICAgICBwYXJzZXItPm1hcmtSdWxl
SGVhZGVyU3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6OkZPTlRfRkFDRV9SVUxFKTsKKyAgICB9Cisg
ICAgOworCitmb250X2ZhY2U6CisgICAgYmVmb3JlX2ZvbnRfZmFjZV9ydWxlIEZPTlRfRkFDRV9T
WU0gYXRfcnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlCisgICAgJ3snIGF0X3J1bGVfYm9keV9z
dGFydCBtYXliZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRpb24gZGVjbGFyYXRpb25fbGlzdCBjbG9z
aW5nX2JyYWNlIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZvbnRGYWNlUnVsZSgpOwor
ICAgIH0KKyAgICB8IGJlZm9yZV9mb250X2ZhY2VfcnVsZSBGT05UX0ZBQ0VfU1lNIGVycm9yIGlu
dmFsaWRfYmxvY2sgeworICAgICAgJCQgPSAwOworICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgp
OworICAgIH0KKyAgICB8IGJlZm9yZV9mb250X2ZhY2VfcnVsZSBGT05UX0ZBQ0VfU1lNIGVycm9y
ICc7JyB7CisgICAgICAkJCA9IDA7CisgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7CisgICAg
fQorOworCityZWdpb25fc2VsZWN0b3I6CisgICAgc2VsZWN0b3JfbGlzdCB7CisgICAgICAgIGlm
ICgkMSkgeworICAgICAgICAgICAgcGFyc2VyLT5zZXRSZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVj
dG9yKCQxKTsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5yZXVzYWJsZVJlZ2lvblNlbGVjdG9y
VmVjdG9yKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgJCQgPSAwOwor
ICAgIH0KKzsKKworYmVmb3JlX3JlZ2lvbl9ydWxlOgorICAgIC8qIGVtcHR5ICovIHsKKyAgICAg
ICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRhOjpSRUdJT05f
UlVMRSk7CisgICAgfQorICAgIDsKKworcmVnaW9uOgorICAgIGJlZm9yZV9yZWdpb25fcnVsZSBX
RUJLSVRfUkVHSU9OX1JVTEVfU1lNIFdISVRFU1BBQ0UgcmVnaW9uX3NlbGVjdG9yIGF0X3J1bGVf
aGVhZGVyX2VuZCAneycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1heWJlX3NwYWNlIGJsb2NrX3J1bGVf
bGlzdCBzYXZlX2Jsb2NrIHsKKyAgICAgICAgaWYgKCQ0KQorICAgICAgICAgICAgJCQgPSBwYXJz
ZXItPmNyZWF0ZVJlZ2lvblJ1bGUoJDQsICQ5KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAkJCA9IDA7CisgICAgICAgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7CisgICAgICAgIH0K
KyAgICB9Cis7CisKK2NvbWJpbmF0b3I6CisgICAgJysnIG1heWJlX3NwYWNlIHsgJCQgPSBDU1NT
ZWxlY3Rvcjo6RGlyZWN0QWRqYWNlbnQ7IH0KKyAgfCAnficgbWF5YmVfc3BhY2UgeyAkJCA9IENT
U1NlbGVjdG9yOjpJbmRpcmVjdEFkamFjZW50OyB9CisgIHwgJz4nIG1heWJlX3NwYWNlIHsgJCQg
PSBDU1NTZWxlY3Rvcjo6Q2hpbGQ7IH0KKyAgOworCittYXliZV91bmFyeV9vcGVyYXRvcjoKKyAg
ICB1bmFyeV9vcGVyYXRvciB7ICQkID0gJDE7IH0KKyAgICB8IHsgJCQgPSAxOyB9CisgICAgOwor
Cit1bmFyeV9vcGVyYXRvcjoKKyAgICAnLScgeyAkJCA9IC0xOyB9CisgIHwgJysnIHsgJCQgPSAx
OyB9CisgIDsKKworbWF5YmVfc3BhY2VfYmVmb3JlX2RlY2xhcmF0aW9uOgorICAgIG1heWJlX3Nw
YWNlIHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlTdGFydCgpOworICAgIH0KKyAgOwor
CitiZWZvcmVfc2VsZWN0b3JfbGlzdDoKKyAgICAvKiBlbXB0eSAqLyB7CisgICAgICAgIHBhcnNl
ci0+bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6U1RZTEVfUlVMRSk7Cisg
ICAgfQorICA7CisKK2F0X3J1bGVfaGVhZGVyX2VuZDoKKyAgICAvKiBlbXB0eSAqLyB7CisgICAg
ICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJFbmQoKTsKKyAgICB9CisgIDsKKworcnVsZXNldDoK
KyAgICBiZWZvcmVfc2VsZWN0b3JfbGlzdCBzZWxlY3Rvcl9saXN0IGF0X3J1bGVfaGVhZGVyX2Vu
ZCAneycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1heWJlX3NwYWNlX2JlZm9yZV9kZWNsYXJhdGlvbiBk
ZWNsYXJhdGlvbl9saXN0IGNsb3NpbmdfYnJhY2UgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3Jl
YXRlU3R5bGVSdWxlKCQyKTsKKyAgICB9CisgIDsKKworc2VsZWN0b3JfbGlzdDoKKyAgICBzZWxl
Y3RvciAlcHJlYyBVTklNUE9SVEFOVF9UT0sgeworICAgICAgICBpZiAoJDEpIHsKKyAgICAgICAg
ICAgICQkID0gcGFyc2VyLT5zZWxlY3RvclZlY3RvcigpOworICAgICAgICAgICAgJCQtPnNocmlu
aygwKTsKKyAgICAgICAgICAgICQkLT5hcHBlbmQocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3Rv
cigkMSkpOworICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVMYXN0U2VsZWN0b3JMaW5lQW5kUG9z
aXRpb24oKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB8IHNlbGVjdG9yX2xpc3QgJywnIG1heWJl
X3NwYWNlIHNlbGVjdG9yICVwcmVjIFVOSU1QT1JUQU5UX1RPSyB7CisgICAgICAgIGlmICgkMSAm
JiAkNCkgeworICAgICAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgICAgICQkLT5hcHBlbmQocGFy
c2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkNCkpOworICAgICAgICAgICAgcGFyc2VyLT51cGRh
dGVMYXN0U2VsZWN0b3JMaW5lQW5kUG9zaXRpb24oKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAkJCA9IDA7CisgICAgfQorICB8IHNlbGVjdG9yX2xpc3QgZXJyb3IgeworICAgICAgICAk
JCA9IDA7CisgICAgfQorICAgOworCitzZWxlY3Rvcl93aXRoX3RyYWlsaW5nX3doaXRlc3BhY2U6
CisgICAgc2VsZWN0b3IgV0hJVEVTUEFDRSB7CisgICAgICAgICQkID0gJDE7CisgICAgfQorICAg
IDsKKworc2VsZWN0b3I6CisgICAgc2ltcGxlX3NlbGVjdG9yIHsKKyAgICAgICAgJCQgPSAkMTsK
KyAgICB9CisgICAgfCBzZWxlY3Rvcl93aXRoX3RyYWlsaW5nX3doaXRlc3BhY2UKKyAgICB7Cisg
ICAgICAgICQkID0gJDE7CisgICAgfQorICAgIHwgc2VsZWN0b3Jfd2l0aF90cmFpbGluZ193aGl0
ZXNwYWNlIHNpbXBsZV9zZWxlY3RvcgorICAgIHsKKyAgICAgICAgJCQgPSAkMjsKKyAgICAgICAg
aWYgKCEkMSkKKyAgICAgICAgICAgICQkID0gMDsKKyAgICAgICAgZWxzZSBpZiAoJCQpIHsKKyAg
ICAgICAgICAgIENTU1BhcnNlclNlbGVjdG9yKiBlbmQgPSAkJDsKKyAgICAgICAgICAgIHdoaWxl
IChlbmQtPnRhZ0hpc3RvcnkoKSkKKyAgICAgICAgICAgICAgICBlbmQgPSBlbmQtPnRhZ0hpc3Rv
cnkoKTsKKyAgICAgICAgICAgIGVuZC0+c2V0UmVsYXRpb24oQ1NTU2VsZWN0b3I6OkRlc2NlbmRh
bnQpOworICAgICAgICAgICAgZW5kLT5zZXRUYWdIaXN0b3J5KHBhcnNlci0+c2lua0Zsb2F0aW5n
U2VsZWN0b3IoJDEpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB8IHNlbGVjdG9yIGNvbWJpbmF0
b3Igc2ltcGxlX3NlbGVjdG9yIHsKKyAgICAgICAgJCQgPSAkMzsKKyAgICAgICAgaWYgKCEkMSkK
KyAgICAgICAgICAgICQkID0gMDsKKyAgICAgICAgZWxzZSBpZiAoJCQpIHsKKyAgICAgICAgICAg
IENTU1BhcnNlclNlbGVjdG9yKiBlbmQgPSAkJDsKKyAgICAgICAgICAgIHdoaWxlIChlbmQtPnRh
Z0hpc3RvcnkoKSkKKyAgICAgICAgICAgICAgICBlbmQgPSBlbmQtPnRhZ0hpc3RvcnkoKTsKKyAg
ICAgICAgICAgIGVuZC0+c2V0UmVsYXRpb24oJDIpOworICAgICAgICAgICAgZW5kLT5zZXRUYWdI
aXN0b3J5KHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDEpKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICB8IHNlbGVjdG9yIGVycm9yIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKyAgICA7
CisKK25hbWVzcGFjZV9zZWxlY3RvcjoKKyAgICAvKiBlbXB0eSAqLyAnfCcgeyAkJC5jaGFyYWN0
ZXJzID0gMDsgJCQubGVuZ3RoID0gMDsgfQorICAgIHwgJyonICd8JyB7IHN0YXRpYyBVQ2hhciBz
dGFyID0gJyonOyAkJC5jaGFyYWN0ZXJzID0gJnN0YXI7ICQkLmxlbmd0aCA9IDE7IH0KKyAgICB8
IElERU5UICd8JyB7ICQkID0gJDE7IH0KKzsKKyAgICAKK3NpbXBsZV9zZWxlY3RvcjoKKyAgICBl
bGVtZW50X25hbWUgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3Rv
cigpOworICAgICAgICAkJC0+c2V0VGFnKFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQxLCBwYXJz
ZXItPm1fZGVmYXVsdE5hbWVzcGFjZSkpOworICAgIH0KKyAgICB8IGVsZW1lbnRfbmFtZSBzcGVj
aWZpZXJfbGlzdCB7CisgICAgICAgICQkID0gJDI7CisgICAgICAgIGlmICgkJCkKKyAgICAgICAg
ICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShudWxsQXRvbSwgJDEs
ICQkKTsKKyAgICB9CisgICAgfCBzcGVjaWZpZXJfbGlzdCB7CisgICAgICAgICQkID0gJDE7Cisg
ICAgICAgIGlmICgkJCkKKyAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhF
bGVtZW50TmFtZShudWxsQXRvbSwgc3RhckF0b20sICQkKTsKKyAgICB9CisgICAgfCBuYW1lc3Bh
Y2Vfc2VsZWN0b3IgZWxlbWVudF9uYW1lIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZs
b2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldFRhZyhwYXJzZXItPmRldGVybWluZU5h
bWVJbk5hbWVzcGFjZSgkMSwgJDIpKTsKKyAgICB9CisgICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3Ig
ZWxlbWVudF9uYW1lIHNwZWNpZmllcl9saXN0IHsKKyAgICAgICAgJCQgPSAkMzsKKyAgICAgICAg
aWYgKCQkKQorICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnRO
YW1lKCQxLCAkMiwgJCQpOworICAgIH0KKyAgICB8IG5hbWVzcGFjZV9zZWxlY3RvciBzcGVjaWZp
ZXJfbGlzdCB7CisgICAgICAgICQkID0gJDI7CisgICAgICAgIGlmICgkJCkKKyAgICAgICAgICAg
IHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZSgkMSwgc3RhckF0b20sICQk
KTsKKyAgICB9CisgIDsKKworc2ltcGxlX3NlbGVjdG9yX2xpc3Q6CisgICAgc2ltcGxlX3NlbGVj
dG9yICVwcmVjIFVOSU1QT1JUQU5UX1RPSyB7CisgICAgICAgIGlmICgkMSkgeworICAgICAgICAg
ICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3JWZWN0b3IoKTsKKyAgICAgICAg
ICAgICQkLT5hcHBlbmQocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMSkpOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICQkID0gMDsKKyAgICB9CisgICAgfCBzaW1wbGVfc2VsZWN0
b3JfbGlzdCBtYXliZV9zcGFjZSAnLCcgbWF5YmVfc3BhY2Ugc2ltcGxlX3NlbGVjdG9yICVwcmVj
IFVOSU1QT1JUQU5UX1RPSyB7CisgICAgICAgIGlmICgkMSAmJiAkNSkgeworICAgICAgICAgICAg
JCQgPSAkMTsKKyAgICAgICAgICAgICQkLT5hcHBlbmQocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxl
Y3RvcigkNSkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICQkID0gMDsKKyAgICB9Cisg
ICAgfCBzaW1wbGVfc2VsZWN0b3JfbGlzdCBlcnJvciB7CisgICAgICAgICQkID0gMDsKKyAgICB9
CisgIDsKKworZWxlbWVudF9uYW1lOgorICAgIElERU5UIHsKKyAgICAgICAgQ1NTUGFyc2VyU3Ry
aW5nJiBzdHIgPSAkMTsKKyAgICAgICAgaWYgKHBhcnNlci0+bV9jb250ZXh0LmlzSFRNTERvY3Vt
ZW50KQorICAgICAgICAgICAgc3RyLmxvd2VyKCk7CisgICAgICAgICQkID0gc3RyOworICAgIH0K
KyAgICB8ICcqJyB7CisgICAgICAgIHN0YXRpYyBVQ2hhciBzdGFyID0gJyonOworICAgICAgICAk
JC5jaGFyYWN0ZXJzID0gJnN0YXI7CisgICAgICAgICQkLmxlbmd0aCA9IDE7CisgICAgfQorICA7
CisKK3NwZWNpZmllcl9saXN0OgorICAgIHNwZWNpZmllciB7CisgICAgICAgICQkID0gJDE7Cisg
ICAgfQorICAgIHwgc3BlY2lmaWVyX2xpc3Qgc3BlY2lmaWVyIHsKKyAgICAgICAgaWYgKCEkMikK
KyAgICAgICAgICAgICQkID0gMDsKKyAgICAgICAgZWxzZSBpZiAoJDEpCisgICAgICAgICAgICAk
JCA9IHBhcnNlci0+dXBkYXRlU3BlY2lmaWVycygkMSwgJDIpOworICAgIH0KKyAgICB8IHNwZWNp
Zmllcl9saXN0IGVycm9yIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKzsKKworc3BlY2lmaWVy
OgorICAgIElEU0VMIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0
b3IoKTsKKyAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpJZCk7CisgICAgICAgIGlm
IChwYXJzZXItPm1fY29udGV4dC5tb2RlID09IENTU1F1aXJrc01vZGUpCisgICAgICAgICAgICAk
MS5sb3dlcigpOworICAgICAgICAkJC0+c2V0VmFsdWUoJDEpOworICAgIH0KKyAgfCBIRVggewor
ICAgICAgICBpZiAoJDEuY2hhcmFjdGVyc1swXSA+PSAnMCcgJiYgJDEuY2hhcmFjdGVyc1swXSA8
PSAnOScpIHsKKyAgICAgICAgICAgICQkID0gMDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICAgICAk
JC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OklkKTsKKyAgICAgICAgICAgIGlmIChwYXJzZXItPm1f
Y29udGV4dC5tb2RlID09IENTU1F1aXJrc01vZGUpCisgICAgICAgICAgICAgICAgJDEubG93ZXIo
KTsKKyAgICAgICAgICAgICQkLT5zZXRWYWx1ZSgkMSk7CisgICAgICAgIH0KKyAgICB9CisgIHwg
Y2xhc3MKKyAgfCBhdHRyaWIKKyAgfCBwc2V1ZG8KKyAgICA7CisKK2NsYXNzOgorICAgICcuJyBJ
REVOVCB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Cisg
ICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6Q2xhc3MpOworICAgICAgICBpZiAocGFy
c2VyLT5tX2NvbnRleHQubW9kZSA9PSBDU1NRdWlya3NNb2RlKQorICAgICAgICAgICAgJDIubG93
ZXIoKTsKKyAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsKKyAgICB9CisgIDsKKworYXR0cl9uYW1l
OgorICAgIElERU5UIG1heWJlX3NwYWNlIHsKKyAgICAgICAgQ1NTUGFyc2VyU3RyaW5nJiBzdHIg
PSAkMTsKKyAgICAgICAgaWYgKHBhcnNlci0+bV9jb250ZXh0LmlzSFRNTERvY3VtZW50KQorICAg
ICAgICAgICAgc3RyLmxvd2VyKCk7CisgICAgICAgICQkID0gc3RyOworICAgIH0KKyAgICA7CisK
K2F0dHJpYjoKKyAgICAnWycgbWF5YmVfc3BhY2UgYXR0cl9uYW1lICddJyB7CisgICAgICAgICQk
ID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRBdHRy
aWJ1dGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDMsIG51bGxBdG9tKSk7CisgICAgICAgICQk
LT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6U2V0KTsKKyAgICB9CisgICAgfCAnWycgbWF5YmVfc3Bh
Y2UgYXR0cl9uYW1lIG1hdGNoIG1heWJlX3NwYWNlIGlkZW50X29yX3N0cmluZyBtYXliZV9zcGFj
ZSAnXScgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwor
ICAgICAgICAkJC0+c2V0QXR0cmlidXRlKFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQzLCBudWxs
QXRvbSkpOworICAgICAgICAkJC0+c2V0TWF0Y2goKENTU1NlbGVjdG9yOjpNYXRjaCkkNCk7Cisg
ICAgICAgICQkLT5zZXRWYWx1ZSgkNik7CisgICAgfQorICAgIHwgJ1snIG1heWJlX3NwYWNlIG5h
bWVzcGFjZV9zZWxlY3RvciBhdHRyX25hbWUgJ10nIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNy
ZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldEF0dHJpYnV0ZShwYXJzZXIt
PmRldGVybWluZU5hbWVJbk5hbWVzcGFjZSgkMywgJDQpKTsKKyAgICAgICAgJCQtPnNldE1hdGNo
KENTU1NlbGVjdG9yOjpTZXQpOworICAgIH0KKyAgICB8ICdbJyBtYXliZV9zcGFjZSBuYW1lc3Bh
Y2Vfc2VsZWN0b3IgYXR0cl9uYW1lIG1hdGNoIG1heWJlX3NwYWNlIGlkZW50X29yX3N0cmluZyBt
YXliZV9zcGFjZSAnXScgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxl
Y3RvcigpOworICAgICAgICAkJC0+c2V0QXR0cmlidXRlKHBhcnNlci0+ZGV0ZXJtaW5lTmFtZUlu
TmFtZXNwYWNlKCQzLCAkNCkpOworICAgICAgICAkJC0+c2V0TWF0Y2goKENTU1NlbGVjdG9yOjpN
YXRjaCkkNSk7CisgICAgICAgICQkLT5zZXRWYWx1ZSgkNyk7CisgICAgfQorICA7CisKK21hdGNo
OgorICAgICc9JyB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkV4YWN0OworICAgIH0KKyAg
ICB8IElOQ0xVREVTIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6TGlzdDsKKyAgICB9Cisg
ICAgfCBEQVNITUFUQ0ggeworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpIeXBoZW47CisgICAg
fQorICAgIHwgQkVHSU5TV0lUSCB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkJlZ2luOwor
ICAgIH0KKyAgICB8IEVORFNXSVRIIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6RW5kOwor
ICAgIH0KKyAgICB8IENPTlRBSU5TIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6Q29udGFp
bjsKKyAgICB9CisgICAgOworCitpZGVudF9vcl9zdHJpbmc6CisgICAgSURFTlQKKyAgfCBTVFJJ
TkcKKyAgICA7CisKK3BzZXVkb19wYWdlOgorICAgICc6JyBJREVOVCB7CisgICAgICAgICQkID0g
cGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRNYXRjaChD
U1NTZWxlY3Rvcjo6UGFnZVBzZXVkb0NsYXNzKTsKKyAgICAgICAgJDIubG93ZXIoKTsKKyAgICAg
ICAgJCQtPnNldFZhbHVlKCQyKTsKKyAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgdHlw
ZSA9ICQkLT5wc2V1ZG9UeXBlKCk7CisgICAgICAgIGlmICh0eXBlID09IENTU1NlbGVjdG9yOjpQ
c2V1ZG9Vbmtub3duKQorICAgICAgICAgICAgJCQgPSAwOworICAgIH0KKworcHNldWRvOgorICAg
ICc6JyBJREVOVCB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9y
KCk7CisgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpOworICAg
ICAgICAkMi5sb3dlcigpOworICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOworICAgICAgICBDU1NT
ZWxlY3Rvcjo6UHNldWRvVHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUoKTsKKyAgICAgICAgaWYg
KHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25vd24pCisgICAgICAgICAgICAkJCA9IDA7
CisgICAgfQorICAgIHwgJzonICc6JyBJREVOVCB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVh
dGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6
UHNldWRvRWxlbWVudCk7CisgICAgICAgICQzLmxvd2VyKCk7CisgICAgICAgICQkLT5zZXRWYWx1
ZSgkMyk7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNhbGwgaXMgbmVlZGVkIHRvIGZvcmNlIHNl
bGVjdG9yIHRvIGNvbXB1dGUgdGhlIHBzZXVkb1R5cGUgZWFybHkgZW5vdWdoLgorICAgICAgICAk
JC0+cHNldWRvVHlwZSgpOworICAgIH0KKyAgICAvLyB1c2UgYnkgOi13ZWJraXQtYW55LgorICAg
IC8vIEZJWE1FOiBzaG91bGQgd2Ugc3VwcG9ydCBnZW5lcmljIHNlbGVjdG9ycyBoZXJlIG9yIGp1
c3Qgc2ltcGxlX3NlbGVjdG9ycz8KKyAgICAvLyBVc2Ugc2ltcGxlX3NlbGVjdG9yX2xpc3QgZm9y
IG5vdyB0byBtYXRjaCAtbW96LWFueS4KKyAgICAvLyBTZWUgaHR0cDovL2xpc3RzLnczLm9yZy9B
cmNoaXZlcy9QdWJsaWMvd3d3LXN0eWxlLzIwMTBTZXAvMDU2Ni5odG1sIGZvciBzb21lCisgICAg
Ly8gcmVsYXRlZCBkaXNjdXNzaW9uIHdpdGggcmVzcGVjdCB0byA6bm90LgorICAgIHwgJzonIEFO
WUZVTkNUSU9OIG1heWJlX3NwYWNlIHNpbXBsZV9zZWxlY3Rvcl9saXN0IG1heWJlX3NwYWNlICcp
JyB7CisgICAgICAgIGlmICgkNCkgeworICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZs
b2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6
UHNldWRvQ2xhc3MpOworICAgICAgICAgICAgJCQtPmFkb3B0U2VsZWN0b3JWZWN0b3IoKnBhcnNl
ci0+c2lua0Zsb2F0aW5nU2VsZWN0b3JWZWN0b3IoJDQpKTsKKyAgICAgICAgICAgICQyLmxvd2Vy
KCk7CisgICAgICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOworICAgICAgICAgICAgQ1NTU2VsZWN0
b3I6OlBzZXVkb1R5cGUgdHlwZSA9ICQkLT5wc2V1ZG9UeXBlKCk7CisgICAgICAgICAgICBpZiAo
dHlwZSAhPSBDU1NTZWxlY3Rvcjo6UHNldWRvQW55KQorICAgICAgICAgICAgICAgICQkID0gMDsK
KyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIC8vIHVzZWQg
YnkgOm50aC0qKGF4K2IpCisgICAgfCAnOicgRlVOQ1RJT04gbWF5YmVfc3BhY2UgTlRIIG1heWJl
X3NwYWNlICcpJyB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9y
KCk7CisgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpOworICAg
ICAgICAkJC0+c2V0QXJndW1lbnQoJDQpOworICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOworICAg
ICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUoKTsKKyAg
ICAgICAgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25vd24pCisgICAgICAgICAg
ICAkJCA9IDA7CisgICAgfQorICAgIC8vIHVzZWQgYnkgOm50aC0qCisgICAgfCAnOicgRlVOQ1RJ
T04gbWF5YmVfc3BhY2UgbWF5YmVfdW5hcnlfb3BlcmF0b3IgSU5URUdFUiBtYXliZV9zcGFjZSAn
KScgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAg
ICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKKyAgICAgICAgJCQt
PnNldEFyZ3VtZW50KFN0cmluZzo6bnVtYmVyKCQ0ICogJDUpKTsKKyAgICAgICAgJCQtPnNldFZh
bHVlKCQyKTsKKyAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgdHlwZSA9ICQkLT5wc2V1
ZG9UeXBlKCk7CisgICAgICAgIGlmICh0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9Vbmtub3du
KQorICAgICAgICAgICAgJCQgPSAwOworICAgIH0KKyAgICAvLyB1c2VkIGJ5IDpudGgtKihvZGQv
ZXZlbikgYW5kIDpsYW5nCisgICAgfCAnOicgRlVOQ1RJT04gbWF5YmVfc3BhY2UgSURFTlQgbWF5
YmVfc3BhY2UgJyknIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0
b3IoKTsKKyAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7Cisg
ICAgICAgICQkLT5zZXRBcmd1bWVudCgkNCk7CisgICAgICAgICQyLmxvd2VyKCk7CisgICAgICAg
ICQkLT5zZXRWYWx1ZSgkMik7CisgICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUg
PSAkJC0+cHNldWRvVHlwZSgpOworICAgICAgICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNl
dWRvVW5rbm93bikKKyAgICAgICAgICAgICQkID0gMDsKKyAgICAgICAgZWxzZSBpZiAodHlwZSA9
PSBDU1NTZWxlY3Rvcjo6UHNldWRvTnRoQ2hpbGQgfHwKKyAgICAgICAgICAgICAgICAgdHlwZSA9
PSBDU1NTZWxlY3Rvcjo6UHNldWRvTnRoT2ZUeXBlIHx8CisgICAgICAgICAgICAgICAgIHR5cGUg
PT0gQ1NTU2VsZWN0b3I6OlBzZXVkb050aExhc3RDaGlsZCB8fAorICAgICAgICAgICAgICAgICB0
eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9OdGhMYXN0T2ZUeXBlKSB7CisgICAgICAgICAgICBp
ZiAoIWlzVmFsaWROdGhUb2tlbigkNCkpCisgICAgICAgICAgICAgICAgJCQgPSAwOworICAgICAg
ICB9CisgICAgfQorICAgIC8vIHVzZWQgYnkgOm5vdAorICAgIHwgJzonIE5PVEZVTkNUSU9OIG1h
eWJlX3NwYWNlIHNpbXBsZV9zZWxlY3RvciBtYXliZV9zcGFjZSAnKScgeworICAgICAgICBpZiAo
ISQ0IHx8ICEkNC0+aXNTaW1wbGUoKSkKKyAgICAgICAgICAgICQkID0gMDsKKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwor
ICAgICAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7CisKKyAg
ICAgICAgICAgIENTU1NlbGVjdG9yVmVjdG9yIHNlbGVjdG9yVmVjdG9yOworICAgICAgICAgICAg
c2VsZWN0b3JWZWN0b3IuYXBwZW5kKHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDQpKTsK
KyAgICAgICAgICAgICQkLT5hZG9wdFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9yVmVjdG9yKTsKKwor
ICAgICAgICAgICAgJDIubG93ZXIoKTsKKyAgICAgICAgICAgICQkLT5zZXRWYWx1ZSgkMik7Cisg
ICAgICAgIH0KKyAgICB9CisgIDsKKworZGVjbGFyYXRpb25fbGlzdDoKKyAgICBkZWNsYXJhdGlv
biB7CisgICAgICAgICQkID0gJDE7CisgICAgfQorICAgIHwgZGVjbF9saXN0IGRlY2xhcmF0aW9u
IHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgaWYgKCAkMiApCisgICAgICAgICAgICAkJCA9
ICQyOworICAgIH0KKyAgICB8IGRlY2xfbGlzdCB7CisgICAgICAgICQkID0gJDE7CisgICAgfQor
ICAgIHwgZXJyb3IgaW52YWxpZF9ibG9ja19saXN0IGVycm9yIHsKKyAgICAgICAgJCQgPSBmYWxz
ZTsKKyAgICB9CisgICAgfCBlcnJvciB7CisgICAgICAgICQkID0gZmFsc2U7CisgICAgfQorICAg
IHwgZGVjbF9saXN0IGVycm9yIHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAgfCBkZWNs
X2xpc3QgaW52YWxpZF9ibG9ja19saXN0IHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAg
OworCitkZWNsX2xpc3Q6CisgICAgZGVjbGFyYXRpb24gJzsnIG1heWJlX3NwYWNlIHsKKyAgICAg
ICAgcGFyc2VyLT5tYXJrUHJvcGVydHlTdGFydCgpOworICAgICAgICAkJCA9ICQxOworICAgIH0K
KyAgICB8IGRlY2xhcmF0aW9uIGludmFsaWRfYmxvY2tfbGlzdCBtYXliZV9zcGFjZSB7CisgICAg
ICAgICQkID0gZmFsc2U7CisgICAgfQorICAgIHwgZGVjbGFyYXRpb24gaW52YWxpZF9ibG9ja19s
aXN0ICc7JyBtYXliZV9zcGFjZSB7CisgICAgICAgICQkID0gZmFsc2U7CisgICAgfQorICAgIHwg
ZXJyb3IgJzsnIG1heWJlX3NwYWNlIHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlTdGFy
dCgpOworICAgICAgICAkJCA9IGZhbHNlOworICAgIH0KKyAgICB8IGVycm9yIGludmFsaWRfYmxv
Y2tfbGlzdCBlcnJvciAnOycgbWF5YmVfc3BhY2UgeworICAgICAgICAkJCA9IGZhbHNlOworICAg
IH0KKyAgICB8IGRlY2xfbGlzdCBkZWNsYXJhdGlvbiAnOycgbWF5YmVfc3BhY2UgeworICAgICAg
ICBwYXJzZXItPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7CisgICAgICAgICQkID0gJDE7CisgICAgICAg
IGlmICgkMikKKyAgICAgICAgICAgICQkID0gJDI7CisgICAgfQorICAgIHwgZGVjbF9saXN0IGVy
cm9yICc7JyBtYXliZV9zcGFjZSB7CisgICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5U3RhcnQo
KTsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAgfCBkZWNsX2xpc3QgZXJyb3IgaW52YWxp
ZF9ibG9ja19saXN0IGVycm9yICc7JyBtYXliZV9zcGFjZSB7CisgICAgICAgIHBhcnNlci0+bWFy
a1Byb3BlcnR5U3RhcnQoKTsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAgOworCitkZWNs
YXJhdGlvbjoKKyAgICBWQVJfREVGSU5JVElPTiAnOicgbWF5YmVfc3BhY2UgZXhwciBwcmlvIHsK
KyNpZiBFTkFCTEVfQ1NTX1ZBUklBQkxFUworICAgICAgICBwYXJzZXItPnN0b3JlVmFyaWFibGVE
ZWNsYXJhdGlvbigkMSwgcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDQpLCAkNSk7Cisg
ICAgICAgICQkID0gdHJ1ZTsKKyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlFbmQoJDUsIHRy
dWUpOworI2Vsc2UKKyAgICAgICAgJCQgPSBmYWxzZTsKKyNlbmRpZgorICAgIH0KKyAgICB8Cisg
ICAgcHJvcGVydHkgJzonIG1heWJlX3NwYWNlIGV4cHIgcHJpbyB7CisgICAgICAgICQkID0gZmFs
c2U7CisgICAgICAgIGJvb2wgaXNQcm9wZXJ0eVBhcnNlZCA9IGZhbHNlOworICAgICAgICBpZiAo
JDEgJiYgJDQpIHsKKyAgICAgICAgICAgIHBhcnNlci0+bV92YWx1ZUxpc3QgPSBwYXJzZXItPnNp
bmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCk7CisgICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVy
dGllcyA9IHBhcnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCk7CisgICAgICAgICAgICAk
JCA9IHBhcnNlci0+cGFyc2VWYWx1ZShzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPigkMSksICQ1
KTsKKyAgICAgICAgICAgIGlmICghJCQpCisgICAgICAgICAgICAgICAgcGFyc2VyLT5yb2xsYmFj
a0xhc3RQcm9wZXJ0aWVzKHBhcnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCkgLSBvbGRQ
YXJzZWRQcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpc1By
b3BlcnR5UGFyc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIHBhcnNlci0+bV92YWx1ZUxpc3QgPSBu
dWxscHRyOworICAgICAgICB9CisgICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5RW5kKCQ1LCBp
c1Byb3BlcnR5UGFyc2VkKTsKKyAgICB9CisgICAgfAorICAgIHByb3BlcnR5IGVycm9yIHsKKyAg
ICAgICAgJCQgPSBmYWxzZTsKKyAgICB9CisgICAgfAorICAgIHByb3BlcnR5ICc6JyBtYXliZV9z
cGFjZSBlcnJvciBleHByIHByaW8geworICAgICAgICAvKiBUaGUgZGVmYXVsdCBtb3ZhYmxlIHR5
cGUgdGVtcGxhdGUgaGFzIGxldHRlci1zcGFjaW5nOiAubm9uZTsgIEhhbmRsZSB0aGlzIGJ5IGxv
b2tpbmcgZm9yCisgICAgICAgIGVycm9yIHRva2VucyBhdCB0aGUgc3RhcnQgb2YgYW4gZXhwciwg
cmVjb3ZlciB0aGUgZXhwciBhbmQgdGhlbiB0cmVhdCBhcyBhbiBlcnJvciwgY2xlYW5pbmcKKyAg
ICAgICAgdXAgYW5kIGRlbGV0aW5nIHRoZSBzaGlmdGVkIGV4cHIuICAqLworICAgICAgICBwYXJz
ZXItPm1hcmtQcm9wZXJ0eUVuZChmYWxzZSwgZmFsc2UpOworICAgICAgICAkJCA9IGZhbHNlOwor
ICAgIH0KKyAgICB8CisgICAgcHJvcGVydHkgJzonIG1heWJlX3NwYWNlIGV4cHIgcHJpbyBlcnJv
ciB7CisgICAgICAgIC8qIFdoZW4gd2UgZW5jb3VudGVyIHNvbWV0aGluZyBsaWtlIHAge2NvbG9y
OiByZWQgIWltcG9ydGFudCBmYWlsO30gd2Ugc2hvdWxkIGRyb3AgdGhlIGRlY2xhcmF0aW9uICov
CisgICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5RW5kKGZhbHNlLCBmYWxzZSk7CisgICAgICAg
ICQkID0gZmFsc2U7CisgICAgfQorICAgIHwKKyAgICBJTVBPUlRBTlRfU1lNIG1heWJlX3NwYWNl
IHsKKyAgICAgICAgLyogSGFuZGxlIHRoaXMgY2FzZTogZGl2IHsgdGV4dC1hbGlnbjogY2VudGVy
OyAhaW1wb3J0YW50IH0gSnVzdCByZWR1Y2UgYXdheSB0aGUgc3RyYXkgIWltcG9ydGFudC4gKi8K
KyAgICAgICAgJCQgPSBmYWxzZTsKKyAgICB9CisgICAgfAorICAgIHByb3BlcnR5ICc6JyBtYXli
ZV9zcGFjZSB7CisgICAgICAgIC8qIGRpdiB7IGZvbnQtZmFtaWx5OiB9IEp1c3QgcmVkdWNlIGF3
YXkgdGhpcyBwcm9wZXJ0eSB3aXRoIG5vIHZhbHVlLiAqLworICAgICAgICBwYXJzZXItPm1hcmtQ
cm9wZXJ0eUVuZChmYWxzZSwgZmFsc2UpOworICAgICAgICAkJCA9IGZhbHNlOworICAgIH0KKyAg
ICB8CisgICAgcHJvcGVydHkgJzonIG1heWJlX3NwYWNlIGVycm9yIHsKKyAgICAgICAgLyogaWYg
d2UgY29tZSBhY3Jvc3MgcnVsZXMgd2l0aCBpbnZhbGlkIHZhbHVlcyBsaWtlIHRoaXMgY2FzZTog
cCB7IHdlaWdodDogKjsgfSwganVzdCBkaXNjYXJkIHRoZSBydWxlICovCisgICAgICAgIHBhcnNl
ci0+bWFya1Byb3BlcnR5RW5kKGZhbHNlLCBmYWxzZSk7CisgICAgICAgICQkID0gZmFsc2U7Cisg
ICAgfQorICAgIHwKKyAgICBwcm9wZXJ0eSBpbnZhbGlkX2Jsb2NrIHsKKyAgICAgICAgLyogaWYg
d2UgY29tZSBhY3Jvc3M6IGRpdiB7IGNvbG9yeztjb2xvcjptYXJvb259IH0sIGlnbm9yZSBldmVy
eXRoaW5nIHdpdGhpbiBjdXJseSBicmFja2V0cyAqLworICAgICAgICAkJCA9IGZhbHNlOworICAg
IH0KKyAgOworCitwcm9wZXJ0eToKKyAgICBJREVOVCBtYXliZV9zcGFjZSB7CisgICAgICAgICQk
ID0gY3NzUHJvcGVydHlJRCgkMSk7CisgICAgfQorICA7CisKK3ByaW86CisgICAgSU1QT1JUQU5U
X1NZTSBtYXliZV9zcGFjZSB7ICQkID0gdHJ1ZTsgfQorICAgIHwgLyogZW1wdHkgKi8geyAkJCA9
IGZhbHNlOyB9CisgIDsKKworZXhwcjoKKyAgICB0ZXJtIHsKKyAgICAgICAgJCQgPSBwYXJzZXIt
PmNyZWF0ZUZsb2F0aW5nVmFsdWVMaXN0KCk7CisgICAgICAgICQkLT5hZGRWYWx1ZShwYXJzZXIt
PnNpbmtGbG9hdGluZ1ZhbHVlKCQxKSk7CisgICAgfQorICAgIHwgZXhwciBvcGVyYXRvciB0ZXJt
IHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgaWYgKCQkKSB7CisgICAgICAgICAgICBpZiAo
JDIpIHsKKyAgICAgICAgICAgICAgICBDU1NQYXJzZXJWYWx1ZSB2OworICAgICAgICAgICAgICAg
IHYuaWQgPSAwOworICAgICAgICAgICAgICAgIHYudW5pdCA9IENTU1BhcnNlclZhbHVlOjpPcGVy
YXRvcjsKKyAgICAgICAgICAgICAgICB2LmlWYWx1ZSA9ICQyOworICAgICAgICAgICAgICAgICQk
LT5hZGRWYWx1ZSh2KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICQkLT5hZGRWYWx1ZShw
YXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlKCQzKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgfCBl
eHByIGludmFsaWRfYmxvY2tfbGlzdCB7CisgICAgICAgICQkID0gMDsKKyAgICB9CisgICAgfCBl
eHByIGludmFsaWRfYmxvY2tfbGlzdCBlcnJvciB7CisgICAgICAgICQkID0gMDsKKyAgICB9Cisg
ICAgfCBleHByIGVycm9yIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKyAgOworCitvcGVyYXRv
cjoKKyAgICAnLycgbWF5YmVfc3BhY2UgeworICAgICAgICAkJCA9ICcvJzsKKyAgICB9CisgIHwg
JywnIG1heWJlX3NwYWNlIHsKKyAgICAgICAgJCQgPSAnLCc7CisgICAgfQorICB8IC8qIGVtcHR5
ICovIHsKKyAgICAgICAgJCQgPSAwOworICB9CisgIDsKKwordGVybToKKyAgdW5hcnlfdGVybSB7
ICQkID0gJDE7IH0KKyAgfCB1bmFyeV9vcGVyYXRvciB1bmFyeV90ZXJtIHsgJCQgPSAkMjsgJCQu
ZlZhbHVlICo9ICQxOyB9CisgIHwgU1RSSU5HIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5z
dHJpbmcgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HOyB9Cisg
IHwgSURFTlQgbWF5YmVfc3BhY2UgeworICAgICAgJCQuaWQgPSBjc3NWYWx1ZUtleXdvcmRJRCgk
MSk7CisgICAgICAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVDsKKyAgICAg
ICQkLnN0cmluZyA9ICQxOworICB9CisgIC8qIFdlIG1pZ2h0IG5lZWQgdG8gYWN0dWFsbHkgcGFy
c2UgdGhlIG51bWJlciBmcm9tIGEgZGltZW5zaW9uLCBidXQgd2UgY2FuJ3QganVzdCBwdXQgc29t
ZXRoaW5nIHRoYXQgdXNlcyAkJC5zdHJpbmcgaW50byB1bmFyeV90ZXJtLiAqLworICB8IERJTUVO
IG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfRElNRU5TSU9OOyB9CisgIHwgdW5hcnlfb3BlcmF0b3IgRElNRU4g
bWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQyOyAkJC51bml0ID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19ESU1FTlNJT047IH0KKyAgfCBVUkkgbWF5YmVfc3BhY2UgeyAkJC5p
ZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19V
Ukk7IH0KKyAgfCBVTklDT0RFUkFOR0UgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmlu
ZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VTklDT0RFX1JBTkdFOyB9
CisgIHwgSEVYIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5p
dCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEFSU0VSX0hFWENPTE9SOyB9CisgIHwgJyMnIG1h
eWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSBDU1NQYXJzZXJTdHJpbmcoKTsgJCQu
dW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEFSU0VSX0hFWENPTE9SOyB9IC8qIEhhbmRs
ZSBlcnJvciBjYXNlOiAiY29sb3I6ICM7IiAqLworICB8IFZBUkZVTkNUSU9OIG1heWJlX3NwYWNl
IElERU5UICcpJyBtYXliZV9zcGFjZSB7CisjaWYgRU5BQkxFX0NTU19WQVJJQUJMRVMKKyAgICAg
ICQkLmlkID0gMDsKKyAgICAgICQkLnN0cmluZyA9ICQzOworICAgICAgJCQudW5pdCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfVkFSSUFCTEVfTkFNRTsKKyNlbmRpZgorICB9CisgIC8qIEZJWE1F
OiBhY2NvcmRpbmcgdG8gdGhlIHNwZWNzIGEgZnVuY3Rpb24gY2FuIGhhdmUgYSB1bmFyeV9vcGVy
YXRvciBpbiBmcm9udC4gSSBrbm93IG5vIGNhc2Ugd2hlcmUgdGhpcyBtYWtlcyBzZW5zZSAqLwor
ICB8IGZ1bmN0aW9uIHsKKyAgICAgICQkID0gJDE7CisgIH0KKyAgfCBjYWxjX2Z1bmN0aW9uIHsK
KyAgICAgICQkID0gJDE7CisgIH0KKyAgfCBtaW5fb3JfbWF4X2Z1bmN0aW9uIHsKKyAgICAgICQk
ID0gJDE7CisgIH0KKyAgfCAnJScgbWF5YmVfc3BhY2UgeyAvKiBIYW5kbGUgd2lkdGg6ICU7ICov
CisgICAgICAkJC5pZCA9IDA7ICQkLnVuaXQgPSAwOworICB9CisgIDsKKwordW5hcnlfdGVybToK
KyAgSU5URUdFUiBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuaXNJbnQgPSB0cnVlOyAkJC5m
VmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOyB9Cisg
IHwgRkxPQVRUT0tFTiBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuaXNJbnQgPSBmYWxzZTsg
JCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjsg
fQorICB8IFBFUkNFTlRBR0UgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQx
OyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFOyB9CisgIHwgUFhT
IG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUFg7IH0KKyAgfCBDTVMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7
ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19DTTsgfQor
ICB8IE1NUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01NOyB9CisgIHwgSU5TIG1heWJlX3NwYWNlIHsgJCQu
aWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
SU47IH0KKyAgfCBQVFMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAk
JC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QVDsgfQorICB8IFBDUyBtYXliZV9zcGFj
ZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1BDOyB9CisgIHwgREVHUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVl
ID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRzsgfQorICB8IFJBRFMg
bWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19SQUQ7IH0KKyAgfCBHUkFEUyBtYXliZV9zcGFjZSB7ICQkLmlkID0g
MDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0dSQUQ7
IH0KKyAgfCBUVVJOUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQk
LnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1RVUk47IH0KKyAgfCBNU0VDUyBtYXliZV9z
cGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX01TOyB9CisgIHwgU0VDUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZh
bHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1M7IH0KKyAgfCBIRVJU
WiBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0haOyB9CisgIHwgS0hFUlRaIG1heWJlX3NwYWNlIHsgJCQuaWQg
PSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfS0ha
OyB9CisgIHwgRU1TIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQu
dW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TOyB9CisgIHwgUUVNUyBtYXliZV9zcGFj
ZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6
UV9FTVM7IH0KKyAgfCBFWFMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQx
OyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FWFM7IH0KKyAgfCBSRU1TIG1heWJl
X3NwYWNlIHsKKyAgICAgICQkLmlkID0gMDsKKyAgICAgICQkLmZWYWx1ZSA9ICQxOworICAgICAg
JCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkVNUzsKKyAgICAgIGlmIChwYXJzZXIt
Pm1fc3R5bGVTaGVldCkKKyAgICAgICAgICBwYXJzZXItPm1fc3R5bGVTaGVldC0+cGFyc2VyU2V0
VXNlc1JlbVVuaXRzKHRydWUpOworICB9CisgIHwgVlcgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7
ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WVzsgfQor
ICB8IFZIIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVkg7IH0KKyAgfCBWTUlOIG1heWJlX3NwYWNlIHsgJCQu
aWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
Vk1JTjsgfQorICB8IERQUFggbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQx
OyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19EUFBYOyB9CisgIHwgRFBJIG1heWJl
X3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfRFBJOyB9CisgIHwgRFBDTSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQu
ZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQQ007IH0KKyAg
OworCitmdW5jdGlvbjoKKyAgICBGVU5DVElPTiBtYXliZV9zcGFjZSBleHByICcpJyBtYXliZV9z
cGFjZSB7CisgICAgICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9h
dGluZ0Z1bmN0aW9uKCk7CisgICAgICAgIGYtPm5hbWUgPSAkMTsKKyAgICAgICAgZi0+YXJncyA9
IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQzKTsKKyAgICAgICAgJCQuaWQgPSAwOwor
ICAgICAgICAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uOworICAgICAgICAkJC5m
dW5jdGlvbiA9IGY7CisgICAgfSB8CisgICAgRlVOQ1RJT04gbWF5YmVfc3BhY2UgZXhwciBUT0tF
Tl9FT0YgeworICAgICAgICBDU1NQYXJzZXJGdW5jdGlvbiogZiA9IHBhcnNlci0+Y3JlYXRlRmxv
YXRpbmdGdW5jdGlvbigpOworICAgICAgICBmLT5uYW1lID0gJDE7CisgICAgICAgIGYtPmFyZ3Mg
PSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkMyk7CisgICAgICAgICQkLmlkID0gMDsK
KyAgICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKKyAgICAgICAgJCQu
ZnVuY3Rpb24gPSBmOworICAgIH0gfAorICAgIEZVTkNUSU9OIG1heWJlX3NwYWNlICcpJyBtYXli
ZV9zcGFjZSB7CisgICAgICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVG
bG9hdGluZ0Z1bmN0aW9uKCk7CisgICAgICAgIGYtPm5hbWUgPSAkMTsKKyAgICAgICAgQ1NTUGFy
c2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nVmFsdWVMaXN0
KCk7CisgICAgICAgIGYtPmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCh2YWx1
ZUxpc3QpOworICAgICAgICAkJC5pZCA9IDA7CisgICAgICAgICQkLnVuaXQgPSBDU1NQYXJzZXJW
YWx1ZTo6RnVuY3Rpb247CisgICAgICAgICQkLmZ1bmN0aW9uID0gZjsKKyAgICB9IHwKKyAgICBG
VU5DVElPTiBtYXliZV9zcGFjZSBlcnJvciB7CisgICAgICAgIENTU1BhcnNlckZ1bmN0aW9uKiBm
ID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7CisgICAgICAgIGYtPm5hbWUgPSAk
MTsKKyAgICAgICAgZi0+YXJncyA9IG51bGxwdHI7CisgICAgICAgICQkLmlkID0gMDsKKyAgICAg
ICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKKyAgICAgICAgJCQuZnVuY3Rp
b24gPSBmOworICB9CisgIDsKKyAKK2NhbGNfZnVuY190ZXJtOgorICB1bmFyeV90ZXJtIHsgJCQg
PSAkMTsgfQorICB8IHVuYXJ5X29wZXJhdG9yIHVuYXJ5X3Rlcm0geyAkJCA9ICQyOyAkJC5mVmFs
dWUgKj0gJDE7IH0KKyAgOworCitjYWxjX2Z1bmNfb3BlcmF0b3I6CisgICAgJysnIFdISVRFU1BB
Q0UgeworICAgICAgICAkJCA9ICcrJzsKKyAgICB9CisgICAgfCAnLScgV0hJVEVTUEFDRSB7Cisg
ICAgICAgICQkID0gJy0nOworICAgIH0KKyAgICB8ICcqJyBtYXliZV9zcGFjZSB7CisgICAgICAg
ICQkID0gJyonOworICAgIH0KKyAgICB8ICcvJyBtYXliZV9zcGFjZSB7CisgICAgICAgICQkID0g
Jy8nOworICAgIH0KKyAgOworCitjYWxjX2Z1bmNfcGFyZW5fZXhwcjoKKyAgICAnKCcgbWF5YmVf
c3BhY2UgY2FsY19mdW5jX2V4cHIgbWF5YmVfc3BhY2UgJyknIG1heWJlX3NwYWNlIHsKKyAgICAg
ICAgaWYgKCQzKSB7CisgICAgICAgICAgICAkJCA9ICQzOworICAgICAgICAgICAgQ1NTUGFyc2Vy
VmFsdWUgdjsKKyAgICAgICAgICAgIHYuaWQgPSAwOworICAgICAgICAgICAgdi51bml0ID0gQ1NT
UGFyc2VyVmFsdWU6Ok9wZXJhdG9yOworICAgICAgICAgICAgdi5pVmFsdWUgPSAnKCc7CisgICAg
ICAgICAgICAkJC0+aW5zZXJ0VmFsdWVBdCgwLCB2KTsKKyAgICAgICAgICAgIHYuaVZhbHVlID0g
JyknOworICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHYpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICQkID0gMDsKKyAgICB9CisKK2NhbGNfZnVuY19leHByOgorICAgIGNhbGNfZnVuY190
ZXJtIG1heWJlX3NwYWNlIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nVmFs
dWVMaXN0KCk7CisgICAgICAgICQkLT5hZGRWYWx1ZShwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVl
KCQxKSk7CisgICAgfQorICAgIHwgY2FsY19mdW5jX2V4cHIgY2FsY19mdW5jX29wZXJhdG9yIGNh
bGNfZnVuY190ZXJtIHsKKyAgICAgICAgaWYgKCQxICYmICQyKSB7CisgICAgICAgICAgICAkJCA9
ICQxOworICAgICAgICAgICAgQ1NTUGFyc2VyVmFsdWUgdjsKKyAgICAgICAgICAgIHYuaWQgPSAw
OworICAgICAgICAgICAgdi51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOworICAgICAg
ICAgICAgdi5pVmFsdWUgPSAkMjsKKyAgICAgICAgICAgICQkLT5hZGRWYWx1ZSh2KTsKKyAgICAg
ICAgICAgICQkLT5hZGRWYWx1ZShwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlKCQzKSk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgJCQgPSAwOworCisgICAgfQorICAgIHwgY2FsY19mdW5j
X2V4cHIgY2FsY19mdW5jX29wZXJhdG9yIGNhbGNfZnVuY19wYXJlbl9leHByIHsKKyAgICAgICAg
aWYgKCQxICYmICQyICYmICQzKSB7CisgICAgICAgICAgICAkJCA9ICQxOworICAgICAgICAgICAg
Q1NTUGFyc2VyVmFsdWUgdjsKKyAgICAgICAgICAgIHYuaWQgPSAwOworICAgICAgICAgICAgdi51
bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOworICAgICAgICAgICAgdi5pVmFsdWUgPSAk
MjsKKyAgICAgICAgICAgICQkLT5hZGRWYWx1ZSh2KTsKKyAgICAgICAgICAgICQkLT5leHRlbmQo
KigkMykpOworICAgICAgICB9IGVsc2UgCisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQorICAg
IHwgY2FsY19mdW5jX3BhcmVuX2V4cHIKKyAgICB8IGNhbGNfZnVuY19leHByIGVycm9yIHsKKyAg
ICAgICAgJCQgPSAwOworICAgIH0KKyAgOworCitjYWxjX2Z1bmNfZXhwcl9saXN0OgorICAgIGNh
bGNfZnVuY19leHByICB7CisgICAgICAgICQkID0gJDE7CisgICAgfSAgICAKKyAgICB8IGNhbGNf
ZnVuY19leHByX2xpc3QgJywnIG1heWJlX3NwYWNlIGNhbGNfZnVuY19leHByIHsKKyAgICAgICAg
aWYgKCQxICYmICQ0KSB7CisgICAgICAgICAgICAkJCA9ICQxOworICAgICAgICAgICAgQ1NTUGFy
c2VyVmFsdWUgdjsKKyAgICAgICAgICAgIHYuaWQgPSAwOworICAgICAgICAgICAgdi51bml0ID0g
Q1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOworICAgICAgICAgICAgdi5pVmFsdWUgPSAnLCc7Cisg
ICAgICAgICAgICAkJC0+YWRkVmFsdWUodik7CisgICAgICAgICAgICAkJC0+ZXh0ZW5kKCooJDQp
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIAorCitj
YWxjX2Z1bmN0aW9uOgorICAgIENBTENGVU5DVElPTiBtYXliZV9zcGFjZSBjYWxjX2Z1bmNfZXhw
ciAnKScgbWF5YmVfc3BhY2UgeworICAgICAgICBDU1NQYXJzZXJGdW5jdGlvbiogZiA9IHBhcnNl
ci0+Y3JlYXRlRmxvYXRpbmdGdW5jdGlvbigpOworICAgICAgICBmLT5uYW1lID0gJDE7CisgICAg
ICAgIGYtPmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkMyk7CisgICAgICAg
ICQkLmlkID0gMDsKKyAgICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsK
KyAgICAgICAgJCQuZnVuY3Rpb24gPSBmOworICAgIH0KKyAgICB8IENBTENGVU5DVElPTiBtYXli
ZV9zcGFjZSBlcnJvciB7CisgICAgICAgIFlZRVJST1I7CisgICAgfQorICAgIDsKKworCittaW5f
b3JfbWF4OgorICAgIE1JTkZVTkNUSU9OIHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAg
fCBNQVhGVU5DVElPTiB7CisgICAgICAgICQkID0gJDE7CisgICAgfQorICAgIDsKKworbWluX29y
X21heF9mdW5jdGlvbjoKKyAgICBtaW5fb3JfbWF4IG1heWJlX3NwYWNlIGNhbGNfZnVuY19leHBy
X2xpc3QgJyknIG1heWJlX3NwYWNlIHsKKyAgICAgICAgQ1NTUGFyc2VyRnVuY3Rpb24qIGYgPSBw
YXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsKKyAgICAgICAgZi0+bmFtZSA9ICQxOwor
ICAgICAgICBmLT5hcmdzID0gcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDMpOworICAg
ICAgICAkJC5pZCA9IDA7CisgICAgICAgICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rp
b247CisgICAgICAgICQkLmZ1bmN0aW9uID0gZjsKKyAgICB9IAorICAgIHwgbWluX29yX21heCBt
YXliZV9zcGFjZSBlcnJvciB7CisgICAgICAgIFlZRVJST1I7CisgICAgfQorICAgIDsKKworLyog
ZXJyb3IgaGFuZGxpbmcgcnVsZXMgKi8KKworc2F2ZV9ibG9jazoKKyAgICBjbG9zaW5nX2JyYWNl
IHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKyAgfCBlcnJvciBjbG9zaW5nX2JyYWNlIHsKKyAg
ICAgICAgJCQgPSAwOworICAgIH0KKyAgICA7CisKK2ludmFsaWRfYXQ6CisgICAgQVRLRVlXT1JE
IGVycm9yIGludmFsaWRfYmxvY2sgeworICAgICAgICAkJCA9IDA7CisgICAgfQorICB8IEFUS0VZ
V09SRCBlcnJvciAnOycgeworICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIDsKKworaW52YWxp
ZF9ydWxlOgorICAgIGVycm9yIGludmFsaWRfYmxvY2sgeworICAgICAgICAkJCA9IDA7CisgICAg
fQorCisvKgorICBTZWVtcyBsaWtlIHRoZSB0d28gcnVsZXMgYmVsb3cgYXJlIHRyeWluZyB0b28g
bXVjaCBhbmQgdmlvbGF0aW5nCisgIGh0dHA6Ly93d3cuaGl4aWUuY2gvdGVzdHMvZXZpbC9taXhl
ZC9jc3NlcnJvcmhhbmRsaW5nLmh0bWwKKworICB8IGVycm9yICc7JyB7CisgICAgICAgICQkID0g
MDsKKyAgICB9CisgIHwgZXJyb3IgJ30nIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKyovCisg
ICAgOworCitpbnZhbGlkX2Jsb2NrOgorICAgICd7JyBlcnJvciBpbnZhbGlkX2Jsb2NrX2xpc3Qg
ZXJyb3IgY2xvc2luZ19icmFjZSB7CisgICAgICAgIHBhcnNlci0+aW52YWxpZEJsb2NrSGl0KCk7
CisgICAgfQorICB8ICd7JyBlcnJvciBjbG9zaW5nX2JyYWNlIHsKKyAgICAgICAgcGFyc2VyLT5p
bnZhbGlkQmxvY2tIaXQoKTsKKyAgICB9CisgICAgOworCitpbnZhbGlkX2Jsb2NrX2xpc3Q6Cisg
ICAgaW52YWxpZF9ibG9jaworICB8IGludmFsaWRfYmxvY2tfbGlzdCBlcnJvciBpbnZhbGlkX2Js
b2NrCis7CisKKyUlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55
LmluY2x1ZGVzIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbmNsdWRlcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wOWRjMzNhOWNmZWM1OGRlZWVmZTRjMGRmNzdhOTA1YzQxMjY1Y2FkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbmNsdWRlcwpAQCAt
MCwwICsxLDU2IEBACisleworCisvKgorICogIENvcHlyaWdodCAoQykgMjAwMi0yMDAzIExhcnMg
S25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29t
KQorICogIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisg
KiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9z
dG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2luY2x1ZGUgIkNTU1BhcnNlci5oIgorI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIKKyNp
bmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMu
aCIKKyNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgorI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5o
IgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVk
ZSAiTWVkaWFMaXN0LmgiCisjaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgorI2luY2x1ZGUgIlN0
eWxlUnVsZS5oIgorI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgorI2luY2x1ZGUgIldl
YktpdENTU0tleWZyYW1lUnVsZS5oIgorI2luY2x1ZGUgIldlYktpdENTU0tleWZyYW1lc1J1bGUu
aCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2lu
Y2x1ZGUgPHN0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CisKKyNkZWZpbmUgWVlNQUxMT0MgZmFzdE1hbGxvYworI2RlZmluZSBZ
WUZSRUUgZmFzdEZyZWUKKworI2RlZmluZSBZWUVOQUJMRV9OTFMgMAorI2RlZmluZSBZWUxUWVBF
X0lTX1RSSVZJQUwgMQorI2RlZmluZSBZWU1BWERFUFRIIDEwMDAwCisjZGVmaW5lIFlZREVCVUcg
MAorCislfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167800</attachid>
            <date>2012-10-09 11:33:49 -0700</date>
            <delta_ts>2012-10-09 12:27:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94290-20121009113250.patch</filename>
            <type>text/plain</type>
            <size>119241</size>
            <attacher name="Pablo Flouret">pf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQxMjM2OTljNGMxMDg0
NDljYjVlZDM2Yjk2MWU0MjI0ZDhhZTcxMi4uMTYxZTI4YmY4MzZkZGU0NmM3MDM2MzBmYmQwYTgz
ZWQ4YjQ3ZGQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTEwLTA5ICBQYWJs
byBGbG91cmV0ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBQcmUtcHJvY2VzcyBD
U1NHcmFtbWFyLnkgYmVmb3JlIHJ1bm5pbmcgdGhyb3VnaCBiaXNvbi4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MjkwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUnVubmluZyBDU1NHcmFtbWFyLnkgdGhy
b3VnaCBhIHByZXByb2Nlc3NvciBhbGxvd3MgdGhlIHVzZSBvZiBmZWF0dXJlCisgICAgICAgIGRl
ZmluZXMgaW4gYWxsIHBsYWNlcyBvZiB0aGUgeWFjYyBmaWxlIChpLmUuIG5vdCBqdXN0IGluIEMg
YmxvY2tzKS4KKyAgICAgICAgTW9zdGx5IHVzZWZ1bCB0byBiZSBhYmxlIHRvIGtlZXAgZXZlcnkg
cGFydCBvZiBhIGZlYXR1cmUgdW5kZXIgZmVhdHVyZQorICAgICAgICBmbGFncyBmb3Igc2VsZi1k
b2N1bWVudGluZyBwdXJwb3Nlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIENTU0dyYW1tYXIu
eSBzaG91bGQgYmUgZ2VuZXJhdGVkIGNvcnJlY3RseSBhbmQgZXZlcnl0aGluZworICAgICAgICBz
aG91bGQga2VlcCB3b3JraW5nIGFzIGJlZm9yZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMucHJpOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAgICAgTW9kaWZ5IGJ1
aWxkIHN5c3RlbXMgdG8gdXNlIG1ha2VncmFtbWFyLnBsIHRvIGdlbmVyYXRlIHRoZSAueSBmaWxl
cworICAgICAgICAgICAgYW5kIHJ1biB0aG9zZSB0aHJvdWdoIGJpc29uLgorCisgICAgICAgICog
V2ViQ29yZS5neXAvV2ViQ29yZS5neXA6CisgICAgICAgICogV2ViQ29yZS5neXAvc2NyaXB0cy9h
Y3Rpb25fcHJlcHJvY2Vzc2dyYW1tYXIucHk6IEFkZGVkLgorICAgICAgICAgICAgQWRkIGEgbmV3
IGFjdGlvbiB0byBwcmVwcm9jZXNzIHRoZSBDU1NHcmFtbWFyLnkuaW4gZmlsZSBiZWZvcmUgdGhl
CisgICAgICAgICAgICBiaXNvbiBydWxlIGlzIHJ1bi4KKworICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgICAgIEFkZCB0aGUgbmV3IC55LmluIC8gLnkuaW5jbHVkZXMgZmls
ZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55LmluOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS4KKyAgICAgICAgICAgIEFsc28gbW92ZWQgdGhlIHRv
cCBkZWNsYXJhdGlvbnMgc2VjdGlvbiB0aGF0IGhhcyBpbmNsdWRlcywgZGVmaW5lcywKKyAgICAg
ICAgICAgIGV0Yy4gdG8gaXRzIG93biBmaWxlLiBUaGVzZSBzaG91bGRuJ3QgYmUgdG91Y2hlZCBi
eSB0aGUgZmlyc3QKKyAgICAgICAgICAgIHBhc3Mgb2YgdGhlIHByZXByb2Nlc3Nvci4gQW5kIGNo
YW5nZWQgdGhlIGV4aXN0aW5nIEVOQUJMRShGRUFUVVJFKQorICAgICAgICAgICAgaWZkZWZzIHRv
IEVOQUJMRV9GRUFUVVJFIHNpbmNlIHRoZSBFTkFCTEUoKSBtYWNybyBpcyBub3QgYXZhaWxhYmxl
CisgICAgICAgICAgICB5ZXQuCisgICAgICAgICogY3NzL0NTU0dyYW1tYXIueS5pbmNsdWRlczog
QWRkZWQuCisgICAgICAgICAgICBUaGUgYWZvcmVtZW50aW9uZWQgZGVjbGFyYXRpb25zIGhlYWRl
ciBzZWN0aW9uLiBBZnRlciB0aGUgLnkuaW4gZmlsZQorICAgICAgICAgICAgaXMgcHJvY2Vzc2Vk
IGl0IHdpbGwgYmUgY29uY2F0ZW5hdGVkIHdpdGggdGhpcyBvbmUgdG8gbWFrZSB0aGUKKyAgICAg
ICAgICAgIENTU0dyYW1tYXIueSBmaWxlLgorCisgICAgICAgICogY3NzL21ha2VncmFtbWFyLnBs
OgorICAgICAgICAgICAgTW9kaWZ5IHRoZSBzY3JpcHQgdG8gaGFuZGxlIC55LmluIGZpbGVzLgor
CiAyMDEyLTEwLTA5ICBQcmF2aW4gRCAgPHByYXZpbmQuMms0QGdtYWlsLmNvbT4KIAogICAgICAg
ICBtYXgtd2lkdGggcHJvcGVydHkgaXMgZG9lcyBub3Qgb3ZlcnJpZGluZyB0aGUgd2lkdGggcHJv
cGVydGllcyBmb3IgY3NzIHRhYmxlcyhkaXNwbGF5OnRhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCA4NjY0NGIxOGJmNTY4NDU1NjA1ZDJhMzBjMmQyMDc4NjlmOTYyOTYzLi4wYWE5NjliNTU1
NDk5YWZiOTY1MWE3ZjIyMDc5MjNhNDY2YWM3ZjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
Mjg1OCwxMSArMjg1OCwxMSBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtERVJJVkVE
X1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1VzZXJBZ2VudFN0eWxlU2hlZXRzRAogQUREX1NPVVJDRV9X
RUJDT1JFX0RFUklWRURfREVQRU5ERU5DSUVTKCR7V0VCQ09SRV9ESVJ9L2Nzcy9TdHlsZVJlc29s
dmVyLmNwcCBVc2VyQWdlbnRTdHlsZVNoZWV0c0RhdGEuY3BwIFVzZXJBZ2VudFN0eWxlU2hlZXRz
LmgpCiAKIAotR0VORVJBVEVfR1JBTU1BUihjc3N5eSAke1dFQkNPUkVfRElSfS9jc3MvQ1NTR3Jh
bW1hci55ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9DU1NHcmFtbWFyLmggJHtERVJJ
VkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0NTU0dyYW1tYXIuY3BwKQorR0VORVJBVEVfR1JBTU1B
Uihjc3N5eSAke1dFQkNPUkVfRElSfS9jc3MvQ1NTR3JhbW1hci55LmluICR7REVSSVZFRF9TT1VS
Q0VTX1dFQkNPUkVfRElSfS9DU1NHcmFtbWFyLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9L0NTU0dyYW1tYXIuY3BwICR7V0VCQ09SRV9ESVJ9L2Nzcy9DU1NHcmFtbWFyLnkuaW5jbHVk
ZXMgIiR7RkVBVFVSRV9ERUZJTkVTX1dJVEhfU1BBQ0VfU0VQQVJBVE9SfSIpCiBMSVNUKEFQUEVO
RCBXZWJDb3JlX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0NTU0dyYW1t
YXIuY3BwKQogCiAKLUdFTkVSQVRFX0dSQU1NQVIoeHBhdGh5eSAke1dFQkNPUkVfRElSfS94bWwv
WFBhdGhHcmFtbWFyLnkgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1hQYXRoR3JhbW1h
ci5oICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9YUGF0aEdyYW1tYXIuY3BwKQorR0VO
RVJBVEVfR1JBTU1BUih4cGF0aHl5ICR7V0VCQ09SRV9ESVJ9L3htbC9YUGF0aEdyYW1tYXIueSAk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vWFBhdGhHcmFtbWFyLmggJHtERVJJVkVEX1NP
VVJDRVNfV0VCQ09SRV9ESVJ9L1hQYXRoR3JhbW1hci5jcHAgIiIgIiIpCiBMSVNUKEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1hQYXRoR3JhbW1h
ci5jcHApCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZDY5MDg1NjRkMGQ1
ZDc5Y2ZjYjY2MGI0YmRhM2Q0YTdmYjYyY2EwMS4uMzM0YjVjZDAyZWRiYzEzNWY5YjBlOWUzMDkx
MWY5YmMzNjlkNGJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC03NzksMzIg
Kzc3OSwxNCBAQCBlbmRpZgogIyAtLS0tLS0tLQogCiAjIENTUyBncmFtbWFyCi0jIE5PVEU6IE9s
ZGVyIHZlcnNpb25zIG9mIGJpc29uIGRvIG5vdCBpbmplY3QgYW4gaW5jbHVzaW9uIGd1YXJkLCBz
byB3ZSBhZGQgb25lLgotCi1DU1NHcmFtbWFyLmNwcCA6IGNzcy9DU1NHcmFtbWFyLnkKLQkkKEJJ
U09OKSAtZCAtcCBjc3N5eSAkPCAtbyAkQAotCXRvdWNoIENTU0dyYW1tYXIuY3BwLmgKLQl0b3Vj
aCBDU1NHcmFtbWFyLmhwcAotCWVjaG8gJyNpZm5kZWYgQ1NTR3JhbW1hcl9oJyA+IENTU0dyYW1t
YXIuaAotCWVjaG8gJyNkZWZpbmUgQ1NTR3JhbW1hcl9oJyA+PiBDU1NHcmFtbWFyLmgKLQljYXQg
Q1NTR3JhbW1hci5jcHAuaCBDU1NHcmFtbWFyLmhwcCA+PiBDU1NHcmFtbWFyLmgKLQllY2hvICcj
ZW5kaWYnID4+IENTU0dyYW1tYXIuaAotCXJtIC1mIENTU0dyYW1tYXIuY3BwLmggQ1NTR3JhbW1h
ci5ocHAKK0NTU0dyYW1tYXIuY3BwIDogY3NzL0NTU0dyYW1tYXIueS5pbiBjc3MvQ1NTR3JhbW1h
ci55LmluY2x1ZGVzCisJcGVybCAkKFdlYkNvcmUpL2Nzcy9tYWtlZ3JhbW1hci5wbCAtLWdyYW1t
YXIgJDwgLS1leHRyYURlZmluZXMgIiQoRkVBVFVSRV9ERUZJTkVTKSIgLS1vdXRwdXREaXIgLiAt
LXN5bWJvbHNQcmVmaXggY3NzeXkKIAogIyAtLS0tLS0tLQogCiAjIFhQYXRoIGdyYW1tYXIKLSMg
Tk9URTogT2xkZXIgdmVyc2lvbnMgb2YgYmlzb24gZG8gbm90IGluamVjdCBhbiBpbmNsdXNpb24g
Z3VhcmQsIHNvIHdlIGFkZCBvbmUuCi0KIFhQYXRoR3JhbW1hci5jcHAgOiB4bWwvWFBhdGhHcmFt
bWFyLnkgJChQUk9KRUNUX0ZJTEUpCi0JJChCSVNPTikgLWQgLXAgeHBhdGh5eSAkPCAtbyAkQAot
CXRvdWNoIFhQYXRoR3JhbW1hci5jcHAuaAotCXRvdWNoIFhQYXRoR3JhbW1hci5ocHAKLQllY2hv
ICcjaWZuZGVmIFhQYXRoR3JhbW1hcl9oJyA+IFhQYXRoR3JhbW1hci5oCi0JZWNobyAnI2RlZmlu
ZSBYUGF0aEdyYW1tYXJfaCcgPj4gWFBhdGhHcmFtbWFyLmgKLQljYXQgWFBhdGhHcmFtbWFyLmNw
cC5oIFhQYXRoR3JhbW1hci5ocHAgPj4gWFBhdGhHcmFtbWFyLmgKLQllY2hvICcjZW5kaWYnID4+
IFhQYXRoR3JhbW1hci5oCi0Jcm0gLWYgWFBhdGhHcmFtbWFyLmNwcC5oIFhQYXRoR3JhbW1hci5o
cHAKKwlwZXJsICQoV2ViQ29yZSkvY3NzL21ha2VncmFtbWFyLnBsIC0tZ3JhbW1hciAkPCAtLW91
dHB1dERpciAuIC0tc3ltYm9sc1ByZWZpeCB4cGF0aHl5CiAKICMgLS0tLS0tLS0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpIGIvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMucHJpCmluZGV4IDg0YzlkMDc3NzFlZDFhMTc0NTY2NzJlMjcxZTMzMWJj
YTRlNjg1OGUuLmVmYjdlMGY3Yzg3MmUyYzA2YzVlMjE3ZWJlZmEzMzZhOWFiMGJiZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5wcmkKQEAgLTI0LDcgKzI0LDcgQEAgU1ZHX05BTUVTID0gJCRQ
V0Qvc3ZnL3N2Z3RhZ3MuaW4KIAogWExJTktfTkFNRVMgPSAkJFBXRC9zdmcveGxpbmthdHRycy5p
bgogCi1DU1NCSVNPTiA9ICQkUFdEL2Nzcy9DU1NHcmFtbWFyLnkKK0NTU0JJU09OID0gJCRQV0Qv
Y3NzL0NTU0dyYW1tYXIueS5pbgogCiBlbmFibGU/KFhTTFQpIHsKICAgICBYTUxWSUVXRVJfQ1NT
ID0gJCRQV0QveG1sL1hNTFZpZXdlci5jc3MKQEAgLTgwNCw4ICs4MDQsOCBAQCBHRU5FUkFUT1JT
ICs9IEluamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlCiBjc3NiaXNvbi5vdXRwdXQgPSAk
e1FNQUtFX0ZJTEVfQkFTRX0uY3BwCiBjc3NiaXNvbi5pbnB1dCA9IENTU0JJU09OCiBjc3NiaXNv
bi5zY3JpcHQgPSAkJFBXRC9jc3MvbWFrZWdyYW1tYXIucGwKLWNzc2Jpc29uLmNvbW1hbmRzID0g
cGVybCAkJGNzc2Jpc29uLnNjcmlwdCAke1FNQUtFX0ZJTEVfTkFNRX0gJHtRTUFLRV9GVU5DX0ZJ
TEVfT1VUX1BBVEh9LyR7UU1BS0VfRklMRV9CQVNFfQotY3NzYmlzb24uZGVwZW5kcyA9ICR7UU1B
S0VfRklMRV9OQU1FfQorY3NzYmlzb24uY29tbWFuZHMgPSBwZXJsICQkY3NzYmlzb24uc2NyaXB0
IC0tZ3JhbW1hciAke1FNQUtFX0ZJTEVfTkFNRX0gLS1vdXRwdXREaXIgJHtRTUFLRV9GVU5DX0ZJ
TEVfT1VUX1BBVEh9IC0tZXh0cmFEZWZpbmVzIFwiJCR7REVGSU5FU30gJCRjb25maWdEZWZpbmVz
KClcIiAtLXN5bWJvbHNQcmVmaXggY3NzeXkKK2Nzc2Jpc29uLmRlcGVuZHMgPSAke1FNQUtFX0ZJ
TEVfTkFNRX0gJHtRTUFLRV9GSUxFX0JBU0V9LnkuaW5jbHVkZXMKIEdFTkVSQVRPUlMgKz0gY3Nz
Ymlzb24KIAogIyBHRU5FUkFUT1IgNS1BOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA1Y2U4NTk1
YTBmMjIxNWY3M2I2MGZmZGMxM2Q1ZmVmNzExMTk4OWI4Li40NzUwZjdlZjRiYjc3MjNkY2EwM2Zk
MTg2MDEzZjNiNjE0NTNlMmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjAwLDE4ICsyMDAs
MTAgQEAgZmVhdHVyZV9kZWZpbmVzX292ZXJyaWRlcyArPSBFTkFCTEVfTUVESUFfU1RSRUFNPTAK
IGVuZGlmICMgRU5EIEVOQUJMRV9NRURJQV9TVFJFQU0KIAogIyBYUGF0aCBncmFtbWFyCi0jIE5P
VEU6IG9sZGVyIHZlcnNpb25zIG9mIGJpc29uIGRvIG5vdCBpbmplY3QgYW4gaW5jbHVzaW9uIGd1
YXJkLCBzbyB3ZSBkbyBpdAogJChHRU5TT1VSQ0VTX1dFQkNPUkUpL1hQYXRoR3JhbW1hci5oOiAk
KEdFTlNPVVJDRVNfV0VCQ09SRSkvWFBhdGhHcmFtbWFyLmNwcAogJChHRU5TT1VSQ0VTX1dFQkNP
UkUpL1hQYXRoR3JhbW1hci5jcHA6ICQoV2ViQ29yZSkveG1sL1hQYXRoR3JhbW1hci55CiAJJChB
TV9WX0dFTikKLQkkKEFNX1ZfYXQpcm0gLWYgJChHRU5TT1VSQ0VTX1dFQkNPUkUpL1hQYXRoR3Jh
bW1hci5jcHAuaCAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvWFBhdGhHcmFtbWFyLmhwcAotCSQoQU1f
Vl9hdCkkKEJJU09OKSAtZCAtcCB4cGF0aHl5ICQ8IC1vICQoR0VOU09VUkNFU19XRUJDT1JFKS9Y
UGF0aEdyYW1tYXIuY3BwCi0JJChBTV9WX2F0KXRvdWNoICQoR0VOU09VUkNFU19XRUJDT1JFKS9Y
UGF0aEdyYW1tYXIuY3BwLmggJChHRU5TT1VSQ0VTX1dFQkNPUkUpL1hQYXRoR3JhbW1hci5ocHAK
LQkkKEFNX1ZfYXQpZWNobyAnI2lmbmRlZiBYUGF0aEdyYW1tYXJfaCcgPiAkKEdFTlNPVVJDRVNf
V0VCQ09SRSkvWFBhdGhHcmFtbWFyLmgKLQkkKEFNX1ZfYXQpZWNobyAnI2RlZmluZSBYUGF0aEdy
YW1tYXJfaCcgPj4gJChHRU5TT1VSQ0VTX1dFQkNPUkUpL1hQYXRoR3JhbW1hci5oCi0JJChBTV9W
X2F0KWNhdCAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvWFBhdGhHcmFtbWFyLmNwcC5oICQoR0VOU09V
UkNFU19XRUJDT1JFKS9YUGF0aEdyYW1tYXIuaHBwID4+ICQoR0VOU09VUkNFU19XRUJDT1JFKS9Y
UGF0aEdyYW1tYXIuaAotCSQoQU1fVl9hdCllY2hvICcjZW5kaWYnID4+ICQoR0VOU09VUkNFU19X
RUJDT1JFKS9YUGF0aEdyYW1tYXIuaAotCSQoQU1fVl9hdClybSAtZiAkKEdFTlNPVVJDRVNfV0VC
Q09SRSkvWFBhdGhHcmFtbWFyLmNwcC5oICQoR0VOU09VUkNFU19XRUJDT1JFKS9YUGF0aEdyYW1t
YXIuaHBwCisJJChBTV9WX2F0KXBlcmwgJChXZWJDb3JlKS9jc3MvbWFrZWdyYW1tYXIucGwgLS1n
cmFtbWFyICQ8IC0tb3V0cHV0RGlyICQoR0VOU09VUkNFU19XRUJDT1JFKSAtLXN5bWJvbHNQcmVm
aXggeHBhdGh5eQogCiAjIC0tLS0KICMgWFNMVCBTdXBwb3J0CkBAIC00MTgsMTggKzQxMCwxMCBA
QCBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbG9yRGF0YS5jcHA6ICQoV2ViQ29yZSkvcGxhdGZv
cm0vQ29sb3JEYXRhLmdwZXJmICQoV2ViQwogCiAjIENTUyBncmFtbWFyCiAKLSMgTk9URTogb2xk
ZXIgdmVyc2lvbnMgb2YgYmlzb24gZG8gbm90IGluamVjdCBhbiBpbmNsdXNpb24gZ3VhcmQsIHNv
IHdlIGRvIGl0CiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU0dyYW1tYXIuaDogJChHRU5TT1VS
Q0VTX1dFQkNPUkUpL0NTU0dyYW1tYXIuY3BwCi1EZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU0dy
YW1tYXIuY3BwOiAkKFdlYkNvcmUpL2Nzcy9DU1NHcmFtbWFyLnkKK0Rlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvQ1NTR3JhbW1hci5jcHA6ICQoV2ViQ29yZSkvY3NzL0NTU0dyYW1tYXIueS5pbiAkKFdl
YkNvcmUpL0NTU0dyYW1tYXIueS5pbmNsdWRlcwogCSQoQU1fVl9HRU4pCi0JJChBTV9WX2F0KXJt
IC1mICQoR0VOU09VUkNFU19XRUJDT1JFKS9DU1NHcmFtbWFyLmNwcC5oICQoR0VOU09VUkNFU19X
RUJDT1JFKS9DU1NHcmFtbWFyLmhwcAotCSQoQU1fVl9hdCkkKEJJU09OKSAtZCAtcCBjc3N5eSAk
PCAtbyAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvQ1NTR3JhbW1hci5jcHAKLQkkKEFNX1ZfYXQpdG91
Y2ggJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0NTU0dyYW1tYXIuY3BwLmggJChHRU5TT1VSQ0VTX1dF
QkNPUkUpL0NTU0dyYW1tYXIuaHBwCi0JJChBTV9WX2F0KWVjaG8gJyNpZm5kZWYgQ1NTR3JhbW1h
cl9oJyA+ICQoR0VOU09VUkNFU19XRUJDT1JFKS9DU1NHcmFtbWFyLmgKLQkkKEFNX1ZfYXQpZWNo
byAnI2RlZmluZSBDU1NHcmFtbWFyX2gnID4+ICQoR0VOU09VUkNFU19XRUJDT1JFKS9DU1NHcmFt
bWFyLmgKLQkkKEFNX1ZfYXQpY2F0ICQoR0VOU09VUkNFU19XRUJDT1JFKS9DU1NHcmFtbWFyLmNw
cC5oICQoR0VOU09VUkNFU19XRUJDT1JFKS9DU1NHcmFtbWFyLmhwcCA+PiAkKEdFTlNPVVJDRVNf
V0VCQ09SRSkvQ1NTR3JhbW1hci5oCi0JJChBTV9WX2F0KWVjaG8gJyNlbmRpZicgPj4gJChHRU5T
T1VSQ0VTX1dFQkNPUkUpL0NTU0dyYW1tYXIuaAotCSQoQU1fVl9hdClybSAtZiAkKEdFTlNPVVJD
RVNfV0VCQ09SRSkvQ1NTR3JhbW1hci5jcHAuaCAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvQ1NTR3Jh
bW1hci5ocHAKKwkkKEFNX1ZfYXQpcGVybCAkKFdlYkNvcmUpL2Nzcy9tYWtlZ3JhbW1hci5wbCAt
LWdyYW1tYXIgJDwgLS1leHRyYURlZmluZXMgIiQoZmVhdHVyZV9kZWZpbmVzKSIgLS1vdXRwdXRE
aXIgJChHRU5TT1VSQ0VTX1dFQkNPUkUpIC0tc3ltYm9sc1ByZWZpeCBjc3N5eQogCiAjIHVzZXIg
YWdlbnQgc3R5bGUgc2hlZXRzCiBVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUyA9IFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKaW5kZXggZTFhYjY1NDFmZTQ2MTc0ZWIzNWMzY2Qx
ZWQ3ZmU0OTQxOWM4NzQxZS4uNGI0Y2ZmNTJhNjcxODA3YWVhMTYzODI5OTJhOWE4MDg4Mjc2NWIy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTU4NSw3ICs1ODUs
NyBAQAogICAgICAgfSwKICAgICAgICdzb3VyY2VzJzogWwogICAgICAgICAjIGJpc29uIHJ1bGUK
LSAgICAgICAgJy4uL2Nzcy9DU1NHcmFtbWFyLnknLAorICAgICAgICAnPChTSEFSRURfSU5URVJN
RURJQVRFX0RJUikvd2Via2l0L0NTU0dyYW1tYXIueScsCiAgICAgICAgICcuLi94bWwvWFBhdGhH
cmFtbWFyLnknLAogCiAgICAgICAgICMgZ3BlcmYgcnVsZQpAQCAtMTA3Niw2ICsxMDc2LDIyIEBA
CiAgICAgICAgICAgICAnPEAoZGVyaXZlZF9zb3VyY2VzX2FnZ3JlZ2F0ZV9maWxlcyknLAogICAg
ICAgICAgIF0sCiAgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAnYWN0aW9uX25hbWUn
OiAncHJlcHJvY2Vzc19ncmFtbWFyJywKKyAgICAgICAgICAnaW5wdXRzJzogWworICAgICAgICAg
ICAgJy4uL2Nzcy9DU1NHcmFtbWFyLnkuaW4nLAorICAgICAgICAgIF0sCisgICAgICAgICAgJ291
dHB1dHMnOiBbCisgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0
L0NTU0dyYW1tYXIueScsCisgICAgICAgICAgXSwKKyAgICAgICAgICAnYWN0aW9uJzogWworICAg
ICAgICAgICAgJ3B5dGhvbicsCisgICAgICAgICAgICAnc2NyaXB0cy9hY3Rpb25fcHJlcHJvY2Vz
c2dyYW1tYXIucHknLAorICAgICAgICAgICAgJzxAKF9pbnB1dHMpJywKKyAgICAgICAgICAgICc8
KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQvJywKKyAgICAgICAgICAgICc8KGZlYXR1
cmVfZGVmaW5lcyknLAorICAgICAgICAgIF0sCisgICAgICAgIH0sCiAgICAgICBdLAogICAgICAg
J3J1bGVzJzogWwogICAgICAgICAjIFJ1bGVzIHRvIGJ1aWxkIGRlcml2ZWQgc291cmNlcy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL3NjcmlwdHMvYWN0aW9uX3ByZXBy
b2Nlc3NncmFtbWFyLnB5IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvc2NyaXB0cy9hY3Rp
b25fcHJlcHJvY2Vzc2dyYW1tYXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWE0YmRmNjRmNGE5MDczZjM1NjA2
NWI1N2IzY2U3MjRmNmEyZDA2MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwL3NjcmlwdHMvYWN0aW9uX3ByZXByb2Nlc3NncmFtbWFyLnB5CkBAIC0wLDAgKzEs
NzkgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisjCisjIENvcHlyaWdodCAoQykgMjAwOSBNb3Rvcm9s
YSBNb2JpbGl0eSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisj
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgTW90b3JvbGEgTW9iaWxpdHkgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisjCisjIHVzYWdlOiBhY3Rpb25fcHJlcHJvY2Vzc2dyYW1tYXIucHkgSU5QVVRf
RklMRSBPVVRQVVRfRElSIEZFQVRVUkVfREVGSU5FUworIyBJTlBVVF9GSUxFIGlzIGEgcGF0aCB0
byBhIGdyYW1tYXIgZmlsZSB0byBiZSBydW4gdGhyb3VnaCB0aGUgcHJlcHJvY2Vzc29yCisjICAg
ICAgICAgICAgKGUuZy4gQ1NTR3JhbW1hci55LmluKS4KKyMgT1VUUFVUX0RJUiBpcyB3aGVyZSB0
aGUgcHJvY2Vzc2VkIC55IGZpbGUgc2hvdWxkIGJlIHBsYWNlZC4KKyMgRkVBVFVSRV9ERUZJTkVT
IGlzIGEgc3BhY2Utc2VwYXJhdGVkIHN0cmluZyB3aXRoIGFsbCB0aGUgd2Via2l0IGZlYXR1cmUK
KyMgICAgICAgICAgICAgICAgIGRlZmluZXMKKworaW1wb3J0IGVycm5vCitpbXBvcnQgaXRlcnRv
b2xzCitpbXBvcnQgb3MKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgc2hsZXgKK2ltcG9ydCBzdWJw
cm9jZXNzCitpbXBvcnQgc3lzCitmcm9tIFN0cmluZ0lPIGltcG9ydCBTdHJpbmdJTworCithc3Nl
cnQgbGVuKHN5cy5hcmd2KSA9PSAzIG9yIGxlbihzeXMuYXJndikgPT0gNAorCitpbnB1dEZpbGUg
PSBzeXMuYXJndlsxXQorb3V0cHV0RGlyID0gc3lzLmFyZ3ZbMl0KK2ZlYXR1cmVGbGFncyA9IFtd
CitpZiBsZW4oc3lzLmFyZ3YpID4gMyBhbmQgc3lzLmFyZ3ZbM106CisgICAgZmVhdHVyZXMgPSBz
aGxleC5zcGxpdChzeXMuYXJndlszXSkKKyAgICAjIGZlYXR1cmVGbGFncyA9IFsiLUQiLCAiRU5B
QkxFX0ZFQVRVUkUxPTEiLCAiLUQiLCAiRU5BQkxFX0ZFQVRVUkUyPTAiLCAuLi5dCisgICAgZmVh
dHVyZUZsYWdzID0gbGlzdChpdGVydG9vbHMuY2hhaW4oKnppcChbIi1EIl0gKiBsZW4oZmVhdHVy
ZXMpLCBmZWF0dXJlcykpKQorCitnY2NFeGUgPSAiZ2NjIgoraWYgIkNDIiBpbiBvcy5lbnZpcm9u
OgorICAgIGdjY0V4ZSA9IG9zLmVudmlyb25bIkNDIl0KKworKGlucHV0Um9vdCwgaW5wdXRFeHQp
ID0gb3MucGF0aC5zcGxpdGV4dChpbnB1dEZpbGUpCithc3NlcnQgaW5wdXRFeHQgPT0gIi5pbiIK
Kworb3V0cHV0ID0gc3VicHJvY2Vzcy5Qb3BlbihbJ2xzJywgJy1sJ10sIHN0ZG91dD1zdWJwcm9j
ZXNzLlBJUEUpLmNvbW11bmljYXRlKClbMF0KK3AgPSBzdWJwcm9jZXNzLlBvcGVuKFtnY2NFeGUs
ICItRSIsICItUCIsICIteCIsICJjIiwgaW5wdXRGaWxlXSArIGZlYXR1cmVGbGFncywgc3Rkb3V0
PXN1YnByb2Nlc3MuUElQRSkKK3Byb2Nlc3NlZFJlc3VsdCA9IHAuY29tbXVuaWNhdGUoKVswXQor
YXNzZXJ0IHAucmV0dXJuY29kZSA9PSAwCisKK291dHB1dEZpbGUgPSBvcGVuKG9zLnBhdGguam9p
bihvdXRwdXREaXIsIG9zLnBhdGguYmFzZW5hbWUoaW5wdXRSb290KSksICJ3IikKKwordHJ5Ogor
ICAgIHByaW50ID4+IG91dHB1dEZpbGUsIG9wZW4oaW5wdXRSb290ICsgIi5pbmNsdWRlcyIpLnJl
YWQoKQorZXhjZXB0IE9TRXJyb3IsIGU6CisgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9FTlQ6
CisgICAgICAgIHJhaXNlCisKK3ByaW50ID4+IG91dHB1dEZpbGUsIHByb2Nlc3NlZFJlc3VsdAor
CitvdXRwdXRGaWxlLmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKaW5kZXggNGM5OTIyNzVmM2EyNzliNDVmNGIzZWQyOWQ5ZGVjMWRjNTFkMjBj
ZC4uNDM1MThkM2Q4Yzk3NGJjY2YzY2VkYzliZTM5YmUwODM1MzhmZWMwOCAxMDA3NTUKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTM1ODY3LDcgKzM1ODY3
LDExIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGNzc1xDU1NHcmFtbWFyLnkiCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTR3JhbW1hci55
LmluIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxj
c3NcQ1NTR3JhbW1hci55LmluY2x1ZGVzIgogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMTBlZDU5ZjlmYTM3Njc4ODQ3ODc4ZGM2MmI0MzA2ODM1NDg1MDg2Yi4uZjdmNjU1ODYxZmQ5
ZmViOGU0NWM2NDA1OTU0NDZjMWJjNTIxMTZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMwMjUsNyArMTMwMjUsNiBAQAog
CQlCQ0U5M0Y0NjE1MTdDNkQ1MDA4Q0NGNzQgLyogUmVuZGVyUmVnaW9uU2V0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclJlZ2lvblNldC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRUE0NzdDMDk3Q0FBQzgwMDk0QzlFNCAvKiBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDRUE0NzdEMDk3Q0FBQzgwMDk0QzlFNCAvKiBDU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlC
Q0VBNDc3RTA5N0NBQUM4MDA5NEM5RTQgLyogQ1NTR3JhbW1hci55ICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUueWFjYzsgcGF0aCA9IENTU0dyYW1tYXIueTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkNFQTQ3ODkwOTdDQUFDODAwOTRDOUU0IC8qIENTU1Byb3BlcnR5TmFtZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IENTU1Byb3BlcnR5TmFtZXMuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDRUE0NzhDMDk3Q0FBQzgwMDk0QzlFNCAvKiBDU1NWYWx1ZUtleXdv
cmRzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDU1NWYWx1ZUtleXdvcmRzLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0VBNDgxMzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVu
ZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTM3NDgsNiArMTM3NDcsOCBAQAogCQlGQkQ2QUY4NTE1RUYyMUQ0MDA4QjcxMTAgLyog
QmFzaWNTaGFwZUZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBC
YXNpY1NoYXBlRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZCRDZB
Rjg2MTVFRjIxRDQwMDhCNzExMCAvKiBDU1NCYXNpY1NoYXBlcy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NCYXNpY1NoYXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZCRDZBRjg3MTVFRjIxRDQwMDhCNzExMCAvKiBDU1NCYXNpY1NoYXBl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NCYXNpY1NoYXBlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQ0VCQ0Q3MTE2MjNBNzkxMDAyOTk2NUUgLyog
Q1NTR3JhbW1hci55LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS55YWNjOyBwYXRoID0gQ1NTR3Jh
bW1hci55LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQ0VCQ0Q3MjE2MjNBNzkx
MDAyOTk2NUUgLyogQ1NTR3JhbW1hci55LmluY2x1ZGVzICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS55
YWNjOyBwYXRoID0gQ1NTR3JhbW1hci55LmluY2x1ZGVzOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRDAwRDdBMjE0QTNGNjE5MDA3MzQwMTEgLyogU2luY1Jlc2FtcGxlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaW5jUmVzYW1wbGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQwMEQ3QTMxNEEzRjYxOTAwNzM0MDExIC8qIFNp
bmNSZXNhbXBsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2luY1Jlc2Ft
cGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDA2REZBMzEzNEE0REVGMDA2
RjVEN0QgLyogRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTExMSw3ICsyMTExMiw4IEBACiAJCQkJQkMw
MkE2M0IwRTA5QTlDRjAwNEI2RDJCIC8qIENTU0Z1bmN0aW9uVmFsdWUuaCAqLywKIAkJCQlCQzIz
RTRFMDBEQUFDRTBGMDA5RkRDOTEgLyogQ1NTR3JhZGllbnRWYWx1ZS5jcHAgKi8sCiAJCQkJQkM1
M0M2OTEwREE1OTExNDAwMjFFQjVEIC8qIENTU0dyYWRpZW50VmFsdWUuaCAqLywKLQkJCQlCQ0VB
NDc3RTA5N0NBQUM4MDA5NEM5RTQgLyogQ1NTR3JhbW1hci55ICovLAorCQkJCUZDRUJDRDcxMTYy
M0E3OTEwMDI5OTY1RSAvKiBDU1NHcmFtbWFyLnkuaW4gKi8sCisJCQkJRkNFQkNENzIxNjIzQTc5
MTAwMjk5NjVFIC8qIENTU0dyYW1tYXIueS5pbmNsdWRlcyAqLywKIAkJCQlCQzc3MkIzNjBDNEVB
OTFFMDA4MzI4NUYgLyogQ1NTSGVscGVyLmggKi8sCiAJCQkJQkMyM0U3NkIwREFFODhBOTAwOUZE
QzkxIC8qIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwICovLAogCQkJCUJDMjNFRTkxMERBRUQy
QkMwMDlGREM5MSAvKiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlLmggKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dy
YW1tYXIueQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI0Mjc0YTliMzJhMzVhMjk2
Njg4ZjY1YjNiMzhhZjI0YmEzYjQwZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CisrKyAvZGV2L251
bGwKQEAgLTEsMTc2NCArMCwwIEBACi0lewotCi0vKgotICogIENvcHlyaWdodCAoQykgMjAwMi0y
MDAzIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBA
bnlwb3AuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJr
aXQub3JnPgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0g
KiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNl
bnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv
ZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLQotI2luY2x1ZGUgIkNTU1BhcnNlci5oIgotI2luY2x1ZGUgIkNTU1BhcnNlck1v
ZGUuaCIKLSNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgotI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5TmFtZXMuaCIKLSNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgotI2luY2x1ZGUgIkNTU1NlbGVj
dG9yTGlzdC5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVzLmgi
Ci0jaW5jbHVkZSAiTWVkaWFMaXN0LmgiCi0jaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgotI2lu
Y2x1ZGUgIlN0eWxlUnVsZS5oIgotI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgotI2lu
Y2x1ZGUgIldlYktpdENTU0tleWZyYW1lUnVsZS5oIgotI2luY2x1ZGUgIldlYktpdENTU0tleWZy
YW1lc1J1bGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHN0ZGxp
Yi5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7Ci0KLSNkZWZpbmUgWVlNQUxMT0MgZmFzdE1hbGxvYwot
I2RlZmluZSBZWUZSRUUgZmFzdEZyZWUKLQotI2RlZmluZSBZWUVOQUJMRV9OTFMgMAotI2RlZmlu
ZSBZWUxUWVBFX0lTX1RSSVZJQUwgMQotI2RlZmluZSBZWU1BWERFUFRIIDEwMDAwCi0jZGVmaW5l
IFlZREVCVUcgMAotCi0lfQotCi0lcHVyZV9wYXJzZXIKLQotJXBhcnNlLXBhcmFtIHsgQ1NTUGFy
c2VyKiBwYXJzZXIgfQotJWxleC1wYXJhbSB7IENTU1BhcnNlciogcGFyc2VyIH0KLQotJXVuaW9u
IHsKLSAgICBib29sIGJvb2xlYW47Ci0gICAgY2hhciBjaGFyYWN0ZXI7Ci0gICAgaW50IGludGVn
ZXI7Ci0gICAgZG91YmxlIG51bWJlcjsKLSAgICBDU1NQYXJzZXJTdHJpbmcgc3RyaW5nOwotCi0g
ICAgU3R5bGVSdWxlQmFzZSogcnVsZTsKLSAgICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+
ID4qIHJ1bGVMaXN0OwotICAgIENTU1BhcnNlclNlbGVjdG9yKiBzZWxlY3RvcjsKLSAgICBDU1NT
ZWxlY3RvclZlY3Rvciogc2VsZWN0b3JMaXN0OwotICAgIENTU1NlbGVjdG9yOjpNYXJnaW5Cb3hU
eXBlIG1hcmdpbkJveDsKLSAgICBDU1NTZWxlY3Rvcjo6UmVsYXRpb24gcmVsYXRpb247Ci0gICAg
TWVkaWFRdWVyeVNldCogbWVkaWFMaXN0OwotICAgIE1lZGlhUXVlcnkqIG1lZGlhUXVlcnk7Ci0g
ICAgTWVkaWFRdWVyeTo6UmVzdHJpY3RvciBtZWRpYVF1ZXJ5UmVzdHJpY3RvcjsKLSAgICBNZWRp
YVF1ZXJ5RXhwKiBtZWRpYVF1ZXJ5RXhwOwotICAgIENTU1BhcnNlclZhbHVlIHZhbHVlOwotICAg
IENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVMaXN0OwotICAgIFZlY3RvcjxPd25QdHI8TWVkaWFR
dWVyeUV4cD4gPiogbWVkaWFRdWVyeUV4cExpc3Q7Ci0gICAgU3R5bGVLZXlmcmFtZSoga2V5ZnJh
bWU7Ci0gICAgVmVjdG9yPFJlZlB0cjxTdHlsZUtleWZyYW1lPiA+KiBrZXlmcmFtZVJ1bGVMaXN0
OwotICAgIGZsb2F0IHZhbDsKLSAgICBDU1NQcm9wZXJ0eUlEIGlkOwotfQotCi0lewotCi0jaWYg
WVlERUJVRyA+IDAKLSNkZWZpbmUgWVlQUklOVChGaWxlLFR5cGUsVmFsdWUpIHByaW50X3Rva2Vu
X3ZhbHVlKEZpbGUsVHlwZSxWYWx1ZSkKLXN0YXRpYyB2b2lkIHByaW50X3Rva2VuX3ZhbHVlKEZJ
TEUgKiB5eW91dHB1dCwgaW50IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAmeXl2YWx1ZSk7Ci0jZW5k
aWYKLQotc3RhdGljIGlubGluZSBpbnQgY3NzeXllcnJvcih2b2lkKiwgY29uc3QgY2hhciopCi17
Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLSV9Ci0KLSVleHBlY3QgNjMKLQotJW5vbmFzc29jIExPV0VT
VF9QUkVDCi0KLSVsZWZ0IFVOSU1QT1JUQU5UX1RPSwotCi0ldG9rZW4gV0hJVEVTUEFDRSBTR01M
X0NECi0ldG9rZW4gVE9LRU5fRU9GIDAKLQotJXRva2VuIElOQ0xVREVTCi0ldG9rZW4gREFTSE1B
VENICi0ldG9rZW4gQkVHSU5TV0lUSAotJXRva2VuIEVORFNXSVRICi0ldG9rZW4gQ09OVEFJTlMK
LQotJXRva2VuIDxzdHJpbmc+IFNUUklORwotJXJpZ2h0IDxzdHJpbmc+IElERU5UCi0ldG9rZW4g
PHN0cmluZz4gTlRICi0KLSVub25hc3NvYyA8c3RyaW5nPiBIRVgKLSVub25hc3NvYyA8c3RyaW5n
PiBJRFNFTAotJW5vbmFzc29jICc6JwotJW5vbmFzc29jICcuJwotJW5vbmFzc29jICdbJwotJW5v
bmFzc29jIDxzdHJpbmc+ICcqJwotJW5vbmFzc29jIGVycm9yCi0lbGVmdCAnfCcKLQotJXRva2Vu
IElNUE9SVF9TWU0KLSV0b2tlbiBQQUdFX1NZTQotJXRva2VuIE1FRElBX1NZTQotJXRva2VuIEZP
TlRfRkFDRV9TWU0KLSV0b2tlbiBDSEFSU0VUX1NZTQotJXRva2VuIE5BTUVTUEFDRV9TWU0KLSV0
b2tlbiBWQVJGVU5DVElPTgotJXRva2VuIFdFQktJVF9SVUxFX1NZTQotJXRva2VuIFdFQktJVF9E
RUNMU19TWU0KLSV0b2tlbiBXRUJLSVRfS0VZRlJBTUVfUlVMRV9TWU0KLSV0b2tlbiBXRUJLSVRf
S0VZRlJBTUVTX1NZTQotJXRva2VuIFdFQktJVF9WQUxVRV9TWU0KLSV0b2tlbiBXRUJLSVRfTUVE
SUFRVUVSWV9TWU0KLSV0b2tlbiBXRUJLSVRfU0VMRUNUT1JfU1lNCi0ldG9rZW4gV0VCS0lUX1JF
R0lPTl9SVUxFX1NZTQotJXRva2VuIDxtYXJnaW5Cb3g+IFRPUExFRlRDT1JORVJfU1lNCi0ldG9r
ZW4gPG1hcmdpbkJveD4gVE9QTEVGVF9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBUT1BDRU5URVJf
U1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gVE9QUklHSFRfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4g
VE9QUklHSFRDT1JORVJfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gQk9UVE9NTEVGVENPUk5FUl9T
WU0KLSV0b2tlbiA8bWFyZ2luQm94PiBCT1RUT01MRUZUX1NZTQotJXRva2VuIDxtYXJnaW5Cb3g+
IEJPVFRPTUNFTlRFUl9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBCT1RUT01SSUdIVF9TWU0KLSV0
b2tlbiA8bWFyZ2luQm94PiBCT1RUT01SSUdIVENPUk5FUl9TWU0KLSV0b2tlbiA8bWFyZ2luQm94
PiBMRUZUVE9QX1NZTQotJXRva2VuIDxtYXJnaW5Cb3g+IExFRlRNSURETEVfU1lNCi0ldG9rZW4g
PG1hcmdpbkJveD4gTEVGVEJPVFRPTV9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBSSUdIVFRPUF9T
WU0KLSV0b2tlbiA8bWFyZ2luQm94PiBSSUdIVE1JRERMRV9TWU0KLSV0b2tlbiA8bWFyZ2luQm94
PiBSSUdIVEJPVFRPTV9TWU0KLQotJXRva2VuIEFUS0VZV09SRAotCi0ldG9rZW4gSU1QT1JUQU5U
X1NZTQotJXRva2VuIE1FRElBX09OTFkKLSV0b2tlbiBNRURJQV9OT1QKLSV0b2tlbiBNRURJQV9B
TkQKLQotJXRva2VuIDxudW1iZXI+IFJFTVMKLSV0b2tlbiA8bnVtYmVyPiBRRU1TCi0ldG9rZW4g
PG51bWJlcj4gRU1TCi0ldG9rZW4gPG51bWJlcj4gRVhTCi0ldG9rZW4gPG51bWJlcj4gUFhTCi0l
dG9rZW4gPG51bWJlcj4gQ01TCi0ldG9rZW4gPG51bWJlcj4gTU1TCi0ldG9rZW4gPG51bWJlcj4g
SU5TCi0ldG9rZW4gPG51bWJlcj4gUFRTCi0ldG9rZW4gPG51bWJlcj4gUENTCi0ldG9rZW4gPG51
bWJlcj4gREVHUwotJXRva2VuIDxudW1iZXI+IFJBRFMKLSV0b2tlbiA8bnVtYmVyPiBHUkFEUwot
JXRva2VuIDxudW1iZXI+IFRVUk5TCi0ldG9rZW4gPG51bWJlcj4gTVNFQ1MKLSV0b2tlbiA8bnVt
YmVyPiBTRUNTCi0ldG9rZW4gPG51bWJlcj4gSEVSVFoKLSV0b2tlbiA8bnVtYmVyPiBLSEVSVFoK
LSV0b2tlbiA8c3RyaW5nPiBESU1FTgotJXRva2VuIDxzdHJpbmc+IElOVkFMSURESU1FTgotJXRv
a2VuIDxudW1iZXI+IFBFUkNFTlRBR0UKLSV0b2tlbiA8bnVtYmVyPiBGTE9BVFRPS0VOCi0ldG9r
ZW4gPG51bWJlcj4gSU5URUdFUgotJXRva2VuIDxudW1iZXI+IFZXCi0ldG9rZW4gPG51bWJlcj4g
VkgKLSV0b2tlbiA8bnVtYmVyPiBWTUlOCi0ldG9rZW4gPG51bWJlcj4gRFBQWAotJXRva2VuIDxu
dW1iZXI+IERQSQotJXRva2VuIDxudW1iZXI+IERQQ00KLQotJXRva2VuIDxzdHJpbmc+IFVSSQot
JXRva2VuIDxzdHJpbmc+IEZVTkNUSU9OCi0ldG9rZW4gPHN0cmluZz4gQU5ZRlVOQ1RJT04KLSV0
b2tlbiA8c3RyaW5nPiBOT1RGVU5DVElPTgotJXRva2VuIDxzdHJpbmc+IENBTENGVU5DVElPTgot
JXRva2VuIDxzdHJpbmc+IE1JTkZVTkNUSU9OCi0ldG9rZW4gPHN0cmluZz4gTUFYRlVOQ1RJT04K
LSV0b2tlbiA8c3RyaW5nPiBWQVJfREVGSU5JVElPTgotCi0ldG9rZW4gPHN0cmluZz4gVU5JQ09E
RVJBTkdFCi0KLSV0eXBlIDxyZWxhdGlvbj4gY29tYmluYXRvcgotCi0ldHlwZSA8cnVsZT4gY2hh
cnNldAotJXR5cGUgPHJ1bGU+IGlnbm9yZWRfY2hhcnNldAotJXR5cGUgPHJ1bGU+IHJ1bGVzZXQK
LSV0eXBlIDxydWxlPiBtZWRpYQotJXR5cGUgPHJ1bGU+IGltcG9ydAotJXR5cGUgPHJ1bGU+IG5h
bWVzcGFjZQotJXR5cGUgPHJ1bGU+IHBhZ2UKLSV0eXBlIDxydWxlPiBtYXJnaW5fYm94Ci0ldHlw
ZSA8cnVsZT4gZm9udF9mYWNlCi0ldHlwZSA8cnVsZT4ga2V5ZnJhbWVzCi0ldHlwZSA8cnVsZT4g
aW52YWxpZF9ydWxlCi0ldHlwZSA8cnVsZT4gc2F2ZV9ibG9jawotJXR5cGUgPHJ1bGU+IGludmFs
aWRfYXQKLSV0eXBlIDxydWxlPiBydWxlCi0ldHlwZSA8cnVsZT4gdmFsaWRfcnVsZQotJXR5cGUg
PHJ1bGVMaXN0PiBibG9ja19ydWxlX2xpc3QgCi0ldHlwZSA8cnVsZT4gYmxvY2tfcnVsZQotJXR5
cGUgPHJ1bGU+IGJsb2NrX3ZhbGlkX3J1bGUKLSV0eXBlIDxydWxlPiByZWdpb24KLQotJXR5cGUg
PHN0cmluZz4gbWF5YmVfbnNfcHJlZml4Ci0KLSV0eXBlIDxzdHJpbmc+IG5hbWVzcGFjZV9zZWxl
Y3RvcgotCi0ldHlwZSA8c3RyaW5nPiBzdHJpbmdfb3JfdXJpCi0ldHlwZSA8c3RyaW5nPiBpZGVu
dF9vcl9zdHJpbmcKLSV0eXBlIDxzdHJpbmc+IG1lZGl1bQotJXR5cGUgPG1hcmdpbkJveD4gbWFy
Z2luX3N5bQotCi0ldHlwZSA8c3RyaW5nPiBtZWRpYV9mZWF0dXJlCi0ldHlwZSA8bWVkaWFMaXN0
PiBtZWRpYV9saXN0Ci0ldHlwZSA8bWVkaWFMaXN0PiBtYXliZV9tZWRpYV9saXN0Ci0ldHlwZSA8
bWVkaWFRdWVyeT4gbWVkaWFfcXVlcnkKLSV0eXBlIDxtZWRpYVF1ZXJ5UmVzdHJpY3Rvcj4gbWF5
YmVfbWVkaWFfcmVzdHJpY3RvcgotJXR5cGUgPHZhbHVlTGlzdD4gbWF5YmVfbWVkaWFfdmFsdWUK
LSV0eXBlIDxtZWRpYVF1ZXJ5RXhwPiBtZWRpYV9xdWVyeV9leHAKLSV0eXBlIDxtZWRpYVF1ZXJ5
RXhwTGlzdD4gbWVkaWFfcXVlcnlfZXhwX2xpc3QKLSV0eXBlIDxtZWRpYVF1ZXJ5RXhwTGlzdD4g
bWF5YmVfYW5kX21lZGlhX3F1ZXJ5X2V4cF9saXN0Ci0KLSV0eXBlIDxzdHJpbmc+IGtleWZyYW1l
X25hbWUKLSV0eXBlIDxrZXlmcmFtZT4ga2V5ZnJhbWVfcnVsZQotJXR5cGUgPGtleWZyYW1lUnVs
ZUxpc3Q+IGtleWZyYW1lc19ydWxlCi0ldHlwZSA8dmFsdWVMaXN0PiBrZXlfbGlzdAotJXR5cGUg
PHZhbHVlPiBrZXkKLQotJXR5cGUgPGlkPiBwcm9wZXJ0eQotCi0ldHlwZSA8c2VsZWN0b3I+IHNw
ZWNpZmllcgotJXR5cGUgPHNlbGVjdG9yPiBzcGVjaWZpZXJfbGlzdAotJXR5cGUgPHNlbGVjdG9y
PiBzaW1wbGVfc2VsZWN0b3IKLSV0eXBlIDxzZWxlY3Rvcj4gc2VsZWN0b3IKLSV0eXBlIDxzZWxl
Y3Rvckxpc3Q+IHNlbGVjdG9yX2xpc3QKLSV0eXBlIDxzZWxlY3Rvckxpc3Q+IHNpbXBsZV9zZWxl
Y3Rvcl9saXN0Ci0ldHlwZSA8c2VsZWN0b3JMaXN0PiByZWdpb25fc2VsZWN0b3IKLSV0eXBlIDxz
ZWxlY3Rvcj4gc2VsZWN0b3Jfd2l0aF90cmFpbGluZ193aGl0ZXNwYWNlCi0ldHlwZSA8c2VsZWN0
b3I+IGNsYXNzCi0ldHlwZSA8c2VsZWN0b3I+IGF0dHJpYgotJXR5cGUgPHNlbGVjdG9yPiBwc2V1
ZG8KLSV0eXBlIDxzZWxlY3Rvcj4gcHNldWRvX3BhZ2UKLSV0eXBlIDxzZWxlY3Rvcj4gcGFnZV9z
ZWxlY3RvcgotCi0ldHlwZSA8Ym9vbGVhbj4gZGVjbGFyYXRpb25fbGlzdAotJXR5cGUgPGJvb2xl
YW4+IGRlY2xfbGlzdAotJXR5cGUgPGJvb2xlYW4+IGRlY2xhcmF0aW9uCi0ldHlwZSA8Ym9vbGVh
bj4gZGVjbGFyYXRpb25zX2FuZF9tYXJnaW5zCi0KLSV0eXBlIDxib29sZWFuPiBwcmlvCi0KLSV0
eXBlIDxpbnRlZ2VyPiBtYXRjaAotJXR5cGUgPGludGVnZXI+IHVuYXJ5X29wZXJhdG9yCi0ldHlw
ZSA8aW50ZWdlcj4gbWF5YmVfdW5hcnlfb3BlcmF0b3IKLSV0eXBlIDxjaGFyYWN0ZXI+IG9wZXJh
dG9yCi0KLSV0eXBlIDx2YWx1ZUxpc3Q+IGV4cHIKLSV0eXBlIDx2YWx1ZT4gdGVybQotJXR5cGUg
PHZhbHVlPiB1bmFyeV90ZXJtCi0ldHlwZSA8dmFsdWU+IGZ1bmN0aW9uCi0ldHlwZSA8dmFsdWU+
IGNhbGNfZnVuY190ZXJtCi0ldHlwZSA8Y2hhcmFjdGVyPiBjYWxjX2Z1bmNfb3BlcmF0b3IKLSV0
eXBlIDx2YWx1ZUxpc3Q+IGNhbGNfZnVuY19leHByCi0ldHlwZSA8dmFsdWVMaXN0PiBjYWxjX2Z1
bmNfZXhwcl9saXN0Ci0ldHlwZSA8dmFsdWVMaXN0PiBjYWxjX2Z1bmNfcGFyZW5fZXhwcgotJXR5
cGUgPHZhbHVlPiBjYWxjX2Z1bmN0aW9uCi0ldHlwZSA8c3RyaW5nPiBtaW5fb3JfbWF4Ci0ldHlw
ZSA8dmFsdWU+IG1pbl9vcl9tYXhfZnVuY3Rpb24KLQotJXR5cGUgPHN0cmluZz4gZWxlbWVudF9u
YW1lCi0ldHlwZSA8c3RyaW5nPiBhdHRyX25hbWUKLQotJSUKLQotc3R5bGVzaGVldDoKLSAgICBt
YXliZV9zcGFjZSBtYXliZV9jaGFyc2V0IG1heWJlX3NnbWwgcnVsZV9saXN0Ci0gIHwgd2Via2l0
X3J1bGUgbWF5YmVfc3BhY2UKLSAgfCB3ZWJraXRfZGVjbHMgbWF5YmVfc3BhY2UKLSAgfCB3ZWJr
aXRfdmFsdWUgbWF5YmVfc3BhY2UKLSAgfCB3ZWJraXRfbWVkaWFxdWVyeSBtYXliZV9zcGFjZQot
ICB8IHdlYmtpdF9zZWxlY3RvciBtYXliZV9zcGFjZQotICB8IHdlYmtpdF9rZXlmcmFtZV9ydWxl
IG1heWJlX3NwYWNlCi0gIDsKLQotd2Via2l0X3J1bGU6Ci0gICAgV0VCS0lUX1JVTEVfU1lNICd7
JyBtYXliZV9zcGFjZSB2YWxpZF9ydWxlIG1heWJlX3NwYWNlICd9JyB7Ci0gICAgICAgIHBhcnNl
ci0+bV9ydWxlID0gJDQ7Ci0gICAgfQotOwotCi13ZWJraXRfa2V5ZnJhbWVfcnVsZToKLSAgICBX
RUJLSVRfS0VZRlJBTUVfUlVMRV9TWU0gJ3snIG1heWJlX3NwYWNlIGtleWZyYW1lX3J1bGUgbWF5
YmVfc3BhY2UgJ30nIHsKLSAgICAgICAgcGFyc2VyLT5tX2tleWZyYW1lID0gJDQ7Ci0gICAgfQot
OwotCi13ZWJraXRfZGVjbHM6Ci0gICAgV0VCS0lUX0RFQ0xTX1NZTSAneycgbWF5YmVfc3BhY2Vf
YmVmb3JlX2RlY2xhcmF0aW9uIGRlY2xhcmF0aW9uX2xpc3QgJ30nIHsKLSAgICAgICAgLyogY2Fu
IGJlIGVtcHR5ICovCi0gICAgfQotOwotCi13ZWJraXRfdmFsdWU6Ci0gICAgV0VCS0lUX1ZBTFVF
X1NZTSAneycgbWF5YmVfc3BhY2UgZXhwciAnfScgewotICAgICAgICBpZiAoJDQpIHsKLSAgICAg
ICAgICAgIHBhcnNlci0+bV92YWx1ZUxpc3QgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlz
dCgkNCk7Ci0gICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHBhcnNlci0+bV9w
YXJzZWRQcm9wZXJ0aWVzLT5zaXplKCk7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlci0+cGFyc2VW
YWx1ZShwYXJzZXItPm1faWQsIHBhcnNlci0+bV9pbXBvcnRhbnQpKQotICAgICAgICAgICAgICAg
IHBhcnNlci0+cm9sbGJhY2tMYXN0UHJvcGVydGllcyhwYXJzZXItPm1fcGFyc2VkUHJvcGVydGll
cy0+c2l6ZSgpIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7Ci0gICAgICAgICAgICBwYXJzZXItPm1f
dmFsdWVMaXN0ID0gbnVsbHB0cjsKLSAgICAgICAgfQotICAgIH0KLTsKLQotd2Via2l0X21lZGlh
cXVlcnk6Ci0gICAgIFdFQktJVF9NRURJQVFVRVJZX1NZTSBXSElURVNQQUNFIG1heWJlX3NwYWNl
IG1lZGlhX3F1ZXJ5ICd9JyB7Ci0gICAgICAgICBwYXJzZXItPm1fbWVkaWFRdWVyeSA9IHBhcnNl
ci0+c2lua0Zsb2F0aW5nTWVkaWFRdWVyeSgkNCk7Ci0gICAgIH0KLTsKLQotd2Via2l0X3NlbGVj
dG9yOgotICAgIFdFQktJVF9TRUxFQ1RPUl9TWU0gJ3snIG1heWJlX3NwYWNlIHNlbGVjdG9yX2xp
c3QgJ30nIHsKLSAgICAgICAgaWYgKCQ0KSB7Ci0gICAgICAgICAgICBpZiAocGFyc2VyLT5tX3Nl
bGVjdG9yTGlzdEZvclBhcnNlU2VsZWN0b3IpCi0gICAgICAgICAgICAgICAgcGFyc2VyLT5tX3Nl
bGVjdG9yTGlzdEZvclBhcnNlU2VsZWN0b3ItPmFkb3B0U2VsZWN0b3JWZWN0b3IoKiQ0KTsKLSAg
ICAgICAgfQotICAgIH0KLTsKLQotbWF5YmVfc3BhY2U6Ci0gICAgLyogZW1wdHkgKi8gJXByZWMg
VU5JTVBPUlRBTlRfVE9LCi0gIHwgbWF5YmVfc3BhY2UgV0hJVEVTUEFDRQotICA7Ci0KLW1heWJl
X3NnbWw6Ci0gICAgLyogZW1wdHkgKi8KLSAgfCBtYXliZV9zZ21sIFNHTUxfQ0QKLSAgfCBtYXli
ZV9zZ21sIFdISVRFU1BBQ0UKLSAgOwotCi1tYXliZV9jaGFyc2V0OgotICAgLyogZW1wdHkgKi8K
LSAgfCBjaGFyc2V0IHsKLSAgfQotICA7Ci0KLWNsb3NpbmdfYnJhY2U6Ci0gICAgJ30nCi0gIHwg
JXByZWMgTE9XRVNUX1BSRUMgVE9LRU5fRU9GCi0gIDsKLQotY2hhcnNldDoKLSAgQ0hBUlNFVF9T
WU0gbWF5YmVfc3BhY2UgU1RSSU5HIG1heWJlX3NwYWNlICc7JyB7Ci0gICAgIGlmIChwYXJzZXIt
Pm1fc3R5bGVTaGVldCkKLSAgICAgICAgIHBhcnNlci0+bV9zdHlsZVNoZWV0LT5wYXJzZXJTZXRF
bmNvZGluZ0Zyb21DaGFyc2V0UnVsZSgkMyk7Ci0gICAgIGlmIChwYXJzZXItPmlzRXh0cmFjdGlu
Z1NvdXJjZURhdGEoKSAmJiBwYXJzZXItPm1fY3VycmVudFJ1bGVEYXRhU3RhY2stPmlzRW1wdHko
KSAmJiBwYXJzZXItPm1fcnVsZVNvdXJjZURhdGFSZXN1bHQpCi0gICAgICAgICBwYXJzZXItPmFk
ZE5ld1J1bGVUb1NvdXJjZVRyZWUoQ1NTUnVsZVNvdXJjZURhdGE6OmNyZWF0ZVVua25vd24oKSk7
Ci0gICAgICQkID0gMDsKLSAgfQotICB8IENIQVJTRVRfU1lNIGVycm9yIGludmFsaWRfYmxvY2sg
ewotICB9Ci0gIHwgQ0hBUlNFVF9TWU0gZXJyb3IgJzsnIHsKLSAgfQotOwotCi1pZ25vcmVkX2No
YXJzZXQ6Ci0gICAgQ0hBUlNFVF9TWU0gbWF5YmVfc3BhY2UgU1RSSU5HIG1heWJlX3NwYWNlICc7
JyB7Ci0gICAgICAgIC8vIElnbm9yZSBhbnkgQGNoYXJzZXQgcnVsZSBub3QgYXQgdGhlIGJlZ2lu
bmluZyBvZiB0aGUgc3R5bGUgc2hlZXQuCi0gICAgICAgICQkID0gMDsKLSAgICB9Ci0gICAgfCBD
SEFSU0VUX1NZTSBtYXliZV9zcGFjZSAnOycgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotOwot
Ci1ydWxlX2xpc3Q6Ci0gICAvKiBlbXB0eSAqLwotIHwgcnVsZV9saXN0IHJ1bGUgbWF5YmVfc2dt
bCB7Ci0gICAgIGlmICgkMiAmJiBwYXJzZXItPm1fc3R5bGVTaGVldCkKLSAgICAgICAgIHBhcnNl
ci0+bV9zdHlsZVNoZWV0LT5wYXJzZXJBcHBlbmRSdWxlKCQyKTsKLSB9Ci0gOwotCi12YWxpZF9y
dWxlOgotICAgIHJ1bGVzZXQKLSAgfCBtZWRpYQotICB8IHBhZ2UKLSAgfCBmb250X2ZhY2UKLSAg
fCBrZXlmcmFtZXMKLSAgfCBuYW1lc3BhY2UKLSAgfCBpbXBvcnQKLSAgfCByZWdpb24KLSAgOwot
Ci1ydWxlOgotICAgIHZhbGlkX3J1bGUgewotICAgICAgICBwYXJzZXItPm1faGFkU3ludGFjdGlj
YWxseVZhbGlkQ1NTUnVsZSA9IHRydWU7Ci0gICAgfQotICB8IGlnbm9yZWRfY2hhcnNldAotICB8
IGludmFsaWRfcnVsZQotICB8IGludmFsaWRfYXQKLSAgOwotCi1ibG9ja19ydWxlX2xpc3Q6IAot
ICAgIC8qIGVtcHR5ICovIHsgJCQgPSAwOyB9Ci0gIHwgYmxvY2tfcnVsZV9saXN0IGJsb2NrX3J1
bGUgbWF5YmVfc2dtbCB7Ci0gICAgICAkJCA9ICQxOwotICAgICAgaWYgKCQyKSB7Ci0gICAgICAg
ICAgaWYgKCEkJCkKLSAgICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZVJ1bGVMaXN0KCk7
Ci0gICAgICAgICAgJCQtPmFwcGVuZCgkMik7Ci0gICAgICB9Ci0gIH0KLSAgOwotCi1ibG9ja192
YWxpZF9ydWxlOgotICAgIHJ1bGVzZXQKLSAgfCBwYWdlCi0gIHwgZm9udF9mYWNlCi0gIHwga2V5
ZnJhbWVzCi0gIDsKLQotYmxvY2tfcnVsZToKLSAgICBibG9ja192YWxpZF9ydWxlCi0gIHwgaW52
YWxpZF9ydWxlCi0gIHwgaW52YWxpZF9hdAotICB8IG5hbWVzcGFjZQotICB8IGltcG9ydAotICB8
IG1lZGlhCi0gIDsKLQotYXRfaW1wb3J0X2hlYWRlcl9lbmRfbWF5YmVfc3BhY2U6Ci0gICAgbWF5
YmVfc3BhY2UgewotICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyRW5kKCk7Ci0gICAgICAg
IHBhcnNlci0+bWFya1J1bGVCb2R5U3RhcnQoKTsKLSAgICB9Ci0gICAgOwotCi1iZWZvcmVfaW1w
b3J0X3J1bGU6Ci0gICAgLyogZW1wdHkgKi8gewotICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVh
ZGVyU3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6OklNUE9SVF9SVUxFKTsKLSAgICB9Ci0gICAgOwot
Ci1pbXBvcnQ6Ci0gICAgYmVmb3JlX2ltcG9ydF9ydWxlIElNUE9SVF9TWU0gYXRfaW1wb3J0X2hl
YWRlcl9lbmRfbWF5YmVfc3BhY2Ugc3RyaW5nX29yX3VyaSBtYXliZV9zcGFjZSBtYXliZV9tZWRp
YV9saXN0ICc7JyB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVJbXBvcnRSdWxlKCQ0LCAk
Nik7Ci0gICAgfQotICB8IGJlZm9yZV9pbXBvcnRfcnVsZSBJTVBPUlRfU1lNIGF0X2ltcG9ydF9o
ZWFkZXJfZW5kX21heWJlX3NwYWNlIHN0cmluZ19vcl91cmkgbWF5YmVfc3BhY2UgbWF5YmVfbWVk
aWFfbGlzdCBUT0tFTl9FT0YgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlSW1wb3J0UnVs
ZSgkNCwgJDYpOwotICAgIH0KLSAgfCBiZWZvcmVfaW1wb3J0X3J1bGUgSU1QT1JUX1NZTSBhdF9p
bXBvcnRfaGVhZGVyX2VuZF9tYXliZV9zcGFjZSBzdHJpbmdfb3JfdXJpIG1heWJlX3NwYWNlIG1h
eWJlX21lZGlhX2xpc3QgaW52YWxpZF9ibG9jayB7Ci0gICAgICAgICQkID0gMDsKLSAgICAgICAg
cGFyc2VyLT5wb3BSdWxlRGF0YSgpOwotICAgIH0KLSAgfCBiZWZvcmVfaW1wb3J0X3J1bGUgSU1Q
T1JUX1NZTSBlcnJvciAnOycgewotICAgICAgICAkJCA9IDA7Ci0gICAgICAgIHBhcnNlci0+cG9w
UnVsZURhdGEoKTsKLSAgICB9Ci0gIHwgYmVmb3JlX2ltcG9ydF9ydWxlIElNUE9SVF9TWU0gZXJy
b3IgaW52YWxpZF9ibG9jayB7Ci0gICAgICAgICQkID0gMDsKLSAgICAgICAgcGFyc2VyLT5wb3BS
dWxlRGF0YSgpOwotICAgIH0KLSAgOwotCi1uYW1lc3BhY2U6Ci1OQU1FU1BBQ0VfU1lNIG1heWJl
X3NwYWNlIG1heWJlX25zX3ByZWZpeCBzdHJpbmdfb3JfdXJpIG1heWJlX3NwYWNlICc7JyB7Ci0g
ICAgcGFyc2VyLT5hZGROYW1lc3BhY2UoJDMsICQ0KTsKLSAgICAkJCA9IDA7Ci19Ci18IE5BTUVT
UEFDRV9TWU0gbWF5YmVfc3BhY2UgbWF5YmVfbnNfcHJlZml4IHN0cmluZ19vcl91cmkgbWF5YmVf
c3BhY2UgaW52YWxpZF9ibG9jayB7Ci0gICAgJCQgPSAwOwotfQotfCBOQU1FU1BBQ0VfU1lNIGVy
cm9yIGludmFsaWRfYmxvY2sgewotICAgICQkID0gMDsKLX0KLXwgTkFNRVNQQUNFX1NZTSBlcnJv
ciAnOycgewotICAgICQkID0gMDsKLX0KLTsKLQotbWF5YmVfbnNfcHJlZml4OgotLyogZW1wdHkg
Ki8geyAkJC5jbGVhcigpOyB9Ci18IElERU5UIG1heWJlX3NwYWNlIHsgJCQgPSAkMTsgfQotOwot
Ci1zdHJpbmdfb3JfdXJpOgotU1RSSU5HCi18IFVSSQotOwotCi1tZWRpYV9mZWF0dXJlOgotICAg
IElERU5UIG1heWJlX3NwYWNlIHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICB9Ci0gICAgOwotCi1t
YXliZV9tZWRpYV92YWx1ZToKLSAgICAvKmVtcHR5Ki8gewotICAgICAgICAkJCA9IDA7Ci0gICAg
fQotICAgIHwgJzonIG1heWJlX3NwYWNlIGV4cHIgbWF5YmVfc3BhY2UgewotICAgICAgICAkJCA9
ICQzOwotICAgIH0KLSAgICA7Ci0KLW1lZGlhX3F1ZXJ5X2V4cDoKLSAgICAnKCcgbWF5YmVfc3Bh
Y2UgbWVkaWFfZmVhdHVyZSBtYXliZV9zcGFjZSBtYXliZV9tZWRpYV92YWx1ZSAnKScgbWF5YmVf
c3BhY2UgewotICAgICAgICAkMy5sb3dlcigpOwotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRl
RmxvYXRpbmdNZWRpYVF1ZXJ5RXhwKCQzLCAkNSk7Ci0gICAgfQotICAgIDsKLQotbWVkaWFfcXVl
cnlfZXhwX2xpc3Q6Ci0gICAgbWVkaWFfcXVlcnlfZXhwIHsKLSAgICAgICAgJCQgPSBwYXJzZXIt
PmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeUV4cExpc3QoKTsKLSAgICAgICAgJCQtPmFwcGVuZChw
YXJzZXItPnNpbmtGbG9hdGluZ01lZGlhUXVlcnlFeHAoJDEpKTsKLSAgICB9Ci0gICAgfCBtZWRp
YV9xdWVyeV9leHBfbGlzdCBtYXliZV9zcGFjZSBNRURJQV9BTkQgbWF5YmVfc3BhY2UgbWVkaWFf
cXVlcnlfZXhwIHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgJCQtPmFwcGVuZChwYXJzZXIt
PnNpbmtGbG9hdGluZ01lZGlhUXVlcnlFeHAoJDUpKTsKLSAgICB9Ci0gICAgOwotCi1tYXliZV9h
bmRfbWVkaWFfcXVlcnlfZXhwX2xpc3Q6Ci0gICAgLyplbXB0eSovIHsKLSAgICAgICAgJCQgPSBw
YXJzZXItPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeUV4cExpc3QoKTsKLSAgICB9Ci0gICAgfCBN
RURJQV9BTkQgbWF5YmVfc3BhY2UgbWVkaWFfcXVlcnlfZXhwX2xpc3QgewotICAgICAgICAkJCA9
ICQzOwotICAgIH0KLSAgICA7Ci0KLW1heWJlX21lZGlhX3Jlc3RyaWN0b3I6Ci0gICAgLyplbXB0
eSovIHsKLSAgICAgICAgJCQgPSBNZWRpYVF1ZXJ5OjpOb25lOwotICAgIH0KLSAgICB8IE1FRElB
X09OTFkgewotICAgICAgICAkJCA9IE1lZGlhUXVlcnk6Ok9ubHk7Ci0gICAgfQotICAgIHwgTUVE
SUFfTk9UIHsKLSAgICAgICAgJCQgPSBNZWRpYVF1ZXJ5OjpOb3Q7Ci0gICAgfQotICAgIDsKLQot
bWVkaWFfcXVlcnk6Ci0gICAgbWVkaWFfcXVlcnlfZXhwX2xpc3QgewotICAgICAgICAkJCA9IHBh
cnNlci0+Y3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5KHBhcnNlci0+c2lua0Zsb2F0aW5nTWVkaWFR
dWVyeUV4cExpc3QoJDEpKTsKLSAgICB9Ci0gICAgfAotICAgIG1heWJlX21lZGlhX3Jlc3RyaWN0
b3IgbWF5YmVfc3BhY2UgbWVkaXVtIG1heWJlX2FuZF9tZWRpYV9xdWVyeV9leHBfbGlzdCB7Ci0g
ICAgICAgICQzLmxvd2VyKCk7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ01l
ZGlhUXVlcnkoJDEsICQzLCBwYXJzZXItPnNpbmtGbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KCQ0
KSk7Ci0gICAgfQotICAgIDsKLQotbWF5YmVfbWVkaWFfbGlzdDoKLSAgICAgLyogZW1wdHkgKi8g
ewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlTWVkaWFRdWVyeVNldCgpOwotICAgICB9Ci0g
ICAgIHwgbWVkaWFfbGlzdAotICAgICA7Ci0KLW1lZGlhX2xpc3Q6Ci0gICAgbWVkaWFfcXVlcnkg
ewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlTWVkaWFRdWVyeVNldCgpOwotICAgICAgICAk
JC0+YWRkTWVkaWFRdWVyeShwYXJzZXItPnNpbmtGbG9hdGluZ01lZGlhUXVlcnkoJDEpKTsKLSAg
ICAgICAgcGFyc2VyLT51cGRhdGVMYXN0TWVkaWFMaW5lKCQkKTsKLSAgICB9Ci0gICAgfCBtZWRp
YV9saXN0ICcsJyBtYXliZV9zcGFjZSBtZWRpYV9xdWVyeSB7Ci0gICAgICAgICQkID0gJDE7Ci0g
ICAgICAgIGlmICgkJCkgewotICAgICAgICAgICAgJCQtPmFkZE1lZGlhUXVlcnkocGFyc2VyLT5z
aW5rRmxvYXRpbmdNZWRpYVF1ZXJ5KCQ0KSk7Ci0gICAgICAgICAgICBwYXJzZXItPnVwZGF0ZUxh
c3RNZWRpYUxpbmUoJCQpOwotICAgICAgICB9Ci0gICAgfQotICAgIHwgbWVkaWFfbGlzdCBlcnJv
ciB7Ci0gICAgICAgICQkID0gMDsKLSAgICB9Ci0gICAgOwotCi1hdF9ydWxlX2JvZHlfc3RhcnQ6
Ci0gICAgLyogZW1wdHkgKi8gewotICAgICAgICBwYXJzZXItPm1hcmtSdWxlQm9keVN0YXJ0KCk7
Ci0gICAgfQotICAgIDsKLQotYmVmb3JlX21lZGlhX3J1bGU6Ci0gICAgLyogZW1wdHkgKi8gewot
ICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6Ok1F
RElBX1JVTEUpOwotICAgIH0KLSAgICA7Ci0KLWF0X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9zcGFj
ZToKLSAgICBtYXliZV9zcGFjZSB7Ci0gICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJFbmQo
KTsKLSAgICB9Ci0gICAgOwotCi1tZWRpYToKLSAgICBiZWZvcmVfbWVkaWFfcnVsZSBNRURJQV9T
WU0gbWF5YmVfc3BhY2UgbWVkaWFfbGlzdCBhdF9ydWxlX2hlYWRlcl9lbmQgJ3snIGF0X3J1bGVf
Ym9keV9zdGFydCBtYXliZV9zcGFjZSBibG9ja19ydWxlX2xpc3Qgc2F2ZV9ibG9jayB7Ci0gICAg
ICAgICQkID0gcGFyc2VyLT5jcmVhdGVNZWRpYVJ1bGUoJDQsICQ5KTsKLSAgICB9Ci0gICAgfCBi
ZWZvcmVfbWVkaWFfcnVsZSBNRURJQV9TWU0gYXRfcnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNl
ICd7JyBhdF9ydWxlX2JvZHlfc3RhcnQgbWF5YmVfc3BhY2UgYmxvY2tfcnVsZV9saXN0IHNhdmVf
YmxvY2sgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlTWVkaWFSdWxlKDAsICQ3KTsKLSAg
ICB9Ci0gICAgfCBiZWZvcmVfbWVkaWFfcnVsZSBNRURJQV9TWU0gYXRfcnVsZV9oZWFkZXJfZW5k
X21heWJlX3NwYWNlICc7JyB7Ci0gICAgICAgICQkID0gMDsKLSAgICAgICAgcGFyc2VyLT5wb3BS
dWxlRGF0YSgpOwotICAgIH0KLSAgICA7Ci0KLW1lZGl1bToKLSAgSURFTlQgbWF5YmVfc3BhY2Ug
ewotICAgICAgJCQgPSAkMTsKLSAgfQotICA7Ci0KLWJlZm9yZV9rZXlmcmFtZXNfcnVsZToKLSAg
ICAvKiBlbXB0eSAqLyB7Ci0gICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJTdGFydChDU1NS
dWxlU291cmNlRGF0YTo6S0VZRlJBTUVTX1JVTEUpOwotICAgIH0KLSAgICA7Ci0KLWtleWZyYW1l
czoKLSAgICBiZWZvcmVfa2V5ZnJhbWVzX3J1bGUgV0VCS0lUX0tFWUZSQU1FU19TWU0gbWF5YmVf
c3BhY2Uga2V5ZnJhbWVfbmFtZSBhdF9ydWxlX2hlYWRlcl9lbmRfbWF5YmVfc3BhY2UgJ3snIGF0
X3J1bGVfYm9keV9zdGFydCBtYXliZV9zcGFjZSBrZXlmcmFtZXNfcnVsZSBjbG9zaW5nX2JyYWNl
IHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUtleWZyYW1lc1J1bGUoJDQsIHBhcnNlci0+
c2lua0Zsb2F0aW5nS2V5ZnJhbWVWZWN0b3IoJDkpKTsKLSAgICB9Ci0gICAgOwotICAKLWtleWZy
YW1lX25hbWU6Ci0gICAgSURFTlQKLSAgICB8IFNUUklORwotICAgIDsKLQota2V5ZnJhbWVzX3J1
bGU6Ci0gICAgLyogZW1wdHkgKi8geyAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdLZXlmcmFt
ZVZlY3RvcigpOyB9Ci0gICAgfCBrZXlmcmFtZXNfcnVsZSBrZXlmcmFtZV9ydWxlIG1heWJlX3Nw
YWNlIHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgaWYgKCQyKQotICAgICAgICAgICAgJCQt
PmFwcGVuZCgkMik7Ci0gICAgfQotICAgIDsKLQota2V5ZnJhbWVfcnVsZToKLSAgICBrZXlfbGlz
dCBtYXliZV9zcGFjZSAneycgbWF5YmVfc3BhY2UgZGVjbGFyYXRpb25fbGlzdCAnfScgewotICAg
ICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlS2V5ZnJhbWUoJDEpOwotICAgIH0KLSAgICA7Ci0KLWtl
eV9saXN0OgotICAgIGtleSB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1Zh
bHVlTGlzdCgpOwotICAgICAgICAkJC0+YWRkVmFsdWUocGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1
ZSgkMSkpOwotICAgIH0KLSAgICB8IGtleV9saXN0IG1heWJlX3NwYWNlICcsJyBtYXliZV9zcGFj
ZSBrZXkgewotICAgICAgICAkJCA9ICQxOwotICAgICAgICBpZiAoJCQpCi0gICAgICAgICAgICAk
JC0+YWRkVmFsdWUocGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZSgkNSkpOwotICAgIH0KLSAgICA7
Ci0KLWtleToKLSAgICBtYXliZV91bmFyeV9vcGVyYXRvciBQRVJDRU5UQUdFIHsgJCQuaWQgPSAw
OyAkJC5pc0ludCA9IGZhbHNlOyAkJC5mVmFsdWUgPSAkMSAqICQyOyAkJC51bml0ID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7IH0KLSAgICB8IElERU5UIHsKLSAgICAgICAgJCQuaWQg
PSAwOyAkJC5pc0ludCA9IGZhbHNlOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVI7Ci0gICAgICAgIENTU1BhcnNlclN0cmluZyYgc3RyID0gJDE7Ci0gICAgICAgIGlmIChz
dHIuZXF1YWxJZ25vcmluZ0Nhc2UoImZyb20iKSkKLSAgICAgICAgICAgICQkLmZWYWx1ZSA9IDA7
Ci0gICAgICAgIGVsc2UgaWYgKHN0ci5lcXVhbElnbm9yaW5nQ2FzZSgidG8iKSkKLSAgICAgICAg
ICAgICQkLmZWYWx1ZSA9IDEwMDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgWVlFUlJPUjsK
LSAgICB9Ci0gICAgOwotCi1iZWZvcmVfcGFnZV9ydWxlOgotICAgIC8qIGVtcHR5ICovIHsKLSAg
ICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRhOjpQQUdF
X1JVTEUpOwotICAgIH0KLSAgICA7Ci0KLXBhZ2U6Ci0gICAgYmVmb3JlX3BhZ2VfcnVsZSBQQUdF
X1NZTSBtYXliZV9zcGFjZSBwYWdlX3NlbGVjdG9yIGF0X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9z
cGFjZQotICAgICd7JyBhdF9ydWxlX2JvZHlfc3RhcnQgbWF5YmVfc3BhY2VfYmVmb3JlX2RlY2xh
cmF0aW9uIGRlY2xhcmF0aW9uc19hbmRfbWFyZ2lucyBjbG9zaW5nX2JyYWNlIHsKLSAgICAgICAg
aWYgKCQ0KQotICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZVBhZ2VSdWxlKHBhcnNlci0+
c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDQpKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAv
LyBDbGVhciBwcm9wZXJ0aWVzIGluIHRoZSBpbnZhbGlkIEBwYWdlIHJ1bGUuCi0gICAgICAgICAg
ICBwYXJzZXItPmNsZWFyUHJvcGVydGllcygpOwotICAgICAgICAgICAgLy8gQWxzbyBjbGVhciBt
YXJnaW4gYXQtcnVsZXMgaGVyZSBvbmNlIHdlIGZ1bGx5IGltcGxlbWVudCBtYXJnaW4gYXQtcnVs
ZXMgcGFyc2luZy4KLSAgICAgICAgICAgICQkID0gMDsKLSAgICAgICAgICAgIHBhcnNlci0+cG9w
UnVsZURhdGEoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICB8IGJlZm9yZV9wYWdlX3J1bGUgUEFH
RV9TWU0gZXJyb3IgaW52YWxpZF9ibG9jayB7Ci0gICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7
Ci0gICAgICAkJCA9IDA7Ci0gICAgfQotICAgIHwgYmVmb3JlX3BhZ2VfcnVsZSBQQUdFX1NZTSBl
cnJvciAnOycgewotICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOwotICAgICAgJCQgPSAwOwot
ICAgIH0KLSAgICA7Ci0KLXBhZ2Vfc2VsZWN0b3I6Ci0gICAgSURFTlQgewotICAgICAgICAkJCA9
IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0VGFnKFF1
YWxpZmllZE5hbWUobnVsbEF0b20sICQxLCBwYXJzZXItPm1fZGVmYXVsdE5hbWVzcGFjZSkpOwot
ICAgICAgICAkJC0+c2V0Rm9yUGFnZSgpOwotICAgIH0KLSAgICB8IElERU5UIHBzZXVkb19wYWdl
IHsKLSAgICAgICAgJCQgPSAkMjsKLSAgICAgICAgaWYgKCQkKSB7Ci0gICAgICAgICAgICAkJC0+
c2V0VGFnKFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQxLCBwYXJzZXItPm1fZGVmYXVsdE5hbWVz
cGFjZSkpOwotICAgICAgICAgICAgJCQtPnNldEZvclBhZ2UoKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICB8IHBzZXVkb19wYWdlIHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgaWYgKCQkKQot
ICAgICAgICAgICAgJCQtPnNldEZvclBhZ2UoKTsKLSAgICB9Ci0gICAgfCAvKiBlbXB0eSAqLyB7
Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAg
ICQkLT5zZXRGb3JQYWdlKCk7Ci0gICAgfQotICAgIDsKLQotZGVjbGFyYXRpb25zX2FuZF9tYXJn
aW5zOgotICAgIGRlY2xhcmF0aW9uX2xpc3QKLSAgICB8IGRlY2xhcmF0aW9uc19hbmRfbWFyZ2lu
cyBtYXJnaW5fYm94IG1heWJlX3NwYWNlIGRlY2xhcmF0aW9uX2xpc3QKLSAgICA7Ci0KLW1hcmdp
bl9ib3g6Ci0gICAgbWFyZ2luX3N5bSB7Ci0gICAgICAgIHBhcnNlci0+c3RhcnREZWNsYXJhdGlv
bnNGb3JNYXJnaW5Cb3goKTsKLSAgICB9IG1heWJlX3NwYWNlICd7JyBtYXliZV9zcGFjZSBkZWNs
YXJhdGlvbl9saXN0IGNsb3NpbmdfYnJhY2UgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRl
TWFyZ2luQXRSdWxlKCQxKTsKLSAgICB9Ci0gICAgOwotCi1tYXJnaW5fc3ltIDoKLSAgICBUT1BM
RUZUQ09STkVSX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OlRvcExlZnRDb3JuZXJN
YXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgVE9QTEVGVF9TWU0gewotICAgICAgICAkJCA9IENTU1Nl
bGVjdG9yOjpUb3BMZWZ0TWFyZ2luQm94OwotICAgIH0KLSAgICB8IFRPUENFTlRFUl9TWU0gewot
ICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpUb3BDZW50ZXJNYXJnaW5Cb3g7Ci0gICAgfQotICAg
IHwgVE9QUklHSFRfU1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6VG9wUmlnaHRNYXJn
aW5Cb3g7Ci0gICAgfQotICAgIHwgVE9QUklHSFRDT1JORVJfU1lNIHsKLSAgICAgICAgJCQgPSBD
U1NTZWxlY3Rvcjo6VG9wUmlnaHRDb3JuZXJNYXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgQk9UVE9N
TEVGVENPUk5FUl9TWU0gewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpCb3R0b21MZWZ0Q29y
bmVyTWFyZ2luQm94OwotICAgIH0KLSAgICB8IEJPVFRPTUxFRlRfU1lNIHsKLSAgICAgICAgJCQg
PSBDU1NTZWxlY3Rvcjo6Qm90dG9tTGVmdE1hcmdpbkJveDsKLSAgICB9Ci0gICAgfCBCT1RUT01D
RU5URVJfU1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6Qm90dG9tQ2VudGVyTWFyZ2lu
Qm94OwotICAgIH0KLSAgICB8IEJPVFRPTVJJR0hUX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2Vs
ZWN0b3I6OkJvdHRvbVJpZ2h0TWFyZ2luQm94OwotICAgIH0KLSAgICB8IEJPVFRPTVJJR0hUQ09S
TkVSX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkJvdHRvbVJpZ2h0Q29ybmVyTWFy
Z2luQm94OwotICAgIH0KLSAgICB8IExFRlRUT1BfU1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxl
Y3Rvcjo6TGVmdFRvcE1hcmdpbkJveDsKLSAgICB9Ci0gICAgfCBMRUZUTUlERExFX1NZTSB7Ci0g
ICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkxlZnRNaWRkbGVNYXJnaW5Cb3g7Ci0gICAgfQotICAg
IHwgTEVGVEJPVFRPTV9TWU0gewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpMZWZ0Qm90dG9t
TWFyZ2luQm94OwotICAgIH0KLSAgICB8IFJJR0hUVE9QX1NZTSB7Ci0gICAgICAgICQkID0gQ1NT
U2VsZWN0b3I6OlJpZ2h0VG9wTWFyZ2luQm94OwotICAgIH0KLSAgICB8IFJJR0hUTUlERExFX1NZ
TSB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OlJpZ2h0TWlkZGxlTWFyZ2luQm94OwotICAg
IH0KLSAgICB8IFJJR0hUQk9UVE9NX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OlJp
Z2h0Qm90dG9tTWFyZ2luQm94OwotICAgIH0KLSAgICA7Ci0KLWJlZm9yZV9mb250X2ZhY2VfcnVs
ZToKLSAgICAvKiBlbXB0eSAqLyB7Ci0gICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJTdGFy
dChDU1NSdWxlU291cmNlRGF0YTo6Rk9OVF9GQUNFX1JVTEUpOwotICAgIH0KLSAgICA7Ci0KLWZv
bnRfZmFjZToKLSAgICBiZWZvcmVfZm9udF9mYWNlX3J1bGUgRk9OVF9GQUNFX1NZTSBhdF9ydWxl
X2hlYWRlcl9lbmRfbWF5YmVfc3BhY2UKLSAgICAneycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1heWJl
X3NwYWNlX2JlZm9yZV9kZWNsYXJhdGlvbiBkZWNsYXJhdGlvbl9saXN0IGNsb3NpbmdfYnJhY2Ug
ewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRm9udEZhY2VSdWxlKCk7Ci0gICAgfQotICAg
IHwgYmVmb3JlX2ZvbnRfZmFjZV9ydWxlIEZPTlRfRkFDRV9TWU0gZXJyb3IgaW52YWxpZF9ibG9j
ayB7Ci0gICAgICAkJCA9IDA7Ci0gICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7Ci0gICAgfQot
ICAgIHwgYmVmb3JlX2ZvbnRfZmFjZV9ydWxlIEZPTlRfRkFDRV9TWU0gZXJyb3IgJzsnIHsKLSAg
ICAgICQkID0gMDsKLSAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKLSAgICB9Ci07Ci0KLXJl
Z2lvbl9zZWxlY3RvcjoKLSAgICBzZWxlY3Rvcl9saXN0IHsKLSAgICAgICAgaWYgKCQxKSB7Ci0g
ICAgICAgICAgICBwYXJzZXItPnNldFJldXNhYmxlUmVnaW9uU2VsZWN0b3JWZWN0b3IoJDEpOwot
ICAgICAgICAgICAgJCQgPSBwYXJzZXItPnJldXNhYmxlUmVnaW9uU2VsZWN0b3JWZWN0b3IoKTsK
LSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgfQotOwot
Ci1iZWZvcmVfcmVnaW9uX3J1bGU6Ci0gICAgLyogZW1wdHkgKi8gewotICAgICAgICBwYXJzZXIt
Pm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6OlJFR0lPTl9SVUxFKTsKLSAg
ICB9Ci0gICAgOwotCi1yZWdpb246Ci0gICAgYmVmb3JlX3JlZ2lvbl9ydWxlIFdFQktJVF9SRUdJ
T05fUlVMRV9TWU0gV0hJVEVTUEFDRSByZWdpb25fc2VsZWN0b3IgYXRfcnVsZV9oZWFkZXJfZW5k
ICd7JyBhdF9ydWxlX2JvZHlfc3RhcnQgbWF5YmVfc3BhY2UgYmxvY2tfcnVsZV9saXN0IHNhdmVf
YmxvY2sgewotICAgICAgICBpZiAoJDQpCi0gICAgICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRl
UmVnaW9uUnVsZSgkNCwgJDkpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICQkID0gMDsK
LSAgICAgICAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKLSAgICAgICAgfQotICAgIH0KLTsK
LQotY29tYmluYXRvcjoKLSAgICAnKycgbWF5YmVfc3BhY2UgeyAkJCA9IENTU1NlbGVjdG9yOjpE
aXJlY3RBZGphY2VudDsgfQotICB8ICd+JyBtYXliZV9zcGFjZSB7ICQkID0gQ1NTU2VsZWN0b3I6
OkluZGlyZWN0QWRqYWNlbnQ7IH0KLSAgfCAnPicgbWF5YmVfc3BhY2UgeyAkJCA9IENTU1NlbGVj
dG9yOjpDaGlsZDsgfQotICA7Ci0KLW1heWJlX3VuYXJ5X29wZXJhdG9yOgotICAgIHVuYXJ5X29w
ZXJhdG9yIHsgJCQgPSAkMTsgfQotICAgIHwgeyAkJCA9IDE7IH0KLSAgICA7Ci0KLXVuYXJ5X29w
ZXJhdG9yOgotICAgICctJyB7ICQkID0gLTE7IH0KLSAgfCAnKycgeyAkJCA9IDE7IH0KLSAgOwot
Ci1tYXliZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRpb246Ci0gICAgbWF5YmVfc3BhY2UgewotICAg
ICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7Ci0gICAgfQotICA7Ci0KLWJlZm9yZV9z
ZWxlY3Rvcl9saXN0OgotICAgIC8qIGVtcHR5ICovIHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUnVs
ZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRhOjpTVFlMRV9SVUxFKTsKLSAgICB9Ci0gIDsK
LQotYXRfcnVsZV9oZWFkZXJfZW5kOgotICAgIC8qIGVtcHR5ICovIHsKLSAgICAgICAgcGFyc2Vy
LT5tYXJrUnVsZUhlYWRlckVuZCgpOwotICAgIH0KLSAgOwotCi1ydWxlc2V0OgotICAgIGJlZm9y
ZV9zZWxlY3Rvcl9saXN0IHNlbGVjdG9yX2xpc3QgYXRfcnVsZV9oZWFkZXJfZW5kICd7JyBhdF9y
dWxlX2JvZHlfc3RhcnQgbWF5YmVfc3BhY2VfYmVmb3JlX2RlY2xhcmF0aW9uIGRlY2xhcmF0aW9u
X2xpc3QgY2xvc2luZ19icmFjZSB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVTdHlsZVJ1
bGUoJDIpOwotICAgIH0KLSAgOwotCi1zZWxlY3Rvcl9saXN0OgotICAgIHNlbGVjdG9yICVwcmVj
IFVOSU1QT1JUQU5UX1RPSyB7Ci0gICAgICAgIGlmICgkMSkgewotICAgICAgICAgICAgJCQgPSBw
YXJzZXItPnNlbGVjdG9yVmVjdG9yKCk7Ci0gICAgICAgICAgICAkJC0+c2hyaW5rKDApOwotICAg
ICAgICAgICAgJCQtPmFwcGVuZChwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQxKSk7Ci0g
ICAgICAgICAgICBwYXJzZXItPnVwZGF0ZUxhc3RTZWxlY3RvckxpbmVBbmRQb3NpdGlvbigpOwot
ICAgICAgICB9Ci0gICAgfQotICAgIHwgc2VsZWN0b3JfbGlzdCAnLCcgbWF5YmVfc3BhY2Ugc2Vs
ZWN0b3IgJXByZWMgVU5JTVBPUlRBTlRfVE9LIHsKLSAgICAgICAgaWYgKCQxICYmICQ0KSB7Ci0g
ICAgICAgICAgICAkJCA9ICQxOwotICAgICAgICAgICAgJCQtPmFwcGVuZChwYXJzZXItPnNpbmtG
bG9hdGluZ1NlbGVjdG9yKCQ0KSk7Ci0gICAgICAgICAgICBwYXJzZXItPnVwZGF0ZUxhc3RTZWxl
Y3RvckxpbmVBbmRQb3NpdGlvbigpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICQkID0g
MDsKLSAgICB9Ci0gIHwgc2VsZWN0b3JfbGlzdCBlcnJvciB7Ci0gICAgICAgICQkID0gMDsKLSAg
ICB9Ci0gICA7Ci0KLXNlbGVjdG9yX3dpdGhfdHJhaWxpbmdfd2hpdGVzcGFjZToKLSAgICBzZWxl
Y3RvciBXSElURVNQQUNFIHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICB9Ci0gICAgOwotCi1zZWxl
Y3RvcjoKLSAgICBzaW1wbGVfc2VsZWN0b3IgewotICAgICAgICAkJCA9ICQxOwotICAgIH0KLSAg
ICB8IHNlbGVjdG9yX3dpdGhfdHJhaWxpbmdfd2hpdGVzcGFjZQotICAgIHsKLSAgICAgICAgJCQg
PSAkMTsKLSAgICB9Ci0gICAgfCBzZWxlY3Rvcl93aXRoX3RyYWlsaW5nX3doaXRlc3BhY2Ugc2lt
cGxlX3NlbGVjdG9yCi0gICAgewotICAgICAgICAkJCA9ICQyOwotICAgICAgICBpZiAoISQxKQot
ICAgICAgICAgICAgJCQgPSAwOwotICAgICAgICBlbHNlIGlmICgkJCkgewotICAgICAgICAgICAg
Q1NTUGFyc2VyU2VsZWN0b3IqIGVuZCA9ICQkOwotICAgICAgICAgICAgd2hpbGUgKGVuZC0+dGFn
SGlzdG9yeSgpKQotICAgICAgICAgICAgICAgIGVuZCA9IGVuZC0+dGFnSGlzdG9yeSgpOwotICAg
ICAgICAgICAgZW5kLT5zZXRSZWxhdGlvbihDU1NTZWxlY3Rvcjo6RGVzY2VuZGFudCk7Ci0gICAg
ICAgICAgICBlbmQtPnNldFRhZ0hpc3RvcnkocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3Rvcigk
MSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHwgc2VsZWN0b3IgY29tYmluYXRvciBzaW1wbGVf
c2VsZWN0b3IgewotICAgICAgICAkJCA9ICQzOwotICAgICAgICBpZiAoISQxKQotICAgICAgICAg
ICAgJCQgPSAwOwotICAgICAgICBlbHNlIGlmICgkJCkgewotICAgICAgICAgICAgQ1NTUGFyc2Vy
U2VsZWN0b3IqIGVuZCA9ICQkOwotICAgICAgICAgICAgd2hpbGUgKGVuZC0+dGFnSGlzdG9yeSgp
KQotICAgICAgICAgICAgICAgIGVuZCA9IGVuZC0+dGFnSGlzdG9yeSgpOwotICAgICAgICAgICAg
ZW5kLT5zZXRSZWxhdGlvbigkMik7Ci0gICAgICAgICAgICBlbmQtPnNldFRhZ0hpc3RvcnkocGFy
c2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHwg
c2VsZWN0b3IgZXJyb3IgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgIDsKLQotbmFtZXNw
YWNlX3NlbGVjdG9yOgotICAgIC8qIGVtcHR5ICovICd8JyB7ICQkLmNsZWFyKCk7IH0KLSAgICB8
ICcqJyAnfCcgeyBzdGF0aWMgTENoYXIgc3RhciA9ICcqJzsgJCQuaW5pdCgmc3RhciwgMSk7IH0K
LSAgICB8IElERU5UICd8JyB7ICQkID0gJDE7IH0KLTsKLSAgICAKLXNpbXBsZV9zZWxlY3RvcjoK
LSAgICBlbGVtZW50X25hbWUgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdT
ZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0VGFnKFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQx
LCBwYXJzZXItPm1fZGVmYXVsdE5hbWVzcGFjZSkpOwotICAgIH0KLSAgICB8IGVsZW1lbnRfbmFt
ZSBzcGVjaWZpZXJfbGlzdCB7Ci0gICAgICAgICQkID0gJDI7Ci0gICAgICAgIGlmICgkJCkKLSAg
ICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShudWxsQXRv
bSwgJDEsICQkKTsKLSAgICB9Ci0gICAgfCBzcGVjaWZpZXJfbGlzdCB7Ci0gICAgICAgICQkID0g
JDE7Ci0gICAgICAgIGlmICgkJCkKLSAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVy
c1dpdGhFbGVtZW50TmFtZShudWxsQXRvbSwgc3RhckF0b20sICQkKTsKLSAgICB9Ci0gICAgfCBu
YW1lc3BhY2Vfc2VsZWN0b3IgZWxlbWVudF9uYW1lIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNy
ZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldFRhZyhwYXJzZXItPmRldGVy
bWluZU5hbWVJbk5hbWVzcGFjZSgkMSwgJDIpKTsKLSAgICB9Ci0gICAgfCBuYW1lc3BhY2Vfc2Vs
ZWN0b3IgZWxlbWVudF9uYW1lIHNwZWNpZmllcl9saXN0IHsKLSAgICAgICAgJCQgPSAkMzsKLSAg
ICAgICAgaWYgKCQkKQotICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVs
ZW1lbnROYW1lKCQxLCAkMiwgJCQpOwotICAgIH0KLSAgICB8IG5hbWVzcGFjZV9zZWxlY3RvciBz
cGVjaWZpZXJfbGlzdCB7Ci0gICAgICAgICQkID0gJDI7Ci0gICAgICAgIGlmICgkJCkKLSAgICAg
ICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZSgkMSwgc3RhckF0
b20sICQkKTsKLSAgICB9Ci0gIDsKLQotc2ltcGxlX3NlbGVjdG9yX2xpc3Q6Ci0gICAgc2ltcGxl
X3NlbGVjdG9yICVwcmVjIFVOSU1QT1JUQU5UX1RPSyB7Ci0gICAgICAgIGlmICgkMSkgewotICAg
ICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3JWZWN0b3IoKTsKLSAg
ICAgICAgICAgICQkLT5hcHBlbmQocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMSkpOwot
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICQkID0gMDsKLSAgICB9Ci0gICAgfCBzaW1wbGVf
c2VsZWN0b3JfbGlzdCBtYXliZV9zcGFjZSAnLCcgbWF5YmVfc3BhY2Ugc2ltcGxlX3NlbGVjdG9y
ICVwcmVjIFVOSU1QT1JUQU5UX1RPSyB7Ci0gICAgICAgIGlmICgkMSAmJiAkNSkgewotICAgICAg
ICAgICAgJCQgPSAkMTsKLSAgICAgICAgICAgICQkLT5hcHBlbmQocGFyc2VyLT5zaW5rRmxvYXRp
bmdTZWxlY3RvcigkNSkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICQkID0gMDsKLSAg
ICB9Ci0gICAgfCBzaW1wbGVfc2VsZWN0b3JfbGlzdCBlcnJvciB7Ci0gICAgICAgICQkID0gMDsK
LSAgICB9Ci0gIDsKLQotZWxlbWVudF9uYW1lOgotICAgIElERU5UIHsKLSAgICAgICAgQ1NTUGFy
c2VyU3RyaW5nJiBzdHIgPSAkMTsKLSAgICAgICAgaWYgKHBhcnNlci0+bV9jb250ZXh0LmlzSFRN
TERvY3VtZW50KQotICAgICAgICAgICAgc3RyLmxvd2VyKCk7Ci0gICAgICAgICQkID0gc3RyOwot
ICAgIH0KLSAgICB8ICcqJyB7Ci0gICAgICAgIHN0YXRpYyBMQ2hhciBzdGFyID0gJyonOwotICAg
ICAgICAkJC5pbml0KCZzdGFyLCAxKTsKLSAgICB9Ci0gIDsKLQotc3BlY2lmaWVyX2xpc3Q6Ci0g
ICAgc3BlY2lmaWVyIHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICB9Ci0gICAgfCBzcGVjaWZpZXJf
bGlzdCBzcGVjaWZpZXIgewotICAgICAgICBpZiAoISQyKQotICAgICAgICAgICAgJCQgPSAwOwot
ICAgICAgICBlbHNlIGlmICgkMSkKLSAgICAgICAgICAgICQkID0gcGFyc2VyLT51cGRhdGVTcGVj
aWZpZXJzKCQxLCAkMik7Ci0gICAgfQotICAgIHwgc3BlY2lmaWVyX2xpc3QgZXJyb3IgewotICAg
ICAgICAkJCA9IDA7Ci0gICAgfQotOwotCi1zcGVjaWZpZXI6Ci0gICAgSURTRUwgewotICAgICAg
ICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0
TWF0Y2goQ1NTU2VsZWN0b3I6OklkKTsKLSAgICAgICAgaWYgKHBhcnNlci0+bV9jb250ZXh0Lm1v
ZGUgPT0gQ1NTUXVpcmtzTW9kZSkKLSAgICAgICAgICAgICQxLmxvd2VyKCk7Ci0gICAgICAgICQk
LT5zZXRWYWx1ZSgkMSk7Ci0gICAgfQotICB8IEhFWCB7Ci0gICAgICAgIGlmICgkMVswXSA+PSAn
MCcgJiYgJDFbMF0gPD0gJzknKSB7Ci0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwot
ICAgICAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpJZCk7Ci0gICAgICAgICAgICBp
ZiAocGFyc2VyLT5tX2NvbnRleHQubW9kZSA9PSBDU1NRdWlya3NNb2RlKQotICAgICAgICAgICAg
ICAgICQxLmxvd2VyKCk7Ci0gICAgICAgICAgICAkJC0+c2V0VmFsdWUoJDEpOwotICAgICAgICB9
Ci0gICAgfQotICB8IGNsYXNzCi0gIHwgYXR0cmliCi0gIHwgcHNldWRvCi0gICAgOwotCi1jbGFz
czoKLSAgICAnLicgSURFTlQgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdT
ZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OkNsYXNzKTsKLSAg
ICAgICAgaWYgKHBhcnNlci0+bV9jb250ZXh0Lm1vZGUgPT0gQ1NTUXVpcmtzTW9kZSkKLSAgICAg
ICAgICAgICQyLmxvd2VyKCk7Ci0gICAgICAgICQkLT5zZXRWYWx1ZSgkMik7Ci0gICAgfQotICA7
Ci0KLWF0dHJfbmFtZToKLSAgICBJREVOVCBtYXliZV9zcGFjZSB7Ci0gICAgICAgIENTU1BhcnNl
clN0cmluZyYgc3RyID0gJDE7Ci0gICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4dC5pc0hUTUxE
b2N1bWVudCkKLSAgICAgICAgICAgIHN0ci5sb3dlcigpOwotICAgICAgICAkJCA9IHN0cjsKLSAg
ICB9Ci0gICAgOwotCi1hdHRyaWI6Ci0gICAgJ1snIG1heWJlX3NwYWNlIGF0dHJfbmFtZSAnXScg
ewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAg
ICAkJC0+c2V0QXR0cmlidXRlKFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQzLCBudWxsQXRvbSkp
OwotICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlNldCk7Ci0gICAgfQotICAgIHwg
J1snIG1heWJlX3NwYWNlIGF0dHJfbmFtZSBtYXRjaCBtYXliZV9zcGFjZSBpZGVudF9vcl9zdHJp
bmcgbWF5YmVfc3BhY2UgJ10nIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5n
U2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldEF0dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxB
dG9tLCAkMywgbnVsbEF0b20pKTsKLSAgICAgICAgJCQtPnNldE1hdGNoKChDU1NTZWxlY3Rvcjo6
TWF0Y2gpJDQpOwotICAgICAgICAkJC0+c2V0VmFsdWUoJDYpOwotICAgIH0KLSAgICB8ICdbJyBt
YXliZV9zcGFjZSBuYW1lc3BhY2Vfc2VsZWN0b3IgYXR0cl9uYW1lICddJyB7Ci0gICAgICAgICQk
ID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5zZXRBdHRy
aWJ1dGUocGFyc2VyLT5kZXRlcm1pbmVOYW1lSW5OYW1lc3BhY2UoJDMsICQ0KSk7Ci0gICAgICAg
ICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6U2V0KTsKLSAgICB9Ci0gICAgfCAnWycgbWF5YmVf
c3BhY2UgbmFtZXNwYWNlX3NlbGVjdG9yIGF0dHJfbmFtZSBtYXRjaCBtYXliZV9zcGFjZSBpZGVu
dF9vcl9zdHJpbmcgbWF5YmVfc3BhY2UgJ10nIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0
ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldEF0dHJpYnV0ZShwYXJzZXItPmRl
dGVybWluZU5hbWVJbk5hbWVzcGFjZSgkMywgJDQpKTsKLSAgICAgICAgJCQtPnNldE1hdGNoKChD
U1NTZWxlY3Rvcjo6TWF0Y2gpJDUpOwotICAgICAgICAkJC0+c2V0VmFsdWUoJDcpOwotICAgIH0K
LSAgOwotCi1tYXRjaDoKLSAgICAnPScgewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpFeGFj
dDsKLSAgICB9Ci0gICAgfCBJTkNMVURFUyB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6Okxp
c3Q7Ci0gICAgfQotICAgIHwgREFTSE1BVENIIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6
SHlwaGVuOwotICAgIH0KLSAgICB8IEJFR0lOU1dJVEggewotICAgICAgICAkJCA9IENTU1NlbGVj
dG9yOjpCZWdpbjsKLSAgICB9Ci0gICAgfCBFTkRTV0lUSCB7Ci0gICAgICAgICQkID0gQ1NTU2Vs
ZWN0b3I6OkVuZDsKLSAgICB9Ci0gICAgfCBDT05UQUlOUyB7Ci0gICAgICAgICQkID0gQ1NTU2Vs
ZWN0b3I6OkNvbnRhaW47Ci0gICAgfQotICAgIDsKLQotaWRlbnRfb3Jfc3RyaW5nOgotICAgIElE
RU5UCi0gIHwgU1RSSU5HCi0gICAgOwotCi1wc2V1ZG9fcGFnZToKLSAgICAnOicgSURFTlQgewot
ICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAk
JC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBhZ2VQc2V1ZG9DbGFzcyk7Ci0gICAgICAgICQyLmxv
d2VyKCk7Ci0gICAgICAgICQkLT5zZXRWYWx1ZSgkMik7Ci0gICAgICAgIENTU1NlbGVjdG9yOjpQ
c2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOwotICAgICAgICBpZiAodHlwZSA9PSBD
U1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bikKLSAgICAgICAgICAgICQkID0gMDsKLSAgICB9Ci0K
LXBzZXVkbzoKLSAgICAnOicgSURFTlQgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxv
YXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzKTsKLSAgICAgICAgJDIubG93ZXIoKTsKLSAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsK
LSAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgdHlwZSA9ICQkLT5wc2V1ZG9UeXBlKCk7
Ci0gICAgICAgIGlmICh0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9Vbmtub3duKQotICAgICAg
ICAgICAgJCQgPSAwOwotICAgIH0KLSAgICB8ICc6JyAnOicgSURFTlQgewotICAgICAgICAkJCA9
IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0TWF0Y2go
Q1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQpOwotICAgICAgICAkMy5sb3dlcigpOwotICAgICAg
ICAkJC0+c2V0VmFsdWUoJDMpOwotICAgICAgICAvLyBGSVhNRTogVGhpcyBjYWxsIGlzIG5lZWRl
ZCB0byBmb3JjZSBzZWxlY3RvciB0byBjb21wdXRlIHRoZSBwc2V1ZG9UeXBlIGVhcmx5IGVub3Vn
aC4KLSAgICAgICAgJCQtPnBzZXVkb1R5cGUoKTsKLSAgICB9Ci0gICAgLy8gdXNlIGJ5IDotd2Vi
a2l0LWFueS4KLSAgICAvLyBGSVhNRTogc2hvdWxkIHdlIHN1cHBvcnQgZ2VuZXJpYyBzZWxlY3Rv
cnMgaGVyZSBvciBqdXN0IHNpbXBsZV9zZWxlY3RvcnM/Ci0gICAgLy8gVXNlIHNpbXBsZV9zZWxl
Y3Rvcl9saXN0IGZvciBub3cgdG8gbWF0Y2ggLW1vei1hbnkuCi0gICAgLy8gU2VlIGh0dHA6Ly9s
aXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy1zdHlsZS8yMDEwU2VwLzA1NjYuaHRtbCBm
b3Igc29tZQotICAgIC8vIHJlbGF0ZWQgZGlzY3Vzc2lvbiB3aXRoIHJlc3BlY3QgdG8gOm5vdC4K
LSAgICB8ICc6JyBBTllGVU5DVElPTiBtYXliZV9zcGFjZSBzaW1wbGVfc2VsZWN0b3JfbGlzdCBt
YXliZV9zcGFjZSAnKScgewotICAgICAgICBpZiAoJDQpIHsKLSAgICAgICAgICAgICQkID0gcGFy
c2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICAgICAkJC0+c2V0TWF0Y2go
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKLSAgICAgICAgICAgICQkLT5hZG9wdFNlbGVjdG9y
VmVjdG9yKCpwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yVmVjdG9yKCQ0KSk7Ci0gICAgICAg
ICAgICAkMi5sb3dlcigpOwotICAgICAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsKLSAgICAgICAg
ICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOwotICAg
ICAgICAgICAgaWYgKHR5cGUgIT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0FueSkKLSAgICAgICAgICAg
ICAgICAkJCA9IDA7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgJCQgPSAwOwotICAgIH0K
LSAgICAvLyB1c2VkIGJ5IDpudGgtKihheCtiKQotICAgIHwgJzonIEZVTkNUSU9OIG1heWJlX3Nw
YWNlIE5USCBtYXliZV9zcGFjZSAnKScgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxv
YXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzKTsKLSAgICAgICAgJCQtPnNldEFyZ3VtZW50KCQ0KTsKLSAgICAgICAgJCQtPnNldFZh
bHVlKCQyKTsKLSAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgdHlwZSA9ICQkLT5wc2V1
ZG9UeXBlKCk7Ci0gICAgICAgIGlmICh0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9Vbmtub3du
KQotICAgICAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICAvLyB1c2VkIGJ5IDpudGgtKgotICAg
IHwgJzonIEZVTkNUSU9OIG1heWJlX3NwYWNlIG1heWJlX3VuYXJ5X29wZXJhdG9yIElOVEVHRVIg
bWF5YmVfc3BhY2UgJyknIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2Vs
ZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7
Ci0gICAgICAgICQkLT5zZXRBcmd1bWVudChTdHJpbmc6Om51bWJlcigkNCAqICQ1KSk7Ci0gICAg
ICAgICQkLT5zZXRWYWx1ZSgkMik7Ci0gICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5
cGUgPSAkJC0+cHNldWRvVHlwZSgpOwotICAgICAgICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6
UHNldWRvVW5rbm93bikKLSAgICAgICAgICAgICQkID0gMDsKLSAgICB9Ci0gICAgLy8gdXNlZCBi
eSA6bnRoLSoob2RkL2V2ZW4pIGFuZCA6bGFuZwotICAgIHwgJzonIEZVTkNUSU9OIG1heWJlX3Nw
YWNlIElERU5UIG1heWJlX3NwYWNlICcpJyB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVG
bG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2xhc3MpOwotICAgICAgICAkJC0+c2V0QXJndW1lbnQoJDQpOwotICAgICAgICAkMi5sb3dl
cigpOwotICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOwotICAgICAgICBDU1NTZWxlY3Rvcjo6UHNl
dWRvVHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUoKTsKLSAgICAgICAgaWYgKHR5cGUgPT0gQ1NT
U2VsZWN0b3I6OlBzZXVkb1Vua25vd24pCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgICAgIGVs
c2UgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb050aENoaWxkIHx8Ci0gICAgICAgICAg
ICAgICAgIHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb050aE9mVHlwZSB8fAotICAgICAgICAg
ICAgICAgICB0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9OdGhMYXN0Q2hpbGQgfHwKLSAgICAg
ICAgICAgICAgICAgdHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvTnRoTGFzdE9mVHlwZSkgewot
ICAgICAgICAgICAgaWYgKCFpc1ZhbGlkTnRoVG9rZW4oJDQpKQotICAgICAgICAgICAgICAgICQk
ID0gMDsKLSAgICAgICAgfQotICAgIH0KLSAgICAvLyB1c2VkIGJ5IDpub3QKLSAgICB8ICc6JyBO
T1RGVU5DVElPTiBtYXliZV9zcGFjZSBzaW1wbGVfc2VsZWN0b3IgbWF5YmVfc3BhY2UgJyknIHsK
LSAgICAgICAgaWYgKCEkNCB8fCAhJDQtPmlzU2ltcGxlKCkpCi0gICAgICAgICAgICAkJCA9IDA7
Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5n
U2VsZWN0b3IoKTsKLSAgICAgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRv
Q2xhc3MpOwotCi0gICAgICAgICAgICBDU1NTZWxlY3RvclZlY3RvciBzZWxlY3RvclZlY3RvcjsK
LSAgICAgICAgICAgIHNlbGVjdG9yVmVjdG9yLmFwcGVuZChwYXJzZXItPnNpbmtGbG9hdGluZ1Nl
bGVjdG9yKCQ0KSk7Ci0gICAgICAgICAgICAkJC0+YWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3Rv
clZlY3Rvcik7Ci0KLSAgICAgICAgICAgICQyLmxvd2VyKCk7Ci0gICAgICAgICAgICAkJC0+c2V0
VmFsdWUoJDIpOwotICAgICAgICB9Ci0gICAgfQotICA7Ci0KLWRlY2xhcmF0aW9uX2xpc3Q6Ci0g
ICAgZGVjbGFyYXRpb24gewotICAgICAgICAkJCA9ICQxOwotICAgIH0KLSAgICB8IGRlY2xfbGlz
dCBkZWNsYXJhdGlvbiB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgICAgIGlmICggJDIgKQotICAg
ICAgICAgICAgJCQgPSAkMjsKLSAgICB9Ci0gICAgfCBkZWNsX2xpc3QgewotICAgICAgICAkJCA9
ICQxOwotICAgIH0KLSAgICB8IGVycm9yIGludmFsaWRfYmxvY2tfbGlzdCBlcnJvciB7Ci0gICAg
ICAgICQkID0gZmFsc2U7Ci0gICAgfQotICAgIHwgZXJyb3IgewotICAgICAgICAkJCA9IGZhbHNl
OwotICAgIH0KLSAgICB8IGRlY2xfbGlzdCBlcnJvciB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAg
fQotICAgIHwgZGVjbF9saXN0IGludmFsaWRfYmxvY2tfbGlzdCB7Ci0gICAgICAgICQkID0gJDE7
Ci0gICAgfQotICAgIDsKLQotZGVjbF9saXN0OgotICAgIGRlY2xhcmF0aW9uICc7JyBtYXliZV9z
cGFjZSB7Ci0gICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5U3RhcnQoKTsKLSAgICAgICAgJCQg
PSAkMTsKLSAgICB9Ci0gICAgfCBkZWNsYXJhdGlvbiBpbnZhbGlkX2Jsb2NrX2xpc3QgbWF5YmVf
c3BhY2UgewotICAgICAgICAkJCA9IGZhbHNlOwotICAgIH0KLSAgICB8IGRlY2xhcmF0aW9uIGlu
dmFsaWRfYmxvY2tfbGlzdCAnOycgbWF5YmVfc3BhY2UgewotICAgICAgICAkJCA9IGZhbHNlOwot
ICAgIH0KLSAgICB8IGVycm9yICc7JyBtYXliZV9zcGFjZSB7Ci0gICAgICAgIHBhcnNlci0+bWFy
a1Byb3BlcnR5U3RhcnQoKTsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAgICB9Ci0gICAgfCBlcnJv
ciBpbnZhbGlkX2Jsb2NrX2xpc3QgZXJyb3IgJzsnIG1heWJlX3NwYWNlIHsKLSAgICAgICAgJCQg
PSBmYWxzZTsKLSAgICB9Ci0gICAgfCBkZWNsX2xpc3QgZGVjbGFyYXRpb24gJzsnIG1heWJlX3Nw
YWNlIHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlTdGFydCgpOwotICAgICAgICAkJCA9
ICQxOwotICAgICAgICBpZiAoJDIpCi0gICAgICAgICAgICAkJCA9ICQyOwotICAgIH0KLSAgICB8
IGRlY2xfbGlzdCBlcnJvciAnOycgbWF5YmVfc3BhY2UgewotICAgICAgICBwYXJzZXItPm1hcmtQ
cm9wZXJ0eVN0YXJ0KCk7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAgIHwgZGVjbF9saXN0
IGVycm9yIGludmFsaWRfYmxvY2tfbGlzdCBlcnJvciAnOycgbWF5YmVfc3BhY2UgewotICAgICAg
ICBwYXJzZXItPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQot
ICAgIDsKLQotZGVjbGFyYXRpb246Ci0gICAgVkFSX0RFRklOSVRJT04gJzonIG1heWJlX3NwYWNl
IGV4cHIgcHJpbyB7Ci0jaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCi0gICAgICAgIHBhcnNlci0+
c3RvcmVWYXJpYWJsZURlY2xhcmF0aW9uKCQxLCBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlz
dCgkNCksICQ1KTsKLSAgICAgICAgJCQgPSB0cnVlOwotICAgICAgICBwYXJzZXItPm1hcmtQcm9w
ZXJ0eUVuZCgkNSwgdHJ1ZSk7Ci0jZWxzZQotICAgICAgICAkJCA9IGZhbHNlOwotI2VuZGlmCi0g
ICAgfQotICAgIHwKLSAgICBwcm9wZXJ0eSAnOicgbWF5YmVfc3BhY2UgZXhwciBwcmlvIHsKLSAg
ICAgICAgJCQgPSBmYWxzZTsKLSAgICAgICAgYm9vbCBpc1Byb3BlcnR5UGFyc2VkID0gZmFsc2U7
Ci0gICAgICAgIGlmICgkMSAmJiAkNCkgewotICAgICAgICAgICAgcGFyc2VyLT5tX3ZhbHVlTGlz
dCA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQ0KTsKLSAgICAgICAgICAgIGludCBv
bGRQYXJzZWRQcm9wZXJ0aWVzID0gcGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKTsK
LSAgICAgICAgICAgICQkID0gcGFyc2VyLT5wYXJzZVZhbHVlKHN0YXRpY19jYXN0PENTU1Byb3Bl
cnR5SUQ+KCQxKSwgJDUpOwotICAgICAgICAgICAgaWYgKCEkJCkKLSAgICAgICAgICAgICAgICBw
YXJzZXItPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXMt
PnNpemUoKSAtIG9sZFBhcnNlZFByb3BlcnRpZXMpOwotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIGlzUHJvcGVydHlQYXJzZWQgPSB0cnVlOwotICAgICAgICAgICAgcGFyc2VyLT5t
X3ZhbHVlTGlzdCA9IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgcGFyc2VyLT5tYXJrUHJv
cGVydHlFbmQoJDUsIGlzUHJvcGVydHlQYXJzZWQpOwotICAgIH0KLSAgICB8Ci0gICAgcHJvcGVy
dHkgZXJyb3IgewotICAgICAgICAkJCA9IGZhbHNlOwotICAgIH0KLSAgICB8Ci0gICAgcHJvcGVy
dHkgJzonIG1heWJlX3NwYWNlIGVycm9yIGV4cHIgcHJpbyB7Ci0gICAgICAgIC8qIFRoZSBkZWZh
dWx0IG1vdmFibGUgdHlwZSB0ZW1wbGF0ZSBoYXMgbGV0dGVyLXNwYWNpbmc6IC5ub25lOyAgSGFu
ZGxlIHRoaXMgYnkgbG9va2luZyBmb3IKLSAgICAgICAgZXJyb3IgdG9rZW5zIGF0IHRoZSBzdGFy
dCBvZiBhbiBleHByLCByZWNvdmVyIHRoZSBleHByIGFuZCB0aGVuIHRyZWF0IGFzIGFuIGVycm9y
LCBjbGVhbmluZwotICAgICAgICB1cCBhbmQgZGVsZXRpbmcgdGhlIHNoaWZ0ZWQgZXhwci4gICov
Ci0gICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5RW5kKGZhbHNlLCBmYWxzZSk7Ci0gICAgICAg
ICQkID0gZmFsc2U7Ci0gICAgfQotICAgIHwKLSAgICBwcm9wZXJ0eSAnOicgbWF5YmVfc3BhY2Ug
ZXhwciBwcmlvIGVycm9yIHsKLSAgICAgICAgLyogV2hlbiB3ZSBlbmNvdW50ZXIgc29tZXRoaW5n
IGxpa2UgcCB7Y29sb3I6IHJlZCAhaW1wb3J0YW50IGZhaWw7fSB3ZSBzaG91bGQgZHJvcCB0aGUg
ZGVjbGFyYXRpb24gKi8KLSAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlFbmQoZmFsc2UsIGZh
bHNlKTsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAgICB9Ci0gICAgfAotICAgIElNUE9SVEFOVF9T
WU0gbWF5YmVfc3BhY2UgewotICAgICAgICAvKiBIYW5kbGUgdGhpcyBjYXNlOiBkaXYgeyB0ZXh0
LWFsaWduOiBjZW50ZXI7ICFpbXBvcnRhbnQgfSBKdXN0IHJlZHVjZSBhd2F5IHRoZSBzdHJheSAh
aW1wb3J0YW50LiAqLwotICAgICAgICAkJCA9IGZhbHNlOwotICAgIH0KLSAgICB8Ci0gICAgcHJv
cGVydHkgJzonIG1heWJlX3NwYWNlIHsKLSAgICAgICAgLyogZGl2IHsgZm9udC1mYW1pbHk6IH0g
SnVzdCByZWR1Y2UgYXdheSB0aGlzIHByb3BlcnR5IHdpdGggbm8gdmFsdWUuICovCi0gICAgICAg
IHBhcnNlci0+bWFya1Byb3BlcnR5RW5kKGZhbHNlLCBmYWxzZSk7Ci0gICAgICAgICQkID0gZmFs
c2U7Ci0gICAgfQotICAgIHwKLSAgICBwcm9wZXJ0eSAnOicgbWF5YmVfc3BhY2UgZXJyb3Igewot
ICAgICAgICAvKiBpZiB3ZSBjb21lIGFjcm9zcyBydWxlcyB3aXRoIGludmFsaWQgdmFsdWVzIGxp
a2UgdGhpcyBjYXNlOiBwIHsgd2VpZ2h0OiAqOyB9LCBqdXN0IGRpc2NhcmQgdGhlIHJ1bGUgKi8K
LSAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlFbmQoZmFsc2UsIGZhbHNlKTsKLSAgICAgICAg
JCQgPSBmYWxzZTsKLSAgICB9Ci0gICAgfAotICAgIHByb3BlcnR5IGludmFsaWRfYmxvY2sgewot
ICAgICAgICAvKiBpZiB3ZSBjb21lIGFjcm9zczogZGl2IHsgY29sb3J7O2NvbG9yOm1hcm9vbn0g
fSwgaWdub3JlIGV2ZXJ5dGhpbmcgd2l0aGluIGN1cmx5IGJyYWNrZXRzICovCi0gICAgICAgICQk
ID0gZmFsc2U7Ci0gICAgfQotICA7Ci0KLXByb3BlcnR5OgotICAgIElERU5UIG1heWJlX3NwYWNl
IHsKLSAgICAgICAgJCQgPSBjc3NQcm9wZXJ0eUlEKCQxKTsKLSAgICB9Ci0gIDsKLQotcHJpbzoK
LSAgICBJTVBPUlRBTlRfU1lNIG1heWJlX3NwYWNlIHsgJCQgPSB0cnVlOyB9Ci0gICAgfCAvKiBl
bXB0eSAqLyB7ICQkID0gZmFsc2U7IH0KLSAgOwotCi1leHByOgotICAgIHRlcm0gewotICAgICAg
ICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdWYWx1ZUxpc3QoKTsKLSAgICAgICAgJCQtPmFk
ZFZhbHVlKHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWUoJDEpKTsKLSAgICB9Ci0gICAgfCBleHBy
IG9wZXJhdG9yIHRlcm0gewotICAgICAgICAkJCA9ICQxOwotICAgICAgICBpZiAoJCQpIHsKLSAg
ICAgICAgICAgIGlmICgkMikgewotICAgICAgICAgICAgICAgIENTU1BhcnNlclZhbHVlIHY7Ci0g
ICAgICAgICAgICAgICAgdi5pZCA9IDA7Ci0gICAgICAgICAgICAgICAgdi51bml0ID0gQ1NTUGFy
c2VyVmFsdWU6Ok9wZXJhdG9yOwotICAgICAgICAgICAgICAgIHYuaVZhbHVlID0gJDI7Ci0gICAg
ICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHYpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
JCQtPmFkZFZhbHVlKHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWUoJDMpKTsKLSAgICAgICAgfQot
ICAgIH0KLSAgICB8IGV4cHIgaW52YWxpZF9ibG9ja19saXN0IHsKLSAgICAgICAgJCQgPSAwOwot
ICAgIH0KLSAgICB8IGV4cHIgaW52YWxpZF9ibG9ja19saXN0IGVycm9yIHsKLSAgICAgICAgJCQg
PSAwOwotICAgIH0KLSAgICB8IGV4cHIgZXJyb3IgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQot
ICA7Ci0KLW9wZXJhdG9yOgotICAgICcvJyBtYXliZV9zcGFjZSB7Ci0gICAgICAgICQkID0gJy8n
OwotICAgIH0KLSAgfCAnLCcgbWF5YmVfc3BhY2UgewotICAgICAgICAkJCA9ICcsJzsKLSAgICB9
Ci0gIHwgLyogZW1wdHkgKi8gewotICAgICAgICAkJCA9IDA7Ci0gIH0KLSAgOwotCi10ZXJtOgot
ICB1bmFyeV90ZXJtIHsgJCQgPSAkMTsgfQotICB8IHVuYXJ5X29wZXJhdG9yIHVuYXJ5X3Rlcm0g
eyAkJCA9ICQyOyAkJC5mVmFsdWUgKj0gJDE7IH0KLSAgfCBTVFJJTkcgbWF5YmVfc3BhY2UgeyAk
JC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19TVFJJTkc7IH0KLSAgfCBJREVOVCBtYXliZV9zcGFjZSB7Ci0gICAgICAkJC5pZCA9IGNzc1Zh
bHVlS2V5d29yZElEKCQxKTsKLSAgICAgICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X0lERU5UOwotICAgICAgJCQuc3RyaW5nID0gJDE7Ci0gIH0KLSAgLyogV2UgbWlnaHQgbmVlZCB0
byBhY3R1YWxseSBwYXJzZSB0aGUgbnVtYmVyIGZyb20gYSBkaW1lbnNpb24sIGJ1dCB3ZSBjYW4n
dCBqdXN0IHB1dCBzb21ldGhpbmcgdGhhdCB1c2VzICQkLnN0cmluZyBpbnRvIHVuYXJ5X3Rlcm0u
ICovCi0gIHwgRElNRU4gbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAk
JC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ESU1FTlNJT047IH0KLSAgfCB1bmFyeV9v
cGVyYXRvciBESU1FTiBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDI7ICQk
LnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RJTUVOU0lPTjsgfQotICB8IFVSSSBtYXli
ZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1VSSTsgfQotICB8IFVOSUNPREVSQU5HRSBtYXliZV9zcGFjZSB7ICQkLmlk
ID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VO
SUNPREVfUkFOR0U7IH0KLSAgfCBIRVggbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmlu
ZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1I7
IH0KLSAgfCAnIycgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9IENTU1BhcnNl
clN0cmluZygpOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVYQ09M
T1I7IH0gLyogSGFuZGxlIGVycm9yIGNhc2U6ICJjb2xvcjogIzsiICovCi0gIHwgVkFSRlVOQ1RJ
T04gbWF5YmVfc3BhY2UgSURFTlQgJyknIG1heWJlX3NwYWNlIHsKLSNpZiBFTkFCTEUoQ1NTX1ZB
UklBQkxFUykKLSAgICAgICQkLmlkID0gMDsKLSAgICAgICQkLnN0cmluZyA9ICQzOwotICAgICAg
JCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVkFSSUFCTEVfTkFNRTsKLSNlbmRpZgot
ICB9Ci0gIC8qIEZJWE1FOiBhY2NvcmRpbmcgdG8gdGhlIHNwZWNzIGEgZnVuY3Rpb24gY2FuIGhh
dmUgYSB1bmFyeV9vcGVyYXRvciBpbiBmcm9udC4gSSBrbm93IG5vIGNhc2Ugd2hlcmUgdGhpcyBt
YWtlcyBzZW5zZSAqLwotICB8IGZ1bmN0aW9uIHsKLSAgICAgICQkID0gJDE7Ci0gIH0KLSAgfCBj
YWxjX2Z1bmN0aW9uIHsKLSAgICAgICQkID0gJDE7Ci0gIH0KLSAgfCBtaW5fb3JfbWF4X2Z1bmN0
aW9uIHsKLSAgICAgICQkID0gJDE7Ci0gIH0KLSAgfCAnJScgbWF5YmVfc3BhY2UgeyAvKiBIYW5k
bGUgd2lkdGg6ICU7ICovCi0gICAgICAkJC5pZCA9IDA7ICQkLnVuaXQgPSAwOwotICB9Ci0gIDsK
LQotdW5hcnlfdGVybToKLSAgSU5URUdFUiBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuaXNJ
bnQgPSB0cnVlOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfTlVNQkVSOyB9Ci0gIHwgRkxPQVRUT0tFTiBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQu
aXNJbnQgPSBmYWxzZTsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUjsgfQotICB8IFBFUkNFTlRBR0UgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7
ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5U
QUdFOyB9Ci0gIHwgUFhTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsg
JCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFg7IH0KLSAgfCBDTVMgbWF5YmVfc3Bh
Y2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19DTTsgfQotICB8IE1NUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVl
ID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01NOyB9Ci0gIHwgSU5TIG1h
eWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfSU47IH0KLSAgfCBQVFMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQk
LmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QVDsgfQotICB8
IFBDUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BDOyB9Ci0gIHwgREVHUyBtYXliZV9zcGFjZSB7ICQkLmlk
ID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RF
RzsgfQotICB8IFJBRFMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAk
JC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SQUQ7IH0KLSAgfCBHUkFEUyBtYXliZV9z
cGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0dSQUQ7IH0KLSAgfCBUVVJOUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQu
ZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1RVUk47IH0KLSAg
fCBNU0VDUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01TOyB9Ci0gIHwgU0VDUyBtYXliZV9zcGFjZSB7ICQk
LmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1M7IH0KLSAgfCBIRVJUWiBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7
ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0haOyB9Ci0gIHwgS0hFUlRaIG1heWJl
X3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfS0haOyB9Ci0gIHwgRU1TIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5m
VmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TOyB9Ci0gIHwg
UUVNUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBD
U1NQYXJzZXJWYWx1ZTo6UV9FTVM7IH0KLSAgfCBFWFMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7
ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FWFM7IH0K
LSAgfCBSRU1TIG1heWJlX3NwYWNlIHsKLSAgICAgICQkLmlkID0gMDsKLSAgICAgICQkLmZWYWx1
ZSA9ICQxOwotICAgICAgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkVNUzsKLSAg
ICAgIGlmIChwYXJzZXItPm1fc3R5bGVTaGVldCkKLSAgICAgICAgICBwYXJzZXItPm1fc3R5bGVT
aGVldC0+cGFyc2VyU2V0VXNlc1JlbVVuaXRzKHRydWUpOwotICB9Ci0gIHwgVlcgbWF5YmVfc3Bh
Y2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19WVzsgfQotICB8IFZIIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUg
PSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVkg7IH0KLSAgfCBWTUlOIG1h
eWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfVk1JTjsgfQotICB8IERQUFggbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7
ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19EUFBYOyB9
Ci0gIHwgRFBJIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5p
dCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRFBJOyB9Ci0gIHwgRFBDTSBtYXliZV9zcGFjZSB7
ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX0RQQ007IH0KLSAgOwotCi1mdW5jdGlvbjoKLSAgICBGVU5DVElPTiBtYXliZV9zcGFjZSBl
eHByICcpJyBtYXliZV9zcGFjZSB7Ci0gICAgICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFy
c2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7Ci0gICAgICAgIGYtPm5hbWUgPSAkMTsKLSAg
ICAgICAgZi0+YXJncyA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQzKTsKLSAgICAg
ICAgJCQuaWQgPSAwOwotICAgICAgICAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9u
OwotICAgICAgICAkJC5mdW5jdGlvbiA9IGY7Ci0gICAgfSB8Ci0gICAgRlVOQ1RJT04gbWF5YmVf
c3BhY2UgZXhwciBUT0tFTl9FT0YgewotICAgICAgICBDU1NQYXJzZXJGdW5jdGlvbiogZiA9IHBh
cnNlci0+Y3JlYXRlRmxvYXRpbmdGdW5jdGlvbigpOwotICAgICAgICBmLT5uYW1lID0gJDE7Ci0g
ICAgICAgIGYtPmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkMyk7Ci0gICAg
ICAgICQkLmlkID0gMDsKLSAgICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlv
bjsKLSAgICAgICAgJCQuZnVuY3Rpb24gPSBmOwotICAgIH0gfAotICAgIEZVTkNUSU9OIG1heWJl
X3NwYWNlICcpJyBtYXliZV9zcGFjZSB7Ci0gICAgICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0g
cGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7Ci0gICAgICAgIGYtPm5hbWUgPSAkMTsK
LSAgICAgICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBwYXJzZXItPmNyZWF0ZUZs
b2F0aW5nVmFsdWVMaXN0KCk7Ci0gICAgICAgIGYtPmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9hdGlu
Z1ZhbHVlTGlzdCh2YWx1ZUxpc3QpOwotICAgICAgICAkJC5pZCA9IDA7Ci0gICAgICAgICQkLnVu
aXQgPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb247Ci0gICAgICAgICQkLmZ1bmN0aW9uID0gZjsK
LSAgICB9IHwKLSAgICBGVU5DVElPTiBtYXliZV9zcGFjZSBlcnJvciB7Ci0gICAgICAgIENTU1Bh
cnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7Ci0gICAg
ICAgIGYtPm5hbWUgPSAkMTsKLSAgICAgICAgZi0+YXJncyA9IG51bGxwdHI7Ci0gICAgICAgICQk
LmlkID0gMDsKLSAgICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKLSAg
ICAgICAgJCQuZnVuY3Rpb24gPSBmOwotICB9Ci0gIDsKLSAKLWNhbGNfZnVuY190ZXJtOgotICB1
bmFyeV90ZXJtIHsgJCQgPSAkMTsgfQotICB8IFZBUkZVTkNUSU9OIG1heWJlX3NwYWNlIElERU5U
ICcpJyBtYXliZV9zcGFjZSB7Ci0jaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCi0gICAgICAkJC5p
ZCA9IDA7Ci0gICAgICAkJC5zdHJpbmcgPSAkMzsKLSAgICAgICQkLnVuaXQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1ZBUklBQkxFX05BTUU7Ci0jZW5kaWYKLSAgfQotICB8IHVuYXJ5X29wZXJh
dG9yIHVuYXJ5X3Rlcm0geyAkJCA9ICQyOyAkJC5mVmFsdWUgKj0gJDE7IH0KLSAgOwotCi1jYWxj
X2Z1bmNfb3BlcmF0b3I6Ci0gICAgJysnIFdISVRFU1BBQ0UgewotICAgICAgICAkJCA9ICcrJzsK
LSAgICB9Ci0gICAgfCAnLScgV0hJVEVTUEFDRSB7Ci0gICAgICAgICQkID0gJy0nOwotICAgIH0K
LSAgICB8ICcqJyBtYXliZV9zcGFjZSB7Ci0gICAgICAgICQkID0gJyonOwotICAgIH0KLSAgICB8
ICcvJyBtYXliZV9zcGFjZSB7Ci0gICAgICAgICQkID0gJy8nOwotICAgIH0KLSAgOwotCi1jYWxj
X2Z1bmNfcGFyZW5fZXhwcjoKLSAgICAnKCcgbWF5YmVfc3BhY2UgY2FsY19mdW5jX2V4cHIgbWF5
YmVfc3BhY2UgJyknIG1heWJlX3NwYWNlIHsKLSAgICAgICAgaWYgKCQzKSB7Ci0gICAgICAgICAg
ICAkJCA9ICQzOwotICAgICAgICAgICAgQ1NTUGFyc2VyVmFsdWUgdjsKLSAgICAgICAgICAgIHYu
aWQgPSAwOwotICAgICAgICAgICAgdi51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOwot
ICAgICAgICAgICAgdi5pVmFsdWUgPSAnKCc7Ci0gICAgICAgICAgICAkJC0+aW5zZXJ0VmFsdWVB
dCgwLCB2KTsKLSAgICAgICAgICAgIHYuaVZhbHVlID0gJyknOwotICAgICAgICAgICAgJCQtPmFk
ZFZhbHVlKHYpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICQkID0gMDsKLSAgICB9Ci0K
LWNhbGNfZnVuY19leHByOgotICAgIGNhbGNfZnVuY190ZXJtIG1heWJlX3NwYWNlIHsKLSAgICAg
ICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nVmFsdWVMaXN0KCk7Ci0gICAgICAgICQkLT5h
ZGRWYWx1ZShwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlKCQxKSk7Ci0gICAgfQotICAgIHwgY2Fs
Y19mdW5jX2V4cHIgY2FsY19mdW5jX29wZXJhdG9yIGNhbGNfZnVuY190ZXJtIHsKLSAgICAgICAg
aWYgKCQxICYmICQyKSB7Ci0gICAgICAgICAgICAkJCA9ICQxOwotICAgICAgICAgICAgQ1NTUGFy
c2VyVmFsdWUgdjsKLSAgICAgICAgICAgIHYuaWQgPSAwOwotICAgICAgICAgICAgdi51bml0ID0g
Q1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOwotICAgICAgICAgICAgdi5pVmFsdWUgPSAkMjsKLSAg
ICAgICAgICAgICQkLT5hZGRWYWx1ZSh2KTsKLSAgICAgICAgICAgICQkLT5hZGRWYWx1ZShwYXJz
ZXItPnNpbmtGbG9hdGluZ1ZhbHVlKCQzKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
JCQgPSAwOwotCi0gICAgfQotICAgIHwgY2FsY19mdW5jX2V4cHIgY2FsY19mdW5jX29wZXJhdG9y
IGNhbGNfZnVuY19wYXJlbl9leHByIHsKLSAgICAgICAgaWYgKCQxICYmICQyICYmICQzKSB7Ci0g
ICAgICAgICAgICAkJCA9ICQxOwotICAgICAgICAgICAgQ1NTUGFyc2VyVmFsdWUgdjsKLSAgICAg
ICAgICAgIHYuaWQgPSAwOwotICAgICAgICAgICAgdi51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9w
ZXJhdG9yOwotICAgICAgICAgICAgdi5pVmFsdWUgPSAkMjsKLSAgICAgICAgICAgICQkLT5hZGRW
YWx1ZSh2KTsKLSAgICAgICAgICAgICQkLT5leHRlbmQoKigkMykpOwotICAgICAgICB9IGVsc2Ug
Ci0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgIHwgY2FsY19mdW5jX3BhcmVuX2V4cHIK
LSAgICB8IGNhbGNfZnVuY19leHByIGVycm9yIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAg
OwotCi1jYWxjX2Z1bmNfZXhwcl9saXN0OgotICAgIGNhbGNfZnVuY19leHByICB7Ci0gICAgICAg
ICQkID0gJDE7Ci0gICAgfSAgICAKLSAgICB8IGNhbGNfZnVuY19leHByX2xpc3QgJywnIG1heWJl
X3NwYWNlIGNhbGNfZnVuY19leHByIHsKLSAgICAgICAgaWYgKCQxICYmICQ0KSB7Ci0gICAgICAg
ICAgICAkJCA9ICQxOwotICAgICAgICAgICAgQ1NTUGFyc2VyVmFsdWUgdjsKLSAgICAgICAgICAg
IHYuaWQgPSAwOwotICAgICAgICAgICAgdi51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9y
OwotICAgICAgICAgICAgdi5pVmFsdWUgPSAnLCc7Ci0gICAgICAgICAgICAkJC0+YWRkVmFsdWUo
dik7Ci0gICAgICAgICAgICAkJC0+ZXh0ZW5kKCooJDQpKTsKLSAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgIAotCi1jYWxjX2Z1bmN0aW9uOgotICAgIENBTENG
VU5DVElPTiBtYXliZV9zcGFjZSBjYWxjX2Z1bmNfZXhwciAnKScgbWF5YmVfc3BhY2UgewotICAg
ICAgICBDU1NQYXJzZXJGdW5jdGlvbiogZiA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdGdW5jdGlv
bigpOwotICAgICAgICBmLT5uYW1lID0gJDE7Ci0gICAgICAgIGYtPmFyZ3MgPSBwYXJzZXItPnNp
bmtGbG9hdGluZ1ZhbHVlTGlzdCgkMyk7Ci0gICAgICAgICQkLmlkID0gMDsKLSAgICAgICAgJCQu
dW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKLSAgICAgICAgJCQuZnVuY3Rpb24gPSBm
OwotICAgIH0KLSAgICB8IENBTENGVU5DVElPTiBtYXliZV9zcGFjZSBlcnJvciB7Ci0gICAgICAg
IFlZRVJST1I7Ci0gICAgfQotICAgIDsKLQotCi1taW5fb3JfbWF4OgotICAgIE1JTkZVTkNUSU9O
IHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICB9Ci0gICAgfCBNQVhGVU5DVElPTiB7Ci0gICAgICAg
ICQkID0gJDE7Ci0gICAgfQotICAgIDsKLQotbWluX29yX21heF9mdW5jdGlvbjoKLSAgICBtaW5f
b3JfbWF4IG1heWJlX3NwYWNlIGNhbGNfZnVuY19leHByX2xpc3QgJyknIG1heWJlX3NwYWNlIHsK
LSAgICAgICAgQ1NTUGFyc2VyRnVuY3Rpb24qIGYgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVu
Y3Rpb24oKTsKLSAgICAgICAgZi0+bmFtZSA9ICQxOwotICAgICAgICBmLT5hcmdzID0gcGFyc2Vy
LT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDMpOwotICAgICAgICAkJC5pZCA9IDA7Ci0gICAgICAg
ICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb247Ci0gICAgICAgICQkLmZ1bmN0aW9u
ID0gZjsKLSAgICB9IAotICAgIHwgbWluX29yX21heCBtYXliZV9zcGFjZSBlcnJvciB7Ci0gICAg
ICAgIFlZRVJST1I7Ci0gICAgfQotICAgIDsKLQotLyogZXJyb3IgaGFuZGxpbmcgcnVsZXMgKi8K
LQotc2F2ZV9ibG9jazoKLSAgICBjbG9zaW5nX2JyYWNlIHsKLSAgICAgICAgJCQgPSAwOwotICAg
IH0KLSAgfCBlcnJvciBjbG9zaW5nX2JyYWNlIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAg
ICA7Ci0KLWludmFsaWRfYXQ6Ci0gICAgQVRLRVlXT1JEIGVycm9yIGludmFsaWRfYmxvY2sgewot
ICAgICAgICAkJCA9IDA7Ci0gICAgfQotICB8IEFUS0VZV09SRCBlcnJvciAnOycgewotICAgICAg
ICAkJCA9IDA7Ci0gICAgfQotICAgIDsKLQotaW52YWxpZF9ydWxlOgotICAgIGVycm9yIGludmFs
aWRfYmxvY2sgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotCi0vKgotICBTZWVtcyBsaWtlIHRo
ZSB0d28gcnVsZXMgYmVsb3cgYXJlIHRyeWluZyB0b28gbXVjaCBhbmQgdmlvbGF0aW5nCi0gIGh0
dHA6Ly93d3cuaGl4aWUuY2gvdGVzdHMvZXZpbC9taXhlZC9jc3NlcnJvcmhhbmRsaW5nLmh0bWwK
LQotICB8IGVycm9yICc7JyB7Ci0gICAgICAgICQkID0gMDsKLSAgICB9Ci0gIHwgZXJyb3IgJ30n
IHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSovCi0gICAgOwotCi1pbnZhbGlkX2Jsb2NrOgot
ICAgICd7JyBlcnJvciBpbnZhbGlkX2Jsb2NrX2xpc3QgZXJyb3IgY2xvc2luZ19icmFjZSB7Ci0g
ICAgICAgIHBhcnNlci0+aW52YWxpZEJsb2NrSGl0KCk7Ci0gICAgfQotICB8ICd7JyBlcnJvciBj
bG9zaW5nX2JyYWNlIHsKLSAgICAgICAgcGFyc2VyLT5pbnZhbGlkQmxvY2tIaXQoKTsKLSAgICB9
Ci0gICAgOwotCi1pbnZhbGlkX2Jsb2NrX2xpc3Q6Ci0gICAgaW52YWxpZF9ibG9jawotICB8IGlu
dmFsaWRfYmxvY2tfbGlzdCBlcnJvciBpbnZhbGlkX2Jsb2NrCi07Ci0KLSUlCi0KLSNpZiBZWURF
QlVHID4gMAotc3RhdGljIHZvaWQgcHJpbnRfdG9rZW5fdmFsdWUoRklMRSAqIHl5b3V0cHV0LCBp
bnQgeXl0eXBlLCBZWVNUWVBFIGNvbnN0ICZ5eXZhbHVlKQotewotICAgIHN3aXRjaCAoeXl0eXBl
KSB7Ci0gICAgY2FzZSBJREVOVDoKLSAgICBjYXNlIFNUUklORzoKLSAgICBjYXNlIE5USDoKLSAg
ICBjYXNlIEhFWDoKLSAgICBjYXNlIElEU0VMOgotICAgIGNhc2UgRElNRU46Ci0gICAgY2FzZSBJ
TlZBTElERElNRU46Ci0gICAgY2FzZSBVUkk6Ci0gICAgY2FzZSBGVU5DVElPTjoKLSAgICBjYXNl
IEFOWUZVTkNUSU9OOgotICAgIGNhc2UgTk9URlVOQ1RJT046Ci0gICAgY2FzZSBDQUxDRlVOQ1RJ
T046Ci0gICAgY2FzZSBNSU5GVU5DVElPTjoKLSAgICBjYXNlIE1BWEZVTkNUSU9OOgotICAgIGNh
c2UgVkFSX0RFRklOSVRJT046Ci0gICAgY2FzZSBVTklDT0RFUkFOR0U6Ci0gICAgICAgIFlZRlBS
SU5URih5eW91dHB1dCwgIiVzIiwgU3RyaW5nKHl5dmFsdWUuc3RyaW5nKS51dGY4KCkuZGF0YSgp
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQot
fQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55Lmlu
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTJkYmYy
ZjQ4MjY1ZjJmNWI2NzJmNDJhOTkxMDM4MTdjYWRiN2YzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgpAQCAtMCwwICsxLDE2OTcgQEAKKy8qCisg
KiAgQ29weXJpZ2h0IChDKSAyMDAyLTIwMDMgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAq
ICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNiBB
bGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4
IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5v
dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EK
KyAqCisgKi8KKworJXB1cmVfcGFyc2VyCisKKyVwYXJzZS1wYXJhbSB7IENTU1BhcnNlciogcGFy
c2VyIH0KKyVsZXgtcGFyYW0geyBDU1NQYXJzZXIqIHBhcnNlciB9CisKKyV1bmlvbiB7CisgICAg
Ym9vbCBib29sZWFuOworICAgIGNoYXIgY2hhcmFjdGVyOworICAgIGludCBpbnRlZ2VyOworICAg
IGRvdWJsZSBudW1iZXI7CisgICAgQ1NTUGFyc2VyU3RyaW5nIHN0cmluZzsKKworICAgIFN0eWxl
UnVsZUJhc2UqIHJ1bGU7CisgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiA+KiBydWxl
TGlzdDsKKyAgICBDU1NQYXJzZXJTZWxlY3Rvciogc2VsZWN0b3I7CisgICAgQ1NTU2VsZWN0b3JW
ZWN0b3IqIHNlbGVjdG9yTGlzdDsKKyAgICBDU1NTZWxlY3Rvcjo6TWFyZ2luQm94VHlwZSBtYXJn
aW5Cb3g7CisgICAgQ1NTU2VsZWN0b3I6OlJlbGF0aW9uIHJlbGF0aW9uOworICAgIE1lZGlhUXVl
cnlTZXQqIG1lZGlhTGlzdDsKKyAgICBNZWRpYVF1ZXJ5KiBtZWRpYVF1ZXJ5OworICAgIE1lZGlh
UXVlcnk6OlJlc3RyaWN0b3IgbWVkaWFRdWVyeVJlc3RyaWN0b3I7CisgICAgTWVkaWFRdWVyeUV4
cCogbWVkaWFRdWVyeUV4cDsKKyAgICBDU1NQYXJzZXJWYWx1ZSB2YWx1ZTsKKyAgICBDU1NQYXJz
ZXJWYWx1ZUxpc3QqIHZhbHVlTGlzdDsKKyAgICBWZWN0b3I8T3duUHRyPE1lZGlhUXVlcnlFeHA+
ID4qIG1lZGlhUXVlcnlFeHBMaXN0OworICAgIFN0eWxlS2V5ZnJhbWUqIGtleWZyYW1lOworICAg
IFZlY3RvcjxSZWZQdHI8U3R5bGVLZXlmcmFtZT4gPioga2V5ZnJhbWVSdWxlTGlzdDsKKyAgICBm
bG9hdCB2YWw7CisgICAgQ1NTUHJvcGVydHlJRCBpZDsKK30KKworJXsKKworc3RhdGljIGlubGlu
ZSBpbnQgY3NzeXllcnJvcih2b2lkKiwgY29uc3QgY2hhciopCit7CisgICAgcmV0dXJuIDE7Cit9
CisKKyV9CisKKyVleHBlY3QgNjMKKworJW5vbmFzc29jIExPV0VTVF9QUkVDCisKKyVsZWZ0IFVO
SU1QT1JUQU5UX1RPSworCisldG9rZW4gV0hJVEVTUEFDRSBTR01MX0NECisldG9rZW4gVE9LRU5f
RU9GIDAKKworJXRva2VuIElOQ0xVREVTCisldG9rZW4gREFTSE1BVENICisldG9rZW4gQkVHSU5T
V0lUSAorJXRva2VuIEVORFNXSVRICisldG9rZW4gQ09OVEFJTlMKKworJXRva2VuIDxzdHJpbmc+
IFNUUklORworJXJpZ2h0IDxzdHJpbmc+IElERU5UCisldG9rZW4gPHN0cmluZz4gTlRICisKKyVu
b25hc3NvYyA8c3RyaW5nPiBIRVgKKyVub25hc3NvYyA8c3RyaW5nPiBJRFNFTAorJW5vbmFzc29j
ICc6JworJW5vbmFzc29jICcuJworJW5vbmFzc29jICdbJworJW5vbmFzc29jIDxzdHJpbmc+ICcq
JworJW5vbmFzc29jIGVycm9yCislbGVmdCAnfCcKKworJXRva2VuIElNUE9SVF9TWU0KKyV0b2tl
biBQQUdFX1NZTQorJXRva2VuIE1FRElBX1NZTQorJXRva2VuIEZPTlRfRkFDRV9TWU0KKyV0b2tl
biBDSEFSU0VUX1NZTQorJXRva2VuIE5BTUVTUEFDRV9TWU0KKyV0b2tlbiBWQVJGVU5DVElPTgor
JXRva2VuIFdFQktJVF9SVUxFX1NZTQorJXRva2VuIFdFQktJVF9ERUNMU19TWU0KKyV0b2tlbiBX
RUJLSVRfS0VZRlJBTUVfUlVMRV9TWU0KKyV0b2tlbiBXRUJLSVRfS0VZRlJBTUVTX1NZTQorJXRv
a2VuIFdFQktJVF9WQUxVRV9TWU0KKyV0b2tlbiBXRUJLSVRfTUVESUFRVUVSWV9TWU0KKyV0b2tl
biBXRUJLSVRfU0VMRUNUT1JfU1lNCisldG9rZW4gV0VCS0lUX1JFR0lPTl9SVUxFX1NZTQorJXRv
a2VuIDxtYXJnaW5Cb3g+IFRPUExFRlRDT1JORVJfU1lNCisldG9rZW4gPG1hcmdpbkJveD4gVE9Q
TEVGVF9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBUT1BDRU5URVJfU1lNCisldG9rZW4gPG1hcmdp
bkJveD4gVE9QUklHSFRfU1lNCisldG9rZW4gPG1hcmdpbkJveD4gVE9QUklHSFRDT1JORVJfU1lN
CisldG9rZW4gPG1hcmdpbkJveD4gQk9UVE9NTEVGVENPUk5FUl9TWU0KKyV0b2tlbiA8bWFyZ2lu
Qm94PiBCT1RUT01MRUZUX1NZTQorJXRva2VuIDxtYXJnaW5Cb3g+IEJPVFRPTUNFTlRFUl9TWU0K
KyV0b2tlbiA8bWFyZ2luQm94PiBCT1RUT01SSUdIVF9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBC
T1RUT01SSUdIVENPUk5FUl9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBMRUZUVE9QX1NZTQorJXRv
a2VuIDxtYXJnaW5Cb3g+IExFRlRNSURETEVfU1lNCisldG9rZW4gPG1hcmdpbkJveD4gTEVGVEJP
VFRPTV9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBSSUdIVFRPUF9TWU0KKyV0b2tlbiA8bWFyZ2lu
Qm94PiBSSUdIVE1JRERMRV9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBSSUdIVEJPVFRPTV9TWU0K
KworJXRva2VuIEFUS0VZV09SRAorCisldG9rZW4gSU1QT1JUQU5UX1NZTQorJXRva2VuIE1FRElB
X09OTFkKKyV0b2tlbiBNRURJQV9OT1QKKyV0b2tlbiBNRURJQV9BTkQKKworJXRva2VuIDxudW1i
ZXI+IFJFTVMKKyV0b2tlbiA8bnVtYmVyPiBRRU1TCisldG9rZW4gPG51bWJlcj4gRU1TCisldG9r
ZW4gPG51bWJlcj4gRVhTCisldG9rZW4gPG51bWJlcj4gUFhTCisldG9rZW4gPG51bWJlcj4gQ01T
CisldG9rZW4gPG51bWJlcj4gTU1TCisldG9rZW4gPG51bWJlcj4gSU5TCisldG9rZW4gPG51bWJl
cj4gUFRTCisldG9rZW4gPG51bWJlcj4gUENTCisldG9rZW4gPG51bWJlcj4gREVHUworJXRva2Vu
IDxudW1iZXI+IFJBRFMKKyV0b2tlbiA8bnVtYmVyPiBHUkFEUworJXRva2VuIDxudW1iZXI+IFRV
Uk5TCisldG9rZW4gPG51bWJlcj4gTVNFQ1MKKyV0b2tlbiA8bnVtYmVyPiBTRUNTCisldG9rZW4g
PG51bWJlcj4gSEVSVFoKKyV0b2tlbiA8bnVtYmVyPiBLSEVSVFoKKyV0b2tlbiA8c3RyaW5nPiBE
SU1FTgorJXRva2VuIDxzdHJpbmc+IElOVkFMSURESU1FTgorJXRva2VuIDxudW1iZXI+IFBFUkNF
TlRBR0UKKyV0b2tlbiA8bnVtYmVyPiBGTE9BVFRPS0VOCisldG9rZW4gPG51bWJlcj4gSU5URUdF
UgorJXRva2VuIDxudW1iZXI+IFZXCisldG9rZW4gPG51bWJlcj4gVkgKKyV0b2tlbiA8bnVtYmVy
PiBWTUlOCisldG9rZW4gPG51bWJlcj4gRFBQWAorJXRva2VuIDxudW1iZXI+IERQSQorJXRva2Vu
IDxudW1iZXI+IERQQ00KKworJXRva2VuIDxzdHJpbmc+IFVSSQorJXRva2VuIDxzdHJpbmc+IEZV
TkNUSU9OCisldG9rZW4gPHN0cmluZz4gQU5ZRlVOQ1RJT04KKyV0b2tlbiA8c3RyaW5nPiBOT1RG
VU5DVElPTgorJXRva2VuIDxzdHJpbmc+IENBTENGVU5DVElPTgorJXRva2VuIDxzdHJpbmc+IE1J
TkZVTkNUSU9OCisldG9rZW4gPHN0cmluZz4gTUFYRlVOQ1RJT04KKyV0b2tlbiA8c3RyaW5nPiBW
QVJfREVGSU5JVElPTgorCisldG9rZW4gPHN0cmluZz4gVU5JQ09ERVJBTkdFCisKKyV0eXBlIDxy
ZWxhdGlvbj4gY29tYmluYXRvcgorCisldHlwZSA8cnVsZT4gY2hhcnNldAorJXR5cGUgPHJ1bGU+
IGlnbm9yZWRfY2hhcnNldAorJXR5cGUgPHJ1bGU+IHJ1bGVzZXQKKyV0eXBlIDxydWxlPiBtZWRp
YQorJXR5cGUgPHJ1bGU+IGltcG9ydAorJXR5cGUgPHJ1bGU+IG5hbWVzcGFjZQorJXR5cGUgPHJ1
bGU+IHBhZ2UKKyV0eXBlIDxydWxlPiBtYXJnaW5fYm94CisldHlwZSA8cnVsZT4gZm9udF9mYWNl
CisldHlwZSA8cnVsZT4ga2V5ZnJhbWVzCisldHlwZSA8cnVsZT4gaW52YWxpZF9ydWxlCisldHlw
ZSA8cnVsZT4gc2F2ZV9ibG9jaworJXR5cGUgPHJ1bGU+IGludmFsaWRfYXQKKyV0eXBlIDxydWxl
PiBydWxlCisldHlwZSA8cnVsZT4gdmFsaWRfcnVsZQorJXR5cGUgPHJ1bGVMaXN0PiBibG9ja19y
dWxlX2xpc3QgCisldHlwZSA8cnVsZT4gYmxvY2tfcnVsZQorJXR5cGUgPHJ1bGU+IGJsb2NrX3Zh
bGlkX3J1bGUKKyV0eXBlIDxydWxlPiByZWdpb24KKworJXR5cGUgPHN0cmluZz4gbWF5YmVfbnNf
cHJlZml4CisKKyV0eXBlIDxzdHJpbmc+IG5hbWVzcGFjZV9zZWxlY3RvcgorCisldHlwZSA8c3Ry
aW5nPiBzdHJpbmdfb3JfdXJpCisldHlwZSA8c3RyaW5nPiBpZGVudF9vcl9zdHJpbmcKKyV0eXBl
IDxzdHJpbmc+IG1lZGl1bQorJXR5cGUgPG1hcmdpbkJveD4gbWFyZ2luX3N5bQorCisldHlwZSA8
c3RyaW5nPiBtZWRpYV9mZWF0dXJlCisldHlwZSA8bWVkaWFMaXN0PiBtZWRpYV9saXN0CisldHlw
ZSA8bWVkaWFMaXN0PiBtYXliZV9tZWRpYV9saXN0CisldHlwZSA8bWVkaWFRdWVyeT4gbWVkaWFf
cXVlcnkKKyV0eXBlIDxtZWRpYVF1ZXJ5UmVzdHJpY3Rvcj4gbWF5YmVfbWVkaWFfcmVzdHJpY3Rv
cgorJXR5cGUgPHZhbHVlTGlzdD4gbWF5YmVfbWVkaWFfdmFsdWUKKyV0eXBlIDxtZWRpYVF1ZXJ5
RXhwPiBtZWRpYV9xdWVyeV9leHAKKyV0eXBlIDxtZWRpYVF1ZXJ5RXhwTGlzdD4gbWVkaWFfcXVl
cnlfZXhwX2xpc3QKKyV0eXBlIDxtZWRpYVF1ZXJ5RXhwTGlzdD4gbWF5YmVfYW5kX21lZGlhX3F1
ZXJ5X2V4cF9saXN0CisKKyV0eXBlIDxzdHJpbmc+IGtleWZyYW1lX25hbWUKKyV0eXBlIDxrZXlm
cmFtZT4ga2V5ZnJhbWVfcnVsZQorJXR5cGUgPGtleWZyYW1lUnVsZUxpc3Q+IGtleWZyYW1lc19y
dWxlCisldHlwZSA8dmFsdWVMaXN0PiBrZXlfbGlzdAorJXR5cGUgPHZhbHVlPiBrZXkKKworJXR5
cGUgPGlkPiBwcm9wZXJ0eQorCisldHlwZSA8c2VsZWN0b3I+IHNwZWNpZmllcgorJXR5cGUgPHNl
bGVjdG9yPiBzcGVjaWZpZXJfbGlzdAorJXR5cGUgPHNlbGVjdG9yPiBzaW1wbGVfc2VsZWN0b3IK
KyV0eXBlIDxzZWxlY3Rvcj4gc2VsZWN0b3IKKyV0eXBlIDxzZWxlY3Rvckxpc3Q+IHNlbGVjdG9y
X2xpc3QKKyV0eXBlIDxzZWxlY3Rvckxpc3Q+IHNpbXBsZV9zZWxlY3Rvcl9saXN0CisldHlwZSA8
c2VsZWN0b3JMaXN0PiByZWdpb25fc2VsZWN0b3IKKyV0eXBlIDxzZWxlY3Rvcj4gc2VsZWN0b3Jf
d2l0aF90cmFpbGluZ193aGl0ZXNwYWNlCisldHlwZSA8c2VsZWN0b3I+IGNsYXNzCisldHlwZSA8
c2VsZWN0b3I+IGF0dHJpYgorJXR5cGUgPHNlbGVjdG9yPiBwc2V1ZG8KKyV0eXBlIDxzZWxlY3Rv
cj4gcHNldWRvX3BhZ2UKKyV0eXBlIDxzZWxlY3Rvcj4gcGFnZV9zZWxlY3RvcgorCisldHlwZSA8
Ym9vbGVhbj4gZGVjbGFyYXRpb25fbGlzdAorJXR5cGUgPGJvb2xlYW4+IGRlY2xfbGlzdAorJXR5
cGUgPGJvb2xlYW4+IGRlY2xhcmF0aW9uCisldHlwZSA8Ym9vbGVhbj4gZGVjbGFyYXRpb25zX2Fu
ZF9tYXJnaW5zCisKKyV0eXBlIDxib29sZWFuPiBwcmlvCisKKyV0eXBlIDxpbnRlZ2VyPiBtYXRj
aAorJXR5cGUgPGludGVnZXI+IHVuYXJ5X29wZXJhdG9yCisldHlwZSA8aW50ZWdlcj4gbWF5YmVf
dW5hcnlfb3BlcmF0b3IKKyV0eXBlIDxjaGFyYWN0ZXI+IG9wZXJhdG9yCisKKyV0eXBlIDx2YWx1
ZUxpc3Q+IGV4cHIKKyV0eXBlIDx2YWx1ZT4gdGVybQorJXR5cGUgPHZhbHVlPiB1bmFyeV90ZXJt
CisldHlwZSA8dmFsdWU+IGZ1bmN0aW9uCisldHlwZSA8dmFsdWU+IGNhbGNfZnVuY190ZXJtCisl
dHlwZSA8Y2hhcmFjdGVyPiBjYWxjX2Z1bmNfb3BlcmF0b3IKKyV0eXBlIDx2YWx1ZUxpc3Q+IGNh
bGNfZnVuY19leHByCisldHlwZSA8dmFsdWVMaXN0PiBjYWxjX2Z1bmNfZXhwcl9saXN0CisldHlw
ZSA8dmFsdWVMaXN0PiBjYWxjX2Z1bmNfcGFyZW5fZXhwcgorJXR5cGUgPHZhbHVlPiBjYWxjX2Z1
bmN0aW9uCisldHlwZSA8c3RyaW5nPiBtaW5fb3JfbWF4CisldHlwZSA8dmFsdWU+IG1pbl9vcl9t
YXhfZnVuY3Rpb24KKworJXR5cGUgPHN0cmluZz4gZWxlbWVudF9uYW1lCisldHlwZSA8c3RyaW5n
PiBhdHRyX25hbWUKKworJSUKKworc3R5bGVzaGVldDoKKyAgICBtYXliZV9zcGFjZSBtYXliZV9j
aGFyc2V0IG1heWJlX3NnbWwgcnVsZV9saXN0CisgIHwgd2Via2l0X3J1bGUgbWF5YmVfc3BhY2UK
KyAgfCB3ZWJraXRfZGVjbHMgbWF5YmVfc3BhY2UKKyAgfCB3ZWJraXRfdmFsdWUgbWF5YmVfc3Bh
Y2UKKyAgfCB3ZWJraXRfbWVkaWFxdWVyeSBtYXliZV9zcGFjZQorICB8IHdlYmtpdF9zZWxlY3Rv
ciBtYXliZV9zcGFjZQorICB8IHdlYmtpdF9rZXlmcmFtZV9ydWxlIG1heWJlX3NwYWNlCisgIDsK
Kword2Via2l0X3J1bGU6CisgICAgV0VCS0lUX1JVTEVfU1lNICd7JyBtYXliZV9zcGFjZSB2YWxp
ZF9ydWxlIG1heWJlX3NwYWNlICd9JyB7CisgICAgICAgIHBhcnNlci0+bV9ydWxlID0gJDQ7Cisg
ICAgfQorOworCit3ZWJraXRfa2V5ZnJhbWVfcnVsZToKKyAgICBXRUJLSVRfS0VZRlJBTUVfUlVM
RV9TWU0gJ3snIG1heWJlX3NwYWNlIGtleWZyYW1lX3J1bGUgbWF5YmVfc3BhY2UgJ30nIHsKKyAg
ICAgICAgcGFyc2VyLT5tX2tleWZyYW1lID0gJDQ7CisgICAgfQorOworCit3ZWJraXRfZGVjbHM6
CisgICAgV0VCS0lUX0RFQ0xTX1NZTSAneycgbWF5YmVfc3BhY2VfYmVmb3JlX2RlY2xhcmF0aW9u
IGRlY2xhcmF0aW9uX2xpc3QgJ30nIHsKKyAgICAgICAgLyogY2FuIGJlIGVtcHR5ICovCisgICAg
fQorOworCit3ZWJraXRfdmFsdWU6CisgICAgV0VCS0lUX1ZBTFVFX1NZTSAneycgbWF5YmVfc3Bh
Y2UgZXhwciAnfScgeworICAgICAgICBpZiAoJDQpIHsKKyAgICAgICAgICAgIHBhcnNlci0+bV92
YWx1ZUxpc3QgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCk7CisgICAgICAgICAg
ICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHBhcnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVzLT5z
aXplKCk7CisgICAgICAgICAgICBpZiAoIXBhcnNlci0+cGFyc2VWYWx1ZShwYXJzZXItPm1faWQs
IHBhcnNlci0+bV9pbXBvcnRhbnQpKQorICAgICAgICAgICAgICAgIHBhcnNlci0+cm9sbGJhY2tM
YXN0UHJvcGVydGllcyhwYXJzZXItPm1fcGFyc2VkUHJvcGVydGllcy0+c2l6ZSgpIC0gb2xkUGFy
c2VkUHJvcGVydGllcyk7CisgICAgICAgICAgICBwYXJzZXItPm1fdmFsdWVMaXN0ID0gbnVsbHB0
cjsKKyAgICAgICAgfQorICAgIH0KKzsKKword2Via2l0X21lZGlhcXVlcnk6CisgICAgIFdFQktJ
VF9NRURJQVFVRVJZX1NZTSBXSElURVNQQUNFIG1heWJlX3NwYWNlIG1lZGlhX3F1ZXJ5ICd9JyB7
CisgICAgICAgICBwYXJzZXItPm1fbWVkaWFRdWVyeSA9IHBhcnNlci0+c2lua0Zsb2F0aW5nTWVk
aWFRdWVyeSgkNCk7CisgICAgIH0KKzsKKword2Via2l0X3NlbGVjdG9yOgorICAgIFdFQktJVF9T
RUxFQ1RPUl9TWU0gJ3snIG1heWJlX3NwYWNlIHNlbGVjdG9yX2xpc3QgJ30nIHsKKyAgICAgICAg
aWYgKCQ0KSB7CisgICAgICAgICAgICBpZiAocGFyc2VyLT5tX3NlbGVjdG9yTGlzdEZvclBhcnNl
U2VsZWN0b3IpCisgICAgICAgICAgICAgICAgcGFyc2VyLT5tX3NlbGVjdG9yTGlzdEZvclBhcnNl
U2VsZWN0b3ItPmFkb3B0U2VsZWN0b3JWZWN0b3IoKiQ0KTsKKyAgICAgICAgfQorICAgIH0KKzsK
KworbWF5YmVfc3BhY2U6CisgICAgLyogZW1wdHkgKi8gJXByZWMgVU5JTVBPUlRBTlRfVE9LCisg
IHwgbWF5YmVfc3BhY2UgV0hJVEVTUEFDRQorICA7CisKK21heWJlX3NnbWw6CisgICAgLyogZW1w
dHkgKi8KKyAgfCBtYXliZV9zZ21sIFNHTUxfQ0QKKyAgfCBtYXliZV9zZ21sIFdISVRFU1BBQ0UK
KyAgOworCittYXliZV9jaGFyc2V0OgorICAgLyogZW1wdHkgKi8KKyAgfCBjaGFyc2V0IHsKKyAg
fQorICA7CisKK2Nsb3NpbmdfYnJhY2U6CisgICAgJ30nCisgIHwgJXByZWMgTE9XRVNUX1BSRUMg
VE9LRU5fRU9GCisgIDsKKworY2hhcnNldDoKKyAgQ0hBUlNFVF9TWU0gbWF5YmVfc3BhY2UgU1RS
SU5HIG1heWJlX3NwYWNlICc7JyB7CisgICAgIGlmIChwYXJzZXItPm1fc3R5bGVTaGVldCkKKyAg
ICAgICAgIHBhcnNlci0+bV9zdHlsZVNoZWV0LT5wYXJzZXJTZXRFbmNvZGluZ0Zyb21DaGFyc2V0
UnVsZSgkMyk7CisgICAgIGlmIChwYXJzZXItPmlzRXh0cmFjdGluZ1NvdXJjZURhdGEoKSAmJiBw
YXJzZXItPm1fY3VycmVudFJ1bGVEYXRhU3RhY2stPmlzRW1wdHkoKSAmJiBwYXJzZXItPm1fcnVs
ZVNvdXJjZURhdGFSZXN1bHQpCisgICAgICAgICBwYXJzZXItPmFkZE5ld1J1bGVUb1NvdXJjZVRy
ZWUoQ1NTUnVsZVNvdXJjZURhdGE6OmNyZWF0ZVVua25vd24oKSk7CisgICAgICQkID0gMDsKKyAg
fQorICB8IENIQVJTRVRfU1lNIGVycm9yIGludmFsaWRfYmxvY2sgeworICB9CisgIHwgQ0hBUlNF
VF9TWU0gZXJyb3IgJzsnIHsKKyAgfQorOworCitpZ25vcmVkX2NoYXJzZXQ6CisgICAgQ0hBUlNF
VF9TWU0gbWF5YmVfc3BhY2UgU1RSSU5HIG1heWJlX3NwYWNlICc7JyB7CisgICAgICAgIC8vIEln
bm9yZSBhbnkgQGNoYXJzZXQgcnVsZSBub3QgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3R5bGUg
c2hlZXQuCisgICAgICAgICQkID0gMDsKKyAgICB9CisgICAgfCBDSEFSU0VUX1NZTSBtYXliZV9z
cGFjZSAnOycgeworICAgICAgICAkJCA9IDA7CisgICAgfQorOworCitydWxlX2xpc3Q6CisgICAv
KiBlbXB0eSAqLworIHwgcnVsZV9saXN0IHJ1bGUgbWF5YmVfc2dtbCB7CisgICAgIGlmICgkMiAm
JiBwYXJzZXItPm1fc3R5bGVTaGVldCkKKyAgICAgICAgIHBhcnNlci0+bV9zdHlsZVNoZWV0LT5w
YXJzZXJBcHBlbmRSdWxlKCQyKTsKKyB9CisgOworCit2YWxpZF9ydWxlOgorICAgIHJ1bGVzZXQK
KyAgfCBtZWRpYQorICB8IHBhZ2UKKyAgfCBmb250X2ZhY2UKKyAgfCBrZXlmcmFtZXMKKyAgfCBu
YW1lc3BhY2UKKyAgfCBpbXBvcnQKKyAgfCByZWdpb24KKyAgOworCitydWxlOgorICAgIHZhbGlk
X3J1bGUgeworICAgICAgICBwYXJzZXItPm1faGFkU3ludGFjdGljYWxseVZhbGlkQ1NTUnVsZSA9
IHRydWU7CisgICAgfQorICB8IGlnbm9yZWRfY2hhcnNldAorICB8IGludmFsaWRfcnVsZQorICB8
IGludmFsaWRfYXQKKyAgOworCitibG9ja19ydWxlX2xpc3Q6IAorICAgIC8qIGVtcHR5ICovIHsg
JCQgPSAwOyB9CisgIHwgYmxvY2tfcnVsZV9saXN0IGJsb2NrX3J1bGUgbWF5YmVfc2dtbCB7Cisg
ICAgICAkJCA9ICQxOworICAgICAgaWYgKCQyKSB7CisgICAgICAgICAgaWYgKCEkJCkKKyAgICAg
ICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZVJ1bGVMaXN0KCk7CisgICAgICAgICAgJCQtPmFw
cGVuZCgkMik7CisgICAgICB9CisgIH0KKyAgOworCitibG9ja192YWxpZF9ydWxlOgorICAgIHJ1
bGVzZXQKKyAgfCBwYWdlCisgIHwgZm9udF9mYWNlCisgIHwga2V5ZnJhbWVzCisgIDsKKworYmxv
Y2tfcnVsZToKKyAgICBibG9ja192YWxpZF9ydWxlCisgIHwgaW52YWxpZF9ydWxlCisgIHwgaW52
YWxpZF9hdAorICB8IG5hbWVzcGFjZQorICB8IGltcG9ydAorICB8IG1lZGlhCisgIDsKKworYXRf
aW1wb3J0X2hlYWRlcl9lbmRfbWF5YmVfc3BhY2U6CisgICAgbWF5YmVfc3BhY2UgeworICAgICAg
ICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyRW5kKCk7CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVC
b2R5U3RhcnQoKTsKKyAgICB9CisgICAgOworCitiZWZvcmVfaW1wb3J0X3J1bGU6CisgICAgLyog
ZW1wdHkgKi8geworICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNv
dXJjZURhdGE6OklNUE9SVF9SVUxFKTsKKyAgICB9CisgICAgOworCitpbXBvcnQ6CisgICAgYmVm
b3JlX2ltcG9ydF9ydWxlIElNUE9SVF9TWU0gYXRfaW1wb3J0X2hlYWRlcl9lbmRfbWF5YmVfc3Bh
Y2Ugc3RyaW5nX29yX3VyaSBtYXliZV9zcGFjZSBtYXliZV9tZWRpYV9saXN0ICc7JyB7CisgICAg
ICAgICQkID0gcGFyc2VyLT5jcmVhdGVJbXBvcnRSdWxlKCQ0LCAkNik7CisgICAgfQorICB8IGJl
Zm9yZV9pbXBvcnRfcnVsZSBJTVBPUlRfU1lNIGF0X2ltcG9ydF9oZWFkZXJfZW5kX21heWJlX3Nw
YWNlIHN0cmluZ19vcl91cmkgbWF5YmVfc3BhY2UgbWF5YmVfbWVkaWFfbGlzdCBUT0tFTl9FT0Yg
eworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlSW1wb3J0UnVsZSgkNCwgJDYpOworICAgIH0K
KyAgfCBiZWZvcmVfaW1wb3J0X3J1bGUgSU1QT1JUX1NZTSBhdF9pbXBvcnRfaGVhZGVyX2VuZF9t
YXliZV9zcGFjZSBzdHJpbmdfb3JfdXJpIG1heWJlX3NwYWNlIG1heWJlX21lZGlhX2xpc3QgaW52
YWxpZF9ibG9jayB7CisgICAgICAgICQkID0gMDsKKyAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0
YSgpOworICAgIH0KKyAgfCBiZWZvcmVfaW1wb3J0X3J1bGUgSU1QT1JUX1NZTSBlcnJvciAnOycg
eworICAgICAgICAkJCA9IDA7CisgICAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKKyAgICB9
CisgIHwgYmVmb3JlX2ltcG9ydF9ydWxlIElNUE9SVF9TWU0gZXJyb3IgaW52YWxpZF9ibG9jayB7
CisgICAgICAgICQkID0gMDsKKyAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOworICAgIH0K
KyAgOworCituYW1lc3BhY2U6CitOQU1FU1BBQ0VfU1lNIG1heWJlX3NwYWNlIG1heWJlX25zX3By
ZWZpeCBzdHJpbmdfb3JfdXJpIG1heWJlX3NwYWNlICc7JyB7CisgICAgcGFyc2VyLT5hZGROYW1l
c3BhY2UoJDMsICQ0KTsKKyAgICAkJCA9IDA7Cit9Cit8IE5BTUVTUEFDRV9TWU0gbWF5YmVfc3Bh
Y2UgbWF5YmVfbnNfcHJlZml4IHN0cmluZ19vcl91cmkgbWF5YmVfc3BhY2UgaW52YWxpZF9ibG9j
ayB7CisgICAgJCQgPSAwOworfQorfCBOQU1FU1BBQ0VfU1lNIGVycm9yIGludmFsaWRfYmxvY2sg
eworICAgICQkID0gMDsKK30KK3wgTkFNRVNQQUNFX1NZTSBlcnJvciAnOycgeworICAgICQkID0g
MDsKK30KKzsKKworbWF5YmVfbnNfcHJlZml4OgorLyogZW1wdHkgKi8geyAkJC5jbGVhcigpOyB9
Cit8IElERU5UIG1heWJlX3NwYWNlIHsgJCQgPSAkMTsgfQorOworCitzdHJpbmdfb3JfdXJpOgor
U1RSSU5HCit8IFVSSQorOworCittZWRpYV9mZWF0dXJlOgorICAgIElERU5UIG1heWJlX3NwYWNl
IHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAgOworCittYXliZV9tZWRpYV92YWx1ZToK
KyAgICAvKmVtcHR5Ki8geworICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIHwgJzonIG1heWJl
X3NwYWNlIGV4cHIgbWF5YmVfc3BhY2UgeworICAgICAgICAkJCA9ICQzOworICAgIH0KKyAgICA7
CisKK21lZGlhX3F1ZXJ5X2V4cDoKKyAgICAnKCcgbWF5YmVfc3BhY2UgbWVkaWFfZmVhdHVyZSBt
YXliZV9zcGFjZSBtYXliZV9tZWRpYV92YWx1ZSAnKScgbWF5YmVfc3BhY2UgeworICAgICAgICAk
My5sb3dlcigpOworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5
RXhwKCQzLCAkNSk7CisgICAgfQorICAgIDsKKworbWVkaWFfcXVlcnlfZXhwX2xpc3Q6CisgICAg
bWVkaWFfcXVlcnlfZXhwIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nTWVk
aWFRdWVyeUV4cExpc3QoKTsKKyAgICAgICAgJCQtPmFwcGVuZChwYXJzZXItPnNpbmtGbG9hdGlu
Z01lZGlhUXVlcnlFeHAoJDEpKTsKKyAgICB9CisgICAgfCBtZWRpYV9xdWVyeV9leHBfbGlzdCBt
YXliZV9zcGFjZSBNRURJQV9BTkQgbWF5YmVfc3BhY2UgbWVkaWFfcXVlcnlfZXhwIHsKKyAgICAg
ICAgJCQgPSAkMTsKKyAgICAgICAgJCQtPmFwcGVuZChwYXJzZXItPnNpbmtGbG9hdGluZ01lZGlh
UXVlcnlFeHAoJDUpKTsKKyAgICB9CisgICAgOworCittYXliZV9hbmRfbWVkaWFfcXVlcnlfZXhw
X2xpc3Q6CisgICAgLyplbXB0eSovIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0
aW5nTWVkaWFRdWVyeUV4cExpc3QoKTsKKyAgICB9CisgICAgfCBNRURJQV9BTkQgbWF5YmVfc3Bh
Y2UgbWVkaWFfcXVlcnlfZXhwX2xpc3QgeworICAgICAgICAkJCA9ICQzOworICAgIH0KKyAgICA7
CisKK21heWJlX21lZGlhX3Jlc3RyaWN0b3I6CisgICAgLyplbXB0eSovIHsKKyAgICAgICAgJCQg
PSBNZWRpYVF1ZXJ5OjpOb25lOworICAgIH0KKyAgICB8IE1FRElBX09OTFkgeworICAgICAgICAk
JCA9IE1lZGlhUXVlcnk6Ok9ubHk7CisgICAgfQorICAgIHwgTUVESUFfTk9UIHsKKyAgICAgICAg
JCQgPSBNZWRpYVF1ZXJ5OjpOb3Q7CisgICAgfQorICAgIDsKKworbWVkaWFfcXVlcnk6CisgICAg
bWVkaWFfcXVlcnlfZXhwX2xpc3QgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRp
bmdNZWRpYVF1ZXJ5KHBhcnNlci0+c2lua0Zsb2F0aW5nTWVkaWFRdWVyeUV4cExpc3QoJDEpKTsK
KyAgICB9CisgICAgfAorICAgIG1heWJlX21lZGlhX3Jlc3RyaWN0b3IgbWF5YmVfc3BhY2UgbWVk
aXVtIG1heWJlX2FuZF9tZWRpYV9xdWVyeV9leHBfbGlzdCB7CisgICAgICAgICQzLmxvd2VyKCk7
CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ01lZGlhUXVlcnkoJDEsICQzLCBw
YXJzZXItPnNpbmtGbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KCQ0KSk7CisgICAgfQorICAgIDsK
KworbWF5YmVfbWVkaWFfbGlzdDoKKyAgICAgLyogZW1wdHkgKi8geworICAgICAgICAkJCA9IHBh
cnNlci0+Y3JlYXRlTWVkaWFRdWVyeVNldCgpOworICAgICB9CisgICAgIHwgbWVkaWFfbGlzdAor
ICAgICA7CisKK21lZGlhX2xpc3Q6CisgICAgbWVkaWFfcXVlcnkgeworICAgICAgICAkJCA9IHBh
cnNlci0+Y3JlYXRlTWVkaWFRdWVyeVNldCgpOworICAgICAgICAkJC0+YWRkTWVkaWFRdWVyeShw
YXJzZXItPnNpbmtGbG9hdGluZ01lZGlhUXVlcnkoJDEpKTsKKyAgICAgICAgcGFyc2VyLT51cGRh
dGVMYXN0TWVkaWFMaW5lKCQkKTsKKyAgICB9CisgICAgfCBtZWRpYV9saXN0ICcsJyBtYXliZV9z
cGFjZSBtZWRpYV9xdWVyeSB7CisgICAgICAgICQkID0gJDE7CisgICAgICAgIGlmICgkJCkgewor
ICAgICAgICAgICAgJCQtPmFkZE1lZGlhUXVlcnkocGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1
ZXJ5KCQ0KSk7CisgICAgICAgICAgICBwYXJzZXItPnVwZGF0ZUxhc3RNZWRpYUxpbmUoJCQpOwor
ICAgICAgICB9CisgICAgfQorICAgIHwgbWVkaWFfbGlzdCBlcnJvciB7CisgICAgICAgICQkID0g
MDsKKyAgICB9CisgICAgOworCithdF9ydWxlX2JvZHlfc3RhcnQ6CisgICAgLyogZW1wdHkgKi8g
eworICAgICAgICBwYXJzZXItPm1hcmtSdWxlQm9keVN0YXJ0KCk7CisgICAgfQorICAgIDsKKwor
YmVmb3JlX21lZGlhX3J1bGU6CisgICAgLyogZW1wdHkgKi8geworICAgICAgICBwYXJzZXItPm1h
cmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6Ok1FRElBX1JVTEUpOworICAgIH0K
KyAgICA7CisKK2F0X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9zcGFjZToKKyAgICBtYXliZV9zcGFj
ZSB7CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJFbmQoKTsKKyAgICB9CisgICAgOwor
CittZWRpYToKKyAgICBiZWZvcmVfbWVkaWFfcnVsZSBNRURJQV9TWU0gbWF5YmVfc3BhY2UgbWVk
aWFfbGlzdCBhdF9ydWxlX2hlYWRlcl9lbmQgJ3snIGF0X3J1bGVfYm9keV9zdGFydCBtYXliZV9z
cGFjZSBibG9ja19ydWxlX2xpc3Qgc2F2ZV9ibG9jayB7CisgICAgICAgICQkID0gcGFyc2VyLT5j
cmVhdGVNZWRpYVJ1bGUoJDQsICQ5KTsKKyAgICB9CisgICAgfCBiZWZvcmVfbWVkaWFfcnVsZSBN
RURJQV9TWU0gYXRfcnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlICd7JyBhdF9ydWxlX2JvZHlf
c3RhcnQgbWF5YmVfc3BhY2UgYmxvY2tfcnVsZV9saXN0IHNhdmVfYmxvY2sgeworICAgICAgICAk
JCA9IHBhcnNlci0+Y3JlYXRlTWVkaWFSdWxlKDAsICQ3KTsKKyAgICB9CisgICAgfCBiZWZvcmVf
bWVkaWFfcnVsZSBNRURJQV9TWU0gYXRfcnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlICc7JyB7
CisgICAgICAgICQkID0gMDsKKyAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOworICAgIH0K
KyAgICA7CisKK21lZGl1bToKKyAgSURFTlQgbWF5YmVfc3BhY2UgeworICAgICAgJCQgPSAkMTsK
KyAgfQorICA7CisKK2JlZm9yZV9rZXlmcmFtZXNfcnVsZToKKyAgICAvKiBlbXB0eSAqLyB7Cisg
ICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6S0VZ
RlJBTUVTX1JVTEUpOworICAgIH0KKyAgICA7CisKK2tleWZyYW1lczoKKyAgICBiZWZvcmVfa2V5
ZnJhbWVzX3J1bGUgV0VCS0lUX0tFWUZSQU1FU19TWU0gbWF5YmVfc3BhY2Uga2V5ZnJhbWVfbmFt
ZSBhdF9ydWxlX2hlYWRlcl9lbmRfbWF5YmVfc3BhY2UgJ3snIGF0X3J1bGVfYm9keV9zdGFydCBt
YXliZV9zcGFjZSBrZXlmcmFtZXNfcnVsZSBjbG9zaW5nX2JyYWNlIHsKKyAgICAgICAgJCQgPSBw
YXJzZXItPmNyZWF0ZUtleWZyYW1lc1J1bGUoJDQsIHBhcnNlci0+c2lua0Zsb2F0aW5nS2V5ZnJh
bWVWZWN0b3IoJDkpKTsKKyAgICB9CisgICAgOworICAKK2tleWZyYW1lX25hbWU6CisgICAgSURF
TlQKKyAgICB8IFNUUklORworICAgIDsKKwora2V5ZnJhbWVzX3J1bGU6CisgICAgLyogZW1wdHkg
Ki8geyAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdLZXlmcmFtZVZlY3RvcigpOyB9CisgICAg
fCBrZXlmcmFtZXNfcnVsZSBrZXlmcmFtZV9ydWxlIG1heWJlX3NwYWNlIHsKKyAgICAgICAgJCQg
PSAkMTsKKyAgICAgICAgaWYgKCQyKQorICAgICAgICAgICAgJCQtPmFwcGVuZCgkMik7CisgICAg
fQorICAgIDsKKwora2V5ZnJhbWVfcnVsZToKKyAgICBrZXlfbGlzdCBtYXliZV9zcGFjZSAneycg
bWF5YmVfc3BhY2UgZGVjbGFyYXRpb25fbGlzdCAnfScgeworICAgICAgICAkJCA9IHBhcnNlci0+
Y3JlYXRlS2V5ZnJhbWUoJDEpOworICAgIH0KKyAgICA7CisKK2tleV9saXN0OgorICAgIGtleSB7
CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1ZhbHVlTGlzdCgpOworICAgICAg
ICAkJC0+YWRkVmFsdWUocGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZSgkMSkpOworICAgIH0KKyAg
ICB8IGtleV9saXN0IG1heWJlX3NwYWNlICcsJyBtYXliZV9zcGFjZSBrZXkgeworICAgICAgICAk
JCA9ICQxOworICAgICAgICBpZiAoJCQpCisgICAgICAgICAgICAkJC0+YWRkVmFsdWUocGFyc2Vy
LT5zaW5rRmxvYXRpbmdWYWx1ZSgkNSkpOworICAgIH0KKyAgICA7CisKK2tleToKKyAgICBtYXli
ZV91bmFyeV9vcGVyYXRvciBQRVJDRU5UQUdFIHsgJCQuaWQgPSAwOyAkJC5pc0ludCA9IGZhbHNl
OyAkJC5mVmFsdWUgPSAkMSAqICQyOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVI7IH0KKyAgICB8IElERU5UIHsKKyAgICAgICAgJCQuaWQgPSAwOyAkJC5pc0ludCA9IGZh
bHNlOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7CisgICAgICAgIENT
U1BhcnNlclN0cmluZyYgc3RyID0gJDE7CisgICAgICAgIGlmIChzdHIuZXF1YWxJZ25vcmluZ0Nh
c2UoImZyb20iKSkKKyAgICAgICAgICAgICQkLmZWYWx1ZSA9IDA7CisgICAgICAgIGVsc2UgaWYg
KHN0ci5lcXVhbElnbm9yaW5nQ2FzZSgidG8iKSkKKyAgICAgICAgICAgICQkLmZWYWx1ZSA9IDEw
MDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgWVlFUlJPUjsKKyAgICB9CisgICAgOworCiti
ZWZvcmVfcGFnZV9ydWxlOgorICAgIC8qIGVtcHR5ICovIHsKKyAgICAgICAgcGFyc2VyLT5tYXJr
UnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRhOjpQQUdFX1JVTEUpOworICAgIH0KKyAg
ICA7CisKK3BhZ2U6CisgICAgYmVmb3JlX3BhZ2VfcnVsZSBQQUdFX1NZTSBtYXliZV9zcGFjZSBw
YWdlX3NlbGVjdG9yIGF0X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9zcGFjZQorICAgICd7JyBhdF9y
dWxlX2JvZHlfc3RhcnQgbWF5YmVfc3BhY2VfYmVmb3JlX2RlY2xhcmF0aW9uIGRlY2xhcmF0aW9u
c19hbmRfbWFyZ2lucyBjbG9zaW5nX2JyYWNlIHsKKyAgICAgICAgaWYgKCQ0KQorICAgICAgICAg
ICAgJCQgPSBwYXJzZXItPmNyZWF0ZVBhZ2VSdWxlKHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0
b3IoJDQpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBDbGVhciBwcm9wZXJ0aWVz
IGluIHRoZSBpbnZhbGlkIEBwYWdlIHJ1bGUuCisgICAgICAgICAgICBwYXJzZXItPmNsZWFyUHJv
cGVydGllcygpOworICAgICAgICAgICAgLy8gQWxzbyBjbGVhciBtYXJnaW4gYXQtcnVsZXMgaGVy
ZSBvbmNlIHdlIGZ1bGx5IGltcGxlbWVudCBtYXJnaW4gYXQtcnVsZXMgcGFyc2luZy4KKyAgICAg
ICAgICAgICQkID0gMDsKKyAgICAgICAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICB8IGJlZm9yZV9wYWdlX3J1bGUgUEFHRV9TWU0gZXJyb3IgaW52YWxp
ZF9ibG9jayB7CisgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7CisgICAgICAkJCA9IDA7Cisg
ICAgfQorICAgIHwgYmVmb3JlX3BhZ2VfcnVsZSBQQUdFX1NZTSBlcnJvciAnOycgeworICAgICAg
cGFyc2VyLT5wb3BSdWxlRGF0YSgpOworICAgICAgJCQgPSAwOworICAgIH0KKyAgICA7CisKK3Bh
Z2Vfc2VsZWN0b3I6CisgICAgSURFTlQgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxv
YXRpbmdTZWxlY3RvcigpOworICAgICAgICAkJC0+c2V0VGFnKFF1YWxpZmllZE5hbWUobnVsbEF0
b20sICQxLCBwYXJzZXItPm1fZGVmYXVsdE5hbWVzcGFjZSkpOworICAgICAgICAkJC0+c2V0Rm9y
UGFnZSgpOworICAgIH0KKyAgICB8IElERU5UIHBzZXVkb19wYWdlIHsKKyAgICAgICAgJCQgPSAk
MjsKKyAgICAgICAgaWYgKCQkKSB7CisgICAgICAgICAgICAkJC0+c2V0VGFnKFF1YWxpZmllZE5h
bWUobnVsbEF0b20sICQxLCBwYXJzZXItPm1fZGVmYXVsdE5hbWVzcGFjZSkpOworICAgICAgICAg
ICAgJCQtPnNldEZvclBhZ2UoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB8IHBzZXVkb19wYWdl
IHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgaWYgKCQkKQorICAgICAgICAgICAgJCQtPnNl
dEZvclBhZ2UoKTsKKyAgICB9CisgICAgfCAvKiBlbXB0eSAqLyB7CisgICAgICAgICQkID0gcGFy
c2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRGb3JQYWdlKCk7
CisgICAgfQorICAgIDsKKworZGVjbGFyYXRpb25zX2FuZF9tYXJnaW5zOgorICAgIGRlY2xhcmF0
aW9uX2xpc3QKKyAgICB8IGRlY2xhcmF0aW9uc19hbmRfbWFyZ2lucyBtYXJnaW5fYm94IG1heWJl
X3NwYWNlIGRlY2xhcmF0aW9uX2xpc3QKKyAgICA7CisKK21hcmdpbl9ib3g6CisgICAgbWFyZ2lu
X3N5bSB7CisgICAgICAgIHBhcnNlci0+c3RhcnREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3goKTsK
KyAgICB9IG1heWJlX3NwYWNlICd7JyBtYXliZV9zcGFjZSBkZWNsYXJhdGlvbl9saXN0IGNsb3Np
bmdfYnJhY2UgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlTWFyZ2luQXRSdWxlKCQxKTsK
KyAgICB9CisgICAgOworCittYXJnaW5fc3ltIDoKKyAgICBUT1BMRUZUQ09STkVSX1NZTSB7Cisg
ICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OlRvcExlZnRDb3JuZXJNYXJnaW5Cb3g7CisgICAgfQor
ICAgIHwgVE9QTEVGVF9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpUb3BMZWZ0TWFy
Z2luQm94OworICAgIH0KKyAgICB8IFRPUENFTlRFUl9TWU0geworICAgICAgICAkJCA9IENTU1Nl
bGVjdG9yOjpUb3BDZW50ZXJNYXJnaW5Cb3g7CisgICAgfQorICAgIHwgVE9QUklHSFRfU1lNIHsK
KyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6VG9wUmlnaHRNYXJnaW5Cb3g7CisgICAgfQorICAg
IHwgVE9QUklHSFRDT1JORVJfU1lNIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6VG9wUmln
aHRDb3JuZXJNYXJnaW5Cb3g7CisgICAgfQorICAgIHwgQk9UVE9NTEVGVENPUk5FUl9TWU0gewor
ICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpCb3R0b21MZWZ0Q29ybmVyTWFyZ2luQm94OworICAg
IH0KKyAgICB8IEJPVFRPTUxFRlRfU1lNIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6Qm90
dG9tTGVmdE1hcmdpbkJveDsKKyAgICB9CisgICAgfCBCT1RUT01DRU5URVJfU1lNIHsKKyAgICAg
ICAgJCQgPSBDU1NTZWxlY3Rvcjo6Qm90dG9tQ2VudGVyTWFyZ2luQm94OworICAgIH0KKyAgICB8
IEJPVFRPTVJJR0hUX1NZTSB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkJvdHRvbVJpZ2h0
TWFyZ2luQm94OworICAgIH0KKyAgICB8IEJPVFRPTVJJR0hUQ09STkVSX1NZTSB7CisgICAgICAg
ICQkID0gQ1NTU2VsZWN0b3I6OkJvdHRvbVJpZ2h0Q29ybmVyTWFyZ2luQm94OworICAgIH0KKyAg
ICB8IExFRlRUT1BfU1lNIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6TGVmdFRvcE1hcmdp
bkJveDsKKyAgICB9CisgICAgfCBMRUZUTUlERExFX1NZTSB7CisgICAgICAgICQkID0gQ1NTU2Vs
ZWN0b3I6OkxlZnRNaWRkbGVNYXJnaW5Cb3g7CisgICAgfQorICAgIHwgTEVGVEJPVFRPTV9TWU0g
eworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpMZWZ0Qm90dG9tTWFyZ2luQm94OworICAgIH0K
KyAgICB8IFJJR0hUVE9QX1NZTSB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OlJpZ2h0VG9w
TWFyZ2luQm94OworICAgIH0KKyAgICB8IFJJR0hUTUlERExFX1NZTSB7CisgICAgICAgICQkID0g
Q1NTU2VsZWN0b3I6OlJpZ2h0TWlkZGxlTWFyZ2luQm94OworICAgIH0KKyAgICB8IFJJR0hUQk9U
VE9NX1NZTSB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OlJpZ2h0Qm90dG9tTWFyZ2luQm94
OworICAgIH0KKyAgICA7CisKK2JlZm9yZV9mb250X2ZhY2VfcnVsZToKKyAgICAvKiBlbXB0eSAq
LyB7CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0
YTo6Rk9OVF9GQUNFX1JVTEUpOworICAgIH0KKyAgICA7CisKK2ZvbnRfZmFjZToKKyAgICBiZWZv
cmVfZm9udF9mYWNlX3J1bGUgRk9OVF9GQUNFX1NZTSBhdF9ydWxlX2hlYWRlcl9lbmRfbWF5YmVf
c3BhY2UKKyAgICAneycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1heWJlX3NwYWNlX2JlZm9yZV9kZWNs
YXJhdGlvbiBkZWNsYXJhdGlvbl9saXN0IGNsb3NpbmdfYnJhY2UgeworICAgICAgICAkJCA9IHBh
cnNlci0+Y3JlYXRlRm9udEZhY2VSdWxlKCk7CisgICAgfQorICAgIHwgYmVmb3JlX2ZvbnRfZmFj
ZV9ydWxlIEZPTlRfRkFDRV9TWU0gZXJyb3IgaW52YWxpZF9ibG9jayB7CisgICAgICAkJCA9IDA7
CisgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7CisgICAgfQorICAgIHwgYmVmb3JlX2ZvbnRf
ZmFjZV9ydWxlIEZPTlRfRkFDRV9TWU0gZXJyb3IgJzsnIHsKKyAgICAgICQkID0gMDsKKyAgICAg
IHBhcnNlci0+cG9wUnVsZURhdGEoKTsKKyAgICB9Cis7CisKK3JlZ2lvbl9zZWxlY3RvcjoKKyAg
ICBzZWxlY3Rvcl9saXN0IHsKKyAgICAgICAgaWYgKCQxKSB7CisgICAgICAgICAgICBwYXJzZXIt
PnNldFJldXNhYmxlUmVnaW9uU2VsZWN0b3JWZWN0b3IoJDEpOworICAgICAgICAgICAgJCQgPSBw
YXJzZXItPnJldXNhYmxlUmVnaW9uU2VsZWN0b3JWZWN0b3IoKTsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlCisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQorOworCitiZWZvcmVfcmVnaW9uX3J1
bGU6CisgICAgLyogZW1wdHkgKi8geworICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3Rh
cnQoQ1NTUnVsZVNvdXJjZURhdGE6OlJFR0lPTl9SVUxFKTsKKyAgICB9CisgICAgOworCityZWdp
b246CisgICAgYmVmb3JlX3JlZ2lvbl9ydWxlIFdFQktJVF9SRUdJT05fUlVMRV9TWU0gV0hJVEVT
UEFDRSByZWdpb25fc2VsZWN0b3IgYXRfcnVsZV9oZWFkZXJfZW5kICd7JyBhdF9ydWxlX2JvZHlf
c3RhcnQgbWF5YmVfc3BhY2UgYmxvY2tfcnVsZV9saXN0IHNhdmVfYmxvY2sgeworICAgICAgICBp
ZiAoJDQpCisgICAgICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlUmVnaW9uUnVsZSgkNCwgJDkp
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICQkID0gMDsKKyAgICAgICAgICAgIHBhcnNl
ci0+cG9wUnVsZURhdGEoKTsKKyAgICAgICAgfQorICAgIH0KKzsKKworY29tYmluYXRvcjoKKyAg
ICAnKycgbWF5YmVfc3BhY2UgeyAkJCA9IENTU1NlbGVjdG9yOjpEaXJlY3RBZGphY2VudDsgfQor
ICB8ICd+JyBtYXliZV9zcGFjZSB7ICQkID0gQ1NTU2VsZWN0b3I6OkluZGlyZWN0QWRqYWNlbnQ7
IH0KKyAgfCAnPicgbWF5YmVfc3BhY2UgeyAkJCA9IENTU1NlbGVjdG9yOjpDaGlsZDsgfQorICA7
CisKK21heWJlX3VuYXJ5X29wZXJhdG9yOgorICAgIHVuYXJ5X29wZXJhdG9yIHsgJCQgPSAkMTsg
fQorICAgIHwgeyAkJCA9IDE7IH0KKyAgICA7CisKK3VuYXJ5X29wZXJhdG9yOgorICAgICctJyB7
ICQkID0gLTE7IH0KKyAgfCAnKycgeyAkJCA9IDE7IH0KKyAgOworCittYXliZV9zcGFjZV9iZWZv
cmVfZGVjbGFyYXRpb246CisgICAgbWF5YmVfc3BhY2UgeworICAgICAgICBwYXJzZXItPm1hcmtQ
cm9wZXJ0eVN0YXJ0KCk7CisgICAgfQorICA7CisKK2JlZm9yZV9zZWxlY3Rvcl9saXN0OgorICAg
IC8qIGVtcHR5ICovIHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1
bGVTb3VyY2VEYXRhOjpTVFlMRV9SVUxFKTsKKyAgICB9CisgIDsKKworYXRfcnVsZV9oZWFkZXJf
ZW5kOgorICAgIC8qIGVtcHR5ICovIHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlckVu
ZCgpOworICAgIH0KKyAgOworCitydWxlc2V0OgorICAgIGJlZm9yZV9zZWxlY3Rvcl9saXN0IHNl
bGVjdG9yX2xpc3QgYXRfcnVsZV9oZWFkZXJfZW5kICd7JyBhdF9ydWxlX2JvZHlfc3RhcnQgbWF5
YmVfc3BhY2VfYmVmb3JlX2RlY2xhcmF0aW9uIGRlY2xhcmF0aW9uX2xpc3QgY2xvc2luZ19icmFj
ZSB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVTdHlsZVJ1bGUoJDIpOworICAgIH0KKyAg
OworCitzZWxlY3Rvcl9saXN0OgorICAgIHNlbGVjdG9yICVwcmVjIFVOSU1QT1JUQU5UX1RPSyB7
CisgICAgICAgIGlmICgkMSkgeworICAgICAgICAgICAgJCQgPSBwYXJzZXItPnNlbGVjdG9yVmVj
dG9yKCk7CisgICAgICAgICAgICAkJC0+c2hyaW5rKDApOworICAgICAgICAgICAgJCQtPmFwcGVu
ZChwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQxKSk7CisgICAgICAgICAgICBwYXJzZXIt
PnVwZGF0ZUxhc3RTZWxlY3RvckxpbmVBbmRQb3NpdGlvbigpOworICAgICAgICB9CisgICAgfQor
ICAgIHwgc2VsZWN0b3JfbGlzdCAnLCcgbWF5YmVfc3BhY2Ugc2VsZWN0b3IgJXByZWMgVU5JTVBP
UlRBTlRfVE9LIHsKKyAgICAgICAgaWYgKCQxICYmICQ0KSB7CisgICAgICAgICAgICAkJCA9ICQx
OworICAgICAgICAgICAgJCQtPmFwcGVuZChwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQ0
KSk7CisgICAgICAgICAgICBwYXJzZXItPnVwZGF0ZUxhc3RTZWxlY3RvckxpbmVBbmRQb3NpdGlv
bigpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICQkID0gMDsKKyAgICB9CisgIHwgc2Vs
ZWN0b3JfbGlzdCBlcnJvciB7CisgICAgICAgICQkID0gMDsKKyAgICB9CisgICA7CisKK3NlbGVj
dG9yX3dpdGhfdHJhaWxpbmdfd2hpdGVzcGFjZToKKyAgICBzZWxlY3RvciBXSElURVNQQUNFIHsK
KyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAgOworCitzZWxlY3RvcjoKKyAgICBzaW1wbGVf
c2VsZWN0b3IgeworICAgICAgICAkJCA9ICQxOworICAgIH0KKyAgICB8IHNlbGVjdG9yX3dpdGhf
dHJhaWxpbmdfd2hpdGVzcGFjZQorICAgIHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAg
fCBzZWxlY3Rvcl93aXRoX3RyYWlsaW5nX3doaXRlc3BhY2Ugc2ltcGxlX3NlbGVjdG9yCisgICAg
eworICAgICAgICAkJCA9ICQyOworICAgICAgICBpZiAoISQxKQorICAgICAgICAgICAgJCQgPSAw
OworICAgICAgICBlbHNlIGlmICgkJCkgeworICAgICAgICAgICAgQ1NTUGFyc2VyU2VsZWN0b3Iq
IGVuZCA9ICQkOworICAgICAgICAgICAgd2hpbGUgKGVuZC0+dGFnSGlzdG9yeSgpKQorICAgICAg
ICAgICAgICAgIGVuZCA9IGVuZC0+dGFnSGlzdG9yeSgpOworICAgICAgICAgICAgZW5kLT5zZXRS
ZWxhdGlvbihDU1NTZWxlY3Rvcjo6RGVzY2VuZGFudCk7CisgICAgICAgICAgICBlbmQtPnNldFRh
Z0hpc3RvcnkocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMSkpOworICAgICAgICB9Cisg
ICAgfQorICAgIHwgc2VsZWN0b3IgY29tYmluYXRvciBzaW1wbGVfc2VsZWN0b3IgeworICAgICAg
ICAkJCA9ICQzOworICAgICAgICBpZiAoISQxKQorICAgICAgICAgICAgJCQgPSAwOworICAgICAg
ICBlbHNlIGlmICgkJCkgeworICAgICAgICAgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIGVuZCA9ICQk
OworICAgICAgICAgICAgd2hpbGUgKGVuZC0+dGFnSGlzdG9yeSgpKQorICAgICAgICAgICAgICAg
IGVuZCA9IGVuZC0+dGFnSGlzdG9yeSgpOworICAgICAgICAgICAgZW5kLT5zZXRSZWxhdGlvbigk
Mik7CisgICAgICAgICAgICBlbmQtPnNldFRhZ0hpc3RvcnkocGFyc2VyLT5zaW5rRmxvYXRpbmdT
ZWxlY3RvcigkMSkpOworICAgICAgICB9CisgICAgfQorICAgIHwgc2VsZWN0b3IgZXJyb3Igewor
ICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIDsKKworbmFtZXNwYWNlX3NlbGVjdG9yOgorICAg
IC8qIGVtcHR5ICovICd8JyB7ICQkLmNsZWFyKCk7IH0KKyAgICB8ICcqJyAnfCcgeyBzdGF0aWMg
TENoYXIgc3RhciA9ICcqJzsgJCQuaW5pdCgmc3RhciwgMSk7IH0KKyAgICB8IElERU5UICd8JyB7
ICQkID0gJDE7IH0KKzsKKyAgICAKK3NpbXBsZV9zZWxlY3RvcjoKKyAgICBlbGVtZW50X25hbWUg
eworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAg
ICAkJC0+c2V0VGFnKFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQxLCBwYXJzZXItPm1fZGVmYXVs
dE5hbWVzcGFjZSkpOworICAgIH0KKyAgICB8IGVsZW1lbnRfbmFtZSBzcGVjaWZpZXJfbGlzdCB7
CisgICAgICAgICQkID0gJDI7CisgICAgICAgIGlmICgkJCkKKyAgICAgICAgICAgIHBhcnNlci0+
dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShudWxsQXRvbSwgJDEsICQkKTsKKyAgICB9
CisgICAgfCBzcGVjaWZpZXJfbGlzdCB7CisgICAgICAgICQkID0gJDE7CisgICAgICAgIGlmICgk
JCkKKyAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShu
dWxsQXRvbSwgc3RhckF0b20sICQkKTsKKyAgICB9CisgICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3Ig
ZWxlbWVudF9uYW1lIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0
b3IoKTsKKyAgICAgICAgJCQtPnNldFRhZyhwYXJzZXItPmRldGVybWluZU5hbWVJbk5hbWVzcGFj
ZSgkMSwgJDIpKTsKKyAgICB9CisgICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3IgZWxlbWVudF9uYW1l
IHNwZWNpZmllcl9saXN0IHsKKyAgICAgICAgJCQgPSAkMzsKKyAgICAgICAgaWYgKCQkKQorICAg
ICAgICAgICAgcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKCQxLCAkMiwg
JCQpOworICAgIH0KKyAgICB8IG5hbWVzcGFjZV9zZWxlY3RvciBzcGVjaWZpZXJfbGlzdCB7Cisg
ICAgICAgICQkID0gJDI7CisgICAgICAgIGlmICgkJCkKKyAgICAgICAgICAgIHBhcnNlci0+dXBk
YXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZSgkMSwgc3RhckF0b20sICQkKTsKKyAgICB9Cisg
IDsKKworc2ltcGxlX3NlbGVjdG9yX2xpc3Q6CisgICAgc2ltcGxlX3NlbGVjdG9yICVwcmVjIFVO
SU1QT1JUQU5UX1RPSyB7CisgICAgICAgIGlmICgkMSkgeworICAgICAgICAgICAgJCQgPSBwYXJz
ZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3JWZWN0b3IoKTsKKyAgICAgICAgICAgICQkLT5hcHBl
bmQocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMSkpOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgICQkID0gMDsKKyAgICB9CisgICAgfCBzaW1wbGVfc2VsZWN0b3JfbGlzdCBtYXli
ZV9zcGFjZSAnLCcgbWF5YmVfc3BhY2Ugc2ltcGxlX3NlbGVjdG9yICVwcmVjIFVOSU1QT1JUQU5U
X1RPSyB7CisgICAgICAgIGlmICgkMSAmJiAkNSkgeworICAgICAgICAgICAgJCQgPSAkMTsKKyAg
ICAgICAgICAgICQkLT5hcHBlbmQocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkNSkpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICQkID0gMDsKKyAgICB9CisgICAgfCBzaW1wbGVf
c2VsZWN0b3JfbGlzdCBlcnJvciB7CisgICAgICAgICQkID0gMDsKKyAgICB9CisgIDsKKworZWxl
bWVudF9uYW1lOgorICAgIElERU5UIHsKKyAgICAgICAgQ1NTUGFyc2VyU3RyaW5nJiBzdHIgPSAk
MTsKKyAgICAgICAgaWYgKHBhcnNlci0+bV9jb250ZXh0LmlzSFRNTERvY3VtZW50KQorICAgICAg
ICAgICAgc3RyLmxvd2VyKCk7CisgICAgICAgICQkID0gc3RyOworICAgIH0KKyAgICB8ICcqJyB7
CisgICAgICAgIHN0YXRpYyBMQ2hhciBzdGFyID0gJyonOworICAgICAgICAkJC5pbml0KCZzdGFy
LCAxKTsKKyAgICB9CisgIDsKKworc3BlY2lmaWVyX2xpc3Q6CisgICAgc3BlY2lmaWVyIHsKKyAg
ICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAgfCBzcGVjaWZpZXJfbGlzdCBzcGVjaWZpZXIgewor
ICAgICAgICBpZiAoISQyKQorICAgICAgICAgICAgJCQgPSAwOworICAgICAgICBlbHNlIGlmICgk
MSkKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzKCQxLCAkMik7Cisg
ICAgfQorICAgIHwgc3BlY2lmaWVyX2xpc3QgZXJyb3IgeworICAgICAgICAkJCA9IDA7CisgICAg
fQorOworCitzcGVjaWZpZXI6CisgICAgSURTRUwgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3Jl
YXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6
OklkKTsKKyAgICAgICAgaWYgKHBhcnNlci0+bV9jb250ZXh0Lm1vZGUgPT0gQ1NTUXVpcmtzTW9k
ZSkKKyAgICAgICAgICAgICQxLmxvd2VyKCk7CisgICAgICAgICQkLT5zZXRWYWx1ZSgkMSk7Cisg
ICAgfQorICB8IEhFWCB7CisgICAgICAgIGlmICgkMVswXSA+PSAnMCcgJiYgJDFbMF0gPD0gJzkn
KSB7CisgICAgICAgICAgICAkJCA9IDA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAk
JCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAgICAgJCQtPnNl
dE1hdGNoKENTU1NlbGVjdG9yOjpJZCk7CisgICAgICAgICAgICBpZiAocGFyc2VyLT5tX2NvbnRl
eHQubW9kZSA9PSBDU1NRdWlya3NNb2RlKQorICAgICAgICAgICAgICAgICQxLmxvd2VyKCk7Cisg
ICAgICAgICAgICAkJC0+c2V0VmFsdWUoJDEpOworICAgICAgICB9CisgICAgfQorICB8IGNsYXNz
CisgIHwgYXR0cmliCisgIHwgcHNldWRvCisgICAgOworCitjbGFzczoKKyAgICAnLicgSURFTlQg
eworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAg
ICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OkNsYXNzKTsKKyAgICAgICAgaWYgKHBhcnNlci0+
bV9jb250ZXh0Lm1vZGUgPT0gQ1NTUXVpcmtzTW9kZSkKKyAgICAgICAgICAgICQyLmxvd2VyKCk7
CisgICAgICAgICQkLT5zZXRWYWx1ZSgkMik7CisgICAgfQorICA7CisKK2F0dHJfbmFtZToKKyAg
ICBJREVOVCBtYXliZV9zcGFjZSB7CisgICAgICAgIENTU1BhcnNlclN0cmluZyYgc3RyID0gJDE7
CisgICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4dC5pc0hUTUxEb2N1bWVudCkKKyAgICAgICAg
ICAgIHN0ci5sb3dlcigpOworICAgICAgICAkJCA9IHN0cjsKKyAgICB9CisgICAgOworCithdHRy
aWI6CisgICAgJ1snIG1heWJlX3NwYWNlIGF0dHJfbmFtZSAnXScgeworICAgICAgICAkJCA9IHBh
cnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAkJC0+c2V0QXR0cmlidXRl
KFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQzLCBudWxsQXRvbSkpOworICAgICAgICAkJC0+c2V0
TWF0Y2goQ1NTU2VsZWN0b3I6OlNldCk7CisgICAgfQorICAgIHwgJ1snIG1heWJlX3NwYWNlIGF0
dHJfbmFtZSBtYXRjaCBtYXliZV9zcGFjZSBpZGVudF9vcl9zdHJpbmcgbWF5YmVfc3BhY2UgJ10n
IHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAg
ICAgJCQtPnNldEF0dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMywgbnVsbEF0b20p
KTsKKyAgICAgICAgJCQtPnNldE1hdGNoKChDU1NTZWxlY3Rvcjo6TWF0Y2gpJDQpOworICAgICAg
ICAkJC0+c2V0VmFsdWUoJDYpOworICAgIH0KKyAgICB8ICdbJyBtYXliZV9zcGFjZSBuYW1lc3Bh
Y2Vfc2VsZWN0b3IgYXR0cl9uYW1lICddJyB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVG
bG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRBdHRyaWJ1dGUocGFyc2VyLT5kZXRl
cm1pbmVOYW1lSW5OYW1lc3BhY2UoJDMsICQ0KSk7CisgICAgICAgICQkLT5zZXRNYXRjaChDU1NT
ZWxlY3Rvcjo6U2V0KTsKKyAgICB9CisgICAgfCAnWycgbWF5YmVfc3BhY2UgbmFtZXNwYWNlX3Nl
bGVjdG9yIGF0dHJfbmFtZSBtYXRjaCBtYXliZV9zcGFjZSBpZGVudF9vcl9zdHJpbmcgbWF5YmVf
c3BhY2UgJ10nIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3Io
KTsKKyAgICAgICAgJCQtPnNldEF0dHJpYnV0ZShwYXJzZXItPmRldGVybWluZU5hbWVJbk5hbWVz
cGFjZSgkMywgJDQpKTsKKyAgICAgICAgJCQtPnNldE1hdGNoKChDU1NTZWxlY3Rvcjo6TWF0Y2gp
JDUpOworICAgICAgICAkJC0+c2V0VmFsdWUoJDcpOworICAgIH0KKyAgOworCittYXRjaDoKKyAg
ICAnPScgeworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpFeGFjdDsKKyAgICB9CisgICAgfCBJ
TkNMVURFUyB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6Okxpc3Q7CisgICAgfQorICAgIHwg
REFTSE1BVENIIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6SHlwaGVuOworICAgIH0KKyAg
ICB8IEJFR0lOU1dJVEggeworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpCZWdpbjsKKyAgICB9
CisgICAgfCBFTkRTV0lUSCB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkVuZDsKKyAgICB9
CisgICAgfCBDT05UQUlOUyB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkNvbnRhaW47Cisg
ICAgfQorICAgIDsKKworaWRlbnRfb3Jfc3RyaW5nOgorICAgIElERU5UCisgIHwgU1RSSU5HCisg
ICAgOworCitwc2V1ZG9fcGFnZToKKyAgICAnOicgSURFTlQgeworICAgICAgICAkJCA9IHBhcnNl
ci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2Vs
ZWN0b3I6OlBhZ2VQc2V1ZG9DbGFzcyk7CisgICAgICAgICQyLmxvd2VyKCk7CisgICAgICAgICQk
LT5zZXRWYWx1ZSgkMik7CisgICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAk
JC0+cHNldWRvVHlwZSgpOworICAgICAgICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRv
VW5rbm93bikKKyAgICAgICAgICAgICQkID0gMDsKKyAgICB9CisKK3BzZXVkbzoKKyAgICAnOicg
SURFTlQgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwor
ICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKKyAgICAgICAg
JDIubG93ZXIoKTsKKyAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsKKyAgICAgICAgQ1NTU2VsZWN0
b3I6OlBzZXVkb1R5cGUgdHlwZSA9ICQkLT5wc2V1ZG9UeXBlKCk7CisgICAgICAgIGlmICh0eXBl
ID09IENTU1NlbGVjdG9yOjpQc2V1ZG9Vbmtub3duKQorICAgICAgICAgICAgJCQgPSAwOworICAg
IH0KKyAgICB8ICc6JyAnOicgSURFTlQgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxv
YXRpbmdTZWxlY3RvcigpOworICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVk
b0VsZW1lbnQpOworICAgICAgICAkMy5sb3dlcigpOworICAgICAgICAkJC0+c2V0VmFsdWUoJDMp
OworICAgICAgICAvLyBGSVhNRTogVGhpcyBjYWxsIGlzIG5lZWRlZCB0byBmb3JjZSBzZWxlY3Rv
ciB0byBjb21wdXRlIHRoZSBwc2V1ZG9UeXBlIGVhcmx5IGVub3VnaC4KKyAgICAgICAgJCQtPnBz
ZXVkb1R5cGUoKTsKKyAgICB9CisgICAgLy8gdXNlIGJ5IDotd2Via2l0LWFueS4KKyAgICAvLyBG
SVhNRTogc2hvdWxkIHdlIHN1cHBvcnQgZ2VuZXJpYyBzZWxlY3RvcnMgaGVyZSBvciBqdXN0IHNp
bXBsZV9zZWxlY3RvcnM/CisgICAgLy8gVXNlIHNpbXBsZV9zZWxlY3Rvcl9saXN0IGZvciBub3cg
dG8gbWF0Y2ggLW1vei1hbnkuCisgICAgLy8gU2VlIGh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2
ZXMvUHVibGljL3d3dy1zdHlsZS8yMDEwU2VwLzA1NjYuaHRtbCBmb3Igc29tZQorICAgIC8vIHJl
bGF0ZWQgZGlzY3Vzc2lvbiB3aXRoIHJlc3BlY3QgdG8gOm5vdC4KKyAgICB8ICc6JyBBTllGVU5D
VElPTiBtYXliZV9zcGFjZSBzaW1wbGVfc2VsZWN0b3JfbGlzdCBtYXliZV9zcGFjZSAnKScgewor
ICAgICAgICBpZiAoJDQpIHsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGlu
Z1NlbGVjdG9yKCk7CisgICAgICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzKTsKKyAgICAgICAgICAgICQkLT5hZG9wdFNlbGVjdG9yVmVjdG9yKCpwYXJzZXItPnNp
bmtGbG9hdGluZ1NlbGVjdG9yVmVjdG9yKCQ0KSk7CisgICAgICAgICAgICAkMi5sb3dlcigpOwor
ICAgICAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsKKyAgICAgICAgICAgIENTU1NlbGVjdG9yOjpQ
c2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOworICAgICAgICAgICAgaWYgKHR5cGUg
IT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0FueSkKKyAgICAgICAgICAgICAgICAkJCA9IDA7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgJCQgPSAwOworICAgIH0KKyAgICAvLyB1c2VkIGJ5IDpu
dGgtKihheCtiKQorICAgIHwgJzonIEZVTkNUSU9OIG1heWJlX3NwYWNlIE5USCBtYXliZV9zcGFj
ZSAnKScgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwor
ICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKKyAgICAgICAg
JCQtPnNldEFyZ3VtZW50KCQ0KTsKKyAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsKKyAgICAgICAg
Q1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgdHlwZSA9ICQkLT5wc2V1ZG9UeXBlKCk7CisgICAgICAg
IGlmICh0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9Vbmtub3duKQorICAgICAgICAgICAgJCQg
PSAwOworICAgIH0KKyAgICAvLyB1c2VkIGJ5IDpudGgtKgorICAgIHwgJzonIEZVTkNUSU9OIG1h
eWJlX3NwYWNlIG1heWJlX3VuYXJ5X29wZXJhdG9yIElOVEVHRVIgbWF5YmVfc3BhY2UgJyknIHsK
KyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAg
JCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7CisgICAgICAgICQkLT5zZXRB
cmd1bWVudChTdHJpbmc6Om51bWJlcigkNCAqICQ1KSk7CisgICAgICAgICQkLT5zZXRWYWx1ZSgk
Mik7CisgICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlw
ZSgpOworICAgICAgICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bikKKyAg
ICAgICAgICAgICQkID0gMDsKKyAgICB9CisgICAgLy8gdXNlZCBieSA6bnRoLSoob2RkL2V2ZW4p
IGFuZCA6bGFuZworICAgIHwgJzonIEZVTkNUSU9OIG1heWJlX3NwYWNlIElERU5UIG1heWJlX3Nw
YWNlICcpJyB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7
CisgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpOworICAgICAg
ICAkJC0+c2V0QXJndW1lbnQoJDQpOworICAgICAgICAkMi5sb3dlcigpOworICAgICAgICAkJC0+
c2V0VmFsdWUoJDIpOworICAgICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSB0eXBlID0gJCQt
PnBzZXVkb1R5cGUoKTsKKyAgICAgICAgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb1Vu
a25vd24pCisgICAgICAgICAgICAkJCA9IDA7CisgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NT
U2VsZWN0b3I6OlBzZXVkb050aENoaWxkIHx8CisgICAgICAgICAgICAgICAgIHR5cGUgPT0gQ1NT
U2VsZWN0b3I6OlBzZXVkb050aE9mVHlwZSB8fAorICAgICAgICAgICAgICAgICB0eXBlID09IENT
U1NlbGVjdG9yOjpQc2V1ZG9OdGhMYXN0Q2hpbGQgfHwKKyAgICAgICAgICAgICAgICAgdHlwZSA9
PSBDU1NTZWxlY3Rvcjo6UHNldWRvTnRoTGFzdE9mVHlwZSkgeworICAgICAgICAgICAgaWYgKCFp
c1ZhbGlkTnRoVG9rZW4oJDQpKQorICAgICAgICAgICAgICAgICQkID0gMDsKKyAgICAgICAgfQor
ICAgIH0KKyAgICAvLyB1c2VkIGJ5IDpub3QKKyAgICB8ICc6JyBOT1RGVU5DVElPTiBtYXliZV9z
cGFjZSBzaW1wbGVfc2VsZWN0b3IgbWF5YmVfc3BhY2UgJyknIHsKKyAgICAgICAgaWYgKCEkNCB8
fCAhJDQtPmlzU2ltcGxlKCkpCisgICAgICAgICAgICAkJCA9IDA7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAg
ICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpOworCisgICAgICAg
ICAgICBDU1NTZWxlY3RvclZlY3RvciBzZWxlY3RvclZlY3RvcjsKKyAgICAgICAgICAgIHNlbGVj
dG9yVmVjdG9yLmFwcGVuZChwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQ0KSk7CisgICAg
ICAgICAgICAkJC0+YWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvclZlY3Rvcik7CisKKyAgICAg
ICAgICAgICQyLmxvd2VyKCk7CisgICAgICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOworICAgICAg
ICB9CisgICAgfQorICA7CisKK2RlY2xhcmF0aW9uX2xpc3Q6CisgICAgZGVjbGFyYXRpb24gewor
ICAgICAgICAkJCA9ICQxOworICAgIH0KKyAgICB8IGRlY2xfbGlzdCBkZWNsYXJhdGlvbiB7Cisg
ICAgICAgICQkID0gJDE7CisgICAgICAgIGlmICggJDIgKQorICAgICAgICAgICAgJCQgPSAkMjsK
KyAgICB9CisgICAgfCBkZWNsX2xpc3QgeworICAgICAgICAkJCA9ICQxOworICAgIH0KKyAgICB8
IGVycm9yIGludmFsaWRfYmxvY2tfbGlzdCBlcnJvciB7CisgICAgICAgICQkID0gZmFsc2U7Cisg
ICAgfQorICAgIHwgZXJyb3IgeworICAgICAgICAkJCA9IGZhbHNlOworICAgIH0KKyAgICB8IGRl
Y2xfbGlzdCBlcnJvciB7CisgICAgICAgICQkID0gJDE7CisgICAgfQorICAgIHwgZGVjbF9saXN0
IGludmFsaWRfYmxvY2tfbGlzdCB7CisgICAgICAgICQkID0gJDE7CisgICAgfQorICAgIDsKKwor
ZGVjbF9saXN0OgorICAgIGRlY2xhcmF0aW9uICc7JyBtYXliZV9zcGFjZSB7CisgICAgICAgIHBh
cnNlci0+bWFya1Byb3BlcnR5U3RhcnQoKTsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAg
fCBkZWNsYXJhdGlvbiBpbnZhbGlkX2Jsb2NrX2xpc3QgbWF5YmVfc3BhY2UgeworICAgICAgICAk
JCA9IGZhbHNlOworICAgIH0KKyAgICB8IGRlY2xhcmF0aW9uIGludmFsaWRfYmxvY2tfbGlzdCAn
OycgbWF5YmVfc3BhY2UgeworICAgICAgICAkJCA9IGZhbHNlOworICAgIH0KKyAgICB8IGVycm9y
ICc7JyBtYXliZV9zcGFjZSB7CisgICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5U3RhcnQoKTsK
KyAgICAgICAgJCQgPSBmYWxzZTsKKyAgICB9CisgICAgfCBlcnJvciBpbnZhbGlkX2Jsb2NrX2xp
c3QgZXJyb3IgJzsnIG1heWJlX3NwYWNlIHsKKyAgICAgICAgJCQgPSBmYWxzZTsKKyAgICB9Cisg
ICAgfCBkZWNsX2xpc3QgZGVjbGFyYXRpb24gJzsnIG1heWJlX3NwYWNlIHsKKyAgICAgICAgcGFy
c2VyLT5tYXJrUHJvcGVydHlTdGFydCgpOworICAgICAgICAkJCA9ICQxOworICAgICAgICBpZiAo
JDIpCisgICAgICAgICAgICAkJCA9ICQyOworICAgIH0KKyAgICB8IGRlY2xfbGlzdCBlcnJvciAn
OycgbWF5YmVfc3BhY2UgeworICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7Cisg
ICAgICAgICQkID0gJDE7CisgICAgfQorICAgIHwgZGVjbF9saXN0IGVycm9yIGludmFsaWRfYmxv
Y2tfbGlzdCBlcnJvciAnOycgbWF5YmVfc3BhY2UgeworICAgICAgICBwYXJzZXItPm1hcmtQcm9w
ZXJ0eVN0YXJ0KCk7CisgICAgICAgICQkID0gJDE7CisgICAgfQorICAgIDsKKworZGVjbGFyYXRp
b246CisgICAgVkFSX0RFRklOSVRJT04gJzonIG1heWJlX3NwYWNlIGV4cHIgcHJpbyB7CisjaWYg
RU5BQkxFX0NTU19WQVJJQUJMRVMKKyAgICAgICAgcGFyc2VyLT5zdG9yZVZhcmlhYmxlRGVjbGFy
YXRpb24oJDEsIHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQ0KSwgJDUpOworICAgICAg
ICAkJCA9IHRydWU7CisgICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5RW5kKCQ1LCB0cnVlKTsK
KyNlbHNlCisgICAgICAgICQkID0gZmFsc2U7CisjZW5kaWYKKyAgICB9CisgICAgfAorICAgIHBy
b3BlcnR5ICc6JyBtYXliZV9zcGFjZSBleHByIHByaW8geworICAgICAgICAkJCA9IGZhbHNlOwor
ICAgICAgICBib29sIGlzUHJvcGVydHlQYXJzZWQgPSBmYWxzZTsKKyAgICAgICAgaWYgKCQxICYm
ICQ0KSB7CisgICAgICAgICAgICBwYXJzZXItPm1fdmFsdWVMaXN0ID0gcGFyc2VyLT5zaW5rRmxv
YXRpbmdWYWx1ZUxpc3QoJDQpOworICAgICAgICAgICAgaW50IG9sZFBhcnNlZFByb3BlcnRpZXMg
PSBwYXJzZXItPm1fcGFyc2VkUHJvcGVydGllcy0+c2l6ZSgpOworICAgICAgICAgICAgJCQgPSBw
YXJzZXItPnBhcnNlVmFsdWUoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oJDEpLCAkNSk7Cisg
ICAgICAgICAgICBpZiAoISQkKQorICAgICAgICAgICAgICAgIHBhcnNlci0+cm9sbGJhY2tMYXN0
UHJvcGVydGllcyhwYXJzZXItPm1fcGFyc2VkUHJvcGVydGllcy0+c2l6ZSgpIC0gb2xkUGFyc2Vk
UHJvcGVydGllcyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaXNQcm9wZXJ0
eVBhcnNlZCA9IHRydWU7CisgICAgICAgICAgICBwYXJzZXItPm1fdmFsdWVMaXN0ID0gbnVsbHB0
cjsKKyAgICAgICAgfQorICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eUVuZCgkNSwgaXNQcm9w
ZXJ0eVBhcnNlZCk7CisgICAgfQorICAgIHwKKyAgICBwcm9wZXJ0eSBlcnJvciB7CisgICAgICAg
ICQkID0gZmFsc2U7CisgICAgfQorICAgIHwKKyAgICBwcm9wZXJ0eSAnOicgbWF5YmVfc3BhY2Ug
ZXJyb3IgZXhwciBwcmlvIHsKKyAgICAgICAgLyogVGhlIGRlZmF1bHQgbW92YWJsZSB0eXBlIHRl
bXBsYXRlIGhhcyBsZXR0ZXItc3BhY2luZzogLm5vbmU7ICBIYW5kbGUgdGhpcyBieSBsb29raW5n
IGZvcgorICAgICAgICBlcnJvciB0b2tlbnMgYXQgdGhlIHN0YXJ0IG9mIGFuIGV4cHIsIHJlY292
ZXIgdGhlIGV4cHIgYW5kIHRoZW4gdHJlYXQgYXMgYW4gZXJyb3IsIGNsZWFuaW5nCisgICAgICAg
IHVwIGFuZCBkZWxldGluZyB0aGUgc2hpZnRlZCBleHByLiAgKi8KKyAgICAgICAgcGFyc2VyLT5t
YXJrUHJvcGVydHlFbmQoZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgJCQgPSBmYWxzZTsKKyAgICB9
CisgICAgfAorICAgIHByb3BlcnR5ICc6JyBtYXliZV9zcGFjZSBleHByIHByaW8gZXJyb3Igewor
ICAgICAgICAvKiBXaGVuIHdlIGVuY291bnRlciBzb21ldGhpbmcgbGlrZSBwIHtjb2xvcjogcmVk
ICFpbXBvcnRhbnQgZmFpbDt9IHdlIHNob3VsZCBkcm9wIHRoZSBkZWNsYXJhdGlvbiAqLworICAg
ICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eUVuZChmYWxzZSwgZmFsc2UpOworICAgICAgICAkJCA9
IGZhbHNlOworICAgIH0KKyAgICB8CisgICAgSU1QT1JUQU5UX1NZTSBtYXliZV9zcGFjZSB7Cisg
ICAgICAgIC8qIEhhbmRsZSB0aGlzIGNhc2U6IGRpdiB7IHRleHQtYWxpZ246IGNlbnRlcjsgIWlt
cG9ydGFudCB9IEp1c3QgcmVkdWNlIGF3YXkgdGhlIHN0cmF5ICFpbXBvcnRhbnQuICovCisgICAg
ICAgICQkID0gZmFsc2U7CisgICAgfQorICAgIHwKKyAgICBwcm9wZXJ0eSAnOicgbWF5YmVfc3Bh
Y2UgeworICAgICAgICAvKiBkaXYgeyBmb250LWZhbWlseTogfSBKdXN0IHJlZHVjZSBhd2F5IHRo
aXMgcHJvcGVydHkgd2l0aCBubyB2YWx1ZS4gKi8KKyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVy
dHlFbmQoZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgJCQgPSBmYWxzZTsKKyAgICB9CisgICAgfAor
ICAgIHByb3BlcnR5ICc6JyBtYXliZV9zcGFjZSBlcnJvciB7CisgICAgICAgIC8qIGlmIHdlIGNv
bWUgYWNyb3NzIHJ1bGVzIHdpdGggaW52YWxpZCB2YWx1ZXMgbGlrZSB0aGlzIGNhc2U6IHAgeyB3
ZWlnaHQ6ICo7IH0sIGp1c3QgZGlzY2FyZCB0aGUgcnVsZSAqLworICAgICAgICBwYXJzZXItPm1h
cmtQcm9wZXJ0eUVuZChmYWxzZSwgZmFsc2UpOworICAgICAgICAkJCA9IGZhbHNlOworICAgIH0K
KyAgICB8CisgICAgcHJvcGVydHkgaW52YWxpZF9ibG9jayB7CisgICAgICAgIC8qIGlmIHdlIGNv
bWUgYWNyb3NzOiBkaXYgeyBjb2xvcns7Y29sb3I6bWFyb29ufSB9LCBpZ25vcmUgZXZlcnl0aGlu
ZyB3aXRoaW4gY3VybHkgYnJhY2tldHMgKi8KKyAgICAgICAgJCQgPSBmYWxzZTsKKyAgICB9Cisg
IDsKKworcHJvcGVydHk6CisgICAgSURFTlQgbWF5YmVfc3BhY2UgeworICAgICAgICAkJCA9IGNz
c1Byb3BlcnR5SUQoJDEpOworICAgIH0KKyAgOworCitwcmlvOgorICAgIElNUE9SVEFOVF9TWU0g
bWF5YmVfc3BhY2UgeyAkJCA9IHRydWU7IH0KKyAgICB8IC8qIGVtcHR5ICovIHsgJCQgPSBmYWxz
ZTsgfQorICA7CisKK2V4cHI6CisgICAgdGVybSB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVh
dGVGbG9hdGluZ1ZhbHVlTGlzdCgpOworICAgICAgICAkJC0+YWRkVmFsdWUocGFyc2VyLT5zaW5r
RmxvYXRpbmdWYWx1ZSgkMSkpOworICAgIH0KKyAgICB8IGV4cHIgb3BlcmF0b3IgdGVybSB7Cisg
ICAgICAgICQkID0gJDE7CisgICAgICAgIGlmICgkJCkgeworICAgICAgICAgICAgaWYgKCQyKSB7
CisgICAgICAgICAgICAgICAgQ1NTUGFyc2VyVmFsdWUgdjsKKyAgICAgICAgICAgICAgICB2Lmlk
ID0gMDsKKyAgICAgICAgICAgICAgICB2LnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3I7
CisgICAgICAgICAgICAgICAgdi5pVmFsdWUgPSAkMjsKKyAgICAgICAgICAgICAgICAkJC0+YWRk
VmFsdWUodik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAkJC0+YWRkVmFsdWUocGFyc2Vy
LT5zaW5rRmxvYXRpbmdWYWx1ZSgkMykpOworICAgICAgICB9CisgICAgfQorICAgIHwgZXhwciBp
bnZhbGlkX2Jsb2NrX2xpc3QgeworICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIHwgZXhwciBp
bnZhbGlkX2Jsb2NrX2xpc3QgZXJyb3IgeworICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIHwg
ZXhwciBlcnJvciB7CisgICAgICAgICQkID0gMDsKKyAgICB9CisgIDsKKworb3BlcmF0b3I6Cisg
ICAgJy8nIG1heWJlX3NwYWNlIHsKKyAgICAgICAgJCQgPSAnLyc7CisgICAgfQorICB8ICcsJyBt
YXliZV9zcGFjZSB7CisgICAgICAgICQkID0gJywnOworICAgIH0KKyAgfCAvKiBlbXB0eSAqLyB7
CisgICAgICAgICQkID0gMDsKKyAgfQorICA7CisKK3Rlcm06CisgIHVuYXJ5X3Rlcm0geyAkJCA9
ICQxOyB9CisgIHwgdW5hcnlfb3BlcmF0b3IgdW5hcnlfdGVybSB7ICQkID0gJDI7ICQkLmZWYWx1
ZSAqPSAkMTsgfQorICB8IFNUUklORyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5n
ID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORzsgfQorICB8IElE
RU5UIG1heWJlX3NwYWNlIHsKKyAgICAgICQkLmlkID0gY3NzVmFsdWVLZXl3b3JkSUQoJDEpOwor
ICAgICAgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQ7CisgICAgICAkJC5z
dHJpbmcgPSAkMTsKKyAgfQorICAvKiBXZSBtaWdodCBuZWVkIHRvIGFjdHVhbGx5IHBhcnNlIHRo
ZSBudW1iZXIgZnJvbSBhIGRpbWVuc2lvbiwgYnV0IHdlIGNhbid0IGp1c3QgcHV0IHNvbWV0aGlu
ZyB0aGF0IHVzZXMgJCQuc3RyaW5nIGludG8gdW5hcnlfdGVybS4gKi8KKyAgfCBESU1FTiBtYXli
ZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX0RJTUVOU0lPTjsgfQorICB8IHVuYXJ5X29wZXJhdG9yIERJTUVOIG1heWJl
X3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSAkMjsgJCQudW5pdCA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfRElNRU5TSU9OOyB9CisgIHwgVVJJIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAw
OyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJOyB9
CisgIHwgVU5JQ09ERVJBTkdFIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSAk
MTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVU5JQ09ERV9SQU5HRTsgfQorICB8
IEhFWCBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BBUlNFUl9IRVhDT0xPUjsgfQorICB8ICcjJyBtYXliZV9z
cGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gQ1NTUGFyc2VyU3RyaW5nKCk7ICQkLnVuaXQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BBUlNFUl9IRVhDT0xPUjsgfSAvKiBIYW5kbGUgZXJy
b3IgY2FzZTogImNvbG9yOiAjOyIgKi8KKyAgfCBWQVJGVU5DVElPTiBtYXliZV9zcGFjZSBJREVO
VCAnKScgbWF5YmVfc3BhY2UgeworI2lmIEVOQUJMRV9DU1NfVkFSSUFCTEVTCisgICAgICAkJC5p
ZCA9IDA7CisgICAgICAkJC5zdHJpbmcgPSAkMzsKKyAgICAgICQkLnVuaXQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1ZBUklBQkxFX05BTUU7CisjZW5kaWYKKyAgfQorICAvKiBGSVhNRTogYWNj
b3JkaW5nIHRvIHRoZSBzcGVjcyBhIGZ1bmN0aW9uIGNhbiBoYXZlIGEgdW5hcnlfb3BlcmF0b3Ig
aW4gZnJvbnQuIEkga25vdyBubyBjYXNlIHdoZXJlIHRoaXMgbWFrZXMgc2Vuc2UgKi8KKyAgfCBm
dW5jdGlvbiB7CisgICAgICAkJCA9ICQxOworICB9CisgIHwgY2FsY19mdW5jdGlvbiB7CisgICAg
ICAkJCA9ICQxOworICB9CisgIHwgbWluX29yX21heF9mdW5jdGlvbiB7CisgICAgICAkJCA9ICQx
OworICB9CisgIHwgJyUnIG1heWJlX3NwYWNlIHsgLyogSGFuZGxlIHdpZHRoOiAlOyAqLworICAg
ICAgJCQuaWQgPSAwOyAkJC51bml0ID0gMDsKKyAgfQorICA7CisKK3VuYXJ5X3Rlcm06CisgIElO
VEVHRVIgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmlzSW50ID0gdHJ1ZTsgJCQuZlZhbHVl
ID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjsgfQorICB8IEZM
T0FUVE9LRU4gbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmlzSW50ID0gZmFsc2U7ICQkLmZW
YWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7IH0KKyAg
fCBQRVJDRU5UQUdFIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQu
dW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRTsgfQorICB8IFBYUyBtYXli
ZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BYOyB9CisgIHwgQ01TIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5m
VmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ007IH0KKyAgfCBN
TVMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19NTTsgfQorICB8IElOUyBtYXliZV9zcGFjZSB7ICQkLmlkID0g
MDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lOOyB9
CisgIHwgUFRTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5p
dCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFQ7IH0KKyAgfCBQQ1MgbWF5YmVfc3BhY2UgeyAk
JC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QQzsgfQorICB8IERFR1MgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQx
OyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ERUc7IH0KKyAgfCBSQURTIG1heWJl
X3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUkFEOyB9CisgIHwgR1JBRFMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQk
LmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19HUkFEOyB9Cisg
IHwgVFVSTlMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19UVVJOOyB9CisgIHwgTVNFQ1MgbWF5YmVfc3BhY2Ug
eyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19NUzsgfQorICB8IFNFQ1MgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9
ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TOyB9CisgIHwgSEVSVFogbWF5
YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19IWjsgfQorICB8IEtIRVJUWiBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsg
JCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0tIWjsgfQor
ICB8IEVNUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUzsgfQorICB8IFFFTVMgbWF5YmVfc3BhY2UgeyAk
JC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OlFfRU1T
OyB9CisgIHwgRVhTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQu
dW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRVhTOyB9CisgIHwgUkVNUyBtYXliZV9zcGFj
ZSB7CisgICAgICAkJC5pZCA9IDA7CisgICAgICAkJC5mVmFsdWUgPSAkMTsKKyAgICAgICQkLnVu
aXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JFTVM7CisgICAgICBpZiAocGFyc2VyLT5tX3N0
eWxlU2hlZXQpCisgICAgICAgICAgcGFyc2VyLT5tX3N0eWxlU2hlZXQtPnBhcnNlclNldFVzZXNS
ZW1Vbml0cyh0cnVlKTsKKyAgfQorICB8IFZXIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5m
VmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVlc7IH0KKyAgfCBW
SCBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1ZIOyB9CisgIHwgVk1JTiBtYXliZV9zcGFjZSB7ICQkLmlkID0g
MDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZNSU47
IH0KKyAgfCBEUFBYIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQu
dW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRFBQWDsgfQorICB8IERQSSBtYXliZV9zcGFj
ZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX0RQSTsgfQorICB8IERQQ00gbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1
ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19EUENNOyB9CisgIDsKKwor
ZnVuY3Rpb246CisgICAgRlVOQ1RJT04gbWF5YmVfc3BhY2UgZXhwciAnKScgbWF5YmVfc3BhY2Ug
eworICAgICAgICBDU1NQYXJzZXJGdW5jdGlvbiogZiA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdG
dW5jdGlvbigpOworICAgICAgICBmLT5uYW1lID0gJDE7CisgICAgICAgIGYtPmFyZ3MgPSBwYXJz
ZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkMyk7CisgICAgICAgICQkLmlkID0gMDsKKyAgICAg
ICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKKyAgICAgICAgJCQuZnVuY3Rp
b24gPSBmOworICAgIH0gfAorICAgIEZVTkNUSU9OIG1heWJlX3NwYWNlIGV4cHIgVE9LRU5fRU9G
IHsKKyAgICAgICAgQ1NTUGFyc2VyRnVuY3Rpb24qIGYgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5n
RnVuY3Rpb24oKTsKKyAgICAgICAgZi0+bmFtZSA9ICQxOworICAgICAgICBmLT5hcmdzID0gcGFy
c2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDMpOworICAgICAgICAkJC5pZCA9IDA7CisgICAg
ICAgICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb247CisgICAgICAgICQkLmZ1bmN0
aW9uID0gZjsKKyAgICB9IHwKKyAgICBGVU5DVElPTiBtYXliZV9zcGFjZSAnKScgbWF5YmVfc3Bh
Y2UgeworICAgICAgICBDU1NQYXJzZXJGdW5jdGlvbiogZiA9IHBhcnNlci0+Y3JlYXRlRmxvYXRp
bmdGdW5jdGlvbigpOworICAgICAgICBmLT5uYW1lID0gJDE7CisgICAgICAgIENTU1BhcnNlclZh
bHVlTGlzdCogdmFsdWVMaXN0ID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1ZhbHVlTGlzdCgpOwor
ICAgICAgICBmLT5hcmdzID0gcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QodmFsdWVMaXN0
KTsKKyAgICAgICAgJCQuaWQgPSAwOworICAgICAgICAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6
OkZ1bmN0aW9uOworICAgICAgICAkJC5mdW5jdGlvbiA9IGY7CisgICAgfSB8CisgICAgRlVOQ1RJ
T04gbWF5YmVfc3BhY2UgZXJyb3IgeworICAgICAgICBDU1NQYXJzZXJGdW5jdGlvbiogZiA9IHBh
cnNlci0+Y3JlYXRlRmxvYXRpbmdGdW5jdGlvbigpOworICAgICAgICBmLT5uYW1lID0gJDE7Cisg
ICAgICAgIGYtPmFyZ3MgPSBudWxscHRyOworICAgICAgICAkJC5pZCA9IDA7CisgICAgICAgICQk
LnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb247CisgICAgICAgICQkLmZ1bmN0aW9uID0g
ZjsKKyAgfQorICA7CisgCitjYWxjX2Z1bmNfdGVybToKKyAgdW5hcnlfdGVybSB7ICQkID0gJDE7
IH0KKyAgfCBWQVJGVU5DVElPTiBtYXliZV9zcGFjZSBJREVOVCAnKScgbWF5YmVfc3BhY2Ugewor
I2lmIEVOQUJMRV9DU1NfVkFSSUFCTEVTCisgICAgICAkJC5pZCA9IDA7CisgICAgICAkJC5zdHJp
bmcgPSAkMzsKKyAgICAgICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZBUklBQkxF
X05BTUU7CisjZW5kaWYKKyAgfQorICB8IHVuYXJ5X29wZXJhdG9yIHVuYXJ5X3Rlcm0geyAkJCA9
ICQyOyAkJC5mVmFsdWUgKj0gJDE7IH0KKyAgOworCitjYWxjX2Z1bmNfb3BlcmF0b3I6CisgICAg
JysnIFdISVRFU1BBQ0UgeworICAgICAgICAkJCA9ICcrJzsKKyAgICB9CisgICAgfCAnLScgV0hJ
VEVTUEFDRSB7CisgICAgICAgICQkID0gJy0nOworICAgIH0KKyAgICB8ICcqJyBtYXliZV9zcGFj
ZSB7CisgICAgICAgICQkID0gJyonOworICAgIH0KKyAgICB8ICcvJyBtYXliZV9zcGFjZSB7Cisg
ICAgICAgICQkID0gJy8nOworICAgIH0KKyAgOworCitjYWxjX2Z1bmNfcGFyZW5fZXhwcjoKKyAg
ICAnKCcgbWF5YmVfc3BhY2UgY2FsY19mdW5jX2V4cHIgbWF5YmVfc3BhY2UgJyknIG1heWJlX3Nw
YWNlIHsKKyAgICAgICAgaWYgKCQzKSB7CisgICAgICAgICAgICAkJCA9ICQzOworICAgICAgICAg
ICAgQ1NTUGFyc2VyVmFsdWUgdjsKKyAgICAgICAgICAgIHYuaWQgPSAwOworICAgICAgICAgICAg
di51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOworICAgICAgICAgICAgdi5pVmFsdWUg
PSAnKCc7CisgICAgICAgICAgICAkJC0+aW5zZXJ0VmFsdWVBdCgwLCB2KTsKKyAgICAgICAgICAg
IHYuaVZhbHVlID0gJyknOworICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHYpOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICQkID0gMDsKKyAgICB9CisKK2NhbGNfZnVuY19leHByOgorICAg
IGNhbGNfZnVuY190ZXJtIG1heWJlX3NwYWNlIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0
ZUZsb2F0aW5nVmFsdWVMaXN0KCk7CisgICAgICAgICQkLT5hZGRWYWx1ZShwYXJzZXItPnNpbmtG
bG9hdGluZ1ZhbHVlKCQxKSk7CisgICAgfQorICAgIHwgY2FsY19mdW5jX2V4cHIgY2FsY19mdW5j
X29wZXJhdG9yIGNhbGNfZnVuY190ZXJtIHsKKyAgICAgICAgaWYgKCQxICYmICQyKSB7CisgICAg
ICAgICAgICAkJCA9ICQxOworICAgICAgICAgICAgQ1NTUGFyc2VyVmFsdWUgdjsKKyAgICAgICAg
ICAgIHYuaWQgPSAwOworICAgICAgICAgICAgdi51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJh
dG9yOworICAgICAgICAgICAgdi5pVmFsdWUgPSAkMjsKKyAgICAgICAgICAgICQkLT5hZGRWYWx1
ZSh2KTsKKyAgICAgICAgICAgICQkLT5hZGRWYWx1ZShwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVl
KCQzKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgJCQgPSAwOworCisgICAgfQorICAg
IHwgY2FsY19mdW5jX2V4cHIgY2FsY19mdW5jX29wZXJhdG9yIGNhbGNfZnVuY19wYXJlbl9leHBy
IHsKKyAgICAgICAgaWYgKCQxICYmICQyICYmICQzKSB7CisgICAgICAgICAgICAkJCA9ICQxOwor
ICAgICAgICAgICAgQ1NTUGFyc2VyVmFsdWUgdjsKKyAgICAgICAgICAgIHYuaWQgPSAwOworICAg
ICAgICAgICAgdi51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOworICAgICAgICAgICAg
di5pVmFsdWUgPSAkMjsKKyAgICAgICAgICAgICQkLT5hZGRWYWx1ZSh2KTsKKyAgICAgICAgICAg
ICQkLT5leHRlbmQoKigkMykpOworICAgICAgICB9IGVsc2UgCisgICAgICAgICAgICAkJCA9IDA7
CisgICAgfQorICAgIHwgY2FsY19mdW5jX3BhcmVuX2V4cHIKKyAgICB8IGNhbGNfZnVuY19leHBy
IGVycm9yIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKyAgOworCitjYWxjX2Z1bmNfZXhwcl9s
aXN0OgorICAgIGNhbGNfZnVuY19leHByICB7CisgICAgICAgICQkID0gJDE7CisgICAgfSAgICAK
KyAgICB8IGNhbGNfZnVuY19leHByX2xpc3QgJywnIG1heWJlX3NwYWNlIGNhbGNfZnVuY19leHBy
IHsKKyAgICAgICAgaWYgKCQxICYmICQ0KSB7CisgICAgICAgICAgICAkJCA9ICQxOworICAgICAg
ICAgICAgQ1NTUGFyc2VyVmFsdWUgdjsKKyAgICAgICAgICAgIHYuaWQgPSAwOworICAgICAgICAg
ICAgdi51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOworICAgICAgICAgICAgdi5pVmFs
dWUgPSAnLCc7CisgICAgICAgICAgICAkJC0+YWRkVmFsdWUodik7CisgICAgICAgICAgICAkJC0+
ZXh0ZW5kKCooJDQpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAkJCA9IDA7CisgICAg
fQorICAgIAorCitjYWxjX2Z1bmN0aW9uOgorICAgIENBTENGVU5DVElPTiBtYXliZV9zcGFjZSBj
YWxjX2Z1bmNfZXhwciAnKScgbWF5YmVfc3BhY2UgeworICAgICAgICBDU1NQYXJzZXJGdW5jdGlv
biogZiA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdGdW5jdGlvbigpOworICAgICAgICBmLT5uYW1l
ID0gJDE7CisgICAgICAgIGYtPmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgk
Myk7CisgICAgICAgICQkLmlkID0gMDsKKyAgICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVl
OjpGdW5jdGlvbjsKKyAgICAgICAgJCQuZnVuY3Rpb24gPSBmOworICAgIH0KKyAgICB8IENBTENG
VU5DVElPTiBtYXliZV9zcGFjZSBlcnJvciB7CisgICAgICAgIFlZRVJST1I7CisgICAgfQorICAg
IDsKKworCittaW5fb3JfbWF4OgorICAgIE1JTkZVTkNUSU9OIHsKKyAgICAgICAgJCQgPSAkMTsK
KyAgICB9CisgICAgfCBNQVhGVU5DVElPTiB7CisgICAgICAgICQkID0gJDE7CisgICAgfQorICAg
IDsKKworbWluX29yX21heF9mdW5jdGlvbjoKKyAgICBtaW5fb3JfbWF4IG1heWJlX3NwYWNlIGNh
bGNfZnVuY19leHByX2xpc3QgJyknIG1heWJlX3NwYWNlIHsKKyAgICAgICAgQ1NTUGFyc2VyRnVu
Y3Rpb24qIGYgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsKKyAgICAgICAgZi0+
bmFtZSA9ICQxOworICAgICAgICBmLT5hcmdzID0gcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxp
c3QoJDMpOworICAgICAgICAkJC5pZCA9IDA7CisgICAgICAgICQkLnVuaXQgPSBDU1NQYXJzZXJW
YWx1ZTo6RnVuY3Rpb247CisgICAgICAgICQkLmZ1bmN0aW9uID0gZjsKKyAgICB9IAorICAgIHwg
bWluX29yX21heCBtYXliZV9zcGFjZSBlcnJvciB7CisgICAgICAgIFlZRVJST1I7CisgICAgfQor
ICAgIDsKKworLyogZXJyb3IgaGFuZGxpbmcgcnVsZXMgKi8KKworc2F2ZV9ibG9jazoKKyAgICBj
bG9zaW5nX2JyYWNlIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKyAgfCBlcnJvciBjbG9zaW5n
X2JyYWNlIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKyAgICA7CisKK2ludmFsaWRfYXQ6Cisg
ICAgQVRLRVlXT1JEIGVycm9yIGludmFsaWRfYmxvY2sgeworICAgICAgICAkJCA9IDA7CisgICAg
fQorICB8IEFUS0VZV09SRCBlcnJvciAnOycgeworICAgICAgICAkJCA9IDA7CisgICAgfQorICAg
IDsKKworaW52YWxpZF9ydWxlOgorICAgIGVycm9yIGludmFsaWRfYmxvY2sgeworICAgICAgICAk
JCA9IDA7CisgICAgfQorCisvKgorICBTZWVtcyBsaWtlIHRoZSB0d28gcnVsZXMgYmVsb3cgYXJl
IHRyeWluZyB0b28gbXVjaCBhbmQgdmlvbGF0aW5nCisgIGh0dHA6Ly93d3cuaGl4aWUuY2gvdGVz
dHMvZXZpbC9taXhlZC9jc3NlcnJvcmhhbmRsaW5nLmh0bWwKKworICB8IGVycm9yICc7JyB7Cisg
ICAgICAgICQkID0gMDsKKyAgICB9CisgIHwgZXJyb3IgJ30nIHsKKyAgICAgICAgJCQgPSAwOwor
ICAgIH0KKyovCisgICAgOworCitpbnZhbGlkX2Jsb2NrOgorICAgICd7JyBlcnJvciBpbnZhbGlk
X2Jsb2NrX2xpc3QgZXJyb3IgY2xvc2luZ19icmFjZSB7CisgICAgICAgIHBhcnNlci0+aW52YWxp
ZEJsb2NrSGl0KCk7CisgICAgfQorICB8ICd7JyBlcnJvciBjbG9zaW5nX2JyYWNlIHsKKyAgICAg
ICAgcGFyc2VyLT5pbnZhbGlkQmxvY2tIaXQoKTsKKyAgICB9CisgICAgOworCitpbnZhbGlkX2Js
b2NrX2xpc3Q6CisgICAgaW52YWxpZF9ibG9jaworICB8IGludmFsaWRfYmxvY2tfbGlzdCBlcnJv
ciBpbnZhbGlkX2Jsb2NrCis7CisKKyUlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFtbWFyLnkuaW5jbHVkZXMgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55
LmluY2x1ZGVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyNjg5NzQ1MGI0MWM1ODE3MDE5M2I5YjAwOGI2NDZiNGNk
YTY2N2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55
LmluY2x1ZGVzCkBAIC0wLDAgKzEsODUgQEAKKyV7CisKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAy
MDAyLTIwMDMgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292
IChhcEBueXBvcC5jb20pCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmlj
QHdlYmtpdC5vcmc+CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog
IExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy
ZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCisjaW5jbHVkZSAiQ1NTUGFy
c2VyTW9kZS5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NT
UHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNTU1NlbGVjdG9yLmgiCisjaW5jbHVkZSAiQ1NT
U2VsZWN0b3JMaXN0LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKKyNpbmNsdWRlICJNZWRpYUxpc3QuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5RXhwLmgi
CisjaW5jbHVkZSAiU3R5bGVSdWxlLmgiCisjaW5jbHVkZSAiU3R5bGVTaGVldENvbnRlbnRzLmgi
CisjaW5jbHVkZSAiV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmgiCisjaW5jbHVkZSAiV2ViS2l0Q1NT
S2V5ZnJhbWVzUnVsZS5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8
c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKworI2RlZmluZSBZWU1BTExPQyBmYXN0TWFs
bG9jCisjZGVmaW5lIFlZRlJFRSBmYXN0RnJlZQorCisjZGVmaW5lIFlZRU5BQkxFX05MUyAwCisj
ZGVmaW5lIFlZTFRZUEVfSVNfVFJJVklBTCAxCisjZGVmaW5lIFlZTUFYREVQVEggMTAwMDAKKyNk
ZWZpbmUgWVlERUJVRyAwCisKKyNpZiBZWURFQlVHID4gMAorI2RlZmluZSBZWVBSSU5UKEZpbGUs
VHlwZSxWYWx1ZSkgcHJpbnRfdG9rZW5fdmFsdWUoRmlsZSxUeXBlLFZhbHVlKQorc3RhdGljIHZv
aWQgcHJpbnRfdG9rZW5fdmFsdWUoRklMRSAqIHl5b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNUWVBF
IGNvbnN0ICZ5eXZhbHVlKQoreworICAgIHN3aXRjaCAoeXl0eXBlKSB7CisgICAgY2FzZSBJREVO
VDoKKyAgICBjYXNlIFNUUklORzoKKyAgICBjYXNlIE5USDoKKyAgICBjYXNlIEhFWDoKKyAgICBj
YXNlIElEU0VMOgorICAgIGNhc2UgRElNRU46CisgICAgY2FzZSBJTlZBTElERElNRU46CisgICAg
Y2FzZSBVUkk6CisgICAgY2FzZSBGVU5DVElPTjoKKyAgICBjYXNlIEFOWUZVTkNUSU9OOgorICAg
IGNhc2UgTk9URlVOQ1RJT046CisgICAgY2FzZSBDQUxDRlVOQ1RJT046CisgICAgY2FzZSBNSU5G
VU5DVElPTjoKKyAgICBjYXNlIE1BWEZVTkNUSU9OOgorICAgIGNhc2UgVkFSX0RFRklOSVRJT046
CisgICAgY2FzZSBVTklDT0RFUkFOR0U6CisgICAgICAgIFlZRlBSSU5URih5eW91dHB1dCwgIiVz
IiwgU3RyaW5nKHl5dmFsdWUuc3RyaW5nKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorI2VuZGlmCisKKyV9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZWdyYW1tYXIucGwgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvbWFrZWdyYW1tYXIucGwKaW5kZXggMDZmYWFhOTNkMzI2MGFiNTMwNDE3YzQzM2Ux
NjhjMzM1YmM2N2FlZi4uMzJmNzU3ZTc3Y2ZkNTA0NDZjYmQwOTI0NjE0ZDM1NTRkMTgwZjUyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2VncmFtbWFyLnBsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9tYWtlZ3JhbW1hci5wbApAQCAtMjEsMzUgKzIxLDc5IEBACiB1c2Ugc3Ry
aWN0OwogdXNlIHdhcm5pbmdzOwogCi1teSAkZ3JhbW1hciA9ICRBUkdWWzBdOwotbXkgJGZpbGVC
YXNlID0gJEFSR1ZbMV07Cit1c2UgQ29uZmlnOwordXNlIEZpbGU6OkJhc2VuYW1lOwordXNlIEZp
bGU6OlNwZWM7Cit1c2UgR2V0b3B0OjpMb25nOwogCi1zeXN0ZW0oImJpc29uIC1kIC1wIGNzc3l5
ICIgLiAkZ3JhbW1hciAuICIgLW8gIiAuICRmaWxlQmFzZSAuICIudGFiLmMiKTsKK3JlcXVpcmUg
Q29uZmlnOwogCi1vcGVuIEhFQURFUiwgIj4iIC4gJGZpbGVCYXNlIC4gIi5oIiBvciBkaWU7Citt
eSAkZ2NjID0gIiI7CitpZiAoJEVOVntDQ30pIHsKKyAgICAkZ2NjID0gJEVOVntDQ307Cit9IGVs
c2lmICgoJENvbmZpZzo6Q29uZmlneydvc25hbWUnfSkgPX4gL3NvbGFyaXMvaSkgeworICAgICRn
Y2MgPSAiL3Vzci9zZncvYmluL2djYyI7Cit9IGVsc2UgeworICAgICRnY2MgPSAiL3Vzci9iaW4v
Z2NjIjsKK30KKworbXkgJGdyYW1tYXJGaWxlUGF0aCA9ICIiOworbXkgJG91dHB1dERpciA9ICIu
IjsKK215ICRleHRyYURlZmluZXMgPSAiIjsKK215ICRzeW1ib2xzUHJlZml4ID0gIiI7CisKK0dl
dE9wdGlvbnMoCisgICAgJ2dyYW1tYXI9cycgPT4gXCRncmFtbWFyRmlsZVBhdGgsCisgICAgJ291
dHB1dERpcj1zJyA9PiBcJG91dHB1dERpciwKKyAgICAnZXh0cmFEZWZpbmVzPXMnID0+IFwkZXh0
cmFEZWZpbmVzLAorICAgICdzeW1ib2xzUHJlZml4PXMnID0+IFwkc3ltYm9sc1ByZWZpeAorKTsK
KworZGllICJOZWVkIGEgc3ltYm9scyBwcmVmaXggdG8gZ2l2ZSB0byBiaXNvbiAoZS5nLiBjc3N5
eSwgeHBhdGh5eSkiIHVubGVzcyBsZW5ndGgoJHN5bWJvbHNQcmVmaXgpOworCitteSAoJGZpbGVu
YW1lLCAkYmFzZVBhdGgsICRzdWZmaXgpID0gZmlsZXBhcnNlKCRncmFtbWFyRmlsZVBhdGgsICgi
LnkiLCAiLnkuaW4iKSk7CisKK2lmICgkc3VmZml4IGVxICIueS5pbiIpIHsKKyAgICBteSAkZ3Jh
bW1hckZpbGVJbmNsdWRlc1BhdGggPSAiJHtiYXNlUGF0aH0ke2ZpbGVuYW1lfS55LmluY2x1ZGVz
IjsKKyAgICBteSAkZ3JhbW1hckZpbGVPdXRQYXRoID0gRmlsZTo6U3BlYy0+am9pbigkb3V0cHV0
RGlyLCAiJGZpbGVuYW1lLnkiKTsKKyAgICBteSAkZmVhdHVyZUZsYWdzID0gIi1EICIgLiBqb2lu
KCIgLUQgIiwgc3BsaXQoIiAiLCAkZXh0cmFEZWZpbmVzKSk7CisKKyAgICBzeXN0ZW0oJGdjYyAu
ICIgLUUgLVAgLXggYyAkZ3JhbW1hckZpbGVQYXRoICRmZWF0dXJlRmxhZ3MgPiAkZ3JhbW1hckZp
bGVPdXRQYXRoLnByb2Nlc3NlZCIgKTsKKworICAgIG9wZW4gR1JBTU1BUiwgIj4kZ3JhbW1hckZp
bGVPdXRQYXRoIiBvciBkaWU7CisgICAgb3BlbiBJTkNMVURFUywgIjwkZ3JhbW1hckZpbGVJbmNs
dWRlc1BhdGgiIG9yIGRpZTsKKyAgICBvcGVuIFBST0NFU1NFRCwgIjwkZ3JhbW1hckZpbGVPdXRQ
YXRoLnByb2Nlc3NlZCIgb3IgZGllOworCisgICAgd2hpbGUgKDxJTkNMVURFUz4pIHsKKyAgICAg
ICAgcHJpbnQgR1JBTU1BUjsKKyAgICB9CisgICAgd2hpbGUgKDxQUk9DRVNTRUQ+KSB7CisgICAg
ICAgIHByaW50IEdSQU1NQVI7CisgICAgfQorCisgICAgY2xvc2UgR1JBTU1BUjsKKyAgICB1bmxp
bmsoIiRncmFtbWFyRmlsZU91dFBhdGgucHJvY2Vzc2VkIik7CisgICAgJGdyYW1tYXJGaWxlUGF0
aCA9ICRncmFtbWFyRmlsZU91dFBhdGg7Cit9CisKK215ICRmaWxlQmFzZSA9IEZpbGU6OlNwZWMt
PmpvaW4oJG91dHB1dERpciwgJGZpbGVuYW1lKTsKK3N5c3RlbSgiYmlzb24gLWQgLXAgJHN5bWJv
bHNQcmVmaXggJGdyYW1tYXJGaWxlUGF0aCAtbyAkZmlsZUJhc2UuY3BwIik7CisKK29wZW4gSEVB
REVSLCAiPiRmaWxlQmFzZS5oIiBvciBkaWU7CiBwcmludCBIRUFERVIgPDwgIkVPRiI7CiAjaWZu
ZGVmIENTU0dSQU1NQVJfSAogI2RlZmluZSBDU1NHUkFNTUFSX0gKIEVPRgogCi1vcGVuIEhQUCwg
IjwiIC4gJGZpbGVCYXNlIC4gIi50YWIuaCIgb3IgZGllOworb3BlbiBIUFAsICI8JGZpbGVCYXNl
LmNwcC5oIiBvciBvcGVuIEhQUCwgIjwkZmlsZUJhc2UuaHBwIiBvciBkaWU7CiB3aGlsZSAoPEhQ
UD4pIHsKICAgICBwcmludCBIRUFERVI7CiB9CiBjbG9zZSBIUFA7CiAKIHByaW50IEhFQURFUiAi
I2VuZGlmXG4iOwotCiBjbG9zZSBIRUFERVI7CiAKLXVubGluaygkZmlsZUJhc2UgLiAiLnRhYi5o
Iik7Ci0KLW9wZW4gQ1BQLCAiPiIgLiAkZmlsZUJhc2UgLiAiLmNwcCIgb3IgZGllOwotb3BlbiBH
RU5TUkMsICI8IiAuICRmaWxlQmFzZSAuICIudGFiLmMiIG9yIGRpZTsKLXdoaWxlICg8R0VOU1JD
PikgewotICAgIHByaW50IENQUDsKLX0KLWNsb3NlIEdFTlNSQzsKLWNsb3NlIENQUDsKK3VubGlu
aygiJGZpbGVCYXNlLmNwcC5oIik7Cit1bmxpbmsoIiRmaWxlQmFzZS5ocHAiKTsKIAotdW5saW5r
KCRmaWxlQmFzZSAuICIudGFiLmMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9XZWJLaXRN
YWNyb3MuY21ha2UgYi9Tb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlCmluZGV4IGVkOGVi
NWQzMjBmMjNkZDhkZjg0YmI3NGU2ZDdlMjlmNTU5MDQ1ZWYuLmExMGNlNTVmMDYzYWY3ZDI0ZWU5
ZGNmNzgyZWI5MGVkNjg5ZDU2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9XZWJLaXRNYWNy
b3MuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL1dlYktpdE1hY3Jvcy5jbWFrZQpAQCAtMTQ4LDEx
ICsxNDgsMTIgQEAgTUFDUk8gKEdFTkVSQVRFX0hBU0hfTFVUIF9pbnB1dCBfb3V0cHV0KQogRU5E
TUFDUk8gKCkKIAogCi1NQUNSTyAoR0VORVJBVEVfR1JBTU1BUiBfcHJlZml4IF9pbnB1dCBfb3V0
cHV0X2hlYWRlciBfb3V0cHV0X3NvdXJjZSkKK01BQ1JPIChHRU5FUkFURV9HUkFNTUFSIF9wcmVm
aXggX2lucHV0IF9vdXRwdXRfaGVhZGVyIF9vdXRwdXRfc291cmNlIF9vdGhlcl9kZXBlbmRlbmNp
ZXMgX2ZlYXR1cmVzKQogICAgIEFERF9DVVNUT01fQ09NTUFORCgKICAgICAgICAgT1VUUFVUICR7
X291dHB1dF9oZWFkZXJ9ICR7X291dHB1dF9zb3VyY2V9CiAgICAgICAgIE1BSU5fREVQRU5ERU5D
WSAke19pbnB1dH0KLSAgICAgICAgQ09NTUFORCAke0JJU09OX0VYRUNVVEFCTEV9IC1wICR7X3By
ZWZpeH0gJHtfaW5wdXR9IC1vICR7X291dHB1dF9zb3VyY2V9IC0tZGVmaW5lcz0ke19vdXRwdXRf
aGVhZGVyfQorICAgICAgICBERVBFTkRTICR7X2lucHV0fSAke19vdGhlcl9kZXBlbmRlbmNpZXN9
CisgICAgICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7V0VCQ09SRV9ESVJ9L2Nzcy9t
YWtlZ3JhbW1hci5wbCAtLWdyYW1tYXIgJHtfaW5wdXR9IC0tb3V0cHV0RGlyICR7REVSSVZFRF9T
T1VSQ0VTX1dFQkNPUkVfRElSfSAtLWV4dHJhRGVmaW5lcyAiJHtfZmVhdHVyZXN9IiAtLXN5bWJv
bHNQcmVmaXggJHtfcHJlZml4fQogICAgICAgICBWRVJCQVRJTSkKIEVORE1BQ1JPICgpCiAKZGlm
ZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBiMWI3Y2VhZDhjOTgwZDFkMWRl
MDJlODQ5NTY4ZmM2MTk0MjRmZGI5Li45ZWNmZmM4MzEwNzQzNDcyNWRjMDU0ZTczM2YyMTllNWRk
MGM1MTNjIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTItMTAtMDkgIFBhYmxvIEZsb3VyZXQgIDxwYWJsb2ZAbW90b3JvbGEuY29tPgor
CisgICAgICAgIFByZS1wcm9jZXNzIENTU0dyYW1tYXIueSBiZWZvcmUgcnVubmluZyB0aHJvdWdo
IGJpc29uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTQyOTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFNvdXJjZS9jbWFrZS9XZWJLaXRNYWNyb3MuY21ha2U6CisgICAgICAgICAgICBVc2UgV2ViQ29y
ZS9jc3MvbWFrZWdyYW1tYXIucGwgdG8gZ2VuZXJhdGUgYmlzb24gZ3JhbW1hciBmaWxlcy4KKwog
MjAxMi0xMC0wOSAgU2ltb24gUGVuYSAgPHNwZW5hQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dU
S10gQWRkIHN1cHBvcnQgZm9yIHJ1bm5pbmcgSmF2YVNjcmlwdCBmcm9tIEdSZXNvdXJjZXMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167817</attachid>
            <date>2012-10-09 12:27:44 -0700</date>
            <delta_ts>2012-10-09 15:20:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94290-20121009122645.patch</filename>
            <type>text/plain</type>
            <size>119095</size>
            <attacher name="Pablo Flouret">pf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQxMjM2OTljNGMxMDg0
NDljYjVlZDM2Yjk2MWU0MjI0ZDhhZTcxMi4uMTYxZTI4YmY4MzZkZGU0NmM3MDM2MzBmYmQwYTgz
ZWQ4YjQ3ZGQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTEwLTA5ICBQYWJs
byBGbG91cmV0ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBQcmUtcHJvY2VzcyBD
U1NHcmFtbWFyLnkgYmVmb3JlIHJ1bm5pbmcgdGhyb3VnaCBiaXNvbi4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MjkwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUnVubmluZyBDU1NHcmFtbWFyLnkgdGhy
b3VnaCBhIHByZXByb2Nlc3NvciBhbGxvd3MgdGhlIHVzZSBvZiBmZWF0dXJlCisgICAgICAgIGRl
ZmluZXMgaW4gYWxsIHBsYWNlcyBvZiB0aGUgeWFjYyBmaWxlIChpLmUuIG5vdCBqdXN0IGluIEMg
YmxvY2tzKS4KKyAgICAgICAgTW9zdGx5IHVzZWZ1bCB0byBiZSBhYmxlIHRvIGtlZXAgZXZlcnkg
cGFydCBvZiBhIGZlYXR1cmUgdW5kZXIgZmVhdHVyZQorICAgICAgICBmbGFncyBmb3Igc2VsZi1k
b2N1bWVudGluZyBwdXJwb3Nlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIENTU0dyYW1tYXIu
eSBzaG91bGQgYmUgZ2VuZXJhdGVkIGNvcnJlY3RseSBhbmQgZXZlcnl0aGluZworICAgICAgICBz
aG91bGQga2VlcCB3b3JraW5nIGFzIGJlZm9yZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMucHJpOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAgICAgTW9kaWZ5IGJ1
aWxkIHN5c3RlbXMgdG8gdXNlIG1ha2VncmFtbWFyLnBsIHRvIGdlbmVyYXRlIHRoZSAueSBmaWxl
cworICAgICAgICAgICAgYW5kIHJ1biB0aG9zZSB0aHJvdWdoIGJpc29uLgorCisgICAgICAgICog
V2ViQ29yZS5neXAvV2ViQ29yZS5neXA6CisgICAgICAgICogV2ViQ29yZS5neXAvc2NyaXB0cy9h
Y3Rpb25fcHJlcHJvY2Vzc2dyYW1tYXIucHk6IEFkZGVkLgorICAgICAgICAgICAgQWRkIGEgbmV3
IGFjdGlvbiB0byBwcmVwcm9jZXNzIHRoZSBDU1NHcmFtbWFyLnkuaW4gZmlsZSBiZWZvcmUgdGhl
CisgICAgICAgICAgICBiaXNvbiBydWxlIGlzIHJ1bi4KKworICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgICAgIEFkZCB0aGUgbmV3IC55LmluIC8gLnkuaW5jbHVkZXMgZmls
ZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55LmluOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS4KKyAgICAgICAgICAgIEFsc28gbW92ZWQgdGhlIHRv
cCBkZWNsYXJhdGlvbnMgc2VjdGlvbiB0aGF0IGhhcyBpbmNsdWRlcywgZGVmaW5lcywKKyAgICAg
ICAgICAgIGV0Yy4gdG8gaXRzIG93biBmaWxlLiBUaGVzZSBzaG91bGRuJ3QgYmUgdG91Y2hlZCBi
eSB0aGUgZmlyc3QKKyAgICAgICAgICAgIHBhc3Mgb2YgdGhlIHByZXByb2Nlc3Nvci4gQW5kIGNo
YW5nZWQgdGhlIGV4aXN0aW5nIEVOQUJMRShGRUFUVVJFKQorICAgICAgICAgICAgaWZkZWZzIHRv
IEVOQUJMRV9GRUFUVVJFIHNpbmNlIHRoZSBFTkFCTEUoKSBtYWNybyBpcyBub3QgYXZhaWxhYmxl
CisgICAgICAgICAgICB5ZXQuCisgICAgICAgICogY3NzL0NTU0dyYW1tYXIueS5pbmNsdWRlczog
QWRkZWQuCisgICAgICAgICAgICBUaGUgYWZvcmVtZW50aW9uZWQgZGVjbGFyYXRpb25zIGhlYWRl
ciBzZWN0aW9uLiBBZnRlciB0aGUgLnkuaW4gZmlsZQorICAgICAgICAgICAgaXMgcHJvY2Vzc2Vk
IGl0IHdpbGwgYmUgY29uY2F0ZW5hdGVkIHdpdGggdGhpcyBvbmUgdG8gbWFrZSB0aGUKKyAgICAg
ICAgICAgIENTU0dyYW1tYXIueSBmaWxlLgorCisgICAgICAgICogY3NzL21ha2VncmFtbWFyLnBs
OgorICAgICAgICAgICAgTW9kaWZ5IHRoZSBzY3JpcHQgdG8gaGFuZGxlIC55LmluIGZpbGVzLgor
CiAyMDEyLTEwLTA5ICBQcmF2aW4gRCAgPHByYXZpbmQuMms0QGdtYWlsLmNvbT4KIAogICAgICAg
ICBtYXgtd2lkdGggcHJvcGVydHkgaXMgZG9lcyBub3Qgb3ZlcnJpZGluZyB0aGUgd2lkdGggcHJv
cGVydGllcyBmb3IgY3NzIHRhYmxlcyhkaXNwbGF5OnRhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCA4NjY0NGIxOGJmNTY4NDU1NjA1ZDJhMzBjMmQyMDc4NjlmOTYyOTYzLi4wYWE5NjliNTU1
NDk5YWZiOTY1MWE3ZjIyMDc5MjNhNDY2YWM3ZjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
Mjg1OCwxMSArMjg1OCwxMSBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtERVJJVkVE
X1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1VzZXJBZ2VudFN0eWxlU2hlZXRzRAogQUREX1NPVVJDRV9X
RUJDT1JFX0RFUklWRURfREVQRU5ERU5DSUVTKCR7V0VCQ09SRV9ESVJ9L2Nzcy9TdHlsZVJlc29s
dmVyLmNwcCBVc2VyQWdlbnRTdHlsZVNoZWV0c0RhdGEuY3BwIFVzZXJBZ2VudFN0eWxlU2hlZXRz
LmgpCiAKIAotR0VORVJBVEVfR1JBTU1BUihjc3N5eSAke1dFQkNPUkVfRElSfS9jc3MvQ1NTR3Jh
bW1hci55ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9DU1NHcmFtbWFyLmggJHtERVJJ
VkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0NTU0dyYW1tYXIuY3BwKQorR0VORVJBVEVfR1JBTU1B
Uihjc3N5eSAke1dFQkNPUkVfRElSfS9jc3MvQ1NTR3JhbW1hci55LmluICR7REVSSVZFRF9TT1VS
Q0VTX1dFQkNPUkVfRElSfS9DU1NHcmFtbWFyLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9L0NTU0dyYW1tYXIuY3BwICR7V0VCQ09SRV9ESVJ9L2Nzcy9DU1NHcmFtbWFyLnkuaW5jbHVk
ZXMgIiR7RkVBVFVSRV9ERUZJTkVTX1dJVEhfU1BBQ0VfU0VQQVJBVE9SfSIpCiBMSVNUKEFQUEVO
RCBXZWJDb3JlX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0NTU0dyYW1t
YXIuY3BwKQogCiAKLUdFTkVSQVRFX0dSQU1NQVIoeHBhdGh5eSAke1dFQkNPUkVfRElSfS94bWwv
WFBhdGhHcmFtbWFyLnkgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1hQYXRoR3JhbW1h
ci5oICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9YUGF0aEdyYW1tYXIuY3BwKQorR0VO
RVJBVEVfR1JBTU1BUih4cGF0aHl5ICR7V0VCQ09SRV9ESVJ9L3htbC9YUGF0aEdyYW1tYXIueSAk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vWFBhdGhHcmFtbWFyLmggJHtERVJJVkVEX1NP
VVJDRVNfV0VCQ09SRV9ESVJ9L1hQYXRoR3JhbW1hci5jcHAgIiIgIiIpCiBMSVNUKEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1hQYXRoR3JhbW1h
ci5jcHApCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZDY5MDg1NjRkMGQ1
ZDc5Y2ZjYjY2MGI0YmRhM2Q0YTdmYjYyY2EwMS4uMDU3ZjA4NzU3YTEzNmE0MWE5ZDVhYzA5MzRh
OGQ2OWRiNDdlNTEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC03NzksMzIg
Kzc3OSwxNCBAQCBlbmRpZgogIyAtLS0tLS0tLQogCiAjIENTUyBncmFtbWFyCi0jIE5PVEU6IE9s
ZGVyIHZlcnNpb25zIG9mIGJpc29uIGRvIG5vdCBpbmplY3QgYW4gaW5jbHVzaW9uIGd1YXJkLCBz
byB3ZSBhZGQgb25lLgotCi1DU1NHcmFtbWFyLmNwcCA6IGNzcy9DU1NHcmFtbWFyLnkKLQkkKEJJ
U09OKSAtZCAtcCBjc3N5eSAkPCAtbyAkQAotCXRvdWNoIENTU0dyYW1tYXIuY3BwLmgKLQl0b3Vj
aCBDU1NHcmFtbWFyLmhwcAotCWVjaG8gJyNpZm5kZWYgQ1NTR3JhbW1hcl9oJyA+IENTU0dyYW1t
YXIuaAotCWVjaG8gJyNkZWZpbmUgQ1NTR3JhbW1hcl9oJyA+PiBDU1NHcmFtbWFyLmgKLQljYXQg
Q1NTR3JhbW1hci5jcHAuaCBDU1NHcmFtbWFyLmhwcCA+PiBDU1NHcmFtbWFyLmgKLQllY2hvICcj
ZW5kaWYnID4+IENTU0dyYW1tYXIuaAotCXJtIC1mIENTU0dyYW1tYXIuY3BwLmggQ1NTR3JhbW1h
ci5ocHAKK0NTU0dyYW1tYXIuY3BwIDogY3NzL0NTU0dyYW1tYXIueS5pbgorCXBlcmwgJChXZWJD
b3JlKS9jc3MvbWFrZWdyYW1tYXIucGwgLS1ncmFtbWFyICQ8IC0tZXh0cmFEZWZpbmVzICIkKEZF
QVRVUkVfREVGSU5FUykiIC0tb3V0cHV0RGlyIC4gLS1zeW1ib2xzUHJlZml4IGNzc3l5CiAKICMg
LS0tLS0tLS0KIAogIyBYUGF0aCBncmFtbWFyCi0jIE5PVEU6IE9sZGVyIHZlcnNpb25zIG9mIGJp
c29uIGRvIG5vdCBpbmplY3QgYW4gaW5jbHVzaW9uIGd1YXJkLCBzbyB3ZSBhZGQgb25lLgotCiBY
UGF0aEdyYW1tYXIuY3BwIDogeG1sL1hQYXRoR3JhbW1hci55ICQoUFJPSkVDVF9GSUxFKQotCSQo
QklTT04pIC1kIC1wIHhwYXRoeXkgJDwgLW8gJEAKLQl0b3VjaCBYUGF0aEdyYW1tYXIuY3BwLmgK
LQl0b3VjaCBYUGF0aEdyYW1tYXIuaHBwCi0JZWNobyAnI2lmbmRlZiBYUGF0aEdyYW1tYXJfaCcg
PiBYUGF0aEdyYW1tYXIuaAotCWVjaG8gJyNkZWZpbmUgWFBhdGhHcmFtbWFyX2gnID4+IFhQYXRo
R3JhbW1hci5oCi0JY2F0IFhQYXRoR3JhbW1hci5jcHAuaCBYUGF0aEdyYW1tYXIuaHBwID4+IFhQ
YXRoR3JhbW1hci5oCi0JZWNobyAnI2VuZGlmJyA+PiBYUGF0aEdyYW1tYXIuaAotCXJtIC1mIFhQ
YXRoR3JhbW1hci5jcHAuaCBYUGF0aEdyYW1tYXIuaHBwCisJcGVybCAkKFdlYkNvcmUpL2Nzcy9t
YWtlZ3JhbW1hci5wbCAtLWdyYW1tYXIgJDwgLS1vdXRwdXREaXIgLiAtLXN5bWJvbHNQcmVmaXgg
eHBhdGh5eQogCiAjIC0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLnByaSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQppbmRleCA4
NGM5ZDA3NzcxZWQxYTE3NDU2NjcyZTI3MWUzMzFiY2E0ZTY4NThlLi5iNjQ0YmVjZGFhNzlmNGEw
MjY3YWI1Mjg3Y2MwM2E1MTczMDFmYjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCkBA
IC0yNCw3ICsyNCw3IEBAIFNWR19OQU1FUyA9ICQkUFdEL3N2Zy9zdmd0YWdzLmluCiAKIFhMSU5L
X05BTUVTID0gJCRQV0Qvc3ZnL3hsaW5rYXR0cnMuaW4KIAotQ1NTQklTT04gPSAkJFBXRC9jc3Mv
Q1NTR3JhbW1hci55CitDU1NCSVNPTiA9ICQkUFdEL2Nzcy9DU1NHcmFtbWFyLnkuaW4KIAogZW5h
YmxlPyhYU0xUKSB7CiAgICAgWE1MVklFV0VSX0NTUyA9ICQkUFdEL3htbC9YTUxWaWV3ZXIuY3Nz
CkBAIC04MDQsNyArODA0LDcgQEAgR0VORVJBVE9SUyArPSBJbmplY3RlZFNjcmlwdENhbnZhc01v
ZHVsZVNvdXJjZQogY3NzYmlzb24ub3V0cHV0ID0gJHtRTUFLRV9GSUxFX0JBU0V9LmNwcAogY3Nz
Ymlzb24uaW5wdXQgPSBDU1NCSVNPTgogY3NzYmlzb24uc2NyaXB0ID0gJCRQV0QvY3NzL21ha2Vn
cmFtbWFyLnBsCi1jc3NiaXNvbi5jb21tYW5kcyA9IHBlcmwgJCRjc3NiaXNvbi5zY3JpcHQgJHtR
TUFLRV9GSUxFX05BTUV9ICR7UU1BS0VfRlVOQ19GSUxFX09VVF9QQVRIfS8ke1FNQUtFX0ZJTEVf
QkFTRX0KK2Nzc2Jpc29uLmNvbW1hbmRzID0gcGVybCAkJGNzc2Jpc29uLnNjcmlwdCAtLWdyYW1t
YXIgJHtRTUFLRV9GSUxFX05BTUV9IC0tb3V0cHV0RGlyICR7UU1BS0VfRlVOQ19GSUxFX09VVF9Q
QVRIfSAtLWV4dHJhRGVmaW5lcyBcIiQke0RFRklORVN9ICQkY29uZmlnRGVmaW5lcygpXCIgLS1z
eW1ib2xzUHJlZml4IGNzc3l5CiBjc3NiaXNvbi5kZXBlbmRzID0gJHtRTUFLRV9GSUxFX05BTUV9
CiBHRU5FUkFUT1JTICs9IGNzc2Jpc29uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNWNlODU5
NWEwZjIyMTVmNzNiNjBmZmRjMTNkNWZlZjcxMTE5ODliOC4uMzA3ZWIzN2VlMWE2OWIyOTU4MGQy
YWEyYmViODUxNWU5OTMzMjAxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTIwMCwxOCArMjAw
LDEwIEBAIGZlYXR1cmVfZGVmaW5lc19vdmVycmlkZXMgKz0gRU5BQkxFX01FRElBX1NUUkVBTT0w
CiBlbmRpZiAjIEVORCBFTkFCTEVfTUVESUFfU1RSRUFNCiAKICMgWFBhdGggZ3JhbW1hcgotIyBO
T1RFOiBvbGRlciB2ZXJzaW9ucyBvZiBiaXNvbiBkbyBub3QgaW5qZWN0IGFuIGluY2x1c2lvbiBn
dWFyZCwgc28gd2UgZG8gaXQKICQoR0VOU09VUkNFU19XRUJDT1JFKS9YUGF0aEdyYW1tYXIuaDog
JChHRU5TT1VSQ0VTX1dFQkNPUkUpL1hQYXRoR3JhbW1hci5jcHAKICQoR0VOU09VUkNFU19XRUJD
T1JFKS9YUGF0aEdyYW1tYXIuY3BwOiAkKFdlYkNvcmUpL3htbC9YUGF0aEdyYW1tYXIueQogCSQo
QU1fVl9HRU4pCi0JJChBTV9WX2F0KXJtIC1mICQoR0VOU09VUkNFU19XRUJDT1JFKS9YUGF0aEdy
YW1tYXIuY3BwLmggJChHRU5TT1VSQ0VTX1dFQkNPUkUpL1hQYXRoR3JhbW1hci5ocHAKLQkkKEFN
X1ZfYXQpJChCSVNPTikgLWQgLXAgeHBhdGh5eSAkPCAtbyAkKEdFTlNPVVJDRVNfV0VCQ09SRSkv
WFBhdGhHcmFtbWFyLmNwcAotCSQoQU1fVl9hdCl0b3VjaCAkKEdFTlNPVVJDRVNfV0VCQ09SRSkv
WFBhdGhHcmFtbWFyLmNwcC5oICQoR0VOU09VUkNFU19XRUJDT1JFKS9YUGF0aEdyYW1tYXIuaHBw
Ci0JJChBTV9WX2F0KWVjaG8gJyNpZm5kZWYgWFBhdGhHcmFtbWFyX2gnID4gJChHRU5TT1VSQ0VT
X1dFQkNPUkUpL1hQYXRoR3JhbW1hci5oCi0JJChBTV9WX2F0KWVjaG8gJyNkZWZpbmUgWFBhdGhH
cmFtbWFyX2gnID4+ICQoR0VOU09VUkNFU19XRUJDT1JFKS9YUGF0aEdyYW1tYXIuaAotCSQoQU1f
Vl9hdCljYXQgJChHRU5TT1VSQ0VTX1dFQkNPUkUpL1hQYXRoR3JhbW1hci5jcHAuaCAkKEdFTlNP
VVJDRVNfV0VCQ09SRSkvWFBhdGhHcmFtbWFyLmhwcCA+PiAkKEdFTlNPVVJDRVNfV0VCQ09SRSkv
WFBhdGhHcmFtbWFyLmgKLQkkKEFNX1ZfYXQpZWNobyAnI2VuZGlmJyA+PiAkKEdFTlNPVVJDRVNf
V0VCQ09SRSkvWFBhdGhHcmFtbWFyLmgKLQkkKEFNX1ZfYXQpcm0gLWYgJChHRU5TT1VSQ0VTX1dF
QkNPUkUpL1hQYXRoR3JhbW1hci5jcHAuaCAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvWFBhdGhHcmFt
bWFyLmhwcAorCSQoQU1fVl9hdClwZXJsICQoV2ViQ29yZSkvY3NzL21ha2VncmFtbWFyLnBsIC0t
Z3JhbW1hciAkPCAtLW91dHB1dERpciAkKEdFTlNPVVJDRVNfV0VCQ09SRSkgLS1zeW1ib2xzUHJl
Zml4IHhwYXRoeXkKIAogIyAtLS0tCiAjIFhTTFQgU3VwcG9ydApAQCAtNDE4LDE4ICs0MTAsMTAg
QEAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db2xvckRhdGEuY3BwOiAkKFdlYkNvcmUpL3BsYXRm
b3JtL0NvbG9yRGF0YS5ncGVyZiAkKFdlYkMKIAogIyBDU1MgZ3JhbW1hcgogCi0jIE5PVEU6IG9s
ZGVyIHZlcnNpb25zIG9mIGJpc29uIGRvIG5vdCBpbmplY3QgYW4gaW5jbHVzaW9uIGd1YXJkLCBz
byB3ZSBkbyBpdAogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NHcmFtbWFyLmg6ICQoR0VOU09V
UkNFU19XRUJDT1JFKS9DU1NHcmFtbWFyLmNwcAotRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NH
cmFtbWFyLmNwcDogJChXZWJDb3JlKS9jc3MvQ1NTR3JhbW1hci55CitEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0NTU0dyYW1tYXIuY3BwOiAkKFdlYkNvcmUpL2Nzcy9DU1NHcmFtbWFyLnkuaW4KIAkk
KEFNX1ZfR0VOKQotCSQoQU1fVl9hdClybSAtZiAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvQ1NTR3Jh
bW1hci5jcHAuaCAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvQ1NTR3JhbW1hci5ocHAKLQkkKEFNX1Zf
YXQpJChCSVNPTikgLWQgLXAgY3NzeXkgJDwgLW8gJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0NTU0dy
YW1tYXIuY3BwCi0JJChBTV9WX2F0KXRvdWNoICQoR0VOU09VUkNFU19XRUJDT1JFKS9DU1NHcmFt
bWFyLmNwcC5oICQoR0VOU09VUkNFU19XRUJDT1JFKS9DU1NHcmFtbWFyLmhwcAotCSQoQU1fVl9h
dCllY2hvICcjaWZuZGVmIENTU0dyYW1tYXJfaCcgPiAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvQ1NT
R3JhbW1hci5oCi0JJChBTV9WX2F0KWVjaG8gJyNkZWZpbmUgQ1NTR3JhbW1hcl9oJyA+PiAkKEdF
TlNPVVJDRVNfV0VCQ09SRSkvQ1NTR3JhbW1hci5oCi0JJChBTV9WX2F0KWNhdCAkKEdFTlNPVVJD
RVNfV0VCQ09SRSkvQ1NTR3JhbW1hci5jcHAuaCAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvQ1NTR3Jh
bW1hci5ocHAgPj4gJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0NTU0dyYW1tYXIuaAotCSQoQU1fVl9h
dCllY2hvICcjZW5kaWYnID4+ICQoR0VOU09VUkNFU19XRUJDT1JFKS9DU1NHcmFtbWFyLmgKLQkk
KEFNX1ZfYXQpcm0gLWYgJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0NTU0dyYW1tYXIuY3BwLmggJChH
RU5TT1VSQ0VTX1dFQkNPUkUpL0NTU0dyYW1tYXIuaHBwCisJJChBTV9WX2F0KXBlcmwgJChXZWJD
b3JlKS9jc3MvbWFrZWdyYW1tYXIucGwgLS1ncmFtbWFyICQ8IC0tZXh0cmFEZWZpbmVzICIkKGZl
YXR1cmVfZGVmaW5lcykiIC0tb3V0cHV0RGlyICQoR0VOU09VUkNFU19XRUJDT1JFKSAtLXN5bWJv
bHNQcmVmaXggY3NzeXkKIAogIyB1c2VyIGFnZW50IHN0eWxlIHNoZWV0cwogVVNFUl9BR0VOVF9T
VFlMRV9TSEVFVFMgPSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9X
ZWJDb3JlLmd5cCBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCmluZGV4
IGUxYWI2NTQxZmU0NjE3NGViMzVjM2NkMWVkN2ZlNDk0MTljODc0MWUuLjRiNGNmZjUyYTY3MTgw
N2FlYTE2MzgyOTkyYTlhODA4ODI3NjViMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dl
YkNvcmUuZ3lwCkBAIC01ODUsNyArNTg1LDcgQEAKICAgICAgIH0sCiAgICAgICAnc291cmNlcyc6
IFsKICAgICAgICAgIyBiaXNvbiBydWxlCi0gICAgICAgICcuLi9jc3MvQ1NTR3JhbW1hci55JywK
KyAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC9DU1NHcmFtbWFyLnkn
LAogICAgICAgICAnLi4veG1sL1hQYXRoR3JhbW1hci55JywKIAogICAgICAgICAjIGdwZXJmIHJ1
bGUKQEAgLTEwNzYsNiArMTA3NiwyMiBAQAogICAgICAgICAgICAgJzxAKGRlcml2ZWRfc291cmNl
c19hZ2dyZWdhdGVfZmlsZXMpJywKICAgICAgICAgICBdLAogICAgICAgICB9LAorICAgICAgICB7
CisgICAgICAgICAgJ2FjdGlvbl9uYW1lJzogJ3ByZXByb2Nlc3NfZ3JhbW1hcicsCisgICAgICAg
ICAgJ2lucHV0cyc6IFsKKyAgICAgICAgICAgICcuLi9jc3MvQ1NTR3JhbW1hci55LmluJywKKyAg
ICAgICAgICBdLAorICAgICAgICAgICdvdXRwdXRzJzogWworICAgICAgICAgICAgJzwoU0hBUkVE
X0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC9DU1NHcmFtbWFyLnknLAorICAgICAgICAgIF0sCisg
ICAgICAgICAgJ2FjdGlvbic6IFsKKyAgICAgICAgICAgICdweXRob24nLAorICAgICAgICAgICAg
J3NjcmlwdHMvYWN0aW9uX3ByZXByb2Nlc3NncmFtbWFyLnB5JywKKyAgICAgICAgICAgICc8QChf
aW5wdXRzKScsCisgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0
LycsCisgICAgICAgICAgICAnPChmZWF0dXJlX2RlZmluZXMpJywKKyAgICAgICAgICBdLAorICAg
ICAgICB9LAogICAgICAgXSwKICAgICAgICdydWxlcyc6IFsKICAgICAgICAgIyBSdWxlcyB0byBi
dWlsZCBkZXJpdmVkIHNvdXJjZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cC9zY3JpcHRzL2FjdGlvbl9wcmVwcm9jZXNzZ3JhbW1hci5weSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwL3NjcmlwdHMvYWN0aW9uX3ByZXByb2Nlc3NncmFtbWFyLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjVhNGJkZjY0ZjRhOTA3M2YzNTYwNjViNTdiM2NlNzI0ZjZhMmQwNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9wcmVwcm9j
ZXNzZ3JhbW1hci5weQpAQCAtMCwwICsxLDc5IEBACisjIS91c3IvYmluL3B5dGhvbgorIworIyBD
b3B5cmlnaHQgKEMpIDIwMDkgTW90b3JvbGEgTW9iaWxpdHkgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJp
YnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1vdG9yb2xhIE1vYmlsaXR5IElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIworIyB1c2FnZTogYWN0aW9uX3By
ZXByb2Nlc3NncmFtbWFyLnB5IElOUFVUX0ZJTEUgT1VUUFVUX0RJUiBGRUFUVVJFX0RFRklORVMK
KyMgSU5QVVRfRklMRSBpcyBhIHBhdGggdG8gYSBncmFtbWFyIGZpbGUgdG8gYmUgcnVuIHRocm91
Z2ggdGhlIHByZXByb2Nlc3NvcgorIyAgICAgICAgICAgIChlLmcuIENTU0dyYW1tYXIueS5pbiku
CisjIE9VVFBVVF9ESVIgaXMgd2hlcmUgdGhlIHByb2Nlc3NlZCAueSBmaWxlIHNob3VsZCBiZSBw
bGFjZWQuCisjIEZFQVRVUkVfREVGSU5FUyBpcyBhIHNwYWNlLXNlcGFyYXRlZCBzdHJpbmcgd2l0
aCBhbGwgdGhlIHdlYmtpdCBmZWF0dXJlCisjICAgICAgICAgICAgICAgICBkZWZpbmVzCisKK2lt
cG9ydCBlcnJubworaW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IG9zCitpbXBvcnQgb3MucGF0aAor
aW1wb3J0IHNobGV4CitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworZnJvbSBTdHJpbmdJ
TyBpbXBvcnQgU3RyaW5nSU8KKworYXNzZXJ0IGxlbihzeXMuYXJndikgPT0gMyBvciBsZW4oc3lz
LmFyZ3YpID09IDQKKworaW5wdXRGaWxlID0gc3lzLmFyZ3ZbMV0KK291dHB1dERpciA9IHN5cy5h
cmd2WzJdCitmZWF0dXJlRmxhZ3MgPSBbXQoraWYgbGVuKHN5cy5hcmd2KSA+IDMgYW5kIHN5cy5h
cmd2WzNdOgorICAgIGZlYXR1cmVzID0gc2hsZXguc3BsaXQoc3lzLmFyZ3ZbM10pCisgICAgIyBm
ZWF0dXJlRmxhZ3MgPSBbIi1EIiwgIkVOQUJMRV9GRUFUVVJFMT0xIiwgIi1EIiwgIkVOQUJMRV9G
RUFUVVJFMj0wIiwgLi4uXQorICAgIGZlYXR1cmVGbGFncyA9IGxpc3QoaXRlcnRvb2xzLmNoYWlu
KCp6aXAoWyItRCJdICogbGVuKGZlYXR1cmVzKSwgZmVhdHVyZXMpKSkKKworZ2NjRXhlID0gImdj
YyIKK2lmICJDQyIgaW4gb3MuZW52aXJvbjoKKyAgICBnY2NFeGUgPSBvcy5lbnZpcm9uWyJDQyJd
CisKKyhpbnB1dFJvb3QsIGlucHV0RXh0KSA9IG9zLnBhdGguc3BsaXRleHQoaW5wdXRGaWxlKQor
YXNzZXJ0IGlucHV0RXh0ID09ICIuaW4iCisKK291dHB1dCA9IHN1YnByb2Nlc3MuUG9wZW4oWyds
cycsICctbCddLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKS5jb21tdW5pY2F0ZSgpWzBdCitwID0g
c3VicHJvY2Vzcy5Qb3BlbihbZ2NjRXhlLCAiLUUiLCAiLVAiLCAiLXgiLCAiYyIsIGlucHV0Rmls
ZV0gKyBmZWF0dXJlRmxhZ3MsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCitwcm9jZXNzZWRSZXN1
bHQgPSBwLmNvbW11bmljYXRlKClbMF0KK2Fzc2VydCBwLnJldHVybmNvZGUgPT0gMAorCitvdXRw
dXRGaWxlID0gb3Blbihvcy5wYXRoLmpvaW4ob3V0cHV0RGlyLCBvcy5wYXRoLmJhc2VuYW1lKGlu
cHV0Um9vdCkpLCAidyIpCisKK3RyeToKKyAgICBwcmludCA+PiBvdXRwdXRGaWxlLCBvcGVuKGlu
cHV0Um9vdCArICIuaW5jbHVkZXMiKS5yZWFkKCkKK2V4Y2VwdCBPU0Vycm9yLCBlOgorICAgIGlm
IGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgorICAgICAgICByYWlzZQorCitwcmludCA+PiBvdXRw
dXRGaWxlLCBwcm9jZXNzZWRSZXN1bHQKKworb3V0cHV0RmlsZS5jbG9zZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDRjOTkyMjc1ZjNhMjc5
YjQ1ZjRiM2VkMjlkOWRlYzFkYzUxZDIwY2QuLjQzNTE4ZDNkOGM5NzRiY2NmM2NlZGM5YmUzOWJl
MDgzNTM4ZmVjMDggMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCkBAIC0zNTg2Nyw3ICszNTg2NywxMSBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxG
aWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTR3JhbW1hci55IgorCQkJCVJlbGF0aXZl
UGF0aD0iLi5cY3NzXENTU0dyYW1tYXIueS5pbiIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8Rmls
ZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU0dyYW1tYXIueS5pbmNsdWRlcyIKIAkJCQk+
CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDEwZWQ1OWY5ZmEzNzY3ODg0Nzg3OGRjNjJiNDMw
NjgzNTQ4NTA4NmIuLmY3ZjY1NTg2MWZkOWZlYjhlNDVjNjQwNTk1NDQ2YzFiYzUyMTE2ZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEzMDI1LDcgKzEzMDI1LDYgQEAKIAkJQkNFOTNGNDYxNTE3QzZENTAwOENDRjc0IC8qIFJl
bmRlclJlZ2lvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW5kZXJSZWdpb25TZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0VBNDc3
QzA5N0NBQUM4MDA5NEM5RTQgLyogQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0VBNDc3RDA5N0NBQUM4
MDA5NEM5RTQgLyogQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkNFQTQ3N0UwOTdDQUFDODAwOTRDOUU0IC8qIENTU0dy
YW1tYXIueSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLnlhY2M7IHBhdGggPSBDU1NHcmFtbWFyLnk7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRUE0Nzg5MDk3Q0FBQzgwMDk0QzlFNCAv
KiBDU1NQcm9wZXJ0eU5hbWVzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDU1NQcm9wZXJ0
eU5hbWVzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0VBNDc4QzA5N0NBQUM4
MDA5NEM5RTQgLyogQ1NTVmFsdWVLZXl3b3Jkcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
Q1NTVmFsdWVLZXl3b3Jkcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFQTQ4
MTMwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJsb2NrTGluZUxheW91dC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNzQ4LDYgKzEzNzQ3LDggQEAKIAkJRkJE
NkFGODUxNUVGMjFENDAwOEI3MTEwIC8qIEJhc2ljU2hhcGVGdW5jdGlvbnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzaWNTaGFwZUZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGQkQ2QUY4NjE1RUYyMUQ0MDA4QjcxMTAgLyogQ1NTQmFzaWNT
aGFwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTQmFzaWNT
aGFwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQkQ2QUY4NzE1RUYyMUQ0
MDA4QjcxMTAgLyogQ1NTQmFzaWNTaGFwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ1NTQmFzaWNTaGFwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkNF
QkNENzExNjIzQTc5MTAwMjk5NjVFIC8qIENTU0dyYW1tYXIueS5pbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUueWFjYzsgcGF0aCA9IENTU0dyYW1tYXIueS5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkNFQkNENzIxNjIzQTc5MTAwMjk5NjVFIC8qIENTU0dyYW1tYXIueS5pbmNsdWRl
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUueWFjYzsgcGF0aCA9IENTU0dyYW1tYXIueS5pbmNsdWRl
czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQwMEQ3QTIxNEEzRjYxOTAwNzM0MDEx
IC8qIFNpbmNSZXNhbXBsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU2luY1Jlc2FtcGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZEMDBE
N0EzMTRBM0Y2MTkwMDczNDAxMSAvKiBTaW5jUmVzYW1wbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNpbmNSZXNhbXBsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkQwNkRGQTMxMzRBNERFRjAwNkY1RDdEIC8qIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZhdWx0QXVk
aW9EZXN0aW5hdGlvbk5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEx
MTEsNyArMjExMTIsOCBAQAogCQkJCUJDMDJBNjNCMEUwOUE5Q0YwMDRCNkQyQiAvKiBDU1NGdW5j
dGlvblZhbHVlLmggKi8sCiAJCQkJQkMyM0U0RTAwREFBQ0UwRjAwOUZEQzkxIC8qIENTU0dyYWRp
ZW50VmFsdWUuY3BwICovLAogCQkJCUJDNTNDNjkxMERBNTkxMTQwMDIxRUI1RCAvKiBDU1NHcmFk
aWVudFZhbHVlLmggKi8sCi0JCQkJQkNFQTQ3N0UwOTdDQUFDODAwOTRDOUU0IC8qIENTU0dyYW1t
YXIueSAqLywKKwkJCQlGQ0VCQ0Q3MTE2MjNBNzkxMDAyOTk2NUUgLyogQ1NTR3JhbW1hci55Lmlu
ICovLAorCQkJCUZDRUJDRDcyMTYyM0E3OTEwMDI5OTY1RSAvKiBDU1NHcmFtbWFyLnkuaW5jbHVk
ZXMgKi8sCiAJCQkJQkM3NzJCMzYwQzRFQTkxRTAwODMyODVGIC8qIENTU0hlbHBlci5oICovLAog
CQkJCUJDMjNFNzZCMERBRTg4QTkwMDlGREM5MSAvKiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNw
cCAqLywKIAkJCQlCQzIzRUU5MTBEQUVEMkJDMDA5RkRDOTEgLyogQ1NTSW1hZ2VHZW5lcmF0b3JW
YWx1ZS5oICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDJiNDI3NGE5YjMyYTM1YTI5NjY4OGY2NWIzYjM4YWYyNGJhM2I0MGQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYW1tYXIueQorKysgL2Rldi9udWxsCkBAIC0xLDE3NjQgKzAsMCBAQAotJXsKLQotLyoK
LSAqICBDb3B5cmlnaHQgKEMpIDIwMDItMjAwMyBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQot
ICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA2
IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIw
MDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAq
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYg
bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVT
QQotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJDU1NQYXJzZXIu
aCIKLSNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCi0jaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFs
dWUuaCIKLSNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCi0jaW5jbHVkZSAiQ1NTU2VsZWN0
b3IuaCIKLSNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIKLSNpbmNsdWRlICJEb2N1bWVudC5o
IgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgotI2luY2x1
ZGUgIk1lZGlhUXVlcnlFeHAuaCIKLSNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKLSNpbmNsdWRlICJT
dHlsZVNoZWV0Q29udGVudHMuaCIKLSNpbmNsdWRlICJXZWJLaXRDU1NLZXlmcmFtZVJ1bGUuaCIK
LSNpbmNsdWRlICJXZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RN
YWxsb2MuaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwotCi0jZGVm
aW5lIFlZTUFMTE9DIGZhc3RNYWxsb2MKLSNkZWZpbmUgWVlGUkVFIGZhc3RGcmVlCi0KLSNkZWZp
bmUgWVlFTkFCTEVfTkxTIDAKLSNkZWZpbmUgWVlMVFlQRV9JU19UUklWSUFMIDEKLSNkZWZpbmUg
WVlNQVhERVBUSCAxMDAwMAotI2RlZmluZSBZWURFQlVHIDAKLQotJX0KLQotJXB1cmVfcGFyc2Vy
Ci0KLSVwYXJzZS1wYXJhbSB7IENTU1BhcnNlciogcGFyc2VyIH0KLSVsZXgtcGFyYW0geyBDU1NQ
YXJzZXIqIHBhcnNlciB9Ci0KLSV1bmlvbiB7Ci0gICAgYm9vbCBib29sZWFuOwotICAgIGNoYXIg
Y2hhcmFjdGVyOwotICAgIGludCBpbnRlZ2VyOwotICAgIGRvdWJsZSBudW1iZXI7Ci0gICAgQ1NT
UGFyc2VyU3RyaW5nIHN0cmluZzsKLQotICAgIFN0eWxlUnVsZUJhc2UqIHJ1bGU7Ci0gICAgVmVj
dG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiA+KiBydWxlTGlzdDsKLSAgICBDU1NQYXJzZXJTZWxl
Y3Rvciogc2VsZWN0b3I7Ci0gICAgQ1NTU2VsZWN0b3JWZWN0b3IqIHNlbGVjdG9yTGlzdDsKLSAg
ICBDU1NTZWxlY3Rvcjo6TWFyZ2luQm94VHlwZSBtYXJnaW5Cb3g7Ci0gICAgQ1NTU2VsZWN0b3I6
OlJlbGF0aW9uIHJlbGF0aW9uOwotICAgIE1lZGlhUXVlcnlTZXQqIG1lZGlhTGlzdDsKLSAgICBN
ZWRpYVF1ZXJ5KiBtZWRpYVF1ZXJ5OwotICAgIE1lZGlhUXVlcnk6OlJlc3RyaWN0b3IgbWVkaWFR
dWVyeVJlc3RyaWN0b3I7Ci0gICAgTWVkaWFRdWVyeUV4cCogbWVkaWFRdWVyeUV4cDsKLSAgICBD
U1NQYXJzZXJWYWx1ZSB2YWx1ZTsKLSAgICBDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlTGlzdDsK
LSAgICBWZWN0b3I8T3duUHRyPE1lZGlhUXVlcnlFeHA+ID4qIG1lZGlhUXVlcnlFeHBMaXN0Owot
ICAgIFN0eWxlS2V5ZnJhbWUqIGtleWZyYW1lOwotICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVLZXlm
cmFtZT4gPioga2V5ZnJhbWVSdWxlTGlzdDsKLSAgICBmbG9hdCB2YWw7Ci0gICAgQ1NTUHJvcGVy
dHlJRCBpZDsKLX0KLQotJXsKLQotI2lmIFlZREVCVUcgPiAwCi0jZGVmaW5lIFlZUFJJTlQoRmls
ZSxUeXBlLFZhbHVlKSBwcmludF90b2tlbl92YWx1ZShGaWxlLFR5cGUsVmFsdWUpCi1zdGF0aWMg
dm9pZCBwcmludF90b2tlbl92YWx1ZShGSUxFICogeXlvdXRwdXQsIGludCB5eXR5cGUsIFlZU1RZ
UEUgY29uc3QgJnl5dmFsdWUpOwotI2VuZGlmCi0KLXN0YXRpYyBpbmxpbmUgaW50IGNzc3l5ZXJy
b3Iodm9pZCosIGNvbnN0IGNoYXIqKQotewotICAgIHJldHVybiAxOwotfQotCi0lfQotCi0lZXhw
ZWN0IDYzCi0KLSVub25hc3NvYyBMT1dFU1RfUFJFQwotCi0lbGVmdCBVTklNUE9SVEFOVF9UT0sK
LQotJXRva2VuIFdISVRFU1BBQ0UgU0dNTF9DRAotJXRva2VuIFRPS0VOX0VPRiAwCi0KLSV0b2tl
biBJTkNMVURFUwotJXRva2VuIERBU0hNQVRDSAotJXRva2VuIEJFR0lOU1dJVEgKLSV0b2tlbiBF
TkRTV0lUSAotJXRva2VuIENPTlRBSU5TCi0KLSV0b2tlbiA8c3RyaW5nPiBTVFJJTkcKLSVyaWdo
dCA8c3RyaW5nPiBJREVOVAotJXRva2VuIDxzdHJpbmc+IE5USAotCi0lbm9uYXNzb2MgPHN0cmlu
Zz4gSEVYCi0lbm9uYXNzb2MgPHN0cmluZz4gSURTRUwKLSVub25hc3NvYyAnOicKLSVub25hc3Nv
YyAnLicKLSVub25hc3NvYyAnWycKLSVub25hc3NvYyA8c3RyaW5nPiAnKicKLSVub25hc3NvYyBl
cnJvcgotJWxlZnQgJ3wnCi0KLSV0b2tlbiBJTVBPUlRfU1lNCi0ldG9rZW4gUEFHRV9TWU0KLSV0
b2tlbiBNRURJQV9TWU0KLSV0b2tlbiBGT05UX0ZBQ0VfU1lNCi0ldG9rZW4gQ0hBUlNFVF9TWU0K
LSV0b2tlbiBOQU1FU1BBQ0VfU1lNCi0ldG9rZW4gVkFSRlVOQ1RJT04KLSV0b2tlbiBXRUJLSVRf
UlVMRV9TWU0KLSV0b2tlbiBXRUJLSVRfREVDTFNfU1lNCi0ldG9rZW4gV0VCS0lUX0tFWUZSQU1F
X1JVTEVfU1lNCi0ldG9rZW4gV0VCS0lUX0tFWUZSQU1FU19TWU0KLSV0b2tlbiBXRUJLSVRfVkFM
VUVfU1lNCi0ldG9rZW4gV0VCS0lUX01FRElBUVVFUllfU1lNCi0ldG9rZW4gV0VCS0lUX1NFTEVD
VE9SX1NZTQotJXRva2VuIFdFQktJVF9SRUdJT05fUlVMRV9TWU0KLSV0b2tlbiA8bWFyZ2luQm94
PiBUT1BMRUZUQ09STkVSX1NZTQotJXRva2VuIDxtYXJnaW5Cb3g+IFRPUExFRlRfU1lNCi0ldG9r
ZW4gPG1hcmdpbkJveD4gVE9QQ0VOVEVSX1NZTQotJXRva2VuIDxtYXJnaW5Cb3g+IFRPUFJJR0hU
X1NZTQotJXRva2VuIDxtYXJnaW5Cb3g+IFRPUFJJR0hUQ09STkVSX1NZTQotJXRva2VuIDxtYXJn
aW5Cb3g+IEJPVFRPTUxFRlRDT1JORVJfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gQk9UVE9NTEVG
VF9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBCT1RUT01DRU5URVJfU1lNCi0ldG9rZW4gPG1hcmdp
bkJveD4gQk9UVE9NUklHSFRfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gQk9UVE9NUklHSFRDT1JO
RVJfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gTEVGVFRPUF9TWU0KLSV0b2tlbiA8bWFyZ2luQm94
PiBMRUZUTUlERExFX1NZTQotJXRva2VuIDxtYXJnaW5Cb3g+IExFRlRCT1RUT01fU1lNCi0ldG9r
ZW4gPG1hcmdpbkJveD4gUklHSFRUT1BfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gUklHSFRNSURE
TEVfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gUklHSFRCT1RUT01fU1lNCi0KLSV0b2tlbiBBVEtF
WVdPUkQKLQotJXRva2VuIElNUE9SVEFOVF9TWU0KLSV0b2tlbiBNRURJQV9PTkxZCi0ldG9rZW4g
TUVESUFfTk9UCi0ldG9rZW4gTUVESUFfQU5ECi0KLSV0b2tlbiA8bnVtYmVyPiBSRU1TCi0ldG9r
ZW4gPG51bWJlcj4gUUVNUwotJXRva2VuIDxudW1iZXI+IEVNUwotJXRva2VuIDxudW1iZXI+IEVY
UwotJXRva2VuIDxudW1iZXI+IFBYUwotJXRva2VuIDxudW1iZXI+IENNUwotJXRva2VuIDxudW1i
ZXI+IE1NUwotJXRva2VuIDxudW1iZXI+IElOUwotJXRva2VuIDxudW1iZXI+IFBUUwotJXRva2Vu
IDxudW1iZXI+IFBDUwotJXRva2VuIDxudW1iZXI+IERFR1MKLSV0b2tlbiA8bnVtYmVyPiBSQURT
Ci0ldG9rZW4gPG51bWJlcj4gR1JBRFMKLSV0b2tlbiA8bnVtYmVyPiBUVVJOUwotJXRva2VuIDxu
dW1iZXI+IE1TRUNTCi0ldG9rZW4gPG51bWJlcj4gU0VDUwotJXRva2VuIDxudW1iZXI+IEhFUlRa
Ci0ldG9rZW4gPG51bWJlcj4gS0hFUlRaCi0ldG9rZW4gPHN0cmluZz4gRElNRU4KLSV0b2tlbiA8
c3RyaW5nPiBJTlZBTElERElNRU4KLSV0b2tlbiA8bnVtYmVyPiBQRVJDRU5UQUdFCi0ldG9rZW4g
PG51bWJlcj4gRkxPQVRUT0tFTgotJXRva2VuIDxudW1iZXI+IElOVEVHRVIKLSV0b2tlbiA8bnVt
YmVyPiBWVwotJXRva2VuIDxudW1iZXI+IFZICi0ldG9rZW4gPG51bWJlcj4gVk1JTgotJXRva2Vu
IDxudW1iZXI+IERQUFgKLSV0b2tlbiA8bnVtYmVyPiBEUEkKLSV0b2tlbiA8bnVtYmVyPiBEUENN
Ci0KLSV0b2tlbiA8c3RyaW5nPiBVUkkKLSV0b2tlbiA8c3RyaW5nPiBGVU5DVElPTgotJXRva2Vu
IDxzdHJpbmc+IEFOWUZVTkNUSU9OCi0ldG9rZW4gPHN0cmluZz4gTk9URlVOQ1RJT04KLSV0b2tl
biA8c3RyaW5nPiBDQUxDRlVOQ1RJT04KLSV0b2tlbiA8c3RyaW5nPiBNSU5GVU5DVElPTgotJXRv
a2VuIDxzdHJpbmc+IE1BWEZVTkNUSU9OCi0ldG9rZW4gPHN0cmluZz4gVkFSX0RFRklOSVRJT04K
LQotJXRva2VuIDxzdHJpbmc+IFVOSUNPREVSQU5HRQotCi0ldHlwZSA8cmVsYXRpb24+IGNvbWJp
bmF0b3IKLQotJXR5cGUgPHJ1bGU+IGNoYXJzZXQKLSV0eXBlIDxydWxlPiBpZ25vcmVkX2NoYXJz
ZXQKLSV0eXBlIDxydWxlPiBydWxlc2V0Ci0ldHlwZSA8cnVsZT4gbWVkaWEKLSV0eXBlIDxydWxl
PiBpbXBvcnQKLSV0eXBlIDxydWxlPiBuYW1lc3BhY2UKLSV0eXBlIDxydWxlPiBwYWdlCi0ldHlw
ZSA8cnVsZT4gbWFyZ2luX2JveAotJXR5cGUgPHJ1bGU+IGZvbnRfZmFjZQotJXR5cGUgPHJ1bGU+
IGtleWZyYW1lcwotJXR5cGUgPHJ1bGU+IGludmFsaWRfcnVsZQotJXR5cGUgPHJ1bGU+IHNhdmVf
YmxvY2sKLSV0eXBlIDxydWxlPiBpbnZhbGlkX2F0Ci0ldHlwZSA8cnVsZT4gcnVsZQotJXR5cGUg
PHJ1bGU+IHZhbGlkX3J1bGUKLSV0eXBlIDxydWxlTGlzdD4gYmxvY2tfcnVsZV9saXN0IAotJXR5
cGUgPHJ1bGU+IGJsb2NrX3J1bGUKLSV0eXBlIDxydWxlPiBibG9ja192YWxpZF9ydWxlCi0ldHlw
ZSA8cnVsZT4gcmVnaW9uCi0KLSV0eXBlIDxzdHJpbmc+IG1heWJlX25zX3ByZWZpeAotCi0ldHlw
ZSA8c3RyaW5nPiBuYW1lc3BhY2Vfc2VsZWN0b3IKLQotJXR5cGUgPHN0cmluZz4gc3RyaW5nX29y
X3VyaQotJXR5cGUgPHN0cmluZz4gaWRlbnRfb3Jfc3RyaW5nCi0ldHlwZSA8c3RyaW5nPiBtZWRp
dW0KLSV0eXBlIDxtYXJnaW5Cb3g+IG1hcmdpbl9zeW0KLQotJXR5cGUgPHN0cmluZz4gbWVkaWFf
ZmVhdHVyZQotJXR5cGUgPG1lZGlhTGlzdD4gbWVkaWFfbGlzdAotJXR5cGUgPG1lZGlhTGlzdD4g
bWF5YmVfbWVkaWFfbGlzdAotJXR5cGUgPG1lZGlhUXVlcnk+IG1lZGlhX3F1ZXJ5Ci0ldHlwZSA8
bWVkaWFRdWVyeVJlc3RyaWN0b3I+IG1heWJlX21lZGlhX3Jlc3RyaWN0b3IKLSV0eXBlIDx2YWx1
ZUxpc3Q+IG1heWJlX21lZGlhX3ZhbHVlCi0ldHlwZSA8bWVkaWFRdWVyeUV4cD4gbWVkaWFfcXVl
cnlfZXhwCi0ldHlwZSA8bWVkaWFRdWVyeUV4cExpc3Q+IG1lZGlhX3F1ZXJ5X2V4cF9saXN0Ci0l
dHlwZSA8bWVkaWFRdWVyeUV4cExpc3Q+IG1heWJlX2FuZF9tZWRpYV9xdWVyeV9leHBfbGlzdAot
Ci0ldHlwZSA8c3RyaW5nPiBrZXlmcmFtZV9uYW1lCi0ldHlwZSA8a2V5ZnJhbWU+IGtleWZyYW1l
X3J1bGUKLSV0eXBlIDxrZXlmcmFtZVJ1bGVMaXN0PiBrZXlmcmFtZXNfcnVsZQotJXR5cGUgPHZh
bHVlTGlzdD4ga2V5X2xpc3QKLSV0eXBlIDx2YWx1ZT4ga2V5Ci0KLSV0eXBlIDxpZD4gcHJvcGVy
dHkKLQotJXR5cGUgPHNlbGVjdG9yPiBzcGVjaWZpZXIKLSV0eXBlIDxzZWxlY3Rvcj4gc3BlY2lm
aWVyX2xpc3QKLSV0eXBlIDxzZWxlY3Rvcj4gc2ltcGxlX3NlbGVjdG9yCi0ldHlwZSA8c2VsZWN0
b3I+IHNlbGVjdG9yCi0ldHlwZSA8c2VsZWN0b3JMaXN0PiBzZWxlY3Rvcl9saXN0Ci0ldHlwZSA8
c2VsZWN0b3JMaXN0PiBzaW1wbGVfc2VsZWN0b3JfbGlzdAotJXR5cGUgPHNlbGVjdG9yTGlzdD4g
cmVnaW9uX3NlbGVjdG9yCi0ldHlwZSA8c2VsZWN0b3I+IHNlbGVjdG9yX3dpdGhfdHJhaWxpbmdf
d2hpdGVzcGFjZQotJXR5cGUgPHNlbGVjdG9yPiBjbGFzcwotJXR5cGUgPHNlbGVjdG9yPiBhdHRy
aWIKLSV0eXBlIDxzZWxlY3Rvcj4gcHNldWRvCi0ldHlwZSA8c2VsZWN0b3I+IHBzZXVkb19wYWdl
Ci0ldHlwZSA8c2VsZWN0b3I+IHBhZ2Vfc2VsZWN0b3IKLQotJXR5cGUgPGJvb2xlYW4+IGRlY2xh
cmF0aW9uX2xpc3QKLSV0eXBlIDxib29sZWFuPiBkZWNsX2xpc3QKLSV0eXBlIDxib29sZWFuPiBk
ZWNsYXJhdGlvbgotJXR5cGUgPGJvb2xlYW4+IGRlY2xhcmF0aW9uc19hbmRfbWFyZ2lucwotCi0l
dHlwZSA8Ym9vbGVhbj4gcHJpbwotCi0ldHlwZSA8aW50ZWdlcj4gbWF0Y2gKLSV0eXBlIDxpbnRl
Z2VyPiB1bmFyeV9vcGVyYXRvcgotJXR5cGUgPGludGVnZXI+IG1heWJlX3VuYXJ5X29wZXJhdG9y
Ci0ldHlwZSA8Y2hhcmFjdGVyPiBvcGVyYXRvcgotCi0ldHlwZSA8dmFsdWVMaXN0PiBleHByCi0l
dHlwZSA8dmFsdWU+IHRlcm0KLSV0eXBlIDx2YWx1ZT4gdW5hcnlfdGVybQotJXR5cGUgPHZhbHVl
PiBmdW5jdGlvbgotJXR5cGUgPHZhbHVlPiBjYWxjX2Z1bmNfdGVybQotJXR5cGUgPGNoYXJhY3Rl
cj4gY2FsY19mdW5jX29wZXJhdG9yCi0ldHlwZSA8dmFsdWVMaXN0PiBjYWxjX2Z1bmNfZXhwcgot
JXR5cGUgPHZhbHVlTGlzdD4gY2FsY19mdW5jX2V4cHJfbGlzdAotJXR5cGUgPHZhbHVlTGlzdD4g
Y2FsY19mdW5jX3BhcmVuX2V4cHIKLSV0eXBlIDx2YWx1ZT4gY2FsY19mdW5jdGlvbgotJXR5cGUg
PHN0cmluZz4gbWluX29yX21heAotJXR5cGUgPHZhbHVlPiBtaW5fb3JfbWF4X2Z1bmN0aW9uCi0K
LSV0eXBlIDxzdHJpbmc+IGVsZW1lbnRfbmFtZQotJXR5cGUgPHN0cmluZz4gYXR0cl9uYW1lCi0K
LSUlCi0KLXN0eWxlc2hlZXQ6Ci0gICAgbWF5YmVfc3BhY2UgbWF5YmVfY2hhcnNldCBtYXliZV9z
Z21sIHJ1bGVfbGlzdAotICB8IHdlYmtpdF9ydWxlIG1heWJlX3NwYWNlCi0gIHwgd2Via2l0X2Rl
Y2xzIG1heWJlX3NwYWNlCi0gIHwgd2Via2l0X3ZhbHVlIG1heWJlX3NwYWNlCi0gIHwgd2Via2l0
X21lZGlhcXVlcnkgbWF5YmVfc3BhY2UKLSAgfCB3ZWJraXRfc2VsZWN0b3IgbWF5YmVfc3BhY2UK
LSAgfCB3ZWJraXRfa2V5ZnJhbWVfcnVsZSBtYXliZV9zcGFjZQotICA7Ci0KLXdlYmtpdF9ydWxl
OgotICAgIFdFQktJVF9SVUxFX1NZTSAneycgbWF5YmVfc3BhY2UgdmFsaWRfcnVsZSBtYXliZV9z
cGFjZSAnfScgewotICAgICAgICBwYXJzZXItPm1fcnVsZSA9ICQ0OwotICAgIH0KLTsKLQotd2Vi
a2l0X2tleWZyYW1lX3J1bGU6Ci0gICAgV0VCS0lUX0tFWUZSQU1FX1JVTEVfU1lNICd7JyBtYXli
ZV9zcGFjZSBrZXlmcmFtZV9ydWxlIG1heWJlX3NwYWNlICd9JyB7Ci0gICAgICAgIHBhcnNlci0+
bV9rZXlmcmFtZSA9ICQ0OwotICAgIH0KLTsKLQotd2Via2l0X2RlY2xzOgotICAgIFdFQktJVF9E
RUNMU19TWU0gJ3snIG1heWJlX3NwYWNlX2JlZm9yZV9kZWNsYXJhdGlvbiBkZWNsYXJhdGlvbl9s
aXN0ICd9JyB7Ci0gICAgICAgIC8qIGNhbiBiZSBlbXB0eSAqLwotICAgIH0KLTsKLQotd2Via2l0
X3ZhbHVlOgotICAgIFdFQktJVF9WQUxVRV9TWU0gJ3snIG1heWJlX3NwYWNlIGV4cHIgJ30nIHsK
LSAgICAgICAgaWYgKCQ0KSB7Ci0gICAgICAgICAgICBwYXJzZXItPm1fdmFsdWVMaXN0ID0gcGFy
c2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDQpOwotICAgICAgICAgICAgaW50IG9sZFBhcnNl
ZFByb3BlcnRpZXMgPSBwYXJzZXItPm1fcGFyc2VkUHJvcGVydGllcy0+c2l6ZSgpOwotICAgICAg
ICAgICAgaWYgKCFwYXJzZXItPnBhcnNlVmFsdWUocGFyc2VyLT5tX2lkLCBwYXJzZXItPm1faW1w
b3J0YW50KSkKLSAgICAgICAgICAgICAgICBwYXJzZXItPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMo
cGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKSAtIG9sZFBhcnNlZFByb3BlcnRpZXMp
OwotICAgICAgICAgICAgcGFyc2VyLT5tX3ZhbHVlTGlzdCA9IG51bGxwdHI7Ci0gICAgICAgIH0K
LSAgICB9Ci07Ci0KLXdlYmtpdF9tZWRpYXF1ZXJ5OgotICAgICBXRUJLSVRfTUVESUFRVUVSWV9T
WU0gV0hJVEVTUEFDRSBtYXliZV9zcGFjZSBtZWRpYV9xdWVyeSAnfScgewotICAgICAgICAgcGFy
c2VyLT5tX21lZGlhUXVlcnkgPSBwYXJzZXItPnNpbmtGbG9hdGluZ01lZGlhUXVlcnkoJDQpOwot
ICAgICB9Ci07Ci0KLXdlYmtpdF9zZWxlY3RvcjoKLSAgICBXRUJLSVRfU0VMRUNUT1JfU1lNICd7
JyBtYXliZV9zcGFjZSBzZWxlY3Rvcl9saXN0ICd9JyB7Ci0gICAgICAgIGlmICgkNCkgewotICAg
ICAgICAgICAgaWYgKHBhcnNlci0+bV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNlbGVjdG9yKQotICAg
ICAgICAgICAgICAgIHBhcnNlci0+bV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNlbGVjdG9yLT5hZG9w
dFNlbGVjdG9yVmVjdG9yKCokNCk7Ci0gICAgICAgIH0KLSAgICB9Ci07Ci0KLW1heWJlX3NwYWNl
OgotICAgIC8qIGVtcHR5ICovICVwcmVjIFVOSU1QT1JUQU5UX1RPSwotICB8IG1heWJlX3NwYWNl
IFdISVRFU1BBQ0UKLSAgOwotCi1tYXliZV9zZ21sOgotICAgIC8qIGVtcHR5ICovCi0gIHwgbWF5
YmVfc2dtbCBTR01MX0NECi0gIHwgbWF5YmVfc2dtbCBXSElURVNQQUNFCi0gIDsKLQotbWF5YmVf
Y2hhcnNldDoKLSAgIC8qIGVtcHR5ICovCi0gIHwgY2hhcnNldCB7Ci0gIH0KLSAgOwotCi1jbG9z
aW5nX2JyYWNlOgotICAgICd9JwotICB8ICVwcmVjIExPV0VTVF9QUkVDIFRPS0VOX0VPRgotICA7
Ci0KLWNoYXJzZXQ6Ci0gIENIQVJTRVRfU1lNIG1heWJlX3NwYWNlIFNUUklORyBtYXliZV9zcGFj
ZSAnOycgewotICAgICBpZiAocGFyc2VyLT5tX3N0eWxlU2hlZXQpCi0gICAgICAgICBwYXJzZXIt
Pm1fc3R5bGVTaGVldC0+cGFyc2VyU2V0RW5jb2RpbmdGcm9tQ2hhcnNldFJ1bGUoJDMpOwotICAg
ICBpZiAocGFyc2VyLT5pc0V4dHJhY3RpbmdTb3VyY2VEYXRhKCkgJiYgcGFyc2VyLT5tX2N1cnJl
bnRSdWxlRGF0YVN0YWNrLT5pc0VtcHR5KCkgJiYgcGFyc2VyLT5tX3J1bGVTb3VyY2VEYXRhUmVz
dWx0KQotICAgICAgICAgcGFyc2VyLT5hZGROZXdSdWxlVG9Tb3VyY2VUcmVlKENTU1J1bGVTb3Vy
Y2VEYXRhOjpjcmVhdGVVbmtub3duKCkpOwotICAgICAkJCA9IDA7Ci0gIH0KLSAgfCBDSEFSU0VU
X1NZTSBlcnJvciBpbnZhbGlkX2Jsb2NrIHsKLSAgfQotICB8IENIQVJTRVRfU1lNIGVycm9yICc7
JyB7Ci0gIH0KLTsKLQotaWdub3JlZF9jaGFyc2V0OgotICAgIENIQVJTRVRfU1lNIG1heWJlX3Nw
YWNlIFNUUklORyBtYXliZV9zcGFjZSAnOycgewotICAgICAgICAvLyBJZ25vcmUgYW55IEBjaGFy
c2V0IHJ1bGUgbm90IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0eWxlIHNoZWV0LgotICAgICAg
ICAkJCA9IDA7Ci0gICAgfQotICAgIHwgQ0hBUlNFVF9TWU0gbWF5YmVfc3BhY2UgJzsnIHsKLSAg
ICAgICAgJCQgPSAwOwotICAgIH0KLTsKLQotcnVsZV9saXN0OgotICAgLyogZW1wdHkgKi8KLSB8
IHJ1bGVfbGlzdCBydWxlIG1heWJlX3NnbWwgewotICAgICBpZiAoJDIgJiYgcGFyc2VyLT5tX3N0
eWxlU2hlZXQpCi0gICAgICAgICBwYXJzZXItPm1fc3R5bGVTaGVldC0+cGFyc2VyQXBwZW5kUnVs
ZSgkMik7Ci0gfQotIDsKLQotdmFsaWRfcnVsZToKLSAgICBydWxlc2V0Ci0gIHwgbWVkaWEKLSAg
fCBwYWdlCi0gIHwgZm9udF9mYWNlCi0gIHwga2V5ZnJhbWVzCi0gIHwgbmFtZXNwYWNlCi0gIHwg
aW1wb3J0Ci0gIHwgcmVnaW9uCi0gIDsKLQotcnVsZToKLSAgICB2YWxpZF9ydWxlIHsKLSAgICAg
ICAgcGFyc2VyLT5tX2hhZFN5bnRhY3RpY2FsbHlWYWxpZENTU1J1bGUgPSB0cnVlOwotICAgIH0K
LSAgfCBpZ25vcmVkX2NoYXJzZXQKLSAgfCBpbnZhbGlkX3J1bGUKLSAgfCBpbnZhbGlkX2F0Ci0g
IDsKLQotYmxvY2tfcnVsZV9saXN0OiAKLSAgICAvKiBlbXB0eSAqLyB7ICQkID0gMDsgfQotICB8
IGJsb2NrX3J1bGVfbGlzdCBibG9ja19ydWxlIG1heWJlX3NnbWwgewotICAgICAgJCQgPSAkMTsK
LSAgICAgIGlmICgkMikgewotICAgICAgICAgIGlmICghJCQpCi0gICAgICAgICAgICAgICQkID0g
cGFyc2VyLT5jcmVhdGVSdWxlTGlzdCgpOwotICAgICAgICAgICQkLT5hcHBlbmQoJDIpOwotICAg
ICAgfQotICB9Ci0gIDsKLQotYmxvY2tfdmFsaWRfcnVsZToKLSAgICBydWxlc2V0Ci0gIHwgcGFn
ZQotICB8IGZvbnRfZmFjZQotICB8IGtleWZyYW1lcwotICA7Ci0KLWJsb2NrX3J1bGU6Ci0gICAg
YmxvY2tfdmFsaWRfcnVsZQotICB8IGludmFsaWRfcnVsZQotICB8IGludmFsaWRfYXQKLSAgfCBu
YW1lc3BhY2UKLSAgfCBpbXBvcnQKLSAgfCBtZWRpYQotICA7Ci0KLWF0X2ltcG9ydF9oZWFkZXJf
ZW5kX21heWJlX3NwYWNlOgotICAgIG1heWJlX3NwYWNlIHsKLSAgICAgICAgcGFyc2VyLT5tYXJr
UnVsZUhlYWRlckVuZCgpOwotICAgICAgICBwYXJzZXItPm1hcmtSdWxlQm9keVN0YXJ0KCk7Ci0g
ICAgfQotICAgIDsKLQotYmVmb3JlX2ltcG9ydF9ydWxlOgotICAgIC8qIGVtcHR5ICovIHsKLSAg
ICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRhOjpJTVBP
UlRfUlVMRSk7Ci0gICAgfQotICAgIDsKLQotaW1wb3J0OgotICAgIGJlZm9yZV9pbXBvcnRfcnVs
ZSBJTVBPUlRfU1lNIGF0X2ltcG9ydF9oZWFkZXJfZW5kX21heWJlX3NwYWNlIHN0cmluZ19vcl91
cmkgbWF5YmVfc3BhY2UgbWF5YmVfbWVkaWFfbGlzdCAnOycgewotICAgICAgICAkJCA9IHBhcnNl
ci0+Y3JlYXRlSW1wb3J0UnVsZSgkNCwgJDYpOwotICAgIH0KLSAgfCBiZWZvcmVfaW1wb3J0X3J1
bGUgSU1QT1JUX1NZTSBhdF9pbXBvcnRfaGVhZGVyX2VuZF9tYXliZV9zcGFjZSBzdHJpbmdfb3Jf
dXJpIG1heWJlX3NwYWNlIG1heWJlX21lZGlhX2xpc3QgVE9LRU5fRU9GIHsKLSAgICAgICAgJCQg
PSBwYXJzZXItPmNyZWF0ZUltcG9ydFJ1bGUoJDQsICQ2KTsKLSAgICB9Ci0gIHwgYmVmb3JlX2lt
cG9ydF9ydWxlIElNUE9SVF9TWU0gYXRfaW1wb3J0X2hlYWRlcl9lbmRfbWF5YmVfc3BhY2Ugc3Ry
aW5nX29yX3VyaSBtYXliZV9zcGFjZSBtYXliZV9tZWRpYV9saXN0IGludmFsaWRfYmxvY2sgewot
ICAgICAgICAkJCA9IDA7Ci0gICAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKLSAgICB9Ci0g
IHwgYmVmb3JlX2ltcG9ydF9ydWxlIElNUE9SVF9TWU0gZXJyb3IgJzsnIHsKLSAgICAgICAgJCQg
PSAwOwotICAgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7Ci0gICAgfQotICB8IGJlZm9yZV9p
bXBvcnRfcnVsZSBJTVBPUlRfU1lNIGVycm9yIGludmFsaWRfYmxvY2sgewotICAgICAgICAkJCA9
IDA7Ci0gICAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKLSAgICB9Ci0gIDsKLQotbmFtZXNw
YWNlOgotTkFNRVNQQUNFX1NZTSBtYXliZV9zcGFjZSBtYXliZV9uc19wcmVmaXggc3RyaW5nX29y
X3VyaSBtYXliZV9zcGFjZSAnOycgewotICAgIHBhcnNlci0+YWRkTmFtZXNwYWNlKCQzLCAkNCk7
Ci0gICAgJCQgPSAwOwotfQotfCBOQU1FU1BBQ0VfU1lNIG1heWJlX3NwYWNlIG1heWJlX25zX3By
ZWZpeCBzdHJpbmdfb3JfdXJpIG1heWJlX3NwYWNlIGludmFsaWRfYmxvY2sgewotICAgICQkID0g
MDsKLX0KLXwgTkFNRVNQQUNFX1NZTSBlcnJvciBpbnZhbGlkX2Jsb2NrIHsKLSAgICAkJCA9IDA7
Ci19Ci18IE5BTUVTUEFDRV9TWU0gZXJyb3IgJzsnIHsKLSAgICAkJCA9IDA7Ci19Ci07Ci0KLW1h
eWJlX25zX3ByZWZpeDoKLS8qIGVtcHR5ICovIHsgJCQuY2xlYXIoKTsgfQotfCBJREVOVCBtYXli
ZV9zcGFjZSB7ICQkID0gJDE7IH0KLTsKLQotc3RyaW5nX29yX3VyaToKLVNUUklORwotfCBVUkkK
LTsKLQotbWVkaWFfZmVhdHVyZToKLSAgICBJREVOVCBtYXliZV9zcGFjZSB7Ci0gICAgICAgICQk
ID0gJDE7Ci0gICAgfQotICAgIDsKLQotbWF5YmVfbWVkaWFfdmFsdWU6Ci0gICAgLyplbXB0eSov
IHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICB8ICc6JyBtYXliZV9zcGFjZSBleHByIG1h
eWJlX3NwYWNlIHsKLSAgICAgICAgJCQgPSAkMzsKLSAgICB9Ci0gICAgOwotCi1tZWRpYV9xdWVy
eV9leHA6Ci0gICAgJygnIG1heWJlX3NwYWNlIG1lZGlhX2ZlYXR1cmUgbWF5YmVfc3BhY2UgbWF5
YmVfbWVkaWFfdmFsdWUgJyknIG1heWJlX3NwYWNlIHsKLSAgICAgICAgJDMubG93ZXIoKTsKLSAg
ICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeUV4cCgkMywgJDUpOwot
ICAgIH0KLSAgICA7Ci0KLW1lZGlhX3F1ZXJ5X2V4cF9saXN0OgotICAgIG1lZGlhX3F1ZXJ5X2V4
cCB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0
KCk7Ci0gICAgICAgICQkLT5hcHBlbmQocGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5RXhw
KCQxKSk7Ci0gICAgfQotICAgIHwgbWVkaWFfcXVlcnlfZXhwX2xpc3QgbWF5YmVfc3BhY2UgTUVE
SUFfQU5EIG1heWJlX3NwYWNlIG1lZGlhX3F1ZXJ5X2V4cCB7Ci0gICAgICAgICQkID0gJDE7Ci0g
ICAgICAgICQkLT5hcHBlbmQocGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwKCQ1KSk7
Ci0gICAgfQotICAgIDsKLQotbWF5YmVfYW5kX21lZGlhX3F1ZXJ5X2V4cF9saXN0OgotICAgIC8q
ZW1wdHkqLyB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ01lZGlhUXVlcnlF
eHBMaXN0KCk7Ci0gICAgfQotICAgIHwgTUVESUFfQU5EIG1heWJlX3NwYWNlIG1lZGlhX3F1ZXJ5
X2V4cF9saXN0IHsKLSAgICAgICAgJCQgPSAkMzsKLSAgICB9Ci0gICAgOwotCi1tYXliZV9tZWRp
YV9yZXN0cmljdG9yOgotICAgIC8qZW1wdHkqLyB7Ci0gICAgICAgICQkID0gTWVkaWFRdWVyeTo6
Tm9uZTsKLSAgICB9Ci0gICAgfCBNRURJQV9PTkxZIHsKLSAgICAgICAgJCQgPSBNZWRpYVF1ZXJ5
OjpPbmx5OwotICAgIH0KLSAgICB8IE1FRElBX05PVCB7Ci0gICAgICAgICQkID0gTWVkaWFRdWVy
eTo6Tm90OwotICAgIH0KLSAgICA7Ci0KLW1lZGlhX3F1ZXJ5OgotICAgIG1lZGlhX3F1ZXJ5X2V4
cF9saXN0IHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeShw
YXJzZXItPnNpbmtGbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KCQxKSk7Ci0gICAgfQotICAgIHwK
LSAgICBtYXliZV9tZWRpYV9yZXN0cmljdG9yIG1heWJlX3NwYWNlIG1lZGl1bSBtYXliZV9hbmRf
bWVkaWFfcXVlcnlfZXhwX2xpc3QgewotICAgICAgICAkMy5sb3dlcigpOwotICAgICAgICAkJCA9
IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5KCQxLCAkMywgcGFyc2VyLT5zaW5rRmxv
YXRpbmdNZWRpYVF1ZXJ5RXhwTGlzdCgkNCkpOwotICAgIH0KLSAgICA7Ci0KLW1heWJlX21lZGlh
X2xpc3Q6Ci0gICAgIC8qIGVtcHR5ICovIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZU1l
ZGlhUXVlcnlTZXQoKTsKLSAgICAgfQotICAgICB8IG1lZGlhX2xpc3QKLSAgICAgOwotCi1tZWRp
YV9saXN0OgotICAgIG1lZGlhX3F1ZXJ5IHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZU1l
ZGlhUXVlcnlTZXQoKTsKLSAgICAgICAgJCQtPmFkZE1lZGlhUXVlcnkocGFyc2VyLT5zaW5rRmxv
YXRpbmdNZWRpYVF1ZXJ5KCQxKSk7Ci0gICAgICAgIHBhcnNlci0+dXBkYXRlTGFzdE1lZGlhTGlu
ZSgkJCk7Ci0gICAgfQotICAgIHwgbWVkaWFfbGlzdCAnLCcgbWF5YmVfc3BhY2UgbWVkaWFfcXVl
cnkgewotICAgICAgICAkJCA9ICQxOwotICAgICAgICBpZiAoJCQpIHsKLSAgICAgICAgICAgICQk
LT5hZGRNZWRpYVF1ZXJ5KHBhcnNlci0+c2lua0Zsb2F0aW5nTWVkaWFRdWVyeSgkNCkpOwotICAg
ICAgICAgICAgcGFyc2VyLT51cGRhdGVMYXN0TWVkaWFMaW5lKCQkKTsKLSAgICAgICAgfQotICAg
IH0KLSAgICB8IG1lZGlhX2xpc3QgZXJyb3IgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAg
IDsKLQotYXRfcnVsZV9ib2R5X3N0YXJ0OgotICAgIC8qIGVtcHR5ICovIHsKLSAgICAgICAgcGFy
c2VyLT5tYXJrUnVsZUJvZHlTdGFydCgpOwotICAgIH0KLSAgICA7Ci0KLWJlZm9yZV9tZWRpYV9y
dWxlOgotICAgIC8qIGVtcHR5ICovIHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0
YXJ0KENTU1J1bGVTb3VyY2VEYXRhOjpNRURJQV9SVUxFKTsKLSAgICB9Ci0gICAgOwotCi1hdF9y
dWxlX2hlYWRlcl9lbmRfbWF5YmVfc3BhY2U6Ci0gICAgbWF5YmVfc3BhY2UgewotICAgICAgICBw
YXJzZXItPm1hcmtSdWxlSGVhZGVyRW5kKCk7Ci0gICAgfQotICAgIDsKLQotbWVkaWE6Ci0gICAg
YmVmb3JlX21lZGlhX3J1bGUgTUVESUFfU1lNIG1heWJlX3NwYWNlIG1lZGlhX2xpc3QgYXRfcnVs
ZV9oZWFkZXJfZW5kICd7JyBhdF9ydWxlX2JvZHlfc3RhcnQgbWF5YmVfc3BhY2UgYmxvY2tfcnVs
ZV9saXN0IHNhdmVfYmxvY2sgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlTWVkaWFSdWxl
KCQ0LCAkOSk7Ci0gICAgfQotICAgIHwgYmVmb3JlX21lZGlhX3J1bGUgTUVESUFfU1lNIGF0X3J1
bGVfaGVhZGVyX2VuZF9tYXliZV9zcGFjZSAneycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1heWJlX3Nw
YWNlIGJsb2NrX3J1bGVfbGlzdCBzYXZlX2Jsb2NrIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNy
ZWF0ZU1lZGlhUnVsZSgwLCAkNyk7Ci0gICAgfQotICAgIHwgYmVmb3JlX21lZGlhX3J1bGUgTUVE
SUFfU1lNIGF0X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9zcGFjZSAnOycgewotICAgICAgICAkJCA9
IDA7Ci0gICAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKLSAgICB9Ci0gICAgOwotCi1tZWRp
dW06Ci0gIElERU5UIG1heWJlX3NwYWNlIHsKLSAgICAgICQkID0gJDE7Ci0gIH0KLSAgOwotCi1i
ZWZvcmVfa2V5ZnJhbWVzX3J1bGU6Ci0gICAgLyogZW1wdHkgKi8gewotICAgICAgICBwYXJzZXIt
Pm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6OktFWUZSQU1FU19SVUxFKTsK
LSAgICB9Ci0gICAgOwotCi1rZXlmcmFtZXM6Ci0gICAgYmVmb3JlX2tleWZyYW1lc19ydWxlIFdF
QktJVF9LRVlGUkFNRVNfU1lNIG1heWJlX3NwYWNlIGtleWZyYW1lX25hbWUgYXRfcnVsZV9oZWFk
ZXJfZW5kX21heWJlX3NwYWNlICd7JyBhdF9ydWxlX2JvZHlfc3RhcnQgbWF5YmVfc3BhY2Uga2V5
ZnJhbWVzX3J1bGUgY2xvc2luZ19icmFjZSB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVL
ZXlmcmFtZXNSdWxlKCQ0LCBwYXJzZXItPnNpbmtGbG9hdGluZ0tleWZyYW1lVmVjdG9yKCQ5KSk7
Ci0gICAgfQotICAgIDsKLSAgCi1rZXlmcmFtZV9uYW1lOgotICAgIElERU5UCi0gICAgfCBTVFJJ
TkcKLSAgICA7Ci0KLWtleWZyYW1lc19ydWxlOgotICAgIC8qIGVtcHR5ICovIHsgJCQgPSBwYXJz
ZXItPmNyZWF0ZUZsb2F0aW5nS2V5ZnJhbWVWZWN0b3IoKTsgfQotICAgIHwga2V5ZnJhbWVzX3J1
bGUga2V5ZnJhbWVfcnVsZSBtYXliZV9zcGFjZSB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgICAg
IGlmICgkMikKLSAgICAgICAgICAgICQkLT5hcHBlbmQoJDIpOwotICAgIH0KLSAgICA7Ci0KLWtl
eWZyYW1lX3J1bGU6Ci0gICAga2V5X2xpc3QgbWF5YmVfc3BhY2UgJ3snIG1heWJlX3NwYWNlIGRl
Y2xhcmF0aW9uX2xpc3QgJ30nIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUtleWZyYW1l
KCQxKTsKLSAgICB9Ci0gICAgOwotCi1rZXlfbGlzdDoKLSAgICBrZXkgewotICAgICAgICAkJCA9
IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdWYWx1ZUxpc3QoKTsKLSAgICAgICAgJCQtPmFkZFZhbHVl
KHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWUoJDEpKTsKLSAgICB9Ci0gICAgfCBrZXlfbGlzdCBt
YXliZV9zcGFjZSAnLCcgbWF5YmVfc3BhY2Uga2V5IHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICAg
ICAgaWYgKCQkKQotICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHBhcnNlci0+c2lua0Zsb2F0aW5n
VmFsdWUoJDUpKTsKLSAgICB9Ci0gICAgOwotCi1rZXk6Ci0gICAgbWF5YmVfdW5hcnlfb3BlcmF0
b3IgUEVSQ0VOVEFHRSB7ICQkLmlkID0gMDsgJCQuaXNJbnQgPSBmYWxzZTsgJCQuZlZhbHVlID0g
JDEgKiAkMjsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOyB9Ci0gICAg
fCBJREVOVCB7Ci0gICAgICAgICQkLmlkID0gMDsgJCQuaXNJbnQgPSBmYWxzZTsgJCQudW5pdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOwotICAgICAgICBDU1NQYXJzZXJTdHJpbmcm
IHN0ciA9ICQxOwotICAgICAgICBpZiAoc3RyLmVxdWFsSWdub3JpbmdDYXNlKCJmcm9tIikpCi0g
ICAgICAgICAgICAkJC5mVmFsdWUgPSAwOwotICAgICAgICBlbHNlIGlmIChzdHIuZXF1YWxJZ25v
cmluZ0Nhc2UoInRvIikpCi0gICAgICAgICAgICAkJC5mVmFsdWUgPSAxMDA7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIFlZRVJST1I7Ci0gICAgfQotICAgIDsKLQotYmVmb3JlX3BhZ2VfcnVs
ZToKLSAgICAvKiBlbXB0eSAqLyB7Ci0gICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJTdGFy
dChDU1NSdWxlU291cmNlRGF0YTo6UEFHRV9SVUxFKTsKLSAgICB9Ci0gICAgOwotCi1wYWdlOgot
ICAgIGJlZm9yZV9wYWdlX3J1bGUgUEFHRV9TWU0gbWF5YmVfc3BhY2UgcGFnZV9zZWxlY3RvciBh
dF9ydWxlX2hlYWRlcl9lbmRfbWF5YmVfc3BhY2UKLSAgICAneycgYXRfcnVsZV9ib2R5X3N0YXJ0
IG1heWJlX3NwYWNlX2JlZm9yZV9kZWNsYXJhdGlvbiBkZWNsYXJhdGlvbnNfYW5kX21hcmdpbnMg
Y2xvc2luZ19icmFjZSB7Ci0gICAgICAgIGlmICgkNCkKLSAgICAgICAgICAgICQkID0gcGFyc2Vy
LT5jcmVhdGVQYWdlUnVsZShwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQ0KSk7Ci0gICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgLy8gQ2xlYXIgcHJvcGVydGllcyBpbiB0aGUgaW52YWxp
ZCBAcGFnZSBydWxlLgotICAgICAgICAgICAgcGFyc2VyLT5jbGVhclByb3BlcnRpZXMoKTsKLSAg
ICAgICAgICAgIC8vIEFsc28gY2xlYXIgbWFyZ2luIGF0LXJ1bGVzIGhlcmUgb25jZSB3ZSBmdWxs
eSBpbXBsZW1lbnQgbWFyZ2luIGF0LXJ1bGVzIHBhcnNpbmcuCi0gICAgICAgICAgICAkJCA9IDA7
Ci0gICAgICAgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgfCBiZWZvcmVfcGFnZV9ydWxlIFBBR0VfU1lNIGVycm9yIGludmFsaWRfYmxvY2sgewotICAg
ICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOwotICAgICAgJCQgPSAwOwotICAgIH0KLSAgICB8IGJl
Zm9yZV9wYWdlX3J1bGUgUEFHRV9TWU0gZXJyb3IgJzsnIHsKLSAgICAgIHBhcnNlci0+cG9wUnVs
ZURhdGEoKTsKLSAgICAgICQkID0gMDsKLSAgICB9Ci0gICAgOwotCi1wYWdlX3NlbGVjdG9yOgot
ICAgIElERU5UIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3Io
KTsKLSAgICAgICAgJCQtPnNldFRhZyhRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMSwgcGFyc2Vy
LT5tX2RlZmF1bHROYW1lc3BhY2UpKTsKLSAgICAgICAgJCQtPnNldEZvclBhZ2UoKTsKLSAgICB9
Ci0gICAgfCBJREVOVCBwc2V1ZG9fcGFnZSB7Ci0gICAgICAgICQkID0gJDI7Ci0gICAgICAgIGlm
ICgkJCkgewotICAgICAgICAgICAgJCQtPnNldFRhZyhRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAk
MSwgcGFyc2VyLT5tX2RlZmF1bHROYW1lc3BhY2UpKTsKLSAgICAgICAgICAgICQkLT5zZXRGb3JQ
YWdlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgfCBwc2V1ZG9fcGFnZSB7Ci0gICAgICAgICQk
ID0gJDE7Ci0gICAgICAgIGlmICgkJCkKLSAgICAgICAgICAgICQkLT5zZXRGb3JQYWdlKCk7Ci0g
ICAgfQotICAgIHwgLyogZW1wdHkgKi8gewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxv
YXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0Rm9yUGFnZSgpOwotICAgIH0KLSAgICA7
Ci0KLWRlY2xhcmF0aW9uc19hbmRfbWFyZ2luczoKLSAgICBkZWNsYXJhdGlvbl9saXN0Ci0gICAg
fCBkZWNsYXJhdGlvbnNfYW5kX21hcmdpbnMgbWFyZ2luX2JveCBtYXliZV9zcGFjZSBkZWNsYXJh
dGlvbl9saXN0Ci0gICAgOwotCi1tYXJnaW5fYm94OgotICAgIG1hcmdpbl9zeW0gewotICAgICAg
ICBwYXJzZXItPnN0YXJ0RGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KCk7Ci0gICAgfSBtYXliZV9z
cGFjZSAneycgbWF5YmVfc3BhY2UgZGVjbGFyYXRpb25fbGlzdCBjbG9zaW5nX2JyYWNlIHsKLSAg
ICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZU1hcmdpbkF0UnVsZSgkMSk7Ci0gICAgfQotICAgIDsK
LQotbWFyZ2luX3N5bSA6Ci0gICAgVE9QTEVGVENPUk5FUl9TWU0gewotICAgICAgICAkJCA9IENT
U1NlbGVjdG9yOjpUb3BMZWZ0Q29ybmVyTWFyZ2luQm94OwotICAgIH0KLSAgICB8IFRPUExFRlRf
U1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6VG9wTGVmdE1hcmdpbkJveDsKLSAgICB9
Ci0gICAgfCBUT1BDRU5URVJfU1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6VG9wQ2Vu
dGVyTWFyZ2luQm94OwotICAgIH0KLSAgICB8IFRPUFJJR0hUX1NZTSB7Ci0gICAgICAgICQkID0g
Q1NTU2VsZWN0b3I6OlRvcFJpZ2h0TWFyZ2luQm94OwotICAgIH0KLSAgICB8IFRPUFJJR0hUQ09S
TkVSX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OlRvcFJpZ2h0Q29ybmVyTWFyZ2lu
Qm94OwotICAgIH0KLSAgICB8IEJPVFRPTUxFRlRDT1JORVJfU1lNIHsKLSAgICAgICAgJCQgPSBD
U1NTZWxlY3Rvcjo6Qm90dG9tTGVmdENvcm5lck1hcmdpbkJveDsKLSAgICB9Ci0gICAgfCBCT1RU
T01MRUZUX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkJvdHRvbUxlZnRNYXJnaW5C
b3g7Ci0gICAgfQotICAgIHwgQk9UVE9NQ0VOVEVSX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2Vs
ZWN0b3I6OkJvdHRvbUNlbnRlck1hcmdpbkJveDsKLSAgICB9Ci0gICAgfCBCT1RUT01SSUdIVF9T
WU0gewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpCb3R0b21SaWdodE1hcmdpbkJveDsKLSAg
ICB9Ci0gICAgfCBCT1RUT01SSUdIVENPUk5FUl9TWU0gewotICAgICAgICAkJCA9IENTU1NlbGVj
dG9yOjpCb3R0b21SaWdodENvcm5lck1hcmdpbkJveDsKLSAgICB9Ci0gICAgfCBMRUZUVE9QX1NZ
TSB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkxlZnRUb3BNYXJnaW5Cb3g7Ci0gICAgfQot
ICAgIHwgTEVGVE1JRERMRV9TWU0gewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpMZWZ0TWlk
ZGxlTWFyZ2luQm94OwotICAgIH0KLSAgICB8IExFRlRCT1RUT01fU1lNIHsKLSAgICAgICAgJCQg
PSBDU1NTZWxlY3Rvcjo6TGVmdEJvdHRvbU1hcmdpbkJveDsKLSAgICB9Ci0gICAgfCBSSUdIVFRP
UF9TWU0gewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpSaWdodFRvcE1hcmdpbkJveDsKLSAg
ICB9Ci0gICAgfCBSSUdIVE1JRERMRV9TWU0gewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpS
aWdodE1pZGRsZU1hcmdpbkJveDsKLSAgICB9Ci0gICAgfCBSSUdIVEJPVFRPTV9TWU0gewotICAg
ICAgICAkJCA9IENTU1NlbGVjdG9yOjpSaWdodEJvdHRvbU1hcmdpbkJveDsKLSAgICB9Ci0gICAg
OwotCi1iZWZvcmVfZm9udF9mYWNlX3J1bGU6Ci0gICAgLyogZW1wdHkgKi8gewotICAgICAgICBw
YXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6OkZPTlRfRkFDRV9S
VUxFKTsKLSAgICB9Ci0gICAgOwotCi1mb250X2ZhY2U6Ci0gICAgYmVmb3JlX2ZvbnRfZmFjZV9y
dWxlIEZPTlRfRkFDRV9TWU0gYXRfcnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlCi0gICAgJ3sn
IGF0X3J1bGVfYm9keV9zdGFydCBtYXliZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRpb24gZGVjbGFy
YXRpb25fbGlzdCBjbG9zaW5nX2JyYWNlIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZv
bnRGYWNlUnVsZSgpOwotICAgIH0KLSAgICB8IGJlZm9yZV9mb250X2ZhY2VfcnVsZSBGT05UX0ZB
Q0VfU1lNIGVycm9yIGludmFsaWRfYmxvY2sgewotICAgICAgJCQgPSAwOwotICAgICAgcGFyc2Vy
LT5wb3BSdWxlRGF0YSgpOwotICAgIH0KLSAgICB8IGJlZm9yZV9mb250X2ZhY2VfcnVsZSBGT05U
X0ZBQ0VfU1lNIGVycm9yICc7JyB7Ci0gICAgICAkJCA9IDA7Ci0gICAgICBwYXJzZXItPnBvcFJ1
bGVEYXRhKCk7Ci0gICAgfQotOwotCi1yZWdpb25fc2VsZWN0b3I6Ci0gICAgc2VsZWN0b3JfbGlz
dCB7Ci0gICAgICAgIGlmICgkMSkgewotICAgICAgICAgICAgcGFyc2VyLT5zZXRSZXVzYWJsZVJl
Z2lvblNlbGVjdG9yVmVjdG9yKCQxKTsKLSAgICAgICAgICAgICQkID0gcGFyc2VyLT5yZXVzYWJs
ZVJlZ2lvblNlbGVjdG9yVmVjdG9yKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgJCQgPSAwOwotICAgIH0KLTsKLQotYmVmb3JlX3JlZ2lvbl9ydWxlOgotICAgIC8qIGVt
cHR5ICovIHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3Vy
Y2VEYXRhOjpSRUdJT05fUlVMRSk7Ci0gICAgfQotICAgIDsKLQotcmVnaW9uOgotICAgIGJlZm9y
ZV9yZWdpb25fcnVsZSBXRUJLSVRfUkVHSU9OX1JVTEVfU1lNIFdISVRFU1BBQ0UgcmVnaW9uX3Nl
bGVjdG9yIGF0X3J1bGVfaGVhZGVyX2VuZCAneycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1heWJlX3Nw
YWNlIGJsb2NrX3J1bGVfbGlzdCBzYXZlX2Jsb2NrIHsKLSAgICAgICAgaWYgKCQ0KQotICAgICAg
ICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZVJlZ2lvblJ1bGUoJDQsICQ5KTsKLSAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgICAgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRh
KCk7Ci0gICAgICAgIH0KLSAgICB9Ci07Ci0KLWNvbWJpbmF0b3I6Ci0gICAgJysnIG1heWJlX3Nw
YWNlIHsgJCQgPSBDU1NTZWxlY3Rvcjo6RGlyZWN0QWRqYWNlbnQ7IH0KLSAgfCAnficgbWF5YmVf
c3BhY2UgeyAkJCA9IENTU1NlbGVjdG9yOjpJbmRpcmVjdEFkamFjZW50OyB9Ci0gIHwgJz4nIG1h
eWJlX3NwYWNlIHsgJCQgPSBDU1NTZWxlY3Rvcjo6Q2hpbGQ7IH0KLSAgOwotCi1tYXliZV91bmFy
eV9vcGVyYXRvcjoKLSAgICB1bmFyeV9vcGVyYXRvciB7ICQkID0gJDE7IH0KLSAgICB8IHsgJCQg
PSAxOyB9Ci0gICAgOwotCi11bmFyeV9vcGVyYXRvcjoKLSAgICAnLScgeyAkJCA9IC0xOyB9Ci0g
IHwgJysnIHsgJCQgPSAxOyB9Ci0gIDsKLQotbWF5YmVfc3BhY2VfYmVmb3JlX2RlY2xhcmF0aW9u
OgotICAgIG1heWJlX3NwYWNlIHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlTdGFydCgp
OwotICAgIH0KLSAgOwotCi1iZWZvcmVfc2VsZWN0b3JfbGlzdDoKLSAgICAvKiBlbXB0eSAqLyB7
Ci0gICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6
U1RZTEVfUlVMRSk7Ci0gICAgfQotICA7Ci0KLWF0X3J1bGVfaGVhZGVyX2VuZDoKLSAgICAvKiBl
bXB0eSAqLyB7Ci0gICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJFbmQoKTsKLSAgICB9Ci0g
IDsKLQotcnVsZXNldDoKLSAgICBiZWZvcmVfc2VsZWN0b3JfbGlzdCBzZWxlY3Rvcl9saXN0IGF0
X3J1bGVfaGVhZGVyX2VuZCAneycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1heWJlX3NwYWNlX2JlZm9y
ZV9kZWNsYXJhdGlvbiBkZWNsYXJhdGlvbl9saXN0IGNsb3NpbmdfYnJhY2UgewotICAgICAgICAk
JCA9IHBhcnNlci0+Y3JlYXRlU3R5bGVSdWxlKCQyKTsKLSAgICB9Ci0gIDsKLQotc2VsZWN0b3Jf
bGlzdDoKLSAgICBzZWxlY3RvciAlcHJlYyBVTklNUE9SVEFOVF9UT0sgewotICAgICAgICBpZiAo
JDEpIHsKLSAgICAgICAgICAgICQkID0gcGFyc2VyLT5zZWxlY3RvclZlY3RvcigpOwotICAgICAg
ICAgICAgJCQtPnNocmluaygwKTsKLSAgICAgICAgICAgICQkLT5hcHBlbmQocGFyc2VyLT5zaW5r
RmxvYXRpbmdTZWxlY3RvcigkMSkpOwotICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVMYXN0U2Vs
ZWN0b3JMaW5lQW5kUG9zaXRpb24oKTsKLSAgICAgICAgfQotICAgIH0KLSAgICB8IHNlbGVjdG9y
X2xpc3QgJywnIG1heWJlX3NwYWNlIHNlbGVjdG9yICVwcmVjIFVOSU1QT1JUQU5UX1RPSyB7Ci0g
ICAgICAgIGlmICgkMSAmJiAkNCkgewotICAgICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgICAg
ICQkLT5hcHBlbmQocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkNCkpOwotICAgICAgICAg
ICAgcGFyc2VyLT51cGRhdGVMYXN0U2VsZWN0b3JMaW5lQW5kUG9zaXRpb24oKTsKLSAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgfQotICB8IHNlbGVjdG9yX2xpc3QgZXJy
b3IgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgOwotCi1zZWxlY3Rvcl93aXRoX3RyYWls
aW5nX3doaXRlc3BhY2U6Ci0gICAgc2VsZWN0b3IgV0hJVEVTUEFDRSB7Ci0gICAgICAgICQkID0g
JDE7Ci0gICAgfQotICAgIDsKLQotc2VsZWN0b3I6Ci0gICAgc2ltcGxlX3NlbGVjdG9yIHsKLSAg
ICAgICAgJCQgPSAkMTsKLSAgICB9Ci0gICAgfCBzZWxlY3Rvcl93aXRoX3RyYWlsaW5nX3doaXRl
c3BhY2UKLSAgICB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAgIHwgc2VsZWN0b3Jfd2l0
aF90cmFpbGluZ193aGl0ZXNwYWNlIHNpbXBsZV9zZWxlY3RvcgotICAgIHsKLSAgICAgICAgJCQg
PSAkMjsKLSAgICAgICAgaWYgKCEkMSkKLSAgICAgICAgICAgICQkID0gMDsKLSAgICAgICAgZWxz
ZSBpZiAoJCQpIHsKLSAgICAgICAgICAgIENTU1BhcnNlclNlbGVjdG9yKiBlbmQgPSAkJDsKLSAg
ICAgICAgICAgIHdoaWxlIChlbmQtPnRhZ0hpc3RvcnkoKSkKLSAgICAgICAgICAgICAgICBlbmQg
PSBlbmQtPnRhZ0hpc3RvcnkoKTsKLSAgICAgICAgICAgIGVuZC0+c2V0UmVsYXRpb24oQ1NTU2Vs
ZWN0b3I6OkRlc2NlbmRhbnQpOwotICAgICAgICAgICAgZW5kLT5zZXRUYWdIaXN0b3J5KHBhcnNl
ci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDEpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICB8IHNl
bGVjdG9yIGNvbWJpbmF0b3Igc2ltcGxlX3NlbGVjdG9yIHsKLSAgICAgICAgJCQgPSAkMzsKLSAg
ICAgICAgaWYgKCEkMSkKLSAgICAgICAgICAgICQkID0gMDsKLSAgICAgICAgZWxzZSBpZiAoJCQp
IHsKLSAgICAgICAgICAgIENTU1BhcnNlclNlbGVjdG9yKiBlbmQgPSAkJDsKLSAgICAgICAgICAg
IHdoaWxlIChlbmQtPnRhZ0hpc3RvcnkoKSkKLSAgICAgICAgICAgICAgICBlbmQgPSBlbmQtPnRh
Z0hpc3RvcnkoKTsKLSAgICAgICAgICAgIGVuZC0+c2V0UmVsYXRpb24oJDIpOwotICAgICAgICAg
ICAgZW5kLT5zZXRUYWdIaXN0b3J5KHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDEpKTsK
LSAgICAgICAgfQotICAgIH0KLSAgICB8IHNlbGVjdG9yIGVycm9yIHsKLSAgICAgICAgJCQgPSAw
OwotICAgIH0KLSAgICA7Ci0KLW5hbWVzcGFjZV9zZWxlY3RvcjoKLSAgICAvKiBlbXB0eSAqLyAn
fCcgeyAkJC5jbGVhcigpOyB9Ci0gICAgfCAnKicgJ3wnIHsgc3RhdGljIExDaGFyIHN0YXIgPSAn
Kic7ICQkLmluaXQoJnN0YXIsIDEpOyB9Ci0gICAgfCBJREVOVCAnfCcgeyAkJCA9ICQxOyB9Ci07
Ci0gICAgCi1zaW1wbGVfc2VsZWN0b3I6Ci0gICAgZWxlbWVudF9uYW1lIHsKLSAgICAgICAgJCQg
PSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldFRhZyhR
dWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMSwgcGFyc2VyLT5tX2RlZmF1bHROYW1lc3BhY2UpKTsK
LSAgICB9Ci0gICAgfCBlbGVtZW50X25hbWUgc3BlY2lmaWVyX2xpc3QgewotICAgICAgICAkJCA9
ICQyOwotICAgICAgICBpZiAoJCQpCi0gICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNpZmll
cnNXaXRoRWxlbWVudE5hbWUobnVsbEF0b20sICQxLCAkJCk7Ci0gICAgfQotICAgIHwgc3BlY2lm
aWVyX2xpc3QgewotICAgICAgICAkJCA9ICQxOwotICAgICAgICBpZiAoJCQpCi0gICAgICAgICAg
ICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUobnVsbEF0b20sIHN0YXJB
dG9tLCAkJCk7Ci0gICAgfQotICAgIHwgbmFtZXNwYWNlX3NlbGVjdG9yIGVsZW1lbnRfbmFtZSB7
Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAg
ICQkLT5zZXRUYWcocGFyc2VyLT5kZXRlcm1pbmVOYW1lSW5OYW1lc3BhY2UoJDEsICQyKSk7Ci0g
ICAgfQotICAgIHwgbmFtZXNwYWNlX3NlbGVjdG9yIGVsZW1lbnRfbmFtZSBzcGVjaWZpZXJfbGlz
dCB7Ci0gICAgICAgICQkID0gJDM7Ci0gICAgICAgIGlmICgkJCkKLSAgICAgICAgICAgIHBhcnNl
ci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZSgkMSwgJDIsICQkKTsKLSAgICB9Ci0g
ICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3Igc3BlY2lmaWVyX2xpc3QgewotICAgICAgICAkJCA9ICQy
OwotICAgICAgICBpZiAoJCQpCi0gICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNX
aXRoRWxlbWVudE5hbWUoJDEsIHN0YXJBdG9tLCAkJCk7Ci0gICAgfQotICA7Ci0KLXNpbXBsZV9z
ZWxlY3Rvcl9saXN0OgotICAgIHNpbXBsZV9zZWxlY3RvciAlcHJlYyBVTklNUE9SVEFOVF9UT0sg
ewotICAgICAgICBpZiAoJDEpIHsKLSAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9h
dGluZ1NlbGVjdG9yVmVjdG9yKCk7Ci0gICAgICAgICAgICAkJC0+YXBwZW5kKHBhcnNlci0+c2lu
a0Zsb2F0aW5nU2VsZWN0b3IoJDEpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAkJCA9
IDA7Ci0gICAgfQotICAgIHwgc2ltcGxlX3NlbGVjdG9yX2xpc3QgbWF5YmVfc3BhY2UgJywnIG1h
eWJlX3NwYWNlIHNpbXBsZV9zZWxlY3RvciAlcHJlYyBVTklNUE9SVEFOVF9UT0sgewotICAgICAg
ICBpZiAoJDEgJiYgJDUpIHsKLSAgICAgICAgICAgICQkID0gJDE7Ci0gICAgICAgICAgICAkJC0+
YXBwZW5kKHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDUpKTsKLSAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgIHwgc2ltcGxlX3NlbGVjdG9yX2xpc3Qg
ZXJyb3IgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICA7Ci0KLWVsZW1lbnRfbmFtZToKLSAg
ICBJREVOVCB7Ci0gICAgICAgIENTU1BhcnNlclN0cmluZyYgc3RyID0gJDE7Ci0gICAgICAgIGlm
IChwYXJzZXItPm1fY29udGV4dC5pc0hUTUxEb2N1bWVudCkKLSAgICAgICAgICAgIHN0ci5sb3dl
cigpOwotICAgICAgICAkJCA9IHN0cjsKLSAgICB9Ci0gICAgfCAnKicgewotICAgICAgICBzdGF0
aWMgTENoYXIgc3RhciA9ICcqJzsKLSAgICAgICAgJCQuaW5pdCgmc3RhciwgMSk7Ci0gICAgfQot
ICA7Ci0KLXNwZWNpZmllcl9saXN0OgotICAgIHNwZWNpZmllciB7Ci0gICAgICAgICQkID0gJDE7
Ci0gICAgfQotICAgIHwgc3BlY2lmaWVyX2xpc3Qgc3BlY2lmaWVyIHsKLSAgICAgICAgaWYgKCEk
MikKLSAgICAgICAgICAgICQkID0gMDsKLSAgICAgICAgZWxzZSBpZiAoJDEpCi0gICAgICAgICAg
ICAkJCA9IHBhcnNlci0+dXBkYXRlU3BlY2lmaWVycygkMSwgJDIpOwotICAgIH0KLSAgICB8IHNw
ZWNpZmllcl9saXN0IGVycm9yIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLTsKLQotc3BlY2lm
aWVyOgotICAgIElEU0VMIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2Vs
ZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpJZCk7Ci0gICAgICAg
IGlmIChwYXJzZXItPm1fY29udGV4dC5tb2RlID09IENTU1F1aXJrc01vZGUpCi0gICAgICAgICAg
ICAkMS5sb3dlcigpOwotICAgICAgICAkJC0+c2V0VmFsdWUoJDEpOwotICAgIH0KLSAgfCBIRVgg
ewotICAgICAgICBpZiAoJDFbMF0gPj0gJzAnICYmICQxWzBdIDw9ICc5JykgewotICAgICAgICAg
ICAgJCQgPSAwOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNy
ZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxl
Y3Rvcjo6SWQpOwotICAgICAgICAgICAgaWYgKHBhcnNlci0+bV9jb250ZXh0Lm1vZGUgPT0gQ1NT
UXVpcmtzTW9kZSkKLSAgICAgICAgICAgICAgICAkMS5sb3dlcigpOwotICAgICAgICAgICAgJCQt
PnNldFZhbHVlKCQxKTsKLSAgICAgICAgfQotICAgIH0KLSAgfCBjbGFzcwotICB8IGF0dHJpYgot
ICB8IHBzZXVkbwotICAgIDsKLQotY2xhc3M6Ci0gICAgJy4nIElERU5UIHsKLSAgICAgICAgJCQg
PSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldE1hdGNo
KENTU1NlbGVjdG9yOjpDbGFzcyk7Ci0gICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4dC5tb2Rl
ID09IENTU1F1aXJrc01vZGUpCi0gICAgICAgICAgICAkMi5sb3dlcigpOwotICAgICAgICAkJC0+
c2V0VmFsdWUoJDIpOwotICAgIH0KLSAgOwotCi1hdHRyX25hbWU6Ci0gICAgSURFTlQgbWF5YmVf
c3BhY2UgewotICAgICAgICBDU1NQYXJzZXJTdHJpbmcmIHN0ciA9ICQxOwotICAgICAgICBpZiAo
cGFyc2VyLT5tX2NvbnRleHQuaXNIVE1MRG9jdW1lbnQpCi0gICAgICAgICAgICBzdHIubG93ZXIo
KTsKLSAgICAgICAgJCQgPSBzdHI7Ci0gICAgfQotICAgIDsKLQotYXR0cmliOgotICAgICdbJyBt
YXliZV9zcGFjZSBhdHRyX25hbWUgJ10nIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZs
b2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldEF0dHJpYnV0ZShRdWFsaWZpZWROYW1l
KG51bGxBdG9tLCAkMywgbnVsbEF0b20pKTsKLSAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVj
dG9yOjpTZXQpOwotICAgIH0KLSAgICB8ICdbJyBtYXliZV9zcGFjZSBhdHRyX25hbWUgbWF0Y2gg
bWF5YmVfc3BhY2UgaWRlbnRfb3Jfc3RyaW5nIG1heWJlX3NwYWNlICddJyB7Ci0gICAgICAgICQk
ID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5zZXRBdHRy
aWJ1dGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDMsIG51bGxBdG9tKSk7Ci0gICAgICAgICQk
LT5zZXRNYXRjaCgoQ1NTU2VsZWN0b3I6Ok1hdGNoKSQ0KTsKLSAgICAgICAgJCQtPnNldFZhbHVl
KCQ2KTsKLSAgICB9Ci0gICAgfCAnWycgbWF5YmVfc3BhY2UgbmFtZXNwYWNlX3NlbGVjdG9yIGF0
dHJfbmFtZSAnXScgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3Rv
cigpOwotICAgICAgICAkJC0+c2V0QXR0cmlidXRlKHBhcnNlci0+ZGV0ZXJtaW5lTmFtZUluTmFt
ZXNwYWNlKCQzLCAkNCkpOwotICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlNldCk7
Ci0gICAgfQotICAgIHwgJ1snIG1heWJlX3NwYWNlIG5hbWVzcGFjZV9zZWxlY3RvciBhdHRyX25h
bWUgbWF0Y2ggbWF5YmVfc3BhY2UgaWRlbnRfb3Jfc3RyaW5nIG1heWJlX3NwYWNlICddJyB7Ci0g
ICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQk
LT5zZXRBdHRyaWJ1dGUocGFyc2VyLT5kZXRlcm1pbmVOYW1lSW5OYW1lc3BhY2UoJDMsICQ0KSk7
Ci0gICAgICAgICQkLT5zZXRNYXRjaCgoQ1NTU2VsZWN0b3I6Ok1hdGNoKSQ1KTsKLSAgICAgICAg
JCQtPnNldFZhbHVlKCQ3KTsKLSAgICB9Ci0gIDsKLQotbWF0Y2g6Ci0gICAgJz0nIHsKLSAgICAg
ICAgJCQgPSBDU1NTZWxlY3Rvcjo6RXhhY3Q7Ci0gICAgfQotICAgIHwgSU5DTFVERVMgewotICAg
ICAgICAkJCA9IENTU1NlbGVjdG9yOjpMaXN0OwotICAgIH0KLSAgICB8IERBU0hNQVRDSCB7Ci0g
ICAgICAgICQkID0gQ1NTU2VsZWN0b3I6Okh5cGhlbjsKLSAgICB9Ci0gICAgfCBCRUdJTlNXSVRI
IHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6QmVnaW47Ci0gICAgfQotICAgIHwgRU5EU1dJ
VEggewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpFbmQ7Ci0gICAgfQotICAgIHwgQ09OVEFJ
TlMgewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpDb250YWluOwotICAgIH0KLSAgICA7Ci0K
LWlkZW50X29yX3N0cmluZzoKLSAgICBJREVOVAotICB8IFNUUklORwotICAgIDsKLQotcHNldWRv
X3BhZ2U6Ci0gICAgJzonIElERU5UIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0
aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQYWdlUHNl
dWRvQ2xhc3MpOwotICAgICAgICAkMi5sb3dlcigpOwotICAgICAgICAkJC0+c2V0VmFsdWUoJDIp
OwotICAgICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUo
KTsKLSAgICAgICAgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25vd24pCi0gICAg
ICAgICAgICAkJCA9IDA7Ci0gICAgfQotCi1wc2V1ZG86Ci0gICAgJzonIElERU5UIHsKLSAgICAg
ICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNl
dE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7Ci0gICAgICAgICQyLmxvd2VyKCk7Ci0g
ICAgICAgICQkLT5zZXRWYWx1ZSgkMik7Ci0gICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBl
IHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOwotICAgICAgICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rv
cjo6UHNldWRvVW5rbm93bikKLSAgICAgICAgICAgICQkID0gMDsKLSAgICB9Ci0gICAgfCAnOicg
JzonIElERU5UIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3Io
KTsKLSAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50KTsKLSAg
ICAgICAgJDMubG93ZXIoKTsKLSAgICAgICAgJCQtPnNldFZhbHVlKCQzKTsKLSAgICAgICAgLy8g
RklYTUU6IFRoaXMgY2FsbCBpcyBuZWVkZWQgdG8gZm9yY2Ugc2VsZWN0b3IgdG8gY29tcHV0ZSB0
aGUgcHNldWRvVHlwZSBlYXJseSBlbm91Z2guCi0gICAgICAgICQkLT5wc2V1ZG9UeXBlKCk7Ci0g
ICAgfQotICAgIC8vIHVzZSBieSA6LXdlYmtpdC1hbnkuCi0gICAgLy8gRklYTUU6IHNob3VsZCB3
ZSBzdXBwb3J0IGdlbmVyaWMgc2VsZWN0b3JzIGhlcmUgb3IganVzdCBzaW1wbGVfc2VsZWN0b3Jz
PwotICAgIC8vIFVzZSBzaW1wbGVfc2VsZWN0b3JfbGlzdCBmb3Igbm93IHRvIG1hdGNoIC1tb3ot
YW55LgotICAgIC8vIFNlZSBodHRwOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3ct
c3R5bGUvMjAxMFNlcC8wNTY2Lmh0bWwgZm9yIHNvbWUKLSAgICAvLyByZWxhdGVkIGRpc2N1c3Np
b24gd2l0aCByZXNwZWN0IHRvIDpub3QuCi0gICAgfCAnOicgQU5ZRlVOQ1RJT04gbWF5YmVfc3Bh
Y2Ugc2ltcGxlX3NlbGVjdG9yX2xpc3QgbWF5YmVfc3BhY2UgJyknIHsKLSAgICAgICAgaWYgKCQ0
KSB7Ci0gICAgICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwot
ICAgICAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7Ci0gICAg
ICAgICAgICAkJC0+YWRvcHRTZWxlY3RvclZlY3RvcigqcGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxl
Y3RvclZlY3RvcigkNCkpOwotICAgICAgICAgICAgJDIubG93ZXIoKTsKLSAgICAgICAgICAgICQk
LT5zZXRWYWx1ZSgkMik7Ci0gICAgICAgICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSB0eXBl
ID0gJCQtPnBzZXVkb1R5cGUoKTsKLSAgICAgICAgICAgIGlmICh0eXBlICE9IENTU1NlbGVjdG9y
OjpQc2V1ZG9BbnkpCi0gICAgICAgICAgICAgICAgJCQgPSAwOwotICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgICQkID0gMDsKLSAgICB9Ci0gICAgLy8gdXNlZCBieSA6bnRoLSooYXgrYikKLSAg
ICB8ICc6JyBGVU5DVElPTiBtYXliZV9zcGFjZSBOVEggbWF5YmVfc3BhY2UgJyknIHsKLSAgICAg
ICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNl
dE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7Ci0gICAgICAgICQkLT5zZXRBcmd1bWVu
dCgkNCk7Ci0gICAgICAgICQkLT5zZXRWYWx1ZSgkMik7Ci0gICAgICAgIENTU1NlbGVjdG9yOjpQ
c2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOwotICAgICAgICBpZiAodHlwZSA9PSBD
U1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bikKLSAgICAgICAgICAgICQkID0gMDsKLSAgICB9Ci0g
ICAgLy8gdXNlZCBieSA6bnRoLSoKLSAgICB8ICc6JyBGVU5DVElPTiBtYXliZV9zcGFjZSBtYXli
ZV91bmFyeV9vcGVyYXRvciBJTlRFR0VSIG1heWJlX3NwYWNlICcpJyB7Ci0gICAgICAgICQkID0g
cGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5zZXRNYXRjaChD
U1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpOwotICAgICAgICAkJC0+c2V0QXJndW1lbnQoU3RyaW5n
OjpudW1iZXIoJDQgKiAkNSkpOwotICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOwotICAgICAgICBD
U1NTZWxlY3Rvcjo6UHNldWRvVHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUoKTsKLSAgICAgICAg
aWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25vd24pCi0gICAgICAgICAgICAkJCA9
IDA7Ci0gICAgfQotICAgIC8vIHVzZWQgYnkgOm50aC0qKG9kZC9ldmVuKSBhbmQgOmxhbmcKLSAg
ICB8ICc6JyBGVU5DVElPTiBtYXliZV9zcGFjZSBJREVOVCBtYXliZV9zcGFjZSAnKScgewotICAg
ICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+
c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKLSAgICAgICAgJCQtPnNldEFyZ3Vt
ZW50KCQ0KTsKLSAgICAgICAgJDIubG93ZXIoKTsKLSAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsK
LSAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgdHlwZSA9ICQkLT5wc2V1ZG9UeXBlKCk7
Ci0gICAgICAgIGlmICh0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9Vbmtub3duKQotICAgICAg
ICAgICAgJCQgPSAwOwotICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1
ZG9OdGhDaGlsZCB8fAotICAgICAgICAgICAgICAgICB0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1
ZG9OdGhPZlR5cGUgfHwKLSAgICAgICAgICAgICAgICAgdHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNl
dWRvTnRoTGFzdENoaWxkIHx8Ci0gICAgICAgICAgICAgICAgIHR5cGUgPT0gQ1NTU2VsZWN0b3I6
OlBzZXVkb050aExhc3RPZlR5cGUpIHsKLSAgICAgICAgICAgIGlmICghaXNWYWxpZE50aFRva2Vu
KCQ0KSkKLSAgICAgICAgICAgICAgICAkJCA9IDA7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgLy8g
dXNlZCBieSA6bm90Ci0gICAgfCAnOicgTk9URlVOQ1RJT04gbWF5YmVfc3BhY2Ugc2ltcGxlX3Nl
bGVjdG9yIG1heWJlX3NwYWNlICcpJyB7Ci0gICAgICAgIGlmICghJDQgfHwgISQ0LT5pc1NpbXBs
ZSgpKQotICAgICAgICAgICAgJCQgPSAwOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICQk
ID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICAgICAkJC0+c2V0
TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKLQotICAgICAgICAgICAgQ1NTU2VsZWN0
b3JWZWN0b3Igc2VsZWN0b3JWZWN0b3I7Ci0gICAgICAgICAgICBzZWxlY3RvclZlY3Rvci5hcHBl
bmQocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkNCkpOwotICAgICAgICAgICAgJCQtPmFk
b3B0U2VsZWN0b3JWZWN0b3Ioc2VsZWN0b3JWZWN0b3IpOwotCi0gICAgICAgICAgICAkMi5sb3dl
cigpOwotICAgICAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsKLSAgICAgICAgfQotICAgIH0KLSAg
OwotCi1kZWNsYXJhdGlvbl9saXN0OgotICAgIGRlY2xhcmF0aW9uIHsKLSAgICAgICAgJCQgPSAk
MTsKLSAgICB9Ci0gICAgfCBkZWNsX2xpc3QgZGVjbGFyYXRpb24gewotICAgICAgICAkJCA9ICQx
OwotICAgICAgICBpZiAoICQyICkKLSAgICAgICAgICAgICQkID0gJDI7Ci0gICAgfQotICAgIHwg
ZGVjbF9saXN0IHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICB9Ci0gICAgfCBlcnJvciBpbnZhbGlk
X2Jsb2NrX2xpc3QgZXJyb3IgewotICAgICAgICAkJCA9IGZhbHNlOwotICAgIH0KLSAgICB8IGVy
cm9yIHsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAgICB9Ci0gICAgfCBkZWNsX2xpc3QgZXJyb3Ig
ewotICAgICAgICAkJCA9ICQxOwotICAgIH0KLSAgICB8IGRlY2xfbGlzdCBpbnZhbGlkX2Jsb2Nr
X2xpc3QgewotICAgICAgICAkJCA9ICQxOwotICAgIH0KLSAgICA7Ci0KLWRlY2xfbGlzdDoKLSAg
ICBkZWNsYXJhdGlvbiAnOycgbWF5YmVfc3BhY2UgewotICAgICAgICBwYXJzZXItPm1hcmtQcm9w
ZXJ0eVN0YXJ0KCk7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAgIHwgZGVjbGFyYXRpb24g
aW52YWxpZF9ibG9ja19saXN0IG1heWJlX3NwYWNlIHsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAg
ICB9Ci0gICAgfCBkZWNsYXJhdGlvbiBpbnZhbGlkX2Jsb2NrX2xpc3QgJzsnIG1heWJlX3NwYWNl
IHsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAgICB9Ci0gICAgfCBlcnJvciAnOycgbWF5YmVfc3Bh
Y2UgewotICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7Ci0gICAgICAgICQkID0g
ZmFsc2U7Ci0gICAgfQotICAgIHwgZXJyb3IgaW52YWxpZF9ibG9ja19saXN0IGVycm9yICc7JyBt
YXliZV9zcGFjZSB7Ci0gICAgICAgICQkID0gZmFsc2U7Ci0gICAgfQotICAgIHwgZGVjbF9saXN0
IGRlY2xhcmF0aW9uICc7JyBtYXliZV9zcGFjZSB7Ci0gICAgICAgIHBhcnNlci0+bWFya1Byb3Bl
cnR5U3RhcnQoKTsKLSAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgaWYgKCQyKQotICAgICAgICAg
ICAgJCQgPSAkMjsKLSAgICB9Ci0gICAgfCBkZWNsX2xpc3QgZXJyb3IgJzsnIG1heWJlX3NwYWNl
IHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlTdGFydCgpOwotICAgICAgICAkJCA9ICQx
OwotICAgIH0KLSAgICB8IGRlY2xfbGlzdCBlcnJvciBpbnZhbGlkX2Jsb2NrX2xpc3QgZXJyb3Ig
JzsnIG1heWJlX3NwYWNlIHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlTdGFydCgpOwot
ICAgICAgICAkJCA9ICQxOwotICAgIH0KLSAgICA7Ci0KLWRlY2xhcmF0aW9uOgotICAgIFZBUl9E
RUZJTklUSU9OICc6JyBtYXliZV9zcGFjZSBleHByIHByaW8gewotI2lmIEVOQUJMRShDU1NfVkFS
SUFCTEVTKQotICAgICAgICBwYXJzZXItPnN0b3JlVmFyaWFibGVEZWNsYXJhdGlvbigkMSwgcGFy
c2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDQpLCAkNSk7Ci0gICAgICAgICQkID0gdHJ1ZTsK
LSAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlFbmQoJDUsIHRydWUpOwotI2Vsc2UKLSAgICAg
ICAgJCQgPSBmYWxzZTsKLSNlbmRpZgotICAgIH0KLSAgICB8Ci0gICAgcHJvcGVydHkgJzonIG1h
eWJlX3NwYWNlIGV4cHIgcHJpbyB7Ci0gICAgICAgICQkID0gZmFsc2U7Ci0gICAgICAgIGJvb2wg
aXNQcm9wZXJ0eVBhcnNlZCA9IGZhbHNlOwotICAgICAgICBpZiAoJDEgJiYgJDQpIHsKLSAgICAg
ICAgICAgIHBhcnNlci0+bV92YWx1ZUxpc3QgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlz
dCgkNCk7Ci0gICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHBhcnNlci0+bV9w
YXJzZWRQcm9wZXJ0aWVzLT5zaXplKCk7Ci0gICAgICAgICAgICAkJCA9IHBhcnNlci0+cGFyc2VW
YWx1ZShzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPigkMSksICQ1KTsKLSAgICAgICAgICAgIGlm
ICghJCQpCi0gICAgICAgICAgICAgICAgcGFyc2VyLT5yb2xsYmFja0xhc3RQcm9wZXJ0aWVzKHBh
cnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCkgLSBvbGRQYXJzZWRQcm9wZXJ0aWVzKTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBpc1Byb3BlcnR5UGFyc2VkID0gdHJ1
ZTsKLSAgICAgICAgICAgIHBhcnNlci0+bV92YWx1ZUxpc3QgPSBudWxscHRyOwotICAgICAgICB9
Ci0gICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5RW5kKCQ1LCBpc1Byb3BlcnR5UGFyc2VkKTsK
LSAgICB9Ci0gICAgfAotICAgIHByb3BlcnR5IGVycm9yIHsKLSAgICAgICAgJCQgPSBmYWxzZTsK
LSAgICB9Ci0gICAgfAotICAgIHByb3BlcnR5ICc6JyBtYXliZV9zcGFjZSBlcnJvciBleHByIHBy
aW8gewotICAgICAgICAvKiBUaGUgZGVmYXVsdCBtb3ZhYmxlIHR5cGUgdGVtcGxhdGUgaGFzIGxl
dHRlci1zcGFjaW5nOiAubm9uZTsgIEhhbmRsZSB0aGlzIGJ5IGxvb2tpbmcgZm9yCi0gICAgICAg
IGVycm9yIHRva2VucyBhdCB0aGUgc3RhcnQgb2YgYW4gZXhwciwgcmVjb3ZlciB0aGUgZXhwciBh
bmQgdGhlbiB0cmVhdCBhcyBhbiBlcnJvciwgY2xlYW5pbmcKLSAgICAgICAgdXAgYW5kIGRlbGV0
aW5nIHRoZSBzaGlmdGVkIGV4cHIuICAqLwotICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eUVu
ZChmYWxzZSwgZmFsc2UpOwotICAgICAgICAkJCA9IGZhbHNlOwotICAgIH0KLSAgICB8Ci0gICAg
cHJvcGVydHkgJzonIG1heWJlX3NwYWNlIGV4cHIgcHJpbyBlcnJvciB7Ci0gICAgICAgIC8qIFdo
ZW4gd2UgZW5jb3VudGVyIHNvbWV0aGluZyBsaWtlIHAge2NvbG9yOiByZWQgIWltcG9ydGFudCBm
YWlsO30gd2Ugc2hvdWxkIGRyb3AgdGhlIGRlY2xhcmF0aW9uICovCi0gICAgICAgIHBhcnNlci0+
bWFya1Byb3BlcnR5RW5kKGZhbHNlLCBmYWxzZSk7Ci0gICAgICAgICQkID0gZmFsc2U7Ci0gICAg
fQotICAgIHwKLSAgICBJTVBPUlRBTlRfU1lNIG1heWJlX3NwYWNlIHsKLSAgICAgICAgLyogSGFu
ZGxlIHRoaXMgY2FzZTogZGl2IHsgdGV4dC1hbGlnbjogY2VudGVyOyAhaW1wb3J0YW50IH0gSnVz
dCByZWR1Y2UgYXdheSB0aGUgc3RyYXkgIWltcG9ydGFudC4gKi8KLSAgICAgICAgJCQgPSBmYWxz
ZTsKLSAgICB9Ci0gICAgfAotICAgIHByb3BlcnR5ICc6JyBtYXliZV9zcGFjZSB7Ci0gICAgICAg
IC8qIGRpdiB7IGZvbnQtZmFtaWx5OiB9IEp1c3QgcmVkdWNlIGF3YXkgdGhpcyBwcm9wZXJ0eSB3
aXRoIG5vIHZhbHVlLiAqLwotICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eUVuZChmYWxzZSwg
ZmFsc2UpOwotICAgICAgICAkJCA9IGZhbHNlOwotICAgIH0KLSAgICB8Ci0gICAgcHJvcGVydHkg
JzonIG1heWJlX3NwYWNlIGVycm9yIHsKLSAgICAgICAgLyogaWYgd2UgY29tZSBhY3Jvc3MgcnVs
ZXMgd2l0aCBpbnZhbGlkIHZhbHVlcyBsaWtlIHRoaXMgY2FzZTogcCB7IHdlaWdodDogKjsgfSwg
anVzdCBkaXNjYXJkIHRoZSBydWxlICovCi0gICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5RW5k
KGZhbHNlLCBmYWxzZSk7Ci0gICAgICAgICQkID0gZmFsc2U7Ci0gICAgfQotICAgIHwKLSAgICBw
cm9wZXJ0eSBpbnZhbGlkX2Jsb2NrIHsKLSAgICAgICAgLyogaWYgd2UgY29tZSBhY3Jvc3M6IGRp
diB7IGNvbG9yeztjb2xvcjptYXJvb259IH0sIGlnbm9yZSBldmVyeXRoaW5nIHdpdGhpbiBjdXJs
eSBicmFja2V0cyAqLwotICAgICAgICAkJCA9IGZhbHNlOwotICAgIH0KLSAgOwotCi1wcm9wZXJ0
eToKLSAgICBJREVOVCBtYXliZV9zcGFjZSB7Ci0gICAgICAgICQkID0gY3NzUHJvcGVydHlJRCgk
MSk7Ci0gICAgfQotICA7Ci0KLXByaW86Ci0gICAgSU1QT1JUQU5UX1NZTSBtYXliZV9zcGFjZSB7
ICQkID0gdHJ1ZTsgfQotICAgIHwgLyogZW1wdHkgKi8geyAkJCA9IGZhbHNlOyB9Ci0gIDsKLQot
ZXhwcjoKLSAgICB0ZXJtIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nVmFs
dWVMaXN0KCk7Ci0gICAgICAgICQkLT5hZGRWYWx1ZShwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVl
KCQxKSk7Ci0gICAgfQotICAgIHwgZXhwciBvcGVyYXRvciB0ZXJtIHsKLSAgICAgICAgJCQgPSAk
MTsKLSAgICAgICAgaWYgKCQkKSB7Ci0gICAgICAgICAgICBpZiAoJDIpIHsKLSAgICAgICAgICAg
ICAgICBDU1NQYXJzZXJWYWx1ZSB2OwotICAgICAgICAgICAgICAgIHYuaWQgPSAwOwotICAgICAg
ICAgICAgICAgIHYudW5pdCA9IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvcjsKLSAgICAgICAgICAg
ICAgICB2LmlWYWx1ZSA9ICQyOwotICAgICAgICAgICAgICAgICQkLT5hZGRWYWx1ZSh2KTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICQkLT5hZGRWYWx1ZShwYXJzZXItPnNpbmtGbG9hdGlu
Z1ZhbHVlKCQzKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgfCBleHByIGludmFsaWRfYmxvY2tf
bGlzdCB7Ci0gICAgICAgICQkID0gMDsKLSAgICB9Ci0gICAgfCBleHByIGludmFsaWRfYmxvY2tf
bGlzdCBlcnJvciB7Ci0gICAgICAgICQkID0gMDsKLSAgICB9Ci0gICAgfCBleHByIGVycm9yIHsK
LSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgOwotCi1vcGVyYXRvcjoKLSAgICAnLycgbWF5YmVf
c3BhY2UgewotICAgICAgICAkJCA9ICcvJzsKLSAgICB9Ci0gIHwgJywnIG1heWJlX3NwYWNlIHsK
LSAgICAgICAgJCQgPSAnLCc7Ci0gICAgfQotICB8IC8qIGVtcHR5ICovIHsKLSAgICAgICAgJCQg
PSAwOwotICB9Ci0gIDsKLQotdGVybToKLSAgdW5hcnlfdGVybSB7ICQkID0gJDE7IH0KLSAgfCB1
bmFyeV9vcGVyYXRvciB1bmFyeV90ZXJtIHsgJCQgPSAkMjsgJCQuZlZhbHVlICo9ICQxOyB9Ci0g
IHwgU1RSSU5HIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5p
dCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HOyB9Ci0gIHwgSURFTlQgbWF5YmVfc3Bh
Y2UgewotICAgICAgJCQuaWQgPSBjc3NWYWx1ZUtleXdvcmRJRCgkMSk7Ci0gICAgICAkJC51bml0
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVDsKLSAgICAgICQkLnN0cmluZyA9ICQxOwot
ICB9Ci0gIC8qIFdlIG1pZ2h0IG5lZWQgdG8gYWN0dWFsbHkgcGFyc2UgdGhlIG51bWJlciBmcm9t
IGEgZGltZW5zaW9uLCBidXQgd2UgY2FuJ3QganVzdCBwdXQgc29tZXRoaW5nIHRoYXQgdXNlcyAk
JC5zdHJpbmcgaW50byB1bmFyeV90ZXJtLiAqLwotICB8IERJTUVOIG1heWJlX3NwYWNlIHsgJCQu
aWQgPSAwOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
RElNRU5TSU9OOyB9Ci0gIHwgdW5hcnlfb3BlcmF0b3IgRElNRU4gbWF5YmVfc3BhY2UgeyAkJC5p
ZCA9IDA7ICQkLnN0cmluZyA9ICQyOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19E
SU1FTlNJT047IH0KLSAgfCBVUkkgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9
ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkk7IH0KLSAgfCBVTklDT0RF
UkFOR0UgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VTklDT0RFX1JBTkdFOyB9Ci0gIHwgSEVYIG1heWJlX3Nw
YWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUEFSU0VSX0hFWENPTE9SOyB9Ci0gIHwgJyMnIG1heWJlX3NwYWNlIHsgJCQuaWQg
PSAwOyAkJC5zdHJpbmcgPSBDU1NQYXJzZXJTdHJpbmcoKTsgJCQudW5pdCA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUEFSU0VSX0hFWENPTE9SOyB9IC8qIEhhbmRsZSBlcnJvciBjYXNlOiAiY29s
b3I6ICM7IiAqLwotICB8IFZBUkZVTkNUSU9OIG1heWJlX3NwYWNlIElERU5UICcpJyBtYXliZV9z
cGFjZSB7Ci0jaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCi0gICAgICAkJC5pZCA9IDA7Ci0gICAg
ICAkJC5zdHJpbmcgPSAkMzsKLSAgICAgICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1ZBUklBQkxFX05BTUU7Ci0jZW5kaWYKLSAgfQotICAvKiBGSVhNRTogYWNjb3JkaW5nIHRvIHRo
ZSBzcGVjcyBhIGZ1bmN0aW9uIGNhbiBoYXZlIGEgdW5hcnlfb3BlcmF0b3IgaW4gZnJvbnQuIEkg
a25vdyBubyBjYXNlIHdoZXJlIHRoaXMgbWFrZXMgc2Vuc2UgKi8KLSAgfCBmdW5jdGlvbiB7Ci0g
ICAgICAkJCA9ICQxOwotICB9Ci0gIHwgY2FsY19mdW5jdGlvbiB7Ci0gICAgICAkJCA9ICQxOwot
ICB9Ci0gIHwgbWluX29yX21heF9mdW5jdGlvbiB7Ci0gICAgICAkJCA9ICQxOwotICB9Ci0gIHwg
JyUnIG1heWJlX3NwYWNlIHsgLyogSGFuZGxlIHdpZHRoOiAlOyAqLwotICAgICAgJCQuaWQgPSAw
OyAkJC51bml0ID0gMDsKLSAgfQotICA7Ci0KLXVuYXJ5X3Rlcm06Ci0gIElOVEVHRVIgbWF5YmVf
c3BhY2UgeyAkJC5pZCA9IDA7ICQkLmlzSW50ID0gdHJ1ZTsgJCQuZlZhbHVlID0gJDE7ICQkLnVu
aXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjsgfQotICB8IEZMT0FUVE9LRU4gbWF5
YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmlzSW50ID0gZmFsc2U7ICQkLmZWYWx1ZSA9ICQxOyAk
JC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7IH0KLSAgfCBQRVJDRU5UQUdF
IG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRTsgfQotICB8IFBYUyBtYXliZV9zcGFjZSB7ICQk
LmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BYOyB9Ci0gIHwgQ01TIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsg
JCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ007IH0KLSAgfCBNTVMgbWF5YmVfc3Bh
Y2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19NTTsgfQotICB8IElOUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVl
ID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lOOyB9Ci0gIHwgUFRTIG1h
eWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUFQ7IH0KLSAgfCBQQ1MgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQk
LmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQzsgfQotICB8
IERFR1MgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ERUc7IH0KLSAgfCBSQURTIG1heWJlX3NwYWNlIHsgJCQu
aWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UkFEOyB9Ci0gIHwgR1JBRFMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQx
OyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19HUkFEOyB9Ci0gIHwgVFVSTlMgbWF5
YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19UVVJOOyB9Ci0gIHwgTVNFQ1MgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7
ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19NUzsgfQot
ICB8IFNFQ1MgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TOyB9Ci0gIHwgSEVSVFogbWF5YmVfc3BhY2UgeyAk
JC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19IWjsgfQotICB8IEtIRVJUWiBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0g
JDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0tIWjsgfQotICB8IEVNUyBtYXli
ZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX0VNUzsgfQotICB8IFFFTVMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQk
LmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OlFfRU1TOyB9Ci0gIHwgRVhT
IG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfRVhTOyB9Ci0gIHwgUkVNUyBtYXliZV9zcGFjZSB7Ci0gICAgICAk
JC5pZCA9IDA7Ci0gICAgICAkJC5mVmFsdWUgPSAkMTsKLSAgICAgICQkLnVuaXQgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1JFTVM7Ci0gICAgICBpZiAocGFyc2VyLT5tX3N0eWxlU2hlZXQpCi0g
ICAgICAgICAgcGFyc2VyLT5tX3N0eWxlU2hlZXQtPnBhcnNlclNldFVzZXNSZW1Vbml0cyh0cnVl
KTsKLSAgfQotICB8IFZXIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsg
JCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVlc7IH0KLSAgfCBWSCBtYXliZV9zcGFj
ZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1ZIOyB9Ci0gIHwgVk1JTiBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVl
ID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZNSU47IH0KLSAgfCBEUFBY
IG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfRFBQWDsgfQotICB8IERQSSBtYXliZV9zcGFjZSB7ICQkLmlkID0g
MDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQSTsg
fQotICB8IERQQ00gbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51
bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19EUENNOyB9Ci0gIDsKLQotZnVuY3Rpb246Ci0g
ICAgRlVOQ1RJT04gbWF5YmVfc3BhY2UgZXhwciAnKScgbWF5YmVfc3BhY2UgewotICAgICAgICBD
U1NQYXJzZXJGdW5jdGlvbiogZiA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdGdW5jdGlvbigpOwot
ICAgICAgICBmLT5uYW1lID0gJDE7Ci0gICAgICAgIGYtPmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9h
dGluZ1ZhbHVlTGlzdCgkMyk7Ci0gICAgICAgICQkLmlkID0gMDsKLSAgICAgICAgJCQudW5pdCA9
IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKLSAgICAgICAgJCQuZnVuY3Rpb24gPSBmOwotICAg
IH0gfAotICAgIEZVTkNUSU9OIG1heWJlX3NwYWNlIGV4cHIgVE9LRU5fRU9GIHsKLSAgICAgICAg
Q1NTUGFyc2VyRnVuY3Rpb24qIGYgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsK
LSAgICAgICAgZi0+bmFtZSA9ICQxOwotICAgICAgICBmLT5hcmdzID0gcGFyc2VyLT5zaW5rRmxv
YXRpbmdWYWx1ZUxpc3QoJDMpOwotICAgICAgICAkJC5pZCA9IDA7Ci0gICAgICAgICQkLnVuaXQg
PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb247Ci0gICAgICAgICQkLmZ1bmN0aW9uID0gZjsKLSAg
ICB9IHwKLSAgICBGVU5DVElPTiBtYXliZV9zcGFjZSAnKScgbWF5YmVfc3BhY2UgewotICAgICAg
ICBDU1NQYXJzZXJGdW5jdGlvbiogZiA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdGdW5jdGlvbigp
OwotICAgICAgICBmLT5uYW1lID0gJDE7Ci0gICAgICAgIENTU1BhcnNlclZhbHVlTGlzdCogdmFs
dWVMaXN0ID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1ZhbHVlTGlzdCgpOwotICAgICAgICBmLT5h
cmdzID0gcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QodmFsdWVMaXN0KTsKLSAgICAgICAg
JCQuaWQgPSAwOwotICAgICAgICAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uOwot
ICAgICAgICAkJC5mdW5jdGlvbiA9IGY7Ci0gICAgfSB8Ci0gICAgRlVOQ1RJT04gbWF5YmVfc3Bh
Y2UgZXJyb3IgewotICAgICAgICBDU1NQYXJzZXJGdW5jdGlvbiogZiA9IHBhcnNlci0+Y3JlYXRl
RmxvYXRpbmdGdW5jdGlvbigpOwotICAgICAgICBmLT5uYW1lID0gJDE7Ci0gICAgICAgIGYtPmFy
Z3MgPSBudWxscHRyOwotICAgICAgICAkJC5pZCA9IDA7Ci0gICAgICAgICQkLnVuaXQgPSBDU1NQ
YXJzZXJWYWx1ZTo6RnVuY3Rpb247Ci0gICAgICAgICQkLmZ1bmN0aW9uID0gZjsKLSAgfQotICA7
Ci0gCi1jYWxjX2Z1bmNfdGVybToKLSAgdW5hcnlfdGVybSB7ICQkID0gJDE7IH0KLSAgfCBWQVJG
VU5DVElPTiBtYXliZV9zcGFjZSBJREVOVCAnKScgbWF5YmVfc3BhY2UgewotI2lmIEVOQUJMRShD
U1NfVkFSSUFCTEVTKQotICAgICAgJCQuaWQgPSAwOwotICAgICAgJCQuc3RyaW5nID0gJDM7Ci0g
ICAgICAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WQVJJQUJMRV9OQU1FOwotI2Vu
ZGlmCi0gIH0KLSAgfCB1bmFyeV9vcGVyYXRvciB1bmFyeV90ZXJtIHsgJCQgPSAkMjsgJCQuZlZh
bHVlICo9ICQxOyB9Ci0gIDsKLQotY2FsY19mdW5jX29wZXJhdG9yOgotICAgICcrJyBXSElURVNQ
QUNFIHsKLSAgICAgICAgJCQgPSAnKyc7Ci0gICAgfQotICAgIHwgJy0nIFdISVRFU1BBQ0Ugewot
ICAgICAgICAkJCA9ICctJzsKLSAgICB9Ci0gICAgfCAnKicgbWF5YmVfc3BhY2UgewotICAgICAg
ICAkJCA9ICcqJzsKLSAgICB9Ci0gICAgfCAnLycgbWF5YmVfc3BhY2UgewotICAgICAgICAkJCA9
ICcvJzsKLSAgICB9Ci0gIDsKLQotY2FsY19mdW5jX3BhcmVuX2V4cHI6Ci0gICAgJygnIG1heWJl
X3NwYWNlIGNhbGNfZnVuY19leHByIG1heWJlX3NwYWNlICcpJyBtYXliZV9zcGFjZSB7Ci0gICAg
ICAgIGlmICgkMykgewotICAgICAgICAgICAgJCQgPSAkMzsKLSAgICAgICAgICAgIENTU1BhcnNl
clZhbHVlIHY7Ci0gICAgICAgICAgICB2LmlkID0gMDsKLSAgICAgICAgICAgIHYudW5pdCA9IENT
U1BhcnNlclZhbHVlOjpPcGVyYXRvcjsKLSAgICAgICAgICAgIHYuaVZhbHVlID0gJygnOwotICAg
ICAgICAgICAgJCQtPmluc2VydFZhbHVlQXQoMCwgdik7Ci0gICAgICAgICAgICB2LmlWYWx1ZSA9
ICcpJzsKLSAgICAgICAgICAgICQkLT5hZGRWYWx1ZSh2KTsKLSAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAkJCA9IDA7Ci0gICAgfQotCi1jYWxjX2Z1bmNfZXhwcjoKLSAgICBjYWxjX2Z1bmNf
dGVybSBtYXliZV9zcGFjZSB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1Zh
bHVlTGlzdCgpOwotICAgICAgICAkJC0+YWRkVmFsdWUocGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1
ZSgkMSkpOwotICAgIH0KLSAgICB8IGNhbGNfZnVuY19leHByIGNhbGNfZnVuY19vcGVyYXRvciBj
YWxjX2Z1bmNfdGVybSB7Ci0gICAgICAgIGlmICgkMSAmJiAkMikgewotICAgICAgICAgICAgJCQg
PSAkMTsKLSAgICAgICAgICAgIENTU1BhcnNlclZhbHVlIHY7Ci0gICAgICAgICAgICB2LmlkID0g
MDsKLSAgICAgICAgICAgIHYudW5pdCA9IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvcjsKLSAgICAg
ICAgICAgIHYuaVZhbHVlID0gJDI7Ci0gICAgICAgICAgICAkJC0+YWRkVmFsdWUodik7Ci0gICAg
ICAgICAgICAkJC0+YWRkVmFsdWUocGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZSgkMykpOwotICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICQkID0gMDsKLQotICAgIH0KLSAgICB8IGNhbGNfZnVu
Y19leHByIGNhbGNfZnVuY19vcGVyYXRvciBjYWxjX2Z1bmNfcGFyZW5fZXhwciB7Ci0gICAgICAg
IGlmICgkMSAmJiAkMiAmJiAkMykgewotICAgICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgICAg
IENTU1BhcnNlclZhbHVlIHY7Ci0gICAgICAgICAgICB2LmlkID0gMDsKLSAgICAgICAgICAgIHYu
dW5pdCA9IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvcjsKLSAgICAgICAgICAgIHYuaVZhbHVlID0g
JDI7Ci0gICAgICAgICAgICAkJC0+YWRkVmFsdWUodik7Ci0gICAgICAgICAgICAkJC0+ZXh0ZW5k
KCooJDMpKTsKLSAgICAgICAgfSBlbHNlIAotICAgICAgICAgICAgJCQgPSAwOwotICAgIH0KLSAg
ICB8IGNhbGNfZnVuY19wYXJlbl9leHByCi0gICAgfCBjYWxjX2Z1bmNfZXhwciBlcnJvciB7Ci0g
ICAgICAgICQkID0gMDsKLSAgICB9Ci0gIDsKLQotY2FsY19mdW5jX2V4cHJfbGlzdDoKLSAgICBj
YWxjX2Z1bmNfZXhwciAgewotICAgICAgICAkJCA9ICQxOwotICAgIH0gICAgCi0gICAgfCBjYWxj
X2Z1bmNfZXhwcl9saXN0ICcsJyBtYXliZV9zcGFjZSBjYWxjX2Z1bmNfZXhwciB7Ci0gICAgICAg
IGlmICgkMSAmJiAkNCkgewotICAgICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgICAgIENTU1Bh
cnNlclZhbHVlIHY7Ci0gICAgICAgICAgICB2LmlkID0gMDsKLSAgICAgICAgICAgIHYudW5pdCA9
IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvcjsKLSAgICAgICAgICAgIHYuaVZhbHVlID0gJywnOwot
ICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHYpOwotICAgICAgICAgICAgJCQtPmV4dGVuZCgqKCQ0
KSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICAKLQot
Y2FsY19mdW5jdGlvbjoKLSAgICBDQUxDRlVOQ1RJT04gbWF5YmVfc3BhY2UgY2FsY19mdW5jX2V4
cHIgJyknIG1heWJlX3NwYWNlIHsKLSAgICAgICAgQ1NTUGFyc2VyRnVuY3Rpb24qIGYgPSBwYXJz
ZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsKLSAgICAgICAgZi0+bmFtZSA9ICQxOwotICAg
ICAgICBmLT5hcmdzID0gcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDMpOwotICAgICAg
ICAkJC5pZCA9IDA7Ci0gICAgICAgICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb247
Ci0gICAgICAgICQkLmZ1bmN0aW9uID0gZjsKLSAgICB9Ci0gICAgfCBDQUxDRlVOQ1RJT04gbWF5
YmVfc3BhY2UgZXJyb3IgewotICAgICAgICBZWUVSUk9SOwotICAgIH0KLSAgICA7Ci0KLQotbWlu
X29yX21heDoKLSAgICBNSU5GVU5DVElPTiB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAg
IHwgTUFYRlVOQ1RJT04gewotICAgICAgICAkJCA9ICQxOwotICAgIH0KLSAgICA7Ci0KLW1pbl9v
cl9tYXhfZnVuY3Rpb246Ci0gICAgbWluX29yX21heCBtYXliZV9zcGFjZSBjYWxjX2Z1bmNfZXhw
cl9saXN0ICcpJyBtYXliZV9zcGFjZSB7Ci0gICAgICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0g
cGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7Ci0gICAgICAgIGYtPm5hbWUgPSAkMTsK
LSAgICAgICAgZi0+YXJncyA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQzKTsKLSAg
ICAgICAgJCQuaWQgPSAwOwotICAgICAgICAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0
aW9uOwotICAgICAgICAkJC5mdW5jdGlvbiA9IGY7Ci0gICAgfSAKLSAgICB8IG1pbl9vcl9tYXgg
bWF5YmVfc3BhY2UgZXJyb3IgewotICAgICAgICBZWUVSUk9SOwotICAgIH0KLSAgICA7Ci0KLS8q
IGVycm9yIGhhbmRsaW5nIHJ1bGVzICovCi0KLXNhdmVfYmxvY2s6Ci0gICAgY2xvc2luZ19icmFj
ZSB7Ci0gICAgICAgICQkID0gMDsKLSAgICB9Ci0gIHwgZXJyb3IgY2xvc2luZ19icmFjZSB7Ci0g
ICAgICAgICQkID0gMDsKLSAgICB9Ci0gICAgOwotCi1pbnZhbGlkX2F0OgotICAgIEFUS0VZV09S
RCBlcnJvciBpbnZhbGlkX2Jsb2NrIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgfCBBVEtF
WVdPUkQgZXJyb3IgJzsnIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICA7Ci0KLWludmFs
aWRfcnVsZToKLSAgICBlcnJvciBpbnZhbGlkX2Jsb2NrIHsKLSAgICAgICAgJCQgPSAwOwotICAg
IH0KLQotLyoKLSAgU2VlbXMgbGlrZSB0aGUgdHdvIHJ1bGVzIGJlbG93IGFyZSB0cnlpbmcgdG9v
IG11Y2ggYW5kIHZpb2xhdGluZwotICBodHRwOi8vd3d3LmhpeGllLmNoL3Rlc3RzL2V2aWwvbWl4
ZWQvY3NzZXJyb3JoYW5kbGluZy5odG1sCi0KLSAgfCBlcnJvciAnOycgewotICAgICAgICAkJCA9
IDA7Ci0gICAgfQotICB8IGVycm9yICd9JyB7Ci0gICAgICAgICQkID0gMDsKLSAgICB9Ci0qLwot
ICAgIDsKLQotaW52YWxpZF9ibG9jazoKLSAgICAneycgZXJyb3IgaW52YWxpZF9ibG9ja19saXN0
IGVycm9yIGNsb3NpbmdfYnJhY2UgewotICAgICAgICBwYXJzZXItPmludmFsaWRCbG9ja0hpdCgp
OwotICAgIH0KLSAgfCAneycgZXJyb3IgY2xvc2luZ19icmFjZSB7Ci0gICAgICAgIHBhcnNlci0+
aW52YWxpZEJsb2NrSGl0KCk7Ci0gICAgfQotICAgIDsKLQotaW52YWxpZF9ibG9ja19saXN0Ogot
ICAgIGludmFsaWRfYmxvY2sKLSAgfCBpbnZhbGlkX2Jsb2NrX2xpc3QgZXJyb3IgaW52YWxpZF9i
bG9jawotOwotCi0lJQotCi0jaWYgWVlERUJVRyA+IDAKLXN0YXRpYyB2b2lkIHByaW50X3Rva2Vu
X3ZhbHVlKEZJTEUgKiB5eW91dHB1dCwgaW50IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAmeXl2YWx1
ZSkKLXsKLSAgICBzd2l0Y2ggKHl5dHlwZSkgewotICAgIGNhc2UgSURFTlQ6Ci0gICAgY2FzZSBT
VFJJTkc6Ci0gICAgY2FzZSBOVEg6Ci0gICAgY2FzZSBIRVg6Ci0gICAgY2FzZSBJRFNFTDoKLSAg
ICBjYXNlIERJTUVOOgotICAgIGNhc2UgSU5WQUxJRERJTUVOOgotICAgIGNhc2UgVVJJOgotICAg
IGNhc2UgRlVOQ1RJT046Ci0gICAgY2FzZSBBTllGVU5DVElPTjoKLSAgICBjYXNlIE5PVEZVTkNU
SU9OOgotICAgIGNhc2UgQ0FMQ0ZVTkNUSU9OOgotICAgIGNhc2UgTUlORlVOQ1RJT046Ci0gICAg
Y2FzZSBNQVhGVU5DVElPTjoKLSAgICBjYXNlIFZBUl9ERUZJTklUSU9OOgotICAgIGNhc2UgVU5J
Q09ERVJBTkdFOgotICAgICAgICBZWUZQUklOVEYoeXlvdXRwdXQsICIlcyIsIFN0cmluZyh5eXZh
bHVlLnN0cmluZykudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFy
LnkuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2UyZGJmMmY0ODI2NWYyZjViNjcyZjQyYTk5MTAzODE3Y2FkYjdm
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4K
QEAgLTAsMCArMSwxNjk3IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAwMi0yMDAzIExhcnMg
S25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29t
KQorICogIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisg
KiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9z
dG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKgorICovCisKKyVwdXJlX3BhcnNlcgorCislcGFy
c2UtcGFyYW0geyBDU1NQYXJzZXIqIHBhcnNlciB9CislbGV4LXBhcmFtIHsgQ1NTUGFyc2VyKiBw
YXJzZXIgfQorCisldW5pb24geworICAgIGJvb2wgYm9vbGVhbjsKKyAgICBjaGFyIGNoYXJhY3Rl
cjsKKyAgICBpbnQgaW50ZWdlcjsKKyAgICBkb3VibGUgbnVtYmVyOworICAgIENTU1BhcnNlclN0
cmluZyBzdHJpbmc7CisKKyAgICBTdHlsZVJ1bGVCYXNlKiBydWxlOworICAgIFZlY3RvcjxSZWZQ
dHI8U3R5bGVSdWxlQmFzZT4gPiogcnVsZUxpc3Q7CisgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIHNl
bGVjdG9yOworICAgIENTU1NlbGVjdG9yVmVjdG9yKiBzZWxlY3Rvckxpc3Q7CisgICAgQ1NTU2Vs
ZWN0b3I6Ok1hcmdpbkJveFR5cGUgbWFyZ2luQm94OworICAgIENTU1NlbGVjdG9yOjpSZWxhdGlv
biByZWxhdGlvbjsKKyAgICBNZWRpYVF1ZXJ5U2V0KiBtZWRpYUxpc3Q7CisgICAgTWVkaWFRdWVy
eSogbWVkaWFRdWVyeTsKKyAgICBNZWRpYVF1ZXJ5OjpSZXN0cmljdG9yIG1lZGlhUXVlcnlSZXN0
cmljdG9yOworICAgIE1lZGlhUXVlcnlFeHAqIG1lZGlhUXVlcnlFeHA7CisgICAgQ1NTUGFyc2Vy
VmFsdWUgdmFsdWU7CisgICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3Q7CisgICAgVmVj
dG9yPE93blB0cjxNZWRpYVF1ZXJ5RXhwPiA+KiBtZWRpYVF1ZXJ5RXhwTGlzdDsKKyAgICBTdHls
ZUtleWZyYW1lKiBrZXlmcmFtZTsKKyAgICBWZWN0b3I8UmVmUHRyPFN0eWxlS2V5ZnJhbWU+ID4q
IGtleWZyYW1lUnVsZUxpc3Q7CisgICAgZmxvYXQgdmFsOworICAgIENTU1Byb3BlcnR5SUQgaWQ7
Cit9CisKKyV7CisKK3N0YXRpYyBpbmxpbmUgaW50IGNzc3l5ZXJyb3Iodm9pZCosIGNvbnN0IGNo
YXIqKQoreworICAgIHJldHVybiAxOworfQorCislfQorCislZXhwZWN0IDYzCisKKyVub25hc3Nv
YyBMT1dFU1RfUFJFQworCislbGVmdCBVTklNUE9SVEFOVF9UT0sKKworJXRva2VuIFdISVRFU1BB
Q0UgU0dNTF9DRAorJXRva2VuIFRPS0VOX0VPRiAwCisKKyV0b2tlbiBJTkNMVURFUworJXRva2Vu
IERBU0hNQVRDSAorJXRva2VuIEJFR0lOU1dJVEgKKyV0b2tlbiBFTkRTV0lUSAorJXRva2VuIENP
TlRBSU5TCisKKyV0b2tlbiA8c3RyaW5nPiBTVFJJTkcKKyVyaWdodCA8c3RyaW5nPiBJREVOVAor
JXRva2VuIDxzdHJpbmc+IE5USAorCislbm9uYXNzb2MgPHN0cmluZz4gSEVYCislbm9uYXNzb2Mg
PHN0cmluZz4gSURTRUwKKyVub25hc3NvYyAnOicKKyVub25hc3NvYyAnLicKKyVub25hc3NvYyAn
WycKKyVub25hc3NvYyA8c3RyaW5nPiAnKicKKyVub25hc3NvYyBlcnJvcgorJWxlZnQgJ3wnCisK
KyV0b2tlbiBJTVBPUlRfU1lNCisldG9rZW4gUEFHRV9TWU0KKyV0b2tlbiBNRURJQV9TWU0KKyV0
b2tlbiBGT05UX0ZBQ0VfU1lNCisldG9rZW4gQ0hBUlNFVF9TWU0KKyV0b2tlbiBOQU1FU1BBQ0Vf
U1lNCisldG9rZW4gVkFSRlVOQ1RJT04KKyV0b2tlbiBXRUJLSVRfUlVMRV9TWU0KKyV0b2tlbiBX
RUJLSVRfREVDTFNfU1lNCisldG9rZW4gV0VCS0lUX0tFWUZSQU1FX1JVTEVfU1lNCisldG9rZW4g
V0VCS0lUX0tFWUZSQU1FU19TWU0KKyV0b2tlbiBXRUJLSVRfVkFMVUVfU1lNCisldG9rZW4gV0VC
S0lUX01FRElBUVVFUllfU1lNCisldG9rZW4gV0VCS0lUX1NFTEVDVE9SX1NZTQorJXRva2VuIFdF
QktJVF9SRUdJT05fUlVMRV9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBUT1BMRUZUQ09STkVSX1NZ
TQorJXRva2VuIDxtYXJnaW5Cb3g+IFRPUExFRlRfU1lNCisldG9rZW4gPG1hcmdpbkJveD4gVE9Q
Q0VOVEVSX1NZTQorJXRva2VuIDxtYXJnaW5Cb3g+IFRPUFJJR0hUX1NZTQorJXRva2VuIDxtYXJn
aW5Cb3g+IFRPUFJJR0hUQ09STkVSX1NZTQorJXRva2VuIDxtYXJnaW5Cb3g+IEJPVFRPTUxFRlRD
T1JORVJfU1lNCisldG9rZW4gPG1hcmdpbkJveD4gQk9UVE9NTEVGVF9TWU0KKyV0b2tlbiA8bWFy
Z2luQm94PiBCT1RUT01DRU5URVJfU1lNCisldG9rZW4gPG1hcmdpbkJveD4gQk9UVE9NUklHSFRf
U1lNCisldG9rZW4gPG1hcmdpbkJveD4gQk9UVE9NUklHSFRDT1JORVJfU1lNCisldG9rZW4gPG1h
cmdpbkJveD4gTEVGVFRPUF9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBMRUZUTUlERExFX1NZTQor
JXRva2VuIDxtYXJnaW5Cb3g+IExFRlRCT1RUT01fU1lNCisldG9rZW4gPG1hcmdpbkJveD4gUklH
SFRUT1BfU1lNCisldG9rZW4gPG1hcmdpbkJveD4gUklHSFRNSURETEVfU1lNCisldG9rZW4gPG1h
cmdpbkJveD4gUklHSFRCT1RUT01fU1lNCisKKyV0b2tlbiBBVEtFWVdPUkQKKworJXRva2VuIElN
UE9SVEFOVF9TWU0KKyV0b2tlbiBNRURJQV9PTkxZCisldG9rZW4gTUVESUFfTk9UCisldG9rZW4g
TUVESUFfQU5ECisKKyV0b2tlbiA8bnVtYmVyPiBSRU1TCisldG9rZW4gPG51bWJlcj4gUUVNUwor
JXRva2VuIDxudW1iZXI+IEVNUworJXRva2VuIDxudW1iZXI+IEVYUworJXRva2VuIDxudW1iZXI+
IFBYUworJXRva2VuIDxudW1iZXI+IENNUworJXRva2VuIDxudW1iZXI+IE1NUworJXRva2VuIDxu
dW1iZXI+IElOUworJXRva2VuIDxudW1iZXI+IFBUUworJXRva2VuIDxudW1iZXI+IFBDUworJXRv
a2VuIDxudW1iZXI+IERFR1MKKyV0b2tlbiA8bnVtYmVyPiBSQURTCisldG9rZW4gPG51bWJlcj4g
R1JBRFMKKyV0b2tlbiA8bnVtYmVyPiBUVVJOUworJXRva2VuIDxudW1iZXI+IE1TRUNTCisldG9r
ZW4gPG51bWJlcj4gU0VDUworJXRva2VuIDxudW1iZXI+IEhFUlRaCisldG9rZW4gPG51bWJlcj4g
S0hFUlRaCisldG9rZW4gPHN0cmluZz4gRElNRU4KKyV0b2tlbiA8c3RyaW5nPiBJTlZBTElERElN
RU4KKyV0b2tlbiA8bnVtYmVyPiBQRVJDRU5UQUdFCisldG9rZW4gPG51bWJlcj4gRkxPQVRUT0tF
TgorJXRva2VuIDxudW1iZXI+IElOVEVHRVIKKyV0b2tlbiA8bnVtYmVyPiBWVworJXRva2VuIDxu
dW1iZXI+IFZICisldG9rZW4gPG51bWJlcj4gVk1JTgorJXRva2VuIDxudW1iZXI+IERQUFgKKyV0
b2tlbiA8bnVtYmVyPiBEUEkKKyV0b2tlbiA8bnVtYmVyPiBEUENNCisKKyV0b2tlbiA8c3RyaW5n
PiBVUkkKKyV0b2tlbiA8c3RyaW5nPiBGVU5DVElPTgorJXRva2VuIDxzdHJpbmc+IEFOWUZVTkNU
SU9OCisldG9rZW4gPHN0cmluZz4gTk9URlVOQ1RJT04KKyV0b2tlbiA8c3RyaW5nPiBDQUxDRlVO
Q1RJT04KKyV0b2tlbiA8c3RyaW5nPiBNSU5GVU5DVElPTgorJXRva2VuIDxzdHJpbmc+IE1BWEZV
TkNUSU9OCisldG9rZW4gPHN0cmluZz4gVkFSX0RFRklOSVRJT04KKworJXRva2VuIDxzdHJpbmc+
IFVOSUNPREVSQU5HRQorCisldHlwZSA8cmVsYXRpb24+IGNvbWJpbmF0b3IKKworJXR5cGUgPHJ1
bGU+IGNoYXJzZXQKKyV0eXBlIDxydWxlPiBpZ25vcmVkX2NoYXJzZXQKKyV0eXBlIDxydWxlPiBy
dWxlc2V0CisldHlwZSA8cnVsZT4gbWVkaWEKKyV0eXBlIDxydWxlPiBpbXBvcnQKKyV0eXBlIDxy
dWxlPiBuYW1lc3BhY2UKKyV0eXBlIDxydWxlPiBwYWdlCisldHlwZSA8cnVsZT4gbWFyZ2luX2Jv
eAorJXR5cGUgPHJ1bGU+IGZvbnRfZmFjZQorJXR5cGUgPHJ1bGU+IGtleWZyYW1lcworJXR5cGUg
PHJ1bGU+IGludmFsaWRfcnVsZQorJXR5cGUgPHJ1bGU+IHNhdmVfYmxvY2sKKyV0eXBlIDxydWxl
PiBpbnZhbGlkX2F0CisldHlwZSA8cnVsZT4gcnVsZQorJXR5cGUgPHJ1bGU+IHZhbGlkX3J1bGUK
KyV0eXBlIDxydWxlTGlzdD4gYmxvY2tfcnVsZV9saXN0IAorJXR5cGUgPHJ1bGU+IGJsb2NrX3J1
bGUKKyV0eXBlIDxydWxlPiBibG9ja192YWxpZF9ydWxlCisldHlwZSA8cnVsZT4gcmVnaW9uCisK
KyV0eXBlIDxzdHJpbmc+IG1heWJlX25zX3ByZWZpeAorCisldHlwZSA8c3RyaW5nPiBuYW1lc3Bh
Y2Vfc2VsZWN0b3IKKworJXR5cGUgPHN0cmluZz4gc3RyaW5nX29yX3VyaQorJXR5cGUgPHN0cmlu
Zz4gaWRlbnRfb3Jfc3RyaW5nCisldHlwZSA8c3RyaW5nPiBtZWRpdW0KKyV0eXBlIDxtYXJnaW5C
b3g+IG1hcmdpbl9zeW0KKworJXR5cGUgPHN0cmluZz4gbWVkaWFfZmVhdHVyZQorJXR5cGUgPG1l
ZGlhTGlzdD4gbWVkaWFfbGlzdAorJXR5cGUgPG1lZGlhTGlzdD4gbWF5YmVfbWVkaWFfbGlzdAor
JXR5cGUgPG1lZGlhUXVlcnk+IG1lZGlhX3F1ZXJ5CisldHlwZSA8bWVkaWFRdWVyeVJlc3RyaWN0
b3I+IG1heWJlX21lZGlhX3Jlc3RyaWN0b3IKKyV0eXBlIDx2YWx1ZUxpc3Q+IG1heWJlX21lZGlh
X3ZhbHVlCisldHlwZSA8bWVkaWFRdWVyeUV4cD4gbWVkaWFfcXVlcnlfZXhwCisldHlwZSA8bWVk
aWFRdWVyeUV4cExpc3Q+IG1lZGlhX3F1ZXJ5X2V4cF9saXN0CisldHlwZSA8bWVkaWFRdWVyeUV4
cExpc3Q+IG1heWJlX2FuZF9tZWRpYV9xdWVyeV9leHBfbGlzdAorCisldHlwZSA8c3RyaW5nPiBr
ZXlmcmFtZV9uYW1lCisldHlwZSA8a2V5ZnJhbWU+IGtleWZyYW1lX3J1bGUKKyV0eXBlIDxrZXlm
cmFtZVJ1bGVMaXN0PiBrZXlmcmFtZXNfcnVsZQorJXR5cGUgPHZhbHVlTGlzdD4ga2V5X2xpc3QK
KyV0eXBlIDx2YWx1ZT4ga2V5CisKKyV0eXBlIDxpZD4gcHJvcGVydHkKKworJXR5cGUgPHNlbGVj
dG9yPiBzcGVjaWZpZXIKKyV0eXBlIDxzZWxlY3Rvcj4gc3BlY2lmaWVyX2xpc3QKKyV0eXBlIDxz
ZWxlY3Rvcj4gc2ltcGxlX3NlbGVjdG9yCisldHlwZSA8c2VsZWN0b3I+IHNlbGVjdG9yCisldHlw
ZSA8c2VsZWN0b3JMaXN0PiBzZWxlY3Rvcl9saXN0CisldHlwZSA8c2VsZWN0b3JMaXN0PiBzaW1w
bGVfc2VsZWN0b3JfbGlzdAorJXR5cGUgPHNlbGVjdG9yTGlzdD4gcmVnaW9uX3NlbGVjdG9yCisl
dHlwZSA8c2VsZWN0b3I+IHNlbGVjdG9yX3dpdGhfdHJhaWxpbmdfd2hpdGVzcGFjZQorJXR5cGUg
PHNlbGVjdG9yPiBjbGFzcworJXR5cGUgPHNlbGVjdG9yPiBhdHRyaWIKKyV0eXBlIDxzZWxlY3Rv
cj4gcHNldWRvCisldHlwZSA8c2VsZWN0b3I+IHBzZXVkb19wYWdlCisldHlwZSA8c2VsZWN0b3I+
IHBhZ2Vfc2VsZWN0b3IKKworJXR5cGUgPGJvb2xlYW4+IGRlY2xhcmF0aW9uX2xpc3QKKyV0eXBl
IDxib29sZWFuPiBkZWNsX2xpc3QKKyV0eXBlIDxib29sZWFuPiBkZWNsYXJhdGlvbgorJXR5cGUg
PGJvb2xlYW4+IGRlY2xhcmF0aW9uc19hbmRfbWFyZ2lucworCisldHlwZSA8Ym9vbGVhbj4gcHJp
bworCisldHlwZSA8aW50ZWdlcj4gbWF0Y2gKKyV0eXBlIDxpbnRlZ2VyPiB1bmFyeV9vcGVyYXRv
cgorJXR5cGUgPGludGVnZXI+IG1heWJlX3VuYXJ5X29wZXJhdG9yCisldHlwZSA8Y2hhcmFjdGVy
PiBvcGVyYXRvcgorCisldHlwZSA8dmFsdWVMaXN0PiBleHByCisldHlwZSA8dmFsdWU+IHRlcm0K
KyV0eXBlIDx2YWx1ZT4gdW5hcnlfdGVybQorJXR5cGUgPHZhbHVlPiBmdW5jdGlvbgorJXR5cGUg
PHZhbHVlPiBjYWxjX2Z1bmNfdGVybQorJXR5cGUgPGNoYXJhY3Rlcj4gY2FsY19mdW5jX29wZXJh
dG9yCisldHlwZSA8dmFsdWVMaXN0PiBjYWxjX2Z1bmNfZXhwcgorJXR5cGUgPHZhbHVlTGlzdD4g
Y2FsY19mdW5jX2V4cHJfbGlzdAorJXR5cGUgPHZhbHVlTGlzdD4gY2FsY19mdW5jX3BhcmVuX2V4
cHIKKyV0eXBlIDx2YWx1ZT4gY2FsY19mdW5jdGlvbgorJXR5cGUgPHN0cmluZz4gbWluX29yX21h
eAorJXR5cGUgPHZhbHVlPiBtaW5fb3JfbWF4X2Z1bmN0aW9uCisKKyV0eXBlIDxzdHJpbmc+IGVs
ZW1lbnRfbmFtZQorJXR5cGUgPHN0cmluZz4gYXR0cl9uYW1lCisKKyUlCisKK3N0eWxlc2hlZXQ6
CisgICAgbWF5YmVfc3BhY2UgbWF5YmVfY2hhcnNldCBtYXliZV9zZ21sIHJ1bGVfbGlzdAorICB8
IHdlYmtpdF9ydWxlIG1heWJlX3NwYWNlCisgIHwgd2Via2l0X2RlY2xzIG1heWJlX3NwYWNlCisg
IHwgd2Via2l0X3ZhbHVlIG1heWJlX3NwYWNlCisgIHwgd2Via2l0X21lZGlhcXVlcnkgbWF5YmVf
c3BhY2UKKyAgfCB3ZWJraXRfc2VsZWN0b3IgbWF5YmVfc3BhY2UKKyAgfCB3ZWJraXRfa2V5ZnJh
bWVfcnVsZSBtYXliZV9zcGFjZQorICA7CisKK3dlYmtpdF9ydWxlOgorICAgIFdFQktJVF9SVUxF
X1NZTSAneycgbWF5YmVfc3BhY2UgdmFsaWRfcnVsZSBtYXliZV9zcGFjZSAnfScgeworICAgICAg
ICBwYXJzZXItPm1fcnVsZSA9ICQ0OworICAgIH0KKzsKKword2Via2l0X2tleWZyYW1lX3J1bGU6
CisgICAgV0VCS0lUX0tFWUZSQU1FX1JVTEVfU1lNICd7JyBtYXliZV9zcGFjZSBrZXlmcmFtZV9y
dWxlIG1heWJlX3NwYWNlICd9JyB7CisgICAgICAgIHBhcnNlci0+bV9rZXlmcmFtZSA9ICQ0Owor
ICAgIH0KKzsKKword2Via2l0X2RlY2xzOgorICAgIFdFQktJVF9ERUNMU19TWU0gJ3snIG1heWJl
X3NwYWNlX2JlZm9yZV9kZWNsYXJhdGlvbiBkZWNsYXJhdGlvbl9saXN0ICd9JyB7CisgICAgICAg
IC8qIGNhbiBiZSBlbXB0eSAqLworICAgIH0KKzsKKword2Via2l0X3ZhbHVlOgorICAgIFdFQktJ
VF9WQUxVRV9TWU0gJ3snIG1heWJlX3NwYWNlIGV4cHIgJ30nIHsKKyAgICAgICAgaWYgKCQ0KSB7
CisgICAgICAgICAgICBwYXJzZXItPm1fdmFsdWVMaXN0ID0gcGFyc2VyLT5zaW5rRmxvYXRpbmdW
YWx1ZUxpc3QoJDQpOworICAgICAgICAgICAgaW50IG9sZFBhcnNlZFByb3BlcnRpZXMgPSBwYXJz
ZXItPm1fcGFyc2VkUHJvcGVydGllcy0+c2l6ZSgpOworICAgICAgICAgICAgaWYgKCFwYXJzZXIt
PnBhcnNlVmFsdWUocGFyc2VyLT5tX2lkLCBwYXJzZXItPm1faW1wb3J0YW50KSkKKyAgICAgICAg
ICAgICAgICBwYXJzZXItPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocGFyc2VyLT5tX3BhcnNlZFBy
b3BlcnRpZXMtPnNpemUoKSAtIG9sZFBhcnNlZFByb3BlcnRpZXMpOworICAgICAgICAgICAgcGFy
c2VyLT5tX3ZhbHVlTGlzdCA9IG51bGxwdHI7CisgICAgICAgIH0KKyAgICB9Cis7CisKK3dlYmtp
dF9tZWRpYXF1ZXJ5OgorICAgICBXRUJLSVRfTUVESUFRVUVSWV9TWU0gV0hJVEVTUEFDRSBtYXli
ZV9zcGFjZSBtZWRpYV9xdWVyeSAnfScgeworICAgICAgICAgcGFyc2VyLT5tX21lZGlhUXVlcnkg
PSBwYXJzZXItPnNpbmtGbG9hdGluZ01lZGlhUXVlcnkoJDQpOworICAgICB9Cis7CisKK3dlYmtp
dF9zZWxlY3RvcjoKKyAgICBXRUJLSVRfU0VMRUNUT1JfU1lNICd7JyBtYXliZV9zcGFjZSBzZWxl
Y3Rvcl9saXN0ICd9JyB7CisgICAgICAgIGlmICgkNCkgeworICAgICAgICAgICAgaWYgKHBhcnNl
ci0+bV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNlbGVjdG9yKQorICAgICAgICAgICAgICAgIHBhcnNl
ci0+bV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNlbGVjdG9yLT5hZG9wdFNlbGVjdG9yVmVjdG9yKCok
NCk7CisgICAgICAgIH0KKyAgICB9Cis7CisKK21heWJlX3NwYWNlOgorICAgIC8qIGVtcHR5ICov
ICVwcmVjIFVOSU1QT1JUQU5UX1RPSworICB8IG1heWJlX3NwYWNlIFdISVRFU1BBQ0UKKyAgOwor
CittYXliZV9zZ21sOgorICAgIC8qIGVtcHR5ICovCisgIHwgbWF5YmVfc2dtbCBTR01MX0NECisg
IHwgbWF5YmVfc2dtbCBXSElURVNQQUNFCisgIDsKKworbWF5YmVfY2hhcnNldDoKKyAgIC8qIGVt
cHR5ICovCisgIHwgY2hhcnNldCB7CisgIH0KKyAgOworCitjbG9zaW5nX2JyYWNlOgorICAgICd9
JworICB8ICVwcmVjIExPV0VTVF9QUkVDIFRPS0VOX0VPRgorICA7CisKK2NoYXJzZXQ6CisgIENI
QVJTRVRfU1lNIG1heWJlX3NwYWNlIFNUUklORyBtYXliZV9zcGFjZSAnOycgeworICAgICBpZiAo
cGFyc2VyLT5tX3N0eWxlU2hlZXQpCisgICAgICAgICBwYXJzZXItPm1fc3R5bGVTaGVldC0+cGFy
c2VyU2V0RW5jb2RpbmdGcm9tQ2hhcnNldFJ1bGUoJDMpOworICAgICBpZiAocGFyc2VyLT5pc0V4
dHJhY3RpbmdTb3VyY2VEYXRhKCkgJiYgcGFyc2VyLT5tX2N1cnJlbnRSdWxlRGF0YVN0YWNrLT5p
c0VtcHR5KCkgJiYgcGFyc2VyLT5tX3J1bGVTb3VyY2VEYXRhUmVzdWx0KQorICAgICAgICAgcGFy
c2VyLT5hZGROZXdSdWxlVG9Tb3VyY2VUcmVlKENTU1J1bGVTb3VyY2VEYXRhOjpjcmVhdGVVbmtu
b3duKCkpOworICAgICAkJCA9IDA7CisgIH0KKyAgfCBDSEFSU0VUX1NZTSBlcnJvciBpbnZhbGlk
X2Jsb2NrIHsKKyAgfQorICB8IENIQVJTRVRfU1lNIGVycm9yICc7JyB7CisgIH0KKzsKKworaWdu
b3JlZF9jaGFyc2V0OgorICAgIENIQVJTRVRfU1lNIG1heWJlX3NwYWNlIFNUUklORyBtYXliZV9z
cGFjZSAnOycgeworICAgICAgICAvLyBJZ25vcmUgYW55IEBjaGFyc2V0IHJ1bGUgbm90IGF0IHRo
ZSBiZWdpbm5pbmcgb2YgdGhlIHN0eWxlIHNoZWV0LgorICAgICAgICAkJCA9IDA7CisgICAgfQor
ICAgIHwgQ0hBUlNFVF9TWU0gbWF5YmVfc3BhY2UgJzsnIHsKKyAgICAgICAgJCQgPSAwOworICAg
IH0KKzsKKworcnVsZV9saXN0OgorICAgLyogZW1wdHkgKi8KKyB8IHJ1bGVfbGlzdCBydWxlIG1h
eWJlX3NnbWwgeworICAgICBpZiAoJDIgJiYgcGFyc2VyLT5tX3N0eWxlU2hlZXQpCisgICAgICAg
ICBwYXJzZXItPm1fc3R5bGVTaGVldC0+cGFyc2VyQXBwZW5kUnVsZSgkMik7CisgfQorIDsKKwor
dmFsaWRfcnVsZToKKyAgICBydWxlc2V0CisgIHwgbWVkaWEKKyAgfCBwYWdlCisgIHwgZm9udF9m
YWNlCisgIHwga2V5ZnJhbWVzCisgIHwgbmFtZXNwYWNlCisgIHwgaW1wb3J0CisgIHwgcmVnaW9u
CisgIDsKKworcnVsZToKKyAgICB2YWxpZF9ydWxlIHsKKyAgICAgICAgcGFyc2VyLT5tX2hhZFN5
bnRhY3RpY2FsbHlWYWxpZENTU1J1bGUgPSB0cnVlOworICAgIH0KKyAgfCBpZ25vcmVkX2NoYXJz
ZXQKKyAgfCBpbnZhbGlkX3J1bGUKKyAgfCBpbnZhbGlkX2F0CisgIDsKKworYmxvY2tfcnVsZV9s
aXN0OiAKKyAgICAvKiBlbXB0eSAqLyB7ICQkID0gMDsgfQorICB8IGJsb2NrX3J1bGVfbGlzdCBi
bG9ja19ydWxlIG1heWJlX3NnbWwgeworICAgICAgJCQgPSAkMTsKKyAgICAgIGlmICgkMikgewor
ICAgICAgICAgIGlmICghJCQpCisgICAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVSdWxl
TGlzdCgpOworICAgICAgICAgICQkLT5hcHBlbmQoJDIpOworICAgICAgfQorICB9CisgIDsKKwor
YmxvY2tfdmFsaWRfcnVsZToKKyAgICBydWxlc2V0CisgIHwgcGFnZQorICB8IGZvbnRfZmFjZQor
ICB8IGtleWZyYW1lcworICA7CisKK2Jsb2NrX3J1bGU6CisgICAgYmxvY2tfdmFsaWRfcnVsZQor
ICB8IGludmFsaWRfcnVsZQorICB8IGludmFsaWRfYXQKKyAgfCBuYW1lc3BhY2UKKyAgfCBpbXBv
cnQKKyAgfCBtZWRpYQorICA7CisKK2F0X2ltcG9ydF9oZWFkZXJfZW5kX21heWJlX3NwYWNlOgor
ICAgIG1heWJlX3NwYWNlIHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlckVuZCgpOwor
ICAgICAgICBwYXJzZXItPm1hcmtSdWxlQm9keVN0YXJ0KCk7CisgICAgfQorICAgIDsKKworYmVm
b3JlX2ltcG9ydF9ydWxlOgorICAgIC8qIGVtcHR5ICovIHsKKyAgICAgICAgcGFyc2VyLT5tYXJr
UnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRhOjpJTVBPUlRfUlVMRSk7CisgICAgfQor
ICAgIDsKKworaW1wb3J0OgorICAgIGJlZm9yZV9pbXBvcnRfcnVsZSBJTVBPUlRfU1lNIGF0X2lt
cG9ydF9oZWFkZXJfZW5kX21heWJlX3NwYWNlIHN0cmluZ19vcl91cmkgbWF5YmVfc3BhY2UgbWF5
YmVfbWVkaWFfbGlzdCAnOycgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlSW1wb3J0UnVs
ZSgkNCwgJDYpOworICAgIH0KKyAgfCBiZWZvcmVfaW1wb3J0X3J1bGUgSU1QT1JUX1NZTSBhdF9p
bXBvcnRfaGVhZGVyX2VuZF9tYXliZV9zcGFjZSBzdHJpbmdfb3JfdXJpIG1heWJlX3NwYWNlIG1h
eWJlX21lZGlhX2xpc3QgVE9LRU5fRU9GIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUlt
cG9ydFJ1bGUoJDQsICQ2KTsKKyAgICB9CisgIHwgYmVmb3JlX2ltcG9ydF9ydWxlIElNUE9SVF9T
WU0gYXRfaW1wb3J0X2hlYWRlcl9lbmRfbWF5YmVfc3BhY2Ugc3RyaW5nX29yX3VyaSBtYXliZV9z
cGFjZSBtYXliZV9tZWRpYV9saXN0IGludmFsaWRfYmxvY2sgeworICAgICAgICAkJCA9IDA7Cisg
ICAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKKyAgICB9CisgIHwgYmVmb3JlX2ltcG9ydF9y
dWxlIElNUE9SVF9TWU0gZXJyb3IgJzsnIHsKKyAgICAgICAgJCQgPSAwOworICAgICAgICBwYXJz
ZXItPnBvcFJ1bGVEYXRhKCk7CisgICAgfQorICB8IGJlZm9yZV9pbXBvcnRfcnVsZSBJTVBPUlRf
U1lNIGVycm9yIGludmFsaWRfYmxvY2sgeworICAgICAgICAkJCA9IDA7CisgICAgICAgIHBhcnNl
ci0+cG9wUnVsZURhdGEoKTsKKyAgICB9CisgIDsKKworbmFtZXNwYWNlOgorTkFNRVNQQUNFX1NZ
TSBtYXliZV9zcGFjZSBtYXliZV9uc19wcmVmaXggc3RyaW5nX29yX3VyaSBtYXliZV9zcGFjZSAn
OycgeworICAgIHBhcnNlci0+YWRkTmFtZXNwYWNlKCQzLCAkNCk7CisgICAgJCQgPSAwOworfQor
fCBOQU1FU1BBQ0VfU1lNIG1heWJlX3NwYWNlIG1heWJlX25zX3ByZWZpeCBzdHJpbmdfb3JfdXJp
IG1heWJlX3NwYWNlIGludmFsaWRfYmxvY2sgeworICAgICQkID0gMDsKK30KK3wgTkFNRVNQQUNF
X1NZTSBlcnJvciBpbnZhbGlkX2Jsb2NrIHsKKyAgICAkJCA9IDA7Cit9Cit8IE5BTUVTUEFDRV9T
WU0gZXJyb3IgJzsnIHsKKyAgICAkJCA9IDA7Cit9Cis7CisKK21heWJlX25zX3ByZWZpeDoKKy8q
IGVtcHR5ICovIHsgJCQuY2xlYXIoKTsgfQorfCBJREVOVCBtYXliZV9zcGFjZSB7ICQkID0gJDE7
IH0KKzsKKworc3RyaW5nX29yX3VyaToKK1NUUklORworfCBVUkkKKzsKKworbWVkaWFfZmVhdHVy
ZToKKyAgICBJREVOVCBtYXliZV9zcGFjZSB7CisgICAgICAgICQkID0gJDE7CisgICAgfQorICAg
IDsKKworbWF5YmVfbWVkaWFfdmFsdWU6CisgICAgLyplbXB0eSovIHsKKyAgICAgICAgJCQgPSAw
OworICAgIH0KKyAgICB8ICc6JyBtYXliZV9zcGFjZSBleHByIG1heWJlX3NwYWNlIHsKKyAgICAg
ICAgJCQgPSAkMzsKKyAgICB9CisgICAgOworCittZWRpYV9xdWVyeV9leHA6CisgICAgJygnIG1h
eWJlX3NwYWNlIG1lZGlhX2ZlYXR1cmUgbWF5YmVfc3BhY2UgbWF5YmVfbWVkaWFfdmFsdWUgJykn
IG1heWJlX3NwYWNlIHsKKyAgICAgICAgJDMubG93ZXIoKTsKKyAgICAgICAgJCQgPSBwYXJzZXIt
PmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeUV4cCgkMywgJDUpOworICAgIH0KKyAgICA7CisKK21l
ZGlhX3F1ZXJ5X2V4cF9saXN0OgorICAgIG1lZGlhX3F1ZXJ5X2V4cCB7CisgICAgICAgICQkID0g
cGFyc2VyLT5jcmVhdGVGbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KCk7CisgICAgICAgICQkLT5h
cHBlbmQocGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwKCQxKSk7CisgICAgfQorICAg
IHwgbWVkaWFfcXVlcnlfZXhwX2xpc3QgbWF5YmVfc3BhY2UgTUVESUFfQU5EIG1heWJlX3NwYWNl
IG1lZGlhX3F1ZXJ5X2V4cCB7CisgICAgICAgICQkID0gJDE7CisgICAgICAgICQkLT5hcHBlbmQo
cGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwKCQ1KSk7CisgICAgfQorICAgIDsKKwor
bWF5YmVfYW5kX21lZGlhX3F1ZXJ5X2V4cF9saXN0OgorICAgIC8qZW1wdHkqLyB7CisgICAgICAg
ICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KCk7CisgICAgfQor
ICAgIHwgTUVESUFfQU5EIG1heWJlX3NwYWNlIG1lZGlhX3F1ZXJ5X2V4cF9saXN0IHsKKyAgICAg
ICAgJCQgPSAkMzsKKyAgICB9CisgICAgOworCittYXliZV9tZWRpYV9yZXN0cmljdG9yOgorICAg
IC8qZW1wdHkqLyB7CisgICAgICAgICQkID0gTWVkaWFRdWVyeTo6Tm9uZTsKKyAgICB9CisgICAg
fCBNRURJQV9PTkxZIHsKKyAgICAgICAgJCQgPSBNZWRpYVF1ZXJ5OjpPbmx5OworICAgIH0KKyAg
ICB8IE1FRElBX05PVCB7CisgICAgICAgICQkID0gTWVkaWFRdWVyeTo6Tm90OworICAgIH0KKyAg
ICA7CisKK21lZGlhX3F1ZXJ5OgorICAgIG1lZGlhX3F1ZXJ5X2V4cF9saXN0IHsKKyAgICAgICAg
JCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeShwYXJzZXItPnNpbmtGbG9hdGlu
Z01lZGlhUXVlcnlFeHBMaXN0KCQxKSk7CisgICAgfQorICAgIHwKKyAgICBtYXliZV9tZWRpYV9y
ZXN0cmljdG9yIG1heWJlX3NwYWNlIG1lZGl1bSBtYXliZV9hbmRfbWVkaWFfcXVlcnlfZXhwX2xp
c3QgeworICAgICAgICAkMy5sb3dlcigpOworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxv
YXRpbmdNZWRpYVF1ZXJ5KCQxLCAkMywgcGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5RXhw
TGlzdCgkNCkpOworICAgIH0KKyAgICA7CisKK21heWJlX21lZGlhX2xpc3Q6CisgICAgIC8qIGVt
cHR5ICovIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZU1lZGlhUXVlcnlTZXQoKTsKKyAg
ICAgfQorICAgICB8IG1lZGlhX2xpc3QKKyAgICAgOworCittZWRpYV9saXN0OgorICAgIG1lZGlh
X3F1ZXJ5IHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZU1lZGlhUXVlcnlTZXQoKTsKKyAg
ICAgICAgJCQtPmFkZE1lZGlhUXVlcnkocGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5KCQx
KSk7CisgICAgICAgIHBhcnNlci0+dXBkYXRlTGFzdE1lZGlhTGluZSgkJCk7CisgICAgfQorICAg
IHwgbWVkaWFfbGlzdCAnLCcgbWF5YmVfc3BhY2UgbWVkaWFfcXVlcnkgeworICAgICAgICAkJCA9
ICQxOworICAgICAgICBpZiAoJCQpIHsKKyAgICAgICAgICAgICQkLT5hZGRNZWRpYVF1ZXJ5KHBh
cnNlci0+c2lua0Zsb2F0aW5nTWVkaWFRdWVyeSgkNCkpOworICAgICAgICAgICAgcGFyc2VyLT51
cGRhdGVMYXN0TWVkaWFMaW5lKCQkKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB8IG1lZGlhX2xp
c3QgZXJyb3IgeworICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIDsKKworYXRfcnVsZV9ib2R5
X3N0YXJ0OgorICAgIC8qIGVtcHR5ICovIHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUJvZHlT
dGFydCgpOworICAgIH0KKyAgICA7CisKK2JlZm9yZV9tZWRpYV9ydWxlOgorICAgIC8qIGVtcHR5
ICovIHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VE
YXRhOjpNRURJQV9SVUxFKTsKKyAgICB9CisgICAgOworCithdF9ydWxlX2hlYWRlcl9lbmRfbWF5
YmVfc3BhY2U6CisgICAgbWF5YmVfc3BhY2UgeworICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVh
ZGVyRW5kKCk7CisgICAgfQorICAgIDsKKworbWVkaWE6CisgICAgYmVmb3JlX21lZGlhX3J1bGUg
TUVESUFfU1lNIG1heWJlX3NwYWNlIG1lZGlhX2xpc3QgYXRfcnVsZV9oZWFkZXJfZW5kICd7JyBh
dF9ydWxlX2JvZHlfc3RhcnQgbWF5YmVfc3BhY2UgYmxvY2tfcnVsZV9saXN0IHNhdmVfYmxvY2sg
eworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlTWVkaWFSdWxlKCQ0LCAkOSk7CisgICAgfQor
ICAgIHwgYmVmb3JlX21lZGlhX3J1bGUgTUVESUFfU1lNIGF0X3J1bGVfaGVhZGVyX2VuZF9tYXli
ZV9zcGFjZSAneycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1heWJlX3NwYWNlIGJsb2NrX3J1bGVfbGlz
dCBzYXZlX2Jsb2NrIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZU1lZGlhUnVsZSgwLCAk
Nyk7CisgICAgfQorICAgIHwgYmVmb3JlX21lZGlhX3J1bGUgTUVESUFfU1lNIGF0X3J1bGVfaGVh
ZGVyX2VuZF9tYXliZV9zcGFjZSAnOycgeworICAgICAgICAkJCA9IDA7CisgICAgICAgIHBhcnNl
ci0+cG9wUnVsZURhdGEoKTsKKyAgICB9CisgICAgOworCittZWRpdW06CisgIElERU5UIG1heWJl
X3NwYWNlIHsKKyAgICAgICQkID0gJDE7CisgIH0KKyAgOworCitiZWZvcmVfa2V5ZnJhbWVzX3J1
bGU6CisgICAgLyogZW1wdHkgKi8geworICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3Rh
cnQoQ1NTUnVsZVNvdXJjZURhdGE6OktFWUZSQU1FU19SVUxFKTsKKyAgICB9CisgICAgOworCitr
ZXlmcmFtZXM6CisgICAgYmVmb3JlX2tleWZyYW1lc19ydWxlIFdFQktJVF9LRVlGUkFNRVNfU1lN
IG1heWJlX3NwYWNlIGtleWZyYW1lX25hbWUgYXRfcnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNl
ICd7JyBhdF9ydWxlX2JvZHlfc3RhcnQgbWF5YmVfc3BhY2Uga2V5ZnJhbWVzX3J1bGUgY2xvc2lu
Z19icmFjZSB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVLZXlmcmFtZXNSdWxlKCQ0LCBw
YXJzZXItPnNpbmtGbG9hdGluZ0tleWZyYW1lVmVjdG9yKCQ5KSk7CisgICAgfQorICAgIDsKKyAg
CitrZXlmcmFtZV9uYW1lOgorICAgIElERU5UCisgICAgfCBTVFJJTkcKKyAgICA7CisKK2tleWZy
YW1lc19ydWxlOgorICAgIC8qIGVtcHR5ICovIHsgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5n
S2V5ZnJhbWVWZWN0b3IoKTsgfQorICAgIHwga2V5ZnJhbWVzX3J1bGUga2V5ZnJhbWVfcnVsZSBt
YXliZV9zcGFjZSB7CisgICAgICAgICQkID0gJDE7CisgICAgICAgIGlmICgkMikKKyAgICAgICAg
ICAgICQkLT5hcHBlbmQoJDIpOworICAgIH0KKyAgICA7CisKK2tleWZyYW1lX3J1bGU6CisgICAg
a2V5X2xpc3QgbWF5YmVfc3BhY2UgJ3snIG1heWJlX3NwYWNlIGRlY2xhcmF0aW9uX2xpc3QgJ30n
IHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUtleWZyYW1lKCQxKTsKKyAgICB9CisgICAg
OworCitrZXlfbGlzdDoKKyAgICBrZXkgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxv
YXRpbmdWYWx1ZUxpc3QoKTsKKyAgICAgICAgJCQtPmFkZFZhbHVlKHBhcnNlci0+c2lua0Zsb2F0
aW5nVmFsdWUoJDEpKTsKKyAgICB9CisgICAgfCBrZXlfbGlzdCBtYXliZV9zcGFjZSAnLCcgbWF5
YmVfc3BhY2Uga2V5IHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgaWYgKCQkKQorICAgICAg
ICAgICAgJCQtPmFkZFZhbHVlKHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWUoJDUpKTsKKyAgICB9
CisgICAgOworCitrZXk6CisgICAgbWF5YmVfdW5hcnlfb3BlcmF0b3IgUEVSQ0VOVEFHRSB7ICQk
LmlkID0gMDsgJCQuaXNJbnQgPSBmYWxzZTsgJCQuZlZhbHVlID0gJDEgKiAkMjsgJCQudW5pdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOyB9CisgICAgfCBJREVOVCB7CisgICAgICAg
ICQkLmlkID0gMDsgJCQuaXNJbnQgPSBmYWxzZTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfTlVNQkVSOworICAgICAgICBDU1NQYXJzZXJTdHJpbmcmIHN0ciA9ICQxOworICAgICAg
ICBpZiAoc3RyLmVxdWFsSWdub3JpbmdDYXNlKCJmcm9tIikpCisgICAgICAgICAgICAkJC5mVmFs
dWUgPSAwOworICAgICAgICBlbHNlIGlmIChzdHIuZXF1YWxJZ25vcmluZ0Nhc2UoInRvIikpCisg
ICAgICAgICAgICAkJC5mVmFsdWUgPSAxMDA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFlZ
RVJST1I7CisgICAgfQorICAgIDsKKworYmVmb3JlX3BhZ2VfcnVsZToKKyAgICAvKiBlbXB0eSAq
LyB7CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0
YTo6UEFHRV9SVUxFKTsKKyAgICB9CisgICAgOworCitwYWdlOgorICAgIGJlZm9yZV9wYWdlX3J1
bGUgUEFHRV9TWU0gbWF5YmVfc3BhY2UgcGFnZV9zZWxlY3RvciBhdF9ydWxlX2hlYWRlcl9lbmRf
bWF5YmVfc3BhY2UKKyAgICAneycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1heWJlX3NwYWNlX2JlZm9y
ZV9kZWNsYXJhdGlvbiBkZWNsYXJhdGlvbnNfYW5kX21hcmdpbnMgY2xvc2luZ19icmFjZSB7Cisg
ICAgICAgIGlmICgkNCkKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVQYWdlUnVsZShw
YXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQ0KSk7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgLy8gQ2xlYXIgcHJvcGVydGllcyBpbiB0aGUgaW52YWxpZCBAcGFnZSBydWxlLgorICAg
ICAgICAgICAgcGFyc2VyLT5jbGVhclByb3BlcnRpZXMoKTsKKyAgICAgICAgICAgIC8vIEFsc28g
Y2xlYXIgbWFyZ2luIGF0LXJ1bGVzIGhlcmUgb25jZSB3ZSBmdWxseSBpbXBsZW1lbnQgbWFyZ2lu
IGF0LXJ1bGVzIHBhcnNpbmcuCisgICAgICAgICAgICAkJCA9IDA7CisgICAgICAgICAgICBwYXJz
ZXItPnBvcFJ1bGVEYXRhKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgfCBiZWZvcmVfcGFnZV9y
dWxlIFBBR0VfU1lNIGVycm9yIGludmFsaWRfYmxvY2sgeworICAgICAgcGFyc2VyLT5wb3BSdWxl
RGF0YSgpOworICAgICAgJCQgPSAwOworICAgIH0KKyAgICB8IGJlZm9yZV9wYWdlX3J1bGUgUEFH
RV9TWU0gZXJyb3IgJzsnIHsKKyAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKKyAgICAgICQk
ID0gMDsKKyAgICB9CisgICAgOworCitwYWdlX3NlbGVjdG9yOgorICAgIElERU5UIHsKKyAgICAg
ICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNl
dFRhZyhRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMSwgcGFyc2VyLT5tX2RlZmF1bHROYW1lc3Bh
Y2UpKTsKKyAgICAgICAgJCQtPnNldEZvclBhZ2UoKTsKKyAgICB9CisgICAgfCBJREVOVCBwc2V1
ZG9fcGFnZSB7CisgICAgICAgICQkID0gJDI7CisgICAgICAgIGlmICgkJCkgeworICAgICAgICAg
ICAgJCQtPnNldFRhZyhRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMSwgcGFyc2VyLT5tX2RlZmF1
bHROYW1lc3BhY2UpKTsKKyAgICAgICAgICAgICQkLT5zZXRGb3JQYWdlKCk7CisgICAgICAgIH0K
KyAgICB9CisgICAgfCBwc2V1ZG9fcGFnZSB7CisgICAgICAgICQkID0gJDE7CisgICAgICAgIGlm
ICgkJCkKKyAgICAgICAgICAgICQkLT5zZXRGb3JQYWdlKCk7CisgICAgfQorICAgIHwgLyogZW1w
dHkgKi8geworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwor
ICAgICAgICAkJC0+c2V0Rm9yUGFnZSgpOworICAgIH0KKyAgICA7CisKK2RlY2xhcmF0aW9uc19h
bmRfbWFyZ2luczoKKyAgICBkZWNsYXJhdGlvbl9saXN0CisgICAgfCBkZWNsYXJhdGlvbnNfYW5k
X21hcmdpbnMgbWFyZ2luX2JveCBtYXliZV9zcGFjZSBkZWNsYXJhdGlvbl9saXN0CisgICAgOwor
CittYXJnaW5fYm94OgorICAgIG1hcmdpbl9zeW0geworICAgICAgICBwYXJzZXItPnN0YXJ0RGVj
bGFyYXRpb25zRm9yTWFyZ2luQm94KCk7CisgICAgfSBtYXliZV9zcGFjZSAneycgbWF5YmVfc3Bh
Y2UgZGVjbGFyYXRpb25fbGlzdCBjbG9zaW5nX2JyYWNlIHsKKyAgICAgICAgJCQgPSBwYXJzZXIt
PmNyZWF0ZU1hcmdpbkF0UnVsZSgkMSk7CisgICAgfQorICAgIDsKKworbWFyZ2luX3N5bSA6Cisg
ICAgVE9QTEVGVENPUk5FUl9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpUb3BMZWZ0
Q29ybmVyTWFyZ2luQm94OworICAgIH0KKyAgICB8IFRPUExFRlRfU1lNIHsKKyAgICAgICAgJCQg
PSBDU1NTZWxlY3Rvcjo6VG9wTGVmdE1hcmdpbkJveDsKKyAgICB9CisgICAgfCBUT1BDRU5URVJf
U1lNIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6VG9wQ2VudGVyTWFyZ2luQm94OworICAg
IH0KKyAgICB8IFRPUFJJR0hUX1NZTSB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OlRvcFJp
Z2h0TWFyZ2luQm94OworICAgIH0KKyAgICB8IFRPUFJJR0hUQ09STkVSX1NZTSB7CisgICAgICAg
ICQkID0gQ1NTU2VsZWN0b3I6OlRvcFJpZ2h0Q29ybmVyTWFyZ2luQm94OworICAgIH0KKyAgICB8
IEJPVFRPTUxFRlRDT1JORVJfU1lNIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6Qm90dG9t
TGVmdENvcm5lck1hcmdpbkJveDsKKyAgICB9CisgICAgfCBCT1RUT01MRUZUX1NZTSB7CisgICAg
ICAgICQkID0gQ1NTU2VsZWN0b3I6OkJvdHRvbUxlZnRNYXJnaW5Cb3g7CisgICAgfQorICAgIHwg
Qk9UVE9NQ0VOVEVSX1NZTSB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkJvdHRvbUNlbnRl
ck1hcmdpbkJveDsKKyAgICB9CisgICAgfCBCT1RUT01SSUdIVF9TWU0geworICAgICAgICAkJCA9
IENTU1NlbGVjdG9yOjpCb3R0b21SaWdodE1hcmdpbkJveDsKKyAgICB9CisgICAgfCBCT1RUT01S
SUdIVENPUk5FUl9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpCb3R0b21SaWdodENv
cm5lck1hcmdpbkJveDsKKyAgICB9CisgICAgfCBMRUZUVE9QX1NZTSB7CisgICAgICAgICQkID0g
Q1NTU2VsZWN0b3I6OkxlZnRUb3BNYXJnaW5Cb3g7CisgICAgfQorICAgIHwgTEVGVE1JRERMRV9T
WU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpMZWZ0TWlkZGxlTWFyZ2luQm94OworICAg
IH0KKyAgICB8IExFRlRCT1RUT01fU1lNIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6TGVm
dEJvdHRvbU1hcmdpbkJveDsKKyAgICB9CisgICAgfCBSSUdIVFRPUF9TWU0geworICAgICAgICAk
JCA9IENTU1NlbGVjdG9yOjpSaWdodFRvcE1hcmdpbkJveDsKKyAgICB9CisgICAgfCBSSUdIVE1J
RERMRV9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpSaWdodE1pZGRsZU1hcmdpbkJv
eDsKKyAgICB9CisgICAgfCBSSUdIVEJPVFRPTV9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVj
dG9yOjpSaWdodEJvdHRvbU1hcmdpbkJveDsKKyAgICB9CisgICAgOworCitiZWZvcmVfZm9udF9m
YWNlX3J1bGU6CisgICAgLyogZW1wdHkgKi8geworICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVh
ZGVyU3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6OkZPTlRfRkFDRV9SVUxFKTsKKyAgICB9CisgICAg
OworCitmb250X2ZhY2U6CisgICAgYmVmb3JlX2ZvbnRfZmFjZV9ydWxlIEZPTlRfRkFDRV9TWU0g
YXRfcnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlCisgICAgJ3snIGF0X3J1bGVfYm9keV9zdGFy
dCBtYXliZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRpb24gZGVjbGFyYXRpb25fbGlzdCBjbG9zaW5n
X2JyYWNlIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZvbnRGYWNlUnVsZSgpOworICAg
IH0KKyAgICB8IGJlZm9yZV9mb250X2ZhY2VfcnVsZSBGT05UX0ZBQ0VfU1lNIGVycm9yIGludmFs
aWRfYmxvY2sgeworICAgICAgJCQgPSAwOworICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOwor
ICAgIH0KKyAgICB8IGJlZm9yZV9mb250X2ZhY2VfcnVsZSBGT05UX0ZBQ0VfU1lNIGVycm9yICc7
JyB7CisgICAgICAkJCA9IDA7CisgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7CisgICAgfQor
OworCityZWdpb25fc2VsZWN0b3I6CisgICAgc2VsZWN0b3JfbGlzdCB7CisgICAgICAgIGlmICgk
MSkgeworICAgICAgICAgICAgcGFyc2VyLT5zZXRSZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9y
KCQxKTsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5yZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVj
dG9yKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgJCQgPSAwOworICAg
IH0KKzsKKworYmVmb3JlX3JlZ2lvbl9ydWxlOgorICAgIC8qIGVtcHR5ICovIHsKKyAgICAgICAg
cGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRhOjpSRUdJT05fUlVM
RSk7CisgICAgfQorICAgIDsKKworcmVnaW9uOgorICAgIGJlZm9yZV9yZWdpb25fcnVsZSBXRUJL
SVRfUkVHSU9OX1JVTEVfU1lNIFdISVRFU1BBQ0UgcmVnaW9uX3NlbGVjdG9yIGF0X3J1bGVfaGVh
ZGVyX2VuZCAneycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1heWJlX3NwYWNlIGJsb2NrX3J1bGVfbGlz
dCBzYXZlX2Jsb2NrIHsKKyAgICAgICAgaWYgKCQ0KQorICAgICAgICAgICAgJCQgPSBwYXJzZXIt
PmNyZWF0ZVJlZ2lvblJ1bGUoJDQsICQ5KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAk
JCA9IDA7CisgICAgICAgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7CisgICAgICAgIH0KKyAg
ICB9Cis7CisKK2NvbWJpbmF0b3I6CisgICAgJysnIG1heWJlX3NwYWNlIHsgJCQgPSBDU1NTZWxl
Y3Rvcjo6RGlyZWN0QWRqYWNlbnQ7IH0KKyAgfCAnficgbWF5YmVfc3BhY2UgeyAkJCA9IENTU1Nl
bGVjdG9yOjpJbmRpcmVjdEFkamFjZW50OyB9CisgIHwgJz4nIG1heWJlX3NwYWNlIHsgJCQgPSBD
U1NTZWxlY3Rvcjo6Q2hpbGQ7IH0KKyAgOworCittYXliZV91bmFyeV9vcGVyYXRvcjoKKyAgICB1
bmFyeV9vcGVyYXRvciB7ICQkID0gJDE7IH0KKyAgICB8IHsgJCQgPSAxOyB9CisgICAgOworCit1
bmFyeV9vcGVyYXRvcjoKKyAgICAnLScgeyAkJCA9IC0xOyB9CisgIHwgJysnIHsgJCQgPSAxOyB9
CisgIDsKKworbWF5YmVfc3BhY2VfYmVmb3JlX2RlY2xhcmF0aW9uOgorICAgIG1heWJlX3NwYWNl
IHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlTdGFydCgpOworICAgIH0KKyAgOworCiti
ZWZvcmVfc2VsZWN0b3JfbGlzdDoKKyAgICAvKiBlbXB0eSAqLyB7CisgICAgICAgIHBhcnNlci0+
bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6U1RZTEVfUlVMRSk7CisgICAg
fQorICA7CisKK2F0X3J1bGVfaGVhZGVyX2VuZDoKKyAgICAvKiBlbXB0eSAqLyB7CisgICAgICAg
IHBhcnNlci0+bWFya1J1bGVIZWFkZXJFbmQoKTsKKyAgICB9CisgIDsKKworcnVsZXNldDoKKyAg
ICBiZWZvcmVfc2VsZWN0b3JfbGlzdCBzZWxlY3Rvcl9saXN0IGF0X3J1bGVfaGVhZGVyX2VuZCAn
eycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1heWJlX3NwYWNlX2JlZm9yZV9kZWNsYXJhdGlvbiBkZWNs
YXJhdGlvbl9saXN0IGNsb3NpbmdfYnJhY2UgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRl
U3R5bGVSdWxlKCQyKTsKKyAgICB9CisgIDsKKworc2VsZWN0b3JfbGlzdDoKKyAgICBzZWxlY3Rv
ciAlcHJlYyBVTklNUE9SVEFOVF9UT0sgeworICAgICAgICBpZiAoJDEpIHsKKyAgICAgICAgICAg
ICQkID0gcGFyc2VyLT5zZWxlY3RvclZlY3RvcigpOworICAgICAgICAgICAgJCQtPnNocmluaygw
KTsKKyAgICAgICAgICAgICQkLT5hcHBlbmQocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3Rvcigk
MSkpOworICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVMYXN0U2VsZWN0b3JMaW5lQW5kUG9zaXRp
b24oKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB8IHNlbGVjdG9yX2xpc3QgJywnIG1heWJlX3Nw
YWNlIHNlbGVjdG9yICVwcmVjIFVOSU1QT1JUQU5UX1RPSyB7CisgICAgICAgIGlmICgkMSAmJiAk
NCkgeworICAgICAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgICAgICQkLT5hcHBlbmQocGFyc2Vy
LT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkNCkpOworICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVM
YXN0U2VsZWN0b3JMaW5lQW5kUG9zaXRpb24oKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAkJCA9IDA7CisgICAgfQorICB8IHNlbGVjdG9yX2xpc3QgZXJyb3IgeworICAgICAgICAkJCA9
IDA7CisgICAgfQorICAgOworCitzZWxlY3Rvcl93aXRoX3RyYWlsaW5nX3doaXRlc3BhY2U6Cisg
ICAgc2VsZWN0b3IgV0hJVEVTUEFDRSB7CisgICAgICAgICQkID0gJDE7CisgICAgfQorICAgIDsK
Kworc2VsZWN0b3I6CisgICAgc2ltcGxlX3NlbGVjdG9yIHsKKyAgICAgICAgJCQgPSAkMTsKKyAg
ICB9CisgICAgfCBzZWxlY3Rvcl93aXRoX3RyYWlsaW5nX3doaXRlc3BhY2UKKyAgICB7CisgICAg
ICAgICQkID0gJDE7CisgICAgfQorICAgIHwgc2VsZWN0b3Jfd2l0aF90cmFpbGluZ193aGl0ZXNw
YWNlIHNpbXBsZV9zZWxlY3RvcgorICAgIHsKKyAgICAgICAgJCQgPSAkMjsKKyAgICAgICAgaWYg
KCEkMSkKKyAgICAgICAgICAgICQkID0gMDsKKyAgICAgICAgZWxzZSBpZiAoJCQpIHsKKyAgICAg
ICAgICAgIENTU1BhcnNlclNlbGVjdG9yKiBlbmQgPSAkJDsKKyAgICAgICAgICAgIHdoaWxlIChl
bmQtPnRhZ0hpc3RvcnkoKSkKKyAgICAgICAgICAgICAgICBlbmQgPSBlbmQtPnRhZ0hpc3Rvcnko
KTsKKyAgICAgICAgICAgIGVuZC0+c2V0UmVsYXRpb24oQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQp
OworICAgICAgICAgICAgZW5kLT5zZXRUYWdIaXN0b3J5KHBhcnNlci0+c2lua0Zsb2F0aW5nU2Vs
ZWN0b3IoJDEpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB8IHNlbGVjdG9yIGNvbWJpbmF0b3Ig
c2ltcGxlX3NlbGVjdG9yIHsKKyAgICAgICAgJCQgPSAkMzsKKyAgICAgICAgaWYgKCEkMSkKKyAg
ICAgICAgICAgICQkID0gMDsKKyAgICAgICAgZWxzZSBpZiAoJCQpIHsKKyAgICAgICAgICAgIENT
U1BhcnNlclNlbGVjdG9yKiBlbmQgPSAkJDsKKyAgICAgICAgICAgIHdoaWxlIChlbmQtPnRhZ0hp
c3RvcnkoKSkKKyAgICAgICAgICAgICAgICBlbmQgPSBlbmQtPnRhZ0hpc3RvcnkoKTsKKyAgICAg
ICAgICAgIGVuZC0+c2V0UmVsYXRpb24oJDIpOworICAgICAgICAgICAgZW5kLT5zZXRUYWdIaXN0
b3J5KHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDEpKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICB8IHNlbGVjdG9yIGVycm9yIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKyAgICA7CisK
K25hbWVzcGFjZV9zZWxlY3RvcjoKKyAgICAvKiBlbXB0eSAqLyAnfCcgeyAkJC5jbGVhcigpOyB9
CisgICAgfCAnKicgJ3wnIHsgc3RhdGljIExDaGFyIHN0YXIgPSAnKic7ICQkLmluaXQoJnN0YXIs
IDEpOyB9CisgICAgfCBJREVOVCAnfCcgeyAkJCA9ICQxOyB9Cis7CisgICAgCitzaW1wbGVfc2Vs
ZWN0b3I6CisgICAgZWxlbWVudF9uYW1lIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZs
b2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldFRhZyhRdWFsaWZpZWROYW1lKG51bGxB
dG9tLCAkMSwgcGFyc2VyLT5tX2RlZmF1bHROYW1lc3BhY2UpKTsKKyAgICB9CisgICAgfCBlbGVt
ZW50X25hbWUgc3BlY2lmaWVyX2xpc3QgeworICAgICAgICAkJCA9ICQyOworICAgICAgICBpZiAo
JCQpCisgICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUo
bnVsbEF0b20sICQxLCAkJCk7CisgICAgfQorICAgIHwgc3BlY2lmaWVyX2xpc3QgeworICAgICAg
ICAkJCA9ICQxOworICAgICAgICBpZiAoJCQpCisgICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNw
ZWNpZmllcnNXaXRoRWxlbWVudE5hbWUobnVsbEF0b20sIHN0YXJBdG9tLCAkJCk7CisgICAgfQor
ICAgIHwgbmFtZXNwYWNlX3NlbGVjdG9yIGVsZW1lbnRfbmFtZSB7CisgICAgICAgICQkID0gcGFy
c2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRUYWcocGFyc2Vy
LT5kZXRlcm1pbmVOYW1lSW5OYW1lc3BhY2UoJDEsICQyKSk7CisgICAgfQorICAgIHwgbmFtZXNw
YWNlX3NlbGVjdG9yIGVsZW1lbnRfbmFtZSBzcGVjaWZpZXJfbGlzdCB7CisgICAgICAgICQkID0g
JDM7CisgICAgICAgIGlmICgkJCkKKyAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVy
c1dpdGhFbGVtZW50TmFtZSgkMSwgJDIsICQkKTsKKyAgICB9CisgICAgfCBuYW1lc3BhY2Vfc2Vs
ZWN0b3Igc3BlY2lmaWVyX2xpc3QgeworICAgICAgICAkJCA9ICQyOworICAgICAgICBpZiAoJCQp
CisgICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoJDEs
IHN0YXJBdG9tLCAkJCk7CisgICAgfQorICA7CisKK3NpbXBsZV9zZWxlY3Rvcl9saXN0OgorICAg
IHNpbXBsZV9zZWxlY3RvciAlcHJlYyBVTklNUE9SVEFOVF9UT0sgeworICAgICAgICBpZiAoJDEp
IHsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yVmVjdG9y
KCk7CisgICAgICAgICAgICAkJC0+YXBwZW5kKHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3Io
JDEpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIHwg
c2ltcGxlX3NlbGVjdG9yX2xpc3QgbWF5YmVfc3BhY2UgJywnIG1heWJlX3NwYWNlIHNpbXBsZV9z
ZWxlY3RvciAlcHJlYyBVTklNUE9SVEFOVF9UT0sgeworICAgICAgICBpZiAoJDEgJiYgJDUpIHsK
KyAgICAgICAgICAgICQkID0gJDE7CisgICAgICAgICAgICAkJC0+YXBwZW5kKHBhcnNlci0+c2lu
a0Zsb2F0aW5nU2VsZWN0b3IoJDUpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAkJCA9
IDA7CisgICAgfQorICAgIHwgc2ltcGxlX3NlbGVjdG9yX2xpc3QgZXJyb3IgeworICAgICAgICAk
JCA9IDA7CisgICAgfQorICA7CisKK2VsZW1lbnRfbmFtZToKKyAgICBJREVOVCB7CisgICAgICAg
IENTU1BhcnNlclN0cmluZyYgc3RyID0gJDE7CisgICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4
dC5pc0hUTUxEb2N1bWVudCkKKyAgICAgICAgICAgIHN0ci5sb3dlcigpOworICAgICAgICAkJCA9
IHN0cjsKKyAgICB9CisgICAgfCAnKicgeworICAgICAgICBzdGF0aWMgTENoYXIgc3RhciA9ICcq
JzsKKyAgICAgICAgJCQuaW5pdCgmc3RhciwgMSk7CisgICAgfQorICA7CisKK3NwZWNpZmllcl9s
aXN0OgorICAgIHNwZWNpZmllciB7CisgICAgICAgICQkID0gJDE7CisgICAgfQorICAgIHwgc3Bl
Y2lmaWVyX2xpc3Qgc3BlY2lmaWVyIHsKKyAgICAgICAgaWYgKCEkMikKKyAgICAgICAgICAgICQk
ID0gMDsKKyAgICAgICAgZWxzZSBpZiAoJDEpCisgICAgICAgICAgICAkJCA9IHBhcnNlci0+dXBk
YXRlU3BlY2lmaWVycygkMSwgJDIpOworICAgIH0KKyAgICB8IHNwZWNpZmllcl9saXN0IGVycm9y
IHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKzsKKworc3BlY2lmaWVyOgorICAgIElEU0VMIHsK
KyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAg
JCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpJZCk7CisgICAgICAgIGlmIChwYXJzZXItPm1fY29u
dGV4dC5tb2RlID09IENTU1F1aXJrc01vZGUpCisgICAgICAgICAgICAkMS5sb3dlcigpOworICAg
ICAgICAkJC0+c2V0VmFsdWUoJDEpOworICAgIH0KKyAgfCBIRVggeworICAgICAgICBpZiAoJDFb
MF0gPj0gJzAnICYmICQxWzBdIDw9ICc5JykgeworICAgICAgICAgICAgJCQgPSAwOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0
b3IoKTsKKyAgICAgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6SWQpOworICAgICAg
ICAgICAgaWYgKHBhcnNlci0+bV9jb250ZXh0Lm1vZGUgPT0gQ1NTUXVpcmtzTW9kZSkKKyAgICAg
ICAgICAgICAgICAkMS5sb3dlcigpOworICAgICAgICAgICAgJCQtPnNldFZhbHVlKCQxKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgfCBjbGFzcworICB8IGF0dHJpYgorICB8IHBzZXVkbworICAgIDsK
KworY2xhc3M6CisgICAgJy4nIElERU5UIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZs
b2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpDbGFz
cyk7CisgICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4dC5tb2RlID09IENTU1F1aXJrc01vZGUp
CisgICAgICAgICAgICAkMi5sb3dlcigpOworICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOworICAg
IH0KKyAgOworCithdHRyX25hbWU6CisgICAgSURFTlQgbWF5YmVfc3BhY2UgeworICAgICAgICBD
U1NQYXJzZXJTdHJpbmcmIHN0ciA9ICQxOworICAgICAgICBpZiAocGFyc2VyLT5tX2NvbnRleHQu
aXNIVE1MRG9jdW1lbnQpCisgICAgICAgICAgICBzdHIubG93ZXIoKTsKKyAgICAgICAgJCQgPSBz
dHI7CisgICAgfQorICAgIDsKKworYXR0cmliOgorICAgICdbJyBtYXliZV9zcGFjZSBhdHRyX25h
bWUgJ10nIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsK
KyAgICAgICAgJCQtPnNldEF0dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMywgbnVs
bEF0b20pKTsKKyAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpTZXQpOworICAgIH0K
KyAgICB8ICdbJyBtYXliZV9zcGFjZSBhdHRyX25hbWUgbWF0Y2ggbWF5YmVfc3BhY2UgaWRlbnRf
b3Jfc3RyaW5nIG1heWJlX3NwYWNlICddJyB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVG
bG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRBdHRyaWJ1dGUoUXVhbGlmaWVkTmFt
ZShudWxsQXRvbSwgJDMsIG51bGxBdG9tKSk7CisgICAgICAgICQkLT5zZXRNYXRjaCgoQ1NTU2Vs
ZWN0b3I6Ok1hdGNoKSQ0KTsKKyAgICAgICAgJCQtPnNldFZhbHVlKCQ2KTsKKyAgICB9CisgICAg
fCAnWycgbWF5YmVfc3BhY2UgbmFtZXNwYWNlX3NlbGVjdG9yIGF0dHJfbmFtZSAnXScgeworICAg
ICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAkJC0+
c2V0QXR0cmlidXRlKHBhcnNlci0+ZGV0ZXJtaW5lTmFtZUluTmFtZXNwYWNlKCQzLCAkNCkpOwor
ICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlNldCk7CisgICAgfQorICAgIHwgJ1sn
IG1heWJlX3NwYWNlIG5hbWVzcGFjZV9zZWxlY3RvciBhdHRyX25hbWUgbWF0Y2ggbWF5YmVfc3Bh
Y2UgaWRlbnRfb3Jfc3RyaW5nIG1heWJlX3NwYWNlICddJyB7CisgICAgICAgICQkID0gcGFyc2Vy
LT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRBdHRyaWJ1dGUocGFy
c2VyLT5kZXRlcm1pbmVOYW1lSW5OYW1lc3BhY2UoJDMsICQ0KSk7CisgICAgICAgICQkLT5zZXRN
YXRjaCgoQ1NTU2VsZWN0b3I6Ok1hdGNoKSQ1KTsKKyAgICAgICAgJCQtPnNldFZhbHVlKCQ3KTsK
KyAgICB9CisgIDsKKworbWF0Y2g6CisgICAgJz0nIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rv
cjo6RXhhY3Q7CisgICAgfQorICAgIHwgSU5DTFVERVMgeworICAgICAgICAkJCA9IENTU1NlbGVj
dG9yOjpMaXN0OworICAgIH0KKyAgICB8IERBU0hNQVRDSCB7CisgICAgICAgICQkID0gQ1NTU2Vs
ZWN0b3I6Okh5cGhlbjsKKyAgICB9CisgICAgfCBCRUdJTlNXSVRIIHsKKyAgICAgICAgJCQgPSBD
U1NTZWxlY3Rvcjo6QmVnaW47CisgICAgfQorICAgIHwgRU5EU1dJVEggeworICAgICAgICAkJCA9
IENTU1NlbGVjdG9yOjpFbmQ7CisgICAgfQorICAgIHwgQ09OVEFJTlMgeworICAgICAgICAkJCA9
IENTU1NlbGVjdG9yOjpDb250YWluOworICAgIH0KKyAgICA7CisKK2lkZW50X29yX3N0cmluZzoK
KyAgICBJREVOVAorICB8IFNUUklORworICAgIDsKKworcHNldWRvX3BhZ2U6CisgICAgJzonIElE
RU5UIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAg
ICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQYWdlUHNldWRvQ2xhc3MpOworICAgICAg
ICAkMi5sb3dlcigpOworICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOworICAgICAgICBDU1NTZWxl
Y3Rvcjo6UHNldWRvVHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUoKTsKKyAgICAgICAgaWYgKHR5
cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25vd24pCisgICAgICAgICAgICAkJCA9IDA7Cisg
ICAgfQorCitwc2V1ZG86CisgICAgJzonIElERU5UIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNy
ZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzcyk7CisgICAgICAgICQyLmxvd2VyKCk7CisgICAgICAgICQkLT5zZXRWYWx1
ZSgkMik7CisgICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRv
VHlwZSgpOworICAgICAgICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bikK
KyAgICAgICAgICAgICQkID0gMDsKKyAgICB9CisgICAgfCAnOicgJzonIElERU5UIHsKKyAgICAg
ICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNl
dE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50KTsKKyAgICAgICAgJDMubG93ZXIoKTsK
KyAgICAgICAgJCQtPnNldFZhbHVlKCQzKTsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgY2FsbCBp
cyBuZWVkZWQgdG8gZm9yY2Ugc2VsZWN0b3IgdG8gY29tcHV0ZSB0aGUgcHNldWRvVHlwZSBlYXJs
eSBlbm91Z2guCisgICAgICAgICQkLT5wc2V1ZG9UeXBlKCk7CisgICAgfQorICAgIC8vIHVzZSBi
eSA6LXdlYmtpdC1hbnkuCisgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBzdXBwb3J0IGdlbmVyaWMg
c2VsZWN0b3JzIGhlcmUgb3IganVzdCBzaW1wbGVfc2VsZWN0b3JzPworICAgIC8vIFVzZSBzaW1w
bGVfc2VsZWN0b3JfbGlzdCBmb3Igbm93IHRvIG1hdGNoIC1tb3otYW55LgorICAgIC8vIFNlZSBo
dHRwOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3ctc3R5bGUvMjAxMFNlcC8wNTY2
Lmh0bWwgZm9yIHNvbWUKKyAgICAvLyByZWxhdGVkIGRpc2N1c3Npb24gd2l0aCByZXNwZWN0IHRv
IDpub3QuCisgICAgfCAnOicgQU5ZRlVOQ1RJT04gbWF5YmVfc3BhY2Ugc2ltcGxlX3NlbGVjdG9y
X2xpc3QgbWF5YmVfc3BhY2UgJyknIHsKKyAgICAgICAgaWYgKCQ0KSB7CisgICAgICAgICAgICAk
JCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAgICAgJCQtPnNl
dE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7CisgICAgICAgICAgICAkJC0+YWRvcHRT
ZWxlY3RvclZlY3RvcigqcGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvclZlY3RvcigkNCkpOwor
ICAgICAgICAgICAgJDIubG93ZXIoKTsKKyAgICAgICAgICAgICQkLT5zZXRWYWx1ZSgkMik7Cisg
ICAgICAgICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUo
KTsKKyAgICAgICAgICAgIGlmICh0eXBlICE9IENTU1NlbGVjdG9yOjpQc2V1ZG9BbnkpCisgICAg
ICAgICAgICAgICAgJCQgPSAwOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICQkID0gMDsK
KyAgICB9CisgICAgLy8gdXNlZCBieSA6bnRoLSooYXgrYikKKyAgICB8ICc6JyBGVU5DVElPTiBt
YXliZV9zcGFjZSBOVEggbWF5YmVfc3BhY2UgJyknIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNy
ZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzcyk7CisgICAgICAgICQkLT5zZXRBcmd1bWVudCgkNCk7CisgICAgICAgICQk
LT5zZXRWYWx1ZSgkMik7CisgICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAk
JC0+cHNldWRvVHlwZSgpOworICAgICAgICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRv
VW5rbm93bikKKyAgICAgICAgICAgICQkID0gMDsKKyAgICB9CisgICAgLy8gdXNlZCBieSA6bnRo
LSoKKyAgICB8ICc6JyBGVU5DVElPTiBtYXliZV9zcGFjZSBtYXliZV91bmFyeV9vcGVyYXRvciBJ
TlRFR0VSIG1heWJlX3NwYWNlICcpJyB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9h
dGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRv
Q2xhc3MpOworICAgICAgICAkJC0+c2V0QXJndW1lbnQoU3RyaW5nOjpudW1iZXIoJDQgKiAkNSkp
OworICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOworICAgICAgICBDU1NTZWxlY3Rvcjo6UHNldWRv
VHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUoKTsKKyAgICAgICAgaWYgKHR5cGUgPT0gQ1NTU2Vs
ZWN0b3I6OlBzZXVkb1Vua25vd24pCisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIC8v
IHVzZWQgYnkgOm50aC0qKG9kZC9ldmVuKSBhbmQgOmxhbmcKKyAgICB8ICc6JyBGVU5DVElPTiBt
YXliZV9zcGFjZSBJREVOVCBtYXliZV9zcGFjZSAnKScgeworICAgICAgICAkJCA9IHBhcnNlci0+
Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0
b3I6OlBzZXVkb0NsYXNzKTsKKyAgICAgICAgJCQtPnNldEFyZ3VtZW50KCQ0KTsKKyAgICAgICAg
JDIubG93ZXIoKTsKKyAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsKKyAgICAgICAgQ1NTU2VsZWN0
b3I6OlBzZXVkb1R5cGUgdHlwZSA9ICQkLT5wc2V1ZG9UeXBlKCk7CisgICAgICAgIGlmICh0eXBl
ID09IENTU1NlbGVjdG9yOjpQc2V1ZG9Vbmtub3duKQorICAgICAgICAgICAgJCQgPSAwOworICAg
ICAgICBlbHNlIGlmICh0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9OdGhDaGlsZCB8fAorICAg
ICAgICAgICAgICAgICB0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9OdGhPZlR5cGUgfHwKKyAg
ICAgICAgICAgICAgICAgdHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvTnRoTGFzdENoaWxkIHx8
CisgICAgICAgICAgICAgICAgIHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb050aExhc3RPZlR5
cGUpIHsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZE50aFRva2VuKCQ0KSkKKyAgICAgICAgICAg
ICAgICAkJCA9IDA7CisgICAgICAgIH0KKyAgICB9CisgICAgLy8gdXNlZCBieSA6bm90CisgICAg
fCAnOicgTk9URlVOQ1RJT04gbWF5YmVfc3BhY2Ugc2ltcGxlX3NlbGVjdG9yIG1heWJlX3NwYWNl
ICcpJyB7CisgICAgICAgIGlmICghJDQgfHwgISQ0LT5pc1NpbXBsZSgpKQorICAgICAgICAgICAg
JCQgPSAwOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVG
bG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzKTsKKworICAgICAgICAgICAgQ1NTU2VsZWN0b3JWZWN0b3Igc2VsZWN0b3JW
ZWN0b3I7CisgICAgICAgICAgICBzZWxlY3RvclZlY3Rvci5hcHBlbmQocGFyc2VyLT5zaW5rRmxv
YXRpbmdTZWxlY3RvcigkNCkpOworICAgICAgICAgICAgJCQtPmFkb3B0U2VsZWN0b3JWZWN0b3Io
c2VsZWN0b3JWZWN0b3IpOworCisgICAgICAgICAgICAkMi5sb3dlcigpOworICAgICAgICAgICAg
JCQtPnNldFZhbHVlKCQyKTsKKyAgICAgICAgfQorICAgIH0KKyAgOworCitkZWNsYXJhdGlvbl9s
aXN0OgorICAgIGRlY2xhcmF0aW9uIHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAgfCBk
ZWNsX2xpc3QgZGVjbGFyYXRpb24geworICAgICAgICAkJCA9ICQxOworICAgICAgICBpZiAoICQy
ICkKKyAgICAgICAgICAgICQkID0gJDI7CisgICAgfQorICAgIHwgZGVjbF9saXN0IHsKKyAgICAg
ICAgJCQgPSAkMTsKKyAgICB9CisgICAgfCBlcnJvciBpbnZhbGlkX2Jsb2NrX2xpc3QgZXJyb3Ig
eworICAgICAgICAkJCA9IGZhbHNlOworICAgIH0KKyAgICB8IGVycm9yIHsKKyAgICAgICAgJCQg
PSBmYWxzZTsKKyAgICB9CisgICAgfCBkZWNsX2xpc3QgZXJyb3IgeworICAgICAgICAkJCA9ICQx
OworICAgIH0KKyAgICB8IGRlY2xfbGlzdCBpbnZhbGlkX2Jsb2NrX2xpc3QgeworICAgICAgICAk
JCA9ICQxOworICAgIH0KKyAgICA7CisKK2RlY2xfbGlzdDoKKyAgICBkZWNsYXJhdGlvbiAnOycg
bWF5YmVfc3BhY2UgeworICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7CisgICAg
ICAgICQkID0gJDE7CisgICAgfQorICAgIHwgZGVjbGFyYXRpb24gaW52YWxpZF9ibG9ja19saXN0
IG1heWJlX3NwYWNlIHsKKyAgICAgICAgJCQgPSBmYWxzZTsKKyAgICB9CisgICAgfCBkZWNsYXJh
dGlvbiBpbnZhbGlkX2Jsb2NrX2xpc3QgJzsnIG1heWJlX3NwYWNlIHsKKyAgICAgICAgJCQgPSBm
YWxzZTsKKyAgICB9CisgICAgfCBlcnJvciAnOycgbWF5YmVfc3BhY2UgeworICAgICAgICBwYXJz
ZXItPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7CisgICAgICAgICQkID0gZmFsc2U7CisgICAgfQorICAg
IHwgZXJyb3IgaW52YWxpZF9ibG9ja19saXN0IGVycm9yICc7JyBtYXliZV9zcGFjZSB7CisgICAg
ICAgICQkID0gZmFsc2U7CisgICAgfQorICAgIHwgZGVjbF9saXN0IGRlY2xhcmF0aW9uICc7JyBt
YXliZV9zcGFjZSB7CisgICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5U3RhcnQoKTsKKyAgICAg
ICAgJCQgPSAkMTsKKyAgICAgICAgaWYgKCQyKQorICAgICAgICAgICAgJCQgPSAkMjsKKyAgICB9
CisgICAgfCBkZWNsX2xpc3QgZXJyb3IgJzsnIG1heWJlX3NwYWNlIHsKKyAgICAgICAgcGFyc2Vy
LT5tYXJrUHJvcGVydHlTdGFydCgpOworICAgICAgICAkJCA9ICQxOworICAgIH0KKyAgICB8IGRl
Y2xfbGlzdCBlcnJvciBpbnZhbGlkX2Jsb2NrX2xpc3QgZXJyb3IgJzsnIG1heWJlX3NwYWNlIHsK
KyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlTdGFydCgpOworICAgICAgICAkJCA9ICQxOwor
ICAgIH0KKyAgICA7CisKK2RlY2xhcmF0aW9uOgorICAgIFZBUl9ERUZJTklUSU9OICc6JyBtYXli
ZV9zcGFjZSBleHByIHByaW8geworI2lmIEVOQUJMRV9DU1NfVkFSSUFCTEVTCisgICAgICAgIHBh
cnNlci0+c3RvcmVWYXJpYWJsZURlY2xhcmF0aW9uKCQxLCBwYXJzZXItPnNpbmtGbG9hdGluZ1Zh
bHVlTGlzdCgkNCksICQ1KTsKKyAgICAgICAgJCQgPSB0cnVlOworICAgICAgICBwYXJzZXItPm1h
cmtQcm9wZXJ0eUVuZCgkNSwgdHJ1ZSk7CisjZWxzZQorICAgICAgICAkJCA9IGZhbHNlOworI2Vu
ZGlmCisgICAgfQorICAgIHwKKyAgICBwcm9wZXJ0eSAnOicgbWF5YmVfc3BhY2UgZXhwciBwcmlv
IHsKKyAgICAgICAgJCQgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBpc1Byb3BlcnR5UGFyc2VkID0g
ZmFsc2U7CisgICAgICAgIGlmICgkMSAmJiAkNCkgeworICAgICAgICAgICAgcGFyc2VyLT5tX3Zh
bHVlTGlzdCA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQ0KTsKKyAgICAgICAgICAg
IGludCBvbGRQYXJzZWRQcm9wZXJ0aWVzID0gcGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXMtPnNp
emUoKTsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5wYXJzZVZhbHVlKHN0YXRpY19jYXN0PENT
U1Byb3BlcnR5SUQ+KCQxKSwgJDUpOworICAgICAgICAgICAgaWYgKCEkJCkKKyAgICAgICAgICAg
ICAgICBwYXJzZXItPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocGFyc2VyLT5tX3BhcnNlZFByb3Bl
cnRpZXMtPnNpemUoKSAtIG9sZFBhcnNlZFByb3BlcnRpZXMpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGlzUHJvcGVydHlQYXJzZWQgPSB0cnVlOworICAgICAgICAgICAgcGFy
c2VyLT5tX3ZhbHVlTGlzdCA9IG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgcGFyc2VyLT5t
YXJrUHJvcGVydHlFbmQoJDUsIGlzUHJvcGVydHlQYXJzZWQpOworICAgIH0KKyAgICB8CisgICAg
cHJvcGVydHkgZXJyb3IgeworICAgICAgICAkJCA9IGZhbHNlOworICAgIH0KKyAgICB8CisgICAg
cHJvcGVydHkgJzonIG1heWJlX3NwYWNlIGVycm9yIGV4cHIgcHJpbyB7CisgICAgICAgIC8qIFRo
ZSBkZWZhdWx0IG1vdmFibGUgdHlwZSB0ZW1wbGF0ZSBoYXMgbGV0dGVyLXNwYWNpbmc6IC5ub25l
OyAgSGFuZGxlIHRoaXMgYnkgbG9va2luZyBmb3IKKyAgICAgICAgZXJyb3IgdG9rZW5zIGF0IHRo
ZSBzdGFydCBvZiBhbiBleHByLCByZWNvdmVyIHRoZSBleHByIGFuZCB0aGVuIHRyZWF0IGFzIGFu
IGVycm9yLCBjbGVhbmluZworICAgICAgICB1cCBhbmQgZGVsZXRpbmcgdGhlIHNoaWZ0ZWQgZXhw
ci4gICovCisgICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5RW5kKGZhbHNlLCBmYWxzZSk7Cisg
ICAgICAgICQkID0gZmFsc2U7CisgICAgfQorICAgIHwKKyAgICBwcm9wZXJ0eSAnOicgbWF5YmVf
c3BhY2UgZXhwciBwcmlvIGVycm9yIHsKKyAgICAgICAgLyogV2hlbiB3ZSBlbmNvdW50ZXIgc29t
ZXRoaW5nIGxpa2UgcCB7Y29sb3I6IHJlZCAhaW1wb3J0YW50IGZhaWw7fSB3ZSBzaG91bGQgZHJv
cCB0aGUgZGVjbGFyYXRpb24gKi8KKyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlFbmQoZmFs
c2UsIGZhbHNlKTsKKyAgICAgICAgJCQgPSBmYWxzZTsKKyAgICB9CisgICAgfAorICAgIElNUE9S
VEFOVF9TWU0gbWF5YmVfc3BhY2UgeworICAgICAgICAvKiBIYW5kbGUgdGhpcyBjYXNlOiBkaXYg
eyB0ZXh0LWFsaWduOiBjZW50ZXI7ICFpbXBvcnRhbnQgfSBKdXN0IHJlZHVjZSBhd2F5IHRoZSBz
dHJheSAhaW1wb3J0YW50LiAqLworICAgICAgICAkJCA9IGZhbHNlOworICAgIH0KKyAgICB8Cisg
ICAgcHJvcGVydHkgJzonIG1heWJlX3NwYWNlIHsKKyAgICAgICAgLyogZGl2IHsgZm9udC1mYW1p
bHk6IH0gSnVzdCByZWR1Y2UgYXdheSB0aGlzIHByb3BlcnR5IHdpdGggbm8gdmFsdWUuICovCisg
ICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5RW5kKGZhbHNlLCBmYWxzZSk7CisgICAgICAgICQk
ID0gZmFsc2U7CisgICAgfQorICAgIHwKKyAgICBwcm9wZXJ0eSAnOicgbWF5YmVfc3BhY2UgZXJy
b3IgeworICAgICAgICAvKiBpZiB3ZSBjb21lIGFjcm9zcyBydWxlcyB3aXRoIGludmFsaWQgdmFs
dWVzIGxpa2UgdGhpcyBjYXNlOiBwIHsgd2VpZ2h0OiAqOyB9LCBqdXN0IGRpc2NhcmQgdGhlIHJ1
bGUgKi8KKyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlFbmQoZmFsc2UsIGZhbHNlKTsKKyAg
ICAgICAgJCQgPSBmYWxzZTsKKyAgICB9CisgICAgfAorICAgIHByb3BlcnR5IGludmFsaWRfYmxv
Y2sgeworICAgICAgICAvKiBpZiB3ZSBjb21lIGFjcm9zczogZGl2IHsgY29sb3J7O2NvbG9yOm1h
cm9vbn0gfSwgaWdub3JlIGV2ZXJ5dGhpbmcgd2l0aGluIGN1cmx5IGJyYWNrZXRzICovCisgICAg
ICAgICQkID0gZmFsc2U7CisgICAgfQorICA7CisKK3Byb3BlcnR5OgorICAgIElERU5UIG1heWJl
X3NwYWNlIHsKKyAgICAgICAgJCQgPSBjc3NQcm9wZXJ0eUlEKCQxKTsKKyAgICB9CisgIDsKKwor
cHJpbzoKKyAgICBJTVBPUlRBTlRfU1lNIG1heWJlX3NwYWNlIHsgJCQgPSB0cnVlOyB9CisgICAg
fCAvKiBlbXB0eSAqLyB7ICQkID0gZmFsc2U7IH0KKyAgOworCitleHByOgorICAgIHRlcm0gewor
ICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdWYWx1ZUxpc3QoKTsKKyAgICAgICAg
JCQtPmFkZFZhbHVlKHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWUoJDEpKTsKKyAgICB9CisgICAg
fCBleHByIG9wZXJhdG9yIHRlcm0geworICAgICAgICAkJCA9ICQxOworICAgICAgICBpZiAoJCQp
IHsKKyAgICAgICAgICAgIGlmICgkMikgeworICAgICAgICAgICAgICAgIENTU1BhcnNlclZhbHVl
IHY7CisgICAgICAgICAgICAgICAgdi5pZCA9IDA7CisgICAgICAgICAgICAgICAgdi51bml0ID0g
Q1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOworICAgICAgICAgICAgICAgIHYuaVZhbHVlID0gJDI7
CisgICAgICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHYpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgJCQtPmFkZFZhbHVlKHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWUoJDMpKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICB8IGV4cHIgaW52YWxpZF9ibG9ja19saXN0IHsKKyAgICAgICAgJCQg
PSAwOworICAgIH0KKyAgICB8IGV4cHIgaW52YWxpZF9ibG9ja19saXN0IGVycm9yIHsKKyAgICAg
ICAgJCQgPSAwOworICAgIH0KKyAgICB8IGV4cHIgZXJyb3IgeworICAgICAgICAkJCA9IDA7Cisg
ICAgfQorICA7CisKK29wZXJhdG9yOgorICAgICcvJyBtYXliZV9zcGFjZSB7CisgICAgICAgICQk
ID0gJy8nOworICAgIH0KKyAgfCAnLCcgbWF5YmVfc3BhY2UgeworICAgICAgICAkJCA9ICcsJzsK
KyAgICB9CisgIHwgLyogZW1wdHkgKi8geworICAgICAgICAkJCA9IDA7CisgIH0KKyAgOworCit0
ZXJtOgorICB1bmFyeV90ZXJtIHsgJCQgPSAkMTsgfQorICB8IHVuYXJ5X29wZXJhdG9yIHVuYXJ5
X3Rlcm0geyAkJCA9ICQyOyAkJC5mVmFsdWUgKj0gJDE7IH0KKyAgfCBTVFJJTkcgbWF5YmVfc3Bh
Y2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19TVFJJTkc7IH0KKyAgfCBJREVOVCBtYXliZV9zcGFjZSB7CisgICAgICAkJC5pZCA9
IGNzc1ZhbHVlS2V5d29yZElEKCQxKTsKKyAgICAgICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX0lERU5UOworICAgICAgJCQuc3RyaW5nID0gJDE7CisgIH0KKyAgLyogV2UgbWlnaHQg
bmVlZCB0byBhY3R1YWxseSBwYXJzZSB0aGUgbnVtYmVyIGZyb20gYSBkaW1lbnNpb24sIGJ1dCB3
ZSBjYW4ndCBqdXN0IHB1dCBzb21ldGhpbmcgdGhhdCB1c2VzICQkLnN0cmluZyBpbnRvIHVuYXJ5
X3Rlcm0uICovCisgIHwgRElNRU4gbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9
ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ESU1FTlNJT047IH0KKyAgfCB1
bmFyeV9vcGVyYXRvciBESU1FTiBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0g
JDI7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RJTUVOU0lPTjsgfQorICB8IFVS
SSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1VSSTsgfQorICB8IFVOSUNPREVSQU5HRSBtYXliZV9zcGFjZSB7
ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1VOSUNPREVfUkFOR0U7IH0KKyAgfCBIRVggbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQk
LnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVY
Q09MT1I7IH0KKyAgfCAnIycgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9IENT
U1BhcnNlclN0cmluZygpOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQVJTRVJf
SEVYQ09MT1I7IH0gLyogSGFuZGxlIGVycm9yIGNhc2U6ICJjb2xvcjogIzsiICovCisgIHwgVkFS
RlVOQ1RJT04gbWF5YmVfc3BhY2UgSURFTlQgJyknIG1heWJlX3NwYWNlIHsKKyNpZiBFTkFCTEVf
Q1NTX1ZBUklBQkxFUworICAgICAgJCQuaWQgPSAwOworICAgICAgJCQuc3RyaW5nID0gJDM7Cisg
ICAgICAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WQVJJQUJMRV9OQU1FOworI2Vu
ZGlmCisgIH0KKyAgLyogRklYTUU6IGFjY29yZGluZyB0byB0aGUgc3BlY3MgYSBmdW5jdGlvbiBj
YW4gaGF2ZSBhIHVuYXJ5X29wZXJhdG9yIGluIGZyb250LiBJIGtub3cgbm8gY2FzZSB3aGVyZSB0
aGlzIG1ha2VzIHNlbnNlICovCisgIHwgZnVuY3Rpb24geworICAgICAgJCQgPSAkMTsKKyAgfQor
ICB8IGNhbGNfZnVuY3Rpb24geworICAgICAgJCQgPSAkMTsKKyAgfQorICB8IG1pbl9vcl9tYXhf
ZnVuY3Rpb24geworICAgICAgJCQgPSAkMTsKKyAgfQorICB8ICclJyBtYXliZV9zcGFjZSB7IC8q
IEhhbmRsZSB3aWR0aDogJTsgKi8KKyAgICAgICQkLmlkID0gMDsgJCQudW5pdCA9IDA7CisgIH0K
KyAgOworCit1bmFyeV90ZXJtOgorICBJTlRFR0VSIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAk
JC5pc0ludCA9IHRydWU7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19OVU1CRVI7IH0KKyAgfCBGTE9BVFRPS0VOIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAw
OyAkJC5pc0ludCA9IGZhbHNlOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfTlVNQkVSOyB9CisgIHwgUEVSQ0VOVEFHRSBtYXliZV9zcGFjZSB7ICQkLmlk
ID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BF
UkNFTlRBR0U7IH0KKyAgfCBQWFMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9
ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWDsgfQorICB8IENNUyBtYXli
ZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX0NNOyB9CisgIHwgTU1TIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5m
VmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTU07IH0KKyAgfCBJ
TlMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19JTjsgfQorICB8IFBUUyBtYXliZV9zcGFjZSB7ICQkLmlkID0g
MDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BUOyB9
CisgIHwgUENTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5p
dCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEM7IH0KKyAgfCBERUdTIG1heWJlX3NwYWNlIHsg
JCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfREVHOyB9CisgIHwgUkFEUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0g
JDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JBRDsgfQorICB8IEdSQURTIG1h
eWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfR1JBRDsgfQorICB8IFRVUk5TIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAw
OyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVFVSTjsg
fQorICB8IE1TRUNTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQu
dW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTVM7IH0KKyAgfCBTRUNTIG1heWJlX3NwYWNl
IHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUzsgfQorICB8IEhFUlRaIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUg
PSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSFo7IH0KKyAgfCBLSEVSVFog
bWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19LSFo7IH0KKyAgfCBFTVMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7
ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVM7IH0K
KyAgfCBRRU1TIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5p
dCA9IENTU1BhcnNlclZhbHVlOjpRX0VNUzsgfQorICB8IEVYUyBtYXliZV9zcGFjZSB7ICQkLmlk
ID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VY
UzsgfQorICB8IFJFTVMgbWF5YmVfc3BhY2UgeworICAgICAgJCQuaWQgPSAwOworICAgICAgJCQu
ZlZhbHVlID0gJDE7CisgICAgICAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SRU1T
OworICAgICAgaWYgKHBhcnNlci0+bV9zdHlsZVNoZWV0KQorICAgICAgICAgIHBhcnNlci0+bV9z
dHlsZVNoZWV0LT5wYXJzZXJTZXRVc2VzUmVtVW5pdHModHJ1ZSk7CisgIH0KKyAgfCBWVyBtYXli
ZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1ZXOyB9CisgIHwgVkggbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZW
YWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WSDsgfQorICB8IFZN
SU4gbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19WTUlOOyB9CisgIHwgRFBQWCBtYXliZV9zcGFjZSB7ICQkLmlk
ID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQ
UFg7IH0KKyAgfCBEUEkgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAk
JC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19EUEk7IH0KKyAgfCBEUENNIG1heWJlX3Nw
YWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfRFBDTTsgfQorICA7CisKK2Z1bmN0aW9uOgorICAgIEZVTkNUSU9OIG1heWJlX3Nw
YWNlIGV4cHIgJyknIG1heWJlX3NwYWNlIHsKKyAgICAgICAgQ1NTUGFyc2VyRnVuY3Rpb24qIGYg
PSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsKKyAgICAgICAgZi0+bmFtZSA9ICQx
OworICAgICAgICBmLT5hcmdzID0gcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDMpOwor
ICAgICAgICAkJC5pZCA9IDA7CisgICAgICAgICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6RnVu
Y3Rpb247CisgICAgICAgICQkLmZ1bmN0aW9uID0gZjsKKyAgICB9IHwKKyAgICBGVU5DVElPTiBt
YXliZV9zcGFjZSBleHByIFRPS0VOX0VPRiB7CisgICAgICAgIENTU1BhcnNlckZ1bmN0aW9uKiBm
ID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7CisgICAgICAgIGYtPm5hbWUgPSAk
MTsKKyAgICAgICAgZi0+YXJncyA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQzKTsK
KyAgICAgICAgJCQuaWQgPSAwOworICAgICAgICAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1
bmN0aW9uOworICAgICAgICAkJC5mdW5jdGlvbiA9IGY7CisgICAgfSB8CisgICAgRlVOQ1RJT04g
bWF5YmVfc3BhY2UgJyknIG1heWJlX3NwYWNlIHsKKyAgICAgICAgQ1NTUGFyc2VyRnVuY3Rpb24q
IGYgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsKKyAgICAgICAgZi0+bmFtZSA9
ICQxOworICAgICAgICBDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlTGlzdCA9IHBhcnNlci0+Y3Jl
YXRlRmxvYXRpbmdWYWx1ZUxpc3QoKTsKKyAgICAgICAgZi0+YXJncyA9IHBhcnNlci0+c2lua0Zs
b2F0aW5nVmFsdWVMaXN0KHZhbHVlTGlzdCk7CisgICAgICAgICQkLmlkID0gMDsKKyAgICAgICAg
JCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKKyAgICAgICAgJCQuZnVuY3Rpb24g
PSBmOworICAgIH0gfAorICAgIEZVTkNUSU9OIG1heWJlX3NwYWNlIGVycm9yIHsKKyAgICAgICAg
Q1NTUGFyc2VyRnVuY3Rpb24qIGYgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsK
KyAgICAgICAgZi0+bmFtZSA9ICQxOworICAgICAgICBmLT5hcmdzID0gbnVsbHB0cjsKKyAgICAg
ICAgJCQuaWQgPSAwOworICAgICAgICAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9u
OworICAgICAgICAkJC5mdW5jdGlvbiA9IGY7CisgIH0KKyAgOworIAorY2FsY19mdW5jX3Rlcm06
CisgIHVuYXJ5X3Rlcm0geyAkJCA9ICQxOyB9CisgIHwgVkFSRlVOQ1RJT04gbWF5YmVfc3BhY2Ug
SURFTlQgJyknIG1heWJlX3NwYWNlIHsKKyNpZiBFTkFCTEVfQ1NTX1ZBUklBQkxFUworICAgICAg
JCQuaWQgPSAwOworICAgICAgJCQuc3RyaW5nID0gJDM7CisgICAgICAkJC51bml0ID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19WQVJJQUJMRV9OQU1FOworI2VuZGlmCisgIH0KKyAgfCB1bmFyeV9v
cGVyYXRvciB1bmFyeV90ZXJtIHsgJCQgPSAkMjsgJCQuZlZhbHVlICo9ICQxOyB9CisgIDsKKwor
Y2FsY19mdW5jX29wZXJhdG9yOgorICAgICcrJyBXSElURVNQQUNFIHsKKyAgICAgICAgJCQgPSAn
Kyc7CisgICAgfQorICAgIHwgJy0nIFdISVRFU1BBQ0UgeworICAgICAgICAkJCA9ICctJzsKKyAg
ICB9CisgICAgfCAnKicgbWF5YmVfc3BhY2UgeworICAgICAgICAkJCA9ICcqJzsKKyAgICB9Cisg
ICAgfCAnLycgbWF5YmVfc3BhY2UgeworICAgICAgICAkJCA9ICcvJzsKKyAgICB9CisgIDsKKwor
Y2FsY19mdW5jX3BhcmVuX2V4cHI6CisgICAgJygnIG1heWJlX3NwYWNlIGNhbGNfZnVuY19leHBy
IG1heWJlX3NwYWNlICcpJyBtYXliZV9zcGFjZSB7CisgICAgICAgIGlmICgkMykgeworICAgICAg
ICAgICAgJCQgPSAkMzsKKyAgICAgICAgICAgIENTU1BhcnNlclZhbHVlIHY7CisgICAgICAgICAg
ICB2LmlkID0gMDsKKyAgICAgICAgICAgIHYudW5pdCA9IENTU1BhcnNlclZhbHVlOjpPcGVyYXRv
cjsKKyAgICAgICAgICAgIHYuaVZhbHVlID0gJygnOworICAgICAgICAgICAgJCQtPmluc2VydFZh
bHVlQXQoMCwgdik7CisgICAgICAgICAgICB2LmlWYWx1ZSA9ICcpJzsKKyAgICAgICAgICAgICQk
LT5hZGRWYWx1ZSh2KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAkJCA9IDA7CisgICAg
fQorCitjYWxjX2Z1bmNfZXhwcjoKKyAgICBjYWxjX2Z1bmNfdGVybSBtYXliZV9zcGFjZSB7Cisg
ICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1ZhbHVlTGlzdCgpOworICAgICAgICAk
JC0+YWRkVmFsdWUocGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZSgkMSkpOworICAgIH0KKyAgICB8
IGNhbGNfZnVuY19leHByIGNhbGNfZnVuY19vcGVyYXRvciBjYWxjX2Z1bmNfdGVybSB7CisgICAg
ICAgIGlmICgkMSAmJiAkMikgeworICAgICAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgICAgIENT
U1BhcnNlclZhbHVlIHY7CisgICAgICAgICAgICB2LmlkID0gMDsKKyAgICAgICAgICAgIHYudW5p
dCA9IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvcjsKKyAgICAgICAgICAgIHYuaVZhbHVlID0gJDI7
CisgICAgICAgICAgICAkJC0+YWRkVmFsdWUodik7CisgICAgICAgICAgICAkJC0+YWRkVmFsdWUo
cGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZSgkMykpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgICQkID0gMDsKKworICAgIH0KKyAgICB8IGNhbGNfZnVuY19leHByIGNhbGNfZnVuY19vcGVy
YXRvciBjYWxjX2Z1bmNfcGFyZW5fZXhwciB7CisgICAgICAgIGlmICgkMSAmJiAkMiAmJiAkMykg
eworICAgICAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgICAgIENTU1BhcnNlclZhbHVlIHY7Cisg
ICAgICAgICAgICB2LmlkID0gMDsKKyAgICAgICAgICAgIHYudW5pdCA9IENTU1BhcnNlclZhbHVl
OjpPcGVyYXRvcjsKKyAgICAgICAgICAgIHYuaVZhbHVlID0gJDI7CisgICAgICAgICAgICAkJC0+
YWRkVmFsdWUodik7CisgICAgICAgICAgICAkJC0+ZXh0ZW5kKCooJDMpKTsKKyAgICAgICAgfSBl
bHNlIAorICAgICAgICAgICAgJCQgPSAwOworICAgIH0KKyAgICB8IGNhbGNfZnVuY19wYXJlbl9l
eHByCisgICAgfCBjYWxjX2Z1bmNfZXhwciBlcnJvciB7CisgICAgICAgICQkID0gMDsKKyAgICB9
CisgIDsKKworY2FsY19mdW5jX2V4cHJfbGlzdDoKKyAgICBjYWxjX2Z1bmNfZXhwciAgeworICAg
ICAgICAkJCA9ICQxOworICAgIH0gICAgCisgICAgfCBjYWxjX2Z1bmNfZXhwcl9saXN0ICcsJyBt
YXliZV9zcGFjZSBjYWxjX2Z1bmNfZXhwciB7CisgICAgICAgIGlmICgkMSAmJiAkNCkgeworICAg
ICAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgICAgIENTU1BhcnNlclZhbHVlIHY7CisgICAgICAg
ICAgICB2LmlkID0gMDsKKyAgICAgICAgICAgIHYudW5pdCA9IENTU1BhcnNlclZhbHVlOjpPcGVy
YXRvcjsKKyAgICAgICAgICAgIHYuaVZhbHVlID0gJywnOworICAgICAgICAgICAgJCQtPmFkZFZh
bHVlKHYpOworICAgICAgICAgICAgJCQtPmV4dGVuZCgqKCQ0KSk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgJCQgPSAwOworICAgIH0KKyAgICAKKworY2FsY19mdW5jdGlvbjoKKyAgICBD
QUxDRlVOQ1RJT04gbWF5YmVfc3BhY2UgY2FsY19mdW5jX2V4cHIgJyknIG1heWJlX3NwYWNlIHsK
KyAgICAgICAgQ1NTUGFyc2VyRnVuY3Rpb24qIGYgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVu
Y3Rpb24oKTsKKyAgICAgICAgZi0+bmFtZSA9ICQxOworICAgICAgICBmLT5hcmdzID0gcGFyc2Vy
LT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDMpOworICAgICAgICAkJC5pZCA9IDA7CisgICAgICAg
ICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb247CisgICAgICAgICQkLmZ1bmN0aW9u
ID0gZjsKKyAgICB9CisgICAgfCBDQUxDRlVOQ1RJT04gbWF5YmVfc3BhY2UgZXJyb3IgeworICAg
ICAgICBZWUVSUk9SOworICAgIH0KKyAgICA7CisKKworbWluX29yX21heDoKKyAgICBNSU5GVU5D
VElPTiB7CisgICAgICAgICQkID0gJDE7CisgICAgfQorICAgIHwgTUFYRlVOQ1RJT04geworICAg
ICAgICAkJCA9ICQxOworICAgIH0KKyAgICA7CisKK21pbl9vcl9tYXhfZnVuY3Rpb246CisgICAg
bWluX29yX21heCBtYXliZV9zcGFjZSBjYWxjX2Z1bmNfZXhwcl9saXN0ICcpJyBtYXliZV9zcGFj
ZSB7CisgICAgICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9hdGlu
Z0Z1bmN0aW9uKCk7CisgICAgICAgIGYtPm5hbWUgPSAkMTsKKyAgICAgICAgZi0+YXJncyA9IHBh
cnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQzKTsKKyAgICAgICAgJCQuaWQgPSAwOworICAg
ICAgICAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uOworICAgICAgICAkJC5mdW5j
dGlvbiA9IGY7CisgICAgfSAKKyAgICB8IG1pbl9vcl9tYXggbWF5YmVfc3BhY2UgZXJyb3Igewor
ICAgICAgICBZWUVSUk9SOworICAgIH0KKyAgICA7CisKKy8qIGVycm9yIGhhbmRsaW5nIHJ1bGVz
ICovCisKK3NhdmVfYmxvY2s6CisgICAgY2xvc2luZ19icmFjZSB7CisgICAgICAgICQkID0gMDsK
KyAgICB9CisgIHwgZXJyb3IgY2xvc2luZ19icmFjZSB7CisgICAgICAgICQkID0gMDsKKyAgICB9
CisgICAgOworCitpbnZhbGlkX2F0OgorICAgIEFUS0VZV09SRCBlcnJvciBpbnZhbGlkX2Jsb2Nr
IHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKyAgfCBBVEtFWVdPUkQgZXJyb3IgJzsnIHsKKyAg
ICAgICAgJCQgPSAwOworICAgIH0KKyAgICA7CisKK2ludmFsaWRfcnVsZToKKyAgICBlcnJvciBp
bnZhbGlkX2Jsb2NrIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKworLyoKKyAgU2VlbXMgbGlr
ZSB0aGUgdHdvIHJ1bGVzIGJlbG93IGFyZSB0cnlpbmcgdG9vIG11Y2ggYW5kIHZpb2xhdGluZwor
ICBodHRwOi8vd3d3LmhpeGllLmNoL3Rlc3RzL2V2aWwvbWl4ZWQvY3NzZXJyb3JoYW5kbGluZy5o
dG1sCisKKyAgfCBlcnJvciAnOycgeworICAgICAgICAkJCA9IDA7CisgICAgfQorICB8IGVycm9y
ICd9JyB7CisgICAgICAgICQkID0gMDsKKyAgICB9CisqLworICAgIDsKKworaW52YWxpZF9ibG9j
azoKKyAgICAneycgZXJyb3IgaW52YWxpZF9ibG9ja19saXN0IGVycm9yIGNsb3NpbmdfYnJhY2Ug
eworICAgICAgICBwYXJzZXItPmludmFsaWRCbG9ja0hpdCgpOworICAgIH0KKyAgfCAneycgZXJy
b3IgY2xvc2luZ19icmFjZSB7CisgICAgICAgIHBhcnNlci0+aW52YWxpZEJsb2NrSGl0KCk7Cisg
ICAgfQorICAgIDsKKworaW52YWxpZF9ibG9ja19saXN0OgorICAgIGludmFsaWRfYmxvY2sKKyAg
fCBpbnZhbGlkX2Jsb2NrX2xpc3QgZXJyb3IgaW52YWxpZF9ibG9jaworOworCislJQorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluY2x1ZGVzIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbmNsdWRlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjY4OTc0NTBi
NDFjNTgxNzAxOTNiOWIwMDhiNjQ2YjRjZGE2NjdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbmNsdWRlcwpAQCAtMCwwICsxLDg1IEBACislewor
CisvKgorICogIENvcHlyaWdodCAoQykgMjAwMi0yMDAzIExhcnMgS25vbGwgKGtub2xsQGtkZS5v
cmcpCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5
LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMp
IDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQorICogIENvcHlyaWdodCAo
QykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkNTU1Bh
cnNlci5oIgorI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIKKyNpbmNsdWRlICJDU1NQcmltaXRp
dmVWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKyNpbmNsdWRlICJDU1NT
ZWxlY3Rvci5oIgorI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgorI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCisj
aW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgorI2luY2x1ZGUgIlN0eWxlUnVsZS5oIgorI2luY2x1
ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgorI2luY2x1ZGUgIldlYktpdENTU0tleWZyYW1lUnVs
ZS5oIgorI2luY2x1ZGUgIldlYktpdENTU0tleWZyYW1lc1J1bGUuaCIKKyNpbmNsdWRlIDx3dGYv
RmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisK
KyNkZWZpbmUgWVlNQUxMT0MgZmFzdE1hbGxvYworI2RlZmluZSBZWUZSRUUgZmFzdEZyZWUKKwor
I2RlZmluZSBZWUVOQUJMRV9OTFMgMAorI2RlZmluZSBZWUxUWVBFX0lTX1RSSVZJQUwgMQorI2Rl
ZmluZSBZWU1BWERFUFRIIDEwMDAwCisjZGVmaW5lIFlZREVCVUcgMAorCisjaWYgWVlERUJVRyA+
IDAKKyNkZWZpbmUgWVlQUklOVChGaWxlLFR5cGUsVmFsdWUpIHByaW50X3Rva2VuX3ZhbHVlKEZp
bGUsVHlwZSxWYWx1ZSkKK3N0YXRpYyB2b2lkIHByaW50X3Rva2VuX3ZhbHVlKEZJTEUgKiB5eW91
dHB1dCwgaW50IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAmeXl2YWx1ZSkKK3sKKyAgICBzd2l0Y2gg
KHl5dHlwZSkgeworICAgIGNhc2UgSURFTlQ6CisgICAgY2FzZSBTVFJJTkc6CisgICAgY2FzZSBO
VEg6CisgICAgY2FzZSBIRVg6CisgICAgY2FzZSBJRFNFTDoKKyAgICBjYXNlIERJTUVOOgorICAg
IGNhc2UgSU5WQUxJRERJTUVOOgorICAgIGNhc2UgVVJJOgorICAgIGNhc2UgRlVOQ1RJT046Cisg
ICAgY2FzZSBBTllGVU5DVElPTjoKKyAgICBjYXNlIE5PVEZVTkNUSU9OOgorICAgIGNhc2UgQ0FM
Q0ZVTkNUSU9OOgorICAgIGNhc2UgTUlORlVOQ1RJT046CisgICAgY2FzZSBNQVhGVU5DVElPTjoK
KyAgICBjYXNlIFZBUl9ERUZJTklUSU9OOgorICAgIGNhc2UgVU5JQ09ERVJBTkdFOgorICAgICAg
ICBZWUZQUklOVEYoeXlvdXRwdXQsICIlcyIsIFN0cmluZyh5eXZhbHVlLnN0cmluZykudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOwor
ICAgIH0KK30KKyNlbmRpZgorCislfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL21h
a2VncmFtbWFyLnBsIGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2VncmFtbWFyLnBsCmluZGV4IDA2
ZmFhYTkzZDMyNjBhYjUzMDQxN2M0MzNlMTY4YzMzNWJjNjdhZWYuLjMyZjc1N2U3N2NmZDUwNDQ2
Y2JkMDkyNDYxNGQzNTU0ZDE4MGY1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9t
YWtlZ3JhbW1hci5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZWdyYW1tYXIucGwKQEAg
LTIxLDM1ICsyMSw3OSBAQAogdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5nczsKIAotbXkgJGdyYW1t
YXIgPSAkQVJHVlswXTsKLW15ICRmaWxlQmFzZSA9ICRBUkdWWzFdOwordXNlIENvbmZpZzsKK3Vz
ZSBGaWxlOjpCYXNlbmFtZTsKK3VzZSBGaWxlOjpTcGVjOwordXNlIEdldG9wdDo6TG9uZzsKIAot
c3lzdGVtKCJiaXNvbiAtZCAtcCBjc3N5eSAiIC4gJGdyYW1tYXIgLiAiIC1vICIgLiAkZmlsZUJh
c2UgLiAiLnRhYi5jIik7CityZXF1aXJlIENvbmZpZzsKIAotb3BlbiBIRUFERVIsICI+IiAuICRm
aWxlQmFzZSAuICIuaCIgb3IgZGllOworbXkgJGdjYyA9ICIiOworaWYgKCRFTlZ7Q0N9KSB7Cisg
ICAgJGdjYyA9ICRFTlZ7Q0N9OworfSBlbHNpZiAoKCRDb25maWc6OkNvbmZpZ3snb3NuYW1lJ30p
ID1+IC9zb2xhcmlzL2kpIHsKKyAgICAkZ2NjID0gIi91c3Ivc2Z3L2Jpbi9nY2MiOworfSBlbHNl
IHsKKyAgICAkZ2NjID0gIi91c3IvYmluL2djYyI7Cit9CisKK215ICRncmFtbWFyRmlsZVBhdGgg
PSAiIjsKK215ICRvdXRwdXREaXIgPSAiLiI7CitteSAkZXh0cmFEZWZpbmVzID0gIiI7CitteSAk
c3ltYm9sc1ByZWZpeCA9ICIiOworCitHZXRPcHRpb25zKAorICAgICdncmFtbWFyPXMnID0+IFwk
Z3JhbW1hckZpbGVQYXRoLAorICAgICdvdXRwdXREaXI9cycgPT4gXCRvdXRwdXREaXIsCisgICAg
J2V4dHJhRGVmaW5lcz1zJyA9PiBcJGV4dHJhRGVmaW5lcywKKyAgICAnc3ltYm9sc1ByZWZpeD1z
JyA9PiBcJHN5bWJvbHNQcmVmaXgKKyk7CisKK2RpZSAiTmVlZCBhIHN5bWJvbHMgcHJlZml4IHRv
IGdpdmUgdG8gYmlzb24gKGUuZy4gY3NzeXksIHhwYXRoeXkpIiB1bmxlc3MgbGVuZ3RoKCRzeW1i
b2xzUHJlZml4KTsKKworbXkgKCRmaWxlbmFtZSwgJGJhc2VQYXRoLCAkc3VmZml4KSA9IGZpbGVw
YXJzZSgkZ3JhbW1hckZpbGVQYXRoLCAoIi55IiwgIi55LmluIikpOworCitpZiAoJHN1ZmZpeCBl
cSAiLnkuaW4iKSB7CisgICAgbXkgJGdyYW1tYXJGaWxlSW5jbHVkZXNQYXRoID0gIiR7YmFzZVBh
dGh9JHtmaWxlbmFtZX0ueS5pbmNsdWRlcyI7CisgICAgbXkgJGdyYW1tYXJGaWxlT3V0UGF0aCA9
IEZpbGU6OlNwZWMtPmpvaW4oJG91dHB1dERpciwgIiRmaWxlbmFtZS55Iik7CisgICAgbXkgJGZl
YXR1cmVGbGFncyA9ICItRCAiIC4gam9pbigiIC1EICIsIHNwbGl0KCIgIiwgJGV4dHJhRGVmaW5l
cykpOworCisgICAgc3lzdGVtKCRnY2MgLiAiIC1FIC1QIC14IGMgJGdyYW1tYXJGaWxlUGF0aCAk
ZmVhdHVyZUZsYWdzID4gJGdyYW1tYXJGaWxlT3V0UGF0aC5wcm9jZXNzZWQiICk7CisKKyAgICBv
cGVuIEdSQU1NQVIsICI+JGdyYW1tYXJGaWxlT3V0UGF0aCIgb3IgZGllOworICAgIG9wZW4gSU5D
TFVERVMsICI8JGdyYW1tYXJGaWxlSW5jbHVkZXNQYXRoIiBvciBkaWU7CisgICAgb3BlbiBQUk9D
RVNTRUQsICI8JGdyYW1tYXJGaWxlT3V0UGF0aC5wcm9jZXNzZWQiIG9yIGRpZTsKKworICAgIHdo
aWxlICg8SU5DTFVERVM+KSB7CisgICAgICAgIHByaW50IEdSQU1NQVI7CisgICAgfQorICAgIHdo
aWxlICg8UFJPQ0VTU0VEPikgeworICAgICAgICBwcmludCBHUkFNTUFSOworICAgIH0KKworICAg
IGNsb3NlIEdSQU1NQVI7CisgICAgdW5saW5rKCIkZ3JhbW1hckZpbGVPdXRQYXRoLnByb2Nlc3Nl
ZCIpOworICAgICRncmFtbWFyRmlsZVBhdGggPSAkZ3JhbW1hckZpbGVPdXRQYXRoOworfQorCitt
eSAkZmlsZUJhc2UgPSBGaWxlOjpTcGVjLT5qb2luKCRvdXRwdXREaXIsICRmaWxlbmFtZSk7Citz
eXN0ZW0oImJpc29uIC1kIC1wICRzeW1ib2xzUHJlZml4ICRncmFtbWFyRmlsZVBhdGggLW8gJGZp
bGVCYXNlLmNwcCIpOworCitvcGVuIEhFQURFUiwgIj4kZmlsZUJhc2UuaCIgb3IgZGllOwogcHJp
bnQgSEVBREVSIDw8ICJFT0YiOwogI2lmbmRlZiBDU1NHUkFNTUFSX0gKICNkZWZpbmUgQ1NTR1JB
TU1BUl9ICiBFT0YKIAotb3BlbiBIUFAsICI8IiAuICRmaWxlQmFzZSAuICIudGFiLmgiIG9yIGRp
ZTsKK29wZW4gSFBQLCAiPCRmaWxlQmFzZS5jcHAuaCIgb3Igb3BlbiBIUFAsICI8JGZpbGVCYXNl
LmhwcCIgb3IgZGllOwogd2hpbGUgKDxIUFA+KSB7CiAgICAgcHJpbnQgSEVBREVSOwogfQogY2xv
c2UgSFBQOwogCiBwcmludCBIRUFERVIgIiNlbmRpZlxuIjsKLQogY2xvc2UgSEVBREVSOwogCi11
bmxpbmsoJGZpbGVCYXNlIC4gIi50YWIuaCIpOwotCi1vcGVuIENQUCwgIj4iIC4gJGZpbGVCYXNl
IC4gIi5jcHAiIG9yIGRpZTsKLW9wZW4gR0VOU1JDLCAiPCIgLiAkZmlsZUJhc2UgLiAiLnRhYi5j
IiBvciBkaWU7Ci13aGlsZSAoPEdFTlNSQz4pIHsKLSAgICBwcmludCBDUFA7Ci19Ci1jbG9zZSBH
RU5TUkM7Ci1jbG9zZSBDUFA7Cit1bmxpbmsoIiRmaWxlQmFzZS5jcHAuaCIpOwordW5saW5rKCIk
ZmlsZUJhc2UuaHBwIik7CiAKLXVubGluaygkZmlsZUJhc2UgLiAiLnRhYi5jIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlIGIvU291cmNlL2NtYWtlL1dlYktp
dE1hY3Jvcy5jbWFrZQppbmRleCBlZDhlYjVkMzIwZjIzZGQ4ZGY4NGJiNzRlNmQ3ZTI5ZjU1OTA0
NWVmLi5hMTBjZTU1ZjA2M2FmN2QyNGVlOWRjZjc4MmViOTBlZDY4OWQ1NmQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9XZWJL
aXRNYWNyb3MuY21ha2UKQEAgLTE0OCwxMSArMTQ4LDEyIEBAIE1BQ1JPIChHRU5FUkFURV9IQVNI
X0xVVCBfaW5wdXQgX291dHB1dCkKIEVORE1BQ1JPICgpCiAKIAotTUFDUk8gKEdFTkVSQVRFX0dS
QU1NQVIgX3ByZWZpeCBfaW5wdXQgX291dHB1dF9oZWFkZXIgX291dHB1dF9zb3VyY2UpCitNQUNS
TyAoR0VORVJBVEVfR1JBTU1BUiBfcHJlZml4IF9pbnB1dCBfb3V0cHV0X2hlYWRlciBfb3V0cHV0
X3NvdXJjZSBfb3RoZXJfZGVwZW5kZW5jaWVzIF9mZWF0dXJlcykKICAgICBBRERfQ1VTVE9NX0NP
TU1BTkQoCiAgICAgICAgIE9VVFBVVCAke19vdXRwdXRfaGVhZGVyfSAke19vdXRwdXRfc291cmNl
fQogICAgICAgICBNQUlOX0RFUEVOREVOQ1kgJHtfaW5wdXR9Ci0gICAgICAgIENPTU1BTkQgJHtC
SVNPTl9FWEVDVVRBQkxFfSAtcCAke19wcmVmaXh9ICR7X2lucHV0fSAtbyAke19vdXRwdXRfc291
cmNlfSAtLWRlZmluZXM9JHtfb3V0cHV0X2hlYWRlcn0KKyAgICAgICAgREVQRU5EUyAke19pbnB1
dH0gJHtfb3RoZXJfZGVwZW5kZW5jaWVzfQorICAgICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRB
QkxFfSAke1dFQkNPUkVfRElSfS9jc3MvbWFrZWdyYW1tYXIucGwgLS1ncmFtbWFyICR7X2lucHV0
fSAtLW91dHB1dERpciAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0gLS1leHRyYURlZmlu
ZXMgIiR7X2ZlYXR1cmVzfSIgLS1zeW1ib2xzUHJlZml4ICR7X3ByZWZpeH0KICAgICAgICAgVkVS
QkFUSU0pCiBFTkRNQUNSTyAoKQogCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cK
aW5kZXggYjFiN2NlYWQ4Yzk4MGQxZDFkZTAyZTg0OTU2OGZjNjE5NDI0ZmRiOS4uOWVjZmZjODMx
MDc0MzQ3MjVkYzA1NGU3MzNmMjE5ZTVkZDBjNTEzYyAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisr
KyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTEwLTA5ICBQYWJsbyBGbG91cmV0
ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBQcmUtcHJvY2VzcyBDU1NHcmFtbWFy
LnkgYmVmb3JlIHJ1bm5pbmcgdGhyb3VnaCBiaXNvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MjkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtl
OgorICAgICAgICAgICAgVXNlIFdlYkNvcmUvY3NzL21ha2VncmFtbWFyLnBsIHRvIGdlbmVyYXRl
IGJpc29uIGdyYW1tYXIgZmlsZXMuCisKIDIwMTItMTAtMDkgIFNpbW9uIFBlbmEgIDxzcGVuYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBydW5uaW5nIEphdmFT
Y3JpcHQgZnJvbSBHUmVzb3VyY2VzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167860</attachid>
            <date>2012-10-09 15:20:56 -0700</date>
            <delta_ts>2012-10-12 13:34:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94290-20121009151956.patch</filename>
            <type>text/plain</type>
            <size>119461</size>
            <attacher name="Pablo Flouret">pf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQxMjM2OTljNGMxMDg0
NDljYjVlZDM2Yjk2MWU0MjI0ZDhhZTcxMi4uMTYxZTI4YmY4MzZkZGU0NmM3MDM2MzBmYmQwYTgz
ZWQ4YjQ3ZGQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTEwLTA5ICBQYWJs
byBGbG91cmV0ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBQcmUtcHJvY2VzcyBD
U1NHcmFtbWFyLnkgYmVmb3JlIHJ1bm5pbmcgdGhyb3VnaCBiaXNvbi4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MjkwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUnVubmluZyBDU1NHcmFtbWFyLnkgdGhy
b3VnaCBhIHByZXByb2Nlc3NvciBhbGxvd3MgdGhlIHVzZSBvZiBmZWF0dXJlCisgICAgICAgIGRl
ZmluZXMgaW4gYWxsIHBsYWNlcyBvZiB0aGUgeWFjYyBmaWxlIChpLmUuIG5vdCBqdXN0IGluIEMg
YmxvY2tzKS4KKyAgICAgICAgTW9zdGx5IHVzZWZ1bCB0byBiZSBhYmxlIHRvIGtlZXAgZXZlcnkg
cGFydCBvZiBhIGZlYXR1cmUgdW5kZXIgZmVhdHVyZQorICAgICAgICBmbGFncyBmb3Igc2VsZi1k
b2N1bWVudGluZyBwdXJwb3Nlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIENTU0dyYW1tYXIu
eSBzaG91bGQgYmUgZ2VuZXJhdGVkIGNvcnJlY3RseSBhbmQgZXZlcnl0aGluZworICAgICAgICBz
aG91bGQga2VlcCB3b3JraW5nIGFzIGJlZm9yZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMucHJpOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAgICAgTW9kaWZ5IGJ1
aWxkIHN5c3RlbXMgdG8gdXNlIG1ha2VncmFtbWFyLnBsIHRvIGdlbmVyYXRlIHRoZSAueSBmaWxl
cworICAgICAgICAgICAgYW5kIHJ1biB0aG9zZSB0aHJvdWdoIGJpc29uLgorCisgICAgICAgICog
V2ViQ29yZS5neXAvV2ViQ29yZS5neXA6CisgICAgICAgICogV2ViQ29yZS5neXAvc2NyaXB0cy9h
Y3Rpb25fcHJlcHJvY2Vzc2dyYW1tYXIucHk6IEFkZGVkLgorICAgICAgICAgICAgQWRkIGEgbmV3
IGFjdGlvbiB0byBwcmVwcm9jZXNzIHRoZSBDU1NHcmFtbWFyLnkuaW4gZmlsZSBiZWZvcmUgdGhl
CisgICAgICAgICAgICBiaXNvbiBydWxlIGlzIHJ1bi4KKworICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgICAgIEFkZCB0aGUgbmV3IC55LmluIC8gLnkuaW5jbHVkZXMgZmls
ZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55LmluOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS4KKyAgICAgICAgICAgIEFsc28gbW92ZWQgdGhlIHRv
cCBkZWNsYXJhdGlvbnMgc2VjdGlvbiB0aGF0IGhhcyBpbmNsdWRlcywgZGVmaW5lcywKKyAgICAg
ICAgICAgIGV0Yy4gdG8gaXRzIG93biBmaWxlLiBUaGVzZSBzaG91bGRuJ3QgYmUgdG91Y2hlZCBi
eSB0aGUgZmlyc3QKKyAgICAgICAgICAgIHBhc3Mgb2YgdGhlIHByZXByb2Nlc3Nvci4gQW5kIGNo
YW5nZWQgdGhlIGV4aXN0aW5nIEVOQUJMRShGRUFUVVJFKQorICAgICAgICAgICAgaWZkZWZzIHRv
IEVOQUJMRV9GRUFUVVJFIHNpbmNlIHRoZSBFTkFCTEUoKSBtYWNybyBpcyBub3QgYXZhaWxhYmxl
CisgICAgICAgICAgICB5ZXQuCisgICAgICAgICogY3NzL0NTU0dyYW1tYXIueS5pbmNsdWRlczog
QWRkZWQuCisgICAgICAgICAgICBUaGUgYWZvcmVtZW50aW9uZWQgZGVjbGFyYXRpb25zIGhlYWRl
ciBzZWN0aW9uLiBBZnRlciB0aGUgLnkuaW4gZmlsZQorICAgICAgICAgICAgaXMgcHJvY2Vzc2Vk
IGl0IHdpbGwgYmUgY29uY2F0ZW5hdGVkIHdpdGggdGhpcyBvbmUgdG8gbWFrZSB0aGUKKyAgICAg
ICAgICAgIENTU0dyYW1tYXIueSBmaWxlLgorCisgICAgICAgICogY3NzL21ha2VncmFtbWFyLnBs
OgorICAgICAgICAgICAgTW9kaWZ5IHRoZSBzY3JpcHQgdG8gaGFuZGxlIC55LmluIGZpbGVzLgor
CiAyMDEyLTEwLTA5ICBQcmF2aW4gRCAgPHByYXZpbmQuMms0QGdtYWlsLmNvbT4KIAogICAgICAg
ICBtYXgtd2lkdGggcHJvcGVydHkgaXMgZG9lcyBub3Qgb3ZlcnJpZGluZyB0aGUgd2lkdGggcHJv
cGVydGllcyBmb3IgY3NzIHRhYmxlcyhkaXNwbGF5OnRhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCA4NjY0NGIxOGJmNTY4NDU1NjA1ZDJhMzBjMmQyMDc4NjlmOTYyOTYzLi4wYWE5NjliNTU1
NDk5YWZiOTY1MWE3ZjIyMDc5MjNhNDY2YWM3ZjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
Mjg1OCwxMSArMjg1OCwxMSBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtERVJJVkVE
X1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1VzZXJBZ2VudFN0eWxlU2hlZXRzRAogQUREX1NPVVJDRV9X
RUJDT1JFX0RFUklWRURfREVQRU5ERU5DSUVTKCR7V0VCQ09SRV9ESVJ9L2Nzcy9TdHlsZVJlc29s
dmVyLmNwcCBVc2VyQWdlbnRTdHlsZVNoZWV0c0RhdGEuY3BwIFVzZXJBZ2VudFN0eWxlU2hlZXRz
LmgpCiAKIAotR0VORVJBVEVfR1JBTU1BUihjc3N5eSAke1dFQkNPUkVfRElSfS9jc3MvQ1NTR3Jh
bW1hci55ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9DU1NHcmFtbWFyLmggJHtERVJJ
VkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0NTU0dyYW1tYXIuY3BwKQorR0VORVJBVEVfR1JBTU1B
Uihjc3N5eSAke1dFQkNPUkVfRElSfS9jc3MvQ1NTR3JhbW1hci55LmluICR7REVSSVZFRF9TT1VS
Q0VTX1dFQkNPUkVfRElSfS9DU1NHcmFtbWFyLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9E
SVJ9L0NTU0dyYW1tYXIuY3BwICR7V0VCQ09SRV9ESVJ9L2Nzcy9DU1NHcmFtbWFyLnkuaW5jbHVk
ZXMgIiR7RkVBVFVSRV9ERUZJTkVTX1dJVEhfU1BBQ0VfU0VQQVJBVE9SfSIpCiBMSVNUKEFQUEVO
RCBXZWJDb3JlX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0NTU0dyYW1t
YXIuY3BwKQogCiAKLUdFTkVSQVRFX0dSQU1NQVIoeHBhdGh5eSAke1dFQkNPUkVfRElSfS94bWwv
WFBhdGhHcmFtbWFyLnkgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1hQYXRoR3JhbW1h
ci5oICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9YUGF0aEdyYW1tYXIuY3BwKQorR0VO
RVJBVEVfR1JBTU1BUih4cGF0aHl5ICR7V0VCQ09SRV9ESVJ9L3htbC9YUGF0aEdyYW1tYXIueSAk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vWFBhdGhHcmFtbWFyLmggJHtERVJJVkVEX1NP
VVJDRVNfV0VCQ09SRV9ESVJ9L1hQYXRoR3JhbW1hci5jcHAgIiIgIiIpCiBMSVNUKEFQUEVORCBX
ZWJDb3JlX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1hQYXRoR3JhbW1h
ci5jcHApCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZDY5MDg1NjRkMGQ1
ZDc5Y2ZjYjY2MGI0YmRhM2Q0YTdmYjYyY2EwMS4uMDU3ZjA4NzU3YTEzNmE0MWE5ZDVhYzA5MzRh
OGQ2OWRiNDdlNTEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC03NzksMzIg
Kzc3OSwxNCBAQCBlbmRpZgogIyAtLS0tLS0tLQogCiAjIENTUyBncmFtbWFyCi0jIE5PVEU6IE9s
ZGVyIHZlcnNpb25zIG9mIGJpc29uIGRvIG5vdCBpbmplY3QgYW4gaW5jbHVzaW9uIGd1YXJkLCBz
byB3ZSBhZGQgb25lLgotCi1DU1NHcmFtbWFyLmNwcCA6IGNzcy9DU1NHcmFtbWFyLnkKLQkkKEJJ
U09OKSAtZCAtcCBjc3N5eSAkPCAtbyAkQAotCXRvdWNoIENTU0dyYW1tYXIuY3BwLmgKLQl0b3Vj
aCBDU1NHcmFtbWFyLmhwcAotCWVjaG8gJyNpZm5kZWYgQ1NTR3JhbW1hcl9oJyA+IENTU0dyYW1t
YXIuaAotCWVjaG8gJyNkZWZpbmUgQ1NTR3JhbW1hcl9oJyA+PiBDU1NHcmFtbWFyLmgKLQljYXQg
Q1NTR3JhbW1hci5jcHAuaCBDU1NHcmFtbWFyLmhwcCA+PiBDU1NHcmFtbWFyLmgKLQllY2hvICcj
ZW5kaWYnID4+IENTU0dyYW1tYXIuaAotCXJtIC1mIENTU0dyYW1tYXIuY3BwLmggQ1NTR3JhbW1h
ci5ocHAKK0NTU0dyYW1tYXIuY3BwIDogY3NzL0NTU0dyYW1tYXIueS5pbgorCXBlcmwgJChXZWJD
b3JlKS9jc3MvbWFrZWdyYW1tYXIucGwgLS1ncmFtbWFyICQ8IC0tZXh0cmFEZWZpbmVzICIkKEZF
QVRVUkVfREVGSU5FUykiIC0tb3V0cHV0RGlyIC4gLS1zeW1ib2xzUHJlZml4IGNzc3l5CiAKICMg
LS0tLS0tLS0KIAogIyBYUGF0aCBncmFtbWFyCi0jIE5PVEU6IE9sZGVyIHZlcnNpb25zIG9mIGJp
c29uIGRvIG5vdCBpbmplY3QgYW4gaW5jbHVzaW9uIGd1YXJkLCBzbyB3ZSBhZGQgb25lLgotCiBY
UGF0aEdyYW1tYXIuY3BwIDogeG1sL1hQYXRoR3JhbW1hci55ICQoUFJPSkVDVF9GSUxFKQotCSQo
QklTT04pIC1kIC1wIHhwYXRoeXkgJDwgLW8gJEAKLQl0b3VjaCBYUGF0aEdyYW1tYXIuY3BwLmgK
LQl0b3VjaCBYUGF0aEdyYW1tYXIuaHBwCi0JZWNobyAnI2lmbmRlZiBYUGF0aEdyYW1tYXJfaCcg
PiBYUGF0aEdyYW1tYXIuaAotCWVjaG8gJyNkZWZpbmUgWFBhdGhHcmFtbWFyX2gnID4+IFhQYXRo
R3JhbW1hci5oCi0JY2F0IFhQYXRoR3JhbW1hci5jcHAuaCBYUGF0aEdyYW1tYXIuaHBwID4+IFhQ
YXRoR3JhbW1hci5oCi0JZWNobyAnI2VuZGlmJyA+PiBYUGF0aEdyYW1tYXIuaAotCXJtIC1mIFhQ
YXRoR3JhbW1hci5jcHAuaCBYUGF0aEdyYW1tYXIuaHBwCisJcGVybCAkKFdlYkNvcmUpL2Nzcy9t
YWtlZ3JhbW1hci5wbCAtLWdyYW1tYXIgJDwgLS1vdXRwdXREaXIgLiAtLXN5bWJvbHNQcmVmaXgg
eHBhdGh5eQogCiAjIC0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLnByaSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQppbmRleCA4
NGM5ZDA3NzcxZWQxYTE3NDU2NjcyZTI3MWUzMzFiY2E0ZTY4NThlLi5iNjQ0YmVjZGFhNzlmNGEw
MjY3YWI1Mjg3Y2MwM2E1MTczMDFmYjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCkBA
IC0yNCw3ICsyNCw3IEBAIFNWR19OQU1FUyA9ICQkUFdEL3N2Zy9zdmd0YWdzLmluCiAKIFhMSU5L
X05BTUVTID0gJCRQV0Qvc3ZnL3hsaW5rYXR0cnMuaW4KIAotQ1NTQklTT04gPSAkJFBXRC9jc3Mv
Q1NTR3JhbW1hci55CitDU1NCSVNPTiA9ICQkUFdEL2Nzcy9DU1NHcmFtbWFyLnkuaW4KIAogZW5h
YmxlPyhYU0xUKSB7CiAgICAgWE1MVklFV0VSX0NTUyA9ICQkUFdEL3htbC9YTUxWaWV3ZXIuY3Nz
CkBAIC04MDQsNyArODA0LDcgQEAgR0VORVJBVE9SUyArPSBJbmplY3RlZFNjcmlwdENhbnZhc01v
ZHVsZVNvdXJjZQogY3NzYmlzb24ub3V0cHV0ID0gJHtRTUFLRV9GSUxFX0JBU0V9LmNwcAogY3Nz
Ymlzb24uaW5wdXQgPSBDU1NCSVNPTgogY3NzYmlzb24uc2NyaXB0ID0gJCRQV0QvY3NzL21ha2Vn
cmFtbWFyLnBsCi1jc3NiaXNvbi5jb21tYW5kcyA9IHBlcmwgJCRjc3NiaXNvbi5zY3JpcHQgJHtR
TUFLRV9GSUxFX05BTUV9ICR7UU1BS0VfRlVOQ19GSUxFX09VVF9QQVRIfS8ke1FNQUtFX0ZJTEVf
QkFTRX0KK2Nzc2Jpc29uLmNvbW1hbmRzID0gcGVybCAkJGNzc2Jpc29uLnNjcmlwdCAtLWdyYW1t
YXIgJHtRTUFLRV9GSUxFX05BTUV9IC0tb3V0cHV0RGlyICR7UU1BS0VfRlVOQ19GSUxFX09VVF9Q
QVRIfSAtLWV4dHJhRGVmaW5lcyBcIiQke0RFRklORVN9ICQkY29uZmlnRGVmaW5lcygpXCIgLS1z
eW1ib2xzUHJlZml4IGNzc3l5CiBjc3NiaXNvbi5kZXBlbmRzID0gJHtRTUFLRV9GSUxFX05BTUV9
CiBHRU5FUkFUT1JTICs9IGNzc2Jpc29uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNWNlODU5
NWEwZjIyMTVmNzNiNjBmZmRjMTNkNWZlZjcxMTE5ODliOC4uMzA3ZWIzN2VlMWE2OWIyOTU4MGQy
YWEyYmViODUxNWU5OTMzMjAxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTIwMCwxOCArMjAw
LDEwIEBAIGZlYXR1cmVfZGVmaW5lc19vdmVycmlkZXMgKz0gRU5BQkxFX01FRElBX1NUUkVBTT0w
CiBlbmRpZiAjIEVORCBFTkFCTEVfTUVESUFfU1RSRUFNCiAKICMgWFBhdGggZ3JhbW1hcgotIyBO
T1RFOiBvbGRlciB2ZXJzaW9ucyBvZiBiaXNvbiBkbyBub3QgaW5qZWN0IGFuIGluY2x1c2lvbiBn
dWFyZCwgc28gd2UgZG8gaXQKICQoR0VOU09VUkNFU19XRUJDT1JFKS9YUGF0aEdyYW1tYXIuaDog
JChHRU5TT1VSQ0VTX1dFQkNPUkUpL1hQYXRoR3JhbW1hci5jcHAKICQoR0VOU09VUkNFU19XRUJD
T1JFKS9YUGF0aEdyYW1tYXIuY3BwOiAkKFdlYkNvcmUpL3htbC9YUGF0aEdyYW1tYXIueQogCSQo
QU1fVl9HRU4pCi0JJChBTV9WX2F0KXJtIC1mICQoR0VOU09VUkNFU19XRUJDT1JFKS9YUGF0aEdy
YW1tYXIuY3BwLmggJChHRU5TT1VSQ0VTX1dFQkNPUkUpL1hQYXRoR3JhbW1hci5ocHAKLQkkKEFN
X1ZfYXQpJChCSVNPTikgLWQgLXAgeHBhdGh5eSAkPCAtbyAkKEdFTlNPVVJDRVNfV0VCQ09SRSkv
WFBhdGhHcmFtbWFyLmNwcAotCSQoQU1fVl9hdCl0b3VjaCAkKEdFTlNPVVJDRVNfV0VCQ09SRSkv
WFBhdGhHcmFtbWFyLmNwcC5oICQoR0VOU09VUkNFU19XRUJDT1JFKS9YUGF0aEdyYW1tYXIuaHBw
Ci0JJChBTV9WX2F0KWVjaG8gJyNpZm5kZWYgWFBhdGhHcmFtbWFyX2gnID4gJChHRU5TT1VSQ0VT
X1dFQkNPUkUpL1hQYXRoR3JhbW1hci5oCi0JJChBTV9WX2F0KWVjaG8gJyNkZWZpbmUgWFBhdGhH
cmFtbWFyX2gnID4+ICQoR0VOU09VUkNFU19XRUJDT1JFKS9YUGF0aEdyYW1tYXIuaAotCSQoQU1f
Vl9hdCljYXQgJChHRU5TT1VSQ0VTX1dFQkNPUkUpL1hQYXRoR3JhbW1hci5jcHAuaCAkKEdFTlNP
VVJDRVNfV0VCQ09SRSkvWFBhdGhHcmFtbWFyLmhwcCA+PiAkKEdFTlNPVVJDRVNfV0VCQ09SRSkv
WFBhdGhHcmFtbWFyLmgKLQkkKEFNX1ZfYXQpZWNobyAnI2VuZGlmJyA+PiAkKEdFTlNPVVJDRVNf
V0VCQ09SRSkvWFBhdGhHcmFtbWFyLmgKLQkkKEFNX1ZfYXQpcm0gLWYgJChHRU5TT1VSQ0VTX1dF
QkNPUkUpL1hQYXRoR3JhbW1hci5jcHAuaCAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvWFBhdGhHcmFt
bWFyLmhwcAorCSQoQU1fVl9hdClwZXJsICQoV2ViQ29yZSkvY3NzL21ha2VncmFtbWFyLnBsIC0t
Z3JhbW1hciAkPCAtLW91dHB1dERpciAkKEdFTlNPVVJDRVNfV0VCQ09SRSkgLS1zeW1ib2xzUHJl
Zml4IHhwYXRoeXkKIAogIyAtLS0tCiAjIFhTTFQgU3VwcG9ydApAQCAtNDE4LDE4ICs0MTAsMTAg
QEAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9Db2xvckRhdGEuY3BwOiAkKFdlYkNvcmUpL3BsYXRm
b3JtL0NvbG9yRGF0YS5ncGVyZiAkKFdlYkMKIAogIyBDU1MgZ3JhbW1hcgogCi0jIE5PVEU6IG9s
ZGVyIHZlcnNpb25zIG9mIGJpc29uIGRvIG5vdCBpbmplY3QgYW4gaW5jbHVzaW9uIGd1YXJkLCBz
byB3ZSBkbyBpdAogRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NHcmFtbWFyLmg6ICQoR0VOU09V
UkNFU19XRUJDT1JFKS9DU1NHcmFtbWFyLmNwcAotRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NH
cmFtbWFyLmNwcDogJChXZWJDb3JlKS9jc3MvQ1NTR3JhbW1hci55CitEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0NTU0dyYW1tYXIuY3BwOiAkKFdlYkNvcmUpL2Nzcy9DU1NHcmFtbWFyLnkuaW4KIAkk
KEFNX1ZfR0VOKQotCSQoQU1fVl9hdClybSAtZiAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvQ1NTR3Jh
bW1hci5jcHAuaCAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvQ1NTR3JhbW1hci5ocHAKLQkkKEFNX1Zf
YXQpJChCSVNPTikgLWQgLXAgY3NzeXkgJDwgLW8gJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0NTU0dy
YW1tYXIuY3BwCi0JJChBTV9WX2F0KXRvdWNoICQoR0VOU09VUkNFU19XRUJDT1JFKS9DU1NHcmFt
bWFyLmNwcC5oICQoR0VOU09VUkNFU19XRUJDT1JFKS9DU1NHcmFtbWFyLmhwcAotCSQoQU1fVl9h
dCllY2hvICcjaWZuZGVmIENTU0dyYW1tYXJfaCcgPiAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvQ1NT
R3JhbW1hci5oCi0JJChBTV9WX2F0KWVjaG8gJyNkZWZpbmUgQ1NTR3JhbW1hcl9oJyA+PiAkKEdF
TlNPVVJDRVNfV0VCQ09SRSkvQ1NTR3JhbW1hci5oCi0JJChBTV9WX2F0KWNhdCAkKEdFTlNPVVJD
RVNfV0VCQ09SRSkvQ1NTR3JhbW1hci5jcHAuaCAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvQ1NTR3Jh
bW1hci5ocHAgPj4gJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0NTU0dyYW1tYXIuaAotCSQoQU1fVl9h
dCllY2hvICcjZW5kaWYnID4+ICQoR0VOU09VUkNFU19XRUJDT1JFKS9DU1NHcmFtbWFyLmgKLQkk
KEFNX1ZfYXQpcm0gLWYgJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0NTU0dyYW1tYXIuY3BwLmggJChH
RU5TT1VSQ0VTX1dFQkNPUkUpL0NTU0dyYW1tYXIuaHBwCisJJChBTV9WX2F0KXBlcmwgJChXZWJD
b3JlKS9jc3MvbWFrZWdyYW1tYXIucGwgLS1ncmFtbWFyICQ8IC0tZXh0cmFEZWZpbmVzICIkKGZl
YXR1cmVfZGVmaW5lcykiIC0tb3V0cHV0RGlyICQoR0VOU09VUkNFU19XRUJDT1JFKSAtLXN5bWJv
bHNQcmVmaXggY3NzeXkKIAogIyB1c2VyIGFnZW50IHN0eWxlIHNoZWV0cwogVVNFUl9BR0VOVF9T
VFlMRV9TSEVFVFMgPSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9X
ZWJDb3JlLmd5cCBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCmluZGV4
IGUxYWI2NTQxZmU0NjE3NGViMzVjM2NkMWVkN2ZlNDk0MTljODc0MWUuLmNkYmZiNDljNmFjYmU1
MjdhNmFlYWY4ZWFhMzVlNDBmMTRlYmNjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dl
YkNvcmUuZ3lwCkBAIC01ODUsNyArNTg1LDcgQEAKICAgICAgIH0sCiAgICAgICAnc291cmNlcyc6
IFsKICAgICAgICAgIyBiaXNvbiBydWxlCi0gICAgICAgICcuLi9jc3MvQ1NTR3JhbW1hci55JywK
KyAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC9DU1NHcmFtbWFyLnkn
LAogICAgICAgICAnLi4veG1sL1hQYXRoR3JhbW1hci55JywKIAogICAgICAgICAjIGdwZXJmIHJ1
bGUKQEAgLTEwNzYsNiArMTA3NiwyNSBAQAogICAgICAgICAgICAgJzxAKGRlcml2ZWRfc291cmNl
c19hZ2dyZWdhdGVfZmlsZXMpJywKICAgICAgICAgICBdLAogICAgICAgICB9LAorICAgICAgICB7
CisgICAgICAgICAgJ2FjdGlvbl9uYW1lJzogJ3ByZXByb2Nlc3NfZ3JhbW1hcicsCisgICAgICAg
ICAgJ2lucHV0cyc6IFsKKyAgICAgICAgICAgICcuLi9jc3MvQ1NTR3JhbW1hci55LmluJywKKyAg
ICAgICAgICAgICcuLi9jc3MvQ1NTR3JhbW1hci55LmluY2x1ZGVzJywKKyAgICAgICAgICBdLAor
ICAgICAgICAgICdvdXRwdXRzJzogWworICAgICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFU
RV9ESVIpL3dlYmtpdC9DU1NHcmFtbWFyLnknLAorICAgICAgICAgIF0sCisgICAgICAgICAgJ2Fj
dGlvbic6IFsKKyAgICAgICAgICAgICdweXRob24nLAorICAgICAgICAgICAgJ3NjcmlwdHMvYWN0
aW9uX3ByZXByb2Nlc3NncmFtbWFyLnB5JywKKyAgICAgICAgICAgICctLW91dHB1dC1kaXInLAor
ICAgICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC8nLAorICAgICAg
ICAgICAgJy0tZGVmaW5lcycsCisgICAgICAgICAgICAnPChmZWF0dXJlX2RlZmluZXMpJywKKyAg
ICAgICAgICAgICc8QChfaW5wdXRzKScsCisgICAgICAgICAgXSwKKyAgICAgICAgfSwKICAgICAg
IF0sCiAgICAgICAncnVsZXMnOiBbCiAgICAgICAgICMgUnVsZXMgdG8gYnVpbGQgZGVyaXZlZCBz
b3VyY2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvc2NyaXB0cy9h
Y3Rpb25fcHJlcHJvY2Vzc2dyYW1tYXIucHkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9z
Y3JpcHRzL2FjdGlvbl9wcmVwcm9jZXNzZ3JhbW1hci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZGIxMzkxYzU4
NDFiZDY4ZThmZGEzY2IzOTRlY2IxOGY2ZWVlYzBkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXAvc2NyaXB0cy9hY3Rpb25fcHJlcHJvY2Vzc2dyYW1tYXIucHkK
QEAgLTAsMCArMSw5MyBAQAorIyEvdXNyL2Jpbi9weXRob24KKyMKKyMgQ29weXJpZ2h0IChDKSAy
MDA5IE1vdG9yb2xhIE1vYmlsaXR5IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBNb3Rvcm9sYSBNb2JpbGl0eSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKyMgVXNhZ2U6IHNlZSBhY3Rpb25fcHJlcHJvY2Vzc2dy
YW1tYXIucHkgLS1oZWxwCisjCisKK2ltcG9ydCBlcnJubworaW1wb3J0IGdldG9wdAoraW1wb3J0
IGl0ZXJ0b29scworaW1wb3J0IG9zCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHNobGV4CitpbXBv
cnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworZnJvbSBTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8K
KworCitkZWYgZXhpdF93aXRoX3VzYWdlKGV4aXRfY29kZSk6CisgICAgcHJpbnQgIlVzYWdlOlxu
XHQlcyBbLWh8LS1oZWxwXSBbLS1vdXRwdXQtZGlyIDxwYXRoPl0gWy0tZGVmaW5lcyA8c3BhY2Ut
c2VwYXJhdGVkLWZlYXR1cmUtZmxhZ3M+XSA8ZmlsZW5hbWUueS5pbj4gWzxmaWxlbmFtZS55Lmlu
Y2x1ZGVzPl0iCisgICAgZXhpdChleGl0X2NvZGUpCisKK29wdGlvbnMsIGFyZ3VtZW50cyA9IGdl
dG9wdC5nZXRvcHQoc3lzLmFyZ3ZbMTpdLCAiaCIsIFsiaGVscCIsICJvdXRwdXQtZGlyPSIsICJk
ZWZpbmVzPSJdKQorCitvdXRwdXRfZGlyID0gIi4iCitkZWZpbmVzID0gIiIKK2ZvciBvcHRpb24s
IGFyZ3VtZW50IGluIG9wdGlvbnM6CisgICAgaWYgb3B0aW9uIGluICgiLWgiLCAiLS1oZWxwIik6
CisgICAgICAgIGV4aXRfd2l0aF91c2FnZSgwKQorICAgIGVsaWYgb3B0aW9uID09ICItLW91dHB1
dC1kaXIiOgorICAgICAgICBvdXRwdXRfZGlyID0gYXJndW1lbnQKKyAgICBlbGlmIG9wdGlvbiA9
PSAiLS1kZWZpbmVzIjoKKyAgICAgICAgZGVmaW5lcyA9IGFyZ3VtZW50CisKK2lmIGxlbihhcmd1
bWVudHMpID09IDA6CisgICAgZXhpdF93aXRoX3VzYWdlKDEpCisKK2lucHV0X2ZpbGUgPSBhcmd1
bWVudHNbMF0KK2luY2x1ZGVzX2ZpbGUgPSBhcmd1bWVudHNbMV0gaWYgbGVuKGFyZ3VtZW50cykg
PT0gMiBlbHNlIE5vbmUKKworZmVhdHVyZV9mbGFncyA9IFtdCitpZiBkZWZpbmVzOgorICAgIGZl
YXR1cmVzID0gc2hsZXguc3BsaXQoZGVmaW5lcykKKyAgICAjIE1ha2UgYSBsaXN0IHdpdGggLUQg
aW50ZXJjYWxhdGVkIGJldHdlZW4gZWFjaCBmZWF0dXJlLCBmb3IgdXNlIGluIHRoZSBwcmVwcm9j
ZXNzb3IgY29tbWFuZCwKKyAgICAjIGxpa2Ugc3VjaDogWyItRCIsICJFTkFCTEVfRkVBVFVSRTE9
MSIsICItRCIsICJFTkFCTEVfRkVBVFVSRTI9MCIsIC4uLl0KKyAgICBmZWF0dXJlX2ZsYWdzID0g
bGlzdChpdGVydG9vbHMuY2hhaW4oKnppcChbIi1EIl0gKiBsZW4oZmVhdHVyZXMpLCBmZWF0dXJl
cykpKQorCitnY2NfZXhlID0gImdjYyIKK2lmICJDQyIgaW4gb3MuZW52aXJvbjoKKyAgICBnY2Nf
ZXhlID0gb3MuZW52aXJvblsiQ0MiXQorCitpbnB1dF9yb290LCBpbnB1dF9leHQgPSBvcy5wYXRo
LnNwbGl0ZXh0KGlucHV0X2ZpbGUpCithc3NlcnQgaW5wdXRfZXh0ID09ICIuaW4iCisKK3AgPSBz
dWJwcm9jZXNzLlBvcGVuKFtnY2NfZXhlLCAiLUUiLCAiLVAiLCAiLXgiLCAiYyIsIGlucHV0X2Zp
bGVdICsgZmVhdHVyZV9mbGFncywKKyAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9j
ZXNzLlBJUEUpCitwcm9jZXNzZWRfcmVzdWx0ID0gcC5jb21tdW5pY2F0ZSgpWzBdCithc3NlcnQg
cC5yZXR1cm5jb2RlID09IDAKKworb3V0cHV0X2ZpbGUgPSBvcGVuKG9zLnBhdGguam9pbihvdXRw
dXRfZGlyLCBvcy5wYXRoLmJhc2VuYW1lKGlucHV0X3Jvb3QpKSwgInciKQorCitpZiBpbmNsdWRl
c19maWxlOgorICAgIHByaW50ID4+IG91dHB1dF9maWxlLCBvcGVuKGluY2x1ZGVzX2ZpbGUpLnJl
YWQoKQorCitwcmludCA+PiBvdXRwdXRfZmlsZSwgcHJvY2Vzc2VkX3Jlc3VsdAorCitvdXRwdXRf
ZmlsZS5jbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCmluZGV4IDRjOTkyMjc1ZjNhMjc5YjQ1ZjRiM2VkMjlkOWRlYzFkYzUxZDIwY2QuLjQzNTE4
ZDNkOGM5NzRiY2NmM2NlZGM5YmUzOWJlMDgzNTM4ZmVjMDggMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0zNTg2Nyw3ICszNTg2NywxMSBAQAog
CQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NT
R3JhbW1hci55IgorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU0dyYW1tYXIueS5pbiIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU0dy
YW1tYXIueS5pbmNsdWRlcyIKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDEwZWQ1
OWY5ZmEzNzY3ODg0Nzg3OGRjNjJiNDMwNjgzNTQ4NTA4NmIuLmY3ZjY1NTg2MWZkOWZlYjhlNDVj
NjQwNTk1NDQ2YzFiYzUyMTE2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMDI1LDcgKzEzMDI1LDYgQEAKIAkJQkNFOTNG
NDYxNTE3QzZENTAwOENDRjc0IC8qIFJlbmRlclJlZ2lvblNldC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJSZWdpb25TZXQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQ0VBNDc3QzA5N0NBQUM4MDA5NEM5RTQgLyogQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQ0VBNDc3RDA5N0NBQUM4MDA5NEM5RTQgLyogQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkNFQTQ3N0Uw
OTdDQUFDODAwOTRDOUU0IC8qIENTU0dyYW1tYXIueSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLnlh
Y2M7IHBhdGggPSBDU1NHcmFtbWFyLnk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
RUE0Nzg5MDk3Q0FBQzgwMDk0QzlFNCAvKiBDU1NQcm9wZXJ0eU5hbWVzLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBDU1NQcm9wZXJ0eU5hbWVzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQ0VBNDc4QzA5N0NBQUM4MDA5NEM5RTQgLyogQ1NTVmFsdWVLZXl3b3Jkcy5pbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ1NTVmFsdWVLZXl3b3Jkcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkNFQTQ4MTMwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJsb2Nr
TGluZUxheW91dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVu
ZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEz
NzQ4LDYgKzEzNzQ3LDggQEAKIAkJRkJENkFGODUxNUVGMjFENDAwOEI3MTEwIC8qIEJhc2ljU2hh
cGVGdW5jdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzaWNTaGFw
ZUZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQkQ2QUY4NjE1RUYy
MUQ0MDA4QjcxMTAgLyogQ1NTQmFzaWNTaGFwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ1NTQmFzaWNTaGFwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGQkQ2QUY4NzE1RUYyMUQ0MDA4QjcxMTAgLyogQ1NTQmFzaWNTaGFwZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTQmFzaWNTaGFwZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkNFQkNENzExNjIzQTc5MTAwMjk5NjVFIC8qIENTU0dyYW1t
YXIueS5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUueWFjYzsgcGF0aCA9IENTU0dyYW1tYXIueS5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkNFQkNENzIxNjIzQTc5MTAwMjk5NjVF
IC8qIENTU0dyYW1tYXIueS5pbmNsdWRlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUueWFjYzsgcGF0
aCA9IENTU0dyYW1tYXIueS5pbmNsdWRlczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkQwMEQ3QTIxNEEzRjYxOTAwNzM0MDExIC8qIFNpbmNSZXNhbXBsZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2luY1Jlc2FtcGxlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZEMDBEN0EzMTRBM0Y2MTkwMDczNDAxMSAvKiBTaW5jUmVzYW1w
bGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbmNSZXNhbXBsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQwNkRGQTMxMzRBNERFRjAwNkY1RDdEIC8q
IERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjExMTEsNyArMjExMTIsOCBAQAogCQkJCUJDMDJBNjNCMEUw
OUE5Q0YwMDRCNkQyQiAvKiBDU1NGdW5jdGlvblZhbHVlLmggKi8sCiAJCQkJQkMyM0U0RTAwREFB
Q0UwRjAwOUZEQzkxIC8qIENTU0dyYWRpZW50VmFsdWUuY3BwICovLAogCQkJCUJDNTNDNjkxMERB
NTkxMTQwMDIxRUI1RCAvKiBDU1NHcmFkaWVudFZhbHVlLmggKi8sCi0JCQkJQkNFQTQ3N0UwOTdD
QUFDODAwOTRDOUU0IC8qIENTU0dyYW1tYXIueSAqLywKKwkJCQlGQ0VCQ0Q3MTE2MjNBNzkxMDAy
OTk2NUUgLyogQ1NTR3JhbW1hci55LmluICovLAorCQkJCUZDRUJDRDcyMTYyM0E3OTEwMDI5OTY1
RSAvKiBDU1NHcmFtbWFyLnkuaW5jbHVkZXMgKi8sCiAJCQkJQkM3NzJCMzYwQzRFQTkxRTAwODMy
ODVGIC8qIENTU0hlbHBlci5oICovLAogCQkJCUJDMjNFNzZCMERBRTg4QTkwMDlGREM5MSAvKiBD
U1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcCAqLywKIAkJCQlCQzIzRUU5MTBEQUVEMkJDMDA5RkRD
OTEgLyogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYW1tYXIueSBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNDI3NGE5YjMyYTM1YTI5NjY4OGY2NWIz
YjM4YWYyNGJhM2I0MGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQorKysgL2Rldi9udWxsCkBAIC0x
LDE3NjQgKzAsMCBAQAotJXsKLQotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDItMjAwMyBMYXJz
IEtub2xsIChrbm9sbEBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNv
bSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4K
LSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQot
ICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0KLSNpbmNsdWRlICJDU1NQYXJzZXIuaCIKLSNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCi0j
aW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKLSNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVz
LmgiCi0jaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKLSNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3Qu
aCIKLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1
ZGUgIk1lZGlhTGlzdC5oIgotI2luY2x1ZGUgIk1lZGlhUXVlcnlFeHAuaCIKLSNpbmNsdWRlICJT
dHlsZVJ1bGUuaCIKLSNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKLSNpbmNsdWRlICJX
ZWJLaXRDU1NLZXlmcmFtZVJ1bGUuaCIKLSNpbmNsdWRlICJXZWJLaXRDU1NLZXlmcmFtZXNSdWxl
LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNp
bmNsdWRlIDxzdHJpbmcuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwotCi0jZGVmaW5lIFlZTUFMTE9DIGZhc3RNYWxsb2MKLSNkZWZpbmUg
WVlGUkVFIGZhc3RGcmVlCi0KLSNkZWZpbmUgWVlFTkFCTEVfTkxTIDAKLSNkZWZpbmUgWVlMVFlQ
RV9JU19UUklWSUFMIDEKLSNkZWZpbmUgWVlNQVhERVBUSCAxMDAwMAotI2RlZmluZSBZWURFQlVH
IDAKLQotJX0KLQotJXB1cmVfcGFyc2VyCi0KLSVwYXJzZS1wYXJhbSB7IENTU1BhcnNlciogcGFy
c2VyIH0KLSVsZXgtcGFyYW0geyBDU1NQYXJzZXIqIHBhcnNlciB9Ci0KLSV1bmlvbiB7Ci0gICAg
Ym9vbCBib29sZWFuOwotICAgIGNoYXIgY2hhcmFjdGVyOwotICAgIGludCBpbnRlZ2VyOwotICAg
IGRvdWJsZSBudW1iZXI7Ci0gICAgQ1NTUGFyc2VyU3RyaW5nIHN0cmluZzsKLQotICAgIFN0eWxl
UnVsZUJhc2UqIHJ1bGU7Ci0gICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiA+KiBydWxl
TGlzdDsKLSAgICBDU1NQYXJzZXJTZWxlY3Rvciogc2VsZWN0b3I7Ci0gICAgQ1NTU2VsZWN0b3JW
ZWN0b3IqIHNlbGVjdG9yTGlzdDsKLSAgICBDU1NTZWxlY3Rvcjo6TWFyZ2luQm94VHlwZSBtYXJn
aW5Cb3g7Ci0gICAgQ1NTU2VsZWN0b3I6OlJlbGF0aW9uIHJlbGF0aW9uOwotICAgIE1lZGlhUXVl
cnlTZXQqIG1lZGlhTGlzdDsKLSAgICBNZWRpYVF1ZXJ5KiBtZWRpYVF1ZXJ5OwotICAgIE1lZGlh
UXVlcnk6OlJlc3RyaWN0b3IgbWVkaWFRdWVyeVJlc3RyaWN0b3I7Ci0gICAgTWVkaWFRdWVyeUV4
cCogbWVkaWFRdWVyeUV4cDsKLSAgICBDU1NQYXJzZXJWYWx1ZSB2YWx1ZTsKLSAgICBDU1NQYXJz
ZXJWYWx1ZUxpc3QqIHZhbHVlTGlzdDsKLSAgICBWZWN0b3I8T3duUHRyPE1lZGlhUXVlcnlFeHA+
ID4qIG1lZGlhUXVlcnlFeHBMaXN0OwotICAgIFN0eWxlS2V5ZnJhbWUqIGtleWZyYW1lOwotICAg
IFZlY3RvcjxSZWZQdHI8U3R5bGVLZXlmcmFtZT4gPioga2V5ZnJhbWVSdWxlTGlzdDsKLSAgICBm
bG9hdCB2YWw7Ci0gICAgQ1NTUHJvcGVydHlJRCBpZDsKLX0KLQotJXsKLQotI2lmIFlZREVCVUcg
PiAwCi0jZGVmaW5lIFlZUFJJTlQoRmlsZSxUeXBlLFZhbHVlKSBwcmludF90b2tlbl92YWx1ZShG
aWxlLFR5cGUsVmFsdWUpCi1zdGF0aWMgdm9pZCBwcmludF90b2tlbl92YWx1ZShGSUxFICogeXlv
dXRwdXQsIGludCB5eXR5cGUsIFlZU1RZUEUgY29uc3QgJnl5dmFsdWUpOwotI2VuZGlmCi0KLXN0
YXRpYyBpbmxpbmUgaW50IGNzc3l5ZXJyb3Iodm9pZCosIGNvbnN0IGNoYXIqKQotewotICAgIHJl
dHVybiAxOwotfQotCi0lfQotCi0lZXhwZWN0IDYzCi0KLSVub25hc3NvYyBMT1dFU1RfUFJFQwot
Ci0lbGVmdCBVTklNUE9SVEFOVF9UT0sKLQotJXRva2VuIFdISVRFU1BBQ0UgU0dNTF9DRAotJXRv
a2VuIFRPS0VOX0VPRiAwCi0KLSV0b2tlbiBJTkNMVURFUwotJXRva2VuIERBU0hNQVRDSAotJXRv
a2VuIEJFR0lOU1dJVEgKLSV0b2tlbiBFTkRTV0lUSAotJXRva2VuIENPTlRBSU5TCi0KLSV0b2tl
biA8c3RyaW5nPiBTVFJJTkcKLSVyaWdodCA8c3RyaW5nPiBJREVOVAotJXRva2VuIDxzdHJpbmc+
IE5USAotCi0lbm9uYXNzb2MgPHN0cmluZz4gSEVYCi0lbm9uYXNzb2MgPHN0cmluZz4gSURTRUwK
LSVub25hc3NvYyAnOicKLSVub25hc3NvYyAnLicKLSVub25hc3NvYyAnWycKLSVub25hc3NvYyA8
c3RyaW5nPiAnKicKLSVub25hc3NvYyBlcnJvcgotJWxlZnQgJ3wnCi0KLSV0b2tlbiBJTVBPUlRf
U1lNCi0ldG9rZW4gUEFHRV9TWU0KLSV0b2tlbiBNRURJQV9TWU0KLSV0b2tlbiBGT05UX0ZBQ0Vf
U1lNCi0ldG9rZW4gQ0hBUlNFVF9TWU0KLSV0b2tlbiBOQU1FU1BBQ0VfU1lNCi0ldG9rZW4gVkFS
RlVOQ1RJT04KLSV0b2tlbiBXRUJLSVRfUlVMRV9TWU0KLSV0b2tlbiBXRUJLSVRfREVDTFNfU1lN
Ci0ldG9rZW4gV0VCS0lUX0tFWUZSQU1FX1JVTEVfU1lNCi0ldG9rZW4gV0VCS0lUX0tFWUZSQU1F
U19TWU0KLSV0b2tlbiBXRUJLSVRfVkFMVUVfU1lNCi0ldG9rZW4gV0VCS0lUX01FRElBUVVFUllf
U1lNCi0ldG9rZW4gV0VCS0lUX1NFTEVDVE9SX1NZTQotJXRva2VuIFdFQktJVF9SRUdJT05fUlVM
RV9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBUT1BMRUZUQ09STkVSX1NZTQotJXRva2VuIDxtYXJn
aW5Cb3g+IFRPUExFRlRfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gVE9QQ0VOVEVSX1NZTQotJXRv
a2VuIDxtYXJnaW5Cb3g+IFRPUFJJR0hUX1NZTQotJXRva2VuIDxtYXJnaW5Cb3g+IFRPUFJJR0hU
Q09STkVSX1NZTQotJXRva2VuIDxtYXJnaW5Cb3g+IEJPVFRPTUxFRlRDT1JORVJfU1lNCi0ldG9r
ZW4gPG1hcmdpbkJveD4gQk9UVE9NTEVGVF9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBCT1RUT01D
RU5URVJfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gQk9UVE9NUklHSFRfU1lNCi0ldG9rZW4gPG1h
cmdpbkJveD4gQk9UVE9NUklHSFRDT1JORVJfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gTEVGVFRP
UF9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBMRUZUTUlERExFX1NZTQotJXRva2VuIDxtYXJnaW5C
b3g+IExFRlRCT1RUT01fU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gUklHSFRUT1BfU1lNCi0ldG9r
ZW4gPG1hcmdpbkJveD4gUklHSFRNSURETEVfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gUklHSFRC
T1RUT01fU1lNCi0KLSV0b2tlbiBBVEtFWVdPUkQKLQotJXRva2VuIElNUE9SVEFOVF9TWU0KLSV0
b2tlbiBNRURJQV9PTkxZCi0ldG9rZW4gTUVESUFfTk9UCi0ldG9rZW4gTUVESUFfQU5ECi0KLSV0
b2tlbiA8bnVtYmVyPiBSRU1TCi0ldG9rZW4gPG51bWJlcj4gUUVNUwotJXRva2VuIDxudW1iZXI+
IEVNUwotJXRva2VuIDxudW1iZXI+IEVYUwotJXRva2VuIDxudW1iZXI+IFBYUwotJXRva2VuIDxu
dW1iZXI+IENNUwotJXRva2VuIDxudW1iZXI+IE1NUwotJXRva2VuIDxudW1iZXI+IElOUwotJXRv
a2VuIDxudW1iZXI+IFBUUwotJXRva2VuIDxudW1iZXI+IFBDUwotJXRva2VuIDxudW1iZXI+IERF
R1MKLSV0b2tlbiA8bnVtYmVyPiBSQURTCi0ldG9rZW4gPG51bWJlcj4gR1JBRFMKLSV0b2tlbiA8
bnVtYmVyPiBUVVJOUwotJXRva2VuIDxudW1iZXI+IE1TRUNTCi0ldG9rZW4gPG51bWJlcj4gU0VD
UwotJXRva2VuIDxudW1iZXI+IEhFUlRaCi0ldG9rZW4gPG51bWJlcj4gS0hFUlRaCi0ldG9rZW4g
PHN0cmluZz4gRElNRU4KLSV0b2tlbiA8c3RyaW5nPiBJTlZBTElERElNRU4KLSV0b2tlbiA8bnVt
YmVyPiBQRVJDRU5UQUdFCi0ldG9rZW4gPG51bWJlcj4gRkxPQVRUT0tFTgotJXRva2VuIDxudW1i
ZXI+IElOVEVHRVIKLSV0b2tlbiA8bnVtYmVyPiBWVwotJXRva2VuIDxudW1iZXI+IFZICi0ldG9r
ZW4gPG51bWJlcj4gVk1JTgotJXRva2VuIDxudW1iZXI+IERQUFgKLSV0b2tlbiA8bnVtYmVyPiBE
UEkKLSV0b2tlbiA8bnVtYmVyPiBEUENNCi0KLSV0b2tlbiA8c3RyaW5nPiBVUkkKLSV0b2tlbiA8
c3RyaW5nPiBGVU5DVElPTgotJXRva2VuIDxzdHJpbmc+IEFOWUZVTkNUSU9OCi0ldG9rZW4gPHN0
cmluZz4gTk9URlVOQ1RJT04KLSV0b2tlbiA8c3RyaW5nPiBDQUxDRlVOQ1RJT04KLSV0b2tlbiA8
c3RyaW5nPiBNSU5GVU5DVElPTgotJXRva2VuIDxzdHJpbmc+IE1BWEZVTkNUSU9OCi0ldG9rZW4g
PHN0cmluZz4gVkFSX0RFRklOSVRJT04KLQotJXRva2VuIDxzdHJpbmc+IFVOSUNPREVSQU5HRQot
Ci0ldHlwZSA8cmVsYXRpb24+IGNvbWJpbmF0b3IKLQotJXR5cGUgPHJ1bGU+IGNoYXJzZXQKLSV0
eXBlIDxydWxlPiBpZ25vcmVkX2NoYXJzZXQKLSV0eXBlIDxydWxlPiBydWxlc2V0Ci0ldHlwZSA8
cnVsZT4gbWVkaWEKLSV0eXBlIDxydWxlPiBpbXBvcnQKLSV0eXBlIDxydWxlPiBuYW1lc3BhY2UK
LSV0eXBlIDxydWxlPiBwYWdlCi0ldHlwZSA8cnVsZT4gbWFyZ2luX2JveAotJXR5cGUgPHJ1bGU+
IGZvbnRfZmFjZQotJXR5cGUgPHJ1bGU+IGtleWZyYW1lcwotJXR5cGUgPHJ1bGU+IGludmFsaWRf
cnVsZQotJXR5cGUgPHJ1bGU+IHNhdmVfYmxvY2sKLSV0eXBlIDxydWxlPiBpbnZhbGlkX2F0Ci0l
dHlwZSA8cnVsZT4gcnVsZQotJXR5cGUgPHJ1bGU+IHZhbGlkX3J1bGUKLSV0eXBlIDxydWxlTGlz
dD4gYmxvY2tfcnVsZV9saXN0IAotJXR5cGUgPHJ1bGU+IGJsb2NrX3J1bGUKLSV0eXBlIDxydWxl
PiBibG9ja192YWxpZF9ydWxlCi0ldHlwZSA8cnVsZT4gcmVnaW9uCi0KLSV0eXBlIDxzdHJpbmc+
IG1heWJlX25zX3ByZWZpeAotCi0ldHlwZSA8c3RyaW5nPiBuYW1lc3BhY2Vfc2VsZWN0b3IKLQot
JXR5cGUgPHN0cmluZz4gc3RyaW5nX29yX3VyaQotJXR5cGUgPHN0cmluZz4gaWRlbnRfb3Jfc3Ry
aW5nCi0ldHlwZSA8c3RyaW5nPiBtZWRpdW0KLSV0eXBlIDxtYXJnaW5Cb3g+IG1hcmdpbl9zeW0K
LQotJXR5cGUgPHN0cmluZz4gbWVkaWFfZmVhdHVyZQotJXR5cGUgPG1lZGlhTGlzdD4gbWVkaWFf
bGlzdAotJXR5cGUgPG1lZGlhTGlzdD4gbWF5YmVfbWVkaWFfbGlzdAotJXR5cGUgPG1lZGlhUXVl
cnk+IG1lZGlhX3F1ZXJ5Ci0ldHlwZSA8bWVkaWFRdWVyeVJlc3RyaWN0b3I+IG1heWJlX21lZGlh
X3Jlc3RyaWN0b3IKLSV0eXBlIDx2YWx1ZUxpc3Q+IG1heWJlX21lZGlhX3ZhbHVlCi0ldHlwZSA8
bWVkaWFRdWVyeUV4cD4gbWVkaWFfcXVlcnlfZXhwCi0ldHlwZSA8bWVkaWFRdWVyeUV4cExpc3Q+
IG1lZGlhX3F1ZXJ5X2V4cF9saXN0Ci0ldHlwZSA8bWVkaWFRdWVyeUV4cExpc3Q+IG1heWJlX2Fu
ZF9tZWRpYV9xdWVyeV9leHBfbGlzdAotCi0ldHlwZSA8c3RyaW5nPiBrZXlmcmFtZV9uYW1lCi0l
dHlwZSA8a2V5ZnJhbWU+IGtleWZyYW1lX3J1bGUKLSV0eXBlIDxrZXlmcmFtZVJ1bGVMaXN0PiBr
ZXlmcmFtZXNfcnVsZQotJXR5cGUgPHZhbHVlTGlzdD4ga2V5X2xpc3QKLSV0eXBlIDx2YWx1ZT4g
a2V5Ci0KLSV0eXBlIDxpZD4gcHJvcGVydHkKLQotJXR5cGUgPHNlbGVjdG9yPiBzcGVjaWZpZXIK
LSV0eXBlIDxzZWxlY3Rvcj4gc3BlY2lmaWVyX2xpc3QKLSV0eXBlIDxzZWxlY3Rvcj4gc2ltcGxl
X3NlbGVjdG9yCi0ldHlwZSA8c2VsZWN0b3I+IHNlbGVjdG9yCi0ldHlwZSA8c2VsZWN0b3JMaXN0
PiBzZWxlY3Rvcl9saXN0Ci0ldHlwZSA8c2VsZWN0b3JMaXN0PiBzaW1wbGVfc2VsZWN0b3JfbGlz
dAotJXR5cGUgPHNlbGVjdG9yTGlzdD4gcmVnaW9uX3NlbGVjdG9yCi0ldHlwZSA8c2VsZWN0b3I+
IHNlbGVjdG9yX3dpdGhfdHJhaWxpbmdfd2hpdGVzcGFjZQotJXR5cGUgPHNlbGVjdG9yPiBjbGFz
cwotJXR5cGUgPHNlbGVjdG9yPiBhdHRyaWIKLSV0eXBlIDxzZWxlY3Rvcj4gcHNldWRvCi0ldHlw
ZSA8c2VsZWN0b3I+IHBzZXVkb19wYWdlCi0ldHlwZSA8c2VsZWN0b3I+IHBhZ2Vfc2VsZWN0b3IK
LQotJXR5cGUgPGJvb2xlYW4+IGRlY2xhcmF0aW9uX2xpc3QKLSV0eXBlIDxib29sZWFuPiBkZWNs
X2xpc3QKLSV0eXBlIDxib29sZWFuPiBkZWNsYXJhdGlvbgotJXR5cGUgPGJvb2xlYW4+IGRlY2xh
cmF0aW9uc19hbmRfbWFyZ2lucwotCi0ldHlwZSA8Ym9vbGVhbj4gcHJpbwotCi0ldHlwZSA8aW50
ZWdlcj4gbWF0Y2gKLSV0eXBlIDxpbnRlZ2VyPiB1bmFyeV9vcGVyYXRvcgotJXR5cGUgPGludGVn
ZXI+IG1heWJlX3VuYXJ5X29wZXJhdG9yCi0ldHlwZSA8Y2hhcmFjdGVyPiBvcGVyYXRvcgotCi0l
dHlwZSA8dmFsdWVMaXN0PiBleHByCi0ldHlwZSA8dmFsdWU+IHRlcm0KLSV0eXBlIDx2YWx1ZT4g
dW5hcnlfdGVybQotJXR5cGUgPHZhbHVlPiBmdW5jdGlvbgotJXR5cGUgPHZhbHVlPiBjYWxjX2Z1
bmNfdGVybQotJXR5cGUgPGNoYXJhY3Rlcj4gY2FsY19mdW5jX29wZXJhdG9yCi0ldHlwZSA8dmFs
dWVMaXN0PiBjYWxjX2Z1bmNfZXhwcgotJXR5cGUgPHZhbHVlTGlzdD4gY2FsY19mdW5jX2V4cHJf
bGlzdAotJXR5cGUgPHZhbHVlTGlzdD4gY2FsY19mdW5jX3BhcmVuX2V4cHIKLSV0eXBlIDx2YWx1
ZT4gY2FsY19mdW5jdGlvbgotJXR5cGUgPHN0cmluZz4gbWluX29yX21heAotJXR5cGUgPHZhbHVl
PiBtaW5fb3JfbWF4X2Z1bmN0aW9uCi0KLSV0eXBlIDxzdHJpbmc+IGVsZW1lbnRfbmFtZQotJXR5
cGUgPHN0cmluZz4gYXR0cl9uYW1lCi0KLSUlCi0KLXN0eWxlc2hlZXQ6Ci0gICAgbWF5YmVfc3Bh
Y2UgbWF5YmVfY2hhcnNldCBtYXliZV9zZ21sIHJ1bGVfbGlzdAotICB8IHdlYmtpdF9ydWxlIG1h
eWJlX3NwYWNlCi0gIHwgd2Via2l0X2RlY2xzIG1heWJlX3NwYWNlCi0gIHwgd2Via2l0X3ZhbHVl
IG1heWJlX3NwYWNlCi0gIHwgd2Via2l0X21lZGlhcXVlcnkgbWF5YmVfc3BhY2UKLSAgfCB3ZWJr
aXRfc2VsZWN0b3IgbWF5YmVfc3BhY2UKLSAgfCB3ZWJraXRfa2V5ZnJhbWVfcnVsZSBtYXliZV9z
cGFjZQotICA7Ci0KLXdlYmtpdF9ydWxlOgotICAgIFdFQktJVF9SVUxFX1NZTSAneycgbWF5YmVf
c3BhY2UgdmFsaWRfcnVsZSBtYXliZV9zcGFjZSAnfScgewotICAgICAgICBwYXJzZXItPm1fcnVs
ZSA9ICQ0OwotICAgIH0KLTsKLQotd2Via2l0X2tleWZyYW1lX3J1bGU6Ci0gICAgV0VCS0lUX0tF
WUZSQU1FX1JVTEVfU1lNICd7JyBtYXliZV9zcGFjZSBrZXlmcmFtZV9ydWxlIG1heWJlX3NwYWNl
ICd9JyB7Ci0gICAgICAgIHBhcnNlci0+bV9rZXlmcmFtZSA9ICQ0OwotICAgIH0KLTsKLQotd2Vi
a2l0X2RlY2xzOgotICAgIFdFQktJVF9ERUNMU19TWU0gJ3snIG1heWJlX3NwYWNlX2JlZm9yZV9k
ZWNsYXJhdGlvbiBkZWNsYXJhdGlvbl9saXN0ICd9JyB7Ci0gICAgICAgIC8qIGNhbiBiZSBlbXB0
eSAqLwotICAgIH0KLTsKLQotd2Via2l0X3ZhbHVlOgotICAgIFdFQktJVF9WQUxVRV9TWU0gJ3sn
IG1heWJlX3NwYWNlIGV4cHIgJ30nIHsKLSAgICAgICAgaWYgKCQ0KSB7Ci0gICAgICAgICAgICBw
YXJzZXItPm1fdmFsdWVMaXN0ID0gcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDQpOwot
ICAgICAgICAgICAgaW50IG9sZFBhcnNlZFByb3BlcnRpZXMgPSBwYXJzZXItPm1fcGFyc2VkUHJv
cGVydGllcy0+c2l6ZSgpOwotICAgICAgICAgICAgaWYgKCFwYXJzZXItPnBhcnNlVmFsdWUocGFy
c2VyLT5tX2lkLCBwYXJzZXItPm1faW1wb3J0YW50KSkKLSAgICAgICAgICAgICAgICBwYXJzZXIt
PnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXMtPnNpemUo
KSAtIG9sZFBhcnNlZFByb3BlcnRpZXMpOwotICAgICAgICAgICAgcGFyc2VyLT5tX3ZhbHVlTGlz
dCA9IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICB9Ci07Ci0KLXdlYmtpdF9tZWRpYXF1ZXJ5Ogot
ICAgICBXRUJLSVRfTUVESUFRVUVSWV9TWU0gV0hJVEVTUEFDRSBtYXliZV9zcGFjZSBtZWRpYV9x
dWVyeSAnfScgewotICAgICAgICAgcGFyc2VyLT5tX21lZGlhUXVlcnkgPSBwYXJzZXItPnNpbmtG
bG9hdGluZ01lZGlhUXVlcnkoJDQpOwotICAgICB9Ci07Ci0KLXdlYmtpdF9zZWxlY3RvcjoKLSAg
ICBXRUJLSVRfU0VMRUNUT1JfU1lNICd7JyBtYXliZV9zcGFjZSBzZWxlY3Rvcl9saXN0ICd9JyB7
Ci0gICAgICAgIGlmICgkNCkgewotICAgICAgICAgICAgaWYgKHBhcnNlci0+bV9zZWxlY3Rvckxp
c3RGb3JQYXJzZVNlbGVjdG9yKQotICAgICAgICAgICAgICAgIHBhcnNlci0+bV9zZWxlY3Rvckxp
c3RGb3JQYXJzZVNlbGVjdG9yLT5hZG9wdFNlbGVjdG9yVmVjdG9yKCokNCk7Ci0gICAgICAgIH0K
LSAgICB9Ci07Ci0KLW1heWJlX3NwYWNlOgotICAgIC8qIGVtcHR5ICovICVwcmVjIFVOSU1QT1JU
QU5UX1RPSwotICB8IG1heWJlX3NwYWNlIFdISVRFU1BBQ0UKLSAgOwotCi1tYXliZV9zZ21sOgot
ICAgIC8qIGVtcHR5ICovCi0gIHwgbWF5YmVfc2dtbCBTR01MX0NECi0gIHwgbWF5YmVfc2dtbCBX
SElURVNQQUNFCi0gIDsKLQotbWF5YmVfY2hhcnNldDoKLSAgIC8qIGVtcHR5ICovCi0gIHwgY2hh
cnNldCB7Ci0gIH0KLSAgOwotCi1jbG9zaW5nX2JyYWNlOgotICAgICd9JwotICB8ICVwcmVjIExP
V0VTVF9QUkVDIFRPS0VOX0VPRgotICA7Ci0KLWNoYXJzZXQ6Ci0gIENIQVJTRVRfU1lNIG1heWJl
X3NwYWNlIFNUUklORyBtYXliZV9zcGFjZSAnOycgewotICAgICBpZiAocGFyc2VyLT5tX3N0eWxl
U2hlZXQpCi0gICAgICAgICBwYXJzZXItPm1fc3R5bGVTaGVldC0+cGFyc2VyU2V0RW5jb2RpbmdG
cm9tQ2hhcnNldFJ1bGUoJDMpOwotICAgICBpZiAocGFyc2VyLT5pc0V4dHJhY3RpbmdTb3VyY2VE
YXRhKCkgJiYgcGFyc2VyLT5tX2N1cnJlbnRSdWxlRGF0YVN0YWNrLT5pc0VtcHR5KCkgJiYgcGFy
c2VyLT5tX3J1bGVTb3VyY2VEYXRhUmVzdWx0KQotICAgICAgICAgcGFyc2VyLT5hZGROZXdSdWxl
VG9Tb3VyY2VUcmVlKENTU1J1bGVTb3VyY2VEYXRhOjpjcmVhdGVVbmtub3duKCkpOwotICAgICAk
JCA9IDA7Ci0gIH0KLSAgfCBDSEFSU0VUX1NZTSBlcnJvciBpbnZhbGlkX2Jsb2NrIHsKLSAgfQot
ICB8IENIQVJTRVRfU1lNIGVycm9yICc7JyB7Ci0gIH0KLTsKLQotaWdub3JlZF9jaGFyc2V0Ogot
ICAgIENIQVJTRVRfU1lNIG1heWJlX3NwYWNlIFNUUklORyBtYXliZV9zcGFjZSAnOycgewotICAg
ICAgICAvLyBJZ25vcmUgYW55IEBjaGFyc2V0IHJ1bGUgbm90IGF0IHRoZSBiZWdpbm5pbmcgb2Yg
dGhlIHN0eWxlIHNoZWV0LgotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgIHwgQ0hBUlNFVF9T
WU0gbWF5YmVfc3BhY2UgJzsnIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLTsKLQotcnVsZV9s
aXN0OgotICAgLyogZW1wdHkgKi8KLSB8IHJ1bGVfbGlzdCBydWxlIG1heWJlX3NnbWwgewotICAg
ICBpZiAoJDIgJiYgcGFyc2VyLT5tX3N0eWxlU2hlZXQpCi0gICAgICAgICBwYXJzZXItPm1fc3R5
bGVTaGVldC0+cGFyc2VyQXBwZW5kUnVsZSgkMik7Ci0gfQotIDsKLQotdmFsaWRfcnVsZToKLSAg
ICBydWxlc2V0Ci0gIHwgbWVkaWEKLSAgfCBwYWdlCi0gIHwgZm9udF9mYWNlCi0gIHwga2V5ZnJh
bWVzCi0gIHwgbmFtZXNwYWNlCi0gIHwgaW1wb3J0Ci0gIHwgcmVnaW9uCi0gIDsKLQotcnVsZToK
LSAgICB2YWxpZF9ydWxlIHsKLSAgICAgICAgcGFyc2VyLT5tX2hhZFN5bnRhY3RpY2FsbHlWYWxp
ZENTU1J1bGUgPSB0cnVlOwotICAgIH0KLSAgfCBpZ25vcmVkX2NoYXJzZXQKLSAgfCBpbnZhbGlk
X3J1bGUKLSAgfCBpbnZhbGlkX2F0Ci0gIDsKLQotYmxvY2tfcnVsZV9saXN0OiAKLSAgICAvKiBl
bXB0eSAqLyB7ICQkID0gMDsgfQotICB8IGJsb2NrX3J1bGVfbGlzdCBibG9ja19ydWxlIG1heWJl
X3NnbWwgewotICAgICAgJCQgPSAkMTsKLSAgICAgIGlmICgkMikgewotICAgICAgICAgIGlmICgh
JCQpCi0gICAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVSdWxlTGlzdCgpOwotICAgICAg
ICAgICQkLT5hcHBlbmQoJDIpOwotICAgICAgfQotICB9Ci0gIDsKLQotYmxvY2tfdmFsaWRfcnVs
ZToKLSAgICBydWxlc2V0Ci0gIHwgcGFnZQotICB8IGZvbnRfZmFjZQotICB8IGtleWZyYW1lcwot
ICA7Ci0KLWJsb2NrX3J1bGU6Ci0gICAgYmxvY2tfdmFsaWRfcnVsZQotICB8IGludmFsaWRfcnVs
ZQotICB8IGludmFsaWRfYXQKLSAgfCBuYW1lc3BhY2UKLSAgfCBpbXBvcnQKLSAgfCBtZWRpYQot
ICA7Ci0KLWF0X2ltcG9ydF9oZWFkZXJfZW5kX21heWJlX3NwYWNlOgotICAgIG1heWJlX3NwYWNl
IHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlckVuZCgpOwotICAgICAgICBwYXJzZXIt
Pm1hcmtSdWxlQm9keVN0YXJ0KCk7Ci0gICAgfQotICAgIDsKLQotYmVmb3JlX2ltcG9ydF9ydWxl
OgotICAgIC8qIGVtcHR5ICovIHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0
KENTU1J1bGVTb3VyY2VEYXRhOjpJTVBPUlRfUlVMRSk7Ci0gICAgfQotICAgIDsKLQotaW1wb3J0
OgotICAgIGJlZm9yZV9pbXBvcnRfcnVsZSBJTVBPUlRfU1lNIGF0X2ltcG9ydF9oZWFkZXJfZW5k
X21heWJlX3NwYWNlIHN0cmluZ19vcl91cmkgbWF5YmVfc3BhY2UgbWF5YmVfbWVkaWFfbGlzdCAn
OycgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlSW1wb3J0UnVsZSgkNCwgJDYpOwotICAg
IH0KLSAgfCBiZWZvcmVfaW1wb3J0X3J1bGUgSU1QT1JUX1NZTSBhdF9pbXBvcnRfaGVhZGVyX2Vu
ZF9tYXliZV9zcGFjZSBzdHJpbmdfb3JfdXJpIG1heWJlX3NwYWNlIG1heWJlX21lZGlhX2xpc3Qg
VE9LRU5fRU9GIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUltcG9ydFJ1bGUoJDQsICQ2
KTsKLSAgICB9Ci0gIHwgYmVmb3JlX2ltcG9ydF9ydWxlIElNUE9SVF9TWU0gYXRfaW1wb3J0X2hl
YWRlcl9lbmRfbWF5YmVfc3BhY2Ugc3RyaW5nX29yX3VyaSBtYXliZV9zcGFjZSBtYXliZV9tZWRp
YV9saXN0IGludmFsaWRfYmxvY2sgewotICAgICAgICAkJCA9IDA7Ci0gICAgICAgIHBhcnNlci0+
cG9wUnVsZURhdGEoKTsKLSAgICB9Ci0gIHwgYmVmb3JlX2ltcG9ydF9ydWxlIElNUE9SVF9TWU0g
ZXJyb3IgJzsnIHsKLSAgICAgICAgJCQgPSAwOwotICAgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRh
KCk7Ci0gICAgfQotICB8IGJlZm9yZV9pbXBvcnRfcnVsZSBJTVBPUlRfU1lNIGVycm9yIGludmFs
aWRfYmxvY2sgewotICAgICAgICAkJCA9IDA7Ci0gICAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEo
KTsKLSAgICB9Ci0gIDsKLQotbmFtZXNwYWNlOgotTkFNRVNQQUNFX1NZTSBtYXliZV9zcGFjZSBt
YXliZV9uc19wcmVmaXggc3RyaW5nX29yX3VyaSBtYXliZV9zcGFjZSAnOycgewotICAgIHBhcnNl
ci0+YWRkTmFtZXNwYWNlKCQzLCAkNCk7Ci0gICAgJCQgPSAwOwotfQotfCBOQU1FU1BBQ0VfU1lN
IG1heWJlX3NwYWNlIG1heWJlX25zX3ByZWZpeCBzdHJpbmdfb3JfdXJpIG1heWJlX3NwYWNlIGlu
dmFsaWRfYmxvY2sgewotICAgICQkID0gMDsKLX0KLXwgTkFNRVNQQUNFX1NZTSBlcnJvciBpbnZh
bGlkX2Jsb2NrIHsKLSAgICAkJCA9IDA7Ci19Ci18IE5BTUVTUEFDRV9TWU0gZXJyb3IgJzsnIHsK
LSAgICAkJCA9IDA7Ci19Ci07Ci0KLW1heWJlX25zX3ByZWZpeDoKLS8qIGVtcHR5ICovIHsgJCQu
Y2xlYXIoKTsgfQotfCBJREVOVCBtYXliZV9zcGFjZSB7ICQkID0gJDE7IH0KLTsKLQotc3RyaW5n
X29yX3VyaToKLVNUUklORwotfCBVUkkKLTsKLQotbWVkaWFfZmVhdHVyZToKLSAgICBJREVOVCBt
YXliZV9zcGFjZSB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAgIDsKLQotbWF5YmVfbWVk
aWFfdmFsdWU6Ci0gICAgLyplbXB0eSovIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICB8
ICc6JyBtYXliZV9zcGFjZSBleHByIG1heWJlX3NwYWNlIHsKLSAgICAgICAgJCQgPSAkMzsKLSAg
ICB9Ci0gICAgOwotCi1tZWRpYV9xdWVyeV9leHA6Ci0gICAgJygnIG1heWJlX3NwYWNlIG1lZGlh
X2ZlYXR1cmUgbWF5YmVfc3BhY2UgbWF5YmVfbWVkaWFfdmFsdWUgJyknIG1heWJlX3NwYWNlIHsK
LSAgICAgICAgJDMubG93ZXIoKTsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5n
TWVkaWFRdWVyeUV4cCgkMywgJDUpOwotICAgIH0KLSAgICA7Ci0KLW1lZGlhX3F1ZXJ5X2V4cF9s
aXN0OgotICAgIG1lZGlhX3F1ZXJ5X2V4cCB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVG
bG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KCk7Ci0gICAgICAgICQkLT5hcHBlbmQocGFyc2VyLT5z
aW5rRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwKCQxKSk7Ci0gICAgfQotICAgIHwgbWVkaWFfcXVlcnlf
ZXhwX2xpc3QgbWF5YmVfc3BhY2UgTUVESUFfQU5EIG1heWJlX3NwYWNlIG1lZGlhX3F1ZXJ5X2V4
cCB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgICAgICQkLT5hcHBlbmQocGFyc2VyLT5zaW5rRmxv
YXRpbmdNZWRpYVF1ZXJ5RXhwKCQ1KSk7Ci0gICAgfQotICAgIDsKLQotbWF5YmVfYW5kX21lZGlh
X3F1ZXJ5X2V4cF9saXN0OgotICAgIC8qZW1wdHkqLyB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5j
cmVhdGVGbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KCk7Ci0gICAgfQotICAgIHwgTUVESUFfQU5E
IG1heWJlX3NwYWNlIG1lZGlhX3F1ZXJ5X2V4cF9saXN0IHsKLSAgICAgICAgJCQgPSAkMzsKLSAg
ICB9Ci0gICAgOwotCi1tYXliZV9tZWRpYV9yZXN0cmljdG9yOgotICAgIC8qZW1wdHkqLyB7Ci0g
ICAgICAgICQkID0gTWVkaWFRdWVyeTo6Tm9uZTsKLSAgICB9Ci0gICAgfCBNRURJQV9PTkxZIHsK
LSAgICAgICAgJCQgPSBNZWRpYVF1ZXJ5OjpPbmx5OwotICAgIH0KLSAgICB8IE1FRElBX05PVCB7
Ci0gICAgICAgICQkID0gTWVkaWFRdWVyeTo6Tm90OwotICAgIH0KLSAgICA7Ci0KLW1lZGlhX3F1
ZXJ5OgotICAgIG1lZGlhX3F1ZXJ5X2V4cF9saXN0IHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNy
ZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeShwYXJzZXItPnNpbmtGbG9hdGluZ01lZGlhUXVlcnlFeHBM
aXN0KCQxKSk7Ci0gICAgfQotICAgIHwKLSAgICBtYXliZV9tZWRpYV9yZXN0cmljdG9yIG1heWJl
X3NwYWNlIG1lZGl1bSBtYXliZV9hbmRfbWVkaWFfcXVlcnlfZXhwX2xpc3QgewotICAgICAgICAk
My5sb3dlcigpOwotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5
KCQxLCAkMywgcGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwTGlzdCgkNCkpOwotICAg
IH0KLSAgICA7Ci0KLW1heWJlX21lZGlhX2xpc3Q6Ci0gICAgIC8qIGVtcHR5ICovIHsKLSAgICAg
ICAgJCQgPSBwYXJzZXItPmNyZWF0ZU1lZGlhUXVlcnlTZXQoKTsKLSAgICAgfQotICAgICB8IG1l
ZGlhX2xpc3QKLSAgICAgOwotCi1tZWRpYV9saXN0OgotICAgIG1lZGlhX3F1ZXJ5IHsKLSAgICAg
ICAgJCQgPSBwYXJzZXItPmNyZWF0ZU1lZGlhUXVlcnlTZXQoKTsKLSAgICAgICAgJCQtPmFkZE1l
ZGlhUXVlcnkocGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5KCQxKSk7Ci0gICAgICAgIHBh
cnNlci0+dXBkYXRlTGFzdE1lZGlhTGluZSgkJCk7Ci0gICAgfQotICAgIHwgbWVkaWFfbGlzdCAn
LCcgbWF5YmVfc3BhY2UgbWVkaWFfcXVlcnkgewotICAgICAgICAkJCA9ICQxOwotICAgICAgICBp
ZiAoJCQpIHsKLSAgICAgICAgICAgICQkLT5hZGRNZWRpYVF1ZXJ5KHBhcnNlci0+c2lua0Zsb2F0
aW5nTWVkaWFRdWVyeSgkNCkpOwotICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVMYXN0TWVkaWFM
aW5lKCQkKTsKLSAgICAgICAgfQotICAgIH0KLSAgICB8IG1lZGlhX2xpc3QgZXJyb3IgewotICAg
ICAgICAkJCA9IDA7Ci0gICAgfQotICAgIDsKLQotYXRfcnVsZV9ib2R5X3N0YXJ0OgotICAgIC8q
IGVtcHR5ICovIHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUJvZHlTdGFydCgpOwotICAgIH0K
LSAgICA7Ci0KLWJlZm9yZV9tZWRpYV9ydWxlOgotICAgIC8qIGVtcHR5ICovIHsKLSAgICAgICAg
cGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRhOjpNRURJQV9SVUxF
KTsKLSAgICB9Ci0gICAgOwotCi1hdF9ydWxlX2hlYWRlcl9lbmRfbWF5YmVfc3BhY2U6Ci0gICAg
bWF5YmVfc3BhY2UgewotICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyRW5kKCk7Ci0gICAg
fQotICAgIDsKLQotbWVkaWE6Ci0gICAgYmVmb3JlX21lZGlhX3J1bGUgTUVESUFfU1lNIG1heWJl
X3NwYWNlIG1lZGlhX2xpc3QgYXRfcnVsZV9oZWFkZXJfZW5kICd7JyBhdF9ydWxlX2JvZHlfc3Rh
cnQgbWF5YmVfc3BhY2UgYmxvY2tfcnVsZV9saXN0IHNhdmVfYmxvY2sgewotICAgICAgICAkJCA9
IHBhcnNlci0+Y3JlYXRlTWVkaWFSdWxlKCQ0LCAkOSk7Ci0gICAgfQotICAgIHwgYmVmb3JlX21l
ZGlhX3J1bGUgTUVESUFfU1lNIGF0X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9zcGFjZSAneycgYXRf
cnVsZV9ib2R5X3N0YXJ0IG1heWJlX3NwYWNlIGJsb2NrX3J1bGVfbGlzdCBzYXZlX2Jsb2NrIHsK
LSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZU1lZGlhUnVsZSgwLCAkNyk7Ci0gICAgfQotICAg
IHwgYmVmb3JlX21lZGlhX3J1bGUgTUVESUFfU1lNIGF0X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9z
cGFjZSAnOycgewotICAgICAgICAkJCA9IDA7Ci0gICAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEo
KTsKLSAgICB9Ci0gICAgOwotCi1tZWRpdW06Ci0gIElERU5UIG1heWJlX3NwYWNlIHsKLSAgICAg
ICQkID0gJDE7Ci0gIH0KLSAgOwotCi1iZWZvcmVfa2V5ZnJhbWVzX3J1bGU6Ci0gICAgLyogZW1w
dHkgKi8gewotICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNvdXJj
ZURhdGE6OktFWUZSQU1FU19SVUxFKTsKLSAgICB9Ci0gICAgOwotCi1rZXlmcmFtZXM6Ci0gICAg
YmVmb3JlX2tleWZyYW1lc19ydWxlIFdFQktJVF9LRVlGUkFNRVNfU1lNIG1heWJlX3NwYWNlIGtl
eWZyYW1lX25hbWUgYXRfcnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlICd7JyBhdF9ydWxlX2Jv
ZHlfc3RhcnQgbWF5YmVfc3BhY2Uga2V5ZnJhbWVzX3J1bGUgY2xvc2luZ19icmFjZSB7Ci0gICAg
ICAgICQkID0gcGFyc2VyLT5jcmVhdGVLZXlmcmFtZXNSdWxlKCQ0LCBwYXJzZXItPnNpbmtGbG9h
dGluZ0tleWZyYW1lVmVjdG9yKCQ5KSk7Ci0gICAgfQotICAgIDsKLSAgCi1rZXlmcmFtZV9uYW1l
OgotICAgIElERU5UCi0gICAgfCBTVFJJTkcKLSAgICA7Ci0KLWtleWZyYW1lc19ydWxlOgotICAg
IC8qIGVtcHR5ICovIHsgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nS2V5ZnJhbWVWZWN0b3Io
KTsgfQotICAgIHwga2V5ZnJhbWVzX3J1bGUga2V5ZnJhbWVfcnVsZSBtYXliZV9zcGFjZSB7Ci0g
ICAgICAgICQkID0gJDE7Ci0gICAgICAgIGlmICgkMikKLSAgICAgICAgICAgICQkLT5hcHBlbmQo
JDIpOwotICAgIH0KLSAgICA7Ci0KLWtleWZyYW1lX3J1bGU6Ci0gICAga2V5X2xpc3QgbWF5YmVf
c3BhY2UgJ3snIG1heWJlX3NwYWNlIGRlY2xhcmF0aW9uX2xpc3QgJ30nIHsKLSAgICAgICAgJCQg
PSBwYXJzZXItPmNyZWF0ZUtleWZyYW1lKCQxKTsKLSAgICB9Ci0gICAgOwotCi1rZXlfbGlzdDoK
LSAgICBrZXkgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdWYWx1ZUxpc3Qo
KTsKLSAgICAgICAgJCQtPmFkZFZhbHVlKHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWUoJDEpKTsK
LSAgICB9Ci0gICAgfCBrZXlfbGlzdCBtYXliZV9zcGFjZSAnLCcgbWF5YmVfc3BhY2Uga2V5IHsK
LSAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAgJCQtPmFkZFZh
bHVlKHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWUoJDUpKTsKLSAgICB9Ci0gICAgOwotCi1rZXk6
Ci0gICAgbWF5YmVfdW5hcnlfb3BlcmF0b3IgUEVSQ0VOVEFHRSB7ICQkLmlkID0gMDsgJCQuaXNJ
bnQgPSBmYWxzZTsgJCQuZlZhbHVlID0gJDEgKiAkMjsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfTlVNQkVSOyB9Ci0gICAgfCBJREVOVCB7Ci0gICAgICAgICQkLmlkID0gMDsgJCQu
aXNJbnQgPSBmYWxzZTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOwot
ICAgICAgICBDU1NQYXJzZXJTdHJpbmcmIHN0ciA9ICQxOwotICAgICAgICBpZiAoc3RyLmVxdWFs
SWdub3JpbmdDYXNlKCJmcm9tIikpCi0gICAgICAgICAgICAkJC5mVmFsdWUgPSAwOwotICAgICAg
ICBlbHNlIGlmIChzdHIuZXF1YWxJZ25vcmluZ0Nhc2UoInRvIikpCi0gICAgICAgICAgICAkJC5m
VmFsdWUgPSAxMDA7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFlZRVJST1I7Ci0gICAgfQot
ICAgIDsKLQotYmVmb3JlX3BhZ2VfcnVsZToKLSAgICAvKiBlbXB0eSAqLyB7Ci0gICAgICAgIHBh
cnNlci0+bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6UEFHRV9SVUxFKTsK
LSAgICB9Ci0gICAgOwotCi1wYWdlOgotICAgIGJlZm9yZV9wYWdlX3J1bGUgUEFHRV9TWU0gbWF5
YmVfc3BhY2UgcGFnZV9zZWxlY3RvciBhdF9ydWxlX2hlYWRlcl9lbmRfbWF5YmVfc3BhY2UKLSAg
ICAneycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1heWJlX3NwYWNlX2JlZm9yZV9kZWNsYXJhdGlvbiBk
ZWNsYXJhdGlvbnNfYW5kX21hcmdpbnMgY2xvc2luZ19icmFjZSB7Ci0gICAgICAgIGlmICgkNCkK
LSAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVQYWdlUnVsZShwYXJzZXItPnNpbmtGbG9h
dGluZ1NlbGVjdG9yKCQ0KSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgLy8gQ2xlYXIg
cHJvcGVydGllcyBpbiB0aGUgaW52YWxpZCBAcGFnZSBydWxlLgotICAgICAgICAgICAgcGFyc2Vy
LT5jbGVhclByb3BlcnRpZXMoKTsKLSAgICAgICAgICAgIC8vIEFsc28gY2xlYXIgbWFyZ2luIGF0
LXJ1bGVzIGhlcmUgb25jZSB3ZSBmdWxseSBpbXBsZW1lbnQgbWFyZ2luIGF0LXJ1bGVzIHBhcnNp
bmcuCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgICAgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRh
KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgfCBiZWZvcmVfcGFnZV9ydWxlIFBBR0VfU1lNIGVy
cm9yIGludmFsaWRfYmxvY2sgewotICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOwotICAgICAg
JCQgPSAwOwotICAgIH0KLSAgICB8IGJlZm9yZV9wYWdlX3J1bGUgUEFHRV9TWU0gZXJyb3IgJzsn
IHsKLSAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKLSAgICAgICQkID0gMDsKLSAgICB9Ci0g
ICAgOwotCi1wYWdlX3NlbGVjdG9yOgotICAgIElERU5UIHsKLSAgICAgICAgJCQgPSBwYXJzZXIt
PmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldFRhZyhRdWFsaWZpZWRO
YW1lKG51bGxBdG9tLCAkMSwgcGFyc2VyLT5tX2RlZmF1bHROYW1lc3BhY2UpKTsKLSAgICAgICAg
JCQtPnNldEZvclBhZ2UoKTsKLSAgICB9Ci0gICAgfCBJREVOVCBwc2V1ZG9fcGFnZSB7Ci0gICAg
ICAgICQkID0gJDI7Ci0gICAgICAgIGlmICgkJCkgewotICAgICAgICAgICAgJCQtPnNldFRhZyhR
dWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMSwgcGFyc2VyLT5tX2RlZmF1bHROYW1lc3BhY2UpKTsK
LSAgICAgICAgICAgICQkLT5zZXRGb3JQYWdlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgfCBw
c2V1ZG9fcGFnZSB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgICAgIGlmICgkJCkKLSAgICAgICAg
ICAgICQkLT5zZXRGb3JQYWdlKCk7Ci0gICAgfQotICAgIHwgLyogZW1wdHkgKi8gewotICAgICAg
ICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0
Rm9yUGFnZSgpOwotICAgIH0KLSAgICA7Ci0KLWRlY2xhcmF0aW9uc19hbmRfbWFyZ2luczoKLSAg
ICBkZWNsYXJhdGlvbl9saXN0Ci0gICAgfCBkZWNsYXJhdGlvbnNfYW5kX21hcmdpbnMgbWFyZ2lu
X2JveCBtYXliZV9zcGFjZSBkZWNsYXJhdGlvbl9saXN0Ci0gICAgOwotCi1tYXJnaW5fYm94Ogot
ICAgIG1hcmdpbl9zeW0gewotICAgICAgICBwYXJzZXItPnN0YXJ0RGVjbGFyYXRpb25zRm9yTWFy
Z2luQm94KCk7Ci0gICAgfSBtYXliZV9zcGFjZSAneycgbWF5YmVfc3BhY2UgZGVjbGFyYXRpb25f
bGlzdCBjbG9zaW5nX2JyYWNlIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZU1hcmdpbkF0
UnVsZSgkMSk7Ci0gICAgfQotICAgIDsKLQotbWFyZ2luX3N5bSA6Ci0gICAgVE9QTEVGVENPUk5F
Ul9TWU0gewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpUb3BMZWZ0Q29ybmVyTWFyZ2luQm94
OwotICAgIH0KLSAgICB8IFRPUExFRlRfU1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6
VG9wTGVmdE1hcmdpbkJveDsKLSAgICB9Ci0gICAgfCBUT1BDRU5URVJfU1lNIHsKLSAgICAgICAg
JCQgPSBDU1NTZWxlY3Rvcjo6VG9wQ2VudGVyTWFyZ2luQm94OwotICAgIH0KLSAgICB8IFRPUFJJ
R0hUX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OlRvcFJpZ2h0TWFyZ2luQm94Owot
ICAgIH0KLSAgICB8IFRPUFJJR0hUQ09STkVSX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0
b3I6OlRvcFJpZ2h0Q29ybmVyTWFyZ2luQm94OwotICAgIH0KLSAgICB8IEJPVFRPTUxFRlRDT1JO
RVJfU1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6Qm90dG9tTGVmdENvcm5lck1hcmdp
bkJveDsKLSAgICB9Ci0gICAgfCBCT1RUT01MRUZUX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2Vs
ZWN0b3I6OkJvdHRvbUxlZnRNYXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgQk9UVE9NQ0VOVEVSX1NZ
TSB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkJvdHRvbUNlbnRlck1hcmdpbkJveDsKLSAg
ICB9Ci0gICAgfCBCT1RUT01SSUdIVF9TWU0gewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpC
b3R0b21SaWdodE1hcmdpbkJveDsKLSAgICB9Ci0gICAgfCBCT1RUT01SSUdIVENPUk5FUl9TWU0g
ewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpCb3R0b21SaWdodENvcm5lck1hcmdpbkJveDsK
LSAgICB9Ci0gICAgfCBMRUZUVE9QX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6Okxl
ZnRUb3BNYXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgTEVGVE1JRERMRV9TWU0gewotICAgICAgICAk
JCA9IENTU1NlbGVjdG9yOjpMZWZ0TWlkZGxlTWFyZ2luQm94OwotICAgIH0KLSAgICB8IExFRlRC
T1RUT01fU1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6TGVmdEJvdHRvbU1hcmdpbkJv
eDsKLSAgICB9Ci0gICAgfCBSSUdIVFRPUF9TWU0gewotICAgICAgICAkJCA9IENTU1NlbGVjdG9y
OjpSaWdodFRvcE1hcmdpbkJveDsKLSAgICB9Ci0gICAgfCBSSUdIVE1JRERMRV9TWU0gewotICAg
ICAgICAkJCA9IENTU1NlbGVjdG9yOjpSaWdodE1pZGRsZU1hcmdpbkJveDsKLSAgICB9Ci0gICAg
fCBSSUdIVEJPVFRPTV9TWU0gewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpSaWdodEJvdHRv
bU1hcmdpbkJveDsKLSAgICB9Ci0gICAgOwotCi1iZWZvcmVfZm9udF9mYWNlX3J1bGU6Ci0gICAg
LyogZW1wdHkgKi8gewotICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVs
ZVNvdXJjZURhdGE6OkZPTlRfRkFDRV9SVUxFKTsKLSAgICB9Ci0gICAgOwotCi1mb250X2ZhY2U6
Ci0gICAgYmVmb3JlX2ZvbnRfZmFjZV9ydWxlIEZPTlRfRkFDRV9TWU0gYXRfcnVsZV9oZWFkZXJf
ZW5kX21heWJlX3NwYWNlCi0gICAgJ3snIGF0X3J1bGVfYm9keV9zdGFydCBtYXliZV9zcGFjZV9i
ZWZvcmVfZGVjbGFyYXRpb24gZGVjbGFyYXRpb25fbGlzdCBjbG9zaW5nX2JyYWNlIHsKLSAgICAg
ICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZvbnRGYWNlUnVsZSgpOwotICAgIH0KLSAgICB8IGJlZm9y
ZV9mb250X2ZhY2VfcnVsZSBGT05UX0ZBQ0VfU1lNIGVycm9yIGludmFsaWRfYmxvY2sgewotICAg
ICAgJCQgPSAwOwotICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOwotICAgIH0KLSAgICB8IGJl
Zm9yZV9mb250X2ZhY2VfcnVsZSBGT05UX0ZBQ0VfU1lNIGVycm9yICc7JyB7Ci0gICAgICAkJCA9
IDA7Ci0gICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7Ci0gICAgfQotOwotCi1yZWdpb25fc2Vs
ZWN0b3I6Ci0gICAgc2VsZWN0b3JfbGlzdCB7Ci0gICAgICAgIGlmICgkMSkgewotICAgICAgICAg
ICAgcGFyc2VyLT5zZXRSZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9yKCQxKTsKLSAgICAgICAg
ICAgICQkID0gcGFyc2VyLT5yZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9yKCk7Ci0gICAgICAg
IH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgJCQgPSAwOwotICAgIH0KLTsKLQotYmVmb3Jl
X3JlZ2lvbl9ydWxlOgotICAgIC8qIGVtcHR5ICovIHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUnVs
ZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRhOjpSRUdJT05fUlVMRSk7Ci0gICAgfQotICAg
IDsKLQotcmVnaW9uOgotICAgIGJlZm9yZV9yZWdpb25fcnVsZSBXRUJLSVRfUkVHSU9OX1JVTEVf
U1lNIFdISVRFU1BBQ0UgcmVnaW9uX3NlbGVjdG9yIGF0X3J1bGVfaGVhZGVyX2VuZCAneycgYXRf
cnVsZV9ib2R5X3N0YXJ0IG1heWJlX3NwYWNlIGJsb2NrX3J1bGVfbGlzdCBzYXZlX2Jsb2NrIHsK
LSAgICAgICAgaWYgKCQ0KQotICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZVJlZ2lvblJ1
bGUoJDQsICQ5KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgICAg
ICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7Ci0gICAgICAgIH0KLSAgICB9Ci07Ci0KLWNvbWJp
bmF0b3I6Ci0gICAgJysnIG1heWJlX3NwYWNlIHsgJCQgPSBDU1NTZWxlY3Rvcjo6RGlyZWN0QWRq
YWNlbnQ7IH0KLSAgfCAnficgbWF5YmVfc3BhY2UgeyAkJCA9IENTU1NlbGVjdG9yOjpJbmRpcmVj
dEFkamFjZW50OyB9Ci0gIHwgJz4nIG1heWJlX3NwYWNlIHsgJCQgPSBDU1NTZWxlY3Rvcjo6Q2hp
bGQ7IH0KLSAgOwotCi1tYXliZV91bmFyeV9vcGVyYXRvcjoKLSAgICB1bmFyeV9vcGVyYXRvciB7
ICQkID0gJDE7IH0KLSAgICB8IHsgJCQgPSAxOyB9Ci0gICAgOwotCi11bmFyeV9vcGVyYXRvcjoK
LSAgICAnLScgeyAkJCA9IC0xOyB9Ci0gIHwgJysnIHsgJCQgPSAxOyB9Ci0gIDsKLQotbWF5YmVf
c3BhY2VfYmVmb3JlX2RlY2xhcmF0aW9uOgotICAgIG1heWJlX3NwYWNlIHsKLSAgICAgICAgcGFy
c2VyLT5tYXJrUHJvcGVydHlTdGFydCgpOwotICAgIH0KLSAgOwotCi1iZWZvcmVfc2VsZWN0b3Jf
bGlzdDoKLSAgICAvKiBlbXB0eSAqLyB7Ci0gICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJT
dGFydChDU1NSdWxlU291cmNlRGF0YTo6U1RZTEVfUlVMRSk7Ci0gICAgfQotICA7Ci0KLWF0X3J1
bGVfaGVhZGVyX2VuZDoKLSAgICAvKiBlbXB0eSAqLyB7Ci0gICAgICAgIHBhcnNlci0+bWFya1J1
bGVIZWFkZXJFbmQoKTsKLSAgICB9Ci0gIDsKLQotcnVsZXNldDoKLSAgICBiZWZvcmVfc2VsZWN0
b3JfbGlzdCBzZWxlY3Rvcl9saXN0IGF0X3J1bGVfaGVhZGVyX2VuZCAneycgYXRfcnVsZV9ib2R5
X3N0YXJ0IG1heWJlX3NwYWNlX2JlZm9yZV9kZWNsYXJhdGlvbiBkZWNsYXJhdGlvbl9saXN0IGNs
b3NpbmdfYnJhY2UgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlU3R5bGVSdWxlKCQyKTsK
LSAgICB9Ci0gIDsKLQotc2VsZWN0b3JfbGlzdDoKLSAgICBzZWxlY3RvciAlcHJlYyBVTklNUE9S
VEFOVF9UT0sgewotICAgICAgICBpZiAoJDEpIHsKLSAgICAgICAgICAgICQkID0gcGFyc2VyLT5z
ZWxlY3RvclZlY3RvcigpOwotICAgICAgICAgICAgJCQtPnNocmluaygwKTsKLSAgICAgICAgICAg
ICQkLT5hcHBlbmQocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMSkpOwotICAgICAgICAg
ICAgcGFyc2VyLT51cGRhdGVMYXN0U2VsZWN0b3JMaW5lQW5kUG9zaXRpb24oKTsKLSAgICAgICAg
fQotICAgIH0KLSAgICB8IHNlbGVjdG9yX2xpc3QgJywnIG1heWJlX3NwYWNlIHNlbGVjdG9yICVw
cmVjIFVOSU1QT1JUQU5UX1RPSyB7Ci0gICAgICAgIGlmICgkMSAmJiAkNCkgewotICAgICAgICAg
ICAgJCQgPSAkMTsKLSAgICAgICAgICAgICQkLT5hcHBlbmQocGFyc2VyLT5zaW5rRmxvYXRpbmdT
ZWxlY3RvcigkNCkpOwotICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVMYXN0U2VsZWN0b3JMaW5l
QW5kUG9zaXRpb24oKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAg
fQotICB8IHNlbGVjdG9yX2xpc3QgZXJyb3IgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAg
OwotCi1zZWxlY3Rvcl93aXRoX3RyYWlsaW5nX3doaXRlc3BhY2U6Ci0gICAgc2VsZWN0b3IgV0hJ
VEVTUEFDRSB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAgIDsKLQotc2VsZWN0b3I6Ci0g
ICAgc2ltcGxlX3NlbGVjdG9yIHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICB9Ci0gICAgfCBzZWxl
Y3Rvcl93aXRoX3RyYWlsaW5nX3doaXRlc3BhY2UKLSAgICB7Ci0gICAgICAgICQkID0gJDE7Ci0g
ICAgfQotICAgIHwgc2VsZWN0b3Jfd2l0aF90cmFpbGluZ193aGl0ZXNwYWNlIHNpbXBsZV9zZWxl
Y3RvcgotICAgIHsKLSAgICAgICAgJCQgPSAkMjsKLSAgICAgICAgaWYgKCEkMSkKLSAgICAgICAg
ICAgICQkID0gMDsKLSAgICAgICAgZWxzZSBpZiAoJCQpIHsKLSAgICAgICAgICAgIENTU1BhcnNl
clNlbGVjdG9yKiBlbmQgPSAkJDsKLSAgICAgICAgICAgIHdoaWxlIChlbmQtPnRhZ0hpc3Rvcnko
KSkKLSAgICAgICAgICAgICAgICBlbmQgPSBlbmQtPnRhZ0hpc3RvcnkoKTsKLSAgICAgICAgICAg
IGVuZC0+c2V0UmVsYXRpb24oQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQpOwotICAgICAgICAgICAg
ZW5kLT5zZXRUYWdIaXN0b3J5KHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDEpKTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICB8IHNlbGVjdG9yIGNvbWJpbmF0b3Igc2ltcGxlX3NlbGVjdG9y
IHsKLSAgICAgICAgJCQgPSAkMzsKLSAgICAgICAgaWYgKCEkMSkKLSAgICAgICAgICAgICQkID0g
MDsKLSAgICAgICAgZWxzZSBpZiAoJCQpIHsKLSAgICAgICAgICAgIENTU1BhcnNlclNlbGVjdG9y
KiBlbmQgPSAkJDsKLSAgICAgICAgICAgIHdoaWxlIChlbmQtPnRhZ0hpc3RvcnkoKSkKLSAgICAg
ICAgICAgICAgICBlbmQgPSBlbmQtPnRhZ0hpc3RvcnkoKTsKLSAgICAgICAgICAgIGVuZC0+c2V0
UmVsYXRpb24oJDIpOwotICAgICAgICAgICAgZW5kLT5zZXRUYWdIaXN0b3J5KHBhcnNlci0+c2lu
a0Zsb2F0aW5nU2VsZWN0b3IoJDEpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICB8IHNlbGVjdG9y
IGVycm9yIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICA7Ci0KLW5hbWVzcGFjZV9zZWxl
Y3RvcjoKLSAgICAvKiBlbXB0eSAqLyAnfCcgeyAkJC5jbGVhcigpOyB9Ci0gICAgfCAnKicgJ3wn
IHsgc3RhdGljIExDaGFyIHN0YXIgPSAnKic7ICQkLmluaXQoJnN0YXIsIDEpOyB9Ci0gICAgfCBJ
REVOVCAnfCcgeyAkJCA9ICQxOyB9Ci07Ci0gICAgCi1zaW1wbGVfc2VsZWN0b3I6Ci0gICAgZWxl
bWVudF9uYW1lIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3Io
KTsKLSAgICAgICAgJCQtPnNldFRhZyhRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMSwgcGFyc2Vy
LT5tX2RlZmF1bHROYW1lc3BhY2UpKTsKLSAgICB9Ci0gICAgfCBlbGVtZW50X25hbWUgc3BlY2lm
aWVyX2xpc3QgewotICAgICAgICAkJCA9ICQyOwotICAgICAgICBpZiAoJCQpCi0gICAgICAgICAg
ICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUobnVsbEF0b20sICQxLCAk
JCk7Ci0gICAgfQotICAgIHwgc3BlY2lmaWVyX2xpc3QgewotICAgICAgICAkJCA9ICQxOwotICAg
ICAgICBpZiAoJCQpCi0gICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxl
bWVudE5hbWUobnVsbEF0b20sIHN0YXJBdG9tLCAkJCk7Ci0gICAgfQotICAgIHwgbmFtZXNwYWNl
X3NlbGVjdG9yIGVsZW1lbnRfbmFtZSB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9h
dGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5zZXRUYWcocGFyc2VyLT5kZXRlcm1pbmVOYW1l
SW5OYW1lc3BhY2UoJDEsICQyKSk7Ci0gICAgfQotICAgIHwgbmFtZXNwYWNlX3NlbGVjdG9yIGVs
ZW1lbnRfbmFtZSBzcGVjaWZpZXJfbGlzdCB7Ci0gICAgICAgICQkID0gJDM7Ci0gICAgICAgIGlm
ICgkJCkKLSAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFt
ZSgkMSwgJDIsICQkKTsKLSAgICB9Ci0gICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3Igc3BlY2lmaWVy
X2xpc3QgewotICAgICAgICAkJCA9ICQyOwotICAgICAgICBpZiAoJCQpCi0gICAgICAgICAgICBw
YXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoJDEsIHN0YXJBdG9tLCAkJCk7
Ci0gICAgfQotICA7Ci0KLXNpbXBsZV9zZWxlY3Rvcl9saXN0OgotICAgIHNpbXBsZV9zZWxlY3Rv
ciAlcHJlYyBVTklNUE9SVEFOVF9UT0sgewotICAgICAgICBpZiAoJDEpIHsKLSAgICAgICAgICAg
ICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yVmVjdG9yKCk7Ci0gICAgICAgICAg
ICAkJC0+YXBwZW5kKHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDEpKTsKLSAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgIHwgc2ltcGxlX3NlbGVjdG9y
X2xpc3QgbWF5YmVfc3BhY2UgJywnIG1heWJlX3NwYWNlIHNpbXBsZV9zZWxlY3RvciAlcHJlYyBV
TklNUE9SVEFOVF9UT0sgewotICAgICAgICBpZiAoJDEgJiYgJDUpIHsKLSAgICAgICAgICAgICQk
ID0gJDE7Ci0gICAgICAgICAgICAkJC0+YXBwZW5kKHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0
b3IoJDUpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAg
IHwgc2ltcGxlX3NlbGVjdG9yX2xpc3QgZXJyb3IgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQot
ICA7Ci0KLWVsZW1lbnRfbmFtZToKLSAgICBJREVOVCB7Ci0gICAgICAgIENTU1BhcnNlclN0cmlu
ZyYgc3RyID0gJDE7Ci0gICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4dC5pc0hUTUxEb2N1bWVu
dCkKLSAgICAgICAgICAgIHN0ci5sb3dlcigpOwotICAgICAgICAkJCA9IHN0cjsKLSAgICB9Ci0g
ICAgfCAnKicgewotICAgICAgICBzdGF0aWMgTENoYXIgc3RhciA9ICcqJzsKLSAgICAgICAgJCQu
aW5pdCgmc3RhciwgMSk7Ci0gICAgfQotICA7Ci0KLXNwZWNpZmllcl9saXN0OgotICAgIHNwZWNp
ZmllciB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAgIHwgc3BlY2lmaWVyX2xpc3Qgc3Bl
Y2lmaWVyIHsKLSAgICAgICAgaWYgKCEkMikKLSAgICAgICAgICAgICQkID0gMDsKLSAgICAgICAg
ZWxzZSBpZiAoJDEpCi0gICAgICAgICAgICAkJCA9IHBhcnNlci0+dXBkYXRlU3BlY2lmaWVycygk
MSwgJDIpOwotICAgIH0KLSAgICB8IHNwZWNpZmllcl9saXN0IGVycm9yIHsKLSAgICAgICAgJCQg
PSAwOwotICAgIH0KLTsKLQotc3BlY2lmaWVyOgotICAgIElEU0VMIHsKLSAgICAgICAgJCQgPSBw
YXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldE1hdGNoKENT
U1NlbGVjdG9yOjpJZCk7Ci0gICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4dC5tb2RlID09IENT
U1F1aXJrc01vZGUpCi0gICAgICAgICAgICAkMS5sb3dlcigpOwotICAgICAgICAkJC0+c2V0VmFs
dWUoJDEpOwotICAgIH0KLSAgfCBIRVggewotICAgICAgICBpZiAoJDFbMF0gPj0gJzAnICYmICQx
WzBdIDw9ICc5JykgewotICAgICAgICAgICAgJCQgPSAwOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAg
ICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6SWQpOwotICAgICAgICAgICAgaWYgKHBhcnNl
ci0+bV9jb250ZXh0Lm1vZGUgPT0gQ1NTUXVpcmtzTW9kZSkKLSAgICAgICAgICAgICAgICAkMS5s
b3dlcigpOwotICAgICAgICAgICAgJCQtPnNldFZhbHVlKCQxKTsKLSAgICAgICAgfQotICAgIH0K
LSAgfCBjbGFzcwotICB8IGF0dHJpYgotICB8IHBzZXVkbwotICAgIDsKLQotY2xhc3M6Ci0gICAg
Jy4nIElERU5UIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3Io
KTsKLSAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpDbGFzcyk7Ci0gICAgICAgIGlm
IChwYXJzZXItPm1fY29udGV4dC5tb2RlID09IENTU1F1aXJrc01vZGUpCi0gICAgICAgICAgICAk
Mi5sb3dlcigpOwotICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOwotICAgIH0KLSAgOwotCi1hdHRy
X25hbWU6Ci0gICAgSURFTlQgbWF5YmVfc3BhY2UgewotICAgICAgICBDU1NQYXJzZXJTdHJpbmcm
IHN0ciA9ICQxOwotICAgICAgICBpZiAocGFyc2VyLT5tX2NvbnRleHQuaXNIVE1MRG9jdW1lbnQp
Ci0gICAgICAgICAgICBzdHIubG93ZXIoKTsKLSAgICAgICAgJCQgPSBzdHI7Ci0gICAgfQotICAg
IDsKLQotYXR0cmliOgotICAgICdbJyBtYXliZV9zcGFjZSBhdHRyX25hbWUgJ10nIHsKLSAgICAg
ICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNl
dEF0dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMywgbnVsbEF0b20pKTsKLSAgICAg
ICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpTZXQpOwotICAgIH0KLSAgICB8ICdbJyBtYXli
ZV9zcGFjZSBhdHRyX25hbWUgbWF0Y2ggbWF5YmVfc3BhY2UgaWRlbnRfb3Jfc3RyaW5nIG1heWJl
X3NwYWNlICddJyB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9y
KCk7Ci0gICAgICAgICQkLT5zZXRBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDMs
IG51bGxBdG9tKSk7Ci0gICAgICAgICQkLT5zZXRNYXRjaCgoQ1NTU2VsZWN0b3I6Ok1hdGNoKSQ0
KTsKLSAgICAgICAgJCQtPnNldFZhbHVlKCQ2KTsKLSAgICB9Ci0gICAgfCAnWycgbWF5YmVfc3Bh
Y2UgbmFtZXNwYWNlX3NlbGVjdG9yIGF0dHJfbmFtZSAnXScgewotICAgICAgICAkJCA9IHBhcnNl
ci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0QXR0cmlidXRlKHBh
cnNlci0+ZGV0ZXJtaW5lTmFtZUluTmFtZXNwYWNlKCQzLCAkNCkpOwotICAgICAgICAkJC0+c2V0
TWF0Y2goQ1NTU2VsZWN0b3I6OlNldCk7Ci0gICAgfQotICAgIHwgJ1snIG1heWJlX3NwYWNlIG5h
bWVzcGFjZV9zZWxlY3RvciBhdHRyX25hbWUgbWF0Y2ggbWF5YmVfc3BhY2UgaWRlbnRfb3Jfc3Ry
aW5nIG1heWJlX3NwYWNlICddJyB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGlu
Z1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5zZXRBdHRyaWJ1dGUocGFyc2VyLT5kZXRlcm1pbmVO
YW1lSW5OYW1lc3BhY2UoJDMsICQ0KSk7Ci0gICAgICAgICQkLT5zZXRNYXRjaCgoQ1NTU2VsZWN0
b3I6Ok1hdGNoKSQ1KTsKLSAgICAgICAgJCQtPnNldFZhbHVlKCQ3KTsKLSAgICB9Ci0gIDsKLQot
bWF0Y2g6Ci0gICAgJz0nIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6RXhhY3Q7Ci0gICAg
fQotICAgIHwgSU5DTFVERVMgewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpMaXN0OwotICAg
IH0KLSAgICB8IERBU0hNQVRDSCB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6Okh5cGhlbjsK
LSAgICB9Ci0gICAgfCBCRUdJTlNXSVRIIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6QmVn
aW47Ci0gICAgfQotICAgIHwgRU5EU1dJVEggewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpF
bmQ7Ci0gICAgfQotICAgIHwgQ09OVEFJTlMgewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpD
b250YWluOwotICAgIH0KLSAgICA7Ci0KLWlkZW50X29yX3N0cmluZzoKLSAgICBJREVOVAotICB8
IFNUUklORwotICAgIDsKLQotcHNldWRvX3BhZ2U6Ci0gICAgJzonIElERU5UIHsKLSAgICAgICAg
JCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldE1h
dGNoKENTU1NlbGVjdG9yOjpQYWdlUHNldWRvQ2xhc3MpOwotICAgICAgICAkMi5sb3dlcigpOwot
ICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOwotICAgICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlw
ZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUoKTsKLSAgICAgICAgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0
b3I6OlBzZXVkb1Vua25vd24pCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgfQotCi1wc2V1ZG86
Ci0gICAgJzonIElERU5UIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2Vs
ZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7
Ci0gICAgICAgICQyLmxvd2VyKCk7Ci0gICAgICAgICQkLT5zZXRWYWx1ZSgkMik7Ci0gICAgICAg
IENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOwotICAgICAg
ICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bikKLSAgICAgICAgICAgICQk
ID0gMDsKLSAgICB9Ci0gICAgfCAnOicgJzonIElERU5UIHsKLSAgICAgICAgJCQgPSBwYXJzZXIt
PmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVj
dG9yOjpQc2V1ZG9FbGVtZW50KTsKLSAgICAgICAgJDMubG93ZXIoKTsKLSAgICAgICAgJCQtPnNl
dFZhbHVlKCQzKTsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgY2FsbCBpcyBuZWVkZWQgdG8gZm9y
Y2Ugc2VsZWN0b3IgdG8gY29tcHV0ZSB0aGUgcHNldWRvVHlwZSBlYXJseSBlbm91Z2guCi0gICAg
ICAgICQkLT5wc2V1ZG9UeXBlKCk7Ci0gICAgfQotICAgIC8vIHVzZSBieSA6LXdlYmtpdC1hbnku
Ci0gICAgLy8gRklYTUU6IHNob3VsZCB3ZSBzdXBwb3J0IGdlbmVyaWMgc2VsZWN0b3JzIGhlcmUg
b3IganVzdCBzaW1wbGVfc2VsZWN0b3JzPwotICAgIC8vIFVzZSBzaW1wbGVfc2VsZWN0b3JfbGlz
dCBmb3Igbm93IHRvIG1hdGNoIC1tb3otYW55LgotICAgIC8vIFNlZSBodHRwOi8vbGlzdHMudzMu
b3JnL0FyY2hpdmVzL1B1YmxpYy93d3ctc3R5bGUvMjAxMFNlcC8wNTY2Lmh0bWwgZm9yIHNvbWUK
LSAgICAvLyByZWxhdGVkIGRpc2N1c3Npb24gd2l0aCByZXNwZWN0IHRvIDpub3QuCi0gICAgfCAn
OicgQU5ZRlVOQ1RJT04gbWF5YmVfc3BhY2Ugc2ltcGxlX3NlbGVjdG9yX2xpc3QgbWF5YmVfc3Bh
Y2UgJyknIHsKLSAgICAgICAgaWYgKCQ0KSB7Ci0gICAgICAgICAgICAkJCA9IHBhcnNlci0+Y3Jl
YXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzcyk7Ci0gICAgICAgICAgICAkJC0+YWRvcHRTZWxlY3RvclZlY3Rvcigq
cGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvclZlY3RvcigkNCkpOwotICAgICAgICAgICAgJDIu
bG93ZXIoKTsKLSAgICAgICAgICAgICQkLT5zZXRWYWx1ZSgkMik7Ci0gICAgICAgICAgICBDU1NT
ZWxlY3Rvcjo6UHNldWRvVHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUoKTsKLSAgICAgICAgICAg
IGlmICh0eXBlICE9IENTU1NlbGVjdG9yOjpQc2V1ZG9BbnkpCi0gICAgICAgICAgICAgICAgJCQg
PSAwOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICQkID0gMDsKLSAgICB9Ci0gICAgLy8g
dXNlZCBieSA6bnRoLSooYXgrYikKLSAgICB8ICc6JyBGVU5DVElPTiBtYXliZV9zcGFjZSBOVEgg
bWF5YmVfc3BhY2UgJyknIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2Vs
ZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7
Ci0gICAgICAgICQkLT5zZXRBcmd1bWVudCgkNCk7Ci0gICAgICAgICQkLT5zZXRWYWx1ZSgkMik7
Ci0gICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlwZSgp
OwotICAgICAgICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bikKLSAgICAg
ICAgICAgICQkID0gMDsKLSAgICB9Ci0gICAgLy8gdXNlZCBieSA6bnRoLSoKLSAgICB8ICc6JyBG
VU5DVElPTiBtYXliZV9zcGFjZSBtYXliZV91bmFyeV9vcGVyYXRvciBJTlRFR0VSIG1heWJlX3Nw
YWNlICcpJyB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7
Ci0gICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpOwotICAgICAg
ICAkJC0+c2V0QXJndW1lbnQoU3RyaW5nOjpudW1iZXIoJDQgKiAkNSkpOwotICAgICAgICAkJC0+
c2V0VmFsdWUoJDIpOwotICAgICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSB0eXBlID0gJCQt
PnBzZXVkb1R5cGUoKTsKLSAgICAgICAgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb1Vu
a25vd24pCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgIC8vIHVzZWQgYnkgOm50aC0q
KG9kZC9ldmVuKSBhbmQgOmxhbmcKLSAgICB8ICc6JyBGVU5DVElPTiBtYXliZV9zcGFjZSBJREVO
VCBtYXliZV9zcGFjZSAnKScgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdT
ZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNz
KTsKLSAgICAgICAgJCQtPnNldEFyZ3VtZW50KCQ0KTsKLSAgICAgICAgJDIubG93ZXIoKTsKLSAg
ICAgICAgJCQtPnNldFZhbHVlKCQyKTsKLSAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUg
dHlwZSA9ICQkLT5wc2V1ZG9UeXBlKCk7Ci0gICAgICAgIGlmICh0eXBlID09IENTU1NlbGVjdG9y
OjpQc2V1ZG9Vbmtub3duKQotICAgICAgICAgICAgJCQgPSAwOwotICAgICAgICBlbHNlIGlmICh0
eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9OdGhDaGlsZCB8fAotICAgICAgICAgICAgICAgICB0
eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9OdGhPZlR5cGUgfHwKLSAgICAgICAgICAgICAgICAg
dHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvTnRoTGFzdENoaWxkIHx8Ci0gICAgICAgICAgICAg
ICAgIHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb050aExhc3RPZlR5cGUpIHsKLSAgICAgICAg
ICAgIGlmICghaXNWYWxpZE50aFRva2VuKCQ0KSkKLSAgICAgICAgICAgICAgICAkJCA9IDA7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgLy8gdXNlZCBieSA6bm90Ci0gICAgfCAnOicgTk9URlVOQ1RJ
T04gbWF5YmVfc3BhY2Ugc2ltcGxlX3NlbGVjdG9yIG1heWJlX3NwYWNlICcpJyB7Ci0gICAgICAg
IGlmICghJDQgfHwgISQ0LT5pc1NpbXBsZSgpKQotICAgICAgICAgICAgJCQgPSAwOwotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9y
KCk7Ci0gICAgICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsK
LQotICAgICAgICAgICAgQ1NTU2VsZWN0b3JWZWN0b3Igc2VsZWN0b3JWZWN0b3I7Ci0gICAgICAg
ICAgICBzZWxlY3RvclZlY3Rvci5hcHBlbmQocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3Rvcigk
NCkpOwotICAgICAgICAgICAgJCQtPmFkb3B0U2VsZWN0b3JWZWN0b3Ioc2VsZWN0b3JWZWN0b3Ip
OwotCi0gICAgICAgICAgICAkMi5sb3dlcigpOwotICAgICAgICAgICAgJCQtPnNldFZhbHVlKCQy
KTsKLSAgICAgICAgfQotICAgIH0KLSAgOwotCi1kZWNsYXJhdGlvbl9saXN0OgotICAgIGRlY2xh
cmF0aW9uIHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICB9Ci0gICAgfCBkZWNsX2xpc3QgZGVjbGFy
YXRpb24gewotICAgICAgICAkJCA9ICQxOwotICAgICAgICBpZiAoICQyICkKLSAgICAgICAgICAg
ICQkID0gJDI7Ci0gICAgfQotICAgIHwgZGVjbF9saXN0IHsKLSAgICAgICAgJCQgPSAkMTsKLSAg
ICB9Ci0gICAgfCBlcnJvciBpbnZhbGlkX2Jsb2NrX2xpc3QgZXJyb3IgewotICAgICAgICAkJCA9
IGZhbHNlOwotICAgIH0KLSAgICB8IGVycm9yIHsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAgICB9
Ci0gICAgfCBkZWNsX2xpc3QgZXJyb3IgewotICAgICAgICAkJCA9ICQxOwotICAgIH0KLSAgICB8
IGRlY2xfbGlzdCBpbnZhbGlkX2Jsb2NrX2xpc3QgewotICAgICAgICAkJCA9ICQxOwotICAgIH0K
LSAgICA7Ci0KLWRlY2xfbGlzdDoKLSAgICBkZWNsYXJhdGlvbiAnOycgbWF5YmVfc3BhY2Ugewot
ICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7Ci0gICAgICAgICQkID0gJDE7Ci0g
ICAgfQotICAgIHwgZGVjbGFyYXRpb24gaW52YWxpZF9ibG9ja19saXN0IG1heWJlX3NwYWNlIHsK
LSAgICAgICAgJCQgPSBmYWxzZTsKLSAgICB9Ci0gICAgfCBkZWNsYXJhdGlvbiBpbnZhbGlkX2Js
b2NrX2xpc3QgJzsnIG1heWJlX3NwYWNlIHsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAgICB9Ci0g
ICAgfCBlcnJvciAnOycgbWF5YmVfc3BhY2UgewotICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0
eVN0YXJ0KCk7Ci0gICAgICAgICQkID0gZmFsc2U7Ci0gICAgfQotICAgIHwgZXJyb3IgaW52YWxp
ZF9ibG9ja19saXN0IGVycm9yICc7JyBtYXliZV9zcGFjZSB7Ci0gICAgICAgICQkID0gZmFsc2U7
Ci0gICAgfQotICAgIHwgZGVjbF9saXN0IGRlY2xhcmF0aW9uICc7JyBtYXliZV9zcGFjZSB7Ci0g
ICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5U3RhcnQoKTsKLSAgICAgICAgJCQgPSAkMTsKLSAg
ICAgICAgaWYgKCQyKQotICAgICAgICAgICAgJCQgPSAkMjsKLSAgICB9Ci0gICAgfCBkZWNsX2xp
c3QgZXJyb3IgJzsnIG1heWJlX3NwYWNlIHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlT
dGFydCgpOwotICAgICAgICAkJCA9ICQxOwotICAgIH0KLSAgICB8IGRlY2xfbGlzdCBlcnJvciBp
bnZhbGlkX2Jsb2NrX2xpc3QgZXJyb3IgJzsnIG1heWJlX3NwYWNlIHsKLSAgICAgICAgcGFyc2Vy
LT5tYXJrUHJvcGVydHlTdGFydCgpOwotICAgICAgICAkJCA9ICQxOwotICAgIH0KLSAgICA7Ci0K
LWRlY2xhcmF0aW9uOgotICAgIFZBUl9ERUZJTklUSU9OICc6JyBtYXliZV9zcGFjZSBleHByIHBy
aW8gewotI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQotICAgICAgICBwYXJzZXItPnN0b3JlVmFy
aWFibGVEZWNsYXJhdGlvbigkMSwgcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDQpLCAk
NSk7Ci0gICAgICAgICQkID0gdHJ1ZTsKLSAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlFbmQo
JDUsIHRydWUpOwotI2Vsc2UKLSAgICAgICAgJCQgPSBmYWxzZTsKLSNlbmRpZgotICAgIH0KLSAg
ICB8Ci0gICAgcHJvcGVydHkgJzonIG1heWJlX3NwYWNlIGV4cHIgcHJpbyB7Ci0gICAgICAgICQk
ID0gZmFsc2U7Ci0gICAgICAgIGJvb2wgaXNQcm9wZXJ0eVBhcnNlZCA9IGZhbHNlOwotICAgICAg
ICBpZiAoJDEgJiYgJDQpIHsKLSAgICAgICAgICAgIHBhcnNlci0+bV92YWx1ZUxpc3QgPSBwYXJz
ZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCk7Ci0gICAgICAgICAgICBpbnQgb2xkUGFyc2Vk
UHJvcGVydGllcyA9IHBhcnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCk7Ci0gICAgICAg
ICAgICAkJCA9IHBhcnNlci0+cGFyc2VWYWx1ZShzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPigk
MSksICQ1KTsKLSAgICAgICAgICAgIGlmICghJCQpCi0gICAgICAgICAgICAgICAgcGFyc2VyLT5y
b2xsYmFja0xhc3RQcm9wZXJ0aWVzKHBhcnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCkg
LSBvbGRQYXJzZWRQcm9wZXJ0aWVzKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBpc1Byb3BlcnR5UGFyc2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIHBhcnNlci0+bV92YWx1ZUxp
c3QgPSBudWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5RW5k
KCQ1LCBpc1Byb3BlcnR5UGFyc2VkKTsKLSAgICB9Ci0gICAgfAotICAgIHByb3BlcnR5IGVycm9y
IHsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAgICB9Ci0gICAgfAotICAgIHByb3BlcnR5ICc6JyBt
YXliZV9zcGFjZSBlcnJvciBleHByIHByaW8gewotICAgICAgICAvKiBUaGUgZGVmYXVsdCBtb3Zh
YmxlIHR5cGUgdGVtcGxhdGUgaGFzIGxldHRlci1zcGFjaW5nOiAubm9uZTsgIEhhbmRsZSB0aGlz
IGJ5IGxvb2tpbmcgZm9yCi0gICAgICAgIGVycm9yIHRva2VucyBhdCB0aGUgc3RhcnQgb2YgYW4g
ZXhwciwgcmVjb3ZlciB0aGUgZXhwciBhbmQgdGhlbiB0cmVhdCBhcyBhbiBlcnJvciwgY2xlYW5p
bmcKLSAgICAgICAgdXAgYW5kIGRlbGV0aW5nIHRoZSBzaGlmdGVkIGV4cHIuICAqLwotICAgICAg
ICBwYXJzZXItPm1hcmtQcm9wZXJ0eUVuZChmYWxzZSwgZmFsc2UpOwotICAgICAgICAkJCA9IGZh
bHNlOwotICAgIH0KLSAgICB8Ci0gICAgcHJvcGVydHkgJzonIG1heWJlX3NwYWNlIGV4cHIgcHJp
byBlcnJvciB7Ci0gICAgICAgIC8qIFdoZW4gd2UgZW5jb3VudGVyIHNvbWV0aGluZyBsaWtlIHAg
e2NvbG9yOiByZWQgIWltcG9ydGFudCBmYWlsO30gd2Ugc2hvdWxkIGRyb3AgdGhlIGRlY2xhcmF0
aW9uICovCi0gICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5RW5kKGZhbHNlLCBmYWxzZSk7Ci0g
ICAgICAgICQkID0gZmFsc2U7Ci0gICAgfQotICAgIHwKLSAgICBJTVBPUlRBTlRfU1lNIG1heWJl
X3NwYWNlIHsKLSAgICAgICAgLyogSGFuZGxlIHRoaXMgY2FzZTogZGl2IHsgdGV4dC1hbGlnbjog
Y2VudGVyOyAhaW1wb3J0YW50IH0gSnVzdCByZWR1Y2UgYXdheSB0aGUgc3RyYXkgIWltcG9ydGFu
dC4gKi8KLSAgICAgICAgJCQgPSBmYWxzZTsKLSAgICB9Ci0gICAgfAotICAgIHByb3BlcnR5ICc6
JyBtYXliZV9zcGFjZSB7Ci0gICAgICAgIC8qIGRpdiB7IGZvbnQtZmFtaWx5OiB9IEp1c3QgcmVk
dWNlIGF3YXkgdGhpcyBwcm9wZXJ0eSB3aXRoIG5vIHZhbHVlLiAqLwotICAgICAgICBwYXJzZXIt
Pm1hcmtQcm9wZXJ0eUVuZChmYWxzZSwgZmFsc2UpOwotICAgICAgICAkJCA9IGZhbHNlOwotICAg
IH0KLSAgICB8Ci0gICAgcHJvcGVydHkgJzonIG1heWJlX3NwYWNlIGVycm9yIHsKLSAgICAgICAg
LyogaWYgd2UgY29tZSBhY3Jvc3MgcnVsZXMgd2l0aCBpbnZhbGlkIHZhbHVlcyBsaWtlIHRoaXMg
Y2FzZTogcCB7IHdlaWdodDogKjsgfSwganVzdCBkaXNjYXJkIHRoZSBydWxlICovCi0gICAgICAg
IHBhcnNlci0+bWFya1Byb3BlcnR5RW5kKGZhbHNlLCBmYWxzZSk7Ci0gICAgICAgICQkID0gZmFs
c2U7Ci0gICAgfQotICAgIHwKLSAgICBwcm9wZXJ0eSBpbnZhbGlkX2Jsb2NrIHsKLSAgICAgICAg
LyogaWYgd2UgY29tZSBhY3Jvc3M6IGRpdiB7IGNvbG9yeztjb2xvcjptYXJvb259IH0sIGlnbm9y
ZSBldmVyeXRoaW5nIHdpdGhpbiBjdXJseSBicmFja2V0cyAqLwotICAgICAgICAkJCA9IGZhbHNl
OwotICAgIH0KLSAgOwotCi1wcm9wZXJ0eToKLSAgICBJREVOVCBtYXliZV9zcGFjZSB7Ci0gICAg
ICAgICQkID0gY3NzUHJvcGVydHlJRCgkMSk7Ci0gICAgfQotICA7Ci0KLXByaW86Ci0gICAgSU1Q
T1JUQU5UX1NZTSBtYXliZV9zcGFjZSB7ICQkID0gdHJ1ZTsgfQotICAgIHwgLyogZW1wdHkgKi8g
eyAkJCA9IGZhbHNlOyB9Ci0gIDsKLQotZXhwcjoKLSAgICB0ZXJtIHsKLSAgICAgICAgJCQgPSBw
YXJzZXItPmNyZWF0ZUZsb2F0aW5nVmFsdWVMaXN0KCk7Ci0gICAgICAgICQkLT5hZGRWYWx1ZShw
YXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlKCQxKSk7Ci0gICAgfQotICAgIHwgZXhwciBvcGVyYXRv
ciB0ZXJtIHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgaWYgKCQkKSB7Ci0gICAgICAgICAg
ICBpZiAoJDIpIHsKLSAgICAgICAgICAgICAgICBDU1NQYXJzZXJWYWx1ZSB2OwotICAgICAgICAg
ICAgICAgIHYuaWQgPSAwOwotICAgICAgICAgICAgICAgIHYudW5pdCA9IENTU1BhcnNlclZhbHVl
OjpPcGVyYXRvcjsKLSAgICAgICAgICAgICAgICB2LmlWYWx1ZSA9ICQyOwotICAgICAgICAgICAg
ICAgICQkLT5hZGRWYWx1ZSh2KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICQkLT5hZGRW
YWx1ZShwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlKCQzKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgfCBleHByIGludmFsaWRfYmxvY2tfbGlzdCB7Ci0gICAgICAgICQkID0gMDsKLSAgICB9Ci0g
ICAgfCBleHByIGludmFsaWRfYmxvY2tfbGlzdCBlcnJvciB7Ci0gICAgICAgICQkID0gMDsKLSAg
ICB9Ci0gICAgfCBleHByIGVycm9yIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgOwotCi1v
cGVyYXRvcjoKLSAgICAnLycgbWF5YmVfc3BhY2UgewotICAgICAgICAkJCA9ICcvJzsKLSAgICB9
Ci0gIHwgJywnIG1heWJlX3NwYWNlIHsKLSAgICAgICAgJCQgPSAnLCc7Ci0gICAgfQotICB8IC8q
IGVtcHR5ICovIHsKLSAgICAgICAgJCQgPSAwOwotICB9Ci0gIDsKLQotdGVybToKLSAgdW5hcnlf
dGVybSB7ICQkID0gJDE7IH0KLSAgfCB1bmFyeV9vcGVyYXRvciB1bmFyeV90ZXJtIHsgJCQgPSAk
MjsgJCQuZlZhbHVlICo9ICQxOyB9Ci0gIHwgU1RSSU5HIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAw
OyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5H
OyB9Ci0gIHwgSURFTlQgbWF5YmVfc3BhY2UgewotICAgICAgJCQuaWQgPSBjc3NWYWx1ZUtleXdv
cmRJRCgkMSk7Ci0gICAgICAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVDsK
LSAgICAgICQkLnN0cmluZyA9ICQxOwotICB9Ci0gIC8qIFdlIG1pZ2h0IG5lZWQgdG8gYWN0dWFs
bHkgcGFyc2UgdGhlIG51bWJlciBmcm9tIGEgZGltZW5zaW9uLCBidXQgd2UgY2FuJ3QganVzdCBw
dXQgc29tZXRoaW5nIHRoYXQgdXNlcyAkJC5zdHJpbmcgaW50byB1bmFyeV90ZXJtLiAqLwotICB8
IERJTUVOIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRElNRU5TSU9OOyB9Ci0gIHwgdW5hcnlfb3BlcmF0b3Ig
RElNRU4gbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQyOyAkJC51bml0ID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ESU1FTlNJT047IH0KLSAgfCBVUkkgbWF5YmVfc3BhY2Ug
eyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19VUkk7IH0KLSAgfCBVTklDT0RFUkFOR0UgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQk
LnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VTklDT0RFX1JB
TkdFOyB9Ci0gIHwgSEVYIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSAkMTsg
JCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEFSU0VSX0hFWENPTE9SOyB9Ci0gIHwg
JyMnIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSBDU1NQYXJzZXJTdHJpbmco
KTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEFSU0VSX0hFWENPTE9SOyB9IC8q
IEhhbmRsZSBlcnJvciBjYXNlOiAiY29sb3I6ICM7IiAqLwotICB8IFZBUkZVTkNUSU9OIG1heWJl
X3NwYWNlIElERU5UICcpJyBtYXliZV9zcGFjZSB7Ci0jaWYgRU5BQkxFKENTU19WQVJJQUJMRVMp
Ci0gICAgICAkJC5pZCA9IDA7Ci0gICAgICAkJC5zdHJpbmcgPSAkMzsKLSAgICAgICQkLnVuaXQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZBUklBQkxFX05BTUU7Ci0jZW5kaWYKLSAgfQotICAv
KiBGSVhNRTogYWNjb3JkaW5nIHRvIHRoZSBzcGVjcyBhIGZ1bmN0aW9uIGNhbiBoYXZlIGEgdW5h
cnlfb3BlcmF0b3IgaW4gZnJvbnQuIEkga25vdyBubyBjYXNlIHdoZXJlIHRoaXMgbWFrZXMgc2Vu
c2UgKi8KLSAgfCBmdW5jdGlvbiB7Ci0gICAgICAkJCA9ICQxOwotICB9Ci0gIHwgY2FsY19mdW5j
dGlvbiB7Ci0gICAgICAkJCA9ICQxOwotICB9Ci0gIHwgbWluX29yX21heF9mdW5jdGlvbiB7Ci0g
ICAgICAkJCA9ICQxOwotICB9Ci0gIHwgJyUnIG1heWJlX3NwYWNlIHsgLyogSGFuZGxlIHdpZHRo
OiAlOyAqLwotICAgICAgJCQuaWQgPSAwOyAkJC51bml0ID0gMDsKLSAgfQotICA7Ci0KLXVuYXJ5
X3Rlcm06Ci0gIElOVEVHRVIgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmlzSW50ID0gdHJ1
ZTsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJF
UjsgfQotICB8IEZMT0FUVE9LRU4gbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmlzSW50ID0g
ZmFsc2U7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVI7IH0KLSAgfCBQRVJDRU5UQUdFIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFs
dWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRTsgfQot
ICB8IFBYUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYOyB9Ci0gIHwgQ01TIG1heWJlX3NwYWNlIHsgJCQu
aWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
Q007IH0KLSAgfCBNTVMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAk
JC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19NTTsgfQotICB8IElOUyBtYXliZV9zcGFj
ZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX0lOOyB9Ci0gIHwgUFRTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUg
PSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFQ7IH0KLSAgfCBQQ1MgbWF5
YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QQzsgfQotICB8IERFR1MgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQk
LmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ERUc7IH0KLSAg
fCBSQURTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkFEOyB9Ci0gIHwgR1JBRFMgbWF5YmVfc3BhY2UgeyAk
JC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19HUkFEOyB9Ci0gIHwgVFVSTlMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9
ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19UVVJOOyB9Ci0gIHwgTVNFQ1Mg
bWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19NUzsgfQotICB8IFNFQ1MgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7
ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TOyB9Ci0g
IHwgSEVSVFogbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19IWjsgfQotICB8IEtIRVJUWiBtYXliZV9zcGFjZSB7
ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX0tIWjsgfQotICB8IEVNUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0g
JDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUzsgfQotICB8IFFFTVMgbWF5
YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUGFyc2Vy
VmFsdWU6OlFfRU1TOyB9Ci0gIHwgRVhTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFs
dWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRVhTOyB9Ci0gIHwgUkVN
UyBtYXliZV9zcGFjZSB7Ci0gICAgICAkJC5pZCA9IDA7Ci0gICAgICAkJC5mVmFsdWUgPSAkMTsK
LSAgICAgICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JFTVM7Ci0gICAgICBpZiAo
cGFyc2VyLT5tX3N0eWxlU2hlZXQpCi0gICAgICAgICAgcGFyc2VyLT5tX3N0eWxlU2hlZXQtPnBh
cnNlclNldFVzZXNSZW1Vbml0cyh0cnVlKTsKLSAgfQotICB8IFZXIG1heWJlX3NwYWNlIHsgJCQu
aWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
Vlc7IH0KLSAgfCBWSCBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQk
LnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZIOyB9Ci0gIHwgVk1JTiBtYXliZV9zcGFj
ZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1ZNSU47IH0KLSAgfCBEUFBYIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFs
dWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRFBQWDsgfQotICB8IERQ
SSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0RQSTsgfQotICB8IERQQ00gbWF5YmVfc3BhY2UgeyAkJC5pZCA9
IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19EUENN
OyB9Ci0gIDsKLQotZnVuY3Rpb246Ci0gICAgRlVOQ1RJT04gbWF5YmVfc3BhY2UgZXhwciAnKScg
bWF5YmVfc3BhY2UgewotICAgICAgICBDU1NQYXJzZXJGdW5jdGlvbiogZiA9IHBhcnNlci0+Y3Jl
YXRlRmxvYXRpbmdGdW5jdGlvbigpOwotICAgICAgICBmLT5uYW1lID0gJDE7Ci0gICAgICAgIGYt
PmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkMyk7Ci0gICAgICAgICQkLmlk
ID0gMDsKLSAgICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKLSAgICAg
ICAgJCQuZnVuY3Rpb24gPSBmOwotICAgIH0gfAotICAgIEZVTkNUSU9OIG1heWJlX3NwYWNlIGV4
cHIgVE9LRU5fRU9GIHsKLSAgICAgICAgQ1NTUGFyc2VyRnVuY3Rpb24qIGYgPSBwYXJzZXItPmNy
ZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsKLSAgICAgICAgZi0+bmFtZSA9ICQxOwotICAgICAgICBm
LT5hcmdzID0gcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDMpOwotICAgICAgICAkJC5p
ZCA9IDA7Ci0gICAgICAgICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb247Ci0gICAg
ICAgICQkLmZ1bmN0aW9uID0gZjsKLSAgICB9IHwKLSAgICBGVU5DVElPTiBtYXliZV9zcGFjZSAn
KScgbWF5YmVfc3BhY2UgewotICAgICAgICBDU1NQYXJzZXJGdW5jdGlvbiogZiA9IHBhcnNlci0+
Y3JlYXRlRmxvYXRpbmdGdW5jdGlvbigpOwotICAgICAgICBmLT5uYW1lID0gJDE7Ci0gICAgICAg
IENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVMaXN0ID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1Zh
bHVlTGlzdCgpOwotICAgICAgICBmLT5hcmdzID0gcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxp
c3QodmFsdWVMaXN0KTsKLSAgICAgICAgJCQuaWQgPSAwOwotICAgICAgICAkJC51bml0ID0gQ1NT
UGFyc2VyVmFsdWU6OkZ1bmN0aW9uOwotICAgICAgICAkJC5mdW5jdGlvbiA9IGY7Ci0gICAgfSB8
Ci0gICAgRlVOQ1RJT04gbWF5YmVfc3BhY2UgZXJyb3IgewotICAgICAgICBDU1NQYXJzZXJGdW5j
dGlvbiogZiA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdGdW5jdGlvbigpOwotICAgICAgICBmLT5u
YW1lID0gJDE7Ci0gICAgICAgIGYtPmFyZ3MgPSBudWxscHRyOwotICAgICAgICAkJC5pZCA9IDA7
Ci0gICAgICAgICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb247Ci0gICAgICAgICQk
LmZ1bmN0aW9uID0gZjsKLSAgfQotICA7Ci0gCi1jYWxjX2Z1bmNfdGVybToKLSAgdW5hcnlfdGVy
bSB7ICQkID0gJDE7IH0KLSAgfCBWQVJGVU5DVElPTiBtYXliZV9zcGFjZSBJREVOVCAnKScgbWF5
YmVfc3BhY2UgewotI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQotICAgICAgJCQuaWQgPSAwOwot
ICAgICAgJCQuc3RyaW5nID0gJDM7Ci0gICAgICAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19WQVJJQUJMRV9OQU1FOwotI2VuZGlmCi0gIH0KLSAgfCB1bmFyeV9vcGVyYXRvciB1bmFy
eV90ZXJtIHsgJCQgPSAkMjsgJCQuZlZhbHVlICo9ICQxOyB9Ci0gIDsKLQotY2FsY19mdW5jX29w
ZXJhdG9yOgotICAgICcrJyBXSElURVNQQUNFIHsKLSAgICAgICAgJCQgPSAnKyc7Ci0gICAgfQot
ICAgIHwgJy0nIFdISVRFU1BBQ0UgewotICAgICAgICAkJCA9ICctJzsKLSAgICB9Ci0gICAgfCAn
KicgbWF5YmVfc3BhY2UgewotICAgICAgICAkJCA9ICcqJzsKLSAgICB9Ci0gICAgfCAnLycgbWF5
YmVfc3BhY2UgewotICAgICAgICAkJCA9ICcvJzsKLSAgICB9Ci0gIDsKLQotY2FsY19mdW5jX3Bh
cmVuX2V4cHI6Ci0gICAgJygnIG1heWJlX3NwYWNlIGNhbGNfZnVuY19leHByIG1heWJlX3NwYWNl
ICcpJyBtYXliZV9zcGFjZSB7Ci0gICAgICAgIGlmICgkMykgewotICAgICAgICAgICAgJCQgPSAk
MzsKLSAgICAgICAgICAgIENTU1BhcnNlclZhbHVlIHY7Ci0gICAgICAgICAgICB2LmlkID0gMDsK
LSAgICAgICAgICAgIHYudW5pdCA9IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvcjsKLSAgICAgICAg
ICAgIHYuaVZhbHVlID0gJygnOwotICAgICAgICAgICAgJCQtPmluc2VydFZhbHVlQXQoMCwgdik7
Ci0gICAgICAgICAgICB2LmlWYWx1ZSA9ICcpJzsKLSAgICAgICAgICAgICQkLT5hZGRWYWx1ZSh2
KTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgfQotCi1jYWxjX2Z1
bmNfZXhwcjoKLSAgICBjYWxjX2Z1bmNfdGVybSBtYXliZV9zcGFjZSB7Ci0gICAgICAgICQkID0g
cGFyc2VyLT5jcmVhdGVGbG9hdGluZ1ZhbHVlTGlzdCgpOwotICAgICAgICAkJC0+YWRkVmFsdWUo
cGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZSgkMSkpOwotICAgIH0KLSAgICB8IGNhbGNfZnVuY19l
eHByIGNhbGNfZnVuY19vcGVyYXRvciBjYWxjX2Z1bmNfdGVybSB7Ci0gICAgICAgIGlmICgkMSAm
JiAkMikgewotICAgICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgICAgIENTU1BhcnNlclZhbHVl
IHY7Ci0gICAgICAgICAgICB2LmlkID0gMDsKLSAgICAgICAgICAgIHYudW5pdCA9IENTU1BhcnNl
clZhbHVlOjpPcGVyYXRvcjsKLSAgICAgICAgICAgIHYuaVZhbHVlID0gJDI7Ci0gICAgICAgICAg
ICAkJC0+YWRkVmFsdWUodik7Ci0gICAgICAgICAgICAkJC0+YWRkVmFsdWUocGFyc2VyLT5zaW5r
RmxvYXRpbmdWYWx1ZSgkMykpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICQkID0gMDsK
LQotICAgIH0KLSAgICB8IGNhbGNfZnVuY19leHByIGNhbGNfZnVuY19vcGVyYXRvciBjYWxjX2Z1
bmNfcGFyZW5fZXhwciB7Ci0gICAgICAgIGlmICgkMSAmJiAkMiAmJiAkMykgewotICAgICAgICAg
ICAgJCQgPSAkMTsKLSAgICAgICAgICAgIENTU1BhcnNlclZhbHVlIHY7Ci0gICAgICAgICAgICB2
LmlkID0gMDsKLSAgICAgICAgICAgIHYudW5pdCA9IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvcjsK
LSAgICAgICAgICAgIHYuaVZhbHVlID0gJDI7Ci0gICAgICAgICAgICAkJC0+YWRkVmFsdWUodik7
Ci0gICAgICAgICAgICAkJC0+ZXh0ZW5kKCooJDMpKTsKLSAgICAgICAgfSBlbHNlIAotICAgICAg
ICAgICAgJCQgPSAwOwotICAgIH0KLSAgICB8IGNhbGNfZnVuY19wYXJlbl9leHByCi0gICAgfCBj
YWxjX2Z1bmNfZXhwciBlcnJvciB7Ci0gICAgICAgICQkID0gMDsKLSAgICB9Ci0gIDsKLQotY2Fs
Y19mdW5jX2V4cHJfbGlzdDoKLSAgICBjYWxjX2Z1bmNfZXhwciAgewotICAgICAgICAkJCA9ICQx
OwotICAgIH0gICAgCi0gICAgfCBjYWxjX2Z1bmNfZXhwcl9saXN0ICcsJyBtYXliZV9zcGFjZSBj
YWxjX2Z1bmNfZXhwciB7Ci0gICAgICAgIGlmICgkMSAmJiAkNCkgewotICAgICAgICAgICAgJCQg
PSAkMTsKLSAgICAgICAgICAgIENTU1BhcnNlclZhbHVlIHY7Ci0gICAgICAgICAgICB2LmlkID0g
MDsKLSAgICAgICAgICAgIHYudW5pdCA9IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvcjsKLSAgICAg
ICAgICAgIHYuaVZhbHVlID0gJywnOwotICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHYpOwotICAg
ICAgICAgICAgJCQtPmV4dGVuZCgqKCQ0KSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
JCQgPSAwOwotICAgIH0KLSAgICAKLQotY2FsY19mdW5jdGlvbjoKLSAgICBDQUxDRlVOQ1RJT04g
bWF5YmVfc3BhY2UgY2FsY19mdW5jX2V4cHIgJyknIG1heWJlX3NwYWNlIHsKLSAgICAgICAgQ1NT
UGFyc2VyRnVuY3Rpb24qIGYgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsKLSAg
ICAgICAgZi0+bmFtZSA9ICQxOwotICAgICAgICBmLT5hcmdzID0gcGFyc2VyLT5zaW5rRmxvYXRp
bmdWYWx1ZUxpc3QoJDMpOwotICAgICAgICAkJC5pZCA9IDA7Ci0gICAgICAgICQkLnVuaXQgPSBD
U1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb247Ci0gICAgICAgICQkLmZ1bmN0aW9uID0gZjsKLSAgICB9
Ci0gICAgfCBDQUxDRlVOQ1RJT04gbWF5YmVfc3BhY2UgZXJyb3IgewotICAgICAgICBZWUVSUk9S
OwotICAgIH0KLSAgICA7Ci0KLQotbWluX29yX21heDoKLSAgICBNSU5GVU5DVElPTiB7Ci0gICAg
ICAgICQkID0gJDE7Ci0gICAgfQotICAgIHwgTUFYRlVOQ1RJT04gewotICAgICAgICAkJCA9ICQx
OwotICAgIH0KLSAgICA7Ci0KLW1pbl9vcl9tYXhfZnVuY3Rpb246Ci0gICAgbWluX29yX21heCBt
YXliZV9zcGFjZSBjYWxjX2Z1bmNfZXhwcl9saXN0ICcpJyBtYXliZV9zcGFjZSB7Ci0gICAgICAg
IENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7
Ci0gICAgICAgIGYtPm5hbWUgPSAkMTsKLSAgICAgICAgZi0+YXJncyA9IHBhcnNlci0+c2lua0Zs
b2F0aW5nVmFsdWVMaXN0KCQzKTsKLSAgICAgICAgJCQuaWQgPSAwOwotICAgICAgICAkJC51bml0
ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uOwotICAgICAgICAkJC5mdW5jdGlvbiA9IGY7Ci0g
ICAgfSAKLSAgICB8IG1pbl9vcl9tYXggbWF5YmVfc3BhY2UgZXJyb3IgewotICAgICAgICBZWUVS
Uk9SOwotICAgIH0KLSAgICA7Ci0KLS8qIGVycm9yIGhhbmRsaW5nIHJ1bGVzICovCi0KLXNhdmVf
YmxvY2s6Ci0gICAgY2xvc2luZ19icmFjZSB7Ci0gICAgICAgICQkID0gMDsKLSAgICB9Ci0gIHwg
ZXJyb3IgY2xvc2luZ19icmFjZSB7Ci0gICAgICAgICQkID0gMDsKLSAgICB9Ci0gICAgOwotCi1p
bnZhbGlkX2F0OgotICAgIEFUS0VZV09SRCBlcnJvciBpbnZhbGlkX2Jsb2NrIHsKLSAgICAgICAg
JCQgPSAwOwotICAgIH0KLSAgfCBBVEtFWVdPUkQgZXJyb3IgJzsnIHsKLSAgICAgICAgJCQgPSAw
OwotICAgIH0KLSAgICA7Ci0KLWludmFsaWRfcnVsZToKLSAgICBlcnJvciBpbnZhbGlkX2Jsb2Nr
IHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLQotLyoKLSAgU2VlbXMgbGlrZSB0aGUgdHdvIHJ1
bGVzIGJlbG93IGFyZSB0cnlpbmcgdG9vIG11Y2ggYW5kIHZpb2xhdGluZwotICBodHRwOi8vd3d3
LmhpeGllLmNoL3Rlc3RzL2V2aWwvbWl4ZWQvY3NzZXJyb3JoYW5kbGluZy5odG1sCi0KLSAgfCBl
cnJvciAnOycgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICB8IGVycm9yICd9JyB7Ci0gICAg
ICAgICQkID0gMDsKLSAgICB9Ci0qLwotICAgIDsKLQotaW52YWxpZF9ibG9jazoKLSAgICAneycg
ZXJyb3IgaW52YWxpZF9ibG9ja19saXN0IGVycm9yIGNsb3NpbmdfYnJhY2UgewotICAgICAgICBw
YXJzZXItPmludmFsaWRCbG9ja0hpdCgpOwotICAgIH0KLSAgfCAneycgZXJyb3IgY2xvc2luZ19i
cmFjZSB7Ci0gICAgICAgIHBhcnNlci0+aW52YWxpZEJsb2NrSGl0KCk7Ci0gICAgfQotICAgIDsK
LQotaW52YWxpZF9ibG9ja19saXN0OgotICAgIGludmFsaWRfYmxvY2sKLSAgfCBpbnZhbGlkX2Js
b2NrX2xpc3QgZXJyb3IgaW52YWxpZF9ibG9jawotOwotCi0lJQotCi0jaWYgWVlERUJVRyA+IDAK
LXN0YXRpYyB2b2lkIHByaW50X3Rva2VuX3ZhbHVlKEZJTEUgKiB5eW91dHB1dCwgaW50IHl5dHlw
ZSwgWVlTVFlQRSBjb25zdCAmeXl2YWx1ZSkKLXsKLSAgICBzd2l0Y2ggKHl5dHlwZSkgewotICAg
IGNhc2UgSURFTlQ6Ci0gICAgY2FzZSBTVFJJTkc6Ci0gICAgY2FzZSBOVEg6Ci0gICAgY2FzZSBI
RVg6Ci0gICAgY2FzZSBJRFNFTDoKLSAgICBjYXNlIERJTUVOOgotICAgIGNhc2UgSU5WQUxJRERJ
TUVOOgotICAgIGNhc2UgVVJJOgotICAgIGNhc2UgRlVOQ1RJT046Ci0gICAgY2FzZSBBTllGVU5D
VElPTjoKLSAgICBjYXNlIE5PVEZVTkNUSU9OOgotICAgIGNhc2UgQ0FMQ0ZVTkNUSU9OOgotICAg
IGNhc2UgTUlORlVOQ1RJT046Ci0gICAgY2FzZSBNQVhGVU5DVElPTjoKLSAgICBjYXNlIFZBUl9E
RUZJTklUSU9OOgotICAgIGNhc2UgVU5JQ09ERVJBTkdFOgotICAgICAgICBZWUZQUklOVEYoeXlv
dXRwdXQsICIlcyIsIFN0cmluZyh5eXZhbHVlLnN0cmluZykudXRmOCgpLmRhdGEoKSk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLSNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbiBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2UyZGJmMmY0ODI2NWYy
ZjViNjcyZjQyYTk5MTAzODE3Y2FkYjdmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KQEAgLTAsMCArMSwxNjk3IEBACisvKgorICogIENvcHly
aWdodCAoQykgMjAwMi0yMDAzIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFBy
b3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQorICogIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNl
aWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExl
c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRl
IHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKgorICov
CisKKyVwdXJlX3BhcnNlcgorCislcGFyc2UtcGFyYW0geyBDU1NQYXJzZXIqIHBhcnNlciB9Cisl
bGV4LXBhcmFtIHsgQ1NTUGFyc2VyKiBwYXJzZXIgfQorCisldW5pb24geworICAgIGJvb2wgYm9v
bGVhbjsKKyAgICBjaGFyIGNoYXJhY3RlcjsKKyAgICBpbnQgaW50ZWdlcjsKKyAgICBkb3VibGUg
bnVtYmVyOworICAgIENTU1BhcnNlclN0cmluZyBzdHJpbmc7CisKKyAgICBTdHlsZVJ1bGVCYXNl
KiBydWxlOworICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4gPiogcnVsZUxpc3Q7Cisg
ICAgQ1NTUGFyc2VyU2VsZWN0b3IqIHNlbGVjdG9yOworICAgIENTU1NlbGVjdG9yVmVjdG9yKiBz
ZWxlY3Rvckxpc3Q7CisgICAgQ1NTU2VsZWN0b3I6Ok1hcmdpbkJveFR5cGUgbWFyZ2luQm94Owor
ICAgIENTU1NlbGVjdG9yOjpSZWxhdGlvbiByZWxhdGlvbjsKKyAgICBNZWRpYVF1ZXJ5U2V0KiBt
ZWRpYUxpc3Q7CisgICAgTWVkaWFRdWVyeSogbWVkaWFRdWVyeTsKKyAgICBNZWRpYVF1ZXJ5OjpS
ZXN0cmljdG9yIG1lZGlhUXVlcnlSZXN0cmljdG9yOworICAgIE1lZGlhUXVlcnlFeHAqIG1lZGlh
UXVlcnlFeHA7CisgICAgQ1NTUGFyc2VyVmFsdWUgdmFsdWU7CisgICAgQ1NTUGFyc2VyVmFsdWVM
aXN0KiB2YWx1ZUxpc3Q7CisgICAgVmVjdG9yPE93blB0cjxNZWRpYVF1ZXJ5RXhwPiA+KiBtZWRp
YVF1ZXJ5RXhwTGlzdDsKKyAgICBTdHlsZUtleWZyYW1lKiBrZXlmcmFtZTsKKyAgICBWZWN0b3I8
UmVmUHRyPFN0eWxlS2V5ZnJhbWU+ID4qIGtleWZyYW1lUnVsZUxpc3Q7CisgICAgZmxvYXQgdmFs
OworICAgIENTU1Byb3BlcnR5SUQgaWQ7Cit9CisKKyV7CisKK3N0YXRpYyBpbmxpbmUgaW50IGNz
c3l5ZXJyb3Iodm9pZCosIGNvbnN0IGNoYXIqKQoreworICAgIHJldHVybiAxOworfQorCislfQor
CislZXhwZWN0IDYzCisKKyVub25hc3NvYyBMT1dFU1RfUFJFQworCislbGVmdCBVTklNUE9SVEFO
VF9UT0sKKworJXRva2VuIFdISVRFU1BBQ0UgU0dNTF9DRAorJXRva2VuIFRPS0VOX0VPRiAwCisK
KyV0b2tlbiBJTkNMVURFUworJXRva2VuIERBU0hNQVRDSAorJXRva2VuIEJFR0lOU1dJVEgKKyV0
b2tlbiBFTkRTV0lUSAorJXRva2VuIENPTlRBSU5TCisKKyV0b2tlbiA8c3RyaW5nPiBTVFJJTkcK
KyVyaWdodCA8c3RyaW5nPiBJREVOVAorJXRva2VuIDxzdHJpbmc+IE5USAorCislbm9uYXNzb2Mg
PHN0cmluZz4gSEVYCislbm9uYXNzb2MgPHN0cmluZz4gSURTRUwKKyVub25hc3NvYyAnOicKKyVu
b25hc3NvYyAnLicKKyVub25hc3NvYyAnWycKKyVub25hc3NvYyA8c3RyaW5nPiAnKicKKyVub25h
c3NvYyBlcnJvcgorJWxlZnQgJ3wnCisKKyV0b2tlbiBJTVBPUlRfU1lNCisldG9rZW4gUEFHRV9T
WU0KKyV0b2tlbiBNRURJQV9TWU0KKyV0b2tlbiBGT05UX0ZBQ0VfU1lNCisldG9rZW4gQ0hBUlNF
VF9TWU0KKyV0b2tlbiBOQU1FU1BBQ0VfU1lNCisldG9rZW4gVkFSRlVOQ1RJT04KKyV0b2tlbiBX
RUJLSVRfUlVMRV9TWU0KKyV0b2tlbiBXRUJLSVRfREVDTFNfU1lNCisldG9rZW4gV0VCS0lUX0tF
WUZSQU1FX1JVTEVfU1lNCisldG9rZW4gV0VCS0lUX0tFWUZSQU1FU19TWU0KKyV0b2tlbiBXRUJL
SVRfVkFMVUVfU1lNCisldG9rZW4gV0VCS0lUX01FRElBUVVFUllfU1lNCisldG9rZW4gV0VCS0lU
X1NFTEVDVE9SX1NZTQorJXRva2VuIFdFQktJVF9SRUdJT05fUlVMRV9TWU0KKyV0b2tlbiA8bWFy
Z2luQm94PiBUT1BMRUZUQ09STkVSX1NZTQorJXRva2VuIDxtYXJnaW5Cb3g+IFRPUExFRlRfU1lN
CisldG9rZW4gPG1hcmdpbkJveD4gVE9QQ0VOVEVSX1NZTQorJXRva2VuIDxtYXJnaW5Cb3g+IFRP
UFJJR0hUX1NZTQorJXRva2VuIDxtYXJnaW5Cb3g+IFRPUFJJR0hUQ09STkVSX1NZTQorJXRva2Vu
IDxtYXJnaW5Cb3g+IEJPVFRPTUxFRlRDT1JORVJfU1lNCisldG9rZW4gPG1hcmdpbkJveD4gQk9U
VE9NTEVGVF9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBCT1RUT01DRU5URVJfU1lNCisldG9rZW4g
PG1hcmdpbkJveD4gQk9UVE9NUklHSFRfU1lNCisldG9rZW4gPG1hcmdpbkJveD4gQk9UVE9NUklH
SFRDT1JORVJfU1lNCisldG9rZW4gPG1hcmdpbkJveD4gTEVGVFRPUF9TWU0KKyV0b2tlbiA8bWFy
Z2luQm94PiBMRUZUTUlERExFX1NZTQorJXRva2VuIDxtYXJnaW5Cb3g+IExFRlRCT1RUT01fU1lN
CisldG9rZW4gPG1hcmdpbkJveD4gUklHSFRUT1BfU1lNCisldG9rZW4gPG1hcmdpbkJveD4gUklH
SFRNSURETEVfU1lNCisldG9rZW4gPG1hcmdpbkJveD4gUklHSFRCT1RUT01fU1lNCisKKyV0b2tl
biBBVEtFWVdPUkQKKworJXRva2VuIElNUE9SVEFOVF9TWU0KKyV0b2tlbiBNRURJQV9PTkxZCisl
dG9rZW4gTUVESUFfTk9UCisldG9rZW4gTUVESUFfQU5ECisKKyV0b2tlbiA8bnVtYmVyPiBSRU1T
CisldG9rZW4gPG51bWJlcj4gUUVNUworJXRva2VuIDxudW1iZXI+IEVNUworJXRva2VuIDxudW1i
ZXI+IEVYUworJXRva2VuIDxudW1iZXI+IFBYUworJXRva2VuIDxudW1iZXI+IENNUworJXRva2Vu
IDxudW1iZXI+IE1NUworJXRva2VuIDxudW1iZXI+IElOUworJXRva2VuIDxudW1iZXI+IFBUUwor
JXRva2VuIDxudW1iZXI+IFBDUworJXRva2VuIDxudW1iZXI+IERFR1MKKyV0b2tlbiA8bnVtYmVy
PiBSQURTCisldG9rZW4gPG51bWJlcj4gR1JBRFMKKyV0b2tlbiA8bnVtYmVyPiBUVVJOUworJXRv
a2VuIDxudW1iZXI+IE1TRUNTCisldG9rZW4gPG51bWJlcj4gU0VDUworJXRva2VuIDxudW1iZXI+
IEhFUlRaCisldG9rZW4gPG51bWJlcj4gS0hFUlRaCisldG9rZW4gPHN0cmluZz4gRElNRU4KKyV0
b2tlbiA8c3RyaW5nPiBJTlZBTElERElNRU4KKyV0b2tlbiA8bnVtYmVyPiBQRVJDRU5UQUdFCisl
dG9rZW4gPG51bWJlcj4gRkxPQVRUT0tFTgorJXRva2VuIDxudW1iZXI+IElOVEVHRVIKKyV0b2tl
biA8bnVtYmVyPiBWVworJXRva2VuIDxudW1iZXI+IFZICisldG9rZW4gPG51bWJlcj4gVk1JTgor
JXRva2VuIDxudW1iZXI+IERQUFgKKyV0b2tlbiA8bnVtYmVyPiBEUEkKKyV0b2tlbiA8bnVtYmVy
PiBEUENNCisKKyV0b2tlbiA8c3RyaW5nPiBVUkkKKyV0b2tlbiA8c3RyaW5nPiBGVU5DVElPTgor
JXRva2VuIDxzdHJpbmc+IEFOWUZVTkNUSU9OCisldG9rZW4gPHN0cmluZz4gTk9URlVOQ1RJT04K
KyV0b2tlbiA8c3RyaW5nPiBDQUxDRlVOQ1RJT04KKyV0b2tlbiA8c3RyaW5nPiBNSU5GVU5DVElP
TgorJXRva2VuIDxzdHJpbmc+IE1BWEZVTkNUSU9OCisldG9rZW4gPHN0cmluZz4gVkFSX0RFRklO
SVRJT04KKworJXRva2VuIDxzdHJpbmc+IFVOSUNPREVSQU5HRQorCisldHlwZSA8cmVsYXRpb24+
IGNvbWJpbmF0b3IKKworJXR5cGUgPHJ1bGU+IGNoYXJzZXQKKyV0eXBlIDxydWxlPiBpZ25vcmVk
X2NoYXJzZXQKKyV0eXBlIDxydWxlPiBydWxlc2V0CisldHlwZSA8cnVsZT4gbWVkaWEKKyV0eXBl
IDxydWxlPiBpbXBvcnQKKyV0eXBlIDxydWxlPiBuYW1lc3BhY2UKKyV0eXBlIDxydWxlPiBwYWdl
CisldHlwZSA8cnVsZT4gbWFyZ2luX2JveAorJXR5cGUgPHJ1bGU+IGZvbnRfZmFjZQorJXR5cGUg
PHJ1bGU+IGtleWZyYW1lcworJXR5cGUgPHJ1bGU+IGludmFsaWRfcnVsZQorJXR5cGUgPHJ1bGU+
IHNhdmVfYmxvY2sKKyV0eXBlIDxydWxlPiBpbnZhbGlkX2F0CisldHlwZSA8cnVsZT4gcnVsZQor
JXR5cGUgPHJ1bGU+IHZhbGlkX3J1bGUKKyV0eXBlIDxydWxlTGlzdD4gYmxvY2tfcnVsZV9saXN0
IAorJXR5cGUgPHJ1bGU+IGJsb2NrX3J1bGUKKyV0eXBlIDxydWxlPiBibG9ja192YWxpZF9ydWxl
CisldHlwZSA8cnVsZT4gcmVnaW9uCisKKyV0eXBlIDxzdHJpbmc+IG1heWJlX25zX3ByZWZpeAor
CisldHlwZSA8c3RyaW5nPiBuYW1lc3BhY2Vfc2VsZWN0b3IKKworJXR5cGUgPHN0cmluZz4gc3Ry
aW5nX29yX3VyaQorJXR5cGUgPHN0cmluZz4gaWRlbnRfb3Jfc3RyaW5nCisldHlwZSA8c3RyaW5n
PiBtZWRpdW0KKyV0eXBlIDxtYXJnaW5Cb3g+IG1hcmdpbl9zeW0KKworJXR5cGUgPHN0cmluZz4g
bWVkaWFfZmVhdHVyZQorJXR5cGUgPG1lZGlhTGlzdD4gbWVkaWFfbGlzdAorJXR5cGUgPG1lZGlh
TGlzdD4gbWF5YmVfbWVkaWFfbGlzdAorJXR5cGUgPG1lZGlhUXVlcnk+IG1lZGlhX3F1ZXJ5Cisl
dHlwZSA8bWVkaWFRdWVyeVJlc3RyaWN0b3I+IG1heWJlX21lZGlhX3Jlc3RyaWN0b3IKKyV0eXBl
IDx2YWx1ZUxpc3Q+IG1heWJlX21lZGlhX3ZhbHVlCisldHlwZSA8bWVkaWFRdWVyeUV4cD4gbWVk
aWFfcXVlcnlfZXhwCisldHlwZSA8bWVkaWFRdWVyeUV4cExpc3Q+IG1lZGlhX3F1ZXJ5X2V4cF9s
aXN0CisldHlwZSA8bWVkaWFRdWVyeUV4cExpc3Q+IG1heWJlX2FuZF9tZWRpYV9xdWVyeV9leHBf
bGlzdAorCisldHlwZSA8c3RyaW5nPiBrZXlmcmFtZV9uYW1lCisldHlwZSA8a2V5ZnJhbWU+IGtl
eWZyYW1lX3J1bGUKKyV0eXBlIDxrZXlmcmFtZVJ1bGVMaXN0PiBrZXlmcmFtZXNfcnVsZQorJXR5
cGUgPHZhbHVlTGlzdD4ga2V5X2xpc3QKKyV0eXBlIDx2YWx1ZT4ga2V5CisKKyV0eXBlIDxpZD4g
cHJvcGVydHkKKworJXR5cGUgPHNlbGVjdG9yPiBzcGVjaWZpZXIKKyV0eXBlIDxzZWxlY3Rvcj4g
c3BlY2lmaWVyX2xpc3QKKyV0eXBlIDxzZWxlY3Rvcj4gc2ltcGxlX3NlbGVjdG9yCisldHlwZSA8
c2VsZWN0b3I+IHNlbGVjdG9yCisldHlwZSA8c2VsZWN0b3JMaXN0PiBzZWxlY3Rvcl9saXN0Cisl
dHlwZSA8c2VsZWN0b3JMaXN0PiBzaW1wbGVfc2VsZWN0b3JfbGlzdAorJXR5cGUgPHNlbGVjdG9y
TGlzdD4gcmVnaW9uX3NlbGVjdG9yCisldHlwZSA8c2VsZWN0b3I+IHNlbGVjdG9yX3dpdGhfdHJh
aWxpbmdfd2hpdGVzcGFjZQorJXR5cGUgPHNlbGVjdG9yPiBjbGFzcworJXR5cGUgPHNlbGVjdG9y
PiBhdHRyaWIKKyV0eXBlIDxzZWxlY3Rvcj4gcHNldWRvCisldHlwZSA8c2VsZWN0b3I+IHBzZXVk
b19wYWdlCisldHlwZSA8c2VsZWN0b3I+IHBhZ2Vfc2VsZWN0b3IKKworJXR5cGUgPGJvb2xlYW4+
IGRlY2xhcmF0aW9uX2xpc3QKKyV0eXBlIDxib29sZWFuPiBkZWNsX2xpc3QKKyV0eXBlIDxib29s
ZWFuPiBkZWNsYXJhdGlvbgorJXR5cGUgPGJvb2xlYW4+IGRlY2xhcmF0aW9uc19hbmRfbWFyZ2lu
cworCisldHlwZSA8Ym9vbGVhbj4gcHJpbworCisldHlwZSA8aW50ZWdlcj4gbWF0Y2gKKyV0eXBl
IDxpbnRlZ2VyPiB1bmFyeV9vcGVyYXRvcgorJXR5cGUgPGludGVnZXI+IG1heWJlX3VuYXJ5X29w
ZXJhdG9yCisldHlwZSA8Y2hhcmFjdGVyPiBvcGVyYXRvcgorCisldHlwZSA8dmFsdWVMaXN0PiBl
eHByCisldHlwZSA8dmFsdWU+IHRlcm0KKyV0eXBlIDx2YWx1ZT4gdW5hcnlfdGVybQorJXR5cGUg
PHZhbHVlPiBmdW5jdGlvbgorJXR5cGUgPHZhbHVlPiBjYWxjX2Z1bmNfdGVybQorJXR5cGUgPGNo
YXJhY3Rlcj4gY2FsY19mdW5jX29wZXJhdG9yCisldHlwZSA8dmFsdWVMaXN0PiBjYWxjX2Z1bmNf
ZXhwcgorJXR5cGUgPHZhbHVlTGlzdD4gY2FsY19mdW5jX2V4cHJfbGlzdAorJXR5cGUgPHZhbHVl
TGlzdD4gY2FsY19mdW5jX3BhcmVuX2V4cHIKKyV0eXBlIDx2YWx1ZT4gY2FsY19mdW5jdGlvbgor
JXR5cGUgPHN0cmluZz4gbWluX29yX21heAorJXR5cGUgPHZhbHVlPiBtaW5fb3JfbWF4X2Z1bmN0
aW9uCisKKyV0eXBlIDxzdHJpbmc+IGVsZW1lbnRfbmFtZQorJXR5cGUgPHN0cmluZz4gYXR0cl9u
YW1lCisKKyUlCisKK3N0eWxlc2hlZXQ6CisgICAgbWF5YmVfc3BhY2UgbWF5YmVfY2hhcnNldCBt
YXliZV9zZ21sIHJ1bGVfbGlzdAorICB8IHdlYmtpdF9ydWxlIG1heWJlX3NwYWNlCisgIHwgd2Vi
a2l0X2RlY2xzIG1heWJlX3NwYWNlCisgIHwgd2Via2l0X3ZhbHVlIG1heWJlX3NwYWNlCisgIHwg
d2Via2l0X21lZGlhcXVlcnkgbWF5YmVfc3BhY2UKKyAgfCB3ZWJraXRfc2VsZWN0b3IgbWF5YmVf
c3BhY2UKKyAgfCB3ZWJraXRfa2V5ZnJhbWVfcnVsZSBtYXliZV9zcGFjZQorICA7CisKK3dlYmtp
dF9ydWxlOgorICAgIFdFQktJVF9SVUxFX1NZTSAneycgbWF5YmVfc3BhY2UgdmFsaWRfcnVsZSBt
YXliZV9zcGFjZSAnfScgeworICAgICAgICBwYXJzZXItPm1fcnVsZSA9ICQ0OworICAgIH0KKzsK
Kword2Via2l0X2tleWZyYW1lX3J1bGU6CisgICAgV0VCS0lUX0tFWUZSQU1FX1JVTEVfU1lNICd7
JyBtYXliZV9zcGFjZSBrZXlmcmFtZV9ydWxlIG1heWJlX3NwYWNlICd9JyB7CisgICAgICAgIHBh
cnNlci0+bV9rZXlmcmFtZSA9ICQ0OworICAgIH0KKzsKKword2Via2l0X2RlY2xzOgorICAgIFdF
QktJVF9ERUNMU19TWU0gJ3snIG1heWJlX3NwYWNlX2JlZm9yZV9kZWNsYXJhdGlvbiBkZWNsYXJh
dGlvbl9saXN0ICd9JyB7CisgICAgICAgIC8qIGNhbiBiZSBlbXB0eSAqLworICAgIH0KKzsKKwor
d2Via2l0X3ZhbHVlOgorICAgIFdFQktJVF9WQUxVRV9TWU0gJ3snIG1heWJlX3NwYWNlIGV4cHIg
J30nIHsKKyAgICAgICAgaWYgKCQ0KSB7CisgICAgICAgICAgICBwYXJzZXItPm1fdmFsdWVMaXN0
ID0gcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDQpOworICAgICAgICAgICAgaW50IG9s
ZFBhcnNlZFByb3BlcnRpZXMgPSBwYXJzZXItPm1fcGFyc2VkUHJvcGVydGllcy0+c2l6ZSgpOwor
ICAgICAgICAgICAgaWYgKCFwYXJzZXItPnBhcnNlVmFsdWUocGFyc2VyLT5tX2lkLCBwYXJzZXIt
Pm1faW1wb3J0YW50KSkKKyAgICAgICAgICAgICAgICBwYXJzZXItPnJvbGxiYWNrTGFzdFByb3Bl
cnRpZXMocGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKSAtIG9sZFBhcnNlZFByb3Bl
cnRpZXMpOworICAgICAgICAgICAgcGFyc2VyLT5tX3ZhbHVlTGlzdCA9IG51bGxwdHI7CisgICAg
ICAgIH0KKyAgICB9Cis7CisKK3dlYmtpdF9tZWRpYXF1ZXJ5OgorICAgICBXRUJLSVRfTUVESUFR
VUVSWV9TWU0gV0hJVEVTUEFDRSBtYXliZV9zcGFjZSBtZWRpYV9xdWVyeSAnfScgeworICAgICAg
ICAgcGFyc2VyLT5tX21lZGlhUXVlcnkgPSBwYXJzZXItPnNpbmtGbG9hdGluZ01lZGlhUXVlcnko
JDQpOworICAgICB9Cis7CisKK3dlYmtpdF9zZWxlY3RvcjoKKyAgICBXRUJLSVRfU0VMRUNUT1Jf
U1lNICd7JyBtYXliZV9zcGFjZSBzZWxlY3Rvcl9saXN0ICd9JyB7CisgICAgICAgIGlmICgkNCkg
eworICAgICAgICAgICAgaWYgKHBhcnNlci0+bV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNlbGVjdG9y
KQorICAgICAgICAgICAgICAgIHBhcnNlci0+bV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNlbGVjdG9y
LT5hZG9wdFNlbGVjdG9yVmVjdG9yKCokNCk7CisgICAgICAgIH0KKyAgICB9Cis7CisKK21heWJl
X3NwYWNlOgorICAgIC8qIGVtcHR5ICovICVwcmVjIFVOSU1QT1JUQU5UX1RPSworICB8IG1heWJl
X3NwYWNlIFdISVRFU1BBQ0UKKyAgOworCittYXliZV9zZ21sOgorICAgIC8qIGVtcHR5ICovCisg
IHwgbWF5YmVfc2dtbCBTR01MX0NECisgIHwgbWF5YmVfc2dtbCBXSElURVNQQUNFCisgIDsKKwor
bWF5YmVfY2hhcnNldDoKKyAgIC8qIGVtcHR5ICovCisgIHwgY2hhcnNldCB7CisgIH0KKyAgOwor
CitjbG9zaW5nX2JyYWNlOgorICAgICd9JworICB8ICVwcmVjIExPV0VTVF9QUkVDIFRPS0VOX0VP
RgorICA7CisKK2NoYXJzZXQ6CisgIENIQVJTRVRfU1lNIG1heWJlX3NwYWNlIFNUUklORyBtYXli
ZV9zcGFjZSAnOycgeworICAgICBpZiAocGFyc2VyLT5tX3N0eWxlU2hlZXQpCisgICAgICAgICBw
YXJzZXItPm1fc3R5bGVTaGVldC0+cGFyc2VyU2V0RW5jb2RpbmdGcm9tQ2hhcnNldFJ1bGUoJDMp
OworICAgICBpZiAocGFyc2VyLT5pc0V4dHJhY3RpbmdTb3VyY2VEYXRhKCkgJiYgcGFyc2VyLT5t
X2N1cnJlbnRSdWxlRGF0YVN0YWNrLT5pc0VtcHR5KCkgJiYgcGFyc2VyLT5tX3J1bGVTb3VyY2VE
YXRhUmVzdWx0KQorICAgICAgICAgcGFyc2VyLT5hZGROZXdSdWxlVG9Tb3VyY2VUcmVlKENTU1J1
bGVTb3VyY2VEYXRhOjpjcmVhdGVVbmtub3duKCkpOworICAgICAkJCA9IDA7CisgIH0KKyAgfCBD
SEFSU0VUX1NZTSBlcnJvciBpbnZhbGlkX2Jsb2NrIHsKKyAgfQorICB8IENIQVJTRVRfU1lNIGVy
cm9yICc7JyB7CisgIH0KKzsKKworaWdub3JlZF9jaGFyc2V0OgorICAgIENIQVJTRVRfU1lNIG1h
eWJlX3NwYWNlIFNUUklORyBtYXliZV9zcGFjZSAnOycgeworICAgICAgICAvLyBJZ25vcmUgYW55
IEBjaGFyc2V0IHJ1bGUgbm90IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0eWxlIHNoZWV0Lgor
ICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIHwgQ0hBUlNFVF9TWU0gbWF5YmVfc3BhY2UgJzsn
IHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKzsKKworcnVsZV9saXN0OgorICAgLyogZW1wdHkg
Ki8KKyB8IHJ1bGVfbGlzdCBydWxlIG1heWJlX3NnbWwgeworICAgICBpZiAoJDIgJiYgcGFyc2Vy
LT5tX3N0eWxlU2hlZXQpCisgICAgICAgICBwYXJzZXItPm1fc3R5bGVTaGVldC0+cGFyc2VyQXBw
ZW5kUnVsZSgkMik7CisgfQorIDsKKwordmFsaWRfcnVsZToKKyAgICBydWxlc2V0CisgIHwgbWVk
aWEKKyAgfCBwYWdlCisgIHwgZm9udF9mYWNlCisgIHwga2V5ZnJhbWVzCisgIHwgbmFtZXNwYWNl
CisgIHwgaW1wb3J0CisgIHwgcmVnaW9uCisgIDsKKworcnVsZToKKyAgICB2YWxpZF9ydWxlIHsK
KyAgICAgICAgcGFyc2VyLT5tX2hhZFN5bnRhY3RpY2FsbHlWYWxpZENTU1J1bGUgPSB0cnVlOwor
ICAgIH0KKyAgfCBpZ25vcmVkX2NoYXJzZXQKKyAgfCBpbnZhbGlkX3J1bGUKKyAgfCBpbnZhbGlk
X2F0CisgIDsKKworYmxvY2tfcnVsZV9saXN0OiAKKyAgICAvKiBlbXB0eSAqLyB7ICQkID0gMDsg
fQorICB8IGJsb2NrX3J1bGVfbGlzdCBibG9ja19ydWxlIG1heWJlX3NnbWwgeworICAgICAgJCQg
PSAkMTsKKyAgICAgIGlmICgkMikgeworICAgICAgICAgIGlmICghJCQpCisgICAgICAgICAgICAg
ICQkID0gcGFyc2VyLT5jcmVhdGVSdWxlTGlzdCgpOworICAgICAgICAgICQkLT5hcHBlbmQoJDIp
OworICAgICAgfQorICB9CisgIDsKKworYmxvY2tfdmFsaWRfcnVsZToKKyAgICBydWxlc2V0Cisg
IHwgcGFnZQorICB8IGZvbnRfZmFjZQorICB8IGtleWZyYW1lcworICA7CisKK2Jsb2NrX3J1bGU6
CisgICAgYmxvY2tfdmFsaWRfcnVsZQorICB8IGludmFsaWRfcnVsZQorICB8IGludmFsaWRfYXQK
KyAgfCBuYW1lc3BhY2UKKyAgfCBpbXBvcnQKKyAgfCBtZWRpYQorICA7CisKK2F0X2ltcG9ydF9o
ZWFkZXJfZW5kX21heWJlX3NwYWNlOgorICAgIG1heWJlX3NwYWNlIHsKKyAgICAgICAgcGFyc2Vy
LT5tYXJrUnVsZUhlYWRlckVuZCgpOworICAgICAgICBwYXJzZXItPm1hcmtSdWxlQm9keVN0YXJ0
KCk7CisgICAgfQorICAgIDsKKworYmVmb3JlX2ltcG9ydF9ydWxlOgorICAgIC8qIGVtcHR5ICov
IHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRh
OjpJTVBPUlRfUlVMRSk7CisgICAgfQorICAgIDsKKworaW1wb3J0OgorICAgIGJlZm9yZV9pbXBv
cnRfcnVsZSBJTVBPUlRfU1lNIGF0X2ltcG9ydF9oZWFkZXJfZW5kX21heWJlX3NwYWNlIHN0cmlu
Z19vcl91cmkgbWF5YmVfc3BhY2UgbWF5YmVfbWVkaWFfbGlzdCAnOycgeworICAgICAgICAkJCA9
IHBhcnNlci0+Y3JlYXRlSW1wb3J0UnVsZSgkNCwgJDYpOworICAgIH0KKyAgfCBiZWZvcmVfaW1w
b3J0X3J1bGUgSU1QT1JUX1NZTSBhdF9pbXBvcnRfaGVhZGVyX2VuZF9tYXliZV9zcGFjZSBzdHJp
bmdfb3JfdXJpIG1heWJlX3NwYWNlIG1heWJlX21lZGlhX2xpc3QgVE9LRU5fRU9GIHsKKyAgICAg
ICAgJCQgPSBwYXJzZXItPmNyZWF0ZUltcG9ydFJ1bGUoJDQsICQ2KTsKKyAgICB9CisgIHwgYmVm
b3JlX2ltcG9ydF9ydWxlIElNUE9SVF9TWU0gYXRfaW1wb3J0X2hlYWRlcl9lbmRfbWF5YmVfc3Bh
Y2Ugc3RyaW5nX29yX3VyaSBtYXliZV9zcGFjZSBtYXliZV9tZWRpYV9saXN0IGludmFsaWRfYmxv
Y2sgeworICAgICAgICAkJCA9IDA7CisgICAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKKyAg
ICB9CisgIHwgYmVmb3JlX2ltcG9ydF9ydWxlIElNUE9SVF9TWU0gZXJyb3IgJzsnIHsKKyAgICAg
ICAgJCQgPSAwOworICAgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7CisgICAgfQorICB8IGJl
Zm9yZV9pbXBvcnRfcnVsZSBJTVBPUlRfU1lNIGVycm9yIGludmFsaWRfYmxvY2sgeworICAgICAg
ICAkJCA9IDA7CisgICAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKKyAgICB9CisgIDsKKwor
bmFtZXNwYWNlOgorTkFNRVNQQUNFX1NZTSBtYXliZV9zcGFjZSBtYXliZV9uc19wcmVmaXggc3Ry
aW5nX29yX3VyaSBtYXliZV9zcGFjZSAnOycgeworICAgIHBhcnNlci0+YWRkTmFtZXNwYWNlKCQz
LCAkNCk7CisgICAgJCQgPSAwOworfQorfCBOQU1FU1BBQ0VfU1lNIG1heWJlX3NwYWNlIG1heWJl
X25zX3ByZWZpeCBzdHJpbmdfb3JfdXJpIG1heWJlX3NwYWNlIGludmFsaWRfYmxvY2sgeworICAg
ICQkID0gMDsKK30KK3wgTkFNRVNQQUNFX1NZTSBlcnJvciBpbnZhbGlkX2Jsb2NrIHsKKyAgICAk
JCA9IDA7Cit9Cit8IE5BTUVTUEFDRV9TWU0gZXJyb3IgJzsnIHsKKyAgICAkJCA9IDA7Cit9Cis7
CisKK21heWJlX25zX3ByZWZpeDoKKy8qIGVtcHR5ICovIHsgJCQuY2xlYXIoKTsgfQorfCBJREVO
VCBtYXliZV9zcGFjZSB7ICQkID0gJDE7IH0KKzsKKworc3RyaW5nX29yX3VyaToKK1NUUklORwor
fCBVUkkKKzsKKworbWVkaWFfZmVhdHVyZToKKyAgICBJREVOVCBtYXliZV9zcGFjZSB7CisgICAg
ICAgICQkID0gJDE7CisgICAgfQorICAgIDsKKworbWF5YmVfbWVkaWFfdmFsdWU6CisgICAgLypl
bXB0eSovIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKyAgICB8ICc6JyBtYXliZV9zcGFjZSBl
eHByIG1heWJlX3NwYWNlIHsKKyAgICAgICAgJCQgPSAkMzsKKyAgICB9CisgICAgOworCittZWRp
YV9xdWVyeV9leHA6CisgICAgJygnIG1heWJlX3NwYWNlIG1lZGlhX2ZlYXR1cmUgbWF5YmVfc3Bh
Y2UgbWF5YmVfbWVkaWFfdmFsdWUgJyknIG1heWJlX3NwYWNlIHsKKyAgICAgICAgJDMubG93ZXIo
KTsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeUV4cCgkMywg
JDUpOworICAgIH0KKyAgICA7CisKK21lZGlhX3F1ZXJ5X2V4cF9saXN0OgorICAgIG1lZGlhX3F1
ZXJ5X2V4cCB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ01lZGlhUXVlcnlF
eHBMaXN0KCk7CisgICAgICAgICQkLT5hcHBlbmQocGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1
ZXJ5RXhwKCQxKSk7CisgICAgfQorICAgIHwgbWVkaWFfcXVlcnlfZXhwX2xpc3QgbWF5YmVfc3Bh
Y2UgTUVESUFfQU5EIG1heWJlX3NwYWNlIG1lZGlhX3F1ZXJ5X2V4cCB7CisgICAgICAgICQkID0g
JDE7CisgICAgICAgICQkLT5hcHBlbmQocGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5RXhw
KCQ1KSk7CisgICAgfQorICAgIDsKKworbWF5YmVfYW5kX21lZGlhX3F1ZXJ5X2V4cF9saXN0Ogor
ICAgIC8qZW1wdHkqLyB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ01lZGlh
UXVlcnlFeHBMaXN0KCk7CisgICAgfQorICAgIHwgTUVESUFfQU5EIG1heWJlX3NwYWNlIG1lZGlh
X3F1ZXJ5X2V4cF9saXN0IHsKKyAgICAgICAgJCQgPSAkMzsKKyAgICB9CisgICAgOworCittYXli
ZV9tZWRpYV9yZXN0cmljdG9yOgorICAgIC8qZW1wdHkqLyB7CisgICAgICAgICQkID0gTWVkaWFR
dWVyeTo6Tm9uZTsKKyAgICB9CisgICAgfCBNRURJQV9PTkxZIHsKKyAgICAgICAgJCQgPSBNZWRp
YVF1ZXJ5OjpPbmx5OworICAgIH0KKyAgICB8IE1FRElBX05PVCB7CisgICAgICAgICQkID0gTWVk
aWFRdWVyeTo6Tm90OworICAgIH0KKyAgICA7CisKK21lZGlhX3F1ZXJ5OgorICAgIG1lZGlhX3F1
ZXJ5X2V4cF9saXN0IHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nTWVkaWFR
dWVyeShwYXJzZXItPnNpbmtGbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KCQxKSk7CisgICAgfQor
ICAgIHwKKyAgICBtYXliZV9tZWRpYV9yZXN0cmljdG9yIG1heWJlX3NwYWNlIG1lZGl1bSBtYXli
ZV9hbmRfbWVkaWFfcXVlcnlfZXhwX2xpc3QgeworICAgICAgICAkMy5sb3dlcigpOworICAgICAg
ICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5KCQxLCAkMywgcGFyc2VyLT5z
aW5rRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwTGlzdCgkNCkpOworICAgIH0KKyAgICA7CisKK21heWJl
X21lZGlhX2xpc3Q6CisgICAgIC8qIGVtcHR5ICovIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNy
ZWF0ZU1lZGlhUXVlcnlTZXQoKTsKKyAgICAgfQorICAgICB8IG1lZGlhX2xpc3QKKyAgICAgOwor
CittZWRpYV9saXN0OgorICAgIG1lZGlhX3F1ZXJ5IHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNy
ZWF0ZU1lZGlhUXVlcnlTZXQoKTsKKyAgICAgICAgJCQtPmFkZE1lZGlhUXVlcnkocGFyc2VyLT5z
aW5rRmxvYXRpbmdNZWRpYVF1ZXJ5KCQxKSk7CisgICAgICAgIHBhcnNlci0+dXBkYXRlTGFzdE1l
ZGlhTGluZSgkJCk7CisgICAgfQorICAgIHwgbWVkaWFfbGlzdCAnLCcgbWF5YmVfc3BhY2UgbWVk
aWFfcXVlcnkgeworICAgICAgICAkJCA9ICQxOworICAgICAgICBpZiAoJCQpIHsKKyAgICAgICAg
ICAgICQkLT5hZGRNZWRpYVF1ZXJ5KHBhcnNlci0+c2lua0Zsb2F0aW5nTWVkaWFRdWVyeSgkNCkp
OworICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVMYXN0TWVkaWFMaW5lKCQkKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICB8IG1lZGlhX2xpc3QgZXJyb3IgeworICAgICAgICAkJCA9IDA7CisgICAg
fQorICAgIDsKKworYXRfcnVsZV9ib2R5X3N0YXJ0OgorICAgIC8qIGVtcHR5ICovIHsKKyAgICAg
ICAgcGFyc2VyLT5tYXJrUnVsZUJvZHlTdGFydCgpOworICAgIH0KKyAgICA7CisKK2JlZm9yZV9t
ZWRpYV9ydWxlOgorICAgIC8qIGVtcHR5ICovIHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhl
YWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRhOjpNRURJQV9SVUxFKTsKKyAgICB9CisgICAgOwor
CithdF9ydWxlX2hlYWRlcl9lbmRfbWF5YmVfc3BhY2U6CisgICAgbWF5YmVfc3BhY2UgeworICAg
ICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyRW5kKCk7CisgICAgfQorICAgIDsKKworbWVkaWE6
CisgICAgYmVmb3JlX21lZGlhX3J1bGUgTUVESUFfU1lNIG1heWJlX3NwYWNlIG1lZGlhX2xpc3Qg
YXRfcnVsZV9oZWFkZXJfZW5kICd7JyBhdF9ydWxlX2JvZHlfc3RhcnQgbWF5YmVfc3BhY2UgYmxv
Y2tfcnVsZV9saXN0IHNhdmVfYmxvY2sgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlTWVk
aWFSdWxlKCQ0LCAkOSk7CisgICAgfQorICAgIHwgYmVmb3JlX21lZGlhX3J1bGUgTUVESUFfU1lN
IGF0X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9zcGFjZSAneycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1h
eWJlX3NwYWNlIGJsb2NrX3J1bGVfbGlzdCBzYXZlX2Jsb2NrIHsKKyAgICAgICAgJCQgPSBwYXJz
ZXItPmNyZWF0ZU1lZGlhUnVsZSgwLCAkNyk7CisgICAgfQorICAgIHwgYmVmb3JlX21lZGlhX3J1
bGUgTUVESUFfU1lNIGF0X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9zcGFjZSAnOycgeworICAgICAg
ICAkJCA9IDA7CisgICAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKKyAgICB9CisgICAgOwor
CittZWRpdW06CisgIElERU5UIG1heWJlX3NwYWNlIHsKKyAgICAgICQkID0gJDE7CisgIH0KKyAg
OworCitiZWZvcmVfa2V5ZnJhbWVzX3J1bGU6CisgICAgLyogZW1wdHkgKi8geworICAgICAgICBw
YXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6OktFWUZSQU1FU19S
VUxFKTsKKyAgICB9CisgICAgOworCitrZXlmcmFtZXM6CisgICAgYmVmb3JlX2tleWZyYW1lc19y
dWxlIFdFQktJVF9LRVlGUkFNRVNfU1lNIG1heWJlX3NwYWNlIGtleWZyYW1lX25hbWUgYXRfcnVs
ZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlICd7JyBhdF9ydWxlX2JvZHlfc3RhcnQgbWF5YmVfc3Bh
Y2Uga2V5ZnJhbWVzX3J1bGUgY2xvc2luZ19icmFjZSB7CisgICAgICAgICQkID0gcGFyc2VyLT5j
cmVhdGVLZXlmcmFtZXNSdWxlKCQ0LCBwYXJzZXItPnNpbmtGbG9hdGluZ0tleWZyYW1lVmVjdG9y
KCQ5KSk7CisgICAgfQorICAgIDsKKyAgCitrZXlmcmFtZV9uYW1lOgorICAgIElERU5UCisgICAg
fCBTVFJJTkcKKyAgICA7CisKK2tleWZyYW1lc19ydWxlOgorICAgIC8qIGVtcHR5ICovIHsgJCQg
PSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nS2V5ZnJhbWVWZWN0b3IoKTsgfQorICAgIHwga2V5ZnJh
bWVzX3J1bGUga2V5ZnJhbWVfcnVsZSBtYXliZV9zcGFjZSB7CisgICAgICAgICQkID0gJDE7Cisg
ICAgICAgIGlmICgkMikKKyAgICAgICAgICAgICQkLT5hcHBlbmQoJDIpOworICAgIH0KKyAgICA7
CisKK2tleWZyYW1lX3J1bGU6CisgICAga2V5X2xpc3QgbWF5YmVfc3BhY2UgJ3snIG1heWJlX3Nw
YWNlIGRlY2xhcmF0aW9uX2xpc3QgJ30nIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUtl
eWZyYW1lKCQxKTsKKyAgICB9CisgICAgOworCitrZXlfbGlzdDoKKyAgICBrZXkgeworICAgICAg
ICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdWYWx1ZUxpc3QoKTsKKyAgICAgICAgJCQtPmFk
ZFZhbHVlKHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWUoJDEpKTsKKyAgICB9CisgICAgfCBrZXlf
bGlzdCBtYXliZV9zcGFjZSAnLCcgbWF5YmVfc3BhY2Uga2V5IHsKKyAgICAgICAgJCQgPSAkMTsK
KyAgICAgICAgaWYgKCQkKQorICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHBhcnNlci0+c2lua0Zs
b2F0aW5nVmFsdWUoJDUpKTsKKyAgICB9CisgICAgOworCitrZXk6CisgICAgbWF5YmVfdW5hcnlf
b3BlcmF0b3IgUEVSQ0VOVEFHRSB7ICQkLmlkID0gMDsgJCQuaXNJbnQgPSBmYWxzZTsgJCQuZlZh
bHVlID0gJDEgKiAkMjsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOyB9
CisgICAgfCBJREVOVCB7CisgICAgICAgICQkLmlkID0gMDsgJCQuaXNJbnQgPSBmYWxzZTsgJCQu
dW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOworICAgICAgICBDU1NQYXJzZXJT
dHJpbmcmIHN0ciA9ICQxOworICAgICAgICBpZiAoc3RyLmVxdWFsSWdub3JpbmdDYXNlKCJmcm9t
IikpCisgICAgICAgICAgICAkJC5mVmFsdWUgPSAwOworICAgICAgICBlbHNlIGlmIChzdHIuZXF1
YWxJZ25vcmluZ0Nhc2UoInRvIikpCisgICAgICAgICAgICAkJC5mVmFsdWUgPSAxMDA7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIFlZRVJST1I7CisgICAgfQorICAgIDsKKworYmVmb3JlX3Bh
Z2VfcnVsZToKKyAgICAvKiBlbXB0eSAqLyB7CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFk
ZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6UEFHRV9SVUxFKTsKKyAgICB9CisgICAgOworCitw
YWdlOgorICAgIGJlZm9yZV9wYWdlX3J1bGUgUEFHRV9TWU0gbWF5YmVfc3BhY2UgcGFnZV9zZWxl
Y3RvciBhdF9ydWxlX2hlYWRlcl9lbmRfbWF5YmVfc3BhY2UKKyAgICAneycgYXRfcnVsZV9ib2R5
X3N0YXJ0IG1heWJlX3NwYWNlX2JlZm9yZV9kZWNsYXJhdGlvbiBkZWNsYXJhdGlvbnNfYW5kX21h
cmdpbnMgY2xvc2luZ19icmFjZSB7CisgICAgICAgIGlmICgkNCkKKyAgICAgICAgICAgICQkID0g
cGFyc2VyLT5jcmVhdGVQYWdlUnVsZShwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQ0KSk7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gQ2xlYXIgcHJvcGVydGllcyBpbiB0aGUg
aW52YWxpZCBAcGFnZSBydWxlLgorICAgICAgICAgICAgcGFyc2VyLT5jbGVhclByb3BlcnRpZXMo
KTsKKyAgICAgICAgICAgIC8vIEFsc28gY2xlYXIgbWFyZ2luIGF0LXJ1bGVzIGhlcmUgb25jZSB3
ZSBmdWxseSBpbXBsZW1lbnQgbWFyZ2luIGF0LXJ1bGVzIHBhcnNpbmcuCisgICAgICAgICAgICAk
JCA9IDA7CisgICAgICAgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgfCBiZWZvcmVfcGFnZV9ydWxlIFBBR0VfU1lNIGVycm9yIGludmFsaWRfYmxvY2sg
eworICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOworICAgICAgJCQgPSAwOworICAgIH0KKyAg
ICB8IGJlZm9yZV9wYWdlX3J1bGUgUEFHRV9TWU0gZXJyb3IgJzsnIHsKKyAgICAgIHBhcnNlci0+
cG9wUnVsZURhdGEoKTsKKyAgICAgICQkID0gMDsKKyAgICB9CisgICAgOworCitwYWdlX3NlbGVj
dG9yOgorICAgIElERU5UIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2Vs
ZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldFRhZyhRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMSwg
cGFyc2VyLT5tX2RlZmF1bHROYW1lc3BhY2UpKTsKKyAgICAgICAgJCQtPnNldEZvclBhZ2UoKTsK
KyAgICB9CisgICAgfCBJREVOVCBwc2V1ZG9fcGFnZSB7CisgICAgICAgICQkID0gJDI7CisgICAg
ICAgIGlmICgkJCkgeworICAgICAgICAgICAgJCQtPnNldFRhZyhRdWFsaWZpZWROYW1lKG51bGxB
dG9tLCAkMSwgcGFyc2VyLT5tX2RlZmF1bHROYW1lc3BhY2UpKTsKKyAgICAgICAgICAgICQkLT5z
ZXRGb3JQYWdlKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgfCBwc2V1ZG9fcGFnZSB7CisgICAg
ICAgICQkID0gJDE7CisgICAgICAgIGlmICgkJCkKKyAgICAgICAgICAgICQkLT5zZXRGb3JQYWdl
KCk7CisgICAgfQorICAgIHwgLyogZW1wdHkgKi8geworICAgICAgICAkJCA9IHBhcnNlci0+Y3Jl
YXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAkJC0+c2V0Rm9yUGFnZSgpOworICAgIH0K
KyAgICA7CisKK2RlY2xhcmF0aW9uc19hbmRfbWFyZ2luczoKKyAgICBkZWNsYXJhdGlvbl9saXN0
CisgICAgfCBkZWNsYXJhdGlvbnNfYW5kX21hcmdpbnMgbWFyZ2luX2JveCBtYXliZV9zcGFjZSBk
ZWNsYXJhdGlvbl9saXN0CisgICAgOworCittYXJnaW5fYm94OgorICAgIG1hcmdpbl9zeW0gewor
ICAgICAgICBwYXJzZXItPnN0YXJ0RGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KCk7CisgICAgfSBt
YXliZV9zcGFjZSAneycgbWF5YmVfc3BhY2UgZGVjbGFyYXRpb25fbGlzdCBjbG9zaW5nX2JyYWNl
IHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZU1hcmdpbkF0UnVsZSgkMSk7CisgICAgfQor
ICAgIDsKKworbWFyZ2luX3N5bSA6CisgICAgVE9QTEVGVENPUk5FUl9TWU0geworICAgICAgICAk
JCA9IENTU1NlbGVjdG9yOjpUb3BMZWZ0Q29ybmVyTWFyZ2luQm94OworICAgIH0KKyAgICB8IFRP
UExFRlRfU1lNIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6VG9wTGVmdE1hcmdpbkJveDsK
KyAgICB9CisgICAgfCBUT1BDRU5URVJfU1lNIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6
VG9wQ2VudGVyTWFyZ2luQm94OworICAgIH0KKyAgICB8IFRPUFJJR0hUX1NZTSB7CisgICAgICAg
ICQkID0gQ1NTU2VsZWN0b3I6OlRvcFJpZ2h0TWFyZ2luQm94OworICAgIH0KKyAgICB8IFRPUFJJ
R0hUQ09STkVSX1NZTSB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OlRvcFJpZ2h0Q29ybmVy
TWFyZ2luQm94OworICAgIH0KKyAgICB8IEJPVFRPTUxFRlRDT1JORVJfU1lNIHsKKyAgICAgICAg
JCQgPSBDU1NTZWxlY3Rvcjo6Qm90dG9tTGVmdENvcm5lck1hcmdpbkJveDsKKyAgICB9CisgICAg
fCBCT1RUT01MRUZUX1NZTSB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkJvdHRvbUxlZnRN
YXJnaW5Cb3g7CisgICAgfQorICAgIHwgQk9UVE9NQ0VOVEVSX1NZTSB7CisgICAgICAgICQkID0g
Q1NTU2VsZWN0b3I6OkJvdHRvbUNlbnRlck1hcmdpbkJveDsKKyAgICB9CisgICAgfCBCT1RUT01S
SUdIVF9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpCb3R0b21SaWdodE1hcmdpbkJv
eDsKKyAgICB9CisgICAgfCBCT1RUT01SSUdIVENPUk5FUl9TWU0geworICAgICAgICAkJCA9IENT
U1NlbGVjdG9yOjpCb3R0b21SaWdodENvcm5lck1hcmdpbkJveDsKKyAgICB9CisgICAgfCBMRUZU
VE9QX1NZTSB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkxlZnRUb3BNYXJnaW5Cb3g7Cisg
ICAgfQorICAgIHwgTEVGVE1JRERMRV9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpM
ZWZ0TWlkZGxlTWFyZ2luQm94OworICAgIH0KKyAgICB8IExFRlRCT1RUT01fU1lNIHsKKyAgICAg
ICAgJCQgPSBDU1NTZWxlY3Rvcjo6TGVmdEJvdHRvbU1hcmdpbkJveDsKKyAgICB9CisgICAgfCBS
SUdIVFRPUF9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpSaWdodFRvcE1hcmdpbkJv
eDsKKyAgICB9CisgICAgfCBSSUdIVE1JRERMRV9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVj
dG9yOjpSaWdodE1pZGRsZU1hcmdpbkJveDsKKyAgICB9CisgICAgfCBSSUdIVEJPVFRPTV9TWU0g
eworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpSaWdodEJvdHRvbU1hcmdpbkJveDsKKyAgICB9
CisgICAgOworCitiZWZvcmVfZm9udF9mYWNlX3J1bGU6CisgICAgLyogZW1wdHkgKi8geworICAg
ICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6OkZPTlRf
RkFDRV9SVUxFKTsKKyAgICB9CisgICAgOworCitmb250X2ZhY2U6CisgICAgYmVmb3JlX2ZvbnRf
ZmFjZV9ydWxlIEZPTlRfRkFDRV9TWU0gYXRfcnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlCisg
ICAgJ3snIGF0X3J1bGVfYm9keV9zdGFydCBtYXliZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRpb24g
ZGVjbGFyYXRpb25fbGlzdCBjbG9zaW5nX2JyYWNlIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNy
ZWF0ZUZvbnRGYWNlUnVsZSgpOworICAgIH0KKyAgICB8IGJlZm9yZV9mb250X2ZhY2VfcnVsZSBG
T05UX0ZBQ0VfU1lNIGVycm9yIGludmFsaWRfYmxvY2sgeworICAgICAgJCQgPSAwOworICAgICAg
cGFyc2VyLT5wb3BSdWxlRGF0YSgpOworICAgIH0KKyAgICB8IGJlZm9yZV9mb250X2ZhY2VfcnVs
ZSBGT05UX0ZBQ0VfU1lNIGVycm9yICc7JyB7CisgICAgICAkJCA9IDA7CisgICAgICBwYXJzZXIt
PnBvcFJ1bGVEYXRhKCk7CisgICAgfQorOworCityZWdpb25fc2VsZWN0b3I6CisgICAgc2VsZWN0
b3JfbGlzdCB7CisgICAgICAgIGlmICgkMSkgeworICAgICAgICAgICAgcGFyc2VyLT5zZXRSZXVz
YWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9yKCQxKTsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5y
ZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9yKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgJCQgPSAwOworICAgIH0KKzsKKworYmVmb3JlX3JlZ2lvbl9ydWxlOgorICAg
IC8qIGVtcHR5ICovIHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1
bGVTb3VyY2VEYXRhOjpSRUdJT05fUlVMRSk7CisgICAgfQorICAgIDsKKworcmVnaW9uOgorICAg
IGJlZm9yZV9yZWdpb25fcnVsZSBXRUJLSVRfUkVHSU9OX1JVTEVfU1lNIFdISVRFU1BBQ0UgcmVn
aW9uX3NlbGVjdG9yIGF0X3J1bGVfaGVhZGVyX2VuZCAneycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1h
eWJlX3NwYWNlIGJsb2NrX3J1bGVfbGlzdCBzYXZlX2Jsb2NrIHsKKyAgICAgICAgaWYgKCQ0KQor
ICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZVJlZ2lvblJ1bGUoJDQsICQ5KTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAkJCA9IDA7CisgICAgICAgICAgICBwYXJzZXItPnBvcFJ1
bGVEYXRhKCk7CisgICAgICAgIH0KKyAgICB9Cis7CisKK2NvbWJpbmF0b3I6CisgICAgJysnIG1h
eWJlX3NwYWNlIHsgJCQgPSBDU1NTZWxlY3Rvcjo6RGlyZWN0QWRqYWNlbnQ7IH0KKyAgfCAnficg
bWF5YmVfc3BhY2UgeyAkJCA9IENTU1NlbGVjdG9yOjpJbmRpcmVjdEFkamFjZW50OyB9CisgIHwg
Jz4nIG1heWJlX3NwYWNlIHsgJCQgPSBDU1NTZWxlY3Rvcjo6Q2hpbGQ7IH0KKyAgOworCittYXli
ZV91bmFyeV9vcGVyYXRvcjoKKyAgICB1bmFyeV9vcGVyYXRvciB7ICQkID0gJDE7IH0KKyAgICB8
IHsgJCQgPSAxOyB9CisgICAgOworCit1bmFyeV9vcGVyYXRvcjoKKyAgICAnLScgeyAkJCA9IC0x
OyB9CisgIHwgJysnIHsgJCQgPSAxOyB9CisgIDsKKworbWF5YmVfc3BhY2VfYmVmb3JlX2RlY2xh
cmF0aW9uOgorICAgIG1heWJlX3NwYWNlIHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlT
dGFydCgpOworICAgIH0KKyAgOworCitiZWZvcmVfc2VsZWN0b3JfbGlzdDoKKyAgICAvKiBlbXB0
eSAqLyB7CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNl
RGF0YTo6U1RZTEVfUlVMRSk7CisgICAgfQorICA7CisKK2F0X3J1bGVfaGVhZGVyX2VuZDoKKyAg
ICAvKiBlbXB0eSAqLyB7CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJFbmQoKTsKKyAg
ICB9CisgIDsKKworcnVsZXNldDoKKyAgICBiZWZvcmVfc2VsZWN0b3JfbGlzdCBzZWxlY3Rvcl9s
aXN0IGF0X3J1bGVfaGVhZGVyX2VuZCAneycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1heWJlX3NwYWNl
X2JlZm9yZV9kZWNsYXJhdGlvbiBkZWNsYXJhdGlvbl9saXN0IGNsb3NpbmdfYnJhY2UgeworICAg
ICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlU3R5bGVSdWxlKCQyKTsKKyAgICB9CisgIDsKKworc2Vs
ZWN0b3JfbGlzdDoKKyAgICBzZWxlY3RvciAlcHJlYyBVTklNUE9SVEFOVF9UT0sgeworICAgICAg
ICBpZiAoJDEpIHsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5zZWxlY3RvclZlY3RvcigpOwor
ICAgICAgICAgICAgJCQtPnNocmluaygwKTsKKyAgICAgICAgICAgICQkLT5hcHBlbmQocGFyc2Vy
LT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMSkpOworICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVM
YXN0U2VsZWN0b3JMaW5lQW5kUG9zaXRpb24oKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB8IHNl
bGVjdG9yX2xpc3QgJywnIG1heWJlX3NwYWNlIHNlbGVjdG9yICVwcmVjIFVOSU1QT1JUQU5UX1RP
SyB7CisgICAgICAgIGlmICgkMSAmJiAkNCkgeworICAgICAgICAgICAgJCQgPSAkMTsKKyAgICAg
ICAgICAgICQkLT5hcHBlbmQocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkNCkpOworICAg
ICAgICAgICAgcGFyc2VyLT51cGRhdGVMYXN0U2VsZWN0b3JMaW5lQW5kUG9zaXRpb24oKTsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQorICB8IHNlbGVjdG9yX2xp
c3QgZXJyb3IgeworICAgICAgICAkJCA9IDA7CisgICAgfQorICAgOworCitzZWxlY3Rvcl93aXRo
X3RyYWlsaW5nX3doaXRlc3BhY2U6CisgICAgc2VsZWN0b3IgV0hJVEVTUEFDRSB7CisgICAgICAg
ICQkID0gJDE7CisgICAgfQorICAgIDsKKworc2VsZWN0b3I6CisgICAgc2ltcGxlX3NlbGVjdG9y
IHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAgfCBzZWxlY3Rvcl93aXRoX3RyYWlsaW5n
X3doaXRlc3BhY2UKKyAgICB7CisgICAgICAgICQkID0gJDE7CisgICAgfQorICAgIHwgc2VsZWN0
b3Jfd2l0aF90cmFpbGluZ193aGl0ZXNwYWNlIHNpbXBsZV9zZWxlY3RvcgorICAgIHsKKyAgICAg
ICAgJCQgPSAkMjsKKyAgICAgICAgaWYgKCEkMSkKKyAgICAgICAgICAgICQkID0gMDsKKyAgICAg
ICAgZWxzZSBpZiAoJCQpIHsKKyAgICAgICAgICAgIENTU1BhcnNlclNlbGVjdG9yKiBlbmQgPSAk
JDsKKyAgICAgICAgICAgIHdoaWxlIChlbmQtPnRhZ0hpc3RvcnkoKSkKKyAgICAgICAgICAgICAg
ICBlbmQgPSBlbmQtPnRhZ0hpc3RvcnkoKTsKKyAgICAgICAgICAgIGVuZC0+c2V0UmVsYXRpb24o
Q1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQpOworICAgICAgICAgICAgZW5kLT5zZXRUYWdIaXN0b3J5
KHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDEpKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICB8IHNlbGVjdG9yIGNvbWJpbmF0b3Igc2ltcGxlX3NlbGVjdG9yIHsKKyAgICAgICAgJCQgPSAk
MzsKKyAgICAgICAgaWYgKCEkMSkKKyAgICAgICAgICAgICQkID0gMDsKKyAgICAgICAgZWxzZSBp
ZiAoJCQpIHsKKyAgICAgICAgICAgIENTU1BhcnNlclNlbGVjdG9yKiBlbmQgPSAkJDsKKyAgICAg
ICAgICAgIHdoaWxlIChlbmQtPnRhZ0hpc3RvcnkoKSkKKyAgICAgICAgICAgICAgICBlbmQgPSBl
bmQtPnRhZ0hpc3RvcnkoKTsKKyAgICAgICAgICAgIGVuZC0+c2V0UmVsYXRpb24oJDIpOworICAg
ICAgICAgICAgZW5kLT5zZXRUYWdIaXN0b3J5KHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3Io
JDEpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB8IHNlbGVjdG9yIGVycm9yIHsKKyAgICAgICAg
JCQgPSAwOworICAgIH0KKyAgICA7CisKK25hbWVzcGFjZV9zZWxlY3RvcjoKKyAgICAvKiBlbXB0
eSAqLyAnfCcgeyAkJC5jbGVhcigpOyB9CisgICAgfCAnKicgJ3wnIHsgc3RhdGljIExDaGFyIHN0
YXIgPSAnKic7ICQkLmluaXQoJnN0YXIsIDEpOyB9CisgICAgfCBJREVOVCAnfCcgeyAkJCA9ICQx
OyB9Cis7CisgICAgCitzaW1wbGVfc2VsZWN0b3I6CisgICAgZWxlbWVudF9uYW1lIHsKKyAgICAg
ICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNl
dFRhZyhRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMSwgcGFyc2VyLT5tX2RlZmF1bHROYW1lc3Bh
Y2UpKTsKKyAgICB9CisgICAgfCBlbGVtZW50X25hbWUgc3BlY2lmaWVyX2xpc3QgeworICAgICAg
ICAkJCA9ICQyOworICAgICAgICBpZiAoJCQpCisgICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNw
ZWNpZmllcnNXaXRoRWxlbWVudE5hbWUobnVsbEF0b20sICQxLCAkJCk7CisgICAgfQorICAgIHwg
c3BlY2lmaWVyX2xpc3QgeworICAgICAgICAkJCA9ICQxOworICAgICAgICBpZiAoJCQpCisgICAg
ICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUobnVsbEF0b20s
IHN0YXJBdG9tLCAkJCk7CisgICAgfQorICAgIHwgbmFtZXNwYWNlX3NlbGVjdG9yIGVsZW1lbnRf
bmFtZSB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Cisg
ICAgICAgICQkLT5zZXRUYWcocGFyc2VyLT5kZXRlcm1pbmVOYW1lSW5OYW1lc3BhY2UoJDEsICQy
KSk7CisgICAgfQorICAgIHwgbmFtZXNwYWNlX3NlbGVjdG9yIGVsZW1lbnRfbmFtZSBzcGVjaWZp
ZXJfbGlzdCB7CisgICAgICAgICQkID0gJDM7CisgICAgICAgIGlmICgkJCkKKyAgICAgICAgICAg
IHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZSgkMSwgJDIsICQkKTsKKyAg
ICB9CisgICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3Igc3BlY2lmaWVyX2xpc3QgeworICAgICAgICAk
JCA9ICQyOworICAgICAgICBpZiAoJCQpCisgICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNp
ZmllcnNXaXRoRWxlbWVudE5hbWUoJDEsIHN0YXJBdG9tLCAkJCk7CisgICAgfQorICA7CisKK3Np
bXBsZV9zZWxlY3Rvcl9saXN0OgorICAgIHNpbXBsZV9zZWxlY3RvciAlcHJlYyBVTklNUE9SVEFO
VF9UT0sgeworICAgICAgICBpZiAoJDEpIHsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVh
dGVGbG9hdGluZ1NlbGVjdG9yVmVjdG9yKCk7CisgICAgICAgICAgICAkJC0+YXBwZW5kKHBhcnNl
ci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDEpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAkJCA9IDA7CisgICAgfQorICAgIHwgc2ltcGxlX3NlbGVjdG9yX2xpc3QgbWF5YmVfc3BhY2Ug
JywnIG1heWJlX3NwYWNlIHNpbXBsZV9zZWxlY3RvciAlcHJlYyBVTklNUE9SVEFOVF9UT0sgewor
ICAgICAgICBpZiAoJDEgJiYgJDUpIHsKKyAgICAgICAgICAgICQkID0gJDE7CisgICAgICAgICAg
ICAkJC0+YXBwZW5kKHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDUpKTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIHwgc2ltcGxlX3NlbGVjdG9y
X2xpc3QgZXJyb3IgeworICAgICAgICAkJCA9IDA7CisgICAgfQorICA7CisKK2VsZW1lbnRfbmFt
ZToKKyAgICBJREVOVCB7CisgICAgICAgIENTU1BhcnNlclN0cmluZyYgc3RyID0gJDE7CisgICAg
ICAgIGlmIChwYXJzZXItPm1fY29udGV4dC5pc0hUTUxEb2N1bWVudCkKKyAgICAgICAgICAgIHN0
ci5sb3dlcigpOworICAgICAgICAkJCA9IHN0cjsKKyAgICB9CisgICAgfCAnKicgeworICAgICAg
ICBzdGF0aWMgTENoYXIgc3RhciA9ICcqJzsKKyAgICAgICAgJCQuaW5pdCgmc3RhciwgMSk7Cisg
ICAgfQorICA7CisKK3NwZWNpZmllcl9saXN0OgorICAgIHNwZWNpZmllciB7CisgICAgICAgICQk
ID0gJDE7CisgICAgfQorICAgIHwgc3BlY2lmaWVyX2xpc3Qgc3BlY2lmaWVyIHsKKyAgICAgICAg
aWYgKCEkMikKKyAgICAgICAgICAgICQkID0gMDsKKyAgICAgICAgZWxzZSBpZiAoJDEpCisgICAg
ICAgICAgICAkJCA9IHBhcnNlci0+dXBkYXRlU3BlY2lmaWVycygkMSwgJDIpOworICAgIH0KKyAg
ICB8IHNwZWNpZmllcl9saXN0IGVycm9yIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKzsKKwor
c3BlY2lmaWVyOgorICAgIElEU0VMIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0
aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpJZCk7Cisg
ICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4dC5tb2RlID09IENTU1F1aXJrc01vZGUpCisgICAg
ICAgICAgICAkMS5sb3dlcigpOworICAgICAgICAkJC0+c2V0VmFsdWUoJDEpOworICAgIH0KKyAg
fCBIRVggeworICAgICAgICBpZiAoJDFbMF0gPj0gJzAnICYmICQxWzBdIDw9ICc5JykgeworICAg
ICAgICAgICAgJCQgPSAwOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgJCQgPSBwYXJz
ZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgICAgICQkLT5zZXRNYXRjaChD
U1NTZWxlY3Rvcjo6SWQpOworICAgICAgICAgICAgaWYgKHBhcnNlci0+bV9jb250ZXh0Lm1vZGUg
PT0gQ1NTUXVpcmtzTW9kZSkKKyAgICAgICAgICAgICAgICAkMS5sb3dlcigpOworICAgICAgICAg
ICAgJCQtPnNldFZhbHVlKCQxKTsKKyAgICAgICAgfQorICAgIH0KKyAgfCBjbGFzcworICB8IGF0
dHJpYgorICB8IHBzZXVkbworICAgIDsKKworY2xhc3M6CisgICAgJy4nIElERU5UIHsKKyAgICAg
ICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNl
dE1hdGNoKENTU1NlbGVjdG9yOjpDbGFzcyk7CisgICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4
dC5tb2RlID09IENTU1F1aXJrc01vZGUpCisgICAgICAgICAgICAkMi5sb3dlcigpOworICAgICAg
ICAkJC0+c2V0VmFsdWUoJDIpOworICAgIH0KKyAgOworCithdHRyX25hbWU6CisgICAgSURFTlQg
bWF5YmVfc3BhY2UgeworICAgICAgICBDU1NQYXJzZXJTdHJpbmcmIHN0ciA9ICQxOworICAgICAg
ICBpZiAocGFyc2VyLT5tX2NvbnRleHQuaXNIVE1MRG9jdW1lbnQpCisgICAgICAgICAgICBzdHIu
bG93ZXIoKTsKKyAgICAgICAgJCQgPSBzdHI7CisgICAgfQorICAgIDsKKworYXR0cmliOgorICAg
ICdbJyBtYXliZV9zcGFjZSBhdHRyX25hbWUgJ10nIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNy
ZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldEF0dHJpYnV0ZShRdWFsaWZp
ZWROYW1lKG51bGxBdG9tLCAkMywgbnVsbEF0b20pKTsKKyAgICAgICAgJCQtPnNldE1hdGNoKENT
U1NlbGVjdG9yOjpTZXQpOworICAgIH0KKyAgICB8ICdbJyBtYXliZV9zcGFjZSBhdHRyX25hbWUg
bWF0Y2ggbWF5YmVfc3BhY2UgaWRlbnRfb3Jfc3RyaW5nIG1heWJlX3NwYWNlICddJyB7CisgICAg
ICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5z
ZXRBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDMsIG51bGxBdG9tKSk7CisgICAg
ICAgICQkLT5zZXRNYXRjaCgoQ1NTU2VsZWN0b3I6Ok1hdGNoKSQ0KTsKKyAgICAgICAgJCQtPnNl
dFZhbHVlKCQ2KTsKKyAgICB9CisgICAgfCAnWycgbWF5YmVfc3BhY2UgbmFtZXNwYWNlX3NlbGVj
dG9yIGF0dHJfbmFtZSAnXScgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdT
ZWxlY3RvcigpOworICAgICAgICAkJC0+c2V0QXR0cmlidXRlKHBhcnNlci0+ZGV0ZXJtaW5lTmFt
ZUluTmFtZXNwYWNlKCQzLCAkNCkpOworICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6
OlNldCk7CisgICAgfQorICAgIHwgJ1snIG1heWJlX3NwYWNlIG5hbWVzcGFjZV9zZWxlY3RvciBh
dHRyX25hbWUgbWF0Y2ggbWF5YmVfc3BhY2UgaWRlbnRfb3Jfc3RyaW5nIG1heWJlX3NwYWNlICdd
JyB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAg
ICAgICQkLT5zZXRBdHRyaWJ1dGUocGFyc2VyLT5kZXRlcm1pbmVOYW1lSW5OYW1lc3BhY2UoJDMs
ICQ0KSk7CisgICAgICAgICQkLT5zZXRNYXRjaCgoQ1NTU2VsZWN0b3I6Ok1hdGNoKSQ1KTsKKyAg
ICAgICAgJCQtPnNldFZhbHVlKCQ3KTsKKyAgICB9CisgIDsKKworbWF0Y2g6CisgICAgJz0nIHsK
KyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6RXhhY3Q7CisgICAgfQorICAgIHwgSU5DTFVERVMg
eworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpMaXN0OworICAgIH0KKyAgICB8IERBU0hNQVRD
SCB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6Okh5cGhlbjsKKyAgICB9CisgICAgfCBCRUdJ
TlNXSVRIIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6QmVnaW47CisgICAgfQorICAgIHwg
RU5EU1dJVEggeworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpFbmQ7CisgICAgfQorICAgIHwg
Q09OVEFJTlMgeworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpDb250YWluOworICAgIH0KKyAg
ICA7CisKK2lkZW50X29yX3N0cmluZzoKKyAgICBJREVOVAorICB8IFNUUklORworICAgIDsKKwor
cHNldWRvX3BhZ2U6CisgICAgJzonIElERU5UIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0
ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQ
YWdlUHNldWRvQ2xhc3MpOworICAgICAgICAkMi5sb3dlcigpOworICAgICAgICAkJC0+c2V0VmFs
dWUoJDIpOworICAgICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSB0eXBlID0gJCQtPnBzZXVk
b1R5cGUoKTsKKyAgICAgICAgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25vd24p
CisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQorCitwc2V1ZG86CisgICAgJzonIElERU5UIHsK
KyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAg
JCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7CisgICAgICAgICQyLmxvd2Vy
KCk7CisgICAgICAgICQkLT5zZXRWYWx1ZSgkMik7CisgICAgICAgIENTU1NlbGVjdG9yOjpQc2V1
ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOworICAgICAgICBpZiAodHlwZSA9PSBDU1NT
ZWxlY3Rvcjo6UHNldWRvVW5rbm93bikKKyAgICAgICAgICAgICQkID0gMDsKKyAgICB9CisgICAg
fCAnOicgJzonIElERU5UIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2Vs
ZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50
KTsKKyAgICAgICAgJDMubG93ZXIoKTsKKyAgICAgICAgJCQtPnNldFZhbHVlKCQzKTsKKyAgICAg
ICAgLy8gRklYTUU6IFRoaXMgY2FsbCBpcyBuZWVkZWQgdG8gZm9yY2Ugc2VsZWN0b3IgdG8gY29t
cHV0ZSB0aGUgcHNldWRvVHlwZSBlYXJseSBlbm91Z2guCisgICAgICAgICQkLT5wc2V1ZG9UeXBl
KCk7CisgICAgfQorICAgIC8vIHVzZSBieSA6LXdlYmtpdC1hbnkuCisgICAgLy8gRklYTUU6IHNo
b3VsZCB3ZSBzdXBwb3J0IGdlbmVyaWMgc2VsZWN0b3JzIGhlcmUgb3IganVzdCBzaW1wbGVfc2Vs
ZWN0b3JzPworICAgIC8vIFVzZSBzaW1wbGVfc2VsZWN0b3JfbGlzdCBmb3Igbm93IHRvIG1hdGNo
IC1tb3otYW55LgorICAgIC8vIFNlZSBodHRwOi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1Ymxp
Yy93d3ctc3R5bGUvMjAxMFNlcC8wNTY2Lmh0bWwgZm9yIHNvbWUKKyAgICAvLyByZWxhdGVkIGRp
c2N1c3Npb24gd2l0aCByZXNwZWN0IHRvIDpub3QuCisgICAgfCAnOicgQU5ZRlVOQ1RJT04gbWF5
YmVfc3BhY2Ugc2ltcGxlX3NlbGVjdG9yX2xpc3QgbWF5YmVfc3BhY2UgJyknIHsKKyAgICAgICAg
aWYgKCQ0KSB7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3Rv
cigpOworICAgICAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7
CisgICAgICAgICAgICAkJC0+YWRvcHRTZWxlY3RvclZlY3RvcigqcGFyc2VyLT5zaW5rRmxvYXRp
bmdTZWxlY3RvclZlY3RvcigkNCkpOworICAgICAgICAgICAgJDIubG93ZXIoKTsKKyAgICAgICAg
ICAgICQkLT5zZXRWYWx1ZSgkMik7CisgICAgICAgICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlw
ZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUoKTsKKyAgICAgICAgICAgIGlmICh0eXBlICE9IENTU1Nl
bGVjdG9yOjpQc2V1ZG9BbnkpCisgICAgICAgICAgICAgICAgJCQgPSAwOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICQkID0gMDsKKyAgICB9CisgICAgLy8gdXNlZCBieSA6bnRoLSooYXgr
YikKKyAgICB8ICc6JyBGVU5DVElPTiBtYXliZV9zcGFjZSBOVEggbWF5YmVfc3BhY2UgJyknIHsK
KyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAg
JCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7CisgICAgICAgICQkLT5zZXRB
cmd1bWVudCgkNCk7CisgICAgICAgICQkLT5zZXRWYWx1ZSgkMik7CisgICAgICAgIENTU1NlbGVj
dG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOworICAgICAgICBpZiAodHlw
ZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bikKKyAgICAgICAgICAgICQkID0gMDsKKyAg
ICB9CisgICAgLy8gdXNlZCBieSA6bnRoLSoKKyAgICB8ICc6JyBGVU5DVElPTiBtYXliZV9zcGFj
ZSBtYXliZV91bmFyeV9vcGVyYXRvciBJTlRFR0VSIG1heWJlX3NwYWNlICcpJyB7CisgICAgICAg
ICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRN
YXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpOworICAgICAgICAkJC0+c2V0QXJndW1lbnQo
U3RyaW5nOjpudW1iZXIoJDQgKiAkNSkpOworICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOworICAg
ICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUoKTsKKyAg
ICAgICAgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25vd24pCisgICAgICAgICAg
ICAkJCA9IDA7CisgICAgfQorICAgIC8vIHVzZWQgYnkgOm50aC0qKG9kZC9ldmVuKSBhbmQgOmxh
bmcKKyAgICB8ICc6JyBGVU5DVElPTiBtYXliZV9zcGFjZSBJREVOVCBtYXliZV9zcGFjZSAnKScg
eworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAg
ICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKKyAgICAgICAgJCQtPnNl
dEFyZ3VtZW50KCQ0KTsKKyAgICAgICAgJDIubG93ZXIoKTsKKyAgICAgICAgJCQtPnNldFZhbHVl
KCQyKTsKKyAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgdHlwZSA9ICQkLT5wc2V1ZG9U
eXBlKCk7CisgICAgICAgIGlmICh0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9Vbmtub3duKQor
ICAgICAgICAgICAgJCQgPSAwOworICAgICAgICBlbHNlIGlmICh0eXBlID09IENTU1NlbGVjdG9y
OjpQc2V1ZG9OdGhDaGlsZCB8fAorICAgICAgICAgICAgICAgICB0eXBlID09IENTU1NlbGVjdG9y
OjpQc2V1ZG9OdGhPZlR5cGUgfHwKKyAgICAgICAgICAgICAgICAgdHlwZSA9PSBDU1NTZWxlY3Rv
cjo6UHNldWRvTnRoTGFzdENoaWxkIHx8CisgICAgICAgICAgICAgICAgIHR5cGUgPT0gQ1NTU2Vs
ZWN0b3I6OlBzZXVkb050aExhc3RPZlR5cGUpIHsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZE50
aFRva2VuKCQ0KSkKKyAgICAgICAgICAgICAgICAkJCA9IDA7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgLy8gdXNlZCBieSA6bm90CisgICAgfCAnOicgTk9URlVOQ1RJT04gbWF5YmVfc3BhY2Ugc2lt
cGxlX3NlbGVjdG9yIG1heWJlX3NwYWNlICcpJyB7CisgICAgICAgIGlmICghJDQgfHwgISQ0LT5p
c1NpbXBsZSgpKQorICAgICAgICAgICAgJCQgPSAwOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICAgICAk
JC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKKworICAgICAgICAgICAgQ1NT
U2VsZWN0b3JWZWN0b3Igc2VsZWN0b3JWZWN0b3I7CisgICAgICAgICAgICBzZWxlY3RvclZlY3Rv
ci5hcHBlbmQocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkNCkpOworICAgICAgICAgICAg
JCQtPmFkb3B0U2VsZWN0b3JWZWN0b3Ioc2VsZWN0b3JWZWN0b3IpOworCisgICAgICAgICAgICAk
Mi5sb3dlcigpOworICAgICAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsKKyAgICAgICAgfQorICAg
IH0KKyAgOworCitkZWNsYXJhdGlvbl9saXN0OgorICAgIGRlY2xhcmF0aW9uIHsKKyAgICAgICAg
JCQgPSAkMTsKKyAgICB9CisgICAgfCBkZWNsX2xpc3QgZGVjbGFyYXRpb24geworICAgICAgICAk
JCA9ICQxOworICAgICAgICBpZiAoICQyICkKKyAgICAgICAgICAgICQkID0gJDI7CisgICAgfQor
ICAgIHwgZGVjbF9saXN0IHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAgfCBlcnJvciBp
bnZhbGlkX2Jsb2NrX2xpc3QgZXJyb3IgeworICAgICAgICAkJCA9IGZhbHNlOworICAgIH0KKyAg
ICB8IGVycm9yIHsKKyAgICAgICAgJCQgPSBmYWxzZTsKKyAgICB9CisgICAgfCBkZWNsX2xpc3Qg
ZXJyb3IgeworICAgICAgICAkJCA9ICQxOworICAgIH0KKyAgICB8IGRlY2xfbGlzdCBpbnZhbGlk
X2Jsb2NrX2xpc3QgeworICAgICAgICAkJCA9ICQxOworICAgIH0KKyAgICA7CisKK2RlY2xfbGlz
dDoKKyAgICBkZWNsYXJhdGlvbiAnOycgbWF5YmVfc3BhY2UgeworICAgICAgICBwYXJzZXItPm1h
cmtQcm9wZXJ0eVN0YXJ0KCk7CisgICAgICAgICQkID0gJDE7CisgICAgfQorICAgIHwgZGVjbGFy
YXRpb24gaW52YWxpZF9ibG9ja19saXN0IG1heWJlX3NwYWNlIHsKKyAgICAgICAgJCQgPSBmYWxz
ZTsKKyAgICB9CisgICAgfCBkZWNsYXJhdGlvbiBpbnZhbGlkX2Jsb2NrX2xpc3QgJzsnIG1heWJl
X3NwYWNlIHsKKyAgICAgICAgJCQgPSBmYWxzZTsKKyAgICB9CisgICAgfCBlcnJvciAnOycgbWF5
YmVfc3BhY2UgeworICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7CisgICAgICAg
ICQkID0gZmFsc2U7CisgICAgfQorICAgIHwgZXJyb3IgaW52YWxpZF9ibG9ja19saXN0IGVycm9y
ICc7JyBtYXliZV9zcGFjZSB7CisgICAgICAgICQkID0gZmFsc2U7CisgICAgfQorICAgIHwgZGVj
bF9saXN0IGRlY2xhcmF0aW9uICc7JyBtYXliZV9zcGFjZSB7CisgICAgICAgIHBhcnNlci0+bWFy
a1Byb3BlcnR5U3RhcnQoKTsKKyAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgaWYgKCQyKQorICAg
ICAgICAgICAgJCQgPSAkMjsKKyAgICB9CisgICAgfCBkZWNsX2xpc3QgZXJyb3IgJzsnIG1heWJl
X3NwYWNlIHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlTdGFydCgpOworICAgICAgICAk
JCA9ICQxOworICAgIH0KKyAgICB8IGRlY2xfbGlzdCBlcnJvciBpbnZhbGlkX2Jsb2NrX2xpc3Qg
ZXJyb3IgJzsnIG1heWJlX3NwYWNlIHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlTdGFy
dCgpOworICAgICAgICAkJCA9ICQxOworICAgIH0KKyAgICA7CisKK2RlY2xhcmF0aW9uOgorICAg
IFZBUl9ERUZJTklUSU9OICc6JyBtYXliZV9zcGFjZSBleHByIHByaW8geworI2lmIEVOQUJMRV9D
U1NfVkFSSUFCTEVTCisgICAgICAgIHBhcnNlci0+c3RvcmVWYXJpYWJsZURlY2xhcmF0aW9uKCQx
LCBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCksICQ1KTsKKyAgICAgICAgJCQgPSB0
cnVlOworICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eUVuZCgkNSwgdHJ1ZSk7CisjZWxzZQor
ICAgICAgICAkJCA9IGZhbHNlOworI2VuZGlmCisgICAgfQorICAgIHwKKyAgICBwcm9wZXJ0eSAn
OicgbWF5YmVfc3BhY2UgZXhwciBwcmlvIHsKKyAgICAgICAgJCQgPSBmYWxzZTsKKyAgICAgICAg
Ym9vbCBpc1Byb3BlcnR5UGFyc2VkID0gZmFsc2U7CisgICAgICAgIGlmICgkMSAmJiAkNCkgewor
ICAgICAgICAgICAgcGFyc2VyLT5tX3ZhbHVlTGlzdCA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFs
dWVMaXN0KCQ0KTsKKyAgICAgICAgICAgIGludCBvbGRQYXJzZWRQcm9wZXJ0aWVzID0gcGFyc2Vy
LT5tX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKTsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5w
YXJzZVZhbHVlKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KCQxKSwgJDUpOworICAgICAgICAg
ICAgaWYgKCEkJCkKKyAgICAgICAgICAgICAgICBwYXJzZXItPnJvbGxiYWNrTGFzdFByb3BlcnRp
ZXMocGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKSAtIG9sZFBhcnNlZFByb3BlcnRp
ZXMpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGlzUHJvcGVydHlQYXJzZWQg
PSB0cnVlOworICAgICAgICAgICAgcGFyc2VyLT5tX3ZhbHVlTGlzdCA9IG51bGxwdHI7CisgICAg
ICAgIH0KKyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlFbmQoJDUsIGlzUHJvcGVydHlQYXJz
ZWQpOworICAgIH0KKyAgICB8CisgICAgcHJvcGVydHkgZXJyb3IgeworICAgICAgICAkJCA9IGZh
bHNlOworICAgIH0KKyAgICB8CisgICAgcHJvcGVydHkgJzonIG1heWJlX3NwYWNlIGVycm9yIGV4
cHIgcHJpbyB7CisgICAgICAgIC8qIFRoZSBkZWZhdWx0IG1vdmFibGUgdHlwZSB0ZW1wbGF0ZSBo
YXMgbGV0dGVyLXNwYWNpbmc6IC5ub25lOyAgSGFuZGxlIHRoaXMgYnkgbG9va2luZyBmb3IKKyAg
ICAgICAgZXJyb3IgdG9rZW5zIGF0IHRoZSBzdGFydCBvZiBhbiBleHByLCByZWNvdmVyIHRoZSBl
eHByIGFuZCB0aGVuIHRyZWF0IGFzIGFuIGVycm9yLCBjbGVhbmluZworICAgICAgICB1cCBhbmQg
ZGVsZXRpbmcgdGhlIHNoaWZ0ZWQgZXhwci4gICovCisgICAgICAgIHBhcnNlci0+bWFya1Byb3Bl
cnR5RW5kKGZhbHNlLCBmYWxzZSk7CisgICAgICAgICQkID0gZmFsc2U7CisgICAgfQorICAgIHwK
KyAgICBwcm9wZXJ0eSAnOicgbWF5YmVfc3BhY2UgZXhwciBwcmlvIGVycm9yIHsKKyAgICAgICAg
LyogV2hlbiB3ZSBlbmNvdW50ZXIgc29tZXRoaW5nIGxpa2UgcCB7Y29sb3I6IHJlZCAhaW1wb3J0
YW50IGZhaWw7fSB3ZSBzaG91bGQgZHJvcCB0aGUgZGVjbGFyYXRpb24gKi8KKyAgICAgICAgcGFy
c2VyLT5tYXJrUHJvcGVydHlFbmQoZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgJCQgPSBmYWxzZTsK
KyAgICB9CisgICAgfAorICAgIElNUE9SVEFOVF9TWU0gbWF5YmVfc3BhY2UgeworICAgICAgICAv
KiBIYW5kbGUgdGhpcyBjYXNlOiBkaXYgeyB0ZXh0LWFsaWduOiBjZW50ZXI7ICFpbXBvcnRhbnQg
fSBKdXN0IHJlZHVjZSBhd2F5IHRoZSBzdHJheSAhaW1wb3J0YW50LiAqLworICAgICAgICAkJCA9
IGZhbHNlOworICAgIH0KKyAgICB8CisgICAgcHJvcGVydHkgJzonIG1heWJlX3NwYWNlIHsKKyAg
ICAgICAgLyogZGl2IHsgZm9udC1mYW1pbHk6IH0gSnVzdCByZWR1Y2UgYXdheSB0aGlzIHByb3Bl
cnR5IHdpdGggbm8gdmFsdWUuICovCisgICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5RW5kKGZh
bHNlLCBmYWxzZSk7CisgICAgICAgICQkID0gZmFsc2U7CisgICAgfQorICAgIHwKKyAgICBwcm9w
ZXJ0eSAnOicgbWF5YmVfc3BhY2UgZXJyb3IgeworICAgICAgICAvKiBpZiB3ZSBjb21lIGFjcm9z
cyBydWxlcyB3aXRoIGludmFsaWQgdmFsdWVzIGxpa2UgdGhpcyBjYXNlOiBwIHsgd2VpZ2h0OiAq
OyB9LCBqdXN0IGRpc2NhcmQgdGhlIHJ1bGUgKi8KKyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVy
dHlFbmQoZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgJCQgPSBmYWxzZTsKKyAgICB9CisgICAgfAor
ICAgIHByb3BlcnR5IGludmFsaWRfYmxvY2sgeworICAgICAgICAvKiBpZiB3ZSBjb21lIGFjcm9z
czogZGl2IHsgY29sb3J7O2NvbG9yOm1hcm9vbn0gfSwgaWdub3JlIGV2ZXJ5dGhpbmcgd2l0aGlu
IGN1cmx5IGJyYWNrZXRzICovCisgICAgICAgICQkID0gZmFsc2U7CisgICAgfQorICA7CisKK3By
b3BlcnR5OgorICAgIElERU5UIG1heWJlX3NwYWNlIHsKKyAgICAgICAgJCQgPSBjc3NQcm9wZXJ0
eUlEKCQxKTsKKyAgICB9CisgIDsKKworcHJpbzoKKyAgICBJTVBPUlRBTlRfU1lNIG1heWJlX3Nw
YWNlIHsgJCQgPSB0cnVlOyB9CisgICAgfCAvKiBlbXB0eSAqLyB7ICQkID0gZmFsc2U7IH0KKyAg
OworCitleHByOgorICAgIHRlcm0geworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRp
bmdWYWx1ZUxpc3QoKTsKKyAgICAgICAgJCQtPmFkZFZhbHVlKHBhcnNlci0+c2lua0Zsb2F0aW5n
VmFsdWUoJDEpKTsKKyAgICB9CisgICAgfCBleHByIG9wZXJhdG9yIHRlcm0geworICAgICAgICAk
JCA9ICQxOworICAgICAgICBpZiAoJCQpIHsKKyAgICAgICAgICAgIGlmICgkMikgeworICAgICAg
ICAgICAgICAgIENTU1BhcnNlclZhbHVlIHY7CisgICAgICAgICAgICAgICAgdi5pZCA9IDA7Cisg
ICAgICAgICAgICAgICAgdi51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOworICAgICAg
ICAgICAgICAgIHYuaVZhbHVlID0gJDI7CisgICAgICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHYp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHBhcnNlci0+c2lua0Zs
b2F0aW5nVmFsdWUoJDMpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB8IGV4cHIgaW52YWxpZF9i
bG9ja19saXN0IHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKyAgICB8IGV4cHIgaW52YWxpZF9i
bG9ja19saXN0IGVycm9yIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKyAgICB8IGV4cHIgZXJy
b3IgeworICAgICAgICAkJCA9IDA7CisgICAgfQorICA7CisKK29wZXJhdG9yOgorICAgICcvJyBt
YXliZV9zcGFjZSB7CisgICAgICAgICQkID0gJy8nOworICAgIH0KKyAgfCAnLCcgbWF5YmVfc3Bh
Y2UgeworICAgICAgICAkJCA9ICcsJzsKKyAgICB9CisgIHwgLyogZW1wdHkgKi8geworICAgICAg
ICAkJCA9IDA7CisgIH0KKyAgOworCit0ZXJtOgorICB1bmFyeV90ZXJtIHsgJCQgPSAkMTsgfQor
ICB8IHVuYXJ5X29wZXJhdG9yIHVuYXJ5X3Rlcm0geyAkJCA9ICQyOyAkJC5mVmFsdWUgKj0gJDE7
IH0KKyAgfCBTVFJJTkcgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAk
JC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkc7IH0KKyAgfCBJREVOVCBtYXli
ZV9zcGFjZSB7CisgICAgICAkJC5pZCA9IGNzc1ZhbHVlS2V5d29yZElEKCQxKTsKKyAgICAgICQk
LnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UOworICAgICAgJCQuc3RyaW5nID0g
JDE7CisgIH0KKyAgLyogV2UgbWlnaHQgbmVlZCB0byBhY3R1YWxseSBwYXJzZSB0aGUgbnVtYmVy
IGZyb20gYSBkaW1lbnNpb24sIGJ1dCB3ZSBjYW4ndCBqdXN0IHB1dCBzb21ldGhpbmcgdGhhdCB1
c2VzICQkLnN0cmluZyBpbnRvIHVuYXJ5X3Rlcm0uICovCisgIHwgRElNRU4gbWF5YmVfc3BhY2Ug
eyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19ESU1FTlNJT047IH0KKyAgfCB1bmFyeV9vcGVyYXRvciBESU1FTiBtYXliZV9zcGFjZSB7
ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDI7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX0RJTUVOU0lPTjsgfQorICB8IFVSSSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3Ry
aW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSTsgfQorICB8IFVO
SUNPREVSQU5HRSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVu
aXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VOSUNPREVfUkFOR0U7IH0KKyAgfCBIRVggbWF5
YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1I7IH0KKyAgfCAnIycgbWF5YmVfc3BhY2UgeyAk
JC5pZCA9IDA7ICQkLnN0cmluZyA9IENTU1BhcnNlclN0cmluZygpOyAkJC51bml0ID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1I7IH0gLyogSGFuZGxlIGVycm9yIGNhc2U6
ICJjb2xvcjogIzsiICovCisgIHwgVkFSRlVOQ1RJT04gbWF5YmVfc3BhY2UgSURFTlQgJyknIG1h
eWJlX3NwYWNlIHsKKyNpZiBFTkFCTEVfQ1NTX1ZBUklBQkxFUworICAgICAgJCQuaWQgPSAwOwor
ICAgICAgJCQuc3RyaW5nID0gJDM7CisgICAgICAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19WQVJJQUJMRV9OQU1FOworI2VuZGlmCisgIH0KKyAgLyogRklYTUU6IGFjY29yZGluZyB0
byB0aGUgc3BlY3MgYSBmdW5jdGlvbiBjYW4gaGF2ZSBhIHVuYXJ5X29wZXJhdG9yIGluIGZyb250
LiBJIGtub3cgbm8gY2FzZSB3aGVyZSB0aGlzIG1ha2VzIHNlbnNlICovCisgIHwgZnVuY3Rpb24g
eworICAgICAgJCQgPSAkMTsKKyAgfQorICB8IGNhbGNfZnVuY3Rpb24geworICAgICAgJCQgPSAk
MTsKKyAgfQorICB8IG1pbl9vcl9tYXhfZnVuY3Rpb24geworICAgICAgJCQgPSAkMTsKKyAgfQor
ICB8ICclJyBtYXliZV9zcGFjZSB7IC8qIEhhbmRsZSB3aWR0aDogJTsgKi8KKyAgICAgICQkLmlk
ID0gMDsgJCQudW5pdCA9IDA7CisgIH0KKyAgOworCit1bmFyeV90ZXJtOgorICBJTlRFR0VSIG1h
eWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5pc0ludCA9IHRydWU7ICQkLmZWYWx1ZSA9ICQxOyAk
JC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7IH0KKyAgfCBGTE9BVFRPS0VO
IG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5pc0ludCA9IGZhbHNlOyAkJC5mVmFsdWUgPSAk
MTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOyB9CisgIHwgUEVSQ0VO
VEFHRSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0U7IH0KKyAgfCBQWFMgbWF5YmVfc3BhY2Ug
eyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QWDsgfQorICB8IENNUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0g
JDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0NNOyB9CisgIHwgTU1TIG1heWJl
X3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfTU07IH0KKyAgfCBJTlMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZW
YWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JTjsgfQorICB8IFBU
UyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1BUOyB9CisgIHwgUENTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAw
OyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEM7IH0K
KyAgfCBERUdTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5p
dCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfREVHOyB9CisgIHwgUkFEUyBtYXliZV9zcGFjZSB7
ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1JBRDsgfQorICB8IEdSQURTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUg
PSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfR1JBRDsgfQorICB8IFRVUk5T
IG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfVFVSTjsgfQorICB8IE1TRUNTIG1heWJlX3NwYWNlIHsgJCQuaWQg
PSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTVM7
IH0KKyAgfCBTRUNTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQu
dW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUzsgfQorICB8IEhFUlRaIG1heWJlX3NwYWNl
IHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfSFo7IH0KKyAgfCBLSEVSVFogbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1
ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19LSFo7IH0KKyAgfCBFTVMg
bWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19FTVM7IH0KKyAgfCBRRU1TIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAw
OyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpRX0VNUzsgfQorICB8
IEVYUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VYUzsgfQorICB8IFJFTVMgbWF5YmVfc3BhY2UgeworICAg
ICAgJCQuaWQgPSAwOworICAgICAgJCQuZlZhbHVlID0gJDE7CisgICAgICAkJC51bml0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19SRU1TOworICAgICAgaWYgKHBhcnNlci0+bV9zdHlsZVNoZWV0
KQorICAgICAgICAgIHBhcnNlci0+bV9zdHlsZVNoZWV0LT5wYXJzZXJTZXRVc2VzUmVtVW5pdHMo
dHJ1ZSk7CisgIH0KKyAgfCBWVyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0g
JDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZXOyB9CisgIHwgVkggbWF5YmVf
c3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19WSDsgfQorICB8IFZNSU4gbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZW
YWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WTUlOOyB9CisgIHwg
RFBQWCBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQUFg7IH0KKyAgfCBEUEkgbWF5YmVfc3BhY2UgeyAkJC5p
ZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19E
UEk7IH0KKyAgfCBEUENNIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsg
JCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRFBDTTsgfQorICA7CisKK2Z1bmN0aW9u
OgorICAgIEZVTkNUSU9OIG1heWJlX3NwYWNlIGV4cHIgJyknIG1heWJlX3NwYWNlIHsKKyAgICAg
ICAgQ1NTUGFyc2VyRnVuY3Rpb24qIGYgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rpb24o
KTsKKyAgICAgICAgZi0+bmFtZSA9ICQxOworICAgICAgICBmLT5hcmdzID0gcGFyc2VyLT5zaW5r
RmxvYXRpbmdWYWx1ZUxpc3QoJDMpOworICAgICAgICAkJC5pZCA9IDA7CisgICAgICAgICQkLnVu
aXQgPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb247CisgICAgICAgICQkLmZ1bmN0aW9uID0gZjsK
KyAgICB9IHwKKyAgICBGVU5DVElPTiBtYXliZV9zcGFjZSBleHByIFRPS0VOX0VPRiB7CisgICAg
ICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9u
KCk7CisgICAgICAgIGYtPm5hbWUgPSAkMTsKKyAgICAgICAgZi0+YXJncyA9IHBhcnNlci0+c2lu
a0Zsb2F0aW5nVmFsdWVMaXN0KCQzKTsKKyAgICAgICAgJCQuaWQgPSAwOworICAgICAgICAkJC51
bml0ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uOworICAgICAgICAkJC5mdW5jdGlvbiA9IGY7
CisgICAgfSB8CisgICAgRlVOQ1RJT04gbWF5YmVfc3BhY2UgJyknIG1heWJlX3NwYWNlIHsKKyAg
ICAgICAgQ1NTUGFyc2VyRnVuY3Rpb24qIGYgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rp
b24oKTsKKyAgICAgICAgZi0+bmFtZSA9ICQxOworICAgICAgICBDU1NQYXJzZXJWYWx1ZUxpc3Qq
IHZhbHVlTGlzdCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdWYWx1ZUxpc3QoKTsKKyAgICAgICAg
Zi0+YXJncyA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KHZhbHVlTGlzdCk7CisgICAg
ICAgICQkLmlkID0gMDsKKyAgICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlv
bjsKKyAgICAgICAgJCQuZnVuY3Rpb24gPSBmOworICAgIH0gfAorICAgIEZVTkNUSU9OIG1heWJl
X3NwYWNlIGVycm9yIHsKKyAgICAgICAgQ1NTUGFyc2VyRnVuY3Rpb24qIGYgPSBwYXJzZXItPmNy
ZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsKKyAgICAgICAgZi0+bmFtZSA9ICQxOworICAgICAgICBm
LT5hcmdzID0gbnVsbHB0cjsKKyAgICAgICAgJCQuaWQgPSAwOworICAgICAgICAkJC51bml0ID0g
Q1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uOworICAgICAgICAkJC5mdW5jdGlvbiA9IGY7CisgIH0K
KyAgOworIAorY2FsY19mdW5jX3Rlcm06CisgIHVuYXJ5X3Rlcm0geyAkJCA9ICQxOyB9CisgIHwg
VkFSRlVOQ1RJT04gbWF5YmVfc3BhY2UgSURFTlQgJyknIG1heWJlX3NwYWNlIHsKKyNpZiBFTkFC
TEVfQ1NTX1ZBUklBQkxFUworICAgICAgJCQuaWQgPSAwOworICAgICAgJCQuc3RyaW5nID0gJDM7
CisgICAgICAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WQVJJQUJMRV9OQU1FOwor
I2VuZGlmCisgIH0KKyAgfCB1bmFyeV9vcGVyYXRvciB1bmFyeV90ZXJtIHsgJCQgPSAkMjsgJCQu
ZlZhbHVlICo9ICQxOyB9CisgIDsKKworY2FsY19mdW5jX29wZXJhdG9yOgorICAgICcrJyBXSElU
RVNQQUNFIHsKKyAgICAgICAgJCQgPSAnKyc7CisgICAgfQorICAgIHwgJy0nIFdISVRFU1BBQ0Ug
eworICAgICAgICAkJCA9ICctJzsKKyAgICB9CisgICAgfCAnKicgbWF5YmVfc3BhY2UgeworICAg
ICAgICAkJCA9ICcqJzsKKyAgICB9CisgICAgfCAnLycgbWF5YmVfc3BhY2UgeworICAgICAgICAk
JCA9ICcvJzsKKyAgICB9CisgIDsKKworY2FsY19mdW5jX3BhcmVuX2V4cHI6CisgICAgJygnIG1h
eWJlX3NwYWNlIGNhbGNfZnVuY19leHByIG1heWJlX3NwYWNlICcpJyBtYXliZV9zcGFjZSB7Cisg
ICAgICAgIGlmICgkMykgeworICAgICAgICAgICAgJCQgPSAkMzsKKyAgICAgICAgICAgIENTU1Bh
cnNlclZhbHVlIHY7CisgICAgICAgICAgICB2LmlkID0gMDsKKyAgICAgICAgICAgIHYudW5pdCA9
IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvcjsKKyAgICAgICAgICAgIHYuaVZhbHVlID0gJygnOwor
ICAgICAgICAgICAgJCQtPmluc2VydFZhbHVlQXQoMCwgdik7CisgICAgICAgICAgICB2LmlWYWx1
ZSA9ICcpJzsKKyAgICAgICAgICAgICQkLT5hZGRWYWx1ZSh2KTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICAkJCA9IDA7CisgICAgfQorCitjYWxjX2Z1bmNfZXhwcjoKKyAgICBjYWxjX2Z1
bmNfdGVybSBtYXliZV9zcGFjZSB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGlu
Z1ZhbHVlTGlzdCgpOworICAgICAgICAkJC0+YWRkVmFsdWUocGFyc2VyLT5zaW5rRmxvYXRpbmdW
YWx1ZSgkMSkpOworICAgIH0KKyAgICB8IGNhbGNfZnVuY19leHByIGNhbGNfZnVuY19vcGVyYXRv
ciBjYWxjX2Z1bmNfdGVybSB7CisgICAgICAgIGlmICgkMSAmJiAkMikgeworICAgICAgICAgICAg
JCQgPSAkMTsKKyAgICAgICAgICAgIENTU1BhcnNlclZhbHVlIHY7CisgICAgICAgICAgICB2Lmlk
ID0gMDsKKyAgICAgICAgICAgIHYudW5pdCA9IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvcjsKKyAg
ICAgICAgICAgIHYuaVZhbHVlID0gJDI7CisgICAgICAgICAgICAkJC0+YWRkVmFsdWUodik7Cisg
ICAgICAgICAgICAkJC0+YWRkVmFsdWUocGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZSgkMykpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICQkID0gMDsKKworICAgIH0KKyAgICB8IGNhbGNf
ZnVuY19leHByIGNhbGNfZnVuY19vcGVyYXRvciBjYWxjX2Z1bmNfcGFyZW5fZXhwciB7CisgICAg
ICAgIGlmICgkMSAmJiAkMiAmJiAkMykgeworICAgICAgICAgICAgJCQgPSAkMTsKKyAgICAgICAg
ICAgIENTU1BhcnNlclZhbHVlIHY7CisgICAgICAgICAgICB2LmlkID0gMDsKKyAgICAgICAgICAg
IHYudW5pdCA9IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvcjsKKyAgICAgICAgICAgIHYuaVZhbHVl
ID0gJDI7CisgICAgICAgICAgICAkJC0+YWRkVmFsdWUodik7CisgICAgICAgICAgICAkJC0+ZXh0
ZW5kKCooJDMpKTsKKyAgICAgICAgfSBlbHNlIAorICAgICAgICAgICAgJCQgPSAwOworICAgIH0K
KyAgICB8IGNhbGNfZnVuY19wYXJlbl9leHByCisgICAgfCBjYWxjX2Z1bmNfZXhwciBlcnJvciB7
CisgICAgICAgICQkID0gMDsKKyAgICB9CisgIDsKKworY2FsY19mdW5jX2V4cHJfbGlzdDoKKyAg
ICBjYWxjX2Z1bmNfZXhwciAgeworICAgICAgICAkJCA9ICQxOworICAgIH0gICAgCisgICAgfCBj
YWxjX2Z1bmNfZXhwcl9saXN0ICcsJyBtYXliZV9zcGFjZSBjYWxjX2Z1bmNfZXhwciB7CisgICAg
ICAgIGlmICgkMSAmJiAkNCkgeworICAgICAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgICAgIENT
U1BhcnNlclZhbHVlIHY7CisgICAgICAgICAgICB2LmlkID0gMDsKKyAgICAgICAgICAgIHYudW5p
dCA9IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvcjsKKyAgICAgICAgICAgIHYuaVZhbHVlID0gJywn
OworICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHYpOworICAgICAgICAgICAgJCQtPmV4dGVuZCgq
KCQ0KSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgJCQgPSAwOworICAgIH0KKyAgICAK
KworY2FsY19mdW5jdGlvbjoKKyAgICBDQUxDRlVOQ1RJT04gbWF5YmVfc3BhY2UgY2FsY19mdW5j
X2V4cHIgJyknIG1heWJlX3NwYWNlIHsKKyAgICAgICAgQ1NTUGFyc2VyRnVuY3Rpb24qIGYgPSBw
YXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsKKyAgICAgICAgZi0+bmFtZSA9ICQxOwor
ICAgICAgICBmLT5hcmdzID0gcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDMpOworICAg
ICAgICAkJC5pZCA9IDA7CisgICAgICAgICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rp
b247CisgICAgICAgICQkLmZ1bmN0aW9uID0gZjsKKyAgICB9CisgICAgfCBDQUxDRlVOQ1RJT04g
bWF5YmVfc3BhY2UgZXJyb3IgeworICAgICAgICBZWUVSUk9SOworICAgIH0KKyAgICA7CisKKwor
bWluX29yX21heDoKKyAgICBNSU5GVU5DVElPTiB7CisgICAgICAgICQkID0gJDE7CisgICAgfQor
ICAgIHwgTUFYRlVOQ1RJT04geworICAgICAgICAkJCA9ICQxOworICAgIH0KKyAgICA7CisKK21p
bl9vcl9tYXhfZnVuY3Rpb246CisgICAgbWluX29yX21heCBtYXliZV9zcGFjZSBjYWxjX2Z1bmNf
ZXhwcl9saXN0ICcpJyBtYXliZV9zcGFjZSB7CisgICAgICAgIENTU1BhcnNlckZ1bmN0aW9uKiBm
ID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7CisgICAgICAgIGYtPm5hbWUgPSAk
MTsKKyAgICAgICAgZi0+YXJncyA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQzKTsK
KyAgICAgICAgJCQuaWQgPSAwOworICAgICAgICAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1
bmN0aW9uOworICAgICAgICAkJC5mdW5jdGlvbiA9IGY7CisgICAgfSAKKyAgICB8IG1pbl9vcl9t
YXggbWF5YmVfc3BhY2UgZXJyb3IgeworICAgICAgICBZWUVSUk9SOworICAgIH0KKyAgICA7CisK
Ky8qIGVycm9yIGhhbmRsaW5nIHJ1bGVzICovCisKK3NhdmVfYmxvY2s6CisgICAgY2xvc2luZ19i
cmFjZSB7CisgICAgICAgICQkID0gMDsKKyAgICB9CisgIHwgZXJyb3IgY2xvc2luZ19icmFjZSB7
CisgICAgICAgICQkID0gMDsKKyAgICB9CisgICAgOworCitpbnZhbGlkX2F0OgorICAgIEFUS0VZ
V09SRCBlcnJvciBpbnZhbGlkX2Jsb2NrIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKyAgfCBB
VEtFWVdPUkQgZXJyb3IgJzsnIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKyAgICA7CisKK2lu
dmFsaWRfcnVsZToKKyAgICBlcnJvciBpbnZhbGlkX2Jsb2NrIHsKKyAgICAgICAgJCQgPSAwOwor
ICAgIH0KKworLyoKKyAgU2VlbXMgbGlrZSB0aGUgdHdvIHJ1bGVzIGJlbG93IGFyZSB0cnlpbmcg
dG9vIG11Y2ggYW5kIHZpb2xhdGluZworICBodHRwOi8vd3d3LmhpeGllLmNoL3Rlc3RzL2V2aWwv
bWl4ZWQvY3NzZXJyb3JoYW5kbGluZy5odG1sCisKKyAgfCBlcnJvciAnOycgeworICAgICAgICAk
JCA9IDA7CisgICAgfQorICB8IGVycm9yICd9JyB7CisgICAgICAgICQkID0gMDsKKyAgICB9Cisq
LworICAgIDsKKworaW52YWxpZF9ibG9jazoKKyAgICAneycgZXJyb3IgaW52YWxpZF9ibG9ja19s
aXN0IGVycm9yIGNsb3NpbmdfYnJhY2UgeworICAgICAgICBwYXJzZXItPmludmFsaWRCbG9ja0hp
dCgpOworICAgIH0KKyAgfCAneycgZXJyb3IgY2xvc2luZ19icmFjZSB7CisgICAgICAgIHBhcnNl
ci0+aW52YWxpZEJsb2NrSGl0KCk7CisgICAgfQorICAgIDsKKworaW52YWxpZF9ibG9ja19saXN0
OgorICAgIGludmFsaWRfYmxvY2sKKyAgfCBpbnZhbGlkX2Jsb2NrX2xpc3QgZXJyb3IgaW52YWxp
ZF9ibG9jaworOworCislJQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55LmluY2x1ZGVzIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbmNsdWRl
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43MjY4OTc0NTBiNDFjNTgxNzAxOTNiOWIwMDhiNjQ2YjRjZGE2NjdhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbmNsdWRl
cwpAQCAtMCwwICsxLDg1IEBACisleworCisvKgorICogIENvcHlyaWdodCAoQykgMjAwMi0yMDAz
IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlw
b3AuY29tKQorICogIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQu
b3JnPgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIkNTU1BhcnNlci5oIgorI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUu
aCIKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5
TmFtZXMuaCIKKyNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgorI2luY2x1ZGUgIkNTU1NlbGVjdG9y
TGlzdC5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisj
aW5jbHVkZSAiTWVkaWFMaXN0LmgiCisjaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgorI2luY2x1
ZGUgIlN0eWxlUnVsZS5oIgorI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgorI2luY2x1
ZGUgIldlYktpdENTU0tleWZyYW1lUnVsZS5oIgorI2luY2x1ZGUgIldlYktpdENTU0tleWZyYW1l
c1J1bGUuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5o
PgorI2luY2x1ZGUgPHN0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKKyNkZWZpbmUgWVlNQUxMT0MgZmFzdE1hbGxvYworI2Rl
ZmluZSBZWUZSRUUgZmFzdEZyZWUKKworI2RlZmluZSBZWUVOQUJMRV9OTFMgMAorI2RlZmluZSBZ
WUxUWVBFX0lTX1RSSVZJQUwgMQorI2RlZmluZSBZWU1BWERFUFRIIDEwMDAwCisjZGVmaW5lIFlZ
REVCVUcgMAorCisjaWYgWVlERUJVRyA+IDAKKyNkZWZpbmUgWVlQUklOVChGaWxlLFR5cGUsVmFs
dWUpIHByaW50X3Rva2VuX3ZhbHVlKEZpbGUsVHlwZSxWYWx1ZSkKK3N0YXRpYyB2b2lkIHByaW50
X3Rva2VuX3ZhbHVlKEZJTEUgKiB5eW91dHB1dCwgaW50IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAm
eXl2YWx1ZSkKK3sKKyAgICBzd2l0Y2ggKHl5dHlwZSkgeworICAgIGNhc2UgSURFTlQ6CisgICAg
Y2FzZSBTVFJJTkc6CisgICAgY2FzZSBOVEg6CisgICAgY2FzZSBIRVg6CisgICAgY2FzZSBJRFNF
TDoKKyAgICBjYXNlIERJTUVOOgorICAgIGNhc2UgSU5WQUxJRERJTUVOOgorICAgIGNhc2UgVVJJ
OgorICAgIGNhc2UgRlVOQ1RJT046CisgICAgY2FzZSBBTllGVU5DVElPTjoKKyAgICBjYXNlIE5P
VEZVTkNUSU9OOgorICAgIGNhc2UgQ0FMQ0ZVTkNUSU9OOgorICAgIGNhc2UgTUlORlVOQ1RJT046
CisgICAgY2FzZSBNQVhGVU5DVElPTjoKKyAgICBjYXNlIFZBUl9ERUZJTklUSU9OOgorICAgIGNh
c2UgVU5JQ09ERVJBTkdFOgorICAgICAgICBZWUZQUklOVEYoeXlvdXRwdXQsICIlcyIsIFN0cmlu
Zyh5eXZhbHVlLnN0cmluZykudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKyNlbmRpZgorCislfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2VncmFtbWFyLnBsIGIvU291cmNlL1dlYkNvcmUvY3Nz
L21ha2VncmFtbWFyLnBsCmluZGV4IDA2ZmFhYTkzZDMyNjBhYjUzMDQxN2M0MzNlMTY4YzMzNWJj
NjdhZWYuLjMyZjc1N2U3N2NmZDUwNDQ2Y2JkMDkyNDYxNGQzNTU0ZDE4MGY1MjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlZ3JhbW1hci5wbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvbWFrZWdyYW1tYXIucGwKQEAgLTIxLDM1ICsyMSw3OSBAQAogdXNlIHN0cmljdDsKIHVz
ZSB3YXJuaW5nczsKIAotbXkgJGdyYW1tYXIgPSAkQVJHVlswXTsKLW15ICRmaWxlQmFzZSA9ICRB
UkdWWzFdOwordXNlIENvbmZpZzsKK3VzZSBGaWxlOjpCYXNlbmFtZTsKK3VzZSBGaWxlOjpTcGVj
OwordXNlIEdldG9wdDo6TG9uZzsKIAotc3lzdGVtKCJiaXNvbiAtZCAtcCBjc3N5eSAiIC4gJGdy
YW1tYXIgLiAiIC1vICIgLiAkZmlsZUJhc2UgLiAiLnRhYi5jIik7CityZXF1aXJlIENvbmZpZzsK
IAotb3BlbiBIRUFERVIsICI+IiAuICRmaWxlQmFzZSAuICIuaCIgb3IgZGllOworbXkgJGdjYyA9
ICIiOworaWYgKCRFTlZ7Q0N9KSB7CisgICAgJGdjYyA9ICRFTlZ7Q0N9OworfSBlbHNpZiAoKCRD
b25maWc6OkNvbmZpZ3snb3NuYW1lJ30pID1+IC9zb2xhcmlzL2kpIHsKKyAgICAkZ2NjID0gIi91
c3Ivc2Z3L2Jpbi9nY2MiOworfSBlbHNlIHsKKyAgICAkZ2NjID0gIi91c3IvYmluL2djYyI7Cit9
CisKK215ICRncmFtbWFyRmlsZVBhdGggPSAiIjsKK215ICRvdXRwdXREaXIgPSAiLiI7CitteSAk
ZXh0cmFEZWZpbmVzID0gIiI7CitteSAkc3ltYm9sc1ByZWZpeCA9ICIiOworCitHZXRPcHRpb25z
KAorICAgICdncmFtbWFyPXMnID0+IFwkZ3JhbW1hckZpbGVQYXRoLAorICAgICdvdXRwdXREaXI9
cycgPT4gXCRvdXRwdXREaXIsCisgICAgJ2V4dHJhRGVmaW5lcz1zJyA9PiBcJGV4dHJhRGVmaW5l
cywKKyAgICAnc3ltYm9sc1ByZWZpeD1zJyA9PiBcJHN5bWJvbHNQcmVmaXgKKyk7CisKK2RpZSAi
TmVlZCBhIHN5bWJvbHMgcHJlZml4IHRvIGdpdmUgdG8gYmlzb24gKGUuZy4gY3NzeXksIHhwYXRo
eXkpIiB1bmxlc3MgbGVuZ3RoKCRzeW1ib2xzUHJlZml4KTsKKworbXkgKCRmaWxlbmFtZSwgJGJh
c2VQYXRoLCAkc3VmZml4KSA9IGZpbGVwYXJzZSgkZ3JhbW1hckZpbGVQYXRoLCAoIi55IiwgIi55
LmluIikpOworCitpZiAoJHN1ZmZpeCBlcSAiLnkuaW4iKSB7CisgICAgbXkgJGdyYW1tYXJGaWxl
SW5jbHVkZXNQYXRoID0gIiR7YmFzZVBhdGh9JHtmaWxlbmFtZX0ueS5pbmNsdWRlcyI7CisgICAg
bXkgJGdyYW1tYXJGaWxlT3V0UGF0aCA9IEZpbGU6OlNwZWMtPmpvaW4oJG91dHB1dERpciwgIiRm
aWxlbmFtZS55Iik7CisgICAgbXkgJGZlYXR1cmVGbGFncyA9ICItRCAiIC4gam9pbigiIC1EICIs
IHNwbGl0KCIgIiwgJGV4dHJhRGVmaW5lcykpOworCisgICAgc3lzdGVtKCRnY2MgLiAiIC1FIC1Q
IC14IGMgJGdyYW1tYXJGaWxlUGF0aCAkZmVhdHVyZUZsYWdzID4gJGdyYW1tYXJGaWxlT3V0UGF0
aC5wcm9jZXNzZWQiICk7CisKKyAgICBvcGVuIEdSQU1NQVIsICI+JGdyYW1tYXJGaWxlT3V0UGF0
aCIgb3IgZGllOworICAgIG9wZW4gSU5DTFVERVMsICI8JGdyYW1tYXJGaWxlSW5jbHVkZXNQYXRo
IiBvciBkaWU7CisgICAgb3BlbiBQUk9DRVNTRUQsICI8JGdyYW1tYXJGaWxlT3V0UGF0aC5wcm9j
ZXNzZWQiIG9yIGRpZTsKKworICAgIHdoaWxlICg8SU5DTFVERVM+KSB7CisgICAgICAgIHByaW50
IEdSQU1NQVI7CisgICAgfQorICAgIHdoaWxlICg8UFJPQ0VTU0VEPikgeworICAgICAgICBwcmlu
dCBHUkFNTUFSOworICAgIH0KKworICAgIGNsb3NlIEdSQU1NQVI7CisgICAgdW5saW5rKCIkZ3Jh
bW1hckZpbGVPdXRQYXRoLnByb2Nlc3NlZCIpOworICAgICRncmFtbWFyRmlsZVBhdGggPSAkZ3Jh
bW1hckZpbGVPdXRQYXRoOworfQorCitteSAkZmlsZUJhc2UgPSBGaWxlOjpTcGVjLT5qb2luKCRv
dXRwdXREaXIsICRmaWxlbmFtZSk7CitzeXN0ZW0oImJpc29uIC1kIC1wICRzeW1ib2xzUHJlZml4
ICRncmFtbWFyRmlsZVBhdGggLW8gJGZpbGVCYXNlLmNwcCIpOworCitvcGVuIEhFQURFUiwgIj4k
ZmlsZUJhc2UuaCIgb3IgZGllOwogcHJpbnQgSEVBREVSIDw8ICJFT0YiOwogI2lmbmRlZiBDU1NH
UkFNTUFSX0gKICNkZWZpbmUgQ1NTR1JBTU1BUl9ICiBFT0YKIAotb3BlbiBIUFAsICI8IiAuICRm
aWxlQmFzZSAuICIudGFiLmgiIG9yIGRpZTsKK29wZW4gSFBQLCAiPCRmaWxlQmFzZS5jcHAuaCIg
b3Igb3BlbiBIUFAsICI8JGZpbGVCYXNlLmhwcCIgb3IgZGllOwogd2hpbGUgKDxIUFA+KSB7CiAg
ICAgcHJpbnQgSEVBREVSOwogfQogY2xvc2UgSFBQOwogCiBwcmludCBIRUFERVIgIiNlbmRpZlxu
IjsKLQogY2xvc2UgSEVBREVSOwogCi11bmxpbmsoJGZpbGVCYXNlIC4gIi50YWIuaCIpOwotCi1v
cGVuIENQUCwgIj4iIC4gJGZpbGVCYXNlIC4gIi5jcHAiIG9yIGRpZTsKLW9wZW4gR0VOU1JDLCAi
PCIgLiAkZmlsZUJhc2UgLiAiLnRhYi5jIiBvciBkaWU7Ci13aGlsZSAoPEdFTlNSQz4pIHsKLSAg
ICBwcmludCBDUFA7Ci19Ci1jbG9zZSBHRU5TUkM7Ci1jbG9zZSBDUFA7Cit1bmxpbmsoIiRmaWxl
QmFzZS5jcHAuaCIpOwordW5saW5rKCIkZmlsZUJhc2UuaHBwIik7CiAKLXVubGluaygkZmlsZUJh
c2UgLiAiLnRhYi5jIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNt
YWtlIGIvU291cmNlL2NtYWtlL1dlYktpdE1hY3Jvcy5jbWFrZQppbmRleCBlZDhlYjVkMzIwZjIz
ZGQ4ZGY4NGJiNzRlNmQ3ZTI5ZjU1OTA0NWVmLi5hMTBjZTU1ZjA2M2FmN2QyNGVlOWRjZjc4MmVi
OTBlZDY4OWQ1NmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtl
CisrKyBiL1NvdXJjZS9jbWFrZS9XZWJLaXRNYWNyb3MuY21ha2UKQEAgLTE0OCwxMSArMTQ4LDEy
IEBAIE1BQ1JPIChHRU5FUkFURV9IQVNIX0xVVCBfaW5wdXQgX291dHB1dCkKIEVORE1BQ1JPICgp
CiAKIAotTUFDUk8gKEdFTkVSQVRFX0dSQU1NQVIgX3ByZWZpeCBfaW5wdXQgX291dHB1dF9oZWFk
ZXIgX291dHB1dF9zb3VyY2UpCitNQUNSTyAoR0VORVJBVEVfR1JBTU1BUiBfcHJlZml4IF9pbnB1
dCBfb3V0cHV0X2hlYWRlciBfb3V0cHV0X3NvdXJjZSBfb3RoZXJfZGVwZW5kZW5jaWVzIF9mZWF0
dXJlcykKICAgICBBRERfQ1VTVE9NX0NPTU1BTkQoCiAgICAgICAgIE9VVFBVVCAke19vdXRwdXRf
aGVhZGVyfSAke19vdXRwdXRfc291cmNlfQogICAgICAgICBNQUlOX0RFUEVOREVOQ1kgJHtfaW5w
dXR9Ci0gICAgICAgIENPTU1BTkQgJHtCSVNPTl9FWEVDVVRBQkxFfSAtcCAke19wcmVmaXh9ICR7
X2lucHV0fSAtbyAke19vdXRwdXRfc291cmNlfSAtLWRlZmluZXM9JHtfb3V0cHV0X2hlYWRlcn0K
KyAgICAgICAgREVQRU5EUyAke19pbnB1dH0gJHtfb3RoZXJfZGVwZW5kZW5jaWVzfQorICAgICAg
ICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke1dFQkNPUkVfRElSfS9jc3MvbWFrZWdyYW1t
YXIucGwgLS1ncmFtbWFyICR7X2lucHV0fSAtLW91dHB1dERpciAke0RFUklWRURfU09VUkNFU19X
RUJDT1JFX0RJUn0gLS1leHRyYURlZmluZXMgIiR7X2ZlYXR1cmVzfSIgLS1zeW1ib2xzUHJlZml4
ICR7X3ByZWZpeH0KICAgICAgICAgVkVSQkFUSU0pCiBFTkRNQUNSTyAoKQogCmRpZmYgLS1naXQg
YS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggYjFiN2NlYWQ4Yzk4MGQxZDFkZTAyZTg0OTU2
OGZjNjE5NDI0ZmRiOS4uOWVjZmZjODMxMDc0MzQ3MjVkYzA1NGU3MzNmMjE5ZTVkZDBjNTEzYyAx
MDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDEyLTEwLTA5ICBQYWJsbyBGbG91cmV0ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KKworICAgICAg
ICBQcmUtcHJvY2VzcyBDU1NHcmFtbWFyLnkgYmVmb3JlIHJ1bm5pbmcgdGhyb3VnaCBiaXNvbi4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MjkwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2Uv
Y21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlOgorICAgICAgICAgICAgVXNlIFdlYkNvcmUvY3NzL21h
a2VncmFtbWFyLnBsIHRvIGdlbmVyYXRlIGJpc29uIGdyYW1tYXIgZmlsZXMuCisKIDIwMTItMTAt
MDkgIFNpbW9uIFBlbmEgIDxzcGVuYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEFkZCBz
dXBwb3J0IGZvciBydW5uaW5nIEphdmFTY3JpcHQgZnJvbSBHUmVzb3VyY2VzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168471</attachid>
            <date>2012-10-12 13:34:09 -0700</date>
            <delta_ts>2012-10-12 13:53:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94290-20121012133304.patch</filename>
            <type>text/plain</type>
            <size>115882</size>
            <attacher name="Pablo Flouret">pf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwOTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzgyZDhjMDIxZWZkMGYy
NWIxYWEyYzkxMjRkYzRjOGVhMDVkZWI1NC4uYzQ3NWJmNjY0ZmIzZDllYzQ3NmQ5NWM4ZmY0N2Uz
MGI2MzRjMGU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTEwLTA5ICBQYWJs
byBGbG91cmV0ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBQcmUtcHJvY2VzcyBD
U1NHcmFtbWFyLnkgYmVmb3JlIHJ1bm5pbmcgdGhyb3VnaCBiaXNvbi4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MjkwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUnVubmluZyBDU1NHcmFtbWFyLnkgdGhy
b3VnaCBhIHByZXByb2Nlc3NvciBhbGxvd3MgdGhlIHVzZSBvZiBmZWF0dXJlCisgICAgICAgIGRl
ZmluZXMgaW4gYWxsIHBsYWNlcyBvZiB0aGUgeWFjYyBmaWxlIChpLmUuIG5vdCBqdXN0IGluIEMg
YmxvY2tzKS4KKyAgICAgICAgTW9zdGx5IHVzZWZ1bCB0byBiZSBhYmxlIHRvIGtlZXAgZXZlcnkg
cGFydCBvZiBhIGZlYXR1cmUgdW5kZXIgZmVhdHVyZQorICAgICAgICBmbGFncyBmb3Igc2VsZi1k
b2N1bWVudGluZyBwdXJwb3Nlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIENTU0dyYW1tYXIu
eSBzaG91bGQgYmUgZ2VuZXJhdGVkIGNvcnJlY3RseSBhbmQgZXZlcnl0aGluZworICAgICAgICBz
aG91bGQga2VlcCB3b3JraW5nIGFzIGJlZm9yZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMucHJpOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAgICAgTW9kaWZ5IGJ1
aWxkIHN5c3RlbXMgdG8gdXNlIG1ha2VncmFtbWFyLnBsIHRvIGdlbmVyYXRlIHRoZSAueSBmaWxl
cworICAgICAgICAgICAgYW5kIHJ1biB0aG9zZSB0aHJvdWdoIGJpc29uLgorCisgICAgICAgICog
V2ViQ29yZS5neXAvV2ViQ29yZS5neXA6CisgICAgICAgICAgICBBZGQgYSBuZXcgYWN0aW9uIHRv
IHByZXByb2Nlc3MgdGhlIENTU0dyYW1tYXIueS5pbiBmaWxlIGJlZm9yZSB0aGUKKyAgICAgICAg
ICAgIGJpc29uIHJ1bGUgaXMgcnVuLgorCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAgICAgQWRkIHRoZSBuZXcgLnkuaW4gLyAueS5pbmNsdWRlcyBmaWxlcy4KKworICAg
ICAgICAqIGNzcy9DU1NHcmFtbWFyLnkuaW46IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhbW1hci55LgorICAgICAgICAgICAgQWxzbyBtb3ZlZCB0aGUgdG9wIGRlY2xhcmF0
aW9ucyBzZWN0aW9uIHRoYXQgaGFzIGluY2x1ZGVzLCBkZWZpbmVzLAorICAgICAgICAgICAgZXRj
LiB0byBpdHMgb3duIGZpbGUuIFRoZXNlIHNob3VsZG4ndCBiZSB0b3VjaGVkIGJ5IHRoZSBmaXJz
dAorICAgICAgICAgICAgcGFzcyBvZiB0aGUgcHJlcHJvY2Vzc29yLiBBbmQgY2hhbmdlZCB0aGUg
ZXhpc3RpbmcgRU5BQkxFKEZFQVRVUkUpCisgICAgICAgICAgICBpZmRlZnMgdG8gRU5BQkxFX0ZF
QVRVUkUgc2luY2UgdGhlIEVOQUJMRSgpIG1hY3JvIGlzIG5vdCBhdmFpbGFibGUKKyAgICAgICAg
ICAgIHlldC4KKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55LmluY2x1ZGVzOiBBZGRlZC4KKyAg
ICAgICAgICAgIFRoZSBhZm9yZW1lbnRpb25lZCBkZWNsYXJhdGlvbnMgaGVhZGVyIHNlY3Rpb24u
IEFmdGVyIHRoZSAueS5pbiBmaWxlCisgICAgICAgICAgICBpcyBwcm9jZXNzZWQgaXQgd2lsbCBi
ZSBjb25jYXRlbmF0ZWQgd2l0aCB0aGlzIG9uZSB0byBtYWtlIHRoZQorICAgICAgICAgICAgQ1NT
R3JhbW1hci55IGZpbGUuCisKKyAgICAgICAgKiBjc3MvbWFrZWdyYW1tYXIucGw6CisgICAgICAg
ICAgICBNb2RpZnkgdGhlIHNjcmlwdCB0byBoYW5kbGUgLnkuaW4gZmlsZXMuCisKIDIwMTItMTAt
MTAgIEx1Y2lhbm8gV29sZiAgPGx1Y2lhbm8ud29sZkBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAg
IEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUxvbmdQcmVzcyBicmVha3MgY29tcGlsYXRpb24g
aWYgQ09OVEVYVF9NRU5VUyBpc24ndCBzZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggODY2NDRi
MThiZjU2ODQ1NTYwNWQyYTMwYzJkMjA3ODY5Zjk2Mjk2My4uNGRjOTU5NzVkNTNlNmRlMmI2ZTMx
ZWJkZTkwMDYwMzg2OTJiMzE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTI4NTgsMTEgKzI4
NTgsMTEgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7REVSSVZFRF9TT1VSQ0VTX1dF
QkNPUkVfRElSfS9Vc2VyQWdlbnRTdHlsZVNoZWV0c0QKIEFERF9TT1VSQ0VfV0VCQ09SRV9ERVJJ
VkVEX0RFUEVOREVOQ0lFUygke1dFQkNPUkVfRElSfS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgVXNl
ckFnZW50U3R5bGVTaGVldHNEYXRhLmNwcCBVc2VyQWdlbnRTdHlsZVNoZWV0cy5oKQogCiAKLUdF
TkVSQVRFX0dSQU1NQVIoY3NzeXkgJHtXRUJDT1JFX0RJUn0vY3NzL0NTU0dyYW1tYXIueSAke0RF
UklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vQ1NTR3JhbW1hci5oICR7REVSSVZFRF9TT1VSQ0VT
X1dFQkNPUkVfRElSfS9DU1NHcmFtbWFyLmNwcCkKK0dFTkVSQVRFX0dSQU1NQVIoY3NzeXkgJHtX
RUJDT1JFX0RJUn0vY3NzL0NTU0dyYW1tYXIueS5pbiAke0RFUklWRURfU09VUkNFU19XRUJDT1JF
X0RJUn0vQ1NTR3JhbW1hci5oICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9DU1NHcmFt
bWFyLmNwcCAiJHtGRUFUVVJFX0RFRklORVNfV0lUSF9TUEFDRV9TRVBBUkFUT1J9IikKIExJU1Qo
QVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vQ1NT
R3JhbW1hci5jcHApCiAKIAotR0VORVJBVEVfR1JBTU1BUih4cGF0aHl5ICR7V0VCQ09SRV9ESVJ9
L3htbC9YUGF0aEdyYW1tYXIueSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vWFBhdGhH
cmFtbWFyLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1hQYXRoR3JhbW1hci5jcHAp
CitHRU5FUkFURV9HUkFNTUFSKHhwYXRoeXkgJHtXRUJDT1JFX0RJUn0veG1sL1hQYXRoR3JhbW1h
ci55ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9YUGF0aEdyYW1tYXIuaCAke0RFUklW
RURfU09VUkNFU19XRUJDT1JFX0RJUn0vWFBhdGhHcmFtbWFyLmNwcCAiIikKIExJU1QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUyAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vWFBhdGhHcmFt
bWFyLmNwcCkKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBkNjkwODU2NGQw
ZDVkNzljZmNiNjYwYjRiZGEzZDRhN2ZiNjJjYTAxLi44YmE4OGYzMTg4Yjg4M2E3NWY3MDQ2MmM3
ZGRmZWNmODkwMjc0OWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTc3OSwz
MiArNzc5LDE0IEBAIGVuZGlmCiAjIC0tLS0tLS0tCiAKICMgQ1NTIGdyYW1tYXIKLSMgTk9URTog
T2xkZXIgdmVyc2lvbnMgb2YgYmlzb24gZG8gbm90IGluamVjdCBhbiBpbmNsdXNpb24gZ3VhcmQs
IHNvIHdlIGFkZCBvbmUuCi0KLUNTU0dyYW1tYXIuY3BwIDogY3NzL0NTU0dyYW1tYXIueQotCSQo
QklTT04pIC1kIC1wIGNzc3l5ICQ8IC1vICRACi0JdG91Y2ggQ1NTR3JhbW1hci5jcHAuaAotCXRv
dWNoIENTU0dyYW1tYXIuaHBwCi0JZWNobyAnI2lmbmRlZiBDU1NHcmFtbWFyX2gnID4gQ1NTR3Jh
bW1hci5oCi0JZWNobyAnI2RlZmluZSBDU1NHcmFtbWFyX2gnID4+IENTU0dyYW1tYXIuaAotCWNh
dCBDU1NHcmFtbWFyLmNwcC5oIENTU0dyYW1tYXIuaHBwID4+IENTU0dyYW1tYXIuaAotCWVjaG8g
JyNlbmRpZicgPj4gQ1NTR3JhbW1hci5oCi0Jcm0gLWYgQ1NTR3JhbW1hci5jcHAuaCBDU1NHcmFt
bWFyLmhwcAorQ1NTR3JhbW1hci5jcHAgOiBjc3MvQ1NTR3JhbW1hci55LmluCisJcGVybCAtSSAk
KFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMgJChXZWJDb3JlKS9jc3MvbWFrZWdyYW1tYXIucGwg
LS1leHRyYURlZmluZXMgIiQoRkVBVFVSRV9ERUZJTkVTKSIgLS1vdXRwdXREaXIgLiAtLWJpc29u
ICIkKEJJU09OKSIgLS1zeW1ib2xzUHJlZml4IGNzc3l5ICQ8CiAKICMgLS0tLS0tLS0KIAogIyBY
UGF0aCBncmFtbWFyCi0jIE5PVEU6IE9sZGVyIHZlcnNpb25zIG9mIGJpc29uIGRvIG5vdCBpbmpl
Y3QgYW4gaW5jbHVzaW9uIGd1YXJkLCBzbyB3ZSBhZGQgb25lLgotCiBYUGF0aEdyYW1tYXIuY3Bw
IDogeG1sL1hQYXRoR3JhbW1hci55ICQoUFJPSkVDVF9GSUxFKQotCSQoQklTT04pIC1kIC1wIHhw
YXRoeXkgJDwgLW8gJEAKLQl0b3VjaCBYUGF0aEdyYW1tYXIuY3BwLmgKLQl0b3VjaCBYUGF0aEdy
YW1tYXIuaHBwCi0JZWNobyAnI2lmbmRlZiBYUGF0aEdyYW1tYXJfaCcgPiBYUGF0aEdyYW1tYXIu
aAotCWVjaG8gJyNkZWZpbmUgWFBhdGhHcmFtbWFyX2gnID4+IFhQYXRoR3JhbW1hci5oCi0JY2F0
IFhQYXRoR3JhbW1hci5jcHAuaCBYUGF0aEdyYW1tYXIuaHBwID4+IFhQYXRoR3JhbW1hci5oCi0J
ZWNobyAnI2VuZGlmJyA+PiBYUGF0aEdyYW1tYXIuaAotCXJtIC1mIFhQYXRoR3JhbW1hci5jcHAu
aCBYUGF0aEdyYW1tYXIuaHBwCisJcGVybCAkKFdlYkNvcmUpL2Nzcy9tYWtlZ3JhbW1hci5wbCAt
LW91dHB1dERpciAuIC0tYmlzb24gIiQoQklTT04pIiAtLXN5bWJvbHNQcmVmaXggeHBhdGh5eSAk
PAogCiAjIC0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLnByaSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQppbmRleCA4NGM5ZDA3
NzcxZWQxYTE3NDU2NjcyZTI3MWUzMzFiY2E0ZTY4NThlLi44MTBhZGVkOGE1YmU0MWI5NjI5YWQy
ODAwZjVhOGZmYjcyYTFlMmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCkBAIC0yNCw3
ICsyNCw3IEBAIFNWR19OQU1FUyA9ICQkUFdEL3N2Zy9zdmd0YWdzLmluCiAKIFhMSU5LX05BTUVT
ID0gJCRQV0Qvc3ZnL3hsaW5rYXR0cnMuaW4KIAotQ1NTQklTT04gPSAkJFBXRC9jc3MvQ1NTR3Jh
bW1hci55CitDU1NCSVNPTiA9ICQkUFdEL2Nzcy9DU1NHcmFtbWFyLnkuaW4KIAogZW5hYmxlPyhY
U0xUKSB7CiAgICAgWE1MVklFV0VSX0NTUyA9ICQkUFdEL3htbC9YTUxWaWV3ZXIuY3NzCkBAIC04
MDQsNyArODA0LDcgQEAgR0VORVJBVE9SUyArPSBJbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNv
dXJjZQogY3NzYmlzb24ub3V0cHV0ID0gJHtRTUFLRV9GSUxFX0JBU0V9LmNwcAogY3NzYmlzb24u
aW5wdXQgPSBDU1NCSVNPTgogY3NzYmlzb24uc2NyaXB0ID0gJCRQV0QvY3NzL21ha2VncmFtbWFy
LnBsCi1jc3NiaXNvbi5jb21tYW5kcyA9IHBlcmwgJCRjc3NiaXNvbi5zY3JpcHQgJHtRTUFLRV9G
SUxFX05BTUV9ICR7UU1BS0VfRlVOQ19GSUxFX09VVF9QQVRIfS8ke1FNQUtFX0ZJTEVfQkFTRX0K
K2Nzc2Jpc29uLmNvbW1hbmRzID0gcGVybCAtSSAkJFBXRC9iaW5kaW5ncy9zY3JpcHRzICQkY3Nz
Ymlzb24uc2NyaXB0IC0tb3V0cHV0RGlyICR7UU1BS0VfRlVOQ19GSUxFX09VVF9QQVRIfSAtLWV4
dHJhRGVmaW5lcyBcIiQke0RFRklORVN9ICQkY29uZmlnRGVmaW5lcygpXCIgLS1wcmVwcm9jZXNz
b3IgXCIkJHtRTUFLRV9NT0N9IC1FXCIgLS1zeW1ib2xzUHJlZml4IGNzc3l5ICR7UU1BS0VfRklM
RV9OQU1FfQogY3NzYmlzb24uZGVwZW5kcyA9ICR7UU1BS0VfRklMRV9OQU1FfQogR0VORVJBVE9S
UyArPSBjc3NiaXNvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDVjZTg1OTVhMGYyMjE1Zjcz
YjYwZmZkYzEzZDVmZWY3MTExOTg5YjguLjBkYWM0M2MwNTI3ZDNmYjYyYzk2NTRiNjNmNzE5ODY5
ZjcxZTkwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0yMDAsMTggKzIwMCwxMCBAQCBmZWF0
dXJlX2RlZmluZXNfb3ZlcnJpZGVzICs9IEVOQUJMRV9NRURJQV9TVFJFQU09MAogZW5kaWYgIyBF
TkQgRU5BQkxFX01FRElBX1NUUkVBTQogCiAjIFhQYXRoIGdyYW1tYXIKLSMgTk9URTogb2xkZXIg
dmVyc2lvbnMgb2YgYmlzb24gZG8gbm90IGluamVjdCBhbiBpbmNsdXNpb24gZ3VhcmQsIHNvIHdl
IGRvIGl0CiAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvWFBhdGhHcmFtbWFyLmg6ICQoR0VOU09VUkNF
U19XRUJDT1JFKS9YUGF0aEdyYW1tYXIuY3BwCiAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvWFBhdGhH
cmFtbWFyLmNwcDogJChXZWJDb3JlKS94bWwvWFBhdGhHcmFtbWFyLnkKIAkkKEFNX1ZfR0VOKQot
CSQoQU1fVl9hdClybSAtZiAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvWFBhdGhHcmFtbWFyLmNwcC5o
ICQoR0VOU09VUkNFU19XRUJDT1JFKS9YUGF0aEdyYW1tYXIuaHBwCi0JJChBTV9WX2F0KSQoQklT
T04pIC1kIC1wIHhwYXRoeXkgJDwgLW8gJChHRU5TT1VSQ0VTX1dFQkNPUkUpL1hQYXRoR3JhbW1h
ci5jcHAKLQkkKEFNX1ZfYXQpdG91Y2ggJChHRU5TT1VSQ0VTX1dFQkNPUkUpL1hQYXRoR3JhbW1h
ci5jcHAuaCAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvWFBhdGhHcmFtbWFyLmhwcAotCSQoQU1fVl9h
dCllY2hvICcjaWZuZGVmIFhQYXRoR3JhbW1hcl9oJyA+ICQoR0VOU09VUkNFU19XRUJDT1JFKS9Y
UGF0aEdyYW1tYXIuaAotCSQoQU1fVl9hdCllY2hvICcjZGVmaW5lIFhQYXRoR3JhbW1hcl9oJyA+
PiAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvWFBhdGhHcmFtbWFyLmgKLQkkKEFNX1ZfYXQpY2F0ICQo
R0VOU09VUkNFU19XRUJDT1JFKS9YUGF0aEdyYW1tYXIuY3BwLmggJChHRU5TT1VSQ0VTX1dFQkNP
UkUpL1hQYXRoR3JhbW1hci5ocHAgPj4gJChHRU5TT1VSQ0VTX1dFQkNPUkUpL1hQYXRoR3JhbW1h
ci5oCi0JJChBTV9WX2F0KWVjaG8gJyNlbmRpZicgPj4gJChHRU5TT1VSQ0VTX1dFQkNPUkUpL1hQ
YXRoR3JhbW1hci5oCi0JJChBTV9WX2F0KXJtIC1mICQoR0VOU09VUkNFU19XRUJDT1JFKS9YUGF0
aEdyYW1tYXIuY3BwLmggJChHRU5TT1VSQ0VTX1dFQkNPUkUpL1hQYXRoR3JhbW1hci5ocHAKKwkk
KEFNX1ZfYXQpcGVybCAkKFdlYkNvcmUpL2Nzcy9tYWtlZ3JhbW1hci5wbCAtLW91dHB1dERpciAk
KEdFTlNPVVJDRVNfV0VCQ09SRSkgLS1iaXNvbiAiJChCSVNPTikiIC0tc3ltYm9sc1ByZWZpeCB4
cGF0aHl5ICQ8CiAKICMgLS0tLQogIyBYU0xUIFN1cHBvcnQKQEAgLTQxOCwxOCArNDEwLDEwIEBA
IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29sb3JEYXRhLmNwcDogJChXZWJDb3JlKS9wbGF0Zm9y
bS9Db2xvckRhdGEuZ3BlcmYgJChXZWJDCiAKICMgQ1NTIGdyYW1tYXIKIAotIyBOT1RFOiBvbGRl
ciB2ZXJzaW9ucyBvZiBiaXNvbiBkbyBub3QgaW5qZWN0IGFuIGluY2x1c2lvbiBndWFyZCwgc28g
d2UgZG8gaXQKIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTR3JhbW1hci5oOiAkKEdFTlNPVVJD
RVNfV0VCQ09SRSkvQ1NTR3JhbW1hci5jcHAKLURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTR3Jh
bW1hci5jcHA6ICQoV2ViQ29yZSkvY3NzL0NTU0dyYW1tYXIueQorRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9DU1NHcmFtbWFyLmNwcDogJChXZWJDb3JlKS9jc3MvQ1NTR3JhbW1hci55LmluCiAJJChB
TV9WX0dFTikKLQkkKEFNX1ZfYXQpcm0gLWYgJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0NTU0dyYW1t
YXIuY3BwLmggJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0NTU0dyYW1tYXIuaHBwCi0JJChBTV9WX2F0
KSQoQklTT04pIC1kIC1wIGNzc3l5ICQ8IC1vICQoR0VOU09VUkNFU19XRUJDT1JFKS9DU1NHcmFt
bWFyLmNwcAotCSQoQU1fVl9hdCl0b3VjaCAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvQ1NTR3JhbW1h
ci5jcHAuaCAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvQ1NTR3JhbW1hci5ocHAKLQkkKEFNX1ZfYXQp
ZWNobyAnI2lmbmRlZiBDU1NHcmFtbWFyX2gnID4gJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0NTU0dy
YW1tYXIuaAotCSQoQU1fVl9hdCllY2hvICcjZGVmaW5lIENTU0dyYW1tYXJfaCcgPj4gJChHRU5T
T1VSQ0VTX1dFQkNPUkUpL0NTU0dyYW1tYXIuaAotCSQoQU1fVl9hdCljYXQgJChHRU5TT1VSQ0VT
X1dFQkNPUkUpL0NTU0dyYW1tYXIuY3BwLmggJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0NTU0dyYW1t
YXIuaHBwID4+ICQoR0VOU09VUkNFU19XRUJDT1JFKS9DU1NHcmFtbWFyLmgKLQkkKEFNX1ZfYXQp
ZWNobyAnI2VuZGlmJyA+PiAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvQ1NTR3JhbW1hci5oCi0JJChB
TV9WX2F0KXJtIC1mICQoR0VOU09VUkNFU19XRUJDT1JFKS9DU1NHcmFtbWFyLmNwcC5oICQoR0VO
U09VUkNFU19XRUJDT1JFKS9DU1NHcmFtbWFyLmhwcAorCSQoQU1fVl9hdClwZXJsIC1JICQoV2Vi
Q29yZSkvYmluZGluZ3Mvc2NyaXB0cyAkKFdlYkNvcmUpL2Nzcy9tYWtlZ3JhbW1hci5wbCAtLWV4
dHJhRGVmaW5lcyAiJChmZWF0dXJlX2RlZmluZXMpIiAtLW91dHB1dERpciAkKEdFTlNPVVJDRVNf
V0VCQ09SRSkgLS1iaXNvbiAiJChCSVNPTikiIC0tc3ltYm9sc1ByZWZpeCBjc3N5eSAkPAogCiAj
IHVzZXIgYWdlbnQgc3R5bGUgc2hlZXRzCiBVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUyA9IFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKaW5kZXggZWVlYzVlZmIzNTY1ZWI0YzVm
ZWNiNjkwMDNkMmFiZGNmZjU1YTJjMi4uMjk2YTJiNWFmMjY5ZjM2YzBkYWJkYTE0MzNhNTMwMDQ2
YTIxMTZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5n
eXAKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTU4NSw3
ICs1ODUsNyBAQAogICAgICAgfSwKICAgICAgICdzb3VyY2VzJzogWwogICAgICAgICAjIGJpc29u
IHJ1bGUKLSAgICAgICAgJy4uL2Nzcy9DU1NHcmFtbWFyLnknLAorICAgICAgICAnPChTSEFSRURf
SU5URVJNRURJQVRFX0RJUikvd2Via2l0L0NTU0dyYW1tYXIueScsCiAgICAgICAgICcuLi94bWwv
WFBhdGhHcmFtbWFyLnknLAogCiAgICAgICAgICMgZ3BlcmYgcnVsZQpAQCAtMTA3Niw2ICsxMDc2
LDI5IEBACiAgICAgICAgICAgICAnPEAoZGVyaXZlZF9zb3VyY2VzX2FnZ3JlZ2F0ZV9maWxlcykn
LAogICAgICAgICAgIF0sCiAgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAnYWN0aW9u
X25hbWUnOiAncHJlcHJvY2Vzc19ncmFtbWFyJywKKyAgICAgICAgICAnaW5wdXRzJzogWworICAg
ICAgICAgICAgJy4uL2Nzcy9DU1NHcmFtbWFyLnkuaW4nLAorICAgICAgICAgICAgJy4uL2Nzcy9D
U1NHcmFtbWFyLnkuaW5jbHVkZXMnLAorICAgICAgICAgIF0sCisgICAgICAgICAgJ291dHB1dHMn
OiBbCisgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0L0NTU0dy
YW1tYXIueScsCisgICAgICAgICAgXSwKKyAgICAgICAgICAnYWN0aW9uJzogWworICAgICAgICAg
ICAgJzwocGVybF9leGUpJywKKyAgICAgICAgICAgICctSScsCisgICAgICAgICAgICAnLi4vYmlu
ZGluZ3Mvc2NyaXB0cycsCisgICAgICAgICAgICAnLi4vY3NzL21ha2VncmFtbWFyLnBsJywKKyAg
ICAgICAgICAgICctLW91dHB1dERpcicsCisgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJ
QVRFX0RJUikvd2Via2l0LycsCisgICAgICAgICAgICAnLS1leHRyYURlZmluZXMnLAorICAgICAg
ICAgICAgJzwoZmVhdHVyZV9kZWZpbmVzKScsCisgICAgICAgICAgICAnLS1wcmVwcm9jZXNzT25s
eScsCisgICAgICAgICAgICAnPEAocHJlcHJvY2Vzc29yKScsCisgICAgICAgICAgICAnPEAoX2lu
cHV0cyknLAorICAgICAgICAgIF0sCisgICAgICAgIH0sCiAgICAgICBdLAogICAgICAgJ3J1bGVz
JzogWwogICAgICAgICAjIFJ1bGVzIHRvIGJ1aWxkIGRlcml2ZWQgc291cmNlcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNTNmMzVhN2UxNjNl
MTE3ZDZiZTFmN2UzMTExMTQ3ZDBjMjc5MDY1Zi4uNzQ1MDJkN2U4NjliM2FhYmYwYThhYjFhYWE3
YTA1M2RiNjk5OWJlMSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKQEAgLTM1ODcxLDcgKzM1ODcxLDExIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJ
PEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NHcmFtbWFyLnkiCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxjc3NcQ1NTR3JhbW1hci55LmluIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTR3JhbW1hci55LmluY2x1ZGVzIgogCQkJ
CT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzc0MGFkNTM0MjNiNmQyN2VmYjcxY2E1ZjI5
ZTM1NzQ4YmVkZjhmNC4uNWMyOTI1ZTA1M2EzY2ZiMmMxYjhmM2NmN2Y4OGRiYmU1NTgxYmVmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTMwMjcsNyArMTMwMjcsNiBAQAogCQlCQ0U5M0Y0NjE1MTdDNkQ1MDA4Q0NGNzQgLyog
UmVuZGVyUmVnaW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbmRlclJlZ2lvblNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRUE0
NzdDMDk3Q0FBQzgwMDk0QzlFNCAvKiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRUE0NzdEMDk3Q0FB
QzgwMDk0QzlFNCAvKiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQ0VBNDc3RTA5N0NBQUM4MDA5NEM5RTQgLyogQ1NT
R3JhbW1hci55ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUueWFjYzsgcGF0aCA9IENTU0dyYW1tYXIu
eTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFQTQ3ODkwOTdDQUFDODAwOTRDOUU0
IC8qIENTU1Byb3BlcnR5TmFtZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENTU1Byb3Bl
cnR5TmFtZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRUE0NzhDMDk3Q0FB
QzgwMDk0QzlFNCAvKiBDU1NWYWx1ZUtleXdvcmRzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBDU1NWYWx1ZUtleXdvcmRzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0VB
NDgxMzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM3NTAsNiArMTM3NDksOCBAQAogCQlG
QkQ2QUY4NTE1RUYyMUQ0MDA4QjcxMTAgLyogQmFzaWNTaGFwZUZ1bmN0aW9ucy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYXNpY1NoYXBlRnVuY3Rpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZCRDZBRjg2MTVFRjIxRDQwMDhCNzExMCAvKiBDU1NCYXNp
Y1NoYXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NCYXNp
Y1NoYXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZCRDZBRjg3MTVFRjIx
RDQwMDhCNzExMCAvKiBDU1NCYXNpY1NoYXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDU1NCYXNpY1NoYXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
Q0VCQ0Q3MTE2MjNBNzkxMDAyOTk2NUUgLyogQ1NTR3JhbW1hci55LmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS55YWNjOyBwYXRoID0gQ1NTR3JhbW1hci55LmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGQ0VCQ0Q3MjE2MjNBNzkxMDAyOTk2NUUgLyogQ1NTR3JhbW1hci55LmluY2x1
ZGVzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS55YWNjOyBwYXRoID0gQ1NTR3JhbW1hci55LmluY2x1
ZGVzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDAwRDdBMjE0QTNGNjE5MDA3MzQw
MTEgLyogU2luY1Jlc2FtcGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTaW5jUmVzYW1wbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQw
MEQ3QTMxNEEzRjYxOTAwNzM0MDExIC8qIFNpbmNSZXNhbXBsZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2luY1Jlc2FtcGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRDA2REZBMzEzNEE0REVGMDA2RjVEN0QgLyogRGVmYXVsdEF1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MTExNCw3ICsyMTExNSw4IEBACiAJCQkJQkMwMkE2M0IwRTA5QTlDRjAwNEI2RDJCIC8qIENTU0Z1
bmN0aW9uVmFsdWUuaCAqLywKIAkJCQlCQzIzRTRFMDBEQUFDRTBGMDA5RkRDOTEgLyogQ1NTR3Jh
ZGllbnRWYWx1ZS5jcHAgKi8sCiAJCQkJQkM1M0M2OTEwREE1OTExNDAwMjFFQjVEIC8qIENTU0dy
YWRpZW50VmFsdWUuaCAqLywKLQkJCQlCQ0VBNDc3RTA5N0NBQUM4MDA5NEM5RTQgLyogQ1NTR3Jh
bW1hci55ICovLAorCQkJCUZDRUJDRDcxMTYyM0E3OTEwMDI5OTY1RSAvKiBDU1NHcmFtbWFyLnku
aW4gKi8sCisJCQkJRkNFQkNENzIxNjIzQTc5MTAwMjk5NjVFIC8qIENTU0dyYW1tYXIueS5pbmNs
dWRlcyAqLywKIAkJCQlCQzc3MkIzNjBDNEVBOTFFMDA4MzI4NUYgLyogQ1NTSGVscGVyLmggKi8s
CiAJCQkJQkMyM0U3NkIwREFFODhBOTAwOUZEQzkxIC8qIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUu
Y3BwICovLAogCQkJCUJDMjNFRTkxMERBRUQyQkMwMDlGREM5MSAvKiBDU1NJbWFnZUdlbmVyYXRv
clZhbHVlLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMmI0Mjc0YTliMzJhMzVhMjk2Njg4ZjY1YjNiMzhhZjI0YmEzYjQwZC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhbW1hci55CisrKyAvZGV2L251bGwKQEAgLTEsMTc2NCArMCwwIEBACi0lewotCi0v
KgotICogIENvcHlyaWdodCAoQykgMjAwMi0yMDAzIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcp
Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqICBDb3B5cmlnaHQgKEMpIDIw
MDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQotICogIENvcHlyaWdodCAoQykg
MjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgotICoKLSAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwot
ICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAg
VVNBCi0gKgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgIkNTU1BhcnNl
ci5oIgotI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIKLSNpbmNsdWRlICJDU1NQcmltaXRpdmVW
YWx1ZS5oIgotI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKLSNpbmNsdWRlICJDU1NTZWxl
Y3Rvci5oIgotI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgotI2luY2x1ZGUgIkRvY3VtZW50
LmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiTWVkaWFMaXN0LmgiCi0jaW5j
bHVkZSAiTWVkaWFRdWVyeUV4cC5oIgotI2luY2x1ZGUgIlN0eWxlUnVsZS5oIgotI2luY2x1ZGUg
IlN0eWxlU2hlZXRDb250ZW50cy5oIgotI2luY2x1ZGUgIldlYktpdENTU0tleWZyYW1lUnVsZS5o
IgotI2luY2x1ZGUgIldlYktpdENTU0tleWZyYW1lc1J1bGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotCi11
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7Ci0KLSNk
ZWZpbmUgWVlNQUxMT0MgZmFzdE1hbGxvYwotI2RlZmluZSBZWUZSRUUgZmFzdEZyZWUKLQotI2Rl
ZmluZSBZWUVOQUJMRV9OTFMgMAotI2RlZmluZSBZWUxUWVBFX0lTX1RSSVZJQUwgMQotI2RlZmlu
ZSBZWU1BWERFUFRIIDEwMDAwCi0jZGVmaW5lIFlZREVCVUcgMAotCi0lfQotCi0lcHVyZV9wYXJz
ZXIKLQotJXBhcnNlLXBhcmFtIHsgQ1NTUGFyc2VyKiBwYXJzZXIgfQotJWxleC1wYXJhbSB7IENT
U1BhcnNlciogcGFyc2VyIH0KLQotJXVuaW9uIHsKLSAgICBib29sIGJvb2xlYW47Ci0gICAgY2hh
ciBjaGFyYWN0ZXI7Ci0gICAgaW50IGludGVnZXI7Ci0gICAgZG91YmxlIG51bWJlcjsKLSAgICBD
U1NQYXJzZXJTdHJpbmcgc3RyaW5nOwotCi0gICAgU3R5bGVSdWxlQmFzZSogcnVsZTsKLSAgICBW
ZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+ID4qIHJ1bGVMaXN0OwotICAgIENTU1BhcnNlclNl
bGVjdG9yKiBzZWxlY3RvcjsKLSAgICBDU1NTZWxlY3RvclZlY3Rvciogc2VsZWN0b3JMaXN0Owot
ICAgIENTU1NlbGVjdG9yOjpNYXJnaW5Cb3hUeXBlIG1hcmdpbkJveDsKLSAgICBDU1NTZWxlY3Rv
cjo6UmVsYXRpb24gcmVsYXRpb247Ci0gICAgTWVkaWFRdWVyeVNldCogbWVkaWFMaXN0OwotICAg
IE1lZGlhUXVlcnkqIG1lZGlhUXVlcnk7Ci0gICAgTWVkaWFRdWVyeTo6UmVzdHJpY3RvciBtZWRp
YVF1ZXJ5UmVzdHJpY3RvcjsKLSAgICBNZWRpYVF1ZXJ5RXhwKiBtZWRpYVF1ZXJ5RXhwOwotICAg
IENTU1BhcnNlclZhbHVlIHZhbHVlOwotICAgIENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVMaXN0
OwotICAgIFZlY3RvcjxPd25QdHI8TWVkaWFRdWVyeUV4cD4gPiogbWVkaWFRdWVyeUV4cExpc3Q7
Ci0gICAgU3R5bGVLZXlmcmFtZSoga2V5ZnJhbWU7Ci0gICAgVmVjdG9yPFJlZlB0cjxTdHlsZUtl
eWZyYW1lPiA+KiBrZXlmcmFtZVJ1bGVMaXN0OwotICAgIGZsb2F0IHZhbDsKLSAgICBDU1NQcm9w
ZXJ0eUlEIGlkOwotfQotCi0lewotCi0jaWYgWVlERUJVRyA+IDAKLSNkZWZpbmUgWVlQUklOVChG
aWxlLFR5cGUsVmFsdWUpIHByaW50X3Rva2VuX3ZhbHVlKEZpbGUsVHlwZSxWYWx1ZSkKLXN0YXRp
YyB2b2lkIHByaW50X3Rva2VuX3ZhbHVlKEZJTEUgKiB5eW91dHB1dCwgaW50IHl5dHlwZSwgWVlT
VFlQRSBjb25zdCAmeXl2YWx1ZSk7Ci0jZW5kaWYKLQotc3RhdGljIGlubGluZSBpbnQgY3NzeXll
cnJvcih2b2lkKiwgY29uc3QgY2hhciopCi17Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLSV9Ci0KLSVl
eHBlY3QgNjMKLQotJW5vbmFzc29jIExPV0VTVF9QUkVDCi0KLSVsZWZ0IFVOSU1QT1JUQU5UX1RP
SwotCi0ldG9rZW4gV0hJVEVTUEFDRSBTR01MX0NECi0ldG9rZW4gVE9LRU5fRU9GIDAKLQotJXRv
a2VuIElOQ0xVREVTCi0ldG9rZW4gREFTSE1BVENICi0ldG9rZW4gQkVHSU5TV0lUSAotJXRva2Vu
IEVORFNXSVRICi0ldG9rZW4gQ09OVEFJTlMKLQotJXRva2VuIDxzdHJpbmc+IFNUUklORwotJXJp
Z2h0IDxzdHJpbmc+IElERU5UCi0ldG9rZW4gPHN0cmluZz4gTlRICi0KLSVub25hc3NvYyA8c3Ry
aW5nPiBIRVgKLSVub25hc3NvYyA8c3RyaW5nPiBJRFNFTAotJW5vbmFzc29jICc6JwotJW5vbmFz
c29jICcuJwotJW5vbmFzc29jICdbJwotJW5vbmFzc29jIDxzdHJpbmc+ICcqJwotJW5vbmFzc29j
IGVycm9yCi0lbGVmdCAnfCcKLQotJXRva2VuIElNUE9SVF9TWU0KLSV0b2tlbiBQQUdFX1NZTQot
JXRva2VuIE1FRElBX1NZTQotJXRva2VuIEZPTlRfRkFDRV9TWU0KLSV0b2tlbiBDSEFSU0VUX1NZ
TQotJXRva2VuIE5BTUVTUEFDRV9TWU0KLSV0b2tlbiBWQVJGVU5DVElPTgotJXRva2VuIFdFQktJ
VF9SVUxFX1NZTQotJXRva2VuIFdFQktJVF9ERUNMU19TWU0KLSV0b2tlbiBXRUJLSVRfS0VZRlJB
TUVfUlVMRV9TWU0KLSV0b2tlbiBXRUJLSVRfS0VZRlJBTUVTX1NZTQotJXRva2VuIFdFQktJVF9W
QUxVRV9TWU0KLSV0b2tlbiBXRUJLSVRfTUVESUFRVUVSWV9TWU0KLSV0b2tlbiBXRUJLSVRfU0VM
RUNUT1JfU1lNCi0ldG9rZW4gV0VCS0lUX1JFR0lPTl9SVUxFX1NZTQotJXRva2VuIDxtYXJnaW5C
b3g+IFRPUExFRlRDT1JORVJfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gVE9QTEVGVF9TWU0KLSV0
b2tlbiA8bWFyZ2luQm94PiBUT1BDRU5URVJfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gVE9QUklH
SFRfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gVE9QUklHSFRDT1JORVJfU1lNCi0ldG9rZW4gPG1h
cmdpbkJveD4gQk9UVE9NTEVGVENPUk5FUl9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBCT1RUT01M
RUZUX1NZTQotJXRva2VuIDxtYXJnaW5Cb3g+IEJPVFRPTUNFTlRFUl9TWU0KLSV0b2tlbiA8bWFy
Z2luQm94PiBCT1RUT01SSUdIVF9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBCT1RUT01SSUdIVENP
Uk5FUl9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBMRUZUVE9QX1NZTQotJXRva2VuIDxtYXJnaW5C
b3g+IExFRlRNSURETEVfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gTEVGVEJPVFRPTV9TWU0KLSV0
b2tlbiA8bWFyZ2luQm94PiBSSUdIVFRPUF9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBSSUdIVE1J
RERMRV9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBSSUdIVEJPVFRPTV9TWU0KLQotJXRva2VuIEFU
S0VZV09SRAotCi0ldG9rZW4gSU1QT1JUQU5UX1NZTQotJXRva2VuIE1FRElBX09OTFkKLSV0b2tl
biBNRURJQV9OT1QKLSV0b2tlbiBNRURJQV9BTkQKLQotJXRva2VuIDxudW1iZXI+IFJFTVMKLSV0
b2tlbiA8bnVtYmVyPiBRRU1TCi0ldG9rZW4gPG51bWJlcj4gRU1TCi0ldG9rZW4gPG51bWJlcj4g
RVhTCi0ldG9rZW4gPG51bWJlcj4gUFhTCi0ldG9rZW4gPG51bWJlcj4gQ01TCi0ldG9rZW4gPG51
bWJlcj4gTU1TCi0ldG9rZW4gPG51bWJlcj4gSU5TCi0ldG9rZW4gPG51bWJlcj4gUFRTCi0ldG9r
ZW4gPG51bWJlcj4gUENTCi0ldG9rZW4gPG51bWJlcj4gREVHUwotJXRva2VuIDxudW1iZXI+IFJB
RFMKLSV0b2tlbiA8bnVtYmVyPiBHUkFEUwotJXRva2VuIDxudW1iZXI+IFRVUk5TCi0ldG9rZW4g
PG51bWJlcj4gTVNFQ1MKLSV0b2tlbiA8bnVtYmVyPiBTRUNTCi0ldG9rZW4gPG51bWJlcj4gSEVS
VFoKLSV0b2tlbiA8bnVtYmVyPiBLSEVSVFoKLSV0b2tlbiA8c3RyaW5nPiBESU1FTgotJXRva2Vu
IDxzdHJpbmc+IElOVkFMSURESU1FTgotJXRva2VuIDxudW1iZXI+IFBFUkNFTlRBR0UKLSV0b2tl
biA8bnVtYmVyPiBGTE9BVFRPS0VOCi0ldG9rZW4gPG51bWJlcj4gSU5URUdFUgotJXRva2VuIDxu
dW1iZXI+IFZXCi0ldG9rZW4gPG51bWJlcj4gVkgKLSV0b2tlbiA8bnVtYmVyPiBWTUlOCi0ldG9r
ZW4gPG51bWJlcj4gRFBQWAotJXRva2VuIDxudW1iZXI+IERQSQotJXRva2VuIDxudW1iZXI+IERQ
Q00KLQotJXRva2VuIDxzdHJpbmc+IFVSSQotJXRva2VuIDxzdHJpbmc+IEZVTkNUSU9OCi0ldG9r
ZW4gPHN0cmluZz4gQU5ZRlVOQ1RJT04KLSV0b2tlbiA8c3RyaW5nPiBOT1RGVU5DVElPTgotJXRv
a2VuIDxzdHJpbmc+IENBTENGVU5DVElPTgotJXRva2VuIDxzdHJpbmc+IE1JTkZVTkNUSU9OCi0l
dG9rZW4gPHN0cmluZz4gTUFYRlVOQ1RJT04KLSV0b2tlbiA8c3RyaW5nPiBWQVJfREVGSU5JVElP
TgotCi0ldG9rZW4gPHN0cmluZz4gVU5JQ09ERVJBTkdFCi0KLSV0eXBlIDxyZWxhdGlvbj4gY29t
YmluYXRvcgotCi0ldHlwZSA8cnVsZT4gY2hhcnNldAotJXR5cGUgPHJ1bGU+IGlnbm9yZWRfY2hh
cnNldAotJXR5cGUgPHJ1bGU+IHJ1bGVzZXQKLSV0eXBlIDxydWxlPiBtZWRpYQotJXR5cGUgPHJ1
bGU+IGltcG9ydAotJXR5cGUgPHJ1bGU+IG5hbWVzcGFjZQotJXR5cGUgPHJ1bGU+IHBhZ2UKLSV0
eXBlIDxydWxlPiBtYXJnaW5fYm94Ci0ldHlwZSA8cnVsZT4gZm9udF9mYWNlCi0ldHlwZSA8cnVs
ZT4ga2V5ZnJhbWVzCi0ldHlwZSA8cnVsZT4gaW52YWxpZF9ydWxlCi0ldHlwZSA8cnVsZT4gc2F2
ZV9ibG9jawotJXR5cGUgPHJ1bGU+IGludmFsaWRfYXQKLSV0eXBlIDxydWxlPiBydWxlCi0ldHlw
ZSA8cnVsZT4gdmFsaWRfcnVsZQotJXR5cGUgPHJ1bGVMaXN0PiBibG9ja19ydWxlX2xpc3QgCi0l
dHlwZSA8cnVsZT4gYmxvY2tfcnVsZQotJXR5cGUgPHJ1bGU+IGJsb2NrX3ZhbGlkX3J1bGUKLSV0
eXBlIDxydWxlPiByZWdpb24KLQotJXR5cGUgPHN0cmluZz4gbWF5YmVfbnNfcHJlZml4Ci0KLSV0
eXBlIDxzdHJpbmc+IG5hbWVzcGFjZV9zZWxlY3RvcgotCi0ldHlwZSA8c3RyaW5nPiBzdHJpbmdf
b3JfdXJpCi0ldHlwZSA8c3RyaW5nPiBpZGVudF9vcl9zdHJpbmcKLSV0eXBlIDxzdHJpbmc+IG1l
ZGl1bQotJXR5cGUgPG1hcmdpbkJveD4gbWFyZ2luX3N5bQotCi0ldHlwZSA8c3RyaW5nPiBtZWRp
YV9mZWF0dXJlCi0ldHlwZSA8bWVkaWFMaXN0PiBtZWRpYV9saXN0Ci0ldHlwZSA8bWVkaWFMaXN0
PiBtYXliZV9tZWRpYV9saXN0Ci0ldHlwZSA8bWVkaWFRdWVyeT4gbWVkaWFfcXVlcnkKLSV0eXBl
IDxtZWRpYVF1ZXJ5UmVzdHJpY3Rvcj4gbWF5YmVfbWVkaWFfcmVzdHJpY3RvcgotJXR5cGUgPHZh
bHVlTGlzdD4gbWF5YmVfbWVkaWFfdmFsdWUKLSV0eXBlIDxtZWRpYVF1ZXJ5RXhwPiBtZWRpYV9x
dWVyeV9leHAKLSV0eXBlIDxtZWRpYVF1ZXJ5RXhwTGlzdD4gbWVkaWFfcXVlcnlfZXhwX2xpc3QK
LSV0eXBlIDxtZWRpYVF1ZXJ5RXhwTGlzdD4gbWF5YmVfYW5kX21lZGlhX3F1ZXJ5X2V4cF9saXN0
Ci0KLSV0eXBlIDxzdHJpbmc+IGtleWZyYW1lX25hbWUKLSV0eXBlIDxrZXlmcmFtZT4ga2V5ZnJh
bWVfcnVsZQotJXR5cGUgPGtleWZyYW1lUnVsZUxpc3Q+IGtleWZyYW1lc19ydWxlCi0ldHlwZSA8
dmFsdWVMaXN0PiBrZXlfbGlzdAotJXR5cGUgPHZhbHVlPiBrZXkKLQotJXR5cGUgPGlkPiBwcm9w
ZXJ0eQotCi0ldHlwZSA8c2VsZWN0b3I+IHNwZWNpZmllcgotJXR5cGUgPHNlbGVjdG9yPiBzcGVj
aWZpZXJfbGlzdAotJXR5cGUgPHNlbGVjdG9yPiBzaW1wbGVfc2VsZWN0b3IKLSV0eXBlIDxzZWxl
Y3Rvcj4gc2VsZWN0b3IKLSV0eXBlIDxzZWxlY3Rvckxpc3Q+IHNlbGVjdG9yX2xpc3QKLSV0eXBl
IDxzZWxlY3Rvckxpc3Q+IHNpbXBsZV9zZWxlY3Rvcl9saXN0Ci0ldHlwZSA8c2VsZWN0b3JMaXN0
PiByZWdpb25fc2VsZWN0b3IKLSV0eXBlIDxzZWxlY3Rvcj4gc2VsZWN0b3Jfd2l0aF90cmFpbGlu
Z193aGl0ZXNwYWNlCi0ldHlwZSA8c2VsZWN0b3I+IGNsYXNzCi0ldHlwZSA8c2VsZWN0b3I+IGF0
dHJpYgotJXR5cGUgPHNlbGVjdG9yPiBwc2V1ZG8KLSV0eXBlIDxzZWxlY3Rvcj4gcHNldWRvX3Bh
Z2UKLSV0eXBlIDxzZWxlY3Rvcj4gcGFnZV9zZWxlY3RvcgotCi0ldHlwZSA8Ym9vbGVhbj4gZGVj
bGFyYXRpb25fbGlzdAotJXR5cGUgPGJvb2xlYW4+IGRlY2xfbGlzdAotJXR5cGUgPGJvb2xlYW4+
IGRlY2xhcmF0aW9uCi0ldHlwZSA8Ym9vbGVhbj4gZGVjbGFyYXRpb25zX2FuZF9tYXJnaW5zCi0K
LSV0eXBlIDxib29sZWFuPiBwcmlvCi0KLSV0eXBlIDxpbnRlZ2VyPiBtYXRjaAotJXR5cGUgPGlu
dGVnZXI+IHVuYXJ5X29wZXJhdG9yCi0ldHlwZSA8aW50ZWdlcj4gbWF5YmVfdW5hcnlfb3BlcmF0
b3IKLSV0eXBlIDxjaGFyYWN0ZXI+IG9wZXJhdG9yCi0KLSV0eXBlIDx2YWx1ZUxpc3Q+IGV4cHIK
LSV0eXBlIDx2YWx1ZT4gdGVybQotJXR5cGUgPHZhbHVlPiB1bmFyeV90ZXJtCi0ldHlwZSA8dmFs
dWU+IGZ1bmN0aW9uCi0ldHlwZSA8dmFsdWU+IGNhbGNfZnVuY190ZXJtCi0ldHlwZSA8Y2hhcmFj
dGVyPiBjYWxjX2Z1bmNfb3BlcmF0b3IKLSV0eXBlIDx2YWx1ZUxpc3Q+IGNhbGNfZnVuY19leHBy
Ci0ldHlwZSA8dmFsdWVMaXN0PiBjYWxjX2Z1bmNfZXhwcl9saXN0Ci0ldHlwZSA8dmFsdWVMaXN0
PiBjYWxjX2Z1bmNfcGFyZW5fZXhwcgotJXR5cGUgPHZhbHVlPiBjYWxjX2Z1bmN0aW9uCi0ldHlw
ZSA8c3RyaW5nPiBtaW5fb3JfbWF4Ci0ldHlwZSA8dmFsdWU+IG1pbl9vcl9tYXhfZnVuY3Rpb24K
LQotJXR5cGUgPHN0cmluZz4gZWxlbWVudF9uYW1lCi0ldHlwZSA8c3RyaW5nPiBhdHRyX25hbWUK
LQotJSUKLQotc3R5bGVzaGVldDoKLSAgICBtYXliZV9zcGFjZSBtYXliZV9jaGFyc2V0IG1heWJl
X3NnbWwgcnVsZV9saXN0Ci0gIHwgd2Via2l0X3J1bGUgbWF5YmVfc3BhY2UKLSAgfCB3ZWJraXRf
ZGVjbHMgbWF5YmVfc3BhY2UKLSAgfCB3ZWJraXRfdmFsdWUgbWF5YmVfc3BhY2UKLSAgfCB3ZWJr
aXRfbWVkaWFxdWVyeSBtYXliZV9zcGFjZQotICB8IHdlYmtpdF9zZWxlY3RvciBtYXliZV9zcGFj
ZQotICB8IHdlYmtpdF9rZXlmcmFtZV9ydWxlIG1heWJlX3NwYWNlCi0gIDsKLQotd2Via2l0X3J1
bGU6Ci0gICAgV0VCS0lUX1JVTEVfU1lNICd7JyBtYXliZV9zcGFjZSB2YWxpZF9ydWxlIG1heWJl
X3NwYWNlICd9JyB7Ci0gICAgICAgIHBhcnNlci0+bV9ydWxlID0gJDQ7Ci0gICAgfQotOwotCi13
ZWJraXRfa2V5ZnJhbWVfcnVsZToKLSAgICBXRUJLSVRfS0VZRlJBTUVfUlVMRV9TWU0gJ3snIG1h
eWJlX3NwYWNlIGtleWZyYW1lX3J1bGUgbWF5YmVfc3BhY2UgJ30nIHsKLSAgICAgICAgcGFyc2Vy
LT5tX2tleWZyYW1lID0gJDQ7Ci0gICAgfQotOwotCi13ZWJraXRfZGVjbHM6Ci0gICAgV0VCS0lU
X0RFQ0xTX1NZTSAneycgbWF5YmVfc3BhY2VfYmVmb3JlX2RlY2xhcmF0aW9uIGRlY2xhcmF0aW9u
X2xpc3QgJ30nIHsKLSAgICAgICAgLyogY2FuIGJlIGVtcHR5ICovCi0gICAgfQotOwotCi13ZWJr
aXRfdmFsdWU6Ci0gICAgV0VCS0lUX1ZBTFVFX1NZTSAneycgbWF5YmVfc3BhY2UgZXhwciAnfScg
ewotICAgICAgICBpZiAoJDQpIHsKLSAgICAgICAgICAgIHBhcnNlci0+bV92YWx1ZUxpc3QgPSBw
YXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCk7Ci0gICAgICAgICAgICBpbnQgb2xkUGFy
c2VkUHJvcGVydGllcyA9IHBhcnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCk7Ci0gICAg
ICAgICAgICBpZiAoIXBhcnNlci0+cGFyc2VWYWx1ZShwYXJzZXItPm1faWQsIHBhcnNlci0+bV9p
bXBvcnRhbnQpKQotICAgICAgICAgICAgICAgIHBhcnNlci0+cm9sbGJhY2tMYXN0UHJvcGVydGll
cyhwYXJzZXItPm1fcGFyc2VkUHJvcGVydGllcy0+c2l6ZSgpIC0gb2xkUGFyc2VkUHJvcGVydGll
cyk7Ci0gICAgICAgICAgICBwYXJzZXItPm1fdmFsdWVMaXN0ID0gbnVsbHB0cjsKLSAgICAgICAg
fQotICAgIH0KLTsKLQotd2Via2l0X21lZGlhcXVlcnk6Ci0gICAgIFdFQktJVF9NRURJQVFVRVJZ
X1NZTSBXSElURVNQQUNFIG1heWJlX3NwYWNlIG1lZGlhX3F1ZXJ5ICd9JyB7Ci0gICAgICAgICBw
YXJzZXItPm1fbWVkaWFRdWVyeSA9IHBhcnNlci0+c2lua0Zsb2F0aW5nTWVkaWFRdWVyeSgkNCk7
Ci0gICAgIH0KLTsKLQotd2Via2l0X3NlbGVjdG9yOgotICAgIFdFQktJVF9TRUxFQ1RPUl9TWU0g
J3snIG1heWJlX3NwYWNlIHNlbGVjdG9yX2xpc3QgJ30nIHsKLSAgICAgICAgaWYgKCQ0KSB7Ci0g
ICAgICAgICAgICBpZiAocGFyc2VyLT5tX3NlbGVjdG9yTGlzdEZvclBhcnNlU2VsZWN0b3IpCi0g
ICAgICAgICAgICAgICAgcGFyc2VyLT5tX3NlbGVjdG9yTGlzdEZvclBhcnNlU2VsZWN0b3ItPmFk
b3B0U2VsZWN0b3JWZWN0b3IoKiQ0KTsKLSAgICAgICAgfQotICAgIH0KLTsKLQotbWF5YmVfc3Bh
Y2U6Ci0gICAgLyogZW1wdHkgKi8gJXByZWMgVU5JTVBPUlRBTlRfVE9LCi0gIHwgbWF5YmVfc3Bh
Y2UgV0hJVEVTUEFDRQotICA7Ci0KLW1heWJlX3NnbWw6Ci0gICAgLyogZW1wdHkgKi8KLSAgfCBt
YXliZV9zZ21sIFNHTUxfQ0QKLSAgfCBtYXliZV9zZ21sIFdISVRFU1BBQ0UKLSAgOwotCi1tYXli
ZV9jaGFyc2V0OgotICAgLyogZW1wdHkgKi8KLSAgfCBjaGFyc2V0IHsKLSAgfQotICA7Ci0KLWNs
b3NpbmdfYnJhY2U6Ci0gICAgJ30nCi0gIHwgJXByZWMgTE9XRVNUX1BSRUMgVE9LRU5fRU9GCi0g
IDsKLQotY2hhcnNldDoKLSAgQ0hBUlNFVF9TWU0gbWF5YmVfc3BhY2UgU1RSSU5HIG1heWJlX3Nw
YWNlICc7JyB7Ci0gICAgIGlmIChwYXJzZXItPm1fc3R5bGVTaGVldCkKLSAgICAgICAgIHBhcnNl
ci0+bV9zdHlsZVNoZWV0LT5wYXJzZXJTZXRFbmNvZGluZ0Zyb21DaGFyc2V0UnVsZSgkMyk7Ci0g
ICAgIGlmIChwYXJzZXItPmlzRXh0cmFjdGluZ1NvdXJjZURhdGEoKSAmJiBwYXJzZXItPm1fY3Vy
cmVudFJ1bGVEYXRhU3RhY2stPmlzRW1wdHkoKSAmJiBwYXJzZXItPm1fcnVsZVNvdXJjZURhdGFS
ZXN1bHQpCi0gICAgICAgICBwYXJzZXItPmFkZE5ld1J1bGVUb1NvdXJjZVRyZWUoQ1NTUnVsZVNv
dXJjZURhdGE6OmNyZWF0ZVVua25vd24oKSk7Ci0gICAgICQkID0gMDsKLSAgfQotICB8IENIQVJT
RVRfU1lNIGVycm9yIGludmFsaWRfYmxvY2sgewotICB9Ci0gIHwgQ0hBUlNFVF9TWU0gZXJyb3Ig
JzsnIHsKLSAgfQotOwotCi1pZ25vcmVkX2NoYXJzZXQ6Ci0gICAgQ0hBUlNFVF9TWU0gbWF5YmVf
c3BhY2UgU1RSSU5HIG1heWJlX3NwYWNlICc7JyB7Ci0gICAgICAgIC8vIElnbm9yZSBhbnkgQGNo
YXJzZXQgcnVsZSBub3QgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3R5bGUgc2hlZXQuCi0gICAg
ICAgICQkID0gMDsKLSAgICB9Ci0gICAgfCBDSEFSU0VUX1NZTSBtYXliZV9zcGFjZSAnOycgewot
ICAgICAgICAkJCA9IDA7Ci0gICAgfQotOwotCi1ydWxlX2xpc3Q6Ci0gICAvKiBlbXB0eSAqLwot
IHwgcnVsZV9saXN0IHJ1bGUgbWF5YmVfc2dtbCB7Ci0gICAgIGlmICgkMiAmJiBwYXJzZXItPm1f
c3R5bGVTaGVldCkKLSAgICAgICAgIHBhcnNlci0+bV9zdHlsZVNoZWV0LT5wYXJzZXJBcHBlbmRS
dWxlKCQyKTsKLSB9Ci0gOwotCi12YWxpZF9ydWxlOgotICAgIHJ1bGVzZXQKLSAgfCBtZWRpYQot
ICB8IHBhZ2UKLSAgfCBmb250X2ZhY2UKLSAgfCBrZXlmcmFtZXMKLSAgfCBuYW1lc3BhY2UKLSAg
fCBpbXBvcnQKLSAgfCByZWdpb24KLSAgOwotCi1ydWxlOgotICAgIHZhbGlkX3J1bGUgewotICAg
ICAgICBwYXJzZXItPm1faGFkU3ludGFjdGljYWxseVZhbGlkQ1NTUnVsZSA9IHRydWU7Ci0gICAg
fQotICB8IGlnbm9yZWRfY2hhcnNldAotICB8IGludmFsaWRfcnVsZQotICB8IGludmFsaWRfYXQK
LSAgOwotCi1ibG9ja19ydWxlX2xpc3Q6IAotICAgIC8qIGVtcHR5ICovIHsgJCQgPSAwOyB9Ci0g
IHwgYmxvY2tfcnVsZV9saXN0IGJsb2NrX3J1bGUgbWF5YmVfc2dtbCB7Ci0gICAgICAkJCA9ICQx
OwotICAgICAgaWYgKCQyKSB7Ci0gICAgICAgICAgaWYgKCEkJCkKLSAgICAgICAgICAgICAgJCQg
PSBwYXJzZXItPmNyZWF0ZVJ1bGVMaXN0KCk7Ci0gICAgICAgICAgJCQtPmFwcGVuZCgkMik7Ci0g
ICAgICB9Ci0gIH0KLSAgOwotCi1ibG9ja192YWxpZF9ydWxlOgotICAgIHJ1bGVzZXQKLSAgfCBw
YWdlCi0gIHwgZm9udF9mYWNlCi0gIHwga2V5ZnJhbWVzCi0gIDsKLQotYmxvY2tfcnVsZToKLSAg
ICBibG9ja192YWxpZF9ydWxlCi0gIHwgaW52YWxpZF9ydWxlCi0gIHwgaW52YWxpZF9hdAotICB8
IG5hbWVzcGFjZQotICB8IGltcG9ydAotICB8IG1lZGlhCi0gIDsKLQotYXRfaW1wb3J0X2hlYWRl
cl9lbmRfbWF5YmVfc3BhY2U6Ci0gICAgbWF5YmVfc3BhY2UgewotICAgICAgICBwYXJzZXItPm1h
cmtSdWxlSGVhZGVyRW5kKCk7Ci0gICAgICAgIHBhcnNlci0+bWFya1J1bGVCb2R5U3RhcnQoKTsK
LSAgICB9Ci0gICAgOwotCi1iZWZvcmVfaW1wb3J0X3J1bGU6Ci0gICAgLyogZW1wdHkgKi8gewot
ICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6OklN
UE9SVF9SVUxFKTsKLSAgICB9Ci0gICAgOwotCi1pbXBvcnQ6Ci0gICAgYmVmb3JlX2ltcG9ydF9y
dWxlIElNUE9SVF9TWU0gYXRfaW1wb3J0X2hlYWRlcl9lbmRfbWF5YmVfc3BhY2Ugc3RyaW5nX29y
X3VyaSBtYXliZV9zcGFjZSBtYXliZV9tZWRpYV9saXN0ICc7JyB7Ci0gICAgICAgICQkID0gcGFy
c2VyLT5jcmVhdGVJbXBvcnRSdWxlKCQ0LCAkNik7Ci0gICAgfQotICB8IGJlZm9yZV9pbXBvcnRf
cnVsZSBJTVBPUlRfU1lNIGF0X2ltcG9ydF9oZWFkZXJfZW5kX21heWJlX3NwYWNlIHN0cmluZ19v
cl91cmkgbWF5YmVfc3BhY2UgbWF5YmVfbWVkaWFfbGlzdCBUT0tFTl9FT0YgewotICAgICAgICAk
JCA9IHBhcnNlci0+Y3JlYXRlSW1wb3J0UnVsZSgkNCwgJDYpOwotICAgIH0KLSAgfCBiZWZvcmVf
aW1wb3J0X3J1bGUgSU1QT1JUX1NZTSBhdF9pbXBvcnRfaGVhZGVyX2VuZF9tYXliZV9zcGFjZSBz
dHJpbmdfb3JfdXJpIG1heWJlX3NwYWNlIG1heWJlX21lZGlhX2xpc3QgaW52YWxpZF9ibG9jayB7
Ci0gICAgICAgICQkID0gMDsKLSAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOwotICAgIH0K
LSAgfCBiZWZvcmVfaW1wb3J0X3J1bGUgSU1QT1JUX1NZTSBlcnJvciAnOycgewotICAgICAgICAk
JCA9IDA7Ci0gICAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKLSAgICB9Ci0gIHwgYmVmb3Jl
X2ltcG9ydF9ydWxlIElNUE9SVF9TWU0gZXJyb3IgaW52YWxpZF9ibG9jayB7Ci0gICAgICAgICQk
ID0gMDsKLSAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOwotICAgIH0KLSAgOwotCi1uYW1l
c3BhY2U6Ci1OQU1FU1BBQ0VfU1lNIG1heWJlX3NwYWNlIG1heWJlX25zX3ByZWZpeCBzdHJpbmdf
b3JfdXJpIG1heWJlX3NwYWNlICc7JyB7Ci0gICAgcGFyc2VyLT5hZGROYW1lc3BhY2UoJDMsICQ0
KTsKLSAgICAkJCA9IDA7Ci19Ci18IE5BTUVTUEFDRV9TWU0gbWF5YmVfc3BhY2UgbWF5YmVfbnNf
cHJlZml4IHN0cmluZ19vcl91cmkgbWF5YmVfc3BhY2UgaW52YWxpZF9ibG9jayB7Ci0gICAgJCQg
PSAwOwotfQotfCBOQU1FU1BBQ0VfU1lNIGVycm9yIGludmFsaWRfYmxvY2sgewotICAgICQkID0g
MDsKLX0KLXwgTkFNRVNQQUNFX1NZTSBlcnJvciAnOycgewotICAgICQkID0gMDsKLX0KLTsKLQot
bWF5YmVfbnNfcHJlZml4OgotLyogZW1wdHkgKi8geyAkJC5jbGVhcigpOyB9Ci18IElERU5UIG1h
eWJlX3NwYWNlIHsgJCQgPSAkMTsgfQotOwotCi1zdHJpbmdfb3JfdXJpOgotU1RSSU5HCi18IFVS
SQotOwotCi1tZWRpYV9mZWF0dXJlOgotICAgIElERU5UIG1heWJlX3NwYWNlIHsKLSAgICAgICAg
JCQgPSAkMTsKLSAgICB9Ci0gICAgOwotCi1tYXliZV9tZWRpYV92YWx1ZToKLSAgICAvKmVtcHR5
Ki8gewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgIHwgJzonIG1heWJlX3NwYWNlIGV4cHIg
bWF5YmVfc3BhY2UgewotICAgICAgICAkJCA9ICQzOwotICAgIH0KLSAgICA7Ci0KLW1lZGlhX3F1
ZXJ5X2V4cDoKLSAgICAnKCcgbWF5YmVfc3BhY2UgbWVkaWFfZmVhdHVyZSBtYXliZV9zcGFjZSBt
YXliZV9tZWRpYV92YWx1ZSAnKScgbWF5YmVfc3BhY2UgewotICAgICAgICAkMy5sb3dlcigpOwot
ICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwKCQzLCAkNSk7
Ci0gICAgfQotICAgIDsKLQotbWVkaWFfcXVlcnlfZXhwX2xpc3Q6Ci0gICAgbWVkaWFfcXVlcnlf
ZXhwIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeUV4cExp
c3QoKTsKLSAgICAgICAgJCQtPmFwcGVuZChwYXJzZXItPnNpbmtGbG9hdGluZ01lZGlhUXVlcnlF
eHAoJDEpKTsKLSAgICB9Ci0gICAgfCBtZWRpYV9xdWVyeV9leHBfbGlzdCBtYXliZV9zcGFjZSBN
RURJQV9BTkQgbWF5YmVfc3BhY2UgbWVkaWFfcXVlcnlfZXhwIHsKLSAgICAgICAgJCQgPSAkMTsK
LSAgICAgICAgJCQtPmFwcGVuZChwYXJzZXItPnNpbmtGbG9hdGluZ01lZGlhUXVlcnlFeHAoJDUp
KTsKLSAgICB9Ci0gICAgOwotCi1tYXliZV9hbmRfbWVkaWFfcXVlcnlfZXhwX2xpc3Q6Ci0gICAg
LyplbXB0eSovIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVy
eUV4cExpc3QoKTsKLSAgICB9Ci0gICAgfCBNRURJQV9BTkQgbWF5YmVfc3BhY2UgbWVkaWFfcXVl
cnlfZXhwX2xpc3QgewotICAgICAgICAkJCA9ICQzOwotICAgIH0KLSAgICA7Ci0KLW1heWJlX21l
ZGlhX3Jlc3RyaWN0b3I6Ci0gICAgLyplbXB0eSovIHsKLSAgICAgICAgJCQgPSBNZWRpYVF1ZXJ5
OjpOb25lOwotICAgIH0KLSAgICB8IE1FRElBX09OTFkgewotICAgICAgICAkJCA9IE1lZGlhUXVl
cnk6Ok9ubHk7Ci0gICAgfQotICAgIHwgTUVESUFfTk9UIHsKLSAgICAgICAgJCQgPSBNZWRpYVF1
ZXJ5OjpOb3Q7Ci0gICAgfQotICAgIDsKLQotbWVkaWFfcXVlcnk6Ci0gICAgbWVkaWFfcXVlcnlf
ZXhwX2xpc3QgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5
KHBhcnNlci0+c2lua0Zsb2F0aW5nTWVkaWFRdWVyeUV4cExpc3QoJDEpKTsKLSAgICB9Ci0gICAg
fAotICAgIG1heWJlX21lZGlhX3Jlc3RyaWN0b3IgbWF5YmVfc3BhY2UgbWVkaXVtIG1heWJlX2Fu
ZF9tZWRpYV9xdWVyeV9leHBfbGlzdCB7Ci0gICAgICAgICQzLmxvd2VyKCk7Ci0gICAgICAgICQk
ID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ01lZGlhUXVlcnkoJDEsICQzLCBwYXJzZXItPnNpbmtG
bG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KCQ0KSk7Ci0gICAgfQotICAgIDsKLQotbWF5YmVfbWVk
aWFfbGlzdDoKLSAgICAgLyogZW1wdHkgKi8gewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRl
TWVkaWFRdWVyeVNldCgpOwotICAgICB9Ci0gICAgIHwgbWVkaWFfbGlzdAotICAgICA7Ci0KLW1l
ZGlhX2xpc3Q6Ci0gICAgbWVkaWFfcXVlcnkgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRl
TWVkaWFRdWVyeVNldCgpOwotICAgICAgICAkJC0+YWRkTWVkaWFRdWVyeShwYXJzZXItPnNpbmtG
bG9hdGluZ01lZGlhUXVlcnkoJDEpKTsKLSAgICAgICAgcGFyc2VyLT51cGRhdGVMYXN0TWVkaWFM
aW5lKCQkKTsKLSAgICB9Ci0gICAgfCBtZWRpYV9saXN0ICcsJyBtYXliZV9zcGFjZSBtZWRpYV9x
dWVyeSB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgICAgIGlmICgkJCkgewotICAgICAgICAgICAg
JCQtPmFkZE1lZGlhUXVlcnkocGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5KCQ0KSk7Ci0g
ICAgICAgICAgICBwYXJzZXItPnVwZGF0ZUxhc3RNZWRpYUxpbmUoJCQpOwotICAgICAgICB9Ci0g
ICAgfQotICAgIHwgbWVkaWFfbGlzdCBlcnJvciB7Ci0gICAgICAgICQkID0gMDsKLSAgICB9Ci0g
ICAgOwotCi1hdF9ydWxlX2JvZHlfc3RhcnQ6Ci0gICAgLyogZW1wdHkgKi8gewotICAgICAgICBw
YXJzZXItPm1hcmtSdWxlQm9keVN0YXJ0KCk7Ci0gICAgfQotICAgIDsKLQotYmVmb3JlX21lZGlh
X3J1bGU6Ci0gICAgLyogZW1wdHkgKi8gewotICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVy
U3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6Ok1FRElBX1JVTEUpOwotICAgIH0KLSAgICA7Ci0KLWF0
X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9zcGFjZToKLSAgICBtYXliZV9zcGFjZSB7Ci0gICAgICAg
IHBhcnNlci0+bWFya1J1bGVIZWFkZXJFbmQoKTsKLSAgICB9Ci0gICAgOwotCi1tZWRpYToKLSAg
ICBiZWZvcmVfbWVkaWFfcnVsZSBNRURJQV9TWU0gbWF5YmVfc3BhY2UgbWVkaWFfbGlzdCBhdF9y
dWxlX2hlYWRlcl9lbmQgJ3snIGF0X3J1bGVfYm9keV9zdGFydCBtYXliZV9zcGFjZSBibG9ja19y
dWxlX2xpc3Qgc2F2ZV9ibG9jayB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVNZWRpYVJ1
bGUoJDQsICQ5KTsKLSAgICB9Ci0gICAgfCBiZWZvcmVfbWVkaWFfcnVsZSBNRURJQV9TWU0gYXRf
cnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlICd7JyBhdF9ydWxlX2JvZHlfc3RhcnQgbWF5YmVf
c3BhY2UgYmxvY2tfcnVsZV9saXN0IHNhdmVfYmxvY2sgewotICAgICAgICAkJCA9IHBhcnNlci0+
Y3JlYXRlTWVkaWFSdWxlKDAsICQ3KTsKLSAgICB9Ci0gICAgfCBiZWZvcmVfbWVkaWFfcnVsZSBN
RURJQV9TWU0gYXRfcnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlICc7JyB7Ci0gICAgICAgICQk
ID0gMDsKLSAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOwotICAgIH0KLSAgICA7Ci0KLW1l
ZGl1bToKLSAgSURFTlQgbWF5YmVfc3BhY2UgewotICAgICAgJCQgPSAkMTsKLSAgfQotICA7Ci0K
LWJlZm9yZV9rZXlmcmFtZXNfcnVsZToKLSAgICAvKiBlbXB0eSAqLyB7Ci0gICAgICAgIHBhcnNl
ci0+bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6S0VZRlJBTUVTX1JVTEUp
OwotICAgIH0KLSAgICA7Ci0KLWtleWZyYW1lczoKLSAgICBiZWZvcmVfa2V5ZnJhbWVzX3J1bGUg
V0VCS0lUX0tFWUZSQU1FU19TWU0gbWF5YmVfc3BhY2Uga2V5ZnJhbWVfbmFtZSBhdF9ydWxlX2hl
YWRlcl9lbmRfbWF5YmVfc3BhY2UgJ3snIGF0X3J1bGVfYm9keV9zdGFydCBtYXliZV9zcGFjZSBr
ZXlmcmFtZXNfcnVsZSBjbG9zaW5nX2JyYWNlIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0
ZUtleWZyYW1lc1J1bGUoJDQsIHBhcnNlci0+c2lua0Zsb2F0aW5nS2V5ZnJhbWVWZWN0b3IoJDkp
KTsKLSAgICB9Ci0gICAgOwotICAKLWtleWZyYW1lX25hbWU6Ci0gICAgSURFTlQKLSAgICB8IFNU
UklORwotICAgIDsKLQota2V5ZnJhbWVzX3J1bGU6Ci0gICAgLyogZW1wdHkgKi8geyAkJCA9IHBh
cnNlci0+Y3JlYXRlRmxvYXRpbmdLZXlmcmFtZVZlY3RvcigpOyB9Ci0gICAgfCBrZXlmcmFtZXNf
cnVsZSBrZXlmcmFtZV9ydWxlIG1heWJlX3NwYWNlIHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICAg
ICAgaWYgKCQyKQotICAgICAgICAgICAgJCQtPmFwcGVuZCgkMik7Ci0gICAgfQotICAgIDsKLQot
a2V5ZnJhbWVfcnVsZToKLSAgICBrZXlfbGlzdCBtYXliZV9zcGFjZSAneycgbWF5YmVfc3BhY2Ug
ZGVjbGFyYXRpb25fbGlzdCAnfScgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlS2V5ZnJh
bWUoJDEpOwotICAgIH0KLSAgICA7Ci0KLWtleV9saXN0OgotICAgIGtleSB7Ci0gICAgICAgICQk
ID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1ZhbHVlTGlzdCgpOwotICAgICAgICAkJC0+YWRkVmFs
dWUocGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZSgkMSkpOwotICAgIH0KLSAgICB8IGtleV9saXN0
IG1heWJlX3NwYWNlICcsJyBtYXliZV9zcGFjZSBrZXkgewotICAgICAgICAkJCA9ICQxOwotICAg
ICAgICBpZiAoJCQpCi0gICAgICAgICAgICAkJC0+YWRkVmFsdWUocGFyc2VyLT5zaW5rRmxvYXRp
bmdWYWx1ZSgkNSkpOwotICAgIH0KLSAgICA7Ci0KLWtleToKLSAgICBtYXliZV91bmFyeV9vcGVy
YXRvciBQRVJDRU5UQUdFIHsgJCQuaWQgPSAwOyAkJC5pc0ludCA9IGZhbHNlOyAkJC5mVmFsdWUg
PSAkMSAqICQyOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7IH0KLSAg
ICB8IElERU5UIHsKLSAgICAgICAgJCQuaWQgPSAwOyAkJC5pc0ludCA9IGZhbHNlOyAkJC51bml0
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7Ci0gICAgICAgIENTU1BhcnNlclN0cmlu
ZyYgc3RyID0gJDE7Ci0gICAgICAgIGlmIChzdHIuZXF1YWxJZ25vcmluZ0Nhc2UoImZyb20iKSkK
LSAgICAgICAgICAgICQkLmZWYWx1ZSA9IDA7Ci0gICAgICAgIGVsc2UgaWYgKHN0ci5lcXVhbEln
bm9yaW5nQ2FzZSgidG8iKSkKLSAgICAgICAgICAgICQkLmZWYWx1ZSA9IDEwMDsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgWVlFUlJPUjsKLSAgICB9Ci0gICAgOwotCi1iZWZvcmVfcGFnZV9y
dWxlOgotICAgIC8qIGVtcHR5ICovIHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0
YXJ0KENTU1J1bGVTb3VyY2VEYXRhOjpQQUdFX1JVTEUpOwotICAgIH0KLSAgICA7Ci0KLXBhZ2U6
Ci0gICAgYmVmb3JlX3BhZ2VfcnVsZSBQQUdFX1NZTSBtYXliZV9zcGFjZSBwYWdlX3NlbGVjdG9y
IGF0X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9zcGFjZQotICAgICd7JyBhdF9ydWxlX2JvZHlfc3Rh
cnQgbWF5YmVfc3BhY2VfYmVmb3JlX2RlY2xhcmF0aW9uIGRlY2xhcmF0aW9uc19hbmRfbWFyZ2lu
cyBjbG9zaW5nX2JyYWNlIHsKLSAgICAgICAgaWYgKCQ0KQotICAgICAgICAgICAgJCQgPSBwYXJz
ZXItPmNyZWF0ZVBhZ2VSdWxlKHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDQpKTsKLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvLyBDbGVhciBwcm9wZXJ0aWVzIGluIHRoZSBpbnZh
bGlkIEBwYWdlIHJ1bGUuCi0gICAgICAgICAgICBwYXJzZXItPmNsZWFyUHJvcGVydGllcygpOwot
ICAgICAgICAgICAgLy8gQWxzbyBjbGVhciBtYXJnaW4gYXQtcnVsZXMgaGVyZSBvbmNlIHdlIGZ1
bGx5IGltcGxlbWVudCBtYXJnaW4gYXQtcnVsZXMgcGFyc2luZy4KLSAgICAgICAgICAgICQkID0g
MDsKLSAgICAgICAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICB8IGJlZm9yZV9wYWdlX3J1bGUgUEFHRV9TWU0gZXJyb3IgaW52YWxpZF9ibG9jayB7Ci0g
ICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7Ci0gICAgICAkJCA9IDA7Ci0gICAgfQotICAgIHwg
YmVmb3JlX3BhZ2VfcnVsZSBQQUdFX1NZTSBlcnJvciAnOycgewotICAgICAgcGFyc2VyLT5wb3BS
dWxlRGF0YSgpOwotICAgICAgJCQgPSAwOwotICAgIH0KLSAgICA7Ci0KLXBhZ2Vfc2VsZWN0b3I6
Ci0gICAgSURFTlQgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3Rv
cigpOwotICAgICAgICAkJC0+c2V0VGFnKFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQxLCBwYXJz
ZXItPm1fZGVmYXVsdE5hbWVzcGFjZSkpOwotICAgICAgICAkJC0+c2V0Rm9yUGFnZSgpOwotICAg
IH0KLSAgICB8IElERU5UIHBzZXVkb19wYWdlIHsKLSAgICAgICAgJCQgPSAkMjsKLSAgICAgICAg
aWYgKCQkKSB7Ci0gICAgICAgICAgICAkJC0+c2V0VGFnKFF1YWxpZmllZE5hbWUobnVsbEF0b20s
ICQxLCBwYXJzZXItPm1fZGVmYXVsdE5hbWVzcGFjZSkpOwotICAgICAgICAgICAgJCQtPnNldEZv
clBhZ2UoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICB8IHBzZXVkb19wYWdlIHsKLSAgICAgICAg
JCQgPSAkMTsKLSAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAgJCQtPnNldEZvclBhZ2UoKTsK
LSAgICB9Ci0gICAgfCAvKiBlbXB0eSAqLyB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVG
bG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5zZXRGb3JQYWdlKCk7Ci0gICAgfQotICAg
IDsKLQotZGVjbGFyYXRpb25zX2FuZF9tYXJnaW5zOgotICAgIGRlY2xhcmF0aW9uX2xpc3QKLSAg
ICB8IGRlY2xhcmF0aW9uc19hbmRfbWFyZ2lucyBtYXJnaW5fYm94IG1heWJlX3NwYWNlIGRlY2xh
cmF0aW9uX2xpc3QKLSAgICA7Ci0KLW1hcmdpbl9ib3g6Ci0gICAgbWFyZ2luX3N5bSB7Ci0gICAg
ICAgIHBhcnNlci0+c3RhcnREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3goKTsKLSAgICB9IG1heWJl
X3NwYWNlICd7JyBtYXliZV9zcGFjZSBkZWNsYXJhdGlvbl9saXN0IGNsb3NpbmdfYnJhY2Ugewot
ICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlTWFyZ2luQXRSdWxlKCQxKTsKLSAgICB9Ci0gICAg
OwotCi1tYXJnaW5fc3ltIDoKLSAgICBUT1BMRUZUQ09STkVSX1NZTSB7Ci0gICAgICAgICQkID0g
Q1NTU2VsZWN0b3I6OlRvcExlZnRDb3JuZXJNYXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgVE9QTEVG
VF9TWU0gewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpUb3BMZWZ0TWFyZ2luQm94OwotICAg
IH0KLSAgICB8IFRPUENFTlRFUl9TWU0gewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpUb3BD
ZW50ZXJNYXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgVE9QUklHSFRfU1lNIHsKLSAgICAgICAgJCQg
PSBDU1NTZWxlY3Rvcjo6VG9wUmlnaHRNYXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgVE9QUklHSFRD
T1JORVJfU1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6VG9wUmlnaHRDb3JuZXJNYXJn
aW5Cb3g7Ci0gICAgfQotICAgIHwgQk9UVE9NTEVGVENPUk5FUl9TWU0gewotICAgICAgICAkJCA9
IENTU1NlbGVjdG9yOjpCb3R0b21MZWZ0Q29ybmVyTWFyZ2luQm94OwotICAgIH0KLSAgICB8IEJP
VFRPTUxFRlRfU1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6Qm90dG9tTGVmdE1hcmdp
bkJveDsKLSAgICB9Ci0gICAgfCBCT1RUT01DRU5URVJfU1lNIHsKLSAgICAgICAgJCQgPSBDU1NT
ZWxlY3Rvcjo6Qm90dG9tQ2VudGVyTWFyZ2luQm94OwotICAgIH0KLSAgICB8IEJPVFRPTVJJR0hU
X1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkJvdHRvbVJpZ2h0TWFyZ2luQm94Owot
ICAgIH0KLSAgICB8IEJPVFRPTVJJR0hUQ09STkVSX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2Vs
ZWN0b3I6OkJvdHRvbVJpZ2h0Q29ybmVyTWFyZ2luQm94OwotICAgIH0KLSAgICB8IExFRlRUT1Bf
U1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6TGVmdFRvcE1hcmdpbkJveDsKLSAgICB9
Ci0gICAgfCBMRUZUTUlERExFX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkxlZnRN
aWRkbGVNYXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgTEVGVEJPVFRPTV9TWU0gewotICAgICAgICAk
JCA9IENTU1NlbGVjdG9yOjpMZWZ0Qm90dG9tTWFyZ2luQm94OwotICAgIH0KLSAgICB8IFJJR0hU
VE9QX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OlJpZ2h0VG9wTWFyZ2luQm94Owot
ICAgIH0KLSAgICB8IFJJR0hUTUlERExFX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6
OlJpZ2h0TWlkZGxlTWFyZ2luQm94OwotICAgIH0KLSAgICB8IFJJR0hUQk9UVE9NX1NZTSB7Ci0g
ICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OlJpZ2h0Qm90dG9tTWFyZ2luQm94OwotICAgIH0KLSAg
ICA7Ci0KLWJlZm9yZV9mb250X2ZhY2VfcnVsZToKLSAgICAvKiBlbXB0eSAqLyB7Ci0gICAgICAg
IHBhcnNlci0+bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6Rk9OVF9GQUNF
X1JVTEUpOwotICAgIH0KLSAgICA7Ci0KLWZvbnRfZmFjZToKLSAgICBiZWZvcmVfZm9udF9mYWNl
X3J1bGUgRk9OVF9GQUNFX1NZTSBhdF9ydWxlX2hlYWRlcl9lbmRfbWF5YmVfc3BhY2UKLSAgICAn
eycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1heWJlX3NwYWNlX2JlZm9yZV9kZWNsYXJhdGlvbiBkZWNs
YXJhdGlvbl9saXN0IGNsb3NpbmdfYnJhY2UgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRl
Rm9udEZhY2VSdWxlKCk7Ci0gICAgfQotICAgIHwgYmVmb3JlX2ZvbnRfZmFjZV9ydWxlIEZPTlRf
RkFDRV9TWU0gZXJyb3IgaW52YWxpZF9ibG9jayB7Ci0gICAgICAkJCA9IDA7Ci0gICAgICBwYXJz
ZXItPnBvcFJ1bGVEYXRhKCk7Ci0gICAgfQotICAgIHwgYmVmb3JlX2ZvbnRfZmFjZV9ydWxlIEZP
TlRfRkFDRV9TWU0gZXJyb3IgJzsnIHsKLSAgICAgICQkID0gMDsKLSAgICAgIHBhcnNlci0+cG9w
UnVsZURhdGEoKTsKLSAgICB9Ci07Ci0KLXJlZ2lvbl9zZWxlY3RvcjoKLSAgICBzZWxlY3Rvcl9s
aXN0IHsKLSAgICAgICAgaWYgKCQxKSB7Ci0gICAgICAgICAgICBwYXJzZXItPnNldFJldXNhYmxl
UmVnaW9uU2VsZWN0b3JWZWN0b3IoJDEpOwotICAgICAgICAgICAgJCQgPSBwYXJzZXItPnJldXNh
YmxlUmVnaW9uU2VsZWN0b3JWZWN0b3IoKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAkJCA9IDA7Ci0gICAgfQotOwotCi1iZWZvcmVfcmVnaW9uX3J1bGU6Ci0gICAgLyog
ZW1wdHkgKi8gewotICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNv
dXJjZURhdGE6OlJFR0lPTl9SVUxFKTsKLSAgICB9Ci0gICAgOwotCi1yZWdpb246Ci0gICAgYmVm
b3JlX3JlZ2lvbl9ydWxlIFdFQktJVF9SRUdJT05fUlVMRV9TWU0gV0hJVEVTUEFDRSByZWdpb25f
c2VsZWN0b3IgYXRfcnVsZV9oZWFkZXJfZW5kICd7JyBhdF9ydWxlX2JvZHlfc3RhcnQgbWF5YmVf
c3BhY2UgYmxvY2tfcnVsZV9saXN0IHNhdmVfYmxvY2sgewotICAgICAgICBpZiAoJDQpCi0gICAg
ICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlUmVnaW9uUnVsZSgkNCwgJDkpOwotICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICQkID0gMDsKLSAgICAgICAgICAgIHBhcnNlci0+cG9wUnVsZURh
dGEoKTsKLSAgICAgICAgfQotICAgIH0KLTsKLQotY29tYmluYXRvcjoKLSAgICAnKycgbWF5YmVf
c3BhY2UgeyAkJCA9IENTU1NlbGVjdG9yOjpEaXJlY3RBZGphY2VudDsgfQotICB8ICd+JyBtYXli
ZV9zcGFjZSB7ICQkID0gQ1NTU2VsZWN0b3I6OkluZGlyZWN0QWRqYWNlbnQ7IH0KLSAgfCAnPicg
bWF5YmVfc3BhY2UgeyAkJCA9IENTU1NlbGVjdG9yOjpDaGlsZDsgfQotICA7Ci0KLW1heWJlX3Vu
YXJ5X29wZXJhdG9yOgotICAgIHVuYXJ5X29wZXJhdG9yIHsgJCQgPSAkMTsgfQotICAgIHwgeyAk
JCA9IDE7IH0KLSAgICA7Ci0KLXVuYXJ5X29wZXJhdG9yOgotICAgICctJyB7ICQkID0gLTE7IH0K
LSAgfCAnKycgeyAkJCA9IDE7IH0KLSAgOwotCi1tYXliZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRp
b246Ci0gICAgbWF5YmVfc3BhY2UgewotICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eVN0YXJ0
KCk7Ci0gICAgfQotICA7Ci0KLWJlZm9yZV9zZWxlY3Rvcl9saXN0OgotICAgIC8qIGVtcHR5ICov
IHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRh
OjpTVFlMRV9SVUxFKTsKLSAgICB9Ci0gIDsKLQotYXRfcnVsZV9oZWFkZXJfZW5kOgotICAgIC8q
IGVtcHR5ICovIHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlckVuZCgpOwotICAgIH0K
LSAgOwotCi1ydWxlc2V0OgotICAgIGJlZm9yZV9zZWxlY3Rvcl9saXN0IHNlbGVjdG9yX2xpc3Qg
YXRfcnVsZV9oZWFkZXJfZW5kICd7JyBhdF9ydWxlX2JvZHlfc3RhcnQgbWF5YmVfc3BhY2VfYmVm
b3JlX2RlY2xhcmF0aW9uIGRlY2xhcmF0aW9uX2xpc3QgY2xvc2luZ19icmFjZSB7Ci0gICAgICAg
ICQkID0gcGFyc2VyLT5jcmVhdGVTdHlsZVJ1bGUoJDIpOwotICAgIH0KLSAgOwotCi1zZWxlY3Rv
cl9saXN0OgotICAgIHNlbGVjdG9yICVwcmVjIFVOSU1QT1JUQU5UX1RPSyB7Ci0gICAgICAgIGlm
ICgkMSkgewotICAgICAgICAgICAgJCQgPSBwYXJzZXItPnNlbGVjdG9yVmVjdG9yKCk7Ci0gICAg
ICAgICAgICAkJC0+c2hyaW5rKDApOwotICAgICAgICAgICAgJCQtPmFwcGVuZChwYXJzZXItPnNp
bmtGbG9hdGluZ1NlbGVjdG9yKCQxKSk7Ci0gICAgICAgICAgICBwYXJzZXItPnVwZGF0ZUxhc3RT
ZWxlY3RvckxpbmVBbmRQb3NpdGlvbigpOwotICAgICAgICB9Ci0gICAgfQotICAgIHwgc2VsZWN0
b3JfbGlzdCAnLCcgbWF5YmVfc3BhY2Ugc2VsZWN0b3IgJXByZWMgVU5JTVBPUlRBTlRfVE9LIHsK
LSAgICAgICAgaWYgKCQxICYmICQ0KSB7Ci0gICAgICAgICAgICAkJCA9ICQxOwotICAgICAgICAg
ICAgJCQtPmFwcGVuZChwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQ0KSk7Ci0gICAgICAg
ICAgICBwYXJzZXItPnVwZGF0ZUxhc3RTZWxlY3RvckxpbmVBbmRQb3NpdGlvbigpOwotICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICQkID0gMDsKLSAgICB9Ci0gIHwgc2VsZWN0b3JfbGlzdCBl
cnJvciB7Ci0gICAgICAgICQkID0gMDsKLSAgICB9Ci0gICA7Ci0KLXNlbGVjdG9yX3dpdGhfdHJh
aWxpbmdfd2hpdGVzcGFjZToKLSAgICBzZWxlY3RvciBXSElURVNQQUNFIHsKLSAgICAgICAgJCQg
PSAkMTsKLSAgICB9Ci0gICAgOwotCi1zZWxlY3RvcjoKLSAgICBzaW1wbGVfc2VsZWN0b3Igewot
ICAgICAgICAkJCA9ICQxOwotICAgIH0KLSAgICB8IHNlbGVjdG9yX3dpdGhfdHJhaWxpbmdfd2hp
dGVzcGFjZQotICAgIHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICB9Ci0gICAgfCBzZWxlY3Rvcl93
aXRoX3RyYWlsaW5nX3doaXRlc3BhY2Ugc2ltcGxlX3NlbGVjdG9yCi0gICAgewotICAgICAgICAk
JCA9ICQyOwotICAgICAgICBpZiAoISQxKQotICAgICAgICAgICAgJCQgPSAwOwotICAgICAgICBl
bHNlIGlmICgkJCkgewotICAgICAgICAgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIGVuZCA9ICQkOwot
ICAgICAgICAgICAgd2hpbGUgKGVuZC0+dGFnSGlzdG9yeSgpKQotICAgICAgICAgICAgICAgIGVu
ZCA9IGVuZC0+dGFnSGlzdG9yeSgpOwotICAgICAgICAgICAgZW5kLT5zZXRSZWxhdGlvbihDU1NT
ZWxlY3Rvcjo6RGVzY2VuZGFudCk7Ci0gICAgICAgICAgICBlbmQtPnNldFRhZ0hpc3RvcnkocGFy
c2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHwg
c2VsZWN0b3IgY29tYmluYXRvciBzaW1wbGVfc2VsZWN0b3IgewotICAgICAgICAkJCA9ICQzOwot
ICAgICAgICBpZiAoISQxKQotICAgICAgICAgICAgJCQgPSAwOwotICAgICAgICBlbHNlIGlmICgk
JCkgewotICAgICAgICAgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIGVuZCA9ICQkOwotICAgICAgICAg
ICAgd2hpbGUgKGVuZC0+dGFnSGlzdG9yeSgpKQotICAgICAgICAgICAgICAgIGVuZCA9IGVuZC0+
dGFnSGlzdG9yeSgpOwotICAgICAgICAgICAgZW5kLT5zZXRSZWxhdGlvbigkMik7Ci0gICAgICAg
ICAgICBlbmQtPnNldFRhZ0hpc3RvcnkocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMSkp
OwotICAgICAgICB9Ci0gICAgfQotICAgIHwgc2VsZWN0b3IgZXJyb3IgewotICAgICAgICAkJCA9
IDA7Ci0gICAgfQotICAgIDsKLQotbmFtZXNwYWNlX3NlbGVjdG9yOgotICAgIC8qIGVtcHR5ICov
ICd8JyB7ICQkLmNsZWFyKCk7IH0KLSAgICB8ICcqJyAnfCcgeyBzdGF0aWMgTENoYXIgc3RhciA9
ICcqJzsgJCQuaW5pdCgmc3RhciwgMSk7IH0KLSAgICB8IElERU5UICd8JyB7ICQkID0gJDE7IH0K
LTsKLSAgICAKLXNpbXBsZV9zZWxlY3RvcjoKLSAgICBlbGVtZW50X25hbWUgewotICAgICAgICAk
JCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0VGFn
KFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQxLCBwYXJzZXItPm1fZGVmYXVsdE5hbWVzcGFjZSkp
OwotICAgIH0KLSAgICB8IGVsZW1lbnRfbmFtZSBzcGVjaWZpZXJfbGlzdCB7Ci0gICAgICAgICQk
ID0gJDI7Ci0gICAgICAgIGlmICgkJCkKLSAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lm
aWVyc1dpdGhFbGVtZW50TmFtZShudWxsQXRvbSwgJDEsICQkKTsKLSAgICB9Ci0gICAgfCBzcGVj
aWZpZXJfbGlzdCB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgICAgIGlmICgkJCkKLSAgICAgICAg
ICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShudWxsQXRvbSwgc3Rh
ckF0b20sICQkKTsKLSAgICB9Ci0gICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3IgZWxlbWVudF9uYW1l
IHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAg
ICAgJCQtPnNldFRhZyhwYXJzZXItPmRldGVybWluZU5hbWVJbk5hbWVzcGFjZSgkMSwgJDIpKTsK
LSAgICB9Ci0gICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3IgZWxlbWVudF9uYW1lIHNwZWNpZmllcl9s
aXN0IHsKLSAgICAgICAgJCQgPSAkMzsKLSAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAgcGFy
c2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKCQxLCAkMiwgJCQpOwotICAgIH0K
LSAgICB8IG5hbWVzcGFjZV9zZWxlY3RvciBzcGVjaWZpZXJfbGlzdCB7Ci0gICAgICAgICQkID0g
JDI7Ci0gICAgICAgIGlmICgkJCkKLSAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVy
c1dpdGhFbGVtZW50TmFtZSgkMSwgc3RhckF0b20sICQkKTsKLSAgICB9Ci0gIDsKLQotc2ltcGxl
X3NlbGVjdG9yX2xpc3Q6Ci0gICAgc2ltcGxlX3NlbGVjdG9yICVwcmVjIFVOSU1QT1JUQU5UX1RP
SyB7Ci0gICAgICAgIGlmICgkMSkgewotICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZs
b2F0aW5nU2VsZWN0b3JWZWN0b3IoKTsKLSAgICAgICAgICAgICQkLT5hcHBlbmQocGFyc2VyLT5z
aW5rRmxvYXRpbmdTZWxlY3RvcigkMSkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICQk
ID0gMDsKLSAgICB9Ci0gICAgfCBzaW1wbGVfc2VsZWN0b3JfbGlzdCBtYXliZV9zcGFjZSAnLCcg
bWF5YmVfc3BhY2Ugc2ltcGxlX3NlbGVjdG9yICVwcmVjIFVOSU1QT1JUQU5UX1RPSyB7Ci0gICAg
ICAgIGlmICgkMSAmJiAkNSkgewotICAgICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgICAgICQk
LT5hcHBlbmQocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkNSkpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICQkID0gMDsKLSAgICB9Ci0gICAgfCBzaW1wbGVfc2VsZWN0b3JfbGlz
dCBlcnJvciB7Ci0gICAgICAgICQkID0gMDsKLSAgICB9Ci0gIDsKLQotZWxlbWVudF9uYW1lOgot
ICAgIElERU5UIHsKLSAgICAgICAgQ1NTUGFyc2VyU3RyaW5nJiBzdHIgPSAkMTsKLSAgICAgICAg
aWYgKHBhcnNlci0+bV9jb250ZXh0LmlzSFRNTERvY3VtZW50KQotICAgICAgICAgICAgc3RyLmxv
d2VyKCk7Ci0gICAgICAgICQkID0gc3RyOwotICAgIH0KLSAgICB8ICcqJyB7Ci0gICAgICAgIHN0
YXRpYyBMQ2hhciBzdGFyID0gJyonOwotICAgICAgICAkJC5pbml0KCZzdGFyLCAxKTsKLSAgICB9
Ci0gIDsKLQotc3BlY2lmaWVyX2xpc3Q6Ci0gICAgc3BlY2lmaWVyIHsKLSAgICAgICAgJCQgPSAk
MTsKLSAgICB9Ci0gICAgfCBzcGVjaWZpZXJfbGlzdCBzcGVjaWZpZXIgewotICAgICAgICBpZiAo
ISQyKQotICAgICAgICAgICAgJCQgPSAwOwotICAgICAgICBlbHNlIGlmICgkMSkKLSAgICAgICAg
ICAgICQkID0gcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzKCQxLCAkMik7Ci0gICAgfQotICAgIHwg
c3BlY2lmaWVyX2xpc3QgZXJyb3IgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotOwotCi1zcGVj
aWZpZXI6Ci0gICAgSURTRUwgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdT
ZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OklkKTsKLSAgICAg
ICAgaWYgKHBhcnNlci0+bV9jb250ZXh0Lm1vZGUgPT0gQ1NTUXVpcmtzTW9kZSkKLSAgICAgICAg
ICAgICQxLmxvd2VyKCk7Ci0gICAgICAgICQkLT5zZXRWYWx1ZSgkMSk7Ci0gICAgfQotICB8IEhF
WCB7Ci0gICAgICAgIGlmICgkMVswXSA+PSAnMCcgJiYgJDFbMF0gPD0gJzknKSB7Ci0gICAgICAg
ICAgICAkJCA9IDA7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAkJCA9IHBhcnNlci0+
Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAgICAgJCQtPnNldE1hdGNoKENTU1Nl
bGVjdG9yOjpJZCk7Ci0gICAgICAgICAgICBpZiAocGFyc2VyLT5tX2NvbnRleHQubW9kZSA9PSBD
U1NRdWlya3NNb2RlKQotICAgICAgICAgICAgICAgICQxLmxvd2VyKCk7Ci0gICAgICAgICAgICAk
JC0+c2V0VmFsdWUoJDEpOwotICAgICAgICB9Ci0gICAgfQotICB8IGNsYXNzCi0gIHwgYXR0cmli
Ci0gIHwgcHNldWRvCi0gICAgOwotCi1jbGFzczoKLSAgICAnLicgSURFTlQgewotICAgICAgICAk
JCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0TWF0
Y2goQ1NTU2VsZWN0b3I6OkNsYXNzKTsKLSAgICAgICAgaWYgKHBhcnNlci0+bV9jb250ZXh0Lm1v
ZGUgPT0gQ1NTUXVpcmtzTW9kZSkKLSAgICAgICAgICAgICQyLmxvd2VyKCk7Ci0gICAgICAgICQk
LT5zZXRWYWx1ZSgkMik7Ci0gICAgfQotICA7Ci0KLWF0dHJfbmFtZToKLSAgICBJREVOVCBtYXli
ZV9zcGFjZSB7Ci0gICAgICAgIENTU1BhcnNlclN0cmluZyYgc3RyID0gJDE7Ci0gICAgICAgIGlm
IChwYXJzZXItPm1fY29udGV4dC5pc0hUTUxEb2N1bWVudCkKLSAgICAgICAgICAgIHN0ci5sb3dl
cigpOwotICAgICAgICAkJCA9IHN0cjsKLSAgICB9Ci0gICAgOwotCi1hdHRyaWI6Ci0gICAgJ1sn
IG1heWJlX3NwYWNlIGF0dHJfbmFtZSAnXScgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRl
RmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0QXR0cmlidXRlKFF1YWxpZmllZE5h
bWUobnVsbEF0b20sICQzLCBudWxsQXRvbSkpOwotICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2Vs
ZWN0b3I6OlNldCk7Ci0gICAgfQotICAgIHwgJ1snIG1heWJlX3NwYWNlIGF0dHJfbmFtZSBtYXRj
aCBtYXliZV9zcGFjZSBpZGVudF9vcl9zdHJpbmcgbWF5YmVfc3BhY2UgJ10nIHsKLSAgICAgICAg
JCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldEF0
dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMywgbnVsbEF0b20pKTsKLSAgICAgICAg
JCQtPnNldE1hdGNoKChDU1NTZWxlY3Rvcjo6TWF0Y2gpJDQpOwotICAgICAgICAkJC0+c2V0VmFs
dWUoJDYpOwotICAgIH0KLSAgICB8ICdbJyBtYXliZV9zcGFjZSBuYW1lc3BhY2Vfc2VsZWN0b3Ig
YXR0cl9uYW1lICddJyB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVj
dG9yKCk7Ci0gICAgICAgICQkLT5zZXRBdHRyaWJ1dGUocGFyc2VyLT5kZXRlcm1pbmVOYW1lSW5O
YW1lc3BhY2UoJDMsICQ0KSk7Ci0gICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6U2V0
KTsKLSAgICB9Ci0gICAgfCAnWycgbWF5YmVfc3BhY2UgbmFtZXNwYWNlX3NlbGVjdG9yIGF0dHJf
bmFtZSBtYXRjaCBtYXliZV9zcGFjZSBpZGVudF9vcl9zdHJpbmcgbWF5YmVfc3BhY2UgJ10nIHsK
LSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAg
JCQtPnNldEF0dHJpYnV0ZShwYXJzZXItPmRldGVybWluZU5hbWVJbk5hbWVzcGFjZSgkMywgJDQp
KTsKLSAgICAgICAgJCQtPnNldE1hdGNoKChDU1NTZWxlY3Rvcjo6TWF0Y2gpJDUpOwotICAgICAg
ICAkJC0+c2V0VmFsdWUoJDcpOwotICAgIH0KLSAgOwotCi1tYXRjaDoKLSAgICAnPScgewotICAg
ICAgICAkJCA9IENTU1NlbGVjdG9yOjpFeGFjdDsKLSAgICB9Ci0gICAgfCBJTkNMVURFUyB7Ci0g
ICAgICAgICQkID0gQ1NTU2VsZWN0b3I6Okxpc3Q7Ci0gICAgfQotICAgIHwgREFTSE1BVENIIHsK
LSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6SHlwaGVuOwotICAgIH0KLSAgICB8IEJFR0lOU1dJ
VEggewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpCZWdpbjsKLSAgICB9Ci0gICAgfCBFTkRT
V0lUSCB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkVuZDsKLSAgICB9Ci0gICAgfCBDT05U
QUlOUyB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkNvbnRhaW47Ci0gICAgfQotICAgIDsK
LQotaWRlbnRfb3Jfc3RyaW5nOgotICAgIElERU5UCi0gIHwgU1RSSU5HCi0gICAgOwotCi1wc2V1
ZG9fcGFnZToKLSAgICAnOicgSURFTlQgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxv
YXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBhZ2VQ
c2V1ZG9DbGFzcyk7Ci0gICAgICAgICQyLmxvd2VyKCk7Ci0gICAgICAgICQkLT5zZXRWYWx1ZSgk
Mik7Ci0gICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlw
ZSgpOwotICAgICAgICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bikKLSAg
ICAgICAgICAgICQkID0gMDsKLSAgICB9Ci0KLXBzZXVkbzoKLSAgICAnOicgSURFTlQgewotICAg
ICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+
c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKLSAgICAgICAgJDIubG93ZXIoKTsK
LSAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsKLSAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5
cGUgdHlwZSA9ICQkLT5wc2V1ZG9UeXBlKCk7Ci0gICAgICAgIGlmICh0eXBlID09IENTU1NlbGVj
dG9yOjpQc2V1ZG9Vbmtub3duKQotICAgICAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICB8ICc6
JyAnOicgSURFTlQgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3Rv
cigpOwotICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQpOwot
ICAgICAgICAkMy5sb3dlcigpOwotICAgICAgICAkJC0+c2V0VmFsdWUoJDMpOwotICAgICAgICAv
LyBGSVhNRTogVGhpcyBjYWxsIGlzIG5lZWRlZCB0byBmb3JjZSBzZWxlY3RvciB0byBjb21wdXRl
IHRoZSBwc2V1ZG9UeXBlIGVhcmx5IGVub3VnaC4KLSAgICAgICAgJCQtPnBzZXVkb1R5cGUoKTsK
LSAgICB9Ci0gICAgLy8gdXNlIGJ5IDotd2Via2l0LWFueS4KLSAgICAvLyBGSVhNRTogc2hvdWxk
IHdlIHN1cHBvcnQgZ2VuZXJpYyBzZWxlY3RvcnMgaGVyZSBvciBqdXN0IHNpbXBsZV9zZWxlY3Rv
cnM/Ci0gICAgLy8gVXNlIHNpbXBsZV9zZWxlY3Rvcl9saXN0IGZvciBub3cgdG8gbWF0Y2ggLW1v
ei1hbnkuCi0gICAgLy8gU2VlIGh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3
dy1zdHlsZS8yMDEwU2VwLzA1NjYuaHRtbCBmb3Igc29tZQotICAgIC8vIHJlbGF0ZWQgZGlzY3Vz
c2lvbiB3aXRoIHJlc3BlY3QgdG8gOm5vdC4KLSAgICB8ICc6JyBBTllGVU5DVElPTiBtYXliZV9z
cGFjZSBzaW1wbGVfc2VsZWN0b3JfbGlzdCBtYXliZV9zcGFjZSAnKScgewotICAgICAgICBpZiAo
JDQpIHsKLSAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7
Ci0gICAgICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKLSAg
ICAgICAgICAgICQkLT5hZG9wdFNlbGVjdG9yVmVjdG9yKCpwYXJzZXItPnNpbmtGbG9hdGluZ1Nl
bGVjdG9yVmVjdG9yKCQ0KSk7Ci0gICAgICAgICAgICAkMi5sb3dlcigpOwotICAgICAgICAgICAg
JCQtPnNldFZhbHVlKCQyKTsKLSAgICAgICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5
cGUgPSAkJC0+cHNldWRvVHlwZSgpOwotICAgICAgICAgICAgaWYgKHR5cGUgIT0gQ1NTU2VsZWN0
b3I6OlBzZXVkb0FueSkKLSAgICAgICAgICAgICAgICAkJCA9IDA7Ci0gICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICAvLyB1c2VkIGJ5IDpudGgtKihheCtiKQot
ICAgIHwgJzonIEZVTkNUSU9OIG1heWJlX3NwYWNlIE5USCBtYXliZV9zcGFjZSAnKScgewotICAg
ICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+
c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKLSAgICAgICAgJCQtPnNldEFyZ3Vt
ZW50KCQ0KTsKLSAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsKLSAgICAgICAgQ1NTU2VsZWN0b3I6
OlBzZXVkb1R5cGUgdHlwZSA9ICQkLT5wc2V1ZG9UeXBlKCk7Ci0gICAgICAgIGlmICh0eXBlID09
IENTU1NlbGVjdG9yOjpQc2V1ZG9Vbmtub3duKQotICAgICAgICAgICAgJCQgPSAwOwotICAgIH0K
LSAgICAvLyB1c2VkIGJ5IDpudGgtKgotICAgIHwgJzonIEZVTkNUSU9OIG1heWJlX3NwYWNlIG1h
eWJlX3VuYXJ5X29wZXJhdG9yIElOVEVHRVIgbWF5YmVfc3BhY2UgJyknIHsKLSAgICAgICAgJCQg
PSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldE1hdGNo
KENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7Ci0gICAgICAgICQkLT5zZXRBcmd1bWVudChTdHJp
bmc6Om51bWJlcigkNCAqICQ1KSk7Ci0gICAgICAgICQkLT5zZXRWYWx1ZSgkMik7Ci0gICAgICAg
IENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOwotICAgICAg
ICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bikKLSAgICAgICAgICAgICQk
ID0gMDsKLSAgICB9Ci0gICAgLy8gdXNlZCBieSA6bnRoLSoob2RkL2V2ZW4pIGFuZCA6bGFuZwot
ICAgIHwgJzonIEZVTkNUSU9OIG1heWJlX3NwYWNlIElERU5UIG1heWJlX3NwYWNlICcpJyB7Ci0g
ICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQk
LT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpOwotICAgICAgICAkJC0+c2V0QXJn
dW1lbnQoJDQpOwotICAgICAgICAkMi5sb3dlcigpOwotICAgICAgICAkJC0+c2V0VmFsdWUoJDIp
OwotICAgICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUo
KTsKLSAgICAgICAgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25vd24pCi0gICAg
ICAgICAgICAkJCA9IDA7Ci0gICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBz
ZXVkb050aENoaWxkIHx8Ci0gICAgICAgICAgICAgICAgIHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBz
ZXVkb050aE9mVHlwZSB8fAotICAgICAgICAgICAgICAgICB0eXBlID09IENTU1NlbGVjdG9yOjpQ
c2V1ZG9OdGhMYXN0Q2hpbGQgfHwKLSAgICAgICAgICAgICAgICAgdHlwZSA9PSBDU1NTZWxlY3Rv
cjo6UHNldWRvTnRoTGFzdE9mVHlwZSkgewotICAgICAgICAgICAgaWYgKCFpc1ZhbGlkTnRoVG9r
ZW4oJDQpKQotICAgICAgICAgICAgICAgICQkID0gMDsKLSAgICAgICAgfQotICAgIH0KLSAgICAv
LyB1c2VkIGJ5IDpub3QKLSAgICB8ICc6JyBOT1RGVU5DVElPTiBtYXliZV9zcGFjZSBzaW1wbGVf
c2VsZWN0b3IgbWF5YmVfc3BhY2UgJyknIHsKLSAgICAgICAgaWYgKCEkNCB8fCAhJDQtPmlzU2lt
cGxlKCkpCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAg
JCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgICAgICQkLT5z
ZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpOwotCi0gICAgICAgICAgICBDU1NTZWxl
Y3RvclZlY3RvciBzZWxlY3RvclZlY3RvcjsKLSAgICAgICAgICAgIHNlbGVjdG9yVmVjdG9yLmFw
cGVuZChwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQ0KSk7Ci0gICAgICAgICAgICAkJC0+
YWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvclZlY3Rvcik7Ci0KLSAgICAgICAgICAgICQyLmxv
d2VyKCk7Ci0gICAgICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOwotICAgICAgICB9Ci0gICAgfQot
ICA7Ci0KLWRlY2xhcmF0aW9uX2xpc3Q6Ci0gICAgZGVjbGFyYXRpb24gewotICAgICAgICAkJCA9
ICQxOwotICAgIH0KLSAgICB8IGRlY2xfbGlzdCBkZWNsYXJhdGlvbiB7Ci0gICAgICAgICQkID0g
JDE7Ci0gICAgICAgIGlmICggJDIgKQotICAgICAgICAgICAgJCQgPSAkMjsKLSAgICB9Ci0gICAg
fCBkZWNsX2xpc3QgewotICAgICAgICAkJCA9ICQxOwotICAgIH0KLSAgICB8IGVycm9yIGludmFs
aWRfYmxvY2tfbGlzdCBlcnJvciB7Ci0gICAgICAgICQkID0gZmFsc2U7Ci0gICAgfQotICAgIHwg
ZXJyb3IgewotICAgICAgICAkJCA9IGZhbHNlOwotICAgIH0KLSAgICB8IGRlY2xfbGlzdCBlcnJv
ciB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAgIHwgZGVjbF9saXN0IGludmFsaWRfYmxv
Y2tfbGlzdCB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAgIDsKLQotZGVjbF9saXN0Ogot
ICAgIGRlY2xhcmF0aW9uICc7JyBtYXliZV9zcGFjZSB7Ci0gICAgICAgIHBhcnNlci0+bWFya1By
b3BlcnR5U3RhcnQoKTsKLSAgICAgICAgJCQgPSAkMTsKLSAgICB9Ci0gICAgfCBkZWNsYXJhdGlv
biBpbnZhbGlkX2Jsb2NrX2xpc3QgbWF5YmVfc3BhY2UgewotICAgICAgICAkJCA9IGZhbHNlOwot
ICAgIH0KLSAgICB8IGRlY2xhcmF0aW9uIGludmFsaWRfYmxvY2tfbGlzdCAnOycgbWF5YmVfc3Bh
Y2UgewotICAgICAgICAkJCA9IGZhbHNlOwotICAgIH0KLSAgICB8IGVycm9yICc7JyBtYXliZV9z
cGFjZSB7Ci0gICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5U3RhcnQoKTsKLSAgICAgICAgJCQg
PSBmYWxzZTsKLSAgICB9Ci0gICAgfCBlcnJvciBpbnZhbGlkX2Jsb2NrX2xpc3QgZXJyb3IgJzsn
IG1heWJlX3NwYWNlIHsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAgICB9Ci0gICAgfCBkZWNsX2xp
c3QgZGVjbGFyYXRpb24gJzsnIG1heWJlX3NwYWNlIHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUHJv
cGVydHlTdGFydCgpOwotICAgICAgICAkJCA9ICQxOwotICAgICAgICBpZiAoJDIpCi0gICAgICAg
ICAgICAkJCA9ICQyOwotICAgIH0KLSAgICB8IGRlY2xfbGlzdCBlcnJvciAnOycgbWF5YmVfc3Bh
Y2UgewotICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7Ci0gICAgICAgICQkID0g
JDE7Ci0gICAgfQotICAgIHwgZGVjbF9saXN0IGVycm9yIGludmFsaWRfYmxvY2tfbGlzdCBlcnJv
ciAnOycgbWF5YmVfc3BhY2UgewotICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7
Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAgIDsKLQotZGVjbGFyYXRpb246Ci0gICAgVkFS
X0RFRklOSVRJT04gJzonIG1heWJlX3NwYWNlIGV4cHIgcHJpbyB7Ci0jaWYgRU5BQkxFKENTU19W
QVJJQUJMRVMpCi0gICAgICAgIHBhcnNlci0+c3RvcmVWYXJpYWJsZURlY2xhcmF0aW9uKCQxLCBw
YXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCksICQ1KTsKLSAgICAgICAgJCQgPSB0cnVl
OwotICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eUVuZCgkNSwgdHJ1ZSk7Ci0jZWxzZQotICAg
ICAgICAkJCA9IGZhbHNlOwotI2VuZGlmCi0gICAgfQotICAgIHwKLSAgICBwcm9wZXJ0eSAnOicg
bWF5YmVfc3BhY2UgZXhwciBwcmlvIHsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAgICAgICAgYm9v
bCBpc1Byb3BlcnR5UGFyc2VkID0gZmFsc2U7Ci0gICAgICAgIGlmICgkMSAmJiAkNCkgewotICAg
ICAgICAgICAgcGFyc2VyLT5tX3ZhbHVlTGlzdCA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVM
aXN0KCQ0KTsKLSAgICAgICAgICAgIGludCBvbGRQYXJzZWRQcm9wZXJ0aWVzID0gcGFyc2VyLT5t
X3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKTsKLSAgICAgICAgICAgICQkID0gcGFyc2VyLT5wYXJz
ZVZhbHVlKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KCQxKSwgJDUpOwotICAgICAgICAgICAg
aWYgKCEkJCkKLSAgICAgICAgICAgICAgICBwYXJzZXItPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMo
cGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKSAtIG9sZFBhcnNlZFByb3BlcnRpZXMp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGlzUHJvcGVydHlQYXJzZWQgPSB0
cnVlOwotICAgICAgICAgICAgcGFyc2VyLT5tX3ZhbHVlTGlzdCA9IG51bGxwdHI7Ci0gICAgICAg
IH0KLSAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlFbmQoJDUsIGlzUHJvcGVydHlQYXJzZWQp
OwotICAgIH0KLSAgICB8Ci0gICAgcHJvcGVydHkgZXJyb3IgewotICAgICAgICAkJCA9IGZhbHNl
OwotICAgIH0KLSAgICB8Ci0gICAgcHJvcGVydHkgJzonIG1heWJlX3NwYWNlIGVycm9yIGV4cHIg
cHJpbyB7Ci0gICAgICAgIC8qIFRoZSBkZWZhdWx0IG1vdmFibGUgdHlwZSB0ZW1wbGF0ZSBoYXMg
bGV0dGVyLXNwYWNpbmc6IC5ub25lOyAgSGFuZGxlIHRoaXMgYnkgbG9va2luZyBmb3IKLSAgICAg
ICAgZXJyb3IgdG9rZW5zIGF0IHRoZSBzdGFydCBvZiBhbiBleHByLCByZWNvdmVyIHRoZSBleHBy
IGFuZCB0aGVuIHRyZWF0IGFzIGFuIGVycm9yLCBjbGVhbmluZwotICAgICAgICB1cCBhbmQgZGVs
ZXRpbmcgdGhlIHNoaWZ0ZWQgZXhwci4gICovCi0gICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5
RW5kKGZhbHNlLCBmYWxzZSk7Ci0gICAgICAgICQkID0gZmFsc2U7Ci0gICAgfQotICAgIHwKLSAg
ICBwcm9wZXJ0eSAnOicgbWF5YmVfc3BhY2UgZXhwciBwcmlvIGVycm9yIHsKLSAgICAgICAgLyog
V2hlbiB3ZSBlbmNvdW50ZXIgc29tZXRoaW5nIGxpa2UgcCB7Y29sb3I6IHJlZCAhaW1wb3J0YW50
IGZhaWw7fSB3ZSBzaG91bGQgZHJvcCB0aGUgZGVjbGFyYXRpb24gKi8KLSAgICAgICAgcGFyc2Vy
LT5tYXJrUHJvcGVydHlFbmQoZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAg
ICB9Ci0gICAgfAotICAgIElNUE9SVEFOVF9TWU0gbWF5YmVfc3BhY2UgewotICAgICAgICAvKiBI
YW5kbGUgdGhpcyBjYXNlOiBkaXYgeyB0ZXh0LWFsaWduOiBjZW50ZXI7ICFpbXBvcnRhbnQgfSBK
dXN0IHJlZHVjZSBhd2F5IHRoZSBzdHJheSAhaW1wb3J0YW50LiAqLwotICAgICAgICAkJCA9IGZh
bHNlOwotICAgIH0KLSAgICB8Ci0gICAgcHJvcGVydHkgJzonIG1heWJlX3NwYWNlIHsKLSAgICAg
ICAgLyogZGl2IHsgZm9udC1mYW1pbHk6IH0gSnVzdCByZWR1Y2UgYXdheSB0aGlzIHByb3BlcnR5
IHdpdGggbm8gdmFsdWUuICovCi0gICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5RW5kKGZhbHNl
LCBmYWxzZSk7Ci0gICAgICAgICQkID0gZmFsc2U7Ci0gICAgfQotICAgIHwKLSAgICBwcm9wZXJ0
eSAnOicgbWF5YmVfc3BhY2UgZXJyb3IgewotICAgICAgICAvKiBpZiB3ZSBjb21lIGFjcm9zcyBy
dWxlcyB3aXRoIGludmFsaWQgdmFsdWVzIGxpa2UgdGhpcyBjYXNlOiBwIHsgd2VpZ2h0OiAqOyB9
LCBqdXN0IGRpc2NhcmQgdGhlIHJ1bGUgKi8KLSAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlF
bmQoZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAgICB9Ci0gICAgfAotICAg
IHByb3BlcnR5IGludmFsaWRfYmxvY2sgewotICAgICAgICAvKiBpZiB3ZSBjb21lIGFjcm9zczog
ZGl2IHsgY29sb3J7O2NvbG9yOm1hcm9vbn0gfSwgaWdub3JlIGV2ZXJ5dGhpbmcgd2l0aGluIGN1
cmx5IGJyYWNrZXRzICovCi0gICAgICAgICQkID0gZmFsc2U7Ci0gICAgfQotICA7Ci0KLXByb3Bl
cnR5OgotICAgIElERU5UIG1heWJlX3NwYWNlIHsKLSAgICAgICAgJCQgPSBjc3NQcm9wZXJ0eUlE
KCQxKTsKLSAgICB9Ci0gIDsKLQotcHJpbzoKLSAgICBJTVBPUlRBTlRfU1lNIG1heWJlX3NwYWNl
IHsgJCQgPSB0cnVlOyB9Ci0gICAgfCAvKiBlbXB0eSAqLyB7ICQkID0gZmFsc2U7IH0KLSAgOwot
Ci1leHByOgotICAgIHRlcm0gewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdW
YWx1ZUxpc3QoKTsKLSAgICAgICAgJCQtPmFkZFZhbHVlKHBhcnNlci0+c2lua0Zsb2F0aW5nVmFs
dWUoJDEpKTsKLSAgICB9Ci0gICAgfCBleHByIG9wZXJhdG9yIHRlcm0gewotICAgICAgICAkJCA9
ICQxOwotICAgICAgICBpZiAoJCQpIHsKLSAgICAgICAgICAgIGlmICgkMikgewotICAgICAgICAg
ICAgICAgIENTU1BhcnNlclZhbHVlIHY7Ci0gICAgICAgICAgICAgICAgdi5pZCA9IDA7Ci0gICAg
ICAgICAgICAgICAgdi51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOwotICAgICAgICAg
ICAgICAgIHYuaVZhbHVlID0gJDI7Ci0gICAgICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHYpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHBhcnNlci0+c2lua0Zsb2F0
aW5nVmFsdWUoJDMpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICB8IGV4cHIgaW52YWxpZF9ibG9j
a19saXN0IHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICB8IGV4cHIgaW52YWxpZF9ibG9j
a19saXN0IGVycm9yIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICB8IGV4cHIgZXJyb3Ig
ewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICA7Ci0KLW9wZXJhdG9yOgotICAgICcvJyBtYXli
ZV9zcGFjZSB7Ci0gICAgICAgICQkID0gJy8nOwotICAgIH0KLSAgfCAnLCcgbWF5YmVfc3BhY2Ug
ewotICAgICAgICAkJCA9ICcsJzsKLSAgICB9Ci0gIHwgLyogZW1wdHkgKi8gewotICAgICAgICAk
JCA9IDA7Ci0gIH0KLSAgOwotCi10ZXJtOgotICB1bmFyeV90ZXJtIHsgJCQgPSAkMTsgfQotICB8
IHVuYXJ5X29wZXJhdG9yIHVuYXJ5X3Rlcm0geyAkJCA9ICQyOyAkJC5mVmFsdWUgKj0gJDE7IH0K
LSAgfCBTVFJJTkcgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51
bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkc7IH0KLSAgfCBJREVOVCBtYXliZV9z
cGFjZSB7Ci0gICAgICAkJC5pZCA9IGNzc1ZhbHVlS2V5d29yZElEKCQxKTsKLSAgICAgICQkLnVu
aXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UOwotICAgICAgJCQuc3RyaW5nID0gJDE7
Ci0gIH0KLSAgLyogV2UgbWlnaHQgbmVlZCB0byBhY3R1YWxseSBwYXJzZSB0aGUgbnVtYmVyIGZy
b20gYSBkaW1lbnNpb24sIGJ1dCB3ZSBjYW4ndCBqdXN0IHB1dCBzb21ldGhpbmcgdGhhdCB1c2Vz
ICQkLnN0cmluZyBpbnRvIHVuYXJ5X3Rlcm0uICovCi0gIHwgRElNRU4gbWF5YmVfc3BhY2UgeyAk
JC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19ESU1FTlNJT047IH0KLSAgfCB1bmFyeV9vcGVyYXRvciBESU1FTiBtYXliZV9zcGFjZSB7ICQk
LmlkID0gMDsgJCQuc3RyaW5nID0gJDI7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X0RJTUVOU0lPTjsgfQotICB8IFVSSSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5n
ID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSTsgfQotICB8IFVOSUNP
REVSQU5HRSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VOSUNPREVfUkFOR0U7IH0KLSAgfCBIRVggbWF5YmVf
c3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1I7IH0KLSAgfCAnIycgbWF5YmVfc3BhY2UgeyAkJC5p
ZCA9IDA7ICQkLnN0cmluZyA9IENTU1BhcnNlclN0cmluZygpOyAkJC51bml0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1I7IH0gLyogSGFuZGxlIGVycm9yIGNhc2U6ICJj
b2xvcjogIzsiICovCi0gIHwgVkFSRlVOQ1RJT04gbWF5YmVfc3BhY2UgSURFTlQgJyknIG1heWJl
X3NwYWNlIHsKLSNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKLSAgICAgICQkLmlkID0gMDsKLSAg
ICAgICQkLnN0cmluZyA9ICQzOwotICAgICAgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfVkFSSUFCTEVfTkFNRTsKLSNlbmRpZgotICB9Ci0gIC8qIEZJWE1FOiBhY2NvcmRpbmcgdG8g
dGhlIHNwZWNzIGEgZnVuY3Rpb24gY2FuIGhhdmUgYSB1bmFyeV9vcGVyYXRvciBpbiBmcm9udC4g
SSBrbm93IG5vIGNhc2Ugd2hlcmUgdGhpcyBtYWtlcyBzZW5zZSAqLwotICB8IGZ1bmN0aW9uIHsK
LSAgICAgICQkID0gJDE7Ci0gIH0KLSAgfCBjYWxjX2Z1bmN0aW9uIHsKLSAgICAgICQkID0gJDE7
Ci0gIH0KLSAgfCBtaW5fb3JfbWF4X2Z1bmN0aW9uIHsKLSAgICAgICQkID0gJDE7Ci0gIH0KLSAg
fCAnJScgbWF5YmVfc3BhY2UgeyAvKiBIYW5kbGUgd2lkdGg6ICU7ICovCi0gICAgICAkJC5pZCA9
IDA7ICQkLnVuaXQgPSAwOwotICB9Ci0gIDsKLQotdW5hcnlfdGVybToKLSAgSU5URUdFUiBtYXli
ZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuaXNJbnQgPSB0cnVlOyAkJC5mVmFsdWUgPSAkMTsgJCQu
dW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOyB9Ci0gIHwgRkxPQVRUT0tFTiBt
YXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuaXNJbnQgPSBmYWxzZTsgJCQuZlZhbHVlID0gJDE7
ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjsgfQotICB8IFBFUkNFTlRB
R0UgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFOyB9Ci0gIHwgUFhTIG1heWJlX3NwYWNlIHsg
JCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUFg7IH0KLSAgfCBDTVMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQx
OyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19DTTsgfQotICB8IE1NUyBtYXliZV9z
cGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX01NOyB9Ci0gIHwgSU5TIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFs
dWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSU47IH0KLSAgfCBQVFMg
bWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QVDsgfQotICB8IFBDUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsg
JCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BDOyB9Ci0g
IHwgREVHUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRzsgfQotICB8IFJBRFMgbWF5YmVfc3BhY2UgeyAk
JC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19SQUQ7IH0KLSAgfCBHUkFEUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0g
JDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0dSQUQ7IH0KLSAgfCBUVVJOUyBt
YXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1RVUk47IH0KLSAgfCBNU0VDUyBtYXliZV9zcGFjZSB7ICQkLmlkID0g
MDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01TOyB9
Ci0gIHwgU0VDUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVu
aXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1M7IH0KLSAgfCBIRVJUWiBtYXliZV9zcGFjZSB7
ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX0haOyB9Ci0gIHwgS0hFUlRaIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUg
PSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfS0haOyB9Ci0gIHwgRU1TIG1h
eWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfRU1TOyB9Ci0gIHwgUUVNUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsg
JCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6UV9FTVM7IH0KLSAgfCBF
WFMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19FWFM7IH0KLSAgfCBSRU1TIG1heWJlX3NwYWNlIHsKLSAgICAg
ICQkLmlkID0gMDsKLSAgICAgICQkLmZWYWx1ZSA9ICQxOwotICAgICAgJCQudW5pdCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUkVNUzsKLSAgICAgIGlmIChwYXJzZXItPm1fc3R5bGVTaGVldCkK
LSAgICAgICAgICBwYXJzZXItPm1fc3R5bGVTaGVldC0+cGFyc2VyU2V0VXNlc1JlbVVuaXRzKHRy
dWUpOwotICB9Ci0gIHwgVlcgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQx
OyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WVzsgfQotICB8IFZIIG1heWJlX3Nw
YWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfVkg7IH0KLSAgfCBWTUlOIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFs
dWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVk1JTjsgfQotICB8IERQ
UFggbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19EUFBYOyB9Ci0gIHwgRFBJIG1heWJlX3NwYWNlIHsgJCQuaWQg
PSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRFBJ
OyB9Ci0gIHwgRFBDTSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQk
LnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQQ007IH0KLSAgOwotCi1mdW5jdGlvbjoK
LSAgICBGVU5DVElPTiBtYXliZV9zcGFjZSBleHByICcpJyBtYXliZV9zcGFjZSB7Ci0gICAgICAg
IENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7
Ci0gICAgICAgIGYtPm5hbWUgPSAkMTsKLSAgICAgICAgZi0+YXJncyA9IHBhcnNlci0+c2lua0Zs
b2F0aW5nVmFsdWVMaXN0KCQzKTsKLSAgICAgICAgJCQuaWQgPSAwOwotICAgICAgICAkJC51bml0
ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uOwotICAgICAgICAkJC5mdW5jdGlvbiA9IGY7Ci0g
ICAgfSB8Ci0gICAgRlVOQ1RJT04gbWF5YmVfc3BhY2UgZXhwciBUT0tFTl9FT0YgewotICAgICAg
ICBDU1NQYXJzZXJGdW5jdGlvbiogZiA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdGdW5jdGlvbigp
OwotICAgICAgICBmLT5uYW1lID0gJDE7Ci0gICAgICAgIGYtPmFyZ3MgPSBwYXJzZXItPnNpbmtG
bG9hdGluZ1ZhbHVlTGlzdCgkMyk7Ci0gICAgICAgICQkLmlkID0gMDsKLSAgICAgICAgJCQudW5p
dCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKLSAgICAgICAgJCQuZnVuY3Rpb24gPSBmOwot
ICAgIH0gfAotICAgIEZVTkNUSU9OIG1heWJlX3NwYWNlICcpJyBtYXliZV9zcGFjZSB7Ci0gICAg
ICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9u
KCk7Ci0gICAgICAgIGYtPm5hbWUgPSAkMTsKLSAgICAgICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiB2
YWx1ZUxpc3QgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nVmFsdWVMaXN0KCk7Ci0gICAgICAgIGYt
PmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCh2YWx1ZUxpc3QpOwotICAgICAg
ICAkJC5pZCA9IDA7Ci0gICAgICAgICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb247
Ci0gICAgICAgICQkLmZ1bmN0aW9uID0gZjsKLSAgICB9IHwKLSAgICBGVU5DVElPTiBtYXliZV9z
cGFjZSBlcnJvciB7Ci0gICAgICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVh
dGVGbG9hdGluZ0Z1bmN0aW9uKCk7Ci0gICAgICAgIGYtPm5hbWUgPSAkMTsKLSAgICAgICAgZi0+
YXJncyA9IG51bGxwdHI7Ci0gICAgICAgICQkLmlkID0gMDsKLSAgICAgICAgJCQudW5pdCA9IENT
U1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKLSAgICAgICAgJCQuZnVuY3Rpb24gPSBmOwotICB9Ci0g
IDsKLSAKLWNhbGNfZnVuY190ZXJtOgotICB1bmFyeV90ZXJtIHsgJCQgPSAkMTsgfQotICB8IFZB
UkZVTkNUSU9OIG1heWJlX3NwYWNlIElERU5UICcpJyBtYXliZV9zcGFjZSB7Ci0jaWYgRU5BQkxF
KENTU19WQVJJQUJMRVMpCi0gICAgICAkJC5pZCA9IDA7Ci0gICAgICAkJC5zdHJpbmcgPSAkMzsK
LSAgICAgICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZBUklBQkxFX05BTUU7Ci0j
ZW5kaWYKLSAgfQotICB8IHVuYXJ5X29wZXJhdG9yIHVuYXJ5X3Rlcm0geyAkJCA9ICQyOyAkJC5m
VmFsdWUgKj0gJDE7IH0KLSAgOwotCi1jYWxjX2Z1bmNfb3BlcmF0b3I6Ci0gICAgJysnIFdISVRF
U1BBQ0UgewotICAgICAgICAkJCA9ICcrJzsKLSAgICB9Ci0gICAgfCAnLScgV0hJVEVTUEFDRSB7
Ci0gICAgICAgICQkID0gJy0nOwotICAgIH0KLSAgICB8ICcqJyBtYXliZV9zcGFjZSB7Ci0gICAg
ICAgICQkID0gJyonOwotICAgIH0KLSAgICB8ICcvJyBtYXliZV9zcGFjZSB7Ci0gICAgICAgICQk
ID0gJy8nOwotICAgIH0KLSAgOwotCi1jYWxjX2Z1bmNfcGFyZW5fZXhwcjoKLSAgICAnKCcgbWF5
YmVfc3BhY2UgY2FsY19mdW5jX2V4cHIgbWF5YmVfc3BhY2UgJyknIG1heWJlX3NwYWNlIHsKLSAg
ICAgICAgaWYgKCQzKSB7Ci0gICAgICAgICAgICAkJCA9ICQzOwotICAgICAgICAgICAgQ1NTUGFy
c2VyVmFsdWUgdjsKLSAgICAgICAgICAgIHYuaWQgPSAwOwotICAgICAgICAgICAgdi51bml0ID0g
Q1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOwotICAgICAgICAgICAgdi5pVmFsdWUgPSAnKCc7Ci0g
ICAgICAgICAgICAkJC0+aW5zZXJ0VmFsdWVBdCgwLCB2KTsKLSAgICAgICAgICAgIHYuaVZhbHVl
ID0gJyknOwotICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHYpOwotICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgICQkID0gMDsKLSAgICB9Ci0KLWNhbGNfZnVuY19leHByOgotICAgIGNhbGNfZnVu
Y190ZXJtIG1heWJlX3NwYWNlIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5n
VmFsdWVMaXN0KCk7Ci0gICAgICAgICQkLT5hZGRWYWx1ZShwYXJzZXItPnNpbmtGbG9hdGluZ1Zh
bHVlKCQxKSk7Ci0gICAgfQotICAgIHwgY2FsY19mdW5jX2V4cHIgY2FsY19mdW5jX29wZXJhdG9y
IGNhbGNfZnVuY190ZXJtIHsKLSAgICAgICAgaWYgKCQxICYmICQyKSB7Ci0gICAgICAgICAgICAk
JCA9ICQxOwotICAgICAgICAgICAgQ1NTUGFyc2VyVmFsdWUgdjsKLSAgICAgICAgICAgIHYuaWQg
PSAwOwotICAgICAgICAgICAgdi51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOwotICAg
ICAgICAgICAgdi5pVmFsdWUgPSAkMjsKLSAgICAgICAgICAgICQkLT5hZGRWYWx1ZSh2KTsKLSAg
ICAgICAgICAgICQkLT5hZGRWYWx1ZShwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlKCQzKSk7Ci0g
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgJCQgPSAwOwotCi0gICAgfQotICAgIHwgY2FsY19m
dW5jX2V4cHIgY2FsY19mdW5jX29wZXJhdG9yIGNhbGNfZnVuY19wYXJlbl9leHByIHsKLSAgICAg
ICAgaWYgKCQxICYmICQyICYmICQzKSB7Ci0gICAgICAgICAgICAkJCA9ICQxOwotICAgICAgICAg
ICAgQ1NTUGFyc2VyVmFsdWUgdjsKLSAgICAgICAgICAgIHYuaWQgPSAwOwotICAgICAgICAgICAg
di51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOwotICAgICAgICAgICAgdi5pVmFsdWUg
PSAkMjsKLSAgICAgICAgICAgICQkLT5hZGRWYWx1ZSh2KTsKLSAgICAgICAgICAgICQkLT5leHRl
bmQoKigkMykpOwotICAgICAgICB9IGVsc2UgCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgfQot
ICAgIHwgY2FsY19mdW5jX3BhcmVuX2V4cHIKLSAgICB8IGNhbGNfZnVuY19leHByIGVycm9yIHsK
LSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgOwotCi1jYWxjX2Z1bmNfZXhwcl9saXN0OgotICAg
IGNhbGNfZnVuY19leHByICB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfSAgICAKLSAgICB8IGNh
bGNfZnVuY19leHByX2xpc3QgJywnIG1heWJlX3NwYWNlIGNhbGNfZnVuY19leHByIHsKLSAgICAg
ICAgaWYgKCQxICYmICQ0KSB7Ci0gICAgICAgICAgICAkJCA9ICQxOwotICAgICAgICAgICAgQ1NT
UGFyc2VyVmFsdWUgdjsKLSAgICAgICAgICAgIHYuaWQgPSAwOwotICAgICAgICAgICAgdi51bml0
ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOwotICAgICAgICAgICAgdi5pVmFsdWUgPSAnLCc7
Ci0gICAgICAgICAgICAkJC0+YWRkVmFsdWUodik7Ci0gICAgICAgICAgICAkJC0+ZXh0ZW5kKCoo
JDQpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgIAot
Ci1jYWxjX2Z1bmN0aW9uOgotICAgIENBTENGVU5DVElPTiBtYXliZV9zcGFjZSBjYWxjX2Z1bmNf
ZXhwciAnKScgbWF5YmVfc3BhY2UgewotICAgICAgICBDU1NQYXJzZXJGdW5jdGlvbiogZiA9IHBh
cnNlci0+Y3JlYXRlRmxvYXRpbmdGdW5jdGlvbigpOwotICAgICAgICBmLT5uYW1lID0gJDE7Ci0g
ICAgICAgIGYtPmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkMyk7Ci0gICAg
ICAgICQkLmlkID0gMDsKLSAgICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlv
bjsKLSAgICAgICAgJCQuZnVuY3Rpb24gPSBmOwotICAgIH0KLSAgICB8IENBTENGVU5DVElPTiBt
YXliZV9zcGFjZSBlcnJvciB7Ci0gICAgICAgIFlZRVJST1I7Ci0gICAgfQotICAgIDsKLQotCi1t
aW5fb3JfbWF4OgotICAgIE1JTkZVTkNUSU9OIHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICB9Ci0g
ICAgfCBNQVhGVU5DVElPTiB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAgIDsKLQotbWlu
X29yX21heF9mdW5jdGlvbjoKLSAgICBtaW5fb3JfbWF4IG1heWJlX3NwYWNlIGNhbGNfZnVuY19l
eHByX2xpc3QgJyknIG1heWJlX3NwYWNlIHsKLSAgICAgICAgQ1NTUGFyc2VyRnVuY3Rpb24qIGYg
PSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsKLSAgICAgICAgZi0+bmFtZSA9ICQx
OwotICAgICAgICBmLT5hcmdzID0gcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDMpOwot
ICAgICAgICAkJC5pZCA9IDA7Ci0gICAgICAgICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6RnVu
Y3Rpb247Ci0gICAgICAgICQkLmZ1bmN0aW9uID0gZjsKLSAgICB9IAotICAgIHwgbWluX29yX21h
eCBtYXliZV9zcGFjZSBlcnJvciB7Ci0gICAgICAgIFlZRVJST1I7Ci0gICAgfQotICAgIDsKLQot
LyogZXJyb3IgaGFuZGxpbmcgcnVsZXMgKi8KLQotc2F2ZV9ibG9jazoKLSAgICBjbG9zaW5nX2Jy
YWNlIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgfCBlcnJvciBjbG9zaW5nX2JyYWNlIHsK
LSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICA7Ci0KLWludmFsaWRfYXQ6Ci0gICAgQVRLRVlX
T1JEIGVycm9yIGludmFsaWRfYmxvY2sgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICB8IEFU
S0VZV09SRCBlcnJvciAnOycgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgIDsKLQotaW52
YWxpZF9ydWxlOgotICAgIGVycm9yIGludmFsaWRfYmxvY2sgewotICAgICAgICAkJCA9IDA7Ci0g
ICAgfQotCi0vKgotICBTZWVtcyBsaWtlIHRoZSB0d28gcnVsZXMgYmVsb3cgYXJlIHRyeWluZyB0
b28gbXVjaCBhbmQgdmlvbGF0aW5nCi0gIGh0dHA6Ly93d3cuaGl4aWUuY2gvdGVzdHMvZXZpbC9t
aXhlZC9jc3NlcnJvcmhhbmRsaW5nLmh0bWwKLQotICB8IGVycm9yICc7JyB7Ci0gICAgICAgICQk
ID0gMDsKLSAgICB9Ci0gIHwgZXJyb3IgJ30nIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSov
Ci0gICAgOwotCi1pbnZhbGlkX2Jsb2NrOgotICAgICd7JyBlcnJvciBpbnZhbGlkX2Jsb2NrX2xp
c3QgZXJyb3IgY2xvc2luZ19icmFjZSB7Ci0gICAgICAgIHBhcnNlci0+aW52YWxpZEJsb2NrSGl0
KCk7Ci0gICAgfQotICB8ICd7JyBlcnJvciBjbG9zaW5nX2JyYWNlIHsKLSAgICAgICAgcGFyc2Vy
LT5pbnZhbGlkQmxvY2tIaXQoKTsKLSAgICB9Ci0gICAgOwotCi1pbnZhbGlkX2Jsb2NrX2xpc3Q6
Ci0gICAgaW52YWxpZF9ibG9jawotICB8IGludmFsaWRfYmxvY2tfbGlzdCBlcnJvciBpbnZhbGlk
X2Jsb2NrCi07Ci0KLSUlCi0KLSNpZiBZWURFQlVHID4gMAotc3RhdGljIHZvaWQgcHJpbnRfdG9r
ZW5fdmFsdWUoRklMRSAqIHl5b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNUWVBFIGNvbnN0ICZ5eXZh
bHVlKQotewotICAgIHN3aXRjaCAoeXl0eXBlKSB7Ci0gICAgY2FzZSBJREVOVDoKLSAgICBjYXNl
IFNUUklORzoKLSAgICBjYXNlIE5USDoKLSAgICBjYXNlIEhFWDoKLSAgICBjYXNlIElEU0VMOgot
ICAgIGNhc2UgRElNRU46Ci0gICAgY2FzZSBJTlZBTElERElNRU46Ci0gICAgY2FzZSBVUkk6Ci0g
ICAgY2FzZSBGVU5DVElPTjoKLSAgICBjYXNlIEFOWUZVTkNUSU9OOgotICAgIGNhc2UgTk9URlVO
Q1RJT046Ci0gICAgY2FzZSBDQUxDRlVOQ1RJT046Ci0gICAgY2FzZSBNSU5GVU5DVElPTjoKLSAg
ICBjYXNlIE1BWEZVTkNUSU9OOgotICAgIGNhc2UgVkFSX0RFRklOSVRJT046Ci0gICAgY2FzZSBV
TklDT0RFUkFOR0U6Ci0gICAgICAgIFlZRlBSSU5URih5eW91dHB1dCwgIiVzIiwgU3RyaW5nKHl5
dmFsdWUuc3RyaW5nKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1t
YXIueS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43ZTJkYmYyZjQ4MjY1ZjJmNWI2NzJmNDJhOTkxMDM4MTdjYWRi
N2YzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5p
bgpAQCAtMCwwICsxLDE2OTcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDAyLTIwMDMgTGFy
cyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5j
b20pCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+
CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK
KyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC
b3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqCisgKi8KKworJXB1cmVfcGFyc2VyCisKKyVw
YXJzZS1wYXJhbSB7IENTU1BhcnNlciogcGFyc2VyIH0KKyVsZXgtcGFyYW0geyBDU1NQYXJzZXIq
IHBhcnNlciB9CisKKyV1bmlvbiB7CisgICAgYm9vbCBib29sZWFuOworICAgIGNoYXIgY2hhcmFj
dGVyOworICAgIGludCBpbnRlZ2VyOworICAgIGRvdWJsZSBudW1iZXI7CisgICAgQ1NTUGFyc2Vy
U3RyaW5nIHN0cmluZzsKKworICAgIFN0eWxlUnVsZUJhc2UqIHJ1bGU7CisgICAgVmVjdG9yPFJl
ZlB0cjxTdHlsZVJ1bGVCYXNlPiA+KiBydWxlTGlzdDsKKyAgICBDU1NQYXJzZXJTZWxlY3Rvciog
c2VsZWN0b3I7CisgICAgQ1NTU2VsZWN0b3JWZWN0b3IqIHNlbGVjdG9yTGlzdDsKKyAgICBDU1NT
ZWxlY3Rvcjo6TWFyZ2luQm94VHlwZSBtYXJnaW5Cb3g7CisgICAgQ1NTU2VsZWN0b3I6OlJlbGF0
aW9uIHJlbGF0aW9uOworICAgIE1lZGlhUXVlcnlTZXQqIG1lZGlhTGlzdDsKKyAgICBNZWRpYVF1
ZXJ5KiBtZWRpYVF1ZXJ5OworICAgIE1lZGlhUXVlcnk6OlJlc3RyaWN0b3IgbWVkaWFRdWVyeVJl
c3RyaWN0b3I7CisgICAgTWVkaWFRdWVyeUV4cCogbWVkaWFRdWVyeUV4cDsKKyAgICBDU1NQYXJz
ZXJWYWx1ZSB2YWx1ZTsKKyAgICBDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlTGlzdDsKKyAgICBW
ZWN0b3I8T3duUHRyPE1lZGlhUXVlcnlFeHA+ID4qIG1lZGlhUXVlcnlFeHBMaXN0OworICAgIFN0
eWxlS2V5ZnJhbWUqIGtleWZyYW1lOworICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVLZXlmcmFtZT4g
Pioga2V5ZnJhbWVSdWxlTGlzdDsKKyAgICBmbG9hdCB2YWw7CisgICAgQ1NTUHJvcGVydHlJRCBp
ZDsKK30KKworJXsKKworc3RhdGljIGlubGluZSBpbnQgY3NzeXllcnJvcih2b2lkKiwgY29uc3Qg
Y2hhciopCit7CisgICAgcmV0dXJuIDE7Cit9CisKKyV9CisKKyVleHBlY3QgNjMKKworJW5vbmFz
c29jIExPV0VTVF9QUkVDCisKKyVsZWZ0IFVOSU1QT1JUQU5UX1RPSworCisldG9rZW4gV0hJVEVT
UEFDRSBTR01MX0NECisldG9rZW4gVE9LRU5fRU9GIDAKKworJXRva2VuIElOQ0xVREVTCisldG9r
ZW4gREFTSE1BVENICisldG9rZW4gQkVHSU5TV0lUSAorJXRva2VuIEVORFNXSVRICisldG9rZW4g
Q09OVEFJTlMKKworJXRva2VuIDxzdHJpbmc+IFNUUklORworJXJpZ2h0IDxzdHJpbmc+IElERU5U
CisldG9rZW4gPHN0cmluZz4gTlRICisKKyVub25hc3NvYyA8c3RyaW5nPiBIRVgKKyVub25hc3Nv
YyA8c3RyaW5nPiBJRFNFTAorJW5vbmFzc29jICc6JworJW5vbmFzc29jICcuJworJW5vbmFzc29j
ICdbJworJW5vbmFzc29jIDxzdHJpbmc+ICcqJworJW5vbmFzc29jIGVycm9yCislbGVmdCAnfCcK
KworJXRva2VuIElNUE9SVF9TWU0KKyV0b2tlbiBQQUdFX1NZTQorJXRva2VuIE1FRElBX1NZTQor
JXRva2VuIEZPTlRfRkFDRV9TWU0KKyV0b2tlbiBDSEFSU0VUX1NZTQorJXRva2VuIE5BTUVTUEFD
RV9TWU0KKyV0b2tlbiBWQVJGVU5DVElPTgorJXRva2VuIFdFQktJVF9SVUxFX1NZTQorJXRva2Vu
IFdFQktJVF9ERUNMU19TWU0KKyV0b2tlbiBXRUJLSVRfS0VZRlJBTUVfUlVMRV9TWU0KKyV0b2tl
biBXRUJLSVRfS0VZRlJBTUVTX1NZTQorJXRva2VuIFdFQktJVF9WQUxVRV9TWU0KKyV0b2tlbiBX
RUJLSVRfTUVESUFRVUVSWV9TWU0KKyV0b2tlbiBXRUJLSVRfU0VMRUNUT1JfU1lNCisldG9rZW4g
V0VCS0lUX1JFR0lPTl9SVUxFX1NZTQorJXRva2VuIDxtYXJnaW5Cb3g+IFRPUExFRlRDT1JORVJf
U1lNCisldG9rZW4gPG1hcmdpbkJveD4gVE9QTEVGVF9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBU
T1BDRU5URVJfU1lNCisldG9rZW4gPG1hcmdpbkJveD4gVE9QUklHSFRfU1lNCisldG9rZW4gPG1h
cmdpbkJveD4gVE9QUklHSFRDT1JORVJfU1lNCisldG9rZW4gPG1hcmdpbkJveD4gQk9UVE9NTEVG
VENPUk5FUl9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBCT1RUT01MRUZUX1NZTQorJXRva2VuIDxt
YXJnaW5Cb3g+IEJPVFRPTUNFTlRFUl9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBCT1RUT01SSUdI
VF9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBCT1RUT01SSUdIVENPUk5FUl9TWU0KKyV0b2tlbiA8
bWFyZ2luQm94PiBMRUZUVE9QX1NZTQorJXRva2VuIDxtYXJnaW5Cb3g+IExFRlRNSURETEVfU1lN
CisldG9rZW4gPG1hcmdpbkJveD4gTEVGVEJPVFRPTV9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBS
SUdIVFRPUF9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBSSUdIVE1JRERMRV9TWU0KKyV0b2tlbiA8
bWFyZ2luQm94PiBSSUdIVEJPVFRPTV9TWU0KKworJXRva2VuIEFUS0VZV09SRAorCisldG9rZW4g
SU1QT1JUQU5UX1NZTQorJXRva2VuIE1FRElBX09OTFkKKyV0b2tlbiBNRURJQV9OT1QKKyV0b2tl
biBNRURJQV9BTkQKKworJXRva2VuIDxudW1iZXI+IFJFTVMKKyV0b2tlbiA8bnVtYmVyPiBRRU1T
CisldG9rZW4gPG51bWJlcj4gRU1TCisldG9rZW4gPG51bWJlcj4gRVhTCisldG9rZW4gPG51bWJl
cj4gUFhTCisldG9rZW4gPG51bWJlcj4gQ01TCisldG9rZW4gPG51bWJlcj4gTU1TCisldG9rZW4g
PG51bWJlcj4gSU5TCisldG9rZW4gPG51bWJlcj4gUFRTCisldG9rZW4gPG51bWJlcj4gUENTCisl
dG9rZW4gPG51bWJlcj4gREVHUworJXRva2VuIDxudW1iZXI+IFJBRFMKKyV0b2tlbiA8bnVtYmVy
PiBHUkFEUworJXRva2VuIDxudW1iZXI+IFRVUk5TCisldG9rZW4gPG51bWJlcj4gTVNFQ1MKKyV0
b2tlbiA8bnVtYmVyPiBTRUNTCisldG9rZW4gPG51bWJlcj4gSEVSVFoKKyV0b2tlbiA8bnVtYmVy
PiBLSEVSVFoKKyV0b2tlbiA8c3RyaW5nPiBESU1FTgorJXRva2VuIDxzdHJpbmc+IElOVkFMSURE
SU1FTgorJXRva2VuIDxudW1iZXI+IFBFUkNFTlRBR0UKKyV0b2tlbiA8bnVtYmVyPiBGTE9BVFRP
S0VOCisldG9rZW4gPG51bWJlcj4gSU5URUdFUgorJXRva2VuIDxudW1iZXI+IFZXCisldG9rZW4g
PG51bWJlcj4gVkgKKyV0b2tlbiA8bnVtYmVyPiBWTUlOCisldG9rZW4gPG51bWJlcj4gRFBQWAor
JXRva2VuIDxudW1iZXI+IERQSQorJXRva2VuIDxudW1iZXI+IERQQ00KKworJXRva2VuIDxzdHJp
bmc+IFVSSQorJXRva2VuIDxzdHJpbmc+IEZVTkNUSU9OCisldG9rZW4gPHN0cmluZz4gQU5ZRlVO
Q1RJT04KKyV0b2tlbiA8c3RyaW5nPiBOT1RGVU5DVElPTgorJXRva2VuIDxzdHJpbmc+IENBTENG
VU5DVElPTgorJXRva2VuIDxzdHJpbmc+IE1JTkZVTkNUSU9OCisldG9rZW4gPHN0cmluZz4gTUFY
RlVOQ1RJT04KKyV0b2tlbiA8c3RyaW5nPiBWQVJfREVGSU5JVElPTgorCisldG9rZW4gPHN0cmlu
Zz4gVU5JQ09ERVJBTkdFCisKKyV0eXBlIDxyZWxhdGlvbj4gY29tYmluYXRvcgorCisldHlwZSA8
cnVsZT4gY2hhcnNldAorJXR5cGUgPHJ1bGU+IGlnbm9yZWRfY2hhcnNldAorJXR5cGUgPHJ1bGU+
IHJ1bGVzZXQKKyV0eXBlIDxydWxlPiBtZWRpYQorJXR5cGUgPHJ1bGU+IGltcG9ydAorJXR5cGUg
PHJ1bGU+IG5hbWVzcGFjZQorJXR5cGUgPHJ1bGU+IHBhZ2UKKyV0eXBlIDxydWxlPiBtYXJnaW5f
Ym94CisldHlwZSA8cnVsZT4gZm9udF9mYWNlCisldHlwZSA8cnVsZT4ga2V5ZnJhbWVzCisldHlw
ZSA8cnVsZT4gaW52YWxpZF9ydWxlCisldHlwZSA8cnVsZT4gc2F2ZV9ibG9jaworJXR5cGUgPHJ1
bGU+IGludmFsaWRfYXQKKyV0eXBlIDxydWxlPiBydWxlCisldHlwZSA8cnVsZT4gdmFsaWRfcnVs
ZQorJXR5cGUgPHJ1bGVMaXN0PiBibG9ja19ydWxlX2xpc3QgCisldHlwZSA8cnVsZT4gYmxvY2tf
cnVsZQorJXR5cGUgPHJ1bGU+IGJsb2NrX3ZhbGlkX3J1bGUKKyV0eXBlIDxydWxlPiByZWdpb24K
KworJXR5cGUgPHN0cmluZz4gbWF5YmVfbnNfcHJlZml4CisKKyV0eXBlIDxzdHJpbmc+IG5hbWVz
cGFjZV9zZWxlY3RvcgorCisldHlwZSA8c3RyaW5nPiBzdHJpbmdfb3JfdXJpCisldHlwZSA8c3Ry
aW5nPiBpZGVudF9vcl9zdHJpbmcKKyV0eXBlIDxzdHJpbmc+IG1lZGl1bQorJXR5cGUgPG1hcmdp
bkJveD4gbWFyZ2luX3N5bQorCisldHlwZSA8c3RyaW5nPiBtZWRpYV9mZWF0dXJlCisldHlwZSA8
bWVkaWFMaXN0PiBtZWRpYV9saXN0CisldHlwZSA8bWVkaWFMaXN0PiBtYXliZV9tZWRpYV9saXN0
CisldHlwZSA8bWVkaWFRdWVyeT4gbWVkaWFfcXVlcnkKKyV0eXBlIDxtZWRpYVF1ZXJ5UmVzdHJp
Y3Rvcj4gbWF5YmVfbWVkaWFfcmVzdHJpY3RvcgorJXR5cGUgPHZhbHVlTGlzdD4gbWF5YmVfbWVk
aWFfdmFsdWUKKyV0eXBlIDxtZWRpYVF1ZXJ5RXhwPiBtZWRpYV9xdWVyeV9leHAKKyV0eXBlIDxt
ZWRpYVF1ZXJ5RXhwTGlzdD4gbWVkaWFfcXVlcnlfZXhwX2xpc3QKKyV0eXBlIDxtZWRpYVF1ZXJ5
RXhwTGlzdD4gbWF5YmVfYW5kX21lZGlhX3F1ZXJ5X2V4cF9saXN0CisKKyV0eXBlIDxzdHJpbmc+
IGtleWZyYW1lX25hbWUKKyV0eXBlIDxrZXlmcmFtZT4ga2V5ZnJhbWVfcnVsZQorJXR5cGUgPGtl
eWZyYW1lUnVsZUxpc3Q+IGtleWZyYW1lc19ydWxlCisldHlwZSA8dmFsdWVMaXN0PiBrZXlfbGlz
dAorJXR5cGUgPHZhbHVlPiBrZXkKKworJXR5cGUgPGlkPiBwcm9wZXJ0eQorCisldHlwZSA8c2Vs
ZWN0b3I+IHNwZWNpZmllcgorJXR5cGUgPHNlbGVjdG9yPiBzcGVjaWZpZXJfbGlzdAorJXR5cGUg
PHNlbGVjdG9yPiBzaW1wbGVfc2VsZWN0b3IKKyV0eXBlIDxzZWxlY3Rvcj4gc2VsZWN0b3IKKyV0
eXBlIDxzZWxlY3Rvckxpc3Q+IHNlbGVjdG9yX2xpc3QKKyV0eXBlIDxzZWxlY3Rvckxpc3Q+IHNp
bXBsZV9zZWxlY3Rvcl9saXN0CisldHlwZSA8c2VsZWN0b3JMaXN0PiByZWdpb25fc2VsZWN0b3IK
KyV0eXBlIDxzZWxlY3Rvcj4gc2VsZWN0b3Jfd2l0aF90cmFpbGluZ193aGl0ZXNwYWNlCisldHlw
ZSA8c2VsZWN0b3I+IGNsYXNzCisldHlwZSA8c2VsZWN0b3I+IGF0dHJpYgorJXR5cGUgPHNlbGVj
dG9yPiBwc2V1ZG8KKyV0eXBlIDxzZWxlY3Rvcj4gcHNldWRvX3BhZ2UKKyV0eXBlIDxzZWxlY3Rv
cj4gcGFnZV9zZWxlY3RvcgorCisldHlwZSA8Ym9vbGVhbj4gZGVjbGFyYXRpb25fbGlzdAorJXR5
cGUgPGJvb2xlYW4+IGRlY2xfbGlzdAorJXR5cGUgPGJvb2xlYW4+IGRlY2xhcmF0aW9uCisldHlw
ZSA8Ym9vbGVhbj4gZGVjbGFyYXRpb25zX2FuZF9tYXJnaW5zCisKKyV0eXBlIDxib29sZWFuPiBw
cmlvCisKKyV0eXBlIDxpbnRlZ2VyPiBtYXRjaAorJXR5cGUgPGludGVnZXI+IHVuYXJ5X29wZXJh
dG9yCisldHlwZSA8aW50ZWdlcj4gbWF5YmVfdW5hcnlfb3BlcmF0b3IKKyV0eXBlIDxjaGFyYWN0
ZXI+IG9wZXJhdG9yCisKKyV0eXBlIDx2YWx1ZUxpc3Q+IGV4cHIKKyV0eXBlIDx2YWx1ZT4gdGVy
bQorJXR5cGUgPHZhbHVlPiB1bmFyeV90ZXJtCisldHlwZSA8dmFsdWU+IGZ1bmN0aW9uCisldHlw
ZSA8dmFsdWU+IGNhbGNfZnVuY190ZXJtCisldHlwZSA8Y2hhcmFjdGVyPiBjYWxjX2Z1bmNfb3Bl
cmF0b3IKKyV0eXBlIDx2YWx1ZUxpc3Q+IGNhbGNfZnVuY19leHByCisldHlwZSA8dmFsdWVMaXN0
PiBjYWxjX2Z1bmNfZXhwcl9saXN0CisldHlwZSA8dmFsdWVMaXN0PiBjYWxjX2Z1bmNfcGFyZW5f
ZXhwcgorJXR5cGUgPHZhbHVlPiBjYWxjX2Z1bmN0aW9uCisldHlwZSA8c3RyaW5nPiBtaW5fb3Jf
bWF4CisldHlwZSA8dmFsdWU+IG1pbl9vcl9tYXhfZnVuY3Rpb24KKworJXR5cGUgPHN0cmluZz4g
ZWxlbWVudF9uYW1lCisldHlwZSA8c3RyaW5nPiBhdHRyX25hbWUKKworJSUKKworc3R5bGVzaGVl
dDoKKyAgICBtYXliZV9zcGFjZSBtYXliZV9jaGFyc2V0IG1heWJlX3NnbWwgcnVsZV9saXN0Cisg
IHwgd2Via2l0X3J1bGUgbWF5YmVfc3BhY2UKKyAgfCB3ZWJraXRfZGVjbHMgbWF5YmVfc3BhY2UK
KyAgfCB3ZWJraXRfdmFsdWUgbWF5YmVfc3BhY2UKKyAgfCB3ZWJraXRfbWVkaWFxdWVyeSBtYXli
ZV9zcGFjZQorICB8IHdlYmtpdF9zZWxlY3RvciBtYXliZV9zcGFjZQorICB8IHdlYmtpdF9rZXlm
cmFtZV9ydWxlIG1heWJlX3NwYWNlCisgIDsKKword2Via2l0X3J1bGU6CisgICAgV0VCS0lUX1JV
TEVfU1lNICd7JyBtYXliZV9zcGFjZSB2YWxpZF9ydWxlIG1heWJlX3NwYWNlICd9JyB7CisgICAg
ICAgIHBhcnNlci0+bV9ydWxlID0gJDQ7CisgICAgfQorOworCit3ZWJraXRfa2V5ZnJhbWVfcnVs
ZToKKyAgICBXRUJLSVRfS0VZRlJBTUVfUlVMRV9TWU0gJ3snIG1heWJlX3NwYWNlIGtleWZyYW1l
X3J1bGUgbWF5YmVfc3BhY2UgJ30nIHsKKyAgICAgICAgcGFyc2VyLT5tX2tleWZyYW1lID0gJDQ7
CisgICAgfQorOworCit3ZWJraXRfZGVjbHM6CisgICAgV0VCS0lUX0RFQ0xTX1NZTSAneycgbWF5
YmVfc3BhY2VfYmVmb3JlX2RlY2xhcmF0aW9uIGRlY2xhcmF0aW9uX2xpc3QgJ30nIHsKKyAgICAg
ICAgLyogY2FuIGJlIGVtcHR5ICovCisgICAgfQorOworCit3ZWJraXRfdmFsdWU6CisgICAgV0VC
S0lUX1ZBTFVFX1NZTSAneycgbWF5YmVfc3BhY2UgZXhwciAnfScgeworICAgICAgICBpZiAoJDQp
IHsKKyAgICAgICAgICAgIHBhcnNlci0+bV92YWx1ZUxpc3QgPSBwYXJzZXItPnNpbmtGbG9hdGlu
Z1ZhbHVlTGlzdCgkNCk7CisgICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHBh
cnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCk7CisgICAgICAgICAgICBpZiAoIXBhcnNl
ci0+cGFyc2VWYWx1ZShwYXJzZXItPm1faWQsIHBhcnNlci0+bV9pbXBvcnRhbnQpKQorICAgICAg
ICAgICAgICAgIHBhcnNlci0+cm9sbGJhY2tMYXN0UHJvcGVydGllcyhwYXJzZXItPm1fcGFyc2Vk
UHJvcGVydGllcy0+c2l6ZSgpIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7CisgICAgICAgICAgICBw
YXJzZXItPm1fdmFsdWVMaXN0ID0gbnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0KKzsKKword2Vi
a2l0X21lZGlhcXVlcnk6CisgICAgIFdFQktJVF9NRURJQVFVRVJZX1NZTSBXSElURVNQQUNFIG1h
eWJlX3NwYWNlIG1lZGlhX3F1ZXJ5ICd9JyB7CisgICAgICAgICBwYXJzZXItPm1fbWVkaWFRdWVy
eSA9IHBhcnNlci0+c2lua0Zsb2F0aW5nTWVkaWFRdWVyeSgkNCk7CisgICAgIH0KKzsKKword2Vi
a2l0X3NlbGVjdG9yOgorICAgIFdFQktJVF9TRUxFQ1RPUl9TWU0gJ3snIG1heWJlX3NwYWNlIHNl
bGVjdG9yX2xpc3QgJ30nIHsKKyAgICAgICAgaWYgKCQ0KSB7CisgICAgICAgICAgICBpZiAocGFy
c2VyLT5tX3NlbGVjdG9yTGlzdEZvclBhcnNlU2VsZWN0b3IpCisgICAgICAgICAgICAgICAgcGFy
c2VyLT5tX3NlbGVjdG9yTGlzdEZvclBhcnNlU2VsZWN0b3ItPmFkb3B0U2VsZWN0b3JWZWN0b3Io
KiQ0KTsKKyAgICAgICAgfQorICAgIH0KKzsKKworbWF5YmVfc3BhY2U6CisgICAgLyogZW1wdHkg
Ki8gJXByZWMgVU5JTVBPUlRBTlRfVE9LCisgIHwgbWF5YmVfc3BhY2UgV0hJVEVTUEFDRQorICA7
CisKK21heWJlX3NnbWw6CisgICAgLyogZW1wdHkgKi8KKyAgfCBtYXliZV9zZ21sIFNHTUxfQ0QK
KyAgfCBtYXliZV9zZ21sIFdISVRFU1BBQ0UKKyAgOworCittYXliZV9jaGFyc2V0OgorICAgLyog
ZW1wdHkgKi8KKyAgfCBjaGFyc2V0IHsKKyAgfQorICA7CisKK2Nsb3NpbmdfYnJhY2U6CisgICAg
J30nCisgIHwgJXByZWMgTE9XRVNUX1BSRUMgVE9LRU5fRU9GCisgIDsKKworY2hhcnNldDoKKyAg
Q0hBUlNFVF9TWU0gbWF5YmVfc3BhY2UgU1RSSU5HIG1heWJlX3NwYWNlICc7JyB7CisgICAgIGlm
IChwYXJzZXItPm1fc3R5bGVTaGVldCkKKyAgICAgICAgIHBhcnNlci0+bV9zdHlsZVNoZWV0LT5w
YXJzZXJTZXRFbmNvZGluZ0Zyb21DaGFyc2V0UnVsZSgkMyk7CisgICAgIGlmIChwYXJzZXItPmlz
RXh0cmFjdGluZ1NvdXJjZURhdGEoKSAmJiBwYXJzZXItPm1fY3VycmVudFJ1bGVEYXRhU3RhY2st
PmlzRW1wdHkoKSAmJiBwYXJzZXItPm1fcnVsZVNvdXJjZURhdGFSZXN1bHQpCisgICAgICAgICBw
YXJzZXItPmFkZE5ld1J1bGVUb1NvdXJjZVRyZWUoQ1NTUnVsZVNvdXJjZURhdGE6OmNyZWF0ZVVu
a25vd24oKSk7CisgICAgICQkID0gMDsKKyAgfQorICB8IENIQVJTRVRfU1lNIGVycm9yIGludmFs
aWRfYmxvY2sgeworICB9CisgIHwgQ0hBUlNFVF9TWU0gZXJyb3IgJzsnIHsKKyAgfQorOworCitp
Z25vcmVkX2NoYXJzZXQ6CisgICAgQ0hBUlNFVF9TWU0gbWF5YmVfc3BhY2UgU1RSSU5HIG1heWJl
X3NwYWNlICc7JyB7CisgICAgICAgIC8vIElnbm9yZSBhbnkgQGNoYXJzZXQgcnVsZSBub3QgYXQg
dGhlIGJlZ2lubmluZyBvZiB0aGUgc3R5bGUgc2hlZXQuCisgICAgICAgICQkID0gMDsKKyAgICB9
CisgICAgfCBDSEFSU0VUX1NZTSBtYXliZV9zcGFjZSAnOycgeworICAgICAgICAkJCA9IDA7Cisg
ICAgfQorOworCitydWxlX2xpc3Q6CisgICAvKiBlbXB0eSAqLworIHwgcnVsZV9saXN0IHJ1bGUg
bWF5YmVfc2dtbCB7CisgICAgIGlmICgkMiAmJiBwYXJzZXItPm1fc3R5bGVTaGVldCkKKyAgICAg
ICAgIHBhcnNlci0+bV9zdHlsZVNoZWV0LT5wYXJzZXJBcHBlbmRSdWxlKCQyKTsKKyB9CisgOwor
Cit2YWxpZF9ydWxlOgorICAgIHJ1bGVzZXQKKyAgfCBtZWRpYQorICB8IHBhZ2UKKyAgfCBmb250
X2ZhY2UKKyAgfCBrZXlmcmFtZXMKKyAgfCBuYW1lc3BhY2UKKyAgfCBpbXBvcnQKKyAgfCByZWdp
b24KKyAgOworCitydWxlOgorICAgIHZhbGlkX3J1bGUgeworICAgICAgICBwYXJzZXItPm1faGFk
U3ludGFjdGljYWxseVZhbGlkQ1NTUnVsZSA9IHRydWU7CisgICAgfQorICB8IGlnbm9yZWRfY2hh
cnNldAorICB8IGludmFsaWRfcnVsZQorICB8IGludmFsaWRfYXQKKyAgOworCitibG9ja19ydWxl
X2xpc3Q6IAorICAgIC8qIGVtcHR5ICovIHsgJCQgPSAwOyB9CisgIHwgYmxvY2tfcnVsZV9saXN0
IGJsb2NrX3J1bGUgbWF5YmVfc2dtbCB7CisgICAgICAkJCA9ICQxOworICAgICAgaWYgKCQyKSB7
CisgICAgICAgICAgaWYgKCEkJCkKKyAgICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZVJ1
bGVMaXN0KCk7CisgICAgICAgICAgJCQtPmFwcGVuZCgkMik7CisgICAgICB9CisgIH0KKyAgOwor
CitibG9ja192YWxpZF9ydWxlOgorICAgIHJ1bGVzZXQKKyAgfCBwYWdlCisgIHwgZm9udF9mYWNl
CisgIHwga2V5ZnJhbWVzCisgIDsKKworYmxvY2tfcnVsZToKKyAgICBibG9ja192YWxpZF9ydWxl
CisgIHwgaW52YWxpZF9ydWxlCisgIHwgaW52YWxpZF9hdAorICB8IG5hbWVzcGFjZQorICB8IGlt
cG9ydAorICB8IG1lZGlhCisgIDsKKworYXRfaW1wb3J0X2hlYWRlcl9lbmRfbWF5YmVfc3BhY2U6
CisgICAgbWF5YmVfc3BhY2UgeworICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyRW5kKCk7
CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVCb2R5U3RhcnQoKTsKKyAgICB9CisgICAgOworCiti
ZWZvcmVfaW1wb3J0X3J1bGU6CisgICAgLyogZW1wdHkgKi8geworICAgICAgICBwYXJzZXItPm1h
cmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6OklNUE9SVF9SVUxFKTsKKyAgICB9
CisgICAgOworCitpbXBvcnQ6CisgICAgYmVmb3JlX2ltcG9ydF9ydWxlIElNUE9SVF9TWU0gYXRf
aW1wb3J0X2hlYWRlcl9lbmRfbWF5YmVfc3BhY2Ugc3RyaW5nX29yX3VyaSBtYXliZV9zcGFjZSBt
YXliZV9tZWRpYV9saXN0ICc7JyB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVJbXBvcnRS
dWxlKCQ0LCAkNik7CisgICAgfQorICB8IGJlZm9yZV9pbXBvcnRfcnVsZSBJTVBPUlRfU1lNIGF0
X2ltcG9ydF9oZWFkZXJfZW5kX21heWJlX3NwYWNlIHN0cmluZ19vcl91cmkgbWF5YmVfc3BhY2Ug
bWF5YmVfbWVkaWFfbGlzdCBUT0tFTl9FT0YgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRl
SW1wb3J0UnVsZSgkNCwgJDYpOworICAgIH0KKyAgfCBiZWZvcmVfaW1wb3J0X3J1bGUgSU1QT1JU
X1NZTSBhdF9pbXBvcnRfaGVhZGVyX2VuZF9tYXliZV9zcGFjZSBzdHJpbmdfb3JfdXJpIG1heWJl
X3NwYWNlIG1heWJlX21lZGlhX2xpc3QgaW52YWxpZF9ibG9jayB7CisgICAgICAgICQkID0gMDsK
KyAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOworICAgIH0KKyAgfCBiZWZvcmVfaW1wb3J0
X3J1bGUgSU1QT1JUX1NZTSBlcnJvciAnOycgeworICAgICAgICAkJCA9IDA7CisgICAgICAgIHBh
cnNlci0+cG9wUnVsZURhdGEoKTsKKyAgICB9CisgIHwgYmVmb3JlX2ltcG9ydF9ydWxlIElNUE9S
VF9TWU0gZXJyb3IgaW52YWxpZF9ibG9jayB7CisgICAgICAgICQkID0gMDsKKyAgICAgICAgcGFy
c2VyLT5wb3BSdWxlRGF0YSgpOworICAgIH0KKyAgOworCituYW1lc3BhY2U6CitOQU1FU1BBQ0Vf
U1lNIG1heWJlX3NwYWNlIG1heWJlX25zX3ByZWZpeCBzdHJpbmdfb3JfdXJpIG1heWJlX3NwYWNl
ICc7JyB7CisgICAgcGFyc2VyLT5hZGROYW1lc3BhY2UoJDMsICQ0KTsKKyAgICAkJCA9IDA7Cit9
Cit8IE5BTUVTUEFDRV9TWU0gbWF5YmVfc3BhY2UgbWF5YmVfbnNfcHJlZml4IHN0cmluZ19vcl91
cmkgbWF5YmVfc3BhY2UgaW52YWxpZF9ibG9jayB7CisgICAgJCQgPSAwOworfQorfCBOQU1FU1BB
Q0VfU1lNIGVycm9yIGludmFsaWRfYmxvY2sgeworICAgICQkID0gMDsKK30KK3wgTkFNRVNQQUNF
X1NZTSBlcnJvciAnOycgeworICAgICQkID0gMDsKK30KKzsKKworbWF5YmVfbnNfcHJlZml4Ogor
LyogZW1wdHkgKi8geyAkJC5jbGVhcigpOyB9Cit8IElERU5UIG1heWJlX3NwYWNlIHsgJCQgPSAk
MTsgfQorOworCitzdHJpbmdfb3JfdXJpOgorU1RSSU5HCit8IFVSSQorOworCittZWRpYV9mZWF0
dXJlOgorICAgIElERU5UIG1heWJlX3NwYWNlIHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9Cisg
ICAgOworCittYXliZV9tZWRpYV92YWx1ZToKKyAgICAvKmVtcHR5Ki8geworICAgICAgICAkJCA9
IDA7CisgICAgfQorICAgIHwgJzonIG1heWJlX3NwYWNlIGV4cHIgbWF5YmVfc3BhY2UgeworICAg
ICAgICAkJCA9ICQzOworICAgIH0KKyAgICA7CisKK21lZGlhX3F1ZXJ5X2V4cDoKKyAgICAnKCcg
bWF5YmVfc3BhY2UgbWVkaWFfZmVhdHVyZSBtYXliZV9zcGFjZSBtYXliZV9tZWRpYV92YWx1ZSAn
KScgbWF5YmVfc3BhY2UgeworICAgICAgICAkMy5sb3dlcigpOworICAgICAgICAkJCA9IHBhcnNl
ci0+Y3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwKCQzLCAkNSk7CisgICAgfQorICAgIDsKKwor
bWVkaWFfcXVlcnlfZXhwX2xpc3Q6CisgICAgbWVkaWFfcXVlcnlfZXhwIHsKKyAgICAgICAgJCQg
PSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeUV4cExpc3QoKTsKKyAgICAgICAgJCQt
PmFwcGVuZChwYXJzZXItPnNpbmtGbG9hdGluZ01lZGlhUXVlcnlFeHAoJDEpKTsKKyAgICB9Cisg
ICAgfCBtZWRpYV9xdWVyeV9leHBfbGlzdCBtYXliZV9zcGFjZSBNRURJQV9BTkQgbWF5YmVfc3Bh
Y2UgbWVkaWFfcXVlcnlfZXhwIHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgJCQtPmFwcGVu
ZChwYXJzZXItPnNpbmtGbG9hdGluZ01lZGlhUXVlcnlFeHAoJDUpKTsKKyAgICB9CisgICAgOwor
CittYXliZV9hbmRfbWVkaWFfcXVlcnlfZXhwX2xpc3Q6CisgICAgLyplbXB0eSovIHsKKyAgICAg
ICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeUV4cExpc3QoKTsKKyAgICB9
CisgICAgfCBNRURJQV9BTkQgbWF5YmVfc3BhY2UgbWVkaWFfcXVlcnlfZXhwX2xpc3QgeworICAg
ICAgICAkJCA9ICQzOworICAgIH0KKyAgICA7CisKK21heWJlX21lZGlhX3Jlc3RyaWN0b3I6Cisg
ICAgLyplbXB0eSovIHsKKyAgICAgICAgJCQgPSBNZWRpYVF1ZXJ5OjpOb25lOworICAgIH0KKyAg
ICB8IE1FRElBX09OTFkgeworICAgICAgICAkJCA9IE1lZGlhUXVlcnk6Ok9ubHk7CisgICAgfQor
ICAgIHwgTUVESUFfTk9UIHsKKyAgICAgICAgJCQgPSBNZWRpYVF1ZXJ5OjpOb3Q7CisgICAgfQor
ICAgIDsKKworbWVkaWFfcXVlcnk6CisgICAgbWVkaWFfcXVlcnlfZXhwX2xpc3QgeworICAgICAg
ICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5KHBhcnNlci0+c2lua0Zsb2F0
aW5nTWVkaWFRdWVyeUV4cExpc3QoJDEpKTsKKyAgICB9CisgICAgfAorICAgIG1heWJlX21lZGlh
X3Jlc3RyaWN0b3IgbWF5YmVfc3BhY2UgbWVkaXVtIG1heWJlX2FuZF9tZWRpYV9xdWVyeV9leHBf
bGlzdCB7CisgICAgICAgICQzLmxvd2VyKCk7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVG
bG9hdGluZ01lZGlhUXVlcnkoJDEsICQzLCBwYXJzZXItPnNpbmtGbG9hdGluZ01lZGlhUXVlcnlF
eHBMaXN0KCQ0KSk7CisgICAgfQorICAgIDsKKworbWF5YmVfbWVkaWFfbGlzdDoKKyAgICAgLyog
ZW1wdHkgKi8geworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlTWVkaWFRdWVyeVNldCgpOwor
ICAgICB9CisgICAgIHwgbWVkaWFfbGlzdAorICAgICA7CisKK21lZGlhX2xpc3Q6CisgICAgbWVk
aWFfcXVlcnkgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlTWVkaWFRdWVyeVNldCgpOwor
ICAgICAgICAkJC0+YWRkTWVkaWFRdWVyeShwYXJzZXItPnNpbmtGbG9hdGluZ01lZGlhUXVlcnko
JDEpKTsKKyAgICAgICAgcGFyc2VyLT51cGRhdGVMYXN0TWVkaWFMaW5lKCQkKTsKKyAgICB9Cisg
ICAgfCBtZWRpYV9saXN0ICcsJyBtYXliZV9zcGFjZSBtZWRpYV9xdWVyeSB7CisgICAgICAgICQk
ID0gJDE7CisgICAgICAgIGlmICgkJCkgeworICAgICAgICAgICAgJCQtPmFkZE1lZGlhUXVlcnko
cGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5KCQ0KSk7CisgICAgICAgICAgICBwYXJzZXIt
PnVwZGF0ZUxhc3RNZWRpYUxpbmUoJCQpOworICAgICAgICB9CisgICAgfQorICAgIHwgbWVkaWFf
bGlzdCBlcnJvciB7CisgICAgICAgICQkID0gMDsKKyAgICB9CisgICAgOworCithdF9ydWxlX2Jv
ZHlfc3RhcnQ6CisgICAgLyogZW1wdHkgKi8geworICAgICAgICBwYXJzZXItPm1hcmtSdWxlQm9k
eVN0YXJ0KCk7CisgICAgfQorICAgIDsKKworYmVmb3JlX21lZGlhX3J1bGU6CisgICAgLyogZW1w
dHkgKi8geworICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNvdXJj
ZURhdGE6Ok1FRElBX1JVTEUpOworICAgIH0KKyAgICA7CisKK2F0X3J1bGVfaGVhZGVyX2VuZF9t
YXliZV9zcGFjZToKKyAgICBtYXliZV9zcGFjZSB7CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVI
ZWFkZXJFbmQoKTsKKyAgICB9CisgICAgOworCittZWRpYToKKyAgICBiZWZvcmVfbWVkaWFfcnVs
ZSBNRURJQV9TWU0gbWF5YmVfc3BhY2UgbWVkaWFfbGlzdCBhdF9ydWxlX2hlYWRlcl9lbmQgJ3sn
IGF0X3J1bGVfYm9keV9zdGFydCBtYXliZV9zcGFjZSBibG9ja19ydWxlX2xpc3Qgc2F2ZV9ibG9j
ayB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVNZWRpYVJ1bGUoJDQsICQ5KTsKKyAgICB9
CisgICAgfCBiZWZvcmVfbWVkaWFfcnVsZSBNRURJQV9TWU0gYXRfcnVsZV9oZWFkZXJfZW5kX21h
eWJlX3NwYWNlICd7JyBhdF9ydWxlX2JvZHlfc3RhcnQgbWF5YmVfc3BhY2UgYmxvY2tfcnVsZV9s
aXN0IHNhdmVfYmxvY2sgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlTWVkaWFSdWxlKDAs
ICQ3KTsKKyAgICB9CisgICAgfCBiZWZvcmVfbWVkaWFfcnVsZSBNRURJQV9TWU0gYXRfcnVsZV9o
ZWFkZXJfZW5kX21heWJlX3NwYWNlICc7JyB7CisgICAgICAgICQkID0gMDsKKyAgICAgICAgcGFy
c2VyLT5wb3BSdWxlRGF0YSgpOworICAgIH0KKyAgICA7CisKK21lZGl1bToKKyAgSURFTlQgbWF5
YmVfc3BhY2UgeworICAgICAgJCQgPSAkMTsKKyAgfQorICA7CisKK2JlZm9yZV9rZXlmcmFtZXNf
cnVsZToKKyAgICAvKiBlbXB0eSAqLyB7CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJT
dGFydChDU1NSdWxlU291cmNlRGF0YTo6S0VZRlJBTUVTX1JVTEUpOworICAgIH0KKyAgICA7CisK
K2tleWZyYW1lczoKKyAgICBiZWZvcmVfa2V5ZnJhbWVzX3J1bGUgV0VCS0lUX0tFWUZSQU1FU19T
WU0gbWF5YmVfc3BhY2Uga2V5ZnJhbWVfbmFtZSBhdF9ydWxlX2hlYWRlcl9lbmRfbWF5YmVfc3Bh
Y2UgJ3snIGF0X3J1bGVfYm9keV9zdGFydCBtYXliZV9zcGFjZSBrZXlmcmFtZXNfcnVsZSBjbG9z
aW5nX2JyYWNlIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUtleWZyYW1lc1J1bGUoJDQs
IHBhcnNlci0+c2lua0Zsb2F0aW5nS2V5ZnJhbWVWZWN0b3IoJDkpKTsKKyAgICB9CisgICAgOwor
ICAKK2tleWZyYW1lX25hbWU6CisgICAgSURFTlQKKyAgICB8IFNUUklORworICAgIDsKKwora2V5
ZnJhbWVzX3J1bGU6CisgICAgLyogZW1wdHkgKi8geyAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRp
bmdLZXlmcmFtZVZlY3RvcigpOyB9CisgICAgfCBrZXlmcmFtZXNfcnVsZSBrZXlmcmFtZV9ydWxl
IG1heWJlX3NwYWNlIHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgaWYgKCQyKQorICAgICAg
ICAgICAgJCQtPmFwcGVuZCgkMik7CisgICAgfQorICAgIDsKKwora2V5ZnJhbWVfcnVsZToKKyAg
ICBrZXlfbGlzdCBtYXliZV9zcGFjZSAneycgbWF5YmVfc3BhY2UgZGVjbGFyYXRpb25fbGlzdCAn
fScgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlS2V5ZnJhbWUoJDEpOworICAgIH0KKyAg
ICA7CisKK2tleV9saXN0OgorICAgIGtleSB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVG
bG9hdGluZ1ZhbHVlTGlzdCgpOworICAgICAgICAkJC0+YWRkVmFsdWUocGFyc2VyLT5zaW5rRmxv
YXRpbmdWYWx1ZSgkMSkpOworICAgIH0KKyAgICB8IGtleV9saXN0IG1heWJlX3NwYWNlICcsJyBt
YXliZV9zcGFjZSBrZXkgeworICAgICAgICAkJCA9ICQxOworICAgICAgICBpZiAoJCQpCisgICAg
ICAgICAgICAkJC0+YWRkVmFsdWUocGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZSgkNSkpOworICAg
IH0KKyAgICA7CisKK2tleToKKyAgICBtYXliZV91bmFyeV9vcGVyYXRvciBQRVJDRU5UQUdFIHsg
JCQuaWQgPSAwOyAkJC5pc0ludCA9IGZhbHNlOyAkJC5mVmFsdWUgPSAkMSAqICQyOyAkJC51bml0
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7IH0KKyAgICB8IElERU5UIHsKKyAgICAg
ICAgJCQuaWQgPSAwOyAkJC5pc0ludCA9IGZhbHNlOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19OVU1CRVI7CisgICAgICAgIENTU1BhcnNlclN0cmluZyYgc3RyID0gJDE7CisgICAg
ICAgIGlmIChzdHIuZXF1YWxJZ25vcmluZ0Nhc2UoImZyb20iKSkKKyAgICAgICAgICAgICQkLmZW
YWx1ZSA9IDA7CisgICAgICAgIGVsc2UgaWYgKHN0ci5lcXVhbElnbm9yaW5nQ2FzZSgidG8iKSkK
KyAgICAgICAgICAgICQkLmZWYWx1ZSA9IDEwMDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
WVlFUlJPUjsKKyAgICB9CisgICAgOworCitiZWZvcmVfcGFnZV9ydWxlOgorICAgIC8qIGVtcHR5
ICovIHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VE
YXRhOjpQQUdFX1JVTEUpOworICAgIH0KKyAgICA7CisKK3BhZ2U6CisgICAgYmVmb3JlX3BhZ2Vf
cnVsZSBQQUdFX1NZTSBtYXliZV9zcGFjZSBwYWdlX3NlbGVjdG9yIGF0X3J1bGVfaGVhZGVyX2Vu
ZF9tYXliZV9zcGFjZQorICAgICd7JyBhdF9ydWxlX2JvZHlfc3RhcnQgbWF5YmVfc3BhY2VfYmVm
b3JlX2RlY2xhcmF0aW9uIGRlY2xhcmF0aW9uc19hbmRfbWFyZ2lucyBjbG9zaW5nX2JyYWNlIHsK
KyAgICAgICAgaWYgKCQ0KQorICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZVBhZ2VSdWxl
KHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDQpKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAvLyBDbGVhciBwcm9wZXJ0aWVzIGluIHRoZSBpbnZhbGlkIEBwYWdlIHJ1bGUuCisg
ICAgICAgICAgICBwYXJzZXItPmNsZWFyUHJvcGVydGllcygpOworICAgICAgICAgICAgLy8gQWxz
byBjbGVhciBtYXJnaW4gYXQtcnVsZXMgaGVyZSBvbmNlIHdlIGZ1bGx5IGltcGxlbWVudCBtYXJn
aW4gYXQtcnVsZXMgcGFyc2luZy4KKyAgICAgICAgICAgICQkID0gMDsKKyAgICAgICAgICAgIHBh
cnNlci0+cG9wUnVsZURhdGEoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB8IGJlZm9yZV9wYWdl
X3J1bGUgUEFHRV9TWU0gZXJyb3IgaW52YWxpZF9ibG9jayB7CisgICAgICBwYXJzZXItPnBvcFJ1
bGVEYXRhKCk7CisgICAgICAkJCA9IDA7CisgICAgfQorICAgIHwgYmVmb3JlX3BhZ2VfcnVsZSBQ
QUdFX1NZTSBlcnJvciAnOycgeworICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOworICAgICAg
JCQgPSAwOworICAgIH0KKyAgICA7CisKK3BhZ2Vfc2VsZWN0b3I6CisgICAgSURFTlQgeworICAg
ICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAkJC0+
c2V0VGFnKFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQxLCBwYXJzZXItPm1fZGVmYXVsdE5hbWVz
cGFjZSkpOworICAgICAgICAkJC0+c2V0Rm9yUGFnZSgpOworICAgIH0KKyAgICB8IElERU5UIHBz
ZXVkb19wYWdlIHsKKyAgICAgICAgJCQgPSAkMjsKKyAgICAgICAgaWYgKCQkKSB7CisgICAgICAg
ICAgICAkJC0+c2V0VGFnKFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQxLCBwYXJzZXItPm1fZGVm
YXVsdE5hbWVzcGFjZSkpOworICAgICAgICAgICAgJCQtPnNldEZvclBhZ2UoKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICB8IHBzZXVkb19wYWdlIHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICAgICAg
aWYgKCQkKQorICAgICAgICAgICAgJCQtPnNldEZvclBhZ2UoKTsKKyAgICB9CisgICAgfCAvKiBl
bXB0eSAqLyB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7
CisgICAgICAgICQkLT5zZXRGb3JQYWdlKCk7CisgICAgfQorICAgIDsKKworZGVjbGFyYXRpb25z
X2FuZF9tYXJnaW5zOgorICAgIGRlY2xhcmF0aW9uX2xpc3QKKyAgICB8IGRlY2xhcmF0aW9uc19h
bmRfbWFyZ2lucyBtYXJnaW5fYm94IG1heWJlX3NwYWNlIGRlY2xhcmF0aW9uX2xpc3QKKyAgICA7
CisKK21hcmdpbl9ib3g6CisgICAgbWFyZ2luX3N5bSB7CisgICAgICAgIHBhcnNlci0+c3RhcnRE
ZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3goKTsKKyAgICB9IG1heWJlX3NwYWNlICd7JyBtYXliZV9z
cGFjZSBkZWNsYXJhdGlvbl9saXN0IGNsb3NpbmdfYnJhY2UgeworICAgICAgICAkJCA9IHBhcnNl
ci0+Y3JlYXRlTWFyZ2luQXRSdWxlKCQxKTsKKyAgICB9CisgICAgOworCittYXJnaW5fc3ltIDoK
KyAgICBUT1BMRUZUQ09STkVSX1NZTSB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OlRvcExl
ZnRDb3JuZXJNYXJnaW5Cb3g7CisgICAgfQorICAgIHwgVE9QTEVGVF9TWU0geworICAgICAgICAk
JCA9IENTU1NlbGVjdG9yOjpUb3BMZWZ0TWFyZ2luQm94OworICAgIH0KKyAgICB8IFRPUENFTlRF
Ul9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpUb3BDZW50ZXJNYXJnaW5Cb3g7Cisg
ICAgfQorICAgIHwgVE9QUklHSFRfU1lNIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6VG9w
UmlnaHRNYXJnaW5Cb3g7CisgICAgfQorICAgIHwgVE9QUklHSFRDT1JORVJfU1lNIHsKKyAgICAg
ICAgJCQgPSBDU1NTZWxlY3Rvcjo6VG9wUmlnaHRDb3JuZXJNYXJnaW5Cb3g7CisgICAgfQorICAg
IHwgQk9UVE9NTEVGVENPUk5FUl9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpCb3R0
b21MZWZ0Q29ybmVyTWFyZ2luQm94OworICAgIH0KKyAgICB8IEJPVFRPTUxFRlRfU1lNIHsKKyAg
ICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6Qm90dG9tTGVmdE1hcmdpbkJveDsKKyAgICB9CisgICAg
fCBCT1RUT01DRU5URVJfU1lNIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6Qm90dG9tQ2Vu
dGVyTWFyZ2luQm94OworICAgIH0KKyAgICB8IEJPVFRPTVJJR0hUX1NZTSB7CisgICAgICAgICQk
ID0gQ1NTU2VsZWN0b3I6OkJvdHRvbVJpZ2h0TWFyZ2luQm94OworICAgIH0KKyAgICB8IEJPVFRP
TVJJR0hUQ09STkVSX1NZTSB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkJvdHRvbVJpZ2h0
Q29ybmVyTWFyZ2luQm94OworICAgIH0KKyAgICB8IExFRlRUT1BfU1lNIHsKKyAgICAgICAgJCQg
PSBDU1NTZWxlY3Rvcjo6TGVmdFRvcE1hcmdpbkJveDsKKyAgICB9CisgICAgfCBMRUZUTUlERExF
X1NZTSB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkxlZnRNaWRkbGVNYXJnaW5Cb3g7Cisg
ICAgfQorICAgIHwgTEVGVEJPVFRPTV9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpM
ZWZ0Qm90dG9tTWFyZ2luQm94OworICAgIH0KKyAgICB8IFJJR0hUVE9QX1NZTSB7CisgICAgICAg
ICQkID0gQ1NTU2VsZWN0b3I6OlJpZ2h0VG9wTWFyZ2luQm94OworICAgIH0KKyAgICB8IFJJR0hU
TUlERExFX1NZTSB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OlJpZ2h0TWlkZGxlTWFyZ2lu
Qm94OworICAgIH0KKyAgICB8IFJJR0hUQk9UVE9NX1NZTSB7CisgICAgICAgICQkID0gQ1NTU2Vs
ZWN0b3I6OlJpZ2h0Qm90dG9tTWFyZ2luQm94OworICAgIH0KKyAgICA7CisKK2JlZm9yZV9mb250
X2ZhY2VfcnVsZToKKyAgICAvKiBlbXB0eSAqLyB7CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVI
ZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6Rk9OVF9GQUNFX1JVTEUpOworICAgIH0KKyAg
ICA7CisKK2ZvbnRfZmFjZToKKyAgICBiZWZvcmVfZm9udF9mYWNlX3J1bGUgRk9OVF9GQUNFX1NZ
TSBhdF9ydWxlX2hlYWRlcl9lbmRfbWF5YmVfc3BhY2UKKyAgICAneycgYXRfcnVsZV9ib2R5X3N0
YXJ0IG1heWJlX3NwYWNlX2JlZm9yZV9kZWNsYXJhdGlvbiBkZWNsYXJhdGlvbl9saXN0IGNsb3Np
bmdfYnJhY2UgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRm9udEZhY2VSdWxlKCk7Cisg
ICAgfQorICAgIHwgYmVmb3JlX2ZvbnRfZmFjZV9ydWxlIEZPTlRfRkFDRV9TWU0gZXJyb3IgaW52
YWxpZF9ibG9jayB7CisgICAgICAkJCA9IDA7CisgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7
CisgICAgfQorICAgIHwgYmVmb3JlX2ZvbnRfZmFjZV9ydWxlIEZPTlRfRkFDRV9TWU0gZXJyb3Ig
JzsnIHsKKyAgICAgICQkID0gMDsKKyAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKKyAgICB9
Cis7CisKK3JlZ2lvbl9zZWxlY3RvcjoKKyAgICBzZWxlY3Rvcl9saXN0IHsKKyAgICAgICAgaWYg
KCQxKSB7CisgICAgICAgICAgICBwYXJzZXItPnNldFJldXNhYmxlUmVnaW9uU2VsZWN0b3JWZWN0
b3IoJDEpOworICAgICAgICAgICAgJCQgPSBwYXJzZXItPnJldXNhYmxlUmVnaW9uU2VsZWN0b3JW
ZWN0b3IoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICAkJCA9IDA7Cisg
ICAgfQorOworCitiZWZvcmVfcmVnaW9uX3J1bGU6CisgICAgLyogZW1wdHkgKi8geworICAgICAg
ICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6OlJFR0lPTl9S
VUxFKTsKKyAgICB9CisgICAgOworCityZWdpb246CisgICAgYmVmb3JlX3JlZ2lvbl9ydWxlIFdF
QktJVF9SRUdJT05fUlVMRV9TWU0gV0hJVEVTUEFDRSByZWdpb25fc2VsZWN0b3IgYXRfcnVsZV9o
ZWFkZXJfZW5kICd7JyBhdF9ydWxlX2JvZHlfc3RhcnQgbWF5YmVfc3BhY2UgYmxvY2tfcnVsZV9s
aXN0IHNhdmVfYmxvY2sgeworICAgICAgICBpZiAoJDQpCisgICAgICAgICAgICAkJCA9IHBhcnNl
ci0+Y3JlYXRlUmVnaW9uUnVsZSgkNCwgJDkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICQkID0gMDsKKyAgICAgICAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKKyAgICAgICAgfQor
ICAgIH0KKzsKKworY29tYmluYXRvcjoKKyAgICAnKycgbWF5YmVfc3BhY2UgeyAkJCA9IENTU1Nl
bGVjdG9yOjpEaXJlY3RBZGphY2VudDsgfQorICB8ICd+JyBtYXliZV9zcGFjZSB7ICQkID0gQ1NT
U2VsZWN0b3I6OkluZGlyZWN0QWRqYWNlbnQ7IH0KKyAgfCAnPicgbWF5YmVfc3BhY2UgeyAkJCA9
IENTU1NlbGVjdG9yOjpDaGlsZDsgfQorICA7CisKK21heWJlX3VuYXJ5X29wZXJhdG9yOgorICAg
IHVuYXJ5X29wZXJhdG9yIHsgJCQgPSAkMTsgfQorICAgIHwgeyAkJCA9IDE7IH0KKyAgICA7CisK
K3VuYXJ5X29wZXJhdG9yOgorICAgICctJyB7ICQkID0gLTE7IH0KKyAgfCAnKycgeyAkJCA9IDE7
IH0KKyAgOworCittYXliZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRpb246CisgICAgbWF5YmVfc3Bh
Y2UgeworICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7CisgICAgfQorICA7CisK
K2JlZm9yZV9zZWxlY3Rvcl9saXN0OgorICAgIC8qIGVtcHR5ICovIHsKKyAgICAgICAgcGFyc2Vy
LT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRhOjpTVFlMRV9SVUxFKTsKKyAg
ICB9CisgIDsKKworYXRfcnVsZV9oZWFkZXJfZW5kOgorICAgIC8qIGVtcHR5ICovIHsKKyAgICAg
ICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlckVuZCgpOworICAgIH0KKyAgOworCitydWxlc2V0Ogor
ICAgIGJlZm9yZV9zZWxlY3Rvcl9saXN0IHNlbGVjdG9yX2xpc3QgYXRfcnVsZV9oZWFkZXJfZW5k
ICd7JyBhdF9ydWxlX2JvZHlfc3RhcnQgbWF5YmVfc3BhY2VfYmVmb3JlX2RlY2xhcmF0aW9uIGRl
Y2xhcmF0aW9uX2xpc3QgY2xvc2luZ19icmFjZSB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVh
dGVTdHlsZVJ1bGUoJDIpOworICAgIH0KKyAgOworCitzZWxlY3Rvcl9saXN0OgorICAgIHNlbGVj
dG9yICVwcmVjIFVOSU1QT1JUQU5UX1RPSyB7CisgICAgICAgIGlmICgkMSkgeworICAgICAgICAg
ICAgJCQgPSBwYXJzZXItPnNlbGVjdG9yVmVjdG9yKCk7CisgICAgICAgICAgICAkJC0+c2hyaW5r
KDApOworICAgICAgICAgICAgJCQtPmFwcGVuZChwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9y
KCQxKSk7CisgICAgICAgICAgICBwYXJzZXItPnVwZGF0ZUxhc3RTZWxlY3RvckxpbmVBbmRQb3Np
dGlvbigpOworICAgICAgICB9CisgICAgfQorICAgIHwgc2VsZWN0b3JfbGlzdCAnLCcgbWF5YmVf
c3BhY2Ugc2VsZWN0b3IgJXByZWMgVU5JTVBPUlRBTlRfVE9LIHsKKyAgICAgICAgaWYgKCQxICYm
ICQ0KSB7CisgICAgICAgICAgICAkJCA9ICQxOworICAgICAgICAgICAgJCQtPmFwcGVuZChwYXJz
ZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQ0KSk7CisgICAgICAgICAgICBwYXJzZXItPnVwZGF0
ZUxhc3RTZWxlY3RvckxpbmVBbmRQb3NpdGlvbigpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgICQkID0gMDsKKyAgICB9CisgIHwgc2VsZWN0b3JfbGlzdCBlcnJvciB7CisgICAgICAgICQk
ID0gMDsKKyAgICB9CisgICA7CisKK3NlbGVjdG9yX3dpdGhfdHJhaWxpbmdfd2hpdGVzcGFjZToK
KyAgICBzZWxlY3RvciBXSElURVNQQUNFIHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAg
OworCitzZWxlY3RvcjoKKyAgICBzaW1wbGVfc2VsZWN0b3IgeworICAgICAgICAkJCA9ICQxOwor
ICAgIH0KKyAgICB8IHNlbGVjdG9yX3dpdGhfdHJhaWxpbmdfd2hpdGVzcGFjZQorICAgIHsKKyAg
ICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAgfCBzZWxlY3Rvcl93aXRoX3RyYWlsaW5nX3doaXRl
c3BhY2Ugc2ltcGxlX3NlbGVjdG9yCisgICAgeworICAgICAgICAkJCA9ICQyOworICAgICAgICBp
ZiAoISQxKQorICAgICAgICAgICAgJCQgPSAwOworICAgICAgICBlbHNlIGlmICgkJCkgeworICAg
ICAgICAgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIGVuZCA9ICQkOworICAgICAgICAgICAgd2hpbGUg
KGVuZC0+dGFnSGlzdG9yeSgpKQorICAgICAgICAgICAgICAgIGVuZCA9IGVuZC0+dGFnSGlzdG9y
eSgpOworICAgICAgICAgICAgZW5kLT5zZXRSZWxhdGlvbihDU1NTZWxlY3Rvcjo6RGVzY2VuZGFu
dCk7CisgICAgICAgICAgICBlbmQtPnNldFRhZ0hpc3RvcnkocGFyc2VyLT5zaW5rRmxvYXRpbmdT
ZWxlY3RvcigkMSkpOworICAgICAgICB9CisgICAgfQorICAgIHwgc2VsZWN0b3IgY29tYmluYXRv
ciBzaW1wbGVfc2VsZWN0b3IgeworICAgICAgICAkJCA9ICQzOworICAgICAgICBpZiAoISQxKQor
ICAgICAgICAgICAgJCQgPSAwOworICAgICAgICBlbHNlIGlmICgkJCkgeworICAgICAgICAgICAg
Q1NTUGFyc2VyU2VsZWN0b3IqIGVuZCA9ICQkOworICAgICAgICAgICAgd2hpbGUgKGVuZC0+dGFn
SGlzdG9yeSgpKQorICAgICAgICAgICAgICAgIGVuZCA9IGVuZC0+dGFnSGlzdG9yeSgpOworICAg
ICAgICAgICAgZW5kLT5zZXRSZWxhdGlvbigkMik7CisgICAgICAgICAgICBlbmQtPnNldFRhZ0hp
c3RvcnkocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMSkpOworICAgICAgICB9CisgICAg
fQorICAgIHwgc2VsZWN0b3IgZXJyb3IgeworICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIDsK
KworbmFtZXNwYWNlX3NlbGVjdG9yOgorICAgIC8qIGVtcHR5ICovICd8JyB7ICQkLmNsZWFyKCk7
IH0KKyAgICB8ICcqJyAnfCcgeyBzdGF0aWMgTENoYXIgc3RhciA9ICcqJzsgJCQuaW5pdCgmc3Rh
ciwgMSk7IH0KKyAgICB8IElERU5UICd8JyB7ICQkID0gJDE7IH0KKzsKKyAgICAKK3NpbXBsZV9z
ZWxlY3RvcjoKKyAgICBlbGVtZW50X25hbWUgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRl
RmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAkJC0+c2V0VGFnKFF1YWxpZmllZE5hbWUobnVs
bEF0b20sICQxLCBwYXJzZXItPm1fZGVmYXVsdE5hbWVzcGFjZSkpOworICAgIH0KKyAgICB8IGVs
ZW1lbnRfbmFtZSBzcGVjaWZpZXJfbGlzdCB7CisgICAgICAgICQkID0gJDI7CisgICAgICAgIGlm
ICgkJCkKKyAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFt
ZShudWxsQXRvbSwgJDEsICQkKTsKKyAgICB9CisgICAgfCBzcGVjaWZpZXJfbGlzdCB7CisgICAg
ICAgICQkID0gJDE7CisgICAgICAgIGlmICgkJCkKKyAgICAgICAgICAgIHBhcnNlci0+dXBkYXRl
U3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShudWxsQXRvbSwgc3RhckF0b20sICQkKTsKKyAgICB9
CisgICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3IgZWxlbWVudF9uYW1lIHsKKyAgICAgICAgJCQgPSBw
YXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldFRhZyhwYXJz
ZXItPmRldGVybWluZU5hbWVJbk5hbWVzcGFjZSgkMSwgJDIpKTsKKyAgICB9CisgICAgfCBuYW1l
c3BhY2Vfc2VsZWN0b3IgZWxlbWVudF9uYW1lIHNwZWNpZmllcl9saXN0IHsKKyAgICAgICAgJCQg
PSAkMzsKKyAgICAgICAgaWYgKCQkKQorICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVTcGVjaWZp
ZXJzV2l0aEVsZW1lbnROYW1lKCQxLCAkMiwgJCQpOworICAgIH0KKyAgICB8IG5hbWVzcGFjZV9z
ZWxlY3RvciBzcGVjaWZpZXJfbGlzdCB7CisgICAgICAgICQkID0gJDI7CisgICAgICAgIGlmICgk
JCkKKyAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZSgk
MSwgc3RhckF0b20sICQkKTsKKyAgICB9CisgIDsKKworc2ltcGxlX3NlbGVjdG9yX2xpc3Q6Cisg
ICAgc2ltcGxlX3NlbGVjdG9yICVwcmVjIFVOSU1QT1JUQU5UX1RPSyB7CisgICAgICAgIGlmICgk
MSkgeworICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3JWZWN0
b3IoKTsKKyAgICAgICAgICAgICQkLT5hcHBlbmQocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3Rv
cigkMSkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICQkID0gMDsKKyAgICB9CisgICAg
fCBzaW1wbGVfc2VsZWN0b3JfbGlzdCBtYXliZV9zcGFjZSAnLCcgbWF5YmVfc3BhY2Ugc2ltcGxl
X3NlbGVjdG9yICVwcmVjIFVOSU1QT1JUQU5UX1RPSyB7CisgICAgICAgIGlmICgkMSAmJiAkNSkg
eworICAgICAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgICAgICQkLT5hcHBlbmQocGFyc2VyLT5z
aW5rRmxvYXRpbmdTZWxlY3RvcigkNSkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICQk
ID0gMDsKKyAgICB9CisgICAgfCBzaW1wbGVfc2VsZWN0b3JfbGlzdCBlcnJvciB7CisgICAgICAg
ICQkID0gMDsKKyAgICB9CisgIDsKKworZWxlbWVudF9uYW1lOgorICAgIElERU5UIHsKKyAgICAg
ICAgQ1NTUGFyc2VyU3RyaW5nJiBzdHIgPSAkMTsKKyAgICAgICAgaWYgKHBhcnNlci0+bV9jb250
ZXh0LmlzSFRNTERvY3VtZW50KQorICAgICAgICAgICAgc3RyLmxvd2VyKCk7CisgICAgICAgICQk
ID0gc3RyOworICAgIH0KKyAgICB8ICcqJyB7CisgICAgICAgIHN0YXRpYyBMQ2hhciBzdGFyID0g
JyonOworICAgICAgICAkJC5pbml0KCZzdGFyLCAxKTsKKyAgICB9CisgIDsKKworc3BlY2lmaWVy
X2xpc3Q6CisgICAgc3BlY2lmaWVyIHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAgfCBz
cGVjaWZpZXJfbGlzdCBzcGVjaWZpZXIgeworICAgICAgICBpZiAoISQyKQorICAgICAgICAgICAg
JCQgPSAwOworICAgICAgICBlbHNlIGlmICgkMSkKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT51
cGRhdGVTcGVjaWZpZXJzKCQxLCAkMik7CisgICAgfQorICAgIHwgc3BlY2lmaWVyX2xpc3QgZXJy
b3IgeworICAgICAgICAkJCA9IDA7CisgICAgfQorOworCitzcGVjaWZpZXI6CisgICAgSURTRUwg
eworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAg
ICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OklkKTsKKyAgICAgICAgaWYgKHBhcnNlci0+bV9j
b250ZXh0Lm1vZGUgPT0gQ1NTUXVpcmtzTW9kZSkKKyAgICAgICAgICAgICQxLmxvd2VyKCk7Cisg
ICAgICAgICQkLT5zZXRWYWx1ZSgkMSk7CisgICAgfQorICB8IEhFWCB7CisgICAgICAgIGlmICgk
MVswXSA+PSAnMCcgJiYgJDFbMF0gPD0gJzknKSB7CisgICAgICAgICAgICAkJCA9IDA7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxl
Y3RvcigpOworICAgICAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpJZCk7CisgICAg
ICAgICAgICBpZiAocGFyc2VyLT5tX2NvbnRleHQubW9kZSA9PSBDU1NRdWlya3NNb2RlKQorICAg
ICAgICAgICAgICAgICQxLmxvd2VyKCk7CisgICAgICAgICAgICAkJC0+c2V0VmFsdWUoJDEpOwor
ICAgICAgICB9CisgICAgfQorICB8IGNsYXNzCisgIHwgYXR0cmliCisgIHwgcHNldWRvCisgICAg
OworCitjbGFzczoKKyAgICAnLicgSURFTlQgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRl
RmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OkNs
YXNzKTsKKyAgICAgICAgaWYgKHBhcnNlci0+bV9jb250ZXh0Lm1vZGUgPT0gQ1NTUXVpcmtzTW9k
ZSkKKyAgICAgICAgICAgICQyLmxvd2VyKCk7CisgICAgICAgICQkLT5zZXRWYWx1ZSgkMik7Cisg
ICAgfQorICA7CisKK2F0dHJfbmFtZToKKyAgICBJREVOVCBtYXliZV9zcGFjZSB7CisgICAgICAg
IENTU1BhcnNlclN0cmluZyYgc3RyID0gJDE7CisgICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4
dC5pc0hUTUxEb2N1bWVudCkKKyAgICAgICAgICAgIHN0ci5sb3dlcigpOworICAgICAgICAkJCA9
IHN0cjsKKyAgICB9CisgICAgOworCithdHRyaWI6CisgICAgJ1snIG1heWJlX3NwYWNlIGF0dHJf
bmFtZSAnXScgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3Rvcigp
OworICAgICAgICAkJC0+c2V0QXR0cmlidXRlKFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQzLCBu
dWxsQXRvbSkpOworICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlNldCk7CisgICAg
fQorICAgIHwgJ1snIG1heWJlX3NwYWNlIGF0dHJfbmFtZSBtYXRjaCBtYXliZV9zcGFjZSBpZGVu
dF9vcl9zdHJpbmcgbWF5YmVfc3BhY2UgJ10nIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0
ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldEF0dHJpYnV0ZShRdWFsaWZpZWRO
YW1lKG51bGxBdG9tLCAkMywgbnVsbEF0b20pKTsKKyAgICAgICAgJCQtPnNldE1hdGNoKChDU1NT
ZWxlY3Rvcjo6TWF0Y2gpJDQpOworICAgICAgICAkJC0+c2V0VmFsdWUoJDYpOworICAgIH0KKyAg
ICB8ICdbJyBtYXliZV9zcGFjZSBuYW1lc3BhY2Vfc2VsZWN0b3IgYXR0cl9uYW1lICddJyB7Cisg
ICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQk
LT5zZXRBdHRyaWJ1dGUocGFyc2VyLT5kZXRlcm1pbmVOYW1lSW5OYW1lc3BhY2UoJDMsICQ0KSk7
CisgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6U2V0KTsKKyAgICB9CisgICAgfCAn
WycgbWF5YmVfc3BhY2UgbmFtZXNwYWNlX3NlbGVjdG9yIGF0dHJfbmFtZSBtYXRjaCBtYXliZV9z
cGFjZSBpZGVudF9vcl9zdHJpbmcgbWF5YmVfc3BhY2UgJ10nIHsKKyAgICAgICAgJCQgPSBwYXJz
ZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldEF0dHJpYnV0ZShw
YXJzZXItPmRldGVybWluZU5hbWVJbk5hbWVzcGFjZSgkMywgJDQpKTsKKyAgICAgICAgJCQtPnNl
dE1hdGNoKChDU1NTZWxlY3Rvcjo6TWF0Y2gpJDUpOworICAgICAgICAkJC0+c2V0VmFsdWUoJDcp
OworICAgIH0KKyAgOworCittYXRjaDoKKyAgICAnPScgeworICAgICAgICAkJCA9IENTU1NlbGVj
dG9yOjpFeGFjdDsKKyAgICB9CisgICAgfCBJTkNMVURFUyB7CisgICAgICAgICQkID0gQ1NTU2Vs
ZWN0b3I6Okxpc3Q7CisgICAgfQorICAgIHwgREFTSE1BVENIIHsKKyAgICAgICAgJCQgPSBDU1NT
ZWxlY3Rvcjo6SHlwaGVuOworICAgIH0KKyAgICB8IEJFR0lOU1dJVEggeworICAgICAgICAkJCA9
IENTU1NlbGVjdG9yOjpCZWdpbjsKKyAgICB9CisgICAgfCBFTkRTV0lUSCB7CisgICAgICAgICQk
ID0gQ1NTU2VsZWN0b3I6OkVuZDsKKyAgICB9CisgICAgfCBDT05UQUlOUyB7CisgICAgICAgICQk
ID0gQ1NTU2VsZWN0b3I6OkNvbnRhaW47CisgICAgfQorICAgIDsKKworaWRlbnRfb3Jfc3RyaW5n
OgorICAgIElERU5UCisgIHwgU1RSSU5HCisgICAgOworCitwc2V1ZG9fcGFnZToKKyAgICAnOicg
SURFTlQgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwor
ICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBhZ2VQc2V1ZG9DbGFzcyk7CisgICAg
ICAgICQyLmxvd2VyKCk7CisgICAgICAgICQkLT5zZXRWYWx1ZSgkMik7CisgICAgICAgIENTU1Nl
bGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOworICAgICAgICBpZiAo
dHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bikKKyAgICAgICAgICAgICQkID0gMDsK
KyAgICB9CisKK3BzZXVkbzoKKyAgICAnOicgSURFTlQgeworICAgICAgICAkJCA9IHBhcnNlci0+
Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0
b3I6OlBzZXVkb0NsYXNzKTsKKyAgICAgICAgJDIubG93ZXIoKTsKKyAgICAgICAgJCQtPnNldFZh
bHVlKCQyKTsKKyAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgdHlwZSA9ICQkLT5wc2V1
ZG9UeXBlKCk7CisgICAgICAgIGlmICh0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9Vbmtub3du
KQorICAgICAgICAgICAgJCQgPSAwOworICAgIH0KKyAgICB8ICc6JyAnOicgSURFTlQgeworICAg
ICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAkJC0+
c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQpOworICAgICAgICAkMy5sb3dlcigp
OworICAgICAgICAkJC0+c2V0VmFsdWUoJDMpOworICAgICAgICAvLyBGSVhNRTogVGhpcyBjYWxs
IGlzIG5lZWRlZCB0byBmb3JjZSBzZWxlY3RvciB0byBjb21wdXRlIHRoZSBwc2V1ZG9UeXBlIGVh
cmx5IGVub3VnaC4KKyAgICAgICAgJCQtPnBzZXVkb1R5cGUoKTsKKyAgICB9CisgICAgLy8gdXNl
IGJ5IDotd2Via2l0LWFueS4KKyAgICAvLyBGSVhNRTogc2hvdWxkIHdlIHN1cHBvcnQgZ2VuZXJp
YyBzZWxlY3RvcnMgaGVyZSBvciBqdXN0IHNpbXBsZV9zZWxlY3RvcnM/CisgICAgLy8gVXNlIHNp
bXBsZV9zZWxlY3Rvcl9saXN0IGZvciBub3cgdG8gbWF0Y2ggLW1vei1hbnkuCisgICAgLy8gU2Vl
IGh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy1zdHlsZS8yMDEwU2VwLzA1
NjYuaHRtbCBmb3Igc29tZQorICAgIC8vIHJlbGF0ZWQgZGlzY3Vzc2lvbiB3aXRoIHJlc3BlY3Qg
dG8gOm5vdC4KKyAgICB8ICc6JyBBTllGVU5DVElPTiBtYXliZV9zcGFjZSBzaW1wbGVfc2VsZWN0
b3JfbGlzdCBtYXliZV9zcGFjZSAnKScgeworICAgICAgICBpZiAoJDQpIHsKKyAgICAgICAgICAg
ICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICAgICAkJC0+
c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKKyAgICAgICAgICAgICQkLT5hZG9w
dFNlbGVjdG9yVmVjdG9yKCpwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yVmVjdG9yKCQ0KSk7
CisgICAgICAgICAgICAkMi5sb3dlcigpOworICAgICAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsK
KyAgICAgICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlw
ZSgpOworICAgICAgICAgICAgaWYgKHR5cGUgIT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0FueSkKKyAg
ICAgICAgICAgICAgICAkJCA9IDA7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgJCQgPSAw
OworICAgIH0KKyAgICAvLyB1c2VkIGJ5IDpudGgtKihheCtiKQorICAgIHwgJzonIEZVTkNUSU9O
IG1heWJlX3NwYWNlIE5USCBtYXliZV9zcGFjZSAnKScgeworICAgICAgICAkJCA9IHBhcnNlci0+
Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0
b3I6OlBzZXVkb0NsYXNzKTsKKyAgICAgICAgJCQtPnNldEFyZ3VtZW50KCQ0KTsKKyAgICAgICAg
JCQtPnNldFZhbHVlKCQyKTsKKyAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgdHlwZSA9
ICQkLT5wc2V1ZG9UeXBlKCk7CisgICAgICAgIGlmICh0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1
ZG9Vbmtub3duKQorICAgICAgICAgICAgJCQgPSAwOworICAgIH0KKyAgICAvLyB1c2VkIGJ5IDpu
dGgtKgorICAgIHwgJzonIEZVTkNUSU9OIG1heWJlX3NwYWNlIG1heWJlX3VuYXJ5X29wZXJhdG9y
IElOVEVHRVIgbWF5YmVfc3BhY2UgJyknIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZs
b2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1
ZG9DbGFzcyk7CisgICAgICAgICQkLT5zZXRBcmd1bWVudChTdHJpbmc6Om51bWJlcigkNCAqICQ1
KSk7CisgICAgICAgICQkLT5zZXRWYWx1ZSgkMik7CisgICAgICAgIENTU1NlbGVjdG9yOjpQc2V1
ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOworICAgICAgICBpZiAodHlwZSA9PSBDU1NT
ZWxlY3Rvcjo6UHNldWRvVW5rbm93bikKKyAgICAgICAgICAgICQkID0gMDsKKyAgICB9CisgICAg
Ly8gdXNlZCBieSA6bnRoLSoob2RkL2V2ZW4pIGFuZCA6bGFuZworICAgIHwgJzonIEZVTkNUSU9O
IG1heWJlX3NwYWNlIElERU5UIG1heWJlX3NwYWNlICcpJyB7CisgICAgICAgICQkID0gcGFyc2Vy
LT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3MpOworICAgICAgICAkJC0+c2V0QXJndW1lbnQoJDQpOworICAgICAg
ICAkMi5sb3dlcigpOworICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOworICAgICAgICBDU1NTZWxl
Y3Rvcjo6UHNldWRvVHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUoKTsKKyAgICAgICAgaWYgKHR5
cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25vd24pCisgICAgICAgICAgICAkJCA9IDA7Cisg
ICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb050aENoaWxkIHx8Cisg
ICAgICAgICAgICAgICAgIHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb050aE9mVHlwZSB8fAor
ICAgICAgICAgICAgICAgICB0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9OdGhMYXN0Q2hpbGQg
fHwKKyAgICAgICAgICAgICAgICAgdHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvTnRoTGFzdE9m
VHlwZSkgeworICAgICAgICAgICAgaWYgKCFpc1ZhbGlkTnRoVG9rZW4oJDQpKQorICAgICAgICAg
ICAgICAgICQkID0gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICAvLyB1c2VkIGJ5IDpub3QKKyAg
ICB8ICc6JyBOT1RGVU5DVElPTiBtYXliZV9zcGFjZSBzaW1wbGVfc2VsZWN0b3IgbWF5YmVfc3Bh
Y2UgJyknIHsKKyAgICAgICAgaWYgKCEkNCB8fCAhJDQtPmlzU2ltcGxlKCkpCisgICAgICAgICAg
ICAkJCA9IDA7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0
ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3MpOworCisgICAgICAgICAgICBDU1NTZWxlY3RvclZlY3RvciBzZWxlY3Rv
clZlY3RvcjsKKyAgICAgICAgICAgIHNlbGVjdG9yVmVjdG9yLmFwcGVuZChwYXJzZXItPnNpbmtG
bG9hdGluZ1NlbGVjdG9yKCQ0KSk7CisgICAgICAgICAgICAkJC0+YWRvcHRTZWxlY3RvclZlY3Rv
cihzZWxlY3RvclZlY3Rvcik7CisKKyAgICAgICAgICAgICQyLmxvd2VyKCk7CisgICAgICAgICAg
ICAkJC0+c2V0VmFsdWUoJDIpOworICAgICAgICB9CisgICAgfQorICA7CisKK2RlY2xhcmF0aW9u
X2xpc3Q6CisgICAgZGVjbGFyYXRpb24geworICAgICAgICAkJCA9ICQxOworICAgIH0KKyAgICB8
IGRlY2xfbGlzdCBkZWNsYXJhdGlvbiB7CisgICAgICAgICQkID0gJDE7CisgICAgICAgIGlmICgg
JDIgKQorICAgICAgICAgICAgJCQgPSAkMjsKKyAgICB9CisgICAgfCBkZWNsX2xpc3QgeworICAg
ICAgICAkJCA9ICQxOworICAgIH0KKyAgICB8IGVycm9yIGludmFsaWRfYmxvY2tfbGlzdCBlcnJv
ciB7CisgICAgICAgICQkID0gZmFsc2U7CisgICAgfQorICAgIHwgZXJyb3IgeworICAgICAgICAk
JCA9IGZhbHNlOworICAgIH0KKyAgICB8IGRlY2xfbGlzdCBlcnJvciB7CisgICAgICAgICQkID0g
JDE7CisgICAgfQorICAgIHwgZGVjbF9saXN0IGludmFsaWRfYmxvY2tfbGlzdCB7CisgICAgICAg
ICQkID0gJDE7CisgICAgfQorICAgIDsKKworZGVjbF9saXN0OgorICAgIGRlY2xhcmF0aW9uICc7
JyBtYXliZV9zcGFjZSB7CisgICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5U3RhcnQoKTsKKyAg
ICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAgfCBkZWNsYXJhdGlvbiBpbnZhbGlkX2Jsb2NrX2xp
c3QgbWF5YmVfc3BhY2UgeworICAgICAgICAkJCA9IGZhbHNlOworICAgIH0KKyAgICB8IGRlY2xh
cmF0aW9uIGludmFsaWRfYmxvY2tfbGlzdCAnOycgbWF5YmVfc3BhY2UgeworICAgICAgICAkJCA9
IGZhbHNlOworICAgIH0KKyAgICB8IGVycm9yICc7JyBtYXliZV9zcGFjZSB7CisgICAgICAgIHBh
cnNlci0+bWFya1Byb3BlcnR5U3RhcnQoKTsKKyAgICAgICAgJCQgPSBmYWxzZTsKKyAgICB9Cisg
ICAgfCBlcnJvciBpbnZhbGlkX2Jsb2NrX2xpc3QgZXJyb3IgJzsnIG1heWJlX3NwYWNlIHsKKyAg
ICAgICAgJCQgPSBmYWxzZTsKKyAgICB9CisgICAgfCBkZWNsX2xpc3QgZGVjbGFyYXRpb24gJzsn
IG1heWJlX3NwYWNlIHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlTdGFydCgpOworICAg
ICAgICAkJCA9ICQxOworICAgICAgICBpZiAoJDIpCisgICAgICAgICAgICAkJCA9ICQyOworICAg
IH0KKyAgICB8IGRlY2xfbGlzdCBlcnJvciAnOycgbWF5YmVfc3BhY2UgeworICAgICAgICBwYXJz
ZXItPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7CisgICAgICAgICQkID0gJDE7CisgICAgfQorICAgIHwg
ZGVjbF9saXN0IGVycm9yIGludmFsaWRfYmxvY2tfbGlzdCBlcnJvciAnOycgbWF5YmVfc3BhY2Ug
eworICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7CisgICAgICAgICQkID0gJDE7
CisgICAgfQorICAgIDsKKworZGVjbGFyYXRpb246CisgICAgVkFSX0RFRklOSVRJT04gJzonIG1h
eWJlX3NwYWNlIGV4cHIgcHJpbyB7CisjaWYgRU5BQkxFX0NTU19WQVJJQUJMRVMKKyAgICAgICAg
cGFyc2VyLT5zdG9yZVZhcmlhYmxlRGVjbGFyYXRpb24oJDEsIHBhcnNlci0+c2lua0Zsb2F0aW5n
VmFsdWVMaXN0KCQ0KSwgJDUpOworICAgICAgICAkJCA9IHRydWU7CisgICAgICAgIHBhcnNlci0+
bWFya1Byb3BlcnR5RW5kKCQ1LCB0cnVlKTsKKyNlbHNlCisgICAgICAgICQkID0gZmFsc2U7Cisj
ZW5kaWYKKyAgICB9CisgICAgfAorICAgIHByb3BlcnR5ICc6JyBtYXliZV9zcGFjZSBleHByIHBy
aW8geworICAgICAgICAkJCA9IGZhbHNlOworICAgICAgICBib29sIGlzUHJvcGVydHlQYXJzZWQg
PSBmYWxzZTsKKyAgICAgICAgaWYgKCQxICYmICQ0KSB7CisgICAgICAgICAgICBwYXJzZXItPm1f
dmFsdWVMaXN0ID0gcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDQpOworICAgICAgICAg
ICAgaW50IG9sZFBhcnNlZFByb3BlcnRpZXMgPSBwYXJzZXItPm1fcGFyc2VkUHJvcGVydGllcy0+
c2l6ZSgpOworICAgICAgICAgICAgJCQgPSBwYXJzZXItPnBhcnNlVmFsdWUoc3RhdGljX2Nhc3Q8
Q1NTUHJvcGVydHlJRD4oJDEpLCAkNSk7CisgICAgICAgICAgICBpZiAoISQkKQorICAgICAgICAg
ICAgICAgIHBhcnNlci0+cm9sbGJhY2tMYXN0UHJvcGVydGllcyhwYXJzZXItPm1fcGFyc2VkUHJv
cGVydGllcy0+c2l6ZSgpIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgaXNQcm9wZXJ0eVBhcnNlZCA9IHRydWU7CisgICAgICAgICAgICBw
YXJzZXItPm1fdmFsdWVMaXN0ID0gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICBwYXJzZXIt
Pm1hcmtQcm9wZXJ0eUVuZCgkNSwgaXNQcm9wZXJ0eVBhcnNlZCk7CisgICAgfQorICAgIHwKKyAg
ICBwcm9wZXJ0eSBlcnJvciB7CisgICAgICAgICQkID0gZmFsc2U7CisgICAgfQorICAgIHwKKyAg
ICBwcm9wZXJ0eSAnOicgbWF5YmVfc3BhY2UgZXJyb3IgZXhwciBwcmlvIHsKKyAgICAgICAgLyog
VGhlIGRlZmF1bHQgbW92YWJsZSB0eXBlIHRlbXBsYXRlIGhhcyBsZXR0ZXItc3BhY2luZzogLm5v
bmU7ICBIYW5kbGUgdGhpcyBieSBsb29raW5nIGZvcgorICAgICAgICBlcnJvciB0b2tlbnMgYXQg
dGhlIHN0YXJ0IG9mIGFuIGV4cHIsIHJlY292ZXIgdGhlIGV4cHIgYW5kIHRoZW4gdHJlYXQgYXMg
YW4gZXJyb3IsIGNsZWFuaW5nCisgICAgICAgIHVwIGFuZCBkZWxldGluZyB0aGUgc2hpZnRlZCBl
eHByLiAgKi8KKyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlFbmQoZmFsc2UsIGZhbHNlKTsK
KyAgICAgICAgJCQgPSBmYWxzZTsKKyAgICB9CisgICAgfAorICAgIHByb3BlcnR5ICc6JyBtYXli
ZV9zcGFjZSBleHByIHByaW8gZXJyb3IgeworICAgICAgICAvKiBXaGVuIHdlIGVuY291bnRlciBz
b21ldGhpbmcgbGlrZSBwIHtjb2xvcjogcmVkICFpbXBvcnRhbnQgZmFpbDt9IHdlIHNob3VsZCBk
cm9wIHRoZSBkZWNsYXJhdGlvbiAqLworICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eUVuZChm
YWxzZSwgZmFsc2UpOworICAgICAgICAkJCA9IGZhbHNlOworICAgIH0KKyAgICB8CisgICAgSU1Q
T1JUQU5UX1NZTSBtYXliZV9zcGFjZSB7CisgICAgICAgIC8qIEhhbmRsZSB0aGlzIGNhc2U6IGRp
diB7IHRleHQtYWxpZ246IGNlbnRlcjsgIWltcG9ydGFudCB9IEp1c3QgcmVkdWNlIGF3YXkgdGhl
IHN0cmF5ICFpbXBvcnRhbnQuICovCisgICAgICAgICQkID0gZmFsc2U7CisgICAgfQorICAgIHwK
KyAgICBwcm9wZXJ0eSAnOicgbWF5YmVfc3BhY2UgeworICAgICAgICAvKiBkaXYgeyBmb250LWZh
bWlseTogfSBKdXN0IHJlZHVjZSBhd2F5IHRoaXMgcHJvcGVydHkgd2l0aCBubyB2YWx1ZS4gKi8K
KyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlFbmQoZmFsc2UsIGZhbHNlKTsKKyAgICAgICAg
JCQgPSBmYWxzZTsKKyAgICB9CisgICAgfAorICAgIHByb3BlcnR5ICc6JyBtYXliZV9zcGFjZSBl
cnJvciB7CisgICAgICAgIC8qIGlmIHdlIGNvbWUgYWNyb3NzIHJ1bGVzIHdpdGggaW52YWxpZCB2
YWx1ZXMgbGlrZSB0aGlzIGNhc2U6IHAgeyB3ZWlnaHQ6ICo7IH0sIGp1c3QgZGlzY2FyZCB0aGUg
cnVsZSAqLworICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eUVuZChmYWxzZSwgZmFsc2UpOwor
ICAgICAgICAkJCA9IGZhbHNlOworICAgIH0KKyAgICB8CisgICAgcHJvcGVydHkgaW52YWxpZF9i
bG9jayB7CisgICAgICAgIC8qIGlmIHdlIGNvbWUgYWNyb3NzOiBkaXYgeyBjb2xvcns7Y29sb3I6
bWFyb29ufSB9LCBpZ25vcmUgZXZlcnl0aGluZyB3aXRoaW4gY3VybHkgYnJhY2tldHMgKi8KKyAg
ICAgICAgJCQgPSBmYWxzZTsKKyAgICB9CisgIDsKKworcHJvcGVydHk6CisgICAgSURFTlQgbWF5
YmVfc3BhY2UgeworICAgICAgICAkJCA9IGNzc1Byb3BlcnR5SUQoJDEpOworICAgIH0KKyAgOwor
CitwcmlvOgorICAgIElNUE9SVEFOVF9TWU0gbWF5YmVfc3BhY2UgeyAkJCA9IHRydWU7IH0KKyAg
ICB8IC8qIGVtcHR5ICovIHsgJCQgPSBmYWxzZTsgfQorICA7CisKK2V4cHI6CisgICAgdGVybSB7
CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1ZhbHVlTGlzdCgpOworICAgICAg
ICAkJC0+YWRkVmFsdWUocGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZSgkMSkpOworICAgIH0KKyAg
ICB8IGV4cHIgb3BlcmF0b3IgdGVybSB7CisgICAgICAgICQkID0gJDE7CisgICAgICAgIGlmICgk
JCkgeworICAgICAgICAgICAgaWYgKCQyKSB7CisgICAgICAgICAgICAgICAgQ1NTUGFyc2VyVmFs
dWUgdjsKKyAgICAgICAgICAgICAgICB2LmlkID0gMDsKKyAgICAgICAgICAgICAgICB2LnVuaXQg
PSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3I7CisgICAgICAgICAgICAgICAgdi5pVmFsdWUgPSAk
MjsKKyAgICAgICAgICAgICAgICAkJC0+YWRkVmFsdWUodik7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAkJC0+YWRkVmFsdWUocGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZSgkMykpOworICAg
ICAgICB9CisgICAgfQorICAgIHwgZXhwciBpbnZhbGlkX2Jsb2NrX2xpc3QgeworICAgICAgICAk
JCA9IDA7CisgICAgfQorICAgIHwgZXhwciBpbnZhbGlkX2Jsb2NrX2xpc3QgZXJyb3IgeworICAg
ICAgICAkJCA9IDA7CisgICAgfQorICAgIHwgZXhwciBlcnJvciB7CisgICAgICAgICQkID0gMDsK
KyAgICB9CisgIDsKKworb3BlcmF0b3I6CisgICAgJy8nIG1heWJlX3NwYWNlIHsKKyAgICAgICAg
JCQgPSAnLyc7CisgICAgfQorICB8ICcsJyBtYXliZV9zcGFjZSB7CisgICAgICAgICQkID0gJywn
OworICAgIH0KKyAgfCAvKiBlbXB0eSAqLyB7CisgICAgICAgICQkID0gMDsKKyAgfQorICA7CisK
K3Rlcm06CisgIHVuYXJ5X3Rlcm0geyAkJCA9ICQxOyB9CisgIHwgdW5hcnlfb3BlcmF0b3IgdW5h
cnlfdGVybSB7ICQkID0gJDI7ICQkLmZWYWx1ZSAqPSAkMTsgfQorICB8IFNUUklORyBtYXliZV9z
cGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1NUUklORzsgfQorICB8IElERU5UIG1heWJlX3NwYWNlIHsKKyAgICAgICQkLmlk
ID0gY3NzVmFsdWVLZXl3b3JkSUQoJDEpOworICAgICAgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfSURFTlQ7CisgICAgICAkJC5zdHJpbmcgPSAkMTsKKyAgfQorICAvKiBXZSBtaWdo
dCBuZWVkIHRvIGFjdHVhbGx5IHBhcnNlIHRoZSBudW1iZXIgZnJvbSBhIGRpbWVuc2lvbiwgYnV0
IHdlIGNhbid0IGp1c3QgcHV0IHNvbWV0aGluZyB0aGF0IHVzZXMgJCQuc3RyaW5nIGludG8gdW5h
cnlfdGVybS4gKi8KKyAgfCBESU1FTiBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5n
ID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RJTUVOU0lPTjsgfQorICB8
IHVuYXJ5X29wZXJhdG9yIERJTUVOIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcg
PSAkMjsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRElNRU5TSU9OOyB9CisgIHwg
VVJJIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJOyB9CisgIHwgVU5JQ09ERVJBTkdFIG1heWJlX3NwYWNl
IHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfVU5JQ09ERV9SQU5HRTsgfQorICB8IEhFWCBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsg
JCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BBUlNFUl9I
RVhDT0xPUjsgfQorICB8ICcjJyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0g
Q1NTUGFyc2VyU3RyaW5nKCk7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BBUlNF
Ul9IRVhDT0xPUjsgfSAvKiBIYW5kbGUgZXJyb3IgY2FzZTogImNvbG9yOiAjOyIgKi8KKyAgfCBW
QVJGVU5DVElPTiBtYXliZV9zcGFjZSBJREVOVCAnKScgbWF5YmVfc3BhY2UgeworI2lmIEVOQUJM
RV9DU1NfVkFSSUFCTEVTCisgICAgICAkJC5pZCA9IDA7CisgICAgICAkJC5zdHJpbmcgPSAkMzsK
KyAgICAgICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZBUklBQkxFX05BTUU7Cisj
ZW5kaWYKKyAgfQorICAvKiBGSVhNRTogYWNjb3JkaW5nIHRvIHRoZSBzcGVjcyBhIGZ1bmN0aW9u
IGNhbiBoYXZlIGEgdW5hcnlfb3BlcmF0b3IgaW4gZnJvbnQuIEkga25vdyBubyBjYXNlIHdoZXJl
IHRoaXMgbWFrZXMgc2Vuc2UgKi8KKyAgfCBmdW5jdGlvbiB7CisgICAgICAkJCA9ICQxOworICB9
CisgIHwgY2FsY19mdW5jdGlvbiB7CisgICAgICAkJCA9ICQxOworICB9CisgIHwgbWluX29yX21h
eF9mdW5jdGlvbiB7CisgICAgICAkJCA9ICQxOworICB9CisgIHwgJyUnIG1heWJlX3NwYWNlIHsg
LyogSGFuZGxlIHdpZHRoOiAlOyAqLworICAgICAgJCQuaWQgPSAwOyAkJC51bml0ID0gMDsKKyAg
fQorICA7CisKK3VuYXJ5X3Rlcm06CisgIElOVEVHRVIgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7
ICQkLmlzSW50ID0gdHJ1ZTsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX05VTUJFUjsgfQorICB8IEZMT0FUVE9LRU4gbWF5YmVfc3BhY2UgeyAkJC5pZCA9
IDA7ICQkLmlzSW50ID0gZmFsc2U7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19OVU1CRVI7IH0KKyAgfCBQRVJDRU5UQUdFIG1heWJlX3NwYWNlIHsgJCQu
aWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UEVSQ0VOVEFHRTsgfQorICB8IFBYUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVl
ID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYOyB9CisgIHwgQ01TIG1h
eWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfQ007IH0KKyAgfCBNTVMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQk
LmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19NTTsgfQorICB8
IElOUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lOOyB9CisgIHwgUFRTIG1heWJlX3NwYWNlIHsgJCQuaWQg
PSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFQ7
IH0KKyAgfCBQQ1MgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51
bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQzsgfQorICB8IERFR1MgbWF5YmVfc3BhY2Ug
eyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19ERUc7IH0KKyAgfCBSQURTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUg
PSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkFEOyB9CisgIHwgR1JBRFMg
bWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19HUkFEOyB9CisgIHwgVFVSTlMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9
IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19UVVJO
OyB9CisgIHwgTVNFQ1MgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAk
JC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19NUzsgfQorICB8IFNFQ1MgbWF5YmVfc3Bh
Y2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19TOyB9CisgIHwgSEVSVFogbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1
ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19IWjsgfQorICB8IEtIRVJU
WiBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0tIWjsgfQorICB8IEVNUyBtYXliZV9zcGFjZSB7ICQkLmlkID0g
MDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUzsg
fQorICB8IFFFTVMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51
bml0ID0gQ1NTUGFyc2VyVmFsdWU6OlFfRU1TOyB9CisgIHwgRVhTIG1heWJlX3NwYWNlIHsgJCQu
aWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
RVhTOyB9CisgIHwgUkVNUyBtYXliZV9zcGFjZSB7CisgICAgICAkJC5pZCA9IDA7CisgICAgICAk
JC5mVmFsdWUgPSAkMTsKKyAgICAgICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JF
TVM7CisgICAgICBpZiAocGFyc2VyLT5tX3N0eWxlU2hlZXQpCisgICAgICAgICAgcGFyc2VyLT5t
X3N0eWxlU2hlZXQtPnBhcnNlclNldFVzZXNSZW1Vbml0cyh0cnVlKTsKKyAgfQorICB8IFZXIG1h
eWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfVlc7IH0KKyAgfCBWSCBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQu
ZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZIOyB9CisgIHwg
Vk1JTiBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZNSU47IH0KKyAgfCBEUFBYIG1heWJlX3NwYWNlIHsgJCQu
aWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
RFBQWDsgfQorICB8IERQSSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7
ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQSTsgfQorICB8IERQQ00gbWF5YmVf
c3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19EUENNOyB9CisgIDsKKworZnVuY3Rpb246CisgICAgRlVOQ1RJT04gbWF5YmVf
c3BhY2UgZXhwciAnKScgbWF5YmVfc3BhY2UgeworICAgICAgICBDU1NQYXJzZXJGdW5jdGlvbiog
ZiA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdGdW5jdGlvbigpOworICAgICAgICBmLT5uYW1lID0g
JDE7CisgICAgICAgIGYtPmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkMyk7
CisgICAgICAgICQkLmlkID0gMDsKKyAgICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpG
dW5jdGlvbjsKKyAgICAgICAgJCQuZnVuY3Rpb24gPSBmOworICAgIH0gfAorICAgIEZVTkNUSU9O
IG1heWJlX3NwYWNlIGV4cHIgVE9LRU5fRU9GIHsKKyAgICAgICAgQ1NTUGFyc2VyRnVuY3Rpb24q
IGYgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsKKyAgICAgICAgZi0+bmFtZSA9
ICQxOworICAgICAgICBmLT5hcmdzID0gcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDMp
OworICAgICAgICAkJC5pZCA9IDA7CisgICAgICAgICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6
RnVuY3Rpb247CisgICAgICAgICQkLmZ1bmN0aW9uID0gZjsKKyAgICB9IHwKKyAgICBGVU5DVElP
TiBtYXliZV9zcGFjZSAnKScgbWF5YmVfc3BhY2UgeworICAgICAgICBDU1NQYXJzZXJGdW5jdGlv
biogZiA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdGdW5jdGlvbigpOworICAgICAgICBmLT5uYW1l
ID0gJDE7CisgICAgICAgIENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVMaXN0ID0gcGFyc2VyLT5j
cmVhdGVGbG9hdGluZ1ZhbHVlTGlzdCgpOworICAgICAgICBmLT5hcmdzID0gcGFyc2VyLT5zaW5r
RmxvYXRpbmdWYWx1ZUxpc3QodmFsdWVMaXN0KTsKKyAgICAgICAgJCQuaWQgPSAwOworICAgICAg
ICAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uOworICAgICAgICAkJC5mdW5jdGlv
biA9IGY7CisgICAgfSB8CisgICAgRlVOQ1RJT04gbWF5YmVfc3BhY2UgZXJyb3IgeworICAgICAg
ICBDU1NQYXJzZXJGdW5jdGlvbiogZiA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdGdW5jdGlvbigp
OworICAgICAgICBmLT5uYW1lID0gJDE7CisgICAgICAgIGYtPmFyZ3MgPSBudWxscHRyOworICAg
ICAgICAkJC5pZCA9IDA7CisgICAgICAgICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rp
b247CisgICAgICAgICQkLmZ1bmN0aW9uID0gZjsKKyAgfQorICA7CisgCitjYWxjX2Z1bmNfdGVy
bToKKyAgdW5hcnlfdGVybSB7ICQkID0gJDE7IH0KKyAgfCBWQVJGVU5DVElPTiBtYXliZV9zcGFj
ZSBJREVOVCAnKScgbWF5YmVfc3BhY2UgeworI2lmIEVOQUJMRV9DU1NfVkFSSUFCTEVTCisgICAg
ICAkJC5pZCA9IDA7CisgICAgICAkJC5zdHJpbmcgPSAkMzsKKyAgICAgICQkLnVuaXQgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1ZBUklBQkxFX05BTUU7CisjZW5kaWYKKyAgfQorICB8IHVuYXJ5
X29wZXJhdG9yIHVuYXJ5X3Rlcm0geyAkJCA9ICQyOyAkJC5mVmFsdWUgKj0gJDE7IH0KKyAgOwor
CitjYWxjX2Z1bmNfb3BlcmF0b3I6CisgICAgJysnIFdISVRFU1BBQ0UgeworICAgICAgICAkJCA9
ICcrJzsKKyAgICB9CisgICAgfCAnLScgV0hJVEVTUEFDRSB7CisgICAgICAgICQkID0gJy0nOwor
ICAgIH0KKyAgICB8ICcqJyBtYXliZV9zcGFjZSB7CisgICAgICAgICQkID0gJyonOworICAgIH0K
KyAgICB8ICcvJyBtYXliZV9zcGFjZSB7CisgICAgICAgICQkID0gJy8nOworICAgIH0KKyAgOwor
CitjYWxjX2Z1bmNfcGFyZW5fZXhwcjoKKyAgICAnKCcgbWF5YmVfc3BhY2UgY2FsY19mdW5jX2V4
cHIgbWF5YmVfc3BhY2UgJyknIG1heWJlX3NwYWNlIHsKKyAgICAgICAgaWYgKCQzKSB7CisgICAg
ICAgICAgICAkJCA9ICQzOworICAgICAgICAgICAgQ1NTUGFyc2VyVmFsdWUgdjsKKyAgICAgICAg
ICAgIHYuaWQgPSAwOworICAgICAgICAgICAgdi51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJh
dG9yOworICAgICAgICAgICAgdi5pVmFsdWUgPSAnKCc7CisgICAgICAgICAgICAkJC0+aW5zZXJ0
VmFsdWVBdCgwLCB2KTsKKyAgICAgICAgICAgIHYuaVZhbHVlID0gJyknOworICAgICAgICAgICAg
JCQtPmFkZFZhbHVlKHYpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICQkID0gMDsKKyAg
ICB9CisKK2NhbGNfZnVuY19leHByOgorICAgIGNhbGNfZnVuY190ZXJtIG1heWJlX3NwYWNlIHsK
KyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nVmFsdWVMaXN0KCk7CisgICAgICAg
ICQkLT5hZGRWYWx1ZShwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlKCQxKSk7CisgICAgfQorICAg
IHwgY2FsY19mdW5jX2V4cHIgY2FsY19mdW5jX29wZXJhdG9yIGNhbGNfZnVuY190ZXJtIHsKKyAg
ICAgICAgaWYgKCQxICYmICQyKSB7CisgICAgICAgICAgICAkJCA9ICQxOworICAgICAgICAgICAg
Q1NTUGFyc2VyVmFsdWUgdjsKKyAgICAgICAgICAgIHYuaWQgPSAwOworICAgICAgICAgICAgdi51
bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOworICAgICAgICAgICAgdi5pVmFsdWUgPSAk
MjsKKyAgICAgICAgICAgICQkLT5hZGRWYWx1ZSh2KTsKKyAgICAgICAgICAgICQkLT5hZGRWYWx1
ZShwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlKCQzKSk7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgJCQgPSAwOworCisgICAgfQorICAgIHwgY2FsY19mdW5jX2V4cHIgY2FsY19mdW5jX29w
ZXJhdG9yIGNhbGNfZnVuY19wYXJlbl9leHByIHsKKyAgICAgICAgaWYgKCQxICYmICQyICYmICQz
KSB7CisgICAgICAgICAgICAkJCA9ICQxOworICAgICAgICAgICAgQ1NTUGFyc2VyVmFsdWUgdjsK
KyAgICAgICAgICAgIHYuaWQgPSAwOworICAgICAgICAgICAgdi51bml0ID0gQ1NTUGFyc2VyVmFs
dWU6Ok9wZXJhdG9yOworICAgICAgICAgICAgdi5pVmFsdWUgPSAkMjsKKyAgICAgICAgICAgICQk
LT5hZGRWYWx1ZSh2KTsKKyAgICAgICAgICAgICQkLT5leHRlbmQoKigkMykpOworICAgICAgICB9
IGVsc2UgCisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIHwgY2FsY19mdW5jX3BhcmVu
X2V4cHIKKyAgICB8IGNhbGNfZnVuY19leHByIGVycm9yIHsKKyAgICAgICAgJCQgPSAwOworICAg
IH0KKyAgOworCitjYWxjX2Z1bmNfZXhwcl9saXN0OgorICAgIGNhbGNfZnVuY19leHByICB7Cisg
ICAgICAgICQkID0gJDE7CisgICAgfSAgICAKKyAgICB8IGNhbGNfZnVuY19leHByX2xpc3QgJywn
IG1heWJlX3NwYWNlIGNhbGNfZnVuY19leHByIHsKKyAgICAgICAgaWYgKCQxICYmICQ0KSB7Cisg
ICAgICAgICAgICAkJCA9ICQxOworICAgICAgICAgICAgQ1NTUGFyc2VyVmFsdWUgdjsKKyAgICAg
ICAgICAgIHYuaWQgPSAwOworICAgICAgICAgICAgdi51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9w
ZXJhdG9yOworICAgICAgICAgICAgdi5pVmFsdWUgPSAnLCc7CisgICAgICAgICAgICAkJC0+YWRk
VmFsdWUodik7CisgICAgICAgICAgICAkJC0+ZXh0ZW5kKCooJDQpKTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIAorCitjYWxjX2Z1bmN0aW9uOgorICAg
IENBTENGVU5DVElPTiBtYXliZV9zcGFjZSBjYWxjX2Z1bmNfZXhwciAnKScgbWF5YmVfc3BhY2Ug
eworICAgICAgICBDU1NQYXJzZXJGdW5jdGlvbiogZiA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdG
dW5jdGlvbigpOworICAgICAgICBmLT5uYW1lID0gJDE7CisgICAgICAgIGYtPmFyZ3MgPSBwYXJz
ZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkMyk7CisgICAgICAgICQkLmlkID0gMDsKKyAgICAg
ICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKKyAgICAgICAgJCQuZnVuY3Rp
b24gPSBmOworICAgIH0KKyAgICB8IENBTENGVU5DVElPTiBtYXliZV9zcGFjZSBlcnJvciB7Cisg
ICAgICAgIFlZRVJST1I7CisgICAgfQorICAgIDsKKworCittaW5fb3JfbWF4OgorICAgIE1JTkZV
TkNUSU9OIHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAgfCBNQVhGVU5DVElPTiB7Cisg
ICAgICAgICQkID0gJDE7CisgICAgfQorICAgIDsKKworbWluX29yX21heF9mdW5jdGlvbjoKKyAg
ICBtaW5fb3JfbWF4IG1heWJlX3NwYWNlIGNhbGNfZnVuY19leHByX2xpc3QgJyknIG1heWJlX3Nw
YWNlIHsKKyAgICAgICAgQ1NTUGFyc2VyRnVuY3Rpb24qIGYgPSBwYXJzZXItPmNyZWF0ZUZsb2F0
aW5nRnVuY3Rpb24oKTsKKyAgICAgICAgZi0+bmFtZSA9ICQxOworICAgICAgICBmLT5hcmdzID0g
cGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDMpOworICAgICAgICAkJC5pZCA9IDA7Cisg
ICAgICAgICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb247CisgICAgICAgICQkLmZ1
bmN0aW9uID0gZjsKKyAgICB9IAorICAgIHwgbWluX29yX21heCBtYXliZV9zcGFjZSBlcnJvciB7
CisgICAgICAgIFlZRVJST1I7CisgICAgfQorICAgIDsKKworLyogZXJyb3IgaGFuZGxpbmcgcnVs
ZXMgKi8KKworc2F2ZV9ibG9jazoKKyAgICBjbG9zaW5nX2JyYWNlIHsKKyAgICAgICAgJCQgPSAw
OworICAgIH0KKyAgfCBlcnJvciBjbG9zaW5nX2JyYWNlIHsKKyAgICAgICAgJCQgPSAwOworICAg
IH0KKyAgICA7CisKK2ludmFsaWRfYXQ6CisgICAgQVRLRVlXT1JEIGVycm9yIGludmFsaWRfYmxv
Y2sgeworICAgICAgICAkJCA9IDA7CisgICAgfQorICB8IEFUS0VZV09SRCBlcnJvciAnOycgewor
ICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIDsKKworaW52YWxpZF9ydWxlOgorICAgIGVycm9y
IGludmFsaWRfYmxvY2sgeworICAgICAgICAkJCA9IDA7CisgICAgfQorCisvKgorICBTZWVtcyBs
aWtlIHRoZSB0d28gcnVsZXMgYmVsb3cgYXJlIHRyeWluZyB0b28gbXVjaCBhbmQgdmlvbGF0aW5n
CisgIGh0dHA6Ly93d3cuaGl4aWUuY2gvdGVzdHMvZXZpbC9taXhlZC9jc3NlcnJvcmhhbmRsaW5n
Lmh0bWwKKworICB8IGVycm9yICc7JyB7CisgICAgICAgICQkID0gMDsKKyAgICB9CisgIHwgZXJy
b3IgJ30nIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKyovCisgICAgOworCitpbnZhbGlkX2Js
b2NrOgorICAgICd7JyBlcnJvciBpbnZhbGlkX2Jsb2NrX2xpc3QgZXJyb3IgY2xvc2luZ19icmFj
ZSB7CisgICAgICAgIHBhcnNlci0+aW52YWxpZEJsb2NrSGl0KCk7CisgICAgfQorICB8ICd7JyBl
cnJvciBjbG9zaW5nX2JyYWNlIHsKKyAgICAgICAgcGFyc2VyLT5pbnZhbGlkQmxvY2tIaXQoKTsK
KyAgICB9CisgICAgOworCitpbnZhbGlkX2Jsb2NrX2xpc3Q6CisgICAgaW52YWxpZF9ibG9jawor
ICB8IGludmFsaWRfYmxvY2tfbGlzdCBlcnJvciBpbnZhbGlkX2Jsb2NrCis7CisKKyUlCisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW5jbHVkZXMgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluY2x1ZGVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyNjg5NzQ1
MGI0MWM1ODE3MDE5M2I5YjAwOGI2NDZiNGNkYTY2N2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluY2x1ZGVzCkBAIC0wLDAgKzEsODUgQEAKKyV7
CisKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDAyLTIwMDMgTGFycyBLbm9sbCAoa25vbGxAa2Rl
Lm9yZykKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAo
QykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCisgKiAgQ29weXJpZ2h0
IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgKgorICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0x
MzAxICBVU0EKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQ1NT
UGFyc2VyLmgiCisjaW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgorI2luY2x1ZGUgIkNTU1ByaW1p
dGl2ZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNT
U1NlbGVjdG9yLmgiCisjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCisjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJNZWRpYUxpc3QuaCIK
KyNpbmNsdWRlICJNZWRpYVF1ZXJ5RXhwLmgiCisjaW5jbHVkZSAiU3R5bGVSdWxlLmgiCisjaW5j
bHVkZSAiU3R5bGVTaGVldENvbnRlbnRzLmgiCisjaW5jbHVkZSAiV2ViS2l0Q1NTS2V5ZnJhbWVS
dWxlLmgiCisjaW5jbHVkZSAiV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5oIgorI2luY2x1ZGUgPHd0
Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
KworI2RlZmluZSBZWU1BTExPQyBmYXN0TWFsbG9jCisjZGVmaW5lIFlZRlJFRSBmYXN0RnJlZQor
CisjZGVmaW5lIFlZRU5BQkxFX05MUyAwCisjZGVmaW5lIFlZTFRZUEVfSVNfVFJJVklBTCAxCisj
ZGVmaW5lIFlZTUFYREVQVEggMTAwMDAKKyNkZWZpbmUgWVlERUJVRyAwCisKKyNpZiBZWURFQlVH
ID4gMAorI2RlZmluZSBZWVBSSU5UKEZpbGUsVHlwZSxWYWx1ZSkgcHJpbnRfdG9rZW5fdmFsdWUo
RmlsZSxUeXBlLFZhbHVlKQorc3RhdGljIHZvaWQgcHJpbnRfdG9rZW5fdmFsdWUoRklMRSAqIHl5
b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNUWVBFIGNvbnN0ICZ5eXZhbHVlKQoreworICAgIHN3aXRj
aCAoeXl0eXBlKSB7CisgICAgY2FzZSBJREVOVDoKKyAgICBjYXNlIFNUUklORzoKKyAgICBjYXNl
IE5USDoKKyAgICBjYXNlIEhFWDoKKyAgICBjYXNlIElEU0VMOgorICAgIGNhc2UgRElNRU46Cisg
ICAgY2FzZSBJTlZBTElERElNRU46CisgICAgY2FzZSBVUkk6CisgICAgY2FzZSBGVU5DVElPTjoK
KyAgICBjYXNlIEFOWUZVTkNUSU9OOgorICAgIGNhc2UgTk9URlVOQ1RJT046CisgICAgY2FzZSBD
QUxDRlVOQ1RJT046CisgICAgY2FzZSBNSU5GVU5DVElPTjoKKyAgICBjYXNlIE1BWEZVTkNUSU9O
OgorICAgIGNhc2UgVkFSX0RFRklOSVRJT046CisgICAgY2FzZSBVTklDT0RFUkFOR0U6CisgICAg
ICAgIFlZRlBSSU5URih5eW91dHB1dCwgIiVzIiwgU3RyaW5nKHl5dmFsdWUuc3RyaW5nKS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7
CisgICAgfQorfQorI2VuZGlmCisKKyV9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
bWFrZWdyYW1tYXIucGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZWdyYW1tYXIucGwKaW5kZXgg
MDZmYWFhOTNkMzI2MGFiNTMwNDE3YzQzM2UxNjhjMzM1YmM2N2FlZi4uMzhiMjk4ODc0YzYyNDcw
YmNhYTUwNDI2ZmFjNjM3NjhkNmM1N2I4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L21ha2VncmFtbWFyLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlZ3JhbW1hci5wbApA
QCAtMjEsMzUgKzIxLDc5IEBACiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzOwogCi1teSAkZ3Jh
bW1hciA9ICRBUkdWWzBdOwotbXkgJGZpbGVCYXNlID0gJEFSR1ZbMV07Cit1c2UgRmlsZTo6QmFz
ZW5hbWU7Cit1c2UgRmlsZTo6U3BlYzsKK3VzZSBHZXRvcHQ6Okxvbmc7CiAKLXN5c3RlbSgiYmlz
b24gLWQgLXAgY3NzeXkgIiAuICRncmFtbWFyIC4gIiAtbyAiIC4gJGZpbGVCYXNlIC4gIi50YWIu
YyIpOworbXkgJG91dHB1dERpciA9ICIuIjsKK215ICRleHRyYURlZmluZXMgPSAiIjsKK215ICRz
eW1ib2xzUHJlZml4ID0gIiI7CitteSAkcHJlcHJvY2Vzc29yID0gIiI7CitteSAkcHJlcHJvY2Vz
c09ubHkgPSAwOworbXkgJGJpc29uID0gImJpc29uIjsKIAotb3BlbiBIRUFERVIsICI+IiAuICRm
aWxlQmFzZSAuICIuaCIgb3IgZGllOworR2V0T3B0aW9ucygKKyAgICAnb3V0cHV0RGlyPXMnID0+
IFwkb3V0cHV0RGlyLAorICAgICdleHRyYURlZmluZXM9cycgPT4gXCRleHRyYURlZmluZXMsCisg
ICAgJ2Jpc29uPXMnID0+IFwkYmlzb24sCisgICAgJ3ByZXByb2Nlc3Nvcj1zJyA9PiBcJHByZXBy
b2Nlc3NvciwKKyAgICAncHJlcHJvY2Vzc09ubHknID0+IFwkcHJlcHJvY2Vzc09ubHksCisgICAg
J3N5bWJvbHNQcmVmaXg9cycgPT4gXCRzeW1ib2xzUHJlZml4CispOworCitteSAkZ3JhbW1hckZp
bGVQYXRoID0gJEFSR1ZbMF07CitteSAkZ3JhbW1hckluY2x1ZGVzRmlsZVBhdGggPSBAQVJHViA+
IDAgPyAkQVJHVlsxXSA6ICIiOworCitpZiAoIWxlbmd0aCgkc3ltYm9sc1ByZWZpeCkgJiYgISRw
cmVwcm9jZXNzT25seSkgeworICAgIGRpZSAiTmVlZCBhIHN5bWJvbHMgcHJlZml4IHRvIGdpdmUg
dG8gYmlzb24gKGUuZy4gY3NzeXksIHhwYXRoeXkpIjsKK30KKworCitteSAoJGZpbGVuYW1lLCAk
YmFzZVBhdGgsICRzdWZmaXgpID0gZmlsZXBhcnNlKCRncmFtbWFyRmlsZVBhdGgsICgiLnkiLCAi
LnkuaW4iKSk7CitwcmludCAiJGZpbGVuYW1lICRiYXNlUGF0aCAkc3VmZml4XG4iOworCitpZiAo
JHN1ZmZpeCBlcSAiLnkuaW4iKSB7CisgICAgbXkgJGdyYW1tYXJGaWxlT3V0UGF0aCA9IEZpbGU6
OlNwZWMtPmpvaW4oJG91dHB1dERpciwgIiRmaWxlbmFtZS55Iik7CisgICAgaWYgKCEkZ3JhbW1h
ckluY2x1ZGVzRmlsZVBhdGgpIHsKKyAgICAgICAgJGdyYW1tYXJJbmNsdWRlc0ZpbGVQYXRoID0g
IiR7YmFzZVBhdGh9JHtmaWxlbmFtZX0ueS5pbmNsdWRlcyI7CisgICAgfQorCisgICAgb3BlbiBH
UkFNTUFSLCAiPiRncmFtbWFyRmlsZU91dFBhdGgiIG9yIGRpZTsKKyAgICBvcGVuIElOQ0xVREVT
LCAiPCRncmFtbWFySW5jbHVkZXNGaWxlUGF0aCIgb3IgZGllOworCisgICAgcmVxdWlyZSBwcmVw
cm9jZXNzb3I7CisKKyAgICB3aGlsZSAoPElOQ0xVREVTPikgeworICAgICAgICBwcmludCBHUkFN
TUFSOworICAgIH0KKyAgICBwcmludCBHUkFNTUFSIGpvaW4oIiIsIGFwcGx5UHJlcHJvY2Vzc29y
KCRncmFtbWFyRmlsZVBhdGgsICRleHRyYURlZmluZXMsICRwcmVwcm9jZXNzb3IpKTsKKyAgICBj
bG9zZSBHUkFNTUFSOworCisgICAgJGdyYW1tYXJGaWxlUGF0aCA9ICRncmFtbWFyRmlsZU91dFBh
dGg7CisKKyAgICBleGl0IGlmICRwcmVwcm9jZXNzT25seTsKK30KKworZXhpdDsKKworbXkgJGZp
bGVCYXNlID0gRmlsZTo6U3BlYy0+am9pbigkb3V0cHV0RGlyLCAkZmlsZW5hbWUpOworc3lzdGVt
KCIkYmlzb24gLWQgLXAgJHN5bWJvbHNQcmVmaXggJGdyYW1tYXJGaWxlUGF0aCAtbyAkZmlsZUJh
c2UuY3BwIik7CisKK29wZW4gSEVBREVSLCAiPiRmaWxlQmFzZS5oIiBvciBkaWU7CiBwcmludCBI
RUFERVIgPDwgIkVPRiI7CiAjaWZuZGVmIENTU0dSQU1NQVJfSAogI2RlZmluZSBDU1NHUkFNTUFS
X0gKIEVPRgogCi1vcGVuIEhQUCwgIjwiIC4gJGZpbGVCYXNlIC4gIi50YWIuaCIgb3IgZGllOwor
b3BlbiBIUFAsICI8JGZpbGVCYXNlLmNwcC5oIiBvciBvcGVuIEhQUCwgIjwkZmlsZUJhc2UuaHBw
IiBvciBkaWU7CiB3aGlsZSAoPEhQUD4pIHsKICAgICBwcmludCBIRUFERVI7CiB9CiBjbG9zZSBI
UFA7CiAKIHByaW50IEhFQURFUiAiI2VuZGlmXG4iOwotCiBjbG9zZSBIRUFERVI7CiAKLXVubGlu
aygkZmlsZUJhc2UgLiAiLnRhYi5oIik7Ci0KLW9wZW4gQ1BQLCAiPiIgLiAkZmlsZUJhc2UgLiAi
LmNwcCIgb3IgZGllOwotb3BlbiBHRU5TUkMsICI8IiAuICRmaWxlQmFzZSAuICIudGFiLmMiIG9y
IGRpZTsKLXdoaWxlICg8R0VOU1JDPikgewotICAgIHByaW50IENQUDsKLX0KLWNsb3NlIEdFTlNS
QzsKLWNsb3NlIENQUDsKK3VubGluaygiJGZpbGVCYXNlLmNwcC5oIik7Cit1bmxpbmsoIiRmaWxl
QmFzZS5ocHAiKTsKIAotdW5saW5rKCRmaWxlQmFzZSAuICIudGFiLmMiKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9jbWFrZS9XZWJLaXRNYWNyb3MuY21ha2UgYi9Tb3VyY2UvY21ha2UvV2ViS2l0TWFj
cm9zLmNtYWtlCmluZGV4IGVkOGViNWQzMjBmMjNkZDhkZjg0YmI3NGU2ZDdlMjlmNTU5MDQ1ZWYu
Ljc4ZmJhZjZkNTEzNWE0MWUzNTEzMDRhNThkNjdkNzgzOGNhODRjODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9jbWFrZS9XZWJLaXRNYWNyb3MuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL1dlYktpdE1h
Y3Jvcy5jbWFrZQpAQCAtMTQ4LDExICsxNDgsMTIgQEAgTUFDUk8gKEdFTkVSQVRFX0hBU0hfTFVU
IF9pbnB1dCBfb3V0cHV0KQogRU5ETUFDUk8gKCkKIAogCi1NQUNSTyAoR0VORVJBVEVfR1JBTU1B
UiBfcHJlZml4IF9pbnB1dCBfb3V0cHV0X2hlYWRlciBfb3V0cHV0X3NvdXJjZSkKK01BQ1JPIChH
RU5FUkFURV9HUkFNTUFSIF9wcmVmaXggX2lucHV0IF9vdXRwdXRfaGVhZGVyIF9vdXRwdXRfc291
cmNlIF9mZWF0dXJlcykKICAgICBBRERfQ1VTVE9NX0NPTU1BTkQoCiAgICAgICAgIE9VVFBVVCAk
e19vdXRwdXRfaGVhZGVyfSAke19vdXRwdXRfc291cmNlfQogICAgICAgICBNQUlOX0RFUEVOREVO
Q1kgJHtfaW5wdXR9Ci0gICAgICAgIENPTU1BTkQgJHtCSVNPTl9FWEVDVVRBQkxFfSAtcCAke19w
cmVmaXh9ICR7X2lucHV0fSAtbyAke19vdXRwdXRfc291cmNlfSAtLWRlZmluZXM9JHtfb3V0cHV0
X2hlYWRlcn0KKyAgICAgICAgREVQRU5EUyAke19pbnB1dH0KKyAgICAgICAgQ09NTUFORCAke1BF
UkxfRVhFQ1VUQUJMRX0gLUkgJHtXRUJDT1JFX0RJUn0vYmluZGluZ3Mvc2NyaXB0cyAke1dFQkNP
UkVfRElSfS9jc3MvbWFrZWdyYW1tYXIucGwgJHtfaW5wdXR9IC0tb3V0cHV0RGlyICR7REVSSVZF
RF9TT1VSQ0VTX1dFQkNPUkVfRElSfSAtLWV4dHJhRGVmaW5lcyAiJHtfZmVhdHVyZXN9IiAtLXBy
ZXByb2Nlc3NvciAiJHtDT0RFX0dFTkVSQVRPUl9QUkVQUk9DRVNTT1J9IiAtLWJpc29uICIke0JJ
U09OX0VYRUNVVEFCTEV9IiAtLXN5bWJvbHNQcmVmaXggJHtfcHJlZml4fSAke19pbnB1dH0KICAg
ICAgICAgVkVSQkFUSU0pCiBFTkRNQUNSTyAoKQogCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9D
aGFuZ2VMb2cKaW5kZXggNWJlZGVjYzIyYzNiNjQ1ZGQzMTlkZGE1MDZkMTg4NDY4MDAxMDRkMi4u
NTM0ODUyOTZhMDg5YWE3YjQ4NzY0MWMzYjhhYTNkY2QzNDY5M2U5YiAxMDA2NDQKLS0tIGEvQ2hh
bmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTEwLTA5ICBQYWJs
byBGbG91cmV0ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBQcmUtcHJvY2VzcyBD
U1NHcmFtbWFyLnkgYmVmb3JlIHJ1bm5pbmcgdGhyb3VnaCBiaXNvbi4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MjkwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0TWFj
cm9zLmNtYWtlOgorICAgICAgICAgICAgVXNlIFdlYkNvcmUvY3NzL21ha2VncmFtbWFyLnBsIHRv
IGdlbmVyYXRlIGJpc29uIGdyYW1tYXIgZmlsZXMuCisKIDIwMTItMTAtMTAgIFNpbW9uIEZyYXNl
ciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQXR0ZW1wdCB0byBmaXggZ3Rr
IGJ1aWxkIHdoaWNoIGNvbnRyb2xzIGV4cG9ydHMgdmlhIHRoaXMgbXlzdGVyaW91c2x5LW5hbWVk
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168475</attachid>
            <date>2012-10-12 13:53:16 -0700</date>
            <delta_ts>2012-10-12 14:11:55 -0700</delta_ts>
            <desc>Rebased patch</desc>
            <filename>bug-94290-20121012135211.patch</filename>
            <type>text/plain</type>
            <size>116414</size>
            <attacher name="Pablo Flouret">pf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmMzYzhmODZjZTU4MGEx
YWI2ZTM5ODM1NGI4NDc0NjI3ZWQxNTdkYy4uMDNlOGU2NDA4N2U1NTk2M2ZmMmRiMTMzMDJhODdj
ZGE1MDNjOTMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTEwLTA5ICBQYWJs
byBGbG91cmV0ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBQcmUtcHJvY2VzcyBD
U1NHcmFtbWFyLnkgYmVmb3JlIHJ1bm5pbmcgdGhyb3VnaCBiaXNvbi4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MjkwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUnVubmluZyBDU1NHcmFtbWFyLnkgdGhy
b3VnaCBhIHByZXByb2Nlc3NvciBhbGxvd3MgdGhlIHVzZSBvZiBmZWF0dXJlCisgICAgICAgIGRl
ZmluZXMgaW4gYWxsIHBsYWNlcyBvZiB0aGUgeWFjYyBmaWxlIChpLmUuIG5vdCBqdXN0IGluIEMg
YmxvY2tzKS4KKyAgICAgICAgTW9zdGx5IHVzZWZ1bCB0byBiZSBhYmxlIHRvIGtlZXAgZXZlcnkg
cGFydCBvZiBhIGZlYXR1cmUgdW5kZXIgZmVhdHVyZQorICAgICAgICBmbGFncyBmb3Igc2VsZi1k
b2N1bWVudGluZyBwdXJwb3Nlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIENTU0dyYW1tYXIu
eSBzaG91bGQgYmUgZ2VuZXJhdGVkIGNvcnJlY3RseSBhbmQgZXZlcnl0aGluZworICAgICAgICBz
aG91bGQga2VlcCB3b3JraW5nIGFzIGJlZm9yZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMucHJpOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAgICAgTW9kaWZ5IGJ1
aWxkIHN5c3RlbXMgdG8gdXNlIG1ha2VncmFtbWFyLnBsIHRvIGdlbmVyYXRlIHRoZSAueSBmaWxl
cworICAgICAgICAgICAgYW5kIHJ1biB0aG9zZSB0aHJvdWdoIGJpc29uLgorCisgICAgICAgICog
V2ViQ29yZS5neXAvV2ViQ29yZS5neXA6CisgICAgICAgICAgICBBZGQgYSBuZXcgYWN0aW9uIHRv
IHByZXByb2Nlc3MgdGhlIENTU0dyYW1tYXIueS5pbiBmaWxlIGJlZm9yZSB0aGUKKyAgICAgICAg
ICAgIGJpc29uIHJ1bGUgaXMgcnVuLgorCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAgICAgQWRkIHRoZSBuZXcgLnkuaW4gLyAueS5pbmNsdWRlcyBmaWxlcy4KKworICAg
ICAgICAqIGNzcy9DU1NHcmFtbWFyLnkuaW46IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhbW1hci55LgorICAgICAgICAgICAgQWxzbyBtb3ZlZCB0aGUgdG9wIGRlY2xhcmF0
aW9ucyBzZWN0aW9uIHRoYXQgaGFzIGluY2x1ZGVzLCBkZWZpbmVzLAorICAgICAgICAgICAgZXRj
LiB0byBpdHMgb3duIGZpbGUuIFRoZXNlIHNob3VsZG4ndCBiZSB0b3VjaGVkIGJ5IHRoZSBmaXJz
dAorICAgICAgICAgICAgcGFzcyBvZiB0aGUgcHJlcHJvY2Vzc29yLiBBbmQgY2hhbmdlZCB0aGUg
ZXhpc3RpbmcgRU5BQkxFKEZFQVRVUkUpCisgICAgICAgICAgICBpZmRlZnMgdG8gRU5BQkxFX0ZF
QVRVUkUgc2luY2UgdGhlIEVOQUJMRSgpIG1hY3JvIGlzIG5vdCBhdmFpbGFibGUKKyAgICAgICAg
ICAgIHlldC4KKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55LmluY2x1ZGVzOiBBZGRlZC4KKyAg
ICAgICAgICAgIFRoZSBhZm9yZW1lbnRpb25lZCBkZWNsYXJhdGlvbnMgaGVhZGVyIHNlY3Rpb24u
IEFmdGVyIHRoZSAueS5pbiBmaWxlCisgICAgICAgICAgICBpcyBwcm9jZXNzZWQgaXQgd2lsbCBi
ZSBjb25jYXRlbmF0ZWQgd2l0aCB0aGlzIG9uZSB0byBtYWtlIHRoZQorICAgICAgICAgICAgQ1NT
R3JhbW1hci55IGZpbGUuCisKKyAgICAgICAgKiBjc3MvbWFrZWdyYW1tYXIucGw6CisgICAgICAg
ICAgICBNb2RpZnkgdGhlIHNjcmlwdCB0byBoYW5kbGUgLnkuaW4gZmlsZXMuCisKIDIwMTItMTAt
MTIgIEphbWVzIFNpbW9uc2VuICA8c2ltb25qYW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVdIFJlbW92ZSB2ZW5kb3IgcHJlZml4CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGU4NjFkODA3NDhjZTU5NTY0ZmIyNmM2NjBiMWUwOTU3MmRkMmYwOGQuLmU2NDlm
MDljZDEyZWM3OGJiMmRjMGE1NjE5Mjk3NTAzM2I1MzMyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC0yODU3LDExICsyODU3LDExIEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke0RF
UklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vVXNlckFnZW50U3R5bGVTaGVldHNECiBBRERfU09V
UkNFX1dFQkNPUkVfREVSSVZFRF9ERVBFTkRFTkNJRVMoJHtXRUJDT1JFX0RJUn0vY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwIFVzZXJBZ2VudFN0eWxlU2hlZXRzRGF0YS5jcHAgVXNlckFnZW50U3R5bGVT
aGVldHMuaCkKIAogCi1HRU5FUkFURV9HUkFNTUFSKGNzc3l5ICR7V0VCQ09SRV9ESVJ9L2Nzcy9D
U1NHcmFtbWFyLnkgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0NTU0dyYW1tYXIuaCAk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vQ1NTR3JhbW1hci5jcHApCitHRU5FUkFURV9H
UkFNTUFSKGNzc3l5ICR7V0VCQ09SRV9ESVJ9L2Nzcy9DU1NHcmFtbWFyLnkuaW4gJHtERVJJVkVE
X1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0NTU0dyYW1tYXIuaCAke0RFUklWRURfU09VUkNFU19XRUJD
T1JFX0RJUn0vQ1NTR3JhbW1hci5jcHAgIiR7RkVBVFVSRV9ERUZJTkVTX1dJVEhfU1BBQ0VfU0VQ
QVJBVE9SfSIpCiBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNf
V0VCQ09SRV9ESVJ9L0NTU0dyYW1tYXIuY3BwKQogCiAKLUdFTkVSQVRFX0dSQU1NQVIoeHBhdGh5
eSAke1dFQkNPUkVfRElSfS94bWwvWFBhdGhHcmFtbWFyLnkgJHtERVJJVkVEX1NPVVJDRVNfV0VC
Q09SRV9ESVJ9L1hQYXRoR3JhbW1hci5oICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9Y
UGF0aEdyYW1tYXIuY3BwKQorR0VORVJBVEVfR1JBTU1BUih4cGF0aHl5ICR7V0VCQ09SRV9ESVJ9
L3htbC9YUGF0aEdyYW1tYXIueSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vWFBhdGhH
cmFtbWFyLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1hQYXRoR3JhbW1hci5jcHAg
IiIpCiBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L1hQYXRoR3JhbW1hci5jcHApCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggNGMxOTljNDY2YTAyYWIwMmNjYTdkNTg3M2MxNzkzYzQxMTc2NzlkYS4uOWE5N2MxN2M2
OTFhMzM2YWY5N2Y5NmU1NzM0ZjQ3YWE4ZTY0Y2M5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCkBAIC03ODEsMzIgKzc4MSwxNCBAQCBlbmRpZgogIyAtLS0tLS0tLQogCiAjIENTUyBn
cmFtbWFyCi0jIE5PVEU6IE9sZGVyIHZlcnNpb25zIG9mIGJpc29uIGRvIG5vdCBpbmplY3QgYW4g
aW5jbHVzaW9uIGd1YXJkLCBzbyB3ZSBhZGQgb25lLgotCi1DU1NHcmFtbWFyLmNwcCA6IGNzcy9D
U1NHcmFtbWFyLnkKLQkkKEJJU09OKSAtZCAtcCBjc3N5eSAkPCAtbyAkQAotCXRvdWNoIENTU0dy
YW1tYXIuY3BwLmgKLQl0b3VjaCBDU1NHcmFtbWFyLmhwcAotCWVjaG8gJyNpZm5kZWYgQ1NTR3Jh
bW1hcl9oJyA+IENTU0dyYW1tYXIuaAotCWVjaG8gJyNkZWZpbmUgQ1NTR3JhbW1hcl9oJyA+PiBD
U1NHcmFtbWFyLmgKLQljYXQgQ1NTR3JhbW1hci5jcHAuaCBDU1NHcmFtbWFyLmhwcCA+PiBDU1NH
cmFtbWFyLmgKLQllY2hvICcjZW5kaWYnID4+IENTU0dyYW1tYXIuaAotCXJtIC1mIENTU0dyYW1t
YXIuY3BwLmggQ1NTR3JhbW1hci5ocHAKK0NTU0dyYW1tYXIuY3BwIDogY3NzL0NTU0dyYW1tYXIu
eS5pbgorCXBlcmwgLUkgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzICQoV2ViQ29yZSkvY3Nz
L21ha2VncmFtbWFyLnBsIC0tZXh0cmFEZWZpbmVzICIkKEZFQVRVUkVfREVGSU5FUykiIC0tb3V0
cHV0RGlyIC4gLS1iaXNvbiAiJChCSVNPTikiIC0tc3ltYm9sc1ByZWZpeCBjc3N5eSAkPAogCiAj
IC0tLS0tLS0tCiAKICMgWFBhdGggZ3JhbW1hcgotIyBOT1RFOiBPbGRlciB2ZXJzaW9ucyBvZiBi
aXNvbiBkbyBub3QgaW5qZWN0IGFuIGluY2x1c2lvbiBndWFyZCwgc28gd2UgYWRkIG9uZS4KLQog
WFBhdGhHcmFtbWFyLmNwcCA6IHhtbC9YUGF0aEdyYW1tYXIueSAkKFBST0pFQ1RfRklMRSkKLQkk
KEJJU09OKSAtZCAtcCB4cGF0aHl5ICQ8IC1vICRACi0JdG91Y2ggWFBhdGhHcmFtbWFyLmNwcC5o
Ci0JdG91Y2ggWFBhdGhHcmFtbWFyLmhwcAotCWVjaG8gJyNpZm5kZWYgWFBhdGhHcmFtbWFyX2gn
ID4gWFBhdGhHcmFtbWFyLmgKLQllY2hvICcjZGVmaW5lIFhQYXRoR3JhbW1hcl9oJyA+PiBYUGF0
aEdyYW1tYXIuaAotCWNhdCBYUGF0aEdyYW1tYXIuY3BwLmggWFBhdGhHcmFtbWFyLmhwcCA+PiBY
UGF0aEdyYW1tYXIuaAotCWVjaG8gJyNlbmRpZicgPj4gWFBhdGhHcmFtbWFyLmgKLQlybSAtZiBY
UGF0aEdyYW1tYXIuY3BwLmggWFBhdGhHcmFtbWFyLmhwcAorCXBlcmwgJChXZWJDb3JlKS9jc3Mv
bWFrZWdyYW1tYXIucGwgLS1vdXRwdXREaXIgLiAtLWJpc29uICIkKEJJU09OKSIgLS1zeW1ib2xz
UHJlZml4IHhwYXRoeXkgJDwKIAogIyAtLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5w
cmkKaW5kZXggODRjOWQwNzc3MWVkMWExNzQ1NjY3MmUyNzFlMzMxYmNhNGU2ODU4ZS4uODEwYWRl
ZDhhNWJlNDFiOTYyOWFkMjgwMGY1YThmZmI3MmExZTJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLnByaQpAQCAtMjQsNyArMjQsNyBAQCBTVkdfTkFNRVMgPSAkJFBXRC9zdmcvc3ZndGFncy5p
bgogCiBYTElOS19OQU1FUyA9ICQkUFdEL3N2Zy94bGlua2F0dHJzLmluCiAKLUNTU0JJU09OID0g
JCRQV0QvY3NzL0NTU0dyYW1tYXIueQorQ1NTQklTT04gPSAkJFBXRC9jc3MvQ1NTR3JhbW1hci55
LmluCiAKIGVuYWJsZT8oWFNMVCkgewogICAgIFhNTFZJRVdFUl9DU1MgPSAkJFBXRC94bWwvWE1M
Vmlld2VyLmNzcwpAQCAtODA0LDcgKzgwNCw3IEBAIEdFTkVSQVRPUlMgKz0gSW5qZWN0ZWRTY3Jp
cHRDYW52YXNNb2R1bGVTb3VyY2UKIGNzc2Jpc29uLm91dHB1dCA9ICR7UU1BS0VfRklMRV9CQVNF
fS5jcHAKIGNzc2Jpc29uLmlucHV0ID0gQ1NTQklTT04KIGNzc2Jpc29uLnNjcmlwdCA9ICQkUFdE
L2Nzcy9tYWtlZ3JhbW1hci5wbAotY3NzYmlzb24uY29tbWFuZHMgPSBwZXJsICQkY3NzYmlzb24u
c2NyaXB0ICR7UU1BS0VfRklMRV9OQU1FfSAke1FNQUtFX0ZVTkNfRklMRV9PVVRfUEFUSH0vJHtR
TUFLRV9GSUxFX0JBU0V9Citjc3NiaXNvbi5jb21tYW5kcyA9IHBlcmwgLUkgJCRQV0QvYmluZGlu
Z3Mvc2NyaXB0cyAkJGNzc2Jpc29uLnNjcmlwdCAtLW91dHB1dERpciAke1FNQUtFX0ZVTkNfRklM
RV9PVVRfUEFUSH0gLS1leHRyYURlZmluZXMgXCIkJHtERUZJTkVTfSAkJGNvbmZpZ0RlZmluZXMo
KVwiIC0tcHJlcHJvY2Vzc29yIFwiJCR7UU1BS0VfTU9DfSAtRVwiIC0tc3ltYm9sc1ByZWZpeCBj
c3N5eSAke1FNQUtFX0ZJTEVfTkFNRX0KIGNzc2Jpc29uLmRlcGVuZHMgPSAke1FNQUtFX0ZJTEVf
TkFNRX0KIEdFTkVSQVRPUlMgKz0gY3NzYmlzb24KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA1
Y2U4NTk1YTBmMjIxNWY3M2I2MGZmZGMxM2Q1ZmVmNzExMTk4OWI4Li4wZGFjNDNjMDUyN2QzZmI2
MmM5NjU0YjYzZjcxOTg2OWY3MWU5MDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjAwLDE4
ICsyMDAsMTAgQEAgZmVhdHVyZV9kZWZpbmVzX292ZXJyaWRlcyArPSBFTkFCTEVfTUVESUFfU1RS
RUFNPTAKIGVuZGlmICMgRU5EIEVOQUJMRV9NRURJQV9TVFJFQU0KIAogIyBYUGF0aCBncmFtbWFy
Ci0jIE5PVEU6IG9sZGVyIHZlcnNpb25zIG9mIGJpc29uIGRvIG5vdCBpbmplY3QgYW4gaW5jbHVz
aW9uIGd1YXJkLCBzbyB3ZSBkbyBpdAogJChHRU5TT1VSQ0VTX1dFQkNPUkUpL1hQYXRoR3JhbW1h
ci5oOiAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvWFBhdGhHcmFtbWFyLmNwcAogJChHRU5TT1VSQ0VT
X1dFQkNPUkUpL1hQYXRoR3JhbW1hci5jcHA6ICQoV2ViQ29yZSkveG1sL1hQYXRoR3JhbW1hci55
CiAJJChBTV9WX0dFTikKLQkkKEFNX1ZfYXQpcm0gLWYgJChHRU5TT1VSQ0VTX1dFQkNPUkUpL1hQ
YXRoR3JhbW1hci5jcHAuaCAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvWFBhdGhHcmFtbWFyLmhwcAot
CSQoQU1fVl9hdCkkKEJJU09OKSAtZCAtcCB4cGF0aHl5ICQ8IC1vICQoR0VOU09VUkNFU19XRUJD
T1JFKS9YUGF0aEdyYW1tYXIuY3BwCi0JJChBTV9WX2F0KXRvdWNoICQoR0VOU09VUkNFU19XRUJD
T1JFKS9YUGF0aEdyYW1tYXIuY3BwLmggJChHRU5TT1VSQ0VTX1dFQkNPUkUpL1hQYXRoR3JhbW1h
ci5ocHAKLQkkKEFNX1ZfYXQpZWNobyAnI2lmbmRlZiBYUGF0aEdyYW1tYXJfaCcgPiAkKEdFTlNP
VVJDRVNfV0VCQ09SRSkvWFBhdGhHcmFtbWFyLmgKLQkkKEFNX1ZfYXQpZWNobyAnI2RlZmluZSBY
UGF0aEdyYW1tYXJfaCcgPj4gJChHRU5TT1VSQ0VTX1dFQkNPUkUpL1hQYXRoR3JhbW1hci5oCi0J
JChBTV9WX2F0KWNhdCAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvWFBhdGhHcmFtbWFyLmNwcC5oICQo
R0VOU09VUkNFU19XRUJDT1JFKS9YUGF0aEdyYW1tYXIuaHBwID4+ICQoR0VOU09VUkNFU19XRUJD
T1JFKS9YUGF0aEdyYW1tYXIuaAotCSQoQU1fVl9hdCllY2hvICcjZW5kaWYnID4+ICQoR0VOU09V
UkNFU19XRUJDT1JFKS9YUGF0aEdyYW1tYXIuaAotCSQoQU1fVl9hdClybSAtZiAkKEdFTlNPVVJD
RVNfV0VCQ09SRSkvWFBhdGhHcmFtbWFyLmNwcC5oICQoR0VOU09VUkNFU19XRUJDT1JFKS9YUGF0
aEdyYW1tYXIuaHBwCisJJChBTV9WX2F0KXBlcmwgJChXZWJDb3JlKS9jc3MvbWFrZWdyYW1tYXIu
cGwgLS1vdXRwdXREaXIgJChHRU5TT1VSQ0VTX1dFQkNPUkUpIC0tYmlzb24gIiQoQklTT04pIiAt
LXN5bWJvbHNQcmVmaXggeHBhdGh5eSAkPAogCiAjIC0tLS0KICMgWFNMVCBTdXBwb3J0CkBAIC00
MTgsMTggKzQxMCwxMCBAQCBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbG9yRGF0YS5jcHA6ICQo
V2ViQ29yZSkvcGxhdGZvcm0vQ29sb3JEYXRhLmdwZXJmICQoV2ViQwogCiAjIENTUyBncmFtbWFy
CiAKLSMgTk9URTogb2xkZXIgdmVyc2lvbnMgb2YgYmlzb24gZG8gbm90IGluamVjdCBhbiBpbmNs
dXNpb24gZ3VhcmQsIHNvIHdlIGRvIGl0CiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU0dyYW1t
YXIuaDogJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0NTU0dyYW1tYXIuY3BwCi1EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0NTU0dyYW1tYXIuY3BwOiAkKFdlYkNvcmUpL2Nzcy9DU1NHcmFtbWFyLnkKK0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTR3JhbW1hci5jcHA6ICQoV2ViQ29yZSkvY3NzL0NTU0dy
YW1tYXIueS5pbgogCSQoQU1fVl9HRU4pCi0JJChBTV9WX2F0KXJtIC1mICQoR0VOU09VUkNFU19X
RUJDT1JFKS9DU1NHcmFtbWFyLmNwcC5oICQoR0VOU09VUkNFU19XRUJDT1JFKS9DU1NHcmFtbWFy
LmhwcAotCSQoQU1fVl9hdCkkKEJJU09OKSAtZCAtcCBjc3N5eSAkPCAtbyAkKEdFTlNPVVJDRVNf
V0VCQ09SRSkvQ1NTR3JhbW1hci5jcHAKLQkkKEFNX1ZfYXQpdG91Y2ggJChHRU5TT1VSQ0VTX1dF
QkNPUkUpL0NTU0dyYW1tYXIuY3BwLmggJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0NTU0dyYW1tYXIu
aHBwCi0JJChBTV9WX2F0KWVjaG8gJyNpZm5kZWYgQ1NTR3JhbW1hcl9oJyA+ICQoR0VOU09VUkNF
U19XRUJDT1JFKS9DU1NHcmFtbWFyLmgKLQkkKEFNX1ZfYXQpZWNobyAnI2RlZmluZSBDU1NHcmFt
bWFyX2gnID4+ICQoR0VOU09VUkNFU19XRUJDT1JFKS9DU1NHcmFtbWFyLmgKLQkkKEFNX1ZfYXQp
Y2F0ICQoR0VOU09VUkNFU19XRUJDT1JFKS9DU1NHcmFtbWFyLmNwcC5oICQoR0VOU09VUkNFU19X
RUJDT1JFKS9DU1NHcmFtbWFyLmhwcCA+PiAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvQ1NTR3JhbW1h
ci5oCi0JJChBTV9WX2F0KWVjaG8gJyNlbmRpZicgPj4gJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0NT
U0dyYW1tYXIuaAotCSQoQU1fVl9hdClybSAtZiAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvQ1NTR3Jh
bW1hci5jcHAuaCAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvQ1NTR3JhbW1hci5ocHAKKwkkKEFNX1Zf
YXQpcGVybCAtSSAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMgJChXZWJDb3JlKS9jc3MvbWFr
ZWdyYW1tYXIucGwgLS1leHRyYURlZmluZXMgIiQoZmVhdHVyZV9kZWZpbmVzKSIgLS1vdXRwdXRE
aXIgJChHRU5TT1VSQ0VTX1dFQkNPUkUpIC0tYmlzb24gIiQoQklTT04pIiAtLXN5bWJvbHNQcmVm
aXggY3NzeXkgJDwKIAogIyB1c2VyIGFnZW50IHN0eWxlIHNoZWV0cwogVVNFUl9BR0VOVF9TVFlM
RV9TSEVFVFMgPSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJD
b3JlLmd5cCBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCmluZGV4IDAy
NGFlYWQ2MTQwY2Y2MDZjNzQ1ZmRjNWY4ZmQzZTBmNzc1YTA4NDAuLjIyNjliZTcyY2YzMzk1MDE1
OGFlZTlkN2Y5YWZhNGVkMGJhMzk0ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwL1dlYkNvcmUuZ3lwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNv
cmUuZ3lwCkBAIC01ODUsNyArNTg1LDcgQEAKICAgICAgIH0sCiAgICAgICAnc291cmNlcyc6IFsK
ICAgICAgICAgIyBiaXNvbiBydWxlCi0gICAgICAgICcuLi9jc3MvQ1NTR3JhbW1hci55JywKKyAg
ICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC9DU1NHcmFtbWFyLnknLAog
ICAgICAgICAnLi4veG1sL1hQYXRoR3JhbW1hci55JywKIAogICAgICAgICAjIGdwZXJmIHJ1bGUK
QEAgLTEwNzYsNiArMTA3NiwyOSBAQAogICAgICAgICAgICAgJzxAKGRlcml2ZWRfc291cmNlc19h
Z2dyZWdhdGVfZmlsZXMpJywKICAgICAgICAgICBdLAogICAgICAgICB9LAorICAgICAgICB7Cisg
ICAgICAgICAgJ2FjdGlvbl9uYW1lJzogJ3ByZXByb2Nlc3NfZ3JhbW1hcicsCisgICAgICAgICAg
J2lucHV0cyc6IFsKKyAgICAgICAgICAgICcuLi9jc3MvQ1NTR3JhbW1hci55LmluJywKKyAgICAg
ICAgICAgICcuLi9jc3MvQ1NTR3JhbW1hci55LmluY2x1ZGVzJywKKyAgICAgICAgICBdLAorICAg
ICAgICAgICdvdXRwdXRzJzogWworICAgICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9E
SVIpL3dlYmtpdC9DU1NHcmFtbWFyLnknLAorICAgICAgICAgIF0sCisgICAgICAgICAgJ2FjdGlv
bic6IFsKKyAgICAgICAgICAgICc8KHBlcmxfZXhlKScsCisgICAgICAgICAgICAnLUknLAorICAg
ICAgICAgICAgJy4uL2JpbmRpbmdzL3NjcmlwdHMnLAorICAgICAgICAgICAgJy4uL2Nzcy9tYWtl
Z3JhbW1hci5wbCcsCisgICAgICAgICAgICAnLS1vdXRwdXREaXInLAorICAgICAgICAgICAgJzwo
U0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC8nLAorICAgICAgICAgICAgJy0tZXh0cmFE
ZWZpbmVzJywKKyAgICAgICAgICAgICc8KGZlYXR1cmVfZGVmaW5lcyknLAorICAgICAgICAgICAg
Jy0tcHJlcHJvY2Vzc09ubHknLAorICAgICAgICAgICAgJzxAKHByZXByb2Nlc3NvciknLAorICAg
ICAgICAgICAgJzxAKF9pbnB1dHMpJywKKyAgICAgICAgICBdLAorICAgICAgICB9LAogICAgICAg
XSwKICAgICAgICdydWxlcyc6IFsKICAgICAgICAgIyBSdWxlcyB0byBidWlsZCBkZXJpdmVkIHNv
dXJjZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmlu
ZGV4IGIxYzgzMGM3ZGI0YzRkNTJjYTcyNWRhYjg5MWYwNzQ4MjA3NTVkMTAuLjE3NjVhMzNhZGQ2
MDgxNDYxZDdlYjM3NjVjZDg3NDM0NzQwZGFiZWYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0zNTg3NSw3ICszNTg3NSwxMSBAQAogCQkJCT4K
IAkJCTwvRmlsZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTR3JhbW1h
ci55IgorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU0dyYW1tYXIueS5pbiIKKwkJCQk+CisJ
CQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU0dyYW1tYXIu
eS5pbmNsdWRlcyIKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdkYjYzMWM4OTM4
M2RmOTU3OWVlNDc5NWE2MTFlNzMwZTM3MWQ4YWUuLmZlN2Q5NWMyZTk4ZTA4Y2IyZTU1NDBjZThh
NTRjYzdmZTQ4ZGNlMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMDM4LDcgKzEzMDM4LDYgQEAKIAkJQkNFOTNGNDYxNTE3
QzZENTAwOENDRjc0IC8qIFJlbmRlclJlZ2lvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW5kZXJSZWdpb25TZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQ0VBNDc3QzA5N0NBQUM4MDA5NEM5RTQgLyogQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQ0VBNDc3RDA5N0NBQUM4MDA5NEM5RTQgLyogQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkNFQTQ3N0UwOTdDQUFD
ODAwOTRDOUU0IC8qIENTU0dyYW1tYXIueSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLnlhY2M7IHBh
dGggPSBDU1NHcmFtbWFyLnk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRUE0Nzg5
MDk3Q0FBQzgwMDk0QzlFNCAvKiBDU1NQcm9wZXJ0eU5hbWVzLmluICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBDU1NQcm9wZXJ0eU5hbWVzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQ0VBNDc4QzA5N0NBQUM4MDA5NEM5RTQgLyogQ1NTVmFsdWVLZXl3b3Jkcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gQ1NTVmFsdWVLZXl3b3Jkcy5pbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkNFQTQ4MTMwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJsb2NrTGluZUxh
eW91dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyQmxv
Y2tMaW5lTGF5b3V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNzcwLDYg
KzEzNzY5LDggQEAKIAkJRkJENkFGODUxNUVGMjFENDAwOEI3MTEwIC8qIEJhc2ljU2hhcGVGdW5j
dGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzaWNTaGFwZUZ1bmN0
aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQkQ2QUY4NjE1RUYyMUQ0MDA4
QjcxMTAgLyogQ1NTQmFzaWNTaGFwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ1NTQmFzaWNTaGFwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGQkQ2QUY4NzE1RUYyMUQ0MDA4QjcxMTAgLyogQ1NTQmFzaWNTaGFwZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTQmFzaWNTaGFwZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRkNFQkNENzExNjIzQTc5MTAwMjk5NjVFIC8qIENTU0dyYW1tYXIueS5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUueWFjYzsgcGF0aCA9IENTU0dyYW1tYXIueS5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkNFQkNENzIxNjIzQTc5MTAwMjk5NjVFIC8qIENT
U0dyYW1tYXIueS5pbmNsdWRlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUueWFjYzsgcGF0aCA9IENT
U0dyYW1tYXIueS5pbmNsdWRlczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQwMEQ3
QTIxNEEzRjYxOTAwNzM0MDExIC8qIFNpbmNSZXNhbXBsZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2luY1Jlc2FtcGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZEMDBEN0EzMTRBM0Y2MTkwMDczNDAxMSAvKiBTaW5jUmVzYW1wbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbmNSZXNhbXBsZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQwNkRGQTMxMzRBNERFRjAwNkY1RDdEIC8qIERlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjExNDYsNyArMjExNDcsOCBAQAogCQkJCUJDMDJBNjNCMEUwOUE5Q0Yw
MDRCNkQyQiAvKiBDU1NGdW5jdGlvblZhbHVlLmggKi8sCiAJCQkJQkMyM0U0RTAwREFBQ0UwRjAw
OUZEQzkxIC8qIENTU0dyYWRpZW50VmFsdWUuY3BwICovLAogCQkJCUJDNTNDNjkxMERBNTkxMTQw
MDIxRUI1RCAvKiBDU1NHcmFkaWVudFZhbHVlLmggKi8sCi0JCQkJQkNFQTQ3N0UwOTdDQUFDODAw
OTRDOUU0IC8qIENTU0dyYW1tYXIueSAqLywKKwkJCQlGQ0VCQ0Q3MTE2MjNBNzkxMDAyOTk2NUUg
LyogQ1NTR3JhbW1hci55LmluICovLAorCQkJCUZDRUJDRDcyMTYyM0E3OTEwMDI5OTY1RSAvKiBD
U1NHcmFtbWFyLnkuaW5jbHVkZXMgKi8sCiAJCQkJQkM3NzJCMzYwQzRFQTkxRTAwODMyODVGIC8q
IENTU0hlbHBlci5oICovLAogCQkJCUJDMjNFNzZCMERBRTg4QTkwMDlGREM5MSAvKiBDU1NJbWFn
ZUdlbmVyYXRvclZhbHVlLmNwcCAqLywKIAkJCQlCQzIzRUU5MTBEQUVEMkJDMDA5RkRDOTEgLyog
Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyYW1tYXIueSBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlMzUzM2UzYzlmM2I3OTBkNjc5Zjk1ZmYwYTFjNzk1
MWMxOGM5NTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQorKysgL2Rldi9udWxsCkBAIC0xLDE3NzAg
KzAsMCBAQAotJXsKLQotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDItMjAwMyBMYXJzIEtub2xs
IChrbm9sbEBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
NywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAg
Q29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KLSAqCi0g
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICog
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg
TUEgIDAyMTEwLTEzMDEgIFVTQQotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNp
bmNsdWRlICJDU1NQYXJzZXIuaCIKLSNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCi0jaW5jbHVk
ZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKLSNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCi0j
aW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKLSNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIKLSNp
bmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIk1l
ZGlhTGlzdC5oIgotI2luY2x1ZGUgIk1lZGlhUXVlcnlFeHAuaCIKLSNpbmNsdWRlICJTdHlsZVJ1
bGUuaCIKLSNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKLSNpbmNsdWRlICJXZWJLaXRD
U1NLZXlmcmFtZVJ1bGUuaCIKLSNpbmNsdWRlICJXZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmgiCi0j
aW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRl
IDxzdHJpbmcuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwotCi0jZGVmaW5lIFlZTUFMTE9DIGZhc3RNYWxsb2MKLSNkZWZpbmUgWVlGUkVF
IGZhc3RGcmVlCi0KLSNkZWZpbmUgWVlFTkFCTEVfTkxTIDAKLSNkZWZpbmUgWVlMVFlQRV9JU19U
UklWSUFMIDEKLSNkZWZpbmUgWVlNQVhERVBUSCAxMDAwMAotI2RlZmluZSBZWURFQlVHIDAKLQot
JX0KLQotJXB1cmVfcGFyc2VyCi0KLSVwYXJzZS1wYXJhbSB7IENTU1BhcnNlciogcGFyc2VyIH0K
LSVsZXgtcGFyYW0geyBDU1NQYXJzZXIqIHBhcnNlciB9Ci0KLSV1bmlvbiB7Ci0gICAgYm9vbCBi
b29sZWFuOwotICAgIGNoYXIgY2hhcmFjdGVyOwotICAgIGludCBpbnRlZ2VyOwotICAgIGRvdWJs
ZSBudW1iZXI7Ci0gICAgQ1NTUGFyc2VyU3RyaW5nIHN0cmluZzsKLQotICAgIFN0eWxlUnVsZUJh
c2UqIHJ1bGU7Ci0gICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiA+KiBydWxlTGlzdDsK
LSAgICBDU1NQYXJzZXJTZWxlY3Rvciogc2VsZWN0b3I7Ci0gICAgQ1NTU2VsZWN0b3JWZWN0b3Iq
IHNlbGVjdG9yTGlzdDsKLSAgICBDU1NTZWxlY3Rvcjo6TWFyZ2luQm94VHlwZSBtYXJnaW5Cb3g7
Ci0gICAgQ1NTU2VsZWN0b3I6OlJlbGF0aW9uIHJlbGF0aW9uOwotICAgIE1lZGlhUXVlcnlTZXQq
IG1lZGlhTGlzdDsKLSAgICBNZWRpYVF1ZXJ5KiBtZWRpYVF1ZXJ5OwotICAgIE1lZGlhUXVlcnk6
OlJlc3RyaWN0b3IgbWVkaWFRdWVyeVJlc3RyaWN0b3I7Ci0gICAgTWVkaWFRdWVyeUV4cCogbWVk
aWFRdWVyeUV4cDsKLSAgICBDU1NQYXJzZXJWYWx1ZSB2YWx1ZTsKLSAgICBDU1NQYXJzZXJWYWx1
ZUxpc3QqIHZhbHVlTGlzdDsKLSAgICBWZWN0b3I8T3duUHRyPE1lZGlhUXVlcnlFeHA+ID4qIG1l
ZGlhUXVlcnlFeHBMaXN0OwotICAgIFN0eWxlS2V5ZnJhbWUqIGtleWZyYW1lOwotICAgIFZlY3Rv
cjxSZWZQdHI8U3R5bGVLZXlmcmFtZT4gPioga2V5ZnJhbWVSdWxlTGlzdDsKLSAgICBmbG9hdCB2
YWw7Ci0gICAgQ1NTUHJvcGVydHlJRCBpZDsKLX0KLQotJXsKLQotI2lmIFlZREVCVUcgPiAwCi0j
ZGVmaW5lIFlZUFJJTlQoRmlsZSxUeXBlLFZhbHVlKSBwcmludF90b2tlbl92YWx1ZShGaWxlLFR5
cGUsVmFsdWUpCi1zdGF0aWMgdm9pZCBwcmludF90b2tlbl92YWx1ZShGSUxFICogeXlvdXRwdXQs
IGludCB5eXR5cGUsIFlZU1RZUEUgY29uc3QgJnl5dmFsdWUpOwotI2VuZGlmCi0KLXN0YXRpYyBp
bmxpbmUgaW50IGNzc3l5ZXJyb3Iodm9pZCosIGNvbnN0IGNoYXIqKQotewotICAgIHJldHVybiAx
OwotfQotCi0lfQotCi0lZXhwZWN0IDY1Ci0KLSVub25hc3NvYyBMT1dFU1RfUFJFQwotCi0lbGVm
dCBVTklNUE9SVEFOVF9UT0sKLQotJXRva2VuIFdISVRFU1BBQ0UgU0dNTF9DRAotJXRva2VuIFRP
S0VOX0VPRiAwCi0KLSV0b2tlbiBJTkNMVURFUwotJXRva2VuIERBU0hNQVRDSAotJXRva2VuIEJF
R0lOU1dJVEgKLSV0b2tlbiBFTkRTV0lUSAotJXRva2VuIENPTlRBSU5TCi0KLSV0b2tlbiA8c3Ry
aW5nPiBTVFJJTkcKLSVyaWdodCA8c3RyaW5nPiBJREVOVAotJXRva2VuIDxzdHJpbmc+IE5USAot
Ci0lbm9uYXNzb2MgPHN0cmluZz4gSEVYCi0lbm9uYXNzb2MgPHN0cmluZz4gSURTRUwKLSVub25h
c3NvYyAnOicKLSVub25hc3NvYyAnLicKLSVub25hc3NvYyAnWycKLSVub25hc3NvYyA8c3RyaW5n
PiAnKicKLSVub25hc3NvYyBlcnJvcgotJWxlZnQgJ3wnCi0KLSV0b2tlbiBJTVBPUlRfU1lNCi0l
dG9rZW4gUEFHRV9TWU0KLSV0b2tlbiBNRURJQV9TWU0KLSV0b2tlbiBGT05UX0ZBQ0VfU1lNCi0l
dG9rZW4gQ0hBUlNFVF9TWU0KLSV0b2tlbiBOQU1FU1BBQ0VfU1lNCi0ldG9rZW4gVkFSRlVOQ1RJ
T04KLSV0b2tlbiBXRUJLSVRfUlVMRV9TWU0KLSV0b2tlbiBXRUJLSVRfREVDTFNfU1lNCi0ldG9r
ZW4gV0VCS0lUX0tFWUZSQU1FX1JVTEVfU1lNCi0ldG9rZW4gV0VCS0lUX0tFWUZSQU1FU19TWU0K
LSV0b2tlbiBXRUJLSVRfVkFMVUVfU1lNCi0ldG9rZW4gV0VCS0lUX01FRElBUVVFUllfU1lNCi0l
dG9rZW4gV0VCS0lUX1NFTEVDVE9SX1NZTQotJXRva2VuIFdFQktJVF9SRUdJT05fUlVMRV9TWU0K
LSV0b2tlbiA8bWFyZ2luQm94PiBUT1BMRUZUQ09STkVSX1NZTQotJXRva2VuIDxtYXJnaW5Cb3g+
IFRPUExFRlRfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gVE9QQ0VOVEVSX1NZTQotJXRva2VuIDxt
YXJnaW5Cb3g+IFRPUFJJR0hUX1NZTQotJXRva2VuIDxtYXJnaW5Cb3g+IFRPUFJJR0hUQ09STkVS
X1NZTQotJXRva2VuIDxtYXJnaW5Cb3g+IEJPVFRPTUxFRlRDT1JORVJfU1lNCi0ldG9rZW4gPG1h
cmdpbkJveD4gQk9UVE9NTEVGVF9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBCT1RUT01DRU5URVJf
U1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gQk9UVE9NUklHSFRfU1lNCi0ldG9rZW4gPG1hcmdpbkJv
eD4gQk9UVE9NUklHSFRDT1JORVJfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gTEVGVFRPUF9TWU0K
LSV0b2tlbiA8bWFyZ2luQm94PiBMRUZUTUlERExFX1NZTQotJXRva2VuIDxtYXJnaW5Cb3g+IExF
RlRCT1RUT01fU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gUklHSFRUT1BfU1lNCi0ldG9rZW4gPG1h
cmdpbkJveD4gUklHSFRNSURETEVfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gUklHSFRCT1RUT01f
U1lNCi0KLSV0b2tlbiBBVEtFWVdPUkQKLQotJXRva2VuIElNUE9SVEFOVF9TWU0KLSV0b2tlbiBN
RURJQV9PTkxZCi0ldG9rZW4gTUVESUFfTk9UCi0ldG9rZW4gTUVESUFfQU5ECi0KLSV0b2tlbiA8
bnVtYmVyPiBSRU1TCi0ldG9rZW4gPG51bWJlcj4gUUVNUwotJXRva2VuIDxudW1iZXI+IEVNUwot
JXRva2VuIDxudW1iZXI+IEVYUwotJXRva2VuIDxudW1iZXI+IFBYUwotJXRva2VuIDxudW1iZXI+
IENNUwotJXRva2VuIDxudW1iZXI+IE1NUwotJXRva2VuIDxudW1iZXI+IElOUwotJXRva2VuIDxu
dW1iZXI+IFBUUwotJXRva2VuIDxudW1iZXI+IFBDUwotJXRva2VuIDxudW1iZXI+IERFR1MKLSV0
b2tlbiA8bnVtYmVyPiBSQURTCi0ldG9rZW4gPG51bWJlcj4gR1JBRFMKLSV0b2tlbiA8bnVtYmVy
PiBUVVJOUwotJXRva2VuIDxudW1iZXI+IE1TRUNTCi0ldG9rZW4gPG51bWJlcj4gU0VDUwotJXRv
a2VuIDxudW1iZXI+IEhFUlRaCi0ldG9rZW4gPG51bWJlcj4gS0hFUlRaCi0ldG9rZW4gPHN0cmlu
Zz4gRElNRU4KLSV0b2tlbiA8c3RyaW5nPiBJTlZBTElERElNRU4KLSV0b2tlbiA8bnVtYmVyPiBQ
RVJDRU5UQUdFCi0ldG9rZW4gPG51bWJlcj4gRkxPQVRUT0tFTgotJXRva2VuIDxudW1iZXI+IElO
VEVHRVIKLSV0b2tlbiA8bnVtYmVyPiBWVwotJXRva2VuIDxudW1iZXI+IFZICi0ldG9rZW4gPG51
bWJlcj4gVk1JTgotJXRva2VuIDxudW1iZXI+IERQUFgKLSV0b2tlbiA8bnVtYmVyPiBEUEkKLSV0
b2tlbiA8bnVtYmVyPiBEUENNCi0KLSV0b2tlbiA8c3RyaW5nPiBVUkkKLSV0b2tlbiA8c3RyaW5n
PiBGVU5DVElPTgotJXRva2VuIDxzdHJpbmc+IEFOWUZVTkNUSU9OCi0ldG9rZW4gPHN0cmluZz4g
Tk9URlVOQ1RJT04KLSV0b2tlbiA8c3RyaW5nPiBDQUxDRlVOQ1RJT04KLSV0b2tlbiA8c3RyaW5n
PiBNSU5GVU5DVElPTgotJXRva2VuIDxzdHJpbmc+IE1BWEZVTkNUSU9OCi0ldG9rZW4gPHN0cmlu
Zz4gVkFSX0RFRklOSVRJT04KLQotJXRva2VuIDxzdHJpbmc+IFVOSUNPREVSQU5HRQotCi0ldHlw
ZSA8cmVsYXRpb24+IGNvbWJpbmF0b3IKLQotJXR5cGUgPHJ1bGU+IGNoYXJzZXQKLSV0eXBlIDxy
dWxlPiBpZ25vcmVkX2NoYXJzZXQKLSV0eXBlIDxydWxlPiBydWxlc2V0Ci0ldHlwZSA8cnVsZT4g
bWVkaWEKLSV0eXBlIDxydWxlPiBpbXBvcnQKLSV0eXBlIDxydWxlPiBuYW1lc3BhY2UKLSV0eXBl
IDxydWxlPiBwYWdlCi0ldHlwZSA8cnVsZT4gbWFyZ2luX2JveAotJXR5cGUgPHJ1bGU+IGZvbnRf
ZmFjZQotJXR5cGUgPHJ1bGU+IGtleWZyYW1lcwotJXR5cGUgPHJ1bGU+IGludmFsaWRfcnVsZQot
JXR5cGUgPHJ1bGU+IHNhdmVfYmxvY2sKLSV0eXBlIDxydWxlPiBpbnZhbGlkX2F0Ci0ldHlwZSA8
cnVsZT4gcnVsZQotJXR5cGUgPHJ1bGU+IHZhbGlkX3J1bGUKLSV0eXBlIDxydWxlTGlzdD4gYmxv
Y2tfcnVsZV9saXN0IAotJXR5cGUgPHJ1bGU+IGJsb2NrX3J1bGUKLSV0eXBlIDxydWxlPiBibG9j
a192YWxpZF9ydWxlCi0ldHlwZSA8cnVsZT4gcmVnaW9uCi0KLSV0eXBlIDxzdHJpbmc+IG1heWJl
X25zX3ByZWZpeAotCi0ldHlwZSA8c3RyaW5nPiBuYW1lc3BhY2Vfc2VsZWN0b3IKLQotJXR5cGUg
PHN0cmluZz4gc3RyaW5nX29yX3VyaQotJXR5cGUgPHN0cmluZz4gaWRlbnRfb3Jfc3RyaW5nCi0l
dHlwZSA8c3RyaW5nPiBtZWRpdW0KLSV0eXBlIDxtYXJnaW5Cb3g+IG1hcmdpbl9zeW0KLQotJXR5
cGUgPHN0cmluZz4gbWVkaWFfZmVhdHVyZQotJXR5cGUgPG1lZGlhTGlzdD4gbWVkaWFfbGlzdAot
JXR5cGUgPG1lZGlhTGlzdD4gbWF5YmVfbWVkaWFfbGlzdAotJXR5cGUgPG1lZGlhUXVlcnk+IG1l
ZGlhX3F1ZXJ5Ci0ldHlwZSA8bWVkaWFRdWVyeVJlc3RyaWN0b3I+IG1heWJlX21lZGlhX3Jlc3Ry
aWN0b3IKLSV0eXBlIDx2YWx1ZUxpc3Q+IG1heWJlX21lZGlhX3ZhbHVlCi0ldHlwZSA8bWVkaWFR
dWVyeUV4cD4gbWVkaWFfcXVlcnlfZXhwCi0ldHlwZSA8bWVkaWFRdWVyeUV4cExpc3Q+IG1lZGlh
X3F1ZXJ5X2V4cF9saXN0Ci0ldHlwZSA8bWVkaWFRdWVyeUV4cExpc3Q+IG1heWJlX2FuZF9tZWRp
YV9xdWVyeV9leHBfbGlzdAotCi0ldHlwZSA8c3RyaW5nPiBrZXlmcmFtZV9uYW1lCi0ldHlwZSA8
a2V5ZnJhbWU+IGtleWZyYW1lX3J1bGUKLSV0eXBlIDxrZXlmcmFtZVJ1bGVMaXN0PiBrZXlmcmFt
ZXNfcnVsZQotJXR5cGUgPHZhbHVlTGlzdD4ga2V5X2xpc3QKLSV0eXBlIDx2YWx1ZT4ga2V5Ci0K
LSV0eXBlIDxpZD4gcHJvcGVydHkKLQotJXR5cGUgPHNlbGVjdG9yPiBzcGVjaWZpZXIKLSV0eXBl
IDxzZWxlY3Rvcj4gc3BlY2lmaWVyX2xpc3QKLSV0eXBlIDxzZWxlY3Rvcj4gc2ltcGxlX3NlbGVj
dG9yCi0ldHlwZSA8c2VsZWN0b3I+IHNlbGVjdG9yCi0ldHlwZSA8c2VsZWN0b3JMaXN0PiBzZWxl
Y3Rvcl9saXN0Ci0ldHlwZSA8c2VsZWN0b3JMaXN0PiBzaW1wbGVfc2VsZWN0b3JfbGlzdAotJXR5
cGUgPHNlbGVjdG9yTGlzdD4gcmVnaW9uX3NlbGVjdG9yCi0ldHlwZSA8c2VsZWN0b3I+IHNlbGVj
dG9yX3dpdGhfdHJhaWxpbmdfd2hpdGVzcGFjZQotJXR5cGUgPHNlbGVjdG9yPiBjbGFzcwotJXR5
cGUgPHNlbGVjdG9yPiBhdHRyaWIKLSV0eXBlIDxzZWxlY3Rvcj4gcHNldWRvCi0ldHlwZSA8c2Vs
ZWN0b3I+IHBzZXVkb19wYWdlCi0ldHlwZSA8c2VsZWN0b3I+IHBhZ2Vfc2VsZWN0b3IKLQotJXR5
cGUgPGJvb2xlYW4+IGRlY2xhcmF0aW9uX2xpc3QKLSV0eXBlIDxib29sZWFuPiBkZWNsX2xpc3QK
LSV0eXBlIDxib29sZWFuPiBkZWNsYXJhdGlvbgotJXR5cGUgPGJvb2xlYW4+IGRlY2xhcmF0aW9u
c19hbmRfbWFyZ2lucwotCi0ldHlwZSA8Ym9vbGVhbj4gcHJpbwotCi0ldHlwZSA8aW50ZWdlcj4g
bWF0Y2gKLSV0eXBlIDxpbnRlZ2VyPiB1bmFyeV9vcGVyYXRvcgotJXR5cGUgPGludGVnZXI+IG1h
eWJlX3VuYXJ5X29wZXJhdG9yCi0ldHlwZSA8Y2hhcmFjdGVyPiBvcGVyYXRvcgotCi0ldHlwZSA8
dmFsdWVMaXN0PiBleHByCi0ldHlwZSA8dmFsdWU+IHRlcm0KLSV0eXBlIDx2YWx1ZT4gdW5hcnlf
dGVybQotJXR5cGUgPHZhbHVlPiBmdW5jdGlvbgotJXR5cGUgPHZhbHVlPiBjYWxjX2Z1bmNfdGVy
bQotJXR5cGUgPGNoYXJhY3Rlcj4gY2FsY19mdW5jX29wZXJhdG9yCi0ldHlwZSA8dmFsdWVMaXN0
PiBjYWxjX2Z1bmNfZXhwcgotJXR5cGUgPHZhbHVlTGlzdD4gY2FsY19mdW5jX2V4cHJfbGlzdAot
JXR5cGUgPHZhbHVlTGlzdD4gY2FsY19mdW5jX3BhcmVuX2V4cHIKLSV0eXBlIDx2YWx1ZT4gY2Fs
Y19mdW5jdGlvbgotJXR5cGUgPHN0cmluZz4gbWluX29yX21heAotJXR5cGUgPHZhbHVlPiBtaW5f
b3JfbWF4X2Z1bmN0aW9uCi0KLSV0eXBlIDxzdHJpbmc+IGVsZW1lbnRfbmFtZQotJXR5cGUgPHN0
cmluZz4gYXR0cl9uYW1lCi0KLSUlCi0KLXN0eWxlc2hlZXQ6Ci0gICAgbWF5YmVfc3BhY2UgbWF5
YmVfY2hhcnNldCBtYXliZV9zZ21sIHJ1bGVfbGlzdAotICB8IHdlYmtpdF9ydWxlIG1heWJlX3Nw
YWNlCi0gIHwgd2Via2l0X2RlY2xzIG1heWJlX3NwYWNlCi0gIHwgd2Via2l0X3ZhbHVlIG1heWJl
X3NwYWNlCi0gIHwgd2Via2l0X21lZGlhcXVlcnkgbWF5YmVfc3BhY2UKLSAgfCB3ZWJraXRfc2Vs
ZWN0b3IgbWF5YmVfc3BhY2UKLSAgfCB3ZWJraXRfa2V5ZnJhbWVfcnVsZSBtYXliZV9zcGFjZQot
ICA7Ci0KLXdlYmtpdF9ydWxlOgotICAgIFdFQktJVF9SVUxFX1NZTSAneycgbWF5YmVfc3BhY2Ug
dmFsaWRfcnVsZSBtYXliZV9zcGFjZSAnfScgewotICAgICAgICBwYXJzZXItPm1fcnVsZSA9ICQ0
OwotICAgIH0KLTsKLQotd2Via2l0X2tleWZyYW1lX3J1bGU6Ci0gICAgV0VCS0lUX0tFWUZSQU1F
X1JVTEVfU1lNICd7JyBtYXliZV9zcGFjZSBrZXlmcmFtZV9ydWxlIG1heWJlX3NwYWNlICd9JyB7
Ci0gICAgICAgIHBhcnNlci0+bV9rZXlmcmFtZSA9ICQ0OwotICAgIH0KLTsKLQotd2Via2l0X2Rl
Y2xzOgotICAgIFdFQktJVF9ERUNMU19TWU0gJ3snIG1heWJlX3NwYWNlX2JlZm9yZV9kZWNsYXJh
dGlvbiBkZWNsYXJhdGlvbl9saXN0ICd9JyB7Ci0gICAgICAgIC8qIGNhbiBiZSBlbXB0eSAqLwot
ICAgIH0KLTsKLQotd2Via2l0X3ZhbHVlOgotICAgIFdFQktJVF9WQUxVRV9TWU0gJ3snIG1heWJl
X3NwYWNlIGV4cHIgJ30nIHsKLSAgICAgICAgaWYgKCQ0KSB7Ci0gICAgICAgICAgICBwYXJzZXIt
Pm1fdmFsdWVMaXN0ID0gcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDQpOwotICAgICAg
ICAgICAgaW50IG9sZFBhcnNlZFByb3BlcnRpZXMgPSBwYXJzZXItPm1fcGFyc2VkUHJvcGVydGll
cy0+c2l6ZSgpOwotICAgICAgICAgICAgaWYgKCFwYXJzZXItPnBhcnNlVmFsdWUocGFyc2VyLT5t
X2lkLCBwYXJzZXItPm1faW1wb3J0YW50KSkKLSAgICAgICAgICAgICAgICBwYXJzZXItPnJvbGxi
YWNrTGFzdFByb3BlcnRpZXMocGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKSAtIG9s
ZFBhcnNlZFByb3BlcnRpZXMpOwotICAgICAgICAgICAgcGFyc2VyLT5tX3ZhbHVlTGlzdCA9IG51
bGxwdHI7Ci0gICAgICAgIH0KLSAgICB9Ci07Ci0KLXdlYmtpdF9tZWRpYXF1ZXJ5OgotICAgICBX
RUJLSVRfTUVESUFRVUVSWV9TWU0gV0hJVEVTUEFDRSBtYXliZV9zcGFjZSBtZWRpYV9xdWVyeSAn
fScgewotICAgICAgICAgcGFyc2VyLT5tX21lZGlhUXVlcnkgPSBwYXJzZXItPnNpbmtGbG9hdGlu
Z01lZGlhUXVlcnkoJDQpOwotICAgICB9Ci07Ci0KLXdlYmtpdF9zZWxlY3RvcjoKLSAgICBXRUJL
SVRfU0VMRUNUT1JfU1lNICd7JyBtYXliZV9zcGFjZSBzZWxlY3Rvcl9saXN0ICd9JyB7Ci0gICAg
ICAgIGlmICgkNCkgewotICAgICAgICAgICAgaWYgKHBhcnNlci0+bV9zZWxlY3Rvckxpc3RGb3JQ
YXJzZVNlbGVjdG9yKQotICAgICAgICAgICAgICAgIHBhcnNlci0+bV9zZWxlY3Rvckxpc3RGb3JQ
YXJzZVNlbGVjdG9yLT5hZG9wdFNlbGVjdG9yVmVjdG9yKCokNCk7Ci0gICAgICAgIH0KLSAgICB9
Ci07Ci0KLW1heWJlX3NwYWNlOgotICAgIC8qIGVtcHR5ICovICVwcmVjIFVOSU1QT1JUQU5UX1RP
SwotICB8IG1heWJlX3NwYWNlIFdISVRFU1BBQ0UKLSAgOwotCi1tYXliZV9zZ21sOgotICAgIC8q
IGVtcHR5ICovCi0gIHwgbWF5YmVfc2dtbCBTR01MX0NECi0gIHwgbWF5YmVfc2dtbCBXSElURVNQ
QUNFCi0gIDsKLQotbWF5YmVfY2hhcnNldDoKLSAgIC8qIGVtcHR5ICovCi0gIHwgY2hhcnNldCB7
Ci0gIH0KLSAgOwotCi1jbG9zaW5nX2JyYWNlOgotICAgICd9JwotICB8ICVwcmVjIExPV0VTVF9Q
UkVDIFRPS0VOX0VPRgotICA7Ci0KLWNoYXJzZXQ6Ci0gIENIQVJTRVRfU1lNIG1heWJlX3NwYWNl
IFNUUklORyBtYXliZV9zcGFjZSAnOycgewotICAgICBpZiAocGFyc2VyLT5tX3N0eWxlU2hlZXQp
Ci0gICAgICAgICBwYXJzZXItPm1fc3R5bGVTaGVldC0+cGFyc2VyU2V0RW5jb2RpbmdGcm9tQ2hh
cnNldFJ1bGUoJDMpOwotICAgICBpZiAocGFyc2VyLT5pc0V4dHJhY3RpbmdTb3VyY2VEYXRhKCkg
JiYgcGFyc2VyLT5tX2N1cnJlbnRSdWxlRGF0YVN0YWNrLT5pc0VtcHR5KCkgJiYgcGFyc2VyLT5t
X3J1bGVTb3VyY2VEYXRhUmVzdWx0KQotICAgICAgICAgcGFyc2VyLT5hZGROZXdSdWxlVG9Tb3Vy
Y2VUcmVlKENTU1J1bGVTb3VyY2VEYXRhOjpjcmVhdGVVbmtub3duKCkpOwotICAgICAkJCA9IDA7
Ci0gIH0KLSAgfCBDSEFSU0VUX1NZTSBlcnJvciBpbnZhbGlkX2Jsb2NrIHsKLSAgfQotICB8IENI
QVJTRVRfU1lNIGVycm9yICc7JyB7Ci0gIH0KLTsKLQotaWdub3JlZF9jaGFyc2V0OgotICAgIENI
QVJTRVRfU1lNIG1heWJlX3NwYWNlIFNUUklORyBtYXliZV9zcGFjZSAnOycgewotICAgICAgICAv
LyBJZ25vcmUgYW55IEBjaGFyc2V0IHJ1bGUgbm90IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0
eWxlIHNoZWV0LgotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgIHwgQ0hBUlNFVF9TWU0gbWF5
YmVfc3BhY2UgJzsnIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLTsKLQotcnVsZV9saXN0Ogot
ICAgLyogZW1wdHkgKi8KLSB8IHJ1bGVfbGlzdCBydWxlIG1heWJlX3NnbWwgewotICAgICBpZiAo
JDIgJiYgcGFyc2VyLT5tX3N0eWxlU2hlZXQpCi0gICAgICAgICBwYXJzZXItPm1fc3R5bGVTaGVl
dC0+cGFyc2VyQXBwZW5kUnVsZSgkMik7Ci0gfQotIDsKLQotdmFsaWRfcnVsZToKLSAgICBydWxl
c2V0Ci0gIHwgbWVkaWEKLSAgfCBwYWdlCi0gIHwgZm9udF9mYWNlCi0gIHwga2V5ZnJhbWVzCi0g
IHwgbmFtZXNwYWNlCi0gIHwgaW1wb3J0Ci0gIHwgcmVnaW9uCi0gIDsKLQotcnVsZToKLSAgICB2
YWxpZF9ydWxlIHsKLSAgICAgICAgcGFyc2VyLT5tX2hhZFN5bnRhY3RpY2FsbHlWYWxpZENTU1J1
bGUgPSB0cnVlOwotICAgIH0KLSAgfCBpZ25vcmVkX2NoYXJzZXQKLSAgfCBpbnZhbGlkX3J1bGUK
LSAgfCBpbnZhbGlkX2F0Ci0gIDsKLQotYmxvY2tfcnVsZV9saXN0OiAKLSAgICAvKiBlbXB0eSAq
LyB7ICQkID0gMDsgfQotICB8IGJsb2NrX3J1bGVfbGlzdCBibG9ja19ydWxlIG1heWJlX3NnbWwg
ewotICAgICAgJCQgPSAkMTsKLSAgICAgIGlmICgkMikgewotICAgICAgICAgIGlmICghJCQpCi0g
ICAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVSdWxlTGlzdCgpOwotICAgICAgICAgICQk
LT5hcHBlbmQoJDIpOwotICAgICAgfQotICB9Ci0gIDsKLQotYmxvY2tfdmFsaWRfcnVsZToKLSAg
ICBydWxlc2V0Ci0gIHwgcGFnZQotICB8IGZvbnRfZmFjZQotICB8IGtleWZyYW1lcwotICA7Ci0K
LWJsb2NrX3J1bGU6Ci0gICAgYmxvY2tfdmFsaWRfcnVsZQotICB8IGludmFsaWRfcnVsZQotICB8
IGludmFsaWRfYXQKLSAgfCBuYW1lc3BhY2UKLSAgfCBpbXBvcnQKLSAgfCBtZWRpYQotICA7Ci0K
LWF0X2ltcG9ydF9oZWFkZXJfZW5kX21heWJlX3NwYWNlOgotICAgIG1heWJlX3NwYWNlIHsKLSAg
ICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlckVuZCgpOwotICAgICAgICBwYXJzZXItPm1hcmtS
dWxlQm9keVN0YXJ0KCk7Ci0gICAgfQotICAgIDsKLQotYmVmb3JlX2ltcG9ydF9ydWxlOgotICAg
IC8qIGVtcHR5ICovIHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1
bGVTb3VyY2VEYXRhOjpJTVBPUlRfUlVMRSk7Ci0gICAgfQotICAgIDsKLQotaW1wb3J0OgotICAg
IGJlZm9yZV9pbXBvcnRfcnVsZSBJTVBPUlRfU1lNIGF0X2ltcG9ydF9oZWFkZXJfZW5kX21heWJl
X3NwYWNlIHN0cmluZ19vcl91cmkgbWF5YmVfc3BhY2UgbWF5YmVfbWVkaWFfbGlzdCAnOycgewot
ICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlSW1wb3J0UnVsZSgkNCwgJDYpOwotICAgIH0KLSAg
fCBiZWZvcmVfaW1wb3J0X3J1bGUgSU1QT1JUX1NZTSBhdF9pbXBvcnRfaGVhZGVyX2VuZF9tYXli
ZV9zcGFjZSBzdHJpbmdfb3JfdXJpIG1heWJlX3NwYWNlIG1heWJlX21lZGlhX2xpc3QgVE9LRU5f
RU9GIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUltcG9ydFJ1bGUoJDQsICQ2KTsKLSAg
ICB9Ci0gIHwgYmVmb3JlX2ltcG9ydF9ydWxlIElNUE9SVF9TWU0gYXRfaW1wb3J0X2hlYWRlcl9l
bmRfbWF5YmVfc3BhY2Ugc3RyaW5nX29yX3VyaSBtYXliZV9zcGFjZSBtYXliZV9tZWRpYV9saXN0
IGludmFsaWRfYmxvY2sgewotICAgICAgICAkJCA9IDA7Ci0gICAgICAgIHBhcnNlci0+cG9wUnVs
ZURhdGEoKTsKLSAgICB9Ci0gIHwgYmVmb3JlX2ltcG9ydF9ydWxlIElNUE9SVF9TWU0gZXJyb3Ig
JzsnIHsKLSAgICAgICAgJCQgPSAwOwotICAgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7Ci0g
ICAgfQotICB8IGJlZm9yZV9pbXBvcnRfcnVsZSBJTVBPUlRfU1lNIGVycm9yIGludmFsaWRfYmxv
Y2sgewotICAgICAgICAkJCA9IDA7Ci0gICAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKLSAg
ICB9Ci0gIDsKLQotbmFtZXNwYWNlOgotTkFNRVNQQUNFX1NZTSBtYXliZV9zcGFjZSBtYXliZV9u
c19wcmVmaXggc3RyaW5nX29yX3VyaSBtYXliZV9zcGFjZSAnOycgewotICAgIHBhcnNlci0+YWRk
TmFtZXNwYWNlKCQzLCAkNCk7Ci0gICAgJCQgPSAwOwotfQotfCBOQU1FU1BBQ0VfU1lNIG1heWJl
X3NwYWNlIG1heWJlX25zX3ByZWZpeCBzdHJpbmdfb3JfdXJpIG1heWJlX3NwYWNlIGludmFsaWRf
YmxvY2sgewotICAgICQkID0gMDsKLX0KLXwgTkFNRVNQQUNFX1NZTSBlcnJvciBpbnZhbGlkX2Js
b2NrIHsKLSAgICAkJCA9IDA7Ci19Ci18IE5BTUVTUEFDRV9TWU0gZXJyb3IgJzsnIHsKLSAgICAk
JCA9IDA7Ci19Ci07Ci0KLW1heWJlX25zX3ByZWZpeDoKLS8qIGVtcHR5ICovIHsgJCQuY2xlYXIo
KTsgfQotfCBJREVOVCBtYXliZV9zcGFjZSB7ICQkID0gJDE7IH0KLTsKLQotc3RyaW5nX29yX3Vy
aToKLVNUUklORwotfCBVUkkKLTsKLQotbWVkaWFfZmVhdHVyZToKLSAgICBJREVOVCBtYXliZV9z
cGFjZSB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAgIDsKLQotbWF5YmVfbWVkaWFfdmFs
dWU6Ci0gICAgLyplbXB0eSovIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICB8ICc6JyBt
YXliZV9zcGFjZSBleHByIG1heWJlX3NwYWNlIHsKLSAgICAgICAgJCQgPSAkMzsKLSAgICB9Ci0g
ICAgOwotCi1tZWRpYV9xdWVyeV9leHA6Ci0gICAgbWF5YmVfbWVkaWFfcmVzdHJpY3RvciBtYXli
ZV9zcGFjZSAnKCcgbWF5YmVfc3BhY2UgbWVkaWFfZmVhdHVyZSBtYXliZV9zcGFjZSBtYXliZV9t
ZWRpYV92YWx1ZSAnKScgbWF5YmVfc3BhY2UgewotICAgICAgICAvLyBJZiByZXN0cmljdG9yIGlz
IHNwZWNpZmllZCwgbWVkaWEgcXVlcnkgZXhwcmVzc2lvbiBpcyBpbnZhbGlkLgotICAgICAgICAv
LyBDcmVhdGUgZW1wdHkgbWVkaWEgcXVlcnkgZXhwcmVzc2lvbiBhbmQgY29udGludWUgcGFyc2lu
ZyBtZWRpYSBxdWVyeS4KLSAgICAgICAgaWYgKCQxICE9IE1lZGlhUXVlcnk6Ok5vbmUpCi0gICAg
ICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwKCIiLCAwKTsK
LSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAkNS5sb3dlcigpOwotICAgICAgICAgICAgJCQg
PSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeUV4cCgkNSwgJDcpOwotICAgICAgICB9
Ci0gICAgfQotICAgIDsKLQotbWVkaWFfcXVlcnlfZXhwX2xpc3Q6Ci0gICAgbWVkaWFfcXVlcnlf
ZXhwIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeUV4cExp
c3QoKTsKLSAgICAgICAgJCQtPmFwcGVuZChwYXJzZXItPnNpbmtGbG9hdGluZ01lZGlhUXVlcnlF
eHAoJDEpKTsKLSAgICB9Ci0gICAgfCBtZWRpYV9xdWVyeV9leHBfbGlzdCBtYXliZV9zcGFjZSBN
RURJQV9BTkQgbWF5YmVfc3BhY2UgbWVkaWFfcXVlcnlfZXhwIHsKLSAgICAgICAgJCQgPSAkMTsK
LSAgICAgICAgJCQtPmFwcGVuZChwYXJzZXItPnNpbmtGbG9hdGluZ01lZGlhUXVlcnlFeHAoJDUp
KTsKLSAgICB9Ci0gICAgOwotCi1tYXliZV9hbmRfbWVkaWFfcXVlcnlfZXhwX2xpc3Q6Ci0gICAg
LyplbXB0eSovIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVy
eUV4cExpc3QoKTsKLSAgICB9Ci0gICAgfCBNRURJQV9BTkQgbWF5YmVfc3BhY2UgbWVkaWFfcXVl
cnlfZXhwX2xpc3QgewotICAgICAgICAkJCA9ICQzOwotICAgIH0KLSAgICA7Ci0KLW1heWJlX21l
ZGlhX3Jlc3RyaWN0b3I6Ci0gICAgLyplbXB0eSovIHsKLSAgICAgICAgJCQgPSBNZWRpYVF1ZXJ5
OjpOb25lOwotICAgIH0KLSAgICB8IE1FRElBX09OTFkgewotICAgICAgICAkJCA9IE1lZGlhUXVl
cnk6Ok9ubHk7Ci0gICAgfQotICAgIHwgTUVESUFfTk9UIHsKLSAgICAgICAgJCQgPSBNZWRpYVF1
ZXJ5OjpOb3Q7Ci0gICAgfQotICAgIDsKLQotbWVkaWFfcXVlcnk6Ci0gICAgbWVkaWFfcXVlcnlf
ZXhwX2xpc3QgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5
KHBhcnNlci0+c2lua0Zsb2F0aW5nTWVkaWFRdWVyeUV4cExpc3QoJDEpKTsKLSAgICB9Ci0gICAg
fAotICAgIG1heWJlX21lZGlhX3Jlc3RyaWN0b3IgbWF5YmVfc3BhY2UgbWVkaXVtIG1heWJlX2Fu
ZF9tZWRpYV9xdWVyeV9leHBfbGlzdCB7Ci0gICAgICAgICQzLmxvd2VyKCk7Ci0gICAgICAgICQk
ID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ01lZGlhUXVlcnkoJDEsICQzLCBwYXJzZXItPnNpbmtG
bG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KCQ0KSk7Ci0gICAgfQotICAgIDsKLQotbWF5YmVfbWVk
aWFfbGlzdDoKLSAgICAgLyogZW1wdHkgKi8gewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRl
TWVkaWFRdWVyeVNldCgpOwotICAgICB9Ci0gICAgIHwgbWVkaWFfbGlzdAotICAgICA7Ci0KLW1l
ZGlhX2xpc3Q6Ci0gICAgbWVkaWFfcXVlcnkgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRl
TWVkaWFRdWVyeVNldCgpOwotICAgICAgICAkJC0+YWRkTWVkaWFRdWVyeShwYXJzZXItPnNpbmtG
bG9hdGluZ01lZGlhUXVlcnkoJDEpKTsKLSAgICAgICAgcGFyc2VyLT51cGRhdGVMYXN0TWVkaWFM
aW5lKCQkKTsKLSAgICB9Ci0gICAgfCBtZWRpYV9saXN0ICcsJyBtYXliZV9zcGFjZSBtZWRpYV9x
dWVyeSB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgICAgIGlmICgkJCkgewotICAgICAgICAgICAg
JCQtPmFkZE1lZGlhUXVlcnkocGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5KCQ0KSk7Ci0g
ICAgICAgICAgICBwYXJzZXItPnVwZGF0ZUxhc3RNZWRpYUxpbmUoJCQpOwotICAgICAgICB9Ci0g
ICAgfQotICAgIHwgbWVkaWFfbGlzdCBlcnJvciB7Ci0gICAgICAgICQkID0gMDsKLSAgICB9Ci0g
ICAgOwotCi1hdF9ydWxlX2JvZHlfc3RhcnQ6Ci0gICAgLyogZW1wdHkgKi8gewotICAgICAgICBw
YXJzZXItPm1hcmtSdWxlQm9keVN0YXJ0KCk7Ci0gICAgfQotICAgIDsKLQotYmVmb3JlX21lZGlh
X3J1bGU6Ci0gICAgLyogZW1wdHkgKi8gewotICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVy
U3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6Ok1FRElBX1JVTEUpOwotICAgIH0KLSAgICA7Ci0KLWF0
X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9zcGFjZToKLSAgICBtYXliZV9zcGFjZSB7Ci0gICAgICAg
IHBhcnNlci0+bWFya1J1bGVIZWFkZXJFbmQoKTsKLSAgICB9Ci0gICAgOwotCi1tZWRpYToKLSAg
ICBiZWZvcmVfbWVkaWFfcnVsZSBNRURJQV9TWU0gbWF5YmVfc3BhY2UgbWVkaWFfbGlzdCBhdF9y
dWxlX2hlYWRlcl9lbmQgJ3snIGF0X3J1bGVfYm9keV9zdGFydCBtYXliZV9zcGFjZSBibG9ja19y
dWxlX2xpc3Qgc2F2ZV9ibG9jayB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVNZWRpYVJ1
bGUoJDQsICQ5KTsKLSAgICB9Ci0gICAgfCBiZWZvcmVfbWVkaWFfcnVsZSBNRURJQV9TWU0gYXRf
cnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlICd7JyBhdF9ydWxlX2JvZHlfc3RhcnQgbWF5YmVf
c3BhY2UgYmxvY2tfcnVsZV9saXN0IHNhdmVfYmxvY2sgewotICAgICAgICAkJCA9IHBhcnNlci0+
Y3JlYXRlTWVkaWFSdWxlKDAsICQ3KTsKLSAgICB9Ci0gICAgfCBiZWZvcmVfbWVkaWFfcnVsZSBN
RURJQV9TWU0gYXRfcnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlICc7JyB7Ci0gICAgICAgICQk
ID0gMDsKLSAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOwotICAgIH0KLSAgICA7Ci0KLW1l
ZGl1bToKLSAgSURFTlQgbWF5YmVfc3BhY2UgewotICAgICAgJCQgPSAkMTsKLSAgfQotICA7Ci0K
LWJlZm9yZV9rZXlmcmFtZXNfcnVsZToKLSAgICAvKiBlbXB0eSAqLyB7Ci0gICAgICAgIHBhcnNl
ci0+bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6S0VZRlJBTUVTX1JVTEUp
OwotICAgIH0KLSAgICA7Ci0KLWtleWZyYW1lczoKLSAgICBiZWZvcmVfa2V5ZnJhbWVzX3J1bGUg
V0VCS0lUX0tFWUZSQU1FU19TWU0gbWF5YmVfc3BhY2Uga2V5ZnJhbWVfbmFtZSBhdF9ydWxlX2hl
YWRlcl9lbmRfbWF5YmVfc3BhY2UgJ3snIGF0X3J1bGVfYm9keV9zdGFydCBtYXliZV9zcGFjZSBr
ZXlmcmFtZXNfcnVsZSBjbG9zaW5nX2JyYWNlIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0
ZUtleWZyYW1lc1J1bGUoJDQsIHBhcnNlci0+c2lua0Zsb2F0aW5nS2V5ZnJhbWVWZWN0b3IoJDkp
KTsKLSAgICB9Ci0gICAgOwotICAKLWtleWZyYW1lX25hbWU6Ci0gICAgSURFTlQKLSAgICB8IFNU
UklORwotICAgIDsKLQota2V5ZnJhbWVzX3J1bGU6Ci0gICAgLyogZW1wdHkgKi8geyAkJCA9IHBh
cnNlci0+Y3JlYXRlRmxvYXRpbmdLZXlmcmFtZVZlY3RvcigpOyB9Ci0gICAgfCBrZXlmcmFtZXNf
cnVsZSBrZXlmcmFtZV9ydWxlIG1heWJlX3NwYWNlIHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICAg
ICAgaWYgKCQyKQotICAgICAgICAgICAgJCQtPmFwcGVuZCgkMik7Ci0gICAgfQotICAgIDsKLQot
a2V5ZnJhbWVfcnVsZToKLSAgICBrZXlfbGlzdCBtYXliZV9zcGFjZSAneycgbWF5YmVfc3BhY2Ug
ZGVjbGFyYXRpb25fbGlzdCAnfScgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlS2V5ZnJh
bWUoJDEpOwotICAgIH0KLSAgICA7Ci0KLWtleV9saXN0OgotICAgIGtleSB7Ci0gICAgICAgICQk
ID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1ZhbHVlTGlzdCgpOwotICAgICAgICAkJC0+YWRkVmFs
dWUocGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZSgkMSkpOwotICAgIH0KLSAgICB8IGtleV9saXN0
IG1heWJlX3NwYWNlICcsJyBtYXliZV9zcGFjZSBrZXkgewotICAgICAgICAkJCA9ICQxOwotICAg
ICAgICBpZiAoJCQpCi0gICAgICAgICAgICAkJC0+YWRkVmFsdWUocGFyc2VyLT5zaW5rRmxvYXRp
bmdWYWx1ZSgkNSkpOwotICAgIH0KLSAgICA7Ci0KLWtleToKLSAgICBtYXliZV91bmFyeV9vcGVy
YXRvciBQRVJDRU5UQUdFIHsgJCQuaWQgPSAwOyAkJC5pc0ludCA9IGZhbHNlOyAkJC5mVmFsdWUg
PSAkMSAqICQyOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7IH0KLSAg
ICB8IElERU5UIHsKLSAgICAgICAgJCQuaWQgPSAwOyAkJC5pc0ludCA9IGZhbHNlOyAkJC51bml0
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7Ci0gICAgICAgIENTU1BhcnNlclN0cmlu
ZyYgc3RyID0gJDE7Ci0gICAgICAgIGlmIChzdHIuZXF1YWxJZ25vcmluZ0Nhc2UoImZyb20iKSkK
LSAgICAgICAgICAgICQkLmZWYWx1ZSA9IDA7Ci0gICAgICAgIGVsc2UgaWYgKHN0ci5lcXVhbEln
bm9yaW5nQ2FzZSgidG8iKSkKLSAgICAgICAgICAgICQkLmZWYWx1ZSA9IDEwMDsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgWVlFUlJPUjsKLSAgICB9Ci0gICAgOwotCi1iZWZvcmVfcGFnZV9y
dWxlOgotICAgIC8qIGVtcHR5ICovIHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0
YXJ0KENTU1J1bGVTb3VyY2VEYXRhOjpQQUdFX1JVTEUpOwotICAgIH0KLSAgICA7Ci0KLXBhZ2U6
Ci0gICAgYmVmb3JlX3BhZ2VfcnVsZSBQQUdFX1NZTSBtYXliZV9zcGFjZSBwYWdlX3NlbGVjdG9y
IGF0X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9zcGFjZQotICAgICd7JyBhdF9ydWxlX2JvZHlfc3Rh
cnQgbWF5YmVfc3BhY2VfYmVmb3JlX2RlY2xhcmF0aW9uIGRlY2xhcmF0aW9uc19hbmRfbWFyZ2lu
cyBjbG9zaW5nX2JyYWNlIHsKLSAgICAgICAgaWYgKCQ0KQotICAgICAgICAgICAgJCQgPSBwYXJz
ZXItPmNyZWF0ZVBhZ2VSdWxlKHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDQpKTsKLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvLyBDbGVhciBwcm9wZXJ0aWVzIGluIHRoZSBpbnZh
bGlkIEBwYWdlIHJ1bGUuCi0gICAgICAgICAgICBwYXJzZXItPmNsZWFyUHJvcGVydGllcygpOwot
ICAgICAgICAgICAgLy8gQWxzbyBjbGVhciBtYXJnaW4gYXQtcnVsZXMgaGVyZSBvbmNlIHdlIGZ1
bGx5IGltcGxlbWVudCBtYXJnaW4gYXQtcnVsZXMgcGFyc2luZy4KLSAgICAgICAgICAgICQkID0g
MDsKLSAgICAgICAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICB8IGJlZm9yZV9wYWdlX3J1bGUgUEFHRV9TWU0gZXJyb3IgaW52YWxpZF9ibG9jayB7Ci0g
ICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7Ci0gICAgICAkJCA9IDA7Ci0gICAgfQotICAgIHwg
YmVmb3JlX3BhZ2VfcnVsZSBQQUdFX1NZTSBlcnJvciAnOycgewotICAgICAgcGFyc2VyLT5wb3BS
dWxlRGF0YSgpOwotICAgICAgJCQgPSAwOwotICAgIH0KLSAgICA7Ci0KLXBhZ2Vfc2VsZWN0b3I6
Ci0gICAgSURFTlQgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3Rv
cigpOwotICAgICAgICAkJC0+c2V0VGFnKFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQxLCBwYXJz
ZXItPm1fZGVmYXVsdE5hbWVzcGFjZSkpOwotICAgICAgICAkJC0+c2V0Rm9yUGFnZSgpOwotICAg
IH0KLSAgICB8IElERU5UIHBzZXVkb19wYWdlIHsKLSAgICAgICAgJCQgPSAkMjsKLSAgICAgICAg
aWYgKCQkKSB7Ci0gICAgICAgICAgICAkJC0+c2V0VGFnKFF1YWxpZmllZE5hbWUobnVsbEF0b20s
ICQxLCBwYXJzZXItPm1fZGVmYXVsdE5hbWVzcGFjZSkpOwotICAgICAgICAgICAgJCQtPnNldEZv
clBhZ2UoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICB8IHBzZXVkb19wYWdlIHsKLSAgICAgICAg
JCQgPSAkMTsKLSAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAgJCQtPnNldEZvclBhZ2UoKTsK
LSAgICB9Ci0gICAgfCAvKiBlbXB0eSAqLyB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVG
bG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5zZXRGb3JQYWdlKCk7Ci0gICAgfQotICAg
IDsKLQotZGVjbGFyYXRpb25zX2FuZF9tYXJnaW5zOgotICAgIGRlY2xhcmF0aW9uX2xpc3QKLSAg
ICB8IGRlY2xhcmF0aW9uc19hbmRfbWFyZ2lucyBtYXJnaW5fYm94IG1heWJlX3NwYWNlIGRlY2xh
cmF0aW9uX2xpc3QKLSAgICA7Ci0KLW1hcmdpbl9ib3g6Ci0gICAgbWFyZ2luX3N5bSB7Ci0gICAg
ICAgIHBhcnNlci0+c3RhcnREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3goKTsKLSAgICB9IG1heWJl
X3NwYWNlICd7JyBtYXliZV9zcGFjZSBkZWNsYXJhdGlvbl9saXN0IGNsb3NpbmdfYnJhY2Ugewot
ICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlTWFyZ2luQXRSdWxlKCQxKTsKLSAgICB9Ci0gICAg
OwotCi1tYXJnaW5fc3ltIDoKLSAgICBUT1BMRUZUQ09STkVSX1NZTSB7Ci0gICAgICAgICQkID0g
Q1NTU2VsZWN0b3I6OlRvcExlZnRDb3JuZXJNYXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgVE9QTEVG
VF9TWU0gewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpUb3BMZWZ0TWFyZ2luQm94OwotICAg
IH0KLSAgICB8IFRPUENFTlRFUl9TWU0gewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpUb3BD
ZW50ZXJNYXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgVE9QUklHSFRfU1lNIHsKLSAgICAgICAgJCQg
PSBDU1NTZWxlY3Rvcjo6VG9wUmlnaHRNYXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgVE9QUklHSFRD
T1JORVJfU1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6VG9wUmlnaHRDb3JuZXJNYXJn
aW5Cb3g7Ci0gICAgfQotICAgIHwgQk9UVE9NTEVGVENPUk5FUl9TWU0gewotICAgICAgICAkJCA9
IENTU1NlbGVjdG9yOjpCb3R0b21MZWZ0Q29ybmVyTWFyZ2luQm94OwotICAgIH0KLSAgICB8IEJP
VFRPTUxFRlRfU1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6Qm90dG9tTGVmdE1hcmdp
bkJveDsKLSAgICB9Ci0gICAgfCBCT1RUT01DRU5URVJfU1lNIHsKLSAgICAgICAgJCQgPSBDU1NT
ZWxlY3Rvcjo6Qm90dG9tQ2VudGVyTWFyZ2luQm94OwotICAgIH0KLSAgICB8IEJPVFRPTVJJR0hU
X1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkJvdHRvbVJpZ2h0TWFyZ2luQm94Owot
ICAgIH0KLSAgICB8IEJPVFRPTVJJR0hUQ09STkVSX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2Vs
ZWN0b3I6OkJvdHRvbVJpZ2h0Q29ybmVyTWFyZ2luQm94OwotICAgIH0KLSAgICB8IExFRlRUT1Bf
U1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6TGVmdFRvcE1hcmdpbkJveDsKLSAgICB9
Ci0gICAgfCBMRUZUTUlERExFX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkxlZnRN
aWRkbGVNYXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgTEVGVEJPVFRPTV9TWU0gewotICAgICAgICAk
JCA9IENTU1NlbGVjdG9yOjpMZWZ0Qm90dG9tTWFyZ2luQm94OwotICAgIH0KLSAgICB8IFJJR0hU
VE9QX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OlJpZ2h0VG9wTWFyZ2luQm94Owot
ICAgIH0KLSAgICB8IFJJR0hUTUlERExFX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6
OlJpZ2h0TWlkZGxlTWFyZ2luQm94OwotICAgIH0KLSAgICB8IFJJR0hUQk9UVE9NX1NZTSB7Ci0g
ICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OlJpZ2h0Qm90dG9tTWFyZ2luQm94OwotICAgIH0KLSAg
ICA7Ci0KLWJlZm9yZV9mb250X2ZhY2VfcnVsZToKLSAgICAvKiBlbXB0eSAqLyB7Ci0gICAgICAg
IHBhcnNlci0+bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6Rk9OVF9GQUNF
X1JVTEUpOwotICAgIH0KLSAgICA7Ci0KLWZvbnRfZmFjZToKLSAgICBiZWZvcmVfZm9udF9mYWNl
X3J1bGUgRk9OVF9GQUNFX1NZTSBhdF9ydWxlX2hlYWRlcl9lbmRfbWF5YmVfc3BhY2UKLSAgICAn
eycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1heWJlX3NwYWNlX2JlZm9yZV9kZWNsYXJhdGlvbiBkZWNs
YXJhdGlvbl9saXN0IGNsb3NpbmdfYnJhY2UgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRl
Rm9udEZhY2VSdWxlKCk7Ci0gICAgfQotICAgIHwgYmVmb3JlX2ZvbnRfZmFjZV9ydWxlIEZPTlRf
RkFDRV9TWU0gZXJyb3IgaW52YWxpZF9ibG9jayB7Ci0gICAgICAkJCA9IDA7Ci0gICAgICBwYXJz
ZXItPnBvcFJ1bGVEYXRhKCk7Ci0gICAgfQotICAgIHwgYmVmb3JlX2ZvbnRfZmFjZV9ydWxlIEZP
TlRfRkFDRV9TWU0gZXJyb3IgJzsnIHsKLSAgICAgICQkID0gMDsKLSAgICAgIHBhcnNlci0+cG9w
UnVsZURhdGEoKTsKLSAgICB9Ci07Ci0KLXJlZ2lvbl9zZWxlY3RvcjoKLSAgICBzZWxlY3Rvcl9s
aXN0IHsKLSAgICAgICAgaWYgKCQxKSB7Ci0gICAgICAgICAgICBwYXJzZXItPnNldFJldXNhYmxl
UmVnaW9uU2VsZWN0b3JWZWN0b3IoJDEpOwotICAgICAgICAgICAgJCQgPSBwYXJzZXItPnJldXNh
YmxlUmVnaW9uU2VsZWN0b3JWZWN0b3IoKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAkJCA9IDA7Ci0gICAgfQotOwotCi1iZWZvcmVfcmVnaW9uX3J1bGU6Ci0gICAgLyog
ZW1wdHkgKi8gewotICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNv
dXJjZURhdGE6OlJFR0lPTl9SVUxFKTsKLSAgICB9Ci0gICAgOwotCi1yZWdpb246Ci0gICAgYmVm
b3JlX3JlZ2lvbl9ydWxlIFdFQktJVF9SRUdJT05fUlVMRV9TWU0gV0hJVEVTUEFDRSByZWdpb25f
c2VsZWN0b3IgYXRfcnVsZV9oZWFkZXJfZW5kICd7JyBhdF9ydWxlX2JvZHlfc3RhcnQgbWF5YmVf
c3BhY2UgYmxvY2tfcnVsZV9saXN0IHNhdmVfYmxvY2sgewotICAgICAgICBpZiAoJDQpCi0gICAg
ICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlUmVnaW9uUnVsZSgkNCwgJDkpOwotICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICQkID0gMDsKLSAgICAgICAgICAgIHBhcnNlci0+cG9wUnVsZURh
dGEoKTsKLSAgICAgICAgfQotICAgIH0KLTsKLQotY29tYmluYXRvcjoKLSAgICAnKycgbWF5YmVf
c3BhY2UgeyAkJCA9IENTU1NlbGVjdG9yOjpEaXJlY3RBZGphY2VudDsgfQotICB8ICd+JyBtYXli
ZV9zcGFjZSB7ICQkID0gQ1NTU2VsZWN0b3I6OkluZGlyZWN0QWRqYWNlbnQ7IH0KLSAgfCAnPicg
bWF5YmVfc3BhY2UgeyAkJCA9IENTU1NlbGVjdG9yOjpDaGlsZDsgfQotICA7Ci0KLW1heWJlX3Vu
YXJ5X29wZXJhdG9yOgotICAgIHVuYXJ5X29wZXJhdG9yIHsgJCQgPSAkMTsgfQotICAgIHwgeyAk
JCA9IDE7IH0KLSAgICA7Ci0KLXVuYXJ5X29wZXJhdG9yOgotICAgICctJyB7ICQkID0gLTE7IH0K
LSAgfCAnKycgeyAkJCA9IDE7IH0KLSAgOwotCi1tYXliZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRp
b246Ci0gICAgbWF5YmVfc3BhY2UgewotICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eVN0YXJ0
KCk7Ci0gICAgfQotICA7Ci0KLWJlZm9yZV9zZWxlY3Rvcl9saXN0OgotICAgIC8qIGVtcHR5ICov
IHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRh
OjpTVFlMRV9SVUxFKTsKLSAgICB9Ci0gIDsKLQotYXRfcnVsZV9oZWFkZXJfZW5kOgotICAgIC8q
IGVtcHR5ICovIHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlckVuZCgpOwotICAgIH0K
LSAgOwotCi1ydWxlc2V0OgotICAgIGJlZm9yZV9zZWxlY3Rvcl9saXN0IHNlbGVjdG9yX2xpc3Qg
YXRfcnVsZV9oZWFkZXJfZW5kICd7JyBhdF9ydWxlX2JvZHlfc3RhcnQgbWF5YmVfc3BhY2VfYmVm
b3JlX2RlY2xhcmF0aW9uIGRlY2xhcmF0aW9uX2xpc3QgY2xvc2luZ19icmFjZSB7Ci0gICAgICAg
ICQkID0gcGFyc2VyLT5jcmVhdGVTdHlsZVJ1bGUoJDIpOwotICAgIH0KLSAgOwotCi1zZWxlY3Rv
cl9saXN0OgotICAgIHNlbGVjdG9yICVwcmVjIFVOSU1QT1JUQU5UX1RPSyB7Ci0gICAgICAgIGlm
ICgkMSkgewotICAgICAgICAgICAgJCQgPSBwYXJzZXItPnNlbGVjdG9yVmVjdG9yKCk7Ci0gICAg
ICAgICAgICAkJC0+c2hyaW5rKDApOwotICAgICAgICAgICAgJCQtPmFwcGVuZChwYXJzZXItPnNp
bmtGbG9hdGluZ1NlbGVjdG9yKCQxKSk7Ci0gICAgICAgICAgICBwYXJzZXItPnVwZGF0ZUxhc3RT
ZWxlY3RvckxpbmVBbmRQb3NpdGlvbigpOwotICAgICAgICB9Ci0gICAgfQotICAgIHwgc2VsZWN0
b3JfbGlzdCAnLCcgbWF5YmVfc3BhY2Ugc2VsZWN0b3IgJXByZWMgVU5JTVBPUlRBTlRfVE9LIHsK
LSAgICAgICAgaWYgKCQxICYmICQ0KSB7Ci0gICAgICAgICAgICAkJCA9ICQxOwotICAgICAgICAg
ICAgJCQtPmFwcGVuZChwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQ0KSk7Ci0gICAgICAg
ICAgICBwYXJzZXItPnVwZGF0ZUxhc3RTZWxlY3RvckxpbmVBbmRQb3NpdGlvbigpOwotICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICQkID0gMDsKLSAgICB9Ci0gIHwgc2VsZWN0b3JfbGlzdCBl
cnJvciB7Ci0gICAgICAgICQkID0gMDsKLSAgICB9Ci0gICA7Ci0KLXNlbGVjdG9yX3dpdGhfdHJh
aWxpbmdfd2hpdGVzcGFjZToKLSAgICBzZWxlY3RvciBXSElURVNQQUNFIHsKLSAgICAgICAgJCQg
PSAkMTsKLSAgICB9Ci0gICAgOwotCi1zZWxlY3RvcjoKLSAgICBzaW1wbGVfc2VsZWN0b3Igewot
ICAgICAgICAkJCA9ICQxOwotICAgIH0KLSAgICB8IHNlbGVjdG9yX3dpdGhfdHJhaWxpbmdfd2hp
dGVzcGFjZQotICAgIHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICB9Ci0gICAgfCBzZWxlY3Rvcl93
aXRoX3RyYWlsaW5nX3doaXRlc3BhY2Ugc2ltcGxlX3NlbGVjdG9yCi0gICAgewotICAgICAgICAk
JCA9ICQyOwotICAgICAgICBpZiAoISQxKQotICAgICAgICAgICAgJCQgPSAwOwotICAgICAgICBl
bHNlIGlmICgkJCkgewotICAgICAgICAgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIGVuZCA9ICQkOwot
ICAgICAgICAgICAgd2hpbGUgKGVuZC0+dGFnSGlzdG9yeSgpKQotICAgICAgICAgICAgICAgIGVu
ZCA9IGVuZC0+dGFnSGlzdG9yeSgpOwotICAgICAgICAgICAgZW5kLT5zZXRSZWxhdGlvbihDU1NT
ZWxlY3Rvcjo6RGVzY2VuZGFudCk7Ci0gICAgICAgICAgICBlbmQtPnNldFRhZ0hpc3RvcnkocGFy
c2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHwg
c2VsZWN0b3IgY29tYmluYXRvciBzaW1wbGVfc2VsZWN0b3IgewotICAgICAgICAkJCA9ICQzOwot
ICAgICAgICBpZiAoISQxKQotICAgICAgICAgICAgJCQgPSAwOwotICAgICAgICBlbHNlIGlmICgk
JCkgewotICAgICAgICAgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIGVuZCA9ICQkOwotICAgICAgICAg
ICAgd2hpbGUgKGVuZC0+dGFnSGlzdG9yeSgpKQotICAgICAgICAgICAgICAgIGVuZCA9IGVuZC0+
dGFnSGlzdG9yeSgpOwotICAgICAgICAgICAgZW5kLT5zZXRSZWxhdGlvbigkMik7Ci0gICAgICAg
ICAgICBlbmQtPnNldFRhZ0hpc3RvcnkocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMSkp
OwotICAgICAgICB9Ci0gICAgfQotICAgIHwgc2VsZWN0b3IgZXJyb3IgewotICAgICAgICAkJCA9
IDA7Ci0gICAgfQotICAgIDsKLQotbmFtZXNwYWNlX3NlbGVjdG9yOgotICAgIC8qIGVtcHR5ICov
ICd8JyB7ICQkLmNsZWFyKCk7IH0KLSAgICB8ICcqJyAnfCcgeyBzdGF0aWMgTENoYXIgc3RhciA9
ICcqJzsgJCQuaW5pdCgmc3RhciwgMSk7IH0KLSAgICB8IElERU5UICd8JyB7ICQkID0gJDE7IH0K
LTsKLSAgICAKLXNpbXBsZV9zZWxlY3RvcjoKLSAgICBlbGVtZW50X25hbWUgewotICAgICAgICAk
JCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0VGFn
KFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQxLCBwYXJzZXItPm1fZGVmYXVsdE5hbWVzcGFjZSkp
OwotICAgIH0KLSAgICB8IGVsZW1lbnRfbmFtZSBzcGVjaWZpZXJfbGlzdCB7Ci0gICAgICAgICQk
ID0gJDI7Ci0gICAgICAgIGlmICgkJCkKLSAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lm
aWVyc1dpdGhFbGVtZW50TmFtZShudWxsQXRvbSwgJDEsICQkKTsKLSAgICB9Ci0gICAgfCBzcGVj
aWZpZXJfbGlzdCB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgICAgIGlmICgkJCkKLSAgICAgICAg
ICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShudWxsQXRvbSwgc3Rh
ckF0b20sICQkKTsKLSAgICB9Ci0gICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3IgZWxlbWVudF9uYW1l
IHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAg
ICAgJCQtPnNldFRhZyhwYXJzZXItPmRldGVybWluZU5hbWVJbk5hbWVzcGFjZSgkMSwgJDIpKTsK
LSAgICB9Ci0gICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3IgZWxlbWVudF9uYW1lIHNwZWNpZmllcl9s
aXN0IHsKLSAgICAgICAgJCQgPSAkMzsKLSAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAgcGFy
c2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKCQxLCAkMiwgJCQpOwotICAgIH0K
LSAgICB8IG5hbWVzcGFjZV9zZWxlY3RvciBzcGVjaWZpZXJfbGlzdCB7Ci0gICAgICAgICQkID0g
JDI7Ci0gICAgICAgIGlmICgkJCkKLSAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVy
c1dpdGhFbGVtZW50TmFtZSgkMSwgc3RhckF0b20sICQkKTsKLSAgICB9Ci0gIDsKLQotc2ltcGxl
X3NlbGVjdG9yX2xpc3Q6Ci0gICAgc2ltcGxlX3NlbGVjdG9yICVwcmVjIFVOSU1QT1JUQU5UX1RP
SyB7Ci0gICAgICAgIGlmICgkMSkgewotICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZs
b2F0aW5nU2VsZWN0b3JWZWN0b3IoKTsKLSAgICAgICAgICAgICQkLT5hcHBlbmQocGFyc2VyLT5z
aW5rRmxvYXRpbmdTZWxlY3RvcigkMSkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICQk
ID0gMDsKLSAgICB9Ci0gICAgfCBzaW1wbGVfc2VsZWN0b3JfbGlzdCBtYXliZV9zcGFjZSAnLCcg
bWF5YmVfc3BhY2Ugc2ltcGxlX3NlbGVjdG9yICVwcmVjIFVOSU1QT1JUQU5UX1RPSyB7Ci0gICAg
ICAgIGlmICgkMSAmJiAkNSkgewotICAgICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgICAgICQk
LT5hcHBlbmQocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkNSkpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICQkID0gMDsKLSAgICB9Ci0gICAgfCBzaW1wbGVfc2VsZWN0b3JfbGlz
dCBlcnJvciB7Ci0gICAgICAgICQkID0gMDsKLSAgICB9Ci0gIDsKLQotZWxlbWVudF9uYW1lOgot
ICAgIElERU5UIHsKLSAgICAgICAgQ1NTUGFyc2VyU3RyaW5nJiBzdHIgPSAkMTsKLSAgICAgICAg
aWYgKHBhcnNlci0+bV9jb250ZXh0LmlzSFRNTERvY3VtZW50KQotICAgICAgICAgICAgc3RyLmxv
d2VyKCk7Ci0gICAgICAgICQkID0gc3RyOwotICAgIH0KLSAgICB8ICcqJyB7Ci0gICAgICAgIHN0
YXRpYyBMQ2hhciBzdGFyID0gJyonOwotICAgICAgICAkJC5pbml0KCZzdGFyLCAxKTsKLSAgICB9
Ci0gIDsKLQotc3BlY2lmaWVyX2xpc3Q6Ci0gICAgc3BlY2lmaWVyIHsKLSAgICAgICAgJCQgPSAk
MTsKLSAgICB9Ci0gICAgfCBzcGVjaWZpZXJfbGlzdCBzcGVjaWZpZXIgewotICAgICAgICBpZiAo
ISQyKQotICAgICAgICAgICAgJCQgPSAwOwotICAgICAgICBlbHNlIGlmICgkMSkKLSAgICAgICAg
ICAgICQkID0gcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzKCQxLCAkMik7Ci0gICAgfQotICAgIHwg
c3BlY2lmaWVyX2xpc3QgZXJyb3IgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotOwotCi1zcGVj
aWZpZXI6Ci0gICAgSURTRUwgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdT
ZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OklkKTsKLSAgICAg
ICAgaWYgKHBhcnNlci0+bV9jb250ZXh0Lm1vZGUgPT0gQ1NTUXVpcmtzTW9kZSkKLSAgICAgICAg
ICAgICQxLmxvd2VyKCk7Ci0gICAgICAgICQkLT5zZXRWYWx1ZSgkMSk7Ci0gICAgfQotICB8IEhF
WCB7Ci0gICAgICAgIGlmICgkMVswXSA+PSAnMCcgJiYgJDFbMF0gPD0gJzknKSB7Ci0gICAgICAg
ICAgICAkJCA9IDA7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAkJCA9IHBhcnNlci0+
Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAgICAgJCQtPnNldE1hdGNoKENTU1Nl
bGVjdG9yOjpJZCk7Ci0gICAgICAgICAgICBpZiAocGFyc2VyLT5tX2NvbnRleHQubW9kZSA9PSBD
U1NRdWlya3NNb2RlKQotICAgICAgICAgICAgICAgICQxLmxvd2VyKCk7Ci0gICAgICAgICAgICAk
JC0+c2V0VmFsdWUoJDEpOwotICAgICAgICB9Ci0gICAgfQotICB8IGNsYXNzCi0gIHwgYXR0cmli
Ci0gIHwgcHNldWRvCi0gICAgOwotCi1jbGFzczoKLSAgICAnLicgSURFTlQgewotICAgICAgICAk
JCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0TWF0
Y2goQ1NTU2VsZWN0b3I6OkNsYXNzKTsKLSAgICAgICAgaWYgKHBhcnNlci0+bV9jb250ZXh0Lm1v
ZGUgPT0gQ1NTUXVpcmtzTW9kZSkKLSAgICAgICAgICAgICQyLmxvd2VyKCk7Ci0gICAgICAgICQk
LT5zZXRWYWx1ZSgkMik7Ci0gICAgfQotICA7Ci0KLWF0dHJfbmFtZToKLSAgICBJREVOVCBtYXli
ZV9zcGFjZSB7Ci0gICAgICAgIENTU1BhcnNlclN0cmluZyYgc3RyID0gJDE7Ci0gICAgICAgIGlm
IChwYXJzZXItPm1fY29udGV4dC5pc0hUTUxEb2N1bWVudCkKLSAgICAgICAgICAgIHN0ci5sb3dl
cigpOwotICAgICAgICAkJCA9IHN0cjsKLSAgICB9Ci0gICAgOwotCi1hdHRyaWI6Ci0gICAgJ1sn
IG1heWJlX3NwYWNlIGF0dHJfbmFtZSAnXScgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRl
RmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0QXR0cmlidXRlKFF1YWxpZmllZE5h
bWUobnVsbEF0b20sICQzLCBudWxsQXRvbSkpOwotICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2Vs
ZWN0b3I6OlNldCk7Ci0gICAgfQotICAgIHwgJ1snIG1heWJlX3NwYWNlIGF0dHJfbmFtZSBtYXRj
aCBtYXliZV9zcGFjZSBpZGVudF9vcl9zdHJpbmcgbWF5YmVfc3BhY2UgJ10nIHsKLSAgICAgICAg
JCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldEF0
dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMywgbnVsbEF0b20pKTsKLSAgICAgICAg
JCQtPnNldE1hdGNoKChDU1NTZWxlY3Rvcjo6TWF0Y2gpJDQpOwotICAgICAgICAkJC0+c2V0VmFs
dWUoJDYpOwotICAgIH0KLSAgICB8ICdbJyBtYXliZV9zcGFjZSBuYW1lc3BhY2Vfc2VsZWN0b3Ig
YXR0cl9uYW1lICddJyB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVj
dG9yKCk7Ci0gICAgICAgICQkLT5zZXRBdHRyaWJ1dGUocGFyc2VyLT5kZXRlcm1pbmVOYW1lSW5O
YW1lc3BhY2UoJDMsICQ0KSk7Ci0gICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6U2V0
KTsKLSAgICB9Ci0gICAgfCAnWycgbWF5YmVfc3BhY2UgbmFtZXNwYWNlX3NlbGVjdG9yIGF0dHJf
bmFtZSBtYXRjaCBtYXliZV9zcGFjZSBpZGVudF9vcl9zdHJpbmcgbWF5YmVfc3BhY2UgJ10nIHsK
LSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAg
JCQtPnNldEF0dHJpYnV0ZShwYXJzZXItPmRldGVybWluZU5hbWVJbk5hbWVzcGFjZSgkMywgJDQp
KTsKLSAgICAgICAgJCQtPnNldE1hdGNoKChDU1NTZWxlY3Rvcjo6TWF0Y2gpJDUpOwotICAgICAg
ICAkJC0+c2V0VmFsdWUoJDcpOwotICAgIH0KLSAgOwotCi1tYXRjaDoKLSAgICAnPScgewotICAg
ICAgICAkJCA9IENTU1NlbGVjdG9yOjpFeGFjdDsKLSAgICB9Ci0gICAgfCBJTkNMVURFUyB7Ci0g
ICAgICAgICQkID0gQ1NTU2VsZWN0b3I6Okxpc3Q7Ci0gICAgfQotICAgIHwgREFTSE1BVENIIHsK
LSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6SHlwaGVuOwotICAgIH0KLSAgICB8IEJFR0lOU1dJ
VEggewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpCZWdpbjsKLSAgICB9Ci0gICAgfCBFTkRT
V0lUSCB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkVuZDsKLSAgICB9Ci0gICAgfCBDT05U
QUlOUyB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkNvbnRhaW47Ci0gICAgfQotICAgIDsK
LQotaWRlbnRfb3Jfc3RyaW5nOgotICAgIElERU5UCi0gIHwgU1RSSU5HCi0gICAgOwotCi1wc2V1
ZG9fcGFnZToKLSAgICAnOicgSURFTlQgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxv
YXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBhZ2VQ
c2V1ZG9DbGFzcyk7Ci0gICAgICAgICQyLmxvd2VyKCk7Ci0gICAgICAgICQkLT5zZXRWYWx1ZSgk
Mik7Ci0gICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlw
ZSgpOwotICAgICAgICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bikKLSAg
ICAgICAgICAgICQkID0gMDsKLSAgICB9Ci0KLXBzZXVkbzoKLSAgICAnOicgSURFTlQgewotICAg
ICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+
c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKLSAgICAgICAgJDIubG93ZXIoKTsK
LSAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsKLSAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5
cGUgdHlwZSA9ICQkLT5wc2V1ZG9UeXBlKCk7Ci0gICAgICAgIGlmICh0eXBlID09IENTU1NlbGVj
dG9yOjpQc2V1ZG9Vbmtub3duKQotICAgICAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICB8ICc6
JyAnOicgSURFTlQgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3Rv
cigpOwotICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQpOwot
ICAgICAgICAkMy5sb3dlcigpOwotICAgICAgICAkJC0+c2V0VmFsdWUoJDMpOwotICAgICAgICAv
LyBGSVhNRTogVGhpcyBjYWxsIGlzIG5lZWRlZCB0byBmb3JjZSBzZWxlY3RvciB0byBjb21wdXRl
IHRoZSBwc2V1ZG9UeXBlIGVhcmx5IGVub3VnaC4KLSAgICAgICAgJCQtPnBzZXVkb1R5cGUoKTsK
LSAgICB9Ci0gICAgLy8gdXNlIGJ5IDotd2Via2l0LWFueS4KLSAgICAvLyBGSVhNRTogc2hvdWxk
IHdlIHN1cHBvcnQgZ2VuZXJpYyBzZWxlY3RvcnMgaGVyZSBvciBqdXN0IHNpbXBsZV9zZWxlY3Rv
cnM/Ci0gICAgLy8gVXNlIHNpbXBsZV9zZWxlY3Rvcl9saXN0IGZvciBub3cgdG8gbWF0Y2ggLW1v
ei1hbnkuCi0gICAgLy8gU2VlIGh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3
dy1zdHlsZS8yMDEwU2VwLzA1NjYuaHRtbCBmb3Igc29tZQotICAgIC8vIHJlbGF0ZWQgZGlzY3Vz
c2lvbiB3aXRoIHJlc3BlY3QgdG8gOm5vdC4KLSAgICB8ICc6JyBBTllGVU5DVElPTiBtYXliZV9z
cGFjZSBzaW1wbGVfc2VsZWN0b3JfbGlzdCBtYXliZV9zcGFjZSAnKScgewotICAgICAgICBpZiAo
JDQpIHsKLSAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7
Ci0gICAgICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKLSAg
ICAgICAgICAgICQkLT5hZG9wdFNlbGVjdG9yVmVjdG9yKCpwYXJzZXItPnNpbmtGbG9hdGluZ1Nl
bGVjdG9yVmVjdG9yKCQ0KSk7Ci0gICAgICAgICAgICAkMi5sb3dlcigpOwotICAgICAgICAgICAg
JCQtPnNldFZhbHVlKCQyKTsKLSAgICAgICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5
cGUgPSAkJC0+cHNldWRvVHlwZSgpOwotICAgICAgICAgICAgaWYgKHR5cGUgIT0gQ1NTU2VsZWN0
b3I6OlBzZXVkb0FueSkKLSAgICAgICAgICAgICAgICAkJCA9IDA7Ci0gICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICAvLyB1c2VkIGJ5IDpudGgtKihheCtiKQot
ICAgIHwgJzonIEZVTkNUSU9OIG1heWJlX3NwYWNlIE5USCBtYXliZV9zcGFjZSAnKScgewotICAg
ICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+
c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKLSAgICAgICAgJCQtPnNldEFyZ3Vt
ZW50KCQ0KTsKLSAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsKLSAgICAgICAgQ1NTU2VsZWN0b3I6
OlBzZXVkb1R5cGUgdHlwZSA9ICQkLT5wc2V1ZG9UeXBlKCk7Ci0gICAgICAgIGlmICh0eXBlID09
IENTU1NlbGVjdG9yOjpQc2V1ZG9Vbmtub3duKQotICAgICAgICAgICAgJCQgPSAwOwotICAgIH0K
LSAgICAvLyB1c2VkIGJ5IDpudGgtKgotICAgIHwgJzonIEZVTkNUSU9OIG1heWJlX3NwYWNlIG1h
eWJlX3VuYXJ5X29wZXJhdG9yIElOVEVHRVIgbWF5YmVfc3BhY2UgJyknIHsKLSAgICAgICAgJCQg
PSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldE1hdGNo
KENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7Ci0gICAgICAgICQkLT5zZXRBcmd1bWVudChTdHJp
bmc6Om51bWJlcigkNCAqICQ1KSk7Ci0gICAgICAgICQkLT5zZXRWYWx1ZSgkMik7Ci0gICAgICAg
IENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOwotICAgICAg
ICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bikKLSAgICAgICAgICAgICQk
ID0gMDsKLSAgICB9Ci0gICAgLy8gdXNlZCBieSA6bnRoLSoob2RkL2V2ZW4pIGFuZCA6bGFuZwot
ICAgIHwgJzonIEZVTkNUSU9OIG1heWJlX3NwYWNlIElERU5UIG1heWJlX3NwYWNlICcpJyB7Ci0g
ICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQk
LT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpOwotICAgICAgICAkJC0+c2V0QXJn
dW1lbnQoJDQpOwotICAgICAgICAkMi5sb3dlcigpOwotICAgICAgICAkJC0+c2V0VmFsdWUoJDIp
OwotICAgICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUo
KTsKLSAgICAgICAgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25vd24pCi0gICAg
ICAgICAgICAkJCA9IDA7Ci0gICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBz
ZXVkb050aENoaWxkIHx8Ci0gICAgICAgICAgICAgICAgIHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBz
ZXVkb050aE9mVHlwZSB8fAotICAgICAgICAgICAgICAgICB0eXBlID09IENTU1NlbGVjdG9yOjpQ
c2V1ZG9OdGhMYXN0Q2hpbGQgfHwKLSAgICAgICAgICAgICAgICAgdHlwZSA9PSBDU1NTZWxlY3Rv
cjo6UHNldWRvTnRoTGFzdE9mVHlwZSkgewotICAgICAgICAgICAgaWYgKCFpc1ZhbGlkTnRoVG9r
ZW4oJDQpKQotICAgICAgICAgICAgICAgICQkID0gMDsKLSAgICAgICAgfQotICAgIH0KLSAgICAv
LyB1c2VkIGJ5IDpub3QKLSAgICB8ICc6JyBOT1RGVU5DVElPTiBtYXliZV9zcGFjZSBzaW1wbGVf
c2VsZWN0b3IgbWF5YmVfc3BhY2UgJyknIHsKLSAgICAgICAgaWYgKCEkNCB8fCAhJDQtPmlzU2lt
cGxlKCkpCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAg
JCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgICAgICQkLT5z
ZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpOwotCi0gICAgICAgICAgICBDU1NTZWxl
Y3RvclZlY3RvciBzZWxlY3RvclZlY3RvcjsKLSAgICAgICAgICAgIHNlbGVjdG9yVmVjdG9yLmFw
cGVuZChwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQ0KSk7Ci0gICAgICAgICAgICAkJC0+
YWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvclZlY3Rvcik7Ci0KLSAgICAgICAgICAgICQyLmxv
d2VyKCk7Ci0gICAgICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOwotICAgICAgICB9Ci0gICAgfQot
ICA7Ci0KLWRlY2xhcmF0aW9uX2xpc3Q6Ci0gICAgZGVjbGFyYXRpb24gewotICAgICAgICAkJCA9
ICQxOwotICAgIH0KLSAgICB8IGRlY2xfbGlzdCBkZWNsYXJhdGlvbiB7Ci0gICAgICAgICQkID0g
JDE7Ci0gICAgICAgIGlmICggJDIgKQotICAgICAgICAgICAgJCQgPSAkMjsKLSAgICB9Ci0gICAg
fCBkZWNsX2xpc3QgewotICAgICAgICAkJCA9ICQxOwotICAgIH0KLSAgICB8IGVycm9yIGludmFs
aWRfYmxvY2tfbGlzdCBlcnJvciB7Ci0gICAgICAgICQkID0gZmFsc2U7Ci0gICAgfQotICAgIHwg
ZXJyb3IgewotICAgICAgICAkJCA9IGZhbHNlOwotICAgIH0KLSAgICB8IGRlY2xfbGlzdCBlcnJv
ciB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAgIHwgZGVjbF9saXN0IGludmFsaWRfYmxv
Y2tfbGlzdCB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAgIDsKLQotZGVjbF9saXN0Ogot
ICAgIGRlY2xhcmF0aW9uICc7JyBtYXliZV9zcGFjZSB7Ci0gICAgICAgIHBhcnNlci0+bWFya1By
b3BlcnR5U3RhcnQoKTsKLSAgICAgICAgJCQgPSAkMTsKLSAgICB9Ci0gICAgfCBkZWNsYXJhdGlv
biBpbnZhbGlkX2Jsb2NrX2xpc3QgbWF5YmVfc3BhY2UgewotICAgICAgICAkJCA9IGZhbHNlOwot
ICAgIH0KLSAgICB8IGRlY2xhcmF0aW9uIGludmFsaWRfYmxvY2tfbGlzdCAnOycgbWF5YmVfc3Bh
Y2UgewotICAgICAgICAkJCA9IGZhbHNlOwotICAgIH0KLSAgICB8IGVycm9yICc7JyBtYXliZV9z
cGFjZSB7Ci0gICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5U3RhcnQoKTsKLSAgICAgICAgJCQg
PSBmYWxzZTsKLSAgICB9Ci0gICAgfCBlcnJvciBpbnZhbGlkX2Jsb2NrX2xpc3QgZXJyb3IgJzsn
IG1heWJlX3NwYWNlIHsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAgICB9Ci0gICAgfCBkZWNsX2xp
c3QgZGVjbGFyYXRpb24gJzsnIG1heWJlX3NwYWNlIHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUHJv
cGVydHlTdGFydCgpOwotICAgICAgICAkJCA9ICQxOwotICAgICAgICBpZiAoJDIpCi0gICAgICAg
ICAgICAkJCA9ICQyOwotICAgIH0KLSAgICB8IGRlY2xfbGlzdCBlcnJvciAnOycgbWF5YmVfc3Bh
Y2UgewotICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7Ci0gICAgICAgICQkID0g
JDE7Ci0gICAgfQotICAgIHwgZGVjbF9saXN0IGVycm9yIGludmFsaWRfYmxvY2tfbGlzdCBlcnJv
ciAnOycgbWF5YmVfc3BhY2UgewotICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7
Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAgIDsKLQotZGVjbGFyYXRpb246Ci0gICAgVkFS
X0RFRklOSVRJT04gJzonIG1heWJlX3NwYWNlIGV4cHIgcHJpbyB7Ci0jaWYgRU5BQkxFKENTU19W
QVJJQUJMRVMpCi0gICAgICAgIHBhcnNlci0+c3RvcmVWYXJpYWJsZURlY2xhcmF0aW9uKCQxLCBw
YXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCksICQ1KTsKLSAgICAgICAgJCQgPSB0cnVl
OwotICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eUVuZCgkNSwgdHJ1ZSk7Ci0jZWxzZQotICAg
ICAgICAkJCA9IGZhbHNlOwotI2VuZGlmCi0gICAgfQotICAgIHwKLSAgICBwcm9wZXJ0eSAnOicg
bWF5YmVfc3BhY2UgZXhwciBwcmlvIHsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAgICAgICAgYm9v
bCBpc1Byb3BlcnR5UGFyc2VkID0gZmFsc2U7Ci0gICAgICAgIGlmICgkMSAmJiAkNCkgewotICAg
ICAgICAgICAgcGFyc2VyLT5tX3ZhbHVlTGlzdCA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVM
aXN0KCQ0KTsKLSAgICAgICAgICAgIGludCBvbGRQYXJzZWRQcm9wZXJ0aWVzID0gcGFyc2VyLT5t
X3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKTsKLSAgICAgICAgICAgICQkID0gcGFyc2VyLT5wYXJz
ZVZhbHVlKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KCQxKSwgJDUpOwotICAgICAgICAgICAg
aWYgKCEkJCkKLSAgICAgICAgICAgICAgICBwYXJzZXItPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMo
cGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKSAtIG9sZFBhcnNlZFByb3BlcnRpZXMp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGlzUHJvcGVydHlQYXJzZWQgPSB0
cnVlOwotICAgICAgICAgICAgcGFyc2VyLT5tX3ZhbHVlTGlzdCA9IG51bGxwdHI7Ci0gICAgICAg
IH0KLSAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlFbmQoJDUsIGlzUHJvcGVydHlQYXJzZWQp
OwotICAgIH0KLSAgICB8Ci0gICAgcHJvcGVydHkgZXJyb3IgewotICAgICAgICAkJCA9IGZhbHNl
OwotICAgIH0KLSAgICB8Ci0gICAgcHJvcGVydHkgJzonIG1heWJlX3NwYWNlIGVycm9yIGV4cHIg
cHJpbyB7Ci0gICAgICAgIC8qIFRoZSBkZWZhdWx0IG1vdmFibGUgdHlwZSB0ZW1wbGF0ZSBoYXMg
bGV0dGVyLXNwYWNpbmc6IC5ub25lOyAgSGFuZGxlIHRoaXMgYnkgbG9va2luZyBmb3IKLSAgICAg
ICAgZXJyb3IgdG9rZW5zIGF0IHRoZSBzdGFydCBvZiBhbiBleHByLCByZWNvdmVyIHRoZSBleHBy
IGFuZCB0aGVuIHRyZWF0IGFzIGFuIGVycm9yLCBjbGVhbmluZwotICAgICAgICB1cCBhbmQgZGVs
ZXRpbmcgdGhlIHNoaWZ0ZWQgZXhwci4gICovCi0gICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5
RW5kKGZhbHNlLCBmYWxzZSk7Ci0gICAgICAgICQkID0gZmFsc2U7Ci0gICAgfQotICAgIHwKLSAg
ICBwcm9wZXJ0eSAnOicgbWF5YmVfc3BhY2UgZXhwciBwcmlvIGVycm9yIHsKLSAgICAgICAgLyog
V2hlbiB3ZSBlbmNvdW50ZXIgc29tZXRoaW5nIGxpa2UgcCB7Y29sb3I6IHJlZCAhaW1wb3J0YW50
IGZhaWw7fSB3ZSBzaG91bGQgZHJvcCB0aGUgZGVjbGFyYXRpb24gKi8KLSAgICAgICAgcGFyc2Vy
LT5tYXJrUHJvcGVydHlFbmQoZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAg
ICB9Ci0gICAgfAotICAgIElNUE9SVEFOVF9TWU0gbWF5YmVfc3BhY2UgewotICAgICAgICAvKiBI
YW5kbGUgdGhpcyBjYXNlOiBkaXYgeyB0ZXh0LWFsaWduOiBjZW50ZXI7ICFpbXBvcnRhbnQgfSBK
dXN0IHJlZHVjZSBhd2F5IHRoZSBzdHJheSAhaW1wb3J0YW50LiAqLwotICAgICAgICAkJCA9IGZh
bHNlOwotICAgIH0KLSAgICB8Ci0gICAgcHJvcGVydHkgJzonIG1heWJlX3NwYWNlIHsKLSAgICAg
ICAgLyogZGl2IHsgZm9udC1mYW1pbHk6IH0gSnVzdCByZWR1Y2UgYXdheSB0aGlzIHByb3BlcnR5
IHdpdGggbm8gdmFsdWUuICovCi0gICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5RW5kKGZhbHNl
LCBmYWxzZSk7Ci0gICAgICAgICQkID0gZmFsc2U7Ci0gICAgfQotICAgIHwKLSAgICBwcm9wZXJ0
eSAnOicgbWF5YmVfc3BhY2UgZXJyb3IgewotICAgICAgICAvKiBpZiB3ZSBjb21lIGFjcm9zcyBy
dWxlcyB3aXRoIGludmFsaWQgdmFsdWVzIGxpa2UgdGhpcyBjYXNlOiBwIHsgd2VpZ2h0OiAqOyB9
LCBqdXN0IGRpc2NhcmQgdGhlIHJ1bGUgKi8KLSAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlF
bmQoZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAgICB9Ci0gICAgfAotICAg
IHByb3BlcnR5IGludmFsaWRfYmxvY2sgewotICAgICAgICAvKiBpZiB3ZSBjb21lIGFjcm9zczog
ZGl2IHsgY29sb3J7O2NvbG9yOm1hcm9vbn0gfSwgaWdub3JlIGV2ZXJ5dGhpbmcgd2l0aGluIGN1
cmx5IGJyYWNrZXRzICovCi0gICAgICAgICQkID0gZmFsc2U7Ci0gICAgfQotICA7Ci0KLXByb3Bl
cnR5OgotICAgIElERU5UIG1heWJlX3NwYWNlIHsKLSAgICAgICAgJCQgPSBjc3NQcm9wZXJ0eUlE
KCQxKTsKLSAgICB9Ci0gIDsKLQotcHJpbzoKLSAgICBJTVBPUlRBTlRfU1lNIG1heWJlX3NwYWNl
IHsgJCQgPSB0cnVlOyB9Ci0gICAgfCAvKiBlbXB0eSAqLyB7ICQkID0gZmFsc2U7IH0KLSAgOwot
Ci1leHByOgotICAgIHRlcm0gewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdW
YWx1ZUxpc3QoKTsKLSAgICAgICAgJCQtPmFkZFZhbHVlKHBhcnNlci0+c2lua0Zsb2F0aW5nVmFs
dWUoJDEpKTsKLSAgICB9Ci0gICAgfCBleHByIG9wZXJhdG9yIHRlcm0gewotICAgICAgICAkJCA9
ICQxOwotICAgICAgICBpZiAoJCQpIHsKLSAgICAgICAgICAgIGlmICgkMikgewotICAgICAgICAg
ICAgICAgIENTU1BhcnNlclZhbHVlIHY7Ci0gICAgICAgICAgICAgICAgdi5pZCA9IDA7Ci0gICAg
ICAgICAgICAgICAgdi51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOwotICAgICAgICAg
ICAgICAgIHYuaVZhbHVlID0gJDI7Ci0gICAgICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHYpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHBhcnNlci0+c2lua0Zsb2F0
aW5nVmFsdWUoJDMpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICB8IGV4cHIgaW52YWxpZF9ibG9j
a19saXN0IHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICB8IGV4cHIgaW52YWxpZF9ibG9j
a19saXN0IGVycm9yIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICB8IGV4cHIgZXJyb3Ig
ewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICA7Ci0KLW9wZXJhdG9yOgotICAgICcvJyBtYXli
ZV9zcGFjZSB7Ci0gICAgICAgICQkID0gJy8nOwotICAgIH0KLSAgfCAnLCcgbWF5YmVfc3BhY2Ug
ewotICAgICAgICAkJCA9ICcsJzsKLSAgICB9Ci0gIHwgLyogZW1wdHkgKi8gewotICAgICAgICAk
JCA9IDA7Ci0gIH0KLSAgOwotCi10ZXJtOgotICB1bmFyeV90ZXJtIHsgJCQgPSAkMTsgfQotICB8
IHVuYXJ5X29wZXJhdG9yIHVuYXJ5X3Rlcm0geyAkJCA9ICQyOyAkJC5mVmFsdWUgKj0gJDE7IH0K
LSAgfCBTVFJJTkcgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51
bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkc7IH0KLSAgfCBJREVOVCBtYXliZV9z
cGFjZSB7Ci0gICAgICAkJC5pZCA9IGNzc1ZhbHVlS2V5d29yZElEKCQxKTsKLSAgICAgICQkLnVu
aXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UOwotICAgICAgJCQuc3RyaW5nID0gJDE7
Ci0gIH0KLSAgLyogV2UgbWlnaHQgbmVlZCB0byBhY3R1YWxseSBwYXJzZSB0aGUgbnVtYmVyIGZy
b20gYSBkaW1lbnNpb24sIGJ1dCB3ZSBjYW4ndCBqdXN0IHB1dCBzb21ldGhpbmcgdGhhdCB1c2Vz
ICQkLnN0cmluZyBpbnRvIHVuYXJ5X3Rlcm0uICovCi0gIHwgRElNRU4gbWF5YmVfc3BhY2UgeyAk
JC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19ESU1FTlNJT047IH0KLSAgfCB1bmFyeV9vcGVyYXRvciBESU1FTiBtYXliZV9zcGFjZSB7ICQk
LmlkID0gMDsgJCQuc3RyaW5nID0gJDI7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X0RJTUVOU0lPTjsgfQotICB8IFVSSSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5n
ID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSTsgfQotICB8IFVOSUNP
REVSQU5HRSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VOSUNPREVfUkFOR0U7IH0KLSAgfCBIRVggbWF5YmVf
c3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1I7IH0KLSAgfCAnIycgbWF5YmVfc3BhY2UgeyAkJC5p
ZCA9IDA7ICQkLnN0cmluZyA9IENTU1BhcnNlclN0cmluZygpOyAkJC51bml0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1I7IH0gLyogSGFuZGxlIGVycm9yIGNhc2U6ICJj
b2xvcjogIzsiICovCi0gIHwgVkFSRlVOQ1RJT04gbWF5YmVfc3BhY2UgSURFTlQgJyknIG1heWJl
X3NwYWNlIHsKLSNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKLSAgICAgICQkLmlkID0gMDsKLSAg
ICAgICQkLnN0cmluZyA9ICQzOwotICAgICAgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfVkFSSUFCTEVfTkFNRTsKLSNlbmRpZgotICB9Ci0gIC8qIEZJWE1FOiBhY2NvcmRpbmcgdG8g
dGhlIHNwZWNzIGEgZnVuY3Rpb24gY2FuIGhhdmUgYSB1bmFyeV9vcGVyYXRvciBpbiBmcm9udC4g
SSBrbm93IG5vIGNhc2Ugd2hlcmUgdGhpcyBtYWtlcyBzZW5zZSAqLwotICB8IGZ1bmN0aW9uIHsK
LSAgICAgICQkID0gJDE7Ci0gIH0KLSAgfCBjYWxjX2Z1bmN0aW9uIHsKLSAgICAgICQkID0gJDE7
Ci0gIH0KLSAgfCBtaW5fb3JfbWF4X2Z1bmN0aW9uIHsKLSAgICAgICQkID0gJDE7Ci0gIH0KLSAg
fCAnJScgbWF5YmVfc3BhY2UgeyAvKiBIYW5kbGUgd2lkdGg6ICU7ICovCi0gICAgICAkJC5pZCA9
IDA7ICQkLnVuaXQgPSAwOwotICB9Ci0gIDsKLQotdW5hcnlfdGVybToKLSAgSU5URUdFUiBtYXli
ZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuaXNJbnQgPSB0cnVlOyAkJC5mVmFsdWUgPSAkMTsgJCQu
dW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOyB9Ci0gIHwgRkxPQVRUT0tFTiBt
YXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuaXNJbnQgPSBmYWxzZTsgJCQuZlZhbHVlID0gJDE7
ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjsgfQotICB8IFBFUkNFTlRB
R0UgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFOyB9Ci0gIHwgUFhTIG1heWJlX3NwYWNlIHsg
JCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUFg7IH0KLSAgfCBDTVMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQx
OyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19DTTsgfQotICB8IE1NUyBtYXliZV9z
cGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX01NOyB9Ci0gIHwgSU5TIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFs
dWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSU47IH0KLSAgfCBQVFMg
bWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QVDsgfQotICB8IFBDUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsg
JCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BDOyB9Ci0g
IHwgREVHUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRzsgfQotICB8IFJBRFMgbWF5YmVfc3BhY2UgeyAk
JC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19SQUQ7IH0KLSAgfCBHUkFEUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0g
JDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0dSQUQ7IH0KLSAgfCBUVVJOUyBt
YXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1RVUk47IH0KLSAgfCBNU0VDUyBtYXliZV9zcGFjZSB7ICQkLmlkID0g
MDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01TOyB9
Ci0gIHwgU0VDUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVu
aXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1M7IH0KLSAgfCBIRVJUWiBtYXliZV9zcGFjZSB7
ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX0haOyB9Ci0gIHwgS0hFUlRaIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUg
PSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfS0haOyB9Ci0gIHwgRU1TIG1h
eWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfRU1TOyB9Ci0gIHwgUUVNUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsg
JCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6UV9FTVM7IH0KLSAgfCBF
WFMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19FWFM7IH0KLSAgfCBSRU1TIG1heWJlX3NwYWNlIHsKLSAgICAg
ICQkLmlkID0gMDsKLSAgICAgICQkLmZWYWx1ZSA9ICQxOwotICAgICAgJCQudW5pdCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUkVNUzsKLSAgICAgIGlmIChwYXJzZXItPm1fc3R5bGVTaGVldCkK
LSAgICAgICAgICBwYXJzZXItPm1fc3R5bGVTaGVldC0+cGFyc2VyU2V0VXNlc1JlbVVuaXRzKHRy
dWUpOwotICB9Ci0gIHwgVlcgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQx
OyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WVzsgfQotICB8IFZIIG1heWJlX3Nw
YWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfVkg7IH0KLSAgfCBWTUlOIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFs
dWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVk1JTjsgfQotICB8IERQ
UFggbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19EUFBYOyB9Ci0gIHwgRFBJIG1heWJlX3NwYWNlIHsgJCQuaWQg
PSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRFBJ
OyB9Ci0gIHwgRFBDTSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQk
LnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQQ007IH0KLSAgOwotCi1mdW5jdGlvbjoK
LSAgICBGVU5DVElPTiBtYXliZV9zcGFjZSBleHByICcpJyBtYXliZV9zcGFjZSB7Ci0gICAgICAg
IENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7
Ci0gICAgICAgIGYtPm5hbWUgPSAkMTsKLSAgICAgICAgZi0+YXJncyA9IHBhcnNlci0+c2lua0Zs
b2F0aW5nVmFsdWVMaXN0KCQzKTsKLSAgICAgICAgJCQuaWQgPSAwOwotICAgICAgICAkJC51bml0
ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uOwotICAgICAgICAkJC5mdW5jdGlvbiA9IGY7Ci0g
ICAgfSB8Ci0gICAgRlVOQ1RJT04gbWF5YmVfc3BhY2UgZXhwciBUT0tFTl9FT0YgewotICAgICAg
ICBDU1NQYXJzZXJGdW5jdGlvbiogZiA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdGdW5jdGlvbigp
OwotICAgICAgICBmLT5uYW1lID0gJDE7Ci0gICAgICAgIGYtPmFyZ3MgPSBwYXJzZXItPnNpbmtG
bG9hdGluZ1ZhbHVlTGlzdCgkMyk7Ci0gICAgICAgICQkLmlkID0gMDsKLSAgICAgICAgJCQudW5p
dCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKLSAgICAgICAgJCQuZnVuY3Rpb24gPSBmOwot
ICAgIH0gfAotICAgIEZVTkNUSU9OIG1heWJlX3NwYWNlICcpJyBtYXliZV9zcGFjZSB7Ci0gICAg
ICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9u
KCk7Ci0gICAgICAgIGYtPm5hbWUgPSAkMTsKLSAgICAgICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiB2
YWx1ZUxpc3QgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nVmFsdWVMaXN0KCk7Ci0gICAgICAgIGYt
PmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCh2YWx1ZUxpc3QpOwotICAgICAg
ICAkJC5pZCA9IDA7Ci0gICAgICAgICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb247
Ci0gICAgICAgICQkLmZ1bmN0aW9uID0gZjsKLSAgICB9IHwKLSAgICBGVU5DVElPTiBtYXliZV9z
cGFjZSBlcnJvciB7Ci0gICAgICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVh
dGVGbG9hdGluZ0Z1bmN0aW9uKCk7Ci0gICAgICAgIGYtPm5hbWUgPSAkMTsKLSAgICAgICAgZi0+
YXJncyA9IG51bGxwdHI7Ci0gICAgICAgICQkLmlkID0gMDsKLSAgICAgICAgJCQudW5pdCA9IENT
U1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKLSAgICAgICAgJCQuZnVuY3Rpb24gPSBmOwotICB9Ci0g
IDsKLSAKLWNhbGNfZnVuY190ZXJtOgotICB1bmFyeV90ZXJtIHsgJCQgPSAkMTsgfQotICB8IFZB
UkZVTkNUSU9OIG1heWJlX3NwYWNlIElERU5UICcpJyBtYXliZV9zcGFjZSB7Ci0jaWYgRU5BQkxF
KENTU19WQVJJQUJMRVMpCi0gICAgICAkJC5pZCA9IDA7Ci0gICAgICAkJC5zdHJpbmcgPSAkMzsK
LSAgICAgICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZBUklBQkxFX05BTUU7Ci0j
ZW5kaWYKLSAgfQotICB8IHVuYXJ5X29wZXJhdG9yIHVuYXJ5X3Rlcm0geyAkJCA9ICQyOyAkJC5m
VmFsdWUgKj0gJDE7IH0KLSAgOwotCi1jYWxjX2Z1bmNfb3BlcmF0b3I6Ci0gICAgJysnIFdISVRF
U1BBQ0UgewotICAgICAgICAkJCA9ICcrJzsKLSAgICB9Ci0gICAgfCAnLScgV0hJVEVTUEFDRSB7
Ci0gICAgICAgICQkID0gJy0nOwotICAgIH0KLSAgICB8ICcqJyBtYXliZV9zcGFjZSB7Ci0gICAg
ICAgICQkID0gJyonOwotICAgIH0KLSAgICB8ICcvJyBtYXliZV9zcGFjZSB7Ci0gICAgICAgICQk
ID0gJy8nOwotICAgIH0KLSAgOwotCi1jYWxjX2Z1bmNfcGFyZW5fZXhwcjoKLSAgICAnKCcgbWF5
YmVfc3BhY2UgY2FsY19mdW5jX2V4cHIgbWF5YmVfc3BhY2UgJyknIG1heWJlX3NwYWNlIHsKLSAg
ICAgICAgaWYgKCQzKSB7Ci0gICAgICAgICAgICAkJCA9ICQzOwotICAgICAgICAgICAgQ1NTUGFy
c2VyVmFsdWUgdjsKLSAgICAgICAgICAgIHYuaWQgPSAwOwotICAgICAgICAgICAgdi51bml0ID0g
Q1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOwotICAgICAgICAgICAgdi5pVmFsdWUgPSAnKCc7Ci0g
ICAgICAgICAgICAkJC0+aW5zZXJ0VmFsdWVBdCgwLCB2KTsKLSAgICAgICAgICAgIHYuaVZhbHVl
ID0gJyknOwotICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHYpOwotICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgICQkID0gMDsKLSAgICB9Ci0KLWNhbGNfZnVuY19leHByOgotICAgIGNhbGNfZnVu
Y190ZXJtIG1heWJlX3NwYWNlIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5n
VmFsdWVMaXN0KCk7Ci0gICAgICAgICQkLT5hZGRWYWx1ZShwYXJzZXItPnNpbmtGbG9hdGluZ1Zh
bHVlKCQxKSk7Ci0gICAgfQotICAgIHwgY2FsY19mdW5jX2V4cHIgY2FsY19mdW5jX29wZXJhdG9y
IGNhbGNfZnVuY190ZXJtIHsKLSAgICAgICAgaWYgKCQxICYmICQyKSB7Ci0gICAgICAgICAgICAk
JCA9ICQxOwotICAgICAgICAgICAgQ1NTUGFyc2VyVmFsdWUgdjsKLSAgICAgICAgICAgIHYuaWQg
PSAwOwotICAgICAgICAgICAgdi51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOwotICAg
ICAgICAgICAgdi5pVmFsdWUgPSAkMjsKLSAgICAgICAgICAgICQkLT5hZGRWYWx1ZSh2KTsKLSAg
ICAgICAgICAgICQkLT5hZGRWYWx1ZShwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlKCQzKSk7Ci0g
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgJCQgPSAwOwotCi0gICAgfQotICAgIHwgY2FsY19m
dW5jX2V4cHIgY2FsY19mdW5jX29wZXJhdG9yIGNhbGNfZnVuY19wYXJlbl9leHByIHsKLSAgICAg
ICAgaWYgKCQxICYmICQyICYmICQzKSB7Ci0gICAgICAgICAgICAkJCA9ICQxOwotICAgICAgICAg
ICAgQ1NTUGFyc2VyVmFsdWUgdjsKLSAgICAgICAgICAgIHYuaWQgPSAwOwotICAgICAgICAgICAg
di51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOwotICAgICAgICAgICAgdi5pVmFsdWUg
PSAkMjsKLSAgICAgICAgICAgICQkLT5hZGRWYWx1ZSh2KTsKLSAgICAgICAgICAgICQkLT5leHRl
bmQoKigkMykpOwotICAgICAgICB9IGVsc2UgCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgfQot
ICAgIHwgY2FsY19mdW5jX3BhcmVuX2V4cHIKLSAgICB8IGNhbGNfZnVuY19leHByIGVycm9yIHsK
LSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgOwotCi1jYWxjX2Z1bmNfZXhwcl9saXN0OgotICAg
IGNhbGNfZnVuY19leHByICB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfSAgICAKLSAgICB8IGNh
bGNfZnVuY19leHByX2xpc3QgJywnIG1heWJlX3NwYWNlIGNhbGNfZnVuY19leHByIHsKLSAgICAg
ICAgaWYgKCQxICYmICQ0KSB7Ci0gICAgICAgICAgICAkJCA9ICQxOwotICAgICAgICAgICAgQ1NT
UGFyc2VyVmFsdWUgdjsKLSAgICAgICAgICAgIHYuaWQgPSAwOwotICAgICAgICAgICAgdi51bml0
ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOwotICAgICAgICAgICAgdi5pVmFsdWUgPSAnLCc7
Ci0gICAgICAgICAgICAkJC0+YWRkVmFsdWUodik7Ci0gICAgICAgICAgICAkJC0+ZXh0ZW5kKCoo
JDQpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgIAot
Ci1jYWxjX2Z1bmN0aW9uOgotICAgIENBTENGVU5DVElPTiBtYXliZV9zcGFjZSBjYWxjX2Z1bmNf
ZXhwciAnKScgbWF5YmVfc3BhY2UgewotICAgICAgICBDU1NQYXJzZXJGdW5jdGlvbiogZiA9IHBh
cnNlci0+Y3JlYXRlRmxvYXRpbmdGdW5jdGlvbigpOwotICAgICAgICBmLT5uYW1lID0gJDE7Ci0g
ICAgICAgIGYtPmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkMyk7Ci0gICAg
ICAgICQkLmlkID0gMDsKLSAgICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlv
bjsKLSAgICAgICAgJCQuZnVuY3Rpb24gPSBmOwotICAgIH0KLSAgICB8IENBTENGVU5DVElPTiBt
YXliZV9zcGFjZSBlcnJvciB7Ci0gICAgICAgIFlZRVJST1I7Ci0gICAgfQotICAgIDsKLQotCi1t
aW5fb3JfbWF4OgotICAgIE1JTkZVTkNUSU9OIHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICB9Ci0g
ICAgfCBNQVhGVU5DVElPTiB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAgIDsKLQotbWlu
X29yX21heF9mdW5jdGlvbjoKLSAgICBtaW5fb3JfbWF4IG1heWJlX3NwYWNlIGNhbGNfZnVuY19l
eHByX2xpc3QgJyknIG1heWJlX3NwYWNlIHsKLSAgICAgICAgQ1NTUGFyc2VyRnVuY3Rpb24qIGYg
PSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsKLSAgICAgICAgZi0+bmFtZSA9ICQx
OwotICAgICAgICBmLT5hcmdzID0gcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDMpOwot
ICAgICAgICAkJC5pZCA9IDA7Ci0gICAgICAgICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6RnVu
Y3Rpb247Ci0gICAgICAgICQkLmZ1bmN0aW9uID0gZjsKLSAgICB9IAotICAgIHwgbWluX29yX21h
eCBtYXliZV9zcGFjZSBlcnJvciB7Ci0gICAgICAgIFlZRVJST1I7Ci0gICAgfQotICAgIDsKLQot
LyogZXJyb3IgaGFuZGxpbmcgcnVsZXMgKi8KLQotc2F2ZV9ibG9jazoKLSAgICBjbG9zaW5nX2Jy
YWNlIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgfCBlcnJvciBjbG9zaW5nX2JyYWNlIHsK
LSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICA7Ci0KLWludmFsaWRfYXQ6Ci0gICAgQVRLRVlX
T1JEIGVycm9yIGludmFsaWRfYmxvY2sgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICB8IEFU
S0VZV09SRCBlcnJvciAnOycgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgIDsKLQotaW52
YWxpZF9ydWxlOgotICAgIGVycm9yIGludmFsaWRfYmxvY2sgewotICAgICAgICAkJCA9IDA7Ci0g
ICAgfQotCi0vKgotICBTZWVtcyBsaWtlIHRoZSB0d28gcnVsZXMgYmVsb3cgYXJlIHRyeWluZyB0
b28gbXVjaCBhbmQgdmlvbGF0aW5nCi0gIGh0dHA6Ly93d3cuaGl4aWUuY2gvdGVzdHMvZXZpbC9t
aXhlZC9jc3NlcnJvcmhhbmRsaW5nLmh0bWwKLQotICB8IGVycm9yICc7JyB7Ci0gICAgICAgICQk
ID0gMDsKLSAgICB9Ci0gIHwgZXJyb3IgJ30nIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSov
Ci0gICAgOwotCi1pbnZhbGlkX2Jsb2NrOgotICAgICd7JyBlcnJvciBpbnZhbGlkX2Jsb2NrX2xp
c3QgZXJyb3IgY2xvc2luZ19icmFjZSB7Ci0gICAgICAgIHBhcnNlci0+aW52YWxpZEJsb2NrSGl0
KCk7Ci0gICAgfQotICB8ICd7JyBlcnJvciBjbG9zaW5nX2JyYWNlIHsKLSAgICAgICAgcGFyc2Vy
LT5pbnZhbGlkQmxvY2tIaXQoKTsKLSAgICB9Ci0gICAgOwotCi1pbnZhbGlkX2Jsb2NrX2xpc3Q6
Ci0gICAgaW52YWxpZF9ibG9jawotICB8IGludmFsaWRfYmxvY2tfbGlzdCBlcnJvciBpbnZhbGlk
X2Jsb2NrCi07Ci0KLSUlCi0KLSNpZiBZWURFQlVHID4gMAotc3RhdGljIHZvaWQgcHJpbnRfdG9r
ZW5fdmFsdWUoRklMRSAqIHl5b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNUWVBFIGNvbnN0ICZ5eXZh
bHVlKQotewotICAgIHN3aXRjaCAoeXl0eXBlKSB7Ci0gICAgY2FzZSBJREVOVDoKLSAgICBjYXNl
IFNUUklORzoKLSAgICBjYXNlIE5USDoKLSAgICBjYXNlIEhFWDoKLSAgICBjYXNlIElEU0VMOgot
ICAgIGNhc2UgRElNRU46Ci0gICAgY2FzZSBJTlZBTElERElNRU46Ci0gICAgY2FzZSBVUkk6Ci0g
ICAgY2FzZSBGVU5DVElPTjoKLSAgICBjYXNlIEFOWUZVTkNUSU9OOgotICAgIGNhc2UgTk9URlVO
Q1RJT046Ci0gICAgY2FzZSBDQUxDRlVOQ1RJT046Ci0gICAgY2FzZSBNSU5GVU5DVElPTjoKLSAg
ICBjYXNlIE1BWEZVTkNUSU9OOgotICAgIGNhc2UgVkFSX0RFRklOSVRJT046Ci0gICAgY2FzZSBV
TklDT0RFUkFOR0U6Ci0gICAgICAgIFlZRlBSSU5URih5eW91dHB1dCwgIiVzIiwgU3RyaW5nKHl5
dmFsdWUuc3RyaW5nKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1t
YXIueS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43MzNhZThlZGE2MmU2NGYwMzdiZmQwMGI1YTg0MTc4ZGYyNzZi
ZWVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5p
bgpAQCAtMCwwICsxLDE3MDMgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDAyLTIwMDMgTGFy
cyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5j
b20pCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+
CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK
KyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC
b3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqCisgKi8KKworJXB1cmVfcGFyc2VyCisKKyVw
YXJzZS1wYXJhbSB7IENTU1BhcnNlciogcGFyc2VyIH0KKyVsZXgtcGFyYW0geyBDU1NQYXJzZXIq
IHBhcnNlciB9CisKKyV1bmlvbiB7CisgICAgYm9vbCBib29sZWFuOworICAgIGNoYXIgY2hhcmFj
dGVyOworICAgIGludCBpbnRlZ2VyOworICAgIGRvdWJsZSBudW1iZXI7CisgICAgQ1NTUGFyc2Vy
U3RyaW5nIHN0cmluZzsKKworICAgIFN0eWxlUnVsZUJhc2UqIHJ1bGU7CisgICAgVmVjdG9yPFJl
ZlB0cjxTdHlsZVJ1bGVCYXNlPiA+KiBydWxlTGlzdDsKKyAgICBDU1NQYXJzZXJTZWxlY3Rvciog
c2VsZWN0b3I7CisgICAgQ1NTU2VsZWN0b3JWZWN0b3IqIHNlbGVjdG9yTGlzdDsKKyAgICBDU1NT
ZWxlY3Rvcjo6TWFyZ2luQm94VHlwZSBtYXJnaW5Cb3g7CisgICAgQ1NTU2VsZWN0b3I6OlJlbGF0
aW9uIHJlbGF0aW9uOworICAgIE1lZGlhUXVlcnlTZXQqIG1lZGlhTGlzdDsKKyAgICBNZWRpYVF1
ZXJ5KiBtZWRpYVF1ZXJ5OworICAgIE1lZGlhUXVlcnk6OlJlc3RyaWN0b3IgbWVkaWFRdWVyeVJl
c3RyaWN0b3I7CisgICAgTWVkaWFRdWVyeUV4cCogbWVkaWFRdWVyeUV4cDsKKyAgICBDU1NQYXJz
ZXJWYWx1ZSB2YWx1ZTsKKyAgICBDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlTGlzdDsKKyAgICBW
ZWN0b3I8T3duUHRyPE1lZGlhUXVlcnlFeHA+ID4qIG1lZGlhUXVlcnlFeHBMaXN0OworICAgIFN0
eWxlS2V5ZnJhbWUqIGtleWZyYW1lOworICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVLZXlmcmFtZT4g
Pioga2V5ZnJhbWVSdWxlTGlzdDsKKyAgICBmbG9hdCB2YWw7CisgICAgQ1NTUHJvcGVydHlJRCBp
ZDsKK30KKworJXsKKworc3RhdGljIGlubGluZSBpbnQgY3NzeXllcnJvcih2b2lkKiwgY29uc3Qg
Y2hhciopCit7CisgICAgcmV0dXJuIDE7Cit9CisKKyV9CisKKyVleHBlY3QgNjUKKworJW5vbmFz
c29jIExPV0VTVF9QUkVDCisKKyVsZWZ0IFVOSU1QT1JUQU5UX1RPSworCisldG9rZW4gV0hJVEVT
UEFDRSBTR01MX0NECisldG9rZW4gVE9LRU5fRU9GIDAKKworJXRva2VuIElOQ0xVREVTCisldG9r
ZW4gREFTSE1BVENICisldG9rZW4gQkVHSU5TV0lUSAorJXRva2VuIEVORFNXSVRICisldG9rZW4g
Q09OVEFJTlMKKworJXRva2VuIDxzdHJpbmc+IFNUUklORworJXJpZ2h0IDxzdHJpbmc+IElERU5U
CisldG9rZW4gPHN0cmluZz4gTlRICisKKyVub25hc3NvYyA8c3RyaW5nPiBIRVgKKyVub25hc3Nv
YyA8c3RyaW5nPiBJRFNFTAorJW5vbmFzc29jICc6JworJW5vbmFzc29jICcuJworJW5vbmFzc29j
ICdbJworJW5vbmFzc29jIDxzdHJpbmc+ICcqJworJW5vbmFzc29jIGVycm9yCislbGVmdCAnfCcK
KworJXRva2VuIElNUE9SVF9TWU0KKyV0b2tlbiBQQUdFX1NZTQorJXRva2VuIE1FRElBX1NZTQor
JXRva2VuIEZPTlRfRkFDRV9TWU0KKyV0b2tlbiBDSEFSU0VUX1NZTQorJXRva2VuIE5BTUVTUEFD
RV9TWU0KKyV0b2tlbiBWQVJGVU5DVElPTgorJXRva2VuIFdFQktJVF9SVUxFX1NZTQorJXRva2Vu
IFdFQktJVF9ERUNMU19TWU0KKyV0b2tlbiBXRUJLSVRfS0VZRlJBTUVfUlVMRV9TWU0KKyV0b2tl
biBXRUJLSVRfS0VZRlJBTUVTX1NZTQorJXRva2VuIFdFQktJVF9WQUxVRV9TWU0KKyV0b2tlbiBX
RUJLSVRfTUVESUFRVUVSWV9TWU0KKyV0b2tlbiBXRUJLSVRfU0VMRUNUT1JfU1lNCisldG9rZW4g
V0VCS0lUX1JFR0lPTl9SVUxFX1NZTQorJXRva2VuIDxtYXJnaW5Cb3g+IFRPUExFRlRDT1JORVJf
U1lNCisldG9rZW4gPG1hcmdpbkJveD4gVE9QTEVGVF9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBU
T1BDRU5URVJfU1lNCisldG9rZW4gPG1hcmdpbkJveD4gVE9QUklHSFRfU1lNCisldG9rZW4gPG1h
cmdpbkJveD4gVE9QUklHSFRDT1JORVJfU1lNCisldG9rZW4gPG1hcmdpbkJveD4gQk9UVE9NTEVG
VENPUk5FUl9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBCT1RUT01MRUZUX1NZTQorJXRva2VuIDxt
YXJnaW5Cb3g+IEJPVFRPTUNFTlRFUl9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBCT1RUT01SSUdI
VF9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBCT1RUT01SSUdIVENPUk5FUl9TWU0KKyV0b2tlbiA8
bWFyZ2luQm94PiBMRUZUVE9QX1NZTQorJXRva2VuIDxtYXJnaW5Cb3g+IExFRlRNSURETEVfU1lN
CisldG9rZW4gPG1hcmdpbkJveD4gTEVGVEJPVFRPTV9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBS
SUdIVFRPUF9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBSSUdIVE1JRERMRV9TWU0KKyV0b2tlbiA8
bWFyZ2luQm94PiBSSUdIVEJPVFRPTV9TWU0KKworJXRva2VuIEFUS0VZV09SRAorCisldG9rZW4g
SU1QT1JUQU5UX1NZTQorJXRva2VuIE1FRElBX09OTFkKKyV0b2tlbiBNRURJQV9OT1QKKyV0b2tl
biBNRURJQV9BTkQKKworJXRva2VuIDxudW1iZXI+IFJFTVMKKyV0b2tlbiA8bnVtYmVyPiBRRU1T
CisldG9rZW4gPG51bWJlcj4gRU1TCisldG9rZW4gPG51bWJlcj4gRVhTCisldG9rZW4gPG51bWJl
cj4gUFhTCisldG9rZW4gPG51bWJlcj4gQ01TCisldG9rZW4gPG51bWJlcj4gTU1TCisldG9rZW4g
PG51bWJlcj4gSU5TCisldG9rZW4gPG51bWJlcj4gUFRTCisldG9rZW4gPG51bWJlcj4gUENTCisl
dG9rZW4gPG51bWJlcj4gREVHUworJXRva2VuIDxudW1iZXI+IFJBRFMKKyV0b2tlbiA8bnVtYmVy
PiBHUkFEUworJXRva2VuIDxudW1iZXI+IFRVUk5TCisldG9rZW4gPG51bWJlcj4gTVNFQ1MKKyV0
b2tlbiA8bnVtYmVyPiBTRUNTCisldG9rZW4gPG51bWJlcj4gSEVSVFoKKyV0b2tlbiA8bnVtYmVy
PiBLSEVSVFoKKyV0b2tlbiA8c3RyaW5nPiBESU1FTgorJXRva2VuIDxzdHJpbmc+IElOVkFMSURE
SU1FTgorJXRva2VuIDxudW1iZXI+IFBFUkNFTlRBR0UKKyV0b2tlbiA8bnVtYmVyPiBGTE9BVFRP
S0VOCisldG9rZW4gPG51bWJlcj4gSU5URUdFUgorJXRva2VuIDxudW1iZXI+IFZXCisldG9rZW4g
PG51bWJlcj4gVkgKKyV0b2tlbiA8bnVtYmVyPiBWTUlOCisldG9rZW4gPG51bWJlcj4gRFBQWAor
JXRva2VuIDxudW1iZXI+IERQSQorJXRva2VuIDxudW1iZXI+IERQQ00KKworJXRva2VuIDxzdHJp
bmc+IFVSSQorJXRva2VuIDxzdHJpbmc+IEZVTkNUSU9OCisldG9rZW4gPHN0cmluZz4gQU5ZRlVO
Q1RJT04KKyV0b2tlbiA8c3RyaW5nPiBOT1RGVU5DVElPTgorJXRva2VuIDxzdHJpbmc+IENBTENG
VU5DVElPTgorJXRva2VuIDxzdHJpbmc+IE1JTkZVTkNUSU9OCisldG9rZW4gPHN0cmluZz4gTUFY
RlVOQ1RJT04KKyV0b2tlbiA8c3RyaW5nPiBWQVJfREVGSU5JVElPTgorCisldG9rZW4gPHN0cmlu
Zz4gVU5JQ09ERVJBTkdFCisKKyV0eXBlIDxyZWxhdGlvbj4gY29tYmluYXRvcgorCisldHlwZSA8
cnVsZT4gY2hhcnNldAorJXR5cGUgPHJ1bGU+IGlnbm9yZWRfY2hhcnNldAorJXR5cGUgPHJ1bGU+
IHJ1bGVzZXQKKyV0eXBlIDxydWxlPiBtZWRpYQorJXR5cGUgPHJ1bGU+IGltcG9ydAorJXR5cGUg
PHJ1bGU+IG5hbWVzcGFjZQorJXR5cGUgPHJ1bGU+IHBhZ2UKKyV0eXBlIDxydWxlPiBtYXJnaW5f
Ym94CisldHlwZSA8cnVsZT4gZm9udF9mYWNlCisldHlwZSA8cnVsZT4ga2V5ZnJhbWVzCisldHlw
ZSA8cnVsZT4gaW52YWxpZF9ydWxlCisldHlwZSA8cnVsZT4gc2F2ZV9ibG9jaworJXR5cGUgPHJ1
bGU+IGludmFsaWRfYXQKKyV0eXBlIDxydWxlPiBydWxlCisldHlwZSA8cnVsZT4gdmFsaWRfcnVs
ZQorJXR5cGUgPHJ1bGVMaXN0PiBibG9ja19ydWxlX2xpc3QgCisldHlwZSA8cnVsZT4gYmxvY2tf
cnVsZQorJXR5cGUgPHJ1bGU+IGJsb2NrX3ZhbGlkX3J1bGUKKyV0eXBlIDxydWxlPiByZWdpb24K
KworJXR5cGUgPHN0cmluZz4gbWF5YmVfbnNfcHJlZml4CisKKyV0eXBlIDxzdHJpbmc+IG5hbWVz
cGFjZV9zZWxlY3RvcgorCisldHlwZSA8c3RyaW5nPiBzdHJpbmdfb3JfdXJpCisldHlwZSA8c3Ry
aW5nPiBpZGVudF9vcl9zdHJpbmcKKyV0eXBlIDxzdHJpbmc+IG1lZGl1bQorJXR5cGUgPG1hcmdp
bkJveD4gbWFyZ2luX3N5bQorCisldHlwZSA8c3RyaW5nPiBtZWRpYV9mZWF0dXJlCisldHlwZSA8
bWVkaWFMaXN0PiBtZWRpYV9saXN0CisldHlwZSA8bWVkaWFMaXN0PiBtYXliZV9tZWRpYV9saXN0
CisldHlwZSA8bWVkaWFRdWVyeT4gbWVkaWFfcXVlcnkKKyV0eXBlIDxtZWRpYVF1ZXJ5UmVzdHJp
Y3Rvcj4gbWF5YmVfbWVkaWFfcmVzdHJpY3RvcgorJXR5cGUgPHZhbHVlTGlzdD4gbWF5YmVfbWVk
aWFfdmFsdWUKKyV0eXBlIDxtZWRpYVF1ZXJ5RXhwPiBtZWRpYV9xdWVyeV9leHAKKyV0eXBlIDxt
ZWRpYVF1ZXJ5RXhwTGlzdD4gbWVkaWFfcXVlcnlfZXhwX2xpc3QKKyV0eXBlIDxtZWRpYVF1ZXJ5
RXhwTGlzdD4gbWF5YmVfYW5kX21lZGlhX3F1ZXJ5X2V4cF9saXN0CisKKyV0eXBlIDxzdHJpbmc+
IGtleWZyYW1lX25hbWUKKyV0eXBlIDxrZXlmcmFtZT4ga2V5ZnJhbWVfcnVsZQorJXR5cGUgPGtl
eWZyYW1lUnVsZUxpc3Q+IGtleWZyYW1lc19ydWxlCisldHlwZSA8dmFsdWVMaXN0PiBrZXlfbGlz
dAorJXR5cGUgPHZhbHVlPiBrZXkKKworJXR5cGUgPGlkPiBwcm9wZXJ0eQorCisldHlwZSA8c2Vs
ZWN0b3I+IHNwZWNpZmllcgorJXR5cGUgPHNlbGVjdG9yPiBzcGVjaWZpZXJfbGlzdAorJXR5cGUg
PHNlbGVjdG9yPiBzaW1wbGVfc2VsZWN0b3IKKyV0eXBlIDxzZWxlY3Rvcj4gc2VsZWN0b3IKKyV0
eXBlIDxzZWxlY3Rvckxpc3Q+IHNlbGVjdG9yX2xpc3QKKyV0eXBlIDxzZWxlY3Rvckxpc3Q+IHNp
bXBsZV9zZWxlY3Rvcl9saXN0CisldHlwZSA8c2VsZWN0b3JMaXN0PiByZWdpb25fc2VsZWN0b3IK
KyV0eXBlIDxzZWxlY3Rvcj4gc2VsZWN0b3Jfd2l0aF90cmFpbGluZ193aGl0ZXNwYWNlCisldHlw
ZSA8c2VsZWN0b3I+IGNsYXNzCisldHlwZSA8c2VsZWN0b3I+IGF0dHJpYgorJXR5cGUgPHNlbGVj
dG9yPiBwc2V1ZG8KKyV0eXBlIDxzZWxlY3Rvcj4gcHNldWRvX3BhZ2UKKyV0eXBlIDxzZWxlY3Rv
cj4gcGFnZV9zZWxlY3RvcgorCisldHlwZSA8Ym9vbGVhbj4gZGVjbGFyYXRpb25fbGlzdAorJXR5
cGUgPGJvb2xlYW4+IGRlY2xfbGlzdAorJXR5cGUgPGJvb2xlYW4+IGRlY2xhcmF0aW9uCisldHlw
ZSA8Ym9vbGVhbj4gZGVjbGFyYXRpb25zX2FuZF9tYXJnaW5zCisKKyV0eXBlIDxib29sZWFuPiBw
cmlvCisKKyV0eXBlIDxpbnRlZ2VyPiBtYXRjaAorJXR5cGUgPGludGVnZXI+IHVuYXJ5X29wZXJh
dG9yCisldHlwZSA8aW50ZWdlcj4gbWF5YmVfdW5hcnlfb3BlcmF0b3IKKyV0eXBlIDxjaGFyYWN0
ZXI+IG9wZXJhdG9yCisKKyV0eXBlIDx2YWx1ZUxpc3Q+IGV4cHIKKyV0eXBlIDx2YWx1ZT4gdGVy
bQorJXR5cGUgPHZhbHVlPiB1bmFyeV90ZXJtCisldHlwZSA8dmFsdWU+IGZ1bmN0aW9uCisldHlw
ZSA8dmFsdWU+IGNhbGNfZnVuY190ZXJtCisldHlwZSA8Y2hhcmFjdGVyPiBjYWxjX2Z1bmNfb3Bl
cmF0b3IKKyV0eXBlIDx2YWx1ZUxpc3Q+IGNhbGNfZnVuY19leHByCisldHlwZSA8dmFsdWVMaXN0
PiBjYWxjX2Z1bmNfZXhwcl9saXN0CisldHlwZSA8dmFsdWVMaXN0PiBjYWxjX2Z1bmNfcGFyZW5f
ZXhwcgorJXR5cGUgPHZhbHVlPiBjYWxjX2Z1bmN0aW9uCisldHlwZSA8c3RyaW5nPiBtaW5fb3Jf
bWF4CisldHlwZSA8dmFsdWU+IG1pbl9vcl9tYXhfZnVuY3Rpb24KKworJXR5cGUgPHN0cmluZz4g
ZWxlbWVudF9uYW1lCisldHlwZSA8c3RyaW5nPiBhdHRyX25hbWUKKworJSUKKworc3R5bGVzaGVl
dDoKKyAgICBtYXliZV9zcGFjZSBtYXliZV9jaGFyc2V0IG1heWJlX3NnbWwgcnVsZV9saXN0Cisg
IHwgd2Via2l0X3J1bGUgbWF5YmVfc3BhY2UKKyAgfCB3ZWJraXRfZGVjbHMgbWF5YmVfc3BhY2UK
KyAgfCB3ZWJraXRfdmFsdWUgbWF5YmVfc3BhY2UKKyAgfCB3ZWJraXRfbWVkaWFxdWVyeSBtYXli
ZV9zcGFjZQorICB8IHdlYmtpdF9zZWxlY3RvciBtYXliZV9zcGFjZQorICB8IHdlYmtpdF9rZXlm
cmFtZV9ydWxlIG1heWJlX3NwYWNlCisgIDsKKword2Via2l0X3J1bGU6CisgICAgV0VCS0lUX1JV
TEVfU1lNICd7JyBtYXliZV9zcGFjZSB2YWxpZF9ydWxlIG1heWJlX3NwYWNlICd9JyB7CisgICAg
ICAgIHBhcnNlci0+bV9ydWxlID0gJDQ7CisgICAgfQorOworCit3ZWJraXRfa2V5ZnJhbWVfcnVs
ZToKKyAgICBXRUJLSVRfS0VZRlJBTUVfUlVMRV9TWU0gJ3snIG1heWJlX3NwYWNlIGtleWZyYW1l
X3J1bGUgbWF5YmVfc3BhY2UgJ30nIHsKKyAgICAgICAgcGFyc2VyLT5tX2tleWZyYW1lID0gJDQ7
CisgICAgfQorOworCit3ZWJraXRfZGVjbHM6CisgICAgV0VCS0lUX0RFQ0xTX1NZTSAneycgbWF5
YmVfc3BhY2VfYmVmb3JlX2RlY2xhcmF0aW9uIGRlY2xhcmF0aW9uX2xpc3QgJ30nIHsKKyAgICAg
ICAgLyogY2FuIGJlIGVtcHR5ICovCisgICAgfQorOworCit3ZWJraXRfdmFsdWU6CisgICAgV0VC
S0lUX1ZBTFVFX1NZTSAneycgbWF5YmVfc3BhY2UgZXhwciAnfScgeworICAgICAgICBpZiAoJDQp
IHsKKyAgICAgICAgICAgIHBhcnNlci0+bV92YWx1ZUxpc3QgPSBwYXJzZXItPnNpbmtGbG9hdGlu
Z1ZhbHVlTGlzdCgkNCk7CisgICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHBh
cnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCk7CisgICAgICAgICAgICBpZiAoIXBhcnNl
ci0+cGFyc2VWYWx1ZShwYXJzZXItPm1faWQsIHBhcnNlci0+bV9pbXBvcnRhbnQpKQorICAgICAg
ICAgICAgICAgIHBhcnNlci0+cm9sbGJhY2tMYXN0UHJvcGVydGllcyhwYXJzZXItPm1fcGFyc2Vk
UHJvcGVydGllcy0+c2l6ZSgpIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7CisgICAgICAgICAgICBw
YXJzZXItPm1fdmFsdWVMaXN0ID0gbnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0KKzsKKword2Vi
a2l0X21lZGlhcXVlcnk6CisgICAgIFdFQktJVF9NRURJQVFVRVJZX1NZTSBXSElURVNQQUNFIG1h
eWJlX3NwYWNlIG1lZGlhX3F1ZXJ5ICd9JyB7CisgICAgICAgICBwYXJzZXItPm1fbWVkaWFRdWVy
eSA9IHBhcnNlci0+c2lua0Zsb2F0aW5nTWVkaWFRdWVyeSgkNCk7CisgICAgIH0KKzsKKword2Vi
a2l0X3NlbGVjdG9yOgorICAgIFdFQktJVF9TRUxFQ1RPUl9TWU0gJ3snIG1heWJlX3NwYWNlIHNl
bGVjdG9yX2xpc3QgJ30nIHsKKyAgICAgICAgaWYgKCQ0KSB7CisgICAgICAgICAgICBpZiAocGFy
c2VyLT5tX3NlbGVjdG9yTGlzdEZvclBhcnNlU2VsZWN0b3IpCisgICAgICAgICAgICAgICAgcGFy
c2VyLT5tX3NlbGVjdG9yTGlzdEZvclBhcnNlU2VsZWN0b3ItPmFkb3B0U2VsZWN0b3JWZWN0b3Io
KiQ0KTsKKyAgICAgICAgfQorICAgIH0KKzsKKworbWF5YmVfc3BhY2U6CisgICAgLyogZW1wdHkg
Ki8gJXByZWMgVU5JTVBPUlRBTlRfVE9LCisgIHwgbWF5YmVfc3BhY2UgV0hJVEVTUEFDRQorICA7
CisKK21heWJlX3NnbWw6CisgICAgLyogZW1wdHkgKi8KKyAgfCBtYXliZV9zZ21sIFNHTUxfQ0QK
KyAgfCBtYXliZV9zZ21sIFdISVRFU1BBQ0UKKyAgOworCittYXliZV9jaGFyc2V0OgorICAgLyog
ZW1wdHkgKi8KKyAgfCBjaGFyc2V0IHsKKyAgfQorICA7CisKK2Nsb3NpbmdfYnJhY2U6CisgICAg
J30nCisgIHwgJXByZWMgTE9XRVNUX1BSRUMgVE9LRU5fRU9GCisgIDsKKworY2hhcnNldDoKKyAg
Q0hBUlNFVF9TWU0gbWF5YmVfc3BhY2UgU1RSSU5HIG1heWJlX3NwYWNlICc7JyB7CisgICAgIGlm
IChwYXJzZXItPm1fc3R5bGVTaGVldCkKKyAgICAgICAgIHBhcnNlci0+bV9zdHlsZVNoZWV0LT5w
YXJzZXJTZXRFbmNvZGluZ0Zyb21DaGFyc2V0UnVsZSgkMyk7CisgICAgIGlmIChwYXJzZXItPmlz
RXh0cmFjdGluZ1NvdXJjZURhdGEoKSAmJiBwYXJzZXItPm1fY3VycmVudFJ1bGVEYXRhU3RhY2st
PmlzRW1wdHkoKSAmJiBwYXJzZXItPm1fcnVsZVNvdXJjZURhdGFSZXN1bHQpCisgICAgICAgICBw
YXJzZXItPmFkZE5ld1J1bGVUb1NvdXJjZVRyZWUoQ1NTUnVsZVNvdXJjZURhdGE6OmNyZWF0ZVVu
a25vd24oKSk7CisgICAgICQkID0gMDsKKyAgfQorICB8IENIQVJTRVRfU1lNIGVycm9yIGludmFs
aWRfYmxvY2sgeworICB9CisgIHwgQ0hBUlNFVF9TWU0gZXJyb3IgJzsnIHsKKyAgfQorOworCitp
Z25vcmVkX2NoYXJzZXQ6CisgICAgQ0hBUlNFVF9TWU0gbWF5YmVfc3BhY2UgU1RSSU5HIG1heWJl
X3NwYWNlICc7JyB7CisgICAgICAgIC8vIElnbm9yZSBhbnkgQGNoYXJzZXQgcnVsZSBub3QgYXQg
dGhlIGJlZ2lubmluZyBvZiB0aGUgc3R5bGUgc2hlZXQuCisgICAgICAgICQkID0gMDsKKyAgICB9
CisgICAgfCBDSEFSU0VUX1NZTSBtYXliZV9zcGFjZSAnOycgeworICAgICAgICAkJCA9IDA7Cisg
ICAgfQorOworCitydWxlX2xpc3Q6CisgICAvKiBlbXB0eSAqLworIHwgcnVsZV9saXN0IHJ1bGUg
bWF5YmVfc2dtbCB7CisgICAgIGlmICgkMiAmJiBwYXJzZXItPm1fc3R5bGVTaGVldCkKKyAgICAg
ICAgIHBhcnNlci0+bV9zdHlsZVNoZWV0LT5wYXJzZXJBcHBlbmRSdWxlKCQyKTsKKyB9CisgOwor
Cit2YWxpZF9ydWxlOgorICAgIHJ1bGVzZXQKKyAgfCBtZWRpYQorICB8IHBhZ2UKKyAgfCBmb250
X2ZhY2UKKyAgfCBrZXlmcmFtZXMKKyAgfCBuYW1lc3BhY2UKKyAgfCBpbXBvcnQKKyAgfCByZWdp
b24KKyAgOworCitydWxlOgorICAgIHZhbGlkX3J1bGUgeworICAgICAgICBwYXJzZXItPm1faGFk
U3ludGFjdGljYWxseVZhbGlkQ1NTUnVsZSA9IHRydWU7CisgICAgfQorICB8IGlnbm9yZWRfY2hh
cnNldAorICB8IGludmFsaWRfcnVsZQorICB8IGludmFsaWRfYXQKKyAgOworCitibG9ja19ydWxl
X2xpc3Q6IAorICAgIC8qIGVtcHR5ICovIHsgJCQgPSAwOyB9CisgIHwgYmxvY2tfcnVsZV9saXN0
IGJsb2NrX3J1bGUgbWF5YmVfc2dtbCB7CisgICAgICAkJCA9ICQxOworICAgICAgaWYgKCQyKSB7
CisgICAgICAgICAgaWYgKCEkJCkKKyAgICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZVJ1
bGVMaXN0KCk7CisgICAgICAgICAgJCQtPmFwcGVuZCgkMik7CisgICAgICB9CisgIH0KKyAgOwor
CitibG9ja192YWxpZF9ydWxlOgorICAgIHJ1bGVzZXQKKyAgfCBwYWdlCisgIHwgZm9udF9mYWNl
CisgIHwga2V5ZnJhbWVzCisgIDsKKworYmxvY2tfcnVsZToKKyAgICBibG9ja192YWxpZF9ydWxl
CisgIHwgaW52YWxpZF9ydWxlCisgIHwgaW52YWxpZF9hdAorICB8IG5hbWVzcGFjZQorICB8IGlt
cG9ydAorICB8IG1lZGlhCisgIDsKKworYXRfaW1wb3J0X2hlYWRlcl9lbmRfbWF5YmVfc3BhY2U6
CisgICAgbWF5YmVfc3BhY2UgeworICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyRW5kKCk7
CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVCb2R5U3RhcnQoKTsKKyAgICB9CisgICAgOworCiti
ZWZvcmVfaW1wb3J0X3J1bGU6CisgICAgLyogZW1wdHkgKi8geworICAgICAgICBwYXJzZXItPm1h
cmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6OklNUE9SVF9SVUxFKTsKKyAgICB9
CisgICAgOworCitpbXBvcnQ6CisgICAgYmVmb3JlX2ltcG9ydF9ydWxlIElNUE9SVF9TWU0gYXRf
aW1wb3J0X2hlYWRlcl9lbmRfbWF5YmVfc3BhY2Ugc3RyaW5nX29yX3VyaSBtYXliZV9zcGFjZSBt
YXliZV9tZWRpYV9saXN0ICc7JyB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVJbXBvcnRS
dWxlKCQ0LCAkNik7CisgICAgfQorICB8IGJlZm9yZV9pbXBvcnRfcnVsZSBJTVBPUlRfU1lNIGF0
X2ltcG9ydF9oZWFkZXJfZW5kX21heWJlX3NwYWNlIHN0cmluZ19vcl91cmkgbWF5YmVfc3BhY2Ug
bWF5YmVfbWVkaWFfbGlzdCBUT0tFTl9FT0YgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRl
SW1wb3J0UnVsZSgkNCwgJDYpOworICAgIH0KKyAgfCBiZWZvcmVfaW1wb3J0X3J1bGUgSU1QT1JU
X1NZTSBhdF9pbXBvcnRfaGVhZGVyX2VuZF9tYXliZV9zcGFjZSBzdHJpbmdfb3JfdXJpIG1heWJl
X3NwYWNlIG1heWJlX21lZGlhX2xpc3QgaW52YWxpZF9ibG9jayB7CisgICAgICAgICQkID0gMDsK
KyAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOworICAgIH0KKyAgfCBiZWZvcmVfaW1wb3J0
X3J1bGUgSU1QT1JUX1NZTSBlcnJvciAnOycgeworICAgICAgICAkJCA9IDA7CisgICAgICAgIHBh
cnNlci0+cG9wUnVsZURhdGEoKTsKKyAgICB9CisgIHwgYmVmb3JlX2ltcG9ydF9ydWxlIElNUE9S
VF9TWU0gZXJyb3IgaW52YWxpZF9ibG9jayB7CisgICAgICAgICQkID0gMDsKKyAgICAgICAgcGFy
c2VyLT5wb3BSdWxlRGF0YSgpOworICAgIH0KKyAgOworCituYW1lc3BhY2U6CitOQU1FU1BBQ0Vf
U1lNIG1heWJlX3NwYWNlIG1heWJlX25zX3ByZWZpeCBzdHJpbmdfb3JfdXJpIG1heWJlX3NwYWNl
ICc7JyB7CisgICAgcGFyc2VyLT5hZGROYW1lc3BhY2UoJDMsICQ0KTsKKyAgICAkJCA9IDA7Cit9
Cit8IE5BTUVTUEFDRV9TWU0gbWF5YmVfc3BhY2UgbWF5YmVfbnNfcHJlZml4IHN0cmluZ19vcl91
cmkgbWF5YmVfc3BhY2UgaW52YWxpZF9ibG9jayB7CisgICAgJCQgPSAwOworfQorfCBOQU1FU1BB
Q0VfU1lNIGVycm9yIGludmFsaWRfYmxvY2sgeworICAgICQkID0gMDsKK30KK3wgTkFNRVNQQUNF
X1NZTSBlcnJvciAnOycgeworICAgICQkID0gMDsKK30KKzsKKworbWF5YmVfbnNfcHJlZml4Ogor
LyogZW1wdHkgKi8geyAkJC5jbGVhcigpOyB9Cit8IElERU5UIG1heWJlX3NwYWNlIHsgJCQgPSAk
MTsgfQorOworCitzdHJpbmdfb3JfdXJpOgorU1RSSU5HCit8IFVSSQorOworCittZWRpYV9mZWF0
dXJlOgorICAgIElERU5UIG1heWJlX3NwYWNlIHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9Cisg
ICAgOworCittYXliZV9tZWRpYV92YWx1ZToKKyAgICAvKmVtcHR5Ki8geworICAgICAgICAkJCA9
IDA7CisgICAgfQorICAgIHwgJzonIG1heWJlX3NwYWNlIGV4cHIgbWF5YmVfc3BhY2UgeworICAg
ICAgICAkJCA9ICQzOworICAgIH0KKyAgICA7CisKK21lZGlhX3F1ZXJ5X2V4cDoKKyAgICBtYXli
ZV9tZWRpYV9yZXN0cmljdG9yIG1heWJlX3NwYWNlICcoJyBtYXliZV9zcGFjZSBtZWRpYV9mZWF0
dXJlIG1heWJlX3NwYWNlIG1heWJlX21lZGlhX3ZhbHVlICcpJyBtYXliZV9zcGFjZSB7CisgICAg
ICAgIC8vIElmIHJlc3RyaWN0b3IgaXMgc3BlY2lmaWVkLCBtZWRpYSBxdWVyeSBleHByZXNzaW9u
IGlzIGludmFsaWQuCisgICAgICAgIC8vIENyZWF0ZSBlbXB0eSBtZWRpYSBxdWVyeSBleHByZXNz
aW9uIGFuZCBjb250aW51ZSBwYXJzaW5nIG1lZGlhIHF1ZXJ5LgorICAgICAgICBpZiAoJDEgIT0g
TWVkaWFRdWVyeTo6Tm9uZSkKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGlu
Z01lZGlhUXVlcnlFeHAoIiIsIDApOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICQ1Lmxv
d2VyKCk7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5
RXhwKCQ1LCAkNyk7CisgICAgICAgIH0KKyAgICB9CisgICAgOworCittZWRpYV9xdWVyeV9leHBf
bGlzdDoKKyAgICBtZWRpYV9xdWVyeV9leHAgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRl
RmxvYXRpbmdNZWRpYVF1ZXJ5RXhwTGlzdCgpOworICAgICAgICAkJC0+YXBwZW5kKHBhcnNlci0+
c2lua0Zsb2F0aW5nTWVkaWFRdWVyeUV4cCgkMSkpOworICAgIH0KKyAgICB8IG1lZGlhX3F1ZXJ5
X2V4cF9saXN0IG1heWJlX3NwYWNlIE1FRElBX0FORCBtYXliZV9zcGFjZSBtZWRpYV9xdWVyeV9l
eHAgeworICAgICAgICAkJCA9ICQxOworICAgICAgICAkJC0+YXBwZW5kKHBhcnNlci0+c2lua0Zs
b2F0aW5nTWVkaWFRdWVyeUV4cCgkNSkpOworICAgIH0KKyAgICA7CisKK21heWJlX2FuZF9tZWRp
YV9xdWVyeV9leHBfbGlzdDoKKyAgICAvKmVtcHR5Ki8geworICAgICAgICAkJCA9IHBhcnNlci0+
Y3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwTGlzdCgpOworICAgIH0KKyAgICB8IE1FRElBX0FO
RCBtYXliZV9zcGFjZSBtZWRpYV9xdWVyeV9leHBfbGlzdCB7CisgICAgICAgICQkID0gJDM7Cisg
ICAgfQorICAgIDsKKworbWF5YmVfbWVkaWFfcmVzdHJpY3RvcjoKKyAgICAvKmVtcHR5Ki8gewor
ICAgICAgICAkJCA9IE1lZGlhUXVlcnk6Ok5vbmU7CisgICAgfQorICAgIHwgTUVESUFfT05MWSB7
CisgICAgICAgICQkID0gTWVkaWFRdWVyeTo6T25seTsKKyAgICB9CisgICAgfCBNRURJQV9OT1Qg
eworICAgICAgICAkJCA9IE1lZGlhUXVlcnk6Ok5vdDsKKyAgICB9CisgICAgOworCittZWRpYV9x
dWVyeToKKyAgICBtZWRpYV9xdWVyeV9leHBfbGlzdCB7CisgICAgICAgICQkID0gcGFyc2VyLT5j
cmVhdGVGbG9hdGluZ01lZGlhUXVlcnkocGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5RXhw
TGlzdCgkMSkpOworICAgIH0KKyAgICB8CisgICAgbWF5YmVfbWVkaWFfcmVzdHJpY3RvciBtYXli
ZV9zcGFjZSBtZWRpdW0gbWF5YmVfYW5kX21lZGlhX3F1ZXJ5X2V4cF9saXN0IHsKKyAgICAgICAg
JDMubG93ZXIoKTsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVy
eSgkMSwgJDMsIHBhcnNlci0+c2lua0Zsb2F0aW5nTWVkaWFRdWVyeUV4cExpc3QoJDQpKTsKKyAg
ICB9CisgICAgOworCittYXliZV9tZWRpYV9saXN0OgorICAgICAvKiBlbXB0eSAqLyB7CisgICAg
ICAgICQkID0gcGFyc2VyLT5jcmVhdGVNZWRpYVF1ZXJ5U2V0KCk7CisgICAgIH0KKyAgICAgfCBt
ZWRpYV9saXN0CisgICAgIDsKKworbWVkaWFfbGlzdDoKKyAgICBtZWRpYV9xdWVyeSB7CisgICAg
ICAgICQkID0gcGFyc2VyLT5jcmVhdGVNZWRpYVF1ZXJ5U2V0KCk7CisgICAgICAgICQkLT5hZGRN
ZWRpYVF1ZXJ5KHBhcnNlci0+c2lua0Zsb2F0aW5nTWVkaWFRdWVyeSgkMSkpOworICAgICAgICBw
YXJzZXItPnVwZGF0ZUxhc3RNZWRpYUxpbmUoJCQpOworICAgIH0KKyAgICB8IG1lZGlhX2xpc3Qg
JywnIG1heWJlX3NwYWNlIG1lZGlhX3F1ZXJ5IHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICAgICAg
aWYgKCQkKSB7CisgICAgICAgICAgICAkJC0+YWRkTWVkaWFRdWVyeShwYXJzZXItPnNpbmtGbG9h
dGluZ01lZGlhUXVlcnkoJDQpKTsKKyAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlTGFzdE1lZGlh
TGluZSgkJCk7CisgICAgICAgIH0KKyAgICB9CisgICAgfCBtZWRpYV9saXN0IGVycm9yIHsKKyAg
ICAgICAgJCQgPSAwOworICAgIH0KKyAgICA7CisKK2F0X3J1bGVfYm9keV9zdGFydDoKKyAgICAv
KiBlbXB0eSAqLyB7CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVCb2R5U3RhcnQoKTsKKyAgICB9
CisgICAgOworCitiZWZvcmVfbWVkaWFfcnVsZToKKyAgICAvKiBlbXB0eSAqLyB7CisgICAgICAg
IHBhcnNlci0+bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6TUVESUFfUlVM
RSk7CisgICAgfQorICAgIDsKKworYXRfcnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlOgorICAg
IG1heWJlX3NwYWNlIHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlckVuZCgpOworICAg
IH0KKyAgICA7CisKK21lZGlhOgorICAgIGJlZm9yZV9tZWRpYV9ydWxlIE1FRElBX1NZTSBtYXli
ZV9zcGFjZSBtZWRpYV9saXN0IGF0X3J1bGVfaGVhZGVyX2VuZCAneycgYXRfcnVsZV9ib2R5X3N0
YXJ0IG1heWJlX3NwYWNlIGJsb2NrX3J1bGVfbGlzdCBzYXZlX2Jsb2NrIHsKKyAgICAgICAgJCQg
PSBwYXJzZXItPmNyZWF0ZU1lZGlhUnVsZSgkNCwgJDkpOworICAgIH0KKyAgICB8IGJlZm9yZV9t
ZWRpYV9ydWxlIE1FRElBX1NZTSBhdF9ydWxlX2hlYWRlcl9lbmRfbWF5YmVfc3BhY2UgJ3snIGF0
X3J1bGVfYm9keV9zdGFydCBtYXliZV9zcGFjZSBibG9ja19ydWxlX2xpc3Qgc2F2ZV9ibG9jayB7
CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVNZWRpYVJ1bGUoMCwgJDcpOworICAgIH0KKyAg
ICB8IGJlZm9yZV9tZWRpYV9ydWxlIE1FRElBX1NZTSBhdF9ydWxlX2hlYWRlcl9lbmRfbWF5YmVf
c3BhY2UgJzsnIHsKKyAgICAgICAgJCQgPSAwOworICAgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRh
KCk7CisgICAgfQorICAgIDsKKworbWVkaXVtOgorICBJREVOVCBtYXliZV9zcGFjZSB7CisgICAg
ICAkJCA9ICQxOworICB9CisgIDsKKworYmVmb3JlX2tleWZyYW1lc19ydWxlOgorICAgIC8qIGVt
cHR5ICovIHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3Vy
Y2VEYXRhOjpLRVlGUkFNRVNfUlVMRSk7CisgICAgfQorICAgIDsKKwora2V5ZnJhbWVzOgorICAg
IGJlZm9yZV9rZXlmcmFtZXNfcnVsZSBXRUJLSVRfS0VZRlJBTUVTX1NZTSBtYXliZV9zcGFjZSBr
ZXlmcmFtZV9uYW1lIGF0X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9zcGFjZSAneycgYXRfcnVsZV9i
b2R5X3N0YXJ0IG1heWJlX3NwYWNlIGtleWZyYW1lc19ydWxlIGNsb3NpbmdfYnJhY2UgeworICAg
ICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlS2V5ZnJhbWVzUnVsZSgkNCwgcGFyc2VyLT5zaW5rRmxv
YXRpbmdLZXlmcmFtZVZlY3RvcigkOSkpOworICAgIH0KKyAgICA7CisgIAora2V5ZnJhbWVfbmFt
ZToKKyAgICBJREVOVAorICAgIHwgU1RSSU5HCisgICAgOworCitrZXlmcmFtZXNfcnVsZToKKyAg
ICAvKiBlbXB0eSAqLyB7ICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0tleWZyYW1lVmVjdG9y
KCk7IH0KKyAgICB8IGtleWZyYW1lc19ydWxlIGtleWZyYW1lX3J1bGUgbWF5YmVfc3BhY2Ugewor
ICAgICAgICAkJCA9ICQxOworICAgICAgICBpZiAoJDIpCisgICAgICAgICAgICAkJC0+YXBwZW5k
KCQyKTsKKyAgICB9CisgICAgOworCitrZXlmcmFtZV9ydWxlOgorICAgIGtleV9saXN0IG1heWJl
X3NwYWNlICd7JyBtYXliZV9zcGFjZSBkZWNsYXJhdGlvbl9saXN0ICd9JyB7CisgICAgICAgICQk
ID0gcGFyc2VyLT5jcmVhdGVLZXlmcmFtZSgkMSk7CisgICAgfQorICAgIDsKKwora2V5X2xpc3Q6
CisgICAga2V5IHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nVmFsdWVMaXN0
KCk7CisgICAgICAgICQkLT5hZGRWYWx1ZShwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlKCQxKSk7
CisgICAgfQorICAgIHwga2V5X2xpc3QgbWF5YmVfc3BhY2UgJywnIG1heWJlX3NwYWNlIGtleSB7
CisgICAgICAgICQkID0gJDE7CisgICAgICAgIGlmICgkJCkKKyAgICAgICAgICAgICQkLT5hZGRW
YWx1ZShwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlKCQ1KSk7CisgICAgfQorICAgIDsKKwora2V5
OgorICAgIG1heWJlX3VuYXJ5X29wZXJhdG9yIFBFUkNFTlRBR0UgeyAkJC5pZCA9IDA7ICQkLmlz
SW50ID0gZmFsc2U7ICQkLmZWYWx1ZSA9ICQxICogJDI7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX05VTUJFUjsgfQorICAgIHwgSURFTlQgeworICAgICAgICAkJC5pZCA9IDA7ICQk
LmlzSW50ID0gZmFsc2U7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjsK
KyAgICAgICAgQ1NTUGFyc2VyU3RyaW5nJiBzdHIgPSAkMTsKKyAgICAgICAgaWYgKHN0ci5lcXVh
bElnbm9yaW5nQ2FzZSgiZnJvbSIpKQorICAgICAgICAgICAgJCQuZlZhbHVlID0gMDsKKyAgICAg
ICAgZWxzZSBpZiAoc3RyLmVxdWFsSWdub3JpbmdDYXNlKCJ0byIpKQorICAgICAgICAgICAgJCQu
ZlZhbHVlID0gMTAwOworICAgICAgICBlbHNlCisgICAgICAgICAgICBZWUVSUk9SOworICAgIH0K
KyAgICA7CisKK2JlZm9yZV9wYWdlX3J1bGU6CisgICAgLyogZW1wdHkgKi8geworICAgICAgICBw
YXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6OlBBR0VfUlVMRSk7
CisgICAgfQorICAgIDsKKworcGFnZToKKyAgICBiZWZvcmVfcGFnZV9ydWxlIFBBR0VfU1lNIG1h
eWJlX3NwYWNlIHBhZ2Vfc2VsZWN0b3IgYXRfcnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlCisg
ICAgJ3snIGF0X3J1bGVfYm9keV9zdGFydCBtYXliZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRpb24g
ZGVjbGFyYXRpb25zX2FuZF9tYXJnaW5zIGNsb3NpbmdfYnJhY2UgeworICAgICAgICBpZiAoJDQp
CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlUGFnZVJ1bGUocGFyc2VyLT5zaW5rRmxv
YXRpbmdTZWxlY3RvcigkNCkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIENsZWFy
IHByb3BlcnRpZXMgaW4gdGhlIGludmFsaWQgQHBhZ2UgcnVsZS4KKyAgICAgICAgICAgIHBhcnNl
ci0+Y2xlYXJQcm9wZXJ0aWVzKCk7CisgICAgICAgICAgICAvLyBBbHNvIGNsZWFyIG1hcmdpbiBh
dC1ydWxlcyBoZXJlIG9uY2Ugd2UgZnVsbHkgaW1wbGVtZW50IG1hcmdpbiBhdC1ydWxlcyBwYXJz
aW5nLgorICAgICAgICAgICAgJCQgPSAwOworICAgICAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0
YSgpOworICAgICAgICB9CisgICAgfQorICAgIHwgYmVmb3JlX3BhZ2VfcnVsZSBQQUdFX1NZTSBl
cnJvciBpbnZhbGlkX2Jsb2NrIHsKKyAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKKyAgICAg
ICQkID0gMDsKKyAgICB9CisgICAgfCBiZWZvcmVfcGFnZV9ydWxlIFBBR0VfU1lNIGVycm9yICc7
JyB7CisgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7CisgICAgICAkJCA9IDA7CisgICAgfQor
ICAgIDsKKworcGFnZV9zZWxlY3RvcjoKKyAgICBJREVOVCB7CisgICAgICAgICQkID0gcGFyc2Vy
LT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRUYWcoUXVhbGlmaWVk
TmFtZShudWxsQXRvbSwgJDEsIHBhcnNlci0+bV9kZWZhdWx0TmFtZXNwYWNlKSk7CisgICAgICAg
ICQkLT5zZXRGb3JQYWdlKCk7CisgICAgfQorICAgIHwgSURFTlQgcHNldWRvX3BhZ2UgeworICAg
ICAgICAkJCA9ICQyOworICAgICAgICBpZiAoJCQpIHsKKyAgICAgICAgICAgICQkLT5zZXRUYWco
UXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDEsIHBhcnNlci0+bV9kZWZhdWx0TmFtZXNwYWNlKSk7
CisgICAgICAgICAgICAkJC0+c2V0Rm9yUGFnZSgpOworICAgICAgICB9CisgICAgfQorICAgIHwg
cHNldWRvX3BhZ2UgeworICAgICAgICAkJCA9ICQxOworICAgICAgICBpZiAoJCQpCisgICAgICAg
ICAgICAkJC0+c2V0Rm9yUGFnZSgpOworICAgIH0KKyAgICB8IC8qIGVtcHR5ICovIHsKKyAgICAg
ICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNl
dEZvclBhZ2UoKTsKKyAgICB9CisgICAgOworCitkZWNsYXJhdGlvbnNfYW5kX21hcmdpbnM6Cisg
ICAgZGVjbGFyYXRpb25fbGlzdAorICAgIHwgZGVjbGFyYXRpb25zX2FuZF9tYXJnaW5zIG1hcmdp
bl9ib3ggbWF5YmVfc3BhY2UgZGVjbGFyYXRpb25fbGlzdAorICAgIDsKKworbWFyZ2luX2JveDoK
KyAgICBtYXJnaW5fc3ltIHsKKyAgICAgICAgcGFyc2VyLT5zdGFydERlY2xhcmF0aW9uc0Zvck1h
cmdpbkJveCgpOworICAgIH0gbWF5YmVfc3BhY2UgJ3snIG1heWJlX3NwYWNlIGRlY2xhcmF0aW9u
X2xpc3QgY2xvc2luZ19icmFjZSB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVNYXJnaW5B
dFJ1bGUoJDEpOworICAgIH0KKyAgICA7CisKK21hcmdpbl9zeW0gOgorICAgIFRPUExFRlRDT1JO
RVJfU1lNIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6VG9wTGVmdENvcm5lck1hcmdpbkJv
eDsKKyAgICB9CisgICAgfCBUT1BMRUZUX1NZTSB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6
OlRvcExlZnRNYXJnaW5Cb3g7CisgICAgfQorICAgIHwgVE9QQ0VOVEVSX1NZTSB7CisgICAgICAg
ICQkID0gQ1NTU2VsZWN0b3I6OlRvcENlbnRlck1hcmdpbkJveDsKKyAgICB9CisgICAgfCBUT1BS
SUdIVF9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpUb3BSaWdodE1hcmdpbkJveDsK
KyAgICB9CisgICAgfCBUT1BSSUdIVENPUk5FUl9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVj
dG9yOjpUb3BSaWdodENvcm5lck1hcmdpbkJveDsKKyAgICB9CisgICAgfCBCT1RUT01MRUZUQ09S
TkVSX1NZTSB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkJvdHRvbUxlZnRDb3JuZXJNYXJn
aW5Cb3g7CisgICAgfQorICAgIHwgQk9UVE9NTEVGVF9TWU0geworICAgICAgICAkJCA9IENTU1Nl
bGVjdG9yOjpCb3R0b21MZWZ0TWFyZ2luQm94OworICAgIH0KKyAgICB8IEJPVFRPTUNFTlRFUl9T
WU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpCb3R0b21DZW50ZXJNYXJnaW5Cb3g7Cisg
ICAgfQorICAgIHwgQk9UVE9NUklHSFRfU1lNIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6
Qm90dG9tUmlnaHRNYXJnaW5Cb3g7CisgICAgfQorICAgIHwgQk9UVE9NUklHSFRDT1JORVJfU1lN
IHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6Qm90dG9tUmlnaHRDb3JuZXJNYXJnaW5Cb3g7
CisgICAgfQorICAgIHwgTEVGVFRPUF9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpM
ZWZ0VG9wTWFyZ2luQm94OworICAgIH0KKyAgICB8IExFRlRNSURETEVfU1lNIHsKKyAgICAgICAg
JCQgPSBDU1NTZWxlY3Rvcjo6TGVmdE1pZGRsZU1hcmdpbkJveDsKKyAgICB9CisgICAgfCBMRUZU
Qk9UVE9NX1NZTSB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkxlZnRCb3R0b21NYXJnaW5C
b3g7CisgICAgfQorICAgIHwgUklHSFRUT1BfU1lNIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rv
cjo6UmlnaHRUb3BNYXJnaW5Cb3g7CisgICAgfQorICAgIHwgUklHSFRNSURETEVfU1lNIHsKKyAg
ICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6UmlnaHRNaWRkbGVNYXJnaW5Cb3g7CisgICAgfQorICAg
IHwgUklHSFRCT1RUT01fU1lNIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6UmlnaHRCb3R0
b21NYXJnaW5Cb3g7CisgICAgfQorICAgIDsKKworYmVmb3JlX2ZvbnRfZmFjZV9ydWxlOgorICAg
IC8qIGVtcHR5ICovIHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1
bGVTb3VyY2VEYXRhOjpGT05UX0ZBQ0VfUlVMRSk7CisgICAgfQorICAgIDsKKworZm9udF9mYWNl
OgorICAgIGJlZm9yZV9mb250X2ZhY2VfcnVsZSBGT05UX0ZBQ0VfU1lNIGF0X3J1bGVfaGVhZGVy
X2VuZF9tYXliZV9zcGFjZQorICAgICd7JyBhdF9ydWxlX2JvZHlfc3RhcnQgbWF5YmVfc3BhY2Vf
YmVmb3JlX2RlY2xhcmF0aW9uIGRlY2xhcmF0aW9uX2xpc3QgY2xvc2luZ19icmFjZSB7CisgICAg
ICAgICQkID0gcGFyc2VyLT5jcmVhdGVGb250RmFjZVJ1bGUoKTsKKyAgICB9CisgICAgfCBiZWZv
cmVfZm9udF9mYWNlX3J1bGUgRk9OVF9GQUNFX1NZTSBlcnJvciBpbnZhbGlkX2Jsb2NrIHsKKyAg
ICAgICQkID0gMDsKKyAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKKyAgICB9CisgICAgfCBi
ZWZvcmVfZm9udF9mYWNlX3J1bGUgRk9OVF9GQUNFX1NZTSBlcnJvciAnOycgeworICAgICAgJCQg
PSAwOworICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOworICAgIH0KKzsKKworcmVnaW9uX3Nl
bGVjdG9yOgorICAgIHNlbGVjdG9yX2xpc3QgeworICAgICAgICBpZiAoJDEpIHsKKyAgICAgICAg
ICAgIHBhcnNlci0+c2V0UmV1c2FibGVSZWdpb25TZWxlY3RvclZlY3RvcigkMSk7CisgICAgICAg
ICAgICAkJCA9IHBhcnNlci0+cmV1c2FibGVSZWdpb25TZWxlY3RvclZlY3RvcigpOworICAgICAg
ICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICQkID0gMDsKKyAgICB9Cis7CisKK2JlZm9y
ZV9yZWdpb25fcnVsZToKKyAgICAvKiBlbXB0eSAqLyB7CisgICAgICAgIHBhcnNlci0+bWFya1J1
bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6UkVHSU9OX1JVTEUpOworICAgIH0KKyAg
ICA7CisKK3JlZ2lvbjoKKyAgICBiZWZvcmVfcmVnaW9uX3J1bGUgV0VCS0lUX1JFR0lPTl9SVUxF
X1NZTSBXSElURVNQQUNFIHJlZ2lvbl9zZWxlY3RvciBhdF9ydWxlX2hlYWRlcl9lbmQgJ3snIGF0
X3J1bGVfYm9keV9zdGFydCBtYXliZV9zcGFjZSBibG9ja19ydWxlX2xpc3Qgc2F2ZV9ibG9jayB7
CisgICAgICAgIGlmICgkNCkKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVSZWdpb25S
dWxlKCQ0LCAkOSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgJCQgPSAwOworICAgICAg
ICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOworICAgICAgICB9CisgICAgfQorOworCitjb21i
aW5hdG9yOgorICAgICcrJyBtYXliZV9zcGFjZSB7ICQkID0gQ1NTU2VsZWN0b3I6OkRpcmVjdEFk
amFjZW50OyB9CisgIHwgJ34nIG1heWJlX3NwYWNlIHsgJCQgPSBDU1NTZWxlY3Rvcjo6SW5kaXJl
Y3RBZGphY2VudDsgfQorICB8ICc+JyBtYXliZV9zcGFjZSB7ICQkID0gQ1NTU2VsZWN0b3I6OkNo
aWxkOyB9CisgIDsKKworbWF5YmVfdW5hcnlfb3BlcmF0b3I6CisgICAgdW5hcnlfb3BlcmF0b3Ig
eyAkJCA9ICQxOyB9CisgICAgfCB7ICQkID0gMTsgfQorICAgIDsKKwordW5hcnlfb3BlcmF0b3I6
CisgICAgJy0nIHsgJCQgPSAtMTsgfQorICB8ICcrJyB7ICQkID0gMTsgfQorICA7CisKK21heWJl
X3NwYWNlX2JlZm9yZV9kZWNsYXJhdGlvbjoKKyAgICBtYXliZV9zcGFjZSB7CisgICAgICAgIHBh
cnNlci0+bWFya1Byb3BlcnR5U3RhcnQoKTsKKyAgICB9CisgIDsKKworYmVmb3JlX3NlbGVjdG9y
X2xpc3Q6CisgICAgLyogZW1wdHkgKi8geworICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVy
U3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6OlNUWUxFX1JVTEUpOworICAgIH0KKyAgOworCithdF9y
dWxlX2hlYWRlcl9lbmQ6CisgICAgLyogZW1wdHkgKi8geworICAgICAgICBwYXJzZXItPm1hcmtS
dWxlSGVhZGVyRW5kKCk7CisgICAgfQorICA7CisKK3J1bGVzZXQ6CisgICAgYmVmb3JlX3NlbGVj
dG9yX2xpc3Qgc2VsZWN0b3JfbGlzdCBhdF9ydWxlX2hlYWRlcl9lbmQgJ3snIGF0X3J1bGVfYm9k
eV9zdGFydCBtYXliZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRpb24gZGVjbGFyYXRpb25fbGlzdCBj
bG9zaW5nX2JyYWNlIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZVN0eWxlUnVsZSgkMik7
CisgICAgfQorICA7CisKK3NlbGVjdG9yX2xpc3Q6CisgICAgc2VsZWN0b3IgJXByZWMgVU5JTVBP
UlRBTlRfVE9LIHsKKyAgICAgICAgaWYgKCQxKSB7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+
c2VsZWN0b3JWZWN0b3IoKTsKKyAgICAgICAgICAgICQkLT5zaHJpbmsoMCk7CisgICAgICAgICAg
ICAkJC0+YXBwZW5kKHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDEpKTsKKyAgICAgICAg
ICAgIHBhcnNlci0+dXBkYXRlTGFzdFNlbGVjdG9yTGluZUFuZFBvc2l0aW9uKCk7CisgICAgICAg
IH0KKyAgICB9CisgICAgfCBzZWxlY3Rvcl9saXN0ICcsJyBtYXliZV9zcGFjZSBzZWxlY3RvciAl
cHJlYyBVTklNUE9SVEFOVF9UT0sgeworICAgICAgICBpZiAoJDEgJiYgJDQpIHsKKyAgICAgICAg
ICAgICQkID0gJDE7CisgICAgICAgICAgICAkJC0+YXBwZW5kKHBhcnNlci0+c2lua0Zsb2F0aW5n
U2VsZWN0b3IoJDQpKTsKKyAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlTGFzdFNlbGVjdG9yTGlu
ZUFuZFBvc2l0aW9uKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgJCQgPSAwOworICAg
IH0KKyAgfCBzZWxlY3Rvcl9saXN0IGVycm9yIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKyAg
IDsKKworc2VsZWN0b3Jfd2l0aF90cmFpbGluZ193aGl0ZXNwYWNlOgorICAgIHNlbGVjdG9yIFdI
SVRFU1BBQ0UgeworICAgICAgICAkJCA9ICQxOworICAgIH0KKyAgICA7CisKK3NlbGVjdG9yOgor
ICAgIHNpbXBsZV9zZWxlY3RvciB7CisgICAgICAgICQkID0gJDE7CisgICAgfQorICAgIHwgc2Vs
ZWN0b3Jfd2l0aF90cmFpbGluZ193aGl0ZXNwYWNlCisgICAgeworICAgICAgICAkJCA9ICQxOwor
ICAgIH0KKyAgICB8IHNlbGVjdG9yX3dpdGhfdHJhaWxpbmdfd2hpdGVzcGFjZSBzaW1wbGVfc2Vs
ZWN0b3IKKyAgICB7CisgICAgICAgICQkID0gJDI7CisgICAgICAgIGlmICghJDEpCisgICAgICAg
ICAgICAkJCA9IDA7CisgICAgICAgIGVsc2UgaWYgKCQkKSB7CisgICAgICAgICAgICBDU1NQYXJz
ZXJTZWxlY3RvciogZW5kID0gJCQ7CisgICAgICAgICAgICB3aGlsZSAoZW5kLT50YWdIaXN0b3J5
KCkpCisgICAgICAgICAgICAgICAgZW5kID0gZW5kLT50YWdIaXN0b3J5KCk7CisgICAgICAgICAg
ICBlbmQtPnNldFJlbGF0aW9uKENTU1NlbGVjdG9yOjpEZXNjZW5kYW50KTsKKyAgICAgICAgICAg
IGVuZC0+c2V0VGFnSGlzdG9yeShwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQxKSk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgfCBzZWxlY3RvciBjb21iaW5hdG9yIHNpbXBsZV9zZWxlY3Rv
ciB7CisgICAgICAgICQkID0gJDM7CisgICAgICAgIGlmICghJDEpCisgICAgICAgICAgICAkJCA9
IDA7CisgICAgICAgIGVsc2UgaWYgKCQkKSB7CisgICAgICAgICAgICBDU1NQYXJzZXJTZWxlY3Rv
ciogZW5kID0gJCQ7CisgICAgICAgICAgICB3aGlsZSAoZW5kLT50YWdIaXN0b3J5KCkpCisgICAg
ICAgICAgICAgICAgZW5kID0gZW5kLT50YWdIaXN0b3J5KCk7CisgICAgICAgICAgICBlbmQtPnNl
dFJlbGF0aW9uKCQyKTsKKyAgICAgICAgICAgIGVuZC0+c2V0VGFnSGlzdG9yeShwYXJzZXItPnNp
bmtGbG9hdGluZ1NlbGVjdG9yKCQxKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgfCBzZWxlY3Rv
ciBlcnJvciB7CisgICAgICAgICQkID0gMDsKKyAgICB9CisgICAgOworCituYW1lc3BhY2Vfc2Vs
ZWN0b3I6CisgICAgLyogZW1wdHkgKi8gJ3wnIHsgJCQuY2xlYXIoKTsgfQorICAgIHwgJyonICd8
JyB7IHN0YXRpYyBMQ2hhciBzdGFyID0gJyonOyAkJC5pbml0KCZzdGFyLCAxKTsgfQorICAgIHwg
SURFTlQgJ3wnIHsgJCQgPSAkMTsgfQorOworICAgIAorc2ltcGxlX3NlbGVjdG9yOgorICAgIGVs
ZW1lbnRfbmFtZSB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9y
KCk7CisgICAgICAgICQkLT5zZXRUYWcoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDEsIHBhcnNl
ci0+bV9kZWZhdWx0TmFtZXNwYWNlKSk7CisgICAgfQorICAgIHwgZWxlbWVudF9uYW1lIHNwZWNp
Zmllcl9saXN0IHsKKyAgICAgICAgJCQgPSAkMjsKKyAgICAgICAgaWYgKCQkKQorICAgICAgICAg
ICAgcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKG51bGxBdG9tLCAkMSwg
JCQpOworICAgIH0KKyAgICB8IHNwZWNpZmllcl9saXN0IHsKKyAgICAgICAgJCQgPSAkMTsKKyAg
ICAgICAgaWYgKCQkKQorICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVs
ZW1lbnROYW1lKG51bGxBdG9tLCBzdGFyQXRvbSwgJCQpOworICAgIH0KKyAgICB8IG5hbWVzcGFj
ZV9zZWxlY3RvciBlbGVtZW50X25hbWUgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxv
YXRpbmdTZWxlY3RvcigpOworICAgICAgICAkJC0+c2V0VGFnKHBhcnNlci0+ZGV0ZXJtaW5lTmFt
ZUluTmFtZXNwYWNlKCQxLCAkMikpOworICAgIH0KKyAgICB8IG5hbWVzcGFjZV9zZWxlY3RvciBl
bGVtZW50X25hbWUgc3BlY2lmaWVyX2xpc3QgeworICAgICAgICAkJCA9ICQzOworICAgICAgICBp
ZiAoJCQpCisgICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5h
bWUoJDEsICQyLCAkJCk7CisgICAgfQorICAgIHwgbmFtZXNwYWNlX3NlbGVjdG9yIHNwZWNpZmll
cl9saXN0IHsKKyAgICAgICAgJCQgPSAkMjsKKyAgICAgICAgaWYgKCQkKQorICAgICAgICAgICAg
cGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKCQxLCBzdGFyQXRvbSwgJCQp
OworICAgIH0KKyAgOworCitzaW1wbGVfc2VsZWN0b3JfbGlzdDoKKyAgICBzaW1wbGVfc2VsZWN0
b3IgJXByZWMgVU5JTVBPUlRBTlRfVE9LIHsKKyAgICAgICAgaWYgKCQxKSB7CisgICAgICAgICAg
ICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvclZlY3RvcigpOworICAgICAgICAg
ICAgJCQtPmFwcGVuZChwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQxKSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgJCQgPSAwOworICAgIH0KKyAgICB8IHNpbXBsZV9zZWxlY3Rv
cl9saXN0IG1heWJlX3NwYWNlICcsJyBtYXliZV9zcGFjZSBzaW1wbGVfc2VsZWN0b3IgJXByZWMg
VU5JTVBPUlRBTlRfVE9LIHsKKyAgICAgICAgaWYgKCQxICYmICQ1KSB7CisgICAgICAgICAgICAk
JCA9ICQxOworICAgICAgICAgICAgJCQtPmFwcGVuZChwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVj
dG9yKCQ1KSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgJCQgPSAwOworICAgIH0KKyAg
ICB8IHNpbXBsZV9zZWxlY3Rvcl9saXN0IGVycm9yIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0K
KyAgOworCitlbGVtZW50X25hbWU6CisgICAgSURFTlQgeworICAgICAgICBDU1NQYXJzZXJTdHJp
bmcmIHN0ciA9ICQxOworICAgICAgICBpZiAocGFyc2VyLT5tX2NvbnRleHQuaXNIVE1MRG9jdW1l
bnQpCisgICAgICAgICAgICBzdHIubG93ZXIoKTsKKyAgICAgICAgJCQgPSBzdHI7CisgICAgfQor
ICAgIHwgJyonIHsKKyAgICAgICAgc3RhdGljIExDaGFyIHN0YXIgPSAnKic7CisgICAgICAgICQk
LmluaXQoJnN0YXIsIDEpOworICAgIH0KKyAgOworCitzcGVjaWZpZXJfbGlzdDoKKyAgICBzcGVj
aWZpZXIgeworICAgICAgICAkJCA9ICQxOworICAgIH0KKyAgICB8IHNwZWNpZmllcl9saXN0IHNw
ZWNpZmllciB7CisgICAgICAgIGlmICghJDIpCisgICAgICAgICAgICAkJCA9IDA7CisgICAgICAg
IGVsc2UgaWYgKCQxKQorICAgICAgICAgICAgJCQgPSBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnMo
JDEsICQyKTsKKyAgICB9CisgICAgfCBzcGVjaWZpZXJfbGlzdCBlcnJvciB7CisgICAgICAgICQk
ID0gMDsKKyAgICB9Cis7CisKK3NwZWNpZmllcjoKKyAgICBJRFNFTCB7CisgICAgICAgICQkID0g
cGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRNYXRjaChD
U1NTZWxlY3Rvcjo6SWQpOworICAgICAgICBpZiAocGFyc2VyLT5tX2NvbnRleHQubW9kZSA9PSBD
U1NRdWlya3NNb2RlKQorICAgICAgICAgICAgJDEubG93ZXIoKTsKKyAgICAgICAgJCQtPnNldFZh
bHVlKCQxKTsKKyAgICB9CisgIHwgSEVYIHsKKyAgICAgICAgaWYgKCQxWzBdID49ICcwJyAmJiAk
MVswXSA8PSAnOScpIHsKKyAgICAgICAgICAgICQkID0gMDsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAg
ICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OklkKTsKKyAgICAgICAgICAgIGlmIChwYXJz
ZXItPm1fY29udGV4dC5tb2RlID09IENTU1F1aXJrc01vZGUpCisgICAgICAgICAgICAgICAgJDEu
bG93ZXIoKTsKKyAgICAgICAgICAgICQkLT5zZXRWYWx1ZSgkMSk7CisgICAgICAgIH0KKyAgICB9
CisgIHwgY2xhc3MKKyAgfCBhdHRyaWIKKyAgfCBwc2V1ZG8KKyAgICA7CisKK2NsYXNzOgorICAg
ICcuJyBJREVOVCB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9y
KCk7CisgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6Q2xhc3MpOworICAgICAgICBp
ZiAocGFyc2VyLT5tX2NvbnRleHQubW9kZSA9PSBDU1NRdWlya3NNb2RlKQorICAgICAgICAgICAg
JDIubG93ZXIoKTsKKyAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsKKyAgICB9CisgIDsKKworYXR0
cl9uYW1lOgorICAgIElERU5UIG1heWJlX3NwYWNlIHsKKyAgICAgICAgQ1NTUGFyc2VyU3RyaW5n
JiBzdHIgPSAkMTsKKyAgICAgICAgaWYgKHBhcnNlci0+bV9jb250ZXh0LmlzSFRNTERvY3VtZW50
KQorICAgICAgICAgICAgc3RyLmxvd2VyKCk7CisgICAgICAgICQkID0gc3RyOworICAgIH0KKyAg
ICA7CisKK2F0dHJpYjoKKyAgICAnWycgbWF5YmVfc3BhY2UgYXR0cl9uYW1lICddJyB7CisgICAg
ICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5z
ZXRBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDMsIG51bGxBdG9tKSk7CisgICAg
ICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6U2V0KTsKKyAgICB9CisgICAgfCAnWycgbWF5
YmVfc3BhY2UgYXR0cl9uYW1lIG1hdGNoIG1heWJlX3NwYWNlIGlkZW50X29yX3N0cmluZyBtYXli
ZV9zcGFjZSAnXScgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3Rv
cigpOworICAgICAgICAkJC0+c2V0QXR0cmlidXRlKFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQz
LCBudWxsQXRvbSkpOworICAgICAgICAkJC0+c2V0TWF0Y2goKENTU1NlbGVjdG9yOjpNYXRjaCkk
NCk7CisgICAgICAgICQkLT5zZXRWYWx1ZSgkNik7CisgICAgfQorICAgIHwgJ1snIG1heWJlX3Nw
YWNlIG5hbWVzcGFjZV9zZWxlY3RvciBhdHRyX25hbWUgJ10nIHsKKyAgICAgICAgJCQgPSBwYXJz
ZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldEF0dHJpYnV0ZShw
YXJzZXItPmRldGVybWluZU5hbWVJbk5hbWVzcGFjZSgkMywgJDQpKTsKKyAgICAgICAgJCQtPnNl
dE1hdGNoKENTU1NlbGVjdG9yOjpTZXQpOworICAgIH0KKyAgICB8ICdbJyBtYXliZV9zcGFjZSBu
YW1lc3BhY2Vfc2VsZWN0b3IgYXR0cl9uYW1lIG1hdGNoIG1heWJlX3NwYWNlIGlkZW50X29yX3N0
cmluZyBtYXliZV9zcGFjZSAnXScgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRp
bmdTZWxlY3RvcigpOworICAgICAgICAkJC0+c2V0QXR0cmlidXRlKHBhcnNlci0+ZGV0ZXJtaW5l
TmFtZUluTmFtZXNwYWNlKCQzLCAkNCkpOworICAgICAgICAkJC0+c2V0TWF0Y2goKENTU1NlbGVj
dG9yOjpNYXRjaCkkNSk7CisgICAgICAgICQkLT5zZXRWYWx1ZSgkNyk7CisgICAgfQorICA7CisK
K21hdGNoOgorICAgICc9JyB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkV4YWN0OworICAg
IH0KKyAgICB8IElOQ0xVREVTIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6TGlzdDsKKyAg
ICB9CisgICAgfCBEQVNITUFUQ0ggeworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpIeXBoZW47
CisgICAgfQorICAgIHwgQkVHSU5TV0lUSCB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkJl
Z2luOworICAgIH0KKyAgICB8IEVORFNXSVRIIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6
RW5kOworICAgIH0KKyAgICB8IENPTlRBSU5TIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6
Q29udGFpbjsKKyAgICB9CisgICAgOworCitpZGVudF9vcl9zdHJpbmc6CisgICAgSURFTlQKKyAg
fCBTVFJJTkcKKyAgICA7CisKK3BzZXVkb19wYWdlOgorICAgICc6JyBJREVOVCB7CisgICAgICAg
ICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRN
YXRjaChDU1NTZWxlY3Rvcjo6UGFnZVBzZXVkb0NsYXNzKTsKKyAgICAgICAgJDIubG93ZXIoKTsK
KyAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsKKyAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5
cGUgdHlwZSA9ICQkLT5wc2V1ZG9UeXBlKCk7CisgICAgICAgIGlmICh0eXBlID09IENTU1NlbGVj
dG9yOjpQc2V1ZG9Vbmtub3duKQorICAgICAgICAgICAgJCQgPSAwOworICAgIH0KKworcHNldWRv
OgorICAgICc6JyBJREVOVCB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1Nl
bGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3Mp
OworICAgICAgICAkMi5sb3dlcigpOworICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOworICAgICAg
ICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUoKTsKKyAgICAg
ICAgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25vd24pCisgICAgICAgICAgICAk
JCA9IDA7CisgICAgfQorICAgIHwgJzonICc6JyBJREVOVCB7CisgICAgICAgICQkID0gcGFyc2Vy
LT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxl
Y3Rvcjo6UHNldWRvRWxlbWVudCk7CisgICAgICAgICQzLmxvd2VyKCk7CisgICAgICAgICQkLT5z
ZXRWYWx1ZSgkMyk7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNhbGwgaXMgbmVlZGVkIHRvIGZv
cmNlIHNlbGVjdG9yIHRvIGNvbXB1dGUgdGhlIHBzZXVkb1R5cGUgZWFybHkgZW5vdWdoLgorICAg
ICAgICAkJC0+cHNldWRvVHlwZSgpOworICAgIH0KKyAgICAvLyB1c2UgYnkgOi13ZWJraXQtYW55
LgorICAgIC8vIEZJWE1FOiBzaG91bGQgd2Ugc3VwcG9ydCBnZW5lcmljIHNlbGVjdG9ycyBoZXJl
IG9yIGp1c3Qgc2ltcGxlX3NlbGVjdG9ycz8KKyAgICAvLyBVc2Ugc2ltcGxlX3NlbGVjdG9yX2xp
c3QgZm9yIG5vdyB0byBtYXRjaCAtbW96LWFueS4KKyAgICAvLyBTZWUgaHR0cDovL2xpc3RzLncz
Lm9yZy9BcmNoaXZlcy9QdWJsaWMvd3d3LXN0eWxlLzIwMTBTZXAvMDU2Ni5odG1sIGZvciBzb21l
CisgICAgLy8gcmVsYXRlZCBkaXNjdXNzaW9uIHdpdGggcmVzcGVjdCB0byA6bm90LgorICAgIHwg
JzonIEFOWUZVTkNUSU9OIG1heWJlX3NwYWNlIHNpbXBsZV9zZWxlY3Rvcl9saXN0IG1heWJlX3Nw
YWNlICcpJyB7CisgICAgICAgIGlmICgkNCkgeworICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNy
ZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3MpOworICAgICAgICAgICAgJCQtPmFkb3B0U2VsZWN0b3JWZWN0b3Io
KnBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3JWZWN0b3IoJDQpKTsKKyAgICAgICAgICAgICQy
Lmxvd2VyKCk7CisgICAgICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOworICAgICAgICAgICAgQ1NT
U2VsZWN0b3I6OlBzZXVkb1R5cGUgdHlwZSA9ICQkLT5wc2V1ZG9UeXBlKCk7CisgICAgICAgICAg
ICBpZiAodHlwZSAhPSBDU1NTZWxlY3Rvcjo6UHNldWRvQW55KQorICAgICAgICAgICAgICAgICQk
ID0gMDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIC8v
IHVzZWQgYnkgOm50aC0qKGF4K2IpCisgICAgfCAnOicgRlVOQ1RJT04gbWF5YmVfc3BhY2UgTlRI
IG1heWJlX3NwYWNlICcpJyB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1Nl
bGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3Mp
OworICAgICAgICAkJC0+c2V0QXJndW1lbnQoJDQpOworICAgICAgICAkJC0+c2V0VmFsdWUoJDIp
OworICAgICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUo
KTsKKyAgICAgICAgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25vd24pCisgICAg
ICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIC8vIHVzZWQgYnkgOm50aC0qCisgICAgfCAnOicg
RlVOQ1RJT04gbWF5YmVfc3BhY2UgbWF5YmVfdW5hcnlfb3BlcmF0b3IgSU5URUdFUiBtYXliZV9z
cGFjZSAnKScgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3Rvcigp
OworICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKKyAgICAg
ICAgJCQtPnNldEFyZ3VtZW50KFN0cmluZzo6bnVtYmVyKCQ0ICogJDUpKTsKKyAgICAgICAgJCQt
PnNldFZhbHVlKCQyKTsKKyAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgdHlwZSA9ICQk
LT5wc2V1ZG9UeXBlKCk7CisgICAgICAgIGlmICh0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9V
bmtub3duKQorICAgICAgICAgICAgJCQgPSAwOworICAgIH0KKyAgICAvLyB1c2VkIGJ5IDpudGgt
KihvZGQvZXZlbikgYW5kIDpsYW5nCisgICAgfCAnOicgRlVOQ1RJT04gbWF5YmVfc3BhY2UgSURF
TlQgbWF5YmVfc3BhY2UgJyknIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5n
U2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
cyk7CisgICAgICAgICQkLT5zZXRBcmd1bWVudCgkNCk7CisgICAgICAgICQyLmxvd2VyKCk7Cisg
ICAgICAgICQkLT5zZXRWYWx1ZSgkMik7CisgICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBl
IHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOworICAgICAgICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rv
cjo6UHNldWRvVW5rbm93bikKKyAgICAgICAgICAgICQkID0gMDsKKyAgICAgICAgZWxzZSBpZiAo
dHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvTnRoQ2hpbGQgfHwKKyAgICAgICAgICAgICAgICAg
dHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvTnRoT2ZUeXBlIHx8CisgICAgICAgICAgICAgICAg
IHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb050aExhc3RDaGlsZCB8fAorICAgICAgICAgICAg
ICAgICB0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9OdGhMYXN0T2ZUeXBlKSB7CisgICAgICAg
ICAgICBpZiAoIWlzVmFsaWROdGhUb2tlbigkNCkpCisgICAgICAgICAgICAgICAgJCQgPSAwOwor
ICAgICAgICB9CisgICAgfQorICAgIC8vIHVzZWQgYnkgOm5vdAorICAgIHwgJzonIE5PVEZVTkNU
SU9OIG1heWJlX3NwYWNlIHNpbXBsZV9zZWxlY3RvciBtYXliZV9zcGFjZSAnKScgeworICAgICAg
ICBpZiAoISQ0IHx8ICEkNC0+aXNTaW1wbGUoKSkKKyAgICAgICAgICAgICQkID0gMDsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3Rv
cigpOworICAgICAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7
CisKKyAgICAgICAgICAgIENTU1NlbGVjdG9yVmVjdG9yIHNlbGVjdG9yVmVjdG9yOworICAgICAg
ICAgICAgc2VsZWN0b3JWZWN0b3IuYXBwZW5kKHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3Io
JDQpKTsKKyAgICAgICAgICAgICQkLT5hZG9wdFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9yVmVjdG9y
KTsKKworICAgICAgICAgICAgJDIubG93ZXIoKTsKKyAgICAgICAgICAgICQkLT5zZXRWYWx1ZSgk
Mik7CisgICAgICAgIH0KKyAgICB9CisgIDsKKworZGVjbGFyYXRpb25fbGlzdDoKKyAgICBkZWNs
YXJhdGlvbiB7CisgICAgICAgICQkID0gJDE7CisgICAgfQorICAgIHwgZGVjbF9saXN0IGRlY2xh
cmF0aW9uIHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgaWYgKCAkMiApCisgICAgICAgICAg
ICAkJCA9ICQyOworICAgIH0KKyAgICB8IGRlY2xfbGlzdCB7CisgICAgICAgICQkID0gJDE7Cisg
ICAgfQorICAgIHwgZXJyb3IgaW52YWxpZF9ibG9ja19saXN0IGVycm9yIHsKKyAgICAgICAgJCQg
PSBmYWxzZTsKKyAgICB9CisgICAgfCBlcnJvciB7CisgICAgICAgICQkID0gZmFsc2U7CisgICAg
fQorICAgIHwgZGVjbF9saXN0IGVycm9yIHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAg
fCBkZWNsX2xpc3QgaW52YWxpZF9ibG9ja19saXN0IHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9
CisgICAgOworCitkZWNsX2xpc3Q6CisgICAgZGVjbGFyYXRpb24gJzsnIG1heWJlX3NwYWNlIHsK
KyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlTdGFydCgpOworICAgICAgICAkJCA9ICQxOwor
ICAgIH0KKyAgICB8IGRlY2xhcmF0aW9uIGludmFsaWRfYmxvY2tfbGlzdCBtYXliZV9zcGFjZSB7
CisgICAgICAgICQkID0gZmFsc2U7CisgICAgfQorICAgIHwgZGVjbGFyYXRpb24gaW52YWxpZF9i
bG9ja19saXN0ICc7JyBtYXliZV9zcGFjZSB7CisgICAgICAgICQkID0gZmFsc2U7CisgICAgfQor
ICAgIHwgZXJyb3IgJzsnIG1heWJlX3NwYWNlIHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVy
dHlTdGFydCgpOworICAgICAgICAkJCA9IGZhbHNlOworICAgIH0KKyAgICB8IGVycm9yIGludmFs
aWRfYmxvY2tfbGlzdCBlcnJvciAnOycgbWF5YmVfc3BhY2UgeworICAgICAgICAkJCA9IGZhbHNl
OworICAgIH0KKyAgICB8IGRlY2xfbGlzdCBkZWNsYXJhdGlvbiAnOycgbWF5YmVfc3BhY2Ugewor
ICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7CisgICAgICAgICQkID0gJDE7Cisg
ICAgICAgIGlmICgkMikKKyAgICAgICAgICAgICQkID0gJDI7CisgICAgfQorICAgIHwgZGVjbF9s
aXN0IGVycm9yICc7JyBtYXliZV9zcGFjZSB7CisgICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5
U3RhcnQoKTsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAgfCBkZWNsX2xpc3QgZXJyb3Ig
aW52YWxpZF9ibG9ja19saXN0IGVycm9yICc7JyBtYXliZV9zcGFjZSB7CisgICAgICAgIHBhcnNl
ci0+bWFya1Byb3BlcnR5U3RhcnQoKTsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAgOwor
CitkZWNsYXJhdGlvbjoKKyAgICBWQVJfREVGSU5JVElPTiAnOicgbWF5YmVfc3BhY2UgZXhwciBw
cmlvIHsKKyNpZiBFTkFCTEVfQ1NTX1ZBUklBQkxFUworICAgICAgICBwYXJzZXItPnN0b3JlVmFy
aWFibGVEZWNsYXJhdGlvbigkMSwgcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDQpLCAk
NSk7CisgICAgICAgICQkID0gdHJ1ZTsKKyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlFbmQo
JDUsIHRydWUpOworI2Vsc2UKKyAgICAgICAgJCQgPSBmYWxzZTsKKyNlbmRpZgorICAgIH0KKyAg
ICB8CisgICAgcHJvcGVydHkgJzonIG1heWJlX3NwYWNlIGV4cHIgcHJpbyB7CisgICAgICAgICQk
ID0gZmFsc2U7CisgICAgICAgIGJvb2wgaXNQcm9wZXJ0eVBhcnNlZCA9IGZhbHNlOworICAgICAg
ICBpZiAoJDEgJiYgJDQpIHsKKyAgICAgICAgICAgIHBhcnNlci0+bV92YWx1ZUxpc3QgPSBwYXJz
ZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCk7CisgICAgICAgICAgICBpbnQgb2xkUGFyc2Vk
UHJvcGVydGllcyA9IHBhcnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCk7CisgICAgICAg
ICAgICAkJCA9IHBhcnNlci0+cGFyc2VWYWx1ZShzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPigk
MSksICQ1KTsKKyAgICAgICAgICAgIGlmICghJCQpCisgICAgICAgICAgICAgICAgcGFyc2VyLT5y
b2xsYmFja0xhc3RQcm9wZXJ0aWVzKHBhcnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCkg
LSBvbGRQYXJzZWRQcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBpc1Byb3BlcnR5UGFyc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIHBhcnNlci0+bV92YWx1ZUxp
c3QgPSBudWxscHRyOworICAgICAgICB9CisgICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5RW5k
KCQ1LCBpc1Byb3BlcnR5UGFyc2VkKTsKKyAgICB9CisgICAgfAorICAgIHByb3BlcnR5IGVycm9y
IHsKKyAgICAgICAgJCQgPSBmYWxzZTsKKyAgICB9CisgICAgfAorICAgIHByb3BlcnR5ICc6JyBt
YXliZV9zcGFjZSBlcnJvciBleHByIHByaW8geworICAgICAgICAvKiBUaGUgZGVmYXVsdCBtb3Zh
YmxlIHR5cGUgdGVtcGxhdGUgaGFzIGxldHRlci1zcGFjaW5nOiAubm9uZTsgIEhhbmRsZSB0aGlz
IGJ5IGxvb2tpbmcgZm9yCisgICAgICAgIGVycm9yIHRva2VucyBhdCB0aGUgc3RhcnQgb2YgYW4g
ZXhwciwgcmVjb3ZlciB0aGUgZXhwciBhbmQgdGhlbiB0cmVhdCBhcyBhbiBlcnJvciwgY2xlYW5p
bmcKKyAgICAgICAgdXAgYW5kIGRlbGV0aW5nIHRoZSBzaGlmdGVkIGV4cHIuICAqLworICAgICAg
ICBwYXJzZXItPm1hcmtQcm9wZXJ0eUVuZChmYWxzZSwgZmFsc2UpOworICAgICAgICAkJCA9IGZh
bHNlOworICAgIH0KKyAgICB8CisgICAgcHJvcGVydHkgJzonIG1heWJlX3NwYWNlIGV4cHIgcHJp
byBlcnJvciB7CisgICAgICAgIC8qIFdoZW4gd2UgZW5jb3VudGVyIHNvbWV0aGluZyBsaWtlIHAg
e2NvbG9yOiByZWQgIWltcG9ydGFudCBmYWlsO30gd2Ugc2hvdWxkIGRyb3AgdGhlIGRlY2xhcmF0
aW9uICovCisgICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5RW5kKGZhbHNlLCBmYWxzZSk7Cisg
ICAgICAgICQkID0gZmFsc2U7CisgICAgfQorICAgIHwKKyAgICBJTVBPUlRBTlRfU1lNIG1heWJl
X3NwYWNlIHsKKyAgICAgICAgLyogSGFuZGxlIHRoaXMgY2FzZTogZGl2IHsgdGV4dC1hbGlnbjog
Y2VudGVyOyAhaW1wb3J0YW50IH0gSnVzdCByZWR1Y2UgYXdheSB0aGUgc3RyYXkgIWltcG9ydGFu
dC4gKi8KKyAgICAgICAgJCQgPSBmYWxzZTsKKyAgICB9CisgICAgfAorICAgIHByb3BlcnR5ICc6
JyBtYXliZV9zcGFjZSB7CisgICAgICAgIC8qIGRpdiB7IGZvbnQtZmFtaWx5OiB9IEp1c3QgcmVk
dWNlIGF3YXkgdGhpcyBwcm9wZXJ0eSB3aXRoIG5vIHZhbHVlLiAqLworICAgICAgICBwYXJzZXIt
Pm1hcmtQcm9wZXJ0eUVuZChmYWxzZSwgZmFsc2UpOworICAgICAgICAkJCA9IGZhbHNlOworICAg
IH0KKyAgICB8CisgICAgcHJvcGVydHkgJzonIG1heWJlX3NwYWNlIGVycm9yIHsKKyAgICAgICAg
LyogaWYgd2UgY29tZSBhY3Jvc3MgcnVsZXMgd2l0aCBpbnZhbGlkIHZhbHVlcyBsaWtlIHRoaXMg
Y2FzZTogcCB7IHdlaWdodDogKjsgfSwganVzdCBkaXNjYXJkIHRoZSBydWxlICovCisgICAgICAg
IHBhcnNlci0+bWFya1Byb3BlcnR5RW5kKGZhbHNlLCBmYWxzZSk7CisgICAgICAgICQkID0gZmFs
c2U7CisgICAgfQorICAgIHwKKyAgICBwcm9wZXJ0eSBpbnZhbGlkX2Jsb2NrIHsKKyAgICAgICAg
LyogaWYgd2UgY29tZSBhY3Jvc3M6IGRpdiB7IGNvbG9yeztjb2xvcjptYXJvb259IH0sIGlnbm9y
ZSBldmVyeXRoaW5nIHdpdGhpbiBjdXJseSBicmFja2V0cyAqLworICAgICAgICAkJCA9IGZhbHNl
OworICAgIH0KKyAgOworCitwcm9wZXJ0eToKKyAgICBJREVOVCBtYXliZV9zcGFjZSB7CisgICAg
ICAgICQkID0gY3NzUHJvcGVydHlJRCgkMSk7CisgICAgfQorICA7CisKK3ByaW86CisgICAgSU1Q
T1JUQU5UX1NZTSBtYXliZV9zcGFjZSB7ICQkID0gdHJ1ZTsgfQorICAgIHwgLyogZW1wdHkgKi8g
eyAkJCA9IGZhbHNlOyB9CisgIDsKKworZXhwcjoKKyAgICB0ZXJtIHsKKyAgICAgICAgJCQgPSBw
YXJzZXItPmNyZWF0ZUZsb2F0aW5nVmFsdWVMaXN0KCk7CisgICAgICAgICQkLT5hZGRWYWx1ZShw
YXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlKCQxKSk7CisgICAgfQorICAgIHwgZXhwciBvcGVyYXRv
ciB0ZXJtIHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgaWYgKCQkKSB7CisgICAgICAgICAg
ICBpZiAoJDIpIHsKKyAgICAgICAgICAgICAgICBDU1NQYXJzZXJWYWx1ZSB2OworICAgICAgICAg
ICAgICAgIHYuaWQgPSAwOworICAgICAgICAgICAgICAgIHYudW5pdCA9IENTU1BhcnNlclZhbHVl
OjpPcGVyYXRvcjsKKyAgICAgICAgICAgICAgICB2LmlWYWx1ZSA9ICQyOworICAgICAgICAgICAg
ICAgICQkLT5hZGRWYWx1ZSh2KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICQkLT5hZGRW
YWx1ZShwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlKCQzKSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgfCBleHByIGludmFsaWRfYmxvY2tfbGlzdCB7CisgICAgICAgICQkID0gMDsKKyAgICB9Cisg
ICAgfCBleHByIGludmFsaWRfYmxvY2tfbGlzdCBlcnJvciB7CisgICAgICAgICQkID0gMDsKKyAg
ICB9CisgICAgfCBleHByIGVycm9yIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKyAgOworCitv
cGVyYXRvcjoKKyAgICAnLycgbWF5YmVfc3BhY2UgeworICAgICAgICAkJCA9ICcvJzsKKyAgICB9
CisgIHwgJywnIG1heWJlX3NwYWNlIHsKKyAgICAgICAgJCQgPSAnLCc7CisgICAgfQorICB8IC8q
IGVtcHR5ICovIHsKKyAgICAgICAgJCQgPSAwOworICB9CisgIDsKKwordGVybToKKyAgdW5hcnlf
dGVybSB7ICQkID0gJDE7IH0KKyAgfCB1bmFyeV9vcGVyYXRvciB1bmFyeV90ZXJtIHsgJCQgPSAk
MjsgJCQuZlZhbHVlICo9ICQxOyB9CisgIHwgU1RSSU5HIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAw
OyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5H
OyB9CisgIHwgSURFTlQgbWF5YmVfc3BhY2UgeworICAgICAgJCQuaWQgPSBjc3NWYWx1ZUtleXdv
cmRJRCgkMSk7CisgICAgICAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVDsK
KyAgICAgICQkLnN0cmluZyA9ICQxOworICB9CisgIC8qIFdlIG1pZ2h0IG5lZWQgdG8gYWN0dWFs
bHkgcGFyc2UgdGhlIG51bWJlciBmcm9tIGEgZGltZW5zaW9uLCBidXQgd2UgY2FuJ3QganVzdCBw
dXQgc29tZXRoaW5nIHRoYXQgdXNlcyAkJC5zdHJpbmcgaW50byB1bmFyeV90ZXJtLiAqLworICB8
IERJTUVOIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRElNRU5TSU9OOyB9CisgIHwgdW5hcnlfb3BlcmF0b3Ig
RElNRU4gbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQyOyAkJC51bml0ID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ESU1FTlNJT047IH0KKyAgfCBVUkkgbWF5YmVfc3BhY2Ug
eyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19VUkk7IH0KKyAgfCBVTklDT0RFUkFOR0UgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQk
LnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VTklDT0RFX1JB
TkdFOyB9CisgIHwgSEVYIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSAkMTsg
JCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEFSU0VSX0hFWENPTE9SOyB9CisgIHwg
JyMnIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSBDU1NQYXJzZXJTdHJpbmco
KTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEFSU0VSX0hFWENPTE9SOyB9IC8q
IEhhbmRsZSBlcnJvciBjYXNlOiAiY29sb3I6ICM7IiAqLworICB8IFZBUkZVTkNUSU9OIG1heWJl
X3NwYWNlIElERU5UICcpJyBtYXliZV9zcGFjZSB7CisjaWYgRU5BQkxFX0NTU19WQVJJQUJMRVMK
KyAgICAgICQkLmlkID0gMDsKKyAgICAgICQkLnN0cmluZyA9ICQzOworICAgICAgJCQudW5pdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVkFSSUFCTEVfTkFNRTsKKyNlbmRpZgorICB9CisgIC8q
IEZJWE1FOiBhY2NvcmRpbmcgdG8gdGhlIHNwZWNzIGEgZnVuY3Rpb24gY2FuIGhhdmUgYSB1bmFy
eV9vcGVyYXRvciBpbiBmcm9udC4gSSBrbm93IG5vIGNhc2Ugd2hlcmUgdGhpcyBtYWtlcyBzZW5z
ZSAqLworICB8IGZ1bmN0aW9uIHsKKyAgICAgICQkID0gJDE7CisgIH0KKyAgfCBjYWxjX2Z1bmN0
aW9uIHsKKyAgICAgICQkID0gJDE7CisgIH0KKyAgfCBtaW5fb3JfbWF4X2Z1bmN0aW9uIHsKKyAg
ICAgICQkID0gJDE7CisgIH0KKyAgfCAnJScgbWF5YmVfc3BhY2UgeyAvKiBIYW5kbGUgd2lkdGg6
ICU7ICovCisgICAgICAkJC5pZCA9IDA7ICQkLnVuaXQgPSAwOworICB9CisgIDsKKwordW5hcnlf
dGVybToKKyAgSU5URUdFUiBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuaXNJbnQgPSB0cnVl
OyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVS
OyB9CisgIHwgRkxPQVRUT0tFTiBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuaXNJbnQgPSBm
YWxzZTsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05V
TUJFUjsgfQorICB8IFBFUkNFTlRBR0UgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1
ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFOyB9Cisg
IHwgUFhTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFg7IH0KKyAgfCBDTVMgbWF5YmVfc3BhY2UgeyAkJC5p
ZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19D
TTsgfQorICB8IE1NUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQk
LnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01NOyB9CisgIHwgSU5TIG1heWJlX3NwYWNl
IHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfSU47IH0KKyAgfCBQVFMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9
ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QVDsgfQorICB8IFBDUyBtYXli
ZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BDOyB9CisgIHwgREVHUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQu
ZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRzsgfQorICB8
IFJBRFMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SQUQ7IH0KKyAgfCBHUkFEUyBtYXliZV9zcGFjZSB7ICQk
LmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X0dSQUQ7IH0KKyAgfCBUVVJOUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0g
JDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1RVUk47IH0KKyAgfCBNU0VDUyBt
YXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX01TOyB9CisgIHwgU0VDUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsg
JCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1M7IH0KKyAg
fCBIRVJUWiBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0haOyB9CisgIHwgS0hFUlRaIG1heWJlX3NwYWNlIHsg
JCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfS0haOyB9CisgIHwgRU1TIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAk
MTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TOyB9CisgIHwgUUVNUyBtYXli
ZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQYXJzZXJW
YWx1ZTo6UV9FTVM7IH0KKyAgfCBFWFMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1
ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FWFM7IH0KKyAgfCBSRU1T
IG1heWJlX3NwYWNlIHsKKyAgICAgICQkLmlkID0gMDsKKyAgICAgICQkLmZWYWx1ZSA9ICQxOwor
ICAgICAgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkVNUzsKKyAgICAgIGlmIChw
YXJzZXItPm1fc3R5bGVTaGVldCkKKyAgICAgICAgICBwYXJzZXItPm1fc3R5bGVTaGVldC0+cGFy
c2VyU2V0VXNlc1JlbVVuaXRzKHRydWUpOworICB9CisgIHwgVlcgbWF5YmVfc3BhY2UgeyAkJC5p
ZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19W
VzsgfQorICB8IFZIIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQu
dW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVkg7IH0KKyAgfCBWTUlOIG1heWJlX3NwYWNl
IHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfVk1JTjsgfQorICB8IERQUFggbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1
ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19EUFBYOyB9CisgIHwgRFBJ
IG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfRFBJOyB9CisgIHwgRFBDTSBtYXliZV9zcGFjZSB7ICQkLmlkID0g
MDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQQ007
IH0KKyAgOworCitmdW5jdGlvbjoKKyAgICBGVU5DVElPTiBtYXliZV9zcGFjZSBleHByICcpJyBt
YXliZV9zcGFjZSB7CisgICAgICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVh
dGVGbG9hdGluZ0Z1bmN0aW9uKCk7CisgICAgICAgIGYtPm5hbWUgPSAkMTsKKyAgICAgICAgZi0+
YXJncyA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQzKTsKKyAgICAgICAgJCQuaWQg
PSAwOworICAgICAgICAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uOworICAgICAg
ICAkJC5mdW5jdGlvbiA9IGY7CisgICAgfSB8CisgICAgRlVOQ1RJT04gbWF5YmVfc3BhY2UgZXhw
ciBUT0tFTl9FT0YgeworICAgICAgICBDU1NQYXJzZXJGdW5jdGlvbiogZiA9IHBhcnNlci0+Y3Jl
YXRlRmxvYXRpbmdGdW5jdGlvbigpOworICAgICAgICBmLT5uYW1lID0gJDE7CisgICAgICAgIGYt
PmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkMyk7CisgICAgICAgICQkLmlk
ID0gMDsKKyAgICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKKyAgICAg
ICAgJCQuZnVuY3Rpb24gPSBmOworICAgIH0gfAorICAgIEZVTkNUSU9OIG1heWJlX3NwYWNlICcp
JyBtYXliZV9zcGFjZSB7CisgICAgICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5j
cmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7CisgICAgICAgIGYtPm5hbWUgPSAkMTsKKyAgICAgICAg
Q1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nVmFs
dWVMaXN0KCk7CisgICAgICAgIGYtPmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlz
dCh2YWx1ZUxpc3QpOworICAgICAgICAkJC5pZCA9IDA7CisgICAgICAgICQkLnVuaXQgPSBDU1NQ
YXJzZXJWYWx1ZTo6RnVuY3Rpb247CisgICAgICAgICQkLmZ1bmN0aW9uID0gZjsKKyAgICB9IHwK
KyAgICBGVU5DVElPTiBtYXliZV9zcGFjZSBlcnJvciB7CisgICAgICAgIENTU1BhcnNlckZ1bmN0
aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7CisgICAgICAgIGYtPm5h
bWUgPSAkMTsKKyAgICAgICAgZi0+YXJncyA9IG51bGxwdHI7CisgICAgICAgICQkLmlkID0gMDsK
KyAgICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKKyAgICAgICAgJCQu
ZnVuY3Rpb24gPSBmOworICB9CisgIDsKKyAKK2NhbGNfZnVuY190ZXJtOgorICB1bmFyeV90ZXJt
IHsgJCQgPSAkMTsgfQorICB8IFZBUkZVTkNUSU9OIG1heWJlX3NwYWNlIElERU5UICcpJyBtYXli
ZV9zcGFjZSB7CisjaWYgRU5BQkxFX0NTU19WQVJJQUJMRVMKKyAgICAgICQkLmlkID0gMDsKKyAg
ICAgICQkLnN0cmluZyA9ICQzOworICAgICAgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfVkFSSUFCTEVfTkFNRTsKKyNlbmRpZgorICB9CisgIHwgdW5hcnlfb3BlcmF0b3IgdW5hcnlf
dGVybSB7ICQkID0gJDI7ICQkLmZWYWx1ZSAqPSAkMTsgfQorICA7CisKK2NhbGNfZnVuY19vcGVy
YXRvcjoKKyAgICAnKycgV0hJVEVTUEFDRSB7CisgICAgICAgICQkID0gJysnOworICAgIH0KKyAg
ICB8ICctJyBXSElURVNQQUNFIHsKKyAgICAgICAgJCQgPSAnLSc7CisgICAgfQorICAgIHwgJyon
IG1heWJlX3NwYWNlIHsKKyAgICAgICAgJCQgPSAnKic7CisgICAgfQorICAgIHwgJy8nIG1heWJl
X3NwYWNlIHsKKyAgICAgICAgJCQgPSAnLyc7CisgICAgfQorICA7CisKK2NhbGNfZnVuY19wYXJl
bl9leHByOgorICAgICcoJyBtYXliZV9zcGFjZSBjYWxjX2Z1bmNfZXhwciBtYXliZV9zcGFjZSAn
KScgbWF5YmVfc3BhY2UgeworICAgICAgICBpZiAoJDMpIHsKKyAgICAgICAgICAgICQkID0gJDM7
CisgICAgICAgICAgICBDU1NQYXJzZXJWYWx1ZSB2OworICAgICAgICAgICAgdi5pZCA9IDA7Cisg
ICAgICAgICAgICB2LnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3I7CisgICAgICAgICAg
ICB2LmlWYWx1ZSA9ICcoJzsKKyAgICAgICAgICAgICQkLT5pbnNlcnRWYWx1ZUF0KDAsIHYpOwor
ICAgICAgICAgICAgdi5pVmFsdWUgPSAnKSc7CisgICAgICAgICAgICAkJC0+YWRkVmFsdWUodik7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgJCQgPSAwOworICAgIH0KKworY2FsY19mdW5j
X2V4cHI6CisgICAgY2FsY19mdW5jX3Rlcm0gbWF5YmVfc3BhY2UgeworICAgICAgICAkJCA9IHBh
cnNlci0+Y3JlYXRlRmxvYXRpbmdWYWx1ZUxpc3QoKTsKKyAgICAgICAgJCQtPmFkZFZhbHVlKHBh
cnNlci0+c2lua0Zsb2F0aW5nVmFsdWUoJDEpKTsKKyAgICB9CisgICAgfCBjYWxjX2Z1bmNfZXhw
ciBjYWxjX2Z1bmNfb3BlcmF0b3IgY2FsY19mdW5jX3Rlcm0geworICAgICAgICBpZiAoJDEgJiYg
JDIpIHsKKyAgICAgICAgICAgICQkID0gJDE7CisgICAgICAgICAgICBDU1NQYXJzZXJWYWx1ZSB2
OworICAgICAgICAgICAgdi5pZCA9IDA7CisgICAgICAgICAgICB2LnVuaXQgPSBDU1NQYXJzZXJW
YWx1ZTo6T3BlcmF0b3I7CisgICAgICAgICAgICB2LmlWYWx1ZSA9ICQyOworICAgICAgICAgICAg
JCQtPmFkZFZhbHVlKHYpOworICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHBhcnNlci0+c2lua0Zs
b2F0aW5nVmFsdWUoJDMpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAkJCA9IDA7CisK
KyAgICB9CisgICAgfCBjYWxjX2Z1bmNfZXhwciBjYWxjX2Z1bmNfb3BlcmF0b3IgY2FsY19mdW5j
X3BhcmVuX2V4cHIgeworICAgICAgICBpZiAoJDEgJiYgJDIgJiYgJDMpIHsKKyAgICAgICAgICAg
ICQkID0gJDE7CisgICAgICAgICAgICBDU1NQYXJzZXJWYWx1ZSB2OworICAgICAgICAgICAgdi5p
ZCA9IDA7CisgICAgICAgICAgICB2LnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3I7Cisg
ICAgICAgICAgICB2LmlWYWx1ZSA9ICQyOworICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHYpOwor
ICAgICAgICAgICAgJCQtPmV4dGVuZCgqKCQzKSk7CisgICAgICAgIH0gZWxzZSAKKyAgICAgICAg
ICAgICQkID0gMDsKKyAgICB9CisgICAgfCBjYWxjX2Z1bmNfcGFyZW5fZXhwcgorICAgIHwgY2Fs
Y19mdW5jX2V4cHIgZXJyb3IgeworICAgICAgICAkJCA9IDA7CisgICAgfQorICA7CisKK2NhbGNf
ZnVuY19leHByX2xpc3Q6CisgICAgY2FsY19mdW5jX2V4cHIgIHsKKyAgICAgICAgJCQgPSAkMTsK
KyAgICB9ICAgIAorICAgIHwgY2FsY19mdW5jX2V4cHJfbGlzdCAnLCcgbWF5YmVfc3BhY2UgY2Fs
Y19mdW5jX2V4cHIgeworICAgICAgICBpZiAoJDEgJiYgJDQpIHsKKyAgICAgICAgICAgICQkID0g
JDE7CisgICAgICAgICAgICBDU1NQYXJzZXJWYWx1ZSB2OworICAgICAgICAgICAgdi5pZCA9IDA7
CisgICAgICAgICAgICB2LnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3I7CisgICAgICAg
ICAgICB2LmlWYWx1ZSA9ICcsJzsKKyAgICAgICAgICAgICQkLT5hZGRWYWx1ZSh2KTsKKyAgICAg
ICAgICAgICQkLT5leHRlbmQoKigkNCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICQk
ID0gMDsKKyAgICB9CisgICAgCisKK2NhbGNfZnVuY3Rpb246CisgICAgQ0FMQ0ZVTkNUSU9OIG1h
eWJlX3NwYWNlIGNhbGNfZnVuY19leHByICcpJyBtYXliZV9zcGFjZSB7CisgICAgICAgIENTU1Bh
cnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7CisgICAg
ICAgIGYtPm5hbWUgPSAkMTsKKyAgICAgICAgZi0+YXJncyA9IHBhcnNlci0+c2lua0Zsb2F0aW5n
VmFsdWVMaXN0KCQzKTsKKyAgICAgICAgJCQuaWQgPSAwOworICAgICAgICAkJC51bml0ID0gQ1NT
UGFyc2VyVmFsdWU6OkZ1bmN0aW9uOworICAgICAgICAkJC5mdW5jdGlvbiA9IGY7CisgICAgfQor
ICAgIHwgQ0FMQ0ZVTkNUSU9OIG1heWJlX3NwYWNlIGVycm9yIHsKKyAgICAgICAgWVlFUlJPUjsK
KyAgICB9CisgICAgOworCisKK21pbl9vcl9tYXg6CisgICAgTUlORlVOQ1RJT04geworICAgICAg
ICAkJCA9ICQxOworICAgIH0KKyAgICB8IE1BWEZVTkNUSU9OIHsKKyAgICAgICAgJCQgPSAkMTsK
KyAgICB9CisgICAgOworCittaW5fb3JfbWF4X2Z1bmN0aW9uOgorICAgIG1pbl9vcl9tYXggbWF5
YmVfc3BhY2UgY2FsY19mdW5jX2V4cHJfbGlzdCAnKScgbWF5YmVfc3BhY2UgeworICAgICAgICBD
U1NQYXJzZXJGdW5jdGlvbiogZiA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdGdW5jdGlvbigpOwor
ICAgICAgICBmLT5uYW1lID0gJDE7CisgICAgICAgIGYtPmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9h
dGluZ1ZhbHVlTGlzdCgkMyk7CisgICAgICAgICQkLmlkID0gMDsKKyAgICAgICAgJCQudW5pdCA9
IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKKyAgICAgICAgJCQuZnVuY3Rpb24gPSBmOworICAg
IH0gCisgICAgfCBtaW5fb3JfbWF4IG1heWJlX3NwYWNlIGVycm9yIHsKKyAgICAgICAgWVlFUlJP
UjsKKyAgICB9CisgICAgOworCisvKiBlcnJvciBoYW5kbGluZyBydWxlcyAqLworCitzYXZlX2Js
b2NrOgorICAgIGNsb3NpbmdfYnJhY2UgeworICAgICAgICAkJCA9IDA7CisgICAgfQorICB8IGVy
cm9yIGNsb3NpbmdfYnJhY2UgeworICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIDsKKworaW52
YWxpZF9hdDoKKyAgICBBVEtFWVdPUkQgZXJyb3IgaW52YWxpZF9ibG9jayB7CisgICAgICAgICQk
ID0gMDsKKyAgICB9CisgIHwgQVRLRVlXT1JEIGVycm9yICc7JyB7CisgICAgICAgICQkID0gMDsK
KyAgICB9CisgICAgOworCitpbnZhbGlkX3J1bGU6CisgICAgZXJyb3IgaW52YWxpZF9ibG9jayB7
CisgICAgICAgICQkID0gMDsKKyAgICB9CisKKy8qCisgIFNlZW1zIGxpa2UgdGhlIHR3byBydWxl
cyBiZWxvdyBhcmUgdHJ5aW5nIHRvbyBtdWNoIGFuZCB2aW9sYXRpbmcKKyAgaHR0cDovL3d3dy5o
aXhpZS5jaC90ZXN0cy9ldmlsL21peGVkL2Nzc2Vycm9yaGFuZGxpbmcuaHRtbAorCisgIHwgZXJy
b3IgJzsnIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKyAgfCBlcnJvciAnfScgeworICAgICAg
ICAkJCA9IDA7CisgICAgfQorKi8KKyAgICA7CisKK2ludmFsaWRfYmxvY2s6CisgICAgJ3snIGVy
cm9yIGludmFsaWRfYmxvY2tfbGlzdCBlcnJvciBjbG9zaW5nX2JyYWNlIHsKKyAgICAgICAgcGFy
c2VyLT5pbnZhbGlkQmxvY2tIaXQoKTsKKyAgICB9CisgIHwgJ3snIGVycm9yIGNsb3NpbmdfYnJh
Y2UgeworICAgICAgICBwYXJzZXItPmludmFsaWRCbG9ja0hpdCgpOworICAgIH0KKyAgICA7CisK
K2ludmFsaWRfYmxvY2tfbGlzdDoKKyAgICBpbnZhbGlkX2Jsb2NrCisgIHwgaW52YWxpZF9ibG9j
a19saXN0IGVycm9yIGludmFsaWRfYmxvY2sKKzsKKworJSUKKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbmNsdWRlcyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFtbWFyLnkuaW5jbHVkZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI2ODk3NDUwYjQxYzU4MTcwMTkzYjli
MDA4YjY0NmI0Y2RhNjY3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFtbWFyLnkuaW5jbHVkZXMKQEAgLTAsMCArMSw4NSBAQAorJXsKKworLyoKKyAqICBDb3B5
cmlnaHQgKEMpIDIwMDItMjAwMyBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQ
cm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBT
ZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0
ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICoKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJDU1NQYXJzZXIuaCIKKyNpbmNs
dWRlICJDU1NQYXJzZXJNb2RlLmgiCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNp
bmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKKyNp
bmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgorI2luY2x1ZGUgIk1lZGlh
UXVlcnlFeHAuaCIKKyNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKKyNpbmNsdWRlICJTdHlsZVNoZWV0
Q29udGVudHMuaCIKKyNpbmNsdWRlICJXZWJLaXRDU1NLZXlmcmFtZVJ1bGUuaCIKKyNpbmNsdWRl
ICJXZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
KyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCisjZGVmaW5lIFlZTUFM
TE9DIGZhc3RNYWxsb2MKKyNkZWZpbmUgWVlGUkVFIGZhc3RGcmVlCisKKyNkZWZpbmUgWVlFTkFC
TEVfTkxTIDAKKyNkZWZpbmUgWVlMVFlQRV9JU19UUklWSUFMIDEKKyNkZWZpbmUgWVlNQVhERVBU
SCAxMDAwMAorI2RlZmluZSBZWURFQlVHIDAKKworI2lmIFlZREVCVUcgPiAwCisjZGVmaW5lIFlZ
UFJJTlQoRmlsZSxUeXBlLFZhbHVlKSBwcmludF90b2tlbl92YWx1ZShGaWxlLFR5cGUsVmFsdWUp
CitzdGF0aWMgdm9pZCBwcmludF90b2tlbl92YWx1ZShGSUxFICogeXlvdXRwdXQsIGludCB5eXR5
cGUsIFlZU1RZUEUgY29uc3QgJnl5dmFsdWUpCit7CisgICAgc3dpdGNoICh5eXR5cGUpIHsKKyAg
ICBjYXNlIElERU5UOgorICAgIGNhc2UgU1RSSU5HOgorICAgIGNhc2UgTlRIOgorICAgIGNhc2Ug
SEVYOgorICAgIGNhc2UgSURTRUw6CisgICAgY2FzZSBESU1FTjoKKyAgICBjYXNlIElOVkFMSURE
SU1FTjoKKyAgICBjYXNlIFVSSToKKyAgICBjYXNlIEZVTkNUSU9OOgorICAgIGNhc2UgQU5ZRlVO
Q1RJT046CisgICAgY2FzZSBOT1RGVU5DVElPTjoKKyAgICBjYXNlIENBTENGVU5DVElPTjoKKyAg
ICBjYXNlIE1JTkZVTkNUSU9OOgorICAgIGNhc2UgTUFYRlVOQ1RJT046CisgICAgY2FzZSBWQVJf
REVGSU5JVElPTjoKKyAgICBjYXNlIFVOSUNPREVSQU5HRToKKyAgICAgICAgWVlGUFJJTlRGKHl5
b3V0cHV0LCAiJXMiLCBTdHJpbmcoeXl2YWx1ZS5zdHJpbmcpLnV0ZjgoKS5kYXRhKCkpOworICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cit9CisjZW5k
aWYKKworJX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlZ3JhbW1hci5wbCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlZ3JhbW1hci5wbAppbmRleCAwNmZhYWE5M2QzMjYwYWI1
MzA0MTdjNDMzZTE2OGMzMzViYzY3YWVmLi4yMGUyOWRiZjc5Nzk5MmI5MDVhYjY0OTBiMDg0N2Rh
YmIwOWNiYmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZWdyYW1tYXIucGwK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2VncmFtbWFyLnBsCkBAIC0yMSwzNSArMjEsNzgg
QEAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3M7CiAKLW15ICRncmFtbWFyID0gJEFSR1ZbMF07
Ci1teSAkZmlsZUJhc2UgPSAkQVJHVlsxXTsKK3VzZSBGaWxlOjpCYXNlbmFtZTsKK3VzZSBGaWxl
OjpTcGVjOwordXNlIEdldG9wdDo6TG9uZzsKIAotc3lzdGVtKCJiaXNvbiAtZCAtcCBjc3N5eSAi
IC4gJGdyYW1tYXIgLiAiIC1vICIgLiAkZmlsZUJhc2UgLiAiLnRhYi5jIik7CitteSAkb3V0cHV0
RGlyID0gIi4iOworbXkgJGV4dHJhRGVmaW5lcyA9ICIiOworbXkgJHN5bWJvbHNQcmVmaXggPSAi
IjsKK215ICRwcmVwcm9jZXNzb3IgPSAiIjsKK215ICRwcmVwcm9jZXNzT25seSA9IDA7CitteSAk
Ymlzb24gPSAiYmlzb24iOwogCi1vcGVuIEhFQURFUiwgIj4iIC4gJGZpbGVCYXNlIC4gIi5oIiBv
ciBkaWU7CitHZXRPcHRpb25zKAorICAgICdvdXRwdXREaXI9cycgPT4gXCRvdXRwdXREaXIsCisg
ICAgJ2V4dHJhRGVmaW5lcz1zJyA9PiBcJGV4dHJhRGVmaW5lcywKKyAgICAnYmlzb249cycgPT4g
XCRiaXNvbiwKKyAgICAncHJlcHJvY2Vzc29yPXMnID0+IFwkcHJlcHJvY2Vzc29yLAorICAgICdw
cmVwcm9jZXNzT25seScgPT4gXCRwcmVwcm9jZXNzT25seSwKKyAgICAnc3ltYm9sc1ByZWZpeD1z
JyA9PiBcJHN5bWJvbHNQcmVmaXgKKyk7CisKK215ICRncmFtbWFyRmlsZVBhdGggPSAkQVJHVlsw
XTsKK215ICRncmFtbWFySW5jbHVkZXNGaWxlUGF0aCA9IEBBUkdWID4gMCA/ICRBUkdWWzFdIDog
IiI7CisKK2lmICghbGVuZ3RoKCRzeW1ib2xzUHJlZml4KSAmJiAhJHByZXByb2Nlc3NPbmx5KSB7
CisgICAgZGllICJOZWVkIGEgc3ltYm9scyBwcmVmaXggdG8gZ2l2ZSB0byBiaXNvbiAoZS5nLiBj
c3N5eSwgeHBhdGh5eSkiOworfQorCisKK215ICgkZmlsZW5hbWUsICRiYXNlUGF0aCwgJHN1ZmZp
eCkgPSBmaWxlcGFyc2UoJGdyYW1tYXJGaWxlUGF0aCwgKCIueSIsICIueS5pbiIpKTsKKworaWYg
KCRzdWZmaXggZXEgIi55LmluIikgeworICAgIG15ICRncmFtbWFyRmlsZU91dFBhdGggPSBGaWxl
OjpTcGVjLT5qb2luKCRvdXRwdXREaXIsICIkZmlsZW5hbWUueSIpOworICAgIGlmICghJGdyYW1t
YXJJbmNsdWRlc0ZpbGVQYXRoKSB7CisgICAgICAgICRncmFtbWFySW5jbHVkZXNGaWxlUGF0aCA9
ICIke2Jhc2VQYXRofSR7ZmlsZW5hbWV9LnkuaW5jbHVkZXMiOworICAgIH0KKworICAgIG9wZW4g
R1JBTU1BUiwgIj4kZ3JhbW1hckZpbGVPdXRQYXRoIiBvciBkaWU7CisgICAgb3BlbiBJTkNMVURF
UywgIjwkZ3JhbW1hckluY2x1ZGVzRmlsZVBhdGgiIG9yIGRpZTsKKworICAgIHJlcXVpcmUgcHJl
cHJvY2Vzc29yOworCisgICAgd2hpbGUgKDxJTkNMVURFUz4pIHsKKyAgICAgICAgcHJpbnQgR1JB
TU1BUjsKKyAgICB9CisgICAgcHJpbnQgR1JBTU1BUiBqb2luKCIiLCBhcHBseVByZXByb2Nlc3Nv
cigkZ3JhbW1hckZpbGVQYXRoLCAkZXh0cmFEZWZpbmVzLCAkcHJlcHJvY2Vzc29yKSk7CisgICAg
Y2xvc2UgR1JBTU1BUjsKKworICAgICRncmFtbWFyRmlsZVBhdGggPSAkZ3JhbW1hckZpbGVPdXRQ
YXRoOworCisgICAgZXhpdCBpZiAkcHJlcHJvY2Vzc09ubHk7Cit9CisKK2V4aXQ7CisKK215ICRm
aWxlQmFzZSA9IEZpbGU6OlNwZWMtPmpvaW4oJG91dHB1dERpciwgJGZpbGVuYW1lKTsKK3N5c3Rl
bSgiJGJpc29uIC1kIC1wICRzeW1ib2xzUHJlZml4ICRncmFtbWFyRmlsZVBhdGggLW8gJGZpbGVC
YXNlLmNwcCIpOworCitvcGVuIEhFQURFUiwgIj4kZmlsZUJhc2UuaCIgb3IgZGllOwogcHJpbnQg
SEVBREVSIDw8ICJFT0YiOwogI2lmbmRlZiBDU1NHUkFNTUFSX0gKICNkZWZpbmUgQ1NTR1JBTU1B
Ul9ICiBFT0YKIAotb3BlbiBIUFAsICI8IiAuICRmaWxlQmFzZSAuICIudGFiLmgiIG9yIGRpZTsK
K29wZW4gSFBQLCAiPCRmaWxlQmFzZS5jcHAuaCIgb3Igb3BlbiBIUFAsICI8JGZpbGVCYXNlLmhw
cCIgb3IgZGllOwogd2hpbGUgKDxIUFA+KSB7CiAgICAgcHJpbnQgSEVBREVSOwogfQogY2xvc2Ug
SFBQOwogCiBwcmludCBIRUFERVIgIiNlbmRpZlxuIjsKLQogY2xvc2UgSEVBREVSOwogCi11bmxp
bmsoJGZpbGVCYXNlIC4gIi50YWIuaCIpOwotCi1vcGVuIENQUCwgIj4iIC4gJGZpbGVCYXNlIC4g
Ii5jcHAiIG9yIGRpZTsKLW9wZW4gR0VOU1JDLCAiPCIgLiAkZmlsZUJhc2UgLiAiLnRhYi5jIiBv
ciBkaWU7Ci13aGlsZSAoPEdFTlNSQz4pIHsKLSAgICBwcmludCBDUFA7Ci19Ci1jbG9zZSBHRU5T
UkM7Ci1jbG9zZSBDUFA7Cit1bmxpbmsoIiRmaWxlQmFzZS5jcHAuaCIpOwordW5saW5rKCIkZmls
ZUJhc2UuaHBwIik7CiAKLXVubGluaygkZmlsZUJhc2UgLiAiLnRhYi5jIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlIGIvU291cmNlL2NtYWtlL1dlYktpdE1h
Y3Jvcy5jbWFrZQppbmRleCBlZDhlYjVkMzIwZjIzZGQ4ZGY4NGJiNzRlNmQ3ZTI5ZjU1OTA0NWVm
Li43OGZiYWY2ZDUxMzVhNDFlMzUxMzA0YTU4ZDY3ZDc4MzhjYTg0YzgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9XZWJLaXRN
YWNyb3MuY21ha2UKQEAgLTE0OCwxMSArMTQ4LDEyIEBAIE1BQ1JPIChHRU5FUkFURV9IQVNIX0xV
VCBfaW5wdXQgX291dHB1dCkKIEVORE1BQ1JPICgpCiAKIAotTUFDUk8gKEdFTkVSQVRFX0dSQU1N
QVIgX3ByZWZpeCBfaW5wdXQgX291dHB1dF9oZWFkZXIgX291dHB1dF9zb3VyY2UpCitNQUNSTyAo
R0VORVJBVEVfR1JBTU1BUiBfcHJlZml4IF9pbnB1dCBfb3V0cHV0X2hlYWRlciBfb3V0cHV0X3Nv
dXJjZSBfZmVhdHVyZXMpCiAgICAgQUREX0NVU1RPTV9DT01NQU5EKAogICAgICAgICBPVVRQVVQg
JHtfb3V0cHV0X2hlYWRlcn0gJHtfb3V0cHV0X3NvdXJjZX0KICAgICAgICAgTUFJTl9ERVBFTkRF
TkNZICR7X2lucHV0fQotICAgICAgICBDT01NQU5EICR7QklTT05fRVhFQ1VUQUJMRX0gLXAgJHtf
cHJlZml4fSAke19pbnB1dH0gLW8gJHtfb3V0cHV0X3NvdXJjZX0gLS1kZWZpbmVzPSR7X291dHB1
dF9oZWFkZXJ9CisgICAgICAgIERFUEVORFMgJHtfaW5wdXR9CisgICAgICAgIENPTU1BTkQgJHtQ
RVJMX0VYRUNVVEFCTEV9IC1JICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL3NjcmlwdHMgJHtXRUJD
T1JFX0RJUn0vY3NzL21ha2VncmFtbWFyLnBsICR7X2lucHV0fSAtLW91dHB1dERpciAke0RFUklW
RURfU09VUkNFU19XRUJDT1JFX0RJUn0gLS1leHRyYURlZmluZXMgIiR7X2ZlYXR1cmVzfSIgLS1w
cmVwcm9jZXNzb3IgIiR7Q09ERV9HRU5FUkFUT1JfUFJFUFJPQ0VTU09SfSIgLS1iaXNvbiAiJHtC
SVNPTl9FWEVDVVRBQkxFfSIgLS1zeW1ib2xzUHJlZml4ICR7X3ByZWZpeH0gJHtfaW5wdXR9CiAg
ICAgICAgIFZFUkJBVElNKQogRU5ETUFDUk8gKCkKIApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIv
Q2hhbmdlTG9nCmluZGV4IGZlMDU5YmVmMGY1YzE3ODIwNWYwNzY4MGRkOTZhZGY2ODM2OGEyZTQu
LjJjMmE5ODRlMjA4NGRkNWU0OWE5NzI1MTM4ZTViM2E5MTFlOWQ1OTEgMTAwNjQ0Ci0tLSBhL0No
YW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0xMC0wOSAgUGFi
bG8gRmxvdXJldCAgPHBhYmxvZkBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgUHJlLXByb2Nlc3Mg
Q1NTR3JhbW1hci55IGJlZm9yZSBydW5uaW5nIHRocm91Z2ggYmlzb24uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDI5MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktpdE1h
Y3Jvcy5jbWFrZToKKyAgICAgICAgICAgIFVzZSBXZWJDb3JlL2Nzcy9tYWtlZ3JhbW1hci5wbCB0
byBnZW5lcmF0ZSBiaXNvbiBncmFtbWFyIGZpbGVzLgorCiAyMDEyLTEwLTEyICBTaGVyaWZmIEJv
dCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByMTMxMTg5Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168479</attachid>
            <date>2012-10-12 14:12:01 -0700</date>
            <delta_ts>2012-10-16 11:05:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94290-20121012141056.patch</filename>
            <type>text/plain</type>
            <size>116403</size>
            <attacher name="Pablo Flouret">pf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmMzYzhmODZjZTU4MGEx
YWI2ZTM5ODM1NGI4NDc0NjI3ZWQxNTdkYy4uMDNlOGU2NDA4N2U1NTk2M2ZmMmRiMTMzMDJhODdj
ZGE1MDNjOTMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTEwLTA5ICBQYWJs
byBGbG91cmV0ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBQcmUtcHJvY2VzcyBD
U1NHcmFtbWFyLnkgYmVmb3JlIHJ1bm5pbmcgdGhyb3VnaCBiaXNvbi4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MjkwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUnVubmluZyBDU1NHcmFtbWFyLnkgdGhy
b3VnaCBhIHByZXByb2Nlc3NvciBhbGxvd3MgdGhlIHVzZSBvZiBmZWF0dXJlCisgICAgICAgIGRl
ZmluZXMgaW4gYWxsIHBsYWNlcyBvZiB0aGUgeWFjYyBmaWxlIChpLmUuIG5vdCBqdXN0IGluIEMg
YmxvY2tzKS4KKyAgICAgICAgTW9zdGx5IHVzZWZ1bCB0byBiZSBhYmxlIHRvIGtlZXAgZXZlcnkg
cGFydCBvZiBhIGZlYXR1cmUgdW5kZXIgZmVhdHVyZQorICAgICAgICBmbGFncyBmb3Igc2VsZi1k
b2N1bWVudGluZyBwdXJwb3Nlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIENTU0dyYW1tYXIu
eSBzaG91bGQgYmUgZ2VuZXJhdGVkIGNvcnJlY3RseSBhbmQgZXZlcnl0aGluZworICAgICAgICBz
aG91bGQga2VlcCB3b3JraW5nIGFzIGJlZm9yZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMucHJpOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAgICAgTW9kaWZ5IGJ1
aWxkIHN5c3RlbXMgdG8gdXNlIG1ha2VncmFtbWFyLnBsIHRvIGdlbmVyYXRlIHRoZSAueSBmaWxl
cworICAgICAgICAgICAgYW5kIHJ1biB0aG9zZSB0aHJvdWdoIGJpc29uLgorCisgICAgICAgICog
V2ViQ29yZS5neXAvV2ViQ29yZS5neXA6CisgICAgICAgICAgICBBZGQgYSBuZXcgYWN0aW9uIHRv
IHByZXByb2Nlc3MgdGhlIENTU0dyYW1tYXIueS5pbiBmaWxlIGJlZm9yZSB0aGUKKyAgICAgICAg
ICAgIGJpc29uIHJ1bGUgaXMgcnVuLgorCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAgICAgQWRkIHRoZSBuZXcgLnkuaW4gLyAueS5pbmNsdWRlcyBmaWxlcy4KKworICAg
ICAgICAqIGNzcy9DU1NHcmFtbWFyLnkuaW46IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhbW1hci55LgorICAgICAgICAgICAgQWxzbyBtb3ZlZCB0aGUgdG9wIGRlY2xhcmF0
aW9ucyBzZWN0aW9uIHRoYXQgaGFzIGluY2x1ZGVzLCBkZWZpbmVzLAorICAgICAgICAgICAgZXRj
LiB0byBpdHMgb3duIGZpbGUuIFRoZXNlIHNob3VsZG4ndCBiZSB0b3VjaGVkIGJ5IHRoZSBmaXJz
dAorICAgICAgICAgICAgcGFzcyBvZiB0aGUgcHJlcHJvY2Vzc29yLiBBbmQgY2hhbmdlZCB0aGUg
ZXhpc3RpbmcgRU5BQkxFKEZFQVRVUkUpCisgICAgICAgICAgICBpZmRlZnMgdG8gRU5BQkxFX0ZF
QVRVUkUgc2luY2UgdGhlIEVOQUJMRSgpIG1hY3JvIGlzIG5vdCBhdmFpbGFibGUKKyAgICAgICAg
ICAgIHlldC4KKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55LmluY2x1ZGVzOiBBZGRlZC4KKyAg
ICAgICAgICAgIFRoZSBhZm9yZW1lbnRpb25lZCBkZWNsYXJhdGlvbnMgaGVhZGVyIHNlY3Rpb24u
IEFmdGVyIHRoZSAueS5pbiBmaWxlCisgICAgICAgICAgICBpcyBwcm9jZXNzZWQgaXQgd2lsbCBi
ZSBjb25jYXRlbmF0ZWQgd2l0aCB0aGlzIG9uZSB0byBtYWtlIHRoZQorICAgICAgICAgICAgQ1NT
R3JhbW1hci55IGZpbGUuCisKKyAgICAgICAgKiBjc3MvbWFrZWdyYW1tYXIucGw6CisgICAgICAg
ICAgICBNb2RpZnkgdGhlIHNjcmlwdCB0byBoYW5kbGUgLnkuaW4gZmlsZXMuCisKIDIwMTItMTAt
MTIgIEphbWVzIFNpbW9uc2VuICA8c2ltb25qYW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVdIFJlbW92ZSB2ZW5kb3IgcHJlZml4CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGU4NjFkODA3NDhjZTU5NTY0ZmIyNmM2NjBiMWUwOTU3MmRkMmYwOGQuLmU2NDlm
MDljZDEyZWM3OGJiMmRjMGE1NjE5Mjk3NTAzM2I1MzMyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC0yODU3LDExICsyODU3LDExIEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke0RF
UklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vVXNlckFnZW50U3R5bGVTaGVldHNECiBBRERfU09V
UkNFX1dFQkNPUkVfREVSSVZFRF9ERVBFTkRFTkNJRVMoJHtXRUJDT1JFX0RJUn0vY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwIFVzZXJBZ2VudFN0eWxlU2hlZXRzRGF0YS5jcHAgVXNlckFnZW50U3R5bGVT
aGVldHMuaCkKIAogCi1HRU5FUkFURV9HUkFNTUFSKGNzc3l5ICR7V0VCQ09SRV9ESVJ9L2Nzcy9D
U1NHcmFtbWFyLnkgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0NTU0dyYW1tYXIuaCAk
e0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vQ1NTR3JhbW1hci5jcHApCitHRU5FUkFURV9H
UkFNTUFSKGNzc3l5ICR7V0VCQ09SRV9ESVJ9L2Nzcy9DU1NHcmFtbWFyLnkuaW4gJHtERVJJVkVE
X1NPVVJDRVNfV0VCQ09SRV9ESVJ9L0NTU0dyYW1tYXIuaCAke0RFUklWRURfU09VUkNFU19XRUJD
T1JFX0RJUn0vQ1NTR3JhbW1hci5jcHAgIiR7RkVBVFVSRV9ERUZJTkVTX1dJVEhfU1BBQ0VfU0VQ
QVJBVE9SfSIpCiBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNf
V0VCQ09SRV9ESVJ9L0NTU0dyYW1tYXIuY3BwKQogCiAKLUdFTkVSQVRFX0dSQU1NQVIoeHBhdGh5
eSAke1dFQkNPUkVfRElSfS94bWwvWFBhdGhHcmFtbWFyLnkgJHtERVJJVkVEX1NPVVJDRVNfV0VC
Q09SRV9ESVJ9L1hQYXRoR3JhbW1hci5oICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9Y
UGF0aEdyYW1tYXIuY3BwKQorR0VORVJBVEVfR1JBTU1BUih4cGF0aHl5ICR7V0VCQ09SRV9ESVJ9
L3htbC9YUGF0aEdyYW1tYXIueSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vWFBhdGhH
cmFtbWFyLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1hQYXRoR3JhbW1hci5jcHAg
IiIpCiBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMgJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09S
RV9ESVJ9L1hQYXRoR3JhbW1hci5jcHApCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggNGMxOTljNDY2YTAyYWIwMmNjYTdkNTg3M2MxNzkzYzQxMTc2NzlkYS4uOWE5N2MxN2M2
OTFhMzM2YWY5N2Y5NmU1NzM0ZjQ3YWE4ZTY0Y2M5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCkBAIC03ODEsMzIgKzc4MSwxNCBAQCBlbmRpZgogIyAtLS0tLS0tLQogCiAjIENTUyBn
cmFtbWFyCi0jIE5PVEU6IE9sZGVyIHZlcnNpb25zIG9mIGJpc29uIGRvIG5vdCBpbmplY3QgYW4g
aW5jbHVzaW9uIGd1YXJkLCBzbyB3ZSBhZGQgb25lLgotCi1DU1NHcmFtbWFyLmNwcCA6IGNzcy9D
U1NHcmFtbWFyLnkKLQkkKEJJU09OKSAtZCAtcCBjc3N5eSAkPCAtbyAkQAotCXRvdWNoIENTU0dy
YW1tYXIuY3BwLmgKLQl0b3VjaCBDU1NHcmFtbWFyLmhwcAotCWVjaG8gJyNpZm5kZWYgQ1NTR3Jh
bW1hcl9oJyA+IENTU0dyYW1tYXIuaAotCWVjaG8gJyNkZWZpbmUgQ1NTR3JhbW1hcl9oJyA+PiBD
U1NHcmFtbWFyLmgKLQljYXQgQ1NTR3JhbW1hci5jcHAuaCBDU1NHcmFtbWFyLmhwcCA+PiBDU1NH
cmFtbWFyLmgKLQllY2hvICcjZW5kaWYnID4+IENTU0dyYW1tYXIuaAotCXJtIC1mIENTU0dyYW1t
YXIuY3BwLmggQ1NTR3JhbW1hci5ocHAKK0NTU0dyYW1tYXIuY3BwIDogY3NzL0NTU0dyYW1tYXIu
eS5pbgorCXBlcmwgLUkgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzICQoV2ViQ29yZSkvY3Nz
L21ha2VncmFtbWFyLnBsIC0tZXh0cmFEZWZpbmVzICIkKEZFQVRVUkVfREVGSU5FUykiIC0tb3V0
cHV0RGlyIC4gLS1iaXNvbiAiJChCSVNPTikiIC0tc3ltYm9sc1ByZWZpeCBjc3N5eSAkPAogCiAj
IC0tLS0tLS0tCiAKICMgWFBhdGggZ3JhbW1hcgotIyBOT1RFOiBPbGRlciB2ZXJzaW9ucyBvZiBi
aXNvbiBkbyBub3QgaW5qZWN0IGFuIGluY2x1c2lvbiBndWFyZCwgc28gd2UgYWRkIG9uZS4KLQog
WFBhdGhHcmFtbWFyLmNwcCA6IHhtbC9YUGF0aEdyYW1tYXIueSAkKFBST0pFQ1RfRklMRSkKLQkk
KEJJU09OKSAtZCAtcCB4cGF0aHl5ICQ8IC1vICRACi0JdG91Y2ggWFBhdGhHcmFtbWFyLmNwcC5o
Ci0JdG91Y2ggWFBhdGhHcmFtbWFyLmhwcAotCWVjaG8gJyNpZm5kZWYgWFBhdGhHcmFtbWFyX2gn
ID4gWFBhdGhHcmFtbWFyLmgKLQllY2hvICcjZGVmaW5lIFhQYXRoR3JhbW1hcl9oJyA+PiBYUGF0
aEdyYW1tYXIuaAotCWNhdCBYUGF0aEdyYW1tYXIuY3BwLmggWFBhdGhHcmFtbWFyLmhwcCA+PiBY
UGF0aEdyYW1tYXIuaAotCWVjaG8gJyNlbmRpZicgPj4gWFBhdGhHcmFtbWFyLmgKLQlybSAtZiBY
UGF0aEdyYW1tYXIuY3BwLmggWFBhdGhHcmFtbWFyLmhwcAorCXBlcmwgJChXZWJDb3JlKS9jc3Mv
bWFrZWdyYW1tYXIucGwgLS1vdXRwdXREaXIgLiAtLWJpc29uICIkKEJJU09OKSIgLS1zeW1ib2xz
UHJlZml4IHhwYXRoeXkgJDwKIAogIyAtLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5w
cmkKaW5kZXggODRjOWQwNzc3MWVkMWExNzQ1NjY3MmUyNzFlMzMxYmNhNGU2ODU4ZS4uODEwYWRl
ZDhhNWJlNDFiOTYyOWFkMjgwMGY1YThmZmI3MmExZTJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLnByaQpAQCAtMjQsNyArMjQsNyBAQCBTVkdfTkFNRVMgPSAkJFBXRC9zdmcvc3ZndGFncy5p
bgogCiBYTElOS19OQU1FUyA9ICQkUFdEL3N2Zy94bGlua2F0dHJzLmluCiAKLUNTU0JJU09OID0g
JCRQV0QvY3NzL0NTU0dyYW1tYXIueQorQ1NTQklTT04gPSAkJFBXRC9jc3MvQ1NTR3JhbW1hci55
LmluCiAKIGVuYWJsZT8oWFNMVCkgewogICAgIFhNTFZJRVdFUl9DU1MgPSAkJFBXRC94bWwvWE1M
Vmlld2VyLmNzcwpAQCAtODA0LDcgKzgwNCw3IEBAIEdFTkVSQVRPUlMgKz0gSW5qZWN0ZWRTY3Jp
cHRDYW52YXNNb2R1bGVTb3VyY2UKIGNzc2Jpc29uLm91dHB1dCA9ICR7UU1BS0VfRklMRV9CQVNF
fS5jcHAKIGNzc2Jpc29uLmlucHV0ID0gQ1NTQklTT04KIGNzc2Jpc29uLnNjcmlwdCA9ICQkUFdE
L2Nzcy9tYWtlZ3JhbW1hci5wbAotY3NzYmlzb24uY29tbWFuZHMgPSBwZXJsICQkY3NzYmlzb24u
c2NyaXB0ICR7UU1BS0VfRklMRV9OQU1FfSAke1FNQUtFX0ZVTkNfRklMRV9PVVRfUEFUSH0vJHtR
TUFLRV9GSUxFX0JBU0V9Citjc3NiaXNvbi5jb21tYW5kcyA9IHBlcmwgLUkgJCRQV0QvYmluZGlu
Z3Mvc2NyaXB0cyAkJGNzc2Jpc29uLnNjcmlwdCAtLW91dHB1dERpciAke1FNQUtFX0ZVTkNfRklM
RV9PVVRfUEFUSH0gLS1leHRyYURlZmluZXMgXCIkJHtERUZJTkVTfSAkJGNvbmZpZ0RlZmluZXMo
KVwiIC0tcHJlcHJvY2Vzc29yIFwiJCR7UU1BS0VfTU9DfSAtRVwiIC0tc3ltYm9sc1ByZWZpeCBj
c3N5eSAke1FNQUtFX0ZJTEVfTkFNRX0KIGNzc2Jpc29uLmRlcGVuZHMgPSAke1FNQUtFX0ZJTEVf
TkFNRX0KIEdFTkVSQVRPUlMgKz0gY3NzYmlzb24KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA1
Y2U4NTk1YTBmMjIxNWY3M2I2MGZmZGMxM2Q1ZmVmNzExMTk4OWI4Li4wZGFjNDNjMDUyN2QzZmI2
MmM5NjU0YjYzZjcxOTg2OWY3MWU5MDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjAwLDE4
ICsyMDAsMTAgQEAgZmVhdHVyZV9kZWZpbmVzX292ZXJyaWRlcyArPSBFTkFCTEVfTUVESUFfU1RS
RUFNPTAKIGVuZGlmICMgRU5EIEVOQUJMRV9NRURJQV9TVFJFQU0KIAogIyBYUGF0aCBncmFtbWFy
Ci0jIE5PVEU6IG9sZGVyIHZlcnNpb25zIG9mIGJpc29uIGRvIG5vdCBpbmplY3QgYW4gaW5jbHVz
aW9uIGd1YXJkLCBzbyB3ZSBkbyBpdAogJChHRU5TT1VSQ0VTX1dFQkNPUkUpL1hQYXRoR3JhbW1h
ci5oOiAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvWFBhdGhHcmFtbWFyLmNwcAogJChHRU5TT1VSQ0VT
X1dFQkNPUkUpL1hQYXRoR3JhbW1hci5jcHA6ICQoV2ViQ29yZSkveG1sL1hQYXRoR3JhbW1hci55
CiAJJChBTV9WX0dFTikKLQkkKEFNX1ZfYXQpcm0gLWYgJChHRU5TT1VSQ0VTX1dFQkNPUkUpL1hQ
YXRoR3JhbW1hci5jcHAuaCAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvWFBhdGhHcmFtbWFyLmhwcAot
CSQoQU1fVl9hdCkkKEJJU09OKSAtZCAtcCB4cGF0aHl5ICQ8IC1vICQoR0VOU09VUkNFU19XRUJD
T1JFKS9YUGF0aEdyYW1tYXIuY3BwCi0JJChBTV9WX2F0KXRvdWNoICQoR0VOU09VUkNFU19XRUJD
T1JFKS9YUGF0aEdyYW1tYXIuY3BwLmggJChHRU5TT1VSQ0VTX1dFQkNPUkUpL1hQYXRoR3JhbW1h
ci5ocHAKLQkkKEFNX1ZfYXQpZWNobyAnI2lmbmRlZiBYUGF0aEdyYW1tYXJfaCcgPiAkKEdFTlNP
VVJDRVNfV0VCQ09SRSkvWFBhdGhHcmFtbWFyLmgKLQkkKEFNX1ZfYXQpZWNobyAnI2RlZmluZSBY
UGF0aEdyYW1tYXJfaCcgPj4gJChHRU5TT1VSQ0VTX1dFQkNPUkUpL1hQYXRoR3JhbW1hci5oCi0J
JChBTV9WX2F0KWNhdCAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvWFBhdGhHcmFtbWFyLmNwcC5oICQo
R0VOU09VUkNFU19XRUJDT1JFKS9YUGF0aEdyYW1tYXIuaHBwID4+ICQoR0VOU09VUkNFU19XRUJD
T1JFKS9YUGF0aEdyYW1tYXIuaAotCSQoQU1fVl9hdCllY2hvICcjZW5kaWYnID4+ICQoR0VOU09V
UkNFU19XRUJDT1JFKS9YUGF0aEdyYW1tYXIuaAotCSQoQU1fVl9hdClybSAtZiAkKEdFTlNPVVJD
RVNfV0VCQ09SRSkvWFBhdGhHcmFtbWFyLmNwcC5oICQoR0VOU09VUkNFU19XRUJDT1JFKS9YUGF0
aEdyYW1tYXIuaHBwCisJJChBTV9WX2F0KXBlcmwgJChXZWJDb3JlKS9jc3MvbWFrZWdyYW1tYXIu
cGwgLS1vdXRwdXREaXIgJChHRU5TT1VSQ0VTX1dFQkNPUkUpIC0tYmlzb24gIiQoQklTT04pIiAt
LXN5bWJvbHNQcmVmaXggeHBhdGh5eSAkPAogCiAjIC0tLS0KICMgWFNMVCBTdXBwb3J0CkBAIC00
MTgsMTggKzQxMCwxMCBAQCBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbG9yRGF0YS5jcHA6ICQo
V2ViQ29yZSkvcGxhdGZvcm0vQ29sb3JEYXRhLmdwZXJmICQoV2ViQwogCiAjIENTUyBncmFtbWFy
CiAKLSMgTk9URTogb2xkZXIgdmVyc2lvbnMgb2YgYmlzb24gZG8gbm90IGluamVjdCBhbiBpbmNs
dXNpb24gZ3VhcmQsIHNvIHdlIGRvIGl0CiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0NTU0dyYW1t
YXIuaDogJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0NTU0dyYW1tYXIuY3BwCi1EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0NTU0dyYW1tYXIuY3BwOiAkKFdlYkNvcmUpL2Nzcy9DU1NHcmFtbWFyLnkKK0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTR3JhbW1hci5jcHA6ICQoV2ViQ29yZSkvY3NzL0NTU0dy
YW1tYXIueS5pbgogCSQoQU1fVl9HRU4pCi0JJChBTV9WX2F0KXJtIC1mICQoR0VOU09VUkNFU19X
RUJDT1JFKS9DU1NHcmFtbWFyLmNwcC5oICQoR0VOU09VUkNFU19XRUJDT1JFKS9DU1NHcmFtbWFy
LmhwcAotCSQoQU1fVl9hdCkkKEJJU09OKSAtZCAtcCBjc3N5eSAkPCAtbyAkKEdFTlNPVVJDRVNf
V0VCQ09SRSkvQ1NTR3JhbW1hci5jcHAKLQkkKEFNX1ZfYXQpdG91Y2ggJChHRU5TT1VSQ0VTX1dF
QkNPUkUpL0NTU0dyYW1tYXIuY3BwLmggJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0NTU0dyYW1tYXIu
aHBwCi0JJChBTV9WX2F0KWVjaG8gJyNpZm5kZWYgQ1NTR3JhbW1hcl9oJyA+ICQoR0VOU09VUkNF
U19XRUJDT1JFKS9DU1NHcmFtbWFyLmgKLQkkKEFNX1ZfYXQpZWNobyAnI2RlZmluZSBDU1NHcmFt
bWFyX2gnID4+ICQoR0VOU09VUkNFU19XRUJDT1JFKS9DU1NHcmFtbWFyLmgKLQkkKEFNX1ZfYXQp
Y2F0ICQoR0VOU09VUkNFU19XRUJDT1JFKS9DU1NHcmFtbWFyLmNwcC5oICQoR0VOU09VUkNFU19X
RUJDT1JFKS9DU1NHcmFtbWFyLmhwcCA+PiAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvQ1NTR3JhbW1h
ci5oCi0JJChBTV9WX2F0KWVjaG8gJyNlbmRpZicgPj4gJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0NT
U0dyYW1tYXIuaAotCSQoQU1fVl9hdClybSAtZiAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvQ1NTR3Jh
bW1hci5jcHAuaCAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvQ1NTR3JhbW1hci5ocHAKKwkkKEFNX1Zf
YXQpcGVybCAtSSAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMgJChXZWJDb3JlKS9jc3MvbWFr
ZWdyYW1tYXIucGwgLS1leHRyYURlZmluZXMgIiQoZmVhdHVyZV9kZWZpbmVzKSIgLS1vdXRwdXRE
aXIgJChHRU5TT1VSQ0VTX1dFQkNPUkUpIC0tYmlzb24gIiQoQklTT04pIiAtLXN5bWJvbHNQcmVm
aXggY3NzeXkgJDwKIAogIyB1c2VyIGFnZW50IHN0eWxlIHNoZWV0cwogVVNFUl9BR0VOVF9TVFlM
RV9TSEVFVFMgPSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJD
b3JlLmd5cCBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCmluZGV4IDAy
NGFlYWQ2MTQwY2Y2MDZjNzQ1ZmRjNWY4ZmQzZTBmNzc1YTA4NDAuLjIyNjliZTcyY2YzMzk1MDE1
OGFlZTlkN2Y5YWZhNGVkMGJhMzk0ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwL1dlYkNvcmUuZ3lwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNv
cmUuZ3lwCkBAIC01ODUsNyArNTg1LDcgQEAKICAgICAgIH0sCiAgICAgICAnc291cmNlcyc6IFsK
ICAgICAgICAgIyBiaXNvbiBydWxlCi0gICAgICAgICcuLi9jc3MvQ1NTR3JhbW1hci55JywKKyAg
ICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC9DU1NHcmFtbWFyLnknLAog
ICAgICAgICAnLi4veG1sL1hQYXRoR3JhbW1hci55JywKIAogICAgICAgICAjIGdwZXJmIHJ1bGUK
QEAgLTEwNzYsNiArMTA3NiwyOSBAQAogICAgICAgICAgICAgJzxAKGRlcml2ZWRfc291cmNlc19h
Z2dyZWdhdGVfZmlsZXMpJywKICAgICAgICAgICBdLAogICAgICAgICB9LAorICAgICAgICB7Cisg
ICAgICAgICAgJ2FjdGlvbl9uYW1lJzogJ3ByZXByb2Nlc3NfZ3JhbW1hcicsCisgICAgICAgICAg
J2lucHV0cyc6IFsKKyAgICAgICAgICAgICcuLi9jc3MvQ1NTR3JhbW1hci55LmluJywKKyAgICAg
ICAgICAgICcuLi9jc3MvQ1NTR3JhbW1hci55LmluY2x1ZGVzJywKKyAgICAgICAgICBdLAorICAg
ICAgICAgICdvdXRwdXRzJzogWworICAgICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9E
SVIpL3dlYmtpdC9DU1NHcmFtbWFyLnknLAorICAgICAgICAgIF0sCisgICAgICAgICAgJ2FjdGlv
bic6IFsKKyAgICAgICAgICAgICc8KHBlcmxfZXhlKScsCisgICAgICAgICAgICAnLUknLAorICAg
ICAgICAgICAgJy4uL2JpbmRpbmdzL3NjcmlwdHMnLAorICAgICAgICAgICAgJy4uL2Nzcy9tYWtl
Z3JhbW1hci5wbCcsCisgICAgICAgICAgICAnLS1vdXRwdXREaXInLAorICAgICAgICAgICAgJzwo
U0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdC8nLAorICAgICAgICAgICAgJy0tZXh0cmFE
ZWZpbmVzJywKKyAgICAgICAgICAgICc8KGZlYXR1cmVfZGVmaW5lcyknLAorICAgICAgICAgICAg
Jy0tcHJlcHJvY2Vzc09ubHknLAorICAgICAgICAgICAgJzxAKHByZXByb2Nlc3NvciknLAorICAg
ICAgICAgICAgJzxAKF9pbnB1dHMpJywKKyAgICAgICAgICBdLAorICAgICAgICB9LAogICAgICAg
XSwKICAgICAgICdydWxlcyc6IFsKICAgICAgICAgIyBSdWxlcyB0byBidWlsZCBkZXJpdmVkIHNv
dXJjZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmlu
ZGV4IGIxYzgzMGM3ZGI0YzRkNTJjYTcyNWRhYjg5MWYwNzQ4MjA3NTVkMTAuLjE3NjVhMzNhZGQ2
MDgxNDYxZDdlYjM3NjVjZDg3NDM0NzQwZGFiZWYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0zNTg3NSw3ICszNTg3NSwxMSBAQAogCQkJCT4K
IAkJCTwvRmlsZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTR3JhbW1h
ci55IgorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU0dyYW1tYXIueS5pbiIKKwkJCQk+CisJ
CQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU0dyYW1tYXIu
eS5pbmNsdWRlcyIKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdkYjYzMWM4OTM4
M2RmOTU3OWVlNDc5NWE2MTFlNzMwZTM3MWQ4YWUuLmZlN2Q5NWMyZTk4ZTA4Y2IyZTU1NDBjZThh
NTRjYzdmZTQ4ZGNlMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMDM4LDcgKzEzMDM4LDYgQEAKIAkJQkNFOTNGNDYxNTE3
QzZENTAwOENDRjc0IC8qIFJlbmRlclJlZ2lvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW5kZXJSZWdpb25TZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQ0VBNDc3QzA5N0NBQUM4MDA5NEM5RTQgLyogQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQ0VBNDc3RDA5N0NBQUM4MDA5NEM5RTQgLyogQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkNFQTQ3N0UwOTdDQUFD
ODAwOTRDOUU0IC8qIENTU0dyYW1tYXIueSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLnlhY2M7IHBh
dGggPSBDU1NHcmFtbWFyLnk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRUE0Nzg5
MDk3Q0FBQzgwMDk0QzlFNCAvKiBDU1NQcm9wZXJ0eU5hbWVzLmluICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBDU1NQcm9wZXJ0eU5hbWVzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQ0VBNDc4QzA5N0NBQUM4MDA5NEM5RTQgLyogQ1NTVmFsdWVLZXl3b3Jkcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gQ1NTVmFsdWVLZXl3b3Jkcy5pbjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkNFQTQ4MTMwOTdEOTMwMjAwOTRDOUU0IC8qIFJlbmRlckJsb2NrTGluZUxh
eW91dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyQmxv
Y2tMaW5lTGF5b3V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNzcwLDYg
KzEzNzY5LDggQEAKIAkJRkJENkFGODUxNUVGMjFENDAwOEI3MTEwIC8qIEJhc2ljU2hhcGVGdW5j
dGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzaWNTaGFwZUZ1bmN0
aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQkQ2QUY4NjE1RUYyMUQ0MDA4
QjcxMTAgLyogQ1NTQmFzaWNTaGFwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ1NTQmFzaWNTaGFwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGQkQ2QUY4NzE1RUYyMUQ0MDA4QjcxMTAgLyogQ1NTQmFzaWNTaGFwZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTQmFzaWNTaGFwZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRkNFQkNENzExNjIzQTc5MTAwMjk5NjVFIC8qIENTU0dyYW1tYXIueS5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUueWFjYzsgcGF0aCA9IENTU0dyYW1tYXIueS5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkNFQkNENzIxNjIzQTc5MTAwMjk5NjVFIC8qIENT
U0dyYW1tYXIueS5pbmNsdWRlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUueWFjYzsgcGF0aCA9IENT
U0dyYW1tYXIueS5pbmNsdWRlczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQwMEQ3
QTIxNEEzRjYxOTAwNzM0MDExIC8qIFNpbmNSZXNhbXBsZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2luY1Jlc2FtcGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZEMDBEN0EzMTRBM0Y2MTkwMDczNDAxMSAvKiBTaW5jUmVzYW1wbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbmNSZXNhbXBsZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQwNkRGQTMxMzRBNERFRjAwNkY1RDdEIC8qIERlZmF1
bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjExNDYsNyArMjExNDcsOCBAQAogCQkJCUJDMDJBNjNCMEUwOUE5Q0Yw
MDRCNkQyQiAvKiBDU1NGdW5jdGlvblZhbHVlLmggKi8sCiAJCQkJQkMyM0U0RTAwREFBQ0UwRjAw
OUZEQzkxIC8qIENTU0dyYWRpZW50VmFsdWUuY3BwICovLAogCQkJCUJDNTNDNjkxMERBNTkxMTQw
MDIxRUI1RCAvKiBDU1NHcmFkaWVudFZhbHVlLmggKi8sCi0JCQkJQkNFQTQ3N0UwOTdDQUFDODAw
OTRDOUU0IC8qIENTU0dyYW1tYXIueSAqLywKKwkJCQlGQ0VCQ0Q3MTE2MjNBNzkxMDAyOTk2NUUg
LyogQ1NTR3JhbW1hci55LmluICovLAorCQkJCUZDRUJDRDcyMTYyM0E3OTEwMDI5OTY1RSAvKiBD
U1NHcmFtbWFyLnkuaW5jbHVkZXMgKi8sCiAJCQkJQkM3NzJCMzYwQzRFQTkxRTAwODMyODVGIC8q
IENTU0hlbHBlci5oICovLAogCQkJCUJDMjNFNzZCMERBRTg4QTkwMDlGREM5MSAvKiBDU1NJbWFn
ZUdlbmVyYXRvclZhbHVlLmNwcCAqLywKIAkJCQlCQzIzRUU5MTBEQUVEMkJDMDA5RkRDOTEgLyog
Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyYW1tYXIueSBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlMzUzM2UzYzlmM2I3OTBkNjc5Zjk1ZmYwYTFjNzk1
MWMxOGM5NTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQorKysgL2Rldi9udWxsCkBAIC0xLDE3NzAg
KzAsMCBAQAotJXsKLQotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDItMjAwMyBMYXJzIEtub2xs
IChrbm9sbEBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
NywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAg
Q29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KLSAqCi0g
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICog
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg
TUEgIDAyMTEwLTEzMDEgIFVTQQotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNp
bmNsdWRlICJDU1NQYXJzZXIuaCIKLSNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCi0jaW5jbHVk
ZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKLSNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCi0j
aW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKLSNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIKLSNp
bmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIk1l
ZGlhTGlzdC5oIgotI2luY2x1ZGUgIk1lZGlhUXVlcnlFeHAuaCIKLSNpbmNsdWRlICJTdHlsZVJ1
bGUuaCIKLSNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKLSNpbmNsdWRlICJXZWJLaXRD
U1NLZXlmcmFtZVJ1bGUuaCIKLSNpbmNsdWRlICJXZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmgiCi0j
aW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRl
IDxzdHJpbmcuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwotCi0jZGVmaW5lIFlZTUFMTE9DIGZhc3RNYWxsb2MKLSNkZWZpbmUgWVlGUkVF
IGZhc3RGcmVlCi0KLSNkZWZpbmUgWVlFTkFCTEVfTkxTIDAKLSNkZWZpbmUgWVlMVFlQRV9JU19U
UklWSUFMIDEKLSNkZWZpbmUgWVlNQVhERVBUSCAxMDAwMAotI2RlZmluZSBZWURFQlVHIDAKLQot
JX0KLQotJXB1cmVfcGFyc2VyCi0KLSVwYXJzZS1wYXJhbSB7IENTU1BhcnNlciogcGFyc2VyIH0K
LSVsZXgtcGFyYW0geyBDU1NQYXJzZXIqIHBhcnNlciB9Ci0KLSV1bmlvbiB7Ci0gICAgYm9vbCBi
b29sZWFuOwotICAgIGNoYXIgY2hhcmFjdGVyOwotICAgIGludCBpbnRlZ2VyOwotICAgIGRvdWJs
ZSBudW1iZXI7Ci0gICAgQ1NTUGFyc2VyU3RyaW5nIHN0cmluZzsKLQotICAgIFN0eWxlUnVsZUJh
c2UqIHJ1bGU7Ci0gICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiA+KiBydWxlTGlzdDsK
LSAgICBDU1NQYXJzZXJTZWxlY3Rvciogc2VsZWN0b3I7Ci0gICAgQ1NTU2VsZWN0b3JWZWN0b3Iq
IHNlbGVjdG9yTGlzdDsKLSAgICBDU1NTZWxlY3Rvcjo6TWFyZ2luQm94VHlwZSBtYXJnaW5Cb3g7
Ci0gICAgQ1NTU2VsZWN0b3I6OlJlbGF0aW9uIHJlbGF0aW9uOwotICAgIE1lZGlhUXVlcnlTZXQq
IG1lZGlhTGlzdDsKLSAgICBNZWRpYVF1ZXJ5KiBtZWRpYVF1ZXJ5OwotICAgIE1lZGlhUXVlcnk6
OlJlc3RyaWN0b3IgbWVkaWFRdWVyeVJlc3RyaWN0b3I7Ci0gICAgTWVkaWFRdWVyeUV4cCogbWVk
aWFRdWVyeUV4cDsKLSAgICBDU1NQYXJzZXJWYWx1ZSB2YWx1ZTsKLSAgICBDU1NQYXJzZXJWYWx1
ZUxpc3QqIHZhbHVlTGlzdDsKLSAgICBWZWN0b3I8T3duUHRyPE1lZGlhUXVlcnlFeHA+ID4qIG1l
ZGlhUXVlcnlFeHBMaXN0OwotICAgIFN0eWxlS2V5ZnJhbWUqIGtleWZyYW1lOwotICAgIFZlY3Rv
cjxSZWZQdHI8U3R5bGVLZXlmcmFtZT4gPioga2V5ZnJhbWVSdWxlTGlzdDsKLSAgICBmbG9hdCB2
YWw7Ci0gICAgQ1NTUHJvcGVydHlJRCBpZDsKLX0KLQotJXsKLQotI2lmIFlZREVCVUcgPiAwCi0j
ZGVmaW5lIFlZUFJJTlQoRmlsZSxUeXBlLFZhbHVlKSBwcmludF90b2tlbl92YWx1ZShGaWxlLFR5
cGUsVmFsdWUpCi1zdGF0aWMgdm9pZCBwcmludF90b2tlbl92YWx1ZShGSUxFICogeXlvdXRwdXQs
IGludCB5eXR5cGUsIFlZU1RZUEUgY29uc3QgJnl5dmFsdWUpOwotI2VuZGlmCi0KLXN0YXRpYyBp
bmxpbmUgaW50IGNzc3l5ZXJyb3Iodm9pZCosIGNvbnN0IGNoYXIqKQotewotICAgIHJldHVybiAx
OwotfQotCi0lfQotCi0lZXhwZWN0IDY1Ci0KLSVub25hc3NvYyBMT1dFU1RfUFJFQwotCi0lbGVm
dCBVTklNUE9SVEFOVF9UT0sKLQotJXRva2VuIFdISVRFU1BBQ0UgU0dNTF9DRAotJXRva2VuIFRP
S0VOX0VPRiAwCi0KLSV0b2tlbiBJTkNMVURFUwotJXRva2VuIERBU0hNQVRDSAotJXRva2VuIEJF
R0lOU1dJVEgKLSV0b2tlbiBFTkRTV0lUSAotJXRva2VuIENPTlRBSU5TCi0KLSV0b2tlbiA8c3Ry
aW5nPiBTVFJJTkcKLSVyaWdodCA8c3RyaW5nPiBJREVOVAotJXRva2VuIDxzdHJpbmc+IE5USAot
Ci0lbm9uYXNzb2MgPHN0cmluZz4gSEVYCi0lbm9uYXNzb2MgPHN0cmluZz4gSURTRUwKLSVub25h
c3NvYyAnOicKLSVub25hc3NvYyAnLicKLSVub25hc3NvYyAnWycKLSVub25hc3NvYyA8c3RyaW5n
PiAnKicKLSVub25hc3NvYyBlcnJvcgotJWxlZnQgJ3wnCi0KLSV0b2tlbiBJTVBPUlRfU1lNCi0l
dG9rZW4gUEFHRV9TWU0KLSV0b2tlbiBNRURJQV9TWU0KLSV0b2tlbiBGT05UX0ZBQ0VfU1lNCi0l
dG9rZW4gQ0hBUlNFVF9TWU0KLSV0b2tlbiBOQU1FU1BBQ0VfU1lNCi0ldG9rZW4gVkFSRlVOQ1RJ
T04KLSV0b2tlbiBXRUJLSVRfUlVMRV9TWU0KLSV0b2tlbiBXRUJLSVRfREVDTFNfU1lNCi0ldG9r
ZW4gV0VCS0lUX0tFWUZSQU1FX1JVTEVfU1lNCi0ldG9rZW4gV0VCS0lUX0tFWUZSQU1FU19TWU0K
LSV0b2tlbiBXRUJLSVRfVkFMVUVfU1lNCi0ldG9rZW4gV0VCS0lUX01FRElBUVVFUllfU1lNCi0l
dG9rZW4gV0VCS0lUX1NFTEVDVE9SX1NZTQotJXRva2VuIFdFQktJVF9SRUdJT05fUlVMRV9TWU0K
LSV0b2tlbiA8bWFyZ2luQm94PiBUT1BMRUZUQ09STkVSX1NZTQotJXRva2VuIDxtYXJnaW5Cb3g+
IFRPUExFRlRfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gVE9QQ0VOVEVSX1NZTQotJXRva2VuIDxt
YXJnaW5Cb3g+IFRPUFJJR0hUX1NZTQotJXRva2VuIDxtYXJnaW5Cb3g+IFRPUFJJR0hUQ09STkVS
X1NZTQotJXRva2VuIDxtYXJnaW5Cb3g+IEJPVFRPTUxFRlRDT1JORVJfU1lNCi0ldG9rZW4gPG1h
cmdpbkJveD4gQk9UVE9NTEVGVF9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBCT1RUT01DRU5URVJf
U1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gQk9UVE9NUklHSFRfU1lNCi0ldG9rZW4gPG1hcmdpbkJv
eD4gQk9UVE9NUklHSFRDT1JORVJfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gTEVGVFRPUF9TWU0K
LSV0b2tlbiA8bWFyZ2luQm94PiBMRUZUTUlERExFX1NZTQotJXRva2VuIDxtYXJnaW5Cb3g+IExF
RlRCT1RUT01fU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gUklHSFRUT1BfU1lNCi0ldG9rZW4gPG1h
cmdpbkJveD4gUklHSFRNSURETEVfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gUklHSFRCT1RUT01f
U1lNCi0KLSV0b2tlbiBBVEtFWVdPUkQKLQotJXRva2VuIElNUE9SVEFOVF9TWU0KLSV0b2tlbiBN
RURJQV9PTkxZCi0ldG9rZW4gTUVESUFfTk9UCi0ldG9rZW4gTUVESUFfQU5ECi0KLSV0b2tlbiA8
bnVtYmVyPiBSRU1TCi0ldG9rZW4gPG51bWJlcj4gUUVNUwotJXRva2VuIDxudW1iZXI+IEVNUwot
JXRva2VuIDxudW1iZXI+IEVYUwotJXRva2VuIDxudW1iZXI+IFBYUwotJXRva2VuIDxudW1iZXI+
IENNUwotJXRva2VuIDxudW1iZXI+IE1NUwotJXRva2VuIDxudW1iZXI+IElOUwotJXRva2VuIDxu
dW1iZXI+IFBUUwotJXRva2VuIDxudW1iZXI+IFBDUwotJXRva2VuIDxudW1iZXI+IERFR1MKLSV0
b2tlbiA8bnVtYmVyPiBSQURTCi0ldG9rZW4gPG51bWJlcj4gR1JBRFMKLSV0b2tlbiA8bnVtYmVy
PiBUVVJOUwotJXRva2VuIDxudW1iZXI+IE1TRUNTCi0ldG9rZW4gPG51bWJlcj4gU0VDUwotJXRv
a2VuIDxudW1iZXI+IEhFUlRaCi0ldG9rZW4gPG51bWJlcj4gS0hFUlRaCi0ldG9rZW4gPHN0cmlu
Zz4gRElNRU4KLSV0b2tlbiA8c3RyaW5nPiBJTlZBTElERElNRU4KLSV0b2tlbiA8bnVtYmVyPiBQ
RVJDRU5UQUdFCi0ldG9rZW4gPG51bWJlcj4gRkxPQVRUT0tFTgotJXRva2VuIDxudW1iZXI+IElO
VEVHRVIKLSV0b2tlbiA8bnVtYmVyPiBWVwotJXRva2VuIDxudW1iZXI+IFZICi0ldG9rZW4gPG51
bWJlcj4gVk1JTgotJXRva2VuIDxudW1iZXI+IERQUFgKLSV0b2tlbiA8bnVtYmVyPiBEUEkKLSV0
b2tlbiA8bnVtYmVyPiBEUENNCi0KLSV0b2tlbiA8c3RyaW5nPiBVUkkKLSV0b2tlbiA8c3RyaW5n
PiBGVU5DVElPTgotJXRva2VuIDxzdHJpbmc+IEFOWUZVTkNUSU9OCi0ldG9rZW4gPHN0cmluZz4g
Tk9URlVOQ1RJT04KLSV0b2tlbiA8c3RyaW5nPiBDQUxDRlVOQ1RJT04KLSV0b2tlbiA8c3RyaW5n
PiBNSU5GVU5DVElPTgotJXRva2VuIDxzdHJpbmc+IE1BWEZVTkNUSU9OCi0ldG9rZW4gPHN0cmlu
Zz4gVkFSX0RFRklOSVRJT04KLQotJXRva2VuIDxzdHJpbmc+IFVOSUNPREVSQU5HRQotCi0ldHlw
ZSA8cmVsYXRpb24+IGNvbWJpbmF0b3IKLQotJXR5cGUgPHJ1bGU+IGNoYXJzZXQKLSV0eXBlIDxy
dWxlPiBpZ25vcmVkX2NoYXJzZXQKLSV0eXBlIDxydWxlPiBydWxlc2V0Ci0ldHlwZSA8cnVsZT4g
bWVkaWEKLSV0eXBlIDxydWxlPiBpbXBvcnQKLSV0eXBlIDxydWxlPiBuYW1lc3BhY2UKLSV0eXBl
IDxydWxlPiBwYWdlCi0ldHlwZSA8cnVsZT4gbWFyZ2luX2JveAotJXR5cGUgPHJ1bGU+IGZvbnRf
ZmFjZQotJXR5cGUgPHJ1bGU+IGtleWZyYW1lcwotJXR5cGUgPHJ1bGU+IGludmFsaWRfcnVsZQot
JXR5cGUgPHJ1bGU+IHNhdmVfYmxvY2sKLSV0eXBlIDxydWxlPiBpbnZhbGlkX2F0Ci0ldHlwZSA8
cnVsZT4gcnVsZQotJXR5cGUgPHJ1bGU+IHZhbGlkX3J1bGUKLSV0eXBlIDxydWxlTGlzdD4gYmxv
Y2tfcnVsZV9saXN0IAotJXR5cGUgPHJ1bGU+IGJsb2NrX3J1bGUKLSV0eXBlIDxydWxlPiBibG9j
a192YWxpZF9ydWxlCi0ldHlwZSA8cnVsZT4gcmVnaW9uCi0KLSV0eXBlIDxzdHJpbmc+IG1heWJl
X25zX3ByZWZpeAotCi0ldHlwZSA8c3RyaW5nPiBuYW1lc3BhY2Vfc2VsZWN0b3IKLQotJXR5cGUg
PHN0cmluZz4gc3RyaW5nX29yX3VyaQotJXR5cGUgPHN0cmluZz4gaWRlbnRfb3Jfc3RyaW5nCi0l
dHlwZSA8c3RyaW5nPiBtZWRpdW0KLSV0eXBlIDxtYXJnaW5Cb3g+IG1hcmdpbl9zeW0KLQotJXR5
cGUgPHN0cmluZz4gbWVkaWFfZmVhdHVyZQotJXR5cGUgPG1lZGlhTGlzdD4gbWVkaWFfbGlzdAot
JXR5cGUgPG1lZGlhTGlzdD4gbWF5YmVfbWVkaWFfbGlzdAotJXR5cGUgPG1lZGlhUXVlcnk+IG1l
ZGlhX3F1ZXJ5Ci0ldHlwZSA8bWVkaWFRdWVyeVJlc3RyaWN0b3I+IG1heWJlX21lZGlhX3Jlc3Ry
aWN0b3IKLSV0eXBlIDx2YWx1ZUxpc3Q+IG1heWJlX21lZGlhX3ZhbHVlCi0ldHlwZSA8bWVkaWFR
dWVyeUV4cD4gbWVkaWFfcXVlcnlfZXhwCi0ldHlwZSA8bWVkaWFRdWVyeUV4cExpc3Q+IG1lZGlh
X3F1ZXJ5X2V4cF9saXN0Ci0ldHlwZSA8bWVkaWFRdWVyeUV4cExpc3Q+IG1heWJlX2FuZF9tZWRp
YV9xdWVyeV9leHBfbGlzdAotCi0ldHlwZSA8c3RyaW5nPiBrZXlmcmFtZV9uYW1lCi0ldHlwZSA8
a2V5ZnJhbWU+IGtleWZyYW1lX3J1bGUKLSV0eXBlIDxrZXlmcmFtZVJ1bGVMaXN0PiBrZXlmcmFt
ZXNfcnVsZQotJXR5cGUgPHZhbHVlTGlzdD4ga2V5X2xpc3QKLSV0eXBlIDx2YWx1ZT4ga2V5Ci0K
LSV0eXBlIDxpZD4gcHJvcGVydHkKLQotJXR5cGUgPHNlbGVjdG9yPiBzcGVjaWZpZXIKLSV0eXBl
IDxzZWxlY3Rvcj4gc3BlY2lmaWVyX2xpc3QKLSV0eXBlIDxzZWxlY3Rvcj4gc2ltcGxlX3NlbGVj
dG9yCi0ldHlwZSA8c2VsZWN0b3I+IHNlbGVjdG9yCi0ldHlwZSA8c2VsZWN0b3JMaXN0PiBzZWxl
Y3Rvcl9saXN0Ci0ldHlwZSA8c2VsZWN0b3JMaXN0PiBzaW1wbGVfc2VsZWN0b3JfbGlzdAotJXR5
cGUgPHNlbGVjdG9yTGlzdD4gcmVnaW9uX3NlbGVjdG9yCi0ldHlwZSA8c2VsZWN0b3I+IHNlbGVj
dG9yX3dpdGhfdHJhaWxpbmdfd2hpdGVzcGFjZQotJXR5cGUgPHNlbGVjdG9yPiBjbGFzcwotJXR5
cGUgPHNlbGVjdG9yPiBhdHRyaWIKLSV0eXBlIDxzZWxlY3Rvcj4gcHNldWRvCi0ldHlwZSA8c2Vs
ZWN0b3I+IHBzZXVkb19wYWdlCi0ldHlwZSA8c2VsZWN0b3I+IHBhZ2Vfc2VsZWN0b3IKLQotJXR5
cGUgPGJvb2xlYW4+IGRlY2xhcmF0aW9uX2xpc3QKLSV0eXBlIDxib29sZWFuPiBkZWNsX2xpc3QK
LSV0eXBlIDxib29sZWFuPiBkZWNsYXJhdGlvbgotJXR5cGUgPGJvb2xlYW4+IGRlY2xhcmF0aW9u
c19hbmRfbWFyZ2lucwotCi0ldHlwZSA8Ym9vbGVhbj4gcHJpbwotCi0ldHlwZSA8aW50ZWdlcj4g
bWF0Y2gKLSV0eXBlIDxpbnRlZ2VyPiB1bmFyeV9vcGVyYXRvcgotJXR5cGUgPGludGVnZXI+IG1h
eWJlX3VuYXJ5X29wZXJhdG9yCi0ldHlwZSA8Y2hhcmFjdGVyPiBvcGVyYXRvcgotCi0ldHlwZSA8
dmFsdWVMaXN0PiBleHByCi0ldHlwZSA8dmFsdWU+IHRlcm0KLSV0eXBlIDx2YWx1ZT4gdW5hcnlf
dGVybQotJXR5cGUgPHZhbHVlPiBmdW5jdGlvbgotJXR5cGUgPHZhbHVlPiBjYWxjX2Z1bmNfdGVy
bQotJXR5cGUgPGNoYXJhY3Rlcj4gY2FsY19mdW5jX29wZXJhdG9yCi0ldHlwZSA8dmFsdWVMaXN0
PiBjYWxjX2Z1bmNfZXhwcgotJXR5cGUgPHZhbHVlTGlzdD4gY2FsY19mdW5jX2V4cHJfbGlzdAot
JXR5cGUgPHZhbHVlTGlzdD4gY2FsY19mdW5jX3BhcmVuX2V4cHIKLSV0eXBlIDx2YWx1ZT4gY2Fs
Y19mdW5jdGlvbgotJXR5cGUgPHN0cmluZz4gbWluX29yX21heAotJXR5cGUgPHZhbHVlPiBtaW5f
b3JfbWF4X2Z1bmN0aW9uCi0KLSV0eXBlIDxzdHJpbmc+IGVsZW1lbnRfbmFtZQotJXR5cGUgPHN0
cmluZz4gYXR0cl9uYW1lCi0KLSUlCi0KLXN0eWxlc2hlZXQ6Ci0gICAgbWF5YmVfc3BhY2UgbWF5
YmVfY2hhcnNldCBtYXliZV9zZ21sIHJ1bGVfbGlzdAotICB8IHdlYmtpdF9ydWxlIG1heWJlX3Nw
YWNlCi0gIHwgd2Via2l0X2RlY2xzIG1heWJlX3NwYWNlCi0gIHwgd2Via2l0X3ZhbHVlIG1heWJl
X3NwYWNlCi0gIHwgd2Via2l0X21lZGlhcXVlcnkgbWF5YmVfc3BhY2UKLSAgfCB3ZWJraXRfc2Vs
ZWN0b3IgbWF5YmVfc3BhY2UKLSAgfCB3ZWJraXRfa2V5ZnJhbWVfcnVsZSBtYXliZV9zcGFjZQot
ICA7Ci0KLXdlYmtpdF9ydWxlOgotICAgIFdFQktJVF9SVUxFX1NZTSAneycgbWF5YmVfc3BhY2Ug
dmFsaWRfcnVsZSBtYXliZV9zcGFjZSAnfScgewotICAgICAgICBwYXJzZXItPm1fcnVsZSA9ICQ0
OwotICAgIH0KLTsKLQotd2Via2l0X2tleWZyYW1lX3J1bGU6Ci0gICAgV0VCS0lUX0tFWUZSQU1F
X1JVTEVfU1lNICd7JyBtYXliZV9zcGFjZSBrZXlmcmFtZV9ydWxlIG1heWJlX3NwYWNlICd9JyB7
Ci0gICAgICAgIHBhcnNlci0+bV9rZXlmcmFtZSA9ICQ0OwotICAgIH0KLTsKLQotd2Via2l0X2Rl
Y2xzOgotICAgIFdFQktJVF9ERUNMU19TWU0gJ3snIG1heWJlX3NwYWNlX2JlZm9yZV9kZWNsYXJh
dGlvbiBkZWNsYXJhdGlvbl9saXN0ICd9JyB7Ci0gICAgICAgIC8qIGNhbiBiZSBlbXB0eSAqLwot
ICAgIH0KLTsKLQotd2Via2l0X3ZhbHVlOgotICAgIFdFQktJVF9WQUxVRV9TWU0gJ3snIG1heWJl
X3NwYWNlIGV4cHIgJ30nIHsKLSAgICAgICAgaWYgKCQ0KSB7Ci0gICAgICAgICAgICBwYXJzZXIt
Pm1fdmFsdWVMaXN0ID0gcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDQpOwotICAgICAg
ICAgICAgaW50IG9sZFBhcnNlZFByb3BlcnRpZXMgPSBwYXJzZXItPm1fcGFyc2VkUHJvcGVydGll
cy0+c2l6ZSgpOwotICAgICAgICAgICAgaWYgKCFwYXJzZXItPnBhcnNlVmFsdWUocGFyc2VyLT5t
X2lkLCBwYXJzZXItPm1faW1wb3J0YW50KSkKLSAgICAgICAgICAgICAgICBwYXJzZXItPnJvbGxi
YWNrTGFzdFByb3BlcnRpZXMocGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKSAtIG9s
ZFBhcnNlZFByb3BlcnRpZXMpOwotICAgICAgICAgICAgcGFyc2VyLT5tX3ZhbHVlTGlzdCA9IG51
bGxwdHI7Ci0gICAgICAgIH0KLSAgICB9Ci07Ci0KLXdlYmtpdF9tZWRpYXF1ZXJ5OgotICAgICBX
RUJLSVRfTUVESUFRVUVSWV9TWU0gV0hJVEVTUEFDRSBtYXliZV9zcGFjZSBtZWRpYV9xdWVyeSAn
fScgewotICAgICAgICAgcGFyc2VyLT5tX21lZGlhUXVlcnkgPSBwYXJzZXItPnNpbmtGbG9hdGlu
Z01lZGlhUXVlcnkoJDQpOwotICAgICB9Ci07Ci0KLXdlYmtpdF9zZWxlY3RvcjoKLSAgICBXRUJL
SVRfU0VMRUNUT1JfU1lNICd7JyBtYXliZV9zcGFjZSBzZWxlY3Rvcl9saXN0ICd9JyB7Ci0gICAg
ICAgIGlmICgkNCkgewotICAgICAgICAgICAgaWYgKHBhcnNlci0+bV9zZWxlY3Rvckxpc3RGb3JQ
YXJzZVNlbGVjdG9yKQotICAgICAgICAgICAgICAgIHBhcnNlci0+bV9zZWxlY3Rvckxpc3RGb3JQ
YXJzZVNlbGVjdG9yLT5hZG9wdFNlbGVjdG9yVmVjdG9yKCokNCk7Ci0gICAgICAgIH0KLSAgICB9
Ci07Ci0KLW1heWJlX3NwYWNlOgotICAgIC8qIGVtcHR5ICovICVwcmVjIFVOSU1QT1JUQU5UX1RP
SwotICB8IG1heWJlX3NwYWNlIFdISVRFU1BBQ0UKLSAgOwotCi1tYXliZV9zZ21sOgotICAgIC8q
IGVtcHR5ICovCi0gIHwgbWF5YmVfc2dtbCBTR01MX0NECi0gIHwgbWF5YmVfc2dtbCBXSElURVNQ
QUNFCi0gIDsKLQotbWF5YmVfY2hhcnNldDoKLSAgIC8qIGVtcHR5ICovCi0gIHwgY2hhcnNldCB7
Ci0gIH0KLSAgOwotCi1jbG9zaW5nX2JyYWNlOgotICAgICd9JwotICB8ICVwcmVjIExPV0VTVF9Q
UkVDIFRPS0VOX0VPRgotICA7Ci0KLWNoYXJzZXQ6Ci0gIENIQVJTRVRfU1lNIG1heWJlX3NwYWNl
IFNUUklORyBtYXliZV9zcGFjZSAnOycgewotICAgICBpZiAocGFyc2VyLT5tX3N0eWxlU2hlZXQp
Ci0gICAgICAgICBwYXJzZXItPm1fc3R5bGVTaGVldC0+cGFyc2VyU2V0RW5jb2RpbmdGcm9tQ2hh
cnNldFJ1bGUoJDMpOwotICAgICBpZiAocGFyc2VyLT5pc0V4dHJhY3RpbmdTb3VyY2VEYXRhKCkg
JiYgcGFyc2VyLT5tX2N1cnJlbnRSdWxlRGF0YVN0YWNrLT5pc0VtcHR5KCkgJiYgcGFyc2VyLT5t
X3J1bGVTb3VyY2VEYXRhUmVzdWx0KQotICAgICAgICAgcGFyc2VyLT5hZGROZXdSdWxlVG9Tb3Vy
Y2VUcmVlKENTU1J1bGVTb3VyY2VEYXRhOjpjcmVhdGVVbmtub3duKCkpOwotICAgICAkJCA9IDA7
Ci0gIH0KLSAgfCBDSEFSU0VUX1NZTSBlcnJvciBpbnZhbGlkX2Jsb2NrIHsKLSAgfQotICB8IENI
QVJTRVRfU1lNIGVycm9yICc7JyB7Ci0gIH0KLTsKLQotaWdub3JlZF9jaGFyc2V0OgotICAgIENI
QVJTRVRfU1lNIG1heWJlX3NwYWNlIFNUUklORyBtYXliZV9zcGFjZSAnOycgewotICAgICAgICAv
LyBJZ25vcmUgYW55IEBjaGFyc2V0IHJ1bGUgbm90IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0
eWxlIHNoZWV0LgotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgIHwgQ0hBUlNFVF9TWU0gbWF5
YmVfc3BhY2UgJzsnIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLTsKLQotcnVsZV9saXN0Ogot
ICAgLyogZW1wdHkgKi8KLSB8IHJ1bGVfbGlzdCBydWxlIG1heWJlX3NnbWwgewotICAgICBpZiAo
JDIgJiYgcGFyc2VyLT5tX3N0eWxlU2hlZXQpCi0gICAgICAgICBwYXJzZXItPm1fc3R5bGVTaGVl
dC0+cGFyc2VyQXBwZW5kUnVsZSgkMik7Ci0gfQotIDsKLQotdmFsaWRfcnVsZToKLSAgICBydWxl
c2V0Ci0gIHwgbWVkaWEKLSAgfCBwYWdlCi0gIHwgZm9udF9mYWNlCi0gIHwga2V5ZnJhbWVzCi0g
IHwgbmFtZXNwYWNlCi0gIHwgaW1wb3J0Ci0gIHwgcmVnaW9uCi0gIDsKLQotcnVsZToKLSAgICB2
YWxpZF9ydWxlIHsKLSAgICAgICAgcGFyc2VyLT5tX2hhZFN5bnRhY3RpY2FsbHlWYWxpZENTU1J1
bGUgPSB0cnVlOwotICAgIH0KLSAgfCBpZ25vcmVkX2NoYXJzZXQKLSAgfCBpbnZhbGlkX3J1bGUK
LSAgfCBpbnZhbGlkX2F0Ci0gIDsKLQotYmxvY2tfcnVsZV9saXN0OiAKLSAgICAvKiBlbXB0eSAq
LyB7ICQkID0gMDsgfQotICB8IGJsb2NrX3J1bGVfbGlzdCBibG9ja19ydWxlIG1heWJlX3NnbWwg
ewotICAgICAgJCQgPSAkMTsKLSAgICAgIGlmICgkMikgewotICAgICAgICAgIGlmICghJCQpCi0g
ICAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVSdWxlTGlzdCgpOwotICAgICAgICAgICQk
LT5hcHBlbmQoJDIpOwotICAgICAgfQotICB9Ci0gIDsKLQotYmxvY2tfdmFsaWRfcnVsZToKLSAg
ICBydWxlc2V0Ci0gIHwgcGFnZQotICB8IGZvbnRfZmFjZQotICB8IGtleWZyYW1lcwotICA7Ci0K
LWJsb2NrX3J1bGU6Ci0gICAgYmxvY2tfdmFsaWRfcnVsZQotICB8IGludmFsaWRfcnVsZQotICB8
IGludmFsaWRfYXQKLSAgfCBuYW1lc3BhY2UKLSAgfCBpbXBvcnQKLSAgfCBtZWRpYQotICA7Ci0K
LWF0X2ltcG9ydF9oZWFkZXJfZW5kX21heWJlX3NwYWNlOgotICAgIG1heWJlX3NwYWNlIHsKLSAg
ICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlckVuZCgpOwotICAgICAgICBwYXJzZXItPm1hcmtS
dWxlQm9keVN0YXJ0KCk7Ci0gICAgfQotICAgIDsKLQotYmVmb3JlX2ltcG9ydF9ydWxlOgotICAg
IC8qIGVtcHR5ICovIHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1
bGVTb3VyY2VEYXRhOjpJTVBPUlRfUlVMRSk7Ci0gICAgfQotICAgIDsKLQotaW1wb3J0OgotICAg
IGJlZm9yZV9pbXBvcnRfcnVsZSBJTVBPUlRfU1lNIGF0X2ltcG9ydF9oZWFkZXJfZW5kX21heWJl
X3NwYWNlIHN0cmluZ19vcl91cmkgbWF5YmVfc3BhY2UgbWF5YmVfbWVkaWFfbGlzdCAnOycgewot
ICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlSW1wb3J0UnVsZSgkNCwgJDYpOwotICAgIH0KLSAg
fCBiZWZvcmVfaW1wb3J0X3J1bGUgSU1QT1JUX1NZTSBhdF9pbXBvcnRfaGVhZGVyX2VuZF9tYXli
ZV9zcGFjZSBzdHJpbmdfb3JfdXJpIG1heWJlX3NwYWNlIG1heWJlX21lZGlhX2xpc3QgVE9LRU5f
RU9GIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUltcG9ydFJ1bGUoJDQsICQ2KTsKLSAg
ICB9Ci0gIHwgYmVmb3JlX2ltcG9ydF9ydWxlIElNUE9SVF9TWU0gYXRfaW1wb3J0X2hlYWRlcl9l
bmRfbWF5YmVfc3BhY2Ugc3RyaW5nX29yX3VyaSBtYXliZV9zcGFjZSBtYXliZV9tZWRpYV9saXN0
IGludmFsaWRfYmxvY2sgewotICAgICAgICAkJCA9IDA7Ci0gICAgICAgIHBhcnNlci0+cG9wUnVs
ZURhdGEoKTsKLSAgICB9Ci0gIHwgYmVmb3JlX2ltcG9ydF9ydWxlIElNUE9SVF9TWU0gZXJyb3Ig
JzsnIHsKLSAgICAgICAgJCQgPSAwOwotICAgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7Ci0g
ICAgfQotICB8IGJlZm9yZV9pbXBvcnRfcnVsZSBJTVBPUlRfU1lNIGVycm9yIGludmFsaWRfYmxv
Y2sgewotICAgICAgICAkJCA9IDA7Ci0gICAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKLSAg
ICB9Ci0gIDsKLQotbmFtZXNwYWNlOgotTkFNRVNQQUNFX1NZTSBtYXliZV9zcGFjZSBtYXliZV9u
c19wcmVmaXggc3RyaW5nX29yX3VyaSBtYXliZV9zcGFjZSAnOycgewotICAgIHBhcnNlci0+YWRk
TmFtZXNwYWNlKCQzLCAkNCk7Ci0gICAgJCQgPSAwOwotfQotfCBOQU1FU1BBQ0VfU1lNIG1heWJl
X3NwYWNlIG1heWJlX25zX3ByZWZpeCBzdHJpbmdfb3JfdXJpIG1heWJlX3NwYWNlIGludmFsaWRf
YmxvY2sgewotICAgICQkID0gMDsKLX0KLXwgTkFNRVNQQUNFX1NZTSBlcnJvciBpbnZhbGlkX2Js
b2NrIHsKLSAgICAkJCA9IDA7Ci19Ci18IE5BTUVTUEFDRV9TWU0gZXJyb3IgJzsnIHsKLSAgICAk
JCA9IDA7Ci19Ci07Ci0KLW1heWJlX25zX3ByZWZpeDoKLS8qIGVtcHR5ICovIHsgJCQuY2xlYXIo
KTsgfQotfCBJREVOVCBtYXliZV9zcGFjZSB7ICQkID0gJDE7IH0KLTsKLQotc3RyaW5nX29yX3Vy
aToKLVNUUklORwotfCBVUkkKLTsKLQotbWVkaWFfZmVhdHVyZToKLSAgICBJREVOVCBtYXliZV9z
cGFjZSB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAgIDsKLQotbWF5YmVfbWVkaWFfdmFs
dWU6Ci0gICAgLyplbXB0eSovIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICB8ICc6JyBt
YXliZV9zcGFjZSBleHByIG1heWJlX3NwYWNlIHsKLSAgICAgICAgJCQgPSAkMzsKLSAgICB9Ci0g
ICAgOwotCi1tZWRpYV9xdWVyeV9leHA6Ci0gICAgbWF5YmVfbWVkaWFfcmVzdHJpY3RvciBtYXli
ZV9zcGFjZSAnKCcgbWF5YmVfc3BhY2UgbWVkaWFfZmVhdHVyZSBtYXliZV9zcGFjZSBtYXliZV9t
ZWRpYV92YWx1ZSAnKScgbWF5YmVfc3BhY2UgewotICAgICAgICAvLyBJZiByZXN0cmljdG9yIGlz
IHNwZWNpZmllZCwgbWVkaWEgcXVlcnkgZXhwcmVzc2lvbiBpcyBpbnZhbGlkLgotICAgICAgICAv
LyBDcmVhdGUgZW1wdHkgbWVkaWEgcXVlcnkgZXhwcmVzc2lvbiBhbmQgY29udGludWUgcGFyc2lu
ZyBtZWRpYSBxdWVyeS4KLSAgICAgICAgaWYgKCQxICE9IE1lZGlhUXVlcnk6Ok5vbmUpCi0gICAg
ICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwKCIiLCAwKTsK
LSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAkNS5sb3dlcigpOwotICAgICAgICAgICAgJCQg
PSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeUV4cCgkNSwgJDcpOwotICAgICAgICB9
Ci0gICAgfQotICAgIDsKLQotbWVkaWFfcXVlcnlfZXhwX2xpc3Q6Ci0gICAgbWVkaWFfcXVlcnlf
ZXhwIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeUV4cExp
c3QoKTsKLSAgICAgICAgJCQtPmFwcGVuZChwYXJzZXItPnNpbmtGbG9hdGluZ01lZGlhUXVlcnlF
eHAoJDEpKTsKLSAgICB9Ci0gICAgfCBtZWRpYV9xdWVyeV9leHBfbGlzdCBtYXliZV9zcGFjZSBN
RURJQV9BTkQgbWF5YmVfc3BhY2UgbWVkaWFfcXVlcnlfZXhwIHsKLSAgICAgICAgJCQgPSAkMTsK
LSAgICAgICAgJCQtPmFwcGVuZChwYXJzZXItPnNpbmtGbG9hdGluZ01lZGlhUXVlcnlFeHAoJDUp
KTsKLSAgICB9Ci0gICAgOwotCi1tYXliZV9hbmRfbWVkaWFfcXVlcnlfZXhwX2xpc3Q6Ci0gICAg
LyplbXB0eSovIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVy
eUV4cExpc3QoKTsKLSAgICB9Ci0gICAgfCBNRURJQV9BTkQgbWF5YmVfc3BhY2UgbWVkaWFfcXVl
cnlfZXhwX2xpc3QgewotICAgICAgICAkJCA9ICQzOwotICAgIH0KLSAgICA7Ci0KLW1heWJlX21l
ZGlhX3Jlc3RyaWN0b3I6Ci0gICAgLyplbXB0eSovIHsKLSAgICAgICAgJCQgPSBNZWRpYVF1ZXJ5
OjpOb25lOwotICAgIH0KLSAgICB8IE1FRElBX09OTFkgewotICAgICAgICAkJCA9IE1lZGlhUXVl
cnk6Ok9ubHk7Ci0gICAgfQotICAgIHwgTUVESUFfTk9UIHsKLSAgICAgICAgJCQgPSBNZWRpYVF1
ZXJ5OjpOb3Q7Ci0gICAgfQotICAgIDsKLQotbWVkaWFfcXVlcnk6Ci0gICAgbWVkaWFfcXVlcnlf
ZXhwX2xpc3QgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5
KHBhcnNlci0+c2lua0Zsb2F0aW5nTWVkaWFRdWVyeUV4cExpc3QoJDEpKTsKLSAgICB9Ci0gICAg
fAotICAgIG1heWJlX21lZGlhX3Jlc3RyaWN0b3IgbWF5YmVfc3BhY2UgbWVkaXVtIG1heWJlX2Fu
ZF9tZWRpYV9xdWVyeV9leHBfbGlzdCB7Ci0gICAgICAgICQzLmxvd2VyKCk7Ci0gICAgICAgICQk
ID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ01lZGlhUXVlcnkoJDEsICQzLCBwYXJzZXItPnNpbmtG
bG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KCQ0KSk7Ci0gICAgfQotICAgIDsKLQotbWF5YmVfbWVk
aWFfbGlzdDoKLSAgICAgLyogZW1wdHkgKi8gewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRl
TWVkaWFRdWVyeVNldCgpOwotICAgICB9Ci0gICAgIHwgbWVkaWFfbGlzdAotICAgICA7Ci0KLW1l
ZGlhX2xpc3Q6Ci0gICAgbWVkaWFfcXVlcnkgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRl
TWVkaWFRdWVyeVNldCgpOwotICAgICAgICAkJC0+YWRkTWVkaWFRdWVyeShwYXJzZXItPnNpbmtG
bG9hdGluZ01lZGlhUXVlcnkoJDEpKTsKLSAgICAgICAgcGFyc2VyLT51cGRhdGVMYXN0TWVkaWFM
aW5lKCQkKTsKLSAgICB9Ci0gICAgfCBtZWRpYV9saXN0ICcsJyBtYXliZV9zcGFjZSBtZWRpYV9x
dWVyeSB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgICAgIGlmICgkJCkgewotICAgICAgICAgICAg
JCQtPmFkZE1lZGlhUXVlcnkocGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5KCQ0KSk7Ci0g
ICAgICAgICAgICBwYXJzZXItPnVwZGF0ZUxhc3RNZWRpYUxpbmUoJCQpOwotICAgICAgICB9Ci0g
ICAgfQotICAgIHwgbWVkaWFfbGlzdCBlcnJvciB7Ci0gICAgICAgICQkID0gMDsKLSAgICB9Ci0g
ICAgOwotCi1hdF9ydWxlX2JvZHlfc3RhcnQ6Ci0gICAgLyogZW1wdHkgKi8gewotICAgICAgICBw
YXJzZXItPm1hcmtSdWxlQm9keVN0YXJ0KCk7Ci0gICAgfQotICAgIDsKLQotYmVmb3JlX21lZGlh
X3J1bGU6Ci0gICAgLyogZW1wdHkgKi8gewotICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVy
U3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6Ok1FRElBX1JVTEUpOwotICAgIH0KLSAgICA7Ci0KLWF0
X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9zcGFjZToKLSAgICBtYXliZV9zcGFjZSB7Ci0gICAgICAg
IHBhcnNlci0+bWFya1J1bGVIZWFkZXJFbmQoKTsKLSAgICB9Ci0gICAgOwotCi1tZWRpYToKLSAg
ICBiZWZvcmVfbWVkaWFfcnVsZSBNRURJQV9TWU0gbWF5YmVfc3BhY2UgbWVkaWFfbGlzdCBhdF9y
dWxlX2hlYWRlcl9lbmQgJ3snIGF0X3J1bGVfYm9keV9zdGFydCBtYXliZV9zcGFjZSBibG9ja19y
dWxlX2xpc3Qgc2F2ZV9ibG9jayB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVNZWRpYVJ1
bGUoJDQsICQ5KTsKLSAgICB9Ci0gICAgfCBiZWZvcmVfbWVkaWFfcnVsZSBNRURJQV9TWU0gYXRf
cnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlICd7JyBhdF9ydWxlX2JvZHlfc3RhcnQgbWF5YmVf
c3BhY2UgYmxvY2tfcnVsZV9saXN0IHNhdmVfYmxvY2sgewotICAgICAgICAkJCA9IHBhcnNlci0+
Y3JlYXRlTWVkaWFSdWxlKDAsICQ3KTsKLSAgICB9Ci0gICAgfCBiZWZvcmVfbWVkaWFfcnVsZSBN
RURJQV9TWU0gYXRfcnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlICc7JyB7Ci0gICAgICAgICQk
ID0gMDsKLSAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOwotICAgIH0KLSAgICA7Ci0KLW1l
ZGl1bToKLSAgSURFTlQgbWF5YmVfc3BhY2UgewotICAgICAgJCQgPSAkMTsKLSAgfQotICA7Ci0K
LWJlZm9yZV9rZXlmcmFtZXNfcnVsZToKLSAgICAvKiBlbXB0eSAqLyB7Ci0gICAgICAgIHBhcnNl
ci0+bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6S0VZRlJBTUVTX1JVTEUp
OwotICAgIH0KLSAgICA7Ci0KLWtleWZyYW1lczoKLSAgICBiZWZvcmVfa2V5ZnJhbWVzX3J1bGUg
V0VCS0lUX0tFWUZSQU1FU19TWU0gbWF5YmVfc3BhY2Uga2V5ZnJhbWVfbmFtZSBhdF9ydWxlX2hl
YWRlcl9lbmRfbWF5YmVfc3BhY2UgJ3snIGF0X3J1bGVfYm9keV9zdGFydCBtYXliZV9zcGFjZSBr
ZXlmcmFtZXNfcnVsZSBjbG9zaW5nX2JyYWNlIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0
ZUtleWZyYW1lc1J1bGUoJDQsIHBhcnNlci0+c2lua0Zsb2F0aW5nS2V5ZnJhbWVWZWN0b3IoJDkp
KTsKLSAgICB9Ci0gICAgOwotICAKLWtleWZyYW1lX25hbWU6Ci0gICAgSURFTlQKLSAgICB8IFNU
UklORwotICAgIDsKLQota2V5ZnJhbWVzX3J1bGU6Ci0gICAgLyogZW1wdHkgKi8geyAkJCA9IHBh
cnNlci0+Y3JlYXRlRmxvYXRpbmdLZXlmcmFtZVZlY3RvcigpOyB9Ci0gICAgfCBrZXlmcmFtZXNf
cnVsZSBrZXlmcmFtZV9ydWxlIG1heWJlX3NwYWNlIHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICAg
ICAgaWYgKCQyKQotICAgICAgICAgICAgJCQtPmFwcGVuZCgkMik7Ci0gICAgfQotICAgIDsKLQot
a2V5ZnJhbWVfcnVsZToKLSAgICBrZXlfbGlzdCBtYXliZV9zcGFjZSAneycgbWF5YmVfc3BhY2Ug
ZGVjbGFyYXRpb25fbGlzdCAnfScgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlS2V5ZnJh
bWUoJDEpOwotICAgIH0KLSAgICA7Ci0KLWtleV9saXN0OgotICAgIGtleSB7Ci0gICAgICAgICQk
ID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1ZhbHVlTGlzdCgpOwotICAgICAgICAkJC0+YWRkVmFs
dWUocGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZSgkMSkpOwotICAgIH0KLSAgICB8IGtleV9saXN0
IG1heWJlX3NwYWNlICcsJyBtYXliZV9zcGFjZSBrZXkgewotICAgICAgICAkJCA9ICQxOwotICAg
ICAgICBpZiAoJCQpCi0gICAgICAgICAgICAkJC0+YWRkVmFsdWUocGFyc2VyLT5zaW5rRmxvYXRp
bmdWYWx1ZSgkNSkpOwotICAgIH0KLSAgICA7Ci0KLWtleToKLSAgICBtYXliZV91bmFyeV9vcGVy
YXRvciBQRVJDRU5UQUdFIHsgJCQuaWQgPSAwOyAkJC5pc0ludCA9IGZhbHNlOyAkJC5mVmFsdWUg
PSAkMSAqICQyOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7IH0KLSAg
ICB8IElERU5UIHsKLSAgICAgICAgJCQuaWQgPSAwOyAkJC5pc0ludCA9IGZhbHNlOyAkJC51bml0
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7Ci0gICAgICAgIENTU1BhcnNlclN0cmlu
ZyYgc3RyID0gJDE7Ci0gICAgICAgIGlmIChzdHIuZXF1YWxJZ25vcmluZ0Nhc2UoImZyb20iKSkK
LSAgICAgICAgICAgICQkLmZWYWx1ZSA9IDA7Ci0gICAgICAgIGVsc2UgaWYgKHN0ci5lcXVhbEln
bm9yaW5nQ2FzZSgidG8iKSkKLSAgICAgICAgICAgICQkLmZWYWx1ZSA9IDEwMDsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgWVlFUlJPUjsKLSAgICB9Ci0gICAgOwotCi1iZWZvcmVfcGFnZV9y
dWxlOgotICAgIC8qIGVtcHR5ICovIHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0
YXJ0KENTU1J1bGVTb3VyY2VEYXRhOjpQQUdFX1JVTEUpOwotICAgIH0KLSAgICA7Ci0KLXBhZ2U6
Ci0gICAgYmVmb3JlX3BhZ2VfcnVsZSBQQUdFX1NZTSBtYXliZV9zcGFjZSBwYWdlX3NlbGVjdG9y
IGF0X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9zcGFjZQotICAgICd7JyBhdF9ydWxlX2JvZHlfc3Rh
cnQgbWF5YmVfc3BhY2VfYmVmb3JlX2RlY2xhcmF0aW9uIGRlY2xhcmF0aW9uc19hbmRfbWFyZ2lu
cyBjbG9zaW5nX2JyYWNlIHsKLSAgICAgICAgaWYgKCQ0KQotICAgICAgICAgICAgJCQgPSBwYXJz
ZXItPmNyZWF0ZVBhZ2VSdWxlKHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDQpKTsKLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvLyBDbGVhciBwcm9wZXJ0aWVzIGluIHRoZSBpbnZh
bGlkIEBwYWdlIHJ1bGUuCi0gICAgICAgICAgICBwYXJzZXItPmNsZWFyUHJvcGVydGllcygpOwot
ICAgICAgICAgICAgLy8gQWxzbyBjbGVhciBtYXJnaW4gYXQtcnVsZXMgaGVyZSBvbmNlIHdlIGZ1
bGx5IGltcGxlbWVudCBtYXJnaW4gYXQtcnVsZXMgcGFyc2luZy4KLSAgICAgICAgICAgICQkID0g
MDsKLSAgICAgICAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICB8IGJlZm9yZV9wYWdlX3J1bGUgUEFHRV9TWU0gZXJyb3IgaW52YWxpZF9ibG9jayB7Ci0g
ICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7Ci0gICAgICAkJCA9IDA7Ci0gICAgfQotICAgIHwg
YmVmb3JlX3BhZ2VfcnVsZSBQQUdFX1NZTSBlcnJvciAnOycgewotICAgICAgcGFyc2VyLT5wb3BS
dWxlRGF0YSgpOwotICAgICAgJCQgPSAwOwotICAgIH0KLSAgICA7Ci0KLXBhZ2Vfc2VsZWN0b3I6
Ci0gICAgSURFTlQgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3Rv
cigpOwotICAgICAgICAkJC0+c2V0VGFnKFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQxLCBwYXJz
ZXItPm1fZGVmYXVsdE5hbWVzcGFjZSkpOwotICAgICAgICAkJC0+c2V0Rm9yUGFnZSgpOwotICAg
IH0KLSAgICB8IElERU5UIHBzZXVkb19wYWdlIHsKLSAgICAgICAgJCQgPSAkMjsKLSAgICAgICAg
aWYgKCQkKSB7Ci0gICAgICAgICAgICAkJC0+c2V0VGFnKFF1YWxpZmllZE5hbWUobnVsbEF0b20s
ICQxLCBwYXJzZXItPm1fZGVmYXVsdE5hbWVzcGFjZSkpOwotICAgICAgICAgICAgJCQtPnNldEZv
clBhZ2UoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICB8IHBzZXVkb19wYWdlIHsKLSAgICAgICAg
JCQgPSAkMTsKLSAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAgJCQtPnNldEZvclBhZ2UoKTsK
LSAgICB9Ci0gICAgfCAvKiBlbXB0eSAqLyB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVG
bG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5zZXRGb3JQYWdlKCk7Ci0gICAgfQotICAg
IDsKLQotZGVjbGFyYXRpb25zX2FuZF9tYXJnaW5zOgotICAgIGRlY2xhcmF0aW9uX2xpc3QKLSAg
ICB8IGRlY2xhcmF0aW9uc19hbmRfbWFyZ2lucyBtYXJnaW5fYm94IG1heWJlX3NwYWNlIGRlY2xh
cmF0aW9uX2xpc3QKLSAgICA7Ci0KLW1hcmdpbl9ib3g6Ci0gICAgbWFyZ2luX3N5bSB7Ci0gICAg
ICAgIHBhcnNlci0+c3RhcnREZWNsYXJhdGlvbnNGb3JNYXJnaW5Cb3goKTsKLSAgICB9IG1heWJl
X3NwYWNlICd7JyBtYXliZV9zcGFjZSBkZWNsYXJhdGlvbl9saXN0IGNsb3NpbmdfYnJhY2Ugewot
ICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlTWFyZ2luQXRSdWxlKCQxKTsKLSAgICB9Ci0gICAg
OwotCi1tYXJnaW5fc3ltIDoKLSAgICBUT1BMRUZUQ09STkVSX1NZTSB7Ci0gICAgICAgICQkID0g
Q1NTU2VsZWN0b3I6OlRvcExlZnRDb3JuZXJNYXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgVE9QTEVG
VF9TWU0gewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpUb3BMZWZ0TWFyZ2luQm94OwotICAg
IH0KLSAgICB8IFRPUENFTlRFUl9TWU0gewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpUb3BD
ZW50ZXJNYXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgVE9QUklHSFRfU1lNIHsKLSAgICAgICAgJCQg
PSBDU1NTZWxlY3Rvcjo6VG9wUmlnaHRNYXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgVE9QUklHSFRD
T1JORVJfU1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6VG9wUmlnaHRDb3JuZXJNYXJn
aW5Cb3g7Ci0gICAgfQotICAgIHwgQk9UVE9NTEVGVENPUk5FUl9TWU0gewotICAgICAgICAkJCA9
IENTU1NlbGVjdG9yOjpCb3R0b21MZWZ0Q29ybmVyTWFyZ2luQm94OwotICAgIH0KLSAgICB8IEJP
VFRPTUxFRlRfU1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6Qm90dG9tTGVmdE1hcmdp
bkJveDsKLSAgICB9Ci0gICAgfCBCT1RUT01DRU5URVJfU1lNIHsKLSAgICAgICAgJCQgPSBDU1NT
ZWxlY3Rvcjo6Qm90dG9tQ2VudGVyTWFyZ2luQm94OwotICAgIH0KLSAgICB8IEJPVFRPTVJJR0hU
X1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkJvdHRvbVJpZ2h0TWFyZ2luQm94Owot
ICAgIH0KLSAgICB8IEJPVFRPTVJJR0hUQ09STkVSX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2Vs
ZWN0b3I6OkJvdHRvbVJpZ2h0Q29ybmVyTWFyZ2luQm94OwotICAgIH0KLSAgICB8IExFRlRUT1Bf
U1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6TGVmdFRvcE1hcmdpbkJveDsKLSAgICB9
Ci0gICAgfCBMRUZUTUlERExFX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkxlZnRN
aWRkbGVNYXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgTEVGVEJPVFRPTV9TWU0gewotICAgICAgICAk
JCA9IENTU1NlbGVjdG9yOjpMZWZ0Qm90dG9tTWFyZ2luQm94OwotICAgIH0KLSAgICB8IFJJR0hU
VE9QX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OlJpZ2h0VG9wTWFyZ2luQm94Owot
ICAgIH0KLSAgICB8IFJJR0hUTUlERExFX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6
OlJpZ2h0TWlkZGxlTWFyZ2luQm94OwotICAgIH0KLSAgICB8IFJJR0hUQk9UVE9NX1NZTSB7Ci0g
ICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OlJpZ2h0Qm90dG9tTWFyZ2luQm94OwotICAgIH0KLSAg
ICA7Ci0KLWJlZm9yZV9mb250X2ZhY2VfcnVsZToKLSAgICAvKiBlbXB0eSAqLyB7Ci0gICAgICAg
IHBhcnNlci0+bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6Rk9OVF9GQUNF
X1JVTEUpOwotICAgIH0KLSAgICA7Ci0KLWZvbnRfZmFjZToKLSAgICBiZWZvcmVfZm9udF9mYWNl
X3J1bGUgRk9OVF9GQUNFX1NZTSBhdF9ydWxlX2hlYWRlcl9lbmRfbWF5YmVfc3BhY2UKLSAgICAn
eycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1heWJlX3NwYWNlX2JlZm9yZV9kZWNsYXJhdGlvbiBkZWNs
YXJhdGlvbl9saXN0IGNsb3NpbmdfYnJhY2UgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRl
Rm9udEZhY2VSdWxlKCk7Ci0gICAgfQotICAgIHwgYmVmb3JlX2ZvbnRfZmFjZV9ydWxlIEZPTlRf
RkFDRV9TWU0gZXJyb3IgaW52YWxpZF9ibG9jayB7Ci0gICAgICAkJCA9IDA7Ci0gICAgICBwYXJz
ZXItPnBvcFJ1bGVEYXRhKCk7Ci0gICAgfQotICAgIHwgYmVmb3JlX2ZvbnRfZmFjZV9ydWxlIEZP
TlRfRkFDRV9TWU0gZXJyb3IgJzsnIHsKLSAgICAgICQkID0gMDsKLSAgICAgIHBhcnNlci0+cG9w
UnVsZURhdGEoKTsKLSAgICB9Ci07Ci0KLXJlZ2lvbl9zZWxlY3RvcjoKLSAgICBzZWxlY3Rvcl9s
aXN0IHsKLSAgICAgICAgaWYgKCQxKSB7Ci0gICAgICAgICAgICBwYXJzZXItPnNldFJldXNhYmxl
UmVnaW9uU2VsZWN0b3JWZWN0b3IoJDEpOwotICAgICAgICAgICAgJCQgPSBwYXJzZXItPnJldXNh
YmxlUmVnaW9uU2VsZWN0b3JWZWN0b3IoKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAkJCA9IDA7Ci0gICAgfQotOwotCi1iZWZvcmVfcmVnaW9uX3J1bGU6Ci0gICAgLyog
ZW1wdHkgKi8gewotICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNv
dXJjZURhdGE6OlJFR0lPTl9SVUxFKTsKLSAgICB9Ci0gICAgOwotCi1yZWdpb246Ci0gICAgYmVm
b3JlX3JlZ2lvbl9ydWxlIFdFQktJVF9SRUdJT05fUlVMRV9TWU0gV0hJVEVTUEFDRSByZWdpb25f
c2VsZWN0b3IgYXRfcnVsZV9oZWFkZXJfZW5kICd7JyBhdF9ydWxlX2JvZHlfc3RhcnQgbWF5YmVf
c3BhY2UgYmxvY2tfcnVsZV9saXN0IHNhdmVfYmxvY2sgewotICAgICAgICBpZiAoJDQpCi0gICAg
ICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlUmVnaW9uUnVsZSgkNCwgJDkpOwotICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICQkID0gMDsKLSAgICAgICAgICAgIHBhcnNlci0+cG9wUnVsZURh
dGEoKTsKLSAgICAgICAgfQotICAgIH0KLTsKLQotY29tYmluYXRvcjoKLSAgICAnKycgbWF5YmVf
c3BhY2UgeyAkJCA9IENTU1NlbGVjdG9yOjpEaXJlY3RBZGphY2VudDsgfQotICB8ICd+JyBtYXli
ZV9zcGFjZSB7ICQkID0gQ1NTU2VsZWN0b3I6OkluZGlyZWN0QWRqYWNlbnQ7IH0KLSAgfCAnPicg
bWF5YmVfc3BhY2UgeyAkJCA9IENTU1NlbGVjdG9yOjpDaGlsZDsgfQotICA7Ci0KLW1heWJlX3Vu
YXJ5X29wZXJhdG9yOgotICAgIHVuYXJ5X29wZXJhdG9yIHsgJCQgPSAkMTsgfQotICAgIHwgeyAk
JCA9IDE7IH0KLSAgICA7Ci0KLXVuYXJ5X29wZXJhdG9yOgotICAgICctJyB7ICQkID0gLTE7IH0K
LSAgfCAnKycgeyAkJCA9IDE7IH0KLSAgOwotCi1tYXliZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRp
b246Ci0gICAgbWF5YmVfc3BhY2UgewotICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eVN0YXJ0
KCk7Ci0gICAgfQotICA7Ci0KLWJlZm9yZV9zZWxlY3Rvcl9saXN0OgotICAgIC8qIGVtcHR5ICov
IHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRh
OjpTVFlMRV9SVUxFKTsKLSAgICB9Ci0gIDsKLQotYXRfcnVsZV9oZWFkZXJfZW5kOgotICAgIC8q
IGVtcHR5ICovIHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlckVuZCgpOwotICAgIH0K
LSAgOwotCi1ydWxlc2V0OgotICAgIGJlZm9yZV9zZWxlY3Rvcl9saXN0IHNlbGVjdG9yX2xpc3Qg
YXRfcnVsZV9oZWFkZXJfZW5kICd7JyBhdF9ydWxlX2JvZHlfc3RhcnQgbWF5YmVfc3BhY2VfYmVm
b3JlX2RlY2xhcmF0aW9uIGRlY2xhcmF0aW9uX2xpc3QgY2xvc2luZ19icmFjZSB7Ci0gICAgICAg
ICQkID0gcGFyc2VyLT5jcmVhdGVTdHlsZVJ1bGUoJDIpOwotICAgIH0KLSAgOwotCi1zZWxlY3Rv
cl9saXN0OgotICAgIHNlbGVjdG9yICVwcmVjIFVOSU1QT1JUQU5UX1RPSyB7Ci0gICAgICAgIGlm
ICgkMSkgewotICAgICAgICAgICAgJCQgPSBwYXJzZXItPnNlbGVjdG9yVmVjdG9yKCk7Ci0gICAg
ICAgICAgICAkJC0+c2hyaW5rKDApOwotICAgICAgICAgICAgJCQtPmFwcGVuZChwYXJzZXItPnNp
bmtGbG9hdGluZ1NlbGVjdG9yKCQxKSk7Ci0gICAgICAgICAgICBwYXJzZXItPnVwZGF0ZUxhc3RT
ZWxlY3RvckxpbmVBbmRQb3NpdGlvbigpOwotICAgICAgICB9Ci0gICAgfQotICAgIHwgc2VsZWN0
b3JfbGlzdCAnLCcgbWF5YmVfc3BhY2Ugc2VsZWN0b3IgJXByZWMgVU5JTVBPUlRBTlRfVE9LIHsK
LSAgICAgICAgaWYgKCQxICYmICQ0KSB7Ci0gICAgICAgICAgICAkJCA9ICQxOwotICAgICAgICAg
ICAgJCQtPmFwcGVuZChwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQ0KSk7Ci0gICAgICAg
ICAgICBwYXJzZXItPnVwZGF0ZUxhc3RTZWxlY3RvckxpbmVBbmRQb3NpdGlvbigpOwotICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICQkID0gMDsKLSAgICB9Ci0gIHwgc2VsZWN0b3JfbGlzdCBl
cnJvciB7Ci0gICAgICAgICQkID0gMDsKLSAgICB9Ci0gICA7Ci0KLXNlbGVjdG9yX3dpdGhfdHJh
aWxpbmdfd2hpdGVzcGFjZToKLSAgICBzZWxlY3RvciBXSElURVNQQUNFIHsKLSAgICAgICAgJCQg
PSAkMTsKLSAgICB9Ci0gICAgOwotCi1zZWxlY3RvcjoKLSAgICBzaW1wbGVfc2VsZWN0b3Igewot
ICAgICAgICAkJCA9ICQxOwotICAgIH0KLSAgICB8IHNlbGVjdG9yX3dpdGhfdHJhaWxpbmdfd2hp
dGVzcGFjZQotICAgIHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICB9Ci0gICAgfCBzZWxlY3Rvcl93
aXRoX3RyYWlsaW5nX3doaXRlc3BhY2Ugc2ltcGxlX3NlbGVjdG9yCi0gICAgewotICAgICAgICAk
JCA9ICQyOwotICAgICAgICBpZiAoISQxKQotICAgICAgICAgICAgJCQgPSAwOwotICAgICAgICBl
bHNlIGlmICgkJCkgewotICAgICAgICAgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIGVuZCA9ICQkOwot
ICAgICAgICAgICAgd2hpbGUgKGVuZC0+dGFnSGlzdG9yeSgpKQotICAgICAgICAgICAgICAgIGVu
ZCA9IGVuZC0+dGFnSGlzdG9yeSgpOwotICAgICAgICAgICAgZW5kLT5zZXRSZWxhdGlvbihDU1NT
ZWxlY3Rvcjo6RGVzY2VuZGFudCk7Ci0gICAgICAgICAgICBlbmQtPnNldFRhZ0hpc3RvcnkocGFy
c2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHwg
c2VsZWN0b3IgY29tYmluYXRvciBzaW1wbGVfc2VsZWN0b3IgewotICAgICAgICAkJCA9ICQzOwot
ICAgICAgICBpZiAoISQxKQotICAgICAgICAgICAgJCQgPSAwOwotICAgICAgICBlbHNlIGlmICgk
JCkgewotICAgICAgICAgICAgQ1NTUGFyc2VyU2VsZWN0b3IqIGVuZCA9ICQkOwotICAgICAgICAg
ICAgd2hpbGUgKGVuZC0+dGFnSGlzdG9yeSgpKQotICAgICAgICAgICAgICAgIGVuZCA9IGVuZC0+
dGFnSGlzdG9yeSgpOwotICAgICAgICAgICAgZW5kLT5zZXRSZWxhdGlvbigkMik7Ci0gICAgICAg
ICAgICBlbmQtPnNldFRhZ0hpc3RvcnkocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMSkp
OwotICAgICAgICB9Ci0gICAgfQotICAgIHwgc2VsZWN0b3IgZXJyb3IgewotICAgICAgICAkJCA9
IDA7Ci0gICAgfQotICAgIDsKLQotbmFtZXNwYWNlX3NlbGVjdG9yOgotICAgIC8qIGVtcHR5ICov
ICd8JyB7ICQkLmNsZWFyKCk7IH0KLSAgICB8ICcqJyAnfCcgeyBzdGF0aWMgTENoYXIgc3RhciA9
ICcqJzsgJCQuaW5pdCgmc3RhciwgMSk7IH0KLSAgICB8IElERU5UICd8JyB7ICQkID0gJDE7IH0K
LTsKLSAgICAKLXNpbXBsZV9zZWxlY3RvcjoKLSAgICBlbGVtZW50X25hbWUgewotICAgICAgICAk
JCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0VGFn
KFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQxLCBwYXJzZXItPm1fZGVmYXVsdE5hbWVzcGFjZSkp
OwotICAgIH0KLSAgICB8IGVsZW1lbnRfbmFtZSBzcGVjaWZpZXJfbGlzdCB7Ci0gICAgICAgICQk
ID0gJDI7Ci0gICAgICAgIGlmICgkJCkKLSAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lm
aWVyc1dpdGhFbGVtZW50TmFtZShudWxsQXRvbSwgJDEsICQkKTsKLSAgICB9Ci0gICAgfCBzcGVj
aWZpZXJfbGlzdCB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgICAgIGlmICgkJCkKLSAgICAgICAg
ICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZShudWxsQXRvbSwgc3Rh
ckF0b20sICQkKTsKLSAgICB9Ci0gICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3IgZWxlbWVudF9uYW1l
IHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAg
ICAgJCQtPnNldFRhZyhwYXJzZXItPmRldGVybWluZU5hbWVJbk5hbWVzcGFjZSgkMSwgJDIpKTsK
LSAgICB9Ci0gICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3IgZWxlbWVudF9uYW1lIHNwZWNpZmllcl9s
aXN0IHsKLSAgICAgICAgJCQgPSAkMzsKLSAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAgcGFy
c2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKCQxLCAkMiwgJCQpOwotICAgIH0K
LSAgICB8IG5hbWVzcGFjZV9zZWxlY3RvciBzcGVjaWZpZXJfbGlzdCB7Ci0gICAgICAgICQkID0g
JDI7Ci0gICAgICAgIGlmICgkJCkKLSAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVy
c1dpdGhFbGVtZW50TmFtZSgkMSwgc3RhckF0b20sICQkKTsKLSAgICB9Ci0gIDsKLQotc2ltcGxl
X3NlbGVjdG9yX2xpc3Q6Ci0gICAgc2ltcGxlX3NlbGVjdG9yICVwcmVjIFVOSU1QT1JUQU5UX1RP
SyB7Ci0gICAgICAgIGlmICgkMSkgewotICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZs
b2F0aW5nU2VsZWN0b3JWZWN0b3IoKTsKLSAgICAgICAgICAgICQkLT5hcHBlbmQocGFyc2VyLT5z
aW5rRmxvYXRpbmdTZWxlY3RvcigkMSkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICQk
ID0gMDsKLSAgICB9Ci0gICAgfCBzaW1wbGVfc2VsZWN0b3JfbGlzdCBtYXliZV9zcGFjZSAnLCcg
bWF5YmVfc3BhY2Ugc2ltcGxlX3NlbGVjdG9yICVwcmVjIFVOSU1QT1JUQU5UX1RPSyB7Ci0gICAg
ICAgIGlmICgkMSAmJiAkNSkgewotICAgICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgICAgICQk
LT5hcHBlbmQocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkNSkpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICQkID0gMDsKLSAgICB9Ci0gICAgfCBzaW1wbGVfc2VsZWN0b3JfbGlz
dCBlcnJvciB7Ci0gICAgICAgICQkID0gMDsKLSAgICB9Ci0gIDsKLQotZWxlbWVudF9uYW1lOgot
ICAgIElERU5UIHsKLSAgICAgICAgQ1NTUGFyc2VyU3RyaW5nJiBzdHIgPSAkMTsKLSAgICAgICAg
aWYgKHBhcnNlci0+bV9jb250ZXh0LmlzSFRNTERvY3VtZW50KQotICAgICAgICAgICAgc3RyLmxv
d2VyKCk7Ci0gICAgICAgICQkID0gc3RyOwotICAgIH0KLSAgICB8ICcqJyB7Ci0gICAgICAgIHN0
YXRpYyBMQ2hhciBzdGFyID0gJyonOwotICAgICAgICAkJC5pbml0KCZzdGFyLCAxKTsKLSAgICB9
Ci0gIDsKLQotc3BlY2lmaWVyX2xpc3Q6Ci0gICAgc3BlY2lmaWVyIHsKLSAgICAgICAgJCQgPSAk
MTsKLSAgICB9Ci0gICAgfCBzcGVjaWZpZXJfbGlzdCBzcGVjaWZpZXIgewotICAgICAgICBpZiAo
ISQyKQotICAgICAgICAgICAgJCQgPSAwOwotICAgICAgICBlbHNlIGlmICgkMSkKLSAgICAgICAg
ICAgICQkID0gcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzKCQxLCAkMik7Ci0gICAgfQotICAgIHwg
c3BlY2lmaWVyX2xpc3QgZXJyb3IgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotOwotCi1zcGVj
aWZpZXI6Ci0gICAgSURTRUwgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdT
ZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OklkKTsKLSAgICAg
ICAgaWYgKHBhcnNlci0+bV9jb250ZXh0Lm1vZGUgPT0gQ1NTUXVpcmtzTW9kZSkKLSAgICAgICAg
ICAgICQxLmxvd2VyKCk7Ci0gICAgICAgICQkLT5zZXRWYWx1ZSgkMSk7Ci0gICAgfQotICB8IEhF
WCB7Ci0gICAgICAgIGlmICgkMVswXSA+PSAnMCcgJiYgJDFbMF0gPD0gJzknKSB7Ci0gICAgICAg
ICAgICAkJCA9IDA7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAkJCA9IHBhcnNlci0+
Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAgICAgJCQtPnNldE1hdGNoKENTU1Nl
bGVjdG9yOjpJZCk7Ci0gICAgICAgICAgICBpZiAocGFyc2VyLT5tX2NvbnRleHQubW9kZSA9PSBD
U1NRdWlya3NNb2RlKQotICAgICAgICAgICAgICAgICQxLmxvd2VyKCk7Ci0gICAgICAgICAgICAk
JC0+c2V0VmFsdWUoJDEpOwotICAgICAgICB9Ci0gICAgfQotICB8IGNsYXNzCi0gIHwgYXR0cmli
Ci0gIHwgcHNldWRvCi0gICAgOwotCi1jbGFzczoKLSAgICAnLicgSURFTlQgewotICAgICAgICAk
JCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0TWF0
Y2goQ1NTU2VsZWN0b3I6OkNsYXNzKTsKLSAgICAgICAgaWYgKHBhcnNlci0+bV9jb250ZXh0Lm1v
ZGUgPT0gQ1NTUXVpcmtzTW9kZSkKLSAgICAgICAgICAgICQyLmxvd2VyKCk7Ci0gICAgICAgICQk
LT5zZXRWYWx1ZSgkMik7Ci0gICAgfQotICA7Ci0KLWF0dHJfbmFtZToKLSAgICBJREVOVCBtYXli
ZV9zcGFjZSB7Ci0gICAgICAgIENTU1BhcnNlclN0cmluZyYgc3RyID0gJDE7Ci0gICAgICAgIGlm
IChwYXJzZXItPm1fY29udGV4dC5pc0hUTUxEb2N1bWVudCkKLSAgICAgICAgICAgIHN0ci5sb3dl
cigpOwotICAgICAgICAkJCA9IHN0cjsKLSAgICB9Ci0gICAgOwotCi1hdHRyaWI6Ci0gICAgJ1sn
IG1heWJlX3NwYWNlIGF0dHJfbmFtZSAnXScgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRl
RmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0QXR0cmlidXRlKFF1YWxpZmllZE5h
bWUobnVsbEF0b20sICQzLCBudWxsQXRvbSkpOwotICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2Vs
ZWN0b3I6OlNldCk7Ci0gICAgfQotICAgIHwgJ1snIG1heWJlX3NwYWNlIGF0dHJfbmFtZSBtYXRj
aCBtYXliZV9zcGFjZSBpZGVudF9vcl9zdHJpbmcgbWF5YmVfc3BhY2UgJ10nIHsKLSAgICAgICAg
JCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldEF0
dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMywgbnVsbEF0b20pKTsKLSAgICAgICAg
JCQtPnNldE1hdGNoKChDU1NTZWxlY3Rvcjo6TWF0Y2gpJDQpOwotICAgICAgICAkJC0+c2V0VmFs
dWUoJDYpOwotICAgIH0KLSAgICB8ICdbJyBtYXliZV9zcGFjZSBuYW1lc3BhY2Vfc2VsZWN0b3Ig
YXR0cl9uYW1lICddJyB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVj
dG9yKCk7Ci0gICAgICAgICQkLT5zZXRBdHRyaWJ1dGUocGFyc2VyLT5kZXRlcm1pbmVOYW1lSW5O
YW1lc3BhY2UoJDMsICQ0KSk7Ci0gICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6U2V0
KTsKLSAgICB9Ci0gICAgfCAnWycgbWF5YmVfc3BhY2UgbmFtZXNwYWNlX3NlbGVjdG9yIGF0dHJf
bmFtZSBtYXRjaCBtYXliZV9zcGFjZSBpZGVudF9vcl9zdHJpbmcgbWF5YmVfc3BhY2UgJ10nIHsK
LSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAg
JCQtPnNldEF0dHJpYnV0ZShwYXJzZXItPmRldGVybWluZU5hbWVJbk5hbWVzcGFjZSgkMywgJDQp
KTsKLSAgICAgICAgJCQtPnNldE1hdGNoKChDU1NTZWxlY3Rvcjo6TWF0Y2gpJDUpOwotICAgICAg
ICAkJC0+c2V0VmFsdWUoJDcpOwotICAgIH0KLSAgOwotCi1tYXRjaDoKLSAgICAnPScgewotICAg
ICAgICAkJCA9IENTU1NlbGVjdG9yOjpFeGFjdDsKLSAgICB9Ci0gICAgfCBJTkNMVURFUyB7Ci0g
ICAgICAgICQkID0gQ1NTU2VsZWN0b3I6Okxpc3Q7Ci0gICAgfQotICAgIHwgREFTSE1BVENIIHsK
LSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6SHlwaGVuOwotICAgIH0KLSAgICB8IEJFR0lOU1dJ
VEggewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpCZWdpbjsKLSAgICB9Ci0gICAgfCBFTkRT
V0lUSCB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkVuZDsKLSAgICB9Ci0gICAgfCBDT05U
QUlOUyB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkNvbnRhaW47Ci0gICAgfQotICAgIDsK
LQotaWRlbnRfb3Jfc3RyaW5nOgotICAgIElERU5UCi0gIHwgU1RSSU5HCi0gICAgOwotCi1wc2V1
ZG9fcGFnZToKLSAgICAnOicgSURFTlQgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxv
YXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBhZ2VQ
c2V1ZG9DbGFzcyk7Ci0gICAgICAgICQyLmxvd2VyKCk7Ci0gICAgICAgICQkLT5zZXRWYWx1ZSgk
Mik7Ci0gICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlw
ZSgpOwotICAgICAgICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bikKLSAg
ICAgICAgICAgICQkID0gMDsKLSAgICB9Ci0KLXBzZXVkbzoKLSAgICAnOicgSURFTlQgewotICAg
ICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+
c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKLSAgICAgICAgJDIubG93ZXIoKTsK
LSAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsKLSAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5
cGUgdHlwZSA9ICQkLT5wc2V1ZG9UeXBlKCk7Ci0gICAgICAgIGlmICh0eXBlID09IENTU1NlbGVj
dG9yOjpQc2V1ZG9Vbmtub3duKQotICAgICAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICB8ICc6
JyAnOicgSURFTlQgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3Rv
cigpOwotICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnQpOwot
ICAgICAgICAkMy5sb3dlcigpOwotICAgICAgICAkJC0+c2V0VmFsdWUoJDMpOwotICAgICAgICAv
LyBGSVhNRTogVGhpcyBjYWxsIGlzIG5lZWRlZCB0byBmb3JjZSBzZWxlY3RvciB0byBjb21wdXRl
IHRoZSBwc2V1ZG9UeXBlIGVhcmx5IGVub3VnaC4KLSAgICAgICAgJCQtPnBzZXVkb1R5cGUoKTsK
LSAgICB9Ci0gICAgLy8gdXNlIGJ5IDotd2Via2l0LWFueS4KLSAgICAvLyBGSVhNRTogc2hvdWxk
IHdlIHN1cHBvcnQgZ2VuZXJpYyBzZWxlY3RvcnMgaGVyZSBvciBqdXN0IHNpbXBsZV9zZWxlY3Rv
cnM/Ci0gICAgLy8gVXNlIHNpbXBsZV9zZWxlY3Rvcl9saXN0IGZvciBub3cgdG8gbWF0Y2ggLW1v
ei1hbnkuCi0gICAgLy8gU2VlIGh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3
dy1zdHlsZS8yMDEwU2VwLzA1NjYuaHRtbCBmb3Igc29tZQotICAgIC8vIHJlbGF0ZWQgZGlzY3Vz
c2lvbiB3aXRoIHJlc3BlY3QgdG8gOm5vdC4KLSAgICB8ICc6JyBBTllGVU5DVElPTiBtYXliZV9z
cGFjZSBzaW1wbGVfc2VsZWN0b3JfbGlzdCBtYXliZV9zcGFjZSAnKScgewotICAgICAgICBpZiAo
JDQpIHsKLSAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7
Ci0gICAgICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKLSAg
ICAgICAgICAgICQkLT5hZG9wdFNlbGVjdG9yVmVjdG9yKCpwYXJzZXItPnNpbmtGbG9hdGluZ1Nl
bGVjdG9yVmVjdG9yKCQ0KSk7Ci0gICAgICAgICAgICAkMi5sb3dlcigpOwotICAgICAgICAgICAg
JCQtPnNldFZhbHVlKCQyKTsKLSAgICAgICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5
cGUgPSAkJC0+cHNldWRvVHlwZSgpOwotICAgICAgICAgICAgaWYgKHR5cGUgIT0gQ1NTU2VsZWN0
b3I6OlBzZXVkb0FueSkKLSAgICAgICAgICAgICAgICAkJCA9IDA7Ci0gICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICAvLyB1c2VkIGJ5IDpudGgtKihheCtiKQot
ICAgIHwgJzonIEZVTkNUSU9OIG1heWJlX3NwYWNlIE5USCBtYXliZV9zcGFjZSAnKScgewotICAg
ICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+
c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKLSAgICAgICAgJCQtPnNldEFyZ3Vt
ZW50KCQ0KTsKLSAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsKLSAgICAgICAgQ1NTU2VsZWN0b3I6
OlBzZXVkb1R5cGUgdHlwZSA9ICQkLT5wc2V1ZG9UeXBlKCk7Ci0gICAgICAgIGlmICh0eXBlID09
IENTU1NlbGVjdG9yOjpQc2V1ZG9Vbmtub3duKQotICAgICAgICAgICAgJCQgPSAwOwotICAgIH0K
LSAgICAvLyB1c2VkIGJ5IDpudGgtKgotICAgIHwgJzonIEZVTkNUSU9OIG1heWJlX3NwYWNlIG1h
eWJlX3VuYXJ5X29wZXJhdG9yIElOVEVHRVIgbWF5YmVfc3BhY2UgJyknIHsKLSAgICAgICAgJCQg
PSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldE1hdGNo
KENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7Ci0gICAgICAgICQkLT5zZXRBcmd1bWVudChTdHJp
bmc6Om51bWJlcigkNCAqICQ1KSk7Ci0gICAgICAgICQkLT5zZXRWYWx1ZSgkMik7Ci0gICAgICAg
IENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOwotICAgICAg
ICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bikKLSAgICAgICAgICAgICQk
ID0gMDsKLSAgICB9Ci0gICAgLy8gdXNlZCBieSA6bnRoLSoob2RkL2V2ZW4pIGFuZCA6bGFuZwot
ICAgIHwgJzonIEZVTkNUSU9OIG1heWJlX3NwYWNlIElERU5UIG1heWJlX3NwYWNlICcpJyB7Ci0g
ICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQk
LT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpOwotICAgICAgICAkJC0+c2V0QXJn
dW1lbnQoJDQpOwotICAgICAgICAkMi5sb3dlcigpOwotICAgICAgICAkJC0+c2V0VmFsdWUoJDIp
OwotICAgICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUo
KTsKLSAgICAgICAgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25vd24pCi0gICAg
ICAgICAgICAkJCA9IDA7Ci0gICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBz
ZXVkb050aENoaWxkIHx8Ci0gICAgICAgICAgICAgICAgIHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBz
ZXVkb050aE9mVHlwZSB8fAotICAgICAgICAgICAgICAgICB0eXBlID09IENTU1NlbGVjdG9yOjpQ
c2V1ZG9OdGhMYXN0Q2hpbGQgfHwKLSAgICAgICAgICAgICAgICAgdHlwZSA9PSBDU1NTZWxlY3Rv
cjo6UHNldWRvTnRoTGFzdE9mVHlwZSkgewotICAgICAgICAgICAgaWYgKCFpc1ZhbGlkTnRoVG9r
ZW4oJDQpKQotICAgICAgICAgICAgICAgICQkID0gMDsKLSAgICAgICAgfQotICAgIH0KLSAgICAv
LyB1c2VkIGJ5IDpub3QKLSAgICB8ICc6JyBOT1RGVU5DVElPTiBtYXliZV9zcGFjZSBzaW1wbGVf
c2VsZWN0b3IgbWF5YmVfc3BhY2UgJyknIHsKLSAgICAgICAgaWYgKCEkNCB8fCAhJDQtPmlzU2lt
cGxlKCkpCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAg
JCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgICAgICQkLT5z
ZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpOwotCi0gICAgICAgICAgICBDU1NTZWxl
Y3RvclZlY3RvciBzZWxlY3RvclZlY3RvcjsKLSAgICAgICAgICAgIHNlbGVjdG9yVmVjdG9yLmFw
cGVuZChwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQ0KSk7Ci0gICAgICAgICAgICAkJC0+
YWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvclZlY3Rvcik7Ci0KLSAgICAgICAgICAgICQyLmxv
d2VyKCk7Ci0gICAgICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOwotICAgICAgICB9Ci0gICAgfQot
ICA7Ci0KLWRlY2xhcmF0aW9uX2xpc3Q6Ci0gICAgZGVjbGFyYXRpb24gewotICAgICAgICAkJCA9
ICQxOwotICAgIH0KLSAgICB8IGRlY2xfbGlzdCBkZWNsYXJhdGlvbiB7Ci0gICAgICAgICQkID0g
JDE7Ci0gICAgICAgIGlmICggJDIgKQotICAgICAgICAgICAgJCQgPSAkMjsKLSAgICB9Ci0gICAg
fCBkZWNsX2xpc3QgewotICAgICAgICAkJCA9ICQxOwotICAgIH0KLSAgICB8IGVycm9yIGludmFs
aWRfYmxvY2tfbGlzdCBlcnJvciB7Ci0gICAgICAgICQkID0gZmFsc2U7Ci0gICAgfQotICAgIHwg
ZXJyb3IgewotICAgICAgICAkJCA9IGZhbHNlOwotICAgIH0KLSAgICB8IGRlY2xfbGlzdCBlcnJv
ciB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAgIHwgZGVjbF9saXN0IGludmFsaWRfYmxv
Y2tfbGlzdCB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAgIDsKLQotZGVjbF9saXN0Ogot
ICAgIGRlY2xhcmF0aW9uICc7JyBtYXliZV9zcGFjZSB7Ci0gICAgICAgIHBhcnNlci0+bWFya1By
b3BlcnR5U3RhcnQoKTsKLSAgICAgICAgJCQgPSAkMTsKLSAgICB9Ci0gICAgfCBkZWNsYXJhdGlv
biBpbnZhbGlkX2Jsb2NrX2xpc3QgbWF5YmVfc3BhY2UgewotICAgICAgICAkJCA9IGZhbHNlOwot
ICAgIH0KLSAgICB8IGRlY2xhcmF0aW9uIGludmFsaWRfYmxvY2tfbGlzdCAnOycgbWF5YmVfc3Bh
Y2UgewotICAgICAgICAkJCA9IGZhbHNlOwotICAgIH0KLSAgICB8IGVycm9yICc7JyBtYXliZV9z
cGFjZSB7Ci0gICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5U3RhcnQoKTsKLSAgICAgICAgJCQg
PSBmYWxzZTsKLSAgICB9Ci0gICAgfCBlcnJvciBpbnZhbGlkX2Jsb2NrX2xpc3QgZXJyb3IgJzsn
IG1heWJlX3NwYWNlIHsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAgICB9Ci0gICAgfCBkZWNsX2xp
c3QgZGVjbGFyYXRpb24gJzsnIG1heWJlX3NwYWNlIHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUHJv
cGVydHlTdGFydCgpOwotICAgICAgICAkJCA9ICQxOwotICAgICAgICBpZiAoJDIpCi0gICAgICAg
ICAgICAkJCA9ICQyOwotICAgIH0KLSAgICB8IGRlY2xfbGlzdCBlcnJvciAnOycgbWF5YmVfc3Bh
Y2UgewotICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7Ci0gICAgICAgICQkID0g
JDE7Ci0gICAgfQotICAgIHwgZGVjbF9saXN0IGVycm9yIGludmFsaWRfYmxvY2tfbGlzdCBlcnJv
ciAnOycgbWF5YmVfc3BhY2UgewotICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7
Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAgIDsKLQotZGVjbGFyYXRpb246Ci0gICAgVkFS
X0RFRklOSVRJT04gJzonIG1heWJlX3NwYWNlIGV4cHIgcHJpbyB7Ci0jaWYgRU5BQkxFKENTU19W
QVJJQUJMRVMpCi0gICAgICAgIHBhcnNlci0+c3RvcmVWYXJpYWJsZURlY2xhcmF0aW9uKCQxLCBw
YXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCksICQ1KTsKLSAgICAgICAgJCQgPSB0cnVl
OwotICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eUVuZCgkNSwgdHJ1ZSk7Ci0jZWxzZQotICAg
ICAgICAkJCA9IGZhbHNlOwotI2VuZGlmCi0gICAgfQotICAgIHwKLSAgICBwcm9wZXJ0eSAnOicg
bWF5YmVfc3BhY2UgZXhwciBwcmlvIHsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAgICAgICAgYm9v
bCBpc1Byb3BlcnR5UGFyc2VkID0gZmFsc2U7Ci0gICAgICAgIGlmICgkMSAmJiAkNCkgewotICAg
ICAgICAgICAgcGFyc2VyLT5tX3ZhbHVlTGlzdCA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVM
aXN0KCQ0KTsKLSAgICAgICAgICAgIGludCBvbGRQYXJzZWRQcm9wZXJ0aWVzID0gcGFyc2VyLT5t
X3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKTsKLSAgICAgICAgICAgICQkID0gcGFyc2VyLT5wYXJz
ZVZhbHVlKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KCQxKSwgJDUpOwotICAgICAgICAgICAg
aWYgKCEkJCkKLSAgICAgICAgICAgICAgICBwYXJzZXItPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMo
cGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKSAtIG9sZFBhcnNlZFByb3BlcnRpZXMp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGlzUHJvcGVydHlQYXJzZWQgPSB0
cnVlOwotICAgICAgICAgICAgcGFyc2VyLT5tX3ZhbHVlTGlzdCA9IG51bGxwdHI7Ci0gICAgICAg
IH0KLSAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlFbmQoJDUsIGlzUHJvcGVydHlQYXJzZWQp
OwotICAgIH0KLSAgICB8Ci0gICAgcHJvcGVydHkgZXJyb3IgewotICAgICAgICAkJCA9IGZhbHNl
OwotICAgIH0KLSAgICB8Ci0gICAgcHJvcGVydHkgJzonIG1heWJlX3NwYWNlIGVycm9yIGV4cHIg
cHJpbyB7Ci0gICAgICAgIC8qIFRoZSBkZWZhdWx0IG1vdmFibGUgdHlwZSB0ZW1wbGF0ZSBoYXMg
bGV0dGVyLXNwYWNpbmc6IC5ub25lOyAgSGFuZGxlIHRoaXMgYnkgbG9va2luZyBmb3IKLSAgICAg
ICAgZXJyb3IgdG9rZW5zIGF0IHRoZSBzdGFydCBvZiBhbiBleHByLCByZWNvdmVyIHRoZSBleHBy
IGFuZCB0aGVuIHRyZWF0IGFzIGFuIGVycm9yLCBjbGVhbmluZwotICAgICAgICB1cCBhbmQgZGVs
ZXRpbmcgdGhlIHNoaWZ0ZWQgZXhwci4gICovCi0gICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5
RW5kKGZhbHNlLCBmYWxzZSk7Ci0gICAgICAgICQkID0gZmFsc2U7Ci0gICAgfQotICAgIHwKLSAg
ICBwcm9wZXJ0eSAnOicgbWF5YmVfc3BhY2UgZXhwciBwcmlvIGVycm9yIHsKLSAgICAgICAgLyog
V2hlbiB3ZSBlbmNvdW50ZXIgc29tZXRoaW5nIGxpa2UgcCB7Y29sb3I6IHJlZCAhaW1wb3J0YW50
IGZhaWw7fSB3ZSBzaG91bGQgZHJvcCB0aGUgZGVjbGFyYXRpb24gKi8KLSAgICAgICAgcGFyc2Vy
LT5tYXJrUHJvcGVydHlFbmQoZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAg
ICB9Ci0gICAgfAotICAgIElNUE9SVEFOVF9TWU0gbWF5YmVfc3BhY2UgewotICAgICAgICAvKiBI
YW5kbGUgdGhpcyBjYXNlOiBkaXYgeyB0ZXh0LWFsaWduOiBjZW50ZXI7ICFpbXBvcnRhbnQgfSBK
dXN0IHJlZHVjZSBhd2F5IHRoZSBzdHJheSAhaW1wb3J0YW50LiAqLwotICAgICAgICAkJCA9IGZh
bHNlOwotICAgIH0KLSAgICB8Ci0gICAgcHJvcGVydHkgJzonIG1heWJlX3NwYWNlIHsKLSAgICAg
ICAgLyogZGl2IHsgZm9udC1mYW1pbHk6IH0gSnVzdCByZWR1Y2UgYXdheSB0aGlzIHByb3BlcnR5
IHdpdGggbm8gdmFsdWUuICovCi0gICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5RW5kKGZhbHNl
LCBmYWxzZSk7Ci0gICAgICAgICQkID0gZmFsc2U7Ci0gICAgfQotICAgIHwKLSAgICBwcm9wZXJ0
eSAnOicgbWF5YmVfc3BhY2UgZXJyb3IgewotICAgICAgICAvKiBpZiB3ZSBjb21lIGFjcm9zcyBy
dWxlcyB3aXRoIGludmFsaWQgdmFsdWVzIGxpa2UgdGhpcyBjYXNlOiBwIHsgd2VpZ2h0OiAqOyB9
LCBqdXN0IGRpc2NhcmQgdGhlIHJ1bGUgKi8KLSAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlF
bmQoZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAgICB9Ci0gICAgfAotICAg
IHByb3BlcnR5IGludmFsaWRfYmxvY2sgewotICAgICAgICAvKiBpZiB3ZSBjb21lIGFjcm9zczog
ZGl2IHsgY29sb3J7O2NvbG9yOm1hcm9vbn0gfSwgaWdub3JlIGV2ZXJ5dGhpbmcgd2l0aGluIGN1
cmx5IGJyYWNrZXRzICovCi0gICAgICAgICQkID0gZmFsc2U7Ci0gICAgfQotICA7Ci0KLXByb3Bl
cnR5OgotICAgIElERU5UIG1heWJlX3NwYWNlIHsKLSAgICAgICAgJCQgPSBjc3NQcm9wZXJ0eUlE
KCQxKTsKLSAgICB9Ci0gIDsKLQotcHJpbzoKLSAgICBJTVBPUlRBTlRfU1lNIG1heWJlX3NwYWNl
IHsgJCQgPSB0cnVlOyB9Ci0gICAgfCAvKiBlbXB0eSAqLyB7ICQkID0gZmFsc2U7IH0KLSAgOwot
Ci1leHByOgotICAgIHRlcm0gewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdW
YWx1ZUxpc3QoKTsKLSAgICAgICAgJCQtPmFkZFZhbHVlKHBhcnNlci0+c2lua0Zsb2F0aW5nVmFs
dWUoJDEpKTsKLSAgICB9Ci0gICAgfCBleHByIG9wZXJhdG9yIHRlcm0gewotICAgICAgICAkJCA9
ICQxOwotICAgICAgICBpZiAoJCQpIHsKLSAgICAgICAgICAgIGlmICgkMikgewotICAgICAgICAg
ICAgICAgIENTU1BhcnNlclZhbHVlIHY7Ci0gICAgICAgICAgICAgICAgdi5pZCA9IDA7Ci0gICAg
ICAgICAgICAgICAgdi51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOwotICAgICAgICAg
ICAgICAgIHYuaVZhbHVlID0gJDI7Ci0gICAgICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHYpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHBhcnNlci0+c2lua0Zsb2F0
aW5nVmFsdWUoJDMpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICB8IGV4cHIgaW52YWxpZF9ibG9j
a19saXN0IHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICB8IGV4cHIgaW52YWxpZF9ibG9j
a19saXN0IGVycm9yIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICB8IGV4cHIgZXJyb3Ig
ewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICA7Ci0KLW9wZXJhdG9yOgotICAgICcvJyBtYXli
ZV9zcGFjZSB7Ci0gICAgICAgICQkID0gJy8nOwotICAgIH0KLSAgfCAnLCcgbWF5YmVfc3BhY2Ug
ewotICAgICAgICAkJCA9ICcsJzsKLSAgICB9Ci0gIHwgLyogZW1wdHkgKi8gewotICAgICAgICAk
JCA9IDA7Ci0gIH0KLSAgOwotCi10ZXJtOgotICB1bmFyeV90ZXJtIHsgJCQgPSAkMTsgfQotICB8
IHVuYXJ5X29wZXJhdG9yIHVuYXJ5X3Rlcm0geyAkJCA9ICQyOyAkJC5mVmFsdWUgKj0gJDE7IH0K
LSAgfCBTVFJJTkcgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51
bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkc7IH0KLSAgfCBJREVOVCBtYXliZV9z
cGFjZSB7Ci0gICAgICAkJC5pZCA9IGNzc1ZhbHVlS2V5d29yZElEKCQxKTsKLSAgICAgICQkLnVu
aXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UOwotICAgICAgJCQuc3RyaW5nID0gJDE7
Ci0gIH0KLSAgLyogV2UgbWlnaHQgbmVlZCB0byBhY3R1YWxseSBwYXJzZSB0aGUgbnVtYmVyIGZy
b20gYSBkaW1lbnNpb24sIGJ1dCB3ZSBjYW4ndCBqdXN0IHB1dCBzb21ldGhpbmcgdGhhdCB1c2Vz
ICQkLnN0cmluZyBpbnRvIHVuYXJ5X3Rlcm0uICovCi0gIHwgRElNRU4gbWF5YmVfc3BhY2UgeyAk
JC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19ESU1FTlNJT047IH0KLSAgfCB1bmFyeV9vcGVyYXRvciBESU1FTiBtYXliZV9zcGFjZSB7ICQk
LmlkID0gMDsgJCQuc3RyaW5nID0gJDI7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X0RJTUVOU0lPTjsgfQotICB8IFVSSSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5n
ID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSTsgfQotICB8IFVOSUNP
REVSQU5HRSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VOSUNPREVfUkFOR0U7IH0KLSAgfCBIRVggbWF5YmVf
c3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1I7IH0KLSAgfCAnIycgbWF5YmVfc3BhY2UgeyAkJC5p
ZCA9IDA7ICQkLnN0cmluZyA9IENTU1BhcnNlclN0cmluZygpOyAkJC51bml0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1I7IH0gLyogSGFuZGxlIGVycm9yIGNhc2U6ICJj
b2xvcjogIzsiICovCi0gIHwgVkFSRlVOQ1RJT04gbWF5YmVfc3BhY2UgSURFTlQgJyknIG1heWJl
X3NwYWNlIHsKLSNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKLSAgICAgICQkLmlkID0gMDsKLSAg
ICAgICQkLnN0cmluZyA9ICQzOwotICAgICAgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfVkFSSUFCTEVfTkFNRTsKLSNlbmRpZgotICB9Ci0gIC8qIEZJWE1FOiBhY2NvcmRpbmcgdG8g
dGhlIHNwZWNzIGEgZnVuY3Rpb24gY2FuIGhhdmUgYSB1bmFyeV9vcGVyYXRvciBpbiBmcm9udC4g
SSBrbm93IG5vIGNhc2Ugd2hlcmUgdGhpcyBtYWtlcyBzZW5zZSAqLwotICB8IGZ1bmN0aW9uIHsK
LSAgICAgICQkID0gJDE7Ci0gIH0KLSAgfCBjYWxjX2Z1bmN0aW9uIHsKLSAgICAgICQkID0gJDE7
Ci0gIH0KLSAgfCBtaW5fb3JfbWF4X2Z1bmN0aW9uIHsKLSAgICAgICQkID0gJDE7Ci0gIH0KLSAg
fCAnJScgbWF5YmVfc3BhY2UgeyAvKiBIYW5kbGUgd2lkdGg6ICU7ICovCi0gICAgICAkJC5pZCA9
IDA7ICQkLnVuaXQgPSAwOwotICB9Ci0gIDsKLQotdW5hcnlfdGVybToKLSAgSU5URUdFUiBtYXli
ZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuaXNJbnQgPSB0cnVlOyAkJC5mVmFsdWUgPSAkMTsgJCQu
dW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOyB9Ci0gIHwgRkxPQVRUT0tFTiBt
YXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuaXNJbnQgPSBmYWxzZTsgJCQuZlZhbHVlID0gJDE7
ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjsgfQotICB8IFBFUkNFTlRB
R0UgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFOyB9Ci0gIHwgUFhTIG1heWJlX3NwYWNlIHsg
JCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUFg7IH0KLSAgfCBDTVMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQx
OyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19DTTsgfQotICB8IE1NUyBtYXliZV9z
cGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX01NOyB9Ci0gIHwgSU5TIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFs
dWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSU47IH0KLSAgfCBQVFMg
bWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QVDsgfQotICB8IFBDUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsg
JCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BDOyB9Ci0g
IHwgREVHUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRzsgfQotICB8IFJBRFMgbWF5YmVfc3BhY2UgeyAk
JC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19SQUQ7IH0KLSAgfCBHUkFEUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0g
JDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0dSQUQ7IH0KLSAgfCBUVVJOUyBt
YXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1RVUk47IH0KLSAgfCBNU0VDUyBtYXliZV9zcGFjZSB7ICQkLmlkID0g
MDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01TOyB9
Ci0gIHwgU0VDUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVu
aXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1M7IH0KLSAgfCBIRVJUWiBtYXliZV9zcGFjZSB7
ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX0haOyB9Ci0gIHwgS0hFUlRaIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUg
PSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfS0haOyB9Ci0gIHwgRU1TIG1h
eWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfRU1TOyB9Ci0gIHwgUUVNUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsg
JCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6UV9FTVM7IH0KLSAgfCBF
WFMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19FWFM7IH0KLSAgfCBSRU1TIG1heWJlX3NwYWNlIHsKLSAgICAg
ICQkLmlkID0gMDsKLSAgICAgICQkLmZWYWx1ZSA9ICQxOwotICAgICAgJCQudW5pdCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUkVNUzsKLSAgICAgIGlmIChwYXJzZXItPm1fc3R5bGVTaGVldCkK
LSAgICAgICAgICBwYXJzZXItPm1fc3R5bGVTaGVldC0+cGFyc2VyU2V0VXNlc1JlbVVuaXRzKHRy
dWUpOwotICB9Ci0gIHwgVlcgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQx
OyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WVzsgfQotICB8IFZIIG1heWJlX3Nw
YWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfVkg7IH0KLSAgfCBWTUlOIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFs
dWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVk1JTjsgfQotICB8IERQ
UFggbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19EUFBYOyB9Ci0gIHwgRFBJIG1heWJlX3NwYWNlIHsgJCQuaWQg
PSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRFBJ
OyB9Ci0gIHwgRFBDTSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQk
LnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQQ007IH0KLSAgOwotCi1mdW5jdGlvbjoK
LSAgICBGVU5DVElPTiBtYXliZV9zcGFjZSBleHByICcpJyBtYXliZV9zcGFjZSB7Ci0gICAgICAg
IENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7
Ci0gICAgICAgIGYtPm5hbWUgPSAkMTsKLSAgICAgICAgZi0+YXJncyA9IHBhcnNlci0+c2lua0Zs
b2F0aW5nVmFsdWVMaXN0KCQzKTsKLSAgICAgICAgJCQuaWQgPSAwOwotICAgICAgICAkJC51bml0
ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uOwotICAgICAgICAkJC5mdW5jdGlvbiA9IGY7Ci0g
ICAgfSB8Ci0gICAgRlVOQ1RJT04gbWF5YmVfc3BhY2UgZXhwciBUT0tFTl9FT0YgewotICAgICAg
ICBDU1NQYXJzZXJGdW5jdGlvbiogZiA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdGdW5jdGlvbigp
OwotICAgICAgICBmLT5uYW1lID0gJDE7Ci0gICAgICAgIGYtPmFyZ3MgPSBwYXJzZXItPnNpbmtG
bG9hdGluZ1ZhbHVlTGlzdCgkMyk7Ci0gICAgICAgICQkLmlkID0gMDsKLSAgICAgICAgJCQudW5p
dCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKLSAgICAgICAgJCQuZnVuY3Rpb24gPSBmOwot
ICAgIH0gfAotICAgIEZVTkNUSU9OIG1heWJlX3NwYWNlICcpJyBtYXliZV9zcGFjZSB7Ci0gICAg
ICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9u
KCk7Ci0gICAgICAgIGYtPm5hbWUgPSAkMTsKLSAgICAgICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiB2
YWx1ZUxpc3QgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nVmFsdWVMaXN0KCk7Ci0gICAgICAgIGYt
PmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCh2YWx1ZUxpc3QpOwotICAgICAg
ICAkJC5pZCA9IDA7Ci0gICAgICAgICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb247
Ci0gICAgICAgICQkLmZ1bmN0aW9uID0gZjsKLSAgICB9IHwKLSAgICBGVU5DVElPTiBtYXliZV9z
cGFjZSBlcnJvciB7Ci0gICAgICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVh
dGVGbG9hdGluZ0Z1bmN0aW9uKCk7Ci0gICAgICAgIGYtPm5hbWUgPSAkMTsKLSAgICAgICAgZi0+
YXJncyA9IG51bGxwdHI7Ci0gICAgICAgICQkLmlkID0gMDsKLSAgICAgICAgJCQudW5pdCA9IENT
U1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKLSAgICAgICAgJCQuZnVuY3Rpb24gPSBmOwotICB9Ci0g
IDsKLSAKLWNhbGNfZnVuY190ZXJtOgotICB1bmFyeV90ZXJtIHsgJCQgPSAkMTsgfQotICB8IFZB
UkZVTkNUSU9OIG1heWJlX3NwYWNlIElERU5UICcpJyBtYXliZV9zcGFjZSB7Ci0jaWYgRU5BQkxF
KENTU19WQVJJQUJMRVMpCi0gICAgICAkJC5pZCA9IDA7Ci0gICAgICAkJC5zdHJpbmcgPSAkMzsK
LSAgICAgICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZBUklBQkxFX05BTUU7Ci0j
ZW5kaWYKLSAgfQotICB8IHVuYXJ5X29wZXJhdG9yIHVuYXJ5X3Rlcm0geyAkJCA9ICQyOyAkJC5m
VmFsdWUgKj0gJDE7IH0KLSAgOwotCi1jYWxjX2Z1bmNfb3BlcmF0b3I6Ci0gICAgJysnIFdISVRF
U1BBQ0UgewotICAgICAgICAkJCA9ICcrJzsKLSAgICB9Ci0gICAgfCAnLScgV0hJVEVTUEFDRSB7
Ci0gICAgICAgICQkID0gJy0nOwotICAgIH0KLSAgICB8ICcqJyBtYXliZV9zcGFjZSB7Ci0gICAg
ICAgICQkID0gJyonOwotICAgIH0KLSAgICB8ICcvJyBtYXliZV9zcGFjZSB7Ci0gICAgICAgICQk
ID0gJy8nOwotICAgIH0KLSAgOwotCi1jYWxjX2Z1bmNfcGFyZW5fZXhwcjoKLSAgICAnKCcgbWF5
YmVfc3BhY2UgY2FsY19mdW5jX2V4cHIgbWF5YmVfc3BhY2UgJyknIG1heWJlX3NwYWNlIHsKLSAg
ICAgICAgaWYgKCQzKSB7Ci0gICAgICAgICAgICAkJCA9ICQzOwotICAgICAgICAgICAgQ1NTUGFy
c2VyVmFsdWUgdjsKLSAgICAgICAgICAgIHYuaWQgPSAwOwotICAgICAgICAgICAgdi51bml0ID0g
Q1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOwotICAgICAgICAgICAgdi5pVmFsdWUgPSAnKCc7Ci0g
ICAgICAgICAgICAkJC0+aW5zZXJ0VmFsdWVBdCgwLCB2KTsKLSAgICAgICAgICAgIHYuaVZhbHVl
ID0gJyknOwotICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHYpOwotICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgICQkID0gMDsKLSAgICB9Ci0KLWNhbGNfZnVuY19leHByOgotICAgIGNhbGNfZnVu
Y190ZXJtIG1heWJlX3NwYWNlIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5n
VmFsdWVMaXN0KCk7Ci0gICAgICAgICQkLT5hZGRWYWx1ZShwYXJzZXItPnNpbmtGbG9hdGluZ1Zh
bHVlKCQxKSk7Ci0gICAgfQotICAgIHwgY2FsY19mdW5jX2V4cHIgY2FsY19mdW5jX29wZXJhdG9y
IGNhbGNfZnVuY190ZXJtIHsKLSAgICAgICAgaWYgKCQxICYmICQyKSB7Ci0gICAgICAgICAgICAk
JCA9ICQxOwotICAgICAgICAgICAgQ1NTUGFyc2VyVmFsdWUgdjsKLSAgICAgICAgICAgIHYuaWQg
PSAwOwotICAgICAgICAgICAgdi51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOwotICAg
ICAgICAgICAgdi5pVmFsdWUgPSAkMjsKLSAgICAgICAgICAgICQkLT5hZGRWYWx1ZSh2KTsKLSAg
ICAgICAgICAgICQkLT5hZGRWYWx1ZShwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlKCQzKSk7Ci0g
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgJCQgPSAwOwotCi0gICAgfQotICAgIHwgY2FsY19m
dW5jX2V4cHIgY2FsY19mdW5jX29wZXJhdG9yIGNhbGNfZnVuY19wYXJlbl9leHByIHsKLSAgICAg
ICAgaWYgKCQxICYmICQyICYmICQzKSB7Ci0gICAgICAgICAgICAkJCA9ICQxOwotICAgICAgICAg
ICAgQ1NTUGFyc2VyVmFsdWUgdjsKLSAgICAgICAgICAgIHYuaWQgPSAwOwotICAgICAgICAgICAg
di51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOwotICAgICAgICAgICAgdi5pVmFsdWUg
PSAkMjsKLSAgICAgICAgICAgICQkLT5hZGRWYWx1ZSh2KTsKLSAgICAgICAgICAgICQkLT5leHRl
bmQoKigkMykpOwotICAgICAgICB9IGVsc2UgCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgfQot
ICAgIHwgY2FsY19mdW5jX3BhcmVuX2V4cHIKLSAgICB8IGNhbGNfZnVuY19leHByIGVycm9yIHsK
LSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgOwotCi1jYWxjX2Z1bmNfZXhwcl9saXN0OgotICAg
IGNhbGNfZnVuY19leHByICB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfSAgICAKLSAgICB8IGNh
bGNfZnVuY19leHByX2xpc3QgJywnIG1heWJlX3NwYWNlIGNhbGNfZnVuY19leHByIHsKLSAgICAg
ICAgaWYgKCQxICYmICQ0KSB7Ci0gICAgICAgICAgICAkJCA9ICQxOwotICAgICAgICAgICAgQ1NT
UGFyc2VyVmFsdWUgdjsKLSAgICAgICAgICAgIHYuaWQgPSAwOwotICAgICAgICAgICAgdi51bml0
ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOwotICAgICAgICAgICAgdi5pVmFsdWUgPSAnLCc7
Ci0gICAgICAgICAgICAkJC0+YWRkVmFsdWUodik7Ci0gICAgICAgICAgICAkJC0+ZXh0ZW5kKCoo
JDQpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgIAot
Ci1jYWxjX2Z1bmN0aW9uOgotICAgIENBTENGVU5DVElPTiBtYXliZV9zcGFjZSBjYWxjX2Z1bmNf
ZXhwciAnKScgbWF5YmVfc3BhY2UgewotICAgICAgICBDU1NQYXJzZXJGdW5jdGlvbiogZiA9IHBh
cnNlci0+Y3JlYXRlRmxvYXRpbmdGdW5jdGlvbigpOwotICAgICAgICBmLT5uYW1lID0gJDE7Ci0g
ICAgICAgIGYtPmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkMyk7Ci0gICAg
ICAgICQkLmlkID0gMDsKLSAgICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlv
bjsKLSAgICAgICAgJCQuZnVuY3Rpb24gPSBmOwotICAgIH0KLSAgICB8IENBTENGVU5DVElPTiBt
YXliZV9zcGFjZSBlcnJvciB7Ci0gICAgICAgIFlZRVJST1I7Ci0gICAgfQotICAgIDsKLQotCi1t
aW5fb3JfbWF4OgotICAgIE1JTkZVTkNUSU9OIHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICB9Ci0g
ICAgfCBNQVhGVU5DVElPTiB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAgIDsKLQotbWlu
X29yX21heF9mdW5jdGlvbjoKLSAgICBtaW5fb3JfbWF4IG1heWJlX3NwYWNlIGNhbGNfZnVuY19l
eHByX2xpc3QgJyknIG1heWJlX3NwYWNlIHsKLSAgICAgICAgQ1NTUGFyc2VyRnVuY3Rpb24qIGYg
PSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsKLSAgICAgICAgZi0+bmFtZSA9ICQx
OwotICAgICAgICBmLT5hcmdzID0gcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDMpOwot
ICAgICAgICAkJC5pZCA9IDA7Ci0gICAgICAgICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6RnVu
Y3Rpb247Ci0gICAgICAgICQkLmZ1bmN0aW9uID0gZjsKLSAgICB9IAotICAgIHwgbWluX29yX21h
eCBtYXliZV9zcGFjZSBlcnJvciB7Ci0gICAgICAgIFlZRVJST1I7Ci0gICAgfQotICAgIDsKLQot
LyogZXJyb3IgaGFuZGxpbmcgcnVsZXMgKi8KLQotc2F2ZV9ibG9jazoKLSAgICBjbG9zaW5nX2Jy
YWNlIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgfCBlcnJvciBjbG9zaW5nX2JyYWNlIHsK
LSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICA7Ci0KLWludmFsaWRfYXQ6Ci0gICAgQVRLRVlX
T1JEIGVycm9yIGludmFsaWRfYmxvY2sgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICB8IEFU
S0VZV09SRCBlcnJvciAnOycgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgIDsKLQotaW52
YWxpZF9ydWxlOgotICAgIGVycm9yIGludmFsaWRfYmxvY2sgewotICAgICAgICAkJCA9IDA7Ci0g
ICAgfQotCi0vKgotICBTZWVtcyBsaWtlIHRoZSB0d28gcnVsZXMgYmVsb3cgYXJlIHRyeWluZyB0
b28gbXVjaCBhbmQgdmlvbGF0aW5nCi0gIGh0dHA6Ly93d3cuaGl4aWUuY2gvdGVzdHMvZXZpbC9t
aXhlZC9jc3NlcnJvcmhhbmRsaW5nLmh0bWwKLQotICB8IGVycm9yICc7JyB7Ci0gICAgICAgICQk
ID0gMDsKLSAgICB9Ci0gIHwgZXJyb3IgJ30nIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSov
Ci0gICAgOwotCi1pbnZhbGlkX2Jsb2NrOgotICAgICd7JyBlcnJvciBpbnZhbGlkX2Jsb2NrX2xp
c3QgZXJyb3IgY2xvc2luZ19icmFjZSB7Ci0gICAgICAgIHBhcnNlci0+aW52YWxpZEJsb2NrSGl0
KCk7Ci0gICAgfQotICB8ICd7JyBlcnJvciBjbG9zaW5nX2JyYWNlIHsKLSAgICAgICAgcGFyc2Vy
LT5pbnZhbGlkQmxvY2tIaXQoKTsKLSAgICB9Ci0gICAgOwotCi1pbnZhbGlkX2Jsb2NrX2xpc3Q6
Ci0gICAgaW52YWxpZF9ibG9jawotICB8IGludmFsaWRfYmxvY2tfbGlzdCBlcnJvciBpbnZhbGlk
X2Jsb2NrCi07Ci0KLSUlCi0KLSNpZiBZWURFQlVHID4gMAotc3RhdGljIHZvaWQgcHJpbnRfdG9r
ZW5fdmFsdWUoRklMRSAqIHl5b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNUWVBFIGNvbnN0ICZ5eXZh
bHVlKQotewotICAgIHN3aXRjaCAoeXl0eXBlKSB7Ci0gICAgY2FzZSBJREVOVDoKLSAgICBjYXNl
IFNUUklORzoKLSAgICBjYXNlIE5USDoKLSAgICBjYXNlIEhFWDoKLSAgICBjYXNlIElEU0VMOgot
ICAgIGNhc2UgRElNRU46Ci0gICAgY2FzZSBJTlZBTElERElNRU46Ci0gICAgY2FzZSBVUkk6Ci0g
ICAgY2FzZSBGVU5DVElPTjoKLSAgICBjYXNlIEFOWUZVTkNUSU9OOgotICAgIGNhc2UgTk9URlVO
Q1RJT046Ci0gICAgY2FzZSBDQUxDRlVOQ1RJT046Ci0gICAgY2FzZSBNSU5GVU5DVElPTjoKLSAg
ICBjYXNlIE1BWEZVTkNUSU9OOgotICAgIGNhc2UgVkFSX0RFRklOSVRJT046Ci0gICAgY2FzZSBV
TklDT0RFUkFOR0U6Ci0gICAgICAgIFlZRlBSSU5URih5eW91dHB1dCwgIiVzIiwgU3RyaW5nKHl5
dmFsdWUuc3RyaW5nKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1t
YXIueS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43MzNhZThlZGE2MmU2NGYwMzdiZmQwMGI1YTg0MTc4ZGYyNzZi
ZWVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5p
bgpAQCAtMCwwICsxLDE3MDMgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDAyLTIwMDMgTGFy
cyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5j
b20pCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+
CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK
KyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC
b3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqCisgKi8KKworJXB1cmVfcGFyc2VyCisKKyVw
YXJzZS1wYXJhbSB7IENTU1BhcnNlciogcGFyc2VyIH0KKyVsZXgtcGFyYW0geyBDU1NQYXJzZXIq
IHBhcnNlciB9CisKKyV1bmlvbiB7CisgICAgYm9vbCBib29sZWFuOworICAgIGNoYXIgY2hhcmFj
dGVyOworICAgIGludCBpbnRlZ2VyOworICAgIGRvdWJsZSBudW1iZXI7CisgICAgQ1NTUGFyc2Vy
U3RyaW5nIHN0cmluZzsKKworICAgIFN0eWxlUnVsZUJhc2UqIHJ1bGU7CisgICAgVmVjdG9yPFJl
ZlB0cjxTdHlsZVJ1bGVCYXNlPiA+KiBydWxlTGlzdDsKKyAgICBDU1NQYXJzZXJTZWxlY3Rvciog
c2VsZWN0b3I7CisgICAgQ1NTU2VsZWN0b3JWZWN0b3IqIHNlbGVjdG9yTGlzdDsKKyAgICBDU1NT
ZWxlY3Rvcjo6TWFyZ2luQm94VHlwZSBtYXJnaW5Cb3g7CisgICAgQ1NTU2VsZWN0b3I6OlJlbGF0
aW9uIHJlbGF0aW9uOworICAgIE1lZGlhUXVlcnlTZXQqIG1lZGlhTGlzdDsKKyAgICBNZWRpYVF1
ZXJ5KiBtZWRpYVF1ZXJ5OworICAgIE1lZGlhUXVlcnk6OlJlc3RyaWN0b3IgbWVkaWFRdWVyeVJl
c3RyaWN0b3I7CisgICAgTWVkaWFRdWVyeUV4cCogbWVkaWFRdWVyeUV4cDsKKyAgICBDU1NQYXJz
ZXJWYWx1ZSB2YWx1ZTsKKyAgICBDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlTGlzdDsKKyAgICBW
ZWN0b3I8T3duUHRyPE1lZGlhUXVlcnlFeHA+ID4qIG1lZGlhUXVlcnlFeHBMaXN0OworICAgIFN0
eWxlS2V5ZnJhbWUqIGtleWZyYW1lOworICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVLZXlmcmFtZT4g
Pioga2V5ZnJhbWVSdWxlTGlzdDsKKyAgICBmbG9hdCB2YWw7CisgICAgQ1NTUHJvcGVydHlJRCBp
ZDsKK30KKworJXsKKworc3RhdGljIGlubGluZSBpbnQgY3NzeXllcnJvcih2b2lkKiwgY29uc3Qg
Y2hhciopCit7CisgICAgcmV0dXJuIDE7Cit9CisKKyV9CisKKyVleHBlY3QgNjUKKworJW5vbmFz
c29jIExPV0VTVF9QUkVDCisKKyVsZWZ0IFVOSU1QT1JUQU5UX1RPSworCisldG9rZW4gV0hJVEVT
UEFDRSBTR01MX0NECisldG9rZW4gVE9LRU5fRU9GIDAKKworJXRva2VuIElOQ0xVREVTCisldG9r
ZW4gREFTSE1BVENICisldG9rZW4gQkVHSU5TV0lUSAorJXRva2VuIEVORFNXSVRICisldG9rZW4g
Q09OVEFJTlMKKworJXRva2VuIDxzdHJpbmc+IFNUUklORworJXJpZ2h0IDxzdHJpbmc+IElERU5U
CisldG9rZW4gPHN0cmluZz4gTlRICisKKyVub25hc3NvYyA8c3RyaW5nPiBIRVgKKyVub25hc3Nv
YyA8c3RyaW5nPiBJRFNFTAorJW5vbmFzc29jICc6JworJW5vbmFzc29jICcuJworJW5vbmFzc29j
ICdbJworJW5vbmFzc29jIDxzdHJpbmc+ICcqJworJW5vbmFzc29jIGVycm9yCislbGVmdCAnfCcK
KworJXRva2VuIElNUE9SVF9TWU0KKyV0b2tlbiBQQUdFX1NZTQorJXRva2VuIE1FRElBX1NZTQor
JXRva2VuIEZPTlRfRkFDRV9TWU0KKyV0b2tlbiBDSEFSU0VUX1NZTQorJXRva2VuIE5BTUVTUEFD
RV9TWU0KKyV0b2tlbiBWQVJGVU5DVElPTgorJXRva2VuIFdFQktJVF9SVUxFX1NZTQorJXRva2Vu
IFdFQktJVF9ERUNMU19TWU0KKyV0b2tlbiBXRUJLSVRfS0VZRlJBTUVfUlVMRV9TWU0KKyV0b2tl
biBXRUJLSVRfS0VZRlJBTUVTX1NZTQorJXRva2VuIFdFQktJVF9WQUxVRV9TWU0KKyV0b2tlbiBX
RUJLSVRfTUVESUFRVUVSWV9TWU0KKyV0b2tlbiBXRUJLSVRfU0VMRUNUT1JfU1lNCisldG9rZW4g
V0VCS0lUX1JFR0lPTl9SVUxFX1NZTQorJXRva2VuIDxtYXJnaW5Cb3g+IFRPUExFRlRDT1JORVJf
U1lNCisldG9rZW4gPG1hcmdpbkJveD4gVE9QTEVGVF9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBU
T1BDRU5URVJfU1lNCisldG9rZW4gPG1hcmdpbkJveD4gVE9QUklHSFRfU1lNCisldG9rZW4gPG1h
cmdpbkJveD4gVE9QUklHSFRDT1JORVJfU1lNCisldG9rZW4gPG1hcmdpbkJveD4gQk9UVE9NTEVG
VENPUk5FUl9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBCT1RUT01MRUZUX1NZTQorJXRva2VuIDxt
YXJnaW5Cb3g+IEJPVFRPTUNFTlRFUl9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBCT1RUT01SSUdI
VF9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBCT1RUT01SSUdIVENPUk5FUl9TWU0KKyV0b2tlbiA8
bWFyZ2luQm94PiBMRUZUVE9QX1NZTQorJXRva2VuIDxtYXJnaW5Cb3g+IExFRlRNSURETEVfU1lN
CisldG9rZW4gPG1hcmdpbkJveD4gTEVGVEJPVFRPTV9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBS
SUdIVFRPUF9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBSSUdIVE1JRERMRV9TWU0KKyV0b2tlbiA8
bWFyZ2luQm94PiBSSUdIVEJPVFRPTV9TWU0KKworJXRva2VuIEFUS0VZV09SRAorCisldG9rZW4g
SU1QT1JUQU5UX1NZTQorJXRva2VuIE1FRElBX09OTFkKKyV0b2tlbiBNRURJQV9OT1QKKyV0b2tl
biBNRURJQV9BTkQKKworJXRva2VuIDxudW1iZXI+IFJFTVMKKyV0b2tlbiA8bnVtYmVyPiBRRU1T
CisldG9rZW4gPG51bWJlcj4gRU1TCisldG9rZW4gPG51bWJlcj4gRVhTCisldG9rZW4gPG51bWJl
cj4gUFhTCisldG9rZW4gPG51bWJlcj4gQ01TCisldG9rZW4gPG51bWJlcj4gTU1TCisldG9rZW4g
PG51bWJlcj4gSU5TCisldG9rZW4gPG51bWJlcj4gUFRTCisldG9rZW4gPG51bWJlcj4gUENTCisl
dG9rZW4gPG51bWJlcj4gREVHUworJXRva2VuIDxudW1iZXI+IFJBRFMKKyV0b2tlbiA8bnVtYmVy
PiBHUkFEUworJXRva2VuIDxudW1iZXI+IFRVUk5TCisldG9rZW4gPG51bWJlcj4gTVNFQ1MKKyV0
b2tlbiA8bnVtYmVyPiBTRUNTCisldG9rZW4gPG51bWJlcj4gSEVSVFoKKyV0b2tlbiA8bnVtYmVy
PiBLSEVSVFoKKyV0b2tlbiA8c3RyaW5nPiBESU1FTgorJXRva2VuIDxzdHJpbmc+IElOVkFMSURE
SU1FTgorJXRva2VuIDxudW1iZXI+IFBFUkNFTlRBR0UKKyV0b2tlbiA8bnVtYmVyPiBGTE9BVFRP
S0VOCisldG9rZW4gPG51bWJlcj4gSU5URUdFUgorJXRva2VuIDxudW1iZXI+IFZXCisldG9rZW4g
PG51bWJlcj4gVkgKKyV0b2tlbiA8bnVtYmVyPiBWTUlOCisldG9rZW4gPG51bWJlcj4gRFBQWAor
JXRva2VuIDxudW1iZXI+IERQSQorJXRva2VuIDxudW1iZXI+IERQQ00KKworJXRva2VuIDxzdHJp
bmc+IFVSSQorJXRva2VuIDxzdHJpbmc+IEZVTkNUSU9OCisldG9rZW4gPHN0cmluZz4gQU5ZRlVO
Q1RJT04KKyV0b2tlbiA8c3RyaW5nPiBOT1RGVU5DVElPTgorJXRva2VuIDxzdHJpbmc+IENBTENG
VU5DVElPTgorJXRva2VuIDxzdHJpbmc+IE1JTkZVTkNUSU9OCisldG9rZW4gPHN0cmluZz4gTUFY
RlVOQ1RJT04KKyV0b2tlbiA8c3RyaW5nPiBWQVJfREVGSU5JVElPTgorCisldG9rZW4gPHN0cmlu
Zz4gVU5JQ09ERVJBTkdFCisKKyV0eXBlIDxyZWxhdGlvbj4gY29tYmluYXRvcgorCisldHlwZSA8
cnVsZT4gY2hhcnNldAorJXR5cGUgPHJ1bGU+IGlnbm9yZWRfY2hhcnNldAorJXR5cGUgPHJ1bGU+
IHJ1bGVzZXQKKyV0eXBlIDxydWxlPiBtZWRpYQorJXR5cGUgPHJ1bGU+IGltcG9ydAorJXR5cGUg
PHJ1bGU+IG5hbWVzcGFjZQorJXR5cGUgPHJ1bGU+IHBhZ2UKKyV0eXBlIDxydWxlPiBtYXJnaW5f
Ym94CisldHlwZSA8cnVsZT4gZm9udF9mYWNlCisldHlwZSA8cnVsZT4ga2V5ZnJhbWVzCisldHlw
ZSA8cnVsZT4gaW52YWxpZF9ydWxlCisldHlwZSA8cnVsZT4gc2F2ZV9ibG9jaworJXR5cGUgPHJ1
bGU+IGludmFsaWRfYXQKKyV0eXBlIDxydWxlPiBydWxlCisldHlwZSA8cnVsZT4gdmFsaWRfcnVs
ZQorJXR5cGUgPHJ1bGVMaXN0PiBibG9ja19ydWxlX2xpc3QgCisldHlwZSA8cnVsZT4gYmxvY2tf
cnVsZQorJXR5cGUgPHJ1bGU+IGJsb2NrX3ZhbGlkX3J1bGUKKyV0eXBlIDxydWxlPiByZWdpb24K
KworJXR5cGUgPHN0cmluZz4gbWF5YmVfbnNfcHJlZml4CisKKyV0eXBlIDxzdHJpbmc+IG5hbWVz
cGFjZV9zZWxlY3RvcgorCisldHlwZSA8c3RyaW5nPiBzdHJpbmdfb3JfdXJpCisldHlwZSA8c3Ry
aW5nPiBpZGVudF9vcl9zdHJpbmcKKyV0eXBlIDxzdHJpbmc+IG1lZGl1bQorJXR5cGUgPG1hcmdp
bkJveD4gbWFyZ2luX3N5bQorCisldHlwZSA8c3RyaW5nPiBtZWRpYV9mZWF0dXJlCisldHlwZSA8
bWVkaWFMaXN0PiBtZWRpYV9saXN0CisldHlwZSA8bWVkaWFMaXN0PiBtYXliZV9tZWRpYV9saXN0
CisldHlwZSA8bWVkaWFRdWVyeT4gbWVkaWFfcXVlcnkKKyV0eXBlIDxtZWRpYVF1ZXJ5UmVzdHJp
Y3Rvcj4gbWF5YmVfbWVkaWFfcmVzdHJpY3RvcgorJXR5cGUgPHZhbHVlTGlzdD4gbWF5YmVfbWVk
aWFfdmFsdWUKKyV0eXBlIDxtZWRpYVF1ZXJ5RXhwPiBtZWRpYV9xdWVyeV9leHAKKyV0eXBlIDxt
ZWRpYVF1ZXJ5RXhwTGlzdD4gbWVkaWFfcXVlcnlfZXhwX2xpc3QKKyV0eXBlIDxtZWRpYVF1ZXJ5
RXhwTGlzdD4gbWF5YmVfYW5kX21lZGlhX3F1ZXJ5X2V4cF9saXN0CisKKyV0eXBlIDxzdHJpbmc+
IGtleWZyYW1lX25hbWUKKyV0eXBlIDxrZXlmcmFtZT4ga2V5ZnJhbWVfcnVsZQorJXR5cGUgPGtl
eWZyYW1lUnVsZUxpc3Q+IGtleWZyYW1lc19ydWxlCisldHlwZSA8dmFsdWVMaXN0PiBrZXlfbGlz
dAorJXR5cGUgPHZhbHVlPiBrZXkKKworJXR5cGUgPGlkPiBwcm9wZXJ0eQorCisldHlwZSA8c2Vs
ZWN0b3I+IHNwZWNpZmllcgorJXR5cGUgPHNlbGVjdG9yPiBzcGVjaWZpZXJfbGlzdAorJXR5cGUg
PHNlbGVjdG9yPiBzaW1wbGVfc2VsZWN0b3IKKyV0eXBlIDxzZWxlY3Rvcj4gc2VsZWN0b3IKKyV0
eXBlIDxzZWxlY3Rvckxpc3Q+IHNlbGVjdG9yX2xpc3QKKyV0eXBlIDxzZWxlY3Rvckxpc3Q+IHNp
bXBsZV9zZWxlY3Rvcl9saXN0CisldHlwZSA8c2VsZWN0b3JMaXN0PiByZWdpb25fc2VsZWN0b3IK
KyV0eXBlIDxzZWxlY3Rvcj4gc2VsZWN0b3Jfd2l0aF90cmFpbGluZ193aGl0ZXNwYWNlCisldHlw
ZSA8c2VsZWN0b3I+IGNsYXNzCisldHlwZSA8c2VsZWN0b3I+IGF0dHJpYgorJXR5cGUgPHNlbGVj
dG9yPiBwc2V1ZG8KKyV0eXBlIDxzZWxlY3Rvcj4gcHNldWRvX3BhZ2UKKyV0eXBlIDxzZWxlY3Rv
cj4gcGFnZV9zZWxlY3RvcgorCisldHlwZSA8Ym9vbGVhbj4gZGVjbGFyYXRpb25fbGlzdAorJXR5
cGUgPGJvb2xlYW4+IGRlY2xfbGlzdAorJXR5cGUgPGJvb2xlYW4+IGRlY2xhcmF0aW9uCisldHlw
ZSA8Ym9vbGVhbj4gZGVjbGFyYXRpb25zX2FuZF9tYXJnaW5zCisKKyV0eXBlIDxib29sZWFuPiBw
cmlvCisKKyV0eXBlIDxpbnRlZ2VyPiBtYXRjaAorJXR5cGUgPGludGVnZXI+IHVuYXJ5X29wZXJh
dG9yCisldHlwZSA8aW50ZWdlcj4gbWF5YmVfdW5hcnlfb3BlcmF0b3IKKyV0eXBlIDxjaGFyYWN0
ZXI+IG9wZXJhdG9yCisKKyV0eXBlIDx2YWx1ZUxpc3Q+IGV4cHIKKyV0eXBlIDx2YWx1ZT4gdGVy
bQorJXR5cGUgPHZhbHVlPiB1bmFyeV90ZXJtCisldHlwZSA8dmFsdWU+IGZ1bmN0aW9uCisldHlw
ZSA8dmFsdWU+IGNhbGNfZnVuY190ZXJtCisldHlwZSA8Y2hhcmFjdGVyPiBjYWxjX2Z1bmNfb3Bl
cmF0b3IKKyV0eXBlIDx2YWx1ZUxpc3Q+IGNhbGNfZnVuY19leHByCisldHlwZSA8dmFsdWVMaXN0
PiBjYWxjX2Z1bmNfZXhwcl9saXN0CisldHlwZSA8dmFsdWVMaXN0PiBjYWxjX2Z1bmNfcGFyZW5f
ZXhwcgorJXR5cGUgPHZhbHVlPiBjYWxjX2Z1bmN0aW9uCisldHlwZSA8c3RyaW5nPiBtaW5fb3Jf
bWF4CisldHlwZSA8dmFsdWU+IG1pbl9vcl9tYXhfZnVuY3Rpb24KKworJXR5cGUgPHN0cmluZz4g
ZWxlbWVudF9uYW1lCisldHlwZSA8c3RyaW5nPiBhdHRyX25hbWUKKworJSUKKworc3R5bGVzaGVl
dDoKKyAgICBtYXliZV9zcGFjZSBtYXliZV9jaGFyc2V0IG1heWJlX3NnbWwgcnVsZV9saXN0Cisg
IHwgd2Via2l0X3J1bGUgbWF5YmVfc3BhY2UKKyAgfCB3ZWJraXRfZGVjbHMgbWF5YmVfc3BhY2UK
KyAgfCB3ZWJraXRfdmFsdWUgbWF5YmVfc3BhY2UKKyAgfCB3ZWJraXRfbWVkaWFxdWVyeSBtYXli
ZV9zcGFjZQorICB8IHdlYmtpdF9zZWxlY3RvciBtYXliZV9zcGFjZQorICB8IHdlYmtpdF9rZXlm
cmFtZV9ydWxlIG1heWJlX3NwYWNlCisgIDsKKword2Via2l0X3J1bGU6CisgICAgV0VCS0lUX1JV
TEVfU1lNICd7JyBtYXliZV9zcGFjZSB2YWxpZF9ydWxlIG1heWJlX3NwYWNlICd9JyB7CisgICAg
ICAgIHBhcnNlci0+bV9ydWxlID0gJDQ7CisgICAgfQorOworCit3ZWJraXRfa2V5ZnJhbWVfcnVs
ZToKKyAgICBXRUJLSVRfS0VZRlJBTUVfUlVMRV9TWU0gJ3snIG1heWJlX3NwYWNlIGtleWZyYW1l
X3J1bGUgbWF5YmVfc3BhY2UgJ30nIHsKKyAgICAgICAgcGFyc2VyLT5tX2tleWZyYW1lID0gJDQ7
CisgICAgfQorOworCit3ZWJraXRfZGVjbHM6CisgICAgV0VCS0lUX0RFQ0xTX1NZTSAneycgbWF5
YmVfc3BhY2VfYmVmb3JlX2RlY2xhcmF0aW9uIGRlY2xhcmF0aW9uX2xpc3QgJ30nIHsKKyAgICAg
ICAgLyogY2FuIGJlIGVtcHR5ICovCisgICAgfQorOworCit3ZWJraXRfdmFsdWU6CisgICAgV0VC
S0lUX1ZBTFVFX1NZTSAneycgbWF5YmVfc3BhY2UgZXhwciAnfScgeworICAgICAgICBpZiAoJDQp
IHsKKyAgICAgICAgICAgIHBhcnNlci0+bV92YWx1ZUxpc3QgPSBwYXJzZXItPnNpbmtGbG9hdGlu
Z1ZhbHVlTGlzdCgkNCk7CisgICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHBh
cnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCk7CisgICAgICAgICAgICBpZiAoIXBhcnNl
ci0+cGFyc2VWYWx1ZShwYXJzZXItPm1faWQsIHBhcnNlci0+bV9pbXBvcnRhbnQpKQorICAgICAg
ICAgICAgICAgIHBhcnNlci0+cm9sbGJhY2tMYXN0UHJvcGVydGllcyhwYXJzZXItPm1fcGFyc2Vk
UHJvcGVydGllcy0+c2l6ZSgpIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7CisgICAgICAgICAgICBw
YXJzZXItPm1fdmFsdWVMaXN0ID0gbnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0KKzsKKword2Vi
a2l0X21lZGlhcXVlcnk6CisgICAgIFdFQktJVF9NRURJQVFVRVJZX1NZTSBXSElURVNQQUNFIG1h
eWJlX3NwYWNlIG1lZGlhX3F1ZXJ5ICd9JyB7CisgICAgICAgICBwYXJzZXItPm1fbWVkaWFRdWVy
eSA9IHBhcnNlci0+c2lua0Zsb2F0aW5nTWVkaWFRdWVyeSgkNCk7CisgICAgIH0KKzsKKword2Vi
a2l0X3NlbGVjdG9yOgorICAgIFdFQktJVF9TRUxFQ1RPUl9TWU0gJ3snIG1heWJlX3NwYWNlIHNl
bGVjdG9yX2xpc3QgJ30nIHsKKyAgICAgICAgaWYgKCQ0KSB7CisgICAgICAgICAgICBpZiAocGFy
c2VyLT5tX3NlbGVjdG9yTGlzdEZvclBhcnNlU2VsZWN0b3IpCisgICAgICAgICAgICAgICAgcGFy
c2VyLT5tX3NlbGVjdG9yTGlzdEZvclBhcnNlU2VsZWN0b3ItPmFkb3B0U2VsZWN0b3JWZWN0b3Io
KiQ0KTsKKyAgICAgICAgfQorICAgIH0KKzsKKworbWF5YmVfc3BhY2U6CisgICAgLyogZW1wdHkg
Ki8gJXByZWMgVU5JTVBPUlRBTlRfVE9LCisgIHwgbWF5YmVfc3BhY2UgV0hJVEVTUEFDRQorICA7
CisKK21heWJlX3NnbWw6CisgICAgLyogZW1wdHkgKi8KKyAgfCBtYXliZV9zZ21sIFNHTUxfQ0QK
KyAgfCBtYXliZV9zZ21sIFdISVRFU1BBQ0UKKyAgOworCittYXliZV9jaGFyc2V0OgorICAgLyog
ZW1wdHkgKi8KKyAgfCBjaGFyc2V0IHsKKyAgfQorICA7CisKK2Nsb3NpbmdfYnJhY2U6CisgICAg
J30nCisgIHwgJXByZWMgTE9XRVNUX1BSRUMgVE9LRU5fRU9GCisgIDsKKworY2hhcnNldDoKKyAg
Q0hBUlNFVF9TWU0gbWF5YmVfc3BhY2UgU1RSSU5HIG1heWJlX3NwYWNlICc7JyB7CisgICAgIGlm
IChwYXJzZXItPm1fc3R5bGVTaGVldCkKKyAgICAgICAgIHBhcnNlci0+bV9zdHlsZVNoZWV0LT5w
YXJzZXJTZXRFbmNvZGluZ0Zyb21DaGFyc2V0UnVsZSgkMyk7CisgICAgIGlmIChwYXJzZXItPmlz
RXh0cmFjdGluZ1NvdXJjZURhdGEoKSAmJiBwYXJzZXItPm1fY3VycmVudFJ1bGVEYXRhU3RhY2st
PmlzRW1wdHkoKSAmJiBwYXJzZXItPm1fcnVsZVNvdXJjZURhdGFSZXN1bHQpCisgICAgICAgICBw
YXJzZXItPmFkZE5ld1J1bGVUb1NvdXJjZVRyZWUoQ1NTUnVsZVNvdXJjZURhdGE6OmNyZWF0ZVVu
a25vd24oKSk7CisgICAgICQkID0gMDsKKyAgfQorICB8IENIQVJTRVRfU1lNIGVycm9yIGludmFs
aWRfYmxvY2sgeworICB9CisgIHwgQ0hBUlNFVF9TWU0gZXJyb3IgJzsnIHsKKyAgfQorOworCitp
Z25vcmVkX2NoYXJzZXQ6CisgICAgQ0hBUlNFVF9TWU0gbWF5YmVfc3BhY2UgU1RSSU5HIG1heWJl
X3NwYWNlICc7JyB7CisgICAgICAgIC8vIElnbm9yZSBhbnkgQGNoYXJzZXQgcnVsZSBub3QgYXQg
dGhlIGJlZ2lubmluZyBvZiB0aGUgc3R5bGUgc2hlZXQuCisgICAgICAgICQkID0gMDsKKyAgICB9
CisgICAgfCBDSEFSU0VUX1NZTSBtYXliZV9zcGFjZSAnOycgeworICAgICAgICAkJCA9IDA7Cisg
ICAgfQorOworCitydWxlX2xpc3Q6CisgICAvKiBlbXB0eSAqLworIHwgcnVsZV9saXN0IHJ1bGUg
bWF5YmVfc2dtbCB7CisgICAgIGlmICgkMiAmJiBwYXJzZXItPm1fc3R5bGVTaGVldCkKKyAgICAg
ICAgIHBhcnNlci0+bV9zdHlsZVNoZWV0LT5wYXJzZXJBcHBlbmRSdWxlKCQyKTsKKyB9CisgOwor
Cit2YWxpZF9ydWxlOgorICAgIHJ1bGVzZXQKKyAgfCBtZWRpYQorICB8IHBhZ2UKKyAgfCBmb250
X2ZhY2UKKyAgfCBrZXlmcmFtZXMKKyAgfCBuYW1lc3BhY2UKKyAgfCBpbXBvcnQKKyAgfCByZWdp
b24KKyAgOworCitydWxlOgorICAgIHZhbGlkX3J1bGUgeworICAgICAgICBwYXJzZXItPm1faGFk
U3ludGFjdGljYWxseVZhbGlkQ1NTUnVsZSA9IHRydWU7CisgICAgfQorICB8IGlnbm9yZWRfY2hh
cnNldAorICB8IGludmFsaWRfcnVsZQorICB8IGludmFsaWRfYXQKKyAgOworCitibG9ja19ydWxl
X2xpc3Q6IAorICAgIC8qIGVtcHR5ICovIHsgJCQgPSAwOyB9CisgIHwgYmxvY2tfcnVsZV9saXN0
IGJsb2NrX3J1bGUgbWF5YmVfc2dtbCB7CisgICAgICAkJCA9ICQxOworICAgICAgaWYgKCQyKSB7
CisgICAgICAgICAgaWYgKCEkJCkKKyAgICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZVJ1
bGVMaXN0KCk7CisgICAgICAgICAgJCQtPmFwcGVuZCgkMik7CisgICAgICB9CisgIH0KKyAgOwor
CitibG9ja192YWxpZF9ydWxlOgorICAgIHJ1bGVzZXQKKyAgfCBwYWdlCisgIHwgZm9udF9mYWNl
CisgIHwga2V5ZnJhbWVzCisgIDsKKworYmxvY2tfcnVsZToKKyAgICBibG9ja192YWxpZF9ydWxl
CisgIHwgaW52YWxpZF9ydWxlCisgIHwgaW52YWxpZF9hdAorICB8IG5hbWVzcGFjZQorICB8IGlt
cG9ydAorICB8IG1lZGlhCisgIDsKKworYXRfaW1wb3J0X2hlYWRlcl9lbmRfbWF5YmVfc3BhY2U6
CisgICAgbWF5YmVfc3BhY2UgeworICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyRW5kKCk7
CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVCb2R5U3RhcnQoKTsKKyAgICB9CisgICAgOworCiti
ZWZvcmVfaW1wb3J0X3J1bGU6CisgICAgLyogZW1wdHkgKi8geworICAgICAgICBwYXJzZXItPm1h
cmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6OklNUE9SVF9SVUxFKTsKKyAgICB9
CisgICAgOworCitpbXBvcnQ6CisgICAgYmVmb3JlX2ltcG9ydF9ydWxlIElNUE9SVF9TWU0gYXRf
aW1wb3J0X2hlYWRlcl9lbmRfbWF5YmVfc3BhY2Ugc3RyaW5nX29yX3VyaSBtYXliZV9zcGFjZSBt
YXliZV9tZWRpYV9saXN0ICc7JyB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVJbXBvcnRS
dWxlKCQ0LCAkNik7CisgICAgfQorICB8IGJlZm9yZV9pbXBvcnRfcnVsZSBJTVBPUlRfU1lNIGF0
X2ltcG9ydF9oZWFkZXJfZW5kX21heWJlX3NwYWNlIHN0cmluZ19vcl91cmkgbWF5YmVfc3BhY2Ug
bWF5YmVfbWVkaWFfbGlzdCBUT0tFTl9FT0YgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRl
SW1wb3J0UnVsZSgkNCwgJDYpOworICAgIH0KKyAgfCBiZWZvcmVfaW1wb3J0X3J1bGUgSU1QT1JU
X1NZTSBhdF9pbXBvcnRfaGVhZGVyX2VuZF9tYXliZV9zcGFjZSBzdHJpbmdfb3JfdXJpIG1heWJl
X3NwYWNlIG1heWJlX21lZGlhX2xpc3QgaW52YWxpZF9ibG9jayB7CisgICAgICAgICQkID0gMDsK
KyAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOworICAgIH0KKyAgfCBiZWZvcmVfaW1wb3J0
X3J1bGUgSU1QT1JUX1NZTSBlcnJvciAnOycgeworICAgICAgICAkJCA9IDA7CisgICAgICAgIHBh
cnNlci0+cG9wUnVsZURhdGEoKTsKKyAgICB9CisgIHwgYmVmb3JlX2ltcG9ydF9ydWxlIElNUE9S
VF9TWU0gZXJyb3IgaW52YWxpZF9ibG9jayB7CisgICAgICAgICQkID0gMDsKKyAgICAgICAgcGFy
c2VyLT5wb3BSdWxlRGF0YSgpOworICAgIH0KKyAgOworCituYW1lc3BhY2U6CitOQU1FU1BBQ0Vf
U1lNIG1heWJlX3NwYWNlIG1heWJlX25zX3ByZWZpeCBzdHJpbmdfb3JfdXJpIG1heWJlX3NwYWNl
ICc7JyB7CisgICAgcGFyc2VyLT5hZGROYW1lc3BhY2UoJDMsICQ0KTsKKyAgICAkJCA9IDA7Cit9
Cit8IE5BTUVTUEFDRV9TWU0gbWF5YmVfc3BhY2UgbWF5YmVfbnNfcHJlZml4IHN0cmluZ19vcl91
cmkgbWF5YmVfc3BhY2UgaW52YWxpZF9ibG9jayB7CisgICAgJCQgPSAwOworfQorfCBOQU1FU1BB
Q0VfU1lNIGVycm9yIGludmFsaWRfYmxvY2sgeworICAgICQkID0gMDsKK30KK3wgTkFNRVNQQUNF
X1NZTSBlcnJvciAnOycgeworICAgICQkID0gMDsKK30KKzsKKworbWF5YmVfbnNfcHJlZml4Ogor
LyogZW1wdHkgKi8geyAkJC5jbGVhcigpOyB9Cit8IElERU5UIG1heWJlX3NwYWNlIHsgJCQgPSAk
MTsgfQorOworCitzdHJpbmdfb3JfdXJpOgorU1RSSU5HCit8IFVSSQorOworCittZWRpYV9mZWF0
dXJlOgorICAgIElERU5UIG1heWJlX3NwYWNlIHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9Cisg
ICAgOworCittYXliZV9tZWRpYV92YWx1ZToKKyAgICAvKmVtcHR5Ki8geworICAgICAgICAkJCA9
IDA7CisgICAgfQorICAgIHwgJzonIG1heWJlX3NwYWNlIGV4cHIgbWF5YmVfc3BhY2UgeworICAg
ICAgICAkJCA9ICQzOworICAgIH0KKyAgICA7CisKK21lZGlhX3F1ZXJ5X2V4cDoKKyAgICBtYXli
ZV9tZWRpYV9yZXN0cmljdG9yIG1heWJlX3NwYWNlICcoJyBtYXliZV9zcGFjZSBtZWRpYV9mZWF0
dXJlIG1heWJlX3NwYWNlIG1heWJlX21lZGlhX3ZhbHVlICcpJyBtYXliZV9zcGFjZSB7CisgICAg
ICAgIC8vIElmIHJlc3RyaWN0b3IgaXMgc3BlY2lmaWVkLCBtZWRpYSBxdWVyeSBleHByZXNzaW9u
IGlzIGludmFsaWQuCisgICAgICAgIC8vIENyZWF0ZSBlbXB0eSBtZWRpYSBxdWVyeSBleHByZXNz
aW9uIGFuZCBjb250aW51ZSBwYXJzaW5nIG1lZGlhIHF1ZXJ5LgorICAgICAgICBpZiAoJDEgIT0g
TWVkaWFRdWVyeTo6Tm9uZSkKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGlu
Z01lZGlhUXVlcnlFeHAoIiIsIDApOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICQ1Lmxv
d2VyKCk7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5
RXhwKCQ1LCAkNyk7CisgICAgICAgIH0KKyAgICB9CisgICAgOworCittZWRpYV9xdWVyeV9leHBf
bGlzdDoKKyAgICBtZWRpYV9xdWVyeV9leHAgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRl
RmxvYXRpbmdNZWRpYVF1ZXJ5RXhwTGlzdCgpOworICAgICAgICAkJC0+YXBwZW5kKHBhcnNlci0+
c2lua0Zsb2F0aW5nTWVkaWFRdWVyeUV4cCgkMSkpOworICAgIH0KKyAgICB8IG1lZGlhX3F1ZXJ5
X2V4cF9saXN0IG1heWJlX3NwYWNlIE1FRElBX0FORCBtYXliZV9zcGFjZSBtZWRpYV9xdWVyeV9l
eHAgeworICAgICAgICAkJCA9ICQxOworICAgICAgICAkJC0+YXBwZW5kKHBhcnNlci0+c2lua0Zs
b2F0aW5nTWVkaWFRdWVyeUV4cCgkNSkpOworICAgIH0KKyAgICA7CisKK21heWJlX2FuZF9tZWRp
YV9xdWVyeV9leHBfbGlzdDoKKyAgICAvKmVtcHR5Ki8geworICAgICAgICAkJCA9IHBhcnNlci0+
Y3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwTGlzdCgpOworICAgIH0KKyAgICB8IE1FRElBX0FO
RCBtYXliZV9zcGFjZSBtZWRpYV9xdWVyeV9leHBfbGlzdCB7CisgICAgICAgICQkID0gJDM7Cisg
ICAgfQorICAgIDsKKworbWF5YmVfbWVkaWFfcmVzdHJpY3RvcjoKKyAgICAvKmVtcHR5Ki8gewor
ICAgICAgICAkJCA9IE1lZGlhUXVlcnk6Ok5vbmU7CisgICAgfQorICAgIHwgTUVESUFfT05MWSB7
CisgICAgICAgICQkID0gTWVkaWFRdWVyeTo6T25seTsKKyAgICB9CisgICAgfCBNRURJQV9OT1Qg
eworICAgICAgICAkJCA9IE1lZGlhUXVlcnk6Ok5vdDsKKyAgICB9CisgICAgOworCittZWRpYV9x
dWVyeToKKyAgICBtZWRpYV9xdWVyeV9leHBfbGlzdCB7CisgICAgICAgICQkID0gcGFyc2VyLT5j
cmVhdGVGbG9hdGluZ01lZGlhUXVlcnkocGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5RXhw
TGlzdCgkMSkpOworICAgIH0KKyAgICB8CisgICAgbWF5YmVfbWVkaWFfcmVzdHJpY3RvciBtYXli
ZV9zcGFjZSBtZWRpdW0gbWF5YmVfYW5kX21lZGlhX3F1ZXJ5X2V4cF9saXN0IHsKKyAgICAgICAg
JDMubG93ZXIoKTsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVy
eSgkMSwgJDMsIHBhcnNlci0+c2lua0Zsb2F0aW5nTWVkaWFRdWVyeUV4cExpc3QoJDQpKTsKKyAg
ICB9CisgICAgOworCittYXliZV9tZWRpYV9saXN0OgorICAgICAvKiBlbXB0eSAqLyB7CisgICAg
ICAgICQkID0gcGFyc2VyLT5jcmVhdGVNZWRpYVF1ZXJ5U2V0KCk7CisgICAgIH0KKyAgICAgfCBt
ZWRpYV9saXN0CisgICAgIDsKKworbWVkaWFfbGlzdDoKKyAgICBtZWRpYV9xdWVyeSB7CisgICAg
ICAgICQkID0gcGFyc2VyLT5jcmVhdGVNZWRpYVF1ZXJ5U2V0KCk7CisgICAgICAgICQkLT5hZGRN
ZWRpYVF1ZXJ5KHBhcnNlci0+c2lua0Zsb2F0aW5nTWVkaWFRdWVyeSgkMSkpOworICAgICAgICBw
YXJzZXItPnVwZGF0ZUxhc3RNZWRpYUxpbmUoJCQpOworICAgIH0KKyAgICB8IG1lZGlhX2xpc3Qg
JywnIG1heWJlX3NwYWNlIG1lZGlhX3F1ZXJ5IHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICAgICAg
aWYgKCQkKSB7CisgICAgICAgICAgICAkJC0+YWRkTWVkaWFRdWVyeShwYXJzZXItPnNpbmtGbG9h
dGluZ01lZGlhUXVlcnkoJDQpKTsKKyAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlTGFzdE1lZGlh
TGluZSgkJCk7CisgICAgICAgIH0KKyAgICB9CisgICAgfCBtZWRpYV9saXN0IGVycm9yIHsKKyAg
ICAgICAgJCQgPSAwOworICAgIH0KKyAgICA7CisKK2F0X3J1bGVfYm9keV9zdGFydDoKKyAgICAv
KiBlbXB0eSAqLyB7CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVCb2R5U3RhcnQoKTsKKyAgICB9
CisgICAgOworCitiZWZvcmVfbWVkaWFfcnVsZToKKyAgICAvKiBlbXB0eSAqLyB7CisgICAgICAg
IHBhcnNlci0+bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6TUVESUFfUlVM
RSk7CisgICAgfQorICAgIDsKKworYXRfcnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlOgorICAg
IG1heWJlX3NwYWNlIHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlckVuZCgpOworICAg
IH0KKyAgICA7CisKK21lZGlhOgorICAgIGJlZm9yZV9tZWRpYV9ydWxlIE1FRElBX1NZTSBtYXli
ZV9zcGFjZSBtZWRpYV9saXN0IGF0X3J1bGVfaGVhZGVyX2VuZCAneycgYXRfcnVsZV9ib2R5X3N0
YXJ0IG1heWJlX3NwYWNlIGJsb2NrX3J1bGVfbGlzdCBzYXZlX2Jsb2NrIHsKKyAgICAgICAgJCQg
PSBwYXJzZXItPmNyZWF0ZU1lZGlhUnVsZSgkNCwgJDkpOworICAgIH0KKyAgICB8IGJlZm9yZV9t
ZWRpYV9ydWxlIE1FRElBX1NZTSBhdF9ydWxlX2hlYWRlcl9lbmRfbWF5YmVfc3BhY2UgJ3snIGF0
X3J1bGVfYm9keV9zdGFydCBtYXliZV9zcGFjZSBibG9ja19ydWxlX2xpc3Qgc2F2ZV9ibG9jayB7
CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVNZWRpYVJ1bGUoMCwgJDcpOworICAgIH0KKyAg
ICB8IGJlZm9yZV9tZWRpYV9ydWxlIE1FRElBX1NZTSBhdF9ydWxlX2hlYWRlcl9lbmRfbWF5YmVf
c3BhY2UgJzsnIHsKKyAgICAgICAgJCQgPSAwOworICAgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRh
KCk7CisgICAgfQorICAgIDsKKworbWVkaXVtOgorICBJREVOVCBtYXliZV9zcGFjZSB7CisgICAg
ICAkJCA9ICQxOworICB9CisgIDsKKworYmVmb3JlX2tleWZyYW1lc19ydWxlOgorICAgIC8qIGVt
cHR5ICovIHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3Vy
Y2VEYXRhOjpLRVlGUkFNRVNfUlVMRSk7CisgICAgfQorICAgIDsKKwora2V5ZnJhbWVzOgorICAg
IGJlZm9yZV9rZXlmcmFtZXNfcnVsZSBXRUJLSVRfS0VZRlJBTUVTX1NZTSBtYXliZV9zcGFjZSBr
ZXlmcmFtZV9uYW1lIGF0X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9zcGFjZSAneycgYXRfcnVsZV9i
b2R5X3N0YXJ0IG1heWJlX3NwYWNlIGtleWZyYW1lc19ydWxlIGNsb3NpbmdfYnJhY2UgeworICAg
ICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlS2V5ZnJhbWVzUnVsZSgkNCwgcGFyc2VyLT5zaW5rRmxv
YXRpbmdLZXlmcmFtZVZlY3RvcigkOSkpOworICAgIH0KKyAgICA7CisgIAora2V5ZnJhbWVfbmFt
ZToKKyAgICBJREVOVAorICAgIHwgU1RSSU5HCisgICAgOworCitrZXlmcmFtZXNfcnVsZToKKyAg
ICAvKiBlbXB0eSAqLyB7ICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0tleWZyYW1lVmVjdG9y
KCk7IH0KKyAgICB8IGtleWZyYW1lc19ydWxlIGtleWZyYW1lX3J1bGUgbWF5YmVfc3BhY2Ugewor
ICAgICAgICAkJCA9ICQxOworICAgICAgICBpZiAoJDIpCisgICAgICAgICAgICAkJC0+YXBwZW5k
KCQyKTsKKyAgICB9CisgICAgOworCitrZXlmcmFtZV9ydWxlOgorICAgIGtleV9saXN0IG1heWJl
X3NwYWNlICd7JyBtYXliZV9zcGFjZSBkZWNsYXJhdGlvbl9saXN0ICd9JyB7CisgICAgICAgICQk
ID0gcGFyc2VyLT5jcmVhdGVLZXlmcmFtZSgkMSk7CisgICAgfQorICAgIDsKKwora2V5X2xpc3Q6
CisgICAga2V5IHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nVmFsdWVMaXN0
KCk7CisgICAgICAgICQkLT5hZGRWYWx1ZShwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlKCQxKSk7
CisgICAgfQorICAgIHwga2V5X2xpc3QgbWF5YmVfc3BhY2UgJywnIG1heWJlX3NwYWNlIGtleSB7
CisgICAgICAgICQkID0gJDE7CisgICAgICAgIGlmICgkJCkKKyAgICAgICAgICAgICQkLT5hZGRW
YWx1ZShwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlKCQ1KSk7CisgICAgfQorICAgIDsKKwora2V5
OgorICAgIG1heWJlX3VuYXJ5X29wZXJhdG9yIFBFUkNFTlRBR0UgeyAkJC5pZCA9IDA7ICQkLmlz
SW50ID0gZmFsc2U7ICQkLmZWYWx1ZSA9ICQxICogJDI7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX05VTUJFUjsgfQorICAgIHwgSURFTlQgeworICAgICAgICAkJC5pZCA9IDA7ICQk
LmlzSW50ID0gZmFsc2U7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjsK
KyAgICAgICAgQ1NTUGFyc2VyU3RyaW5nJiBzdHIgPSAkMTsKKyAgICAgICAgaWYgKHN0ci5lcXVh
bElnbm9yaW5nQ2FzZSgiZnJvbSIpKQorICAgICAgICAgICAgJCQuZlZhbHVlID0gMDsKKyAgICAg
ICAgZWxzZSBpZiAoc3RyLmVxdWFsSWdub3JpbmdDYXNlKCJ0byIpKQorICAgICAgICAgICAgJCQu
ZlZhbHVlID0gMTAwOworICAgICAgICBlbHNlCisgICAgICAgICAgICBZWUVSUk9SOworICAgIH0K
KyAgICA7CisKK2JlZm9yZV9wYWdlX3J1bGU6CisgICAgLyogZW1wdHkgKi8geworICAgICAgICBw
YXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6OlBBR0VfUlVMRSk7
CisgICAgfQorICAgIDsKKworcGFnZToKKyAgICBiZWZvcmVfcGFnZV9ydWxlIFBBR0VfU1lNIG1h
eWJlX3NwYWNlIHBhZ2Vfc2VsZWN0b3IgYXRfcnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlCisg
ICAgJ3snIGF0X3J1bGVfYm9keV9zdGFydCBtYXliZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRpb24g
ZGVjbGFyYXRpb25zX2FuZF9tYXJnaW5zIGNsb3NpbmdfYnJhY2UgeworICAgICAgICBpZiAoJDQp
CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlUGFnZVJ1bGUocGFyc2VyLT5zaW5rRmxv
YXRpbmdTZWxlY3RvcigkNCkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIENsZWFy
IHByb3BlcnRpZXMgaW4gdGhlIGludmFsaWQgQHBhZ2UgcnVsZS4KKyAgICAgICAgICAgIHBhcnNl
ci0+Y2xlYXJQcm9wZXJ0aWVzKCk7CisgICAgICAgICAgICAvLyBBbHNvIGNsZWFyIG1hcmdpbiBh
dC1ydWxlcyBoZXJlIG9uY2Ugd2UgZnVsbHkgaW1wbGVtZW50IG1hcmdpbiBhdC1ydWxlcyBwYXJz
aW5nLgorICAgICAgICAgICAgJCQgPSAwOworICAgICAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0
YSgpOworICAgICAgICB9CisgICAgfQorICAgIHwgYmVmb3JlX3BhZ2VfcnVsZSBQQUdFX1NZTSBl
cnJvciBpbnZhbGlkX2Jsb2NrIHsKKyAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKKyAgICAg
ICQkID0gMDsKKyAgICB9CisgICAgfCBiZWZvcmVfcGFnZV9ydWxlIFBBR0VfU1lNIGVycm9yICc7
JyB7CisgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7CisgICAgICAkJCA9IDA7CisgICAgfQor
ICAgIDsKKworcGFnZV9zZWxlY3RvcjoKKyAgICBJREVOVCB7CisgICAgICAgICQkID0gcGFyc2Vy
LT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRUYWcoUXVhbGlmaWVk
TmFtZShudWxsQXRvbSwgJDEsIHBhcnNlci0+bV9kZWZhdWx0TmFtZXNwYWNlKSk7CisgICAgICAg
ICQkLT5zZXRGb3JQYWdlKCk7CisgICAgfQorICAgIHwgSURFTlQgcHNldWRvX3BhZ2UgeworICAg
ICAgICAkJCA9ICQyOworICAgICAgICBpZiAoJCQpIHsKKyAgICAgICAgICAgICQkLT5zZXRUYWco
UXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDEsIHBhcnNlci0+bV9kZWZhdWx0TmFtZXNwYWNlKSk7
CisgICAgICAgICAgICAkJC0+c2V0Rm9yUGFnZSgpOworICAgICAgICB9CisgICAgfQorICAgIHwg
cHNldWRvX3BhZ2UgeworICAgICAgICAkJCA9ICQxOworICAgICAgICBpZiAoJCQpCisgICAgICAg
ICAgICAkJC0+c2V0Rm9yUGFnZSgpOworICAgIH0KKyAgICB8IC8qIGVtcHR5ICovIHsKKyAgICAg
ICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNl
dEZvclBhZ2UoKTsKKyAgICB9CisgICAgOworCitkZWNsYXJhdGlvbnNfYW5kX21hcmdpbnM6Cisg
ICAgZGVjbGFyYXRpb25fbGlzdAorICAgIHwgZGVjbGFyYXRpb25zX2FuZF9tYXJnaW5zIG1hcmdp
bl9ib3ggbWF5YmVfc3BhY2UgZGVjbGFyYXRpb25fbGlzdAorICAgIDsKKworbWFyZ2luX2JveDoK
KyAgICBtYXJnaW5fc3ltIHsKKyAgICAgICAgcGFyc2VyLT5zdGFydERlY2xhcmF0aW9uc0Zvck1h
cmdpbkJveCgpOworICAgIH0gbWF5YmVfc3BhY2UgJ3snIG1heWJlX3NwYWNlIGRlY2xhcmF0aW9u
X2xpc3QgY2xvc2luZ19icmFjZSB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVNYXJnaW5B
dFJ1bGUoJDEpOworICAgIH0KKyAgICA7CisKK21hcmdpbl9zeW0gOgorICAgIFRPUExFRlRDT1JO
RVJfU1lNIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6VG9wTGVmdENvcm5lck1hcmdpbkJv
eDsKKyAgICB9CisgICAgfCBUT1BMRUZUX1NZTSB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6
OlRvcExlZnRNYXJnaW5Cb3g7CisgICAgfQorICAgIHwgVE9QQ0VOVEVSX1NZTSB7CisgICAgICAg
ICQkID0gQ1NTU2VsZWN0b3I6OlRvcENlbnRlck1hcmdpbkJveDsKKyAgICB9CisgICAgfCBUT1BS
SUdIVF9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpUb3BSaWdodE1hcmdpbkJveDsK
KyAgICB9CisgICAgfCBUT1BSSUdIVENPUk5FUl9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVj
dG9yOjpUb3BSaWdodENvcm5lck1hcmdpbkJveDsKKyAgICB9CisgICAgfCBCT1RUT01MRUZUQ09S
TkVSX1NZTSB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkJvdHRvbUxlZnRDb3JuZXJNYXJn
aW5Cb3g7CisgICAgfQorICAgIHwgQk9UVE9NTEVGVF9TWU0geworICAgICAgICAkJCA9IENTU1Nl
bGVjdG9yOjpCb3R0b21MZWZ0TWFyZ2luQm94OworICAgIH0KKyAgICB8IEJPVFRPTUNFTlRFUl9T
WU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpCb3R0b21DZW50ZXJNYXJnaW5Cb3g7Cisg
ICAgfQorICAgIHwgQk9UVE9NUklHSFRfU1lNIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6
Qm90dG9tUmlnaHRNYXJnaW5Cb3g7CisgICAgfQorICAgIHwgQk9UVE9NUklHSFRDT1JORVJfU1lN
IHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6Qm90dG9tUmlnaHRDb3JuZXJNYXJnaW5Cb3g7
CisgICAgfQorICAgIHwgTEVGVFRPUF9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpM
ZWZ0VG9wTWFyZ2luQm94OworICAgIH0KKyAgICB8IExFRlRNSURETEVfU1lNIHsKKyAgICAgICAg
JCQgPSBDU1NTZWxlY3Rvcjo6TGVmdE1pZGRsZU1hcmdpbkJveDsKKyAgICB9CisgICAgfCBMRUZU
Qk9UVE9NX1NZTSB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkxlZnRCb3R0b21NYXJnaW5C
b3g7CisgICAgfQorICAgIHwgUklHSFRUT1BfU1lNIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rv
cjo6UmlnaHRUb3BNYXJnaW5Cb3g7CisgICAgfQorICAgIHwgUklHSFRNSURETEVfU1lNIHsKKyAg
ICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6UmlnaHRNaWRkbGVNYXJnaW5Cb3g7CisgICAgfQorICAg
IHwgUklHSFRCT1RUT01fU1lNIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6UmlnaHRCb3R0
b21NYXJnaW5Cb3g7CisgICAgfQorICAgIDsKKworYmVmb3JlX2ZvbnRfZmFjZV9ydWxlOgorICAg
IC8qIGVtcHR5ICovIHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1
bGVTb3VyY2VEYXRhOjpGT05UX0ZBQ0VfUlVMRSk7CisgICAgfQorICAgIDsKKworZm9udF9mYWNl
OgorICAgIGJlZm9yZV9mb250X2ZhY2VfcnVsZSBGT05UX0ZBQ0VfU1lNIGF0X3J1bGVfaGVhZGVy
X2VuZF9tYXliZV9zcGFjZQorICAgICd7JyBhdF9ydWxlX2JvZHlfc3RhcnQgbWF5YmVfc3BhY2Vf
YmVmb3JlX2RlY2xhcmF0aW9uIGRlY2xhcmF0aW9uX2xpc3QgY2xvc2luZ19icmFjZSB7CisgICAg
ICAgICQkID0gcGFyc2VyLT5jcmVhdGVGb250RmFjZVJ1bGUoKTsKKyAgICB9CisgICAgfCBiZWZv
cmVfZm9udF9mYWNlX3J1bGUgRk9OVF9GQUNFX1NZTSBlcnJvciBpbnZhbGlkX2Jsb2NrIHsKKyAg
ICAgICQkID0gMDsKKyAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKKyAgICB9CisgICAgfCBi
ZWZvcmVfZm9udF9mYWNlX3J1bGUgRk9OVF9GQUNFX1NZTSBlcnJvciAnOycgeworICAgICAgJCQg
PSAwOworICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOworICAgIH0KKzsKKworcmVnaW9uX3Nl
bGVjdG9yOgorICAgIHNlbGVjdG9yX2xpc3QgeworICAgICAgICBpZiAoJDEpIHsKKyAgICAgICAg
ICAgIHBhcnNlci0+c2V0UmV1c2FibGVSZWdpb25TZWxlY3RvclZlY3RvcigkMSk7CisgICAgICAg
ICAgICAkJCA9IHBhcnNlci0+cmV1c2FibGVSZWdpb25TZWxlY3RvclZlY3RvcigpOworICAgICAg
ICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICQkID0gMDsKKyAgICB9Cis7CisKK2JlZm9y
ZV9yZWdpb25fcnVsZToKKyAgICAvKiBlbXB0eSAqLyB7CisgICAgICAgIHBhcnNlci0+bWFya1J1
bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6UkVHSU9OX1JVTEUpOworICAgIH0KKyAg
ICA7CisKK3JlZ2lvbjoKKyAgICBiZWZvcmVfcmVnaW9uX3J1bGUgV0VCS0lUX1JFR0lPTl9SVUxF
X1NZTSBXSElURVNQQUNFIHJlZ2lvbl9zZWxlY3RvciBhdF9ydWxlX2hlYWRlcl9lbmQgJ3snIGF0
X3J1bGVfYm9keV9zdGFydCBtYXliZV9zcGFjZSBibG9ja19ydWxlX2xpc3Qgc2F2ZV9ibG9jayB7
CisgICAgICAgIGlmICgkNCkKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVSZWdpb25S
dWxlKCQ0LCAkOSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgJCQgPSAwOworICAgICAg
ICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOworICAgICAgICB9CisgICAgfQorOworCitjb21i
aW5hdG9yOgorICAgICcrJyBtYXliZV9zcGFjZSB7ICQkID0gQ1NTU2VsZWN0b3I6OkRpcmVjdEFk
amFjZW50OyB9CisgIHwgJ34nIG1heWJlX3NwYWNlIHsgJCQgPSBDU1NTZWxlY3Rvcjo6SW5kaXJl
Y3RBZGphY2VudDsgfQorICB8ICc+JyBtYXliZV9zcGFjZSB7ICQkID0gQ1NTU2VsZWN0b3I6OkNo
aWxkOyB9CisgIDsKKworbWF5YmVfdW5hcnlfb3BlcmF0b3I6CisgICAgdW5hcnlfb3BlcmF0b3Ig
eyAkJCA9ICQxOyB9CisgICAgfCB7ICQkID0gMTsgfQorICAgIDsKKwordW5hcnlfb3BlcmF0b3I6
CisgICAgJy0nIHsgJCQgPSAtMTsgfQorICB8ICcrJyB7ICQkID0gMTsgfQorICA7CisKK21heWJl
X3NwYWNlX2JlZm9yZV9kZWNsYXJhdGlvbjoKKyAgICBtYXliZV9zcGFjZSB7CisgICAgICAgIHBh
cnNlci0+bWFya1Byb3BlcnR5U3RhcnQoKTsKKyAgICB9CisgIDsKKworYmVmb3JlX3NlbGVjdG9y
X2xpc3Q6CisgICAgLyogZW1wdHkgKi8geworICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVy
U3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6OlNUWUxFX1JVTEUpOworICAgIH0KKyAgOworCithdF9y
dWxlX2hlYWRlcl9lbmQ6CisgICAgLyogZW1wdHkgKi8geworICAgICAgICBwYXJzZXItPm1hcmtS
dWxlSGVhZGVyRW5kKCk7CisgICAgfQorICA7CisKK3J1bGVzZXQ6CisgICAgYmVmb3JlX3NlbGVj
dG9yX2xpc3Qgc2VsZWN0b3JfbGlzdCBhdF9ydWxlX2hlYWRlcl9lbmQgJ3snIGF0X3J1bGVfYm9k
eV9zdGFydCBtYXliZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRpb24gZGVjbGFyYXRpb25fbGlzdCBj
bG9zaW5nX2JyYWNlIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZVN0eWxlUnVsZSgkMik7
CisgICAgfQorICA7CisKK3NlbGVjdG9yX2xpc3Q6CisgICAgc2VsZWN0b3IgJXByZWMgVU5JTVBP
UlRBTlRfVE9LIHsKKyAgICAgICAgaWYgKCQxKSB7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+
c2VsZWN0b3JWZWN0b3IoKTsKKyAgICAgICAgICAgICQkLT5zaHJpbmsoMCk7CisgICAgICAgICAg
ICAkJC0+YXBwZW5kKHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDEpKTsKKyAgICAgICAg
ICAgIHBhcnNlci0+dXBkYXRlTGFzdFNlbGVjdG9yTGluZUFuZFBvc2l0aW9uKCk7CisgICAgICAg
IH0KKyAgICB9CisgICAgfCBzZWxlY3Rvcl9saXN0ICcsJyBtYXliZV9zcGFjZSBzZWxlY3RvciAl
cHJlYyBVTklNUE9SVEFOVF9UT0sgeworICAgICAgICBpZiAoJDEgJiYgJDQpIHsKKyAgICAgICAg
ICAgICQkID0gJDE7CisgICAgICAgICAgICAkJC0+YXBwZW5kKHBhcnNlci0+c2lua0Zsb2F0aW5n
U2VsZWN0b3IoJDQpKTsKKyAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlTGFzdFNlbGVjdG9yTGlu
ZUFuZFBvc2l0aW9uKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgJCQgPSAwOworICAg
IH0KKyAgfCBzZWxlY3Rvcl9saXN0IGVycm9yIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKyAg
IDsKKworc2VsZWN0b3Jfd2l0aF90cmFpbGluZ193aGl0ZXNwYWNlOgorICAgIHNlbGVjdG9yIFdI
SVRFU1BBQ0UgeworICAgICAgICAkJCA9ICQxOworICAgIH0KKyAgICA7CisKK3NlbGVjdG9yOgor
ICAgIHNpbXBsZV9zZWxlY3RvciB7CisgICAgICAgICQkID0gJDE7CisgICAgfQorICAgIHwgc2Vs
ZWN0b3Jfd2l0aF90cmFpbGluZ193aGl0ZXNwYWNlCisgICAgeworICAgICAgICAkJCA9ICQxOwor
ICAgIH0KKyAgICB8IHNlbGVjdG9yX3dpdGhfdHJhaWxpbmdfd2hpdGVzcGFjZSBzaW1wbGVfc2Vs
ZWN0b3IKKyAgICB7CisgICAgICAgICQkID0gJDI7CisgICAgICAgIGlmICghJDEpCisgICAgICAg
ICAgICAkJCA9IDA7CisgICAgICAgIGVsc2UgaWYgKCQkKSB7CisgICAgICAgICAgICBDU1NQYXJz
ZXJTZWxlY3RvciogZW5kID0gJCQ7CisgICAgICAgICAgICB3aGlsZSAoZW5kLT50YWdIaXN0b3J5
KCkpCisgICAgICAgICAgICAgICAgZW5kID0gZW5kLT50YWdIaXN0b3J5KCk7CisgICAgICAgICAg
ICBlbmQtPnNldFJlbGF0aW9uKENTU1NlbGVjdG9yOjpEZXNjZW5kYW50KTsKKyAgICAgICAgICAg
IGVuZC0+c2V0VGFnSGlzdG9yeShwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQxKSk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgfCBzZWxlY3RvciBjb21iaW5hdG9yIHNpbXBsZV9zZWxlY3Rv
ciB7CisgICAgICAgICQkID0gJDM7CisgICAgICAgIGlmICghJDEpCisgICAgICAgICAgICAkJCA9
IDA7CisgICAgICAgIGVsc2UgaWYgKCQkKSB7CisgICAgICAgICAgICBDU1NQYXJzZXJTZWxlY3Rv
ciogZW5kID0gJCQ7CisgICAgICAgICAgICB3aGlsZSAoZW5kLT50YWdIaXN0b3J5KCkpCisgICAg
ICAgICAgICAgICAgZW5kID0gZW5kLT50YWdIaXN0b3J5KCk7CisgICAgICAgICAgICBlbmQtPnNl
dFJlbGF0aW9uKCQyKTsKKyAgICAgICAgICAgIGVuZC0+c2V0VGFnSGlzdG9yeShwYXJzZXItPnNp
bmtGbG9hdGluZ1NlbGVjdG9yKCQxKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgfCBzZWxlY3Rv
ciBlcnJvciB7CisgICAgICAgICQkID0gMDsKKyAgICB9CisgICAgOworCituYW1lc3BhY2Vfc2Vs
ZWN0b3I6CisgICAgLyogZW1wdHkgKi8gJ3wnIHsgJCQuY2xlYXIoKTsgfQorICAgIHwgJyonICd8
JyB7IHN0YXRpYyBMQ2hhciBzdGFyID0gJyonOyAkJC5pbml0KCZzdGFyLCAxKTsgfQorICAgIHwg
SURFTlQgJ3wnIHsgJCQgPSAkMTsgfQorOworICAgIAorc2ltcGxlX3NlbGVjdG9yOgorICAgIGVs
ZW1lbnRfbmFtZSB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9y
KCk7CisgICAgICAgICQkLT5zZXRUYWcoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDEsIHBhcnNl
ci0+bV9kZWZhdWx0TmFtZXNwYWNlKSk7CisgICAgfQorICAgIHwgZWxlbWVudF9uYW1lIHNwZWNp
Zmllcl9saXN0IHsKKyAgICAgICAgJCQgPSAkMjsKKyAgICAgICAgaWYgKCQkKQorICAgICAgICAg
ICAgcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKG51bGxBdG9tLCAkMSwg
JCQpOworICAgIH0KKyAgICB8IHNwZWNpZmllcl9saXN0IHsKKyAgICAgICAgJCQgPSAkMTsKKyAg
ICAgICAgaWYgKCQkKQorICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVs
ZW1lbnROYW1lKG51bGxBdG9tLCBzdGFyQXRvbSwgJCQpOworICAgIH0KKyAgICB8IG5hbWVzcGFj
ZV9zZWxlY3RvciBlbGVtZW50X25hbWUgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxv
YXRpbmdTZWxlY3RvcigpOworICAgICAgICAkJC0+c2V0VGFnKHBhcnNlci0+ZGV0ZXJtaW5lTmFt
ZUluTmFtZXNwYWNlKCQxLCAkMikpOworICAgIH0KKyAgICB8IG5hbWVzcGFjZV9zZWxlY3RvciBl
bGVtZW50X25hbWUgc3BlY2lmaWVyX2xpc3QgeworICAgICAgICAkJCA9ICQzOworICAgICAgICBp
ZiAoJCQpCisgICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5h
bWUoJDEsICQyLCAkJCk7CisgICAgfQorICAgIHwgbmFtZXNwYWNlX3NlbGVjdG9yIHNwZWNpZmll
cl9saXN0IHsKKyAgICAgICAgJCQgPSAkMjsKKyAgICAgICAgaWYgKCQkKQorICAgICAgICAgICAg
cGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKCQxLCBzdGFyQXRvbSwgJCQp
OworICAgIH0KKyAgOworCitzaW1wbGVfc2VsZWN0b3JfbGlzdDoKKyAgICBzaW1wbGVfc2VsZWN0
b3IgJXByZWMgVU5JTVBPUlRBTlRfVE9LIHsKKyAgICAgICAgaWYgKCQxKSB7CisgICAgICAgICAg
ICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvclZlY3RvcigpOworICAgICAgICAg
ICAgJCQtPmFwcGVuZChwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQxKSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgJCQgPSAwOworICAgIH0KKyAgICB8IHNpbXBsZV9zZWxlY3Rv
cl9saXN0IG1heWJlX3NwYWNlICcsJyBtYXliZV9zcGFjZSBzaW1wbGVfc2VsZWN0b3IgJXByZWMg
VU5JTVBPUlRBTlRfVE9LIHsKKyAgICAgICAgaWYgKCQxICYmICQ1KSB7CisgICAgICAgICAgICAk
JCA9ICQxOworICAgICAgICAgICAgJCQtPmFwcGVuZChwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVj
dG9yKCQ1KSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgJCQgPSAwOworICAgIH0KKyAg
ICB8IHNpbXBsZV9zZWxlY3Rvcl9saXN0IGVycm9yIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0K
KyAgOworCitlbGVtZW50X25hbWU6CisgICAgSURFTlQgeworICAgICAgICBDU1NQYXJzZXJTdHJp
bmcmIHN0ciA9ICQxOworICAgICAgICBpZiAocGFyc2VyLT5tX2NvbnRleHQuaXNIVE1MRG9jdW1l
bnQpCisgICAgICAgICAgICBzdHIubG93ZXIoKTsKKyAgICAgICAgJCQgPSBzdHI7CisgICAgfQor
ICAgIHwgJyonIHsKKyAgICAgICAgc3RhdGljIExDaGFyIHN0YXIgPSAnKic7CisgICAgICAgICQk
LmluaXQoJnN0YXIsIDEpOworICAgIH0KKyAgOworCitzcGVjaWZpZXJfbGlzdDoKKyAgICBzcGVj
aWZpZXIgeworICAgICAgICAkJCA9ICQxOworICAgIH0KKyAgICB8IHNwZWNpZmllcl9saXN0IHNw
ZWNpZmllciB7CisgICAgICAgIGlmICghJDIpCisgICAgICAgICAgICAkJCA9IDA7CisgICAgICAg
IGVsc2UgaWYgKCQxKQorICAgICAgICAgICAgJCQgPSBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnMo
JDEsICQyKTsKKyAgICB9CisgICAgfCBzcGVjaWZpZXJfbGlzdCBlcnJvciB7CisgICAgICAgICQk
ID0gMDsKKyAgICB9Cis7CisKK3NwZWNpZmllcjoKKyAgICBJRFNFTCB7CisgICAgICAgICQkID0g
cGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRNYXRjaChD
U1NTZWxlY3Rvcjo6SWQpOworICAgICAgICBpZiAocGFyc2VyLT5tX2NvbnRleHQubW9kZSA9PSBD
U1NRdWlya3NNb2RlKQorICAgICAgICAgICAgJDEubG93ZXIoKTsKKyAgICAgICAgJCQtPnNldFZh
bHVlKCQxKTsKKyAgICB9CisgIHwgSEVYIHsKKyAgICAgICAgaWYgKCQxWzBdID49ICcwJyAmJiAk
MVswXSA8PSAnOScpIHsKKyAgICAgICAgICAgICQkID0gMDsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAg
ICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OklkKTsKKyAgICAgICAgICAgIGlmIChwYXJz
ZXItPm1fY29udGV4dC5tb2RlID09IENTU1F1aXJrc01vZGUpCisgICAgICAgICAgICAgICAgJDEu
bG93ZXIoKTsKKyAgICAgICAgICAgICQkLT5zZXRWYWx1ZSgkMSk7CisgICAgICAgIH0KKyAgICB9
CisgIHwgY2xhc3MKKyAgfCBhdHRyaWIKKyAgfCBwc2V1ZG8KKyAgICA7CisKK2NsYXNzOgorICAg
ICcuJyBJREVOVCB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9y
KCk7CisgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6Q2xhc3MpOworICAgICAgICBp
ZiAocGFyc2VyLT5tX2NvbnRleHQubW9kZSA9PSBDU1NRdWlya3NNb2RlKQorICAgICAgICAgICAg
JDIubG93ZXIoKTsKKyAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsKKyAgICB9CisgIDsKKworYXR0
cl9uYW1lOgorICAgIElERU5UIG1heWJlX3NwYWNlIHsKKyAgICAgICAgQ1NTUGFyc2VyU3RyaW5n
JiBzdHIgPSAkMTsKKyAgICAgICAgaWYgKHBhcnNlci0+bV9jb250ZXh0LmlzSFRNTERvY3VtZW50
KQorICAgICAgICAgICAgc3RyLmxvd2VyKCk7CisgICAgICAgICQkID0gc3RyOworICAgIH0KKyAg
ICA7CisKK2F0dHJpYjoKKyAgICAnWycgbWF5YmVfc3BhY2UgYXR0cl9uYW1lICddJyB7CisgICAg
ICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5z
ZXRBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDMsIG51bGxBdG9tKSk7CisgICAg
ICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6U2V0KTsKKyAgICB9CisgICAgfCAnWycgbWF5
YmVfc3BhY2UgYXR0cl9uYW1lIG1hdGNoIG1heWJlX3NwYWNlIGlkZW50X29yX3N0cmluZyBtYXli
ZV9zcGFjZSAnXScgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3Rv
cigpOworICAgICAgICAkJC0+c2V0QXR0cmlidXRlKFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQz
LCBudWxsQXRvbSkpOworICAgICAgICAkJC0+c2V0TWF0Y2goKENTU1NlbGVjdG9yOjpNYXRjaCkk
NCk7CisgICAgICAgICQkLT5zZXRWYWx1ZSgkNik7CisgICAgfQorICAgIHwgJ1snIG1heWJlX3Nw
YWNlIG5hbWVzcGFjZV9zZWxlY3RvciBhdHRyX25hbWUgJ10nIHsKKyAgICAgICAgJCQgPSBwYXJz
ZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldEF0dHJpYnV0ZShw
YXJzZXItPmRldGVybWluZU5hbWVJbk5hbWVzcGFjZSgkMywgJDQpKTsKKyAgICAgICAgJCQtPnNl
dE1hdGNoKENTU1NlbGVjdG9yOjpTZXQpOworICAgIH0KKyAgICB8ICdbJyBtYXliZV9zcGFjZSBu
YW1lc3BhY2Vfc2VsZWN0b3IgYXR0cl9uYW1lIG1hdGNoIG1heWJlX3NwYWNlIGlkZW50X29yX3N0
cmluZyBtYXliZV9zcGFjZSAnXScgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRp
bmdTZWxlY3RvcigpOworICAgICAgICAkJC0+c2V0QXR0cmlidXRlKHBhcnNlci0+ZGV0ZXJtaW5l
TmFtZUluTmFtZXNwYWNlKCQzLCAkNCkpOworICAgICAgICAkJC0+c2V0TWF0Y2goKENTU1NlbGVj
dG9yOjpNYXRjaCkkNSk7CisgICAgICAgICQkLT5zZXRWYWx1ZSgkNyk7CisgICAgfQorICA7CisK
K21hdGNoOgorICAgICc9JyB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkV4YWN0OworICAg
IH0KKyAgICB8IElOQ0xVREVTIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6TGlzdDsKKyAg
ICB9CisgICAgfCBEQVNITUFUQ0ggeworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpIeXBoZW47
CisgICAgfQorICAgIHwgQkVHSU5TV0lUSCB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkJl
Z2luOworICAgIH0KKyAgICB8IEVORFNXSVRIIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6
RW5kOworICAgIH0KKyAgICB8IENPTlRBSU5TIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6
Q29udGFpbjsKKyAgICB9CisgICAgOworCitpZGVudF9vcl9zdHJpbmc6CisgICAgSURFTlQKKyAg
fCBTVFJJTkcKKyAgICA7CisKK3BzZXVkb19wYWdlOgorICAgICc6JyBJREVOVCB7CisgICAgICAg
ICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRN
YXRjaChDU1NTZWxlY3Rvcjo6UGFnZVBzZXVkb0NsYXNzKTsKKyAgICAgICAgJDIubG93ZXIoKTsK
KyAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsKKyAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5
cGUgdHlwZSA9ICQkLT5wc2V1ZG9UeXBlKCk7CisgICAgICAgIGlmICh0eXBlID09IENTU1NlbGVj
dG9yOjpQc2V1ZG9Vbmtub3duKQorICAgICAgICAgICAgJCQgPSAwOworICAgIH0KKworcHNldWRv
OgorICAgICc6JyBJREVOVCB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1Nl
bGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3Mp
OworICAgICAgICAkMi5sb3dlcigpOworICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOworICAgICAg
ICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUoKTsKKyAgICAg
ICAgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25vd24pCisgICAgICAgICAgICAk
JCA9IDA7CisgICAgfQorICAgIHwgJzonICc6JyBJREVOVCB7CisgICAgICAgICQkID0gcGFyc2Vy
LT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxl
Y3Rvcjo6UHNldWRvRWxlbWVudCk7CisgICAgICAgICQzLmxvd2VyKCk7CisgICAgICAgICQkLT5z
ZXRWYWx1ZSgkMyk7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNhbGwgaXMgbmVlZGVkIHRvIGZv
cmNlIHNlbGVjdG9yIHRvIGNvbXB1dGUgdGhlIHBzZXVkb1R5cGUgZWFybHkgZW5vdWdoLgorICAg
ICAgICAkJC0+cHNldWRvVHlwZSgpOworICAgIH0KKyAgICAvLyB1c2UgYnkgOi13ZWJraXQtYW55
LgorICAgIC8vIEZJWE1FOiBzaG91bGQgd2Ugc3VwcG9ydCBnZW5lcmljIHNlbGVjdG9ycyBoZXJl
IG9yIGp1c3Qgc2ltcGxlX3NlbGVjdG9ycz8KKyAgICAvLyBVc2Ugc2ltcGxlX3NlbGVjdG9yX2xp
c3QgZm9yIG5vdyB0byBtYXRjaCAtbW96LWFueS4KKyAgICAvLyBTZWUgaHR0cDovL2xpc3RzLncz
Lm9yZy9BcmNoaXZlcy9QdWJsaWMvd3d3LXN0eWxlLzIwMTBTZXAvMDU2Ni5odG1sIGZvciBzb21l
CisgICAgLy8gcmVsYXRlZCBkaXNjdXNzaW9uIHdpdGggcmVzcGVjdCB0byA6bm90LgorICAgIHwg
JzonIEFOWUZVTkNUSU9OIG1heWJlX3NwYWNlIHNpbXBsZV9zZWxlY3Rvcl9saXN0IG1heWJlX3Nw
YWNlICcpJyB7CisgICAgICAgIGlmICgkNCkgeworICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNy
ZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3MpOworICAgICAgICAgICAgJCQtPmFkb3B0U2VsZWN0b3JWZWN0b3Io
KnBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3JWZWN0b3IoJDQpKTsKKyAgICAgICAgICAgICQy
Lmxvd2VyKCk7CisgICAgICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOworICAgICAgICAgICAgQ1NT
U2VsZWN0b3I6OlBzZXVkb1R5cGUgdHlwZSA9ICQkLT5wc2V1ZG9UeXBlKCk7CisgICAgICAgICAg
ICBpZiAodHlwZSAhPSBDU1NTZWxlY3Rvcjo6UHNldWRvQW55KQorICAgICAgICAgICAgICAgICQk
ID0gMDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIC8v
IHVzZWQgYnkgOm50aC0qKGF4K2IpCisgICAgfCAnOicgRlVOQ1RJT04gbWF5YmVfc3BhY2UgTlRI
IG1heWJlX3NwYWNlICcpJyB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1Nl
bGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3Mp
OworICAgICAgICAkJC0+c2V0QXJndW1lbnQoJDQpOworICAgICAgICAkJC0+c2V0VmFsdWUoJDIp
OworICAgICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUo
KTsKKyAgICAgICAgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25vd24pCisgICAg
ICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIC8vIHVzZWQgYnkgOm50aC0qCisgICAgfCAnOicg
RlVOQ1RJT04gbWF5YmVfc3BhY2UgbWF5YmVfdW5hcnlfb3BlcmF0b3IgSU5URUdFUiBtYXliZV9z
cGFjZSAnKScgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3Rvcigp
OworICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKKyAgICAg
ICAgJCQtPnNldEFyZ3VtZW50KFN0cmluZzo6bnVtYmVyKCQ0ICogJDUpKTsKKyAgICAgICAgJCQt
PnNldFZhbHVlKCQyKTsKKyAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgdHlwZSA9ICQk
LT5wc2V1ZG9UeXBlKCk7CisgICAgICAgIGlmICh0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9V
bmtub3duKQorICAgICAgICAgICAgJCQgPSAwOworICAgIH0KKyAgICAvLyB1c2VkIGJ5IDpudGgt
KihvZGQvZXZlbikgYW5kIDpsYW5nCisgICAgfCAnOicgRlVOQ1RJT04gbWF5YmVfc3BhY2UgSURF
TlQgbWF5YmVfc3BhY2UgJyknIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5n
U2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
cyk7CisgICAgICAgICQkLT5zZXRBcmd1bWVudCgkNCk7CisgICAgICAgICQyLmxvd2VyKCk7Cisg
ICAgICAgICQkLT5zZXRWYWx1ZSgkMik7CisgICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBl
IHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOworICAgICAgICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rv
cjo6UHNldWRvVW5rbm93bikKKyAgICAgICAgICAgICQkID0gMDsKKyAgICAgICAgZWxzZSBpZiAo
dHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvTnRoQ2hpbGQgfHwKKyAgICAgICAgICAgICAgICAg
dHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvTnRoT2ZUeXBlIHx8CisgICAgICAgICAgICAgICAg
IHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb050aExhc3RDaGlsZCB8fAorICAgICAgICAgICAg
ICAgICB0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9OdGhMYXN0T2ZUeXBlKSB7CisgICAgICAg
ICAgICBpZiAoIWlzVmFsaWROdGhUb2tlbigkNCkpCisgICAgICAgICAgICAgICAgJCQgPSAwOwor
ICAgICAgICB9CisgICAgfQorICAgIC8vIHVzZWQgYnkgOm5vdAorICAgIHwgJzonIE5PVEZVTkNU
SU9OIG1heWJlX3NwYWNlIHNpbXBsZV9zZWxlY3RvciBtYXliZV9zcGFjZSAnKScgeworICAgICAg
ICBpZiAoISQ0IHx8ICEkNC0+aXNTaW1wbGUoKSkKKyAgICAgICAgICAgICQkID0gMDsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3Rv
cigpOworICAgICAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7
CisKKyAgICAgICAgICAgIENTU1NlbGVjdG9yVmVjdG9yIHNlbGVjdG9yVmVjdG9yOworICAgICAg
ICAgICAgc2VsZWN0b3JWZWN0b3IuYXBwZW5kKHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3Io
JDQpKTsKKyAgICAgICAgICAgICQkLT5hZG9wdFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9yVmVjdG9y
KTsKKworICAgICAgICAgICAgJDIubG93ZXIoKTsKKyAgICAgICAgICAgICQkLT5zZXRWYWx1ZSgk
Mik7CisgICAgICAgIH0KKyAgICB9CisgIDsKKworZGVjbGFyYXRpb25fbGlzdDoKKyAgICBkZWNs
YXJhdGlvbiB7CisgICAgICAgICQkID0gJDE7CisgICAgfQorICAgIHwgZGVjbF9saXN0IGRlY2xh
cmF0aW9uIHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgaWYgKCAkMiApCisgICAgICAgICAg
ICAkJCA9ICQyOworICAgIH0KKyAgICB8IGRlY2xfbGlzdCB7CisgICAgICAgICQkID0gJDE7Cisg
ICAgfQorICAgIHwgZXJyb3IgaW52YWxpZF9ibG9ja19saXN0IGVycm9yIHsKKyAgICAgICAgJCQg
PSBmYWxzZTsKKyAgICB9CisgICAgfCBlcnJvciB7CisgICAgICAgICQkID0gZmFsc2U7CisgICAg
fQorICAgIHwgZGVjbF9saXN0IGVycm9yIHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAg
fCBkZWNsX2xpc3QgaW52YWxpZF9ibG9ja19saXN0IHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9
CisgICAgOworCitkZWNsX2xpc3Q6CisgICAgZGVjbGFyYXRpb24gJzsnIG1heWJlX3NwYWNlIHsK
KyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlTdGFydCgpOworICAgICAgICAkJCA9ICQxOwor
ICAgIH0KKyAgICB8IGRlY2xhcmF0aW9uIGludmFsaWRfYmxvY2tfbGlzdCBtYXliZV9zcGFjZSB7
CisgICAgICAgICQkID0gZmFsc2U7CisgICAgfQorICAgIHwgZGVjbGFyYXRpb24gaW52YWxpZF9i
bG9ja19saXN0ICc7JyBtYXliZV9zcGFjZSB7CisgICAgICAgICQkID0gZmFsc2U7CisgICAgfQor
ICAgIHwgZXJyb3IgJzsnIG1heWJlX3NwYWNlIHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVy
dHlTdGFydCgpOworICAgICAgICAkJCA9IGZhbHNlOworICAgIH0KKyAgICB8IGVycm9yIGludmFs
aWRfYmxvY2tfbGlzdCBlcnJvciAnOycgbWF5YmVfc3BhY2UgeworICAgICAgICAkJCA9IGZhbHNl
OworICAgIH0KKyAgICB8IGRlY2xfbGlzdCBkZWNsYXJhdGlvbiAnOycgbWF5YmVfc3BhY2Ugewor
ICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7CisgICAgICAgICQkID0gJDE7Cisg
ICAgICAgIGlmICgkMikKKyAgICAgICAgICAgICQkID0gJDI7CisgICAgfQorICAgIHwgZGVjbF9s
aXN0IGVycm9yICc7JyBtYXliZV9zcGFjZSB7CisgICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5
U3RhcnQoKTsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAgfCBkZWNsX2xpc3QgZXJyb3Ig
aW52YWxpZF9ibG9ja19saXN0IGVycm9yICc7JyBtYXliZV9zcGFjZSB7CisgICAgICAgIHBhcnNl
ci0+bWFya1Byb3BlcnR5U3RhcnQoKTsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAgOwor
CitkZWNsYXJhdGlvbjoKKyAgICBWQVJfREVGSU5JVElPTiAnOicgbWF5YmVfc3BhY2UgZXhwciBw
cmlvIHsKKyNpZiBFTkFCTEVfQ1NTX1ZBUklBQkxFUworICAgICAgICBwYXJzZXItPnN0b3JlVmFy
aWFibGVEZWNsYXJhdGlvbigkMSwgcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDQpLCAk
NSk7CisgICAgICAgICQkID0gdHJ1ZTsKKyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlFbmQo
JDUsIHRydWUpOworI2Vsc2UKKyAgICAgICAgJCQgPSBmYWxzZTsKKyNlbmRpZgorICAgIH0KKyAg
ICB8CisgICAgcHJvcGVydHkgJzonIG1heWJlX3NwYWNlIGV4cHIgcHJpbyB7CisgICAgICAgICQk
ID0gZmFsc2U7CisgICAgICAgIGJvb2wgaXNQcm9wZXJ0eVBhcnNlZCA9IGZhbHNlOworICAgICAg
ICBpZiAoJDEgJiYgJDQpIHsKKyAgICAgICAgICAgIHBhcnNlci0+bV92YWx1ZUxpc3QgPSBwYXJz
ZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCk7CisgICAgICAgICAgICBpbnQgb2xkUGFyc2Vk
UHJvcGVydGllcyA9IHBhcnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCk7CisgICAgICAg
ICAgICAkJCA9IHBhcnNlci0+cGFyc2VWYWx1ZShzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPigk
MSksICQ1KTsKKyAgICAgICAgICAgIGlmICghJCQpCisgICAgICAgICAgICAgICAgcGFyc2VyLT5y
b2xsYmFja0xhc3RQcm9wZXJ0aWVzKHBhcnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCkg
LSBvbGRQYXJzZWRQcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBpc1Byb3BlcnR5UGFyc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIHBhcnNlci0+bV92YWx1ZUxp
c3QgPSBudWxscHRyOworICAgICAgICB9CisgICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5RW5k
KCQ1LCBpc1Byb3BlcnR5UGFyc2VkKTsKKyAgICB9CisgICAgfAorICAgIHByb3BlcnR5IGVycm9y
IHsKKyAgICAgICAgJCQgPSBmYWxzZTsKKyAgICB9CisgICAgfAorICAgIHByb3BlcnR5ICc6JyBt
YXliZV9zcGFjZSBlcnJvciBleHByIHByaW8geworICAgICAgICAvKiBUaGUgZGVmYXVsdCBtb3Zh
YmxlIHR5cGUgdGVtcGxhdGUgaGFzIGxldHRlci1zcGFjaW5nOiAubm9uZTsgIEhhbmRsZSB0aGlz
IGJ5IGxvb2tpbmcgZm9yCisgICAgICAgIGVycm9yIHRva2VucyBhdCB0aGUgc3RhcnQgb2YgYW4g
ZXhwciwgcmVjb3ZlciB0aGUgZXhwciBhbmQgdGhlbiB0cmVhdCBhcyBhbiBlcnJvciwgY2xlYW5p
bmcKKyAgICAgICAgdXAgYW5kIGRlbGV0aW5nIHRoZSBzaGlmdGVkIGV4cHIuICAqLworICAgICAg
ICBwYXJzZXItPm1hcmtQcm9wZXJ0eUVuZChmYWxzZSwgZmFsc2UpOworICAgICAgICAkJCA9IGZh
bHNlOworICAgIH0KKyAgICB8CisgICAgcHJvcGVydHkgJzonIG1heWJlX3NwYWNlIGV4cHIgcHJp
byBlcnJvciB7CisgICAgICAgIC8qIFdoZW4gd2UgZW5jb3VudGVyIHNvbWV0aGluZyBsaWtlIHAg
e2NvbG9yOiByZWQgIWltcG9ydGFudCBmYWlsO30gd2Ugc2hvdWxkIGRyb3AgdGhlIGRlY2xhcmF0
aW9uICovCisgICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5RW5kKGZhbHNlLCBmYWxzZSk7Cisg
ICAgICAgICQkID0gZmFsc2U7CisgICAgfQorICAgIHwKKyAgICBJTVBPUlRBTlRfU1lNIG1heWJl
X3NwYWNlIHsKKyAgICAgICAgLyogSGFuZGxlIHRoaXMgY2FzZTogZGl2IHsgdGV4dC1hbGlnbjog
Y2VudGVyOyAhaW1wb3J0YW50IH0gSnVzdCByZWR1Y2UgYXdheSB0aGUgc3RyYXkgIWltcG9ydGFu
dC4gKi8KKyAgICAgICAgJCQgPSBmYWxzZTsKKyAgICB9CisgICAgfAorICAgIHByb3BlcnR5ICc6
JyBtYXliZV9zcGFjZSB7CisgICAgICAgIC8qIGRpdiB7IGZvbnQtZmFtaWx5OiB9IEp1c3QgcmVk
dWNlIGF3YXkgdGhpcyBwcm9wZXJ0eSB3aXRoIG5vIHZhbHVlLiAqLworICAgICAgICBwYXJzZXIt
Pm1hcmtQcm9wZXJ0eUVuZChmYWxzZSwgZmFsc2UpOworICAgICAgICAkJCA9IGZhbHNlOworICAg
IH0KKyAgICB8CisgICAgcHJvcGVydHkgJzonIG1heWJlX3NwYWNlIGVycm9yIHsKKyAgICAgICAg
LyogaWYgd2UgY29tZSBhY3Jvc3MgcnVsZXMgd2l0aCBpbnZhbGlkIHZhbHVlcyBsaWtlIHRoaXMg
Y2FzZTogcCB7IHdlaWdodDogKjsgfSwganVzdCBkaXNjYXJkIHRoZSBydWxlICovCisgICAgICAg
IHBhcnNlci0+bWFya1Byb3BlcnR5RW5kKGZhbHNlLCBmYWxzZSk7CisgICAgICAgICQkID0gZmFs
c2U7CisgICAgfQorICAgIHwKKyAgICBwcm9wZXJ0eSBpbnZhbGlkX2Jsb2NrIHsKKyAgICAgICAg
LyogaWYgd2UgY29tZSBhY3Jvc3M6IGRpdiB7IGNvbG9yeztjb2xvcjptYXJvb259IH0sIGlnbm9y
ZSBldmVyeXRoaW5nIHdpdGhpbiBjdXJseSBicmFja2V0cyAqLworICAgICAgICAkJCA9IGZhbHNl
OworICAgIH0KKyAgOworCitwcm9wZXJ0eToKKyAgICBJREVOVCBtYXliZV9zcGFjZSB7CisgICAg
ICAgICQkID0gY3NzUHJvcGVydHlJRCgkMSk7CisgICAgfQorICA7CisKK3ByaW86CisgICAgSU1Q
T1JUQU5UX1NZTSBtYXliZV9zcGFjZSB7ICQkID0gdHJ1ZTsgfQorICAgIHwgLyogZW1wdHkgKi8g
eyAkJCA9IGZhbHNlOyB9CisgIDsKKworZXhwcjoKKyAgICB0ZXJtIHsKKyAgICAgICAgJCQgPSBw
YXJzZXItPmNyZWF0ZUZsb2F0aW5nVmFsdWVMaXN0KCk7CisgICAgICAgICQkLT5hZGRWYWx1ZShw
YXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlKCQxKSk7CisgICAgfQorICAgIHwgZXhwciBvcGVyYXRv
ciB0ZXJtIHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgaWYgKCQkKSB7CisgICAgICAgICAg
ICBpZiAoJDIpIHsKKyAgICAgICAgICAgICAgICBDU1NQYXJzZXJWYWx1ZSB2OworICAgICAgICAg
ICAgICAgIHYuaWQgPSAwOworICAgICAgICAgICAgICAgIHYudW5pdCA9IENTU1BhcnNlclZhbHVl
OjpPcGVyYXRvcjsKKyAgICAgICAgICAgICAgICB2LmlWYWx1ZSA9ICQyOworICAgICAgICAgICAg
ICAgICQkLT5hZGRWYWx1ZSh2KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICQkLT5hZGRW
YWx1ZShwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlKCQzKSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgfCBleHByIGludmFsaWRfYmxvY2tfbGlzdCB7CisgICAgICAgICQkID0gMDsKKyAgICB9Cisg
ICAgfCBleHByIGludmFsaWRfYmxvY2tfbGlzdCBlcnJvciB7CisgICAgICAgICQkID0gMDsKKyAg
ICB9CisgICAgfCBleHByIGVycm9yIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKyAgOworCitv
cGVyYXRvcjoKKyAgICAnLycgbWF5YmVfc3BhY2UgeworICAgICAgICAkJCA9ICcvJzsKKyAgICB9
CisgIHwgJywnIG1heWJlX3NwYWNlIHsKKyAgICAgICAgJCQgPSAnLCc7CisgICAgfQorICB8IC8q
IGVtcHR5ICovIHsKKyAgICAgICAgJCQgPSAwOworICB9CisgIDsKKwordGVybToKKyAgdW5hcnlf
dGVybSB7ICQkID0gJDE7IH0KKyAgfCB1bmFyeV9vcGVyYXRvciB1bmFyeV90ZXJtIHsgJCQgPSAk
MjsgJCQuZlZhbHVlICo9ICQxOyB9CisgIHwgU1RSSU5HIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAw
OyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5H
OyB9CisgIHwgSURFTlQgbWF5YmVfc3BhY2UgeworICAgICAgJCQuaWQgPSBjc3NWYWx1ZUtleXdv
cmRJRCgkMSk7CisgICAgICAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVDsK
KyAgICAgICQkLnN0cmluZyA9ICQxOworICB9CisgIC8qIFdlIG1pZ2h0IG5lZWQgdG8gYWN0dWFs
bHkgcGFyc2UgdGhlIG51bWJlciBmcm9tIGEgZGltZW5zaW9uLCBidXQgd2UgY2FuJ3QganVzdCBw
dXQgc29tZXRoaW5nIHRoYXQgdXNlcyAkJC5zdHJpbmcgaW50byB1bmFyeV90ZXJtLiAqLworICB8
IERJTUVOIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRElNRU5TSU9OOyB9CisgIHwgdW5hcnlfb3BlcmF0b3Ig
RElNRU4gbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQyOyAkJC51bml0ID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ESU1FTlNJT047IH0KKyAgfCBVUkkgbWF5YmVfc3BhY2Ug
eyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19VUkk7IH0KKyAgfCBVTklDT0RFUkFOR0UgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQk
LnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VTklDT0RFX1JB
TkdFOyB9CisgIHwgSEVYIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSAkMTsg
JCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEFSU0VSX0hFWENPTE9SOyB9CisgIHwg
JyMnIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSBDU1NQYXJzZXJTdHJpbmco
KTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEFSU0VSX0hFWENPTE9SOyB9IC8q
IEhhbmRsZSBlcnJvciBjYXNlOiAiY29sb3I6ICM7IiAqLworICB8IFZBUkZVTkNUSU9OIG1heWJl
X3NwYWNlIElERU5UICcpJyBtYXliZV9zcGFjZSB7CisjaWYgRU5BQkxFX0NTU19WQVJJQUJMRVMK
KyAgICAgICQkLmlkID0gMDsKKyAgICAgICQkLnN0cmluZyA9ICQzOworICAgICAgJCQudW5pdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVkFSSUFCTEVfTkFNRTsKKyNlbmRpZgorICB9CisgIC8q
IEZJWE1FOiBhY2NvcmRpbmcgdG8gdGhlIHNwZWNzIGEgZnVuY3Rpb24gY2FuIGhhdmUgYSB1bmFy
eV9vcGVyYXRvciBpbiBmcm9udC4gSSBrbm93IG5vIGNhc2Ugd2hlcmUgdGhpcyBtYWtlcyBzZW5z
ZSAqLworICB8IGZ1bmN0aW9uIHsKKyAgICAgICQkID0gJDE7CisgIH0KKyAgfCBjYWxjX2Z1bmN0
aW9uIHsKKyAgICAgICQkID0gJDE7CisgIH0KKyAgfCBtaW5fb3JfbWF4X2Z1bmN0aW9uIHsKKyAg
ICAgICQkID0gJDE7CisgIH0KKyAgfCAnJScgbWF5YmVfc3BhY2UgeyAvKiBIYW5kbGUgd2lkdGg6
ICU7ICovCisgICAgICAkJC5pZCA9IDA7ICQkLnVuaXQgPSAwOworICB9CisgIDsKKwordW5hcnlf
dGVybToKKyAgSU5URUdFUiBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuaXNJbnQgPSB0cnVl
OyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVS
OyB9CisgIHwgRkxPQVRUT0tFTiBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuaXNJbnQgPSBm
YWxzZTsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05V
TUJFUjsgfQorICB8IFBFUkNFTlRBR0UgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1
ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFOyB9Cisg
IHwgUFhTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFg7IH0KKyAgfCBDTVMgbWF5YmVfc3BhY2UgeyAkJC5p
ZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19D
TTsgfQorICB8IE1NUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQk
LnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01NOyB9CisgIHwgSU5TIG1heWJlX3NwYWNl
IHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfSU47IH0KKyAgfCBQVFMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9
ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QVDsgfQorICB8IFBDUyBtYXli
ZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BDOyB9CisgIHwgREVHUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQu
ZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRzsgfQorICB8
IFJBRFMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SQUQ7IH0KKyAgfCBHUkFEUyBtYXliZV9zcGFjZSB7ICQk
LmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X0dSQUQ7IH0KKyAgfCBUVVJOUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0g
JDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1RVUk47IH0KKyAgfCBNU0VDUyBt
YXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX01TOyB9CisgIHwgU0VDUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsg
JCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1M7IH0KKyAg
fCBIRVJUWiBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0haOyB9CisgIHwgS0hFUlRaIG1heWJlX3NwYWNlIHsg
JCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfS0haOyB9CisgIHwgRU1TIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAk
MTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TOyB9CisgIHwgUUVNUyBtYXli
ZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQYXJzZXJW
YWx1ZTo6UV9FTVM7IH0KKyAgfCBFWFMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1
ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FWFM7IH0KKyAgfCBSRU1T
IG1heWJlX3NwYWNlIHsKKyAgICAgICQkLmlkID0gMDsKKyAgICAgICQkLmZWYWx1ZSA9ICQxOwor
ICAgICAgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkVNUzsKKyAgICAgIGlmIChw
YXJzZXItPm1fc3R5bGVTaGVldCkKKyAgICAgICAgICBwYXJzZXItPm1fc3R5bGVTaGVldC0+cGFy
c2VyU2V0VXNlc1JlbVVuaXRzKHRydWUpOworICB9CisgIHwgVlcgbWF5YmVfc3BhY2UgeyAkJC5p
ZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19W
VzsgfQorICB8IFZIIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQu
dW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVkg7IH0KKyAgfCBWTUlOIG1heWJlX3NwYWNl
IHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfVk1JTjsgfQorICB8IERQUFggbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1
ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19EUFBYOyB9CisgIHwgRFBJ
IG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfRFBJOyB9CisgIHwgRFBDTSBtYXliZV9zcGFjZSB7ICQkLmlkID0g
MDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQQ007
IH0KKyAgOworCitmdW5jdGlvbjoKKyAgICBGVU5DVElPTiBtYXliZV9zcGFjZSBleHByICcpJyBt
YXliZV9zcGFjZSB7CisgICAgICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVh
dGVGbG9hdGluZ0Z1bmN0aW9uKCk7CisgICAgICAgIGYtPm5hbWUgPSAkMTsKKyAgICAgICAgZi0+
YXJncyA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQzKTsKKyAgICAgICAgJCQuaWQg
PSAwOworICAgICAgICAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uOworICAgICAg
ICAkJC5mdW5jdGlvbiA9IGY7CisgICAgfSB8CisgICAgRlVOQ1RJT04gbWF5YmVfc3BhY2UgZXhw
ciBUT0tFTl9FT0YgeworICAgICAgICBDU1NQYXJzZXJGdW5jdGlvbiogZiA9IHBhcnNlci0+Y3Jl
YXRlRmxvYXRpbmdGdW5jdGlvbigpOworICAgICAgICBmLT5uYW1lID0gJDE7CisgICAgICAgIGYt
PmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkMyk7CisgICAgICAgICQkLmlk
ID0gMDsKKyAgICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKKyAgICAg
ICAgJCQuZnVuY3Rpb24gPSBmOworICAgIH0gfAorICAgIEZVTkNUSU9OIG1heWJlX3NwYWNlICcp
JyBtYXliZV9zcGFjZSB7CisgICAgICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5j
cmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7CisgICAgICAgIGYtPm5hbWUgPSAkMTsKKyAgICAgICAg
Q1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nVmFs
dWVMaXN0KCk7CisgICAgICAgIGYtPmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlz
dCh2YWx1ZUxpc3QpOworICAgICAgICAkJC5pZCA9IDA7CisgICAgICAgICQkLnVuaXQgPSBDU1NQ
YXJzZXJWYWx1ZTo6RnVuY3Rpb247CisgICAgICAgICQkLmZ1bmN0aW9uID0gZjsKKyAgICB9IHwK
KyAgICBGVU5DVElPTiBtYXliZV9zcGFjZSBlcnJvciB7CisgICAgICAgIENTU1BhcnNlckZ1bmN0
aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7CisgICAgICAgIGYtPm5h
bWUgPSAkMTsKKyAgICAgICAgZi0+YXJncyA9IG51bGxwdHI7CisgICAgICAgICQkLmlkID0gMDsK
KyAgICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKKyAgICAgICAgJCQu
ZnVuY3Rpb24gPSBmOworICB9CisgIDsKKyAKK2NhbGNfZnVuY190ZXJtOgorICB1bmFyeV90ZXJt
IHsgJCQgPSAkMTsgfQorICB8IFZBUkZVTkNUSU9OIG1heWJlX3NwYWNlIElERU5UICcpJyBtYXli
ZV9zcGFjZSB7CisjaWYgRU5BQkxFX0NTU19WQVJJQUJMRVMKKyAgICAgICQkLmlkID0gMDsKKyAg
ICAgICQkLnN0cmluZyA9ICQzOworICAgICAgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfVkFSSUFCTEVfTkFNRTsKKyNlbmRpZgorICB9CisgIHwgdW5hcnlfb3BlcmF0b3IgdW5hcnlf
dGVybSB7ICQkID0gJDI7ICQkLmZWYWx1ZSAqPSAkMTsgfQorICA7CisKK2NhbGNfZnVuY19vcGVy
YXRvcjoKKyAgICAnKycgV0hJVEVTUEFDRSB7CisgICAgICAgICQkID0gJysnOworICAgIH0KKyAg
ICB8ICctJyBXSElURVNQQUNFIHsKKyAgICAgICAgJCQgPSAnLSc7CisgICAgfQorICAgIHwgJyon
IG1heWJlX3NwYWNlIHsKKyAgICAgICAgJCQgPSAnKic7CisgICAgfQorICAgIHwgJy8nIG1heWJl
X3NwYWNlIHsKKyAgICAgICAgJCQgPSAnLyc7CisgICAgfQorICA7CisKK2NhbGNfZnVuY19wYXJl
bl9leHByOgorICAgICcoJyBtYXliZV9zcGFjZSBjYWxjX2Z1bmNfZXhwciBtYXliZV9zcGFjZSAn
KScgbWF5YmVfc3BhY2UgeworICAgICAgICBpZiAoJDMpIHsKKyAgICAgICAgICAgICQkID0gJDM7
CisgICAgICAgICAgICBDU1NQYXJzZXJWYWx1ZSB2OworICAgICAgICAgICAgdi5pZCA9IDA7Cisg
ICAgICAgICAgICB2LnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3I7CisgICAgICAgICAg
ICB2LmlWYWx1ZSA9ICcoJzsKKyAgICAgICAgICAgICQkLT5pbnNlcnRWYWx1ZUF0KDAsIHYpOwor
ICAgICAgICAgICAgdi5pVmFsdWUgPSAnKSc7CisgICAgICAgICAgICAkJC0+YWRkVmFsdWUodik7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgJCQgPSAwOworICAgIH0KKworY2FsY19mdW5j
X2V4cHI6CisgICAgY2FsY19mdW5jX3Rlcm0gbWF5YmVfc3BhY2UgeworICAgICAgICAkJCA9IHBh
cnNlci0+Y3JlYXRlRmxvYXRpbmdWYWx1ZUxpc3QoKTsKKyAgICAgICAgJCQtPmFkZFZhbHVlKHBh
cnNlci0+c2lua0Zsb2F0aW5nVmFsdWUoJDEpKTsKKyAgICB9CisgICAgfCBjYWxjX2Z1bmNfZXhw
ciBjYWxjX2Z1bmNfb3BlcmF0b3IgY2FsY19mdW5jX3Rlcm0geworICAgICAgICBpZiAoJDEgJiYg
JDIpIHsKKyAgICAgICAgICAgICQkID0gJDE7CisgICAgICAgICAgICBDU1NQYXJzZXJWYWx1ZSB2
OworICAgICAgICAgICAgdi5pZCA9IDA7CisgICAgICAgICAgICB2LnVuaXQgPSBDU1NQYXJzZXJW
YWx1ZTo6T3BlcmF0b3I7CisgICAgICAgICAgICB2LmlWYWx1ZSA9ICQyOworICAgICAgICAgICAg
JCQtPmFkZFZhbHVlKHYpOworICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHBhcnNlci0+c2lua0Zs
b2F0aW5nVmFsdWUoJDMpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAkJCA9IDA7CisK
KyAgICB9CisgICAgfCBjYWxjX2Z1bmNfZXhwciBjYWxjX2Z1bmNfb3BlcmF0b3IgY2FsY19mdW5j
X3BhcmVuX2V4cHIgeworICAgICAgICBpZiAoJDEgJiYgJDIgJiYgJDMpIHsKKyAgICAgICAgICAg
ICQkID0gJDE7CisgICAgICAgICAgICBDU1NQYXJzZXJWYWx1ZSB2OworICAgICAgICAgICAgdi5p
ZCA9IDA7CisgICAgICAgICAgICB2LnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3I7Cisg
ICAgICAgICAgICB2LmlWYWx1ZSA9ICQyOworICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHYpOwor
ICAgICAgICAgICAgJCQtPmV4dGVuZCgqKCQzKSk7CisgICAgICAgIH0gZWxzZSAKKyAgICAgICAg
ICAgICQkID0gMDsKKyAgICB9CisgICAgfCBjYWxjX2Z1bmNfcGFyZW5fZXhwcgorICAgIHwgY2Fs
Y19mdW5jX2V4cHIgZXJyb3IgeworICAgICAgICAkJCA9IDA7CisgICAgfQorICA7CisKK2NhbGNf
ZnVuY19leHByX2xpc3Q6CisgICAgY2FsY19mdW5jX2V4cHIgIHsKKyAgICAgICAgJCQgPSAkMTsK
KyAgICB9ICAgIAorICAgIHwgY2FsY19mdW5jX2V4cHJfbGlzdCAnLCcgbWF5YmVfc3BhY2UgY2Fs
Y19mdW5jX2V4cHIgeworICAgICAgICBpZiAoJDEgJiYgJDQpIHsKKyAgICAgICAgICAgICQkID0g
JDE7CisgICAgICAgICAgICBDU1NQYXJzZXJWYWx1ZSB2OworICAgICAgICAgICAgdi5pZCA9IDA7
CisgICAgICAgICAgICB2LnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3I7CisgICAgICAg
ICAgICB2LmlWYWx1ZSA9ICcsJzsKKyAgICAgICAgICAgICQkLT5hZGRWYWx1ZSh2KTsKKyAgICAg
ICAgICAgICQkLT5leHRlbmQoKigkNCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICQk
ID0gMDsKKyAgICB9CisgICAgCisKK2NhbGNfZnVuY3Rpb246CisgICAgQ0FMQ0ZVTkNUSU9OIG1h
eWJlX3NwYWNlIGNhbGNfZnVuY19leHByICcpJyBtYXliZV9zcGFjZSB7CisgICAgICAgIENTU1Bh
cnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7CisgICAg
ICAgIGYtPm5hbWUgPSAkMTsKKyAgICAgICAgZi0+YXJncyA9IHBhcnNlci0+c2lua0Zsb2F0aW5n
VmFsdWVMaXN0KCQzKTsKKyAgICAgICAgJCQuaWQgPSAwOworICAgICAgICAkJC51bml0ID0gQ1NT
UGFyc2VyVmFsdWU6OkZ1bmN0aW9uOworICAgICAgICAkJC5mdW5jdGlvbiA9IGY7CisgICAgfQor
ICAgIHwgQ0FMQ0ZVTkNUSU9OIG1heWJlX3NwYWNlIGVycm9yIHsKKyAgICAgICAgWVlFUlJPUjsK
KyAgICB9CisgICAgOworCisKK21pbl9vcl9tYXg6CisgICAgTUlORlVOQ1RJT04geworICAgICAg
ICAkJCA9ICQxOworICAgIH0KKyAgICB8IE1BWEZVTkNUSU9OIHsKKyAgICAgICAgJCQgPSAkMTsK
KyAgICB9CisgICAgOworCittaW5fb3JfbWF4X2Z1bmN0aW9uOgorICAgIG1pbl9vcl9tYXggbWF5
YmVfc3BhY2UgY2FsY19mdW5jX2V4cHJfbGlzdCAnKScgbWF5YmVfc3BhY2UgeworICAgICAgICBD
U1NQYXJzZXJGdW5jdGlvbiogZiA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdGdW5jdGlvbigpOwor
ICAgICAgICBmLT5uYW1lID0gJDE7CisgICAgICAgIGYtPmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9h
dGluZ1ZhbHVlTGlzdCgkMyk7CisgICAgICAgICQkLmlkID0gMDsKKyAgICAgICAgJCQudW5pdCA9
IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKKyAgICAgICAgJCQuZnVuY3Rpb24gPSBmOworICAg
IH0gCisgICAgfCBtaW5fb3JfbWF4IG1heWJlX3NwYWNlIGVycm9yIHsKKyAgICAgICAgWVlFUlJP
UjsKKyAgICB9CisgICAgOworCisvKiBlcnJvciBoYW5kbGluZyBydWxlcyAqLworCitzYXZlX2Js
b2NrOgorICAgIGNsb3NpbmdfYnJhY2UgeworICAgICAgICAkJCA9IDA7CisgICAgfQorICB8IGVy
cm9yIGNsb3NpbmdfYnJhY2UgeworICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIDsKKworaW52
YWxpZF9hdDoKKyAgICBBVEtFWVdPUkQgZXJyb3IgaW52YWxpZF9ibG9jayB7CisgICAgICAgICQk
ID0gMDsKKyAgICB9CisgIHwgQVRLRVlXT1JEIGVycm9yICc7JyB7CisgICAgICAgICQkID0gMDsK
KyAgICB9CisgICAgOworCitpbnZhbGlkX3J1bGU6CisgICAgZXJyb3IgaW52YWxpZF9ibG9jayB7
CisgICAgICAgICQkID0gMDsKKyAgICB9CisKKy8qCisgIFNlZW1zIGxpa2UgdGhlIHR3byBydWxl
cyBiZWxvdyBhcmUgdHJ5aW5nIHRvbyBtdWNoIGFuZCB2aW9sYXRpbmcKKyAgaHR0cDovL3d3dy5o
aXhpZS5jaC90ZXN0cy9ldmlsL21peGVkL2Nzc2Vycm9yaGFuZGxpbmcuaHRtbAorCisgIHwgZXJy
b3IgJzsnIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKyAgfCBlcnJvciAnfScgeworICAgICAg
ICAkJCA9IDA7CisgICAgfQorKi8KKyAgICA7CisKK2ludmFsaWRfYmxvY2s6CisgICAgJ3snIGVy
cm9yIGludmFsaWRfYmxvY2tfbGlzdCBlcnJvciBjbG9zaW5nX2JyYWNlIHsKKyAgICAgICAgcGFy
c2VyLT5pbnZhbGlkQmxvY2tIaXQoKTsKKyAgICB9CisgIHwgJ3snIGVycm9yIGNsb3NpbmdfYnJh
Y2UgeworICAgICAgICBwYXJzZXItPmludmFsaWRCbG9ja0hpdCgpOworICAgIH0KKyAgICA7CisK
K2ludmFsaWRfYmxvY2tfbGlzdDoKKyAgICBpbnZhbGlkX2Jsb2NrCisgIHwgaW52YWxpZF9ibG9j
a19saXN0IGVycm9yIGludmFsaWRfYmxvY2sKKzsKKworJSUKKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbmNsdWRlcyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFtbWFyLnkuaW5jbHVkZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzI2ODk3NDUwYjQxYzU4MTcwMTkzYjli
MDA4YjY0NmI0Y2RhNjY3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFtbWFyLnkuaW5jbHVkZXMKQEAgLTAsMCArMSw4NSBAQAorJXsKKworLyoKKyAqICBDb3B5
cmlnaHQgKEMpIDIwMDItMjAwMyBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQ
cm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBT
ZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0
ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICoKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJDU1NQYXJzZXIuaCIKKyNpbmNs
dWRlICJDU1NQYXJzZXJNb2RlLmgiCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNp
bmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKKyNp
bmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgorI2luY2x1ZGUgIk1lZGlh
UXVlcnlFeHAuaCIKKyNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKKyNpbmNsdWRlICJTdHlsZVNoZWV0
Q29udGVudHMuaCIKKyNpbmNsdWRlICJXZWJLaXRDU1NLZXlmcmFtZVJ1bGUuaCIKKyNpbmNsdWRl
ICJXZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
KyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCisjZGVmaW5lIFlZTUFM
TE9DIGZhc3RNYWxsb2MKKyNkZWZpbmUgWVlGUkVFIGZhc3RGcmVlCisKKyNkZWZpbmUgWVlFTkFC
TEVfTkxTIDAKKyNkZWZpbmUgWVlMVFlQRV9JU19UUklWSUFMIDEKKyNkZWZpbmUgWVlNQVhERVBU
SCAxMDAwMAorI2RlZmluZSBZWURFQlVHIDAKKworI2lmIFlZREVCVUcgPiAwCisjZGVmaW5lIFlZ
UFJJTlQoRmlsZSxUeXBlLFZhbHVlKSBwcmludF90b2tlbl92YWx1ZShGaWxlLFR5cGUsVmFsdWUp
CitzdGF0aWMgdm9pZCBwcmludF90b2tlbl92YWx1ZShGSUxFICogeXlvdXRwdXQsIGludCB5eXR5
cGUsIFlZU1RZUEUgY29uc3QgJnl5dmFsdWUpCit7CisgICAgc3dpdGNoICh5eXR5cGUpIHsKKyAg
ICBjYXNlIElERU5UOgorICAgIGNhc2UgU1RSSU5HOgorICAgIGNhc2UgTlRIOgorICAgIGNhc2Ug
SEVYOgorICAgIGNhc2UgSURTRUw6CisgICAgY2FzZSBESU1FTjoKKyAgICBjYXNlIElOVkFMSURE
SU1FTjoKKyAgICBjYXNlIFVSSToKKyAgICBjYXNlIEZVTkNUSU9OOgorICAgIGNhc2UgQU5ZRlVO
Q1RJT046CisgICAgY2FzZSBOT1RGVU5DVElPTjoKKyAgICBjYXNlIENBTENGVU5DVElPTjoKKyAg
ICBjYXNlIE1JTkZVTkNUSU9OOgorICAgIGNhc2UgTUFYRlVOQ1RJT046CisgICAgY2FzZSBWQVJf
REVGSU5JVElPTjoKKyAgICBjYXNlIFVOSUNPREVSQU5HRToKKyAgICAgICAgWVlGUFJJTlRGKHl5
b3V0cHV0LCAiJXMiLCBTdHJpbmcoeXl2YWx1ZS5zdHJpbmcpLnV0ZjgoKS5kYXRhKCkpOworICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cit9CisjZW5k
aWYKKworJX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlZ3JhbW1hci5wbCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlZ3JhbW1hci5wbAppbmRleCAwNmZhYWE5M2QzMjYwYWI1
MzA0MTdjNDMzZTE2OGMzMzViYzY3YWVmLi40ZTA0NTJlZDgzNTFhM2U0YjNmNGVhZmM1Yzk5ZTJm
ZThlODk3NDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZWdyYW1tYXIucGwK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2VncmFtbWFyLnBsCkBAIC0yMSwzNSArMjEsNzUg
QEAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3M7CiAKLW15ICRncmFtbWFyID0gJEFSR1ZbMF07
Ci1teSAkZmlsZUJhc2UgPSAkQVJHVlsxXTsKK3VzZSBGaWxlOjpCYXNlbmFtZTsKK3VzZSBGaWxl
OjpTcGVjOwordXNlIEdldG9wdDo6TG9uZzsKIAotc3lzdGVtKCJiaXNvbiAtZCAtcCBjc3N5eSAi
IC4gJGdyYW1tYXIgLiAiIC1vICIgLiAkZmlsZUJhc2UgLiAiLnRhYi5jIik7CitteSAkb3V0cHV0
RGlyID0gIi4iOworbXkgJGV4dHJhRGVmaW5lcyA9ICIiOworbXkgJHN5bWJvbHNQcmVmaXggPSAi
IjsKK215ICRwcmVwcm9jZXNzb3IgPSAiIjsKK215ICRwcmVwcm9jZXNzT25seSA9IDA7CitteSAk
Ymlzb24gPSAiYmlzb24iOwogCi1vcGVuIEhFQURFUiwgIj4iIC4gJGZpbGVCYXNlIC4gIi5oIiBv
ciBkaWU7CitHZXRPcHRpb25zKAorICAgICdvdXRwdXREaXI9cycgPT4gXCRvdXRwdXREaXIsCisg
ICAgJ2V4dHJhRGVmaW5lcz1zJyA9PiBcJGV4dHJhRGVmaW5lcywKKyAgICAnYmlzb249cycgPT4g
XCRiaXNvbiwKKyAgICAncHJlcHJvY2Vzc29yPXMnID0+IFwkcHJlcHJvY2Vzc29yLAorICAgICdw
cmVwcm9jZXNzT25seScgPT4gXCRwcmVwcm9jZXNzT25seSwKKyAgICAnc3ltYm9sc1ByZWZpeD1z
JyA9PiBcJHN5bWJvbHNQcmVmaXgKKyk7CisKK215ICRncmFtbWFyRmlsZVBhdGggPSAkQVJHVlsw
XTsKK215ICRncmFtbWFySW5jbHVkZXNGaWxlUGF0aCA9IEBBUkdWID4gMCA/ICRBUkdWWzFdIDog
IiI7CisKK2lmICghbGVuZ3RoKCRzeW1ib2xzUHJlZml4KSAmJiAhJHByZXByb2Nlc3NPbmx5KSB7
CisgICAgZGllICJOZWVkIGEgc3ltYm9scyBwcmVmaXggdG8gZ2l2ZSB0byBiaXNvbiAoZS5nLiBj
c3N5eSwgeHBhdGh5eSkiOworfQorCitteSAoJGZpbGVuYW1lLCAkYmFzZVBhdGgsICRzdWZmaXgp
ID0gZmlsZXBhcnNlKCRncmFtbWFyRmlsZVBhdGgsICgiLnkiLCAiLnkuaW4iKSk7CisKK2lmICgk
c3VmZml4IGVxICIueS5pbiIpIHsKKyAgICBteSAkZ3JhbW1hckZpbGVPdXRQYXRoID0gRmlsZTo6
U3BlYy0+am9pbigkb3V0cHV0RGlyLCAiJGZpbGVuYW1lLnkiKTsKKyAgICBpZiAoISRncmFtbWFy
SW5jbHVkZXNGaWxlUGF0aCkgeworICAgICAgICAkZ3JhbW1hckluY2x1ZGVzRmlsZVBhdGggPSAi
JHtiYXNlUGF0aH0ke2ZpbGVuYW1lfS55LmluY2x1ZGVzIjsKKyAgICB9CisKKyAgICBvcGVuIEdS
QU1NQVIsICI+JGdyYW1tYXJGaWxlT3V0UGF0aCIgb3IgZGllOworICAgIG9wZW4gSU5DTFVERVMs
ICI8JGdyYW1tYXJJbmNsdWRlc0ZpbGVQYXRoIiBvciBkaWU7CisKKyAgICByZXF1aXJlIHByZXBy
b2Nlc3NvcjsKKworICAgIHdoaWxlICg8SU5DTFVERVM+KSB7CisgICAgICAgIHByaW50IEdSQU1N
QVI7CisgICAgfQorICAgIHByaW50IEdSQU1NQVIgam9pbigiIiwgYXBwbHlQcmVwcm9jZXNzb3Io
JGdyYW1tYXJGaWxlUGF0aCwgJGV4dHJhRGVmaW5lcywgJHByZXByb2Nlc3NvcikpOworICAgIGNs
b3NlIEdSQU1NQVI7CisKKyAgICAkZ3JhbW1hckZpbGVQYXRoID0gJGdyYW1tYXJGaWxlT3V0UGF0
aDsKKworICAgIGV4aXQgaWYgJHByZXByb2Nlc3NPbmx5OworfQorCitteSAkZmlsZUJhc2UgPSBG
aWxlOjpTcGVjLT5qb2luKCRvdXRwdXREaXIsICRmaWxlbmFtZSk7CitzeXN0ZW0oIiRiaXNvbiAt
ZCAtcCAkc3ltYm9sc1ByZWZpeCAkZ3JhbW1hckZpbGVQYXRoIC1vICRmaWxlQmFzZS5jcHAiKTsK
Kworb3BlbiBIRUFERVIsICI+JGZpbGVCYXNlLmgiIG9yIGRpZTsKIHByaW50IEhFQURFUiA8PCAi
RU9GIjsKICNpZm5kZWYgQ1NTR1JBTU1BUl9ICiAjZGVmaW5lIENTU0dSQU1NQVJfSAogRU9GCiAK
LW9wZW4gSFBQLCAiPCIgLiAkZmlsZUJhc2UgLiAiLnRhYi5oIiBvciBkaWU7CitvcGVuIEhQUCwg
IjwkZmlsZUJhc2UuY3BwLmgiIG9yIG9wZW4gSFBQLCAiPCRmaWxlQmFzZS5ocHAiIG9yIGRpZTsK
IHdoaWxlICg8SFBQPikgewogICAgIHByaW50IEhFQURFUjsKIH0KIGNsb3NlIEhQUDsKIAogcHJp
bnQgSEVBREVSICIjZW5kaWZcbiI7Ci0KIGNsb3NlIEhFQURFUjsKIAotdW5saW5rKCRmaWxlQmFz
ZSAuICIudGFiLmgiKTsKLQotb3BlbiBDUFAsICI+IiAuICRmaWxlQmFzZSAuICIuY3BwIiBvciBk
aWU7Ci1vcGVuIEdFTlNSQywgIjwiIC4gJGZpbGVCYXNlIC4gIi50YWIuYyIgb3IgZGllOwotd2hp
bGUgKDxHRU5TUkM+KSB7Ci0gICAgcHJpbnQgQ1BQOwotfQotY2xvc2UgR0VOU1JDOwotY2xvc2Ug
Q1BQOwordW5saW5rKCIkZmlsZUJhc2UuY3BwLmgiKTsKK3VubGluaygiJGZpbGVCYXNlLmhwcCIp
OwogCi11bmxpbmsoJGZpbGVCYXNlIC4gIi50YWIuYyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2Nt
YWtlL1dlYktpdE1hY3Jvcy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRNYWNyb3MuY21ha2UK
aW5kZXggZWQ4ZWI1ZDMyMGYyM2RkOGRmODRiYjc0ZTZkN2UyOWY1NTkwNDVlZi4uNzhmYmFmNmQ1
MTM1YTQxZTM1MTMwNGE1OGQ2N2Q3ODM4Y2E4NGM4MyAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtl
L1dlYktpdE1hY3Jvcy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtl
CkBAIC0xNDgsMTEgKzE0OCwxMiBAQCBNQUNSTyAoR0VORVJBVEVfSEFTSF9MVVQgX2lucHV0IF9v
dXRwdXQpCiBFTkRNQUNSTyAoKQogCiAKLU1BQ1JPIChHRU5FUkFURV9HUkFNTUFSIF9wcmVmaXgg
X2lucHV0IF9vdXRwdXRfaGVhZGVyIF9vdXRwdXRfc291cmNlKQorTUFDUk8gKEdFTkVSQVRFX0dS
QU1NQVIgX3ByZWZpeCBfaW5wdXQgX291dHB1dF9oZWFkZXIgX291dHB1dF9zb3VyY2UgX2ZlYXR1
cmVzKQogICAgIEFERF9DVVNUT01fQ09NTUFORCgKICAgICAgICAgT1VUUFVUICR7X291dHB1dF9o
ZWFkZXJ9ICR7X291dHB1dF9zb3VyY2V9CiAgICAgICAgIE1BSU5fREVQRU5ERU5DWSAke19pbnB1
dH0KLSAgICAgICAgQ09NTUFORCAke0JJU09OX0VYRUNVVEFCTEV9IC1wICR7X3ByZWZpeH0gJHtf
aW5wdXR9IC1vICR7X291dHB1dF9zb3VyY2V9IC0tZGVmaW5lcz0ke19vdXRwdXRfaGVhZGVyfQor
ICAgICAgICBERVBFTkRTICR7X2lucHV0fQorICAgICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRB
QkxFfSAtSSAke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9zY3JpcHRzICR7V0VCQ09SRV9ESVJ9L2Nz
cy9tYWtlZ3JhbW1hci5wbCAke19pbnB1dH0gLS1vdXRwdXREaXIgJHtERVJJVkVEX1NPVVJDRVNf
V0VCQ09SRV9ESVJ9IC0tZXh0cmFEZWZpbmVzICIke19mZWF0dXJlc30iIC0tcHJlcHJvY2Vzc29y
ICIke0NPREVfR0VORVJBVE9SX1BSRVBST0NFU1NPUn0iIC0tYmlzb24gIiR7QklTT05fRVhFQ1VU
QUJMRX0iIC0tc3ltYm9sc1ByZWZpeCAke19wcmVmaXh9ICR7X2lucHV0fQogICAgICAgICBWRVJC
QVRJTSkKIEVORE1BQ1JPICgpCiAKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwpp
bmRleCBmZTA1OWJlZjBmNWMxNzgyMDVmMDc2ODBkZDk2YWRmNjgzNjhhMmU0Li4yYzJhOTg0ZTIw
ODRkZDVlNDlhOTcyNTEzOGU1YjNhOTExZTlkNTkxIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysr
IGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMTAtMDkgIFBhYmxvIEZsb3VyZXQg
IDxwYWJsb2ZAbW90b3JvbGEuY29tPgorCisgICAgICAgIFByZS1wcm9jZXNzIENTU0dyYW1tYXIu
eSBiZWZvcmUgcnVubmluZyB0aHJvdWdoIGJpc29uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQyOTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRNYWNyb3MuY21ha2U6
CisgICAgICAgICAgICBVc2UgV2ViQ29yZS9jc3MvbWFrZWdyYW1tYXIucGwgdG8gZ2VuZXJhdGUg
Ymlzb24gZ3JhbW1hciBmaWxlcy4KKwogMjAxMi0xMC0xMiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjEzMTE4OS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168764</attachid>
            <date>2012-10-15 12:53:33 -0700</date>
            <delta_ts>2012-10-15 17:45:51 -0700</delta_ts>
            <desc>Rebased patch</desc>
            <filename>bug-94290-20121015125223.patch</filename>
            <type>text/plain</type>
            <size>116417</size>
            <attacher name="Pablo Flouret">pf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTBlYTE2YWU4YmRiZmE2
MTI2MjVjNDk0ZDUzYWM4ZGM4YjMzYTE2Mi4uODYwMDFlMWVjZDAwNTFkOGYyMzVhYmZlODE1ZWIz
NzQ0MmQ0ODRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTEwLTE1ICBQYWJs
byBGbG91cmV0ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBQcmUtcHJvY2VzcyBD
U1NHcmFtbWFyLnkgYmVmb3JlIHJ1bm5pbmcgdGhyb3VnaCBiaXNvbi4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MjkwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAgICBSdW5uaW5nIENTU0dyYW1tYXIueSB0aHJvdWdo
IGEgcHJlcHJvY2Vzc29yIGFsbG93cyB0aGUgdXNlIG9mIGZlYXR1cmUKKyAgICAgICAgZGVmaW5l
cyBpbiBhbGwgcGxhY2VzIG9mIHRoZSB5YWNjIGZpbGUgKGkuZS4gbm90IGp1c3QgaW4gQyBibG9j
a3MpLgorICAgICAgICBNb3N0bHkgdXNlZnVsIHRvIGJlIGFibGUgdG8ga2VlcCBldmVyeSBwYXJ0
IG9mIGEgZmVhdHVyZSB1bmRlciBmZWF0dXJlCisgICAgICAgIGZsYWdzIGZvciBzZWxmLWRvY3Vt
ZW50aW5nIHB1cnBvc2VzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgQ1NTR3JhbW1hci55IHNo
b3VsZCBiZSBnZW5lcmF0ZWQgY29ycmVjdGx5IGFuZCBldmVyeXRoaW5nCisgICAgICAgIHNob3Vs
ZCBrZWVwIHdvcmtpbmcgYXMgYmVmb3JlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5w
cmk6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICAgICBNb2RpZnkgYnVpbGQg
c3lzdGVtcyB0byB1c2UgbWFrZWdyYW1tYXIucGwgdG8gZ2VuZXJhdGUgdGhlIC55IGZpbGVzCisg
ICAgICAgICAgICBhbmQgcnVuIHRob3NlIHRocm91Z2ggYmlzb24uCisKKyAgICAgICAgKiBXZWJD
b3JlLmd5cC9XZWJDb3JlLmd5cDoKKyAgICAgICAgICAgIEFkZCBhIG5ldyBhY3Rpb24gdG8gcHJl
cHJvY2VzcyB0aGUgQ1NTR3JhbW1hci55LmluIGZpbGUgYmVmb3JlIHRoZQorICAgICAgICAgICAg
Ymlzb24gcnVsZSBpcyBydW4uCisKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICAgICBBZGQgdGhlIG5ldyAueS5pbiAvIC55LmluY2x1ZGVzIGZpbGVzLgorCisgICAgICAg
ICogY3NzL0NTU0dyYW1tYXIueS5pbjogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFtbWFyLnkuCisgICAgICAgICAgICBBbHNvIG1vdmVkIHRoZSB0b3AgZGVjbGFyYXRpb25z
IHNlY3Rpb24gdGhhdCBoYXMgaW5jbHVkZXMsIGRlZmluZXMsCisgICAgICAgICAgICBldGMuIHRv
IGl0cyBvd24gZmlsZS4gVGhlc2Ugc2hvdWxkbid0IGJlIHRvdWNoZWQgYnkgdGhlIGZpcnN0Cisg
ICAgICAgICAgICBwYXNzIG9mIHRoZSBwcmVwcm9jZXNzb3IuIEFuZCBjaGFuZ2VkIHRoZSBleGlz
dGluZyBFTkFCTEUoRkVBVFVSRSkKKyAgICAgICAgICAgIGlmZGVmcyB0byBFTkFCTEVfRkVBVFVS
RSBzaW5jZSB0aGUgRU5BQkxFKCkgbWFjcm8gaXMgbm90IGF2YWlsYWJsZQorICAgICAgICAgICAg
eWV0LgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnkuaW5jbHVkZXM6IEFkZGVkLgorICAgICAg
ICAgICAgVGhlIGFmb3JlbWVudGlvbmVkIGRlY2xhcmF0aW9ucyBoZWFkZXIgc2VjdGlvbi4gQWZ0
ZXIgdGhlIC55LmluIGZpbGUKKyAgICAgICAgICAgIGlzIHByb2Nlc3NlZCBpdCB3aWxsIGJlIGNv
bmNhdGVuYXRlZCB3aXRoIHRoaXMgb25lIHRvIG1ha2UgdGhlCisgICAgICAgICAgICBDU1NHcmFt
bWFyLnkgZmlsZS4KKworICAgICAgICAqIGNzcy9tYWtlZ3JhbW1hci5wbDoKKyAgICAgICAgICAg
IE1vZGlmeSB0aGUgc2NyaXB0IHRvIGhhbmRsZSAueS5pbiBmaWxlcy4KKwogMjAxMi0xMC0xNSAg
Q2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAg
IFtFRkxdIFByb3ZpZGUgbG9nZ2luZyBmb3IgT25saW5lU3RhdGUgZGV0ZWN0aW9uIGNvZGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKaW5kZXggZTg2MWQ4MDc0OGNlNTk1NjRmYjI2YzY2MGIxZTA5NTcyZGQy
ZjA4ZC4uZTY0OWYwOWNkMTJlYzc4YmIyZGMwYTU2MTkyOTc1MDMzYjUzMzI2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKQEAgLTI4NTcsMTEgKzI4NTcsMTEgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9Vc2VyQWdlbnRTdHlsZVNoZWV0
c0QKIEFERF9TT1VSQ0VfV0VCQ09SRV9ERVJJVkVEX0RFUEVOREVOQ0lFUygke1dFQkNPUkVfRElS
fS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgVXNlckFnZW50U3R5bGVTaGVldHNEYXRhLmNwcCBVc2Vy
QWdlbnRTdHlsZVNoZWV0cy5oKQogCiAKLUdFTkVSQVRFX0dSQU1NQVIoY3NzeXkgJHtXRUJDT1JF
X0RJUn0vY3NzL0NTU0dyYW1tYXIueSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vQ1NT
R3JhbW1hci5oICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9DU1NHcmFtbWFyLmNwcCkK
K0dFTkVSQVRFX0dSQU1NQVIoY3NzeXkgJHtXRUJDT1JFX0RJUn0vY3NzL0NTU0dyYW1tYXIueS5p
biAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vQ1NTR3JhbW1hci5oICR7REVSSVZFRF9T
T1VSQ0VTX1dFQkNPUkVfRElSfS9DU1NHcmFtbWFyLmNwcCAiJHtGRUFUVVJFX0RFRklORVNfV0lU
SF9TUEFDRV9TRVBBUkFUT1J9IikKIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke0RFUklW
RURfU09VUkNFU19XRUJDT1JFX0RJUn0vQ1NTR3JhbW1hci5jcHApCiAKIAotR0VORVJBVEVfR1JB
TU1BUih4cGF0aHl5ICR7V0VCQ09SRV9ESVJ9L3htbC9YUGF0aEdyYW1tYXIueSAke0RFUklWRURf
U09VUkNFU19XRUJDT1JFX0RJUn0vWFBhdGhHcmFtbWFyLmggJHtERVJJVkVEX1NPVVJDRVNfV0VC
Q09SRV9ESVJ9L1hQYXRoR3JhbW1hci5jcHApCitHRU5FUkFURV9HUkFNTUFSKHhwYXRoeXkgJHtX
RUJDT1JFX0RJUn0veG1sL1hQYXRoR3JhbW1hci55ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVf
RElSfS9YUGF0aEdyYW1tYXIuaCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vWFBhdGhH
cmFtbWFyLmNwcCAiIikKIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke0RFUklWRURfU09V
UkNFU19XRUJDT1JFX0RJUn0vWFBhdGhHcmFtbWFyLmNwcCkKIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQppbmRleCA0YzE5OWM0NjZhMDJhYjAyY2NhN2Q1ODczYzE3OTNjNDExNzY3OWRh
Li45YTk3YzE3YzY5MWEzMzZhZjk3Zjk2ZTU3MzRmNDdhYThlNjRjYzlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKQEAgLTc4MSwzMiArNzgxLDE0IEBAIGVuZGlmCiAjIC0tLS0tLS0t
CiAKICMgQ1NTIGdyYW1tYXIKLSMgTk9URTogT2xkZXIgdmVyc2lvbnMgb2YgYmlzb24gZG8gbm90
IGluamVjdCBhbiBpbmNsdXNpb24gZ3VhcmQsIHNvIHdlIGFkZCBvbmUuCi0KLUNTU0dyYW1tYXIu
Y3BwIDogY3NzL0NTU0dyYW1tYXIueQotCSQoQklTT04pIC1kIC1wIGNzc3l5ICQ8IC1vICRACi0J
dG91Y2ggQ1NTR3JhbW1hci5jcHAuaAotCXRvdWNoIENTU0dyYW1tYXIuaHBwCi0JZWNobyAnI2lm
bmRlZiBDU1NHcmFtbWFyX2gnID4gQ1NTR3JhbW1hci5oCi0JZWNobyAnI2RlZmluZSBDU1NHcmFt
bWFyX2gnID4+IENTU0dyYW1tYXIuaAotCWNhdCBDU1NHcmFtbWFyLmNwcC5oIENTU0dyYW1tYXIu
aHBwID4+IENTU0dyYW1tYXIuaAotCWVjaG8gJyNlbmRpZicgPj4gQ1NTR3JhbW1hci5oCi0Jcm0g
LWYgQ1NTR3JhbW1hci5jcHAuaCBDU1NHcmFtbWFyLmhwcAorQ1NTR3JhbW1hci5jcHAgOiBjc3Mv
Q1NTR3JhbW1hci55LmluCisJcGVybCAtSSAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMgJChX
ZWJDb3JlKS9jc3MvbWFrZWdyYW1tYXIucGwgLS1leHRyYURlZmluZXMgIiQoRkVBVFVSRV9ERUZJ
TkVTKSIgLS1vdXRwdXREaXIgLiAtLWJpc29uICIkKEJJU09OKSIgLS1zeW1ib2xzUHJlZml4IGNz
c3l5ICQ8CiAKICMgLS0tLS0tLS0KIAogIyBYUGF0aCBncmFtbWFyCi0jIE5PVEU6IE9sZGVyIHZl
cnNpb25zIG9mIGJpc29uIGRvIG5vdCBpbmplY3QgYW4gaW5jbHVzaW9uIGd1YXJkLCBzbyB3ZSBh
ZGQgb25lLgotCiBYUGF0aEdyYW1tYXIuY3BwIDogeG1sL1hQYXRoR3JhbW1hci55ICQoUFJPSkVD
VF9GSUxFKQotCSQoQklTT04pIC1kIC1wIHhwYXRoeXkgJDwgLW8gJEAKLQl0b3VjaCBYUGF0aEdy
YW1tYXIuY3BwLmgKLQl0b3VjaCBYUGF0aEdyYW1tYXIuaHBwCi0JZWNobyAnI2lmbmRlZiBYUGF0
aEdyYW1tYXJfaCcgPiBYUGF0aEdyYW1tYXIuaAotCWVjaG8gJyNkZWZpbmUgWFBhdGhHcmFtbWFy
X2gnID4+IFhQYXRoR3JhbW1hci5oCi0JY2F0IFhQYXRoR3JhbW1hci5jcHAuaCBYUGF0aEdyYW1t
YXIuaHBwID4+IFhQYXRoR3JhbW1hci5oCi0JZWNobyAnI2VuZGlmJyA+PiBYUGF0aEdyYW1tYXIu
aAotCXJtIC1mIFhQYXRoR3JhbW1hci5jcHAuaCBYUGF0aEdyYW1tYXIuaHBwCisJcGVybCAkKFdl
YkNvcmUpL2Nzcy9tYWtlZ3JhbW1hci5wbCAtLW91dHB1dERpciAuIC0tYmlzb24gIiQoQklTT04p
IiAtLXN5bWJvbHNQcmVmaXggeHBhdGh5eSAkPAogCiAjIC0tLS0tLS0tCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLnByaQppbmRleCA4NGM5ZDA3NzcxZWQxYTE3NDU2NjcyZTI3MWUzMzFiY2E0ZTY4
NThlLi44MTBhZGVkOGE1YmU0MWI5NjI5YWQyODAwZjVhOGZmYjcyYTFlMmRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMucHJpCkBAIC0yNCw3ICsyNCw3IEBAIFNWR19OQU1FUyA9ICQkUFdEL3N2
Zy9zdmd0YWdzLmluCiAKIFhMSU5LX05BTUVTID0gJCRQV0Qvc3ZnL3hsaW5rYXR0cnMuaW4KIAot
Q1NTQklTT04gPSAkJFBXRC9jc3MvQ1NTR3JhbW1hci55CitDU1NCSVNPTiA9ICQkUFdEL2Nzcy9D
U1NHcmFtbWFyLnkuaW4KIAogZW5hYmxlPyhYU0xUKSB7CiAgICAgWE1MVklFV0VSX0NTUyA9ICQk
UFdEL3htbC9YTUxWaWV3ZXIuY3NzCkBAIC04MDQsNyArODA0LDcgQEAgR0VORVJBVE9SUyArPSBJ
bmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZQogY3NzYmlzb24ub3V0cHV0ID0gJHtRTUFL
RV9GSUxFX0JBU0V9LmNwcAogY3NzYmlzb24uaW5wdXQgPSBDU1NCSVNPTgogY3NzYmlzb24uc2Ny
aXB0ID0gJCRQV0QvY3NzL21ha2VncmFtbWFyLnBsCi1jc3NiaXNvbi5jb21tYW5kcyA9IHBlcmwg
JCRjc3NiaXNvbi5zY3JpcHQgJHtRTUFLRV9GSUxFX05BTUV9ICR7UU1BS0VfRlVOQ19GSUxFX09V
VF9QQVRIfS8ke1FNQUtFX0ZJTEVfQkFTRX0KK2Nzc2Jpc29uLmNvbW1hbmRzID0gcGVybCAtSSAk
JFBXRC9iaW5kaW5ncy9zY3JpcHRzICQkY3NzYmlzb24uc2NyaXB0IC0tb3V0cHV0RGlyICR7UU1B
S0VfRlVOQ19GSUxFX09VVF9QQVRIfSAtLWV4dHJhRGVmaW5lcyBcIiQke0RFRklORVN9ICQkY29u
ZmlnRGVmaW5lcygpXCIgLS1wcmVwcm9jZXNzb3IgXCIkJHtRTUFLRV9NT0N9IC1FXCIgLS1zeW1i
b2xzUHJlZml4IGNzc3l5ICR7UU1BS0VfRklMRV9OQU1FfQogY3NzYmlzb24uZGVwZW5kcyA9ICR7
UU1BS0VfRklMRV9OQU1FfQogR0VORVJBVE9SUyArPSBjc3NiaXNvbgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCmluZGV4IDVjZTg1OTVhMGYyMjE1ZjczYjYwZmZkYzEzZDVmZWY3MTExOTg5YjguLjBkYWM0
M2MwNTI3ZDNmYjYyYzk2NTRiNjNmNzE5ODY5ZjcxZTkwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
CkBAIC0yMDAsMTggKzIwMCwxMCBAQCBmZWF0dXJlX2RlZmluZXNfb3ZlcnJpZGVzICs9IEVOQUJM
RV9NRURJQV9TVFJFQU09MAogZW5kaWYgIyBFTkQgRU5BQkxFX01FRElBX1NUUkVBTQogCiAjIFhQ
YXRoIGdyYW1tYXIKLSMgTk9URTogb2xkZXIgdmVyc2lvbnMgb2YgYmlzb24gZG8gbm90IGluamVj
dCBhbiBpbmNsdXNpb24gZ3VhcmQsIHNvIHdlIGRvIGl0CiAkKEdFTlNPVVJDRVNfV0VCQ09SRSkv
WFBhdGhHcmFtbWFyLmg6ICQoR0VOU09VUkNFU19XRUJDT1JFKS9YUGF0aEdyYW1tYXIuY3BwCiAk
KEdFTlNPVVJDRVNfV0VCQ09SRSkvWFBhdGhHcmFtbWFyLmNwcDogJChXZWJDb3JlKS94bWwvWFBh
dGhHcmFtbWFyLnkKIAkkKEFNX1ZfR0VOKQotCSQoQU1fVl9hdClybSAtZiAkKEdFTlNPVVJDRVNf
V0VCQ09SRSkvWFBhdGhHcmFtbWFyLmNwcC5oICQoR0VOU09VUkNFU19XRUJDT1JFKS9YUGF0aEdy
YW1tYXIuaHBwCi0JJChBTV9WX2F0KSQoQklTT04pIC1kIC1wIHhwYXRoeXkgJDwgLW8gJChHRU5T
T1VSQ0VTX1dFQkNPUkUpL1hQYXRoR3JhbW1hci5jcHAKLQkkKEFNX1ZfYXQpdG91Y2ggJChHRU5T
T1VSQ0VTX1dFQkNPUkUpL1hQYXRoR3JhbW1hci5jcHAuaCAkKEdFTlNPVVJDRVNfV0VCQ09SRSkv
WFBhdGhHcmFtbWFyLmhwcAotCSQoQU1fVl9hdCllY2hvICcjaWZuZGVmIFhQYXRoR3JhbW1hcl9o
JyA+ICQoR0VOU09VUkNFU19XRUJDT1JFKS9YUGF0aEdyYW1tYXIuaAotCSQoQU1fVl9hdCllY2hv
ICcjZGVmaW5lIFhQYXRoR3JhbW1hcl9oJyA+PiAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvWFBhdGhH
cmFtbWFyLmgKLQkkKEFNX1ZfYXQpY2F0ICQoR0VOU09VUkNFU19XRUJDT1JFKS9YUGF0aEdyYW1t
YXIuY3BwLmggJChHRU5TT1VSQ0VTX1dFQkNPUkUpL1hQYXRoR3JhbW1hci5ocHAgPj4gJChHRU5T
T1VSQ0VTX1dFQkNPUkUpL1hQYXRoR3JhbW1hci5oCi0JJChBTV9WX2F0KWVjaG8gJyNlbmRpZicg
Pj4gJChHRU5TT1VSQ0VTX1dFQkNPUkUpL1hQYXRoR3JhbW1hci5oCi0JJChBTV9WX2F0KXJtIC1m
ICQoR0VOU09VUkNFU19XRUJDT1JFKS9YUGF0aEdyYW1tYXIuY3BwLmggJChHRU5TT1VSQ0VTX1dF
QkNPUkUpL1hQYXRoR3JhbW1hci5ocHAKKwkkKEFNX1ZfYXQpcGVybCAkKFdlYkNvcmUpL2Nzcy9t
YWtlZ3JhbW1hci5wbCAtLW91dHB1dERpciAkKEdFTlNPVVJDRVNfV0VCQ09SRSkgLS1iaXNvbiAi
JChCSVNPTikiIC0tc3ltYm9sc1ByZWZpeCB4cGF0aHl5ICQ8CiAKICMgLS0tLQogIyBYU0xUIFN1
cHBvcnQKQEAgLTQxOCwxOCArNDEwLDEwIEBAIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29sb3JE
YXRhLmNwcDogJChXZWJDb3JlKS9wbGF0Zm9ybS9Db2xvckRhdGEuZ3BlcmYgJChXZWJDCiAKICMg
Q1NTIGdyYW1tYXIKIAotIyBOT1RFOiBvbGRlciB2ZXJzaW9ucyBvZiBiaXNvbiBkbyBub3QgaW5q
ZWN0IGFuIGluY2x1c2lvbiBndWFyZCwgc28gd2UgZG8gaXQKIERlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvQ1NTR3JhbW1hci5oOiAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvQ1NTR3JhbW1hci5jcHAKLURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTR3JhbW1hci5jcHA6ICQoV2ViQ29yZSkvY3NzL0NTU0dy
YW1tYXIueQorRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NHcmFtbWFyLmNwcDogJChXZWJDb3Jl
KS9jc3MvQ1NTR3JhbW1hci55LmluCiAJJChBTV9WX0dFTikKLQkkKEFNX1ZfYXQpcm0gLWYgJChH
RU5TT1VSQ0VTX1dFQkNPUkUpL0NTU0dyYW1tYXIuY3BwLmggJChHRU5TT1VSQ0VTX1dFQkNPUkUp
L0NTU0dyYW1tYXIuaHBwCi0JJChBTV9WX2F0KSQoQklTT04pIC1kIC1wIGNzc3l5ICQ8IC1vICQo
R0VOU09VUkNFU19XRUJDT1JFKS9DU1NHcmFtbWFyLmNwcAotCSQoQU1fVl9hdCl0b3VjaCAkKEdF
TlNPVVJDRVNfV0VCQ09SRSkvQ1NTR3JhbW1hci5jcHAuaCAkKEdFTlNPVVJDRVNfV0VCQ09SRSkv
Q1NTR3JhbW1hci5ocHAKLQkkKEFNX1ZfYXQpZWNobyAnI2lmbmRlZiBDU1NHcmFtbWFyX2gnID4g
JChHRU5TT1VSQ0VTX1dFQkNPUkUpL0NTU0dyYW1tYXIuaAotCSQoQU1fVl9hdCllY2hvICcjZGVm
aW5lIENTU0dyYW1tYXJfaCcgPj4gJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0NTU0dyYW1tYXIuaAot
CSQoQU1fVl9hdCljYXQgJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0NTU0dyYW1tYXIuY3BwLmggJChH
RU5TT1VSQ0VTX1dFQkNPUkUpL0NTU0dyYW1tYXIuaHBwID4+ICQoR0VOU09VUkNFU19XRUJDT1JF
KS9DU1NHcmFtbWFyLmgKLQkkKEFNX1ZfYXQpZWNobyAnI2VuZGlmJyA+PiAkKEdFTlNPVVJDRVNf
V0VCQ09SRSkvQ1NTR3JhbW1hci5oCi0JJChBTV9WX2F0KXJtIC1mICQoR0VOU09VUkNFU19XRUJD
T1JFKS9DU1NHcmFtbWFyLmNwcC5oICQoR0VOU09VUkNFU19XRUJDT1JFKS9DU1NHcmFtbWFyLmhw
cAorCSQoQU1fVl9hdClwZXJsIC1JICQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cyAkKFdlYkNv
cmUpL2Nzcy9tYWtlZ3JhbW1hci5wbCAtLWV4dHJhRGVmaW5lcyAiJChmZWF0dXJlX2RlZmluZXMp
IiAtLW91dHB1dERpciAkKEdFTlNPVVJDRVNfV0VCQ09SRSkgLS1iaXNvbiAiJChCSVNPTikiIC0t
c3ltYm9sc1ByZWZpeCBjc3N5eSAkPAogCiAjIHVzZXIgYWdlbnQgc3R5bGUgc2hlZXRzCiBVU0VS
X0FHRU5UX1NUWUxFX1NIRUVUUyA9IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5n
eXAKaW5kZXggMDI0YWVhZDYxNDBjZjYwNmM3NDVmZGM1ZjhmZDNlMGY3NzVhMDg0MC4uMjI2OWJl
NzJjZjMzOTUwMTU4YWVlOWQ3ZjlhZmE0ZWQwYmEzOTRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXAvV2ViQ29yZS5neXAKQEAgLTU4NSw3ICs1ODUsNyBAQAogICAgICAgfSwKICAgICAgICdz
b3VyY2VzJzogWwogICAgICAgICAjIGJpc29uIHJ1bGUKLSAgICAgICAgJy4uL2Nzcy9DU1NHcmFt
bWFyLnknLAorICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0L0NTU0dy
YW1tYXIueScsCiAgICAgICAgICcuLi94bWwvWFBhdGhHcmFtbWFyLnknLAogCiAgICAgICAgICMg
Z3BlcmYgcnVsZQpAQCAtMTA3Niw2ICsxMDc2LDI5IEBACiAgICAgICAgICAgICAnPEAoZGVyaXZl
ZF9zb3VyY2VzX2FnZ3JlZ2F0ZV9maWxlcyknLAogICAgICAgICAgIF0sCiAgICAgICAgIH0sCisg
ICAgICAgIHsKKyAgICAgICAgICAnYWN0aW9uX25hbWUnOiAncHJlcHJvY2Vzc19ncmFtbWFyJywK
KyAgICAgICAgICAnaW5wdXRzJzogWworICAgICAgICAgICAgJy4uL2Nzcy9DU1NHcmFtbWFyLnku
aW4nLAorICAgICAgICAgICAgJy4uL2Nzcy9DU1NHcmFtbWFyLnkuaW5jbHVkZXMnLAorICAgICAg
ICAgIF0sCisgICAgICAgICAgJ291dHB1dHMnOiBbCisgICAgICAgICAgICAnPChTSEFSRURfSU5U
RVJNRURJQVRFX0RJUikvd2Via2l0L0NTU0dyYW1tYXIueScsCisgICAgICAgICAgXSwKKyAgICAg
ICAgICAnYWN0aW9uJzogWworICAgICAgICAgICAgJzwocGVybF9leGUpJywKKyAgICAgICAgICAg
ICctSScsCisgICAgICAgICAgICAnLi4vYmluZGluZ3Mvc2NyaXB0cycsCisgICAgICAgICAgICAn
Li4vY3NzL21ha2VncmFtbWFyLnBsJywKKyAgICAgICAgICAgICctLW91dHB1dERpcicsCisgICAg
ICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0LycsCisgICAgICAgICAg
ICAnLS1leHRyYURlZmluZXMnLAorICAgICAgICAgICAgJzwoZmVhdHVyZV9kZWZpbmVzKScsCisg
ICAgICAgICAgICAnLS1wcmVwcm9jZXNzT25seScsCisgICAgICAgICAgICAnPEAocHJlcHJvY2Vz
c29yKScsCisgICAgICAgICAgICAnPEAoX2lucHV0cyknLAorICAgICAgICAgIF0sCisgICAgICAg
IH0sCiAgICAgICBdLAogICAgICAgJ3J1bGVzJzogWwogICAgICAgICAjIFJ1bGVzIHRvIGJ1aWxk
IGRlcml2ZWQgc291cmNlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKaW5kZXggYjFjODMwYzdkYjRjNGQ1MmNhNzI1ZGFiODkxZjA3NDgyMDc1NWQxMC4u
MTc2NWEzM2FkZDYwODE0NjFkN2ViMzc2NWNkODc0MzQ3NDBkYWJlZiAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTM1ODc1LDcgKzM1ODc1LDEx
IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNz
c1xDU1NHcmFtbWFyLnkiCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTR3JhbW1hci55Lmlu
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3Nc
Q1NTR3JhbW1hci55LmluY2x1ZGVzIgogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
ODdlYzgwZjFmZTYyODU1ZjYwOTEzZDcxMTg1YjRkYzA0YmZlODA1NC4uNGIwMzc2ODkyNjMzN2M2
N2I3OTdlZjgyNTQ2MjZjMzg1OGFhZTM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMwMzgsNyArMTMwMzgsNiBAQAogCQlC
Q0U5M0Y0NjE1MTdDNkQ1MDA4Q0NGNzQgLyogUmVuZGVyUmVnaW9uU2V0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclJlZ2lvblNldC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRUE0NzdDMDk3Q0FBQzgwMDk0QzlFNCAvKiBDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDRUE0NzdEMDk3Q0FBQzgwMDk0QzlFNCAvKiBDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQ0VB
NDc3RTA5N0NBQUM4MDA5NEM5RTQgLyogQ1NTR3JhbW1hci55ICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUueWFjYzsgcGF0aCA9IENTU0dyYW1tYXIueTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkNFQTQ3ODkwOTdDQUFDODAwOTRDOUU0IC8qIENTU1Byb3BlcnR5TmFtZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IENTU1Byb3BlcnR5TmFtZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDRUE0NzhDMDk3Q0FBQzgwMDk0QzlFNCAvKiBDU1NWYWx1ZUtleXdvcmRz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDU1NWYWx1ZUtleXdvcmRzLmluOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0VBNDgxMzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVy
QmxvY2tMaW5lTGF5b3V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTM3NzAsNiArMTM3NjksOCBAQAogCQlGQkQ2QUY4NTE1RUYyMUQ0MDA4QjcxMTAgLyogQmFz
aWNTaGFwZUZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYXNp
Y1NoYXBlRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZCRDZBRjg2
MTVFRjIxRDQwMDhCNzExMCAvKiBDU1NCYXNpY1NoYXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDU1NCYXNpY1NoYXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZCRDZBRjg3MTVFRjIxRDQwMDhCNzExMCAvKiBDU1NCYXNpY1NoYXBlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NCYXNpY1NoYXBlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQ0VCQ0Q3MTE2MjNBNzkxMDAyOTk2NUUgLyogQ1NT
R3JhbW1hci55LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS55YWNjOyBwYXRoID0gQ1NTR3JhbW1h
ci55LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQ0VCQ0Q3MjE2MjNBNzkxMDAy
OTk2NUUgLyogQ1NTR3JhbW1hci55LmluY2x1ZGVzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS55YWNj
OyBwYXRoID0gQ1NTR3JhbW1hci55LmluY2x1ZGVzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRDAwRDdBMjE0QTNGNjE5MDA3MzQwMTEgLyogU2luY1Jlc2FtcGxlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaW5jUmVzYW1wbGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkQwMEQ3QTMxNEEzRjYxOTAwNzM0MDExIC8qIFNpbmNS
ZXNhbXBsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2luY1Jlc2FtcGxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDA2REZBMzEzNEE0REVGMDA2RjVE
N0QgLyogRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTE0Niw3ICsyMTE0Nyw4IEBACiAJCQkJQkMwMkE2
M0IwRTA5QTlDRjAwNEI2RDJCIC8qIENTU0Z1bmN0aW9uVmFsdWUuaCAqLywKIAkJCQlCQzIzRTRF
MDBEQUFDRTBGMDA5RkRDOTEgLyogQ1NTR3JhZGllbnRWYWx1ZS5jcHAgKi8sCiAJCQkJQkM1M0M2
OTEwREE1OTExNDAwMjFFQjVEIC8qIENTU0dyYWRpZW50VmFsdWUuaCAqLywKLQkJCQlCQ0VBNDc3
RTA5N0NBQUM4MDA5NEM5RTQgLyogQ1NTR3JhbW1hci55ICovLAorCQkJCUZDRUJDRDcxMTYyM0E3
OTEwMDI5OTY1RSAvKiBDU1NHcmFtbWFyLnkuaW4gKi8sCisJCQkJRkNFQkNENzIxNjIzQTc5MTAw
Mjk5NjVFIC8qIENTU0dyYW1tYXIueS5pbmNsdWRlcyAqLywKIAkJCQlCQzc3MkIzNjBDNEVBOTFF
MDA4MzI4NUYgLyogQ1NTSGVscGVyLmggKi8sCiAJCQkJQkMyM0U3NkIwREFFODhBOTAwOUZEQzkx
IC8qIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwICovLAogCQkJCUJDMjNFRTkxMERBRUQyQkMw
MDlGREM5MSAvKiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlLmggKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1t
YXIueQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGUzNTMzZTNjOWYzYjc5MGQ2Nzlm
OTVmZjBhMWM3OTUxYzE4Yzk1OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CisrKyAvZGV2L251bGwK
QEAgLTEsMTc3MCArMCwwIEBACi0lewotCi0vKgotICogIENvcHlyaWdodCAoQykgMjAwMi0yMDAz
IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlw
b3AuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQu
b3JnPgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLQotI2luY2x1ZGUgIkNTU1BhcnNlci5oIgotI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUu
aCIKLSNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgotI2luY2x1ZGUgIkNTU1Byb3BlcnR5
TmFtZXMuaCIKLSNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgotI2luY2x1ZGUgIkNTU1NlbGVjdG9y
TGlzdC5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0j
aW5jbHVkZSAiTWVkaWFMaXN0LmgiCi0jaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgotI2luY2x1
ZGUgIlN0eWxlUnVsZS5oIgotI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgotI2luY2x1
ZGUgIldlYktpdENTU0tleWZyYW1lUnVsZS5oIgotI2luY2x1ZGUgIldlYktpdENTU0tleWZyYW1l
c1J1bGUuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHN0ZGxpYi5o
PgotI2luY2x1ZGUgPHN0cmluZy5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7Ci0KLSNkZWZpbmUgWVlNQUxMT0MgZmFzdE1hbGxvYwotI2Rl
ZmluZSBZWUZSRUUgZmFzdEZyZWUKLQotI2RlZmluZSBZWUVOQUJMRV9OTFMgMAotI2RlZmluZSBZ
WUxUWVBFX0lTX1RSSVZJQUwgMQotI2RlZmluZSBZWU1BWERFUFRIIDEwMDAwCi0jZGVmaW5lIFlZ
REVCVUcgMAotCi0lfQotCi0lcHVyZV9wYXJzZXIKLQotJXBhcnNlLXBhcmFtIHsgQ1NTUGFyc2Vy
KiBwYXJzZXIgfQotJWxleC1wYXJhbSB7IENTU1BhcnNlciogcGFyc2VyIH0KLQotJXVuaW9uIHsK
LSAgICBib29sIGJvb2xlYW47Ci0gICAgY2hhciBjaGFyYWN0ZXI7Ci0gICAgaW50IGludGVnZXI7
Ci0gICAgZG91YmxlIG51bWJlcjsKLSAgICBDU1NQYXJzZXJTdHJpbmcgc3RyaW5nOwotCi0gICAg
U3R5bGVSdWxlQmFzZSogcnVsZTsKLSAgICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+ID4q
IHJ1bGVMaXN0OwotICAgIENTU1BhcnNlclNlbGVjdG9yKiBzZWxlY3RvcjsKLSAgICBDU1NTZWxl
Y3RvclZlY3Rvciogc2VsZWN0b3JMaXN0OwotICAgIENTU1NlbGVjdG9yOjpNYXJnaW5Cb3hUeXBl
IG1hcmdpbkJveDsKLSAgICBDU1NTZWxlY3Rvcjo6UmVsYXRpb24gcmVsYXRpb247Ci0gICAgTWVk
aWFRdWVyeVNldCogbWVkaWFMaXN0OwotICAgIE1lZGlhUXVlcnkqIG1lZGlhUXVlcnk7Ci0gICAg
TWVkaWFRdWVyeTo6UmVzdHJpY3RvciBtZWRpYVF1ZXJ5UmVzdHJpY3RvcjsKLSAgICBNZWRpYVF1
ZXJ5RXhwKiBtZWRpYVF1ZXJ5RXhwOwotICAgIENTU1BhcnNlclZhbHVlIHZhbHVlOwotICAgIENT
U1BhcnNlclZhbHVlTGlzdCogdmFsdWVMaXN0OwotICAgIFZlY3RvcjxPd25QdHI8TWVkaWFRdWVy
eUV4cD4gPiogbWVkaWFRdWVyeUV4cExpc3Q7Ci0gICAgU3R5bGVLZXlmcmFtZSoga2V5ZnJhbWU7
Ci0gICAgVmVjdG9yPFJlZlB0cjxTdHlsZUtleWZyYW1lPiA+KiBrZXlmcmFtZVJ1bGVMaXN0Owot
ICAgIGZsb2F0IHZhbDsKLSAgICBDU1NQcm9wZXJ0eUlEIGlkOwotfQotCi0lewotCi0jaWYgWVlE
RUJVRyA+IDAKLSNkZWZpbmUgWVlQUklOVChGaWxlLFR5cGUsVmFsdWUpIHByaW50X3Rva2VuX3Zh
bHVlKEZpbGUsVHlwZSxWYWx1ZSkKLXN0YXRpYyB2b2lkIHByaW50X3Rva2VuX3ZhbHVlKEZJTEUg
KiB5eW91dHB1dCwgaW50IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAmeXl2YWx1ZSk7Ci0jZW5kaWYK
LQotc3RhdGljIGlubGluZSBpbnQgY3NzeXllcnJvcih2b2lkKiwgY29uc3QgY2hhciopCi17Ci0g
ICAgcmV0dXJuIDE7Ci19Ci0KLSV9Ci0KLSVleHBlY3QgNjUKLQotJW5vbmFzc29jIExPV0VTVF9Q
UkVDCi0KLSVsZWZ0IFVOSU1QT1JUQU5UX1RPSwotCi0ldG9rZW4gV0hJVEVTUEFDRSBTR01MX0NE
Ci0ldG9rZW4gVE9LRU5fRU9GIDAKLQotJXRva2VuIElOQ0xVREVTCi0ldG9rZW4gREFTSE1BVENI
Ci0ldG9rZW4gQkVHSU5TV0lUSAotJXRva2VuIEVORFNXSVRICi0ldG9rZW4gQ09OVEFJTlMKLQot
JXRva2VuIDxzdHJpbmc+IFNUUklORwotJXJpZ2h0IDxzdHJpbmc+IElERU5UCi0ldG9rZW4gPHN0
cmluZz4gTlRICi0KLSVub25hc3NvYyA8c3RyaW5nPiBIRVgKLSVub25hc3NvYyA8c3RyaW5nPiBJ
RFNFTAotJW5vbmFzc29jICc6JwotJW5vbmFzc29jICcuJwotJW5vbmFzc29jICdbJwotJW5vbmFz
c29jIDxzdHJpbmc+ICcqJwotJW5vbmFzc29jIGVycm9yCi0lbGVmdCAnfCcKLQotJXRva2VuIElN
UE9SVF9TWU0KLSV0b2tlbiBQQUdFX1NZTQotJXRva2VuIE1FRElBX1NZTQotJXRva2VuIEZPTlRf
RkFDRV9TWU0KLSV0b2tlbiBDSEFSU0VUX1NZTQotJXRva2VuIE5BTUVTUEFDRV9TWU0KLSV0b2tl
biBWQVJGVU5DVElPTgotJXRva2VuIFdFQktJVF9SVUxFX1NZTQotJXRva2VuIFdFQktJVF9ERUNM
U19TWU0KLSV0b2tlbiBXRUJLSVRfS0VZRlJBTUVfUlVMRV9TWU0KLSV0b2tlbiBXRUJLSVRfS0VZ
RlJBTUVTX1NZTQotJXRva2VuIFdFQktJVF9WQUxVRV9TWU0KLSV0b2tlbiBXRUJLSVRfTUVESUFR
VUVSWV9TWU0KLSV0b2tlbiBXRUJLSVRfU0VMRUNUT1JfU1lNCi0ldG9rZW4gV0VCS0lUX1JFR0lP
Tl9SVUxFX1NZTQotJXRva2VuIDxtYXJnaW5Cb3g+IFRPUExFRlRDT1JORVJfU1lNCi0ldG9rZW4g
PG1hcmdpbkJveD4gVE9QTEVGVF9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBUT1BDRU5URVJfU1lN
Ci0ldG9rZW4gPG1hcmdpbkJveD4gVE9QUklHSFRfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gVE9Q
UklHSFRDT1JORVJfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gQk9UVE9NTEVGVENPUk5FUl9TWU0K
LSV0b2tlbiA8bWFyZ2luQm94PiBCT1RUT01MRUZUX1NZTQotJXRva2VuIDxtYXJnaW5Cb3g+IEJP
VFRPTUNFTlRFUl9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBCT1RUT01SSUdIVF9TWU0KLSV0b2tl
biA8bWFyZ2luQm94PiBCT1RUT01SSUdIVENPUk5FUl9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBM
RUZUVE9QX1NZTQotJXRva2VuIDxtYXJnaW5Cb3g+IExFRlRNSURETEVfU1lNCi0ldG9rZW4gPG1h
cmdpbkJveD4gTEVGVEJPVFRPTV9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBSSUdIVFRPUF9TWU0K
LSV0b2tlbiA8bWFyZ2luQm94PiBSSUdIVE1JRERMRV9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBS
SUdIVEJPVFRPTV9TWU0KLQotJXRva2VuIEFUS0VZV09SRAotCi0ldG9rZW4gSU1QT1JUQU5UX1NZ
TQotJXRva2VuIE1FRElBX09OTFkKLSV0b2tlbiBNRURJQV9OT1QKLSV0b2tlbiBNRURJQV9BTkQK
LQotJXRva2VuIDxudW1iZXI+IFJFTVMKLSV0b2tlbiA8bnVtYmVyPiBRRU1TCi0ldG9rZW4gPG51
bWJlcj4gRU1TCi0ldG9rZW4gPG51bWJlcj4gRVhTCi0ldG9rZW4gPG51bWJlcj4gUFhTCi0ldG9r
ZW4gPG51bWJlcj4gQ01TCi0ldG9rZW4gPG51bWJlcj4gTU1TCi0ldG9rZW4gPG51bWJlcj4gSU5T
Ci0ldG9rZW4gPG51bWJlcj4gUFRTCi0ldG9rZW4gPG51bWJlcj4gUENTCi0ldG9rZW4gPG51bWJl
cj4gREVHUwotJXRva2VuIDxudW1iZXI+IFJBRFMKLSV0b2tlbiA8bnVtYmVyPiBHUkFEUwotJXRv
a2VuIDxudW1iZXI+IFRVUk5TCi0ldG9rZW4gPG51bWJlcj4gTVNFQ1MKLSV0b2tlbiA8bnVtYmVy
PiBTRUNTCi0ldG9rZW4gPG51bWJlcj4gSEVSVFoKLSV0b2tlbiA8bnVtYmVyPiBLSEVSVFoKLSV0
b2tlbiA8c3RyaW5nPiBESU1FTgotJXRva2VuIDxzdHJpbmc+IElOVkFMSURESU1FTgotJXRva2Vu
IDxudW1iZXI+IFBFUkNFTlRBR0UKLSV0b2tlbiA8bnVtYmVyPiBGTE9BVFRPS0VOCi0ldG9rZW4g
PG51bWJlcj4gSU5URUdFUgotJXRva2VuIDxudW1iZXI+IFZXCi0ldG9rZW4gPG51bWJlcj4gVkgK
LSV0b2tlbiA8bnVtYmVyPiBWTUlOCi0ldG9rZW4gPG51bWJlcj4gRFBQWAotJXRva2VuIDxudW1i
ZXI+IERQSQotJXRva2VuIDxudW1iZXI+IERQQ00KLQotJXRva2VuIDxzdHJpbmc+IFVSSQotJXRv
a2VuIDxzdHJpbmc+IEZVTkNUSU9OCi0ldG9rZW4gPHN0cmluZz4gQU5ZRlVOQ1RJT04KLSV0b2tl
biA8c3RyaW5nPiBOT1RGVU5DVElPTgotJXRva2VuIDxzdHJpbmc+IENBTENGVU5DVElPTgotJXRv
a2VuIDxzdHJpbmc+IE1JTkZVTkNUSU9OCi0ldG9rZW4gPHN0cmluZz4gTUFYRlVOQ1RJT04KLSV0
b2tlbiA8c3RyaW5nPiBWQVJfREVGSU5JVElPTgotCi0ldG9rZW4gPHN0cmluZz4gVU5JQ09ERVJB
TkdFCi0KLSV0eXBlIDxyZWxhdGlvbj4gY29tYmluYXRvcgotCi0ldHlwZSA8cnVsZT4gY2hhcnNl
dAotJXR5cGUgPHJ1bGU+IGlnbm9yZWRfY2hhcnNldAotJXR5cGUgPHJ1bGU+IHJ1bGVzZXQKLSV0
eXBlIDxydWxlPiBtZWRpYQotJXR5cGUgPHJ1bGU+IGltcG9ydAotJXR5cGUgPHJ1bGU+IG5hbWVz
cGFjZQotJXR5cGUgPHJ1bGU+IHBhZ2UKLSV0eXBlIDxydWxlPiBtYXJnaW5fYm94Ci0ldHlwZSA8
cnVsZT4gZm9udF9mYWNlCi0ldHlwZSA8cnVsZT4ga2V5ZnJhbWVzCi0ldHlwZSA8cnVsZT4gaW52
YWxpZF9ydWxlCi0ldHlwZSA8cnVsZT4gc2F2ZV9ibG9jawotJXR5cGUgPHJ1bGU+IGludmFsaWRf
YXQKLSV0eXBlIDxydWxlPiBydWxlCi0ldHlwZSA8cnVsZT4gdmFsaWRfcnVsZQotJXR5cGUgPHJ1
bGVMaXN0PiBibG9ja19ydWxlX2xpc3QgCi0ldHlwZSA8cnVsZT4gYmxvY2tfcnVsZQotJXR5cGUg
PHJ1bGU+IGJsb2NrX3ZhbGlkX3J1bGUKLSV0eXBlIDxydWxlPiByZWdpb24KLQotJXR5cGUgPHN0
cmluZz4gbWF5YmVfbnNfcHJlZml4Ci0KLSV0eXBlIDxzdHJpbmc+IG5hbWVzcGFjZV9zZWxlY3Rv
cgotCi0ldHlwZSA8c3RyaW5nPiBzdHJpbmdfb3JfdXJpCi0ldHlwZSA8c3RyaW5nPiBpZGVudF9v
cl9zdHJpbmcKLSV0eXBlIDxzdHJpbmc+IG1lZGl1bQotJXR5cGUgPG1hcmdpbkJveD4gbWFyZ2lu
X3N5bQotCi0ldHlwZSA8c3RyaW5nPiBtZWRpYV9mZWF0dXJlCi0ldHlwZSA8bWVkaWFMaXN0PiBt
ZWRpYV9saXN0Ci0ldHlwZSA8bWVkaWFMaXN0PiBtYXliZV9tZWRpYV9saXN0Ci0ldHlwZSA8bWVk
aWFRdWVyeT4gbWVkaWFfcXVlcnkKLSV0eXBlIDxtZWRpYVF1ZXJ5UmVzdHJpY3Rvcj4gbWF5YmVf
bWVkaWFfcmVzdHJpY3RvcgotJXR5cGUgPHZhbHVlTGlzdD4gbWF5YmVfbWVkaWFfdmFsdWUKLSV0
eXBlIDxtZWRpYVF1ZXJ5RXhwPiBtZWRpYV9xdWVyeV9leHAKLSV0eXBlIDxtZWRpYVF1ZXJ5RXhw
TGlzdD4gbWVkaWFfcXVlcnlfZXhwX2xpc3QKLSV0eXBlIDxtZWRpYVF1ZXJ5RXhwTGlzdD4gbWF5
YmVfYW5kX21lZGlhX3F1ZXJ5X2V4cF9saXN0Ci0KLSV0eXBlIDxzdHJpbmc+IGtleWZyYW1lX25h
bWUKLSV0eXBlIDxrZXlmcmFtZT4ga2V5ZnJhbWVfcnVsZQotJXR5cGUgPGtleWZyYW1lUnVsZUxp
c3Q+IGtleWZyYW1lc19ydWxlCi0ldHlwZSA8dmFsdWVMaXN0PiBrZXlfbGlzdAotJXR5cGUgPHZh
bHVlPiBrZXkKLQotJXR5cGUgPGlkPiBwcm9wZXJ0eQotCi0ldHlwZSA8c2VsZWN0b3I+IHNwZWNp
ZmllcgotJXR5cGUgPHNlbGVjdG9yPiBzcGVjaWZpZXJfbGlzdAotJXR5cGUgPHNlbGVjdG9yPiBz
aW1wbGVfc2VsZWN0b3IKLSV0eXBlIDxzZWxlY3Rvcj4gc2VsZWN0b3IKLSV0eXBlIDxzZWxlY3Rv
ckxpc3Q+IHNlbGVjdG9yX2xpc3QKLSV0eXBlIDxzZWxlY3Rvckxpc3Q+IHNpbXBsZV9zZWxlY3Rv
cl9saXN0Ci0ldHlwZSA8c2VsZWN0b3JMaXN0PiByZWdpb25fc2VsZWN0b3IKLSV0eXBlIDxzZWxl
Y3Rvcj4gc2VsZWN0b3Jfd2l0aF90cmFpbGluZ193aGl0ZXNwYWNlCi0ldHlwZSA8c2VsZWN0b3I+
IGNsYXNzCi0ldHlwZSA8c2VsZWN0b3I+IGF0dHJpYgotJXR5cGUgPHNlbGVjdG9yPiBwc2V1ZG8K
LSV0eXBlIDxzZWxlY3Rvcj4gcHNldWRvX3BhZ2UKLSV0eXBlIDxzZWxlY3Rvcj4gcGFnZV9zZWxl
Y3RvcgotCi0ldHlwZSA8Ym9vbGVhbj4gZGVjbGFyYXRpb25fbGlzdAotJXR5cGUgPGJvb2xlYW4+
IGRlY2xfbGlzdAotJXR5cGUgPGJvb2xlYW4+IGRlY2xhcmF0aW9uCi0ldHlwZSA8Ym9vbGVhbj4g
ZGVjbGFyYXRpb25zX2FuZF9tYXJnaW5zCi0KLSV0eXBlIDxib29sZWFuPiBwcmlvCi0KLSV0eXBl
IDxpbnRlZ2VyPiBtYXRjaAotJXR5cGUgPGludGVnZXI+IHVuYXJ5X29wZXJhdG9yCi0ldHlwZSA8
aW50ZWdlcj4gbWF5YmVfdW5hcnlfb3BlcmF0b3IKLSV0eXBlIDxjaGFyYWN0ZXI+IG9wZXJhdG9y
Ci0KLSV0eXBlIDx2YWx1ZUxpc3Q+IGV4cHIKLSV0eXBlIDx2YWx1ZT4gdGVybQotJXR5cGUgPHZh
bHVlPiB1bmFyeV90ZXJtCi0ldHlwZSA8dmFsdWU+IGZ1bmN0aW9uCi0ldHlwZSA8dmFsdWU+IGNh
bGNfZnVuY190ZXJtCi0ldHlwZSA8Y2hhcmFjdGVyPiBjYWxjX2Z1bmNfb3BlcmF0b3IKLSV0eXBl
IDx2YWx1ZUxpc3Q+IGNhbGNfZnVuY19leHByCi0ldHlwZSA8dmFsdWVMaXN0PiBjYWxjX2Z1bmNf
ZXhwcl9saXN0Ci0ldHlwZSA8dmFsdWVMaXN0PiBjYWxjX2Z1bmNfcGFyZW5fZXhwcgotJXR5cGUg
PHZhbHVlPiBjYWxjX2Z1bmN0aW9uCi0ldHlwZSA8c3RyaW5nPiBtaW5fb3JfbWF4Ci0ldHlwZSA8
dmFsdWU+IG1pbl9vcl9tYXhfZnVuY3Rpb24KLQotJXR5cGUgPHN0cmluZz4gZWxlbWVudF9uYW1l
Ci0ldHlwZSA8c3RyaW5nPiBhdHRyX25hbWUKLQotJSUKLQotc3R5bGVzaGVldDoKLSAgICBtYXli
ZV9zcGFjZSBtYXliZV9jaGFyc2V0IG1heWJlX3NnbWwgcnVsZV9saXN0Ci0gIHwgd2Via2l0X3J1
bGUgbWF5YmVfc3BhY2UKLSAgfCB3ZWJraXRfZGVjbHMgbWF5YmVfc3BhY2UKLSAgfCB3ZWJraXRf
dmFsdWUgbWF5YmVfc3BhY2UKLSAgfCB3ZWJraXRfbWVkaWFxdWVyeSBtYXliZV9zcGFjZQotICB8
IHdlYmtpdF9zZWxlY3RvciBtYXliZV9zcGFjZQotICB8IHdlYmtpdF9rZXlmcmFtZV9ydWxlIG1h
eWJlX3NwYWNlCi0gIDsKLQotd2Via2l0X3J1bGU6Ci0gICAgV0VCS0lUX1JVTEVfU1lNICd7JyBt
YXliZV9zcGFjZSB2YWxpZF9ydWxlIG1heWJlX3NwYWNlICd9JyB7Ci0gICAgICAgIHBhcnNlci0+
bV9ydWxlID0gJDQ7Ci0gICAgfQotOwotCi13ZWJraXRfa2V5ZnJhbWVfcnVsZToKLSAgICBXRUJL
SVRfS0VZRlJBTUVfUlVMRV9TWU0gJ3snIG1heWJlX3NwYWNlIGtleWZyYW1lX3J1bGUgbWF5YmVf
c3BhY2UgJ30nIHsKLSAgICAgICAgcGFyc2VyLT5tX2tleWZyYW1lID0gJDQ7Ci0gICAgfQotOwot
Ci13ZWJraXRfZGVjbHM6Ci0gICAgV0VCS0lUX0RFQ0xTX1NZTSAneycgbWF5YmVfc3BhY2VfYmVm
b3JlX2RlY2xhcmF0aW9uIGRlY2xhcmF0aW9uX2xpc3QgJ30nIHsKLSAgICAgICAgLyogY2FuIGJl
IGVtcHR5ICovCi0gICAgfQotOwotCi13ZWJraXRfdmFsdWU6Ci0gICAgV0VCS0lUX1ZBTFVFX1NZ
TSAneycgbWF5YmVfc3BhY2UgZXhwciAnfScgewotICAgICAgICBpZiAoJDQpIHsKLSAgICAgICAg
ICAgIHBhcnNlci0+bV92YWx1ZUxpc3QgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgk
NCk7Ci0gICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHBhcnNlci0+bV9wYXJz
ZWRQcm9wZXJ0aWVzLT5zaXplKCk7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlci0+cGFyc2VWYWx1
ZShwYXJzZXItPm1faWQsIHBhcnNlci0+bV9pbXBvcnRhbnQpKQotICAgICAgICAgICAgICAgIHBh
cnNlci0+cm9sbGJhY2tMYXN0UHJvcGVydGllcyhwYXJzZXItPm1fcGFyc2VkUHJvcGVydGllcy0+
c2l6ZSgpIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7Ci0gICAgICAgICAgICBwYXJzZXItPm1fdmFs
dWVMaXN0ID0gbnVsbHB0cjsKLSAgICAgICAgfQotICAgIH0KLTsKLQotd2Via2l0X21lZGlhcXVl
cnk6Ci0gICAgIFdFQktJVF9NRURJQVFVRVJZX1NZTSBXSElURVNQQUNFIG1heWJlX3NwYWNlIG1l
ZGlhX3F1ZXJ5ICd9JyB7Ci0gICAgICAgICBwYXJzZXItPm1fbWVkaWFRdWVyeSA9IHBhcnNlci0+
c2lua0Zsb2F0aW5nTWVkaWFRdWVyeSgkNCk7Ci0gICAgIH0KLTsKLQotd2Via2l0X3NlbGVjdG9y
OgotICAgIFdFQktJVF9TRUxFQ1RPUl9TWU0gJ3snIG1heWJlX3NwYWNlIHNlbGVjdG9yX2xpc3Qg
J30nIHsKLSAgICAgICAgaWYgKCQ0KSB7Ci0gICAgICAgICAgICBpZiAocGFyc2VyLT5tX3NlbGVj
dG9yTGlzdEZvclBhcnNlU2VsZWN0b3IpCi0gICAgICAgICAgICAgICAgcGFyc2VyLT5tX3NlbGVj
dG9yTGlzdEZvclBhcnNlU2VsZWN0b3ItPmFkb3B0U2VsZWN0b3JWZWN0b3IoKiQ0KTsKLSAgICAg
ICAgfQotICAgIH0KLTsKLQotbWF5YmVfc3BhY2U6Ci0gICAgLyogZW1wdHkgKi8gJXByZWMgVU5J
TVBPUlRBTlRfVE9LCi0gIHwgbWF5YmVfc3BhY2UgV0hJVEVTUEFDRQotICA7Ci0KLW1heWJlX3Nn
bWw6Ci0gICAgLyogZW1wdHkgKi8KLSAgfCBtYXliZV9zZ21sIFNHTUxfQ0QKLSAgfCBtYXliZV9z
Z21sIFdISVRFU1BBQ0UKLSAgOwotCi1tYXliZV9jaGFyc2V0OgotICAgLyogZW1wdHkgKi8KLSAg
fCBjaGFyc2V0IHsKLSAgfQotICA7Ci0KLWNsb3NpbmdfYnJhY2U6Ci0gICAgJ30nCi0gIHwgJXBy
ZWMgTE9XRVNUX1BSRUMgVE9LRU5fRU9GCi0gIDsKLQotY2hhcnNldDoKLSAgQ0hBUlNFVF9TWU0g
bWF5YmVfc3BhY2UgU1RSSU5HIG1heWJlX3NwYWNlICc7JyB7Ci0gICAgIGlmIChwYXJzZXItPm1f
c3R5bGVTaGVldCkKLSAgICAgICAgIHBhcnNlci0+bV9zdHlsZVNoZWV0LT5wYXJzZXJTZXRFbmNv
ZGluZ0Zyb21DaGFyc2V0UnVsZSgkMyk7Ci0gICAgIGlmIChwYXJzZXItPmlzRXh0cmFjdGluZ1Nv
dXJjZURhdGEoKSAmJiBwYXJzZXItPm1fY3VycmVudFJ1bGVEYXRhU3RhY2stPmlzRW1wdHkoKSAm
JiBwYXJzZXItPm1fcnVsZVNvdXJjZURhdGFSZXN1bHQpCi0gICAgICAgICBwYXJzZXItPmFkZE5l
d1J1bGVUb1NvdXJjZVRyZWUoQ1NTUnVsZVNvdXJjZURhdGE6OmNyZWF0ZVVua25vd24oKSk7Ci0g
ICAgICQkID0gMDsKLSAgfQotICB8IENIQVJTRVRfU1lNIGVycm9yIGludmFsaWRfYmxvY2sgewot
ICB9Ci0gIHwgQ0hBUlNFVF9TWU0gZXJyb3IgJzsnIHsKLSAgfQotOwotCi1pZ25vcmVkX2NoYXJz
ZXQ6Ci0gICAgQ0hBUlNFVF9TWU0gbWF5YmVfc3BhY2UgU1RSSU5HIG1heWJlX3NwYWNlICc7JyB7
Ci0gICAgICAgIC8vIElnbm9yZSBhbnkgQGNoYXJzZXQgcnVsZSBub3QgYXQgdGhlIGJlZ2lubmlu
ZyBvZiB0aGUgc3R5bGUgc2hlZXQuCi0gICAgICAgICQkID0gMDsKLSAgICB9Ci0gICAgfCBDSEFS
U0VUX1NZTSBtYXliZV9zcGFjZSAnOycgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotOwotCi1y
dWxlX2xpc3Q6Ci0gICAvKiBlbXB0eSAqLwotIHwgcnVsZV9saXN0IHJ1bGUgbWF5YmVfc2dtbCB7
Ci0gICAgIGlmICgkMiAmJiBwYXJzZXItPm1fc3R5bGVTaGVldCkKLSAgICAgICAgIHBhcnNlci0+
bV9zdHlsZVNoZWV0LT5wYXJzZXJBcHBlbmRSdWxlKCQyKTsKLSB9Ci0gOwotCi12YWxpZF9ydWxl
OgotICAgIHJ1bGVzZXQKLSAgfCBtZWRpYQotICB8IHBhZ2UKLSAgfCBmb250X2ZhY2UKLSAgfCBr
ZXlmcmFtZXMKLSAgfCBuYW1lc3BhY2UKLSAgfCBpbXBvcnQKLSAgfCByZWdpb24KLSAgOwotCi1y
dWxlOgotICAgIHZhbGlkX3J1bGUgewotICAgICAgICBwYXJzZXItPm1faGFkU3ludGFjdGljYWxs
eVZhbGlkQ1NTUnVsZSA9IHRydWU7Ci0gICAgfQotICB8IGlnbm9yZWRfY2hhcnNldAotICB8IGlu
dmFsaWRfcnVsZQotICB8IGludmFsaWRfYXQKLSAgOwotCi1ibG9ja19ydWxlX2xpc3Q6IAotICAg
IC8qIGVtcHR5ICovIHsgJCQgPSAwOyB9Ci0gIHwgYmxvY2tfcnVsZV9saXN0IGJsb2NrX3J1bGUg
bWF5YmVfc2dtbCB7Ci0gICAgICAkJCA9ICQxOwotICAgICAgaWYgKCQyKSB7Ci0gICAgICAgICAg
aWYgKCEkJCkKLSAgICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZVJ1bGVMaXN0KCk7Ci0g
ICAgICAgICAgJCQtPmFwcGVuZCgkMik7Ci0gICAgICB9Ci0gIH0KLSAgOwotCi1ibG9ja192YWxp
ZF9ydWxlOgotICAgIHJ1bGVzZXQKLSAgfCBwYWdlCi0gIHwgZm9udF9mYWNlCi0gIHwga2V5ZnJh
bWVzCi0gIDsKLQotYmxvY2tfcnVsZToKLSAgICBibG9ja192YWxpZF9ydWxlCi0gIHwgaW52YWxp
ZF9ydWxlCi0gIHwgaW52YWxpZF9hdAotICB8IG5hbWVzcGFjZQotICB8IGltcG9ydAotICB8IG1l
ZGlhCi0gIDsKLQotYXRfaW1wb3J0X2hlYWRlcl9lbmRfbWF5YmVfc3BhY2U6Ci0gICAgbWF5YmVf
c3BhY2UgewotICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyRW5kKCk7Ci0gICAgICAgIHBh
cnNlci0+bWFya1J1bGVCb2R5U3RhcnQoKTsKLSAgICB9Ci0gICAgOwotCi1iZWZvcmVfaW1wb3J0
X3J1bGU6Ci0gICAgLyogZW1wdHkgKi8gewotICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVy
U3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6OklNUE9SVF9SVUxFKTsKLSAgICB9Ci0gICAgOwotCi1p
bXBvcnQ6Ci0gICAgYmVmb3JlX2ltcG9ydF9ydWxlIElNUE9SVF9TWU0gYXRfaW1wb3J0X2hlYWRl
cl9lbmRfbWF5YmVfc3BhY2Ugc3RyaW5nX29yX3VyaSBtYXliZV9zcGFjZSBtYXliZV9tZWRpYV9s
aXN0ICc7JyB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVJbXBvcnRSdWxlKCQ0LCAkNik7
Ci0gICAgfQotICB8IGJlZm9yZV9pbXBvcnRfcnVsZSBJTVBPUlRfU1lNIGF0X2ltcG9ydF9oZWFk
ZXJfZW5kX21heWJlX3NwYWNlIHN0cmluZ19vcl91cmkgbWF5YmVfc3BhY2UgbWF5YmVfbWVkaWFf
bGlzdCBUT0tFTl9FT0YgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlSW1wb3J0UnVsZSgk
NCwgJDYpOwotICAgIH0KLSAgfCBiZWZvcmVfaW1wb3J0X3J1bGUgSU1QT1JUX1NZTSBhdF9pbXBv
cnRfaGVhZGVyX2VuZF9tYXliZV9zcGFjZSBzdHJpbmdfb3JfdXJpIG1heWJlX3NwYWNlIG1heWJl
X21lZGlhX2xpc3QgaW52YWxpZF9ibG9jayB7Ci0gICAgICAgICQkID0gMDsKLSAgICAgICAgcGFy
c2VyLT5wb3BSdWxlRGF0YSgpOwotICAgIH0KLSAgfCBiZWZvcmVfaW1wb3J0X3J1bGUgSU1QT1JU
X1NZTSBlcnJvciAnOycgewotICAgICAgICAkJCA9IDA7Ci0gICAgICAgIHBhcnNlci0+cG9wUnVs
ZURhdGEoKTsKLSAgICB9Ci0gIHwgYmVmb3JlX2ltcG9ydF9ydWxlIElNUE9SVF9TWU0gZXJyb3Ig
aW52YWxpZF9ibG9jayB7Ci0gICAgICAgICQkID0gMDsKLSAgICAgICAgcGFyc2VyLT5wb3BSdWxl
RGF0YSgpOwotICAgIH0KLSAgOwotCi1uYW1lc3BhY2U6Ci1OQU1FU1BBQ0VfU1lNIG1heWJlX3Nw
YWNlIG1heWJlX25zX3ByZWZpeCBzdHJpbmdfb3JfdXJpIG1heWJlX3NwYWNlICc7JyB7Ci0gICAg
cGFyc2VyLT5hZGROYW1lc3BhY2UoJDMsICQ0KTsKLSAgICAkJCA9IDA7Ci19Ci18IE5BTUVTUEFD
RV9TWU0gbWF5YmVfc3BhY2UgbWF5YmVfbnNfcHJlZml4IHN0cmluZ19vcl91cmkgbWF5YmVfc3Bh
Y2UgaW52YWxpZF9ibG9jayB7Ci0gICAgJCQgPSAwOwotfQotfCBOQU1FU1BBQ0VfU1lNIGVycm9y
IGludmFsaWRfYmxvY2sgewotICAgICQkID0gMDsKLX0KLXwgTkFNRVNQQUNFX1NZTSBlcnJvciAn
OycgewotICAgICQkID0gMDsKLX0KLTsKLQotbWF5YmVfbnNfcHJlZml4OgotLyogZW1wdHkgKi8g
eyAkJC5jbGVhcigpOyB9Ci18IElERU5UIG1heWJlX3NwYWNlIHsgJCQgPSAkMTsgfQotOwotCi1z
dHJpbmdfb3JfdXJpOgotU1RSSU5HCi18IFVSSQotOwotCi1tZWRpYV9mZWF0dXJlOgotICAgIElE
RU5UIG1heWJlX3NwYWNlIHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICB9Ci0gICAgOwotCi1tYXli
ZV9tZWRpYV92YWx1ZToKLSAgICAvKmVtcHR5Ki8gewotICAgICAgICAkJCA9IDA7Ci0gICAgfQot
ICAgIHwgJzonIG1heWJlX3NwYWNlIGV4cHIgbWF5YmVfc3BhY2UgewotICAgICAgICAkJCA9ICQz
OwotICAgIH0KLSAgICA7Ci0KLW1lZGlhX3F1ZXJ5X2V4cDoKLSAgICBtYXliZV9tZWRpYV9yZXN0
cmljdG9yIG1heWJlX3NwYWNlICcoJyBtYXliZV9zcGFjZSBtZWRpYV9mZWF0dXJlIG1heWJlX3Nw
YWNlIG1heWJlX21lZGlhX3ZhbHVlICcpJyBtYXliZV9zcGFjZSB7Ci0gICAgICAgIC8vIElmIHJl
c3RyaWN0b3IgaXMgc3BlY2lmaWVkLCBtZWRpYSBxdWVyeSBleHByZXNzaW9uIGlzIGludmFsaWQu
Ci0gICAgICAgIC8vIENyZWF0ZSBlbXB0eSBtZWRpYSBxdWVyeSBleHByZXNzaW9uIGFuZCBjb250
aW51ZSBwYXJzaW5nIG1lZGlhIHF1ZXJ5LgotICAgICAgICBpZiAoJDEgIT0gTWVkaWFRdWVyeTo6
Tm9uZSkKLSAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ01lZGlhUXVlcnlF
eHAoIiIsIDApOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICQ1Lmxvd2VyKCk7Ci0gICAg
ICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwKCQ1LCAkNyk7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgOwotCi1tZWRpYV9xdWVyeV9leHBfbGlzdDoKLSAgICBt
ZWRpYV9xdWVyeV9leHAgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdNZWRp
YVF1ZXJ5RXhwTGlzdCgpOwotICAgICAgICAkJC0+YXBwZW5kKHBhcnNlci0+c2lua0Zsb2F0aW5n
TWVkaWFRdWVyeUV4cCgkMSkpOwotICAgIH0KLSAgICB8IG1lZGlhX3F1ZXJ5X2V4cF9saXN0IG1h
eWJlX3NwYWNlIE1FRElBX0FORCBtYXliZV9zcGFjZSBtZWRpYV9xdWVyeV9leHAgewotICAgICAg
ICAkJCA9ICQxOwotICAgICAgICAkJC0+YXBwZW5kKHBhcnNlci0+c2lua0Zsb2F0aW5nTWVkaWFR
dWVyeUV4cCgkNSkpOwotICAgIH0KLSAgICA7Ci0KLW1heWJlX2FuZF9tZWRpYV9xdWVyeV9leHBf
bGlzdDoKLSAgICAvKmVtcHR5Ki8gewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRp
bmdNZWRpYVF1ZXJ5RXhwTGlzdCgpOwotICAgIH0KLSAgICB8IE1FRElBX0FORCBtYXliZV9zcGFj
ZSBtZWRpYV9xdWVyeV9leHBfbGlzdCB7Ci0gICAgICAgICQkID0gJDM7Ci0gICAgfQotICAgIDsK
LQotbWF5YmVfbWVkaWFfcmVzdHJpY3RvcjoKLSAgICAvKmVtcHR5Ki8gewotICAgICAgICAkJCA9
IE1lZGlhUXVlcnk6Ok5vbmU7Ci0gICAgfQotICAgIHwgTUVESUFfT05MWSB7Ci0gICAgICAgICQk
ID0gTWVkaWFRdWVyeTo6T25seTsKLSAgICB9Ci0gICAgfCBNRURJQV9OT1QgewotICAgICAgICAk
JCA9IE1lZGlhUXVlcnk6Ok5vdDsKLSAgICB9Ci0gICAgOwotCi1tZWRpYV9xdWVyeToKLSAgICBt
ZWRpYV9xdWVyeV9leHBfbGlzdCB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGlu
Z01lZGlhUXVlcnkocGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwTGlzdCgkMSkpOwot
ICAgIH0KLSAgICB8Ci0gICAgbWF5YmVfbWVkaWFfcmVzdHJpY3RvciBtYXliZV9zcGFjZSBtZWRp
dW0gbWF5YmVfYW5kX21lZGlhX3F1ZXJ5X2V4cF9saXN0IHsKLSAgICAgICAgJDMubG93ZXIoKTsK
LSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeSgkMSwgJDMsIHBh
cnNlci0+c2lua0Zsb2F0aW5nTWVkaWFRdWVyeUV4cExpc3QoJDQpKTsKLSAgICB9Ci0gICAgOwot
Ci1tYXliZV9tZWRpYV9saXN0OgotICAgICAvKiBlbXB0eSAqLyB7Ci0gICAgICAgICQkID0gcGFy
c2VyLT5jcmVhdGVNZWRpYVF1ZXJ5U2V0KCk7Ci0gICAgIH0KLSAgICAgfCBtZWRpYV9saXN0Ci0g
ICAgIDsKLQotbWVkaWFfbGlzdDoKLSAgICBtZWRpYV9xdWVyeSB7Ci0gICAgICAgICQkID0gcGFy
c2VyLT5jcmVhdGVNZWRpYVF1ZXJ5U2V0KCk7Ci0gICAgICAgICQkLT5hZGRNZWRpYVF1ZXJ5KHBh
cnNlci0+c2lua0Zsb2F0aW5nTWVkaWFRdWVyeSgkMSkpOwotICAgICAgICBwYXJzZXItPnVwZGF0
ZUxhc3RNZWRpYUxpbmUoJCQpOwotICAgIH0KLSAgICB8IG1lZGlhX2xpc3QgJywnIG1heWJlX3Nw
YWNlIG1lZGlhX3F1ZXJ5IHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgaWYgKCQkKSB7Ci0g
ICAgICAgICAgICAkJC0+YWRkTWVkaWFRdWVyeShwYXJzZXItPnNpbmtGbG9hdGluZ01lZGlhUXVl
cnkoJDQpKTsKLSAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlTGFzdE1lZGlhTGluZSgkJCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgfCBtZWRpYV9saXN0IGVycm9yIHsKLSAgICAgICAgJCQgPSAw
OwotICAgIH0KLSAgICA7Ci0KLWF0X3J1bGVfYm9keV9zdGFydDoKLSAgICAvKiBlbXB0eSAqLyB7
Ci0gICAgICAgIHBhcnNlci0+bWFya1J1bGVCb2R5U3RhcnQoKTsKLSAgICB9Ci0gICAgOwotCi1i
ZWZvcmVfbWVkaWFfcnVsZToKLSAgICAvKiBlbXB0eSAqLyB7Ci0gICAgICAgIHBhcnNlci0+bWFy
a1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6TUVESUFfUlVMRSk7Ci0gICAgfQot
ICAgIDsKLQotYXRfcnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlOgotICAgIG1heWJlX3NwYWNl
IHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlckVuZCgpOwotICAgIH0KLSAgICA7Ci0K
LW1lZGlhOgotICAgIGJlZm9yZV9tZWRpYV9ydWxlIE1FRElBX1NZTSBtYXliZV9zcGFjZSBtZWRp
YV9saXN0IGF0X3J1bGVfaGVhZGVyX2VuZCAneycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1heWJlX3Nw
YWNlIGJsb2NrX3J1bGVfbGlzdCBzYXZlX2Jsb2NrIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNy
ZWF0ZU1lZGlhUnVsZSgkNCwgJDkpOwotICAgIH0KLSAgICB8IGJlZm9yZV9tZWRpYV9ydWxlIE1F
RElBX1NZTSBhdF9ydWxlX2hlYWRlcl9lbmRfbWF5YmVfc3BhY2UgJ3snIGF0X3J1bGVfYm9keV9z
dGFydCBtYXliZV9zcGFjZSBibG9ja19ydWxlX2xpc3Qgc2F2ZV9ibG9jayB7Ci0gICAgICAgICQk
ID0gcGFyc2VyLT5jcmVhdGVNZWRpYVJ1bGUoMCwgJDcpOwotICAgIH0KLSAgICB8IGJlZm9yZV9t
ZWRpYV9ydWxlIE1FRElBX1NZTSBhdF9ydWxlX2hlYWRlcl9lbmRfbWF5YmVfc3BhY2UgJzsnIHsK
LSAgICAgICAgJCQgPSAwOwotICAgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7Ci0gICAgfQot
ICAgIDsKLQotbWVkaXVtOgotICBJREVOVCBtYXliZV9zcGFjZSB7Ci0gICAgICAkJCA9ICQxOwot
ICB9Ci0gIDsKLQotYmVmb3JlX2tleWZyYW1lc19ydWxlOgotICAgIC8qIGVtcHR5ICovIHsKLSAg
ICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRhOjpLRVlG
UkFNRVNfUlVMRSk7Ci0gICAgfQotICAgIDsKLQota2V5ZnJhbWVzOgotICAgIGJlZm9yZV9rZXlm
cmFtZXNfcnVsZSBXRUJLSVRfS0VZRlJBTUVTX1NZTSBtYXliZV9zcGFjZSBrZXlmcmFtZV9uYW1l
IGF0X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9zcGFjZSAneycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1h
eWJlX3NwYWNlIGtleWZyYW1lc19ydWxlIGNsb3NpbmdfYnJhY2UgewotICAgICAgICAkJCA9IHBh
cnNlci0+Y3JlYXRlS2V5ZnJhbWVzUnVsZSgkNCwgcGFyc2VyLT5zaW5rRmxvYXRpbmdLZXlmcmFt
ZVZlY3RvcigkOSkpOwotICAgIH0KLSAgICA7Ci0gIAota2V5ZnJhbWVfbmFtZToKLSAgICBJREVO
VAotICAgIHwgU1RSSU5HCi0gICAgOwotCi1rZXlmcmFtZXNfcnVsZToKLSAgICAvKiBlbXB0eSAq
LyB7ICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0tleWZyYW1lVmVjdG9yKCk7IH0KLSAgICB8
IGtleWZyYW1lc19ydWxlIGtleWZyYW1lX3J1bGUgbWF5YmVfc3BhY2UgewotICAgICAgICAkJCA9
ICQxOwotICAgICAgICBpZiAoJDIpCi0gICAgICAgICAgICAkJC0+YXBwZW5kKCQyKTsKLSAgICB9
Ci0gICAgOwotCi1rZXlmcmFtZV9ydWxlOgotICAgIGtleV9saXN0IG1heWJlX3NwYWNlICd7JyBt
YXliZV9zcGFjZSBkZWNsYXJhdGlvbl9saXN0ICd9JyB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5j
cmVhdGVLZXlmcmFtZSgkMSk7Ci0gICAgfQotICAgIDsKLQota2V5X2xpc3Q6Ci0gICAga2V5IHsK
LSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nVmFsdWVMaXN0KCk7Ci0gICAgICAg
ICQkLT5hZGRWYWx1ZShwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlKCQxKSk7Ci0gICAgfQotICAg
IHwga2V5X2xpc3QgbWF5YmVfc3BhY2UgJywnIG1heWJlX3NwYWNlIGtleSB7Ci0gICAgICAgICQk
ID0gJDE7Ci0gICAgICAgIGlmICgkJCkKLSAgICAgICAgICAgICQkLT5hZGRWYWx1ZShwYXJzZXIt
PnNpbmtGbG9hdGluZ1ZhbHVlKCQ1KSk7Ci0gICAgfQotICAgIDsKLQota2V5OgotICAgIG1heWJl
X3VuYXJ5X29wZXJhdG9yIFBFUkNFTlRBR0UgeyAkJC5pZCA9IDA7ICQkLmlzSW50ID0gZmFsc2U7
ICQkLmZWYWx1ZSA9ICQxICogJDI7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05V
TUJFUjsgfQotICAgIHwgSURFTlQgewotICAgICAgICAkJC5pZCA9IDA7ICQkLmlzSW50ID0gZmFs
c2U7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjsKLSAgICAgICAgQ1NT
UGFyc2VyU3RyaW5nJiBzdHIgPSAkMTsKLSAgICAgICAgaWYgKHN0ci5lcXVhbElnbm9yaW5nQ2Fz
ZSgiZnJvbSIpKQotICAgICAgICAgICAgJCQuZlZhbHVlID0gMDsKLSAgICAgICAgZWxzZSBpZiAo
c3RyLmVxdWFsSWdub3JpbmdDYXNlKCJ0byIpKQotICAgICAgICAgICAgJCQuZlZhbHVlID0gMTAw
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBZWUVSUk9SOwotICAgIH0KLSAgICA7Ci0KLWJl
Zm9yZV9wYWdlX3J1bGU6Ci0gICAgLyogZW1wdHkgKi8gewotICAgICAgICBwYXJzZXItPm1hcmtS
dWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6OlBBR0VfUlVMRSk7Ci0gICAgfQotICAg
IDsKLQotcGFnZToKLSAgICBiZWZvcmVfcGFnZV9ydWxlIFBBR0VfU1lNIG1heWJlX3NwYWNlIHBh
Z2Vfc2VsZWN0b3IgYXRfcnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlCi0gICAgJ3snIGF0X3J1
bGVfYm9keV9zdGFydCBtYXliZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRpb24gZGVjbGFyYXRpb25z
X2FuZF9tYXJnaW5zIGNsb3NpbmdfYnJhY2UgewotICAgICAgICBpZiAoJDQpCi0gICAgICAgICAg
ICAkJCA9IHBhcnNlci0+Y3JlYXRlUGFnZVJ1bGUocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3Rv
cigkNCkpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8vIENsZWFyIHByb3BlcnRpZXMg
aW4gdGhlIGludmFsaWQgQHBhZ2UgcnVsZS4KLSAgICAgICAgICAgIHBhcnNlci0+Y2xlYXJQcm9w
ZXJ0aWVzKCk7Ci0gICAgICAgICAgICAvLyBBbHNvIGNsZWFyIG1hcmdpbiBhdC1ydWxlcyBoZXJl
IG9uY2Ugd2UgZnVsbHkgaW1wbGVtZW50IG1hcmdpbiBhdC1ydWxlcyBwYXJzaW5nLgotICAgICAg
ICAgICAgJCQgPSAwOwotICAgICAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOwotICAgICAg
ICB9Ci0gICAgfQotICAgIHwgYmVmb3JlX3BhZ2VfcnVsZSBQQUdFX1NZTSBlcnJvciBpbnZhbGlk
X2Jsb2NrIHsKLSAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKLSAgICAgICQkID0gMDsKLSAg
ICB9Ci0gICAgfCBiZWZvcmVfcGFnZV9ydWxlIFBBR0VfU1lNIGVycm9yICc7JyB7Ci0gICAgICBw
YXJzZXItPnBvcFJ1bGVEYXRhKCk7Ci0gICAgICAkJCA9IDA7Ci0gICAgfQotICAgIDsKLQotcGFn
ZV9zZWxlY3RvcjoKLSAgICBJREVOVCB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9h
dGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5zZXRUYWcoUXVhbGlmaWVkTmFtZShudWxsQXRv
bSwgJDEsIHBhcnNlci0+bV9kZWZhdWx0TmFtZXNwYWNlKSk7Ci0gICAgICAgICQkLT5zZXRGb3JQ
YWdlKCk7Ci0gICAgfQotICAgIHwgSURFTlQgcHNldWRvX3BhZ2UgewotICAgICAgICAkJCA9ICQy
OwotICAgICAgICBpZiAoJCQpIHsKLSAgICAgICAgICAgICQkLT5zZXRUYWcoUXVhbGlmaWVkTmFt
ZShudWxsQXRvbSwgJDEsIHBhcnNlci0+bV9kZWZhdWx0TmFtZXNwYWNlKSk7Ci0gICAgICAgICAg
ICAkJC0+c2V0Rm9yUGFnZSgpOwotICAgICAgICB9Ci0gICAgfQotICAgIHwgcHNldWRvX3BhZ2Ug
ewotICAgICAgICAkJCA9ICQxOwotICAgICAgICBpZiAoJCQpCi0gICAgICAgICAgICAkJC0+c2V0
Rm9yUGFnZSgpOwotICAgIH0KLSAgICB8IC8qIGVtcHR5ICovIHsKLSAgICAgICAgJCQgPSBwYXJz
ZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldEZvclBhZ2UoKTsK
LSAgICB9Ci0gICAgOwotCi1kZWNsYXJhdGlvbnNfYW5kX21hcmdpbnM6Ci0gICAgZGVjbGFyYXRp
b25fbGlzdAotICAgIHwgZGVjbGFyYXRpb25zX2FuZF9tYXJnaW5zIG1hcmdpbl9ib3ggbWF5YmVf
c3BhY2UgZGVjbGFyYXRpb25fbGlzdAotICAgIDsKLQotbWFyZ2luX2JveDoKLSAgICBtYXJnaW5f
c3ltIHsKLSAgICAgICAgcGFyc2VyLT5zdGFydERlY2xhcmF0aW9uc0Zvck1hcmdpbkJveCgpOwot
ICAgIH0gbWF5YmVfc3BhY2UgJ3snIG1heWJlX3NwYWNlIGRlY2xhcmF0aW9uX2xpc3QgY2xvc2lu
Z19icmFjZSB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVNYXJnaW5BdFJ1bGUoJDEpOwot
ICAgIH0KLSAgICA7Ci0KLW1hcmdpbl9zeW0gOgotICAgIFRPUExFRlRDT1JORVJfU1lNIHsKLSAg
ICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6VG9wTGVmdENvcm5lck1hcmdpbkJveDsKLSAgICB9Ci0g
ICAgfCBUT1BMRUZUX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OlRvcExlZnRNYXJn
aW5Cb3g7Ci0gICAgfQotICAgIHwgVE9QQ0VOVEVSX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2Vs
ZWN0b3I6OlRvcENlbnRlck1hcmdpbkJveDsKLSAgICB9Ci0gICAgfCBUT1BSSUdIVF9TWU0gewot
ICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpUb3BSaWdodE1hcmdpbkJveDsKLSAgICB9Ci0gICAg
fCBUT1BSSUdIVENPUk5FUl9TWU0gewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpUb3BSaWdo
dENvcm5lck1hcmdpbkJveDsKLSAgICB9Ci0gICAgfCBCT1RUT01MRUZUQ09STkVSX1NZTSB7Ci0g
ICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkJvdHRvbUxlZnRDb3JuZXJNYXJnaW5Cb3g7Ci0gICAg
fQotICAgIHwgQk9UVE9NTEVGVF9TWU0gewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpCb3R0
b21MZWZ0TWFyZ2luQm94OwotICAgIH0KLSAgICB8IEJPVFRPTUNFTlRFUl9TWU0gewotICAgICAg
ICAkJCA9IENTU1NlbGVjdG9yOjpCb3R0b21DZW50ZXJNYXJnaW5Cb3g7Ci0gICAgfQotICAgIHwg
Qk9UVE9NUklHSFRfU1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6Qm90dG9tUmlnaHRN
YXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgQk9UVE9NUklHSFRDT1JORVJfU1lNIHsKLSAgICAgICAg
JCQgPSBDU1NTZWxlY3Rvcjo6Qm90dG9tUmlnaHRDb3JuZXJNYXJnaW5Cb3g7Ci0gICAgfQotICAg
IHwgTEVGVFRPUF9TWU0gewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpMZWZ0VG9wTWFyZ2lu
Qm94OwotICAgIH0KLSAgICB8IExFRlRNSURETEVfU1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxl
Y3Rvcjo6TGVmdE1pZGRsZU1hcmdpbkJveDsKLSAgICB9Ci0gICAgfCBMRUZUQk9UVE9NX1NZTSB7
Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkxlZnRCb3R0b21NYXJnaW5Cb3g7Ci0gICAgfQot
ICAgIHwgUklHSFRUT1BfU1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6UmlnaHRUb3BN
YXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgUklHSFRNSURETEVfU1lNIHsKLSAgICAgICAgJCQgPSBD
U1NTZWxlY3Rvcjo6UmlnaHRNaWRkbGVNYXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgUklHSFRCT1RU
T01fU1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6UmlnaHRCb3R0b21NYXJnaW5Cb3g7
Ci0gICAgfQotICAgIDsKLQotYmVmb3JlX2ZvbnRfZmFjZV9ydWxlOgotICAgIC8qIGVtcHR5ICov
IHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRh
OjpGT05UX0ZBQ0VfUlVMRSk7Ci0gICAgfQotICAgIDsKLQotZm9udF9mYWNlOgotICAgIGJlZm9y
ZV9mb250X2ZhY2VfcnVsZSBGT05UX0ZBQ0VfU1lNIGF0X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9z
cGFjZQotICAgICd7JyBhdF9ydWxlX2JvZHlfc3RhcnQgbWF5YmVfc3BhY2VfYmVmb3JlX2RlY2xh
cmF0aW9uIGRlY2xhcmF0aW9uX2xpc3QgY2xvc2luZ19icmFjZSB7Ci0gICAgICAgICQkID0gcGFy
c2VyLT5jcmVhdGVGb250RmFjZVJ1bGUoKTsKLSAgICB9Ci0gICAgfCBiZWZvcmVfZm9udF9mYWNl
X3J1bGUgRk9OVF9GQUNFX1NZTSBlcnJvciBpbnZhbGlkX2Jsb2NrIHsKLSAgICAgICQkID0gMDsK
LSAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKLSAgICB9Ci0gICAgfCBiZWZvcmVfZm9udF9m
YWNlX3J1bGUgRk9OVF9GQUNFX1NZTSBlcnJvciAnOycgewotICAgICAgJCQgPSAwOwotICAgICAg
cGFyc2VyLT5wb3BSdWxlRGF0YSgpOwotICAgIH0KLTsKLQotcmVnaW9uX3NlbGVjdG9yOgotICAg
IHNlbGVjdG9yX2xpc3QgewotICAgICAgICBpZiAoJDEpIHsKLSAgICAgICAgICAgIHBhcnNlci0+
c2V0UmV1c2FibGVSZWdpb25TZWxlY3RvclZlY3RvcigkMSk7Ci0gICAgICAgICAgICAkJCA9IHBh
cnNlci0+cmV1c2FibGVSZWdpb25TZWxlY3RvclZlY3RvcigpOwotICAgICAgICB9Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgICQkID0gMDsKLSAgICB9Ci07Ci0KLWJlZm9yZV9yZWdpb25fcnVs
ZToKLSAgICAvKiBlbXB0eSAqLyB7Ci0gICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJTdGFy
dChDU1NSdWxlU291cmNlRGF0YTo6UkVHSU9OX1JVTEUpOwotICAgIH0KLSAgICA7Ci0KLXJlZ2lv
bjoKLSAgICBiZWZvcmVfcmVnaW9uX3J1bGUgV0VCS0lUX1JFR0lPTl9SVUxFX1NZTSBXSElURVNQ
QUNFIHJlZ2lvbl9zZWxlY3RvciBhdF9ydWxlX2hlYWRlcl9lbmQgJ3snIGF0X3J1bGVfYm9keV9z
dGFydCBtYXliZV9zcGFjZSBibG9ja19ydWxlX2xpc3Qgc2F2ZV9ibG9jayB7Ci0gICAgICAgIGlm
ICgkNCkKLSAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVSZWdpb25SdWxlKCQ0LCAkOSk7
Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgJCQgPSAwOwotICAgICAgICAgICAgcGFyc2Vy
LT5wb3BSdWxlRGF0YSgpOwotICAgICAgICB9Ci0gICAgfQotOwotCi1jb21iaW5hdG9yOgotICAg
ICcrJyBtYXliZV9zcGFjZSB7ICQkID0gQ1NTU2VsZWN0b3I6OkRpcmVjdEFkamFjZW50OyB9Ci0g
IHwgJ34nIG1heWJlX3NwYWNlIHsgJCQgPSBDU1NTZWxlY3Rvcjo6SW5kaXJlY3RBZGphY2VudDsg
fQotICB8ICc+JyBtYXliZV9zcGFjZSB7ICQkID0gQ1NTU2VsZWN0b3I6OkNoaWxkOyB9Ci0gIDsK
LQotbWF5YmVfdW5hcnlfb3BlcmF0b3I6Ci0gICAgdW5hcnlfb3BlcmF0b3IgeyAkJCA9ICQxOyB9
Ci0gICAgfCB7ICQkID0gMTsgfQotICAgIDsKLQotdW5hcnlfb3BlcmF0b3I6Ci0gICAgJy0nIHsg
JCQgPSAtMTsgfQotICB8ICcrJyB7ICQkID0gMTsgfQotICA7Ci0KLW1heWJlX3NwYWNlX2JlZm9y
ZV9kZWNsYXJhdGlvbjoKLSAgICBtYXliZV9zcGFjZSB7Ci0gICAgICAgIHBhcnNlci0+bWFya1By
b3BlcnR5U3RhcnQoKTsKLSAgICB9Ci0gIDsKLQotYmVmb3JlX3NlbGVjdG9yX2xpc3Q6Ci0gICAg
LyogZW1wdHkgKi8gewotICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVs
ZVNvdXJjZURhdGE6OlNUWUxFX1JVTEUpOwotICAgIH0KLSAgOwotCi1hdF9ydWxlX2hlYWRlcl9l
bmQ6Ci0gICAgLyogZW1wdHkgKi8gewotICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyRW5k
KCk7Ci0gICAgfQotICA7Ci0KLXJ1bGVzZXQ6Ci0gICAgYmVmb3JlX3NlbGVjdG9yX2xpc3Qgc2Vs
ZWN0b3JfbGlzdCBhdF9ydWxlX2hlYWRlcl9lbmQgJ3snIGF0X3J1bGVfYm9keV9zdGFydCBtYXli
ZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRpb24gZGVjbGFyYXRpb25fbGlzdCBjbG9zaW5nX2JyYWNl
IHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZVN0eWxlUnVsZSgkMik7Ci0gICAgfQotICA7
Ci0KLXNlbGVjdG9yX2xpc3Q6Ci0gICAgc2VsZWN0b3IgJXByZWMgVU5JTVBPUlRBTlRfVE9LIHsK
LSAgICAgICAgaWYgKCQxKSB7Ci0gICAgICAgICAgICAkJCA9IHBhcnNlci0+c2VsZWN0b3JWZWN0
b3IoKTsKLSAgICAgICAgICAgICQkLT5zaHJpbmsoMCk7Ci0gICAgICAgICAgICAkJC0+YXBwZW5k
KHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDEpKTsKLSAgICAgICAgICAgIHBhcnNlci0+
dXBkYXRlTGFzdFNlbGVjdG9yTGluZUFuZFBvc2l0aW9uKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgfCBzZWxlY3Rvcl9saXN0ICcsJyBtYXliZV9zcGFjZSBzZWxlY3RvciAlcHJlYyBVTklNUE9S
VEFOVF9UT0sgewotICAgICAgICBpZiAoJDEgJiYgJDQpIHsKLSAgICAgICAgICAgICQkID0gJDE7
Ci0gICAgICAgICAgICAkJC0+YXBwZW5kKHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDQp
KTsKLSAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlTGFzdFNlbGVjdG9yTGluZUFuZFBvc2l0aW9u
KCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgfCBzZWxl
Y3Rvcl9saXN0IGVycm9yIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgIDsKLQotc2VsZWN0
b3Jfd2l0aF90cmFpbGluZ193aGl0ZXNwYWNlOgotICAgIHNlbGVjdG9yIFdISVRFU1BBQ0Ugewot
ICAgICAgICAkJCA9ICQxOwotICAgIH0KLSAgICA7Ci0KLXNlbGVjdG9yOgotICAgIHNpbXBsZV9z
ZWxlY3RvciB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAgIHwgc2VsZWN0b3Jfd2l0aF90
cmFpbGluZ193aGl0ZXNwYWNlCi0gICAgewotICAgICAgICAkJCA9ICQxOwotICAgIH0KLSAgICB8
IHNlbGVjdG9yX3dpdGhfdHJhaWxpbmdfd2hpdGVzcGFjZSBzaW1wbGVfc2VsZWN0b3IKLSAgICB7
Ci0gICAgICAgICQkID0gJDI7Ci0gICAgICAgIGlmICghJDEpCi0gICAgICAgICAgICAkJCA9IDA7
Ci0gICAgICAgIGVsc2UgaWYgKCQkKSB7Ci0gICAgICAgICAgICBDU1NQYXJzZXJTZWxlY3Rvciog
ZW5kID0gJCQ7Ci0gICAgICAgICAgICB3aGlsZSAoZW5kLT50YWdIaXN0b3J5KCkpCi0gICAgICAg
ICAgICAgICAgZW5kID0gZW5kLT50YWdIaXN0b3J5KCk7Ci0gICAgICAgICAgICBlbmQtPnNldFJl
bGF0aW9uKENTU1NlbGVjdG9yOjpEZXNjZW5kYW50KTsKLSAgICAgICAgICAgIGVuZC0+c2V0VGFn
SGlzdG9yeShwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQxKSk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgfCBzZWxlY3RvciBjb21iaW5hdG9yIHNpbXBsZV9zZWxlY3RvciB7Ci0gICAgICAg
ICQkID0gJDM7Ci0gICAgICAgIGlmICghJDEpCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgICAg
IGVsc2UgaWYgKCQkKSB7Ci0gICAgICAgICAgICBDU1NQYXJzZXJTZWxlY3RvciogZW5kID0gJCQ7
Ci0gICAgICAgICAgICB3aGlsZSAoZW5kLT50YWdIaXN0b3J5KCkpCi0gICAgICAgICAgICAgICAg
ZW5kID0gZW5kLT50YWdIaXN0b3J5KCk7Ci0gICAgICAgICAgICBlbmQtPnNldFJlbGF0aW9uKCQy
KTsKLSAgICAgICAgICAgIGVuZC0+c2V0VGFnSGlzdG9yeShwYXJzZXItPnNpbmtGbG9hdGluZ1Nl
bGVjdG9yKCQxKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgfCBzZWxlY3RvciBlcnJvciB7Ci0g
ICAgICAgICQkID0gMDsKLSAgICB9Ci0gICAgOwotCi1uYW1lc3BhY2Vfc2VsZWN0b3I6Ci0gICAg
LyogZW1wdHkgKi8gJ3wnIHsgJCQuY2xlYXIoKTsgfQotICAgIHwgJyonICd8JyB7IHN0YXRpYyBM
Q2hhciBzdGFyID0gJyonOyAkJC5pbml0KCZzdGFyLCAxKTsgfQotICAgIHwgSURFTlQgJ3wnIHsg
JCQgPSAkMTsgfQotOwotICAgIAotc2ltcGxlX3NlbGVjdG9yOgotICAgIGVsZW1lbnRfbmFtZSB7
Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAg
ICQkLT5zZXRUYWcoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDEsIHBhcnNlci0+bV9kZWZhdWx0
TmFtZXNwYWNlKSk7Ci0gICAgfQotICAgIHwgZWxlbWVudF9uYW1lIHNwZWNpZmllcl9saXN0IHsK
LSAgICAgICAgJCQgPSAkMjsKLSAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAgcGFyc2VyLT51
cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKG51bGxBdG9tLCAkMSwgJCQpOwotICAgIH0K
LSAgICB8IHNwZWNpZmllcl9saXN0IHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgaWYgKCQk
KQotICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKG51
bGxBdG9tLCBzdGFyQXRvbSwgJCQpOwotICAgIH0KLSAgICB8IG5hbWVzcGFjZV9zZWxlY3RvciBl
bGVtZW50X25hbWUgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3Rv
cigpOwotICAgICAgICAkJC0+c2V0VGFnKHBhcnNlci0+ZGV0ZXJtaW5lTmFtZUluTmFtZXNwYWNl
KCQxLCAkMikpOwotICAgIH0KLSAgICB8IG5hbWVzcGFjZV9zZWxlY3RvciBlbGVtZW50X25hbWUg
c3BlY2lmaWVyX2xpc3QgewotICAgICAgICAkJCA9ICQzOwotICAgICAgICBpZiAoJCQpCi0gICAg
ICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoJDEsICQyLCAk
JCk7Ci0gICAgfQotICAgIHwgbmFtZXNwYWNlX3NlbGVjdG9yIHNwZWNpZmllcl9saXN0IHsKLSAg
ICAgICAgJCQgPSAkMjsKLSAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAgcGFyc2VyLT51cGRh
dGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKCQxLCBzdGFyQXRvbSwgJCQpOwotICAgIH0KLSAg
OwotCi1zaW1wbGVfc2VsZWN0b3JfbGlzdDoKLSAgICBzaW1wbGVfc2VsZWN0b3IgJXByZWMgVU5J
TVBPUlRBTlRfVE9LIHsKLSAgICAgICAgaWYgKCQxKSB7Ci0gICAgICAgICAgICAkJCA9IHBhcnNl
ci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvclZlY3RvcigpOwotICAgICAgICAgICAgJCQtPmFwcGVu
ZChwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQxKSk7Ci0gICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICB8IHNpbXBsZV9zZWxlY3Rvcl9saXN0IG1heWJl
X3NwYWNlICcsJyBtYXliZV9zcGFjZSBzaW1wbGVfc2VsZWN0b3IgJXByZWMgVU5JTVBPUlRBTlRf
VE9LIHsKLSAgICAgICAgaWYgKCQxICYmICQ1KSB7Ci0gICAgICAgICAgICAkJCA9ICQxOwotICAg
ICAgICAgICAgJCQtPmFwcGVuZChwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQ1KSk7Ci0g
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICB8IHNpbXBsZV9z
ZWxlY3Rvcl9saXN0IGVycm9yIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgOwotCi1lbGVt
ZW50X25hbWU6Ci0gICAgSURFTlQgewotICAgICAgICBDU1NQYXJzZXJTdHJpbmcmIHN0ciA9ICQx
OwotICAgICAgICBpZiAocGFyc2VyLT5tX2NvbnRleHQuaXNIVE1MRG9jdW1lbnQpCi0gICAgICAg
ICAgICBzdHIubG93ZXIoKTsKLSAgICAgICAgJCQgPSBzdHI7Ci0gICAgfQotICAgIHwgJyonIHsK
LSAgICAgICAgc3RhdGljIExDaGFyIHN0YXIgPSAnKic7Ci0gICAgICAgICQkLmluaXQoJnN0YXIs
IDEpOwotICAgIH0KLSAgOwotCi1zcGVjaWZpZXJfbGlzdDoKLSAgICBzcGVjaWZpZXIgewotICAg
ICAgICAkJCA9ICQxOwotICAgIH0KLSAgICB8IHNwZWNpZmllcl9saXN0IHNwZWNpZmllciB7Ci0g
ICAgICAgIGlmICghJDIpCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgICAgIGVsc2UgaWYgKCQx
KQotICAgICAgICAgICAgJCQgPSBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnMoJDEsICQyKTsKLSAg
ICB9Ci0gICAgfCBzcGVjaWZpZXJfbGlzdCBlcnJvciB7Ci0gICAgICAgICQkID0gMDsKLSAgICB9
Ci07Ci0KLXNwZWNpZmllcjoKLSAgICBJRFNFTCB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVh
dGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6
SWQpOwotICAgICAgICBpZiAocGFyc2VyLT5tX2NvbnRleHQubW9kZSA9PSBDU1NRdWlya3NNb2Rl
KQotICAgICAgICAgICAgJDEubG93ZXIoKTsKLSAgICAgICAgJCQtPnNldFZhbHVlKCQxKTsKLSAg
ICB9Ci0gIHwgSEVYIHsKLSAgICAgICAgaWYgKCQxWzBdID49ICcwJyAmJiAkMVswXSA8PSAnOScp
IHsKLSAgICAgICAgICAgICQkID0gMDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICQk
ID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICAgICAkJC0+c2V0
TWF0Y2goQ1NTU2VsZWN0b3I6OklkKTsKLSAgICAgICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4
dC5tb2RlID09IENTU1F1aXJrc01vZGUpCi0gICAgICAgICAgICAgICAgJDEubG93ZXIoKTsKLSAg
ICAgICAgICAgICQkLT5zZXRWYWx1ZSgkMSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gIHwgY2xhc3MK
LSAgfCBhdHRyaWIKLSAgfCBwc2V1ZG8KLSAgICA7Ci0KLWNsYXNzOgotICAgICcuJyBJREVOVCB7
Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAg
ICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6Q2xhc3MpOwotICAgICAgICBpZiAocGFyc2VyLT5t
X2NvbnRleHQubW9kZSA9PSBDU1NRdWlya3NNb2RlKQotICAgICAgICAgICAgJDIubG93ZXIoKTsK
LSAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsKLSAgICB9Ci0gIDsKLQotYXR0cl9uYW1lOgotICAg
IElERU5UIG1heWJlX3NwYWNlIHsKLSAgICAgICAgQ1NTUGFyc2VyU3RyaW5nJiBzdHIgPSAkMTsK
LSAgICAgICAgaWYgKHBhcnNlci0+bV9jb250ZXh0LmlzSFRNTERvY3VtZW50KQotICAgICAgICAg
ICAgc3RyLmxvd2VyKCk7Ci0gICAgICAgICQkID0gc3RyOwotICAgIH0KLSAgICA7Ci0KLWF0dHJp
YjoKLSAgICAnWycgbWF5YmVfc3BhY2UgYXR0cl9uYW1lICddJyB7Ci0gICAgICAgICQkID0gcGFy
c2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5zZXRBdHRyaWJ1dGUo
UXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDMsIG51bGxBdG9tKSk7Ci0gICAgICAgICQkLT5zZXRN
YXRjaChDU1NTZWxlY3Rvcjo6U2V0KTsKLSAgICB9Ci0gICAgfCAnWycgbWF5YmVfc3BhY2UgYXR0
cl9uYW1lIG1hdGNoIG1heWJlX3NwYWNlIGlkZW50X29yX3N0cmluZyBtYXliZV9zcGFjZSAnXScg
ewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAg
ICAkJC0+c2V0QXR0cmlidXRlKFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQzLCBudWxsQXRvbSkp
OwotICAgICAgICAkJC0+c2V0TWF0Y2goKENTU1NlbGVjdG9yOjpNYXRjaCkkNCk7Ci0gICAgICAg
ICQkLT5zZXRWYWx1ZSgkNik7Ci0gICAgfQotICAgIHwgJ1snIG1heWJlX3NwYWNlIG5hbWVzcGFj
ZV9zZWxlY3RvciBhdHRyX25hbWUgJ10nIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZs
b2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldEF0dHJpYnV0ZShwYXJzZXItPmRldGVy
bWluZU5hbWVJbk5hbWVzcGFjZSgkMywgJDQpKTsKLSAgICAgICAgJCQtPnNldE1hdGNoKENTU1Nl
bGVjdG9yOjpTZXQpOwotICAgIH0KLSAgICB8ICdbJyBtYXliZV9zcGFjZSBuYW1lc3BhY2Vfc2Vs
ZWN0b3IgYXR0cl9uYW1lIG1hdGNoIG1heWJlX3NwYWNlIGlkZW50X29yX3N0cmluZyBtYXliZV9z
cGFjZSAnXScgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3Rvcigp
OwotICAgICAgICAkJC0+c2V0QXR0cmlidXRlKHBhcnNlci0+ZGV0ZXJtaW5lTmFtZUluTmFtZXNw
YWNlKCQzLCAkNCkpOwotICAgICAgICAkJC0+c2V0TWF0Y2goKENTU1NlbGVjdG9yOjpNYXRjaCkk
NSk7Ci0gICAgICAgICQkLT5zZXRWYWx1ZSgkNyk7Ci0gICAgfQotICA7Ci0KLW1hdGNoOgotICAg
ICc9JyB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkV4YWN0OwotICAgIH0KLSAgICB8IElO
Q0xVREVTIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6TGlzdDsKLSAgICB9Ci0gICAgfCBE
QVNITUFUQ0ggewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpIeXBoZW47Ci0gICAgfQotICAg
IHwgQkVHSU5TV0lUSCB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkJlZ2luOwotICAgIH0K
LSAgICB8IEVORFNXSVRIIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6RW5kOwotICAgIH0K
LSAgICB8IENPTlRBSU5TIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6Q29udGFpbjsKLSAg
ICB9Ci0gICAgOwotCi1pZGVudF9vcl9zdHJpbmc6Ci0gICAgSURFTlQKLSAgfCBTVFJJTkcKLSAg
ICA7Ci0KLXBzZXVkb19wYWdlOgotICAgICc6JyBJREVOVCB7Ci0gICAgICAgICQkID0gcGFyc2Vy
LT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxl
Y3Rvcjo6UGFnZVBzZXVkb0NsYXNzKTsKLSAgICAgICAgJDIubG93ZXIoKTsKLSAgICAgICAgJCQt
PnNldFZhbHVlKCQyKTsKLSAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgdHlwZSA9ICQk
LT5wc2V1ZG9UeXBlKCk7Ci0gICAgICAgIGlmICh0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9V
bmtub3duKQotICAgICAgICAgICAgJCQgPSAwOwotICAgIH0KLQotcHNldWRvOgotICAgICc6JyBJ
REVOVCB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0g
ICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpOwotICAgICAgICAk
Mi5sb3dlcigpOwotICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOwotICAgICAgICBDU1NTZWxlY3Rv
cjo6UHNldWRvVHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUoKTsKLSAgICAgICAgaWYgKHR5cGUg
PT0gQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25vd24pCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAg
fQotICAgIHwgJzonICc6JyBJREVOVCB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9h
dGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRv
RWxlbWVudCk7Ci0gICAgICAgICQzLmxvd2VyKCk7Ci0gICAgICAgICQkLT5zZXRWYWx1ZSgkMyk7
Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGNhbGwgaXMgbmVlZGVkIHRvIGZvcmNlIHNlbGVjdG9y
IHRvIGNvbXB1dGUgdGhlIHBzZXVkb1R5cGUgZWFybHkgZW5vdWdoLgotICAgICAgICAkJC0+cHNl
dWRvVHlwZSgpOwotICAgIH0KLSAgICAvLyB1c2UgYnkgOi13ZWJraXQtYW55LgotICAgIC8vIEZJ
WE1FOiBzaG91bGQgd2Ugc3VwcG9ydCBnZW5lcmljIHNlbGVjdG9ycyBoZXJlIG9yIGp1c3Qgc2lt
cGxlX3NlbGVjdG9ycz8KLSAgICAvLyBVc2Ugc2ltcGxlX3NlbGVjdG9yX2xpc3QgZm9yIG5vdyB0
byBtYXRjaCAtbW96LWFueS4KLSAgICAvLyBTZWUgaHR0cDovL2xpc3RzLnczLm9yZy9BcmNoaXZl
cy9QdWJsaWMvd3d3LXN0eWxlLzIwMTBTZXAvMDU2Ni5odG1sIGZvciBzb21lCi0gICAgLy8gcmVs
YXRlZCBkaXNjdXNzaW9uIHdpdGggcmVzcGVjdCB0byA6bm90LgotICAgIHwgJzonIEFOWUZVTkNU
SU9OIG1heWJlX3NwYWNlIHNpbXBsZV9zZWxlY3Rvcl9saXN0IG1heWJlX3NwYWNlICcpJyB7Ci0g
ICAgICAgIGlmICgkNCkgewotICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5n
U2VsZWN0b3IoKTsKLSAgICAgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRv
Q2xhc3MpOwotICAgICAgICAgICAgJCQtPmFkb3B0U2VsZWN0b3JWZWN0b3IoKnBhcnNlci0+c2lu
a0Zsb2F0aW5nU2VsZWN0b3JWZWN0b3IoJDQpKTsKLSAgICAgICAgICAgICQyLmxvd2VyKCk7Ci0g
ICAgICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOwotICAgICAgICAgICAgQ1NTU2VsZWN0b3I6OlBz
ZXVkb1R5cGUgdHlwZSA9ICQkLT5wc2V1ZG9UeXBlKCk7Ci0gICAgICAgICAgICBpZiAodHlwZSAh
PSBDU1NTZWxlY3Rvcjo6UHNldWRvQW55KQotICAgICAgICAgICAgICAgICQkID0gMDsKLSAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgIC8vIHVzZWQgYnkgOm50
aC0qKGF4K2IpCi0gICAgfCAnOicgRlVOQ1RJT04gbWF5YmVfc3BhY2UgTlRIIG1heWJlX3NwYWNl
ICcpJyB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0g
ICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpOwotICAgICAgICAk
JC0+c2V0QXJndW1lbnQoJDQpOwotICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOwotICAgICAgICBD
U1NTZWxlY3Rvcjo6UHNldWRvVHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUoKTsKLSAgICAgICAg
aWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25vd24pCi0gICAgICAgICAgICAkJCA9
IDA7Ci0gICAgfQotICAgIC8vIHVzZWQgYnkgOm50aC0qCi0gICAgfCAnOicgRlVOQ1RJT04gbWF5
YmVfc3BhY2UgbWF5YmVfdW5hcnlfb3BlcmF0b3IgSU5URUdFUiBtYXliZV9zcGFjZSAnKScgewot
ICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAk
JC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKLSAgICAgICAgJCQtPnNldEFy
Z3VtZW50KFN0cmluZzo6bnVtYmVyKCQ0ICogJDUpKTsKLSAgICAgICAgJCQtPnNldFZhbHVlKCQy
KTsKLSAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgdHlwZSA9ICQkLT5wc2V1ZG9UeXBl
KCk7Ci0gICAgICAgIGlmICh0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9Vbmtub3duKQotICAg
ICAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICAvLyB1c2VkIGJ5IDpudGgtKihvZGQvZXZlbikg
YW5kIDpsYW5nCi0gICAgfCAnOicgRlVOQ1RJT04gbWF5YmVfc3BhY2UgSURFTlQgbWF5YmVfc3Bh
Y2UgJyknIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsK
LSAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7Ci0gICAgICAg
ICQkLT5zZXRBcmd1bWVudCgkNCk7Ci0gICAgICAgICQyLmxvd2VyKCk7Ci0gICAgICAgICQkLT5z
ZXRWYWx1ZSgkMik7Ci0gICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+
cHNldWRvVHlwZSgpOwotICAgICAgICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5r
bm93bikKLSAgICAgICAgICAgICQkID0gMDsKLSAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NT
ZWxlY3Rvcjo6UHNldWRvTnRoQ2hpbGQgfHwKLSAgICAgICAgICAgICAgICAgdHlwZSA9PSBDU1NT
ZWxlY3Rvcjo6UHNldWRvTnRoT2ZUeXBlIHx8Ci0gICAgICAgICAgICAgICAgIHR5cGUgPT0gQ1NT
U2VsZWN0b3I6OlBzZXVkb050aExhc3RDaGlsZCB8fAotICAgICAgICAgICAgICAgICB0eXBlID09
IENTU1NlbGVjdG9yOjpQc2V1ZG9OdGhMYXN0T2ZUeXBlKSB7Ci0gICAgICAgICAgICBpZiAoIWlz
VmFsaWROdGhUb2tlbigkNCkpCi0gICAgICAgICAgICAgICAgJCQgPSAwOwotICAgICAgICB9Ci0g
ICAgfQotICAgIC8vIHVzZWQgYnkgOm5vdAotICAgIHwgJzonIE5PVEZVTkNUSU9OIG1heWJlX3Nw
YWNlIHNpbXBsZV9zZWxlY3RvciBtYXliZV9zcGFjZSAnKScgewotICAgICAgICBpZiAoISQ0IHx8
ICEkNC0+aXNTaW1wbGUoKSkKLSAgICAgICAgICAgICQkID0gMDsKLSAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAg
ICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7Ci0KLSAgICAgICAg
ICAgIENTU1NlbGVjdG9yVmVjdG9yIHNlbGVjdG9yVmVjdG9yOwotICAgICAgICAgICAgc2VsZWN0
b3JWZWN0b3IuYXBwZW5kKHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDQpKTsKLSAgICAg
ICAgICAgICQkLT5hZG9wdFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9yVmVjdG9yKTsKLQotICAgICAg
ICAgICAgJDIubG93ZXIoKTsKLSAgICAgICAgICAgICQkLT5zZXRWYWx1ZSgkMik7Ci0gICAgICAg
IH0KLSAgICB9Ci0gIDsKLQotZGVjbGFyYXRpb25fbGlzdDoKLSAgICBkZWNsYXJhdGlvbiB7Ci0g
ICAgICAgICQkID0gJDE7Ci0gICAgfQotICAgIHwgZGVjbF9saXN0IGRlY2xhcmF0aW9uIHsKLSAg
ICAgICAgJCQgPSAkMTsKLSAgICAgICAgaWYgKCAkMiApCi0gICAgICAgICAgICAkJCA9ICQyOwot
ICAgIH0KLSAgICB8IGRlY2xfbGlzdCB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAgIHwg
ZXJyb3IgaW52YWxpZF9ibG9ja19saXN0IGVycm9yIHsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAg
ICB9Ci0gICAgfCBlcnJvciB7Ci0gICAgICAgICQkID0gZmFsc2U7Ci0gICAgfQotICAgIHwgZGVj
bF9saXN0IGVycm9yIHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICB9Ci0gICAgfCBkZWNsX2xpc3Qg
aW52YWxpZF9ibG9ja19saXN0IHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICB9Ci0gICAgOwotCi1k
ZWNsX2xpc3Q6Ci0gICAgZGVjbGFyYXRpb24gJzsnIG1heWJlX3NwYWNlIHsKLSAgICAgICAgcGFy
c2VyLT5tYXJrUHJvcGVydHlTdGFydCgpOwotICAgICAgICAkJCA9ICQxOwotICAgIH0KLSAgICB8
IGRlY2xhcmF0aW9uIGludmFsaWRfYmxvY2tfbGlzdCBtYXliZV9zcGFjZSB7Ci0gICAgICAgICQk
ID0gZmFsc2U7Ci0gICAgfQotICAgIHwgZGVjbGFyYXRpb24gaW52YWxpZF9ibG9ja19saXN0ICc7
JyBtYXliZV9zcGFjZSB7Ci0gICAgICAgICQkID0gZmFsc2U7Ci0gICAgfQotICAgIHwgZXJyb3Ig
JzsnIG1heWJlX3NwYWNlIHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlTdGFydCgpOwot
ICAgICAgICAkJCA9IGZhbHNlOwotICAgIH0KLSAgICB8IGVycm9yIGludmFsaWRfYmxvY2tfbGlz
dCBlcnJvciAnOycgbWF5YmVfc3BhY2UgewotICAgICAgICAkJCA9IGZhbHNlOwotICAgIH0KLSAg
ICB8IGRlY2xfbGlzdCBkZWNsYXJhdGlvbiAnOycgbWF5YmVfc3BhY2UgewotICAgICAgICBwYXJz
ZXItPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgICAgIGlmICgk
MikKLSAgICAgICAgICAgICQkID0gJDI7Ci0gICAgfQotICAgIHwgZGVjbF9saXN0IGVycm9yICc7
JyBtYXliZV9zcGFjZSB7Ci0gICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5U3RhcnQoKTsKLSAg
ICAgICAgJCQgPSAkMTsKLSAgICB9Ci0gICAgfCBkZWNsX2xpc3QgZXJyb3IgaW52YWxpZF9ibG9j
a19saXN0IGVycm9yICc7JyBtYXliZV9zcGFjZSB7Ci0gICAgICAgIHBhcnNlci0+bWFya1Byb3Bl
cnR5U3RhcnQoKTsKLSAgICAgICAgJCQgPSAkMTsKLSAgICB9Ci0gICAgOwotCi1kZWNsYXJhdGlv
bjoKLSAgICBWQVJfREVGSU5JVElPTiAnOicgbWF5YmVfc3BhY2UgZXhwciBwcmlvIHsKLSNpZiBF
TkFCTEUoQ1NTX1ZBUklBQkxFUykKLSAgICAgICAgcGFyc2VyLT5zdG9yZVZhcmlhYmxlRGVjbGFy
YXRpb24oJDEsIHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQ0KSwgJDUpOwotICAgICAg
ICAkJCA9IHRydWU7Ci0gICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5RW5kKCQ1LCB0cnVlKTsK
LSNlbHNlCi0gICAgICAgICQkID0gZmFsc2U7Ci0jZW5kaWYKLSAgICB9Ci0gICAgfAotICAgIHBy
b3BlcnR5ICc6JyBtYXliZV9zcGFjZSBleHByIHByaW8gewotICAgICAgICAkJCA9IGZhbHNlOwot
ICAgICAgICBib29sIGlzUHJvcGVydHlQYXJzZWQgPSBmYWxzZTsKLSAgICAgICAgaWYgKCQxICYm
ICQ0KSB7Ci0gICAgICAgICAgICBwYXJzZXItPm1fdmFsdWVMaXN0ID0gcGFyc2VyLT5zaW5rRmxv
YXRpbmdWYWx1ZUxpc3QoJDQpOwotICAgICAgICAgICAgaW50IG9sZFBhcnNlZFByb3BlcnRpZXMg
PSBwYXJzZXItPm1fcGFyc2VkUHJvcGVydGllcy0+c2l6ZSgpOwotICAgICAgICAgICAgJCQgPSBw
YXJzZXItPnBhcnNlVmFsdWUoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oJDEpLCAkNSk7Ci0g
ICAgICAgICAgICBpZiAoISQkKQotICAgICAgICAgICAgICAgIHBhcnNlci0+cm9sbGJhY2tMYXN0
UHJvcGVydGllcyhwYXJzZXItPm1fcGFyc2VkUHJvcGVydGllcy0+c2l6ZSgpIC0gb2xkUGFyc2Vk
UHJvcGVydGllcyk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgaXNQcm9wZXJ0
eVBhcnNlZCA9IHRydWU7Ci0gICAgICAgICAgICBwYXJzZXItPm1fdmFsdWVMaXN0ID0gbnVsbHB0
cjsKLSAgICAgICAgfQotICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eUVuZCgkNSwgaXNQcm9w
ZXJ0eVBhcnNlZCk7Ci0gICAgfQotICAgIHwKLSAgICBwcm9wZXJ0eSBlcnJvciB7Ci0gICAgICAg
ICQkID0gZmFsc2U7Ci0gICAgfQotICAgIHwKLSAgICBwcm9wZXJ0eSAnOicgbWF5YmVfc3BhY2Ug
ZXJyb3IgZXhwciBwcmlvIHsKLSAgICAgICAgLyogVGhlIGRlZmF1bHQgbW92YWJsZSB0eXBlIHRl
bXBsYXRlIGhhcyBsZXR0ZXItc3BhY2luZzogLm5vbmU7ICBIYW5kbGUgdGhpcyBieSBsb29raW5n
IGZvcgotICAgICAgICBlcnJvciB0b2tlbnMgYXQgdGhlIHN0YXJ0IG9mIGFuIGV4cHIsIHJlY292
ZXIgdGhlIGV4cHIgYW5kIHRoZW4gdHJlYXQgYXMgYW4gZXJyb3IsIGNsZWFuaW5nCi0gICAgICAg
IHVwIGFuZCBkZWxldGluZyB0aGUgc2hpZnRlZCBleHByLiAgKi8KLSAgICAgICAgcGFyc2VyLT5t
YXJrUHJvcGVydHlFbmQoZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAgICB9
Ci0gICAgfAotICAgIHByb3BlcnR5ICc6JyBtYXliZV9zcGFjZSBleHByIHByaW8gZXJyb3Igewot
ICAgICAgICAvKiBXaGVuIHdlIGVuY291bnRlciBzb21ldGhpbmcgbGlrZSBwIHtjb2xvcjogcmVk
ICFpbXBvcnRhbnQgZmFpbDt9IHdlIHNob3VsZCBkcm9wIHRoZSBkZWNsYXJhdGlvbiAqLwotICAg
ICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eUVuZChmYWxzZSwgZmFsc2UpOwotICAgICAgICAkJCA9
IGZhbHNlOwotICAgIH0KLSAgICB8Ci0gICAgSU1QT1JUQU5UX1NZTSBtYXliZV9zcGFjZSB7Ci0g
ICAgICAgIC8qIEhhbmRsZSB0aGlzIGNhc2U6IGRpdiB7IHRleHQtYWxpZ246IGNlbnRlcjsgIWlt
cG9ydGFudCB9IEp1c3QgcmVkdWNlIGF3YXkgdGhlIHN0cmF5ICFpbXBvcnRhbnQuICovCi0gICAg
ICAgICQkID0gZmFsc2U7Ci0gICAgfQotICAgIHwKLSAgICBwcm9wZXJ0eSAnOicgbWF5YmVfc3Bh
Y2UgewotICAgICAgICAvKiBkaXYgeyBmb250LWZhbWlseTogfSBKdXN0IHJlZHVjZSBhd2F5IHRo
aXMgcHJvcGVydHkgd2l0aCBubyB2YWx1ZS4gKi8KLSAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVy
dHlFbmQoZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAgICB9Ci0gICAgfAot
ICAgIHByb3BlcnR5ICc6JyBtYXliZV9zcGFjZSBlcnJvciB7Ci0gICAgICAgIC8qIGlmIHdlIGNv
bWUgYWNyb3NzIHJ1bGVzIHdpdGggaW52YWxpZCB2YWx1ZXMgbGlrZSB0aGlzIGNhc2U6IHAgeyB3
ZWlnaHQ6ICo7IH0sIGp1c3QgZGlzY2FyZCB0aGUgcnVsZSAqLwotICAgICAgICBwYXJzZXItPm1h
cmtQcm9wZXJ0eUVuZChmYWxzZSwgZmFsc2UpOwotICAgICAgICAkJCA9IGZhbHNlOwotICAgIH0K
LSAgICB8Ci0gICAgcHJvcGVydHkgaW52YWxpZF9ibG9jayB7Ci0gICAgICAgIC8qIGlmIHdlIGNv
bWUgYWNyb3NzOiBkaXYgeyBjb2xvcns7Y29sb3I6bWFyb29ufSB9LCBpZ25vcmUgZXZlcnl0aGlu
ZyB3aXRoaW4gY3VybHkgYnJhY2tldHMgKi8KLSAgICAgICAgJCQgPSBmYWxzZTsKLSAgICB9Ci0g
IDsKLQotcHJvcGVydHk6Ci0gICAgSURFTlQgbWF5YmVfc3BhY2UgewotICAgICAgICAkJCA9IGNz
c1Byb3BlcnR5SUQoJDEpOwotICAgIH0KLSAgOwotCi1wcmlvOgotICAgIElNUE9SVEFOVF9TWU0g
bWF5YmVfc3BhY2UgeyAkJCA9IHRydWU7IH0KLSAgICB8IC8qIGVtcHR5ICovIHsgJCQgPSBmYWxz
ZTsgfQotICA7Ci0KLWV4cHI6Ci0gICAgdGVybSB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVh
dGVGbG9hdGluZ1ZhbHVlTGlzdCgpOwotICAgICAgICAkJC0+YWRkVmFsdWUocGFyc2VyLT5zaW5r
RmxvYXRpbmdWYWx1ZSgkMSkpOwotICAgIH0KLSAgICB8IGV4cHIgb3BlcmF0b3IgdGVybSB7Ci0g
ICAgICAgICQkID0gJDE7Ci0gICAgICAgIGlmICgkJCkgewotICAgICAgICAgICAgaWYgKCQyKSB7
Ci0gICAgICAgICAgICAgICAgQ1NTUGFyc2VyVmFsdWUgdjsKLSAgICAgICAgICAgICAgICB2Lmlk
ID0gMDsKLSAgICAgICAgICAgICAgICB2LnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3I7
Ci0gICAgICAgICAgICAgICAgdi5pVmFsdWUgPSAkMjsKLSAgICAgICAgICAgICAgICAkJC0+YWRk
VmFsdWUodik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAkJC0+YWRkVmFsdWUocGFyc2Vy
LT5zaW5rRmxvYXRpbmdWYWx1ZSgkMykpOwotICAgICAgICB9Ci0gICAgfQotICAgIHwgZXhwciBp
bnZhbGlkX2Jsb2NrX2xpc3QgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgIHwgZXhwciBp
bnZhbGlkX2Jsb2NrX2xpc3QgZXJyb3IgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgIHwg
ZXhwciBlcnJvciB7Ci0gICAgICAgICQkID0gMDsKLSAgICB9Ci0gIDsKLQotb3BlcmF0b3I6Ci0g
ICAgJy8nIG1heWJlX3NwYWNlIHsKLSAgICAgICAgJCQgPSAnLyc7Ci0gICAgfQotICB8ICcsJyBt
YXliZV9zcGFjZSB7Ci0gICAgICAgICQkID0gJywnOwotICAgIH0KLSAgfCAvKiBlbXB0eSAqLyB7
Ci0gICAgICAgICQkID0gMDsKLSAgfQotICA7Ci0KLXRlcm06Ci0gIHVuYXJ5X3Rlcm0geyAkJCA9
ICQxOyB9Ci0gIHwgdW5hcnlfb3BlcmF0b3IgdW5hcnlfdGVybSB7ICQkID0gJDI7ICQkLmZWYWx1
ZSAqPSAkMTsgfQotICB8IFNUUklORyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5n
ID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORzsgfQotICB8IElE
RU5UIG1heWJlX3NwYWNlIHsKLSAgICAgICQkLmlkID0gY3NzVmFsdWVLZXl3b3JkSUQoJDEpOwot
ICAgICAgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQ7Ci0gICAgICAkJC5z
dHJpbmcgPSAkMTsKLSAgfQotICAvKiBXZSBtaWdodCBuZWVkIHRvIGFjdHVhbGx5IHBhcnNlIHRo
ZSBudW1iZXIgZnJvbSBhIGRpbWVuc2lvbiwgYnV0IHdlIGNhbid0IGp1c3QgcHV0IHNvbWV0aGlu
ZyB0aGF0IHVzZXMgJCQuc3RyaW5nIGludG8gdW5hcnlfdGVybS4gKi8KLSAgfCBESU1FTiBtYXli
ZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX0RJTUVOU0lPTjsgfQotICB8IHVuYXJ5X29wZXJhdG9yIERJTUVOIG1heWJl
X3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSAkMjsgJCQudW5pdCA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfRElNRU5TSU9OOyB9Ci0gIHwgVVJJIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAw
OyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJOyB9
Ci0gIHwgVU5JQ09ERVJBTkdFIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSAk
MTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVU5JQ09ERV9SQU5HRTsgfQotICB8
IEhFWCBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BBUlNFUl9IRVhDT0xPUjsgfQotICB8ICcjJyBtYXliZV9z
cGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gQ1NTUGFyc2VyU3RyaW5nKCk7ICQkLnVuaXQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BBUlNFUl9IRVhDT0xPUjsgfSAvKiBIYW5kbGUgZXJy
b3IgY2FzZTogImNvbG9yOiAjOyIgKi8KLSAgfCBWQVJGVU5DVElPTiBtYXliZV9zcGFjZSBJREVO
VCAnKScgbWF5YmVfc3BhY2UgewotI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQotICAgICAgJCQu
aWQgPSAwOwotICAgICAgJCQuc3RyaW5nID0gJDM7Ci0gICAgICAkJC51bml0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19WQVJJQUJMRV9OQU1FOwotI2VuZGlmCi0gIH0KLSAgLyogRklYTUU6IGFj
Y29yZGluZyB0byB0aGUgc3BlY3MgYSBmdW5jdGlvbiBjYW4gaGF2ZSBhIHVuYXJ5X29wZXJhdG9y
IGluIGZyb250LiBJIGtub3cgbm8gY2FzZSB3aGVyZSB0aGlzIG1ha2VzIHNlbnNlICovCi0gIHwg
ZnVuY3Rpb24gewotICAgICAgJCQgPSAkMTsKLSAgfQotICB8IGNhbGNfZnVuY3Rpb24gewotICAg
ICAgJCQgPSAkMTsKLSAgfQotICB8IG1pbl9vcl9tYXhfZnVuY3Rpb24gewotICAgICAgJCQgPSAk
MTsKLSAgfQotICB8ICclJyBtYXliZV9zcGFjZSB7IC8qIEhhbmRsZSB3aWR0aDogJTsgKi8KLSAg
ICAgICQkLmlkID0gMDsgJCQudW5pdCA9IDA7Ci0gIH0KLSAgOwotCi11bmFyeV90ZXJtOgotICBJ
TlRFR0VSIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5pc0ludCA9IHRydWU7ICQkLmZWYWx1
ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7IH0KLSAgfCBG
TE9BVFRPS0VOIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5pc0ludCA9IGZhbHNlOyAkJC5m
VmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOyB9Ci0g
IHwgUEVSQ0VOVEFHRSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQk
LnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0U7IH0KLSAgfCBQWFMgbWF5
YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QWDsgfQotICB8IENNUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQu
ZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0NNOyB9Ci0gIHwg
TU1TIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfTU07IH0KLSAgfCBJTlMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9
IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JTjsg
fQotICB8IFBUUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVu
aXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BUOyB9Ci0gIHwgUENTIG1heWJlX3NwYWNlIHsg
JCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUEM7IH0KLSAgfCBERUdTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAk
MTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfREVHOyB9Ci0gIHwgUkFEUyBtYXli
ZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1JBRDsgfQotICB8IEdSQURTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAk
JC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfR1JBRDsgfQot
ICB8IFRVUk5TIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5p
dCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVFVSTjsgfQotICB8IE1TRUNTIG1heWJlX3NwYWNl
IHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfTVM7IH0KLSAgfCBTRUNTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUg
PSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUzsgfQotICB8IEhFUlRaIG1h
eWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfSFo7IH0KLSAgfCBLSEVSVFogbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7
ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19LSFo7IH0K
LSAgfCBFTVMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVM7IH0KLSAgfCBRRU1TIG1heWJlX3NwYWNlIHsg
JCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpRX0VN
UzsgfQotICB8IEVYUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQk
LnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VYUzsgfQotICB8IFJFTVMgbWF5YmVfc3Bh
Y2UgewotICAgICAgJCQuaWQgPSAwOwotICAgICAgJCQuZlZhbHVlID0gJDE7Ci0gICAgICAkJC51
bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SRU1TOwotICAgICAgaWYgKHBhcnNlci0+bV9z
dHlsZVNoZWV0KQotICAgICAgICAgIHBhcnNlci0+bV9zdHlsZVNoZWV0LT5wYXJzZXJTZXRVc2Vz
UmVtVW5pdHModHJ1ZSk7Ci0gIH0KLSAgfCBWVyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQu
ZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZXOyB9Ci0gIHwg
VkggbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19WSDsgfQotICB8IFZNSU4gbWF5YmVfc3BhY2UgeyAkJC5pZCA9
IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WTUlO
OyB9Ci0gIHwgRFBQWCBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQk
LnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQUFg7IH0KLSAgfCBEUEkgbWF5YmVfc3Bh
Y2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19EUEk7IH0KLSAgfCBEUENNIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFs
dWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRFBDTTsgfQotICA7Ci0K
LWZ1bmN0aW9uOgotICAgIEZVTkNUSU9OIG1heWJlX3NwYWNlIGV4cHIgJyknIG1heWJlX3NwYWNl
IHsKLSAgICAgICAgQ1NTUGFyc2VyRnVuY3Rpb24qIGYgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5n
RnVuY3Rpb24oKTsKLSAgICAgICAgZi0+bmFtZSA9ICQxOwotICAgICAgICBmLT5hcmdzID0gcGFy
c2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDMpOwotICAgICAgICAkJC5pZCA9IDA7Ci0gICAg
ICAgICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb247Ci0gICAgICAgICQkLmZ1bmN0
aW9uID0gZjsKLSAgICB9IHwKLSAgICBGVU5DVElPTiBtYXliZV9zcGFjZSBleHByIFRPS0VOX0VP
RiB7Ci0gICAgICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9hdGlu
Z0Z1bmN0aW9uKCk7Ci0gICAgICAgIGYtPm5hbWUgPSAkMTsKLSAgICAgICAgZi0+YXJncyA9IHBh
cnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQzKTsKLSAgICAgICAgJCQuaWQgPSAwOwotICAg
ICAgICAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uOwotICAgICAgICAkJC5mdW5j
dGlvbiA9IGY7Ci0gICAgfSB8Ci0gICAgRlVOQ1RJT04gbWF5YmVfc3BhY2UgJyknIG1heWJlX3Nw
YWNlIHsKLSAgICAgICAgQ1NTUGFyc2VyRnVuY3Rpb24qIGYgPSBwYXJzZXItPmNyZWF0ZUZsb2F0
aW5nRnVuY3Rpb24oKTsKLSAgICAgICAgZi0+bmFtZSA9ICQxOwotICAgICAgICBDU1NQYXJzZXJW
YWx1ZUxpc3QqIHZhbHVlTGlzdCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdWYWx1ZUxpc3QoKTsK
LSAgICAgICAgZi0+YXJncyA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KHZhbHVlTGlz
dCk7Ci0gICAgICAgICQkLmlkID0gMDsKLSAgICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVl
OjpGdW5jdGlvbjsKLSAgICAgICAgJCQuZnVuY3Rpb24gPSBmOwotICAgIH0gfAotICAgIEZVTkNU
SU9OIG1heWJlX3NwYWNlIGVycm9yIHsKLSAgICAgICAgQ1NTUGFyc2VyRnVuY3Rpb24qIGYgPSBw
YXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsKLSAgICAgICAgZi0+bmFtZSA9ICQxOwot
ICAgICAgICBmLT5hcmdzID0gbnVsbHB0cjsKLSAgICAgICAgJCQuaWQgPSAwOwotICAgICAgICAk
JC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uOwotICAgICAgICAkJC5mdW5jdGlvbiA9
IGY7Ci0gIH0KLSAgOwotIAotY2FsY19mdW5jX3Rlcm06Ci0gIHVuYXJ5X3Rlcm0geyAkJCA9ICQx
OyB9Ci0gIHwgVkFSRlVOQ1RJT04gbWF5YmVfc3BhY2UgSURFTlQgJyknIG1heWJlX3NwYWNlIHsK
LSNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKLSAgICAgICQkLmlkID0gMDsKLSAgICAgICQkLnN0
cmluZyA9ICQzOwotICAgICAgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVkFSSUFC
TEVfTkFNRTsKLSNlbmRpZgotICB9Ci0gIHwgdW5hcnlfb3BlcmF0b3IgdW5hcnlfdGVybSB7ICQk
ID0gJDI7ICQkLmZWYWx1ZSAqPSAkMTsgfQotICA7Ci0KLWNhbGNfZnVuY19vcGVyYXRvcjoKLSAg
ICAnKycgV0hJVEVTUEFDRSB7Ci0gICAgICAgICQkID0gJysnOwotICAgIH0KLSAgICB8ICctJyBX
SElURVNQQUNFIHsKLSAgICAgICAgJCQgPSAnLSc7Ci0gICAgfQotICAgIHwgJyonIG1heWJlX3Nw
YWNlIHsKLSAgICAgICAgJCQgPSAnKic7Ci0gICAgfQotICAgIHwgJy8nIG1heWJlX3NwYWNlIHsK
LSAgICAgICAgJCQgPSAnLyc7Ci0gICAgfQotICA7Ci0KLWNhbGNfZnVuY19wYXJlbl9leHByOgot
ICAgICcoJyBtYXliZV9zcGFjZSBjYWxjX2Z1bmNfZXhwciBtYXliZV9zcGFjZSAnKScgbWF5YmVf
c3BhY2UgewotICAgICAgICBpZiAoJDMpIHsKLSAgICAgICAgICAgICQkID0gJDM7Ci0gICAgICAg
ICAgICBDU1NQYXJzZXJWYWx1ZSB2OwotICAgICAgICAgICAgdi5pZCA9IDA7Ci0gICAgICAgICAg
ICB2LnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3I7Ci0gICAgICAgICAgICB2LmlWYWx1
ZSA9ICcoJzsKLSAgICAgICAgICAgICQkLT5pbnNlcnRWYWx1ZUF0KDAsIHYpOwotICAgICAgICAg
ICAgdi5pVmFsdWUgPSAnKSc7Ci0gICAgICAgICAgICAkJC0+YWRkVmFsdWUodik7Ci0gICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgJCQgPSAwOwotICAgIH0KLQotY2FsY19mdW5jX2V4cHI6Ci0g
ICAgY2FsY19mdW5jX3Rlcm0gbWF5YmVfc3BhY2UgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3Jl
YXRlRmxvYXRpbmdWYWx1ZUxpc3QoKTsKLSAgICAgICAgJCQtPmFkZFZhbHVlKHBhcnNlci0+c2lu
a0Zsb2F0aW5nVmFsdWUoJDEpKTsKLSAgICB9Ci0gICAgfCBjYWxjX2Z1bmNfZXhwciBjYWxjX2Z1
bmNfb3BlcmF0b3IgY2FsY19mdW5jX3Rlcm0gewotICAgICAgICBpZiAoJDEgJiYgJDIpIHsKLSAg
ICAgICAgICAgICQkID0gJDE7Ci0gICAgICAgICAgICBDU1NQYXJzZXJWYWx1ZSB2OwotICAgICAg
ICAgICAgdi5pZCA9IDA7Ci0gICAgICAgICAgICB2LnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6T3Bl
cmF0b3I7Ci0gICAgICAgICAgICB2LmlWYWx1ZSA9ICQyOwotICAgICAgICAgICAgJCQtPmFkZFZh
bHVlKHYpOwotICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHBhcnNlci0+c2lua0Zsb2F0aW5nVmFs
dWUoJDMpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAkJCA9IDA7Ci0KLSAgICB9Ci0g
ICAgfCBjYWxjX2Z1bmNfZXhwciBjYWxjX2Z1bmNfb3BlcmF0b3IgY2FsY19mdW5jX3BhcmVuX2V4
cHIgewotICAgICAgICBpZiAoJDEgJiYgJDIgJiYgJDMpIHsKLSAgICAgICAgICAgICQkID0gJDE7
Ci0gICAgICAgICAgICBDU1NQYXJzZXJWYWx1ZSB2OwotICAgICAgICAgICAgdi5pZCA9IDA7Ci0g
ICAgICAgICAgICB2LnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3I7Ci0gICAgICAgICAg
ICB2LmlWYWx1ZSA9ICQyOwotICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHYpOwotICAgICAgICAg
ICAgJCQtPmV4dGVuZCgqKCQzKSk7Ci0gICAgICAgIH0gZWxzZSAKLSAgICAgICAgICAgICQkID0g
MDsKLSAgICB9Ci0gICAgfCBjYWxjX2Z1bmNfcGFyZW5fZXhwcgotICAgIHwgY2FsY19mdW5jX2V4
cHIgZXJyb3IgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICA7Ci0KLWNhbGNfZnVuY19leHBy
X2xpc3Q6Ci0gICAgY2FsY19mdW5jX2V4cHIgIHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICB9ICAg
IAotICAgIHwgY2FsY19mdW5jX2V4cHJfbGlzdCAnLCcgbWF5YmVfc3BhY2UgY2FsY19mdW5jX2V4
cHIgewotICAgICAgICBpZiAoJDEgJiYgJDQpIHsKLSAgICAgICAgICAgICQkID0gJDE7Ci0gICAg
ICAgICAgICBDU1NQYXJzZXJWYWx1ZSB2OwotICAgICAgICAgICAgdi5pZCA9IDA7Ci0gICAgICAg
ICAgICB2LnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3I7Ci0gICAgICAgICAgICB2LmlW
YWx1ZSA9ICcsJzsKLSAgICAgICAgICAgICQkLT5hZGRWYWx1ZSh2KTsKLSAgICAgICAgICAgICQk
LT5leHRlbmQoKigkNCkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICQkID0gMDsKLSAg
ICB9Ci0gICAgCi0KLWNhbGNfZnVuY3Rpb246Ci0gICAgQ0FMQ0ZVTkNUSU9OIG1heWJlX3NwYWNl
IGNhbGNfZnVuY19leHByICcpJyBtYXliZV9zcGFjZSB7Ci0gICAgICAgIENTU1BhcnNlckZ1bmN0
aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7Ci0gICAgICAgIGYtPm5h
bWUgPSAkMTsKLSAgICAgICAgZi0+YXJncyA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0
KCQzKTsKLSAgICAgICAgJCQuaWQgPSAwOwotICAgICAgICAkJC51bml0ID0gQ1NTUGFyc2VyVmFs
dWU6OkZ1bmN0aW9uOwotICAgICAgICAkJC5mdW5jdGlvbiA9IGY7Ci0gICAgfQotICAgIHwgQ0FM
Q0ZVTkNUSU9OIG1heWJlX3NwYWNlIGVycm9yIHsKLSAgICAgICAgWVlFUlJPUjsKLSAgICB9Ci0g
ICAgOwotCi0KLW1pbl9vcl9tYXg6Ci0gICAgTUlORlVOQ1RJT04gewotICAgICAgICAkJCA9ICQx
OwotICAgIH0KLSAgICB8IE1BWEZVTkNUSU9OIHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICB9Ci0g
ICAgOwotCi1taW5fb3JfbWF4X2Z1bmN0aW9uOgotICAgIG1pbl9vcl9tYXggbWF5YmVfc3BhY2Ug
Y2FsY19mdW5jX2V4cHJfbGlzdCAnKScgbWF5YmVfc3BhY2UgewotICAgICAgICBDU1NQYXJzZXJG
dW5jdGlvbiogZiA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdGdW5jdGlvbigpOwotICAgICAgICBm
LT5uYW1lID0gJDE7Ci0gICAgICAgIGYtPmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVl
TGlzdCgkMyk7Ci0gICAgICAgICQkLmlkID0gMDsKLSAgICAgICAgJCQudW5pdCA9IENTU1BhcnNl
clZhbHVlOjpGdW5jdGlvbjsKLSAgICAgICAgJCQuZnVuY3Rpb24gPSBmOwotICAgIH0gCi0gICAg
fCBtaW5fb3JfbWF4IG1heWJlX3NwYWNlIGVycm9yIHsKLSAgICAgICAgWVlFUlJPUjsKLSAgICB9
Ci0gICAgOwotCi0vKiBlcnJvciBoYW5kbGluZyBydWxlcyAqLwotCi1zYXZlX2Jsb2NrOgotICAg
IGNsb3NpbmdfYnJhY2UgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICB8IGVycm9yIGNsb3Np
bmdfYnJhY2UgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgIDsKLQotaW52YWxpZF9hdDoK
LSAgICBBVEtFWVdPUkQgZXJyb3IgaW52YWxpZF9ibG9jayB7Ci0gICAgICAgICQkID0gMDsKLSAg
ICB9Ci0gIHwgQVRLRVlXT1JEIGVycm9yICc7JyB7Ci0gICAgICAgICQkID0gMDsKLSAgICB9Ci0g
ICAgOwotCi1pbnZhbGlkX3J1bGU6Ci0gICAgZXJyb3IgaW52YWxpZF9ibG9jayB7Ci0gICAgICAg
ICQkID0gMDsKLSAgICB9Ci0KLS8qCi0gIFNlZW1zIGxpa2UgdGhlIHR3byBydWxlcyBiZWxvdyBh
cmUgdHJ5aW5nIHRvbyBtdWNoIGFuZCB2aW9sYXRpbmcKLSAgaHR0cDovL3d3dy5oaXhpZS5jaC90
ZXN0cy9ldmlsL21peGVkL2Nzc2Vycm9yaGFuZGxpbmcuaHRtbAotCi0gIHwgZXJyb3IgJzsnIHsK
LSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgfCBlcnJvciAnfScgewotICAgICAgICAkJCA9IDA7
Ci0gICAgfQotKi8KLSAgICA7Ci0KLWludmFsaWRfYmxvY2s6Ci0gICAgJ3snIGVycm9yIGludmFs
aWRfYmxvY2tfbGlzdCBlcnJvciBjbG9zaW5nX2JyYWNlIHsKLSAgICAgICAgcGFyc2VyLT5pbnZh
bGlkQmxvY2tIaXQoKTsKLSAgICB9Ci0gIHwgJ3snIGVycm9yIGNsb3NpbmdfYnJhY2UgewotICAg
ICAgICBwYXJzZXItPmludmFsaWRCbG9ja0hpdCgpOwotICAgIH0KLSAgICA7Ci0KLWludmFsaWRf
YmxvY2tfbGlzdDoKLSAgICBpbnZhbGlkX2Jsb2NrCi0gIHwgaW52YWxpZF9ibG9ja19saXN0IGVy
cm9yIGludmFsaWRfYmxvY2sKLTsKLQotJSUKLQotI2lmIFlZREVCVUcgPiAwCi1zdGF0aWMgdm9p
ZCBwcmludF90b2tlbl92YWx1ZShGSUxFICogeXlvdXRwdXQsIGludCB5eXR5cGUsIFlZU1RZUEUg
Y29uc3QgJnl5dmFsdWUpCi17Ci0gICAgc3dpdGNoICh5eXR5cGUpIHsKLSAgICBjYXNlIElERU5U
OgotICAgIGNhc2UgU1RSSU5HOgotICAgIGNhc2UgTlRIOgotICAgIGNhc2UgSEVYOgotICAgIGNh
c2UgSURTRUw6Ci0gICAgY2FzZSBESU1FTjoKLSAgICBjYXNlIElOVkFMSURESU1FTjoKLSAgICBj
YXNlIFVSSToKLSAgICBjYXNlIEZVTkNUSU9OOgotICAgIGNhc2UgQU5ZRlVOQ1RJT046Ci0gICAg
Y2FzZSBOT1RGVU5DVElPTjoKLSAgICBjYXNlIENBTENGVU5DVElPTjoKLSAgICBjYXNlIE1JTkZV
TkNUSU9OOgotICAgIGNhc2UgTUFYRlVOQ1RJT046Ci0gICAgY2FzZSBWQVJfREVGSU5JVElPTjoK
LSAgICBjYXNlIFVOSUNPREVSQU5HRToKLSAgICAgICAgWVlGUFJJTlRGKHl5b3V0cHV0LCAiJXMi
LCBTdHJpbmcoeXl2YWx1ZS5zdHJpbmcpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBicmVhazsK
LSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhbW1hci55LmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczM2FlOGVkYTYyZTY0ZjAzN2JmZDAwYjVh
ODQxNzhkZjI3NmJlZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
R3JhbW1hci55LmluCkBAIC0wLDAgKzEsMTcwMyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIw
MDItMjAwMyBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3Yg
KGFwQG55cG9wLmNvbSkKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNA
d2Via2l0Lm9yZz4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICoKKyAqLworCislcHVyZV9w
YXJzZXIKKworJXBhcnNlLXBhcmFtIHsgQ1NTUGFyc2VyKiBwYXJzZXIgfQorJWxleC1wYXJhbSB7
IENTU1BhcnNlciogcGFyc2VyIH0KKworJXVuaW9uIHsKKyAgICBib29sIGJvb2xlYW47CisgICAg
Y2hhciBjaGFyYWN0ZXI7CisgICAgaW50IGludGVnZXI7CisgICAgZG91YmxlIG51bWJlcjsKKyAg
ICBDU1NQYXJzZXJTdHJpbmcgc3RyaW5nOworCisgICAgU3R5bGVSdWxlQmFzZSogcnVsZTsKKyAg
ICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+ID4qIHJ1bGVMaXN0OworICAgIENTU1BhcnNl
clNlbGVjdG9yKiBzZWxlY3RvcjsKKyAgICBDU1NTZWxlY3RvclZlY3Rvciogc2VsZWN0b3JMaXN0
OworICAgIENTU1NlbGVjdG9yOjpNYXJnaW5Cb3hUeXBlIG1hcmdpbkJveDsKKyAgICBDU1NTZWxl
Y3Rvcjo6UmVsYXRpb24gcmVsYXRpb247CisgICAgTWVkaWFRdWVyeVNldCogbWVkaWFMaXN0Owor
ICAgIE1lZGlhUXVlcnkqIG1lZGlhUXVlcnk7CisgICAgTWVkaWFRdWVyeTo6UmVzdHJpY3RvciBt
ZWRpYVF1ZXJ5UmVzdHJpY3RvcjsKKyAgICBNZWRpYVF1ZXJ5RXhwKiBtZWRpYVF1ZXJ5RXhwOwor
ICAgIENTU1BhcnNlclZhbHVlIHZhbHVlOworICAgIENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVM
aXN0OworICAgIFZlY3RvcjxPd25QdHI8TWVkaWFRdWVyeUV4cD4gPiogbWVkaWFRdWVyeUV4cExp
c3Q7CisgICAgU3R5bGVLZXlmcmFtZSoga2V5ZnJhbWU7CisgICAgVmVjdG9yPFJlZlB0cjxTdHls
ZUtleWZyYW1lPiA+KiBrZXlmcmFtZVJ1bGVMaXN0OworICAgIGZsb2F0IHZhbDsKKyAgICBDU1NQ
cm9wZXJ0eUlEIGlkOworfQorCisleworCitzdGF0aWMgaW5saW5lIGludCBjc3N5eWVycm9yKHZv
aWQqLCBjb25zdCBjaGFyKikKK3sKKyAgICByZXR1cm4gMTsKK30KKworJX0KKworJWV4cGVjdCA2
NQorCislbm9uYXNzb2MgTE9XRVNUX1BSRUMKKworJWxlZnQgVU5JTVBPUlRBTlRfVE9LCisKKyV0
b2tlbiBXSElURVNQQUNFIFNHTUxfQ0QKKyV0b2tlbiBUT0tFTl9FT0YgMAorCisldG9rZW4gSU5D
TFVERVMKKyV0b2tlbiBEQVNITUFUQ0gKKyV0b2tlbiBCRUdJTlNXSVRICisldG9rZW4gRU5EU1dJ
VEgKKyV0b2tlbiBDT05UQUlOUworCisldG9rZW4gPHN0cmluZz4gU1RSSU5HCislcmlnaHQgPHN0
cmluZz4gSURFTlQKKyV0b2tlbiA8c3RyaW5nPiBOVEgKKworJW5vbmFzc29jIDxzdHJpbmc+IEhF
WAorJW5vbmFzc29jIDxzdHJpbmc+IElEU0VMCislbm9uYXNzb2MgJzonCislbm9uYXNzb2MgJy4n
Cislbm9uYXNzb2MgJ1snCislbm9uYXNzb2MgPHN0cmluZz4gJyonCislbm9uYXNzb2MgZXJyb3IK
KyVsZWZ0ICd8JworCisldG9rZW4gSU1QT1JUX1NZTQorJXRva2VuIFBBR0VfU1lNCisldG9rZW4g
TUVESUFfU1lNCisldG9rZW4gRk9OVF9GQUNFX1NZTQorJXRva2VuIENIQVJTRVRfU1lNCisldG9r
ZW4gTkFNRVNQQUNFX1NZTQorJXRva2VuIFZBUkZVTkNUSU9OCisldG9rZW4gV0VCS0lUX1JVTEVf
U1lNCisldG9rZW4gV0VCS0lUX0RFQ0xTX1NZTQorJXRva2VuIFdFQktJVF9LRVlGUkFNRV9SVUxF
X1NZTQorJXRva2VuIFdFQktJVF9LRVlGUkFNRVNfU1lNCisldG9rZW4gV0VCS0lUX1ZBTFVFX1NZ
TQorJXRva2VuIFdFQktJVF9NRURJQVFVRVJZX1NZTQorJXRva2VuIFdFQktJVF9TRUxFQ1RPUl9T
WU0KKyV0b2tlbiBXRUJLSVRfUkVHSU9OX1JVTEVfU1lNCisldG9rZW4gPG1hcmdpbkJveD4gVE9Q
TEVGVENPUk5FUl9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBUT1BMRUZUX1NZTQorJXRva2VuIDxt
YXJnaW5Cb3g+IFRPUENFTlRFUl9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBUT1BSSUdIVF9TWU0K
KyV0b2tlbiA8bWFyZ2luQm94PiBUT1BSSUdIVENPUk5FUl9TWU0KKyV0b2tlbiA8bWFyZ2luQm94
PiBCT1RUT01MRUZUQ09STkVSX1NZTQorJXRva2VuIDxtYXJnaW5Cb3g+IEJPVFRPTUxFRlRfU1lN
CisldG9rZW4gPG1hcmdpbkJveD4gQk9UVE9NQ0VOVEVSX1NZTQorJXRva2VuIDxtYXJnaW5Cb3g+
IEJPVFRPTVJJR0hUX1NZTQorJXRva2VuIDxtYXJnaW5Cb3g+IEJPVFRPTVJJR0hUQ09STkVSX1NZ
TQorJXRva2VuIDxtYXJnaW5Cb3g+IExFRlRUT1BfU1lNCisldG9rZW4gPG1hcmdpbkJveD4gTEVG
VE1JRERMRV9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBMRUZUQk9UVE9NX1NZTQorJXRva2VuIDxt
YXJnaW5Cb3g+IFJJR0hUVE9QX1NZTQorJXRva2VuIDxtYXJnaW5Cb3g+IFJJR0hUTUlERExFX1NZ
TQorJXRva2VuIDxtYXJnaW5Cb3g+IFJJR0hUQk9UVE9NX1NZTQorCisldG9rZW4gQVRLRVlXT1JE
CisKKyV0b2tlbiBJTVBPUlRBTlRfU1lNCisldG9rZW4gTUVESUFfT05MWQorJXRva2VuIE1FRElB
X05PVAorJXRva2VuIE1FRElBX0FORAorCisldG9rZW4gPG51bWJlcj4gUkVNUworJXRva2VuIDxu
dW1iZXI+IFFFTVMKKyV0b2tlbiA8bnVtYmVyPiBFTVMKKyV0b2tlbiA8bnVtYmVyPiBFWFMKKyV0
b2tlbiA8bnVtYmVyPiBQWFMKKyV0b2tlbiA8bnVtYmVyPiBDTVMKKyV0b2tlbiA8bnVtYmVyPiBN
TVMKKyV0b2tlbiA8bnVtYmVyPiBJTlMKKyV0b2tlbiA8bnVtYmVyPiBQVFMKKyV0b2tlbiA8bnVt
YmVyPiBQQ1MKKyV0b2tlbiA8bnVtYmVyPiBERUdTCisldG9rZW4gPG51bWJlcj4gUkFEUworJXRv
a2VuIDxudW1iZXI+IEdSQURTCisldG9rZW4gPG51bWJlcj4gVFVSTlMKKyV0b2tlbiA8bnVtYmVy
PiBNU0VDUworJXRva2VuIDxudW1iZXI+IFNFQ1MKKyV0b2tlbiA8bnVtYmVyPiBIRVJUWgorJXRv
a2VuIDxudW1iZXI+IEtIRVJUWgorJXRva2VuIDxzdHJpbmc+IERJTUVOCisldG9rZW4gPHN0cmlu
Zz4gSU5WQUxJRERJTUVOCisldG9rZW4gPG51bWJlcj4gUEVSQ0VOVEFHRQorJXRva2VuIDxudW1i
ZXI+IEZMT0FUVE9LRU4KKyV0b2tlbiA8bnVtYmVyPiBJTlRFR0VSCisldG9rZW4gPG51bWJlcj4g
VlcKKyV0b2tlbiA8bnVtYmVyPiBWSAorJXRva2VuIDxudW1iZXI+IFZNSU4KKyV0b2tlbiA8bnVt
YmVyPiBEUFBYCisldG9rZW4gPG51bWJlcj4gRFBJCisldG9rZW4gPG51bWJlcj4gRFBDTQorCisl
dG9rZW4gPHN0cmluZz4gVVJJCisldG9rZW4gPHN0cmluZz4gRlVOQ1RJT04KKyV0b2tlbiA8c3Ry
aW5nPiBBTllGVU5DVElPTgorJXRva2VuIDxzdHJpbmc+IE5PVEZVTkNUSU9OCisldG9rZW4gPHN0
cmluZz4gQ0FMQ0ZVTkNUSU9OCisldG9rZW4gPHN0cmluZz4gTUlORlVOQ1RJT04KKyV0b2tlbiA8
c3RyaW5nPiBNQVhGVU5DVElPTgorJXRva2VuIDxzdHJpbmc+IFZBUl9ERUZJTklUSU9OCisKKyV0
b2tlbiA8c3RyaW5nPiBVTklDT0RFUkFOR0UKKworJXR5cGUgPHJlbGF0aW9uPiBjb21iaW5hdG9y
CisKKyV0eXBlIDxydWxlPiBjaGFyc2V0CisldHlwZSA8cnVsZT4gaWdub3JlZF9jaGFyc2V0Cisl
dHlwZSA8cnVsZT4gcnVsZXNldAorJXR5cGUgPHJ1bGU+IG1lZGlhCisldHlwZSA8cnVsZT4gaW1w
b3J0CisldHlwZSA8cnVsZT4gbmFtZXNwYWNlCisldHlwZSA8cnVsZT4gcGFnZQorJXR5cGUgPHJ1
bGU+IG1hcmdpbl9ib3gKKyV0eXBlIDxydWxlPiBmb250X2ZhY2UKKyV0eXBlIDxydWxlPiBrZXlm
cmFtZXMKKyV0eXBlIDxydWxlPiBpbnZhbGlkX3J1bGUKKyV0eXBlIDxydWxlPiBzYXZlX2Jsb2Nr
CisldHlwZSA8cnVsZT4gaW52YWxpZF9hdAorJXR5cGUgPHJ1bGU+IHJ1bGUKKyV0eXBlIDxydWxl
PiB2YWxpZF9ydWxlCisldHlwZSA8cnVsZUxpc3Q+IGJsb2NrX3J1bGVfbGlzdCAKKyV0eXBlIDxy
dWxlPiBibG9ja19ydWxlCisldHlwZSA8cnVsZT4gYmxvY2tfdmFsaWRfcnVsZQorJXR5cGUgPHJ1
bGU+IHJlZ2lvbgorCisldHlwZSA8c3RyaW5nPiBtYXliZV9uc19wcmVmaXgKKworJXR5cGUgPHN0
cmluZz4gbmFtZXNwYWNlX3NlbGVjdG9yCisKKyV0eXBlIDxzdHJpbmc+IHN0cmluZ19vcl91cmkK
KyV0eXBlIDxzdHJpbmc+IGlkZW50X29yX3N0cmluZworJXR5cGUgPHN0cmluZz4gbWVkaXVtCisl
dHlwZSA8bWFyZ2luQm94PiBtYXJnaW5fc3ltCisKKyV0eXBlIDxzdHJpbmc+IG1lZGlhX2ZlYXR1
cmUKKyV0eXBlIDxtZWRpYUxpc3Q+IG1lZGlhX2xpc3QKKyV0eXBlIDxtZWRpYUxpc3Q+IG1heWJl
X21lZGlhX2xpc3QKKyV0eXBlIDxtZWRpYVF1ZXJ5PiBtZWRpYV9xdWVyeQorJXR5cGUgPG1lZGlh
UXVlcnlSZXN0cmljdG9yPiBtYXliZV9tZWRpYV9yZXN0cmljdG9yCisldHlwZSA8dmFsdWVMaXN0
PiBtYXliZV9tZWRpYV92YWx1ZQorJXR5cGUgPG1lZGlhUXVlcnlFeHA+IG1lZGlhX3F1ZXJ5X2V4
cAorJXR5cGUgPG1lZGlhUXVlcnlFeHBMaXN0PiBtZWRpYV9xdWVyeV9leHBfbGlzdAorJXR5cGUg
PG1lZGlhUXVlcnlFeHBMaXN0PiBtYXliZV9hbmRfbWVkaWFfcXVlcnlfZXhwX2xpc3QKKworJXR5
cGUgPHN0cmluZz4ga2V5ZnJhbWVfbmFtZQorJXR5cGUgPGtleWZyYW1lPiBrZXlmcmFtZV9ydWxl
CisldHlwZSA8a2V5ZnJhbWVSdWxlTGlzdD4ga2V5ZnJhbWVzX3J1bGUKKyV0eXBlIDx2YWx1ZUxp
c3Q+IGtleV9saXN0CisldHlwZSA8dmFsdWU+IGtleQorCisldHlwZSA8aWQ+IHByb3BlcnR5CisK
KyV0eXBlIDxzZWxlY3Rvcj4gc3BlY2lmaWVyCisldHlwZSA8c2VsZWN0b3I+IHNwZWNpZmllcl9s
aXN0CisldHlwZSA8c2VsZWN0b3I+IHNpbXBsZV9zZWxlY3RvcgorJXR5cGUgPHNlbGVjdG9yPiBz
ZWxlY3RvcgorJXR5cGUgPHNlbGVjdG9yTGlzdD4gc2VsZWN0b3JfbGlzdAorJXR5cGUgPHNlbGVj
dG9yTGlzdD4gc2ltcGxlX3NlbGVjdG9yX2xpc3QKKyV0eXBlIDxzZWxlY3Rvckxpc3Q+IHJlZ2lv
bl9zZWxlY3RvcgorJXR5cGUgPHNlbGVjdG9yPiBzZWxlY3Rvcl93aXRoX3RyYWlsaW5nX3doaXRl
c3BhY2UKKyV0eXBlIDxzZWxlY3Rvcj4gY2xhc3MKKyV0eXBlIDxzZWxlY3Rvcj4gYXR0cmliCisl
dHlwZSA8c2VsZWN0b3I+IHBzZXVkbworJXR5cGUgPHNlbGVjdG9yPiBwc2V1ZG9fcGFnZQorJXR5
cGUgPHNlbGVjdG9yPiBwYWdlX3NlbGVjdG9yCisKKyV0eXBlIDxib29sZWFuPiBkZWNsYXJhdGlv
bl9saXN0CisldHlwZSA8Ym9vbGVhbj4gZGVjbF9saXN0CisldHlwZSA8Ym9vbGVhbj4gZGVjbGFy
YXRpb24KKyV0eXBlIDxib29sZWFuPiBkZWNsYXJhdGlvbnNfYW5kX21hcmdpbnMKKworJXR5cGUg
PGJvb2xlYW4+IHByaW8KKworJXR5cGUgPGludGVnZXI+IG1hdGNoCisldHlwZSA8aW50ZWdlcj4g
dW5hcnlfb3BlcmF0b3IKKyV0eXBlIDxpbnRlZ2VyPiBtYXliZV91bmFyeV9vcGVyYXRvcgorJXR5
cGUgPGNoYXJhY3Rlcj4gb3BlcmF0b3IKKworJXR5cGUgPHZhbHVlTGlzdD4gZXhwcgorJXR5cGUg
PHZhbHVlPiB0ZXJtCisldHlwZSA8dmFsdWU+IHVuYXJ5X3Rlcm0KKyV0eXBlIDx2YWx1ZT4gZnVu
Y3Rpb24KKyV0eXBlIDx2YWx1ZT4gY2FsY19mdW5jX3Rlcm0KKyV0eXBlIDxjaGFyYWN0ZXI+IGNh
bGNfZnVuY19vcGVyYXRvcgorJXR5cGUgPHZhbHVlTGlzdD4gY2FsY19mdW5jX2V4cHIKKyV0eXBl
IDx2YWx1ZUxpc3Q+IGNhbGNfZnVuY19leHByX2xpc3QKKyV0eXBlIDx2YWx1ZUxpc3Q+IGNhbGNf
ZnVuY19wYXJlbl9leHByCisldHlwZSA8dmFsdWU+IGNhbGNfZnVuY3Rpb24KKyV0eXBlIDxzdHJp
bmc+IG1pbl9vcl9tYXgKKyV0eXBlIDx2YWx1ZT4gbWluX29yX21heF9mdW5jdGlvbgorCisldHlw
ZSA8c3RyaW5nPiBlbGVtZW50X25hbWUKKyV0eXBlIDxzdHJpbmc+IGF0dHJfbmFtZQorCislJQor
CitzdHlsZXNoZWV0OgorICAgIG1heWJlX3NwYWNlIG1heWJlX2NoYXJzZXQgbWF5YmVfc2dtbCBy
dWxlX2xpc3QKKyAgfCB3ZWJraXRfcnVsZSBtYXliZV9zcGFjZQorICB8IHdlYmtpdF9kZWNscyBt
YXliZV9zcGFjZQorICB8IHdlYmtpdF92YWx1ZSBtYXliZV9zcGFjZQorICB8IHdlYmtpdF9tZWRp
YXF1ZXJ5IG1heWJlX3NwYWNlCisgIHwgd2Via2l0X3NlbGVjdG9yIG1heWJlX3NwYWNlCisgIHwg
d2Via2l0X2tleWZyYW1lX3J1bGUgbWF5YmVfc3BhY2UKKyAgOworCit3ZWJraXRfcnVsZToKKyAg
ICBXRUJLSVRfUlVMRV9TWU0gJ3snIG1heWJlX3NwYWNlIHZhbGlkX3J1bGUgbWF5YmVfc3BhY2Ug
J30nIHsKKyAgICAgICAgcGFyc2VyLT5tX3J1bGUgPSAkNDsKKyAgICB9Cis7CisKK3dlYmtpdF9r
ZXlmcmFtZV9ydWxlOgorICAgIFdFQktJVF9LRVlGUkFNRV9SVUxFX1NZTSAneycgbWF5YmVfc3Bh
Y2Uga2V5ZnJhbWVfcnVsZSBtYXliZV9zcGFjZSAnfScgeworICAgICAgICBwYXJzZXItPm1fa2V5
ZnJhbWUgPSAkNDsKKyAgICB9Cis7CisKK3dlYmtpdF9kZWNsczoKKyAgICBXRUJLSVRfREVDTFNf
U1lNICd7JyBtYXliZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRpb24gZGVjbGFyYXRpb25fbGlzdCAn
fScgeworICAgICAgICAvKiBjYW4gYmUgZW1wdHkgKi8KKyAgICB9Cis7CisKK3dlYmtpdF92YWx1
ZToKKyAgICBXRUJLSVRfVkFMVUVfU1lNICd7JyBtYXliZV9zcGFjZSBleHByICd9JyB7CisgICAg
ICAgIGlmICgkNCkgeworICAgICAgICAgICAgcGFyc2VyLT5tX3ZhbHVlTGlzdCA9IHBhcnNlci0+
c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQ0KTsKKyAgICAgICAgICAgIGludCBvbGRQYXJzZWRQcm9w
ZXJ0aWVzID0gcGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKTsKKyAgICAgICAgICAg
IGlmICghcGFyc2VyLT5wYXJzZVZhbHVlKHBhcnNlci0+bV9pZCwgcGFyc2VyLT5tX2ltcG9ydGFu
dCkpCisgICAgICAgICAgICAgICAgcGFyc2VyLT5yb2xsYmFja0xhc3RQcm9wZXJ0aWVzKHBhcnNl
ci0+bV9wYXJzZWRQcm9wZXJ0aWVzLT5zaXplKCkgLSBvbGRQYXJzZWRQcm9wZXJ0aWVzKTsKKyAg
ICAgICAgICAgIHBhcnNlci0+bV92YWx1ZUxpc3QgPSBudWxscHRyOworICAgICAgICB9CisgICAg
fQorOworCit3ZWJraXRfbWVkaWFxdWVyeToKKyAgICAgV0VCS0lUX01FRElBUVVFUllfU1lNIFdI
SVRFU1BBQ0UgbWF5YmVfc3BhY2UgbWVkaWFfcXVlcnkgJ30nIHsKKyAgICAgICAgIHBhcnNlci0+
bV9tZWRpYVF1ZXJ5ID0gcGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5KCQ0KTsKKyAgICAg
fQorOworCit3ZWJraXRfc2VsZWN0b3I6CisgICAgV0VCS0lUX1NFTEVDVE9SX1NZTSAneycgbWF5
YmVfc3BhY2Ugc2VsZWN0b3JfbGlzdCAnfScgeworICAgICAgICBpZiAoJDQpIHsKKyAgICAgICAg
ICAgIGlmIChwYXJzZXItPm1fc2VsZWN0b3JMaXN0Rm9yUGFyc2VTZWxlY3RvcikKKyAgICAgICAg
ICAgICAgICBwYXJzZXItPm1fc2VsZWN0b3JMaXN0Rm9yUGFyc2VTZWxlY3Rvci0+YWRvcHRTZWxl
Y3RvclZlY3RvcigqJDQpOworICAgICAgICB9CisgICAgfQorOworCittYXliZV9zcGFjZToKKyAg
ICAvKiBlbXB0eSAqLyAlcHJlYyBVTklNUE9SVEFOVF9UT0sKKyAgfCBtYXliZV9zcGFjZSBXSElU
RVNQQUNFCisgIDsKKworbWF5YmVfc2dtbDoKKyAgICAvKiBlbXB0eSAqLworICB8IG1heWJlX3Nn
bWwgU0dNTF9DRAorICB8IG1heWJlX3NnbWwgV0hJVEVTUEFDRQorICA7CisKK21heWJlX2NoYXJz
ZXQ6CisgICAvKiBlbXB0eSAqLworICB8IGNoYXJzZXQgeworICB9CisgIDsKKworY2xvc2luZ19i
cmFjZToKKyAgICAnfScKKyAgfCAlcHJlYyBMT1dFU1RfUFJFQyBUT0tFTl9FT0YKKyAgOworCitj
aGFyc2V0OgorICBDSEFSU0VUX1NZTSBtYXliZV9zcGFjZSBTVFJJTkcgbWF5YmVfc3BhY2UgJzsn
IHsKKyAgICAgaWYgKHBhcnNlci0+bV9zdHlsZVNoZWV0KQorICAgICAgICAgcGFyc2VyLT5tX3N0
eWxlU2hlZXQtPnBhcnNlclNldEVuY29kaW5nRnJvbUNoYXJzZXRSdWxlKCQzKTsKKyAgICAgaWYg
KHBhcnNlci0+aXNFeHRyYWN0aW5nU291cmNlRGF0YSgpICYmIHBhcnNlci0+bV9jdXJyZW50UnVs
ZURhdGFTdGFjay0+aXNFbXB0eSgpICYmIHBhcnNlci0+bV9ydWxlU291cmNlRGF0YVJlc3VsdCkK
KyAgICAgICAgIHBhcnNlci0+YWRkTmV3UnVsZVRvU291cmNlVHJlZShDU1NSdWxlU291cmNlRGF0
YTo6Y3JlYXRlVW5rbm93bigpKTsKKyAgICAgJCQgPSAwOworICB9CisgIHwgQ0hBUlNFVF9TWU0g
ZXJyb3IgaW52YWxpZF9ibG9jayB7CisgIH0KKyAgfCBDSEFSU0VUX1NZTSBlcnJvciAnOycgewor
ICB9Cis7CisKK2lnbm9yZWRfY2hhcnNldDoKKyAgICBDSEFSU0VUX1NZTSBtYXliZV9zcGFjZSBT
VFJJTkcgbWF5YmVfc3BhY2UgJzsnIHsKKyAgICAgICAgLy8gSWdub3JlIGFueSBAY2hhcnNldCBy
dWxlIG5vdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHlsZSBzaGVldC4KKyAgICAgICAgJCQg
PSAwOworICAgIH0KKyAgICB8IENIQVJTRVRfU1lNIG1heWJlX3NwYWNlICc7JyB7CisgICAgICAg
ICQkID0gMDsKKyAgICB9Cis7CisKK3J1bGVfbGlzdDoKKyAgIC8qIGVtcHR5ICovCisgfCBydWxl
X2xpc3QgcnVsZSBtYXliZV9zZ21sIHsKKyAgICAgaWYgKCQyICYmIHBhcnNlci0+bV9zdHlsZVNo
ZWV0KQorICAgICAgICAgcGFyc2VyLT5tX3N0eWxlU2hlZXQtPnBhcnNlckFwcGVuZFJ1bGUoJDIp
OworIH0KKyA7CisKK3ZhbGlkX3J1bGU6CisgICAgcnVsZXNldAorICB8IG1lZGlhCisgIHwgcGFn
ZQorICB8IGZvbnRfZmFjZQorICB8IGtleWZyYW1lcworICB8IG5hbWVzcGFjZQorICB8IGltcG9y
dAorICB8IHJlZ2lvbgorICA7CisKK3J1bGU6CisgICAgdmFsaWRfcnVsZSB7CisgICAgICAgIHBh
cnNlci0+bV9oYWRTeW50YWN0aWNhbGx5VmFsaWRDU1NSdWxlID0gdHJ1ZTsKKyAgICB9CisgIHwg
aWdub3JlZF9jaGFyc2V0CisgIHwgaW52YWxpZF9ydWxlCisgIHwgaW52YWxpZF9hdAorICA7CisK
K2Jsb2NrX3J1bGVfbGlzdDogCisgICAgLyogZW1wdHkgKi8geyAkJCA9IDA7IH0KKyAgfCBibG9j
a19ydWxlX2xpc3QgYmxvY2tfcnVsZSBtYXliZV9zZ21sIHsKKyAgICAgICQkID0gJDE7CisgICAg
ICBpZiAoJDIpIHsKKyAgICAgICAgICBpZiAoISQkKQorICAgICAgICAgICAgICAkJCA9IHBhcnNl
ci0+Y3JlYXRlUnVsZUxpc3QoKTsKKyAgICAgICAgICAkJC0+YXBwZW5kKCQyKTsKKyAgICAgIH0K
KyAgfQorICA7CisKK2Jsb2NrX3ZhbGlkX3J1bGU6CisgICAgcnVsZXNldAorICB8IHBhZ2UKKyAg
fCBmb250X2ZhY2UKKyAgfCBrZXlmcmFtZXMKKyAgOworCitibG9ja19ydWxlOgorICAgIGJsb2Nr
X3ZhbGlkX3J1bGUKKyAgfCBpbnZhbGlkX3J1bGUKKyAgfCBpbnZhbGlkX2F0CisgIHwgbmFtZXNw
YWNlCisgIHwgaW1wb3J0CisgIHwgbWVkaWEKKyAgOworCithdF9pbXBvcnRfaGVhZGVyX2VuZF9t
YXliZV9zcGFjZToKKyAgICBtYXliZV9zcGFjZSB7CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVI
ZWFkZXJFbmQoKTsKKyAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUJvZHlTdGFydCgpOworICAgIH0K
KyAgICA7CisKK2JlZm9yZV9pbXBvcnRfcnVsZToKKyAgICAvKiBlbXB0eSAqLyB7CisgICAgICAg
IHBhcnNlci0+bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6SU1QT1JUX1JV
TEUpOworICAgIH0KKyAgICA7CisKK2ltcG9ydDoKKyAgICBiZWZvcmVfaW1wb3J0X3J1bGUgSU1Q
T1JUX1NZTSBhdF9pbXBvcnRfaGVhZGVyX2VuZF9tYXliZV9zcGFjZSBzdHJpbmdfb3JfdXJpIG1h
eWJlX3NwYWNlIG1heWJlX21lZGlhX2xpc3QgJzsnIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNy
ZWF0ZUltcG9ydFJ1bGUoJDQsICQ2KTsKKyAgICB9CisgIHwgYmVmb3JlX2ltcG9ydF9ydWxlIElN
UE9SVF9TWU0gYXRfaW1wb3J0X2hlYWRlcl9lbmRfbWF5YmVfc3BhY2Ugc3RyaW5nX29yX3VyaSBt
YXliZV9zcGFjZSBtYXliZV9tZWRpYV9saXN0IFRPS0VOX0VPRiB7CisgICAgICAgICQkID0gcGFy
c2VyLT5jcmVhdGVJbXBvcnRSdWxlKCQ0LCAkNik7CisgICAgfQorICB8IGJlZm9yZV9pbXBvcnRf
cnVsZSBJTVBPUlRfU1lNIGF0X2ltcG9ydF9oZWFkZXJfZW5kX21heWJlX3NwYWNlIHN0cmluZ19v
cl91cmkgbWF5YmVfc3BhY2UgbWF5YmVfbWVkaWFfbGlzdCBpbnZhbGlkX2Jsb2NrIHsKKyAgICAg
ICAgJCQgPSAwOworICAgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7CisgICAgfQorICB8IGJl
Zm9yZV9pbXBvcnRfcnVsZSBJTVBPUlRfU1lNIGVycm9yICc7JyB7CisgICAgICAgICQkID0gMDsK
KyAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOworICAgIH0KKyAgfCBiZWZvcmVfaW1wb3J0
X3J1bGUgSU1QT1JUX1NZTSBlcnJvciBpbnZhbGlkX2Jsb2NrIHsKKyAgICAgICAgJCQgPSAwOwor
ICAgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7CisgICAgfQorICA7CisKK25hbWVzcGFjZToK
K05BTUVTUEFDRV9TWU0gbWF5YmVfc3BhY2UgbWF5YmVfbnNfcHJlZml4IHN0cmluZ19vcl91cmkg
bWF5YmVfc3BhY2UgJzsnIHsKKyAgICBwYXJzZXItPmFkZE5hbWVzcGFjZSgkMywgJDQpOworICAg
ICQkID0gMDsKK30KK3wgTkFNRVNQQUNFX1NZTSBtYXliZV9zcGFjZSBtYXliZV9uc19wcmVmaXgg
c3RyaW5nX29yX3VyaSBtYXliZV9zcGFjZSBpbnZhbGlkX2Jsb2NrIHsKKyAgICAkJCA9IDA7Cit9
Cit8IE5BTUVTUEFDRV9TWU0gZXJyb3IgaW52YWxpZF9ibG9jayB7CisgICAgJCQgPSAwOworfQor
fCBOQU1FU1BBQ0VfU1lNIGVycm9yICc7JyB7CisgICAgJCQgPSAwOworfQorOworCittYXliZV9u
c19wcmVmaXg6CisvKiBlbXB0eSAqLyB7ICQkLmNsZWFyKCk7IH0KK3wgSURFTlQgbWF5YmVfc3Bh
Y2UgeyAkJCA9ICQxOyB9Cis7CisKK3N0cmluZ19vcl91cmk6CitTVFJJTkcKK3wgVVJJCis7CisK
K21lZGlhX2ZlYXR1cmU6CisgICAgSURFTlQgbWF5YmVfc3BhY2UgeworICAgICAgICAkJCA9ICQx
OworICAgIH0KKyAgICA7CisKK21heWJlX21lZGlhX3ZhbHVlOgorICAgIC8qZW1wdHkqLyB7Cisg
ICAgICAgICQkID0gMDsKKyAgICB9CisgICAgfCAnOicgbWF5YmVfc3BhY2UgZXhwciBtYXliZV9z
cGFjZSB7CisgICAgICAgICQkID0gJDM7CisgICAgfQorICAgIDsKKworbWVkaWFfcXVlcnlfZXhw
OgorICAgIG1heWJlX21lZGlhX3Jlc3RyaWN0b3IgbWF5YmVfc3BhY2UgJygnIG1heWJlX3NwYWNl
IG1lZGlhX2ZlYXR1cmUgbWF5YmVfc3BhY2UgbWF5YmVfbWVkaWFfdmFsdWUgJyknIG1heWJlX3Nw
YWNlIHsKKyAgICAgICAgLy8gSWYgcmVzdHJpY3RvciBpcyBzcGVjaWZpZWQsIG1lZGlhIHF1ZXJ5
IGV4cHJlc3Npb24gaXMgaW52YWxpZC4KKyAgICAgICAgLy8gQ3JlYXRlIGVtcHR5IG1lZGlhIHF1
ZXJ5IGV4cHJlc3Npb24gYW5kIGNvbnRpbnVlIHBhcnNpbmcgbWVkaWEgcXVlcnkuCisgICAgICAg
IGlmICgkMSAhPSBNZWRpYVF1ZXJ5OjpOb25lKQorICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNy
ZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeUV4cCgiIiwgMCk7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgJDUubG93ZXIoKTsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGlu
Z01lZGlhUXVlcnlFeHAoJDUsICQ3KTsKKyAgICAgICAgfQorICAgIH0KKyAgICA7CisKK21lZGlh
X3F1ZXJ5X2V4cF9saXN0OgorICAgIG1lZGlhX3F1ZXJ5X2V4cCB7CisgICAgICAgICQkID0gcGFy
c2VyLT5jcmVhdGVGbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KCk7CisgICAgICAgICQkLT5hcHBl
bmQocGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwKCQxKSk7CisgICAgfQorICAgIHwg
bWVkaWFfcXVlcnlfZXhwX2xpc3QgbWF5YmVfc3BhY2UgTUVESUFfQU5EIG1heWJlX3NwYWNlIG1l
ZGlhX3F1ZXJ5X2V4cCB7CisgICAgICAgICQkID0gJDE7CisgICAgICAgICQkLT5hcHBlbmQocGFy
c2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwKCQ1KSk7CisgICAgfQorICAgIDsKKworbWF5
YmVfYW5kX21lZGlhX3F1ZXJ5X2V4cF9saXN0OgorICAgIC8qZW1wdHkqLyB7CisgICAgICAgICQk
ID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KCk7CisgICAgfQorICAg
IHwgTUVESUFfQU5EIG1heWJlX3NwYWNlIG1lZGlhX3F1ZXJ5X2V4cF9saXN0IHsKKyAgICAgICAg
JCQgPSAkMzsKKyAgICB9CisgICAgOworCittYXliZV9tZWRpYV9yZXN0cmljdG9yOgorICAgIC8q
ZW1wdHkqLyB7CisgICAgICAgICQkID0gTWVkaWFRdWVyeTo6Tm9uZTsKKyAgICB9CisgICAgfCBN
RURJQV9PTkxZIHsKKyAgICAgICAgJCQgPSBNZWRpYVF1ZXJ5OjpPbmx5OworICAgIH0KKyAgICB8
IE1FRElBX05PVCB7CisgICAgICAgICQkID0gTWVkaWFRdWVyeTo6Tm90OworICAgIH0KKyAgICA7
CisKK21lZGlhX3F1ZXJ5OgorICAgIG1lZGlhX3F1ZXJ5X2V4cF9saXN0IHsKKyAgICAgICAgJCQg
PSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeShwYXJzZXItPnNpbmtGbG9hdGluZ01l
ZGlhUXVlcnlFeHBMaXN0KCQxKSk7CisgICAgfQorICAgIHwKKyAgICBtYXliZV9tZWRpYV9yZXN0
cmljdG9yIG1heWJlX3NwYWNlIG1lZGl1bSBtYXliZV9hbmRfbWVkaWFfcXVlcnlfZXhwX2xpc3Qg
eworICAgICAgICAkMy5sb3dlcigpOworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRp
bmdNZWRpYVF1ZXJ5KCQxLCAkMywgcGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwTGlz
dCgkNCkpOworICAgIH0KKyAgICA7CisKK21heWJlX21lZGlhX2xpc3Q6CisgICAgIC8qIGVtcHR5
ICovIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZU1lZGlhUXVlcnlTZXQoKTsKKyAgICAg
fQorICAgICB8IG1lZGlhX2xpc3QKKyAgICAgOworCittZWRpYV9saXN0OgorICAgIG1lZGlhX3F1
ZXJ5IHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZU1lZGlhUXVlcnlTZXQoKTsKKyAgICAg
ICAgJCQtPmFkZE1lZGlhUXVlcnkocGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5KCQxKSk7
CisgICAgICAgIHBhcnNlci0+dXBkYXRlTGFzdE1lZGlhTGluZSgkJCk7CisgICAgfQorICAgIHwg
bWVkaWFfbGlzdCAnLCcgbWF5YmVfc3BhY2UgbWVkaWFfcXVlcnkgeworICAgICAgICAkJCA9ICQx
OworICAgICAgICBpZiAoJCQpIHsKKyAgICAgICAgICAgICQkLT5hZGRNZWRpYVF1ZXJ5KHBhcnNl
ci0+c2lua0Zsb2F0aW5nTWVkaWFRdWVyeSgkNCkpOworICAgICAgICAgICAgcGFyc2VyLT51cGRh
dGVMYXN0TWVkaWFMaW5lKCQkKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB8IG1lZGlhX2xpc3Qg
ZXJyb3IgeworICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIDsKKworYXRfcnVsZV9ib2R5X3N0
YXJ0OgorICAgIC8qIGVtcHR5ICovIHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUJvZHlTdGFy
dCgpOworICAgIH0KKyAgICA7CisKK2JlZm9yZV9tZWRpYV9ydWxlOgorICAgIC8qIGVtcHR5ICov
IHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRh
OjpNRURJQV9SVUxFKTsKKyAgICB9CisgICAgOworCithdF9ydWxlX2hlYWRlcl9lbmRfbWF5YmVf
c3BhY2U6CisgICAgbWF5YmVfc3BhY2UgeworICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVy
RW5kKCk7CisgICAgfQorICAgIDsKKworbWVkaWE6CisgICAgYmVmb3JlX21lZGlhX3J1bGUgTUVE
SUFfU1lNIG1heWJlX3NwYWNlIG1lZGlhX2xpc3QgYXRfcnVsZV9oZWFkZXJfZW5kICd7JyBhdF9y
dWxlX2JvZHlfc3RhcnQgbWF5YmVfc3BhY2UgYmxvY2tfcnVsZV9saXN0IHNhdmVfYmxvY2sgewor
ICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlTWVkaWFSdWxlKCQ0LCAkOSk7CisgICAgfQorICAg
IHwgYmVmb3JlX21lZGlhX3J1bGUgTUVESUFfU1lNIGF0X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9z
cGFjZSAneycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1heWJlX3NwYWNlIGJsb2NrX3J1bGVfbGlzdCBz
YXZlX2Jsb2NrIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZU1lZGlhUnVsZSgwLCAkNyk7
CisgICAgfQorICAgIHwgYmVmb3JlX21lZGlhX3J1bGUgTUVESUFfU1lNIGF0X3J1bGVfaGVhZGVy
X2VuZF9tYXliZV9zcGFjZSAnOycgeworICAgICAgICAkJCA9IDA7CisgICAgICAgIHBhcnNlci0+
cG9wUnVsZURhdGEoKTsKKyAgICB9CisgICAgOworCittZWRpdW06CisgIElERU5UIG1heWJlX3Nw
YWNlIHsKKyAgICAgICQkID0gJDE7CisgIH0KKyAgOworCitiZWZvcmVfa2V5ZnJhbWVzX3J1bGU6
CisgICAgLyogZW1wdHkgKi8geworICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQo
Q1NTUnVsZVNvdXJjZURhdGE6OktFWUZSQU1FU19SVUxFKTsKKyAgICB9CisgICAgOworCitrZXlm
cmFtZXM6CisgICAgYmVmb3JlX2tleWZyYW1lc19ydWxlIFdFQktJVF9LRVlGUkFNRVNfU1lNIG1h
eWJlX3NwYWNlIGtleWZyYW1lX25hbWUgYXRfcnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlICd7
JyBhdF9ydWxlX2JvZHlfc3RhcnQgbWF5YmVfc3BhY2Uga2V5ZnJhbWVzX3J1bGUgY2xvc2luZ19i
cmFjZSB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVLZXlmcmFtZXNSdWxlKCQ0LCBwYXJz
ZXItPnNpbmtGbG9hdGluZ0tleWZyYW1lVmVjdG9yKCQ5KSk7CisgICAgfQorICAgIDsKKyAgCitr
ZXlmcmFtZV9uYW1lOgorICAgIElERU5UCisgICAgfCBTVFJJTkcKKyAgICA7CisKK2tleWZyYW1l
c19ydWxlOgorICAgIC8qIGVtcHR5ICovIHsgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nS2V5
ZnJhbWVWZWN0b3IoKTsgfQorICAgIHwga2V5ZnJhbWVzX3J1bGUga2V5ZnJhbWVfcnVsZSBtYXli
ZV9zcGFjZSB7CisgICAgICAgICQkID0gJDE7CisgICAgICAgIGlmICgkMikKKyAgICAgICAgICAg
ICQkLT5hcHBlbmQoJDIpOworICAgIH0KKyAgICA7CisKK2tleWZyYW1lX3J1bGU6CisgICAga2V5
X2xpc3QgbWF5YmVfc3BhY2UgJ3snIG1heWJlX3NwYWNlIGRlY2xhcmF0aW9uX2xpc3QgJ30nIHsK
KyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUtleWZyYW1lKCQxKTsKKyAgICB9CisgICAgOwor
CitrZXlfbGlzdDoKKyAgICBrZXkgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRp
bmdWYWx1ZUxpc3QoKTsKKyAgICAgICAgJCQtPmFkZFZhbHVlKHBhcnNlci0+c2lua0Zsb2F0aW5n
VmFsdWUoJDEpKTsKKyAgICB9CisgICAgfCBrZXlfbGlzdCBtYXliZV9zcGFjZSAnLCcgbWF5YmVf
c3BhY2Uga2V5IHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgaWYgKCQkKQorICAgICAgICAg
ICAgJCQtPmFkZFZhbHVlKHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWUoJDUpKTsKKyAgICB9Cisg
ICAgOworCitrZXk6CisgICAgbWF5YmVfdW5hcnlfb3BlcmF0b3IgUEVSQ0VOVEFHRSB7ICQkLmlk
ID0gMDsgJCQuaXNJbnQgPSBmYWxzZTsgJCQuZlZhbHVlID0gJDEgKiAkMjsgJCQudW5pdCA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOyB9CisgICAgfCBJREVOVCB7CisgICAgICAgICQk
LmlkID0gMDsgJCQuaXNJbnQgPSBmYWxzZTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfTlVNQkVSOworICAgICAgICBDU1NQYXJzZXJTdHJpbmcmIHN0ciA9ICQxOworICAgICAgICBp
ZiAoc3RyLmVxdWFsSWdub3JpbmdDYXNlKCJmcm9tIikpCisgICAgICAgICAgICAkJC5mVmFsdWUg
PSAwOworICAgICAgICBlbHNlIGlmIChzdHIuZXF1YWxJZ25vcmluZ0Nhc2UoInRvIikpCisgICAg
ICAgICAgICAkJC5mVmFsdWUgPSAxMDA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFlZRVJS
T1I7CisgICAgfQorICAgIDsKKworYmVmb3JlX3BhZ2VfcnVsZToKKyAgICAvKiBlbXB0eSAqLyB7
CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6
UEFHRV9SVUxFKTsKKyAgICB9CisgICAgOworCitwYWdlOgorICAgIGJlZm9yZV9wYWdlX3J1bGUg
UEFHRV9TWU0gbWF5YmVfc3BhY2UgcGFnZV9zZWxlY3RvciBhdF9ydWxlX2hlYWRlcl9lbmRfbWF5
YmVfc3BhY2UKKyAgICAneycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1heWJlX3NwYWNlX2JlZm9yZV9k
ZWNsYXJhdGlvbiBkZWNsYXJhdGlvbnNfYW5kX21hcmdpbnMgY2xvc2luZ19icmFjZSB7CisgICAg
ICAgIGlmICgkNCkKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVQYWdlUnVsZShwYXJz
ZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQ0KSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgLy8gQ2xlYXIgcHJvcGVydGllcyBpbiB0aGUgaW52YWxpZCBAcGFnZSBydWxlLgorICAgICAg
ICAgICAgcGFyc2VyLT5jbGVhclByb3BlcnRpZXMoKTsKKyAgICAgICAgICAgIC8vIEFsc28gY2xl
YXIgbWFyZ2luIGF0LXJ1bGVzIGhlcmUgb25jZSB3ZSBmdWxseSBpbXBsZW1lbnQgbWFyZ2luIGF0
LXJ1bGVzIHBhcnNpbmcuCisgICAgICAgICAgICAkJCA9IDA7CisgICAgICAgICAgICBwYXJzZXIt
PnBvcFJ1bGVEYXRhKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgfCBiZWZvcmVfcGFnZV9ydWxl
IFBBR0VfU1lNIGVycm9yIGludmFsaWRfYmxvY2sgeworICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0
YSgpOworICAgICAgJCQgPSAwOworICAgIH0KKyAgICB8IGJlZm9yZV9wYWdlX3J1bGUgUEFHRV9T
WU0gZXJyb3IgJzsnIHsKKyAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKKyAgICAgICQkID0g
MDsKKyAgICB9CisgICAgOworCitwYWdlX3NlbGVjdG9yOgorICAgIElERU5UIHsKKyAgICAgICAg
JCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldFRh
ZyhRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMSwgcGFyc2VyLT5tX2RlZmF1bHROYW1lc3BhY2Up
KTsKKyAgICAgICAgJCQtPnNldEZvclBhZ2UoKTsKKyAgICB9CisgICAgfCBJREVOVCBwc2V1ZG9f
cGFnZSB7CisgICAgICAgICQkID0gJDI7CisgICAgICAgIGlmICgkJCkgeworICAgICAgICAgICAg
JCQtPnNldFRhZyhRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMSwgcGFyc2VyLT5tX2RlZmF1bHRO
YW1lc3BhY2UpKTsKKyAgICAgICAgICAgICQkLT5zZXRGb3JQYWdlKCk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgfCBwc2V1ZG9fcGFnZSB7CisgICAgICAgICQkID0gJDE7CisgICAgICAgIGlmICgk
JCkKKyAgICAgICAgICAgICQkLT5zZXRGb3JQYWdlKCk7CisgICAgfQorICAgIHwgLyogZW1wdHkg
Ki8geworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAg
ICAgICAkJC0+c2V0Rm9yUGFnZSgpOworICAgIH0KKyAgICA7CisKK2RlY2xhcmF0aW9uc19hbmRf
bWFyZ2luczoKKyAgICBkZWNsYXJhdGlvbl9saXN0CisgICAgfCBkZWNsYXJhdGlvbnNfYW5kX21h
cmdpbnMgbWFyZ2luX2JveCBtYXliZV9zcGFjZSBkZWNsYXJhdGlvbl9saXN0CisgICAgOworCitt
YXJnaW5fYm94OgorICAgIG1hcmdpbl9zeW0geworICAgICAgICBwYXJzZXItPnN0YXJ0RGVjbGFy
YXRpb25zRm9yTWFyZ2luQm94KCk7CisgICAgfSBtYXliZV9zcGFjZSAneycgbWF5YmVfc3BhY2Ug
ZGVjbGFyYXRpb25fbGlzdCBjbG9zaW5nX2JyYWNlIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNy
ZWF0ZU1hcmdpbkF0UnVsZSgkMSk7CisgICAgfQorICAgIDsKKworbWFyZ2luX3N5bSA6CisgICAg
VE9QTEVGVENPUk5FUl9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpUb3BMZWZ0Q29y
bmVyTWFyZ2luQm94OworICAgIH0KKyAgICB8IFRPUExFRlRfU1lNIHsKKyAgICAgICAgJCQgPSBD
U1NTZWxlY3Rvcjo6VG9wTGVmdE1hcmdpbkJveDsKKyAgICB9CisgICAgfCBUT1BDRU5URVJfU1lN
IHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6VG9wQ2VudGVyTWFyZ2luQm94OworICAgIH0K
KyAgICB8IFRPUFJJR0hUX1NZTSB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OlRvcFJpZ2h0
TWFyZ2luQm94OworICAgIH0KKyAgICB8IFRPUFJJR0hUQ09STkVSX1NZTSB7CisgICAgICAgICQk
ID0gQ1NTU2VsZWN0b3I6OlRvcFJpZ2h0Q29ybmVyTWFyZ2luQm94OworICAgIH0KKyAgICB8IEJP
VFRPTUxFRlRDT1JORVJfU1lNIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6Qm90dG9tTGVm
dENvcm5lck1hcmdpbkJveDsKKyAgICB9CisgICAgfCBCT1RUT01MRUZUX1NZTSB7CisgICAgICAg
ICQkID0gQ1NTU2VsZWN0b3I6OkJvdHRvbUxlZnRNYXJnaW5Cb3g7CisgICAgfQorICAgIHwgQk9U
VE9NQ0VOVEVSX1NZTSB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkJvdHRvbUNlbnRlck1h
cmdpbkJveDsKKyAgICB9CisgICAgfCBCT1RUT01SSUdIVF9TWU0geworICAgICAgICAkJCA9IENT
U1NlbGVjdG9yOjpCb3R0b21SaWdodE1hcmdpbkJveDsKKyAgICB9CisgICAgfCBCT1RUT01SSUdI
VENPUk5FUl9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpCb3R0b21SaWdodENvcm5l
ck1hcmdpbkJveDsKKyAgICB9CisgICAgfCBMRUZUVE9QX1NZTSB7CisgICAgICAgICQkID0gQ1NT
U2VsZWN0b3I6OkxlZnRUb3BNYXJnaW5Cb3g7CisgICAgfQorICAgIHwgTEVGVE1JRERMRV9TWU0g
eworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpMZWZ0TWlkZGxlTWFyZ2luQm94OworICAgIH0K
KyAgICB8IExFRlRCT1RUT01fU1lNIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6TGVmdEJv
dHRvbU1hcmdpbkJveDsKKyAgICB9CisgICAgfCBSSUdIVFRPUF9TWU0geworICAgICAgICAkJCA9
IENTU1NlbGVjdG9yOjpSaWdodFRvcE1hcmdpbkJveDsKKyAgICB9CisgICAgfCBSSUdIVE1JRERM
RV9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpSaWdodE1pZGRsZU1hcmdpbkJveDsK
KyAgICB9CisgICAgfCBSSUdIVEJPVFRPTV9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9y
OjpSaWdodEJvdHRvbU1hcmdpbkJveDsKKyAgICB9CisgICAgOworCitiZWZvcmVfZm9udF9mYWNl
X3J1bGU6CisgICAgLyogZW1wdHkgKi8geworICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVy
U3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6OkZPTlRfRkFDRV9SVUxFKTsKKyAgICB9CisgICAgOwor
Citmb250X2ZhY2U6CisgICAgYmVmb3JlX2ZvbnRfZmFjZV9ydWxlIEZPTlRfRkFDRV9TWU0gYXRf
cnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlCisgICAgJ3snIGF0X3J1bGVfYm9keV9zdGFydCBt
YXliZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRpb24gZGVjbGFyYXRpb25fbGlzdCBjbG9zaW5nX2Jy
YWNlIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZvbnRGYWNlUnVsZSgpOworICAgIH0K
KyAgICB8IGJlZm9yZV9mb250X2ZhY2VfcnVsZSBGT05UX0ZBQ0VfU1lNIGVycm9yIGludmFsaWRf
YmxvY2sgeworICAgICAgJCQgPSAwOworICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOworICAg
IH0KKyAgICB8IGJlZm9yZV9mb250X2ZhY2VfcnVsZSBGT05UX0ZBQ0VfU1lNIGVycm9yICc7JyB7
CisgICAgICAkJCA9IDA7CisgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7CisgICAgfQorOwor
CityZWdpb25fc2VsZWN0b3I6CisgICAgc2VsZWN0b3JfbGlzdCB7CisgICAgICAgIGlmICgkMSkg
eworICAgICAgICAgICAgcGFyc2VyLT5zZXRSZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9yKCQx
KTsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5yZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9y
KCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgJCQgPSAwOworICAgIH0K
KzsKKworYmVmb3JlX3JlZ2lvbl9ydWxlOgorICAgIC8qIGVtcHR5ICovIHsKKyAgICAgICAgcGFy
c2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRhOjpSRUdJT05fUlVMRSk7
CisgICAgfQorICAgIDsKKworcmVnaW9uOgorICAgIGJlZm9yZV9yZWdpb25fcnVsZSBXRUJLSVRf
UkVHSU9OX1JVTEVfU1lNIFdISVRFU1BBQ0UgcmVnaW9uX3NlbGVjdG9yIGF0X3J1bGVfaGVhZGVy
X2VuZCAneycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1heWJlX3NwYWNlIGJsb2NrX3J1bGVfbGlzdCBz
YXZlX2Jsb2NrIHsKKyAgICAgICAgaWYgKCQ0KQorICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNy
ZWF0ZVJlZ2lvblJ1bGUoJDQsICQ5KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAkJCA9
IDA7CisgICAgICAgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7CisgICAgICAgIH0KKyAgICB9
Cis7CisKK2NvbWJpbmF0b3I6CisgICAgJysnIG1heWJlX3NwYWNlIHsgJCQgPSBDU1NTZWxlY3Rv
cjo6RGlyZWN0QWRqYWNlbnQ7IH0KKyAgfCAnficgbWF5YmVfc3BhY2UgeyAkJCA9IENTU1NlbGVj
dG9yOjpJbmRpcmVjdEFkamFjZW50OyB9CisgIHwgJz4nIG1heWJlX3NwYWNlIHsgJCQgPSBDU1NT
ZWxlY3Rvcjo6Q2hpbGQ7IH0KKyAgOworCittYXliZV91bmFyeV9vcGVyYXRvcjoKKyAgICB1bmFy
eV9vcGVyYXRvciB7ICQkID0gJDE7IH0KKyAgICB8IHsgJCQgPSAxOyB9CisgICAgOworCit1bmFy
eV9vcGVyYXRvcjoKKyAgICAnLScgeyAkJCA9IC0xOyB9CisgIHwgJysnIHsgJCQgPSAxOyB9Cisg
IDsKKworbWF5YmVfc3BhY2VfYmVmb3JlX2RlY2xhcmF0aW9uOgorICAgIG1heWJlX3NwYWNlIHsK
KyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlTdGFydCgpOworICAgIH0KKyAgOworCitiZWZv
cmVfc2VsZWN0b3JfbGlzdDoKKyAgICAvKiBlbXB0eSAqLyB7CisgICAgICAgIHBhcnNlci0+bWFy
a1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6U1RZTEVfUlVMRSk7CisgICAgfQor
ICA7CisKK2F0X3J1bGVfaGVhZGVyX2VuZDoKKyAgICAvKiBlbXB0eSAqLyB7CisgICAgICAgIHBh
cnNlci0+bWFya1J1bGVIZWFkZXJFbmQoKTsKKyAgICB9CisgIDsKKworcnVsZXNldDoKKyAgICBi
ZWZvcmVfc2VsZWN0b3JfbGlzdCBzZWxlY3Rvcl9saXN0IGF0X3J1bGVfaGVhZGVyX2VuZCAneycg
YXRfcnVsZV9ib2R5X3N0YXJ0IG1heWJlX3NwYWNlX2JlZm9yZV9kZWNsYXJhdGlvbiBkZWNsYXJh
dGlvbl9saXN0IGNsb3NpbmdfYnJhY2UgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlU3R5
bGVSdWxlKCQyKTsKKyAgICB9CisgIDsKKworc2VsZWN0b3JfbGlzdDoKKyAgICBzZWxlY3RvciAl
cHJlYyBVTklNUE9SVEFOVF9UT0sgeworICAgICAgICBpZiAoJDEpIHsKKyAgICAgICAgICAgICQk
ID0gcGFyc2VyLT5zZWxlY3RvclZlY3RvcigpOworICAgICAgICAgICAgJCQtPnNocmluaygwKTsK
KyAgICAgICAgICAgICQkLT5hcHBlbmQocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMSkp
OworICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVMYXN0U2VsZWN0b3JMaW5lQW5kUG9zaXRpb24o
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICB8IHNlbGVjdG9yX2xpc3QgJywnIG1heWJlX3NwYWNl
IHNlbGVjdG9yICVwcmVjIFVOSU1QT1JUQU5UX1RPSyB7CisgICAgICAgIGlmICgkMSAmJiAkNCkg
eworICAgICAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgICAgICQkLT5hcHBlbmQocGFyc2VyLT5z
aW5rRmxvYXRpbmdTZWxlY3RvcigkNCkpOworICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVMYXN0
U2VsZWN0b3JMaW5lQW5kUG9zaXRpb24oKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAk
JCA9IDA7CisgICAgfQorICB8IHNlbGVjdG9yX2xpc3QgZXJyb3IgeworICAgICAgICAkJCA9IDA7
CisgICAgfQorICAgOworCitzZWxlY3Rvcl93aXRoX3RyYWlsaW5nX3doaXRlc3BhY2U6CisgICAg
c2VsZWN0b3IgV0hJVEVTUEFDRSB7CisgICAgICAgICQkID0gJDE7CisgICAgfQorICAgIDsKKwor
c2VsZWN0b3I6CisgICAgc2ltcGxlX3NlbGVjdG9yIHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9
CisgICAgfCBzZWxlY3Rvcl93aXRoX3RyYWlsaW5nX3doaXRlc3BhY2UKKyAgICB7CisgICAgICAg
ICQkID0gJDE7CisgICAgfQorICAgIHwgc2VsZWN0b3Jfd2l0aF90cmFpbGluZ193aGl0ZXNwYWNl
IHNpbXBsZV9zZWxlY3RvcgorICAgIHsKKyAgICAgICAgJCQgPSAkMjsKKyAgICAgICAgaWYgKCEk
MSkKKyAgICAgICAgICAgICQkID0gMDsKKyAgICAgICAgZWxzZSBpZiAoJCQpIHsKKyAgICAgICAg
ICAgIENTU1BhcnNlclNlbGVjdG9yKiBlbmQgPSAkJDsKKyAgICAgICAgICAgIHdoaWxlIChlbmQt
PnRhZ0hpc3RvcnkoKSkKKyAgICAgICAgICAgICAgICBlbmQgPSBlbmQtPnRhZ0hpc3RvcnkoKTsK
KyAgICAgICAgICAgIGVuZC0+c2V0UmVsYXRpb24oQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQpOwor
ICAgICAgICAgICAgZW5kLT5zZXRUYWdIaXN0b3J5KHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0
b3IoJDEpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB8IHNlbGVjdG9yIGNvbWJpbmF0b3Igc2lt
cGxlX3NlbGVjdG9yIHsKKyAgICAgICAgJCQgPSAkMzsKKyAgICAgICAgaWYgKCEkMSkKKyAgICAg
ICAgICAgICQkID0gMDsKKyAgICAgICAgZWxzZSBpZiAoJCQpIHsKKyAgICAgICAgICAgIENTU1Bh
cnNlclNlbGVjdG9yKiBlbmQgPSAkJDsKKyAgICAgICAgICAgIHdoaWxlIChlbmQtPnRhZ0hpc3Rv
cnkoKSkKKyAgICAgICAgICAgICAgICBlbmQgPSBlbmQtPnRhZ0hpc3RvcnkoKTsKKyAgICAgICAg
ICAgIGVuZC0+c2V0UmVsYXRpb24oJDIpOworICAgICAgICAgICAgZW5kLT5zZXRUYWdIaXN0b3J5
KHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDEpKTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICB8IHNlbGVjdG9yIGVycm9yIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKyAgICA7CisKK25h
bWVzcGFjZV9zZWxlY3RvcjoKKyAgICAvKiBlbXB0eSAqLyAnfCcgeyAkJC5jbGVhcigpOyB9Cisg
ICAgfCAnKicgJ3wnIHsgc3RhdGljIExDaGFyIHN0YXIgPSAnKic7ICQkLmluaXQoJnN0YXIsIDEp
OyB9CisgICAgfCBJREVOVCAnfCcgeyAkJCA9ICQxOyB9Cis7CisgICAgCitzaW1wbGVfc2VsZWN0
b3I6CisgICAgZWxlbWVudF9uYW1lIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0
aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldFRhZyhRdWFsaWZpZWROYW1lKG51bGxBdG9t
LCAkMSwgcGFyc2VyLT5tX2RlZmF1bHROYW1lc3BhY2UpKTsKKyAgICB9CisgICAgfCBlbGVtZW50
X25hbWUgc3BlY2lmaWVyX2xpc3QgeworICAgICAgICAkJCA9ICQyOworICAgICAgICBpZiAoJCQp
CisgICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUobnVs
bEF0b20sICQxLCAkJCk7CisgICAgfQorICAgIHwgc3BlY2lmaWVyX2xpc3QgeworICAgICAgICAk
JCA9ICQxOworICAgICAgICBpZiAoJCQpCisgICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNp
ZmllcnNXaXRoRWxlbWVudE5hbWUobnVsbEF0b20sIHN0YXJBdG9tLCAkJCk7CisgICAgfQorICAg
IHwgbmFtZXNwYWNlX3NlbGVjdG9yIGVsZW1lbnRfbmFtZSB7CisgICAgICAgICQkID0gcGFyc2Vy
LT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRUYWcocGFyc2VyLT5k
ZXRlcm1pbmVOYW1lSW5OYW1lc3BhY2UoJDEsICQyKSk7CisgICAgfQorICAgIHwgbmFtZXNwYWNl
X3NlbGVjdG9yIGVsZW1lbnRfbmFtZSBzcGVjaWZpZXJfbGlzdCB7CisgICAgICAgICQkID0gJDM7
CisgICAgICAgIGlmICgkJCkKKyAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dp
dGhFbGVtZW50TmFtZSgkMSwgJDIsICQkKTsKKyAgICB9CisgICAgfCBuYW1lc3BhY2Vfc2VsZWN0
b3Igc3BlY2lmaWVyX2xpc3QgeworICAgICAgICAkJCA9ICQyOworICAgICAgICBpZiAoJCQpCisg
ICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoJDEsIHN0
YXJBdG9tLCAkJCk7CisgICAgfQorICA7CisKK3NpbXBsZV9zZWxlY3Rvcl9saXN0OgorICAgIHNp
bXBsZV9zZWxlY3RvciAlcHJlYyBVTklNUE9SVEFOVF9UT0sgeworICAgICAgICBpZiAoJDEpIHsK
KyAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yVmVjdG9yKCk7
CisgICAgICAgICAgICAkJC0+YXBwZW5kKHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDEp
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIHwgc2lt
cGxlX3NlbGVjdG9yX2xpc3QgbWF5YmVfc3BhY2UgJywnIG1heWJlX3NwYWNlIHNpbXBsZV9zZWxl
Y3RvciAlcHJlYyBVTklNUE9SVEFOVF9UT0sgeworICAgICAgICBpZiAoJDEgJiYgJDUpIHsKKyAg
ICAgICAgICAgICQkID0gJDE7CisgICAgICAgICAgICAkJC0+YXBwZW5kKHBhcnNlci0+c2lua0Zs
b2F0aW5nU2VsZWN0b3IoJDUpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAkJCA9IDA7
CisgICAgfQorICAgIHwgc2ltcGxlX3NlbGVjdG9yX2xpc3QgZXJyb3IgeworICAgICAgICAkJCA9
IDA7CisgICAgfQorICA7CisKK2VsZW1lbnRfbmFtZToKKyAgICBJREVOVCB7CisgICAgICAgIENT
U1BhcnNlclN0cmluZyYgc3RyID0gJDE7CisgICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4dC5p
c0hUTUxEb2N1bWVudCkKKyAgICAgICAgICAgIHN0ci5sb3dlcigpOworICAgICAgICAkJCA9IHN0
cjsKKyAgICB9CisgICAgfCAnKicgeworICAgICAgICBzdGF0aWMgTENoYXIgc3RhciA9ICcqJzsK
KyAgICAgICAgJCQuaW5pdCgmc3RhciwgMSk7CisgICAgfQorICA7CisKK3NwZWNpZmllcl9saXN0
OgorICAgIHNwZWNpZmllciB7CisgICAgICAgICQkID0gJDE7CisgICAgfQorICAgIHwgc3BlY2lm
aWVyX2xpc3Qgc3BlY2lmaWVyIHsKKyAgICAgICAgaWYgKCEkMikKKyAgICAgICAgICAgICQkID0g
MDsKKyAgICAgICAgZWxzZSBpZiAoJDEpCisgICAgICAgICAgICAkJCA9IHBhcnNlci0+dXBkYXRl
U3BlY2lmaWVycygkMSwgJDIpOworICAgIH0KKyAgICB8IHNwZWNpZmllcl9saXN0IGVycm9yIHsK
KyAgICAgICAgJCQgPSAwOworICAgIH0KKzsKKworc3BlY2lmaWVyOgorICAgIElEU0VMIHsKKyAg
ICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQt
PnNldE1hdGNoKENTU1NlbGVjdG9yOjpJZCk7CisgICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4
dC5tb2RlID09IENTU1F1aXJrc01vZGUpCisgICAgICAgICAgICAkMS5sb3dlcigpOworICAgICAg
ICAkJC0+c2V0VmFsdWUoJDEpOworICAgIH0KKyAgfCBIRVggeworICAgICAgICBpZiAoJDFbMF0g
Pj0gJzAnICYmICQxWzBdIDw9ICc5JykgeworICAgICAgICAgICAgJCQgPSAwOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3Io
KTsKKyAgICAgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6SWQpOworICAgICAgICAg
ICAgaWYgKHBhcnNlci0+bV9jb250ZXh0Lm1vZGUgPT0gQ1NTUXVpcmtzTW9kZSkKKyAgICAgICAg
ICAgICAgICAkMS5sb3dlcigpOworICAgICAgICAgICAgJCQtPnNldFZhbHVlKCQxKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgfCBjbGFzcworICB8IGF0dHJpYgorICB8IHBzZXVkbworICAgIDsKKwor
Y2xhc3M6CisgICAgJy4nIElERU5UIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0
aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpDbGFzcyk7
CisgICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4dC5tb2RlID09IENTU1F1aXJrc01vZGUpCisg
ICAgICAgICAgICAkMi5sb3dlcigpOworICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOworICAgIH0K
KyAgOworCithdHRyX25hbWU6CisgICAgSURFTlQgbWF5YmVfc3BhY2UgeworICAgICAgICBDU1NQ
YXJzZXJTdHJpbmcmIHN0ciA9ICQxOworICAgICAgICBpZiAocGFyc2VyLT5tX2NvbnRleHQuaXNI
VE1MRG9jdW1lbnQpCisgICAgICAgICAgICBzdHIubG93ZXIoKTsKKyAgICAgICAgJCQgPSBzdHI7
CisgICAgfQorICAgIDsKKworYXR0cmliOgorICAgICdbJyBtYXliZV9zcGFjZSBhdHRyX25hbWUg
J10nIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAg
ICAgICAgJCQtPnNldEF0dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMywgbnVsbEF0
b20pKTsKKyAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpTZXQpOworICAgIH0KKyAg
ICB8ICdbJyBtYXliZV9zcGFjZSBhdHRyX25hbWUgbWF0Y2ggbWF5YmVfc3BhY2UgaWRlbnRfb3Jf
c3RyaW5nIG1heWJlX3NwYWNlICddJyB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9h
dGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShu
dWxsQXRvbSwgJDMsIG51bGxBdG9tKSk7CisgICAgICAgICQkLT5zZXRNYXRjaCgoQ1NTU2VsZWN0
b3I6Ok1hdGNoKSQ0KTsKKyAgICAgICAgJCQtPnNldFZhbHVlKCQ2KTsKKyAgICB9CisgICAgfCAn
WycgbWF5YmVfc3BhY2UgbmFtZXNwYWNlX3NlbGVjdG9yIGF0dHJfbmFtZSAnXScgeworICAgICAg
ICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAkJC0+c2V0
QXR0cmlidXRlKHBhcnNlci0+ZGV0ZXJtaW5lTmFtZUluTmFtZXNwYWNlKCQzLCAkNCkpOworICAg
ICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlNldCk7CisgICAgfQorICAgIHwgJ1snIG1h
eWJlX3NwYWNlIG5hbWVzcGFjZV9zZWxlY3RvciBhdHRyX25hbWUgbWF0Y2ggbWF5YmVfc3BhY2Ug
aWRlbnRfb3Jfc3RyaW5nIG1heWJlX3NwYWNlICddJyB7CisgICAgICAgICQkID0gcGFyc2VyLT5j
cmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRBdHRyaWJ1dGUocGFyc2Vy
LT5kZXRlcm1pbmVOYW1lSW5OYW1lc3BhY2UoJDMsICQ0KSk7CisgICAgICAgICQkLT5zZXRNYXRj
aCgoQ1NTU2VsZWN0b3I6Ok1hdGNoKSQ1KTsKKyAgICAgICAgJCQtPnNldFZhbHVlKCQ3KTsKKyAg
ICB9CisgIDsKKworbWF0Y2g6CisgICAgJz0nIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6
RXhhY3Q7CisgICAgfQorICAgIHwgSU5DTFVERVMgeworICAgICAgICAkJCA9IENTU1NlbGVjdG9y
OjpMaXN0OworICAgIH0KKyAgICB8IERBU0hNQVRDSCB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0
b3I6Okh5cGhlbjsKKyAgICB9CisgICAgfCBCRUdJTlNXSVRIIHsKKyAgICAgICAgJCQgPSBDU1NT
ZWxlY3Rvcjo6QmVnaW47CisgICAgfQorICAgIHwgRU5EU1dJVEggeworICAgICAgICAkJCA9IENT
U1NlbGVjdG9yOjpFbmQ7CisgICAgfQorICAgIHwgQ09OVEFJTlMgeworICAgICAgICAkJCA9IENT
U1NlbGVjdG9yOjpDb250YWluOworICAgIH0KKyAgICA7CisKK2lkZW50X29yX3N0cmluZzoKKyAg
ICBJREVOVAorICB8IFNUUklORworICAgIDsKKworcHNldWRvX3BhZ2U6CisgICAgJzonIElERU5U
IHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAg
ICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQYWdlUHNldWRvQ2xhc3MpOworICAgICAgICAk
Mi5sb3dlcigpOworICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOworICAgICAgICBDU1NTZWxlY3Rv
cjo6UHNldWRvVHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUoKTsKKyAgICAgICAgaWYgKHR5cGUg
PT0gQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25vd24pCisgICAgICAgICAgICAkJCA9IDA7CisgICAg
fQorCitwc2V1ZG86CisgICAgJzonIElERU5UIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0
ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzcyk7CisgICAgICAgICQyLmxvd2VyKCk7CisgICAgICAgICQkLT5zZXRWYWx1ZSgk
Mik7CisgICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlw
ZSgpOworICAgICAgICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bikKKyAg
ICAgICAgICAgICQkID0gMDsKKyAgICB9CisgICAgfCAnOicgJzonIElERU5UIHsKKyAgICAgICAg
JCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldE1h
dGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50KTsKKyAgICAgICAgJDMubG93ZXIoKTsKKyAg
ICAgICAgJCQtPnNldFZhbHVlKCQzKTsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgY2FsbCBpcyBu
ZWVkZWQgdG8gZm9yY2Ugc2VsZWN0b3IgdG8gY29tcHV0ZSB0aGUgcHNldWRvVHlwZSBlYXJseSBl
bm91Z2guCisgICAgICAgICQkLT5wc2V1ZG9UeXBlKCk7CisgICAgfQorICAgIC8vIHVzZSBieSA6
LXdlYmtpdC1hbnkuCisgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBzdXBwb3J0IGdlbmVyaWMgc2Vs
ZWN0b3JzIGhlcmUgb3IganVzdCBzaW1wbGVfc2VsZWN0b3JzPworICAgIC8vIFVzZSBzaW1wbGVf
c2VsZWN0b3JfbGlzdCBmb3Igbm93IHRvIG1hdGNoIC1tb3otYW55LgorICAgIC8vIFNlZSBodHRw
Oi8vbGlzdHMudzMub3JnL0FyY2hpdmVzL1B1YmxpYy93d3ctc3R5bGUvMjAxMFNlcC8wNTY2Lmh0
bWwgZm9yIHNvbWUKKyAgICAvLyByZWxhdGVkIGRpc2N1c3Npb24gd2l0aCByZXNwZWN0IHRvIDpu
b3QuCisgICAgfCAnOicgQU5ZRlVOQ1RJT04gbWF5YmVfc3BhY2Ugc2ltcGxlX3NlbGVjdG9yX2xp
c3QgbWF5YmVfc3BhY2UgJyknIHsKKyAgICAgICAgaWYgKCQ0KSB7CisgICAgICAgICAgICAkJCA9
IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAgICAgJCQtPnNldE1h
dGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7CisgICAgICAgICAgICAkJC0+YWRvcHRTZWxl
Y3RvclZlY3RvcigqcGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvclZlY3RvcigkNCkpOworICAg
ICAgICAgICAgJDIubG93ZXIoKTsKKyAgICAgICAgICAgICQkLT5zZXRWYWx1ZSgkMik7CisgICAg
ICAgICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUoKTsK
KyAgICAgICAgICAgIGlmICh0eXBlICE9IENTU1NlbGVjdG9yOjpQc2V1ZG9BbnkpCisgICAgICAg
ICAgICAgICAgJCQgPSAwOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICQkID0gMDsKKyAg
ICB9CisgICAgLy8gdXNlZCBieSA6bnRoLSooYXgrYikKKyAgICB8ICc6JyBGVU5DVElPTiBtYXli
ZV9zcGFjZSBOVEggbWF5YmVfc3BhY2UgJyknIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0
ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzcyk7CisgICAgICAgICQkLT5zZXRBcmd1bWVudCgkNCk7CisgICAgICAgICQkLT5z
ZXRWYWx1ZSgkMik7CisgICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+
cHNldWRvVHlwZSgpOworICAgICAgICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5r
bm93bikKKyAgICAgICAgICAgICQkID0gMDsKKyAgICB9CisgICAgLy8gdXNlZCBieSA6bnRoLSoK
KyAgICB8ICc6JyBGVU5DVElPTiBtYXliZV9zcGFjZSBtYXliZV91bmFyeV9vcGVyYXRvciBJTlRF
R0VSIG1heWJlX3NwYWNlICcpJyB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGlu
Z1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xh
c3MpOworICAgICAgICAkJC0+c2V0QXJndW1lbnQoU3RyaW5nOjpudW1iZXIoJDQgKiAkNSkpOwor
ICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOworICAgICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlw
ZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUoKTsKKyAgICAgICAgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0
b3I6OlBzZXVkb1Vua25vd24pCisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIC8vIHVz
ZWQgYnkgOm50aC0qKG9kZC9ldmVuKSBhbmQgOmxhbmcKKyAgICB8ICc6JyBGVU5DVElPTiBtYXli
ZV9zcGFjZSBJREVOVCBtYXliZV9zcGFjZSAnKScgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3Jl
YXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6
OlBzZXVkb0NsYXNzKTsKKyAgICAgICAgJCQtPnNldEFyZ3VtZW50KCQ0KTsKKyAgICAgICAgJDIu
bG93ZXIoKTsKKyAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsKKyAgICAgICAgQ1NTU2VsZWN0b3I6
OlBzZXVkb1R5cGUgdHlwZSA9ICQkLT5wc2V1ZG9UeXBlKCk7CisgICAgICAgIGlmICh0eXBlID09
IENTU1NlbGVjdG9yOjpQc2V1ZG9Vbmtub3duKQorICAgICAgICAgICAgJCQgPSAwOworICAgICAg
ICBlbHNlIGlmICh0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9OdGhDaGlsZCB8fAorICAgICAg
ICAgICAgICAgICB0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9OdGhPZlR5cGUgfHwKKyAgICAg
ICAgICAgICAgICAgdHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvTnRoTGFzdENoaWxkIHx8Cisg
ICAgICAgICAgICAgICAgIHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb050aExhc3RPZlR5cGUp
IHsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZE50aFRva2VuKCQ0KSkKKyAgICAgICAgICAgICAg
ICAkJCA9IDA7CisgICAgICAgIH0KKyAgICB9CisgICAgLy8gdXNlZCBieSA6bm90CisgICAgfCAn
OicgTk9URlVOQ1RJT04gbWF5YmVfc3BhY2Ugc2ltcGxlX3NlbGVjdG9yIG1heWJlX3NwYWNlICcp
JyB7CisgICAgICAgIGlmICghJDQgfHwgISQ0LT5pc1NpbXBsZSgpKQorICAgICAgICAgICAgJCQg
PSAwOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9h
dGluZ1NlbGVjdG9yKCk7CisgICAgICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBz
ZXVkb0NsYXNzKTsKKworICAgICAgICAgICAgQ1NTU2VsZWN0b3JWZWN0b3Igc2VsZWN0b3JWZWN0
b3I7CisgICAgICAgICAgICBzZWxlY3RvclZlY3Rvci5hcHBlbmQocGFyc2VyLT5zaW5rRmxvYXRp
bmdTZWxlY3RvcigkNCkpOworICAgICAgICAgICAgJCQtPmFkb3B0U2VsZWN0b3JWZWN0b3Ioc2Vs
ZWN0b3JWZWN0b3IpOworCisgICAgICAgICAgICAkMi5sb3dlcigpOworICAgICAgICAgICAgJCQt
PnNldFZhbHVlKCQyKTsKKyAgICAgICAgfQorICAgIH0KKyAgOworCitkZWNsYXJhdGlvbl9saXN0
OgorICAgIGRlY2xhcmF0aW9uIHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAgfCBkZWNs
X2xpc3QgZGVjbGFyYXRpb24geworICAgICAgICAkJCA9ICQxOworICAgICAgICBpZiAoICQyICkK
KyAgICAgICAgICAgICQkID0gJDI7CisgICAgfQorICAgIHwgZGVjbF9saXN0IHsKKyAgICAgICAg
JCQgPSAkMTsKKyAgICB9CisgICAgfCBlcnJvciBpbnZhbGlkX2Jsb2NrX2xpc3QgZXJyb3Igewor
ICAgICAgICAkJCA9IGZhbHNlOworICAgIH0KKyAgICB8IGVycm9yIHsKKyAgICAgICAgJCQgPSBm
YWxzZTsKKyAgICB9CisgICAgfCBkZWNsX2xpc3QgZXJyb3IgeworICAgICAgICAkJCA9ICQxOwor
ICAgIH0KKyAgICB8IGRlY2xfbGlzdCBpbnZhbGlkX2Jsb2NrX2xpc3QgeworICAgICAgICAkJCA9
ICQxOworICAgIH0KKyAgICA7CisKK2RlY2xfbGlzdDoKKyAgICBkZWNsYXJhdGlvbiAnOycgbWF5
YmVfc3BhY2UgeworICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7CisgICAgICAg
ICQkID0gJDE7CisgICAgfQorICAgIHwgZGVjbGFyYXRpb24gaW52YWxpZF9ibG9ja19saXN0IG1h
eWJlX3NwYWNlIHsKKyAgICAgICAgJCQgPSBmYWxzZTsKKyAgICB9CisgICAgfCBkZWNsYXJhdGlv
biBpbnZhbGlkX2Jsb2NrX2xpc3QgJzsnIG1heWJlX3NwYWNlIHsKKyAgICAgICAgJCQgPSBmYWxz
ZTsKKyAgICB9CisgICAgfCBlcnJvciAnOycgbWF5YmVfc3BhY2UgeworICAgICAgICBwYXJzZXIt
Pm1hcmtQcm9wZXJ0eVN0YXJ0KCk7CisgICAgICAgICQkID0gZmFsc2U7CisgICAgfQorICAgIHwg
ZXJyb3IgaW52YWxpZF9ibG9ja19saXN0IGVycm9yICc7JyBtYXliZV9zcGFjZSB7CisgICAgICAg
ICQkID0gZmFsc2U7CisgICAgfQorICAgIHwgZGVjbF9saXN0IGRlY2xhcmF0aW9uICc7JyBtYXli
ZV9zcGFjZSB7CisgICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5U3RhcnQoKTsKKyAgICAgICAg
JCQgPSAkMTsKKyAgICAgICAgaWYgKCQyKQorICAgICAgICAgICAgJCQgPSAkMjsKKyAgICB9Cisg
ICAgfCBkZWNsX2xpc3QgZXJyb3IgJzsnIG1heWJlX3NwYWNlIHsKKyAgICAgICAgcGFyc2VyLT5t
YXJrUHJvcGVydHlTdGFydCgpOworICAgICAgICAkJCA9ICQxOworICAgIH0KKyAgICB8IGRlY2xf
bGlzdCBlcnJvciBpbnZhbGlkX2Jsb2NrX2xpc3QgZXJyb3IgJzsnIG1heWJlX3NwYWNlIHsKKyAg
ICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlTdGFydCgpOworICAgICAgICAkJCA9ICQxOworICAg
IH0KKyAgICA7CisKK2RlY2xhcmF0aW9uOgorICAgIFZBUl9ERUZJTklUSU9OICc6JyBtYXliZV9z
cGFjZSBleHByIHByaW8geworI2lmIEVOQUJMRV9DU1NfVkFSSUFCTEVTCisgICAgICAgIHBhcnNl
ci0+c3RvcmVWYXJpYWJsZURlY2xhcmF0aW9uKCQxLCBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVl
TGlzdCgkNCksICQ1KTsKKyAgICAgICAgJCQgPSB0cnVlOworICAgICAgICBwYXJzZXItPm1hcmtQ
cm9wZXJ0eUVuZCgkNSwgdHJ1ZSk7CisjZWxzZQorICAgICAgICAkJCA9IGZhbHNlOworI2VuZGlm
CisgICAgfQorICAgIHwKKyAgICBwcm9wZXJ0eSAnOicgbWF5YmVfc3BhY2UgZXhwciBwcmlvIHsK
KyAgICAgICAgJCQgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBpc1Byb3BlcnR5UGFyc2VkID0gZmFs
c2U7CisgICAgICAgIGlmICgkMSAmJiAkNCkgeworICAgICAgICAgICAgcGFyc2VyLT5tX3ZhbHVl
TGlzdCA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQ0KTsKKyAgICAgICAgICAgIGlu
dCBvbGRQYXJzZWRQcm9wZXJ0aWVzID0gcGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXMtPnNpemUo
KTsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5wYXJzZVZhbHVlKHN0YXRpY19jYXN0PENTU1By
b3BlcnR5SUQ+KCQxKSwgJDUpOworICAgICAgICAgICAgaWYgKCEkJCkKKyAgICAgICAgICAgICAg
ICBwYXJzZXItPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocGFyc2VyLT5tX3BhcnNlZFByb3BlcnRp
ZXMtPnNpemUoKSAtIG9sZFBhcnNlZFByb3BlcnRpZXMpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIGlzUHJvcGVydHlQYXJzZWQgPSB0cnVlOworICAgICAgICAgICAgcGFyc2Vy
LT5tX3ZhbHVlTGlzdCA9IG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgcGFyc2VyLT5tYXJr
UHJvcGVydHlFbmQoJDUsIGlzUHJvcGVydHlQYXJzZWQpOworICAgIH0KKyAgICB8CisgICAgcHJv
cGVydHkgZXJyb3IgeworICAgICAgICAkJCA9IGZhbHNlOworICAgIH0KKyAgICB8CisgICAgcHJv
cGVydHkgJzonIG1heWJlX3NwYWNlIGVycm9yIGV4cHIgcHJpbyB7CisgICAgICAgIC8qIFRoZSBk
ZWZhdWx0IG1vdmFibGUgdHlwZSB0ZW1wbGF0ZSBoYXMgbGV0dGVyLXNwYWNpbmc6IC5ub25lOyAg
SGFuZGxlIHRoaXMgYnkgbG9va2luZyBmb3IKKyAgICAgICAgZXJyb3IgdG9rZW5zIGF0IHRoZSBz
dGFydCBvZiBhbiBleHByLCByZWNvdmVyIHRoZSBleHByIGFuZCB0aGVuIHRyZWF0IGFzIGFuIGVy
cm9yLCBjbGVhbmluZworICAgICAgICB1cCBhbmQgZGVsZXRpbmcgdGhlIHNoaWZ0ZWQgZXhwci4g
ICovCisgICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5RW5kKGZhbHNlLCBmYWxzZSk7CisgICAg
ICAgICQkID0gZmFsc2U7CisgICAgfQorICAgIHwKKyAgICBwcm9wZXJ0eSAnOicgbWF5YmVfc3Bh
Y2UgZXhwciBwcmlvIGVycm9yIHsKKyAgICAgICAgLyogV2hlbiB3ZSBlbmNvdW50ZXIgc29tZXRo
aW5nIGxpa2UgcCB7Y29sb3I6IHJlZCAhaW1wb3J0YW50IGZhaWw7fSB3ZSBzaG91bGQgZHJvcCB0
aGUgZGVjbGFyYXRpb24gKi8KKyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlFbmQoZmFsc2Us
IGZhbHNlKTsKKyAgICAgICAgJCQgPSBmYWxzZTsKKyAgICB9CisgICAgfAorICAgIElNUE9SVEFO
VF9TWU0gbWF5YmVfc3BhY2UgeworICAgICAgICAvKiBIYW5kbGUgdGhpcyBjYXNlOiBkaXYgeyB0
ZXh0LWFsaWduOiBjZW50ZXI7ICFpbXBvcnRhbnQgfSBKdXN0IHJlZHVjZSBhd2F5IHRoZSBzdHJh
eSAhaW1wb3J0YW50LiAqLworICAgICAgICAkJCA9IGZhbHNlOworICAgIH0KKyAgICB8CisgICAg
cHJvcGVydHkgJzonIG1heWJlX3NwYWNlIHsKKyAgICAgICAgLyogZGl2IHsgZm9udC1mYW1pbHk6
IH0gSnVzdCByZWR1Y2UgYXdheSB0aGlzIHByb3BlcnR5IHdpdGggbm8gdmFsdWUuICovCisgICAg
ICAgIHBhcnNlci0+bWFya1Byb3BlcnR5RW5kKGZhbHNlLCBmYWxzZSk7CisgICAgICAgICQkID0g
ZmFsc2U7CisgICAgfQorICAgIHwKKyAgICBwcm9wZXJ0eSAnOicgbWF5YmVfc3BhY2UgZXJyb3Ig
eworICAgICAgICAvKiBpZiB3ZSBjb21lIGFjcm9zcyBydWxlcyB3aXRoIGludmFsaWQgdmFsdWVz
IGxpa2UgdGhpcyBjYXNlOiBwIHsgd2VpZ2h0OiAqOyB9LCBqdXN0IGRpc2NhcmQgdGhlIHJ1bGUg
Ki8KKyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlFbmQoZmFsc2UsIGZhbHNlKTsKKyAgICAg
ICAgJCQgPSBmYWxzZTsKKyAgICB9CisgICAgfAorICAgIHByb3BlcnR5IGludmFsaWRfYmxvY2sg
eworICAgICAgICAvKiBpZiB3ZSBjb21lIGFjcm9zczogZGl2IHsgY29sb3J7O2NvbG9yOm1hcm9v
bn0gfSwgaWdub3JlIGV2ZXJ5dGhpbmcgd2l0aGluIGN1cmx5IGJyYWNrZXRzICovCisgICAgICAg
ICQkID0gZmFsc2U7CisgICAgfQorICA7CisKK3Byb3BlcnR5OgorICAgIElERU5UIG1heWJlX3Nw
YWNlIHsKKyAgICAgICAgJCQgPSBjc3NQcm9wZXJ0eUlEKCQxKTsKKyAgICB9CisgIDsKKworcHJp
bzoKKyAgICBJTVBPUlRBTlRfU1lNIG1heWJlX3NwYWNlIHsgJCQgPSB0cnVlOyB9CisgICAgfCAv
KiBlbXB0eSAqLyB7ICQkID0gZmFsc2U7IH0KKyAgOworCitleHByOgorICAgIHRlcm0geworICAg
ICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdWYWx1ZUxpc3QoKTsKKyAgICAgICAgJCQt
PmFkZFZhbHVlKHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWUoJDEpKTsKKyAgICB9CisgICAgfCBl
eHByIG9wZXJhdG9yIHRlcm0geworICAgICAgICAkJCA9ICQxOworICAgICAgICBpZiAoJCQpIHsK
KyAgICAgICAgICAgIGlmICgkMikgeworICAgICAgICAgICAgICAgIENTU1BhcnNlclZhbHVlIHY7
CisgICAgICAgICAgICAgICAgdi5pZCA9IDA7CisgICAgICAgICAgICAgICAgdi51bml0ID0gQ1NT
UGFyc2VyVmFsdWU6Ok9wZXJhdG9yOworICAgICAgICAgICAgICAgIHYuaVZhbHVlID0gJDI7Cisg
ICAgICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHYpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgJCQtPmFkZFZhbHVlKHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWUoJDMpKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICB8IGV4cHIgaW52YWxpZF9ibG9ja19saXN0IHsKKyAgICAgICAgJCQgPSAw
OworICAgIH0KKyAgICB8IGV4cHIgaW52YWxpZF9ibG9ja19saXN0IGVycm9yIHsKKyAgICAgICAg
JCQgPSAwOworICAgIH0KKyAgICB8IGV4cHIgZXJyb3IgeworICAgICAgICAkJCA9IDA7CisgICAg
fQorICA7CisKK29wZXJhdG9yOgorICAgICcvJyBtYXliZV9zcGFjZSB7CisgICAgICAgICQkID0g
Jy8nOworICAgIH0KKyAgfCAnLCcgbWF5YmVfc3BhY2UgeworICAgICAgICAkJCA9ICcsJzsKKyAg
ICB9CisgIHwgLyogZW1wdHkgKi8geworICAgICAgICAkJCA9IDA7CisgIH0KKyAgOworCit0ZXJt
OgorICB1bmFyeV90ZXJtIHsgJCQgPSAkMTsgfQorICB8IHVuYXJ5X29wZXJhdG9yIHVuYXJ5X3Rl
cm0geyAkJCA9ICQyOyAkJC5mVmFsdWUgKj0gJDE7IH0KKyAgfCBTVFJJTkcgbWF5YmVfc3BhY2Ug
eyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19TVFJJTkc7IH0KKyAgfCBJREVOVCBtYXliZV9zcGFjZSB7CisgICAgICAkJC5pZCA9IGNz
c1ZhbHVlS2V5d29yZElEKCQxKTsKKyAgICAgICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX0lERU5UOworICAgICAgJCQuc3RyaW5nID0gJDE7CisgIH0KKyAgLyogV2UgbWlnaHQgbmVl
ZCB0byBhY3R1YWxseSBwYXJzZSB0aGUgbnVtYmVyIGZyb20gYSBkaW1lbnNpb24sIGJ1dCB3ZSBj
YW4ndCBqdXN0IHB1dCBzb21ldGhpbmcgdGhhdCB1c2VzICQkLnN0cmluZyBpbnRvIHVuYXJ5X3Rl
cm0uICovCisgIHwgRElNRU4gbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQx
OyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ESU1FTlNJT047IH0KKyAgfCB1bmFy
eV9vcGVyYXRvciBESU1FTiBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDI7
ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RJTUVOU0lPTjsgfQorICB8IFVSSSBt
YXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1VSSTsgfQorICB8IFVOSUNPREVSQU5HRSBtYXliZV9zcGFjZSB7ICQk
LmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1VOSUNPREVfUkFOR0U7IH0KKyAgfCBIRVggbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0
cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVYQ09M
T1I7IH0KKyAgfCAnIycgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9IENTU1Bh
cnNlclN0cmluZygpOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVY
Q09MT1I7IH0gLyogSGFuZGxlIGVycm9yIGNhc2U6ICJjb2xvcjogIzsiICovCisgIHwgVkFSRlVO
Q1RJT04gbWF5YmVfc3BhY2UgSURFTlQgJyknIG1heWJlX3NwYWNlIHsKKyNpZiBFTkFCTEVfQ1NT
X1ZBUklBQkxFUworICAgICAgJCQuaWQgPSAwOworICAgICAgJCQuc3RyaW5nID0gJDM7CisgICAg
ICAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WQVJJQUJMRV9OQU1FOworI2VuZGlm
CisgIH0KKyAgLyogRklYTUU6IGFjY29yZGluZyB0byB0aGUgc3BlY3MgYSBmdW5jdGlvbiBjYW4g
aGF2ZSBhIHVuYXJ5X29wZXJhdG9yIGluIGZyb250LiBJIGtub3cgbm8gY2FzZSB3aGVyZSB0aGlz
IG1ha2VzIHNlbnNlICovCisgIHwgZnVuY3Rpb24geworICAgICAgJCQgPSAkMTsKKyAgfQorICB8
IGNhbGNfZnVuY3Rpb24geworICAgICAgJCQgPSAkMTsKKyAgfQorICB8IG1pbl9vcl9tYXhfZnVu
Y3Rpb24geworICAgICAgJCQgPSAkMTsKKyAgfQorICB8ICclJyBtYXliZV9zcGFjZSB7IC8qIEhh
bmRsZSB3aWR0aDogJTsgKi8KKyAgICAgICQkLmlkID0gMDsgJCQudW5pdCA9IDA7CisgIH0KKyAg
OworCit1bmFyeV90ZXJtOgorICBJTlRFR0VSIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5p
c0ludCA9IHRydWU7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19OVU1CRVI7IH0KKyAgfCBGTE9BVFRPS0VOIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAk
JC5pc0ludCA9IGZhbHNlOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfTlVNQkVSOyB9CisgIHwgUEVSQ0VOVEFHRSBtYXliZV9zcGFjZSB7ICQkLmlkID0g
MDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNF
TlRBR0U7IH0KKyAgfCBQWFMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQx
OyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWDsgfQorICB8IENNUyBtYXliZV9z
cGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0NNOyB9CisgIHwgTU1TIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFs
dWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTU07IH0KKyAgfCBJTlMg
bWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19JTjsgfQorICB8IFBUUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsg
JCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BUOyB9Cisg
IHwgUENTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEM7IH0KKyAgfCBERUdTIG1heWJlX3NwYWNlIHsgJCQu
aWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
REVHOyB9CisgIHwgUkFEUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7
ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JBRDsgfQorICB8IEdSQURTIG1heWJl
X3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfR1JBRDsgfQorICB8IFRVUk5TIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAk
JC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVFVSTjsgfQor
ICB8IE1TRUNTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5p
dCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTVM7IH0KKyAgfCBTRUNTIG1heWJlX3NwYWNlIHsg
JCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUzsgfQorICB8IEhFUlRaIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAk
MTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSFo7IH0KKyAgfCBLSEVSVFogbWF5
YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19LSFo7IH0KKyAgfCBFTVMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQk
LmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVM7IH0KKyAg
fCBRRU1TIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9
IENTU1BhcnNlclZhbHVlOjpRX0VNUzsgfQorICB8IEVYUyBtYXliZV9zcGFjZSB7ICQkLmlkID0g
MDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VYUzsg
fQorICB8IFJFTVMgbWF5YmVfc3BhY2UgeworICAgICAgJCQuaWQgPSAwOworICAgICAgJCQuZlZh
bHVlID0gJDE7CisgICAgICAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SRU1TOwor
ICAgICAgaWYgKHBhcnNlci0+bV9zdHlsZVNoZWV0KQorICAgICAgICAgIHBhcnNlci0+bV9zdHls
ZVNoZWV0LT5wYXJzZXJTZXRVc2VzUmVtVW5pdHModHJ1ZSk7CisgIH0KKyAgfCBWVyBtYXliZV9z
cGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1ZXOyB9CisgIHwgVkggbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1
ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WSDsgfQorICB8IFZNSU4g
bWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19WTUlOOyB9CisgIHwgRFBQWCBtYXliZV9zcGFjZSB7ICQkLmlkID0g
MDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQUFg7
IH0KKyAgfCBEUEkgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51
bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19EUEk7IH0KKyAgfCBEUENNIG1heWJlX3NwYWNl
IHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfRFBDTTsgfQorICA7CisKK2Z1bmN0aW9uOgorICAgIEZVTkNUSU9OIG1heWJlX3NwYWNl
IGV4cHIgJyknIG1heWJlX3NwYWNlIHsKKyAgICAgICAgQ1NTUGFyc2VyRnVuY3Rpb24qIGYgPSBw
YXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsKKyAgICAgICAgZi0+bmFtZSA9ICQxOwor
ICAgICAgICBmLT5hcmdzID0gcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDMpOworICAg
ICAgICAkJC5pZCA9IDA7CisgICAgICAgICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rp
b247CisgICAgICAgICQkLmZ1bmN0aW9uID0gZjsKKyAgICB9IHwKKyAgICBGVU5DVElPTiBtYXli
ZV9zcGFjZSBleHByIFRPS0VOX0VPRiB7CisgICAgICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0g
cGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7CisgICAgICAgIGYtPm5hbWUgPSAkMTsK
KyAgICAgICAgZi0+YXJncyA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQzKTsKKyAg
ICAgICAgJCQuaWQgPSAwOworICAgICAgICAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0
aW9uOworICAgICAgICAkJC5mdW5jdGlvbiA9IGY7CisgICAgfSB8CisgICAgRlVOQ1RJT04gbWF5
YmVfc3BhY2UgJyknIG1heWJlX3NwYWNlIHsKKyAgICAgICAgQ1NTUGFyc2VyRnVuY3Rpb24qIGYg
PSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsKKyAgICAgICAgZi0+bmFtZSA9ICQx
OworICAgICAgICBDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlTGlzdCA9IHBhcnNlci0+Y3JlYXRl
RmxvYXRpbmdWYWx1ZUxpc3QoKTsKKyAgICAgICAgZi0+YXJncyA9IHBhcnNlci0+c2lua0Zsb2F0
aW5nVmFsdWVMaXN0KHZhbHVlTGlzdCk7CisgICAgICAgICQkLmlkID0gMDsKKyAgICAgICAgJCQu
dW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKKyAgICAgICAgJCQuZnVuY3Rpb24gPSBm
OworICAgIH0gfAorICAgIEZVTkNUSU9OIG1heWJlX3NwYWNlIGVycm9yIHsKKyAgICAgICAgQ1NT
UGFyc2VyRnVuY3Rpb24qIGYgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsKKyAg
ICAgICAgZi0+bmFtZSA9ICQxOworICAgICAgICBmLT5hcmdzID0gbnVsbHB0cjsKKyAgICAgICAg
JCQuaWQgPSAwOworICAgICAgICAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uOwor
ICAgICAgICAkJC5mdW5jdGlvbiA9IGY7CisgIH0KKyAgOworIAorY2FsY19mdW5jX3Rlcm06Cisg
IHVuYXJ5X3Rlcm0geyAkJCA9ICQxOyB9CisgIHwgVkFSRlVOQ1RJT04gbWF5YmVfc3BhY2UgSURF
TlQgJyknIG1heWJlX3NwYWNlIHsKKyNpZiBFTkFCTEVfQ1NTX1ZBUklBQkxFUworICAgICAgJCQu
aWQgPSAwOworICAgICAgJCQuc3RyaW5nID0gJDM7CisgICAgICAkJC51bml0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19WQVJJQUJMRV9OQU1FOworI2VuZGlmCisgIH0KKyAgfCB1bmFyeV9vcGVy
YXRvciB1bmFyeV90ZXJtIHsgJCQgPSAkMjsgJCQuZlZhbHVlICo9ICQxOyB9CisgIDsKKworY2Fs
Y19mdW5jX29wZXJhdG9yOgorICAgICcrJyBXSElURVNQQUNFIHsKKyAgICAgICAgJCQgPSAnKyc7
CisgICAgfQorICAgIHwgJy0nIFdISVRFU1BBQ0UgeworICAgICAgICAkJCA9ICctJzsKKyAgICB9
CisgICAgfCAnKicgbWF5YmVfc3BhY2UgeworICAgICAgICAkJCA9ICcqJzsKKyAgICB9CisgICAg
fCAnLycgbWF5YmVfc3BhY2UgeworICAgICAgICAkJCA9ICcvJzsKKyAgICB9CisgIDsKKworY2Fs
Y19mdW5jX3BhcmVuX2V4cHI6CisgICAgJygnIG1heWJlX3NwYWNlIGNhbGNfZnVuY19leHByIG1h
eWJlX3NwYWNlICcpJyBtYXliZV9zcGFjZSB7CisgICAgICAgIGlmICgkMykgeworICAgICAgICAg
ICAgJCQgPSAkMzsKKyAgICAgICAgICAgIENTU1BhcnNlclZhbHVlIHY7CisgICAgICAgICAgICB2
LmlkID0gMDsKKyAgICAgICAgICAgIHYudW5pdCA9IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvcjsK
KyAgICAgICAgICAgIHYuaVZhbHVlID0gJygnOworICAgICAgICAgICAgJCQtPmluc2VydFZhbHVl
QXQoMCwgdik7CisgICAgICAgICAgICB2LmlWYWx1ZSA9ICcpJzsKKyAgICAgICAgICAgICQkLT5h
ZGRWYWx1ZSh2KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQor
CitjYWxjX2Z1bmNfZXhwcjoKKyAgICBjYWxjX2Z1bmNfdGVybSBtYXliZV9zcGFjZSB7CisgICAg
ICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1ZhbHVlTGlzdCgpOworICAgICAgICAkJC0+
YWRkVmFsdWUocGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZSgkMSkpOworICAgIH0KKyAgICB8IGNh
bGNfZnVuY19leHByIGNhbGNfZnVuY19vcGVyYXRvciBjYWxjX2Z1bmNfdGVybSB7CisgICAgICAg
IGlmICgkMSAmJiAkMikgeworICAgICAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgICAgIENTU1Bh
cnNlclZhbHVlIHY7CisgICAgICAgICAgICB2LmlkID0gMDsKKyAgICAgICAgICAgIHYudW5pdCA9
IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvcjsKKyAgICAgICAgICAgIHYuaVZhbHVlID0gJDI7Cisg
ICAgICAgICAgICAkJC0+YWRkVmFsdWUodik7CisgICAgICAgICAgICAkJC0+YWRkVmFsdWUocGFy
c2VyLT5zaW5rRmxvYXRpbmdWYWx1ZSgkMykpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICQkID0gMDsKKworICAgIH0KKyAgICB8IGNhbGNfZnVuY19leHByIGNhbGNfZnVuY19vcGVyYXRv
ciBjYWxjX2Z1bmNfcGFyZW5fZXhwciB7CisgICAgICAgIGlmICgkMSAmJiAkMiAmJiAkMykgewor
ICAgICAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgICAgIENTU1BhcnNlclZhbHVlIHY7CisgICAg
ICAgICAgICB2LmlkID0gMDsKKyAgICAgICAgICAgIHYudW5pdCA9IENTU1BhcnNlclZhbHVlOjpP
cGVyYXRvcjsKKyAgICAgICAgICAgIHYuaVZhbHVlID0gJDI7CisgICAgICAgICAgICAkJC0+YWRk
VmFsdWUodik7CisgICAgICAgICAgICAkJC0+ZXh0ZW5kKCooJDMpKTsKKyAgICAgICAgfSBlbHNl
IAorICAgICAgICAgICAgJCQgPSAwOworICAgIH0KKyAgICB8IGNhbGNfZnVuY19wYXJlbl9leHBy
CisgICAgfCBjYWxjX2Z1bmNfZXhwciBlcnJvciB7CisgICAgICAgICQkID0gMDsKKyAgICB9Cisg
IDsKKworY2FsY19mdW5jX2V4cHJfbGlzdDoKKyAgICBjYWxjX2Z1bmNfZXhwciAgeworICAgICAg
ICAkJCA9ICQxOworICAgIH0gICAgCisgICAgfCBjYWxjX2Z1bmNfZXhwcl9saXN0ICcsJyBtYXli
ZV9zcGFjZSBjYWxjX2Z1bmNfZXhwciB7CisgICAgICAgIGlmICgkMSAmJiAkNCkgeworICAgICAg
ICAgICAgJCQgPSAkMTsKKyAgICAgICAgICAgIENTU1BhcnNlclZhbHVlIHY7CisgICAgICAgICAg
ICB2LmlkID0gMDsKKyAgICAgICAgICAgIHYudW5pdCA9IENTU1BhcnNlclZhbHVlOjpPcGVyYXRv
cjsKKyAgICAgICAgICAgIHYuaVZhbHVlID0gJywnOworICAgICAgICAgICAgJCQtPmFkZFZhbHVl
KHYpOworICAgICAgICAgICAgJCQtPmV4dGVuZCgqKCQ0KSk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgJCQgPSAwOworICAgIH0KKyAgICAKKworY2FsY19mdW5jdGlvbjoKKyAgICBDQUxD
RlVOQ1RJT04gbWF5YmVfc3BhY2UgY2FsY19mdW5jX2V4cHIgJyknIG1heWJlX3NwYWNlIHsKKyAg
ICAgICAgQ1NTUGFyc2VyRnVuY3Rpb24qIGYgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rp
b24oKTsKKyAgICAgICAgZi0+bmFtZSA9ICQxOworICAgICAgICBmLT5hcmdzID0gcGFyc2VyLT5z
aW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDMpOworICAgICAgICAkJC5pZCA9IDA7CisgICAgICAgICQk
LnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb247CisgICAgICAgICQkLmZ1bmN0aW9uID0g
ZjsKKyAgICB9CisgICAgfCBDQUxDRlVOQ1RJT04gbWF5YmVfc3BhY2UgZXJyb3IgeworICAgICAg
ICBZWUVSUk9SOworICAgIH0KKyAgICA7CisKKworbWluX29yX21heDoKKyAgICBNSU5GVU5DVElP
TiB7CisgICAgICAgICQkID0gJDE7CisgICAgfQorICAgIHwgTUFYRlVOQ1RJT04geworICAgICAg
ICAkJCA9ICQxOworICAgIH0KKyAgICA7CisKK21pbl9vcl9tYXhfZnVuY3Rpb246CisgICAgbWlu
X29yX21heCBtYXliZV9zcGFjZSBjYWxjX2Z1bmNfZXhwcl9saXN0ICcpJyBtYXliZV9zcGFjZSB7
CisgICAgICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1
bmN0aW9uKCk7CisgICAgICAgIGYtPm5hbWUgPSAkMTsKKyAgICAgICAgZi0+YXJncyA9IHBhcnNl
ci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQzKTsKKyAgICAgICAgJCQuaWQgPSAwOworICAgICAg
ICAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uOworICAgICAgICAkJC5mdW5jdGlv
biA9IGY7CisgICAgfSAKKyAgICB8IG1pbl9vcl9tYXggbWF5YmVfc3BhY2UgZXJyb3IgeworICAg
ICAgICBZWUVSUk9SOworICAgIH0KKyAgICA7CisKKy8qIGVycm9yIGhhbmRsaW5nIHJ1bGVzICov
CisKK3NhdmVfYmxvY2s6CisgICAgY2xvc2luZ19icmFjZSB7CisgICAgICAgICQkID0gMDsKKyAg
ICB9CisgIHwgZXJyb3IgY2xvc2luZ19icmFjZSB7CisgICAgICAgICQkID0gMDsKKyAgICB9Cisg
ICAgOworCitpbnZhbGlkX2F0OgorICAgIEFUS0VZV09SRCBlcnJvciBpbnZhbGlkX2Jsb2NrIHsK
KyAgICAgICAgJCQgPSAwOworICAgIH0KKyAgfCBBVEtFWVdPUkQgZXJyb3IgJzsnIHsKKyAgICAg
ICAgJCQgPSAwOworICAgIH0KKyAgICA7CisKK2ludmFsaWRfcnVsZToKKyAgICBlcnJvciBpbnZh
bGlkX2Jsb2NrIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKworLyoKKyAgU2VlbXMgbGlrZSB0
aGUgdHdvIHJ1bGVzIGJlbG93IGFyZSB0cnlpbmcgdG9vIG11Y2ggYW5kIHZpb2xhdGluZworICBo
dHRwOi8vd3d3LmhpeGllLmNoL3Rlc3RzL2V2aWwvbWl4ZWQvY3NzZXJyb3JoYW5kbGluZy5odG1s
CisKKyAgfCBlcnJvciAnOycgeworICAgICAgICAkJCA9IDA7CisgICAgfQorICB8IGVycm9yICd9
JyB7CisgICAgICAgICQkID0gMDsKKyAgICB9CisqLworICAgIDsKKworaW52YWxpZF9ibG9jazoK
KyAgICAneycgZXJyb3IgaW52YWxpZF9ibG9ja19saXN0IGVycm9yIGNsb3NpbmdfYnJhY2Ugewor
ICAgICAgICBwYXJzZXItPmludmFsaWRCbG9ja0hpdCgpOworICAgIH0KKyAgfCAneycgZXJyb3Ig
Y2xvc2luZ19icmFjZSB7CisgICAgICAgIHBhcnNlci0+aW52YWxpZEJsb2NrSGl0KCk7CisgICAg
fQorICAgIDsKKworaW52YWxpZF9ibG9ja19saXN0OgorICAgIGludmFsaWRfYmxvY2sKKyAgfCBp
bnZhbGlkX2Jsb2NrX2xpc3QgZXJyb3IgaW52YWxpZF9ibG9jaworOworCislJQorCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluY2x1ZGVzIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbmNsdWRlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjY4OTc0NTBiNDFj
NTgxNzAxOTNiOWIwMDhiNjQ2YjRjZGE2NjdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbmNsdWRlcwpAQCAtMCwwICsxLDg1IEBACisleworCisv
KgorICogIENvcHlyaWdodCAoQykgMjAwMi0yMDAzIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcp
CisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIw
MDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQorICogIENvcHlyaWdodCAoQykg
MjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICoKKyAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
ICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAg
VVNBCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkNTU1BhcnNl
ci5oIgorI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVW
YWx1ZS5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKyNpbmNsdWRlICJDU1NTZWxl
Y3Rvci5oIgorI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgorI2luY2x1ZGUgIkRvY3VtZW50
LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCisjaW5j
bHVkZSAiTWVkaWFRdWVyeUV4cC5oIgorI2luY2x1ZGUgIlN0eWxlUnVsZS5oIgorI2luY2x1ZGUg
IlN0eWxlU2hlZXRDb250ZW50cy5oIgorI2luY2x1ZGUgIldlYktpdENTU0tleWZyYW1lUnVsZS5o
IgorI2luY2x1ZGUgIldlYktpdENTU0tleWZyYW1lc1J1bGUuaCIKKyNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKKyNk
ZWZpbmUgWVlNQUxMT0MgZmFzdE1hbGxvYworI2RlZmluZSBZWUZSRUUgZmFzdEZyZWUKKworI2Rl
ZmluZSBZWUVOQUJMRV9OTFMgMAorI2RlZmluZSBZWUxUWVBFX0lTX1RSSVZJQUwgMQorI2RlZmlu
ZSBZWU1BWERFUFRIIDEwMDAwCisjZGVmaW5lIFlZREVCVUcgMAorCisjaWYgWVlERUJVRyA+IDAK
KyNkZWZpbmUgWVlQUklOVChGaWxlLFR5cGUsVmFsdWUpIHByaW50X3Rva2VuX3ZhbHVlKEZpbGUs
VHlwZSxWYWx1ZSkKK3N0YXRpYyB2b2lkIHByaW50X3Rva2VuX3ZhbHVlKEZJTEUgKiB5eW91dHB1
dCwgaW50IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAmeXl2YWx1ZSkKK3sKKyAgICBzd2l0Y2ggKHl5
dHlwZSkgeworICAgIGNhc2UgSURFTlQ6CisgICAgY2FzZSBTVFJJTkc6CisgICAgY2FzZSBOVEg6
CisgICAgY2FzZSBIRVg6CisgICAgY2FzZSBJRFNFTDoKKyAgICBjYXNlIERJTUVOOgorICAgIGNh
c2UgSU5WQUxJRERJTUVOOgorICAgIGNhc2UgVVJJOgorICAgIGNhc2UgRlVOQ1RJT046CisgICAg
Y2FzZSBBTllGVU5DVElPTjoKKyAgICBjYXNlIE5PVEZVTkNUSU9OOgorICAgIGNhc2UgQ0FMQ0ZV
TkNUSU9OOgorICAgIGNhc2UgTUlORlVOQ1RJT046CisgICAgY2FzZSBNQVhGVU5DVElPTjoKKyAg
ICBjYXNlIFZBUl9ERUZJTklUSU9OOgorICAgIGNhc2UgVU5JQ09ERVJBTkdFOgorICAgICAgICBZ
WUZQUklOVEYoeXlvdXRwdXQsICIlcyIsIFN0cmluZyh5eXZhbHVlLnN0cmluZykudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAg
IH0KK30KKyNlbmRpZgorCislfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vn
cmFtbWFyLnBsIGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2VncmFtbWFyLnBsCmluZGV4IDA2ZmFh
YTkzZDMyNjBhYjUzMDQxN2M0MzNlMTY4YzMzNWJjNjdhZWYuLjRlMDQ1MmVkODM1MWEzZTRiM2Y0
ZWFmYzVjOTllMmZlOGU4OTc0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtl
Z3JhbW1hci5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZWdyYW1tYXIucGwKQEAgLTIx
LDM1ICsyMSw3NSBAQAogdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5nczsKIAotbXkgJGdyYW1tYXIg
PSAkQVJHVlswXTsKLW15ICRmaWxlQmFzZSA9ICRBUkdWWzFdOwordXNlIEZpbGU6OkJhc2VuYW1l
OwordXNlIEZpbGU6OlNwZWM7Cit1c2UgR2V0b3B0OjpMb25nOwogCi1zeXN0ZW0oImJpc29uIC1k
IC1wIGNzc3l5ICIgLiAkZ3JhbW1hciAuICIgLW8gIiAuICRmaWxlQmFzZSAuICIudGFiLmMiKTsK
K215ICRvdXRwdXREaXIgPSAiLiI7CitteSAkZXh0cmFEZWZpbmVzID0gIiI7CitteSAkc3ltYm9s
c1ByZWZpeCA9ICIiOworbXkgJHByZXByb2Nlc3NvciA9ICIiOworbXkgJHByZXByb2Nlc3NPbmx5
ID0gMDsKK215ICRiaXNvbiA9ICJiaXNvbiI7CiAKLW9wZW4gSEVBREVSLCAiPiIgLiAkZmlsZUJh
c2UgLiAiLmgiIG9yIGRpZTsKK0dldE9wdGlvbnMoCisgICAgJ291dHB1dERpcj1zJyA9PiBcJG91
dHB1dERpciwKKyAgICAnZXh0cmFEZWZpbmVzPXMnID0+IFwkZXh0cmFEZWZpbmVzLAorICAgICdi
aXNvbj1zJyA9PiBcJGJpc29uLAorICAgICdwcmVwcm9jZXNzb3I9cycgPT4gXCRwcmVwcm9jZXNz
b3IsCisgICAgJ3ByZXByb2Nlc3NPbmx5JyA9PiBcJHByZXByb2Nlc3NPbmx5LAorICAgICdzeW1i
b2xzUHJlZml4PXMnID0+IFwkc3ltYm9sc1ByZWZpeAorKTsKKworbXkgJGdyYW1tYXJGaWxlUGF0
aCA9ICRBUkdWWzBdOworbXkgJGdyYW1tYXJJbmNsdWRlc0ZpbGVQYXRoID0gQEFSR1YgPiAwID8g
JEFSR1ZbMV0gOiAiIjsKKworaWYgKCFsZW5ndGgoJHN5bWJvbHNQcmVmaXgpICYmICEkcHJlcHJv
Y2Vzc09ubHkpIHsKKyAgICBkaWUgIk5lZWQgYSBzeW1ib2xzIHByZWZpeCB0byBnaXZlIHRvIGJp
c29uIChlLmcuIGNzc3l5LCB4cGF0aHl5KSI7Cit9CisKK215ICgkZmlsZW5hbWUsICRiYXNlUGF0
aCwgJHN1ZmZpeCkgPSBmaWxlcGFyc2UoJGdyYW1tYXJGaWxlUGF0aCwgKCIueSIsICIueS5pbiIp
KTsKKworaWYgKCRzdWZmaXggZXEgIi55LmluIikgeworICAgIG15ICRncmFtbWFyRmlsZU91dFBh
dGggPSBGaWxlOjpTcGVjLT5qb2luKCRvdXRwdXREaXIsICIkZmlsZW5hbWUueSIpOworICAgIGlm
ICghJGdyYW1tYXJJbmNsdWRlc0ZpbGVQYXRoKSB7CisgICAgICAgICRncmFtbWFySW5jbHVkZXNG
aWxlUGF0aCA9ICIke2Jhc2VQYXRofSR7ZmlsZW5hbWV9LnkuaW5jbHVkZXMiOworICAgIH0KKwor
ICAgIG9wZW4gR1JBTU1BUiwgIj4kZ3JhbW1hckZpbGVPdXRQYXRoIiBvciBkaWU7CisgICAgb3Bl
biBJTkNMVURFUywgIjwkZ3JhbW1hckluY2x1ZGVzRmlsZVBhdGgiIG9yIGRpZTsKKworICAgIHJl
cXVpcmUgcHJlcHJvY2Vzc29yOworCisgICAgd2hpbGUgKDxJTkNMVURFUz4pIHsKKyAgICAgICAg
cHJpbnQgR1JBTU1BUjsKKyAgICB9CisgICAgcHJpbnQgR1JBTU1BUiBqb2luKCIiLCBhcHBseVBy
ZXByb2Nlc3NvcigkZ3JhbW1hckZpbGVQYXRoLCAkZXh0cmFEZWZpbmVzLCAkcHJlcHJvY2Vzc29y
KSk7CisgICAgY2xvc2UgR1JBTU1BUjsKKworICAgICRncmFtbWFyRmlsZVBhdGggPSAkZ3JhbW1h
ckZpbGVPdXRQYXRoOworCisgICAgZXhpdCBpZiAkcHJlcHJvY2Vzc09ubHk7Cit9CisKK215ICRm
aWxlQmFzZSA9IEZpbGU6OlNwZWMtPmpvaW4oJG91dHB1dERpciwgJGZpbGVuYW1lKTsKK3N5c3Rl
bSgiJGJpc29uIC1kIC1wICRzeW1ib2xzUHJlZml4ICRncmFtbWFyRmlsZVBhdGggLW8gJGZpbGVC
YXNlLmNwcCIpOworCitvcGVuIEhFQURFUiwgIj4kZmlsZUJhc2UuaCIgb3IgZGllOwogcHJpbnQg
SEVBREVSIDw8ICJFT0YiOwogI2lmbmRlZiBDU1NHUkFNTUFSX0gKICNkZWZpbmUgQ1NTR1JBTU1B
Ul9ICiBFT0YKIAotb3BlbiBIUFAsICI8IiAuICRmaWxlQmFzZSAuICIudGFiLmgiIG9yIGRpZTsK
K29wZW4gSFBQLCAiPCRmaWxlQmFzZS5jcHAuaCIgb3Igb3BlbiBIUFAsICI8JGZpbGVCYXNlLmhw
cCIgb3IgZGllOwogd2hpbGUgKDxIUFA+KSB7CiAgICAgcHJpbnQgSEVBREVSOwogfQogY2xvc2Ug
SFBQOwogCiBwcmludCBIRUFERVIgIiNlbmRpZlxuIjsKLQogY2xvc2UgSEVBREVSOwogCi11bmxp
bmsoJGZpbGVCYXNlIC4gIi50YWIuaCIpOwotCi1vcGVuIENQUCwgIj4iIC4gJGZpbGVCYXNlIC4g
Ii5jcHAiIG9yIGRpZTsKLW9wZW4gR0VOU1JDLCAiPCIgLiAkZmlsZUJhc2UgLiAiLnRhYi5jIiBv
ciBkaWU7Ci13aGlsZSAoPEdFTlNSQz4pIHsKLSAgICBwcmludCBDUFA7Ci19Ci1jbG9zZSBHRU5T
UkM7Ci1jbG9zZSBDUFA7Cit1bmxpbmsoIiRmaWxlQmFzZS5jcHAuaCIpOwordW5saW5rKCIkZmls
ZUJhc2UuaHBwIik7CiAKLXVubGluaygkZmlsZUJhc2UgLiAiLnRhYi5jIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlIGIvU291cmNlL2NtYWtlL1dlYktpdE1h
Y3Jvcy5jbWFrZQppbmRleCBlZDhlYjVkMzIwZjIzZGQ4ZGY4NGJiNzRlNmQ3ZTI5ZjU1OTA0NWVm
Li43OGZiYWY2ZDUxMzVhNDFlMzUxMzA0YTU4ZDY3ZDc4MzhjYTg0YzgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9XZWJLaXRN
YWNyb3MuY21ha2UKQEAgLTE0OCwxMSArMTQ4LDEyIEBAIE1BQ1JPIChHRU5FUkFURV9IQVNIX0xV
VCBfaW5wdXQgX291dHB1dCkKIEVORE1BQ1JPICgpCiAKIAotTUFDUk8gKEdFTkVSQVRFX0dSQU1N
QVIgX3ByZWZpeCBfaW5wdXQgX291dHB1dF9oZWFkZXIgX291dHB1dF9zb3VyY2UpCitNQUNSTyAo
R0VORVJBVEVfR1JBTU1BUiBfcHJlZml4IF9pbnB1dCBfb3V0cHV0X2hlYWRlciBfb3V0cHV0X3Nv
dXJjZSBfZmVhdHVyZXMpCiAgICAgQUREX0NVU1RPTV9DT01NQU5EKAogICAgICAgICBPVVRQVVQg
JHtfb3V0cHV0X2hlYWRlcn0gJHtfb3V0cHV0X3NvdXJjZX0KICAgICAgICAgTUFJTl9ERVBFTkRF
TkNZICR7X2lucHV0fQotICAgICAgICBDT01NQU5EICR7QklTT05fRVhFQ1VUQUJMRX0gLXAgJHtf
cHJlZml4fSAke19pbnB1dH0gLW8gJHtfb3V0cHV0X3NvdXJjZX0gLS1kZWZpbmVzPSR7X291dHB1
dF9oZWFkZXJ9CisgICAgICAgIERFUEVORFMgJHtfaW5wdXR9CisgICAgICAgIENPTU1BTkQgJHtQ
RVJMX0VYRUNVVEFCTEV9IC1JICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL3NjcmlwdHMgJHtXRUJD
T1JFX0RJUn0vY3NzL21ha2VncmFtbWFyLnBsICR7X2lucHV0fSAtLW91dHB1dERpciAke0RFUklW
RURfU09VUkNFU19XRUJDT1JFX0RJUn0gLS1leHRyYURlZmluZXMgIiR7X2ZlYXR1cmVzfSIgLS1w
cmVwcm9jZXNzb3IgIiR7Q09ERV9HRU5FUkFUT1JfUFJFUFJPQ0VTU09SfSIgLS1iaXNvbiAiJHtC
SVNPTl9FWEVDVVRBQkxFfSIgLS1zeW1ib2xzUHJlZml4ICR7X3ByZWZpeH0gJHtfaW5wdXR9CiAg
ICAgICAgIFZFUkJBVElNKQogRU5ETUFDUk8gKCkKIApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIv
Q2hhbmdlTG9nCmluZGV4IGYzMDFmZDIwYjRhZDUxOGE3OGZiMGJjZGExYTExN2MzMzdhZmE0MjYu
LjNkNDA3MjY3YjBkOWUwNDE1ZmJjYWI5OGM0YjU2NWZjYmUwOWIyZGUgMTAwNjQ0Ci0tLSBhL0No
YW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0xMC0xNSAgUGFi
bG8gRmxvdXJldCAgPHBhYmxvZkBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgUHJlLXByb2Nlc3Mg
Q1NTR3JhbW1hci55IGJlZm9yZSBydW5uaW5nIHRocm91Z2ggYmlzb24uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDI5MAorCisgICAgICAgIFJldmll
d2VkIGJ5IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9z
LmNtYWtlOgorICAgICAgICAgICAgVXNlIFdlYkNvcmUvY3NzL21ha2VncmFtbWFyLnBsIHRvIGdl
bmVyYXRlIGJpc29uIGdyYW1tYXIgZmlsZXMuCisKIDIwMTItMTAtMTUgIFJ5dWFuIENob2kgIDxy
eXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIFNoYXJlIHJlc291cmNlcyBp
bnN0YWxsZWQgZm9yIGluc3BlY3Rvcgo=
</data>
<flag name="commit-queue"
          id="181859"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168823</attachid>
            <date>2012-10-15 17:45:11 -0700</date>
            <delta_ts>2012-10-16 11:03:57 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-94290-20121015174400.patch</filename>
            <type>text/plain</type>
            <size>116385</size>
            <attacher name="Pablo Flouret">pf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmMzYzhmODZjZTU4MGEx
YWI2ZTM5ODM1NGI4NDc0NjI3ZWQxNTdkYy4uZWNiODM5NTA0ZTk2NTBmMTZlNGYxMWE3OGU1ZWIx
ZDI3OGFkNjdjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTEwLTA5ICBQYWJs
byBGbG91cmV0ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBQcmUtcHJvY2VzcyBD
U1NHcmFtbWFyLnkgYmVmb3JlIHJ1bm5pbmcgdGhyb3VnaCBiaXNvbi4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MjkwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAgICBSdW5uaW5nIENTU0dyYW1tYXIueSB0aHJvdWdo
IGEgcHJlcHJvY2Vzc29yIGFsbG93cyB0aGUgdXNlIG9mIGZlYXR1cmUKKyAgICAgICAgZGVmaW5l
cyBpbiBhbGwgcGxhY2VzIG9mIHRoZSB5YWNjIGZpbGUgKGkuZS4gbm90IGp1c3QgaW4gQyBibG9j
a3MpLgorICAgICAgICBNb3N0bHkgdXNlZnVsIHRvIGJlIGFibGUgdG8ga2VlcCBldmVyeSBwYXJ0
IG9mIGEgZmVhdHVyZSB1bmRlciBmZWF0dXJlCisgICAgICAgIGZsYWdzIGZvciBzZWxmLWRvY3Vt
ZW50aW5nIHB1cnBvc2VzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgQ1NTR3JhbW1hci55IHNo
b3VsZCBiZSBnZW5lcmF0ZWQgY29ycmVjdGx5IGFuZCBldmVyeXRoaW5nCisgICAgICAgIHNob3Vs
ZCBrZWVwIHdvcmtpbmcgYXMgYmVmb3JlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5w
cmk6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICAgICBNb2RpZnkgYnVpbGQg
c3lzdGVtcyB0byB1c2UgbWFrZWdyYW1tYXIucGwgdG8gZ2VuZXJhdGUgdGhlIC55IGZpbGVzCisg
ICAgICAgICAgICBhbmQgcnVuIHRob3NlIHRocm91Z2ggYmlzb24uCisKKyAgICAgICAgKiBXZWJD
b3JlLmd5cC9XZWJDb3JlLmd5cDoKKyAgICAgICAgICAgIEFkZCBhIG5ldyBhY3Rpb24gdG8gcHJl
cHJvY2VzcyB0aGUgQ1NTR3JhbW1hci55LmluIGZpbGUgYmVmb3JlIHRoZQorICAgICAgICAgICAg
Ymlzb24gcnVsZSBpcyBydW4uCisKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICAgICBBZGQgdGhlIG5ldyAueS5pbiAvIC55LmluY2x1ZGVzIGZpbGVzLgorCisgICAgICAg
ICogY3NzL0NTU0dyYW1tYXIueS5pbjogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFtbWFyLnkuCisgICAgICAgICAgICBBbHNvIG1vdmVkIHRoZSB0b3AgZGVjbGFyYXRpb25z
IHNlY3Rpb24gdGhhdCBoYXMgaW5jbHVkZXMsIGRlZmluZXMsCisgICAgICAgICAgICBldGMuIHRv
IGl0cyBvd24gZmlsZS4gVGhlc2Ugc2hvdWxkbid0IGJlIHRvdWNoZWQgYnkgdGhlIGZpcnN0Cisg
ICAgICAgICAgICBwYXNzIG9mIHRoZSBwcmVwcm9jZXNzb3IuIEFuZCBjaGFuZ2VkIHRoZSBleGlz
dGluZyBFTkFCTEUoRkVBVFVSRSkKKyAgICAgICAgICAgIGlmZGVmcyB0byBFTkFCTEVfRkVBVFVS
RSBzaW5jZSB0aGUgRU5BQkxFKCkgbWFjcm8gaXMgbm90IGF2YWlsYWJsZQorICAgICAgICAgICAg
eWV0LgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnkuaW5jbHVkZXM6IEFkZGVkLgorICAgICAg
ICAgICAgVGhlIGFmb3JlbWVudGlvbmVkIGRlY2xhcmF0aW9ucyBoZWFkZXIgc2VjdGlvbi4gQWZ0
ZXIgdGhlIC55LmluIGZpbGUKKyAgICAgICAgICAgIGlzIHByb2Nlc3NlZCBpdCB3aWxsIGJlIGNv
bmNhdGVuYXRlZCB3aXRoIHRoaXMgb25lIHRvIG1ha2UgdGhlCisgICAgICAgICAgICBDU1NHcmFt
bWFyLnkgZmlsZS4KKworICAgICAgICAqIGNzcy9tYWtlZ3JhbW1hci5wbDoKKyAgICAgICAgICAg
IE1vZGlmeSB0aGUgc2NyaXB0IHRvIGhhbmRsZSAueS5pbiBmaWxlcy4KKwogMjAxMi0xMC0xMiAg
SmFtZXMgU2ltb25zZW4gIDxzaW1vbmphbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1JlcXVl
c3RBbmltYXRpb25GcmFtZV0gUmVtb3ZlIHZlbmRvciBwcmVmaXgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggZTg2MWQ4MDc0OGNlNTk1NjRmYjI2YzY2MGIxZTA5NTcyZGQyZjA4ZC4uZTY0OWYwOWNk
MTJlYzc4YmIyZGMwYTU2MTkyOTc1MDMzYjUzMzI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTI4NTcsMTEgKzI4NTcsMTEgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTICR7REVSSVZF
RF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9Vc2VyQWdlbnRTdHlsZVNoZWV0c0QKIEFERF9TT1VSQ0Vf
V0VCQ09SRV9ERVJJVkVEX0RFUEVOREVOQ0lFUygke1dFQkNPUkVfRElSfS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAgVXNlckFnZW50U3R5bGVTaGVldHNEYXRhLmNwcCBVc2VyQWdlbnRTdHlsZVNoZWV0
cy5oKQogCiAKLUdFTkVSQVRFX0dSQU1NQVIoY3NzeXkgJHtXRUJDT1JFX0RJUn0vY3NzL0NTU0dy
YW1tYXIueSAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vQ1NTR3JhbW1hci5oICR7REVS
SVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9DU1NHcmFtbWFyLmNwcCkKK0dFTkVSQVRFX0dSQU1N
QVIoY3NzeXkgJHtXRUJDT1JFX0RJUn0vY3NzL0NTU0dyYW1tYXIueS5pbiAke0RFUklWRURfU09V
UkNFU19XRUJDT1JFX0RJUn0vQ1NTR3JhbW1hci5oICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVf
RElSfS9DU1NHcmFtbWFyLmNwcCAiJHtGRUFUVVJFX0RFRklORVNfV0lUSF9TUEFDRV9TRVBBUkFU
T1J9IikKIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke0RFUklWRURfU09VUkNFU19XRUJD
T1JFX0RJUn0vQ1NTR3JhbW1hci5jcHApCiAKIAotR0VORVJBVEVfR1JBTU1BUih4cGF0aHl5ICR7
V0VCQ09SRV9ESVJ9L3htbC9YUGF0aEdyYW1tYXIueSAke0RFUklWRURfU09VUkNFU19XRUJDT1JF
X0RJUn0vWFBhdGhHcmFtbWFyLmggJHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9L1hQYXRo
R3JhbW1hci5jcHApCitHRU5FUkFURV9HUkFNTUFSKHhwYXRoeXkgJHtXRUJDT1JFX0RJUn0veG1s
L1hQYXRoR3JhbW1hci55ICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS9YUGF0aEdyYW1t
YXIuaCAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vWFBhdGhHcmFtbWFyLmNwcCAiIikK
IExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUyAke0RFUklWRURfU09VUkNFU19XRUJDT1JFX0RJ
Un0vWFBhdGhHcmFtbWFyLmNwcCkKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRl
eCA0YzE5OWM0NjZhMDJhYjAyY2NhN2Q1ODczYzE3OTNjNDExNzY3OWRhLi45YTk3YzE3YzY5MWEz
MzZhZjk3Zjk2ZTU3MzRmNDdhYThlNjRjYzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UKQEAgLTc4MSwzMiArNzgxLDE0IEBAIGVuZGlmCiAjIC0tLS0tLS0tCiAKICMgQ1NTIGdyYW1t
YXIKLSMgTk9URTogT2xkZXIgdmVyc2lvbnMgb2YgYmlzb24gZG8gbm90IGluamVjdCBhbiBpbmNs
dXNpb24gZ3VhcmQsIHNvIHdlIGFkZCBvbmUuCi0KLUNTU0dyYW1tYXIuY3BwIDogY3NzL0NTU0dy
YW1tYXIueQotCSQoQklTT04pIC1kIC1wIGNzc3l5ICQ8IC1vICRACi0JdG91Y2ggQ1NTR3JhbW1h
ci5jcHAuaAotCXRvdWNoIENTU0dyYW1tYXIuaHBwCi0JZWNobyAnI2lmbmRlZiBDU1NHcmFtbWFy
X2gnID4gQ1NTR3JhbW1hci5oCi0JZWNobyAnI2RlZmluZSBDU1NHcmFtbWFyX2gnID4+IENTU0dy
YW1tYXIuaAotCWNhdCBDU1NHcmFtbWFyLmNwcC5oIENTU0dyYW1tYXIuaHBwID4+IENTU0dyYW1t
YXIuaAotCWVjaG8gJyNlbmRpZicgPj4gQ1NTR3JhbW1hci5oCi0Jcm0gLWYgQ1NTR3JhbW1hci5j
cHAuaCBDU1NHcmFtbWFyLmhwcAorQ1NTR3JhbW1hci5jcHAgOiBjc3MvQ1NTR3JhbW1hci55Lmlu
CisJcGVybCAtSSAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMgJChXZWJDb3JlKS9jc3MvbWFr
ZWdyYW1tYXIucGwgLS1leHRyYURlZmluZXMgIiQoRkVBVFVSRV9ERUZJTkVTKSIgLS1vdXRwdXRE
aXIgLiAtLWJpc29uICIkKEJJU09OKSIgLS1zeW1ib2xzUHJlZml4IGNzc3l5ICQ8CiAKICMgLS0t
LS0tLS0KIAogIyBYUGF0aCBncmFtbWFyCi0jIE5PVEU6IE9sZGVyIHZlcnNpb25zIG9mIGJpc29u
IGRvIG5vdCBpbmplY3QgYW4gaW5jbHVzaW9uIGd1YXJkLCBzbyB3ZSBhZGQgb25lLgotCiBYUGF0
aEdyYW1tYXIuY3BwIDogeG1sL1hQYXRoR3JhbW1hci55ICQoUFJPSkVDVF9GSUxFKQotCSQoQklT
T04pIC1kIC1wIHhwYXRoeXkgJDwgLW8gJEAKLQl0b3VjaCBYUGF0aEdyYW1tYXIuY3BwLmgKLQl0
b3VjaCBYUGF0aEdyYW1tYXIuaHBwCi0JZWNobyAnI2lmbmRlZiBYUGF0aEdyYW1tYXJfaCcgPiBY
UGF0aEdyYW1tYXIuaAotCWVjaG8gJyNkZWZpbmUgWFBhdGhHcmFtbWFyX2gnID4+IFhQYXRoR3Jh
bW1hci5oCi0JY2F0IFhQYXRoR3JhbW1hci5jcHAuaCBYUGF0aEdyYW1tYXIuaHBwID4+IFhQYXRo
R3JhbW1hci5oCi0JZWNobyAnI2VuZGlmJyA+PiBYUGF0aEdyYW1tYXIuaAotCXJtIC1mIFhQYXRo
R3JhbW1hci5jcHAuaCBYUGF0aEdyYW1tYXIuaHBwCisJcGVybCAkKFdlYkNvcmUpL2Nzcy9tYWtl
Z3JhbW1hci5wbCAtLW91dHB1dERpciAuIC0tYmlzb24gIiQoQklTT04pIiAtLXN5bWJvbHNQcmVm
aXggeHBhdGh5eSAkPAogCiAjIC0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLnByaSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQpp
bmRleCA4NGM5ZDA3NzcxZWQxYTE3NDU2NjcyZTI3MWUzMzFiY2E0ZTY4NThlLi44MTBhZGVkOGE1
YmU0MWI5NjI5YWQyODAwZjVhOGZmYjcyYTFlMmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
cHJpCkBAIC0yNCw3ICsyNCw3IEBAIFNWR19OQU1FUyA9ICQkUFdEL3N2Zy9zdmd0YWdzLmluCiAK
IFhMSU5LX05BTUVTID0gJCRQV0Qvc3ZnL3hsaW5rYXR0cnMuaW4KIAotQ1NTQklTT04gPSAkJFBX
RC9jc3MvQ1NTR3JhbW1hci55CitDU1NCSVNPTiA9ICQkUFdEL2Nzcy9DU1NHcmFtbWFyLnkuaW4K
IAogZW5hYmxlPyhYU0xUKSB7CiAgICAgWE1MVklFV0VSX0NTUyA9ICQkUFdEL3htbC9YTUxWaWV3
ZXIuY3NzCkBAIC04MDQsNyArODA0LDcgQEAgR0VORVJBVE9SUyArPSBJbmplY3RlZFNjcmlwdENh
bnZhc01vZHVsZVNvdXJjZQogY3NzYmlzb24ub3V0cHV0ID0gJHtRTUFLRV9GSUxFX0JBU0V9LmNw
cAogY3NzYmlzb24uaW5wdXQgPSBDU1NCSVNPTgogY3NzYmlzb24uc2NyaXB0ID0gJCRQV0QvY3Nz
L21ha2VncmFtbWFyLnBsCi1jc3NiaXNvbi5jb21tYW5kcyA9IHBlcmwgJCRjc3NiaXNvbi5zY3Jp
cHQgJHtRTUFLRV9GSUxFX05BTUV9ICR7UU1BS0VfRlVOQ19GSUxFX09VVF9QQVRIfS8ke1FNQUtF
X0ZJTEVfQkFTRX0KK2Nzc2Jpc29uLmNvbW1hbmRzID0gcGVybCAtSSAkJFBXRC9iaW5kaW5ncy9z
Y3JpcHRzICQkY3NzYmlzb24uc2NyaXB0IC0tb3V0cHV0RGlyICR7UU1BS0VfRlVOQ19GSUxFX09V
VF9QQVRIfSAtLWV4dHJhRGVmaW5lcyBcIiQke0RFRklORVN9ICQkY29uZmlnRGVmaW5lcygpXCIg
LS1wcmVwcm9jZXNzb3IgXCIkJHtRTUFLRV9NT0N9IC1FXCIgLS1zeW1ib2xzUHJlZml4IGNzc3l5
ICR7UU1BS0VfRklMRV9OQU1FfQogY3NzYmlzb24uZGVwZW5kcyA9ICR7UU1BS0VfRklMRV9OQU1F
fQogR0VORVJBVE9SUyArPSBjc3NiaXNvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDVjZTg1
OTVhMGYyMjE1ZjczYjYwZmZkYzEzZDVmZWY3MTExOTg5YjguLjBkYWM0M2MwNTI3ZDNmYjYyYzk2
NTRiNjNmNzE5ODY5ZjcxZTkwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0yMDAsMTggKzIw
MCwxMCBAQCBmZWF0dXJlX2RlZmluZXNfb3ZlcnJpZGVzICs9IEVOQUJMRV9NRURJQV9TVFJFQU09
MAogZW5kaWYgIyBFTkQgRU5BQkxFX01FRElBX1NUUkVBTQogCiAjIFhQYXRoIGdyYW1tYXIKLSMg
Tk9URTogb2xkZXIgdmVyc2lvbnMgb2YgYmlzb24gZG8gbm90IGluamVjdCBhbiBpbmNsdXNpb24g
Z3VhcmQsIHNvIHdlIGRvIGl0CiAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvWFBhdGhHcmFtbWFyLmg6
ICQoR0VOU09VUkNFU19XRUJDT1JFKS9YUGF0aEdyYW1tYXIuY3BwCiAkKEdFTlNPVVJDRVNfV0VC
Q09SRSkvWFBhdGhHcmFtbWFyLmNwcDogJChXZWJDb3JlKS94bWwvWFBhdGhHcmFtbWFyLnkKIAkk
KEFNX1ZfR0VOKQotCSQoQU1fVl9hdClybSAtZiAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvWFBhdGhH
cmFtbWFyLmNwcC5oICQoR0VOU09VUkNFU19XRUJDT1JFKS9YUGF0aEdyYW1tYXIuaHBwCi0JJChB
TV9WX2F0KSQoQklTT04pIC1kIC1wIHhwYXRoeXkgJDwgLW8gJChHRU5TT1VSQ0VTX1dFQkNPUkUp
L1hQYXRoR3JhbW1hci5jcHAKLQkkKEFNX1ZfYXQpdG91Y2ggJChHRU5TT1VSQ0VTX1dFQkNPUkUp
L1hQYXRoR3JhbW1hci5jcHAuaCAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvWFBhdGhHcmFtbWFyLmhw
cAotCSQoQU1fVl9hdCllY2hvICcjaWZuZGVmIFhQYXRoR3JhbW1hcl9oJyA+ICQoR0VOU09VUkNF
U19XRUJDT1JFKS9YUGF0aEdyYW1tYXIuaAotCSQoQU1fVl9hdCllY2hvICcjZGVmaW5lIFhQYXRo
R3JhbW1hcl9oJyA+PiAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvWFBhdGhHcmFtbWFyLmgKLQkkKEFN
X1ZfYXQpY2F0ICQoR0VOU09VUkNFU19XRUJDT1JFKS9YUGF0aEdyYW1tYXIuY3BwLmggJChHRU5T
T1VSQ0VTX1dFQkNPUkUpL1hQYXRoR3JhbW1hci5ocHAgPj4gJChHRU5TT1VSQ0VTX1dFQkNPUkUp
L1hQYXRoR3JhbW1hci5oCi0JJChBTV9WX2F0KWVjaG8gJyNlbmRpZicgPj4gJChHRU5TT1VSQ0VT
X1dFQkNPUkUpL1hQYXRoR3JhbW1hci5oCi0JJChBTV9WX2F0KXJtIC1mICQoR0VOU09VUkNFU19X
RUJDT1JFKS9YUGF0aEdyYW1tYXIuY3BwLmggJChHRU5TT1VSQ0VTX1dFQkNPUkUpL1hQYXRoR3Jh
bW1hci5ocHAKKwkkKEFNX1ZfYXQpcGVybCAkKFdlYkNvcmUpL2Nzcy9tYWtlZ3JhbW1hci5wbCAt
LW91dHB1dERpciAkKEdFTlNPVVJDRVNfV0VCQ09SRSkgLS1iaXNvbiAiJChCSVNPTikiIC0tc3lt
Ym9sc1ByZWZpeCB4cGF0aHl5ICQ8CiAKICMgLS0tLQogIyBYU0xUIFN1cHBvcnQKQEAgLTQxOCwx
OCArNDEwLDEwIEBAIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29sb3JEYXRhLmNwcDogJChXZWJD
b3JlKS9wbGF0Zm9ybS9Db2xvckRhdGEuZ3BlcmYgJChXZWJDCiAKICMgQ1NTIGdyYW1tYXIKIAot
IyBOT1RFOiBvbGRlciB2ZXJzaW9ucyBvZiBiaXNvbiBkbyBub3QgaW5qZWN0IGFuIGluY2x1c2lv
biBndWFyZCwgc28gd2UgZG8gaXQKIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTR3JhbW1hci5o
OiAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvQ1NTR3JhbW1hci5jcHAKLURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvQ1NTR3JhbW1hci5jcHA6ICQoV2ViQ29yZSkvY3NzL0NTU0dyYW1tYXIueQorRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9DU1NHcmFtbWFyLmNwcDogJChXZWJDb3JlKS9jc3MvQ1NTR3JhbW1h
ci55LmluCiAJJChBTV9WX0dFTikKLQkkKEFNX1ZfYXQpcm0gLWYgJChHRU5TT1VSQ0VTX1dFQkNP
UkUpL0NTU0dyYW1tYXIuY3BwLmggJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0NTU0dyYW1tYXIuaHBw
Ci0JJChBTV9WX2F0KSQoQklTT04pIC1kIC1wIGNzc3l5ICQ8IC1vICQoR0VOU09VUkNFU19XRUJD
T1JFKS9DU1NHcmFtbWFyLmNwcAotCSQoQU1fVl9hdCl0b3VjaCAkKEdFTlNPVVJDRVNfV0VCQ09S
RSkvQ1NTR3JhbW1hci5jcHAuaCAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvQ1NTR3JhbW1hci5ocHAK
LQkkKEFNX1ZfYXQpZWNobyAnI2lmbmRlZiBDU1NHcmFtbWFyX2gnID4gJChHRU5TT1VSQ0VTX1dF
QkNPUkUpL0NTU0dyYW1tYXIuaAotCSQoQU1fVl9hdCllY2hvICcjZGVmaW5lIENTU0dyYW1tYXJf
aCcgPj4gJChHRU5TT1VSQ0VTX1dFQkNPUkUpL0NTU0dyYW1tYXIuaAotCSQoQU1fVl9hdCljYXQg
JChHRU5TT1VSQ0VTX1dFQkNPUkUpL0NTU0dyYW1tYXIuY3BwLmggJChHRU5TT1VSQ0VTX1dFQkNP
UkUpL0NTU0dyYW1tYXIuaHBwID4+ICQoR0VOU09VUkNFU19XRUJDT1JFKS9DU1NHcmFtbWFyLmgK
LQkkKEFNX1ZfYXQpZWNobyAnI2VuZGlmJyA+PiAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvQ1NTR3Jh
bW1hci5oCi0JJChBTV9WX2F0KXJtIC1mICQoR0VOU09VUkNFU19XRUJDT1JFKS9DU1NHcmFtbWFy
LmNwcC5oICQoR0VOU09VUkNFU19XRUJDT1JFKS9DU1NHcmFtbWFyLmhwcAorCSQoQU1fVl9hdClw
ZXJsIC1JICQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cyAkKFdlYkNvcmUpL2Nzcy9tYWtlZ3Jh
bW1hci5wbCAtLWV4dHJhRGVmaW5lcyAiJChmZWF0dXJlX2RlZmluZXMpIiAtLW91dHB1dERpciAk
KEdFTlNPVVJDRVNfV0VCQ09SRSkgLS1iaXNvbiAiJChCSVNPTikiIC0tc3ltYm9sc1ByZWZpeCBj
c3N5eSAkPAogCiAjIHVzZXIgYWdlbnQgc3R5bGUgc2hlZXRzCiBVU0VSX0FHRU5UX1NUWUxFX1NI
RUVUUyA9IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUu
Z3lwIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKaW5kZXggMDI0YWVh
ZDYxNDBjZjYwNmM3NDVmZGM1ZjhmZDNlMGY3NzVhMDg0MC4uMjI2OWJlNzJjZjMzOTUwMTU4YWVl
OWQ3ZjlhZmE0ZWQwYmEzOTRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXAvV2ViQ29yZS5neXAKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5n
eXAKQEAgLTU4NSw3ICs1ODUsNyBAQAogICAgICAgfSwKICAgICAgICdzb3VyY2VzJzogWwogICAg
ICAgICAjIGJpc29uIHJ1bGUKLSAgICAgICAgJy4uL2Nzcy9DU1NHcmFtbWFyLnknLAorICAgICAg
ICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0L0NTU0dyYW1tYXIueScsCiAgICAg
ICAgICcuLi94bWwvWFBhdGhHcmFtbWFyLnknLAogCiAgICAgICAgICMgZ3BlcmYgcnVsZQpAQCAt
MTA3Niw2ICsxMDc2LDI5IEBACiAgICAgICAgICAgICAnPEAoZGVyaXZlZF9zb3VyY2VzX2FnZ3Jl
Z2F0ZV9maWxlcyknLAogICAgICAgICAgIF0sCiAgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAg
ICAgICAnYWN0aW9uX25hbWUnOiAncHJlcHJvY2Vzc19ncmFtbWFyJywKKyAgICAgICAgICAnaW5w
dXRzJzogWworICAgICAgICAgICAgJy4uL2Nzcy9DU1NHcmFtbWFyLnkuaW4nLAorICAgICAgICAg
ICAgJy4uL2Nzcy9DU1NHcmFtbWFyLnkuaW5jbHVkZXMnLAorICAgICAgICAgIF0sCisgICAgICAg
ICAgJ291dHB1dHMnOiBbCisgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikv
d2Via2l0L0NTU0dyYW1tYXIueScsCisgICAgICAgICAgXSwKKyAgICAgICAgICAnYWN0aW9uJzog
WworICAgICAgICAgICAgJzwocGVybF9leGUpJywKKyAgICAgICAgICAgICctSScsCisgICAgICAg
ICAgICAnLi4vYmluZGluZ3Mvc2NyaXB0cycsCisgICAgICAgICAgICAnLi4vY3NzL21ha2VncmFt
bWFyLnBsJywKKyAgICAgICAgICAgICctLW91dHB1dERpcicsCisgICAgICAgICAgICAnPChTSEFS
RURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0LycsCisgICAgICAgICAgICAnLS1leHRyYURlZmlu
ZXMnLAorICAgICAgICAgICAgJzwoZmVhdHVyZV9kZWZpbmVzKScsCisgICAgICAgICAgICAnLS1w
cmVwcm9jZXNzT25seScsCisgICAgICAgICAgICAnPEAocHJlcHJvY2Vzc29yKScsCisgICAgICAg
ICAgICAnPEAoX2lucHV0cyknLAorICAgICAgICAgIF0sCisgICAgICAgIH0sCiAgICAgICBdLAog
ICAgICAgJ3J1bGVzJzogWwogICAgICAgICAjIFJ1bGVzIHRvIGJ1aWxkIGRlcml2ZWQgc291cmNl
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXgg
YjFjODMwYzdkYjRjNGQ1MmNhNzI1ZGFiODkxZjA3NDgyMDc1NWQxMC4uMTc2NWEzM2FkZDYwODE0
NjFkN2ViMzc2NWNkODc0MzQ3NDBkYWJlZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTM1ODc1LDcgKzM1ODc1LDExIEBACiAJCQkJPgogCQkJ
PC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NHcmFtbWFyLnki
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTR3JhbW1hci55LmluIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTR3JhbW1hci55Lmlu
Y2x1ZGVzIgogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2RiNjMxYzg5MzgzZGY5
NTc5ZWU0Nzk1YTYxMWU3MzBlMzcxZDhhZS4uZmU3ZDk1YzJlOThlMDhjYjJlNTU0MGNlOGE1NGNj
N2ZlNDhkY2UwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTMwMzgsNyArMTMwMzgsNiBAQAogCQlCQ0U5M0Y0NjE1MTdDNkQ1
MDA4Q0NGNzQgLyogUmVuZGVyUmVnaW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlbmRlclJlZ2lvblNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDRUE0NzdDMDk3Q0FBQzgwMDk0QzlFNCAvKiBDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
RUE0NzdEMDk3Q0FBQzgwMDk0QzlFNCAvKiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQ0VBNDc3RTA5N0NBQUM4MDA5
NEM5RTQgLyogQ1NTR3JhbW1hci55ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUueWFjYzsgcGF0aCA9
IENTU0dyYW1tYXIueTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNFQTQ3ODkwOTdD
QUFDODAwOTRDOUU0IC8qIENTU1Byb3BlcnR5TmFtZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IENTU1Byb3BlcnR5TmFtZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
RUE0NzhDMDk3Q0FBQzgwMDk0QzlFNCAvKiBDU1NWYWx1ZUtleXdvcmRzLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBDU1NWYWx1ZUtleXdvcmRzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQ0VBNDgxMzA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyQmxvY2tMaW5lTGF5b3V0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJCbG9ja0xp
bmVMYXlvdXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM3NzAsNiArMTM3
NjksOCBAQAogCQlGQkQ2QUY4NTE1RUYyMUQ0MDA4QjcxMTAgLyogQmFzaWNTaGFwZUZ1bmN0aW9u
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYXNpY1NoYXBlRnVuY3Rpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZCRDZBRjg2MTVFRjIxRDQwMDhCNzEx
MCAvKiBDU1NCYXNpY1NoYXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDU1NCYXNpY1NoYXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZC
RDZBRjg3MTVFRjIxRDQwMDhCNzExMCAvKiBDU1NCYXNpY1NoYXBlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDU1NCYXNpY1NoYXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGQ0VCQ0Q3MTE2MjNBNzkxMDAyOTk2NUUgLyogQ1NTR3JhbW1hci55LmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS55YWNjOyBwYXRoID0gQ1NTR3JhbW1hci55LmluOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGQ0VCQ0Q3MjE2MjNBNzkxMDAyOTk2NUUgLyogQ1NTR3Jh
bW1hci55LmluY2x1ZGVzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS55YWNjOyBwYXRoID0gQ1NTR3Jh
bW1hci55LmluY2x1ZGVzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRDAwRDdBMjE0
QTNGNjE5MDA3MzQwMTEgLyogU2luY1Jlc2FtcGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTaW5jUmVzYW1wbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkQwMEQ3QTMxNEEzRjYxOTAwNzM0MDExIC8qIFNpbmNSZXNhbXBsZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2luY1Jlc2FtcGxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRDA2REZBMzEzNEE0REVGMDA2RjVEN0QgLyogRGVmYXVsdEF1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMTE0Niw3ICsyMTE0Nyw4IEBACiAJCQkJQkMwMkE2M0IwRTA5QTlDRjAwNEI2
RDJCIC8qIENTU0Z1bmN0aW9uVmFsdWUuaCAqLywKIAkJCQlCQzIzRTRFMDBEQUFDRTBGMDA5RkRD
OTEgLyogQ1NTR3JhZGllbnRWYWx1ZS5jcHAgKi8sCiAJCQkJQkM1M0M2OTEwREE1OTExNDAwMjFF
QjVEIC8qIENTU0dyYWRpZW50VmFsdWUuaCAqLywKLQkJCQlCQ0VBNDc3RTA5N0NBQUM4MDA5NEM5
RTQgLyogQ1NTR3JhbW1hci55ICovLAorCQkJCUZDRUJDRDcxMTYyM0E3OTEwMDI5OTY1RSAvKiBD
U1NHcmFtbWFyLnkuaW4gKi8sCisJCQkJRkNFQkNENzIxNjIzQTc5MTAwMjk5NjVFIC8qIENTU0dy
YW1tYXIueS5pbmNsdWRlcyAqLywKIAkJCQlCQzc3MkIzNjBDNEVBOTFFMDA4MzI4NUYgLyogQ1NT
SGVscGVyLmggKi8sCiAJCQkJQkMyM0U3NkIwREFFODhBOTAwOUZEQzkxIC8qIENTU0ltYWdlR2Vu
ZXJhdG9yVmFsdWUuY3BwICovLAogCQkJCUJDMjNFRTkxMERBRUQyQkMwMDlGREM5MSAvKiBDU1NJ
bWFnZUdlbmVyYXRvclZhbHVlLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTR3JhbW1hci55IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNGUzNTMzZTNjOWYzYjc5MGQ2NzlmOTVmZjBhMWM3OTUxYzE4
Yzk1OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CisrKyAvZGV2L251bGwKQEAgLTEsMTc3MCArMCww
IEBACi0lewotCi0vKgotICogIENvcHlyaWdodCAoQykgMjAwMi0yMDAzIExhcnMgS25vbGwgKGtu
b2xsQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAy
MDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqICBDb3B5
cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQotICogIENv
cHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgotICoKLSAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAg
MDIxMTAtMTMwMSAgVVNBCi0gKgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1
ZGUgIkNTU1BhcnNlci5oIgotI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIKLSNpbmNsdWRlICJD
U1NQcmltaXRpdmVWYWx1ZS5oIgotI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKLSNpbmNs
dWRlICJDU1NTZWxlY3Rvci5oIgotI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgotI2luY2x1
ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiTWVkaWFM
aXN0LmgiCi0jaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgotI2luY2x1ZGUgIlN0eWxlUnVsZS5o
IgotI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgotI2luY2x1ZGUgIldlYktpdENTU0tl
eWZyYW1lUnVsZS5oIgotI2luY2x1ZGUgIldlYktpdENTU0tleWZyYW1lc1J1bGUuaCIKLSNpbmNs
dWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0
cmluZy5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7Ci0KLSNkZWZpbmUgWVlNQUxMT0MgZmFzdE1hbGxvYwotI2RlZmluZSBZWUZSRUUgZmFz
dEZyZWUKLQotI2RlZmluZSBZWUVOQUJMRV9OTFMgMAotI2RlZmluZSBZWUxUWVBFX0lTX1RSSVZJ
QUwgMQotI2RlZmluZSBZWU1BWERFUFRIIDEwMDAwCi0jZGVmaW5lIFlZREVCVUcgMAotCi0lfQot
Ci0lcHVyZV9wYXJzZXIKLQotJXBhcnNlLXBhcmFtIHsgQ1NTUGFyc2VyKiBwYXJzZXIgfQotJWxl
eC1wYXJhbSB7IENTU1BhcnNlciogcGFyc2VyIH0KLQotJXVuaW9uIHsKLSAgICBib29sIGJvb2xl
YW47Ci0gICAgY2hhciBjaGFyYWN0ZXI7Ci0gICAgaW50IGludGVnZXI7Ci0gICAgZG91YmxlIG51
bWJlcjsKLSAgICBDU1NQYXJzZXJTdHJpbmcgc3RyaW5nOwotCi0gICAgU3R5bGVSdWxlQmFzZSog
cnVsZTsKLSAgICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+ID4qIHJ1bGVMaXN0OwotICAg
IENTU1BhcnNlclNlbGVjdG9yKiBzZWxlY3RvcjsKLSAgICBDU1NTZWxlY3RvclZlY3Rvciogc2Vs
ZWN0b3JMaXN0OwotICAgIENTU1NlbGVjdG9yOjpNYXJnaW5Cb3hUeXBlIG1hcmdpbkJveDsKLSAg
ICBDU1NTZWxlY3Rvcjo6UmVsYXRpb24gcmVsYXRpb247Ci0gICAgTWVkaWFRdWVyeVNldCogbWVk
aWFMaXN0OwotICAgIE1lZGlhUXVlcnkqIG1lZGlhUXVlcnk7Ci0gICAgTWVkaWFRdWVyeTo6UmVz
dHJpY3RvciBtZWRpYVF1ZXJ5UmVzdHJpY3RvcjsKLSAgICBNZWRpYVF1ZXJ5RXhwKiBtZWRpYVF1
ZXJ5RXhwOwotICAgIENTU1BhcnNlclZhbHVlIHZhbHVlOwotICAgIENTU1BhcnNlclZhbHVlTGlz
dCogdmFsdWVMaXN0OwotICAgIFZlY3RvcjxPd25QdHI8TWVkaWFRdWVyeUV4cD4gPiogbWVkaWFR
dWVyeUV4cExpc3Q7Ci0gICAgU3R5bGVLZXlmcmFtZSoga2V5ZnJhbWU7Ci0gICAgVmVjdG9yPFJl
ZlB0cjxTdHlsZUtleWZyYW1lPiA+KiBrZXlmcmFtZVJ1bGVMaXN0OwotICAgIGZsb2F0IHZhbDsK
LSAgICBDU1NQcm9wZXJ0eUlEIGlkOwotfQotCi0lewotCi0jaWYgWVlERUJVRyA+IDAKLSNkZWZp
bmUgWVlQUklOVChGaWxlLFR5cGUsVmFsdWUpIHByaW50X3Rva2VuX3ZhbHVlKEZpbGUsVHlwZSxW
YWx1ZSkKLXN0YXRpYyB2b2lkIHByaW50X3Rva2VuX3ZhbHVlKEZJTEUgKiB5eW91dHB1dCwgaW50
IHl5dHlwZSwgWVlTVFlQRSBjb25zdCAmeXl2YWx1ZSk7Ci0jZW5kaWYKLQotc3RhdGljIGlubGlu
ZSBpbnQgY3NzeXllcnJvcih2b2lkKiwgY29uc3QgY2hhciopCi17Ci0gICAgcmV0dXJuIDE7Ci19
Ci0KLSV9Ci0KLSVleHBlY3QgNjUKLQotJW5vbmFzc29jIExPV0VTVF9QUkVDCi0KLSVsZWZ0IFVO
SU1QT1JUQU5UX1RPSwotCi0ldG9rZW4gV0hJVEVTUEFDRSBTR01MX0NECi0ldG9rZW4gVE9LRU5f
RU9GIDAKLQotJXRva2VuIElOQ0xVREVTCi0ldG9rZW4gREFTSE1BVENICi0ldG9rZW4gQkVHSU5T
V0lUSAotJXRva2VuIEVORFNXSVRICi0ldG9rZW4gQ09OVEFJTlMKLQotJXRva2VuIDxzdHJpbmc+
IFNUUklORwotJXJpZ2h0IDxzdHJpbmc+IElERU5UCi0ldG9rZW4gPHN0cmluZz4gTlRICi0KLSVu
b25hc3NvYyA8c3RyaW5nPiBIRVgKLSVub25hc3NvYyA8c3RyaW5nPiBJRFNFTAotJW5vbmFzc29j
ICc6JwotJW5vbmFzc29jICcuJwotJW5vbmFzc29jICdbJwotJW5vbmFzc29jIDxzdHJpbmc+ICcq
JwotJW5vbmFzc29jIGVycm9yCi0lbGVmdCAnfCcKLQotJXRva2VuIElNUE9SVF9TWU0KLSV0b2tl
biBQQUdFX1NZTQotJXRva2VuIE1FRElBX1NZTQotJXRva2VuIEZPTlRfRkFDRV9TWU0KLSV0b2tl
biBDSEFSU0VUX1NZTQotJXRva2VuIE5BTUVTUEFDRV9TWU0KLSV0b2tlbiBWQVJGVU5DVElPTgot
JXRva2VuIFdFQktJVF9SVUxFX1NZTQotJXRva2VuIFdFQktJVF9ERUNMU19TWU0KLSV0b2tlbiBX
RUJLSVRfS0VZRlJBTUVfUlVMRV9TWU0KLSV0b2tlbiBXRUJLSVRfS0VZRlJBTUVTX1NZTQotJXRv
a2VuIFdFQktJVF9WQUxVRV9TWU0KLSV0b2tlbiBXRUJLSVRfTUVESUFRVUVSWV9TWU0KLSV0b2tl
biBXRUJLSVRfU0VMRUNUT1JfU1lNCi0ldG9rZW4gV0VCS0lUX1JFR0lPTl9SVUxFX1NZTQotJXRv
a2VuIDxtYXJnaW5Cb3g+IFRPUExFRlRDT1JORVJfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gVE9Q
TEVGVF9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBUT1BDRU5URVJfU1lNCi0ldG9rZW4gPG1hcmdp
bkJveD4gVE9QUklHSFRfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gVE9QUklHSFRDT1JORVJfU1lN
Ci0ldG9rZW4gPG1hcmdpbkJveD4gQk9UVE9NTEVGVENPUk5FUl9TWU0KLSV0b2tlbiA8bWFyZ2lu
Qm94PiBCT1RUT01MRUZUX1NZTQotJXRva2VuIDxtYXJnaW5Cb3g+IEJPVFRPTUNFTlRFUl9TWU0K
LSV0b2tlbiA8bWFyZ2luQm94PiBCT1RUT01SSUdIVF9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBC
T1RUT01SSUdIVENPUk5FUl9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBMRUZUVE9QX1NZTQotJXRv
a2VuIDxtYXJnaW5Cb3g+IExFRlRNSURETEVfU1lNCi0ldG9rZW4gPG1hcmdpbkJveD4gTEVGVEJP
VFRPTV9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBSSUdIVFRPUF9TWU0KLSV0b2tlbiA8bWFyZ2lu
Qm94PiBSSUdIVE1JRERMRV9TWU0KLSV0b2tlbiA8bWFyZ2luQm94PiBSSUdIVEJPVFRPTV9TWU0K
LQotJXRva2VuIEFUS0VZV09SRAotCi0ldG9rZW4gSU1QT1JUQU5UX1NZTQotJXRva2VuIE1FRElB
X09OTFkKLSV0b2tlbiBNRURJQV9OT1QKLSV0b2tlbiBNRURJQV9BTkQKLQotJXRva2VuIDxudW1i
ZXI+IFJFTVMKLSV0b2tlbiA8bnVtYmVyPiBRRU1TCi0ldG9rZW4gPG51bWJlcj4gRU1TCi0ldG9r
ZW4gPG51bWJlcj4gRVhTCi0ldG9rZW4gPG51bWJlcj4gUFhTCi0ldG9rZW4gPG51bWJlcj4gQ01T
Ci0ldG9rZW4gPG51bWJlcj4gTU1TCi0ldG9rZW4gPG51bWJlcj4gSU5TCi0ldG9rZW4gPG51bWJl
cj4gUFRTCi0ldG9rZW4gPG51bWJlcj4gUENTCi0ldG9rZW4gPG51bWJlcj4gREVHUwotJXRva2Vu
IDxudW1iZXI+IFJBRFMKLSV0b2tlbiA8bnVtYmVyPiBHUkFEUwotJXRva2VuIDxudW1iZXI+IFRV
Uk5TCi0ldG9rZW4gPG51bWJlcj4gTVNFQ1MKLSV0b2tlbiA8bnVtYmVyPiBTRUNTCi0ldG9rZW4g
PG51bWJlcj4gSEVSVFoKLSV0b2tlbiA8bnVtYmVyPiBLSEVSVFoKLSV0b2tlbiA8c3RyaW5nPiBE
SU1FTgotJXRva2VuIDxzdHJpbmc+IElOVkFMSURESU1FTgotJXRva2VuIDxudW1iZXI+IFBFUkNF
TlRBR0UKLSV0b2tlbiA8bnVtYmVyPiBGTE9BVFRPS0VOCi0ldG9rZW4gPG51bWJlcj4gSU5URUdF
UgotJXRva2VuIDxudW1iZXI+IFZXCi0ldG9rZW4gPG51bWJlcj4gVkgKLSV0b2tlbiA8bnVtYmVy
PiBWTUlOCi0ldG9rZW4gPG51bWJlcj4gRFBQWAotJXRva2VuIDxudW1iZXI+IERQSQotJXRva2Vu
IDxudW1iZXI+IERQQ00KLQotJXRva2VuIDxzdHJpbmc+IFVSSQotJXRva2VuIDxzdHJpbmc+IEZV
TkNUSU9OCi0ldG9rZW4gPHN0cmluZz4gQU5ZRlVOQ1RJT04KLSV0b2tlbiA8c3RyaW5nPiBOT1RG
VU5DVElPTgotJXRva2VuIDxzdHJpbmc+IENBTENGVU5DVElPTgotJXRva2VuIDxzdHJpbmc+IE1J
TkZVTkNUSU9OCi0ldG9rZW4gPHN0cmluZz4gTUFYRlVOQ1RJT04KLSV0b2tlbiA8c3RyaW5nPiBW
QVJfREVGSU5JVElPTgotCi0ldG9rZW4gPHN0cmluZz4gVU5JQ09ERVJBTkdFCi0KLSV0eXBlIDxy
ZWxhdGlvbj4gY29tYmluYXRvcgotCi0ldHlwZSA8cnVsZT4gY2hhcnNldAotJXR5cGUgPHJ1bGU+
IGlnbm9yZWRfY2hhcnNldAotJXR5cGUgPHJ1bGU+IHJ1bGVzZXQKLSV0eXBlIDxydWxlPiBtZWRp
YQotJXR5cGUgPHJ1bGU+IGltcG9ydAotJXR5cGUgPHJ1bGU+IG5hbWVzcGFjZQotJXR5cGUgPHJ1
bGU+IHBhZ2UKLSV0eXBlIDxydWxlPiBtYXJnaW5fYm94Ci0ldHlwZSA8cnVsZT4gZm9udF9mYWNl
Ci0ldHlwZSA8cnVsZT4ga2V5ZnJhbWVzCi0ldHlwZSA8cnVsZT4gaW52YWxpZF9ydWxlCi0ldHlw
ZSA8cnVsZT4gc2F2ZV9ibG9jawotJXR5cGUgPHJ1bGU+IGludmFsaWRfYXQKLSV0eXBlIDxydWxl
PiBydWxlCi0ldHlwZSA8cnVsZT4gdmFsaWRfcnVsZQotJXR5cGUgPHJ1bGVMaXN0PiBibG9ja19y
dWxlX2xpc3QgCi0ldHlwZSA8cnVsZT4gYmxvY2tfcnVsZQotJXR5cGUgPHJ1bGU+IGJsb2NrX3Zh
bGlkX3J1bGUKLSV0eXBlIDxydWxlPiByZWdpb24KLQotJXR5cGUgPHN0cmluZz4gbWF5YmVfbnNf
cHJlZml4Ci0KLSV0eXBlIDxzdHJpbmc+IG5hbWVzcGFjZV9zZWxlY3RvcgotCi0ldHlwZSA8c3Ry
aW5nPiBzdHJpbmdfb3JfdXJpCi0ldHlwZSA8c3RyaW5nPiBpZGVudF9vcl9zdHJpbmcKLSV0eXBl
IDxzdHJpbmc+IG1lZGl1bQotJXR5cGUgPG1hcmdpbkJveD4gbWFyZ2luX3N5bQotCi0ldHlwZSA8
c3RyaW5nPiBtZWRpYV9mZWF0dXJlCi0ldHlwZSA8bWVkaWFMaXN0PiBtZWRpYV9saXN0Ci0ldHlw
ZSA8bWVkaWFMaXN0PiBtYXliZV9tZWRpYV9saXN0Ci0ldHlwZSA8bWVkaWFRdWVyeT4gbWVkaWFf
cXVlcnkKLSV0eXBlIDxtZWRpYVF1ZXJ5UmVzdHJpY3Rvcj4gbWF5YmVfbWVkaWFfcmVzdHJpY3Rv
cgotJXR5cGUgPHZhbHVlTGlzdD4gbWF5YmVfbWVkaWFfdmFsdWUKLSV0eXBlIDxtZWRpYVF1ZXJ5
RXhwPiBtZWRpYV9xdWVyeV9leHAKLSV0eXBlIDxtZWRpYVF1ZXJ5RXhwTGlzdD4gbWVkaWFfcXVl
cnlfZXhwX2xpc3QKLSV0eXBlIDxtZWRpYVF1ZXJ5RXhwTGlzdD4gbWF5YmVfYW5kX21lZGlhX3F1
ZXJ5X2V4cF9saXN0Ci0KLSV0eXBlIDxzdHJpbmc+IGtleWZyYW1lX25hbWUKLSV0eXBlIDxrZXlm
cmFtZT4ga2V5ZnJhbWVfcnVsZQotJXR5cGUgPGtleWZyYW1lUnVsZUxpc3Q+IGtleWZyYW1lc19y
dWxlCi0ldHlwZSA8dmFsdWVMaXN0PiBrZXlfbGlzdAotJXR5cGUgPHZhbHVlPiBrZXkKLQotJXR5
cGUgPGlkPiBwcm9wZXJ0eQotCi0ldHlwZSA8c2VsZWN0b3I+IHNwZWNpZmllcgotJXR5cGUgPHNl
bGVjdG9yPiBzcGVjaWZpZXJfbGlzdAotJXR5cGUgPHNlbGVjdG9yPiBzaW1wbGVfc2VsZWN0b3IK
LSV0eXBlIDxzZWxlY3Rvcj4gc2VsZWN0b3IKLSV0eXBlIDxzZWxlY3Rvckxpc3Q+IHNlbGVjdG9y
X2xpc3QKLSV0eXBlIDxzZWxlY3Rvckxpc3Q+IHNpbXBsZV9zZWxlY3Rvcl9saXN0Ci0ldHlwZSA8
c2VsZWN0b3JMaXN0PiByZWdpb25fc2VsZWN0b3IKLSV0eXBlIDxzZWxlY3Rvcj4gc2VsZWN0b3Jf
d2l0aF90cmFpbGluZ193aGl0ZXNwYWNlCi0ldHlwZSA8c2VsZWN0b3I+IGNsYXNzCi0ldHlwZSA8
c2VsZWN0b3I+IGF0dHJpYgotJXR5cGUgPHNlbGVjdG9yPiBwc2V1ZG8KLSV0eXBlIDxzZWxlY3Rv
cj4gcHNldWRvX3BhZ2UKLSV0eXBlIDxzZWxlY3Rvcj4gcGFnZV9zZWxlY3RvcgotCi0ldHlwZSA8
Ym9vbGVhbj4gZGVjbGFyYXRpb25fbGlzdAotJXR5cGUgPGJvb2xlYW4+IGRlY2xfbGlzdAotJXR5
cGUgPGJvb2xlYW4+IGRlY2xhcmF0aW9uCi0ldHlwZSA8Ym9vbGVhbj4gZGVjbGFyYXRpb25zX2Fu
ZF9tYXJnaW5zCi0KLSV0eXBlIDxib29sZWFuPiBwcmlvCi0KLSV0eXBlIDxpbnRlZ2VyPiBtYXRj
aAotJXR5cGUgPGludGVnZXI+IHVuYXJ5X29wZXJhdG9yCi0ldHlwZSA8aW50ZWdlcj4gbWF5YmVf
dW5hcnlfb3BlcmF0b3IKLSV0eXBlIDxjaGFyYWN0ZXI+IG9wZXJhdG9yCi0KLSV0eXBlIDx2YWx1
ZUxpc3Q+IGV4cHIKLSV0eXBlIDx2YWx1ZT4gdGVybQotJXR5cGUgPHZhbHVlPiB1bmFyeV90ZXJt
Ci0ldHlwZSA8dmFsdWU+IGZ1bmN0aW9uCi0ldHlwZSA8dmFsdWU+IGNhbGNfZnVuY190ZXJtCi0l
dHlwZSA8Y2hhcmFjdGVyPiBjYWxjX2Z1bmNfb3BlcmF0b3IKLSV0eXBlIDx2YWx1ZUxpc3Q+IGNh
bGNfZnVuY19leHByCi0ldHlwZSA8dmFsdWVMaXN0PiBjYWxjX2Z1bmNfZXhwcl9saXN0Ci0ldHlw
ZSA8dmFsdWVMaXN0PiBjYWxjX2Z1bmNfcGFyZW5fZXhwcgotJXR5cGUgPHZhbHVlPiBjYWxjX2Z1
bmN0aW9uCi0ldHlwZSA8c3RyaW5nPiBtaW5fb3JfbWF4Ci0ldHlwZSA8dmFsdWU+IG1pbl9vcl9t
YXhfZnVuY3Rpb24KLQotJXR5cGUgPHN0cmluZz4gZWxlbWVudF9uYW1lCi0ldHlwZSA8c3RyaW5n
PiBhdHRyX25hbWUKLQotJSUKLQotc3R5bGVzaGVldDoKLSAgICBtYXliZV9zcGFjZSBtYXliZV9j
aGFyc2V0IG1heWJlX3NnbWwgcnVsZV9saXN0Ci0gIHwgd2Via2l0X3J1bGUgbWF5YmVfc3BhY2UK
LSAgfCB3ZWJraXRfZGVjbHMgbWF5YmVfc3BhY2UKLSAgfCB3ZWJraXRfdmFsdWUgbWF5YmVfc3Bh
Y2UKLSAgfCB3ZWJraXRfbWVkaWFxdWVyeSBtYXliZV9zcGFjZQotICB8IHdlYmtpdF9zZWxlY3Rv
ciBtYXliZV9zcGFjZQotICB8IHdlYmtpdF9rZXlmcmFtZV9ydWxlIG1heWJlX3NwYWNlCi0gIDsK
LQotd2Via2l0X3J1bGU6Ci0gICAgV0VCS0lUX1JVTEVfU1lNICd7JyBtYXliZV9zcGFjZSB2YWxp
ZF9ydWxlIG1heWJlX3NwYWNlICd9JyB7Ci0gICAgICAgIHBhcnNlci0+bV9ydWxlID0gJDQ7Ci0g
ICAgfQotOwotCi13ZWJraXRfa2V5ZnJhbWVfcnVsZToKLSAgICBXRUJLSVRfS0VZRlJBTUVfUlVM
RV9TWU0gJ3snIG1heWJlX3NwYWNlIGtleWZyYW1lX3J1bGUgbWF5YmVfc3BhY2UgJ30nIHsKLSAg
ICAgICAgcGFyc2VyLT5tX2tleWZyYW1lID0gJDQ7Ci0gICAgfQotOwotCi13ZWJraXRfZGVjbHM6
Ci0gICAgV0VCS0lUX0RFQ0xTX1NZTSAneycgbWF5YmVfc3BhY2VfYmVmb3JlX2RlY2xhcmF0aW9u
IGRlY2xhcmF0aW9uX2xpc3QgJ30nIHsKLSAgICAgICAgLyogY2FuIGJlIGVtcHR5ICovCi0gICAg
fQotOwotCi13ZWJraXRfdmFsdWU6Ci0gICAgV0VCS0lUX1ZBTFVFX1NZTSAneycgbWF5YmVfc3Bh
Y2UgZXhwciAnfScgewotICAgICAgICBpZiAoJDQpIHsKLSAgICAgICAgICAgIHBhcnNlci0+bV92
YWx1ZUxpc3QgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCk7Ci0gICAgICAgICAg
ICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHBhcnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVzLT5z
aXplKCk7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlci0+cGFyc2VWYWx1ZShwYXJzZXItPm1faWQs
IHBhcnNlci0+bV9pbXBvcnRhbnQpKQotICAgICAgICAgICAgICAgIHBhcnNlci0+cm9sbGJhY2tM
YXN0UHJvcGVydGllcyhwYXJzZXItPm1fcGFyc2VkUHJvcGVydGllcy0+c2l6ZSgpIC0gb2xkUGFy
c2VkUHJvcGVydGllcyk7Ci0gICAgICAgICAgICBwYXJzZXItPm1fdmFsdWVMaXN0ID0gbnVsbHB0
cjsKLSAgICAgICAgfQotICAgIH0KLTsKLQotd2Via2l0X21lZGlhcXVlcnk6Ci0gICAgIFdFQktJ
VF9NRURJQVFVRVJZX1NZTSBXSElURVNQQUNFIG1heWJlX3NwYWNlIG1lZGlhX3F1ZXJ5ICd9JyB7
Ci0gICAgICAgICBwYXJzZXItPm1fbWVkaWFRdWVyeSA9IHBhcnNlci0+c2lua0Zsb2F0aW5nTWVk
aWFRdWVyeSgkNCk7Ci0gICAgIH0KLTsKLQotd2Via2l0X3NlbGVjdG9yOgotICAgIFdFQktJVF9T
RUxFQ1RPUl9TWU0gJ3snIG1heWJlX3NwYWNlIHNlbGVjdG9yX2xpc3QgJ30nIHsKLSAgICAgICAg
aWYgKCQ0KSB7Ci0gICAgICAgICAgICBpZiAocGFyc2VyLT5tX3NlbGVjdG9yTGlzdEZvclBhcnNl
U2VsZWN0b3IpCi0gICAgICAgICAgICAgICAgcGFyc2VyLT5tX3NlbGVjdG9yTGlzdEZvclBhcnNl
U2VsZWN0b3ItPmFkb3B0U2VsZWN0b3JWZWN0b3IoKiQ0KTsKLSAgICAgICAgfQotICAgIH0KLTsK
LQotbWF5YmVfc3BhY2U6Ci0gICAgLyogZW1wdHkgKi8gJXByZWMgVU5JTVBPUlRBTlRfVE9LCi0g
IHwgbWF5YmVfc3BhY2UgV0hJVEVTUEFDRQotICA7Ci0KLW1heWJlX3NnbWw6Ci0gICAgLyogZW1w
dHkgKi8KLSAgfCBtYXliZV9zZ21sIFNHTUxfQ0QKLSAgfCBtYXliZV9zZ21sIFdISVRFU1BBQ0UK
LSAgOwotCi1tYXliZV9jaGFyc2V0OgotICAgLyogZW1wdHkgKi8KLSAgfCBjaGFyc2V0IHsKLSAg
fQotICA7Ci0KLWNsb3NpbmdfYnJhY2U6Ci0gICAgJ30nCi0gIHwgJXByZWMgTE9XRVNUX1BSRUMg
VE9LRU5fRU9GCi0gIDsKLQotY2hhcnNldDoKLSAgQ0hBUlNFVF9TWU0gbWF5YmVfc3BhY2UgU1RS
SU5HIG1heWJlX3NwYWNlICc7JyB7Ci0gICAgIGlmIChwYXJzZXItPm1fc3R5bGVTaGVldCkKLSAg
ICAgICAgIHBhcnNlci0+bV9zdHlsZVNoZWV0LT5wYXJzZXJTZXRFbmNvZGluZ0Zyb21DaGFyc2V0
UnVsZSgkMyk7Ci0gICAgIGlmIChwYXJzZXItPmlzRXh0cmFjdGluZ1NvdXJjZURhdGEoKSAmJiBw
YXJzZXItPm1fY3VycmVudFJ1bGVEYXRhU3RhY2stPmlzRW1wdHkoKSAmJiBwYXJzZXItPm1fcnVs
ZVNvdXJjZURhdGFSZXN1bHQpCi0gICAgICAgICBwYXJzZXItPmFkZE5ld1J1bGVUb1NvdXJjZVRy
ZWUoQ1NTUnVsZVNvdXJjZURhdGE6OmNyZWF0ZVVua25vd24oKSk7Ci0gICAgICQkID0gMDsKLSAg
fQotICB8IENIQVJTRVRfU1lNIGVycm9yIGludmFsaWRfYmxvY2sgewotICB9Ci0gIHwgQ0hBUlNF
VF9TWU0gZXJyb3IgJzsnIHsKLSAgfQotOwotCi1pZ25vcmVkX2NoYXJzZXQ6Ci0gICAgQ0hBUlNF
VF9TWU0gbWF5YmVfc3BhY2UgU1RSSU5HIG1heWJlX3NwYWNlICc7JyB7Ci0gICAgICAgIC8vIEln
bm9yZSBhbnkgQGNoYXJzZXQgcnVsZSBub3QgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3R5bGUg
c2hlZXQuCi0gICAgICAgICQkID0gMDsKLSAgICB9Ci0gICAgfCBDSEFSU0VUX1NZTSBtYXliZV9z
cGFjZSAnOycgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotOwotCi1ydWxlX2xpc3Q6Ci0gICAv
KiBlbXB0eSAqLwotIHwgcnVsZV9saXN0IHJ1bGUgbWF5YmVfc2dtbCB7Ci0gICAgIGlmICgkMiAm
JiBwYXJzZXItPm1fc3R5bGVTaGVldCkKLSAgICAgICAgIHBhcnNlci0+bV9zdHlsZVNoZWV0LT5w
YXJzZXJBcHBlbmRSdWxlKCQyKTsKLSB9Ci0gOwotCi12YWxpZF9ydWxlOgotICAgIHJ1bGVzZXQK
LSAgfCBtZWRpYQotICB8IHBhZ2UKLSAgfCBmb250X2ZhY2UKLSAgfCBrZXlmcmFtZXMKLSAgfCBu
YW1lc3BhY2UKLSAgfCBpbXBvcnQKLSAgfCByZWdpb24KLSAgOwotCi1ydWxlOgotICAgIHZhbGlk
X3J1bGUgewotICAgICAgICBwYXJzZXItPm1faGFkU3ludGFjdGljYWxseVZhbGlkQ1NTUnVsZSA9
IHRydWU7Ci0gICAgfQotICB8IGlnbm9yZWRfY2hhcnNldAotICB8IGludmFsaWRfcnVsZQotICB8
IGludmFsaWRfYXQKLSAgOwotCi1ibG9ja19ydWxlX2xpc3Q6IAotICAgIC8qIGVtcHR5ICovIHsg
JCQgPSAwOyB9Ci0gIHwgYmxvY2tfcnVsZV9saXN0IGJsb2NrX3J1bGUgbWF5YmVfc2dtbCB7Ci0g
ICAgICAkJCA9ICQxOwotICAgICAgaWYgKCQyKSB7Ci0gICAgICAgICAgaWYgKCEkJCkKLSAgICAg
ICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZVJ1bGVMaXN0KCk7Ci0gICAgICAgICAgJCQtPmFw
cGVuZCgkMik7Ci0gICAgICB9Ci0gIH0KLSAgOwotCi1ibG9ja192YWxpZF9ydWxlOgotICAgIHJ1
bGVzZXQKLSAgfCBwYWdlCi0gIHwgZm9udF9mYWNlCi0gIHwga2V5ZnJhbWVzCi0gIDsKLQotYmxv
Y2tfcnVsZToKLSAgICBibG9ja192YWxpZF9ydWxlCi0gIHwgaW52YWxpZF9ydWxlCi0gIHwgaW52
YWxpZF9hdAotICB8IG5hbWVzcGFjZQotICB8IGltcG9ydAotICB8IG1lZGlhCi0gIDsKLQotYXRf
aW1wb3J0X2hlYWRlcl9lbmRfbWF5YmVfc3BhY2U6Ci0gICAgbWF5YmVfc3BhY2UgewotICAgICAg
ICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyRW5kKCk7Ci0gICAgICAgIHBhcnNlci0+bWFya1J1bGVC
b2R5U3RhcnQoKTsKLSAgICB9Ci0gICAgOwotCi1iZWZvcmVfaW1wb3J0X3J1bGU6Ci0gICAgLyog
ZW1wdHkgKi8gewotICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNv
dXJjZURhdGE6OklNUE9SVF9SVUxFKTsKLSAgICB9Ci0gICAgOwotCi1pbXBvcnQ6Ci0gICAgYmVm
b3JlX2ltcG9ydF9ydWxlIElNUE9SVF9TWU0gYXRfaW1wb3J0X2hlYWRlcl9lbmRfbWF5YmVfc3Bh
Y2Ugc3RyaW5nX29yX3VyaSBtYXliZV9zcGFjZSBtYXliZV9tZWRpYV9saXN0ICc7JyB7Ci0gICAg
ICAgICQkID0gcGFyc2VyLT5jcmVhdGVJbXBvcnRSdWxlKCQ0LCAkNik7Ci0gICAgfQotICB8IGJl
Zm9yZV9pbXBvcnRfcnVsZSBJTVBPUlRfU1lNIGF0X2ltcG9ydF9oZWFkZXJfZW5kX21heWJlX3Nw
YWNlIHN0cmluZ19vcl91cmkgbWF5YmVfc3BhY2UgbWF5YmVfbWVkaWFfbGlzdCBUT0tFTl9FT0Yg
ewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlSW1wb3J0UnVsZSgkNCwgJDYpOwotICAgIH0K
LSAgfCBiZWZvcmVfaW1wb3J0X3J1bGUgSU1QT1JUX1NZTSBhdF9pbXBvcnRfaGVhZGVyX2VuZF9t
YXliZV9zcGFjZSBzdHJpbmdfb3JfdXJpIG1heWJlX3NwYWNlIG1heWJlX21lZGlhX2xpc3QgaW52
YWxpZF9ibG9jayB7Ci0gICAgICAgICQkID0gMDsKLSAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0
YSgpOwotICAgIH0KLSAgfCBiZWZvcmVfaW1wb3J0X3J1bGUgSU1QT1JUX1NZTSBlcnJvciAnOycg
ewotICAgICAgICAkJCA9IDA7Ci0gICAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKLSAgICB9
Ci0gIHwgYmVmb3JlX2ltcG9ydF9ydWxlIElNUE9SVF9TWU0gZXJyb3IgaW52YWxpZF9ibG9jayB7
Ci0gICAgICAgICQkID0gMDsKLSAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOwotICAgIH0K
LSAgOwotCi1uYW1lc3BhY2U6Ci1OQU1FU1BBQ0VfU1lNIG1heWJlX3NwYWNlIG1heWJlX25zX3By
ZWZpeCBzdHJpbmdfb3JfdXJpIG1heWJlX3NwYWNlICc7JyB7Ci0gICAgcGFyc2VyLT5hZGROYW1l
c3BhY2UoJDMsICQ0KTsKLSAgICAkJCA9IDA7Ci19Ci18IE5BTUVTUEFDRV9TWU0gbWF5YmVfc3Bh
Y2UgbWF5YmVfbnNfcHJlZml4IHN0cmluZ19vcl91cmkgbWF5YmVfc3BhY2UgaW52YWxpZF9ibG9j
ayB7Ci0gICAgJCQgPSAwOwotfQotfCBOQU1FU1BBQ0VfU1lNIGVycm9yIGludmFsaWRfYmxvY2sg
ewotICAgICQkID0gMDsKLX0KLXwgTkFNRVNQQUNFX1NZTSBlcnJvciAnOycgewotICAgICQkID0g
MDsKLX0KLTsKLQotbWF5YmVfbnNfcHJlZml4OgotLyogZW1wdHkgKi8geyAkJC5jbGVhcigpOyB9
Ci18IElERU5UIG1heWJlX3NwYWNlIHsgJCQgPSAkMTsgfQotOwotCi1zdHJpbmdfb3JfdXJpOgot
U1RSSU5HCi18IFVSSQotOwotCi1tZWRpYV9mZWF0dXJlOgotICAgIElERU5UIG1heWJlX3NwYWNl
IHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICB9Ci0gICAgOwotCi1tYXliZV9tZWRpYV92YWx1ZToK
LSAgICAvKmVtcHR5Ki8gewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgIHwgJzonIG1heWJl
X3NwYWNlIGV4cHIgbWF5YmVfc3BhY2UgewotICAgICAgICAkJCA9ICQzOwotICAgIH0KLSAgICA7
Ci0KLW1lZGlhX3F1ZXJ5X2V4cDoKLSAgICBtYXliZV9tZWRpYV9yZXN0cmljdG9yIG1heWJlX3Nw
YWNlICcoJyBtYXliZV9zcGFjZSBtZWRpYV9mZWF0dXJlIG1heWJlX3NwYWNlIG1heWJlX21lZGlh
X3ZhbHVlICcpJyBtYXliZV9zcGFjZSB7Ci0gICAgICAgIC8vIElmIHJlc3RyaWN0b3IgaXMgc3Bl
Y2lmaWVkLCBtZWRpYSBxdWVyeSBleHByZXNzaW9uIGlzIGludmFsaWQuCi0gICAgICAgIC8vIENy
ZWF0ZSBlbXB0eSBtZWRpYSBxdWVyeSBleHByZXNzaW9uIGFuZCBjb250aW51ZSBwYXJzaW5nIG1l
ZGlhIHF1ZXJ5LgotICAgICAgICBpZiAoJDEgIT0gTWVkaWFRdWVyeTo6Tm9uZSkKLSAgICAgICAg
ICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ01lZGlhUXVlcnlFeHAoIiIsIDApOwotICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgICQ1Lmxvd2VyKCk7Ci0gICAgICAgICAgICAkJCA9IHBh
cnNlci0+Y3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwKCQ1LCAkNyk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgOwotCi1tZWRpYV9xdWVyeV9leHBfbGlzdDoKLSAgICBtZWRpYV9xdWVyeV9leHAg
ewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwTGlzdCgp
OwotICAgICAgICAkJC0+YXBwZW5kKHBhcnNlci0+c2lua0Zsb2F0aW5nTWVkaWFRdWVyeUV4cCgk
MSkpOwotICAgIH0KLSAgICB8IG1lZGlhX3F1ZXJ5X2V4cF9saXN0IG1heWJlX3NwYWNlIE1FRElB
X0FORCBtYXliZV9zcGFjZSBtZWRpYV9xdWVyeV9leHAgewotICAgICAgICAkJCA9ICQxOwotICAg
ICAgICAkJC0+YXBwZW5kKHBhcnNlci0+c2lua0Zsb2F0aW5nTWVkaWFRdWVyeUV4cCgkNSkpOwot
ICAgIH0KLSAgICA7Ci0KLW1heWJlX2FuZF9tZWRpYV9xdWVyeV9leHBfbGlzdDoKLSAgICAvKmVt
cHR5Ki8gewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5RXhw
TGlzdCgpOwotICAgIH0KLSAgICB8IE1FRElBX0FORCBtYXliZV9zcGFjZSBtZWRpYV9xdWVyeV9l
eHBfbGlzdCB7Ci0gICAgICAgICQkID0gJDM7Ci0gICAgfQotICAgIDsKLQotbWF5YmVfbWVkaWFf
cmVzdHJpY3RvcjoKLSAgICAvKmVtcHR5Ki8gewotICAgICAgICAkJCA9IE1lZGlhUXVlcnk6Ok5v
bmU7Ci0gICAgfQotICAgIHwgTUVESUFfT05MWSB7Ci0gICAgICAgICQkID0gTWVkaWFRdWVyeTo6
T25seTsKLSAgICB9Ci0gICAgfCBNRURJQV9OT1QgewotICAgICAgICAkJCA9IE1lZGlhUXVlcnk6
Ok5vdDsKLSAgICB9Ci0gICAgOwotCi1tZWRpYV9xdWVyeToKLSAgICBtZWRpYV9xdWVyeV9leHBf
bGlzdCB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ01lZGlhUXVlcnkocGFy
c2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwTGlzdCgkMSkpOwotICAgIH0KLSAgICB8Ci0g
ICAgbWF5YmVfbWVkaWFfcmVzdHJpY3RvciBtYXliZV9zcGFjZSBtZWRpdW0gbWF5YmVfYW5kX21l
ZGlhX3F1ZXJ5X2V4cF9saXN0IHsKLSAgICAgICAgJDMubG93ZXIoKTsKLSAgICAgICAgJCQgPSBw
YXJzZXItPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeSgkMSwgJDMsIHBhcnNlci0+c2lua0Zsb2F0
aW5nTWVkaWFRdWVyeUV4cExpc3QoJDQpKTsKLSAgICB9Ci0gICAgOwotCi1tYXliZV9tZWRpYV9s
aXN0OgotICAgICAvKiBlbXB0eSAqLyB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVNZWRp
YVF1ZXJ5U2V0KCk7Ci0gICAgIH0KLSAgICAgfCBtZWRpYV9saXN0Ci0gICAgIDsKLQotbWVkaWFf
bGlzdDoKLSAgICBtZWRpYV9xdWVyeSB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVNZWRp
YVF1ZXJ5U2V0KCk7Ci0gICAgICAgICQkLT5hZGRNZWRpYVF1ZXJ5KHBhcnNlci0+c2lua0Zsb2F0
aW5nTWVkaWFRdWVyeSgkMSkpOwotICAgICAgICBwYXJzZXItPnVwZGF0ZUxhc3RNZWRpYUxpbmUo
JCQpOwotICAgIH0KLSAgICB8IG1lZGlhX2xpc3QgJywnIG1heWJlX3NwYWNlIG1lZGlhX3F1ZXJ5
IHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgaWYgKCQkKSB7Ci0gICAgICAgICAgICAkJC0+
YWRkTWVkaWFRdWVyeShwYXJzZXItPnNpbmtGbG9hdGluZ01lZGlhUXVlcnkoJDQpKTsKLSAgICAg
ICAgICAgIHBhcnNlci0+dXBkYXRlTGFzdE1lZGlhTGluZSgkJCk7Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgfCBtZWRpYV9saXN0IGVycm9yIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICA7
Ci0KLWF0X3J1bGVfYm9keV9zdGFydDoKLSAgICAvKiBlbXB0eSAqLyB7Ci0gICAgICAgIHBhcnNl
ci0+bWFya1J1bGVCb2R5U3RhcnQoKTsKLSAgICB9Ci0gICAgOwotCi1iZWZvcmVfbWVkaWFfcnVs
ZToKLSAgICAvKiBlbXB0eSAqLyB7Ci0gICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJTdGFy
dChDU1NSdWxlU291cmNlRGF0YTo6TUVESUFfUlVMRSk7Ci0gICAgfQotICAgIDsKLQotYXRfcnVs
ZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlOgotICAgIG1heWJlX3NwYWNlIHsKLSAgICAgICAgcGFy
c2VyLT5tYXJrUnVsZUhlYWRlckVuZCgpOwotICAgIH0KLSAgICA7Ci0KLW1lZGlhOgotICAgIGJl
Zm9yZV9tZWRpYV9ydWxlIE1FRElBX1NZTSBtYXliZV9zcGFjZSBtZWRpYV9saXN0IGF0X3J1bGVf
aGVhZGVyX2VuZCAneycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1heWJlX3NwYWNlIGJsb2NrX3J1bGVf
bGlzdCBzYXZlX2Jsb2NrIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZU1lZGlhUnVsZSgk
NCwgJDkpOwotICAgIH0KLSAgICB8IGJlZm9yZV9tZWRpYV9ydWxlIE1FRElBX1NZTSBhdF9ydWxl
X2hlYWRlcl9lbmRfbWF5YmVfc3BhY2UgJ3snIGF0X3J1bGVfYm9keV9zdGFydCBtYXliZV9zcGFj
ZSBibG9ja19ydWxlX2xpc3Qgc2F2ZV9ibG9jayB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVh
dGVNZWRpYVJ1bGUoMCwgJDcpOwotICAgIH0KLSAgICB8IGJlZm9yZV9tZWRpYV9ydWxlIE1FRElB
X1NZTSBhdF9ydWxlX2hlYWRlcl9lbmRfbWF5YmVfc3BhY2UgJzsnIHsKLSAgICAgICAgJCQgPSAw
OwotICAgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7Ci0gICAgfQotICAgIDsKLQotbWVkaXVt
OgotICBJREVOVCBtYXliZV9zcGFjZSB7Ci0gICAgICAkJCA9ICQxOwotICB9Ci0gIDsKLQotYmVm
b3JlX2tleWZyYW1lc19ydWxlOgotICAgIC8qIGVtcHR5ICovIHsKLSAgICAgICAgcGFyc2VyLT5t
YXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRhOjpLRVlGUkFNRVNfUlVMRSk7Ci0g
ICAgfQotICAgIDsKLQota2V5ZnJhbWVzOgotICAgIGJlZm9yZV9rZXlmcmFtZXNfcnVsZSBXRUJL
SVRfS0VZRlJBTUVTX1NZTSBtYXliZV9zcGFjZSBrZXlmcmFtZV9uYW1lIGF0X3J1bGVfaGVhZGVy
X2VuZF9tYXliZV9zcGFjZSAneycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1heWJlX3NwYWNlIGtleWZy
YW1lc19ydWxlIGNsb3NpbmdfYnJhY2UgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlS2V5
ZnJhbWVzUnVsZSgkNCwgcGFyc2VyLT5zaW5rRmxvYXRpbmdLZXlmcmFtZVZlY3RvcigkOSkpOwot
ICAgIH0KLSAgICA7Ci0gIAota2V5ZnJhbWVfbmFtZToKLSAgICBJREVOVAotICAgIHwgU1RSSU5H
Ci0gICAgOwotCi1rZXlmcmFtZXNfcnVsZToKLSAgICAvKiBlbXB0eSAqLyB7ICQkID0gcGFyc2Vy
LT5jcmVhdGVGbG9hdGluZ0tleWZyYW1lVmVjdG9yKCk7IH0KLSAgICB8IGtleWZyYW1lc19ydWxl
IGtleWZyYW1lX3J1bGUgbWF5YmVfc3BhY2UgewotICAgICAgICAkJCA9ICQxOwotICAgICAgICBp
ZiAoJDIpCi0gICAgICAgICAgICAkJC0+YXBwZW5kKCQyKTsKLSAgICB9Ci0gICAgOwotCi1rZXlm
cmFtZV9ydWxlOgotICAgIGtleV9saXN0IG1heWJlX3NwYWNlICd7JyBtYXliZV9zcGFjZSBkZWNs
YXJhdGlvbl9saXN0ICd9JyB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVLZXlmcmFtZSgk
MSk7Ci0gICAgfQotICAgIDsKLQota2V5X2xpc3Q6Ci0gICAga2V5IHsKLSAgICAgICAgJCQgPSBw
YXJzZXItPmNyZWF0ZUZsb2F0aW5nVmFsdWVMaXN0KCk7Ci0gICAgICAgICQkLT5hZGRWYWx1ZShw
YXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlKCQxKSk7Ci0gICAgfQotICAgIHwga2V5X2xpc3QgbWF5
YmVfc3BhY2UgJywnIG1heWJlX3NwYWNlIGtleSB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgICAg
IGlmICgkJCkKLSAgICAgICAgICAgICQkLT5hZGRWYWx1ZShwYXJzZXItPnNpbmtGbG9hdGluZ1Zh
bHVlKCQ1KSk7Ci0gICAgfQotICAgIDsKLQota2V5OgotICAgIG1heWJlX3VuYXJ5X29wZXJhdG9y
IFBFUkNFTlRBR0UgeyAkJC5pZCA9IDA7ICQkLmlzSW50ID0gZmFsc2U7ICQkLmZWYWx1ZSA9ICQx
ICogJDI7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjsgfQotICAgIHwg
SURFTlQgewotICAgICAgICAkJC5pZCA9IDA7ICQkLmlzSW50ID0gZmFsc2U7ICQkLnVuaXQgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjsKLSAgICAgICAgQ1NTUGFyc2VyU3RyaW5nJiBz
dHIgPSAkMTsKLSAgICAgICAgaWYgKHN0ci5lcXVhbElnbm9yaW5nQ2FzZSgiZnJvbSIpKQotICAg
ICAgICAgICAgJCQuZlZhbHVlID0gMDsKLSAgICAgICAgZWxzZSBpZiAoc3RyLmVxdWFsSWdub3Jp
bmdDYXNlKCJ0byIpKQotICAgICAgICAgICAgJCQuZlZhbHVlID0gMTAwOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBZWUVSUk9SOwotICAgIH0KLSAgICA7Ci0KLWJlZm9yZV9wYWdlX3J1bGU6
Ci0gICAgLyogZW1wdHkgKi8gewotICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQo
Q1NTUnVsZVNvdXJjZURhdGE6OlBBR0VfUlVMRSk7Ci0gICAgfQotICAgIDsKLQotcGFnZToKLSAg
ICBiZWZvcmVfcGFnZV9ydWxlIFBBR0VfU1lNIG1heWJlX3NwYWNlIHBhZ2Vfc2VsZWN0b3IgYXRf
cnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlCi0gICAgJ3snIGF0X3J1bGVfYm9keV9zdGFydCBt
YXliZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRpb24gZGVjbGFyYXRpb25zX2FuZF9tYXJnaW5zIGNs
b3NpbmdfYnJhY2UgewotICAgICAgICBpZiAoJDQpCi0gICAgICAgICAgICAkJCA9IHBhcnNlci0+
Y3JlYXRlUGFnZVJ1bGUocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkNCkpOwotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIC8vIENsZWFyIHByb3BlcnRpZXMgaW4gdGhlIGludmFsaWQg
QHBhZ2UgcnVsZS4KLSAgICAgICAgICAgIHBhcnNlci0+Y2xlYXJQcm9wZXJ0aWVzKCk7Ci0gICAg
ICAgICAgICAvLyBBbHNvIGNsZWFyIG1hcmdpbiBhdC1ydWxlcyBoZXJlIG9uY2Ugd2UgZnVsbHkg
aW1wbGVtZW50IG1hcmdpbiBhdC1ydWxlcyBwYXJzaW5nLgotICAgICAgICAgICAgJCQgPSAwOwot
ICAgICAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOwotICAgICAgICB9Ci0gICAgfQotICAg
IHwgYmVmb3JlX3BhZ2VfcnVsZSBQQUdFX1NZTSBlcnJvciBpbnZhbGlkX2Jsb2NrIHsKLSAgICAg
IHBhcnNlci0+cG9wUnVsZURhdGEoKTsKLSAgICAgICQkID0gMDsKLSAgICB9Ci0gICAgfCBiZWZv
cmVfcGFnZV9ydWxlIFBBR0VfU1lNIGVycm9yICc7JyB7Ci0gICAgICBwYXJzZXItPnBvcFJ1bGVE
YXRhKCk7Ci0gICAgICAkJCA9IDA7Ci0gICAgfQotICAgIDsKLQotcGFnZV9zZWxlY3RvcjoKLSAg
ICBJREVOVCB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7
Ci0gICAgICAgICQkLT5zZXRUYWcoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDEsIHBhcnNlci0+
bV9kZWZhdWx0TmFtZXNwYWNlKSk7Ci0gICAgICAgICQkLT5zZXRGb3JQYWdlKCk7Ci0gICAgfQot
ICAgIHwgSURFTlQgcHNldWRvX3BhZ2UgewotICAgICAgICAkJCA9ICQyOwotICAgICAgICBpZiAo
JCQpIHsKLSAgICAgICAgICAgICQkLT5zZXRUYWcoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDEs
IHBhcnNlci0+bV9kZWZhdWx0TmFtZXNwYWNlKSk7Ci0gICAgICAgICAgICAkJC0+c2V0Rm9yUGFn
ZSgpOwotICAgICAgICB9Ci0gICAgfQotICAgIHwgcHNldWRvX3BhZ2UgewotICAgICAgICAkJCA9
ICQxOwotICAgICAgICBpZiAoJCQpCi0gICAgICAgICAgICAkJC0+c2V0Rm9yUGFnZSgpOwotICAg
IH0KLSAgICB8IC8qIGVtcHR5ICovIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0
aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNldEZvclBhZ2UoKTsKLSAgICB9Ci0gICAgOwot
Ci1kZWNsYXJhdGlvbnNfYW5kX21hcmdpbnM6Ci0gICAgZGVjbGFyYXRpb25fbGlzdAotICAgIHwg
ZGVjbGFyYXRpb25zX2FuZF9tYXJnaW5zIG1hcmdpbl9ib3ggbWF5YmVfc3BhY2UgZGVjbGFyYXRp
b25fbGlzdAotICAgIDsKLQotbWFyZ2luX2JveDoKLSAgICBtYXJnaW5fc3ltIHsKLSAgICAgICAg
cGFyc2VyLT5zdGFydERlY2xhcmF0aW9uc0Zvck1hcmdpbkJveCgpOwotICAgIH0gbWF5YmVfc3Bh
Y2UgJ3snIG1heWJlX3NwYWNlIGRlY2xhcmF0aW9uX2xpc3QgY2xvc2luZ19icmFjZSB7Ci0gICAg
ICAgICQkID0gcGFyc2VyLT5jcmVhdGVNYXJnaW5BdFJ1bGUoJDEpOwotICAgIH0KLSAgICA7Ci0K
LW1hcmdpbl9zeW0gOgotICAgIFRPUExFRlRDT1JORVJfU1lNIHsKLSAgICAgICAgJCQgPSBDU1NT
ZWxlY3Rvcjo6VG9wTGVmdENvcm5lck1hcmdpbkJveDsKLSAgICB9Ci0gICAgfCBUT1BMRUZUX1NZ
TSB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OlRvcExlZnRNYXJnaW5Cb3g7Ci0gICAgfQot
ICAgIHwgVE9QQ0VOVEVSX1NZTSB7Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OlRvcENlbnRl
ck1hcmdpbkJveDsKLSAgICB9Ci0gICAgfCBUT1BSSUdIVF9TWU0gewotICAgICAgICAkJCA9IENT
U1NlbGVjdG9yOjpUb3BSaWdodE1hcmdpbkJveDsKLSAgICB9Ci0gICAgfCBUT1BSSUdIVENPUk5F
Ul9TWU0gewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpUb3BSaWdodENvcm5lck1hcmdpbkJv
eDsKLSAgICB9Ci0gICAgfCBCT1RUT01MRUZUQ09STkVSX1NZTSB7Ci0gICAgICAgICQkID0gQ1NT
U2VsZWN0b3I6OkJvdHRvbUxlZnRDb3JuZXJNYXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgQk9UVE9N
TEVGVF9TWU0gewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpCb3R0b21MZWZ0TWFyZ2luQm94
OwotICAgIH0KLSAgICB8IEJPVFRPTUNFTlRFUl9TWU0gewotICAgICAgICAkJCA9IENTU1NlbGVj
dG9yOjpCb3R0b21DZW50ZXJNYXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgQk9UVE9NUklHSFRfU1lN
IHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6Qm90dG9tUmlnaHRNYXJnaW5Cb3g7Ci0gICAg
fQotICAgIHwgQk9UVE9NUklHSFRDT1JORVJfU1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rv
cjo6Qm90dG9tUmlnaHRDb3JuZXJNYXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgTEVGVFRPUF9TWU0g
ewotICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpMZWZ0VG9wTWFyZ2luQm94OwotICAgIH0KLSAg
ICB8IExFRlRNSURETEVfU1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6TGVmdE1pZGRs
ZU1hcmdpbkJveDsKLSAgICB9Ci0gICAgfCBMRUZUQk9UVE9NX1NZTSB7Ci0gICAgICAgICQkID0g
Q1NTU2VsZWN0b3I6OkxlZnRCb3R0b21NYXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgUklHSFRUT1Bf
U1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6UmlnaHRUb3BNYXJnaW5Cb3g7Ci0gICAg
fQotICAgIHwgUklHSFRNSURETEVfU1lNIHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6Umln
aHRNaWRkbGVNYXJnaW5Cb3g7Ci0gICAgfQotICAgIHwgUklHSFRCT1RUT01fU1lNIHsKLSAgICAg
ICAgJCQgPSBDU1NTZWxlY3Rvcjo6UmlnaHRCb3R0b21NYXJnaW5Cb3g7Ci0gICAgfQotICAgIDsK
LQotYmVmb3JlX2ZvbnRfZmFjZV9ydWxlOgotICAgIC8qIGVtcHR5ICovIHsKLSAgICAgICAgcGFy
c2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRhOjpGT05UX0ZBQ0VfUlVM
RSk7Ci0gICAgfQotICAgIDsKLQotZm9udF9mYWNlOgotICAgIGJlZm9yZV9mb250X2ZhY2VfcnVs
ZSBGT05UX0ZBQ0VfU1lNIGF0X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9zcGFjZQotICAgICd7JyBh
dF9ydWxlX2JvZHlfc3RhcnQgbWF5YmVfc3BhY2VfYmVmb3JlX2RlY2xhcmF0aW9uIGRlY2xhcmF0
aW9uX2xpc3QgY2xvc2luZ19icmFjZSB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGb250
RmFjZVJ1bGUoKTsKLSAgICB9Ci0gICAgfCBiZWZvcmVfZm9udF9mYWNlX3J1bGUgRk9OVF9GQUNF
X1NZTSBlcnJvciBpbnZhbGlkX2Jsb2NrIHsKLSAgICAgICQkID0gMDsKLSAgICAgIHBhcnNlci0+
cG9wUnVsZURhdGEoKTsKLSAgICB9Ci0gICAgfCBiZWZvcmVfZm9udF9mYWNlX3J1bGUgRk9OVF9G
QUNFX1NZTSBlcnJvciAnOycgewotICAgICAgJCQgPSAwOwotICAgICAgcGFyc2VyLT5wb3BSdWxl
RGF0YSgpOwotICAgIH0KLTsKLQotcmVnaW9uX3NlbGVjdG9yOgotICAgIHNlbGVjdG9yX2xpc3Qg
ewotICAgICAgICBpZiAoJDEpIHsKLSAgICAgICAgICAgIHBhcnNlci0+c2V0UmV1c2FibGVSZWdp
b25TZWxlY3RvclZlY3RvcigkMSk7Ci0gICAgICAgICAgICAkJCA9IHBhcnNlci0+cmV1c2FibGVS
ZWdpb25TZWxlY3RvclZlY3RvcigpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICQkID0gMDsKLSAgICB9Ci07Ci0KLWJlZm9yZV9yZWdpb25fcnVsZToKLSAgICAvKiBlbXB0
eSAqLyB7Ci0gICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNl
RGF0YTo6UkVHSU9OX1JVTEUpOwotICAgIH0KLSAgICA7Ci0KLXJlZ2lvbjoKLSAgICBiZWZvcmVf
cmVnaW9uX3J1bGUgV0VCS0lUX1JFR0lPTl9SVUxFX1NZTSBXSElURVNQQUNFIHJlZ2lvbl9zZWxl
Y3RvciBhdF9ydWxlX2hlYWRlcl9lbmQgJ3snIGF0X3J1bGVfYm9keV9zdGFydCBtYXliZV9zcGFj
ZSBibG9ja19ydWxlX2xpc3Qgc2F2ZV9ibG9jayB7Ci0gICAgICAgIGlmICgkNCkKLSAgICAgICAg
ICAgICQkID0gcGFyc2VyLT5jcmVhdGVSZWdpb25SdWxlKCQ0LCAkOSk7Ci0gICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgJCQgPSAwOwotICAgICAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgp
OwotICAgICAgICB9Ci0gICAgfQotOwotCi1jb21iaW5hdG9yOgotICAgICcrJyBtYXliZV9zcGFj
ZSB7ICQkID0gQ1NTU2VsZWN0b3I6OkRpcmVjdEFkamFjZW50OyB9Ci0gIHwgJ34nIG1heWJlX3Nw
YWNlIHsgJCQgPSBDU1NTZWxlY3Rvcjo6SW5kaXJlY3RBZGphY2VudDsgfQotICB8ICc+JyBtYXli
ZV9zcGFjZSB7ICQkID0gQ1NTU2VsZWN0b3I6OkNoaWxkOyB9Ci0gIDsKLQotbWF5YmVfdW5hcnlf
b3BlcmF0b3I6Ci0gICAgdW5hcnlfb3BlcmF0b3IgeyAkJCA9ICQxOyB9Ci0gICAgfCB7ICQkID0g
MTsgfQotICAgIDsKLQotdW5hcnlfb3BlcmF0b3I6Ci0gICAgJy0nIHsgJCQgPSAtMTsgfQotICB8
ICcrJyB7ICQkID0gMTsgfQotICA7Ci0KLW1heWJlX3NwYWNlX2JlZm9yZV9kZWNsYXJhdGlvbjoK
LSAgICBtYXliZV9zcGFjZSB7Ci0gICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5U3RhcnQoKTsK
LSAgICB9Ci0gIDsKLQotYmVmb3JlX3NlbGVjdG9yX2xpc3Q6Ci0gICAgLyogZW1wdHkgKi8gewot
ICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6OlNU
WUxFX1JVTEUpOwotICAgIH0KLSAgOwotCi1hdF9ydWxlX2hlYWRlcl9lbmQ6Ci0gICAgLyogZW1w
dHkgKi8gewotICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyRW5kKCk7Ci0gICAgfQotICA7
Ci0KLXJ1bGVzZXQ6Ci0gICAgYmVmb3JlX3NlbGVjdG9yX2xpc3Qgc2VsZWN0b3JfbGlzdCBhdF9y
dWxlX2hlYWRlcl9lbmQgJ3snIGF0X3J1bGVfYm9keV9zdGFydCBtYXliZV9zcGFjZV9iZWZvcmVf
ZGVjbGFyYXRpb24gZGVjbGFyYXRpb25fbGlzdCBjbG9zaW5nX2JyYWNlIHsKLSAgICAgICAgJCQg
PSBwYXJzZXItPmNyZWF0ZVN0eWxlUnVsZSgkMik7Ci0gICAgfQotICA7Ci0KLXNlbGVjdG9yX2xp
c3Q6Ci0gICAgc2VsZWN0b3IgJXByZWMgVU5JTVBPUlRBTlRfVE9LIHsKLSAgICAgICAgaWYgKCQx
KSB7Ci0gICAgICAgICAgICAkJCA9IHBhcnNlci0+c2VsZWN0b3JWZWN0b3IoKTsKLSAgICAgICAg
ICAgICQkLT5zaHJpbmsoMCk7Ci0gICAgICAgICAgICAkJC0+YXBwZW5kKHBhcnNlci0+c2lua0Zs
b2F0aW5nU2VsZWN0b3IoJDEpKTsKLSAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlTGFzdFNlbGVj
dG9yTGluZUFuZFBvc2l0aW9uKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgfCBzZWxlY3Rvcl9s
aXN0ICcsJyBtYXliZV9zcGFjZSBzZWxlY3RvciAlcHJlYyBVTklNUE9SVEFOVF9UT0sgewotICAg
ICAgICBpZiAoJDEgJiYgJDQpIHsKLSAgICAgICAgICAgICQkID0gJDE7Ci0gICAgICAgICAgICAk
JC0+YXBwZW5kKHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDQpKTsKLSAgICAgICAgICAg
IHBhcnNlci0+dXBkYXRlTGFzdFNlbGVjdG9yTGluZUFuZFBvc2l0aW9uKCk7Ci0gICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgfCBzZWxlY3Rvcl9saXN0IGVycm9y
IHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgIDsKLQotc2VsZWN0b3Jfd2l0aF90cmFpbGlu
Z193aGl0ZXNwYWNlOgotICAgIHNlbGVjdG9yIFdISVRFU1BBQ0UgewotICAgICAgICAkJCA9ICQx
OwotICAgIH0KLSAgICA7Ci0KLXNlbGVjdG9yOgotICAgIHNpbXBsZV9zZWxlY3RvciB7Ci0gICAg
ICAgICQkID0gJDE7Ci0gICAgfQotICAgIHwgc2VsZWN0b3Jfd2l0aF90cmFpbGluZ193aGl0ZXNw
YWNlCi0gICAgewotICAgICAgICAkJCA9ICQxOwotICAgIH0KLSAgICB8IHNlbGVjdG9yX3dpdGhf
dHJhaWxpbmdfd2hpdGVzcGFjZSBzaW1wbGVfc2VsZWN0b3IKLSAgICB7Ci0gICAgICAgICQkID0g
JDI7Ci0gICAgICAgIGlmICghJDEpCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgICAgIGVsc2Ug
aWYgKCQkKSB7Ci0gICAgICAgICAgICBDU1NQYXJzZXJTZWxlY3RvciogZW5kID0gJCQ7Ci0gICAg
ICAgICAgICB3aGlsZSAoZW5kLT50YWdIaXN0b3J5KCkpCi0gICAgICAgICAgICAgICAgZW5kID0g
ZW5kLT50YWdIaXN0b3J5KCk7Ci0gICAgICAgICAgICBlbmQtPnNldFJlbGF0aW9uKENTU1NlbGVj
dG9yOjpEZXNjZW5kYW50KTsKLSAgICAgICAgICAgIGVuZC0+c2V0VGFnSGlzdG9yeShwYXJzZXIt
PnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQxKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgfCBzZWxl
Y3RvciBjb21iaW5hdG9yIHNpbXBsZV9zZWxlY3RvciB7Ci0gICAgICAgICQkID0gJDM7Ci0gICAg
ICAgIGlmICghJDEpCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgICAgIGVsc2UgaWYgKCQkKSB7
Ci0gICAgICAgICAgICBDU1NQYXJzZXJTZWxlY3RvciogZW5kID0gJCQ7Ci0gICAgICAgICAgICB3
aGlsZSAoZW5kLT50YWdIaXN0b3J5KCkpCi0gICAgICAgICAgICAgICAgZW5kID0gZW5kLT50YWdI
aXN0b3J5KCk7Ci0gICAgICAgICAgICBlbmQtPnNldFJlbGF0aW9uKCQyKTsKLSAgICAgICAgICAg
IGVuZC0+c2V0VGFnSGlzdG9yeShwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQxKSk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgfCBzZWxlY3RvciBlcnJvciB7Ci0gICAgICAgICQkID0gMDsK
LSAgICB9Ci0gICAgOwotCi1uYW1lc3BhY2Vfc2VsZWN0b3I6Ci0gICAgLyogZW1wdHkgKi8gJ3wn
IHsgJCQuY2xlYXIoKTsgfQotICAgIHwgJyonICd8JyB7IHN0YXRpYyBMQ2hhciBzdGFyID0gJyon
OyAkJC5pbml0KCZzdGFyLCAxKTsgfQotICAgIHwgSURFTlQgJ3wnIHsgJCQgPSAkMTsgfQotOwot
ICAgIAotc2ltcGxlX3NlbGVjdG9yOgotICAgIGVsZW1lbnRfbmFtZSB7Ci0gICAgICAgICQkID0g
cGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5zZXRUYWcoUXVh
bGlmaWVkTmFtZShudWxsQXRvbSwgJDEsIHBhcnNlci0+bV9kZWZhdWx0TmFtZXNwYWNlKSk7Ci0g
ICAgfQotICAgIHwgZWxlbWVudF9uYW1lIHNwZWNpZmllcl9saXN0IHsKLSAgICAgICAgJCQgPSAk
MjsKLSAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJz
V2l0aEVsZW1lbnROYW1lKG51bGxBdG9tLCAkMSwgJCQpOwotICAgIH0KLSAgICB8IHNwZWNpZmll
cl9saXN0IHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAg
cGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0aEVsZW1lbnROYW1lKG51bGxBdG9tLCBzdGFyQXRv
bSwgJCQpOwotICAgIH0KLSAgICB8IG5hbWVzcGFjZV9zZWxlY3RvciBlbGVtZW50X25hbWUgewot
ICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAk
JC0+c2V0VGFnKHBhcnNlci0+ZGV0ZXJtaW5lTmFtZUluTmFtZXNwYWNlKCQxLCAkMikpOwotICAg
IH0KLSAgICB8IG5hbWVzcGFjZV9zZWxlY3RvciBlbGVtZW50X25hbWUgc3BlY2lmaWVyX2xpc3Qg
ewotICAgICAgICAkJCA9ICQzOwotICAgICAgICBpZiAoJCQpCi0gICAgICAgICAgICBwYXJzZXIt
PnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoJDEsICQyLCAkJCk7Ci0gICAgfQotICAg
IHwgbmFtZXNwYWNlX3NlbGVjdG9yIHNwZWNpZmllcl9saXN0IHsKLSAgICAgICAgJCQgPSAkMjsK
LSAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVTcGVjaWZpZXJzV2l0
aEVsZW1lbnROYW1lKCQxLCBzdGFyQXRvbSwgJCQpOwotICAgIH0KLSAgOwotCi1zaW1wbGVfc2Vs
ZWN0b3JfbGlzdDoKLSAgICBzaW1wbGVfc2VsZWN0b3IgJXByZWMgVU5JTVBPUlRBTlRfVE9LIHsK
LSAgICAgICAgaWYgKCQxKSB7Ci0gICAgICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRp
bmdTZWxlY3RvclZlY3RvcigpOwotICAgICAgICAgICAgJCQtPmFwcGVuZChwYXJzZXItPnNpbmtG
bG9hdGluZ1NlbGVjdG9yKCQxKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgJCQgPSAw
OwotICAgIH0KLSAgICB8IHNpbXBsZV9zZWxlY3Rvcl9saXN0IG1heWJlX3NwYWNlICcsJyBtYXli
ZV9zcGFjZSBzaW1wbGVfc2VsZWN0b3IgJXByZWMgVU5JTVBPUlRBTlRfVE9LIHsKLSAgICAgICAg
aWYgKCQxICYmICQ1KSB7Ci0gICAgICAgICAgICAkJCA9ICQxOwotICAgICAgICAgICAgJCQtPmFw
cGVuZChwYXJzZXItPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQ1KSk7Ci0gICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgICB8IHNpbXBsZV9zZWxlY3Rvcl9saXN0IGVy
cm9yIHsKLSAgICAgICAgJCQgPSAwOwotICAgIH0KLSAgOwotCi1lbGVtZW50X25hbWU6Ci0gICAg
SURFTlQgewotICAgICAgICBDU1NQYXJzZXJTdHJpbmcmIHN0ciA9ICQxOwotICAgICAgICBpZiAo
cGFyc2VyLT5tX2NvbnRleHQuaXNIVE1MRG9jdW1lbnQpCi0gICAgICAgICAgICBzdHIubG93ZXIo
KTsKLSAgICAgICAgJCQgPSBzdHI7Ci0gICAgfQotICAgIHwgJyonIHsKLSAgICAgICAgc3RhdGlj
IExDaGFyIHN0YXIgPSAnKic7Ci0gICAgICAgICQkLmluaXQoJnN0YXIsIDEpOwotICAgIH0KLSAg
OwotCi1zcGVjaWZpZXJfbGlzdDoKLSAgICBzcGVjaWZpZXIgewotICAgICAgICAkJCA9ICQxOwot
ICAgIH0KLSAgICB8IHNwZWNpZmllcl9saXN0IHNwZWNpZmllciB7Ci0gICAgICAgIGlmICghJDIp
Ci0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgICAgIGVsc2UgaWYgKCQxKQotICAgICAgICAgICAg
JCQgPSBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnMoJDEsICQyKTsKLSAgICB9Ci0gICAgfCBzcGVj
aWZpZXJfbGlzdCBlcnJvciB7Ci0gICAgICAgICQkID0gMDsKLSAgICB9Ci07Ci0KLXNwZWNpZmll
cjoKLSAgICBJRFNFTCB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVj
dG9yKCk7Ci0gICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6SWQpOwotICAgICAgICBp
ZiAocGFyc2VyLT5tX2NvbnRleHQubW9kZSA9PSBDU1NRdWlya3NNb2RlKQotICAgICAgICAgICAg
JDEubG93ZXIoKTsKLSAgICAgICAgJCQtPnNldFZhbHVlKCQxKTsKLSAgICB9Ci0gIHwgSEVYIHsK
LSAgICAgICAgaWYgKCQxWzBdID49ICcwJyAmJiAkMVswXSA8PSAnOScpIHsKLSAgICAgICAgICAg
ICQkID0gMDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVh
dGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0
b3I6OklkKTsKLSAgICAgICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4dC5tb2RlID09IENTU1F1
aXJrc01vZGUpCi0gICAgICAgICAgICAgICAgJDEubG93ZXIoKTsKLSAgICAgICAgICAgICQkLT5z
ZXRWYWx1ZSgkMSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gIHwgY2xhc3MKLSAgfCBhdHRyaWIKLSAg
fCBwc2V1ZG8KLSAgICA7Ci0KLWNsYXNzOgotICAgICcuJyBJREVOVCB7Ci0gICAgICAgICQkID0g
cGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5zZXRNYXRjaChD
U1NTZWxlY3Rvcjo6Q2xhc3MpOwotICAgICAgICBpZiAocGFyc2VyLT5tX2NvbnRleHQubW9kZSA9
PSBDU1NRdWlya3NNb2RlKQotICAgICAgICAgICAgJDIubG93ZXIoKTsKLSAgICAgICAgJCQtPnNl
dFZhbHVlKCQyKTsKLSAgICB9Ci0gIDsKLQotYXR0cl9uYW1lOgotICAgIElERU5UIG1heWJlX3Nw
YWNlIHsKLSAgICAgICAgQ1NTUGFyc2VyU3RyaW5nJiBzdHIgPSAkMTsKLSAgICAgICAgaWYgKHBh
cnNlci0+bV9jb250ZXh0LmlzSFRNTERvY3VtZW50KQotICAgICAgICAgICAgc3RyLmxvd2VyKCk7
Ci0gICAgICAgICQkID0gc3RyOwotICAgIH0KLSAgICA7Ci0KLWF0dHJpYjoKLSAgICAnWycgbWF5
YmVfc3BhY2UgYXR0cl9uYW1lICddJyB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9h
dGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5zZXRBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShu
dWxsQXRvbSwgJDMsIG51bGxBdG9tKSk7Ci0gICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rv
cjo6U2V0KTsKLSAgICB9Ci0gICAgfCAnWycgbWF5YmVfc3BhY2UgYXR0cl9uYW1lIG1hdGNoIG1h
eWJlX3NwYWNlIGlkZW50X29yX3N0cmluZyBtYXliZV9zcGFjZSAnXScgewotICAgICAgICAkJCA9
IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0QXR0cmli
dXRlKFF1YWxpZmllZE5hbWUobnVsbEF0b20sICQzLCBudWxsQXRvbSkpOwotICAgICAgICAkJC0+
c2V0TWF0Y2goKENTU1NlbGVjdG9yOjpNYXRjaCkkNCk7Ci0gICAgICAgICQkLT5zZXRWYWx1ZSgk
Nik7Ci0gICAgfQotICAgIHwgJ1snIG1heWJlX3NwYWNlIG5hbWVzcGFjZV9zZWxlY3RvciBhdHRy
X25hbWUgJ10nIHsKLSAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3Io
KTsKLSAgICAgICAgJCQtPnNldEF0dHJpYnV0ZShwYXJzZXItPmRldGVybWluZU5hbWVJbk5hbWVz
cGFjZSgkMywgJDQpKTsKLSAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpTZXQpOwot
ICAgIH0KLSAgICB8ICdbJyBtYXliZV9zcGFjZSBuYW1lc3BhY2Vfc2VsZWN0b3IgYXR0cl9uYW1l
IG1hdGNoIG1heWJlX3NwYWNlIGlkZW50X29yX3N0cmluZyBtYXliZV9zcGFjZSAnXScgewotICAg
ICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+
c2V0QXR0cmlidXRlKHBhcnNlci0+ZGV0ZXJtaW5lTmFtZUluTmFtZXNwYWNlKCQzLCAkNCkpOwot
ICAgICAgICAkJC0+c2V0TWF0Y2goKENTU1NlbGVjdG9yOjpNYXRjaCkkNSk7Ci0gICAgICAgICQk
LT5zZXRWYWx1ZSgkNyk7Ci0gICAgfQotICA7Ci0KLW1hdGNoOgotICAgICc9JyB7Ci0gICAgICAg
ICQkID0gQ1NTU2VsZWN0b3I6OkV4YWN0OwotICAgIH0KLSAgICB8IElOQ0xVREVTIHsKLSAgICAg
ICAgJCQgPSBDU1NTZWxlY3Rvcjo6TGlzdDsKLSAgICB9Ci0gICAgfCBEQVNITUFUQ0ggewotICAg
ICAgICAkJCA9IENTU1NlbGVjdG9yOjpIeXBoZW47Ci0gICAgfQotICAgIHwgQkVHSU5TV0lUSCB7
Ci0gICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkJlZ2luOwotICAgIH0KLSAgICB8IEVORFNXSVRI
IHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6RW5kOwotICAgIH0KLSAgICB8IENPTlRBSU5T
IHsKLSAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6Q29udGFpbjsKLSAgICB9Ci0gICAgOwotCi1p
ZGVudF9vcl9zdHJpbmc6Ci0gICAgSURFTlQKLSAgfCBTVFJJTkcKLSAgICA7Ci0KLXBzZXVkb19w
YWdlOgotICAgICc6JyBJREVOVCB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGlu
Z1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UGFnZVBzZXVk
b0NsYXNzKTsKLSAgICAgICAgJDIubG93ZXIoKTsKLSAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsK
LSAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgdHlwZSA9ICQkLT5wc2V1ZG9UeXBlKCk7
Ci0gICAgICAgIGlmICh0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9Vbmtub3duKQotICAgICAg
ICAgICAgJCQgPSAwOwotICAgIH0KLQotcHNldWRvOgotICAgICc6JyBJREVOVCB7Ci0gICAgICAg
ICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5zZXRN
YXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpOwotICAgICAgICAkMi5sb3dlcigpOwotICAg
ICAgICAkJC0+c2V0VmFsdWUoJDIpOwotICAgICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSB0
eXBlID0gJCQtPnBzZXVkb1R5cGUoKTsKLSAgICAgICAgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6
OlBzZXVkb1Vua25vd24pCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgIHwgJzonICc6
JyBJREVOVCB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7
Ci0gICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvRWxlbWVudCk7Ci0gICAg
ICAgICQzLmxvd2VyKCk7Ci0gICAgICAgICQkLT5zZXRWYWx1ZSgkMyk7Ci0gICAgICAgIC8vIEZJ
WE1FOiBUaGlzIGNhbGwgaXMgbmVlZGVkIHRvIGZvcmNlIHNlbGVjdG9yIHRvIGNvbXB1dGUgdGhl
IHBzZXVkb1R5cGUgZWFybHkgZW5vdWdoLgotICAgICAgICAkJC0+cHNldWRvVHlwZSgpOwotICAg
IH0KLSAgICAvLyB1c2UgYnkgOi13ZWJraXQtYW55LgotICAgIC8vIEZJWE1FOiBzaG91bGQgd2Ug
c3VwcG9ydCBnZW5lcmljIHNlbGVjdG9ycyBoZXJlIG9yIGp1c3Qgc2ltcGxlX3NlbGVjdG9ycz8K
LSAgICAvLyBVc2Ugc2ltcGxlX3NlbGVjdG9yX2xpc3QgZm9yIG5vdyB0byBtYXRjaCAtbW96LWFu
eS4KLSAgICAvLyBTZWUgaHR0cDovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvd3d3LXN0
eWxlLzIwMTBTZXAvMDU2Ni5odG1sIGZvciBzb21lCi0gICAgLy8gcmVsYXRlZCBkaXNjdXNzaW9u
IHdpdGggcmVzcGVjdCB0byA6bm90LgotICAgIHwgJzonIEFOWUZVTkNUSU9OIG1heWJlX3NwYWNl
IHNpbXBsZV9zZWxlY3Rvcl9saXN0IG1heWJlX3NwYWNlICcpJyB7Ci0gICAgICAgIGlmICgkNCkg
ewotICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAg
ICAgICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpOwotICAgICAg
ICAgICAgJCQtPmFkb3B0U2VsZWN0b3JWZWN0b3IoKnBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0
b3JWZWN0b3IoJDQpKTsKLSAgICAgICAgICAgICQyLmxvd2VyKCk7Ci0gICAgICAgICAgICAkJC0+
c2V0VmFsdWUoJDIpOwotICAgICAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgdHlwZSA9
ICQkLT5wc2V1ZG9UeXBlKCk7Ci0gICAgICAgICAgICBpZiAodHlwZSAhPSBDU1NTZWxlY3Rvcjo6
UHNldWRvQW55KQotICAgICAgICAgICAgICAgICQkID0gMDsKLSAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgIC8vIHVzZWQgYnkgOm50aC0qKGF4K2IpCi0gICAg
fCAnOicgRlVOQ1RJT04gbWF5YmVfc3BhY2UgTlRIIG1heWJlX3NwYWNlICcpJyB7Ci0gICAgICAg
ICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICQkLT5zZXRN
YXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpOwotICAgICAgICAkJC0+c2V0QXJndW1lbnQo
JDQpOwotICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOwotICAgICAgICBDU1NTZWxlY3Rvcjo6UHNl
dWRvVHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUoKTsKLSAgICAgICAgaWYgKHR5cGUgPT0gQ1NT
U2VsZWN0b3I6OlBzZXVkb1Vua25vd24pCi0gICAgICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAg
IC8vIHVzZWQgYnkgOm50aC0qCi0gICAgfCAnOicgRlVOQ1RJT04gbWF5YmVfc3BhY2UgbWF5YmVf
dW5hcnlfb3BlcmF0b3IgSU5URUdFUiBtYXliZV9zcGFjZSAnKScgewotICAgICAgICAkJCA9IHBh
cnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAkJC0+c2V0TWF0Y2goQ1NT
U2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKLSAgICAgICAgJCQtPnNldEFyZ3VtZW50KFN0cmluZzo6
bnVtYmVyKCQ0ICogJDUpKTsKLSAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsKLSAgICAgICAgQ1NT
U2VsZWN0b3I6OlBzZXVkb1R5cGUgdHlwZSA9ICQkLT5wc2V1ZG9UeXBlKCk7Ci0gICAgICAgIGlm
ICh0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9Vbmtub3duKQotICAgICAgICAgICAgJCQgPSAw
OwotICAgIH0KLSAgICAvLyB1c2VkIGJ5IDpudGgtKihvZGQvZXZlbikgYW5kIDpsYW5nCi0gICAg
fCAnOicgRlVOQ1RJT04gbWF5YmVfc3BhY2UgSURFTlQgbWF5YmVfc3BhY2UgJyknIHsKLSAgICAg
ICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgJCQtPnNl
dE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7Ci0gICAgICAgICQkLT5zZXRBcmd1bWVu
dCgkNCk7Ci0gICAgICAgICQyLmxvd2VyKCk7Ci0gICAgICAgICQkLT5zZXRWYWx1ZSgkMik7Ci0g
ICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOwot
ICAgICAgICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bikKLSAgICAgICAg
ICAgICQkID0gMDsKLSAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRv
TnRoQ2hpbGQgfHwKLSAgICAgICAgICAgICAgICAgdHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRv
TnRoT2ZUeXBlIHx8Ci0gICAgICAgICAgICAgICAgIHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVk
b050aExhc3RDaGlsZCB8fAotICAgICAgICAgICAgICAgICB0eXBlID09IENTU1NlbGVjdG9yOjpQ
c2V1ZG9OdGhMYXN0T2ZUeXBlKSB7Ci0gICAgICAgICAgICBpZiAoIWlzVmFsaWROdGhUb2tlbigk
NCkpCi0gICAgICAgICAgICAgICAgJCQgPSAwOwotICAgICAgICB9Ci0gICAgfQotICAgIC8vIHVz
ZWQgYnkgOm5vdAotICAgIHwgJzonIE5PVEZVTkNUSU9OIG1heWJlX3NwYWNlIHNpbXBsZV9zZWxl
Y3RvciBtYXliZV9zcGFjZSAnKScgewotICAgICAgICBpZiAoISQ0IHx8ICEkNC0+aXNTaW1wbGUo
KSkKLSAgICAgICAgICAgICQkID0gMDsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAkJCA9
IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAgICAgJCQtPnNldE1h
dGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7Ci0KLSAgICAgICAgICAgIENTU1NlbGVjdG9y
VmVjdG9yIHNlbGVjdG9yVmVjdG9yOwotICAgICAgICAgICAgc2VsZWN0b3JWZWN0b3IuYXBwZW5k
KHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDQpKTsKLSAgICAgICAgICAgICQkLT5hZG9w
dFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9yVmVjdG9yKTsKLQotICAgICAgICAgICAgJDIubG93ZXIo
KTsKLSAgICAgICAgICAgICQkLT5zZXRWYWx1ZSgkMik7Ci0gICAgICAgIH0KLSAgICB9Ci0gIDsK
LQotZGVjbGFyYXRpb25fbGlzdDoKLSAgICBkZWNsYXJhdGlvbiB7Ci0gICAgICAgICQkID0gJDE7
Ci0gICAgfQotICAgIHwgZGVjbF9saXN0IGRlY2xhcmF0aW9uIHsKLSAgICAgICAgJCQgPSAkMTsK
LSAgICAgICAgaWYgKCAkMiApCi0gICAgICAgICAgICAkJCA9ICQyOwotICAgIH0KLSAgICB8IGRl
Y2xfbGlzdCB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgfQotICAgIHwgZXJyb3IgaW52YWxpZF9i
bG9ja19saXN0IGVycm9yIHsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAgICB9Ci0gICAgfCBlcnJv
ciB7Ci0gICAgICAgICQkID0gZmFsc2U7Ci0gICAgfQotICAgIHwgZGVjbF9saXN0IGVycm9yIHsK
LSAgICAgICAgJCQgPSAkMTsKLSAgICB9Ci0gICAgfCBkZWNsX2xpc3QgaW52YWxpZF9ibG9ja19s
aXN0IHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICB9Ci0gICAgOwotCi1kZWNsX2xpc3Q6Ci0gICAg
ZGVjbGFyYXRpb24gJzsnIG1heWJlX3NwYWNlIHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVy
dHlTdGFydCgpOwotICAgICAgICAkJCA9ICQxOwotICAgIH0KLSAgICB8IGRlY2xhcmF0aW9uIGlu
dmFsaWRfYmxvY2tfbGlzdCBtYXliZV9zcGFjZSB7Ci0gICAgICAgICQkID0gZmFsc2U7Ci0gICAg
fQotICAgIHwgZGVjbGFyYXRpb24gaW52YWxpZF9ibG9ja19saXN0ICc7JyBtYXliZV9zcGFjZSB7
Ci0gICAgICAgICQkID0gZmFsc2U7Ci0gICAgfQotICAgIHwgZXJyb3IgJzsnIG1heWJlX3NwYWNl
IHsKLSAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlTdGFydCgpOwotICAgICAgICAkJCA9IGZh
bHNlOwotICAgIH0KLSAgICB8IGVycm9yIGludmFsaWRfYmxvY2tfbGlzdCBlcnJvciAnOycgbWF5
YmVfc3BhY2UgewotICAgICAgICAkJCA9IGZhbHNlOwotICAgIH0KLSAgICB8IGRlY2xfbGlzdCBk
ZWNsYXJhdGlvbiAnOycgbWF5YmVfc3BhY2UgewotICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0
eVN0YXJ0KCk7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgICAgIGlmICgkMikKLSAgICAgICAgICAg
ICQkID0gJDI7Ci0gICAgfQotICAgIHwgZGVjbF9saXN0IGVycm9yICc7JyBtYXliZV9zcGFjZSB7
Ci0gICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5U3RhcnQoKTsKLSAgICAgICAgJCQgPSAkMTsK
LSAgICB9Ci0gICAgfCBkZWNsX2xpc3QgZXJyb3IgaW52YWxpZF9ibG9ja19saXN0IGVycm9yICc7
JyBtYXliZV9zcGFjZSB7Ci0gICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5U3RhcnQoKTsKLSAg
ICAgICAgJCQgPSAkMTsKLSAgICB9Ci0gICAgOwotCi1kZWNsYXJhdGlvbjoKLSAgICBWQVJfREVG
SU5JVElPTiAnOicgbWF5YmVfc3BhY2UgZXhwciBwcmlvIHsKLSNpZiBFTkFCTEUoQ1NTX1ZBUklB
QkxFUykKLSAgICAgICAgcGFyc2VyLT5zdG9yZVZhcmlhYmxlRGVjbGFyYXRpb24oJDEsIHBhcnNl
ci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQ0KSwgJDUpOwotICAgICAgICAkJCA9IHRydWU7Ci0g
ICAgICAgIHBhcnNlci0+bWFya1Byb3BlcnR5RW5kKCQ1LCB0cnVlKTsKLSNlbHNlCi0gICAgICAg
ICQkID0gZmFsc2U7Ci0jZW5kaWYKLSAgICB9Ci0gICAgfAotICAgIHByb3BlcnR5ICc6JyBtYXli
ZV9zcGFjZSBleHByIHByaW8gewotICAgICAgICAkJCA9IGZhbHNlOwotICAgICAgICBib29sIGlz
UHJvcGVydHlQYXJzZWQgPSBmYWxzZTsKLSAgICAgICAgaWYgKCQxICYmICQ0KSB7Ci0gICAgICAg
ICAgICBwYXJzZXItPm1fdmFsdWVMaXN0ID0gcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3Qo
JDQpOwotICAgICAgICAgICAgaW50IG9sZFBhcnNlZFByb3BlcnRpZXMgPSBwYXJzZXItPm1fcGFy
c2VkUHJvcGVydGllcy0+c2l6ZSgpOwotICAgICAgICAgICAgJCQgPSBwYXJzZXItPnBhcnNlVmFs
dWUoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oJDEpLCAkNSk7Ci0gICAgICAgICAgICBpZiAo
ISQkKQotICAgICAgICAgICAgICAgIHBhcnNlci0+cm9sbGJhY2tMYXN0UHJvcGVydGllcyhwYXJz
ZXItPm1fcGFyc2VkUHJvcGVydGllcy0+c2l6ZSgpIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgaXNQcm9wZXJ0eVBhcnNlZCA9IHRydWU7
Ci0gICAgICAgICAgICBwYXJzZXItPm1fdmFsdWVMaXN0ID0gbnVsbHB0cjsKLSAgICAgICAgfQot
ICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eUVuZCgkNSwgaXNQcm9wZXJ0eVBhcnNlZCk7Ci0g
ICAgfQotICAgIHwKLSAgICBwcm9wZXJ0eSBlcnJvciB7Ci0gICAgICAgICQkID0gZmFsc2U7Ci0g
ICAgfQotICAgIHwKLSAgICBwcm9wZXJ0eSAnOicgbWF5YmVfc3BhY2UgZXJyb3IgZXhwciBwcmlv
IHsKLSAgICAgICAgLyogVGhlIGRlZmF1bHQgbW92YWJsZSB0eXBlIHRlbXBsYXRlIGhhcyBsZXR0
ZXItc3BhY2luZzogLm5vbmU7ICBIYW5kbGUgdGhpcyBieSBsb29raW5nIGZvcgotICAgICAgICBl
cnJvciB0b2tlbnMgYXQgdGhlIHN0YXJ0IG9mIGFuIGV4cHIsIHJlY292ZXIgdGhlIGV4cHIgYW5k
IHRoZW4gdHJlYXQgYXMgYW4gZXJyb3IsIGNsZWFuaW5nCi0gICAgICAgIHVwIGFuZCBkZWxldGlu
ZyB0aGUgc2hpZnRlZCBleHByLiAgKi8KLSAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlFbmQo
ZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAgICB9Ci0gICAgfAotICAgIHBy
b3BlcnR5ICc6JyBtYXliZV9zcGFjZSBleHByIHByaW8gZXJyb3IgewotICAgICAgICAvKiBXaGVu
IHdlIGVuY291bnRlciBzb21ldGhpbmcgbGlrZSBwIHtjb2xvcjogcmVkICFpbXBvcnRhbnQgZmFp
bDt9IHdlIHNob3VsZCBkcm9wIHRoZSBkZWNsYXJhdGlvbiAqLwotICAgICAgICBwYXJzZXItPm1h
cmtQcm9wZXJ0eUVuZChmYWxzZSwgZmFsc2UpOwotICAgICAgICAkJCA9IGZhbHNlOwotICAgIH0K
LSAgICB8Ci0gICAgSU1QT1JUQU5UX1NZTSBtYXliZV9zcGFjZSB7Ci0gICAgICAgIC8qIEhhbmRs
ZSB0aGlzIGNhc2U6IGRpdiB7IHRleHQtYWxpZ246IGNlbnRlcjsgIWltcG9ydGFudCB9IEp1c3Qg
cmVkdWNlIGF3YXkgdGhlIHN0cmF5ICFpbXBvcnRhbnQuICovCi0gICAgICAgICQkID0gZmFsc2U7
Ci0gICAgfQotICAgIHwKLSAgICBwcm9wZXJ0eSAnOicgbWF5YmVfc3BhY2UgewotICAgICAgICAv
KiBkaXYgeyBmb250LWZhbWlseTogfSBKdXN0IHJlZHVjZSBhd2F5IHRoaXMgcHJvcGVydHkgd2l0
aCBubyB2YWx1ZS4gKi8KLSAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlFbmQoZmFsc2UsIGZh
bHNlKTsKLSAgICAgICAgJCQgPSBmYWxzZTsKLSAgICB9Ci0gICAgfAotICAgIHByb3BlcnR5ICc6
JyBtYXliZV9zcGFjZSBlcnJvciB7Ci0gICAgICAgIC8qIGlmIHdlIGNvbWUgYWNyb3NzIHJ1bGVz
IHdpdGggaW52YWxpZCB2YWx1ZXMgbGlrZSB0aGlzIGNhc2U6IHAgeyB3ZWlnaHQ6ICo7IH0sIGp1
c3QgZGlzY2FyZCB0aGUgcnVsZSAqLwotICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eUVuZChm
YWxzZSwgZmFsc2UpOwotICAgICAgICAkJCA9IGZhbHNlOwotICAgIH0KLSAgICB8Ci0gICAgcHJv
cGVydHkgaW52YWxpZF9ibG9jayB7Ci0gICAgICAgIC8qIGlmIHdlIGNvbWUgYWNyb3NzOiBkaXYg
eyBjb2xvcns7Y29sb3I6bWFyb29ufSB9LCBpZ25vcmUgZXZlcnl0aGluZyB3aXRoaW4gY3VybHkg
YnJhY2tldHMgKi8KLSAgICAgICAgJCQgPSBmYWxzZTsKLSAgICB9Ci0gIDsKLQotcHJvcGVydHk6
Ci0gICAgSURFTlQgbWF5YmVfc3BhY2UgewotICAgICAgICAkJCA9IGNzc1Byb3BlcnR5SUQoJDEp
OwotICAgIH0KLSAgOwotCi1wcmlvOgotICAgIElNUE9SVEFOVF9TWU0gbWF5YmVfc3BhY2UgeyAk
JCA9IHRydWU7IH0KLSAgICB8IC8qIGVtcHR5ICovIHsgJCQgPSBmYWxzZTsgfQotICA7Ci0KLWV4
cHI6Ci0gICAgdGVybSB7Ci0gICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1ZhbHVl
TGlzdCgpOwotICAgICAgICAkJC0+YWRkVmFsdWUocGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZSgk
MSkpOwotICAgIH0KLSAgICB8IGV4cHIgb3BlcmF0b3IgdGVybSB7Ci0gICAgICAgICQkID0gJDE7
Ci0gICAgICAgIGlmICgkJCkgewotICAgICAgICAgICAgaWYgKCQyKSB7Ci0gICAgICAgICAgICAg
ICAgQ1NTUGFyc2VyVmFsdWUgdjsKLSAgICAgICAgICAgICAgICB2LmlkID0gMDsKLSAgICAgICAg
ICAgICAgICB2LnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3I7Ci0gICAgICAgICAgICAg
ICAgdi5pVmFsdWUgPSAkMjsKLSAgICAgICAgICAgICAgICAkJC0+YWRkVmFsdWUodik7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAkJC0+YWRkVmFsdWUocGFyc2VyLT5zaW5rRmxvYXRpbmdW
YWx1ZSgkMykpOwotICAgICAgICB9Ci0gICAgfQotICAgIHwgZXhwciBpbnZhbGlkX2Jsb2NrX2xp
c3QgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgIHwgZXhwciBpbnZhbGlkX2Jsb2NrX2xp
c3QgZXJyb3IgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICAgIHwgZXhwciBlcnJvciB7Ci0g
ICAgICAgICQkID0gMDsKLSAgICB9Ci0gIDsKLQotb3BlcmF0b3I6Ci0gICAgJy8nIG1heWJlX3Nw
YWNlIHsKLSAgICAgICAgJCQgPSAnLyc7Ci0gICAgfQotICB8ICcsJyBtYXliZV9zcGFjZSB7Ci0g
ICAgICAgICQkID0gJywnOwotICAgIH0KLSAgfCAvKiBlbXB0eSAqLyB7Ci0gICAgICAgICQkID0g
MDsKLSAgfQotICA7Ci0KLXRlcm06Ci0gIHVuYXJ5X3Rlcm0geyAkJCA9ICQxOyB9Ci0gIHwgdW5h
cnlfb3BlcmF0b3IgdW5hcnlfdGVybSB7ICQkID0gJDI7ICQkLmZWYWx1ZSAqPSAkMTsgfQotICB8
IFNUUklORyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORzsgfQotICB8IElERU5UIG1heWJlX3NwYWNl
IHsKLSAgICAgICQkLmlkID0gY3NzVmFsdWVLZXl3b3JkSUQoJDEpOwotICAgICAgJCQudW5pdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQ7Ci0gICAgICAkJC5zdHJpbmcgPSAkMTsKLSAg
fQotICAvKiBXZSBtaWdodCBuZWVkIHRvIGFjdHVhbGx5IHBhcnNlIHRoZSBudW1iZXIgZnJvbSBh
IGRpbWVuc2lvbiwgYnV0IHdlIGNhbid0IGp1c3QgcHV0IHNvbWV0aGluZyB0aGF0IHVzZXMgJCQu
c3RyaW5nIGludG8gdW5hcnlfdGVybS4gKi8KLSAgfCBESU1FTiBtYXliZV9zcGFjZSB7ICQkLmlk
ID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RJ
TUVOU0lPTjsgfQotICB8IHVuYXJ5X29wZXJhdG9yIERJTUVOIG1heWJlX3NwYWNlIHsgJCQuaWQg
PSAwOyAkJC5zdHJpbmcgPSAkMjsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRElN
RU5TSU9OOyB9Ci0gIHwgVVJJIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSAk
MTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJOyB9Ci0gIHwgVU5JQ09ERVJB
TkdFIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfVU5JQ09ERV9SQU5HRTsgfQotICB8IEhFWCBtYXliZV9zcGFj
ZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1BBUlNFUl9IRVhDT0xPUjsgfQotICB8ICcjJyBtYXliZV9zcGFjZSB7ICQkLmlkID0g
MDsgJCQuc3RyaW5nID0gQ1NTUGFyc2VyU3RyaW5nKCk7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BBUlNFUl9IRVhDT0xPUjsgfSAvKiBIYW5kbGUgZXJyb3IgY2FzZTogImNvbG9y
OiAjOyIgKi8KLSAgfCBWQVJGVU5DVElPTiBtYXliZV9zcGFjZSBJREVOVCAnKScgbWF5YmVfc3Bh
Y2UgewotI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQotICAgICAgJCQuaWQgPSAwOwotICAgICAg
JCQuc3RyaW5nID0gJDM7Ci0gICAgICAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19W
QVJJQUJMRV9OQU1FOwotI2VuZGlmCi0gIH0KLSAgLyogRklYTUU6IGFjY29yZGluZyB0byB0aGUg
c3BlY3MgYSBmdW5jdGlvbiBjYW4gaGF2ZSBhIHVuYXJ5X29wZXJhdG9yIGluIGZyb250LiBJIGtu
b3cgbm8gY2FzZSB3aGVyZSB0aGlzIG1ha2VzIHNlbnNlICovCi0gIHwgZnVuY3Rpb24gewotICAg
ICAgJCQgPSAkMTsKLSAgfQotICB8IGNhbGNfZnVuY3Rpb24gewotICAgICAgJCQgPSAkMTsKLSAg
fQotICB8IG1pbl9vcl9tYXhfZnVuY3Rpb24gewotICAgICAgJCQgPSAkMTsKLSAgfQotICB8ICcl
JyBtYXliZV9zcGFjZSB7IC8qIEhhbmRsZSB3aWR0aDogJTsgKi8KLSAgICAgICQkLmlkID0gMDsg
JCQudW5pdCA9IDA7Ci0gIH0KLSAgOwotCi11bmFyeV90ZXJtOgotICBJTlRFR0VSIG1heWJlX3Nw
YWNlIHsgJCQuaWQgPSAwOyAkJC5pc0ludCA9IHRydWU7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7IH0KLSAgfCBGTE9BVFRPS0VOIG1heWJl
X3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5pc0ludCA9IGZhbHNlOyAkJC5mVmFsdWUgPSAkMTsgJCQu
dW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOyB9Ci0gIHwgUEVSQ0VOVEFHRSBt
YXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0U7IH0KLSAgfCBQWFMgbWF5YmVfc3BhY2UgeyAkJC5p
ZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19Q
WDsgfQotICB8IENNUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQk
LnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0NNOyB9Ci0gIHwgTU1TIG1heWJlX3NwYWNl
IHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfTU07IH0KLSAgfCBJTlMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9
ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JTjsgfQotICB8IFBUUyBtYXli
ZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BUOyB9Ci0gIHwgUENTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5m
VmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEM7IH0KLSAgfCBE
RUdTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfREVHOyB9Ci0gIHwgUkFEUyBtYXliZV9zcGFjZSB7ICQkLmlk
ID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JB
RDsgfQotICB8IEdSQURTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsg
JCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfR1JBRDsgfQotICB8IFRVUk5TIG1heWJl
X3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfVFVSTjsgfQotICB8IE1TRUNTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAk
JC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTVM7IH0KLSAg
fCBTRUNTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUzsgfQotICB8IEhFUlRaIG1heWJlX3NwYWNlIHsgJCQu
aWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
SFo7IH0KLSAgfCBLSEVSVFogbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQx
OyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19LSFo7IH0KLSAgfCBFTVMgbWF5YmVf
c3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19FTVM7IH0KLSAgfCBRRU1TIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5m
VmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpRX0VNUzsgfQotICB8IEVYUyBt
YXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX0VYUzsgfQotICB8IFJFTVMgbWF5YmVfc3BhY2UgewotICAgICAgJCQu
aWQgPSAwOwotICAgICAgJCQuZlZhbHVlID0gJDE7Ci0gICAgICAkJC51bml0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19SRU1TOwotICAgICAgaWYgKHBhcnNlci0+bV9zdHlsZVNoZWV0KQotICAg
ICAgICAgIHBhcnNlci0+bV9zdHlsZVNoZWV0LT5wYXJzZXJTZXRVc2VzUmVtVW5pdHModHJ1ZSk7
Ci0gIH0KLSAgfCBWVyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQk
LnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZXOyB9Ci0gIHwgVkggbWF5YmVfc3BhY2Ug
eyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19WSDsgfQotICB8IFZNSU4gbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9
ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WTUlOOyB9Ci0gIHwgRFBQWCBt
YXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX0RQUFg7IH0KLSAgfCBEUEkgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7
ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19EUEk7IH0K
LSAgfCBEUENNIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5p
dCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRFBDTTsgfQotICA7Ci0KLWZ1bmN0aW9uOgotICAg
IEZVTkNUSU9OIG1heWJlX3NwYWNlIGV4cHIgJyknIG1heWJlX3NwYWNlIHsKLSAgICAgICAgQ1NT
UGFyc2VyRnVuY3Rpb24qIGYgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsKLSAg
ICAgICAgZi0+bmFtZSA9ICQxOwotICAgICAgICBmLT5hcmdzID0gcGFyc2VyLT5zaW5rRmxvYXRp
bmdWYWx1ZUxpc3QoJDMpOwotICAgICAgICAkJC5pZCA9IDA7Ci0gICAgICAgICQkLnVuaXQgPSBD
U1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb247Ci0gICAgICAgICQkLmZ1bmN0aW9uID0gZjsKLSAgICB9
IHwKLSAgICBGVU5DVElPTiBtYXliZV9zcGFjZSBleHByIFRPS0VOX0VPRiB7Ci0gICAgICAgIENT
U1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7Ci0g
ICAgICAgIGYtPm5hbWUgPSAkMTsKLSAgICAgICAgZi0+YXJncyA9IHBhcnNlci0+c2lua0Zsb2F0
aW5nVmFsdWVMaXN0KCQzKTsKLSAgICAgICAgJCQuaWQgPSAwOwotICAgICAgICAkJC51bml0ID0g
Q1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uOwotICAgICAgICAkJC5mdW5jdGlvbiA9IGY7Ci0gICAg
fSB8Ci0gICAgRlVOQ1RJT04gbWF5YmVfc3BhY2UgJyknIG1heWJlX3NwYWNlIHsKLSAgICAgICAg
Q1NTUGFyc2VyRnVuY3Rpb24qIGYgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsK
LSAgICAgICAgZi0+bmFtZSA9ICQxOwotICAgICAgICBDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVl
TGlzdCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdWYWx1ZUxpc3QoKTsKLSAgICAgICAgZi0+YXJn
cyA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KHZhbHVlTGlzdCk7Ci0gICAgICAgICQk
LmlkID0gMDsKLSAgICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKLSAg
ICAgICAgJCQuZnVuY3Rpb24gPSBmOwotICAgIH0gfAotICAgIEZVTkNUSU9OIG1heWJlX3NwYWNl
IGVycm9yIHsKLSAgICAgICAgQ1NTUGFyc2VyRnVuY3Rpb24qIGYgPSBwYXJzZXItPmNyZWF0ZUZs
b2F0aW5nRnVuY3Rpb24oKTsKLSAgICAgICAgZi0+bmFtZSA9ICQxOwotICAgICAgICBmLT5hcmdz
ID0gbnVsbHB0cjsKLSAgICAgICAgJCQuaWQgPSAwOwotICAgICAgICAkJC51bml0ID0gQ1NTUGFy
c2VyVmFsdWU6OkZ1bmN0aW9uOwotICAgICAgICAkJC5mdW5jdGlvbiA9IGY7Ci0gIH0KLSAgOwot
IAotY2FsY19mdW5jX3Rlcm06Ci0gIHVuYXJ5X3Rlcm0geyAkJCA9ICQxOyB9Ci0gIHwgVkFSRlVO
Q1RJT04gbWF5YmVfc3BhY2UgSURFTlQgJyknIG1heWJlX3NwYWNlIHsKLSNpZiBFTkFCTEUoQ1NT
X1ZBUklBQkxFUykKLSAgICAgICQkLmlkID0gMDsKLSAgICAgICQkLnN0cmluZyA9ICQzOwotICAg
ICAgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVkFSSUFCTEVfTkFNRTsKLSNlbmRp
ZgotICB9Ci0gIHwgdW5hcnlfb3BlcmF0b3IgdW5hcnlfdGVybSB7ICQkID0gJDI7ICQkLmZWYWx1
ZSAqPSAkMTsgfQotICA7Ci0KLWNhbGNfZnVuY19vcGVyYXRvcjoKLSAgICAnKycgV0hJVEVTUEFD
RSB7Ci0gICAgICAgICQkID0gJysnOwotICAgIH0KLSAgICB8ICctJyBXSElURVNQQUNFIHsKLSAg
ICAgICAgJCQgPSAnLSc7Ci0gICAgfQotICAgIHwgJyonIG1heWJlX3NwYWNlIHsKLSAgICAgICAg
JCQgPSAnKic7Ci0gICAgfQotICAgIHwgJy8nIG1heWJlX3NwYWNlIHsKLSAgICAgICAgJCQgPSAn
Lyc7Ci0gICAgfQotICA7Ci0KLWNhbGNfZnVuY19wYXJlbl9leHByOgotICAgICcoJyBtYXliZV9z
cGFjZSBjYWxjX2Z1bmNfZXhwciBtYXliZV9zcGFjZSAnKScgbWF5YmVfc3BhY2UgewotICAgICAg
ICBpZiAoJDMpIHsKLSAgICAgICAgICAgICQkID0gJDM7Ci0gICAgICAgICAgICBDU1NQYXJzZXJW
YWx1ZSB2OwotICAgICAgICAgICAgdi5pZCA9IDA7Ci0gICAgICAgICAgICB2LnVuaXQgPSBDU1NQ
YXJzZXJWYWx1ZTo6T3BlcmF0b3I7Ci0gICAgICAgICAgICB2LmlWYWx1ZSA9ICcoJzsKLSAgICAg
ICAgICAgICQkLT5pbnNlcnRWYWx1ZUF0KDAsIHYpOwotICAgICAgICAgICAgdi5pVmFsdWUgPSAn
KSc7Ci0gICAgICAgICAgICAkJC0+YWRkVmFsdWUodik7Ci0gICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgJCQgPSAwOwotICAgIH0KLQotY2FsY19mdW5jX2V4cHI6Ci0gICAgY2FsY19mdW5jX3Rl
cm0gbWF5YmVfc3BhY2UgewotICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdWYWx1
ZUxpc3QoKTsKLSAgICAgICAgJCQtPmFkZFZhbHVlKHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWUo
JDEpKTsKLSAgICB9Ci0gICAgfCBjYWxjX2Z1bmNfZXhwciBjYWxjX2Z1bmNfb3BlcmF0b3IgY2Fs
Y19mdW5jX3Rlcm0gewotICAgICAgICBpZiAoJDEgJiYgJDIpIHsKLSAgICAgICAgICAgICQkID0g
JDE7Ci0gICAgICAgICAgICBDU1NQYXJzZXJWYWx1ZSB2OwotICAgICAgICAgICAgdi5pZCA9IDA7
Ci0gICAgICAgICAgICB2LnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3I7Ci0gICAgICAg
ICAgICB2LmlWYWx1ZSA9ICQyOwotICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHYpOwotICAgICAg
ICAgICAgJCQtPmFkZFZhbHVlKHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWUoJDMpKTsKLSAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICAkJCA9IDA7Ci0KLSAgICB9Ci0gICAgfCBjYWxjX2Z1bmNf
ZXhwciBjYWxjX2Z1bmNfb3BlcmF0b3IgY2FsY19mdW5jX3BhcmVuX2V4cHIgewotICAgICAgICBp
ZiAoJDEgJiYgJDIgJiYgJDMpIHsKLSAgICAgICAgICAgICQkID0gJDE7Ci0gICAgICAgICAgICBD
U1NQYXJzZXJWYWx1ZSB2OwotICAgICAgICAgICAgdi5pZCA9IDA7Ci0gICAgICAgICAgICB2LnVu
aXQgPSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3I7Ci0gICAgICAgICAgICB2LmlWYWx1ZSA9ICQy
OwotICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHYpOwotICAgICAgICAgICAgJCQtPmV4dGVuZCgq
KCQzKSk7Ci0gICAgICAgIH0gZWxzZSAKLSAgICAgICAgICAgICQkID0gMDsKLSAgICB9Ci0gICAg
fCBjYWxjX2Z1bmNfcGFyZW5fZXhwcgotICAgIHwgY2FsY19mdW5jX2V4cHIgZXJyb3IgewotICAg
ICAgICAkJCA9IDA7Ci0gICAgfQotICA7Ci0KLWNhbGNfZnVuY19leHByX2xpc3Q6Ci0gICAgY2Fs
Y19mdW5jX2V4cHIgIHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICB9ICAgIAotICAgIHwgY2FsY19m
dW5jX2V4cHJfbGlzdCAnLCcgbWF5YmVfc3BhY2UgY2FsY19mdW5jX2V4cHIgewotICAgICAgICBp
ZiAoJDEgJiYgJDQpIHsKLSAgICAgICAgICAgICQkID0gJDE7Ci0gICAgICAgICAgICBDU1NQYXJz
ZXJWYWx1ZSB2OwotICAgICAgICAgICAgdi5pZCA9IDA7Ci0gICAgICAgICAgICB2LnVuaXQgPSBD
U1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3I7Ci0gICAgICAgICAgICB2LmlWYWx1ZSA9ICcsJzsKLSAg
ICAgICAgICAgICQkLT5hZGRWYWx1ZSh2KTsKLSAgICAgICAgICAgICQkLT5leHRlbmQoKigkNCkp
OwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICQkID0gMDsKLSAgICB9Ci0gICAgCi0KLWNh
bGNfZnVuY3Rpb246Ci0gICAgQ0FMQ0ZVTkNUSU9OIG1heWJlX3NwYWNlIGNhbGNfZnVuY19leHBy
ICcpJyBtYXliZV9zcGFjZSB7Ci0gICAgICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2Vy
LT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7Ci0gICAgICAgIGYtPm5hbWUgPSAkMTsKLSAgICAg
ICAgZi0+YXJncyA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQzKTsKLSAgICAgICAg
JCQuaWQgPSAwOwotICAgICAgICAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uOwot
ICAgICAgICAkJC5mdW5jdGlvbiA9IGY7Ci0gICAgfQotICAgIHwgQ0FMQ0ZVTkNUSU9OIG1heWJl
X3NwYWNlIGVycm9yIHsKLSAgICAgICAgWVlFUlJPUjsKLSAgICB9Ci0gICAgOwotCi0KLW1pbl9v
cl9tYXg6Ci0gICAgTUlORlVOQ1RJT04gewotICAgICAgICAkJCA9ICQxOwotICAgIH0KLSAgICB8
IE1BWEZVTkNUSU9OIHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICB9Ci0gICAgOwotCi1taW5fb3Jf
bWF4X2Z1bmN0aW9uOgotICAgIG1pbl9vcl9tYXggbWF5YmVfc3BhY2UgY2FsY19mdW5jX2V4cHJf
bGlzdCAnKScgbWF5YmVfc3BhY2UgewotICAgICAgICBDU1NQYXJzZXJGdW5jdGlvbiogZiA9IHBh
cnNlci0+Y3JlYXRlRmxvYXRpbmdGdW5jdGlvbigpOwotICAgICAgICBmLT5uYW1lID0gJDE7Ci0g
ICAgICAgIGYtPmFyZ3MgPSBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkMyk7Ci0gICAg
ICAgICQkLmlkID0gMDsKLSAgICAgICAgJCQudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlv
bjsKLSAgICAgICAgJCQuZnVuY3Rpb24gPSBmOwotICAgIH0gCi0gICAgfCBtaW5fb3JfbWF4IG1h
eWJlX3NwYWNlIGVycm9yIHsKLSAgICAgICAgWVlFUlJPUjsKLSAgICB9Ci0gICAgOwotCi0vKiBl
cnJvciBoYW5kbGluZyBydWxlcyAqLwotCi1zYXZlX2Jsb2NrOgotICAgIGNsb3NpbmdfYnJhY2Ug
ewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotICB8IGVycm9yIGNsb3NpbmdfYnJhY2UgewotICAg
ICAgICAkJCA9IDA7Ci0gICAgfQotICAgIDsKLQotaW52YWxpZF9hdDoKLSAgICBBVEtFWVdPUkQg
ZXJyb3IgaW52YWxpZF9ibG9jayB7Ci0gICAgICAgICQkID0gMDsKLSAgICB9Ci0gIHwgQVRLRVlX
T1JEIGVycm9yICc7JyB7Ci0gICAgICAgICQkID0gMDsKLSAgICB9Ci0gICAgOwotCi1pbnZhbGlk
X3J1bGU6Ci0gICAgZXJyb3IgaW52YWxpZF9ibG9jayB7Ci0gICAgICAgICQkID0gMDsKLSAgICB9
Ci0KLS8qCi0gIFNlZW1zIGxpa2UgdGhlIHR3byBydWxlcyBiZWxvdyBhcmUgdHJ5aW5nIHRvbyBt
dWNoIGFuZCB2aW9sYXRpbmcKLSAgaHR0cDovL3d3dy5oaXhpZS5jaC90ZXN0cy9ldmlsL21peGVk
L2Nzc2Vycm9yaGFuZGxpbmcuaHRtbAotCi0gIHwgZXJyb3IgJzsnIHsKLSAgICAgICAgJCQgPSAw
OwotICAgIH0KLSAgfCBlcnJvciAnfScgewotICAgICAgICAkJCA9IDA7Ci0gICAgfQotKi8KLSAg
ICA7Ci0KLWludmFsaWRfYmxvY2s6Ci0gICAgJ3snIGVycm9yIGludmFsaWRfYmxvY2tfbGlzdCBl
cnJvciBjbG9zaW5nX2JyYWNlIHsKLSAgICAgICAgcGFyc2VyLT5pbnZhbGlkQmxvY2tIaXQoKTsK
LSAgICB9Ci0gIHwgJ3snIGVycm9yIGNsb3NpbmdfYnJhY2UgewotICAgICAgICBwYXJzZXItPmlu
dmFsaWRCbG9ja0hpdCgpOwotICAgIH0KLSAgICA7Ci0KLWludmFsaWRfYmxvY2tfbGlzdDoKLSAg
ICBpbnZhbGlkX2Jsb2NrCi0gIHwgaW52YWxpZF9ibG9ja19saXN0IGVycm9yIGludmFsaWRfYmxv
Y2sKLTsKLQotJSUKLQotI2lmIFlZREVCVUcgPiAwCi1zdGF0aWMgdm9pZCBwcmludF90b2tlbl92
YWx1ZShGSUxFICogeXlvdXRwdXQsIGludCB5eXR5cGUsIFlZU1RZUEUgY29uc3QgJnl5dmFsdWUp
Ci17Ci0gICAgc3dpdGNoICh5eXR5cGUpIHsKLSAgICBjYXNlIElERU5UOgotICAgIGNhc2UgU1RS
SU5HOgotICAgIGNhc2UgTlRIOgotICAgIGNhc2UgSEVYOgotICAgIGNhc2UgSURTRUw6Ci0gICAg
Y2FzZSBESU1FTjoKLSAgICBjYXNlIElOVkFMSURESU1FTjoKLSAgICBjYXNlIFVSSToKLSAgICBj
YXNlIEZVTkNUSU9OOgotICAgIGNhc2UgQU5ZRlVOQ1RJT046Ci0gICAgY2FzZSBOT1RGVU5DVElP
TjoKLSAgICBjYXNlIENBTENGVU5DVElPTjoKLSAgICBjYXNlIE1JTkZVTkNUSU9OOgotICAgIGNh
c2UgTUFYRlVOQ1RJT046Ci0gICAgY2FzZSBWQVJfREVGSU5JVElPTjoKLSAgICBjYXNlIFVOSUNP
REVSQU5HRToKLSAgICAgICAgWVlGUFJJTlRGKHl5b3V0cHV0LCAiJXMiLCBTdHJpbmcoeXl2YWx1
ZS5zdHJpbmcpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0Ogot
ICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55
LmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjczM2FlOGVkYTYyZTY0ZjAzN2JmZDAwYjVhODQxNzhkZjI3NmJlZWQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCkBA
IC0wLDAgKzEsMTcwMyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDItMjAwMyBMYXJzIEtu
b2xsIChrbm9sbEBrZGUub3JnKQorICogIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkK
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICog
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rv
biwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICoKKyAqLworCislcHVyZV9wYXJzZXIKKworJXBhcnNl
LXBhcmFtIHsgQ1NTUGFyc2VyKiBwYXJzZXIgfQorJWxleC1wYXJhbSB7IENTU1BhcnNlciogcGFy
c2VyIH0KKworJXVuaW9uIHsKKyAgICBib29sIGJvb2xlYW47CisgICAgY2hhciBjaGFyYWN0ZXI7
CisgICAgaW50IGludGVnZXI7CisgICAgZG91YmxlIG51bWJlcjsKKyAgICBDU1NQYXJzZXJTdHJp
bmcgc3RyaW5nOworCisgICAgU3R5bGVSdWxlQmFzZSogcnVsZTsKKyAgICBWZWN0b3I8UmVmUHRy
PFN0eWxlUnVsZUJhc2U+ID4qIHJ1bGVMaXN0OworICAgIENTU1BhcnNlclNlbGVjdG9yKiBzZWxl
Y3RvcjsKKyAgICBDU1NTZWxlY3RvclZlY3Rvciogc2VsZWN0b3JMaXN0OworICAgIENTU1NlbGVj
dG9yOjpNYXJnaW5Cb3hUeXBlIG1hcmdpbkJveDsKKyAgICBDU1NTZWxlY3Rvcjo6UmVsYXRpb24g
cmVsYXRpb247CisgICAgTWVkaWFRdWVyeVNldCogbWVkaWFMaXN0OworICAgIE1lZGlhUXVlcnkq
IG1lZGlhUXVlcnk7CisgICAgTWVkaWFRdWVyeTo6UmVzdHJpY3RvciBtZWRpYVF1ZXJ5UmVzdHJp
Y3RvcjsKKyAgICBNZWRpYVF1ZXJ5RXhwKiBtZWRpYVF1ZXJ5RXhwOworICAgIENTU1BhcnNlclZh
bHVlIHZhbHVlOworICAgIENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVMaXN0OworICAgIFZlY3Rv
cjxPd25QdHI8TWVkaWFRdWVyeUV4cD4gPiogbWVkaWFRdWVyeUV4cExpc3Q7CisgICAgU3R5bGVL
ZXlmcmFtZSoga2V5ZnJhbWU7CisgICAgVmVjdG9yPFJlZlB0cjxTdHlsZUtleWZyYW1lPiA+KiBr
ZXlmcmFtZVJ1bGVMaXN0OworICAgIGZsb2F0IHZhbDsKKyAgICBDU1NQcm9wZXJ0eUlEIGlkOwor
fQorCisleworCitzdGF0aWMgaW5saW5lIGludCBjc3N5eWVycm9yKHZvaWQqLCBjb25zdCBjaGFy
KikKK3sKKyAgICByZXR1cm4gMTsKK30KKworJX0KKworJWV4cGVjdCA2NQorCislbm9uYXNzb2Mg
TE9XRVNUX1BSRUMKKworJWxlZnQgVU5JTVBPUlRBTlRfVE9LCisKKyV0b2tlbiBXSElURVNQQUNF
IFNHTUxfQ0QKKyV0b2tlbiBUT0tFTl9FT0YgMAorCisldG9rZW4gSU5DTFVERVMKKyV0b2tlbiBE
QVNITUFUQ0gKKyV0b2tlbiBCRUdJTlNXSVRICisldG9rZW4gRU5EU1dJVEgKKyV0b2tlbiBDT05U
QUlOUworCisldG9rZW4gPHN0cmluZz4gU1RSSU5HCislcmlnaHQgPHN0cmluZz4gSURFTlQKKyV0
b2tlbiA8c3RyaW5nPiBOVEgKKworJW5vbmFzc29jIDxzdHJpbmc+IEhFWAorJW5vbmFzc29jIDxz
dHJpbmc+IElEU0VMCislbm9uYXNzb2MgJzonCislbm9uYXNzb2MgJy4nCislbm9uYXNzb2MgJ1sn
Cislbm9uYXNzb2MgPHN0cmluZz4gJyonCislbm9uYXNzb2MgZXJyb3IKKyVsZWZ0ICd8JworCisl
dG9rZW4gSU1QT1JUX1NZTQorJXRva2VuIFBBR0VfU1lNCisldG9rZW4gTUVESUFfU1lNCisldG9r
ZW4gRk9OVF9GQUNFX1NZTQorJXRva2VuIENIQVJTRVRfU1lNCisldG9rZW4gTkFNRVNQQUNFX1NZ
TQorJXRva2VuIFZBUkZVTkNUSU9OCisldG9rZW4gV0VCS0lUX1JVTEVfU1lNCisldG9rZW4gV0VC
S0lUX0RFQ0xTX1NZTQorJXRva2VuIFdFQktJVF9LRVlGUkFNRV9SVUxFX1NZTQorJXRva2VuIFdF
QktJVF9LRVlGUkFNRVNfU1lNCisldG9rZW4gV0VCS0lUX1ZBTFVFX1NZTQorJXRva2VuIFdFQktJ
VF9NRURJQVFVRVJZX1NZTQorJXRva2VuIFdFQktJVF9TRUxFQ1RPUl9TWU0KKyV0b2tlbiBXRUJL
SVRfUkVHSU9OX1JVTEVfU1lNCisldG9rZW4gPG1hcmdpbkJveD4gVE9QTEVGVENPUk5FUl9TWU0K
KyV0b2tlbiA8bWFyZ2luQm94PiBUT1BMRUZUX1NZTQorJXRva2VuIDxtYXJnaW5Cb3g+IFRPUENF
TlRFUl9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBUT1BSSUdIVF9TWU0KKyV0b2tlbiA8bWFyZ2lu
Qm94PiBUT1BSSUdIVENPUk5FUl9TWU0KKyV0b2tlbiA8bWFyZ2luQm94PiBCT1RUT01MRUZUQ09S
TkVSX1NZTQorJXRva2VuIDxtYXJnaW5Cb3g+IEJPVFRPTUxFRlRfU1lNCisldG9rZW4gPG1hcmdp
bkJveD4gQk9UVE9NQ0VOVEVSX1NZTQorJXRva2VuIDxtYXJnaW5Cb3g+IEJPVFRPTVJJR0hUX1NZ
TQorJXRva2VuIDxtYXJnaW5Cb3g+IEJPVFRPTVJJR0hUQ09STkVSX1NZTQorJXRva2VuIDxtYXJn
aW5Cb3g+IExFRlRUT1BfU1lNCisldG9rZW4gPG1hcmdpbkJveD4gTEVGVE1JRERMRV9TWU0KKyV0
b2tlbiA8bWFyZ2luQm94PiBMRUZUQk9UVE9NX1NZTQorJXRva2VuIDxtYXJnaW5Cb3g+IFJJR0hU
VE9QX1NZTQorJXRva2VuIDxtYXJnaW5Cb3g+IFJJR0hUTUlERExFX1NZTQorJXRva2VuIDxtYXJn
aW5Cb3g+IFJJR0hUQk9UVE9NX1NZTQorCisldG9rZW4gQVRLRVlXT1JECisKKyV0b2tlbiBJTVBP
UlRBTlRfU1lNCisldG9rZW4gTUVESUFfT05MWQorJXRva2VuIE1FRElBX05PVAorJXRva2VuIE1F
RElBX0FORAorCisldG9rZW4gPG51bWJlcj4gUkVNUworJXRva2VuIDxudW1iZXI+IFFFTVMKKyV0
b2tlbiA8bnVtYmVyPiBFTVMKKyV0b2tlbiA8bnVtYmVyPiBFWFMKKyV0b2tlbiA8bnVtYmVyPiBQ
WFMKKyV0b2tlbiA8bnVtYmVyPiBDTVMKKyV0b2tlbiA8bnVtYmVyPiBNTVMKKyV0b2tlbiA8bnVt
YmVyPiBJTlMKKyV0b2tlbiA8bnVtYmVyPiBQVFMKKyV0b2tlbiA8bnVtYmVyPiBQQ1MKKyV0b2tl
biA8bnVtYmVyPiBERUdTCisldG9rZW4gPG51bWJlcj4gUkFEUworJXRva2VuIDxudW1iZXI+IEdS
QURTCisldG9rZW4gPG51bWJlcj4gVFVSTlMKKyV0b2tlbiA8bnVtYmVyPiBNU0VDUworJXRva2Vu
IDxudW1iZXI+IFNFQ1MKKyV0b2tlbiA8bnVtYmVyPiBIRVJUWgorJXRva2VuIDxudW1iZXI+IEtI
RVJUWgorJXRva2VuIDxzdHJpbmc+IERJTUVOCisldG9rZW4gPHN0cmluZz4gSU5WQUxJRERJTUVO
CisldG9rZW4gPG51bWJlcj4gUEVSQ0VOVEFHRQorJXRva2VuIDxudW1iZXI+IEZMT0FUVE9LRU4K
KyV0b2tlbiA8bnVtYmVyPiBJTlRFR0VSCisldG9rZW4gPG51bWJlcj4gVlcKKyV0b2tlbiA8bnVt
YmVyPiBWSAorJXRva2VuIDxudW1iZXI+IFZNSU4KKyV0b2tlbiA8bnVtYmVyPiBEUFBYCisldG9r
ZW4gPG51bWJlcj4gRFBJCisldG9rZW4gPG51bWJlcj4gRFBDTQorCisldG9rZW4gPHN0cmluZz4g
VVJJCisldG9rZW4gPHN0cmluZz4gRlVOQ1RJT04KKyV0b2tlbiA8c3RyaW5nPiBBTllGVU5DVElP
TgorJXRva2VuIDxzdHJpbmc+IE5PVEZVTkNUSU9OCisldG9rZW4gPHN0cmluZz4gQ0FMQ0ZVTkNU
SU9OCisldG9rZW4gPHN0cmluZz4gTUlORlVOQ1RJT04KKyV0b2tlbiA8c3RyaW5nPiBNQVhGVU5D
VElPTgorJXRva2VuIDxzdHJpbmc+IFZBUl9ERUZJTklUSU9OCisKKyV0b2tlbiA8c3RyaW5nPiBV
TklDT0RFUkFOR0UKKworJXR5cGUgPHJlbGF0aW9uPiBjb21iaW5hdG9yCisKKyV0eXBlIDxydWxl
PiBjaGFyc2V0CisldHlwZSA8cnVsZT4gaWdub3JlZF9jaGFyc2V0CisldHlwZSA8cnVsZT4gcnVs
ZXNldAorJXR5cGUgPHJ1bGU+IG1lZGlhCisldHlwZSA8cnVsZT4gaW1wb3J0CisldHlwZSA8cnVs
ZT4gbmFtZXNwYWNlCisldHlwZSA8cnVsZT4gcGFnZQorJXR5cGUgPHJ1bGU+IG1hcmdpbl9ib3gK
KyV0eXBlIDxydWxlPiBmb250X2ZhY2UKKyV0eXBlIDxydWxlPiBrZXlmcmFtZXMKKyV0eXBlIDxy
dWxlPiBpbnZhbGlkX3J1bGUKKyV0eXBlIDxydWxlPiBzYXZlX2Jsb2NrCisldHlwZSA8cnVsZT4g
aW52YWxpZF9hdAorJXR5cGUgPHJ1bGU+IHJ1bGUKKyV0eXBlIDxydWxlPiB2YWxpZF9ydWxlCisl
dHlwZSA8cnVsZUxpc3Q+IGJsb2NrX3J1bGVfbGlzdCAKKyV0eXBlIDxydWxlPiBibG9ja19ydWxl
CisldHlwZSA8cnVsZT4gYmxvY2tfdmFsaWRfcnVsZQorJXR5cGUgPHJ1bGU+IHJlZ2lvbgorCisl
dHlwZSA8c3RyaW5nPiBtYXliZV9uc19wcmVmaXgKKworJXR5cGUgPHN0cmluZz4gbmFtZXNwYWNl
X3NlbGVjdG9yCisKKyV0eXBlIDxzdHJpbmc+IHN0cmluZ19vcl91cmkKKyV0eXBlIDxzdHJpbmc+
IGlkZW50X29yX3N0cmluZworJXR5cGUgPHN0cmluZz4gbWVkaXVtCisldHlwZSA8bWFyZ2luQm94
PiBtYXJnaW5fc3ltCisKKyV0eXBlIDxzdHJpbmc+IG1lZGlhX2ZlYXR1cmUKKyV0eXBlIDxtZWRp
YUxpc3Q+IG1lZGlhX2xpc3QKKyV0eXBlIDxtZWRpYUxpc3Q+IG1heWJlX21lZGlhX2xpc3QKKyV0
eXBlIDxtZWRpYVF1ZXJ5PiBtZWRpYV9xdWVyeQorJXR5cGUgPG1lZGlhUXVlcnlSZXN0cmljdG9y
PiBtYXliZV9tZWRpYV9yZXN0cmljdG9yCisldHlwZSA8dmFsdWVMaXN0PiBtYXliZV9tZWRpYV92
YWx1ZQorJXR5cGUgPG1lZGlhUXVlcnlFeHA+IG1lZGlhX3F1ZXJ5X2V4cAorJXR5cGUgPG1lZGlh
UXVlcnlFeHBMaXN0PiBtZWRpYV9xdWVyeV9leHBfbGlzdAorJXR5cGUgPG1lZGlhUXVlcnlFeHBM
aXN0PiBtYXliZV9hbmRfbWVkaWFfcXVlcnlfZXhwX2xpc3QKKworJXR5cGUgPHN0cmluZz4ga2V5
ZnJhbWVfbmFtZQorJXR5cGUgPGtleWZyYW1lPiBrZXlmcmFtZV9ydWxlCisldHlwZSA8a2V5ZnJh
bWVSdWxlTGlzdD4ga2V5ZnJhbWVzX3J1bGUKKyV0eXBlIDx2YWx1ZUxpc3Q+IGtleV9saXN0Cisl
dHlwZSA8dmFsdWU+IGtleQorCisldHlwZSA8aWQ+IHByb3BlcnR5CisKKyV0eXBlIDxzZWxlY3Rv
cj4gc3BlY2lmaWVyCisldHlwZSA8c2VsZWN0b3I+IHNwZWNpZmllcl9saXN0CisldHlwZSA8c2Vs
ZWN0b3I+IHNpbXBsZV9zZWxlY3RvcgorJXR5cGUgPHNlbGVjdG9yPiBzZWxlY3RvcgorJXR5cGUg
PHNlbGVjdG9yTGlzdD4gc2VsZWN0b3JfbGlzdAorJXR5cGUgPHNlbGVjdG9yTGlzdD4gc2ltcGxl
X3NlbGVjdG9yX2xpc3QKKyV0eXBlIDxzZWxlY3Rvckxpc3Q+IHJlZ2lvbl9zZWxlY3RvcgorJXR5
cGUgPHNlbGVjdG9yPiBzZWxlY3Rvcl93aXRoX3RyYWlsaW5nX3doaXRlc3BhY2UKKyV0eXBlIDxz
ZWxlY3Rvcj4gY2xhc3MKKyV0eXBlIDxzZWxlY3Rvcj4gYXR0cmliCisldHlwZSA8c2VsZWN0b3I+
IHBzZXVkbworJXR5cGUgPHNlbGVjdG9yPiBwc2V1ZG9fcGFnZQorJXR5cGUgPHNlbGVjdG9yPiBw
YWdlX3NlbGVjdG9yCisKKyV0eXBlIDxib29sZWFuPiBkZWNsYXJhdGlvbl9saXN0CisldHlwZSA8
Ym9vbGVhbj4gZGVjbF9saXN0CisldHlwZSA8Ym9vbGVhbj4gZGVjbGFyYXRpb24KKyV0eXBlIDxi
b29sZWFuPiBkZWNsYXJhdGlvbnNfYW5kX21hcmdpbnMKKworJXR5cGUgPGJvb2xlYW4+IHByaW8K
KworJXR5cGUgPGludGVnZXI+IG1hdGNoCisldHlwZSA8aW50ZWdlcj4gdW5hcnlfb3BlcmF0b3IK
KyV0eXBlIDxpbnRlZ2VyPiBtYXliZV91bmFyeV9vcGVyYXRvcgorJXR5cGUgPGNoYXJhY3Rlcj4g
b3BlcmF0b3IKKworJXR5cGUgPHZhbHVlTGlzdD4gZXhwcgorJXR5cGUgPHZhbHVlPiB0ZXJtCisl
dHlwZSA8dmFsdWU+IHVuYXJ5X3Rlcm0KKyV0eXBlIDx2YWx1ZT4gZnVuY3Rpb24KKyV0eXBlIDx2
YWx1ZT4gY2FsY19mdW5jX3Rlcm0KKyV0eXBlIDxjaGFyYWN0ZXI+IGNhbGNfZnVuY19vcGVyYXRv
cgorJXR5cGUgPHZhbHVlTGlzdD4gY2FsY19mdW5jX2V4cHIKKyV0eXBlIDx2YWx1ZUxpc3Q+IGNh
bGNfZnVuY19leHByX2xpc3QKKyV0eXBlIDx2YWx1ZUxpc3Q+IGNhbGNfZnVuY19wYXJlbl9leHBy
CisldHlwZSA8dmFsdWU+IGNhbGNfZnVuY3Rpb24KKyV0eXBlIDxzdHJpbmc+IG1pbl9vcl9tYXgK
KyV0eXBlIDx2YWx1ZT4gbWluX29yX21heF9mdW5jdGlvbgorCisldHlwZSA8c3RyaW5nPiBlbGVt
ZW50X25hbWUKKyV0eXBlIDxzdHJpbmc+IGF0dHJfbmFtZQorCislJQorCitzdHlsZXNoZWV0Ogor
ICAgIG1heWJlX3NwYWNlIG1heWJlX2NoYXJzZXQgbWF5YmVfc2dtbCBydWxlX2xpc3QKKyAgfCB3
ZWJraXRfcnVsZSBtYXliZV9zcGFjZQorICB8IHdlYmtpdF9kZWNscyBtYXliZV9zcGFjZQorICB8
IHdlYmtpdF92YWx1ZSBtYXliZV9zcGFjZQorICB8IHdlYmtpdF9tZWRpYXF1ZXJ5IG1heWJlX3Nw
YWNlCisgIHwgd2Via2l0X3NlbGVjdG9yIG1heWJlX3NwYWNlCisgIHwgd2Via2l0X2tleWZyYW1l
X3J1bGUgbWF5YmVfc3BhY2UKKyAgOworCit3ZWJraXRfcnVsZToKKyAgICBXRUJLSVRfUlVMRV9T
WU0gJ3snIG1heWJlX3NwYWNlIHZhbGlkX3J1bGUgbWF5YmVfc3BhY2UgJ30nIHsKKyAgICAgICAg
cGFyc2VyLT5tX3J1bGUgPSAkNDsKKyAgICB9Cis7CisKK3dlYmtpdF9rZXlmcmFtZV9ydWxlOgor
ICAgIFdFQktJVF9LRVlGUkFNRV9SVUxFX1NZTSAneycgbWF5YmVfc3BhY2Uga2V5ZnJhbWVfcnVs
ZSBtYXliZV9zcGFjZSAnfScgeworICAgICAgICBwYXJzZXItPm1fa2V5ZnJhbWUgPSAkNDsKKyAg
ICB9Cis7CisKK3dlYmtpdF9kZWNsczoKKyAgICBXRUJLSVRfREVDTFNfU1lNICd7JyBtYXliZV9z
cGFjZV9iZWZvcmVfZGVjbGFyYXRpb24gZGVjbGFyYXRpb25fbGlzdCAnfScgeworICAgICAgICAv
KiBjYW4gYmUgZW1wdHkgKi8KKyAgICB9Cis7CisKK3dlYmtpdF92YWx1ZToKKyAgICBXRUJLSVRf
VkFMVUVfU1lNICd7JyBtYXliZV9zcGFjZSBleHByICd9JyB7CisgICAgICAgIGlmICgkNCkgewor
ICAgICAgICAgICAgcGFyc2VyLT5tX3ZhbHVlTGlzdCA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFs
dWVMaXN0KCQ0KTsKKyAgICAgICAgICAgIGludCBvbGRQYXJzZWRQcm9wZXJ0aWVzID0gcGFyc2Vy
LT5tX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VyLT5w
YXJzZVZhbHVlKHBhcnNlci0+bV9pZCwgcGFyc2VyLT5tX2ltcG9ydGFudCkpCisgICAgICAgICAg
ICAgICAgcGFyc2VyLT5yb2xsYmFja0xhc3RQcm9wZXJ0aWVzKHBhcnNlci0+bV9wYXJzZWRQcm9w
ZXJ0aWVzLT5zaXplKCkgLSBvbGRQYXJzZWRQcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgIHBhcnNl
ci0+bV92YWx1ZUxpc3QgPSBudWxscHRyOworICAgICAgICB9CisgICAgfQorOworCit3ZWJraXRf
bWVkaWFxdWVyeToKKyAgICAgV0VCS0lUX01FRElBUVVFUllfU1lNIFdISVRFU1BBQ0UgbWF5YmVf
c3BhY2UgbWVkaWFfcXVlcnkgJ30nIHsKKyAgICAgICAgIHBhcnNlci0+bV9tZWRpYVF1ZXJ5ID0g
cGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5KCQ0KTsKKyAgICAgfQorOworCit3ZWJraXRf
c2VsZWN0b3I6CisgICAgV0VCS0lUX1NFTEVDVE9SX1NZTSAneycgbWF5YmVfc3BhY2Ugc2VsZWN0
b3JfbGlzdCAnfScgeworICAgICAgICBpZiAoJDQpIHsKKyAgICAgICAgICAgIGlmIChwYXJzZXIt
Pm1fc2VsZWN0b3JMaXN0Rm9yUGFyc2VTZWxlY3RvcikKKyAgICAgICAgICAgICAgICBwYXJzZXIt
Pm1fc2VsZWN0b3JMaXN0Rm9yUGFyc2VTZWxlY3Rvci0+YWRvcHRTZWxlY3RvclZlY3RvcigqJDQp
OworICAgICAgICB9CisgICAgfQorOworCittYXliZV9zcGFjZToKKyAgICAvKiBlbXB0eSAqLyAl
cHJlYyBVTklNUE9SVEFOVF9UT0sKKyAgfCBtYXliZV9zcGFjZSBXSElURVNQQUNFCisgIDsKKwor
bWF5YmVfc2dtbDoKKyAgICAvKiBlbXB0eSAqLworICB8IG1heWJlX3NnbWwgU0dNTF9DRAorICB8
IG1heWJlX3NnbWwgV0hJVEVTUEFDRQorICA7CisKK21heWJlX2NoYXJzZXQ6CisgICAvKiBlbXB0
eSAqLworICB8IGNoYXJzZXQgeworICB9CisgIDsKKworY2xvc2luZ19icmFjZToKKyAgICAnfScK
KyAgfCAlcHJlYyBMT1dFU1RfUFJFQyBUT0tFTl9FT0YKKyAgOworCitjaGFyc2V0OgorICBDSEFS
U0VUX1NZTSBtYXliZV9zcGFjZSBTVFJJTkcgbWF5YmVfc3BhY2UgJzsnIHsKKyAgICAgaWYgKHBh
cnNlci0+bV9zdHlsZVNoZWV0KQorICAgICAgICAgcGFyc2VyLT5tX3N0eWxlU2hlZXQtPnBhcnNl
clNldEVuY29kaW5nRnJvbUNoYXJzZXRSdWxlKCQzKTsKKyAgICAgaWYgKHBhcnNlci0+aXNFeHRy
YWN0aW5nU291cmNlRGF0YSgpICYmIHBhcnNlci0+bV9jdXJyZW50UnVsZURhdGFTdGFjay0+aXNF
bXB0eSgpICYmIHBhcnNlci0+bV9ydWxlU291cmNlRGF0YVJlc3VsdCkKKyAgICAgICAgIHBhcnNl
ci0+YWRkTmV3UnVsZVRvU291cmNlVHJlZShDU1NSdWxlU291cmNlRGF0YTo6Y3JlYXRlVW5rbm93
bigpKTsKKyAgICAgJCQgPSAwOworICB9CisgIHwgQ0hBUlNFVF9TWU0gZXJyb3IgaW52YWxpZF9i
bG9jayB7CisgIH0KKyAgfCBDSEFSU0VUX1NZTSBlcnJvciAnOycgeworICB9Cis7CisKK2lnbm9y
ZWRfY2hhcnNldDoKKyAgICBDSEFSU0VUX1NZTSBtYXliZV9zcGFjZSBTVFJJTkcgbWF5YmVfc3Bh
Y2UgJzsnIHsKKyAgICAgICAgLy8gSWdub3JlIGFueSBAY2hhcnNldCBydWxlIG5vdCBhdCB0aGUg
YmVnaW5uaW5nIG9mIHRoZSBzdHlsZSBzaGVldC4KKyAgICAgICAgJCQgPSAwOworICAgIH0KKyAg
ICB8IENIQVJTRVRfU1lNIG1heWJlX3NwYWNlICc7JyB7CisgICAgICAgICQkID0gMDsKKyAgICB9
Cis7CisKK3J1bGVfbGlzdDoKKyAgIC8qIGVtcHR5ICovCisgfCBydWxlX2xpc3QgcnVsZSBtYXli
ZV9zZ21sIHsKKyAgICAgaWYgKCQyICYmIHBhcnNlci0+bV9zdHlsZVNoZWV0KQorICAgICAgICAg
cGFyc2VyLT5tX3N0eWxlU2hlZXQtPnBhcnNlckFwcGVuZFJ1bGUoJDIpOworIH0KKyA7CisKK3Zh
bGlkX3J1bGU6CisgICAgcnVsZXNldAorICB8IG1lZGlhCisgIHwgcGFnZQorICB8IGZvbnRfZmFj
ZQorICB8IGtleWZyYW1lcworICB8IG5hbWVzcGFjZQorICB8IGltcG9ydAorICB8IHJlZ2lvbgor
ICA7CisKK3J1bGU6CisgICAgdmFsaWRfcnVsZSB7CisgICAgICAgIHBhcnNlci0+bV9oYWRTeW50
YWN0aWNhbGx5VmFsaWRDU1NSdWxlID0gdHJ1ZTsKKyAgICB9CisgIHwgaWdub3JlZF9jaGFyc2V0
CisgIHwgaW52YWxpZF9ydWxlCisgIHwgaW52YWxpZF9hdAorICA7CisKK2Jsb2NrX3J1bGVfbGlz
dDogCisgICAgLyogZW1wdHkgKi8geyAkJCA9IDA7IH0KKyAgfCBibG9ja19ydWxlX2xpc3QgYmxv
Y2tfcnVsZSBtYXliZV9zZ21sIHsKKyAgICAgICQkID0gJDE7CisgICAgICBpZiAoJDIpIHsKKyAg
ICAgICAgICBpZiAoISQkKQorICAgICAgICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlUnVsZUxp
c3QoKTsKKyAgICAgICAgICAkJC0+YXBwZW5kKCQyKTsKKyAgICAgIH0KKyAgfQorICA7CisKK2Js
b2NrX3ZhbGlkX3J1bGU6CisgICAgcnVsZXNldAorICB8IHBhZ2UKKyAgfCBmb250X2ZhY2UKKyAg
fCBrZXlmcmFtZXMKKyAgOworCitibG9ja19ydWxlOgorICAgIGJsb2NrX3ZhbGlkX3J1bGUKKyAg
fCBpbnZhbGlkX3J1bGUKKyAgfCBpbnZhbGlkX2F0CisgIHwgbmFtZXNwYWNlCisgIHwgaW1wb3J0
CisgIHwgbWVkaWEKKyAgOworCithdF9pbXBvcnRfaGVhZGVyX2VuZF9tYXliZV9zcGFjZToKKyAg
ICBtYXliZV9zcGFjZSB7CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJFbmQoKTsKKyAg
ICAgICAgcGFyc2VyLT5tYXJrUnVsZUJvZHlTdGFydCgpOworICAgIH0KKyAgICA7CisKK2JlZm9y
ZV9pbXBvcnRfcnVsZToKKyAgICAvKiBlbXB0eSAqLyB7CisgICAgICAgIHBhcnNlci0+bWFya1J1
bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6SU1QT1JUX1JVTEUpOworICAgIH0KKyAg
ICA7CisKK2ltcG9ydDoKKyAgICBiZWZvcmVfaW1wb3J0X3J1bGUgSU1QT1JUX1NZTSBhdF9pbXBv
cnRfaGVhZGVyX2VuZF9tYXliZV9zcGFjZSBzdHJpbmdfb3JfdXJpIG1heWJlX3NwYWNlIG1heWJl
X21lZGlhX2xpc3QgJzsnIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUltcG9ydFJ1bGUo
JDQsICQ2KTsKKyAgICB9CisgIHwgYmVmb3JlX2ltcG9ydF9ydWxlIElNUE9SVF9TWU0gYXRfaW1w
b3J0X2hlYWRlcl9lbmRfbWF5YmVfc3BhY2Ugc3RyaW5nX29yX3VyaSBtYXliZV9zcGFjZSBtYXli
ZV9tZWRpYV9saXN0IFRPS0VOX0VPRiB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVJbXBv
cnRSdWxlKCQ0LCAkNik7CisgICAgfQorICB8IGJlZm9yZV9pbXBvcnRfcnVsZSBJTVBPUlRfU1lN
IGF0X2ltcG9ydF9oZWFkZXJfZW5kX21heWJlX3NwYWNlIHN0cmluZ19vcl91cmkgbWF5YmVfc3Bh
Y2UgbWF5YmVfbWVkaWFfbGlzdCBpbnZhbGlkX2Jsb2NrIHsKKyAgICAgICAgJCQgPSAwOworICAg
ICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7CisgICAgfQorICB8IGJlZm9yZV9pbXBvcnRfcnVs
ZSBJTVBPUlRfU1lNIGVycm9yICc7JyB7CisgICAgICAgICQkID0gMDsKKyAgICAgICAgcGFyc2Vy
LT5wb3BSdWxlRGF0YSgpOworICAgIH0KKyAgfCBiZWZvcmVfaW1wb3J0X3J1bGUgSU1QT1JUX1NZ
TSBlcnJvciBpbnZhbGlkX2Jsb2NrIHsKKyAgICAgICAgJCQgPSAwOworICAgICAgICBwYXJzZXIt
PnBvcFJ1bGVEYXRhKCk7CisgICAgfQorICA7CisKK25hbWVzcGFjZToKK05BTUVTUEFDRV9TWU0g
bWF5YmVfc3BhY2UgbWF5YmVfbnNfcHJlZml4IHN0cmluZ19vcl91cmkgbWF5YmVfc3BhY2UgJzsn
IHsKKyAgICBwYXJzZXItPmFkZE5hbWVzcGFjZSgkMywgJDQpOworICAgICQkID0gMDsKK30KK3wg
TkFNRVNQQUNFX1NZTSBtYXliZV9zcGFjZSBtYXliZV9uc19wcmVmaXggc3RyaW5nX29yX3VyaSBt
YXliZV9zcGFjZSBpbnZhbGlkX2Jsb2NrIHsKKyAgICAkJCA9IDA7Cit9Cit8IE5BTUVTUEFDRV9T
WU0gZXJyb3IgaW52YWxpZF9ibG9jayB7CisgICAgJCQgPSAwOworfQorfCBOQU1FU1BBQ0VfU1lN
IGVycm9yICc7JyB7CisgICAgJCQgPSAwOworfQorOworCittYXliZV9uc19wcmVmaXg6CisvKiBl
bXB0eSAqLyB7ICQkLmNsZWFyKCk7IH0KK3wgSURFTlQgbWF5YmVfc3BhY2UgeyAkJCA9ICQxOyB9
Cis7CisKK3N0cmluZ19vcl91cmk6CitTVFJJTkcKK3wgVVJJCis7CisKK21lZGlhX2ZlYXR1cmU6
CisgICAgSURFTlQgbWF5YmVfc3BhY2UgeworICAgICAgICAkJCA9ICQxOworICAgIH0KKyAgICA7
CisKK21heWJlX21lZGlhX3ZhbHVlOgorICAgIC8qZW1wdHkqLyB7CisgICAgICAgICQkID0gMDsK
KyAgICB9CisgICAgfCAnOicgbWF5YmVfc3BhY2UgZXhwciBtYXliZV9zcGFjZSB7CisgICAgICAg
ICQkID0gJDM7CisgICAgfQorICAgIDsKKworbWVkaWFfcXVlcnlfZXhwOgorICAgIG1heWJlX21l
ZGlhX3Jlc3RyaWN0b3IgbWF5YmVfc3BhY2UgJygnIG1heWJlX3NwYWNlIG1lZGlhX2ZlYXR1cmUg
bWF5YmVfc3BhY2UgbWF5YmVfbWVkaWFfdmFsdWUgJyknIG1heWJlX3NwYWNlIHsKKyAgICAgICAg
Ly8gSWYgcmVzdHJpY3RvciBpcyBzcGVjaWZpZWQsIG1lZGlhIHF1ZXJ5IGV4cHJlc3Npb24gaXMg
aW52YWxpZC4KKyAgICAgICAgLy8gQ3JlYXRlIGVtcHR5IG1lZGlhIHF1ZXJ5IGV4cHJlc3Npb24g
YW5kIGNvbnRpbnVlIHBhcnNpbmcgbWVkaWEgcXVlcnkuCisgICAgICAgIGlmICgkMSAhPSBNZWRp
YVF1ZXJ5OjpOb25lKQorICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nTWVk
aWFRdWVyeUV4cCgiIiwgMCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgJDUubG93ZXIo
KTsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ01lZGlhUXVlcnlFeHAo
JDUsICQ3KTsKKyAgICAgICAgfQorICAgIH0KKyAgICA7CisKK21lZGlhX3F1ZXJ5X2V4cF9saXN0
OgorICAgIG1lZGlhX3F1ZXJ5X2V4cCB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9h
dGluZ01lZGlhUXVlcnlFeHBMaXN0KCk7CisgICAgICAgICQkLT5hcHBlbmQocGFyc2VyLT5zaW5r
RmxvYXRpbmdNZWRpYVF1ZXJ5RXhwKCQxKSk7CisgICAgfQorICAgIHwgbWVkaWFfcXVlcnlfZXhw
X2xpc3QgbWF5YmVfc3BhY2UgTUVESUFfQU5EIG1heWJlX3NwYWNlIG1lZGlhX3F1ZXJ5X2V4cCB7
CisgICAgICAgICQkID0gJDE7CisgICAgICAgICQkLT5hcHBlbmQocGFyc2VyLT5zaW5rRmxvYXRp
bmdNZWRpYVF1ZXJ5RXhwKCQ1KSk7CisgICAgfQorICAgIDsKKworbWF5YmVfYW5kX21lZGlhX3F1
ZXJ5X2V4cF9saXN0OgorICAgIC8qZW1wdHkqLyB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVh
dGVGbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KCk7CisgICAgfQorICAgIHwgTUVESUFfQU5EIG1h
eWJlX3NwYWNlIG1lZGlhX3F1ZXJ5X2V4cF9saXN0IHsKKyAgICAgICAgJCQgPSAkMzsKKyAgICB9
CisgICAgOworCittYXliZV9tZWRpYV9yZXN0cmljdG9yOgorICAgIC8qZW1wdHkqLyB7CisgICAg
ICAgICQkID0gTWVkaWFRdWVyeTo6Tm9uZTsKKyAgICB9CisgICAgfCBNRURJQV9PTkxZIHsKKyAg
ICAgICAgJCQgPSBNZWRpYVF1ZXJ5OjpPbmx5OworICAgIH0KKyAgICB8IE1FRElBX05PVCB7Cisg
ICAgICAgICQkID0gTWVkaWFRdWVyeTo6Tm90OworICAgIH0KKyAgICA7CisKK21lZGlhX3F1ZXJ5
OgorICAgIG1lZGlhX3F1ZXJ5X2V4cF9saXN0IHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0
ZUZsb2F0aW5nTWVkaWFRdWVyeShwYXJzZXItPnNpbmtGbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0
KCQxKSk7CisgICAgfQorICAgIHwKKyAgICBtYXliZV9tZWRpYV9yZXN0cmljdG9yIG1heWJlX3Nw
YWNlIG1lZGl1bSBtYXliZV9hbmRfbWVkaWFfcXVlcnlfZXhwX2xpc3QgeworICAgICAgICAkMy5s
b3dlcigpOworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5KCQx
LCAkMywgcGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwTGlzdCgkNCkpOworICAgIH0K
KyAgICA7CisKK21heWJlX21lZGlhX2xpc3Q6CisgICAgIC8qIGVtcHR5ICovIHsKKyAgICAgICAg
JCQgPSBwYXJzZXItPmNyZWF0ZU1lZGlhUXVlcnlTZXQoKTsKKyAgICAgfQorICAgICB8IG1lZGlh
X2xpc3QKKyAgICAgOworCittZWRpYV9saXN0OgorICAgIG1lZGlhX3F1ZXJ5IHsKKyAgICAgICAg
JCQgPSBwYXJzZXItPmNyZWF0ZU1lZGlhUXVlcnlTZXQoKTsKKyAgICAgICAgJCQtPmFkZE1lZGlh
UXVlcnkocGFyc2VyLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5KCQxKSk7CisgICAgICAgIHBhcnNl
ci0+dXBkYXRlTGFzdE1lZGlhTGluZSgkJCk7CisgICAgfQorICAgIHwgbWVkaWFfbGlzdCAnLCcg
bWF5YmVfc3BhY2UgbWVkaWFfcXVlcnkgeworICAgICAgICAkJCA9ICQxOworICAgICAgICBpZiAo
JCQpIHsKKyAgICAgICAgICAgICQkLT5hZGRNZWRpYVF1ZXJ5KHBhcnNlci0+c2lua0Zsb2F0aW5n
TWVkaWFRdWVyeSgkNCkpOworICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVMYXN0TWVkaWFMaW5l
KCQkKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB8IG1lZGlhX2xpc3QgZXJyb3IgeworICAgICAg
ICAkJCA9IDA7CisgICAgfQorICAgIDsKKworYXRfcnVsZV9ib2R5X3N0YXJ0OgorICAgIC8qIGVt
cHR5ICovIHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUJvZHlTdGFydCgpOworICAgIH0KKyAg
ICA7CisKK2JlZm9yZV9tZWRpYV9ydWxlOgorICAgIC8qIGVtcHR5ICovIHsKKyAgICAgICAgcGFy
c2VyLT5tYXJrUnVsZUhlYWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRhOjpNRURJQV9SVUxFKTsK
KyAgICB9CisgICAgOworCithdF9ydWxlX2hlYWRlcl9lbmRfbWF5YmVfc3BhY2U6CisgICAgbWF5
YmVfc3BhY2UgeworICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyRW5kKCk7CisgICAgfQor
ICAgIDsKKworbWVkaWE6CisgICAgYmVmb3JlX21lZGlhX3J1bGUgTUVESUFfU1lNIG1heWJlX3Nw
YWNlIG1lZGlhX2xpc3QgYXRfcnVsZV9oZWFkZXJfZW5kICd7JyBhdF9ydWxlX2JvZHlfc3RhcnQg
bWF5YmVfc3BhY2UgYmxvY2tfcnVsZV9saXN0IHNhdmVfYmxvY2sgeworICAgICAgICAkJCA9IHBh
cnNlci0+Y3JlYXRlTWVkaWFSdWxlKCQ0LCAkOSk7CisgICAgfQorICAgIHwgYmVmb3JlX21lZGlh
X3J1bGUgTUVESUFfU1lNIGF0X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9zcGFjZSAneycgYXRfcnVs
ZV9ib2R5X3N0YXJ0IG1heWJlX3NwYWNlIGJsb2NrX3J1bGVfbGlzdCBzYXZlX2Jsb2NrIHsKKyAg
ICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZU1lZGlhUnVsZSgwLCAkNyk7CisgICAgfQorICAgIHwg
YmVmb3JlX21lZGlhX3J1bGUgTUVESUFfU1lNIGF0X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9zcGFj
ZSAnOycgeworICAgICAgICAkJCA9IDA7CisgICAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsK
KyAgICB9CisgICAgOworCittZWRpdW06CisgIElERU5UIG1heWJlX3NwYWNlIHsKKyAgICAgICQk
ID0gJDE7CisgIH0KKyAgOworCitiZWZvcmVfa2V5ZnJhbWVzX3J1bGU6CisgICAgLyogZW1wdHkg
Ki8geworICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNvdXJjZURh
dGE6OktFWUZSQU1FU19SVUxFKTsKKyAgICB9CisgICAgOworCitrZXlmcmFtZXM6CisgICAgYmVm
b3JlX2tleWZyYW1lc19ydWxlIFdFQktJVF9LRVlGUkFNRVNfU1lNIG1heWJlX3NwYWNlIGtleWZy
YW1lX25hbWUgYXRfcnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlICd7JyBhdF9ydWxlX2JvZHlf
c3RhcnQgbWF5YmVfc3BhY2Uga2V5ZnJhbWVzX3J1bGUgY2xvc2luZ19icmFjZSB7CisgICAgICAg
ICQkID0gcGFyc2VyLT5jcmVhdGVLZXlmcmFtZXNSdWxlKCQ0LCBwYXJzZXItPnNpbmtGbG9hdGlu
Z0tleWZyYW1lVmVjdG9yKCQ5KSk7CisgICAgfQorICAgIDsKKyAgCitrZXlmcmFtZV9uYW1lOgor
ICAgIElERU5UCisgICAgfCBTVFJJTkcKKyAgICA7CisKK2tleWZyYW1lc19ydWxlOgorICAgIC8q
IGVtcHR5ICovIHsgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nS2V5ZnJhbWVWZWN0b3IoKTsg
fQorICAgIHwga2V5ZnJhbWVzX3J1bGUga2V5ZnJhbWVfcnVsZSBtYXliZV9zcGFjZSB7CisgICAg
ICAgICQkID0gJDE7CisgICAgICAgIGlmICgkMikKKyAgICAgICAgICAgICQkLT5hcHBlbmQoJDIp
OworICAgIH0KKyAgICA7CisKK2tleWZyYW1lX3J1bGU6CisgICAga2V5X2xpc3QgbWF5YmVfc3Bh
Y2UgJ3snIG1heWJlX3NwYWNlIGRlY2xhcmF0aW9uX2xpc3QgJ30nIHsKKyAgICAgICAgJCQgPSBw
YXJzZXItPmNyZWF0ZUtleWZyYW1lKCQxKTsKKyAgICB9CisgICAgOworCitrZXlfbGlzdDoKKyAg
ICBrZXkgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdWYWx1ZUxpc3QoKTsK
KyAgICAgICAgJCQtPmFkZFZhbHVlKHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWUoJDEpKTsKKyAg
ICB9CisgICAgfCBrZXlfbGlzdCBtYXliZV9zcGFjZSAnLCcgbWF5YmVfc3BhY2Uga2V5IHsKKyAg
ICAgICAgJCQgPSAkMTsKKyAgICAgICAgaWYgKCQkKQorICAgICAgICAgICAgJCQtPmFkZFZhbHVl
KHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWUoJDUpKTsKKyAgICB9CisgICAgOworCitrZXk6Cisg
ICAgbWF5YmVfdW5hcnlfb3BlcmF0b3IgUEVSQ0VOVEFHRSB7ICQkLmlkID0gMDsgJCQuaXNJbnQg
PSBmYWxzZTsgJCQuZlZhbHVlID0gJDEgKiAkMjsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfTlVNQkVSOyB9CisgICAgfCBJREVOVCB7CisgICAgICAgICQkLmlkID0gMDsgJCQuaXNJ
bnQgPSBmYWxzZTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOworICAg
ICAgICBDU1NQYXJzZXJTdHJpbmcmIHN0ciA9ICQxOworICAgICAgICBpZiAoc3RyLmVxdWFsSWdu
b3JpbmdDYXNlKCJmcm9tIikpCisgICAgICAgICAgICAkJC5mVmFsdWUgPSAwOworICAgICAgICBl
bHNlIGlmIChzdHIuZXF1YWxJZ25vcmluZ0Nhc2UoInRvIikpCisgICAgICAgICAgICAkJC5mVmFs
dWUgPSAxMDA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFlZRVJST1I7CisgICAgfQorICAg
IDsKKworYmVmb3JlX3BhZ2VfcnVsZToKKyAgICAvKiBlbXB0eSAqLyB7CisgICAgICAgIHBhcnNl
ci0+bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6UEFHRV9SVUxFKTsKKyAg
ICB9CisgICAgOworCitwYWdlOgorICAgIGJlZm9yZV9wYWdlX3J1bGUgUEFHRV9TWU0gbWF5YmVf
c3BhY2UgcGFnZV9zZWxlY3RvciBhdF9ydWxlX2hlYWRlcl9lbmRfbWF5YmVfc3BhY2UKKyAgICAn
eycgYXRfcnVsZV9ib2R5X3N0YXJ0IG1heWJlX3NwYWNlX2JlZm9yZV9kZWNsYXJhdGlvbiBkZWNs
YXJhdGlvbnNfYW5kX21hcmdpbnMgY2xvc2luZ19icmFjZSB7CisgICAgICAgIGlmICgkNCkKKyAg
ICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVQYWdlUnVsZShwYXJzZXItPnNpbmtGbG9hdGlu
Z1NlbGVjdG9yKCQ0KSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gQ2xlYXIgcHJv
cGVydGllcyBpbiB0aGUgaW52YWxpZCBAcGFnZSBydWxlLgorICAgICAgICAgICAgcGFyc2VyLT5j
bGVhclByb3BlcnRpZXMoKTsKKyAgICAgICAgICAgIC8vIEFsc28gY2xlYXIgbWFyZ2luIGF0LXJ1
bGVzIGhlcmUgb25jZSB3ZSBmdWxseSBpbXBsZW1lbnQgbWFyZ2luIGF0LXJ1bGVzIHBhcnNpbmcu
CisgICAgICAgICAgICAkJCA9IDA7CisgICAgICAgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7
CisgICAgICAgIH0KKyAgICB9CisgICAgfCBiZWZvcmVfcGFnZV9ydWxlIFBBR0VfU1lNIGVycm9y
IGludmFsaWRfYmxvY2sgeworICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOworICAgICAgJCQg
PSAwOworICAgIH0KKyAgICB8IGJlZm9yZV9wYWdlX3J1bGUgUEFHRV9TWU0gZXJyb3IgJzsnIHsK
KyAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKKyAgICAgICQkID0gMDsKKyAgICB9CisgICAg
OworCitwYWdlX3NlbGVjdG9yOgorICAgIElERU5UIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNy
ZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldFRhZyhRdWFsaWZpZWROYW1l
KG51bGxBdG9tLCAkMSwgcGFyc2VyLT5tX2RlZmF1bHROYW1lc3BhY2UpKTsKKyAgICAgICAgJCQt
PnNldEZvclBhZ2UoKTsKKyAgICB9CisgICAgfCBJREVOVCBwc2V1ZG9fcGFnZSB7CisgICAgICAg
ICQkID0gJDI7CisgICAgICAgIGlmICgkJCkgeworICAgICAgICAgICAgJCQtPnNldFRhZyhRdWFs
aWZpZWROYW1lKG51bGxBdG9tLCAkMSwgcGFyc2VyLT5tX2RlZmF1bHROYW1lc3BhY2UpKTsKKyAg
ICAgICAgICAgICQkLT5zZXRGb3JQYWdlKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgfCBwc2V1
ZG9fcGFnZSB7CisgICAgICAgICQkID0gJDE7CisgICAgICAgIGlmICgkJCkKKyAgICAgICAgICAg
ICQkLT5zZXRGb3JQYWdlKCk7CisgICAgfQorICAgIHwgLyogZW1wdHkgKi8geworICAgICAgICAk
JCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAkJC0+c2V0Rm9y
UGFnZSgpOworICAgIH0KKyAgICA7CisKK2RlY2xhcmF0aW9uc19hbmRfbWFyZ2luczoKKyAgICBk
ZWNsYXJhdGlvbl9saXN0CisgICAgfCBkZWNsYXJhdGlvbnNfYW5kX21hcmdpbnMgbWFyZ2luX2Jv
eCBtYXliZV9zcGFjZSBkZWNsYXJhdGlvbl9saXN0CisgICAgOworCittYXJnaW5fYm94OgorICAg
IG1hcmdpbl9zeW0geworICAgICAgICBwYXJzZXItPnN0YXJ0RGVjbGFyYXRpb25zRm9yTWFyZ2lu
Qm94KCk7CisgICAgfSBtYXliZV9zcGFjZSAneycgbWF5YmVfc3BhY2UgZGVjbGFyYXRpb25fbGlz
dCBjbG9zaW5nX2JyYWNlIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZU1hcmdpbkF0UnVs
ZSgkMSk7CisgICAgfQorICAgIDsKKworbWFyZ2luX3N5bSA6CisgICAgVE9QTEVGVENPUk5FUl9T
WU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpUb3BMZWZ0Q29ybmVyTWFyZ2luQm94Owor
ICAgIH0KKyAgICB8IFRPUExFRlRfU1lNIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6VG9w
TGVmdE1hcmdpbkJveDsKKyAgICB9CisgICAgfCBUT1BDRU5URVJfU1lNIHsKKyAgICAgICAgJCQg
PSBDU1NTZWxlY3Rvcjo6VG9wQ2VudGVyTWFyZ2luQm94OworICAgIH0KKyAgICB8IFRPUFJJR0hU
X1NZTSB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OlRvcFJpZ2h0TWFyZ2luQm94OworICAg
IH0KKyAgICB8IFRPUFJJR0hUQ09STkVSX1NZTSB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6
OlRvcFJpZ2h0Q29ybmVyTWFyZ2luQm94OworICAgIH0KKyAgICB8IEJPVFRPTUxFRlRDT1JORVJf
U1lNIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6Qm90dG9tTGVmdENvcm5lck1hcmdpbkJv
eDsKKyAgICB9CisgICAgfCBCT1RUT01MRUZUX1NZTSB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0
b3I6OkJvdHRvbUxlZnRNYXJnaW5Cb3g7CisgICAgfQorICAgIHwgQk9UVE9NQ0VOVEVSX1NZTSB7
CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkJvdHRvbUNlbnRlck1hcmdpbkJveDsKKyAgICB9
CisgICAgfCBCT1RUT01SSUdIVF9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpCb3R0
b21SaWdodE1hcmdpbkJveDsKKyAgICB9CisgICAgfCBCT1RUT01SSUdIVENPUk5FUl9TWU0gewor
ICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpCb3R0b21SaWdodENvcm5lck1hcmdpbkJveDsKKyAg
ICB9CisgICAgfCBMRUZUVE9QX1NZTSB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6OkxlZnRU
b3BNYXJnaW5Cb3g7CisgICAgfQorICAgIHwgTEVGVE1JRERMRV9TWU0geworICAgICAgICAkJCA9
IENTU1NlbGVjdG9yOjpMZWZ0TWlkZGxlTWFyZ2luQm94OworICAgIH0KKyAgICB8IExFRlRCT1RU
T01fU1lNIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6TGVmdEJvdHRvbU1hcmdpbkJveDsK
KyAgICB9CisgICAgfCBSSUdIVFRPUF9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpS
aWdodFRvcE1hcmdpbkJveDsKKyAgICB9CisgICAgfCBSSUdIVE1JRERMRV9TWU0geworICAgICAg
ICAkJCA9IENTU1NlbGVjdG9yOjpSaWdodE1pZGRsZU1hcmdpbkJveDsKKyAgICB9CisgICAgfCBS
SUdIVEJPVFRPTV9TWU0geworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpSaWdodEJvdHRvbU1h
cmdpbkJveDsKKyAgICB9CisgICAgOworCitiZWZvcmVfZm9udF9mYWNlX3J1bGU6CisgICAgLyog
ZW1wdHkgKi8geworICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNv
dXJjZURhdGE6OkZPTlRfRkFDRV9SVUxFKTsKKyAgICB9CisgICAgOworCitmb250X2ZhY2U6Cisg
ICAgYmVmb3JlX2ZvbnRfZmFjZV9ydWxlIEZPTlRfRkFDRV9TWU0gYXRfcnVsZV9oZWFkZXJfZW5k
X21heWJlX3NwYWNlCisgICAgJ3snIGF0X3J1bGVfYm9keV9zdGFydCBtYXliZV9zcGFjZV9iZWZv
cmVfZGVjbGFyYXRpb24gZGVjbGFyYXRpb25fbGlzdCBjbG9zaW5nX2JyYWNlIHsKKyAgICAgICAg
JCQgPSBwYXJzZXItPmNyZWF0ZUZvbnRGYWNlUnVsZSgpOworICAgIH0KKyAgICB8IGJlZm9yZV9m
b250X2ZhY2VfcnVsZSBGT05UX0ZBQ0VfU1lNIGVycm9yIGludmFsaWRfYmxvY2sgeworICAgICAg
JCQgPSAwOworICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOworICAgIH0KKyAgICB8IGJlZm9y
ZV9mb250X2ZhY2VfcnVsZSBGT05UX0ZBQ0VfU1lNIGVycm9yICc7JyB7CisgICAgICAkJCA9IDA7
CisgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7CisgICAgfQorOworCityZWdpb25fc2VsZWN0
b3I6CisgICAgc2VsZWN0b3JfbGlzdCB7CisgICAgICAgIGlmICgkMSkgeworICAgICAgICAgICAg
cGFyc2VyLT5zZXRSZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9yKCQxKTsKKyAgICAgICAgICAg
ICQkID0gcGFyc2VyLT5yZXVzYWJsZVJlZ2lvblNlbGVjdG9yVmVjdG9yKCk7CisgICAgICAgIH0K
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgJCQgPSAwOworICAgIH0KKzsKKworYmVmb3JlX3Jl
Z2lvbl9ydWxlOgorICAgIC8qIGVtcHR5ICovIHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUhl
YWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRhOjpSRUdJT05fUlVMRSk7CisgICAgfQorICAgIDsK
KworcmVnaW9uOgorICAgIGJlZm9yZV9yZWdpb25fcnVsZSBXRUJLSVRfUkVHSU9OX1JVTEVfU1lN
IFdISVRFU1BBQ0UgcmVnaW9uX3NlbGVjdG9yIGF0X3J1bGVfaGVhZGVyX2VuZCAneycgYXRfcnVs
ZV9ib2R5X3N0YXJ0IG1heWJlX3NwYWNlIGJsb2NrX3J1bGVfbGlzdCBzYXZlX2Jsb2NrIHsKKyAg
ICAgICAgaWYgKCQ0KQorICAgICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZVJlZ2lvblJ1bGUo
JDQsICQ5KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAkJCA9IDA7CisgICAgICAgICAg
ICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7CisgICAgICAgIH0KKyAgICB9Cis7CisKK2NvbWJpbmF0
b3I6CisgICAgJysnIG1heWJlX3NwYWNlIHsgJCQgPSBDU1NTZWxlY3Rvcjo6RGlyZWN0QWRqYWNl
bnQ7IH0KKyAgfCAnficgbWF5YmVfc3BhY2UgeyAkJCA9IENTU1NlbGVjdG9yOjpJbmRpcmVjdEFk
amFjZW50OyB9CisgIHwgJz4nIG1heWJlX3NwYWNlIHsgJCQgPSBDU1NTZWxlY3Rvcjo6Q2hpbGQ7
IH0KKyAgOworCittYXliZV91bmFyeV9vcGVyYXRvcjoKKyAgICB1bmFyeV9vcGVyYXRvciB7ICQk
ID0gJDE7IH0KKyAgICB8IHsgJCQgPSAxOyB9CisgICAgOworCit1bmFyeV9vcGVyYXRvcjoKKyAg
ICAnLScgeyAkJCA9IC0xOyB9CisgIHwgJysnIHsgJCQgPSAxOyB9CisgIDsKKworbWF5YmVfc3Bh
Y2VfYmVmb3JlX2RlY2xhcmF0aW9uOgorICAgIG1heWJlX3NwYWNlIHsKKyAgICAgICAgcGFyc2Vy
LT5tYXJrUHJvcGVydHlTdGFydCgpOworICAgIH0KKyAgOworCitiZWZvcmVfc2VsZWN0b3JfbGlz
dDoKKyAgICAvKiBlbXB0eSAqLyB7CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJTdGFy
dChDU1NSdWxlU291cmNlRGF0YTo6U1RZTEVfUlVMRSk7CisgICAgfQorICA7CisKK2F0X3J1bGVf
aGVhZGVyX2VuZDoKKyAgICAvKiBlbXB0eSAqLyB7CisgICAgICAgIHBhcnNlci0+bWFya1J1bGVI
ZWFkZXJFbmQoKTsKKyAgICB9CisgIDsKKworcnVsZXNldDoKKyAgICBiZWZvcmVfc2VsZWN0b3Jf
bGlzdCBzZWxlY3Rvcl9saXN0IGF0X3J1bGVfaGVhZGVyX2VuZCAneycgYXRfcnVsZV9ib2R5X3N0
YXJ0IG1heWJlX3NwYWNlX2JlZm9yZV9kZWNsYXJhdGlvbiBkZWNsYXJhdGlvbl9saXN0IGNsb3Np
bmdfYnJhY2UgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlU3R5bGVSdWxlKCQyKTsKKyAg
ICB9CisgIDsKKworc2VsZWN0b3JfbGlzdDoKKyAgICBzZWxlY3RvciAlcHJlYyBVTklNUE9SVEFO
VF9UT0sgeworICAgICAgICBpZiAoJDEpIHsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5zZWxl
Y3RvclZlY3RvcigpOworICAgICAgICAgICAgJCQtPnNocmluaygwKTsKKyAgICAgICAgICAgICQk
LT5hcHBlbmQocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMSkpOworICAgICAgICAgICAg
cGFyc2VyLT51cGRhdGVMYXN0U2VsZWN0b3JMaW5lQW5kUG9zaXRpb24oKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICB8IHNlbGVjdG9yX2xpc3QgJywnIG1heWJlX3NwYWNlIHNlbGVjdG9yICVwcmVj
IFVOSU1QT1JUQU5UX1RPSyB7CisgICAgICAgIGlmICgkMSAmJiAkNCkgeworICAgICAgICAgICAg
JCQgPSAkMTsKKyAgICAgICAgICAgICQkLT5hcHBlbmQocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxl
Y3RvcigkNCkpOworICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVMYXN0U2VsZWN0b3JMaW5lQW5k
UG9zaXRpb24oKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQor
ICB8IHNlbGVjdG9yX2xpc3QgZXJyb3IgeworICAgICAgICAkJCA9IDA7CisgICAgfQorICAgOwor
CitzZWxlY3Rvcl93aXRoX3RyYWlsaW5nX3doaXRlc3BhY2U6CisgICAgc2VsZWN0b3IgV0hJVEVT
UEFDRSB7CisgICAgICAgICQkID0gJDE7CisgICAgfQorICAgIDsKKworc2VsZWN0b3I6CisgICAg
c2ltcGxlX3NlbGVjdG9yIHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAgfCBzZWxlY3Rv
cl93aXRoX3RyYWlsaW5nX3doaXRlc3BhY2UKKyAgICB7CisgICAgICAgICQkID0gJDE7CisgICAg
fQorICAgIHwgc2VsZWN0b3Jfd2l0aF90cmFpbGluZ193aGl0ZXNwYWNlIHNpbXBsZV9zZWxlY3Rv
cgorICAgIHsKKyAgICAgICAgJCQgPSAkMjsKKyAgICAgICAgaWYgKCEkMSkKKyAgICAgICAgICAg
ICQkID0gMDsKKyAgICAgICAgZWxzZSBpZiAoJCQpIHsKKyAgICAgICAgICAgIENTU1BhcnNlclNl
bGVjdG9yKiBlbmQgPSAkJDsKKyAgICAgICAgICAgIHdoaWxlIChlbmQtPnRhZ0hpc3RvcnkoKSkK
KyAgICAgICAgICAgICAgICBlbmQgPSBlbmQtPnRhZ0hpc3RvcnkoKTsKKyAgICAgICAgICAgIGVu
ZC0+c2V0UmVsYXRpb24oQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQpOworICAgICAgICAgICAgZW5k
LT5zZXRUYWdIaXN0b3J5KHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDEpKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICB8IHNlbGVjdG9yIGNvbWJpbmF0b3Igc2ltcGxlX3NlbGVjdG9yIHsK
KyAgICAgICAgJCQgPSAkMzsKKyAgICAgICAgaWYgKCEkMSkKKyAgICAgICAgICAgICQkID0gMDsK
KyAgICAgICAgZWxzZSBpZiAoJCQpIHsKKyAgICAgICAgICAgIENTU1BhcnNlclNlbGVjdG9yKiBl
bmQgPSAkJDsKKyAgICAgICAgICAgIHdoaWxlIChlbmQtPnRhZ0hpc3RvcnkoKSkKKyAgICAgICAg
ICAgICAgICBlbmQgPSBlbmQtPnRhZ0hpc3RvcnkoKTsKKyAgICAgICAgICAgIGVuZC0+c2V0UmVs
YXRpb24oJDIpOworICAgICAgICAgICAgZW5kLT5zZXRUYWdIaXN0b3J5KHBhcnNlci0+c2lua0Zs
b2F0aW5nU2VsZWN0b3IoJDEpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB8IHNlbGVjdG9yIGVy
cm9yIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKyAgICA7CisKK25hbWVzcGFjZV9zZWxlY3Rv
cjoKKyAgICAvKiBlbXB0eSAqLyAnfCcgeyAkJC5jbGVhcigpOyB9CisgICAgfCAnKicgJ3wnIHsg
c3RhdGljIExDaGFyIHN0YXIgPSAnKic7ICQkLmluaXQoJnN0YXIsIDEpOyB9CisgICAgfCBJREVO
VCAnfCcgeyAkJCA9ICQxOyB9Cis7CisgICAgCitzaW1wbGVfc2VsZWN0b3I6CisgICAgZWxlbWVu
dF9uYW1lIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsK
KyAgICAgICAgJCQtPnNldFRhZyhRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMSwgcGFyc2VyLT5t
X2RlZmF1bHROYW1lc3BhY2UpKTsKKyAgICB9CisgICAgfCBlbGVtZW50X25hbWUgc3BlY2lmaWVy
X2xpc3QgeworICAgICAgICAkJCA9ICQyOworICAgICAgICBpZiAoJCQpCisgICAgICAgICAgICBw
YXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUobnVsbEF0b20sICQxLCAkJCk7
CisgICAgfQorICAgIHwgc3BlY2lmaWVyX2xpc3QgeworICAgICAgICAkJCA9ICQxOworICAgICAg
ICBpZiAoJCQpCisgICAgICAgICAgICBwYXJzZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVu
dE5hbWUobnVsbEF0b20sIHN0YXJBdG9tLCAkJCk7CisgICAgfQorICAgIHwgbmFtZXNwYWNlX3Nl
bGVjdG9yIGVsZW1lbnRfbmFtZSB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGlu
Z1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRUYWcocGFyc2VyLT5kZXRlcm1pbmVOYW1lSW5O
YW1lc3BhY2UoJDEsICQyKSk7CisgICAgfQorICAgIHwgbmFtZXNwYWNlX3NlbGVjdG9yIGVsZW1l
bnRfbmFtZSBzcGVjaWZpZXJfbGlzdCB7CisgICAgICAgICQkID0gJDM7CisgICAgICAgIGlmICgk
JCkKKyAgICAgICAgICAgIHBhcnNlci0+dXBkYXRlU3BlY2lmaWVyc1dpdGhFbGVtZW50TmFtZSgk
MSwgJDIsICQkKTsKKyAgICB9CisgICAgfCBuYW1lc3BhY2Vfc2VsZWN0b3Igc3BlY2lmaWVyX2xp
c3QgeworICAgICAgICAkJCA9ICQyOworICAgICAgICBpZiAoJCQpCisgICAgICAgICAgICBwYXJz
ZXItPnVwZGF0ZVNwZWNpZmllcnNXaXRoRWxlbWVudE5hbWUoJDEsIHN0YXJBdG9tLCAkJCk7Cisg
ICAgfQorICA7CisKK3NpbXBsZV9zZWxlY3Rvcl9saXN0OgorICAgIHNpbXBsZV9zZWxlY3RvciAl
cHJlYyBVTklNUE9SVEFOVF9UT0sgeworICAgICAgICBpZiAoJDEpIHsKKyAgICAgICAgICAgICQk
ID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yVmVjdG9yKCk7CisgICAgICAgICAgICAk
JC0+YXBwZW5kKHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDEpKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIHwgc2ltcGxlX3NlbGVjdG9yX2xp
c3QgbWF5YmVfc3BhY2UgJywnIG1heWJlX3NwYWNlIHNpbXBsZV9zZWxlY3RvciAlcHJlYyBVTklN
UE9SVEFOVF9UT0sgeworICAgICAgICBpZiAoJDEgJiYgJDUpIHsKKyAgICAgICAgICAgICQkID0g
JDE7CisgICAgICAgICAgICAkJC0+YXBwZW5kKHBhcnNlci0+c2lua0Zsb2F0aW5nU2VsZWN0b3Io
JDUpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIHwg
c2ltcGxlX3NlbGVjdG9yX2xpc3QgZXJyb3IgeworICAgICAgICAkJCA9IDA7CisgICAgfQorICA7
CisKK2VsZW1lbnRfbmFtZToKKyAgICBJREVOVCB7CisgICAgICAgIENTU1BhcnNlclN0cmluZyYg
c3RyID0gJDE7CisgICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4dC5pc0hUTUxEb2N1bWVudCkK
KyAgICAgICAgICAgIHN0ci5sb3dlcigpOworICAgICAgICAkJCA9IHN0cjsKKyAgICB9CisgICAg
fCAnKicgeworICAgICAgICBzdGF0aWMgTENoYXIgc3RhciA9ICcqJzsKKyAgICAgICAgJCQuaW5p
dCgmc3RhciwgMSk7CisgICAgfQorICA7CisKK3NwZWNpZmllcl9saXN0OgorICAgIHNwZWNpZmll
ciB7CisgICAgICAgICQkID0gJDE7CisgICAgfQorICAgIHwgc3BlY2lmaWVyX2xpc3Qgc3BlY2lm
aWVyIHsKKyAgICAgICAgaWYgKCEkMikKKyAgICAgICAgICAgICQkID0gMDsKKyAgICAgICAgZWxz
ZSBpZiAoJDEpCisgICAgICAgICAgICAkJCA9IHBhcnNlci0+dXBkYXRlU3BlY2lmaWVycygkMSwg
JDIpOworICAgIH0KKyAgICB8IHNwZWNpZmllcl9saXN0IGVycm9yIHsKKyAgICAgICAgJCQgPSAw
OworICAgIH0KKzsKKworc3BlY2lmaWVyOgorICAgIElEU0VMIHsKKyAgICAgICAgJCQgPSBwYXJz
ZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldE1hdGNoKENTU1Nl
bGVjdG9yOjpJZCk7CisgICAgICAgIGlmIChwYXJzZXItPm1fY29udGV4dC5tb2RlID09IENTU1F1
aXJrc01vZGUpCisgICAgICAgICAgICAkMS5sb3dlcigpOworICAgICAgICAkJC0+c2V0VmFsdWUo
JDEpOworICAgIH0KKyAgfCBIRVggeworICAgICAgICBpZiAoJDFbMF0gPj0gJzAnICYmICQxWzBd
IDw9ICc5JykgeworICAgICAgICAgICAgJCQgPSAwOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgICAg
ICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6SWQpOworICAgICAgICAgICAgaWYgKHBhcnNlci0+
bV9jb250ZXh0Lm1vZGUgPT0gQ1NTUXVpcmtzTW9kZSkKKyAgICAgICAgICAgICAgICAkMS5sb3dl
cigpOworICAgICAgICAgICAgJCQtPnNldFZhbHVlKCQxKTsKKyAgICAgICAgfQorICAgIH0KKyAg
fCBjbGFzcworICB8IGF0dHJpYgorICB8IHBzZXVkbworICAgIDsKKworY2xhc3M6CisgICAgJy4n
IElERU5UIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsK
KyAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpDbGFzcyk7CisgICAgICAgIGlmIChw
YXJzZXItPm1fY29udGV4dC5tb2RlID09IENTU1F1aXJrc01vZGUpCisgICAgICAgICAgICAkMi5s
b3dlcigpOworICAgICAgICAkJC0+c2V0VmFsdWUoJDIpOworICAgIH0KKyAgOworCithdHRyX25h
bWU6CisgICAgSURFTlQgbWF5YmVfc3BhY2UgeworICAgICAgICBDU1NQYXJzZXJTdHJpbmcmIHN0
ciA9ICQxOworICAgICAgICBpZiAocGFyc2VyLT5tX2NvbnRleHQuaXNIVE1MRG9jdW1lbnQpCisg
ICAgICAgICAgICBzdHIubG93ZXIoKTsKKyAgICAgICAgJCQgPSBzdHI7CisgICAgfQorICAgIDsK
KworYXR0cmliOgorICAgICdbJyBtYXliZV9zcGFjZSBhdHRyX25hbWUgJ10nIHsKKyAgICAgICAg
JCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldEF0
dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMywgbnVsbEF0b20pKTsKKyAgICAgICAg
JCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpTZXQpOworICAgIH0KKyAgICB8ICdbJyBtYXliZV9z
cGFjZSBhdHRyX25hbWUgbWF0Y2ggbWF5YmVfc3BhY2UgaWRlbnRfb3Jfc3RyaW5nIG1heWJlX3Nw
YWNlICddJyB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7
CisgICAgICAgICQkLT5zZXRBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDMsIG51
bGxBdG9tKSk7CisgICAgICAgICQkLT5zZXRNYXRjaCgoQ1NTU2VsZWN0b3I6Ok1hdGNoKSQ0KTsK
KyAgICAgICAgJCQtPnNldFZhbHVlKCQ2KTsKKyAgICB9CisgICAgfCAnWycgbWF5YmVfc3BhY2Ug
bmFtZXNwYWNlX3NlbGVjdG9yIGF0dHJfbmFtZSAnXScgeworICAgICAgICAkJCA9IHBhcnNlci0+
Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAkJC0+c2V0QXR0cmlidXRlKHBhcnNl
ci0+ZGV0ZXJtaW5lTmFtZUluTmFtZXNwYWNlKCQzLCAkNCkpOworICAgICAgICAkJC0+c2V0TWF0
Y2goQ1NTU2VsZWN0b3I6OlNldCk7CisgICAgfQorICAgIHwgJ1snIG1heWJlX3NwYWNlIG5hbWVz
cGFjZV9zZWxlY3RvciBhdHRyX25hbWUgbWF0Y2ggbWF5YmVfc3BhY2UgaWRlbnRfb3Jfc3RyaW5n
IG1heWJlX3NwYWNlICddJyB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1Nl
bGVjdG9yKCk7CisgICAgICAgICQkLT5zZXRBdHRyaWJ1dGUocGFyc2VyLT5kZXRlcm1pbmVOYW1l
SW5OYW1lc3BhY2UoJDMsICQ0KSk7CisgICAgICAgICQkLT5zZXRNYXRjaCgoQ1NTU2VsZWN0b3I6
Ok1hdGNoKSQ1KTsKKyAgICAgICAgJCQtPnNldFZhbHVlKCQ3KTsKKyAgICB9CisgIDsKKworbWF0
Y2g6CisgICAgJz0nIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6RXhhY3Q7CisgICAgfQor
ICAgIHwgSU5DTFVERVMgeworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpMaXN0OworICAgIH0K
KyAgICB8IERBU0hNQVRDSCB7CisgICAgICAgICQkID0gQ1NTU2VsZWN0b3I6Okh5cGhlbjsKKyAg
ICB9CisgICAgfCBCRUdJTlNXSVRIIHsKKyAgICAgICAgJCQgPSBDU1NTZWxlY3Rvcjo6QmVnaW47
CisgICAgfQorICAgIHwgRU5EU1dJVEggeworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpFbmQ7
CisgICAgfQorICAgIHwgQ09OVEFJTlMgeworICAgICAgICAkJCA9IENTU1NlbGVjdG9yOjpDb250
YWluOworICAgIH0KKyAgICA7CisKK2lkZW50X29yX3N0cmluZzoKKyAgICBJREVOVAorICB8IFNU
UklORworICAgIDsKKworcHNldWRvX3BhZ2U6CisgICAgJzonIElERU5UIHsKKyAgICAgICAgJCQg
PSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldE1hdGNo
KENTU1NlbGVjdG9yOjpQYWdlUHNldWRvQ2xhc3MpOworICAgICAgICAkMi5sb3dlcigpOworICAg
ICAgICAkJC0+c2V0VmFsdWUoJDIpOworICAgICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSB0
eXBlID0gJCQtPnBzZXVkb1R5cGUoKTsKKyAgICAgICAgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6
OlBzZXVkb1Vua25vd24pCisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQorCitwc2V1ZG86Cisg
ICAgJzonIElERU5UIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0
b3IoKTsKKyAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7Cisg
ICAgICAgICQyLmxvd2VyKCk7CisgICAgICAgICQkLT5zZXRWYWx1ZSgkMik7CisgICAgICAgIENT
U1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOworICAgICAgICBp
ZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bikKKyAgICAgICAgICAgICQkID0g
MDsKKyAgICB9CisgICAgfCAnOicgJzonIElERU5UIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNy
ZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9y
OjpQc2V1ZG9FbGVtZW50KTsKKyAgICAgICAgJDMubG93ZXIoKTsKKyAgICAgICAgJCQtPnNldFZh
bHVlKCQzKTsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgY2FsbCBpcyBuZWVkZWQgdG8gZm9yY2Ug
c2VsZWN0b3IgdG8gY29tcHV0ZSB0aGUgcHNldWRvVHlwZSBlYXJseSBlbm91Z2guCisgICAgICAg
ICQkLT5wc2V1ZG9UeXBlKCk7CisgICAgfQorICAgIC8vIHVzZSBieSA6LXdlYmtpdC1hbnkuCisg
ICAgLy8gRklYTUU6IHNob3VsZCB3ZSBzdXBwb3J0IGdlbmVyaWMgc2VsZWN0b3JzIGhlcmUgb3Ig
anVzdCBzaW1wbGVfc2VsZWN0b3JzPworICAgIC8vIFVzZSBzaW1wbGVfc2VsZWN0b3JfbGlzdCBm
b3Igbm93IHRvIG1hdGNoIC1tb3otYW55LgorICAgIC8vIFNlZSBodHRwOi8vbGlzdHMudzMub3Jn
L0FyY2hpdmVzL1B1YmxpYy93d3ctc3R5bGUvMjAxMFNlcC8wNTY2Lmh0bWwgZm9yIHNvbWUKKyAg
ICAvLyByZWxhdGVkIGRpc2N1c3Npb24gd2l0aCByZXNwZWN0IHRvIDpub3QuCisgICAgfCAnOicg
QU5ZRlVOQ1RJT04gbWF5YmVfc3BhY2Ugc2ltcGxlX3NlbGVjdG9yX2xpc3QgbWF5YmVfc3BhY2Ug
JyknIHsKKyAgICAgICAgaWYgKCQ0KSB7CisgICAgICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRl
RmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzcyk7CisgICAgICAgICAgICAkJC0+YWRvcHRTZWxlY3RvclZlY3RvcigqcGFy
c2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvclZlY3RvcigkNCkpOworICAgICAgICAgICAgJDIubG93
ZXIoKTsKKyAgICAgICAgICAgICQkLT5zZXRWYWx1ZSgkMik7CisgICAgICAgICAgICBDU1NTZWxl
Y3Rvcjo6UHNldWRvVHlwZSB0eXBlID0gJCQtPnBzZXVkb1R5cGUoKTsKKyAgICAgICAgICAgIGlm
ICh0eXBlICE9IENTU1NlbGVjdG9yOjpQc2V1ZG9BbnkpCisgICAgICAgICAgICAgICAgJCQgPSAw
OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICQkID0gMDsKKyAgICB9CisgICAgLy8gdXNl
ZCBieSA6bnRoLSooYXgrYikKKyAgICB8ICc6JyBGVU5DVElPTiBtYXliZV9zcGFjZSBOVEggbWF5
YmVfc3BhY2UgJyknIHsKKyAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nU2VsZWN0
b3IoKTsKKyAgICAgICAgJCQtPnNldE1hdGNoKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyk7Cisg
ICAgICAgICQkLT5zZXRBcmd1bWVudCgkNCk7CisgICAgICAgICQkLT5zZXRWYWx1ZSgkMik7Cisg
ICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOwor
ICAgICAgICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bikKKyAgICAgICAg
ICAgICQkID0gMDsKKyAgICB9CisgICAgLy8gdXNlZCBieSA6bnRoLSoKKyAgICB8ICc6JyBGVU5D
VElPTiBtYXliZV9zcGFjZSBtYXliZV91bmFyeV9vcGVyYXRvciBJTlRFR0VSIG1heWJlX3NwYWNl
ICcpJyB7CisgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Cisg
ICAgICAgICQkLT5zZXRNYXRjaChDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpOworICAgICAgICAk
JC0+c2V0QXJndW1lbnQoU3RyaW5nOjpudW1iZXIoJDQgKiAkNSkpOworICAgICAgICAkJC0+c2V0
VmFsdWUoJDIpOworICAgICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSB0eXBlID0gJCQtPnBz
ZXVkb1R5cGUoKTsKKyAgICAgICAgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25v
d24pCisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIC8vIHVzZWQgYnkgOm50aC0qKG9k
ZC9ldmVuKSBhbmQgOmxhbmcKKyAgICB8ICc6JyBGVU5DVElPTiBtYXliZV9zcGFjZSBJREVOVCBt
YXliZV9zcGFjZSAnKScgeworICAgICAgICAkJCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdTZWxl
Y3RvcigpOworICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsK
KyAgICAgICAgJCQtPnNldEFyZ3VtZW50KCQ0KTsKKyAgICAgICAgJDIubG93ZXIoKTsKKyAgICAg
ICAgJCQtPnNldFZhbHVlKCQyKTsKKyAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgdHlw
ZSA9ICQkLT5wc2V1ZG9UeXBlKCk7CisgICAgICAgIGlmICh0eXBlID09IENTU1NlbGVjdG9yOjpQ
c2V1ZG9Vbmtub3duKQorICAgICAgICAgICAgJCQgPSAwOworICAgICAgICBlbHNlIGlmICh0eXBl
ID09IENTU1NlbGVjdG9yOjpQc2V1ZG9OdGhDaGlsZCB8fAorICAgICAgICAgICAgICAgICB0eXBl
ID09IENTU1NlbGVjdG9yOjpQc2V1ZG9OdGhPZlR5cGUgfHwKKyAgICAgICAgICAgICAgICAgdHlw
ZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvTnRoTGFzdENoaWxkIHx8CisgICAgICAgICAgICAgICAg
IHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb050aExhc3RPZlR5cGUpIHsKKyAgICAgICAgICAg
IGlmICghaXNWYWxpZE50aFRva2VuKCQ0KSkKKyAgICAgICAgICAgICAgICAkJCA9IDA7CisgICAg
ICAgIH0KKyAgICB9CisgICAgLy8gdXNlZCBieSA6bm90CisgICAgfCAnOicgTk9URlVOQ1RJT04g
bWF5YmVfc3BhY2Ugc2ltcGxlX3NlbGVjdG9yIG1heWJlX3NwYWNlICcpJyB7CisgICAgICAgIGlm
ICghJDQgfHwgISQ0LT5pc1NpbXBsZSgpKQorICAgICAgICAgICAgJCQgPSAwOworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICQkID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7
CisgICAgICAgICAgICAkJC0+c2V0TWF0Y2goQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKTsKKwor
ICAgICAgICAgICAgQ1NTU2VsZWN0b3JWZWN0b3Igc2VsZWN0b3JWZWN0b3I7CisgICAgICAgICAg
ICBzZWxlY3RvclZlY3Rvci5hcHBlbmQocGFyc2VyLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkNCkp
OworICAgICAgICAgICAgJCQtPmFkb3B0U2VsZWN0b3JWZWN0b3Ioc2VsZWN0b3JWZWN0b3IpOwor
CisgICAgICAgICAgICAkMi5sb3dlcigpOworICAgICAgICAgICAgJCQtPnNldFZhbHVlKCQyKTsK
KyAgICAgICAgfQorICAgIH0KKyAgOworCitkZWNsYXJhdGlvbl9saXN0OgorICAgIGRlY2xhcmF0
aW9uIHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9CisgICAgfCBkZWNsX2xpc3QgZGVjbGFyYXRp
b24geworICAgICAgICAkJCA9ICQxOworICAgICAgICBpZiAoICQyICkKKyAgICAgICAgICAgICQk
ID0gJDI7CisgICAgfQorICAgIHwgZGVjbF9saXN0IHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9
CisgICAgfCBlcnJvciBpbnZhbGlkX2Jsb2NrX2xpc3QgZXJyb3IgeworICAgICAgICAkJCA9IGZh
bHNlOworICAgIH0KKyAgICB8IGVycm9yIHsKKyAgICAgICAgJCQgPSBmYWxzZTsKKyAgICB9Cisg
ICAgfCBkZWNsX2xpc3QgZXJyb3IgeworICAgICAgICAkJCA9ICQxOworICAgIH0KKyAgICB8IGRl
Y2xfbGlzdCBpbnZhbGlkX2Jsb2NrX2xpc3QgeworICAgICAgICAkJCA9ICQxOworICAgIH0KKyAg
ICA7CisKK2RlY2xfbGlzdDoKKyAgICBkZWNsYXJhdGlvbiAnOycgbWF5YmVfc3BhY2UgeworICAg
ICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eVN0YXJ0KCk7CisgICAgICAgICQkID0gJDE7CisgICAg
fQorICAgIHwgZGVjbGFyYXRpb24gaW52YWxpZF9ibG9ja19saXN0IG1heWJlX3NwYWNlIHsKKyAg
ICAgICAgJCQgPSBmYWxzZTsKKyAgICB9CisgICAgfCBkZWNsYXJhdGlvbiBpbnZhbGlkX2Jsb2Nr
X2xpc3QgJzsnIG1heWJlX3NwYWNlIHsKKyAgICAgICAgJCQgPSBmYWxzZTsKKyAgICB9CisgICAg
fCBlcnJvciAnOycgbWF5YmVfc3BhY2UgeworICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eVN0
YXJ0KCk7CisgICAgICAgICQkID0gZmFsc2U7CisgICAgfQorICAgIHwgZXJyb3IgaW52YWxpZF9i
bG9ja19saXN0IGVycm9yICc7JyBtYXliZV9zcGFjZSB7CisgICAgICAgICQkID0gZmFsc2U7Cisg
ICAgfQorICAgIHwgZGVjbF9saXN0IGRlY2xhcmF0aW9uICc7JyBtYXliZV9zcGFjZSB7CisgICAg
ICAgIHBhcnNlci0+bWFya1Byb3BlcnR5U3RhcnQoKTsKKyAgICAgICAgJCQgPSAkMTsKKyAgICAg
ICAgaWYgKCQyKQorICAgICAgICAgICAgJCQgPSAkMjsKKyAgICB9CisgICAgfCBkZWNsX2xpc3Qg
ZXJyb3IgJzsnIG1heWJlX3NwYWNlIHsKKyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlTdGFy
dCgpOworICAgICAgICAkJCA9ICQxOworICAgIH0KKyAgICB8IGRlY2xfbGlzdCBlcnJvciBpbnZh
bGlkX2Jsb2NrX2xpc3QgZXJyb3IgJzsnIG1heWJlX3NwYWNlIHsKKyAgICAgICAgcGFyc2VyLT5t
YXJrUHJvcGVydHlTdGFydCgpOworICAgICAgICAkJCA9ICQxOworICAgIH0KKyAgICA7CisKK2Rl
Y2xhcmF0aW9uOgorICAgIFZBUl9ERUZJTklUSU9OICc6JyBtYXliZV9zcGFjZSBleHByIHByaW8g
eworI2lmIEVOQUJMRV9DU1NfVkFSSUFCTEVTCisgICAgICAgIHBhcnNlci0+c3RvcmVWYXJpYWJs
ZURlY2xhcmF0aW9uKCQxLCBwYXJzZXItPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgkNCksICQ1KTsK
KyAgICAgICAgJCQgPSB0cnVlOworICAgICAgICBwYXJzZXItPm1hcmtQcm9wZXJ0eUVuZCgkNSwg
dHJ1ZSk7CisjZWxzZQorICAgICAgICAkJCA9IGZhbHNlOworI2VuZGlmCisgICAgfQorICAgIHwK
KyAgICBwcm9wZXJ0eSAnOicgbWF5YmVfc3BhY2UgZXhwciBwcmlvIHsKKyAgICAgICAgJCQgPSBm
YWxzZTsKKyAgICAgICAgYm9vbCBpc1Byb3BlcnR5UGFyc2VkID0gZmFsc2U7CisgICAgICAgIGlm
ICgkMSAmJiAkNCkgeworICAgICAgICAgICAgcGFyc2VyLT5tX3ZhbHVlTGlzdCA9IHBhcnNlci0+
c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQ0KTsKKyAgICAgICAgICAgIGludCBvbGRQYXJzZWRQcm9w
ZXJ0aWVzID0gcGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKTsKKyAgICAgICAgICAg
ICQkID0gcGFyc2VyLT5wYXJzZVZhbHVlKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KCQxKSwg
JDUpOworICAgICAgICAgICAgaWYgKCEkJCkKKyAgICAgICAgICAgICAgICBwYXJzZXItPnJvbGxi
YWNrTGFzdFByb3BlcnRpZXMocGFyc2VyLT5tX3BhcnNlZFByb3BlcnRpZXMtPnNpemUoKSAtIG9s
ZFBhcnNlZFByb3BlcnRpZXMpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGlz
UHJvcGVydHlQYXJzZWQgPSB0cnVlOworICAgICAgICAgICAgcGFyc2VyLT5tX3ZhbHVlTGlzdCA9
IG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlFbmQoJDUs
IGlzUHJvcGVydHlQYXJzZWQpOworICAgIH0KKyAgICB8CisgICAgcHJvcGVydHkgZXJyb3Igewor
ICAgICAgICAkJCA9IGZhbHNlOworICAgIH0KKyAgICB8CisgICAgcHJvcGVydHkgJzonIG1heWJl
X3NwYWNlIGVycm9yIGV4cHIgcHJpbyB7CisgICAgICAgIC8qIFRoZSBkZWZhdWx0IG1vdmFibGUg
dHlwZSB0ZW1wbGF0ZSBoYXMgbGV0dGVyLXNwYWNpbmc6IC5ub25lOyAgSGFuZGxlIHRoaXMgYnkg
bG9va2luZyBmb3IKKyAgICAgICAgZXJyb3IgdG9rZW5zIGF0IHRoZSBzdGFydCBvZiBhbiBleHBy
LCByZWNvdmVyIHRoZSBleHByIGFuZCB0aGVuIHRyZWF0IGFzIGFuIGVycm9yLCBjbGVhbmluZwor
ICAgICAgICB1cCBhbmQgZGVsZXRpbmcgdGhlIHNoaWZ0ZWQgZXhwci4gICovCisgICAgICAgIHBh
cnNlci0+bWFya1Byb3BlcnR5RW5kKGZhbHNlLCBmYWxzZSk7CisgICAgICAgICQkID0gZmFsc2U7
CisgICAgfQorICAgIHwKKyAgICBwcm9wZXJ0eSAnOicgbWF5YmVfc3BhY2UgZXhwciBwcmlvIGVy
cm9yIHsKKyAgICAgICAgLyogV2hlbiB3ZSBlbmNvdW50ZXIgc29tZXRoaW5nIGxpa2UgcCB7Y29s
b3I6IHJlZCAhaW1wb3J0YW50IGZhaWw7fSB3ZSBzaG91bGQgZHJvcCB0aGUgZGVjbGFyYXRpb24g
Ki8KKyAgICAgICAgcGFyc2VyLT5tYXJrUHJvcGVydHlFbmQoZmFsc2UsIGZhbHNlKTsKKyAgICAg
ICAgJCQgPSBmYWxzZTsKKyAgICB9CisgICAgfAorICAgIElNUE9SVEFOVF9TWU0gbWF5YmVfc3Bh
Y2UgeworICAgICAgICAvKiBIYW5kbGUgdGhpcyBjYXNlOiBkaXYgeyB0ZXh0LWFsaWduOiBjZW50
ZXI7ICFpbXBvcnRhbnQgfSBKdXN0IHJlZHVjZSBhd2F5IHRoZSBzdHJheSAhaW1wb3J0YW50LiAq
LworICAgICAgICAkJCA9IGZhbHNlOworICAgIH0KKyAgICB8CisgICAgcHJvcGVydHkgJzonIG1h
eWJlX3NwYWNlIHsKKyAgICAgICAgLyogZGl2IHsgZm9udC1mYW1pbHk6IH0gSnVzdCByZWR1Y2Ug
YXdheSB0aGlzIHByb3BlcnR5IHdpdGggbm8gdmFsdWUuICovCisgICAgICAgIHBhcnNlci0+bWFy
a1Byb3BlcnR5RW5kKGZhbHNlLCBmYWxzZSk7CisgICAgICAgICQkID0gZmFsc2U7CisgICAgfQor
ICAgIHwKKyAgICBwcm9wZXJ0eSAnOicgbWF5YmVfc3BhY2UgZXJyb3IgeworICAgICAgICAvKiBp
ZiB3ZSBjb21lIGFjcm9zcyBydWxlcyB3aXRoIGludmFsaWQgdmFsdWVzIGxpa2UgdGhpcyBjYXNl
OiBwIHsgd2VpZ2h0OiAqOyB9LCBqdXN0IGRpc2NhcmQgdGhlIHJ1bGUgKi8KKyAgICAgICAgcGFy
c2VyLT5tYXJrUHJvcGVydHlFbmQoZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgJCQgPSBmYWxzZTsK
KyAgICB9CisgICAgfAorICAgIHByb3BlcnR5IGludmFsaWRfYmxvY2sgeworICAgICAgICAvKiBp
ZiB3ZSBjb21lIGFjcm9zczogZGl2IHsgY29sb3J7O2NvbG9yOm1hcm9vbn0gfSwgaWdub3JlIGV2
ZXJ5dGhpbmcgd2l0aGluIGN1cmx5IGJyYWNrZXRzICovCisgICAgICAgICQkID0gZmFsc2U7Cisg
ICAgfQorICA7CisKK3Byb3BlcnR5OgorICAgIElERU5UIG1heWJlX3NwYWNlIHsKKyAgICAgICAg
JCQgPSBjc3NQcm9wZXJ0eUlEKCQxKTsKKyAgICB9CisgIDsKKworcHJpbzoKKyAgICBJTVBPUlRB
TlRfU1lNIG1heWJlX3NwYWNlIHsgJCQgPSB0cnVlOyB9CisgICAgfCAvKiBlbXB0eSAqLyB7ICQk
ID0gZmFsc2U7IH0KKyAgOworCitleHByOgorICAgIHRlcm0geworICAgICAgICAkJCA9IHBhcnNl
ci0+Y3JlYXRlRmxvYXRpbmdWYWx1ZUxpc3QoKTsKKyAgICAgICAgJCQtPmFkZFZhbHVlKHBhcnNl
ci0+c2lua0Zsb2F0aW5nVmFsdWUoJDEpKTsKKyAgICB9CisgICAgfCBleHByIG9wZXJhdG9yIHRl
cm0geworICAgICAgICAkJCA9ICQxOworICAgICAgICBpZiAoJCQpIHsKKyAgICAgICAgICAgIGlm
ICgkMikgeworICAgICAgICAgICAgICAgIENTU1BhcnNlclZhbHVlIHY7CisgICAgICAgICAgICAg
ICAgdi5pZCA9IDA7CisgICAgICAgICAgICAgICAgdi51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9w
ZXJhdG9yOworICAgICAgICAgICAgICAgIHYuaVZhbHVlID0gJDI7CisgICAgICAgICAgICAgICAg
JCQtPmFkZFZhbHVlKHYpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgJCQtPmFkZFZhbHVl
KHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWUoJDMpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB8
IGV4cHIgaW52YWxpZF9ibG9ja19saXN0IHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKyAgICB8
IGV4cHIgaW52YWxpZF9ibG9ja19saXN0IGVycm9yIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0K
KyAgICB8IGV4cHIgZXJyb3IgeworICAgICAgICAkJCA9IDA7CisgICAgfQorICA7CisKK29wZXJh
dG9yOgorICAgICcvJyBtYXliZV9zcGFjZSB7CisgICAgICAgICQkID0gJy8nOworICAgIH0KKyAg
fCAnLCcgbWF5YmVfc3BhY2UgeworICAgICAgICAkJCA9ICcsJzsKKyAgICB9CisgIHwgLyogZW1w
dHkgKi8geworICAgICAgICAkJCA9IDA7CisgIH0KKyAgOworCit0ZXJtOgorICB1bmFyeV90ZXJt
IHsgJCQgPSAkMTsgfQorICB8IHVuYXJ5X29wZXJhdG9yIHVuYXJ5X3Rlcm0geyAkJCA9ICQyOyAk
JC5mVmFsdWUgKj0gJDE7IH0KKyAgfCBTVFJJTkcgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQk
LnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkc7IH0K
KyAgfCBJREVOVCBtYXliZV9zcGFjZSB7CisgICAgICAkJC5pZCA9IGNzc1ZhbHVlS2V5d29yZElE
KCQxKTsKKyAgICAgICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UOworICAg
ICAgJCQuc3RyaW5nID0gJDE7CisgIH0KKyAgLyogV2UgbWlnaHQgbmVlZCB0byBhY3R1YWxseSBw
YXJzZSB0aGUgbnVtYmVyIGZyb20gYSBkaW1lbnNpb24sIGJ1dCB3ZSBjYW4ndCBqdXN0IHB1dCBz
b21ldGhpbmcgdGhhdCB1c2VzICQkLnN0cmluZyBpbnRvIHVuYXJ5X3Rlcm0uICovCisgIHwgRElN
RU4gbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51bml0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19ESU1FTlNJT047IH0KKyAgfCB1bmFyeV9vcGVyYXRvciBESU1F
TiBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDI7ICQkLnVuaXQgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0RJTUVOU0lPTjsgfQorICB8IFVSSSBtYXliZV9zcGFjZSB7ICQk
LmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1VSSTsgfQorICB8IFVOSUNPREVSQU5HRSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3Ry
aW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VOSUNPREVfUkFOR0U7
IH0KKyAgfCBIRVggbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9ICQxOyAkJC51
bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1I7IH0KKyAgfCAnIycg
bWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmluZyA9IENTU1BhcnNlclN0cmluZygpOyAk
JC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1I7IH0gLyogSGFu
ZGxlIGVycm9yIGNhc2U6ICJjb2xvcjogIzsiICovCisgIHwgVkFSRlVOQ1RJT04gbWF5YmVfc3Bh
Y2UgSURFTlQgJyknIG1heWJlX3NwYWNlIHsKKyNpZiBFTkFCTEVfQ1NTX1ZBUklBQkxFUworICAg
ICAgJCQuaWQgPSAwOworICAgICAgJCQuc3RyaW5nID0gJDM7CisgICAgICAkJC51bml0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19WQVJJQUJMRV9OQU1FOworI2VuZGlmCisgIH0KKyAgLyogRklY
TUU6IGFjY29yZGluZyB0byB0aGUgc3BlY3MgYSBmdW5jdGlvbiBjYW4gaGF2ZSBhIHVuYXJ5X29w
ZXJhdG9yIGluIGZyb250LiBJIGtub3cgbm8gY2FzZSB3aGVyZSB0aGlzIG1ha2VzIHNlbnNlICov
CisgIHwgZnVuY3Rpb24geworICAgICAgJCQgPSAkMTsKKyAgfQorICB8IGNhbGNfZnVuY3Rpb24g
eworICAgICAgJCQgPSAkMTsKKyAgfQorICB8IG1pbl9vcl9tYXhfZnVuY3Rpb24geworICAgICAg
JCQgPSAkMTsKKyAgfQorICB8ICclJyBtYXliZV9zcGFjZSB7IC8qIEhhbmRsZSB3aWR0aDogJTsg
Ki8KKyAgICAgICQkLmlkID0gMDsgJCQudW5pdCA9IDA7CisgIH0KKyAgOworCit1bmFyeV90ZXJt
OgorICBJTlRFR0VSIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5pc0ludCA9IHRydWU7ICQk
LmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7IH0K
KyAgfCBGTE9BVFRPS0VOIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5pc0ludCA9IGZhbHNl
OyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVS
OyB9CisgIHwgUEVSQ0VOVEFHRSBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0g
JDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0U7IH0KKyAgfCBQ
WFMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QWDsgfQorICB8IENNUyBtYXliZV9zcGFjZSB7ICQkLmlkID0g
MDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0NNOyB9
CisgIHwgTU1TIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5p
dCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTU07IH0KKyAgfCBJTlMgbWF5YmVfc3BhY2UgeyAk
JC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19JTjsgfQorICB8IFBUUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7
ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BUOyB9CisgIHwgUENTIG1heWJlX3Nw
YWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUEM7IH0KKyAgfCBERUdTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFs
dWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfREVHOyB9CisgIHwgUkFE
UyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1JBRDsgfQorICB8IEdSQURTIG1heWJlX3NwYWNlIHsgJCQuaWQg
PSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfR1JB
RDsgfQorICB8IFRVUk5TIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsg
JCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVFVSTjsgfQorICB8IE1TRUNTIG1heWJl
X3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfTVM7IH0KKyAgfCBTRUNTIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5m
VmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUzsgfQorICB8IEhF
UlRaIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfSFo7IH0KKyAgfCBLSEVSVFogbWF5YmVfc3BhY2UgeyAkJC5p
ZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19L
SFo7IH0KKyAgfCBFTVMgbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAk
JC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVM7IH0KKyAgfCBRRU1TIG1heWJlX3Nw
YWNlIHsgJCQuaWQgPSAwOyAkJC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1BhcnNlclZhbHVl
OjpRX0VNUzsgfQorICB8IEVYUyBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0g
JDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VYUzsgfQorICB8IFJFTVMgbWF5
YmVfc3BhY2UgeworICAgICAgJCQuaWQgPSAwOworICAgICAgJCQuZlZhbHVlID0gJDE7CisgICAg
ICAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SRU1TOworICAgICAgaWYgKHBhcnNl
ci0+bV9zdHlsZVNoZWV0KQorICAgICAgICAgIHBhcnNlci0+bV9zdHlsZVNoZWV0LT5wYXJzZXJT
ZXRVc2VzUmVtVW5pdHModHJ1ZSk7CisgIH0KKyAgfCBWVyBtYXliZV9zcGFjZSB7ICQkLmlkID0g
MDsgJCQuZlZhbHVlID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1ZXOyB9
CisgIHwgVkggbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19WSDsgfQorICB8IFZNSU4gbWF5YmVfc3BhY2UgeyAk
JC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19WTUlOOyB9CisgIHwgRFBQWCBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuZlZhbHVlID0g
JDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQUFg7IH0KKyAgfCBEUEkgbWF5
YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLmZWYWx1ZSA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19EUEk7IH0KKyAgfCBEUENNIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAk
JC5mVmFsdWUgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRFBDTTsgfQor
ICA7CisKK2Z1bmN0aW9uOgorICAgIEZVTkNUSU9OIG1heWJlX3NwYWNlIGV4cHIgJyknIG1heWJl
X3NwYWNlIHsKKyAgICAgICAgQ1NTUGFyc2VyRnVuY3Rpb24qIGYgPSBwYXJzZXItPmNyZWF0ZUZs
b2F0aW5nRnVuY3Rpb24oKTsKKyAgICAgICAgZi0+bmFtZSA9ICQxOworICAgICAgICBmLT5hcmdz
ID0gcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoJDMpOworICAgICAgICAkJC5pZCA9IDA7
CisgICAgICAgICQkLnVuaXQgPSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb247CisgICAgICAgICQk
LmZ1bmN0aW9uID0gZjsKKyAgICB9IHwKKyAgICBGVU5DVElPTiBtYXliZV9zcGFjZSBleHByIFRP
S0VOX0VPRiB7CisgICAgICAgIENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVG
bG9hdGluZ0Z1bmN0aW9uKCk7CisgICAgICAgIGYtPm5hbWUgPSAkMTsKKyAgICAgICAgZi0+YXJn
cyA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQzKTsKKyAgICAgICAgJCQuaWQgPSAw
OworICAgICAgICAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uOworICAgICAgICAk
JC5mdW5jdGlvbiA9IGY7CisgICAgfSB8CisgICAgRlVOQ1RJT04gbWF5YmVfc3BhY2UgJyknIG1h
eWJlX3NwYWNlIHsKKyAgICAgICAgQ1NTUGFyc2VyRnVuY3Rpb24qIGYgPSBwYXJzZXItPmNyZWF0
ZUZsb2F0aW5nRnVuY3Rpb24oKTsKKyAgICAgICAgZi0+bmFtZSA9ICQxOworICAgICAgICBDU1NQ
YXJzZXJWYWx1ZUxpc3QqIHZhbHVlTGlzdCA9IHBhcnNlci0+Y3JlYXRlRmxvYXRpbmdWYWx1ZUxp
c3QoKTsKKyAgICAgICAgZi0+YXJncyA9IHBhcnNlci0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KHZh
bHVlTGlzdCk7CisgICAgICAgICQkLmlkID0gMDsKKyAgICAgICAgJCQudW5pdCA9IENTU1BhcnNl
clZhbHVlOjpGdW5jdGlvbjsKKyAgICAgICAgJCQuZnVuY3Rpb24gPSBmOworICAgIH0gfAorICAg
IEZVTkNUSU9OIG1heWJlX3NwYWNlIGVycm9yIHsKKyAgICAgICAgQ1NTUGFyc2VyRnVuY3Rpb24q
IGYgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsKKyAgICAgICAgZi0+bmFtZSA9
ICQxOworICAgICAgICBmLT5hcmdzID0gbnVsbHB0cjsKKyAgICAgICAgJCQuaWQgPSAwOworICAg
ICAgICAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uOworICAgICAgICAkJC5mdW5j
dGlvbiA9IGY7CisgIH0KKyAgOworIAorY2FsY19mdW5jX3Rlcm06CisgIHVuYXJ5X3Rlcm0geyAk
JCA9ICQxOyB9CisgIHwgVkFSRlVOQ1RJT04gbWF5YmVfc3BhY2UgSURFTlQgJyknIG1heWJlX3Nw
YWNlIHsKKyNpZiBFTkFCTEVfQ1NTX1ZBUklBQkxFUworICAgICAgJCQuaWQgPSAwOworICAgICAg
JCQuc3RyaW5nID0gJDM7CisgICAgICAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19W
QVJJQUJMRV9OQU1FOworI2VuZGlmCisgIH0KKyAgfCB1bmFyeV9vcGVyYXRvciB1bmFyeV90ZXJt
IHsgJCQgPSAkMjsgJCQuZlZhbHVlICo9ICQxOyB9CisgIDsKKworY2FsY19mdW5jX29wZXJhdG9y
OgorICAgICcrJyBXSElURVNQQUNFIHsKKyAgICAgICAgJCQgPSAnKyc7CisgICAgfQorICAgIHwg
Jy0nIFdISVRFU1BBQ0UgeworICAgICAgICAkJCA9ICctJzsKKyAgICB9CisgICAgfCAnKicgbWF5
YmVfc3BhY2UgeworICAgICAgICAkJCA9ICcqJzsKKyAgICB9CisgICAgfCAnLycgbWF5YmVfc3Bh
Y2UgeworICAgICAgICAkJCA9ICcvJzsKKyAgICB9CisgIDsKKworY2FsY19mdW5jX3BhcmVuX2V4
cHI6CisgICAgJygnIG1heWJlX3NwYWNlIGNhbGNfZnVuY19leHByIG1heWJlX3NwYWNlICcpJyBt
YXliZV9zcGFjZSB7CisgICAgICAgIGlmICgkMykgeworICAgICAgICAgICAgJCQgPSAkMzsKKyAg
ICAgICAgICAgIENTU1BhcnNlclZhbHVlIHY7CisgICAgICAgICAgICB2LmlkID0gMDsKKyAgICAg
ICAgICAgIHYudW5pdCA9IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvcjsKKyAgICAgICAgICAgIHYu
aVZhbHVlID0gJygnOworICAgICAgICAgICAgJCQtPmluc2VydFZhbHVlQXQoMCwgdik7CisgICAg
ICAgICAgICB2LmlWYWx1ZSA9ICcpJzsKKyAgICAgICAgICAgICQkLT5hZGRWYWx1ZSh2KTsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQorCitjYWxjX2Z1bmNfZXhw
cjoKKyAgICBjYWxjX2Z1bmNfdGVybSBtYXliZV9zcGFjZSB7CisgICAgICAgICQkID0gcGFyc2Vy
LT5jcmVhdGVGbG9hdGluZ1ZhbHVlTGlzdCgpOworICAgICAgICAkJC0+YWRkVmFsdWUocGFyc2Vy
LT5zaW5rRmxvYXRpbmdWYWx1ZSgkMSkpOworICAgIH0KKyAgICB8IGNhbGNfZnVuY19leHByIGNh
bGNfZnVuY19vcGVyYXRvciBjYWxjX2Z1bmNfdGVybSB7CisgICAgICAgIGlmICgkMSAmJiAkMikg
eworICAgICAgICAgICAgJCQgPSAkMTsKKyAgICAgICAgICAgIENTU1BhcnNlclZhbHVlIHY7Cisg
ICAgICAgICAgICB2LmlkID0gMDsKKyAgICAgICAgICAgIHYudW5pdCA9IENTU1BhcnNlclZhbHVl
OjpPcGVyYXRvcjsKKyAgICAgICAgICAgIHYuaVZhbHVlID0gJDI7CisgICAgICAgICAgICAkJC0+
YWRkVmFsdWUodik7CisgICAgICAgICAgICAkJC0+YWRkVmFsdWUocGFyc2VyLT5zaW5rRmxvYXRp
bmdWYWx1ZSgkMykpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICQkID0gMDsKKworICAg
IH0KKyAgICB8IGNhbGNfZnVuY19leHByIGNhbGNfZnVuY19vcGVyYXRvciBjYWxjX2Z1bmNfcGFy
ZW5fZXhwciB7CisgICAgICAgIGlmICgkMSAmJiAkMiAmJiAkMykgeworICAgICAgICAgICAgJCQg
PSAkMTsKKyAgICAgICAgICAgIENTU1BhcnNlclZhbHVlIHY7CisgICAgICAgICAgICB2LmlkID0g
MDsKKyAgICAgICAgICAgIHYudW5pdCA9IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvcjsKKyAgICAg
ICAgICAgIHYuaVZhbHVlID0gJDI7CisgICAgICAgICAgICAkJC0+YWRkVmFsdWUodik7CisgICAg
ICAgICAgICAkJC0+ZXh0ZW5kKCooJDMpKTsKKyAgICAgICAgfSBlbHNlIAorICAgICAgICAgICAg
JCQgPSAwOworICAgIH0KKyAgICB8IGNhbGNfZnVuY19wYXJlbl9leHByCisgICAgfCBjYWxjX2Z1
bmNfZXhwciBlcnJvciB7CisgICAgICAgICQkID0gMDsKKyAgICB9CisgIDsKKworY2FsY19mdW5j
X2V4cHJfbGlzdDoKKyAgICBjYWxjX2Z1bmNfZXhwciAgeworICAgICAgICAkJCA9ICQxOworICAg
IH0gICAgCisgICAgfCBjYWxjX2Z1bmNfZXhwcl9saXN0ICcsJyBtYXliZV9zcGFjZSBjYWxjX2Z1
bmNfZXhwciB7CisgICAgICAgIGlmICgkMSAmJiAkNCkgeworICAgICAgICAgICAgJCQgPSAkMTsK
KyAgICAgICAgICAgIENTU1BhcnNlclZhbHVlIHY7CisgICAgICAgICAgICB2LmlkID0gMDsKKyAg
ICAgICAgICAgIHYudW5pdCA9IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvcjsKKyAgICAgICAgICAg
IHYuaVZhbHVlID0gJywnOworICAgICAgICAgICAgJCQtPmFkZFZhbHVlKHYpOworICAgICAgICAg
ICAgJCQtPmV4dGVuZCgqKCQ0KSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgJCQgPSAw
OworICAgIH0KKyAgICAKKworY2FsY19mdW5jdGlvbjoKKyAgICBDQUxDRlVOQ1RJT04gbWF5YmVf
c3BhY2UgY2FsY19mdW5jX2V4cHIgJyknIG1heWJlX3NwYWNlIHsKKyAgICAgICAgQ1NTUGFyc2Vy
RnVuY3Rpb24qIGYgPSBwYXJzZXItPmNyZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsKKyAgICAgICAg
Zi0+bmFtZSA9ICQxOworICAgICAgICBmLT5hcmdzID0gcGFyc2VyLT5zaW5rRmxvYXRpbmdWYWx1
ZUxpc3QoJDMpOworICAgICAgICAkJC5pZCA9IDA7CisgICAgICAgICQkLnVuaXQgPSBDU1NQYXJz
ZXJWYWx1ZTo6RnVuY3Rpb247CisgICAgICAgICQkLmZ1bmN0aW9uID0gZjsKKyAgICB9CisgICAg
fCBDQUxDRlVOQ1RJT04gbWF5YmVfc3BhY2UgZXJyb3IgeworICAgICAgICBZWUVSUk9SOworICAg
IH0KKyAgICA7CisKKworbWluX29yX21heDoKKyAgICBNSU5GVU5DVElPTiB7CisgICAgICAgICQk
ID0gJDE7CisgICAgfQorICAgIHwgTUFYRlVOQ1RJT04geworICAgICAgICAkJCA9ICQxOworICAg
IH0KKyAgICA7CisKK21pbl9vcl9tYXhfZnVuY3Rpb246CisgICAgbWluX29yX21heCBtYXliZV9z
cGFjZSBjYWxjX2Z1bmNfZXhwcl9saXN0ICcpJyBtYXliZV9zcGFjZSB7CisgICAgICAgIENTU1Bh
cnNlckZ1bmN0aW9uKiBmID0gcGFyc2VyLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7CisgICAg
ICAgIGYtPm5hbWUgPSAkMTsKKyAgICAgICAgZi0+YXJncyA9IHBhcnNlci0+c2lua0Zsb2F0aW5n
VmFsdWVMaXN0KCQzKTsKKyAgICAgICAgJCQuaWQgPSAwOworICAgICAgICAkJC51bml0ID0gQ1NT
UGFyc2VyVmFsdWU6OkZ1bmN0aW9uOworICAgICAgICAkJC5mdW5jdGlvbiA9IGY7CisgICAgfSAK
KyAgICB8IG1pbl9vcl9tYXggbWF5YmVfc3BhY2UgZXJyb3IgeworICAgICAgICBZWUVSUk9SOwor
ICAgIH0KKyAgICA7CisKKy8qIGVycm9yIGhhbmRsaW5nIHJ1bGVzICovCisKK3NhdmVfYmxvY2s6
CisgICAgY2xvc2luZ19icmFjZSB7CisgICAgICAgICQkID0gMDsKKyAgICB9CisgIHwgZXJyb3Ig
Y2xvc2luZ19icmFjZSB7CisgICAgICAgICQkID0gMDsKKyAgICB9CisgICAgOworCitpbnZhbGlk
X2F0OgorICAgIEFUS0VZV09SRCBlcnJvciBpbnZhbGlkX2Jsb2NrIHsKKyAgICAgICAgJCQgPSAw
OworICAgIH0KKyAgfCBBVEtFWVdPUkQgZXJyb3IgJzsnIHsKKyAgICAgICAgJCQgPSAwOworICAg
IH0KKyAgICA7CisKK2ludmFsaWRfcnVsZToKKyAgICBlcnJvciBpbnZhbGlkX2Jsb2NrIHsKKyAg
ICAgICAgJCQgPSAwOworICAgIH0KKworLyoKKyAgU2VlbXMgbGlrZSB0aGUgdHdvIHJ1bGVzIGJl
bG93IGFyZSB0cnlpbmcgdG9vIG11Y2ggYW5kIHZpb2xhdGluZworICBodHRwOi8vd3d3LmhpeGll
LmNoL3Rlc3RzL2V2aWwvbWl4ZWQvY3NzZXJyb3JoYW5kbGluZy5odG1sCisKKyAgfCBlcnJvciAn
OycgeworICAgICAgICAkJCA9IDA7CisgICAgfQorICB8IGVycm9yICd9JyB7CisgICAgICAgICQk
ID0gMDsKKyAgICB9CisqLworICAgIDsKKworaW52YWxpZF9ibG9jazoKKyAgICAneycgZXJyb3Ig
aW52YWxpZF9ibG9ja19saXN0IGVycm9yIGNsb3NpbmdfYnJhY2UgeworICAgICAgICBwYXJzZXIt
PmludmFsaWRCbG9ja0hpdCgpOworICAgIH0KKyAgfCAneycgZXJyb3IgY2xvc2luZ19icmFjZSB7
CisgICAgICAgIHBhcnNlci0+aW52YWxpZEJsb2NrSGl0KCk7CisgICAgfQorICAgIDsKKworaW52
YWxpZF9ibG9ja19saXN0OgorICAgIGludmFsaWRfYmxvY2sKKyAgfCBpbnZhbGlkX2Jsb2NrX2xp
c3QgZXJyb3IgaW52YWxpZF9ibG9jaworOworCislJQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTR3JhbW1hci55LmluY2x1ZGVzIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dy
YW1tYXIueS5pbmNsdWRlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjY4OTc0NTBiNDFjNTgxNzAxOTNiOWIwMDhi
NjQ2YjRjZGE2NjdhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dy
YW1tYXIueS5pbmNsdWRlcwpAQCAtMCwwICsxLDg1IEBACisleworCisvKgorICogIENvcHlyaWdo
dCAoQykgMjAwMi0yMDAzIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3Nr
dXJ5YWtvdiAoYXBAbnlwb3AuY29tKQorICogIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRl
bCA8ZXJpY0B3ZWJraXQub3JnPgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkNTU1BhcnNlci5oIgorI2luY2x1ZGUg
IkNTU1BhcnNlck1vZGUuaCIKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgorI2luY2x1
ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKyNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgorI2luY2x1
ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCisjaW5jbHVkZSAiTWVkaWFRdWVy
eUV4cC5oIgorI2luY2x1ZGUgIlN0eWxlUnVsZS5oIgorI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250
ZW50cy5oIgorI2luY2x1ZGUgIldlYktpdENTU0tleWZyYW1lUnVsZS5oIgorI2luY2x1ZGUgIldl
YktpdENTU0tleWZyYW1lc1J1bGUuaCIKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2lu
Y2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKKyNkZWZpbmUgWVlNQUxMT0Mg
ZmFzdE1hbGxvYworI2RlZmluZSBZWUZSRUUgZmFzdEZyZWUKKworI2RlZmluZSBZWUVOQUJMRV9O
TFMgMAorI2RlZmluZSBZWUxUWVBFX0lTX1RSSVZJQUwgMQorI2RlZmluZSBZWU1BWERFUFRIIDEw
MDAwCisjZGVmaW5lIFlZREVCVUcgMAorCisjaWYgWVlERUJVRyA+IDAKKyNkZWZpbmUgWVlQUklO
VChGaWxlLFR5cGUsVmFsdWUpIHByaW50X3Rva2VuX3ZhbHVlKEZpbGUsVHlwZSxWYWx1ZSkKK3N0
YXRpYyB2b2lkIHByaW50X3Rva2VuX3ZhbHVlKEZJTEUgKiB5eW91dHB1dCwgaW50IHl5dHlwZSwg
WVlTVFlQRSBjb25zdCAmeXl2YWx1ZSkKK3sKKyAgICBzd2l0Y2ggKHl5dHlwZSkgeworICAgIGNh
c2UgSURFTlQ6CisgICAgY2FzZSBTVFJJTkc6CisgICAgY2FzZSBOVEg6CisgICAgY2FzZSBIRVg6
CisgICAgY2FzZSBJRFNFTDoKKyAgICBjYXNlIERJTUVOOgorICAgIGNhc2UgSU5WQUxJRERJTUVO
OgorICAgIGNhc2UgVVJJOgorICAgIGNhc2UgRlVOQ1RJT046CisgICAgY2FzZSBBTllGVU5DVElP
TjoKKyAgICBjYXNlIE5PVEZVTkNUSU9OOgorICAgIGNhc2UgQ0FMQ0ZVTkNUSU9OOgorICAgIGNh
c2UgTUlORlVOQ1RJT046CisgICAgY2FzZSBNQVhGVU5DVElPTjoKKyAgICBjYXNlIFZBUl9ERUZJ
TklUSU9OOgorICAgIGNhc2UgVU5JQ09ERVJBTkdFOgorICAgICAgICBZWUZQUklOVEYoeXlvdXRw
dXQsICIlcyIsIFN0cmluZyh5eXZhbHVlLnN0cmluZykudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKyNlbmRpZgor
CislfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2VncmFtbWFyLnBsIGIvU291
cmNlL1dlYkNvcmUvY3NzL21ha2VncmFtbWFyLnBsCmluZGV4IDA2ZmFhYTkzZDMyNjBhYjUzMDQx
N2M0MzNlMTY4YzMzNWJjNjdhZWYuLjRlMDQ1MmVkODM1MWEzZTRiM2Y0ZWFmYzVjOTllMmZlOGU4
OTc0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlZ3JhbW1hci5wbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZWdyYW1tYXIucGwKQEAgLTIxLDM1ICsyMSw3NSBAQAog
dXNlIHN0cmljdDsKIHVzZSB3YXJuaW5nczsKIAotbXkgJGdyYW1tYXIgPSAkQVJHVlswXTsKLW15
ICRmaWxlQmFzZSA9ICRBUkdWWzFdOwordXNlIEZpbGU6OkJhc2VuYW1lOwordXNlIEZpbGU6OlNw
ZWM7Cit1c2UgR2V0b3B0OjpMb25nOwogCi1zeXN0ZW0oImJpc29uIC1kIC1wIGNzc3l5ICIgLiAk
Z3JhbW1hciAuICIgLW8gIiAuICRmaWxlQmFzZSAuICIudGFiLmMiKTsKK215ICRvdXRwdXREaXIg
PSAiLiI7CitteSAkZXh0cmFEZWZpbmVzID0gIiI7CitteSAkc3ltYm9sc1ByZWZpeCA9ICIiOwor
bXkgJHByZXByb2Nlc3NvciA9ICIiOworbXkgJHByZXByb2Nlc3NPbmx5ID0gMDsKK215ICRiaXNv
biA9ICJiaXNvbiI7CiAKLW9wZW4gSEVBREVSLCAiPiIgLiAkZmlsZUJhc2UgLiAiLmgiIG9yIGRp
ZTsKK0dldE9wdGlvbnMoCisgICAgJ291dHB1dERpcj1zJyA9PiBcJG91dHB1dERpciwKKyAgICAn
ZXh0cmFEZWZpbmVzPXMnID0+IFwkZXh0cmFEZWZpbmVzLAorICAgICdiaXNvbj1zJyA9PiBcJGJp
c29uLAorICAgICdwcmVwcm9jZXNzb3I9cycgPT4gXCRwcmVwcm9jZXNzb3IsCisgICAgJ3ByZXBy
b2Nlc3NPbmx5JyA9PiBcJHByZXByb2Nlc3NPbmx5LAorICAgICdzeW1ib2xzUHJlZml4PXMnID0+
IFwkc3ltYm9sc1ByZWZpeAorKTsKKworbXkgJGdyYW1tYXJGaWxlUGF0aCA9ICRBUkdWWzBdOwor
bXkgJGdyYW1tYXJJbmNsdWRlc0ZpbGVQYXRoID0gQEFSR1YgPiAwID8gJEFSR1ZbMV0gOiAiIjsK
KworaWYgKCFsZW5ndGgoJHN5bWJvbHNQcmVmaXgpICYmICEkcHJlcHJvY2Vzc09ubHkpIHsKKyAg
ICBkaWUgIk5lZWQgYSBzeW1ib2xzIHByZWZpeCB0byBnaXZlIHRvIGJpc29uIChlLmcuIGNzc3l5
LCB4cGF0aHl5KSI7Cit9CisKK215ICgkZmlsZW5hbWUsICRiYXNlUGF0aCwgJHN1ZmZpeCkgPSBm
aWxlcGFyc2UoJGdyYW1tYXJGaWxlUGF0aCwgKCIueSIsICIueS5pbiIpKTsKKworaWYgKCRzdWZm
aXggZXEgIi55LmluIikgeworICAgIG15ICRncmFtbWFyRmlsZU91dFBhdGggPSBGaWxlOjpTcGVj
LT5qb2luKCRvdXRwdXREaXIsICIkZmlsZW5hbWUueSIpOworICAgIGlmICghJGdyYW1tYXJJbmNs
dWRlc0ZpbGVQYXRoKSB7CisgICAgICAgICRncmFtbWFySW5jbHVkZXNGaWxlUGF0aCA9ICIke2Jh
c2VQYXRofSR7ZmlsZW5hbWV9LnkuaW5jbHVkZXMiOworICAgIH0KKworICAgIG9wZW4gR1JBTU1B
UiwgIj4kZ3JhbW1hckZpbGVPdXRQYXRoIiBvciBkaWU7CisgICAgb3BlbiBJTkNMVURFUywgIjwk
Z3JhbW1hckluY2x1ZGVzRmlsZVBhdGgiIG9yIGRpZTsKKworICAgIHJlcXVpcmUgcHJlcHJvY2Vz
c29yOworCisgICAgd2hpbGUgKDxJTkNMVURFUz4pIHsKKyAgICAgICAgcHJpbnQgR1JBTU1BUjsK
KyAgICB9CisgICAgcHJpbnQgR1JBTU1BUiBqb2luKCIiLCBhcHBseVByZXByb2Nlc3NvcigkZ3Jh
bW1hckZpbGVQYXRoLCAkZXh0cmFEZWZpbmVzLCAkcHJlcHJvY2Vzc29yKSk7CisgICAgY2xvc2Ug
R1JBTU1BUjsKKworICAgICRncmFtbWFyRmlsZVBhdGggPSAkZ3JhbW1hckZpbGVPdXRQYXRoOwor
CisgICAgZXhpdCBpZiAkcHJlcHJvY2Vzc09ubHk7Cit9CisKK215ICRmaWxlQmFzZSA9IEZpbGU6
OlNwZWMtPmpvaW4oJG91dHB1dERpciwgJGZpbGVuYW1lKTsKK3N5c3RlbSgiJGJpc29uIC1kIC1w
ICRzeW1ib2xzUHJlZml4ICRncmFtbWFyRmlsZVBhdGggLW8gJGZpbGVCYXNlLmNwcCIpOworCitv
cGVuIEhFQURFUiwgIj4kZmlsZUJhc2UuaCIgb3IgZGllOwogcHJpbnQgSEVBREVSIDw8ICJFT0Yi
OwogI2lmbmRlZiBDU1NHUkFNTUFSX0gKICNkZWZpbmUgQ1NTR1JBTU1BUl9ICiBFT0YKIAotb3Bl
biBIUFAsICI8IiAuICRmaWxlQmFzZSAuICIudGFiLmgiIG9yIGRpZTsKK29wZW4gSFBQLCAiPCRm
aWxlQmFzZS5jcHAuaCIgb3Igb3BlbiBIUFAsICI8JGZpbGVCYXNlLmhwcCIgb3IgZGllOwogd2hp
bGUgKDxIUFA+KSB7CiAgICAgcHJpbnQgSEVBREVSOwogfQogY2xvc2UgSFBQOwogCiBwcmludCBI
RUFERVIgIiNlbmRpZlxuIjsKLQogY2xvc2UgSEVBREVSOwogCi11bmxpbmsoJGZpbGVCYXNlIC4g
Ii50YWIuaCIpOwotCi1vcGVuIENQUCwgIj4iIC4gJGZpbGVCYXNlIC4gIi5jcHAiIG9yIGRpZTsK
LW9wZW4gR0VOU1JDLCAiPCIgLiAkZmlsZUJhc2UgLiAiLnRhYi5jIiBvciBkaWU7Ci13aGlsZSAo
PEdFTlNSQz4pIHsKLSAgICBwcmludCBDUFA7Ci19Ci1jbG9zZSBHRU5TUkM7Ci1jbG9zZSBDUFA7
Cit1bmxpbmsoIiRmaWxlQmFzZS5jcHAuaCIpOwordW5saW5rKCIkZmlsZUJhc2UuaHBwIik7CiAK
LXVubGluaygkZmlsZUJhc2UgLiAiLnRhYi5jIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2Uv
V2ViS2l0TWFjcm9zLmNtYWtlIGIvU291cmNlL2NtYWtlL1dlYktpdE1hY3Jvcy5jbWFrZQppbmRl
eCBlZDhlYjVkMzIwZjIzZGQ4ZGY4NGJiNzRlNmQ3ZTI5ZjU1OTA0NWVmLi45YmE5ODhmOWVlMTUw
NjZkMDg0NzI0NjEwMDMwZmYwYzBiNTNlZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvV2Vi
S2l0TWFjcm9zLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9XZWJLaXRNYWNyb3MuY21ha2UKQEAg
LTE0OCwxMSArMTQ4LDEyIEBAIE1BQ1JPIChHRU5FUkFURV9IQVNIX0xVVCBfaW5wdXQgX291dHB1
dCkKIEVORE1BQ1JPICgpCiAKIAotTUFDUk8gKEdFTkVSQVRFX0dSQU1NQVIgX3ByZWZpeCBfaW5w
dXQgX291dHB1dF9oZWFkZXIgX291dHB1dF9zb3VyY2UpCitNQUNSTyAoR0VORVJBVEVfR1JBTU1B
UiBfcHJlZml4IF9pbnB1dCBfb3V0cHV0X2hlYWRlciBfb3V0cHV0X3NvdXJjZSBfZmVhdHVyZXMp
CiAgICAgQUREX0NVU1RPTV9DT01NQU5EKAogICAgICAgICBPVVRQVVQgJHtfb3V0cHV0X2hlYWRl
cn0gJHtfb3V0cHV0X3NvdXJjZX0KICAgICAgICAgTUFJTl9ERVBFTkRFTkNZICR7X2lucHV0fQot
ICAgICAgICBDT01NQU5EICR7QklTT05fRVhFQ1VUQUJMRX0gLXAgJHtfcHJlZml4fSAke19pbnB1
dH0gLW8gJHtfb3V0cHV0X3NvdXJjZX0gLS1kZWZpbmVzPSR7X291dHB1dF9oZWFkZXJ9CisgICAg
ICAgIERFUEVORFMgJHtfaW5wdXR9CisgICAgICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9
IC1JICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL3NjcmlwdHMgJHtXRUJDT1JFX0RJUn0vY3NzL21h
a2VncmFtbWFyLnBsIC0tb3V0cHV0RGlyICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfSAt
LWV4dHJhRGVmaW5lcyAiJHtfZmVhdHVyZXN9IiAtLXByZXByb2Nlc3NvciAiJHtDT0RFX0dFTkVS
QVRPUl9QUkVQUk9DRVNTT1J9IiAtLWJpc29uICIke0JJU09OX0VYRUNVVEFCTEV9IiAtLXN5bWJv
bHNQcmVmaXggJHtfcHJlZml4fSAke19pbnB1dH0KICAgICAgICAgVkVSQkFUSU0pCiBFTkRNQUNS
TyAoKQogCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZmUwNTliZWYw
ZjVjMTc4MjA1ZjA3NjgwZGQ5NmFkZjY4MzY4YTJlNC4uNWUyNDIxMmVhNGRjMTg3MzM2YjBhNGYw
YWMyMWUyYjQwMGQ5ZTQ1NiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDEyLTEwLTA5ICBQYWJsbyBGbG91cmV0ICA8cGFibG9mQG1vdG9y
b2xhLmNvbT4KKworICAgICAgICBQcmUtcHJvY2VzcyBDU1NHcmFtbWFyLnkgYmVmb3JlIHJ1bm5p
bmcgdGhyb3VnaCBiaXNvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk0MjkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KKworICAg
ICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRNYWNyb3MuY21ha2U6CisgICAgICAgICAgICBVc2Ug
V2ViQ29yZS9jc3MvbWFrZWdyYW1tYXIucGwgdG8gZ2VuZXJhdGUgYmlzb24gZ3JhbW1hciBmaWxl
cy4KKwogMjAxMi0xMC0xMiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzMTE4OS4K
</data>

          </attachment>
      

    </bug>

</bugzilla>