<?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>9756</bug_id>
          
          <creation_ts>2006-07-06 06:05:58 -0700</creation_ts>
          <short_desc>A form without a submit button unexpectedly performs its action when Return is pressed</short_desc>
          <delta_ts>2010-09-03 19:50:43 -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>Forms</component>
          <version>420+</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.flo-joe.co.uk/cae/students/wordbank/wform.htm</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>39021</blocked>
    
    <blocked>16930</blocked>
    
    <blocked>39056</blocked>
    
    <blocked>39532</blocked>
    
    <blocked>45224</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>abarth</cc>
    
    <cc>adele</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>ian</cc>
    
    <cc>jasneet</cc>
    
    <cc>ojan</cc>
    
    <cc>spamfilter</cc>
    
    <cc>urkle</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>48506</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-07-06 06:05:58 -0700</bug_when>
    <thetext>Steps to reproduce:
1. Open the bug URL.
2. Click in any input field.
3. Press Return key.

Results: the page reloads
Expeced results: nothing happens (as in Firefox 1.5)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95857</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-10-18 01:58:03 -0700</bug_when>
    <thetext>*** Bug 21716 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193456</commentid>
    <comment_count>2</comment_count>
    <who name="Edward Rudd">urkle</who>
    <bug_when>2010-02-24 12:30:42 -0800</bug_when>
    <thetext>Further docs on the &quot;expected&apos; behavior and reasons.

http://www.alanflavell.org.uk/www/formquestion.html 

It is rather unexpected and actually causes much problems when webkit submits a form on enter even though there are multiple text input elements in the form.

Here is a stackoverflow question about how to prevent webkit from doing this..

http://stackoverflow.com/questions/751702/how-can-i-prevent-webkit-browser-to-submit-a-form-when-enter-is-pressed-in-an-inp


IMO, it&apos;s a bad design to submit the form the way webkit does as (quote from the first link)

(From HTML 2.0 spec) 
When there is only one single-line text input field in a form, the user agent should accept Enter in that field as a request to submit the form.

(from article)
This was evidently meant as a convenient way to submit simple queries, but reducing the risk, on a complex form, of prematurely submitting it while trying to fill it in. 

the current webkit design causes a high volume of prematurely submitted forms. (of which I am currently in the middle of deciding if I want to redesign EVERY FORM on my web application so webkit can be used OR blacklisting webkit due to numerous issues due to this bug)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213482</commentid>
    <comment_count>3</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-16 16:31:47 -0700</bug_when>
    <thetext>The HTML5 spec is pretty clear here. We&apos;re doing the right thing:

http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#implicit-submission</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213500</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-04-16 16:59:42 -0700</bug_when>
    <thetext>HTML5 diverges from both IE and Firefox here. We should probably ask for clarification on whether this is even intentional.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213504</commentid>
    <comment_count>5</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-16 17:04:10 -0700</bug_when>
    <thetext>Yup. I paraded on #whatwg for a bit with this question and the lukewarm response was that the spec is logical, whereas the IE/FF/Opera behavior is not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213506</commentid>
    <comment_count>6</comment_count>
    <who name="Edward Rudd">urkle</who>
    <bug_when>2010-04-16 17:09:23 -0700</bug_when>
    <thetext>Opera as well does not exhibit this behaviour..  It follows what IE and Firefox (and the 2.0 spec stated).  I know that there are many many people frustrated with webkit&apos;s behavior and this saddens me that you are refusing to change this behavior despite the BAD user experience it provide..  I should not HAVE to add javascript to make a form work correctly as users press enter to goto the next field ALL the time unfortunately due to the way other user interface dialogs in the OS are designed.   And this leads me with no choice but to ban webkit from my web applications until this is actually changed. as I have users frustrated because of webkit&apos;s behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213515</commentid>
    <comment_count>7</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2010-04-16 17:19:27 -0700</bug_when>
    <thetext>The other browsers agree that it should submit if you hit enter if there&apos;s a submit button, right?

Why would it be different without a button?

All the spec is saying is that browsers have to be consistent. It doesn&apos;t require that enter submit a form, only that IF enter submits a form, it does so whether there&apos;s a button or not.

(An easy way to work around this if it&apos;s really a problem is to disable the first button in the form.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213527</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-04-16 17:32:02 -0700</bug_when>
    <thetext>&gt; I paraded on #whatwg for a bit with this question

Sorry, I didn&apos;t see that before posting my comment.

Anyway, I think that IE/Firefox/Opera are logical and consistent here. Pressing Enter activates the default button, so if there is no default button, then nothing is activated.

This is how it works in native applications, too - pressing Enter dismisses a dialog that has an &quot;OK&quot; button with appropriate special rendering (e.g. a thicker border, or a different color, or pulsating). But pressing Enter in a text field does not close windows that lack an &quot;OK&quot; button.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213539</commentid>
    <comment_count>9</comment_count>
    <who name="Edward Rudd">urkle</who>
    <bug_when>2010-04-16 17:52:49 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Anyway, I think that IE/Firefox/Opera are logical and consistent here. Pressing
&gt; Enter activates the default button, so if there is no default button, then
&gt; nothing is activated.

And the issue I have is I have forms with no submit button and they get submitted.  But even with a button there&apos;s no easy way to state &quot;I want NO default&quot; without using javascript.

&gt; 
&gt; This is how it works in native applications, too - pressing Enter dismisses a
&gt; dialog that has an &quot;OK&quot; button with appropriate special rendering (e.g. a
&gt; thicker border, or a different color, or pulsating). But pressing Enter in a
&gt; text field does not close windows that lack an &quot;OK&quot; button.

But how many of those dialogs with multiple fields go &quot;default&quot; on enter? When you are presented with a form with multiple inputs most of the time enter servers the same as TAB.  the user experience of having a half submitted form submit when they press enter is HORRID.  And I believe that is why no other browser (aside from webkit) does it that way.  with a auto submission  in the middle of a MULTI field form just BEGS for accidental submissions. And NO javascript is not a clean and acceptable workaround..    The only case where I expect and enter to implicitly submit (and this is from web AND desktops) is where there is ONE single input field.  As that makes sense there as I&apos;m searching.. but a multi-input field form?? That doesn&apos;t makes sense, it creates a bad user experience.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213561</commentid>
    <comment_count>10</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-16 19:20:13 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; I paraded on #whatwg for a bit with this question
&gt; 
&gt; Sorry, I didn&apos;t see that before posting my comment.
&gt; 
&gt; Anyway, I think that IE/Firefox/Opera are logical and consistent here. Pressing
&gt; Enter activates the default button, so if there is no default button, then
&gt; nothing is activated.

I would argue that their behavior is the least consistent one. It works like this:

When user presses enter in a text field with no submit button:
* If this is the only text field in a form, submit the form
* Otherwise, do not submit.

Whereas WebKit just always submits, like the spec prescribes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213565</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-04-16 20:12:57 -0700</bug_when>
    <thetext>I don&apos;t think that the current HTML5 draft should influence our decision much. Every other major browser engine behaves differently from WebKit, and we have well founded complaints about WebKit behavior.

&gt; * If this is the only text field in a form, submit the form
&gt; * Otherwise, do not submit.

I agree that the single-input case is inconsistent, both internally and with platform conventions. But WebKit is instead inconsistent with platform conventions in the more common case of having more than one input. And as explained by Edward above, the action of accidentally submitting an incomplete form is a dangerous one, so we shouldn&apos;t make it too easy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213566</commentid>
    <comment_count>12</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-16 20:15:26 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; I don&apos;t think that the current HTML5 draft should influence our decision much.
&gt; Every other major browser engine behaves differently from WebKit, and we have
&gt; well founded complaints about WebKit behavior.
&gt; 
&gt; &gt; * If this is the only text field in a form, submit the form
&gt; &gt; * Otherwise, do not submit.
&gt; 
&gt; I agree that the single-input case is inconsistent, both internally and with
&gt; platform conventions. But WebKit is instead inconsistent with platform
&gt; conventions in the more common case of having more than one input. And as
&gt; explained by Edward above, the action of accidentally submitting an incomplete
&gt; form is a dangerous one, so we shouldn&apos;t make it too easy.

Then we should change the spec :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213599</commentid>
    <comment_count>13</comment_count>
    <who name="Edward Rudd">urkle</who>
    <bug_when>2010-04-17 06:04:17 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; 
&gt; Then we should change the spec :)

How does one go about getting input into the HTML5 spec then? As I&apos;ll be glad to push input into there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214970</commentid>
    <comment_count>14</comment_count>
      <attachid>53883</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-20 14:57:39 -0700</bug_when>
    <thetext>Created attachment 53883
Fairly comprehensive layout test

Also works in manual mode (for testing in Firefox/Opera -- sorry no IE).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215412</commentid>
    <comment_count>15</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-21 11:09:24 -0700</bug_when>
    <thetext>Here&apos;s the description of what FF does when in text input: http://mxr.mozilla.org/mozilla-central/source/content/html/content/src/nsHTMLInputElement.cpp#2022

It does basically the same when in radio/checkbox:

http://mxr.mozilla.org/mozilla-central/source/content/html/content/src/nsHTMLInputElement.cpp#1956</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215553</commentid>
    <comment_count>16</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-21 16:14:04 -0700</bug_when>
    <thetext>Investigating this change, I arrived at a few tests that will fail once we match our behavior with IE/FF:

Neither IE nor FF pass these:
http://trac.webkit.org/browser/trunk/LayoutTests/fast/forms/select-enter-key.html
http://trac.webkit.org/browser/trunk/LayoutTests/fast/forms/check-box-enter-key.html

IE doesn&apos;t pass this:
http://trac.webkit.org/browser/trunk/LayoutTests/fast/forms/enter-clicks-buttons.html

With the fast/forms/select-enter-key.html, no other browsers will submit on Enter when focused on a select under any circumstances. However, there&apos;s bug 12417 where we need to submit on Enter. 

With fast/forms/check-box-enter-key.html and fast/forms/enter-clicks-buttons.html,Firefox will submit on Enter when focused on a checkbox or radio if there&apos;s only a text field in the form or a submit button. IE won&apos;t. Ideally, we should just match IE, but there&apos;s a bug in rdar (http://trac.webkit.org/changeset/9232), where we need to submit on Enter.

To compromise, I&apos;ll make the behavior for selects and checkboxes consistent with how Firefox treats checkboxes: if there&apos;s a single text field, we submit. Otherwise, we don&apos;t. This takes care of all of our cases and their variants while still helps us match most of the other browsers. 

 is something we can easily address, because I don&apos;t think this was a proper regression test for the original issue anyway, and  will work once the form is less nonsensical (i.e. has at least one text field).

So the solution to match IE/FF on everything except:
* match FF but not IE on forms with single text field and a focused checkbox (will submit on Enter)
* match IE, but not FF on forms with single text field and a focused radio (won&apos;t submit on Enter)
* match neither IE nor FF on forms with single text field and a focused select (will submit on Enter).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215554</commentid>
    <comment_count>17</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-21 16:15:15 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt;  is something we can easily address, because I don&apos;t think this was a proper
&gt; regression test for the original issue anyway, and  will work once the form is
&gt; less nonsensical (i.e. has at least one text field).

Argh :) Edit fail. Ignore this paragraph.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215558</commentid>
    <comment_count>18</comment_count>
      <attachid>54001</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-21 16:19:15 -0700</bug_when>
    <thetext>Created attachment 54001
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215562</commentid>
    <comment_count>19</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-21 16:29:36 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; With the fast/forms/select-enter-key.html, no other browsers will submit on
&gt; Enter when focused on a select under any circumstances. However, there&apos;s bug
&gt; 12417 where we need to submit on Enter. 

I don&apos;t see how this is related to submit on enter with select elements.

&gt; With fast/forms/check-box-enter-key.html and
&gt; fast/forms/enter-clicks-buttons.html,Firefox will submit on Enter when focused
&gt; on a checkbox or radio if there&apos;s only a text field in the form or a submit
&gt; button. IE won&apos;t. Ideally, we should just match IE, but there&apos;s a bug in rdar
&gt; (http://trac.webkit.org/changeset/9232), where we need to submit on Enter.

This is 5 years old and could well be obsolete at this point.

&gt; To compromise, I&apos;ll make the behavior for selects and checkboxes consistent
&gt; with how Firefox treats checkboxes: if there&apos;s a single text field, we submit.
&gt; Otherwise, we don&apos;t. This takes care of all of our cases and their variants
&gt; while still helps us match most of the other browsers. 
&gt;
&gt; So the solution to match IE/FF on everything except:
&gt; * match FF but not IE on forms with single text field and a focused checkbox
&gt; (will submit on Enter)
&gt; * match IE, but not FF on forms with single text field and a focused radio
&gt; (won&apos;t submit on Enter)
&gt; * match neither IE nor FF on forms with single text field and a focused select
&gt; (will submit on Enter).

I&apos;m OK with submitting the form iff there is a submit button and/or focus is in the only text input in the form. Submitting the form when you have a checkbox or a radio selected only if there is a single text field seems like it will only confuse users. Doing the hybrid approach you suggest above seems doubly insane. Do we really have any evidence there are still websites that on this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215924</commentid>
    <comment_count>20</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-22 09:48:05 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #16)
&gt; &gt; With the fast/forms/select-enter-key.html, no other browsers will submit on
&gt; &gt; Enter when focused on a select under any circumstances. However, there&apos;s bug
&gt; &gt; 12417 where we need to submit on Enter. 
&gt; 
&gt; I don&apos;t see how this is related to submit on enter with select elements.

Well... there&apos;s a test that captures the behavior. Perhaps it had more to do with multiple form submission protection?
 
&gt; &gt; With fast/forms/check-box-enter-key.html and
&gt; &gt; fast/forms/enter-clicks-buttons.html,Firefox will submit on Enter when focused
&gt; &gt; on a checkbox or radio if there&apos;s only a text field in the form or a submit
&gt; &gt; button. IE won&apos;t. Ideally, we should just match IE, but there&apos;s a bug in rdar
&gt; &gt; (http://trac.webkit.org/changeset/9232), where we need to submit on Enter.
&gt; 
&gt; This is 5 years old and could well be obsolete at this point.

Yep.

&gt; &gt; To compromise, I&apos;ll make the behavior for selects and checkboxes consistent
&gt; &gt; with how Firefox treats checkboxes: if there&apos;s a single text field, we submit.
&gt; &gt; Otherwise, we don&apos;t. This takes care of all of our cases and their variants
&gt; &gt; while still helps us match most of the other browsers. 
&gt; &gt;
&gt; &gt; So the solution to match IE/FF on everything except:
&gt; &gt; * match FF but not IE on forms with single text field and a focused checkbox
&gt; &gt; (will submit on Enter)
&gt; &gt; * match IE, but not FF on forms with single text field and a focused radio
&gt; &gt; (won&apos;t submit on Enter)
&gt; &gt; * match neither IE nor FF on forms with single text field and a focused select
&gt; &gt; (will submit on Enter).
&gt; 
&gt; I&apos;m OK with submitting the form iff there is a submit button and/or focus is in
&gt; the only text input in the form. Submitting the form when you have a checkbox
&gt; or a radio selected only if there is a single text field seems like it will
&gt; only confuse users. Doing the hybrid approach you suggest above seems doubly
&gt; insane. Do we really have any evidence there are still websites that on this?

On matching behavior of other browsers (with single text field), yes, there are sites that rely on that (see URL of this bug). I would say that doesn&apos;t even matter -- no matter how obscure the behavior is, we should strive to match it to spec or &quot;state of the world&quot; (as defined by IE/FF).

On the hybrid approach, I am not sure if we&apos;re better off just matching IE or doing the hybrid. I could be persuaded either way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215926</commentid>
    <comment_count>21</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-22 09:50:07 -0700</bug_when>
    <thetext>&gt; &gt; I&apos;m OK with submitting the form iff there is a submit button and/or focus is in
&gt; &gt; the only text input in the form. Submitting the form when you have a checkbox
&gt; &gt; or a radio selected only if there is a single text field seems like it will
&gt; &gt; only confuse users. Doing the hybrid approach you suggest above seems doubly
&gt; &gt; insane. Do we really have any evidence there are still websites that on this?

Blergh. I misread what you wrote. I think you&apos;re leaning toward matching IE here, which I am ok with. Alexey, what do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215937</commentid>
    <comment_count>22</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-04-22 10:12:10 -0700</bug_when>
    <thetext>If changes that affect existing tests are questionable, then you can consider spinning those into separate bugs. But they look fine to me.

&gt; With the fast/forms/select-enter-key.html, no other browsers will submit on
&gt; Enter when focused on a select under any circumstances. However, there&apos;s
&gt; bug 12417 where we need to submit on Enter. 

That&apos;s bad copy/paste, the ChangeLog should have mentioned bug 12697 instead. The original test case in the bug had a submit button, so I think that we can just fix the test here.

&gt; Ideally, we should just match IE, but there&apos;s a bug in rdar
&gt; (http://trac.webkit.org/changeset/9232), where we need to submit on Enter.

&lt;rdar://problem/4105097&gt; doesn&apos;t mention any specific site, it just says that hitting Enter on a checkbox should submit a form. I think that we can change these tests to have a Submit button, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215939</commentid>
    <comment_count>23</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-22 10:16:31 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; &gt; &gt; I&apos;m OK with submitting the form iff there is a submit button and/or focus is in
&gt; &gt; &gt; the only text input in the form. Submitting the form when you have a checkbox
&gt; &gt; &gt; or a radio selected only if there is a single text field seems like it will
&gt; &gt; &gt; only confuse users. Doing the hybrid approach you suggest above seems doubly
&gt; &gt; &gt; insane. Do we really have any evidence there are still websites that on this?
&gt; 
&gt; Blergh. I misread what you wrote. I think you&apos;re leaning toward matching IE
&gt; here, which I am ok with. Alexey, what do you think?

Yes. We should just match IE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215940</commentid>
    <comment_count>24</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-04-22 10:17:15 -0700</bug_when>
    <thetext>&gt; &gt; Blergh. I misread what you wrote. I think you&apos;re leaning toward matching IE
&gt; &gt; here, which I am ok with. Alexey, what do you think?
&gt; 
&gt; Yes. We should just match IE.

Also, maybe we should file mozilla bugs to see if they&apos;ll do the same?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216324</commentid>
    <comment_count>25</comment_count>
      <attachid>54001</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-23 00:58:23 -0700</bug_when>
    <thetext>Comment on attachment 54001
Patch

This change is probable file.  I&apos;m giving it an r- mostly for the abysmal change log.

LayoutTests/fast/forms/implicit-submission.html:59
 +      var html = &quot;&lt;form action=\&quot;data:text/html,&lt;scri&quot; + &quot;pt&gt;javascript:parent.postMessage(&apos;y&apos;, &apos;*&apos;)&lt;/scri&quot; + &quot;pt&gt;\&quot;&gt;&quot;;
Clever

LayoutTests/fast/forms/implicit-submission.html:73
 +              html += &quot;&lt;input type=\&quot;&quot; + type + &quot;\&quot; id=\&quot;&quot; + id + &quot;\&quot;&gt;&quot;;
This might be easier to do with the DOM.

LayoutTests/fast/forms/implicit-submission.html:93
 +      iframe.src = &quot;data:text/html,&lt;scri&quot; + &quot;pt&gt;var manifest = \&quot;&quot; + manifest[1] + &quot;\&quot;;\n&quot; + String(runTestInIframe) + 
You actually only need to split the close script tag.  You can leave the open tag in tact.

WebCore/ChangeLog:7
 +  
Can you add more information to the change log?  There was a lot of good discussion on the bug.  We should summarize the conclusions here for posterity in case we need to revisit this issue.

WebCore/html/HTMLFormElement.cpp:609
 +          if (formElements[i]-&gt;hasLocalName(inputTag) &amp;&amp; (static_cast&lt;HTMLInputElement*&gt;(formElements[i]))-&gt;isTextField() &amp;&amp; ++textControlCount &gt; 1)
I hate this static cast pattern, but I realize it&apos;s endemic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216403</commentid>
    <comment_count>26</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-23 07:51:42 -0700</bug_when>
    <thetext>Thanks for review, Adam -- we haven&apos;t concluded the discussion yet though :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216661</commentid>
    <comment_count>27</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-23 18:38:34 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Thanks for review, Adam -- we haven&apos;t concluded the discussion yet though :)

Ah, then it&apos;s impossible to r+ that patch then.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218622</commentid>
    <comment_count>28</comment_count>
      <attachid>54617</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-28 14:04:00 -0700</bug_when>
    <thetext>Created attachment 54617
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219057</commentid>
    <comment_count>29</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-29 08:54:32 -0700</bug_when>
    <thetext>Landed as http://trac.webkit.org/changeset/58520.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219066</commentid>
    <comment_count>30</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-29 09:21:22 -0700</bug_when>
    <thetext>Looks like this lit the tree. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219067</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-29 09:21:43 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/58520 might have broken GTK Linux 32-bit Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219069</commentid>
    <comment_count>32</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-29 09:25:25 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; Looks like this lit the tree. :(

My bad. I added a few extra cases to the test and forgot to update the expectations. Updated in http://trac.webkit.org/changeset/58521.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>224037</commentid>
    <comment_count>33</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-05-11 11:28:48 -0700</bug_when>
    <thetext>This change has caused bug 38913.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233756</commentid>
    <comment_count>34</comment_count>
    <who name="Edward Rudd">urkle</who>
    <bug_when>2010-06-03 07:55:16 -0700</bug_when>
    <thetext>WOOHOO..  I&apos;ve confirmed it fixed things with my web application using Webkit/534 (what is included in Google Chrome 6.0.408.1).

Thanks to all those who got this issue patched.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240247</commentid>
    <comment_count>35</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2010-06-18 20:11:30 -0700</bug_when>
    <thetext>So far we&apos;ve had two complaints from developers about the new behavior in Safari 5.  One report has the test case below - shouldn&apos;t this work?

&lt;form action=&quot;http://www.apple.com&quot; method=&quot;post&quot; name=&quot;FormName&quot;&gt;
	&lt;select name=&quot;test&quot; size=&quot;1&quot;&gt;
		&lt;option value=&quot;a&quot;&gt;a&lt;/option&gt;
		&lt;option value=&quot;b&quot;&gt;b&lt;/option&gt;
		&lt;option value=&quot;c&quot;&gt;c&lt;/option&gt;
	&lt;/select&gt;
	&lt;input type=&quot;submit&quot; value=&quot;Save Changes&quot;&gt;
&lt;/form&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240249</commentid>
    <comment_count>36</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-06-18 20:19:54 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; So far we&apos;ve had two complaints from developers about the new behavior in Safari 5.  One report has the test case below - shouldn&apos;t this work?
&gt; 
&gt; &lt;form action=&quot;http://www.apple.com&quot; method=&quot;post&quot; name=&quot;FormName&quot;&gt;
&gt;     &lt;select name=&quot;test&quot; size=&quot;1&quot;&gt;
&gt;         &lt;option value=&quot;a&quot;&gt;a&lt;/option&gt;
&gt;         &lt;option value=&quot;b&quot;&gt;b&lt;/option&gt;
&gt;         &lt;option value=&quot;c&quot;&gt;c&lt;/option&gt;
&gt;     &lt;/select&gt;
&gt;     &lt;input type=&quot;submit&quot; value=&quot;Save Changes&quot;&gt;
&gt; &lt;/form&gt;

Hitting Enter from select doesn&apos;t trigger anything in IE, ever. But while it seems prudent to match IE in all cases, this one is just not very logical. Maybe we could deviate from our commitment in this case? In other words:

* hitting enter on select doesn&apos;t trigger implicit submission
* if a default button is present, act like a checkbox (submit that is).

WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240263</commentid>
    <comment_count>37</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2010-06-18 21:00:06 -0700</bug_when>
    <thetext>I&apos;m not sure.  Its hard for me to tell if the complaints are due to people having to change their behavior, or if there&apos;s more behind it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240794</commentid>
    <comment_count>38</comment_count>
    <who name="">spamfilter</who>
    <bug_when>2010-06-21 11:41:10 -0700</bug_when>
    <thetext>As a Safari user and developer I do not like this change. I work with forms daily where the old behavior was useful and expected. Those forms have a submit button far from the selects. I often have to scroll the page to find the select button to click it. That&apos;s a lot more work than just pressing the enter key on a selected select element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242090</commentid>
    <comment_count>39</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-23 14:39:30 -0700</bug_when>
    <thetext>There is a bug 39532 tracking select behavior. It&apos;s better to comment there.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>53883</attachid>
            <date>2010-04-20 14:57:39 -0700</date>
            <delta_ts>2010-04-20 14:57:39 -0700</delta_ts>
            <desc>Fairly comprehensive layout test</desc>
            <filename>implicit-submission.html</filename>
            <type>text/html</type>
            <size>3007</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8dGl0bGU+SW1wbGljaXQgRm9ybSBTdWJtaXNzaW9uPC90aXRsZT4KPHNj
cmlwdD4KCnZhciB0ZXN0UmVzdWx0cyA9IFtdOwp2YXIgY3VycmVudFRlc3QgPSAwOwoKdmFyIGFs
bFRlc3RzID0gWwogICAgWyAiU2luZ2xlIHRleHQgaW5wdXQiLCAiIXRleHQiLCAieSIgXSwKICAg
IFsgIk11bHRpcGxlIHRleHQgaW5wdXRzIiwgIiF0ZXh0LHRleHQiLCAibiIgXSwKICAgIFsgIlRl
eHQgaW5wdXQgYW5kIHRleHQgYXJlYSwgdGV4dCBpbnB1dCBmb2N1c2VkIiwgIiF0ZXh0LHRleHRh
cmVhIiwgIm4iIF0sCiAgICBbICJUZXh0IGlucHV0IGFuZCBjaGVja2JveCwgdGV4dCBpbnB1dCBm
b2N1c2VkIiwgIiF0ZXh0LGNoZWNrYm94IiwgIm4iIF0sCiAgICBbICJUZXh0IGlucHV0IGFuZCBy
YWRpbywgdGV4dCBpbnB1dCBmb2N1c2VkIiwgIiF0ZXh0LHJhZGlvIiwgIm4iIF0sCiAgICBbICJU
ZXh0IGlucHV0IGFuZCB0ZXh0IGFyZWEsIHRleHRhcmVhIGZvY3VzZWQiLCAidGV4dCwhdGV4dGFy
ZWEiLCAibiIgXSwKICAgIFsgIlRleHQgaW5wdXQgYW5kIGNoZWNrYm94LCBjaGVja2JveCBmb2N1
c2VkIiwgInRleHQsIWNoZWNrYm94IiwgIm4iIF0sCiAgICBbICJUZXh0IGlucHV0IGFuZCByYWRp
bywgcmFkaW8gZm9jdXNlZCIsICJ0ZXh0LCFyYWRpbyIsICJuIiBdCl07CgppZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CiAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CiAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cn0KCmFkZEV2ZW50
TGlzdGVuZXIoJ21lc3NhZ2UnLCBmdW5jdGlvbihlKSB7CiAgICB0ZXN0UmVzdWx0cy5wdXNoKGUu
ZGF0YSk7CiAgICB0ZXN0LmlubmVySFRNTCA9ICIiOwogICAgaWYgKHRlc3RSZXN1bHRzLmxlbmd0
aCA9PSBhbGxUZXN0cy5sZW5ndGgpIHsKICAgICAgICBwdWJsaXNoUmVzdWx0cygpOwogICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKICAgIH0gZWxzZSB7CiAgICAgICAgcnVuTmV4dFRlc3Qo
KTsKICAgIH0KfSwgZmFsc2UpCgpmdW5jdGlvbiBwdWJsaXNoUmVzdWx0cygpCnsKICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgPSBhbGxUZXN0cy5tYXAoZnVuY3Rp
b24obWFuaWZlc3QsIGkpCiAgICB7CiAgICAgICAgcmV0dXJuIG1hbmlmZXN0WzBdICsgIjogIiAr
ICh0ZXN0UmVzdWx0c1tpXSA9PSBtYW5pZmVzdFsyXSA/ICJQQVNTIiA6ICJGQUlMIik7CiAgICB9
KS5qb2luKCI8YnI+Iik7Cn0KCmZ1bmN0aW9uIHJ1bk5leHRUZXN0KCkKewogICAgKytjdXJyZW50
VGVzdDsKICAgIHJ1blRlc3QoKQp9CgpmdW5jdGlvbiBydW5UZXN0SW5JZnJhbWUoKQp7CiAgICB2
YXIgaHRtbCA9ICI8Zm9ybSBhY3Rpb249XCJkYXRhOnRleHQvaHRtbCw8c2NyaSIgKyAicHQ+amF2
YXNjcmlwdDpwYXJlbnQucG9zdE1lc3NhZ2UoJ3knLCAnKicpPC9zY3JpIiArICJwdD5cIj4iOwog
ICAgbWFuaWZlc3Quc3BsaXQoIiwiKS5mb3JFYWNoKGZ1bmN0aW9uKHR5cGUsIGkpCiAgICB7CiAg
ICAgICAgdmFyIGZvY3VzZWQ7CiAgICAgICAgaWYgKHR5cGVbMF0gPT0gJyEnKSB7CiAgICAgICAg
ICAgIHR5cGUgPSB0eXBlLnN1YnN0cigxKTsKICAgICAgICAgICAgZm9jdXNlZCA9IHRydWU7CiAg
ICAgICAgfQogICAgICAgIHZhciBpZCA9IGZvY3VzZWQgPyAiZm9jdXNlZCIgOiAoImlucHV0IiAr
IGkpOwogICAgICAgIGlmICh0eXBlID09ICJ0ZXh0YXJlYSIpCiAgICAgICAgICAgIGh0bWwgKz0g
Ijx0ZXh0YXJlYSBpZD1cIiIgKyBpZCArICJcIj48L3RleHRhcmVhPiI7CiAgICAgICAgZWxzZQog
ICAgICAgICAgICBodG1sICs9ICI8aW5wdXQgdHlwZT1cIiIgKyB0eXBlICsgIlwiIGlkPVwiIiAr
IGlkICsgIlwiPiI7CiAgICB9KTsKICAgIGh0bWwgKz0gIjwvZm9ybT4iOwogICAgaWYgKCF3aW5k
b3cuZXZlbnRTZW5kZXIpCiAgICAgICAgaHRtbCA9ICI8cD5QcmVzcyBFbnRlciBrZXkiICsgaHRt
bCArICI8YSBocmVmPVwiamF2YXNjcmlwdDpwYXJlbnQucG9zdE1lc3NhZ2UoJ24nLCAnKicpXCI+
Q2xpY2sgaWYgZGlkbid0IHN1Ym1pdDwvYT4iOwogICAgZG9jdW1lbnQuYm9keS5pbm5lckhUTUwg
PSBodG1sOwogICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZvY3VzZWQi
KTsKICAgIGlucHV0LmZvY3VzKCk7CiAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CiAgICAg
ICAgZXZlbnRTZW5kZXIua2V5RG93bigiXHIiLCBbXSk7CiAgICAgICAgc2V0VGltZW91dCgicGFy
ZW50LnBvc3RNZXNzYWdlKCduJywgJyonKTsiLCA1MCk7CiAgICB9Cn0KCmZ1bmN0aW9uIHJ1blRl
c3QoKQp7CiAgICB2YXIgbWFuaWZlc3QgPSBhbGxUZXN0c1tjdXJyZW50VGVzdF07CiAgICB2YXIg
dGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CiAgICB2YXIgaWZyYW1lID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CiAgICBpZnJhbWUuc3JjID0gImRhdGE6
dGV4dC9odG1sLDxzY3JpIiArICJwdD52YXIgbWFuaWZlc3QgPSBcIiIgKyBtYW5pZmVzdFsxXSAr
ICJcIjtcbiIgKyBTdHJpbmcocnVuVGVzdEluSWZyYW1lKSArIAogICAgICAgICAgICAgICAgICI8
L3NjcmkiICsgInB0Pjxib2R5IG9ubG9hZD1cInJ1blRlc3RJbklmcmFtZSgpXCI+PC9ib2R5PiI7
CiAgICB0ZXN0LmFwcGVuZENoaWxkKGlmcmFtZSk7Cn0KCmZ1bmN0aW9uIHJ1bigpCnsKICAgIHJ1
blRlc3QoKTsKfQoKPC9zY3JpcHQ+CjwvaGVhZD4KPGJvZHkgb25sb2FkPSJydW4oKSI+CiAgICA8
cD5UZXN0cyB2YXJpb3VzIGNvbWJpbmF0aW9ucyBvZiBmb3JtIGVsZW1lbnRzIGFuZCBob3cgaW1w
bGljaXQgc3VibWlzc2lvbiB3b3JrcyB3aXRoIHRoZW0uCiAgICA8ZGl2IGlkPSJ0ZXN0Ij48L2Rp
dj4KICAgIDxkaXYgaWQ9ImxvZyI+PC9kaXY+CjwvYm9keT4KPC9odG1sPg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54001</attachid>
            <date>2010-04-21 16:19:15 -0700</date>
            <delta_ts>2010-04-28 14:03:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-9756-20100421161914.patch</filename>
            <type>text/plain</type>
            <size>11916</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2OTZkOTk0Li5lZTdmNmI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDQt
MjEgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBIGZvcm0gd2l0aG91dCBhIHN1
Ym1pdCBidXR0b24gdW5leHBlY3RlZGx5IHBlcmZvcm1zIGl0cyBhY3Rpb24gd2hlbiBSZXR1cm4g
aXMgcHJlc3NlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTc1NgorCisgICAgICAgICogZmFzdC9mb3Jtcy9pbXBsaWNpdC1zdWJtaXNzaW9uLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9pbXBsaWNpdC1zdWJtaXNzaW9u
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvY2hlY2stYm94LWVudGVyLWtleS1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQgYmVjYXVzZSBpdCdzIG5vdyBwYXJ0IG9mIGltcGxpY2l0LXN1
Ym1pc3Npb24uaHRtbC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL2NoZWNrLWJveC1lbnRlci1rZXku
aHRtbDogRGl0dG8uCisgICAgICAgICogZmFzdC9mb3Jtcy9zZWxlY3QtZW50ZXIta2V5LWV4cGVj
dGVkLnR4dDogRGl0dG8uCisgICAgICAgICogZmFzdC9mb3Jtcy9zZWxlY3QtZW50ZXIta2V5Lmh0
bWw6IERpdHRvLgorCiAyMDEwLTA0LTIxICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvY2hlY2stYm94LWVudGVyLWtleS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2NoZWNrLWJveC1lbnRlci1rZXktZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzM3NjU5Li4wMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvY2hlY2stYm94LWVudGVyLWtleS1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLVRoaXMgdGVzdCBjaGVja3MgdG8gc2VlIGlmIGhpdHRp
bmcgdGhlIEVudGVyIGtleSBvbiBhIGNoZWNrIGJveCBzdWJtaXRzIHRoZSBmb3JtIG9yIGNoZWNr
cyB0aGUgY2hlY2sgYm94LgotCi1JZiB0aGUgdGVzdCBwYXNzZXMsIHRoZSB0ZXh0IGJlbG93IHNo
b3VsZCBzYXkgYm90aCAidHJpZWQgdG8gc3VibWl0IGZvcm0iIGFuZCAiY2hlY2sgYm94IGlzIG5v
dCBjaGVja2VkIi4KLQotCi1UcmllZCB0byBzdWJtaXQgZm9ybS4KLUNoZWNrIGJveCBpcyBub3Qg
Y2hlY2tlZC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9jaGVjay1ib3gt
ZW50ZXIta2V5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2NoZWNrLWJveC1lbnRlci1r
ZXkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjllNzE0MS4uMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2NoZWNrLWJveC1lbnRlci1rZXkuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLTxoZWFkPgotPHNjcmlwdD4KLWZ1bmN0aW9uIHBy
aW50KG1lc3NhZ2UpCi17Ci0gICAgdmFyIHBhcmFncmFwaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImxpIik7Ci0gICAgcGFyYWdyYXBoLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKG1lc3NhZ2UpKTsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFw
cGVuZENoaWxkKHBhcmFncmFwaCk7Ci19Ci1mdW5jdGlvbiBzdWJtaXRIYW5kbGVyKGUpCi17Ci0g
ICAgZS5wcmV2ZW50RGVmYXVsdCgpOwotICAgIHByaW50KCJUcmllZCB0byBzdWJtaXQgZm9ybS4i
KTsKLSAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNoZWNrIikuY2hlY2tlZCkgewot
ICAgICAgICBwcmludCgiQ2hlY2sgYm94IGlzIGNoZWNrZWQuIik7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgcHJpbnQoIkNoZWNrIGJveCBpcyBub3QgY2hlY2tlZC4iKTsKLSAgICB9Ci19Ci1mdW5j
dGlvbiB0ZXN0KCkKLXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9ybSIpLm9uc3Vi
bWl0ID0gc3VibWl0SGFuZGxlcjsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2hlY2si
KS5mb2N1cygpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBldmVudFNlbmRl
ci5rZXlEb3duKCJcciIsIFtdKTsKLSAgICB9Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
IG9ubG9hZD0idGVzdCgpIj4KLTxwPlRoaXMgdGVzdCBjaGVja3MgdG8gc2VlIGlmIGhpdHRpbmcg
dGhlIEVudGVyIGtleSBvbiBhIGNoZWNrIGJveCBzdWJtaXRzIHRoZSBmb3JtIG9yIGNoZWNrcyB0
aGUgY2hlY2sgYm94LjwvcD4KLTxwPklmIHRoZSB0ZXN0IHBhc3NlcywgdGhlIHRleHQgYmVsb3cg
c2hvdWxkIHNheSBib3RoICJ0cmllZCB0byBzdWJtaXQgZm9ybSIgYW5kICJjaGVjayBib3ggaXMg
bm90IGNoZWNrZWQiLjwvcD4KLTxocj4KLTxmb3JtIGlkPWZvcm0+Ci08aW5wdXQgaWQ9Y2hlY2sg
dHlwZT1jaGVja2JveD4KLTwvZm9ybT4KLTxocj4KLTxwPjxvbCBpZD1jb25zb2xlPjwvb2w+PC9w
PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbXBsaWNpdC1z
dWJtaXNzaW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW1wbGljaXQt
c3VibWlzc2lvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uOTQ3NGVmMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW1w
bGljaXQtc3VibWlzc2lvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGVzdHMgdmFy
aW91cyBjb21iaW5hdGlvbnMgb2YgZm9ybSBlbGVtZW50cyBhbmQgaG93IGltcGxpY2l0IHN1Ym1p
c3Npb24gd29ya3Mgd2l0aCB0aGVtLgorCitTaW5nbGUgdGV4dCBpbnB1dCBzaG91bGQgc3VibWl0
OiBQQVNTCitNdWx0aXBsZSB0ZXh0IGlucHV0cyBzaG91bGQgbm90IHN1Ym1pdDogUEFTUworVGV4
dCBpbnB1dCBhbmQgdGV4dCBhcmVhLCB0ZXh0IGlucHV0IGZvY3VzZWQgc2hvdWxkIHN1Ym1pdDog
UEFTUworVGV4dCBpbnB1dCBhbmQgY2hlY2tib3gsIHRleHQgaW5wdXQgZm9jdXNlZCBzaG91bGQg
c3VibWl0OiBQQVNTCitUZXh0IGlucHV0IGFuZCByYWRpbywgdGV4dCBpbnB1dCBmb2N1c2VkIHNo
b3VsZCBzdWJtaXQ6IFBBU1MKK1RleHQgaW5wdXQgYW5kIHRleHQgYXJlYSwgdGV4dGFyZWEgZm9j
dXNlZCBzaG91bGQgbm90IHN1Ym1pdDogUEFTUworVGV4dCBpbnB1dCBhbmQgY2hlY2tib3gsIGNo
ZWNrYm94IGZvY3VzZWQgc2hvdWxkIHN1Ym1pdDogUEFTUworVGV4dCBpbnB1dCBhbmQgcmFkaW8s
IHJhZGlvIGZvY3VzZWQgc2hvdWxkIG5vdCBzdWJtaXQ6IFBBU1MKK1NpbmdsZSByYWRpbyBzaG91
bGQgbm90IHN1Ym1pdDogUEFTUworU2luZ2xlIGNoZWNrYm94IHNob3VsZCBub3Qgc3VibWl0OiBQ
QVNTCitTaW5nbGUgc2VsZWN0IHNob3VsZCBub3Qgc3VibWl0OiBQQVNTCitUZXh0IGZpZWxkIGFu
ZCBzaW5nbGUgc2VsZWN0LCB0ZXh0IGZvY3VzZWQgc2hvdWxkIHN1Ym1pdDogUEFTUworVGV4dCBm
aWVsZCBhbmQgc2luZ2xlIHNlbGVjdCwgc2VsZWN0IGZvY3VzZWQgc2hvdWxkIHN1Ym1pdDogUEFT
UwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbXBsaWNpdC1zdWJtaXNzaW9u
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ltcGxpY2l0LXN1Ym1pc3Npb24uaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MGFjNzFkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbXBsaWNpdC1zdWJtaXNzaW9uLmh0bWwKQEAg
LTAsMCArMSwxMDUgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+SW1wbGljaXQgRm9ybSBTdWJt
aXNzaW9uPC90aXRsZT4KKzxzY3JpcHQ+CisKK3ZhciB0ZXN0UmVzdWx0cyA9IFtdOwordmFyIGN1
cnJlbnRUZXN0ID0gMDsKKworLy8gbWF0Y2ggSUUgYW5kIEZGIHVubGVzcyBzcGVjaWZpZWQgb3Ro
ZXJ3aXNlLgordmFyIGFsbFRlc3RzID0gWworICAgIFsgIlNpbmdsZSB0ZXh0IGlucHV0IiwgIiF0
ZXh0IiwgInkiIF0sCisgICAgWyAiTXVsdGlwbGUgdGV4dCBpbnB1dHMiLCAiIXRleHQsdGV4dCx0
ZXh0IiwgIm4iIF0sCisgICAgWyAiVGV4dCBpbnB1dCBhbmQgdGV4dCBhcmVhLCB0ZXh0IGlucHV0
IGZvY3VzZWQiLCAiIXRleHQsdGV4dGFyZWEiLCAieSIgXSwKKyAgICBbICJUZXh0IGlucHV0IGFu
ZCBjaGVja2JveCwgdGV4dCBpbnB1dCBmb2N1c2VkIiwgIiF0ZXh0LGNoZWNrYm94IiwgInkiIF0s
CisgICAgWyAiVGV4dCBpbnB1dCBhbmQgcmFkaW8sIHRleHQgaW5wdXQgZm9jdXNlZCIsICIhdGV4
dCxyYWRpbyIsICJ5IiBdLAorICAgIFsgIlRleHQgaW5wdXQgYW5kIHRleHQgYXJlYSwgdGV4dGFy
ZWEgZm9jdXNlZCIsICJ0ZXh0LCF0ZXh0YXJlYSIsICJuIiBdLAorICAgIFsgIlRleHQgaW5wdXQg
YW5kIGNoZWNrYm94LCBjaGVja2JveCBmb2N1c2VkIiwgInRleHQsIWNoZWNrYm94IiwgInkiIF0s
IC8vIG1hdGNoIEZGLCBidXQgbm90IElFLgorICAgIFsgIlRleHQgaW5wdXQgYW5kIHJhZGlvLCBy
YWRpbyBmb2N1c2VkIiwgInRleHQsIXJhZGlvIiwgIm4iIF0sIC8vIG1hdGNoIElFLCBidXQgbm90
IEZGLgorICAgIFsgIlNpbmdsZSByYWRpbyIsICIhcmFkaW8iLCAibiIgXSwKKyAgICBbICJTaW5n
bGUgY2hlY2tib3giLCAiIWNoZWNrYm94IiwgIm4iIF0sCisgICAgWyAiU2luZ2xlIHNlbGVjdCIs
ICIhc2VsZWN0IiwgIm4iIF0sCisgICAgWyAiVGV4dCBmaWVsZCBhbmQgc2luZ2xlIHNlbGVjdCwg
dGV4dCBmb2N1c2VkIiwgIiF0ZXh0LHNlbGVjdCIsICJ5IiBdLAorICAgIFsgIlRleHQgZmllbGQg
YW5kIHNpbmdsZSBzZWxlY3QsIHNlbGVjdCBmb2N1c2VkIiwgInRleHQsIXNlbGVjdCIsICJ5IiBd
IC8vIG1hdGNoIG5laXRoZXIgSUUgbm9yIEZGLgorXTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2FkZEV2ZW50TGlz
dGVuZXIoJ21lc3NhZ2UnLCBmdW5jdGlvbihlKSB7CisgICAgdGVzdFJlc3VsdHMucHVzaChlLmRh
dGEpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0IikuaW5uZXJIVE1MID0gIiI7
CisgICAgaWYgKHRlc3RSZXN1bHRzLmxlbmd0aCA9PSBhbGxUZXN0cy5sZW5ndGgpIHsKKyAgICAg
ICAgcHVibGlzaFJlc3VsdHMoKTsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KK30sIGZhbHNlKQorCitm
dW5jdGlvbiBwdWJsaXNoUmVzdWx0cygpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImxvZyIpLmlubmVySFRNTCA9IGFsbFRlc3RzLm1hcChmdW5jdGlvbihtYW5pZmVzdCwgaSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBtYW5pZmVzdFswXSArICIgc2hvdWxkICIgKyAobWFuaWZlc3Rb
Ml0gPT0gJ24nID8gIm5vdCIgOiAiIikgKyAiIHN1Ym1pdDogIiArICh0ZXN0UmVzdWx0c1tpXSA9
PSBtYW5pZmVzdFsyXSA/ICJQQVNTIiA6ICJGQUlMIik7CisgICAgfSkuam9pbigiPGJyPiIpOwor
fQorCitmdW5jdGlvbiBydW5OZXh0VGVzdCgpCit7CisgICAgKytjdXJyZW50VGVzdDsKKyAgICBy
dW5UZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RJbklmcmFtZSgpCit7CisgICAgdmFyIGh0
bWwgPSAiPGZvcm0gYWN0aW9uPVwiZGF0YTp0ZXh0L2h0bWwsPHNjcmkiICsgInB0PmphdmFzY3Jp
cHQ6cGFyZW50LnBvc3RNZXNzYWdlKCd5JywgJyonKTwvc2NyaSIgKyAicHQ+XCI+IjsKKyAgICBt
YW5pZmVzdC5zcGxpdCgiLCIpLmZvckVhY2goZnVuY3Rpb24odHlwZSwgaSkKKyAgICB7CisgICAg
ICAgIHZhciBmb2N1c2VkOworICAgICAgICBpZiAodHlwZVswXSA9PSAnIScpIHsKKyAgICAgICAg
ICAgIHR5cGUgPSB0eXBlLnN1YnN0cigxKTsKKyAgICAgICAgICAgIGZvY3VzZWQgPSB0cnVlOwor
ICAgICAgICB9CisgICAgICAgIHZhciBpZCA9IGZvY3VzZWQgPyAiZm9jdXNlZCIgOiAoImlucHV0
IiArIGkpOworICAgICAgICBpZiAodHlwZSA9PSAidGV4dGFyZWEiKQorICAgICAgICAgICAgaHRt
bCArPSAiPHRleHRhcmVhIGlkPVwiIiArIGlkICsgIlwiPjwvdGV4dGFyZWE+IjsKKyAgICAgICAg
ZWxzZSBpZiAodHlwZSA9PSAic2VsZWN0IikKKyAgICAgICAgICAgIGh0bWwgKz0gIjxzZWxlY3Qg
aWQ9XCIiICsgaWQgKyAiXCI+PG9wdGlvbj5hPC9zZWxlY3Q+IjsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgaHRtbCArPSAiPGlucHV0IHR5cGU9XCIiICsgdHlwZSArICJcIiBpZD1cIiIgKyBp
ZCArICJcIj4iOworICAgIH0pOworICAgIGh0bWwgKz0gIjwvZm9ybT4iOworICAgIGlmICghd2lu
ZG93LmV2ZW50U2VuZGVyKQorICAgICAgICBodG1sID0gIjxwPlByZXNzIEVudGVyIGtleSIgKyBo
dG1sICsgIjxhIGhyZWY9XCJqYXZhc2NyaXB0OnBhcmVudC5wb3N0TWVzc2FnZSgnbicsICcqJylc
Ij5DbGljayBpZiBkaWRuJ3Qgc3VibWl0PC9hPiI7CisgICAgZG9jdW1lbnQuYm9keS5pbm5lckhU
TUwgPSBodG1sOworICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmb2N1
c2VkIik7CisgICAgaWYgKGlucHV0KQorICAgICAgICBpbnB1dC5mb2N1cygpOworICAgIGlmICh3
aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiXHIiLCBb
XSk7CisgICAgICAgIHNldFRpbWVvdXQoInBhcmVudC5wb3N0TWVzc2FnZSgnbicsICcqJyk7Iiwg
NTApOworICAgIH0KK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFyIG1hbmlmZXN0
ID0gYWxsVGVzdHNbY3VycmVudFRlc3RdOworICAgIHZhciB0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRlc3QiKTsKKyAgICB2YXIgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiaWZyYW1lIik7CisgICAgaWZyYW1lLnNyYyA9ICJkYXRhOnRleHQvaHRtbCw8c2NyaSIgKyAi
cHQ+dmFyIG1hbmlmZXN0ID0gXCIiICsgbWFuaWZlc3RbMV0gKyAiXCI7XG4iICsgU3RyaW5nKHJ1
blRlc3RJbklmcmFtZSkgKyAKKyAgICAgICAgICAgICAgICAgIjwvc2NyaSIgKyAicHQ+PGJvZHkg
b25sb2FkPVwicnVuVGVzdEluSWZyYW1lKClcIj48L2JvZHk+IjsKKyAgICB0ZXN0LmFwcGVuZENo
aWxkKGlmcmFtZSk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCkiPgorICAgIDxwPlRlc3RzIHZhcmlvdXMgY29tYmluYXRpb25zIG9mIGZvcm0gZWxlbWVu
dHMgYW5kIGhvdyBpbXBsaWNpdCBzdWJtaXNzaW9uIHdvcmtzIHdpdGggdGhlbS4KKyAgICA8ZGl2
IGlkPSJ0ZXN0Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJsb2ciPjwvZGl2PgorPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvc2VsZWN0LWVudGVyLWtleS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3NlbGVjdC1lbnRlci1rZXktZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjMmYyOGRmLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvc2VsZWN0LWVudGVyLWtleS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw3ICsw
LDAgQEAKLVRoaXMgdGVzdCBjaGVja3MgdG8gc2VlIGlmIGhpdHRpbmcgdGhlIEVudGVyIGtleSBv
biBhIHNlbGVjdCBib3ggc3VibWl0cyB0aGUgZm9ybSBvciBjaGVja3MgdGhlIGNoZWNrIGJveC4K
LQotSWYgdGhlIHRlc3QgcGFzc2VzLCB0aGUgdGV4dCBiZWxvdyBzaG91bGQgc2F5ICJ0cmllZCB0
byBzdWJtaXQgZm9ybSIuCi0KLQotVHJpZWQgdG8gc3VibWl0IGZvcm0uCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LWVudGVyLWtleS5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9zZWxlY3QtZW50ZXIta2V5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGQ2YjczZTUuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9z
ZWxlY3QtZW50ZXIta2V5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08aGVh
ZD4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiBwcmludChtZXNzYWdlKQotewotICAgIHZhciBwYXJhZ3Jh
cGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOwotICAgIHBhcmFncmFwaC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7Ci0gICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChwYXJhZ3JhcGgpOwotfQotZnVuY3Rp
b24gc3VibWl0SGFuZGxlcihlKQotewotICAgIGUucHJldmVudERlZmF1bHQoKTsKLSAgICBwcmlu
dCgiVHJpZWQgdG8gc3VibWl0IGZvcm0uIik7Ci19Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9ybSIpLm9uc3VibWl0ID0gc3VibWl0SGFuZGxlcjsK
LSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VsZWN0IikuZm9jdXMoKTsKLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiXHIiLCBbXSk7
Ci0gICAgfQotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InRlc3QoKSI+Ci08
cD5UaGlzIHRlc3QgY2hlY2tzIHRvIHNlZSBpZiBoaXR0aW5nIHRoZSBFbnRlciBrZXkgb24gYSBz
ZWxlY3QgYm94IHN1Ym1pdHMgdGhlIGZvcm0gb3IgY2hlY2tzIHRoZSBjaGVjayBib3guPC9wPgot
PHA+SWYgdGhlIHRlc3QgcGFzc2VzLCB0aGUgdGV4dCBiZWxvdyBzaG91bGQgc2F5ICJ0cmllZCB0
byBzdWJtaXQgZm9ybSIuPC9wPgotPGhyPgotPGZvcm0gaWQ9Zm9ybT4KLTxzZWxlY3QgaWQ9c2Vs
ZWN0IHNpemU9Mz48b3B0aW9uPmE8L29wdGlvbj48L3NlbGVjdD4KLTwvZm9ybT4KLTxocj4KLTxw
PjxvbCBpZD1jb25zb2xlPjwvb2w+PC9wPgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4OTM2YTgyLi5jMzhkZGE3IDEwMDY0
NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDE5IEBACiAyMDEwLTA0LTIxICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1
bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QSBmb3JtIHdpdGhvdXQgYSBzdWJtaXQgYnV0dG9uIHVuZXhwZWN0ZWRseSBwZXJmb3JtcyBpdHMg
YWN0aW9uIHdoZW4gUmV0dXJuIGlzIHByZXNzZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk3NTYKKworICAgICAgICBUZXN0OiBmYXN0L2Zvcm1zL2lt
cGxpY2l0LXN1Ym1pc3Npb24uaHRtbAorCisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpzdWJtaXRDbGljayk6IEFk
ZGVkIGEgY2hlY2sgdG8gc2VlIGlmIHRoZSBmb3JtIGhhcyBhIHNpbmdsZSB0ZXh0IGlucHV0Lgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpoYXNTaW5nbGVUZXh0Q29udHJvbCk6
IEFkZGVkLgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50Lmg6IEFkZGVkIGRlY2wgZm9y
IGhhc1NpbmdsZVRleHRDb250cm9sLgorCisyMDEwLTA0LTIxICBEaW1pdHJpIEdsYXprb3YgIDxk
Z2xhemtvdkBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CiAKICAgICAgICAgUkVHUkVTU0lPTihyNTcyOTIpOiBTYWZhcmkvV2luIGFuZCBDaHJvbWl1bS9X
aW4gbm8gbG9uZ2VyIHBhc3MgdGhlIGFjaWQzIHRlc3QuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3Bw
CmluZGV4IGNhZmEzYzkuLmY4MDdjMjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0x
ODgsNyArMTg4LDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdENsaWNrKEV2ZW50KiBl
dmVudCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoIXN1Ym1pdEZv
dW5kKSAvLyBzdWJtaXQgdGhlIGZvcm0gd2l0aG91dCBhIHN1Ym1pdCBvciBpbWFnZSBpbnB1dAor
ICAgIGlmICghc3VibWl0Rm91bmQgJiYgaGFzU2luZ2xlVGV4dENvbnRyb2woKSkgLy8gc3VibWl0
IHRoZSBmb3JtIHdpdGhvdXQgYSBzdWJtaXQgb3IgaW1hZ2UgaW5wdXQKICAgICAgICAgcHJlcGFy
ZVN1Ym1pdChldmVudCk7CiB9CiAKQEAgLTYwMiw2ICs2MDIsMTcgQEAgSFRNTEZvcm1Db250cm9s
RWxlbWVudCogSFRNTEZvcm1FbGVtZW50OjpkZWZhdWx0QnV0dG9uKCkgY29uc3QKICAgICByZXR1
cm4gMDsKIH0KIAorYm9vbCBIVE1MRm9ybUVsZW1lbnQ6Omhhc1NpbmdsZVRleHRDb250cm9sKCkg
Y29uc3QKK3sKKyAgICBpbnQgdGV4dENvbnRyb2xDb3VudCA9IDA7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGZvcm1FbGVtZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoZm9y
bUVsZW1lbnRzW2ldLT5oYXNMb2NhbE5hbWUoaW5wdXRUYWcpICYmIChzdGF0aWNfY2FzdDxIVE1M
SW5wdXRFbGVtZW50Kj4oZm9ybUVsZW1lbnRzW2ldKSktPmlzVGV4dEZpZWxkKCkgJiYgKyt0ZXh0
Q29udHJvbENvdW50ID4gMSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gdGV4dENvbnRyb2xDb3VudCA9PSAxOworfQorCiBib29sIEhUTUxGb3JtRWxlbWVu
dDo6Y2hlY2tWYWxpZGl0eSgpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxIVE1MRm9ybUNvbnRyb2xF
bGVtZW50PiA+IGNvbnRyb2xzOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxl
bWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCmluZGV4IDkyM2M3MzQuLjAz
ODY1MjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAorKysgYi9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKQEAgLTEzMSw2ICsxMzEsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKIAogcHJp
dmF0ZToKKyAgICBib29sIGhhc1NpbmdsZVRleHRDb250cm9sKCkgY29uc3Q7CiAgICAgdm9pZCBz
dWJtaXQoRXZlbnQqLCBib29sIGFjdGl2YXRlU3VibWl0QnV0dG9uLCBib29sIGxvY2tIaXN0b3J5
LCBGb3JtU3VibWlzc2lvblRyaWdnZXIpOwogCiAgICAgYm9vbCBpc01haWx0b0Zvcm0oKSBjb25z
dDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54617</attachid>
            <date>2010-04-28 14:04:00 -0700</date>
            <delta_ts>2010-04-28 16:28:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-9756-20100428140358.patch</filename>
            <type>text/plain</type>
            <size>24174</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4ZmE5NTAxZmFhNmIwOTZkYzNkN2VhOTJlZmFkZjkzMGI4YTZmZjhjLi5kNWQ3ODAw
NDJjMzc1ZTlhYjlhOGM1MWE1MGQ2MTFiZTAzZGMyOTg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMDQtMjggIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBIGZvcm0gd2l0
aG91dCBhIHN1Ym1pdCBidXR0b24gdW5leHBlY3RlZGx5IHBlcmZvcm1zIGl0cyBhY3Rpb24gd2hl
biBSZXR1cm4gaXMgcHJlc3NlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTc1NgorCisgICAgICAgIEEgY29tcHJlaGVuc2l2ZSB0ZXN0IGZvciB2YXJp
b3VzIGVkZ2UgY2FzZXMgaW52b2x2aW5nIGltcGxpY2l0IGZvcm0gc3VibWlzc2lvbi4KKworICAg
ICAgICAqIGZhc3QvZm9ybXMvaW1wbGljaXQtc3VibWlzc2lvbi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZm9ybXMvaW1wbGljaXQtc3VibWlzc2lvbi5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2Zvcm1zL2NoZWNrLWJveC1lbnRlci1rZXktZXhwZWN0ZWQudHh0OiBS
ZW1vdmVkIGJlY2F1c2UgaXQncyBub3cgcGFydCBvZiBpbXBsaWNpdC1zdWJtaXNzaW9uLmh0bWwu
CisgICAgICAgICogZmFzdC9mb3Jtcy9jaGVjay1ib3gtZW50ZXIta2V5Lmh0bWw6IERpdHRvLgor
ICAgICAgICAqIGZhc3QvZm9ybXMvc2VsZWN0LWVudGVyLWtleS1leHBlY3RlZC50eHQ6IERpdHRv
LgorICAgICAgICAqIGZhc3QvZm9ybXMvc2VsZWN0LWVudGVyLWtleS5odG1sOiBEaXR0by4KKwog
MjAxMC0wNC0yNyAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2NoZWNrLWJveC1lbnRlci1rZXktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9jaGVjay1ib3gtZW50ZXIta2V5LWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYmMzNzY1OTEyZmI1ZmVhMTdlNWQwZWE2NmJmNTI0YTM4OGFk
YzI1ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL2NoZWNrLWJveC1lbnRlci1rZXktZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1UaGlzIHRlc3QgY2hlY2tzIHRvIHNlZSBpZiBoaXR0
aW5nIHRoZSBFbnRlciBrZXkgb24gYSBjaGVjayBib3ggc3VibWl0cyB0aGUgZm9ybSBvciBjaGVj
a3MgdGhlIGNoZWNrIGJveC4KLQotSWYgdGhlIHRlc3QgcGFzc2VzLCB0aGUgdGV4dCBiZWxvdyBz
aG91bGQgc2F5IGJvdGggInRyaWVkIHRvIHN1Ym1pdCBmb3JtIiBhbmQgImNoZWNrIGJveCBpcyBu
b3QgY2hlY2tlZCIuCi0KLQotVHJpZWQgdG8gc3VibWl0IGZvcm0uCi1DaGVjayBib3ggaXMgbm90
IGNoZWNrZWQuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvY2hlY2stYm94
LWVudGVyLWtleS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9jaGVjay1ib3gtZW50ZXIt
a2V5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5ZTcxNDE4MjE0YTIxM2Rj
YzUzMDY0YTRiNTA5YTlhNjI4Y2U0MDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9jaGVjay1ib3gtZW50ZXIta2V5
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi08aGVhZD4KLTxzY3JpcHQ+Ci1m
dW5jdGlvbiBwcmludChtZXNzYWdlKQotewotICAgIHZhciBwYXJhZ3JhcGggPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJsaSIpOwotICAgIHBhcmFncmFwaC5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNv
bnNvbGUiKS5hcHBlbmRDaGlsZChwYXJhZ3JhcGgpOwotfQotZnVuY3Rpb24gc3VibWl0SGFuZGxl
cihlKQotewotICAgIGUucHJldmVudERlZmF1bHQoKTsKLSAgICBwcmludCgiVHJpZWQgdG8gc3Vi
bWl0IGZvcm0uIik7Ci0gICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjaGVjayIpLmNo
ZWNrZWQpIHsKLSAgICAgICAgcHJpbnQoIkNoZWNrIGJveCBpcyBjaGVja2VkLiIpOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIHByaW50KCJDaGVjayBib3ggaXMgbm90IGNoZWNrZWQuIik7Ci0gICAg
fQotfQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZv
cm0iKS5vbnN1Ym1pdCA9IHN1Ym1pdEhhbmRsZXI7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNoZWNrIikuZm9jdXMoKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAg
ZXZlbnRTZW5kZXIua2V5RG93bigiXHIiLCBbXSk7Ci0gICAgfQotfQotPC9zY3JpcHQ+Ci08L2hl
YWQ+Ci08Ym9keSBvbmxvYWQ9InRlc3QoKSI+Ci08cD5UaGlzIHRlc3QgY2hlY2tzIHRvIHNlZSBp
ZiBoaXR0aW5nIHRoZSBFbnRlciBrZXkgb24gYSBjaGVjayBib3ggc3VibWl0cyB0aGUgZm9ybSBv
ciBjaGVja3MgdGhlIGNoZWNrIGJveC48L3A+Ci08cD5JZiB0aGUgdGVzdCBwYXNzZXMsIHRoZSB0
ZXh0IGJlbG93IHNob3VsZCBzYXkgYm90aCAidHJpZWQgdG8gc3VibWl0IGZvcm0iIGFuZCAiY2hl
Y2sgYm94IGlzIG5vdCBjaGVja2VkIi48L3A+Ci08aHI+Ci08Zm9ybSBpZD1mb3JtPgotPGlucHV0
IGlkPWNoZWNrIHR5cGU9Y2hlY2tib3g+Ci08L2Zvcm0+Ci08aHI+Ci08cD48b2wgaWQ9Y29uc29s
ZT48L29sPjwvcD4KLTwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
aW1wbGljaXQtc3VibWlzc2lvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2ltcGxpY2l0LXN1Ym1pc3Npb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3Y2JiMDJjN2U3
MzA0MDM0ZjQ4OTBlZjFhNGZhOWMxYTg3YjRlMDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2ltcGxpY2l0LXN1Ym1pc3Npb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMjMgQEAKK1Rlc3RzIHZhcmlvdXMgY29tYmluYXRpb25zIG9mIGZvcm0gZWxlbWVudHMgYW5k
IGhvdyBpbXBsaWNpdCBzdWJtaXNzaW9uIHdvcmtzIHdpdGggdGhlbS4KKworU2luZ2xlIHRleHQg
aW5wdXQgc2hvdWxkIHN1Ym1pdDogUEFTUworTXVsdGlwbGUgdGV4dCBpbnB1dHMgc2hvdWxkIG5v
dCBzdWJtaXQ6IFBBU1MKK011bHRpcGxlIHRleHQgaW5wdXRzIHdpdGggc3VibWl0IHNob3VsZCBz
dWJtaXQ6IFBBU1MKK011bHRpcGxlIHRleHQgaW5wdXRzIHdpdGggc3VibWl0IGRpc2FibGVkIHNo
b3VsZCBub3Qgc3VibWl0OiBQQVNTCitNdWx0aXBsZSB0ZXh0IGlucHV0cyBhbmQgbXVsdGlwbGUg
c3VibWl0cywgZmlyc3Qgc3VibWl0IGRpc2FibGVkIHNob3VsZCBzdWJtaXQ6IFBBU1MKK1RleHQg
aW5wdXQgYW5kIHRleHQgYXJlYSwgdGV4dCBpbnB1dCBmb2N1c2VkIHNob3VsZCBzdWJtaXQ6IFBB
U1MKK1RleHQgaW5wdXQgYW5kIHRleHQgYXJlYSBhbmQgYSBzdWJtaXQgYnV0dG9uLCB0ZXh0IGlu
cHV0IGZvY3VzZWQgc2hvdWxkIHN1Ym1pdDogUEFTUworVGV4dCBpbnB1dCBhbmQgdGV4dCBhcmVh
IGFuZCBhIGRpc2FibGVkIHN1Ym1pdCBidXR0b24sIHRleHQgaW5wdXQgZm9jdXNlZCBzaG91bGQg
bm90IHN1Ym1pdDogUEFTUworVGV4dCBpbnB1dCBhbmQgY2hlY2tib3gsIHRleHQgaW5wdXQgZm9j
dXNlZCBzaG91bGQgc3VibWl0OiBQQVNTCitUZXh0IGlucHV0IGFuZCByYWRpbywgdGV4dCBpbnB1
dCBmb2N1c2VkIHNob3VsZCBzdWJtaXQ6IFBBU1MKK1RleHQgaW5wdXQgYW5kIHRleHQgYXJlYSwg
dGV4dGFyZWEgZm9jdXNlZCBzaG91bGQgbm90IHN1Ym1pdDogUEFTUworVGV4dCBpbnB1dCBhbmQg
Y2hlY2tib3gsIGNoZWNrYm94IGZvY3VzZWQgc2hvdWxkIG5vdCBzdWJtaXQ6IFBBU1MKK1RleHQg
aW5wdXQgYW5kIHJhZGlvLCByYWRpbyBmb2N1c2VkIHNob3VsZCBub3Qgc3VibWl0OiBQQVNTCitT
aW5nbGUgcmFkaW8gc2hvdWxkIG5vdCBzdWJtaXQ6IFBBU1MKK1NpbmdsZSBjaGVja2JveCBzaG91
bGQgbm90IHN1Ym1pdDogUEFTUworU2luZ2xlIGNoZWNrYm94IHdpdGggYSBzdWJtaXQgYnV0dG9u
IHNob3VsZCBzdWJtaXQ6IFBBU1MKK1NpbmdsZSBjaGVja2JveCB3aXRoIGEgc3VibWl0IGRpc2Fi
bGVkIHNob3VsZCBub3Qgc3VibWl0OiBQQVNTCitTaW5nbGUgc2VsZWN0IHNob3VsZCBub3Qgc3Vi
bWl0OiBQQVNTCitUZXh0IGZpZWxkIGFuZCBzaW5nbGUgc2VsZWN0LCB0ZXh0IGZvY3VzZWQgc2hv
dWxkIHN1Ym1pdDogUEFTUworVGV4dCBmaWVsZCBhbmQgc2luZ2xlIHNlbGVjdCwgc2VsZWN0IGZv
Y3VzZWQgc2hvdWxkIG5vdCBzdWJtaXQ6IFBBU1MKK0lzaW5kZXggc2hvdWxkIHN1Ym1pdDogUEFT
UwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbXBsaWNpdC1zdWJtaXNzaW9u
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2ltcGxpY2l0LXN1Ym1pc3Npb24uaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40YmYxYzUwZWJhODY2ODQ4Y2NlNmY5YmEwYWUxZDM1ZTcxZWZiYjFlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbXBsaWNpdC1zdWJtaXNzaW9u
Lmh0bWwKQEAgLTAsMCArMSwxMjkgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+SW1wbGljaXQg
Rm9ybSBTdWJtaXNzaW9uPC90aXRsZT4KKzxzY3JpcHQ+CisKK3ZhciB0ZXN0UmVzdWx0cyA9IFtd
OwordmFyIGN1cnJlbnRUZXN0ID0gMDsKKworLy8gbWF0Y2ggSUUgYW5kIEZGIHVubGVzcyBzcGVj
aWZpZWQgb3RoZXJ3aXNlLgordmFyIGFsbFRlc3RzID0gWworICAgIFsgIlNpbmdsZSB0ZXh0IGlu
cHV0IiwgIiF0ZXh0IiwgInkiIF0sCisgICAgWyAiU2luZ2xlIHRleHQgaW5wdXQgd2l0aCBzdWJt
aXQgZGlzYWJsZWQiLCAiIXRleHQsLXN1Ym1pdCIsICJ5IiBdLAorICAgIFsgIk11bHRpcGxlIHRl
eHQgaW5wdXRzIiwgIiF0ZXh0LHRleHQsdGV4dCIsICJuIiBdLAorICAgIFsgIk11bHRpcGxlIHRl
eHQgaW5wdXRzIHdpdGggc3VibWl0IiwgIiF0ZXh0LHRleHQsdGV4dCxzdWJtaXQiLCAieSIgXSwK
KyAgICBbICJNdWx0aXBsZSB0ZXh0IGlucHV0cyB3aXRoIHN1Ym1pdCBkaXNhYmxlZCIsICIhdGV4
dCx0ZXh0LHRleHQsLXN1Ym1pdCIsICJuIiBdLAorICAgIFsgIk11bHRpcGxlIHRleHQgaW5wdXRz
IGFuZCBtdWx0aXBsZSBzdWJtaXRzLCBmaXJzdCBzdWJtaXQgZGlzYWJsZWQiLCAiIXRleHQsdGV4
dCx0ZXh0LC1zdWJtaXQsc3VibWl0IiwgInkiIF0sIC8vIG1hdGNoIElFLCBub3QgRkYuCisgICAg
WyAiVGV4dCBpbnB1dCBhbmQgdGV4dCBhcmVhLCB0ZXh0IGlucHV0IGZvY3VzZWQiLCAiIXRleHQs
dGV4dGFyZWEiLCAieSIgXSwKKyAgICBbICJUZXh0IGlucHV0IGFuZCB0ZXh0IGFyZWEgYW5kIGEg
c3VibWl0IGJ1dHRvbiwgdGV4dCBpbnB1dCBmb2N1c2VkIiwgIiF0ZXh0LHRleHRhcmVhLHN1Ym1p
dCIsICJ5IiBdLAorICAgIFsgIlRleHQgaW5wdXQgYW5kIHRleHQgYXJlYSBhbmQgYSBkaXNhYmxl
ZCBzdWJtaXQgYnV0dG9uLCB0ZXh0IGlucHV0IGZvY3VzZWQiLCAiIXRleHQsdGV4dGFyZWEsLXN1
Ym1pdCIsICJ5IiBdLCAvLyBtYXRjaCBJRSwgbm90IEZGLgorICAgIFsgIlRleHQgaW5wdXQgYW5k
IGNoZWNrYm94LCB0ZXh0IGlucHV0IGZvY3VzZWQiLCAiIXRleHQsY2hlY2tib3giLCAieSIgXSwK
KyAgICBbICJUZXh0IGlucHV0IGFuZCByYWRpbywgdGV4dCBpbnB1dCBmb2N1c2VkIiwgIiF0ZXh0
LHJhZGlvIiwgInkiIF0sCisgICAgWyAiVGV4dCBpbnB1dCBhbmQgdGV4dCBhcmVhLCB0ZXh0YXJl
YSBmb2N1c2VkIiwgInRleHQsIXRleHRhcmVhIiwgIm4iIF0sCisgICAgWyAiVGV4dCBpbnB1dCBh
bmQgY2hlY2tib3gsIGNoZWNrYm94IGZvY3VzZWQiLCAidGV4dCwhY2hlY2tib3giLCAibiIgXSwg
Ly8gbWF0Y2ggSUUsIG5vdCBGRi4KKyAgICBbICJUZXh0IGlucHV0IGFuZCByYWRpbywgcmFkaW8g
Zm9jdXNlZCIsICJ0ZXh0LCFyYWRpbyIsICJuIiBdLCAvLyBtYXRjaCBJRSwgbm90IEZGLgorICAg
IFsgIlNpbmdsZSByYWRpbyIsICIhcmFkaW8iLCAibiIgXSwgLy8gbWF0Y2ggSUUsIG5vdCBGRi4K
KyAgICBbICJTaW5nbGUgY2hlY2tib3giLCAiIWNoZWNrYm94IiwgIm4iIF0sCisgICAgWyAiU2lu
Z2xlIGNoZWNrYm94IHdpdGggYSBzdWJtaXQgYnV0dG9uIiwgIiFjaGVja2JveCxzdWJtaXQiLCAi
eSIgXSwKKyAgICBbICJTaW5nbGUgY2hlY2tib3ggd2l0aCBhIHN1Ym1pdCBkaXNhYmxlZCIsICIh
Y2hlY2tib3gsLXN1Ym1pdCIsICJuIiBdLAorICAgIFsgIlNpbmdsZSBzZWxlY3QiLCAiIXNlbGVj
dCIsICJuIiBdLAorICAgIFsgIlRleHQgZmllbGQgYW5kIHNpbmdsZSBzZWxlY3QsIHRleHQgZm9j
dXNlZCIsICIhdGV4dCxzZWxlY3QiLCAieSIgXSwKKyAgICBbICJUZXh0IGZpZWxkIGFuZCBzaW5n
bGUgc2VsZWN0LCBzZWxlY3QgZm9jdXNlZCIsICJ0ZXh0LCFzZWxlY3QiLCAibiIgXSwKKyAgICBb
ICJJc2luZGV4IiwgIiFpc2luZGV4IiwgInkiXQorXTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2FkZEV2ZW50TGlz
dGVuZXIoJ21lc3NhZ2UnLCBmdW5jdGlvbihlKSB7CisgICAgdGVzdFJlc3VsdHMucHVzaChlLmRh
dGEpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0IikuaW5uZXJIVE1MID0gIiI7
CisgICAgaWYgKHRlc3RSZXN1bHRzLmxlbmd0aCA9PSBhbGxUZXN0cy5sZW5ndGgpIHsKKyAgICAg
ICAgcHVibGlzaFJlc3VsdHMoKTsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KK30sIGZhbHNlKQorCitm
dW5jdGlvbiBwdWJsaXNoUmVzdWx0cygpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImxvZyIpLmlubmVySFRNTCA9IGFsbFRlc3RzLm1hcChmdW5jdGlvbihtYW5pZmVzdCwgaSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBtYW5pZmVzdFswXSArICIgc2hvdWxkICIgKyAobWFuaWZlc3Rb
Ml0gPT0gJ24nID8gIm5vdCIgOiAiIikgKyAiIHN1Ym1pdDogIiArICh0ZXN0UmVzdWx0c1tpXSA9
PSBtYW5pZmVzdFsyXSA/ICJQQVNTIiA6ICJGQUlMIik7CisgICAgfSkuam9pbigiPGJyPiIpOwor
fQorCitmdW5jdGlvbiBydW5OZXh0VGVzdCgpCit7CisgICAgKytjdXJyZW50VGVzdDsKKyAgICBy
dW5UZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RJbklmcmFtZSgpCit7CisgICAgdmFyIGZv
cm0gPSBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImZv
cm0iKSk7CisgICAgZm9ybS5hY3Rpb24gPSAiZGF0YTp0ZXh0L2h0bWwsPHNjcmlwdD5qYXZhc2Ny
aXB0OnBhcmVudC5wb3N0TWVzc2FnZSgneScsICcqJyk8L3NjcmkiICsgInB0PiI7CisgICAgaWYg
KCF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgIGZvcm0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgicCIpKS5pbm5lckhUTUwgPSAiUHJlc3MgRW50ZXIga2V5IjsKKyAgICBt
YW5pZmVzdC5zcGxpdCgiLCIpLmZvckVhY2goZnVuY3Rpb24odHlwZSwgaSkKKyAgICB7CisgICAg
ICAgIHZhciBmb2N1c2VkOworICAgICAgICBpZiAodHlwZVswXSA9PSAnIScpIHsKKyAgICAgICAg
ICAgIHR5cGUgPSB0eXBlLnN1YnN0cigxKTsKKyAgICAgICAgICAgIGZvY3VzZWQgPSB0cnVlOwor
ICAgICAgICB9CisgICAgICAgIHZhciBkaXNhYmxlZDsKKyAgICAgICAgaWYgKHR5cGVbMF0gPT0g
Jy0nKSB7CisgICAgICAgICAgICB0eXBlID0gdHlwZS5zdWJzdHIoMSk7CisgICAgICAgICAgICBk
aXNhYmxlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgdmFyIGNvbnRyb2w7CisgICAgICAg
IGlmICh0eXBlID09ICJ0ZXh0YXJlYSIgfHwgdHlwZSA9PSAiaXNpbmRleCIpIHsKKyAgICAgICAg
ICAgIGNvbnRyb2wgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHR5cGUpOworICAgICAgICB9IGVs
c2UgaWYgKHR5cGUgPT0gInNlbGVjdCIpIHsKKyAgICAgICAgICAgIGNvbnRyb2wgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KHR5cGUpOworICAgICAgICAgICAgY29udHJvbC5vcHRpb25zLmFkZChu
ZXcgT3B0aW9uKCJhIikpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29udHJvbCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CisgICAgICAgICAgICBjb250cm9sLnR5
cGUgPSB0eXBlOworICAgICAgICB9CisgICAgICAgIGNvbnRyb2wuaWQgPSBmb2N1c2VkID8gImZv
Y3VzZWQiIDogKCJpbnB1dCIgKyBpKTsKKyAgICAgICAgY29udHJvbC5kaXNhYmxlZCA9ICEhZGlz
YWJsZWQ7CisgICAgICAgIGZvcm0uYXBwZW5kQ2hpbGQoY29udHJvbCk7CisgICAgfSk7CisgICAg
dmFyIGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZvY3VzZWQiKTsKKyAgICBpZiAo
aW5wdXQpCisgICAgICAgIGlucHV0LmZvY3VzKCk7CisgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRl
cikgeworICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCJcciIsIFtdKTsKKyAgICAgICAgc2V0
VGltZW91dCgicGFyZW50LnBvc3RNZXNzYWdlKCduJywgJyonKTsiLCA1MCk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7CisgICAgICAg
IGEuaHJlZiA9ICJqYXZhc2NyaXB0OnBhcmVudC5wb3N0TWVzc2FnZSgnbicsICcqJykiOworICAg
ICAgICBhLmlubmVyVGV4dCA9ICJDbGljayBpZiBkaWRuJ3Qgc3VibWl0IjsKKyAgICAgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3Qo
KQoreworICAgIHZhciBtYW5pZmVzdCA9IGFsbFRlc3RzW2N1cnJlbnRUZXN0XTsKKyAgICB2YXIg
dGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CisgICAgdmFyIGlmcmFtZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIGlmcmFtZS5zcmMgPSAiZGF0
YTp0ZXh0L2h0bWwsPHNjcmlwdD52YXIgbWFuaWZlc3QgPSBcIiIgKyBtYW5pZmVzdFsxXSArICJc
IjtcbiIgKyBTdHJpbmcocnVuVGVzdEluSWZyYW1lKSArIAorICAgICAgICAgICAgICAgICAiPC9z
Y3JpIiArICJwdD48Ym9keSBvbmxvYWQ9XCJydW5UZXN0SW5JZnJhbWUoKVwiPjwvYm9keT4iOwor
ICAgIHRlc3QuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPHA+VGVzdHMgdmFyaW91cyBjb21iaW5hdGlv
bnMgb2YgZm9ybSBlbGVtZW50cyBhbmQgaG93IGltcGxpY2l0IHN1Ym1pc3Npb24gd29ya3Mgd2l0
aCB0aGVtLgorICAgIDxkaXYgaWQ9InRlc3QiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImxvZyI+PC9k
aXY+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtZW50ZXIta2V5LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc2VsZWN0LWVudGVyLWtleS1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyZjI4ZGZjNGJhYjNmN2YxZGRlYzVkNzIz
ZDNjMjk0YjNiNzJlOWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3QtZW50ZXIta2V5LWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotVGhpcyB0ZXN0IGNoZWNrcyB0byBzZWUg
aWYgaGl0dGluZyB0aGUgRW50ZXIga2V5IG9uIGEgc2VsZWN0IGJveCBzdWJtaXRzIHRoZSBmb3Jt
IG9yIGNoZWNrcyB0aGUgY2hlY2sgYm94LgotCi1JZiB0aGUgdGVzdCBwYXNzZXMsIHRoZSB0ZXh0
IGJlbG93IHNob3VsZCBzYXkgInRyaWVkIHRvIHN1Ym1pdCBmb3JtIi4KLQotCi1UcmllZCB0byBz
dWJtaXQgZm9ybS4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zZWxlY3Qt
ZW50ZXIta2V5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1lbnRlci1rZXku
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDZiNzNlNTE5YTBiNTFlM2VlNjNm
ZDU3OTcxMmQ1ZDYxYTk0NDU3MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3NlbGVjdC1lbnRlci1rZXkuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLTxoZWFkPgotPHNjcmlwdD4KLWZ1bmN0aW9u
IHByaW50KG1lc3NhZ2UpCi17Ci0gICAgdmFyIHBhcmFncmFwaCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImxpIik7Ci0gICAgcGFyYWdyYXBoLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKG1lc3NhZ2UpKTsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIp
LmFwcGVuZENoaWxkKHBhcmFncmFwaCk7Ci19Ci1mdW5jdGlvbiBzdWJtaXRIYW5kbGVyKGUpCi17
Ci0gICAgZS5wcmV2ZW50RGVmYXVsdCgpOwotICAgIHByaW50KCJUcmllZCB0byBzdWJtaXQgZm9y
bS4iKTsKLX0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJmb3JtIikub25zdWJtaXQgPSBzdWJtaXRIYW5kbGVyOwotICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJzZWxlY3QiKS5mb2N1cygpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAg
ICAgICBldmVudFNlbmRlci5rZXlEb3duKCJcciIsIFtdKTsKLSAgICB9Ci19Ci08L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5IG9ubG9hZD0idGVzdCgpIj4KLTxwPlRoaXMgdGVzdCBjaGVja3MgdG8g
c2VlIGlmIGhpdHRpbmcgdGhlIEVudGVyIGtleSBvbiBhIHNlbGVjdCBib3ggc3VibWl0cyB0aGUg
Zm9ybSBvciBjaGVja3MgdGhlIGNoZWNrIGJveC48L3A+Ci08cD5JZiB0aGUgdGVzdCBwYXNzZXMs
IHRoZSB0ZXh0IGJlbG93IHNob3VsZCBzYXkgInRyaWVkIHRvIHN1Ym1pdCBmb3JtIi48L3A+Ci08
aHI+Ci08Zm9ybSBpZD1mb3JtPgotPHNlbGVjdCBpZD1zZWxlY3Qgc2l6ZT0zPjxvcHRpb24+YTwv
b3B0aW9uPjwvc2VsZWN0PgotPC9mb3JtPgotPGhyPgotPHA+PG9sIGlkPWNvbnNvbGU+PC9vbD48
L3A+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDY2N2Q1YzYwNmM1ZTNhZWNjNDQyOTMwOTJlYThkNGRkNzk2OGJhNTAuLjI0
YmQ4ZTJlYTI1ZGMwNTI5NWZjMjQwMGRiODRjZDA2NDViNTM0YzggMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIw
MTAtMDQtMjggIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBIGZvcm0gd2l0aG91
dCBhIHN1Ym1pdCBidXR0b24gdW5leHBlY3RlZGx5IHBlcmZvcm1zIGl0cyBhY3Rpb24gd2hlbiBS
ZXR1cm4gaXMgcHJlc3NlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTc1NgorCisgICAgICAgIEltcGxlbWVudGVkIGltcGxpY2l0IGZvcm0gc3VibWlz
c2lvbiBhbGdvcml0aG0gYXMgZGVmaW5lZCBpbiBIVE1MNSBzcGVjOgorICAgICAgICBodHRwOi8v
d3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9hc3Nv
Y2lhdGlvbi1vZi1jb250cm9scy1hbmQtZm9ybXMuaHRtbCNpbXBsaWNpdC1zdWJtaXNzaW9uLAor
ICAgICAgICBmYWxsaW5nIGJhY2sgdG8gbWF0Y2ggSUUncyBiZWhhdmlvciBpbiB0aGUgZWRnZSBj
YXNlcy4KKworICAgICAgICBUaGUgdW5kZXJseWluZyBydWxlcyBhcmU6CisKKyAgICAgICAgKiBJ
ZiB0aGUgZm9ybSBoYXMgbm8gZW5hYmxlZCBzdWJtaXQgYnV0dG9ucywgc3VibWl0IGlmIEVudGVy
L1JldHVybiBpcyBwcmVzc2VkIG9uIHRoZSBvbmx5IHNpbmdsZS1saW5lIHRleHQgZmllbGQuCisK
KyAgICAgICAgKiBPdGhlcndpc2UsIHN1Ym1pdCBmb3JtIHVzaW5nIGZpcnN0IGVuYWJsZWQgc3Vi
bWl0IGJ1dHRvbiBpZiBFbnRlci9SZXR1cm4gaXMgcHJlc3NlZCBvbiBhIGZpZWxkCisgICAgICAg
ICAgdGhhdCdzIG5vdCBhIHRleHRhcmVhIG9yIGEgc2VsZWN0LgorCisgICAgICAgIFRlc3Q6IGZh
c3QvZm9ybXMvaW1wbGljaXQtc3VibWlzc2lvbi5odG1sCisKKyAgICAgICAgKiBkb20vU2VsZWN0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RFbGVtZW50OjptZW51TGlzdERl
ZmF1bHRFdmVudEhhbmRsZXIpOiBSaXBwZWQgb3V0IGltcGxpY2l0IHN1Ym1pc3Npb24gZm9yIHNl
bGVjdCBlbGVtZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hE
ZWZhdWx0RXZlbnRIYW5kbGVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RFbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogRGl0dG8uCisgICAgICAgICogZG9tL1NlbGVjdEVs
ZW1lbnQuaDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnN1Ym1p
dEltcGxpY2l0bHkpOiBSZW5hbWVkIHN1Ym1pdENsaWNrIHRvIHN1Ym1pdEltcGxpY2l0bHkgdG8g
YmV0dGVyIG1hdGNoIEhUTUw1IHNwZWMKKyAgICAgICAgICAgIGxhbmd1YWdlLCBjaGFuZ2VkIHRo
ZSBsb2dpYyB0byBtYXRjaCB0aGUgcnVsZXMgYWJvdmUuCisgICAgICAgICogaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIpOiBSZWFtZWQgY2xpY2tEZWZhdWx0QnV0dG9uIHRvIGltcGxpY2l0U3Vi
bWlzc2lvbiB0byBiZXR0ZXIgbWF0Y2gKKyAgICAgICAgICAgIEhUTUw1IHNwZWMgbGFuZ3VhZ2Us
IG1hZGUgcmFkaW8gZWxlbWVudCB0byB0cmlnZ2VyIGltcGxpY2l0IHN1Ym1pc3Npb24uCisgICAg
ICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
U2VsZWN0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IFJlbW92ZWQgcGFzc2luZyBvZiBm
b3JtKCkgYXMgcGFyYW1ldGVyLCBiZWNhdXNlIGl0J3Mgbm8gbG9uZ2VyCisgICAgICAgICAgICBu
ZWNlc3NhcnkuCisKIDIwMTAtMDQtMjcgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2RvbS9TZWxlY3RFbGVt
ZW50LmNwcAppbmRleCA0YWY5MGM5YmIzYWYzZWUzZGZhYTgwZDQ4YmZlMDAzYWFmNzliOWU4Li5m
YjdkOWE2Zjg2MDAzOGNhYTNkOGZjNmRiZWNkZTJkNzkzNDEzMWI3IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50
LmNwcApAQCAtNTI5LDEyICs1MjksOCBAQCBzdGF0aWMgaW50IG5leHRWYWxpZEluZGV4KGNvbnN0
IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcywgaW50IGxpc3RJbmRleCwgU2tpcAogfQogI2Vu
ZGlmCiAKLXZvaWQgU2VsZWN0RWxlbWVudDo6bWVudUxpc3REZWZhdWx0RXZlbnRIYW5kbGVyKFNl
bGVjdEVsZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50KiBlbGVtZW50LCBFdmVudCogZXZlbnQsIEhU
TUxGb3JtRWxlbWVudCogaHRtbEZvcm0pCit2b2lkIFNlbGVjdEVsZW1lbnQ6Om1lbnVMaXN0RGVm
YXVsdEV2ZW50SGFuZGxlcihTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVu
dCwgRXZlbnQqIGV2ZW50KQogewotI2lmICFBUlJPV19LRVlTX1BPUF9NRU5VCi0gICAgVU5VU0VE
X1BBUkFNKGh0bWxGb3JtKTsKLSNlbmRpZgotCiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLmtleWRvd25FdmVudCkgewogICAgICAgICBpZiAoIWVsZW1lbnQtPnJlbmRlcmVy
KCkgfHwgIWV2ZW50LT5pc0tleWJvYXJkRXZlbnQoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTYxMyw4ICs2MDksNiBAQCB2b2lkIFNlbGVjdEVsZW1lbnQ6Om1lbnVMaXN0RGVmYXVsdEV2ZW50
SGFuZGxlcihTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudAogICAgICAgICAgICAgaGFu
ZGxlZCA9IHRydWU7CiAgICAgICAgIH0gZWxzZSBpZiAoa2V5Q29kZSA9PSAnXHInKSB7CiAgICAg
ICAgICAgICBtZW51TGlzdE9uQ2hhbmdlKGRhdGEsIGVsZW1lbnQpOwotICAgICAgICAgICAgaWYg
KGh0bWxGb3JtKQotICAgICAgICAgICAgICAgIGh0bWxGb3JtLT5zdWJtaXRDbGljayhldmVudCk7
CiAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKICAgICAgICAgfQogI2Vsc2UKQEAgLTY5Myw3
ICs2ODcsNyBAQCB2b2lkIFNlbGVjdEVsZW1lbnQ6OnVwZGF0ZVNlbGVjdGVkU3RhdGUoU2VsZWN0
RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbgogICAgIHVwZGF0ZUxpc3RCb3hTZWxl
Y3Rpb24oZGF0YSwgZWxlbWVudCwgIW11bHRpU2VsZWN0KTsKIH0KIAotdm9pZCBTZWxlY3RFbGVt
ZW50OjpsaXN0Qm94RGVmYXVsdEV2ZW50SGFuZGxlcihTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwg
RWxlbWVudCogZWxlbWVudCwgRXZlbnQqIGV2ZW50LCBIVE1MRm9ybUVsZW1lbnQqIGh0bWxGb3Jt
KQordm9pZCBTZWxlY3RFbGVtZW50OjpsaXN0Qm94RGVmYXVsdEV2ZW50SGFuZGxlcihTZWxlY3RF
bGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCwgRXZlbnQqIGV2ZW50KQogewogICAg
IGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcyA9IGRhdGEubGlzdEl0ZW1zKGVsZW1l
bnQpOwogCkBAIC03NTksMjkgKzc1MywxOCBAQCB2b2lkIFNlbGVjdEVsZW1lbnQ6Omxpc3RCb3hE
ZWZhdWx0RXZlbnRIYW5kbGVyKFNlbGVjdEVsZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50KgogICAg
ICAgICAgICAgbGlzdEJveE9uQ2hhbmdlKGRhdGEsIGVsZW1lbnQpOwogICAgICAgICAgICAgZXZl
bnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpIHsKLSAgICAgICAgaWYgKCFl
dmVudC0+aXNLZXlib2FyZEV2ZW50KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlu
dCBrZXlDb2RlID0gc3RhdGljX2Nhc3Q8S2V5Ym9hcmRFdmVudCo+KGV2ZW50KS0+a2V5Q29kZSgp
OwotCi0gICAgICAgIGlmIChrZXlDb2RlID09ICdccicpIHsKLSAgICAgICAgICAgIGlmIChodG1s
Rm9ybSkKLSAgICAgICAgICAgICAgICBodG1sRm9ybS0+c3VibWl0Q2xpY2soZXZlbnQpOwotICAg
ICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgU2VsZWN0RWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZGxlcihTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCwgRXZlbnQq
IGV2ZW50LCBIVE1MRm9ybUVsZW1lbnQqIGh0bWxGb3JtKQordm9pZCBTZWxlY3RFbGVtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKFNlbGVjdEVsZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50KiBlbGVt
ZW50LCBFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKCFlbGVtZW50LT5yZW5kZXJlcigpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoZGF0YS51c2VzTWVudUxpc3QoKSkKLSAgICAgICAgbWVu
dUxpc3REZWZhdWx0RXZlbnRIYW5kbGVyKGRhdGEsIGVsZW1lbnQsIGV2ZW50LCBodG1sRm9ybSk7
CisgICAgICAgIG1lbnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcihkYXRhLCBlbGVtZW50LCBldmVu
dCk7CiAgICAgZWxzZSAKLSAgICAgICAgbGlzdEJveERlZmF1bHRFdmVudEhhbmRsZXIoZGF0YSwg
ZWxlbWVudCwgZXZlbnQsIGh0bWxGb3JtKTsKKyAgICAgICAgbGlzdEJveERlZmF1bHRFdmVudEhh
bmRsZXIoZGF0YSwgZWxlbWVudCwgZXZlbnQpOwogCiAgICAgaWYgKGV2ZW50LT5kZWZhdWx0SGFu
ZGxlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TZWxlY3RF
bGVtZW50LmggYi9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmgKaW5kZXggZGNiNjg3OWZmNWQw
YmFjNzU1NDc1NTAzMGE0YWNiMGI3YmIyNjBjYy4uNmRiODQxZTg4YjBmMjRlYzI2NGE5MmI4MDBi
MGY0NTBjOGEwMmQ4NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5oCisr
KyBiL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuaApAQCAtOTIsNyArOTIsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgc3RhdGljIHZvaWQgcGFyc2VNdWx0aXBsZUF0dHJpYnV0ZShTZWxlY3RFbGVtZW50
RGF0YSYsIEVsZW1lbnQqLCBNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICBzdGF0aWMgYm9vbCBhcHBl
bmRGb3JtRGF0YShTZWxlY3RFbGVtZW50RGF0YSYsIEVsZW1lbnQqLCBGb3JtRGF0YUxpc3QmKTsK
ICAgICBzdGF0aWMgdm9pZCByZXNldChTZWxlY3RFbGVtZW50RGF0YSYsIEVsZW1lbnQqKTsKLSAg
ICBzdGF0aWMgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKFNlbGVjdEVsZW1lbnREYXRhJiwgRWxl
bWVudCosIEV2ZW50KiwgSFRNTEZvcm1FbGVtZW50KiA9IDApOworICAgIHN0YXRpYyB2b2lkIGRl
ZmF1bHRFdmVudEhhbmRsZXIoU2VsZWN0RWxlbWVudERhdGEmLCBFbGVtZW50KiwgRXZlbnQqKTsK
ICAgICBzdGF0aWMgaW50IGxhc3RTZWxlY3RlZExpc3RJbmRleChjb25zdCBTZWxlY3RFbGVtZW50
RGF0YSYsIGNvbnN0IEVsZW1lbnQqKTsKICAgICBzdGF0aWMgdm9pZCB0eXBlQWhlYWRGaW5kKFNl
bGVjdEVsZW1lbnREYXRhJiwgRWxlbWVudCosIEtleWJvYXJkRXZlbnQqKTsKICAgICBzdGF0aWMg
dm9pZCBpbnNlcnRlZEludG9UcmVlKFNlbGVjdEVsZW1lbnREYXRhJiwgRWxlbWVudCopOwpAQCAt
MTAzLDggKzEwMyw4IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgbXVsdGksIGJvb2wgc2hpZnQpOwogIAogcHJpdmF0ZToKLSAgICBzdGF0aWMg
dm9pZCBtZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIoU2VsZWN0RWxlbWVudERhdGEmLCBFbGVt
ZW50KiwgRXZlbnQqLCBIVE1MRm9ybUVsZW1lbnQqKTsKLSAgICBzdGF0aWMgdm9pZCBsaXN0Qm94
RGVmYXVsdEV2ZW50SGFuZGxlcihTZWxlY3RFbGVtZW50RGF0YSYsIEVsZW1lbnQqLCBFdmVudCos
IEhUTUxGb3JtRWxlbWVudCopOworICAgIHN0YXRpYyB2b2lkIG1lbnVMaXN0RGVmYXVsdEV2ZW50
SGFuZGxlcihTZWxlY3RFbGVtZW50RGF0YSYsIEVsZW1lbnQqLCBFdmVudCopOworICAgIHN0YXRp
YyB2b2lkIGxpc3RCb3hEZWZhdWx0RXZlbnRIYW5kbGVyKFNlbGVjdEVsZW1lbnREYXRhJiwgRWxl
bWVudCosIEV2ZW50Kik7CiAgICAgc3RhdGljIHZvaWQgc2V0T3B0aW9uc0NoYW5nZWRPblJlbmRl
cmVyKFNlbGVjdEVsZW1lbnREYXRhJiwgRWxlbWVudCopOwogfTsKIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcAppbmRleCBjYWZhM2M5Njk4OGUyZGI0MzA0NGU3NDdlOTE4ZjZkMzhjNGNlYzIyLi45
NGQwMDJmODE5MWI0Y2I1YTMyZTZkNzc4NGE1NGYwMGYwNDk4MjFkIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1F
bGVtZW50LmNwcApAQCAtMTc1LDIwICsxNzUsMjEgQEAgTm9kZSogSFRNTEZvcm1FbGVtZW50Ojpp
dGVtKHVuc2lnbmVkIGluZGV4KQogICAgIHJldHVybiBlbGVtZW50cygpLT5pdGVtKGluZGV4KTsK
IH0KIAotdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdENsaWNrKEV2ZW50KiBldmVudCkKK3Zv
aWQgSFRNTEZvcm1FbGVtZW50OjpzdWJtaXRJbXBsaWNpdGx5KEV2ZW50KiBldmVudCwgYm9vbCBm
cm9tVGV4dEZpZWxkKQogewotICAgIGJvb2wgc3VibWl0Rm91bmQgPSBmYWxzZTsKKyAgICBpbnQg
dGV4dENvbnRyb2xDb3VudCA9IDA7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZvcm1F
bGVtZW50cy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoZm9ybUVsZW1lbnRzW2ldLT5oYXNM
b2NhbE5hbWUoaW5wdXRUYWcpKSB7CiAgICAgICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBlbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGZvcm1FbGVtZW50c1tpXSk7CiAg
ICAgICAgICAgICBpZiAoZWxlbWVudC0+aXNTdWNjZXNzZnVsU3VibWl0QnV0dG9uKCkgJiYgZWxl
bWVudC0+cmVuZGVyZXIoKSkgewotICAgICAgICAgICAgICAgIHN1Ym1pdEZvdW5kID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICBlbGVtZW50LT5kaXNwYXRjaFNpbXVsYXRlZENsaWNrKGV2ZW50KTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC0+aXNUZXh0
RmllbGQoKSkKKyAgICAgICAgICAgICAgICArK3RleHRDb250cm9sQ291bnQ7CisgICAgICAgIH0g
ZWxzZSBpZiAoZm9ybUVsZW1lbnRzW2ldLT5oYXNMb2NhbE5hbWUoaXNpbmRleFRhZykpCisgICAg
ICAgICAgICArK3RleHRDb250cm9sQ291bnQ7CiAgICAgfQotICAgIGlmICghc3VibWl0Rm91bmQp
IC8vIHN1Ym1pdCB0aGUgZm9ybSB3aXRob3V0IGEgc3VibWl0IG9yIGltYWdlIGlucHV0CisgICAg
aWYgKGZyb21UZXh0RmllbGQgJiYgdGV4dENvbnRyb2xDb3VudCA9PSAxKQogICAgICAgICBwcmVw
YXJlU3VibWl0KGV2ZW50KTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCmluZGV4IDkyM2M3MzQ3
ODlhYzFjMDA5ZmE4MDYxYjkyMzUxYWY0NmY3MWNkMjIuLmEyMTQyZWM5ODQxYzhiMzA0YzdlMmRj
YTEyMTRiZWFlZTQwNjMyMDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1l
bnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKQEAgLTkxLDcgKzkxLDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSop
IGNvbnN0OwogICAgIAotICAgIHZvaWQgc3VibWl0Q2xpY2soRXZlbnQqKTsKKyAgICB2b2lkIHN1
Ym1pdEltcGxpY2l0bHkoRXZlbnQqLCBib29sIGZyb21UZXh0RmllbGQpOwogICAgIGJvb2wgZm9y
bVdvdWxkSGF2ZVNlY3VyZVN1Ym1pc3Npb24oY29uc3QgU3RyaW5nJiB1cmwpOwogCiAgICAgU3Ry
aW5nIG5hbWUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBlOGRiMGM5
NWJjOWVkZGMzMDYyOTViNTM4ZTA3NzAzMjExYjdmYTczLi5kMzk1NTZhMmNhZGZhYmRmMmMyMTI5
OGMwYTlhOGRmNmI3YzdlYjU0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0yMDYy
LDEwICsyMDYyLDEwIEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCogZXZ0KQogICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gcmVmYWN0
b3IgdGhpcyBmb3IgdGhlIGRpZmZlcmVudCB0eXBlcyBvZiBpbnB1dCBlbGVtZW50LgogICAgIC8v
IEhhdmluZyB0aGVtIGFsbCBpbiBvbmUgZ2lhbnQgZnVuY3Rpb24gbWFrZXMgdGhpcyBoYXJkIHRv
IHJlYWQsIGFuZCBhbG1vc3QgYWxsIHRoZSBoYW5kbGluZyBpcyB0eXBlLXNwZWNpZmljLgogCi0g
ICAgYm9vbCBjbGlja0RlZmF1bHRGb3JtQnV0dG9uID0gZmFsc2U7CisgICAgYm9vbCBpbXBsaWNp
dFN1Ym1pc3Npb24gPSBmYWxzZTsKIAogICAgIGlmIChpc1RleHRGaWVsZCgpICYmIGV2dC0+dHlw
ZSgpID09IGV2ZW50TmFtZXMoKS50ZXh0SW5wdXRFdmVudCAmJiBldnQtPmlzVGV4dEV2ZW50KCkg
JiYgc3RhdGljX2Nhc3Q8VGV4dEV2ZW50Kj4oZXZ0KS0+ZGF0YSgpID09ICJcbiIpCi0gICAgICAg
IGNsaWNrRGVmYXVsdEZvcm1CdXR0b24gPSB0cnVlOworICAgICAgICBpbXBsaWNpdFN1Ym1pc3Np
b24gPSB0cnVlOwogCiAgICAgaWYgKGlucHV0VHlwZSgpID09IElNQUdFICYmIGV2dC0+aXNNb3Vz
ZUV2ZW50KCkgJiYgZXZ0LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKICAg
ICAgICAgLy8gcmVjb3JkIHRoZSBtb3VzZSBwb3NpdGlvbiBmb3Igd2hlbiB3ZSBnZXQgdGhlIERP
TUFjdGl2YXRlIGV2ZW50CkBAIC0yMTA0LDcgKzIxMDQsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2dCkKICAgICAKICAgICAvLyBDYWxsIHRo
ZSBiYXNlIGV2ZW50IGhhbmRsZXIgYmVmb3JlIGFueSBvZiBvdXIgb3duIGV2ZW50IGhhbmRsaW5n
IGZvciBhbG1vc3QgYWxsIGV2ZW50cyBpbiB0ZXh0IGZpZWxkcy4KICAgICAvLyBNYWtlcyBlZGl0
aW5nIGtleWJvYXJkIGhhbmRsaW5nIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBrZXlkb3duIGFu
ZCBrZXlwcmVzcyBoYW5kbGluZyBpbiB0aGlzIGZ1bmN0aW9uLgotICAgIGJvb2wgY2FsbEJhc2VD
bGFzc0Vhcmx5ID0gaXNUZXh0RmllbGQoKSAmJiAhY2xpY2tEZWZhdWx0Rm9ybUJ1dHRvbgorICAg
IGJvb2wgY2FsbEJhc2VDbGFzc0Vhcmx5ID0gaXNUZXh0RmllbGQoKSAmJiAhaW1wbGljaXRTdWJt
aXNzaW9uCiAgICAgICAgICYmIChldnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2
ZW50IHx8IGV2dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KTsKICAgICBp
ZiAoY2FsbEJhc2VDbGFzc0Vhcmx5KSB7CiAgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRX
aXRoU3RhdGU6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZ0KTsKQEAgLTIxNTgsNiArMjE1OCw3IEBA
IHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZ0KQog
ICAgICAgICAgICAgY2FzZSBNT05USDoKICAgICAgICAgICAgIGNhc2UgTlVNQkVSOgogICAgICAg
ICAgICAgY2FzZSBQQVNTV09SRDoKKyAgICAgICAgICAgIGNhc2UgUkFESU86CiAgICAgICAgICAg
ICBjYXNlIFJBTkdFOgogICAgICAgICAgICAgY2FzZSBTRUFSQ0g6CiAgICAgICAgICAgICBjYXNl
IFRFTEVQSE9ORToKQEAgLTIxNjYsNyArMjE2Nyw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZ0KQogICAgICAgICAgICAgY2FzZSBVUkw6CiAg
ICAgICAgICAgICBjYXNlIFdFRUs6CiAgICAgICAgICAgICAgICAgLy8gU2ltdWxhdGUgbW91c2Ug
Y2xpY2sgb24gdGhlIGRlZmF1bHQgZm9ybSBidXR0b24gZm9yIGVudGVyIGZvciB0aGVzZSB0eXBl
cyBvZiBlbGVtZW50cy4KLSAgICAgICAgICAgICAgICBjbGlja0RlZmF1bHRGb3JtQnV0dG9uID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICBpbXBsaWNpdFN1Ym1pc3Npb24gPSB0cnVlOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBCVVRUT046CiAgICAgICAgICAgICBj
YXNlIEZJTEU6CkBAIC0yMTc2LDggKzIxNzcsNiBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2dCkKICAgICAgICAgICAgICAgICAvLyBTaW11bGF0
ZSBtb3VzZSBjbGljayBmb3IgZW50ZXIgZm9yIHRoZXNlIHR5cGVzIG9mIGVsZW1lbnRzLgogICAg
ICAgICAgICAgICAgIGNsaWNrRWxlbWVudCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlIFJBRElPOgotICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBEb24n
dCBkbyBhbnl0aGluZyBmb3IgZW50ZXIgb24gYSByYWRpbyBidXR0b24uCiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSBpZiAoY2hhckNvZGUgPT0gJyAnKSB7CiAgICAgICAgICAgICBzd2l0
Y2ggKGlucHV0VHlwZSgpKSB7CkBAIC0yMzExLDcgKzIzMTAsNyBAQCB2b2lkIEhUTUxJbnB1dEVs
ZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2dCkKICAgICAgICAgfSAgICAgICAg
CiAgICAgfQogCi0gICAgaWYgKGNsaWNrRGVmYXVsdEZvcm1CdXR0b24pIHsKKyAgICBpZiAoaW1w
bGljaXRTdWJtaXNzaW9uKSB7CiAgICAgICAgIGlmIChpc1NlYXJjaEZpZWxkKCkpIHsKICAgICAg
ICAgICAgIGFkZFNlYXJjaFJlc3VsdCgpOwogICAgICAgICAgICAgb25TZWFyY2goKTsKQEAgLTIz
MzMsNyArMjMzMiw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCogZXZ0KQogCiAgICAgICAgIC8vIEZvcm0gbWF5IG5ldmVyIGhhdmUgYmVlbiBwcmVz
ZW50LCBvciBtYXkgaGF2ZSBiZWVuIGRlc3Ryb3llZCBieSBjb2RlIHJlc3BvbmRpbmcgdG8gdGhl
IGNoYW5nZSBldmVudC4KICAgICAgICAgaWYgKGZvcm1Gb3JTdWJtaXNzaW9uKQotICAgICAgICAg
ICAgZm9ybUZvclN1Ym1pc3Npb24tPnN1Ym1pdENsaWNrKGV2dCk7CisgICAgICAgICAgICBmb3Jt
Rm9yU3VibWlzc2lvbi0+c3VibWl0SW1wbGljaXRseShldnQsIGlzVGV4dEZpZWxkKCkpOwogCiAg
ICAgICAgIGV2dC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9I
VE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggZGU0MGZmN2EwNzMyY2M4M2Y3NGFlZTk0MmQyOTNi
YTE4MjNhOGMyZC4uMTJlYzI2ZjYwZTgwMjdmNjI0ZDM5NmQwYmY4NGQ5MTY4MGQ4NzkzMCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9XZWJDb3Jl
L2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBIVE1M
U2VsZWN0RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoKQogCiB2b2lkIEhUTUxTZWxlY3RFbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKLSAgICBTZWxlY3RFbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKG1fZGF0YSwgdGhpcywgZXZlbnQsIGZvcm0oKSk7Cisg
ICAgU2VsZWN0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihtX2RhdGEsIHRoaXMsIGV2ZW50
KTsKICAgICBpZiAoZXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2
ZW50KTsK
</data>
<flag name="review"
          id="38634"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>