<?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>18490</bug_id>
          
          <creation_ts>2008-04-14 07:42:12 -0700</creation_ts>
          <short_desc>[SOUP] Local files are not handled</short_desc>
          <delta_ts>2008-05-01 09:55:00 -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>OS X 10.5</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="Marco Barisione">marco.barisione</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>alp</cc>
    
    <cc>danw</cc>
    
    <cc>elle.uca</cc>
    
    <cc>lethalman88</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>77559</commentid>
    <comment_count>0</comment_count>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-04-14 07:42:12 -0700</bug_when>
    <thetext>Currently the soup backend is not able to load local files. Libsoup is just an HTTP library, so it doesn&apos;t handle other protocols (see http://bugzilla.gnome.org/show_bug.cgi?id=526755).

It would be nice to support this using gio so it will be possible to support also ftp and other protocols.

Note that WebKit depends on glib 2.0 and gio was added in glib 2.16 but this should not be a problem because libsoup is already depending on glib 2.16.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77978</commentid>
    <comment_count>1</comment_count>
    <who name="Luca Ferretti">elle.uca</who>
    <bug_when>2008-04-17 12:56:17 -0700</bug_when>
    <thetext>*** Bug 18545 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78305</commentid>
    <comment_count>2</comment_count>
      <attachid>20699</attachid>
    <who name="Dan Winship">danw</who>
    <bug_when>2008-04-20 09:30:32 -0700</bug_when>
    <thetext>Created attachment 20699
first draft of a patch for file: (and ftp:) support

OK, here is a first draft. It works for local files, mostly.

Among the problems with the patch are:

  1. It adds a bunch of crap to ResourceHandleInternal, although all of the
     other backends add lots of crap there too, so this is probably expected

  2. It doesn&apos;t handle any error cases at all. Even in the places where it
     looks like it handles errors, it doesn&apos;t really; you just get a blank
     page in GtkLauncher instead of an error message. (Maybe that&apos;s a
     GtkLauncher problem?) At any rate, there are also other places where
     it should return an error, but it doesn&apos;t. Also, I wasn&apos;t sure if you&apos;re
     allowed to call -&gt;didFail() after having called didReceiveResponse(),
     etc.

  3. queryInfoCallback probably needs to be failing with ERROR_UNKNOWN_PROTOCOL
     in some situation, but I don&apos;t know what that is. (None of the GIOError
     values seem to correspond to that). Actually, we should probably just
     limit the gio usage to specific URI types. (&quot;file&quot; and &quot;ftp&quot;? What are
     we expected to support?)

  4. ftp support sort of works a little bit, but there&apos;s no code to deal with
     mounting remote filesystems currently, so it only works if you first
     &quot;Connect to Server...&quot; from nautilus, and then try to access the ftp:
     URL in GtkLauncher. To fix this, we should be looking for
     G_IO_ERROR_NOT_MOUNTED, and calling g_file_mount_enclosing_volume() in
     that case (and keeping a timeout and unmounting the volume later if we&apos;re
     done with it).

  5. What should happen if the URI is a directory rather than a file? We can
     use gio to iterate the directory and find out about its children, but
     how do we return that to the caller?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78309</commentid>
    <comment_count>3</comment_count>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-04-20 10:06:49 -0700</bug_when>
    <thetext>I&apos;d say to put everything into another file, without SOUP references (like macros).

(In reply to comment #2)
&gt;   1. It adds a bunch of crap to ResourceHandleInternal, although all of the
&gt;      other backends add lots of crap there too, so this is probably expected
 
I didn&apos;t see in other ports, but are you sure this job is not done by their http stack?

&gt;   2. It doesn&apos;t handle any error cases at all. Even in the places where it
&gt;      looks like it handles errors, it doesn&apos;t really; you just get a blank
&gt;      page in GtkLauncher instead of an error message. (Maybe that&apos;s a
&gt;      GtkLauncher problem?) At any rate, there are also other places where
&gt;      it should return an error, but it doesn&apos;t. Also, I wasn&apos;t sure if you&apos;re
&gt;      allowed to call -&gt;didFail() after having called didReceiveResponse(),
&gt;      etc.

It&apos;s a FrameLoaderClient missing implementation, I created a brief patch for that. It&apos;s not a problem of the network backend.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78311</commentid>
    <comment_count>4</comment_count>
    <who name="Dan Winship">danw</who>
    <bug_when>2008-04-20 10:26:53 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I&apos;d say to put everything into another file, without SOUP references (like
&gt; macros).

It would be nice to be able to have ResourceHandleSoup, ResourceHandleData, and ResourceHandleGio, and then have ResourceHandle::create create an object of the right subclass for the given URL. ResourceHandleData could even be shared between curl and soup (and other backends?)...

(I also don&apos;t really get what the point of ResourceHandleInternal is... couldn&apos;t it all just be done as private parts of ResourceHandle? Or alternatively, couldn&apos;t it be internal to the network backend, such that I could then have separate kinds of ResourceHandleInternal for each of the three request types?)
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79252</commentid>
    <comment_count>5</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-04-29 15:57:45 -0700</bug_when>
    <thetext>Dan,

ResourceHandleInternal is the way private data is done right now in the http backends so I wouldn&apos;t worry too much about this.

Could you tidy this up and submit it for review? I think it&apos;s worth getting this in with FIXMEs for any major issues since it brings the soup backend up to parity with the curl backend (which has even less error reporting, and no consideration for directory listing or FTP).

(Incidentally, I&apos;m observing a crash on Acid3 with the soup backend somewhere in parseDataUrl(). Did anyone else notice this?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79292</commentid>
    <comment_count>6</comment_count>
      <attachid>20903</attachid>
    <who name="Dan Winship">danw</who>
    <bug_when>2008-04-30 12:07:42 -0700</bug_when>
    <thetext>Created attachment 20903
revised soup file: support patch

Updated. Mostly I just added some more FIXME comments, but also I made it so the gio branch only gets called for file:, ftp:, and ftpd: URIs, not other unrecognized URI types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79362</commentid>
    <comment_count>7</comment_count>
      <attachid>20903</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-05-01 09:45:15 -0700</bug_when>
    <thetext>Comment on attachment 20903
revised soup file: support patch

r=me

I&apos;ll move the start*() functions to the private section of the class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79363</commentid>
    <comment_count>8</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-05-01 09:46:51 -0700</bug_when>
    <thetext>I&apos;m also seeing occasional GIO warnings with this:

 Programs/GtkLauncher file:/home/alp/Projects/webkit/ng/webkit/LayoutTests/fast/reflections/reflection-direction.html 

(lt-GtkLauncher:29946): GLib-GIO-CRITICAL **: g_input_stream_close_finish: assertion `G_IS_INPUT_STREAM (stream)&apos; failed

(lt-GtkLauncher:29946): GLib-GIO-CRITICAL **: g_input_stream_close_finish: assertion `G_IS_INPUT_STREAM (stream)&apos; failed

Can you reproduce that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79364</commentid>
    <comment_count>9</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-05-01 09:55:00 -0700</bug_when>
    <thetext>Landed in r32761. We&apos;ll need to track the gio warnings and data URL crashers another bug report.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20699</attachid>
            <date>2008-04-20 09:30:32 -0700</date>
            <delta_ts>2008-04-30 12:07:42 -0700</delta_ts>
            <desc>first draft of a patch for file: (and ftp:) support</desc>
            <filename>soup-file.diff</filename>
            <type>text/plain</type>
            <size>10786</size>
            <attacher name="Dan Winship">danw</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oIGIv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggNGM3N2FlMS4u
NGMyNjg2MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKQEAg
LTE1Miw2ICsxNTIsMTIgQEAgcHVibGljOgogICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGdl
dEludGVybmFsKCkgeyByZXR1cm4gZC5nZXQoKTsgfQogI2VuZGlmCiAKKyNpZiBVU0UoU09VUCkK
KyAgICBib29sIHN0YXJ0RGF0YShTdHJpbmcgdXJsU3RyaW5nKTsKKyAgICBib29sIHN0YXJ0SHR0
cChTdHJpbmcgdXJsU3RyaW5nKTsKKyAgICBib29sIHN0YXJ0R2lvKFN0cmluZyB1cmxTdHJpbmcp
OworI2VuZGlmCisKICAgICAvLyBVc2VkIHRvIHdvcmsgYXJvdW5kIHRoZSBmYWN0IHRoYXQgeW91
IGRvbid0IGdldCBhbnkgbW9yZSBOU1VSTENvbm5lY3Rpb24gY2FsbGJhY2tzIHVudGlsIHlvdSBy
ZXR1cm4gZnJvbSB0aGUgb25lIHlvdSdyZSBpbi4KICAgICBzdGF0aWMgYm9vbCBsb2Fkc0Jsb2Nr
ZWQoKTsgICAgCiAgICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlSW50ZXJuYWwuaAppbmRleCBkYjk4YWUyLi5jMzYyY2ZjIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKQEAgLTExMCw2ICsx
MTAsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIFVTRShTT1VQKQogICAgICAgICAgICAg
LCBtX21zZygwKQogICAgICAgICAgICAgLCBtX2NhbmNlbGxlZChmYWxzZSkKKwkgICAgLCBtX2dm
aWxlKDApCisJICAgICwgbV9pbnB1dF9zdHJlYW0oMCkKKwkgICAgLCBtX2NhbmNlbGxhYmxlKDAp
CisJICAgICwgbV9idWZmZXIoMCkKKwkgICAgLCBtX2J1ZnNpemUoMCkKKwkgICAgLCBtX3RvdGFs
KDApCiAjZW5kaWYKICNpZiBQTEFURk9STShRVCkKICAgICAgICAgICAgICwgbV9qb2IoMCkKQEAg
LTE3Niw2ICsxODIsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTb3VwTWVzc2Fn
ZSogbV9tc2c7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICAgICAg
Ym9vbCBtX2NhbmNlbGxlZDsKKwlHRmlsZSogbV9nZmlsZTsKKwlHSW5wdXRTdHJlYW0qIG1faW5w
dXRfc3RyZWFtOworCUdDYW5jZWxsYWJsZSogbV9jYW5jZWxsYWJsZTsKKwljaGFyKiBtX2J1ZmZl
cjsKKwlnc2l6ZSBtX2J1ZnNpemUsIG1fdG90YWw7CiAjZW5kaWYKICNpZiBQTEFURk9STShRVCkK
ICNpZiBRVF9WRVJTSU9OIDwgMHgwNDA0MDAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCmluZGV4IDNjNWIzNjIuLjQ1ZmRjNGEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxl
U291cC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5k
bGVTb3VwLmNwcApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+
CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLW1lc3NhZ2UuaD4KKyNpbmNsdWRlIDxnaW8vZ2lvLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDQsNyArNDUsOCBAQCBzdGF0aWMgU291cFNl
c3Npb24qIHNlc3Npb24gPSAwOwogdHlwZWRlZiBlbnVtCiB7CiAgICAgRVJST1JfVFJBTlNQT1JU
LAotICAgIEVSUk9SX1VOS05PV05fUFJPVE9DT0wKKyAgICBFUlJPUl9VTktOT1dOX1BST1RPQ09M
LAorICAgIEVSUk9SX0JBRF9OT05fSFRUUF9NRVRIT0QKIH07CiAKIFJlc291cmNlSGFuZGxlSW50
ZXJuYWw6On5SZXNvdXJjZUhhbmRsZUludGVybmFsKCkKQEAgLTI0NSw0NSArMjQ3LDE2IEBAIHN0
YXRpYyBnYm9vbGVhbiBwYXJzZURhdGFVcmwoZ3BvaW50ZXIgY2FsbGJhY2tfZGF0YSkKICAgICBy
ZXR1cm4gRkFMU0U7CiB9CiAKLWJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KEZyYW1lKiBmcmFt
ZSkKK2Jvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0RGF0YShTdHJpbmcgdXJsU3RyaW5nKQogewot
ICAgIEFTU0VSVCghZC0+bV9tc2cpOwotCi0gICAgLy8gSWYgd2UgYXJlIG5vIGxvbmdlciBhdHRh
Y2hlZCB0byBhIFBhZ2UsIHRoaXMgbXVzdCBiZSBhbiBhdHRlbXB0ZWQgbG9hZCBmcm9tIGFuCi0g
ICAgLy8gb25VbmxvYWQgaGFuZGxlciwgc28gbGV0J3MganVzdCBibG9jayBpdC4KLSAgICBpZiAo
IWZyYW1lLT5wYWdlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEtVUkwgdXJsID0g
cmVxdWVzdCgpLnVybCgpOwotICAgIFN0cmluZyBwcm90b2NvbCA9IHVybC5wcm90b2NvbCgpOwot
Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHByb3RvY29sLCAiZGF0YSIpKSB7CiAgICAgICAg
IC8vIElmIHBhcnNlRGF0YVVybCBpcyBjYWxsZWQgc3luY3Jvbm91c2x5IHRoZSBqb2IgaXMgbm90
IHlldCBlZmZlY3RpdmVseSBzdGFydGVkCiAgICAgICAgIC8vIGFuZCB3ZWJraXQgd29uJ3QgbmV2
ZXIga25vdyB0aGF0IHRoZSBkYXRhIGhhcyBiZWVuIHBhcnNlZCBldmVuIGRpZEZpbmlzaExvYWRp
bmcgaXMgY2FsbGVkLgogICAgICAgICBnX2lkbGVfYWRkKHBhcnNlRGF0YVVybCwgdGhpcyk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIFN0cmluZyB1cmxTdHJpbmcgPSB1cmwu
c3RyaW5nKCk7Ci0KLSAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKHByb3RvY29sLCAiaHR0cCIp
ICYmICFlcXVhbElnbm9yaW5nQ2FzZShwcm90b2NvbCwgImh0dHBzIikpIHsKLSAgICAgICAgLy8g
SWYgd2UgZG9uJ3QgY2FsbCBkaWRGYWlsIHRoZSBqb2IgaXMgbm90IGNvbXBsZXRlIGZvciB3ZWJr
aXQgZXZlbiBmYWxzZSBpcyByZXR1cm5lZC4KLSAgICAgICAgaWYgKGQtPmNsaWVudCgpKSB7Ci0g
ICAgICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yKCJ3ZWJraXQtbmV0d29yay1lcnJvciIsIEVS
Uk9SX1VOS05PV05fUFJPVE9DT0wsIHVybFN0cmluZywgcHJvdG9jb2wpOwotICAgICAgICAgICAg
ZC0+Y2xpZW50KCktPmRpZEZhaWwodGhpcywgZXJyb3IpOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAodXJsLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAg
ICAgU3RyaW5nIHF1ZXJ5ID0gdXJsLnF1ZXJ5KCk7Ci0gICAgICAgIC8vIFJlbW92ZSBhbnkgcXVl
cnkgcGFydCBzZW50IHRvIGEgbG9jYWwgZmlsZS4KLSAgICAgICAgaWYgKCFxdWVyeS5pc0VtcHR5
KCkpCi0gICAgICAgICAgICB1cmxTdHJpbmcgPSB1cmxTdHJpbmcubGVmdCh1cmxTdHJpbmcuZmlu
ZChxdWVyeSkpOwotICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIE1JTUUgdHlwZSBiYXNlZCBvbiB0
aGUgcGF0aC4KLSAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRNaW1lVHlwZShNSU1FVHlwZVJlZ2lz
dHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgoU3RyaW5nKHVybFN0cmluZykpKTsKLSAgICB9Cit9CiAK
K2Jvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0SHR0cChTdHJpbmcgdXJsU3RyaW5nKQorewogICAg
IGlmICghc2Vzc2lvbikgewogICAgICAgICBzZXNzaW9uID0gc291cF9zZXNzaW9uX2FzeW5jX25l
dygpOwogCkBAIC0zMzQsNiArMzA3LDM2IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KEZy
YW1lKiBmcmFtZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBSZXNvdXJjZUhhbmRsZTo6
c3RhcnQoRnJhbWUqIGZyYW1lKQoreworICAgIEFTU0VSVCghZC0+bV9tc2cpOworCisgICAgLy8g
SWYgd2UgYXJlIG5vIGxvbmdlciBhdHRhY2hlZCB0byBhIFBhZ2UsIHRoaXMgbXVzdCBiZSBhbiBh
dHRlbXB0ZWQgbG9hZCBmcm9tIGFuCisgICAgLy8gb25VbmxvYWQgaGFuZGxlciwgc28gbGV0J3Mg
anVzdCBibG9jayBpdC4KKyAgICBpZiAoIWZyYW1lLT5wYWdlKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIEtVUkwgdXJsID0gcmVxdWVzdCgpLnVybCgpOworICAgIFN0cmluZyB1cmxT
dHJpbmcgPSB1cmwuc3RyaW5nKCk7CisgICAgU3RyaW5nIHByb3RvY29sID0gdXJsLnByb3RvY29s
KCk7CisKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2wsICJkYXRhIikpCisJcmV0
dXJuIHN0YXJ0RGF0YSh1cmxTdHJpbmcpOworICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KHByb3RvY29sLCAiaHR0cCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHByb3RvY29sLCAiaHR0cHMi
KSkKKwlyZXR1cm4gc3RhcnRIdHRwKHVybFN0cmluZyk7CisgICAgZWxzZQorCXJldHVybiBzdGFy
dEdpbyh1cmxTdHJpbmcpOworfQorCisjaWZkZWYgRklYTUUKKyAgICAgICAgLy8gSWYgd2UgZG9u
J3QgY2FsbCBkaWRGYWlsIHRoZSBqb2IgaXMgbm90IGNvbXBsZXRlIGZvciB3ZWJraXQgZXZlbiBm
YWxzZSBpcyByZXR1cm5lZC4KKyAgICAgICAgaWYgKGQtPmNsaWVudCgpKSB7CisgICAgICAgICAg
ICBSZXNvdXJjZUVycm9yIGVycm9yKCJ3ZWJraXQtbmV0d29yay1lcnJvciIsIEVSUk9SX1VOS05P
V05fUFJPVE9DT0wsIHVybFN0cmluZywgcHJvdG9jb2wpOworICAgICAgICAgICAgZC0+Y2xpZW50
KCktPmRpZEZhaWwodGhpcywgZXJyb3IpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyNlbmRpZgorCiB2b2lkIFJlc291cmNlSGFuZGxlOjpjYW5jZWwoKQogewogICAgIGQtPm1f
Y2FuY2VsbGVkID0gdHJ1ZTsKQEAgLTM0MSw2ICszNDQsOSBAQCB2b2lkIFJlc291cmNlSGFuZGxl
OjpjYW5jZWwoKQogICAgICAgICBzb3VwX3Nlc3Npb25fY2FuY2VsX21lc3NhZ2Uoc2Vzc2lvbiwg
ZC0+bV9tc2csIFNPVVBfU1RBVFVTX0NBTkNFTExFRCk7CiAgICAgICAgIC8vIEZvciByZS1lbnRy
YW5jeSB0cm91YmxlcyB3ZSBjYWxsIGRpZEZpbmlzaExvYWRpbmcgd2hlbiB0aGUgbWVzc2FnZSBo
YXNuJ3QgYmVlbiBoYW5kbGVkIHlldC4KICAgICAgICAgZC0+Y2xpZW50KCktPmRpZEZpbmlzaExv
YWRpbmcodGhpcyk7CisgICAgfSBlbHNlIGlmIChkLT5tX2NhbmNlbGxhYmxlKSB7CisJZ19jYW5j
ZWxsYWJsZV9jYW5jZWwoZC0+bV9jYW5jZWxsYWJsZSk7CisgICAgICAgIGQtPmNsaWVudCgpLT5k
aWRGaW5pc2hMb2FkaW5nKHRoaXMpOwogICAgIH0KIH0KIApAQCAtMzc5LDQgKzM4NSwxODMgQEAg
dm9pZCBSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBSZXNvdXJjZUUKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCisvLyBH
SU8tYmFzZWQgbG9hZGVyCisKK3N0YXRpYyB2b2lkIGNsZWFudXBHaW9PcGVyYXRpb24oUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSkKK3sKKyAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gaGFu
ZGxlLT5nZXRJbnRlcm5hbCgpOworCisgICAgaWYgKGQtPm1fZ2ZpbGUpIHsKKwlnX29iamVjdF91
bnJlZihkLT5tX2dmaWxlKTsKKwlkLT5tX2dmaWxlID0gTlVMTDsKKyAgICB9CisgICAgaWYgKGQt
Pm1fY2FuY2VsbGFibGUpIHsKKwlnX29iamVjdF91bnJlZihkLT5tX2NhbmNlbGxhYmxlKTsKKwlk
LT5tX2NhbmNlbGxhYmxlID0gTlVMTDsKKyAgICB9CisgICAgaWYgKGQtPm1faW5wdXRfc3RyZWFt
KSB7CisJZ19vYmplY3RfdW5yZWYoZC0+bV9pbnB1dF9zdHJlYW0pOworCWQtPm1fY2FuY2VsbGFi
bGUgPSBOVUxMOworICAgIH0KKyAgICBpZiAoZC0+bV9idWZmZXIpIHsKKwlnX2ZyZWUoZC0+bV9i
dWZmZXIpOworCWQtPm1fYnVmZmVyID0gTlVMTDsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGNs
b3NlQ2FsbGJhY2soR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlcywgZ3BvaW50ZXIg
ZGF0YSkKK3sKKyAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3Vy
Y2VIYW5kbGUqPihkYXRhKTsKKyAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gaGFuZGxl
LT5nZXRJbnRlcm5hbCgpOworCisgICAgZ19pbnB1dF9zdHJlYW1fY2xvc2VfZmluaXNoKGQtPm1f
aW5wdXRfc3RyZWFtLCByZXMsIE5VTEwpOworICAgIGNsZWFudXBHaW9PcGVyYXRpb24oaGFuZGxl
KTsKK30KKworc3RhdGljIHZvaWQgcmVhZENhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5j
UmVzdWx0KiByZXMsIGdwb2ludGVyIGRhdGEpCit7CisgICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRs
ZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oZGF0YSk7CisgICAgUmVzb3VyY2VIYW5k
bGVJbnRlcm5hbCogZCA9IGhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKKyAgICBSZXNvdXJjZUhhbmRs
ZUNsaWVudCogY2xpZW50ID0gaGFuZGxlLT5jbGllbnQoKTsKKworICAgIGlmIChkLT5tX2NhbmNl
bGxlZCB8fCAhY2xpZW50KSB7CisJY2xlYW51cEdpb09wZXJhdGlvbihoYW5kbGUpOworCXJldHVy
bjsKKyAgICB9CisKKyAgICBnc3NpemUgbnJlYWQ7CisgICAgR0Vycm9yICplcnJvciA9IDA7CisK
KyAgICBucmVhZCA9IGdfaW5wdXRfc3RyZWFtX3JlYWRfZmluaXNoKGQtPm1faW5wdXRfc3RyZWFt
LCByZXMsICZlcnJvcik7CisgICAgaWYgKGVycm9yKSB7CisJY2xlYW51cEdpb09wZXJhdGlvbiho
YW5kbGUpOworCS8vIEZJWE1FOiBlcnJvcgorCWNsaWVudC0+ZGlkRmluaXNoTG9hZGluZyhoYW5k
bGUpOworCXJldHVybjsKKyAgICB9IGVsc2UgaWYgKCFucmVhZCkgeworCWNsaWVudC0+ZGlkRmlu
aXNoTG9hZGluZyhoYW5kbGUpOworCWdfaW5wdXRfc3RyZWFtX2Nsb3NlX2FzeW5jKGQtPm1faW5w
dXRfc3RyZWFtLCBHX1BSSU9SSVRZX0RFRkFVTFQsCisJCQkJICAgTlVMTCwgY2xvc2VDYWxsYmFj
aywgaGFuZGxlKTsKKwlyZXR1cm47CisgICAgfQorCisgICAgZC0+bV90b3RhbCArPSBucmVhZDsK
KyAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgZC0+bV9idWZmZXIsIG5yZWFkLCBk
LT5tX3RvdGFsKTsKKworICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMoZC0+bV9pbnB1dF9z
dHJlYW0sIGQtPm1fYnVmZmVyLCBkLT5tX2J1ZnNpemUsCisJCQkgICAgICBHX1BSSU9SSVRZX0RF
RkFVTFQsIGQtPm1fY2FuY2VsbGFibGUsCisJCQkgICAgICByZWFkQ2FsbGJhY2ssIGhhbmRsZSk7
Cit9CisKK3N0YXRpYyB2b2lkIG9wZW5DYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jl
c3VsdCogcmVzLCBncG9pbnRlciBkYXRhKQoreworICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUg
PSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOworICAgIFJlc291cmNlSGFuZGxl
SW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdldEludGVybmFsKCk7CisgICAgUmVzb3VyY2VIYW5kbGVD
bGllbnQqIGNsaWVudCA9IGhhbmRsZS0+Y2xpZW50KCk7CisKKyAgICBpZiAoZC0+bV9jYW5jZWxs
ZWQgfHwgIWNsaWVudCkgeworCWNsZWFudXBHaW9PcGVyYXRpb24oaGFuZGxlKTsKKwlyZXR1cm47
CisgICAgfQorCisgICAgR0ZpbGVJbnB1dFN0cmVhbSogaW47CisgICAgR0Vycm9yICplcnJvciA9
IE5VTEw7CisgICAgaW4gPSBnX2ZpbGVfcmVhZF9maW5pc2goR19GSUxFKHNvdXJjZSksIHJlcywg
JmVycm9yKTsKKyAgICBpZiAoZXJyb3IpIHsKKwljbGVhbnVwR2lvT3BlcmF0aW9uKGhhbmRsZSk7
CisJLy8gRklYTUU6IGVycm9yCisJY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKGhhbmRsZSk7CisJ
cmV0dXJuOworICAgIH0KKworICAgIGQtPm1faW5wdXRfc3RyZWFtID0gR19JTlBVVF9TVFJFQU0o
aW4pOworICAgIGQtPm1fYnVmc2l6ZSA9IDgxOTI7CisgICAgZC0+bV9idWZmZXIgPSBzdGF0aWNf
Y2FzdDxjaGFyKj4oZ19tYWxsb2MoZC0+bV9idWZzaXplKSk7CisgICAgZC0+bV90b3RhbCA9IDA7
CisgICAgZ19pbnB1dF9zdHJlYW1fcmVhZF9hc3luYyhkLT5tX2lucHV0X3N0cmVhbSwgZC0+bV9i
dWZmZXIsIGQtPm1fYnVmc2l6ZSwKKwkJCSAgICAgIEdfUFJJT1JJVFlfREVGQVVMVCwgZC0+bV9j
YW5jZWxsYWJsZSwKKwkJCSAgICAgIHJlYWRDYWxsYmFjaywgaGFuZGxlKTsKIH0KKworc3RhdGlj
IHZvaWQgcXVlcnlJbmZvQ2FsbGJhY2soR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJl
cywgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gc3RhdGlj
X2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihkYXRhKTsKKyAgICBSZXNvdXJjZUhhbmRsZUludGVybmFs
KiBkID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpOworICAgIFJlc291cmNlSGFuZGxlQ2xpZW50KiBj
bGllbnQgPSBoYW5kbGUtPmNsaWVudCgpOworCisgICAgaWYgKGQtPm1fY2FuY2VsbGVkKSB7CisJ
Y2xlYW51cEdpb09wZXJhdGlvbihoYW5kbGUpOworCXJldHVybjsKKyAgICB9CisKKyAgICBSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlOworCisgICAgY2hhciogdXJpID0gZ19maWxlX2dldF91cmko
ZC0+bV9nZmlsZSk7CisgICAgcmVzcG9uc2Uuc2V0VXJsKEtVUkwodXJpKSk7CisgICAgZ19mcmVl
KHVyaSk7CisKKyAgICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKyAgICBHRmlsZUluZm8qIGluZm8g
PSBnX2ZpbGVfcXVlcnlfaW5mb19maW5pc2goZC0+bV9nZmlsZSwgcmVzLCAmZXJyb3IpOworCisg
ICAgaWYgKGVycm9yKSB7CisJY2xlYW51cEdpb09wZXJhdGlvbihoYW5kbGUpOworCisJaWYgKGVy
cm9yLT5kb21haW4gPT0gR19JT19FUlJPUiAmJgorCSAgICBlcnJvci0+Y29kZSA9PSBHX0lPX0VS
Uk9SX05PVF9GT1VORCkKKwkgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoU09VUF9TVEFU
VVNfTk9UX0ZPVU5EKTsKKwllbHNlIGlmIChlcnJvci0+ZG9tYWluID09IEdfSU9fRVJST1IgJiYK
KwkJIGVycm9yLT5jb2RlID09IEdfSU9fRVJST1JfUEVSTUlTU0lPTl9ERU5JRUQpCisJICAgIHJl
c3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKFNPVVBfU1RBVFVTX0ZPUkJJRERFTik7CisJZWxzZQor
CSAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZShTT1VQX1NUQVRVU19CQURfUkVRVUVTVCk7
IC8vID8KKwlnX2Vycm9yX2ZyZWUoZXJyb3IpOworCisJY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9u
c2UoaGFuZGxlLCByZXNwb25zZSk7CisJY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKGhhbmRsZSk7
CisJcmV0dXJuOworICAgIH0KKworICAgIGlmIChnX2ZpbGVfaW5mb19nZXRfZmlsZV90eXBlKGlu
Zm8pICE9IEdfRklMRV9UWVBFX1JFR1VMQVIpIHsKKwljbGVhbnVwR2lvT3BlcmF0aW9uKGhhbmRs
ZSk7CisJcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoU09VUF9TVEFUVVNfRk9SQklEREVOKTsg
Ly8gPworCWNsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGhhbmRsZSwgcmVzcG9uc2UpOworCWNs
aWVudC0+ZGlkRmluaXNoTG9hZGluZyhoYW5kbGUpOworCXJldHVybjsKKyAgICB9CisKKyAgICBy
ZXNwb25zZS5zZXRNaW1lVHlwZShnX2ZpbGVfaW5mb19nZXRfY29udGVudF90eXBlKGluZm8pKTsK
KyAgICByZXNwb25zZS5zZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoZ19maWxlX2luZm9fZ2V0X3Np
emUoaW5mbykpOworICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKFNPVVBfU1RBVFVTX09L
KTsKKworICAgIEdUaW1lVmFsIHR2OworICAgIGdfZmlsZV9pbmZvX2dldF9tb2RpZmljYXRpb25f
dGltZShpbmZvLCAmdHYpOworICAgIHJlc3BvbnNlLnNldExhc3RNb2RpZmllZERhdGUodHYudHZf
c2VjKTsKKworICAgIGNsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGhhbmRsZSwgcmVzcG9uc2Up
OworCisgICAgZ19maWxlX3JlYWRfYXN5bmMoZC0+bV9nZmlsZSwgR19QUklPUklUWV9ERUZBVUxU
LCBkLT5tX2NhbmNlbGxhYmxlLAorCQkgICAgICBvcGVuQ2FsbGJhY2ssIGhhbmRsZSk7Cit9CisK
K2Jvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0R2lvKFN0cmluZyB1cmxTdHJpbmcpCit7CisgICAg
aWYgKHJlcXVlc3QoKS5odHRwTWV0aG9kKCkgIT0gIkdFVCIpIHsKKwlSZXNvdXJjZUVycm9yIGVy
cm9yKCJ3ZWJraXQtbmV0d29yay1lcnJvciIsIEVSUk9SX0JBRF9OT05fSFRUUF9NRVRIT0QsIHVy
bFN0cmluZywgcmVxdWVzdCgpLmh0dHBNZXRob2QoKSk7CisJZC0+Y2xpZW50KCktPmRpZEZhaWwo
dGhpcywgZXJyb3IpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZC0+bV9n
ZmlsZSA9IGdfZmlsZV9uZXdfZm9yX3VyaSh1cmxTdHJpbmcudXRmOCgpLmRhdGEoKSk7CisgICAg
ZC0+bV9jYW5jZWxsYWJsZSA9IGdfY2FuY2VsbGFibGVfbmV3KCk7CisgICAgZ19maWxlX3F1ZXJ5
X2luZm9fYXN5bmMoZC0+bV9nZmlsZSwKKwkJCSAgICBHX0ZJTEVfQVRUUklCVVRFX1NUQU5EQVJE
X1RZUEUgIiwiCisJCQkgICAgR19GSUxFX0FUVFJJQlVURV9TVEFOREFSRF9DT05URU5UX1RZUEUg
IiwiCisJCQkgICAgR19GSUxFX0FUVFJJQlVURV9TVEFOREFSRF9TSVpFLAorCQkJICAgIEdfRklM
RV9RVUVSWV9JTkZPX05PTkUsCisJCQkgICAgR19QUklPUklUWV9ERUZBVUxULCBkLT5tX2NhbmNl
bGxhYmxlLAorCQkJICAgIHF1ZXJ5SW5mb0NhbGxiYWNrLCB0aGlzKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20903</attachid>
            <date>2008-04-30 12:07:42 -0700</date>
            <delta_ts>2008-05-01 09:45:15 -0700</delta_ts>
            <desc>revised soup file: support patch</desc>
            <filename>soup-file.diff</filename>
            <type>text/plain</type>
            <size>13286</size>
            <attacher name="Dan Winship">danw</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKLS0tIGEv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBA
QAorMjAwOC0wNC0zMCAgRGFuIFdpbnNoaXAgIDxkYW53QGdub21lLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBYWFgKKworICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODQ5MAorICAgICAgICBBZGQgbW9zdGx5LXdvcmtpbmcgZmlsZTogc3VwcG9ydCBh
bmQgbW9zdGx5LWJyb2tlbiBmdHA6IHN1cHBvcnQgdG8KKyAgICAgICAgdGhlIHNvdXAgYmFja2Vu
ZC4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAu
Y3BwIChzdGFydCk6IGFmdGVyCisgICAgICAgIGRvaW5nIGJhc2ljIGNoZWNrcywgZGVsZWdhdGUg
dG8gb25lIG9mIHRocmVlIHN1Ym1ldGhvZHMKKyAgICAgICAgKHN0YXJ0RGF0YSk6IGhhbmRsZXMg
ZGF0YTogVVJMcworICAgICAgICAoc3RhcnRIdHRwKTogaGFuZGxlcyBodHRwOiBhbmQgaHR0cHM6
IFVSTHMsIHZpYSBsaWJzb3VwCisgICAgICAgIChzdGFydEdpbywgZXRjKTogaGFuZGxlcyBmaWxl
OiBhbmQgZnRwOiBVUkxzLCB2aWEgZ2lvLiBMb3RzIG9mCisgICAgICAgIEZJWE1FcyBkZXRhaWxp
bmcgdGhlIHBhcnRzIHRoYXQgZG9uJ3QgZnVsbHkgd29yayB5ZXQuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6IGFkZCBuZXcgbWVtYmVyCisgICAgICAgIHZhcmlh
YmxlcyBmb3IgZ2lvLWJhc2VkIGxvYWRpbmcKKwogMjAwOC0wNC0zMCAgVGltb3RoeSBIYXRjaGVy
ICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4ZXMgYW4gdW5kZWZpbmVkIHR5cGUg
ZXhjZXB0aW9uIHRoYXQgZmlyZXMgd2hlbiBhZGRpbmcgYSByZXNvdXJjZSB0byB0aGUgaW5zcGVj
dG9yCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUu
aCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCi0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCkBAIC0xNTUsNiArMTU1LDEyIEBAIHB1YmxpYzoK
ICAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBnZXRJbnRlcm5hbCgpIHsgcmV0dXJuIGQuZ2V0
KCk7IH0KICNlbmRpZgogCisjaWYgVVNFKFNPVVApCisgICAgYm9vbCBzdGFydERhdGEoU3RyaW5n
IHVybFN0cmluZyk7CisgICAgYm9vbCBzdGFydEh0dHAoU3RyaW5nIHVybFN0cmluZyk7CisgICAg
Ym9vbCBzdGFydEdpbyhTdHJpbmcgdXJsU3RyaW5nKTsKKyNlbmRpZgorCiAgICAgLy8gVXNlZCB0
byB3b3JrIGFyb3VuZCB0aGUgZmFjdCB0aGF0IHlvdSBkb24ndCBnZXQgYW55IG1vcmUgTlNVUkxD
b25uZWN0aW9uIGNhbGxiYWNrcyB1bnRpbCB5b3UgcmV0dXJuIGZyb20gdGhlIG9uZSB5b3UncmUg
aW4uCiAgICAgc3RhdGljIGJvb2wgbG9hZHNCbG9ja2VkKCk7ICAgIAogICAgIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBiL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCkBAIC0xMTAsNiAr
MTEwLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBVU0UoU09VUCkKICAgICAgICAgICAg
ICwgbV9tc2coMCkKICAgICAgICAgICAgICwgbV9jYW5jZWxsZWQoZmFsc2UpCisgICAgICAgICAg
ICAsIG1fZ2ZpbGUoMCkKKyAgICAgICAgICAgICwgbV9pbnB1dF9zdHJlYW0oMCkKKyAgICAgICAg
ICAgICwgbV9jYW5jZWxsYWJsZSgwKQorICAgICAgICAgICAgLCBtX2J1ZmZlcigwKQorICAgICAg
ICAgICAgLCBtX2J1ZnNpemUoMCkKKyAgICAgICAgICAgICwgbV90b3RhbCgwKQogI2VuZGlmCiAj
aWYgUExBVEZPUk0oUVQpCiAgICAgICAgICAgICAsIG1fam9iKDApCkBAIC0xNzYsNiArMTgyLDEx
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU291cE1lc3NhZ2UqIG1fbXNnOwogICAg
ICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAgICAgICAgIGJvb2wgbV9jYW5jZWxs
ZWQ7CisgICAgICAgIEdGaWxlKiBtX2dmaWxlOworICAgICAgICBHSW5wdXRTdHJlYW0qIG1faW5w
dXRfc3RyZWFtOworICAgICAgICBHQ2FuY2VsbGFibGUqIG1fY2FuY2VsbGFibGU7CisgICAgICAg
IGNoYXIqIG1fYnVmZmVyOworICAgICAgICBnc2l6ZSBtX2J1ZnNpemUsIG1fdG90YWw7CiAjZW5k
aWYKICNpZiBQTEFURk9STShRVCkKICNpZiBRVF9WRVJTSU9OIDwgMHgwNDA0MDAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCi0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNw
cApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVk
ZSA8bGlic291cC9zb3VwLW1lc3NhZ2UuaD4KKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNDQsNyArNDUsOCBAQCBzdGF0aWMgU291cFNlc3Npb24qIHNl
c3Npb24gPSAwOwogdHlwZWRlZiBlbnVtCiB7CiAgICAgRVJST1JfVFJBTlNQT1JULAotICAgIEVS
Uk9SX1VOS05PV05fUFJPVE9DT0wKKyAgICBFUlJPUl9VTktOT1dOX1BST1RPQ09MLAorICAgIEVS
Uk9SX0JBRF9OT05fSFRUUF9NRVRIT0QKIH07CiAKIFJlc291cmNlSGFuZGxlSW50ZXJuYWw6On5S
ZXNvdXJjZUhhbmRsZUludGVybmFsKCkKQEAgLTI0NSw0NSArMjQ3LDE2IEBAIHN0YXRpYyBnYm9v
bGVhbiBwYXJzZURhdGFVcmwoZ3BvaW50ZXIgY2FsbGJhY2tfZGF0YSkKICAgICByZXR1cm4gRkFM
U0U7CiB9CiAKLWJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KEZyYW1lKiBmcmFtZSkKK2Jvb2wg
UmVzb3VyY2VIYW5kbGU6OnN0YXJ0RGF0YShTdHJpbmcgdXJsU3RyaW5nKQogewotICAgIEFTU0VS
VCghZC0+bV9tc2cpOwotCi0gICAgLy8gSWYgd2UgYXJlIG5vIGxvbmdlciBhdHRhY2hlZCB0byBh
IFBhZ2UsIHRoaXMgbXVzdCBiZSBhbiBhdHRlbXB0ZWQgbG9hZCBmcm9tIGFuCi0gICAgLy8gb25V
bmxvYWQgaGFuZGxlciwgc28gbGV0J3MganVzdCBibG9jayBpdC4KLSAgICBpZiAoIWZyYW1lLT5w
YWdlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEtVUkwgdXJsID0gcmVxdWVzdCgp
LnVybCgpOwotICAgIFN0cmluZyBwcm90b2NvbCA9IHVybC5wcm90b2NvbCgpOwotCi0gICAgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKHByb3RvY29sLCAiZGF0YSIpKSB7Ci0gICAgICAgIC8vIElmIHBh
cnNlRGF0YVVybCBpcyBjYWxsZWQgc3luY3Jvbm91c2x5IHRoZSBqb2IgaXMgbm90IHlldCBlZmZl
Y3RpdmVseSBzdGFydGVkCisgICAgICAgIC8vIElmIHBhcnNlRGF0YVVybCBpcyBjYWxsZWQgc3lu
Y2hyb25vdXNseSB0aGUgam9iIGlzIG5vdCB5ZXQgZWZmZWN0aXZlbHkgc3RhcnRlZAogICAgICAg
ICAvLyBhbmQgd2Via2l0IHdvbid0IG5ldmVyIGtub3cgdGhhdCB0aGUgZGF0YSBoYXMgYmVlbiBw
YXJzZWQgZXZlbiBkaWRGaW5pc2hMb2FkaW5nIGlzIGNhbGxlZC4KICAgICAgICAgZ19pZGxlX2Fk
ZChwYXJzZURhdGFVcmwsIHRoaXMpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAg
ICBTdHJpbmcgdXJsU3RyaW5nID0gdXJsLnN0cmluZygpOwotCi0gICAgaWYgKCFlcXVhbElnbm9y
aW5nQ2FzZShwcm90b2NvbCwgImh0dHAiKSAmJiAhZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2ws
ICJodHRwcyIpKSB7Ci0gICAgICAgIC8vIElmIHdlIGRvbid0IGNhbGwgZGlkRmFpbCB0aGUgam9i
IGlzIG5vdCBjb21wbGV0ZSBmb3Igd2Via2l0IGV2ZW4gZmFsc2UgaXMgcmV0dXJuZWQuCi0gICAg
ICAgIGlmIChkLT5jbGllbnQoKSkgewotICAgICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcigi
d2Via2l0LW5ldHdvcmstZXJyb3IiLCBFUlJPUl9VTktOT1dOX1BST1RPQ09MLCB1cmxTdHJpbmcs
IHByb3RvY29sKTsKLSAgICAgICAgICAgIGQtPmNsaWVudCgpLT5kaWRGYWlsKHRoaXMsIGVycm9y
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKHVy
bC5pc0xvY2FsRmlsZSgpKSB7Ci0gICAgICAgIFN0cmluZyBxdWVyeSA9IHVybC5xdWVyeSgpOwot
ICAgICAgICAvLyBSZW1vdmUgYW55IHF1ZXJ5IHBhcnQgc2VudCB0byBhIGxvY2FsIGZpbGUuCi0g
ICAgICAgIGlmICghcXVlcnkuaXNFbXB0eSgpKQotICAgICAgICAgICAgdXJsU3RyaW5nID0gdXJs
U3RyaW5nLmxlZnQodXJsU3RyaW5nLmZpbmQocXVlcnkpKTsKLSAgICAgICAgLy8gRGV0ZXJtaW5l
IHRoZSBNSU1FIHR5cGUgYmFzZWQgb24gdGhlIHBhdGguCi0gICAgICAgIGQtPm1fcmVzcG9uc2Uu
c2V0TWltZVR5cGUoTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKFN0cmluZyh1
cmxTdHJpbmcpKSk7Ci0gICAgfQorfQogCitib29sIFJlc291cmNlSGFuZGxlOjpzdGFydEh0dHAo
U3RyaW5nIHVybFN0cmluZykKK3sKICAgICBpZiAoIXNlc3Npb24pIHsKICAgICAgICAgc2Vzc2lv
biA9IHNvdXBfc2Vzc2lvbl9hc3luY19uZXcoKTsKIApAQCAtMzM0LDYgKzMwNywzNiBAQCBib29s
IFJlc291cmNlSGFuZGxlOjpzdGFydChGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK2Jvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KEZyYW1lKiBmcmFtZSkKK3sKKyAgICBBU1NF
UlQoIWQtPm1fbXNnKTsKKworICAgIC8vIElmIHdlIGFyZSBubyBsb25nZXIgYXR0YWNoZWQgdG8g
YSBQYWdlLCB0aGlzIG11c3QgYmUgYW4gYXR0ZW1wdGVkIGxvYWQgZnJvbSBhbgorICAgIC8vIG9u
VW5sb2FkIGhhbmRsZXIsIHNvIGxldCdzIGp1c3QgYmxvY2sgaXQuCisgICAgaWYgKCFmcmFtZS0+
cGFnZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBLVVJMIHVybCA9IHJlcXVlc3Qo
KS51cmwoKTsKKyAgICBTdHJpbmcgdXJsU3RyaW5nID0gdXJsLnN0cmluZygpOworICAgIFN0cmlu
ZyBwcm90b2NvbCA9IHVybC5wcm90b2NvbCgpOworCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KHByb3RvY29sLCAiZGF0YSIpKQorICAgICAgICByZXR1cm4gc3RhcnREYXRhKHVybFN0cmluZyk7
CisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2wsICJodHRwIikgfHwgZXF1
YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2wsICJodHRwcyIpKQorICAgICAgICByZXR1cm4gc3RhcnRI
dHRwKHVybFN0cmluZyk7CisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2ws
ICJmaWxlIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2wsICJmdHAiKSB8fCBlcXVhbEln
bm9yaW5nQ2FzZShwcm90b2NvbCwgImZ0cHMiKSkKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCB3
ZSBiZSBkb2luZyBhbnkgb3RoZXIgcHJvdG9jb2xzIGhlcmU/CisgICAgICAgIHJldHVybiBzdGFy
dEdpbyh1cmxTdHJpbmcpOworICAgIGVsc2UgeworICAgICAgICAvLyBJZiB3ZSBkb24ndCBjYWxs
IGRpZEZhaWwgdGhlIGpvYiBpcyBub3QgY29tcGxldGUgZm9yIHdlYmtpdCBldmVuIGZhbHNlIGlz
IHJldHVybmVkLgorICAgICAgICBpZiAoZC0+Y2xpZW50KCkpIHsKKyAgICAgICAgICAgIFJlc291
cmNlRXJyb3IgZXJyb3IoIndlYmtpdC1uZXR3b3JrLWVycm9yIiwgRVJST1JfVU5LTk9XTl9QUk9U
T0NPTCwgdXJsU3RyaW5nLCBwcm90b2NvbCk7CisgICAgICAgICAgICBkLT5jbGllbnQoKS0+ZGlk
RmFpbCh0aGlzLCBlcnJvcik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KK30KKwogdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKCkKIHsKICAgICBkLT5tX2NhbmNl
bGxlZCA9IHRydWU7CkBAIC0zNDEsNiArMzQ0LDkgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y2Fu
Y2VsKCkKICAgICAgICAgc291cF9zZXNzaW9uX2NhbmNlbF9tZXNzYWdlKHNlc3Npb24sIGQtPm1f
bXNnLCBTT1VQX1NUQVRVU19DQU5DRUxMRUQpOwogICAgICAgICAvLyBGb3IgcmUtZW50cmFuY3kg
dHJvdWJsZXMgd2UgY2FsbCBkaWRGaW5pc2hMb2FkaW5nIHdoZW4gdGhlIG1lc3NhZ2UgaGFzbid0
IGJlZW4gaGFuZGxlZCB5ZXQuCiAgICAgICAgIGQtPmNsaWVudCgpLT5kaWRGaW5pc2hMb2FkaW5n
KHRoaXMpOworICAgIH0gZWxzZSBpZiAoZC0+bV9jYW5jZWxsYWJsZSkgeworICAgICAgICBnX2Nh
bmNlbGxhYmxlX2NhbmNlbChkLT5tX2NhbmNlbGxhYmxlKTsKKyAgICAgICAgZC0+Y2xpZW50KCkt
PmRpZEZpbmlzaExvYWRpbmcodGhpcyk7CiAgICAgfQogfQogCkBAIC0zNzksNCArMzg1LDE5NiBA
QCB2b2lkIFJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIFJlc291cmNlRQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKKy8v
IEdJTy1iYXNlZCBsb2FkZXIKKworc3RhdGljIHZvaWQgY2xlYW51cEdpb09wZXJhdGlvbihSZXNv
dXJjZUhhbmRsZSogaGFuZGxlKQoreworICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBo
YW5kbGUtPmdldEludGVybmFsKCk7CisKKyAgICBpZiAoZC0+bV9nZmlsZSkgeworICAgICAgICBn
X29iamVjdF91bnJlZihkLT5tX2dmaWxlKTsKKyAgICAgICAgZC0+bV9nZmlsZSA9IE5VTEw7Cisg
ICAgfQorICAgIGlmIChkLT5tX2NhbmNlbGxhYmxlKSB7CisgICAgICAgIGdfb2JqZWN0X3VucmVm
KGQtPm1fY2FuY2VsbGFibGUpOworICAgICAgICBkLT5tX2NhbmNlbGxhYmxlID0gTlVMTDsKKyAg
ICB9CisgICAgaWYgKGQtPm1faW5wdXRfc3RyZWFtKSB7CisgICAgICAgIGdfb2JqZWN0X3VucmVm
KGQtPm1faW5wdXRfc3RyZWFtKTsKKyAgICAgICAgZC0+bV9jYW5jZWxsYWJsZSA9IE5VTEw7Cisg
ICAgfQorICAgIGlmIChkLT5tX2J1ZmZlcikgeworICAgICAgICBnX2ZyZWUoZC0+bV9idWZmZXIp
OworICAgICAgICBkLT5tX2J1ZmZlciA9IE5VTEw7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBj
bG9zZUNhbGxiYWNrKEdPYmplY3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXMsIGdwb2ludGVy
IGRhdGEpCit7CisgICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291
cmNlSGFuZGxlKj4oZGF0YSk7CisgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGhhbmRs
ZS0+Z2V0SW50ZXJuYWwoKTsKKworICAgIGdfaW5wdXRfc3RyZWFtX2Nsb3NlX2ZpbmlzaChkLT5t
X2lucHV0X3N0cmVhbSwgcmVzLCBOVUxMKTsKKyAgICBjbGVhbnVwR2lvT3BlcmF0aW9uKGhhbmRs
ZSk7CiB9CisKK3N0YXRpYyB2b2lkIHJlYWRDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3lu
Y1Jlc3VsdCogcmVzLCBncG9pbnRlciBkYXRhKQoreworICAgIFJlc291cmNlSGFuZGxlKiBoYW5k
bGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGRhdGEpOworICAgIFJlc291cmNlSGFu
ZGxlSW50ZXJuYWwqIGQgPSBoYW5kbGUtPmdldEludGVybmFsKCk7CisgICAgUmVzb3VyY2VIYW5k
bGVDbGllbnQqIGNsaWVudCA9IGhhbmRsZS0+Y2xpZW50KCk7CisKKyAgICBpZiAoZC0+bV9jYW5j
ZWxsZWQgfHwgIWNsaWVudCkgeworICAgICAgICBjbGVhbnVwR2lvT3BlcmF0aW9uKGhhbmRsZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnc3NpemUgbnJlYWQ7CisgICAgR0Vycm9y
ICplcnJvciA9IDA7CisKKyAgICBucmVhZCA9IGdfaW5wdXRfc3RyZWFtX3JlYWRfZmluaXNoKGQt
Pm1faW5wdXRfc3RyZWFtLCByZXMsICZlcnJvcik7CisgICAgaWYgKGVycm9yKSB7CisgICAgICAg
IGNsZWFudXBHaW9PcGVyYXRpb24oaGFuZGxlKTsKKyAgICAgICAgLy8gRklYTUU6IGVycm9yCisg
ICAgICAgIGNsaWVudC0+ZGlkRmluaXNoTG9hZGluZyhoYW5kbGUpOworICAgICAgICByZXR1cm47
CisgICAgfSBlbHNlIGlmICghbnJlYWQpIHsKKyAgICAgICAgY2xpZW50LT5kaWRGaW5pc2hMb2Fk
aW5nKGhhbmRsZSk7CisgICAgICAgIGdfaW5wdXRfc3RyZWFtX2Nsb3NlX2FzeW5jKGQtPm1faW5w
dXRfc3RyZWFtLCBHX1BSSU9SSVRZX0RFRkFVTFQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5VTEwsIGNsb3NlQ2FsbGJhY2ssIGhhbmRsZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBkLT5tX3RvdGFsICs9IG5yZWFkOworICAgIGNsaWVudC0+ZGlkUmVjZWl2
ZURhdGEoaGFuZGxlLCBkLT5tX2J1ZmZlciwgbnJlYWQsIGQtPm1fdG90YWwpOworCisgICAgZ19p
bnB1dF9zdHJlYW1fcmVhZF9hc3luYyhkLT5tX2lucHV0X3N0cmVhbSwgZC0+bV9idWZmZXIsIGQt
Pm1fYnVmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfUFJJT1JJVFlfREVG
QVVMVCwgZC0+bV9jYW5jZWxsYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
YWRDYWxsYmFjaywgaGFuZGxlKTsKK30KKworc3RhdGljIHZvaWQgb3BlbkNhbGxiYWNrKEdPYmpl
Y3QqIHNvdXJjZSwgR0FzeW5jUmVzdWx0KiByZXMsIGdwb2ludGVyIGRhdGEpCit7CisgICAgUmVz
b3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oZGF0YSk7
CisgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsK
KyAgICBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50ID0gaGFuZGxlLT5jbGllbnQoKTsKKwor
ICAgIGlmIChkLT5tX2NhbmNlbGxlZCB8fCAhY2xpZW50KSB7CisgICAgICAgIGNsZWFudXBHaW9P
cGVyYXRpb24oaGFuZGxlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdGaWxlSW5w
dXRTdHJlYW0qIGluOworICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworICAgIGluID0gZ19maWxl
X3JlYWRfZmluaXNoKEdfRklMRShzb3VyY2UpLCByZXMsICZlcnJvcik7CisgICAgaWYgKGVycm9y
KSB7CisgICAgICAgIGNsZWFudXBHaW9PcGVyYXRpb24oaGFuZGxlKTsKKyAgICAgICAgLy8gRklY
TUU6IGVycm9yCisgICAgICAgIGNsaWVudC0+ZGlkRmluaXNoTG9hZGluZyhoYW5kbGUpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgZC0+bV9pbnB1dF9zdHJlYW0gPSBHX0lOUFVUX1NU
UkVBTShpbik7CisgICAgZC0+bV9idWZzaXplID0gODE5MjsKKyAgICBkLT5tX2J1ZmZlciA9IHN0
YXRpY19jYXN0PGNoYXIqPihnX21hbGxvYyhkLT5tX2J1ZnNpemUpKTsKKyAgICBkLT5tX3RvdGFs
ID0gMDsKKyAgICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5jKGQtPm1faW5wdXRfc3RyZWFtLCBk
LT5tX2J1ZmZlciwgZC0+bV9idWZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R19QUklPUklUWV9ERUZBVUxULCBkLT5tX2NhbmNlbGxhYmxlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVhZENhbGxiYWNrLCBoYW5kbGUpOworfQorCitzdGF0aWMgdm9pZCBxdWVy
eUluZm9DYWxsYmFjayhHT2JqZWN0KiBzb3VyY2UsIEdBc3luY1Jlc3VsdCogcmVzLCBncG9pbnRl
ciBkYXRhKQoreworICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNv
dXJjZUhhbmRsZSo+KGRhdGEpOworICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBoYW5k
bGUtPmdldEludGVybmFsKCk7CisgICAgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCA9IGhh
bmRsZS0+Y2xpZW50KCk7CisKKyAgICBpZiAoZC0+bV9jYW5jZWxsZWQpIHsKKyAgICAgICAgY2xl
YW51cEdpb09wZXJhdGlvbihoYW5kbGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKKworICAgIGNoYXIqIHVyaSA9IGdfZmlsZV9nZXRf
dXJpKGQtPm1fZ2ZpbGUpOworICAgIHJlc3BvbnNlLnNldFVybChLVVJMKHVyaSkpOworICAgIGdf
ZnJlZSh1cmkpOworCisgICAgR0Vycm9yICplcnJvciA9IE5VTEw7CisgICAgR0ZpbGVJbmZvKiBp
bmZvID0gZ19maWxlX3F1ZXJ5X2luZm9fZmluaXNoKGQtPm1fZ2ZpbGUsIHJlcywgJmVycm9yKTsK
KworICAgIGlmIChlcnJvcikgeworICAgICAgICAvLyBGSVhNRTogdG8gYmUgYWJsZSB0byBoYW5k
bGUgZnRwIFVSSXMgcHJvcGVybHksIHdlIG11c3QKKyAgICAgICAgLy8gY2hlY2sgaWYgdGhlIGVy
cm9yIGlzIEdfSU9fRVJST1JfTk9UX01PVU5URUQsIGFuZCBpZiBzbywKKyAgICAgICAgLy8gY2Fs
bCBnX2ZpbGVfbW91bnRfZW5jbG9zaW5nX3ZvbHVtZSgpIHRvIG1vdW50IHRoZSBmdHAKKyAgICAg
ICAgLy8gc2VydmVyIChhbmQgdGhlbiBrZWVwIHRyYWNrIG9mIHRoZSBmYWN0IHRoYXQgd2UgbW91
bnRlZCBpdCwKKyAgICAgICAgLy8gYW5kIHNldCBhIHRpbWVvdXQgdG8gdW5tb3VudCBpdCBsYXRl
ciBhZnRlciBpdCdzIGJlZW4gaWRsZQorICAgICAgICAvLyBmb3IgYSB3aGlsZSkuCisKKyAgICAg
ICAgY2xlYW51cEdpb09wZXJhdGlvbihoYW5kbGUpOworCisgICAgICAgIGlmIChlcnJvci0+ZG9t
YWluID09IEdfSU9fRVJST1IgJiYKKyAgICAgICAgICAgIGVycm9yLT5jb2RlID09IEdfSU9fRVJS
T1JfTk9UX0ZPVU5EKQorICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoU09V
UF9TVEFUVVNfTk9UX0ZPVU5EKTsKKyAgICAgICAgZWxzZSBpZiAoZXJyb3ItPmRvbWFpbiA9PSBH
X0lPX0VSUk9SICYmCisgICAgICAgICAgICAgICAgIGVycm9yLT5jb2RlID09IEdfSU9fRVJST1Jf
UEVSTUlTU0lPTl9ERU5JRUQpCisgICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29k
ZShTT1VQX1NUQVRVU19GT1JCSURERU4pOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXNw
b25zZS5zZXRIVFRQU3RhdHVzQ29kZShTT1VQX1NUQVRVU19CQURfUkVRVUVTVCk7IC8vID8KKyAg
ICAgICAgZ19lcnJvcl9mcmVlKGVycm9yKTsKKworICAgICAgICAvLyBGSVhNRTogZG8gd2UgbmVl
ZCB0byBmYWtlIHVwIGEgcmVzcG9uc2UgYm9keSBjb250YWluaW5nIHRoZQorICAgICAgICAvLyBl
cnJvciBtZXNzYWdlPworCisgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGhhbmRs
ZSwgcmVzcG9uc2UpOworICAgICAgICBjbGllbnQtPmRpZEZpbmlzaExvYWRpbmcoaGFuZGxlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChnX2ZpbGVfaW5mb19nZXRfZmlsZV90
eXBlKGluZm8pICE9IEdfRklMRV9UWVBFX1JFR1VMQVIpIHsKKyAgICAgICAgLy8gRklYTUU6IHdo
YXQgaWYgdGhlIFVSSSBwb2ludHMgdG8gYSBkaXJlY3Rvcnk/IFNob3VsZCB3ZQorICAgICAgICAv
LyBnZW5lcmF0ZSBhIGxpc3Rpbmc/IEhvdz8gV2hhdCBkbyBvdGhlciBiYWNrZW5kcyBkbyBoZXJl
PworCisgICAgICAgIGNsZWFudXBHaW9PcGVyYXRpb24oaGFuZGxlKTsKKyAgICAgICAgcmVzcG9u
c2Uuc2V0SFRUUFN0YXR1c0NvZGUoU09VUF9TVEFUVVNfRk9SQklEREVOKTsgLy8gPworICAgICAg
ICBjbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShoYW5kbGUsIHJlc3BvbnNlKTsKKyAgICAgICAg
Y2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKGhhbmRsZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICByZXNwb25zZS5zZXRNaW1lVHlwZShnX2ZpbGVfaW5mb19nZXRfY29udGVudF90eXBl
KGluZm8pKTsKKyAgICByZXNwb25zZS5zZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoZ19maWxlX2lu
Zm9fZ2V0X3NpemUoaW5mbykpOworICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKFNPVVBf
U1RBVFVTX09LKTsKKworICAgIEdUaW1lVmFsIHR2OworICAgIGdfZmlsZV9pbmZvX2dldF9tb2Rp
ZmljYXRpb25fdGltZShpbmZvLCAmdHYpOworICAgIHJlc3BvbnNlLnNldExhc3RNb2RpZmllZERh
dGUodHYudHZfc2VjKTsKKworICAgIGNsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGhhbmRsZSwg
cmVzcG9uc2UpOworCisgICAgZ19maWxlX3JlYWRfYXN5bmMoZC0+bV9nZmlsZSwgR19QUklPUklU
WV9ERUZBVUxULCBkLT5tX2NhbmNlbGxhYmxlLAorICAgICAgICAgICAgICAgICAgICAgIG9wZW5D
YWxsYmFjaywgaGFuZGxlKTsKK30KKworYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnRHaW8oU3Ry
aW5nIHVybFN0cmluZykKK3sKKyAgICBpZiAocmVxdWVzdCgpLmh0dHBNZXRob2QoKSAhPSAiR0VU
IikgeworICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yKCJ3ZWJraXQtbmV0d29yay1lcnJvciIs
IEVSUk9SX0JBRF9OT05fSFRUUF9NRVRIT0QsIHVybFN0cmluZywgcmVxdWVzdCgpLmh0dHBNZXRo
b2QoKSk7CisgICAgICAgIGQtPmNsaWVudCgpLT5kaWRGYWlsKHRoaXMsIGVycm9yKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGQtPm1fZ2ZpbGUgPSBnX2ZpbGVfbmV3X2Zv
cl91cmkodXJsU3RyaW5nLnV0ZjgoKS5kYXRhKCkpOworICAgIGQtPm1fY2FuY2VsbGFibGUgPSBn
X2NhbmNlbGxhYmxlX25ldygpOworICAgIGdfZmlsZV9xdWVyeV9pbmZvX2FzeW5jKGQtPm1fZ2Zp
bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19GSUxFX0FUVFJJQlVURV9TVEFOREFS
RF9UWVBFICIsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfRklMRV9BVFRSSUJVVEVf
U1RBTkRBUkRfQ09OVEVOVF9UWVBFICIsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdf
RklMRV9BVFRSSUJVVEVfU1RBTkRBUkRfU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHX0ZJTEVfUVVFUllfSU5GT19OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdf
UFJJT1JJVFlfREVGQVVMVCwgZC0+bV9jYW5jZWxsYWJsZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBxdWVyeUluZm9DYWxsYmFjaywgdGhpcyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K30KKwo=
</data>
<flag name="review"
          id="9144"
          type_id="1"
          status="+"
          setter="alp"
    />
          </attachment>
      

    </bug>

</bugzilla>