<?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>111574</bug_id>
          
          <creation_ts>2013-03-06 06:32:37 -0800</creation_ts>
          <short_desc>[WK2][GTK] Invalid request returned by webkit_download_get_request if called before download starts</short_desc>
          <delta_ts>2013-03-08 10:44:42 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Manuel Rego Casasnovas">rego</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>cgarcia</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>848804</commentid>
    <comment_count>0</comment_count>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2013-03-06 06:32:37 -0800</bug_when>
    <thetext>The following code will return an invalid request:

    WebKitDownload* download = webkit_web_context_download_uri(webkit_web_context_get_default(), &quot;http://www.google.com/&quot;);
    WebKitURIRequest* request = webkit_download_get_request(download);
    // Request is invalid here, for example next method will return an empty string
    webkit_uri_request_get_uri(request); // Empty instead of &quot;http://www.google.com/&quot;

However, if you wait till download stats, the request is valid and the method webkit_uri_request_get_uri() works properly.

Taking a look to the related code:

* WebKitDownload.cpp:

WebKitURIRequest* webkit_download_get_request(WebKitDownload* download)
{
    g_return_val_if_fail(WEBKIT_IS_DOWNLOAD(download), 0);

    WebKitDownloadPrivate* priv = download-&gt;priv;
    if (!priv-&gt;request)
        priv-&gt;request = adoptGRef(webkitURIRequestCreateForResourceRequest(priv-&gt;download-&gt;request()));
    return priv-&gt;request.get();
}

* DownloadProxy.h:

    const WebCore::ResourceRequest&amp; request() const { return m_request; }

* DownloadProxy.cpp:

void DownloadProxy::didStart(const ResourceRequest&amp; request)
{
    m_request = request;
    
    if (!m_webContext)
        return;
        
    m_webContext-&gt;downloadClient().didStart(m_webContext.get(), this);
}

In WebKitDownload priv-&gt;download is a DownloadProxy. So, if it&apos;s called before DownloadProxy::didStart the request is not initialized yet.

There&apos;s even a bigger problem in webkit_download_get_request, as it&apos;s caching the request in priv-&gt;request. If you call webkit_download_get_request before didStart (like in the example above) and you call it again after didStart, it&apos;s going to return always an invalid request.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848810</commentid>
    <comment_count>1</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-06 06:41:53 -0800</bug_when>
    <thetext>The problem only happens for downloads started manually with webkit_web_context_download or webkit_web_view_download, because for downloads started implicitly, you get the download object from the download-started signal. 
So, I think that instead of creating the uri request on demand, we should set it from download-started and document that until download-started is emitted, the request will be NULL. 
Or for the cases where the download is started manually, we can create a first request for the requested URI and overwrite it with the download proxy request when download-started is emitted. This will ensure that webkit_download_get_request will always return a valid object, but it might be weird that the request changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848823</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-06 06:53:48 -0800</bug_when>
    <thetext>In case of a download started manually, the request used by the web process is the one sent from the ui process, so we can just use that always. I&apos;ll make a patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849829</commentid>
    <comment_count>3</comment_count>
      <attachid>191938</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-07 00:35:45 -0800</bug_when>
    <thetext>Created attachment 191938
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849848</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-07 01:08:58 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849849</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-07 01:10:20 -0800</bug_when>
    <thetext>Adding WebKit2 owners to CC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849857</commentid>
    <comment_count>6</comment_count>
      <attachid>191938</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-03-07 01:23:32 -0800</bug_when>
    <thetext>Comment on attachment 191938
Patch

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

&gt; Source/WebKit2/ChangeLog:9
&gt; +        Create download objects with a request URI for downloads started
&gt; +        manually.

Your ChangeLog should explain why the bug happened and why this fixes this.

It is good for ChangeLog to describe both the Why? and the How?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849858</commentid>
    <comment_count>7</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-03-07 01:24:18 -0800</bug_when>
    <thetext>I don&apos;t know enough about the domain to sign off on this. Maybe Alexey?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849860</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-07 01:26:51 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 191938 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=191938&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:9
&gt; &gt; +        Create download objects with a request URI for downloads started
&gt; &gt; +        manually.
&gt; 
&gt; Your ChangeLog should explain why the bug happened and why this fixes this.
&gt; 
&gt; It is good for ChangeLog to describe both the Why? and the How?

You are right, I wrote this too fast, I&apos;ll explain the issue and how it&apos;s solved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850127</commentid>
    <comment_count>9</comment_count>
      <attachid>192009</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-07 08:42:38 -0800</bug_when>
    <thetext>Created attachment 192009
Updated patch

Explained the issue and the solution in the changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850180</commentid>
    <comment_count>10</comment_count>
      <attachid>192009</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-07 09:48:29 -0800</bug_when>
    <thetext>Comment on attachment 192009
Updated patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitDownloadPrivate.h:30
&gt; +WebKitDownload* webkitDownloadCreateForRequest(WebKit::DownloadProxy*, const WebCore::ResourceRequest&amp;);

Exposing WebCore types in WebKit API seems surprising. Is this something the Gtk port routinely does?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850188</commentid>
    <comment_count>11</comment_count>
      <attachid>192009</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-03-07 09:55:07 -0800</bug_when>
    <thetext>Comment on attachment 192009
Updated patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitDownloadPrivate.h:30
&gt;&gt; +WebKitDownload* webkitDownloadCreateForRequest(WebKit::DownloadProxy*, const WebCore::ResourceRequest&amp;);
&gt; 
&gt; Exposing WebCore types in WebKit API seems surprising. Is this something the Gtk port routinely does?

In contrast to the Mac port private headers, we do not ship ours or make the symbols in them visible in the shared object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850920</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-07 23:29:31 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 192009 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=192009&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitDownloadPrivate.h:30
&gt; &gt; +WebKitDownload* webkitDownloadCreateForRequest(WebKit::DownloadProxy*, const WebCore::ResourceRequest&amp;);
&gt; 
&gt; Exposing WebCore types in WebKit API seems surprising. Is this something the Gtk port routinely does?

This is a private header, it&apos;s not installed and the symbols are not exported.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851292</commentid>
    <comment_count>13</comment_count>
      <attachid>192009</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-03-08 10:14:16 -0800</bug_when>
    <thetext>Comment on attachment 192009
Updated patch

Looks good to me! Nice cleanup in the unit tests too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851320</commentid>
    <comment_count>14</comment_count>
      <attachid>192009</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-03-08 10:38:44 -0800</bug_when>
    <thetext>Comment on attachment 192009
Updated patch

Thanks for the review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851321</commentid>
    <comment_count>15</comment_count>
      <attachid>192009</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-08 10:44:37 -0800</bug_when>
    <thetext>Comment on attachment 192009
Updated patch

Clearing flags on attachment: 192009

Committed r145244: &lt;http://trac.webkit.org/changeset/145244&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851322</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-08 10:44:42 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191938</attachid>
            <date>2013-03-07 00:35:45 -0800</date>
            <delta_ts>2013-03-07 08:42:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-download-request.diff</filename>
            <type>text/plain</type>
            <size>12066</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmZDQwNjdjLi44ZWQ0YzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTMtMDMtMDcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtXSzJdW0dUS10gSW52YWxpZCByZXF1ZXN0IHJldHVybmVkIGJ5IHdlYmtp
dF9kb3dubG9hZF9nZXRfcmVxdWVzdCBpZiBjYWxsZWQgYmVmb3JlIGRvd25sb2FkIHN0YXJ0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExNTc0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3JlYXRlIGRv
d25sb2FkIG9iamVjdHMgd2l0aCBhIHJlcXVlc3QgVVJJIGZvciBkb3dubG9hZHMgc3RhcnRlZAor
ICAgICAgICBtYW51YWxseS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERv
d25sb2FkLmNwcDoKKyAgICAgICAgKHdlYmtpdERvd25sb2FkQ3JlYXRlRm9yUmVxdWVzdCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RG93bmxvYWRQcml2YXRlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3
ZWJraXRXZWJDb250ZXh0U3RhcnREb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvVGVzdERvd25sb2Fkcy5jcHA6CisgICAgICAgICh0ZXN0RG93bmxvYWRMb2NhbEZp
bGUpOgorICAgICAgICAodGVzdERvd25sb2FkTG9jYWxGaWxlRXJyb3IpOgorICAgICAgICAodGVz
dERvd25sb2FkUmVtb3RlRmlsZSk6CisgICAgICAgICh0ZXN0RG93bmxvYWRSZW1vdGVGaWxlRXJy
b3IpOgorICAgICAgICAodGVzdFBvbGljeVJlc3BvbnNlRG93bmxvYWQpOgorCiAyMDEzLTAzLTA2
ICBYYW4gTG9wZXogIDx4YW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBXaGVuIHRoZSBX
ZWJQcm9jZXNzIGNyYXNoZXMsIGEgc2lnbmFsIHNob3VsZCBiZSBlbWl0dGVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5jcHAKaW5kZXgg
ZThhNGRjNy4uZTUzMjU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0RG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdERvd25sb2FkLmNwcApAQCAtMjc2LDYgKzI3NiwxMyBAQCBXZWJLaXREb3du
bG9hZCogd2Via2l0RG93bmxvYWRDcmVhdGUoRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSkK
ICAgICByZXR1cm4gZG93bmxvYWQ7CiB9CiAKK1dlYktpdERvd25sb2FkKiB3ZWJraXREb3dubG9h
ZENyZWF0ZUZvclJlcXVlc3QoRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIFdlYktpdERvd25sb2FkKiBkb3dubG9hZCA9
IHdlYmtpdERvd25sb2FkQ3JlYXRlKGRvd25sb2FkUHJveHkpOworICAgIGRvd25sb2FkLT5wcml2
LT5yZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdFVSSVJlcXVlc3RDcmVhdGVGb3JSZXNvdXJjZVJl
cXVlc3QocmVxdWVzdCkpOworICAgIHJldHVybiBkb3dubG9hZDsKK30KKwogdm9pZCB3ZWJraXRE
b3dubG9hZFNldFJlc3BvbnNlKFdlYktpdERvd25sb2FkKiBkb3dubG9hZCwgV2ViS2l0VVJJUmVz
cG9uc2UqIHJlc3BvbnNlKQogewogICAgIGRvd25sb2FkLT5wcml2LT5yZXNwb25zZSA9IHJlc3Bv
bnNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
RG93bmxvYWRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXREb3dubG9hZFByaXZhdGUuaAppbmRleCBkN2I0MzA1Li45ODBhZDczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZFByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZFByaXZh
dGUuaApAQCAtMjMsOSArMjMsMTEgQEAKICNpbmNsdWRlICJXZWJLaXREb3dubG9hZC5oIgogI2lu
Y2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3Iu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIAogV2ViS2l0RG93bmxvYWQqIHdlYmtpdERvd25sb2FkQ3JlYXRlKFdl
YktpdDo6RG93bmxvYWRQcm94eSopOworV2ViS2l0RG93bmxvYWQqIHdlYmtpdERvd25sb2FkQ3Jl
YXRlRm9yUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkqLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKTsKIGJvb2wgd2Via2l0RG93bmxvYWRJc0NhbmNlbGxlZChXZWJLaXREb3du
bG9hZCopOwogdm9pZCB3ZWJraXREb3dubG9hZFNldFJlc3BvbnNlKFdlYktpdERvd25sb2FkKiwg
V2ViS2l0VVJJUmVzcG9uc2UqKTsKIHZvaWQgd2Via2l0RG93bmxvYWRTZXRXZWJWaWV3KFdlYktp
dERvd25sb2FkKiwgV2ViS2l0V2ViVmlldyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCA0ZTdiZDMyLi44NDc3
YzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJDb250ZXh0LmNwcApAQCAtODE4LDggKzgxOCw5IEBAIFdlYktpdERvd25sb2FkKiB3ZWJr
aXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZChEb3dubG9hZFByb3h5KiBkb3dubG9hZFBy
b3h5CiAKIFdlYktpdERvd25sb2FkKiB3ZWJraXRXZWJDb250ZXh0U3RhcnREb3dubG9hZChXZWJL
aXRXZWJDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiB1cmksIFdlYlBhZ2VQcm94eSogaW5p
dGlhdGluZ1BhZ2UpCiB7Ci0gICAgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSA9IGNvbnRl
eHQtPnByaXYtPmNvbnRleHQtPmRvd25sb2FkKGluaXRpYXRpbmdQYWdlLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QoU3RyaW5nOjpmcm9tVVRGOCh1cmkpKSk7Ci0gICAgV2ViS2l0RG93bmxvYWQq
IGRvd25sb2FkID0gd2Via2l0RG93bmxvYWRDcmVhdGUoZG93bmxvYWRQcm94eSk7CisgICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoU3RyaW5nOjpmcm9tVVRGOCh1cmkpKTsKKyAg
ICBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5ID0gY29udGV4dC0+cHJpdi0+Y29udGV4dC0+
ZG93bmxvYWQoaW5pdGlhdGluZ1BhZ2UsIHJlcXVlc3QpOworICAgIFdlYktpdERvd25sb2FkKiBk
b3dubG9hZCA9IHdlYmtpdERvd25sb2FkQ3JlYXRlRm9yUmVxdWVzdChkb3dubG9hZFByb3h5LCBy
ZXF1ZXN0KTsKICAgICBkb3dubG9hZHNNYXAoKS5zZXQoZG93bmxvYWRQcm94eSwgZG93bmxvYWQp
OwogICAgIHJldHVybiBkb3dubG9hZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3REb3dubG9hZHMuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdERvd25sb2Fkcy5jcHAKaW5kZXggOWE5ZjU1YS4u
Y2UxNTk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvVGVzdERvd25sb2Fkcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvVGVzdERvd25sb2Fkcy5jcHAKQEAgLTE1Myw5ICsxNTMsMTggQEAgcHVibGljOgog
ICAgICAgICB3ZWJraXRfZG93bmxvYWRfc2V0X2Rlc3RpbmF0aW9uKGRvd25sb2FkLCBkZXN0aW5h
dGlvblVSSS5nZXQoKSk7CiAgICAgfQogCi0gICAgdm9pZCB3YWl0VW50aWxEb3dubG9hZEZpbmlz
aGVzKCkKKyAgICBXZWJLaXREb3dubG9hZCogZG93bmxvYWRVUklBbmRXYWl0VW50aWxGaW5pc2hl
cyhjb25zdCBDU3RyaW5nJiByZXF1ZXN0VVJJKQogICAgIHsKKyAgICAgICAgV2ViS2l0RG93bmxv
YWQqIGRvd25sb2FkID0gd2Via2l0X3dlYl9jb250ZXh0X2Rvd25sb2FkX3VyaShtX3dlYkNvbnRl
eHQsIHJlcXVlc3RVUkkuZGF0YSgpKTsKKyAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hl
blRlc3RGaW5pc2hlcyhHX09CSkVDVChkb3dubG9hZCkpOworCisgICAgICAgIFdlYktpdFVSSVJl
cXVlc3QqIHJlcXVlc3QgPSB3ZWJraXRfZG93bmxvYWRfZ2V0X3JlcXVlc3QoZG93bmxvYWQpOwor
ICAgICAgICBnX2Fzc2VydChyZXF1ZXN0KTsKKyAgICAgICAgQVNTRVJUX0NNUF9DU1RSSU5HKHdl
YmtpdF91cmlfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpLCA9PSwgcmVxdWVzdFVSSSk7CisKICAg
ICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworCisgICAgICAgIHJldHVybiBkb3du
bG9hZDsKICAgICB9CiAKICAgICB2b2lkIGNoZWNrRGVzdGluYXRpb25BbmREZWxldGVGaWxlKFdl
YktpdERvd25sb2FkKiBkb3dubG9hZCwgY29uc3QgY2hhciogZXhwZWN0ZWROYW1lKQpAQCAtMTgx
LDkgKzE5MCw3IEBAIHN0YXRpYyB2b2lkIHRlc3REb3dubG9hZExvY2FsRmlsZShEb3dubG9hZFRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgR1JlZlB0cjxHRmlsZT4gc291cmNlID0gYWRv
cHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoc291cmNlUGF0aC5nZXQoKSkpOwogICAgIEdSZWZQ
dHI8R0ZpbGVJbmZvPiBzb3VyY2VJbmZvID0gYWRvcHRHUmVmKGdfZmlsZV9xdWVyeV9pbmZvKHNv
dXJjZS5nZXQoKSwgR19GSUxFX0FUVFJJQlVURV9TVEFOREFSRF9TSVpFLCBzdGF0aWNfY2FzdDxH
RmlsZVF1ZXJ5SW5mb0ZsYWdzPigwKSwgMCwgMCkpOwogICAgIEdPd25QdHI8Y2hhcj4gc291cmNl
VVJJKGdfZmlsZV9nZXRfdXJpKHNvdXJjZS5nZXQoKSkpOwotICAgIEdSZWZQdHI8V2ViS2l0RG93
bmxvYWQ+IGRvd25sb2FkID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJfY29udGV4dF9kb3dubG9hZF91
cmkodGVzdC0+bV93ZWJDb250ZXh0LCBzb3VyY2VVUkkuZ2V0KCkpKTsKLSAgICB0ZXN0LT5hc3Nl
cnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGRvd25sb2FkLmdldCgp
KSk7Ci0gICAgdGVzdC0+d2FpdFVudGlsRG93bmxvYWRGaW5pc2hlcygpOworICAgIEdSZWZQdHI8
V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gYWRvcHRHUmVmKHRlc3QtPmRvd25sb2FkVVJJQW5k
V2FpdFVudGlsRmluaXNoZXMoc291cmNlVVJJLmdldCgpKSk7CiAgICAgZ19hc3NlcnQoIXdlYmtp
dF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKIAogICAgIFZlY3RvcjxE
b3dubG9hZFRlc3Q6OkRvd25sb2FkRXZlbnQ+JiBldmVudHMgPSB0ZXN0LT5tX2Rvd25sb2FkRXZl
bnRzOwpAQCAtMjQ2LDkgKzI1Myw3IEBAIHB1YmxpYzoKIHN0YXRpYyB2b2lkIHRlc3REb3dubG9h
ZExvY2FsRmlsZUVycm9yKERvd25sb2FkRXJyb3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
ewogICAgIHRlc3QtPm1fZXhwZWN0ZWRFcnJvciA9IFdFQktJVF9ET1dOTE9BRF9FUlJPUl9ORVRX
T1JLOwotICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gYWRvcHRHUmVmKHdl
YmtpdF93ZWJfY29udGV4dF9kb3dubG9hZF91cmkodGVzdC0+bV93ZWJDb250ZXh0LCAiZmlsZTov
Ly9mb28vYmFyIikpOwotICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0Rmlu
aXNoZXMoR19PQkpFQ1QoZG93bmxvYWQuZ2V0KCkpKTsKLSAgICB0ZXN0LT53YWl0VW50aWxEb3du
bG9hZEZpbmlzaGVzKCk7CisgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSBh
ZG9wdEdSZWYodGVzdC0+ZG93bmxvYWRVUklBbmRXYWl0VW50aWxGaW5pc2hlcygiZmlsZTovLy9m
b28vYmFyIikpOwogICAgIGdfYXNzZXJ0KCF3ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KGRv
d25sb2FkLmdldCgpKSk7CiAKICAgICBWZWN0b3I8RG93bmxvYWRUZXN0OjpEb3dubG9hZEV2ZW50
PiYgZXZlbnRzID0gdGVzdC0+bV9kb3dubG9hZEV2ZW50czsKQEAgLTI2MywxMiArMjY4LDkgQEAg
c3RhdGljIHZvaWQgdGVzdERvd25sb2FkTG9jYWxGaWxlRXJyb3IoRG93bmxvYWRFcnJvclRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgR093blB0cjxjaGFyPiBwYXRoKGdfYnVpbGRfZmls
ZW5hbWUoVGVzdDo6Z2V0V2ViS2l0MVRlc3RSZXNvdWNlc0RpcigpLmRhdGEoKSwgInRlc3QucGRm
IiwgTlVMTCkpOwogICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25l
d19mb3JfcGF0aChwYXRoLmdldCgpKSk7CiAgICAgR093blB0cjxjaGFyPiB1cmkoZ19maWxlX2dl
dF91cmkoZmlsZS5nZXQoKSkpOwotICAgIGRvd25sb2FkID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJf
Y29udGV4dF9kb3dubG9hZF91cmkodGVzdC0+bV93ZWJDb250ZXh0LCB1cmkuZ2V0KCkpKTsKLSAg
ICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGRv
d25sb2FkLmdldCgpKSk7Ci0gICAgdGVzdC0+d2FpdFVudGlsRG93bmxvYWRGaW5pc2hlcygpOwor
ICAgIGRvd25sb2FkID0gYWRvcHRHUmVmKHRlc3QtPmRvd25sb2FkVVJJQW5kV2FpdFVudGlsRmlu
aXNoZXModXJpLmdldCgpKSk7CiAgICAgZ19hc3NlcnQoIXdlYmtpdF9kb3dubG9hZF9nZXRfd2Vi
X3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKIAotICAgIGV2ZW50cyA9IHRlc3QtPm1fZG93bmxvYWRF
dmVudHM7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCA0KTsKICAgICBn
X2Fzc2VydF9jbXBpbnQoZXZlbnRzWzBdLCA9PSwgRG93bmxvYWRUZXN0OjpTdGFydGVkKTsKICAg
ICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzFdLCA9PSwgRG93bmxvYWRUZXN0OjpSZWNlaXZlZFJl
c3BvbnNlKTsKQEAgLTI3OSwxMiArMjgxLDkgQEAgc3RhdGljIHZvaWQgdGVzdERvd25sb2FkTG9j
YWxGaWxlRXJyb3IoRG93bmxvYWRFcnJvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAg
dGVzdC0+Y2hlY2tEZXN0aW5hdGlvbkFuZERlbGV0ZUZpbGUoZG93bmxvYWQuZ2V0KCksICJiYXIi
KTsKIAogICAgIHRlc3QtPm1fZXhwZWN0ZWRFcnJvciA9IFdFQktJVF9ET1dOTE9BRF9FUlJPUl9D
QU5DRUxMRURfQllfVVNFUjsKLSAgICBkb3dubG9hZCA9IGFkb3B0R1JlZih3ZWJraXRfd2ViX2Nv
bnRleHRfZG93bmxvYWRfdXJpKHRlc3QtPm1fd2ViQ29udGV4dCwgdXJpLmdldCgpKSk7Ci0gICAg
dGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChkb3du
bG9hZC5nZXQoKSkpOwotICAgIHRlc3QtPndhaXRVbnRpbERvd25sb2FkRmluaXNoZXMoKTsKKyAg
ICBkb3dubG9hZCA9IGFkb3B0R1JlZih0ZXN0LT5kb3dubG9hZFVSSUFuZFdhaXRVbnRpbEZpbmlz
aGVzKHVyaS5nZXQoKSkpOwogICAgIGdfYXNzZXJ0KCF3ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92
aWV3KGRvd25sb2FkLmdldCgpKSk7CiAKLSAgICBldmVudHMgPSB0ZXN0LT5tX2Rvd25sb2FkRXZl
bnRzOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgpLCA9PSwgNCk7CiAgICAgZ19h
c3NlcnRfY21waW50KGV2ZW50c1swXSwgPT0sIERvd25sb2FkVGVzdDo6U3RhcnRlZCk7CiAgICAg
Z19hc3NlcnRfY21waW50KGV2ZW50c1sxXSwgPT0sIERvd25sb2FkVGVzdDo6UmVjZWl2ZWRSZXNw
b25zZSk7CkBAIC0zMjUsOSArMzI0LDcgQEAgc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291
cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhcioKIAogc3Rh
dGljIHZvaWQgdGVzdERvd25sb2FkUmVtb3RlRmlsZShEb3dubG9hZFRlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiB7Ci0gICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSBhZG9w
dEdSZWYod2Via2l0X3dlYl9jb250ZXh0X2Rvd25sb2FkX3VyaSh0ZXN0LT5tX3dlYkNvbnRleHQs
IGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi90ZXN0LnBkZiIpLmRhdGEoKSkpOwotICAgIHRlc3Qt
PmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoZG93bmxvYWQu
Z2V0KCkpKTsKLSAgICB0ZXN0LT53YWl0VW50aWxEb3dubG9hZEZpbmlzaGVzKCk7CisgICAgR1Jl
ZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSBhZG9wdEdSZWYodGVzdC0+ZG93bmxvYWRV
UklBbmRXYWl0VW50aWxGaW5pc2hlcyhrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdGVzdC5wZGYi
KSkpOwogICAgIGdfYXNzZXJ0KCF3ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KGRvd25sb2Fk
LmdldCgpKSk7CiAKICAgICBWZWN0b3I8RG93bmxvYWRUZXN0OjpEb3dubG9hZEV2ZW50PiYgZXZl
bnRzID0gdGVzdC0+bV9kb3dubG9hZEV2ZW50czsKQEAgLTM1MSwxMCArMzQ4LDcgQEAgc3RhdGlj
IHZvaWQgdGVzdERvd25sb2FkUmVtb3RlRmlsZShEb3dubG9hZFRlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCiBzdGF0aWMgdm9pZCB0ZXN0RG93bmxvYWRSZW1vdGVGaWxlRXJyb3IoRG93bmxvYWRF
cnJvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgdGVzdC0+bV9leHBlY3RlZEVy
cm9yID0gV0VCS0lUX0RPV05MT0FEX0VSUk9SX05FVFdPUks7Ci0gICAgR1JlZlB0cjxXZWJLaXRE
b3dubG9hZD4gZG93bmxvYWQgPSBhZG9wdEdSZWYod2Via2l0X3dlYl9jb250ZXh0X2Rvd25sb2Fk
X3VyaSh0ZXN0LT5tX3dlYkNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrU2VydmVy
LT5nZXRVUklGb3JQYXRoKCIvZm9vIikuZGF0YSgpKSk7Ci0gICAgdGVzdC0+YXNzZXJ0T2JqZWN0
SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChkb3dubG9hZC5nZXQoKSkpOwotICAg
IHRlc3QtPndhaXRVbnRpbERvd25sb2FkRmluaXNoZXMoKTsKKyAgICBHUmVmUHRyPFdlYktpdERv
d25sb2FkPiBkb3dubG9hZCA9IGFkb3B0R1JlZih0ZXN0LT5kb3dubG9hZFVSSUFuZFdhaXRVbnRp
bEZpbmlzaGVzKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9mb28iKSkpOwogICAgIGdfYXNzZXJ0
KCF3ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KGRvd25sb2FkLmdldCgpKSk7CiAKICAgICBW
ZWN0b3I8RG93bmxvYWRUZXN0OjpEb3dubG9hZEV2ZW50PiYgZXZlbnRzID0gdGVzdC0+bV9kb3du
bG9hZEV2ZW50czsKQEAgLTM2OSwxMiArMzYzLDkgQEAgc3RhdGljIHZvaWQgdGVzdERvd25sb2Fk
UmVtb3RlRmlsZUVycm9yKERvd25sb2FkRXJyb3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
ICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHdlYmtpdF9kb3dubG9hZF9nZXRfZXN0aW1hdGVkX3Byb2dy
ZXNzKGRvd25sb2FkLmdldCgpKSwgPCwgMSk7CiAKICAgICB0ZXN0LT5tX2V4cGVjdGVkRXJyb3Ig
PSBXRUJLSVRfRE9XTkxPQURfRVJST1JfREVTVElOQVRJT047Ci0gICAgZG93bmxvYWQgPSBhZG9w
dEdSZWYod2Via2l0X3dlYl9jb250ZXh0X2Rvd25sb2FkX3VyaSh0ZXN0LT5tX3dlYkNvbnRleHQs
IGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi90ZXN0LnBkZiIpLmRhdGEoKSkpOwotICAgIHRlc3Qt
PmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoZG93bmxvYWQu
Z2V0KCkpKTsKLSAgICB0ZXN0LT53YWl0VW50aWxEb3dubG9hZEZpbmlzaGVzKCk7CisgICAgZG93
bmxvYWQgPSBhZG9wdEdSZWYodGVzdC0+ZG93bmxvYWRVUklBbmRXYWl0VW50aWxGaW5pc2hlcyhr
U2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdGVzdC5wZGYiKSkpOwogICAgIGdfYXNzZXJ0KCF3ZWJr
aXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KGRvd25sb2FkLmdldCgpKSk7CiAKLSAgICBldmVudHMg
PSB0ZXN0LT5tX2Rvd25sb2FkRXZlbnRzOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6
ZSgpLCA9PSwgNCk7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1swXSwgPT0sIERvd25sb2Fk
VGVzdDo6U3RhcnRlZCk7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1sxXSwgPT0sIERvd25s
b2FkVGVzdDo6UmVjZWl2ZWRSZXNwb25zZSk7CkBAIC0zODUsMTIgKzM3Niw5IEBAIHN0YXRpYyB2
b2lkIHRlc3REb3dubG9hZFJlbW90ZUZpbGVFcnJvcihEb3dubG9hZEVycm9yVGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT5jaGVja0Rlc3RpbmF0aW9uQW5kRGVsZXRlRmlsZShk
b3dubG9hZC5nZXQoKSwgImJhciIpOwogCiAgICAgdGVzdC0+bV9leHBlY3RlZEVycm9yID0gV0VC
S0lUX0RPV05MT0FEX0VSUk9SX0NBTkNFTExFRF9CWV9VU0VSOwotICAgIGRvd25sb2FkID0gYWRv
cHRHUmVmKHdlYmtpdF93ZWJfY29udGV4dF9kb3dubG9hZF91cmkodGVzdC0+bV93ZWJDb250ZXh0
LCBrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdGVzdC5wZGYiKS5kYXRhKCkpKTsKLSAgICB0ZXN0
LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGRvd25sb2Fk
LmdldCgpKSk7Ci0gICAgdGVzdC0+d2FpdFVudGlsRG93bmxvYWRGaW5pc2hlcygpOworICAgIGRv
d25sb2FkID0gYWRvcHRHUmVmKHRlc3QtPmRvd25sb2FkVVJJQW5kV2FpdFVudGlsRmluaXNoZXMo
a1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3QucGRmIikpKTsKICAgICBnX2Fzc2VydCghd2Vi
a2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyhkb3dubG9hZC5nZXQoKSkpOwogCi0gICAgZXZlbnRz
ID0gdGVzdC0+bV9kb3dubG9hZEV2ZW50czsKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzLnNp
emUoKSwgPT0sIDQpOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbMF0sID09LCBEb3dubG9h
ZFRlc3Q6OlN0YXJ0ZWQpOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbMV0sID09LCBEb3du
bG9hZFRlc3Q6OlJlY2VpdmVkUmVzcG9uc2UpOwpAQCAtNDk5LDggKzQ4NywxNCBAQCBwdWJsaWM6
CiBzdGF0aWMgdm9pZCB0ZXN0UG9saWN5UmVzcG9uc2VEb3dubG9hZChQb2xpY3lSZXNwb25zZURv
d25sb2FkVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICAvLyBUZXN0IHRoYXQgYSBk
b3dubG9hZCBzdGFydGVkIGJ5IHRoZSB0aGUgcG9saWN5IGNoZWNrZXIgY29udGFpbnMgdGhlIHdl
YiB2aWV3LgotICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3Qu
cGRmIikuZGF0YSgpKTsKKyAgICBDU3RyaW5nIHJlcXVlc3RVUkkgPSBrU2VydmVyLT5nZXRVUklG
b3JQYXRoKCIvdGVzdC5wZGYiKS5kYXRhKCk7CisgICAgdGVzdC0+bG9hZFVSSShyZXF1ZXN0VVJJ
LmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsRG93bmxvYWRTdGFydGVkKCk7CisKKyAgICBX
ZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXN0ID0gd2Via2l0X2Rvd25sb2FkX2dldF9yZXF1ZXN0KHRl
c3QtPm1fZG93bmxvYWQuZ2V0KCkpOworICAgIGdfYXNzZXJ0KHJlcXVlc3QpOworICAgIEFTU0VS
VF9DTVBfQ1NUUklORyh3ZWJraXRfdXJpX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KSwgPT0sIHJl
cXVlc3RVUkkpOworCiAgICAgZ19hc3NlcnQodGVzdC0+bV93ZWJWaWV3ID09IHdlYmtpdF9kb3du
bG9hZF9nZXRfd2ViX3ZpZXcodGVzdC0+bV9kb3dubG9hZC5nZXQoKSkpOwogICAgIHRlc3QtPmNh
bmNlbERvd25sb2FkQW5kV2FpdFVudGlsRmluaXNoZWQoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192009</attachid>
            <date>2013-03-07 08:42:38 -0800</date>
            <delta_ts>2013-03-08 10:44:37 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-download-request2.diff</filename>
            <type>text/plain</type>
            <size>12867</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA4NThmYTkxLi5jYmJmOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTMtMDMtMDcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtXSzJdW0dUS10gSW52YWxpZCByZXF1ZXN0IHJldHVybmVkIGJ5IHdlYmtp
dF9kb3dubG9hZF9nZXRfcmVxdWVzdCBpZiBjYWxsZWQgYmVmb3JlIGRvd25sb2FkIHN0YXJ0cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExNTc0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgd2Via2l0X2Rv
d25sb2FkX2dldF9yZXF1ZXN0KCkgY3JlYXRlcyB0aGUgV2ViS2l0VVJJUmVxdWVzdCBvYmplY3QK
KyAgICAgICAgb24gZGVtYW5kIHVzaW5nIHRoZSBSZXNvdXJjZVJlcXVlc3QgZnJvbSB0aGUgRG93
bmxvYWRQcm94eS4gVGhlCisgICAgICAgIFJlc291cmNlUmVxdWVzdCBvZiB0aGUgRG93bmxvYWRQ
cm94eSBpcyBzZXQgaW4KKyAgICAgICAgRG93bmxvYWRQcm94eTo6ZGlkU3RhcnQoKSwgc28gaWYg
d2UgY2FsbAorICAgICAgICB3ZWJraXRfZG93bmxvYWRfZ2V0X3JlcXVlc3QoKSBiZWZvcmUgZGlk
U3RhcnQgd2UgcmV0dXJuIGFuIGludmFsaWQKKyAgICAgICAgV2ViS2l0VVJJUmVxdWVzdCBjcmVh
dGVkIGZyb20gYSBOVUxMIFJlc291cmNlUmVxdWVzdC4gVGhpcyBpcyBub3QKKyAgICAgICAgYSBw
cm9ibGVtIGZvciBkb3dubG9hZHMgc3RhcnRlZCBpbiB0aGUgd2ViIHByb2Nlc3MsIGJlY2F1c2Ug
d2UKKyAgICAgICAgY3JlYXRlIHRoZSBXZWJLaXREb3dubG9hZCBhZnRlciBEb3dubG9hZFByb3h5
OjpkaWRTdGFydCgpLiBGb3IKKyAgICAgICAgZG93bmxvYWRzIHN0YXJ0ZWQgbWFudWFsbHkgd2l0
aCB3ZWJraXRfd2ViX2NvbnRleHRfZG93bmxvYWRfdXJpKCkKKyAgICAgICAgd2UgbmVlZCB0byBj
cmVhdGUgZG93bmxvYWQgb2JqZWN0IHdpdGggdGhlIFJlc291cmNlUmVxdWVzdCBwYXNzZWQKKyAg
ICAgICAgdG8gdGhlIERvd25sb2FkUHJveHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXREb3dubG9hZC5jcHA6CisgICAgICAgICh3ZWJraXREb3dubG9hZENyZWF0ZUZvclJl
cXVlc3QpOiBOZXcgaGVscGVyIGZ1bmN0aW9uIGZvcgorICAgICAgICBkb3dubG9hZHMgc3RhcnRl
ZCBtYW51YWxseSB0byBjcmVhdGVkIHRoZW0gd2l0aCBhIGdpdmVuCisgICAgICAgIFJlc291cmNl
UmVxdWVzdC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZFByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcDoK
KyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRTdGFydERvd25sb2FkKTogVXNlCisgICAgICAgIHdl
YmtpdERvd25sb2FkQ3JlYXRlRm9yUmVxdWVzdCgpLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL3Rlc3RzL1Rlc3REb3dubG9hZHMuY3BwOgorICAgICAgICAodGVzdERvd25sb2FkTG9jYWxG
aWxlKToKKyAgICAgICAgKHRlc3REb3dubG9hZExvY2FsRmlsZUVycm9yKToKKyAgICAgICAgKHRl
c3REb3dubG9hZFJlbW90ZUZpbGUpOgorICAgICAgICAodGVzdERvd25sb2FkUmVtb3RlRmlsZUVy
cm9yKToKKyAgICAgICAgKHRlc3RQb2xpY3lSZXNwb25zZURvd25sb2FkKToKKwogMjAxMy0wMy0w
NiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dUS10gQWRkIFdlYktpdFdlYlZpZXdHcm91cCB0byBXZWJLaXQyIEdUSysgQVBJCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5jcHAKaW5k
ZXggZThhNGRjNy4uZTUzMjU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0RG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdERvd25sb2FkLmNwcApAQCAtMjc2LDYgKzI3NiwxMyBAQCBXZWJLaXRE
b3dubG9hZCogd2Via2l0RG93bmxvYWRDcmVhdGUoRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94
eSkKICAgICByZXR1cm4gZG93bmxvYWQ7CiB9CiAKK1dlYktpdERvd25sb2FkKiB3ZWJraXREb3du
bG9hZENyZWF0ZUZvclJlcXVlc3QoRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIFdlYktpdERvd25sb2FkKiBkb3dubG9h
ZCA9IHdlYmtpdERvd25sb2FkQ3JlYXRlKGRvd25sb2FkUHJveHkpOworICAgIGRvd25sb2FkLT5w
cml2LT5yZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdFVSSVJlcXVlc3RDcmVhdGVGb3JSZXNvdXJj
ZVJlcXVlc3QocmVxdWVzdCkpOworICAgIHJldHVybiBkb3dubG9hZDsKK30KKwogdm9pZCB3ZWJr
aXREb3dubG9hZFNldFJlc3BvbnNlKFdlYktpdERvd25sb2FkKiBkb3dubG9hZCwgV2ViS2l0VVJJ
UmVzcG9uc2UqIHJlc3BvbnNlKQogewogICAgIGRvd25sb2FkLT5wcml2LT5yZXNwb25zZSA9IHJl
c3BvbnNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0RG93bmxvYWRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXREb3dubG9hZFByaXZhdGUuaAppbmRleCBkN2I0MzA1Li45ODBhZDczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZFByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZFBy
aXZhdGUuaApAQCAtMjMsOSArMjMsMTEgQEAKICNpbmNsdWRlICJXZWJLaXREb3dubG9hZC5oIgog
I2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJy
b3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIAogV2ViS2l0RG93bmxvYWQqIHdlYmtpdERvd25sb2FkQ3JlYXRl
KFdlYktpdDo6RG93bmxvYWRQcm94eSopOworV2ViS2l0RG93bmxvYWQqIHdlYmtpdERvd25sb2Fk
Q3JlYXRlRm9yUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkqLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKTsKIGJvb2wgd2Via2l0RG93bmxvYWRJc0NhbmNlbGxlZChXZWJLaXRE
b3dubG9hZCopOwogdm9pZCB3ZWJraXREb3dubG9hZFNldFJlc3BvbnNlKFdlYktpdERvd25sb2Fk
KiwgV2ViS2l0VVJJUmVzcG9uc2UqKTsKIHZvaWQgd2Via2l0RG93bmxvYWRTZXRXZWJWaWV3KFdl
YktpdERvd25sb2FkKiwgV2ViS2l0V2ViVmlldyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCBiZDM4NjQ4Li4y
NTdhYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtODA0LDggKzgwNCw5IEBAIFdlYktpdERvd25sb2FkKiB3
ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZChEb3dubG9hZFByb3h5KiBkb3dubG9h
ZFByb3h5CiAKIFdlYktpdERvd25sb2FkKiB3ZWJraXRXZWJDb250ZXh0U3RhcnREb3dubG9hZChX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiB1cmksIFdlYlBhZ2VQcm94eSog
aW5pdGlhdGluZ1BhZ2UpCiB7Ci0gICAgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSA9IGNv
bnRleHQtPnByaXYtPmNvbnRleHQtPmRvd25sb2FkKGluaXRpYXRpbmdQYWdlLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QoU3RyaW5nOjpmcm9tVVRGOCh1cmkpKSk7Ci0gICAgV2ViS2l0RG93bmxv
YWQqIGRvd25sb2FkID0gd2Via2l0RG93bmxvYWRDcmVhdGUoZG93bmxvYWRQcm94eSk7CisgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoU3RyaW5nOjpmcm9tVVRGOCh1cmkpKTsK
KyAgICBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5ID0gY29udGV4dC0+cHJpdi0+Y29udGV4
dC0+ZG93bmxvYWQoaW5pdGlhdGluZ1BhZ2UsIHJlcXVlc3QpOworICAgIFdlYktpdERvd25sb2Fk
KiBkb3dubG9hZCA9IHdlYmtpdERvd25sb2FkQ3JlYXRlRm9yUmVxdWVzdChkb3dubG9hZFByb3h5
LCByZXF1ZXN0KTsKICAgICBkb3dubG9hZHNNYXAoKS5zZXQoZG93bmxvYWRQcm94eSwgZG93bmxv
YWQpOwogICAgIHJldHVybiBkb3dubG9hZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3REb3dubG9hZHMuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdERvd25sb2Fkcy5jcHAKaW5kZXggOWE5ZjU1
YS4uY2UxNTk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
dGVzdHMvVGVzdERvd25sb2Fkcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvdGVzdHMvVGVzdERvd25sb2Fkcy5jcHAKQEAgLTE1Myw5ICsxNTMsMTggQEAgcHVibGlj
OgogICAgICAgICB3ZWJraXRfZG93bmxvYWRfc2V0X2Rlc3RpbmF0aW9uKGRvd25sb2FkLCBkZXN0
aW5hdGlvblVSSS5nZXQoKSk7CiAgICAgfQogCi0gICAgdm9pZCB3YWl0VW50aWxEb3dubG9hZEZp
bmlzaGVzKCkKKyAgICBXZWJLaXREb3dubG9hZCogZG93bmxvYWRVUklBbmRXYWl0VW50aWxGaW5p
c2hlcyhjb25zdCBDU3RyaW5nJiByZXF1ZXN0VVJJKQogICAgIHsKKyAgICAgICAgV2ViS2l0RG93
bmxvYWQqIGRvd25sb2FkID0gd2Via2l0X3dlYl9jb250ZXh0X2Rvd25sb2FkX3VyaShtX3dlYkNv
bnRleHQsIHJlcXVlc3RVUkkuZGF0YSgpKTsKKyAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVk
V2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChkb3dubG9hZCkpOworCisgICAgICAgIFdlYktpdFVS
SVJlcXVlc3QqIHJlcXVlc3QgPSB3ZWJraXRfZG93bmxvYWRfZ2V0X3JlcXVlc3QoZG93bmxvYWQp
OworICAgICAgICBnX2Fzc2VydChyZXF1ZXN0KTsKKyAgICAgICAgQVNTRVJUX0NNUF9DU1RSSU5H
KHdlYmtpdF91cmlfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpLCA9PSwgcmVxdWVzdFVSSSk7CisK
ICAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworCisgICAgICAgIHJldHVybiBk
b3dubG9hZDsKICAgICB9CiAKICAgICB2b2lkIGNoZWNrRGVzdGluYXRpb25BbmREZWxldGVGaWxl
KFdlYktpdERvd25sb2FkKiBkb3dubG9hZCwgY29uc3QgY2hhciogZXhwZWN0ZWROYW1lKQpAQCAt
MTgxLDkgKzE5MCw3IEBAIHN0YXRpYyB2b2lkIHRlc3REb3dubG9hZExvY2FsRmlsZShEb3dubG9h
ZFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgR1JlZlB0cjxHRmlsZT4gc291cmNlID0g
YWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoc291cmNlUGF0aC5nZXQoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBzb3VyY2VJbmZvID0gYWRvcHRHUmVmKGdfZmlsZV9xdWVyeV9pbmZv
KHNvdXJjZS5nZXQoKSwgR19GSUxFX0FUVFJJQlVURV9TVEFOREFSRF9TSVpFLCBzdGF0aWNfY2Fz
dDxHRmlsZVF1ZXJ5SW5mb0ZsYWdzPigwKSwgMCwgMCkpOwogICAgIEdPd25QdHI8Y2hhcj4gc291
cmNlVVJJKGdfZmlsZV9nZXRfdXJpKHNvdXJjZS5nZXQoKSkpOwotICAgIEdSZWZQdHI8V2ViS2l0
RG93bmxvYWQ+IGRvd25sb2FkID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJfY29udGV4dF9kb3dubG9h
ZF91cmkodGVzdC0+bV93ZWJDb250ZXh0LCBzb3VyY2VVUkkuZ2V0KCkpKTsKLSAgICB0ZXN0LT5h
c3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGRvd25sb2FkLmdl
dCgpKSk7Ci0gICAgdGVzdC0+d2FpdFVudGlsRG93bmxvYWRGaW5pc2hlcygpOworICAgIEdSZWZQ
dHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gYWRvcHRHUmVmKHRlc3QtPmRvd25sb2FkVVJJ
QW5kV2FpdFVudGlsRmluaXNoZXMoc291cmNlVVJJLmdldCgpKSk7CiAgICAgZ19hc3NlcnQoIXdl
YmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKIAogICAgIFZlY3Rv
cjxEb3dubG9hZFRlc3Q6OkRvd25sb2FkRXZlbnQ+JiBldmVudHMgPSB0ZXN0LT5tX2Rvd25sb2Fk
RXZlbnRzOwpAQCAtMjQ2LDkgKzI1Myw3IEBAIHB1YmxpYzoKIHN0YXRpYyB2b2lkIHRlc3REb3du
bG9hZExvY2FsRmlsZUVycm9yKERvd25sb2FkRXJyb3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogewogICAgIHRlc3QtPm1fZXhwZWN0ZWRFcnJvciA9IFdFQktJVF9ET1dOTE9BRF9FUlJPUl9O
RVRXT1JLOwotICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gYWRvcHRHUmVm
KHdlYmtpdF93ZWJfY29udGV4dF9kb3dubG9hZF91cmkodGVzdC0+bV93ZWJDb250ZXh0LCAiZmls
ZTovLy9mb28vYmFyIikpOwotICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0
RmluaXNoZXMoR19PQkpFQ1QoZG93bmxvYWQuZ2V0KCkpKTsKLSAgICB0ZXN0LT53YWl0VW50aWxE
b3dubG9hZEZpbmlzaGVzKCk7CisgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQg
PSBhZG9wdEdSZWYodGVzdC0+ZG93bmxvYWRVUklBbmRXYWl0VW50aWxGaW5pc2hlcygiZmlsZTov
Ly9mb28vYmFyIikpOwogICAgIGdfYXNzZXJ0KCF3ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3
KGRvd25sb2FkLmdldCgpKSk7CiAKICAgICBWZWN0b3I8RG93bmxvYWRUZXN0OjpEb3dubG9hZEV2
ZW50PiYgZXZlbnRzID0gdGVzdC0+bV9kb3dubG9hZEV2ZW50czsKQEAgLTI2MywxMiArMjY4LDkg
QEAgc3RhdGljIHZvaWQgdGVzdERvd25sb2FkTG9jYWxGaWxlRXJyb3IoRG93bmxvYWRFcnJvclRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgR093blB0cjxjaGFyPiBwYXRoKGdfYnVpbGRf
ZmlsZW5hbWUoVGVzdDo6Z2V0V2ViS2l0MVRlc3RSZXNvdWNlc0RpcigpLmRhdGEoKSwgInRlc3Qu
cGRmIiwgTlVMTCkpOwogICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxl
X25ld19mb3JfcGF0aChwYXRoLmdldCgpKSk7CiAgICAgR093blB0cjxjaGFyPiB1cmkoZ19maWxl
X2dldF91cmkoZmlsZS5nZXQoKSkpOwotICAgIGRvd25sb2FkID0gYWRvcHRHUmVmKHdlYmtpdF93
ZWJfY29udGV4dF9kb3dubG9hZF91cmkodGVzdC0+bV93ZWJDb250ZXh0LCB1cmkuZ2V0KCkpKTsK
LSAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNU
KGRvd25sb2FkLmdldCgpKSk7Ci0gICAgdGVzdC0+d2FpdFVudGlsRG93bmxvYWRGaW5pc2hlcygp
OworICAgIGRvd25sb2FkID0gYWRvcHRHUmVmKHRlc3QtPmRvd25sb2FkVVJJQW5kV2FpdFVudGls
RmluaXNoZXModXJpLmdldCgpKSk7CiAgICAgZ19hc3NlcnQoIXdlYmtpdF9kb3dubG9hZF9nZXRf
d2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKIAotICAgIGV2ZW50cyA9IHRlc3QtPm1fZG93bmxv
YWRFdmVudHM7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCA0KTsKICAg
ICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzBdLCA9PSwgRG93bmxvYWRUZXN0OjpTdGFydGVkKTsK
ICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzFdLCA9PSwgRG93bmxvYWRUZXN0OjpSZWNlaXZl
ZFJlc3BvbnNlKTsKQEAgLTI3OSwxMiArMjgxLDkgQEAgc3RhdGljIHZvaWQgdGVzdERvd25sb2Fk
TG9jYWxGaWxlRXJyb3IoRG93bmxvYWRFcnJvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAg
ICAgdGVzdC0+Y2hlY2tEZXN0aW5hdGlvbkFuZERlbGV0ZUZpbGUoZG93bmxvYWQuZ2V0KCksICJi
YXIiKTsKIAogICAgIHRlc3QtPm1fZXhwZWN0ZWRFcnJvciA9IFdFQktJVF9ET1dOTE9BRF9FUlJP
Ul9DQU5DRUxMRURfQllfVVNFUjsKLSAgICBkb3dubG9hZCA9IGFkb3B0R1JlZih3ZWJraXRfd2Vi
X2NvbnRleHRfZG93bmxvYWRfdXJpKHRlc3QtPm1fd2ViQ29udGV4dCwgdXJpLmdldCgpKSk7Ci0g
ICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChk
b3dubG9hZC5nZXQoKSkpOwotICAgIHRlc3QtPndhaXRVbnRpbERvd25sb2FkRmluaXNoZXMoKTsK
KyAgICBkb3dubG9hZCA9IGFkb3B0R1JlZih0ZXN0LT5kb3dubG9hZFVSSUFuZFdhaXRVbnRpbEZp
bmlzaGVzKHVyaS5nZXQoKSkpOwogICAgIGdfYXNzZXJ0KCF3ZWJraXRfZG93bmxvYWRfZ2V0X3dl
Yl92aWV3KGRvd25sb2FkLmdldCgpKSk7CiAKLSAgICBldmVudHMgPSB0ZXN0LT5tX2Rvd25sb2Fk
RXZlbnRzOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgpLCA9PSwgNCk7CiAgICAg
Z19hc3NlcnRfY21waW50KGV2ZW50c1swXSwgPT0sIERvd25sb2FkVGVzdDo6U3RhcnRlZCk7CiAg
ICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1sxXSwgPT0sIERvd25sb2FkVGVzdDo6UmVjZWl2ZWRS
ZXNwb25zZSk7CkBAIC0zMjUsOSArMzI0LDcgQEAgc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2so
U291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhcioKIAog
c3RhdGljIHZvaWQgdGVzdERvd25sb2FkUmVtb3RlRmlsZShEb3dubG9hZFRlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiB7Ci0gICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSBh
ZG9wdEdSZWYod2Via2l0X3dlYl9jb250ZXh0X2Rvd25sb2FkX3VyaSh0ZXN0LT5tX3dlYkNvbnRl
eHQsIGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi90ZXN0LnBkZiIpLmRhdGEoKSkpOwotICAgIHRl
c3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoZG93bmxv
YWQuZ2V0KCkpKTsKLSAgICB0ZXN0LT53YWl0VW50aWxEb3dubG9hZEZpbmlzaGVzKCk7CisgICAg
R1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSBhZG9wdEdSZWYodGVzdC0+ZG93bmxv
YWRVUklBbmRXYWl0VW50aWxGaW5pc2hlcyhrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdGVzdC5w
ZGYiKSkpOwogICAgIGdfYXNzZXJ0KCF3ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KGRvd25s
b2FkLmdldCgpKSk7CiAKICAgICBWZWN0b3I8RG93bmxvYWRUZXN0OjpEb3dubG9hZEV2ZW50PiYg
ZXZlbnRzID0gdGVzdC0+bV9kb3dubG9hZEV2ZW50czsKQEAgLTM1MSwxMCArMzQ4LDcgQEAgc3Rh
dGljIHZvaWQgdGVzdERvd25sb2FkUmVtb3RlRmlsZShEb3dubG9hZFRlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiBzdGF0aWMgdm9pZCB0ZXN0RG93bmxvYWRSZW1vdGVGaWxlRXJyb3IoRG93bmxv
YWRFcnJvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgdGVzdC0+bV9leHBlY3Rl
ZEVycm9yID0gV0VCS0lUX0RPV05MT0FEX0VSUk9SX05FVFdPUks7Ci0gICAgR1JlZlB0cjxXZWJL
aXREb3dubG9hZD4gZG93bmxvYWQgPSBhZG9wdEdSZWYod2Via2l0X3dlYl9jb250ZXh0X2Rvd25s
b2FkX3VyaSh0ZXN0LT5tX3dlYkNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrU2Vy
dmVyLT5nZXRVUklGb3JQYXRoKCIvZm9vIikuZGF0YSgpKSk7Ci0gICAgdGVzdC0+YXNzZXJ0T2Jq
ZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChkb3dubG9hZC5nZXQoKSkpOwot
ICAgIHRlc3QtPndhaXRVbnRpbERvd25sb2FkRmluaXNoZXMoKTsKKyAgICBHUmVmUHRyPFdlYktp
dERvd25sb2FkPiBkb3dubG9hZCA9IGFkb3B0R1JlZih0ZXN0LT5kb3dubG9hZFVSSUFuZFdhaXRV
bnRpbEZpbmlzaGVzKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9mb28iKSkpOwogICAgIGdfYXNz
ZXJ0KCF3ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KGRvd25sb2FkLmdldCgpKSk7CiAKICAg
ICBWZWN0b3I8RG93bmxvYWRUZXN0OjpEb3dubG9hZEV2ZW50PiYgZXZlbnRzID0gdGVzdC0+bV9k
b3dubG9hZEV2ZW50czsKQEAgLTM2OSwxMiArMzYzLDkgQEAgc3RhdGljIHZvaWQgdGVzdERvd25s
b2FkUmVtb3RlRmlsZUVycm9yKERvd25sb2FkRXJyb3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHdlYmtpdF9kb3dubG9hZF9nZXRfZXN0aW1hdGVkX3By
b2dyZXNzKGRvd25sb2FkLmdldCgpKSwgPCwgMSk7CiAKICAgICB0ZXN0LT5tX2V4cGVjdGVkRXJy
b3IgPSBXRUJLSVRfRE9XTkxPQURfRVJST1JfREVTVElOQVRJT047Ci0gICAgZG93bmxvYWQgPSBh
ZG9wdEdSZWYod2Via2l0X3dlYl9jb250ZXh0X2Rvd25sb2FkX3VyaSh0ZXN0LT5tX3dlYkNvbnRl
eHQsIGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi90ZXN0LnBkZiIpLmRhdGEoKSkpOwotICAgIHRl
c3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoZG93bmxv
YWQuZ2V0KCkpKTsKLSAgICB0ZXN0LT53YWl0VW50aWxEb3dubG9hZEZpbmlzaGVzKCk7CisgICAg
ZG93bmxvYWQgPSBhZG9wdEdSZWYodGVzdC0+ZG93bmxvYWRVUklBbmRXYWl0VW50aWxGaW5pc2hl
cyhrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdGVzdC5wZGYiKSkpOwogICAgIGdfYXNzZXJ0KCF3
ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KGRvd25sb2FkLmdldCgpKSk7CiAKLSAgICBldmVu
dHMgPSB0ZXN0LT5tX2Rvd25sb2FkRXZlbnRzOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMu
c2l6ZSgpLCA9PSwgNCk7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1swXSwgPT0sIERvd25s
b2FkVGVzdDo6U3RhcnRlZCk7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1sxXSwgPT0sIERv
d25sb2FkVGVzdDo6UmVjZWl2ZWRSZXNwb25zZSk7CkBAIC0zODUsMTIgKzM3Niw5IEBAIHN0YXRp
YyB2b2lkIHRlc3REb3dubG9hZFJlbW90ZUZpbGVFcnJvcihEb3dubG9hZEVycm9yVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT5jaGVja0Rlc3RpbmF0aW9uQW5kRGVsZXRlRmls
ZShkb3dubG9hZC5nZXQoKSwgImJhciIpOwogCiAgICAgdGVzdC0+bV9leHBlY3RlZEVycm9yID0g
V0VCS0lUX0RPV05MT0FEX0VSUk9SX0NBTkNFTExFRF9CWV9VU0VSOwotICAgIGRvd25sb2FkID0g
YWRvcHRHUmVmKHdlYmtpdF93ZWJfY29udGV4dF9kb3dubG9hZF91cmkodGVzdC0+bV93ZWJDb250
ZXh0LCBrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdGVzdC5wZGYiKS5kYXRhKCkpKTsKLSAgICB0
ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGRvd25s
b2FkLmdldCgpKSk7Ci0gICAgdGVzdC0+d2FpdFVudGlsRG93bmxvYWRGaW5pc2hlcygpOworICAg
IGRvd25sb2FkID0gYWRvcHRHUmVmKHRlc3QtPmRvd25sb2FkVVJJQW5kV2FpdFVudGlsRmluaXNo
ZXMoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3QucGRmIikpKTsKICAgICBnX2Fzc2VydCgh
d2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyhkb3dubG9hZC5nZXQoKSkpOwogCi0gICAgZXZl
bnRzID0gdGVzdC0+bV9kb3dubG9hZEV2ZW50czsKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRz
LnNpemUoKSwgPT0sIDQpOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbMF0sID09LCBEb3du
bG9hZFRlc3Q6OlN0YXJ0ZWQpOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbMV0sID09LCBE
b3dubG9hZFRlc3Q6OlJlY2VpdmVkUmVzcG9uc2UpOwpAQCAtNDk5LDggKzQ4NywxNCBAQCBwdWJs
aWM6CiBzdGF0aWMgdm9pZCB0ZXN0UG9saWN5UmVzcG9uc2VEb3dubG9hZChQb2xpY3lSZXNwb25z
ZURvd25sb2FkVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICAvLyBUZXN0IHRoYXQg
YSBkb3dubG9hZCBzdGFydGVkIGJ5IHRoZSB0aGUgcG9saWN5IGNoZWNrZXIgY29udGFpbnMgdGhl
IHdlYiB2aWV3LgotICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rl
c3QucGRmIikuZGF0YSgpKTsKKyAgICBDU3RyaW5nIHJlcXVlc3RVUkkgPSBrU2VydmVyLT5nZXRV
UklGb3JQYXRoKCIvdGVzdC5wZGYiKS5kYXRhKCk7CisgICAgdGVzdC0+bG9hZFVSSShyZXF1ZXN0
VVJJLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsRG93bmxvYWRTdGFydGVkKCk7CisKKyAg
ICBXZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXN0ID0gd2Via2l0X2Rvd25sb2FkX2dldF9yZXF1ZXN0
KHRlc3QtPm1fZG93bmxvYWQuZ2V0KCkpOworICAgIGdfYXNzZXJ0KHJlcXVlc3QpOworICAgIEFT
U0VSVF9DTVBfQ1NUUklORyh3ZWJraXRfdXJpX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KSwgPT0s
IHJlcXVlc3RVUkkpOworCiAgICAgZ19hc3NlcnQodGVzdC0+bV93ZWJWaWV3ID09IHdlYmtpdF9k
b3dubG9hZF9nZXRfd2ViX3ZpZXcodGVzdC0+bV9kb3dubG9hZC5nZXQoKSkpOwogICAgIHRlc3Qt
PmNhbmNlbERvd25sb2FkQW5kV2FpdFVudGlsRmluaXNoZWQoKTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>