<?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>7726</bug_id>
          
          <creation_ts>2006-03-11 16:40:36 -0800</creation_ts>
          <short_desc>REGRESSION: orbitz calendar fails (JavaScript function serialization/parsing)</short_desc>
          <delta_ts>2017-04-23 22:57:38 -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>JavaScriptCore</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.orbitz.com/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction, InRadar, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Garcia">justin.garcia</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>alice.barraclough</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>voyagesboothhelp</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>35926</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-03-11 16:40:36 -0800</bug_when>
    <thetext>Goto:
http://www.orbitz.com/
Click inside the text field for the &quot;Leave&quot; or &quot;Return&quot; date.

A calendar should appear to let you chose a date graphically.  It doesn&apos;t in TOT, but does in 10.4.5.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35927</commentid>
    <comment_count>1</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2006-03-11 16:41:50 -0800</bug_when>
    <thetext>Oops, forgot an &apos;o&apos; in &quot;choose&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35968</commentid>
    <comment_count>2</comment_count>
      <attachid>7019</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-03-12 02:37:58 -0800</bug_when>
    <thetext>Created attachment 7019
reduced test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35969</commentid>
    <comment_count>3</comment_count>
      <attachid>7020</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-03-12 02:53:29 -0800</bug_when>
    <thetext>Created attachment 7020
another test case

Looks like two separate issues:
1) Firefox doesn&apos;t serialize onClick handler as an anonymous function, but WebKit does;
2) WebKit has lost the ability to parse such.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36075</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-12 22:02:46 -0800</bug_when>
    <thetext>Seems like (2) is by far the bigger issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36109</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-13 09:23:44 -0800</bug_when>
    <thetext>Regarding (1):

The code that constructs the function is JSLazyEventListener::parseCode in kjs_events.cpp. It uses the built-in Function object as a constructor to make the function, so the function has no name. However, to match Gecko it would be nice to supply a name. To do this we&apos;d need to do two things. First, we&apos;d need to supply a name to the JSLazyEventListener constructor and add the name parameter to createHTMLEventHandler. Second, we&apos;d need to create some way to construct such a function, since the built-in Function object as a constructor does not support setting the function&apos;s identifier.

Regarding (2):

The reason we don&apos;t parse a function expression any more and we used to is that we share the same parser for functions and for programs. We fixed a bug where we would allow function expressions in programs.

For a program, a function expression (without an identifier) is not legal, and should lead to a parse error. When parsing a function using the built-in Function object as a constructor, the JavaScript standard says that we should parse a FunctionBody, not a Program (section 10.1.2). But that&apos;s apparently not what Gecko is doing either, because a FunctionBody requires braces, so the test case wouldn&apos;t work if we followed exactly what the specification says.

I don&apos;t know how to change our JavaScript parser to work in different modes for these two purposes; there may be a feature that lets us do that in bison or a simple way to change the parser. But more importantly, I don&apos;t know what mode to invoke the parser in when using the Function object as a constructor!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36171</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-13 19:44:38 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; because a FunctionBody requires braces

I was wrong. A FunctionBody does not require braces.

Maciej points out that in this line of code:

    new Function(&quot;function (event) {}&quot;)

the text &quot;function (event) { }&quot; is the body of a function. So there&apos;s a body of a function there that contains another function in it!

As far as I can tell from reading the JavaScript specification, that *should* be a syntax error because that&apos;s a FunctionExpression, not a FunctionDeclaration. So I think that on issue (2) Firefox is wrong and WebKit is right! I&apos;d love to get more data about that. We might want to file a Mozilla bug report.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36179</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-13 21:19:56 -0800</bug_when>
    <thetext>This boils down to incorrect code on the Orbitz site that just happens to work in other browsers. Someone should report that to Orbitz.

But it&apos;s relatively easy to fix JavaScriptCore so this is not a problem. I see a few differences from Gecko:

    a) Functions made with &quot;new Function&quot; in Gecko get the name &quot;anonymous&quot;, while JavaScriptCore leaves them without names.
    b) Functions for event handlers are named after the attribute in Gecko, while WebCore leaves them without names.
    c) Gecko puts function declarations at the beginnings of new lines when serializing. JavaScriptCore does not.
    d) Gecko allows you to parse a function with no function name in the expression passed &quot;new Function&quot;.
    e) Gecko formats the functions a bit differently (brace on the same line as the function name).

To fix the bug, all we have to do is resolve (a), which is a tiny patch to JavaScriptCore. I have changes for (a), (b), and (c) in my tree now. I think (d) is something we get right and Gecko gets wrong. I think (e) is something we might want to consider doing, just to reduce the chance of a another bug like this one where someone depends on the details of behavior a bit too much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36180</commentid>
    <comment_count>8</comment_count>
      <attachid>7056</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-13 21:32:03 -0800</bug_when>
    <thetext>Created attachment 7056
patch that fixes the issues I called (a), (b), and (c)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36181</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-13 21:35:50 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=7056) [edit]
&gt; patch that fixes the issues I called (a), (b), and (c)

For performance, the &quot;anonymous&quot; should probably be added to the list in KJS_IDENTIFIER_EACH_PROPERTY_NAME_GLOBAL in identifier.h and then we should use anonymousPropertyName instead of &quot;anonymous&quot;, which is annoying, since a function name is not really a property name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36218</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-14 04:31:23 -0800</bug_when>
    <thetext>It&apos;s also possible that the name &quot;anonymous&quot; should appear in the serialized function, but should not be the function&apos;s name internally. Should do more testing to see if that&apos;s so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36219</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-14 04:35:05 -0800</bug_when>
    <thetext>In a way this is related to bug 6279, where we gave the internal functions names. A bug we fixed about named function parsing was bug 4698. A change that might have introduced this problem was the rework of the JavaScript parser to match the specification and fix conflicts, which I did on 2005-09-27.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>36294</commentid>
    <comment_count>12</comment_count>
      <attachid>7060</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-14 08:10:35 -0800</bug_when>
    <thetext>Created attachment 7060
patch that fixes the issues I called (a), (b), and (c)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37012</commentid>
    <comment_count>13</comment_count>
    <who name="Alice Liu">alice.barraclough</who>
    <bug_when>2006-03-20 07:56:11 -0800</bug_when>
    <thetext>&lt;rdar://problem/4483878&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37392</commentid>
    <comment_count>14</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-03-22 20:51:10 -0800</bug_when>
    <thetext>Code change looks good, but:

1) &quot;It&apos;s also possible that the name &quot;anonymous&quot; should appear in the serialized
function, but should not be the function&apos;s name internally. Should do more
testing to see if that&apos;s so.&quot;

Did you do this testing?


2) This needs test cases that cover the three issues you fixed.

I am not sure what the deal is with (d), the parameter to Function should be a function body, not a function expression or declaration, I believe.

r=me on the assumption that you address 1 and 2.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37470</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-23 22:25:43 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; Code change looks good, but:
&gt; 
&gt; 1) &quot;It&apos;s also possible that the name &quot;anonymous&quot; should appear in the
&gt; serialized
&gt; function, but should not be the function&apos;s name internally. Should do more
&gt; testing to see if that&apos;s so.&quot;
&gt; 
&gt; Did you do this testing?

Turns out there&apos;s no such thing as &quot;the function&apos;s name internally&quot;. The serialized form is the only place the function name shows up!

&gt; 2) This needs test cases that cover the three issues you fixed.

I wrote test cases for (a) and (b).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300437</commentid>
    <comment_count>16</comment_count>
    <who name="Andrew Buston">voyagesboothhelp</who>
    <bug_when>2017-04-23 22:57:38 -0700</bug_when>
    <thetext>spam removed</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>7019</attachid>
            <date>2006-03-12 02:37:58 -0800</date>
            <delta_ts>2006-03-12 02:37:58 -0800</delta_ts>
            <desc>reduced test case</desc>
            <filename>onclick-serialize.html</filename>
            <type>text/html</type>
            <size>462</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">PGJvZHk+CjxkaXYgaWQ9ImQiIG9uY2xpY2s9ImFsZXJ0KCdDbGlja2VkIScpIj5DbGljayBtZTwv
ZGl2Pgo8cHJlPgo8c2NyaXB0PgogIHRyeSB7CiAgICBlbGVtUmVmID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2QnKTsKICAgIGRvY3VtZW50LndyaXRlKGVsZW1SZWYub25jbGljayArICI8aHI+
Iik7CiAgICBlbGVtUmVmLm9uY2xpY2sgPSBuZXcgRnVuY3Rpb24oImFsZXJ0KDApOyIgKyBlbGVt
UmVmLm9uY2xpY2spOwogICAgZG9jdW1lbnQud3JpdGUoZWxlbVJlZi5vbmNsaWNrICsgIjxocj4i
KTsKICAgIGVsZW1SZWYub25jbGljayA9IG5ldyBGdW5jdGlvbigiYWxlcnQoMCk7IiArIGVsZW1S
ZWYub25jbGljayk7CiAgICBkb2N1bWVudC53cml0ZShlbGVtUmVmLm9uY2xpY2spOwogIH0gY2F0
Y2ggKGV4KSB7CiAgICBkb2N1bWVudC53cml0ZShleCk7CiAgfQo8L3NjcmlwdD4KPC9wcmU+Cjwv
Ym9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>7020</attachid>
            <date>2006-03-12 02:53:29 -0800</date>
            <delta_ts>2006-03-12 02:53:29 -0800</delta_ts>
            <desc>another test case</desc>
            <filename>parse-anonymous-function.html</filename>
            <type>text/html</type>
            <size>172</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">PGJvZHk+CjxwcmU+CjxzY3JpcHQ+CiAgdHJ5IHsKICAgIG5ldyBGdW5jdGlvbigiZnVuY3Rpb24g
KGV2ZW50KSB7fSIpOwogICAgZG9jdW1lbnQud3JpdGUoJ1NVQ0NFU1MnKTsKICB9IGNhdGNoIChl
eCkgewogICAgZG9jdW1lbnQud3JpdGUoZXgpOwogIH0KPC9zY3JpcHQ+CjwvcHJlPgo8L2JvZHk+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7056</attachid>
            <date>2006-03-13 21:32:03 -0800</date>
            <delta_ts>2006-03-14 08:10:35 -0800</delta_ts>
            <desc>patch that fixes the issues I called (a), (b), and (c)</desc>
            <filename>OrbitzPatch.txt</filename>
            <type>text/plain</type>
            <size>16060</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUva2h0bWwvZWNtYS9ranNfZXZlbnRzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2todG1sL2VjbWEva2pzX2V2ZW50cy5jcHAJKHJldmlzaW9uIDEzMjc3KQorKysgV2Vi
Q29yZS9raHRtbC9lY21hL2tqc19ldmVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAsMjAg
KzIxMCwxOSBAQAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUpTTGF6eUV2ZW50TGlzdGVuZXI6
OkpTTGF6eUV2ZW50TGlzdGVuZXIoY29uc3QgRE9NU3RyaW5nJiBfY29kZSwgV2luZG93KiBfd2lu
LCBOb2RlSW1wbCogX29yaWdpbmFsTm9kZSwgaW50IGxpbmVubykKLSAgOiBKU0V2ZW50TGlzdGVu
ZXIoMCwgX3dpbiwgdHJ1ZSksCi0gICAgY29kZShfY29kZSksCi0gICAgcGFyc2VkKGZhbHNlKQor
SlNMYXp5RXZlbnRMaXN0ZW5lcjo6SlNMYXp5RXZlbnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmIGZ1
bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBjb2RlLCBXaW5kb3cqIHdpbiwgTm9kZUltcGwqIG5v
ZGUsIGludCBsaW5lbm8pCisgIDogSlNFdmVudExpc3RlbmVyKDAsIHdpbiwgdHJ1ZSkKKyAgLCBt
X2Z1bmN0aW9uTmFtZShmdW5jdGlvbk5hbWUpCisgICwgY29kZShjb2RlKQorICAsIHBhcnNlZChm
YWxzZSkKKyAgLCBsaW5lTnVtYmVyKGxpbmVubykKKyAgLCBvcmlnaW5hbE5vZGUobm9kZSkKIHsK
LSAgICBsaW5lTnVtYmVyID0gbGluZW5vOwotCiAgICAgLy8gV2UgZG9uJ3QgcmV0YWluIHRoZSBv
cmlnaW5hbCBub2RlLCBiZWNhdXNlIHdlIGFzc3VtZSBpdAogICAgIC8vIHdpbGwgc3RheSBhbGl2
ZSBhcyBsb25nIGFzIHRoaXMgaGFuZGxlciBvYmplY3QgaXMgYXJvdW5kCiAgICAgLy8gYW5kIHdl
IG5lZWQgdG8gYXZvaWQgYSByZWZlcmVuY2UgY3ljbGUuIElmIEpTIHRyYW5zZmVycwogICAgIC8v
IHRoaXMgaGFuZGxlciB0byBhbm90aGVyIG5vZGUsIHBhcnNlQ29kZSB3aWxsIGJlIGNhbGxlZCBh
bmQKICAgICAvLyB0aGVuIG9yaWdpbmFsTm9kZSBpcyBubyBsb25nZXIgbmVlZGVkLgotICAgIAot
ICAgIG9yaWdpbmFsTm9kZSA9IF9vcmlnaW5hbE5vZGU7CiB9CiAKIEpTT2JqZWN0KiBKU0xhenlF
dmVudExpc3RlbmVyOjpsaXN0ZW5lck9iaigpIGNvbnN0CkBAIC0yNjAsNyArMjU5LDcgQEAKICAg
ICAgICAgVVN0cmluZyBzb3VyY2VVUkwoZnJhbWUtPnVybCgpLnVybCgpKTsKICAgICAgICAgYXJn
cy5hcHBlbmQoZXZlbnRQYXJhbWV0ZXJOYW1lKCkpOwogICAgICAgICBhcmdzLmFwcGVuZChqc1N0
cmluZyhjb2RlKSk7Ci0gICAgICAgIGxpc3RlbmVyID0gY29uc3RyLT5jb25zdHJ1Y3QoZXhlYywg
YXJncywgc291cmNlVVJMLCBsaW5lTnVtYmVyKTsgLy8gIyMjIGlzIGdsb2JhbEV4ZWMgb2sgPwor
ICAgICAgICBsaXN0ZW5lciA9IGNvbnN0ci0+Y29uc3RydWN0KGV4ZWMsIGFyZ3MsIElkZW50aWZp
ZXIobV9mdW5jdGlvbk5hbWUpLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIpOyAvLyAjIyMgaXMgZ2xv
YmFsRXhlYyBvayA/CiAKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAg
ICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwpAQCAtMjgxLDcgKzI4MCw4IEBACiAgICAg
fQogCiAgICAgLy8gbm8gbW9yZSBuZWVkIHRvIGtlZXAgdGhlIHVucGFyc2VkIGNvZGUgYXJvdW5k
Ci0gICAgY29kZSA9IERPTVN0cmluZygpOworICAgIG1fZnVuY3Rpb25OYW1lID0gU3RyaW5nKCk7
CisgICAgY29kZSA9IFN0cmluZygpOwogCiAgICAgaWYgKGxpc3RlbmVyKQogICAgICAgICB3aW5k
b3dPYmooKS0+anNFdmVudExpc3RlbmVycy5zZXQobGlzdGVuZXIsIGNvbnN0X2Nhc3Q8SlNMYXp5
RXZlbnRMaXN0ZW5lcio+KHRoaXMpKTsKSW5kZXg6IFdlYkNvcmUva2h0bWwvZWNtYS9ranNfZXZl
bnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9raHRtbC9lY21hL2tqc19ldmVudHMuaAkocmV2
aXNpb24gMTMyNzcpCisrKyBXZWJDb3JlL2todG1sL2VjbWEva2pzX2V2ZW50cy5oCSh3b3JraW5n
IGNvcHkpCkBAIC04MCwxMyArODAsMTQgQEAKIAogICAgIGNsYXNzIEpTTGF6eUV2ZW50TGlzdGVu
ZXIgOiBwdWJsaWMgSlNFdmVudExpc3RlbmVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEpTTGF6
eUV2ZW50TGlzdGVuZXIoY29uc3QgRE9NOjpET01TdHJpbmcmIGNvZGUsIFdpbmRvdyosIERPTTo6
Tm9kZUltcGwqLCBpbnQgbGluZW5vID0gMCk7CisgICAgICAgIEpTTGF6eUV2ZW50TGlzdGVuZXIo
Y29uc3QgV2ViQ29yZTo6U3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkNvcmU6OlN0cmlu
ZyYgY29kZSwgV2luZG93KiwgV2ViQ29yZTo6Tm9kZUltcGwqLCBpbnQgbGluZW5vID0gMCk7CiAg
ICAgICAgIHZpcnR1YWwgSlNPYmplY3QgKmxpc3RlbmVyT2JqKCkgY29uc3Q7CiAgICAgcHJpdmF0
ZToKICAgICAgICAgdmlydHVhbCBKU1ZhbHVlICpldmVudFBhcmFtZXRlck5hbWUoKSBjb25zdDsK
ICAgICAgICAgdm9pZCBwYXJzZUNvZGUoKSBjb25zdDsKIAotICAgICAgICBtdXRhYmxlIERPTTo6
RE9NU3RyaW5nIGNvZGU7CisgICAgICAgIG11dGFibGUgV2ViQ29yZTo6U3RyaW5nIG1fZnVuY3Rp
b25OYW1lOworICAgICAgICBtdXRhYmxlIFdlYkNvcmU6OlN0cmluZyBjb2RlOwogICAgICAgICBt
dXRhYmxlIGJvb2wgcGFyc2VkOwogICAgICAgICBpbnQgbGluZU51bWJlcjsKICAgICAgICAgRE9N
OjpOb2RlSW1wbCogb3JpZ2luYWxOb2RlOwpJbmRleDogV2ViQ29yZS9raHRtbC9lY21hL2tqc19w
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9raHRtbC9lY21hL2tqc19wcm94eS5jcHAJ
KHJldmlzaW9uIDEzMjc3KQorKysgV2ViQ29yZS9raHRtbC9lY21hL2tqc19wcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkyLDE5ICs5MiwxOSBAQAogICB9CiB9CiAKLUV2ZW50TGlzdGVuZXIg
KktKU1Byb3h5SW1wbDo6Y3JlYXRlSFRNTEV2ZW50SGFuZGxlcihjb25zdCBET01TdHJpbmcmIGNv
ZGUsIE5vZGVJbXBsICpub2RlKQorRXZlbnRMaXN0ZW5lciogS0pTUHJveHlJbXBsOjpjcmVhdGVI
VE1MRXZlbnRIYW5kbGVyKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcm
IGNvZGUsIE5vZGVJbXBsKiBub2RlKQogewogICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOwogICAg
IEpTTG9jayBsb2NrOwotICAgIHJldHVybiBuZXcgSlNMYXp5RXZlbnRMaXN0ZW5lcihjb2RlLCBX
aW5kb3c6OnJldHJpZXZlV2luZG93KG1fZnJhbWUpLCBub2RlLCBtX2hhbmRsZXJMaW5lbm8pOwor
ICAgIHJldHVybiBuZXcgSlNMYXp5RXZlbnRMaXN0ZW5lcihmdW5jdGlvbk5hbWUsIGNvZGUsIFdp
bmRvdzo6cmV0cmlldmVXaW5kb3cobV9mcmFtZSksIG5vZGUsIG1faGFuZGxlckxpbmVubyk7CiB9
CiAKICNpZiBTVkdfU1VQUE9SVAotRXZlbnRMaXN0ZW5lciAqS0pTUHJveHlJbXBsOjpjcmVhdGVT
VkdFdmVudEhhbmRsZXIoY29uc3QgRE9NU3RyaW5nJiBjb2RlLCBOb2RlSW1wbCAqbm9kZSkKK0V2
ZW50TGlzdGVuZXIqIEtKU1Byb3h5SW1wbDo6Y3JlYXRlU1ZHRXZlbnRIYW5kbGVyKGNvbnN0IFN0
cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIGNvZGUsIE5vZGVJbXBsICpub2RlKQog
ewogICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOwogICAgIEpTTG9jayBsb2NrOwotICAgIHJldHVy
biBuZXcgSlNTVkdMYXp5RXZlbnRMaXN0ZW5lcihjb2RlLCBXaW5kb3c6OnJldHJpZXZlV2luZG93
KG1fZnJhbWUpLCBub2RlLCBtX2hhbmRsZXJMaW5lbm8pOworICAgIHJldHVybiBuZXcgSlNTVkdM
YXp5RXZlbnRMaXN0ZW5lcihmdW5jdGlvbk5hbWUsIGNvZGUsIFdpbmRvdzo6cmV0cmlldmVXaW5k
b3cobV9mcmFtZSksIG5vZGUsIG1faGFuZGxlckxpbmVubyk7CiB9CiAjZW5kaWYKIApJbmRleDog
V2ViQ29yZS9raHRtbC9lY21hL2tqc19wcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2h0
bWwvZWNtYS9ranNfcHJveHkuaAkocmV2aXNpb24gMTMyNzcpCisrKyBXZWJDb3JlL2todG1sL2Vj
bWEva2pzX3Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDkgKzQyLDkgQEAKICAgICB+S0pT
UHJveHlJbXBsKCk7CiAgICAgS0pTOjpKU1ZhbHVlKiBldmFsdWF0ZShjb25zdCBET01TdHJpbmcm
IGZpbGVuYW1lLCBpbnQgYmFzZUxpbmUsIGNvbnN0IERPTVN0cmluZyYgY29kZSwgTm9kZUltcGwq
KTsKICAgICB2b2lkIGNsZWFyKCk7Ci0gICAgRXZlbnRMaXN0ZW5lciogY3JlYXRlSFRNTEV2ZW50
SGFuZGxlcihjb25zdCBET01TdHJpbmcmIGNvZGUsIE5vZGVJbXBsKik7CisgICAgRXZlbnRMaXN0
ZW5lciogY3JlYXRlSFRNTEV2ZW50SGFuZGxlcihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwg
Y29uc3QgU3RyaW5nJiBjb2RlLCBOb2RlSW1wbCopOwogI2lmIFNWR19TVVBQT1JUCi0gICAgRXZl
bnRMaXN0ZW5lciogY3JlYXRlU1ZHRXZlbnRIYW5kbGVyKGNvbnN0IERPTVN0cmluZyYgY29kZSwg
Tm9kZUltcGwqKTsKKyAgICBFdmVudExpc3RlbmVyKiBjcmVhdGVTVkdFdmVudEhhbmRsZXIoY29u
c3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgY29kZSwgTm9kZUltcGwqKTsK
ICNlbmRpZgogICAgIHZvaWQgZmluaXNoZWRXaXRoRXZlbnQoRXZlbnRJbXBsKik7CiAgICAgS0pT
OjpTY3JpcHRJbnRlcnByZXRlciAqaW50ZXJwcmV0ZXIoKTsKSW5kZXg6IFdlYkNvcmUvZG9tL0Rv
Y3VtZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50SW1wbC5oCShy
ZXZpc2lvbiAxMzI3NykKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50SW1wbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MDUsNyArNDA1LDcgQEAKICAgICB2b2lkIHJlbW92ZVdpbmRvd0V2ZW50TGlzdGVu
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVz
ZUNhcHR1cmUpOwogICAgIGJvb2wgaGFzV2luZG93RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSk7CiAKLSAgICBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGNyZWF0
ZUhUTUxFdmVudExpc3RlbmVyKGNvbnN0IFN0cmluZyYgY29kZSwgTm9kZUltcGwqKTsKKyAgICBQ
YXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGNyZWF0ZUhUTUxFdmVudExpc3RlbmVyKGNvbnN0IFN0
cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIGNvZGUsIE5vZGVJbXBsKik7CiAgICAg
CiAgICAgLyoqCiAgICAgICogU2VhcmNoZXMgdGhyb3VnaCB0aGUgZG9jdW1lbnQsIHN0YXJ0aW5n
IGZyb20gZnJvbU5vZGUsIGZvciB0aGUgbmV4dCBzZWxlY3RhYmxlIGVsZW1lbnQgdGhhdCBjb21l
cyBhZnRlciBmcm9tTm9kZS4KSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50SW1wbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnRJbXBsLmNwcAkocmV2aXNpb24gMTMyNzcp
CisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjkw
LDE4ICsyMjkwLDE4IEBACiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPEV2ZW50
TGlzdGVuZXI+IERvY3VtZW50SW1wbDo6Y3JlYXRlSFRNTEV2ZW50TGlzdGVuZXIoY29uc3QgRE9N
U3RyaW5nJiBjb2RlLCBOb2RlSW1wbCAqbm9kZSkKK1Bhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4g
RG9jdW1lbnRJbXBsOjpjcmVhdGVIVE1MRXZlbnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmIGZ1bmN0
aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBjb2RlLCBOb2RlSW1wbCAqbm9kZSkKIHsKLSAgICBpZiAo
RnJhbWUgKmZybSA9IGZyYW1lKCkpIHsKLSAgICAgICAgaWYgKEtKU1Byb3h5SW1wbCAqcHJveHkg
PSBmcm0tPmpTY3JpcHQoKSkKLSAgICAgICAgICAgIHJldHVybiBwcm94eS0+Y3JlYXRlSFRNTEV2
ZW50SGFuZGxlcihjb2RlLCBub2RlKTsKLSAgICB9CisgICAgaWYgKEZyYW1lKiBmID0gZnJhbWUo
KSkKKyAgICAgICAgaWYgKEtKU1Byb3h5SW1wbCogcHJveHkgPSBmLT5qU2NyaXB0KCkpCisgICAg
ICAgICAgICByZXR1cm4gcHJveHktPmNyZWF0ZUhUTUxFdmVudEhhbmRsZXIoZnVuY3Rpb25OYW1l
LCBjb2RlLCBub2RlKTsKICAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBEb2N1bWVudEltcGw6OnNl
dEhUTUxXaW5kb3dFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBB
dHRyaWJ1dGVJbXBsKiBhdHRyKQogewotICAgIHNldEhUTUxXaW5kb3dFdmVudExpc3RlbmVyKGV2
ZW50VHlwZSwgY3JlYXRlSFRNTEV2ZW50TGlzdGVuZXIoYXR0ci0+dmFsdWUoKSwgMCkpOworICAg
IHNldEhUTUxXaW5kb3dFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwKKyAgICAgICAgY3JlYXRlSFRN
TEV2ZW50TGlzdGVuZXIoYXR0ci0+bG9jYWxOYW1lKCkuZG9tU3RyaW5nKCksIGF0dHItPnZhbHVl
KCksIDApKTsKIH0KIAogdm9pZCBEb2N1bWVudEltcGw6OmRpc3BhdGNoSW1hZ2VMb2FkRXZlbnRT
b29uKEhUTUxJbWFnZUxvYWRlciAqaW1hZ2UpCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdF
bGVtZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxlbWVu
dEltcGwuY3BwCShyZXZpc2lvbiAxMzI3NykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsZW1l
bnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw4IEBACiAKIHZvaWQgU1ZH
RWxlbWVudEltcGw6OmFkZFNWR0V2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIGNvbnN0IEF0dHJpYnV0ZUltcGwqIGF0dHIpCiB7Ci0gICAgRWxlbWVudEltcGw6OnNl
dEhUTUxFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgZ2V0RG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0
ZW5zaW9ucygpLT5jcmVhdGVTVkdFdmVudExpc3RlbmVyKGF0dHItPnZhbHVlKCksIHRoaXMpKTsK
KyAgICBzZXRIVE1MRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGdldERvY3VtZW50KCktPmFjY2Vz
c1NWR0V4dGVuc2lvbnMoKS0+CisgICAgICAgIGNyZWF0ZVNWR0V2ZW50TGlzdGVuZXIoYXR0ci0+
bG9jYWxOYW1lKCkuZG9tU3RyaW5nKCksIGF0dHItPnZhbHVlKCksIHRoaXMpKTsKIH0KIAogdm9p
ZCBTVkdFbGVtZW50SW1wbDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlSW1w
bCAqYXR0cikKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnRJbXBsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50SW1wbC5jcHAJKHJl
dmlzaW9uIDEzMjc3KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudEltcGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMjcsNyArMjI3LDggQEAKIHsKICAgICAvLyBGSVhNRTogTm9u
ZSBvZiB0aGVzZSBzaG91bGQgYmUgd2luZG93IGV2ZW50cyBsb25nIHRlcm0uCiAgICAgLy8gT25j
ZSB3ZSBwcm9wZXJ0bHkgc3VwcG9ydCBTVkdMb2FkLCBldGMuCi0gICAgUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IGxpc3RlbmVyID0gZ2V0RG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5j
cmVhdGVTVkdFdmVudExpc3RlbmVyKGF0dHItPnZhbHVlKCksIHRoaXMpOworICAgIFJlZlB0cjxF
dmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IGdldERvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lv
bnMoKS0+CisgICAgICAgIGNyZWF0ZVNWR0V2ZW50TGlzdGVuZXIoYXR0ci0+bG9jYWxOYW1lKCku
ZG9tU3RyaW5nKCksIGF0dHItPnZhbHVlKCksIHRoaXMpOwogICAgIGdldERvY3VtZW50KCktPnNl
dEhUTUxXaW5kb3dFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIucmVsZWFzZSgpKTsK
IH0KIApJbmRleDogV2ViQ29yZS9rc3ZnMi9ldmVudHMvSlNTVkdMYXp5RXZlbnRMaXN0ZW5lci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9ldmVudHMvSlNTVkdMYXp5RXZlbnRMaXN0
ZW5lci5jcHAJKHJldmlzaW9uIDEzMjc3KQorKysgV2ViQ29yZS9rc3ZnMi9ldmVudHMvSlNTVkdM
YXp5RXZlbnRMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1KU1NWR0xhenlFdmVudExpc3RlbmVyOjpKU1NWR0xhenlF
dmVudExpc3RlbmVyKGNvbnN0IERPTVN0cmluZyYgY29kZSwgS0pTOjpXaW5kb3cqIHdpbiwgTm9k
ZUltcGwqIG5vZGUsIGludCBsaW5lbm8pCi0gICAgOiBKU0xhenlFdmVudExpc3RlbmVyKGNvZGUs
IHdpbiwgbm9kZSwgbGluZW5vKQorSlNTVkdMYXp5RXZlbnRMaXN0ZW5lcjo6SlNTVkdMYXp5RXZl
bnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBjb2Rl
LCBXaW5kb3cqIHdpbiwgTm9kZUltcGwqIG5vZGUsIGludCBsaW5lbm8pCisgICAgOiBKU0xhenlF
dmVudExpc3RlbmVyKGZ1bmN0aW9uTmFtZSwgY29kZSwgd2luLCBub2RlLCBsaW5lbm8pCiB7CiB9
CiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvZXZlbnRzL0pTU1ZHTGF6eUV2ZW50TGlzdGVuZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL2V2ZW50cy9KU1NWR0xhenlFdmVudExpc3RlbmVy
LmgJKHJldmlzaW9uIDEzMjc3KQorKysgV2ViQ29yZS9rc3ZnMi9ldmVudHMvSlNTVkdMYXp5RXZl
bnRMaXN0ZW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSw5IEBACiAKICAgICBjbGFz
cyBKU1NWR0xhenlFdmVudExpc3RlbmVyIDogcHVibGljIEtKUzo6SlNMYXp5RXZlbnRMaXN0ZW5l
ciB7CiAgICAgcHVibGljOgotICAgICAgICBKU1NWR0xhenlFdmVudExpc3RlbmVyKGNvbnN0IERP
TVN0cmluZyYgY29kZSwgS0pTOjpXaW5kb3cqLCBOb2RlSW1wbCosIGludCBsaW5lbm8gPSAwKTsK
KyAgICAgICAgSlNTVkdMYXp5RXZlbnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFt
ZSwgY29uc3QgU3RyaW5nJiBjb2RlLCBLSlM6OldpbmRvdyosIE5vZGVJbXBsKiwgaW50IGxpbmVu
byA9IDApOwogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgS0pTOjpKU1ZhbHVlICpldmVu
dFBhcmFtZXRlck5hbWUoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBLSlM6OkpTVmFsdWUqIGV2
ZW50UGFyYW1ldGVyTmFtZSgpIGNvbnN0OwogICAgIH07CiB9CiAKSW5kZXg6IFdlYkNvcmUva3N2
ZzIvbWlzYy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
a3N2ZzIvbWlzYy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCShyZXZpc2lvbiAxMzI3NykKKysr
IFdlYkNvcmUva3N2ZzIvbWlzYy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MiwxMiArNDIsMTIgQEAKICAgICBkZWxldGUgbV90aW1lU2NoZWR1bGVyOwogfQog
Ci1QYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6Y3JlYXRl
U1ZHRXZlbnRMaXN0ZW5lcihjb25zdCBET01TdHJpbmcmIGNvZGUsIE5vZGVJbXBsICpub2RlKQor
UGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmNyZWF0ZVNW
R0V2ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsCisgICAgY29uc3QgU3Ry
aW5nJiBjb2RlLCBOb2RlSW1wbCAqbm9kZSkKIHsKLSAgICBpZiAoRnJhbWUgKmZyYW1lID0gbV9k
b2MtPmZyYW1lKCkpIHsKLSAgICAgICAgaWYgKEtKU1Byb3h5SW1wbCAqcHJveHkgPSBmcmFtZS0+
alNjcmlwdCgpKQotICAgICAgICAgICAgcmV0dXJuIHByb3h5LT5jcmVhdGVTVkdFdmVudEhhbmRs
ZXIoY29kZSwgbm9kZSk7Ci0gICAgfQorICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX2RvYy0+ZnJh
bWUoKSkKKyAgICAgICAgaWYgKEtKU1Byb3h5SW1wbCogcHJveHkgPSBmcmFtZS0+alNjcmlwdCgp
KQorICAgICAgICAgICAgcmV0dXJuIHByb3h5LT5jcmVhdGVTVkdFdmVudEhhbmRsZXIoZnVuY3Rp
b25OYW1lLCBjb2RlLCBub2RlKTsKICAgICByZXR1cm4gMDsKIH0KIApJbmRleDogV2ViQ29yZS9r
c3ZnMi9taXNjL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
a3N2ZzIvbWlzYy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaAkocmV2aXNpb24gMTMyNzcpCisrKyBX
ZWJDb3JlL2tzdmcyL21pc2MvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDE4ICszMSwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFRpbWVT
Y2hlZHVsZXI7CiBjbGFzcyBEb2N1bWVudEltcGw7CiBjbGFzcyBFdmVudExpc3RlbmVyOwotY2xh
c3MgRE9NU3RyaW5nOwogY2xhc3MgTm9kZUltcGw7CitjbGFzcyBTdHJpbmc7CitjbGFzcyBUaW1l
U2NoZWR1bGVyOwogCiBjbGFzcyBTVkdEb2N1bWVudEV4dGVuc2lvbnMgewogcHVibGljOgogICAg
IFNWR0RvY3VtZW50RXh0ZW5zaW9ucyhEb2N1bWVudEltcGwqKTsKICAgICB+U1ZHRG9jdW1lbnRF
eHRlbnNpb25zKCk7CiAgICAgCi0gICAgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBjcmVhdGVT
VkdFdmVudExpc3RlbmVyKGNvbnN0IERPTVN0cmluZyYgY29kZSwgTm9kZUltcGwqKTsKKyAgICBQ
YXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGNyZWF0ZVNWR0V2ZW50TGlzdGVuZXIoY29uc3QgU3Ry
aW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgY29kZSwgTm9kZUltcGwqKTsKIAogICAg
IFRpbWVTY2hlZHVsZXIqIHRpbWVTY2hlZHVsZXIoKSBjb25zdCB7IHJldHVybiBtX3RpbWVTY2hl
ZHVsZXI7IH0KICAgICAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9ub2RlczJzdHJpbmcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9ub2RlczJzdHJpbmcuY3BwCShyZXZp
c2lvbiAxMzI3NykKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9ub2RlczJzdHJpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MDcsNyArNzA3LDcgQEAKIAogdm9pZCBGdW5jRGVjbE5vZGU6OnN0cmVh
bVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKIHsKLSAgcyA8PCAiZnVuY3Rpb24gIiA8PCBpZGVu
dCA8PCAiKCIgPDwgcGFyYW0gPDwgIikiIDw8IGJvZHk7CisgIHMgPDwgU291cmNlU3RyZWFtOjpF
bmRsIDw8ICJmdW5jdGlvbiAiIDw8IGlkZW50IDw8ICIoIiA8PCBwYXJhbSA8PCAiKSIgPDwgYm9k
eTsKIH0KIAogdm9pZCBGdW5jRXhwck5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29u
c3QKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9vYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL2tqcy9vYmplY3QuY3BwCShyZXZpc2lvbiAxMzI3NykKKysrIEphdmFTY3Jp
cHRDb3JlL2tqcy9vYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTUsMTMgKzQxNSwxMyBA
QAogICByZXR1cm4gZmFsc2U7CiB9CiAKLUpTT2JqZWN0ICpKU09iamVjdDo6Y29uc3RydWN0KEV4
ZWNTdGF0ZSAqLypleGVjKi8sIGNvbnN0IExpc3QgJi8qYXJncyovKQorSlNPYmplY3QgKkpTT2Jq
ZWN0Ojpjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgY29uc3QgTGlzdCYgLyphcmdzKi8pCiB7CiAgIGFz
c2VydChmYWxzZSk7CiAgIHJldHVybiBOVUxMOwogfQogCi1KU09iamVjdCAqSlNPYmplY3Q6OmNv
bnN0cnVjdChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IExpc3QgJmFyZ3MsIGNvbnN0IFVTdHJpbmcg
Ji8qc291cmNlVVJMKi8sIGludCAvKmxpbmVOdW1iZXIqLykKK0pTT2JqZWN0ICpKU09iamVjdDo6
Y29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJncywgY29uc3QgSWRlbnRp
ZmllciYgLypmdW5jdGlvbk5hbWUqLywgY29uc3QgVVN0cmluZyYgLypzb3VyY2VVUkwqLywgaW50
IC8qbGluZU51bWJlciovKQogewogICByZXR1cm4gY29uc3RydWN0KGV4ZWMsIGFyZ3MpOwogfQpJ
bmRleDogSmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0aW9uX29iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL2tqcy9mdW5jdGlvbl9vYmplY3QuaAkocmV2aXNpb24gMTMyNzcpCisr
KyBKYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb25fb2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTY2LDEzICs2NiwxMyBAQAogICAgKi8KICAgY2xhc3MgRnVuY3Rpb25PYmplY3RJbXAgOiBwdWJs
aWMgSW50ZXJuYWxGdW5jdGlvbkltcCB7CiAgIHB1YmxpYzoKLSAgICBGdW5jdGlvbk9iamVjdElt
cChFeGVjU3RhdGUgKmV4ZWMsIEZ1bmN0aW9uUHJvdG90eXBlICpmdW5jUHJvdG8pOworICAgIEZ1
bmN0aW9uT2JqZWN0SW1wKEV4ZWNTdGF0ZSosIEZ1bmN0aW9uUHJvdG90eXBlKik7CiAgICAgdmly
dHVhbCB+RnVuY3Rpb25PYmplY3RJbXAoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpbXBsZW1lbnRz
Q29uc3RydWN0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBKU09iamVjdCAqY29uc3RydWN0KEV4ZWNT
dGF0ZSAqZXhlYywgY29uc3QgTGlzdCAmYXJncywgY29uc3QgVVN0cmluZyAmc291cmNlVVJMLCBp
bnQgbGluZU51bWJlcik7Ci0gICAgdmlydHVhbCBKU09iamVjdCAqY29uc3RydWN0KEV4ZWNTdGF0
ZSAqZXhlYywgY29uc3QgTGlzdCAmYXJncyk7Ci0gICAgdmlydHVhbCBKU1ZhbHVlICpjYWxsQXNG
dW5jdGlvbihFeGVjU3RhdGUgKmV4ZWMsIEpTT2JqZWN0ICp0aGlzT2JqLCBjb25zdCBMaXN0ICZh
cmdzKTsKKyAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgY29uc3Qg
TGlzdCYgYXJncyk7CisgICAgdmlydHVhbCBKU09iamVjdCogY29uc3RydWN0KEV4ZWNTdGF0ZSos
IGNvbnN0IExpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3Qg
VVN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlcik7CisgICAgdmlydHVhbCBKU1ZhbHVl
KiBjYWxsQXNGdW5jdGlvbihFeGVjU3RhdGUqLCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgTGlz
dCYgYXJncyk7CiAgIH07CiAKIH0gLy8gbmFtZXNwYWNlCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9r
anMvZnVuY3Rpb25fb2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMv
ZnVuY3Rpb25fb2JqZWN0LmNwcAkocmV2aXNpb24gMTMyNzcpCisrKyBKYXZhU2NyaXB0Q29yZS9r
anMvZnVuY3Rpb25fb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDcgKzE2NCw3IEBA
CiB9CiAKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgotSlNPYmplY3Qg
KkZ1bmN0aW9uT2JqZWN0SW1wOjpjb25zdHJ1Y3QoRXhlY1N0YXRlICpleGVjLCBjb25zdCBMaXN0
ICZhcmdzLCBjb25zdCBVU3RyaW5nICZzb3VyY2VVUkwsIGludCBsaW5lTnVtYmVyKQorSlNPYmpl
Y3QgKkZ1bmN0aW9uT2JqZWN0SW1wOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBM
aXN0JiBhcmdzLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFVTdHJpbmcm
IHNvdXJjZVVSTCwgaW50IGxpbmVOdW1iZXIpCiB7CiAgIFVTdHJpbmcgcCgiIik7CiAgIFVTdHJp
bmcgYm9keTsKQEAgLTIwNyw3ICsyMDcsNyBAQAogICBzY29wZUNoYWluLnB1c2goZXhlYy0+ZHlu
YW1pY0ludGVycHJldGVyKCktPmdsb2JhbE9iamVjdCgpKTsKICAgRnVuY3Rpb25Cb2R5Tm9kZSAq
Ym9keU5vZGUgPSBwcm9nTm9kZS5nZXQoKTsKIAotICBGdW5jdGlvbkltcCAqZmltcCA9IG5ldyBE
ZWNsYXJlZEZ1bmN0aW9uSW1wKGV4ZWMsIElkZW50aWZpZXI6Om51bGwoKSwgYm9keU5vZGUsIHNj
b3BlQ2hhaW4pOworICBGdW5jdGlvbkltcCAqZmltcCA9IG5ldyBEZWNsYXJlZEZ1bmN0aW9uSW1w
KGV4ZWMsIGZ1bmN0aW9uTmFtZSwgYm9keU5vZGUsIHNjb3BlQ2hhaW4pOwogICAKICAgLy8gcGFy
c2UgcGFyYW1ldGVyIGxpc3QuIHRocm93IHN5bnRheCBlcnJvciBvbiBpbGxlZ2FsIGlkZW50aWZp
ZXJzCiAgIGludCBsZW4gPSBwLnNpemUoKTsKQEAgLTI1MCw5ICsyNTAsOSBAQAogfQogCiAvLyBF
Q01BIDE1LjMuMiBUaGUgRnVuY3Rpb24gQ29uc3RydWN0b3IKLUpTT2JqZWN0ICpGdW5jdGlvbk9i
amVjdEltcDo6Y29uc3RydWN0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgTGlzdCAmYXJncykKK0pT
T2JqZWN0ICpGdW5jdGlvbk9iamVjdEltcDo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgTGlzdCYgYXJncykKIHsKLSAgcmV0dXJuIEZ1bmN0aW9uT2JqZWN0SW1wOjpjb25zdHJ1Y3Qo
ZXhlYywgYXJncywgVVN0cmluZygpLCAwKTsKKyAgcmV0dXJuIEZ1bmN0aW9uT2JqZWN0SW1wOjpj
b25zdHJ1Y3QoZXhlYywgYXJncywgImFub255bW91cyIsIFVTdHJpbmcoKSwgMCk7CiB9CiAKIC8v
IEVDTUEgMTUuMy4xIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvciBDYWxsZWQgYXMgYSBGdW5jdGlv
bgpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL29iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2tqcy9vYmplY3QuaAkocmV2aXNpb24gMTMyNzcpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ranMvb2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw4ICszNjksOCBAQAogICAgIC8q
KgogICAgICAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBbW0NvbnN0cnVjdF1dIGludGVybmFsIHBy
b3BlcnR5CiAgICAgICovCi0gICAgdmlydHVhbCBKU09iamVjdCAqY29uc3RydWN0KEV4ZWNTdGF0
ZSAqZXhlYywgY29uc3QgTGlzdCAmYXJncyk7Ci0gICAgdmlydHVhbCBKU09iamVjdCAqY29uc3Ry
dWN0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgTGlzdCAmYXJncywgY29uc3QgVVN0cmluZyAmc291
cmNlVVJMLCBpbnQgbGluZU51bWJlcik7CisgICAgdmlydHVhbCBKU09iamVjdCogY29uc3RydWN0
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJncyk7CisgICAgdmlydHVhbCBKU09iamVj
dCogY29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJncywgY29uc3QgSWRl
bnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwsIGludCBsaW5l
TnVtYmVyKTsKIAogICAgIC8qKgogICAgICAqIFdoZXRoZXIgb3Igbm90IHRoZSBvYmplY3QgaW1w
bGVtZW50cyB0aGUgY2FsbCgpIG1ldGhvZC4gSWYgdGhpcyByZXR1cm5zCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7060</attachid>
            <date>2006-03-14 08:10:35 -0800</date>
            <delta_ts>2006-03-22 20:51:36 -0800</delta_ts>
            <desc>patch that fixes the issues I called (a), (b), and (c)</desc>
            <filename>OrbitzPatch.txt</filename>
            <type>text/plain</type>
            <size>16696</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUva2h0bWwvZWNtYS9ranNfZXZlbnRzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2todG1sL2VjbWEva2pzX2V2ZW50cy5jcHAJKHJldmlzaW9uIDEzMjc3KQorKysgV2Vi
Q29yZS9raHRtbC9lY21hL2tqc19ldmVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAsMjAg
KzIxMCwxOSBAQAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUpTTGF6eUV2ZW50TGlzdGVuZXI6
OkpTTGF6eUV2ZW50TGlzdGVuZXIoY29uc3QgRE9NU3RyaW5nJiBfY29kZSwgV2luZG93KiBfd2lu
LCBOb2RlSW1wbCogX29yaWdpbmFsTm9kZSwgaW50IGxpbmVubykKLSAgOiBKU0V2ZW50TGlzdGVu
ZXIoMCwgX3dpbiwgdHJ1ZSksCi0gICAgY29kZShfY29kZSksCi0gICAgcGFyc2VkKGZhbHNlKQor
SlNMYXp5RXZlbnRMaXN0ZW5lcjo6SlNMYXp5RXZlbnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmIGZ1
bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBjb2RlLCBXaW5kb3cqIHdpbiwgTm9kZUltcGwqIG5v
ZGUsIGludCBsaW5lbm8pCisgIDogSlNFdmVudExpc3RlbmVyKDAsIHdpbiwgdHJ1ZSkKKyAgLCBt
X2Z1bmN0aW9uTmFtZShmdW5jdGlvbk5hbWUpCisgICwgY29kZShjb2RlKQorICAsIHBhcnNlZChm
YWxzZSkKKyAgLCBsaW5lTnVtYmVyKGxpbmVubykKKyAgLCBvcmlnaW5hbE5vZGUobm9kZSkKIHsK
LSAgICBsaW5lTnVtYmVyID0gbGluZW5vOwotCiAgICAgLy8gV2UgZG9uJ3QgcmV0YWluIHRoZSBv
cmlnaW5hbCBub2RlLCBiZWNhdXNlIHdlIGFzc3VtZSBpdAogICAgIC8vIHdpbGwgc3RheSBhbGl2
ZSBhcyBsb25nIGFzIHRoaXMgaGFuZGxlciBvYmplY3QgaXMgYXJvdW5kCiAgICAgLy8gYW5kIHdl
IG5lZWQgdG8gYXZvaWQgYSByZWZlcmVuY2UgY3ljbGUuIElmIEpTIHRyYW5zZmVycwogICAgIC8v
IHRoaXMgaGFuZGxlciB0byBhbm90aGVyIG5vZGUsIHBhcnNlQ29kZSB3aWxsIGJlIGNhbGxlZCBh
bmQKICAgICAvLyB0aGVuIG9yaWdpbmFsTm9kZSBpcyBubyBsb25nZXIgbmVlZGVkLgotICAgIAot
ICAgIG9yaWdpbmFsTm9kZSA9IF9vcmlnaW5hbE5vZGU7CiB9CiAKIEpTT2JqZWN0KiBKU0xhenlF
dmVudExpc3RlbmVyOjpsaXN0ZW5lck9iaigpIGNvbnN0CkBAIC0yNjAsNyArMjU5LDcgQEAKICAg
ICAgICAgVVN0cmluZyBzb3VyY2VVUkwoZnJhbWUtPnVybCgpLnVybCgpKTsKICAgICAgICAgYXJn
cy5hcHBlbmQoZXZlbnRQYXJhbWV0ZXJOYW1lKCkpOwogICAgICAgICBhcmdzLmFwcGVuZChqc1N0
cmluZyhjb2RlKSk7Ci0gICAgICAgIGxpc3RlbmVyID0gY29uc3RyLT5jb25zdHJ1Y3QoZXhlYywg
YXJncywgc291cmNlVVJMLCBsaW5lTnVtYmVyKTsgLy8gIyMjIGlzIGdsb2JhbEV4ZWMgb2sgPwor
ICAgICAgICBsaXN0ZW5lciA9IGNvbnN0ci0+Y29uc3RydWN0KGV4ZWMsIGFyZ3MsIElkZW50aWZp
ZXIobV9mdW5jdGlvbk5hbWUpLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIpOyAvLyAjIyMgaXMgZ2xv
YmFsRXhlYyBvayA/CiAKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CiAgICAg
ICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwpAQCAtMjgxLDcgKzI4MCw4IEBACiAgICAg
fQogCiAgICAgLy8gbm8gbW9yZSBuZWVkIHRvIGtlZXAgdGhlIHVucGFyc2VkIGNvZGUgYXJvdW5k
Ci0gICAgY29kZSA9IERPTVN0cmluZygpOworICAgIG1fZnVuY3Rpb25OYW1lID0gU3RyaW5nKCk7
CisgICAgY29kZSA9IFN0cmluZygpOwogCiAgICAgaWYgKGxpc3RlbmVyKQogICAgICAgICB3aW5k
b3dPYmooKS0+anNFdmVudExpc3RlbmVycy5zZXQobGlzdGVuZXIsIGNvbnN0X2Nhc3Q8SlNMYXp5
RXZlbnRMaXN0ZW5lcio+KHRoaXMpKTsKSW5kZXg6IFdlYkNvcmUva2h0bWwvZWNtYS9ranNfZXZl
bnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9raHRtbC9lY21hL2tqc19ldmVudHMuaAkocmV2
aXNpb24gMTMyNzcpCisrKyBXZWJDb3JlL2todG1sL2VjbWEva2pzX2V2ZW50cy5oCSh3b3JraW5n
IGNvcHkpCkBAIC04MCwxMyArODAsMTQgQEAKIAogICAgIGNsYXNzIEpTTGF6eUV2ZW50TGlzdGVu
ZXIgOiBwdWJsaWMgSlNFdmVudExpc3RlbmVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEpTTGF6
eUV2ZW50TGlzdGVuZXIoY29uc3QgRE9NOjpET01TdHJpbmcmIGNvZGUsIFdpbmRvdyosIERPTTo6
Tm9kZUltcGwqLCBpbnQgbGluZW5vID0gMCk7CisgICAgICAgIEpTTGF6eUV2ZW50TGlzdGVuZXIo
Y29uc3QgV2ViQ29yZTo6U3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFdlYkNvcmU6OlN0cmlu
ZyYgY29kZSwgV2luZG93KiwgV2ViQ29yZTo6Tm9kZUltcGwqLCBpbnQgbGluZW5vID0gMCk7CiAg
ICAgICAgIHZpcnR1YWwgSlNPYmplY3QgKmxpc3RlbmVyT2JqKCkgY29uc3Q7CiAgICAgcHJpdmF0
ZToKICAgICAgICAgdmlydHVhbCBKU1ZhbHVlICpldmVudFBhcmFtZXRlck5hbWUoKSBjb25zdDsK
ICAgICAgICAgdm9pZCBwYXJzZUNvZGUoKSBjb25zdDsKIAotICAgICAgICBtdXRhYmxlIERPTTo6
RE9NU3RyaW5nIGNvZGU7CisgICAgICAgIG11dGFibGUgV2ViQ29yZTo6U3RyaW5nIG1fZnVuY3Rp
b25OYW1lOworICAgICAgICBtdXRhYmxlIFdlYkNvcmU6OlN0cmluZyBjb2RlOwogICAgICAgICBt
dXRhYmxlIGJvb2wgcGFyc2VkOwogICAgICAgICBpbnQgbGluZU51bWJlcjsKICAgICAgICAgRE9N
OjpOb2RlSW1wbCogb3JpZ2luYWxOb2RlOwpJbmRleDogV2ViQ29yZS9raHRtbC9lY21hL2tqc19w
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9raHRtbC9lY21hL2tqc19wcm94eS5jcHAJ
KHJldmlzaW9uIDEzMjc3KQorKysgV2ViQ29yZS9raHRtbC9lY21hL2tqc19wcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkyLDE5ICs5MiwxOSBAQAogICB9CiB9CiAKLUV2ZW50TGlzdGVuZXIg
KktKU1Byb3h5SW1wbDo6Y3JlYXRlSFRNTEV2ZW50SGFuZGxlcihjb25zdCBET01TdHJpbmcmIGNv
ZGUsIE5vZGVJbXBsICpub2RlKQorRXZlbnRMaXN0ZW5lciogS0pTUHJveHlJbXBsOjpjcmVhdGVI
VE1MRXZlbnRIYW5kbGVyKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcm
IGNvZGUsIE5vZGVJbXBsKiBub2RlKQogewogICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOwogICAg
IEpTTG9jayBsb2NrOwotICAgIHJldHVybiBuZXcgSlNMYXp5RXZlbnRMaXN0ZW5lcihjb2RlLCBX
aW5kb3c6OnJldHJpZXZlV2luZG93KG1fZnJhbWUpLCBub2RlLCBtX2hhbmRsZXJMaW5lbm8pOwor
ICAgIHJldHVybiBuZXcgSlNMYXp5RXZlbnRMaXN0ZW5lcihmdW5jdGlvbk5hbWUsIGNvZGUsIFdp
bmRvdzo6cmV0cmlldmVXaW5kb3cobV9mcmFtZSksIG5vZGUsIG1faGFuZGxlckxpbmVubyk7CiB9
CiAKICNpZiBTVkdfU1VQUE9SVAotRXZlbnRMaXN0ZW5lciAqS0pTUHJveHlJbXBsOjpjcmVhdGVT
VkdFdmVudEhhbmRsZXIoY29uc3QgRE9NU3RyaW5nJiBjb2RlLCBOb2RlSW1wbCAqbm9kZSkKK0V2
ZW50TGlzdGVuZXIqIEtKU1Byb3h5SW1wbDo6Y3JlYXRlU1ZHRXZlbnRIYW5kbGVyKGNvbnN0IFN0
cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIGNvZGUsIE5vZGVJbXBsICpub2RlKQog
ewogICAgIGluaXRTY3JpcHRJZk5lZWRlZCgpOwogICAgIEpTTG9jayBsb2NrOwotICAgIHJldHVy
biBuZXcgSlNTVkdMYXp5RXZlbnRMaXN0ZW5lcihjb2RlLCBXaW5kb3c6OnJldHJpZXZlV2luZG93
KG1fZnJhbWUpLCBub2RlLCBtX2hhbmRsZXJMaW5lbm8pOworICAgIHJldHVybiBuZXcgSlNTVkdM
YXp5RXZlbnRMaXN0ZW5lcihmdW5jdGlvbk5hbWUsIGNvZGUsIFdpbmRvdzo6cmV0cmlldmVXaW5k
b3cobV9mcmFtZSksIG5vZGUsIG1faGFuZGxlckxpbmVubyk7CiB9CiAjZW5kaWYKIApJbmRleDog
V2ViQ29yZS9raHRtbC9lY21hL2tqc19wcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva2h0
bWwvZWNtYS9ranNfcHJveHkuaAkocmV2aXNpb24gMTMyNzcpCisrKyBXZWJDb3JlL2todG1sL2Vj
bWEva2pzX3Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDkgKzQyLDkgQEAKICAgICB+S0pT
UHJveHlJbXBsKCk7CiAgICAgS0pTOjpKU1ZhbHVlKiBldmFsdWF0ZShjb25zdCBET01TdHJpbmcm
IGZpbGVuYW1lLCBpbnQgYmFzZUxpbmUsIGNvbnN0IERPTVN0cmluZyYgY29kZSwgTm9kZUltcGwq
KTsKICAgICB2b2lkIGNsZWFyKCk7Ci0gICAgRXZlbnRMaXN0ZW5lciogY3JlYXRlSFRNTEV2ZW50
SGFuZGxlcihjb25zdCBET01TdHJpbmcmIGNvZGUsIE5vZGVJbXBsKik7CisgICAgRXZlbnRMaXN0
ZW5lciogY3JlYXRlSFRNTEV2ZW50SGFuZGxlcihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwg
Y29uc3QgU3RyaW5nJiBjb2RlLCBOb2RlSW1wbCopOwogI2lmIFNWR19TVVBQT1JUCi0gICAgRXZl
bnRMaXN0ZW5lciogY3JlYXRlU1ZHRXZlbnRIYW5kbGVyKGNvbnN0IERPTVN0cmluZyYgY29kZSwg
Tm9kZUltcGwqKTsKKyAgICBFdmVudExpc3RlbmVyKiBjcmVhdGVTVkdFdmVudEhhbmRsZXIoY29u
c3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgY29kZSwgTm9kZUltcGwqKTsK
ICNlbmRpZgogICAgIHZvaWQgZmluaXNoZWRXaXRoRXZlbnQoRXZlbnRJbXBsKik7CiAgICAgS0pT
OjpTY3JpcHRJbnRlcnByZXRlciAqaW50ZXJwcmV0ZXIoKTsKSW5kZXg6IFdlYkNvcmUvZG9tL0Rv
Y3VtZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50SW1wbC5oCShy
ZXZpc2lvbiAxMzI3NykKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50SW1wbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MDUsNyArNDA1LDcgQEAKICAgICB2b2lkIHJlbW92ZVdpbmRvd0V2ZW50TGlzdGVu
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVz
ZUNhcHR1cmUpOwogICAgIGJvb2wgaGFzV2luZG93RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSk7CiAKLSAgICBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGNyZWF0
ZUhUTUxFdmVudExpc3RlbmVyKGNvbnN0IFN0cmluZyYgY29kZSwgTm9kZUltcGwqKTsKKyAgICBQ
YXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGNyZWF0ZUhUTUxFdmVudExpc3RlbmVyKGNvbnN0IFN0
cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIGNvZGUsIE5vZGVJbXBsKik7CiAgICAg
CiAgICAgLyoqCiAgICAgICogU2VhcmNoZXMgdGhyb3VnaCB0aGUgZG9jdW1lbnQsIHN0YXJ0aW5n
IGZyb20gZnJvbU5vZGUsIGZvciB0aGUgbmV4dCBzZWxlY3RhYmxlIGVsZW1lbnQgdGhhdCBjb21l
cyBhZnRlciBmcm9tTm9kZS4KSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50SW1wbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnRJbXBsLmNwcAkocmV2aXNpb24gMTMyNzcp
CisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjkw
LDE4ICsyMjkwLDE4IEBACiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPEV2ZW50
TGlzdGVuZXI+IERvY3VtZW50SW1wbDo6Y3JlYXRlSFRNTEV2ZW50TGlzdGVuZXIoY29uc3QgRE9N
U3RyaW5nJiBjb2RlLCBOb2RlSW1wbCAqbm9kZSkKK1Bhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4g
RG9jdW1lbnRJbXBsOjpjcmVhdGVIVE1MRXZlbnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmIGZ1bmN0
aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBjb2RlLCBOb2RlSW1wbCAqbm9kZSkKIHsKLSAgICBpZiAo
RnJhbWUgKmZybSA9IGZyYW1lKCkpIHsKLSAgICAgICAgaWYgKEtKU1Byb3h5SW1wbCAqcHJveHkg
PSBmcm0tPmpTY3JpcHQoKSkKLSAgICAgICAgICAgIHJldHVybiBwcm94eS0+Y3JlYXRlSFRNTEV2
ZW50SGFuZGxlcihjb2RlLCBub2RlKTsKLSAgICB9CisgICAgaWYgKEZyYW1lKiBmID0gZnJhbWUo
KSkKKyAgICAgICAgaWYgKEtKU1Byb3h5SW1wbCogcHJveHkgPSBmLT5qU2NyaXB0KCkpCisgICAg
ICAgICAgICByZXR1cm4gcHJveHktPmNyZWF0ZUhUTUxFdmVudEhhbmRsZXIoZnVuY3Rpb25OYW1l
LCBjb2RlLCBub2RlKTsKICAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBEb2N1bWVudEltcGw6OnNl
dEhUTUxXaW5kb3dFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBB
dHRyaWJ1dGVJbXBsKiBhdHRyKQogewotICAgIHNldEhUTUxXaW5kb3dFdmVudExpc3RlbmVyKGV2
ZW50VHlwZSwgY3JlYXRlSFRNTEV2ZW50TGlzdGVuZXIoYXR0ci0+dmFsdWUoKSwgMCkpOworICAg
IHNldEhUTUxXaW5kb3dFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwKKyAgICAgICAgY3JlYXRlSFRN
TEV2ZW50TGlzdGVuZXIoYXR0ci0+bG9jYWxOYW1lKCkuZG9tU3RyaW5nKCksIGF0dHItPnZhbHVl
KCksIDApKTsKIH0KIAogdm9pZCBEb2N1bWVudEltcGw6OmRpc3BhdGNoSW1hZ2VMb2FkRXZlbnRT
b29uKEhUTUxJbWFnZUxvYWRlciAqaW1hZ2UpCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdF
bGVtZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRWxlbWVu
dEltcGwuY3BwCShyZXZpc2lvbiAxMzI3NykKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0VsZW1l
bnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw4IEBACiAKIHZvaWQgU1ZH
RWxlbWVudEltcGw6OmFkZFNWR0V2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIGNvbnN0IEF0dHJpYnV0ZUltcGwqIGF0dHIpCiB7Ci0gICAgRWxlbWVudEltcGw6OnNl
dEhUTUxFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgZ2V0RG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0
ZW5zaW9ucygpLT5jcmVhdGVTVkdFdmVudExpc3RlbmVyKGF0dHItPnZhbHVlKCksIHRoaXMpKTsK
KyAgICBzZXRIVE1MRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGdldERvY3VtZW50KCktPmFjY2Vz
c1NWR0V4dGVuc2lvbnMoKS0+CisgICAgICAgIGNyZWF0ZVNWR0V2ZW50TGlzdGVuZXIoYXR0ci0+
bG9jYWxOYW1lKCkuZG9tU3RyaW5nKCksIGF0dHItPnZhbHVlKCksIHRoaXMpKTsKIH0KIAogdm9p
ZCBTVkdFbGVtZW50SW1wbDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlSW1w
bCAqYXR0cikKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnRJbXBsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50SW1wbC5jcHAJKHJl
dmlzaW9uIDEzMjc3KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudEltcGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMjcsNyArMjI3LDggQEAKIHsKICAgICAvLyBGSVhNRTogTm9u
ZSBvZiB0aGVzZSBzaG91bGQgYmUgd2luZG93IGV2ZW50cyBsb25nIHRlcm0uCiAgICAgLy8gT25j
ZSB3ZSBwcm9wZXJ0bHkgc3VwcG9ydCBTVkdMb2FkLCBldGMuCi0gICAgUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IGxpc3RlbmVyID0gZ2V0RG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5j
cmVhdGVTVkdFdmVudExpc3RlbmVyKGF0dHItPnZhbHVlKCksIHRoaXMpOworICAgIFJlZlB0cjxF
dmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IGdldERvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lv
bnMoKS0+CisgICAgICAgIGNyZWF0ZVNWR0V2ZW50TGlzdGVuZXIoYXR0ci0+bG9jYWxOYW1lKCku
ZG9tU3RyaW5nKCksIGF0dHItPnZhbHVlKCksIHRoaXMpOwogICAgIGdldERvY3VtZW50KCktPnNl
dEhUTUxXaW5kb3dFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIucmVsZWFzZSgpKTsK
IH0KIApJbmRleDogV2ViQ29yZS9rc3ZnMi9ldmVudHMvSlNTVkdMYXp5RXZlbnRMaXN0ZW5lci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9ldmVudHMvSlNTVkdMYXp5RXZlbnRMaXN0
ZW5lci5jcHAJKHJldmlzaW9uIDEzMjc3KQorKysgV2ViQ29yZS9rc3ZnMi9ldmVudHMvSlNTVkdM
YXp5RXZlbnRMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1KU1NWR0xhenlFdmVudExpc3RlbmVyOjpKU1NWR0xhenlF
dmVudExpc3RlbmVyKGNvbnN0IERPTVN0cmluZyYgY29kZSwgS0pTOjpXaW5kb3cqIHdpbiwgTm9k
ZUltcGwqIG5vZGUsIGludCBsaW5lbm8pCi0gICAgOiBKU0xhenlFdmVudExpc3RlbmVyKGNvZGUs
IHdpbiwgbm9kZSwgbGluZW5vKQorSlNTVkdMYXp5RXZlbnRMaXN0ZW5lcjo6SlNTVkdMYXp5RXZl
bnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBjb2Rl
LCBXaW5kb3cqIHdpbiwgTm9kZUltcGwqIG5vZGUsIGludCBsaW5lbm8pCisgICAgOiBKU0xhenlF
dmVudExpc3RlbmVyKGZ1bmN0aW9uTmFtZSwgY29kZSwgd2luLCBub2RlLCBsaW5lbm8pCiB7CiB9
CiAKSW5kZXg6IFdlYkNvcmUva3N2ZzIvZXZlbnRzL0pTU1ZHTGF6eUV2ZW50TGlzdGVuZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL2V2ZW50cy9KU1NWR0xhenlFdmVudExpc3RlbmVy
LmgJKHJldmlzaW9uIDEzMjc3KQorKysgV2ViQ29yZS9rc3ZnMi9ldmVudHMvSlNTVkdMYXp5RXZl
bnRMaXN0ZW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSw5IEBACiAKICAgICBjbGFz
cyBKU1NWR0xhenlFdmVudExpc3RlbmVyIDogcHVibGljIEtKUzo6SlNMYXp5RXZlbnRMaXN0ZW5l
ciB7CiAgICAgcHVibGljOgotICAgICAgICBKU1NWR0xhenlFdmVudExpc3RlbmVyKGNvbnN0IERP
TVN0cmluZyYgY29kZSwgS0pTOjpXaW5kb3cqLCBOb2RlSW1wbCosIGludCBsaW5lbm8gPSAwKTsK
KyAgICAgICAgSlNTVkdMYXp5RXZlbnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFt
ZSwgY29uc3QgU3RyaW5nJiBjb2RlLCBLSlM6OldpbmRvdyosIE5vZGVJbXBsKiwgaW50IGxpbmVu
byA9IDApOwogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgS0pTOjpKU1ZhbHVlICpldmVu
dFBhcmFtZXRlck5hbWUoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBLSlM6OkpTVmFsdWUqIGV2
ZW50UGFyYW1ldGVyTmFtZSgpIGNvbnN0OwogICAgIH07CiB9CiAKSW5kZXg6IFdlYkNvcmUva3N2
ZzIvbWlzYy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
a3N2ZzIvbWlzYy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCShyZXZpc2lvbiAxMzI3NykKKysr
IFdlYkNvcmUva3N2ZzIvbWlzYy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MiwxMiArNDIsMTIgQEAKICAgICBkZWxldGUgbV90aW1lU2NoZWR1bGVyOwogfQog
Ci1QYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6Y3JlYXRl
U1ZHRXZlbnRMaXN0ZW5lcihjb25zdCBET01TdHJpbmcmIGNvZGUsIE5vZGVJbXBsICpub2RlKQor
UGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmNyZWF0ZVNW
R0V2ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsCisgICAgY29uc3QgU3Ry
aW5nJiBjb2RlLCBOb2RlSW1wbCAqbm9kZSkKIHsKLSAgICBpZiAoRnJhbWUgKmZyYW1lID0gbV9k
b2MtPmZyYW1lKCkpIHsKLSAgICAgICAgaWYgKEtKU1Byb3h5SW1wbCAqcHJveHkgPSBmcmFtZS0+
alNjcmlwdCgpKQotICAgICAgICAgICAgcmV0dXJuIHByb3h5LT5jcmVhdGVTVkdFdmVudEhhbmRs
ZXIoY29kZSwgbm9kZSk7Ci0gICAgfQorICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX2RvYy0+ZnJh
bWUoKSkKKyAgICAgICAgaWYgKEtKU1Byb3h5SW1wbCogcHJveHkgPSBmcmFtZS0+alNjcmlwdCgp
KQorICAgICAgICAgICAgcmV0dXJuIHByb3h5LT5jcmVhdGVTVkdFdmVudEhhbmRsZXIoZnVuY3Rp
b25OYW1lLCBjb2RlLCBub2RlKTsKICAgICByZXR1cm4gMDsKIH0KIApJbmRleDogV2ViQ29yZS9r
c3ZnMi9taXNjL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
a3N2ZzIvbWlzYy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaAkocmV2aXNpb24gMTMyNzcpCisrKyBX
ZWJDb3JlL2tzdmcyL21pc2MvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDE4ICszMSwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFRpbWVT
Y2hlZHVsZXI7CiBjbGFzcyBEb2N1bWVudEltcGw7CiBjbGFzcyBFdmVudExpc3RlbmVyOwotY2xh
c3MgRE9NU3RyaW5nOwogY2xhc3MgTm9kZUltcGw7CitjbGFzcyBTdHJpbmc7CitjbGFzcyBUaW1l
U2NoZWR1bGVyOwogCiBjbGFzcyBTVkdEb2N1bWVudEV4dGVuc2lvbnMgewogcHVibGljOgogICAg
IFNWR0RvY3VtZW50RXh0ZW5zaW9ucyhEb2N1bWVudEltcGwqKTsKICAgICB+U1ZHRG9jdW1lbnRF
eHRlbnNpb25zKCk7CiAgICAgCi0gICAgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBjcmVhdGVT
VkdFdmVudExpc3RlbmVyKGNvbnN0IERPTVN0cmluZyYgY29kZSwgTm9kZUltcGwqKTsKKyAgICBQ
YXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGNyZWF0ZVNWR0V2ZW50TGlzdGVuZXIoY29uc3QgU3Ry
aW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgY29kZSwgTm9kZUltcGwqKTsKIAogICAg
IFRpbWVTY2hlZHVsZXIqIHRpbWVTY2hlZHVsZXIoKSBjb25zdCB7IHJldHVybiBtX3RpbWVTY2hl
ZHVsZXI7IH0KICAgICAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9ub2RlczJzdHJpbmcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9ub2RlczJzdHJpbmcuY3BwCShyZXZp
c2lvbiAxMzI3NykKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9ub2RlczJzdHJpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MDcsNyArNzA3LDcgQEAKIAogdm9pZCBGdW5jRGVjbE5vZGU6OnN0cmVh
bVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKIHsKLSAgcyA8PCAiZnVuY3Rpb24gIiA8PCBpZGVu
dCA8PCAiKCIgPDwgcGFyYW0gPDwgIikiIDw8IGJvZHk7CisgIHMgPDwgU291cmNlU3RyZWFtOjpF
bmRsIDw8ICJmdW5jdGlvbiAiIDw8IGlkZW50IDw8ICIoIiA8PCBwYXJhbSA8PCAiKSIgPDwgYm9k
eTsKIH0KIAogdm9pZCBGdW5jRXhwck5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29u
c3QKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9vYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL2tqcy9vYmplY3QuY3BwCShyZXZpc2lvbiAxMzI3NykKKysrIEphdmFTY3Jp
cHRDb3JlL2tqcy9vYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTUsMTMgKzQxNSwxMyBA
QAogICByZXR1cm4gZmFsc2U7CiB9CiAKLUpTT2JqZWN0ICpKU09iamVjdDo6Y29uc3RydWN0KEV4
ZWNTdGF0ZSAqLypleGVjKi8sIGNvbnN0IExpc3QgJi8qYXJncyovKQorSlNPYmplY3QgKkpTT2Jq
ZWN0Ojpjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgY29uc3QgTGlzdCYgLyphcmdzKi8pCiB7CiAgIGFz
c2VydChmYWxzZSk7CiAgIHJldHVybiBOVUxMOwogfQogCi1KU09iamVjdCAqSlNPYmplY3Q6OmNv
bnN0cnVjdChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IExpc3QgJmFyZ3MsIGNvbnN0IFVTdHJpbmcg
Ji8qc291cmNlVVJMKi8sIGludCAvKmxpbmVOdW1iZXIqLykKK0pTT2JqZWN0ICpKU09iamVjdDo6
Y29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJncywgY29uc3QgSWRlbnRp
ZmllciYgLypmdW5jdGlvbk5hbWUqLywgY29uc3QgVVN0cmluZyYgLypzb3VyY2VVUkwqLywgaW50
IC8qbGluZU51bWJlciovKQogewogICByZXR1cm4gY29uc3RydWN0KGV4ZWMsIGFyZ3MpOwogfQpJ
bmRleDogSmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0aW9uX29iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL2tqcy9mdW5jdGlvbl9vYmplY3QuaAkocmV2aXNpb24gMTMyNzcpCisr
KyBKYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb25fb2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTY2LDEzICs2NiwxMyBAQAogICAgKi8KICAgY2xhc3MgRnVuY3Rpb25PYmplY3RJbXAgOiBwdWJs
aWMgSW50ZXJuYWxGdW5jdGlvbkltcCB7CiAgIHB1YmxpYzoKLSAgICBGdW5jdGlvbk9iamVjdElt
cChFeGVjU3RhdGUgKmV4ZWMsIEZ1bmN0aW9uUHJvdG90eXBlICpmdW5jUHJvdG8pOworICAgIEZ1
bmN0aW9uT2JqZWN0SW1wKEV4ZWNTdGF0ZSosIEZ1bmN0aW9uUHJvdG90eXBlKik7CiAgICAgdmly
dHVhbCB+RnVuY3Rpb25PYmplY3RJbXAoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpbXBsZW1lbnRz
Q29uc3RydWN0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBKU09iamVjdCAqY29uc3RydWN0KEV4ZWNT
dGF0ZSAqZXhlYywgY29uc3QgTGlzdCAmYXJncywgY29uc3QgVVN0cmluZyAmc291cmNlVVJMLCBp
bnQgbGluZU51bWJlcik7Ci0gICAgdmlydHVhbCBKU09iamVjdCAqY29uc3RydWN0KEV4ZWNTdGF0
ZSAqZXhlYywgY29uc3QgTGlzdCAmYXJncyk7Ci0gICAgdmlydHVhbCBKU1ZhbHVlICpjYWxsQXNG
dW5jdGlvbihFeGVjU3RhdGUgKmV4ZWMsIEpTT2JqZWN0ICp0aGlzT2JqLCBjb25zdCBMaXN0ICZh
cmdzKTsKKyAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgY29uc3Qg
TGlzdCYgYXJncyk7CisgICAgdmlydHVhbCBKU09iamVjdCogY29uc3RydWN0KEV4ZWNTdGF0ZSos
IGNvbnN0IExpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3Qg
VVN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlcik7CisgICAgdmlydHVhbCBKU1ZhbHVl
KiBjYWxsQXNGdW5jdGlvbihFeGVjU3RhdGUqLCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgTGlz
dCYgYXJncyk7CiAgIH07CiAKIH0gLy8gbmFtZXNwYWNlCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9r
anMvZnVuY3Rpb25fb2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMv
ZnVuY3Rpb25fb2JqZWN0LmNwcAkocmV2aXNpb24gMTMyNzcpCisrKyBKYXZhU2NyaXB0Q29yZS9r
anMvZnVuY3Rpb25fb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDcgKzE2NCw3IEBA
CiB9CiAKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgotSlNPYmplY3Qg
KkZ1bmN0aW9uT2JqZWN0SW1wOjpjb25zdHJ1Y3QoRXhlY1N0YXRlICpleGVjLCBjb25zdCBMaXN0
ICZhcmdzLCBjb25zdCBVU3RyaW5nICZzb3VyY2VVUkwsIGludCBsaW5lTnVtYmVyKQorSlNPYmpl
Y3QgKkZ1bmN0aW9uT2JqZWN0SW1wOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBM
aXN0JiBhcmdzLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFVTdHJpbmcm
IHNvdXJjZVVSTCwgaW50IGxpbmVOdW1iZXIpCiB7CiAgIFVTdHJpbmcgcCgiIik7CiAgIFVTdHJp
bmcgYm9keTsKQEAgLTIwNyw3ICsyMDcsNyBAQAogICBzY29wZUNoYWluLnB1c2goZXhlYy0+ZHlu
YW1pY0ludGVycHJldGVyKCktPmdsb2JhbE9iamVjdCgpKTsKICAgRnVuY3Rpb25Cb2R5Tm9kZSAq
Ym9keU5vZGUgPSBwcm9nTm9kZS5nZXQoKTsKIAotICBGdW5jdGlvbkltcCAqZmltcCA9IG5ldyBE
ZWNsYXJlZEZ1bmN0aW9uSW1wKGV4ZWMsIElkZW50aWZpZXI6Om51bGwoKSwgYm9keU5vZGUsIHNj
b3BlQ2hhaW4pOworICBGdW5jdGlvbkltcCAqZmltcCA9IG5ldyBEZWNsYXJlZEZ1bmN0aW9uSW1w
KGV4ZWMsIGZ1bmN0aW9uTmFtZSwgYm9keU5vZGUsIHNjb3BlQ2hhaW4pOwogICAKICAgLy8gcGFy
c2UgcGFyYW1ldGVyIGxpc3QuIHRocm93IHN5bnRheCBlcnJvciBvbiBpbGxlZ2FsIGlkZW50aWZp
ZXJzCiAgIGludCBsZW4gPSBwLnNpemUoKTsKQEAgLTI1MCw5ICsyNTAsOSBAQAogfQogCiAvLyBF
Q01BIDE1LjMuMiBUaGUgRnVuY3Rpb24gQ29uc3RydWN0b3IKLUpTT2JqZWN0ICpGdW5jdGlvbk9i
amVjdEltcDo6Y29uc3RydWN0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgTGlzdCAmYXJncykKK0pT
T2JqZWN0ICpGdW5jdGlvbk9iamVjdEltcDo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgTGlzdCYgYXJncykKIHsKLSAgcmV0dXJuIEZ1bmN0aW9uT2JqZWN0SW1wOjpjb25zdHJ1Y3Qo
ZXhlYywgYXJncywgVVN0cmluZygpLCAwKTsKKyAgcmV0dXJuIEZ1bmN0aW9uT2JqZWN0SW1wOjpj
b25zdHJ1Y3QoZXhlYywgYXJncywgImFub255bW91cyIsIFVTdHJpbmcoKSwgMCk7CiB9CiAKIC8v
IEVDTUEgMTUuMy4xIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvciBDYWxsZWQgYXMgYSBGdW5jdGlv
bgpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL29iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2tqcy9vYmplY3QuaAkocmV2aXNpb24gMTMyNzcpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ranMvb2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw4ICszNjksOCBAQAogICAgIC8q
KgogICAgICAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBbW0NvbnN0cnVjdF1dIGludGVybmFsIHBy
b3BlcnR5CiAgICAgICovCi0gICAgdmlydHVhbCBKU09iamVjdCAqY29uc3RydWN0KEV4ZWNTdGF0
ZSAqZXhlYywgY29uc3QgTGlzdCAmYXJncyk7Ci0gICAgdmlydHVhbCBKU09iamVjdCAqY29uc3Ry
dWN0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgTGlzdCAmYXJncywgY29uc3QgVVN0cmluZyAmc291
cmNlVVJMLCBpbnQgbGluZU51bWJlcik7CisgICAgdmlydHVhbCBKU09iamVjdCogY29uc3RydWN0
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJncyk7CisgICAgdmlydHVhbCBKU09iamVj
dCogY29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJncywgY29uc3QgSWRl
bnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwsIGludCBsaW5l
TnVtYmVyKTsKIAogICAgIC8qKgogICAgICAqIFdoZXRoZXIgb3Igbm90IHRoZSBvYmplY3QgaW1w
bGVtZW50cyB0aGUgY2FsbCgpIG1ldGhvZC4gSWYgdGhpcyByZXR1cm5zCkluZGV4OiBXZWJDb3Jl
L2todG1sL2h0bWwvSFRNTEVsZW1lbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2to
dG1sL2h0bWwvSFRNTEVsZW1lbnRJbXBsLmNwcCAgICAgIChyZXZpc2lvbiAxMzI3NykKKysrIFdl
YkNvcmUva2h0bWwvaHRtbC9IVE1MRWxlbWVudEltcGwuY3BwICAgICAgKHdvcmtpbmcgY29weSkK
QEAgLTc4OSw3ICs3ODksOCBAQAogCiB2b2lkIEhUTUxFbGVtZW50SW1wbDo6c2V0SFRNTEV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEF0dHJpYnV0ZUltcGwqIGF0
dHIpCiB7Ci0gICAgRWxlbWVudEltcGw6OnNldEhUTUxFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwg
Z2V0RG9jdW1lbnQoKS0+Y3JlYXRlSFRNTEV2ZW50TGlzdGVuZXIoYXR0ci0+dmFsdWUoKSwgdGhp
cykpCjsKKyAgICBFbGVtZW50SW1wbDo6c2V0SFRNTEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLAor
ICAgICAgICBnZXREb2N1bWVudCgpLT5jcmVhdGVIVE1MRXZlbnRMaXN0ZW5lcihhdHRyLT5sb2Nh
bE5hbWUoKS5kb21TdHJpbmcoKSwgYXR0ci0+dmFsdWUoKSwgdGhpcykpOwogfQogCiB9Cg==
</data>
<flag name="review"
          id="1904"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>