<?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>63060</bug_id>
          
          <creation_ts>2011-06-21 03:12:00 -0700</creation_ts>
          <short_desc>[GTK] Use GOption to parse main arguments in GtkLauncher</short_desc>
          <delta_ts>2011-06-22 08:32:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</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></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>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>424364</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-06-21 03:12:00 -0700</bug_when>
    <thetext>Now that we are using GOption for the websettings options, we could use it also for the main arguments. It will make easier to support passing more than one uri from the command line like MiniBrowser does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424367</commentid>
    <comment_count>1</comment_count>
      <attachid>97956</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-06-21 03:25:06 -0700</bug_when>
    <thetext>Created attachment 97956
Patch

It also simplifies and improves a bit the code to parse the websettings arguments, see changelog for more details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424459</commentid>
    <comment_count>2</comment_count>
      <attachid>97956</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-06-21 08:14:24 -0700</bug_when>
    <thetext>Comment on attachment 97956
Patch

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

This approach seems to be more code, but I prefer it since it has much better error handling. Thanks for the cleanup. I&apos;ve just a few small quibbles below.

&gt; Tools/GtkLauncher/main.c:38
&gt; +#ifndef WEBKIT2
&gt; +static WebKitWebSettings *webkitSettings = 0;
&gt; +#endif

I dislike the use of a global here. This could simply be defined in main and passed as a double pointer to addWebSettingsGroupToContext.

&gt; Tools/GtkLauncher/main.c:252
&gt; +        g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_FAILED,
&gt; +                    &quot;Invalid option %s&quot;, optionNameFull);

This can be one line, as it&apos;s less than 120 characters.

&gt; Tools/GtkLauncher/main.c:261
&gt; +        g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_FAILED,
&gt; +                    &quot;Cannot find web settings for option %s&quot;, optionNameFull);

Ditto.

&gt; Tools/GtkLauncher/main.c:265
&gt; +    /* Parse argument */

Can omit this comment entirely.

&gt; Tools/GtkLauncher/main.c:273
&gt; +    }
&gt; +        break;

Why leave the break outside the block?

&gt; Tools/GtkLauncher/main.c:285
&gt; +            g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE,
&gt; +                        &quot;Integer value &apos;%s&apos; for %s out of range&quot;, value, optionNameFull);

No need to break.

&gt; Tools/GtkLauncher/main.c:290
&gt; +            g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE,
&gt; +                        &quot;Cannot parse integer value &apos;%s&apos; for %s&quot;, value, optionNameFull);

Ditto.

&gt; Tools/GtkLauncher/main.c:295
&gt; +    }
&gt; +        break;

Again the break is outside the block. Does C require this?

&gt; Tools/GtkLauncher/main.c:304
&gt; +            g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE,
&gt; +                        &quot;Float value &apos;%s&apos; for %s out of range&quot;, value, optionNameFull);

Could be one line if less than 120 characters.

&gt; Tools/GtkLauncher/main.c:314
&gt; +    }
&gt; +        break;

Same as above.

&gt; Tools/GtkLauncher/main.c:391
&gt; +static const GOptionEntry commandLineOptions[] =
&gt; +{
&gt; +    { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &amp;uriArguments, 0, &quot;[URL]&quot; },
&gt; +    { 0, 0, 0, 0, 0, 0, 0 }
&gt; +};

Could this be moved inside main as well to avoid having to make uriArguments a global?

&gt; Tools/GtkLauncher/main.c:402
&gt; +    GOptionContext *context = g_option_context_new(NULL);

NULL -&gt; 0 here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424473</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-06-21 08:41:03 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 97956 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=97956&amp;action=review
&gt; 
&gt; This approach seems to be more code, but I prefer it since it has much better error handling. Thanks for the cleanup. I&apos;ve just a few small quibbles below.

Thanks for reviewing.

&gt; &gt; Tools/GtkLauncher/main.c:38
&gt; &gt; +#ifndef WEBKIT2
&gt; &gt; +static WebKitWebSettings *webkitSettings = 0;
&gt; &gt; +#endif
&gt; 
&gt; I dislike the use of a global here. This could simply be defined in main and passed as a double pointer to addWebSettingsGroupToContext.

That&apos;s the usual way of using GOption, I&apos;ll try to use a local variable. 

&gt; &gt; Tools/GtkLauncher/main.c:252
&gt; &gt; +        g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_FAILED,
&gt; &gt; +                    &quot;Invalid option %s&quot;, optionNameFull);
&gt; 
&gt; This can be one line, as it&apos;s less than 120 characters.

Ok.

&gt; &gt; Tools/GtkLauncher/main.c:261
&gt; &gt; +        g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_FAILED,
&gt; &gt; +                    &quot;Cannot find web settings for option %s&quot;, optionNameFull);
&gt; 
&gt; Ditto.

Ok.

&gt; &gt; Tools/GtkLauncher/main.c:265
&gt; &gt; +    /* Parse argument */
&gt; 
&gt; Can omit this comment entirely.

Ok.

&gt; &gt; Tools/GtkLauncher/main.c:273
&gt; &gt; +    }
&gt; &gt; +        break;
&gt; 
&gt; Why leave the break outside the block?

No reason, I&apos;m simply used to do that, but for no particular reason.

&gt; &gt; Tools/GtkLauncher/main.c:285
&gt; &gt; +            g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE,
&gt; &gt; +                        &quot;Integer value &apos;%s&apos; for %s out of range&quot;, value, optionNameFull);
&gt; 
&gt; No need to break.

Ok.

&gt; &gt; Tools/GtkLauncher/main.c:290
&gt; &gt; +            g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE,
&gt; &gt; +                        &quot;Cannot parse integer value &apos;%s&apos; for %s&quot;, value, optionNameFull);
&gt; 
&gt; Ditto.

Ok.

&gt; &gt; Tools/GtkLauncher/main.c:295
&gt; &gt; +    }
&gt; &gt; +        break;
&gt; 
&gt; Again the break is outside the block. Does C require this?

No, I&apos;ll move it inside.

&gt; &gt; Tools/GtkLauncher/main.c:304
&gt; &gt; +            g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE,
&gt; &gt; +                        &quot;Float value &apos;%s&apos; for %s out of range&quot;, value, optionNameFull);
&gt; 
&gt; Could be one line if less than 120 characters.

Ok.

&gt; &gt; Tools/GtkLauncher/main.c:314
&gt; &gt; +    }
&gt; &gt; +        break;
&gt; 
&gt; Same as above.
&gt; 
&gt; &gt; Tools/GtkLauncher/main.c:391
&gt; &gt; +static const GOptionEntry commandLineOptions[] =
&gt; &gt; +{
&gt; &gt; +    { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &amp;uriArguments, 0, &quot;[URL]&quot; },
&gt; &gt; +    { 0, 0, 0, 0, 0, 0, 0 }
&gt; &gt; +};
&gt; 
&gt; Could this be moved inside main as well to avoid having to make uriArguments a global?

Yes, I guess.

&gt; &gt; Tools/GtkLauncher/main.c:402
&gt; &gt; +    GOptionContext *context = g_option_context_new(NULL);
&gt; 
&gt; NULL -&gt; 0 here.

Ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425113</commentid>
    <comment_count>4</comment_count>
      <attachid>98144</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-06-22 03:03:20 -0700</bug_when>
    <thetext>Created attachment 98144
Updated patch according to review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425225</commentid>
    <comment_count>5</comment_count>
      <attachid>98144</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-06-22 07:49:36 -0700</bug_when>
    <thetext>Comment on attachment 98144
Updated patch according to review

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

Great stuff. it doesn&apos;t seem like settings will &quot;stick&quot; for other WebViews opened unfortunatelyi. I guess we can fix that in a followup patch since it&apos;s sort of unrelated to this.

&gt; Tools/GtkLauncher/main.c:379
&gt; +    static WebKitWebSettings *webkitSettings = 0;
&gt; +#endif
&gt; +    static const gchar **uriArguments = 0;
&gt; +    static const GOptionEntry commandLineOptions[] =

If I&apos;m not mistaken these do not have to be static. Please check before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425253</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-06-22 08:28:12 -0700</bug_when>
    <thetext>Committed r89432: &lt;http://trac.webkit.org/changeset/89432&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425256</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-06-22 08:32:20 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 98144 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=98144&amp;action=review
&gt; 
&gt; Great stuff. it doesn&apos;t seem like settings will &quot;stick&quot; for other WebViews opened unfortunatelyi. I guess we can fix that in a followup patch since it&apos;s sort of unrelated to this.

https://bugs.webkit.org/show_bug.cgi?id=63142

&gt; &gt; Tools/GtkLauncher/main.c:379
&gt; &gt; +    static WebKitWebSettings *webkitSettings = 0;
&gt; &gt; +#endif
&gt; &gt; +    static const gchar **uriArguments = 0;
&gt; &gt; +    static const GOptionEntry commandLineOptions[] =
&gt; 
&gt; If I&apos;m not mistaken these do not have to be static. Please check before landing.

Right, not necessarily, removed already. Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97956</attachid>
            <date>2011-06-21 03:25:06 -0700</date>
            <delta_ts>2011-06-22 03:03:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>goption-gtklauncher.diff</filename>
            <type>text/plain</type>
            <size>13282</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5MTE3
OTAyLi41YWE1MjgzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDYtMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtHVEtdIFVzZSBHT3B0aW9uIHRvIHBhcnNlIG1haW4gYXJndW1lbnRz
IGluIEd0a0xhdW5jaGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02MzA2MAorCisgICAgICAgIEluc3RlYWQgb2YgZ2V0dGluZyB0aGUgc2V0dGluZ3Mg
ZnJvbSB0aGUgdmlldywgY3JlYXRlIGEgbmV3CisgICAgICAgIHNldHRpbmdzIG9iamVjdCBub3Qg
YXNzb2NpYXRlZCB3aXRoIGFueSB2aWV3IHNvIHRoYXQgd2UgY2FuIHBhcnNlCisgICAgICAgIHRo
ZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGJlZm9yZSBjcmVhdGluZyB0aGUgdmlldy4gSXQgd2ls
bCBhbHNvCisgICAgICAgIGFsbG93cyB0byB1c2UgdGhlIHNhbWUgc2V0dGluZ3MgZm9yIG1vcmUg
dGhhbiBvbmUgdmlldyBpZiB3ZQorICAgICAgICBldmVudHVhbGx5IHN1cHBvcnQgcGFzc2luZyBt
b3JlIHRoYW4gb25lIHVyaSBmcm9tIHRoZSBjb21tYW5kCisgICAgICAgIGxpbmUuCisKKyAgICAg
ICAgKiBHdGtMYXVuY2hlci9tYWluLmM6CisgICAgICAgIChwYXJzZU9wdGlvbkVudHJ5Q2FsbGJh
Y2spOiBNYWtlIHRoaXMgZnVuY3Rpb24gc3RhdGljLiBBbHNvIHVzZQorICAgICAgICBnX2FzY2lp
X3N0cnRvbGwvZ19hc2NpaV9zdHJ0b2QgdG8gcGFyc2UgaW50L2Zsb2F0IHZhbHVlcyBpbnN0ZWFk
CisgICAgICAgIG9mIGF0b2kvYXRvZiB0byBwcm92aWRlIGJldHRlciBlcnJvciBtZXNzYWdlcy4g
QW5kIGFsd2F5cyBmaWxsIHRoZQorICAgICAgICBlcnJvciBzdHJ1Y3Qgd2hlbiB0aGUgZnVuY3Rp
b24gZmFpbHMuCisgICAgICAgIChnZXRPcHRpb25FbnRyaWVzRnJvbVdlYktpdFdlYlNldHRpbmdz
KTogVXNlIGFuIGFycmF5IG9mCisgICAgICAgIEdPcHRpb25FbnRyeSBzdHJ1Y3RzIGluc3RlYWQg
b2YgYSBHQXJyYXksIHNpbmNlIHRoYXQgaXMgd2hhdAorICAgICAgICBnX29wdGlvbl9ncm91cF9h
ZGRfZW50cmllcygpIGV4cGVjdHMgYW5kIHRoZSBhcnJheSBzaXplIGRvZXNuJ3QKKyAgICAgICAg
Y2hhbmdlLgorICAgICAgICAoYWRkV2ViU2V0dGluZ3NHcm91cFRvQ29udGV4dCk6IEhlbHBlciBm
dW5jdGlvbiB0byBhZGQgdGhlCisgICAgICAgIHdlYnNldHRpbmdzIGdyb3VwIHRvIHRoZSBvcHRp
b24gY29udGV4dC4KKyAgICAgICAgKG1haW4pOiBDcmVhdGUgdGhlIG9wdGlvbiBjb250ZXh0IHRv
IHBhcnNlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCisKIDIwMTEtMDYtMjAgIERtaXRyeSBMb21v
diAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZp
bi4KZGlmZiAtLWdpdCBhL1Rvb2xzL0d0a0xhdW5jaGVyL21haW4uYyBiL1Rvb2xzL0d0a0xhdW5j
aGVyL21haW4uYwppbmRleCBiYjZiNWFmLi5kY2U5MTIxIDEwMDY0NAotLS0gYS9Ub29scy9HdGtM
YXVuY2hlci9tYWluLmMKKysrIGIvVG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jCkBAIC0yNSwxMiAr
MjUsMTcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5j
bHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5o
PgogI2luY2x1ZGUgPHdlYmtpdC93ZWJraXQuaD4KIAogc3RhdGljIGdpbnQgd2luZG93Q291bnQg
PSAwOworc3RhdGljIGNvbnN0IGdjaGFyICoqdXJpQXJndW1lbnRzID0gMDsKKyNpZm5kZWYgV0VC
S0lUMgorc3RhdGljIFdlYktpdFdlYlNldHRpbmdzICp3ZWJraXRTZXR0aW5ncyA9IDA7CisjZW5k
aWYKIAogc3RhdGljIEd0a1dpZGdldCogY3JlYXRlV2luZG93KFdlYktpdFdlYlZpZXcqKiBvdXRX
ZWJWaWV3KTsKIApAQCAtMjQwLDUyICsyNDUsOTIgQEAgc3RhdGljIGdjaGFyKiBmaWxlbmFtZVRv
VVJMKGNvbnN0IGNoYXIqIGZpbGVuYW1lKQogfQogCiAjaWZuZGVmIFdFQktJVDIKLWdib29sZWFu
IHBhcnNlT3B0aW9uRW50cnlDYWxsYmFjayhjb25zdCBnY2hhciAqb3B0aW9uTmFtZUZ1bGwsIGNv
bnN0IGdjaGFyICp2YWx1ZSwgZ3BvaW50ZXIgZGF0YSwgR0Vycm9yICoqZXJyb3IpCitzdGF0aWMg
Z2Jvb2xlYW4gcGFyc2VPcHRpb25FbnRyeUNhbGxiYWNrKGNvbnN0IGdjaGFyICpvcHRpb25OYW1l
RnVsbCwgY29uc3QgZ2NoYXIgKnZhbHVlLCBXZWJLaXRXZWJTZXR0aW5ncyAqd2ViU2V0dGluZ3Ms
IEdFcnJvciAqKmVycm9yKQogewotICAgIFdlYktpdFdlYlNldHRpbmdzICp3ZWJraXRTZXR0aW5n
cyA9IChXZWJLaXRXZWJTZXR0aW5ncyAqKWRhdGE7Ci0KLSAgICBnX2Fzc2VydCh3ZWJraXRTZXR0
aW5ncyk7Ci0KLSAgICBpZiAoc3RybGVuKG9wdGlvbk5hbWVGdWxsKSA8PSAyKQorICAgIGlmIChz
dHJsZW4ob3B0aW9uTmFtZUZ1bGwpIDw9IDIpIHsKKyAgICAgICAgZ19zZXRfZXJyb3IoZXJyb3Is
IEdfT1BUSU9OX0VSUk9SLCBHX09QVElPTl9FUlJPUl9GQUlMRUQsCisgICAgICAgICAgICAgICAg
ICAgICJJbnZhbGlkIG9wdGlvbiAlcyIsIG9wdGlvbk5hbWVGdWxsKTsKICAgICAgICAgcmV0dXJu
IEZBTFNFOworICAgIH0KIAogICAgIC8qIFdlIGhhdmUgdHdvIC0tIGluIG9wdGlvbiBuYW1lIHNv
IHJlbW92ZSB0aGVtLiAqLwogICAgIGNvbnN0IGdjaGFyICpvcHRpb25OYW1lID0gb3B0aW9uTmFt
ZUZ1bGwgKyAyOwotICAgIEdQYXJhbVNwZWMgKnNwZWMgPSBnX29iamVjdF9jbGFzc19maW5kX3By
b3BlcnR5KEdfT0JKRUNUX0dFVF9DTEFTUyh3ZWJraXRTZXR0aW5ncyksIG9wdGlvbk5hbWUpOwot
ICAgIGlmICghc3BlYykKLSAgICAgICAgcmV0dXJuIEZBTFNFOwotCi0gICAgLyogQ29udmVydCBz
dHJpbmcgdG8gcHJvcGVyIHR5cGUuICovCi0gICAgR1ZhbHVlIHZhbHVlU3RyaW5nID0gezAsIHt7
MH19fTsKLSAgICBHVmFsdWUgdmFsdWVQcm9wZXJ0eSA9IHswLCB7ezB9fX07Ci0gICAgZ192YWx1
ZV9pbml0KCZ2YWx1ZVN0cmluZywgR19UWVBFX1NUUklORyk7Ci0gICAgZ192YWx1ZV9pbml0KCZ2
YWx1ZVByb3BlcnR5LCBHX1BBUkFNX1NQRUNfVkFMVUVfVFlQRShzcGVjKSk7Ci0gICAgZ192YWx1
ZV9zZXRfc3RhdGljX3N0cmluZygmdmFsdWVTdHJpbmcsIHZhbHVlKTsKLSAgICBpZiAoIWdfdmFs
dWVfdHJhbnNmb3JtKCZ2YWx1ZVN0cmluZywgJnZhbHVlUHJvcGVydHkpKQorICAgIEdQYXJhbVNw
ZWMgKnNwZWMgPSBnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5KEdfT0JKRUNUX0dFVF9DTEFT
Uyh3ZWJTZXR0aW5ncyksIG9wdGlvbk5hbWUpOworICAgIGlmICghc3BlYykgeworICAgICAgICBn
X3NldF9lcnJvcihlcnJvciwgR19PUFRJT05fRVJST1IsIEdfT1BUSU9OX0VSUk9SX0ZBSUxFRCwK
KyAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBmaW5kIHdlYiBzZXR0aW5ncyBmb3Igb3B0aW9u
ICVzIiwgb3B0aW9uTmFtZUZ1bGwpOwogICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQogCi0g
ICAgLyogU2V0IFdlYktpdFdlYlNldHRpbmdzIHByb3BlcnRpZXMuICovCi0gICAgZ19vYmplY3Rf
c2V0X3Byb3BlcnR5KEdfT0JKRUNUKHdlYmtpdFNldHRpbmdzKSwgb3B0aW9uTmFtZSwgJnZhbHVl
UHJvcGVydHkpOworICAgIC8qIFBhcnNlIGFyZ3VtZW50ICovCisgICAgc3dpdGNoIChHX1BBUkFN
X1NQRUNfVkFMVUVfVFlQRShzcGVjKSkgeworICAgIGNhc2UgR19UWVBFX0JPT0xFQU46IHsKKyAg
ICAgICAgZ2Jvb2xlYW4gcHJvcGVydHlWYWx1ZSA9IFRSVUU7CisgICAgICAgIGlmICh2YWx1ZSAm
JiBnX2FzY2lpX3N0cmNhc2VjbXAodmFsdWUsICJ0cnVlIikgJiYgc3RyY21wKHZhbHVlLCAiMSIp
KQorICAgICAgICAgICAgcHJvcGVydHlWYWx1ZSA9IEZBTFNFOworICAgICAgICBnX29iamVjdF9z
ZXQoR19PQkpFQ1Qod2ViU2V0dGluZ3MpLCBvcHRpb25OYW1lLCBwcm9wZXJ0eVZhbHVlLCBOVUxM
KTsKKyAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR19UWVBFX1NUUklORzoKKyAgICAg
ICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYlNldHRpbmdzKSwgb3B0aW9uTmFtZSwgdmFsdWUs
IE5VTEwpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdfVFlQRV9JTlQ6IHsKKyAgICAgICAg
Z2xvbmcgcHJvcGVydHlWYWx1ZTsKKyAgICAgICAgZ2NoYXIgKmVuZDsKKworICAgICAgICBlcnJu
byA9IDA7CisgICAgICAgIHByb3BlcnR5VmFsdWUgPSBnX2FzY2lpX3N0cnRvbGwodmFsdWUsICZl
bmQsIDApOworICAgICAgICBpZiAoZXJybm8gPT0gRVJBTkdFIHx8IHByb3BlcnR5VmFsdWUgPiBH
X01BWElOVCB8fCBwcm9wZXJ0eVZhbHVlIDwgR19NSU5JTlQpIHsKKyAgICAgICAgICAgIGdfc2V0
X2Vycm9yKGVycm9yLCBHX09QVElPTl9FUlJPUiwgR19PUFRJT05fRVJST1JfQkFEX1ZBTFVFLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIkludGVnZXIgdmFsdWUgJyVzJyBmb3IgJXMgb3V0IG9m
IHJhbmdlIiwgdmFsdWUsIG9wdGlvbk5hbWVGdWxsKTsKKyAgICAgICAgICAgIHJldHVybiBGQUxT
RTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXJybm8gfHwgdmFsdWUgPT0gZW5kKSB7CisgICAg
ICAgICAgICBnX3NldF9lcnJvcihlcnJvciwgR19PUFRJT05fRVJST1IsIEdfT1BUSU9OX0VSUk9S
X0JBRF9WQUxVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgcGFyc2UgaW50ZWdl
ciB2YWx1ZSAnJXMnIGZvciAlcyIsIHZhbHVlLCBvcHRpb25OYW1lRnVsbCk7CisgICAgICAgICAg
ICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNU
KHdlYlNldHRpbmdzKSwgb3B0aW9uTmFtZSwgcHJvcGVydHlWYWx1ZSwgTlVMTCk7CisgICAgfQor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEdfVFlQRV9GTE9BVDogeworICAgICAgICBnZG91Ymxl
IHByb3BlcnR5VmFsdWU7CisgICAgICAgIGdjaGFyICplbmQ7CisKKyAgICAgICAgZXJybm8gPSAw
OworICAgICAgICBwcm9wZXJ0eVZhbHVlID0gZ19hc2NpaV9zdHJ0b2QodmFsdWUsICZlbmQpOwor
ICAgICAgICBpZiAoZXJybm8gPT0gRVJBTkdFIHx8IHByb3BlcnR5VmFsdWUgPiBHX01BWEZMT0FU
IHx8IHByb3BlcnR5VmFsdWUgPCBHX01JTkZMT0FUKSB7CisgICAgICAgICAgICBnX3NldF9lcnJv
cihlcnJvciwgR19PUFRJT05fRVJST1IsIEdfT1BUSU9OX0VSUk9SX0JBRF9WQUxVRSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJGbG9hdCB2YWx1ZSAnJXMnIGZvciAlcyBvdXQgb2YgcmFuZ2Ui
LCB2YWx1ZSwgb3B0aW9uTmFtZUZ1bGwpOworICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAg
ICAgICB9CisgICAgICAgIGlmIChlcnJubyB8fCB2YWx1ZSA9PSBlbmQpIHsKKyAgICAgICAgICAg
IGdfc2V0X2Vycm9yKGVycm9yLCBHX09QVElPTl9FUlJPUiwgR19PUFRJT05fRVJST1JfQkFEX1ZB
TFVFLAorICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBwYXJzZSBmbG9hdCB2YWx1ZSAn
JXMnIGZvciAlcyIsIHZhbHVlLCBvcHRpb25OYW1lRnVsbCk7CisgICAgICAgICAgICByZXR1cm4g
RkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYlNldHRp
bmdzKSwgb3B0aW9uTmFtZSwgcHJvcGVydHlWYWx1ZSwgTlVMTCk7CisgICAgfQorICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOworICAg
IH0KIAogICAgIHJldHVybiBUUlVFOwogfQogCi1zdGF0aWMgR0FycmF5KiBnZXRPcHRpb25FbnRy
aWVzRnJvbVdlYktpdFdlYlNldHRpbmdzKFdlYktpdFdlYlNldHRpbmdzICp3ZWJraXRTZXR0aW5n
cykKK3N0YXRpYyBHT3B0aW9uRW50cnkqIGdldE9wdGlvbkVudHJpZXNGcm9tV2ViS2l0V2ViU2V0
dGluZ3MoV2ViS2l0V2ViU2V0dGluZ3MgKndlYlNldHRpbmdzKQogewogICAgIEdQYXJhbVNwZWMg
Kipwcm9wZXJ0eVNwZWNzOwotICAgIEdBcnJheSAqb3B0aW9uRW50cmllc0FycmF5OwotICAgIGd1
aW50IG51bVByb3BlcnRpZXMsIGk7CisgICAgR09wdGlvbkVudHJ5ICpvcHRpb25FbnRyaWVzOwor
ICAgIGd1aW50IG51bVByb3BlcnRpZXMsIG51bUVudHJpZXMsIGk7CiAKLSAgICBwcm9wZXJ0eVNw
ZWNzID0gZ19vYmplY3RfY2xhc3NfbGlzdF9wcm9wZXJ0aWVzKEdfT0JKRUNUX0dFVF9DTEFTUyh3
ZWJraXRTZXR0aW5ncyksICZudW1Qcm9wZXJ0aWVzKTsKKyAgICBwcm9wZXJ0eVNwZWNzID0gZ19v
YmplY3RfY2xhc3NfbGlzdF9wcm9wZXJ0aWVzKEdfT0JKRUNUX0dFVF9DTEFTUyh3ZWJTZXR0aW5n
cyksICZudW1Qcm9wZXJ0aWVzKTsKICAgICBpZiAoIXByb3BlcnR5U3BlY3MpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgb3B0aW9uRW50cmllc0FycmF5ID0gZ19hcnJheV9uZXcoVFJVRSwgVFJV
RSwgc2l6ZW9mKEdPcHRpb25FbnRyeSkpOwotICAgIGlmICghb3B0aW9uRW50cmllc0FycmF5KSB7
Ci0gICAgICAgIGdfZnJlZShwcm9wZXJ0eVNwZWNzKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
fQotCisgICAgb3B0aW9uRW50cmllcyA9IGdfbmV3MChHT3B0aW9uRW50cnksIG51bVByb3BlcnRp
ZXMgKyAxKTsKKyAgICBudW1FbnRyaWVzID0gMDsKICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtUHJv
cGVydGllczsgaSsrKSB7CiAgICAgICAgIEdQYXJhbVNwZWMgKnBhcmFtID0gcHJvcGVydHlTcGVj
c1tpXTsKIApAQCAtMjk2LDgxICszNDEsNTUgQEAgc3RhdGljIEdBcnJheSogZ2V0T3B0aW9uRW50
cmllc0Zyb21XZWJLaXRXZWJTZXR0aW5ncyhXZWJLaXRXZWJTZXR0aW5ncyAqd2Via2l0U2UKICAg
ICAgICAgR1R5cGUgZ1BhcmFtVHlwZSA9IEdfUEFSQU1fU1BFQ19WQUxVRV9UWVBFKHBhcmFtKTsK
ICAgICAgICAgaWYgKGdQYXJhbVR5cGUgPT0gR19UWVBFX0JPT0xFQU4gfHwgZ1BhcmFtVHlwZSA9
PSBHX1RZUEVfU1RSSU5HIHx8IGdQYXJhbVR5cGUgPT0gR19UWVBFX0lOVAogICAgICAgICAgICAg
fHwgZ1BhcmFtVHlwZSA9PSBHX1RZUEVfRkxPQVQpIHsKLSAgICAgICAgICAgIEdPcHRpb25FbnRy
eSBvcHRpb25FbnRyeTsKLSAgICAgICAgICAgIG9wdGlvbkVudHJ5LmxvbmdfbmFtZSA9IGdfcGFy
YW1fc3BlY19nZXRfbmFtZShwYXJhbSk7CisgICAgICAgICAgICBHT3B0aW9uRW50cnkgKm9wdGlv
bkVudHJ5ID0gJm9wdGlvbkVudHJpZXNbbnVtRW50cmllcysrXTsKKyAgICAgICAgICAgIG9wdGlv
bkVudHJ5LT5sb25nX25hbWUgPSBnX3BhcmFtX3NwZWNfZ2V0X25hbWUocGFyYW0pOworCiAgICAg
ICAgICAgICAvKiBUaGVyZSBpcyBubyBlYXN5IHdheSB0byBmaWd1cmUgb3VyIHNob3J0IG5hbWUg
Zm9yIGdlbmVyYXRlZCBvcHRpb24gZW50cmllcy4KICAgICAgICAgICAgICAgIG9wdGlvbkVudHJ5
LnNob3J0X25hbWU9Ki8KICAgICAgICAgICAgIC8qIEZvciBib29sIGFyZ3VtZW50cyAiZW5hYmxl
IiB0eXBlIG1ha2Ugb3B0aW9uIGFyZ3VtZW50IG5vdCByZXF1aXJlZC4gKi8KLSAgICAgICAgICAg
IGlmIChnUGFyYW1UeXBlID09IEdfVFlQRV9CT09MRUFOICYmIChzdHJzdHIob3B0aW9uRW50cnku
bG9uZ19uYW1lLCAiZW5hYmxlIikpKQotICAgICAgICAgICAgICAgIG9wdGlvbkVudHJ5LmZsYWdz
ID0gR19PUFRJT05fRkxBR19PUFRJT05BTF9BUkc7Ci0gICAgICAgICAgICBvcHRpb25FbnRyeS5h
cmcgPSBHX09QVElPTl9BUkdfQ0FMTEJBQ0s7Ci0gICAgICAgICAgICBvcHRpb25FbnRyeS5hcmdf
ZGF0YSA9IHBhcnNlT3B0aW9uRW50cnlDYWxsYmFjazsKLSAgICAgICAgICAgIG9wdGlvbkVudHJ5
LmRlc2NyaXB0aW9uID0gZ19wYXJhbV9zcGVjX2dldF9ibHVyYihwYXJhbSk7Ci0gICAgICAgICAg
ICBvcHRpb25FbnRyeS5hcmdfZGVzY3JpcHRpb24gPSBnX3R5cGVfbmFtZShnUGFyYW1UeXBlKTsK
LSAgICAgICAgICAgIGdfYXJyYXlfYXBwZW5kX3ZhbChvcHRpb25FbnRyaWVzQXJyYXksIG9wdGlv
bkVudHJ5KTsKKyAgICAgICAgICAgIGlmIChnUGFyYW1UeXBlID09IEdfVFlQRV9CT09MRUFOICYm
IChzdHJzdHIob3B0aW9uRW50cnktPmxvbmdfbmFtZSwgImVuYWJsZSIpKSkKKyAgICAgICAgICAg
ICAgICBvcHRpb25FbnRyeS0+ZmxhZ3MgPSBHX09QVElPTl9GTEFHX09QVElPTkFMX0FSRzsKKyAg
ICAgICAgICAgIG9wdGlvbkVudHJ5LT5hcmcgPSBHX09QVElPTl9BUkdfQ0FMTEJBQ0s7CisgICAg
ICAgICAgICBvcHRpb25FbnRyeS0+YXJnX2RhdGEgPSBwYXJzZU9wdGlvbkVudHJ5Q2FsbGJhY2s7
CisgICAgICAgICAgICBvcHRpb25FbnRyeS0+ZGVzY3JpcHRpb24gPSBnX3BhcmFtX3NwZWNfZ2V0
X2JsdXJiKHBhcmFtKTsKKyAgICAgICAgICAgIG9wdGlvbkVudHJ5LT5hcmdfZGVzY3JpcHRpb24g
PSBnX3R5cGVfbmFtZShnUGFyYW1UeXBlKTsKICAgICAgICAgfQogICAgIH0KICAgICBnX2ZyZWUo
cHJvcGVydHlTcGVjcyk7CiAKLSAgICByZXR1cm4gb3B0aW9uRW50cmllc0FycmF5OwotfQotCi1z
dGF0aWMgdm9pZCB0cmFuc2Zvcm1TdHJpbmdUb0Jvb2xlYW4oY29uc3QgR1ZhbHVlICpzcmNWYWx1
ZSwgR1ZhbHVlICpkZXN0VmFsdWUpCi17Ci0gICAgY29uc3QgY2hhciogc3RyVmFsdWUgPSBnX3Zh
bHVlX2dldF9zdHJpbmcoc3JjVmFsdWUpOwotICAgIGlmIChzdHJWYWx1ZSkgewotICAgICAgICBp
ZiAoIWdfYXNjaWlfc3RyY2FzZWNtcChzdHJWYWx1ZSwgInRydWUiKSB8fCAhc3RyY21wKHN0clZh
bHVlLCAiMSIpKQotICAgICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbihkZXN0VmFsdWUsIFRS
VUUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKGRlc3RW
YWx1ZSwgRkFMU0UpOwotICAgIH0gZWxzZSAvKiBXaGVuIG5vIG9wdGlvbiB2YWx1ZSBwcm92aWRl
ZCwgc2V0ICJUUlVFIiBieSBkZWZhdWx0LiAqLwotICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFu
KGRlc3RWYWx1ZSwgVFJVRSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRyYW5zZm9ybVN0cmluZ1RvSW50
KGNvbnN0IEdWYWx1ZSAqc3JjVmFsdWUsIEdWYWx1ZSAqZGVzdFZhbHVlKQotewotICAgIGdfdmFs
dWVfc2V0X2ludChkZXN0VmFsdWUsIGF0b2koZ192YWx1ZV9nZXRfc3RyaW5nKHNyY1ZhbHVlKSkp
OwotfQotCi1zdGF0aWMgdm9pZCB0cmFuc2Zvcm1TdHJpbmdUb0Zsb2F0KGNvbnN0IEdWYWx1ZSAq
c3JjVmFsdWUsIEdWYWx1ZSAqZGVzdFZhbHVlKQotewotICAgIGdfdmFsdWVfc2V0X2Zsb2F0KGRl
c3RWYWx1ZSwgYXRvZihnX3ZhbHVlX2dldF9zdHJpbmcoc3JjVmFsdWUpKSk7CisgICAgcmV0dXJu
IG9wdGlvbkVudHJpZXM7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiBwYXJzZUFkZGl0aW9uYWxPcHRp
b25zKFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIGludCBhcmdjLCBjaGFyKiBhcmd2W10pCitzdGF0
aWMgdm9pZCBhZGRXZWJTZXR0aW5nc0dyb3VwVG9Db250ZXh0KEdPcHRpb25Db250ZXh0ICpjb250
ZXh0KQogewotICAgIGdfdmFsdWVfcmVnaXN0ZXJfdHJhbnNmb3JtX2Z1bmMoR19UWVBFX1NUUklO
RywgR19UWVBFX0JPT0xFQU4sIHRyYW5zZm9ybVN0cmluZ1RvQm9vbGVhbik7Ci0gICAgZ192YWx1
ZV9yZWdpc3Rlcl90cmFuc2Zvcm1fZnVuYyhHX1RZUEVfU1RSSU5HLCBHX1RZUEVfSU5ULCB0cmFu
c2Zvcm1TdHJpbmdUb0ludCk7Ci0gICAgZ192YWx1ZV9yZWdpc3Rlcl90cmFuc2Zvcm1fZnVuYyhH
X1RZUEVfU1RSSU5HLCBHX1RZUEVfRkxPQVQsIHRyYW5zZm9ybVN0cmluZ1RvRmxvYXQpOwotCisg
ICAgd2Via2l0U2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpOworICAgIEdPcHRp
b25FbnRyeSAqb3B0aW9uRW50cmllcyA9IGdldE9wdGlvbkVudHJpZXNGcm9tV2ViS2l0V2ViU2V0
dGluZ3Mod2Via2l0U2V0dGluZ3MpOworICAgIGlmICghb3B0aW9uRW50cmllcykgeworICAgICAg
ICBnX29iamVjdF91bnJlZih3ZWJraXRTZXR0aW5ncyk7CisgICAgICAgIHdlYmtpdFNldHRpbmdz
ID0gMDsKIAotICAgIFdlYktpdFdlYlNldHRpbmdzICp3ZWJraXRTZXR0aW5ncyA9IHdlYmtpdF93
ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldyk7Ci0gICAgR0FycmF5ICpvcHRpb25FbnRyaWVz
QXJyYXkgPSBnZXRPcHRpb25FbnRyaWVzRnJvbVdlYktpdFdlYlNldHRpbmdzKHdlYmtpdFNldHRp
bmdzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIEdPcHRpb25Hcm91cCAqd2ViU2V0
dGluZ3NHcm91cCA9IGdfb3B0aW9uX2dyb3VwX25ldygid2Vic2V0dGluZ3MiLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2ViS2l0V2Vi
U2V0dGluZ3Mgd3JpdGFibGUgcHJvcGVydGllcyBmb3IgZGVmYXVsdCBXZWJLaXRXZWJWaWV3IiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IldlYktpdFdlYlNldHRpbmdzIHByb3BlcnRpZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJraXRTZXR0aW5ncywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0g
ICAgZ19vcHRpb25fZ3JvdXBfYWRkX2VudHJpZXMod2ViU2V0dGluZ3NHcm91cCwgKEdPcHRpb25F
bnRyeSopIG9wdGlvbkVudHJpZXNBcnJheS0+ZGF0YSk7CisgICAgZ19vcHRpb25fZ3JvdXBfYWRk
X2VudHJpZXMod2ViU2V0dGluZ3NHcm91cCwgb3B0aW9uRW50cmllcyk7CisgICAgZ19mcmVlKG9w
dGlvbkVudHJpZXMpOwogCi0gICAgR09wdGlvbkNvbnRleHQgKmNvbnRleHQgPSBnX29wdGlvbl9j
b250ZXh0X25ldygiW1VSTF0iKTsKKyAgICAvKiBPcHRpb24gY29udGV4dCB0YWtlcyBvd25lcnNo
aXAgb2YgdGhlIGdyb3VwLiAqLwogICAgIGdfb3B0aW9uX2NvbnRleHRfYWRkX2dyb3VwKGNvbnRl
eHQsIHdlYlNldHRpbmdzR3JvdXApOwotCi0gICAgR0Vycm9yICplcnJvciA9IDA7Ci0gICAgaWYg
KCFnX29wdGlvbl9jb250ZXh0X3BhcnNlKGNvbnRleHQsICZhcmdjLCAmYXJndiwgJmVycm9yKSkg
ewotICAgICAgICBnX3ByaW50KCJGYWlsZWQgdG8gcGFyc2UgYXJndW1lbnRzOiAlc1xuIiwgZXJy
b3ItPm1lc3NhZ2UpOwotICAgICAgICBnX2Vycm9yX2ZyZWUoZXJyb3IpOwotICAgICAgICBnX29w
dGlvbl9jb250ZXh0X2ZyZWUoY29udGV4dCk7Ci0gICAgICAgIGdfYXJyYXlfZnJlZShvcHRpb25F
bnRyaWVzQXJyYXksIFRSVUUpOwotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgfQotICAgIGdf
b3B0aW9uX2NvbnRleHRfZnJlZShjb250ZXh0KTsKLSAgICBnX2FycmF5X2ZyZWUob3B0aW9uRW50
cmllc0FycmF5LCBUUlVFKTsKLSAgICByZXR1cm4gVFJVRTsKIH0KICNlbmRpZgogCitzdGF0aWMg
Y29uc3QgR09wdGlvbkVudHJ5IGNvbW1hbmRMaW5lT3B0aW9uc1tdID0KK3sKKyAgICB7IEdfT1BU
SU9OX1JFTUFJTklORywgMCwgMCwgR19PUFRJT05fQVJHX0ZJTEVOQU1FX0FSUkFZLCAmdXJpQXJn
dW1lbnRzLCAwLCAiW1VSTF0iIH0sCisgICAgeyAwLCAwLCAwLCAwLCAwLCAwLCAwIH0KK307CisK
IGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiB7CiAgICAgV2ViS2l0V2ViVmlldyAq
d2ViVmlldzsKQEAgLTM4MCw2ICszOTksMjMgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFy
Z3ZbXSkKICAgICBpZiAoIWdfdGhyZWFkX3N1cHBvcnRlZCgpKQogICAgICAgICBnX3RocmVhZF9p
bml0KE5VTEwpOwogCisgICAgR09wdGlvbkNvbnRleHQgKmNvbnRleHQgPSBnX29wdGlvbl9jb250
ZXh0X25ldyhOVUxMKTsKKyAgICBnX29wdGlvbl9jb250ZXh0X2FkZF9tYWluX2VudHJpZXMoY29u
dGV4dCwgY29tbWFuZExpbmVPcHRpb25zLCAwKTsKKyAgICBnX29wdGlvbl9jb250ZXh0X2FkZF9n
cm91cChjb250ZXh0LCBndGtfZ2V0X29wdGlvbl9ncm91cChUUlVFKSk7CisjaWZuZGVmIFdFQktJ
VDIKKyAgICBhZGRXZWJTZXR0aW5nc0dyb3VwVG9Db250ZXh0KGNvbnRleHQpOworI2VuZGlmCisK
KyAgICBHRXJyb3IgKmVycm9yID0gMDsKKyAgICBpZiAoIWdfb3B0aW9uX2NvbnRleHRfcGFyc2Uo
Y29udGV4dCwgJmFyZ2MsICZhcmd2LCAmZXJyb3IpKSB7CisgICAgICAgIGdfcHJpbnRlcnIoIkNh
bm5vdCBwYXJzZSBhcmd1bWVudHM6ICVzXG4iLCBlcnJvci0+bWVzc2FnZSk7CisgICAgICAgIGdf
ZXJyb3JfZnJlZShlcnJvcik7CisgICAgICAgIGdfb3B0aW9uX2NvbnRleHRfZnJlZShjb250ZXh0
KTsKKworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgZ19vcHRpb25fY29udGV4dF9mcmVl
KGNvbnRleHQpOworCiAjaWZuZGVmIFdFQktJVDIKICNpZmRlZiBTT1VQX1RZUEVfUFJPWFlfUkVT
T0xWRVJfREVGQVVMVAogICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZV9ieV90eXBlKHdlYmtp
dF9nZXRfZGVmYXVsdF9zZXNzaW9uKCksIFNPVVBfVFlQRV9QUk9YWV9SRVNPTFZFUl9ERUZBVUxU
KTsKQEAgLTM5NiwxMSArNDMyLDEzIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10p
CiAgICAgbWFpbl93aW5kb3cgPSBjcmVhdGVXaW5kb3coJndlYlZpZXcpOwogCiAjaWZuZGVmIFdF
QktJVDIKLSAgICBpZiAoIXBhcnNlQWRkaXRpb25hbE9wdGlvbnMod2ViVmlldywgYXJnYywgYXJn
dikpCi0gICAgICAgIHJldHVybiAxOworICAgIGlmICh3ZWJraXRTZXR0aW5ncykgeworICAgICAg
ICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKFdFQktJVF9XRUJfVklFVyh3ZWJWaWV3KSwg
d2Via2l0U2V0dGluZ3MpOworICAgICAgICBnX29iamVjdF91bnJlZih3ZWJraXRTZXR0aW5ncyk7
CisgICAgfQogI2VuZGlmCiAKLSAgICBnY2hhciAqdXJpID0oZ2NoYXIqKShhcmdjID4gMSA/IGFy
Z3ZbMV0gOiAiaHR0cDovL3d3dy5nb29nbGUuY29tLyIpOworICAgIGNvbnN0IGdjaGFyICp1cmkg
PSAodXJpQXJndW1lbnRzID8gdXJpQXJndW1lbnRzWzBdIDogImh0dHA6Ly93d3cuZ29vZ2xlLmNv
bS8iKTsKICAgICBnY2hhciAqZmlsZVVSTCA9IGZpbGVuYW1lVG9VUkwodXJpKTsKIAogICAgIHdl
YmtpdF93ZWJfdmlld19sb2FkX3VyaSh3ZWJWaWV3LCBmaWxlVVJMID8gZmlsZVVSTCA6IHVyaSk7
Cg==
</data>
<flag name="review"
          id="92056"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98144</attachid>
            <date>2011-06-22 03:03:20 -0700</date>
            <delta_ts>2011-06-22 07:49:36 -0700</delta_ts>
            <desc>Updated patch according to review</desc>
            <filename>goption-gtklauncher2.diff</filename>
            <type>text/plain</type>
            <size>13182</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5NGU4
MzBiLi5jMjcwMTQ2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDYtMjIgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtHVEtdIFVzZSBHT3B0aW9uIHRvIHBhcnNlIG1haW4gYXJndW1lbnRz
IGluIEd0a0xhdW5jaGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02MzA2MAorCisgICAgICAgIEluc3RlYWQgb2YgZ2V0dGluZyB0aGUgc2V0dGluZ3Mg
ZnJvbSB0aGUgdmlldywgY3JlYXRlIGEgbmV3CisgICAgICAgIHNldHRpbmdzIG9iamVjdCBub3Qg
YXNzb2NpYXRlZCB3aXRoIGFueSB2aWV3IHNvIHRoYXQgd2UgY2FuIHBhcnNlCisgICAgICAgIHRo
ZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGJlZm9yZSBjcmVhdGluZyB0aGUgdmlldy4gSXQgd2ls
bCBhbHNvCisgICAgICAgIGFsbG93cyB0byB1c2UgdGhlIHNhbWUgc2V0dGluZ3MgZm9yIG1vcmUg
dGhhbiBvbmUgdmlldyBpZiB3ZQorICAgICAgICBldmVudHVhbGx5IHN1cHBvcnQgcGFzc2luZyBt
b3JlIHRoYW4gb25lIHVyaSBmcm9tIHRoZSBjb21tYW5kCisgICAgICAgIGxpbmUuCisKKyAgICAg
ICAgKiBHdGtMYXVuY2hlci9tYWluLmM6CisgICAgICAgIChwYXJzZU9wdGlvbkVudHJ5Q2FsbGJh
Y2spOiBNYWtlIHRoaXMgZnVuY3Rpb24gc3RhdGljLiBBbHNvIHVzZQorICAgICAgICBnX2FzY2lp
X3N0cnRvbGwvZ19hc2NpaV9zdHJ0b2QgdG8gcGFyc2UgaW50L2Zsb2F0IHZhbHVlcyBpbnN0ZWFk
CisgICAgICAgIG9mIGF0b2kvYXRvZiB0byBwcm92aWRlIGJldHRlciBlcnJvciBtZXNzYWdlcy4g
QW5kIGFsd2F5cyBmaWxsIHRoZQorICAgICAgICBlcnJvciBzdHJ1Y3Qgd2hlbiB0aGUgZnVuY3Rp
b24gZmFpbHMuCisgICAgICAgIChnZXRPcHRpb25FbnRyaWVzRnJvbVdlYktpdFdlYlNldHRpbmdz
KTogVXNlIGFuIGFycmF5IG9mCisgICAgICAgIEdPcHRpb25FbnRyeSBzdHJ1Y3RzIGluc3RlYWQg
b2YgYSBHQXJyYXksIHNpbmNlIHRoYXQgaXMgd2hhdAorICAgICAgICBnX29wdGlvbl9ncm91cF9h
ZGRfZW50cmllcygpIGV4cGVjdHMgYW5kIHRoZSBhcnJheSBzaXplIGRvZXNuJ3QKKyAgICAgICAg
Y2hhbmdlLgorICAgICAgICAoYWRkV2ViU2V0dGluZ3NHcm91cFRvQ29udGV4dCk6IEhlbHBlciBm
dW5jdGlvbiB0byBhZGQgdGhlCisgICAgICAgIHdlYnNldHRpbmdzIGdyb3VwIHRvIHRoZSBvcHRp
b24gY29udGV4dC4KKyAgICAgICAgKG1haW4pOiBDcmVhdGUgdGhlIG9wdGlvbiBjb250ZXh0IHRv
IHBhcnNlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCisKIDIwMTEtMDYtMjEgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYnVpbGQgZml4
LgpkaWZmIC0tZ2l0IGEvVG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jIGIvVG9vbHMvR3RrTGF1bmNo
ZXIvbWFpbi5jCmluZGV4IGJiNmI1YWYuLmY5MjI5MzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0d0a0xh
dW5jaGVyL21haW4uYworKysgYi9Ub29scy9HdGtMYXVuY2hlci9tYWluLmMKQEAgLTI1LDYgKzI1
LDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVk
ZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgpA
QCAtMjQwLDUyICsyNDEsODUgQEAgc3RhdGljIGdjaGFyKiBmaWxlbmFtZVRvVVJMKGNvbnN0IGNo
YXIqIGZpbGVuYW1lKQogfQogCiAjaWZuZGVmIFdFQktJVDIKLWdib29sZWFuIHBhcnNlT3B0aW9u
RW50cnlDYWxsYmFjayhjb25zdCBnY2hhciAqb3B0aW9uTmFtZUZ1bGwsIGNvbnN0IGdjaGFyICp2
YWx1ZSwgZ3BvaW50ZXIgZGF0YSwgR0Vycm9yICoqZXJyb3IpCitzdGF0aWMgZ2Jvb2xlYW4gcGFy
c2VPcHRpb25FbnRyeUNhbGxiYWNrKGNvbnN0IGdjaGFyICpvcHRpb25OYW1lRnVsbCwgY29uc3Qg
Z2NoYXIgKnZhbHVlLCBXZWJLaXRXZWJTZXR0aW5ncyAqd2ViU2V0dGluZ3MsIEdFcnJvciAqKmVy
cm9yKQogewotICAgIFdlYktpdFdlYlNldHRpbmdzICp3ZWJraXRTZXR0aW5ncyA9IChXZWJLaXRX
ZWJTZXR0aW5ncyAqKWRhdGE7Ci0KLSAgICBnX2Fzc2VydCh3ZWJraXRTZXR0aW5ncyk7Ci0KLSAg
ICBpZiAoc3RybGVuKG9wdGlvbk5hbWVGdWxsKSA8PSAyKQorICAgIGlmIChzdHJsZW4ob3B0aW9u
TmFtZUZ1bGwpIDw9IDIpIHsKKyAgICAgICAgZ19zZXRfZXJyb3IoZXJyb3IsIEdfT1BUSU9OX0VS
Uk9SLCBHX09QVElPTl9FUlJPUl9GQUlMRUQsICJJbnZhbGlkIG9wdGlvbiAlcyIsIG9wdGlvbk5h
bWVGdWxsKTsKICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KIAogICAgIC8qIFdlIGhhdmUg
dHdvIC0tIGluIG9wdGlvbiBuYW1lIHNvIHJlbW92ZSB0aGVtLiAqLwogICAgIGNvbnN0IGdjaGFy
ICpvcHRpb25OYW1lID0gb3B0aW9uTmFtZUZ1bGwgKyAyOwotICAgIEdQYXJhbVNwZWMgKnNwZWMg
PSBnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5KEdfT0JKRUNUX0dFVF9DTEFTUyh3ZWJraXRT
ZXR0aW5ncyksIG9wdGlvbk5hbWUpOwotICAgIGlmICghc3BlYykKLSAgICAgICAgcmV0dXJuIEZB
TFNFOwotCi0gICAgLyogQ29udmVydCBzdHJpbmcgdG8gcHJvcGVyIHR5cGUuICovCi0gICAgR1Zh
bHVlIHZhbHVlU3RyaW5nID0gezAsIHt7MH19fTsKLSAgICBHVmFsdWUgdmFsdWVQcm9wZXJ0eSA9
IHswLCB7ezB9fX07Ci0gICAgZ192YWx1ZV9pbml0KCZ2YWx1ZVN0cmluZywgR19UWVBFX1NUUklO
Ryk7Ci0gICAgZ192YWx1ZV9pbml0KCZ2YWx1ZVByb3BlcnR5LCBHX1BBUkFNX1NQRUNfVkFMVUVf
VFlQRShzcGVjKSk7Ci0gICAgZ192YWx1ZV9zZXRfc3RhdGljX3N0cmluZygmdmFsdWVTdHJpbmcs
IHZhbHVlKTsKLSAgICBpZiAoIWdfdmFsdWVfdHJhbnNmb3JtKCZ2YWx1ZVN0cmluZywgJnZhbHVl
UHJvcGVydHkpKQorICAgIEdQYXJhbVNwZWMgKnNwZWMgPSBnX29iamVjdF9jbGFzc19maW5kX3By
b3BlcnR5KEdfT0JKRUNUX0dFVF9DTEFTUyh3ZWJTZXR0aW5ncyksIG9wdGlvbk5hbWUpOworICAg
IGlmICghc3BlYykgeworICAgICAgICBnX3NldF9lcnJvcihlcnJvciwgR19PUFRJT05fRVJST1Is
IEdfT1BUSU9OX0VSUk9SX0ZBSUxFRCwgIkNhbm5vdCBmaW5kIHdlYiBzZXR0aW5ncyBmb3Igb3B0
aW9uICVzIiwgb3B0aW9uTmFtZUZ1bGwpOwogICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQog
Ci0gICAgLyogU2V0IFdlYktpdFdlYlNldHRpbmdzIHByb3BlcnRpZXMuICovCi0gICAgZ19vYmpl
Y3Rfc2V0X3Byb3BlcnR5KEdfT0JKRUNUKHdlYmtpdFNldHRpbmdzKSwgb3B0aW9uTmFtZSwgJnZh
bHVlUHJvcGVydHkpOworICAgIHN3aXRjaCAoR19QQVJBTV9TUEVDX1ZBTFVFX1RZUEUoc3BlYykp
IHsKKyAgICBjYXNlIEdfVFlQRV9CT09MRUFOOiB7CisgICAgICAgIGdib29sZWFuIHByb3BlcnR5
VmFsdWUgPSBUUlVFOworICAgICAgICBpZiAodmFsdWUgJiYgZ19hc2NpaV9zdHJjYXNlY21wKHZh
bHVlLCAidHJ1ZSIpICYmIHN0cmNtcCh2YWx1ZSwgIjEiKSkKKyAgICAgICAgICAgIHByb3BlcnR5
VmFsdWUgPSBGQUxTRTsKKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYlNldHRpbmdz
KSwgb3B0aW9uTmFtZSwgcHJvcGVydHlWYWx1ZSwgTlVMTCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIEdfVFlQRV9TVFJJTkc6CisgICAgICAgIGdfb2JqZWN0X3NldChHX09CSkVD
VCh3ZWJTZXR0aW5ncyksIG9wdGlvbk5hbWUsIHZhbHVlLCBOVUxMKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBHX1RZUEVfSU5UOiB7CisgICAgICAgIGdsb25nIHByb3BlcnR5VmFsdWU7Cisg
ICAgICAgIGdjaGFyICplbmQ7CisKKyAgICAgICAgZXJybm8gPSAwOworICAgICAgICBwcm9wZXJ0
eVZhbHVlID0gZ19hc2NpaV9zdHJ0b2xsKHZhbHVlLCAmZW5kLCAwKTsKKyAgICAgICAgaWYgKGVy
cm5vID09IEVSQU5HRSB8fCBwcm9wZXJ0eVZhbHVlID4gR19NQVhJTlQgfHwgcHJvcGVydHlWYWx1
ZSA8IEdfTUlOSU5UKSB7CisgICAgICAgICAgICBnX3NldF9lcnJvcihlcnJvciwgR19PUFRJT05f
RVJST1IsIEdfT1BUSU9OX0VSUk9SX0JBRF9WQUxVRSwgIkludGVnZXIgdmFsdWUgJyVzJyBmb3Ig
JXMgb3V0IG9mIHJhbmdlIiwgdmFsdWUsIG9wdGlvbk5hbWVGdWxsKTsKKyAgICAgICAgICAgIHJl
dHVybiBGQUxTRTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXJybm8gfHwgdmFsdWUgPT0gZW5k
KSB7CisgICAgICAgICAgICBnX3NldF9lcnJvcihlcnJvciwgR19PUFRJT05fRVJST1IsIEdfT1BU
SU9OX0VSUk9SX0JBRF9WQUxVRSwgIkNhbm5vdCBwYXJzZSBpbnRlZ2VyIHZhbHVlICclcycgZm9y
ICVzIiwgdmFsdWUsIG9wdGlvbk5hbWVGdWxsKTsKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsK
KyAgICAgICAgfQorICAgICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qod2ViU2V0dGluZ3MpLCBv
cHRpb25OYW1lLCBwcm9wZXJ0eVZhbHVlLCBOVUxMKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGNhc2UgR19UWVBFX0ZMT0FUOiB7CisgICAgICAgIGdkb3VibGUgcHJvcGVydHlWYWx1ZTsK
KyAgICAgICAgZ2NoYXIgKmVuZDsKKworICAgICAgICBlcnJubyA9IDA7CisgICAgICAgIHByb3Bl
cnR5VmFsdWUgPSBnX2FzY2lpX3N0cnRvZCh2YWx1ZSwgJmVuZCk7CisgICAgICAgIGlmIChlcnJu
byA9PSBFUkFOR0UgfHwgcHJvcGVydHlWYWx1ZSA+IEdfTUFYRkxPQVQgfHwgcHJvcGVydHlWYWx1
ZSA8IEdfTUlORkxPQVQpIHsKKyAgICAgICAgICAgIGdfc2V0X2Vycm9yKGVycm9yLCBHX09QVElP
Tl9FUlJPUiwgR19PUFRJT05fRVJST1JfQkFEX1ZBTFVFLCAiRmxvYXQgdmFsdWUgJyVzJyBmb3Ig
JXMgb3V0IG9mIHJhbmdlIiwgdmFsdWUsIG9wdGlvbk5hbWVGdWxsKTsKKyAgICAgICAgICAgIHJl
dHVybiBGQUxTRTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXJybm8gfHwgdmFsdWUgPT0gZW5k
KSB7CisgICAgICAgICAgICBnX3NldF9lcnJvcihlcnJvciwgR19PUFRJT05fRVJST1IsIEdfT1BU
SU9OX0VSUk9SX0JBRF9WQUxVRSwgIkNhbm5vdCBwYXJzZSBmbG9hdCB2YWx1ZSAnJXMnIGZvciAl
cyIsIHZhbHVlLCBvcHRpb25OYW1lRnVsbCk7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7Cisg
ICAgICAgIH0KKyAgICAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHdlYlNldHRpbmdzKSwgb3B0
aW9uTmFtZSwgcHJvcGVydHlWYWx1ZSwgTlVMTCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBkZWZhdWx0OgorICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOworICAgIH0KIAogICAg
IHJldHVybiBUUlVFOwogfQogCi1zdGF0aWMgR0FycmF5KiBnZXRPcHRpb25FbnRyaWVzRnJvbVdl
YktpdFdlYlNldHRpbmdzKFdlYktpdFdlYlNldHRpbmdzICp3ZWJraXRTZXR0aW5ncykKK3N0YXRp
YyBHT3B0aW9uRW50cnkqIGdldE9wdGlvbkVudHJpZXNGcm9tV2ViS2l0V2ViU2V0dGluZ3MoV2Vi
S2l0V2ViU2V0dGluZ3MgKndlYlNldHRpbmdzKQogewogICAgIEdQYXJhbVNwZWMgKipwcm9wZXJ0
eVNwZWNzOwotICAgIEdBcnJheSAqb3B0aW9uRW50cmllc0FycmF5OwotICAgIGd1aW50IG51bVBy
b3BlcnRpZXMsIGk7CisgICAgR09wdGlvbkVudHJ5ICpvcHRpb25FbnRyaWVzOworICAgIGd1aW50
IG51bVByb3BlcnRpZXMsIG51bUVudHJpZXMsIGk7CiAKLSAgICBwcm9wZXJ0eVNwZWNzID0gZ19v
YmplY3RfY2xhc3NfbGlzdF9wcm9wZXJ0aWVzKEdfT0JKRUNUX0dFVF9DTEFTUyh3ZWJraXRTZXR0
aW5ncyksICZudW1Qcm9wZXJ0aWVzKTsKKyAgICBwcm9wZXJ0eVNwZWNzID0gZ19vYmplY3RfY2xh
c3NfbGlzdF9wcm9wZXJ0aWVzKEdfT0JKRUNUX0dFVF9DTEFTUyh3ZWJTZXR0aW5ncyksICZudW1Q
cm9wZXJ0aWVzKTsKICAgICBpZiAoIXByb3BlcnR5U3BlY3MpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgb3B0aW9uRW50cmllc0FycmF5ID0gZ19hcnJheV9uZXcoVFJVRSwgVFJVRSwgc2l6ZW9m
KEdPcHRpb25FbnRyeSkpOwotICAgIGlmICghb3B0aW9uRW50cmllc0FycmF5KSB7Ci0gICAgICAg
IGdfZnJlZShwcm9wZXJ0eVNwZWNzKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCisgICAg
b3B0aW9uRW50cmllcyA9IGdfbmV3MChHT3B0aW9uRW50cnksIG51bVByb3BlcnRpZXMgKyAxKTsK
KyAgICBudW1FbnRyaWVzID0gMDsKICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsg
aSsrKSB7CiAgICAgICAgIEdQYXJhbVNwZWMgKnBhcmFtID0gcHJvcGVydHlTcGVjc1tpXTsKIApA
QCAtMjk2LDkwICszMzAsODMgQEAgc3RhdGljIEdBcnJheSogZ2V0T3B0aW9uRW50cmllc0Zyb21X
ZWJLaXRXZWJTZXR0aW5ncyhXZWJLaXRXZWJTZXR0aW5ncyAqd2Via2l0U2UKICAgICAgICAgR1R5
cGUgZ1BhcmFtVHlwZSA9IEdfUEFSQU1fU1BFQ19WQUxVRV9UWVBFKHBhcmFtKTsKICAgICAgICAg
aWYgKGdQYXJhbVR5cGUgPT0gR19UWVBFX0JPT0xFQU4gfHwgZ1BhcmFtVHlwZSA9PSBHX1RZUEVf
U1RSSU5HIHx8IGdQYXJhbVR5cGUgPT0gR19UWVBFX0lOVAogICAgICAgICAgICAgfHwgZ1BhcmFt
VHlwZSA9PSBHX1RZUEVfRkxPQVQpIHsKLSAgICAgICAgICAgIEdPcHRpb25FbnRyeSBvcHRpb25F
bnRyeTsKLSAgICAgICAgICAgIG9wdGlvbkVudHJ5LmxvbmdfbmFtZSA9IGdfcGFyYW1fc3BlY19n
ZXRfbmFtZShwYXJhbSk7CisgICAgICAgICAgICBHT3B0aW9uRW50cnkgKm9wdGlvbkVudHJ5ID0g
Jm9wdGlvbkVudHJpZXNbbnVtRW50cmllcysrXTsKKyAgICAgICAgICAgIG9wdGlvbkVudHJ5LT5s
b25nX25hbWUgPSBnX3BhcmFtX3NwZWNfZ2V0X25hbWUocGFyYW0pOworCiAgICAgICAgICAgICAv
KiBUaGVyZSBpcyBubyBlYXN5IHdheSB0byBmaWd1cmUgb3VyIHNob3J0IG5hbWUgZm9yIGdlbmVy
YXRlZCBvcHRpb24gZW50cmllcy4KICAgICAgICAgICAgICAgIG9wdGlvbkVudHJ5LnNob3J0X25h
bWU9Ki8KICAgICAgICAgICAgIC8qIEZvciBib29sIGFyZ3VtZW50cyAiZW5hYmxlIiB0eXBlIG1h
a2Ugb3B0aW9uIGFyZ3VtZW50IG5vdCByZXF1aXJlZC4gKi8KLSAgICAgICAgICAgIGlmIChnUGFy
YW1UeXBlID09IEdfVFlQRV9CT09MRUFOICYmIChzdHJzdHIob3B0aW9uRW50cnkubG9uZ19uYW1l
LCAiZW5hYmxlIikpKQotICAgICAgICAgICAgICAgIG9wdGlvbkVudHJ5LmZsYWdzID0gR19PUFRJ
T05fRkxBR19PUFRJT05BTF9BUkc7Ci0gICAgICAgICAgICBvcHRpb25FbnRyeS5hcmcgPSBHX09Q
VElPTl9BUkdfQ0FMTEJBQ0s7Ci0gICAgICAgICAgICBvcHRpb25FbnRyeS5hcmdfZGF0YSA9IHBh
cnNlT3B0aW9uRW50cnlDYWxsYmFjazsKLSAgICAgICAgICAgIG9wdGlvbkVudHJ5LmRlc2NyaXB0
aW9uID0gZ19wYXJhbV9zcGVjX2dldF9ibHVyYihwYXJhbSk7Ci0gICAgICAgICAgICBvcHRpb25F
bnRyeS5hcmdfZGVzY3JpcHRpb24gPSBnX3R5cGVfbmFtZShnUGFyYW1UeXBlKTsKLSAgICAgICAg
ICAgIGdfYXJyYXlfYXBwZW5kX3ZhbChvcHRpb25FbnRyaWVzQXJyYXksIG9wdGlvbkVudHJ5KTsK
KyAgICAgICAgICAgIGlmIChnUGFyYW1UeXBlID09IEdfVFlQRV9CT09MRUFOICYmIChzdHJzdHIo
b3B0aW9uRW50cnktPmxvbmdfbmFtZSwgImVuYWJsZSIpKSkKKyAgICAgICAgICAgICAgICBvcHRp
b25FbnRyeS0+ZmxhZ3MgPSBHX09QVElPTl9GTEFHX09QVElPTkFMX0FSRzsKKyAgICAgICAgICAg
IG9wdGlvbkVudHJ5LT5hcmcgPSBHX09QVElPTl9BUkdfQ0FMTEJBQ0s7CisgICAgICAgICAgICBv
cHRpb25FbnRyeS0+YXJnX2RhdGEgPSBwYXJzZU9wdGlvbkVudHJ5Q2FsbGJhY2s7CisgICAgICAg
ICAgICBvcHRpb25FbnRyeS0+ZGVzY3JpcHRpb24gPSBnX3BhcmFtX3NwZWNfZ2V0X2JsdXJiKHBh
cmFtKTsKKyAgICAgICAgICAgIG9wdGlvbkVudHJ5LT5hcmdfZGVzY3JpcHRpb24gPSBnX3R5cGVf
bmFtZShnUGFyYW1UeXBlKTsKICAgICAgICAgfQogICAgIH0KICAgICBnX2ZyZWUocHJvcGVydHlT
cGVjcyk7CiAKLSAgICByZXR1cm4gb3B0aW9uRW50cmllc0FycmF5OwotfQotCi1zdGF0aWMgdm9p
ZCB0cmFuc2Zvcm1TdHJpbmdUb0Jvb2xlYW4oY29uc3QgR1ZhbHVlICpzcmNWYWx1ZSwgR1ZhbHVl
ICpkZXN0VmFsdWUpCi17Ci0gICAgY29uc3QgY2hhciogc3RyVmFsdWUgPSBnX3ZhbHVlX2dldF9z
dHJpbmcoc3JjVmFsdWUpOwotICAgIGlmIChzdHJWYWx1ZSkgewotICAgICAgICBpZiAoIWdfYXNj
aWlfc3RyY2FzZWNtcChzdHJWYWx1ZSwgInRydWUiKSB8fCAhc3RyY21wKHN0clZhbHVlLCAiMSIp
KQotICAgICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbihkZXN0VmFsdWUsIFRSVUUpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKGRlc3RWYWx1ZSwgRkFM
U0UpOwotICAgIH0gZWxzZSAvKiBXaGVuIG5vIG9wdGlvbiB2YWx1ZSBwcm92aWRlZCwgc2V0ICJU
UlVFIiBieSBkZWZhdWx0LiAqLwotICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKGRlc3RWYWx1
ZSwgVFJVRSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHRyYW5zZm9ybVN0cmluZ1RvSW50KGNvbnN0IEdW
YWx1ZSAqc3JjVmFsdWUsIEdWYWx1ZSAqZGVzdFZhbHVlKQotewotICAgIGdfdmFsdWVfc2V0X2lu
dChkZXN0VmFsdWUsIGF0b2koZ192YWx1ZV9nZXRfc3RyaW5nKHNyY1ZhbHVlKSkpOworICAgIHJl
dHVybiBvcHRpb25FbnRyaWVzOwogfQogCi1zdGF0aWMgdm9pZCB0cmFuc2Zvcm1TdHJpbmdUb0Zs
b2F0KGNvbnN0IEdWYWx1ZSAqc3JjVmFsdWUsIEdWYWx1ZSAqZGVzdFZhbHVlKQorc3RhdGljIGdi
b29sZWFuIGFkZFdlYlNldHRpbmdzR3JvdXBUb0NvbnRleHQoR09wdGlvbkNvbnRleHQgKmNvbnRl
eHQsIFdlYktpdFdlYlNldHRpbmdzKiB3ZWJraXRTZXR0aW5ncykKIHsKLSAgICBnX3ZhbHVlX3Nl
dF9mbG9hdChkZXN0VmFsdWUsIGF0b2YoZ192YWx1ZV9nZXRfc3RyaW5nKHNyY1ZhbHVlKSkpOwot
fQotCi1zdGF0aWMgZ2Jvb2xlYW4gcGFyc2VBZGRpdGlvbmFsT3B0aW9ucyhXZWJLaXRXZWJWaWV3
ICp3ZWJWaWV3LCBpbnQgYXJnYywgY2hhciogYXJndltdKQotewotICAgIGdfdmFsdWVfcmVnaXN0
ZXJfdHJhbnNmb3JtX2Z1bmMoR19UWVBFX1NUUklORywgR19UWVBFX0JPT0xFQU4sIHRyYW5zZm9y
bVN0cmluZ1RvQm9vbGVhbik7Ci0gICAgZ192YWx1ZV9yZWdpc3Rlcl90cmFuc2Zvcm1fZnVuYyhH
X1RZUEVfU1RSSU5HLCBHX1RZUEVfSU5ULCB0cmFuc2Zvcm1TdHJpbmdUb0ludCk7Ci0gICAgZ192
YWx1ZV9yZWdpc3Rlcl90cmFuc2Zvcm1fZnVuYyhHX1RZUEVfU1RSSU5HLCBHX1RZUEVfRkxPQVQs
IHRyYW5zZm9ybVN0cmluZ1RvRmxvYXQpOwotCi0KLSAgICBXZWJLaXRXZWJTZXR0aW5ncyAqd2Vi
a2l0U2V0dGluZ3MgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpOwotICAg
IEdBcnJheSAqb3B0aW9uRW50cmllc0FycmF5ID0gZ2V0T3B0aW9uRW50cmllc0Zyb21XZWJLaXRX
ZWJTZXR0aW5ncyh3ZWJraXRTZXR0aW5ncyk7CisgICAgR09wdGlvbkVudHJ5ICpvcHRpb25FbnRy
aWVzID0gZ2V0T3B0aW9uRW50cmllc0Zyb21XZWJLaXRXZWJTZXR0aW5ncyh3ZWJraXRTZXR0aW5n
cyk7CisgICAgaWYgKCFvcHRpb25FbnRyaWVzKQorICAgICAgICByZXR1cm4gRkFMU0U7CiAKICAg
ICBHT3B0aW9uR3JvdXAgKndlYlNldHRpbmdzR3JvdXAgPSBnX29wdGlvbl9ncm91cF9uZXcoIndl
YnNldHRpbmdzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIldlYktpdFdlYlNldHRpbmdzIHdyaXRhYmxlIHByb3BlcnRpZXMgZm9yIGRl
ZmF1bHQgV2ViS2l0V2ViVmlldyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJXZWJLaXRXZWJTZXR0aW5ncyBwcm9wZXJ0aWVzIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vi
a2l0U2V0dGluZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5VTEwpOwotICAgIGdfb3B0aW9uX2dyb3VwX2FkZF9lbnRyaWVzKHdlYlNl
dHRpbmdzR3JvdXAsIChHT3B0aW9uRW50cnkqKSBvcHRpb25FbnRyaWVzQXJyYXktPmRhdGEpOwor
ICAgIGdfb3B0aW9uX2dyb3VwX2FkZF9lbnRyaWVzKHdlYlNldHRpbmdzR3JvdXAsIG9wdGlvbkVu
dHJpZXMpOworICAgIGdfZnJlZShvcHRpb25FbnRyaWVzKTsKIAotICAgIEdPcHRpb25Db250ZXh0
ICpjb250ZXh0ID0gZ19vcHRpb25fY29udGV4dF9uZXcoIltVUkxdIik7CisgICAgLyogT3B0aW9u
IGNvbnRleHQgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSBncm91cC4gKi8KICAgICBnX29wdGlvbl9j
b250ZXh0X2FkZF9ncm91cChjb250ZXh0LCB3ZWJTZXR0aW5nc0dyb3VwKTsKIAotICAgIEdFcnJv
ciAqZXJyb3IgPSAwOwotICAgIGlmICghZ19vcHRpb25fY29udGV4dF9wYXJzZShjb250ZXh0LCAm
YXJnYywgJmFyZ3YsICZlcnJvcikpIHsKLSAgICAgICAgZ19wcmludCgiRmFpbGVkIHRvIHBhcnNl
IGFyZ3VtZW50czogJXNcbiIsIGVycm9yLT5tZXNzYWdlKTsKLSAgICAgICAgZ19lcnJvcl9mcmVl
KGVycm9yKTsKLSAgICAgICAgZ19vcHRpb25fY29udGV4dF9mcmVlKGNvbnRleHQpOwotICAgICAg
ICBnX2FycmF5X2ZyZWUob3B0aW9uRW50cmllc0FycmF5LCBUUlVFKTsKLSAgICAgICAgcmV0dXJu
IEZBTFNFOwotICAgIH0KLSAgICBnX29wdGlvbl9jb250ZXh0X2ZyZWUoY29udGV4dCk7Ci0gICAg
Z19hcnJheV9mcmVlKG9wdGlvbkVudHJpZXNBcnJheSwgVFJVRSk7CiAgICAgcmV0dXJuIFRSVUU7
CiB9CiAjZW5kaWYKIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKIHsKLSAgICBX
ZWJLaXRXZWJWaWV3ICp3ZWJWaWV3OwotICAgIEd0a1dpZGdldCAqbWFpbl93aW5kb3c7CisjaWZu
ZGVmIFdFQktJVDIKKyAgICBzdGF0aWMgV2ViS2l0V2ViU2V0dGluZ3MgKndlYmtpdFNldHRpbmdz
ID0gMDsKKyNlbmRpZgorICAgIHN0YXRpYyBjb25zdCBnY2hhciAqKnVyaUFyZ3VtZW50cyA9IDA7
CisgICAgc3RhdGljIGNvbnN0IEdPcHRpb25FbnRyeSBjb21tYW5kTGluZU9wdGlvbnNbXSA9Cisg
ICAgeworICAgICAgICB7IEdfT1BUSU9OX1JFTUFJTklORywgMCwgMCwgR19PUFRJT05fQVJHX0ZJ
TEVOQU1FX0FSUkFZLCAmdXJpQXJndW1lbnRzLCAwLCAiW1VSTF0iIH0sCisgICAgICAgIHsgMCwg
MCwgMCwgMCwgMCwgMCwgMCB9CisgICAgfTsKIAogICAgIGd0a19pbml0KCZhcmdjLCAmYXJndik7
CiAgICAgaWYgKCFnX3RocmVhZF9zdXBwb3J0ZWQoKSkKICAgICAgICAgZ190aHJlYWRfaW5pdChO
VUxMKTsKIAorICAgIEdPcHRpb25Db250ZXh0ICpjb250ZXh0ID0gZ19vcHRpb25fY29udGV4dF9u
ZXcoMCk7CisgICAgZ19vcHRpb25fY29udGV4dF9hZGRfbWFpbl9lbnRyaWVzKGNvbnRleHQsIGNv
bW1hbmRMaW5lT3B0aW9ucywgMCk7CisgICAgZ19vcHRpb25fY29udGV4dF9hZGRfZ3JvdXAoY29u
dGV4dCwgZ3RrX2dldF9vcHRpb25fZ3JvdXAoVFJVRSkpOworI2lmbmRlZiBXRUJLSVQyCisgICAg
d2Via2l0U2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpOworICAgIGlmICghYWRk
V2ViU2V0dGluZ3NHcm91cFRvQ29udGV4dChjb250ZXh0LCB3ZWJraXRTZXR0aW5ncykpIHsKKyAg
ICAgICAgZ19vYmplY3RfdW5yZWYod2Via2l0U2V0dGluZ3MpOworICAgICAgICB3ZWJraXRTZXR0
aW5ncyA9IDA7CisgICAgfQorI2VuZGlmCisKKyAgICBHRXJyb3IgKmVycm9yID0gMDsKKyAgICBp
ZiAoIWdfb3B0aW9uX2NvbnRleHRfcGFyc2UoY29udGV4dCwgJmFyZ2MsICZhcmd2LCAmZXJyb3Ip
KSB7CisgICAgICAgIGdfcHJpbnRlcnIoIkNhbm5vdCBwYXJzZSBhcmd1bWVudHM6ICVzXG4iLCBl
cnJvci0+bWVzc2FnZSk7CisgICAgICAgIGdfZXJyb3JfZnJlZShlcnJvcik7CisgICAgICAgIGdf
b3B0aW9uX2NvbnRleHRfZnJlZShjb250ZXh0KTsKKworICAgICAgICByZXR1cm4gMTsKKyAgICB9
CisgICAgZ19vcHRpb25fY29udGV4dF9mcmVlKGNvbnRleHQpOworCiAjaWZuZGVmIFdFQktJVDIK
ICNpZmRlZiBTT1VQX1RZUEVfUFJPWFlfUkVTT0xWRVJfREVGQVVMVAogICAgIHNvdXBfc2Vzc2lv
bl9hZGRfZmVhdHVyZV9ieV90eXBlKHdlYmtpdF9nZXRfZGVmYXVsdF9zZXNzaW9uKCksIFNPVVBf
VFlQRV9QUk9YWV9SRVNPTFZFUl9ERUZBVUxUKTsKQEAgLTM5MywxNCArNDIwLDE3IEBAIGludCBt
YWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAjZW5kaWYKICNlbmRpZgogCi0gICAgbWFpbl93
aW5kb3cgPSBjcmVhdGVXaW5kb3coJndlYlZpZXcpOworICAgIFdlYktpdFdlYlZpZXcgKndlYlZp
ZXc7CisgICAgR3RrV2lkZ2V0ICptYWluX3dpbmRvdyA9IGNyZWF0ZVdpbmRvdygmd2ViVmlldyk7
CiAKICNpZm5kZWYgV0VCS0lUMgotICAgIGlmICghcGFyc2VBZGRpdGlvbmFsT3B0aW9ucyh3ZWJW
aWV3LCBhcmdjLCBhcmd2KSkKLSAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKHdlYmtpdFNldHRp
bmdzKSB7CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3MoV0VCS0lUX1dFQl9W
SUVXKHdlYlZpZXcpLCB3ZWJraXRTZXR0aW5ncyk7CisgICAgICAgIGdfb2JqZWN0X3VucmVmKHdl
YmtpdFNldHRpbmdzKTsKKyAgICB9CiAjZW5kaWYKIAotICAgIGdjaGFyICp1cmkgPShnY2hhciop
KGFyZ2MgPiAxID8gYXJndlsxXSA6ICJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIik7CisgICAgY29u
c3QgZ2NoYXIgKnVyaSA9ICh1cmlBcmd1bWVudHMgPyB1cmlBcmd1bWVudHNbMF0gOiAiaHR0cDov
L3d3dy5nb29nbGUuY29tLyIpOwogICAgIGdjaGFyICpmaWxlVVJMID0gZmlsZW5hbWVUb1VSTCh1
cmkpOwogCiAgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKHdlYlZpZXcsIGZpbGVVUkwgPyBm
aWxlVVJMIDogdXJpKTsK
</data>
<flag name="review"
          id="92286"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>