<?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>111738</bug_id>
          
          <creation_ts>2013-03-07 09:07:23 -0800</creation_ts>
          <short_desc>[GTK] Set up the libPlatformGtk.la library</short_desc>
          <delta_ts>2013-03-18 02:47: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>
          
          <blocked>110330</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>850138</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-03-07 09:07:23 -0800</bug_when>
    <thetext>[GTK] Set up the libPlatformGtk.la library</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850166</commentid>
    <comment_count>1</comment_count>
      <attachid>192019</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-03-07 09:33:20 -0800</bug_when>
    <thetext>Created attachment 192019
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850172</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-07 09:41:48 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850176</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-07 09:42:04 -0800</bug_when>
    <thetext>Attachment 192019 did not pass style-queue:

Source/Platform/gtk/GtkVersioning.c:21:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/Platform/gtk/GtkVersioning.c:33:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:38:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:43:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:44:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:45:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:46:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:47:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:48:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:124:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:125:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:126:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:138:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:139:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:152:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:153:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:184:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:185:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:226:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:239:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:240:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:241:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:252:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:253:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:254:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:255:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:256:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:259:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:260:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:261:  Weird number of spaces at line-start.  Are yFailed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;GNUmakefile.am&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platform/GNUmakefile.am&apos;, u&apos;Source/Platform/GNUmakefile.list.am&apos;, u&apos;Source/Platform/gtk/GtkVersioning.c&apos;, u&apos;Source/Platform/gtk/GtkVersioning.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.am&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/bindings/gobject/GNUmakefile.am&apos;, u&apos;Source/WebCore/platform/gtk/GtkVersioning.c&apos;, u&apos;Source/WebCore/platform/gtk/GtkVersioning.h&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/WebKit/gtk/GNUmakefile.am&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/GNUmakefile.am&apos;, u&apos;Source/WebKit2/Scripts/generate-forwarding-headers.pl&apos;, u&apos;Source/WebKit2/Shared/gtk/ArgumentCodersGtk.cpp&apos;, u&apos;Source/WebKit2/Shared/gtk/WebEventFactory.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/GNUmakefile.am&apos;, u&apos;Tools/TestWebKitAPI/GNUmakefile.am&apos;]&quot; exit_code: 1
ou using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:262:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:263:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:324:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:356:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.h:37:  The parameter name &quot;surface&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/Platform/gtk/GtkVersioning.h:38:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.h:39:  The parameter name &quot;drawable&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/Platform/gtk/GtkVersioning.h:52:  The parameter name &quot;window&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/Platform/gtk/GtkVersioning.h:52:  The parameter name &quot;content&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/Platform/gtk/GtkVersioning.h:87:  The parameter name &quot;window&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/Platform/gtk/GtkVersioning.h:108:  The parameter name &quot;adjustment&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/Platform/gtk/GtkVersioning.h:109:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.h:114:  The parameter name &quot;window&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/Platform/gtk/GtkVersioning.h:118:  The parameter name &quot;invocationHint&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:45:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 45 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850185</commentid>
    <comment_count>4</comment_count>
      <attachid>192025</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-03-07 09:52:37 -0800</bug_when>
    <thetext>Created attachment 192025
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850189</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-07 09:55:33 -0800</bug_when>
    <thetext>Attachment 192025 did not pass style-queue:

Source/Platform/gtk/GtkVersioning.c:21:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/Platform/gtk/GtkVersioning.c:33:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:38:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:43:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:44:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:45:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:46:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:47:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:48:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:124:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:125:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:126:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:138:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:139:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:152:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:153:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:184:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:185:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:226:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:239:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:240:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:241:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:252:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:253:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:254:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:255:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:256:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:259:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:260:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:261:  Weird number of spaces at line-start.  Are yFailed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;GNUmakefile.am&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platform/GNUmakefile.am&apos;, u&apos;Source/Platform/GNUmakefile.list.am&apos;, u&apos;Source/Platform/gtk/GtkVersioning.c&apos;, u&apos;Source/Platform/gtk/GtkVersioning.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.am&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/bindings/gobject/GNUmakefile.am&apos;, u&apos;Source/WebCore/platform/gtk/GtkVersioning.c&apos;, u&apos;Source/WebCore/platform/gtk/GtkVersioning.h&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/WebKit/gtk/GNUmakefile.am&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/GNUmakefile.am&apos;, u&apos;Source/WebKit2/Scripts/generate-forwarding-headers.pl&apos;, u&apos;Source/WebKit2/Shared/gtk/ArgumentCodersGtk.cpp&apos;, u&apos;Source/WebKit2/Shared/gtk/WebEventFactory.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/GNUmakefile.am&apos;, u&apos;Tools/TestWebKitAPI/GNUmakefile.am&apos;]&quot; exit_code: 1
ou using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:262:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:263:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:324:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.c:356:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.h:37:  The parameter name &quot;surface&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/Platform/gtk/GtkVersioning.h:38:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.h:39:  The parameter name &quot;drawable&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/Platform/gtk/GtkVersioning.h:52:  The parameter name &quot;window&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/Platform/gtk/GtkVersioning.h:52:  The parameter name &quot;content&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/Platform/gtk/GtkVersioning.h:87:  The parameter name &quot;window&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/Platform/gtk/GtkVersioning.h:108:  The parameter name &quot;adjustment&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/Platform/gtk/GtkVersioning.h:109:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/gtk/GtkVersioning.h:114:  The parameter name &quot;window&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/Platform/gtk/GtkVersioning.h:118:  The parameter name &quot;invocationHint&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:45:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 45 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851262</commentid>
    <comment_count>6</comment_count>
      <attachid>192025</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-03-08 09:45:23 -0800</bug_when>
    <thetext>Comment on attachment 192025
Patch

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

&gt; Source/WebKit2/GNUmakefile.am:526
&gt; +	$(HILDON_CPPFLAGS) \
&gt; +	$(CAIRO_CFLAGS) \
&gt; +	$(CLUTTER_CFLAGS) \
&gt; +	$(COVERAGE_CFLAGS) \
&gt; +	$(ENCHANT_CFLAGS) \
&gt; +	$(FREETYPE_CFLAGS) \
&gt; +	$(GAIL_CFLAGS) \
&gt; +	$(GAMEPAD_CFLAGS) \
&gt; +	$(GEOCLUE_CFLAGS) \
&gt; +	$(GLIB_CFLAGS) \
&gt; +	$(GSTREAMER_CFLAGS) \
&gt; +	$(GTK_CFLAGS) \
&gt; +	$(HILDON_CFLAGS) \
&gt; +	$(LIBSECRET_CFLAGS) \
&gt; +	$(LIBSOUP_CFLAGS) \
&gt; +	$(LIBXML_CFLAGS) \
&gt; +	$(LIBXSLT_CFLAGS) \
&gt; +	$(SQLITE3_CFLAGS) \
&gt; +	$(UNICODE_CFLAGS) \

I think you should limit this just to the cflags you actually need. I&apos;d move this to the platform gnumakefile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853511</commentid>
    <comment_count>7</comment_count>
      <attachid>192746</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-03-12 08:54:31 -0700</bug_when>
    <thetext>Created attachment 192746
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853515</commentid>
    <comment_count>8</comment_count>
      <attachid>192746</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-03-12 08:56:37 -0700</bug_when>
    <thetext>Comment on attachment 192746
Patch for landing

Clearing flags on attachment: 192746

Committed r145552: &lt;http://trac.webkit.org/changeset/145552&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853516</commentid>
    <comment_count>9</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-03-12 08:56:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192019</attachid>
            <date>2013-03-07 09:33:20 -0800</date>
            <delta_ts>2013-03-07 09:52:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111738-20130307182923.patch</filename>
            <type>text/plain</type>
            <size>59456</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA2NDQ2NTZhOGJjYmZi
Y2VkOTk3ODNhNzZlZjQ5NDdlODk5YTI5MDE3Li40NjczMGY1YzAxMmIzMTFiMGZlMmUxY2VkN2I0
NWI2YWRjOGEzODg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMy0wMy0wNyAg
WmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFtHVEtdIFNl
dCB1cCB0aGUgbGliUGxhdGZvcm1HdGsubGEgbGlicmFyeQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExNzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkZWQuIFNldCB1
cCB0aGUgcnVsZXMgZm9yIGJ1aWxkaW5nIHRoZSBuZXcgbGliUGxhdGZvcm1HdGsubGEuIEZvciBu
b3cgaXQgd2lsbCBiZSBidWlsdCBpbgorICAgICAgICB0aGUgc2FtZSB3YXkgYXMgbGliV2ViQ29y
ZUd0ay5sYSBhbmQgaW4gcGFyYWxsZWwgd2l0aCBpdCB3aGlsZSB0aGUgc291cmNlcyBhcmUgbW92
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybQorICAgICAgICB0byBTb3VyY2UvUGxhdGZv
cm0vZ3RrIGFuZCBlYWNoIG1pZ3JhdGVkIHNvdXJjZSBmaWxlIG1vdmVzIHRvIGJlIGJ1aWx0IGlu
IGxpYlBsYXRmb3JtR3RrLmxhIGluc3RlYWQgb2YgbGliV2ViQ29yZUd0ay5sYS4KKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOiBBZGRlZC4gTGlzdHMgdGhlIGJ1aWxkIHRhcmdldHMgZm9y
IHRoZSBsaWJQbGF0Zm9ybUd0ay5sYS4KKyAgICAgICAgKiBndGsvR3RrVmVyc2lvbmluZy5jOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1ZlcnNpb25pbmcuYy4g
VGhpcyBmaWxlIGlzIGluZGVwZW5kZW50IG9mIFdlYkNvcmUgYW5kIGNhbiBiZSBtb3ZlZAorICAg
ICAgICBhbmQgY2hhbmdlZCB0byBiZSBidWlsdCBpbnRvIGxpYlBsYXRmb3JtR3RrLmxhIHJpZ2h0
IGF3YXkuCisgICAgICAgICogZ3RrL0d0a1ZlcnNpb25pbmcuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmguIERpdHRvLgorCiAyMDEzLTAz
LTA2ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbQ2hyb21p
dW1dIEZpeCBieXRlIG9yZGVyaW5nIGJ1Z3MgcmVhZGluZyBiYWNrIFdlYkdMIGNhbnZhc2VzJyBj
b250ZW50IG9uIEFuZHJvaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjYzZiNWM0MDQzODUwZmM2MDkyNTljNTk2
MzZhMWVhNjQ4ZjU5YzhhLi5jZGFmYWEzZjQ4Y2ZlM2MzZjNmYjJmYmNhNmFiZmI2NjdiOGYzOWJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDMtMDcgIFphbiBEb2JlcnNlayAg
PHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KKworICAgICAgICBbR1RLXSBTZXQgdXAgdGhlIGxpYlBs
YXRmb3JtR3RrLmxhIGxpYnJhcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExMTczOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAtIG5vIG5ldyBmdW5jdGlvbmFsaXR5LgorCisgICAg
ICAgICogR05VbWFrZWZpbGUuYW06IFJlZmVyZW5jZSBwbGF0Zm9ybWd0a19jcHBmbGFncywgcGxh
dGZvcm1ndGtfc291cmNlcyB2YXJpYWJsZXMgYWxvbmcgd2l0aCB3ZWJjb3JlZ3RrX2NwcGZsYWdz
LCB3ZWJjb3JlZ3RrX3NvdXJjZXMgdmFyaWFibGVzLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxp
c3QuYW06IFJlbW92aW5nIEd0a1ZlcnNpb25pbmcuYyBhbmQgR3RrVmVyc2lvbmluZy5oIGZyb20g
dGhlIHNvdXJjZXMgbGlzdCwgdGhlc2UgZmlsZXMgaGF2ZSBiZWVuIG1vdmVkIHVuZGVyIFNvdXJj
ZS9QbGF0Zm9ybS4KKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtOiBE
aXR0byBvbiB0aGUgcGxhdGZvcm1ndGtfKiB2YXJpYWJsZXMuCisKIDIwMTMtMDMtMDcgIERhdmlk
IEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgdmlzaWJsZV91
bml0cy5oIHRvIFZpc2libGVVbml0cy5oIGluIFdlYkNvcmUudmN4cHJvai5maWx0ZXJzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cKaW5kZXggMzZiNjNmZWZhZDQ3MjYyMDNjZTA5YjUxZGNjNTQ0NzAwZTAzOTljYy4u
Y2Y2MzA3MDFhMjVhY2FiM2NiMmU0YjU4Zjc2ZDgxNWEwNzI2ZGQ4MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAzLTA3ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNl
a0BnbWFpbC5jb20+CisKKyAgICAgICAgW0dUS10gU2V0IHVwIHRoZSBsaWJQbGF0Zm9ybUd0ay5s
YSBsaWJyYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTE3MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEdOVW1ha2VmaWxlLmFtOiBSZWZlcmVuY2UgcGxhdGZvcm1ndGtfY3BwZmxhZ3MgdmFyaWFi
bGUsIGxpYlBsYXRmb3JtR3RrLmxhIGFsb25nIHdpdGggd2ViY29yZWd0a19jcHBmbGFncyB2YXJp
YWJsZSwgbGliV2ViQ29yZUd0ay5sYS4KKyAgICAgICAgQWRqdXN0IHRoZSBwYXRoIHRvIEd0a1Zl
cnNpb25pbmcuYywgdGhlIGZpbGUgaGFzIG1vdmVkIHVuZGVyIFNvdXJjZS9QbGF0Zm9ybS4KKwog
MjAxMy0wMy0wNyAgVG9tYXMgUG9wZWxhICA8dHBvcGVsYUByZWRoYXQuY29tPgogCiAgICAgICAg
IFtHVEtdIEV4cG9zZSAiU2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24iIHNldHRpbmcgaW50
byBXZWJLaXRXZWJTZXR0aW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDA2MmU3MjYzYjQwZGZjNjE1YzQ1ZjU4
Y2Y4NmU0YWZkNjcyYTY5MDUuLjVjNjhkN2FhZWY5ZjBiYjJjYTYzZGNhYTQ4MDc1ODQyZmEzZDM4
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMy0wMy0wNyAgWmFuIERvYmVyc2Vr
ICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFtHVEtdIFNldCB1cCB0aGUgbGli
UGxhdGZvcm1HdGsubGEgbGlicmFyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTExNzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogUmVmZXJlbmNlIHBsYXRmb3JtZ3RrX2Nw
cGZsYWdzIHZhcmlhYmxlLCBsaWJQbGF0Zm9ybUd0ay5sYSBhbG9uZyB3aXRoIHdlYmNvcmVndGtf
Y3BwZmxhZ3MgdmFyaWFibGUsIGxpYldlYkNvcmVHdGsubGEuCisgICAgICAgIFNldCB1cCB0aGUg
bGliUGxhdGZvcm1HdGsyLmxhIGxpYnJhcnkgbXVjaCBsaWtlIGhvdyBsaWJXZWJDb3JlR3RrMi5s
YSBpcy4KKyAgICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWZvcndhcmRpbmctaGVhZGVycy5wbDog
SW5jbHVkZSAnUGxhdGZvcm0nIGFtb25nc3QgdGhlIGZyYW1ld29ya3MgZm9yIHdoaWNoIHRoZSBm
b3J3YXJkaW5nIGhlYWRlcnMgc2hvdWxkIGJlIGdlbmVyYXRlZC4KKyAgICAgICAgKiBTaGFyZWQv
Z3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcDogQWRqdXN0IHRoZSBHdGtWZXJzaW9uaW5nLmggaW5j
bHVkZSBzbyBpdCBpcyBpbmNsdWRlZCB0aHJvdWdoIHRoZSBQbGF0Zm9ybSBmcmFtZXdvcmsgZm9y
d2FyZGluZyBoZWFkZXIuCisgICAgICAgICogU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3Bw
OiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5j
cHA6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0
c2NhcGVQbHVnaW5YMTEuY3BwOiBEaXR0by4KKwogMjAxMy0wMy0wNiAgQWxleGV5IFByb3NrdXJ5
YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGUgcmFpc2VzIGFuIHVuY2F1Z2h0IE9iamVjdGl2ZS1DIGV4Y2VwdGlvbiBpZiBwYXRoIGlz
IGVtcHR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vR05VbWFrZWZpbGUuYW0gYi9Tb3Vy
Y2UvUGxhdGZvcm0vR05VbWFrZWZpbGUuYW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDQyOTRiODQ0ZTBiNTM4ODFh
NjVjMWIzYTc4YWMzNDA1MWM3MGEzMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9y
bS9HTlVtYWtlZmlsZS5hbQpAQCAtMCwwICsxLDU1IEBACisjIFRoZSBwbGF0Zm9ybSBsYXllciBj
b2RlIGlzIGJ1aWx0IGludG8gdHdvIHNlcGFyYXRlIHN0YXRpYyBsaWJyYXJpZXMgLSBsaWJQbGF0
Zm9ybUd0ay5sYQorIyBpcyBidWlsdCBmcm9tIGZpbGVzIHRoYXQgcmVxdWlyZSBHVEsrIGFuZCBs
aWJQbGF0Zm9ybS5sYSBpcyBidWlsdCBmcm9tIGFsbCB0aGUgb3RoZXIgZmlsZXMuCisjIFRoaXMg
bWFrZXMgaXQgcG9zc2libGUgdG8gYnVpbGQgdHdvIHNlcGFyYXRlIGxpYlBsYXRmb3JtR3RrLmxh
IGxpYnJhcmllcywgb25lIHVzaW5nIEdUSzMKKyMgYW5kIHRoZSBvdGhlciAobmFtZWQgbGliUGxh
dGZvcm1HdGsyLmxhKSB1c2luZyBHVEsyLiBUaGUgbGF0dGVyIGlzIHJlcXVpcmVkIGJ5IHRoZQor
IyBXZWJLaXRQbHVnaW5Qcm9jZXNzIGluIFdlYktpdDIgYXMgc29tZSBwbHVnaW5zIChzdWNoIGFz
IEZsYXNoKSBzdGlsbCB1c2UgR1RLMi4KKyMgRm9yIG5vdyB3ZSBvbmx5IGJ1aWxkIHRoZSBsaWJQ
bGF0Zm9ybUd0ayBsaWJyYXJ5IGFzIHRoZXJlIGFyZSBubyBzb3VyY2UgZmlsZXMgaW4gcGxhY2Ug
eWV0CisjIHRoYXQgY291bGQgYmUgYnVpbHQgaW50byBsaWJQbGF0Zm9ybS4KKworcGxhdGZvcm1n
dGtfY3BwZmxhZ3MgKz0gXAorCS1EV0VCS0lUR1RLX0FQSV9WRVJTSU9OX1NUUklORz1cIkBXRUJL
SVRHVEtfQVBJX1ZFUlNJT05AXCIgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9QbGF0Zm9ybS9ndGsK
Kworbm9pbnN0X0xUTElCUkFSSUVTICs9IFwKKwlsaWJQbGF0Zm9ybUd0ay5sYQorCitsaWJQbGF0
Zm9ybUd0a19sYV9TT1VSQ0VTID0gXAorCSQocGxhdGZvcm1ndGtfc291cmNlcykKKworbGliUGxh
dGZvcm1HdGtfbGFfQ1hYRkxBR1MgPSBcCisJJChTWU1CT0xfVklTSUJJTElUWV9JTkxJTkVTKSBc
CisJJChnbG9iYWxfY3h4ZmxhZ3MpCisKK2xpYlBsYXRmb3JtR3RrX2xhX0NGTEFHUyA9IFwKKwkk
KFNZTUJPTF9WSVNJQklMSVRZKSBcCisJJChnbG9iYWxfY2ZsYWdzKQorCitsaWJQbGF0Zm9ybUd0
a19sYV9DUFBGTEFHUyA9IFwKKwktREJVSUxESU5HX1dFQktJVCBcCisJJChnbG9iYWxfY3BwZmxh
Z3MpIFwKKwkkKHBsYXRmb3JtZ3RrX2NwcGZsYWdzKSBcCisJJChqYXZhc2NyaXB0Y29yZV9jcHBm
bGFncykgXAorCS1mbm8tc3RyaWN0LWFsaWFzaW5nIFwKKwkkKEhJTERPTl9DUFBGTEFHUykgXAor
CSQoQ0FJUk9fQ0ZMQUdTKSBcCisJJChDTFVUVEVSX0NGTEFHUykgXAorCSQoQ09WRVJBR0VfQ0ZM
QUdTKSBcCisJJChFTkNIQU5UX0NGTEFHUykgXAorCSQoRlJFRVRZUEVfQ0ZMQUdTKSBcCisJJChH
QUlMX0NGTEFHUykgXAorCSQoR0FNRVBBRF9DRkxBR1MpIFwKKwkkKEdFT0NMVUVfQ0ZMQUdTKSBc
CisJJChHTElCX0NGTEFHUykgXAorCSQoR1NUUkVBTUVSX0NGTEFHUykgXAorCSQoR1RLX0NGTEFH
UykgXAorCSQoSElMRE9OX0NGTEFHUykgXAorCSQoTElCU0VDUkVUX0NGTEFHUykgXAorCSQoTElC
U09VUF9DRkxBR1MpIFwKKwkkKExJQlhNTF9DRkxBR1MpIFwKKwkkKExJQlhTTFRfQ0ZMQUdTKSBc
CisJJChTUUxJVEUzX0NGTEFHUykgXAorCSQoVU5JQ09ERV9DRkxBR1MpIFwKKwkkKFhDT01QT1NJ
VEVfQ0ZMQUdTKSBcCisJJChYREFNQUdFX0NGTEFHUykgXAorCSQoWFJFTkRFUl9DRkxBR1MpIFwK
KwkkKFhUX0NGTEFHUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9HTlVtYWtlZmlsZS5s
aXN0LmFtIGIvU291cmNlL1BsYXRmb3JtL0dOVW1ha2VmaWxlLmxpc3QuYW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Nzk2YmVjZmI3MmUzN2JlZmViNjdhZDU1MThmNjI5ODc5ZWE0NjYzMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9QbGF0Zm9ybS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0wLDAgKzEsMyBAQAor
cGxhdGZvcm1ndGtfc291cmNlcyArPSBcCisJU291cmNlL1BsYXRmb3JtL2d0ay9HdGtWZXJzaW9u
aW5nLmMgXAorCVNvdXJjZS9QbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvUGxhdGZvcm0vZ3RrL0d0a1ZlcnNpb25pbmcuYyBiL1NvdXJjZS9QbGF0Zm9ybS9n
dGsvR3RrVmVyc2lvbmluZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjMmY4NGMyZWY4ODY2YzAzYzA2ZjE2ZGMy
MTU5ZmZlYTk5N2NkYzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vZ3RrL0d0
a1ZlcnNpb25pbmcuYwpAQCAtMCwwICsxLDM4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBDb2xsYWJvcmEgTHRkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSwgUy5MLgorICoK
KyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjaW5jbHVkZSAiR3RrVmVyc2lvbmluZy5oIgorCisjaW5jbHVkZSA8Z3RrL2d0ay5o
PgorCisjaWZkZWYgR0RLX1dJTkRPV0lOR19YMTEKKyNpbmNsdWRlIDxYMTEvWGF0b20uaD4KKyNp
bmNsdWRlIDxnZGsvZ2RreC5oPgorI2VuZGlmCisKKyNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMiwg
MTQsIDApCit2b2lkIGd0a19hZGp1c3RtZW50X3NldF92YWx1ZShHdGtBZGp1c3RtZW50KiBhZGp1
c21lbnQsIGdkb3VibGUgdmFsdWUpCit7CisgICAgICAgIG1fYWRqdXN0bWVudC0+dmFsdWUgPSBt
X2N1cnJlbnRQb3M7CisgICAgICAgIGd0a19hZGp1c3RtZW50X3ZhbHVlX2NoYW5nZWQobV9hZGp1
c3RtZW50KTsKK30KKwordm9pZCBndGtfYWRqdXN0bWVudF9jb25maWd1cmUoR3RrQWRqdXN0bWVu
dCogYWRqdXN0bWVudCwgZ2RvdWJsZSB2YWx1ZSwgZ2RvdWJsZSBsb3dlciwgZ2RvdWJsZSB1cHBl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkb3VibGUgc3RlcEluY3JlbWVudCwg
Z2RvdWJsZSBwYWdlSW5jcmVtZW50LCBnZG91YmxlIHBhZ2VTaXplKQoreworICAgIGdfb2JqZWN0
X2ZyZWV6ZV9ub3RpZnkoR19PQkpFQ1QoYWRqdXN0bWVudCkpOworCisgICAgZ19vYmplY3Rfc2V0
KGFkanVzdG1lbnQsCisgICAgICAgICAgICAgICAgICJsb3dlciIsIGxvd2VyLAorICAgICAgICAg
ICAgICAgICAidXBwZXIiLCB1cHBlciwKKyAgICAgICAgICAgICAgICAgInN0ZXAtaW5jcmVtZW50
Iiwgc3RlcEluY3JlbWVudCwKKyAgICAgICAgICAgICAgICAgInBhZ2UtaW5jcmVtZW50IiwgcGFn
ZUluY3JlbWVudCwKKyAgICAgICAgICAgICAgICAgInBhZ2Utc2l6ZSIsIHBhZ2VTaXplLAorICAg
ICAgICAgICAgICAgICBOVUxMKTsKKworICAgIGdfb2JqZWN0X3RoYXdfbm90aWZ5KEdfT0JKRUNU
KGFkanVzdG1lbnQpKTsKKworICAgIGd0a19hZGp1c3RtZW50X2NoYW5nZWQoYWRqdXN0bWVudCk7
CisgICAgZ3RrX2FkanVzdG1lbnRfdmFsdWVfY2hhbmdlZChhZGp1c3RtZW50KTsKK30KKyNlbmRp
ZgorCitHZGtEZXZpY2UgKmdldERlZmF1bHRHREtQb2ludGVyRGV2aWNlKEdka1dpbmRvdyogd2lu
ZG93KQoreworI2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgorICAgIEdka0RldmljZU1hbmFnZXIg
Km1hbmFnZXIgPSAgZ2RrX2Rpc3BsYXlfZ2V0X2RldmljZV9tYW5hZ2VyKGdka193aW5kb3dfZ2V0
X2Rpc3BsYXkod2luZG93KSk7CisgICAgcmV0dXJuIGdka19kZXZpY2VfbWFuYWdlcl9nZXRfY2xp
ZW50X3BvaW50ZXIobWFuYWdlcik7CisjZWxzZQorICAgIHJldHVybiBnZGtfZGV2aWNlX2dldF9j
b3JlX3BvaW50ZXIoKTsKKyNlbmRpZiAvLyBHVEtfQVBJX1ZFUlNJT05fMgorfQorCisjaWYgIUdU
S19DSEVDS19WRVJTSU9OKDIsIDE3LCAzKQordm9pZCBnZGtfd2luZG93X2dldF9yb290X2Nvb3Jk
cyhHZGtXaW5kb3cqIHdpbmRvdywgZ2ludCB4LCBnaW50IHksIGdpbnQqIHJvb3RYLCBnaW50KiBy
b290WSkKK3sKKyAgICBnZGtfd2luZG93X2dldF9yb290X29yaWdpbih3aW5kb3csIHJvb3RYLCBy
b290WSk7CisgICAgKnJvb3RYID0gKnJvb3RYICsgeDsKKyAgICAqcm9vdFkgPSAqcm9vdFkgKyB5
OworfQorI2VuZGlmCisKK0dka0N1cnNvciAqIGJsYW5rQ3Vyc29yKCkKK3sKKyNpZiBHVEtfQ0hF
Q0tfVkVSU0lPTigyLCAxNiwgMCkKKyAgICByZXR1cm4gZ2RrX2N1cnNvcl9uZXcoR0RLX0JMQU5L
X0NVUlNPUik7CisjZWxzZQorICAgIEdka0N1cnNvciAqIGN1cnNvcjsKKyAgICBHZGtQaXhtYXAg
KiBzb3VyY2U7CisgICAgR2RrUGl4bWFwICogbWFzazsKKyAgICBHZGtDb2xvciBmb3JlZ3JvdW5k
ID0geyAwLCA2NTUzNSwgMCwgMCB9OyAvLyBSZWQuCisgICAgR2RrQ29sb3IgYmFja2dyb3VuZCA9
IHsgMCwgMCwgMCwgNjU1MzUgfTsgLy8gQmx1ZS4KKyAgICBzdGF0aWMgZ2NoYXIgY3Vyc29yQml0
c1tdID0gezB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwfTsKKworICAgIHNv
dXJjZSA9IGdka19iaXRtYXBfY3JlYXRlX2Zyb21fZGF0YSgwLCBjdXJzb3JCaXRzLCA4LCA4KTsK
KyAgICBtYXNrID0gZ2RrX2JpdG1hcF9jcmVhdGVfZnJvbV9kYXRhKDAsIGN1cnNvckJpdHMsIDgs
IDgpOworICAgIGN1cnNvciA9IGdka19jdXJzb3JfbmV3X2Zyb21fcGl4bWFwKHNvdXJjZSwgbWFz
aywgJmZvcmVncm91bmQsICZiYWNrZ3JvdW5kLCA4LCA4KTsKKyAgICBnZGtfcGl4bWFwX3VucmVm
KHNvdXJjZSk7CisgICAgZ2RrX3BpeG1hcF91bnJlZihtYXNrKTsKKyAgICByZXR1cm4gY3Vyc29y
OworI2VuZGlmIC8vIEdUS19DSEVDS19WRVJTSU9OKDIsIDE2LCAwKQorfQorCisjaWYgIUdUS19D
SEVDS19WRVJTSU9OKDIsIDE2LCAwKQorY29uc3QgZ2NoYXIqIGd0a19tZW51X2l0ZW1fZ2V0X2xh
YmVsKEd0a01lbnVJdGVtKiBtZW51SXRlbSkKK3sKKyAgICBHdGtXaWRnZXQgKiBsYWJlbCA9IGd0
a19iaW5fZ2V0X2NoaWxkKEdUS19CSU4obWVudUl0ZW0pKTsKKyAgICBpZiAoR1RLX0lTX0xBQkVM
KGxhYmVsKSkKKyAgICAgICAgcmV0dXJuIGd0a19sYWJlbF9nZXRfdGV4dChHVEtfTEFCRUwobGFi
ZWwpKTsKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAx
NiwgMCkKKworI2lmZGVmIEdUS19BUElfVkVSU0lPTl8yCitzdGF0aWMgY2Fpcm9fZm9ybWF0X3QK
K2dka19jYWlyb19mb3JtYXRfZm9yX2NvbnRlbnQoY2Fpcm9fY29udGVudF90IGNvbnRlbnQpCit7
CisgICAgc3dpdGNoIChjb250ZW50KSB7CisgICAgY2FzZSBDQUlST19DT05URU5UX0NPTE9SOgor
ICAgICAgICByZXR1cm4gQ0FJUk9fRk9STUFUX1JHQjI0OworICAgIGNhc2UgQ0FJUk9fQ09OVEVO
VF9BTFBIQToKKyAgICAgICAgcmV0dXJuIENBSVJPX0ZPUk1BVF9BODsKKyAgICBjYXNlIENBSVJP
X0NPTlRFTlRfQ09MT1JfQUxQSEE6CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIENBSVJP
X0ZPUk1BVF9BUkdCMzI7CisgICAgfQorfQorCitzdGF0aWMgY2Fpcm9fc3VyZmFjZV90KgorZ2Rr
X2NhaXJvX3N1cmZhY2VfY29lcmNlX3RvX2ltYWdlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWlyb19jb250ZW50X3QgY29udGVu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhlaWdodCkKK3sKKyAgICBjYWlyb19zdXJm
YWNlX3QgKiBjb3B5OworICAgIGNhaXJvX3QgKiBjcjsKKworICAgIGlmIChjYWlyb19zdXJmYWNl
X2dldF90eXBlKHN1cmZhY2UpID09IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRQorICAgICAgICAm
JiBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KHN1cmZhY2UpID09IGNvbnRlbnQKKyAgICAgICAg
JiYgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSkgPj0gd2lkdGgKKyAgICAg
ICAgJiYgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpID49IGhlaWdodCkK
KyAgICAgICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKHN1cmZhY2UpOworCisgICAg
Y29weSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKGdka19jYWlyb19mb3JtYXRfZm9yX2Nv
bnRlbnQoY29udGVudCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdp
ZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQpOworCisg
ICAgY3IgPSBjYWlyb19jcmVhdGUoY29weSk7CisgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLCBD
QUlST19PUEVSQVRPUl9TT1VSQ0UpOworICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjciwg
c3VyZmFjZSwgMCwgMCk7CisgICAgY2Fpcm9fcGFpbnQoY3IpOworICAgIGNhaXJvX2Rlc3Ryb3ko
Y3IpOworCisgICAgcmV0dXJuIGNvcHk7Cit9CisKK3N0YXRpYyB2b2lkCitjb252ZXJ0X2FscGhh
KGd1Y2hhciAqIGRlc3REYXRhLCBpbnQgZGVzdFN0cmlkZSwKKyAgICAgICAgICAgICAgZ3VjaGFy
ICogc3JjRGF0YSwgaW50IHNyY1N0cmlkZSwKKyAgICAgICAgICAgICAgaW50IHNyY1gsIGludCBz
cmNZLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgaW50IHgsIHk7CisKKyAgICBzcmNE
YXRhICs9IHNyY1N0cmlkZSAqIHNyY1kgKyBzcmNZICogNDsKKworICAgIGZvciAoeSA9IDA7IHkg
PCBoZWlnaHQ7IHkrKykgeworICAgICAgICBndWludDMyICogc3JjID0gKGd1aW50MzIgKikgc3Jj
RGF0YTsKKworICAgICAgICBmb3IgKHggPSAwOyB4IDwgd2lkdGg7IHgrKykgeworICAgICAgICAg
ICAgZ3VpbnQgYWxwaGEgPSBzcmNbeF0gPj4gMjQ7CisKKyAgICAgICAgICAgIGlmICghYWxwaGEp
IHsKKyAgICAgICAgICAgICAgICBkZXN0RGF0YVt4ICogNCArIDBdID0gMDsKKyAgICAgICAgICAg
ICAgICBkZXN0RGF0YVt4ICogNCArIDFdID0gMDsKKyAgICAgICAgICAgICAgICBkZXN0RGF0YVt4
ICogNCArIDJdID0gMDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGVz
dERhdGFbeCAqIDQgKyAwXSA9ICgoKHNyY1t4XSAmIDB4ZmYwMDAwKSA+PiAxNikgKiAyNTUgKyBh
bHBoYSAvIDIpIC8gYWxwaGE7CisgICAgICAgICAgICAgICAgZGVzdERhdGFbeCAqIDQgKyAxXSA9
ICgoKHNyY1t4XSAmIDB4MDBmZjAwKSA+PiAgOCkgKiAyNTUgKyBhbHBoYSAvIDIpIC8gYWxwaGE7
CisgICAgICAgICAgICAgICAgZGVzdERhdGFbeCAqIDQgKyAyXSA9ICgoKHNyY1t4XSAmIDB4MDAw
MGZmKSA+PiAgMCkgKiAyNTUgKyBhbHBoYSAvIDIpIC8gYWxwaGE7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBkZXN0RGF0YVt4ICogNCArIDNdID0gYWxwaGE7CisgICAgICAgIH0KKworICAg
ICAgICBzcmNEYXRhICs9IHNyY1N0cmlkZTsKKyAgICAgICAgZGVzdERhdGEgKz0gZGVzdFN0cmlk
ZTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitjb252ZXJ0X25vX2FscGhhKGd1Y2hhciAqIGRl
c3REYXRhLCBpbnQgZGVzdFN0cmlkZSwgZ3VjaGFyICogc3JjRGF0YSwKKyAgICAgICAgICAgICAg
ICAgaW50IHNyY1N0cmlkZSwgaW50IHNyY1gsIGludCBzcmNZLAorICAgICAgICAgICAgICAgICBp
bnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgaW50IHgsIHk7CisKKyAgICBzcmNEYXRhICs9
IHNyY1N0cmlkZSAqIHNyY1kgKyBzcmNYICogNDsKKworICAgIGZvciAoeSA9IDA7IHkgPCBoZWln
aHQ7IHkrKykgeworICAgICAgICBndWludDMyICogc3JjID0gKGd1aW50MzIgKikgc3JjRGF0YTsK
KworICAgICAgICBmb3IgKHggPSAwOyB4IDwgd2lkdGg7IHgrKykgeworICAgICAgICAgICAgZGVz
dERhdGFbeCAqIDMgKyAwXSA9IHNyY1t4XSA+PiAxNjsKKyAgICAgICAgICAgIGRlc3REYXRhW3gg
KiAzICsgMV0gPSBzcmNbeF0gPj4gIDg7CisgICAgICAgICAgICBkZXN0RGF0YVt4ICogMyArIDJd
ID0gc3JjW3hdOworICAgICAgICB9CisKKyAgICAgICAgc3JjRGF0YSArPSBzcmNTdHJpZGU7Cisg
ICAgICAgIGRlc3REYXRhICs9IGRlc3RTdHJpZGU7CisgICAgfQorfQorCisvKioKKyAqIGdka19w
aXhidWZfZ2V0X2Zyb21fc3VyZmFjZToKKyAqIEBzdXJmYWNlOiBzdXJmYWNlIHRvIGNvcHkgZnJv
bQorICogQHNyY194OiBTb3VyY2UgWCBjb29yZGluYXRlIHdpdGhpbiBAc3VyZmFjZQorICogQHNy
Y195OiBTb3VyY2UgWSBjb29yZGluYXRlIHdpdGhpbiBAc3VyZmFjZQorICogQHdpZHRoOiBXaWR0
aCBpbiBwaXhlbHMgb2YgcmVnaW9uIHRvIGdldAorICogQGhlaWdodDogSGVpZ2h0IGluIHBpeGVs
cyBvZiByZWdpb24gdG8gZ2V0CisgKgorICogVHJhbnNmZXJzIGltYWdlIGRhdGEgZnJvbSBhICNj
YWlyb19zdXJmYWNlX3QgYW5kIGNvbnZlcnRzIGl0IHRvIGFuIFJHQihBKQorICogcmVwcmVzZW50
YXRpb24gaW5zaWRlIGEgI0dka1BpeGJ1Zi4gVGhpcyBhbGxvd3MgeW91IHRvIGVmZmljaWVudGx5
IHJlYWQKKyAqIGluZGl2aWR1YWwgcGl4ZWxzIGZyb20gY2Fpcm8gc3VyZmFjZXMuIEZvciAjR2Rr
V2luZG93cywgdXNlCisgKiBnZGtfcGl4YnVmX2dldF9mcm9tX3dpbmRvdygpIGluc3RlYWQuCisg
KgorICogVGhpcyBmdW5jdGlvbiB3aWxsIGNyZWF0ZSBhbiBSR0IgcGl4YnVmIHdpdGggOCBiaXRz
IHBlciBjaGFubmVsLiBUaGUgcGl4YnVmCisgKiB3aWxsIGNvbnRhaW4gYW4gYWxwaGEgY2hhbm5l
bCBpZiB0aGUgQHN1cmZhY2UgY29udGFpbnMgb25lLgorICoKKyAqIFJldHVybiB2YWx1ZTogKHRy
YW5zZmVyIGZ1bGwpOiBBIG5ld2x5LWNyZWF0ZWQgcGl4YnVmIHdpdGggYSByZWZlcmVuY2UgY291
bnQKKyAqIG9mIDEsIG9yICVOVUxMIG9uIGVycm9yCisgKiovCitHZGtQaXhidWYqCitnZGtfcGl4
YnVmX2dldF9mcm9tX3N1cmZhY2UoY2Fpcm9fc3VyZmFjZV90ICogc3VyZmFjZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgc3JjWCwgaW50IHNyY1ksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIGNhaXJvX2NvbnRlbnRf
dCBjb250ZW50OworICAgIEdka1BpeGJ1ZiAqIGRlc3Q7CisKKyAgICAvKiBHZW5lcmFsIHNhbml0
eSBjaGVja3MgKi8KKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzdXJmYWNlLCBOVUxMKTsKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChzcmNYID49IDAgJiYgc3JjWSA+PSAwLCBOVUxMKTsKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbCh3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCwgTlVMTCk7CisK
KyAgICBjb250ZW50ID0gY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChzdXJmYWNlKSB8IENBSVJP
X0NPTlRFTlRfQ09MT1I7CisgICAgZGVzdCA9IGdka19waXhidWZfbmV3KEdES19DT0xPUlNQQUNF
X1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgISEoY29udGVudCAmIENBSVJPX0NPTlRF
TlRfQUxQSEEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICA4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICB3aWR0aCwgaGVpZ2h0KTsKKworICAgIHN1cmZhY2UgPSBnZGtfY2Fpcm9fc3Vy
ZmFjZV9jb2VyY2VfdG9faW1hZ2Uoc3VyZmFjZSwgY29udGVudCwgc3JjWCArIHdpZHRoLCBzcmNZ
ICsgaGVpZ2h0KTsKKyAgICBjYWlyb19zdXJmYWNlX2ZsdXNoKHN1cmZhY2UpOworICAgIGlmIChj
YWlyb19zdXJmYWNlX3N0YXR1cyhzdXJmYWNlKSB8fCAhZGVzdCkgeworICAgICAgICBjYWlyb19z
dXJmYWNlX2Rlc3Ryb3koc3VyZmFjZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwor
ICAgIGlmIChnZGtfcGl4YnVmX2dldF9oYXNfYWxwaGEoZGVzdCkpCisgICAgICAgIGNvbnZlcnRf
YWxwaGEoZ2RrX3BpeGJ1Zl9nZXRfcGl4ZWxzKGRlc3QpLAorICAgICAgICAgICAgICAgICAgICAg
ICBnZGtfcGl4YnVmX2dldF9yb3dzdHJpZGUoZGVzdCksCisgICAgICAgICAgICAgICAgICAgICAg
IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSksCisgICAgICAgICAgICAgICAg
ICAgICAgIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJmYWNlKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgc3JjWCwgc3JjWSwKKyAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgs
IGhlaWdodCk7CisgICAgZWxzZQorICAgICAgICBjb252ZXJ0X25vX2FscGhhKGdka19waXhidWZf
Z2V0X3BpeGVscyhkZXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RrX3BpeGJ1Zl9n
ZXRfcm93c3RyaWRlKGRlc3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoc3VyZmFjZSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNyY1gsIHNyY1ksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBo
ZWlnaHQpOworCisgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KHN1cmZhY2UpOworICAgIHJldHVy
biBkZXN0OworfQorCisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMiwgMjQsIDApCit2b2lkIGdldEdk
a0RyYXdhYmxlU2l6ZShHZGtEcmF3YWJsZSAqZHJhd2FibGUsIGludCAqd2lkdGgsIGludCAqaGVp
Z2h0KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoR0RLX0lTX1BJWE1BUChkcmF3YWJsZSkgfHwg
R0RLX0lTX1dJTkRPVyhkcmF3YWJsZSkpOworCisgICAgaWYgKEdES19JU19QSVhNQVAoZHJhd2Fi
bGUpKSB7CisgICAgICAgIGdka19waXhtYXBfZ2V0X3NpemUoR0RLX1BJWE1BUChkcmF3YWJsZSks
IHdpZHRoLCBoZWlnaHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR2RrV2luZG93
ICp3aW5kb3cgPSBHREtfV0lORE9XKGRyYXdhYmxlKTsKKyAgICAqd2lkdGggPSBnZGtfd2luZG93
X2dldF93aWR0aCh3aW5kb3cpOworICAgICpoZWlnaHQgPSBnZGtfd2luZG93X2dldF9oZWlnaHQo
d2luZG93KTsKK30KKyNlbHNlCit2b2lkIGdldEdka0RyYXdhYmxlU2l6ZShHZGtEcmF3YWJsZSAq
ZHJhd2FibGUsIGludCAqd2lkdGgsIGludCAqaGVpZ2h0KQoreworICAgIGdka19kcmF3YWJsZV9n
ZXRfc2l6ZShkcmF3YWJsZSwgd2lkdGgsIGhlaWdodCk7Cit9CisjZW5kaWYgLy8gR1RLX0NIRUNL
X1ZFUlNJT04oMiwgMjQsIDApCisKKyNlbmRpZiAvLyBHVEtfQVBJX1ZFUlNJT05fMgorCisjaWYg
IUdMSUJfQ0hFQ0tfVkVSU0lPTigyLCAyNywgMSkKK2dib29sZWFuIGdfc2lnbmFsX2FjY3VtdWxh
dG9yX2ZpcnN0X3dpbnMoR1NpZ25hbEludm9jYXRpb25IaW50ICppbnZvY2F0aW9uSGludCwgR1Zh
bHVlICpyZXR1cm5BY2N1bXVsYXRvciwgY29uc3QgR1ZhbHVlICpoYW5kbGVyUmV0dXJuLCBncG9p
bnRlciBkYXRhKQoreworICAgIGdfdmFsdWVfY29weShoYW5kbGVyUmV0dXJuLCByZXR1cm5BY2N1
bXVsYXRvcik7CisgICAgcmV0dXJuIEZBTFNFOworfQorI2VuZGlmCisKKyNpZiAhR1RLX0NIRUNL
X1ZFUlNJT04oMiwgMjIsIDApCitjYWlyb19zdXJmYWNlX3QgKmdka193aW5kb3dfY3JlYXRlX3Np
bWlsYXJfc3VyZmFjZShHZGtXaW5kb3cgKndpbmRvdywgY2Fpcm9fY29udGVudF90IGNvbnRlbnQs
IGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBjYWlyb190ICpjYWlyb0NvbnRleHQgPSBn
ZGtfY2Fpcm9fY3JlYXRlKHdpbmRvdyk7CisgICAgY2Fpcm9fc3VyZmFjZV90ICpjYWlyb1N1cmZh
Y2UgPSBjYWlyb19nZXRfdGFyZ2V0KGNhaXJvQ29udGV4dCk7CisgICAgY2Fpcm9fc3VyZmFjZV90
ICpuZXdTdXJmYWNlID0gY2Fpcm9fc3VyZmFjZV9jcmVhdGVfc2ltaWxhcihjYWlyb1N1cmZhY2Us
IGNvbnRlbnQsIHdpZHRoLCBoZWlnaHQpOworICAgIGNhaXJvX2Rlc3Ryb3koY2Fpcm9Db250ZXh0
KTsKKyAgICByZXR1cm4gbmV3U3VyZmFjZTsKK30KKyNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVSU0lP
TigyLCAyMiwgMCkKKworI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigzLCAzLCA2KQorI2lmZGVmIEdE
S19XSU5ET1dJTkdfWDExCitzdGF0aWMgaW50IGdldFNjcmVlbkN1cnJlbnREZXNrdG9wKEdka1Nj
cmVlbiAqc2NyZWVuKQoreworICAgIERpc3BsYXkgKmRpc3BsYXkgPSBHREtfRElTUExBWV9YRElT
UExBWShnZGtfc2NyZWVuX2dldF9kaXNwbGF5KHNjcmVlbikpOworICAgIFdpbmRvdyByb290V2lu
ZG93ID0gWFJvb3RXaW5kb3coZGlzcGxheSwgR0RLX1NDUkVFTl9YTlVNQkVSKHNjcmVlbikpOwor
ICAgIEF0b20gY3VycmVudERlc2t0b3AgPSBYSW50ZXJuQXRvbShkaXNwbGF5LCAiX05FVF9DVVJS
RU5UX0RFU0tUT1AiLCBUcnVlKTsKKworICAgIEF0b20gdHlwZTsKKyAgICBpbnQgZm9ybWF0Owor
ICAgIHVuc2lnbmVkIGxvbmcgaXRlbXNDb3VudCwgYnl0ZXNBZnRlcjsKKyAgICB1bnNpZ25lZCBj
aGFyICpyZXR1cm5lZERhdGEgPSBOVUxMOworICAgIFhHZXRXaW5kb3dQcm9wZXJ0eShkaXNwbGF5
LCByb290V2luZG93LCBjdXJyZW50RGVza3RvcCwgMCwgR19NQVhMT05HLCBGYWxzZSwgWEFfQ0FS
RElOQUwsCisgICAgICAgICAgICAgICAgICAgICAgICZ0eXBlLCAmZm9ybWF0LCAmaXRlbXNDb3Vu
dCwgJmJ5dGVzQWZ0ZXIsICZyZXR1cm5lZERhdGEpOworCisgICAgaW50IHdvcmtzcGFjZSA9IDA7
CisgICAgaWYgKHR5cGUgPT0gWEFfQ0FSRElOQUwgJiYgZm9ybWF0ID09IDMyICYmIGl0ZW1zQ291
bnQgPiAwKQorICAgICAgICB3b3Jrc3BhY2UgPSAoaW50KXJldHVybmVkRGF0YVswXTsKKworICAg
IGlmIChyZXR1cm5lZERhdGEpCisgICAgICAgIFhGcmVlKHJldHVybmVkRGF0YSk7CisKKyAgICBy
ZXR1cm4gd29ya3NwYWNlOworfQorCitzdGF0aWMgdm9pZCBnZXRTY3JlZW5Xb3JrQXJlYShHZGtT
Y3JlZW4gKnNjcmVlbiwgR2RrUmVjdGFuZ2xlICphcmVhKQoreworICAgIERpc3BsYXkgKmRpc3Bs
YXkgPSBHREtfRElTUExBWV9YRElTUExBWShnZGtfc2NyZWVuX2dldF9kaXNwbGF5KHNjcmVlbikp
OworICAgIEF0b20gd29ya0FyZWEgPSBYSW50ZXJuQXRvbShkaXNwbGF5LCAiX05FVF9XT1JLQVJF
QSIsIFRydWUpOworCisgICAgLyogRGVmYXVsdHMgaW4gY2FzZSBvZiBlcnJvci4gKi8KKyAgICBh
cmVhLT54ID0gMDsKKyAgICBhcmVhLT55ID0gMDsKKyAgICBhcmVhLT53aWR0aCA9IGdka19zY3Jl
ZW5fZ2V0X3dpZHRoKHNjcmVlbik7CisgICAgYXJlYS0+aGVpZ2h0ID0gZ2RrX3NjcmVlbl9nZXRf
aGVpZ2h0KHNjcmVlbik7CisKKyAgICBpZiAod29ya0FyZWEgPT0gTm9uZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgV2luZG93IHJvb3RXaW5kb3cgPSBYUm9vdFdpbmRvdyhkaXNwbGF5LCBHREtf
U0NSRUVOX1hOVU1CRVIoc2NyZWVuKSk7CisgICAgQXRvbSB0eXBlOworICAgIGludCBmb3JtYXQ7
CisgICAgdW5zaWduZWQgbG9uZyBpdGVtc0NvdW50LCBieXRlc0FmdGVyOworICAgIHVuc2lnbmVk
IGNoYXIgKnJldHVybmVkRGF0YSA9IDA7CisgICAgaW50IHJlc3VsdCA9IFhHZXRXaW5kb3dQcm9w
ZXJ0eShkaXNwbGF5LCByb290V2luZG93LCB3b3JrQXJlYSwgMCwgNCAqIDMyIC8qIE1heCBsZW5n
dGggKi8sIEZhbHNlLCBBbnlQcm9wZXJ0eVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmdHlwZSwgJmZvcm1hdCwgJml0ZW1zQ291bnQsICZieXRlc0FmdGVyLCAmcmV0
dXJuZWREYXRhKTsKKyAgICBpZiAocmVzdWx0ICE9IFN1Y2Nlc3MgfHwgdHlwZSA9PSBOb25lIHx8
ICFmb3JtYXQgfHwgYnl0ZXNBZnRlciB8fCBpdGVtc0NvdW50ICUgNCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaW50IGRlc2t0b3AgPSBnZXRTY3JlZW5DdXJyZW50RGVza3RvcChzY3JlZW4pOwor
ICAgIGxvbmcgKndvcmtBcmVhcyA9IChsb25nICopcmV0dXJuZWREYXRhOworICAgIGFyZWEtPngg
PSB3b3JrQXJlYXNbZGVza3RvcCAqIDRdOworICAgIGFyZWEtPnkgPSB3b3JrQXJlYXNbZGVza3Rv
cCAqIDQgKyAxXTsKKyAgICBhcmVhLT53aWR0aCA9IHdvcmtBcmVhc1tkZXNrdG9wICogNCArIDJd
OworICAgIGFyZWEtPmhlaWdodCA9IHdvcmtBcmVhc1tkZXNrdG9wICogNCArIDNdOworCisgICAg
WEZyZWUocmV0dXJuZWREYXRhKTsKK30KKyNlbmRpZiAvLyBHREtfV0lORE9XSU5HX1gxMQorCit2
b2lkIGdka19zY3JlZW5fZ2V0X21vbml0b3Jfd29ya2FyZWEoR2RrU2NyZWVuICpzY3JlZW4sIGlu
dCBtb25pdG9yLCBHZGtSZWN0YW5nbGUgKmFyZWEpCit7CisgICAgZ2RrX3NjcmVlbl9nZXRfbW9u
aXRvcl9nZW9tZXRyeShzY3JlZW4sIG1vbml0b3IsIGFyZWEpOworCisjaWZkZWYgR0RLX1dJTkRP
V0lOR19YMTEKKyAgICBHZGtSZWN0YW5nbGUgd29ya0FyZWE7CisgICAgZ2V0U2NyZWVuV29ya0Fy
ZWEoc2NyZWVuLCAmd29ya0FyZWEpOworICAgIGdka19yZWN0YW5nbGVfaW50ZXJzZWN0KCZ3b3Jr
QXJlYSwgYXJlYSwgYXJlYSk7CisjZW5kaWYKK30KKyNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVSU0lP
TigzLCAzLCA2KQpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5n
LmggYi9Tb3VyY2UvUGxhdGZvcm0vZ3RrL0d0a1ZlcnNpb25pbmcuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lM2Nh
YzYzM2EwZDE1YmQ5NzgwM2QwNWIxNmU1ZjYzNDEyNTNhOGE5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmgKQEAgLTAsMCArMSwxMjcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQ29sbGFib3JhIEx0ZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMCBJZ2FsaWEsIFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBHdGtWZXJzaW9uaW5nX2gKKyNk
ZWZpbmUgR3RrVmVyc2lvbmluZ19oCisKKyNpbmNsdWRlICJhdXRvdG9vbHNjb25maWcuaCIKKyNp
bmNsdWRlIDxndGsvZ3RrLmg+CisKKyNpZm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIKKyNpbmNsdWRl
IDxnZGsvZ2Rra2V5c3ltcy1jb21wYXQuaD4KKyNlbmRpZgorCitHX0JFR0lOX0RFQ0xTCisKKy8v
IE1hY3JvcyB0byBhdm9pZCBkZXByZWNhdGlvbiBjaGVja2luZyBjaHVybgorI2lmbmRlZiBHVEtf
QVBJX1ZFUlNJT05fMgorI2RlZmluZSBHREtfV0lORE9XX1hXSU5ET1cod2luZG93KSAoZ2RrX3gx
MV93aW5kb3dfZ2V0X3hpZCh3aW5kb3cpKQorI2Vsc2UKK0dka1BpeGJ1ZiogZ2RrX3BpeGJ1Zl9n
ZXRfZnJvbV9zdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgaW50IHNyY1gsIGludCBz
cmNZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KTsKK3ZvaWQgZ2V0R2RrRHJhd2FibGVTaXplKEdka0RyYXdhYmxlKiBkcmF3YWJs
ZSwgaW50KiB3aWR0aCwgaW50KiBoZWlnaHQpOworI2VuZGlmCisKKyNpZiAhR1RLX0NIRUNLX1ZF
UlNJT04oMiwgMjMsIDQpCisjZGVmaW5lIGdka19waXhtYXBfZ2V0X3NpemUgZ2RrX2RyYXdhYmxl
X2dldF9zaXplCisjZW5kaWYgLy8gR1RLX0NIRUNLX1ZFUlNJT04oMiwgMjMsIDQpCisKKyNpZiAh
R1RLX0NIRUNLX1ZFUlNJT04oMiwgMjMsIDApCisjZGVmaW5lIGdka193aW5kb3dfZ2V0X2Rpc3Bs
YXkod2luZG93KSBnZGtfZHJhd2FibGVfZ2V0X2Rpc3BsYXkod2luZG93KQorI2RlZmluZSBnZGtf
d2luZG93X2dldF92aXN1YWwgZ2RrX2RyYXdhYmxlX2dldF92aXN1YWwKKyNlbmRpZiAvLyBHVEtf
Q0hFQ0tfVkVSU0lPTigyLCAyMywgMCkKKworI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigyLCAyMiwg
MCkKK2NhaXJvX3N1cmZhY2VfdCogZ2RrX3dpbmRvd19jcmVhdGVfc2ltaWxhcl9zdXJmYWNlKEdk
a1dpbmRvdyogd2luZG93LCBjYWlyb19jb250ZW50X3QgY29udGVudCwgaW50IHdpZHRoLCBpbnQg
aGVpZ2h0KTsKKyNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAyMiwgMCkKKworI2lmICFH
VEtfQ0hFQ0tfVkVSU0lPTigyLCAyMSwgMikKKyNkZWZpbmUgZ2RrX3Zpc3VhbF9nZXRfZGVwdGgo
dmlzdWFsKSAodmlzdWFsKS0+ZGVwdGgKKyNkZWZpbmUgZ2RrX3Zpc3VhbF9nZXRfYml0c19wZXJf
cmdiKHZpc3VhbCkgKHZpc3VhbCktPmJpdHNfcGVyX3JnYgorI2RlZmluZSBnZGtfZHJhZ19jb250
ZXh0X2dldF9zZWxlY3RlZF9hY3Rpb24oY29udGV4dCkgKGNvbnRleHQpLT5hY3Rpb24KKyNkZWZp
bmUgZ2RrX2RyYWdfY29udGV4dF9nZXRfYWN0aW9ucyhjb250ZXh0KSAoY29udGV4dCktPmFjdGlv
bnMKKyNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAyMSwgMikKKworI2lmICFHVEtfQ0hF
Q0tfVkVSU0lPTigyLCAyMCwgMCkKKyNkZWZpbmUgZ3RrX3dpZGdldF9nZXRfcmVhbGl6ZWQod2lk
Z2V0KSBHVEtfV0lER0VUX1JFQUxJWkVEKHdpZGdldCkKKyNkZWZpbmUgZ3RrX3dpZGdldF9zZXRf
cmVhbGl6ZWQod2lkZ2V0LCBUUlVFKSBHVEtfV0lER0VUX1NFVF9GTEFHUygod2lkZ2V0KSwgR1RL
X1JFQUxJWkVEKQorI2RlZmluZSBndGtfcmFuZ2VfZ2V0X21pbl9zbGlkZXJfc2l6ZShyYW5nZSkg
KHJhbmdlKS0+bWluX3NsaWRlcl9zaXplCisjZW5kaWYgLy8gR1RLX0NIRUNLX1ZFUlNJT04oMiwg
MjAsIDApCisKKyNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTksIDApCisjZGVmaW5lIGd0a193
aWRnZXRfaXNfdG9wbGV2ZWwod2lkZ2V0KSBHVEtfV0lER0VUX1RPUExFVkVMKHdpZGdldCkKKyNk
ZWZpbmUgZ3RrX3dpZGdldF9nZXRfcmVhbGl6ZWQod2lkZ2V0KSBHVEtfV0lER0VUX1JFQUxJWkVE
KHdpZGdldCkKKyNkZWZpbmUgZ3RrX3dpZGdldF9nZXRfaGFzX3dpbmRvdyh3aWRnZXQpICFHVEtf
V0lER0VUX05PX1dJTkRPVyh3aWRnZXQpCisjZGVmaW5lIGd0a193aWRnZXRfZ2V0X2Nhbl9mb2N1
cyh3aWRnZXQpIEdUS19XSURHRVRfQ0FOX0ZPQ1VTKHdpZGdldCkKKyNkZWZpbmUgZ3RrX3dpZGdl
dF9pc19zZW5zaXRpdmUod2lkZ2V0KSBHVEtfV0lER0VUX0lTX1NFTlNJVElWRSh3aWRnZXQpCisj
ZW5kaWYgLy8gR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTksIDApCisKKyNpZiAhR1RLX0NIRUNLX1ZF
UlNJT04oMiwgMTgsIDApCisjZGVmaW5lIGd0a193aWRnZXRfc2V0X3Zpc2libGUod2lkZ2V0LCBG
QUxTRSkgR1RLX1dJREdFVF9VTlNFVF9GTEFHUygod2lkZ2V0KSwgR1RLX1ZJU0lCTEUpCisjZGVm
aW5lIGd0a193aWRnZXRfZ2V0X3Zpc2libGUod2lkZ2V0KSAoR1RLX1dJREdFVF9GTEFHUyh3aWRn
ZXQpICYgR1RLX1ZJU0lCTEUpCisKKyNkZWZpbmUgZ3RrX3dpZGdldF9zZXRfd2luZG93KHdpZGdl
dCwgbmV3X3dpbmRvdykgKHdpZGdldCktPndpbmRvdyA9IChuZXdfd2luZG93KQorI2RlZmluZSBn
dGtfd2lkZ2V0X3NldF9jYW5fZm9jdXMod2lkZ2V0LCBUUlVFKSBHVEtfV0lER0VUX1NFVF9GTEFH
Uygod2lkZ2V0KSwgR1RLX0NBTl9GT0NVUykKKyNkZWZpbmUgZ3RrX3dpZGdldF9nZXRfYWxsb2Nh
dGlvbih3aWRnZXQsIGFsbG9jKSAoKihhbGxvYykgPSAod2lkZ2V0KS0+YWxsb2NhdGlvbikKKyNk
ZWZpbmUgZ3RrX3dpZGdldF9zZXRfYWxsb2NhdGlvbih3aWRnZXQsIGFsbG9jKSAoKHdpZGdldCkt
PmFsbG9jYXRpb24gPSAqKGFsbG9jKSkKKyNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAx
OCwgMCkKKworI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNywgMykKK3ZvaWQgZ2RrX3dpbmRv
d19nZXRfcm9vdF9jb29yZHMoR2RrV2luZG93KiB3aW5kb3csIGdpbnQgeCwgZ2ludCB5LCBnaW50
KiByb290WCwgZ2ludCogcm9vdFkpOworI2VuZGlmIC8vIEdUS19DSEVDS19WRVJTSU9OKDIsIDE3
LCAzKQorCisjaWYgIUdUS19DSEVDS19WRVJTSU9OKDIsIDE2LCAwKQorY29uc3QgZ2NoYXIqIGd0
a19tZW51X2l0ZW1fZ2V0X2xhYmVsKEd0a01lbnVJdGVtKik7CisjZW5kaWYgLy8gR1RLX0NIRUNL
X1ZFUlNJT04oMiwgMTYsIDApCisKKworI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNCwgMCkK
KyNkZWZpbmUgZ3RrX3dpZGdldF9nZXRfd2luZG93KHdpZGdldCkgKHdpZGdldCktPndpbmRvdwor
I2RlZmluZSBndGtfYWRqdXN0bWVudF9nZXRfdmFsdWUoYWRqKSAoYWRqKS0+dmFsdWUKKyNkZWZp
bmUgZ3RrX2RpYWxvZ19nZXRfY29udGVudF9hcmVhKGRpYWxvZykgKGRpYWxvZyktPnZib3gKKyNk
ZWZpbmUgZ3RrX2RpYWxvZ19nZXRfYWN0aW9uX2FyZWEoZGlhbG9nKSAoZGlhbG9nKS0+YWN0aW9u
X2FyZWEKKyNkZWZpbmUgZ3RrX3NlbGVjdGlvbl9kYXRhX2dldF9sZW5ndGgoZGF0YSkgKGRhdGEp
LT5sZW5ndGgKKyNkZWZpbmUgZ3RrX3NlbGVjdGlvbl9kYXRhX2dldF9kYXRhKGRhdGEpIChkYXRh
KS0+ZGF0YQorI2RlZmluZSBndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X3RhcmdldChkYXRhKSAoZGF0
YSktPnRhcmdldAorI2RlZmluZSBndGtfYWRqdXN0bWVudF9zZXRfcGFnZV9zaXplKGFkaiwgbmV3
VmFsdWUpICgoYWRqKS0+cGFnZV9zaXplID0gbmV3VmFsdWUpCisjZGVmaW5lIGd0a19hZGp1c3Rt
ZW50X3NldF92YWx1ZShhZGosIG5ld1ZhbHVlKSAoKGFkaiktPnZhbHVlID0gbmV3VmFsdWUpCisj
ZGVmaW5lIGd0a19hZGp1c3RtZW50X3NldF9sb3dlcihhZGosIG5ld1ZhbHVlKSAoKGFkaiktPmxv
d2VyID0gbmV3VmFsdWUpCisjZGVmaW5lIGd0a19hZGp1c3RtZW50X3NldF91cHBlcihhZGosIG5l
d1ZhbHVlKSAoKGFkaiktPnVwcGVyID0gbmV3VmFsdWUpCisKK3ZvaWQgZ3RrX2FkanVzdG1lbnRf
Y29uZmlndXJlKEd0a0FkanVzdG1lbnQqIGFkanVzdG1lbnQsIGdkb3VibGUgdmFsdWUsIGdkb3Vi
bGUgbG93ZXIsIGdkb3VibGUgdXBwZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
ZG91YmxlIHN0ZXBJbmNyZW1lbnQsIGdkb3VibGUgcGFnZUluY3JlbWVudCwgZ2RvdWJsZSBwYWdl
U2l6ZSk7CisKK3ZvaWQgZ3RrX2FkanVzdG1lbnRfc2V0X3ZhbHVlKEd0a0FkanVzdG1lbnQqIGFk
anVzbWVudCwgZ2RvdWJsZSB2YWx1ZSk7CisjZW5kaWYgLy8gR1RLX0NIRUNLX1ZFUlNJT04oMiwg
MTQsIDApCisKK0dka0RldmljZSogZ2V0RGVmYXVsdEdES1BvaW50ZXJEZXZpY2UoR2RrV2luZG93
KiB3aW5kb3cpOworR2RrQ3Vyc29yKiBibGFua0N1cnNvcigpOworCisjaWYgIUdMSUJfQ0hFQ0tf
VkVSU0lPTigyLCAyNywgMSkKK2dib29sZWFuIGdfc2lnbmFsX2FjY3VtdWxhdG9yX2ZpcnN0X3dp
bnMoR1NpZ25hbEludm9jYXRpb25IaW50KiBpbnZvY2F0aW9uSGludCwgR1ZhbHVlKiByZXR1cm5B
Y2N1bXVsYXRvciwgY29uc3QgR1ZhbHVlKiBoYW5kbGVyUmV0dXJuLCBncG9pbnRlciBkYXRhKTsK
KyNlbmRpZgorCisjaWYgIUdUS19DSEVDS19WRVJTSU9OKDMsIDMsIDYpCit2b2lkIGdka19zY3Jl
ZW5fZ2V0X21vbml0b3Jfd29ya2FyZWEoR2RrU2NyZWVuICosIGludCBtb25pdG9yLCBHZGtSZWN0
YW5nbGUgKmFyZWEpOworI2VuZGlmCisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvLyBHdGtWZXJz
aW9uaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNjViZDAzYzdjYmE4NTAwZTk4NmE4ZDJh
NTg0MzcyYjc1MjE4NDY0Zi4uMmJiMmRkMzRiMWY0MjUzZTA0OWNhOTNiZjQxZmQyMjc1YmNjMDhi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTE3Miw2ICsxNzIsNyBAQCBsaWJXZWJDb3JlU1ZH
X2xhX0NQUEZMQUdTID0gXAogCS1EQlVJTERJTkdfV2ViQ29yZSBcCiAJLURCVUlMRElOR19XRUJL
SVQgXAogCSQoZ2xvYmFsX2NwcGZsYWdzKSBcCisJJChwbGF0Zm9ybWd0a19jcHBmbGFncykgXAog
CSQod2ViY29yZV9jcHBmbGFncykgXAogCSQod2ViY29yZWd0a19jcHBmbGFncykgXAogCSQoamF2
YXNjcmlwdGNvcmVfY3BwZmxhZ3MpIFwKQEAgLTQyMiw3ICs0MjMsNyBAQCBEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oOiBEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0ludAogIyBJREwgZ2VuZXJhdGlvbiB0YWtlcyBhIGxvbmcgdGltZS4gVGhlIHBpcGUg
cmVwcmVzZW50cyBhbiBvcmRlci1vbmx5IGRlcGVuZGVuY3ksCiAjIHdoaWNoIG1lYW5zIHRoYXQg
R05VbWFrZSB3aWxsIG9ubHkgdHJ5IHRvIGJ1aWxkIHRoZSBkZXBlbmRlbmNpZXMgZmlyc3QsIGJ1
dAogIyBub3QgcmVidWlsZCBhbGwgdGhlIHRhcmdldHMgaWYgdGhlIGRlcGVuZGVuY2llcyBjaGFu
Z2UuCi0kKHdlYmtpdGd0a19zb3VyY2VzKSAkKHdlYmtpdDJfc291cmNlcykgJCh3ZWJraXQyX3Bs
dWdpbl9wcm9jZXNzX3NvdXJjZXMpICQod2ViY29yZV9zb3VyY2VzKSAkKHdlYmNvcmVndGtfc291
cmNlcykgOiB8ICQoc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZSkgJCh3ZWJjb3JlX2J1aWx0
X3NvdXJjZXMpCiskKHdlYmtpdGd0a19zb3VyY2VzKSAkKHdlYmtpdDJfc291cmNlcykgJCh3ZWJr
aXQyX3BsdWdpbl9wcm9jZXNzX3NvdXJjZXMpICQod2ViY29yZV9zb3VyY2VzKSAkKHdlYmNvcmVn
dGtfc291cmNlcykgJChwbGF0Zm9ybWd0a19zb3VyY2VzKSA6IHwgJChzdXBwbGVtZW50YWxfZGVw
ZW5kZW5jeV9maWxlKSAkKHdlYmNvcmVfYnVpbHRfc291cmNlcykKIAogbm9pbnN0X0xUTElCUkFS
SUVTICs9IFwKIAlsaWJXZWJDb3JlUGxhdGZvcm0ubGEgXApAQCAtNDc0LDYgKzQ3NSw3IEBAIGxp
YldlYkNvcmVfbGFfQ1BQRkxBR1MgPSBcCiAJLURCVUlMRElOR19XZWJDb3JlIFwKIAktREJVSUxE
SU5HX1dFQktJVCBcCiAJJChnbG9iYWxfY3BwZmxhZ3MpIFwKKwkkKHBsYXRmb3JtZ3RrX2NwcGZs
YWdzKSBcCiAJJCh3ZWJjb3JlX2NwcGZsYWdzKSBcCiAJJCh3ZWJjb3JlZ3RrX2NwcGZsYWdzKSBc
CiAJJChqYXZhc2NyaXB0Y29yZV9jcHBmbGFncykgXApAQCAtNTM3LDYgKzUzOSw3IEBAIGxpYldl
YkNvcmVQbGF0Zm9ybV9sYV9DRkxBR1MgPSBcCiBsaWJXZWJDb3JlUGxhdGZvcm1fbGFfQ1BQRkxB
R1MgPSBcCiAJLURCVUlMRElOR19XRUJLSVQgXAogCSQoZ2xvYmFsX2NwcGZsYWdzKSBcCisJJChw
bGF0Zm9ybWd0a19jcHBmbGFncykgXAogCSQod2ViY29yZV9jcHBmbGFncykgXAogCSQod2ViY29y
ZWd0a19jcHBmbGFncykgXAogCSQoamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MpIFwKQEAgLTU4Myw2
ICs1ODYsNyBAQCBsaWJXZWJDb3JlR3RrX2xhX0NQUEZMQUdTID0gXAogCS1EQlVJTERJTkdfV2Vi
Q29yZSBcCiAJLURCVUlMRElOR19XRUJLSVQgXAogCSQoZ2xvYmFsX2NwcGZsYWdzKSBcCisJJChw
bGF0Zm9ybWd0a19jcHBmbGFncykgXAogCSQod2ViY29yZV9jcHBmbGFncykgXAogCSQod2ViY29y
ZWd0a19jcHBmbGFncykgXAogCSQoamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MpIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDlmNDU2ZmRkZGQ2Njg3ZjFkYzI2ODdmY2UxOThkNWY4
MTE3YTE0MjYuLmQzOWUwMTE4MDIyYjUxYmJhY2RmZGFiYTk2OTllOTcxMjI5ZTE3MTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNjIwOSw4ICs2MjA5LDYgQEAgd2ViY29yZWd0
a19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrUGx1Z2luV2lk
Z2V0LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtQb3B1cE1lbnUuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrUG9wdXBNZW51LmggXAotCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmMgXAotCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
TG9jYWxpemVkU3RyaW5nc0d0ay5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dv
YmplY3QvR05VbWFrZWZpbGUuYW0KaW5kZXggMjExNGZhOGUzOGNjZDQwMmUzMDE1NmY5NWFhOGFh
ZTA2NTRjZjQ5Yi4uMmVhNjQyOThkMWYzNWJmZjE1MWQ2MjRiZDI5ZmI5ODUwNjE3OTEyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCkBAIC01
MzIsNiArNTMyLDcgQEAgbGliV2ViQ29yZURPTV9sYV9DUFBGTEFHUyA9IFwKIAktSSQoV2ViQ29y
ZSkvYmluZGluZ3MvZ29iamVjdCBcCiAJLUkkKEdFTlNPVVJDRVNfV0VCS0lURE9NKSBcCiAJJChn
bG9iYWxfY3BwZmxhZ3MpIFwKKwkkKHBsYXRmb3JtZ3RrX2NwcGZsYWdzKSBcCiAJJCh3ZWJjb3Jl
X2NwcGZsYWdzKSBcCiAJJCh3ZWJjb3JlZ3RrX2NwcGZsYWdzKSBcCiAJJChqYXZhc2NyaXB0Y29y
ZV9jcHBmbGFncykgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0
a1ZlcnNpb25pbmcuYyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5n
LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjMmY4NGMyZWY4ODY2YzAzYzA2ZjE2
ZGMyMTU5ZmZlYTk5N2NkYzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1ZlcnNpb25pbmcuYworKysg
L2Rldi9udWxsCkBAIC0xLDM4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIENv
bGxhYm9yYSBMdGQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhLCBTLkwuCi0gKgotICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICov
Ci0KLSNpbmNsdWRlICJHdGtWZXJzaW9uaW5nLmgiCi0KLSNpbmNsdWRlIDxndGsvZ3RrLmg+Ci0K
LSNpZmRlZiBHREtfV0lORE9XSU5HX1gxMQotI2luY2x1ZGUgPFgxMS9YYXRvbS5oPgotI2luY2x1
ZGUgPGdkay9nZGt4Lmg+Ci0jZW5kaWYKLQotI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNCwg
MCkKLXZvaWQgZ3RrX2FkanVzdG1lbnRfc2V0X3ZhbHVlKEd0a0FkanVzdG1lbnQqIGFkanVzbWVu
dCwgZ2RvdWJsZSB2YWx1ZSkKLXsKLSAgICAgICAgbV9hZGp1c3RtZW50LT52YWx1ZSA9IG1fY3Vy
cmVudFBvczsKLSAgICAgICAgZ3RrX2FkanVzdG1lbnRfdmFsdWVfY2hhbmdlZChtX2FkanVzdG1l
bnQpOwotfQotCi12b2lkIGd0a19hZGp1c3RtZW50X2NvbmZpZ3VyZShHdGtBZGp1c3RtZW50KiBh
ZGp1c3RtZW50LCBnZG91YmxlIHZhbHVlLCBnZG91YmxlIGxvd2VyLCBnZG91YmxlIHVwcGVyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RvdWJsZSBzdGVwSW5jcmVtZW50LCBnZG91
YmxlIHBhZ2VJbmNyZW1lbnQsIGdkb3VibGUgcGFnZVNpemUpCi17Ci0gICAgZ19vYmplY3RfZnJl
ZXplX25vdGlmeShHX09CSkVDVChhZGp1c3RtZW50KSk7Ci0KLSAgICBnX29iamVjdF9zZXQoYWRq
dXN0bWVudCwKLSAgICAgICAgICAgICAgICAgImxvd2VyIiwgbG93ZXIsCi0gICAgICAgICAgICAg
ICAgICJ1cHBlciIsIHVwcGVyLAotICAgICAgICAgICAgICAgICAic3RlcC1pbmNyZW1lbnQiLCBz
dGVwSW5jcmVtZW50LAotICAgICAgICAgICAgICAgICAicGFnZS1pbmNyZW1lbnQiLCBwYWdlSW5j
cmVtZW50LAotICAgICAgICAgICAgICAgICAicGFnZS1zaXplIiwgcGFnZVNpemUsCi0gICAgICAg
ICAgICAgICAgIE5VTEwpOwotCi0gICAgZ19vYmplY3RfdGhhd19ub3RpZnkoR19PQkpFQ1QoYWRq
dXN0bWVudCkpOwotCi0gICAgZ3RrX2FkanVzdG1lbnRfY2hhbmdlZChhZGp1c3RtZW50KTsKLSAg
ICBndGtfYWRqdXN0bWVudF92YWx1ZV9jaGFuZ2VkKGFkanVzdG1lbnQpOwotfQotI2VuZGlmCi0K
LUdka0RldmljZSAqZ2V0RGVmYXVsdEdES1BvaW50ZXJEZXZpY2UoR2RrV2luZG93KiB3aW5kb3cp
Ci17Ci0jaWZuZGVmIEdUS19BUElfVkVSU0lPTl8yCi0gICAgR2RrRGV2aWNlTWFuYWdlciAqbWFu
YWdlciA9ICBnZGtfZGlzcGxheV9nZXRfZGV2aWNlX21hbmFnZXIoZ2RrX3dpbmRvd19nZXRfZGlz
cGxheSh3aW5kb3cpKTsKLSAgICByZXR1cm4gZ2RrX2RldmljZV9tYW5hZ2VyX2dldF9jbGllbnRf
cG9pbnRlcihtYW5hZ2VyKTsKLSNlbHNlCi0gICAgcmV0dXJuIGdka19kZXZpY2VfZ2V0X2NvcmVf
cG9pbnRlcigpOwotI2VuZGlmIC8vIEdUS19BUElfVkVSU0lPTl8yCi19Ci0KLSNpZiAhR1RLX0NI
RUNLX1ZFUlNJT04oMiwgMTcsIDMpCi12b2lkIGdka193aW5kb3dfZ2V0X3Jvb3RfY29vcmRzKEdk
a1dpbmRvdyogd2luZG93LCBnaW50IHgsIGdpbnQgeSwgZ2ludCogcm9vdFgsIGdpbnQqIHJvb3RZ
KQotewotICAgIGdka193aW5kb3dfZ2V0X3Jvb3Rfb3JpZ2luKHdpbmRvdywgcm9vdFgsIHJvb3RZ
KTsKLSAgICAqcm9vdFggPSAqcm9vdFggKyB4OwotICAgICpyb290WSA9ICpyb290WSArIHk7Ci19
Ci0jZW5kaWYKLQotR2RrQ3Vyc29yICogYmxhbmtDdXJzb3IoKQotewotI2lmIEdUS19DSEVDS19W
RVJTSU9OKDIsIDE2LCAwKQotICAgIHJldHVybiBnZGtfY3Vyc29yX25ldyhHREtfQkxBTktfQ1VS
U09SKTsKLSNlbHNlCi0gICAgR2RrQ3Vyc29yICogY3Vyc29yOwotICAgIEdka1BpeG1hcCAqIHNv
dXJjZTsKLSAgICBHZGtQaXhtYXAgKiBtYXNrOwotICAgIEdka0NvbG9yIGZvcmVncm91bmQgPSB7
IDAsIDY1NTM1LCAwLCAwIH07IC8vIFJlZC4KLSAgICBHZGtDb2xvciBiYWNrZ3JvdW5kID0geyAw
LCAwLCAwLCA2NTUzNSB9OyAvLyBCbHVlLgotICAgIHN0YXRpYyBnY2hhciBjdXJzb3JCaXRzW10g
PSB7MHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDB9OwotCi0gICAgc291cmNl
ID0gZ2RrX2JpdG1hcF9jcmVhdGVfZnJvbV9kYXRhKDAsIGN1cnNvckJpdHMsIDgsIDgpOwotICAg
IG1hc2sgPSBnZGtfYml0bWFwX2NyZWF0ZV9mcm9tX2RhdGEoMCwgY3Vyc29yQml0cywgOCwgOCk7
Ci0gICAgY3Vyc29yID0gZ2RrX2N1cnNvcl9uZXdfZnJvbV9waXhtYXAoc291cmNlLCBtYXNrLCAm
Zm9yZWdyb3VuZCwgJmJhY2tncm91bmQsIDgsIDgpOwotICAgIGdka19waXhtYXBfdW5yZWYoc291
cmNlKTsKLSAgICBnZGtfcGl4bWFwX3VucmVmKG1hc2spOwotICAgIHJldHVybiBjdXJzb3I7Ci0j
ZW5kaWYgLy8gR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTYsIDApCi19Ci0KLSNpZiAhR1RLX0NIRUNL
X1ZFUlNJT04oMiwgMTYsIDApCi1jb25zdCBnY2hhciogZ3RrX21lbnVfaXRlbV9nZXRfbGFiZWwo
R3RrTWVudUl0ZW0qIG1lbnVJdGVtKQotewotICAgIEd0a1dpZGdldCAqIGxhYmVsID0gZ3RrX2Jp
bl9nZXRfY2hpbGQoR1RLX0JJTihtZW51SXRlbSkpOwotICAgIGlmIChHVEtfSVNfTEFCRUwobGFi
ZWwpKQotICAgICAgICByZXR1cm4gZ3RrX2xhYmVsX2dldF90ZXh0KEdUS19MQUJFTChsYWJlbCkp
OwotICAgIHJldHVybiAwOwotfQotI2VuZGlmIC8vIEdUS19DSEVDS19WRVJTSU9OKDIsIDE2LCAw
KQotCi0jaWZkZWYgR1RLX0FQSV9WRVJTSU9OXzIKLXN0YXRpYyBjYWlyb19mb3JtYXRfdAotZ2Rr
X2NhaXJvX2Zvcm1hdF9mb3JfY29udGVudChjYWlyb19jb250ZW50X3QgY29udGVudCkKLXsKLSAg
ICBzd2l0Y2ggKGNvbnRlbnQpIHsKLSAgICBjYXNlIENBSVJPX0NPTlRFTlRfQ09MT1I6Ci0gICAg
ICAgIHJldHVybiBDQUlST19GT1JNQVRfUkdCMjQ7Ci0gICAgY2FzZSBDQUlST19DT05URU5UX0FM
UEhBOgotICAgICAgICByZXR1cm4gQ0FJUk9fRk9STUFUX0E4OwotICAgIGNhc2UgQ0FJUk9fQ09O
VEVOVF9DT0xPUl9BTFBIQToKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gQ0FJUk9fRk9S
TUFUX0FSR0IzMjsKLSAgICB9Ci19Ci0KLXN0YXRpYyBjYWlyb19zdXJmYWNlX3QqCi1nZGtfY2Fp
cm9fc3VyZmFjZV9jb2VyY2VfdG9faW1hZ2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhaXJvX2NvbnRlbnRfdCBjb250ZW50LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3aWR0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0KQotewotICAgIGNhaXJvX3N1cmZhY2Vf
dCAqIGNvcHk7Ci0gICAgY2Fpcm9fdCAqIGNyOwotCi0gICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0
X3R5cGUoc3VyZmFjZSkgPT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFCi0gICAgICAgICYmIGNh
aXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQoc3VyZmFjZSkgPT0gY29udGVudAotICAgICAgICAmJiBj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlKSA+PSB3aWR0aAotICAgICAgICAm
JiBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSkgPj0gaGVpZ2h0KQotICAg
ICAgICByZXR1cm4gY2Fpcm9fc3VyZmFjZV9yZWZlcmVuY2Uoc3VyZmFjZSk7Ci0KLSAgICBjb3B5
ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoZ2RrX2NhaXJvX2Zvcm1hdF9mb3JfY29udGVu
dChjb250ZW50KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCk7Ci0KLSAgICBj
ciA9IGNhaXJvX2NyZWF0ZShjb3B5KTsKLSAgICBjYWlyb19zZXRfb3BlcmF0b3IoY3IsIENBSVJP
X09QRVJBVE9SX1NPVVJDRSk7Ci0gICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBzdXJm
YWNlLCAwLCAwKTsKLSAgICBjYWlyb19wYWludChjcik7Ci0gICAgY2Fpcm9fZGVzdHJveShjcik7
Ci0KLSAgICByZXR1cm4gY29weTsKLX0KLQotc3RhdGljIHZvaWQKLWNvbnZlcnRfYWxwaGEoZ3Vj
aGFyICogZGVzdERhdGEsIGludCBkZXN0U3RyaWRlLAotICAgICAgICAgICAgICBndWNoYXIgKiBz
cmNEYXRhLCBpbnQgc3JjU3RyaWRlLAotICAgICAgICAgICAgICBpbnQgc3JjWCwgaW50IHNyY1ks
IGludCB3aWR0aCwgaW50IGhlaWdodCkKLXsKLSAgICBpbnQgeCwgeTsKLQotICAgIHNyY0RhdGEg
Kz0gc3JjU3RyaWRlICogc3JjWSArIHNyY1kgKiA0OwotCi0gICAgZm9yICh5ID0gMDsgeSA8IGhl
aWdodDsgeSsrKSB7Ci0gICAgICAgIGd1aW50MzIgKiBzcmMgPSAoZ3VpbnQzMiAqKSBzcmNEYXRh
OwotCi0gICAgICAgIGZvciAoeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7Ci0gICAgICAgICAgICBn
dWludCBhbHBoYSA9IHNyY1t4XSA+PiAyNDsKLQotICAgICAgICAgICAgaWYgKCFhbHBoYSkgewot
ICAgICAgICAgICAgICAgIGRlc3REYXRhW3ggKiA0ICsgMF0gPSAwOwotICAgICAgICAgICAgICAg
IGRlc3REYXRhW3ggKiA0ICsgMV0gPSAwOwotICAgICAgICAgICAgICAgIGRlc3REYXRhW3ggKiA0
ICsgMl0gPSAwOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBkZXN0RGF0
YVt4ICogNCArIDBdID0gKCgoc3JjW3hdICYgMHhmZjAwMDApID4+IDE2KSAqIDI1NSArIGFscGhh
IC8gMikgLyBhbHBoYTsKLSAgICAgICAgICAgICAgICBkZXN0RGF0YVt4ICogNCArIDFdID0gKCgo
c3JjW3hdICYgMHgwMGZmMDApID4+ICA4KSAqIDI1NSArIGFscGhhIC8gMikgLyBhbHBoYTsKLSAg
ICAgICAgICAgICAgICBkZXN0RGF0YVt4ICogNCArIDJdID0gKCgoc3JjW3hdICYgMHgwMDAwZmYp
ID4+ICAwKSAqIDI1NSArIGFscGhhIC8gMikgLyBhbHBoYTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGRlc3REYXRhW3ggKiA0ICsgM10gPSBhbHBoYTsKLSAgICAgICAgfQotCi0gICAgICAg
IHNyY0RhdGEgKz0gc3JjU3RyaWRlOwotICAgICAgICBkZXN0RGF0YSArPSBkZXN0U3RyaWRlOwot
ICAgIH0KLX0KLQotc3RhdGljIHZvaWQKLWNvbnZlcnRfbm9fYWxwaGEoZ3VjaGFyICogZGVzdERh
dGEsIGludCBkZXN0U3RyaWRlLCBndWNoYXIgKiBzcmNEYXRhLAotICAgICAgICAgICAgICAgICBp
bnQgc3JjU3RyaWRlLCBpbnQgc3JjWCwgaW50IHNyY1ksCi0gICAgICAgICAgICAgICAgIGludCB3
aWR0aCwgaW50IGhlaWdodCkKLXsKLSAgICBpbnQgeCwgeTsKLQotICAgIHNyY0RhdGEgKz0gc3Jj
U3RyaWRlICogc3JjWSArIHNyY1ggKiA0OwotCi0gICAgZm9yICh5ID0gMDsgeSA8IGhlaWdodDsg
eSsrKSB7Ci0gICAgICAgIGd1aW50MzIgKiBzcmMgPSAoZ3VpbnQzMiAqKSBzcmNEYXRhOwotCi0g
ICAgICAgIGZvciAoeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7Ci0gICAgICAgICAgICBkZXN0RGF0
YVt4ICogMyArIDBdID0gc3JjW3hdID4+IDE2OwotICAgICAgICAgICAgZGVzdERhdGFbeCAqIDMg
KyAxXSA9IHNyY1t4XSA+PiAgODsKLSAgICAgICAgICAgIGRlc3REYXRhW3ggKiAzICsgMl0gPSBz
cmNbeF07Ci0gICAgICAgIH0KLQotICAgICAgICBzcmNEYXRhICs9IHNyY1N0cmlkZTsKLSAgICAg
ICAgZGVzdERhdGEgKz0gZGVzdFN0cmlkZTsKLSAgICB9Ci19Ci0KLS8qKgotICogZ2RrX3BpeGJ1
Zl9nZXRfZnJvbV9zdXJmYWNlOgotICogQHN1cmZhY2U6IHN1cmZhY2UgdG8gY29weSBmcm9tCi0g
KiBAc3JjX3g6IFNvdXJjZSBYIGNvb3JkaW5hdGUgd2l0aGluIEBzdXJmYWNlCi0gKiBAc3JjX3k6
IFNvdXJjZSBZIGNvb3JkaW5hdGUgd2l0aGluIEBzdXJmYWNlCi0gKiBAd2lkdGg6IFdpZHRoIGlu
IHBpeGVscyBvZiByZWdpb24gdG8gZ2V0Ci0gKiBAaGVpZ2h0OiBIZWlnaHQgaW4gcGl4ZWxzIG9m
IHJlZ2lvbiB0byBnZXQKLSAqCi0gKiBUcmFuc2ZlcnMgaW1hZ2UgZGF0YSBmcm9tIGEgI2NhaXJv
X3N1cmZhY2VfdCBhbmQgY29udmVydHMgaXQgdG8gYW4gUkdCKEEpCi0gKiByZXByZXNlbnRhdGlv
biBpbnNpZGUgYSAjR2RrUGl4YnVmLiBUaGlzIGFsbG93cyB5b3UgdG8gZWZmaWNpZW50bHkgcmVh
ZAotICogaW5kaXZpZHVhbCBwaXhlbHMgZnJvbSBjYWlybyBzdXJmYWNlcy4gRm9yICNHZGtXaW5k
b3dzLCB1c2UKLSAqIGdka19waXhidWZfZ2V0X2Zyb21fd2luZG93KCkgaW5zdGVhZC4KLSAqCi0g
KiBUaGlzIGZ1bmN0aW9uIHdpbGwgY3JlYXRlIGFuIFJHQiBwaXhidWYgd2l0aCA4IGJpdHMgcGVy
IGNoYW5uZWwuIFRoZSBwaXhidWYKLSAqIHdpbGwgY29udGFpbiBhbiBhbHBoYSBjaGFubmVsIGlm
IHRoZSBAc3VyZmFjZSBjb250YWlucyBvbmUuCi0gKgotICogUmV0dXJuIHZhbHVlOiAodHJhbnNm
ZXIgZnVsbCk6IEEgbmV3bHktY3JlYXRlZCBwaXhidWYgd2l0aCBhIHJlZmVyZW5jZSBjb3VudAot
ICogb2YgMSwgb3IgJU5VTEwgb24gZXJyb3IKLSAqKi8KLUdka1BpeGJ1ZioKLWdka19waXhidWZf
Z2V0X2Zyb21fc3VyZmFjZShjYWlyb19zdXJmYWNlX3QgKiBzdXJmYWNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBzcmNYLCBpbnQgc3JjWSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgd2lkdGgsIGludCBoZWlnaHQpCi17Ci0gICAgY2Fpcm9fY29udGVudF90IGNv
bnRlbnQ7Ci0gICAgR2RrUGl4YnVmICogZGVzdDsKLQotICAgIC8qIEdlbmVyYWwgc2FuaXR5IGNo
ZWNrcyAqLwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHN1cmZhY2UsIE5VTEwpOwotICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKHNyY1ggPj0gMCAmJiBzcmNZID49IDAsIE5VTEwpOwotICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwLCBOVUxMKTsKLQotICAg
IGNvbnRlbnQgPSBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KHN1cmZhY2UpIHwgQ0FJUk9fQ09O
VEVOVF9DT0xPUjsKLSAgICBkZXN0ID0gZ2RrX3BpeGJ1Zl9uZXcoR0RLX0NPTE9SU1BBQ0VfUkdC
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAhIShjb250ZW50ICYgQ0FJUk9fQ09OVEVOVF9B
TFBIQSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIHdpZHRoLCBoZWlnaHQpOwotCi0gICAgc3VyZmFjZSA9IGdka19jYWlyb19zdXJmYWNl
X2NvZXJjZV90b19pbWFnZShzdXJmYWNlLCBjb250ZW50LCBzcmNYICsgd2lkdGgsIHNyY1kgKyBo
ZWlnaHQpOwotICAgIGNhaXJvX3N1cmZhY2VfZmx1c2goc3VyZmFjZSk7Ci0gICAgaWYgKGNhaXJv
X3N1cmZhY2Vfc3RhdHVzKHN1cmZhY2UpIHx8ICFkZXN0KSB7Ci0gICAgICAgIGNhaXJvX3N1cmZh
Y2VfZGVzdHJveShzdXJmYWNlKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAg
aWYgKGdka19waXhidWZfZ2V0X2hhc19hbHBoYShkZXN0KSkKLSAgICAgICAgY29udmVydF9hbHBo
YShnZGtfcGl4YnVmX2dldF9waXhlbHMoZGVzdCksCi0gICAgICAgICAgICAgICAgICAgICAgIGdk
a19waXhidWZfZ2V0X3Jvd3N0cmlkZShkZXN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpLAotICAgICAgICAgICAg
ICAgICAgICAgICBzcmNYLCBzcmNZLAotICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgaGVp
Z2h0KTsKLSAgICBlbHNlCi0gICAgICAgIGNvbnZlcnRfbm9fYWxwaGEoZ2RrX3BpeGJ1Zl9nZXRf
cGl4ZWxzKGRlc3QpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBnZGtfcGl4YnVmX2dldF9y
b3dzdHJpZGUoZGVzdCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJmYWNlKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3JjWCwgc3JjWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdo
dCk7Ci0KLSAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3koc3VyZmFjZSk7Ci0gICAgcmV0dXJuIGRl
c3Q7Ci19Ci0KLSNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAyNCwgMCkKLXZvaWQgZ2V0R2RrRHJh
d2FibGVTaXplKEdka0RyYXdhYmxlICpkcmF3YWJsZSwgaW50ICp3aWR0aCwgaW50ICpoZWlnaHQp
Ci17Ci0gICAgZ19yZXR1cm5faWZfZmFpbChHREtfSVNfUElYTUFQKGRyYXdhYmxlKSB8fCBHREtf
SVNfV0lORE9XKGRyYXdhYmxlKSk7Ci0KLSAgICBpZiAoR0RLX0lTX1BJWE1BUChkcmF3YWJsZSkp
IHsKLSAgICAgICAgZ2RrX3BpeG1hcF9nZXRfc2l6ZShHREtfUElYTUFQKGRyYXdhYmxlKSwgd2lk
dGgsIGhlaWdodCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHZGtXaW5kb3cgKndp
bmRvdyA9IEdES19XSU5ET1coZHJhd2FibGUpOwotICAgICp3aWR0aCA9IGdka193aW5kb3dfZ2V0
X3dpZHRoKHdpbmRvdyk7Ci0gICAgKmhlaWdodCA9IGdka193aW5kb3dfZ2V0X2hlaWdodCh3aW5k
b3cpOwotfQotI2Vsc2UKLXZvaWQgZ2V0R2RrRHJhd2FibGVTaXplKEdka0RyYXdhYmxlICpkcmF3
YWJsZSwgaW50ICp3aWR0aCwgaW50ICpoZWlnaHQpCi17Ci0gICAgZ2RrX2RyYXdhYmxlX2dldF9z
aXplKGRyYXdhYmxlLCB3aWR0aCwgaGVpZ2h0KTsKLX0KLSNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVS
U0lPTigyLCAyNCwgMCkKLQotI2VuZGlmIC8vIEdUS19BUElfVkVSU0lPTl8yCi0KLSNpZiAhR0xJ
Ql9DSEVDS19WRVJTSU9OKDIsIDI3LCAxKQotZ2Jvb2xlYW4gZ19zaWduYWxfYWNjdW11bGF0b3Jf
Zmlyc3Rfd2lucyhHU2lnbmFsSW52b2NhdGlvbkhpbnQgKmludm9jYXRpb25IaW50LCBHVmFsdWUg
KnJldHVybkFjY3VtdWxhdG9yLCBjb25zdCBHVmFsdWUgKmhhbmRsZXJSZXR1cm4sIGdwb2ludGVy
IGRhdGEpCi17Ci0gICAgZ192YWx1ZV9jb3B5KGhhbmRsZXJSZXR1cm4sIHJldHVybkFjY3VtdWxh
dG9yKTsKLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0jZW5kaWYKLQotI2lmICFHVEtfQ0hFQ0tfVkVS
U0lPTigyLCAyMiwgMCkKLWNhaXJvX3N1cmZhY2VfdCAqZ2RrX3dpbmRvd19jcmVhdGVfc2ltaWxh
cl9zdXJmYWNlKEdka1dpbmRvdyAqd2luZG93LCBjYWlyb19jb250ZW50X3QgY29udGVudCwgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0KQotewotICAgIGNhaXJvX3QgKmNhaXJvQ29udGV4dCA9IGdka19j
YWlyb19jcmVhdGUod2luZG93KTsKLSAgICBjYWlyb19zdXJmYWNlX3QgKmNhaXJvU3VyZmFjZSA9
IGNhaXJvX2dldF90YXJnZXQoY2Fpcm9Db250ZXh0KTsKLSAgICBjYWlyb19zdXJmYWNlX3QgKm5l
d1N1cmZhY2UgPSBjYWlyb19zdXJmYWNlX2NyZWF0ZV9zaW1pbGFyKGNhaXJvU3VyZmFjZSwgY29u
dGVudCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgY2Fpcm9fZGVzdHJveShjYWlyb0NvbnRleHQpOwot
ICAgIHJldHVybiBuZXdTdXJmYWNlOwotfQotI2VuZGlmIC8vIEdUS19DSEVDS19WRVJTSU9OKDIs
IDIyLCAwKQotCi0jaWYgIUdUS19DSEVDS19WRVJTSU9OKDMsIDMsIDYpCi0jaWZkZWYgR0RLX1dJ
TkRPV0lOR19YMTEKLXN0YXRpYyBpbnQgZ2V0U2NyZWVuQ3VycmVudERlc2t0b3AoR2RrU2NyZWVu
ICpzY3JlZW4pCi17Ci0gICAgRGlzcGxheSAqZGlzcGxheSA9IEdES19ESVNQTEFZX1hESVNQTEFZ
KGdka19zY3JlZW5fZ2V0X2Rpc3BsYXkoc2NyZWVuKSk7Ci0gICAgV2luZG93IHJvb3RXaW5kb3cg
PSBYUm9vdFdpbmRvdyhkaXNwbGF5LCBHREtfU0NSRUVOX1hOVU1CRVIoc2NyZWVuKSk7Ci0gICAg
QXRvbSBjdXJyZW50RGVza3RvcCA9IFhJbnRlcm5BdG9tKGRpc3BsYXksICJfTkVUX0NVUlJFTlRf
REVTS1RPUCIsIFRydWUpOwotCi0gICAgQXRvbSB0eXBlOwotICAgIGludCBmb3JtYXQ7Ci0gICAg
dW5zaWduZWQgbG9uZyBpdGVtc0NvdW50LCBieXRlc0FmdGVyOwotICAgIHVuc2lnbmVkIGNoYXIg
KnJldHVybmVkRGF0YSA9IE5VTEw7Ci0gICAgWEdldFdpbmRvd1Byb3BlcnR5KGRpc3BsYXksIHJv
b3RXaW5kb3csIGN1cnJlbnREZXNrdG9wLCAwLCBHX01BWExPTkcsIEZhbHNlLCBYQV9DQVJESU5B
TCwKLSAgICAgICAgICAgICAgICAgICAgICAgJnR5cGUsICZmb3JtYXQsICZpdGVtc0NvdW50LCAm
Ynl0ZXNBZnRlciwgJnJldHVybmVkRGF0YSk7Ci0KLSAgICBpbnQgd29ya3NwYWNlID0gMDsKLSAg
ICBpZiAodHlwZSA9PSBYQV9DQVJESU5BTCAmJiBmb3JtYXQgPT0gMzIgJiYgaXRlbXNDb3VudCA+
IDApCi0gICAgICAgIHdvcmtzcGFjZSA9IChpbnQpcmV0dXJuZWREYXRhWzBdOwotCi0gICAgaWYg
KHJldHVybmVkRGF0YSkKLSAgICAgICAgWEZyZWUocmV0dXJuZWREYXRhKTsKLQotICAgIHJldHVy
biB3b3Jrc3BhY2U7Ci19Ci0KLXN0YXRpYyB2b2lkIGdldFNjcmVlbldvcmtBcmVhKEdka1NjcmVl
biAqc2NyZWVuLCBHZGtSZWN0YW5nbGUgKmFyZWEpCi17Ci0gICAgRGlzcGxheSAqZGlzcGxheSA9
IEdES19ESVNQTEFZX1hESVNQTEFZKGdka19zY3JlZW5fZ2V0X2Rpc3BsYXkoc2NyZWVuKSk7Ci0g
ICAgQXRvbSB3b3JrQXJlYSA9IFhJbnRlcm5BdG9tKGRpc3BsYXksICJfTkVUX1dPUktBUkVBIiwg
VHJ1ZSk7Ci0KLSAgICAvKiBEZWZhdWx0cyBpbiBjYXNlIG9mIGVycm9yLiAqLwotICAgIGFyZWEt
PnggPSAwOwotICAgIGFyZWEtPnkgPSAwOwotICAgIGFyZWEtPndpZHRoID0gZ2RrX3NjcmVlbl9n
ZXRfd2lkdGgoc2NyZWVuKTsKLSAgICBhcmVhLT5oZWlnaHQgPSBnZGtfc2NyZWVuX2dldF9oZWln
aHQoc2NyZWVuKTsKLQotICAgIGlmICh3b3JrQXJlYSA9PSBOb25lKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBXaW5kb3cgcm9vdFdpbmRvdyA9IFhSb290V2luZG93KGRpc3BsYXksIEdES19TQ1JF
RU5fWE5VTUJFUihzY3JlZW4pKTsKLSAgICBBdG9tIHR5cGU7Ci0gICAgaW50IGZvcm1hdDsKLSAg
ICB1bnNpZ25lZCBsb25nIGl0ZW1zQ291bnQsIGJ5dGVzQWZ0ZXI7Ci0gICAgdW5zaWduZWQgY2hh
ciAqcmV0dXJuZWREYXRhID0gMDsKLSAgICBpbnQgcmVzdWx0ID0gWEdldFdpbmRvd1Byb3BlcnR5
KGRpc3BsYXksIHJvb3RXaW5kb3csIHdvcmtBcmVhLCAwLCA0ICogMzIgLyogTWF4IGxlbmd0aCAq
LywgRmFsc2UsIEFueVByb3BlcnR5VHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZ0eXBlLCAmZm9ybWF0LCAmaXRlbXNDb3VudCwgJmJ5dGVzQWZ0ZXIsICZyZXR1cm5l
ZERhdGEpOwotICAgIGlmIChyZXN1bHQgIT0gU3VjY2VzcyB8fCB0eXBlID09IE5vbmUgfHwgIWZv
cm1hdCB8fCBieXRlc0FmdGVyIHx8IGl0ZW1zQ291bnQgJSA0KQotICAgICAgICByZXR1cm47Ci0K
LSAgICBpbnQgZGVza3RvcCA9IGdldFNjcmVlbkN1cnJlbnREZXNrdG9wKHNjcmVlbik7Ci0gICAg
bG9uZyAqd29ya0FyZWFzID0gKGxvbmcgKilyZXR1cm5lZERhdGE7Ci0gICAgYXJlYS0+eCA9IHdv
cmtBcmVhc1tkZXNrdG9wICogNF07Ci0gICAgYXJlYS0+eSA9IHdvcmtBcmVhc1tkZXNrdG9wICog
NCArIDFdOwotICAgIGFyZWEtPndpZHRoID0gd29ya0FyZWFzW2Rlc2t0b3AgKiA0ICsgMl07Ci0g
ICAgYXJlYS0+aGVpZ2h0ID0gd29ya0FyZWFzW2Rlc2t0b3AgKiA0ICsgM107Ci0KLSAgICBYRnJl
ZShyZXR1cm5lZERhdGEpOwotfQotI2VuZGlmIC8vIEdES19XSU5ET1dJTkdfWDExCi0KLXZvaWQg
Z2RrX3NjcmVlbl9nZXRfbW9uaXRvcl93b3JrYXJlYShHZGtTY3JlZW4gKnNjcmVlbiwgaW50IG1v
bml0b3IsIEdka1JlY3RhbmdsZSAqYXJlYSkKLXsKLSAgICBnZGtfc2NyZWVuX2dldF9tb25pdG9y
X2dlb21ldHJ5KHNjcmVlbiwgbW9uaXRvciwgYXJlYSk7Ci0KLSNpZmRlZiBHREtfV0lORE9XSU5H
X1gxMQotICAgIEdka1JlY3RhbmdsZSB3b3JrQXJlYTsKLSAgICBnZXRTY3JlZW5Xb3JrQXJlYShz
Y3JlZW4sICZ3b3JrQXJlYSk7Ci0gICAgZ2RrX3JlY3RhbmdsZV9pbnRlcnNlY3QoJndvcmtBcmVh
LCBhcmVhLCBhcmVhKTsKLSNlbmRpZgotfQotI2VuZGlmIC8vIEdUS19DSEVDS19WRVJTSU9OKDMs
IDMsIDYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lv
bmluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1ZlcnNpb25pbmcuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTNjYWM2MzNhMGQxNWJkOTc4MDNkMDViMTZlNWY2
MzQxMjUzYThhOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5oCisrKyAvZGV2L251
bGwKQEAgLTEsMTI3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQ29sbGFib3Jh
IEx0ZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEsIFMuTC4KLSAqCi0gKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
ICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICog
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lm
bmRlZiBHdGtWZXJzaW9uaW5nX2gKLSNkZWZpbmUgR3RrVmVyc2lvbmluZ19oCi0KLSNpbmNsdWRl
ICJhdXRvdG9vbHNjb25maWcuaCIKLSNpbmNsdWRlIDxndGsvZ3RrLmg+Ci0KLSNpZm5kZWYgR1RL
X0FQSV9WRVJTSU9OXzIKLSNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy1jb21wYXQuaD4KLSNlbmRp
ZgotCi1HX0JFR0lOX0RFQ0xTCi0KLS8vIE1hY3JvcyB0byBhdm9pZCBkZXByZWNhdGlvbiBjaGVj
a2luZyBjaHVybgotI2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgotI2RlZmluZSBHREtfV0lORE9X
X1hXSU5ET1cod2luZG93KSAoZ2RrX3gxMV93aW5kb3dfZ2V0X3hpZCh3aW5kb3cpKQotI2Vsc2UK
LUdka1BpeGJ1ZiogZ2RrX3BpeGJ1Zl9nZXRfZnJvbV9zdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCog
c3VyZmFjZSwgaW50IHNyY1gsIGludCBzcmNZLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLXZvaWQgZ2V0R2RrRHJhd2FibGVT
aXplKEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgaW50KiB3aWR0aCwgaW50KiBoZWlnaHQpOwotI2Vu
ZGlmCi0KLSNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMiwgMjMsIDQpCi0jZGVmaW5lIGdka19waXht
YXBfZ2V0X3NpemUgZ2RrX2RyYXdhYmxlX2dldF9zaXplCi0jZW5kaWYgLy8gR1RLX0NIRUNLX1ZF
UlNJT04oMiwgMjMsIDQpCi0KLSNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMiwgMjMsIDApCi0jZGVm
aW5lIGdka193aW5kb3dfZ2V0X2Rpc3BsYXkod2luZG93KSBnZGtfZHJhd2FibGVfZ2V0X2Rpc3Bs
YXkod2luZG93KQotI2RlZmluZSBnZGtfd2luZG93X2dldF92aXN1YWwgZ2RrX2RyYXdhYmxlX2dl
dF92aXN1YWwKLSNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAyMywgMCkKLQotI2lmICFH
VEtfQ0hFQ0tfVkVSU0lPTigyLCAyMiwgMCkKLWNhaXJvX3N1cmZhY2VfdCogZ2RrX3dpbmRvd19j
cmVhdGVfc2ltaWxhcl9zdXJmYWNlKEdka1dpbmRvdyogd2luZG93LCBjYWlyb19jb250ZW50X3Qg
Y29udGVudCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLSNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVS
U0lPTigyLCAyMiwgMCkKLQotI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigyLCAyMSwgMikKLSNkZWZp
bmUgZ2RrX3Zpc3VhbF9nZXRfZGVwdGgodmlzdWFsKSAodmlzdWFsKS0+ZGVwdGgKLSNkZWZpbmUg
Z2RrX3Zpc3VhbF9nZXRfYml0c19wZXJfcmdiKHZpc3VhbCkgKHZpc3VhbCktPmJpdHNfcGVyX3Jn
YgotI2RlZmluZSBnZGtfZHJhZ19jb250ZXh0X2dldF9zZWxlY3RlZF9hY3Rpb24oY29udGV4dCkg
KGNvbnRleHQpLT5hY3Rpb24KLSNkZWZpbmUgZ2RrX2RyYWdfY29udGV4dF9nZXRfYWN0aW9ucyhj
b250ZXh0KSAoY29udGV4dCktPmFjdGlvbnMKLSNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVSU0lPTigy
LCAyMSwgMikKLQotI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigyLCAyMCwgMCkKLSNkZWZpbmUgZ3Rr
X3dpZGdldF9nZXRfcmVhbGl6ZWQod2lkZ2V0KSBHVEtfV0lER0VUX1JFQUxJWkVEKHdpZGdldCkK
LSNkZWZpbmUgZ3RrX3dpZGdldF9zZXRfcmVhbGl6ZWQod2lkZ2V0LCBUUlVFKSBHVEtfV0lER0VU
X1NFVF9GTEFHUygod2lkZ2V0KSwgR1RLX1JFQUxJWkVEKQotI2RlZmluZSBndGtfcmFuZ2VfZ2V0
X21pbl9zbGlkZXJfc2l6ZShyYW5nZSkgKHJhbmdlKS0+bWluX3NsaWRlcl9zaXplCi0jZW5kaWYg
Ly8gR1RLX0NIRUNLX1ZFUlNJT04oMiwgMjAsIDApCi0KLSNpZiAhR1RLX0NIRUNLX1ZFUlNJT04o
MiwgMTksIDApCi0jZGVmaW5lIGd0a193aWRnZXRfaXNfdG9wbGV2ZWwod2lkZ2V0KSBHVEtfV0lE
R0VUX1RPUExFVkVMKHdpZGdldCkKLSNkZWZpbmUgZ3RrX3dpZGdldF9nZXRfcmVhbGl6ZWQod2lk
Z2V0KSBHVEtfV0lER0VUX1JFQUxJWkVEKHdpZGdldCkKLSNkZWZpbmUgZ3RrX3dpZGdldF9nZXRf
aGFzX3dpbmRvdyh3aWRnZXQpICFHVEtfV0lER0VUX05PX1dJTkRPVyh3aWRnZXQpCi0jZGVmaW5l
IGd0a193aWRnZXRfZ2V0X2Nhbl9mb2N1cyh3aWRnZXQpIEdUS19XSURHRVRfQ0FOX0ZPQ1VTKHdp
ZGdldCkKLSNkZWZpbmUgZ3RrX3dpZGdldF9pc19zZW5zaXRpdmUod2lkZ2V0KSBHVEtfV0lER0VU
X0lTX1NFTlNJVElWRSh3aWRnZXQpCi0jZW5kaWYgLy8gR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTks
IDApCi0KLSNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTgsIDApCi0jZGVmaW5lIGd0a193aWRn
ZXRfc2V0X3Zpc2libGUod2lkZ2V0LCBGQUxTRSkgR1RLX1dJREdFVF9VTlNFVF9GTEFHUygod2lk
Z2V0KSwgR1RLX1ZJU0lCTEUpCi0jZGVmaW5lIGd0a193aWRnZXRfZ2V0X3Zpc2libGUod2lkZ2V0
KSAoR1RLX1dJREdFVF9GTEFHUyh3aWRnZXQpICYgR1RLX1ZJU0lCTEUpCi0KLSNkZWZpbmUgZ3Rr
X3dpZGdldF9zZXRfd2luZG93KHdpZGdldCwgbmV3X3dpbmRvdykgKHdpZGdldCktPndpbmRvdyA9
IChuZXdfd2luZG93KQotI2RlZmluZSBndGtfd2lkZ2V0X3NldF9jYW5fZm9jdXMod2lkZ2V0LCBU
UlVFKSBHVEtfV0lER0VUX1NFVF9GTEFHUygod2lkZ2V0KSwgR1RLX0NBTl9GT0NVUykKLSNkZWZp
bmUgZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGlvbih3aWRnZXQsIGFsbG9jKSAoKihhbGxvYykgPSAo
d2lkZ2V0KS0+YWxsb2NhdGlvbikKLSNkZWZpbmUgZ3RrX3dpZGdldF9zZXRfYWxsb2NhdGlvbih3
aWRnZXQsIGFsbG9jKSAoKHdpZGdldCktPmFsbG9jYXRpb24gPSAqKGFsbG9jKSkKLSNlbmRpZiAv
LyBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxOCwgMCkKLQotI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigy
LCAxNywgMykKLXZvaWQgZ2RrX3dpbmRvd19nZXRfcm9vdF9jb29yZHMoR2RrV2luZG93KiB3aW5k
b3csIGdpbnQgeCwgZ2ludCB5LCBnaW50KiByb290WCwgZ2ludCogcm9vdFkpOwotI2VuZGlmIC8v
IEdUS19DSEVDS19WRVJTSU9OKDIsIDE3LCAzKQotCi0jaWYgIUdUS19DSEVDS19WRVJTSU9OKDIs
IDE2LCAwKQotY29uc3QgZ2NoYXIqIGd0a19tZW51X2l0ZW1fZ2V0X2xhYmVsKEd0a01lbnVJdGVt
Kik7Ci0jZW5kaWYgLy8gR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTYsIDApCi0KLQotI2lmICFHVEtf
Q0hFQ0tfVkVSU0lPTigyLCAxNCwgMCkKLSNkZWZpbmUgZ3RrX3dpZGdldF9nZXRfd2luZG93KHdp
ZGdldCkgKHdpZGdldCktPndpbmRvdwotI2RlZmluZSBndGtfYWRqdXN0bWVudF9nZXRfdmFsdWUo
YWRqKSAoYWRqKS0+dmFsdWUKLSNkZWZpbmUgZ3RrX2RpYWxvZ19nZXRfY29udGVudF9hcmVhKGRp
YWxvZykgKGRpYWxvZyktPnZib3gKLSNkZWZpbmUgZ3RrX2RpYWxvZ19nZXRfYWN0aW9uX2FyZWEo
ZGlhbG9nKSAoZGlhbG9nKS0+YWN0aW9uX2FyZWEKLSNkZWZpbmUgZ3RrX3NlbGVjdGlvbl9kYXRh
X2dldF9sZW5ndGgoZGF0YSkgKGRhdGEpLT5sZW5ndGgKLSNkZWZpbmUgZ3RrX3NlbGVjdGlvbl9k
YXRhX2dldF9kYXRhKGRhdGEpIChkYXRhKS0+ZGF0YQotI2RlZmluZSBndGtfc2VsZWN0aW9uX2Rh
dGFfZ2V0X3RhcmdldChkYXRhKSAoZGF0YSktPnRhcmdldAotI2RlZmluZSBndGtfYWRqdXN0bWVu
dF9zZXRfcGFnZV9zaXplKGFkaiwgbmV3VmFsdWUpICgoYWRqKS0+cGFnZV9zaXplID0gbmV3VmFs
dWUpCi0jZGVmaW5lIGd0a19hZGp1c3RtZW50X3NldF92YWx1ZShhZGosIG5ld1ZhbHVlKSAoKGFk
aiktPnZhbHVlID0gbmV3VmFsdWUpCi0jZGVmaW5lIGd0a19hZGp1c3RtZW50X3NldF9sb3dlcihh
ZGosIG5ld1ZhbHVlKSAoKGFkaiktPmxvd2VyID0gbmV3VmFsdWUpCi0jZGVmaW5lIGd0a19hZGp1
c3RtZW50X3NldF91cHBlcihhZGosIG5ld1ZhbHVlKSAoKGFkaiktPnVwcGVyID0gbmV3VmFsdWUp
Ci0KLXZvaWQgZ3RrX2FkanVzdG1lbnRfY29uZmlndXJlKEd0a0FkanVzdG1lbnQqIGFkanVzdG1l
bnQsIGdkb3VibGUgdmFsdWUsIGdkb3VibGUgbG93ZXIsIGdkb3VibGUgdXBwZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnZG91YmxlIHN0ZXBJbmNyZW1lbnQsIGdkb3VibGUgcGFn
ZUluY3JlbWVudCwgZ2RvdWJsZSBwYWdlU2l6ZSk7Ci0KLXZvaWQgZ3RrX2FkanVzdG1lbnRfc2V0
X3ZhbHVlKEd0a0FkanVzdG1lbnQqIGFkanVzbWVudCwgZ2RvdWJsZSB2YWx1ZSk7Ci0jZW5kaWYg
Ly8gR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTQsIDApCi0KLUdka0RldmljZSogZ2V0RGVmYXVsdEdE
S1BvaW50ZXJEZXZpY2UoR2RrV2luZG93KiB3aW5kb3cpOwotR2RrQ3Vyc29yKiBibGFua0N1cnNv
cigpOwotCi0jaWYgIUdMSUJfQ0hFQ0tfVkVSU0lPTigyLCAyNywgMSkKLWdib29sZWFuIGdfc2ln
bmFsX2FjY3VtdWxhdG9yX2ZpcnN0X3dpbnMoR1NpZ25hbEludm9jYXRpb25IaW50KiBpbnZvY2F0
aW9uSGludCwgR1ZhbHVlKiByZXR1cm5BY2N1bXVsYXRvciwgY29uc3QgR1ZhbHVlKiBoYW5kbGVy
UmV0dXJuLCBncG9pbnRlciBkYXRhKTsKLSNlbmRpZgotCi0jaWYgIUdUS19DSEVDS19WRVJTSU9O
KDMsIDMsIDYpCi12b2lkIGdka19zY3JlZW5fZ2V0X21vbml0b3Jfd29ya2FyZWEoR2RrU2NyZWVu
ICosIGludCBtb25pdG9yLCBHZGtSZWN0YW5nbGUgKmFyZWEpOwotI2VuZGlmCi0KLUdfRU5EX0RF
Q0xTCi0KLSNlbmRpZiAvLyBHdGtWZXJzaW9uaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0K
aW5kZXggYzYxZWI3ZWEzNWYwNTYwMDA2NzY0NjFiZDIwMDkxYzcyMGFhOGE2Yi4uNjgzMWU2MDdj
NzRlNWE3OWI5ZjdjYzY3YjNiNTI2YTZhOTAyNTZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ndGsvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUu
YW0KQEAgLTQ3LDYgKzQ3LDcgQEAgbGlid2Via2l0Z3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZF
UlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0NQUEYKIAktSSQoR0VOU09V
UkNFU19XRUJLSVRET00pIFwKIAktSVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdCBcCiAJJChnbG9i
YWxfY3BwZmxhZ3MpIFwKKwkkKHBsYXRmb3JtZ3RrX2NwcGZsYWdzKSBcCiAJJCh3ZWJjb3JlX2Nw
cGZsYWdzKSBcCiAJJCh3ZWJjb3JlZ3RrX2NwcGZsYWdzKSBcCiAJJChqYXZhc2NyaXB0Y29yZV9j
cHBmbGFncykgXApAQCAtNzksNiArODAsNyBAQCBsaWJ3ZWJraXRndGtfQFdFQktJVEdUS19BUElf
TUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfTERGTAogCiBs
aWJ3ZWJraXRndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElf
TUlOT1JfVkVSU0lPTkBfbGFfTElCQUREIDo9IFwKIAktbHB0aHJlYWQgXAorCWxpYlBsYXRmb3Jt
R3RrLmxhIFwKIAlsaWJXZWJDb3JlLmxhIFwKIAlsaWJXZWJDb3JlUGxhdGZvcm0ubGEgXAogCWxp
YldlYkNvcmVNb2R1bGVzLmxhIFwKQEAgLTYyMiw3ICs2MjQsNyBAQCBQcm9ncmFtc191bml0dGVz
dHNfdGVzdGtleWV2ZW50c19MREFERCA9ICQod2Via2l0X3Rlc3RzX2xkYWRkKQogUHJvZ3JhbXNf
dW5pdHRlc3RzX3Rlc3RrZXlldmVudHNfTERGTEFHUyA9ICQod2Via2l0X3Rlc3RzX2xkZmxhZ3Mp
CiAKIFByb2dyYW1zX3VuaXR0ZXN0c190ZXN0Y29weWFuZHBhc3RlX1NPVVJDRVMgPSBTb3VyY2Uv
V2ViS2l0L2d0ay90ZXN0cy90ZXN0Y29weWFuZHBhc3RlLmMgXAotCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmMKKwlTb3VyY2UvUGxhdGZvcm0vZ3RrL0d0a1ZlcnNp
b25pbmcuYwogUHJvZ3JhbXNfdW5pdHRlc3RzX3Rlc3Rjb3B5YW5kcGFzdGVfQ0ZMQUdTID0gJCh3
ZWJraXRfdGVzdHNfY2ZsYWdzKSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpp
bmRleCA5YzM5MzkwNGNhNWQ3NWRiYmQxMTNjNGE5MjU2ZjNjNjdlZmJlM2I5Li4zN2ExMjdkNjIz
OWFhNTE0OTc1NWE4ZTM5NTRlOGRlNmJhZWEwNzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAt
OCw2ICs4LDcgQEAgbGliX0xUTElCUkFSSUVTICs9IFwKICMgV2UgbmVlZCB0byBtYWtlIHN1cmUg
cGx1Z2luIHByb2Nlc3MgaXMgYWx3YXlzIGJ1aWx0IHdpdGggZ3RrMiwgYmVjYXVzZSBwbHVnaW5z
IGxpa2UgZmxhc2gKICMgc3RpbGwgdXNlIGd0azIuIFNpbmNlIHdlYmNvcmUgd2FzIGJ1aWx0IHdp
dGggZ3RrMywgd2UgbmVlZCB0byBidWlsZCB3ZWJjb3JlZ3RrIHNvdXJjZXMgYWdhaW4gd2l0aCBn
dGsyCiBub2luc3RfTFRMSUJSQVJJRVMgKz0gXAorCWxpYlBsYXRmb3JtR3RrMi5sYSBcCiAJbGli
V2ViQ29yZUd0azIubGEKIAogbGliZXhlY19QUk9HUkFNUyArPSBcCkBAIC0xMjQsNiArMTI1LDcg
QEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RL
X0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9DUFAKIAktREJVSUxESU5HX1dFQktJVCBcCiAJLURXRUJL
SVQyX0NPTVBJTEFUSU9OIFwKIAktREVOQUJMRV9QTFVHSU5fUFJPQ0VTUz0xIFwKKwkkKHBsYXRm
b3JtZ3RrX2NwcGZsYWdzKSBcCiAJJCh3ZWJjb3JlX2NwcGZsYWdzKSBcCiAJJCh3ZWJjb3JlZ3Rr
X2NwcGZsYWdzKSBcCiAJJChqYXZhc2NyaXB0Y29yZV9jcHBmbGFncykgXApAQCAtMTc5LDYgKzE4
MSw3IEBAIGVuZGlmCiAKIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lP
TkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfTElCQUREICs9IFwKIAlsaWJqYXZh
c2NyaXB0Y29yZWd0ay1AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RLX0FQ
SV9NSU5PUl9WRVJTSU9OQC5sYSBcCisJbGliUGxhdGZvcm1HdGsubGEgXAogCWxpYldlYkNvcmVE
T00ubGEgXAogCWxpYldlYkNvcmVHdGsubGEgXAogCSQoQ0FJUk9fTElCUykgXApAQCAtNDYyLDYg
KzQ2NSw3IEBAIGxpYldlYkNvcmVHdGsyX2xhX0NQUEZMQUdTID0gXAogCS1EQlVJTERJTkdfV0VC
S0lUIFwKIAktREdUS19BUElfVkVSU0lPTl8yPTEgXAogCSQoZ2xvYmFsX2NwcGZsYWdzKSBcCisJ
JChwbGF0Zm9ybWd0a19jcHBmbGFncykgXAogCSQod2ViY29yZV9jcHBmbGFncykgXAogCSQod2Vi
Y29yZWd0a19jcHBmbGFncykgXAogCSQoamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MpIFwKQEAgLTQ4
Miw2ICs0ODYsNDggQEAgbGliV2ViQ29yZUd0azJfbGFfQ1BQRkxBR1MgPSBcCiAJJChYUkVOREVS
X0NGTEFHUykgXAogCSQoWFRfQ0ZMQUdTKQogCitsaWJQbGF0Zm9ybUd0azJfbGFfU09VUkNFUyA9
IFwKKwkkKHBsYXRmb3JtZ3RrX3NvdXJjZXMpCisKK2xpYlBsYXRmb3JtR3RrMl9sYV9DWFhGTEFH
UyA9IFwKKwkkKFNZTUJPTF9WSVNJQklMSVRZX0lOTElORVMpIFwKKwkkKGdsb2JhbF9jeHhmbGFn
cykKKworbGliUGxhdGZvcm1HdGsyX2xhX0NGTEFHUyA9IFwKKwkkKFNZTUJPTF9WSVNJQklMSVRZ
KSBcCisJJChnbG9iYWxfY2ZsYWdzKQorCitsaWJQbGF0Zm9ybUd0azJfbGFfQ1BQRkxBR1MgPSBc
CisJLURCVUlMRElOR19XRUJLSVQgXAorCS1ER1RLX0FQSV9WRVJTSU9OXzI9MSBcCisJJChnbG9i
YWxfY3BwZmxhZ3MpIFwKKwkkKHBsYXRmb3JtZ3RrX2NwcGZsYWdzKSBcCisJJChqYXZhc2NyaXB0
Y29yZV9jcHBmbGFncykgXAorCS1mbm8tc3RyaWN0LWFsaWFzaW5nIFwKKwkkKEhJTERPTl9DUFBG
TEFHUykgXAorCSQoQ0FJUk9fQ0ZMQUdTKSBcCisJJChDTFVUVEVSX0NGTEFHUykgXAorCSQoQ09W
RVJBR0VfQ0ZMQUdTKSBcCisJJChFTkNIQU5UX0NGTEFHUykgXAorCSQoRlJFRVRZUEVfQ0ZMQUdT
KSBcCisJJChHQUlMX0NGTEFHUykgXAorCSQoR0FNRVBBRF9DRkxBR1MpIFwKKwkkKEdFT0NMVUVf
Q0ZMQUdTKSBcCisJJChHTElCX0NGTEFHUykgXAorCSQoR1NUUkVBTUVSX0NGTEFHUykgXAorCSQo
R1RLX0NGTEFHUykgXAorCSQoSElMRE9OX0NGTEFHUykgXAorCSQoTElCU0VDUkVUX0NGTEFHUykg
XAorCSQoTElCU09VUF9DRkxBR1MpIFwKKwkkKExJQlhNTF9DRkxBR1MpIFwKKwkkKExJQlhTTFRf
Q0ZMQUdTKSBcCisJJChTUUxJVEUzX0NGTEFHUykgXAorCSQoVU5JQ09ERV9DRkxBR1MpIFwKKwkk
KFhDT01QT1NJVEVfQ0ZMQUdTKSBcCisJJChYREFNQUdFX0NGTEFHUykgXAorCSQoWFJFTkRFUl9D
RkxBR1MpIFwKKwkkKFhUX0NGTEFHUykKKwogIyBJbmplY3RlZCBCdW5kbGUKIGluamVjdGVkYnVu
ZGxlZGlyID0gJChsaWJkaXIpL3dlYmtpdDJndGstMy4wL2luamVjdGVkLWJ1bmRsZQogaWYgRU5B
QkxFX1dFQktJVDIKQEAgLTUzOSw2ICs1ODUsNyBAQCBQcm9ncmFtc19XZWJLaXRQbHVnaW5Qcm9j
ZXNzX0NQUEZMQUdTID0gXAogCS1ERU5BQkxFX1BMVUdJTl9QUk9DRVNTPTEgXAogCS1ETElCRVhF
Q0RJUj1cIiIkKGxpYmV4ZWNkaXIpIlwiIFwKIAkkKGdsb2JhbF9jcHBmbGFncykgXAorCSQocGxh
dGZvcm1ndGtfY3BwZmxhZ3MpIFwKIAkkKHdlYmNvcmVfY3BwZmxhZ3MpIFwKIAkkKHdlYmNvcmVn
dGtfY3BwZmxhZ3MpIFwKIAkkKGphdmFzY3JpcHRjb3JlX2NwcGZsYWdzKSBcCkBAIC01NzgsOCAr
NjI1LDkgQEAgUHJvZ3JhbXNfV2ViS2l0UGx1Z2luUHJvY2Vzc19MREFERCArPSBcCiBlbmRpZgog
CiBQcm9ncmFtc19XZWJLaXRQbHVnaW5Qcm9jZXNzX0xEQUREICs9IFwKLQlsaWJXZWJDb3JlUGxh
dGZvcm0ubGEgXAorCWxpYlBsYXRmb3JtR3RrMi5sYSBcCiAJbGliV2ViQ29yZUd0azIubGEgXAor
CWxpYldlYkNvcmVQbGF0Zm9ybS5sYSBcCiAJJChDQUlST19MSUJTKSBcCiAJJChDT1ZFUkFHRV9M
REZMQUdTKSBcCiAJJChHRU9DTFVFX0xJQlMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NjcmlwdHMvZ2VuZXJhdGUtZm9yd2FyZGluZy1oZWFkZXJzLnBsIGIvU291cmNlL1dlYktpdDIv
U2NyaXB0cy9nZW5lcmF0ZS1mb3J3YXJkaW5nLWhlYWRlcnMucGwKaW5kZXggNzJjZjYzZjIwYjI1
ZjM1ZGVmODUyYmViZmEwZTJkODk1Nzk0MjdjYi4uYjc4M2E1ODg5MGJkZTQ1N2IxMjcwNTczOWU1
YzY0N2I5YmQzZWQ0NyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdDIvU2NyaXB0cy9nZW5lcmF0
ZS1mb3J3YXJkaW5nLWhlYWRlcnMucGwKKysrIGIvU291cmNlL1dlYktpdDIvU2NyaXB0cy9nZW5l
cmF0ZS1mb3J3YXJkaW5nLWhlYWRlcnMucGwKQEAgLTM2LDcgKzM2LDcgQEAgdXNlIEZpbGU6OlNw
ZWM6OkZ1bmN0aW9uczsKIG15ICRzcmNSb290ID0gcmVhbHBhdGgoRmlsZTo6U3BlYy0+Y2F0Zmls
ZShkaXJuYW1lKGFic19wYXRoKCQwKSksICIuLi8uLiIpKTsKIG15ICRpbmNGcm9tUm9vdCA9IGFi
c19wYXRoKCRBUkdWWzBdKTsKIG15IEBwbGF0Zm9ybVByZWZpeGVzID0gKCJibGFja2JlcnJ5Iiwg
ImNmIiwgImNocm9taXVtIiwgImN1cmwiLCAiZWZsIiwgImd0ayIsICJtYWMiLCAicXQiLCAic291
cCIsICJ2OCIsICJ3aW4iLCAid3giKTsKLW15IEBmcmFtZXdvcmtzID0gKCAiSmF2YVNjcmlwdENv
cmUiLCAiV2ViQ29yZSIsICJXZWJLaXQyIik7CitteSBAZnJhbWV3b3JrcyA9ICgiSmF2YVNjcmlw
dENvcmUiLCAiUGxhdGZvcm0iLCAiV2ViQ29yZSIsICJXZWJLaXQyIik7CiBteSBAc2tpcHBlZFBy
ZWZpeGVzOwogbXkgQGZyYW1ld29ya0hlYWRlcnM7CiBteSAkZnJhbWV3b3JrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAppbmRleCAzOTY5ZTBj
ODY1ZWRlMDIyYmVhNTlhMTZiYjYyODZlMDFhYTg0OWZlLi4zMWNkNWRhOGE0YjQwNzgwNTJmYzg1
Yzk4NGIyY2ZkYzQyOGRiZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3Rr
L0FyZ3VtZW50Q29kZXJzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0Fy
Z3VtZW50Q29kZXJzR3RrLmNwcApAQCAtMjksMTAgKzI5LDEwIEBACiAjaW5jbHVkZSAiRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgPFBsYXRmb3JtL0d0a1ZlcnNpb25pbmcuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFPYmplY3RHdGsuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Ry
YWdEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0d0a1ZlcnNpb25pbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ29u
dGV4dENhaXJvLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAKaW5kZXggMmM3M2RjN2Uy
MjZkMzhkZGM3ZDg0M2Q5N2M5MjNkODJkNWRmNmVlOC4uYmQ3M2FiMWU4MzAxMzNmMmJhYWI0MzVk
ZGY5MGMxNzViMWJlYjU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9X
ZWJFdmVudEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZl
bnRGYWN0b3J5LmNwcApAQCAtMjgsMTAgKzI4LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiV2ViRXZlbnRGYWN0b3J5LmgiCiAKLSNpbmNsdWRlICJHdGtWZXJzaW9uaW5nLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFy
LmgiCiAjaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMuaCIKKyNpbmNsdWRlIDxQbGF0Zm9y
bS9HdGtWZXJzaW9uaW5nLmg+CiAjaW5jbHVkZSA8Z2RrL2dkay5oPgogI2luY2x1ZGUgPGdkay9n
ZGtrZXlzeW1zLmg+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRl
eCAyMzQ0Zjg5NGRmMzNlMGQzNzU0YWFmMWE5NDM2MjY0OGEyMWM1ZmJkLi5iYTcyZGRjODY5OGVk
NWQ1MDIyMDRmZTAyOWI0MzI0YWY3ZDZlY2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC00MSw2ICs0MSw3
IEBACiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViVmlld0Jhc2VJbnB1dE1ldGhvZEZpbHRlci5oIgor
I2luY2x1ZGUgPFBsYXRmb3JtL0d0a1ZlcnNpb25pbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Ns
aXBib2FyZEd0ay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2xpcGJvYXJkVXRpbGl0aWVzR3RrLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhT2JqZWN0R3RrLmg+CkBAIC01MCw3ICs1MSw2IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9HdGtDbGlja0NvdW50ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0
a0RyYWdBbmREcm9wSGVscGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtVdGlsaXRpZXMuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0d0a1ZlcnNpb25pbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05v
dEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYXN0ZWJvYXJkSGVscGVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBl
UGx1Z2luWDExLmNwcAppbmRleCBhMTg0Njg3OGIzMTA0NjE0YjdhMjZmYzI3Y2VhYjc5YTFhNGI5
OGUwLi42ZTA3NzY3ZDFkMWNkZjI5MjdlNmE0ODIzMjAyZDhiZjRkNjIxNWUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBl
UGx1Z2luWDExLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcApAQCAtNDIsNyArNDIsNyBAQAogI2luY2x1
ZGUgPGd0ay9ndGt4Lmg+CiAjZW5kaWYKICNpbmNsdWRlIDxnZGsvZ2RreC5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvR3RrVmVyc2lvbmluZy5oPgorI2luY2x1ZGUgPFBsYXRmb3JtL0d0a1ZlcnNpb25p
bmcuaD4KICNlbGlmIFBMQVRGT1JNKEVGTCkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gpCiAjaW5j
bHVkZSA8RWNvcmVfWC5oPgogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggZTQ3YmU5ZDE3ZDA4ZjgxMDlhZGI0MDI4ZmVhODM2YWIzOGM0
M2ZlNy4uMzI5ZDliNjU1MjhjMDMyOTllNjU1ODY5YmYzZmY2ODUxOTg0ZDEwNiAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDEzLTAzLTA3ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisKKyAg
ICAgICAgW0dUS10gU2V0IHVwIHRoZSBsaWJQbGF0Zm9ybUd0ay5sYSBsaWJyYXJ5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE3MzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFt
OiBSZWZlcmVuY2UgcGxhdGZvcm1ndGtfY3BwZmxhZ3MgdmFyaWFibGUgYWxvbmcgd2l0aCB3ZWJj
b3JlZ3RrX2NwcGZsYWdzIHZhcmlhYmxlLgorICAgICAgICBBZGp1c3QgdGhlIHBhdGggdG8gR3Rr
VmVyc2lvbmluZy5jLCB0aGUgZmlsZSBoYXMgbW92ZWQgdW5kZXIgU291cmNlL1BsYXRmb3JtLgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW06IFJlZmVyZW5jZSBwbGF0Zm9y
bWd0a19jcHBmbGFncyB2YXJpYWJsZSBhbG9uZyB3aXRoIHdlYmNvcmVndGtfY3BwZmxhZ3MgdmFy
aWFibGUuCisKIDIwMTMtMDMtMDcgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBkb24ndCB0cmFjayB0aGUgdG9wIGxvYWRpbmcgZnJh
bWUgaWYgbm8gbGF5b3V0IHRlc3QgaXMgY3VycmVudGx5IHJ1bm5pbmcKZGlmZiAtLWdpdCBhL1Rv
b2xzL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMvR05VbWFrZWZpbGUuYW0KaW5kZXggODUyOTU1Njhk
YjM2ZTcxMzFkZDk0ZWNmYzRkMjkxZWIzZjMzMTFmNi4uNzU1MmE0ZGVkNmVlYWU0N2ViMjkwOTVj
ZTQ0M2EzYmJhMzdjNDJmZCAxMDA2NDQKLS0tIGEvVG9vbHMvR05VbWFrZWZpbGUuYW0KKysrIGIv
VG9vbHMvR05VbWFrZWZpbGUuYW0KQEAgLTExNSw2ICsxMTUsNyBAQCBQcm9ncmFtc19EdW1wUmVu
ZGVyVHJlZV9DUFBGTEFHUyA9IFwKIAktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcyBc
CiAJLUkkKHRvcF9idWlsZGRpcikvU291cmNlL1dlYktpdC9ndGsgXAogCSQoamF2YXNjcmlwdGNv
cmVfY3BwZmxhZ3MpIFwKKwkkKHBsYXRmb3JtZ3RrX2NwcGZsYWdzKSBcCiAJJCh3ZWJjb3JlX2Nw
cGZsYWdzKQogCiBpZiBUQVJHRVRfWDExCkBAIC0xNjgsNyArMTY5LDcgQEAgUHJvZ3JhbXNfRHVt
cFJlbmRlclRyZWVfU09VUkNFUyA9IFwKIAlUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGV4dElu
cHV0Q29udHJvbGxlci5oIFwKIAlUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGV4dElucHV0Q29u
dHJvbGxlci5jcHAgXAogCVRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9Xb3JrUXVldWVJdGVtR3Rr
LmNwcCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1ZlcnNpb25pbmcuYworCVNv
dXJjZS9QbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5jCiAKIFByb2dyYW1zX0R1bXBSZW5kZXJU
cmVlX0NYWEZMQUdTID0gXAogCSQoZ2xvYmFsX2N4eGZsYWdzKSBcCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVt
YWtlZmlsZS5hbQppbmRleCAwMTY1MzQ1YmI5YjA1ZjUzNTdiOTlhZjI0ODY4ZTY5N2JhZDRkYmIz
Li5jNmQ4OWU3NTJhYTcyOWFkNWFhNjM3YzY2ZjIyNjcxODA4MDM2ZTMxIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvR05VbWFrZWZpbGUuYW0KQEAgLTcyLDYgKzcyLDcgQEAgbm9pbnN0X1BST0dSQU1TICs9IFwK
IAogUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9UZXN0R3RrX0NQUEZMQUdTID0gXAogCSQoUHJvZ3Jh
bXNfVGVzdFdlYktpdEFQSV9UZXN0V1RGX0NQUEZMQUdTKSBcCisJJChwbGF0Zm9ybWd0a19jcHBm
bGFncykgXAogCSQod2ViY29yZV9jcHBmbGFncykgXAogCSQod2ViY29yZWd0a19jcHBmbGFncykg
XAogCSQoRlJFRVRZUEVfQ0ZMQUdTKSBcCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VM
b2cKaW5kZXggMGQ2NjQwYjdhODQ2OTljOTAwMTVmN2FhNDQ3YTZjZTczOWIyMTg1Mi4uZmE3MmY1
OWUwNjNhMmI0MmY3MWZjOWIxN2IwMDBlNTI3ZDQ3NDcwZCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9n
CisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAzLTA3ICBaYW4gRG9iZXJz
ZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisKKyAgICAgICAgW0dUS10gU2V0IHVwIHRoZSBs
aWJQbGF0Zm9ybUd0ay5sYSBsaWJyYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTE3MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBEZWZpbmUgdGhlIHR3byB2YXJpYWJs
ZXMgdGhhdCB3aWxsIGhvbGQgc291cmNlcyBsaXN0IGFuZCBjcHBmbGFncyBhcyByZXF1aXJlZCBm
b3IgdGhlIG5ldyBsaWJyYXJ5LgorICAgICAgICBJbmNsdWRlIHRoZSBuZXcgR05VbWFrZWZpbGUu
YW0gdGhhdCdzIG5vdyBhdmFpbGFibGUgdW5kZXIgU291cmNlL1BsYXRmb3JtLgorCiAyMDEzLTAz
LTA2ICBBZGFtIEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gVXNl
IGltcGxpY2l0IHJlZmVyZW5jZXMgaW5zdGVhZCBvZiBvYmplY3QgZ3JvdXBzIHRvIGtlZXAgcmVn
aXN0ZXJlZCBNdXRhdGlvbk9ic2VydmVycyBhbGl2ZQpkaWZmIC0tZ2l0IGEvR05VbWFrZWZpbGUu
YW0gYi9HTlVtYWtlZmlsZS5hbQppbmRleCBkMGM0ZDE5ODZjNGQ0ZTg5NGFhMDEwZmZkZmFjZjli
YTc5NTRjNTEyLi5jZWRmOWJmZjE4YTdhOGRjMzU3NTNhYTMwYTgyMDVhNjkwNDg0NGJlIDEwMDY0
NAotLS0gYS9HTlVtYWtlZmlsZS5hbQorKysgYi9HTlVtYWtlZmlsZS5hbQpAQCAtNzAsNiArNzAs
OCBAQCBqYXZhc2NyaXB0Y29yZV9idWlsdF9zb3VyY2VzIDo9CiBqYXZhc2NyaXB0Y29yZV9idWls
dF9ub3NvdXJjZXMgOj0KIGxsaW50X25vc291cmNlcyA6PQogb2ZmbGluZWFzbV9ub3NvdXJjZXMg
Oj0KK3BsYXRmb3JtZ3RrX2NwcGZsYWdzIDo9CitwbGF0Zm9ybWd0a19zb3VyY2VzIDo9CiB3ZWJj
b3JlX3BsYXRmb3JtX3NvdXJjZXMgOj0KIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzIDo9CiB3ZWJj
b3JlX3N2Z19idWlsdF9zb3VyY2VzIDo9CkBAIC0xNzYsNiArMTc4LDcgQEAgRVhUUkFfRElTVCAr
PSBcCiAjIEluY2x1ZGUgbW9kdWxlIG1ha2VmaWxlcwogaW5jbHVkZSBTb3VyY2UvV1RGL0dOVW1h
a2VmaWxlLmFtCiBpbmNsdWRlIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQor
aW5jbHVkZSBTb3VyY2UvUGxhdGZvcm0vR05VbWFrZWZpbGUuYW0KIGluY2x1ZGUgU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KIGluY2x1ZGUgU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZp
bGUuYW0KIGluY2x1ZGUgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmls
ZS5hbQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192025</attachid>
            <date>2013-03-07 09:52:37 -0800</date>
            <delta_ts>2013-03-12 08:54:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111738-20130307184840.patch</filename>
            <type>text/plain</type>
            <size>59122</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA2NDQ2NTZhOGJjYmZi
Y2VkOTk3ODNhNzZlZjQ5NDdlODk5YTI5MDE3Li5hZDg3YzBlNDFkM2ZjMjY0ZGRmZTIzNmQxZDg2
ZTU3N2I1NWMxMWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMy0wMy0wNyAg
WmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gU2V0
IHVwIHRoZSBsaWJQbGF0Zm9ybUd0ay5sYSBsaWJyYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE3MzgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGRlZC4gU2V0IHVw
IHRoZSBydWxlcyBmb3IgYnVpbGRpbmcgdGhlIG5ldyBsaWJQbGF0Zm9ybUd0ay5sYS4gRm9yIG5v
dyBpdCB3aWxsIGJlIGJ1aWx0IGluCisgICAgICAgIHRoZSBzYW1lIHdheSBhcyBsaWJXZWJDb3Jl
R3RrLmxhIGFuZCBpbiBwYXJhbGxlbCB3aXRoIGl0IHdoaWxlIHRoZSBzb3VyY2VzIGFyZSBtb3Zl
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtCisgICAgICAgIHRvIFNvdXJjZS9QbGF0Zm9y
bS9ndGsgYW5kIGVhY2ggbWlncmF0ZWQgc291cmNlIGZpbGUgbW92ZXMgdG8gYmUgYnVpbHQgaW4g
bGliUGxhdGZvcm1HdGsubGEgaW5zdGVhZCBvZiBsaWJXZWJDb3JlR3RrLmxhLgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZGVkLiBMaXN0cyB0aGUgYnVpbGQgdGFyZ2V0cyBmb3Ig
dGhlIGxpYlBsYXRmb3JtR3RrLmxhLgorICAgICAgICAqIGd0ay9HdGtWZXJzaW9uaW5nLmM6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5jLiBU
aGlzIGZpbGUgaXMgaW5kZXBlbmRlbnQgb2YgV2ViQ29yZSBhbmQgY2FuIGJlIG1vdmVkCisgICAg
ICAgIGFuZCBjaGFuZ2VkIHRvIGJlIGJ1aWx0IGludG8gbGliUGxhdGZvcm1HdGsubGEgcmlnaHQg
YXdheS4KKyAgICAgICAgKiBndGsvR3RrVmVyc2lvbmluZy5oOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1ZlcnNpb25pbmcuaC4gRGl0dG8uCisKIDIwMTMtMDMt
MDYgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgogCiAgICAgICAgIFtDaHJvbWl1
bV0gRml4IGJ5dGUgb3JkZXJpbmcgYnVncyByZWFkaW5nIGJhY2sgV2ViR0wgY2FudmFzZXMnIGNv
bnRlbnQgb24gQW5kcm9pZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdkNTU4ODYzYjBiZGJjYWZiYTAzZDg2Nzdh
NTA1NjEyMzhjMGQxNTAuLmJjYTRmNTAwZTNhOGUxNGUyNzMzZDdlYzE4NTI2MjQ1ZjQ2MmM3YzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wMy0wNyAgWmFuIERvYmVyc2VrICA8
emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gU2V0IHVwIHRoZSBsaWJQbGF0
Zm9ybUd0ay5sYSBsaWJyYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTE3MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMgLSBubyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAg
ICAqIEdOVW1ha2VmaWxlLmFtOiBSZWZlcmVuY2UgcGxhdGZvcm1ndGtfY3BwZmxhZ3MsIHBsYXRm
b3JtZ3RrX3NvdXJjZXMgdmFyaWFibGVzIGFsb25nIHdpdGggd2ViY29yZWd0a19jcHBmbGFncywg
d2ViY29yZWd0a19zb3VyY2VzIHZhcmlhYmxlcy4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0
LmFtOiBSZW1vdmluZyBHdGtWZXJzaW9uaW5nLmMgYW5kIEd0a1ZlcnNpb25pbmcuaCBmcm9tIHRo
ZSBzb3VyY2VzIGxpc3QsIHRoZXNlIGZpbGVzIGhhdmUgYmVlbiBtb3ZlZCB1bmRlciBTb3VyY2Uv
UGxhdGZvcm0uCisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbTogRGl0
dG8gb24gdGhlIHBsYXRmb3JtZ3RrXyogdmFyaWFibGVzLgorCiAyMDEzLTAzLTA3ICBWc2V2b2xv
ZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFN0eWxlcyBzaWRlYmFyIHBhbmUgdG9vbGJhciBkaXNhcHBlYXJzIGluIGhvcml6b250YWwgc3Bs
aXQgbW9kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBiMDY2ZWM0YTZiZmMwMDhjMzUxY2IyMzA4ODU0
NTc4YzgzYjlmNjAxLi5jMGVmMGQ3Mjg1MjE3ZjAxOGQ2OWJkMmE1ODg5ZmNmOTc0NWQyOWQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUgQEAKIDIwMTMtMDMtMDcgIFphbiBEb2JlcnNl
ayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCisgICAgICAgIFtHVEtdIFNldCB1cCB0aGUgbGli
UGxhdGZvcm1HdGsubGEgbGlicmFyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTExNzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogUmVmZXJlbmNlIHBsYXRmb3JtZ3RrX2Nw
cGZsYWdzIHZhcmlhYmxlLCBsaWJQbGF0Zm9ybUd0ay5sYSBhbG9uZyB3aXRoIHdlYmNvcmVndGtf
Y3BwZmxhZ3MgdmFyaWFibGUsIGxpYldlYkNvcmVHdGsubGEuCisgICAgICAgIEFkanVzdCB0aGUg
cGF0aCB0byBHdGtWZXJzaW9uaW5nLmMsIHRoZSBmaWxlIGhhcyBtb3ZlZCB1bmRlciBTb3VyY2Uv
UGxhdGZvcm0uCisKKzIwMTMtMDMtMDcgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEu
Y29tPgorCiAgICAgICAgIFtHVEtdIExpbWl0IHRoZSBzdXBwb3J0ZWQgY29tcGlsZXJzIHRvIEdD
QyA+PSA0LjcgYW5kIENsYW5nID49IDMuMAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA5OTMyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlNGZkMGU5YTgwYWYzNzJj
MjM5Y2I0NDI1MDYwNGQ0ODQ1YzNlMzc0Li40ZGM2NWU3OGM1ZGVlNGFmMDZjMTExMmViNjNjNGY2
MTI5M2RiYzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUgQEAKIDIwMTMtMDMtMDcgIFphbiBE
b2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCisgICAgICAgIFtHVEtdIFNldCB1cCB0
aGUgbGliUGxhdGZvcm1HdGsubGEgbGlicmFyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExNzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogUmVmZXJlbmNlIHBsYXRmb3Jt
Z3RrX2NwcGZsYWdzIHZhcmlhYmxlLCBsaWJQbGF0Zm9ybUd0ay5sYSBhbG9uZyB3aXRoIHdlYmNv
cmVndGtfY3BwZmxhZ3MgdmFyaWFibGUsIGxpYldlYkNvcmVHdGsubGEuCisgICAgICAgIEFkanVz
dCB0aGUgcGF0aCB0byBHdGtWZXJzaW9uaW5nLmMsIHRoZSBmaWxlIGhhcyBtb3ZlZCB1bmRlciBT
b3VyY2UvUGxhdGZvcm0uCisKKzIwMTMtMDMtMDcgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0Bp
Z2FsaWEuY29tPgorCiAgICAgICAgIFtHVEtdIExpbWl0IHRoZSBzdXBwb3J0ZWQgY29tcGlsZXJz
IHRvIEdDQyA+PSA0LjcgYW5kIENsYW5nID49IDMuMAogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5OTMyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0
Zm9ybS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9QbGF0Zm9ybS9HTlVtYWtlZmlsZS5hbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iMTFkZTIwMTgyNGE2ODI1Nzc3MTU5NzkxMGU5ZGQxMzFhY2UxNmRhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL0dOVW1ha2VmaWxlLmFtCkBAIC0wLDAgKzEsNTUg
QEAKKyMgVGhlIHBsYXRmb3JtIGxheWVyIGNvZGUgaXMgYnVpbHQgaW50byB0d28gc2VwYXJhdGUg
c3RhdGljIGxpYnJhcmllcyAtIGxpYlBsYXRmb3JtR3RrLmxhCisjIGlzIGJ1aWx0IGZyb20gZmls
ZXMgdGhhdCByZXF1aXJlIEdUSysgYW5kIGxpYlBsYXRmb3JtLmxhIGlzIGJ1aWx0IGZyb20gYWxs
IHRoZSBvdGhlciBmaWxlcy4KKyMgVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBidWlsZCB0d28g
c2VwYXJhdGUgbGliUGxhdGZvcm1HdGsubGEgbGlicmFyaWVzLCBvbmUgdXNpbmcgR1RLMworIyBh
bmQgdGhlIG90aGVyIChuYW1lZCBsaWJQbGF0Zm9ybUd0azIubGEpIHVzaW5nIEdUSzIuIFRoZSBs
YXR0ZXIgaXMgcmVxdWlyZWQgYnkgdGhlCisjIFdlYktpdFBsdWdpblByb2Nlc3MgaW4gV2ViS2l0
MiBhcyBzb21lIHBsdWdpbnMgKHN1Y2ggYXMgRmxhc2gpIHN0aWxsIHVzZSBHVEsyLgorIyBGb3Ig
bm93IHdlIG9ubHkgYnVpbGQgdGhlIGxpYlBsYXRmb3JtR3RrIGxpYnJhcnkgYXMgdGhlcmUgYXJl
IG5vIHNvdXJjZSBmaWxlcyBpbiBwbGFjZSB5ZXQKKyMgdGhhdCBjb3VsZCBiZSBidWlsdCBpbnRv
IGxpYlBsYXRmb3JtLgorCitwbGF0Zm9ybWd0a19jcHBmbGFncyArPSBcCisJLURXRUJLSVRHVEtf
QVBJX1ZFUlNJT05fU1RSSU5HPVwiQFdFQktJVEdUS19BUElfVkVSU0lPTkBcIiBcCisJLUkkKHNy
Y2RpcikvU291cmNlL1BsYXRmb3JtL2d0aworCitub2luc3RfTFRMSUJSQVJJRVMgKz0gXAorCWxp
YlBsYXRmb3JtR3RrLmxhCisKK2xpYlBsYXRmb3JtR3RrX2xhX1NPVVJDRVMgPSBcCisJJChwbGF0
Zm9ybWd0a19zb3VyY2VzKQorCitsaWJQbGF0Zm9ybUd0a19sYV9DWFhGTEFHUyA9IFwKKwktZnZp
c2liaWxpdHktaW5saW5lcy1oaWRkZXIgXAorCSQoZ2xvYmFsX2N4eGZsYWdzKQorCitsaWJQbGF0
Zm9ybUd0a19sYV9DRkxBR1MgPSBcCisJLWZ2aXNpYmlsaXR5PWhpZGRlbiBcCisJJChnbG9iYWxf
Y2ZsYWdzKQorCitsaWJQbGF0Zm9ybUd0a19sYV9DUFBGTEFHUyA9IFwKKwktREJVSUxESU5HX1dF
QktJVCBcCisJJChnbG9iYWxfY3BwZmxhZ3MpIFwKKwkkKHBsYXRmb3JtZ3RrX2NwcGZsYWdzKSBc
CisJJChqYXZhc2NyaXB0Y29yZV9jcHBmbGFncykgXAorCS1mbm8tc3RyaWN0LWFsaWFzaW5nIFwK
KwkkKEhJTERPTl9DUFBGTEFHUykgXAorCSQoQ0FJUk9fQ0ZMQUdTKSBcCisJJChDTFVUVEVSX0NG
TEFHUykgXAorCSQoQ09WRVJBR0VfQ0ZMQUdTKSBcCisJJChFTkNIQU5UX0NGTEFHUykgXAorCSQo
RlJFRVRZUEVfQ0ZMQUdTKSBcCisJJChHQUlMX0NGTEFHUykgXAorCSQoR0FNRVBBRF9DRkxBR1Mp
IFwKKwkkKEdFT0NMVUVfQ0ZMQUdTKSBcCisJJChHTElCX0NGTEFHUykgXAorCSQoR1NUUkVBTUVS
X0NGTEFHUykgXAorCSQoR1RLX0NGTEFHUykgXAorCSQoSElMRE9OX0NGTEFHUykgXAorCSQoTElC
U0VDUkVUX0NGTEFHUykgXAorCSQoTElCU09VUF9DRkxBR1MpIFwKKwkkKExJQlhNTF9DRkxBR1Mp
IFwKKwkkKExJQlhTTFRfQ0ZMQUdTKSBcCisJJChTUUxJVEUzX0NGTEFHUykgXAorCSQoVU5JQ09E
RV9DRkxBR1MpIFwKKwkkKFhDT01QT1NJVEVfQ0ZMQUdTKSBcCisJJChYREFNQUdFX0NGTEFHUykg
XAorCSQoWFJFTkRFUl9DRkxBR1MpIFwKKwkkKFhUX0NGTEFHUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9QbGF0Zm9ybS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1BsYXRmb3JtL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk2YmVjZmI3MmUzN2JlZmViNjdhZDU1MThmNjI5ODc5
ZWE0NjYzMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9HTlVtYWtlZmlsZS5s
aXN0LmFtCkBAIC0wLDAgKzEsMyBAQAorcGxhdGZvcm1ndGtfc291cmNlcyArPSBcCisJU291cmNl
L1BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmMgXAorCVNvdXJjZS9QbGF0Zm9ybS9ndGsvR3Rr
VmVyc2lvbmluZy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vZ3RrL0d0a1ZlcnNpb25p
bmcuYyBiL1NvdXJjZS9QbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5jCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFj
MmY4NGMyZWY4ODY2YzAzYzA2ZjE2ZGMyMTU5ZmZlYTk5N2NkYzgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvUGxhdGZvcm0vZ3RrL0d0a1ZlcnNpb25pbmcuYwpAQCAtMCwwICsxLDM4MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBDb2xsYWJvcmEgTHRkLgorICogQ29weXJpZ2h0IChD
KSAyMDEwIElnYWxpYSwgUy5MLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiR3RrVmVyc2lvbmluZy5o
IgorCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorCisjaWZkZWYgR0RLX1dJTkRPV0lOR19YMTEKKyNp
bmNsdWRlIDxYMTEvWGF0b20uaD4KKyNpbmNsdWRlIDxnZGsvZ2RreC5oPgorI2VuZGlmCisKKyNp
ZiAhR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTQsIDApCit2b2lkIGd0a19hZGp1c3RtZW50X3NldF92
YWx1ZShHdGtBZGp1c3RtZW50KiBhZGp1c21lbnQsIGdkb3VibGUgdmFsdWUpCit7CisgICAgICAg
IG1fYWRqdXN0bWVudC0+dmFsdWUgPSBtX2N1cnJlbnRQb3M7CisgICAgICAgIGd0a19hZGp1c3Rt
ZW50X3ZhbHVlX2NoYW5nZWQobV9hZGp1c3RtZW50KTsKK30KKwordm9pZCBndGtfYWRqdXN0bWVu
dF9jb25maWd1cmUoR3RrQWRqdXN0bWVudCogYWRqdXN0bWVudCwgZ2RvdWJsZSB2YWx1ZSwgZ2Rv
dWJsZSBsb3dlciwgZ2RvdWJsZSB1cHBlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdkb3VibGUgc3RlcEluY3JlbWVudCwgZ2RvdWJsZSBwYWdlSW5jcmVtZW50LCBnZG91YmxlIHBh
Z2VTaXplKQoreworICAgIGdfb2JqZWN0X2ZyZWV6ZV9ub3RpZnkoR19PQkpFQ1QoYWRqdXN0bWVu
dCkpOworCisgICAgZ19vYmplY3Rfc2V0KGFkanVzdG1lbnQsCisgICAgICAgICAgICAgICAgICJs
b3dlciIsIGxvd2VyLAorICAgICAgICAgICAgICAgICAidXBwZXIiLCB1cHBlciwKKyAgICAgICAg
ICAgICAgICAgInN0ZXAtaW5jcmVtZW50Iiwgc3RlcEluY3JlbWVudCwKKyAgICAgICAgICAgICAg
ICAgInBhZ2UtaW5jcmVtZW50IiwgcGFnZUluY3JlbWVudCwKKyAgICAgICAgICAgICAgICAgInBh
Z2Utc2l6ZSIsIHBhZ2VTaXplLAorICAgICAgICAgICAgICAgICBOVUxMKTsKKworICAgIGdfb2Jq
ZWN0X3RoYXdfbm90aWZ5KEdfT0JKRUNUKGFkanVzdG1lbnQpKTsKKworICAgIGd0a19hZGp1c3Rt
ZW50X2NoYW5nZWQoYWRqdXN0bWVudCk7CisgICAgZ3RrX2FkanVzdG1lbnRfdmFsdWVfY2hhbmdl
ZChhZGp1c3RtZW50KTsKK30KKyNlbmRpZgorCitHZGtEZXZpY2UgKmdldERlZmF1bHRHREtQb2lu
dGVyRGV2aWNlKEdka1dpbmRvdyogd2luZG93KQoreworI2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05f
MgorICAgIEdka0RldmljZU1hbmFnZXIgKm1hbmFnZXIgPSAgZ2RrX2Rpc3BsYXlfZ2V0X2Rldmlj
ZV9tYW5hZ2VyKGdka193aW5kb3dfZ2V0X2Rpc3BsYXkod2luZG93KSk7CisgICAgcmV0dXJuIGdk
a19kZXZpY2VfbWFuYWdlcl9nZXRfY2xpZW50X3BvaW50ZXIobWFuYWdlcik7CisjZWxzZQorICAg
IHJldHVybiBnZGtfZGV2aWNlX2dldF9jb3JlX3BvaW50ZXIoKTsKKyNlbmRpZiAvLyBHVEtfQVBJ
X1ZFUlNJT05fMgorfQorCisjaWYgIUdUS19DSEVDS19WRVJTSU9OKDIsIDE3LCAzKQordm9pZCBn
ZGtfd2luZG93X2dldF9yb290X2Nvb3JkcyhHZGtXaW5kb3cqIHdpbmRvdywgZ2ludCB4LCBnaW50
IHksIGdpbnQqIHJvb3RYLCBnaW50KiByb290WSkKK3sKKyAgICBnZGtfd2luZG93X2dldF9yb290
X29yaWdpbih3aW5kb3csIHJvb3RYLCByb290WSk7CisgICAgKnJvb3RYID0gKnJvb3RYICsgeDsK
KyAgICAqcm9vdFkgPSAqcm9vdFkgKyB5OworfQorI2VuZGlmCisKK0dka0N1cnNvciAqIGJsYW5r
Q3Vyc29yKCkKK3sKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNiwgMCkKKyAgICByZXR1cm4g
Z2RrX2N1cnNvcl9uZXcoR0RLX0JMQU5LX0NVUlNPUik7CisjZWxzZQorICAgIEdka0N1cnNvciAq
IGN1cnNvcjsKKyAgICBHZGtQaXhtYXAgKiBzb3VyY2U7CisgICAgR2RrUGl4bWFwICogbWFzazsK
KyAgICBHZGtDb2xvciBmb3JlZ3JvdW5kID0geyAwLCA2NTUzNSwgMCwgMCB9OyAvLyBSZWQuCisg
ICAgR2RrQ29sb3IgYmFja2dyb3VuZCA9IHsgMCwgMCwgMCwgNjU1MzUgfTsgLy8gQmx1ZS4KKyAg
ICBzdGF0aWMgZ2NoYXIgY3Vyc29yQml0c1tdID0gezB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAw
eDAsIDB4MCwgMHgwfTsKKworICAgIHNvdXJjZSA9IGdka19iaXRtYXBfY3JlYXRlX2Zyb21fZGF0
YSgwLCBjdXJzb3JCaXRzLCA4LCA4KTsKKyAgICBtYXNrID0gZ2RrX2JpdG1hcF9jcmVhdGVfZnJv
bV9kYXRhKDAsIGN1cnNvckJpdHMsIDgsIDgpOworICAgIGN1cnNvciA9IGdka19jdXJzb3JfbmV3
X2Zyb21fcGl4bWFwKHNvdXJjZSwgbWFzaywgJmZvcmVncm91bmQsICZiYWNrZ3JvdW5kLCA4LCA4
KTsKKyAgICBnZGtfcGl4bWFwX3VucmVmKHNvdXJjZSk7CisgICAgZ2RrX3BpeG1hcF91bnJlZiht
YXNrKTsKKyAgICByZXR1cm4gY3Vyc29yOworI2VuZGlmIC8vIEdUS19DSEVDS19WRVJTSU9OKDIs
IDE2LCAwKQorfQorCisjaWYgIUdUS19DSEVDS19WRVJTSU9OKDIsIDE2LCAwKQorY29uc3QgZ2No
YXIqIGd0a19tZW51X2l0ZW1fZ2V0X2xhYmVsKEd0a01lbnVJdGVtKiBtZW51SXRlbSkKK3sKKyAg
ICBHdGtXaWRnZXQgKiBsYWJlbCA9IGd0a19iaW5fZ2V0X2NoaWxkKEdUS19CSU4obWVudUl0ZW0p
KTsKKyAgICBpZiAoR1RLX0lTX0xBQkVMKGxhYmVsKSkKKyAgICAgICAgcmV0dXJuIGd0a19sYWJl
bF9nZXRfdGV4dChHVEtfTEFCRUwobGFiZWwpKTsKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZiAv
LyBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNiwgMCkKKworI2lmZGVmIEdUS19BUElfVkVSU0lPTl8y
CitzdGF0aWMgY2Fpcm9fZm9ybWF0X3QKK2dka19jYWlyb19mb3JtYXRfZm9yX2NvbnRlbnQoY2Fp
cm9fY29udGVudF90IGNvbnRlbnQpCit7CisgICAgc3dpdGNoIChjb250ZW50KSB7CisgICAgY2Fz
ZSBDQUlST19DT05URU5UX0NPTE9SOgorICAgICAgICByZXR1cm4gQ0FJUk9fRk9STUFUX1JHQjI0
OworICAgIGNhc2UgQ0FJUk9fQ09OVEVOVF9BTFBIQToKKyAgICAgICAgcmV0dXJuIENBSVJPX0ZP
Uk1BVF9BODsKKyAgICBjYXNlIENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEE6CisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIENBSVJPX0ZPUk1BVF9BUkdCMzI7CisgICAgfQorfQorCitzdGF0
aWMgY2Fpcm9fc3VyZmFjZV90KgorZ2RrX2NhaXJvX3N1cmZhY2VfY29lcmNlX3RvX2ltYWdlKGNh
aXJvX3N1cmZhY2VfdCogc3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjYWlyb19jb250ZW50X3QgY29udGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhl
aWdodCkKK3sKKyAgICBjYWlyb19zdXJmYWNlX3QgKiBjb3B5OworICAgIGNhaXJvX3QgKiBjcjsK
KworICAgIGlmIChjYWlyb19zdXJmYWNlX2dldF90eXBlKHN1cmZhY2UpID09IENBSVJPX1NVUkZB
Q0VfVFlQRV9JTUFHRQorICAgICAgICAmJiBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KHN1cmZh
Y2UpID09IGNvbnRlbnQKKyAgICAgICAgJiYgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgo
c3VyZmFjZSkgPj0gd2lkdGgKKyAgICAgICAgJiYgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVp
Z2h0KHN1cmZhY2UpID49IGhlaWdodCkKKyAgICAgICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfcmVm
ZXJlbmNlKHN1cmZhY2UpOworCisgICAgY29weSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRl
KGdka19jYWlyb19mb3JtYXRfZm9yX2NvbnRlbnQoY29udGVudCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBoZWlnaHQpOworCisgICAgY3IgPSBjYWlyb19jcmVhdGUoY29weSk7CisgICAg
Y2Fpcm9fc2V0X29wZXJhdG9yKGNyLCBDQUlST19PUEVSQVRPUl9TT1VSQ0UpOworICAgIGNhaXJv
X3NldF9zb3VyY2Vfc3VyZmFjZShjciwgc3VyZmFjZSwgMCwgMCk7CisgICAgY2Fpcm9fcGFpbnQo
Y3IpOworICAgIGNhaXJvX2Rlc3Ryb3koY3IpOworCisgICAgcmV0dXJuIGNvcHk7Cit9CisKK3N0
YXRpYyB2b2lkCitjb252ZXJ0X2FscGhhKGd1Y2hhciAqIGRlc3REYXRhLCBpbnQgZGVzdFN0cmlk
ZSwKKyAgICAgICAgICAgICAgZ3VjaGFyICogc3JjRGF0YSwgaW50IHNyY1N0cmlkZSwKKyAgICAg
ICAgICAgICAgaW50IHNyY1gsIGludCBzcmNZLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7Cisg
ICAgaW50IHgsIHk7CisKKyAgICBzcmNEYXRhICs9IHNyY1N0cmlkZSAqIHNyY1kgKyBzcmNZICog
NDsKKworICAgIGZvciAoeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykgeworICAgICAgICBndWludDMy
ICogc3JjID0gKGd1aW50MzIgKikgc3JjRGF0YTsKKworICAgICAgICBmb3IgKHggPSAwOyB4IDwg
d2lkdGg7IHgrKykgeworICAgICAgICAgICAgZ3VpbnQgYWxwaGEgPSBzcmNbeF0gPj4gMjQ7CisK
KyAgICAgICAgICAgIGlmICghYWxwaGEpIHsKKyAgICAgICAgICAgICAgICBkZXN0RGF0YVt4ICog
NCArIDBdID0gMDsKKyAgICAgICAgICAgICAgICBkZXN0RGF0YVt4ICogNCArIDFdID0gMDsKKyAg
ICAgICAgICAgICAgICBkZXN0RGF0YVt4ICogNCArIDJdID0gMDsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGVzdERhdGFbeCAqIDQgKyAwXSA9ICgoKHNyY1t4XSAmIDB4
ZmYwMDAwKSA+PiAxNikgKiAyNTUgKyBhbHBoYSAvIDIpIC8gYWxwaGE7CisgICAgICAgICAgICAg
ICAgZGVzdERhdGFbeCAqIDQgKyAxXSA9ICgoKHNyY1t4XSAmIDB4MDBmZjAwKSA+PiAgOCkgKiAy
NTUgKyBhbHBoYSAvIDIpIC8gYWxwaGE7CisgICAgICAgICAgICAgICAgZGVzdERhdGFbeCAqIDQg
KyAyXSA9ICgoKHNyY1t4XSAmIDB4MDAwMGZmKSA+PiAgMCkgKiAyNTUgKyBhbHBoYSAvIDIpIC8g
YWxwaGE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZXN0RGF0YVt4ICogNCArIDNdID0g
YWxwaGE7CisgICAgICAgIH0KKworICAgICAgICBzcmNEYXRhICs9IHNyY1N0cmlkZTsKKyAgICAg
ICAgZGVzdERhdGEgKz0gZGVzdFN0cmlkZTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitjb252
ZXJ0X25vX2FscGhhKGd1Y2hhciAqIGRlc3REYXRhLCBpbnQgZGVzdFN0cmlkZSwgZ3VjaGFyICog
c3JjRGF0YSwKKyAgICAgICAgICAgICAgICAgaW50IHNyY1N0cmlkZSwgaW50IHNyY1gsIGludCBz
cmNZLAorICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgaW50
IHgsIHk7CisKKyAgICBzcmNEYXRhICs9IHNyY1N0cmlkZSAqIHNyY1kgKyBzcmNYICogNDsKKwor
ICAgIGZvciAoeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykgeworICAgICAgICBndWludDMyICogc3Jj
ID0gKGd1aW50MzIgKikgc3JjRGF0YTsKKworICAgICAgICBmb3IgKHggPSAwOyB4IDwgd2lkdGg7
IHgrKykgeworICAgICAgICAgICAgZGVzdERhdGFbeCAqIDMgKyAwXSA9IHNyY1t4XSA+PiAxNjsK
KyAgICAgICAgICAgIGRlc3REYXRhW3ggKiAzICsgMV0gPSBzcmNbeF0gPj4gIDg7CisgICAgICAg
ICAgICBkZXN0RGF0YVt4ICogMyArIDJdID0gc3JjW3hdOworICAgICAgICB9CisKKyAgICAgICAg
c3JjRGF0YSArPSBzcmNTdHJpZGU7CisgICAgICAgIGRlc3REYXRhICs9IGRlc3RTdHJpZGU7Cisg
ICAgfQorfQorCisvKioKKyAqIGdka19waXhidWZfZ2V0X2Zyb21fc3VyZmFjZToKKyAqIEBzdXJm
YWNlOiBzdXJmYWNlIHRvIGNvcHkgZnJvbQorICogQHNyY194OiBTb3VyY2UgWCBjb29yZGluYXRl
IHdpdGhpbiBAc3VyZmFjZQorICogQHNyY195OiBTb3VyY2UgWSBjb29yZGluYXRlIHdpdGhpbiBA
c3VyZmFjZQorICogQHdpZHRoOiBXaWR0aCBpbiBwaXhlbHMgb2YgcmVnaW9uIHRvIGdldAorICog
QGhlaWdodDogSGVpZ2h0IGluIHBpeGVscyBvZiByZWdpb24gdG8gZ2V0CisgKgorICogVHJhbnNm
ZXJzIGltYWdlIGRhdGEgZnJvbSBhICNjYWlyb19zdXJmYWNlX3QgYW5kIGNvbnZlcnRzIGl0IHRv
IGFuIFJHQihBKQorICogcmVwcmVzZW50YXRpb24gaW5zaWRlIGEgI0dka1BpeGJ1Zi4gVGhpcyBh
bGxvd3MgeW91IHRvIGVmZmljaWVudGx5IHJlYWQKKyAqIGluZGl2aWR1YWwgcGl4ZWxzIGZyb20g
Y2Fpcm8gc3VyZmFjZXMuIEZvciAjR2RrV2luZG93cywgdXNlCisgKiBnZGtfcGl4YnVmX2dldF9m
cm9tX3dpbmRvdygpIGluc3RlYWQuCisgKgorICogVGhpcyBmdW5jdGlvbiB3aWxsIGNyZWF0ZSBh
biBSR0IgcGl4YnVmIHdpdGggOCBiaXRzIHBlciBjaGFubmVsLiBUaGUgcGl4YnVmCisgKiB3aWxs
IGNvbnRhaW4gYW4gYWxwaGEgY2hhbm5lbCBpZiB0aGUgQHN1cmZhY2UgY29udGFpbnMgb25lLgor
ICoKKyAqIFJldHVybiB2YWx1ZTogKHRyYW5zZmVyIGZ1bGwpOiBBIG5ld2x5LWNyZWF0ZWQgcGl4
YnVmIHdpdGggYSByZWZlcmVuY2UgY291bnQKKyAqIG9mIDEsIG9yICVOVUxMIG9uIGVycm9yCisg
KiovCitHZGtQaXhidWYqCitnZGtfcGl4YnVmX2dldF9mcm9tX3N1cmZhY2UoY2Fpcm9fc3VyZmFj
ZV90ICogc3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjWCwgaW50
IHNyY1ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KQoreworICAgIGNhaXJvX2NvbnRlbnRfdCBjb250ZW50OworICAgIEdka1BpeGJ1ZiAqIGRlc3Q7
CisKKyAgICAvKiBHZW5lcmFsIHNhbml0eSBjaGVja3MgKi8KKyAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChzdXJmYWNlLCBOVUxMKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzcmNYID49IDAg
JiYgc3JjWSA+PSAwLCBOVUxMKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCh3aWR0aCA+IDAg
JiYgaGVpZ2h0ID4gMCwgTlVMTCk7CisKKyAgICBjb250ZW50ID0gY2Fpcm9fc3VyZmFjZV9nZXRf
Y29udGVudChzdXJmYWNlKSB8IENBSVJPX0NPTlRFTlRfQ09MT1I7CisgICAgZGVzdCA9IGdka19w
aXhidWZfbmV3KEdES19DT0xPUlNQQUNFX1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ISEoY29udGVudCAmIENBSVJPX0NPTlRFTlRfQUxQSEEpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICA4LAorICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0KTsKKworICAg
IHN1cmZhY2UgPSBnZGtfY2Fpcm9fc3VyZmFjZV9jb2VyY2VfdG9faW1hZ2Uoc3VyZmFjZSwgY29u
dGVudCwgc3JjWCArIHdpZHRoLCBzcmNZICsgaGVpZ2h0KTsKKyAgICBjYWlyb19zdXJmYWNlX2Zs
dXNoKHN1cmZhY2UpOworICAgIGlmIChjYWlyb19zdXJmYWNlX3N0YXR1cyhzdXJmYWNlKSB8fCAh
ZGVzdCkgeworICAgICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3koc3VyZmFjZSk7CisgICAgICAg
IHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChnZGtfcGl4YnVmX2dldF9oYXNfYWxwaGEo
ZGVzdCkpCisgICAgICAgIGNvbnZlcnRfYWxwaGEoZ2RrX3BpeGJ1Zl9nZXRfcGl4ZWxzKGRlc3Qp
LAorICAgICAgICAgICAgICAgICAgICAgICBnZGtfcGl4YnVmX2dldF9yb3dzdHJpZGUoZGVzdCks
CisgICAgICAgICAgICAgICAgICAgICAgIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3Vy
ZmFjZSksCisgICAgICAgICAgICAgICAgICAgICAgIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0
cmlkZShzdXJmYWNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgc3JjWCwgc3JjWSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCk7CisgICAgZWxzZQorICAgICAgICBjb252
ZXJ0X25vX2FscGhhKGdka19waXhidWZfZ2V0X3BpeGVscyhkZXN0KSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2RrX3BpeGJ1Zl9nZXRfcm93c3RyaWRlKGRlc3QpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUoc3Vy
ZmFjZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1gsIHNyY1ksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQpOworCisgICAgY2Fpcm9fc3VyZmFjZV9kZXN0
cm95KHN1cmZhY2UpOworICAgIHJldHVybiBkZXN0OworfQorCisjaWYgR1RLX0NIRUNLX1ZFUlNJ
T04oMiwgMjQsIDApCit2b2lkIGdldEdka0RyYXdhYmxlU2l6ZShHZGtEcmF3YWJsZSAqZHJhd2Fi
bGUsIGludCAqd2lkdGgsIGludCAqaGVpZ2h0KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoR0RL
X0lTX1BJWE1BUChkcmF3YWJsZSkgfHwgR0RLX0lTX1dJTkRPVyhkcmF3YWJsZSkpOworCisgICAg
aWYgKEdES19JU19QSVhNQVAoZHJhd2FibGUpKSB7CisgICAgICAgIGdka19waXhtYXBfZ2V0X3Np
emUoR0RLX1BJWE1BUChkcmF3YWJsZSksIHdpZHRoLCBoZWlnaHQpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgR2RrV2luZG93ICp3aW5kb3cgPSBHREtfV0lORE9XKGRyYXdhYmxlKTsK
KyAgICAqd2lkdGggPSBnZGtfd2luZG93X2dldF93aWR0aCh3aW5kb3cpOworICAgICpoZWlnaHQg
PSBnZGtfd2luZG93X2dldF9oZWlnaHQod2luZG93KTsKK30KKyNlbHNlCit2b2lkIGdldEdka0Ry
YXdhYmxlU2l6ZShHZGtEcmF3YWJsZSAqZHJhd2FibGUsIGludCAqd2lkdGgsIGludCAqaGVpZ2h0
KQoreworICAgIGdka19kcmF3YWJsZV9nZXRfc2l6ZShkcmF3YWJsZSwgd2lkdGgsIGhlaWdodCk7
Cit9CisjZW5kaWYgLy8gR1RLX0NIRUNLX1ZFUlNJT04oMiwgMjQsIDApCisKKyNlbmRpZiAvLyBH
VEtfQVBJX1ZFUlNJT05fMgorCisjaWYgIUdMSUJfQ0hFQ0tfVkVSU0lPTigyLCAyNywgMSkKK2di
b29sZWFuIGdfc2lnbmFsX2FjY3VtdWxhdG9yX2ZpcnN0X3dpbnMoR1NpZ25hbEludm9jYXRpb25I
aW50ICppbnZvY2F0aW9uSGludCwgR1ZhbHVlICpyZXR1cm5BY2N1bXVsYXRvciwgY29uc3QgR1Zh
bHVlICpoYW5kbGVyUmV0dXJuLCBncG9pbnRlciBkYXRhKQoreworICAgIGdfdmFsdWVfY29weSho
YW5kbGVyUmV0dXJuLCByZXR1cm5BY2N1bXVsYXRvcik7CisgICAgcmV0dXJuIEZBTFNFOworfQor
I2VuZGlmCisKKyNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMiwgMjIsIDApCitjYWlyb19zdXJmYWNl
X3QgKmdka193aW5kb3dfY3JlYXRlX3NpbWlsYXJfc3VyZmFjZShHZGtXaW5kb3cgKndpbmRvdywg
Y2Fpcm9fY29udGVudF90IGNvbnRlbnQsIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBj
YWlyb190ICpjYWlyb0NvbnRleHQgPSBnZGtfY2Fpcm9fY3JlYXRlKHdpbmRvdyk7CisgICAgY2Fp
cm9fc3VyZmFjZV90ICpjYWlyb1N1cmZhY2UgPSBjYWlyb19nZXRfdGFyZ2V0KGNhaXJvQ29udGV4
dCk7CisgICAgY2Fpcm9fc3VyZmFjZV90ICpuZXdTdXJmYWNlID0gY2Fpcm9fc3VyZmFjZV9jcmVh
dGVfc2ltaWxhcihjYWlyb1N1cmZhY2UsIGNvbnRlbnQsIHdpZHRoLCBoZWlnaHQpOworICAgIGNh
aXJvX2Rlc3Ryb3koY2Fpcm9Db250ZXh0KTsKKyAgICByZXR1cm4gbmV3U3VyZmFjZTsKK30KKyNl
bmRpZiAvLyBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAyMiwgMCkKKworI2lmICFHVEtfQ0hFQ0tfVkVS
U0lPTigzLCAzLCA2KQorI2lmZGVmIEdES19XSU5ET1dJTkdfWDExCitzdGF0aWMgaW50IGdldFNj
cmVlbkN1cnJlbnREZXNrdG9wKEdka1NjcmVlbiAqc2NyZWVuKQoreworICAgIERpc3BsYXkgKmRp
c3BsYXkgPSBHREtfRElTUExBWV9YRElTUExBWShnZGtfc2NyZWVuX2dldF9kaXNwbGF5KHNjcmVl
bikpOworICAgIFdpbmRvdyByb290V2luZG93ID0gWFJvb3RXaW5kb3coZGlzcGxheSwgR0RLX1ND
UkVFTl9YTlVNQkVSKHNjcmVlbikpOworICAgIEF0b20gY3VycmVudERlc2t0b3AgPSBYSW50ZXJu
QXRvbShkaXNwbGF5LCAiX05FVF9DVVJSRU5UX0RFU0tUT1AiLCBUcnVlKTsKKworICAgIEF0b20g
dHlwZTsKKyAgICBpbnQgZm9ybWF0OworICAgIHVuc2lnbmVkIGxvbmcgaXRlbXNDb3VudCwgYnl0
ZXNBZnRlcjsKKyAgICB1bnNpZ25lZCBjaGFyICpyZXR1cm5lZERhdGEgPSBOVUxMOworICAgIFhH
ZXRXaW5kb3dQcm9wZXJ0eShkaXNwbGF5LCByb290V2luZG93LCBjdXJyZW50RGVza3RvcCwgMCwg
R19NQVhMT05HLCBGYWxzZSwgWEFfQ0FSRElOQUwsCisgICAgICAgICAgICAgICAgICAgICAgICZ0
eXBlLCAmZm9ybWF0LCAmaXRlbXNDb3VudCwgJmJ5dGVzQWZ0ZXIsICZyZXR1cm5lZERhdGEpOwor
CisgICAgaW50IHdvcmtzcGFjZSA9IDA7CisgICAgaWYgKHR5cGUgPT0gWEFfQ0FSRElOQUwgJiYg
Zm9ybWF0ID09IDMyICYmIGl0ZW1zQ291bnQgPiAwKQorICAgICAgICB3b3Jrc3BhY2UgPSAoaW50
KXJldHVybmVkRGF0YVswXTsKKworICAgIGlmIChyZXR1cm5lZERhdGEpCisgICAgICAgIFhGcmVl
KHJldHVybmVkRGF0YSk7CisKKyAgICByZXR1cm4gd29ya3NwYWNlOworfQorCitzdGF0aWMgdm9p
ZCBnZXRTY3JlZW5Xb3JrQXJlYShHZGtTY3JlZW4gKnNjcmVlbiwgR2RrUmVjdGFuZ2xlICphcmVh
KQoreworICAgIERpc3BsYXkgKmRpc3BsYXkgPSBHREtfRElTUExBWV9YRElTUExBWShnZGtfc2Ny
ZWVuX2dldF9kaXNwbGF5KHNjcmVlbikpOworICAgIEF0b20gd29ya0FyZWEgPSBYSW50ZXJuQXRv
bShkaXNwbGF5LCAiX05FVF9XT1JLQVJFQSIsIFRydWUpOworCisgICAgLyogRGVmYXVsdHMgaW4g
Y2FzZSBvZiBlcnJvci4gKi8KKyAgICBhcmVhLT54ID0gMDsKKyAgICBhcmVhLT55ID0gMDsKKyAg
ICBhcmVhLT53aWR0aCA9IGdka19zY3JlZW5fZ2V0X3dpZHRoKHNjcmVlbik7CisgICAgYXJlYS0+
aGVpZ2h0ID0gZ2RrX3NjcmVlbl9nZXRfaGVpZ2h0KHNjcmVlbik7CisKKyAgICBpZiAod29ya0Fy
ZWEgPT0gTm9uZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2luZG93IHJvb3RXaW5kb3cgPSBY
Um9vdFdpbmRvdyhkaXNwbGF5LCBHREtfU0NSRUVOX1hOVU1CRVIoc2NyZWVuKSk7CisgICAgQXRv
bSB0eXBlOworICAgIGludCBmb3JtYXQ7CisgICAgdW5zaWduZWQgbG9uZyBpdGVtc0NvdW50LCBi
eXRlc0FmdGVyOworICAgIHVuc2lnbmVkIGNoYXIgKnJldHVybmVkRGF0YSA9IDA7CisgICAgaW50
IHJlc3VsdCA9IFhHZXRXaW5kb3dQcm9wZXJ0eShkaXNwbGF5LCByb290V2luZG93LCB3b3JrQXJl
YSwgMCwgNCAqIDMyIC8qIE1heCBsZW5ndGggKi8sIEZhbHNlLCBBbnlQcm9wZXJ0eVR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHlwZSwgJmZvcm1hdCwgJml0ZW1z
Q291bnQsICZieXRlc0FmdGVyLCAmcmV0dXJuZWREYXRhKTsKKyAgICBpZiAocmVzdWx0ICE9IFN1
Y2Nlc3MgfHwgdHlwZSA9PSBOb25lIHx8ICFmb3JtYXQgfHwgYnl0ZXNBZnRlciB8fCBpdGVtc0Nv
dW50ICUgNCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50IGRlc2t0b3AgPSBnZXRTY3JlZW5D
dXJyZW50RGVza3RvcChzY3JlZW4pOworICAgIGxvbmcgKndvcmtBcmVhcyA9IChsb25nICopcmV0
dXJuZWREYXRhOworICAgIGFyZWEtPnggPSB3b3JrQXJlYXNbZGVza3RvcCAqIDRdOworICAgIGFy
ZWEtPnkgPSB3b3JrQXJlYXNbZGVza3RvcCAqIDQgKyAxXTsKKyAgICBhcmVhLT53aWR0aCA9IHdv
cmtBcmVhc1tkZXNrdG9wICogNCArIDJdOworICAgIGFyZWEtPmhlaWdodCA9IHdvcmtBcmVhc1tk
ZXNrdG9wICogNCArIDNdOworCisgICAgWEZyZWUocmV0dXJuZWREYXRhKTsKK30KKyNlbmRpZiAv
LyBHREtfV0lORE9XSU5HX1gxMQorCit2b2lkIGdka19zY3JlZW5fZ2V0X21vbml0b3Jfd29ya2Fy
ZWEoR2RrU2NyZWVuICpzY3JlZW4sIGludCBtb25pdG9yLCBHZGtSZWN0YW5nbGUgKmFyZWEpCit7
CisgICAgZ2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9nZW9tZXRyeShzY3JlZW4sIG1vbml0b3IsIGFy
ZWEpOworCisjaWZkZWYgR0RLX1dJTkRPV0lOR19YMTEKKyAgICBHZGtSZWN0YW5nbGUgd29ya0Fy
ZWE7CisgICAgZ2V0U2NyZWVuV29ya0FyZWEoc2NyZWVuLCAmd29ya0FyZWEpOworICAgIGdka19y
ZWN0YW5nbGVfaW50ZXJzZWN0KCZ3b3JrQXJlYSwgYXJlYSwgYXJlYSk7CisjZW5kaWYKK30KKyNl
bmRpZiAvLyBHVEtfQ0hFQ0tfVkVSU0lPTigzLCAzLCA2KQpkaWZmIC0tZ2l0IGEvU291cmNlL1Bs
YXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmggYi9Tb3VyY2UvUGxhdGZvcm0vZ3RrL0d0a1ZlcnNp
b25pbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lM2NhYzYzM2EwZDE1YmQ5NzgwM2QwNWIxNmU1ZjYzNDEyNTNh
OGE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5n
LmgKQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQ29sbGFib3Jh
IEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEsIFMuTC4KKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lm
bmRlZiBHdGtWZXJzaW9uaW5nX2gKKyNkZWZpbmUgR3RrVmVyc2lvbmluZ19oCisKKyNpbmNsdWRl
ICJhdXRvdG9vbHNjb25maWcuaCIKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisKKyNpZm5kZWYgR1RL
X0FQSV9WRVJTSU9OXzIKKyNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy1jb21wYXQuaD4KKyNlbmRp
ZgorCitHX0JFR0lOX0RFQ0xTCisKKy8vIE1hY3JvcyB0byBhdm9pZCBkZXByZWNhdGlvbiBjaGVj
a2luZyBjaHVybgorI2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgorI2RlZmluZSBHREtfV0lORE9X
X1hXSU5ET1cod2luZG93KSAoZ2RrX3gxMV93aW5kb3dfZ2V0X3hpZCh3aW5kb3cpKQorI2Vsc2UK
K0dka1BpeGJ1ZiogZ2RrX3BpeGJ1Zl9nZXRfZnJvbV9zdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCog
c3VyZmFjZSwgaW50IHNyY1gsIGludCBzcmNZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKK3ZvaWQgZ2V0R2RrRHJhd2FibGVT
aXplKEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgaW50KiB3aWR0aCwgaW50KiBoZWlnaHQpOworI2Vu
ZGlmCisKKyNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMiwgMjMsIDQpCisjZGVmaW5lIGdka19waXht
YXBfZ2V0X3NpemUgZ2RrX2RyYXdhYmxlX2dldF9zaXplCisjZW5kaWYgLy8gR1RLX0NIRUNLX1ZF
UlNJT04oMiwgMjMsIDQpCisKKyNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMiwgMjMsIDApCisjZGVm
aW5lIGdka193aW5kb3dfZ2V0X2Rpc3BsYXkod2luZG93KSBnZGtfZHJhd2FibGVfZ2V0X2Rpc3Bs
YXkod2luZG93KQorI2RlZmluZSBnZGtfd2luZG93X2dldF92aXN1YWwgZ2RrX2RyYXdhYmxlX2dl
dF92aXN1YWwKKyNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAyMywgMCkKKworI2lmICFH
VEtfQ0hFQ0tfVkVSU0lPTigyLCAyMiwgMCkKK2NhaXJvX3N1cmZhY2VfdCogZ2RrX3dpbmRvd19j
cmVhdGVfc2ltaWxhcl9zdXJmYWNlKEdka1dpbmRvdyogd2luZG93LCBjYWlyb19jb250ZW50X3Qg
Y29udGVudCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVS
U0lPTigyLCAyMiwgMCkKKworI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigyLCAyMSwgMikKKyNkZWZp
bmUgZ2RrX3Zpc3VhbF9nZXRfZGVwdGgodmlzdWFsKSAodmlzdWFsKS0+ZGVwdGgKKyNkZWZpbmUg
Z2RrX3Zpc3VhbF9nZXRfYml0c19wZXJfcmdiKHZpc3VhbCkgKHZpc3VhbCktPmJpdHNfcGVyX3Jn
YgorI2RlZmluZSBnZGtfZHJhZ19jb250ZXh0X2dldF9zZWxlY3RlZF9hY3Rpb24oY29udGV4dCkg
KGNvbnRleHQpLT5hY3Rpb24KKyNkZWZpbmUgZ2RrX2RyYWdfY29udGV4dF9nZXRfYWN0aW9ucyhj
b250ZXh0KSAoY29udGV4dCktPmFjdGlvbnMKKyNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVSU0lPTigy
LCAyMSwgMikKKworI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigyLCAyMCwgMCkKKyNkZWZpbmUgZ3Rr
X3dpZGdldF9nZXRfcmVhbGl6ZWQod2lkZ2V0KSBHVEtfV0lER0VUX1JFQUxJWkVEKHdpZGdldCkK
KyNkZWZpbmUgZ3RrX3dpZGdldF9zZXRfcmVhbGl6ZWQod2lkZ2V0LCBUUlVFKSBHVEtfV0lER0VU
X1NFVF9GTEFHUygod2lkZ2V0KSwgR1RLX1JFQUxJWkVEKQorI2RlZmluZSBndGtfcmFuZ2VfZ2V0
X21pbl9zbGlkZXJfc2l6ZShyYW5nZSkgKHJhbmdlKS0+bWluX3NsaWRlcl9zaXplCisjZW5kaWYg
Ly8gR1RLX0NIRUNLX1ZFUlNJT04oMiwgMjAsIDApCisKKyNpZiAhR1RLX0NIRUNLX1ZFUlNJT04o
MiwgMTksIDApCisjZGVmaW5lIGd0a193aWRnZXRfaXNfdG9wbGV2ZWwod2lkZ2V0KSBHVEtfV0lE
R0VUX1RPUExFVkVMKHdpZGdldCkKKyNkZWZpbmUgZ3RrX3dpZGdldF9nZXRfcmVhbGl6ZWQod2lk
Z2V0KSBHVEtfV0lER0VUX1JFQUxJWkVEKHdpZGdldCkKKyNkZWZpbmUgZ3RrX3dpZGdldF9nZXRf
aGFzX3dpbmRvdyh3aWRnZXQpICFHVEtfV0lER0VUX05PX1dJTkRPVyh3aWRnZXQpCisjZGVmaW5l
IGd0a193aWRnZXRfZ2V0X2Nhbl9mb2N1cyh3aWRnZXQpIEdUS19XSURHRVRfQ0FOX0ZPQ1VTKHdp
ZGdldCkKKyNkZWZpbmUgZ3RrX3dpZGdldF9pc19zZW5zaXRpdmUod2lkZ2V0KSBHVEtfV0lER0VU
X0lTX1NFTlNJVElWRSh3aWRnZXQpCisjZW5kaWYgLy8gR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTks
IDApCisKKyNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTgsIDApCisjZGVmaW5lIGd0a193aWRn
ZXRfc2V0X3Zpc2libGUod2lkZ2V0LCBGQUxTRSkgR1RLX1dJREdFVF9VTlNFVF9GTEFHUygod2lk
Z2V0KSwgR1RLX1ZJU0lCTEUpCisjZGVmaW5lIGd0a193aWRnZXRfZ2V0X3Zpc2libGUod2lkZ2V0
KSAoR1RLX1dJREdFVF9GTEFHUyh3aWRnZXQpICYgR1RLX1ZJU0lCTEUpCisKKyNkZWZpbmUgZ3Rr
X3dpZGdldF9zZXRfd2luZG93KHdpZGdldCwgbmV3X3dpbmRvdykgKHdpZGdldCktPndpbmRvdyA9
IChuZXdfd2luZG93KQorI2RlZmluZSBndGtfd2lkZ2V0X3NldF9jYW5fZm9jdXMod2lkZ2V0LCBU
UlVFKSBHVEtfV0lER0VUX1NFVF9GTEFHUygod2lkZ2V0KSwgR1RLX0NBTl9GT0NVUykKKyNkZWZp
bmUgZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGlvbih3aWRnZXQsIGFsbG9jKSAoKihhbGxvYykgPSAo
d2lkZ2V0KS0+YWxsb2NhdGlvbikKKyNkZWZpbmUgZ3RrX3dpZGdldF9zZXRfYWxsb2NhdGlvbih3
aWRnZXQsIGFsbG9jKSAoKHdpZGdldCktPmFsbG9jYXRpb24gPSAqKGFsbG9jKSkKKyNlbmRpZiAv
LyBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxOCwgMCkKKworI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigy
LCAxNywgMykKK3ZvaWQgZ2RrX3dpbmRvd19nZXRfcm9vdF9jb29yZHMoR2RrV2luZG93KiB3aW5k
b3csIGdpbnQgeCwgZ2ludCB5LCBnaW50KiByb290WCwgZ2ludCogcm9vdFkpOworI2VuZGlmIC8v
IEdUS19DSEVDS19WRVJTSU9OKDIsIDE3LCAzKQorCisjaWYgIUdUS19DSEVDS19WRVJTSU9OKDIs
IDE2LCAwKQorY29uc3QgZ2NoYXIqIGd0a19tZW51X2l0ZW1fZ2V0X2xhYmVsKEd0a01lbnVJdGVt
Kik7CisjZW5kaWYgLy8gR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTYsIDApCisKKworI2lmICFHVEtf
Q0hFQ0tfVkVSU0lPTigyLCAxNCwgMCkKKyNkZWZpbmUgZ3RrX3dpZGdldF9nZXRfd2luZG93KHdp
ZGdldCkgKHdpZGdldCktPndpbmRvdworI2RlZmluZSBndGtfYWRqdXN0bWVudF9nZXRfdmFsdWUo
YWRqKSAoYWRqKS0+dmFsdWUKKyNkZWZpbmUgZ3RrX2RpYWxvZ19nZXRfY29udGVudF9hcmVhKGRp
YWxvZykgKGRpYWxvZyktPnZib3gKKyNkZWZpbmUgZ3RrX2RpYWxvZ19nZXRfYWN0aW9uX2FyZWEo
ZGlhbG9nKSAoZGlhbG9nKS0+YWN0aW9uX2FyZWEKKyNkZWZpbmUgZ3RrX3NlbGVjdGlvbl9kYXRh
X2dldF9sZW5ndGgoZGF0YSkgKGRhdGEpLT5sZW5ndGgKKyNkZWZpbmUgZ3RrX3NlbGVjdGlvbl9k
YXRhX2dldF9kYXRhKGRhdGEpIChkYXRhKS0+ZGF0YQorI2RlZmluZSBndGtfc2VsZWN0aW9uX2Rh
dGFfZ2V0X3RhcmdldChkYXRhKSAoZGF0YSktPnRhcmdldAorI2RlZmluZSBndGtfYWRqdXN0bWVu
dF9zZXRfcGFnZV9zaXplKGFkaiwgbmV3VmFsdWUpICgoYWRqKS0+cGFnZV9zaXplID0gbmV3VmFs
dWUpCisjZGVmaW5lIGd0a19hZGp1c3RtZW50X3NldF92YWx1ZShhZGosIG5ld1ZhbHVlKSAoKGFk
aiktPnZhbHVlID0gbmV3VmFsdWUpCisjZGVmaW5lIGd0a19hZGp1c3RtZW50X3NldF9sb3dlcihh
ZGosIG5ld1ZhbHVlKSAoKGFkaiktPmxvd2VyID0gbmV3VmFsdWUpCisjZGVmaW5lIGd0a19hZGp1
c3RtZW50X3NldF91cHBlcihhZGosIG5ld1ZhbHVlKSAoKGFkaiktPnVwcGVyID0gbmV3VmFsdWUp
CisKK3ZvaWQgZ3RrX2FkanVzdG1lbnRfY29uZmlndXJlKEd0a0FkanVzdG1lbnQqIGFkanVzdG1l
bnQsIGdkb3VibGUgdmFsdWUsIGdkb3VibGUgbG93ZXIsIGdkb3VibGUgdXBwZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnZG91YmxlIHN0ZXBJbmNyZW1lbnQsIGdkb3VibGUgcGFn
ZUluY3JlbWVudCwgZ2RvdWJsZSBwYWdlU2l6ZSk7CisKK3ZvaWQgZ3RrX2FkanVzdG1lbnRfc2V0
X3ZhbHVlKEd0a0FkanVzdG1lbnQqIGFkanVzbWVudCwgZ2RvdWJsZSB2YWx1ZSk7CisjZW5kaWYg
Ly8gR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTQsIDApCisKK0dka0RldmljZSogZ2V0RGVmYXVsdEdE
S1BvaW50ZXJEZXZpY2UoR2RrV2luZG93KiB3aW5kb3cpOworR2RrQ3Vyc29yKiBibGFua0N1cnNv
cigpOworCisjaWYgIUdMSUJfQ0hFQ0tfVkVSU0lPTigyLCAyNywgMSkKK2dib29sZWFuIGdfc2ln
bmFsX2FjY3VtdWxhdG9yX2ZpcnN0X3dpbnMoR1NpZ25hbEludm9jYXRpb25IaW50KiBpbnZvY2F0
aW9uSGludCwgR1ZhbHVlKiByZXR1cm5BY2N1bXVsYXRvciwgY29uc3QgR1ZhbHVlKiBoYW5kbGVy
UmV0dXJuLCBncG9pbnRlciBkYXRhKTsKKyNlbmRpZgorCisjaWYgIUdUS19DSEVDS19WRVJTSU9O
KDMsIDMsIDYpCit2b2lkIGdka19zY3JlZW5fZ2V0X21vbml0b3Jfd29ya2FyZWEoR2RrU2NyZWVu
ICosIGludCBtb25pdG9yLCBHZGtSZWN0YW5nbGUgKmFyZWEpOworI2VuZGlmCisKK0dfRU5EX0RF
Q0xTCisKKyNlbmRpZiAvLyBHdGtWZXJzaW9uaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXgg
MmIwNzNiNzQxNjhkYjliMDEzNTRiN2FmMzkxZTViYWU4MjdhOTVmNC4uOTNlZmQ1NTY4ZmVlZmRl
NDgyMzU5MjkyMjE5OGFjZDdlYzdkY2Y0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTE3Miw2
ICsxNzIsNyBAQCBsaWJXZWJDb3JlU1ZHX2xhX0NQUEZMQUdTID0gXAogCS1EQlVJTERJTkdfV2Vi
Q29yZSBcCiAJLURCVUlMRElOR19XRUJLSVQgXAogCSQoZ2xvYmFsX2NwcGZsYWdzKSBcCisJJChw
bGF0Zm9ybWd0a19jcHBmbGFncykgXAogCSQod2ViY29yZV9jcHBmbGFncykgXAogCSQod2ViY29y
ZWd0a19jcHBmbGFncykgXAogCSQoamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MpIFwKQEAgLTQyMiw3
ICs0MjMsNyBAQCBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSW50ZXJuYWxTZXR0aW5nc0dlbmVy
YXRlZC5oOiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0ludAogIyBJREwgZ2VuZXJhdGlvbiB0YWtl
cyBhIGxvbmcgdGltZS4gVGhlIHBpcGUgcmVwcmVzZW50cyBhbiBvcmRlci1vbmx5IGRlcGVuZGVu
Y3ksCiAjIHdoaWNoIG1lYW5zIHRoYXQgR05VbWFrZSB3aWxsIG9ubHkgdHJ5IHRvIGJ1aWxkIHRo
ZSBkZXBlbmRlbmNpZXMgZmlyc3QsIGJ1dAogIyBub3QgcmVidWlsZCBhbGwgdGhlIHRhcmdldHMg
aWYgdGhlIGRlcGVuZGVuY2llcyBjaGFuZ2UuCi0kKHdlYmtpdGd0a19zb3VyY2VzKSAkKHdlYmtp
dDJfc291cmNlcykgJCh3ZWJraXQyX3BsdWdpbl9wcm9jZXNzX3NvdXJjZXMpICQod2ViY29yZV9z
b3VyY2VzKSAkKHdlYmNvcmVndGtfc291cmNlcykgOiB8ICQoc3VwcGxlbWVudGFsX2RlcGVuZGVu
Y3lfZmlsZSkgJCh3ZWJjb3JlX2J1aWx0X3NvdXJjZXMpCiskKHdlYmtpdGd0a19zb3VyY2VzKSAk
KHdlYmtpdDJfc291cmNlcykgJCh3ZWJraXQyX3BsdWdpbl9wcm9jZXNzX3NvdXJjZXMpICQod2Vi
Y29yZV9zb3VyY2VzKSAkKHdlYmNvcmVndGtfc291cmNlcykgJChwbGF0Zm9ybWd0a19zb3VyY2Vz
KSA6IHwgJChzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxlKSAkKHdlYmNvcmVfYnVpbHRfc291
cmNlcykKIAogbm9pbnN0X0xUTElCUkFSSUVTICs9IFwKIAlsaWJXZWJDb3JlUGxhdGZvcm0ubGEg
XApAQCAtNDc0LDYgKzQ3NSw3IEBAIGxpYldlYkNvcmVfbGFfQ1BQRkxBR1MgPSBcCiAJLURCVUlM
RElOR19XZWJDb3JlIFwKIAktREJVSUxESU5HX1dFQktJVCBcCiAJJChnbG9iYWxfY3BwZmxhZ3Mp
IFwKKwkkKHBsYXRmb3JtZ3RrX2NwcGZsYWdzKSBcCiAJJCh3ZWJjb3JlX2NwcGZsYWdzKSBcCiAJ
JCh3ZWJjb3JlZ3RrX2NwcGZsYWdzKSBcCiAJJChqYXZhc2NyaXB0Y29yZV9jcHBmbGFncykgXApA
QCAtNTM3LDYgKzUzOSw3IEBAIGxpYldlYkNvcmVQbGF0Zm9ybV9sYV9DRkxBR1MgPSBcCiBsaWJX
ZWJDb3JlUGxhdGZvcm1fbGFfQ1BQRkxBR1MgPSBcCiAJLURCVUlMRElOR19XRUJLSVQgXAogCSQo
Z2xvYmFsX2NwcGZsYWdzKSBcCisJJChwbGF0Zm9ybWd0a19jcHBmbGFncykgXAogCSQod2ViY29y
ZV9jcHBmbGFncykgXAogCSQod2ViY29yZWd0a19jcHBmbGFncykgXAogCSQoamF2YXNjcmlwdGNv
cmVfY3BwZmxhZ3MpIFwKQEAgLTU4Myw2ICs1ODYsNyBAQCBsaWJXZWJDb3JlR3RrX2xhX0NQUEZM
QUdTID0gXAogCS1EQlVJTERJTkdfV2ViQ29yZSBcCiAJLURCVUlMRElOR19XRUJLSVQgXAogCSQo
Z2xvYmFsX2NwcGZsYWdzKSBcCisJJChwbGF0Zm9ybWd0a19jcHBmbGFncykgXAogCSQod2ViY29y
ZV9jcHBmbGFncykgXAogCSQod2ViY29yZWd0a19jcHBmbGFncykgXAogCSQoamF2YXNjcmlwdGNv
cmVfY3BwZmxhZ3MpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDlmNDU2ZmRk
ZGQ2Njg3ZjFkYzI2ODdmY2UxOThkNWY4MTE3YTE0MjYuLmQzOWUwMTE4MDIyYjUxYmJhY2RmZGFi
YTk2OTllOTcxMjI5ZTE3MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNjIw
OSw4ICs2MjA5LDYgQEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvR3RrUGx1Z2luV2lkZ2V0LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9HdGtQb3B1cE1lbnUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3Rr
UG9wdXBNZW51LmggXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5n
LmMgXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmggXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTG9jYWxpemVkU3RyaW5nc0d0ay5jcHAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbSBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KaW5kZXggMjJhZWQ0
NTEzZTEwMjM2ZTlkOWRiNmY4MDBhMmQ5OGU2NmNlN2M2ZS4uOTc4NWI5ODVlMGIzZjFlZjFlYjhk
NjA4MGY3MGI4NDE0MjFiZmRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
Z29iamVjdC9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L0dOVW1ha2VmaWxlLmFtCkBAIC01MzIsNiArNTMyLDcgQEAgbGliV2ViQ29yZURPTV9sYV9D
UFBGTEFHUyA9IFwKIAktSSQoV2ViQ29yZSkvYmluZGluZ3MvZ29iamVjdCBcCiAJLUkkKEdFTlNP
VVJDRVNfV0VCS0lURE9NKSBcCiAJJChnbG9iYWxfY3BwZmxhZ3MpIFwKKwkkKHBsYXRmb3JtZ3Rr
X2NwcGZsYWdzKSBcCiAJJCh3ZWJjb3JlX2NwcGZsYWdzKSBcCiAJJCh3ZWJjb3JlZ3RrX2NwcGZs
YWdzKSBcCiAJJChqYXZhc2NyaXB0Y29yZV9jcHBmbGFncykgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1ZlcnNpb25pbmcuYyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGFjMmY4NGMyZWY4ODY2YzAzYzA2ZjE2ZGMyMTU5ZmZlYTk5N2NkYzguLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0d0a1ZlcnNpb25pbmcuYworKysgL2Rldi9udWxsCkBAIC0xLDM4MSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIENvbGxhYm9yYSBMdGQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgSWdhbGlhLCBTLkwuCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJHdGtWZXJzaW9uaW5nLmgiCi0K
LSNpbmNsdWRlIDxndGsvZ3RrLmg+Ci0KLSNpZmRlZiBHREtfV0lORE9XSU5HX1gxMQotI2luY2x1
ZGUgPFgxMS9YYXRvbS5oPgotI2luY2x1ZGUgPGdkay9nZGt4Lmg+Ci0jZW5kaWYKLQotI2lmICFH
VEtfQ0hFQ0tfVkVSU0lPTigyLCAxNCwgMCkKLXZvaWQgZ3RrX2FkanVzdG1lbnRfc2V0X3ZhbHVl
KEd0a0FkanVzdG1lbnQqIGFkanVzbWVudCwgZ2RvdWJsZSB2YWx1ZSkKLXsKLSAgICAgICAgbV9h
ZGp1c3RtZW50LT52YWx1ZSA9IG1fY3VycmVudFBvczsKLSAgICAgICAgZ3RrX2FkanVzdG1lbnRf
dmFsdWVfY2hhbmdlZChtX2FkanVzdG1lbnQpOwotfQotCi12b2lkIGd0a19hZGp1c3RtZW50X2Nv
bmZpZ3VyZShHdGtBZGp1c3RtZW50KiBhZGp1c3RtZW50LCBnZG91YmxlIHZhbHVlLCBnZG91Ymxl
IGxvd2VyLCBnZG91YmxlIHVwcGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Rv
dWJsZSBzdGVwSW5jcmVtZW50LCBnZG91YmxlIHBhZ2VJbmNyZW1lbnQsIGdkb3VibGUgcGFnZVNp
emUpCi17Ci0gICAgZ19vYmplY3RfZnJlZXplX25vdGlmeShHX09CSkVDVChhZGp1c3RtZW50KSk7
Ci0KLSAgICBnX29iamVjdF9zZXQoYWRqdXN0bWVudCwKLSAgICAgICAgICAgICAgICAgImxvd2Vy
IiwgbG93ZXIsCi0gICAgICAgICAgICAgICAgICJ1cHBlciIsIHVwcGVyLAotICAgICAgICAgICAg
ICAgICAic3RlcC1pbmNyZW1lbnQiLCBzdGVwSW5jcmVtZW50LAotICAgICAgICAgICAgICAgICAi
cGFnZS1pbmNyZW1lbnQiLCBwYWdlSW5jcmVtZW50LAotICAgICAgICAgICAgICAgICAicGFnZS1z
aXplIiwgcGFnZVNpemUsCi0gICAgICAgICAgICAgICAgIE5VTEwpOwotCi0gICAgZ19vYmplY3Rf
dGhhd19ub3RpZnkoR19PQkpFQ1QoYWRqdXN0bWVudCkpOwotCi0gICAgZ3RrX2FkanVzdG1lbnRf
Y2hhbmdlZChhZGp1c3RtZW50KTsKLSAgICBndGtfYWRqdXN0bWVudF92YWx1ZV9jaGFuZ2VkKGFk
anVzdG1lbnQpOwotfQotI2VuZGlmCi0KLUdka0RldmljZSAqZ2V0RGVmYXVsdEdES1BvaW50ZXJE
ZXZpY2UoR2RrV2luZG93KiB3aW5kb3cpCi17Ci0jaWZuZGVmIEdUS19BUElfVkVSU0lPTl8yCi0g
ICAgR2RrRGV2aWNlTWFuYWdlciAqbWFuYWdlciA9ICBnZGtfZGlzcGxheV9nZXRfZGV2aWNlX21h
bmFnZXIoZ2RrX3dpbmRvd19nZXRfZGlzcGxheSh3aW5kb3cpKTsKLSAgICByZXR1cm4gZ2RrX2Rl
dmljZV9tYW5hZ2VyX2dldF9jbGllbnRfcG9pbnRlcihtYW5hZ2VyKTsKLSNlbHNlCi0gICAgcmV0
dXJuIGdka19kZXZpY2VfZ2V0X2NvcmVfcG9pbnRlcigpOwotI2VuZGlmIC8vIEdUS19BUElfVkVS
U0lPTl8yCi19Ci0KLSNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTcsIDMpCi12b2lkIGdka193
aW5kb3dfZ2V0X3Jvb3RfY29vcmRzKEdka1dpbmRvdyogd2luZG93LCBnaW50IHgsIGdpbnQgeSwg
Z2ludCogcm9vdFgsIGdpbnQqIHJvb3RZKQotewotICAgIGdka193aW5kb3dfZ2V0X3Jvb3Rfb3Jp
Z2luKHdpbmRvdywgcm9vdFgsIHJvb3RZKTsKLSAgICAqcm9vdFggPSAqcm9vdFggKyB4OwotICAg
ICpyb290WSA9ICpyb290WSArIHk7Ci19Ci0jZW5kaWYKLQotR2RrQ3Vyc29yICogYmxhbmtDdXJz
b3IoKQotewotI2lmIEdUS19DSEVDS19WRVJTSU9OKDIsIDE2LCAwKQotICAgIHJldHVybiBnZGtf
Y3Vyc29yX25ldyhHREtfQkxBTktfQ1VSU09SKTsKLSNlbHNlCi0gICAgR2RrQ3Vyc29yICogY3Vy
c29yOwotICAgIEdka1BpeG1hcCAqIHNvdXJjZTsKLSAgICBHZGtQaXhtYXAgKiBtYXNrOwotICAg
IEdka0NvbG9yIGZvcmVncm91bmQgPSB7IDAsIDY1NTM1LCAwLCAwIH07IC8vIFJlZC4KLSAgICBH
ZGtDb2xvciBiYWNrZ3JvdW5kID0geyAwLCAwLCAwLCA2NTUzNSB9OyAvLyBCbHVlLgotICAgIHN0
YXRpYyBnY2hhciBjdXJzb3JCaXRzW10gPSB7MHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwg
MHgwLCAweDB9OwotCi0gICAgc291cmNlID0gZ2RrX2JpdG1hcF9jcmVhdGVfZnJvbV9kYXRhKDAs
IGN1cnNvckJpdHMsIDgsIDgpOwotICAgIG1hc2sgPSBnZGtfYml0bWFwX2NyZWF0ZV9mcm9tX2Rh
dGEoMCwgY3Vyc29yQml0cywgOCwgOCk7Ci0gICAgY3Vyc29yID0gZ2RrX2N1cnNvcl9uZXdfZnJv
bV9waXhtYXAoc291cmNlLCBtYXNrLCAmZm9yZWdyb3VuZCwgJmJhY2tncm91bmQsIDgsIDgpOwot
ICAgIGdka19waXhtYXBfdW5yZWYoc291cmNlKTsKLSAgICBnZGtfcGl4bWFwX3VucmVmKG1hc2sp
OwotICAgIHJldHVybiBjdXJzb3I7Ci0jZW5kaWYgLy8gR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTYs
IDApCi19Ci0KLSNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTYsIDApCi1jb25zdCBnY2hhciog
Z3RrX21lbnVfaXRlbV9nZXRfbGFiZWwoR3RrTWVudUl0ZW0qIG1lbnVJdGVtKQotewotICAgIEd0
a1dpZGdldCAqIGxhYmVsID0gZ3RrX2Jpbl9nZXRfY2hpbGQoR1RLX0JJTihtZW51SXRlbSkpOwot
ICAgIGlmIChHVEtfSVNfTEFCRUwobGFiZWwpKQotICAgICAgICByZXR1cm4gZ3RrX2xhYmVsX2dl
dF90ZXh0KEdUS19MQUJFTChsYWJlbCkpOwotICAgIHJldHVybiAwOwotfQotI2VuZGlmIC8vIEdU
S19DSEVDS19WRVJTSU9OKDIsIDE2LCAwKQotCi0jaWZkZWYgR1RLX0FQSV9WRVJTSU9OXzIKLXN0
YXRpYyBjYWlyb19mb3JtYXRfdAotZ2RrX2NhaXJvX2Zvcm1hdF9mb3JfY29udGVudChjYWlyb19j
b250ZW50X3QgY29udGVudCkKLXsKLSAgICBzd2l0Y2ggKGNvbnRlbnQpIHsKLSAgICBjYXNlIENB
SVJPX0NPTlRFTlRfQ09MT1I6Ci0gICAgICAgIHJldHVybiBDQUlST19GT1JNQVRfUkdCMjQ7Ci0g
ICAgY2FzZSBDQUlST19DT05URU5UX0FMUEhBOgotICAgICAgICByZXR1cm4gQ0FJUk9fRk9STUFU
X0E4OwotICAgIGNhc2UgQ0FJUk9fQ09OVEVOVF9DT0xPUl9BTFBIQToKLSAgICBkZWZhdWx0Ogot
ICAgICAgICByZXR1cm4gQ0FJUk9fRk9STUFUX0FSR0IzMjsKLSAgICB9Ci19Ci0KLXN0YXRpYyBj
YWlyb19zdXJmYWNlX3QqCi1nZGtfY2Fpcm9fc3VyZmFjZV9jb2VyY2VfdG9faW1hZ2UoY2Fpcm9f
c3VyZmFjZV90KiBzdXJmYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh
aXJvX2NvbnRlbnRfdCBjb250ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0
KQotewotICAgIGNhaXJvX3N1cmZhY2VfdCAqIGNvcHk7Ci0gICAgY2Fpcm9fdCAqIGNyOwotCi0g
ICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoc3VyZmFjZSkgPT0gQ0FJUk9fU1VSRkFDRV9U
WVBFX0lNQUdFCi0gICAgICAgICYmIGNhaXJvX3N1cmZhY2VfZ2V0X2NvbnRlbnQoc3VyZmFjZSkg
PT0gY29udGVudAotICAgICAgICAmJiBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJm
YWNlKSA+PSB3aWR0aAotICAgICAgICAmJiBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQo
c3VyZmFjZSkgPj0gaGVpZ2h0KQotICAgICAgICByZXR1cm4gY2Fpcm9fc3VyZmFjZV9yZWZlcmVu
Y2Uoc3VyZmFjZSk7Ci0KLSAgICBjb3B5ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGUoZ2Rr
X2NhaXJvX2Zvcm1hdF9mb3JfY29udGVudChjb250ZW50KSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGhlaWdodCk7Ci0KLSAgICBjciA9IGNhaXJvX2NyZWF0ZShjb3B5KTsKLSAgICBjYWly
b19zZXRfb3BlcmF0b3IoY3IsIENBSVJPX09QRVJBVE9SX1NPVVJDRSk7Ci0gICAgY2Fpcm9fc2V0
X3NvdXJjZV9zdXJmYWNlKGNyLCBzdXJmYWNlLCAwLCAwKTsKLSAgICBjYWlyb19wYWludChjcik7
Ci0gICAgY2Fpcm9fZGVzdHJveShjcik7Ci0KLSAgICByZXR1cm4gY29weTsKLX0KLQotc3RhdGlj
IHZvaWQKLWNvbnZlcnRfYWxwaGEoZ3VjaGFyICogZGVzdERhdGEsIGludCBkZXN0U3RyaWRlLAot
ICAgICAgICAgICAgICBndWNoYXIgKiBzcmNEYXRhLCBpbnQgc3JjU3RyaWRlLAotICAgICAgICAg
ICAgICBpbnQgc3JjWCwgaW50IHNyY1ksIGludCB3aWR0aCwgaW50IGhlaWdodCkKLXsKLSAgICBp
bnQgeCwgeTsKLQotICAgIHNyY0RhdGEgKz0gc3JjU3RyaWRlICogc3JjWSArIHNyY1kgKiA0Owot
Ci0gICAgZm9yICh5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7Ci0gICAgICAgIGd1aW50MzIgKiBz
cmMgPSAoZ3VpbnQzMiAqKSBzcmNEYXRhOwotCi0gICAgICAgIGZvciAoeCA9IDA7IHggPCB3aWR0
aDsgeCsrKSB7Ci0gICAgICAgICAgICBndWludCBhbHBoYSA9IHNyY1t4XSA+PiAyNDsKLQotICAg
ICAgICAgICAgaWYgKCFhbHBoYSkgewotICAgICAgICAgICAgICAgIGRlc3REYXRhW3ggKiA0ICsg
MF0gPSAwOwotICAgICAgICAgICAgICAgIGRlc3REYXRhW3ggKiA0ICsgMV0gPSAwOwotICAgICAg
ICAgICAgICAgIGRlc3REYXRhW3ggKiA0ICsgMl0gPSAwOwotICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBkZXN0RGF0YVt4ICogNCArIDBdID0gKCgoc3JjW3hdICYgMHhmZjAw
MDApID4+IDE2KSAqIDI1NSArIGFscGhhIC8gMikgLyBhbHBoYTsKLSAgICAgICAgICAgICAgICBk
ZXN0RGF0YVt4ICogNCArIDFdID0gKCgoc3JjW3hdICYgMHgwMGZmMDApID4+ICA4KSAqIDI1NSAr
IGFscGhhIC8gMikgLyBhbHBoYTsKLSAgICAgICAgICAgICAgICBkZXN0RGF0YVt4ICogNCArIDJd
ID0gKCgoc3JjW3hdICYgMHgwMDAwZmYpID4+ICAwKSAqIDI1NSArIGFscGhhIC8gMikgLyBhbHBo
YTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRlc3REYXRhW3ggKiA0ICsgM10gPSBhbHBo
YTsKLSAgICAgICAgfQotCi0gICAgICAgIHNyY0RhdGEgKz0gc3JjU3RyaWRlOwotICAgICAgICBk
ZXN0RGF0YSArPSBkZXN0U3RyaWRlOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQKLWNvbnZlcnRf
bm9fYWxwaGEoZ3VjaGFyICogZGVzdERhdGEsIGludCBkZXN0U3RyaWRlLCBndWNoYXIgKiBzcmNE
YXRhLAotICAgICAgICAgICAgICAgICBpbnQgc3JjU3RyaWRlLCBpbnQgc3JjWCwgaW50IHNyY1ks
Ci0gICAgICAgICAgICAgICAgIGludCB3aWR0aCwgaW50IGhlaWdodCkKLXsKLSAgICBpbnQgeCwg
eTsKLQotICAgIHNyY0RhdGEgKz0gc3JjU3RyaWRlICogc3JjWSArIHNyY1ggKiA0OwotCi0gICAg
Zm9yICh5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7Ci0gICAgICAgIGd1aW50MzIgKiBzcmMgPSAo
Z3VpbnQzMiAqKSBzcmNEYXRhOwotCi0gICAgICAgIGZvciAoeCA9IDA7IHggPCB3aWR0aDsgeCsr
KSB7Ci0gICAgICAgICAgICBkZXN0RGF0YVt4ICogMyArIDBdID0gc3JjW3hdID4+IDE2OwotICAg
ICAgICAgICAgZGVzdERhdGFbeCAqIDMgKyAxXSA9IHNyY1t4XSA+PiAgODsKLSAgICAgICAgICAg
IGRlc3REYXRhW3ggKiAzICsgMl0gPSBzcmNbeF07Ci0gICAgICAgIH0KLQotICAgICAgICBzcmNE
YXRhICs9IHNyY1N0cmlkZTsKLSAgICAgICAgZGVzdERhdGEgKz0gZGVzdFN0cmlkZTsKLSAgICB9
Ci19Ci0KLS8qKgotICogZ2RrX3BpeGJ1Zl9nZXRfZnJvbV9zdXJmYWNlOgotICogQHN1cmZhY2U6
IHN1cmZhY2UgdG8gY29weSBmcm9tCi0gKiBAc3JjX3g6IFNvdXJjZSBYIGNvb3JkaW5hdGUgd2l0
aGluIEBzdXJmYWNlCi0gKiBAc3JjX3k6IFNvdXJjZSBZIGNvb3JkaW5hdGUgd2l0aGluIEBzdXJm
YWNlCi0gKiBAd2lkdGg6IFdpZHRoIGluIHBpeGVscyBvZiByZWdpb24gdG8gZ2V0Ci0gKiBAaGVp
Z2h0OiBIZWlnaHQgaW4gcGl4ZWxzIG9mIHJlZ2lvbiB0byBnZXQKLSAqCi0gKiBUcmFuc2ZlcnMg
aW1hZ2UgZGF0YSBmcm9tIGEgI2NhaXJvX3N1cmZhY2VfdCBhbmQgY29udmVydHMgaXQgdG8gYW4g
UkdCKEEpCi0gKiByZXByZXNlbnRhdGlvbiBpbnNpZGUgYSAjR2RrUGl4YnVmLiBUaGlzIGFsbG93
cyB5b3UgdG8gZWZmaWNpZW50bHkgcmVhZAotICogaW5kaXZpZHVhbCBwaXhlbHMgZnJvbSBjYWly
byBzdXJmYWNlcy4gRm9yICNHZGtXaW5kb3dzLCB1c2UKLSAqIGdka19waXhidWZfZ2V0X2Zyb21f
d2luZG93KCkgaW5zdGVhZC4KLSAqCi0gKiBUaGlzIGZ1bmN0aW9uIHdpbGwgY3JlYXRlIGFuIFJH
QiBwaXhidWYgd2l0aCA4IGJpdHMgcGVyIGNoYW5uZWwuIFRoZSBwaXhidWYKLSAqIHdpbGwgY29u
dGFpbiBhbiBhbHBoYSBjaGFubmVsIGlmIHRoZSBAc3VyZmFjZSBjb250YWlucyBvbmUuCi0gKgot
ICogUmV0dXJuIHZhbHVlOiAodHJhbnNmZXIgZnVsbCk6IEEgbmV3bHktY3JlYXRlZCBwaXhidWYg
d2l0aCBhIHJlZmVyZW5jZSBjb3VudAotICogb2YgMSwgb3IgJU5VTEwgb24gZXJyb3IKLSAqKi8K
LUdka1BpeGJ1ZioKLWdka19waXhidWZfZ2V0X2Zyb21fc3VyZmFjZShjYWlyb19zdXJmYWNlX3Qg
KiBzdXJmYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNYLCBpbnQgc3Jj
WSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsIGludCBoZWlnaHQpCi17
Ci0gICAgY2Fpcm9fY29udGVudF90IGNvbnRlbnQ7Ci0gICAgR2RrUGl4YnVmICogZGVzdDsKLQot
ICAgIC8qIEdlbmVyYWwgc2FuaXR5IGNoZWNrcyAqLwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KHN1cmZhY2UsIE5VTEwpOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNyY1ggPj0gMCAmJiBz
cmNZID49IDAsIE5VTEwpOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHdpZHRoID4gMCAmJiBo
ZWlnaHQgPiAwLCBOVUxMKTsKLQotICAgIGNvbnRlbnQgPSBjYWlyb19zdXJmYWNlX2dldF9jb250
ZW50KHN1cmZhY2UpIHwgQ0FJUk9fQ09OVEVOVF9DT0xPUjsKLSAgICBkZXN0ID0gZ2RrX3BpeGJ1
Zl9uZXcoR0RLX0NPTE9SU1BBQ0VfUkdCLAotICAgICAgICAgICAgICAgICAgICAgICAgICAhIShj
b250ZW50ICYgQ0FJUk9fQ09OVEVOVF9BTFBIQSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQpOwotCi0gICAgc3Vy
ZmFjZSA9IGdka19jYWlyb19zdXJmYWNlX2NvZXJjZV90b19pbWFnZShzdXJmYWNlLCBjb250ZW50
LCBzcmNYICsgd2lkdGgsIHNyY1kgKyBoZWlnaHQpOwotICAgIGNhaXJvX3N1cmZhY2VfZmx1c2go
c3VyZmFjZSk7Ci0gICAgaWYgKGNhaXJvX3N1cmZhY2Vfc3RhdHVzKHN1cmZhY2UpIHx8ICFkZXN0
KSB7Ci0gICAgICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShzdXJmYWNlKTsKLSAgICAgICAgcmV0
dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgaWYgKGdka19waXhidWZfZ2V0X2hhc19hbHBoYShkZXN0
KSkKLSAgICAgICAgY29udmVydF9hbHBoYShnZGtfcGl4YnVmX2dldF9waXhlbHMoZGVzdCksCi0g
ICAgICAgICAgICAgICAgICAgICAgIGdka19waXhidWZfZ2V0X3Jvd3N0cmlkZShkZXN0KSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0YShzdXJmYWNl
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRl
KHN1cmZhY2UpLAotICAgICAgICAgICAgICAgICAgICAgICBzcmNYLCBzcmNZLAotICAgICAgICAg
ICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0KTsKLSAgICBlbHNlCi0gICAgICAgIGNvbnZlcnRf
bm9fYWxwaGEoZ2RrX3BpeGJ1Zl9nZXRfcGl4ZWxzKGRlc3QpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICBnZGtfcGl4YnVmX2dldF9yb3dzdHJpZGUoZGVzdCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJmYWNl
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjWCwgc3JjWSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgd2lkdGgsIGhlaWdodCk7Ci0KLSAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3ko
c3VyZmFjZSk7Ci0gICAgcmV0dXJuIGRlc3Q7Ci19Ci0KLSNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigy
LCAyNCwgMCkKLXZvaWQgZ2V0R2RrRHJhd2FibGVTaXplKEdka0RyYXdhYmxlICpkcmF3YWJsZSwg
aW50ICp3aWR0aCwgaW50ICpoZWlnaHQpCi17Ci0gICAgZ19yZXR1cm5faWZfZmFpbChHREtfSVNf
UElYTUFQKGRyYXdhYmxlKSB8fCBHREtfSVNfV0lORE9XKGRyYXdhYmxlKSk7Ci0KLSAgICBpZiAo
R0RLX0lTX1BJWE1BUChkcmF3YWJsZSkpIHsKLSAgICAgICAgZ2RrX3BpeG1hcF9nZXRfc2l6ZShH
REtfUElYTUFQKGRyYXdhYmxlKSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBHZGtXaW5kb3cgKndpbmRvdyA9IEdES19XSU5ET1coZHJhd2FibGUpOwotICAg
ICp3aWR0aCA9IGdka193aW5kb3dfZ2V0X3dpZHRoKHdpbmRvdyk7Ci0gICAgKmhlaWdodCA9IGdk
a193aW5kb3dfZ2V0X2hlaWdodCh3aW5kb3cpOwotfQotI2Vsc2UKLXZvaWQgZ2V0R2RrRHJhd2Fi
bGVTaXplKEdka0RyYXdhYmxlICpkcmF3YWJsZSwgaW50ICp3aWR0aCwgaW50ICpoZWlnaHQpCi17
Ci0gICAgZ2RrX2RyYXdhYmxlX2dldF9zaXplKGRyYXdhYmxlLCB3aWR0aCwgaGVpZ2h0KTsKLX0K
LSNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAyNCwgMCkKLQotI2VuZGlmIC8vIEdUS19B
UElfVkVSU0lPTl8yCi0KLSNpZiAhR0xJQl9DSEVDS19WRVJTSU9OKDIsIDI3LCAxKQotZ2Jvb2xl
YW4gZ19zaWduYWxfYWNjdW11bGF0b3JfZmlyc3Rfd2lucyhHU2lnbmFsSW52b2NhdGlvbkhpbnQg
Kmludm9jYXRpb25IaW50LCBHVmFsdWUgKnJldHVybkFjY3VtdWxhdG9yLCBjb25zdCBHVmFsdWUg
KmhhbmRsZXJSZXR1cm4sIGdwb2ludGVyIGRhdGEpCi17Ci0gICAgZ192YWx1ZV9jb3B5KGhhbmRs
ZXJSZXR1cm4sIHJldHVybkFjY3VtdWxhdG9yKTsKLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0jZW5k
aWYKLQotI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigyLCAyMiwgMCkKLWNhaXJvX3N1cmZhY2VfdCAq
Z2RrX3dpbmRvd19jcmVhdGVfc2ltaWxhcl9zdXJmYWNlKEdka1dpbmRvdyAqd2luZG93LCBjYWly
b19jb250ZW50X3QgY29udGVudCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQotewotICAgIGNhaXJv
X3QgKmNhaXJvQ29udGV4dCA9IGdka19jYWlyb19jcmVhdGUod2luZG93KTsKLSAgICBjYWlyb19z
dXJmYWNlX3QgKmNhaXJvU3VyZmFjZSA9IGNhaXJvX2dldF90YXJnZXQoY2Fpcm9Db250ZXh0KTsK
LSAgICBjYWlyb19zdXJmYWNlX3QgKm5ld1N1cmZhY2UgPSBjYWlyb19zdXJmYWNlX2NyZWF0ZV9z
aW1pbGFyKGNhaXJvU3VyZmFjZSwgY29udGVudCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgY2Fpcm9f
ZGVzdHJveShjYWlyb0NvbnRleHQpOwotICAgIHJldHVybiBuZXdTdXJmYWNlOwotfQotI2VuZGlm
IC8vIEdUS19DSEVDS19WRVJTSU9OKDIsIDIyLCAwKQotCi0jaWYgIUdUS19DSEVDS19WRVJTSU9O
KDMsIDMsIDYpCi0jaWZkZWYgR0RLX1dJTkRPV0lOR19YMTEKLXN0YXRpYyBpbnQgZ2V0U2NyZWVu
Q3VycmVudERlc2t0b3AoR2RrU2NyZWVuICpzY3JlZW4pCi17Ci0gICAgRGlzcGxheSAqZGlzcGxh
eSA9IEdES19ESVNQTEFZX1hESVNQTEFZKGdka19zY3JlZW5fZ2V0X2Rpc3BsYXkoc2NyZWVuKSk7
Ci0gICAgV2luZG93IHJvb3RXaW5kb3cgPSBYUm9vdFdpbmRvdyhkaXNwbGF5LCBHREtfU0NSRUVO
X1hOVU1CRVIoc2NyZWVuKSk7Ci0gICAgQXRvbSBjdXJyZW50RGVza3RvcCA9IFhJbnRlcm5BdG9t
KGRpc3BsYXksICJfTkVUX0NVUlJFTlRfREVTS1RPUCIsIFRydWUpOwotCi0gICAgQXRvbSB0eXBl
OwotICAgIGludCBmb3JtYXQ7Ci0gICAgdW5zaWduZWQgbG9uZyBpdGVtc0NvdW50LCBieXRlc0Fm
dGVyOwotICAgIHVuc2lnbmVkIGNoYXIgKnJldHVybmVkRGF0YSA9IE5VTEw7Ci0gICAgWEdldFdp
bmRvd1Byb3BlcnR5KGRpc3BsYXksIHJvb3RXaW5kb3csIGN1cnJlbnREZXNrdG9wLCAwLCBHX01B
WExPTkcsIEZhbHNlLCBYQV9DQVJESU5BTCwKLSAgICAgICAgICAgICAgICAgICAgICAgJnR5cGUs
ICZmb3JtYXQsICZpdGVtc0NvdW50LCAmYnl0ZXNBZnRlciwgJnJldHVybmVkRGF0YSk7Ci0KLSAg
ICBpbnQgd29ya3NwYWNlID0gMDsKLSAgICBpZiAodHlwZSA9PSBYQV9DQVJESU5BTCAmJiBmb3Jt
YXQgPT0gMzIgJiYgaXRlbXNDb3VudCA+IDApCi0gICAgICAgIHdvcmtzcGFjZSA9IChpbnQpcmV0
dXJuZWREYXRhWzBdOwotCi0gICAgaWYgKHJldHVybmVkRGF0YSkKLSAgICAgICAgWEZyZWUocmV0
dXJuZWREYXRhKTsKLQotICAgIHJldHVybiB3b3Jrc3BhY2U7Ci19Ci0KLXN0YXRpYyB2b2lkIGdl
dFNjcmVlbldvcmtBcmVhKEdka1NjcmVlbiAqc2NyZWVuLCBHZGtSZWN0YW5nbGUgKmFyZWEpCi17
Ci0gICAgRGlzcGxheSAqZGlzcGxheSA9IEdES19ESVNQTEFZX1hESVNQTEFZKGdka19zY3JlZW5f
Z2V0X2Rpc3BsYXkoc2NyZWVuKSk7Ci0gICAgQXRvbSB3b3JrQXJlYSA9IFhJbnRlcm5BdG9tKGRp
c3BsYXksICJfTkVUX1dPUktBUkVBIiwgVHJ1ZSk7Ci0KLSAgICAvKiBEZWZhdWx0cyBpbiBjYXNl
IG9mIGVycm9yLiAqLwotICAgIGFyZWEtPnggPSAwOwotICAgIGFyZWEtPnkgPSAwOwotICAgIGFy
ZWEtPndpZHRoID0gZ2RrX3NjcmVlbl9nZXRfd2lkdGgoc2NyZWVuKTsKLSAgICBhcmVhLT5oZWln
aHQgPSBnZGtfc2NyZWVuX2dldF9oZWlnaHQoc2NyZWVuKTsKLQotICAgIGlmICh3b3JrQXJlYSA9
PSBOb25lKQotICAgICAgICByZXR1cm47Ci0KLSAgICBXaW5kb3cgcm9vdFdpbmRvdyA9IFhSb290
V2luZG93KGRpc3BsYXksIEdES19TQ1JFRU5fWE5VTUJFUihzY3JlZW4pKTsKLSAgICBBdG9tIHR5
cGU7Ci0gICAgaW50IGZvcm1hdDsKLSAgICB1bnNpZ25lZCBsb25nIGl0ZW1zQ291bnQsIGJ5dGVz
QWZ0ZXI7Ci0gICAgdW5zaWduZWQgY2hhciAqcmV0dXJuZWREYXRhID0gMDsKLSAgICBpbnQgcmVz
dWx0ID0gWEdldFdpbmRvd1Byb3BlcnR5KGRpc3BsYXksIHJvb3RXaW5kb3csIHdvcmtBcmVhLCAw
LCA0ICogMzIgLyogTWF4IGxlbmd0aCAqLywgRmFsc2UsIEFueVByb3BlcnR5VHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0eXBlLCAmZm9ybWF0LCAmaXRlbXNDb3Vu
dCwgJmJ5dGVzQWZ0ZXIsICZyZXR1cm5lZERhdGEpOwotICAgIGlmIChyZXN1bHQgIT0gU3VjY2Vz
cyB8fCB0eXBlID09IE5vbmUgfHwgIWZvcm1hdCB8fCBieXRlc0FmdGVyIHx8IGl0ZW1zQ291bnQg
JSA0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbnQgZGVza3RvcCA9IGdldFNjcmVlbkN1cnJl
bnREZXNrdG9wKHNjcmVlbik7Ci0gICAgbG9uZyAqd29ya0FyZWFzID0gKGxvbmcgKilyZXR1cm5l
ZERhdGE7Ci0gICAgYXJlYS0+eCA9IHdvcmtBcmVhc1tkZXNrdG9wICogNF07Ci0gICAgYXJlYS0+
eSA9IHdvcmtBcmVhc1tkZXNrdG9wICogNCArIDFdOwotICAgIGFyZWEtPndpZHRoID0gd29ya0Fy
ZWFzW2Rlc2t0b3AgKiA0ICsgMl07Ci0gICAgYXJlYS0+aGVpZ2h0ID0gd29ya0FyZWFzW2Rlc2t0
b3AgKiA0ICsgM107Ci0KLSAgICBYRnJlZShyZXR1cm5lZERhdGEpOwotfQotI2VuZGlmIC8vIEdE
S19XSU5ET1dJTkdfWDExCi0KLXZvaWQgZ2RrX3NjcmVlbl9nZXRfbW9uaXRvcl93b3JrYXJlYShH
ZGtTY3JlZW4gKnNjcmVlbiwgaW50IG1vbml0b3IsIEdka1JlY3RhbmdsZSAqYXJlYSkKLXsKLSAg
ICBnZGtfc2NyZWVuX2dldF9tb25pdG9yX2dlb21ldHJ5KHNjcmVlbiwgbW9uaXRvciwgYXJlYSk7
Ci0KLSNpZmRlZiBHREtfV0lORE9XSU5HX1gxMQotICAgIEdka1JlY3RhbmdsZSB3b3JrQXJlYTsK
LSAgICBnZXRTY3JlZW5Xb3JrQXJlYShzY3JlZW4sICZ3b3JrQXJlYSk7Ci0gICAgZ2RrX3JlY3Rh
bmdsZV9pbnRlcnNlY3QoJndvcmtBcmVhLCBhcmVhLCBhcmVhKTsKLSNlbmRpZgotfQotI2VuZGlm
IC8vIEdUS19DSEVDS19WRVJTSU9OKDMsIDMsIDYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0d0a1ZlcnNpb25pbmcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTNjYWM2
MzNhMGQxNWJkOTc4MDNkMDViMTZlNWY2MzQxMjUzYThhOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3Rr
VmVyc2lvbmluZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTI3ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQ29sbGFib3JhIEx0ZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2Fs
aWEsIFMuTC4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBHdGtWZXJzaW9uaW5nX2gKLSNkZWZpbmUgR3Rr
VmVyc2lvbmluZ19oCi0KLSNpbmNsdWRlICJhdXRvdG9vbHNjb25maWcuaCIKLSNpbmNsdWRlIDxn
dGsvZ3RrLmg+Ci0KLSNpZm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIKLSNpbmNsdWRlIDxnZGsvZ2Rr
a2V5c3ltcy1jb21wYXQuaD4KLSNlbmRpZgotCi1HX0JFR0lOX0RFQ0xTCi0KLS8vIE1hY3JvcyB0
byBhdm9pZCBkZXByZWNhdGlvbiBjaGVja2luZyBjaHVybgotI2lmbmRlZiBHVEtfQVBJX1ZFUlNJ
T05fMgotI2RlZmluZSBHREtfV0lORE9XX1hXSU5ET1cod2luZG93KSAoZ2RrX3gxMV93aW5kb3df
Z2V0X3hpZCh3aW5kb3cpKQotI2Vsc2UKLUdka1BpeGJ1ZiogZ2RrX3BpeGJ1Zl9nZXRfZnJvbV9z
dXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgaW50IHNyY1gsIGludCBzcmNZLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KTsKLXZvaWQgZ2V0R2RrRHJhd2FibGVTaXplKEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgaW50KiB3
aWR0aCwgaW50KiBoZWlnaHQpOwotI2VuZGlmCi0KLSNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMiwg
MjMsIDQpCi0jZGVmaW5lIGdka19waXhtYXBfZ2V0X3NpemUgZ2RrX2RyYXdhYmxlX2dldF9zaXpl
Ci0jZW5kaWYgLy8gR1RLX0NIRUNLX1ZFUlNJT04oMiwgMjMsIDQpCi0KLSNpZiAhR1RLX0NIRUNL
X1ZFUlNJT04oMiwgMjMsIDApCi0jZGVmaW5lIGdka193aW5kb3dfZ2V0X2Rpc3BsYXkod2luZG93
KSBnZGtfZHJhd2FibGVfZ2V0X2Rpc3BsYXkod2luZG93KQotI2RlZmluZSBnZGtfd2luZG93X2dl
dF92aXN1YWwgZ2RrX2RyYXdhYmxlX2dldF92aXN1YWwKLSNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVS
U0lPTigyLCAyMywgMCkKLQotI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigyLCAyMiwgMCkKLWNhaXJv
X3N1cmZhY2VfdCogZ2RrX3dpbmRvd19jcmVhdGVfc2ltaWxhcl9zdXJmYWNlKEdka1dpbmRvdyog
d2luZG93LCBjYWlyb19jb250ZW50X3QgY29udGVudCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsK
LSNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAyMiwgMCkKLQotI2lmICFHVEtfQ0hFQ0tf
VkVSU0lPTigyLCAyMSwgMikKLSNkZWZpbmUgZ2RrX3Zpc3VhbF9nZXRfZGVwdGgodmlzdWFsKSAo
dmlzdWFsKS0+ZGVwdGgKLSNkZWZpbmUgZ2RrX3Zpc3VhbF9nZXRfYml0c19wZXJfcmdiKHZpc3Vh
bCkgKHZpc3VhbCktPmJpdHNfcGVyX3JnYgotI2RlZmluZSBnZGtfZHJhZ19jb250ZXh0X2dldF9z
ZWxlY3RlZF9hY3Rpb24oY29udGV4dCkgKGNvbnRleHQpLT5hY3Rpb24KLSNkZWZpbmUgZ2RrX2Ry
YWdfY29udGV4dF9nZXRfYWN0aW9ucyhjb250ZXh0KSAoY29udGV4dCktPmFjdGlvbnMKLSNlbmRp
ZiAvLyBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAyMSwgMikKLQotI2lmICFHVEtfQ0hFQ0tfVkVSU0lP
TigyLCAyMCwgMCkKLSNkZWZpbmUgZ3RrX3dpZGdldF9nZXRfcmVhbGl6ZWQod2lkZ2V0KSBHVEtf
V0lER0VUX1JFQUxJWkVEKHdpZGdldCkKLSNkZWZpbmUgZ3RrX3dpZGdldF9zZXRfcmVhbGl6ZWQo
d2lkZ2V0LCBUUlVFKSBHVEtfV0lER0VUX1NFVF9GTEFHUygod2lkZ2V0KSwgR1RLX1JFQUxJWkVE
KQotI2RlZmluZSBndGtfcmFuZ2VfZ2V0X21pbl9zbGlkZXJfc2l6ZShyYW5nZSkgKHJhbmdlKS0+
bWluX3NsaWRlcl9zaXplCi0jZW5kaWYgLy8gR1RLX0NIRUNLX1ZFUlNJT04oMiwgMjAsIDApCi0K
LSNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTksIDApCi0jZGVmaW5lIGd0a193aWRnZXRfaXNf
dG9wbGV2ZWwod2lkZ2V0KSBHVEtfV0lER0VUX1RPUExFVkVMKHdpZGdldCkKLSNkZWZpbmUgZ3Rr
X3dpZGdldF9nZXRfcmVhbGl6ZWQod2lkZ2V0KSBHVEtfV0lER0VUX1JFQUxJWkVEKHdpZGdldCkK
LSNkZWZpbmUgZ3RrX3dpZGdldF9nZXRfaGFzX3dpbmRvdyh3aWRnZXQpICFHVEtfV0lER0VUX05P
X1dJTkRPVyh3aWRnZXQpCi0jZGVmaW5lIGd0a193aWRnZXRfZ2V0X2Nhbl9mb2N1cyh3aWRnZXQp
IEdUS19XSURHRVRfQ0FOX0ZPQ1VTKHdpZGdldCkKLSNkZWZpbmUgZ3RrX3dpZGdldF9pc19zZW5z
aXRpdmUod2lkZ2V0KSBHVEtfV0lER0VUX0lTX1NFTlNJVElWRSh3aWRnZXQpCi0jZW5kaWYgLy8g
R1RLX0NIRUNLX1ZFUlNJT04oMiwgMTksIDApCi0KLSNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMiwg
MTgsIDApCi0jZGVmaW5lIGd0a193aWRnZXRfc2V0X3Zpc2libGUod2lkZ2V0LCBGQUxTRSkgR1RL
X1dJREdFVF9VTlNFVF9GTEFHUygod2lkZ2V0KSwgR1RLX1ZJU0lCTEUpCi0jZGVmaW5lIGd0a193
aWRnZXRfZ2V0X3Zpc2libGUod2lkZ2V0KSAoR1RLX1dJREdFVF9GTEFHUyh3aWRnZXQpICYgR1RL
X1ZJU0lCTEUpCi0KLSNkZWZpbmUgZ3RrX3dpZGdldF9zZXRfd2luZG93KHdpZGdldCwgbmV3X3dp
bmRvdykgKHdpZGdldCktPndpbmRvdyA9IChuZXdfd2luZG93KQotI2RlZmluZSBndGtfd2lkZ2V0
X3NldF9jYW5fZm9jdXMod2lkZ2V0LCBUUlVFKSBHVEtfV0lER0VUX1NFVF9GTEFHUygod2lkZ2V0
KSwgR1RLX0NBTl9GT0NVUykKLSNkZWZpbmUgZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGlvbih3aWRn
ZXQsIGFsbG9jKSAoKihhbGxvYykgPSAod2lkZ2V0KS0+YWxsb2NhdGlvbikKLSNkZWZpbmUgZ3Rr
X3dpZGdldF9zZXRfYWxsb2NhdGlvbih3aWRnZXQsIGFsbG9jKSAoKHdpZGdldCktPmFsbG9jYXRp
b24gPSAqKGFsbG9jKSkKLSNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxOCwgMCkKLQot
I2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNywgMykKLXZvaWQgZ2RrX3dpbmRvd19nZXRfcm9v
dF9jb29yZHMoR2RrV2luZG93KiB3aW5kb3csIGdpbnQgeCwgZ2ludCB5LCBnaW50KiByb290WCwg
Z2ludCogcm9vdFkpOwotI2VuZGlmIC8vIEdUS19DSEVDS19WRVJTSU9OKDIsIDE3LCAzKQotCi0j
aWYgIUdUS19DSEVDS19WRVJTSU9OKDIsIDE2LCAwKQotY29uc3QgZ2NoYXIqIGd0a19tZW51X2l0
ZW1fZ2V0X2xhYmVsKEd0a01lbnVJdGVtKik7Ci0jZW5kaWYgLy8gR1RLX0NIRUNLX1ZFUlNJT04o
MiwgMTYsIDApCi0KLQotI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNCwgMCkKLSNkZWZpbmUg
Z3RrX3dpZGdldF9nZXRfd2luZG93KHdpZGdldCkgKHdpZGdldCktPndpbmRvdwotI2RlZmluZSBn
dGtfYWRqdXN0bWVudF9nZXRfdmFsdWUoYWRqKSAoYWRqKS0+dmFsdWUKLSNkZWZpbmUgZ3RrX2Rp
YWxvZ19nZXRfY29udGVudF9hcmVhKGRpYWxvZykgKGRpYWxvZyktPnZib3gKLSNkZWZpbmUgZ3Rr
X2RpYWxvZ19nZXRfYWN0aW9uX2FyZWEoZGlhbG9nKSAoZGlhbG9nKS0+YWN0aW9uX2FyZWEKLSNk
ZWZpbmUgZ3RrX3NlbGVjdGlvbl9kYXRhX2dldF9sZW5ndGgoZGF0YSkgKGRhdGEpLT5sZW5ndGgK
LSNkZWZpbmUgZ3RrX3NlbGVjdGlvbl9kYXRhX2dldF9kYXRhKGRhdGEpIChkYXRhKS0+ZGF0YQot
I2RlZmluZSBndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X3RhcmdldChkYXRhKSAoZGF0YSktPnRhcmdl
dAotI2RlZmluZSBndGtfYWRqdXN0bWVudF9zZXRfcGFnZV9zaXplKGFkaiwgbmV3VmFsdWUpICgo
YWRqKS0+cGFnZV9zaXplID0gbmV3VmFsdWUpCi0jZGVmaW5lIGd0a19hZGp1c3RtZW50X3NldF92
YWx1ZShhZGosIG5ld1ZhbHVlKSAoKGFkaiktPnZhbHVlID0gbmV3VmFsdWUpCi0jZGVmaW5lIGd0
a19hZGp1c3RtZW50X3NldF9sb3dlcihhZGosIG5ld1ZhbHVlKSAoKGFkaiktPmxvd2VyID0gbmV3
VmFsdWUpCi0jZGVmaW5lIGd0a19hZGp1c3RtZW50X3NldF91cHBlcihhZGosIG5ld1ZhbHVlKSAo
KGFkaiktPnVwcGVyID0gbmV3VmFsdWUpCi0KLXZvaWQgZ3RrX2FkanVzdG1lbnRfY29uZmlndXJl
KEd0a0FkanVzdG1lbnQqIGFkanVzdG1lbnQsIGdkb3VibGUgdmFsdWUsIGdkb3VibGUgbG93ZXIs
IGdkb3VibGUgdXBwZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZG91YmxlIHN0
ZXBJbmNyZW1lbnQsIGdkb3VibGUgcGFnZUluY3JlbWVudCwgZ2RvdWJsZSBwYWdlU2l6ZSk7Ci0K
LXZvaWQgZ3RrX2FkanVzdG1lbnRfc2V0X3ZhbHVlKEd0a0FkanVzdG1lbnQqIGFkanVzbWVudCwg
Z2RvdWJsZSB2YWx1ZSk7Ci0jZW5kaWYgLy8gR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTQsIDApCi0K
LUdka0RldmljZSogZ2V0RGVmYXVsdEdES1BvaW50ZXJEZXZpY2UoR2RrV2luZG93KiB3aW5kb3cp
OwotR2RrQ3Vyc29yKiBibGFua0N1cnNvcigpOwotCi0jaWYgIUdMSUJfQ0hFQ0tfVkVSU0lPTigy
LCAyNywgMSkKLWdib29sZWFuIGdfc2lnbmFsX2FjY3VtdWxhdG9yX2ZpcnN0X3dpbnMoR1NpZ25h
bEludm9jYXRpb25IaW50KiBpbnZvY2F0aW9uSGludCwgR1ZhbHVlKiByZXR1cm5BY2N1bXVsYXRv
ciwgY29uc3QgR1ZhbHVlKiBoYW5kbGVyUmV0dXJuLCBncG9pbnRlciBkYXRhKTsKLSNlbmRpZgot
Ci0jaWYgIUdUS19DSEVDS19WRVJTSU9OKDMsIDMsIDYpCi12b2lkIGdka19zY3JlZW5fZ2V0X21v
bml0b3Jfd29ya2FyZWEoR2RrU2NyZWVuICosIGludCBtb25pdG9yLCBHZGtSZWN0YW5nbGUgKmFy
ZWEpOwotI2VuZGlmCi0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAvLyBHdGtWZXJzaW9uaW5nX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dl
YktpdC9ndGsvR05VbWFrZWZpbGUuYW0KaW5kZXggY2NmYjEwMzRmMjEyNTBiZTZiMjZmODI3MjQ1
MGNiNDFiNmFjMmJjMC4uYTJlNDgwNThmYzc2NjNhOTlhMTQ3YWM2ODg0YzMyYjdjMTIxYjgzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNl
L1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KQEAgLTQ3LDYgKzQ3LDcgQEAgbGlid2Via2l0Z3Rr
X0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJ
T05AX2xhX0NQUEYKIAktSSQoR0VOU09VUkNFU19XRUJLSVRET00pIFwKIAktSVNvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdCBcCiAJJChnbG9iYWxfY3BwZmxhZ3MpIFwKKwkkKHBsYXRmb3JtZ3RrX2Nw
cGZsYWdzKSBcCiAJJCh3ZWJjb3JlX2NwcGZsYWdzKSBcCiAJJCh3ZWJjb3JlZ3RrX2NwcGZsYWdz
KSBcCiAJJChqYXZhc2NyaXB0Y29yZV9jcHBmbGFncykgXApAQCAtNzksNiArODAsNyBAQCBsaWJ3
ZWJraXRndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlO
T1JfVkVSU0lPTkBfbGFfTERGTAogCiBsaWJ3ZWJraXRndGtfQFdFQktJVEdUS19BUElfTUFKT1Jf
VkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfTElCQUREIDo9IFwKIAkt
bHB0aHJlYWQgXAorCWxpYlBsYXRmb3JtR3RrLmxhIFwKIAlsaWJXZWJDb3JlLmxhIFwKIAlsaWJX
ZWJDb3JlUGxhdGZvcm0ubGEgXAogCWxpYldlYkNvcmVNb2R1bGVzLmxhIFwKQEAgLTYyMiw3ICs2
MjQsNyBAQCBQcm9ncmFtc191bml0dGVzdHNfdGVzdGtleWV2ZW50c19MREFERCA9ICQod2Via2l0
X3Rlc3RzX2xkYWRkKQogUHJvZ3JhbXNfdW5pdHRlc3RzX3Rlc3RrZXlldmVudHNfTERGTEFHUyA9
ICQod2Via2l0X3Rlc3RzX2xkZmxhZ3MpCiAKIFByb2dyYW1zX3VuaXR0ZXN0c190ZXN0Y29weWFu
ZHBhc3RlX1NPVVJDRVMgPSBTb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90ZXN0Y29weWFuZHBhc3Rl
LmMgXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmMKKwlTb3Vy
Y2UvUGxhdGZvcm0vZ3RrL0d0a1ZlcnNpb25pbmcuYwogUHJvZ3JhbXNfdW5pdHRlc3RzX3Rlc3Rj
b3B5YW5kcGFzdGVfQ0ZMQUdTID0gJCh3ZWJraXRfdGVzdHNfY2ZsYWdzKSBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCAwYWJmOTZlYzUxNjhlZDUwYzY3MzA1OWM0NTM2
Y2JmYTcyMWUxZmJkLi41NjBkYjIwM2Q4OWE1M2Y0YTJjM2U5NTAzZjM3NmNjYzBhNDI5ZGQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtOCw2ICs4LDcgQEAgbGliX0xUTElCUkFSSUVTICs9IFwK
ICMgV2UgbmVlZCB0byBtYWtlIHN1cmUgcGx1Z2luIHByb2Nlc3MgaXMgYWx3YXlzIGJ1aWx0IHdp
dGggZ3RrMiwgYmVjYXVzZSBwbHVnaW5zIGxpa2UgZmxhc2gKICMgc3RpbGwgdXNlIGd0azIuIFNp
bmNlIHdlYmNvcmUgd2FzIGJ1aWx0IHdpdGggZ3RrMywgd2UgbmVlZCB0byBidWlsZCB3ZWJjb3Jl
Z3RrIHNvdXJjZXMgYWdhaW4gd2l0aCBndGsyCiBub2luc3RfTFRMSUJSQVJJRVMgKz0gXAorCWxp
YlBsYXRmb3JtR3RrMi5sYSBcCiAJbGliV2ViQ29yZUd0azIubGEKIAogbGliZXhlY19QUk9HUkFN
UyArPSBcCkBAIC0xMjUsNiArMTI2LDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9N
QUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9DUFAKIAktREJV
SUxESU5HX1dFQktJVCBcCiAJLURXRUJLSVQyX0NPTVBJTEFUSU9OIFwKIAktREVOQUJMRV9QTFVH
SU5fUFJPQ0VTUz0xIFwKKwkkKHBsYXRmb3JtZ3RrX2NwcGZsYWdzKSBcCiAJJCh3ZWJjb3JlX2Nw
cGZsYWdzKSBcCiAJJCh3ZWJjb3JlZ3RrX2NwcGZsYWdzKSBcCiAJJChqYXZhc2NyaXB0Y29yZV9j
cHBmbGFncykgXApAQCAtMTgwLDYgKzE4Miw3IEBAIGVuZGlmCiAKIGxpYndlYmtpdDJndGtfQFdF
QktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBf
bGFfTElCQUREICs9IFwKIAlsaWJqYXZhc2NyaXB0Y29yZWd0ay1AV0VCS0lUR1RLX0FQSV9NQUpP
Ul9WRVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQC5sYSBcCisJbGliUGxhdGZv
cm1HdGsubGEgXAogCWxpYldlYkNvcmVET00ubGEgXAogCWxpYldlYkNvcmVHdGsubGEgXAogCSQo
Q0FJUk9fTElCUykgXApAQCAtNDYzLDYgKzQ2Niw3IEBAIGxpYldlYkNvcmVHdGsyX2xhX0NQUEZM
QUdTID0gXAogCS1EQlVJTERJTkdfV0VCS0lUIFwKIAktREdUS19BUElfVkVSU0lPTl8yPTEgXAog
CSQoZ2xvYmFsX2NwcGZsYWdzKSBcCisJJChwbGF0Zm9ybWd0a19jcHBmbGFncykgXAogCSQod2Vi
Y29yZV9jcHBmbGFncykgXAogCSQod2ViY29yZWd0a19jcHBmbGFncykgXAogCSQoamF2YXNjcmlw
dGNvcmVfY3BwZmxhZ3MpIFwKQEAgLTQ4Myw2ICs0ODcsNDggQEAgbGliV2ViQ29yZUd0azJfbGFf
Q1BQRkxBR1MgPSBcCiAJJChYUkVOREVSX0NGTEFHUykgXAogCSQoWFRfQ0ZMQUdTKQogCitsaWJQ
bGF0Zm9ybUd0azJfbGFfU09VUkNFUyA9IFwKKwkkKHBsYXRmb3JtZ3RrX3NvdXJjZXMpCisKK2xp
YlBsYXRmb3JtR3RrMl9sYV9DWFhGTEFHUyA9IFwKKwktZnZpc2liaWxpdHktaW5saW5lcy1oaWRk
ZW4gXAorCSQoZ2xvYmFsX2N4eGZsYWdzKQorCitsaWJQbGF0Zm9ybUd0azJfbGFfQ0ZMQUdTID0g
XAorCS1mdmlzaWJpbGl0eT1oaWRkZW4gXAorCSQoZ2xvYmFsX2NmbGFncykKKworbGliUGxhdGZv
cm1HdGsyX2xhX0NQUEZMQUdTID0gXAorCS1EQlVJTERJTkdfV0VCS0lUIFwKKwktREdUS19BUElf
VkVSU0lPTl8yPTEgXAorCSQoZ2xvYmFsX2NwcGZsYWdzKSBcCisJJChwbGF0Zm9ybWd0a19jcHBm
bGFncykgXAorCSQoamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MpIFwKKwktZm5vLXN0cmljdC1hbGlh
c2luZyBcCisJJChISUxET05fQ1BQRkxBR1MpIFwKKwkkKENBSVJPX0NGTEFHUykgXAorCSQoQ0xV
VFRFUl9DRkxBR1MpIFwKKwkkKENPVkVSQUdFX0NGTEFHUykgXAorCSQoRU5DSEFOVF9DRkxBR1Mp
IFwKKwkkKEZSRUVUWVBFX0NGTEFHUykgXAorCSQoR0FJTF9DRkxBR1MpIFwKKwkkKEdBTUVQQURf
Q0ZMQUdTKSBcCisJJChHRU9DTFVFX0NGTEFHUykgXAorCSQoR0xJQl9DRkxBR1MpIFwKKwkkKEdT
VFJFQU1FUl9DRkxBR1MpIFwKKwkkKEdUS19DRkxBR1MpIFwKKwkkKEhJTERPTl9DRkxBR1MpIFwK
KwkkKExJQlNFQ1JFVF9DRkxBR1MpIFwKKwkkKExJQlNPVVBfQ0ZMQUdTKSBcCisJJChMSUJYTUxf
Q0ZMQUdTKSBcCisJJChMSUJYU0xUX0NGTEFHUykgXAorCSQoU1FMSVRFM19DRkxBR1MpIFwKKwkk
KFVOSUNPREVfQ0ZMQUdTKSBcCisJJChYQ09NUE9TSVRFX0NGTEFHUykgXAorCSQoWERBTUFHRV9D
RkxBR1MpIFwKKwkkKFhSRU5ERVJfQ0ZMQUdTKSBcCisJJChYVF9DRkxBR1MpCisKICMgSW5qZWN0
ZWQgQnVuZGxlCiBpbmplY3RlZGJ1bmRsZWRpciA9ICQobGliZGlyKS93ZWJraXQyZ3RrLTMuMC9p
bmplY3RlZC1idW5kbGUKIGlmIEVOQUJMRV9XRUJLSVQyCkBAIC01NDAsNiArNTg2LDcgQEAgUHJv
Z3JhbXNfV2ViS2l0UGx1Z2luUHJvY2Vzc19DUFBGTEFHUyA9IFwKIAktREVOQUJMRV9QTFVHSU5f
UFJPQ0VTUz0xIFwKIAktRExJQkVYRUNESVI9XCIiJChsaWJleGVjZGlyKSJcIiBcCiAJJChnbG9i
YWxfY3BwZmxhZ3MpIFwKKwkkKHBsYXRmb3JtZ3RrX2NwcGZsYWdzKSBcCiAJJCh3ZWJjb3JlX2Nw
cGZsYWdzKSBcCiAJJCh3ZWJjb3JlZ3RrX2NwcGZsYWdzKSBcCiAJJChqYXZhc2NyaXB0Y29yZV9j
cHBmbGFncykgXApAQCAtNTc5LDggKzYyNiw5IEBAIFByb2dyYW1zX1dlYktpdFBsdWdpblByb2Nl
c3NfTERBREQgKz0gXAogZW5kaWYKIAogUHJvZ3JhbXNfV2ViS2l0UGx1Z2luUHJvY2Vzc19MREFE
RCArPSBcCi0JbGliV2ViQ29yZVBsYXRmb3JtLmxhIFwKKwlsaWJQbGF0Zm9ybUd0azIubGEgXAog
CWxpYldlYkNvcmVHdGsyLmxhIFwKKwlsaWJXZWJDb3JlUGxhdGZvcm0ubGEgXAogCSQoQ0FJUk9f
TElCUykgXAogCSQoQ09WRVJBR0VfTERGTEFHUykgXAogCSQoR0VPQ0xVRV9MSUJTKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL2dlbmVyYXRlLWZvcndhcmRpbmctaGVhZGVy
cy5wbCBiL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvZ2VuZXJhdGUtZm9yd2FyZGluZy1oZWFkZXJz
LnBsCmluZGV4IDcyY2Y2M2YyMGIyNWYzNWRlZjg1MmJlYmZhMGUyZDg5NTc5NDI3Y2IuLmI3ODNh
NTg4OTBiZGU0NTdiMTI3MDU3MzllNWM2NDdiOWJkM2VkNDcgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NjcmlwdHMvZ2VuZXJhdGUtZm9yd2FyZGluZy1oZWFkZXJzLnBsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NjcmlwdHMvZ2VuZXJhdGUtZm9yd2FyZGluZy1oZWFkZXJzLnBsCkBAIC0zNiw3
ICszNiw3IEBAIHVzZSBGaWxlOjpTcGVjOjpGdW5jdGlvbnM7CiBteSAkc3JjUm9vdCA9IHJlYWxw
YXRoKEZpbGU6OlNwZWMtPmNhdGZpbGUoZGlybmFtZShhYnNfcGF0aCgkMCkpLCAiLi4vLi4iKSk7
CiBteSAkaW5jRnJvbVJvb3QgPSBhYnNfcGF0aCgkQVJHVlswXSk7CiBteSBAcGxhdGZvcm1QcmVm
aXhlcyA9ICgiYmxhY2tiZXJyeSIsICJjZiIsICJjaHJvbWl1bSIsICJjdXJsIiwgImVmbCIsICJn
dGsiLCAibWFjIiwgInF0IiwgInNvdXAiLCAidjgiLCAid2luIiwgInd4Iik7Ci1teSBAZnJhbWV3
b3JrcyA9ICggIkphdmFTY3JpcHRDb3JlIiwgIldlYkNvcmUiLCAiV2ViS2l0MiIpOworbXkgQGZy
YW1ld29ya3MgPSAoIkphdmFTY3JpcHRDb3JlIiwgIlBsYXRmb3JtIiwgIldlYkNvcmUiLCAiV2Vi
S2l0MiIpOwogbXkgQHNraXBwZWRQcmVmaXhlczsKIG15IEBmcmFtZXdvcmtIZWFkZXJzOwogbXkg
JGZyYW1ld29yazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvQXJndW1l
bnRDb2RlcnNHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVy
c0d0ay5jcHAKaW5kZXggMzk2OWUwYzg2NWVkZTAyMmJlYTU5YTE2YmI2Mjg2ZTAxYWE4NDlmZS4u
MzFjZDVkYThhNGI0MDc4MDUyZmM4NWM5ODRiMmNmZGM0MjhkYmQzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTI5LDEwICsyOSwx
MCBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRt
YXAuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxQbGF0
Zm9ybS9HdGtWZXJzaW9uaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhT2JqZWN0R3RrLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhp
Y3NDb250ZXh0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9HdGtWZXJzaW9uaW5nLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9QbGF0Zm9ybUNvbnRleHRDYWlyby5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dPd25QdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJF
dmVudEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3Rv
cnkuY3BwCmluZGV4IDJjNzNkYzdlMjI2ZDM4ZGRjN2Q4NDNkOTdjOTIzZDgyZDVkZjZlZTguLmJk
NzNhYjFlODMwMTMzZjJiYWFiNDM1ZGRmOTBjMTc1YjFiZWI1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAKQEAgLTI4LDEwICsyOCwxMCBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgogCi0jaW5j
bHVkZSAiR3RrVmVyc2lvbmluZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5o
IgogI2luY2x1ZGUgIlNjcm9sbGJhci5oIgogI2luY2x1ZGUgIldpbmRvd3NLZXlib2FyZENvZGVz
LmgiCisjaW5jbHVkZSA8UGxhdGZvcm0vR3RrVmVyc2lvbmluZy5oPgogI2luY2x1ZGUgPGdkay9n
ZGsuaD4KICNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy5oPgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNU
eXBlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggMjM0NGY4OTRkZjMzZTBkMzc1NGFhZjFhOTQzNjI2NDhh
MjFjNWZiZC4uYmE3MmRkYzg2OThlZDVkNTAyMjA0ZmUwMjliNDMyNGFmN2Q2ZWNiZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdC
YXNlLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlUHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlZpZXdCYXNl
SW5wdXRNZXRob2RGaWx0ZXIuaCIKKyNpbmNsdWRlIDxQbGF0Zm9ybS9HdGtWZXJzaW9uaW5nLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9DbGlwYm9hcmRHdGsuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Ns
aXBib2FyZFV0aWxpdGllc0d0ay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YU9iamVjdEd0ay5o
PgpAQCAtNTAsNyArNTEsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR3RrQ2xpY2tDb3VudGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtEcmFnQW5kRHJvcEhlbHBlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvR3RrVXRpbGl0aWVzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9HdGtWZXJzaW9uaW5nLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UGFzdGVib2FyZEhlbHBlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEv
TmV0c2NhcGVQbHVnaW5YMTEuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKaW5kZXggYTE4NDY4NzhiMzEwNDYx
NGI3YTI2ZmMyN2NlYWI3OWExYTRiOThlMC4uNmUwNzc2N2QxZDFjZGYyOTI3ZTZhNDgyMzIwMmQ4
YmY0ZDYyMTVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKQEAg
LTQyLDcgKzQyLDcgQEAKICNpbmNsdWRlIDxndGsvZ3RreC5oPgogI2VuZGlmCiAjaW5jbHVkZSA8
Z2RrL2dka3guaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0d0a1ZlcnNpb25pbmcuaD4KKyNpbmNsdWRl
IDxQbGF0Zm9ybS9HdGtWZXJzaW9uaW5nLmg+CiAjZWxpZiBQTEFURk9STShFRkwpICYmIGRlZmlu
ZWQoSEFWRV9FQ09SRV9YKQogI2luY2x1ZGUgPEVjb3JlX1guaD4KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU0N2JlOWQxN2QwOGY4
MTA5YWRiNDAyOGZlYTgzNmFiMzhjNDNmZTcuLjA4MTYzMmQ5YzI3YzQ0ZDAxNDFmMzg2YTZlMzZi
NzE2YjI2NDIzZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0wMy0wNyAgWmFuIERvYmVyc2VrICA8emRvYmVy
c2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gU2V0IHVwIHRoZSBsaWJQbGF0Zm9ybUd0
ay5sYSBsaWJyYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTE3MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIEdOVW1ha2VmaWxlLmFtOiBSZWZlcmVuY2UgcGxhdGZvcm1ndGtfY3BwZmxhZ3MgdmFy
aWFibGUgYWxvbmcgd2l0aCB3ZWJjb3JlZ3RrX2NwcGZsYWdzIHZhcmlhYmxlLgorICAgICAgICBB
ZGp1c3QgdGhlIHBhdGggdG8gR3RrVmVyc2lvbmluZy5jLCB0aGUgZmlsZSBoYXMgbW92ZWQgdW5k
ZXIgU291cmNlL1BsYXRmb3JtLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUu
YW06IFJlZmVyZW5jZSBwbGF0Zm9ybWd0a19jcHBmbGFncyB2YXJpYWJsZSBhbG9uZyB3aXRoIHdl
YmNvcmVndGtfY3BwZmxhZ3MgdmFyaWFibGUuCisKIDIwMTMtMDMtMDcgIEpvY2hlbiBFaXNpbmdl
ciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBkb24ndCB0cmFj
ayB0aGUgdG9wIGxvYWRpbmcgZnJhbWUgaWYgbm8gbGF5b3V0IHRlc3QgaXMgY3VycmVudGx5IHJ1
bm5pbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMvR05VbWFrZWZp
bGUuYW0KaW5kZXggODUyOTU1NjhkYjM2ZTcxMzFkZDk0ZWNmYzRkMjkxZWIzZjMzMTFmNi4uNzU1
MmE0ZGVkNmVlYWU0N2ViMjkwOTVjZTQ0M2EzYmJhMzdjNDJmZCAxMDA2NDQKLS0tIGEvVG9vbHMv
R05VbWFrZWZpbGUuYW0KKysrIGIvVG9vbHMvR05VbWFrZWZpbGUuYW0KQEAgLTExNSw2ICsxMTUs
NyBAQCBQcm9ncmFtc19EdW1wUmVuZGVyVHJlZV9DUFBGTEFHUyA9IFwKIAktSSQodG9wX2J1aWxk
ZGlyKS9EZXJpdmVkU291cmNlcyBcCiAJLUkkKHRvcF9idWlsZGRpcikvU291cmNlL1dlYktpdC9n
dGsgXAogCSQoamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MpIFwKKwkkKHBsYXRmb3JtZ3RrX2NwcGZs
YWdzKSBcCiAJJCh3ZWJjb3JlX2NwcGZsYWdzKQogCiBpZiBUQVJHRVRfWDExCkBAIC0xNjgsNyAr
MTY5LDcgQEAgUHJvZ3JhbXNfRHVtcFJlbmRlclRyZWVfU09VUkNFUyA9IFwKIAlUb29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvVGV4dElucHV0Q29udHJvbGxlci5oIFwKIAlUb29scy9EdW1wUmVuZGVy
VHJlZS9ndGsvVGV4dElucHV0Q29udHJvbGxlci5jcHAgXAogCVRvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9Xb3JrUXVldWVJdGVtR3RrLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0d0a1ZlcnNpb25pbmcuYworCVNvdXJjZS9QbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5jCiAK
IFByb2dyYW1zX0R1bXBSZW5kZXJUcmVlX0NYWEZMQUdTID0gXAogCSQoZ2xvYmFsX2N4eGZsYWdz
KSBcCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbQppbmRleCAwMTY1MzQ1YmI5YjA1ZjUzNTdi
OTlhZjI0ODY4ZTY5N2JhZDRkYmIzLi5jNmQ4OWU3NTJhYTcyOWFkNWFhNjM3YzY2ZjIyNjcxODA4
MDM2ZTMxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0KQEAgLTcyLDYgKzcyLDcgQEAg
bm9pbnN0X1BST0dSQU1TICs9IFwKIAogUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9UZXN0R3RrX0NQ
UEZMQUdTID0gXAogCSQoUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9UZXN0V1RGX0NQUEZMQUdTKSBc
CisJJChwbGF0Zm9ybWd0a19jcHBmbGFncykgXAogCSQod2ViY29yZV9jcHBmbGFncykgXAogCSQo
d2ViY29yZWd0a19jcHBmbGFncykgXAogCSQoRlJFRVRZUEVfQ0ZMQUdTKSBcCmRpZmYgLS1naXQg
YS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggYmY1YTU4OGI1NDdlY2U3NWEyNWU0Mzg4ZGRl
ZTI3NDcyNjdlYjVmZi4uNzE3OTNiMjFjMGI4YWUxZjNkODYwNDZiZmM1ZjZlNTliM2MzMDY3YSAx
MDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE1IEBACiAy
MDEzLTAzLTA3ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAorICAgICAg
ICBbR1RLXSBTZXQgdXAgdGhlIGxpYlBsYXRmb3JtR3RrLmxhIGxpYnJhcnkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTczOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IERl
ZmluZSB0aGUgdHdvIHZhcmlhYmxlcyB0aGF0IHdpbGwgaG9sZCBzb3VyY2VzIGxpc3QgYW5kIGNw
cGZsYWdzIGFzIHJlcXVpcmVkIGZvciB0aGUgbmV3IGxpYnJhcnkuCisgICAgICAgIEluY2x1ZGUg
dGhlIG5ldyBHTlVtYWtlZmlsZS5hbSB0aGF0J3Mgbm93IGF2YWlsYWJsZSB1bmRlciBTb3VyY2Uv
UGxhdGZvcm0uCisKKzIwMTMtMDMtMDcgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEu
Y29tPgorCiAgICAgICAgIFtHVEtdIExpbWl0IHRoZSBzdXBwb3J0ZWQgY29tcGlsZXJzIHRvIEdD
QyA+PSA0LjcgYW5kIENsYW5nID49IDMuMAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA5OTMyCiAKZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIv
R05VbWFrZWZpbGUuYW0KaW5kZXggODFlZTk1ZTE3MWI2ZTZhNzY3OTc0NWI0NmEwODliMDlkMzY4
MjdkZi4uMTI5NmZiMGU2M2RkOGI5YWE1YjU5OGJjYzhmNDcxZmQyNmM3Y2E0NCAxMDA2NDQKLS0t
IGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTcwLDYgKzcwLDggQEAg
amF2YXNjcmlwdGNvcmVfYnVpbHRfc291cmNlcyA6PQogamF2YXNjcmlwdGNvcmVfYnVpbHRfbm9z
b3VyY2VzIDo9CiBsbGludF9ub3NvdXJjZXMgOj0KIG9mZmxpbmVhc21fbm9zb3VyY2VzIDo9Citw
bGF0Zm9ybWd0a19jcHBmbGFncyA6PQorcGxhdGZvcm1ndGtfc291cmNlcyA6PQogd2ViY29yZV9w
bGF0Zm9ybV9zb3VyY2VzIDo9CiB3ZWJjb3JlX21vZHVsZXNfc291cmNlcyA6PQogd2ViY29yZV9z
dmdfYnVpbHRfc291cmNlcyA6PQpAQCAtMTc2LDYgKzE3OCw3IEBAIEVYVFJBX0RJU1QgKz0gXAog
IyBJbmNsdWRlIG1vZHVsZSBtYWtlZmlsZXMKIGluY2x1ZGUgU291cmNlL1dURi9HTlVtYWtlZmls
ZS5hbQogaW5jbHVkZSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KK2luY2x1
ZGUgU291cmNlL1BsYXRmb3JtL0dOVW1ha2VmaWxlLmFtCiBpbmNsdWRlIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCiBpbmNsdWRlIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qv
R05VbWFrZWZpbGUuYW0KIGluY2x1ZGUgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3BvL0dO
VW1ha2VmaWxlLmFtCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192746</attachid>
            <date>2013-03-12 08:54:31 -0700</date>
            <delta_ts>2013-03-12 08:56:37 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-111738-20130312165030.patch</filename>
            <type>text/plain</type>
            <size>58744</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA2NGQ1NTkxNmJlZmY1
YmFmMjk2MmZkNzU4NTY0NWYyYTQ1M2ExYWI3Li4xNDcxYWFjN2YyODNkZjZhN2YyYzU0YjhiYjEx
YjJlMzgxZWYwODVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMy0wMy0xMiAg
WmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gU2V0
IHVwIHRoZSBsaWJQbGF0Zm9ybUd0ay5sYSBsaWJyYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE3MzgKKworICAgICAgICBSZXZpZXdlZCBieSBN
YXJ0aW4gUm9iaW5zb24uCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkZWQuIFNldCB1
cCB0aGUgcnVsZXMgZm9yIGJ1aWxkaW5nIHRoZSBuZXcgbGliUGxhdGZvcm1HdGsubGEuIEZvciBu
b3cgaXQgd2lsbCBiZSBidWlsdCBpbgorICAgICAgICB0aGUgc2FtZSB3YXkgYXMgbGliV2ViQ29y
ZUd0ay5sYSBhbmQgaW4gcGFyYWxsZWwgd2l0aCBpdCB3aGlsZSB0aGUgc291cmNlcyBhcmUgbW92
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybQorICAgICAgICB0byBTb3VyY2UvUGxhdGZv
cm0vZ3RrIGFuZCBlYWNoIG1pZ3JhdGVkIHNvdXJjZSBmaWxlIG1vdmVzIHRvIGJlIGJ1aWx0IGlu
IGxpYlBsYXRmb3JtR3RrLmxhIGluc3RlYWQgb2YgbGliV2ViQ29yZUd0ay5sYS4KKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOiBBZGRlZC4gTGlzdHMgdGhlIGJ1aWxkIHRhcmdldHMgZm9y
IHRoZSBsaWJQbGF0Zm9ybUd0ay5sYS4KKyAgICAgICAgKiBndGsvR3RrVmVyc2lvbmluZy5jOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1ZlcnNpb25pbmcuYy4g
VGhpcyBmaWxlIGlzIGluZGVwZW5kZW50IG9mIFdlYkNvcmUgYW5kIGNhbiBiZSBtb3ZlZAorICAg
ICAgICBhbmQgY2hhbmdlZCB0byBiZSBidWlsdCBpbnRvIGxpYlBsYXRmb3JtR3RrLmxhIHJpZ2h0
IGF3YXkuCisgICAgICAgICogZ3RrL0d0a1ZlcnNpb25pbmcuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmguIERpdHRvLgorCiAyMDEzLTAz
LTExICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hy
b21pdW1dIE1vdmUgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyB0byBQbGF0Zm9ybS8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBiNTE2YjgwZDdmMGE2OGQ2NzI0ZjNmMGJjMjlhMjJhYjU5OWRmYzViLi42MDNiNmIzMjc5
MzljMGJlZTI2NGFjNGRjNTViOGM3MjAwMzBkNzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTMtMDMtMTIgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtHVEtdIFNldCB1cCB0aGUgbGliUGxhdGZvcm1HdGsubGEgbGlicmFyeQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExNzM4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAt
IG5vIG5ldyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IFJlZmVy
ZW5jZSBwbGF0Zm9ybWd0a19jcHBmbGFncywgcGxhdGZvcm1ndGtfc291cmNlcyB2YXJpYWJsZXMg
YWxvbmcgd2l0aCB3ZWJjb3JlZ3RrX2NwcGZsYWdzLCB3ZWJjb3JlZ3RrX3NvdXJjZXMgdmFyaWFi
bGVzLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IFJlbW92aW5nIEd0a1ZlcnNpb25p
bmcuYyBhbmQgR3RrVmVyc2lvbmluZy5oIGZyb20gdGhlIHNvdXJjZXMgbGlzdCwgdGhlc2UgZmls
ZXMgaGF2ZSBiZWVuIG1vdmVkIHVuZGVyIFNvdXJjZS9QbGF0Zm9ybS4KKyAgICAgICAgKiBiaW5k
aW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtOiBEaXR0byBvbiB0aGUgcGxhdGZvcm1ndGtfKiB2
YXJpYWJsZXMuCisKIDIwMTMtMDMtMTIgIEZsb3JpbiBNYWxpdGEgIDxmbWFsaXRhQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBTVkcgUGF0dGVybiBwaXhlbGF0ZWQgb24gaW5saW5lIFNWRyB3aXRo
IENTUyB0cmFuc2Zvcm1zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggYjA2NmVjNGE2YmZjMDA4YzM1MWNi
MjMwODg1NDU3OGM4M2I5ZjYwMS4uOTM2N2U1MDliM2E1ZWE4OGI3NmZmMDZjNjJiOWNhOTc4N2Nk
NDkwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAzLTEyICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBTZXQgdXAg
dGhlIGxpYlBsYXRmb3JtR3RrLmxhIGxpYnJhcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTczOAorCisgICAgICAgIFJldmlld2VkIGJ5IE1hcnRp
biBSb2JpbnNvbi4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBSZWZlcmVuY2UgcGxhdGZv
cm1ndGtfY3BwZmxhZ3MgdmFyaWFibGUsIGxpYlBsYXRmb3JtR3RrLmxhIGFsb25nIHdpdGggd2Vi
Y29yZWd0a19jcHBmbGFncyB2YXJpYWJsZSwgbGliV2ViQ29yZUd0ay5sYS4KKyAgICAgICAgQWRq
dXN0IHRoZSBwYXRoIHRvIEd0a1ZlcnNpb25pbmcuYywgdGhlIGZpbGUgaGFzIG1vdmVkIHVuZGVy
IFNvdXJjZS9QbGF0Zm9ybS4KKwogMjAxMy0wMy0wNyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2Vr
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gTGltaXQgdGhlIHN1cHBvcnRlZCBjb21waWxl
cnMgdG8gR0NDID49IDQuNyBhbmQgQ2xhbmcgPj0gMy4wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggN2M1MDkwNmUy
ODMzZGNkYjgxYWI3YjZiMzNiMDg1ZjI4MjllMjJiOC4uM2MzZWJiMWU0ZTIzNmViZjA5MzVmNmI3
Yzg4ZTFhODNkM2NlMTQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAzLTEy
ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBT
ZXQgdXAgdGhlIGxpYlBsYXRmb3JtR3RrLmxhIGxpYnJhcnkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTczOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE1hcnRpbiBSb2JpbnNvbi4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBSZWZlcmVuY2Ug
cGxhdGZvcm1ndGtfY3BwZmxhZ3MgdmFyaWFibGUsIGxpYlBsYXRmb3JtR3RrLmxhIGFsb25nIHdp
dGggd2ViY29yZWd0a19jcHBmbGFncyB2YXJpYWJsZSwgbGliV2ViQ29yZUd0ay5sYS4KKyAgICAg
ICAgQWRqdXN0IHRoZSBwYXRoIHRvIEd0a1ZlcnNpb25pbmcuYywgdGhlIGZpbGUgaGFzIG1vdmVk
IHVuZGVyIFNvdXJjZS9QbGF0Zm9ybS4KKwogMjAxMy0wMy0xMiAgTWlraGFpbCBQb3pkbnlha292
ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KIAogICAgICAgICBbV0syXVtFRkxdIEZp
eCBFd2tDb250ZXh0IGNsYXNzIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL0dOVW1h
a2VmaWxlLmFtIGIvU291cmNlL1BsYXRmb3JtL0dOVW1ha2VmaWxlLmFtCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0
NTU5OGI4MjM5MzRhMjVhZjYwNTZlNDliMTY1M2YyMTE3MWI5MzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvUGxhdGZvcm0vR05VbWFrZWZpbGUuYW0KQEAgLTAsMCArMSwzMyBAQAorIyBUaGUg
cGxhdGZvcm0gbGF5ZXIgY29kZSBpcyBidWlsdCBpbnRvIHR3byBzZXBhcmF0ZSBzdGF0aWMgbGli
cmFyaWVzIC0gbGliUGxhdGZvcm1HdGsubGEKKyMgaXMgYnVpbHQgZnJvbSBmaWxlcyB0aGF0IHJl
cXVpcmUgR1RLKyBhbmQgbGliUGxhdGZvcm0ubGEgaXMgYnVpbHQgZnJvbSBhbGwgdGhlIG90aGVy
IGZpbGVzLgorIyBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGJ1aWxkIHR3byBzZXBhcmF0ZSBs
aWJQbGF0Zm9ybUd0ay5sYSBsaWJyYXJpZXMsIG9uZSB1c2luZyBHVEszCisjIGFuZCB0aGUgb3Ro
ZXIgKG5hbWVkIGxpYlBsYXRmb3JtR3RrMi5sYSkgdXNpbmcgR1RLMi4gVGhlIGxhdHRlciBpcyBy
ZXF1aXJlZCBieSB0aGUKKyMgV2ViS2l0UGx1Z2luUHJvY2VzcyBpbiBXZWJLaXQyIGFzIHNvbWUg
cGx1Z2lucyAoc3VjaCBhcyBGbGFzaCkgc3RpbGwgdXNlIEdUSzIuCisjIEZvciBub3cgd2Ugb25s
eSBidWlsZCB0aGUgbGliUGxhdGZvcm1HdGsgbGlicmFyeSBhcyB0aGVyZSBhcmUgbm8gc291cmNl
IGZpbGVzIGluIHBsYWNlIHlldAorIyB0aGF0IGNvdWxkIGJlIGJ1aWx0IGludG8gbGliUGxhdGZv
cm0uCisKK3BsYXRmb3JtZ3RrX2NwcGZsYWdzICs9IFwKKwktRFdFQktJVEdUS19BUElfVkVSU0lP
Tl9TVFJJTkc9XCJAV0VCS0lUR1RLX0FQSV9WRVJTSU9OQFwiIFwKKwktSSQoc3JjZGlyKS9Tb3Vy
Y2UvUGxhdGZvcm0vZ3RrCisKK25vaW5zdF9MVExJQlJBUklFUyArPSBcCisJbGliUGxhdGZvcm1H
dGsubGEKKworbGliUGxhdGZvcm1HdGtfbGFfU09VUkNFUyA9IFwKKwkkKHBsYXRmb3JtZ3RrX3Nv
dXJjZXMpCisKK2xpYlBsYXRmb3JtR3RrX2xhX0NYWEZMQUdTID0gXAorCS1mdmlzaWJpbGl0eS1p
bmxpbmVzLWhpZGRlciBcCisJJChnbG9iYWxfY3h4ZmxhZ3MpCisKK2xpYlBsYXRmb3JtR3RrX2xh
X0NGTEFHUyA9IFwKKwktZnZpc2liaWxpdHk9aGlkZGVuIFwKKwkkKGdsb2JhbF9jZmxhZ3MpCisK
K2xpYlBsYXRmb3JtR3RrX2xhX0NQUEZMQUdTID0gXAorCS1EQlVJTERJTkdfV0VCS0lUIFwKKwkk
KGdsb2JhbF9jcHBmbGFncykgXAorCSQocGxhdGZvcm1ndGtfY3BwZmxhZ3MpIFwKKwkkKGphdmFz
Y3JpcHRjb3JlX2NwcGZsYWdzKSBcCisJLWZuby1zdHJpY3QtYWxpYXNpbmcgXAorCSQoR1RLX0NG
TEFHUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL1BsYXRmb3JtL0dOVW1ha2VmaWxlLmxpc3QuYW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk2YmVjZmI3
MmUzN2JlZmViNjdhZDU1MThmNjI5ODc5ZWE0NjYzMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9QbGF0Zm9ybS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0wLDAgKzEsMyBAQAorcGxhdGZvcm1n
dGtfc291cmNlcyArPSBcCisJU291cmNlL1BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmMgXAor
CVNvdXJjZS9QbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
UGxhdGZvcm0vZ3RrL0d0a1ZlcnNpb25pbmcuYyBiL1NvdXJjZS9QbGF0Zm9ybS9ndGsvR3RrVmVy
c2lvbmluZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjMmY4NGMyZWY4ODY2YzAzYzA2ZjE2ZGMyMTU5ZmZlYTk5
N2NkYzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vZ3RrL0d0a1ZlcnNpb25p
bmcuYwpAQCAtMCwwICsxLDM4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBDb2xsYWJv
cmEgTHRkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSwgUy5MLgorICoKKyAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aW5jbHVkZSAiR3RrVmVyc2lvbmluZy5oIgorCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorCisjaWZk
ZWYgR0RLX1dJTkRPV0lOR19YMTEKKyNpbmNsdWRlIDxYMTEvWGF0b20uaD4KKyNpbmNsdWRlIDxn
ZGsvZ2RreC5oPgorI2VuZGlmCisKKyNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTQsIDApCit2
b2lkIGd0a19hZGp1c3RtZW50X3NldF92YWx1ZShHdGtBZGp1c3RtZW50KiBhZGp1c21lbnQsIGdk
b3VibGUgdmFsdWUpCit7CisgICAgICAgIG1fYWRqdXN0bWVudC0+dmFsdWUgPSBtX2N1cnJlbnRQ
b3M7CisgICAgICAgIGd0a19hZGp1c3RtZW50X3ZhbHVlX2NoYW5nZWQobV9hZGp1c3RtZW50KTsK
K30KKwordm9pZCBndGtfYWRqdXN0bWVudF9jb25maWd1cmUoR3RrQWRqdXN0bWVudCogYWRqdXN0
bWVudCwgZ2RvdWJsZSB2YWx1ZSwgZ2RvdWJsZSBsb3dlciwgZ2RvdWJsZSB1cHBlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdkb3VibGUgc3RlcEluY3JlbWVudCwgZ2RvdWJsZSBw
YWdlSW5jcmVtZW50LCBnZG91YmxlIHBhZ2VTaXplKQoreworICAgIGdfb2JqZWN0X2ZyZWV6ZV9u
b3RpZnkoR19PQkpFQ1QoYWRqdXN0bWVudCkpOworCisgICAgZ19vYmplY3Rfc2V0KGFkanVzdG1l
bnQsCisgICAgICAgICAgICAgICAgICJsb3dlciIsIGxvd2VyLAorICAgICAgICAgICAgICAgICAi
dXBwZXIiLCB1cHBlciwKKyAgICAgICAgICAgICAgICAgInN0ZXAtaW5jcmVtZW50Iiwgc3RlcElu
Y3JlbWVudCwKKyAgICAgICAgICAgICAgICAgInBhZ2UtaW5jcmVtZW50IiwgcGFnZUluY3JlbWVu
dCwKKyAgICAgICAgICAgICAgICAgInBhZ2Utc2l6ZSIsIHBhZ2VTaXplLAorICAgICAgICAgICAg
ICAgICBOVUxMKTsKKworICAgIGdfb2JqZWN0X3RoYXdfbm90aWZ5KEdfT0JKRUNUKGFkanVzdG1l
bnQpKTsKKworICAgIGd0a19hZGp1c3RtZW50X2NoYW5nZWQoYWRqdXN0bWVudCk7CisgICAgZ3Rr
X2FkanVzdG1lbnRfdmFsdWVfY2hhbmdlZChhZGp1c3RtZW50KTsKK30KKyNlbmRpZgorCitHZGtE
ZXZpY2UgKmdldERlZmF1bHRHREtQb2ludGVyRGV2aWNlKEdka1dpbmRvdyogd2luZG93KQorewor
I2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgorICAgIEdka0RldmljZU1hbmFnZXIgKm1hbmFnZXIg
PSAgZ2RrX2Rpc3BsYXlfZ2V0X2RldmljZV9tYW5hZ2VyKGdka193aW5kb3dfZ2V0X2Rpc3BsYXko
d2luZG93KSk7CisgICAgcmV0dXJuIGdka19kZXZpY2VfbWFuYWdlcl9nZXRfY2xpZW50X3BvaW50
ZXIobWFuYWdlcik7CisjZWxzZQorICAgIHJldHVybiBnZGtfZGV2aWNlX2dldF9jb3JlX3BvaW50
ZXIoKTsKKyNlbmRpZiAvLyBHVEtfQVBJX1ZFUlNJT05fMgorfQorCisjaWYgIUdUS19DSEVDS19W
RVJTSU9OKDIsIDE3LCAzKQordm9pZCBnZGtfd2luZG93X2dldF9yb290X2Nvb3JkcyhHZGtXaW5k
b3cqIHdpbmRvdywgZ2ludCB4LCBnaW50IHksIGdpbnQqIHJvb3RYLCBnaW50KiByb290WSkKK3sK
KyAgICBnZGtfd2luZG93X2dldF9yb290X29yaWdpbih3aW5kb3csIHJvb3RYLCByb290WSk7Cisg
ICAgKnJvb3RYID0gKnJvb3RYICsgeDsKKyAgICAqcm9vdFkgPSAqcm9vdFkgKyB5OworfQorI2Vu
ZGlmCisKK0dka0N1cnNvciAqIGJsYW5rQ3Vyc29yKCkKK3sKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lP
TigyLCAxNiwgMCkKKyAgICByZXR1cm4gZ2RrX2N1cnNvcl9uZXcoR0RLX0JMQU5LX0NVUlNPUik7
CisjZWxzZQorICAgIEdka0N1cnNvciAqIGN1cnNvcjsKKyAgICBHZGtQaXhtYXAgKiBzb3VyY2U7
CisgICAgR2RrUGl4bWFwICogbWFzazsKKyAgICBHZGtDb2xvciBmb3JlZ3JvdW5kID0geyAwLCA2
NTUzNSwgMCwgMCB9OyAvLyBSZWQuCisgICAgR2RrQ29sb3IgYmFja2dyb3VuZCA9IHsgMCwgMCwg
MCwgNjU1MzUgfTsgLy8gQmx1ZS4KKyAgICBzdGF0aWMgZ2NoYXIgY3Vyc29yQml0c1tdID0gezB4
MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwfTsKKworICAgIHNvdXJjZSA9IGdk
a19iaXRtYXBfY3JlYXRlX2Zyb21fZGF0YSgwLCBjdXJzb3JCaXRzLCA4LCA4KTsKKyAgICBtYXNr
ID0gZ2RrX2JpdG1hcF9jcmVhdGVfZnJvbV9kYXRhKDAsIGN1cnNvckJpdHMsIDgsIDgpOworICAg
IGN1cnNvciA9IGdka19jdXJzb3JfbmV3X2Zyb21fcGl4bWFwKHNvdXJjZSwgbWFzaywgJmZvcmVn
cm91bmQsICZiYWNrZ3JvdW5kLCA4LCA4KTsKKyAgICBnZGtfcGl4bWFwX3VucmVmKHNvdXJjZSk7
CisgICAgZ2RrX3BpeG1hcF91bnJlZihtYXNrKTsKKyAgICByZXR1cm4gY3Vyc29yOworI2VuZGlm
IC8vIEdUS19DSEVDS19WRVJTSU9OKDIsIDE2LCAwKQorfQorCisjaWYgIUdUS19DSEVDS19WRVJT
SU9OKDIsIDE2LCAwKQorY29uc3QgZ2NoYXIqIGd0a19tZW51X2l0ZW1fZ2V0X2xhYmVsKEd0a01l
bnVJdGVtKiBtZW51SXRlbSkKK3sKKyAgICBHdGtXaWRnZXQgKiBsYWJlbCA9IGd0a19iaW5fZ2V0
X2NoaWxkKEdUS19CSU4obWVudUl0ZW0pKTsKKyAgICBpZiAoR1RLX0lTX0xBQkVMKGxhYmVsKSkK
KyAgICAgICAgcmV0dXJuIGd0a19sYWJlbF9nZXRfdGV4dChHVEtfTEFCRUwobGFiZWwpKTsKKyAg
ICByZXR1cm4gMDsKK30KKyNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNiwgMCkKKwor
I2lmZGVmIEdUS19BUElfVkVSU0lPTl8yCitzdGF0aWMgY2Fpcm9fZm9ybWF0X3QKK2dka19jYWly
b19mb3JtYXRfZm9yX2NvbnRlbnQoY2Fpcm9fY29udGVudF90IGNvbnRlbnQpCit7CisgICAgc3dp
dGNoIChjb250ZW50KSB7CisgICAgY2FzZSBDQUlST19DT05URU5UX0NPTE9SOgorICAgICAgICBy
ZXR1cm4gQ0FJUk9fRk9STUFUX1JHQjI0OworICAgIGNhc2UgQ0FJUk9fQ09OVEVOVF9BTFBIQToK
KyAgICAgICAgcmV0dXJuIENBSVJPX0ZPUk1BVF9BODsKKyAgICBjYXNlIENBSVJPX0NPTlRFTlRf
Q09MT1JfQUxQSEE6CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIENBSVJPX0ZPUk1BVF9B
UkdCMzI7CisgICAgfQorfQorCitzdGF0aWMgY2Fpcm9fc3VyZmFjZV90KgorZ2RrX2NhaXJvX3N1
cmZhY2VfY29lcmNlX3RvX2ltYWdlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjYWlyb19jb250ZW50X3QgY29udGVudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGhlaWdodCkKK3sKKyAgICBjYWlyb19zdXJmYWNlX3QgKiBj
b3B5OworICAgIGNhaXJvX3QgKiBjcjsKKworICAgIGlmIChjYWlyb19zdXJmYWNlX2dldF90eXBl
KHN1cmZhY2UpID09IENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRQorICAgICAgICAmJiBjYWlyb19z
dXJmYWNlX2dldF9jb250ZW50KHN1cmZhY2UpID09IGNvbnRlbnQKKyAgICAgICAgJiYgY2Fpcm9f
aW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSkgPj0gd2lkdGgKKyAgICAgICAgJiYgY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpID49IGhlaWdodCkKKyAgICAgICAg
cmV0dXJuIGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKHN1cmZhY2UpOworCisgICAgY29weSA9IGNh
aXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKGdka19jYWlyb19mb3JtYXRfZm9yX2NvbnRlbnQoY29u
dGVudCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQpOworCisgICAgY3IgPSBj
YWlyb19jcmVhdGUoY29weSk7CisgICAgY2Fpcm9fc2V0X29wZXJhdG9yKGNyLCBDQUlST19PUEVS
QVRPUl9TT1VSQ0UpOworICAgIGNhaXJvX3NldF9zb3VyY2Vfc3VyZmFjZShjciwgc3VyZmFjZSwg
MCwgMCk7CisgICAgY2Fpcm9fcGFpbnQoY3IpOworICAgIGNhaXJvX2Rlc3Ryb3koY3IpOworCisg
ICAgcmV0dXJuIGNvcHk7Cit9CisKK3N0YXRpYyB2b2lkCitjb252ZXJ0X2FscGhhKGd1Y2hhciAq
IGRlc3REYXRhLCBpbnQgZGVzdFN0cmlkZSwKKyAgICAgICAgICAgICAgZ3VjaGFyICogc3JjRGF0
YSwgaW50IHNyY1N0cmlkZSwKKyAgICAgICAgICAgICAgaW50IHNyY1gsIGludCBzcmNZLCBpbnQg
d2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgaW50IHgsIHk7CisKKyAgICBzcmNEYXRhICs9IHNy
Y1N0cmlkZSAqIHNyY1kgKyBzcmNZICogNDsKKworICAgIGZvciAoeSA9IDA7IHkgPCBoZWlnaHQ7
IHkrKykgeworICAgICAgICBndWludDMyICogc3JjID0gKGd1aW50MzIgKikgc3JjRGF0YTsKKwor
ICAgICAgICBmb3IgKHggPSAwOyB4IDwgd2lkdGg7IHgrKykgeworICAgICAgICAgICAgZ3VpbnQg
YWxwaGEgPSBzcmNbeF0gPj4gMjQ7CisKKyAgICAgICAgICAgIGlmICghYWxwaGEpIHsKKyAgICAg
ICAgICAgICAgICBkZXN0RGF0YVt4ICogNCArIDBdID0gMDsKKyAgICAgICAgICAgICAgICBkZXN0
RGF0YVt4ICogNCArIDFdID0gMDsKKyAgICAgICAgICAgICAgICBkZXN0RGF0YVt4ICogNCArIDJd
ID0gMDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGVzdERhdGFbeCAq
IDQgKyAwXSA9ICgoKHNyY1t4XSAmIDB4ZmYwMDAwKSA+PiAxNikgKiAyNTUgKyBhbHBoYSAvIDIp
IC8gYWxwaGE7CisgICAgICAgICAgICAgICAgZGVzdERhdGFbeCAqIDQgKyAxXSA9ICgoKHNyY1t4
XSAmIDB4MDBmZjAwKSA+PiAgOCkgKiAyNTUgKyBhbHBoYSAvIDIpIC8gYWxwaGE7CisgICAgICAg
ICAgICAgICAgZGVzdERhdGFbeCAqIDQgKyAyXSA9ICgoKHNyY1t4XSAmIDB4MDAwMGZmKSA+PiAg
MCkgKiAyNTUgKyBhbHBoYSAvIDIpIC8gYWxwaGE7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBkZXN0RGF0YVt4ICogNCArIDNdID0gYWxwaGE7CisgICAgICAgIH0KKworICAgICAgICBzcmNE
YXRhICs9IHNyY1N0cmlkZTsKKyAgICAgICAgZGVzdERhdGEgKz0gZGVzdFN0cmlkZTsKKyAgICB9
Cit9CisKK3N0YXRpYyB2b2lkCitjb252ZXJ0X25vX2FscGhhKGd1Y2hhciAqIGRlc3REYXRhLCBp
bnQgZGVzdFN0cmlkZSwgZ3VjaGFyICogc3JjRGF0YSwKKyAgICAgICAgICAgICAgICAgaW50IHNy
Y1N0cmlkZSwgaW50IHNyY1gsIGludCBzcmNZLAorICAgICAgICAgICAgICAgICBpbnQgd2lkdGgs
IGludCBoZWlnaHQpCit7CisgICAgaW50IHgsIHk7CisKKyAgICBzcmNEYXRhICs9IHNyY1N0cmlk
ZSAqIHNyY1kgKyBzcmNYICogNDsKKworICAgIGZvciAoeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykg
eworICAgICAgICBndWludDMyICogc3JjID0gKGd1aW50MzIgKikgc3JjRGF0YTsKKworICAgICAg
ICBmb3IgKHggPSAwOyB4IDwgd2lkdGg7IHgrKykgeworICAgICAgICAgICAgZGVzdERhdGFbeCAq
IDMgKyAwXSA9IHNyY1t4XSA+PiAxNjsKKyAgICAgICAgICAgIGRlc3REYXRhW3ggKiAzICsgMV0g
PSBzcmNbeF0gPj4gIDg7CisgICAgICAgICAgICBkZXN0RGF0YVt4ICogMyArIDJdID0gc3JjW3hd
OworICAgICAgICB9CisKKyAgICAgICAgc3JjRGF0YSArPSBzcmNTdHJpZGU7CisgICAgICAgIGRl
c3REYXRhICs9IGRlc3RTdHJpZGU7CisgICAgfQorfQorCisvKioKKyAqIGdka19waXhidWZfZ2V0
X2Zyb21fc3VyZmFjZToKKyAqIEBzdXJmYWNlOiBzdXJmYWNlIHRvIGNvcHkgZnJvbQorICogQHNy
Y194OiBTb3VyY2UgWCBjb29yZGluYXRlIHdpdGhpbiBAc3VyZmFjZQorICogQHNyY195OiBTb3Vy
Y2UgWSBjb29yZGluYXRlIHdpdGhpbiBAc3VyZmFjZQorICogQHdpZHRoOiBXaWR0aCBpbiBwaXhl
bHMgb2YgcmVnaW9uIHRvIGdldAorICogQGhlaWdodDogSGVpZ2h0IGluIHBpeGVscyBvZiByZWdp
b24gdG8gZ2V0CisgKgorICogVHJhbnNmZXJzIGltYWdlIGRhdGEgZnJvbSBhICNjYWlyb19zdXJm
YWNlX3QgYW5kIGNvbnZlcnRzIGl0IHRvIGFuIFJHQihBKQorICogcmVwcmVzZW50YXRpb24gaW5z
aWRlIGEgI0dka1BpeGJ1Zi4gVGhpcyBhbGxvd3MgeW91IHRvIGVmZmljaWVudGx5IHJlYWQKKyAq
IGluZGl2aWR1YWwgcGl4ZWxzIGZyb20gY2Fpcm8gc3VyZmFjZXMuIEZvciAjR2RrV2luZG93cywg
dXNlCisgKiBnZGtfcGl4YnVmX2dldF9mcm9tX3dpbmRvdygpIGluc3RlYWQuCisgKgorICogVGhp
cyBmdW5jdGlvbiB3aWxsIGNyZWF0ZSBhbiBSR0IgcGl4YnVmIHdpdGggOCBiaXRzIHBlciBjaGFu
bmVsLiBUaGUgcGl4YnVmCisgKiB3aWxsIGNvbnRhaW4gYW4gYWxwaGEgY2hhbm5lbCBpZiB0aGUg
QHN1cmZhY2UgY29udGFpbnMgb25lLgorICoKKyAqIFJldHVybiB2YWx1ZTogKHRyYW5zZmVyIGZ1
bGwpOiBBIG5ld2x5LWNyZWF0ZWQgcGl4YnVmIHdpdGggYSByZWZlcmVuY2UgY291bnQKKyAqIG9m
IDEsIG9yICVOVUxMIG9uIGVycm9yCisgKiovCitHZGtQaXhidWYqCitnZGtfcGl4YnVmX2dldF9m
cm9tX3N1cmZhY2UoY2Fpcm9fc3VyZmFjZV90ICogc3VyZmFjZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgc3JjWCwgaW50IHNyY1ksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIGNhaXJvX2NvbnRlbnRfdCBjb250ZW50
OworICAgIEdka1BpeGJ1ZiAqIGRlc3Q7CisKKyAgICAvKiBHZW5lcmFsIHNhbml0eSBjaGVja3Mg
Ki8KKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzdXJmYWNlLCBOVUxMKTsKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChzcmNYID49IDAgJiYgc3JjWSA+PSAwLCBOVUxMKTsKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbCh3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCwgTlVMTCk7CisKKyAgICBjb250
ZW50ID0gY2Fpcm9fc3VyZmFjZV9nZXRfY29udGVudChzdXJmYWNlKSB8IENBSVJPX0NPTlRFTlRf
Q09MT1I7CisgICAgZGVzdCA9IGdka19waXhidWZfbmV3KEdES19DT0xPUlNQQUNFX1JHQiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgISEoY29udGVudCAmIENBSVJPX0NPTlRFTlRfQUxQSEEp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICA4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICB3aWR0aCwgaGVpZ2h0KTsKKworICAgIHN1cmZhY2UgPSBnZGtfY2Fpcm9fc3VyZmFjZV9jb2Vy
Y2VfdG9faW1hZ2Uoc3VyZmFjZSwgY29udGVudCwgc3JjWCArIHdpZHRoLCBzcmNZICsgaGVpZ2h0
KTsKKyAgICBjYWlyb19zdXJmYWNlX2ZsdXNoKHN1cmZhY2UpOworICAgIGlmIChjYWlyb19zdXJm
YWNlX3N0YXR1cyhzdXJmYWNlKSB8fCAhZGVzdCkgeworICAgICAgICBjYWlyb19zdXJmYWNlX2Rl
c3Ryb3koc3VyZmFjZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChn
ZGtfcGl4YnVmX2dldF9oYXNfYWxwaGEoZGVzdCkpCisgICAgICAgIGNvbnZlcnRfYWxwaGEoZ2Rr
X3BpeGJ1Zl9nZXRfcGl4ZWxzKGRlc3QpLAorICAgICAgICAgICAgICAgICAgICAgICBnZGtfcGl4
YnVmX2dldF9yb3dzdHJpZGUoZGVzdCksCisgICAgICAgICAgICAgICAgICAgICAgIGNhaXJvX2lt
YWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSksCisgICAgICAgICAgICAgICAgICAgICAgIGNh
aXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3N0cmlkZShzdXJmYWNlKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgc3JjWCwgc3JjWSwKKyAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCk7
CisgICAgZWxzZQorICAgICAgICBjb252ZXJ0X25vX2FscGhhKGdka19waXhidWZfZ2V0X3BpeGVs
cyhkZXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RrX3BpeGJ1Zl9nZXRfcm93c3Ry
aWRlKGRlc3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjYWlyb19pbWFnZV9zdXJmYWNl
X2dldF9kYXRhKHN1cmZhY2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF9zdHJpZGUoc3VyZmFjZSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
IHNyY1gsIHNyY1ksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQpOwor
CisgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KHN1cmZhY2UpOworICAgIHJldHVybiBkZXN0Owor
fQorCisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMiwgMjQsIDApCit2b2lkIGdldEdka0RyYXdhYmxl
U2l6ZShHZGtEcmF3YWJsZSAqZHJhd2FibGUsIGludCAqd2lkdGgsIGludCAqaGVpZ2h0KQorewor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoR0RLX0lTX1BJWE1BUChkcmF3YWJsZSkgfHwgR0RLX0lTX1dJ
TkRPVyhkcmF3YWJsZSkpOworCisgICAgaWYgKEdES19JU19QSVhNQVAoZHJhd2FibGUpKSB7Cisg
ICAgICAgIGdka19waXhtYXBfZ2V0X3NpemUoR0RLX1BJWE1BUChkcmF3YWJsZSksIHdpZHRoLCBo
ZWlnaHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR2RrV2luZG93ICp3aW5kb3cg
PSBHREtfV0lORE9XKGRyYXdhYmxlKTsKKyAgICAqd2lkdGggPSBnZGtfd2luZG93X2dldF93aWR0
aCh3aW5kb3cpOworICAgICpoZWlnaHQgPSBnZGtfd2luZG93X2dldF9oZWlnaHQod2luZG93KTsK
K30KKyNlbHNlCit2b2lkIGdldEdka0RyYXdhYmxlU2l6ZShHZGtEcmF3YWJsZSAqZHJhd2FibGUs
IGludCAqd2lkdGgsIGludCAqaGVpZ2h0KQoreworICAgIGdka19kcmF3YWJsZV9nZXRfc2l6ZShk
cmF3YWJsZSwgd2lkdGgsIGhlaWdodCk7Cit9CisjZW5kaWYgLy8gR1RLX0NIRUNLX1ZFUlNJT04o
MiwgMjQsIDApCisKKyNlbmRpZiAvLyBHVEtfQVBJX1ZFUlNJT05fMgorCisjaWYgIUdMSUJfQ0hF
Q0tfVkVSU0lPTigyLCAyNywgMSkKK2dib29sZWFuIGdfc2lnbmFsX2FjY3VtdWxhdG9yX2ZpcnN0
X3dpbnMoR1NpZ25hbEludm9jYXRpb25IaW50ICppbnZvY2F0aW9uSGludCwgR1ZhbHVlICpyZXR1
cm5BY2N1bXVsYXRvciwgY29uc3QgR1ZhbHVlICpoYW5kbGVyUmV0dXJuLCBncG9pbnRlciBkYXRh
KQoreworICAgIGdfdmFsdWVfY29weShoYW5kbGVyUmV0dXJuLCByZXR1cm5BY2N1bXVsYXRvcik7
CisgICAgcmV0dXJuIEZBTFNFOworfQorI2VuZGlmCisKKyNpZiAhR1RLX0NIRUNLX1ZFUlNJT04o
MiwgMjIsIDApCitjYWlyb19zdXJmYWNlX3QgKmdka193aW5kb3dfY3JlYXRlX3NpbWlsYXJfc3Vy
ZmFjZShHZGtXaW5kb3cgKndpbmRvdywgY2Fpcm9fY29udGVudF90IGNvbnRlbnQsIGludCB3aWR0
aCwgaW50IGhlaWdodCkKK3sKKyAgICBjYWlyb190ICpjYWlyb0NvbnRleHQgPSBnZGtfY2Fpcm9f
Y3JlYXRlKHdpbmRvdyk7CisgICAgY2Fpcm9fc3VyZmFjZV90ICpjYWlyb1N1cmZhY2UgPSBjYWly
b19nZXRfdGFyZ2V0KGNhaXJvQ29udGV4dCk7CisgICAgY2Fpcm9fc3VyZmFjZV90ICpuZXdTdXJm
YWNlID0gY2Fpcm9fc3VyZmFjZV9jcmVhdGVfc2ltaWxhcihjYWlyb1N1cmZhY2UsIGNvbnRlbnQs
IHdpZHRoLCBoZWlnaHQpOworICAgIGNhaXJvX2Rlc3Ryb3koY2Fpcm9Db250ZXh0KTsKKyAgICBy
ZXR1cm4gbmV3U3VyZmFjZTsKK30KKyNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAyMiwg
MCkKKworI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigzLCAzLCA2KQorI2lmZGVmIEdES19XSU5ET1dJ
TkdfWDExCitzdGF0aWMgaW50IGdldFNjcmVlbkN1cnJlbnREZXNrdG9wKEdka1NjcmVlbiAqc2Ny
ZWVuKQoreworICAgIERpc3BsYXkgKmRpc3BsYXkgPSBHREtfRElTUExBWV9YRElTUExBWShnZGtf
c2NyZWVuX2dldF9kaXNwbGF5KHNjcmVlbikpOworICAgIFdpbmRvdyByb290V2luZG93ID0gWFJv
b3RXaW5kb3coZGlzcGxheSwgR0RLX1NDUkVFTl9YTlVNQkVSKHNjcmVlbikpOworICAgIEF0b20g
Y3VycmVudERlc2t0b3AgPSBYSW50ZXJuQXRvbShkaXNwbGF5LCAiX05FVF9DVVJSRU5UX0RFU0tU
T1AiLCBUcnVlKTsKKworICAgIEF0b20gdHlwZTsKKyAgICBpbnQgZm9ybWF0OworICAgIHVuc2ln
bmVkIGxvbmcgaXRlbXNDb3VudCwgYnl0ZXNBZnRlcjsKKyAgICB1bnNpZ25lZCBjaGFyICpyZXR1
cm5lZERhdGEgPSBOVUxMOworICAgIFhHZXRXaW5kb3dQcm9wZXJ0eShkaXNwbGF5LCByb290V2lu
ZG93LCBjdXJyZW50RGVza3RvcCwgMCwgR19NQVhMT05HLCBGYWxzZSwgWEFfQ0FSRElOQUwsCisg
ICAgICAgICAgICAgICAgICAgICAgICZ0eXBlLCAmZm9ybWF0LCAmaXRlbXNDb3VudCwgJmJ5dGVz
QWZ0ZXIsICZyZXR1cm5lZERhdGEpOworCisgICAgaW50IHdvcmtzcGFjZSA9IDA7CisgICAgaWYg
KHR5cGUgPT0gWEFfQ0FSRElOQUwgJiYgZm9ybWF0ID09IDMyICYmIGl0ZW1zQ291bnQgPiAwKQor
ICAgICAgICB3b3Jrc3BhY2UgPSAoaW50KXJldHVybmVkRGF0YVswXTsKKworICAgIGlmIChyZXR1
cm5lZERhdGEpCisgICAgICAgIFhGcmVlKHJldHVybmVkRGF0YSk7CisKKyAgICByZXR1cm4gd29y
a3NwYWNlOworfQorCitzdGF0aWMgdm9pZCBnZXRTY3JlZW5Xb3JrQXJlYShHZGtTY3JlZW4gKnNj
cmVlbiwgR2RrUmVjdGFuZ2xlICphcmVhKQoreworICAgIERpc3BsYXkgKmRpc3BsYXkgPSBHREtf
RElTUExBWV9YRElTUExBWShnZGtfc2NyZWVuX2dldF9kaXNwbGF5KHNjcmVlbikpOworICAgIEF0
b20gd29ya0FyZWEgPSBYSW50ZXJuQXRvbShkaXNwbGF5LCAiX05FVF9XT1JLQVJFQSIsIFRydWUp
OworCisgICAgLyogRGVmYXVsdHMgaW4gY2FzZSBvZiBlcnJvci4gKi8KKyAgICBhcmVhLT54ID0g
MDsKKyAgICBhcmVhLT55ID0gMDsKKyAgICBhcmVhLT53aWR0aCA9IGdka19zY3JlZW5fZ2V0X3dp
ZHRoKHNjcmVlbik7CisgICAgYXJlYS0+aGVpZ2h0ID0gZ2RrX3NjcmVlbl9nZXRfaGVpZ2h0KHNj
cmVlbik7CisKKyAgICBpZiAod29ya0FyZWEgPT0gTm9uZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgV2luZG93IHJvb3RXaW5kb3cgPSBYUm9vdFdpbmRvdyhkaXNwbGF5LCBHREtfU0NSRUVOX1hO
VU1CRVIoc2NyZWVuKSk7CisgICAgQXRvbSB0eXBlOworICAgIGludCBmb3JtYXQ7CisgICAgdW5z
aWduZWQgbG9uZyBpdGVtc0NvdW50LCBieXRlc0FmdGVyOworICAgIHVuc2lnbmVkIGNoYXIgKnJl
dHVybmVkRGF0YSA9IDA7CisgICAgaW50IHJlc3VsdCA9IFhHZXRXaW5kb3dQcm9wZXJ0eShkaXNw
bGF5LCByb290V2luZG93LCB3b3JrQXJlYSwgMCwgNCAqIDMyIC8qIE1heCBsZW5ndGggKi8sIEZh
bHNlLCBBbnlQcm9wZXJ0eVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmdHlwZSwgJmZvcm1hdCwgJml0ZW1zQ291bnQsICZieXRlc0FmdGVyLCAmcmV0dXJuZWREYXRh
KTsKKyAgICBpZiAocmVzdWx0ICE9IFN1Y2Nlc3MgfHwgdHlwZSA9PSBOb25lIHx8ICFmb3JtYXQg
fHwgYnl0ZXNBZnRlciB8fCBpdGVtc0NvdW50ICUgNCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aW50IGRlc2t0b3AgPSBnZXRTY3JlZW5DdXJyZW50RGVza3RvcChzY3JlZW4pOworICAgIGxvbmcg
KndvcmtBcmVhcyA9IChsb25nICopcmV0dXJuZWREYXRhOworICAgIGFyZWEtPnggPSB3b3JrQXJl
YXNbZGVza3RvcCAqIDRdOworICAgIGFyZWEtPnkgPSB3b3JrQXJlYXNbZGVza3RvcCAqIDQgKyAx
XTsKKyAgICBhcmVhLT53aWR0aCA9IHdvcmtBcmVhc1tkZXNrdG9wICogNCArIDJdOworICAgIGFy
ZWEtPmhlaWdodCA9IHdvcmtBcmVhc1tkZXNrdG9wICogNCArIDNdOworCisgICAgWEZyZWUocmV0
dXJuZWREYXRhKTsKK30KKyNlbmRpZiAvLyBHREtfV0lORE9XSU5HX1gxMQorCit2b2lkIGdka19z
Y3JlZW5fZ2V0X21vbml0b3Jfd29ya2FyZWEoR2RrU2NyZWVuICpzY3JlZW4sIGludCBtb25pdG9y
LCBHZGtSZWN0YW5nbGUgKmFyZWEpCit7CisgICAgZ2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9nZW9t
ZXRyeShzY3JlZW4sIG1vbml0b3IsIGFyZWEpOworCisjaWZkZWYgR0RLX1dJTkRPV0lOR19YMTEK
KyAgICBHZGtSZWN0YW5nbGUgd29ya0FyZWE7CisgICAgZ2V0U2NyZWVuV29ya0FyZWEoc2NyZWVu
LCAmd29ya0FyZWEpOworICAgIGdka19yZWN0YW5nbGVfaW50ZXJzZWN0KCZ3b3JrQXJlYSwgYXJl
YSwgYXJlYSk7CisjZW5kaWYKK30KKyNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVSU0lPTigzLCAzLCA2
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmggYi9Tb3Vy
Y2UvUGxhdGZvcm0vZ3RrL0d0a1ZlcnNpb25pbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lM2NhYzYzM2EwZDE1
YmQ5NzgwM2QwNWIxNmU1ZjYzNDEyNTNhOGE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Bs
YXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmgKQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQ29sbGFib3JhIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2Fs
aWEsIFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBHdGtWZXJzaW9uaW5nX2gKKyNkZWZpbmUgR3Rr
VmVyc2lvbmluZ19oCisKKyNpbmNsdWRlICJhdXRvdG9vbHNjb25maWcuaCIKKyNpbmNsdWRlIDxn
dGsvZ3RrLmg+CisKKyNpZm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIKKyNpbmNsdWRlIDxnZGsvZ2Rr
a2V5c3ltcy1jb21wYXQuaD4KKyNlbmRpZgorCitHX0JFR0lOX0RFQ0xTCisKKy8vIE1hY3JvcyB0
byBhdm9pZCBkZXByZWNhdGlvbiBjaGVja2luZyBjaHVybgorI2lmbmRlZiBHVEtfQVBJX1ZFUlNJ
T05fMgorI2RlZmluZSBHREtfV0lORE9XX1hXSU5ET1cod2luZG93KSAoZ2RrX3gxMV93aW5kb3df
Z2V0X3hpZCh3aW5kb3cpKQorI2Vsc2UKK0dka1BpeGJ1ZiogZ2RrX3BpeGJ1Zl9nZXRfZnJvbV9z
dXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgaW50IHNyY1gsIGludCBzcmNZLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KTsKK3ZvaWQgZ2V0R2RrRHJhd2FibGVTaXplKEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgaW50KiB3
aWR0aCwgaW50KiBoZWlnaHQpOworI2VuZGlmCisKKyNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMiwg
MjMsIDQpCisjZGVmaW5lIGdka19waXhtYXBfZ2V0X3NpemUgZ2RrX2RyYXdhYmxlX2dldF9zaXpl
CisjZW5kaWYgLy8gR1RLX0NIRUNLX1ZFUlNJT04oMiwgMjMsIDQpCisKKyNpZiAhR1RLX0NIRUNL
X1ZFUlNJT04oMiwgMjMsIDApCisjZGVmaW5lIGdka193aW5kb3dfZ2V0X2Rpc3BsYXkod2luZG93
KSBnZGtfZHJhd2FibGVfZ2V0X2Rpc3BsYXkod2luZG93KQorI2RlZmluZSBnZGtfd2luZG93X2dl
dF92aXN1YWwgZ2RrX2RyYXdhYmxlX2dldF92aXN1YWwKKyNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVS
U0lPTigyLCAyMywgMCkKKworI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigyLCAyMiwgMCkKK2NhaXJv
X3N1cmZhY2VfdCogZ2RrX3dpbmRvd19jcmVhdGVfc2ltaWxhcl9zdXJmYWNlKEdka1dpbmRvdyog
d2luZG93LCBjYWlyb19jb250ZW50X3QgY29udGVudCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsK
KyNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAyMiwgMCkKKworI2lmICFHVEtfQ0hFQ0tf
VkVSU0lPTigyLCAyMSwgMikKKyNkZWZpbmUgZ2RrX3Zpc3VhbF9nZXRfZGVwdGgodmlzdWFsKSAo
dmlzdWFsKS0+ZGVwdGgKKyNkZWZpbmUgZ2RrX3Zpc3VhbF9nZXRfYml0c19wZXJfcmdiKHZpc3Vh
bCkgKHZpc3VhbCktPmJpdHNfcGVyX3JnYgorI2RlZmluZSBnZGtfZHJhZ19jb250ZXh0X2dldF9z
ZWxlY3RlZF9hY3Rpb24oY29udGV4dCkgKGNvbnRleHQpLT5hY3Rpb24KKyNkZWZpbmUgZ2RrX2Ry
YWdfY29udGV4dF9nZXRfYWN0aW9ucyhjb250ZXh0KSAoY29udGV4dCktPmFjdGlvbnMKKyNlbmRp
ZiAvLyBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAyMSwgMikKKworI2lmICFHVEtfQ0hFQ0tfVkVSU0lP
TigyLCAyMCwgMCkKKyNkZWZpbmUgZ3RrX3dpZGdldF9nZXRfcmVhbGl6ZWQod2lkZ2V0KSBHVEtf
V0lER0VUX1JFQUxJWkVEKHdpZGdldCkKKyNkZWZpbmUgZ3RrX3dpZGdldF9zZXRfcmVhbGl6ZWQo
d2lkZ2V0LCBUUlVFKSBHVEtfV0lER0VUX1NFVF9GTEFHUygod2lkZ2V0KSwgR1RLX1JFQUxJWkVE
KQorI2RlZmluZSBndGtfcmFuZ2VfZ2V0X21pbl9zbGlkZXJfc2l6ZShyYW5nZSkgKHJhbmdlKS0+
bWluX3NsaWRlcl9zaXplCisjZW5kaWYgLy8gR1RLX0NIRUNLX1ZFUlNJT04oMiwgMjAsIDApCisK
KyNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTksIDApCisjZGVmaW5lIGd0a193aWRnZXRfaXNf
dG9wbGV2ZWwod2lkZ2V0KSBHVEtfV0lER0VUX1RPUExFVkVMKHdpZGdldCkKKyNkZWZpbmUgZ3Rr
X3dpZGdldF9nZXRfcmVhbGl6ZWQod2lkZ2V0KSBHVEtfV0lER0VUX1JFQUxJWkVEKHdpZGdldCkK
KyNkZWZpbmUgZ3RrX3dpZGdldF9nZXRfaGFzX3dpbmRvdyh3aWRnZXQpICFHVEtfV0lER0VUX05P
X1dJTkRPVyh3aWRnZXQpCisjZGVmaW5lIGd0a193aWRnZXRfZ2V0X2Nhbl9mb2N1cyh3aWRnZXQp
IEdUS19XSURHRVRfQ0FOX0ZPQ1VTKHdpZGdldCkKKyNkZWZpbmUgZ3RrX3dpZGdldF9pc19zZW5z
aXRpdmUod2lkZ2V0KSBHVEtfV0lER0VUX0lTX1NFTlNJVElWRSh3aWRnZXQpCisjZW5kaWYgLy8g
R1RLX0NIRUNLX1ZFUlNJT04oMiwgMTksIDApCisKKyNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMiwg
MTgsIDApCisjZGVmaW5lIGd0a193aWRnZXRfc2V0X3Zpc2libGUod2lkZ2V0LCBGQUxTRSkgR1RL
X1dJREdFVF9VTlNFVF9GTEFHUygod2lkZ2V0KSwgR1RLX1ZJU0lCTEUpCisjZGVmaW5lIGd0a193
aWRnZXRfZ2V0X3Zpc2libGUod2lkZ2V0KSAoR1RLX1dJREdFVF9GTEFHUyh3aWRnZXQpICYgR1RL
X1ZJU0lCTEUpCisKKyNkZWZpbmUgZ3RrX3dpZGdldF9zZXRfd2luZG93KHdpZGdldCwgbmV3X3dp
bmRvdykgKHdpZGdldCktPndpbmRvdyA9IChuZXdfd2luZG93KQorI2RlZmluZSBndGtfd2lkZ2V0
X3NldF9jYW5fZm9jdXMod2lkZ2V0LCBUUlVFKSBHVEtfV0lER0VUX1NFVF9GTEFHUygod2lkZ2V0
KSwgR1RLX0NBTl9GT0NVUykKKyNkZWZpbmUgZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGlvbih3aWRn
ZXQsIGFsbG9jKSAoKihhbGxvYykgPSAod2lkZ2V0KS0+YWxsb2NhdGlvbikKKyNkZWZpbmUgZ3Rr
X3dpZGdldF9zZXRfYWxsb2NhdGlvbih3aWRnZXQsIGFsbG9jKSAoKHdpZGdldCktPmFsbG9jYXRp
b24gPSAqKGFsbG9jKSkKKyNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxOCwgMCkKKwor
I2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNywgMykKK3ZvaWQgZ2RrX3dpbmRvd19nZXRfcm9v
dF9jb29yZHMoR2RrV2luZG93KiB3aW5kb3csIGdpbnQgeCwgZ2ludCB5LCBnaW50KiByb290WCwg
Z2ludCogcm9vdFkpOworI2VuZGlmIC8vIEdUS19DSEVDS19WRVJTSU9OKDIsIDE3LCAzKQorCisj
aWYgIUdUS19DSEVDS19WRVJTSU9OKDIsIDE2LCAwKQorY29uc3QgZ2NoYXIqIGd0a19tZW51X2l0
ZW1fZ2V0X2xhYmVsKEd0a01lbnVJdGVtKik7CisjZW5kaWYgLy8gR1RLX0NIRUNLX1ZFUlNJT04o
MiwgMTYsIDApCisKKworI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNCwgMCkKKyNkZWZpbmUg
Z3RrX3dpZGdldF9nZXRfd2luZG93KHdpZGdldCkgKHdpZGdldCktPndpbmRvdworI2RlZmluZSBn
dGtfYWRqdXN0bWVudF9nZXRfdmFsdWUoYWRqKSAoYWRqKS0+dmFsdWUKKyNkZWZpbmUgZ3RrX2Rp
YWxvZ19nZXRfY29udGVudF9hcmVhKGRpYWxvZykgKGRpYWxvZyktPnZib3gKKyNkZWZpbmUgZ3Rr
X2RpYWxvZ19nZXRfYWN0aW9uX2FyZWEoZGlhbG9nKSAoZGlhbG9nKS0+YWN0aW9uX2FyZWEKKyNk
ZWZpbmUgZ3RrX3NlbGVjdGlvbl9kYXRhX2dldF9sZW5ndGgoZGF0YSkgKGRhdGEpLT5sZW5ndGgK
KyNkZWZpbmUgZ3RrX3NlbGVjdGlvbl9kYXRhX2dldF9kYXRhKGRhdGEpIChkYXRhKS0+ZGF0YQor
I2RlZmluZSBndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X3RhcmdldChkYXRhKSAoZGF0YSktPnRhcmdl
dAorI2RlZmluZSBndGtfYWRqdXN0bWVudF9zZXRfcGFnZV9zaXplKGFkaiwgbmV3VmFsdWUpICgo
YWRqKS0+cGFnZV9zaXplID0gbmV3VmFsdWUpCisjZGVmaW5lIGd0a19hZGp1c3RtZW50X3NldF92
YWx1ZShhZGosIG5ld1ZhbHVlKSAoKGFkaiktPnZhbHVlID0gbmV3VmFsdWUpCisjZGVmaW5lIGd0
a19hZGp1c3RtZW50X3NldF9sb3dlcihhZGosIG5ld1ZhbHVlKSAoKGFkaiktPmxvd2VyID0gbmV3
VmFsdWUpCisjZGVmaW5lIGd0a19hZGp1c3RtZW50X3NldF91cHBlcihhZGosIG5ld1ZhbHVlKSAo
KGFkaiktPnVwcGVyID0gbmV3VmFsdWUpCisKK3ZvaWQgZ3RrX2FkanVzdG1lbnRfY29uZmlndXJl
KEd0a0FkanVzdG1lbnQqIGFkanVzdG1lbnQsIGdkb3VibGUgdmFsdWUsIGdkb3VibGUgbG93ZXIs
IGdkb3VibGUgdXBwZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZG91YmxlIHN0
ZXBJbmNyZW1lbnQsIGdkb3VibGUgcGFnZUluY3JlbWVudCwgZ2RvdWJsZSBwYWdlU2l6ZSk7CisK
K3ZvaWQgZ3RrX2FkanVzdG1lbnRfc2V0X3ZhbHVlKEd0a0FkanVzdG1lbnQqIGFkanVzbWVudCwg
Z2RvdWJsZSB2YWx1ZSk7CisjZW5kaWYgLy8gR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTQsIDApCisK
K0dka0RldmljZSogZ2V0RGVmYXVsdEdES1BvaW50ZXJEZXZpY2UoR2RrV2luZG93KiB3aW5kb3cp
OworR2RrQ3Vyc29yKiBibGFua0N1cnNvcigpOworCisjaWYgIUdMSUJfQ0hFQ0tfVkVSU0lPTigy
LCAyNywgMSkKK2dib29sZWFuIGdfc2lnbmFsX2FjY3VtdWxhdG9yX2ZpcnN0X3dpbnMoR1NpZ25h
bEludm9jYXRpb25IaW50KiBpbnZvY2F0aW9uSGludCwgR1ZhbHVlKiByZXR1cm5BY2N1bXVsYXRv
ciwgY29uc3QgR1ZhbHVlKiBoYW5kbGVyUmV0dXJuLCBncG9pbnRlciBkYXRhKTsKKyNlbmRpZgor
CisjaWYgIUdUS19DSEVDS19WRVJTSU9OKDMsIDMsIDYpCit2b2lkIGdka19zY3JlZW5fZ2V0X21v
bml0b3Jfd29ya2FyZWEoR2RrU2NyZWVuICosIGludCBtb25pdG9yLCBHZGtSZWN0YW5nbGUgKmFy
ZWEpOworI2VuZGlmCisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvLyBHdGtWZXJzaW9uaW5nX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KaW5kZXggMmIwNzNiNzQxNjhkYjliMDEzNTRiN2FmMzkxZTViYWU4
MjdhOTVmNC4uOTNlZmQ1NTY4ZmVlZmRlNDgyMzU5MjkyMjE5OGFjZDdlYzdkY2Y0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KQEAgLTE3Miw2ICsxNzIsNyBAQCBsaWJXZWJDb3JlU1ZHX2xhX0NQUEZM
QUdTID0gXAogCS1EQlVJTERJTkdfV2ViQ29yZSBcCiAJLURCVUlMRElOR19XRUJLSVQgXAogCSQo
Z2xvYmFsX2NwcGZsYWdzKSBcCisJJChwbGF0Zm9ybWd0a19jcHBmbGFncykgXAogCSQod2ViY29y
ZV9jcHBmbGFncykgXAogCSQod2ViY29yZWd0a19jcHBmbGFncykgXAogCSQoamF2YXNjcmlwdGNv
cmVfY3BwZmxhZ3MpIFwKQEAgLTQyMiw3ICs0MjMsNyBAQCBEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRlZC5oOiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0lu
dAogIyBJREwgZ2VuZXJhdGlvbiB0YWtlcyBhIGxvbmcgdGltZS4gVGhlIHBpcGUgcmVwcmVzZW50
cyBhbiBvcmRlci1vbmx5IGRlcGVuZGVuY3ksCiAjIHdoaWNoIG1lYW5zIHRoYXQgR05VbWFrZSB3
aWxsIG9ubHkgdHJ5IHRvIGJ1aWxkIHRoZSBkZXBlbmRlbmNpZXMgZmlyc3QsIGJ1dAogIyBub3Qg
cmVidWlsZCBhbGwgdGhlIHRhcmdldHMgaWYgdGhlIGRlcGVuZGVuY2llcyBjaGFuZ2UuCi0kKHdl
YmtpdGd0a19zb3VyY2VzKSAkKHdlYmtpdDJfc291cmNlcykgJCh3ZWJraXQyX3BsdWdpbl9wcm9j
ZXNzX3NvdXJjZXMpICQod2ViY29yZV9zb3VyY2VzKSAkKHdlYmNvcmVndGtfc291cmNlcykgOiB8
ICQoc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZSkgJCh3ZWJjb3JlX2J1aWx0X3NvdXJjZXMp
CiskKHdlYmtpdGd0a19zb3VyY2VzKSAkKHdlYmtpdDJfc291cmNlcykgJCh3ZWJraXQyX3BsdWdp
bl9wcm9jZXNzX3NvdXJjZXMpICQod2ViY29yZV9zb3VyY2VzKSAkKHdlYmNvcmVndGtfc291cmNl
cykgJChwbGF0Zm9ybWd0a19zb3VyY2VzKSA6IHwgJChzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9m
aWxlKSAkKHdlYmNvcmVfYnVpbHRfc291cmNlcykKIAogbm9pbnN0X0xUTElCUkFSSUVTICs9IFwK
IAlsaWJXZWJDb3JlUGxhdGZvcm0ubGEgXApAQCAtNDc0LDYgKzQ3NSw3IEBAIGxpYldlYkNvcmVf
bGFfQ1BQRkxBR1MgPSBcCiAJLURCVUlMRElOR19XZWJDb3JlIFwKIAktREJVSUxESU5HX1dFQktJ
VCBcCiAJJChnbG9iYWxfY3BwZmxhZ3MpIFwKKwkkKHBsYXRmb3JtZ3RrX2NwcGZsYWdzKSBcCiAJ
JCh3ZWJjb3JlX2NwcGZsYWdzKSBcCiAJJCh3ZWJjb3JlZ3RrX2NwcGZsYWdzKSBcCiAJJChqYXZh
c2NyaXB0Y29yZV9jcHBmbGFncykgXApAQCAtNTM3LDYgKzUzOSw3IEBAIGxpYldlYkNvcmVQbGF0
Zm9ybV9sYV9DRkxBR1MgPSBcCiBsaWJXZWJDb3JlUGxhdGZvcm1fbGFfQ1BQRkxBR1MgPSBcCiAJ
LURCVUlMRElOR19XRUJLSVQgXAogCSQoZ2xvYmFsX2NwcGZsYWdzKSBcCisJJChwbGF0Zm9ybWd0
a19jcHBmbGFncykgXAogCSQod2ViY29yZV9jcHBmbGFncykgXAogCSQod2ViY29yZWd0a19jcHBm
bGFncykgXAogCSQoamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MpIFwKQEAgLTU4Myw2ICs1ODYsNyBA
QCBsaWJXZWJDb3JlR3RrX2xhX0NQUEZMQUdTID0gXAogCS1EQlVJTERJTkdfV2ViQ29yZSBcCiAJ
LURCVUlMRElOR19XRUJLSVQgXAogCSQoZ2xvYmFsX2NwcGZsYWdzKSBcCisJJChwbGF0Zm9ybWd0
a19jcHBmbGFncykgXAogCSQod2ViY29yZV9jcHBmbGFncykgXAogCSQod2ViY29yZWd0a19jcHBm
bGFncykgXAogCSQoamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCmluZGV4IDhjMmIwY2Y3OGJhYmRkZDE2Zjc5Y2M4NmYzMTAyYTM4Mjk5ODgzMGMu
LmY1ZWQxZDMyZWM1OThhYWFmMWRmNjQ2ZDhiOWFlOTg2ZTA0ZDk1NWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQpAQCAtNjIxNSw4ICs2MjE1LDYgQEAgd2ViY29yZWd0a19zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrUGx1Z2luV2lkZ2V0LmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtQb3B1cE1lbnUuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrUG9wdXBNZW51LmggXAotCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmMgXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9HdGtWZXJzaW9uaW5nLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9LZXlCaW5k
aW5nVHJhbnNsYXRvci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9LZXlCaW5k
aW5nVHJhbnNsYXRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTG9jYWxpemVk
U3RyaW5nc0d0ay5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29i
amVjdC9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05V
bWFrZWZpbGUuYW0KaW5kZXggMjJhZWQ0NTEzZTEwMjM2ZTlkOWRiNmY4MDBhMmQ5OGU2NmNlN2M2
ZS4uOTc4NWI5ODVlMGIzZjFlZjFlYjhkNjA4MGY3MGI4NDE0MjFiZmRjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCkBAIC01MzIsNiArNTMy
LDcgQEAgbGliV2ViQ29yZURPTV9sYV9DUFBGTEFHUyA9IFwKIAktSSQoV2ViQ29yZSkvYmluZGlu
Z3MvZ29iamVjdCBcCiAJLUkkKEdFTlNPVVJDRVNfV0VCS0lURE9NKSBcCiAJJChnbG9iYWxfY3Bw
ZmxhZ3MpIFwKKwkkKHBsYXRmb3JtZ3RrX2NwcGZsYWdzKSBcCiAJJCh3ZWJjb3JlX2NwcGZsYWdz
KSBcCiAJJCh3ZWJjb3JlZ3RrX2NwcGZsYWdzKSBcCiAJJChqYXZhc2NyaXB0Y29yZV9jcHBmbGFn
cykgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1ZlcnNpb25p
bmcuYyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmMKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjMmY4NGMyZWY4ODY2YzAzYzA2ZjE2ZGMyMTU5ZmZl
YTk5N2NkYzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1ZlcnNpb25pbmcuYworKysgL2Rldi9udWxs
CkBAIC0xLDM4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIENvbGxhYm9yYSBM
dGQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhLCBTLkwuCi0gKgotICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAq
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNs
dWRlICJHdGtWZXJzaW9uaW5nLmgiCi0KLSNpbmNsdWRlIDxndGsvZ3RrLmg+Ci0KLSNpZmRlZiBH
REtfV0lORE9XSU5HX1gxMQotI2luY2x1ZGUgPFgxMS9YYXRvbS5oPgotI2luY2x1ZGUgPGdkay9n
ZGt4Lmg+Ci0jZW5kaWYKLQotI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNCwgMCkKLXZvaWQg
Z3RrX2FkanVzdG1lbnRfc2V0X3ZhbHVlKEd0a0FkanVzdG1lbnQqIGFkanVzbWVudCwgZ2RvdWJs
ZSB2YWx1ZSkKLXsKLSAgICAgICAgbV9hZGp1c3RtZW50LT52YWx1ZSA9IG1fY3VycmVudFBvczsK
LSAgICAgICAgZ3RrX2FkanVzdG1lbnRfdmFsdWVfY2hhbmdlZChtX2FkanVzdG1lbnQpOwotfQot
Ci12b2lkIGd0a19hZGp1c3RtZW50X2NvbmZpZ3VyZShHdGtBZGp1c3RtZW50KiBhZGp1c3RtZW50
LCBnZG91YmxlIHZhbHVlLCBnZG91YmxlIGxvd2VyLCBnZG91YmxlIHVwcGVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2RvdWJsZSBzdGVwSW5jcmVtZW50LCBnZG91YmxlIHBhZ2VJ
bmNyZW1lbnQsIGdkb3VibGUgcGFnZVNpemUpCi17Ci0gICAgZ19vYmplY3RfZnJlZXplX25vdGlm
eShHX09CSkVDVChhZGp1c3RtZW50KSk7Ci0KLSAgICBnX29iamVjdF9zZXQoYWRqdXN0bWVudCwK
LSAgICAgICAgICAgICAgICAgImxvd2VyIiwgbG93ZXIsCi0gICAgICAgICAgICAgICAgICJ1cHBl
ciIsIHVwcGVyLAotICAgICAgICAgICAgICAgICAic3RlcC1pbmNyZW1lbnQiLCBzdGVwSW5jcmVt
ZW50LAotICAgICAgICAgICAgICAgICAicGFnZS1pbmNyZW1lbnQiLCBwYWdlSW5jcmVtZW50LAot
ICAgICAgICAgICAgICAgICAicGFnZS1zaXplIiwgcGFnZVNpemUsCi0gICAgICAgICAgICAgICAg
IE5VTEwpOwotCi0gICAgZ19vYmplY3RfdGhhd19ub3RpZnkoR19PQkpFQ1QoYWRqdXN0bWVudCkp
OwotCi0gICAgZ3RrX2FkanVzdG1lbnRfY2hhbmdlZChhZGp1c3RtZW50KTsKLSAgICBndGtfYWRq
dXN0bWVudF92YWx1ZV9jaGFuZ2VkKGFkanVzdG1lbnQpOwotfQotI2VuZGlmCi0KLUdka0Rldmlj
ZSAqZ2V0RGVmYXVsdEdES1BvaW50ZXJEZXZpY2UoR2RrV2luZG93KiB3aW5kb3cpCi17Ci0jaWZu
ZGVmIEdUS19BUElfVkVSU0lPTl8yCi0gICAgR2RrRGV2aWNlTWFuYWdlciAqbWFuYWdlciA9ICBn
ZGtfZGlzcGxheV9nZXRfZGV2aWNlX21hbmFnZXIoZ2RrX3dpbmRvd19nZXRfZGlzcGxheSh3aW5k
b3cpKTsKLSAgICByZXR1cm4gZ2RrX2RldmljZV9tYW5hZ2VyX2dldF9jbGllbnRfcG9pbnRlciht
YW5hZ2VyKTsKLSNlbHNlCi0gICAgcmV0dXJuIGdka19kZXZpY2VfZ2V0X2NvcmVfcG9pbnRlcigp
OwotI2VuZGlmIC8vIEdUS19BUElfVkVSU0lPTl8yCi19Ci0KLSNpZiAhR1RLX0NIRUNLX1ZFUlNJ
T04oMiwgMTcsIDMpCi12b2lkIGdka193aW5kb3dfZ2V0X3Jvb3RfY29vcmRzKEdka1dpbmRvdyog
d2luZG93LCBnaW50IHgsIGdpbnQgeSwgZ2ludCogcm9vdFgsIGdpbnQqIHJvb3RZKQotewotICAg
IGdka193aW5kb3dfZ2V0X3Jvb3Rfb3JpZ2luKHdpbmRvdywgcm9vdFgsIHJvb3RZKTsKLSAgICAq
cm9vdFggPSAqcm9vdFggKyB4OwotICAgICpyb290WSA9ICpyb290WSArIHk7Ci19Ci0jZW5kaWYK
LQotR2RrQ3Vyc29yICogYmxhbmtDdXJzb3IoKQotewotI2lmIEdUS19DSEVDS19WRVJTSU9OKDIs
IDE2LCAwKQotICAgIHJldHVybiBnZGtfY3Vyc29yX25ldyhHREtfQkxBTktfQ1VSU09SKTsKLSNl
bHNlCi0gICAgR2RrQ3Vyc29yICogY3Vyc29yOwotICAgIEdka1BpeG1hcCAqIHNvdXJjZTsKLSAg
ICBHZGtQaXhtYXAgKiBtYXNrOwotICAgIEdka0NvbG9yIGZvcmVncm91bmQgPSB7IDAsIDY1NTM1
LCAwLCAwIH07IC8vIFJlZC4KLSAgICBHZGtDb2xvciBiYWNrZ3JvdW5kID0geyAwLCAwLCAwLCA2
NTUzNSB9OyAvLyBCbHVlLgotICAgIHN0YXRpYyBnY2hhciBjdXJzb3JCaXRzW10gPSB7MHgwLCAw
eDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDB9OwotCi0gICAgc291cmNlID0gZ2RrX2Jp
dG1hcF9jcmVhdGVfZnJvbV9kYXRhKDAsIGN1cnNvckJpdHMsIDgsIDgpOwotICAgIG1hc2sgPSBn
ZGtfYml0bWFwX2NyZWF0ZV9mcm9tX2RhdGEoMCwgY3Vyc29yQml0cywgOCwgOCk7Ci0gICAgY3Vy
c29yID0gZ2RrX2N1cnNvcl9uZXdfZnJvbV9waXhtYXAoc291cmNlLCBtYXNrLCAmZm9yZWdyb3Vu
ZCwgJmJhY2tncm91bmQsIDgsIDgpOwotICAgIGdka19waXhtYXBfdW5yZWYoc291cmNlKTsKLSAg
ICBnZGtfcGl4bWFwX3VucmVmKG1hc2spOwotICAgIHJldHVybiBjdXJzb3I7Ci0jZW5kaWYgLy8g
R1RLX0NIRUNLX1ZFUlNJT04oMiwgMTYsIDApCi19Ci0KLSNpZiAhR1RLX0NIRUNLX1ZFUlNJT04o
MiwgMTYsIDApCi1jb25zdCBnY2hhciogZ3RrX21lbnVfaXRlbV9nZXRfbGFiZWwoR3RrTWVudUl0
ZW0qIG1lbnVJdGVtKQotewotICAgIEd0a1dpZGdldCAqIGxhYmVsID0gZ3RrX2Jpbl9nZXRfY2hp
bGQoR1RLX0JJTihtZW51SXRlbSkpOwotICAgIGlmIChHVEtfSVNfTEFCRUwobGFiZWwpKQotICAg
ICAgICByZXR1cm4gZ3RrX2xhYmVsX2dldF90ZXh0KEdUS19MQUJFTChsYWJlbCkpOwotICAgIHJl
dHVybiAwOwotfQotI2VuZGlmIC8vIEdUS19DSEVDS19WRVJTSU9OKDIsIDE2LCAwKQotCi0jaWZk
ZWYgR1RLX0FQSV9WRVJTSU9OXzIKLXN0YXRpYyBjYWlyb19mb3JtYXRfdAotZ2RrX2NhaXJvX2Zv
cm1hdF9mb3JfY29udGVudChjYWlyb19jb250ZW50X3QgY29udGVudCkKLXsKLSAgICBzd2l0Y2gg
KGNvbnRlbnQpIHsKLSAgICBjYXNlIENBSVJPX0NPTlRFTlRfQ09MT1I6Ci0gICAgICAgIHJldHVy
biBDQUlST19GT1JNQVRfUkdCMjQ7Ci0gICAgY2FzZSBDQUlST19DT05URU5UX0FMUEhBOgotICAg
ICAgICByZXR1cm4gQ0FJUk9fRk9STUFUX0E4OwotICAgIGNhc2UgQ0FJUk9fQ09OVEVOVF9DT0xP
Ul9BTFBIQToKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gQ0FJUk9fRk9STUFUX0FSR0Iz
MjsKLSAgICB9Ci19Ci0KLXN0YXRpYyBjYWlyb19zdXJmYWNlX3QqCi1nZGtfY2Fpcm9fc3VyZmFj
ZV9jb2VyY2VfdG9faW1hZ2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNhaXJvX2NvbnRlbnRfdCBjb250ZW50LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgaGVpZ2h0KQotewotICAgIGNhaXJvX3N1cmZhY2VfdCAqIGNvcHk7
Ci0gICAgY2Fpcm9fdCAqIGNyOwotCi0gICAgaWYgKGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoc3Vy
ZmFjZSkgPT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFCi0gICAgICAgICYmIGNhaXJvX3N1cmZh
Y2VfZ2V0X2NvbnRlbnQoc3VyZmFjZSkgPT0gY29udGVudAotICAgICAgICAmJiBjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlKSA+PSB3aWR0aAotICAgICAgICAmJiBjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSkgPj0gaGVpZ2h0KQotICAgICAgICByZXR1
cm4gY2Fpcm9fc3VyZmFjZV9yZWZlcmVuY2Uoc3VyZmFjZSk7Ci0KLSAgICBjb3B5ID0gY2Fpcm9f
aW1hZ2Vfc3VyZmFjZV9jcmVhdGUoZ2RrX2NhaXJvX2Zvcm1hdF9mb3JfY29udGVudChjb250ZW50
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCk7Ci0KLSAgICBjciA9IGNhaXJv
X2NyZWF0ZShjb3B5KTsKLSAgICBjYWlyb19zZXRfb3BlcmF0b3IoY3IsIENBSVJPX09QRVJBVE9S
X1NPVVJDRSk7Ci0gICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNyLCBzdXJmYWNlLCAwLCAw
KTsKLSAgICBjYWlyb19wYWludChjcik7Ci0gICAgY2Fpcm9fZGVzdHJveShjcik7Ci0KLSAgICBy
ZXR1cm4gY29weTsKLX0KLQotc3RhdGljIHZvaWQKLWNvbnZlcnRfYWxwaGEoZ3VjaGFyICogZGVz
dERhdGEsIGludCBkZXN0U3RyaWRlLAotICAgICAgICAgICAgICBndWNoYXIgKiBzcmNEYXRhLCBp
bnQgc3JjU3RyaWRlLAotICAgICAgICAgICAgICBpbnQgc3JjWCwgaW50IHNyY1ksIGludCB3aWR0
aCwgaW50IGhlaWdodCkKLXsKLSAgICBpbnQgeCwgeTsKLQotICAgIHNyY0RhdGEgKz0gc3JjU3Ry
aWRlICogc3JjWSArIHNyY1kgKiA0OwotCi0gICAgZm9yICh5ID0gMDsgeSA8IGhlaWdodDsgeSsr
KSB7Ci0gICAgICAgIGd1aW50MzIgKiBzcmMgPSAoZ3VpbnQzMiAqKSBzcmNEYXRhOwotCi0gICAg
ICAgIGZvciAoeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7Ci0gICAgICAgICAgICBndWludCBhbHBo
YSA9IHNyY1t4XSA+PiAyNDsKLQotICAgICAgICAgICAgaWYgKCFhbHBoYSkgewotICAgICAgICAg
ICAgICAgIGRlc3REYXRhW3ggKiA0ICsgMF0gPSAwOwotICAgICAgICAgICAgICAgIGRlc3REYXRh
W3ggKiA0ICsgMV0gPSAwOwotICAgICAgICAgICAgICAgIGRlc3REYXRhW3ggKiA0ICsgMl0gPSAw
OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBkZXN0RGF0YVt4ICogNCAr
IDBdID0gKCgoc3JjW3hdICYgMHhmZjAwMDApID4+IDE2KSAqIDI1NSArIGFscGhhIC8gMikgLyBh
bHBoYTsKLSAgICAgICAgICAgICAgICBkZXN0RGF0YVt4ICogNCArIDFdID0gKCgoc3JjW3hdICYg
MHgwMGZmMDApID4+ICA4KSAqIDI1NSArIGFscGhhIC8gMikgLyBhbHBoYTsKLSAgICAgICAgICAg
ICAgICBkZXN0RGF0YVt4ICogNCArIDJdID0gKCgoc3JjW3hdICYgMHgwMDAwZmYpID4+ICAwKSAq
IDI1NSArIGFscGhhIC8gMikgLyBhbHBoYTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRl
c3REYXRhW3ggKiA0ICsgM10gPSBhbHBoYTsKLSAgICAgICAgfQotCi0gICAgICAgIHNyY0RhdGEg
Kz0gc3JjU3RyaWRlOwotICAgICAgICBkZXN0RGF0YSArPSBkZXN0U3RyaWRlOwotICAgIH0KLX0K
LQotc3RhdGljIHZvaWQKLWNvbnZlcnRfbm9fYWxwaGEoZ3VjaGFyICogZGVzdERhdGEsIGludCBk
ZXN0U3RyaWRlLCBndWNoYXIgKiBzcmNEYXRhLAotICAgICAgICAgICAgICAgICBpbnQgc3JjU3Ry
aWRlLCBpbnQgc3JjWCwgaW50IHNyY1ksCi0gICAgICAgICAgICAgICAgIGludCB3aWR0aCwgaW50
IGhlaWdodCkKLXsKLSAgICBpbnQgeCwgeTsKLQotICAgIHNyY0RhdGEgKz0gc3JjU3RyaWRlICog
c3JjWSArIHNyY1ggKiA0OwotCi0gICAgZm9yICh5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7Ci0g
ICAgICAgIGd1aW50MzIgKiBzcmMgPSAoZ3VpbnQzMiAqKSBzcmNEYXRhOwotCi0gICAgICAgIGZv
ciAoeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7Ci0gICAgICAgICAgICBkZXN0RGF0YVt4ICogMyAr
IDBdID0gc3JjW3hdID4+IDE2OwotICAgICAgICAgICAgZGVzdERhdGFbeCAqIDMgKyAxXSA9IHNy
Y1t4XSA+PiAgODsKLSAgICAgICAgICAgIGRlc3REYXRhW3ggKiAzICsgMl0gPSBzcmNbeF07Ci0g
ICAgICAgIH0KLQotICAgICAgICBzcmNEYXRhICs9IHNyY1N0cmlkZTsKLSAgICAgICAgZGVzdERh
dGEgKz0gZGVzdFN0cmlkZTsKLSAgICB9Ci19Ci0KLS8qKgotICogZ2RrX3BpeGJ1Zl9nZXRfZnJv
bV9zdXJmYWNlOgotICogQHN1cmZhY2U6IHN1cmZhY2UgdG8gY29weSBmcm9tCi0gKiBAc3JjX3g6
IFNvdXJjZSBYIGNvb3JkaW5hdGUgd2l0aGluIEBzdXJmYWNlCi0gKiBAc3JjX3k6IFNvdXJjZSBZ
IGNvb3JkaW5hdGUgd2l0aGluIEBzdXJmYWNlCi0gKiBAd2lkdGg6IFdpZHRoIGluIHBpeGVscyBv
ZiByZWdpb24gdG8gZ2V0Ci0gKiBAaGVpZ2h0OiBIZWlnaHQgaW4gcGl4ZWxzIG9mIHJlZ2lvbiB0
byBnZXQKLSAqCi0gKiBUcmFuc2ZlcnMgaW1hZ2UgZGF0YSBmcm9tIGEgI2NhaXJvX3N1cmZhY2Vf
dCBhbmQgY29udmVydHMgaXQgdG8gYW4gUkdCKEEpCi0gKiByZXByZXNlbnRhdGlvbiBpbnNpZGUg
YSAjR2RrUGl4YnVmLiBUaGlzIGFsbG93cyB5b3UgdG8gZWZmaWNpZW50bHkgcmVhZAotICogaW5k
aXZpZHVhbCBwaXhlbHMgZnJvbSBjYWlybyBzdXJmYWNlcy4gRm9yICNHZGtXaW5kb3dzLCB1c2UK
LSAqIGdka19waXhidWZfZ2V0X2Zyb21fd2luZG93KCkgaW5zdGVhZC4KLSAqCi0gKiBUaGlzIGZ1
bmN0aW9uIHdpbGwgY3JlYXRlIGFuIFJHQiBwaXhidWYgd2l0aCA4IGJpdHMgcGVyIGNoYW5uZWwu
IFRoZSBwaXhidWYKLSAqIHdpbGwgY29udGFpbiBhbiBhbHBoYSBjaGFubmVsIGlmIHRoZSBAc3Vy
ZmFjZSBjb250YWlucyBvbmUuCi0gKgotICogUmV0dXJuIHZhbHVlOiAodHJhbnNmZXIgZnVsbCk6
IEEgbmV3bHktY3JlYXRlZCBwaXhidWYgd2l0aCBhIHJlZmVyZW5jZSBjb3VudAotICogb2YgMSwg
b3IgJU5VTEwgb24gZXJyb3IKLSAqKi8KLUdka1BpeGJ1ZioKLWdka19waXhidWZfZ2V0X2Zyb21f
c3VyZmFjZShjYWlyb19zdXJmYWNlX3QgKiBzdXJmYWNlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBzcmNYLCBpbnQgc3JjWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgd2lkdGgsIGludCBoZWlnaHQpCi17Ci0gICAgY2Fpcm9fY29udGVudF90IGNvbnRlbnQ7Ci0g
ICAgR2RrUGl4YnVmICogZGVzdDsKLQotICAgIC8qIEdlbmVyYWwgc2FuaXR5IGNoZWNrcyAqLwot
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHN1cmZhY2UsIE5VTEwpOwotICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKHNyY1ggPj0gMCAmJiBzcmNZID49IDAsIE5VTEwpOwotICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwLCBOVUxMKTsKLQotICAgIGNvbnRlbnQg
PSBjYWlyb19zdXJmYWNlX2dldF9jb250ZW50KHN1cmZhY2UpIHwgQ0FJUk9fQ09OVEVOVF9DT0xP
UjsKLSAgICBkZXN0ID0gZ2RrX3BpeGJ1Zl9uZXcoR0RLX0NPTE9SU1BBQ0VfUkdCLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAhIShjb250ZW50ICYgQ0FJUk9fQ09OVEVOVF9BTFBIQSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHdp
ZHRoLCBoZWlnaHQpOwotCi0gICAgc3VyZmFjZSA9IGdka19jYWlyb19zdXJmYWNlX2NvZXJjZV90
b19pbWFnZShzdXJmYWNlLCBjb250ZW50LCBzcmNYICsgd2lkdGgsIHNyY1kgKyBoZWlnaHQpOwot
ICAgIGNhaXJvX3N1cmZhY2VfZmx1c2goc3VyZmFjZSk7Ci0gICAgaWYgKGNhaXJvX3N1cmZhY2Vf
c3RhdHVzKHN1cmZhY2UpIHx8ICFkZXN0KSB7Ci0gICAgICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJv
eShzdXJmYWNlKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgaWYgKGdka19w
aXhidWZfZ2V0X2hhc19hbHBoYShkZXN0KSkKLSAgICAgICAgY29udmVydF9hbHBoYShnZGtfcGl4
YnVmX2dldF9waXhlbHMoZGVzdCksCi0gICAgICAgICAgICAgICAgICAgICAgIGdka19waXhidWZf
Z2V0X3Jvd3N0cmlkZShkZXN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgY2Fpcm9faW1hZ2Vf
c3VyZmFjZV9nZXRfZGF0YShzdXJmYWNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgY2Fpcm9f
aW1hZ2Vfc3VyZmFjZV9nZXRfc3RyaWRlKHN1cmZhY2UpLAotICAgICAgICAgICAgICAgICAgICAg
ICBzcmNYLCBzcmNZLAotICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0KTsKLSAg
ICBlbHNlCi0gICAgICAgIGNvbnZlcnRfbm9fYWxwaGEoZ2RrX3BpeGJ1Zl9nZXRfcGl4ZWxzKGRl
c3QpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBnZGtfcGl4YnVmX2dldF9yb3dzdHJpZGUo
ZGVzdCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0
X2RhdGEoc3VyZmFjZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X3N0cmlkZShzdXJmYWNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3Jj
WCwgc3JjWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCk7Ci0KLSAg
ICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3koc3VyZmFjZSk7Ci0gICAgcmV0dXJuIGRlc3Q7Ci19Ci0K
LSNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAyNCwgMCkKLXZvaWQgZ2V0R2RrRHJhd2FibGVTaXpl
KEdka0RyYXdhYmxlICpkcmF3YWJsZSwgaW50ICp3aWR0aCwgaW50ICpoZWlnaHQpCi17Ci0gICAg
Z19yZXR1cm5faWZfZmFpbChHREtfSVNfUElYTUFQKGRyYXdhYmxlKSB8fCBHREtfSVNfV0lORE9X
KGRyYXdhYmxlKSk7Ci0KLSAgICBpZiAoR0RLX0lTX1BJWE1BUChkcmF3YWJsZSkpIHsKLSAgICAg
ICAgZ2RrX3BpeG1hcF9nZXRfc2l6ZShHREtfUElYTUFQKGRyYXdhYmxlKSwgd2lkdGgsIGhlaWdo
dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHZGtXaW5kb3cgKndpbmRvdyA9IEdE
S19XSU5ET1coZHJhd2FibGUpOwotICAgICp3aWR0aCA9IGdka193aW5kb3dfZ2V0X3dpZHRoKHdp
bmRvdyk7Ci0gICAgKmhlaWdodCA9IGdka193aW5kb3dfZ2V0X2hlaWdodCh3aW5kb3cpOwotfQot
I2Vsc2UKLXZvaWQgZ2V0R2RrRHJhd2FibGVTaXplKEdka0RyYXdhYmxlICpkcmF3YWJsZSwgaW50
ICp3aWR0aCwgaW50ICpoZWlnaHQpCi17Ci0gICAgZ2RrX2RyYXdhYmxlX2dldF9zaXplKGRyYXdh
YmxlLCB3aWR0aCwgaGVpZ2h0KTsKLX0KLSNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAy
NCwgMCkKLQotI2VuZGlmIC8vIEdUS19BUElfVkVSU0lPTl8yCi0KLSNpZiAhR0xJQl9DSEVDS19W
RVJTSU9OKDIsIDI3LCAxKQotZ2Jvb2xlYW4gZ19zaWduYWxfYWNjdW11bGF0b3JfZmlyc3Rfd2lu
cyhHU2lnbmFsSW52b2NhdGlvbkhpbnQgKmludm9jYXRpb25IaW50LCBHVmFsdWUgKnJldHVybkFj
Y3VtdWxhdG9yLCBjb25zdCBHVmFsdWUgKmhhbmRsZXJSZXR1cm4sIGdwb2ludGVyIGRhdGEpCi17
Ci0gICAgZ192YWx1ZV9jb3B5KGhhbmRsZXJSZXR1cm4sIHJldHVybkFjY3VtdWxhdG9yKTsKLSAg
ICByZXR1cm4gRkFMU0U7Ci19Ci0jZW5kaWYKLQotI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigyLCAy
MiwgMCkKLWNhaXJvX3N1cmZhY2VfdCAqZ2RrX3dpbmRvd19jcmVhdGVfc2ltaWxhcl9zdXJmYWNl
KEdka1dpbmRvdyAqd2luZG93LCBjYWlyb19jb250ZW50X3QgY29udGVudCwgaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KQotewotICAgIGNhaXJvX3QgKmNhaXJvQ29udGV4dCA9IGdka19jYWlyb19jcmVh
dGUod2luZG93KTsKLSAgICBjYWlyb19zdXJmYWNlX3QgKmNhaXJvU3VyZmFjZSA9IGNhaXJvX2dl
dF90YXJnZXQoY2Fpcm9Db250ZXh0KTsKLSAgICBjYWlyb19zdXJmYWNlX3QgKm5ld1N1cmZhY2Ug
PSBjYWlyb19zdXJmYWNlX2NyZWF0ZV9zaW1pbGFyKGNhaXJvU3VyZmFjZSwgY29udGVudCwgd2lk
dGgsIGhlaWdodCk7Ci0gICAgY2Fpcm9fZGVzdHJveShjYWlyb0NvbnRleHQpOwotICAgIHJldHVy
biBuZXdTdXJmYWNlOwotfQotI2VuZGlmIC8vIEdUS19DSEVDS19WRVJTSU9OKDIsIDIyLCAwKQot
Ci0jaWYgIUdUS19DSEVDS19WRVJTSU9OKDMsIDMsIDYpCi0jaWZkZWYgR0RLX1dJTkRPV0lOR19Y
MTEKLXN0YXRpYyBpbnQgZ2V0U2NyZWVuQ3VycmVudERlc2t0b3AoR2RrU2NyZWVuICpzY3JlZW4p
Ci17Ci0gICAgRGlzcGxheSAqZGlzcGxheSA9IEdES19ESVNQTEFZX1hESVNQTEFZKGdka19zY3Jl
ZW5fZ2V0X2Rpc3BsYXkoc2NyZWVuKSk7Ci0gICAgV2luZG93IHJvb3RXaW5kb3cgPSBYUm9vdFdp
bmRvdyhkaXNwbGF5LCBHREtfU0NSRUVOX1hOVU1CRVIoc2NyZWVuKSk7Ci0gICAgQXRvbSBjdXJy
ZW50RGVza3RvcCA9IFhJbnRlcm5BdG9tKGRpc3BsYXksICJfTkVUX0NVUlJFTlRfREVTS1RPUCIs
IFRydWUpOwotCi0gICAgQXRvbSB0eXBlOwotICAgIGludCBmb3JtYXQ7Ci0gICAgdW5zaWduZWQg
bG9uZyBpdGVtc0NvdW50LCBieXRlc0FmdGVyOwotICAgIHVuc2lnbmVkIGNoYXIgKnJldHVybmVk
RGF0YSA9IE5VTEw7Ci0gICAgWEdldFdpbmRvd1Byb3BlcnR5KGRpc3BsYXksIHJvb3RXaW5kb3cs
IGN1cnJlbnREZXNrdG9wLCAwLCBHX01BWExPTkcsIEZhbHNlLCBYQV9DQVJESU5BTCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgJnR5cGUsICZmb3JtYXQsICZpdGVtc0NvdW50LCAmYnl0ZXNBZnRl
ciwgJnJldHVybmVkRGF0YSk7Ci0KLSAgICBpbnQgd29ya3NwYWNlID0gMDsKLSAgICBpZiAodHlw
ZSA9PSBYQV9DQVJESU5BTCAmJiBmb3JtYXQgPT0gMzIgJiYgaXRlbXNDb3VudCA+IDApCi0gICAg
ICAgIHdvcmtzcGFjZSA9IChpbnQpcmV0dXJuZWREYXRhWzBdOwotCi0gICAgaWYgKHJldHVybmVk
RGF0YSkKLSAgICAgICAgWEZyZWUocmV0dXJuZWREYXRhKTsKLQotICAgIHJldHVybiB3b3Jrc3Bh
Y2U7Ci19Ci0KLXN0YXRpYyB2b2lkIGdldFNjcmVlbldvcmtBcmVhKEdka1NjcmVlbiAqc2NyZWVu
LCBHZGtSZWN0YW5nbGUgKmFyZWEpCi17Ci0gICAgRGlzcGxheSAqZGlzcGxheSA9IEdES19ESVNQ
TEFZX1hESVNQTEFZKGdka19zY3JlZW5fZ2V0X2Rpc3BsYXkoc2NyZWVuKSk7Ci0gICAgQXRvbSB3
b3JrQXJlYSA9IFhJbnRlcm5BdG9tKGRpc3BsYXksICJfTkVUX1dPUktBUkVBIiwgVHJ1ZSk7Ci0K
LSAgICAvKiBEZWZhdWx0cyBpbiBjYXNlIG9mIGVycm9yLiAqLwotICAgIGFyZWEtPnggPSAwOwot
ICAgIGFyZWEtPnkgPSAwOwotICAgIGFyZWEtPndpZHRoID0gZ2RrX3NjcmVlbl9nZXRfd2lkdGgo
c2NyZWVuKTsKLSAgICBhcmVhLT5oZWlnaHQgPSBnZGtfc2NyZWVuX2dldF9oZWlnaHQoc2NyZWVu
KTsKLQotICAgIGlmICh3b3JrQXJlYSA9PSBOb25lKQotICAgICAgICByZXR1cm47Ci0KLSAgICBX
aW5kb3cgcm9vdFdpbmRvdyA9IFhSb290V2luZG93KGRpc3BsYXksIEdES19TQ1JFRU5fWE5VTUJF
UihzY3JlZW4pKTsKLSAgICBBdG9tIHR5cGU7Ci0gICAgaW50IGZvcm1hdDsKLSAgICB1bnNpZ25l
ZCBsb25nIGl0ZW1zQ291bnQsIGJ5dGVzQWZ0ZXI7Ci0gICAgdW5zaWduZWQgY2hhciAqcmV0dXJu
ZWREYXRhID0gMDsKLSAgICBpbnQgcmVzdWx0ID0gWEdldFdpbmRvd1Byb3BlcnR5KGRpc3BsYXks
IHJvb3RXaW5kb3csIHdvcmtBcmVhLCAwLCA0ICogMzIgLyogTWF4IGxlbmd0aCAqLywgRmFsc2Us
IEFueVByb3BlcnR5VHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0
eXBlLCAmZm9ybWF0LCAmaXRlbXNDb3VudCwgJmJ5dGVzQWZ0ZXIsICZyZXR1cm5lZERhdGEpOwot
ICAgIGlmIChyZXN1bHQgIT0gU3VjY2VzcyB8fCB0eXBlID09IE5vbmUgfHwgIWZvcm1hdCB8fCBi
eXRlc0FmdGVyIHx8IGl0ZW1zQ291bnQgJSA0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbnQg
ZGVza3RvcCA9IGdldFNjcmVlbkN1cnJlbnREZXNrdG9wKHNjcmVlbik7Ci0gICAgbG9uZyAqd29y
a0FyZWFzID0gKGxvbmcgKilyZXR1cm5lZERhdGE7Ci0gICAgYXJlYS0+eCA9IHdvcmtBcmVhc1tk
ZXNrdG9wICogNF07Ci0gICAgYXJlYS0+eSA9IHdvcmtBcmVhc1tkZXNrdG9wICogNCArIDFdOwot
ICAgIGFyZWEtPndpZHRoID0gd29ya0FyZWFzW2Rlc2t0b3AgKiA0ICsgMl07Ci0gICAgYXJlYS0+
aGVpZ2h0ID0gd29ya0FyZWFzW2Rlc2t0b3AgKiA0ICsgM107Ci0KLSAgICBYRnJlZShyZXR1cm5l
ZERhdGEpOwotfQotI2VuZGlmIC8vIEdES19XSU5ET1dJTkdfWDExCi0KLXZvaWQgZ2RrX3NjcmVl
bl9nZXRfbW9uaXRvcl93b3JrYXJlYShHZGtTY3JlZW4gKnNjcmVlbiwgaW50IG1vbml0b3IsIEdk
a1JlY3RhbmdsZSAqYXJlYSkKLXsKLSAgICBnZGtfc2NyZWVuX2dldF9tb25pdG9yX2dlb21ldHJ5
KHNjcmVlbiwgbW9uaXRvciwgYXJlYSk7Ci0KLSNpZmRlZiBHREtfV0lORE9XSU5HX1gxMQotICAg
IEdka1JlY3RhbmdsZSB3b3JrQXJlYTsKLSAgICBnZXRTY3JlZW5Xb3JrQXJlYShzY3JlZW4sICZ3
b3JrQXJlYSk7Ci0gICAgZ2RrX3JlY3RhbmdsZV9pbnRlcnNlY3QoJndvcmtBcmVhLCBhcmVhLCBh
cmVhKTsKLSNlbmRpZgotfQotI2VuZGlmIC8vIEdUS19DSEVDS19WRVJTSU9OKDMsIDMsIDYpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1ZlcnNpb25pbmcuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZTNjYWM2MzNhMGQxNWJkOTc4MDNkMDViMTZlNWY2MzQxMjUzYThh
OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5oCisrKyAvZGV2L251bGwKQEAgLTEs
MTI3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQ29sbGFib3JhIEx0ZC4KLSAq
IENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEsIFMuTC4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0g
KiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBHdGtW
ZXJzaW9uaW5nX2gKLSNkZWZpbmUgR3RrVmVyc2lvbmluZ19oCi0KLSNpbmNsdWRlICJhdXRvdG9v
bHNjb25maWcuaCIKLSNpbmNsdWRlIDxndGsvZ3RrLmg+Ci0KLSNpZm5kZWYgR1RLX0FQSV9WRVJT
SU9OXzIKLSNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy1jb21wYXQuaD4KLSNlbmRpZgotCi1HX0JF
R0lOX0RFQ0xTCi0KLS8vIE1hY3JvcyB0byBhdm9pZCBkZXByZWNhdGlvbiBjaGVja2luZyBjaHVy
bgotI2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgotI2RlZmluZSBHREtfV0lORE9XX1hXSU5ET1co
d2luZG93KSAoZ2RrX3gxMV93aW5kb3dfZ2V0X3hpZCh3aW5kb3cpKQotI2Vsc2UKLUdka1BpeGJ1
ZiogZ2RrX3BpeGJ1Zl9nZXRfZnJvbV9zdXJmYWNlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwg
aW50IHNyY1gsIGludCBzcmNZLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLXZvaWQgZ2V0R2RrRHJhd2FibGVTaXplKEdka0Ry
YXdhYmxlKiBkcmF3YWJsZSwgaW50KiB3aWR0aCwgaW50KiBoZWlnaHQpOwotI2VuZGlmCi0KLSNp
ZiAhR1RLX0NIRUNLX1ZFUlNJT04oMiwgMjMsIDQpCi0jZGVmaW5lIGdka19waXhtYXBfZ2V0X3Np
emUgZ2RrX2RyYXdhYmxlX2dldF9zaXplCi0jZW5kaWYgLy8gR1RLX0NIRUNLX1ZFUlNJT04oMiwg
MjMsIDQpCi0KLSNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMiwgMjMsIDApCi0jZGVmaW5lIGdka193
aW5kb3dfZ2V0X2Rpc3BsYXkod2luZG93KSBnZGtfZHJhd2FibGVfZ2V0X2Rpc3BsYXkod2luZG93
KQotI2RlZmluZSBnZGtfd2luZG93X2dldF92aXN1YWwgZ2RrX2RyYXdhYmxlX2dldF92aXN1YWwK
LSNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAyMywgMCkKLQotI2lmICFHVEtfQ0hFQ0tf
VkVSU0lPTigyLCAyMiwgMCkKLWNhaXJvX3N1cmZhY2VfdCogZ2RrX3dpbmRvd19jcmVhdGVfc2lt
aWxhcl9zdXJmYWNlKEdka1dpbmRvdyogd2luZG93LCBjYWlyb19jb250ZW50X3QgY29udGVudCwg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLSNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAy
MiwgMCkKLQotI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigyLCAyMSwgMikKLSNkZWZpbmUgZ2RrX3Zp
c3VhbF9nZXRfZGVwdGgodmlzdWFsKSAodmlzdWFsKS0+ZGVwdGgKLSNkZWZpbmUgZ2RrX3Zpc3Vh
bF9nZXRfYml0c19wZXJfcmdiKHZpc3VhbCkgKHZpc3VhbCktPmJpdHNfcGVyX3JnYgotI2RlZmlu
ZSBnZGtfZHJhZ19jb250ZXh0X2dldF9zZWxlY3RlZF9hY3Rpb24oY29udGV4dCkgKGNvbnRleHQp
LT5hY3Rpb24KLSNkZWZpbmUgZ2RrX2RyYWdfY29udGV4dF9nZXRfYWN0aW9ucyhjb250ZXh0KSAo
Y29udGV4dCktPmFjdGlvbnMKLSNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAyMSwgMikK
LQotI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigyLCAyMCwgMCkKLSNkZWZpbmUgZ3RrX3dpZGdldF9n
ZXRfcmVhbGl6ZWQod2lkZ2V0KSBHVEtfV0lER0VUX1JFQUxJWkVEKHdpZGdldCkKLSNkZWZpbmUg
Z3RrX3dpZGdldF9zZXRfcmVhbGl6ZWQod2lkZ2V0LCBUUlVFKSBHVEtfV0lER0VUX1NFVF9GTEFH
Uygod2lkZ2V0KSwgR1RLX1JFQUxJWkVEKQotI2RlZmluZSBndGtfcmFuZ2VfZ2V0X21pbl9zbGlk
ZXJfc2l6ZShyYW5nZSkgKHJhbmdlKS0+bWluX3NsaWRlcl9zaXplCi0jZW5kaWYgLy8gR1RLX0NI
RUNLX1ZFUlNJT04oMiwgMjAsIDApCi0KLSNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTksIDAp
Ci0jZGVmaW5lIGd0a193aWRnZXRfaXNfdG9wbGV2ZWwod2lkZ2V0KSBHVEtfV0lER0VUX1RPUExF
VkVMKHdpZGdldCkKLSNkZWZpbmUgZ3RrX3dpZGdldF9nZXRfcmVhbGl6ZWQod2lkZ2V0KSBHVEtf
V0lER0VUX1JFQUxJWkVEKHdpZGdldCkKLSNkZWZpbmUgZ3RrX3dpZGdldF9nZXRfaGFzX3dpbmRv
dyh3aWRnZXQpICFHVEtfV0lER0VUX05PX1dJTkRPVyh3aWRnZXQpCi0jZGVmaW5lIGd0a193aWRn
ZXRfZ2V0X2Nhbl9mb2N1cyh3aWRnZXQpIEdUS19XSURHRVRfQ0FOX0ZPQ1VTKHdpZGdldCkKLSNk
ZWZpbmUgZ3RrX3dpZGdldF9pc19zZW5zaXRpdmUod2lkZ2V0KSBHVEtfV0lER0VUX0lTX1NFTlNJ
VElWRSh3aWRnZXQpCi0jZW5kaWYgLy8gR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTksIDApCi0KLSNp
ZiAhR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTgsIDApCi0jZGVmaW5lIGd0a193aWRnZXRfc2V0X3Zp
c2libGUod2lkZ2V0LCBGQUxTRSkgR1RLX1dJREdFVF9VTlNFVF9GTEFHUygod2lkZ2V0KSwgR1RL
X1ZJU0lCTEUpCi0jZGVmaW5lIGd0a193aWRnZXRfZ2V0X3Zpc2libGUod2lkZ2V0KSAoR1RLX1dJ
REdFVF9GTEFHUyh3aWRnZXQpICYgR1RLX1ZJU0lCTEUpCi0KLSNkZWZpbmUgZ3RrX3dpZGdldF9z
ZXRfd2luZG93KHdpZGdldCwgbmV3X3dpbmRvdykgKHdpZGdldCktPndpbmRvdyA9IChuZXdfd2lu
ZG93KQotI2RlZmluZSBndGtfd2lkZ2V0X3NldF9jYW5fZm9jdXMod2lkZ2V0LCBUUlVFKSBHVEtf
V0lER0VUX1NFVF9GTEFHUygod2lkZ2V0KSwgR1RLX0NBTl9GT0NVUykKLSNkZWZpbmUgZ3RrX3dp
ZGdldF9nZXRfYWxsb2NhdGlvbih3aWRnZXQsIGFsbG9jKSAoKihhbGxvYykgPSAod2lkZ2V0KS0+
YWxsb2NhdGlvbikKLSNkZWZpbmUgZ3RrX3dpZGdldF9zZXRfYWxsb2NhdGlvbih3aWRnZXQsIGFs
bG9jKSAoKHdpZGdldCktPmFsbG9jYXRpb24gPSAqKGFsbG9jKSkKLSNlbmRpZiAvLyBHVEtfQ0hF
Q0tfVkVSU0lPTigyLCAxOCwgMCkKLQotI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNywgMykK
LXZvaWQgZ2RrX3dpbmRvd19nZXRfcm9vdF9jb29yZHMoR2RrV2luZG93KiB3aW5kb3csIGdpbnQg
eCwgZ2ludCB5LCBnaW50KiByb290WCwgZ2ludCogcm9vdFkpOwotI2VuZGlmIC8vIEdUS19DSEVD
S19WRVJTSU9OKDIsIDE3LCAzKQotCi0jaWYgIUdUS19DSEVDS19WRVJTSU9OKDIsIDE2LCAwKQot
Y29uc3QgZ2NoYXIqIGd0a19tZW51X2l0ZW1fZ2V0X2xhYmVsKEd0a01lbnVJdGVtKik7Ci0jZW5k
aWYgLy8gR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTYsIDApCi0KLQotI2lmICFHVEtfQ0hFQ0tfVkVS
U0lPTigyLCAxNCwgMCkKLSNkZWZpbmUgZ3RrX3dpZGdldF9nZXRfd2luZG93KHdpZGdldCkgKHdp
ZGdldCktPndpbmRvdwotI2RlZmluZSBndGtfYWRqdXN0bWVudF9nZXRfdmFsdWUoYWRqKSAoYWRq
KS0+dmFsdWUKLSNkZWZpbmUgZ3RrX2RpYWxvZ19nZXRfY29udGVudF9hcmVhKGRpYWxvZykgKGRp
YWxvZyktPnZib3gKLSNkZWZpbmUgZ3RrX2RpYWxvZ19nZXRfYWN0aW9uX2FyZWEoZGlhbG9nKSAo
ZGlhbG9nKS0+YWN0aW9uX2FyZWEKLSNkZWZpbmUgZ3RrX3NlbGVjdGlvbl9kYXRhX2dldF9sZW5n
dGgoZGF0YSkgKGRhdGEpLT5sZW5ndGgKLSNkZWZpbmUgZ3RrX3NlbGVjdGlvbl9kYXRhX2dldF9k
YXRhKGRhdGEpIChkYXRhKS0+ZGF0YQotI2RlZmluZSBndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X3Rh
cmdldChkYXRhKSAoZGF0YSktPnRhcmdldAotI2RlZmluZSBndGtfYWRqdXN0bWVudF9zZXRfcGFn
ZV9zaXplKGFkaiwgbmV3VmFsdWUpICgoYWRqKS0+cGFnZV9zaXplID0gbmV3VmFsdWUpCi0jZGVm
aW5lIGd0a19hZGp1c3RtZW50X3NldF92YWx1ZShhZGosIG5ld1ZhbHVlKSAoKGFkaiktPnZhbHVl
ID0gbmV3VmFsdWUpCi0jZGVmaW5lIGd0a19hZGp1c3RtZW50X3NldF9sb3dlcihhZGosIG5ld1Zh
bHVlKSAoKGFkaiktPmxvd2VyID0gbmV3VmFsdWUpCi0jZGVmaW5lIGd0a19hZGp1c3RtZW50X3Nl
dF91cHBlcihhZGosIG5ld1ZhbHVlKSAoKGFkaiktPnVwcGVyID0gbmV3VmFsdWUpCi0KLXZvaWQg
Z3RrX2FkanVzdG1lbnRfY29uZmlndXJlKEd0a0FkanVzdG1lbnQqIGFkanVzdG1lbnQsIGdkb3Vi
bGUgdmFsdWUsIGdkb3VibGUgbG93ZXIsIGdkb3VibGUgdXBwZXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnZG91YmxlIHN0ZXBJbmNyZW1lbnQsIGdkb3VibGUgcGFnZUluY3JlbWVu
dCwgZ2RvdWJsZSBwYWdlU2l6ZSk7Ci0KLXZvaWQgZ3RrX2FkanVzdG1lbnRfc2V0X3ZhbHVlKEd0
a0FkanVzdG1lbnQqIGFkanVzbWVudCwgZ2RvdWJsZSB2YWx1ZSk7Ci0jZW5kaWYgLy8gR1RLX0NI
RUNLX1ZFUlNJT04oMiwgMTQsIDApCi0KLUdka0RldmljZSogZ2V0RGVmYXVsdEdES1BvaW50ZXJE
ZXZpY2UoR2RrV2luZG93KiB3aW5kb3cpOwotR2RrQ3Vyc29yKiBibGFua0N1cnNvcigpOwotCi0j
aWYgIUdMSUJfQ0hFQ0tfVkVSU0lPTigyLCAyNywgMSkKLWdib29sZWFuIGdfc2lnbmFsX2FjY3Vt
dWxhdG9yX2ZpcnN0X3dpbnMoR1NpZ25hbEludm9jYXRpb25IaW50KiBpbnZvY2F0aW9uSGludCwg
R1ZhbHVlKiByZXR1cm5BY2N1bXVsYXRvciwgY29uc3QgR1ZhbHVlKiBoYW5kbGVyUmV0dXJuLCBn
cG9pbnRlciBkYXRhKTsKLSNlbmRpZgotCi0jaWYgIUdUS19DSEVDS19WRVJTSU9OKDMsIDMsIDYp
Ci12b2lkIGdka19zY3JlZW5fZ2V0X21vbml0b3Jfd29ya2FyZWEoR2RrU2NyZWVuICosIGludCBt
b25pdG9yLCBHZGtSZWN0YW5nbGUgKmFyZWEpOwotI2VuZGlmCi0KLUdfRU5EX0RFQ0xTCi0KLSNl
bmRpZiAvLyBHdGtWZXJzaW9uaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dO
VW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KaW5kZXggY2Nm
YjEwMzRmMjEyNTBiZTZiMjZmODI3MjQ1MGNiNDFiNmFjMmJjMC4uYTJlNDgwNThmYzc2NjNhOTlh
MTQ3YWM2ODg0YzMyYjdjMTIxYjgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvR05V
bWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KQEAgLTQ3
LDYgKzQ3LDcgQEAgbGlid2Via2l0Z3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BX
RUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0NQUEYKIAktSSQoR0VOU09VUkNFU19XRUJL
SVRET00pIFwKIAktSVNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdCBcCiAJJChnbG9iYWxfY3BwZmxh
Z3MpIFwKKwkkKHBsYXRmb3JtZ3RrX2NwcGZsYWdzKSBcCiAJJCh3ZWJjb3JlX2NwcGZsYWdzKSBc
CiAJJCh3ZWJjb3JlZ3RrX2NwcGZsYWdzKSBcCiAJJChqYXZhc2NyaXB0Y29yZV9jcHBmbGFncykg
XApAQCAtNzksNiArODAsNyBAQCBsaWJ3ZWJraXRndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVS
U0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfTERGTAogCiBsaWJ3ZWJraXRn
dGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVS
U0lPTkBfbGFfTElCQUREIDo9IFwKIAktbHB0aHJlYWQgXAorCWxpYlBsYXRmb3JtR3RrLmxhIFwK
IAlsaWJXZWJDb3JlLmxhIFwKIAlsaWJXZWJDb3JlUGxhdGZvcm0ubGEgXAogCWxpYldlYkNvcmVN
b2R1bGVzLmxhIFwKQEAgLTYyMiw3ICs2MjQsNyBAQCBQcm9ncmFtc191bml0dGVzdHNfdGVzdGtl
eWV2ZW50c19MREFERCA9ICQod2Via2l0X3Rlc3RzX2xkYWRkKQogUHJvZ3JhbXNfdW5pdHRlc3Rz
X3Rlc3RrZXlldmVudHNfTERGTEFHUyA9ICQod2Via2l0X3Rlc3RzX2xkZmxhZ3MpCiAKIFByb2dy
YW1zX3VuaXR0ZXN0c190ZXN0Y29weWFuZHBhc3RlX1NPVVJDRVMgPSBTb3VyY2UvV2ViS2l0L2d0
ay90ZXN0cy90ZXN0Y29weWFuZHBhc3RlLmMgXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9HdGtWZXJzaW9uaW5nLmMKKwlTb3VyY2UvUGxhdGZvcm0vZ3RrL0d0a1ZlcnNpb25pbmcuYwog
UHJvZ3JhbXNfdW5pdHRlc3RzX3Rlc3Rjb3B5YW5kcGFzdGVfQ0ZMQUdTID0gJCh3ZWJraXRfdGVz
dHNfY2ZsYWdzKSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrIFwK
IAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCBjODVk
M2QwM2Q0ZjRhNTdmNWE1NTU2Yzg2Njg3NmEyMjE2MDg1YWYwLi4wNDcwMWM5YWNlODYxYWE5MmFk
NTI5MWE1OTBhOWQxMzVjMzdjMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtl
ZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtOCw2ICs4LDcg
QEAgbGliX0xUTElCUkFSSUVTICs9IFwKICMgV2UgbmVlZCB0byBtYWtlIHN1cmUgcGx1Z2luIHBy
b2Nlc3MgaXMgYWx3YXlzIGJ1aWx0IHdpdGggZ3RrMiwgYmVjYXVzZSBwbHVnaW5zIGxpa2UgZmxh
c2gKICMgc3RpbGwgdXNlIGd0azIuIFNpbmNlIHdlYmNvcmUgd2FzIGJ1aWx0IHdpdGggZ3RrMywg
d2UgbmVlZCB0byBidWlsZCB3ZWJjb3JlZ3RrIHNvdXJjZXMgYWdhaW4gd2l0aCBndGsyCiBub2lu
c3RfTFRMSUJSQVJJRVMgKz0gXAorCWxpYlBsYXRmb3JtR3RrMi5sYSBcCiAJbGliV2ViQ29yZUd0
azIubGEKIAogbGliZXhlY19QUk9HUkFNUyArPSBcCkBAIC0xMjUsNiArMTI2LDcgQEAgbGlid2Vi
a2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5P
Ul9WRVJTSU9OQF9sYV9DUFAKIAktREJVSUxESU5HX1dFQktJVCBcCiAJLURXRUJLSVQyX0NPTVBJ
TEFUSU9OIFwKIAktREVOQUJMRV9QTFVHSU5fUFJPQ0VTUz0xIFwKKwkkKHBsYXRmb3JtZ3RrX2Nw
cGZsYWdzKSBcCiAJJCh3ZWJjb3JlX2NwcGZsYWdzKSBcCiAJJCh3ZWJjb3JlZ3RrX2NwcGZsYWdz
KSBcCiAJJChqYXZhc2NyaXB0Y29yZV9jcHBmbGFncykgXApAQCAtMTgyLDYgKzE4NCw3IEBAIGVu
ZGlmCiAKIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJ
VEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfTElCQUREICs9IFwKIAlsaWJqYXZhc2NyaXB0Y29y
ZWd0ay1AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9W
RVJTSU9OQC5sYSBcCisJbGliUGxhdGZvcm1HdGsubGEgXAogCWxpYldlYkNvcmVET00ubGEgXAog
CWxpYldlYkNvcmVHdGsubGEgXAogCSQoQ0FJUk9fTElCUykgXApAQCAtNDY1LDYgKzQ2OCw3IEBA
IGxpYldlYkNvcmVHdGsyX2xhX0NQUEZMQUdTID0gXAogCS1EQlVJTERJTkdfV0VCS0lUIFwKIAkt
REdUS19BUElfVkVSU0lPTl8yPTEgXAogCSQoZ2xvYmFsX2NwcGZsYWdzKSBcCisJJChwbGF0Zm9y
bWd0a19jcHBmbGFncykgXAogCSQod2ViY29yZV9jcHBmbGFncykgXAogCSQod2ViY29yZWd0a19j
cHBmbGFncykgXAogCSQoamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MpIFwKQEAgLTQ4NSw2ICs0ODks
NDggQEAgbGliV2ViQ29yZUd0azJfbGFfQ1BQRkxBR1MgPSBcCiAJJChYUkVOREVSX0NGTEFHUykg
XAogCSQoWFRfQ0ZMQUdTKQogCitsaWJQbGF0Zm9ybUd0azJfbGFfU09VUkNFUyA9IFwKKwkkKHBs
YXRmb3JtZ3RrX3NvdXJjZXMpCisKK2xpYlBsYXRmb3JtR3RrMl9sYV9DWFhGTEFHUyA9IFwKKwkt
ZnZpc2liaWxpdHktaW5saW5lcy1oaWRkZW4gXAorCSQoZ2xvYmFsX2N4eGZsYWdzKQorCitsaWJQ
bGF0Zm9ybUd0azJfbGFfQ0ZMQUdTID0gXAorCS1mdmlzaWJpbGl0eT1oaWRkZW4gXAorCSQoZ2xv
YmFsX2NmbGFncykKKworbGliUGxhdGZvcm1HdGsyX2xhX0NQUEZMQUdTID0gXAorCS1EQlVJTERJ
TkdfV0VCS0lUIFwKKwktREdUS19BUElfVkVSU0lPTl8yPTEgXAorCSQoZ2xvYmFsX2NwcGZsYWdz
KSBcCisJJChwbGF0Zm9ybWd0a19jcHBmbGFncykgXAorCSQoamF2YXNjcmlwdGNvcmVfY3BwZmxh
Z3MpIFwKKwktZm5vLXN0cmljdC1hbGlhc2luZyBcCisJJChISUxET05fQ1BQRkxBR1MpIFwKKwkk
KENBSVJPX0NGTEFHUykgXAorCSQoQ0xVVFRFUl9DRkxBR1MpIFwKKwkkKENPVkVSQUdFX0NGTEFH
UykgXAorCSQoRU5DSEFOVF9DRkxBR1MpIFwKKwkkKEZSRUVUWVBFX0NGTEFHUykgXAorCSQoR0FJ
TF9DRkxBR1MpIFwKKwkkKEdBTUVQQURfQ0ZMQUdTKSBcCisJJChHRU9DTFVFX0NGTEFHUykgXAor
CSQoR0xJQl9DRkxBR1MpIFwKKwkkKEdTVFJFQU1FUl9DRkxBR1MpIFwKKwkkKEdUS19DRkxBR1Mp
IFwKKwkkKEhJTERPTl9DRkxBR1MpIFwKKwkkKExJQlNFQ1JFVF9DRkxBR1MpIFwKKwkkKExJQlNP
VVBfQ0ZMQUdTKSBcCisJJChMSUJYTUxfQ0ZMQUdTKSBcCisJJChMSUJYU0xUX0NGTEFHUykgXAor
CSQoU1FMSVRFM19DRkxBR1MpIFwKKwkkKFVOSUNPREVfQ0ZMQUdTKSBcCisJJChYQ09NUE9TSVRF
X0NGTEFHUykgXAorCSQoWERBTUFHRV9DRkxBR1MpIFwKKwkkKFhSRU5ERVJfQ0ZMQUdTKSBcCisJ
JChYVF9DRkxBR1MpCisKICMgSW5qZWN0ZWQgQnVuZGxlCiBpbmplY3RlZGJ1bmRsZWRpciA9ICQo
bGliZGlyKS93ZWJraXQyZ3RrLTMuMC9pbmplY3RlZC1idW5kbGUKIGlmIEVOQUJMRV9XRUJLSVQy
CkBAIC01NDcsNiArNTkzLDcgQEAgUHJvZ3JhbXNfV2ViS2l0UGx1Z2luUHJvY2Vzc19DUFBGTEFH
UyA9IFwKIAktREVOQUJMRV9QTFVHSU5fUFJPQ0VTUz0xIFwKIAktRExJQkVYRUNESVI9XCIiJChs
aWJleGVjZGlyKSJcIiBcCiAJJChnbG9iYWxfY3BwZmxhZ3MpIFwKKwkkKHBsYXRmb3JtZ3RrX2Nw
cGZsYWdzKSBcCiAJJCh3ZWJjb3JlX2NwcGZsYWdzKSBcCiAJJCh3ZWJjb3JlZ3RrX2NwcGZsYWdz
KSBcCiAJJChqYXZhc2NyaXB0Y29yZV9jcHBmbGFncykgXApAQCAtNTg2LDkgKzYzMywxMCBAQCBQ
cm9ncmFtc19XZWJLaXRQbHVnaW5Qcm9jZXNzX0xEQUREICs9IFwKIGVuZGlmCiAKIFByb2dyYW1z
X1dlYktpdFBsdWdpblByb2Nlc3NfTERBREQgKz0gXAorCWxpYlBsYXRmb3JtR3RrMi5sYSBcCiAJ
bGliV2ViQ29yZU1vZHVsZXMubGEgXAotCWxpYldlYkNvcmVQbGF0Zm9ybS5sYSBcCiAJbGliV2Vi
Q29yZUd0azIubGEgXAorCWxpYldlYkNvcmVQbGF0Zm9ybS5sYSBcCiAJJChDQUlST19MSUJTKSBc
CiAJJChDT1ZFUkFHRV9MREZMQUdTKSBcCiAJJChHRU9DTFVFX0xJQlMpIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvZ2VuZXJhdGUtZm9yd2FyZGluZy1oZWFkZXJzLnBsIGIv
U291cmNlL1dlYktpdDIvU2NyaXB0cy9nZW5lcmF0ZS1mb3J3YXJkaW5nLWhlYWRlcnMucGwKaW5k
ZXggNzJjZjYzZjIwYjI1ZjM1ZGVmODUyYmViZmEwZTJkODk1Nzk0MjdjYi4uYjc4M2E1ODg5MGJk
ZTQ1N2IxMjcwNTczOWU1YzY0N2I5YmQzZWQ0NyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdDIv
U2NyaXB0cy9nZW5lcmF0ZS1mb3J3YXJkaW5nLWhlYWRlcnMucGwKKysrIGIvU291cmNlL1dlYktp
dDIvU2NyaXB0cy9nZW5lcmF0ZS1mb3J3YXJkaW5nLWhlYWRlcnMucGwKQEAgLTM2LDcgKzM2LDcg
QEAgdXNlIEZpbGU6OlNwZWM6OkZ1bmN0aW9uczsKIG15ICRzcmNSb290ID0gcmVhbHBhdGgoRmls
ZTo6U3BlYy0+Y2F0ZmlsZShkaXJuYW1lKGFic19wYXRoKCQwKSksICIuLi8uLiIpKTsKIG15ICRp
bmNGcm9tUm9vdCA9IGFic19wYXRoKCRBUkdWWzBdKTsKIG15IEBwbGF0Zm9ybVByZWZpeGVzID0g
KCJibGFja2JlcnJ5IiwgImNmIiwgImNocm9taXVtIiwgImN1cmwiLCAiZWZsIiwgImd0ayIsICJt
YWMiLCAicXQiLCAic291cCIsICJ2OCIsICJ3aW4iLCAid3giKTsKLW15IEBmcmFtZXdvcmtzID0g
KCAiSmF2YVNjcmlwdENvcmUiLCAiV2ViQ29yZSIsICJXZWJLaXQyIik7CitteSBAZnJhbWV3b3Jr
cyA9ICgiSmF2YVNjcmlwdENvcmUiLCAiUGxhdGZvcm0iLCAiV2ViQ29yZSIsICJXZWJLaXQyIik7
CiBteSBAc2tpcHBlZFByZWZpeGVzOwogbXkgQGZyYW1ld29ya0hlYWRlcnM7CiBteSAkZnJhbWV3
b3JrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVy
c0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNw
cAppbmRleCAzOTY5ZTBjODY1ZWRlMDIyYmVhNTlhMTZiYjYyODZlMDFhYTg0OWZlLi4zMWNkNWRh
OGE0YjQwNzgwNTJmYzg1Yzk4NGIyY2ZkYzQyOGRiZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtMjksMTAgKzI5LDEwIEBACiAj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgog
I2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgPFBsYXRmb3JtL0d0
a1ZlcnNpb25pbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFPYmplY3RHdGsuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRl
eHQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0d0a1ZlcnNpb25pbmcuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BsYXRmb3JtQ29udGV4dENhaXJvLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0
ci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFj
dG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAK
aW5kZXggMmM3M2RjN2UyMjZkMzhkZGM3ZDg0M2Q5N2M5MjNkODJkNWRmNmVlOC4uYmQ3M2FiMWU4
MzAxMzNmMmJhYWI0MzVkZGY5MGMxNzViMWJlYjU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcApAQCAtMjgsMTAgKzI4LDEwIEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViRXZlbnRGYWN0b3J5LmgiCiAKLSNpbmNsdWRlICJH
dGtWZXJzaW9uaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCiAjaW5j
bHVkZSAiU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMuaCIKKyNp
bmNsdWRlIDxQbGF0Zm9ybS9HdGtWZXJzaW9uaW5nLmg+CiAjaW5jbHVkZSA8Z2RrL2dkay5oPgog
I2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlLmNwcAppbmRleCAyMzQ0Zjg5NGRmMzNlMGQzNzU0YWFmMWE5NDM2MjY0OGEyMWM1ZmJk
Li5iYTcyZGRjODY5OGVkNWQ1MDIyMDRmZTAyOWI0MzI0YWY3ZDZlY2JmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3Bw
CkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViVmlld0Jhc2VJbnB1dE1l
dGhvZEZpbHRlci5oIgorI2luY2x1ZGUgPFBsYXRmb3JtL0d0a1ZlcnNpb25pbmcuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0NsaXBib2FyZEd0ay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2xpcGJvYXJk
VXRpbGl0aWVzR3RrLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhT2JqZWN0R3RrLmg+CkBAIC01
MCw3ICs1MSw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtDbGlja0NvdW50ZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0d0a0RyYWdBbmREcm9wSGVscGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9H
dGtVdGlsaXRpZXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0d0a1ZlcnNpb25pbmcuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYXN0ZWJv
YXJkSGVscGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2Fw
ZVBsdWdpblgxMS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcAppbmRleCBhMTg0Njg3OGIzMTA0NjE0YjdhMjZm
YzI3Y2VhYjc5YTFhNGI5OGUwLi42ZTA3NzY3ZDFkMWNkZjI5MjdlNmE0ODIzMjAyZDhiZjRkNjIx
NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcApAQCAtNDIsNyAr
NDIsNyBAQAogI2luY2x1ZGUgPGd0ay9ndGt4Lmg+CiAjZW5kaWYKICNpbmNsdWRlIDxnZGsvZ2Rr
eC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvR3RrVmVyc2lvbmluZy5oPgorI2luY2x1ZGUgPFBsYXRm
b3JtL0d0a1ZlcnNpb25pbmcuaD4KICNlbGlmIFBMQVRGT1JNKEVGTCkgJiYgZGVmaW5lZChIQVZF
X0VDT1JFX1gpCiAjaW5jbHVkZSA8RWNvcmVfWC5oPgogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGY3MmRmN2E4Mzg0NDNmZDQxN2My
ZjcwYTdhZDJiNGQ5YWUwNDQ1NS4uMjg4MWRhNTQzMjUxOTg1ODE5N2U1MzgzYmQwNzBhNzcyNWE0
OWVjMiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSw1ICsxLDE2IEBACiAyMDEzLTAzLTEyICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdh
bGlhLmNvbT4KIAorICAgICAgICBbR1RLXSBTZXQgdXAgdGhlIGxpYlBsYXRmb3JtR3RrLmxhIGxp
YnJhcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
MTczOAorCisgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KKworICAgICAgICAq
IEdOVW1ha2VmaWxlLmFtOiBSZWZlcmVuY2UgcGxhdGZvcm1ndGtfY3BwZmxhZ3MgdmFyaWFibGUg
YWxvbmcgd2l0aCB3ZWJjb3JlZ3RrX2NwcGZsYWdzIHZhcmlhYmxlLgorICAgICAgICBBZGp1c3Qg
dGhlIHBhdGggdG8gR3RrVmVyc2lvbmluZy5jLCB0aGUgZmlsZSBoYXMgbW92ZWQgdW5kZXIgU291
cmNlL1BsYXRmb3JtLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW06IFJl
ZmVyZW5jZSBwbGF0Zm9ybWd0a19jcHBmbGFncyB2YXJpYWJsZSBhbG9uZyB3aXRoIHdlYmNvcmVn
dGtfY3BwZmxhZ3MgdmFyaWFibGUuCisKKzIwMTMtMDMtMTIgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCiAgICAgICAgIFtHVEtdIEVuYWJsZSBXZWIgQXVkaW8gaW4gZGV2
ZWxvcG1lbnQgYnVpbGRzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTE4MzEKIApkaWZmIC0tZ2l0IGEvVG9vbHMvR05VbWFrZWZpbGUuYW0gYi9Ub29s
cy9HTlVtYWtlZmlsZS5hbQppbmRleCA4MGFlMjI2YTM1NGE5MzA0Y2NmMGE5Yjc5OTA3NzkzMjZj
MDMxZWJlLi4wZDE4NGQwNzViYTIxYTAwOWExNjFhYzk0NDZmZjRhNTFmM2IyZmQ0IDEwMDY0NAot
LS0gYS9Ub29scy9HTlVtYWtlZmlsZS5hbQorKysgYi9Ub29scy9HTlVtYWtlZmlsZS5hbQpAQCAt
MTE1LDYgKzExNSw3IEBAIFByb2dyYW1zX0R1bXBSZW5kZXJUcmVlX0NQUEZMQUdTID0gXAogCS1J
JCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzIFwKIAktSSQodG9wX2J1aWxkZGlyKS9Tb3Vy
Y2UvV2ViS2l0L2d0ayBcCiAJJChqYXZhc2NyaXB0Y29yZV9jcHBmbGFncykgXAorCSQocGxhdGZv
cm1ndGtfY3BwZmxhZ3MpIFwKIAkkKHdlYmNvcmVfY3BwZmxhZ3MpCiAKIGlmIFRBUkdFVF9YMTEK
QEAgLTE2OCw3ICsxNjksNyBAQCBQcm9ncmFtc19EdW1wUmVuZGVyVHJlZV9TT1VSQ0VTID0gXAog
CVRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXh0SW5wdXRDb250cm9sbGVyLmggXAogCVRvb2xz
L0R1bXBSZW5kZXJUcmVlL2d0ay9UZXh0SW5wdXRDb250cm9sbGVyLmNwcCBcCiAJVG9vbHMvRHVt
cFJlbmRlclRyZWUvZ3RrL1dvcmtRdWV1ZUl0ZW1HdGsuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5jCisJU291cmNlL1BsYXRmb3JtL2d0ay9HdGtWZXJz
aW9uaW5nLmMKIAogUHJvZ3JhbXNfRHVtcFJlbmRlclRyZWVfQ1hYRkxBR1MgPSBcCiAJJChnbG9i
YWxfY3h4ZmxhZ3MpIFwKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZp
bGUuYW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCmluZGV4IDYyOTMxZjcy
MmJmYjdjZDE2MWRmZDE5ZTBlNThjZDQ5NTdjOTQ2MmIuLjM0NGY2MGI0NTI1MjljYTZmMGZiY2Vi
ZTJmNTAxNjg5MGQyZTM4OTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFr
ZWZpbGUuYW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbQpAQCAtNzIs
NiArNzIsNyBAQCBub2luc3RfUFJPR1JBTVMgKz0gXAogCiBQcm9ncmFtc19UZXN0V2ViS2l0QVBJ
X1Rlc3RHdGtfQ1BQRkxBR1MgPSBcCiAJJChQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1Rlc3RXVEZf
Q1BQRkxBR1MpIFwKKwkkKHBsYXRmb3JtZ3RrX2NwcGZsYWdzKSBcCiAJJCh3ZWJjb3JlX2NwcGZs
YWdzKSBcCiAJJCh3ZWJjb3JlZ3RrX2NwcGZsYWdzKSBcCiAJJChGUkVFVFlQRV9DRkxBR1MpIFwK
QEAgLTgzLDYgKzg0LDcgQEAgUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9UZXN0R3RrX0xEQUREID0g
XAogCUxpYnJhcmllcy9saWJUZXN0V2ViS2l0QVBJTWFpbi5sYSBcCiAJTGlicmFyaWVzL2xpYmd0
ZXN0LmxhIFwKIAlsaWJqYXZhc2NyaXB0Y29yZWd0ay1AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJT
SU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQC5sYSBcCisJbGliUGxhdGZvcm1HdGsu
bGEgXAogCWxpYldlYkNvcmUubGEgXAogCWxpYldlYkNvcmVHdGsubGEgXAogCSQoRlJFRVRZUEVf
TElCUykgXApkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDQ3NzhkMjI0
MWE5MzU2NjgzMzRiNDU1Y2RiMGZmNzAzZmZkODQwYzcuLjY1ZWZhZTcwMDgyZTA1OTU5MmU1MzA1
ZDYwMzYxZDk2YThiODI5MjcgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAxMy0wMy0xMiAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gU2V0IHVwIHRoZSBsaWJQbGF0Zm9ybUd0ay5sYSBs
aWJyYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTE3MzgKKworICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCisKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5hbTogRGVmaW5lIHRoZSB0d28gdmFyaWFibGVzIHRoYXQgd2lsbCBob2xk
IHNvdXJjZXMgbGlzdCBhbmQgY3BwZmxhZ3MgYXMgcmVxdWlyZWQgZm9yIHRoZSBuZXcgbGlicmFy
eS4KKyAgICAgICAgSW5jbHVkZSB0aGUgbmV3IEdOVW1ha2VmaWxlLmFtIHRoYXQncyBub3cgYXZh
aWxhYmxlIHVuZGVyIFNvdXJjZS9QbGF0Zm9ybS4KKwogMjAxMy0wMy0xMSAgVG9iaWFzIE11ZWxs
ZXIgIDx0b2JpYXNtdWVAZ25vbWUub3JnPgogCiAgICAgICAgIFtBdXRvdG9vbHNdIFNldCBFTkFC
TEVfR1RLX0RPQyB0byBmYWxzZSBpZiBndGstZG9jIGlzIG5vdCBpbnN0YWxsZWQKZGlmZiAtLWdp
dCBhL0dOVW1ha2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5kZXggODFlZTk1ZTE3MWI2ZTZh
NzY3OTc0NWI0NmEwODliMDlkMzY4MjdkZi4uMTI5NmZiMGU2M2RkOGI5YWE1YjU5OGJjYzhmNDcx
ZmQyNmM3Y2E0NCAxMDA2NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUu
YW0KQEAgLTcwLDYgKzcwLDggQEAgamF2YXNjcmlwdGNvcmVfYnVpbHRfc291cmNlcyA6PQogamF2
YXNjcmlwdGNvcmVfYnVpbHRfbm9zb3VyY2VzIDo9CiBsbGludF9ub3NvdXJjZXMgOj0KIG9mZmxp
bmVhc21fbm9zb3VyY2VzIDo9CitwbGF0Zm9ybWd0a19jcHBmbGFncyA6PQorcGxhdGZvcm1ndGtf
c291cmNlcyA6PQogd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzIDo9CiB3ZWJjb3JlX21vZHVsZXNf
c291cmNlcyA6PQogd2ViY29yZV9zdmdfYnVpbHRfc291cmNlcyA6PQpAQCAtMTc2LDYgKzE3OCw3
IEBAIEVYVFJBX0RJU1QgKz0gXAogIyBJbmNsdWRlIG1vZHVsZSBtYWtlZmlsZXMKIGluY2x1ZGUg
U291cmNlL1dURi9HTlVtYWtlZmlsZS5hbQogaW5jbHVkZSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
R05VbWFrZWZpbGUuYW0KK2luY2x1ZGUgU291cmNlL1BsYXRmb3JtL0dOVW1ha2VmaWxlLmFtCiBp
bmNsdWRlIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCiBpbmNsdWRlIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KIGluY2x1ZGUgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL3BvL0dOVW1ha2VmaWxlLmFtCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>