<?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>14059</bug_id>
          
          <creation_ts>2007-06-10 01:00:59 -0700</creation_ts>
          <short_desc>[CURL] Does not call didReceiveResponse()</short_desc>
          <delta_ts>2007-07-17 13:55:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          <dependson>5954</dependson>
    
    <dependson>14061</dependson>
          <blocked>14058</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alp Toker">alp</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>kevino</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>8011</commentid>
    <comment_count>0</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-06-10 01:00:59 -0700</bug_when>
    <thetext>The curl network backend should fire off didReceiveResponse() when a response is received. This is important for providing the Content-Type and other information for further processing down the line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>8007</commentid>
    <comment_count>1</comment_count>
      <attachid>14924</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-06-10 01:25:57 -0700</bug_when>
    <thetext>Created attachment 14924
Parse header data and call didReceiveResponse() when appropriate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>7687</commentid>
    <comment_count>2</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2007-06-13 08:05:21 -0700</bug_when>
    <thetext>+  if (strcmp(&quot;\r\n&quot;, ptr))
+        return totalSize;

A comment describing why this guard is the right one would be awesome. We wen through this on irc and I agree that it is sufficient.




+    KURL url(hdr);
+    if (hdr) {

a) could you move KURL url handling further down? It is only used at the last line of this method and it would increase readability
b) Is it documented how KURL(const char*) is handling possible NULL strings? Or is it only possible that the second call where hdr is used returns a NULL string?
c) Would it be too much work to not reuse the char* hdr but have a variable name describing this thing better?


+        char* buf = strdup(hdr);
I think we don&apos;t care for the case where this fails?


</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>7666</commentid>
    <comment_count>3</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-06-13 11:24:43 -0700</bug_when>
    <thetext>Note: I&apos;ve had second thoughts about strtok_r and plan to update this patch to replace it with more conventional/portable header parsing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>6249</commentid>
    <comment_count>4</comment_count>
      <attachid>14924</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-06-26 00:22:10 -0700</bug_when>
    <thetext>Comment on attachment 14924
Parse header data and call didReceiveResponse() when appropriate

Good improvement, but while you&apos;re at it, how about parsing the response headers too? Also, the curl docs imply that the callback you are changing gets called once per received header line, seems like that would be bad. According to libcurl docs:

&quot;This function gets called by libcurl as soon as it has received header data. The header callback will be called once for each header and only complete header lines are passed on to the callback.&quot;

r- to revise in light of these comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>6227</commentid>
    <comment_count>5</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-06-26 07:03:42 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 14924 [edit])
&gt; Good improvement, but while you&apos;re at it, how about parsing the response
&gt; headers too? Also, the curl docs imply that the callback you are changing gets
&gt; called once per received header line, seems like that would be bad. According
&gt; to libcurl docs:
&gt; 
&gt; &quot;This function gets called by libcurl as soon as it has received header data.
&gt; The header callback will be called once for each header and only complete
&gt; header lines are passed on to the callback.&quot;

    if (strcmp(&quot;\r\n&quot;, ptr))
        return totalSize;

ie. the code that follows will only be run once, after the final header is processed, so your concern is not valid but it&apos;s true the code could be less obscurely written/commented.

Parsing the other response headers sounds like an interesting idea. I&apos;ll see how it&apos;s meant to be done from the other http backends.

&gt; 
&gt; r- to revise in light of these comments.
&gt; 

I&apos;ll get round to adding the comment and response header parsing in a few days, but it&apos;s worth noting that the patch works as-is and unblocks a series of other patches/bugs all the way up to making SVG support work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>5804</commentid>
    <comment_count>6</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2007-06-30 18:27:27 -0700</bug_when>
    <thetext>I&apos;m going to rediff now and parse all headers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>5555</commentid>
    <comment_count>7</comment_count>
      <attachid>15396</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2007-07-05 01:22:45 -0700</bug_when>
    <thetext>Created attachment 15396
CURL rework header handling

The question I have is:
   Should the parsing of Content-Type, Content-Dispo... go into a CURL specific ResourceResponse::doUpdateResourceResponse?


 ChangeLog                                       |   99 ++++++++++++++++++++++++
 platform/network/HTTPParsers.cpp                |   48 +++++++++++
 platform/network/HTTPParsers.h                  |    2 
 platform/network/ResourceHandleInternal.h       |    4 
 platform/network/ResourceResponse.cpp           |    7 +
 platform/network/ResourceResponse.h             |    1 
 platform/network/cf/ResourceResponseCFNet.cpp   |   29 -------
 platform/network/curl/ResourceHandleCurl.cpp    |    2 
 platform/network/curl/ResourceHandleManager.cpp |   77 +++++++++++++++++-
 platform/network/curl/ResourceHandleManager.h   |    7 -
 10 files changed, 235 insertions(+), 41 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>5521</commentid>
    <comment_count>8</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2007-07-05 09:54:27 -0700</bug_when>
    <thetext>(In reply to comment #7)
ap&apos;s Comments from IRC on the HTTPParser changes:
    -Using split(&apos;;&apos;) is bad for two reasons. It will not honor quotations and is supposed to be slow. This affects my parsing method for the Content-Type and the one moved from network/cf/ResourceResponseCFNet.cpp
    -There are two places parsing the Content-Type already. This is http://trac.webkit.org/projects/webkit/browser/trunk/WebCore/xml/xmlhttprequest.cpp#L90 and TextResourceLoader.

Also the change of the CURL timeout was not documented in the ChangeLog.

So the next steps of the patch regarding will be to remove the split from the code and follow the xhtmlhttprequest examples and move one Content-Type parsing method into HTTPParsers.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>5051</commentid>
    <comment_count>9</comment_count>
      <attachid>15470</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2007-07-10 17:35:40 -0700</bug_when>
    <thetext>Created attachment 15470
CURL rework headerCallback

Simplified headerCallback on the cost of adding more setters to ResourceResponse. The added setters set m_isNull to false to work for the CURL backend.

This patch requires the patch for HTTPParsers from the bugreport related to this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>5003</commentid>
    <comment_count>10</comment_count>
      <attachid>15477</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2007-07-11 11:57:30 -0700</bug_when>
    <thetext>Created attachment 15477
CURL rework headerCallback

Catch up with the renaming of the parse functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4643</commentid>
    <comment_count>11</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2007-07-16 02:51:44 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=15477) [edit]
&gt; CURL rework headerCallback
&gt; 
&gt; Catch up with the renaming of the parse functions.

Any news on this patch after talking to Maciej?
If all issues are resolved, I&apos;d like to r+ it.

Greetings,
Niko</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4609</commentid>
    <comment_count>12</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2007-07-16 10:32:43 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)

&gt; Any news on this patch after talking to Maciej?
&gt; If all issues are resolved, I&apos;d like to r+ it.

Not yet. I will try to ask Maciej to take another look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4597</commentid>
    <comment_count>13</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2007-07-16 21:11:16 -0700</bug_when>
    <thetext>I&apos;ve just tried this patch on the wx port, and it does fire didReceiveResponse as expected. However, it only sends it for HTTP downloads. Page loads from disk (e.g. file:// URLs) won&apos;t get a didReceiveResponse message. I&apos;m not sure how best to resolve this though, as CURL does not seem to have a way to send notification when a connection is established. 

Ideas? 

Thanks,

Kevin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4601</commentid>
    <comment_count>14</comment_count>
      <attachid>15477</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-07-16 22:22:37 -0700</bug_when>
    <thetext>Comment on attachment 15477
CURL rework headerCallback

Instead of adding all those setters to ResourceResponse, I think you should use the constructor that takes all of the values as parameters.

    d-&gt;m_response = ResourceResponse(x, x, x, x, x);

I suppose there&apos;s no major harm in adding the setters, but there&apos;s no major benefit either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4558</commentid>
    <comment_count>15</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2007-07-17 01:49:35 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 15477 [edit])
&gt; Instead of adding all those setters to ResourceResponse, I think you should use
&gt; the constructor that takes all of the values as parameters.
&gt; 
&gt;     d-&gt;m_response = ResourceResponse(x, x, x, x, x);
&gt; 
&gt; I suppose there&apos;s no major harm in adding the setters, but there&apos;s no major
&gt; benefit either.

Well, in this case I should have a HTTPHeaderMap in my ResourceHandleInternal as well and either add a setHTTPHeaderMap to ResourceResponse (like in a previous version of this patch), but if you compare the two versions I think the current one (requring more setters) is better to read.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4555</commentid>
    <comment_count>16</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2007-07-17 01:53:32 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; the current one (requring more setters) is better to read.
read that as slighly better to read. Check http://bugs.webkit.org/attachment.cgi?id=15396 (ignore the hunks that went into 5954) and compare with the latest one. I&apos;m happy to get review of the two approaches. 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4556</commentid>
    <comment_count>17</comment_count>
      <attachid>15477</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-07-17 01:55:12 -0700</bug_when>
    <thetext>Comment on attachment 15477
CURL rework headerCallback

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>4478</commentid>
    <comment_count>18</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2007-07-17 13:55:11 -0700</bug_when>
    <thetext>Landed in r24372 and a new bug regarding m_isNull = false in the setters of ResourceResponse will be filed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14924</attachid>
            <date>2007-06-10 01:25:57 -0700</date>
            <delta_ts>2007-07-05 01:22:45 -0700</delta_ts>
            <desc>Parse header data and call didReceiveResponse() when appropriate</desc>
            <filename>curl-didrec.patch</filename>
            <type>text/plain</type>
            <size>2900</size>
            <attacher name="Alp Toker">alp</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjA4NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMDctMDYtMTAgIEFscCBUb2tlciAgPGFscC50b2tlckBjb2xsYWJv
cmEuY28udWs+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwNTkKKyAgICAgICAg
Y3VybCBiYWNrZW5kIGRvZXMgbm90IGNhbGwgZGlkUmVjZWl2ZVJlc3BvbnNlKCkKKworICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aGVhZGVyQ2FsbGJhY2spOiBQYXJzZSBoZWFkZXIgZGF0YSBhbmQgY2Fs
bAorICAgICAgICBkaWRSZWNlaXZlUmVzcG9uc2UoKSB3aGVuIGFwcHJvcHJpYXRlLgorCiAyMDA3
LTA2LTA4ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgT2xpdmVyLgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VI
YW5kbGVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyMjA4MykKKysrIFdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2
IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFpbC5jb20gCisgKiBDb3B5cmln
aHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHAudG9rZXJAY29sbGFib3JhLmNvLnVrPgogICogQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTg5LDcgKzkwLDUzIEBAIHN0
YXRpYyBzaXplX3Qgd3JpdGVDYWxsYmFjayh2b2lkKiBwdHIsIHMKIC8vIG11bHRpcGxlIHRpbWVz
IGZvciBhIGdpdmVuIHJlc3BvbnNlLgogc3RhdGljIHNpemVfdCBoZWFkZXJDYWxsYmFjayhjaGFy
KiBwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQqIGRhdGEpCiB7CisgICAgUmVz
b3VyY2VIYW5kbGUqIGpvYiA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oZGF0YSk7Cisg
ICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGpvYi0+Z2V0SW50ZXJuYWwoKTsKICAgICBp
bnQgdG90YWxTaXplID0gc2l6ZSAqIG5tZW1iOworCisgICAgUmVzb3VyY2VIYW5kbGVDbGllbnQq
IGNsaWVudCA9IGQtPmNsaWVudCgpOworICAgIGlmICghY2xpZW50KQorICAgICAgICByZXR1cm4g
dG90YWxTaXplOworCisgICAgaWYgKHN0cmNtcCgiXHJcbiIsIHB0cikpCisgICAgICAgIHJldHVy
biB0b3RhbFNpemU7CisKKyAgICBDVVJMKiBoID0gZC0+bV9oYW5kbGU7CisgICAgQ1VSTGNvZGUg
ZXJyOworCisgICAgZG91YmxlIGNvbnRlbnRMZW5ndGggPSAwOworICAgIGVyciA9IGN1cmxfZWFz
eV9nZXRpbmZvKGgsIENVUkxJTkZPX0NPTlRFTlRfTEVOR1RIX0RPV05MT0FELCAmY29udGVudExl
bmd0aCk7CisKKyAgICBjb25zdCBjaGFyKiBoZHI7CisKKyAgICBlcnIgPSBjdXJsX2Vhc3lfZ2V0
aW5mbyhoLCBDVVJMSU5GT19FRkZFQ1RJVkVfVVJMLCAmaGRyKTsKKyAgICBLVVJMIHVybChoZHIp
OworCisgICAgZXJyID0gY3VybF9lYXN5X2dldGluZm8oaCwgQ1VSTElORk9fQ09OVEVOVF9UWVBF
LCAmaGRyKTsKKworICAgIFN0cmluZyBjb250ZW50VHlwZTsKKyAgICBTdHJpbmcgdGV4dEVuY29k
aW5nOworCisgICAgaWYgKGhkcikgeworICAgICAgICBjaGFyKiBidWYgPSBzdHJkdXAoaGRyKTsK
KyAgICAgICAgY2hhciogc2F2ZXB0cjsKKyAgICAgICAgY29udGVudFR5cGUgPSBTdHJpbmcoc3Ry
dG9rX3IoYnVmLCAiOyAiLCAmc2F2ZXB0cikpOworICAgICAgICB3aGlsZSAoY29uc3QgY2hhciog
a2V5ID0gc3RydG9rX3IoTlVMTCwgIj0gIiwgJnNhdmVwdHIpKSB7CisgICAgICAgICAgICBjb25z
dCBjaGFyKiB2YWx1ZSA9IHN0cnRva19yKE5VTEwsICI7ICIsICZzYXZlcHRyKTsKKyAgICAgICAg
ICAgIGlmICghc3RyY2FzZWNtcCgiY2hhcnNldCIsIGtleSkpCisgICAgICAgICAgICAgICAgdGV4
dEVuY29kaW5nID0gU3RyaW5nKHZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBmcmVlKGJ1Zik7
CisgICAgfQorCisgICAgbG9uZyBodHRwQ29kZSA9IDA7CisgICAgZXJyID0gY3VybF9lYXN5X2dl
dGluZm8oaCwgQ1VSTElORk9fUkVTUE9OU0VfQ09ERSwgJmh0dHBDb2RlKTsKKworICAgIC8vIFRP
RE86IHByb3ZpZGUgdGhlIGxhc3QgcGFyYW1ldGVyIHByb3Blcmx5CisgICAgUmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZSh1cmwsIGNvbnRlbnRUeXBlLCBzdGF0aWNfY2FzdDxsb25nIGxvbmcgaW50
Pihjb250ZW50TGVuZ3RoKSwgdGV4dEVuY29kaW5nLCBTdHJpbmcoKSk7CisgICAgcmVzcG9uc2Uu
c2V0SFRUUFN0YXR1c0NvZGUoaHR0cENvZGUpOworICAgIGNsaWVudC0+ZGlkUmVjZWl2ZVJlc3Bv
bnNlKGpvYiwgcmVzcG9uc2UpOworCiAgICAgcmV0dXJuIHRvdGFsU2l6ZTsKIH0KIAo=
</data>
<flag name="review"
          id="6166"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15396</attachid>
            <date>2007-07-05 01:22:45 -0700</date>
            <delta_ts>2007-07-10 17:35:40 -0700</delta_ts>
            <desc>CURL rework header handling</desc>
            <filename>curl-rework-header-handling-r0.patch</filename>
            <type>text/plain</type>
            <size>17609</size>
            <attacher name="Holger Freyther">zecke</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNDAxMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjMgQEAKKzIwMDctMDctMDUgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8
emVja2VAc2VsZmlzaC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV0FSTklORzogTk8gVEVTVCBDQVNFUyBBRERFRCBPUiBDSEFOR0VECisKKyAg
ICAgICAgSW1wbGVtZW50IHRoZSBjYWxsYmFjayByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgSFRU
UCBIZWFkZXJzLiBUaGlzCisgICAgICAgIGNhbGxiYWNrIGdldHMgaW52b2tlZCBmb3IgZXZlcnkg
SGVhZGVyIGFuZCB3ZSBjb2xsZWN0IHRoZXNlCisgICAgICAgIGhlYWRlcnMgdW50aWwgdGhlIGVu
ZCBvZiB0aGUgSGVhZGVycyBpcyBpbmRpY2F0ZWQgYnkgJ1xyXG4nIHRoZW4gd2Ugd2lsbAorICAg
ICAgICBwYXJzZSB0aGUgQ29udGVudC1UeXBlIGFuZCBDb250ZW50LURpc3Bvc2l0aW9uIGFuZCBz
ZW5kIHRoZSByZXNwb25zZS4KKyAgICAgICAgRXhwaXJ5LCBNb2RpZmNhdGlvbiBhcmUgbm90IHll
dCBwYXJzZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50
ZXJuYWwuaDogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSwgYWRkIEhUVFBIZWFkZXJNYXAKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlSW50ZXJuYWw6OlJlc291cmNlSGFuZGxlSW50ZXJu
YWwpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZUludGVybmFsOjp+UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCk6IFJlbW92ZSB1bnVzZWQgdmFy
aWFibGUKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlTWFuYWdlcjo6flJlc291
cmNlSGFuZGxlTWFuYWdlcik6IEZyZWUgdmFyaWFibGVzCisgICAgICAgIChXZWJDb3JlOjp3cml0
ZUNhbGxiYWNrKTogc2lnbmVkIC0+IHVuc2lnbmVkIGZvciB0b3RhbFNpemUKKyAgICAgICAgKFdl
YkNvcmU6OmhlYWRlckNhbGxiYWNrKTogSW1wbGVtZW50IEhUVFAgSGVhZGVyIHBhcnNpbmcKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlTWFuYWdlcjo6c3RhcnRKb2IpOiBhZGQgYSBu
ZXcgbGluZQorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1h
bmFnZXIuaDogQWRkIGQndG9yIHRvIGZyZWUgdmFyaWFibGVzLCBpdCBpcyBub3QgeWV0IGNhbGxl
ZAorCisyMDA3LTA3LTA1ICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciAgPHplY2tlQHNlbGZp
c2gub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBzZXRIVFRQSGVhZGVyRmllbGRzIHRvIGFsbG93IHRvIHNldCB0aGUgSFRUUEhlYWRlck1h
cCBmcm9tIHRoZQorICAgICAgICBvdXRzaWRlLiBUaGUgZWZmZWN0IGlzIHRoYXQgYWxsIGN1cnJl
bnQgaGVhZGVycyBnZXQgcmVwbGFjZWQgd2l0aCB0aGUKKyAgICAgICAgbmV3IG1hcC4KKworICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpzZXRIVFRQSGVhZGVyRmllbGRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2UuaDoKKworMjAwNy0wNy0wNCAgSG9s
Z2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgIDx6ZWNrZUBzZWxmaXNoLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXQVJOSU5HOiBOTyBURVNUIENB
U0VTIEFEREVEIE9SIENIQU5HRUQKKworICAgICAgICBBZGQgcGFyc2VDb250ZW50VHlwZSBmdW5j
dGlvbiB0byBwYXJzZSB0aGUgSFRUUCAxLjEgbWVkaWEtdHlwZQorICAgICAgICB3aGljaCBpcyBj
b250YWluZWQgaW4gdGhlIENvbnRlbnQtVHlwZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDb250ZW50VHlwZSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oOgorCisyMDA3LTA3LTA0
ICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciAgPHplY2tlQHNlbGZpc2gub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgcGFyc2luZyBj
b2RlIGZyb20gQ29yZUZvdW5kYXRpb24gdG8gSFRUUFBhcnNlciBhcyBpdCB3aWxsIGJlIHVzZWQK
KyAgICAgICAgYnkgdGhlIENVUkwgYmFja2VuZC4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZW5hbWVGcm9tSFRUUENv
bnRlbnREaXNwb3NpdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vy
cy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0
LmNwcDogTW92ZSBpdCBhd2F5CisKIDIwMDctMDctMDQgIE1hdHQgUGVycnkgIDxtcENvbXBsZXRl
QGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtLgpAQCAtODc5LDYgKzkzOSw0
NSBAQAogICAgICAgICAoV2ViQ29yZTo6U3RyaW5nSW1wbDo6dG9GbG9hdCk6CiAgICAgICAgICog
cGxhdGZvcm0vU3RyaW5nSW1wbC5oOgogCisyMDA3LTA2LTMwICBIb2xnZXIgSGFucyBQZXRlciBG
cmV5dGhlciAgPHplY2tlQHNlbGZpc2gub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJld29yayBGb250RGF0YSBhbmQgRm9udFBsYXRmb3JtRGF0
YSBmb3IgdGhlIEdkayB3b3JrIHRvIG1ha2UgdmFsZ3JpbmQKKyAgICAgICAgaGFwcHkuCisKKyAg
ICAgICAgTW92ZSBkZXN0cm95aW5nIG9mIEZvbnRDb25maWcgYW5kIENhaXJvLU9iamVjdHMgaG9s
ZCBpbiBGb250UGxhdGZvcm1EYXRhCisgICAgICAgIHRvIEZvbnREYXRhOjpwbGF0Zm9ybURlc3Ry
b3kuIFRoZSBvd25lcnNoaXAgb2YgdGhlc2Ugb2JqZWN0cyBpcyBob2xkIGJ5CisgICAgICAgIEZv
bnREYXRhLiBUaGlzIGlzIGZvbGxvd2luZyB0aGUgTWFjIGFuZCBRdCBwb3J0IGF0IGxlYXN0Lgor
CisgICAgICAgIEN1cnJlbnRseSBpdCBpcyBwb3NzaWJsZSB0aGF0IEZvbnRQbGF0Zm9ybURhdGEg
d2lsbCBub3QgY3JlYXRlIGNhaXJvIHJlc291cmNlcworICAgICAgICBpbiB0aGlzIGNhc2UgYXQg
bGVhc3QgbWFrZSBzdXJlIHRoZSB2YXJpYWJsZXMgYXJlIGluaXRpYWxpemVkIHRvIDAuCisgICAg
ICAgIEluaXRpYWxpemUgeCx5IG9mIHRoZSBjYWlyb19nbHlwaF90IHdpdGggemVybyB0byBhdm9p
ZCBleHRlbnRzLnhfYWR2YW5jZSBkZXBlbmRpbmcKKyAgICAgICAgb24gc3VidHJhY2luZyB3aXRo
IG5vdCBkZWZpbmVkIHZhbHVlcy4KKworICAgICAgICBGb250UGxhdGZvcm1EYXRhOjpoYXNoLiBV
c2luZyBGb250RGVzY3JpcHRpb24gaXMgYSBiYWQgaWRlYSBhcyB3ZSBkb24ndCBoYXZlIGEgY2x1
ZQorICAgICAgICBhYm91dCBob3cgaXQgaXMgcGFja2VkLCBpZiBob2xlcyBhcmUgcHJlc2VudCwg
ZXRjLiBUaGUgRmNQYXR0ZXJuIGFuZCB0aGUgbV9mb250TWF0cml4CisgICAgICAgIHNob3VsZCBi
ZSBnb29kIGVub3VnaCB0byBkZXNjcmliZSB0aGUgRm9udC4gQWxsIG90aGVyIG9iamVjdHMgYXJl
IGNyZWF0ZWQgdXNpbmcgdGhlc2UKKyAgICAgICAgdmFyaWFibGVzCisKKyAgICAgICAgUmVwbGFj
ZSBjLWNhc3RzIHdpdGggYysrIGNhc3RzLCBpbiB0aGlzIGNhc2UgcmVpbnRlcnByZXRfY2FzdC4K
KworCisKKworICAgICAgICAqIHBsYXRmb3JtL2dkay9Gb250RGF0YUdkay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250RGF0YTo6cGxhdGZvcm1Jbml0KTogRG9uJ3QgYXNzZXJ0CisgICAgICAg
IChXZWJDb3JlOjpGb250RGF0YTo6cGxhdGZvcm1EZXN0cm95KTogVGFrZSBvdmVyIG93bmVyc2hp
cAorICAgICAgICAoV2ViQ29yZTo6Rm9udERhdGE6OnBsYXRmb3JtV2lkdGhGb3JHbHlwaCk6IGlu
aXRpYWxpemUKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREYXRhOjpzZXRGb250KTogYmUgcGFyYW5v
aWQgYW5kIGFzc2VydAorICAgICAgICAqIHBsYXRmb3JtL2dkay9Gb250UGxhdGZvcm1EYXRhLmg6
CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKTog
SW5pdGlhbGl6ZSBldmVyeXRoaW5nCisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRh
OjpoYXNoKTogbWFrZSB2YWxncmluZCBoYXBweSBhbmQgZG9uJ3QgdXNlIG1fZm9udERlc2NyaXB0
aW9uCisgICAgICAgICogcGxhdGZvcm0vZ2RrL0ZvbnRQbGF0Zm9ybURhdGFHZGsuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjp+Rm9udFBsYXRmb3JtRGF0YSk6IEZvbnRE
YXRhOjpwbGF0Zm9ybURlc3Ryb3kgd2lsbCBkbyB0aGlzCisgICAgICAgIChXZWJDb3JlOjpGb250
UGxhdGZvcm1EYXRhOjpzZXRGb250KTogbV9mb250RmFjZSwgbV9mb250TWF0cml4LCBtX29wdGlv
bnMgbWlnaHQgbm90IGJlIGluaXRpYWxpemVkCisKIDIwMDctMDctMDIgIFNhbSBXZWluaWcgIDxz
YW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZXZpbiBNY0N1bGxvdWdoLgpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCShyZXZpc2lvbiAy
NDAxMSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhl
eSBQcm9za3VyeWFrb3YgKGFwQHdlYmtpdC5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMTAwLDQgKzEwMSw1MSBAQCBib29sIHBhcnNlSFRUUFJlZnJlc2goY29u
c3QgU3RyaW5nJiByZWZyCiAgICAgfQogfQogCitTdHJpbmcgZmlsZW5hbWVGcm9tSFRUUENvbnRl
bnREaXNwb3NpdGlvbihjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIFZlY3RvcjxTdHJpbmc+
IGtleVZhbHVlUGFpcnMgPSB2YWx1ZS5zcGxpdCgnOycpOworCisgICAgdW5zaWduZWQgbGVuZ3Ro
ID0ga2V5VmFsdWVQYWlycy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aDsgaSsrKSB7CisgICAgICAgIGludCB2YWx1ZVN0YXJ0UG9zID0ga2V5VmFsdWVQYWlyc1tp
XS5maW5kKCc9Jyk7CisgICAgICAgIGlmICh2YWx1ZVN0YXJ0UG9zIDwgMCkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIFN0cmluZyBrZXkgPSBrZXlWYWx1ZVBhaXJzW2ldLmxlZnQo
dmFsdWVTdGFydFBvcykuc3RyaXBXaGl0ZVNwYWNlKCk7CisKKyAgICAgICAgaWYgKGtleS5pc0Vt
cHR5KCkgfHwga2V5ICE9ICJmaWxlbmFtZSIpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgCisgICAgICAgIFN0cmluZyB2YWx1ZSA9IGtleVZhbHVlUGFpcnNbaV0uc3Vic3RyaW5nKHZh
bHVlU3RhcnRQb3MgKyAxKS5zdHJpcFdoaXRlU3BhY2UoKTsKKworICAgICAgICAvLyBSZW1vdmUg
cXVvdGVzIGlmIHRoZXJlIGFyZSBhbnkKKyAgICAgICAgaWYgKHZhbHVlWzBdID09ICdcIicpCisg
ICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygxLCB2YWx1ZS5sZW5ndGgoKSAtIDIp
OworCisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nKCk7
Cit9CisKK3ZvaWQgcGFyc2VDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIHZhbHVlLCBTdHJpbmcg
JmNvbnRlbnRUeXBlLCBTdHJpbmcgJnRleHRFbmNvZGluZykKK3sKKyAgICBWZWN0b3I8U3RyaW5n
PiB2YWx1ZXMgPSB2YWx1ZS5zcGxpdCgiOyIpOworCisgICAgaWYgKHZhbHVlcy5zaXplKCkgPT0g
MCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLyoKKyAgICAgKiBQYXJzZSBIVFRQIG1lZGlhLXR5
cGUKKyAgICAgKi8KKyAgICBjb250ZW50VHlwZSA9IHZhbHVlc1swXS5zaW1wbGlmeVdoaXRlU3Bh
Y2UoKTsKKyAgICBpZiAodmFsdWVzLnNpemUoKSA9PSAyKSB7CisgICAgICAgIGludCBzcGxpdFBv
cyA9IHZhbHVlc1sxXS5maW5kKCI9Iik7CisKKyAgICAgICAgaWYgKHNwbGl0UG9zICE9IC0xICYm
IHZhbHVlc1sxXS5sZWZ0KHNwbGl0UG9zKS5zdHJpcFdoaXRlU3BhY2UoKS5sb3dlcigpID09ICJj
aGFyc2V0IikgeworICAgICAgICAgICAgdGV4dEVuY29kaW5nID0gIHZhbHVlc1sxXS5zdWJzdHJp
bmcoc3BsaXRQb3MrMSkuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisK
IH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCShyZXZpc2lvbiAy
NDAxMSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw2ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBT
dHJpbmc7CiAKICAgICBib29sIHBhcnNlSFRUUFJlZnJlc2goY29uc3QgU3RyaW5nJiByZWZyZXNo
LCBib29sIGZyb21IdHRwRXF1aXZNZXRhLCBkb3VibGUmIGRlbGF5LCBTdHJpbmcmIHVybCk7Cisg
ICAgU3RyaW5nIGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oY29uc3QgU3RyaW5n
JiB2YWx1ZSk7CisgICAgdm9pZCBwYXJzZUNvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgdmFsdWUs
IFN0cmluZyAmY29udGVudFR5cGUsIFN0cmluZyAmdGV4dEVuY29kaW5nKTsKIH0KIAogI2VuZGlm
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUlu
dGVybmFsLmgJKHJldmlzaW9uIDI0MDExKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAog
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UuaCIKKyNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCiAKICNpZiBVU0UoQ0ZORVRX
T1JLKQogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENvbm5lY3Rpb25Qcml2Lmg+CkBAIC05NCw3
ICs5NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgbV91cmwoMCkKICAg
ICAgICAgICAgICwgbV9maWxlTmFtZSgwKQogICAgICAgICAgICAgLCBtX2N1c3RvbUhlYWRlcnMo
MCkKLSAgICAgICAgICAgICwgbV9jdXN0b21Qb3N0SGVhZGVyKDApCiAjZW5kaWYKICNpZiBQTEFU
Rk9STShRVCkKICAgICAgICAgICAgICwgbV9qb2IoMCkKQEAgLTE0Niw4ICsxNDYsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNoYXIqIG1fdXJsOwogICAgICAgICBjaGFyKiBtX2Zp
bGVOYW1lOwogICAgICAgICBzdHJ1Y3QgY3VybF9zbGlzdCogbV9jdXN0b21IZWFkZXJzOyAgICAg
ICAgCi0gICAgICAgIHN0cnVjdCBjdXJsX3NsaXN0KiBtX2N1c3RvbVBvc3RIZWFkZXI7CiAgICAg
ICAgIFZlY3RvcjxjaGFyPiBtX3Bvc3RCeXRlczsKKyAgICAgICAgSFRUUEhlYWRlck1hcCBtX2hl
YWRlck1hcDsKICNlbmRpZgogI2lmIFBMQVRGT1JNKFFUKQogICAgICAgICBRV2ViTmV0d29ya0pv
YiAqbV9qb2I7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVz
cG9uc2UuY3BwCShyZXZpc2lvbiAyNDAxMSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiwxMyBAQCB2
b2lkIFJlc291cmNlUmVzcG9uc2U6OnNldEhUVFBIZWFkZXJGaWVsCiAgICAgbV9odHRwSGVhZGVy
RmllbGRzLnNldChuYW1lLCB2YWx1ZSk7CiB9CiAKK3ZvaWQgUmVzb3VyY2VSZXNwb25zZTo6c2V0
SFRUUEhlYWRlckZpZWxkcyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJNYXApCit7CisgICAg
dXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworCisgICAgbV9odHRwSGVhZGVyRmllbGRzID0gaGVh
ZGVyTWFwOworfQorCiBjb25zdCBIVFRQSGVhZGVyTWFwJiBSZXNvdXJjZVJlc3BvbnNlOjpodHRw
SGVhZGVyRmllbGRzKCkgY29uc3QKIHsKICAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlLmgJKHJldmlz
aW9uIDI0MDExKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgU3Ry
aW5nIGh0dHBIZWFkZXJGaWVsZChjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0OwogICAgIHZvaWQg
c2V0SFRUUEhlYWRlckZpZWxkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSk7CisgICAgdm9pZCBzZXRIVFRQSGVhZGVyRmllbGRzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIG1h
cCk7CiAgICAgY29uc3QgSFRUUEhlYWRlck1hcCYgaHR0cEhlYWRlckZpZWxkcygpIGNvbnN0Owog
CiAgICAgYm9vbCBpc011bHRpcGFydCgpIGNvbnN0IHsgcmV0dXJuIG1pbWVUeXBlKCkgPT0gIm11
bHRpcGFydC94LW1peGVkLXJlcGxhY2UiOyB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAkocmV2aXNpb24gMjQw
MTEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2VDRk5ldC5oIgogCisjaW5jbHVkZSAiSFRUUFBh
cnNlcnMuaCIKICNpbmNsdWRlICJNaW1lVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFJlc3BvbnNlUHJpdi5oPgpA
QCAtNDUsMzQgKzQ2LDYgQEAgQ0ZVUkxSZXNwb25zZVJlZiBSZXNvdXJjZVJlc3BvbnNlOjpjZlVS
TAogICAgIHJldHVybiBtX2NmUmVzcG9uc2UuZ2V0KCk7CiB9CiAKLS8vIEZJWE1FOiBNb3ZlIHRo
aXMgdG8gSFRUUFBhcnNlcnMuaAotc3RhdGljIGlubGluZSBTdHJpbmcgZmlsZW5hbWVGcm9tSFRU
UENvbnRlbnREaXNwb3NpdGlvbihjb25zdCBTdHJpbmcmIHZhbHVlKQotewotICAgIFZlY3RvcjxT
dHJpbmc+IGtleVZhbHVlUGFpcnMgPSB2YWx1ZS5zcGxpdCgnOycpOwotCi0gICAgdW5zaWduZWQg
bGVuZ3RoID0ga2V5VmFsdWVQYWlycy5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIGludCB2YWx1ZVN0YXJ0UG9zID0ga2V5VmFsdWVQ
YWlyc1tpXS5maW5kKCc9Jyk7Ci0gICAgICAgIGlmICh2YWx1ZVN0YXJ0UG9zIDwgMCkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIFN0cmluZyBrZXkgPSBrZXlWYWx1ZVBhaXJzW2ld
LmxlZnQodmFsdWVTdGFydFBvcykuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0KLSAgICAgICAgaWYgKGtl
eS5pc0VtcHR5KCkgfHwga2V5ICE9ICJmaWxlbmFtZSIpCi0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgCi0gICAgICAgIFN0cmluZyB2YWx1ZSA9IGtleVZhbHVlUGFpcnNbaV0uc3Vic3Ry
aW5nKHZhbHVlU3RhcnRQb3MgKyAxKS5zdHJpcFdoaXRlU3BhY2UoKTsKLQotICAgICAgICAvLyBS
ZW1vdmUgcXVvdGVzIGlmIHRoZXJlIGFyZSBhbnkKLSAgICAgICAgaWYgKHZhbHVlWzBdID09ICdc
IicpCi0gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygxLCB2YWx1ZS5sZW5ndGgo
KSAtIDIpOwotCi0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gU3Ry
aW5nKCk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgYm9vbCBmaWxlbmFtZUhhc1NhbmVFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKIHsKICAgICBpbnQgZG90ID0gZmlsZW5hbWUuZmluZCgn
LicpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVD
dXJsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCShyZXZpc2lvbiAyNDAxMSkKKysrIFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDggKzQxLDYgQEAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6flJlc291cmNlSGFuZGxlSQogICAg
IGZyZWUobV9maWxlTmFtZSk7CiAgICAgaWYgKG1fY3VzdG9tSGVhZGVycykKICAgICAgICAgY3Vy
bF9zbGlzdF9mcmVlX2FsbChtX2N1c3RvbUhlYWRlcnMpOwotICAgIGlmIChtX2N1c3RvbVBvc3RI
ZWFkZXIpCi0gICAgICAgIGN1cmxfc2xpc3RfZnJlZV9hbGwobV9jdXN0b21Qb3N0SGVhZGVyKTsK
IH0KIAogUmVzb3VyY2VIYW5kbGU6On5SZXNvdXJjZUhhbmRsZSgpCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5j
cHAJKHJldmlzaW9uIDI0MDExKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDggQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTWljaGFlbCBFbW1lbCBtaWtl
LmVtbWVsQGdtYWlsLmNvbSAKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscC50
b2tlckBjb2xsYWJvcmEuY28udWs+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMg
UGV0ZXIgRnJleXRoZXIKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC0zMiwxMSArMzQsMTMgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5o
IgorI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCisKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3QgaW50IHNlbGVjdFRpbWVvdXRNUyA9IDU7Citj
b25zdCBpbnQgc2VsZWN0VGltZW91dE1TID0gMTsKIGNvbnN0IGRvdWJsZSBwb2xsVGltZVNlY29u
ZHMgPSAwLjA1OwogCiBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OlJlc291cmNlSGFuZGxlTWFuYWdl
cigpCkBAIC01MSw2ICs1NSwxNyBAQCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OlJlc291cmNlSGFu
ZGxlTWFuCiAgICAgY3VybF9zaGFyZV9zZXRvcHQobV9jdXJsU2hhcmVIYW5kbGUsIENVUkxTSE9Q
VF9TSEFSRSwgQ1VSTF9MT0NLX0RBVEFfRE5TKTsKIH0KIAorLyoKKyAqIG5ldmVyIGNhbGxlZAor
ICovCitSZXNvdXJjZUhhbmRsZU1hbmFnZXI6On5SZXNvdXJjZUhhbmRsZU1hbmFnZXIoKQorewor
ICAgIGN1cmxfbXVsdGlfY2xlYW51cChtX2N1cmxNdWx0aUhhbmRsZSk7CisgICAgY3VybF9zaGFy
ZV9jbGVhbnVwKG1fY3VybFNoYXJlSGFuZGxlKTsKKyAgICBpZiAobV9jb29raWVKYXJGaWxlTmFt
ZSkKKyAgICAgICAgZnJlZShtX2Nvb2tpZUphckZpbGVOYW1lKTsKK30KKwogdm9pZCBSZXNvdXJj
ZUhhbmRsZU1hbmFnZXI6OnNldENvb2tpZUphckZpbGVOYW1lKGNvbnN0IGNoYXIqIGNvb2tpZUph
ckZpbGVOYW1lKQogeyAKICAgICBtX2Nvb2tpZUphckZpbGVOYW1lID0gc3RyZHVwKGNvb2tpZUph
ckZpbGVOYW1lKTsKQEAgLTU4LDcgKzczLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6
OnNldENvb2tpZUphcgogCiBSZXNvdXJjZUhhbmRsZU1hbmFnZXIqIFJlc291cmNlSGFuZGxlTWFu
YWdlcjo6c2hhcmVkSW5zdGFuY2UoKQogewotICAgIHN0YXRpYyBSZXNvdXJjZUhhbmRsZU1hbmFn
ZXIqIHNoYXJlZEluc3RhbmNlOworICAgIHN0YXRpYyBSZXNvdXJjZUhhbmRsZU1hbmFnZXIqIHNo
YXJlZEluc3RhbmNlID0gMDsKICAgICBpZiAoIXNoYXJlZEluc3RhbmNlKQogICAgICAgICBzaGFy
ZWRJbnN0YW5jZSA9IG5ldyBSZXNvdXJjZUhhbmRsZU1hbmFnZXIoKTsKICAgICByZXR1cm4gc2hh
cmVkSW5zdGFuY2U7CkBAIC02OSw3ICs4NCw3IEBAIHN0YXRpYyBzaXplX3Qgd3JpdGVDYWxsYmFj
ayh2b2lkKiBwdHIsIHMKIHsKICAgICBSZXNvdXJjZUhhbmRsZSogam9iID0gc3RhdGljX2Nhc3Q8
UmVzb3VyY2VIYW5kbGUqPihkYXRhKTsKICAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0g
am9iLT5nZXRJbnRlcm5hbCgpOwotICAgIGludCB0b3RhbFNpemUgPSBzaXplICogbm1lbWI7Cisg
ICAgdW5zaWduZWQgaW50IHRvdGFsU2l6ZSA9IHNpemUgKiBubWVtYjsKIAogICAgIC8vIHRoaXMg
c2hvdWxkbid0IGJlIG5lY2Vzc2FyeSBidXQgYXBwYXJlbnRseSBpcy4gQ1VSTCB3cml0ZXMgdGhl
IGRhdGEKICAgICAvLyBvZiBodG1sIHBhZ2UgZXZlbiBpZiBpdCBpcyBhIHJlZGlyZWN0IHRoYXQg
d2FzIGhhbmRsZWQgaW50ZXJuYWxseQpAQCAtODUsMTEgKzEwMCw2MCBAQCBzdGF0aWMgc2l6ZV90
IHdyaXRlQ2FsbGJhY2sodm9pZCogcHRyLCBzCiAgICAgcmV0dXJuIHRvdGFsU2l6ZTsKIH0KIAot
Ly8gVGhpcyBpcyBiZWluZyBjYWxsZWQgZm9yIGVhY2ggSFRUUCBoZWFkZXIgaW4gdGhlIHJlc3Bv
bnNlIHNvIGl0J2xsIGJlIGNhbGxlZAotLy8gbXVsdGlwbGUgdGltZXMgZm9yIGEgZ2l2ZW4gcmVz
cG9uc2UuCisvKgorICogVGhpcyBpcyBiZWluZyBjYWxsZWQgZm9yIGVhY2ggSFRUUCBoZWFkZXIg
aW4gdGhlIHJlc3BvbnNlLiBUaGlzIGluY2x1ZGVzICdcclxuJworICogZm9yIHRoZSBsYXN0IGxp
bmUgb2YgdGhlIGhlYWRlci4KKyAqICBGb3IgZWFjaCBIVFRQIGhlYWRlciB3ZSB3aWxsIHRha2Ug
YSBsb29rLCBoYW5kbGUgc3BlY2lhbCBjYXNlcyBhbmQgcHV0IHRoZQorICogIHJlc3QgaW50byBz
ZXRIVFRQSGVhZGVyRmllbGQuCisgKgorICogIEF0IHRoZSBlbmQgd2Ugd2lsbCBjcmVhdGUgdGhl
IFJlc291cmNlUmVzcG9uc2UgYW5kIHNlbmQgaXQuCisgKi8KIHN0YXRpYyBzaXplX3QgaGVhZGVy
Q2FsbGJhY2soY2hhciogcHRyLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG5tZW1iLCB2b2lkKiBkYXRh
KQogewotICAgIGludCB0b3RhbFNpemUgPSBzaXplICogbm1lbWI7CisgICAgUmVzb3VyY2VIYW5k
bGUqIGpvYiA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oZGF0YSk7CisgICAgUmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbCogZCA9IGpvYi0+Z2V0SW50ZXJuYWwoKTsKKworICAgIHVuc2lnbmVk
IGludCB0b3RhbFNpemUgPSBzaXplICogbm1lbWI7CisgICAgUmVzb3VyY2VIYW5kbGVDbGllbnQq
IGNsaWVudCA9IGQtPmNsaWVudCgpOworICAgIGlmICghY2xpZW50KSB7CisgICAgICAgIHJldHVy
biB0b3RhbFNpemU7CisgICAgfQorCisgICAgCisgICAgU3RyaW5nIGhlYWRlcihzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4ocHRyKSwgdG90YWxTaXplKTsKKworICAgIC8qCisgICAgICogQ2FuIHdl
IGZpbmlzaCBhbmQgc2VuZCBhIHJlc3BvbnNlPyBJZiBub3Qgd2Ugd2lsbCBhZGQgdGhlIGhlYWRl
ciB0bworICAgICAqIHRoZSBtYXAuCisgICAgICovCisgICAgaWYgKGhlYWRlciA9PSBTdHJpbmco
IlxyXG4iKSkgeworICAgICAgICBDVVJMKiBoID0gZC0+bV9oYW5kbGU7CisgICAgICAgIENVUkxj
b2RlIGVycjsKKworICAgICAgICBkb3VibGUgY29udGVudExlbmd0aCA9IDA7CisgICAgICAgIGVy
ciA9IGN1cmxfZWFzeV9nZXRpbmZvKGgsIENVUkxJTkZPX0NPTlRFTlRfTEVOR1RIX0RPV05MT0FE
LCAmY29udGVudExlbmd0aCk7CisKKyAgICAgICAgY29uc3QgY2hhciogaGRyOworICAgICAgICBl
cnIgPSBjdXJsX2Vhc3lfZ2V0aW5mbyhoLCBDVVJMSU5GT19FRkZFQ1RJVkVfVVJMLCAmaGRyKTsK
KyAgICAgICAgS1VSTCB1cmwoaGRyKTsKKworICAgICAgICBsb25nIGh0dHBDb2RlID0gMDsKKyAg
ICAgICAgZXJyID0gY3VybF9lYXN5X2dldGluZm8oaCwgQ1VSTElORk9fUkVTUE9OU0VfQ09ERSwg
Jmh0dHBDb2RlKTsKKyAgICAKKyAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlLCB0ZXh0RW5jb2Rp
bmc7CisgICAgICAgIHBhcnNlQ29udGVudFR5cGUoZC0+bV9oZWFkZXJNYXAuZ2V0KCJDb250ZW50
LVR5cGUiKSwgY29udGVudFR5cGUsIHRleHRFbmNvZGluZyk7CisgICAgICAgIFN0cmluZyBzdWdn
ZXN0ZWRGaWxlbmFtZSA9IGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oZC0+bV9o
ZWFkZXJNYXAuZ2V0KCJDb250ZW50LURpc3Bvc2l0aW9uIikpOworCisgICAgICAgIFJlc291cmNl
UmVzcG9uc2UgcmVzcG9uc2UodXJsLCBjb250ZW50VHlwZSwgc3RhdGljX2Nhc3Q8bG9uZyBsb25n
IGludD4oY29udGVudExlbmd0aCksIHRleHRFbmNvZGluZywgc3VnZ2VzdGVkRmlsZW5hbWUpOwor
ICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZShodHRwQ29kZSk7CisgICAgICAgIGNs
aWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGpvYiwgcmVzcG9uc2UpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGludCBzcGxpdFBvcyA9IGhlYWRlci5maW5kKCI6Iik7CisgICAgICAgIGlmIChzcGxp
dFBvcyAhPSAtMSkgeworICAgICAgICAgICAgZC0+bV9oZWFkZXJNYXAuc2V0KGhlYWRlci5sZWZ0
KHNwbGl0UG9zKSwgaGVhZGVyLnN1YnN0cmluZyhzcGxpdFBvcysxKS5zdHJpcFdoaXRlU3BhY2Uo
KSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICByZXR1cm4gdG90YWxTaXplOwogfQogCkBAIC0y
NzUsNiArMzM5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnN0YXJ0Sm9iKFJlcwog
ICAgIGlmIChnZXRlbnYoIkRFQlVHX0NVUkwiKSkKICAgICAgICAgY3VybF9lYXN5X3NldG9wdChk
LT5tX2hhbmRsZSwgQ1VSTE9QVF9WRVJCT1NFLCAxKTsKICNlbmRpZgorCiAgICAgY3VybF9lYXN5
X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9QUklWQVRFLCBqb2IpOwogICAgIGN1cmxfZWFz
eV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfRVJST1JCVUZGRVIsIG1fY3VybEVycm9yQnVm
ZmVyKTsKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1dSSVRFRlVO
Q1RJT04sIHdyaXRlQ2FsbGJhY2spOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmgJKHJldmlzaW9uIDI0MDExKQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IFJlc291cmNlSGFuZGxlTWFuYWdlcigpOworICAgIH5SZXNvdXJjZUhhbmRsZU1hbmFnZXIoKTsK
ICAgICB2b2lkIGRvd25sb2FkVGltZXJDYWxsYmFjayhUaW1lcjxSZXNvdXJjZUhhbmRsZU1hbmFn
ZXI+Kik7CiAgICAgdm9pZCByZW1vdmVGcm9tQ3VybChSZXNvdXJjZUhhbmRsZSopOwogICAgIGJv
b2wgcmVtb3ZlU2NoZWR1bGVkSm9iKFJlc291cmNlSGFuZGxlKik7CkBAIC03Miw5ICs3Myw5IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBzdGFydFNjaGVkdWxlZEpvYnMoKTsKIAogICAgIFRpbWVyPFJl
c291cmNlSGFuZGxlTWFuYWdlcj4gbV9kb3dubG9hZFRpbWVyOwotICAgIENVUkxNKiBtX2N1cmxN
dWx0aUhhbmRsZTsgLy8gRklYTUU6IG5ldmVyIGZyZWVkCi0gICAgQ1VSTFNIKiBtX2N1cmxTaGFy
ZUhhbmRsZTsgLy8gRklYTUU6IG5ldmVyIGZyZWVkCi0gICAgY2hhciogbV9jb29raWVKYXJGaWxl
TmFtZTsgLy8gRklYTUU6IG5ldmVyIGZyZWVkCisgICAgQ1VSTE0qIG1fY3VybE11bHRpSGFuZGxl
OworICAgIENVUkxTSCogbV9jdXJsU2hhcmVIYW5kbGU7CisgICAgY2hhciogbV9jb29raWVKYXJG
aWxlTmFtZTsKICAgICBjaGFyIG1fY3VybEVycm9yQnVmZmVyW0NVUkxfRVJST1JfU0laRV07CiAg
ICAgUmVzb3VyY2VIYW5kbGVMaXN0KiBtX3Jlc291cmNlSGFuZGxlTGlzdEhlYWQ7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15470</attachid>
            <date>2007-07-10 17:35:40 -0700</date>
            <delta_ts>2007-07-11 11:57:30 -0700</delta_ts>
            <desc>CURL rework headerCallback</desc>
            <filename>curl-rework-header-handling-r1.patch</filename>
            <type>text/plain</type>
            <size>11322</size>
            <attacher name="Holger Freyther">zecke</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNDE3NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMDctMDctMTEgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8
emVja2VAc2VsZmlzaC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBjYWxsYmFjayByZXNwb25zaWJsZSBmb3IgaGFuZGxp
bmcgSFRUUCBoZWFkZXJzLiBUaGlzCisgICAgICAgIGNhbGxiYWNrIGdldHMgY2FsbGVkIGZvciBl
dmVyeSBoZWFkZXIuCisgICAgICAgIFdlIHdpbGwgYWRkIHRoZXNlIGhlYWRlcnMgdG8gb3VyIFJl
c291cmNlUmVzcG9uc2UgYW5kIG9uIHRoZSAnZW5kLW9mLWhlYWRlcicKKyAgICAgICAgaW5kaWNh
dG9yIHdlIHdpbGwgdXBkYXRlIHRoZSBSZXNvdXJjZVJlc3BvbnNlIGFuZCBkaXNwYXRjaCBpdC4K
KworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdmFyaW91cyBzZXQgbWV0aG9kcyB0byBSZXNvdXJj
ZVJlc3BvbnNlLiBUaGlzIGltcHJvdmVzCisgICAgICAgIHRoZSByZWFkYWJpbGl0eSBvZiB0aGUg
aGVhZGVyQ2FsbGJhY2sgYW5kIGF2b2lkcyBzdG9yaW5nIGEgQ1VSTCBoYW5kbGUgaW5zaWRlCisg
ICAgICAgIHRoZSBSZXNvdXJjZVJlc3BvbnNlIHdoaWNoIHdvdWxkIGJlIG5lZWRlZCB0byBpbXBs
ZW1lbnQgUmVzb3VyY2VSZXNwb25zZTo6ZG9VcGRhdGVSZXNvdXJjZVJlc3BvbnNlCisKKyAgICAg
ICAgQWRkIGEgZGVzdHJ1Y3RvciBmb3IgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyIHdoaWNoIHdvdWxk
IGZyZWUgdGhlIHJlc291cmNlcyBhbmQgcmVtb3ZlCisgICAgICAgIGEgdW51c2VkIHZhcmlhYmxl
LgorCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlSW50ZXJuYWw6OlJlc291cmNlSGFu
ZGxlSW50ZXJuYWwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpzZXRVcmwpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6c2V0TWltZVR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6c2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnNldFRleHRFbmNvZGluZ05hbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6c2V0U3VnZ2VzdGVkRmlsZW5hbWUp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6flJlc291cmNlSGFuZGxlSW50ZXJu
YWwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFn
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjp+UmVzb3Vy
Y2VIYW5kbGVNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlTWFuYWdl
cjo6c2hhcmVkSW5zdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6aGVhZGVyQ2FsbGJhY2spOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuaDoK
KwogMjAwNy0wNy0xMCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IE1hY2llai4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZUludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAkocmV2aXNpb24gMjQxNzQpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC05NCw3ICs5NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgbV91
cmwoMCkKICAgICAgICAgICAgICwgbV9maWxlTmFtZSgwKQogICAgICAgICAgICAgLCBtX2N1c3Rv
bUhlYWRlcnMoMCkKLSAgICAgICAgICAgICwgbV9jdXN0b21Qb3N0SGVhZGVyKDApCiAjZW5kaWYK
ICNpZiBQTEFURk9STShRVCkKICAgICAgICAgICAgICwgbV9qb2IoMCkKQEAgLTE0Niw4ICsxNDUs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNoYXIqIG1fdXJsOwogICAgICAgICBj
aGFyKiBtX2ZpbGVOYW1lOwogICAgICAgICBzdHJ1Y3QgY3VybF9zbGlzdCogbV9jdXN0b21IZWFk
ZXJzOyAgICAgICAgCi0gICAgICAgIHN0cnVjdCBjdXJsX3NsaXN0KiBtX2N1c3RvbVBvc3RIZWFk
ZXI7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBtX3Bvc3RCeXRlczsKKyAgICAgICAgUmVzb3VyY2VS
ZXNwb25zZSBtX3Jlc3BvbnNlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgICAgIFFX
ZWJOZXR3b3JrSm9iICptX2pvYjsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlc3BvbnNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXNwb25zZS5jcHAJKHJldmlzaW9uIDI0MTc0KQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0
NSwxNCBAQCBjb25zdCBLVVJMJiBSZXNvdXJjZVJlc3BvbnNlOjp1cmwoKSBjb25zCiAgICAgcmV0
dXJuIG1fdXJsOyAKIH0KIAordm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpzZXRVcmwoY29uc3QgS1VS
TCYgdXJsKQoreworICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAgICBtX2lzTnVsbCA9
IGZhbHNlOworICAgIAorICAgIG1fdXJsID0gdXJsOyAKK30KKwogY29uc3QgU3RyaW5nJiBSZXNv
dXJjZVJlc3BvbnNlOjptaW1lVHlwZSgpIGNvbnN0CiB7CiAgICAgdXBkYXRlUmVzb3VyY2VSZXNw
b25zZSgpOwpAQCAtNTIsNiArNjAsMTQgQEAgY29uc3QgU3RyaW5nJiBSZXNvdXJjZVJlc3BvbnNl
OjptaW1lVHlwZQogICAgIHJldHVybiBtX21pbWVUeXBlOyAKIH0KIAordm9pZCBSZXNvdXJjZVJl
c3BvbnNlOjpzZXRNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIHVwZGF0
ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAgICBtX2lzTnVsbCA9IGZhbHNlOworICAgIAorICAgIG1f
bWltZVR5cGUgPSBtaW1lVHlwZTsgCit9CisKIGxvbmcgbG9uZyBSZXNvdXJjZVJlc3BvbnNlOjpl
eHBlY3RlZENvbnRlbnRMZW5ndGgoKSBjb25zdCAKIHsKICAgICB1cGRhdGVSZXNvdXJjZVJlc3Bv
bnNlKCk7CkBAIC01OSw2ICs3NSwxNCBAQCBsb25nIGxvbmcgUmVzb3VyY2VSZXNwb25zZTo6ZXhw
ZWN0ZWRDb250CiAgICAgcmV0dXJuIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoOwogfQogCit2b2lk
IFJlc291cmNlUmVzcG9uc2U6OnNldEV4cGVjdGVkQ29udGVudExlbmd0aChsb25nIGxvbmcgZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoKQoreworICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAg
ICBtX2lzTnVsbCA9IGZhbHNlOworICAgIAorICAgIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0g
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoOyAKK30KKwogY29uc3QgU3RyaW5nJiBSZXNvdXJjZVJlc3Bv
bnNlOjp0ZXh0RW5jb2RpbmdOYW1lKCkgY29uc3QKIHsKICAgICB1cGRhdGVSZXNvdXJjZVJlc3Bv
bnNlKCk7CkBAIC02Niw2ICs5MCwxNCBAQCBjb25zdCBTdHJpbmcmIFJlc291cmNlUmVzcG9uc2U6
OnRleHRFbmNvCiAgICAgcmV0dXJuIG1fdGV4dEVuY29kaW5nTmFtZTsKIH0KIAordm9pZCBSZXNv
dXJjZVJlc3BvbnNlOjpzZXRUZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmluZyYgZW5jb2RpbmdO
YW1lKQoreworICAgIHVwZGF0ZVJlc291cmNlUmVzcG9uc2UoKTsKKyAgICBtX2lzTnVsbCA9IGZh
bHNlOworICAgIAorICAgIG1fdGV4dEVuY29kaW5nTmFtZSA9IGVuY29kaW5nTmFtZTsgCit9CisK
IC8vIEZJWE1FIHNob3VsZCBjb21wdXRlIHRoaXMgb24gdGhlIGZseQogY29uc3QgU3RyaW5nJiBS
ZXNvdXJjZVJlc3BvbnNlOjpzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0CiB7CkBAIC03NCw2ICsx
MDYsMTQgQEAgY29uc3QgU3RyaW5nJiBSZXNvdXJjZVJlc3BvbnNlOjpzdWdnZXN0ZQogICAgIHJl
dHVybiBtX3N1Z2dlc3RlZEZpbGVuYW1lOwogfQogCit2b2lkIFJlc291cmNlUmVzcG9uc2U6OnNl
dFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkKK3sKKyAgICB1
cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisgICAgbV9pc051bGwgPSBmYWxzZTsKKyAgICAKKyAg
ICBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gc3VnZ2VzdGVkTmFtZTsgCit9CisKIGludCBSZXNvdXJj
ZVJlc3BvbnNlOjpodHRwU3RhdHVzQ29kZSgpIGNvbnN0CiB7CiAgICAgdXBkYXRlUmVzb3VyY2VS
ZXNwb25zZSgpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9u
c2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNw
b25zZS5oCShyZXZpc2lvbiAyNDE3NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlc3BvbnNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDEyICs3MywyMCBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc0hUVFAoKSBjb25zdDsKICAgICAKICAgICBjb25zdCBLVVJMJiB1cmwoKSBj
b25zdDsKKyAgICB2b2lkIHNldFVybChjb25zdCBLVVJMJiB1cmwpOworCiAgICAgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSgpIGNvbnN0OworICAgIHZvaWQgc2V0TWltZVR5cGUoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSk7CisKICAgICBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgobG9uZyBsb25nIGV4cGVjdGVk
Q29udGVudExlbmd0aCk7CisKICAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUoKSBj
b25zdDsKKyAgICB2b2lkIHNldFRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJiBuYW1lKTsK
IAogICAgIC8vIEZJWE1FIHNob3VsZCBjb21wdXRlIHRoaXMgb24gdGhlIGZseQogICAgIGNvbnN0
IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdDsKKyAgICB2b2lkIHNldFN1Z2dlc3Rl
ZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOwogCiAgICAgaW50IGh0dHBTdGF0dXNDb2RlKCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRIVFRQU3RhdHVzQ29kZShpbnQpOwpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCShyZXZp
c2lvbiAyNDE3NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFu
ZGxlQ3VybC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDggKzQxLDYgQEAgUmVzb3VyY2VIYW5k
bGVJbnRlcm5hbDo6flJlc291cmNlSGFuZGxlSQogICAgIGZyZWUobV9maWxlTmFtZSk7CiAgICAg
aWYgKG1fY3VzdG9tSGVhZGVycykKICAgICAgICAgY3VybF9zbGlzdF9mcmVlX2FsbChtX2N1c3Rv
bUhlYWRlcnMpOwotICAgIGlmIChtX2N1c3RvbVBvc3RIZWFkZXIpCi0gICAgICAgIGN1cmxfc2xp
c3RfZnJlZV9hbGwobV9jdXN0b21Qb3N0SGVhZGVyKTsKIH0KIAogUmVzb3VyY2VIYW5kbGU6On5S
ZXNvdXJjZUhhbmRsZSgpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAJKHJldmlzaW9uIDI0MTc0KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDggQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgTWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNvbSAKKyAqIENv
cHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscC50b2tlckBjb2xsYWJvcmEuY28udWs+Cisg
KiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKICAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMiw2ICszNCw4IEBACiAjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKKyNpbmNsdWRlICJIVFRQUGFyc2Vycy5o
IgorCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01
MSw2ICs1NSwxNCBAQCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OlJlc291cmNlSGFuZGxlTWFuCiAg
ICAgY3VybF9zaGFyZV9zZXRvcHQobV9jdXJsU2hhcmVIYW5kbGUsIENVUkxTSE9QVF9TSEFSRSwg
Q1VSTF9MT0NLX0RBVEFfRE5TKTsKIH0KIAorUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjp+UmVzb3Vy
Y2VIYW5kbGVNYW5hZ2VyKCkKK3sKKyAgICBjdXJsX211bHRpX2NsZWFudXAobV9jdXJsTXVsdGlI
YW5kbGUpOworICAgIGN1cmxfc2hhcmVfY2xlYW51cChtX2N1cmxTaGFyZUhhbmRsZSk7CisgICAg
aWYgKG1fY29va2llSmFyRmlsZU5hbWUpCisgICAgICAgIGZyZWUobV9jb29raWVKYXJGaWxlTmFt
ZSk7Cit9CisKIHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzZXRDb29raWVKYXJGaWxlTmFt
ZShjb25zdCBjaGFyKiBjb29raWVKYXJGaWxlTmFtZSkKIHsgCiAgICAgbV9jb29raWVKYXJGaWxl
TmFtZSA9IHN0cmR1cChjb29raWVKYXJGaWxlTmFtZSk7CkBAIC01OCw3ICs3MCw3IEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzZXRDb29raWVKYXIKIAogUmVzb3VyY2VIYW5kbGVNYW5h
Z2VyKiBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnNoYXJlZEluc3RhbmNlKCkKIHsKLSAgICBzdGF0
aWMgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyKiBzaGFyZWRJbnN0YW5jZTsKKyAgICBzdGF0aWMgUmVz
b3VyY2VIYW5kbGVNYW5hZ2VyKiBzaGFyZWRJbnN0YW5jZSA9IDA7CiAgICAgaWYgKCFzaGFyZWRJ
bnN0YW5jZSkKICAgICAgICAgc2hhcmVkSW5zdGFuY2UgPSBuZXcgUmVzb3VyY2VIYW5kbGVNYW5h
Z2VyKCk7CiAgICAgcmV0dXJuIHNoYXJlZEluc3RhbmNlOwpAQCAtODUsMTEgKzk3LDYwIEBAIHN0
YXRpYyBzaXplX3Qgd3JpdGVDYWxsYmFjayh2b2lkKiBwdHIsIHMKICAgICByZXR1cm4gdG90YWxT
aXplOwogfQogCi0vLyBUaGlzIGlzIGJlaW5nIGNhbGxlZCBmb3IgZWFjaCBIVFRQIGhlYWRlciBp
biB0aGUgcmVzcG9uc2Ugc28gaXQnbGwgYmUgY2FsbGVkCi0vLyBtdWx0aXBsZSB0aW1lcyBmb3Ig
YSBnaXZlbiByZXNwb25zZS4KKy8qCisgKiBUaGlzIGlzIGJlaW5nIGNhbGxlZCBmb3IgZWFjaCBI
VFRQIGhlYWRlciBpbiB0aGUgcmVzcG9uc2UuIFRoaXMgaW5jbHVkZXMgJ1xyXG4nCisgKiBmb3Ig
dGhlIGxhc3QgbGluZSBvZiB0aGUgaGVhZGVyLgorICoKKyAqIFdlIHdpbGwgYWRkIGVhY2ggSFRU
UCBIZWFkZXIgdG8gdGhlIFJlc291cmNlUmVzcG9uc2UgYW5kIG9uIHRoZSB0ZXJtaW5hdGlvbgor
ICogb2YgdGhlIGhlYWRlciAoXHJcbikgd2Ugd2lsbCBwYXJzZSBDb250ZW50LVR5cGUgYW5kIENv
bnRlbnQtRGlzcG9zaXRpb24gYW5kCisgKiB1cGRhdGUgdGhlIFJlc291cmNlUmVzcG9uc2UgYW5k
IHRoZW4gc2VuZCBpdCBhd2F5LgorICoKKyAqLwogc3RhdGljIHNpemVfdCBoZWFkZXJDYWxsYmFj
ayhjaGFyKiBwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQqIGRhdGEpCiB7Ci0g
ICAgaW50IHRvdGFsU2l6ZSA9IHNpemUgKiBubWVtYjsKKyAgICBSZXNvdXJjZUhhbmRsZSogam9i
ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihkYXRhKTsKKyAgICBSZXNvdXJjZUhhbmRs
ZUludGVybmFsKiBkID0gam9iLT5nZXRJbnRlcm5hbCgpOworCisgICAgdW5zaWduZWQgaW50IHRv
dGFsU2l6ZSA9IHNpemUgKiBubWVtYjsKKyAgICBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50
ID0gZC0+Y2xpZW50KCk7CisgICAgaWYgKCFjbGllbnQpIHsKKyAgICAgICAgcmV0dXJuIHRvdGFs
U2l6ZTsKKyAgICB9CisKKyAgICAKKyAgICBTdHJpbmcgaGVhZGVyKHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihwdHIpLCB0b3RhbFNpemUpOworCisgICAgLyoKKyAgICAgKiBhKSBXZSBjYW4gZmlu
aXNoIGFuZCBzZW5kIHRoZSBSZXNvdXJjZVJlc3BvbnNlCisgICAgICogYikgV2Ugd2lsbCBhZGQg
dGhlIGN1cnJlbnQgaGVhZGVyIHRvIHRoZSBIVFRQSGVhZGVyTWFwIG9mIHRoZSBSZXNvdXJjZVJl
c3BvbnNlIAorICAgICAqLworICAgIGlmIChoZWFkZXIgPT0gU3RyaW5nKCJcclxuIikpIHsKKyAg
ICAgICAgQ1VSTCogaCA9IGQtPm1faGFuZGxlOworICAgICAgICBDVVJMY29kZSBlcnI7CisKKyAg
ICAgICAgZG91YmxlIGNvbnRlbnRMZW5ndGggPSAwOworICAgICAgICBlcnIgPSBjdXJsX2Vhc3lf
Z2V0aW5mbyhoLCBDVVJMSU5GT19DT05URU5UX0xFTkdUSF9ET1dOTE9BRCwgJmNvbnRlbnRMZW5n
dGgpOworICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldEV4cGVjdGVkQ29udGVudExlbmd0aChzdGF0
aWNfY2FzdDxsb25nIGxvbmcgaW50Pihjb250ZW50TGVuZ3RoKSk7IAorCisgICAgICAgIGNvbnN0
IGNoYXIqIGhkcjsKKyAgICAgICAgZXJyID0gY3VybF9lYXN5X2dldGluZm8oaCwgQ1VSTElORk9f
RUZGRUNUSVZFX1VSTCwgJmhkcik7CisgICAgICAgIGQtPm1fcmVzcG9uc2Uuc2V0VXJsKEtVUkwo
aGRyKSk7CisKKyAgICAgICAgbG9uZyBodHRwQ29kZSA9IDA7CisgICAgICAgIGVyciA9IGN1cmxf
ZWFzeV9nZXRpbmZvKGgsIENVUkxJTkZPX1JFU1BPTlNFX0NPREUsICZodHRwQ29kZSk7CisgICAg
ICAgIGQtPm1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoaHR0cENvZGUpOworICAgIAorICAg
ICAgICBkLT5tX3Jlc3BvbnNlLnNldE1pbWVUeXBlKHBhcnNlTUlNRVR5cGUoZC0+bV9yZXNwb25z
ZS5odHRwSGVhZGVyRmllbGQoIkNvbnRlbnQtVHlwZSIpKSk7CisgICAgICAgIGQtPm1fcmVzcG9u
c2Uuc2V0VGV4dEVuY29kaW5nTmFtZShwYXJzZUNoYXJzZXQoZC0+bV9yZXNwb25zZS5odHRwSGVh
ZGVyRmllbGQoIkNvbnRlbnQtVHlwZSIpKSk7CisgICAgICAgIGQtPm1fcmVzcG9uc2Uuc2V0U3Vn
Z2VzdGVkRmlsZW5hbWUoZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihkLT5tX3Jl
c3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiQ29udGVudC1EaXNwb3NpdGlvbiIpKSk7CisKKyAgICAg
ICAgY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2Uoam9iLCBkLT5tX3Jlc3BvbnNlKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBpbnQgc3BsaXRQb3MgPSBoZWFkZXIuZmluZCgiOiIpOworICAgICAg
ICBpZiAoc3BsaXRQb3MgIT0gLTEpCisgICAgICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldEhUVFBI
ZWFkZXJGaWVsZChoZWFkZXIubGVmdChzcGxpdFBvcyksIGhlYWRlci5zdWJzdHJpbmcoc3BsaXRQ
b3MrMSkuc3RyaXBXaGl0ZVNwYWNlKCkpOworICAgIH0KKwogICAgIHJldHVybiB0b3RhbFNpemU7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxl
TWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jl
c291cmNlSGFuZGxlTWFuYWdlci5oCShyZXZpc2lvbiAyNDE3NCkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC02NSw2ICs2NSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBSZXNvdXJjZUhhbmRsZU1h
bmFnZXIoKTsKKyAgICB+UmVzb3VyY2VIYW5kbGVNYW5hZ2VyKCk7CiAgICAgdm9pZCBkb3dubG9h
ZFRpbWVyQ2FsbGJhY2soVGltZXI8UmVzb3VyY2VIYW5kbGVNYW5hZ2VyPiopOwogICAgIHZvaWQg
cmVtb3ZlRnJvbUN1cmwoUmVzb3VyY2VIYW5kbGUqKTsKICAgICBib29sIHJlbW92ZVNjaGVkdWxl
ZEpvYihSZXNvdXJjZUhhbmRsZSopOwpAQCAtNzIsOSArNzMsOSBAQCBwcml2YXRlOgogICAgIGJv
b2wgc3RhcnRTY2hlZHVsZWRKb2JzKCk7CiAKICAgICBUaW1lcjxSZXNvdXJjZUhhbmRsZU1hbmFn
ZXI+IG1fZG93bmxvYWRUaW1lcjsKLSAgICBDVVJMTSogbV9jdXJsTXVsdGlIYW5kbGU7IC8vIEZJ
WE1FOiBuZXZlciBmcmVlZAotICAgIENVUkxTSCogbV9jdXJsU2hhcmVIYW5kbGU7IC8vIEZJWE1F
OiBuZXZlciBmcmVlZAotICAgIGNoYXIqIG1fY29va2llSmFyRmlsZU5hbWU7IC8vIEZJWE1FOiBu
ZXZlciBmcmVlZAorICAgIENVUkxNKiBtX2N1cmxNdWx0aUhhbmRsZTsKKyAgICBDVVJMU0gqIG1f
Y3VybFNoYXJlSGFuZGxlOworICAgIGNoYXIqIG1fY29va2llSmFyRmlsZU5hbWU7CiAgICAgY2hh
ciBtX2N1cmxFcnJvckJ1ZmZlcltDVVJMX0VSUk9SX1NJWkVdOwogICAgIFJlc291cmNlSGFuZGxl
TGlzdCogbV9yZXNvdXJjZUhhbmRsZUxpc3RIZWFkOwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15477</attachid>
            <date>2007-07-11 11:57:30 -0700</date>
            <delta_ts>2007-07-17 01:55:12 -0700</delta_ts>
            <desc>CURL rework headerCallback</desc>
            <filename>curl-rework-header-handling-r2.patch</filename>
            <type>text/plain</type>
            <size>11353</size>
            <attacher name="Holger Freyther">zecke</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNDIwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMDctMDctMTEgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8
emVja2VAc2VsZmlzaC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBjYWxsYmFjayByZXNwb25zaWJsZSBmb3IgaGFuZGxp
bmcgSFRUUCBoZWFkZXJzLiBUaGlzCisgICAgICAgIGNhbGxiYWNrIGdldHMgY2FsbGVkIGZvciBl
dmVyeSBoZWFkZXIuCisgICAgICAgIFdlIHdpbGwgYWRkIHRoZXNlIGhlYWRlcnMgdG8gb3VyIFJl
c291cmNlUmVzcG9uc2UgYW5kIG9uIHRoZSAnZW5kLW9mLWhlYWRlcicKKyAgICAgICAgaW5kaWNh
dG9yIHdlIHdpbGwgdXBkYXRlIHRoZSBSZXNvdXJjZVJlc3BvbnNlIGFuZCBkaXNwYXRjaCBpdC4K
KworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdmFyaW91cyBzZXQgbWV0aG9kcyB0byBSZXNvdXJj
ZVJlc3BvbnNlLiBUaGlzIGltcHJvdmVzCisgICAgICAgIHRoZSByZWFkYWJpbGl0eSBvZiB0aGUg
aGVhZGVyQ2FsbGJhY2sgYW5kIGF2b2lkcyBzdG9yaW5nIGEgQ1VSTCBoYW5kbGUgaW5zaWRlCisg
ICAgICAgIHRoZSBSZXNvdXJjZVJlc3BvbnNlIHdoaWNoIHdvdWxkIGJlIG5lZWRlZCB0byBpbXBs
ZW1lbnQgUmVzb3VyY2VSZXNwb25zZTo6ZG9VcGRhdGVSZXNvdXJjZVJlc3BvbnNlCisKKyAgICAg
ICAgQWRkIGEgZGVzdHJ1Y3RvciBmb3IgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyIHdoaWNoIHdvdWxk
IGZyZWUgdGhlIHJlc291cmNlcyBhbmQgcmVtb3ZlCisgICAgICAgIGEgdW51c2VkIHZhcmlhYmxl
LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjpSZXNvdXJjZUhhbmRs
ZUludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6c2V0VXJsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnNldE1pbWVUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnNldEV4cGVjdGVkQ29udGVudExlbmd0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpzZXRUZXh0RW5jb2RpbmdOYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnNldFN1Z2dlc3RlZEZpbGVuYW1lKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlSW50ZXJuYWw6On5SZXNvdXJjZUhhbmRsZUludGVybmFs
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlTWFuYWdlcjo6flJlc291cmNl
SGFuZGxlTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZU1hbmFnZXI6
OnNoYXJlZEluc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmhlYWRlckNhbGxiYWNrKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmg6CisK
IDIwMDctMDctMTEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgJKHJldmlzaW9uIDI0MjA0KQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAkod29ya2luZyBjb3B5
KQpAQCAtOTQsNyArOTQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1f
dXJsKDApCiAgICAgICAgICAgICAsIG1fZmlsZU5hbWUoMCkKICAgICAgICAgICAgICwgbV9jdXN0
b21IZWFkZXJzKDApCi0gICAgICAgICAgICAsIG1fY3VzdG9tUG9zdEhlYWRlcigwKQogI2VuZGlm
CiAjaWYgUExBVEZPUk0oUVQpCiAgICAgICAgICAgICAsIG1fam9iKDApCkBAIC0xNDYsOCArMTQ1
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjaGFyKiBtX3VybDsKICAgICAgICAg
Y2hhciogbV9maWxlTmFtZTsKICAgICAgICAgc3RydWN0IGN1cmxfc2xpc3QqIG1fY3VzdG9tSGVh
ZGVyczsgICAgICAgIAotICAgICAgICBzdHJ1Y3QgY3VybF9zbGlzdCogbV9jdXN0b21Qb3N0SGVh
ZGVyOwogICAgICAgICBWZWN0b3I8Y2hhcj4gbV9wb3N0Qnl0ZXM7CisgICAgICAgIFJlc291cmNl
UmVzcG9uc2UgbV9yZXNwb25zZTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKFFUKQogICAgICAgICBR
V2ViTmV0d29ya0pvYiAqbV9qb2I7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVzcG9uc2UuY3BwCShyZXZpc2lvbiAyNDIwNCkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiAr
NDUsMTQgQEAgY29uc3QgS1VSTCYgUmVzb3VyY2VSZXNwb25zZTo6dXJsKCkgY29ucwogICAgIHJl
dHVybiBtX3VybDsgCiB9CiAKK3ZvaWQgUmVzb3VyY2VSZXNwb25zZTo6c2V0VXJsKGNvbnN0IEtV
UkwmIHVybCkKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisgICAgbV9pc051bGwg
PSBmYWxzZTsKKyAgICAKKyAgICBtX3VybCA9IHVybDsgCit9CisKIGNvbnN0IFN0cmluZyYgUmVz
b3VyY2VSZXNwb25zZTo6bWltZVR5cGUoKSBjb25zdAogewogICAgIHVwZGF0ZVJlc291cmNlUmVz
cG9uc2UoKTsKQEAgLTUyLDYgKzYwLDE0IEBAIGNvbnN0IFN0cmluZyYgUmVzb3VyY2VSZXNwb25z
ZTo6bWltZVR5cGUKICAgICByZXR1cm4gbV9taW1lVHlwZTsgCiB9CiAKK3ZvaWQgUmVzb3VyY2VS
ZXNwb25zZTo6c2V0TWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICB1cGRh
dGVSZXNvdXJjZVJlc3BvbnNlKCk7CisgICAgbV9pc051bGwgPSBmYWxzZTsKKyAgICAKKyAgICBt
X21pbWVUeXBlID0gbWltZVR5cGU7IAorfQorCiBsb25nIGxvbmcgUmVzb3VyY2VSZXNwb25zZTo6
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkgY29uc3QgCiB7CiAgICAgdXBkYXRlUmVzb3VyY2VSZXNw
b25zZSgpOwpAQCAtNTksNiArNzUsMTQgQEAgbG9uZyBsb25nIFJlc291cmNlUmVzcG9uc2U6OmV4
cGVjdGVkQ29udAogICAgIHJldHVybiBtX2V4cGVjdGVkQ29udGVudExlbmd0aDsKIH0KIAordm9p
ZCBSZXNvdXJjZVJlc3BvbnNlOjpzZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgobG9uZyBsb25nIGV4
cGVjdGVkQ29udGVudExlbmd0aCkKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7Cisg
ICAgbV9pc051bGwgPSBmYWxzZTsKKyAgICAKKyAgICBtX2V4cGVjdGVkQ29udGVudExlbmd0aCA9
IGV4cGVjdGVkQ29udGVudExlbmd0aDsgCit9CisKIGNvbnN0IFN0cmluZyYgUmVzb3VyY2VSZXNw
b25zZTo6dGV4dEVuY29kaW5nTmFtZSgpIGNvbnN0CiB7CiAgICAgdXBkYXRlUmVzb3VyY2VSZXNw
b25zZSgpOwpAQCAtNjYsNiArOTAsMTQgQEAgY29uc3QgU3RyaW5nJiBSZXNvdXJjZVJlc3BvbnNl
Ojp0ZXh0RW5jbwogICAgIHJldHVybiBtX3RleHRFbmNvZGluZ05hbWU7CiB9CiAKK3ZvaWQgUmVz
b3VyY2VSZXNwb25zZTo6c2V0VGV4dEVuY29kaW5nTmFtZShjb25zdCBTdHJpbmcmIGVuY29kaW5n
TmFtZSkKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlc3BvbnNlKCk7CisgICAgbV9pc051bGwgPSBm
YWxzZTsKKyAgICAKKyAgICBtX3RleHRFbmNvZGluZ05hbWUgPSBlbmNvZGluZ05hbWU7IAorfQor
CiAvLyBGSVhNRSBzaG91bGQgY29tcHV0ZSB0aGlzIG9uIHRoZSBmbHkKIGNvbnN0IFN0cmluZyYg
UmVzb3VyY2VSZXNwb25zZTo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdAogewpAQCAtNzQsNiAr
MTA2LDE0IEBAIGNvbnN0IFN0cmluZyYgUmVzb3VyY2VSZXNwb25zZTo6c3VnZ2VzdGUKICAgICBy
ZXR1cm4gbV9zdWdnZXN0ZWRGaWxlbmFtZTsKIH0KIAordm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpz
ZXRTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUpCit7CisgICAg
dXBkYXRlUmVzb3VyY2VSZXNwb25zZSgpOworICAgIG1faXNOdWxsID0gZmFsc2U7CisgICAgCisg
ICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IHN1Z2dlc3RlZE5hbWU7IAorfQorCiBpbnQgUmVzb3Vy
Y2VSZXNwb25zZTo6aHR0cFN0YXR1c0NvZGUoKSBjb25zdAogewogICAgIHVwZGF0ZVJlc291cmNl
UmVzcG9uc2UoKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3Bv
bnNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVz
cG9uc2UuaAkocmV2aXNpb24gMjQyMDQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MywxMiArNzMsMjAgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNIVFRQKCkgY29uc3Q7CiAgICAgCiAgICAgY29uc3QgS1VSTCYgdXJsKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRVcmwoY29uc3QgS1VSTCYgdXJsKTsKKwogICAgIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUoKSBjb25zdDsKKyAgICB2b2lkIHNldE1pbWVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpOworCiAgICAgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCgpIGNv
bnN0OworICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKGxvbmcgbG9uZyBleHBlY3Rl
ZENvbnRlbnRMZW5ndGgpOworCiAgICAgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRUZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSk7
CiAKICAgICAvLyBGSVhNRSBzaG91bGQgY29tcHV0ZSB0aGlzIG9uIHRoZSBmbHkKICAgICBjb25z
dCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTdWdnZXN0
ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmKTsKIAogICAgIGludCBodHRwU3RhdHVzQ29kZSgpIGNv
bnN0OwogICAgIHZvaWQgc2V0SFRUUFN0YXR1c0NvZGUoaW50KTsKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAkocmV2
aXNpb24gMjQyMDQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhh
bmRsZUN1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSw2IEBAIFJlc291cmNlSGFu
ZGxlSW50ZXJuYWw6On5SZXNvdXJjZUhhbmRsZUkKICAgICBmcmVlKG1fZmlsZU5hbWUpOwogICAg
IGlmIChtX2N1c3RvbUhlYWRlcnMpCiAgICAgICAgIGN1cmxfc2xpc3RfZnJlZV9hbGwobV9jdXN0
b21IZWFkZXJzKTsKLSAgICBpZiAobV9jdXN0b21Qb3N0SGVhZGVyKQotICAgICAgICBjdXJsX3Ns
aXN0X2ZyZWVfYWxsKG1fY3VzdG9tUG9zdEhlYWRlcik7CiB9CiAKIFJlc291cmNlSGFuZGxlOjp+
UmVzb3VyY2VIYW5kbGUoKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNDIwNCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw4IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFpbC5jb20gCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHAudG9rZXJAY29sbGFib3JhLmNvLnVrPgor
ICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCiAgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzIsNiArMzQsOCBAQAogI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNp
bmNsdWRlICJSZXNvdXJjZUhhbmRsZUludGVybmFsLmgiCisjaW5jbHVkZSAiSFRUUFBhcnNlcnMu
aCIKKwogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NTEsNiArNTUsMTQgQEAgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpSZXNvdXJjZUhhbmRsZU1hbgog
ICAgIGN1cmxfc2hhcmVfc2V0b3B0KG1fY3VybFNoYXJlSGFuZGxlLCBDVVJMU0hPUFRfU0hBUkUs
IENVUkxfTE9DS19EQVRBX0ROUyk7CiB9CiAKK1Jlc291cmNlSGFuZGxlTWFuYWdlcjo6flJlc291
cmNlSGFuZGxlTWFuYWdlcigpCit7CisgICAgY3VybF9tdWx0aV9jbGVhbnVwKG1fY3VybE11bHRp
SGFuZGxlKTsKKyAgICBjdXJsX3NoYXJlX2NsZWFudXAobV9jdXJsU2hhcmVIYW5kbGUpOworICAg
IGlmIChtX2Nvb2tpZUphckZpbGVOYW1lKQorICAgICAgICBmcmVlKG1fY29va2llSmFyRmlsZU5h
bWUpOworfQorCiB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6c2V0Q29va2llSmFyRmlsZU5h
bWUoY29uc3QgY2hhciogY29va2llSmFyRmlsZU5hbWUpCiB7IAogICAgIG1fY29va2llSmFyRmls
ZU5hbWUgPSBzdHJkdXAoY29va2llSmFyRmlsZU5hbWUpOwpAQCAtNTgsNyArNzAsNyBAQCB2b2lk
IFJlc291cmNlSGFuZGxlTWFuYWdlcjo6c2V0Q29va2llSmFyCiAKIFJlc291cmNlSGFuZGxlTWFu
YWdlciogUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzaGFyZWRJbnN0YW5jZSgpCiB7Ci0gICAgc3Rh
dGljIFJlc291cmNlSGFuZGxlTWFuYWdlciogc2hhcmVkSW5zdGFuY2U7CisgICAgc3RhdGljIFJl
c291cmNlSGFuZGxlTWFuYWdlciogc2hhcmVkSW5zdGFuY2UgPSAwOwogICAgIGlmICghc2hhcmVk
SW5zdGFuY2UpCiAgICAgICAgIHNoYXJlZEluc3RhbmNlID0gbmV3IFJlc291cmNlSGFuZGxlTWFu
YWdlcigpOwogICAgIHJldHVybiBzaGFyZWRJbnN0YW5jZTsKQEAgLTg1LDExICs5Nyw2MCBAQCBz
dGF0aWMgc2l6ZV90IHdyaXRlQ2FsbGJhY2sodm9pZCogcHRyLCBzCiAgICAgcmV0dXJuIHRvdGFs
U2l6ZTsKIH0KIAotLy8gVGhpcyBpcyBiZWluZyBjYWxsZWQgZm9yIGVhY2ggSFRUUCBoZWFkZXIg
aW4gdGhlIHJlc3BvbnNlIHNvIGl0J2xsIGJlIGNhbGxlZAotLy8gbXVsdGlwbGUgdGltZXMgZm9y
IGEgZ2l2ZW4gcmVzcG9uc2UuCisvKgorICogVGhpcyBpcyBiZWluZyBjYWxsZWQgZm9yIGVhY2gg
SFRUUCBoZWFkZXIgaW4gdGhlIHJlc3BvbnNlLiBUaGlzIGluY2x1ZGVzICdcclxuJworICogZm9y
IHRoZSBsYXN0IGxpbmUgb2YgdGhlIGhlYWRlci4KKyAqCisgKiBXZSB3aWxsIGFkZCBlYWNoIEhU
VFAgSGVhZGVyIHRvIHRoZSBSZXNvdXJjZVJlc3BvbnNlIGFuZCBvbiB0aGUgdGVybWluYXRpb24K
KyAqIG9mIHRoZSBoZWFkZXIgKFxyXG4pIHdlIHdpbGwgcGFyc2UgQ29udGVudC1UeXBlIGFuZCBD
b250ZW50LURpc3Bvc2l0aW9uIGFuZAorICogdXBkYXRlIHRoZSBSZXNvdXJjZVJlc3BvbnNlIGFu
ZCB0aGVuIHNlbmQgaXQgYXdheS4KKyAqCisgKi8KIHN0YXRpYyBzaXplX3QgaGVhZGVyQ2FsbGJh
Y2soY2hhciogcHRyLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG5tZW1iLCB2b2lkKiBkYXRhKQogewot
ICAgIGludCB0b3RhbFNpemUgPSBzaXplICogbm1lbWI7CisgICAgUmVzb3VyY2VIYW5kbGUqIGpv
YiA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oZGF0YSk7CisgICAgUmVzb3VyY2VIYW5k
bGVJbnRlcm5hbCogZCA9IGpvYi0+Z2V0SW50ZXJuYWwoKTsKKworICAgIHVuc2lnbmVkIGludCB0
b3RhbFNpemUgPSBzaXplICogbm1lbWI7CisgICAgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVu
dCA9IGQtPmNsaWVudCgpOworICAgIGlmICghY2xpZW50KSB7CisgICAgICAgIHJldHVybiB0b3Rh
bFNpemU7CisgICAgfQorCisgICAgCisgICAgU3RyaW5nIGhlYWRlcihzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4ocHRyKSwgdG90YWxTaXplKTsKKworICAgIC8qCisgICAgICogYSkgV2UgY2FuIGZp
bmlzaCBhbmQgc2VuZCB0aGUgUmVzb3VyY2VSZXNwb25zZQorICAgICAqIGIpIFdlIHdpbGwgYWRk
IHRoZSBjdXJyZW50IGhlYWRlciB0byB0aGUgSFRUUEhlYWRlck1hcCBvZiB0aGUgUmVzb3VyY2VS
ZXNwb25zZSAKKyAgICAgKi8KKyAgICBpZiAoaGVhZGVyID09IFN0cmluZygiXHJcbiIpKSB7Cisg
ICAgICAgIENVUkwqIGggPSBkLT5tX2hhbmRsZTsKKyAgICAgICAgQ1VSTGNvZGUgZXJyOworCisg
ICAgICAgIGRvdWJsZSBjb250ZW50TGVuZ3RoID0gMDsKKyAgICAgICAgZXJyID0gY3VybF9lYXN5
X2dldGluZm8oaCwgQ1VSTElORk9fQ09OVEVOVF9MRU5HVEhfRE9XTkxPQUQsICZjb250ZW50TGVu
Z3RoKTsKKyAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoc3Rh
dGljX2Nhc3Q8bG9uZyBsb25nIGludD4oY29udGVudExlbmd0aCkpOyAKKworICAgICAgICBjb25z
dCBjaGFyKiBoZHI7CisgICAgICAgIGVyciA9IGN1cmxfZWFzeV9nZXRpbmZvKGgsIENVUkxJTkZP
X0VGRkVDVElWRV9VUkwsICZoZHIpOworICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldFVybChLVVJM
KGhkcikpOworCisgICAgICAgIGxvbmcgaHR0cENvZGUgPSAwOworICAgICAgICBlcnIgPSBjdXJs
X2Vhc3lfZ2V0aW5mbyhoLCBDVVJMSU5GT19SRVNQT05TRV9DT0RFLCAmaHR0cENvZGUpOworICAg
ICAgICBkLT5tX3Jlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKGh0dHBDb2RlKTsKKyAgICAKKyAg
ICAgICAgZC0+bV9yZXNwb25zZS5zZXRNaW1lVHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFU
eXBlKGQtPm1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJDb250ZW50LVR5cGUiKSkpOworICAg
ICAgICBkLT5tX3Jlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9t
TWVkaWFUeXBlKGQtPm1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJDb250ZW50LVR5cGUiKSkp
OworICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldFN1Z2dlc3RlZEZpbGVuYW1lKGZpbGVuYW1lRnJv
bUhUVFBDb250ZW50RGlzcG9zaXRpb24oZC0+bV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGQoIkNv
bnRlbnQtRGlzcG9zaXRpb24iKSkpOworCisgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZVJlc3Bv
bnNlKGpvYiwgZC0+bV9yZXNwb25zZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW50IHNwbGl0
UG9zID0gaGVhZGVyLmZpbmQoIjoiKTsKKyAgICAgICAgaWYgKHNwbGl0UG9zICE9IC0xKQorICAg
ICAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoaGVhZGVyLmxlZnQoc3Bs
aXRQb3MpLCBoZWFkZXIuc3Vic3RyaW5nKHNwbGl0UG9zKzEpLnN0cmlwV2hpdGVTcGFjZSgpKTsK
KyAgICB9CisKICAgICByZXR1cm4gdG90YWxTaXplOwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuaAkocmV2
aXNpb24gMjQyMDQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhh
bmRsZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyKCk7CisgICAgflJlc291cmNlSGFu
ZGxlTWFuYWdlcigpOwogICAgIHZvaWQgZG93bmxvYWRUaW1lckNhbGxiYWNrKFRpbWVyPFJlc291
cmNlSGFuZGxlTWFuYWdlcj4qKTsKICAgICB2b2lkIHJlbW92ZUZyb21DdXJsKFJlc291cmNlSGFu
ZGxlKik7CiAgICAgYm9vbCByZW1vdmVTY2hlZHVsZWRKb2IoUmVzb3VyY2VIYW5kbGUqKTsKQEAg
LTcyLDkgKzczLDkgQEAgcHJpdmF0ZToKICAgICBib29sIHN0YXJ0U2NoZWR1bGVkSm9icygpOwog
CiAgICAgVGltZXI8UmVzb3VyY2VIYW5kbGVNYW5hZ2VyPiBtX2Rvd25sb2FkVGltZXI7Ci0gICAg
Q1VSTE0qIG1fY3VybE11bHRpSGFuZGxlOyAvLyBGSVhNRTogbmV2ZXIgZnJlZWQKLSAgICBDVVJM
U0gqIG1fY3VybFNoYXJlSGFuZGxlOyAvLyBGSVhNRTogbmV2ZXIgZnJlZWQKLSAgICBjaGFyKiBt
X2Nvb2tpZUphckZpbGVOYW1lOyAvLyBGSVhNRTogbmV2ZXIgZnJlZWQKKyAgICBDVVJMTSogbV9j
dXJsTXVsdGlIYW5kbGU7CisgICAgQ1VSTFNIKiBtX2N1cmxTaGFyZUhhbmRsZTsKKyAgICBjaGFy
KiBtX2Nvb2tpZUphckZpbGVOYW1lOwogICAgIGNoYXIgbV9jdXJsRXJyb3JCdWZmZXJbQ1VSTF9F
UlJPUl9TSVpFXTsKICAgICBSZXNvdXJjZUhhbmRsZUxpc3QqIG1fcmVzb3VyY2VIYW5kbGVMaXN0
SGVhZDsKIH07Cg==
</data>
<flag name="review"
          id="6429"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>