<?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>71568</bug_id>
          
          <creation_ts>2011-11-04 10:19:45 -0700</creation_ts>
          <short_desc>[GTK] Add a way to change web view settings in MiniBrowser</short_desc>
          <delta_ts>2012-01-02 06:56:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>496268</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-11-04 10:19:45 -0700</bug_when>
    <thetext>GtkLauncher uses command line options, but I thnk it would be better to be able to change settings while mini browser is running.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496271</commentid>
    <comment_count>1</comment_count>
      <attachid>113675</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-11-04 10:27:34 -0700</bug_when>
    <thetext>Created attachment 113675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496273</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-04 10:31:14 -0700</bug_when>
    <thetext>Attachment 113675 did not pass style-queue:

Failed 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;Tools/Cha...&quot; exit_code: 1

Tools/MiniBrowser/gtk/BrowserSettingsDialog.h:46:  The parameter name &quot;settings&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/MiniBrowser/gtk/BrowserSettingsDialog.c:26:  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]
Tools/MiniBrowser/gtk/BrowserCellRendererVariant.c:26:  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]
Total errors found: 3 in 10 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>496281</commentid>
    <comment_count>3</comment_count>
      <attachid>113675</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-11-04 10:38:02 -0700</bug_when>
    <thetext>Comment on attachment 113675
Patch

Attachment 113675 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10333016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496327</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-11-04 11:13:06 -0700</bug_when>
    <thetext>hmm, G_VALUE_INIT was added in glib 2.30.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499909</commentid>
    <comment_count>5</comment_count>
      <attachid>114501</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-11-10 08:00:39 -0800</bug_when>
    <thetext>Created attachment 114501
Updated patch to not use G_VALUE_INIT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499916</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-10 08:13:31 -0800</bug_when>
    <thetext>Attachment 114501 did not pass style-queue:

Failed 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;Tools/Cha...&quot; exit_code: 1

Tools/MiniBrowser/gtk/BrowserSettingsDialog.h:46:  The parameter name &quot;settings&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/MiniBrowser/gtk/BrowserSettingsDialog.c:26:  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]
Tools/MiniBrowser/gtk/BrowserCellRendererVariant.c:26:  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]
Total errors found: 3 in 10 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>527649</commentid>
    <comment_count>7</comment_count>
      <attachid>120663</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-12-28 06:38:05 -0800</bug_when>
    <thetext>Created attachment 120663
Updated patch

Several fixes in this new patch:

 - Support all setting types (boolean, string and uint)
 - Fix compile warning with the GValue stack initialization.
 - Use GtkToolItem instead of GtkMenuToolItem for the preferences toolbar button.
 - Use the property nick instead of the property name in the dialog.
 - Show the property blurb as a tooltip.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527655</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-28 06:48:04 -0800</bug_when>
    <thetext>Attachment 120663 did not pass style-queue:

Failed 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;Tools/Cha...&quot; exit_code: 1

Tools/MiniBrowser/gtk/BrowserSettingsDialog.h:46:  The parameter name &quot;settings&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/MiniBrowser/gtk/BrowserSettingsDialog.c:26:  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]
Tools/MiniBrowser/gtk/BrowserCellRendererVariant.c:26:  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]
Total errors found: 3 in 10 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>528462</commentid>
    <comment_count>9</comment_count>
      <attachid>120663</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-02 04:23:36 -0800</bug_when>
    <thetext>Comment on attachment 120663
Updated patch

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

&gt; Tools/MiniBrowser/gtk/BrowserCellRendererVariant.c:65
&gt; +    g_object_unref(renderer-&gt;toggleRenderer);

Shouldn&apos;t textRenderer and spinRenderer be unreffed here as well?

&gt; Tools/MiniBrowser/gtk/BrowserCellRendererVariant.c:186
&gt; +    if (errno || value &gt; gtk_adjustment_get_upper(adjustment) || value &lt; gtk_adjustment_get_lower(adjustment) || endPtr == newText)

Maybe it&apos;d be good to emit a warning in this case?

&gt; Tools/MiniBrowser/gtk/BrowserCellRendererVariant.c:193
&gt; +static gint browserCellRendererVariantCellRendererActivate(GtkCellRenderer *cell, GdkEvent *event, GtkWidget *widget, const gchar *path, const GdkRectangle *bgArea, const GdkRectangle *cellArea, GtkCellRendererState flags)

Just a nit, but shouldn&apos;t the return type be gboolean?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528464</commentid>
    <comment_count>10</comment_count>
      <attachid>120663</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-01-02 04:30:21 -0800</bug_when>
    <thetext>Comment on attachment 120663
Updated patch

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

&gt;&gt; Tools/MiniBrowser/gtk/BrowserCellRendererVariant.c:65
&gt;&gt; +    g_object_unref(renderer-&gt;toggleRenderer);
&gt; 
&gt; Shouldn&apos;t textRenderer and spinRenderer be unreffed here as well?

Indeed.

&gt;&gt; Tools/MiniBrowser/gtk/BrowserCellRendererVariant.c:186
&gt;&gt; +    if (errno || value &gt; gtk_adjustment_get_upper(adjustment) || value &lt; gtk_adjustment_get_lower(adjustment) || endPtr == newText)
&gt; 
&gt; Maybe it&apos;d be good to emit a warning in this case?

You mean g_warning()?

&gt;&gt; Tools/MiniBrowser/gtk/BrowserCellRendererVariant.c:193
&gt;&gt; +static gint browserCellRendererVariantCellRendererActivate(GtkCellRenderer *cell, GdkEvent *event, GtkWidget *widget, const gchar *path, const GdkRectangle *bgArea, const GdkRectangle *cellArea, GtkCellRendererState flags)
&gt; 
&gt; Just a nit, but shouldn&apos;t the return type be gboolean?

Right, I don&apos;t know why I used gint there :-P Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528467</commentid>
    <comment_count>11</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-02 04:45:13 -0800</bug_when>
    <thetext>(In reply to comment #10)

&gt; &gt;&gt; Tools/MiniBrowser/gtk/BrowserCellRendererVariant.c:186
&gt; &gt;&gt; +    if (errno || value &gt; gtk_adjustment_get_upper(adjustment) || value &lt; gtk_adjustment_get_lower(adjustment) || endPtr == newText)
&gt; &gt; 
&gt; &gt; Maybe it&apos;d be good to emit a warning in this case?
&gt; 
&gt; You mean g_warning()?
&gt; 

Yes I was think about g_warning() :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528468</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-01-02 05:09:10 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; 
&gt; &gt; &gt;&gt; Tools/MiniBrowser/gtk/BrowserCellRendererVariant.c:186
&gt; &gt; &gt;&gt; +    if (errno || value &gt; gtk_adjustment_get_upper(adjustment) || value &lt; gtk_adjustment_get_lower(adjustment) || endPtr == newText)
&gt; &gt; &gt; 
&gt; &gt; &gt; Maybe it&apos;d be good to emit a warning in this case?
&gt; &gt; 
&gt; &gt; You mean g_warning()?
&gt; &gt; 
&gt; 
&gt; Yes I was think about g_warning() :)

Ah, ok, I&apos;ll add the g_warning() then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528480</commentid>
    <comment_count>13</comment_count>
      <attachid>120874</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-01-02 05:47:58 -0800</bug_when>
    <thetext>Created attachment 120874
Updated patch according to review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528484</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-02 05:51:52 -0800</bug_when>
    <thetext>Attachment 120874 did not pass style-queue:

Failed 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;Tools/Cha...&quot; exit_code: 1

Tools/MiniBrowser/gtk/BrowserSettingsDialog.h:46:  The parameter name &quot;settings&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Tools/MiniBrowser/gtk/BrowserSettingsDialog.c:26:  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]
Tools/MiniBrowser/gtk/BrowserCellRendererVariant.c:26:  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]
Total errors found: 3 in 10 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>528487</commentid>
    <comment_count>15</comment_count>
      <attachid>120874</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-02 06:07:50 -0800</bug_when>
    <thetext>Comment on attachment 120874
Updated patch according to review comments

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

Thanks! Just a last thing to fix before landing, I didn&apos;t notice it during the first review.

&gt; Tools/MiniBrowser/gtk/BrowserSettingsDialog.c:131
&gt; +    GParamSpec **properties = g_object_class_list_properties(G_OBJECT_GET_CLASS(settings), &amp;propertiesCount);

Looks like properties is leaked</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528499</commentid>
    <comment_count>16</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-01-02 06:53:46 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 120874 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=120874&amp;action=review
&gt; 
&gt; Thanks! Just a last thing to fix before landing, I didn&apos;t notice it during the first review.

No problem! thanks for reviewing it :-)

&gt; &gt; Tools/MiniBrowser/gtk/BrowserSettingsDialog.c:131
&gt; &gt; +    GParamSpec **properties = g_object_class_list_properties(G_OBJECT_GET_CLASS(settings), &amp;propertiesCount);
&gt; 
&gt; Looks like properties is leaked

Yes, good catch, I&apos;ll fix it before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528501</commentid>
    <comment_count>17</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-01-02 06:56:54 -0800</bug_when>
    <thetext>Committed r103906: &lt;http://trac.webkit.org/changeset/103906&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113675</attachid>
            <date>2011-11-04 10:27:34 -0700</date>
            <delta_ts>2011-11-10 08:00:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-mb-settings.diff</filename>
            <type>text/plain</type>
            <size>28618</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkMDQ3NTdiLi5lYTllNjQ5
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTEtMTEtMDQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdIEFkZCBhIHdheSB0byBjaGFuZ2Ugd2ViIHZpZXcgc2V0dGluZ3MgaW4g
TWluaUJyb3dzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcxNTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbToKKwogMjAxMS0xMS0wNCAgVG9yIEFybmUgVmVzdGLDuCAgPHRv
ci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBSZWZhY3RvciBhbmQgY2xl
YW4gdXAgdGhlIHFtYWtlIGJ1aWxkIHN5c3RlbQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGNkZjgzMDMuLjY3YTMyYWIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsNSArMSw0NSBAQAogMjAx
MS0xMS0wNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKKyAg
ICAgICAgW0dUS10gQWRkIGEgd2F5IHRvIGNoYW5nZSB3ZWIgdmlldyBzZXR0aW5ncyBpbiBNaW5p
QnJvd3NlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzE1NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgYSBwcmVmZXJlbmNlcyBidXR0b24gdG8gdGhlIHRvb2xiYXIgdGhhdCBzaG93cyBhIGRpYWxv
ZyB0bworICAgICAgICBjaGFuZ2Ugc2V0dGluZ3Mgb2YgdGhlIGN1cnJlbnQgd2ViIHZpZXcuIEl0
IHVzZXMgYSBHdGtUcmVlVmlldworICAgICAgICB3aXRoIGEgY3VzdG9tIGNlbGwgcmVuZGVyZXIg
dG8gc3VwcG9ydCBtdWx0aXBsZSB0eXBlcyBvZgorICAgICAgICB2YWx1ZXMuIEl0IG9ubHkgc3Vw
cG9ydCBib29sZWFuIHZhbHVlcyBmb3Igbm93LCBzaW5jZQorICAgICAgICBXZWJLaXRTZXR0aW5n
cyBvbmx5IGNvbnRhaW5zIGJvb2xlYW4gc2V0dGluZ3MgYXQgdGhlIG1vbWVudC4KKworICAgICAg
ICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudC5jOiBBZGRlZC4K
KyAgICAgICAgKGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50RmluYWxpemUpOgorICAgICAgICAo
YnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRHZXRQcm9wZXJ0eSk6CisgICAgICAgIChicm93c2Vy
Q2VsbFJlbmRlcmVyVmFyaWFudFNldFByb3BlcnR5KToKKyAgICAgICAgKGNlbGxSZW5kZXJlckdl
dFNpemUpOgorICAgICAgICAoYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVuZGVyZXJH
ZXRTaXplKToKKyAgICAgICAgKGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Q2VsbFJlbmRlcmVy
QWN0aXZhdGUpOgorICAgICAgICAoYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVuZGVy
ZXJSZW5kZXIpOgorICAgICAgICAoYnJvd3Nlcl9jZWxsX3JlbmRlcmVyX3ZhcmlhbnRfaW5pdCk6
CisgICAgICAgIChicm93c2VyX2NlbGxfcmVuZGVyZXJfdmFyaWFudF9jbGFzc19pbml0KToKKyAg
ICAgICAgKGJyb3dzZXJfY2VsbF9yZW5kZXJlcl92YXJpYW50X25ldyk6CisgICAgICAgICogTWlu
aUJyb3dzZXIvZ3RrL0Jyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Lmg6IEFkZGVkLgorICAgICAg
ICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyU2V0dGluZ3NEaWFsb2cuYzogQWRkZWQuCisgICAg
ICAgIChjZWxsUmVuZGVyZXJDaGFuZ2VkKToKKyAgICAgICAgKGJyb3dzZXJTZXR0aW5nc0RpYWxv
Z0ZpbmFsaXplKToKKyAgICAgICAgKGJyb3dzZXJTZXR0aW5nc0RpYWxvZ1NldFByb3BlcnR5KToK
KyAgICAgICAgKGJyb3dzZXJfc2V0dGluZ3NfZGlhbG9nX2luaXQpOgorICAgICAgICAoYnJvd3Nl
clNldHRpbmdzRGlhbG9nQ29uc3RydWN0ZWQpOgorICAgICAgICAoYnJvd3Nlcl9zZXR0aW5nc19k
aWFsb2dfY2xhc3NfaW5pdCk6CisgICAgICAgIChicm93c2VyX3NldHRpbmdzX2RpYWxvZ19uZXcp
OgorICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyU2V0dGluZ3NEaWFsb2cuaDogQWRk
ZWQuCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYzoKKyAgICAgICAg
KHNldHRpbmdzQ2FsbGJhY2spOgorICAgICAgICAoYnJvd3Nlcl93aW5kb3dfaW5pdCk6CisgICAg
ICAgICogTWluaUJyb3dzZXIvZ3RrL0dOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIE1pbmlCcm93
c2VyL2d0ay9icm93c2VyLW1hcnNoYWwubGlzdDogQWRkZWQuCisKKzIwMTEtMTEtMDQgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAgICAgICAgIFtHVEtdIFVz
ZSB3ZWIgdmlldyB0aXRsZSBhcyB3aW5kb3cgdGl0bGUgaW4gTWluaUJyb3dzZXIKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNTQ0CiAKZGlmZiAtLWdp
dCBhL0dOVW1ha2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5kZXggZjkxZTg4ZC4uZTExN2Q2
MCAxMDA2NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTgw
LDYgKzgwLDcgQEAgd2Via2l0Ml9idWlsdF9zb3VyY2VzIDo9CiB3ZWJraXQyX3BsdWdpbl9wcm9j
ZXNzX2J1aWx0X3NvdXJjZXMgOj0KIHdlYmtpdHRlc3RydW5uZXJfYnVpbHRfc291cmNlcyA6PQog
bGlid2ViY29yZWludGVybmFsc19idWlsdF9zb3VyY2VzIDo9CittaW5pYnJvd3Nlcl9idWlsdF9z
b3VyY2VzIDo9CiBnbG9iYWxfY3BwZmxhZ3MgOj0KIGdsb2JhbF9jZmxhZ3MgOj0KIGdsb2JhbF9j
eHhmbGFncyA6PQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJDZWxs
UmVuZGVyZXJWYXJpYW50LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlckNlbGxSZW5k
ZXJlclZhcmlhbnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTdmODI0
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJDZWxsUmVu
ZGVyZXJWYXJpYW50LmMKQEAgLTAsMCArMSwyMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIkJyb3dzZXJDZWxsUmVuZGVyZXJW
YXJpYW50LmgiCisjaW5jbHVkZSAiQnJvd3Nlck1hcnNoYWwuaCIKKworZW51bSB7CisgICAgUFJP
UF8wLAorCisgICAgUFJPUF9WQUxVRQorfTsKKworZW51bSB7CisgICAgQ0hBTkdFRCwKKworICAg
IExBU1RfU0lHTkFMCit9OworCitzdHJ1Y3QgX0Jyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50IHsK
KyAgICBHdGtDZWxsUmVuZGVyZXIgcGFyZW50OworCisgICAgR1ZhbHVlICp2YWx1ZTsKKworICAg
IEd0a0NlbGxSZW5kZXJlciAqdG9nZ2xlUmVuZGVyZXI7Cit9OworCitzdHJ1Y3QgX0Jyb3dzZXJD
ZWxsUmVuZGVyZXJWYXJpYW50Q2xhc3MgeworICAgIEd0a0NlbGxSZW5kZXJlckNsYXNzIHBhcmVu
dDsKK307CisKK3N0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCB9OworCitH
X0RFRklORV9UWVBFKEJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50LCBicm93c2VyX2NlbGxfcmVu
ZGVyZXJfdmFyaWFudCwgR1RLX1RZUEVfQ0VMTF9SRU5ERVJFUikKKworc3RhdGljIHZvaWQgYnJv
d3NlckNlbGxSZW5kZXJlclZhcmlhbnRGaW5hbGl6ZShHT2JqZWN0ICpvYmplY3QpCit7CisgICAg
QnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnQgKnJlbmRlcmVyID0gQlJPV1NFUl9DRUxMX1JFTkRF
UkVSX1ZBUklBTlQob2JqZWN0KTsKKworICAgIGdfb2JqZWN0X3VucmVmKHJlbmRlcmVyLT50b2dn
bGVSZW5kZXJlcik7CisgICAgaWYgKHJlbmRlcmVyLT52YWx1ZSkKKyAgICAgICAgZ19ib3hlZF9m
cmVlKEdfVFlQRV9WQUxVRSwgcmVuZGVyZXItPnZhbHVlKTsKKworICAgIEdfT0JKRUNUX0NMQVNT
KGJyb3dzZXJfY2VsbF9yZW5kZXJlcl92YXJpYW50X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9i
amVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50R2V0UHJv
cGVydHkoR09iamVjdCAqb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1ZSAqdmFsdWUsIEdQYXJh
bVNwZWMgKnBzcGVjKQoreworICAgIEJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50ICpyZW5kZXJl
ciA9IEJST1dTRVJfQ0VMTF9SRU5ERVJFUl9WQVJJQU5UKG9iamVjdCk7CisKKyAgICBzd2l0Y2gg
KHByb3BJZCkgeworICAgIGNhc2UgUFJPUF9WQUxVRToKKyAgICAgICAgZ192YWx1ZV9zZXRfYm94
ZWQodmFsdWUsIHJlbmRlcmVyLT52YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJ
ZCwgcHNwZWMpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgYnJvd3NlckNlbGxSZW5kZXJlclZh
cmlhbnRTZXRQcm9wZXJ0eShHT2JqZWN0ICpvYmplY3QsIGd1aW50IHByb3BJZCwgY29uc3QgR1Zh
bHVlICp2YWx1ZSwgR1BhcmFtU3BlYyAqcHNwZWMpCit7CisgICAgQnJvd3NlckNlbGxSZW5kZXJl
clZhcmlhbnQgKnJlbmRlcmVyID0gQlJPV1NFUl9DRUxMX1JFTkRFUkVSX1ZBUklBTlQob2JqZWN0
KTsKKworICAgIHN3aXRjaCAocHJvcElkKSB7CisgICAgY2FzZSBQUk9QX1ZBTFVFOgorICAgICAg
ICBpZiAocmVuZGVyZXItPnZhbHVlKQorICAgICAgICAgICAgZ19ib3hlZF9mcmVlKEdfVFlQRV9W
QUxVRSwgcmVuZGVyZXItPnZhbHVlKTsKKyAgICAgICAgcmVuZGVyZXItPnZhbHVlID0gZ192YWx1
ZV9kdXBfYm94ZWQodmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBzcGVj
KTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGNlbGxSZW5kZXJlckdldFNpemUoR3RrQ2VsbFJl
bmRlcmVyICpyZW5kZXJlciwgR3RrV2lkZ2V0ICp3aWRnZXQsIGNvbnN0IEdka1JlY3RhbmdsZSAq
Y2VsbEFyZWEsIGdpbnQgKnhPZmZzZXQsIGdpbnQgKnlPZmZzZXQsIGdpbnQgKndpZHRoLCBnaW50
ICpoZWlnaHQpCit7CisgICAgR3RrUmVxdWlzaXRpb24gcmVxdWVzdDsKKyAgICBndGtfY2VsbF9y
ZW5kZXJlcl9nZXRfcHJlZmVycmVkX3NpemUocmVuZGVyZXIsIHdpZGdldCwgJnJlcXVlc3QsIE5V
TEwpOworCisgICAgaWYgKHdpZHRoKQorICAgICAgICAqd2lkdGggPSByZXF1ZXN0LndpZHRoOwor
ICAgIGlmIChoZWlnaHQpCisgICAgICAgICpoZWlnaHQgPSByZXF1ZXN0LmhlaWdodDsKKworICAg
IGlmICghY2VsbEFyZWEpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICh4T2Zmc2V0KSB7Cisg
ICAgICAgIGdmbG9hdCB4QWxpZ247CisgICAgICAgIGdfb2JqZWN0X2dldChyZW5kZXJlciwgIngt
YWxpZ24iLCAmeEFsaWduLCBOVUxMKTsKKyAgICAgICAgKnhPZmZzZXQgPSAoKChndGtfd2lkZ2V0
X2dldF9kaXJlY3Rpb24od2lkZ2V0KSA9PSBHVEtfVEVYVF9ESVJfUlRMKSA/CisgICAgICAgICAg
ICAgICAgICAgICAgKDEuMCAtIHhBbGlnbikgOiB4QWxpZ24pICogKGNlbGxBcmVhLT53aWR0aCAt
IHJlcXVlc3Qud2lkdGgpKTsKKyAgICAgICAgKnhPZmZzZXQgPSBNQVgoKnhPZmZzZXQsIDApOwor
ICAgIH0KKyAgICBpZiAoeU9mZnNldCkgeworICAgICAgICBnZmxvYXQgeUFsaWduOworICAgICAg
ICBnX29iamVjdF9nZXQocmVuZGVyZXIsICJ5LWFsaWduIiwgJnlBbGlnbiwgTlVMTCk7CisgICAg
ICAgICp5T2Zmc2V0ID0gKHlBbGlnbiAqIChjZWxsQXJlYS0+aGVpZ2h0IC0gcmVxdWVzdC5oZWln
aHQpKTsKKyAgICAgICAgKnlPZmZzZXQgPSBNQVgoKnlPZmZzZXQsIDApOworICAgIH0KK30KKwor
c3RhdGljIHZvaWQgYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVuZGVyZXJHZXRTaXpl
KEd0a0NlbGxSZW5kZXJlciAqY2VsbCwgR3RrV2lkZ2V0ICp3aWRnZXQsIGNvbnN0IEdka1JlY3Rh
bmdsZSAqY2VsbEFyZWEsIGdpbnQgKnhPZmZzZXQsIGdpbnQgKnlPZmZzZXQsIGdpbnQgKndpZHRo
LCBnaW50ICpoZWlnaHQpCit7CisgICAgQnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnQgKnJlbmRl
cmVyID0gQlJPV1NFUl9DRUxMX1JFTkRFUkVSX1ZBUklBTlQoY2VsbCk7CisKKyAgICBpZiAoIXJl
bmRlcmVyLT52YWx1ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKEdfVkFMVUVfSE9MRFNf
Qk9PTEVBTihyZW5kZXJlci0+dmFsdWUpKSB7CisgICAgICAgIGdfb2JqZWN0X3NldChHX09CSkVD
VChyZW5kZXJlci0+dG9nZ2xlUmVuZGVyZXIpLAorICAgICAgICAgICAgICAgICAgICAgInhhbGln
biIsIDAuMCwKKyAgICAgICAgICAgICAgICAgICAgICJhY3RpdmUiLCBnX3ZhbHVlX2dldF9ib29s
ZWFuKHJlbmRlcmVyLT52YWx1ZSksCisgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAg
ICAgIGNlbGxSZW5kZXJlckdldFNpemUocmVuZGVyZXItPnRvZ2dsZVJlbmRlcmVyLCB3aWRnZXQs
IGNlbGxBcmVhLCB4T2Zmc2V0LCB5T2Zmc2V0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICB9Cit9CisK
K3N0YXRpYyBnaW50IGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Q2VsbFJlbmRlcmVyQWN0aXZh
dGUoR3RrQ2VsbFJlbmRlcmVyICpjZWxsLCBHZGtFdmVudCAqZXZlbnQsIEd0a1dpZGdldCAqd2lk
Z2V0LCBjb25zdCBnY2hhciAqcGF0aCwgY29uc3QgR2RrUmVjdGFuZ2xlICpiZ0FyZWEsIGNvbnN0
IEdka1JlY3RhbmdsZSAqY2VsbEFyZWEsIEd0a0NlbGxSZW5kZXJlclN0YXRlIGZsYWdzKQorewor
ICAgIEJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50ICpyZW5kZXJlciA9IEJST1dTRVJfQ0VMTF9S
RU5ERVJFUl9WQVJJQU5UKGNlbGwpOworCisgICAgaWYgKCFyZW5kZXJlci0+dmFsdWUpCisgICAg
ICAgIHJldHVybiBUUlVFOworCisgICAgaWYgKEdfVkFMVUVfSE9MRFNfQk9PTEVBTihyZW5kZXJl
ci0+dmFsdWUpKSB7CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4ocmVuZGVyZXItPnZhbHVl
LCAhZ192YWx1ZV9nZXRfYm9vbGVhbihyZW5kZXJlci0+dmFsdWUpKTsKKyAgICAgICAgZ19zaWdu
YWxfZW1pdChyZW5kZXJlciwgc2lnbmFsc1tDSEFOR0VEXSwgMCwgcGF0aCwgcmVuZGVyZXItPnZh
bHVlKTsKKyAgICB9CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZvaWQgYnJvd3Nl
ckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVuZGVyZXJSZW5kZXIoR3RrQ2VsbFJlbmRlcmVyICpj
ZWxsLCBjYWlyb190ICpjciwgR3RrV2lkZ2V0ICp3aWRnZXQsIGNvbnN0IEdka1JlY3RhbmdsZSAq
YmdBcmVhLCBjb25zdCBHZGtSZWN0YW5nbGUgKmNlbGxBcmVhLCBHdGtDZWxsUmVuZGVyZXJTdGF0
ZSBmbGFncykKK3sKKyAgICBCcm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudCAqcmVuZGVyZXIgPSBC
Uk9XU0VSX0NFTExfUkVOREVSRVJfVkFSSUFOVChjZWxsKTsKKworICAgIGlmICghcmVuZGVyZXIt
PnZhbHVlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoR19WQUxVRV9IT0xEU19CT09MRUFO
KHJlbmRlcmVyLT52YWx1ZSkpIHsKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHJlbmRl
cmVyLT50b2dnbGVSZW5kZXJlciksCisgICAgICAgICAgICAgICAgICAgICAgInhhbGlnbiIsIDAu
MCwKKyAgICAgICAgICAgICAgICAgICAgICAiYWN0aXZlIiwgZ192YWx1ZV9nZXRfYm9vbGVhbihy
ZW5kZXJlci0+dmFsdWUpLAorICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworCisgICAgICAg
IGd0a19jZWxsX3JlbmRlcmVyX3JlbmRlcihyZW5kZXJlci0+dG9nZ2xlUmVuZGVyZXIsIGNyLCB3
aWRnZXQsIGJnQXJlYSwgY2VsbEFyZWEsIGZsYWdzKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lk
IGJyb3dzZXJfY2VsbF9yZW5kZXJlcl92YXJpYW50X2luaXQoQnJvd3NlckNlbGxSZW5kZXJlclZh
cmlhbnQgKnJlbmRlcmVyKQoreworICAgIGdfb2JqZWN0X3NldChyZW5kZXJlciwgIm1vZGUiLCBH
VEtfQ0VMTF9SRU5ERVJFUl9NT0RFX0FDVElWQVRBQkxFLCBOVUxMKTsKKyAgICByZW5kZXJlci0+
dG9nZ2xlUmVuZGVyZXIgPSBndGtfY2VsbF9yZW5kZXJlcl90b2dnbGVfbmV3KCk7CisgICAgZ19v
YmplY3RfcmVmX3NpbmsocmVuZGVyZXItPnRvZ2dsZVJlbmRlcmVyKTsKK30KKworc3RhdGljIHZv
aWQgYnJvd3Nlcl9jZWxsX3JlbmRlcmVyX3ZhcmlhbnRfY2xhc3NfaW5pdChCcm93c2VyQ2VsbFJl
bmRlcmVyVmFyaWFudENsYXNzICprbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RD
bGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKyAgICBHdGtDZWxsUmVuZGVyZXJDbGFzcyAq
Y2VsbFJlbmRlcmVyQ2xhc3MgPSBHVEtfQ0VMTF9SRU5ERVJFUl9DTEFTUyhrbGFzcyk7CisKKyAg
ICBnb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50
R2V0UHJvcGVydHk7CisgICAgZ29iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSBicm93c2VyQ2Vs
bFJlbmRlcmVyVmFyaWFudFNldFByb3BlcnR5OworICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUg
PSBicm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudEZpbmFsaXplOworCisgICAgY2VsbFJlbmRlcmVy
Q2xhc3MtPmdldF9zaXplID0gYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVuZGVyZXJH
ZXRTaXplOworICAgIGNlbGxSZW5kZXJlckNsYXNzLT5hY3RpdmF0ZSA9IGJyb3dzZXJDZWxsUmVu
ZGVyZXJWYXJpYW50Q2VsbFJlbmRlcmVyQWN0aXZhdGU7CisgICAgY2VsbFJlbmRlcmVyQ2xhc3Mt
PnJlbmRlciA9IGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Q2VsbFJlbmRlcmVyUmVuZGVyOwor
CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX1ZBTFVFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2JveGVkKCJ2YWx1ZSIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVl
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiVGhlIGNlbGwgcmVuZGVyZXIgdmFsdWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9WQUxVRSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX1JFQURXUklU
RSkpOworCisgICAgc2lnbmFsc1tDSEFOR0VEXSA9CisgICAgICAgIGdfc2lnbmFsX25ldygiY2hh
bmdlZCIsCisgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyhnb2JqZWN0Q2xh
c3MpLAorICAgICAgICAgICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAg
ICAgICAgICAgICAwLCBOVUxMLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgYnJvd3Nlcl9t
YXJzaGFsX1ZPSURfX1NUUklOR19CT1hFRCwKKyAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9O
T05FLCAyLAorICAgICAgICAgICAgICAgICAgICAgR19UWVBFX1NUUklORywgR19UWVBFX1ZBTFVF
KTsKK30KKworR3RrQ2VsbFJlbmRlcmVyICpicm93c2VyX2NlbGxfcmVuZGVyZXJfdmFyaWFudF9u
ZXcodm9pZCkKK3sKKyAgICByZXR1cm4gR1RLX0NFTExfUkVOREVSRVIoZ19vYmplY3RfbmV3KEJS
T1dTRVJfVFlQRV9DRUxMX1JFTkRFUkVSX1ZBUklBTlQsIE5VTEwpKTsKK30KKwpkaWZmIC0tZ2l0
IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50LmggYi9U
b29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmNlM2JiCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50LmgKQEAgLTAs
MCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50X2gKKyNkZWZpbmUgQnJvd3Nl
ckNlbGxSZW5kZXJlclZhcmlhbnRfaAorCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorCitHX0JFR0lO
X0RFQ0xTCisKKyNkZWZpbmUgQlJPV1NFUl9UWVBFX0NFTExfUkVOREVSRVJfVkFSSUFOVCAgICAg
ICAgICAgIChicm93c2VyX2NlbGxfcmVuZGVyZXJfdmFyaWFudF9nZXRfdHlwZSgpKQorI2RlZmlu
ZSBCUk9XU0VSX0NFTExfUkVOREVSRVJfVkFSSUFOVChvYmopICAgICAgICAgICAgKEdfVFlQRV9D
SEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBCUk9XU0VSX1RZUEVfQ0VMTF9SRU5ERVJFUl9WQVJJ
QU5ULCBCcm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudCkpCisjZGVmaW5lIEJST1dTRVJfQ0VMTF9S
RU5ERVJFUl9WQVJJQU5UX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1Qo
KGtsYXNzKSwgIEJST1dTRVJfVFlQRV9DRUxMX1JFTkRFUkVSX1ZBUklBTlQsIEJyb3dzZXJDZWxs
UmVuZGVyZXJWYXJpYW50Q2xhc3MpKQorI2RlZmluZSBCUk9XU0VSX0lTX0NFTExfUkVOREVSRVJf
VkFSSUFOVChvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBC
Uk9XU0VSX1RZUEVfQ0VMTF9SRU5ERVJFUl9WQVJJQU5UKSkKKyNkZWZpbmUgQlJPV1NFUl9JU19D
RUxMX1JFTkRFUkVSX1ZBUklBTlRfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQ
RSgoa2xhc3MpLCAgQlJPV1NFUl9UWVBFX0NFTExfUkVOREVSRVJfVkFSSUFOVCkpCisjZGVmaW5l
IEJST1dTRVJfQ0VMTF9SRU5ERVJFUl9WQVJJQU5UX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lO
U1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIEJST1dTRVJfVFlQRV9DRUxMX1JFTkRFUkVSX1ZBUklB
TlQsIEJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Q2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBf
QnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnQgICAgICAgIEJyb3dzZXJDZWxsUmVuZGVyZXJWYXJp
YW50OwordHlwZWRlZiBzdHJ1Y3QgX0Jyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Q2xhc3MgICBC
cm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudENsYXNzOworCitHVHlwZSBicm93c2VyX2NlbGxfcmVu
ZGVyZXJfdmFyaWFudF9nZXRfdHlwZSh2b2lkKTsKKworR3RrQ2VsbFJlbmRlcmVyKiBicm93c2Vy
X2NlbGxfcmVuZGVyZXJfdmFyaWFudF9uZXcodm9pZCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZXR0aW5nc0RpYWxv
Zy5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZXR0aW5nc0RpYWxvZy5jCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5ZjZkMzEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNldHRpbmdzRGlhbG9nLmMKQEAgLTAsMCAr
MSwxNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgIkJyb3dzZXJTZXR0aW5nc0RpYWxvZy5oIgorI2luY2x1ZGUgIkJyb3dzZXJD
ZWxsUmVuZGVyZXJWYXJpYW50LmgiCisKK2VudW0geworICAgIFBST1BfMCwKKworICAgIFBST1Bf
U0VUVElOR1MKK307CisKK2VudW0geworICAgIFNFVFRJTkdTX0xJU1RfQ09MVU1OX05BTUUsCisg
ICAgU0VUVElOR1NfTElTVF9DT0xVTU5fVkFMVUUsCisKKyAgICBTRVRUSU5HU19MSVNUX05fQ09M
VU1OUworfTsKKworc3RydWN0IF9Ccm93c2VyU2V0dGluZ3NEaWFsb2cgeworICAgIEd0a0RpYWxv
ZyBwYXJlbnQ7CisKKyAgICBHdGtXaWRnZXQgKnNldHRpbmdzTGlzdDsKKyAgICBXZWJLaXRTZXR0
aW5ncyAqc2V0dGluZ3M7Cit9OworCitzdHJ1Y3QgX0Jyb3dzZXJTZXR0aW5nc0RpYWxvZ0NsYXNz
IHsKKyAgICBHdGtEaWFsb2dDbGFzcyBwYXJlbnQ7Cit9OworCitHX0RFRklORV9UWVBFKEJyb3dz
ZXJTZXR0aW5nc0RpYWxvZywgYnJvd3Nlcl9zZXR0aW5nc19kaWFsb2csIEdUS19UWVBFX0RJQUxP
RykKKworc3RhdGljIHZvaWQgY2VsbFJlbmRlcmVyQ2hhbmdlZChHdGtDZWxsUmVuZGVyZXIgKnJl
bmRlcmVyLCBjb25zdCBjaGFyICpwYXRoLCBjb25zdCBHVmFsdWUgKnZhbHVlLCBCcm93c2VyU2V0
dGluZ3NEaWFsb2cgKmRpYWxvZykKK3sKKyAgICBHdGtUcmVlTW9kZWwgKm1vZGVsID0gZ3RrX3Ry
ZWVfdmlld19nZXRfbW9kZWwoR1RLX1RSRUVfVklFVyhkaWFsb2ctPnNldHRpbmdzTGlzdCkpOwor
ICAgIEd0a1RyZWVQYXRoICp0cmVlUGF0aCA9IGd0a190cmVlX3BhdGhfbmV3X2Zyb21fc3RyaW5n
KHBhdGgpOworICAgIEd0a1RyZWVJdGVyIGl0ZXI7CisgICAgZ3RrX3RyZWVfbW9kZWxfZ2V0X2l0
ZXIobW9kZWwsICZpdGVyLCB0cmVlUGF0aCk7CisKKyAgICBjaGFyICpuYW1lOworICAgIGd0a190
cmVlX21vZGVsX2dldChtb2RlbCwgJml0ZXIsIFNFVFRJTkdTX0xJU1RfQ09MVU1OX05BTUUsICZu
YW1lLCAtMSk7CisgICAgZ19vYmplY3Rfc2V0X3Byb3BlcnR5KEdfT0JKRUNUKGRpYWxvZy0+c2V0
dGluZ3MpLCBuYW1lLCB2YWx1ZSk7CisgICAgZ19mcmVlKG5hbWUpOworCisgICAgZ3RrX2xpc3Rf
c3RvcmVfc2V0KEdUS19MSVNUX1NUT1JFKG1vZGVsKSwgJml0ZXIsIFNFVFRJTkdTX0xJU1RfQ09M
VU1OX1ZBTFVFLCB2YWx1ZSwgLTEpOworICAgIGd0a190cmVlX3BhdGhfZnJlZSh0cmVlUGF0aCk7
Cit9CisKK3N0YXRpYyB2b2lkIGJyb3dzZXJTZXR0aW5nc0RpYWxvZ1NldFByb3BlcnR5KEdPYmpl
Y3QgKm9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFsdWUgKnZhbHVlLCBHUGFyYW1TcGVj
ICpwc3BlYykKK3sKKyAgICBCcm93c2VyU2V0dGluZ3NEaWFsb2cgKmRpYWxvZyA9IEJST1dTRVJf
U0VUVElOR1NfRElBTE9HKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJZCkgeworICAgIGNh
c2UgUFJPUF9TRVRUSU5HUzoKKyAgICAgICAgZGlhbG9nLT5zZXR0aW5ncyA9IGdfdmFsdWVfZ2V0
X29iamVjdCh2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdf
T0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcHNwZWMpOwor
ICAgIH0KK30KKworc3RhdGljIHZvaWQgYnJvd3Nlcl9zZXR0aW5nc19kaWFsb2dfaW5pdChCcm93
c2VyU2V0dGluZ3NEaWFsb2cgKmRpYWxvZykKK3sKKyAgICBHdGtCb3ggKmNvbnRlbnRBcmVhID0g
R1RLX0JPWChndGtfZGlhbG9nX2dldF9jb250ZW50X2FyZWEoR1RLX0RJQUxPRyhkaWFsb2cpKSk7
CisgICAgZ3RrX2JveF9zZXRfc3BhY2luZyhjb250ZW50QXJlYSwgMik7CisKKyAgICBndGtfd2lu
ZG93X3NldF9kZWZhdWx0X3NpemUoR1RLX1dJTkRPVyhkaWFsb2cpLCA0MDAsIDMwMCk7CisgICAg
Z3RrX3dpbmRvd19zZXRfdGl0bGUoR1RLX1dJTkRPVyhkaWFsb2cpLCAiV2ViS2l0IFZpZXcgU2V0
dGluZ3MiKTsKKyAgICBndGtfd2luZG93X3NldF9kZXN0cm95X3dpdGhfcGFyZW50KEdUS19XSU5E
T1coZGlhbG9nKSwgVFJVRSk7CisgICAgZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdU
S19DT05UQUlORVIoZGlhbG9nKSwgNSk7CisgICAgZ3RrX2RpYWxvZ19hZGRfYnV0dG9uKEdUS19E
SUFMT0coZGlhbG9nKSwgR1RLX1NUT0NLX0NMT1NFLCBHVEtfUkVTUE9OU0VfQ0xPU0UpOworICAg
IGd0a19kaWFsb2dfc2V0X2RlZmF1bHRfcmVzcG9uc2UoR1RLX0RJQUxPRyhkaWFsb2cpLCBHVEtf
UkVTUE9OU0VfQ0xPU0UpOworCisgICAgR3RrV2lkZ2V0ICpzY3JvbGxlZFdpbmRvdyA9IGd0a19z
Y3JvbGxlZF93aW5kb3dfbmV3KE5VTEwsIE5VTEwpOworICAgIGRpYWxvZy0+c2V0dGluZ3NMaXN0
ID0gZ3RrX3RyZWVfdmlld19uZXcoKTsKKyAgICBHdGtDZWxsUmVuZGVyZXIgKnJlbmRlcmVyID0g
Z3RrX2NlbGxfcmVuZGVyZXJfdGV4dF9uZXcoKTsKKyAgICBndGtfdHJlZV92aWV3X2luc2VydF9j
b2x1bW5fd2l0aF9hdHRyaWJ1dGVzKEdUS19UUkVFX1ZJRVcoZGlhbG9nLT5zZXR0aW5nc0xpc3Qp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgIk5h
bWUiLCByZW5kZXJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJ0ZXh0IiwgU0VUVElOR1NfTElTVF9DT0xVTU5fTkFNRSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIHJlbmRlcmVyID0g
YnJvd3Nlcl9jZWxsX3JlbmRlcmVyX3ZhcmlhbnRfbmV3KCk7CisgICAgZ19zaWduYWxfY29ubmVj
dChyZW5kZXJlciwgImNoYW5nZWQiLCBHX0NBTExCQUNLKGNlbGxSZW5kZXJlckNoYW5nZWQpLCBk
aWFsb2cpOworICAgIGd0a190cmVlX3ZpZXdfaW5zZXJ0X2NvbHVtbl93aXRoX2F0dHJpYnV0ZXMo
R1RLX1RSRUVfVklFVyhkaWFsb2ctPnNldHRpbmdzTGlzdCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAiVmFsdWUiLCByZW5kZXJlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSIsIFNFVFRJ
TkdTX0xJU1RfQ09MVU1OX1ZBTFVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlVMTCk7CisKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJ
TkVSKHNjcm9sbGVkV2luZG93KSwgZGlhbG9nLT5zZXR0aW5nc0xpc3QpOworICAgIGd0a193aWRn
ZXRfc2hvdyhkaWFsb2ctPnNldHRpbmdzTGlzdCk7CisKKyAgICBndGtfYm94X3BhY2tfc3RhcnQo
Y29udGVudEFyZWEsIHNjcm9sbGVkV2luZG93LCBUUlVFLCBUUlVFLCAwKTsKKyAgICBndGtfd2lk
Z2V0X3Nob3coc2Nyb2xsZWRXaW5kb3cpOworCisgICAgZ19zaWduYWxfY29ubmVjdChkaWFsb2cs
ICJyZXNwb25zZSIsIEdfQ0FMTEJBQ0soZ3RrX3dpZGdldF9kZXN0cm95KSwgTlVMTCk7Cit9CisK
K3N0YXRpYyB2b2lkIGJyb3dzZXJTZXR0aW5nc0RpYWxvZ0NvbnN0cnVjdGVkKEdPYmplY3QgKm9i
amVjdCkKK3sKKyAgICBCcm93c2VyU2V0dGluZ3NEaWFsb2cgKmRpYWxvZyA9IEJST1dTRVJfU0VU
VElOR1NfRElBTE9HKG9iamVjdCk7CisgICAgV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzID0gZGlh
bG9nLT5zZXR0aW5nczsKKworICAgIEd0a0xpc3RTdG9yZSAqbW9kZWwgPSBndGtfbGlzdF9zdG9y
ZV9uZXcoU0VUVElOR1NfTElTVF9OX0NPTFVNTlMsIEdfVFlQRV9TVFJJTkcsIEdfVFlQRV9WQUxV
RSk7CisgICAgZ3VpbnQgcHJvcGVydGllc0NvdW50OworICAgIEdQYXJhbVNwZWMgKipwcm9wZXJ0
aWVzID0gZ19vYmplY3RfY2xhc3NfbGlzdF9wcm9wZXJ0aWVzKEdfT0JKRUNUX0dFVF9DTEFTUyhz
ZXR0aW5ncyksICZwcm9wZXJ0aWVzQ291bnQpOworICAgIGd1aW50IGk7CisgICAgZm9yIChpID0g
MDsgaSA8IHByb3BlcnRpZXNDb3VudDsgaSsrKSB7CisgICAgICAgIEdQYXJhbVNwZWMgKnByb3Bl
cnR5ID0gcHJvcGVydGllc1tpXTsKKyAgICAgICAgY29uc3QgY2hhciAqbmFtZSA9IGdfcGFyYW1f
c3BlY19nZXRfbmFtZShwcm9wZXJ0eSk7CisKKyAgICAgICAgR1ZhbHVlIHZhbHVlID0gR19WQUxV
RV9JTklUOworICAgICAgICBnX3ZhbHVlX2luaXQoJnZhbHVlLCBHX1BBUkFNX1NQRUNfVkFMVUVf
VFlQRShwcm9wZXJ0eSkpOworICAgICAgICBnX29iamVjdF9nZXRfcHJvcGVydHkoR19PQkpFQ1Qo
c2V0dGluZ3MpLCBuYW1lLCAmdmFsdWUpOworCisgICAgICAgIEd0a1RyZWVJdGVyIGl0ZXI7Cisg
ICAgICAgIGd0a19saXN0X3N0b3JlX2FwcGVuZChtb2RlbCwgJml0ZXIpOworICAgICAgICBndGtf
bGlzdF9zdG9yZV9zZXQobW9kZWwsICZpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
U0VUVElOR1NfTElTVF9DT0xVTU5fTkFNRSwgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNFVFRJTkdTX0xJU1RfQ09MVU1OX1ZBTFVFLCAmdmFsdWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAtMSk7CisgICAgICAgIGdfdmFsdWVfdW5zZXQoJnZhbHVlKTsKKyAgICB9CisK
KyAgICBndGtfdHJlZV92aWV3X3NldF9tb2RlbChHVEtfVFJFRV9WSUVXKGRpYWxvZy0+c2V0dGlu
Z3NMaXN0KSwgR1RLX1RSRUVfTU9ERUwobW9kZWwpKTsKKyAgICBnX29iamVjdF91bnJlZihtb2Rl
bCk7Cit9CisKK3N0YXRpYyB2b2lkIGJyb3dzZXJfc2V0dGluZ3NfZGlhbG9nX2NsYXNzX2luaXQo
QnJvd3NlclNldHRpbmdzRGlhbG9nQ2xhc3MgKmtsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyAq
Z29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworCisgICAgZ29iamVjdENsYXNz
LT5jb25zdHJ1Y3RlZCA9IGJyb3dzZXJTZXR0aW5nc0RpYWxvZ0NvbnN0cnVjdGVkOworICAgIGdv
YmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gYnJvd3NlclNldHRpbmdzRGlhbG9nU2V0UHJvcGVy
dHk7CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfU0VUVElOR1MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KCJzZXR0
aW5ncyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJTZXR0aW5ncyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJUaGUgV2ViS2l0U2V0dGluZ3MiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9TRVRU
SU5HUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR19QQVJBTV9XUklUQUJMRSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKTsKK30KKwor
R3RrV2lkZ2V0ICpicm93c2VyX3NldHRpbmdzX2RpYWxvZ19uZXcoV2ViS2l0U2V0dGluZ3MgKnNl
dHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhz
ZXR0aW5ncyksIE5VTEwpOworCisgICAgcmV0dXJuIEdUS19XSURHRVQoZ19vYmplY3RfbmV3KEJS
T1dTRVJfVFlQRV9TRVRUSU5HU19ESUFMT0csICJzZXR0aW5ncyIsIHNldHRpbmdzLCBOVUxMKSk7
Cit9CisKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyU2V0dGluZ3NE
aWFsb2cuaCBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyU2V0dGluZ3NEaWFsb2cuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2RiY2QwCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZXR0aW5nc0RpYWxvZy5oCkBAIC0w
LDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBCcm93c2VyU2V0dGluZ3NEaWFsb2dfaAorI2RlZmluZSBCcm93c2VyU2V0
dGluZ3NEaWFsb2dfaAorCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHdlYmtpdDIv
d2Via2l0Mi5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgQlJPV1NFUl9UWVBFX1NFVFRJ
TkdTX0RJQUxPRyAgICAgICAgICAgIChicm93c2VyX3NldHRpbmdzX2RpYWxvZ19nZXRfdHlwZSgp
KQorI2RlZmluZSBCUk9XU0VSX1NFVFRJTkdTX0RJQUxPRyhvYmopICAgICAgICAgICAgKEdfVFlQ
RV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBCUk9XU0VSX1RZUEVfU0VUVElOR1NfRElBTE9H
LCBCcm93c2VyU2V0dGluZ3NEaWFsb2cpKQorI2RlZmluZSBCUk9XU0VSX1NFVFRJTkdTX0RJQUxP
R19DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBCUk9X
U0VSX1RZUEVfU0VUVElOR1NfRElBTE9HLCBCcm93c2VyU2V0dGluZ3NEaWFsb2dDbGFzcykpCisj
ZGVmaW5lIEJST1dTRVJfSVNfU0VUVElOR1NfRElBTE9HKG9iaikgICAgICAgICAoR19UWVBFX0NI
RUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIEJST1dTRVJfVFlQRV9TRVRUSU5HU19ESUFMT0cpKQor
I2RlZmluZSBCUk9XU0VSX0lTX1NFVFRJTkdTX0RJQUxPR19DTEFTUyhrbGFzcykgKEdfVFlQRV9D
SEVDS19DTEFTU19UWVBFKChrbGFzcyksICBCUk9XU0VSX1RZUEVfU0VUVElOR1NfRElBTE9HKSkK
KyNkZWZpbmUgQlJPV1NFUl9TRVRUSU5HU19ESUFMT0dfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVf
SU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgQlJPV1NFUl9UWVBFX1NFVFRJTkdTX0RJQUxPRywg
QnJvd3NlclNldHRpbmdzRGlhbG9nQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfQnJvd3NlclNl
dHRpbmdzRGlhbG9nICAgICAgICBCcm93c2VyU2V0dGluZ3NEaWFsb2c7Cit0eXBlZGVmIHN0cnVj
dCBfQnJvd3NlclNldHRpbmdzRGlhbG9nQ2xhc3MgICBCcm93c2VyU2V0dGluZ3NEaWFsb2dDbGFz
czsKKworR1R5cGUgYnJvd3Nlcl9zZXR0aW5nc19kaWFsb2dfZ2V0X3R5cGUodm9pZCk7CisKK0d0
a1dpZGdldCogYnJvd3Nlcl9zZXR0aW5nc19kaWFsb2dfbmV3KFdlYktpdFNldHRpbmdzICpzZXR0
aW5ncyk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJy
b3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2Vy
V2luZG93LmMKaW5kZXggNzcwNWZhMi4uNjkxZjg2NiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJy
b3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJv
d3NlcldpbmRvdy5jCkBAIC0yNiw2ICsyNiw3IEBACiAgKi8KIAogI2luY2x1ZGUgIkJyb3dzZXJX
aW5kb3cuaCIKKyNpbmNsdWRlICJCcm93c2VyU2V0dGluZ3NEaWFsb2cuaCIKIAogZW51bSB7CiAg
ICAgUFJPUF8wLApAQCAtNDEsNiArNDIsNyBAQCBzdHJ1Y3QgX0Jyb3dzZXJXaW5kb3cgewogICAg
IEd0a1dpZGdldCAqYmFja0l0ZW07CiAgICAgR3RrV2lkZ2V0ICpmb3J3YXJkSXRlbTsKICAgICBH
dGtXaWRnZXQgKnN0YXR1c0xhYmVsOworICAgIEd0a1dpZGdldCAqc2V0dGluZ3NEaWFsb2c7CiAg
ICAgV2ViS2l0V2ViVmlldyAqd2ViVmlldzsKIAogfTsKQEAgLTgyLDYgKzg0LDE5IEBAIHN0YXRp
YyB2b2lkIGdvRm9yd2FyZENhbGxiYWNrKEJyb3dzZXJXaW5kb3cgKndpbmRvdykKICAgICB3ZWJr
aXRfd2ViX3ZpZXdfZ29fZm9yd2FyZCh3aW5kb3ctPndlYlZpZXcpOwogfQogCitzdGF0aWMgdm9p
ZCBzZXR0aW5nc0NhbGxiYWNrKEJyb3dzZXJXaW5kb3cgKndpbmRvdykKK3sKKyAgICBpZiAod2lu
ZG93LT5zZXR0aW5nc0RpYWxvZykgeworICAgICAgICBndGtfd2luZG93X3ByZXNlbnQoR1RLX1dJ
TkRPVyh3aW5kb3ctPnNldHRpbmdzRGlhbG9nKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICB3aW5kb3ctPnNldHRpbmdzRGlhbG9nID0gYnJvd3Nlcl9zZXR0aW5nc19kaWFsb2dfbmV3
KHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2luZG93LT53ZWJWaWV3KSk7CisgICAgZ3Rr
X3dpbmRvd19zZXRfdHJhbnNpZW50X2ZvcihHVEtfV0lORE9XKHdpbmRvdy0+c2V0dGluZ3NEaWFs
b2cpLCBHVEtfV0lORE9XKHdpbmRvdykpOworICAgIGdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIo
R19PQkpFQ1Qod2luZG93LT5zZXR0aW5nc0RpYWxvZyksIChncG9pbnRlciAqKSZ3aW5kb3ctPnNl
dHRpbmdzRGlhbG9nKTsKKyAgICBndGtfd2lkZ2V0X3Nob3cod2luZG93LT5zZXR0aW5nc0RpYWxv
Zyk7Cit9CisKIHN0YXRpYyB2b2lkIHdlYlZpZXdVUklDaGFuZ2VkKFdlYktpdFdlYlZpZXcgKndl
YlZpZXcsIEdQYXJhbVNwZWMgKnBzcGVjLCBCcm93c2VyV2luZG93ICp3aW5kb3cpCiB7CiAgICAg
Z3RrX2VudHJ5X3NldF90ZXh0KEdUS19FTlRSWSh3aW5kb3ctPnVyaUVudHJ5KSwgd2Via2l0X3dl
Yl92aWV3X2dldF91cmkod2ViVmlldykpOwpAQCAtMjM3LDYgKzI1MiwxMSBAQCBzdGF0aWMgdm9p
ZCBicm93c2VyX3dpbmRvd19pbml0KEJyb3dzZXJXaW5kb3cgKndpbmRvdykKICAgICBndGtfdG9v
bGJhcl9pbnNlcnQoR1RLX1RPT0xCQVIodG9vbGJhciksIGl0ZW0sIC0xKTsKICAgICBndGtfd2lk
Z2V0X3Nob3coR1RLX1dJREdFVChpdGVtKSk7CiAKKyAgICBpdGVtID0gZ3RrX21lbnVfdG9vbF9i
dXR0b25fbmV3X2Zyb21fc3RvY2soR1RLX1NUT0NLX1BSRUZFUkVOQ0VTKTsKKyAgICBnX3NpZ25h
bF9jb25uZWN0X3N3YXBwZWQoR19PQkpFQ1QoaXRlbSksICJjbGlja2VkIiwgR19DQUxMQkFDSyhz
ZXR0aW5nc0NhbGxiYWNrKSwgKGdwb2ludGVyKXdpbmRvdyk7CisgICAgZ3RrX3Rvb2xiYXJfaW5z
ZXJ0KEdUS19UT09MQkFSKHRvb2xiYXIpLCBpdGVtLCAtMSk7CisgICAgZ3RrX3dpZGdldF9zaG93
KEdUS19XSURHRVQoaXRlbSkpOworCiAgICAgaXRlbSA9IGd0a190b29sX2l0ZW1fbmV3KCk7CiAg
ICAgZ3RrX3Rvb2xfaXRlbV9zZXRfZXhwYW5kKGl0ZW0sIFRSVUUpOwogICAgIGd0a19jb250YWlu
ZXJfYWRkKEdUS19DT05UQUlORVIoaXRlbSksIHdpbmRvdy0+dXJpRW50cnkpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMvTWluaUJyb3dz
ZXIvZ3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IGUzMmExNmQuLmNmMzk5NGEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL01pbmlCcm93c2VyL2d0ay9HTlVtYWtlZmlsZS5hbQorKysgYi9Ub29scy9NaW5pQnJv
d3Nlci9ndGsvR05VbWFrZWZpbGUuYW0KQEAgLTEsOCArMSwxMyBAQAogbm9pbnN0X1BST0dSQU1T
ICs9IFwKIAlQcm9ncmFtcy9NaW5pQnJvd3NlcgogCittaW5pYnJvd3Nlcl9idWlsdF9zb3VyY2Vz
ICs9IFwKKwlEZXJpdmVkU291cmNlcy9XZWJLaXQyL0Jyb3dzZXJNYXJzaGFsLmggXAorCURlcml2
ZWRTb3VyY2VzL1dlYktpdDIvQnJvd3Nlck1hcnNoYWwuYworCiBQcm9ncmFtc19NaW5pQnJvd3Nl
cl9DUFBGTEFHUyA9IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UgXAorCS1JJCh0b3BfYnVpbGRkaXIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIgXAogCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvd2Via2l0Mmd0ayBcCiAJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi93ZWJraXQyZ3RrL2luY2x1ZGUgXAogCS1EV0VCS0lUX0VYRUNfUEFUSD1cIiR7
c2hlbGwgcHdkfS8kKHRvcF9idWlsZGRpcikvUHJvZ3JhbXMvXCIgXApAQCAtMTEsNiArMTYsMTEg
QEAgUHJvZ3JhbXNfTWluaUJyb3dzZXJfQ1BQRkxBR1MgPSBcCiAJJChHVEtfQ0ZMQUdTKQogCiBQ
cm9ncmFtc19NaW5pQnJvd3Nlcl9TT1VSQ0VTID0gXAorCSQobWluaWJyb3dzZXJfYnVpbHRfc291
cmNlcykgXAorCVRvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFu
dC5oIFwKKwlUb29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnQu
YyBcCisJVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZXR0aW5nc0RpYWxvZy5oIFwKKwlU
b29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNldHRpbmdzRGlhbG9nLmMgXAogCVRvb2xzL01p
bmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmggXAogCVRvb2xzL01pbmlCcm93c2VyL2d0ay9C
cm93c2VyV2luZG93LmMgXAogCVRvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKQEAgLTI1LDUg
KzM1LDI3IEBAIFByb2dyYW1zX01pbmlCcm93c2VyX0xERkxBR1MgPSBcCiAJLW5vLWluc3RhbGwK
IAogQ0xFQU5GSUxFUyArPSBcCi0JJCh0b3BfYnVpbGRkaXIpL1Byb2dyYW1zL01pbmlCcm93c2Vy
CisJJCh0b3BfYnVpbGRkaXIpL1Byb2dyYW1zL01pbmlCcm93c2VyIFwKKwkkKG1pbmlicm93c2Vy
X2J1aWx0X3NvdXJjZXMpIFwKKwkkKHRvcF9idWlsZGRpcikvc3RhbXAtbWluaS1icm93c2VyLW1h
cnNoYWwuaCBcCisJJCh0b3BfYnVpbGRkaXIpL3N0YW1wLW1pbmktYnJvd3Nlci1tYXJzaGFsLmMK
KworQlVJTFRfU09VUkNFUyArPSAkKG1pbmlicm93c2VyX2J1aWx0X3NvdXJjZXMpCisKK21pbmli
cm93c2VyX21hcnNoYWxfbGlzdCA9ICQoc3JjZGlyKS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvYnJv
d3Nlci1tYXJzaGFsLmxpc3QKKworJChHRU5TT1VSQ0VTX1dFQktJVDIpL0Jyb3dzZXJNYXJzaGFs
Lmg6IHN0YW1wLW1pbmktYnJvd3Nlci1tYXJzaGFsLmgKKwlAdHJ1ZQorJChHRU5TT1VSQ0VTX1dF
QktJVDIpL0Jyb3dzZXJNYXJzaGFsLmM6IHN0YW1wLW1pbmktYnJvd3Nlci1tYXJzaGFsLmMKKwlA
dHJ1ZQorCitzdGFtcC1taW5pLWJyb3dzZXItbWFyc2hhbC5jOiAkKG1pbmlicm93c2VyX21hcnNo
YWxfbGlzdCkKKwkkKEFNX1ZfR0VOKSQoR0xJQl9HRU5NQVJTSEFMKSAtLXByZWZpeD1icm93c2Vy
X21hcnNoYWwgJChtaW5pYnJvd3Nlcl9tYXJzaGFsX2xpc3QpIC0tYm9keSA+ICQoR0VOU09VUkNF
U19XRUJLSVQyKS9Ccm93c2VyTWFyc2hhbC5jICYmIFwKKwllY2hvIHRpbWVzdGFtcCA+ICQoQEYp
CisKK3N0YW1wLW1pbmktYnJvd3Nlci1tYXJzaGFsLmg6ICQoTWluaUJyb3dzZXJfbWFyc2hhbF9s
aXN0KQorCSQoQU1fVl9HRU4pJChHTElCX0dFTk1BUlNIQUwpIC0tcHJlZml4PWJyb3dzZXJfbWFy
c2hhbCAkKG1pbmlicm93c2VyX21hcnNoYWxfbGlzdCkgLS1oZWFkZXIgPiAkKEdFTlNPVVJDRVNf
V0VCS0lUMikvQnJvd3Nlck1hcnNoYWwuaCAmJiBcCisJZWNobyB0aW1lc3RhbXAgPiAkKEBGKQog
CitFWFRSQV9ESVNUICs9IFwKKwkkKG1pbmlicm93c2VyX21hcnNoYWxfbGlzdCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9icm93c2VyLW1hcnNoYWwubGlzdCBiL1Rvb2xzL01p
bmlCcm93c2VyL2d0ay9icm93c2VyLW1hcnNoYWwubGlzdApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5lNzJhYTRiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dz
ZXIvZ3RrL2Jyb3dzZXItbWFyc2hhbC5saXN0CkBAIC0wLDAgKzEgQEAKK1ZPSUQ6U1RSSU5HLEJP
WEVECg==
</data>
<flag name="commit-queue"
          id="112113"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114501</attachid>
            <date>2011-11-10 08:00:39 -0800</date>
            <delta_ts>2011-12-28 06:38:05 -0800</delta_ts>
            <desc>Updated patch to not use G_VALUE_INIT</desc>
            <filename>wk2-mb-settings2.diff</filename>
            <type>text/plain</type>
            <size>28548</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBlOTQ3Mjg0Li5hNWQ4ODQ2
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTEtMTEtMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdIEFkZCBhIHdheSB0byBjaGFuZ2Ugd2ViIHZpZXcgc2V0dGluZ3MgaW4g
TWluaUJyb3dzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcxNTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbToKKwogMjAxMS0xMS0xMCAgVG9yIEFybmUgVmVzdGLDuCAgPHRv
ci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBDaGFuZ2Ugc2VtYW50aWNz
IG9mIHRoZSBoYXZlUXQoKSBmdW5jdGlvbiB0byBtYXRjaCBBUEkgcHJvbWlzZXMKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwNzk4MDQ3Li42NGUy
YjFlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMTEtMTEtMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZCBhIHdheSB0byBjaGFuZ2Ugd2ViIHZp
ZXcgc2V0dGluZ3MgaW4gTWluaUJyb3dzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcxNTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIGEgcHJlZmVyZW5jZXMgYnV0dG9uIHRvIHRoZSB0b29sYmFy
IHRoYXQgc2hvd3MgYSBkaWFsb2cgdG8KKyAgICAgICAgY2hhbmdlIHNldHRpbmdzIG9mIHRoZSBj
dXJyZW50IHdlYiB2aWV3LiBJdCB1c2VzIGEgR3RrVHJlZVZpZXcKKyAgICAgICAgd2l0aCBhIGN1
c3RvbSBjZWxsIHJlbmRlcmVyIHRvIHN1cHBvcnQgbXVsdGlwbGUgdHlwZXMgb2YKKyAgICAgICAg
dmFsdWVzLiBJdCBvbmx5IHN1cHBvcnQgYm9vbGVhbiB2YWx1ZXMgZm9yIG5vdywgc2luY2UKKyAg
ICAgICAgV2ViS2l0U2V0dGluZ3Mgb25seSBjb250YWlucyBib29sZWFuIHNldHRpbmdzIGF0IHRo
ZSBtb21lbnQuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlckNlbGxSZW5kZXJl
clZhcmlhbnQuYzogQWRkZWQuCisgICAgICAgIChicm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudEZp
bmFsaXplKToKKyAgICAgICAgKGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50R2V0UHJvcGVydHkp
OgorICAgICAgICAoYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRTZXRQcm9wZXJ0eSk6CisgICAg
ICAgIChjZWxsUmVuZGVyZXJHZXRTaXplKToKKyAgICAgICAgKGJyb3dzZXJDZWxsUmVuZGVyZXJW
YXJpYW50Q2VsbFJlbmRlcmVyR2V0U2l6ZSk6CisgICAgICAgIChicm93c2VyQ2VsbFJlbmRlcmVy
VmFyaWFudENlbGxSZW5kZXJlckFjdGl2YXRlKToKKyAgICAgICAgKGJyb3dzZXJDZWxsUmVuZGVy
ZXJWYXJpYW50Q2VsbFJlbmRlcmVyUmVuZGVyKToKKyAgICAgICAgKGJyb3dzZXJfY2VsbF9yZW5k
ZXJlcl92YXJpYW50X2luaXQpOgorICAgICAgICAoYnJvd3Nlcl9jZWxsX3JlbmRlcmVyX3Zhcmlh
bnRfY2xhc3NfaW5pdCk6CisgICAgICAgIChicm93c2VyX2NlbGxfcmVuZGVyZXJfdmFyaWFudF9u
ZXcpOgorICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFu
dC5oOiBBZGRlZC4KKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNldHRpbmdzRGlh
bG9nLmM6IEFkZGVkLgorICAgICAgICAoY2VsbFJlbmRlcmVyQ2hhbmdlZCk6CisgICAgICAgIChi
cm93c2VyU2V0dGluZ3NEaWFsb2dTZXRQcm9wZXJ0eSk6CisgICAgICAgIChicm93c2VyX3NldHRp
bmdzX2RpYWxvZ19pbml0KToKKyAgICAgICAgKGJyb3dzZXJTZXR0aW5nc0RpYWxvZ0NvbnN0cnVj
dGVkKToKKyAgICAgICAgKGJyb3dzZXJfc2V0dGluZ3NfZGlhbG9nX2NsYXNzX2luaXQpOgorICAg
ICAgICAoYnJvd3Nlcl9zZXR0aW5nc19kaWFsb2dfbmV3KToKKyAgICAgICAgKiBNaW5pQnJvd3Nl
ci9ndGsvQnJvd3NlclNldHRpbmdzRGlhbG9nLmg6IEFkZGVkLgorICAgICAgICAqIE1pbmlCcm93
c2VyL2d0ay9Ccm93c2VyV2luZG93LmM6CisgICAgICAgIChzZXR0aW5nc0NhbGxiYWNrKToKKyAg
ICAgICAgKGJyb3dzZXJfd2luZG93X2luaXQpOgorICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9H
TlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvYnJvd3Nlci1tYXJzaGFs
Lmxpc3Q6IEFkZGVkLgorCiAyMDExLTExLTEwICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUu
dmVzdGJvQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIENoYW5nZSBzZW1hbnRpY3Mgb2YgdGhl
IGhhdmVRdCgpIGZ1bmN0aW9uIHRvIG1hdGNoIEFQSSBwcm9taXNlcwpkaWZmIC0tZ2l0IGEvR05V
bWFrZWZpbGUuYW0gYi9HTlVtYWtlZmlsZS5hbQppbmRleCBmOTFlODhkLi5lMTE3ZDYwIDEwMDY0
NAotLS0gYS9HTlVtYWtlZmlsZS5hbQorKysgYi9HTlVtYWtlZmlsZS5hbQpAQCAtODAsNiArODAs
NyBAQCB3ZWJraXQyX2J1aWx0X3NvdXJjZXMgOj0KIHdlYmtpdDJfcGx1Z2luX3Byb2Nlc3NfYnVp
bHRfc291cmNlcyA6PQogd2Via2l0dGVzdHJ1bm5lcl9idWlsdF9zb3VyY2VzIDo9CiBsaWJ3ZWJj
b3JlaW50ZXJuYWxzX2J1aWx0X3NvdXJjZXMgOj0KK21pbmlicm93c2VyX2J1aWx0X3NvdXJjZXMg
Oj0KIGdsb2JhbF9jcHBmbGFncyA6PQogZ2xvYmFsX2NmbGFncyA6PQogZ2xvYmFsX2N4eGZsYWdz
IDo9CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlckNlbGxSZW5kZXJl
clZhcmlhbnQuYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyQ2VsbFJlbmRlcmVyVmFy
aWFudC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllN2Y4MjQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlckNlbGxSZW5kZXJlclZh
cmlhbnQuYwpAQCAtMCwwICsxLDIxNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2Fs
aWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiQnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnQu
aCIKKyNpbmNsdWRlICJCcm93c2VyTWFyc2hhbC5oIgorCitlbnVtIHsKKyAgICBQUk9QXzAsCisK
KyAgICBQUk9QX1ZBTFVFCit9OworCitlbnVtIHsKKyAgICBDSEFOR0VELAorCisgICAgTEFTVF9T
SUdOQUwKK307CisKK3N0cnVjdCBfQnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnQgeworICAgIEd0
a0NlbGxSZW5kZXJlciBwYXJlbnQ7CisKKyAgICBHVmFsdWUgKnZhbHVlOworCisgICAgR3RrQ2Vs
bFJlbmRlcmVyICp0b2dnbGVSZW5kZXJlcjsKK307CisKK3N0cnVjdCBfQnJvd3NlckNlbGxSZW5k
ZXJlclZhcmlhbnRDbGFzcyB7CisgICAgR3RrQ2VsbFJlbmRlcmVyQ2xhc3MgcGFyZW50OworfTsK
Kworc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwIH07CisKK0dfREVGSU5F
X1RZUEUoQnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnQsIGJyb3dzZXJfY2VsbF9yZW5kZXJlcl92
YXJpYW50LCBHVEtfVFlQRV9DRUxMX1JFTkRFUkVSKQorCitzdGF0aWMgdm9pZCBicm93c2VyQ2Vs
bFJlbmRlcmVyVmFyaWFudEZpbmFsaXplKEdPYmplY3QgKm9iamVjdCkKK3sKKyAgICBCcm93c2Vy
Q2VsbFJlbmRlcmVyVmFyaWFudCAqcmVuZGVyZXIgPSBCUk9XU0VSX0NFTExfUkVOREVSRVJfVkFS
SUFOVChvYmplY3QpOworCisgICAgZ19vYmplY3RfdW5yZWYocmVuZGVyZXItPnRvZ2dsZVJlbmRl
cmVyKTsKKyAgICBpZiAocmVuZGVyZXItPnZhbHVlKQorICAgICAgICBnX2JveGVkX2ZyZWUoR19U
WVBFX1ZBTFVFLCByZW5kZXJlci0+dmFsdWUpOworCisgICAgR19PQkpFQ1RfQ0xBU1MoYnJvd3Nl
cl9jZWxsX3JlbmRlcmVyX3ZhcmlhbnRfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsK
K30KKworc3RhdGljIHZvaWQgYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRHZXRQcm9wZXJ0eShH
T2JqZWN0ICpvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlICp2YWx1ZSwgR1BhcmFtU3BlYyAq
cHNwZWMpCit7CisgICAgQnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnQgKnJlbmRlcmVyID0gQlJP
V1NFUl9DRUxMX1JFTkRFUkVSX1ZBUklBTlQob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElk
KSB7CisgICAgY2FzZSBQUk9QX1ZBTFVFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib3hlZCh2YWx1
ZSwgcmVuZGVyZXItPnZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwc3Bl
Yyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBicm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudFNl
dFByb3BlcnR5KEdPYmplY3QgKm9iamVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFsdWUgKnZh
bHVlLCBHUGFyYW1TcGVjICpwc3BlYykKK3sKKyAgICBCcm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFu
dCAqcmVuZGVyZXIgPSBCUk9XU0VSX0NFTExfUkVOREVSRVJfVkFSSUFOVChvYmplY3QpOworCisg
ICAgc3dpdGNoIChwcm9wSWQpIHsKKyAgICBjYXNlIFBST1BfVkFMVUU6CisgICAgICAgIGlmIChy
ZW5kZXJlci0+dmFsdWUpCisgICAgICAgICAgICBnX2JveGVkX2ZyZWUoR19UWVBFX1ZBTFVFLCBy
ZW5kZXJlci0+dmFsdWUpOworICAgICAgICByZW5kZXJlci0+dmFsdWUgPSBnX3ZhbHVlX2R1cF9i
b3hlZCh2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JK
RUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcHNwZWMpOworICAg
IH0KK30KKworc3RhdGljIHZvaWQgY2VsbFJlbmRlcmVyR2V0U2l6ZShHdGtDZWxsUmVuZGVyZXIg
KnJlbmRlcmVyLCBHdGtXaWRnZXQgKndpZGdldCwgY29uc3QgR2RrUmVjdGFuZ2xlICpjZWxsQXJl
YSwgZ2ludCAqeE9mZnNldCwgZ2ludCAqeU9mZnNldCwgZ2ludCAqd2lkdGgsIGdpbnQgKmhlaWdo
dCkKK3sKKyAgICBHdGtSZXF1aXNpdGlvbiByZXF1ZXN0OworICAgIGd0a19jZWxsX3JlbmRlcmVy
X2dldF9wcmVmZXJyZWRfc2l6ZShyZW5kZXJlciwgd2lkZ2V0LCAmcmVxdWVzdCwgTlVMTCk7CisK
KyAgICBpZiAod2lkdGgpCisgICAgICAgICp3aWR0aCA9IHJlcXVlc3Qud2lkdGg7CisgICAgaWYg
KGhlaWdodCkKKyAgICAgICAgKmhlaWdodCA9IHJlcXVlc3QuaGVpZ2h0OworCisgICAgaWYgKCFj
ZWxsQXJlYSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHhPZmZzZXQpIHsKKyAgICAgICAg
Z2Zsb2F0IHhBbGlnbjsKKyAgICAgICAgZ19vYmplY3RfZ2V0KHJlbmRlcmVyLCAieC1hbGlnbiIs
ICZ4QWxpZ24sIE5VTEwpOworICAgICAgICAqeE9mZnNldCA9ICgoKGd0a193aWRnZXRfZ2V0X2Rp
cmVjdGlvbih3aWRnZXQpID09IEdUS19URVhUX0RJUl9SVEwpID8KKyAgICAgICAgICAgICAgICAg
ICAgICAoMS4wIC0geEFsaWduKSA6IHhBbGlnbikgKiAoY2VsbEFyZWEtPndpZHRoIC0gcmVxdWVz
dC53aWR0aCkpOworICAgICAgICAqeE9mZnNldCA9IE1BWCgqeE9mZnNldCwgMCk7CisgICAgfQor
ICAgIGlmICh5T2Zmc2V0KSB7CisgICAgICAgIGdmbG9hdCB5QWxpZ247CisgICAgICAgIGdfb2Jq
ZWN0X2dldChyZW5kZXJlciwgInktYWxpZ24iLCAmeUFsaWduLCBOVUxMKTsKKyAgICAgICAgKnlP
ZmZzZXQgPSAoeUFsaWduICogKGNlbGxBcmVhLT5oZWlnaHQgLSByZXF1ZXN0LmhlaWdodCkpOwor
ICAgICAgICAqeU9mZnNldCA9IE1BWCgqeU9mZnNldCwgMCk7CisgICAgfQorfQorCitzdGF0aWMg
dm9pZCBicm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudENlbGxSZW5kZXJlckdldFNpemUoR3RrQ2Vs
bFJlbmRlcmVyICpjZWxsLCBHdGtXaWRnZXQgKndpZGdldCwgY29uc3QgR2RrUmVjdGFuZ2xlICpj
ZWxsQXJlYSwgZ2ludCAqeE9mZnNldCwgZ2ludCAqeU9mZnNldCwgZ2ludCAqd2lkdGgsIGdpbnQg
KmhlaWdodCkKK3sKKyAgICBCcm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudCAqcmVuZGVyZXIgPSBC
Uk9XU0VSX0NFTExfUkVOREVSRVJfVkFSSUFOVChjZWxsKTsKKworICAgIGlmICghcmVuZGVyZXIt
PnZhbHVlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoR19WQUxVRV9IT0xEU19CT09MRUFO
KHJlbmRlcmVyLT52YWx1ZSkpIHsKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHJlbmRl
cmVyLT50b2dnbGVSZW5kZXJlciksCisgICAgICAgICAgICAgICAgICAgICAieGFsaWduIiwgMC4w
LAorICAgICAgICAgICAgICAgICAgICAgImFjdGl2ZSIsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4ocmVu
ZGVyZXItPnZhbHVlKSwKKyAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgY2Vs
bFJlbmRlcmVyR2V0U2l6ZShyZW5kZXJlci0+dG9nZ2xlUmVuZGVyZXIsIHdpZGdldCwgY2VsbEFy
ZWEsIHhPZmZzZXQsIHlPZmZzZXQsIHdpZHRoLCBoZWlnaHQpOworICAgIH0KK30KKworc3RhdGlj
IGdpbnQgYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVuZGVyZXJBY3RpdmF0ZShHdGtD
ZWxsUmVuZGVyZXIgKmNlbGwsIEdka0V2ZW50ICpldmVudCwgR3RrV2lkZ2V0ICp3aWRnZXQsIGNv
bnN0IGdjaGFyICpwYXRoLCBjb25zdCBHZGtSZWN0YW5nbGUgKmJnQXJlYSwgY29uc3QgR2RrUmVj
dGFuZ2xlICpjZWxsQXJlYSwgR3RrQ2VsbFJlbmRlcmVyU3RhdGUgZmxhZ3MpCit7CisgICAgQnJv
d3NlckNlbGxSZW5kZXJlclZhcmlhbnQgKnJlbmRlcmVyID0gQlJPV1NFUl9DRUxMX1JFTkRFUkVS
X1ZBUklBTlQoY2VsbCk7CisKKyAgICBpZiAoIXJlbmRlcmVyLT52YWx1ZSkKKyAgICAgICAgcmV0
dXJuIFRSVUU7CisKKyAgICBpZiAoR19WQUxVRV9IT0xEU19CT09MRUFOKHJlbmRlcmVyLT52YWx1
ZSkpIHsKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbihyZW5kZXJlci0+dmFsdWUsICFnX3Zh
bHVlX2dldF9ib29sZWFuKHJlbmRlcmVyLT52YWx1ZSkpOworICAgICAgICBnX3NpZ25hbF9lbWl0
KHJlbmRlcmVyLCBzaWduYWxzW0NIQU5HRURdLCAwLCBwYXRoLCByZW5kZXJlci0+dmFsdWUpOwor
ICAgIH0KKworICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZCBicm93c2VyQ2VsbFJl
bmRlcmVyVmFyaWFudENlbGxSZW5kZXJlclJlbmRlcihHdGtDZWxsUmVuZGVyZXIgKmNlbGwsIGNh
aXJvX3QgKmNyLCBHdGtXaWRnZXQgKndpZGdldCwgY29uc3QgR2RrUmVjdGFuZ2xlICpiZ0FyZWEs
IGNvbnN0IEdka1JlY3RhbmdsZSAqY2VsbEFyZWEsIEd0a0NlbGxSZW5kZXJlclN0YXRlIGZsYWdz
KQoreworICAgIEJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50ICpyZW5kZXJlciA9IEJST1dTRVJf
Q0VMTF9SRU5ERVJFUl9WQVJJQU5UKGNlbGwpOworCisgICAgaWYgKCFyZW5kZXJlci0+dmFsdWUp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmIChHX1ZBTFVFX0hPTERTX0JPT0xFQU4ocmVuZGVy
ZXItPnZhbHVlKSkgeworICAgICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1QocmVuZGVyZXItPnRv
Z2dsZVJlbmRlcmVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAieGFsaWduIiwgMC4wLAorICAg
ICAgICAgICAgICAgICAgICAgICJhY3RpdmUiLCBnX3ZhbHVlX2dldF9ib29sZWFuKHJlbmRlcmVy
LT52YWx1ZSksCisgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisKKyAgICAgICAgZ3RrX2Nl
bGxfcmVuZGVyZXJfcmVuZGVyKHJlbmRlcmVyLT50b2dnbGVSZW5kZXJlciwgY3IsIHdpZGdldCwg
YmdBcmVhLCBjZWxsQXJlYSwgZmxhZ3MpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgYnJvd3Nl
cl9jZWxsX3JlbmRlcmVyX3ZhcmlhbnRfaW5pdChCcm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudCAq
cmVuZGVyZXIpCit7CisgICAgZ19vYmplY3Rfc2V0KHJlbmRlcmVyLCAibW9kZSIsIEdUS19DRUxM
X1JFTkRFUkVSX01PREVfQUNUSVZBVEFCTEUsIE5VTEwpOworICAgIHJlbmRlcmVyLT50b2dnbGVS
ZW5kZXJlciA9IGd0a19jZWxsX3JlbmRlcmVyX3RvZ2dsZV9uZXcoKTsKKyAgICBnX29iamVjdF9y
ZWZfc2luayhyZW5kZXJlci0+dG9nZ2xlUmVuZGVyZXIpOworfQorCitzdGF0aWMgdm9pZCBicm93
c2VyX2NlbGxfcmVuZGVyZXJfdmFyaWFudF9jbGFzc19pbml0KEJyb3dzZXJDZWxsUmVuZGVyZXJW
YXJpYW50Q2xhc3MgKmtsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyAqZ29iamVjdENsYXNzID0g
R19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworICAgIEd0a0NlbGxSZW5kZXJlckNsYXNzICpjZWxsUmVu
ZGVyZXJDbGFzcyA9IEdUS19DRUxMX1JFTkRFUkVSX0NMQVNTKGtsYXNzKTsKKworICAgIGdvYmpl
Y3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRHZXRQcm9w
ZXJ0eTsKKyAgICBnb2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IGJyb3dzZXJDZWxsUmVuZGVy
ZXJWYXJpYW50U2V0UHJvcGVydHk7CisgICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9IGJyb3dz
ZXJDZWxsUmVuZGVyZXJWYXJpYW50RmluYWxpemU7CisKKyAgICBjZWxsUmVuZGVyZXJDbGFzcy0+
Z2V0X3NpemUgPSBicm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudENlbGxSZW5kZXJlckdldFNpemU7
CisgICAgY2VsbFJlbmRlcmVyQ2xhc3MtPmFjdGl2YXRlID0gYnJvd3NlckNlbGxSZW5kZXJlclZh
cmlhbnRDZWxsUmVuZGVyZXJBY3RpdmF0ZTsKKyAgICBjZWxsUmVuZGVyZXJDbGFzcy0+cmVuZGVy
ID0gYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVuZGVyZXJSZW5kZXI7CisKKyAgICBn
X29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfVkFMVUUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm94ZWQoInZhbHVlIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUg
Y2VsbCByZW5kZXJlciB2YWx1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR19UWVBFX1ZBTFVFLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFKSk7CisK
KyAgICBzaWduYWxzW0NIQU5HRURdID0KKyAgICAgICAgZ19zaWduYWxfbmV3KCJjaGFuZ2VkIiwK
KyAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKGdvYmplY3RDbGFzcyksCisg
ICAgICAgICAgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAgICAgICAg
ICAgIDAsIE5VTEwsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICBicm93c2VyX21hcnNoYWxf
Vk9JRF9fU1RSSU5HX0JPWEVELAorICAgICAgICAgICAgICAgICAgICAgR19UWVBFX05PTkUsIDIs
CisgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfU1RSSU5HLCBHX1RZUEVfVkFMVUUpOworfQor
CitHdGtDZWxsUmVuZGVyZXIgKmJyb3dzZXJfY2VsbF9yZW5kZXJlcl92YXJpYW50X25ldyh2b2lk
KQoreworICAgIHJldHVybiBHVEtfQ0VMTF9SRU5ERVJFUihnX29iamVjdF9uZXcoQlJPV1NFUl9U
WVBFX0NFTExfUkVOREVSRVJfVkFSSUFOVCwgTlVMTCkpOworfQorCmRpZmYgLS1naXQgYS9Ub29s
cy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnQuaCBiL1Rvb2xzL01p
bmlCcm93c2VyL2d0ay9Ccm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmY2UzYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9N
aW5pQnJvd3Nlci9ndGsvQnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnQuaApAQCAtMCwwICsxLDQ5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgQnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRfaAorI2RlZmluZSBCcm93c2VyQ2VsbFJl
bmRlcmVyVmFyaWFudF9oCisKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisKK0dfQkVHSU5fREVDTFMK
KworI2RlZmluZSBCUk9XU0VSX1RZUEVfQ0VMTF9SRU5ERVJFUl9WQVJJQU5UICAgICAgICAgICAg
KGJyb3dzZXJfY2VsbF9yZW5kZXJlcl92YXJpYW50X2dldF90eXBlKCkpCisjZGVmaW5lIEJST1dT
RVJfQ0VMTF9SRU5ERVJFUl9WQVJJQU5UKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lO
U1RBTkNFX0NBU1QoKG9iaiksIEJST1dTRVJfVFlQRV9DRUxMX1JFTkRFUkVSX1ZBUklBTlQsIEJy
b3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50KSkKKyNkZWZpbmUgQlJPV1NFUl9DRUxMX1JFTkRFUkVS
X1ZBUklBTlRfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3Mp
LCAgQlJPV1NFUl9UWVBFX0NFTExfUkVOREVSRVJfVkFSSUFOVCwgQnJvd3NlckNlbGxSZW5kZXJl
clZhcmlhbnRDbGFzcykpCisjZGVmaW5lIEJST1dTRVJfSVNfQ0VMTF9SRU5ERVJFUl9WQVJJQU5U
KG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIEJST1dTRVJf
VFlQRV9DRUxMX1JFTkRFUkVSX1ZBUklBTlQpKQorI2RlZmluZSBCUk9XU0VSX0lTX0NFTExfUkVO
REVSRVJfVkFSSUFOVF9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFz
cyksICBCUk9XU0VSX1RZUEVfQ0VMTF9SRU5ERVJFUl9WQVJJQU5UKSkKKyNkZWZpbmUgQlJPV1NF
Ul9DRUxMX1JFTkRFUkVSX1ZBUklBTlRfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0Vf
R0VUX0NMQVNTKChvYmopLCAgQlJPV1NFUl9UWVBFX0NFTExfUkVOREVSRVJfVkFSSUFOVCwgQnJv
d3NlckNlbGxSZW5kZXJlclZhcmlhbnRDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9Ccm93c2Vy
Q2VsbFJlbmRlcmVyVmFyaWFudCAgICAgICAgQnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnQ7Cit0
eXBlZGVmIHN0cnVjdCBfQnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRDbGFzcyAgIEJyb3dzZXJD
ZWxsUmVuZGVyZXJWYXJpYW50Q2xhc3M7CisKK0dUeXBlIGJyb3dzZXJfY2VsbF9yZW5kZXJlcl92
YXJpYW50X2dldF90eXBlKHZvaWQpOworCitHdGtDZWxsUmVuZGVyZXIqIGJyb3dzZXJfY2VsbF9y
ZW5kZXJlcl92YXJpYW50X25ldyh2b2lkKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNldHRpbmdzRGlhbG9nLmMgYi9U
b29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNldHRpbmdzRGlhbG9nLmMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjgxOWQ0YQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L01pbmlCcm93c2VyL2d0ay9Ccm93c2VyU2V0dGluZ3NEaWFsb2cuYwpAQCAtMCwwICsxLDE3MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiQnJvd3NlclNldHRpbmdzRGlhbG9nLmgiCisjaW5jbHVkZSAiQnJvd3NlckNlbGxSZW5k
ZXJlclZhcmlhbnQuaCIKKworZW51bSB7CisgICAgUFJPUF8wLAorCisgICAgUFJPUF9TRVRUSU5H
UworfTsKKworZW51bSB7CisgICAgU0VUVElOR1NfTElTVF9DT0xVTU5fTkFNRSwKKyAgICBTRVRU
SU5HU19MSVNUX0NPTFVNTl9WQUxVRSwKKworICAgIFNFVFRJTkdTX0xJU1RfTl9DT0xVTU5TCit9
OworCitzdHJ1Y3QgX0Jyb3dzZXJTZXR0aW5nc0RpYWxvZyB7CisgICAgR3RrRGlhbG9nIHBhcmVu
dDsKKworICAgIEd0a1dpZGdldCAqc2V0dGluZ3NMaXN0OworICAgIFdlYktpdFNldHRpbmdzICpz
ZXR0aW5nczsKK307CisKK3N0cnVjdCBfQnJvd3NlclNldHRpbmdzRGlhbG9nQ2xhc3MgeworICAg
IEd0a0RpYWxvZ0NsYXNzIHBhcmVudDsKK307CisKK0dfREVGSU5FX1RZUEUoQnJvd3NlclNldHRp
bmdzRGlhbG9nLCBicm93c2VyX3NldHRpbmdzX2RpYWxvZywgR1RLX1RZUEVfRElBTE9HKQorCitz
dGF0aWMgdm9pZCBjZWxsUmVuZGVyZXJDaGFuZ2VkKEd0a0NlbGxSZW5kZXJlciAqcmVuZGVyZXIs
IGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IEdWYWx1ZSAqdmFsdWUsIEJyb3dzZXJTZXR0aW5nc0Rp
YWxvZyAqZGlhbG9nKQoreworICAgIEd0a1RyZWVNb2RlbCAqbW9kZWwgPSBndGtfdHJlZV92aWV3
X2dldF9tb2RlbChHVEtfVFJFRV9WSUVXKGRpYWxvZy0+c2V0dGluZ3NMaXN0KSk7CisgICAgR3Rr
VHJlZVBhdGggKnRyZWVQYXRoID0gZ3RrX3RyZWVfcGF0aF9uZXdfZnJvbV9zdHJpbmcocGF0aCk7
CisgICAgR3RrVHJlZUl0ZXIgaXRlcjsKKyAgICBndGtfdHJlZV9tb2RlbF9nZXRfaXRlcihtb2Rl
bCwgJml0ZXIsIHRyZWVQYXRoKTsKKworICAgIGNoYXIgKm5hbWU7CisgICAgZ3RrX3RyZWVfbW9k
ZWxfZ2V0KG1vZGVsLCAmaXRlciwgU0VUVElOR1NfTElTVF9DT0xVTU5fTkFNRSwgJm5hbWUsIC0x
KTsKKyAgICBnX29iamVjdF9zZXRfcHJvcGVydHkoR19PQkpFQ1QoZGlhbG9nLT5zZXR0aW5ncyks
IG5hbWUsIHZhbHVlKTsKKyAgICBnX2ZyZWUobmFtZSk7CisKKyAgICBndGtfbGlzdF9zdG9yZV9z
ZXQoR1RLX0xJU1RfU1RPUkUobW9kZWwpLCAmaXRlciwgU0VUVElOR1NfTElTVF9DT0xVTU5fVkFM
VUUsIHZhbHVlLCAtMSk7CisgICAgZ3RrX3RyZWVfcGF0aF9mcmVlKHRyZWVQYXRoKTsKK30KKwor
c3RhdGljIHZvaWQgYnJvd3NlclNldHRpbmdzRGlhbG9nU2V0UHJvcGVydHkoR09iamVjdCAqb2Jq
ZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZSAqdmFsdWUsIEdQYXJhbVNwZWMgKnBzcGVj
KQoreworICAgIEJyb3dzZXJTZXR0aW5nc0RpYWxvZyAqZGlhbG9nID0gQlJPV1NFUl9TRVRUSU5H
U19ESUFMT0cob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElkKSB7CisgICAgY2FzZSBQUk9Q
X1NFVFRJTkdTOgorICAgICAgICBkaWFsb2ctPnNldHRpbmdzID0gZ192YWx1ZV9nZXRfb2JqZWN0
KHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1Rf
V0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwc3BlYyk7CisgICAgfQor
fQorCitzdGF0aWMgdm9pZCBicm93c2VyX3NldHRpbmdzX2RpYWxvZ19pbml0KEJyb3dzZXJTZXR0
aW5nc0RpYWxvZyAqZGlhbG9nKQoreworICAgIEd0a0JveCAqY29udGVudEFyZWEgPSBHVEtfQk9Y
KGd0a19kaWFsb2dfZ2V0X2NvbnRlbnRfYXJlYShHVEtfRElBTE9HKGRpYWxvZykpKTsKKyAgICBn
dGtfYm94X3NldF9zcGFjaW5nKGNvbnRlbnRBcmVhLCAyKTsKKworICAgIGd0a193aW5kb3dfc2V0
X2RlZmF1bHRfc2l6ZShHVEtfV0lORE9XKGRpYWxvZyksIDQwMCwgMzAwKTsKKyAgICBndGtfd2lu
ZG93X3NldF90aXRsZShHVEtfV0lORE9XKGRpYWxvZyksICJXZWJLaXQgVmlldyBTZXR0aW5ncyIp
OworICAgIGd0a193aW5kb3dfc2V0X2Rlc3Ryb3lfd2l0aF9wYXJlbnQoR1RLX1dJTkRPVyhkaWFs
b2cpLCBUUlVFKTsKKyAgICBndGtfY29udGFpbmVyX3NldF9ib3JkZXJfd2lkdGgoR1RLX0NPTlRB
SU5FUihkaWFsb2cpLCA1KTsKKyAgICBndGtfZGlhbG9nX2FkZF9idXR0b24oR1RLX0RJQUxPRyhk
aWFsb2cpLCBHVEtfU1RPQ0tfQ0xPU0UsIEdUS19SRVNQT05TRV9DTE9TRSk7CisgICAgZ3RrX2Rp
YWxvZ19zZXRfZGVmYXVsdF9yZXNwb25zZShHVEtfRElBTE9HKGRpYWxvZyksIEdUS19SRVNQT05T
RV9DTE9TRSk7CisKKyAgICBHdGtXaWRnZXQgKnNjcm9sbGVkV2luZG93ID0gZ3RrX3Njcm9sbGVk
X3dpbmRvd19uZXcoTlVMTCwgTlVMTCk7CisgICAgZGlhbG9nLT5zZXR0aW5nc0xpc3QgPSBndGtf
dHJlZV92aWV3X25ldygpOworICAgIEd0a0NlbGxSZW5kZXJlciAqcmVuZGVyZXIgPSBndGtfY2Vs
bF9yZW5kZXJlcl90ZXh0X25ldygpOworICAgIGd0a190cmVlX3ZpZXdfaW5zZXJ0X2NvbHVtbl93
aXRoX2F0dHJpYnV0ZXMoR1RLX1RSRUVfVklFVyhkaWFsb2ctPnNldHRpbmdzTGlzdCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAiTmFtZSIsIHJl
bmRlcmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InRleHQiLCBTRVRUSU5HU19MSVNUX0NPTFVNTl9OQU1FLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgcmVuZGVyZXIgPSBicm93c2Vy
X2NlbGxfcmVuZGVyZXJfdmFyaWFudF9uZXcoKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHJlbmRl
cmVyLCAiY2hhbmdlZCIsIEdfQ0FMTEJBQ0soY2VsbFJlbmRlcmVyQ2hhbmdlZCksIGRpYWxvZyk7
CisgICAgZ3RrX3RyZWVfdmlld19pbnNlcnRfY29sdW1uX3dpdGhfYXR0cmlidXRlcyhHVEtfVFJF
RV9WSUVXKGRpYWxvZy0+c2V0dGluZ3NMaXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEsICJWYWx1ZSIsIHJlbmRlcmVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIiwgU0VUVElOR1NfTElT
VF9DT0xVTU5fVkFMVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOVUxMKTsKKworICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIoc2Ny
b2xsZWRXaW5kb3cpLCBkaWFsb2ctPnNldHRpbmdzTGlzdCk7CisgICAgZ3RrX3dpZGdldF9zaG93
KGRpYWxvZy0+c2V0dGluZ3NMaXN0KTsKKworICAgIGd0a19ib3hfcGFja19zdGFydChjb250ZW50
QXJlYSwgc2Nyb2xsZWRXaW5kb3csIFRSVUUsIFRSVUUsIDApOworICAgIGd0a193aWRnZXRfc2hv
dyhzY3JvbGxlZFdpbmRvdyk7CisKKyAgICBnX3NpZ25hbF9jb25uZWN0KGRpYWxvZywgInJlc3Bv
bnNlIiwgR19DQUxMQkFDSyhndGtfd2lkZ2V0X2Rlc3Ryb3kpLCBOVUxMKTsKK30KKworc3RhdGlj
IHZvaWQgYnJvd3NlclNldHRpbmdzRGlhbG9nQ29uc3RydWN0ZWQoR09iamVjdCAqb2JqZWN0KQor
eworICAgIEJyb3dzZXJTZXR0aW5nc0RpYWxvZyAqZGlhbG9nID0gQlJPV1NFUl9TRVRUSU5HU19E
SUFMT0cob2JqZWN0KTsKKyAgICBXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MgPSBkaWFsb2ctPnNl
dHRpbmdzOworCisgICAgR3RrTGlzdFN0b3JlICptb2RlbCA9IGd0a19saXN0X3N0b3JlX25ldyhT
RVRUSU5HU19MSVNUX05fQ09MVU1OUywgR19UWVBFX1NUUklORywgR19UWVBFX1ZBTFVFKTsKKyAg
ICBndWludCBwcm9wZXJ0aWVzQ291bnQ7CisgICAgR1BhcmFtU3BlYyAqKnByb3BlcnRpZXMgPSBn
X29iamVjdF9jbGFzc19saXN0X3Byb3BlcnRpZXMoR19PQkpFQ1RfR0VUX0NMQVNTKHNldHRpbmdz
KSwgJnByb3BlcnRpZXNDb3VudCk7CisgICAgZ3VpbnQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwg
cHJvcGVydGllc0NvdW50OyBpKyspIHsKKyAgICAgICAgR1BhcmFtU3BlYyAqcHJvcGVydHkgPSBw
cm9wZXJ0aWVzW2ldOworICAgICAgICBjb25zdCBjaGFyICpuYW1lID0gZ19wYXJhbV9zcGVjX2dl
dF9uYW1lKHByb3BlcnR5KTsKKworICAgICAgICBHVmFsdWUgdmFsdWUgPSB7IDAsIH07CisgICAg
ICAgIGdfdmFsdWVfaW5pdCgmdmFsdWUsIEdfUEFSQU1fU1BFQ19WQUxVRV9UWVBFKHByb3BlcnR5
KSk7CisgICAgICAgIGdfb2JqZWN0X2dldF9wcm9wZXJ0eShHX09CSkVDVChzZXR0aW5ncyksIG5h
bWUsICZ2YWx1ZSk7CisKKyAgICAgICAgR3RrVHJlZUl0ZXIgaXRlcjsKKyAgICAgICAgZ3RrX2xp
c3Rfc3RvcmVfYXBwZW5kKG1vZGVsLCAmaXRlcik7CisgICAgICAgIGd0a19saXN0X3N0b3JlX3Nl
dChtb2RlbCwgJml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRUSU5HU19MSVNU
X0NPTFVNTl9OQU1FLCBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VUVElOR1Nf
TElTVF9DT0xVTU5fVkFMVUUsICZ2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0x
KTsKKyAgICAgICAgZ192YWx1ZV91bnNldCgmdmFsdWUpOworICAgIH0KKworICAgIGd0a190cmVl
X3ZpZXdfc2V0X21vZGVsKEdUS19UUkVFX1ZJRVcoZGlhbG9nLT5zZXR0aW5nc0xpc3QpLCBHVEtf
VFJFRV9NT0RFTChtb2RlbCkpOworICAgIGdfb2JqZWN0X3VucmVmKG1vZGVsKTsKK30KKworc3Rh
dGljIHZvaWQgYnJvd3Nlcl9zZXR0aW5nc19kaWFsb2dfY2xhc3NfaW5pdChCcm93c2VyU2V0dGlu
Z3NEaWFsb2dDbGFzcyAqa2xhc3MpCit7CisgICAgR09iamVjdENsYXNzICpnb2JqZWN0Q2xhc3Mg
PSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisKKyAgICBnb2JqZWN0Q2xhc3MtPmNvbnN0cnVjdGVk
ID0gYnJvd3NlclNldHRpbmdzRGlhbG9nQ29uc3RydWN0ZWQ7CisgICAgZ29iamVjdENsYXNzLT5z
ZXRfcHJvcGVydHkgPSBicm93c2VyU2V0dGluZ3NEaWFsb2dTZXRQcm9wZXJ0eTsKKworICAgIGdf
b2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9TRVRUSU5HUywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QoInNldHRpbmdzIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNldHRp
bmdzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIlRoZSBXZWJLaXRTZXR0aW5ncyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX1NFVFRJTkdTLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFN
X1dSSVRBQkxFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkpOworfQorCitHdGtXaWRnZXQgKmJy
b3dzZXJfc2V0dGluZ3NfZGlhbG9nX25ldyhXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MpCit7Cisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgTlVM
TCk7CisKKyAgICByZXR1cm4gR1RLX1dJREdFVChnX29iamVjdF9uZXcoQlJPV1NFUl9UWVBFX1NF
VFRJTkdTX0RJQUxPRywgInNldHRpbmdzIiwgc2V0dGluZ3MsIE5VTEwpKTsKK30KKwpkaWZmIC0t
Z2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZXR0aW5nc0RpYWxvZy5oIGIvVG9v
bHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZXR0aW5nc0RpYWxvZy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzZGJjZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9N
aW5pQnJvd3Nlci9ndGsvQnJvd3NlclNldHRpbmdzRGlhbG9nLmgKQEAgLTAsMCArMSw1MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEJyb3dzZXJTZXR0aW5nc0RpYWxvZ19oCisjZGVmaW5lIEJyb3dzZXJTZXR0aW5nc0RpYWxvZ19o
CisKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQyLmg+CisK
K0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBCUk9XU0VSX1RZUEVfU0VUVElOR1NfRElBTE9HICAg
ICAgICAgICAgKGJyb3dzZXJfc2V0dGluZ3NfZGlhbG9nX2dldF90eXBlKCkpCisjZGVmaW5lIEJS
T1dTRVJfU0VUVElOR1NfRElBTE9HKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RB
TkNFX0NBU1QoKG9iaiksIEJST1dTRVJfVFlQRV9TRVRUSU5HU19ESUFMT0csIEJyb3dzZXJTZXR0
aW5nc0RpYWxvZykpCisjZGVmaW5lIEJST1dTRVJfU0VUVElOR1NfRElBTE9HX0NMQVNTKGtsYXNz
KSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIEJST1dTRVJfVFlQRV9TRVRU
SU5HU19ESUFMT0csIEJyb3dzZXJTZXR0aW5nc0RpYWxvZ0NsYXNzKSkKKyNkZWZpbmUgQlJPV1NF
Ul9JU19TRVRUSU5HU19ESUFMT0cob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0Vf
VFlQRSgob2JqKSwgQlJPV1NFUl9UWVBFX1NFVFRJTkdTX0RJQUxPRykpCisjZGVmaW5lIEJST1dT
RVJfSVNfU0VUVElOR1NfRElBTE9HX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZ
UEUoKGtsYXNzKSwgIEJST1dTRVJfVFlQRV9TRVRUSU5HU19ESUFMT0cpKQorI2RlZmluZSBCUk9X
U0VSX1NFVFRJTkdTX0RJQUxPR19HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRf
Q0xBU1MoKG9iaiksICBCUk9XU0VSX1RZUEVfU0VUVElOR1NfRElBTE9HLCBCcm93c2VyU2V0dGlu
Z3NEaWFsb2dDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9Ccm93c2VyU2V0dGluZ3NEaWFsb2cg
ICAgICAgIEJyb3dzZXJTZXR0aW5nc0RpYWxvZzsKK3R5cGVkZWYgc3RydWN0IF9Ccm93c2VyU2V0
dGluZ3NEaWFsb2dDbGFzcyAgIEJyb3dzZXJTZXR0aW5nc0RpYWxvZ0NsYXNzOworCitHVHlwZSBi
cm93c2VyX3NldHRpbmdzX2RpYWxvZ19nZXRfdHlwZSh2b2lkKTsKKworR3RrV2lkZ2V0KiBicm93
c2VyX3NldHRpbmdzX2RpYWxvZ19uZXcoV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzKTsKKworR19F
TkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJv
d3NlcldpbmRvdy5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwppbmRl
eCA3NzA1ZmEyLi42OTFmODY2IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJv
d3NlcldpbmRvdy5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMK
QEAgLTI2LDYgKzI2LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiQnJvd3NlcldpbmRvdy5oIgorI2lu
Y2x1ZGUgIkJyb3dzZXJTZXR0aW5nc0RpYWxvZy5oIgogCiBlbnVtIHsKICAgICBQUk9QXzAsCkBA
IC00MSw2ICs0Miw3IEBAIHN0cnVjdCBfQnJvd3NlcldpbmRvdyB7CiAgICAgR3RrV2lkZ2V0ICpi
YWNrSXRlbTsKICAgICBHdGtXaWRnZXQgKmZvcndhcmRJdGVtOwogICAgIEd0a1dpZGdldCAqc3Rh
dHVzTGFiZWw7CisgICAgR3RrV2lkZ2V0ICpzZXR0aW5nc0RpYWxvZzsKICAgICBXZWJLaXRXZWJW
aWV3ICp3ZWJWaWV3OwogCiB9OwpAQCAtODIsNiArODQsMTkgQEAgc3RhdGljIHZvaWQgZ29Gb3J3
YXJkQ2FsbGJhY2soQnJvd3NlcldpbmRvdyAqd2luZG93KQogICAgIHdlYmtpdF93ZWJfdmlld19n
b19mb3J3YXJkKHdpbmRvdy0+d2ViVmlldyk7CiB9CiAKK3N0YXRpYyB2b2lkIHNldHRpbmdzQ2Fs
bGJhY2soQnJvd3NlcldpbmRvdyAqd2luZG93KQoreworICAgIGlmICh3aW5kb3ctPnNldHRpbmdz
RGlhbG9nKSB7CisgICAgICAgIGd0a193aW5kb3dfcHJlc2VudChHVEtfV0lORE9XKHdpbmRvdy0+
c2V0dGluZ3NEaWFsb2cpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdpbmRvdy0+
c2V0dGluZ3NEaWFsb2cgPSBicm93c2VyX3NldHRpbmdzX2RpYWxvZ19uZXcod2Via2l0X3dlYl92
aWV3X2dldF9zZXR0aW5ncyh3aW5kb3ctPndlYlZpZXcpKTsKKyAgICBndGtfd2luZG93X3NldF90
cmFuc2llbnRfZm9yKEdUS19XSU5ET1cod2luZG93LT5zZXR0aW5nc0RpYWxvZyksIEdUS19XSU5E
T1cod2luZG93KSk7CisgICAgZ19vYmplY3RfYWRkX3dlYWtfcG9pbnRlcihHX09CSkVDVCh3aW5k
b3ctPnNldHRpbmdzRGlhbG9nKSwgKGdwb2ludGVyICopJndpbmRvdy0+c2V0dGluZ3NEaWFsb2cp
OworICAgIGd0a193aWRnZXRfc2hvdyh3aW5kb3ctPnNldHRpbmdzRGlhbG9nKTsKK30KKwogc3Rh
dGljIHZvaWQgd2ViVmlld1VSSUNoYW5nZWQoV2ViS2l0V2ViVmlldyAqd2ViVmlldywgR1BhcmFt
U3BlYyAqcHNwZWMsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykKIHsKICAgICBndGtfZW50cnlfc2V0
X3RleHQoR1RLX0VOVFJZKHdpbmRvdy0+dXJpRW50cnkpLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Vy
aSh3ZWJWaWV3KSk7CkBAIC0yMzcsNiArMjUyLDExIEBAIHN0YXRpYyB2b2lkIGJyb3dzZXJfd2lu
ZG93X2luaXQoQnJvd3NlcldpbmRvdyAqd2luZG93KQogICAgIGd0a190b29sYmFyX2luc2VydChH
VEtfVE9PTEJBUih0b29sYmFyKSwgaXRlbSwgLTEpOwogICAgIGd0a193aWRnZXRfc2hvdyhHVEtf
V0lER0VUKGl0ZW0pKTsKIAorICAgIGl0ZW0gPSBndGtfbWVudV90b29sX2J1dHRvbl9uZXdfZnJv
bV9zdG9jayhHVEtfU1RPQ0tfUFJFRkVSRU5DRVMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dh
cHBlZChHX09CSkVDVChpdGVtKSwgImNsaWNrZWQiLCBHX0NBTExCQUNLKHNldHRpbmdzQ2FsbGJh
Y2spLCAoZ3BvaW50ZXIpd2luZG93KTsKKyAgICBndGtfdG9vbGJhcl9pbnNlcnQoR1RLX1RPT0xC
QVIodG9vbGJhciksIGl0ZW0sIC0xKTsKKyAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJREdFVChp
dGVtKSk7CisKICAgICBpdGVtID0gZ3RrX3Rvb2xfaXRlbV9uZXcoKTsKICAgICBndGtfdG9vbF9p
dGVtX3NldF9leHBhbmQoaXRlbSwgVFJVRSk7CiAgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NP
TlRBSU5FUihpdGVtKSwgd2luZG93LT51cmlFbnRyeSk7CmRpZmYgLS1naXQgYS9Ub29scy9NaW5p
QnJvd3Nlci9ndGsvR05VbWFrZWZpbGUuYW0gYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvR05VbWFr
ZWZpbGUuYW0KaW5kZXggZTMyYTE2ZC4uY2YzOTk0YSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJy
b3dzZXIvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9HTlVt
YWtlZmlsZS5hbQpAQCAtMSw4ICsxLDEzIEBACiBub2luc3RfUFJPR1JBTVMgKz0gXAogCVByb2dy
YW1zL01pbmlCcm93c2VyCiAKK21pbmlicm93c2VyX2J1aWx0X3NvdXJjZXMgKz0gXAorCURlcml2
ZWRTb3VyY2VzL1dlYktpdDIvQnJvd3Nlck1hcnNoYWwuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0Mi9Ccm93c2VyTWFyc2hhbC5jCisKIFByb2dyYW1zX01pbmlCcm93c2VyX0NQUEZMQUdTID0g
XAogCS1JJChzcmNkaXIpL1NvdXJjZSBcCisJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0MiBcCiAJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi93
ZWJraXQyZ3RrIFwKIAktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL3dl
YmtpdDJndGsvaW5jbHVkZSBcCiAJLURXRUJLSVRfRVhFQ19QQVRIPVwiJHtzaGVsbCBwd2R9LyQo
dG9wX2J1aWxkZGlyKS9Qcm9ncmFtcy9cIiBcCkBAIC0xMSw2ICsxNiwxMSBAQCBQcm9ncmFtc19N
aW5pQnJvd3Nlcl9DUFBGTEFHUyA9IFwKIAkkKEdUS19DRkxBR1MpCiAKIFByb2dyYW1zX01pbmlC
cm93c2VyX1NPVVJDRVMgPSBcCisJJChtaW5pYnJvd3Nlcl9idWlsdF9zb3VyY2VzKSBcCisJVG9v
bHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50LmggXAorCVRvb2xz
L01pbmlCcm93c2VyL2d0ay9Ccm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudC5jIFwKKwlUb29scy9N
aW5pQnJvd3Nlci9ndGsvQnJvd3NlclNldHRpbmdzRGlhbG9nLmggXAorCVRvb2xzL01pbmlCcm93
c2VyL2d0ay9Ccm93c2VyU2V0dGluZ3NEaWFsb2cuYyBcCiAJVG9vbHMvTWluaUJyb3dzZXIvZ3Rr
L0Jyb3dzZXJXaW5kb3cuaCBcCiAJVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cu
YyBcCiAJVG9vbHMvTWluaUJyb3dzZXIvZ3RrL21haW4uYwpAQCAtMjUsNSArMzUsMjcgQEAgUHJv
Z3JhbXNfTWluaUJyb3dzZXJfTERGTEFHUyA9IFwKIAktbm8taW5zdGFsbAogCiBDTEVBTkZJTEVT
ICs9IFwKLQkkKHRvcF9idWlsZGRpcikvUHJvZ3JhbXMvTWluaUJyb3dzZXIKKwkkKHRvcF9idWls
ZGRpcikvUHJvZ3JhbXMvTWluaUJyb3dzZXIgXAorCSQobWluaWJyb3dzZXJfYnVpbHRfc291cmNl
cykgXAorCSQodG9wX2J1aWxkZGlyKS9zdGFtcC1taW5pLWJyb3dzZXItbWFyc2hhbC5oIFwKKwkk
KHRvcF9idWlsZGRpcikvc3RhbXAtbWluaS1icm93c2VyLW1hcnNoYWwuYworCitCVUlMVF9TT1VS
Q0VTICs9ICQobWluaWJyb3dzZXJfYnVpbHRfc291cmNlcykKKworbWluaWJyb3dzZXJfbWFyc2hh
bF9saXN0ID0gJChzcmNkaXIpL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9icm93c2VyLW1hcnNoYWwu
bGlzdAorCiskKEdFTlNPVVJDRVNfV0VCS0lUMikvQnJvd3Nlck1hcnNoYWwuaDogc3RhbXAtbWlu
aS1icm93c2VyLW1hcnNoYWwuaAorCUB0cnVlCiskKEdFTlNPVVJDRVNfV0VCS0lUMikvQnJvd3Nl
ck1hcnNoYWwuYzogc3RhbXAtbWluaS1icm93c2VyLW1hcnNoYWwuYworCUB0cnVlCisKK3N0YW1w
LW1pbmktYnJvd3Nlci1tYXJzaGFsLmM6ICQobWluaWJyb3dzZXJfbWFyc2hhbF9saXN0KQorCSQo
QU1fVl9HRU4pJChHTElCX0dFTk1BUlNIQUwpIC0tcHJlZml4PWJyb3dzZXJfbWFyc2hhbCAkKG1p
bmlicm93c2VyX21hcnNoYWxfbGlzdCkgLS1ib2R5ID4gJChHRU5TT1VSQ0VTX1dFQktJVDIpL0Jy
b3dzZXJNYXJzaGFsLmMgJiYgXAorCWVjaG8gdGltZXN0YW1wID4gJChARikKKworc3RhbXAtbWlu
aS1icm93c2VyLW1hcnNoYWwuaDogJChNaW5pQnJvd3Nlcl9tYXJzaGFsX2xpc3QpCisJJChBTV9W
X0dFTikkKEdMSUJfR0VOTUFSU0hBTCkgLS1wcmVmaXg9YnJvd3Nlcl9tYXJzaGFsICQobWluaWJy
b3dzZXJfbWFyc2hhbF9saXN0KSAtLWhlYWRlciA+ICQoR0VOU09VUkNFU19XRUJLSVQyKS9Ccm93
c2VyTWFyc2hhbC5oICYmIFwKKwllY2hvIHRpbWVzdGFtcCA+ICQoQEYpCiAKK0VYVFJBX0RJU1Qg
Kz0gXAorCSQobWluaWJyb3dzZXJfbWFyc2hhbF9saXN0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWlu
aUJyb3dzZXIvZ3RrL2Jyb3dzZXItbWFyc2hhbC5saXN0IGIvVG9vbHMvTWluaUJyb3dzZXIvZ3Rr
L2Jyb3dzZXItbWFyc2hhbC5saXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmU3MmFhNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvYnJvd3Nl
ci1tYXJzaGFsLmxpc3QKQEAgLTAsMCArMSBAQAorVk9JRDpTVFJJTkcsQk9YRUQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120663</attachid>
            <date>2011-12-28 06:38:05 -0800</date>
            <delta_ts>2012-01-02 05:47:58 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-mb-settings3.diff</filename>
            <type>text/plain</type>
            <size>36122</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA3ZjM1NTM4Li5iYTA4NGFm
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTEtMTItMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdIEFkZCBhIHdheSB0byBjaGFuZ2Ugd2ViIHZpZXcgc2V0dGluZ3MgaW4g
TWluaUJyb3dzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcxNTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbTogSW5pdGlhbGl6ZSBtaW5pYnJvd3Nlcl9idWlsdF9zb3VyY2Vz
LgorCiAyMDExLTEyLTI3ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBXSVA6IEVuYWJsZSB0aGUgW1N1cHBsZW1lbnRhbF0gSURMIG9uIEd0awpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDYwY2VmZTMuLmVk
NGVjZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0OCBAQAorMjAxMS0xMi0yOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIGEgd2F5IHRvIGNoYW5nZSB3ZWIg
dmlldyBzZXR0aW5ncyBpbiBNaW5pQnJvd3NlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE1NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgYSBwcmVmZXJlbmNlcyBidXR0b24gdG8gdGhlIHRvb2xi
YXIgdGhhdCBzaG93cyBhIGRpYWxvZyB0bworICAgICAgICBjaGFuZ2Ugc2V0dGluZ3Mgb2YgdGhl
IGN1cnJlbnQgd2ViIHZpZXcuIEl0IHVzZXMgYSBHdGtUcmVlVmlldworICAgICAgICB3aXRoIGEg
Y3VzdG9tIGNlbGwgcmVuZGVyZXIgdG8gc3VwcG9ydCBtdWx0aXBsZSB0eXBlcyBvZiB2YWx1ZXMu
CisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnQu
YzogQWRkZWQuCisgICAgICAgIChicm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudEZpbmFsaXplKToK
KyAgICAgICAgKGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50R2V0UHJvcGVydHkpOgorICAgICAg
ICAoYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRTZXRNb2RlRm9yVmFsdWUpOgorICAgICAgICAo
YnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRTZXRQcm9wZXJ0eSk6CisgICAgICAgIChicm93c2Vy
Q2VsbFJlbmRlcmVyVmFyaWFudEdldFJlbmRlcmVyRm9yVmFsdWUpOgorICAgICAgICAoYnJvd3Nl
ckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVuZGVyZXJUZXh0RWRpdGVkKToKKyAgICAgICAgKGJy
b3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Q2VsbFJlbmRlcmVyU3BpbkVkaXRlZCk6CisgICAgICAg
IChicm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudENlbGxSZW5kZXJlckFjdGl2YXRlKToKKyAgICAg
ICAgKGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Q2VsbFJlbmRlcmVyUmVuZGVyKToKKyAgICAg
ICAgKGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Q2VsbFJlbmRlcmVyU3RhcnRFZGl0aW5nKToK
KyAgICAgICAgKGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Q2VsbFJlbmRlcmVyR2V0UHJlZmVy
cmVkV2lkdGgpOgorICAgICAgICAoYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVuZGVy
ZXJHZXRQcmVmZXJyZWRIZWlnaHQpOgorICAgICAgICAoYnJvd3NlckNlbGxSZW5kZXJlclZhcmlh
bnRDZWxsUmVuZGVyZXJHZXRQcmVmZXJyZWRXaWR0aEZvckhlaWdodCk6CisgICAgICAgIChicm93
c2VyQ2VsbFJlbmRlcmVyVmFyaWFudENlbGxSZW5kZXJlckdldFByZWZlcnJlZEhlaWdodEZvcldp
ZHRoKToKKyAgICAgICAgKGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Q2VsbFJlbmRlcmVyR2V0
QWxpZ25lZEFyZWEpOgorICAgICAgICAoYnJvd3Nlcl9jZWxsX3JlbmRlcmVyX3ZhcmlhbnRfaW5p
dCk6CisgICAgICAgIChicm93c2VyX2NlbGxfcmVuZGVyZXJfdmFyaWFudF9jbGFzc19pbml0KToK
KyAgICAgICAgKGJyb3dzZXJfY2VsbF9yZW5kZXJlcl92YXJpYW50X25ldyk6CisgICAgICAgICog
TWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Lmg6IEFkZGVkLgorICAg
ICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyU2V0dGluZ3NEaWFsb2cuYzogQWRkZWQuCisg
ICAgICAgIChjZWxsUmVuZGVyZXJDaGFuZ2VkKToKKyAgICAgICAgKGJyb3dzZXJTZXR0aW5nc0Rp
YWxvZ1NldFByb3BlcnR5KToKKyAgICAgICAgKGJyb3dzZXJfc2V0dGluZ3NfZGlhbG9nX2luaXQp
OgorICAgICAgICAoYnJvd3NlclNldHRpbmdzRGlhbG9nQ29uc3RydWN0ZWQpOgorICAgICAgICAo
YnJvd3Nlcl9zZXR0aW5nc19kaWFsb2dfY2xhc3NfaW5pdCk6CisgICAgICAgIChicm93c2VyX3Nl
dHRpbmdzX2RpYWxvZ19uZXcpOgorICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyU2V0
dGluZ3NEaWFsb2cuaDogQWRkZWQuCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJX
aW5kb3cuYzoKKyAgICAgICAgKHNldHRpbmdzQ2FsbGJhY2spOgorICAgICAgICAoYnJvd3Nlcl93
aW5kb3dfaW5pdCk6CisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0dOVW1ha2VmaWxlLmFtOgor
ICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9icm93c2VyLW1hcnNoYWwubGlzdDogQWRkZWQuCisK
IDIwMTEtMTItMjcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDM3MzQuCmRpZmYgLS1naXQgYS9H
TlVtYWtlZmlsZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmluZGV4IDU3NGQ1MGQuLmY5OGYyZDEgMTAw
NjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisrKyBiL0dOVW1ha2VmaWxlLmFtCkBAIC04MSw2ICs4
MSw3IEBAIHdlYmtpdDJfYnVpbHRfc291cmNlcyA6PQogd2Via2l0Ml9wbHVnaW5fcHJvY2Vzc19i
dWlsdF9zb3VyY2VzIDo9CiB3ZWJraXR0ZXN0cnVubmVyX2J1aWx0X3NvdXJjZXMgOj0KIGxpYndl
YmNvcmVpbnRlcm5hbHNfYnVpbHRfc291cmNlcyA6PQorbWluaWJyb3dzZXJfYnVpbHRfc291cmNl
cyA6PQogZ2xvYmFsX2NwcGZsYWdzIDo9CiBnbG9iYWxfY2ZsYWdzIDo9CiBnbG9iYWxfY3h4Zmxh
Z3MgOj0KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyQ2VsbFJlbmRl
cmVyVmFyaWFudC5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJDZWxsUmVuZGVyZXJW
YXJpYW50LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMyYjM0MQotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyQ2VsbFJlbmRlcmVy
VmFyaWFudC5jCkBAIC0wLDAgKzEsMzQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEln
YWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJCcm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFu
dC5oIgorI2luY2x1ZGUgIkJyb3dzZXJNYXJzaGFsLmgiCisjaW5jbHVkZSA8ZXJybm8uaD4KKwor
ZW51bSB7CisgICAgUFJPUF8wLAorCisgICAgUFJPUF9WQUxVRSwKKyAgICBQUk9QX0FESlVTVE1F
TlQKK307CisKK2VudW0geworICAgIENIQU5HRUQsCisKKyAgICBMQVNUX1NJR05BTAorfTsKKwor
c3RydWN0IF9Ccm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudCB7CisgICAgR3RrQ2VsbFJlbmRlcmVy
IHBhcmVudDsKKworICAgIEdWYWx1ZSAqdmFsdWU7CisKKyAgICBHdGtDZWxsUmVuZGVyZXIgKnRl
eHRSZW5kZXJlcjsKKyAgICBHdGtDZWxsUmVuZGVyZXIgKnRvZ2dsZVJlbmRlcmVyOworICAgIEd0
a0NlbGxSZW5kZXJlciAqc3BpblJlbmRlcmVyOworfTsKKworc3RydWN0IF9Ccm93c2VyQ2VsbFJl
bmRlcmVyVmFyaWFudENsYXNzIHsKKyAgICBHdGtDZWxsUmVuZGVyZXJDbGFzcyBwYXJlbnQ7Cit9
OworCitzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAgfTsKKworR19ERUZJ
TkVfVFlQRShCcm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudCwgYnJvd3Nlcl9jZWxsX3JlbmRlcmVy
X3ZhcmlhbnQsIEdUS19UWVBFX0NFTExfUkVOREVSRVIpCisKK3N0YXRpYyB2b2lkIGJyb3dzZXJD
ZWxsUmVuZGVyZXJWYXJpYW50RmluYWxpemUoR09iamVjdCAqb2JqZWN0KQoreworICAgIEJyb3dz
ZXJDZWxsUmVuZGVyZXJWYXJpYW50ICpyZW5kZXJlciA9IEJST1dTRVJfQ0VMTF9SRU5ERVJFUl9W
QVJJQU5UKG9iamVjdCk7CisKKyAgICBnX29iamVjdF91bnJlZihyZW5kZXJlci0+dG9nZ2xlUmVu
ZGVyZXIpOworICAgIGlmIChyZW5kZXJlci0+dmFsdWUpCisgICAgICAgIGdfYm94ZWRfZnJlZShH
X1RZUEVfVkFMVUUsIHJlbmRlcmVyLT52YWx1ZSk7CisKKyAgICBHX09CSkVDVF9DTEFTUyhicm93
c2VyX2NlbGxfcmVuZGVyZXJfdmFyaWFudF9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3Qp
OworfQorCitzdGF0aWMgdm9pZCBicm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudEdldFByb3BlcnR5
KEdPYmplY3QgKm9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUgKnZhbHVlLCBHUGFyYW1TcGVj
ICpwc3BlYykKK3sKKyAgICBCcm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudCAqcmVuZGVyZXIgPSBC
Uk9XU0VSX0NFTExfUkVOREVSRVJfVkFSSUFOVChvYmplY3QpOworCisgICAgc3dpdGNoIChwcm9w
SWQpIHsKKyAgICBjYXNlIFBST1BfVkFMVUU6CisgICAgICAgIGdfdmFsdWVfc2V0X2JveGVkKHZh
bHVlLCByZW5kZXJlci0+dmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQURK
VVNUTUVOVDogeworICAgICAgICBHdGtBZGp1c3RtZW50ICphZGp1c3RtZW50ID0gTlVMTDsKKyAg
ICAgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKHJlbmRlcmVyLT5zcGluUmVuZGVyZXIpLCAiYWRq
dXN0bWVudCIsICZhZGp1c3RtZW50LCBOVUxMKTsKKyAgICAgICAgaWYgKGFkanVzdG1lbnQpIHsK
KyAgICAgICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgYWRqdXN0bWVudCk7CisgICAg
ICAgICAgICBnX29iamVjdF91bnJlZihhZGp1c3RtZW50KTsKKyAgICAgICAgfQorICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElE
X1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwc3BlYyk7CisgICAgfQorfQorCitzdGF0aWMg
dm9pZCBicm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudFNldE1vZGVGb3JWYWx1ZShCcm93c2VyQ2Vs
bFJlbmRlcmVyVmFyaWFudCAqcmVuZGVyZXIpCit7CisgICAgaWYgKCFyZW5kZXJlci0+dmFsdWUp
CisgICAgICAgIHJldHVybjsKKworICAgIEd0a0NlbGxSZW5kZXJlck1vZGUgbW9kZTsKKyAgICBp
ZiAoR19WQUxVRV9IT0xEU19CT09MRUFOKHJlbmRlcmVyLT52YWx1ZSkpCisgICAgICAgIG1vZGUg
PSBHVEtfQ0VMTF9SRU5ERVJFUl9NT0RFX0FDVElWQVRBQkxFOworICAgIGVsc2UgaWYgKEdfVkFM
VUVfSE9MRFNfU1RSSU5HKHJlbmRlcmVyLT52YWx1ZSkgfHwgR19WQUxVRV9IT0xEU19VSU5UKHJl
bmRlcmVyLT52YWx1ZSkpCisgICAgICAgIG1vZGUgPSBHVEtfQ0VMTF9SRU5ERVJFUl9NT0RFX0VE
SVRBQkxFOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuOworCisgICAgZ19vYmplY3Rfc2V0KEdf
T0JKRUNUKHJlbmRlcmVyKSwgIm1vZGUiLCBtb2RlLCBOVUxMKTsKK30KKworc3RhdGljIHZvaWQg
YnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRTZXRQcm9wZXJ0eShHT2JqZWN0ICpvYmplY3QsIGd1
aW50IHByb3BJZCwgY29uc3QgR1ZhbHVlICp2YWx1ZSwgR1BhcmFtU3BlYyAqcHNwZWMpCit7Cisg
ICAgQnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnQgKnJlbmRlcmVyID0gQlJPV1NFUl9DRUxMX1JF
TkRFUkVSX1ZBUklBTlQob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElkKSB7CisgICAgY2Fz
ZSBQUk9QX1ZBTFVFOgorICAgICAgICBpZiAocmVuZGVyZXItPnZhbHVlKQorICAgICAgICAgICAg
Z19ib3hlZF9mcmVlKEdfVFlQRV9WQUxVRSwgcmVuZGVyZXItPnZhbHVlKTsKKyAgICAgICAgcmVu
ZGVyZXItPnZhbHVlID0gZ192YWx1ZV9kdXBfYm94ZWQodmFsdWUpOworICAgICAgICBicm93c2Vy
Q2VsbFJlbmRlcmVyVmFyaWFudFNldE1vZGVGb3JWYWx1ZShyZW5kZXJlcik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgUFJPUF9BREpVU1RNRU5UOgorICAgICAgICBnX29iamVjdF9zZXQoR19P
QkpFQ1QocmVuZGVyZXItPnNwaW5SZW5kZXJlciksICJhZGp1c3RtZW50IiwgZ192YWx1ZV9nZXRf
b2JqZWN0KHZhbHVlKSwgTlVMTCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcHNw
ZWMpOworICAgIH0KK30KKworc3RhdGljIEd0a0NlbGxSZW5kZXJlciAqYnJvd3NlckNlbGxSZW5k
ZXJlclZhcmlhbnRHZXRSZW5kZXJlckZvclZhbHVlKEJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50
ICpyZW5kZXJlcikKK3sKKyAgICBpZiAoIXJlbmRlcmVyLT52YWx1ZSkKKyAgICAgICAgcmV0dXJu
IE5VTEw7CisKKyAgICBpZiAoR19WQUxVRV9IT0xEU19CT09MRUFOKHJlbmRlcmVyLT52YWx1ZSkp
IHsKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHJlbmRlcmVyLT50b2dnbGVSZW5kZXJl
ciksCisgICAgICAgICAgICAgICAgICAgICAiYWN0aXZlIiwgZ192YWx1ZV9nZXRfYm9vbGVhbihy
ZW5kZXJlci0+dmFsdWUpLAorICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgIHJl
dHVybiByZW5kZXJlci0+dG9nZ2xlUmVuZGVyZXI7CisgICAgfQorCisgICAgaWYgKEdfVkFMVUVf
SE9MRFNfU1RSSU5HKHJlbmRlcmVyLT52YWx1ZSkpIHsKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdf
T0JKRUNUKHJlbmRlcmVyLT50ZXh0UmVuZGVyZXIpLAorICAgICAgICAgICAgICAgICAgICAgInRl
eHQiLCBnX3ZhbHVlX2dldF9zdHJpbmcocmVuZGVyZXItPnZhbHVlKSwKKyAgICAgICAgICAgICAg
ICAgICAgIE5VTEwpOworICAgICAgICByZXR1cm4gcmVuZGVyZXItPnRleHRSZW5kZXJlcjsKKyAg
ICB9CisKKyAgICBpZiAoR19WQUxVRV9IT0xEU19VSU5UKHJlbmRlcmVyLT52YWx1ZSkpIHsKKyAg
ICAgICAgZ2NoYXIgKnRleHQgPSBnX3N0cmR1cF9wcmludGYoIiV1IiwgZ192YWx1ZV9nZXRfdWlu
dChyZW5kZXJlci0+dmFsdWUpKTsKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHJlbmRl
cmVyLT5zcGluUmVuZGVyZXIpLCAidGV4dCIsIHRleHQsIE5VTEwpOworICAgICAgICBnX2ZyZWUo
dGV4dCk7CisgICAgICAgIHJldHVybiByZW5kZXJlci0+c3BpblJlbmRlcmVyOworICAgIH0KKwor
ICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgdm9pZCBicm93c2VyQ2VsbFJlbmRlcmVyVmFy
aWFudENlbGxSZW5kZXJlclRleHRFZGl0ZWQoQnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnQgKnJl
bmRlcmVyLCBjb25zdCBnY2hhciAqcGF0aCwgY29uc3QgZ2NoYXIgKm5ld1RleHQpCit7CisgICAg
aWYgKCFyZW5kZXJlci0+dmFsdWUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghR19WQUxV
RV9IT0xEU19TVFJJTkcocmVuZGVyZXItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Z192YWx1ZV9zZXRfc3RyaW5nKHJlbmRlcmVyLT52YWx1ZSwgbmV3VGV4dCk7CisgICAgZ19zaWdu
YWxfZW1pdChyZW5kZXJlciwgc2lnbmFsc1tDSEFOR0VEXSwgMCwgcGF0aCwgcmVuZGVyZXItPnZh
bHVlKTsKK30KKworc3RhdGljIHZvaWQgYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVu
ZGVyZXJTcGluRWRpdGVkKEJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50ICpyZW5kZXJlciwgY29u
c3QgZ2NoYXIgKnBhdGgsIGNvbnN0IGdjaGFyICpuZXdUZXh0KQoreworICAgIGlmICghcmVuZGVy
ZXItPnZhbHVlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIUdfVkFMVUVfSE9MRFNfVUlO
VChyZW5kZXJlci0+dmFsdWUpKQorICAgICAgICByZXR1cm47CisKKyAgICBHdGtBZGp1c3RtZW50
ICphZGp1c3RtZW50OworICAgIGdfb2JqZWN0X2dldChHX09CSkVDVChyZW5kZXJlci0+c3BpblJl
bmRlcmVyKSwgImFkanVzdG1lbnQiLCAmYWRqdXN0bWVudCwgTlVMTCk7CisgICAgaWYgKCFhZGp1
c3RtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBlcnJubyA9IDA7CisgICAgZ2NoYXIgKmVu
ZFB0cjsKKyAgICBnZG91YmxlIHZhbHVlID0gZ19zdHJ0b2QobmV3VGV4dCwgJmVuZFB0cik7Cisg
ICAgaWYgKGVycm5vIHx8IHZhbHVlID4gZ3RrX2FkanVzdG1lbnRfZ2V0X3VwcGVyKGFkanVzdG1l
bnQpIHx8IHZhbHVlIDwgZ3RrX2FkanVzdG1lbnRfZ2V0X2xvd2VyKGFkanVzdG1lbnQpIHx8IGVu
ZFB0ciA9PSBuZXdUZXh0KQorICAgICAgICByZXR1cm47CisKKyAgICBnX3ZhbHVlX3NldF91aW50
KHJlbmRlcmVyLT52YWx1ZSwgKGd1aW50KXZhbHVlKTsKKyAgICBnX3NpZ25hbF9lbWl0KHJlbmRl
cmVyLCBzaWduYWxzW0NIQU5HRURdLCAwLCBwYXRoLCByZW5kZXJlci0+dmFsdWUpOworfQorCitz
dGF0aWMgZ2ludCBicm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudENlbGxSZW5kZXJlckFjdGl2YXRl
KEd0a0NlbGxSZW5kZXJlciAqY2VsbCwgR2RrRXZlbnQgKmV2ZW50LCBHdGtXaWRnZXQgKndpZGdl
dCwgY29uc3QgZ2NoYXIgKnBhdGgsIGNvbnN0IEdka1JlY3RhbmdsZSAqYmdBcmVhLCBjb25zdCBH
ZGtSZWN0YW5nbGUgKmNlbGxBcmVhLCBHdGtDZWxsUmVuZGVyZXJTdGF0ZSBmbGFncykKK3sKKyAg
ICBCcm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudCAqcmVuZGVyZXIgPSBCUk9XU0VSX0NFTExfUkVO
REVSRVJfVkFSSUFOVChjZWxsKTsKKworICAgIGlmICghcmVuZGVyZXItPnZhbHVlKQorICAgICAg
ICByZXR1cm4gVFJVRTsKKworICAgIGlmICghR19WQUxVRV9IT0xEU19CT09MRUFOKHJlbmRlcmVy
LT52YWx1ZSkpCisgICAgICAgIHJldHVybiBUUlVFOworCisgICAgZ192YWx1ZV9zZXRfYm9vbGVh
bihyZW5kZXJlci0+dmFsdWUsICFnX3ZhbHVlX2dldF9ib29sZWFuKHJlbmRlcmVyLT52YWx1ZSkp
OworICAgIGdfc2lnbmFsX2VtaXQocmVuZGVyZXIsIHNpZ25hbHNbQ0hBTkdFRF0sIDAsIHBhdGgs
IHJlbmRlcmVyLT52YWx1ZSk7CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZvaWQg
YnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVuZGVyZXJSZW5kZXIoR3RrQ2VsbFJlbmRl
cmVyICpjZWxsLCBjYWlyb190ICpjciwgR3RrV2lkZ2V0ICp3aWRnZXQsIGNvbnN0IEdka1JlY3Rh
bmdsZSAqYmdBcmVhLCBjb25zdCBHZGtSZWN0YW5nbGUgKmNlbGxBcmVhLCBHdGtDZWxsUmVuZGVy
ZXJTdGF0ZSBmbGFncykKK3sKKyAgICBHdGtDZWxsUmVuZGVyZXIgKnJlbmRlcmVyID0gYnJvd3Nl
ckNlbGxSZW5kZXJlclZhcmlhbnRHZXRSZW5kZXJlckZvclZhbHVlKEJST1dTRVJfQ0VMTF9SRU5E
RVJFUl9WQVJJQU5UKGNlbGwpKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm47
CisKKyAgICBHVEtfQ0VMTF9SRU5ERVJFUl9HRVRfQ0xBU1MocmVuZGVyZXIpLT5yZW5kZXIocmVu
ZGVyZXIsIGNyLCB3aWRnZXQsIGJnQXJlYSwgY2VsbEFyZWEsIGZsYWdzKTsKK30KKworc3RhdGlj
IEd0a0NlbGxFZGl0YWJsZSAqYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVuZGVyZXJT
dGFydEVkaXRpbmcoR3RrQ2VsbFJlbmRlcmVyICpjZWxsLCBHZGtFdmVudCAqZXZlbnQsIEd0a1dp
ZGdldCAqd2lkZ2V0LCBjb25zdCBnY2hhciAqcGF0aCwgY29uc3QgR2RrUmVjdGFuZ2xlICpiZ0Fy
ZWEsIGNvbnN0IEdka1JlY3RhbmdsZSAqY2VsbEFyZWEsIEd0a0NlbGxSZW5kZXJlclN0YXRlIGZs
YWdzKQoreworICAgIEd0a0NlbGxSZW5kZXJlciAqcmVuZGVyZXIgPSBicm93c2VyQ2VsbFJlbmRl
cmVyVmFyaWFudEdldFJlbmRlcmVyRm9yVmFsdWUoQlJPV1NFUl9DRUxMX1JFTkRFUkVSX1ZBUklB
TlQoY2VsbCkpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiBOVUxMOworCisg
ICAgaWYgKCFHVEtfQ0VMTF9SRU5ERVJFUl9HRVRfQ0xBU1MocmVuZGVyZXIpLT5zdGFydF9lZGl0
aW5nKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBHVEtfQ0VMTF9SRU5ERVJF
Ul9HRVRfQ0xBU1MocmVuZGVyZXIpLT5zdGFydF9lZGl0aW5nKHJlbmRlcmVyLCBldmVudCwgd2lk
Z2V0LCBwYXRoLCBiZ0FyZWEsIGNlbGxBcmVhLCBmbGFncyk7Cit9CisKK3N0YXRpYyB2b2lkIGJy
b3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Q2VsbFJlbmRlcmVyR2V0UHJlZmVycmVkV2lkdGgoR3Rr
Q2VsbFJlbmRlcmVyICpjZWxsLCBHdGtXaWRnZXQgKndpZGdldCwgZ2ludCAqbWluaW11bVdpZHRo
LCBnaW50ICpuYXR1cmFsV2lkdGgpCit7CisgICAgR3RrQ2VsbFJlbmRlcmVyICpyZW5kZXJlciA9
IGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50R2V0UmVuZGVyZXJGb3JWYWx1ZShCUk9XU0VSX0NF
TExfUkVOREVSRVJfVkFSSUFOVChjZWxsKSk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgR1RLX0NFTExfUkVOREVSRVJfR0VUX0NMQVNTKHJlbmRlcmVyKS0+Z2V0
X3ByZWZlcnJlZF93aWR0aChyZW5kZXJlciwgd2lkZ2V0LCBtaW5pbXVtV2lkdGgsIG5hdHVyYWxX
aWR0aCk7Cit9CisKK3N0YXRpYyB2b2lkIGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Q2VsbFJl
bmRlcmVyR2V0UHJlZmVycmVkSGVpZ2h0KEd0a0NlbGxSZW5kZXJlciAqY2VsbCwgR3RrV2lkZ2V0
ICp3aWRnZXQsIGdpbnQgKm1pbmltdW1IZWlnaHQsIGdpbnQgKm5hdHVyYWxIZWlnaHQpCit7Cisg
ICAgR3RrQ2VsbFJlbmRlcmVyICpyZW5kZXJlciA9IGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50
R2V0UmVuZGVyZXJGb3JWYWx1ZShCUk9XU0VSX0NFTExfUkVOREVSRVJfVkFSSUFOVChjZWxsKSk7
CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgR1RLX0NFTExfUkVO
REVSRVJfR0VUX0NMQVNTKHJlbmRlcmVyKS0+Z2V0X3ByZWZlcnJlZF9oZWlnaHQocmVuZGVyZXIs
IHdpZGdldCwgbWluaW11bUhlaWdodCwgbmF0dXJhbEhlaWdodCk7Cit9CisKK3N0YXRpYyB2b2lk
IGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Q2VsbFJlbmRlcmVyR2V0UHJlZmVycmVkV2lkdGhG
b3JIZWlnaHQoR3RrQ2VsbFJlbmRlcmVyICpjZWxsLCBHdGtXaWRnZXQgKndpZGdldCwgZ2ludCBo
ZWlnaHQsIGdpbnQgKm1pbmltdW1XaWR0aCwgZ2ludCAqbmF0dXJhbFdpZHRoKQoreworICAgIEd0
a0NlbGxSZW5kZXJlciAqcmVuZGVyZXIgPSBicm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudEdldFJl
bmRlcmVyRm9yVmFsdWUoQlJPV1NFUl9DRUxMX1JFTkRFUkVSX1ZBUklBTlQoY2VsbCkpOworICAg
IGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybjsKKworICAgIEdUS19DRUxMX1JFTkRFUkVS
X0dFVF9DTEFTUyhyZW5kZXJlciktPmdldF9wcmVmZXJyZWRfd2lkdGhfZm9yX2hlaWdodChyZW5k
ZXJlciwgd2lkZ2V0LCBoZWlnaHQsIG1pbmltdW1XaWR0aCwgbmF0dXJhbFdpZHRoKTsKK30KKwor
c3RhdGljIHZvaWQgYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVuZGVyZXJHZXRQcmVm
ZXJyZWRIZWlnaHRGb3JXaWR0aChHdGtDZWxsUmVuZGVyZXIgKmNlbGwsIEd0a1dpZGdldCAqd2lk
Z2V0LCBnaW50IHdpZHRoLCBnaW50ICptaW5pbXVtSGVpZ2h0LCBnaW50ICpuYXR1cmFsSGVpZ2h0
KQoreworICAgIEd0a0NlbGxSZW5kZXJlciAqcmVuZGVyZXIgPSBicm93c2VyQ2VsbFJlbmRlcmVy
VmFyaWFudEdldFJlbmRlcmVyRm9yVmFsdWUoQlJPV1NFUl9DRUxMX1JFTkRFUkVSX1ZBUklBTlQo
Y2VsbCkpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybjsKKworICAgIEdUS19D
RUxMX1JFTkRFUkVSX0dFVF9DTEFTUyhyZW5kZXJlciktPmdldF9wcmVmZXJyZWRfaGVpZ2h0X2Zv
cl93aWR0aChyZW5kZXJlciwgd2lkZ2V0LCB3aWR0aCwgbWluaW11bUhlaWdodCwgbmF0dXJhbEhl
aWdodCk7Cit9CisKK3N0YXRpYyB2b2lkIGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Q2VsbFJl
bmRlcmVyR2V0QWxpZ25lZEFyZWEoR3RrQ2VsbFJlbmRlcmVyICpjZWxsLCBHdGtXaWRnZXQgKndp
ZGdldCwgR3RrQ2VsbFJlbmRlcmVyU3RhdGUgZmxhZ3MsIGNvbnN0IEdka1JlY3RhbmdsZSAqY2Vs
bEFyZWEsIEdka1JlY3RhbmdsZSAqYWxpZ25lZEFyZWEpCit7CisgICAgR3RrQ2VsbFJlbmRlcmVy
ICpyZW5kZXJlciA9IGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50R2V0UmVuZGVyZXJGb3JWYWx1
ZShCUk9XU0VSX0NFTExfUkVOREVSRVJfVkFSSUFOVChjZWxsKSk7CisgICAgaWYgKCFyZW5kZXJl
cikKKyAgICAgICAgcmV0dXJuOworCisgICAgR1RLX0NFTExfUkVOREVSRVJfR0VUX0NMQVNTKHJl
bmRlcmVyKS0+Z2V0X2FsaWduZWRfYXJlYShyZW5kZXJlciwgd2lkZ2V0LCBmbGFncywgY2VsbEFy
ZWEsIGFsaWduZWRBcmVhKTsKK30KKworc3RhdGljIHZvaWQgYnJvd3Nlcl9jZWxsX3JlbmRlcmVy
X3ZhcmlhbnRfaW5pdChCcm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudCAqcmVuZGVyZXIpCit7Cisg
ICAgZ19vYmplY3Rfc2V0KHJlbmRlcmVyLCAibW9kZSIsIEdUS19DRUxMX1JFTkRFUkVSX01PREVf
QUNUSVZBVEFCTEUsIE5VTEwpOworCisgICAgcmVuZGVyZXItPnRvZ2dsZVJlbmRlcmVyID0gZ3Rr
X2NlbGxfcmVuZGVyZXJfdG9nZ2xlX25ldygpOworICAgIGdfb2JqZWN0X3NldChHX09CSkVDVChy
ZW5kZXJlci0+dG9nZ2xlUmVuZGVyZXIpLCAieGFsaWduIiwgMC4wLCBOVUxMKTsKKyAgICBnX29i
amVjdF9yZWZfc2luayhyZW5kZXJlci0+dG9nZ2xlUmVuZGVyZXIpOworCisgICAgcmVuZGVyZXIt
PnRleHRSZW5kZXJlciA9IGd0a19jZWxsX3JlbmRlcmVyX3RleHRfbmV3KCk7CisgICAgZ19zaWdu
YWxfY29ubmVjdF9zd2FwcGVkKHJlbmRlcmVyLT50ZXh0UmVuZGVyZXIsICJlZGl0ZWQiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLKGJyb3dzZXJDZWxsUmVuZGVyZXJW
YXJpYW50Q2VsbFJlbmRlcmVyVGV4dEVkaXRlZCksIHJlbmRlcmVyKTsKKyAgICBnX29iamVjdF9z
ZXQoR19PQkpFQ1QocmVuZGVyZXItPnRleHRSZW5kZXJlciksICJlZGl0YWJsZSIsIFRSVUUsIE5V
TEwpOworICAgIGdfb2JqZWN0X3JlZl9zaW5rKHJlbmRlcmVyLT50ZXh0UmVuZGVyZXIpOworCisg
ICAgcmVuZGVyZXItPnNwaW5SZW5kZXJlciA9IGd0a19jZWxsX3JlbmRlcmVyX3NwaW5fbmV3KCk7
CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHJlbmRlcmVyLT5zcGluUmVuZGVyZXIsICJl
ZGl0ZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLKGJyb3dzZXJD
ZWxsUmVuZGVyZXJWYXJpYW50Q2VsbFJlbmRlcmVyU3BpbkVkaXRlZCksIHJlbmRlcmVyKTsKKyAg
ICBnX29iamVjdF9zZXQoR19PQkpFQ1QocmVuZGVyZXItPnNwaW5SZW5kZXJlciksICJlZGl0YWJs
ZSIsIFRSVUUsIE5VTEwpOworfQorCitzdGF0aWMgdm9pZCBicm93c2VyX2NlbGxfcmVuZGVyZXJf
dmFyaWFudF9jbGFzc19pbml0KEJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Q2xhc3MgKmtsYXNz
KQoreworICAgIEdPYmplY3RDbGFzcyAqZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xh
c3MpOworICAgIEd0a0NlbGxSZW5kZXJlckNsYXNzICpjZWxsUmVuZGVyZXJDbGFzcyA9IEdUS19D
RUxMX1JFTkRFUkVSX0NMQVNTKGtsYXNzKTsKKworICAgIGdvYmplY3RDbGFzcy0+Z2V0X3Byb3Bl
cnR5ID0gYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRHZXRQcm9wZXJ0eTsKKyAgICBnb2JqZWN0
Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50U2V0UHJvcGVy
dHk7CisgICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9IGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJp
YW50RmluYWxpemU7CisKKyAgICBjZWxsUmVuZGVyZXJDbGFzcy0+YWN0aXZhdGUgPSBicm93c2Vy
Q2VsbFJlbmRlcmVyVmFyaWFudENlbGxSZW5kZXJlckFjdGl2YXRlOworICAgIGNlbGxSZW5kZXJl
ckNsYXNzLT5yZW5kZXIgPSBicm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudENlbGxSZW5kZXJlclJl
bmRlcjsKKyAgICBjZWxsUmVuZGVyZXJDbGFzcy0+c3RhcnRfZWRpdGluZyA9IGJyb3dzZXJDZWxs
UmVuZGVyZXJWYXJpYW50Q2VsbFJlbmRlcmVyU3RhcnRFZGl0aW5nOworICAgIGNlbGxSZW5kZXJl
ckNsYXNzLT5nZXRfcHJlZmVycmVkX3dpZHRoID0gYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRD
ZWxsUmVuZGVyZXJHZXRQcmVmZXJyZWRXaWR0aDsKKyAgICBjZWxsUmVuZGVyZXJDbGFzcy0+Z2V0
X3ByZWZlcnJlZF9oZWlnaHQgPSBicm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudENlbGxSZW5kZXJl
ckdldFByZWZlcnJlZEhlaWdodDsKKyAgICBjZWxsUmVuZGVyZXJDbGFzcy0+Z2V0X3ByZWZlcnJl
ZF93aWR0aF9mb3JfaGVpZ2h0ID0gYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVuZGVy
ZXJHZXRQcmVmZXJyZWRXaWR0aEZvckhlaWdodDsKKyAgICBjZWxsUmVuZGVyZXJDbGFzcy0+Z2V0
X3ByZWZlcnJlZF9oZWlnaHRfZm9yX3dpZHRoID0gYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRD
ZWxsUmVuZGVyZXJHZXRQcmVmZXJyZWRIZWlnaHRGb3JXaWR0aDsKKyAgICBjZWxsUmVuZGVyZXJD
bGFzcy0+Z2V0X2FsaWduZWRfYXJlYSA9IGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Q2VsbFJl
bmRlcmVyR2V0QWxpZ25lZEFyZWE7CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3Bl
cnR5KGdvYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBS
T1BfVkFMVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3Nw
ZWNfYm94ZWQoInZhbHVlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiVmFsdWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgY2VsbCByZW5kZXJlciB2YWx1ZSIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBF
X1ZBTFVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFKSk7CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eShnb2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQUk9QX0FESlVTVE1FTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
X3BhcmFtX3NwZWNfb2JqZWN0KCJhZGp1c3RtZW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFkanVzdG1lbnQiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGFkanVz
dG1lbnQgdGhhdCBob2xkcyB0aGUgdmFsdWUgb2YgdGhlIHNwaW4gYnV0dG9uIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1RZUEVf
QURKVVNUTUVOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUpKTsKKworICAgIHNpZ25hbHNbQ0hBTkdFRF0g
PQorICAgICAgICBnX3NpZ25hbF9uZXcoImNoYW5nZWQiLAorICAgICAgICAgICAgICAgICAgICAg
R19UWVBFX0ZST01fQ0xBU1MoZ29iamVjdENsYXNzKSwKKyAgICAgICAgICAgICAgICAgICAgIEdf
U0lHTkFMX1JVTl9MQVNULAorICAgICAgICAgICAgICAgICAgICAgMCwgTlVMTCwgTlVMTCwKKyAg
ICAgICAgICAgICAgICAgICAgIGJyb3dzZXJfbWFyc2hhbF9WT0lEX19TVFJJTkdfQk9YRUQsCisg
ICAgICAgICAgICAgICAgICAgICBHX1RZUEVfTk9ORSwgMiwKKyAgICAgICAgICAgICAgICAgICAg
IEdfVFlQRV9TVFJJTkcsIEdfVFlQRV9WQUxVRSk7Cit9CisKK0d0a0NlbGxSZW5kZXJlciAqYnJv
d3Nlcl9jZWxsX3JlbmRlcmVyX3ZhcmlhbnRfbmV3KHZvaWQpCit7CisgICAgcmV0dXJuIEdUS19D
RUxMX1JFTkRFUkVSKGdfb2JqZWN0X25ldyhCUk9XU0VSX1RZUEVfQ0VMTF9SRU5ERVJFUl9WQVJJ
QU5ULCBOVUxMKSk7Cit9CisKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93
c2VyQ2VsbFJlbmRlcmVyVmFyaWFudC5oIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJD
ZWxsUmVuZGVyZXJWYXJpYW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
NGZjZTNiYgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2Vy
Q2VsbFJlbmRlcmVyVmFyaWFudC5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBCcm93c2VyQ2VsbFJlbmRl
cmVyVmFyaWFudF9oCisjZGVmaW5lIEJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50X2gKKworI2lu
Y2x1ZGUgPGd0ay9ndGsuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIEJST1dTRVJfVFlQ
RV9DRUxMX1JFTkRFUkVSX1ZBUklBTlQgICAgICAgICAgICAoYnJvd3Nlcl9jZWxsX3JlbmRlcmVy
X3ZhcmlhbnRfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgQlJPV1NFUl9DRUxMX1JFTkRFUkVSX1ZBUklB
TlQob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgQlJP
V1NFUl9UWVBFX0NFTExfUkVOREVSRVJfVkFSSUFOVCwgQnJvd3NlckNlbGxSZW5kZXJlclZhcmlh
bnQpKQorI2RlZmluZSBCUk9XU0VSX0NFTExfUkVOREVSRVJfVkFSSUFOVF9DTEFTUyhrbGFzcykg
ICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBCUk9XU0VSX1RZUEVfQ0VMTF9S
RU5ERVJFUl9WQVJJQU5ULCBCcm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudENsYXNzKSkKKyNkZWZp
bmUgQlJPV1NFUl9JU19DRUxMX1JFTkRFUkVSX1ZBUklBTlQob2JqKSAgICAgICAgIChHX1RZUEVf
Q0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgQlJPV1NFUl9UWVBFX0NFTExfUkVOREVSRVJfVkFS
SUFOVCkpCisjZGVmaW5lIEJST1dTRVJfSVNfQ0VMTF9SRU5ERVJFUl9WQVJJQU5UX0NMQVNTKGts
YXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIEJST1dTRVJfVFlQRV9DRUxM
X1JFTkRFUkVSX1ZBUklBTlQpKQorI2RlZmluZSBCUk9XU0VSX0NFTExfUkVOREVSRVJfVkFSSUFO
VF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBCUk9X
U0VSX1RZUEVfQ0VMTF9SRU5ERVJFUl9WQVJJQU5ULCBCcm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFu
dENsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX0Jyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50ICAg
ICAgICBCcm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudDsKK3R5cGVkZWYgc3RydWN0IF9Ccm93c2Vy
Q2VsbFJlbmRlcmVyVmFyaWFudENsYXNzICAgQnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRDbGFz
czsKKworR1R5cGUgYnJvd3Nlcl9jZWxsX3JlbmRlcmVyX3ZhcmlhbnRfZ2V0X3R5cGUodm9pZCk7
CisKK0d0a0NlbGxSZW5kZXJlciogYnJvd3Nlcl9jZWxsX3JlbmRlcmVyX3ZhcmlhbnRfbmV3KHZv
aWQpOworCitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93
c2VyL2d0ay9Ccm93c2VyU2V0dGluZ3NEaWFsb2cuYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9C
cm93c2VyU2V0dGluZ3NEaWFsb2cuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5mN2I1MzUxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dz
ZXJTZXR0aW5nc0RpYWxvZy5jCkBAIC0wLDAgKzEsMTg3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJCcm93c2VyU2V0dGluZ3NE
aWFsb2cuaCIKKyNpbmNsdWRlICJCcm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudC5oIgorCitlbnVt
IHsKKyAgICBQUk9QXzAsCisKKyAgICBQUk9QX1NFVFRJTkdTCit9OworCitlbnVtIHsKKyAgICBT
RVRUSU5HU19MSVNUX0NPTFVNTl9OQU1FLAorICAgIFNFVFRJTkdTX0xJU1RfQ09MVU1OX05JQ0ss
CisgICAgU0VUVElOR1NfTElTVF9DT0xVTU5fQkxVUkIsCisgICAgU0VUVElOR1NfTElTVF9DT0xV
TU5fVkFMVUUsCisgICAgU0VUVElOR1NfTElTVF9DT0xVTU5fQURKVVNUTUVOVCwKKworICAgIFNF
VFRJTkdTX0xJU1RfTl9DT0xVTU5TCit9OworCitzdHJ1Y3QgX0Jyb3dzZXJTZXR0aW5nc0RpYWxv
ZyB7CisgICAgR3RrRGlhbG9nIHBhcmVudDsKKworICAgIEd0a1dpZGdldCAqc2V0dGluZ3NMaXN0
OworICAgIFdlYktpdFNldHRpbmdzICpzZXR0aW5nczsKK307CisKK3N0cnVjdCBfQnJvd3NlclNl
dHRpbmdzRGlhbG9nQ2xhc3MgeworICAgIEd0a0RpYWxvZ0NsYXNzIHBhcmVudDsKK307CisKK0df
REVGSU5FX1RZUEUoQnJvd3NlclNldHRpbmdzRGlhbG9nLCBicm93c2VyX3NldHRpbmdzX2RpYWxv
ZywgR1RLX1RZUEVfRElBTE9HKQorCitzdGF0aWMgdm9pZCBjZWxsUmVuZGVyZXJDaGFuZ2VkKEd0
a0NlbGxSZW5kZXJlciAqcmVuZGVyZXIsIGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IEdWYWx1ZSAq
dmFsdWUsIEJyb3dzZXJTZXR0aW5nc0RpYWxvZyAqZGlhbG9nKQoreworICAgIEd0a1RyZWVNb2Rl
bCAqbW9kZWwgPSBndGtfdHJlZV92aWV3X2dldF9tb2RlbChHVEtfVFJFRV9WSUVXKGRpYWxvZy0+
c2V0dGluZ3NMaXN0KSk7CisgICAgR3RrVHJlZVBhdGggKnRyZWVQYXRoID0gZ3RrX3RyZWVfcGF0
aF9uZXdfZnJvbV9zdHJpbmcocGF0aCk7CisgICAgR3RrVHJlZUl0ZXIgaXRlcjsKKyAgICBndGtf
dHJlZV9tb2RlbF9nZXRfaXRlcihtb2RlbCwgJml0ZXIsIHRyZWVQYXRoKTsKKworICAgIGNoYXIg
Km5hbWU7CisgICAgZ3RrX3RyZWVfbW9kZWxfZ2V0KG1vZGVsLCAmaXRlciwgU0VUVElOR1NfTElT
VF9DT0xVTU5fTkFNRSwgJm5hbWUsIC0xKTsKKyAgICBnX29iamVjdF9zZXRfcHJvcGVydHkoR19P
QkpFQ1QoZGlhbG9nLT5zZXR0aW5ncyksIG5hbWUsIHZhbHVlKTsKKyAgICBnX2ZyZWUobmFtZSk7
CisKKyAgICBndGtfbGlzdF9zdG9yZV9zZXQoR1RLX0xJU1RfU1RPUkUobW9kZWwpLCAmaXRlciwg
U0VUVElOR1NfTElTVF9DT0xVTU5fVkFMVUUsIHZhbHVlLCAtMSk7CisgICAgZ3RrX3RyZWVfcGF0
aF9mcmVlKHRyZWVQYXRoKTsKK30KKworc3RhdGljIHZvaWQgYnJvd3NlclNldHRpbmdzRGlhbG9n
U2V0UHJvcGVydHkoR09iamVjdCAqb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZSAq
dmFsdWUsIEdQYXJhbVNwZWMgKnBzcGVjKQoreworICAgIEJyb3dzZXJTZXR0aW5nc0RpYWxvZyAq
ZGlhbG9nID0gQlJPV1NFUl9TRVRUSU5HU19ESUFMT0cob2JqZWN0KTsKKworICAgIHN3aXRjaCAo
cHJvcElkKSB7CisgICAgY2FzZSBQUk9QX1NFVFRJTkdTOgorICAgICAgICBkaWFsb2ctPnNldHRp
bmdzID0gZ192YWx1ZV9nZXRfb2JqZWN0KHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwg
cHJvcElkLCBwc3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBicm93c2VyX3NldHRpbmdz
X2RpYWxvZ19pbml0KEJyb3dzZXJTZXR0aW5nc0RpYWxvZyAqZGlhbG9nKQoreworICAgIEd0a0Jv
eCAqY29udGVudEFyZWEgPSBHVEtfQk9YKGd0a19kaWFsb2dfZ2V0X2NvbnRlbnRfYXJlYShHVEtf
RElBTE9HKGRpYWxvZykpKTsKKyAgICBndGtfYm94X3NldF9zcGFjaW5nKGNvbnRlbnRBcmVhLCAy
KTsKKworICAgIGd0a193aW5kb3dfc2V0X2RlZmF1bHRfc2l6ZShHVEtfV0lORE9XKGRpYWxvZyks
IDQwMCwgMzAwKTsKKyAgICBndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKGRpYWxvZyks
ICJXZWJLaXQgVmlldyBTZXR0aW5ncyIpOworICAgIGd0a193aW5kb3dfc2V0X2Rlc3Ryb3lfd2l0
aF9wYXJlbnQoR1RLX1dJTkRPVyhkaWFsb2cpLCBUUlVFKTsKKyAgICBndGtfY29udGFpbmVyX3Nl
dF9ib3JkZXJfd2lkdGgoR1RLX0NPTlRBSU5FUihkaWFsb2cpLCA1KTsKKyAgICBndGtfZGlhbG9n
X2FkZF9idXR0b24oR1RLX0RJQUxPRyhkaWFsb2cpLCBHVEtfU1RPQ0tfQ0xPU0UsIEdUS19SRVNQ
T05TRV9DTE9TRSk7CisgICAgZ3RrX2RpYWxvZ19zZXRfZGVmYXVsdF9yZXNwb25zZShHVEtfRElB
TE9HKGRpYWxvZyksIEdUS19SRVNQT05TRV9DTE9TRSk7CisKKyAgICBHdGtXaWRnZXQgKnNjcm9s
bGVkV2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoTlVMTCwgTlVMTCk7CisgICAgZGlh
bG9nLT5zZXR0aW5nc0xpc3QgPSBndGtfdHJlZV92aWV3X25ldygpOworICAgIEd0a0NlbGxSZW5k
ZXJlciAqcmVuZGVyZXIgPSBndGtfY2VsbF9yZW5kZXJlcl90ZXh0X25ldygpOworICAgIGd0a190
cmVlX3ZpZXdfaW5zZXJ0X2NvbHVtbl93aXRoX2F0dHJpYnV0ZXMoR1RLX1RSRUVfVklFVyhkaWFs
b2ctPnNldHRpbmdzTGlzdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLCAiTmFtZSIsIHJlbmRlcmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInRleHQiLCBTRVRUSU5HU19MSVNUX0NPTFVNTl9OSUNL
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7
CisgICAgcmVuZGVyZXIgPSBicm93c2VyX2NlbGxfcmVuZGVyZXJfdmFyaWFudF9uZXcoKTsKKyAg
ICBnX3NpZ25hbF9jb25uZWN0KHJlbmRlcmVyLCAiY2hhbmdlZCIsIEdfQ0FMTEJBQ0soY2VsbFJl
bmRlcmVyQ2hhbmdlZCksIGRpYWxvZyk7CisgICAgZ3RrX3RyZWVfdmlld19pbnNlcnRfY29sdW1u
X3dpdGhfYXR0cmlidXRlcyhHVEtfVFJFRV9WSUVXKGRpYWxvZy0+c2V0dGluZ3NMaXN0KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsICJWYWx1ZSIs
IHJlbmRlcmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInZhbHVlIiwgU0VUVElOR1NfTElTVF9DT0xVTU5fVkFMVUUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWRqdXN0bWVudCIsIFNFVFRJTkdTX0xJ
U1RfQ09MVU1OX0FESlVTVE1FTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOVUxMKTsKKyAgICBndGtfdHJlZV92aWV3X3NldF90b29sdGlwX2NvbHVt
bihHVEtfVFJFRV9WSUVXKGRpYWxvZy0+c2V0dGluZ3NMaXN0KSwgU0VUVElOR1NfTElTVF9DT0xV
TU5fQkxVUkIpOworCisgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihzY3JvbGxl
ZFdpbmRvdyksIGRpYWxvZy0+c2V0dGluZ3NMaXN0KTsKKyAgICBndGtfd2lkZ2V0X3Nob3coZGlh
bG9nLT5zZXR0aW5nc0xpc3QpOworCisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KGNvbnRlbnRBcmVh
LCBzY3JvbGxlZFdpbmRvdywgVFJVRSwgVFJVRSwgMCk7CisgICAgZ3RrX3dpZGdldF9zaG93KHNj
cm9sbGVkV2luZG93KTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3QoZGlhbG9nLCAicmVzcG9uc2Ui
LCBHX0NBTExCQUNLKGd0a193aWRnZXRfZGVzdHJveSksIE5VTEwpOworfQorCitzdGF0aWMgdm9p
ZCBicm93c2VyU2V0dGluZ3NEaWFsb2dDb25zdHJ1Y3RlZChHT2JqZWN0ICpvYmplY3QpCit7Cisg
ICAgQnJvd3NlclNldHRpbmdzRGlhbG9nICpkaWFsb2cgPSBCUk9XU0VSX1NFVFRJTkdTX0RJQUxP
RyhvYmplY3QpOworICAgIFdlYktpdFNldHRpbmdzICpzZXR0aW5ncyA9IGRpYWxvZy0+c2V0dGlu
Z3M7CisgICAgR3RrTGlzdFN0b3JlICptb2RlbCA9IGd0a19saXN0X3N0b3JlX25ldyhTRVRUSU5H
U19MSVNUX05fQ09MVU1OUywgR19UWVBFX1NUUklORywgR19UWVBFX1NUUklORywgR19UWVBFX1NU
UklORywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQ
RV9WQUxVRSwgR19UWVBFX09CSkVDVCk7CisgICAgZ3VpbnQgcHJvcGVydGllc0NvdW50OworICAg
IEdQYXJhbVNwZWMgKipwcm9wZXJ0aWVzID0gZ19vYmplY3RfY2xhc3NfbGlzdF9wcm9wZXJ0aWVz
KEdfT0JKRUNUX0dFVF9DTEFTUyhzZXR0aW5ncyksICZwcm9wZXJ0aWVzQ291bnQpOworICAgIGd1
aW50IGk7CisgICAgZm9yIChpID0gMDsgaSA8IHByb3BlcnRpZXNDb3VudDsgaSsrKSB7CisgICAg
ICAgIEdQYXJhbVNwZWMgKnByb3BlcnR5ID0gcHJvcGVydGllc1tpXTsKKyAgICAgICAgY29uc3Qg
Y2hhciAqbmFtZSA9IGdfcGFyYW1fc3BlY19nZXRfbmFtZShwcm9wZXJ0eSk7CisgICAgICAgIGNv
bnN0IGNoYXIgKm5pY2sgPSBnX3BhcmFtX3NwZWNfZ2V0X25pY2socHJvcGVydHkpOworCisgICAg
ICAgIEdWYWx1ZSB2YWx1ZSA9IHsgMCwgeyB7IDAgfSB9IH07CisgICAgICAgIGdfdmFsdWVfaW5p
dCgmdmFsdWUsIEdfUEFSQU1fU1BFQ19WQUxVRV9UWVBFKHByb3BlcnR5KSk7CisgICAgICAgIGdf
b2JqZWN0X2dldF9wcm9wZXJ0eShHX09CSkVDVChzZXR0aW5ncyksIG5hbWUsICZ2YWx1ZSk7CisK
KyAgICAgICAgR3RrQWRqdXN0bWVudCAqYWRqdXN0bWVudCA9IE5VTEw7CisgICAgICAgIGlmIChH
X1BBUkFNX1NQRUNfVkFMVUVfVFlQRShwcm9wZXJ0eSkgPT0gR19UWVBFX1VJTlQpIHsKKyAgICAg
ICAgICAgIEdQYXJhbVNwZWNVSW50ICp1SW50UHJvcGVydHkgPSBHX1BBUkFNX1NQRUNfVUlOVChw
cm9wZXJ0eSk7CisgICAgICAgICAgICBhZGp1c3RtZW50ID0gZ3RrX2FkanVzdG1lbnRfbmV3KHVJ
bnRQcm9wZXJ0eS0+ZGVmYXVsdF92YWx1ZSwgdUludFByb3BlcnR5LT5taW5pbXVtLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1SW50UHJvcGVydHktPm1heGlt
dW0sIDEsIDEsIDEpOworICAgICAgICB9CisKKyAgICAgICAgR3RrVHJlZUl0ZXIgaXRlcjsKKyAg
ICAgICAgZ3RrX2xpc3Rfc3RvcmVfYXBwZW5kKG1vZGVsLCAmaXRlcik7CisgICAgICAgIGd0a19s
aXN0X3N0b3JlX3NldChtb2RlbCwgJml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBT
RVRUSU5HU19MSVNUX0NPTFVNTl9OQU1FLCBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU0VUVElOR1NfTElTVF9DT0xVTU5fTklDSywgbmljaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNFVFRJTkdTX0xJU1RfQ09MVU1OX0JMVVJCLCBnX3BhcmFtX3NwZWNfZ2V0X2JsdXJi
KHByb3BlcnR5KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFVFRJTkdTX0xJU1RfQ09M
VU1OX1ZBTFVFLCAmdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVRUSU5HU19M
SVNUX0NPTFVNTl9BREpVU1RNRU5ULCBhZGp1c3RtZW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLTEpOworICAgICAgICBnX3ZhbHVlX3Vuc2V0KCZ2YWx1ZSk7CisgICAgfQorCisgICAg
Z3RrX3RyZWVfdmlld19zZXRfbW9kZWwoR1RLX1RSRUVfVklFVyhkaWFsb2ctPnNldHRpbmdzTGlz
dCksIEdUS19UUkVFX01PREVMKG1vZGVsKSk7CisgICAgZ19vYmplY3RfdW5yZWYobW9kZWwpOwor
fQorCitzdGF0aWMgdm9pZCBicm93c2VyX3NldHRpbmdzX2RpYWxvZ19jbGFzc19pbml0KEJyb3dz
ZXJTZXR0aW5nc0RpYWxvZ0NsYXNzICprbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MgKmdvYmpl
Y3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKworICAgIGdvYmplY3RDbGFzcy0+Y29u
c3RydWN0ZWQgPSBicm93c2VyU2V0dGluZ3NEaWFsb2dDb25zdHJ1Y3RlZDsKKyAgICBnb2JqZWN0
Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IGJyb3dzZXJTZXR0aW5nc0RpYWxvZ1NldFByb3BlcnR5Owor
CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX1NFVFRJTkdTLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCgic2V0dGluZ3Mi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiU2V0dGluZ3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiVGhlIFdlYktpdFNldHRpbmdzIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVfU0VUVElOR1Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdfUEFSQU1fV1JJVEFCTEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSk7Cit9CisKK0d0a1dp
ZGdldCAqYnJvd3Nlcl9zZXR0aW5nc19kaWFsb2dfbmV3KFdlYktpdFNldHRpbmdzICpzZXR0aW5n
cykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGlu
Z3MpLCBOVUxMKTsKKworICAgIHJldHVybiBHVEtfV0lER0VUKGdfb2JqZWN0X25ldyhCUk9XU0VS
X1RZUEVfU0VUVElOR1NfRElBTE9HLCAic2V0dGluZ3MiLCBzZXR0aW5ncywgTlVMTCkpOworfQor
CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNldHRpbmdzRGlhbG9n
LmggYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNldHRpbmdzRGlhbG9nLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjNkYmNkMAotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyU2V0dGluZ3NEaWFsb2cuaApAQCAtMCwwICsx
LDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgQnJvd3NlclNldHRpbmdzRGlhbG9nX2gKKyNkZWZpbmUgQnJvd3NlclNldHRpbmdz
RGlhbG9nX2gKKworI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL3dlYmtp
dDIuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIEJST1dTRVJfVFlQRV9TRVRUSU5HU19E
SUFMT0cgICAgICAgICAgICAoYnJvd3Nlcl9zZXR0aW5nc19kaWFsb2dfZ2V0X3R5cGUoKSkKKyNk
ZWZpbmUgQlJPV1NFUl9TRVRUSU5HU19ESUFMT0cob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hF
Q0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgQlJPV1NFUl9UWVBFX1NFVFRJTkdTX0RJQUxPRywgQnJv
d3NlclNldHRpbmdzRGlhbG9nKSkKKyNkZWZpbmUgQlJPV1NFUl9TRVRUSU5HU19ESUFMT0dfQ0xB
U1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgQlJPV1NFUl9U
WVBFX1NFVFRJTkdTX0RJQUxPRywgQnJvd3NlclNldHRpbmdzRGlhbG9nQ2xhc3MpKQorI2RlZmlu
ZSBCUk9XU0VSX0lTX1NFVFRJTkdTX0RJQUxPRyhvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19J
TlNUQU5DRV9UWVBFKChvYmopLCBCUk9XU0VSX1RZUEVfU0VUVElOR1NfRElBTE9HKSkKKyNkZWZp
bmUgQlJPV1NFUl9JU19TRVRUSU5HU19ESUFMT0dfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tf
Q0xBU1NfVFlQRSgoa2xhc3MpLCAgQlJPV1NFUl9UWVBFX1NFVFRJTkdTX0RJQUxPRykpCisjZGVm
aW5lIEJST1dTRVJfU0VUVElOR1NfRElBTE9HX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RB
TkNFX0dFVF9DTEFTUygob2JqKSwgIEJST1dTRVJfVFlQRV9TRVRUSU5HU19ESUFMT0csIEJyb3dz
ZXJTZXR0aW5nc0RpYWxvZ0NsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX0Jyb3dzZXJTZXR0aW5n
c0RpYWxvZyAgICAgICAgQnJvd3NlclNldHRpbmdzRGlhbG9nOwordHlwZWRlZiBzdHJ1Y3QgX0Jy
b3dzZXJTZXR0aW5nc0RpYWxvZ0NsYXNzICAgQnJvd3NlclNldHRpbmdzRGlhbG9nQ2xhc3M7CisK
K0dUeXBlIGJyb3dzZXJfc2V0dGluZ3NfZGlhbG9nX2dldF90eXBlKHZvaWQpOworCitHdGtXaWRn
ZXQqIGJyb3dzZXJfc2V0dGluZ3NfZGlhbG9nX25ldyhXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3Mp
OworCitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2Vy
L2d0ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRv
dy5jCmluZGV4IDc3MDVmYTIuLjY5NzAyMTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2Vy
L2d0ay9Ccm93c2VyV2luZG93LmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJX
aW5kb3cuYwpAQCAtMjYsNiArMjYsNyBAQAogICovCiAKICNpbmNsdWRlICJCcm93c2VyV2luZG93
LmgiCisjaW5jbHVkZSAiQnJvd3NlclNldHRpbmdzRGlhbG9nLmgiCiAKIGVudW0gewogICAgIFBS
T1BfMCwKQEAgLTQxLDYgKzQyLDcgQEAgc3RydWN0IF9Ccm93c2VyV2luZG93IHsKICAgICBHdGtX
aWRnZXQgKmJhY2tJdGVtOwogICAgIEd0a1dpZGdldCAqZm9yd2FyZEl0ZW07CiAgICAgR3RrV2lk
Z2V0ICpzdGF0dXNMYWJlbDsKKyAgICBHdGtXaWRnZXQgKnNldHRpbmdzRGlhbG9nOwogICAgIFdl
YktpdFdlYlZpZXcgKndlYlZpZXc7CiAKIH07CkBAIC04Miw2ICs4NCwxOSBAQCBzdGF0aWMgdm9p
ZCBnb0ZvcndhcmRDYWxsYmFjayhCcm93c2VyV2luZG93ICp3aW5kb3cpCiAgICAgd2Via2l0X3dl
Yl92aWV3X2dvX2ZvcndhcmQod2luZG93LT53ZWJWaWV3KTsKIH0KIAorc3RhdGljIHZvaWQgc2V0
dGluZ3NDYWxsYmFjayhCcm93c2VyV2luZG93ICp3aW5kb3cpCit7CisgICAgaWYgKHdpbmRvdy0+
c2V0dGluZ3NEaWFsb2cpIHsKKyAgICAgICAgZ3RrX3dpbmRvd19wcmVzZW50KEdUS19XSU5ET1co
d2luZG93LT5zZXR0aW5nc0RpYWxvZykpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
d2luZG93LT5zZXR0aW5nc0RpYWxvZyA9IGJyb3dzZXJfc2V0dGluZ3NfZGlhbG9nX25ldyh3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdpbmRvdy0+d2ViVmlldykpOworICAgIGd0a193aW5k
b3dfc2V0X3RyYW5zaWVudF9mb3IoR1RLX1dJTkRPVyh3aW5kb3ctPnNldHRpbmdzRGlhbG9nKSwg
R1RLX1dJTkRPVyh3aW5kb3cpKTsKKyAgICBnX29iamVjdF9hZGRfd2Vha19wb2ludGVyKEdfT0JK
RUNUKHdpbmRvdy0+c2V0dGluZ3NEaWFsb2cpLCAoZ3BvaW50ZXIgKikmd2luZG93LT5zZXR0aW5n
c0RpYWxvZyk7CisgICAgZ3RrX3dpZGdldF9zaG93KHdpbmRvdy0+c2V0dGluZ3NEaWFsb2cpOwor
fQorCiBzdGF0aWMgdm9pZCB3ZWJWaWV3VVJJQ2hhbmdlZChXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3
LCBHUGFyYW1TcGVjICpwc3BlYywgQnJvd3NlcldpbmRvdyAqd2luZG93KQogewogICAgIGd0a19l
bnRyeV9zZXRfdGV4dChHVEtfRU5UUlkod2luZG93LT51cmlFbnRyeSksIHdlYmtpdF93ZWJfdmll
d19nZXRfdXJpKHdlYlZpZXcpKTsKQEAgLTIzNyw2ICsyNTIsMTEgQEAgc3RhdGljIHZvaWQgYnJv
d3Nlcl93aW5kb3dfaW5pdChCcm93c2VyV2luZG93ICp3aW5kb3cpCiAgICAgZ3RrX3Rvb2xiYXJf
aW5zZXJ0KEdUS19UT09MQkFSKHRvb2xiYXIpLCBpdGVtLCAtMSk7CiAgICAgZ3RrX3dpZGdldF9z
aG93KEdUS19XSURHRVQoaXRlbSkpOwogCisgICAgaXRlbSA9IGd0a190b29sX2J1dHRvbl9uZXdf
ZnJvbV9zdG9jayhHVEtfU1RPQ0tfUFJFRkVSRU5DRVMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rf
c3dhcHBlZChHX09CSkVDVChpdGVtKSwgImNsaWNrZWQiLCBHX0NBTExCQUNLKHNldHRpbmdzQ2Fs
bGJhY2spLCB3aW5kb3cpOworICAgIGd0a190b29sYmFyX2luc2VydChHVEtfVE9PTEJBUih0b29s
YmFyKSwgaXRlbSwgLTEpOworICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKGl0ZW0pKTsK
KwogICAgIGl0ZW0gPSBndGtfdG9vbF9pdGVtX25ldygpOwogICAgIGd0a190b29sX2l0ZW1fc2V0
X2V4cGFuZChpdGVtLCBUUlVFKTsKICAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVS
KGl0ZW0pLCB3aW5kb3ctPnVyaUVudHJ5KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2Vy
L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9HTlVtYWtlZmlsZS5h
bQppbmRleCBlMzJhMTZkLi5jZjM5OTRhIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9n
dGsvR05VbWFrZWZpbGUuYW0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0dOVW1ha2VmaWxl
LmFtCkBAIC0xLDggKzEsMTMgQEAKIG5vaW5zdF9QUk9HUkFNUyArPSBcCiAJUHJvZ3JhbXMvTWlu
aUJyb3dzZXIKIAorbWluaWJyb3dzZXJfYnVpbHRfc291cmNlcyArPSBcCisJRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9Ccm93c2VyTWFyc2hhbC5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJLaXQyL0Jy
b3dzZXJNYXJzaGFsLmMKKwogUHJvZ3JhbXNfTWluaUJyb3dzZXJfQ1BQRkxBR1MgPSBcCiAJLUkk
KHNyY2RpcikvU291cmNlIFwKKwktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyIFwKIAktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL3dlYmtpdDJn
dGsgXAogCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvd2Via2l0Mmd0
ay9pbmNsdWRlIFwKIAktRFdFQktJVF9FWEVDX1BBVEg9XCIke3NoZWxsIHB3ZH0vJCh0b3BfYnVp
bGRkaXIpL1Byb2dyYW1zL1wiIFwKQEAgLTExLDYgKzE2LDExIEBAIFByb2dyYW1zX01pbmlCcm93
c2VyX0NQUEZMQUdTID0gXAogCSQoR1RLX0NGTEFHUykKIAogUHJvZ3JhbXNfTWluaUJyb3dzZXJf
U09VUkNFUyA9IFwKKwkkKG1pbmlicm93c2VyX2J1aWx0X3NvdXJjZXMpIFwKKwlUb29scy9NaW5p
QnJvd3Nlci9ndGsvQnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnQuaCBcCisJVG9vbHMvTWluaUJy
b3dzZXIvZ3RrL0Jyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50LmMgXAorCVRvb2xzL01pbmlCcm93
c2VyL2d0ay9Ccm93c2VyU2V0dGluZ3NEaWFsb2cuaCBcCisJVG9vbHMvTWluaUJyb3dzZXIvZ3Rr
L0Jyb3dzZXJTZXR0aW5nc0RpYWxvZy5jIFwKIAlUb29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3Nl
cldpbmRvdy5oIFwKIAlUb29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jIFwKIAlU
b29scy9NaW5pQnJvd3Nlci9ndGsvbWFpbi5jCkBAIC0yNSw1ICszNSwyNyBAQCBQcm9ncmFtc19N
aW5pQnJvd3Nlcl9MREZMQUdTID0gXAogCS1uby1pbnN0YWxsCiAKIENMRUFORklMRVMgKz0gXAot
CSQodG9wX2J1aWxkZGlyKS9Qcm9ncmFtcy9NaW5pQnJvd3NlcgorCSQodG9wX2J1aWxkZGlyKS9Q
cm9ncmFtcy9NaW5pQnJvd3NlciBcCisJJChtaW5pYnJvd3Nlcl9idWlsdF9zb3VyY2VzKSBcCisJ
JCh0b3BfYnVpbGRkaXIpL3N0YW1wLW1pbmktYnJvd3Nlci1tYXJzaGFsLmggXAorCSQodG9wX2J1
aWxkZGlyKS9zdGFtcC1taW5pLWJyb3dzZXItbWFyc2hhbC5jCisKK0JVSUxUX1NPVVJDRVMgKz0g
JChtaW5pYnJvd3Nlcl9idWlsdF9zb3VyY2VzKQorCittaW5pYnJvd3Nlcl9tYXJzaGFsX2xpc3Qg
PSAkKHNyY2RpcikvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL2Jyb3dzZXItbWFyc2hhbC5saXN0CisK
KyQoR0VOU09VUkNFU19XRUJLSVQyKS9Ccm93c2VyTWFyc2hhbC5oOiBzdGFtcC1taW5pLWJyb3dz
ZXItbWFyc2hhbC5oCisJQHRydWUKKyQoR0VOU09VUkNFU19XRUJLSVQyKS9Ccm93c2VyTWFyc2hh
bC5jOiBzdGFtcC1taW5pLWJyb3dzZXItbWFyc2hhbC5jCisJQHRydWUKKworc3RhbXAtbWluaS1i
cm93c2VyLW1hcnNoYWwuYzogJChtaW5pYnJvd3Nlcl9tYXJzaGFsX2xpc3QpCisJJChBTV9WX0dF
TikkKEdMSUJfR0VOTUFSU0hBTCkgLS1wcmVmaXg9YnJvd3Nlcl9tYXJzaGFsICQobWluaWJyb3dz
ZXJfbWFyc2hhbF9saXN0KSAtLWJvZHkgPiAkKEdFTlNPVVJDRVNfV0VCS0lUMikvQnJvd3Nlck1h
cnNoYWwuYyAmJiBcCisJZWNobyB0aW1lc3RhbXAgPiAkKEBGKQorCitzdGFtcC1taW5pLWJyb3dz
ZXItbWFyc2hhbC5oOiAkKE1pbmlCcm93c2VyX21hcnNoYWxfbGlzdCkKKwkkKEFNX1ZfR0VOKSQo
R0xJQl9HRU5NQVJTSEFMKSAtLXByZWZpeD1icm93c2VyX21hcnNoYWwgJChtaW5pYnJvd3Nlcl9t
YXJzaGFsX2xpc3QpIC0taGVhZGVyID4gJChHRU5TT1VSQ0VTX1dFQktJVDIpL0Jyb3dzZXJNYXJz
aGFsLmggJiYgXAorCWVjaG8gdGltZXN0YW1wID4gJChARikKIAorRVhUUkFfRElTVCArPSBcCisJ
JChtaW5pYnJvd3Nlcl9tYXJzaGFsX2xpc3QpCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nl
ci9ndGsvYnJvd3Nlci1tYXJzaGFsLmxpc3QgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvYnJvd3Nl
ci1tYXJzaGFsLmxpc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTcyYWE0
YgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9icm93c2VyLW1hcnNo
YWwubGlzdApAQCAtMCwwICsxIEBACitWT0lEOlNUUklORyxCT1hFRAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120874</attachid>
            <date>2012-01-02 05:47:58 -0800</date>
            <delta_ts>2012-01-02 06:07:50 -0800</delta_ts>
            <desc>Updated patch according to review comments</desc>
            <filename>wk2-mb-settings4.diff</filename>
            <type>text/plain</type>
            <size>36412</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAzMDJjYWE2Li4wM2Y4NmU0
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTItMDEtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdIEFkZCBhIHdheSB0byBjaGFuZ2Ugd2ViIHZpZXcgc2V0dGluZ3MgaW4g
TWluaUJyb3dzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcxNTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbTogSW5pdGlhbGl6ZSBtaW5pYnJvd3Nlcl9idWlsdF9zb3VyY2Vz
LgorCiAyMDExLTEyLTI4ICBDaGFuZ1Nlb2sgT2ggIDxzaGl2YW1pZG93QGdtYWlsLmNvbT4KIAog
ICAgICAgICBbR1RLXSBGaXggY29tcGlsYXRpb24gaXNzdWUgd2hlbiBzZWxlY3Rpbmcgb3Blbmds
IGZvciBBY2NlbGVyYXRlZCBjb21wb3NpdGluZwpkaWZmIC0tZ2l0IGEvR05VbWFrZWZpbGUuYW0g
Yi9HTlVtYWtlZmlsZS5hbQppbmRleCBjYjVjMDMwLi5lNWQ3YjQ1IDEwMDY0NAotLS0gYS9HTlVt
YWtlZmlsZS5hbQorKysgYi9HTlVtYWtlZmlsZS5hbQpAQCAtODEsNiArODEsNyBAQCB3ZWJraXQy
X2J1aWx0X3NvdXJjZXMgOj0KIHdlYmtpdDJfcGx1Z2luX3Byb2Nlc3NfYnVpbHRfc291cmNlcyA6
PQogd2Via2l0dGVzdHJ1bm5lcl9idWlsdF9zb3VyY2VzIDo9CiBsaWJ3ZWJjb3JlaW50ZXJuYWxz
X2J1aWx0X3NvdXJjZXMgOj0KK21pbmlicm93c2VyX2J1aWx0X3NvdXJjZXMgOj0KIGdsb2JhbF9j
cHBmbGFncyA6PQogZ2xvYmFsX2NmbGFncyA6PQogZ2xvYmFsX2N4eGZsYWdzIDo9CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjYwYjljZC4uYTJi
ZmM3NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSw1ICsxLDUwIEBACiAyMDEyLTAxLTAyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KIAorICAgICAgICBbR1RLXSBBZGQgYSB3YXkgdG8gY2hhbmdlIHdlYiB2
aWV3IHNldHRpbmdzIGluIE1pbmlCcm93c2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MTU2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBhIHByZWZlcmVuY2VzIGJ1dHRvbiB0byB0aGUgdG9vbGJh
ciB0aGF0IHNob3dzIGEgZGlhbG9nIHRvCisgICAgICAgIGNoYW5nZSBzZXR0aW5ncyBvZiB0aGUg
Y3VycmVudCB3ZWIgdmlldy4gSXQgdXNlcyBhIEd0a1RyZWVWaWV3CisgICAgICAgIHdpdGggYSBj
dXN0b20gY2VsbCByZW5kZXJlciB0byBzdXBwb3J0IG11bHRpcGxlIHR5cGVzIG9mIHZhbHVlcy4K
KworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudC5j
OiBBZGRlZC4KKyAgICAgICAgKGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50RmluYWxpemUpOgor
ICAgICAgICAoYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRHZXRQcm9wZXJ0eSk6CisgICAgICAg
IChicm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudFNldE1vZGVGb3JWYWx1ZSk6CisgICAgICAgIChi
cm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudFNldFByb3BlcnR5KToKKyAgICAgICAgKGJyb3dzZXJD
ZWxsUmVuZGVyZXJWYXJpYW50R2V0UmVuZGVyZXJGb3JWYWx1ZSk6CisgICAgICAgIChicm93c2Vy
Q2VsbFJlbmRlcmVyVmFyaWFudENlbGxSZW5kZXJlclRleHRFZGl0ZWQpOgorICAgICAgICAoYnJv
d3NlckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVuZGVyZXJTcGluRWRpdGVkKToKKyAgICAgICAg
KGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Q2VsbFJlbmRlcmVyQWN0aXZhdGUpOgorICAgICAg
ICAoYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVuZGVyZXJSZW5kZXIpOgorICAgICAg
ICAoYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVuZGVyZXJTdGFydEVkaXRpbmcpOgor
ICAgICAgICAoYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVuZGVyZXJHZXRQcmVmZXJy
ZWRXaWR0aCk6CisgICAgICAgIChicm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudENlbGxSZW5kZXJl
ckdldFByZWZlcnJlZEhlaWdodCk6CisgICAgICAgIChicm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFu
dENlbGxSZW5kZXJlckdldFByZWZlcnJlZFdpZHRoRm9ySGVpZ2h0KToKKyAgICAgICAgKGJyb3dz
ZXJDZWxsUmVuZGVyZXJWYXJpYW50Q2VsbFJlbmRlcmVyR2V0UHJlZmVycmVkSGVpZ2h0Rm9yV2lk
dGgpOgorICAgICAgICAoYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVuZGVyZXJHZXRB
bGlnbmVkQXJlYSk6CisgICAgICAgIChicm93c2VyX2NlbGxfcmVuZGVyZXJfdmFyaWFudF9pbml0
KToKKyAgICAgICAgKGJyb3dzZXJfY2VsbF9yZW5kZXJlcl92YXJpYW50X2NsYXNzX2luaXQpOgor
ICAgICAgICAoYnJvd3Nlcl9jZWxsX3JlbmRlcmVyX3ZhcmlhbnRfbmV3KToKKyAgICAgICAgKiBN
aW5pQnJvd3Nlci9ndGsvQnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnQuaDogQWRkZWQuCisgICAg
ICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZXR0aW5nc0RpYWxvZy5jOiBBZGRlZC4KKyAg
ICAgICAgKGNlbGxSZW5kZXJlckNoYW5nZWQpOgorICAgICAgICAoYnJvd3NlclNldHRpbmdzRGlh
bG9nU2V0UHJvcGVydHkpOgorICAgICAgICAoYnJvd3Nlcl9zZXR0aW5nc19kaWFsb2dfaW5pdCk6
CisgICAgICAgIChicm93c2VyU2V0dGluZ3NEaWFsb2dDb25zdHJ1Y3RlZCk6CisgICAgICAgIChi
cm93c2VyX3NldHRpbmdzX2RpYWxvZ19jbGFzc19pbml0KToKKyAgICAgICAgKGJyb3dzZXJfc2V0
dGluZ3NfZGlhbG9nX25ldyk6CisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZXR0
aW5nc0RpYWxvZy5oOiBBZGRlZC4KKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3Nlcldp
bmRvdy5jOgorICAgICAgICAoc2V0dGluZ3NDYWxsYmFjayk6CisgICAgICAgIChicm93c2VyX3dp
bmRvd19pbml0KToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvR05VbWFrZWZpbGUuYW06Cisg
ICAgICAgICogTWluaUJyb3dzZXIvZ3RrL2Jyb3dzZXItbWFyc2hhbC5saXN0OiBBZGRlZC4KKwor
MjAxMi0wMS0wMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisK
ICAgICAgICAgW0dUS10gSW1wbGVtZW50IGNyZWF0ZS9yZWFkeS10by1zaG93L2Nsb3NlIHNpZ25h
bHMgaW4gTWluaUJyb3dzZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc0NzExCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93
c2VyQ2VsbFJlbmRlcmVyVmFyaWFudC5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJD
ZWxsUmVuZGVyZXJWYXJpYW50LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
Y2IyY2FhMwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2Vy
Q2VsbFJlbmRlcmVyVmFyaWFudC5jCkBAIC0wLDAgKzEsMzQ2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJCcm93c2VyQ2VsbFJl
bmRlcmVyVmFyaWFudC5oIgorI2luY2x1ZGUgIkJyb3dzZXJNYXJzaGFsLmgiCisjaW5jbHVkZSA8
ZXJybm8uaD4KKworZW51bSB7CisgICAgUFJPUF8wLAorCisgICAgUFJPUF9WQUxVRSwKKyAgICBQ
Uk9QX0FESlVTVE1FTlQKK307CisKK2VudW0geworICAgIENIQU5HRUQsCisKKyAgICBMQVNUX1NJ
R05BTAorfTsKKworc3RydWN0IF9Ccm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudCB7CisgICAgR3Rr
Q2VsbFJlbmRlcmVyIHBhcmVudDsKKworICAgIEdWYWx1ZSAqdmFsdWU7CisKKyAgICBHdGtDZWxs
UmVuZGVyZXIgKnRleHRSZW5kZXJlcjsKKyAgICBHdGtDZWxsUmVuZGVyZXIgKnRvZ2dsZVJlbmRl
cmVyOworICAgIEd0a0NlbGxSZW5kZXJlciAqc3BpblJlbmRlcmVyOworfTsKKworc3RydWN0IF9C
cm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudENsYXNzIHsKKyAgICBHdGtDZWxsUmVuZGVyZXJDbGFz
cyBwYXJlbnQ7Cit9OworCitzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAg
fTsKKworR19ERUZJTkVfVFlQRShCcm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudCwgYnJvd3Nlcl9j
ZWxsX3JlbmRlcmVyX3ZhcmlhbnQsIEdUS19UWVBFX0NFTExfUkVOREVSRVIpCisKK3N0YXRpYyB2
b2lkIGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50RmluYWxpemUoR09iamVjdCAqb2JqZWN0KQor
eworICAgIEJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50ICpyZW5kZXJlciA9IEJST1dTRVJfQ0VM
TF9SRU5ERVJFUl9WQVJJQU5UKG9iamVjdCk7CisKKyAgICBnX29iamVjdF91bnJlZihyZW5kZXJl
ci0+dG9nZ2xlUmVuZGVyZXIpOworICAgIGdfb2JqZWN0X3VucmVmKHJlbmRlcmVyLT5zcGluUmVu
ZGVyZXIpOworICAgIGdfb2JqZWN0X3VucmVmKHJlbmRlcmVyLT50ZXh0UmVuZGVyZXIpOworICAg
IGlmIChyZW5kZXJlci0+dmFsdWUpCisgICAgICAgIGdfYm94ZWRfZnJlZShHX1RZUEVfVkFMVUUs
IHJlbmRlcmVyLT52YWx1ZSk7CisKKyAgICBHX09CSkVDVF9DTEFTUyhicm93c2VyX2NlbGxfcmVu
ZGVyZXJfdmFyaWFudF9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOworfQorCitzdGF0
aWMgdm9pZCBicm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudEdldFByb3BlcnR5KEdPYmplY3QgKm9i
amVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUgKnZhbHVlLCBHUGFyYW1TcGVjICpwc3BlYykKK3sK
KyAgICBCcm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudCAqcmVuZGVyZXIgPSBCUk9XU0VSX0NFTExf
UkVOREVSRVJfVkFSSUFOVChvYmplY3QpOworCisgICAgc3dpdGNoIChwcm9wSWQpIHsKKyAgICBj
YXNlIFBST1BfVkFMVUU6CisgICAgICAgIGdfdmFsdWVfc2V0X2JveGVkKHZhbHVlLCByZW5kZXJl
ci0+dmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQURKVVNUTUVOVDogewor
ICAgICAgICBHdGtBZGp1c3RtZW50ICphZGp1c3RtZW50ID0gTlVMTDsKKyAgICAgICAgZ19vYmpl
Y3RfZ2V0KEdfT0JKRUNUKHJlbmRlcmVyLT5zcGluUmVuZGVyZXIpLCAiYWRqdXN0bWVudCIsICZh
ZGp1c3RtZW50LCBOVUxMKTsKKyAgICAgICAgaWYgKGFkanVzdG1lbnQpIHsKKyAgICAgICAgICAg
IGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgYWRqdXN0bWVudCk7CisgICAgICAgICAgICBnX29i
amVjdF91bnJlZihhZGp1c3RtZW50KTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9
CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lE
KG9iamVjdCwgcHJvcElkLCBwc3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBicm93c2Vy
Q2VsbFJlbmRlcmVyVmFyaWFudFNldE1vZGVGb3JWYWx1ZShCcm93c2VyQ2VsbFJlbmRlcmVyVmFy
aWFudCAqcmVuZGVyZXIpCit7CisgICAgaWYgKCFyZW5kZXJlci0+dmFsdWUpCisgICAgICAgIHJl
dHVybjsKKworICAgIEd0a0NlbGxSZW5kZXJlck1vZGUgbW9kZTsKKyAgICBpZiAoR19WQUxVRV9I
T0xEU19CT09MRUFOKHJlbmRlcmVyLT52YWx1ZSkpCisgICAgICAgIG1vZGUgPSBHVEtfQ0VMTF9S
RU5ERVJFUl9NT0RFX0FDVElWQVRBQkxFOworICAgIGVsc2UgaWYgKEdfVkFMVUVfSE9MRFNfU1RS
SU5HKHJlbmRlcmVyLT52YWx1ZSkgfHwgR19WQUxVRV9IT0xEU19VSU5UKHJlbmRlcmVyLT52YWx1
ZSkpCisgICAgICAgIG1vZGUgPSBHVEtfQ0VMTF9SRU5ERVJFUl9NT0RFX0VESVRBQkxFOworICAg
IGVsc2UKKyAgICAgICAgcmV0dXJuOworCisgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHJlbmRl
cmVyKSwgIm1vZGUiLCBtb2RlLCBOVUxMKTsKK30KKworc3RhdGljIHZvaWQgYnJvd3NlckNlbGxS
ZW5kZXJlclZhcmlhbnRTZXRQcm9wZXJ0eShHT2JqZWN0ICpvYmplY3QsIGd1aW50IHByb3BJZCwg
Y29uc3QgR1ZhbHVlICp2YWx1ZSwgR1BhcmFtU3BlYyAqcHNwZWMpCit7CisgICAgQnJvd3NlckNl
bGxSZW5kZXJlclZhcmlhbnQgKnJlbmRlcmVyID0gQlJPV1NFUl9DRUxMX1JFTkRFUkVSX1ZBUklB
TlQob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElkKSB7CisgICAgY2FzZSBQUk9QX1ZBTFVF
OgorICAgICAgICBpZiAocmVuZGVyZXItPnZhbHVlKQorICAgICAgICAgICAgZ19ib3hlZF9mcmVl
KEdfVFlQRV9WQUxVRSwgcmVuZGVyZXItPnZhbHVlKTsKKyAgICAgICAgcmVuZGVyZXItPnZhbHVl
ID0gZ192YWx1ZV9kdXBfYm94ZWQodmFsdWUpOworICAgICAgICBicm93c2VyQ2VsbFJlbmRlcmVy
VmFyaWFudFNldE1vZGVGb3JWYWx1ZShyZW5kZXJlcik7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUFJPUF9BREpVU1RNRU5UOgorICAgICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1QocmVuZGVy
ZXItPnNwaW5SZW5kZXJlciksICJhZGp1c3RtZW50IiwgZ192YWx1ZV9nZXRfb2JqZWN0KHZhbHVl
KSwgTlVMTCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNU
X1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcHNwZWMpOworICAgIH0K
K30KKworc3RhdGljIEd0a0NlbGxSZW5kZXJlciAqYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRH
ZXRSZW5kZXJlckZvclZhbHVlKEJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50ICpyZW5kZXJlcikK
K3sKKyAgICBpZiAoIXJlbmRlcmVyLT52YWx1ZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAg
ICBpZiAoR19WQUxVRV9IT0xEU19CT09MRUFOKHJlbmRlcmVyLT52YWx1ZSkpIHsKKyAgICAgICAg
Z19vYmplY3Rfc2V0KEdfT0JKRUNUKHJlbmRlcmVyLT50b2dnbGVSZW5kZXJlciksCisgICAgICAg
ICAgICAgICAgICAgICAiYWN0aXZlIiwgZ192YWx1ZV9nZXRfYm9vbGVhbihyZW5kZXJlci0+dmFs
dWUpLAorICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgIHJldHVybiByZW5kZXJl
ci0+dG9nZ2xlUmVuZGVyZXI7CisgICAgfQorCisgICAgaWYgKEdfVkFMVUVfSE9MRFNfU1RSSU5H
KHJlbmRlcmVyLT52YWx1ZSkpIHsKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHJlbmRl
cmVyLT50ZXh0UmVuZGVyZXIpLAorICAgICAgICAgICAgICAgICAgICAgInRleHQiLCBnX3ZhbHVl
X2dldF9zdHJpbmcocmVuZGVyZXItPnZhbHVlKSwKKyAgICAgICAgICAgICAgICAgICAgIE5VTEwp
OworICAgICAgICByZXR1cm4gcmVuZGVyZXItPnRleHRSZW5kZXJlcjsKKyAgICB9CisKKyAgICBp
ZiAoR19WQUxVRV9IT0xEU19VSU5UKHJlbmRlcmVyLT52YWx1ZSkpIHsKKyAgICAgICAgZ2NoYXIg
KnRleHQgPSBnX3N0cmR1cF9wcmludGYoIiV1IiwgZ192YWx1ZV9nZXRfdWludChyZW5kZXJlci0+
dmFsdWUpKTsKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHJlbmRlcmVyLT5zcGluUmVu
ZGVyZXIpLCAidGV4dCIsIHRleHQsIE5VTEwpOworICAgICAgICBnX2ZyZWUodGV4dCk7CisgICAg
ICAgIHJldHVybiByZW5kZXJlci0+c3BpblJlbmRlcmVyOworICAgIH0KKworICAgIHJldHVybiBO
VUxMOworfQorCitzdGF0aWMgdm9pZCBicm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudENlbGxSZW5k
ZXJlclRleHRFZGl0ZWQoQnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnQgKnJlbmRlcmVyLCBjb25z
dCBnY2hhciAqcGF0aCwgY29uc3QgZ2NoYXIgKm5ld1RleHQpCit7CisgICAgaWYgKCFyZW5kZXJl
ci0+dmFsdWUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghR19WQUxVRV9IT0xEU19TVFJJ
TkcocmVuZGVyZXItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZ192YWx1ZV9zZXRf
c3RyaW5nKHJlbmRlcmVyLT52YWx1ZSwgbmV3VGV4dCk7CisgICAgZ19zaWduYWxfZW1pdChyZW5k
ZXJlciwgc2lnbmFsc1tDSEFOR0VEXSwgMCwgcGF0aCwgcmVuZGVyZXItPnZhbHVlKTsKK30KKwor
c3RhdGljIHZvaWQgYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVuZGVyZXJTcGluRWRp
dGVkKEJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50ICpyZW5kZXJlciwgY29uc3QgZ2NoYXIgKnBh
dGgsIGNvbnN0IGdjaGFyICpuZXdUZXh0KQoreworICAgIGlmICghcmVuZGVyZXItPnZhbHVlKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIUdfVkFMVUVfSE9MRFNfVUlOVChyZW5kZXJlci0+
dmFsdWUpKQorICAgICAgICByZXR1cm47CisKKyAgICBHdGtBZGp1c3RtZW50ICphZGp1c3RtZW50
OworICAgIGdfb2JqZWN0X2dldChHX09CSkVDVChyZW5kZXJlci0+c3BpblJlbmRlcmVyKSwgImFk
anVzdG1lbnQiLCAmYWRqdXN0bWVudCwgTlVMTCk7CisgICAgaWYgKCFhZGp1c3RtZW50KQorICAg
ICAgICByZXR1cm47CisKKyAgICBlcnJubyA9IDA7CisgICAgZ2NoYXIgKmVuZFB0cjsKKyAgICBn
ZG91YmxlIHZhbHVlID0gZ19zdHJ0b2QobmV3VGV4dCwgJmVuZFB0cik7CisgICAgaWYgKGVycm5v
IHx8IHZhbHVlID4gZ3RrX2FkanVzdG1lbnRfZ2V0X3VwcGVyKGFkanVzdG1lbnQpIHx8IHZhbHVl
IDwgZ3RrX2FkanVzdG1lbnRfZ2V0X2xvd2VyKGFkanVzdG1lbnQpIHx8IGVuZFB0ciA9PSBuZXdU
ZXh0KSB7CisgICAgICAgIGdfd2FybmluZygiSW52YWxpZCBpbnB1dCBmb3IgY2VsbDogJXNcbiIs
IG5ld1RleHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZ192YWx1ZV9zZXRfdWlu
dChyZW5kZXJlci0+dmFsdWUsIChndWludCl2YWx1ZSk7CisgICAgZ19zaWduYWxfZW1pdChyZW5k
ZXJlciwgc2lnbmFsc1tDSEFOR0VEXSwgMCwgcGF0aCwgcmVuZGVyZXItPnZhbHVlKTsKK30KKwor
c3RhdGljIGdib29sZWFuIGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Q2VsbFJlbmRlcmVyQWN0
aXZhdGUoR3RrQ2VsbFJlbmRlcmVyICpjZWxsLCBHZGtFdmVudCAqZXZlbnQsIEd0a1dpZGdldCAq
d2lkZ2V0LCBjb25zdCBnY2hhciAqcGF0aCwgY29uc3QgR2RrUmVjdGFuZ2xlICpiZ0FyZWEsIGNv
bnN0IEdka1JlY3RhbmdsZSAqY2VsbEFyZWEsIEd0a0NlbGxSZW5kZXJlclN0YXRlIGZsYWdzKQor
eworICAgIEJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50ICpyZW5kZXJlciA9IEJST1dTRVJfQ0VM
TF9SRU5ERVJFUl9WQVJJQU5UKGNlbGwpOworCisgICAgaWYgKCFyZW5kZXJlci0+dmFsdWUpCisg
ICAgICAgIHJldHVybiBUUlVFOworCisgICAgaWYgKCFHX1ZBTFVFX0hPTERTX0JPT0xFQU4ocmVu
ZGVyZXItPnZhbHVlKSkKKyAgICAgICAgcmV0dXJuIFRSVUU7CisKKyAgICBnX3ZhbHVlX3NldF9i
b29sZWFuKHJlbmRlcmVyLT52YWx1ZSwgIWdfdmFsdWVfZ2V0X2Jvb2xlYW4ocmVuZGVyZXItPnZh
bHVlKSk7CisgICAgZ19zaWduYWxfZW1pdChyZW5kZXJlciwgc2lnbmFsc1tDSEFOR0VEXSwgMCwg
cGF0aCwgcmVuZGVyZXItPnZhbHVlKTsKKworICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMg
dm9pZCBicm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudENlbGxSZW5kZXJlclJlbmRlcihHdGtDZWxs
UmVuZGVyZXIgKmNlbGwsIGNhaXJvX3QgKmNyLCBHdGtXaWRnZXQgKndpZGdldCwgY29uc3QgR2Rr
UmVjdGFuZ2xlICpiZ0FyZWEsIGNvbnN0IEdka1JlY3RhbmdsZSAqY2VsbEFyZWEsIEd0a0NlbGxS
ZW5kZXJlclN0YXRlIGZsYWdzKQoreworICAgIEd0a0NlbGxSZW5kZXJlciAqcmVuZGVyZXIgPSBi
cm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudEdldFJlbmRlcmVyRm9yVmFsdWUoQlJPV1NFUl9DRUxM
X1JFTkRFUkVSX1ZBUklBTlQoY2VsbCkpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIEdUS19DRUxMX1JFTkRFUkVSX0dFVF9DTEFTUyhyZW5kZXJlciktPnJlbmRl
cihyZW5kZXJlciwgY3IsIHdpZGdldCwgYmdBcmVhLCBjZWxsQXJlYSwgZmxhZ3MpOworfQorCitz
dGF0aWMgR3RrQ2VsbEVkaXRhYmxlICpicm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudENlbGxSZW5k
ZXJlclN0YXJ0RWRpdGluZyhHdGtDZWxsUmVuZGVyZXIgKmNlbGwsIEdka0V2ZW50ICpldmVudCwg
R3RrV2lkZ2V0ICp3aWRnZXQsIGNvbnN0IGdjaGFyICpwYXRoLCBjb25zdCBHZGtSZWN0YW5nbGUg
KmJnQXJlYSwgY29uc3QgR2RrUmVjdGFuZ2xlICpjZWxsQXJlYSwgR3RrQ2VsbFJlbmRlcmVyU3Rh
dGUgZmxhZ3MpCit7CisgICAgR3RrQ2VsbFJlbmRlcmVyICpyZW5kZXJlciA9IGJyb3dzZXJDZWxs
UmVuZGVyZXJWYXJpYW50R2V0UmVuZGVyZXJGb3JWYWx1ZShCUk9XU0VSX0NFTExfUkVOREVSRVJf
VkFSSUFOVChjZWxsKSk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIE5VTEw7
CisKKyAgICBpZiAoIUdUS19DRUxMX1JFTkRFUkVSX0dFVF9DTEFTUyhyZW5kZXJlciktPnN0YXJ0
X2VkaXRpbmcpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIEdUS19DRUxMX1JF
TkRFUkVSX0dFVF9DTEFTUyhyZW5kZXJlciktPnN0YXJ0X2VkaXRpbmcocmVuZGVyZXIsIGV2ZW50
LCB3aWRnZXQsIHBhdGgsIGJnQXJlYSwgY2VsbEFyZWEsIGZsYWdzKTsKK30KKworc3RhdGljIHZv
aWQgYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVuZGVyZXJHZXRQcmVmZXJyZWRXaWR0
aChHdGtDZWxsUmVuZGVyZXIgKmNlbGwsIEd0a1dpZGdldCAqd2lkZ2V0LCBnaW50ICptaW5pbXVt
V2lkdGgsIGdpbnQgKm5hdHVyYWxXaWR0aCkKK3sKKyAgICBHdGtDZWxsUmVuZGVyZXIgKnJlbmRl
cmVyID0gYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRHZXRSZW5kZXJlckZvclZhbHVlKEJST1dT
RVJfQ0VMTF9SRU5ERVJFUl9WQVJJQU5UKGNlbGwpKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAg
ICAgICByZXR1cm47CisKKyAgICBHVEtfQ0VMTF9SRU5ERVJFUl9HRVRfQ0xBU1MocmVuZGVyZXIp
LT5nZXRfcHJlZmVycmVkX3dpZHRoKHJlbmRlcmVyLCB3aWRnZXQsIG1pbmltdW1XaWR0aCwgbmF0
dXJhbFdpZHRoKTsKK30KKworc3RhdGljIHZvaWQgYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRD
ZWxsUmVuZGVyZXJHZXRQcmVmZXJyZWRIZWlnaHQoR3RrQ2VsbFJlbmRlcmVyICpjZWxsLCBHdGtX
aWRnZXQgKndpZGdldCwgZ2ludCAqbWluaW11bUhlaWdodCwgZ2ludCAqbmF0dXJhbEhlaWdodCkK
K3sKKyAgICBHdGtDZWxsUmVuZGVyZXIgKnJlbmRlcmVyID0gYnJvd3NlckNlbGxSZW5kZXJlclZh
cmlhbnRHZXRSZW5kZXJlckZvclZhbHVlKEJST1dTRVJfQ0VMTF9SRU5ERVJFUl9WQVJJQU5UKGNl
bGwpKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBHVEtfQ0VM
TF9SRU5ERVJFUl9HRVRfQ0xBU1MocmVuZGVyZXIpLT5nZXRfcHJlZmVycmVkX2hlaWdodChyZW5k
ZXJlciwgd2lkZ2V0LCBtaW5pbXVtSGVpZ2h0LCBuYXR1cmFsSGVpZ2h0KTsKK30KKworc3RhdGlj
IHZvaWQgYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVuZGVyZXJHZXRQcmVmZXJyZWRX
aWR0aEZvckhlaWdodChHdGtDZWxsUmVuZGVyZXIgKmNlbGwsIEd0a1dpZGdldCAqd2lkZ2V0LCBn
aW50IGhlaWdodCwgZ2ludCAqbWluaW11bVdpZHRoLCBnaW50ICpuYXR1cmFsV2lkdGgpCit7Cisg
ICAgR3RrQ2VsbFJlbmRlcmVyICpyZW5kZXJlciA9IGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50
R2V0UmVuZGVyZXJGb3JWYWx1ZShCUk9XU0VSX0NFTExfUkVOREVSRVJfVkFSSUFOVChjZWxsKSk7
CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgR1RLX0NFTExfUkVO
REVSRVJfR0VUX0NMQVNTKHJlbmRlcmVyKS0+Z2V0X3ByZWZlcnJlZF93aWR0aF9mb3JfaGVpZ2h0
KHJlbmRlcmVyLCB3aWRnZXQsIGhlaWdodCwgbWluaW11bVdpZHRoLCBuYXR1cmFsV2lkdGgpOwor
fQorCitzdGF0aWMgdm9pZCBicm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudENlbGxSZW5kZXJlckdl
dFByZWZlcnJlZEhlaWdodEZvcldpZHRoKEd0a0NlbGxSZW5kZXJlciAqY2VsbCwgR3RrV2lkZ2V0
ICp3aWRnZXQsIGdpbnQgd2lkdGgsIGdpbnQgKm1pbmltdW1IZWlnaHQsIGdpbnQgKm5hdHVyYWxI
ZWlnaHQpCit7CisgICAgR3RrQ2VsbFJlbmRlcmVyICpyZW5kZXJlciA9IGJyb3dzZXJDZWxsUmVu
ZGVyZXJWYXJpYW50R2V0UmVuZGVyZXJGb3JWYWx1ZShCUk9XU0VSX0NFTExfUkVOREVSRVJfVkFS
SUFOVChjZWxsKSk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
R1RLX0NFTExfUkVOREVSRVJfR0VUX0NMQVNTKHJlbmRlcmVyKS0+Z2V0X3ByZWZlcnJlZF9oZWln
aHRfZm9yX3dpZHRoKHJlbmRlcmVyLCB3aWRnZXQsIHdpZHRoLCBtaW5pbXVtSGVpZ2h0LCBuYXR1
cmFsSGVpZ2h0KTsKK30KKworc3RhdGljIHZvaWQgYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRD
ZWxsUmVuZGVyZXJHZXRBbGlnbmVkQXJlYShHdGtDZWxsUmVuZGVyZXIgKmNlbGwsIEd0a1dpZGdl
dCAqd2lkZ2V0LCBHdGtDZWxsUmVuZGVyZXJTdGF0ZSBmbGFncywgY29uc3QgR2RrUmVjdGFuZ2xl
ICpjZWxsQXJlYSwgR2RrUmVjdGFuZ2xlICphbGlnbmVkQXJlYSkKK3sKKyAgICBHdGtDZWxsUmVu
ZGVyZXIgKnJlbmRlcmVyID0gYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRHZXRSZW5kZXJlckZv
clZhbHVlKEJST1dTRVJfQ0VMTF9SRU5ERVJFUl9WQVJJQU5UKGNlbGwpKTsKKyAgICBpZiAoIXJl
bmRlcmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBHVEtfQ0VMTF9SRU5ERVJFUl9HRVRfQ0xB
U1MocmVuZGVyZXIpLT5nZXRfYWxpZ25lZF9hcmVhKHJlbmRlcmVyLCB3aWRnZXQsIGZsYWdzLCBj
ZWxsQXJlYSwgYWxpZ25lZEFyZWEpOworfQorCitzdGF0aWMgdm9pZCBicm93c2VyX2NlbGxfcmVu
ZGVyZXJfdmFyaWFudF9pbml0KEJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50ICpyZW5kZXJlcikK
K3sKKyAgICBnX29iamVjdF9zZXQocmVuZGVyZXIsICJtb2RlIiwgR1RLX0NFTExfUkVOREVSRVJf
TU9ERV9BQ1RJVkFUQUJMRSwgTlVMTCk7CisKKyAgICByZW5kZXJlci0+dG9nZ2xlUmVuZGVyZXIg
PSBndGtfY2VsbF9yZW5kZXJlcl90b2dnbGVfbmV3KCk7CisgICAgZ19vYmplY3Rfc2V0KEdfT0JK
RUNUKHJlbmRlcmVyLT50b2dnbGVSZW5kZXJlciksICJ4YWxpZ24iLCAwLjAsIE5VTEwpOworICAg
IGdfb2JqZWN0X3JlZl9zaW5rKHJlbmRlcmVyLT50b2dnbGVSZW5kZXJlcik7CisKKyAgICByZW5k
ZXJlci0+dGV4dFJlbmRlcmVyID0gZ3RrX2NlbGxfcmVuZGVyZXJfdGV4dF9uZXcoKTsKKyAgICBn
X3NpZ25hbF9jb25uZWN0X3N3YXBwZWQocmVuZGVyZXItPnRleHRSZW5kZXJlciwgImVkaXRlZCIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0soYnJvd3NlckNlbGxSZW5k
ZXJlclZhcmlhbnRDZWxsUmVuZGVyZXJUZXh0RWRpdGVkKSwgcmVuZGVyZXIpOworICAgIGdfb2Jq
ZWN0X3NldChHX09CSkVDVChyZW5kZXJlci0+dGV4dFJlbmRlcmVyKSwgImVkaXRhYmxlIiwgVFJV
RSwgTlVMTCk7CisgICAgZ19vYmplY3RfcmVmX3NpbmsocmVuZGVyZXItPnRleHRSZW5kZXJlcik7
CisKKyAgICByZW5kZXJlci0+c3BpblJlbmRlcmVyID0gZ3RrX2NlbGxfcmVuZGVyZXJfc3Bpbl9u
ZXcoKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQocmVuZGVyZXItPnNwaW5SZW5kZXJl
ciwgImVkaXRlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0soYnJv
d3NlckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVuZGVyZXJTcGluRWRpdGVkKSwgcmVuZGVyZXIp
OworICAgIGdfb2JqZWN0X3NldChHX09CSkVDVChyZW5kZXJlci0+c3BpblJlbmRlcmVyKSwgImVk
aXRhYmxlIiwgVFJVRSwgTlVMTCk7Cit9CisKK3N0YXRpYyB2b2lkIGJyb3dzZXJfY2VsbF9yZW5k
ZXJlcl92YXJpYW50X2NsYXNzX2luaXQoQnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRDbGFzcyAq
a2xhc3MpCit7CisgICAgR09iamVjdENsYXNzICpnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFT
UyhrbGFzcyk7CisgICAgR3RrQ2VsbFJlbmRlcmVyQ2xhc3MgKmNlbGxSZW5kZXJlckNsYXNzID0g
R1RLX0NFTExfUkVOREVSRVJfQ0xBU1Moa2xhc3MpOworCisgICAgZ29iamVjdENsYXNzLT5nZXRf
cHJvcGVydHkgPSBicm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudEdldFByb3BlcnR5OworICAgIGdv
YmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRTZXRQ
cm9wZXJ0eTsKKyAgICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gYnJvd3NlckNlbGxSZW5kZXJl
clZhcmlhbnRGaW5hbGl6ZTsKKworICAgIGNlbGxSZW5kZXJlckNsYXNzLT5hY3RpdmF0ZSA9IGJy
b3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Q2VsbFJlbmRlcmVyQWN0aXZhdGU7CisgICAgY2VsbFJl
bmRlcmVyQ2xhc3MtPnJlbmRlciA9IGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Q2VsbFJlbmRl
cmVyUmVuZGVyOworICAgIGNlbGxSZW5kZXJlckNsYXNzLT5zdGFydF9lZGl0aW5nID0gYnJvd3Nl
ckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVuZGVyZXJTdGFydEVkaXRpbmc7CisgICAgY2VsbFJl
bmRlcmVyQ2xhc3MtPmdldF9wcmVmZXJyZWRfd2lkdGggPSBicm93c2VyQ2VsbFJlbmRlcmVyVmFy
aWFudENlbGxSZW5kZXJlckdldFByZWZlcnJlZFdpZHRoOworICAgIGNlbGxSZW5kZXJlckNsYXNz
LT5nZXRfcHJlZmVycmVkX2hlaWdodCA9IGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Q2VsbFJl
bmRlcmVyR2V0UHJlZmVycmVkSGVpZ2h0OworICAgIGNlbGxSZW5kZXJlckNsYXNzLT5nZXRfcHJl
ZmVycmVkX3dpZHRoX2Zvcl9oZWlnaHQgPSBicm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudENlbGxS
ZW5kZXJlckdldFByZWZlcnJlZFdpZHRoRm9ySGVpZ2h0OworICAgIGNlbGxSZW5kZXJlckNsYXNz
LT5nZXRfcHJlZmVycmVkX2hlaWdodF9mb3Jfd2lkdGggPSBicm93c2VyQ2VsbFJlbmRlcmVyVmFy
aWFudENlbGxSZW5kZXJlckdldFByZWZlcnJlZEhlaWdodEZvcldpZHRoOworICAgIGNlbGxSZW5k
ZXJlckNsYXNzLT5nZXRfYWxpZ25lZF9hcmVhID0gYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRD
ZWxsUmVuZGVyZXJHZXRBbGlnbmVkQXJlYTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxf
cHJvcGVydHkoZ29iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUFJPUF9WQUxVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFy
YW1fc3BlY19ib3hlZCgidmFsdWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBjZWxsIHJlbmRlcmVyIHZhbHVlIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
X1RZUEVfVkFMVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUpKTsKKyAgICBnX29iamVjdF9jbGFzc19pbnN0
YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBST1BfQURKVVNUTUVOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdfcGFyYW1fc3BlY19vYmplY3QoImFkanVzdG1lbnQiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWRqdXN0bWVudCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUg
YWRqdXN0bWVudCB0aGF0IGhvbGRzIHRoZSB2YWx1ZSBvZiB0aGUgc3BpbiBidXR0b24iLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtf
VFlQRV9BREpVU1RNRU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSkpOworCisgICAgc2lnbmFsc1tDSEFO
R0VEXSA9CisgICAgICAgIGdfc2lnbmFsX25ldygiY2hhbmdlZCIsCisgICAgICAgICAgICAgICAg
ICAgICBHX1RZUEVfRlJPTV9DTEFTUyhnb2JqZWN0Q2xhc3MpLAorICAgICAgICAgICAgICAgICAg
ICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICAgICAgICAgICAwLCBOVUxMLCBOVUxM
LAorICAgICAgICAgICAgICAgICAgICAgYnJvd3Nlcl9tYXJzaGFsX1ZPSURfX1NUUklOR19CT1hF
RCwKKyAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAyLAorICAgICAgICAgICAgICAg
ICAgICAgR19UWVBFX1NUUklORywgR19UWVBFX1ZBTFVFKTsKK30KKworR3RrQ2VsbFJlbmRlcmVy
ICpicm93c2VyX2NlbGxfcmVuZGVyZXJfdmFyaWFudF9uZXcodm9pZCkKK3sKKyAgICByZXR1cm4g
R1RLX0NFTExfUkVOREVSRVIoZ19vYmplY3RfbmV3KEJST1dTRVJfVFlQRV9DRUxMX1JFTkRFUkVS
X1ZBUklBTlQsIE5VTEwpKTsKK30KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3Rr
L0Jyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50LmggYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJv
d3NlckNlbGxSZW5kZXJlclZhcmlhbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi40ZmNlM2JiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jy
b3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50LmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEJyb3dzZXJDZWxs
UmVuZGVyZXJWYXJpYW50X2gKKyNkZWZpbmUgQnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRfaAor
CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgQlJPV1NF
Ul9UWVBFX0NFTExfUkVOREVSRVJfVkFSSUFOVCAgICAgICAgICAgIChicm93c2VyX2NlbGxfcmVu
ZGVyZXJfdmFyaWFudF9nZXRfdHlwZSgpKQorI2RlZmluZSBCUk9XU0VSX0NFTExfUkVOREVSRVJf
VkFSSUFOVChvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmop
LCBCUk9XU0VSX1RZUEVfQ0VMTF9SRU5ERVJFUl9WQVJJQU5ULCBCcm93c2VyQ2VsbFJlbmRlcmVy
VmFyaWFudCkpCisjZGVmaW5lIEJST1dTRVJfQ0VMTF9SRU5ERVJFUl9WQVJJQU5UX0NMQVNTKGts
YXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIEJST1dTRVJfVFlQRV9D
RUxMX1JFTkRFUkVSX1ZBUklBTlQsIEJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Q2xhc3MpKQor
I2RlZmluZSBCUk9XU0VSX0lTX0NFTExfUkVOREVSRVJfVkFSSUFOVChvYmopICAgICAgICAgKEdf
VFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBCUk9XU0VSX1RZUEVfQ0VMTF9SRU5ERVJF
Ul9WQVJJQU5UKSkKKyNkZWZpbmUgQlJPV1NFUl9JU19DRUxMX1JFTkRFUkVSX1ZBUklBTlRfQ0xB
U1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgQlJPV1NFUl9UWVBF
X0NFTExfUkVOREVSRVJfVkFSSUFOVCkpCisjZGVmaW5lIEJST1dTRVJfQ0VMTF9SRU5ERVJFUl9W
QVJJQU5UX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwg
IEJST1dTRVJfVFlQRV9DRUxMX1JFTkRFUkVSX1ZBUklBTlQsIEJyb3dzZXJDZWxsUmVuZGVyZXJW
YXJpYW50Q2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfQnJvd3NlckNlbGxSZW5kZXJlclZhcmlh
bnQgICAgICAgIEJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50OwordHlwZWRlZiBzdHJ1Y3QgX0Jy
b3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Q2xhc3MgICBCcm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFu
dENsYXNzOworCitHVHlwZSBicm93c2VyX2NlbGxfcmVuZGVyZXJfdmFyaWFudF9nZXRfdHlwZSh2
b2lkKTsKKworR3RrQ2VsbFJlbmRlcmVyKiBicm93c2VyX2NlbGxfcmVuZGVyZXJfdmFyaWFudF9u
ZXcodm9pZCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWlu
aUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZXR0aW5nc0RpYWxvZy5jIGIvVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL0Jyb3dzZXJTZXR0aW5nc0RpYWxvZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmY3YjUzNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsv
QnJvd3NlclNldHRpbmdzRGlhbG9nLmMKQEAgLTAsMCArMSwxODcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIkJyb3dzZXJTZXR0
aW5nc0RpYWxvZy5oIgorI2luY2x1ZGUgIkJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50LmgiCisK
K2VudW0geworICAgIFBST1BfMCwKKworICAgIFBST1BfU0VUVElOR1MKK307CisKK2VudW0gewor
ICAgIFNFVFRJTkdTX0xJU1RfQ09MVU1OX05BTUUsCisgICAgU0VUVElOR1NfTElTVF9DT0xVTU5f
TklDSywKKyAgICBTRVRUSU5HU19MSVNUX0NPTFVNTl9CTFVSQiwKKyAgICBTRVRUSU5HU19MSVNU
X0NPTFVNTl9WQUxVRSwKKyAgICBTRVRUSU5HU19MSVNUX0NPTFVNTl9BREpVU1RNRU5ULAorCisg
ICAgU0VUVElOR1NfTElTVF9OX0NPTFVNTlMKK307CisKK3N0cnVjdCBfQnJvd3NlclNldHRpbmdz
RGlhbG9nIHsKKyAgICBHdGtEaWFsb2cgcGFyZW50OworCisgICAgR3RrV2lkZ2V0ICpzZXR0aW5n
c0xpc3Q7CisgICAgV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzOworfTsKKworc3RydWN0IF9Ccm93
c2VyU2V0dGluZ3NEaWFsb2dDbGFzcyB7CisgICAgR3RrRGlhbG9nQ2xhc3MgcGFyZW50OworfTsK
KworR19ERUZJTkVfVFlQRShCcm93c2VyU2V0dGluZ3NEaWFsb2csIGJyb3dzZXJfc2V0dGluZ3Nf
ZGlhbG9nLCBHVEtfVFlQRV9ESUFMT0cpCisKK3N0YXRpYyB2b2lkIGNlbGxSZW5kZXJlckNoYW5n
ZWQoR3RrQ2VsbFJlbmRlcmVyICpyZW5kZXJlciwgY29uc3QgY2hhciAqcGF0aCwgY29uc3QgR1Zh
bHVlICp2YWx1ZSwgQnJvd3NlclNldHRpbmdzRGlhbG9nICpkaWFsb2cpCit7CisgICAgR3RrVHJl
ZU1vZGVsICptb2RlbCA9IGd0a190cmVlX3ZpZXdfZ2V0X21vZGVsKEdUS19UUkVFX1ZJRVcoZGlh
bG9nLT5zZXR0aW5nc0xpc3QpKTsKKyAgICBHdGtUcmVlUGF0aCAqdHJlZVBhdGggPSBndGtfdHJl
ZV9wYXRoX25ld19mcm9tX3N0cmluZyhwYXRoKTsKKyAgICBHdGtUcmVlSXRlciBpdGVyOworICAg
IGd0a190cmVlX21vZGVsX2dldF9pdGVyKG1vZGVsLCAmaXRlciwgdHJlZVBhdGgpOworCisgICAg
Y2hhciAqbmFtZTsKKyAgICBndGtfdHJlZV9tb2RlbF9nZXQobW9kZWwsICZpdGVyLCBTRVRUSU5H
U19MSVNUX0NPTFVNTl9OQU1FLCAmbmFtZSwgLTEpOworICAgIGdfb2JqZWN0X3NldF9wcm9wZXJ0
eShHX09CSkVDVChkaWFsb2ctPnNldHRpbmdzKSwgbmFtZSwgdmFsdWUpOworICAgIGdfZnJlZShu
YW1lKTsKKworICAgIGd0a19saXN0X3N0b3JlX3NldChHVEtfTElTVF9TVE9SRShtb2RlbCksICZp
dGVyLCBTRVRUSU5HU19MSVNUX0NPTFVNTl9WQUxVRSwgdmFsdWUsIC0xKTsKKyAgICBndGtfdHJl
ZV9wYXRoX2ZyZWUodHJlZVBhdGgpOworfQorCitzdGF0aWMgdm9pZCBicm93c2VyU2V0dGluZ3NE
aWFsb2dTZXRQcm9wZXJ0eShHT2JqZWN0ICpvYmplY3QsIGd1aW50IHByb3BJZCwgY29uc3QgR1Zh
bHVlICp2YWx1ZSwgR1BhcmFtU3BlYyAqcHNwZWMpCit7CisgICAgQnJvd3NlclNldHRpbmdzRGlh
bG9nICpkaWFsb2cgPSBCUk9XU0VSX1NFVFRJTkdTX0RJQUxPRyhvYmplY3QpOworCisgICAgc3dp
dGNoIChwcm9wSWQpIHsKKyAgICBjYXNlIFBST1BfU0VUVElOR1M6CisgICAgICAgIGRpYWxvZy0+
c2V0dGluZ3MgPSBnX3ZhbHVlX2dldF9vYmplY3QodmFsdWUpOworICAgICAgICBicmVhazsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2Jq
ZWN0LCBwcm9wSWQsIHBzcGVjKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGJyb3dzZXJfc2V0
dGluZ3NfZGlhbG9nX2luaXQoQnJvd3NlclNldHRpbmdzRGlhbG9nICpkaWFsb2cpCit7CisgICAg
R3RrQm94ICpjb250ZW50QXJlYSA9IEdUS19CT1goZ3RrX2RpYWxvZ19nZXRfY29udGVudF9hcmVh
KEdUS19ESUFMT0coZGlhbG9nKSkpOworICAgIGd0a19ib3hfc2V0X3NwYWNpbmcoY29udGVudEFy
ZWEsIDIpOworCisgICAgZ3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdUS19XSU5ET1coZGlh
bG9nKSwgNDAwLCAzMDApOworICAgIGd0a193aW5kb3dfc2V0X3RpdGxlKEdUS19XSU5ET1coZGlh
bG9nKSwgIldlYktpdCBWaWV3IFNldHRpbmdzIik7CisgICAgZ3RrX3dpbmRvd19zZXRfZGVzdHJv
eV93aXRoX3BhcmVudChHVEtfV0lORE9XKGRpYWxvZyksIFRSVUUpOworICAgIGd0a19jb250YWlu
ZXJfc2V0X2JvcmRlcl93aWR0aChHVEtfQ09OVEFJTkVSKGRpYWxvZyksIDUpOworICAgIGd0a19k
aWFsb2dfYWRkX2J1dHRvbihHVEtfRElBTE9HKGRpYWxvZyksIEdUS19TVE9DS19DTE9TRSwgR1RL
X1JFU1BPTlNFX0NMT1NFKTsKKyAgICBndGtfZGlhbG9nX3NldF9kZWZhdWx0X3Jlc3BvbnNlKEdU
S19ESUFMT0coZGlhbG9nKSwgR1RLX1JFU1BPTlNFX0NMT1NFKTsKKworICAgIEd0a1dpZGdldCAq
c2Nyb2xsZWRXaW5kb3cgPSBndGtfc2Nyb2xsZWRfd2luZG93X25ldyhOVUxMLCBOVUxMKTsKKyAg
ICBkaWFsb2ctPnNldHRpbmdzTGlzdCA9IGd0a190cmVlX3ZpZXdfbmV3KCk7CisgICAgR3RrQ2Vs
bFJlbmRlcmVyICpyZW5kZXJlciA9IGd0a19jZWxsX3JlbmRlcmVyX3RleHRfbmV3KCk7CisgICAg
Z3RrX3RyZWVfdmlld19pbnNlcnRfY29sdW1uX3dpdGhfYXR0cmlidXRlcyhHVEtfVFJFRV9WSUVX
KGRpYWxvZy0+c2V0dGluZ3NMaXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAsICJOYW1lIiwgcmVuZGVyZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGV4dCIsIFNFVFRJTkdTX0xJU1RfQ09MVU1O
X05JQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
VUxMKTsKKyAgICByZW5kZXJlciA9IGJyb3dzZXJfY2VsbF9yZW5kZXJlcl92YXJpYW50X25ldygp
OworICAgIGdfc2lnbmFsX2Nvbm5lY3QocmVuZGVyZXIsICJjaGFuZ2VkIiwgR19DQUxMQkFDSyhj
ZWxsUmVuZGVyZXJDaGFuZ2VkKSwgZGlhbG9nKTsKKyAgICBndGtfdHJlZV92aWV3X2luc2VydF9j
b2x1bW5fd2l0aF9hdHRyaWJ1dGVzKEdUS19UUkVFX1ZJRVcoZGlhbG9nLT5zZXR0aW5nc0xpc3Qp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgIlZh
bHVlIiwgcmVuZGVyZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAidmFsdWUiLCBTRVRUSU5HU19MSVNUX0NPTFVNTl9WQUxVRSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhZGp1c3RtZW50IiwgU0VUVElO
R1NfTElTVF9DT0xVTU5fQURKVVNUTUVOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIGd0a190cmVlX3ZpZXdfc2V0X3Rvb2x0aXBf
Y29sdW1uKEdUS19UUkVFX1ZJRVcoZGlhbG9nLT5zZXR0aW5nc0xpc3QpLCBTRVRUSU5HU19MSVNU
X0NPTFVNTl9CTFVSQik7CisKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHNj
cm9sbGVkV2luZG93KSwgZGlhbG9nLT5zZXR0aW5nc0xpc3QpOworICAgIGd0a193aWRnZXRfc2hv
dyhkaWFsb2ctPnNldHRpbmdzTGlzdCk7CisKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoY29udGVu
dEFyZWEsIHNjcm9sbGVkV2luZG93LCBUUlVFLCBUUlVFLCAwKTsKKyAgICBndGtfd2lkZ2V0X3No
b3coc2Nyb2xsZWRXaW5kb3cpOworCisgICAgZ19zaWduYWxfY29ubmVjdChkaWFsb2csICJyZXNw
b25zZSIsIEdfQ0FMTEJBQ0soZ3RrX3dpZGdldF9kZXN0cm95KSwgTlVMTCk7Cit9CisKK3N0YXRp
YyB2b2lkIGJyb3dzZXJTZXR0aW5nc0RpYWxvZ0NvbnN0cnVjdGVkKEdPYmplY3QgKm9iamVjdCkK
K3sKKyAgICBCcm93c2VyU2V0dGluZ3NEaWFsb2cgKmRpYWxvZyA9IEJST1dTRVJfU0VUVElOR1Nf
RElBTE9HKG9iamVjdCk7CisgICAgV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdzID0gZGlhbG9nLT5z
ZXR0aW5nczsKKyAgICBHdGtMaXN0U3RvcmUgKm1vZGVsID0gZ3RrX2xpc3Rfc3RvcmVfbmV3KFNF
VFRJTkdTX0xJU1RfTl9DT0xVTU5TLCBHX1RZUEVfU1RSSU5HLCBHX1RZUEVfU1RSSU5HLCBHX1RZ
UEVfU1RSSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R19UWVBFX1ZBTFVFLCBHX1RZUEVfT0JKRUNUKTsKKyAgICBndWludCBwcm9wZXJ0aWVzQ291bnQ7
CisgICAgR1BhcmFtU3BlYyAqKnByb3BlcnRpZXMgPSBnX29iamVjdF9jbGFzc19saXN0X3Byb3Bl
cnRpZXMoR19PQkpFQ1RfR0VUX0NMQVNTKHNldHRpbmdzKSwgJnByb3BlcnRpZXNDb3VudCk7Cisg
ICAgZ3VpbnQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgcHJvcGVydGllc0NvdW50OyBpKyspIHsK
KyAgICAgICAgR1BhcmFtU3BlYyAqcHJvcGVydHkgPSBwcm9wZXJ0aWVzW2ldOworICAgICAgICBj
b25zdCBjaGFyICpuYW1lID0gZ19wYXJhbV9zcGVjX2dldF9uYW1lKHByb3BlcnR5KTsKKyAgICAg
ICAgY29uc3QgY2hhciAqbmljayA9IGdfcGFyYW1fc3BlY19nZXRfbmljayhwcm9wZXJ0eSk7CisK
KyAgICAgICAgR1ZhbHVlIHZhbHVlID0geyAwLCB7IHsgMCB9IH0gfTsKKyAgICAgICAgZ192YWx1
ZV9pbml0KCZ2YWx1ZSwgR19QQVJBTV9TUEVDX1ZBTFVFX1RZUEUocHJvcGVydHkpKTsKKyAgICAg
ICAgZ19vYmplY3RfZ2V0X3Byb3BlcnR5KEdfT0JKRUNUKHNldHRpbmdzKSwgbmFtZSwgJnZhbHVl
KTsKKworICAgICAgICBHdGtBZGp1c3RtZW50ICphZGp1c3RtZW50ID0gTlVMTDsKKyAgICAgICAg
aWYgKEdfUEFSQU1fU1BFQ19WQUxVRV9UWVBFKHByb3BlcnR5KSA9PSBHX1RZUEVfVUlOVCkgewor
ICAgICAgICAgICAgR1BhcmFtU3BlY1VJbnQgKnVJbnRQcm9wZXJ0eSA9IEdfUEFSQU1fU1BFQ19V
SU5UKHByb3BlcnR5KTsKKyAgICAgICAgICAgIGFkanVzdG1lbnQgPSBndGtfYWRqdXN0bWVudF9u
ZXcodUludFByb3BlcnR5LT5kZWZhdWx0X3ZhbHVlLCB1SW50UHJvcGVydHktPm1pbmltdW0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVJbnRQcm9wZXJ0eS0+
bWF4aW11bSwgMSwgMSwgMSk7CisgICAgICAgIH0KKworICAgICAgICBHdGtUcmVlSXRlciBpdGVy
OworICAgICAgICBndGtfbGlzdF9zdG9yZV9hcHBlbmQobW9kZWwsICZpdGVyKTsKKyAgICAgICAg
Z3RrX2xpc3Rfc3RvcmVfc2V0KG1vZGVsLCAmaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNFVFRJTkdTX0xJU1RfQ09MVU1OX05BTUUsIG5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTRVRUSU5HU19MSVNUX0NPTFVNTl9OSUNLLCBuaWNrLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU0VUVElOR1NfTElTVF9DT0xVTU5fQkxVUkIsIGdfcGFyYW1fc3BlY19nZXRf
Ymx1cmIocHJvcGVydHkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VUVElOR1NfTElT
VF9DT0xVTU5fVkFMVUUsICZ2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFVFRJ
TkdTX0xJU1RfQ09MVU1OX0FESlVTVE1FTlQsIGFkanVzdG1lbnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAtMSk7CisgICAgICAgIGdfdmFsdWVfdW5zZXQoJnZhbHVlKTsKKyAgICB9CisK
KyAgICBndGtfdHJlZV92aWV3X3NldF9tb2RlbChHVEtfVFJFRV9WSUVXKGRpYWxvZy0+c2V0dGlu
Z3NMaXN0KSwgR1RLX1RSRUVfTU9ERUwobW9kZWwpKTsKKyAgICBnX29iamVjdF91bnJlZihtb2Rl
bCk7Cit9CisKK3N0YXRpYyB2b2lkIGJyb3dzZXJfc2V0dGluZ3NfZGlhbG9nX2NsYXNzX2luaXQo
QnJvd3NlclNldHRpbmdzRGlhbG9nQ2xhc3MgKmtsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyAq
Z29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworCisgICAgZ29iamVjdENsYXNz
LT5jb25zdHJ1Y3RlZCA9IGJyb3dzZXJTZXR0aW5nc0RpYWxvZ0NvbnN0cnVjdGVkOworICAgIGdv
YmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gYnJvd3NlclNldHRpbmdzRGlhbG9nU2V0UHJvcGVy
dHk7CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfU0VUVElOR1MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KCJzZXR0
aW5ncyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJTZXR0aW5ncyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJUaGUgV2ViS2l0U2V0dGluZ3MiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9TRVRU
SU5HUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR19QQVJBTV9XUklUQUJMRSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKTsKK30KKwor
R3RrV2lkZ2V0ICpicm93c2VyX3NldHRpbmdzX2RpYWxvZ19uZXcoV2ViS2l0U2V0dGluZ3MgKnNl
dHRpbmdzKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhz
ZXR0aW5ncyksIE5VTEwpOworCisgICAgcmV0dXJuIEdUS19XSURHRVQoZ19vYmplY3RfbmV3KEJS
T1dTRVJfVFlQRV9TRVRUSU5HU19ESUFMT0csICJzZXR0aW5ncyIsIHNldHRpbmdzLCBOVUxMKSk7
Cit9CisKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyU2V0dGluZ3NE
aWFsb2cuaCBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyU2V0dGluZ3NEaWFsb2cuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2RiY2QwCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZXR0aW5nc0RpYWxvZy5oCkBAIC0w
LDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBCcm93c2VyU2V0dGluZ3NEaWFsb2dfaAorI2RlZmluZSBCcm93c2VyU2V0
dGluZ3NEaWFsb2dfaAorCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHdlYmtpdDIv
d2Via2l0Mi5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgQlJPV1NFUl9UWVBFX1NFVFRJ
TkdTX0RJQUxPRyAgICAgICAgICAgIChicm93c2VyX3NldHRpbmdzX2RpYWxvZ19nZXRfdHlwZSgp
KQorI2RlZmluZSBCUk9XU0VSX1NFVFRJTkdTX0RJQUxPRyhvYmopICAgICAgICAgICAgKEdfVFlQ
RV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBCUk9XU0VSX1RZUEVfU0VUVElOR1NfRElBTE9H
LCBCcm93c2VyU2V0dGluZ3NEaWFsb2cpKQorI2RlZmluZSBCUk9XU0VSX1NFVFRJTkdTX0RJQUxP
R19DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBCUk9X
U0VSX1RZUEVfU0VUVElOR1NfRElBTE9HLCBCcm93c2VyU2V0dGluZ3NEaWFsb2dDbGFzcykpCisj
ZGVmaW5lIEJST1dTRVJfSVNfU0VUVElOR1NfRElBTE9HKG9iaikgICAgICAgICAoR19UWVBFX0NI
RUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIEJST1dTRVJfVFlQRV9TRVRUSU5HU19ESUFMT0cpKQor
I2RlZmluZSBCUk9XU0VSX0lTX1NFVFRJTkdTX0RJQUxPR19DTEFTUyhrbGFzcykgKEdfVFlQRV9D
SEVDS19DTEFTU19UWVBFKChrbGFzcyksICBCUk9XU0VSX1RZUEVfU0VUVElOR1NfRElBTE9HKSkK
KyNkZWZpbmUgQlJPV1NFUl9TRVRUSU5HU19ESUFMT0dfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVf
SU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgQlJPV1NFUl9UWVBFX1NFVFRJTkdTX0RJQUxPRywg
QnJvd3NlclNldHRpbmdzRGlhbG9nQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfQnJvd3NlclNl
dHRpbmdzRGlhbG9nICAgICAgICBCcm93c2VyU2V0dGluZ3NEaWFsb2c7Cit0eXBlZGVmIHN0cnVj
dCBfQnJvd3NlclNldHRpbmdzRGlhbG9nQ2xhc3MgICBCcm93c2VyU2V0dGluZ3NEaWFsb2dDbGFz
czsKKworR1R5cGUgYnJvd3Nlcl9zZXR0aW5nc19kaWFsb2dfZ2V0X3R5cGUodm9pZCk7CisKK0d0
a1dpZGdldCogYnJvd3Nlcl9zZXR0aW5nc19kaWFsb2dfbmV3KFdlYktpdFNldHRpbmdzICpzZXR0
aW5ncyk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJy
b3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2Vy
V2luZG93LmMKaW5kZXggZWEyZGE2Ni4uNjg4ZTc5YiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJy
b3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJv
d3NlcldpbmRvdy5jCkBAIC0yNiw2ICsyNiw3IEBACiAgKi8KIAogI2luY2x1ZGUgIkJyb3dzZXJX
aW5kb3cuaCIKKyNpbmNsdWRlICJCcm93c2VyU2V0dGluZ3NEaWFsb2cuaCIKIAogZW51bSB7CiAg
ICAgUFJPUF8wLApAQCAtNDIsNiArNDMsNyBAQCBzdHJ1Y3QgX0Jyb3dzZXJXaW5kb3cgewogICAg
IEd0a1dpZGdldCAqYmFja0l0ZW07CiAgICAgR3RrV2lkZ2V0ICpmb3J3YXJkSXRlbTsKICAgICBH
dGtXaWRnZXQgKnN0YXR1c0xhYmVsOworICAgIEd0a1dpZGdldCAqc2V0dGluZ3NEaWFsb2c7CiAg
ICAgV2ViS2l0V2ViVmlldyAqd2ViVmlldzsKIAogfTsKQEAgLTgzLDYgKzg1LDE5IEBAIHN0YXRp
YyB2b2lkIGdvRm9yd2FyZENhbGxiYWNrKEJyb3dzZXJXaW5kb3cgKndpbmRvdykKICAgICB3ZWJr
aXRfd2ViX3ZpZXdfZ29fZm9yd2FyZCh3aW5kb3ctPndlYlZpZXcpOwogfQogCitzdGF0aWMgdm9p
ZCBzZXR0aW5nc0NhbGxiYWNrKEJyb3dzZXJXaW5kb3cgKndpbmRvdykKK3sKKyAgICBpZiAod2lu
ZG93LT5zZXR0aW5nc0RpYWxvZykgeworICAgICAgICBndGtfd2luZG93X3ByZXNlbnQoR1RLX1dJ
TkRPVyh3aW5kb3ctPnNldHRpbmdzRGlhbG9nKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICB3aW5kb3ctPnNldHRpbmdzRGlhbG9nID0gYnJvd3Nlcl9zZXR0aW5nc19kaWFsb2dfbmV3
KHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2luZG93LT53ZWJWaWV3KSk7CisgICAgZ3Rr
X3dpbmRvd19zZXRfdHJhbnNpZW50X2ZvcihHVEtfV0lORE9XKHdpbmRvdy0+c2V0dGluZ3NEaWFs
b2cpLCBHVEtfV0lORE9XKHdpbmRvdykpOworICAgIGdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIo
R19PQkpFQ1Qod2luZG93LT5zZXR0aW5nc0RpYWxvZyksIChncG9pbnRlciAqKSZ3aW5kb3ctPnNl
dHRpbmdzRGlhbG9nKTsKKyAgICBndGtfd2lkZ2V0X3Nob3cod2luZG93LT5zZXR0aW5nc0RpYWxv
Zyk7Cit9CisKIHN0YXRpYyB2b2lkIHdlYlZpZXdVUklDaGFuZ2VkKFdlYktpdFdlYlZpZXcgKndl
YlZpZXcsIEdQYXJhbVNwZWMgKnBzcGVjLCBCcm93c2VyV2luZG93ICp3aW5kb3cpCiB7CiAgICAg
Z3RrX2VudHJ5X3NldF90ZXh0KEdUS19FTlRSWSh3aW5kb3ctPnVyaUVudHJ5KSwgd2Via2l0X3dl
Yl92aWV3X2dldF91cmkod2ViVmlldykpOwpAQCAtMjc3LDYgKzI5MiwxMSBAQCBzdGF0aWMgdm9p
ZCBicm93c2VyX3dpbmRvd19pbml0KEJyb3dzZXJXaW5kb3cgKndpbmRvdykKICAgICBndGtfdG9v
bGJhcl9pbnNlcnQoR1RLX1RPT0xCQVIodG9vbGJhciksIGl0ZW0sIC0xKTsKICAgICBndGtfd2lk
Z2V0X3Nob3coR1RLX1dJREdFVChpdGVtKSk7CiAKKyAgICBpdGVtID0gZ3RrX3Rvb2xfYnV0dG9u
X25ld19mcm9tX3N0b2NrKEdUS19TVE9DS19QUkVGRVJFTkNFUyk7CisgICAgZ19zaWduYWxfY29u
bmVjdF9zd2FwcGVkKEdfT0JKRUNUKGl0ZW0pLCAiY2xpY2tlZCIsIEdfQ0FMTEJBQ0soc2V0dGlu
Z3NDYWxsYmFjayksIHdpbmRvdyk7CisgICAgZ3RrX3Rvb2xiYXJfaW5zZXJ0KEdUS19UT09MQkFS
KHRvb2xiYXIpLCBpdGVtLCAtMSk7CisgICAgZ3RrX3dpZGdldF9zaG93KEdUS19XSURHRVQoaXRl
bSkpOworCiAgICAgaXRlbSA9IGd0a190b29sX2l0ZW1fbmV3KCk7CiAgICAgZ3RrX3Rvb2xfaXRl
bV9zZXRfZXhwYW5kKGl0ZW0sIFRSVUUpOwogICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05U
QUlORVIoaXRlbSksIHdpbmRvdy0+dXJpRW50cnkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJy
b3dzZXIvZ3RrL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0dOVW1ha2Vm
aWxlLmFtCmluZGV4IGUzMmExNmQuLmNmMzk5NGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93
c2VyL2d0ay9HTlVtYWtlZmlsZS5hbQorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvR05VbWFr
ZWZpbGUuYW0KQEAgLTEsOCArMSwxMyBAQAogbm9pbnN0X1BST0dSQU1TICs9IFwKIAlQcm9ncmFt
cy9NaW5pQnJvd3NlcgogCittaW5pYnJvd3Nlcl9idWlsdF9zb3VyY2VzICs9IFwKKwlEZXJpdmVk
U291cmNlcy9XZWJLaXQyL0Jyb3dzZXJNYXJzaGFsLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYktp
dDIvQnJvd3Nlck1hcnNoYWwuYworCiBQcm9ncmFtc19NaW5pQnJvd3Nlcl9DUFBGTEFHUyA9IFwK
IAktSSQoc3JjZGlyKS9Tb3VyY2UgXAorCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIgXAogCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvd2Vi
a2l0Mmd0ayBcCiAJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi93ZWJr
aXQyZ3RrL2luY2x1ZGUgXAogCS1EV0VCS0lUX0VYRUNfUEFUSD1cIiR7c2hlbGwgcHdkfS8kKHRv
cF9idWlsZGRpcikvUHJvZ3JhbXMvXCIgXApAQCAtMTEsNiArMTYsMTEgQEAgUHJvZ3JhbXNfTWlu
aUJyb3dzZXJfQ1BQRkxBR1MgPSBcCiAJJChHVEtfQ0ZMQUdTKQogCiBQcm9ncmFtc19NaW5pQnJv
d3Nlcl9TT1VSQ0VTID0gXAorCSQobWluaWJyb3dzZXJfYnVpbHRfc291cmNlcykgXAorCVRvb2xz
L01pbmlCcm93c2VyL2d0ay9Ccm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudC5oIFwKKwlUb29scy9N
aW5pQnJvd3Nlci9ndGsvQnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnQuYyBcCisJVG9vbHMvTWlu
aUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZXR0aW5nc0RpYWxvZy5oIFwKKwlUb29scy9NaW5pQnJvd3Nl
ci9ndGsvQnJvd3NlclNldHRpbmdzRGlhbG9nLmMgXAogCVRvb2xzL01pbmlCcm93c2VyL2d0ay9C
cm93c2VyV2luZG93LmggXAogCVRvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMg
XAogCVRvb2xzL01pbmlCcm93c2VyL2d0ay9tYWluLmMKQEAgLTI1LDUgKzM1LDI3IEBAIFByb2dy
YW1zX01pbmlCcm93c2VyX0xERkxBR1MgPSBcCiAJLW5vLWluc3RhbGwKIAogQ0xFQU5GSUxFUyAr
PSBcCi0JJCh0b3BfYnVpbGRkaXIpL1Byb2dyYW1zL01pbmlCcm93c2VyCisJJCh0b3BfYnVpbGRk
aXIpL1Byb2dyYW1zL01pbmlCcm93c2VyIFwKKwkkKG1pbmlicm93c2VyX2J1aWx0X3NvdXJjZXMp
IFwKKwkkKHRvcF9idWlsZGRpcikvc3RhbXAtbWluaS1icm93c2VyLW1hcnNoYWwuaCBcCisJJCh0
b3BfYnVpbGRkaXIpL3N0YW1wLW1pbmktYnJvd3Nlci1tYXJzaGFsLmMKKworQlVJTFRfU09VUkNF
UyArPSAkKG1pbmlicm93c2VyX2J1aWx0X3NvdXJjZXMpCisKK21pbmlicm93c2VyX21hcnNoYWxf
bGlzdCA9ICQoc3JjZGlyKS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvYnJvd3Nlci1tYXJzaGFsLmxp
c3QKKworJChHRU5TT1VSQ0VTX1dFQktJVDIpL0Jyb3dzZXJNYXJzaGFsLmg6IHN0YW1wLW1pbmkt
YnJvd3Nlci1tYXJzaGFsLmgKKwlAdHJ1ZQorJChHRU5TT1VSQ0VTX1dFQktJVDIpL0Jyb3dzZXJN
YXJzaGFsLmM6IHN0YW1wLW1pbmktYnJvd3Nlci1tYXJzaGFsLmMKKwlAdHJ1ZQorCitzdGFtcC1t
aW5pLWJyb3dzZXItbWFyc2hhbC5jOiAkKG1pbmlicm93c2VyX21hcnNoYWxfbGlzdCkKKwkkKEFN
X1ZfR0VOKSQoR0xJQl9HRU5NQVJTSEFMKSAtLXByZWZpeD1icm93c2VyX21hcnNoYWwgJChtaW5p
YnJvd3Nlcl9tYXJzaGFsX2xpc3QpIC0tYm9keSA+ICQoR0VOU09VUkNFU19XRUJLSVQyKS9Ccm93
c2VyTWFyc2hhbC5jICYmIFwKKwllY2hvIHRpbWVzdGFtcCA+ICQoQEYpCisKK3N0YW1wLW1pbmkt
YnJvd3Nlci1tYXJzaGFsLmg6ICQoTWluaUJyb3dzZXJfbWFyc2hhbF9saXN0KQorCSQoQU1fVl9H
RU4pJChHTElCX0dFTk1BUlNIQUwpIC0tcHJlZml4PWJyb3dzZXJfbWFyc2hhbCAkKG1pbmlicm93
c2VyX21hcnNoYWxfbGlzdCkgLS1oZWFkZXIgPiAkKEdFTlNPVVJDRVNfV0VCS0lUMikvQnJvd3Nl
ck1hcnNoYWwuaCAmJiBcCisJZWNobyB0aW1lc3RhbXAgPiAkKEBGKQogCitFWFRSQV9ESVNUICs9
IFwKKwkkKG1pbmlicm93c2VyX21hcnNoYWxfbGlzdCkKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlC
cm93c2VyL2d0ay9icm93c2VyLW1hcnNoYWwubGlzdCBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9i
cm93c2VyLW1hcnNoYWwubGlzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5l
NzJhYTRiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL2Jyb3dzZXIt
bWFyc2hhbC5saXN0CkBAIC0wLDAgKzEgQEAKK1ZPSUQ6U1RSSU5HLEJPWEVECg==
</data>
<flag name="review"
          id="121214"
          type_id="1"
          status="+"
          setter="pnormand"
    />
          </attachment>
      

    </bug>

</bugzilla>