<?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>15148</bug_id>
          
          <creation_ts>2007-09-06 00:18:15 -0700</creation_ts>
          <short_desc>Poor performance on crazy DOM raytracer</short_desc>
          <delta_ts>2007-09-09 23:10:42 -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>DOM</component>
          <version>523.x (Safari 3)</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://nontroppo.org/timer/progressive_raytracer.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Smith">catfish.man</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ddkilzer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>894</commentid>
    <comment_count>0</comment_count>
    <who name="David Smith">catfish.man</who>
    <bug_when>2007-09-06 00:18:15 -0700</bug_when>
    <thetext>WebKit loses to Opera by a very large margin on the linked benchmark.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893</commentid>
    <comment_count>1</comment_count>
      <attachid>16205</attachid>
    <who name="David Smith">catfish.man</who>
    <bug_when>2007-09-06 00:23:57 -0700</bug_when>
    <thetext>Created attachment 16205
Speeds up the &quot;full render&quot; from &gt;400 seconds to ~45 seconds for me

Thanks to everyone on irc for their suggestions and prodding :) Particularly the suggestion of using ListHashSet from Maciej.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889</commentid>
    <comment_count>2</comment_count>
      <attachid>16206</attachid>
    <who name="David Smith">catfish.man</who>
    <bug_when>2007-09-06 00:58:44 -0700</bug_when>
    <thetext>Created attachment 16206
Fix my email address, and remove a stray formatting change

Minor tweaks, sorry for the spam.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794</commentid>
    <comment_count>3</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-09-08 05:31:57 -0700</bug_when>
    <thetext>This seems like a gratuitous change:

-        for ( ; (r = it.current()); ++it) {
+        for ( ; (r = it.current()); ++it ) {

There&apos;s no need to use new here, you can just make the Vector a local variable:

+    Vector&lt;RenderObject*&gt;* deadObjects = new Vector&lt;RenderObject*&gt;();

In fact, it might be worthwhile giving it an inline capacity to handle the common case effeciently. Something like:

Vector&lt;RenderObject*, 16&gt; deadObjects;

r- to address these points.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780</commentid>
    <comment_count>4</comment_count>
      <attachid>16229</attachid>
    <who name="David Smith">catfish.man</who>
    <bug_when>2007-09-08 14:47:39 -0700</bug_when>
    <thetext>Created attachment 16229
Addresses review comments

&gt;This seems like a gratuitous change:
&gt;
&gt;-        for ( ; (r = it.current()); ++it) {
&gt;+        for ( ; (r = it.current()); ++it ) {

Oops, leftover from a find &amp; replace style fixup. Fixed.

&gt;There&apos;s no need to use new here, you can just make the Vector a local variable:
&gt;
&gt;+    Vector&lt;RenderObject*&gt;* deadObjects = new Vector&lt;RenderObject*&gt;();
&gt;
&gt;In fact, it might be worthwhile giving it an inline capacity to handle the
&gt;common case effeciently. Something like:
&gt;
&gt;Vector&lt;RenderObject*, 16&gt; deadObjects;

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727</commentid>
    <comment_count>5</comment_count>
      <attachid>16229</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-09-09 20:21:30 -0700</bug_when>
    <thetext>Comment on attachment 16229
Addresses review comments

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728</commentid>
    <comment_count>6</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2007-09-09 20:29:36 -0700</bug_when>
    <thetext>&lt;rdar://problem/5470512&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721</commentid>
    <comment_count>7</comment_count>
    <who name="David Smith">catfish.man</who>
    <bug_when>2007-09-09 23:10:42 -0700</bug_when>
    <thetext>Fixed in r25464</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16205</attachid>
            <date>2007-09-06 00:23:57 -0700</date>
            <delta_ts>2007-09-06 00:58:44 -0700</delta_ts>
            <desc>Speeds up the &quot;full render&quot; from &gt;400 seconds to ~45 seconds for me</desc>
            <filename>crazydomraytracer.txt</filename>
            <type>text/plain</type>
            <size>10047</size>
            <attacher name="David Smith">catfish.man</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTM4MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMDctMDktMDYgIERhdmlkIFNtaXRoICA8c2V0IEVNQUlMX0FERFJF
U1MgZW52aXJvbm1lbnQgdmFyaWFibGU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisgICAgICAgIAorICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTE0OAorICAgICAgICBCdWcgMTUxNDg6IFBvb3IgcGVyZm9ybWFuY2Ugb24gY3Jh
enkgRE9NIHJheXRyYWNlcgorICAgICAgICAKKyAgICAgICAgU3dpdGNoIGRhdGEgc3RydWN0dXJl
cyB0byBhdm9pZCBxdWFkcmF0aWMgYmVoYXZpb3IuCisKKyAgICAgICAgV0FSTklORzogTk8gVEVT
VCBDQVNFUyBBRERFRCBPUiBDSEFOR0VECisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxheW91dFBvc2l0aW9uZWRP
YmplY3RzKTogVXBkYXRlIGZvciBMaXN0SGFzaFNldAorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2s6Om1hcmtQb3NpdGlvbmVkT2JqZWN0c0ZvckxheW91dCk6IFVwZGF0ZSBmb3IgTGlzdEhh
c2hTZXQKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpyZXBhaW50T3ZlcmhhbmdpbmdG
bG9hdHMpOiBVcGRhdGUgZm9yIExpc3RIYXNoU2V0CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9jazo6aW5zZXJ0UG9zaXRpb25lZE9iamVjdCk6IFVzZSBMaXN0SGFzaFNldCB0byBhdm9pZCBl
eHBlbnNpdmUgdW5pcXVlaW5nCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cmVtb3Zl
UG9zaXRpb25lZE9iamVjdCk6IFVwZGF0ZSBmb3IgTGlzdEhhc2hTZXQKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpyZW1vdmVQb3NpdGlvbmVkT2JqZWN0cyk6IFVwZGF0ZSBmb3IgTGlz
dEhhc2hTZXQKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpmbG9hdFJlY3QpOiBVcGRh
dGUgZm9yIExpc3RIYXNoU2V0CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG93ZXN0
UG9zaXRpb24pOiBVcGRhdGUgZm9yIExpc3RIYXNoU2V0CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6cmlnaHRtb3N0UG9zaXRpb24pOiBVcGRhdGUgZm9yIExpc3RIYXNoU2V0CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGVmdG1vc3RQb3NpdGlvbik6IFVwZGF0ZSBmb3Ig
TGlzdEhhc2hTZXQKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpyaWdodEJvdHRvbSk6
IFVwZGF0ZSBmb3IgTGlzdEhhc2hTZXQKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2su
aDogQ2hhbmdlIG1fcG9zaXRpb25lZE9iamVjdHMgZnJvbSBEZXByZWNhdGVkUHRyTGlzdCB0byBM
aXN0SGFzaFNldAorCiAyMDA3LTA5LTA1ICBEYXZpZCBIYXJyaXNvbiAgPGhhcnJpc29uQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZXZpbiBEZWNrZXIuCkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCShyZXZpc2lvbiAyNTM4MSkKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5OCw4ICsxMjk4LDkgQEAgdm9p
ZCBSZW5kZXJCbG9jazo6bGF5b3V0UG9zaXRpb25lZE9iamVjdAogewogICAgIGlmIChtX3Bvc2l0
aW9uZWRPYmplY3RzKSB7CiAgICAgICAgIFJlbmRlck9iamVjdCogcjsKLSAgICAgICAgRGVwcmVj
YXRlZFB0ckxpc3RJdGVyYXRvcjxSZW5kZXJPYmplY3Q+IGl0KCptX3Bvc2l0aW9uZWRPYmplY3Rz
KTsKLSAgICAgICAgZm9yICggOyAociA9IGl0LmN1cnJlbnQoKSk7ICsraXQgKSB7CisgICAgICAg
IEl0ZXJhdG9yIGVuZCA9IG1fcG9zaXRpb25lZE9iamVjdHMtPmVuZCgpOworICAgICAgICBmb3Ig
KEl0ZXJhdG9yIGl0ID0gbV9wb3NpdGlvbmVkT2JqZWN0cy0+YmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7CisgICAgICAgICAgICByID0gKml0OwogICAgICAgICAgICAgLy8gV2hlbiBhIG5vbi1w
b3NpdGlvbmVkIGJsb2NrIGVsZW1lbnQgbW92ZXMsIGl0IG1heSBoYXZlIHBvc2l0aW9uZWQgY2hp
bGRyZW4gdGhhdCBhcmUgaW1wbGljaXRseSBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZQogICAg
ICAgICAgICAgLy8gbm9uLXBvc2l0aW9uZWQgYmxvY2suICBSYXRoZXIgdGhhbiB0cnlpbmcgdG8g
ZGV0ZWN0IGFsbCBvZiB0aGVzZSBtb3ZlbWVudCBjYXNlcywgd2UganVzdCBhbHdheXMgbGF5IG91
dCBwb3NpdGlvbmVkCiAgICAgICAgICAgICAvLyBvYmplY3RzIHRoYXQgYXJlIHBvc2l0aW9uZWQg
aW1wbGljaXRseSBsaWtlIHRoaXMuICBTdWNoIG9iamVjdHMgYXJlIHJhcmUsIGFuZCBzbyBpbiB0
eXBpY2FsIERIVE1MIG1lbnUgdXNhZ2UgKHdoZXJlIGV2ZXJ5dGhpbmcgaXMKQEAgLTEzMjAsOSAr
MTMyMSwxMSBAQCB2b2lkIFJlbmRlckJsb2NrOjptYXJrUG9zaXRpb25lZE9iamVjdHNGCiB7CiAg
ICAgaWYgKG1fcG9zaXRpb25lZE9iamVjdHMpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiByOwot
ICAgICAgICBEZXByZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPFJlbmRlck9iamVjdD4gaXQoKm1fcG9z
aXRpb25lZE9iamVjdHMpOwotICAgICAgICBmb3IgKDsgKHIgPSBpdC5jdXJyZW50KCkpOyArK2l0
KQorICAgICAgICBJdGVyYXRvciBlbmQgPSBtX3Bvc2l0aW9uZWRPYmplY3RzLT5lbmQoKTsKKyAg
ICAgICAgZm9yIChJdGVyYXRvciBpdCA9IG1fcG9zaXRpb25lZE9iamVjdHMtPmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgciA9ICppdDsKICAgICAgICAgICAgIHItPnNl
dENoaWxkTmVlZHNMYXlvdXQodHJ1ZSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTEzNDIs
NyArMTM0NSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnJlcGFpbnRPdmVyaGFuZ2luZ0Zsb2EKICAg
ICAgICAgLy8gRklYTUU6IEF2b2lkIGRpc2FibGluZyBMYXlvdXRTdGF0ZS4gQXQgdGhlIHZlcnkg
bGVhc3QsIGRvbid0IGRpc2FibGUgaXQgZm9yIGZsb2F0cyBvcmlnaW5hdGluZwogICAgICAgICAv
LyBpbiB0aGlzIGJsb2NrLiBCZXR0ZXIgeWV0IHdvdWxkIGJlIHRvIHB1c2ggZXh0cmEgc3RhdGUg
Zm9yIHRoZSBjb250YWluZXJzIG9mIG90aGVyIGZsb2F0cy4KICAgICAgICAgdmlldygpLT5kaXNh
YmxlTGF5b3V0U3RhdGUoKTsKLSAgICAgICAgZm9yICggOyAociA9IGl0LmN1cnJlbnQoKSk7ICsr
aXQpIHsKKyAgICAgICAgZm9yICggOyAociA9IGl0LmN1cnJlbnQoKSk7ICsraXQgKSB7CiAgICAg
ICAgICAgICAvLyBPbmx5IHJlcGFpbnQgdGhlIG9iamVjdCBpZiBpdCBpcyBvdmVyaGFuZ2luZywg
aXMgbm90IGluIGl0cyBvd24gbGF5ZXIsIGFuZAogICAgICAgICAgICAgLy8gaXMgb3VyIHJlc3Bv
bnNpYmlsaXR5IHRvIHBhaW50IChub1BhaW50IGlzbid0IHNldCkuIFdoZW4gcGFpbnRBbGxEZXNj
ZW5kYW50cyBpcyB0cnVlLCB0aGUgbGF0dGVyCiAgICAgICAgICAgICAvLyBjb25kaXRpb24gaXMg
cmVwbGFjZWQgd2l0aCBiZWluZyBhIGRlc2NlbmRhbnQgb2YgdXMuCkBAIC0yMDQzLDM1ICsyMDQ2
LDE2IEBAIGludCBSZW5kZXJCbG9jazo6cmlnaHRTZWxlY3Rpb25PZmZzZXQoUmUKIHZvaWQgUmVu
ZGVyQmxvY2s6Omluc2VydFBvc2l0aW9uZWRPYmplY3QoUmVuZGVyT2JqZWN0ICpvKQogewogICAg
IC8vIENyZWF0ZSB0aGUgbGlzdCBvZiBzcGVjaWFsIG9iamVjdHMgaWYgd2UgZG9uJ3QgYWxlYWR5
IGhhdmUgb25lCi0gICAgaWYgKCFtX3Bvc2l0aW9uZWRPYmplY3RzKSB7Ci0gICAgICAgIG1fcG9z
aXRpb25lZE9iamVjdHMgPSBuZXcgRGVwcmVjYXRlZFB0ckxpc3Q8UmVuZGVyT2JqZWN0PjsKLSAg
ICAgICAgbV9wb3NpdGlvbmVkT2JqZWN0cy0+c2V0QXV0b0RlbGV0ZShmYWxzZSk7Ci0gICAgfQot
ICAgIGVsc2UgewotICAgICAgICAvLyBEb24ndCBpbnNlcnQgdGhlIG9iamVjdCBhZ2FpbiBpZiBp
dCdzIGFscmVhZHkgaW4gdGhlIGxpc3QKLSAgICAgICAgRGVwcmVjYXRlZFB0ckxpc3RJdGVyYXRv
cjxSZW5kZXJPYmplY3Q+IGl0KCptX3Bvc2l0aW9uZWRPYmplY3RzKTsKLSAgICAgICAgUmVuZGVy
T2JqZWN0KiBmOwotICAgICAgICB3aGlsZSAoIChmID0gaXQuY3VycmVudCgpKSApIHsKLSAgICAg
ICAgICAgIGlmIChmID09IG8pIHJldHVybjsKLSAgICAgICAgICAgICsraXQ7Ci0gICAgICAgIH0K
LSAgICB9CisgICAgaWYgKCFtX3Bvc2l0aW9uZWRPYmplY3RzKQorICAgICAgICBtX3Bvc2l0aW9u
ZWRPYmplY3RzID0gbmV3IExpc3RIYXNoU2V0PFJlbmRlck9iamVjdCo+OwogCi0gICAgbV9wb3Np
dGlvbmVkT2JqZWN0cy0+YXBwZW5kKG8pOworICAgIG1fcG9zaXRpb25lZE9iamVjdHMtPmFkZChv
KTsKIH0KIAogdm9pZCBSZW5kZXJCbG9jazo6cmVtb3ZlUG9zaXRpb25lZE9iamVjdChSZW5kZXJP
YmplY3QgKm8pCiB7Ci0gICAgaWYgKG1fcG9zaXRpb25lZE9iamVjdHMpIHsKLSAgICAgICAgRGVw
cmVjYXRlZFB0ckxpc3RJdGVyYXRvcjxSZW5kZXJPYmplY3Q+IGl0KCptX3Bvc2l0aW9uZWRPYmpl
Y3RzKTsKLSAgICAgICAgd2hpbGUgKGl0LmN1cnJlbnQoKSkgewotICAgICAgICAgICAgaWYgKGl0
LmN1cnJlbnQoKSA9PSBvKSB7Ci0gICAgICAgICAgICAgICAgbV9wb3NpdGlvbmVkT2JqZWN0cy0+
cmVtb3ZlUmVmKGl0LmN1cnJlbnQoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgKytpdDsKLSAgICAgICAgfQotICAgIH0KKyAgICBpZiAobV9w
b3NpdGlvbmVkT2JqZWN0cykKKyAgICAgICAgbV9wb3NpdGlvbmVkT2JqZWN0cy0+cmVtb3ZlKG8p
OwogfQogCiB2b2lkIFJlbmRlckJsb2NrOjpyZW1vdmVQb3NpdGlvbmVkT2JqZWN0cyhSZW5kZXJC
bG9jayogbykKQEAgLTIwNzksMjQgKzIwNjMsMzIgQEAgdm9pZCBSZW5kZXJCbG9jazo6cmVtb3Zl
UG9zaXRpb25lZE9iamVjdAogICAgIGlmICghbV9wb3NpdGlvbmVkT2JqZWN0cykKICAgICAgICAg
cmV0dXJuOwogICAgIAotICAgIERlcHJlY2F0ZWRQdHJMaXN0SXRlcmF0b3I8UmVuZGVyT2JqZWN0
PiBpdCgqbV9wb3NpdGlvbmVkT2JqZWN0cyk7Ci0gICAgd2hpbGUgKGl0LmN1cnJlbnQoKSkgewot
ICAgICAgICBpZiAoIW8gfHwgaXQuY3VycmVudCgpLT5pc0Rlc2NlbmRhbnRPZihvKSkgeworICAg
IFJlbmRlck9iamVjdCogcjsKKyAgICAKKyAgICBJdGVyYXRvciBlbmQgPSBtX3Bvc2l0aW9uZWRP
YmplY3RzLT5lbmQoKTsKKyAgICAKKyAgICBWZWN0b3I8UmVuZGVyT2JqZWN0Kj4qIGRlYWRPYmpl
Y3RzID0gbmV3IFZlY3RvcjxSZW5kZXJPYmplY3QqPigpOworCisgICAgZm9yIChJdGVyYXRvciBp
dCA9IG1fcG9zaXRpb25lZE9iamVjdHMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAg
ICAgICByID0gKml0OworICAgICAgICBpZiAoIW8gfHwgci0+aXNEZXNjZW5kYW50T2YobykpIHsK
ICAgICAgICAgICAgIGlmIChvKQotICAgICAgICAgICAgICAgIGl0LmN1cnJlbnQoKS0+c2V0Q2hp
bGROZWVkc0xheW91dCh0cnVlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgci0+c2V0Q2hpbGRO
ZWVkc0xheW91dCh0cnVlLCBmYWxzZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEl0
IGlzIHBhcmVudCBibG9ja3Mgam9iIHRvIGFkZCBwb3NpdGlvbmVkIGNoaWxkIHRvIHBvc2l0aW9u
ZWQgb2JqZWN0cyBsaXN0IG9mIGl0cyBjb250YWluaW5nIGJsb2NrCiAgICAgICAgICAgICAvLyBQ
YXJlbnQgbGF5b3V0IG5lZWRzIHRvIGJlIGludmFsaWRhdGVkIHRvIGVuc3VyZSB0aGlzIGhhcHBl
bnMuCi0gICAgICAgICAgICBSZW5kZXJPYmplY3QqIHAgPSBpdC5jdXJyZW50KCktPnBhcmVudCgp
OworICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBwID0gci0+cGFyZW50KCk7CiAgICAgICAgICAg
ICB3aGlsZSAocCAmJiAhcC0+aXNSZW5kZXJCbG9jaygpKQogICAgICAgICAgICAgICAgIHAgPSBw
LT5wYXJlbnQoKTsKICAgICAgICAgICAgIGlmIChwKQogICAgICAgICAgICAgICAgIHAtPnNldENo
aWxkTmVlZHNMYXlvdXQodHJ1ZSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIG1fcG9zaXRp
b25lZE9iamVjdHMtPnJlbW92ZVJlZihpdC5jdXJyZW50KCkpOwotICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgICsraXQ7CisgICAgICAgICAgICBkZWFkT2JqZWN0cy0+YXBwZW5kKHIpOworICAg
ICAgICB9CiAgICAgfQorICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkZWFkT2Jq
ZWN0cy0+c2l6ZSgpOyBpKyspCisgICAgICAgIG1fcG9zaXRpb25lZE9iamVjdHMtPnJlbW92ZShk
ZWFkT2JqZWN0cy0+YXQoaSkpOwogfQogCiB2b2lkIFJlbmRlckJsb2NrOjppbnNlcnRGbG9hdGlu
Z09iamVjdChSZW5kZXJPYmplY3QgKm8pCkBAIC0yMzg0LDcgKzIzNzYsNyBAQCBJbnRSZWN0IFJl
bmRlckJsb2NrOjpmbG9hdFJlY3QoKSBjb25zdAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IEZsb2F0aW5nT2JqZWN0KiByOwogICAgIERlcHJlY2F0ZWRQdHJMaXN0SXRlcmF0b3I8RmxvYXRp
bmdPYmplY3Q+IGl0KCptX2Zsb2F0aW5nT2JqZWN0cyk7Ci0gICAgZm9yICg7IChyID0gaXQuY3Vy
cmVudCgpKTsgKytpdCkgeworICAgIGZvciAoIDsgKHIgPSBpdC5jdXJyZW50KCkpOyArK2l0ICkg
ewogICAgICAgICBpZiAoIXItPm5vUGFpbnQgJiYgIXItPm5vZGUtPmhhc0xheWVyKCkpIHsKICAg
ICAgICAgICAgIEludFJlY3QgY2hpbGRSZWN0ID0gci0+bm9kZS0+b3ZlcmZsb3dSZWN0KGZhbHNl
KTsKICAgICAgICAgICAgIGNoaWxkUmVjdC5tb3ZlKHItPmxlZnQgKyByLT5ub2RlLT5tYXJnaW5M
ZWZ0KCksIHItPnN0YXJ0WSArIHItPm5vZGUtPm1hcmdpblRvcCgpKTsKQEAgLTI0MDYsOCArMjM5
OCw5IEBAIGludCBSZW5kZXJCbG9jazo6bG93ZXN0UG9zaXRpb24oYm9vbCBpbmMKICAgICAgICAg
CiAgICAgaWYgKG1fcG9zaXRpb25lZE9iamVjdHMpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiBy
OwotICAgICAgICBEZXByZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPFJlbmRlck9iamVjdD4gaXQoKm1f
cG9zaXRpb25lZE9iamVjdHMpOwotICAgICAgICBmb3IgKCA7IChyID0gaXQuY3VycmVudCgpKTsg
KytpdCApIHsKKyAgICAgICAgSXRlcmF0b3IgZW5kID0gbV9wb3NpdGlvbmVkT2JqZWN0cy0+ZW5k
KCk7CisgICAgICAgIGZvciAoSXRlcmF0b3IgaXQgPSBtX3Bvc2l0aW9uZWRPYmplY3RzLT5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIHIgPSAqaXQ7CiAgICAgICAgICAg
ICAvLyBGaXhlZCBwb3NpdGlvbmVkIG9iamVjdHMgZG8gbm90IHNjcm9sbCBhbmQgdGh1cyBzaG91
bGQgbm90IGNvbnN0aXR1dGUKICAgICAgICAgICAgIC8vIHBhcnQgb2YgdGhlIGxvd2VzdCBwb3Np
dGlvbi4KICAgICAgICAgICAgIGlmIChyLT5zdHlsZSgpLT5wb3NpdGlvbigpICE9IEZpeGVkUG9z
aXRpb24pIHsKQEAgLTI0NjAsOCArMjQ1Myw5IEBAIGludCBSZW5kZXJCbG9jazo6cmlnaHRtb3N0
UG9zaXRpb24oYm9vbCAKIAogICAgIGlmIChtX3Bvc2l0aW9uZWRPYmplY3RzKSB7CiAgICAgICAg
IFJlbmRlck9iamVjdCogcjsKLSAgICAgICAgRGVwcmVjYXRlZFB0ckxpc3RJdGVyYXRvcjxSZW5k
ZXJPYmplY3Q+IGl0KCptX3Bvc2l0aW9uZWRPYmplY3RzKTsKLSAgICAgICAgZm9yICggOyAociA9
IGl0LmN1cnJlbnQoKSk7ICsraXQgKSB7CisgICAgICAgIEl0ZXJhdG9yIGVuZCA9IG1fcG9zaXRp
b25lZE9iamVjdHMtPmVuZCgpOworICAgICAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gbV9wb3NpdGlv
bmVkT2JqZWN0cy0+YmVnaW4oKSA7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgciA9
ICppdDsKICAgICAgICAgICAgIC8vIEZpeGVkIHBvc2l0aW9uZWQgb2JqZWN0cyBkbyBub3Qgc2Ny
b2xsIGFuZCB0aHVzIHNob3VsZCBub3QgY29uc3RpdHV0ZQogICAgICAgICAgICAgLy8gcGFydCBv
ZiB0aGUgcmlnaHRtb3N0IHBvc2l0aW9uLgogICAgICAgICAgICAgaWYgKHItPnN0eWxlKCktPnBv
c2l0aW9uKCkgIT0gRml4ZWRQb3NpdGlvbikgewpAQCAtMjUxOSw4ICsyNTEzLDkgQEAgaW50IFJl
bmRlckJsb2NrOjpsZWZ0bW9zdFBvc2l0aW9uKGJvb2wgaQogCiAgICAgaWYgKG1fcG9zaXRpb25l
ZE9iamVjdHMpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiByOwotICAgICAgICBEZXByZWNhdGVk
UHRyTGlzdEl0ZXJhdG9yPFJlbmRlck9iamVjdD4gaXQoKm1fcG9zaXRpb25lZE9iamVjdHMpOwot
ICAgICAgICBmb3IgKCA7IChyID0gaXQuY3VycmVudCgpKTsgKytpdCApIHsKKyAgICAgICAgSXRl
cmF0b3IgZW5kID0gbV9wb3NpdGlvbmVkT2JqZWN0cy0+ZW5kKCk7CisgICAgICAgIGZvciAoSXRl
cmF0b3IgaXQgPSBtX3Bvc2l0aW9uZWRPYmplY3RzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKKyAgICAgICAgICAgIHIgPSAqaXQ7CiAgICAgICAgICAgICAvLyBGaXhlZCBwb3NpdGlvbmVk
IG9iamVjdHMgZG8gbm90IHNjcm9sbCBhbmQgdGh1cyBzaG91bGQgbm90IGNvbnN0aXR1dGUKICAg
ICAgICAgICAgIC8vIHBhcnQgb2YgdGhlIGxlZnRtb3N0IHBvc2l0aW9uLgogICAgICAgICAgICAg
aWYgKHItPnN0eWxlKCktPnBvc2l0aW9uKCkgIT0gRml4ZWRQb3NpdGlvbikgewpAQCAtMjU4Miw3
ICsyNTc3LDcgQEAgUmVuZGVyQmxvY2s6OnJpZ2h0Qm90dG9tKCkKICAgICBpbnQgYm90dG9tPTA7
CiAgICAgRmxvYXRpbmdPYmplY3QqIHI7CiAgICAgRGVwcmVjYXRlZFB0ckxpc3RJdGVyYXRvcjxG
bG9hdGluZ09iamVjdD4gaXQoKm1fZmxvYXRpbmdPYmplY3RzKTsKLSAgICBmb3IgKCA7IChyID0g
aXQuY3VycmVudCgpKTsgKytpdCApCisgICAgZm9yICg7IChyID0gaXQuY3VycmVudCgpKTsgKytp
dCkKICAgICAgICAgaWYgKHItPmVuZFk+Ym90dG9tICYmIHItPnR5cGUoKSA9PSBGbG9hdGluZ09i
amVjdDo6RmxvYXRSaWdodCkKICAgICAgICAgICAgIGJvdHRvbT1yLT5lbmRZOwogCkluZGV4OiBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmgJKHJldmlzaW9uIDI1MzgxKQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1
ZGUgIkdhcFJlY3RzLmgiCiAjaW5jbHVkZSAiUmVuZGVyRmxvdy5oIgogI2luY2x1ZGUgIlJvb3RJ
bmxpbmVCb3guaCIKKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC00NDMsOCArNDQ0LDkgQEAgcHJvdGVjdGVkOgogICAgIC8vIEVuZCBoZWxw
ZXIgZnVuY3Rpb25zIGFuZCBzdHJ1Y3RzIHVzZWQgYnkgbGF5b3V0QmxvY2tDaGlsZHJlbi4KIAog
cHJpdmF0ZToKKyAgICB0eXBlZGVmIExpc3RIYXNoU2V0PFJlbmRlck9iamVjdCo+Ojpjb25zdF9p
dGVyYXRvciBJdGVyYXRvcjsKICAgICBEZXByZWNhdGVkUHRyTGlzdDxGbG9hdGluZ09iamVjdD4q
IG1fZmxvYXRpbmdPYmplY3RzOwotICAgIERlcHJlY2F0ZWRQdHJMaXN0PFJlbmRlck9iamVjdD4q
IG1fcG9zaXRpb25lZE9iamVjdHM7CisgICAgTGlzdEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj4qIG1f
cG9zaXRpb25lZE9iamVjdHM7CiAgICAgICAgICAKICAgICAgLy8gQWxsb2NhdGVkIG9ubHkgd2hl
biBzb21lIG9mIHRoZXNlIGZpZWxkcyBoYXZlIG5vbi1kZWZhdWx0IHZhbHVlcwogICAgICBzdHJ1
Y3QgTWF4TWFyZ2luIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16206</attachid>
            <date>2007-09-06 00:58:44 -0700</date>
            <delta_ts>2007-09-08 14:47:39 -0700</delta_ts>
            <desc>Fix my email address, and remove a stray formatting change</desc>
            <filename>crazydomraytracer.txt</filename>
            <type>text/plain</type>
            <size>9272</size>
            <attacher name="David Smith">catfish.man</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTM4MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMDctMDktMDYgIERhdmlkIFNtaXRoICA8Y2F0ZmlzaC5tYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNDgKKyAg
ICAgICAgQnVnIDE1MTQ4OiBQb29yIHBlcmZvcm1hbmNlIG9uIGNyYXp5IERPTSByYXl0cmFjZXIK
KyAgICAgICAgCisgICAgICAgIFN3aXRjaCBkYXRhIHN0cnVjdHVyZXMgdG8gYXZvaWQgcXVhZHJh
dGljIGJlaGF2aW9yLgorCisgICAgICAgIFdBUk5JTkc6IE5PIFRFU1QgQ0FTRVMgQURERUQgT1Ig
Q0hBTkdFRAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsYXlvdXRQb3NpdGlvbmVkT2JqZWN0cyk6IFVwZGF0ZSBm
b3IgTGlzdEhhc2hTZXQKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjptYXJrUG9zaXRp
b25lZE9iamVjdHNGb3JMYXlvdXQpOiBVcGRhdGUgZm9yIExpc3RIYXNoU2V0CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6aW5zZXJ0UG9zaXRpb25lZE9iamVjdCk6IFVzZSBMaXN0SGFz
aFNldCB0byBhdm9pZCBleHBlbnNpdmUgdW5pcXVlaW5nCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6cmVtb3ZlUG9zaXRpb25lZE9iamVjdCk6IFVwZGF0ZSBmb3IgTGlzdEhhc2hTZXQK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpyZW1vdmVQb3NpdGlvbmVkT2JqZWN0cyk6
IFVwZGF0ZSBmb3IgTGlzdEhhc2hTZXQKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpm
bG9hdFJlY3QpOiBVcGRhdGUgZm9yIExpc3RIYXNoU2V0CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6bG93ZXN0UG9zaXRpb24pOiBVcGRhdGUgZm9yIExpc3RIYXNoU2V0CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cmlnaHRtb3N0UG9zaXRpb24pOiBVcGRhdGUgZm9yIExp
c3RIYXNoU2V0CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGVmdG1vc3RQb3NpdGlv
bik6IFVwZGF0ZSBmb3IgTGlzdEhhc2hTZXQKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
OjpyaWdodEJvdHRvbSk6IFVwZGF0ZSBmb3IgTGlzdEhhc2hTZXQKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2suaDogQ2hhbmdlIG1fcG9zaXRpb25lZE9iamVjdHMgZnJvbSBEZXByZWNh
dGVkUHRyTGlzdCB0byBMaXN0SGFzaFNldAorCiAyMDA3LTA5LTA1ICBEYXZpZCBIYXJyaXNvbiAg
PGhhcnJpc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZXZpbiBEZWNrZXIu
CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCShyZXZpc2lvbiAyNTM4MSkKKysrIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5OCw4
ICsxMjk4LDkgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0UG9zaXRpb25lZE9iamVjdAogewog
ICAgIGlmIChtX3Bvc2l0aW9uZWRPYmplY3RzKSB7CiAgICAgICAgIFJlbmRlck9iamVjdCogcjsK
LSAgICAgICAgRGVwcmVjYXRlZFB0ckxpc3RJdGVyYXRvcjxSZW5kZXJPYmplY3Q+IGl0KCptX3Bv
c2l0aW9uZWRPYmplY3RzKTsKLSAgICAgICAgZm9yICggOyAociA9IGl0LmN1cnJlbnQoKSk7ICsr
aXQgKSB7CisgICAgICAgIEl0ZXJhdG9yIGVuZCA9IG1fcG9zaXRpb25lZE9iamVjdHMtPmVuZCgp
OworICAgICAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gbV9wb3NpdGlvbmVkT2JqZWN0cy0+YmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICByID0gKml0OwogICAgICAgICAgICAg
Ly8gV2hlbiBhIG5vbi1wb3NpdGlvbmVkIGJsb2NrIGVsZW1lbnQgbW92ZXMsIGl0IG1heSBoYXZl
IHBvc2l0aW9uZWQgY2hpbGRyZW4gdGhhdCBhcmUgaW1wbGljaXRseSBwb3NpdGlvbmVkIHJlbGF0
aXZlIHRvIHRoZQogICAgICAgICAgICAgLy8gbm9uLXBvc2l0aW9uZWQgYmxvY2suICBSYXRoZXIg
dGhhbiB0cnlpbmcgdG8gZGV0ZWN0IGFsbCBvZiB0aGVzZSBtb3ZlbWVudCBjYXNlcywgd2UganVz
dCBhbHdheXMgbGF5IG91dCBwb3NpdGlvbmVkCiAgICAgICAgICAgICAvLyBvYmplY3RzIHRoYXQg
YXJlIHBvc2l0aW9uZWQgaW1wbGljaXRseSBsaWtlIHRoaXMuICBTdWNoIG9iamVjdHMgYXJlIHJh
cmUsIGFuZCBzbyBpbiB0eXBpY2FsIERIVE1MIG1lbnUgdXNhZ2UgKHdoZXJlIGV2ZXJ5dGhpbmcg
aXMKQEAgLTEzMjAsOSArMTMyMSwxMSBAQCB2b2lkIFJlbmRlckJsb2NrOjptYXJrUG9zaXRpb25l
ZE9iamVjdHNGCiB7CiAgICAgaWYgKG1fcG9zaXRpb25lZE9iamVjdHMpIHsKICAgICAgICAgUmVu
ZGVyT2JqZWN0KiByOwotICAgICAgICBEZXByZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPFJlbmRlck9i
amVjdD4gaXQoKm1fcG9zaXRpb25lZE9iamVjdHMpOwotICAgICAgICBmb3IgKDsgKHIgPSBpdC5j
dXJyZW50KCkpOyArK2l0KQorICAgICAgICBJdGVyYXRvciBlbmQgPSBtX3Bvc2l0aW9uZWRPYmpl
Y3RzLT5lbmQoKTsKKyAgICAgICAgZm9yIChJdGVyYXRvciBpdCA9IG1fcG9zaXRpb25lZE9iamVj
dHMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgciA9ICppdDsKICAg
ICAgICAgICAgIHItPnNldENoaWxkTmVlZHNMYXlvdXQodHJ1ZSk7CisgICAgICAgIH0KICAgICB9
CiB9CiAKQEAgLTIwNDMsMzUgKzIwNDYsMTYgQEAgaW50IFJlbmRlckJsb2NrOjpyaWdodFNlbGVj
dGlvbk9mZnNldChSZQogdm9pZCBSZW5kZXJCbG9jazo6aW5zZXJ0UG9zaXRpb25lZE9iamVjdChS
ZW5kZXJPYmplY3QgKm8pCiB7CiAgICAgLy8gQ3JlYXRlIHRoZSBsaXN0IG9mIHNwZWNpYWwgb2Jq
ZWN0cyBpZiB3ZSBkb24ndCBhbGVhZHkgaGF2ZSBvbmUKLSAgICBpZiAoIW1fcG9zaXRpb25lZE9i
amVjdHMpIHsKLSAgICAgICAgbV9wb3NpdGlvbmVkT2JqZWN0cyA9IG5ldyBEZXByZWNhdGVkUHRy
TGlzdDxSZW5kZXJPYmplY3Q+OwotICAgICAgICBtX3Bvc2l0aW9uZWRPYmplY3RzLT5zZXRBdXRv
RGVsZXRlKGZhbHNlKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIERvbid0IGluc2Vy
dCB0aGUgb2JqZWN0IGFnYWluIGlmIGl0J3MgYWxyZWFkeSBpbiB0aGUgbGlzdAotICAgICAgICBE
ZXByZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPFJlbmRlck9iamVjdD4gaXQoKm1fcG9zaXRpb25lZE9i
amVjdHMpOwotICAgICAgICBSZW5kZXJPYmplY3QqIGY7Ci0gICAgICAgIHdoaWxlICggKGYgPSBp
dC5jdXJyZW50KCkpICkgewotICAgICAgICAgICAgaWYgKGYgPT0gbykgcmV0dXJuOwotICAgICAg
ICAgICAgKytpdDsKLSAgICAgICAgfQotICAgIH0KKyAgICBpZiAoIW1fcG9zaXRpb25lZE9iamVj
dHMpCisgICAgICAgIG1fcG9zaXRpb25lZE9iamVjdHMgPSBuZXcgTGlzdEhhc2hTZXQ8UmVuZGVy
T2JqZWN0Kj47CiAKLSAgICBtX3Bvc2l0aW9uZWRPYmplY3RzLT5hcHBlbmQobyk7CisgICAgbV9w
b3NpdGlvbmVkT2JqZWN0cy0+YWRkKG8pOwogfQogCiB2b2lkIFJlbmRlckJsb2NrOjpyZW1vdmVQ
b3NpdGlvbmVkT2JqZWN0KFJlbmRlck9iamVjdCAqbykKIHsKLSAgICBpZiAobV9wb3NpdGlvbmVk
T2JqZWN0cykgewotICAgICAgICBEZXByZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPFJlbmRlck9iamVj
dD4gaXQoKm1fcG9zaXRpb25lZE9iamVjdHMpOwotICAgICAgICB3aGlsZSAoaXQuY3VycmVudCgp
KSB7Ci0gICAgICAgICAgICBpZiAoaXQuY3VycmVudCgpID09IG8pIHsKLSAgICAgICAgICAgICAg
ICBtX3Bvc2l0aW9uZWRPYmplY3RzLT5yZW1vdmVSZWYoaXQuY3VycmVudCgpKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICArK2l0OwotICAgICAg
ICB9Ci0gICAgfQorICAgIGlmIChtX3Bvc2l0aW9uZWRPYmplY3RzKQorICAgICAgICBtX3Bvc2l0
aW9uZWRPYmplY3RzLT5yZW1vdmUobyk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2s6OnJlbW92ZVBv
c2l0aW9uZWRPYmplY3RzKFJlbmRlckJsb2NrKiBvKQpAQCAtMjA3OSwyNCArMjA2MywzMiBAQCB2
b2lkIFJlbmRlckJsb2NrOjpyZW1vdmVQb3NpdGlvbmVkT2JqZWN0CiAgICAgaWYgKCFtX3Bvc2l0
aW9uZWRPYmplY3RzKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgRGVwcmVjYXRlZFB0ckxp
c3RJdGVyYXRvcjxSZW5kZXJPYmplY3Q+IGl0KCptX3Bvc2l0aW9uZWRPYmplY3RzKTsKLSAgICB3
aGlsZSAoaXQuY3VycmVudCgpKSB7Ci0gICAgICAgIGlmICghbyB8fCBpdC5jdXJyZW50KCktPmlz
RGVzY2VuZGFudE9mKG8pKSB7CisgICAgUmVuZGVyT2JqZWN0KiByOworICAgIAorICAgIEl0ZXJh
dG9yIGVuZCA9IG1fcG9zaXRpb25lZE9iamVjdHMtPmVuZCgpOworICAgIAorICAgIFZlY3RvcjxS
ZW5kZXJPYmplY3QqPiogZGVhZE9iamVjdHMgPSBuZXcgVmVjdG9yPFJlbmRlck9iamVjdCo+KCk7
CisKKyAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gbV9wb3NpdGlvbmVkT2JqZWN0cy0+YmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIHIgPSAqaXQ7CisgICAgICAgIGlmICghbyB8fCBy
LT5pc0Rlc2NlbmRhbnRPZihvKSkgewogICAgICAgICAgICAgaWYgKG8pCi0gICAgICAgICAgICAg
ICAgaXQuY3VycmVudCgpLT5zZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUsIGZhbHNlKTsKKyAgICAg
ICAgICAgICAgICByLT5zZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUsIGZhbHNlKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgLy8gSXQgaXMgcGFyZW50IGJsb2NrcyBqb2IgdG8gYWRkIHBvc2l0
aW9uZWQgY2hpbGQgdG8gcG9zaXRpb25lZCBvYmplY3RzIGxpc3Qgb2YgaXRzIGNvbnRhaW5pbmcg
YmxvY2sKICAgICAgICAgICAgIC8vIFBhcmVudCBsYXlvdXQgbmVlZHMgdG8gYmUgaW52YWxpZGF0
ZWQgdG8gZW5zdXJlIHRoaXMgaGFwcGVucy4KLSAgICAgICAgICAgIFJlbmRlck9iamVjdCogcCA9
IGl0LmN1cnJlbnQoKS0+cGFyZW50KCk7CisgICAgICAgICAgICBSZW5kZXJPYmplY3QqIHAgPSBy
LT5wYXJlbnQoKTsKICAgICAgICAgICAgIHdoaWxlIChwICYmICFwLT5pc1JlbmRlckJsb2NrKCkp
CiAgICAgICAgICAgICAgICAgcCA9IHAtPnBhcmVudCgpOwogICAgICAgICAgICAgaWYgKHApCiAg
ICAgICAgICAgICAgICAgcC0+c2V0Q2hpbGROZWVkc0xheW91dCh0cnVlKTsKICAgICAgICAgICAg
IAotICAgICAgICAgICAgbV9wb3NpdGlvbmVkT2JqZWN0cy0+cmVtb3ZlUmVmKGl0LmN1cnJlbnQo
KSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgKytpdDsKKyAgICAgICAgICAgIGRlYWRP
YmplY3RzLT5hcHBlbmQocik7CisgICAgICAgIH0KICAgICB9CisgICAgCisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGRlYWRPYmplY3RzLT5zaXplKCk7IGkrKykKKyAgICAgICAgbV9wb3Np
dGlvbmVkT2JqZWN0cy0+cmVtb3ZlKGRlYWRPYmplY3RzLT5hdChpKSk7CiB9CiAKIHZvaWQgUmVu
ZGVyQmxvY2s6Omluc2VydEZsb2F0aW5nT2JqZWN0KFJlbmRlck9iamVjdCAqbykKQEAgLTIzODQs
NyArMjM3Niw3IEBAIEludFJlY3QgUmVuZGVyQmxvY2s6OmZsb2F0UmVjdCgpIGNvbnN0CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgRmxvYXRpbmdPYmplY3QqIHI7CiAgICAgRGVwcmVjYXRl
ZFB0ckxpc3RJdGVyYXRvcjxGbG9hdGluZ09iamVjdD4gaXQoKm1fZmxvYXRpbmdPYmplY3RzKTsK
LSAgICBmb3IgKDsgKHIgPSBpdC5jdXJyZW50KCkpOyArK2l0KSB7CisgICAgZm9yICggOyAociA9
IGl0LmN1cnJlbnQoKSk7ICsraXQgKSB7CiAgICAgICAgIGlmICghci0+bm9QYWludCAmJiAhci0+
bm9kZS0+aGFzTGF5ZXIoKSkgewogICAgICAgICAgICAgSW50UmVjdCBjaGlsZFJlY3QgPSByLT5u
b2RlLT5vdmVyZmxvd1JlY3QoZmFsc2UpOwogICAgICAgICAgICAgY2hpbGRSZWN0Lm1vdmUoci0+
bGVmdCArIHItPm5vZGUtPm1hcmdpbkxlZnQoKSwgci0+c3RhcnRZICsgci0+bm9kZS0+bWFyZ2lu
VG9wKCkpOwpAQCAtMjQwNiw4ICsyMzk4LDkgQEAgaW50IFJlbmRlckJsb2NrOjpsb3dlc3RQb3Np
dGlvbihib29sIGluYwogICAgICAgICAKICAgICBpZiAobV9wb3NpdGlvbmVkT2JqZWN0cykgewog
ICAgICAgICBSZW5kZXJPYmplY3QqIHI7Ci0gICAgICAgIERlcHJlY2F0ZWRQdHJMaXN0SXRlcmF0
b3I8UmVuZGVyT2JqZWN0PiBpdCgqbV9wb3NpdGlvbmVkT2JqZWN0cyk7Ci0gICAgICAgIGZvciAo
IDsgKHIgPSBpdC5jdXJyZW50KCkpOyArK2l0ICkgeworICAgICAgICBJdGVyYXRvciBlbmQgPSBt
X3Bvc2l0aW9uZWRPYmplY3RzLT5lbmQoKTsKKyAgICAgICAgZm9yIChJdGVyYXRvciBpdCA9IG1f
cG9zaXRpb25lZE9iamVjdHMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAg
ICAgciA9ICppdDsKICAgICAgICAgICAgIC8vIEZpeGVkIHBvc2l0aW9uZWQgb2JqZWN0cyBkbyBu
b3Qgc2Nyb2xsIGFuZCB0aHVzIHNob3VsZCBub3QgY29uc3RpdHV0ZQogICAgICAgICAgICAgLy8g
cGFydCBvZiB0aGUgbG93ZXN0IHBvc2l0aW9uLgogICAgICAgICAgICAgaWYgKHItPnN0eWxlKCkt
PnBvc2l0aW9uKCkgIT0gRml4ZWRQb3NpdGlvbikgewpAQCAtMjQ2MCw4ICsyNDUzLDkgQEAgaW50
IFJlbmRlckJsb2NrOjpyaWdodG1vc3RQb3NpdGlvbihib29sIAogCiAgICAgaWYgKG1fcG9zaXRp
b25lZE9iamVjdHMpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiByOwotICAgICAgICBEZXByZWNh
dGVkUHRyTGlzdEl0ZXJhdG9yPFJlbmRlck9iamVjdD4gaXQoKm1fcG9zaXRpb25lZE9iamVjdHMp
OwotICAgICAgICBmb3IgKCA7IChyID0gaXQuY3VycmVudCgpKTsgKytpdCApIHsKKyAgICAgICAg
SXRlcmF0b3IgZW5kID0gbV9wb3NpdGlvbmVkT2JqZWN0cy0+ZW5kKCk7CisgICAgICAgIGZvciAo
SXRlcmF0b3IgaXQgPSBtX3Bvc2l0aW9uZWRPYmplY3RzLT5iZWdpbigpIDsgaXQgIT0gZW5kOyAr
K2l0KSB7CisgICAgICAgICAgICByID0gKml0OwogICAgICAgICAgICAgLy8gRml4ZWQgcG9zaXRp
b25lZCBvYmplY3RzIGRvIG5vdCBzY3JvbGwgYW5kIHRodXMgc2hvdWxkIG5vdCBjb25zdGl0dXRl
CiAgICAgICAgICAgICAvLyBwYXJ0IG9mIHRoZSByaWdodG1vc3QgcG9zaXRpb24uCiAgICAgICAg
ICAgICBpZiAoci0+c3R5bGUoKS0+cG9zaXRpb24oKSAhPSBGaXhlZFBvc2l0aW9uKSB7CkBAIC0y
NTE5LDggKzI1MTMsOSBAQCBpbnQgUmVuZGVyQmxvY2s6OmxlZnRtb3N0UG9zaXRpb24oYm9vbCBp
CiAKICAgICBpZiAobV9wb3NpdGlvbmVkT2JqZWN0cykgewogICAgICAgICBSZW5kZXJPYmplY3Qq
IHI7Ci0gICAgICAgIERlcHJlY2F0ZWRQdHJMaXN0SXRlcmF0b3I8UmVuZGVyT2JqZWN0PiBpdCgq
bV9wb3NpdGlvbmVkT2JqZWN0cyk7Ci0gICAgICAgIGZvciAoIDsgKHIgPSBpdC5jdXJyZW50KCkp
OyArK2l0ICkgeworICAgICAgICBJdGVyYXRvciBlbmQgPSBtX3Bvc2l0aW9uZWRPYmplY3RzLT5l
bmQoKTsKKyAgICAgICAgZm9yIChJdGVyYXRvciBpdCA9IG1fcG9zaXRpb25lZE9iamVjdHMtPmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgciA9ICppdDsKICAgICAgICAg
ICAgIC8vIEZpeGVkIHBvc2l0aW9uZWQgb2JqZWN0cyBkbyBub3Qgc2Nyb2xsIGFuZCB0aHVzIHNo
b3VsZCBub3QgY29uc3RpdHV0ZQogICAgICAgICAgICAgLy8gcGFydCBvZiB0aGUgbGVmdG1vc3Qg
cG9zaXRpb24uCiAgICAgICAgICAgICBpZiAoci0+c3R5bGUoKS0+cG9zaXRpb24oKSAhPSBGaXhl
ZFBvc2l0aW9uKSB7CkBAIC0yNTgyLDcgKzI1NzcsNyBAQCBSZW5kZXJCbG9jazo6cmlnaHRCb3R0
b20oKQogICAgIGludCBib3R0b209MDsKICAgICBGbG9hdGluZ09iamVjdCogcjsKICAgICBEZXBy
ZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPEZsb2F0aW5nT2JqZWN0PiBpdCgqbV9mbG9hdGluZ09iamVj
dHMpOwotICAgIGZvciAoIDsgKHIgPSBpdC5jdXJyZW50KCkpOyArK2l0ICkKKyAgICBmb3IgKDsg
KHIgPSBpdC5jdXJyZW50KCkpOyArK2l0KQogICAgICAgICBpZiAoci0+ZW5kWT5ib3R0b20gJiYg
ci0+dHlwZSgpID09IEZsb2F0aW5nT2JqZWN0OjpGbG9hdFJpZ2h0KQogICAgICAgICAgICAgYm90
dG9tPXItPmVuZFk7CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkocmV2aXNpb24gMjUz
ODEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiR2FwUmVjdHMuaCIKICNpbmNsdWRlICJSZW5kZXJG
bG93LmgiCiAjaW5jbHVkZSAiUm9vdElubGluZUJveC5oIgorI2luY2x1ZGUgPHd0Zi9MaXN0SGFz
aFNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ0Myw4ICs0NDQsOSBAQCBwcm90
ZWN0ZWQ6CiAgICAgLy8gRW5kIGhlbHBlciBmdW5jdGlvbnMgYW5kIHN0cnVjdHMgdXNlZCBieSBs
YXlvdXRCbG9ja0NoaWxkcmVuLgogCiBwcml2YXRlOgorICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8
UmVuZGVyT2JqZWN0Kj46OmNvbnN0X2l0ZXJhdG9yIEl0ZXJhdG9yOwogICAgIERlcHJlY2F0ZWRQ
dHJMaXN0PEZsb2F0aW5nT2JqZWN0PiogbV9mbG9hdGluZ09iamVjdHM7Ci0gICAgRGVwcmVjYXRl
ZFB0ckxpc3Q8UmVuZGVyT2JqZWN0PiogbV9wb3NpdGlvbmVkT2JqZWN0czsKKyAgICBMaXN0SGFz
aFNldDxSZW5kZXJPYmplY3QqPiogbV9wb3NpdGlvbmVkT2JqZWN0czsKICAgICAgICAgIAogICAg
ICAvLyBBbGxvY2F0ZWQgb25seSB3aGVuIHNvbWUgb2YgdGhlc2UgZmllbGRzIGhhdmUgbm9uLWRl
ZmF1bHQgdmFsdWVzCiAgICAgIHN0cnVjdCBNYXhNYXJnaW4gewo=
</data>
<flag name="review"
          id="6816"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16229</attachid>
            <date>2007-09-08 14:47:39 -0700</date>
            <delta_ts>2007-09-09 20:21:30 -0700</delta_ts>
            <desc>Addresses review comments</desc>
            <filename>crazy-dom-raytracer.txt</filename>
            <type>text/plain</type>
            <size>8384</size>
            <attacher name="David Smith">catfish.man</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTQ0NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMDctMDktMDggIERhdmlkIFNtaXRoICA8Y2F0ZmlzaC5tYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNDgKKyAg
ICAgICAgQnVnIDE1MTQ4OiBQb29yIHBlcmZvcm1hbmNlIG9uIGNyYXp5IERPTSByYXl0cmFjZXIK
KyAgICAgICAgCisgICAgICAgIFN3aXRjaCBkYXRhIHN0cnVjdHVyZXMgdG8gYXZvaWQgcXVhZHJh
dGljIGJlaGF2aW9yLgorCisgICAgICAgIFdBUk5JTkc6IE5PIFRFU1QgQ0FTRVMgQURERUQgT1Ig
Q0hBTkdFRAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsYXlvdXRQb3NpdGlvbmVkT2JqZWN0cyk6IFVwZGF0ZSBm
b3IgTGlzdEhhc2hTZXQKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjptYXJrUG9zaXRp
b25lZE9iamVjdHNGb3JMYXlvdXQpOiBVcGRhdGUgZm9yIExpc3RIYXNoU2V0CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6aW5zZXJ0UG9zaXRpb25lZE9iamVjdCk6IFVzZSBMaXN0SGFz
aFNldCB0byBhdm9pZCBleHBlbnNpdmUgdW5pcXVlaW5nCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6cmVtb3ZlUG9zaXRpb25lZE9iamVjdCk6IFVwZGF0ZSBmb3IgTGlzdEhhc2hTZXQK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpyZW1vdmVQb3NpdGlvbmVkT2JqZWN0cyk6
IFVwZGF0ZSBmb3IgTGlzdEhhc2hTZXQKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjps
b3dlc3RQb3NpdGlvbik6IFVwZGF0ZSBmb3IgTGlzdEhhc2hTZXQKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrOjpyaWdodG1vc3RQb3NpdGlvbik6IFVwZGF0ZSBmb3IgTGlzdEhhc2hTZXQK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsZWZ0bW9zdFBvc2l0aW9uKTogVXBkYXRl
IGZvciBMaXN0SGFzaFNldAorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnJpZ2h0Qm90
dG9tKTogVXBkYXRlIGZvciBMaXN0SGFzaFNldAorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
bG9jay5oOiBDaGFuZ2UgbV9wb3NpdGlvbmVkT2JqZWN0cyBmcm9tIERlcHJlY2F0ZWRQdHJMaXN0
IHRvIExpc3RIYXNoU2V0CisKIDIwMDctMDktMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeCBmb3Igbm9uLU1hYyBwbGF0Zm9ybXMgdGhhdCB1
c2UgSWNvbiBEYXRhYmFzZQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNp
b24gMjU0NDIpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyOTgsOCArMTI5OCw5IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dFBvc2l0
aW9uZWRPYmplY3QKIHsKICAgICBpZiAobV9wb3NpdGlvbmVkT2JqZWN0cykgewogICAgICAgICBS
ZW5kZXJPYmplY3QqIHI7Ci0gICAgICAgIERlcHJlY2F0ZWRQdHJMaXN0SXRlcmF0b3I8UmVuZGVy
T2JqZWN0PiBpdCgqbV9wb3NpdGlvbmVkT2JqZWN0cyk7Ci0gICAgICAgIGZvciAoIDsgKHIgPSBp
dC5jdXJyZW50KCkpOyArK2l0ICkgeworICAgICAgICBJdGVyYXRvciBlbmQgPSBtX3Bvc2l0aW9u
ZWRPYmplY3RzLT5lbmQoKTsKKyAgICAgICAgZm9yIChJdGVyYXRvciBpdCA9IG1fcG9zaXRpb25l
ZE9iamVjdHMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgciA9ICpp
dDsKICAgICAgICAgICAgIC8vIFdoZW4gYSBub24tcG9zaXRpb25lZCBibG9jayBlbGVtZW50IG1v
dmVzLCBpdCBtYXkgaGF2ZSBwb3NpdGlvbmVkIGNoaWxkcmVuIHRoYXQgYXJlIGltcGxpY2l0bHkg
cG9zaXRpb25lZCByZWxhdGl2ZSB0byB0aGUKICAgICAgICAgICAgIC8vIG5vbi1wb3NpdGlvbmVk
IGJsb2NrLiAgUmF0aGVyIHRoYW4gdHJ5aW5nIHRvIGRldGVjdCBhbGwgb2YgdGhlc2UgbW92ZW1l
bnQgY2FzZXMsIHdlIGp1c3QgYWx3YXlzIGxheSBvdXQgcG9zaXRpb25lZAogICAgICAgICAgICAg
Ly8gb2JqZWN0cyB0aGF0IGFyZSBwb3NpdGlvbmVkIGltcGxpY2l0bHkgbGlrZSB0aGlzLiAgU3Vj
aCBvYmplY3RzIGFyZSByYXJlLCBhbmQgc28gaW4gdHlwaWNhbCBESFRNTCBtZW51IHVzYWdlICh3
aGVyZSBldmVyeXRoaW5nIGlzCkBAIC0xMzIwLDkgKzEzMjEsMTEgQEAgdm9pZCBSZW5kZXJCbG9j
azo6bWFya1Bvc2l0aW9uZWRPYmplY3RzRgogewogICAgIGlmIChtX3Bvc2l0aW9uZWRPYmplY3Rz
KSB7CiAgICAgICAgIFJlbmRlck9iamVjdCogcjsKLSAgICAgICAgRGVwcmVjYXRlZFB0ckxpc3RJ
dGVyYXRvcjxSZW5kZXJPYmplY3Q+IGl0KCptX3Bvc2l0aW9uZWRPYmplY3RzKTsKLSAgICAgICAg
Zm9yICg7IChyID0gaXQuY3VycmVudCgpKTsgKytpdCkKKyAgICAgICAgSXRlcmF0b3IgZW5kID0g
bV9wb3NpdGlvbmVkT2JqZWN0cy0+ZW5kKCk7CisgICAgICAgIGZvciAoSXRlcmF0b3IgaXQgPSBt
X3Bvc2l0aW9uZWRPYmplY3RzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAg
ICAgIHIgPSAqaXQ7CiAgICAgICAgICAgICByLT5zZXRDaGlsZE5lZWRzTGF5b3V0KHRydWUpOwor
ICAgICAgICB9CiAgICAgfQogfQogCkBAIC0yMDQzLDM1ICsyMDQ2LDE2IEBAIGludCBSZW5kZXJC
bG9jazo6cmlnaHRTZWxlY3Rpb25PZmZzZXQoUmUKIHZvaWQgUmVuZGVyQmxvY2s6Omluc2VydFBv
c2l0aW9uZWRPYmplY3QoUmVuZGVyT2JqZWN0ICpvKQogewogICAgIC8vIENyZWF0ZSB0aGUgbGlz
dCBvZiBzcGVjaWFsIG9iamVjdHMgaWYgd2UgZG9uJ3QgYWxlYWR5IGhhdmUgb25lCi0gICAgaWYg
KCFtX3Bvc2l0aW9uZWRPYmplY3RzKSB7Ci0gICAgICAgIG1fcG9zaXRpb25lZE9iamVjdHMgPSBu
ZXcgRGVwcmVjYXRlZFB0ckxpc3Q8UmVuZGVyT2JqZWN0PjsKLSAgICAgICAgbV9wb3NpdGlvbmVk
T2JqZWN0cy0+c2V0QXV0b0RlbGV0ZShmYWxzZSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAg
ICAvLyBEb24ndCBpbnNlcnQgdGhlIG9iamVjdCBhZ2FpbiBpZiBpdCdzIGFscmVhZHkgaW4gdGhl
IGxpc3QKLSAgICAgICAgRGVwcmVjYXRlZFB0ckxpc3RJdGVyYXRvcjxSZW5kZXJPYmplY3Q+IGl0
KCptX3Bvc2l0aW9uZWRPYmplY3RzKTsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBmOwotICAgICAg
ICB3aGlsZSAoIChmID0gaXQuY3VycmVudCgpKSApIHsKLSAgICAgICAgICAgIGlmIChmID09IG8p
IHJldHVybjsKLSAgICAgICAgICAgICsraXQ7Ci0gICAgICAgIH0KLSAgICB9CisgICAgaWYgKCFt
X3Bvc2l0aW9uZWRPYmplY3RzKQorICAgICAgICBtX3Bvc2l0aW9uZWRPYmplY3RzID0gbmV3IExp
c3RIYXNoU2V0PFJlbmRlck9iamVjdCo+OwogCi0gICAgbV9wb3NpdGlvbmVkT2JqZWN0cy0+YXBw
ZW5kKG8pOworICAgIG1fcG9zaXRpb25lZE9iamVjdHMtPmFkZChvKTsKIH0KIAogdm9pZCBSZW5k
ZXJCbG9jazo6cmVtb3ZlUG9zaXRpb25lZE9iamVjdChSZW5kZXJPYmplY3QgKm8pCiB7Ci0gICAg
aWYgKG1fcG9zaXRpb25lZE9iamVjdHMpIHsKLSAgICAgICAgRGVwcmVjYXRlZFB0ckxpc3RJdGVy
YXRvcjxSZW5kZXJPYmplY3Q+IGl0KCptX3Bvc2l0aW9uZWRPYmplY3RzKTsKLSAgICAgICAgd2hp
bGUgKGl0LmN1cnJlbnQoKSkgewotICAgICAgICAgICAgaWYgKGl0LmN1cnJlbnQoKSA9PSBvKSB7
Ci0gICAgICAgICAgICAgICAgbV9wb3NpdGlvbmVkT2JqZWN0cy0+cmVtb3ZlUmVmKGl0LmN1cnJl
bnQoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgKytpdDsKLSAgICAgICAgfQotICAgIH0KKyAgICBpZiAobV9wb3NpdGlvbmVkT2JqZWN0cykK
KyAgICAgICAgbV9wb3NpdGlvbmVkT2JqZWN0cy0+cmVtb3ZlKG8pOwogfQogCiB2b2lkIFJlbmRl
ckJsb2NrOjpyZW1vdmVQb3NpdGlvbmVkT2JqZWN0cyhSZW5kZXJCbG9jayogbykKQEAgLTIwNzks
MjQgKzIwNjMsMzIgQEAgdm9pZCBSZW5kZXJCbG9jazo6cmVtb3ZlUG9zaXRpb25lZE9iamVjdAog
ICAgIGlmICghbV9wb3NpdGlvbmVkT2JqZWN0cykKICAgICAgICAgcmV0dXJuOwogICAgIAotICAg
IERlcHJlY2F0ZWRQdHJMaXN0SXRlcmF0b3I8UmVuZGVyT2JqZWN0PiBpdCgqbV9wb3NpdGlvbmVk
T2JqZWN0cyk7Ci0gICAgd2hpbGUgKGl0LmN1cnJlbnQoKSkgewotICAgICAgICBpZiAoIW8gfHwg
aXQuY3VycmVudCgpLT5pc0Rlc2NlbmRhbnRPZihvKSkgeworICAgIFJlbmRlck9iamVjdCogcjsK
KyAgICAKKyAgICBJdGVyYXRvciBlbmQgPSBtX3Bvc2l0aW9uZWRPYmplY3RzLT5lbmQoKTsKKyAg
ICAKKyAgICBWZWN0b3I8UmVuZGVyT2JqZWN0KiwgMTY+IGRlYWRPYmplY3RzOworCisgICAgZm9y
IChJdGVyYXRvciBpdCA9IG1fcG9zaXRpb25lZE9iamVjdHMtPmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgeworICAgICAgICByID0gKml0OworICAgICAgICBpZiAoIW8gfHwgci0+aXNEZXNjZW5k
YW50T2YobykpIHsKICAgICAgICAgICAgIGlmIChvKQotICAgICAgICAgICAgICAgIGl0LmN1cnJl
bnQoKS0+c2V0Q2hpbGROZWVkc0xheW91dCh0cnVlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAg
ci0+c2V0Q2hpbGROZWVkc0xheW91dCh0cnVlLCBmYWxzZSk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIC8vIEl0IGlzIHBhcmVudCBibG9ja3Mgam9iIHRvIGFkZCBwb3NpdGlvbmVkIGNoaWxk
IHRvIHBvc2l0aW9uZWQgb2JqZWN0cyBsaXN0IG9mIGl0cyBjb250YWluaW5nIGJsb2NrCiAgICAg
ICAgICAgICAvLyBQYXJlbnQgbGF5b3V0IG5lZWRzIHRvIGJlIGludmFsaWRhdGVkIHRvIGVuc3Vy
ZSB0aGlzIGhhcHBlbnMuCi0gICAgICAgICAgICBSZW5kZXJPYmplY3QqIHAgPSBpdC5jdXJyZW50
KCktPnBhcmVudCgpOworICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBwID0gci0+cGFyZW50KCk7
CiAgICAgICAgICAgICB3aGlsZSAocCAmJiAhcC0+aXNSZW5kZXJCbG9jaygpKQogICAgICAgICAg
ICAgICAgIHAgPSBwLT5wYXJlbnQoKTsKICAgICAgICAgICAgIGlmIChwKQogICAgICAgICAgICAg
ICAgIHAtPnNldENoaWxkTmVlZHNMYXlvdXQodHJ1ZSk7CiAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIG1fcG9zaXRpb25lZE9iamVjdHMtPnJlbW92ZVJlZihpdC5jdXJyZW50KCkpOwotICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICsraXQ7CisgICAgICAgICAgICBkZWFkT2JqZWN0cy5hcHBl
bmQocik7CisgICAgICAgIH0KICAgICB9CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGRlYWRPYmplY3RzLnNpemUoKTsgaSsrKQorICAgICAgICBtX3Bvc2l0aW9uZWRPYmplY3Rz
LT5yZW1vdmUoZGVhZE9iamVjdHMuYXQoaSkpOwogfQogCiB2b2lkIFJlbmRlckJsb2NrOjppbnNl
cnRGbG9hdGluZ09iamVjdChSZW5kZXJPYmplY3QgKm8pCkBAIC0yNDA2LDggKzIzOTgsOSBAQCBp
bnQgUmVuZGVyQmxvY2s6Omxvd2VzdFBvc2l0aW9uKGJvb2wgaW5jCiAgICAgICAgIAogICAgIGlm
IChtX3Bvc2l0aW9uZWRPYmplY3RzKSB7CiAgICAgICAgIFJlbmRlck9iamVjdCogcjsKLSAgICAg
ICAgRGVwcmVjYXRlZFB0ckxpc3RJdGVyYXRvcjxSZW5kZXJPYmplY3Q+IGl0KCptX3Bvc2l0aW9u
ZWRPYmplY3RzKTsKLSAgICAgICAgZm9yICggOyAociA9IGl0LmN1cnJlbnQoKSk7ICsraXQgKSB7
CisgICAgICAgIEl0ZXJhdG9yIGVuZCA9IG1fcG9zaXRpb25lZE9iamVjdHMtPmVuZCgpOworICAg
ICAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gbV9wb3NpdGlvbmVkT2JqZWN0cy0+YmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICByID0gKml0OwogICAgICAgICAgICAgLy8gRml4
ZWQgcG9zaXRpb25lZCBvYmplY3RzIGRvIG5vdCBzY3JvbGwgYW5kIHRodXMgc2hvdWxkIG5vdCBj
b25zdGl0dXRlCiAgICAgICAgICAgICAvLyBwYXJ0IG9mIHRoZSBsb3dlc3QgcG9zaXRpb24uCiAg
ICAgICAgICAgICBpZiAoci0+c3R5bGUoKS0+cG9zaXRpb24oKSAhPSBGaXhlZFBvc2l0aW9uKSB7
CkBAIC0yNDYwLDggKzI0NTMsOSBAQCBpbnQgUmVuZGVyQmxvY2s6OnJpZ2h0bW9zdFBvc2l0aW9u
KGJvb2wgCiAKICAgICBpZiAobV9wb3NpdGlvbmVkT2JqZWN0cykgewogICAgICAgICBSZW5kZXJP
YmplY3QqIHI7Ci0gICAgICAgIERlcHJlY2F0ZWRQdHJMaXN0SXRlcmF0b3I8UmVuZGVyT2JqZWN0
PiBpdCgqbV9wb3NpdGlvbmVkT2JqZWN0cyk7Ci0gICAgICAgIGZvciAoIDsgKHIgPSBpdC5jdXJy
ZW50KCkpOyArK2l0ICkgeworICAgICAgICBJdGVyYXRvciBlbmQgPSBtX3Bvc2l0aW9uZWRPYmpl
Y3RzLT5lbmQoKTsKKyAgICAgICAgZm9yIChJdGVyYXRvciBpdCA9IG1fcG9zaXRpb25lZE9iamVj
dHMtPmJlZ2luKCkgOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIHIgPSAqaXQ7CiAg
ICAgICAgICAgICAvLyBGaXhlZCBwb3NpdGlvbmVkIG9iamVjdHMgZG8gbm90IHNjcm9sbCBhbmQg
dGh1cyBzaG91bGQgbm90IGNvbnN0aXR1dGUKICAgICAgICAgICAgIC8vIHBhcnQgb2YgdGhlIHJp
Z2h0bW9zdCBwb3NpdGlvbi4KICAgICAgICAgICAgIGlmIChyLT5zdHlsZSgpLT5wb3NpdGlvbigp
ICE9IEZpeGVkUG9zaXRpb24pIHsKQEAgLTI1MTksOCArMjUxMyw5IEBAIGludCBSZW5kZXJCbG9j
azo6bGVmdG1vc3RQb3NpdGlvbihib29sIGkKIAogICAgIGlmIChtX3Bvc2l0aW9uZWRPYmplY3Rz
KSB7CiAgICAgICAgIFJlbmRlck9iamVjdCogcjsKLSAgICAgICAgRGVwcmVjYXRlZFB0ckxpc3RJ
dGVyYXRvcjxSZW5kZXJPYmplY3Q+IGl0KCptX3Bvc2l0aW9uZWRPYmplY3RzKTsKLSAgICAgICAg
Zm9yICggOyAociA9IGl0LmN1cnJlbnQoKSk7ICsraXQgKSB7CisgICAgICAgIEl0ZXJhdG9yIGVu
ZCA9IG1fcG9zaXRpb25lZE9iamVjdHMtPmVuZCgpOworICAgICAgICBmb3IgKEl0ZXJhdG9yIGl0
ID0gbV9wb3NpdGlvbmVkT2JqZWN0cy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAg
ICAgICAgICByID0gKml0OwogICAgICAgICAgICAgLy8gRml4ZWQgcG9zaXRpb25lZCBvYmplY3Rz
IGRvIG5vdCBzY3JvbGwgYW5kIHRodXMgc2hvdWxkIG5vdCBjb25zdGl0dXRlCiAgICAgICAgICAg
ICAvLyBwYXJ0IG9mIHRoZSBsZWZ0bW9zdCBwb3NpdGlvbi4KICAgICAgICAgICAgIGlmIChyLT5z
dHlsZSgpLT5wb3NpdGlvbigpICE9IEZpeGVkUG9zaXRpb24pIHsKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaAkocmV2aXNpb24gMjU0NDIpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiR2FwUmVj
dHMuaCIKICNpbmNsdWRlICJSZW5kZXJGbG93LmgiCiAjaW5jbHVkZSAiUm9vdElubGluZUJveC5o
IgorI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTQ0Myw4ICs0NDQsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gRW5kIGhlbHBlciBmdW5jdGlv
bnMgYW5kIHN0cnVjdHMgdXNlZCBieSBsYXlvdXRCbG9ja0NoaWxkcmVuLgogCiBwcml2YXRlOgor
ICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj46OmNvbnN0X2l0ZXJhdG9yIEl0
ZXJhdG9yOwogICAgIERlcHJlY2F0ZWRQdHJMaXN0PEZsb2F0aW5nT2JqZWN0PiogbV9mbG9hdGlu
Z09iamVjdHM7Ci0gICAgRGVwcmVjYXRlZFB0ckxpc3Q8UmVuZGVyT2JqZWN0PiogbV9wb3NpdGlv
bmVkT2JqZWN0czsKKyAgICBMaXN0SGFzaFNldDxSZW5kZXJPYmplY3QqPiogbV9wb3NpdGlvbmVk
T2JqZWN0czsKICAgICAgICAgIAogICAgICAvLyBBbGxvY2F0ZWQgb25seSB3aGVuIHNvbWUgb2Yg
dGhlc2UgZmllbGRzIGhhdmUgbm9uLWRlZmF1bHQgdmFsdWVzCiAgICAgIHN0cnVjdCBNYXhNYXJn
aW4gewo=
</data>
<flag name="review"
          id="6826"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>