<?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>3503</bug_id>
          
          <creation_ts>2005-06-13 09:03:09 -0700</creation_ts>
          <short_desc>form.elements[] not order-preserving when elements added via DOM</short_desc>
          <delta_ts>2006-02-09 20:02:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>412</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>VERIFIED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://bugzilla.mozilla.org/show_bug.cgi?id=204784</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>andersca</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>11725</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2005-06-13 09:03:09 -0700</bug_when>
    <thetext>Summary: 
When using JavaScript and the DOM to insert/replace elements within a form,
Safari displays the elements in the correct order, but the order of the elements
in the DOM itself (e.g., when the form elements are submitted back to a web
server) is not correct.   The new elements always appear at the end of the DOM
element list in the form.

Steps to Reproduce: 
See the first three test cases:

https://bugzilla.mozilla.org/attachment.cgi?id=122705
https://bugzilla.mozilla.org/attachment.cgi?id=141356
https://bugzilla.mozilla.org/attachment.cgi?id=147049

In this Mozilla bug:

https://bugzilla.mozilla.org/show_bug.cgi?id=204784

They demonstrate the bug in Safari (which was identical to the original behavior
in Firefox and Mozilla before they were fixed).

Expected Results: 
The DOM element order should be preserved.

Actual Results: 
The DOM element order is not preserved.  The new elements always appear at the
end of the DOM element list in the form.

Regression: 
Prior to Safari in Mac OS X 10.3.9, the behavior for these tests was not
well-defined (if these DOM operations, such as replaceChild(), were even supported).

To my knowledge, these tests have never worked with Safari.

Notes: 
I already used Safari&apos;s &quot;Report Bugs to Apple...&quot; tool to report this bug
against the updated Safari in Mac OS X 10.3.9 (sorry, I don&apos;t recall the version
or build number of Safari for that update).  The &quot;Page Address&quot; (URL) used in
that form is to this Bugzilla bug (referenced above):

https://bugzilla.mozilla.org/show_bug.cgi?id=204784

Apple Bug: rdar://4104411</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12098</commentid>
    <comment_count>1</comment_count>
      <attachid>2356</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2005-06-15 03:18:11 -0700</bug_when>
    <thetext>Created attachment 2356
Fix

Here&apos;s a patch that makes the three test cases work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12099</commentid>
    <comment_count>2</comment_count>
    <who name="Joost de Valk (AlthA)">joost</who>
    <bug_when>2005-06-15 04:06:36 -0700</bug_when>
    <thetext>fix works for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12191</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2005-06-15 21:16:50 -0700</bug_when>
    <thetext>Thanks for creating a patch, Anders!

I noticed that the original Firefox/Mozilla patch does a binary search (O(log N)) to determine where to 
place the element in its data structure, while this patch does a linear search (O(N)).  In the interest of 
performance (priority #2 on the WebKit &quot;Projects&quot; page), is it possible to perform a binary search instead?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12241</commentid>
    <comment_count>4</comment_count>
      <attachid>2356</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-06-16 09:33:21 -0700</bug_when>
    <thetext>Comment on attachment 2356
Fix

This patch looks good. I&apos;m increasingly uncomfortable with the form element
class using vectors and inserting and removing elements from the middle of the
vectors. There&apos;s no obvious benefit of a vector over a list, and a list
supports high speed insertion and deletion. Except for the one use of this as a
vector in HTMLFormCollectionImpl::item. But I think that need not prevent us
from taking this patch; it&apos;s not even obvious what we should do.

But I&apos;m concerned with another aspect of this patch.

I think that getFormElementByIndex might need to check the form() on the
element before counting it when computing the index. If for some reason the
form element is not associated with this form, we could end up with an index
that is past the end of the form element vector, with disastrous results. I&apos;m
not sure if that case can arise, but I&apos;m also not sure that it can&apos;t, and the
code change is very simple. Please fix that in the patch.

As far as the comments about linear vs. binary search, if you look at the
Mozilla code you&apos;ll see that inside that binary search they are doing an
operation that compares the relative positions of the DOM nodes. This operation
is going to be proportional to the tree distances between successive nodes. The
approach of iterating the entire DOM tree under the form element should be
relatively similar in complexity, and there&apos;s no real option to use a binary
search here.

On the other hand, there&apos;s a chance that the Mozilla code will handle cases
better where the form elements are not inside the &lt;form&gt; element. It&apos;s worth
making test cases of this sort to find that out, but we can file a new bug once
we do that if this fix has already been landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12249</commentid>
    <comment_count>5</comment_count>
      <attachid>2389</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2005-06-16 09:54:53 -0700</bug_when>
    <thetext>Created attachment 2389
New patch

Here&apos;s a new patch that checks if the element has the same form before counting
it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12251</commentid>
    <comment_count>6</comment_count>
      <attachid>2389</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-06-16 10:11:09 -0700</bug_when>
    <thetext>Comment on attachment 2389
New patch

r=me

Minor comments:

1) No need to have an else after a return in getFormElementIndex.

2) To make things possibly more robust I suggest that
HTMLFormElementImpl::registerFormElement do the check this way:

    if (i &lt; 0 || i &gt;= (int)formElements.count())

If we like we could assert to catch problems with incorrect indices.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12564</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-06-18 18:29:05 -0700</bug_when>
    <thetext>I&apos;m working on writing a test for this. In the future, we need tests ready for the layout-tests directory as 
well as patches before we can commit a fix.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12565</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-06-18 18:44:36 -0700</bug_when>
    <thetext>I&apos;m concerned that this makes adding form elements O(n^2) where n is the number of elements inside the 
&lt;form&gt; element. That&apos;s true even when parsing the initial web page; could this create problems for us on 
pages with a lot of elements? Do we need to optimize the case where the element being added is the very 
last thing inside the form?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12566</commentid>
    <comment_count>9</comment_count>
      <attachid>2467</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-06-18 19:07:20 -0700</bug_when>
    <thetext>Created attachment 2467
A third try

I attached a new patch that improves a few different things (using unsigned
consistently gets rid of some typecasts, for example) and also adds a special
case to avoid scanning the form&apos;s tree in the normal parsing case for speed.

It also include a regression test for the layout-test directory.

I suppose I should add a test case for the performance issue since I fixed
something that&apos;s just theoretically wrong.

One flaw is that items that hit my special case for speed end up after all the
items that are not anywhere inside the &lt;form&gt;, whereas otherwise they would be
after all the items in the &lt;form&gt; tree, but before any items that are outside
it. Not sure if this is bad enough that we need to track the number of items in
the tree somehow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12628</commentid>
    <comment_count>10</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2005-06-19 21:57:44 -0700</bug_when>
    <thetext>r=me
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12644</commentid>
    <comment_count>11</comment_count>
    <who name="Joost de Valk (AlthA)">joost</who>
    <bug_when>2005-06-19 23:47:39 -0700</bug_when>
    <thetext>Verified, reporter, please verify this bug with ToT webkit and mark it as verified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12671</commentid>
    <comment_count>12</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2005-06-20 04:13:37 -0700</bug_when>
    <thetext>Verified fixed using TOT (tip of tree) build of WebKit from CVS.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14623</commentid>
    <comment_count>13</comment_count>
    <who name="Joost de Valk (AlthA)">joost</who>
    <bug_when>2005-07-13 22:59:22 -0700</bug_when>
    <thetext>Fixed in 10.4.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14631</commentid>
    <comment_count>14</comment_count>
    <who name="Joost de Valk (AlthA)">joost</who>
    <bug_when>2005-07-13 23:07:03 -0700</bug_when>
    <thetext>Hmm actually not... Was looking wrongly...</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2356</attachid>
            <date>2005-06-15 03:18:11 -0700</date>
            <delta_ts>2005-06-16 09:54:53 -0700</delta_ts>
            <desc>Fix</desc>
            <filename>webcore-form-elements.diff</filename>
            <type>text/plain</type>
            <size>3237</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9D
aGFuZ2VMb2csdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNDI2NQpkaWZmIC11IC1wIC1yMS40MjY1
IENoYW5nZUxvZwotLS0gQ2hhbmdlTG9nCTIwMDUvMDYvMTQgMjI6MzY6MjcJMS40MjY1CisrKyBD
aGFuZ2VMb2cJMjAwNS8wNi8xNSAwODoyMDo1OApAQCAtMSwzICsxLDEyIEBACisyMDA1LTA2LTE1
ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBtYWMuY29tPgorCisJRml4IGZvciBodHRwOi8v
YnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTM1MDMKKworCSoga2h0bWwv
aHRtbC9odG1sX2Zvcm1pbXBsLmNwcDoKKwkqIGtodG1sL2h0bWwvaHRtbF9mb3JtaW1wbC5oOgor
CUFkZCBnZXRGb3JtRWxlbWVudEluZGV4IGZ1bmN0aW9uIGZvciBnZXR0aW5nIGEgZm9ybSBlbGVt
ZW50J3MgaW5kZXggaW4gYSBmb3JtLgorCVVzZSB0aGlzIGZ1bmN0aW9uIHRvIGRldGVybWluZSB3
aGVyZSB0byBpbnNlcnQgdGhlIGVsZW1lbnQgaW4gdGhlIGZvcm1FbGVtZW50cyBhcnJheS4KKwog
MjAwNS0wNi0xNCAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKIAlUaGUgYmVoYXZp
b3Igb2YgPHByZT4gaXMgYnJva2VuIHNvIHRoYXQgdGhlIG5ld2xpbmUKSW5kZXg6IGtodG1sL2h0
bWwvaHRtbF9mb3JtaW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNv
cmUva2h0bWwvaHRtbC9odG1sX2Zvcm1pbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4x
NjEKZGlmZiAtdSAtcCAtcjEuMTYxIGh0bWxfZm9ybWltcGwuY3BwCi0tLSBodG1sX2Zvcm1pbXBs
LmNwcAkyMDA1LzA1LzMxIDA1OjQ4OjQxCTEuMTYxCisrKyBodG1sX2Zvcm1pbXBsLmNwcAkyMDA1
LzA2LzE1IDA4OjIwOjU4CkBAIC03MTcsNiArNzIwLDIwIEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50
SW1wbDo6cmFkaW9DbGlja2VkKCAKICAgICB9CiB9CiAKK3RlbXBsYXRlPGNsYXNzIFQ+IHN0YXRp
YyB2b2lkIGluc2VydEludG9WZWN0b3IoUVB0clZlY3RvcjxUPiAmdmVjLCBpbnQgcG9zLCBUKiBp
dGVtKQoreworICAgIHVuc2lnbmVkIHNpemUgPSB2ZWMuc2l6ZSgpOworICAgIHVuc2lnbmVkIGNv
dW50ID0gdmVjLmNvdW50KCk7CisgICAgCisgICAgaWYgKHNpemUgPT0gY291bnQpCisgICAgICAg
IHZlYy5yZXNpemUoc2l6ZSA9PSAwID8gOCA6IChpbnQpKHNpemUgKiAxLjUpKTsKKyAgICBmb3Ig
KGludCBpID0gY291bnQ7IGkgPiBwb3M7IGktLSkgeworICAgICAgICB2ZWMuaW5zZXJ0KGksIHZl
Y1tpIC0gMV0pOworICAgIH0gCisgICAgCisgICAgdmVjLmluc2VydChwb3MsIGl0ZW0pOworfQor
CiB0ZW1wbGF0ZTxjbGFzcyBUPiBzdGF0aWMgdm9pZCBhcHBlbmRUb1ZlY3RvcihRUHRyVmVjdG9y
PFQ+ICZ2ZWMsIFQgKml0ZW0pCiB7CiAgICAgdW5zaWduZWQgc2l6ZSA9IHZlYy5zaXplKCk7CkBA
IC03NDAsOSArNzU3LDM2IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHN0YXRpYyB2b2lkIHJlbW92ZUZy
b20KICAgICB2ZWMucmVtb3ZlKGNvdW50IC0gMSk7CiB9CiAKK2ludCBIVE1MRm9ybUVsZW1lbnRJ
bXBsOjpnZXRGb3JtRWxlbWVudEluZGV4KEhUTUxHZW5lcmljRm9ybUVsZW1lbnRJbXBsICplKQor
eworICAgIGludCBpID0gMDsKKyAgICBOb2RlSW1wbCogbm9kZSA9IHRoaXM7CisgICAgCisgICAg
d2hpbGUgKChub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSh0aGlzKSkpIHsKKyAgICAgICAg
aWYgKG5vZGUtPmlzSFRNTEVsZW1lbnQoKSkgeworICAgICAgICAgICAgSFRNTEVsZW1lbnRJbXBs
ICplbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnRJbXBsICo+KG5vZGUpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAoZWxlbWVudC0+aXNHZW5lcmljRm9ybUVsZW1lbnQoKSkg
eworICAgICAgICAgICAgICAgIGlmIChlID09IGVsZW1lbnQpIAorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gaTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGkr
KzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gLTE7
Cit9CisKIHZvaWQgSFRNTEZvcm1FbGVtZW50SW1wbDo6cmVnaXN0ZXJGb3JtRWxlbWVudChIVE1M
R2VuZXJpY0Zvcm1FbGVtZW50SW1wbCAqZSkKIHsKLSAgICBhcHBlbmRUb1ZlY3Rvcihmb3JtRWxl
bWVudHMsIGUpOworICAgIGludCBpID0gZ2V0Rm9ybUVsZW1lbnRJbmRleChlKTsKKworICAgIGlm
IChpID09IC0xIHx8IGkgPT0gKGludClmb3JtRWxlbWVudHMuY291bnQoKSkKKyAgICAgICAgYXBw
ZW5kVG9WZWN0b3IoZm9ybUVsZW1lbnRzLCBlKTsKKyAgICBlbHNlCisgICAgICAgIGluc2VydElu
dG9WZWN0b3IoZm9ybUVsZW1lbnRzLCBpLCBlKTsKKyAgICAKICAgICByZW1vdmVGcm9tVmVjdG9y
KGRvcm1hbnRGb3JtRWxlbWVudHMsIGUpOwogfQogCkluZGV4OiBraHRtbC9odG1sL2h0bWxfZm9y
bWltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9odG1s
L2h0bWxfZm9ybWltcGwuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS43MQpkaWZmIC11IC1wIC1y
MS43MSBodG1sX2Zvcm1pbXBsLmgKLS0tIGh0bWxfZm9ybWltcGwuaAkyMDA1LzA1LzEyIDE3OjEx
OjIyCTEuNzEKKysrIGh0bWxfZm9ybWltcGwuaAkyMDA1LzA2LzE1IDA4OjIwOjU4CkBAIC04Nyw2
ICs4Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmFkaW9DbGlja2VkKCBIVE1MR2VuZXJpY0Zv
cm1FbGVtZW50SW1wbCAqY2FsbGVyICk7CiAKKyAgICBpbnQgZ2V0Rm9ybUVsZW1lbnRJbmRleChI
VE1MR2VuZXJpY0Zvcm1FbGVtZW50SW1wbCAqKTsKKwogICAgIHZvaWQgcmVnaXN0ZXJGb3JtRWxl
bWVudChIVE1MR2VuZXJpY0Zvcm1FbGVtZW50SW1wbCAqKTsKICAgICB2b2lkIHJlbW92ZUZvcm1F
bGVtZW50KEhUTUxHZW5lcmljRm9ybUVsZW1lbnRJbXBsICopOwogICAgIHZvaWQgbWFrZUZvcm1F
bGVtZW50RG9ybWFudChIVE1MR2VuZXJpY0Zvcm1FbGVtZW50SW1wbCAqKTsK
</data>
<flag name="review"
          id="23"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2389</attachid>
            <date>2005-06-16 09:54:53 -0700</date>
            <delta_ts>2005-06-18 23:28:47 -0700</delta_ts>
            <desc>New patch</desc>
            <filename>webcore-form-elements-2.diff</filename>
            <type>text/plain</type>
            <size>3319</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9D
aGFuZ2VMb2csdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNDI2NQpkaWZmIC11IC1wIC1yMS40MjY1
IENoYW5nZUxvZwotLS0gQ2hhbmdlTG9nCTIwMDUvMDYvMTQgMjI6MzY6MjcJMS40MjY1CisrKyBD
aGFuZ2VMb2cJMjAwNS8wNi8xNSAwODoyMDo1OApAQCAtMSwzICsxLDEyIEBACisyMDA1LTA2LTE1
ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBtYWMuY29tPgorCisJRml4IGZvciBodHRwOi8v
YnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTM1MDMKKworCSoga2h0bWwv
aHRtbC9odG1sX2Zvcm1pbXBsLmNwcDoKKwkqIGtodG1sL2h0bWwvaHRtbF9mb3JtaW1wbC5oOgor
CUFkZCBnZXRGb3JtRWxlbWVudEluZGV4IGZ1bmN0aW9uIGZvciBnZXR0aW5nIGEgZm9ybSBlbGVt
ZW50J3MgaW5kZXggaW4gYSBmb3JtLgorCVVzZSB0aGlzIGZ1bmN0aW9uIHRvIGRldGVybWluZSB3
aGVyZSB0byBpbnNlcnQgdGhlIGVsZW1lbnQgaW4gdGhlIGZvcm1FbGVtZW50cyBhcnJheS4KKwog
MjAwNS0wNi0xNCAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKIAlUaGUgYmVoYXZp
b3Igb2YgPHByZT4gaXMgYnJva2VuIHNvIHRoYXQgdGhlIG5ld2xpbmUKSW5kZXg6IGtodG1sL2h0
bWwvaHRtbF9mb3JtaW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNv
cmUva2h0bWwvaHRtbC9odG1sX2Zvcm1pbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4x
NjEKZGlmZiAtdSAtcjEuMTYxIGh0bWxfZm9ybWltcGwuY3BwCi0tLSBodG1sX2Zvcm1pbXBsLmNw
cAkyMDA1LzA1LzMxIDA1OjQ4OjQxCTEuMTYxCisrKyBodG1sX2Zvcm1pbXBsLmNwcAkyMDA1LzA2
LzE2IDE2OjQ2OjUxCkBAIC03MTcsNiArNzIwLDIwIEBACiAgICAgfQogfQogCit0ZW1wbGF0ZTxj
bGFzcyBUPiBzdGF0aWMgdm9pZCBpbnNlcnRJbnRvVmVjdG9yKFFQdHJWZWN0b3I8VD4gJnZlYywg
aW50IHBvcywgVCogaXRlbSkKK3sKKyAgICB1bnNpZ25lZCBzaXplID0gdmVjLnNpemUoKTsKKyAg
ICB1bnNpZ25lZCBjb3VudCA9IHZlYy5jb3VudCgpOworICAgIAorICAgIGlmIChzaXplID09IGNv
dW50KQorICAgICAgICB2ZWMucmVzaXplKHNpemUgPT0gMCA/IDggOiAoaW50KShzaXplICogMS41
KSk7CisgICAgZm9yIChpbnQgaSA9IGNvdW50OyBpID4gcG9zOyBpLS0pIHsKKyAgICAgICAgdmVj
Lmluc2VydChpLCB2ZWNbaSAtIDFdKTsKKyAgICB9IAorICAgIAorICAgIHZlYy5pbnNlcnQocG9z
LCBpdGVtKTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgVD4gc3RhdGljIHZvaWQgYXBwZW5kVG9WZWN0
b3IoUVB0clZlY3RvcjxUPiAmdmVjLCBUICppdGVtKQogewogICAgIHVuc2lnbmVkIHNpemUgPSB2
ZWMuc2l6ZSgpOwpAQCAtNzQwLDkgKzc1NywzOCBAQAogICAgIHZlYy5yZW1vdmUoY291bnQgLSAx
KTsKIH0KIAoraW50IEhUTUxGb3JtRWxlbWVudEltcGw6OmdldEZvcm1FbGVtZW50SW5kZXgoSFRN
TEdlbmVyaWNGb3JtRWxlbWVudEltcGwgKmUpCit7CisgICAgaW50IGkgPSAwOworICAgIE5vZGVJ
bXBsKiBub2RlID0gdGhpczsKKyAgICAKKyAgICB3aGlsZSAoKG5vZGUgPSBub2RlLT50cmF2ZXJz
ZU5leHROb2RlKHRoaXMpKSkgeworICAgICAgICBpZiAobm9kZS0+aXNIVE1MRWxlbWVudCgpKSB7
CisgICAgICAgICAgICBIVE1MRWxlbWVudEltcGwgKmVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1M
RWxlbWVudEltcGwgKj4obm9kZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChlbGVt
ZW50LT5pc0dlbmVyaWNGb3JtRWxlbWVudCgpKSB7CisgICAgICAgICAgICAgICAgSFRNTEdlbmVy
aWNGb3JtRWxlbWVudEltcGwgKmZvcm1FbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEdlbmVyaWNG
b3JtRWxlbWVudEltcGwgKj4oZWxlbWVudCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgaWYgKGUgPT0gZWxlbWVudCkgCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpOwor
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKGUtPmZvcm0oKSA9PSBmb3JtRWxlbWVudC0+Zm9ybSgp
KQorICAgICAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisgICAgCisgICAgcmV0dXJuIC0xOworfQorCiB2b2lkIEhUTUxGb3JtRWxlbWVudEltcGw6
OnJlZ2lzdGVyRm9ybUVsZW1lbnQoSFRNTEdlbmVyaWNGb3JtRWxlbWVudEltcGwgKmUpCiB7Ci0g
ICAgYXBwZW5kVG9WZWN0b3IoZm9ybUVsZW1lbnRzLCBlKTsKKyAgICBpbnQgaSA9IGdldEZvcm1F
bGVtZW50SW5kZXgoZSk7CisKKyAgICBpZiAoaSA9PSAtMSB8fCBpID09IChpbnQpZm9ybUVsZW1l
bnRzLmNvdW50KCkpCisgICAgICAgIGFwcGVuZFRvVmVjdG9yKGZvcm1FbGVtZW50cywgZSk7Cisg
ICAgZWxzZQorICAgICAgICBpbnNlcnRJbnRvVmVjdG9yKGZvcm1FbGVtZW50cywgaSwgZSk7Cisg
ICAgCiAgICAgcmVtb3ZlRnJvbVZlY3Rvcihkb3JtYW50Rm9ybUVsZW1lbnRzLCBlKTsKIH0KIApJ
bmRleDoga2h0bWwvaHRtbC9odG1sX2Zvcm1pbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2
cy9yb290L1dlYkNvcmUva2h0bWwvaHRtbC9odG1sX2Zvcm1pbXBsLmgsdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuNzEKZGlmZiAtdSAtcCAtcjEuNzEgaHRtbF9mb3JtaW1wbC5oCi0tLSBodG1sX2Zv
cm1pbXBsLmgJMjAwNS8wNS8xMiAxNzoxMToyMgkxLjcxCisrKyBodG1sX2Zvcm1pbXBsLmgJMjAw
NS8wNi8xNSAwODoyMDo1OApAQCAtODcsNiArODcsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJh
ZGlvQ2xpY2tlZCggSFRNTEdlbmVyaWNGb3JtRWxlbWVudEltcGwgKmNhbGxlciApOwogCisgICAg
aW50IGdldEZvcm1FbGVtZW50SW5kZXgoSFRNTEdlbmVyaWNGb3JtRWxlbWVudEltcGwgKik7CisK
ICAgICB2b2lkIHJlZ2lzdGVyRm9ybUVsZW1lbnQoSFRNTEdlbmVyaWNGb3JtRWxlbWVudEltcGwg
Kik7CiAgICAgdm9pZCByZW1vdmVGb3JtRWxlbWVudChIVE1MR2VuZXJpY0Zvcm1FbGVtZW50SW1w
bCAqKTsKICAgICB2b2lkIG1ha2VGb3JtRWxlbWVudERvcm1hbnQoSFRNTEdlbmVyaWNGb3JtRWxl
bWVudEltcGwgKik7Cg==
</data>
<flag name="review"
          id="28"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2467</attachid>
            <date>2005-06-18 19:07:20 -0700</date>
            <delta_ts>2005-06-19 21:57:19 -0700</delta_ts>
            <desc>A third try</desc>
            <filename>FormElementOrderPatch.txt</filename>
            <type>text/plain</type>
            <size>6920</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9D
aGFuZ2VMb2csdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNDI3NApkaWZmIC1wIC11IC1wIC11IC1y
MS40Mjc0IENoYW5nZUxvZwotLS0gQ2hhbmdlTG9nICAgMTcgSnVuIDIwMDUgMjM6MDI6NDQgLTAw
MDAgICAgICAxLjQyNzQKKysrIENoYW5nZUxvZyAgIDE5IEp1biAyMDA1IDAxOjQ3OjQ3IC0wMDAw
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMDUtMDYtMTggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIENoYW5nZXMgYnkgYm90aCBBbmRlcnMgQ2FybHNzb24gYW5kIG1lLgor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0IGNhc2Vz
IGFkZGVkOgorICAgICAgICAqIGxheW91dC10ZXN0cy9mYXN0L2Zvcm1zL2VsZW1lbnQtb3JkZXIt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBsYXlvdXQtdGVzdHMvZmFzdC9mb3Jtcy9l
bGVtZW50LW9yZGVyLmh0bWw6IEFkZGVkLgorCisgICAgICAgICoga2h0bWwvaHRtbC9odG1sX2Zv
cm1pbXBsLmg6IEFkZGVkIGdldEZvcm1FbGVtZW50SW5kZXguCisgICAgICAgICoga2h0bWwvaHRt
bC9odG1sX2Zvcm1pbXBsLmNwcDoKKyAgICAgICAgKERPTTo6aW5zZXJ0SW50b1ZlY3Rvcik6IEFk
ZGVkLgorICAgICAgICAoRE9NOjpIVE1MRm9ybUVsZW1lbnRJbXBsOjpnZXRGb3JtRWxlbWVudElu
ZGV4KTogQWRkZWQuIENvbXB1dGVzIGFuIGFwcHJvcHJpYXRlCisgICAgICAgIGluZGV4IGZvciBh
IGZvcm0gZWxlbWVudCwgZ2l2ZW4gdGhlIGRvY3VtZW50IHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRo
ZSBvdGhlciBlbGVtZW50cy4KKyAgICAgICAgKERPTTo6SFRNTEZvcm1FbGVtZW50SW1wbDo6cmVn
aXN0ZXJGb3JtRWxlbWVudCk6IFVzZSBnZXRGb3JtRWxlbWVudEluZGV4IHRvIGRldGVybWluZQor
ICAgICAgICB3aGVyZSB0byBpbnNlcnQgdGhlIGVsZW1lbnQgaW4gdGhlIGZvcm1FbGVtZW50cyBh
cnJheS4KKwogMjAwNS0wNi0xNyAgVmlja2kgTXVybGV5ICA8dmlja2lAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IE1hY2llai4gCkluZGV4OiBraHRtbC9odG1sL2h0bWxfZm9ybWlt
cGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL2h0bWwv
aHRtbF9mb3JtaW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTYyCmRpZmYgLXAgLXUg
LXAgLXUgLXIxLjE2MiBraHRtbC9odG1sL2h0bWxfZm9ybWltcGwuY3BwCi0tLSBraHRtbC9odG1s
L2h0bWxfZm9ybWltcGwuY3BwCTE3IEp1biAyMDA1IDE4OjE0OjI3IC0wMDAwCTEuMTYyCisrKyBr
aHRtbC9odG1sL2h0bWxfZm9ybWltcGwuY3BwCTE5IEp1biAyMDA1IDAxOjQ2OjIyIC0wMDAwCkBA
IC03MTcsMTIgKzcxNywyNCBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudEltcGw6OnJhZGlvQ2xpY2tl
ZCggCiAgICAgfQogfQogCit0ZW1wbGF0ZTxjbGFzcyBUPiBzdGF0aWMgdm9pZCBpbnNlcnRJbnRv
VmVjdG9yKFFQdHJWZWN0b3I8VD4gJnZlYywgdW5zaWduZWQgcG9zLCBUKiBpdGVtKQoreworICAg
IHVuc2lnbmVkIHNpemUgPSB2ZWMuc2l6ZSgpOworICAgIHVuc2lnbmVkIGNvdW50ID0gdmVjLmNv
dW50KCk7CisgICAgYXNzZXJ0KHBvcyA8PSBjb3VudCk7CisgICAgaWYgKHNpemUgPT0gY291bnQp
CisgICAgICAgIHZlYy5yZXNpemUoc2l6ZSA9PSAwID8gOCA6IHNpemUgKiAzIC8gMik7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gY291bnQ7IGkgPiBwb3M7IC0taSkKKyAgICAgICAgdmVjLmluc2Vy
dChpLCB2ZWNbaSAtIDFdKTsgICAgCisgICAgdmVjLmluc2VydChwb3MsIGl0ZW0pOworfQorCiB0
ZW1wbGF0ZTxjbGFzcyBUPiBzdGF0aWMgdm9pZCBhcHBlbmRUb1ZlY3RvcihRUHRyVmVjdG9yPFQ+
ICZ2ZWMsIFQgKml0ZW0pCiB7CiAgICAgdW5zaWduZWQgc2l6ZSA9IHZlYy5zaXplKCk7CiAgICAg
dW5zaWduZWQgY291bnQgPSB2ZWMuY291bnQoKTsKICAgICBpZiAoc2l6ZSA9PSBjb3VudCkKLSAg
ICAgICAgdmVjLnJlc2l6ZShzaXplID09IDAgPyA4IDogKGludCkoc2l6ZSAqIDEuNSkpOworICAg
ICAgICB2ZWMucmVzaXplKHNpemUgPT0gMCA/IDggOiBzaXplICogMyAvIDIpOwogICAgIHZlYy5p
bnNlcnQoY291bnQsIGl0ZW0pOwogfQogCkBAIC03MzAsMTkgKzc0MiwzNiBAQCB0ZW1wbGF0ZTxj
bGFzcyBUPiBzdGF0aWMgdm9pZCByZW1vdmVGcm9tCiB7CiAgICAgaW50IHBvcyA9IHZlYy5maW5k
UmVmKGl0ZW0pOwogICAgIGludCBjb3VudCA9IHZlYy5jb3VudCgpOwotCiAgICAgaWYgKHBvcyA8
IDApCiAgICAgICAgIHJldHVybjsKLQotICAgIGZvciAoaW50IGkgPSBwb3M7IGkgPCBjb3VudCAt
IDE7IGkrKykgeworICAgIGZvciAoaW50IGkgPSBwb3M7IGkgPCBjb3VudCAtIDE7IGkrKykKICAg
ICAgICAgdmVjLmluc2VydChpLCB2ZWNbaSsxXSk7Ci0gICAgfQogICAgIHZlYy5yZW1vdmUoY291
bnQgLSAxKTsKIH0KIAordW5zaWduZWQgSFRNTEZvcm1FbGVtZW50SW1wbDo6Zm9ybUVsZW1lbnRJ
bmRleChIVE1MR2VuZXJpY0Zvcm1FbGVtZW50SW1wbCAqZSkKK3sKKyAgICAvLyBDaGVjayBmb3Ig
dGhlIHNwZWNpYWwgY2FzZSB3aGVyZSB0aGlzIGVsZW1lbnQgaXMgdGhlIHZlcnkgbGFzdCB0aGlu
ZyBpbgorICAgIC8vIHRoZSBmb3JtJ3MgdHJlZSBvZiBjaGlsZHJlbjsgd2UgZG9uJ3Qgd2FudCB0
byB3YWxrIHRoZSBlbnRpcmUgdHJlZSBpbiB0aGF0CisgICAgLy8gY29tbW9uIGNhc2UgdGhhdCBv
Y2N1cnMgZHVyaW5nIHBhcnNpbmc7IGluc3RlYWQgd2UnbGwganVzdCByZXR1cm4gYSB2YWx1ZQor
ICAgIC8vIHRoYXQgc2F5cyAiYWRkIHRoaXMgZm9ybSBlbGVtZW50IHRvIHRoZSBlbmQgb2YgdGhl
IGFycmF5Ii4KKyAgICBpZiAoZS0+dHJhdmVyc2VOZXh0Tm9kZSh0aGlzKSkgeworICAgICAgICB1
bnNpZ25lZCBpID0gMDsKKyAgICAgICAgZm9yIChOb2RlSW1wbCAqbm9kZSA9IHRoaXM7IG5vZGU7
IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKHRoaXMpKSB7CisgICAgICAgICAgICBpZiAo
bm9kZSA9PSBlKQorICAgICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICAgICAgaWYgKG5v
ZGUtPmlzSFRNTEVsZW1lbnQoKQorICAgICAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDxI
VE1MRWxlbWVudEltcGwgKj4obm9kZSktPmlzR2VuZXJpY0Zvcm1FbGVtZW50KCkKKyAgICAgICAg
ICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8SFRNTEdlbmVyaWNGb3JtRWxlbWVudEltcGwgKj4o
bm9kZSktPmZvcm0oKSA9PSB0aGlzKQorICAgICAgICAgICAgICAgICsraTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICByZXR1cm4gZm9ybUVsZW1lbnRzLmNvdW50KCk7Cit9CisKIHZvaWQgSFRNTEZv
cm1FbGVtZW50SW1wbDo6cmVnaXN0ZXJGb3JtRWxlbWVudChIVE1MR2VuZXJpY0Zvcm1FbGVtZW50
SW1wbCAqZSkKIHsKLSAgICBhcHBlbmRUb1ZlY3Rvcihmb3JtRWxlbWVudHMsIGUpOworICAgIGlu
c2VydEludG9WZWN0b3IoZm9ybUVsZW1lbnRzLCBmb3JtRWxlbWVudEluZGV4KGUpLCBlKTsKICAg
ICByZW1vdmVGcm9tVmVjdG9yKGRvcm1hbnRGb3JtRWxlbWVudHMsIGUpOwogfQogCkBAIC05MjEs
NyArOTUwLDcgQEAgdm9pZCBIVE1MR2VuZXJpY0Zvcm1FbGVtZW50SW1wbDo6aW5zZXJ0ZQogICAg
ICAgICBtX2Zvcm0tPnJlZ2lzdGVyRm9ybUVsZW1lbnQodGhpcyk7CiAKICAgICBtX2Rvcm1hbnQg
PSBmYWxzZTsKLSAgIAorCiAgICAgSFRNTEVsZW1lbnRJbXBsOjppbnNlcnRlZEludG9Eb2N1bWVu
dCgpOwogfQogCkluZGV4OiBraHRtbC9odG1sL2h0bWxfZm9ybWltcGwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9odG1sL2h0bWxfZm9ybWltcGwuaCx2CnJl
dHJpZXZpbmcgcmV2aXNpb24gMS43MgpkaWZmIC1wIC11IC1wIC11IC1yMS43MiBraHRtbC9odG1s
L2h0bWxfZm9ybWltcGwuaAotLS0ga2h0bWwvaHRtbC9odG1sX2Zvcm1pbXBsLmgJMTcgSnVuIDIw
MDUgMTg6MTQ6MjcgLTAwMDAJMS43MgorKysga2h0bWwvaHRtbC9odG1sX2Zvcm1pbXBsLmgJMTkg
SnVuIDIwMDUgMDE6NDY6MjIgLTAwMDAKQEAgLTE0Nyw2ICsxNDcsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBwYXJzZUVuY3R5cGUoY29uc3QgRE9NU3RyaW5nICYpOwogICAgIGJvb2wgZm9ybURhdGEo
a2h0bWw6OkZvcm1EYXRhICYpIGNvbnN0OwogCisgICAgdW5zaWduZWQgZm9ybUVsZW1lbnRJbmRl
eChIVE1MR2VuZXJpY0Zvcm1FbGVtZW50SW1wbCAqKTsKKwogICAgIFFTdHJpbmcgb2xkSWRBdHRy
OwogICAgIFFTdHJpbmcgb2xkTmFtZUF0dHI7CiB9OwpJbmRleDogbGF5b3V0LXRlc3RzL2Zhc3Qv
Zm9ybXMvZWxlbWVudC1vcmRlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogZm9y
bXMvZWxlbWVudC1vcmRlci1leHBlY3RlZC50eHQKZGlmZiAtTiBsYXlvdXQtdGVzdHMvZmFzdC9m
b3Jtcy9lbGVtZW50LW9yZGVyLWV4cGVjdGVkLnR4dAotLS0gbGF5b3V0LXRlc3RzL2Zhc3QvZm9y
bXMvZWxlbWVudC1vcmRlci1leHBlY3RlZC50eHQJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAor
KysgbGF5b3V0LXRlc3RzL2Zhc3QvZm9ybXMvZWxlbWVudC1vcmRlci1leHBlY3RlZC50eHQJMTkg
SnVuIDIwMDUgMDE6NDY6MjQgLTAwMDAKQEAgLTAsMCArMSwxMSBAQAorVGhpcyB0ZXN0IGNoZWNr
cyB0aGF0IHRoZSBlbGVtZW50cyBhcnJheSBvZiBhIGZvcm0gZWxlbWVudCByZXR1cm5zIHRoZSBl
bGVtZW50cyBpbiBkb2N1bWVudCBvcmRlciByYXRoZXIgdGhhbiBvcmRlciBvZiBpbnNlcnRpb24g
aW50byB0aGUgZG9jdW1lbnQuIE9sZGVyIHZlcnNpb25zIG9mIFdlYktpdCByZXR1cm5lZCB0aGUg
ZWxlbWVudHMgaW4gb3JkZXIgb2YgaW5zZXJ0aW9uLgorCitJZiB0aGUgdGVzdCB3b3JrcyBwcm9w
ZXJseSwgdGhlIHRleHQgYXQgdGhlIGJvdHRvbSB3aWxsIG1vc3QgbGlrZWx5IHNheSAieCIgdGhl
biAieSIgdGhlbiAieiIgaW4gdGhhdCBvcmRlci4gSWYgaXQgZmFpbHMsIGl0IHdpbGwgbW9zdCBs
aWtlbHkgc2F5ICJ4IiwgdGhlbiAieiIsIHRoZW4gInkiLgorCisKKyAgCit4Cit5Cit6CisKKwpJ
bmRleDogbGF5b3V0LXRlc3RzL2Zhc3QvZm9ybXMvZWxlbWVudC1vcmRlci5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IGZvcm1zL2VsZW1lbnQtb3JkZXIuaHRtbApkaWZmIC1OIGxheW91dC10ZXN0
cy9mYXN0L2Zvcm1zL2VsZW1lbnQtb3JkZXIuaHRtbAotLS0gbGF5b3V0LXRlc3RzL2Zhc3QvZm9y
bXMvZWxlbWVudC1vcmRlci5odG1sCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIGxheW91
dC10ZXN0cy9mYXN0L2Zvcm1zL2VsZW1lbnQtb3JkZXIuaHRtbAkxOSBKdW4gMjAwNSAwMTo0Njoy
NCAtMDAwMApAQCAtMCwwICsxLDQwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0
aW9uIHRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgdmFyIGYgPSB3aW5k
b3cuZG9jdW1lbnQuZm9ybXNbMF07CisKKyAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2lucHV0Jyk7CisgICAgZS50eXBlID0gJ3RleHQnCisgICAgZS5uYW1lID0gJ3knOworICAg
IGUudmFsdWUgPSAneSc7CisgICAgZi5yZXBsYWNlQ2hpbGQoZSwgZi55KTsKKworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgZi5lbGVtZW50cy5sZW5ndGg7IGkrKykgeworICAgICAgICB2YXIgbGlu
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBsaW5lLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGYuZWxlbWVudHNbaV0ubmFtZSkpOworICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuYXBwZW5kQ2hpbGQobGluZSk7Cisg
ICAgfQorfQorPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD5UaGlzIHRlc3Qg
Y2hlY2tzIHRoYXQgdGhlIGVsZW1lbnRzIGFycmF5IG9mIGEgZm9ybSBlbGVtZW50IHJldHVybnMg
dGhlIGVsZW1lbnRzIGluIGRvY3VtZW50IG9yZGVyCityYXRoZXIgdGhhbiBvcmRlciBvZiBpbnNl
cnRpb24gaW50byB0aGUgZG9jdW1lbnQuIE9sZGVyIHZlcnNpb25zIG9mIFdlYktpdCByZXR1cm5l
ZCB0aGUgZWxlbWVudHMgaW4KK29yZGVyIG9mIGluc2VydGlvbi48L3A+Cis8cD5JZiB0aGUgdGVz
dCB3b3JrcyBwcm9wZXJseSwgdGhlIHRleHQgYXQgdGhlIGJvdHRvbSB3aWxsIG1vc3QgbGlrZWx5
IHNheSAieCIgdGhlbiAieSIgdGhlbiAieiIgaW4gdGhhdCBvcmRlci4KK0lmIGl0IGZhaWxzLCBp
dCB3aWxsIG1vc3QgbGlrZWx5IHNheSAieCIsIHRoZW4gInoiLCB0aGVuICJ5Ii48L3A+Cis8aHI+
Cis8cD4KKzxmb3JtPgorPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J3gnIHZhbHVlPSd4Jz4KKzxp
bnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSd5JyB2YWx1ZT0neSc+Cis8aW5wdXQgdHlwZT0ndGV4dCcg
bmFtZT0neicgdmFsdWU9J3onPgorPC9mb3JtPgorPC9wPgorPGhyPgorPHAgaWQ9InJlc3VsdCI+
PC9wPgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="45"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>