<?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>32641</bug_id>
          
          <creation_ts>2009-12-16 16:39:27 -0800</creation_ts>
          <short_desc>The selected property of &lt;option&gt; elements is not always up to date</short_desc>
          <delta_ts>2010-01-24 22:32:12 -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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>32580</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>172573</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2009-12-16 16:39:27 -0800</bug_when>
    <thetext>The &apos;selected&apos; property of an &lt;option&gt; inside of a &lt;select&gt; is updated by SelectElement::recalcListItems().  This is called on certain property accesses of the &lt;select&gt; (like selectedIndex) but when the form is created by normal document parsing then it is only called as a side effect of recalcStyle() - see https://bugs.webkit.org/show_bug.cgi?id=15088.

The test that &apos;selected&apos; is up to date (fast/forms/HTMLOptionElement_selected.html) passes currently because the test code runs in a &apos;load&apos; event handler, which dispatches after the &apos;DOMContentLoaded&apos; event.  Node::dispatchGenericEvent() makes a call to Document::updateStyleForAllDocuments() so the &apos;selected&apos; property of the &lt;option&gt; element is up to date by the time the test code runs.  If the property is queried before or during the DOMContentLoaded event dispatch, or if the call to Document::updateStyleForAllDocuments() in Node::dispatchGenericEvent() is removed (see https://bugs.webkit.org/show_bug.cgi?id=32580) then this test fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172584</commentid>
    <comment_count>1</comment_count>
      <attachid>45024</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2009-12-16 16:47:34 -0800</bug_when>
    <thetext>Created attachment 45024
Test, shows the incorrect behavior

The &apos;selected&apos; attribute should be &apos;true&apos; on both queries.  However it ToT currently it is &apos;false&apos; on the first access since the &lt;option&gt;&apos;s selected state is not updated until the query for selectedIndex</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176917</commentid>
    <comment_count>2</comment_count>
      <attachid>45839</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-04 15:23:58 -0800</bug_when>
    <thetext>Created attachment 45839
test case as HTML

Same text as plain HTML for easier verification (also, tweaked a bit to make it work in Firefox).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176981</commentid>
    <comment_count>3</comment_count>
      <attachid>45852</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-01-04 18:09:03 -0800</bug_when>
    <thetext>Created attachment 45852
Calls recalcListItems() when the &quot;&lt;/select&gt;&quot; is parsed to match Firefox behavior

This patch causes the list items and selected states to be updated when the &quot;&lt;/select&gt;&quot; is parsed, which matches Firefox&apos;s behavior.  To verify this run the test case in Firefox and move the &lt;script&gt; block to be immediately before the &lt;/select&gt;.

Doing this in the finishedParsingChildren() call is a bit weird, but I think the current behavior is even weirder and clearly wrong in some cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176990</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-04 18:42:48 -0800</bug_when>
    <thetext>&gt; To verify this run
&gt; the test case in Firefox and move the &lt;script&gt; block to be immediately before
&gt; the &lt;/select&gt;.

Ideally, we&apos;d have that landed as a regression test, too. Even if we&apos;re not positive that we want to implement some quirks, it helps to know it when behavior changes unexpectedly (test text should clearly state when it&apos;s the case though).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177287</commentid>
    <comment_count>5</comment_count>
      <attachid>45852</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-05 12:10:04 -0800</bug_when>
    <thetext>Comment on attachment 45852
Calls recalcListItems() when the &quot;&lt;/select&gt;&quot; is parsed to match Firefox behavior

&gt; +    if (m_data.shouldRecalcListItems())
&gt; +      SelectElement::recalcListItems(m_data, this);

Indentation is wrong.

&gt; +    // Recalculate list items and selected state when parsing the &lt;/select&gt; to match Firefox.
&gt; +    virtual void finishParsingChildren();

Can you test cases involving DOM manipulation to prove that this really needs to be triggered by parsing? It&apos;s OK to do this if we must, but not if it&apos;s the wrong rule.

What about IE? Does our behavior match theirs?

I suggest making the override of the virtual function private, since it probably would be a programming error to call this on a HTMLSelectElement*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177367</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-05 13:38:40 -0800</bug_when>
    <thetext>&gt; Can you test cases involving DOM manipulation to prove that this really needs
&gt; to be triggered by parsing? It&apos;s OK to do this if we must, but not if it&apos;s the
&gt; wrong rule.

The test that we made was: try accessing the value from a script that&apos;s either before or after &quot;&lt;/select&gt;&quot;. Firefox gave different results in these cases.

This is why I asked to land both cases as regression tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177388</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-01-05 14:15:12 -0800</bug_when>
    <thetext>I don&apos;t think Firefox&apos;s or WebKit&apos;s behavior are very good before the &lt;/select&gt; is hit currently.  In Firefox, queries for the first option&apos;s &apos;selected&apos; are false for the first &lt;option&gt; and the select&apos;s selectedIndex is &apos;-1&apos; before the &lt;/select&gt;.  After the &lt;/select&gt; the first option&apos;s &apos;selected&apos; attribute becomes true and selectedIndex becomes &apos;0&apos;.  WebKit behavior is a bit weirder - the &apos;selected&apos; attribute is false until an event dispatches (any event), the &apos;selectedIndex&apos; attribute is queried, layout is forced in any way (say by querying a derived attribute of any element from javascript, or parsing a &lt;style&gt;).

This patch doesn&apos;t fix everything but it does ensure that after a &lt;select&gt; is fully parsed the &apos;selected&apos; attribute is coherent.  I do not think that testing before the &lt;/select&gt; is very useful since the current behavior in Firefox for this case is just plain wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177406</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-05 14:36:13 -0800</bug_when>
    <thetext>It&apos;s fine to test for behavior that&apos;s not necessarily perfect - at least, we&apos;ll make sure that this code path doesn&apos;t crash. Also, as I already mentioned, knowing about unexpected changes is good.

I agree with Darin that knowing more about IE behavior would be good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177491</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-05 17:37:08 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; It&apos;s fine to test for behavior that&apos;s not necessarily perfect - at least, we&apos;ll
&gt; make sure that this code path doesn&apos;t crash. Also, as I already mentioned,
&gt; knowing about unexpected changes is good.

I strongly agree with these remarks. It&apos;s good to have test cases even if we may want to change behavior later. The creators of the test cases should just do their best to make clear they are not &quot;defining correct behavior&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177493</commentid>
    <comment_count>10</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-01-05 17:40:42 -0800</bug_when>
    <thetext>OK, I will do the following:

1.) Investigate what IE does.
2.) Create a test case for what we do prior to the &lt;/select&gt; and document what both Firefox and IE do on this case.  I don&apos;t think we necessarily want to match either of them but I see that a test case will be helpful regardless.

I&apos;ll update the patch once I have done that.  Thanks for the feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178347</commentid>
    <comment_count>11</comment_count>
      <attachid>46080</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-01-07 13:15:56 -0800</bug_when>
    <thetext>Created attachment 46080
Much better patch

This patch adds a check in the OptionElement::selected() getter and recalculates everything if items are out of date.  It also adds two new tests, one that checks selected and selectedIndex right after the &lt;/select&gt; and one right before it.

On HTMLOptionElement_selected2.html, we previously did not match FFx 3.5 or IE8.  With this patch we match them both (with the correct behavior).
On HTMLOptionElement_selected3.html, we previously matched IE8 but had a very weird behavior (the &apos;selected&apos; attribute was out of date until &apos;selectedIndex&apos; was queried).  FFx 3.5 completely chokes on this test (it shows &apos;selected&apos; as false on every &lt;option&gt; and shows &apos;selectedIndex&apos; as -1 until the &lt;/select&gt; is parsed).  With this patch we show the correct values for &apos;selected&apos; and &apos;selectedIndex&apos; before the &lt;/select&gt; which seems like the most sane behavior.

We also now match FFx 3.5 on fast/forms/add-remove-option-modification-event.html, which was previously marked as an expected failure.  Plus, this patch doesn&apos;t depend on recalcStyle() side effects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178360</commentid>
    <comment_count>12</comment_count>
      <attachid>46080</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-07 13:34:56 -0800</bug_when>
    <thetext>Comment on attachment 46080
Much better patch

&gt;      static void menuListDefaultEventHandler(SelectElementData&amp;, Element*, Event*, HTMLFormElement*);
&gt;      static void listBoxDefaultEventHandler(SelectElementData&amp;, Element*, Event*, HTMLFormElement*);
&gt; +    static void setOptionsChangedOnRenderer(SelectElementData&amp; data, Element* element);

Argument names are not needed here.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178362</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-07 13:35:57 -0800</bug_when>
    <thetext>I&apos;m a little concerned about diverging from IE more in some cases, but only a little.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178367</commentid>
    <comment_count>14</comment_count>
      <attachid>46084</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-01-07 13:43:44 -0800</bug_when>
    <thetext>Created attachment 46084
Addresses style nit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178483</commentid>
    <comment_count>15</comment_count>
      <attachid>46084</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-07 18:36:29 -0800</bug_when>
    <thetext>Comment on attachment 46084
Addresses style nit

Rejecting patch 46084 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--exit-after-n-failures=1&apos;, &apos;--quiet&apos;]&quot; exit_code: 1
Running build-dumprendertree
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 11889 test cases.
fast/forms/HTMLOptionElement_selected3.html -&gt; failed

Exiting early after 1 failures. 6380 tests run.
96.02s total testing time

6379 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
2 test cases (&lt;1%) had stderr output

Full output: http://webkit-commit-queue.appspot.com/results/166678</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178494</commentid>
    <comment_count>16</comment_count>
      <attachid>46108</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-01-07 19:07:18 -0800</bug_when>
    <thetext>Created attachment 46108
Removes trailing newline in HTMLOptionElement_selected3-expectation.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178506</commentid>
    <comment_count>17</comment_count>
      <attachid>46108</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-07 20:43:49 -0800</bug_when>
    <thetext>Comment on attachment 46108
Removes trailing newline in HTMLOptionElement_selected3-expectation.txt

Rejecting patch 46108 from commit-queue.

Failed to run &quot;[&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, &apos;--reviewer&apos;, &apos;Alexey Proskuryakov&apos;, &apos;--force&apos;]&quot; exit_code: 2
Last 500 characters of output:
ment_selected2-expected.txt
patching file LayoutTests/fast/forms/HTMLOptionElement_selected2.html
patching file LayoutTests/fast/forms/HTMLOptionElement_selected3-expected.txt
patch: **** malformed patch at line 13:  

fatal: pathspec &apos;LayoutTests/fast/forms/HTMLOptionElement_selected3-expected.txt&apos; did not match any files
Failed to git add LayoutTests/fast/forms/HTMLOptionElement_selected3-expected.txt. at /Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply line 466, &lt;&gt; line 380.

Full output: http://webkit-commit-queue.appspot.com/results/166744</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178778</commentid>
    <comment_count>18</comment_count>
      <attachid>46156</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-01-08 13:45:43 -0800</bug_when>
    <thetext>Created attachment 46156
Valid (this time!) patch

Sorry about all the churn, guys.  Apparently that last patch was malformed.  I&apos;ve uploaded a new patch generated from a clean SVN repo so hopefully all is good now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179073</commentid>
    <comment_count>19</comment_count>
      <attachid>46156</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-09 15:54:09 -0800</bug_when>
    <thetext>Comment on attachment 46156
Valid (this time!) patch

I&apos;m not sure I understand this comment:
5         // Avoid our selected() getter since it will recalculate list items incorrectly for us.
 226         if (m_data.selected())

I assume it&apos;s time based.  That it would recalculate them incorrectly at that particular point in the code?  If so, do we need some ASSERTS to make sure someone doesn&apos;t call selected() at the worng plaes?

In general this looks good.  Would just like to hear the answer to the above question.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180566</commentid>
    <comment_count>20</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-13 23:17:44 -0800</bug_when>
    <thetext>I agree, it would be nice to rephrase this a little, to make it more clear what this incorrect recalculation is about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180567</commentid>
    <comment_count>21</comment_count>
      <attachid>46156</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-13 23:23:22 -0800</bug_when>
    <thetext>Comment on attachment 46156
Valid (this time!) patch

Let&apos;s finally get this landed though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180600</commentid>
    <comment_count>22</comment_count>
      <attachid>46156</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-14 01:31:52 -0800</bug_when>
    <thetext>Comment on attachment 46156
Valid (this time!) patch

Clearing flags on attachment: 46156

Committed r53248: &lt;http://trac.webkit.org/changeset/53248&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180601</commentid>
    <comment_count>23</comment_count>
      <attachid>46156</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-14 01:31:59 -0800</bug_when>
    <thetext>Comment on attachment 46156
Valid (this time!) patch

Rejecting patch 46156 from commit-queue.

Unexpected failure when landing patch!  Please file a bug against webkit-patch.
Failed to run &quot;[&apos;WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-commit-queue.appspot.com&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--no-update&apos;, &apos;--parent-command=commit-queue&apos;, &apos;--build-style=both&apos;, &apos;--quiet&apos;, &apos;46156&apos;]&quot; exit_code: 1
Last 500 characters of output:
ache.d/-1555206040/mechanize-0.1.11.zip/mechanize-0.1.11/mechanize/_mechanize.py&quot;, line 505, in select_form
  File &quot;./autoinstall.cache.d/-1555206040/mechanize-0.1.11.zip/mechanize-0.1.11/mechanize/_html.py&quot;, line 546, in __getattr__
  File &quot;./autoinstall.cache.d/-1555206040/mechanize-0.1.11.zip/mechanize-0.1.11/mechanize/_html.py&quot;, line 559, in forms
  File &quot;./autoinstall.cache.d/-1555206040/mechanize-0.1.11.zip/mechanize-0.1.11/mechanize/_html.py&quot;, line 228, in forms
mechanize._html.ParseError</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180606</commentid>
    <comment_count>24</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-14 01:46:17 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 46156 [details])
&gt; Rejecting patch 46156 from commit-queue.
&gt; 
&gt; Unexpected failure when landing patch!  Please file a bug against webkit-patch.

Filed bug 33659.  I&apos;m not sure how all these attachments ended up with only cq- and no r flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180609</commentid>
    <comment_count>25</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-14 01:48:15 -0800</bug_when>
    <thetext>Did this really sit in the queue for a day without getting landed?  I&apos;m confused by the history:
https://bugs.webkit.org/show_activity.cgi?id=32641

Did this end up landed by hand because the commit-queue was giving you trouble?  Or just because.  It&apos;s *totally fine* of course that it was landed by hand, but I just want to make sure if there are commit-queeu bugs which need fixing that I know about them.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180612</commentid>
    <comment_count>26</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-14 01:49:55 -0800</bug_when>
    <thetext>Oh, nevermind.  I misread above.  The commit-queue *did* land this.  It was not landed by hand.  The commit-queue just also pooped on this bug after landing for unknown reasons.  I&apos;ve filed bug 33659 about the commit-queue&apos;s strange behavior post-landing.

Sorry for all the noise!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180615</commentid>
    <comment_count>27</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-14 01:51:52 -0800</bug_when>
    <thetext>I think this took so long to land because the commit-queue was stuck due to bug 33638!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180636</commentid>
    <comment_count>28</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-14 02:35:54 -0800</bug_when>
    <thetext>This caused tests to start crashing on multiple bots.  I&apos;m so sorry the commit-queue was stuck today and thus this got landed so much later than when you set the flag!

You can see the crashes here:
http://build.webkit.org/results/Leopard%20Intel%20Debug%20(Tests)/r53248%20(9248)/results.html

Looks like an ASSERT:
ASSERTION FAILED: !m_optionsChanged
(/Volumes/Big/WebKit-BuildSlave/leopard-intel-debug/build/WebCore/rendering/RenderListBox.cpp:165 virtual void WebCore::RenderListBox::calcPrefWidths())

Rolling out the change for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180642</commentid>
    <comment_count>29</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-14 02:41:47 -0800</bug_when>
    <thetext>webkit-patch failed to leave a comment on this bug due to bug 33659.  But I rolled this out in:
http://trac.webkit.org/changeset/53252</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180908</commentid>
    <comment_count>30</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-01-14 14:00:07 -0800</bug_when>
    <thetext>Failure is definitely mine, investigating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180996</commentid>
    <comment_count>31</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-01-14 16:26:17 -0800</bug_when>
    <thetext>OK, the problem was that some of the element-&gt;setNeedsStyleRecalc() calls had to stay.  They aren&apos;t used to actually recalculate any styles, but instead they result in HTMLFormControlElement::recalcStyle() being called which posts a task to call updateFromElement() on the element&apos;s RenderObject.  I think this is wrong and want to fix it in a follow up patch but since this patch fixes other bugs I&apos;ll add the setNeedsStyleRecalc() calls back in for now.

This is kind of a mess.  What happens is:
*) Something notices a change but can&apos;t handle it in the current callstack so it calls element-&gt;setNeedsStyleRecalc() as a way to get a callback sometime in the future (but not too far out)
*) The recalcStyle() override runs, but it also can&apos;t handle the update in its current callstack so it calls queuePostAttachCallback() with another callback
*) This callback actually handles the state change (by calling updateFromElement()
*) The implementation of updateFromElement() ends up marking the element as needing layout.

Yucky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181071</commentid>
    <comment_count>32</comment_count>
      <attachid>46633</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-01-14 18:41:08 -0800</bug_when>
    <thetext>Created attachment 46633
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181075</commentid>
    <comment_count>33</comment_count>
      <attachid>46633</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-01-14 18:47:41 -0800</bug_when>
    <thetext>Comment on attachment 46633
Patch

The only difference between this and the last patch is that this one leaves in the element-&gt;setNeedsRecalcStyle() calls in SelectedElement::reset() and SelectedElement::typeAheadFind(), which are needed so that RenderObject::updateFromElement() is (eventually) called.

I agree that the comment in HTMLOptionElement::insertedIntoTree() is a bit confused.  The function depends on the (possibly stale) selected state cached on the m_data field, it&apos;s incorrect for this function to cause an immediately recalculation of the list items.  I&apos;m not sure how to phrase this in a less confusing way but I am hopeful I&apos;ll be able to clean this bit to be less dodgy looking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182909</commentid>
    <comment_count>34</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-01-20 13:39:54 -0800</bug_when>
    <thetext>Ping?  I&apos;ve confirmed that all tests pass in both debug and release mode with this patch applied.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183954</commentid>
    <comment_count>35</comment_count>
      <attachid>46633</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-22 22:19:16 -0800</bug_when>
    <thetext>Comment on attachment 46633
Patch

Clearing flags on attachment: 46633

Committed r53761: &lt;http://trac.webkit.org/changeset/53761&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183955</commentid>
    <comment_count>36</comment_count>
      <attachid>46633</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-22 22:19:24 -0800</bug_when>
    <thetext>Comment on attachment 46633
Patch

Rejecting patch 46633 from commit-queue.

Unexpected failure when landing patch!  Please file a bug against webkit-patch.
Failed to run &quot;[&apos;WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-commit-queue.appspot.com&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--no-update&apos;, &apos;--parent-command=commit-queue&apos;, &apos;--build-style=both&apos;, &apos;--quiet&apos;, &apos;46633&apos;]&quot; exit_code: 1
Last 500 characters of output:
ache.d/-1555206040/mechanize-0.1.11.zip/mechanize-0.1.11/mechanize/_mechanize.py&quot;, line 505, in select_form
  File &quot;./autoinstall.cache.d/-1555206040/mechanize-0.1.11.zip/mechanize-0.1.11/mechanize/_html.py&quot;, line 546, in __getattr__
  File &quot;./autoinstall.cache.d/-1555206040/mechanize-0.1.11.zip/mechanize-0.1.11/mechanize/_html.py&quot;, line 559, in forms
  File &quot;./autoinstall.cache.d/-1555206040/mechanize-0.1.11.zip/mechanize-0.1.11/mechanize/_html.py&quot;, line 228, in forms
mechanize._html.ParseError</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183960</commentid>
    <comment_count>37</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-01-22 23:02:15 -0800</bug_when>
    <thetext>Despite the above complaints, commit bot has landed this in &lt;http://trac.webkit.org/changeset/53761&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184164</commentid>
    <comment_count>38</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-24 22:32:12 -0800</bug_when>
    <thetext>Sorry, this is bug 33659.  The fix is simple, we just need to do it.  The commit-queue will properly land, but fail to actually post to bugzilla on any bug with html tags in it (which is a lot of them).  In this case, I expect the &lt;/select&gt; in one of the attachment names triggered this bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45024</attachid>
            <date>2009-12-16 16:47:34 -0800</date>
            <delta_ts>2010-01-04 18:09:03 -0800</delta_ts>
            <desc>Test, shows the incorrect behavior</desc>
            <filename>b32641_test.diff</filename>
            <type>text/plain</type>
            <size>2248</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjYTkwOGJkLi5hYWI3M2JhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMTIt
MTYgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGVja3MgdGhhdCB0aGUgc2VsZWN0
ZWQgYXR0cmlidXRlIG9mIGFuIDxvcHRpb24+IGlzIHVwIHRvIGRhdGUgb24gY3JlYXRpb24uCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNjQxCisK
KyAgICAgICAgKiBmYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2Vs
ZWN0ZWQyLmh0bWw6IEFkZGVkLgorCiAyMDA5LTEwLTE0ICBOYXRlIENoYXBpbiAgPGphcGhldEBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYnVpbGQgZml4LgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVudF9zZWxlY3RlZDItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVudF9zZWxl
Y3RlZDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5
ODUzOTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxPcHRp
b25FbGVtZW50X3NlbGVjdGVkMi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUaGlzIHRl
c3QgY2hlY2tzIHRoYXQgdGhlIHNlbGVjdGVkIHByb3BlcnR5IG9mIGFuIG9wdGlvbiBpcyBpbml0
aWFsaXplZCBjb3JyZWN0bHkuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMjY0MQorCitCZWZvcmUgcXVlcnlpbmcgc2VsZWN0ZWRJbmRleCwgW3RoZU9wdGlvbl0uc2Vs
ZWN0ZWQgPSB0cnVlCisKK0FmdGVyIHF1ZXJ5aW5nIHNlbGVjdGVkSW5kZXgsIFt0aGVPcHRpb25d
LnNlbGVjdGVkID0gdHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1M
T3B0aW9uRWxlbWVudF9zZWxlY3RlZDIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvSFRN
TE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXgg
MDAwMDAwMC4uNTMwNzc3MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQyLmh0bWwKQEAgLTAsMCArMSwxOSBAQAorPGh0
bWw+CisgIDxib2R5PgorICAgIDxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgc2VsZWN0ZWQg
cHJvcGVydHkgb2YgYW4gb3B0aW9uIGlzIGluaXRpYWxpemVkIGNvcnJlY3RseS4gIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjY0MQorICAgIDxwPkJlZm9yZSBxdWVy
eWluZyBzZWxlY3RlZEluZGV4LCBbdGhlT3B0aW9uXS5zZWxlY3RlZCA9IDxzcGFuIGlkPSJsb2dP
bmUiPjwvc3Bhbj48L3A+CisgICAgPHA+QWZ0ZXIgcXVlcnlpbmcgc2VsZWN0ZWRJbmRleCwgW3Ro
ZU9wdGlvbl0uc2VsZWN0ZWQgPSA8c3BhbiBpZD0ibG9nVHdvIj48L3NwYW4+PC9wPgorICAgIDxz
ZWxlY3QgaWQ9InRoZVNlbGVjdCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+CisgICAgICA8b3B0aW9u
IGlkPSJ0aGVPcHRpb24iPmxhbGFsYTwvb3B0aW9uPgorICAgIDwvc2VsZWN0PgorICAgIDxzY3Jp
cHQ+CisgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICB2YXIgbyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCd0aGVPcHRpb24nKTsKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdsb2dPbmUnKS5pbm5lclRleHQgPSBvLnNlbGVjdGVkOworICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3RoZVNlbGVjdCcpLnNlbGVjdGVkSW5kZXg7CisgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnbG9nVHdvJykuaW5uZXJUZXh0ID0gby5zZWxlY3RlZDsKKyAgICA8L3Njcmlw
dD4KKyAgPC9ib2R5PgorPC9odG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>45839</attachid>
            <date>2010-01-04 15:23:58 -0800</date>
            <delta_ts>2010-01-04 15:23:58 -0800</delta_ts>
            <desc>test case as HTML</desc>
            <filename>HTMLOptionElement_selected2.html</filename>
            <type>text/html</type>
            <size>804</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">ICA8Ym9keT4KICAgIDxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgc2VsZWN0ZWQgcHJvcGVy
dHkgb2YgYW4gb3B0aW9uIGlzIGluaXRpYWxpemVkIGNvcnJlY3RseS4gIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjY0MQogICAgPHA+QmVmb3JlIHF1ZXJ5aW5nIHNl
bGVjdGVkSW5kZXgsIFt0aGVPcHRpb25dLnNlbGVjdGVkID0gPHNwYW4gaWQ9ImxvZ09uZSI+PC9z
cGFuPjwvcD4KICAgIDxwPkFmdGVyIHF1ZXJ5aW5nIHNlbGVjdGVkSW5kZXgsIFt0aGVPcHRpb25d
LnNlbGVjdGVkID0gPHNwYW4gaWQ9ImxvZ1R3byI+PC9zcGFuPjwvcD4KICAgIDxzZWxlY3QgaWQ9
InRoZVNlbGVjdCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+CiAgICAgIDxvcHRpb24gaWQ9InRoZU9w
dGlvbiI+bGFsYWxhPC9vcHRpb24+CiAgICA8L3NlbGVjdD4KICAgIDxzY3JpcHQ+CiAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOwogICAgICB2YXIgbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0
aGVPcHRpb24nKTsKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZ09uZScpLnRleHRD
b250ZW50ID0gby5zZWxlY3RlZDsKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RoZVNl
bGVjdCcpLnNlbGVjdGVkSW5kZXg7CiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2dU
d28nKS50ZXh0Q29udGVudCA9IG8uc2VsZWN0ZWQ7CiAgICA8L3NjcmlwdD4KICA8L2JvZHk+Cjwv
aHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45852</attachid>
            <date>2010-01-04 18:09:03 -0800</date>
            <delta_ts>2010-01-07 13:15:56 -0800</delta_ts>
            <desc>Calls recalcListItems() when the &quot;&lt;/select&gt;&quot; is parsed to match Firefox behavior</desc>
            <filename>b_32641.diff</filename>
            <type>text/plain</type>
            <size>5025</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1Y2E0N2U5Li5iN2MzOThiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDEt
MDQgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGVja3MgdGhhdCB0aGUgJ3NlbGVj
dGVkJyBhdHRyaWJ1dGUgb24gYW4gPG9wdGlvbj4gaXMgdXAgdG8gZGF0ZSBpbW1lZGlhdGVseSBh
ZnRlciB0aGUgY29udGFpbmluZyA8c2VsZWN0PiBpcyBwYXJzZWQuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjY0MQorCisgICAgICAgICogZmFzdC9m
b3Jtcy9IVE1MT3B0aW9uRWxlbWVudF9zZWxlY3RlZDIuaHRtbDogQWRkZWQuCisKIDIwMDktMTIt
MzAgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBbmRlcnMgQ2FybHNzb24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL0hU
TUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMi1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTk4NTM5NwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQyLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDUgQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgc2VsZWN0ZWQg
cHJvcGVydHkgb2YgYW4gb3B0aW9uIGlzIGluaXRpYWxpemVkIGNvcnJlY3RseS4gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNjQxCisKK0JlZm9yZSBxdWVyeWluZyBz
ZWxlY3RlZEluZGV4LCBbdGhlT3B0aW9uXS5zZWxlY3RlZCA9IHRydWUKKworQWZ0ZXIgcXVlcnlp
bmcgc2VsZWN0ZWRJbmRleCwgW3RoZU9wdGlvbl0uc2VsZWN0ZWQgPSB0cnVlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMi5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVudF9zZWxlY3RlZDIuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hNzllYzdhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVudF9zZWxlY3Rl
ZDIuaHRtbApAQCAtMCwwICsxLDIwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICA8Ym9k
eT4KKyAgICA8cD5UaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhlIHNlbGVjdGVkIHByb3BlcnR5IG9m
IGFuIG9wdGlvbiBpcyBpbml0aWFsaXplZCBjb3JyZWN0bHkuIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMjY0MTwvcD4KKyAgICA8cD5CZWZvcmUgcXVlcnlpbmcgc2Vs
ZWN0ZWRJbmRleCwgW3RoZU9wdGlvbl0uc2VsZWN0ZWQgPSA8c3BhbiBpZD0ibG9nT25lIj48L3Nw
YW4+PC9wPgorICAgIDxwPkFmdGVyIHF1ZXJ5aW5nIHNlbGVjdGVkSW5kZXgsIFt0aGVPcHRpb25d
LnNlbGVjdGVkID0gPHNwYW4gaWQ9ImxvZ1R3byI+PC9zcGFuPjwvcD4KKyAgICA8c2VsZWN0IGlk
PSJ0aGVTZWxlY3QiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgorICAgICAgPG9wdGlvbiBpZD0idGhl
T3B0aW9uIj5sYWxhbGE8L29wdGlvbj4KKyAgICA8L3NlbGVjdD4KKyAgICA8c2NyaXB0PgorICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgdmFyIG8gPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgndGhlT3B0aW9uJyk7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nT25l
JykudGV4dENvbnRlbnQgPSBvLnNlbGVjdGVkOworICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3RoZVNlbGVjdCcpLnNlbGVjdGVkSW5kZXg7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnbG9nVHdvJykudGV4dENvbnRlbnQgPSBvLnNlbGVjdGVkOworICAgIDwvc2NyaXB0Pgor
IDwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCAyMzVkODZmLi45NDlhZGNiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEw
LTAxLTA0ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5zdXJlcyB0aGUgc2VsZWN0
ZWQgc3RhdGUgb2YgYW4gPG9wdGlvbj4gaXMgdXAgdG8gZGF0ZSB3aGVuIHRoZSBjb250YWluaW5n
IDwvc2VsZWN0PiBpcyBwYXJzZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zMjY0MQorCisgICAgICAgIFRoaXMgbWF0Y2hlcyBGaXJlZm94IGJlaGF2
aW9yLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0
ZWQyLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbik6Cisg
ICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOgorCiAyMDA5LTEyLTMwICBOYXRlIENo
YXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRy
aSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNw
cCBiL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggMjQwOWYzMS4uODE5
YzZkMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysg
Yi9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC00LDYgKzQsNyBAQAogICog
ICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQogICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292
IChhcEBueXBvcC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjcwLDYgKzI3MSwxMiBAQCB2
b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJz
ZXIsIE5vZGUqIGJlZm9yZUNoYW5nZQogICAgICAgICByZW5kZXJlcigpLT5kb2N1bWVudCgpLT5h
eE9iamVjdENhY2hlKCktPmNoaWxkcmVuQ2hhbmdlZChyZW5kZXJlcigpKTsKIH0KIAordm9pZCBI
VE1MU2VsZWN0RWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkKK3sKKyAgICBpZiAobV9k
YXRhLnNob3VsZFJlY2FsY0xpc3RJdGVtcygpKQorICAgICAgU2VsZWN0RWxlbWVudDo6cmVjYWxj
TGlzdEl0ZW1zKG1fZGF0YSwgdGhpcyk7Cit9CisKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnNl
dFJlY2FsY0xpc3RJdGVtcygpCiB7CiAgICAgU2VsZWN0RWxlbWVudDo6c2V0UmVjYWxjTGlzdEl0
ZW1zKG1fZGF0YSwgdGhpcyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVs
ZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCmluZGV4IDhmNTc1ZDIu
LmFkMTE4OWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCkBAIC0zLDYgKzMsNyBAQAogICog
ICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICog
ICAgICAgICAgIChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQogICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01Nyw2ICs1OCw5IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJz
ZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAw
LCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKKyAgICAvLyBSZWNhbGN1bGF0ZSBsaXN0IGl0
ZW1zIGFuZCBzZWxlY3RlZCBzdGF0ZSB3aGVuIHBhcnNpbmcgdGhlIDwvc2VsZWN0PiB0byBtYXRj
aCBGaXJlZm94LgorICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKKwog
ICAgIHZvaWQgc2V0UmVjYWxjTGlzdEl0ZW1zKCk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IFZlY3Rv
cjxFbGVtZW50Kj4mIGxpc3RJdGVtcygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5saXN0SXRlbXMo
dGhpcyk7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46080</attachid>
            <date>2010-01-07 13:15:56 -0800</date>
            <delta_ts>2010-01-10 23:12:37 -0800</delta_ts>
            <desc>Much better patch</desc>
            <filename>b_32641_2.diff</filename>
            <type>text/plain</type>
            <size>16452</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxOGFiNDM1Li44MGZlN2Y0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMDEt
MDcgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHRlc3RzIGZvciB0aGUgJ3Nl
bGVjdGVkJyBhdHRyaWJ1dGUgb2YgPG9wdGlvbj5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjY0MQorCisgICAgICAgIEhUTUxPcHRpb25FbGVtZW50
X3NlbGVjdGVkMiBjaGVja3MgdGhhdCB0aGUgc2VsZWN0ZWQgYXR0cmlidXRlIGlzIHVwIHRvIGRh
dGUgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIDxzZWxlY3Q+CisgICAgICAgIHBhcnNlZC4gIEhUTUxP
cHRpb25FbGVtZW50X3NlbGVjdGVkMyBkb2VzIHRoZSBzYW1lLCBidXQgY2hlY2tzIGltbWVkaWF0
ZWx5IHByaW9yIHRvIHRoZSA8L3NlbGVjdD4gZWxlbWVudC4KKworICAgICAgICBBbHNvIGNoYW5n
ZXMgdGhlIGV4cGVjdGF0aW9uIGZvciBhZGQtcmVtb3ZlLW9wdGlvbi1tb2RpZmljYXRpb24tZXZl
bnQgdG8gcmVmbGVjdCB0aGF0IHdlIG5vdyBwYXNzLgorCisKKyAgICAgICAgKiBmYXN0L2Zvcm1z
L0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0
L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkLmh0bWw6CisgICAgICAgICogZmFzdC9m
b3Jtcy9IVE1MT3B0aW9uRWxlbWVudF9zZWxlY3RlZDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMi5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRf
c2VsZWN0ZWQzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvYWRkLXJlbW92ZS1v
cHRpb24tbW9kaWZpY2F0aW9uLWV2ZW50LWV4cGVjdGVkLnR4dDoKKwogMjAxMC0wMS0wNSAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFj
aWVqIFN0YWNob3dpYWsuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxP
cHRpb25FbGVtZW50X3NlbGVjdGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQtZXhwZWN0ZWQudHh0CmluZGV4IDcwOTdjZmUu
Ljk4YjkwODcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvSFRNTE9wdGlvbkVs
ZW1lbnRfc2VsZWN0ZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
SFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNiBAQAog
VGhlIHRlc3QgYmVsb3cgcXVlcmllcyB0aGUgc2VsZWN0ZWQgcHJvcGVydHkgb2YgdGhlIG9wdGlv
bi4gSW4gYm90aCBjYXNlcyBpdCBzaG91bGQgYmUgc2VsZWN0ZWQsIGp1c3QgYXMgdGhlIHJlc3Vs
dCBpcyB3aGVuIHRoZSBzZWxlY3QgaXMgdmlzaWJsZS4gQnVnIDE1MDg4CiAKIHRydWUKKzAKIHRy
dWUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVu
dF9zZWxlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVu
dF9zZWxlY3RlZC5odG1sCmluZGV4IDE4MWJiNTkuLjFjMmQ1ZjggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkLmh0bWwKQEAg
LTEwLDcgKzEwLDcgQEAKICAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2NvbnNvbGUnKTsKICAgICAgICAgICAgIHZhciB0aGVPcHRpb24gPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgndGhlT3B0aW9uJyk7CiAgICAgICAgICAgICBjb25zb2xlLmlubmVy
SFRNTCArPSB0aGVPcHRpb24uc2VsZWN0ZWQgKyAiPGJyPiI7Ci0gICAgICAgICAgICB0aGVPcHRp
b24ucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4OworICAgICAgICAgICAgY29uc29sZS5pbm5lckhU
TUwgKz0gdGhlT3B0aW9uLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCArICI8YnI+IjsKICAgICAg
ICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MICs9IHRoZU9wdGlvbi5zZWxlY3RlZCArICI8YnI+IjsK
ICAgICAgICAgfQogICAgICAgICA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQyLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xMTcyYjdhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVudF9zZWxlY3Rl
ZDItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHRo
ZSBzZWxlY3RlZCBwcm9wZXJ0eSBvZiBhbiBvcHRpb24gaXMgaW5pdGlhbGl6ZWQgY29ycmVjdGx5
LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI2NDEKKworQmVmb3Jl
IHF1ZXJ5aW5nIHNlbGVjdGVkSW5kZXgsIFt0aGVPcHRpb25dLnNlbGVjdGVkID0gdHJ1ZQorCitb
dGhlU2VsZWN0XS5zZWxlY3RlZEluZGV4ID0gMAorCitBZnRlciBxdWVyeWluZyBzZWxlY3RlZElu
ZGV4LCBbdGhlT3B0aW9uXS5zZWxlY3RlZCA9IHRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQyLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjg3NmU1MWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMi5odG1sCkBAIC0w
LDAgKzEsMjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgIDxib2R5PgorICAgIDxwPlRo
aXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgc2VsZWN0ZWQgcHJvcGVydHkgb2YgYW4gb3B0aW9uIGlz
IGluaXRpYWxpemVkIGNvcnJlY3RseS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMyNjQxPC9wPgorICAgIDxwPkJlZm9yZSBxdWVyeWluZyBzZWxlY3RlZEluZGV4LCBb
dGhlT3B0aW9uXS5zZWxlY3RlZCA9IDxzcGFuIGlkPSJsb2dPbmUiPjwvc3Bhbj48L3A+CisgICAg
PHA+W3RoZVNlbGVjdF0uc2VsZWN0ZWRJbmRleCA9IDxzcGFuIGlkPSJsb2dUd28iPjwvc3Bhbj48
L3A+CisgICAgPHA+QWZ0ZXIgcXVlcnlpbmcgc2VsZWN0ZWRJbmRleCwgW3RoZU9wdGlvbl0uc2Vs
ZWN0ZWQgPSA8c3BhbiBpZD0ibG9nVGhyZWUiPjwvc3Bhbj48L3A+CisgICAgPHNlbGVjdCBpZD0i
dGhlU2VsZWN0IiBzdHlsZT0iZGlzcGxheTpub25lIj4KKyAgICAgIDxvcHRpb24gaWQ9InRoZU9w
dGlvbiI+bGFsYWxhPC9vcHRpb24+CisgICAgPC9zZWxlY3Q+CisgICAgPHNjcmlwdD4KKyAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgIHZhciBvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3RoZU9wdGlvbicpOworICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZ09uZScp
LnRleHRDb250ZW50ID0gby5zZWxlY3RlZDsKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdsb2dUd28nKS50ZXh0Q29udGVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aGVTZWxl
Y3QnKS5zZWxlY3RlZEluZGV4OworICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZ1Ro
cmVlJykudGV4dENvbnRlbnQgPSBvLnNlbGVjdGVkOworICAgIDwvc2NyaXB0PgorIDwvYm9keT4K
KzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0aW9u
RWxlbWVudF9zZWxlY3RlZDMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9I
VE1MT3B0aW9uRWxlbWVudF9zZWxlY3RlZDMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmI4ZTM4NTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw4IEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhlIHNlbGVjdGVkIHByb3BlcnR5
IG9mIGFuIG9wdGlvbiBpcyBpbml0aWFsaXplZCBjb3JyZWN0bHkgZXZlbiBwcmlvciB0byB0aGUg
PC9zZWxlY3Q+IGJlaW5nIHBhcnNlZC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMyNjQxCisKK0JlZm9yZSBxdWVyeWluZyBzZWxlY3RlZEluZGV4LCBbdGhlT3B0aW9u
XS5zZWxlY3RlZCA9IHRydWUKKworW3RoZVNlbGVjdF0uc2VsZWN0ZWRJbmRleCA9IDAKKworQWZ0
ZXIgcXVlcnlpbmcgc2VsZWN0ZWRJbmRleCwgW3RoZU9wdGlvbl0uc2VsZWN0ZWQgPSB0cnVlCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2Vs
ZWN0ZWQzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3Nl
bGVjdGVkMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjI1MjBhYmUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVt
ZW50X3NlbGVjdGVkMy5odG1sCkBAIC0wLDAgKzEsMjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+CisgIDxib2R5PgorICAgIDxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgc2VsZWN0ZWQg
cHJvcGVydHkgb2YgYW4gb3B0aW9uIGlzIGluaXRpYWxpemVkIGNvcnJlY3RseSBldmVuIHByaW9y
IHRvIHRoZSAmbHQ7L3NlbGVjdCZndDsgYmVpbmcgcGFyc2VkLiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI2NDE8L3A+CisgICAgPHA+QmVmb3JlIHF1ZXJ5aW5nIHNl
bGVjdGVkSW5kZXgsIFt0aGVPcHRpb25dLnNlbGVjdGVkID0gPHNwYW4gaWQ9ImxvZ09uZSI+PC9z
cGFuPjwvcD4KKyAgICA8cD5bdGhlU2VsZWN0XS5zZWxlY3RlZEluZGV4ID0gPHNwYW4gaWQ9Imxv
Z1R3byI+PC9zcGFuPjwvcD4KKyAgICA8cD5BZnRlciBxdWVyeWluZyBzZWxlY3RlZEluZGV4LCBb
dGhlT3B0aW9uXS5zZWxlY3RlZCA9IDxzcGFuIGlkPSJsb2dUaHJlZSI+PC9zcGFuPjwvcD4KKyAg
ICA8c2VsZWN0IGlkPSJ0aGVTZWxlY3QiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgorICAgICAgPG9w
dGlvbiBpZD0idGhlT3B0aW9uIj5sYWxhbGE8L29wdGlvbj4KKyAgICA8c2NyaXB0PgorICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgdmFyIG8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgndGhlT3B0aW9uJyk7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nT25lJyku
dGV4dENvbnRlbnQgPSBvLnNlbGVjdGVkOworICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2xvZ1R3bycpLnRleHRDb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RoZVNlbGVj
dCcpLnNlbGVjdGVkSW5kZXg7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nVGhy
ZWUnKS50ZXh0Q29udGVudCA9IG8uc2VsZWN0ZWQ7CisgICAgPC9zY3JpcHQ+CisgICAgPC9zZWxl
Y3Q+CisgPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2FkZC1yZW1vdmUtb3B0aW9uLW1vZGlmaWNhdGlvbi1ldmVudC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2FkZC1yZW1vdmUtb3B0aW9uLW1vZGlmaWNhdGlvbi1ldmVu
dC1leHBlY3RlZC50eHQKaW5kZXggODE4YzQ3Yy4uNWUxZDc2MSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9hZGQtcmVtb3ZlLW9wdGlvbi1tb2RpZmljYXRpb24tZXZlbnQtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYWRkLXJlbW92ZS1vcHRpb24t
bW9kaWZpY2F0aW9uLWV2ZW50LWV4cGVjdGVkLnR4dApAQCAtMiw5ICsyLDYgQEAgVGVzdCB0aGF0
IFNFTEVDVCBpcyBpbiBjb3JyZWN0IHN0YXRlIHdoZW4gaGFuZGxpbmcgYSBET00gbW9kaWZpY2F0
aW9uIGV2ZW50IGZvcgogCiAgIAogCi1GYWlsZWQKLSAgICAgRXhwZWN0ZWQ6IHRydWUKLSAgICAg
QWN0dWFsOiBmYWxzZQotCitQYXNzZWQKIFBhc3NlZAogUGFzc2VkCmRpZmYgLS1naXQgYS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFmZmY1OWMuLjczYWVlMTAg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTAtMDEtMDcgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBFbnN1cmVzIHRoYXQgdGhlICdzZWxlY3RlZCcgYXR0cmlidXRlIG9mIGFuIDxvcHRpb24+IGlz
IGNvcnJlY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMyNjQxCisKKyAgICAgICAgQWRkcyBhIGNoZWNrIGluIE9wdGlvbkVsZW1lbnQ6OnNlbGVjdGVk
KCkgdGhhdCBjaGVja3MgaWYgbGlzdCBpdGVtcyBuZWVkIHRvIGJlIHJlY2FsY3VsYXRlZCBhbmQg
ZG9lcyBzbyBpZiBuZWVkZWQsCisgICAgICAgIHNvIHRoZSBhdHRyaWJ1dGUgaXMgdXAgdG8gZGF0
ZSBtb3JlIG9mdGVuLiAgQWxzbyBnZXRzIHJpZCBvZiBtb3N0IG9mIHRoZSByZWNhbGNTdHlsZSgp
IHNpZGUgZWZmZWN0cy4KKworICAgICAgICBPdXIgYmVoYXZpb3Igbm93IG1hdGNoZXMgRmlyZWZv
eCAzLjUgYW5kIElFOCBhZnRlciB0aGUgPC9zZWxlY3Q+IGlzIHBhcnNlZC4KKworICAgICAgICBU
ZXN0czogZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVudF9zZWxlY3RlZDIuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVudF9zZWxlY3RlZDMuaHRtbAorCisg
ICAgICAgICogZG9tL1NlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
RWxlbWVudDo6c2V0T3B0aW9uc0NoYW5nZWRPblJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdEVsZW1lbnQ6OnNldFJlY2FsY0xpc3RJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpT
ZWxlY3RFbGVtZW50OjpyZWNhbGNMaXN0SXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
RWxlbWVudDo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0RWxlbWVudDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0RWxlbWVudDo6dHlw
ZUFoZWFkRmluZCk6CisgICAgICAgICogZG9tL1NlbGVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25F
bGVtZW50OjpzZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6
aW5zZXJ0ZWRJbnRvVHJlZSk6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVtc0lmTmVlZGVk
KToKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50Lmg6CisgICAgICAgICogd21sL1dN
TFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V01MU2VsZWN0RWxlbWVudDo6
cmVjYWxjU3R5bGUpOgorCiAyMDEwLTAxLTA1ICBEYXJpbiBGaXNoZXIgIDxkYXJpbkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5j
cHAKaW5kZXggMGU4NGEwOS4uNDU4ZjRjZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vU2VsZWN0
RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5jcHAKQEAgLTIyMiwy
OCArMjIyLDIxIEBAIHZvaWQgU2VsZWN0RWxlbWVudDo6c2Nyb2xsVG9TZWxlY3Rpb24oU2VsZWN0
RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgICAgIHRvUmVuZGVyTGlz
dEJveChyZW5kZXJlciktPnNlbGVjdGlvbkNoYW5nZWQoKTsKIH0KIAotdm9pZCBTZWxlY3RFbGVt
ZW50OjpyZWNhbGNTdHlsZShTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVu
dCkKK3ZvaWQgU2VsZWN0RWxlbWVudDo6c2V0T3B0aW9uc0NoYW5nZWRPblJlbmRlcmVyKFNlbGVj
dEVsZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50KiBlbGVtZW50KQogewotICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOwotICAgIGlmIChlbGVtZW50LT5jaGls
ZE5lZWRzU3R5bGVSZWNhbGMoKSAmJiByZW5kZXJlcikgeworICAgIGlmIChSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKSkgewogICAgICAgICBpZiAoZGF0YS51c2Vz
TWVudUxpc3QoKSkKICAgICAgICAgICAgIHRvUmVuZGVyTWVudUxpc3QocmVuZGVyZXIpLT5zZXRP
cHRpb25zQ2hhbmdlZCh0cnVlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdG9SZW5kZXJM
aXN0Qm94KHJlbmRlcmVyKS0+c2V0T3B0aW9uc0NoYW5nZWQodHJ1ZSk7Ci0gICAgfSBlbHNlIGlm
IChkYXRhLnNob3VsZFJlY2FsY0xpc3RJdGVtcygpKQotICAgICAgICByZWNhbGNMaXN0SXRlbXMo
ZGF0YSwgZWxlbWVudCk7CisgICAgfQogfQogCiB2b2lkIFNlbGVjdEVsZW1lbnQ6OnNldFJlY2Fs
Y0xpc3RJdGVtcyhTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCkKIHsK
ICAgICBkYXRhLnNldFNob3VsZFJlY2FsY0xpc3RJdGVtcyh0cnVlKTsKICAgICBkYXRhLnNldEFj
dGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KC0xKTsgLy8gTWFudWFsIHNlbGVjdGlvbiBhbmNob3Ig
aXMgcmVzZXQgd2hlbiBtYW5pcHVsYXRpbmcgdGhlIHNlbGVjdCBwcm9ncmFtbWF0aWNhbGx5Lgot
ICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKSkgewot
ICAgICAgICBpZiAoZGF0YS51c2VzTWVudUxpc3QoKSkKLSAgICAgICAgICAgIHRvUmVuZGVyTWVu
dUxpc3QocmVuZGVyZXIpLT5zZXRPcHRpb25zQ2hhbmdlZCh0cnVlKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgdG9SZW5kZXJMaXN0Qm94KHJlbmRlcmVyKS0+c2V0T3B0aW9uc0NoYW5nZWQo
dHJ1ZSk7Ci0gICAgfQorICAgIHNldE9wdGlvbnNDaGFuZ2VkT25SZW5kZXJlcihkYXRhLCBlbGVt
ZW50KTsKICAgICBlbGVtZW50LT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CiB9CiAKQEAgLTI1Miw2
ICsyNDUsOCBAQCB2b2lkIFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVtcyhTZWxlY3RFbGVt
ZW50RGF0YSYgZGF0YSwgY29uc3QgRWxlbWVudCogZWxlbQogICAgIFZlY3RvcjxFbGVtZW50Kj4m
IGxpc3RJdGVtcyA9IGRhdGEucmF3TGlzdEl0ZW1zKCk7CiAgICAgbGlzdEl0ZW1zLmNsZWFyKCk7
CiAKKyAgICBkYXRhLnNldFNob3VsZFJlY2FsY0xpc3RJdGVtcyhmYWxzZSk7CisKICAgICBPcHRp
b25FbGVtZW50KiBmb3VuZFNlbGVjdGVkID0gMDsKICAgICBmb3IgKE5vZGUqIGN1cnJlbnROb2Rl
ID0gZWxlbWVudC0+Zmlyc3RDaGlsZCgpOyBjdXJyZW50Tm9kZTspIHsKICAgICAgICAgaWYgKCFj
dXJyZW50Tm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7CkBAIC0yOTcsOCArMjkyLDYgQEAgdm9pZCBT
ZWxlY3RFbGVtZW50OjpyZWNhbGNMaXN0SXRlbXMoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIGNv
bnN0IEVsZW1lbnQqIGVsZW0KICAgICAgICAgLy8gPHNlbGVjdD4ncyBzdWJ0cmVlIGF0IHRoaXMg
cG9pbnQuCiAgICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUtPnRyYXZlcnNlTmV4dFNp
YmxpbmcoZWxlbWVudCk7CiAgICAgfQotCi0gICAgZGF0YS5zZXRTaG91bGRSZWNhbGNMaXN0SXRl
bXMoZmFsc2UpOwogfQogCiBpbnQgU2VsZWN0RWxlbWVudDo6c2VsZWN0ZWRJbmRleChjb25zdCBT
ZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgY29uc3QgRWxlbWVudCogZWxlbWVudCkKQEAgLTQ0Nyw3
ICs0NDAsNyBAQCB2b2lkIFNlbGVjdEVsZW1lbnQ6OnJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKFNl
bGVjdEVsZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50KiBlbAogICAgICAgICAgICAgb3B0aW9uRWxl
bWVudC0+c2V0U2VsZWN0ZWRTdGF0ZShzdGF0ZVtpXSA9PSAnWCcpOwogICAgIH0KIAotICAgIGVs
ZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICBzZXRPcHRpb25zQ2hhbmdlZE9uUmVu
ZGVyZXIoZGF0YSwgZWxlbWVudCk7CiB9CiAKIHZvaWQgU2VsZWN0RWxlbWVudDo6cGFyc2VNdWx0
aXBsZUF0dHJpYnV0ZShTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCwg
TWFwcGVkQXR0cmlidXRlKiBhdHRyaWJ1dGUpCkBAIC01MjEsNyArNTE0LDcgQEAgdm9pZCBTZWxl
Y3RFbGVtZW50OjpyZXNldChTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVu
dCkKICAgICBpZiAoIXNlbGVjdGVkT3B0aW9uICYmIGZpcnN0T3B0aW9uICYmIGRhdGEudXNlc01l
bnVMaXN0KCkpCiAgICAgICAgIGZpcnN0T3B0aW9uLT5zZXRTZWxlY3RlZFN0YXRlKHRydWUpOwog
Ci0gICAgZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOworICAgIHNldE9wdGlvbnNDaGFu
Z2VkT25SZW5kZXJlcihkYXRhLCBlbGVtZW50KTsKIH0KICAgICAKICNpZiAhQVJST1dfS0VZU19Q
T1BfTUVOVQpAQCAtODk1LDcgKzg4OCw4IEBAIHZvaWQgU2VsZWN0RWxlbWVudDo6dHlwZUFoZWFk
RmluZChTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCwgS2V5CiAgICAg
ICAgICAgICBzZXRTZWxlY3RlZEluZGV4KGRhdGEsIGVsZW1lbnQsIGxpc3RUb09wdGlvbkluZGV4
KGRhdGEsIGVsZW1lbnQsIGluZGV4KSk7CiAgICAgICAgICAgICBpZiAoIWRhdGEudXNlc01lbnVM
aXN0KCkpCiAgICAgICAgICAgICAgICAgbGlzdEJveE9uQ2hhbmdlKGRhdGEsIGVsZW1lbnQpOwot
ICAgICAgICAgICAgZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOworCisgICAgICAgICAg
ICBzZXRPcHRpb25zQ2hhbmdlZE9uUmVuZGVyZXIoZGF0YSwgZWxlbWVudCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TZWxl
Y3RFbGVtZW50LmggYi9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmgKaW5kZXggNGNjNzZhMC4u
ZTgzNzQwNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5oCisrKyBiL1dl
YkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuaApAQCAtNzUsNyArNzUsNiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgc3RhdGljIHZvaWQgbGlzdEJveE9uQ2hhbmdlKFNlbGVjdEVsZW1lbnREYXRhJiwgRWxlbWVu
dCopOwogICAgIHN0YXRpYyB2b2lkIG1lbnVMaXN0T25DaGFuZ2UoU2VsZWN0RWxlbWVudERhdGEm
LCBFbGVtZW50Kik7CiAgICAgc3RhdGljIHZvaWQgc2Nyb2xsVG9TZWxlY3Rpb24oU2VsZWN0RWxl
bWVudERhdGEmLCBFbGVtZW50Kik7Ci0gICAgc3RhdGljIHZvaWQgcmVjYWxjU3R5bGUoU2VsZWN0
RWxlbWVudERhdGEmLCBFbGVtZW50Kik7CiAgICAgc3RhdGljIHZvaWQgc2V0UmVjYWxjTGlzdEl0
ZW1zKFNlbGVjdEVsZW1lbnREYXRhJiwgRWxlbWVudCopOwogICAgIHN0YXRpYyB2b2lkIHJlY2Fs
Y0xpc3RJdGVtcyhTZWxlY3RFbGVtZW50RGF0YSYsIGNvbnN0IEVsZW1lbnQqLCBib29sIHVwZGF0
ZVNlbGVjdGVkU3RhdGVzID0gdHJ1ZSk7CiAgICAgc3RhdGljIGludCBzZWxlY3RlZEluZGV4KGNv
bnN0IFNlbGVjdEVsZW1lbnREYXRhJiwgY29uc3QgRWxlbWVudCopOwpAQCAtMTAwLDYgKzk5LDcg
QEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBtZW51TGlzdERlZmF1bHRF
dmVudEhhbmRsZXIoU2VsZWN0RWxlbWVudERhdGEmLCBFbGVtZW50KiwgRXZlbnQqLCBIVE1MRm9y
bUVsZW1lbnQqKTsKICAgICBzdGF0aWMgdm9pZCBsaXN0Qm94RGVmYXVsdEV2ZW50SGFuZGxlcihT
ZWxlY3RFbGVtZW50RGF0YSYsIEVsZW1lbnQqLCBFdmVudCosIEhUTUxGb3JtRWxlbWVudCopOwor
ICAgIHN0YXRpYyB2b2lkIHNldE9wdGlvbnNDaGFuZ2VkT25SZW5kZXJlcihTZWxlY3RFbGVtZW50
RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCk7CiB9OwogCiAvLyBIVE1ML1dNTFNlbGVjdEVs
ZW1lbnQgaG9sZCB0aGlzIHN0cnVjdCBhcyBtZW1iZXIgdmFyaWFibGUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bkVsZW1lbnQuY3BwCmluZGV4IDMxNmIxOTIuLjMyNjMzOTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25F
bGVtZW50LmNwcApAQCAtMTM3LDYgKzEzNyw4IEBAIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OnNl
dFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAKIGJvb2wgSFRNTE9wdGlvbkVsZW1lbnQ6OnNl
bGVjdGVkKCkgY29uc3QKIHsKKyAgICBpZiAoSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCA9IG93
bmVyU2VsZWN0RWxlbWVudCgpKQorICAgICAgICBzZWxlY3QtPnJlY2FsY0xpc3RJdGVtc0lmTmVl
ZGVkKCk7CiAgICAgcmV0dXJuIG1fZGF0YS5zZWxlY3RlZCgpOwogfQogCkBAIC0yMjAsNyArMjIy
LDggQEAgdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZShib29sIGRlZXAp
CiB7CiAgICAgaWYgKEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QgPSBvd25lclNlbGVjdEVsZW1l
bnQoKSkgewogICAgICAgICBzZWxlY3QtPnNldFJlY2FsY0xpc3RJdGVtcygpOwotICAgICAgICBp
ZiAoc2VsZWN0ZWQoKSkKKyAgICAgICAgLy8gQXZvaWQgb3VyIHNlbGVjdGVkKCkgZ2V0dGVyIHNp
bmNlIGl0IHdpbGwgcmVjYWxjdWxhdGUgbGlzdCBpdGVtcyBpbmNvcnJlY3RseSBmb3IgdXMuCisg
ICAgICAgIGlmIChtX2RhdGEuc2VsZWN0ZWQoKSkKICAgICAgICAgICAgIHNlbGVjdC0+c2V0U2Vs
ZWN0ZWRJbmRleChpbmRleCgpLCBmYWxzZSk7CiAgICAgICAgIHNlbGVjdC0+c2Nyb2xsVG9TZWxl
Y3Rpb24oKTsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAppbmRleCAyNDA5ZjMx
Li41ZjVjODU1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3Bw
CisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKQEAgLTQsNiArNCw3IEBA
CiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3Vy
eWFrb3YgKGFwQG55cG9wLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01OSw3ICs2MCw2IEBA
IGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OmNoZWNrRFREKGNvbnN0IE5vZGUqIG5ld0NoaWxkKQog
CiB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2Up
CiB7Ci0gICAgU2VsZWN0RWxlbWVudDo6cmVjYWxjU3R5bGUobV9kYXRhLCB0aGlzKTsKICAgICBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpyZWNhbGNTdHlsZShjaGFuZ2UpOwogfQog
CkBAIC0yNjEsNiArMjYxLDEyIEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJ
dGVtcyhib29sIHVwZGF0ZVNlbGVjdGVkU3RhdGVzKSBjb25zdAogICAgIFNlbGVjdEVsZW1lbnQ6
OnJlY2FsY0xpc3RJdGVtcyhjb25zdF9jYXN0PFNlbGVjdEVsZW1lbnREYXRhJj4obV9kYXRhKSwg
dGhpcywgdXBkYXRlU2VsZWN0ZWRTdGF0ZXMpOwogfQogCit2b2lkIEhUTUxTZWxlY3RFbGVtZW50
OjpyZWNhbGNMaXN0SXRlbXNJZk5lZWRlZCgpCit7CisgICAgaWYgKG1fZGF0YS5zaG91bGRSZWNh
bGNMaXN0SXRlbXMoKSkKKyAgICAgICAgcmVjYWxjTGlzdEl0ZW1zKCk7Cit9CisKIHZvaWQgSFRN
TFNlbGVjdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9k
ZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkK
IHsKICAgICBzZXRSZWNhbGNMaXN0SXRlbXMoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9I
VE1MU2VsZWN0RWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKaW5k
ZXggOGY1NzVkMi4uZDc3MmU0ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RF
bGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKQEAgLTMsNiAr
Myw3IEBACiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtk
ZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5v
cmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTU4LDYgKzU5
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFu
Z2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJD
aGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2b2lkIHNldFJlY2Fs
Y0xpc3RJdGVtcygpOworICAgIHZvaWQgcmVjYWxjTGlzdEl0ZW1zSWZOZWVkZWQoKTsKIAogICAg
IHZpcnR1YWwgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhLmxpc3RJdGVtcyh0aGlzKTsgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dtbC9X
TUxTZWxlY3RFbGVtZW50LmNwcCBiL1dlYkNvcmUvd21sL1dNTFNlbGVjdEVsZW1lbnQuY3BwCmlu
ZGV4IDAzY2EwNWEuLmU2MDQxZjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd21sL1dNTFNlbGVjdEVs
ZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvd21sL1dNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC04Myw3
ICs4Myw2IEBAIHZvaWQgV01MU2VsZWN0RWxlbWVudDo6c2VsZWN0QWxsKCkKIAogdm9pZCBXTUxT
ZWxlY3RFbGVtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2UpCiB7Ci0gICAgU2Vs
ZWN0RWxlbWVudDo6cmVjYWxjU3R5bGUobV9kYXRhLCB0aGlzKTsKICAgICBXTUxGb3JtQ29udHJv
bEVsZW1lbnQ6OnJlY2FsY1N0eWxlKGNoYW5nZSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46084</attachid>
            <date>2010-01-07 13:43:44 -0800</date>
            <delta_ts>2010-01-10 23:12:47 -0800</delta_ts>
            <desc>Addresses style nit</desc>
            <filename>b_32641_3.diff</filename>
            <type>text/plain</type>
            <size>16439</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxOGFiNDM1Li44MGZlN2Y0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMDEt
MDcgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHRlc3RzIGZvciB0aGUgJ3Nl
bGVjdGVkJyBhdHRyaWJ1dGUgb2YgPG9wdGlvbj5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjY0MQorCisgICAgICAgIEhUTUxPcHRpb25FbGVtZW50
X3NlbGVjdGVkMiBjaGVja3MgdGhhdCB0aGUgc2VsZWN0ZWQgYXR0cmlidXRlIGlzIHVwIHRvIGRh
dGUgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIDxzZWxlY3Q+CisgICAgICAgIHBhcnNlZC4gIEhUTUxP
cHRpb25FbGVtZW50X3NlbGVjdGVkMyBkb2VzIHRoZSBzYW1lLCBidXQgY2hlY2tzIGltbWVkaWF0
ZWx5IHByaW9yIHRvIHRoZSA8L3NlbGVjdD4gZWxlbWVudC4KKworICAgICAgICBBbHNvIGNoYW5n
ZXMgdGhlIGV4cGVjdGF0aW9uIGZvciBhZGQtcmVtb3ZlLW9wdGlvbi1tb2RpZmljYXRpb24tZXZl
bnQgdG8gcmVmbGVjdCB0aGF0IHdlIG5vdyBwYXNzLgorCisKKyAgICAgICAgKiBmYXN0L2Zvcm1z
L0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0
L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkLmh0bWw6CisgICAgICAgICogZmFzdC9m
b3Jtcy9IVE1MT3B0aW9uRWxlbWVudF9zZWxlY3RlZDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMi5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRf
c2VsZWN0ZWQzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvYWRkLXJlbW92ZS1v
cHRpb24tbW9kaWZpY2F0aW9uLWV2ZW50LWV4cGVjdGVkLnR4dDoKKwogMjAxMC0wMS0wNSAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFj
aWVqIFN0YWNob3dpYWsuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxP
cHRpb25FbGVtZW50X3NlbGVjdGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQtZXhwZWN0ZWQudHh0CmluZGV4IDcwOTdjZmUu
Ljk4YjkwODcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvSFRNTE9wdGlvbkVs
ZW1lbnRfc2VsZWN0ZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
SFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNiBAQAog
VGhlIHRlc3QgYmVsb3cgcXVlcmllcyB0aGUgc2VsZWN0ZWQgcHJvcGVydHkgb2YgdGhlIG9wdGlv
bi4gSW4gYm90aCBjYXNlcyBpdCBzaG91bGQgYmUgc2VsZWN0ZWQsIGp1c3QgYXMgdGhlIHJlc3Vs
dCBpcyB3aGVuIHRoZSBzZWxlY3QgaXMgdmlzaWJsZS4gQnVnIDE1MDg4CiAKIHRydWUKKzAKIHRy
dWUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVu
dF9zZWxlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVu
dF9zZWxlY3RlZC5odG1sCmluZGV4IDE4MWJiNTkuLjFjMmQ1ZjggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkLmh0bWwKQEAg
LTEwLDcgKzEwLDcgQEAKICAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2NvbnNvbGUnKTsKICAgICAgICAgICAgIHZhciB0aGVPcHRpb24gPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgndGhlT3B0aW9uJyk7CiAgICAgICAgICAgICBjb25zb2xlLmlubmVy
SFRNTCArPSB0aGVPcHRpb24uc2VsZWN0ZWQgKyAiPGJyPiI7Ci0gICAgICAgICAgICB0aGVPcHRp
b24ucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4OworICAgICAgICAgICAgY29uc29sZS5pbm5lckhU
TUwgKz0gdGhlT3B0aW9uLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCArICI8YnI+IjsKICAgICAg
ICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MICs9IHRoZU9wdGlvbi5zZWxlY3RlZCArICI8YnI+IjsK
ICAgICAgICAgfQogICAgICAgICA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQyLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xMTcyYjdhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVudF9zZWxlY3Rl
ZDItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHRo
ZSBzZWxlY3RlZCBwcm9wZXJ0eSBvZiBhbiBvcHRpb24gaXMgaW5pdGlhbGl6ZWQgY29ycmVjdGx5
LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI2NDEKKworQmVmb3Jl
IHF1ZXJ5aW5nIHNlbGVjdGVkSW5kZXgsIFt0aGVPcHRpb25dLnNlbGVjdGVkID0gdHJ1ZQorCitb
dGhlU2VsZWN0XS5zZWxlY3RlZEluZGV4ID0gMAorCitBZnRlciBxdWVyeWluZyBzZWxlY3RlZElu
ZGV4LCBbdGhlT3B0aW9uXS5zZWxlY3RlZCA9IHRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQyLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjg3NmU1MWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMi5odG1sCkBAIC0w
LDAgKzEsMjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgIDxib2R5PgorICAgIDxwPlRo
aXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgc2VsZWN0ZWQgcHJvcGVydHkgb2YgYW4gb3B0aW9uIGlz
IGluaXRpYWxpemVkIGNvcnJlY3RseS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMyNjQxPC9wPgorICAgIDxwPkJlZm9yZSBxdWVyeWluZyBzZWxlY3RlZEluZGV4LCBb
dGhlT3B0aW9uXS5zZWxlY3RlZCA9IDxzcGFuIGlkPSJsb2dPbmUiPjwvc3Bhbj48L3A+CisgICAg
PHA+W3RoZVNlbGVjdF0uc2VsZWN0ZWRJbmRleCA9IDxzcGFuIGlkPSJsb2dUd28iPjwvc3Bhbj48
L3A+CisgICAgPHA+QWZ0ZXIgcXVlcnlpbmcgc2VsZWN0ZWRJbmRleCwgW3RoZU9wdGlvbl0uc2Vs
ZWN0ZWQgPSA8c3BhbiBpZD0ibG9nVGhyZWUiPjwvc3Bhbj48L3A+CisgICAgPHNlbGVjdCBpZD0i
dGhlU2VsZWN0IiBzdHlsZT0iZGlzcGxheTpub25lIj4KKyAgICAgIDxvcHRpb24gaWQ9InRoZU9w
dGlvbiI+bGFsYWxhPC9vcHRpb24+CisgICAgPC9zZWxlY3Q+CisgICAgPHNjcmlwdD4KKyAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgIHZhciBvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3RoZU9wdGlvbicpOworICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZ09uZScp
LnRleHRDb250ZW50ID0gby5zZWxlY3RlZDsKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdsb2dUd28nKS50ZXh0Q29udGVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aGVTZWxl
Y3QnKS5zZWxlY3RlZEluZGV4OworICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZ1Ro
cmVlJykudGV4dENvbnRlbnQgPSBvLnNlbGVjdGVkOworICAgIDwvc2NyaXB0PgorIDwvYm9keT4K
KzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0aW9u
RWxlbWVudF9zZWxlY3RlZDMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9I
VE1MT3B0aW9uRWxlbWVudF9zZWxlY3RlZDMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmI4ZTM4NTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw4IEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhlIHNlbGVjdGVkIHByb3BlcnR5
IG9mIGFuIG9wdGlvbiBpcyBpbml0aWFsaXplZCBjb3JyZWN0bHkgZXZlbiBwcmlvciB0byB0aGUg
PC9zZWxlY3Q+IGJlaW5nIHBhcnNlZC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMyNjQxCisKK0JlZm9yZSBxdWVyeWluZyBzZWxlY3RlZEluZGV4LCBbdGhlT3B0aW9u
XS5zZWxlY3RlZCA9IHRydWUKKworW3RoZVNlbGVjdF0uc2VsZWN0ZWRJbmRleCA9IDAKKworQWZ0
ZXIgcXVlcnlpbmcgc2VsZWN0ZWRJbmRleCwgW3RoZU9wdGlvbl0uc2VsZWN0ZWQgPSB0cnVlCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2Vs
ZWN0ZWQzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3Nl
bGVjdGVkMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjI1MjBhYmUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVt
ZW50X3NlbGVjdGVkMy5odG1sCkBAIC0wLDAgKzEsMjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+CisgIDxib2R5PgorICAgIDxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgc2VsZWN0ZWQg
cHJvcGVydHkgb2YgYW4gb3B0aW9uIGlzIGluaXRpYWxpemVkIGNvcnJlY3RseSBldmVuIHByaW9y
IHRvIHRoZSAmbHQ7L3NlbGVjdCZndDsgYmVpbmcgcGFyc2VkLiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI2NDE8L3A+CisgICAgPHA+QmVmb3JlIHF1ZXJ5aW5nIHNl
bGVjdGVkSW5kZXgsIFt0aGVPcHRpb25dLnNlbGVjdGVkID0gPHNwYW4gaWQ9ImxvZ09uZSI+PC9z
cGFuPjwvcD4KKyAgICA8cD5bdGhlU2VsZWN0XS5zZWxlY3RlZEluZGV4ID0gPHNwYW4gaWQ9Imxv
Z1R3byI+PC9zcGFuPjwvcD4KKyAgICA8cD5BZnRlciBxdWVyeWluZyBzZWxlY3RlZEluZGV4LCBb
dGhlT3B0aW9uXS5zZWxlY3RlZCA9IDxzcGFuIGlkPSJsb2dUaHJlZSI+PC9zcGFuPjwvcD4KKyAg
ICA8c2VsZWN0IGlkPSJ0aGVTZWxlY3QiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgorICAgICAgPG9w
dGlvbiBpZD0idGhlT3B0aW9uIj5sYWxhbGE8L29wdGlvbj4KKyAgICA8c2NyaXB0PgorICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgdmFyIG8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgndGhlT3B0aW9uJyk7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nT25lJyku
dGV4dENvbnRlbnQgPSBvLnNlbGVjdGVkOworICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2xvZ1R3bycpLnRleHRDb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RoZVNlbGVj
dCcpLnNlbGVjdGVkSW5kZXg7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nVGhy
ZWUnKS50ZXh0Q29udGVudCA9IG8uc2VsZWN0ZWQ7CisgICAgPC9zY3JpcHQ+CisgICAgPC9zZWxl
Y3Q+CisgPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2FkZC1yZW1vdmUtb3B0aW9uLW1vZGlmaWNhdGlvbi1ldmVudC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2FkZC1yZW1vdmUtb3B0aW9uLW1vZGlmaWNhdGlvbi1ldmVu
dC1leHBlY3RlZC50eHQKaW5kZXggODE4YzQ3Yy4uNWUxZDc2MSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9hZGQtcmVtb3ZlLW9wdGlvbi1tb2RpZmljYXRpb24tZXZlbnQtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYWRkLXJlbW92ZS1vcHRpb24t
bW9kaWZpY2F0aW9uLWV2ZW50LWV4cGVjdGVkLnR4dApAQCAtMiw5ICsyLDYgQEAgVGVzdCB0aGF0
IFNFTEVDVCBpcyBpbiBjb3JyZWN0IHN0YXRlIHdoZW4gaGFuZGxpbmcgYSBET00gbW9kaWZpY2F0
aW9uIGV2ZW50IGZvcgogCiAgIAogCi1GYWlsZWQKLSAgICAgRXhwZWN0ZWQ6IHRydWUKLSAgICAg
QWN0dWFsOiBmYWxzZQotCitQYXNzZWQKIFBhc3NlZAogUGFzc2VkCmRpZmYgLS1naXQgYS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFmZmY1OWMuLjczYWVlMTAg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTAtMDEtMDcgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBFbnN1cmVzIHRoYXQgdGhlICdzZWxlY3RlZCcgYXR0cmlidXRlIG9mIGFuIDxvcHRpb24+IGlz
IGNvcnJlY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMyNjQxCisKKyAgICAgICAgQWRkcyBhIGNoZWNrIGluIE9wdGlvbkVsZW1lbnQ6OnNlbGVjdGVk
KCkgdGhhdCBjaGVja3MgaWYgbGlzdCBpdGVtcyBuZWVkIHRvIGJlIHJlY2FsY3VsYXRlZCBhbmQg
ZG9lcyBzbyBpZiBuZWVkZWQsCisgICAgICAgIHNvIHRoZSBhdHRyaWJ1dGUgaXMgdXAgdG8gZGF0
ZSBtb3JlIG9mdGVuLiAgQWxzbyBnZXRzIHJpZCBvZiBtb3N0IG9mIHRoZSByZWNhbGNTdHlsZSgp
IHNpZGUgZWZmZWN0cy4KKworICAgICAgICBPdXIgYmVoYXZpb3Igbm93IG1hdGNoZXMgRmlyZWZv
eCAzLjUgYW5kIElFOCBhZnRlciB0aGUgPC9zZWxlY3Q+IGlzIHBhcnNlZC4KKworICAgICAgICBU
ZXN0czogZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVudF9zZWxlY3RlZDIuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVudF9zZWxlY3RlZDMuaHRtbAorCisg
ICAgICAgICogZG9tL1NlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
RWxlbWVudDo6c2V0T3B0aW9uc0NoYW5nZWRPblJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdEVsZW1lbnQ6OnNldFJlY2FsY0xpc3RJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpT
ZWxlY3RFbGVtZW50OjpyZWNhbGNMaXN0SXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
RWxlbWVudDo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0RWxlbWVudDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0RWxlbWVudDo6dHlw
ZUFoZWFkRmluZCk6CisgICAgICAgICogZG9tL1NlbGVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25F
bGVtZW50OjpzZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6
aW5zZXJ0ZWRJbnRvVHJlZSk6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjU3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVtc0lmTmVlZGVk
KToKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50Lmg6CisgICAgICAgICogd21sL1dN
TFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V01MU2VsZWN0RWxlbWVudDo6
cmVjYWxjU3R5bGUpOgorCiAyMDEwLTAxLTA1ICBEYXJpbiBGaXNoZXIgIDxkYXJpbkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5j
cHAKaW5kZXggMGU4NGEwOS4uNDU4ZjRjZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vU2VsZWN0
RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5jcHAKQEAgLTIyMiwy
OCArMjIyLDIxIEBAIHZvaWQgU2VsZWN0RWxlbWVudDo6c2Nyb2xsVG9TZWxlY3Rpb24oU2VsZWN0
RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgICAgIHRvUmVuZGVyTGlz
dEJveChyZW5kZXJlciktPnNlbGVjdGlvbkNoYW5nZWQoKTsKIH0KIAotdm9pZCBTZWxlY3RFbGVt
ZW50OjpyZWNhbGNTdHlsZShTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVu
dCkKK3ZvaWQgU2VsZWN0RWxlbWVudDo6c2V0T3B0aW9uc0NoYW5nZWRPblJlbmRlcmVyKFNlbGVj
dEVsZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50KiBlbGVtZW50KQogewotICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOwotICAgIGlmIChlbGVtZW50LT5jaGls
ZE5lZWRzU3R5bGVSZWNhbGMoKSAmJiByZW5kZXJlcikgeworICAgIGlmIChSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKSkgewogICAgICAgICBpZiAoZGF0YS51c2Vz
TWVudUxpc3QoKSkKICAgICAgICAgICAgIHRvUmVuZGVyTWVudUxpc3QocmVuZGVyZXIpLT5zZXRP
cHRpb25zQ2hhbmdlZCh0cnVlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdG9SZW5kZXJM
aXN0Qm94KHJlbmRlcmVyKS0+c2V0T3B0aW9uc0NoYW5nZWQodHJ1ZSk7Ci0gICAgfSBlbHNlIGlm
IChkYXRhLnNob3VsZFJlY2FsY0xpc3RJdGVtcygpKQotICAgICAgICByZWNhbGNMaXN0SXRlbXMo
ZGF0YSwgZWxlbWVudCk7CisgICAgfQogfQogCiB2b2lkIFNlbGVjdEVsZW1lbnQ6OnNldFJlY2Fs
Y0xpc3RJdGVtcyhTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCkKIHsK
ICAgICBkYXRhLnNldFNob3VsZFJlY2FsY0xpc3RJdGVtcyh0cnVlKTsKICAgICBkYXRhLnNldEFj
dGl2ZVNlbGVjdGlvbkFuY2hvckluZGV4KC0xKTsgLy8gTWFudWFsIHNlbGVjdGlvbiBhbmNob3Ig
aXMgcmVzZXQgd2hlbiBtYW5pcHVsYXRpbmcgdGhlIHNlbGVjdCBwcm9ncmFtbWF0aWNhbGx5Lgot
ICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKSkgewot
ICAgICAgICBpZiAoZGF0YS51c2VzTWVudUxpc3QoKSkKLSAgICAgICAgICAgIHRvUmVuZGVyTWVu
dUxpc3QocmVuZGVyZXIpLT5zZXRPcHRpb25zQ2hhbmdlZCh0cnVlKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgdG9SZW5kZXJMaXN0Qm94KHJlbmRlcmVyKS0+c2V0T3B0aW9uc0NoYW5nZWQo
dHJ1ZSk7Ci0gICAgfQorICAgIHNldE9wdGlvbnNDaGFuZ2VkT25SZW5kZXJlcihkYXRhLCBlbGVt
ZW50KTsKICAgICBlbGVtZW50LT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CiB9CiAKQEAgLTI1Miw2
ICsyNDUsOCBAQCB2b2lkIFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVtcyhTZWxlY3RFbGVt
ZW50RGF0YSYgZGF0YSwgY29uc3QgRWxlbWVudCogZWxlbQogICAgIFZlY3RvcjxFbGVtZW50Kj4m
IGxpc3RJdGVtcyA9IGRhdGEucmF3TGlzdEl0ZW1zKCk7CiAgICAgbGlzdEl0ZW1zLmNsZWFyKCk7
CiAKKyAgICBkYXRhLnNldFNob3VsZFJlY2FsY0xpc3RJdGVtcyhmYWxzZSk7CisKICAgICBPcHRp
b25FbGVtZW50KiBmb3VuZFNlbGVjdGVkID0gMDsKICAgICBmb3IgKE5vZGUqIGN1cnJlbnROb2Rl
ID0gZWxlbWVudC0+Zmlyc3RDaGlsZCgpOyBjdXJyZW50Tm9kZTspIHsKICAgICAgICAgaWYgKCFj
dXJyZW50Tm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7CkBAIC0yOTcsOCArMjkyLDYgQEAgdm9pZCBT
ZWxlY3RFbGVtZW50OjpyZWNhbGNMaXN0SXRlbXMoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIGNv
bnN0IEVsZW1lbnQqIGVsZW0KICAgICAgICAgLy8gPHNlbGVjdD4ncyBzdWJ0cmVlIGF0IHRoaXMg
cG9pbnQuCiAgICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUtPnRyYXZlcnNlTmV4dFNp
YmxpbmcoZWxlbWVudCk7CiAgICAgfQotCi0gICAgZGF0YS5zZXRTaG91bGRSZWNhbGNMaXN0SXRl
bXMoZmFsc2UpOwogfQogCiBpbnQgU2VsZWN0RWxlbWVudDo6c2VsZWN0ZWRJbmRleChjb25zdCBT
ZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgY29uc3QgRWxlbWVudCogZWxlbWVudCkKQEAgLTQ0Nyw3
ICs0NDAsNyBAQCB2b2lkIFNlbGVjdEVsZW1lbnQ6OnJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKFNl
bGVjdEVsZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50KiBlbAogICAgICAgICAgICAgb3B0aW9uRWxl
bWVudC0+c2V0U2VsZWN0ZWRTdGF0ZShzdGF0ZVtpXSA9PSAnWCcpOwogICAgIH0KIAotICAgIGVs
ZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICBzZXRPcHRpb25zQ2hhbmdlZE9uUmVu
ZGVyZXIoZGF0YSwgZWxlbWVudCk7CiB9CiAKIHZvaWQgU2VsZWN0RWxlbWVudDo6cGFyc2VNdWx0
aXBsZUF0dHJpYnV0ZShTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCwg
TWFwcGVkQXR0cmlidXRlKiBhdHRyaWJ1dGUpCkBAIC01MjEsNyArNTE0LDcgQEAgdm9pZCBTZWxl
Y3RFbGVtZW50OjpyZXNldChTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVu
dCkKICAgICBpZiAoIXNlbGVjdGVkT3B0aW9uICYmIGZpcnN0T3B0aW9uICYmIGRhdGEudXNlc01l
bnVMaXN0KCkpCiAgICAgICAgIGZpcnN0T3B0aW9uLT5zZXRTZWxlY3RlZFN0YXRlKHRydWUpOwog
Ci0gICAgZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOworICAgIHNldE9wdGlvbnNDaGFu
Z2VkT25SZW5kZXJlcihkYXRhLCBlbGVtZW50KTsKIH0KICAgICAKICNpZiAhQVJST1dfS0VZU19Q
T1BfTUVOVQpAQCAtODk1LDcgKzg4OCw4IEBAIHZvaWQgU2VsZWN0RWxlbWVudDo6dHlwZUFoZWFk
RmluZChTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCwgS2V5CiAgICAg
ICAgICAgICBzZXRTZWxlY3RlZEluZGV4KGRhdGEsIGVsZW1lbnQsIGxpc3RUb09wdGlvbkluZGV4
KGRhdGEsIGVsZW1lbnQsIGluZGV4KSk7CiAgICAgICAgICAgICBpZiAoIWRhdGEudXNlc01lbnVM
aXN0KCkpCiAgICAgICAgICAgICAgICAgbGlzdEJveE9uQ2hhbmdlKGRhdGEsIGVsZW1lbnQpOwot
ICAgICAgICAgICAgZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOworCisgICAgICAgICAg
ICBzZXRPcHRpb25zQ2hhbmdlZE9uUmVuZGVyZXIoZGF0YSwgZWxlbWVudCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TZWxl
Y3RFbGVtZW50LmggYi9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmgKaW5kZXggNGNjNzZhMC4u
Njg5MWMyMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5oCisrKyBiL1dl
YkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuaApAQCAtNzUsNyArNzUsNiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgc3RhdGljIHZvaWQgbGlzdEJveE9uQ2hhbmdlKFNlbGVjdEVsZW1lbnREYXRhJiwgRWxlbWVu
dCopOwogICAgIHN0YXRpYyB2b2lkIG1lbnVMaXN0T25DaGFuZ2UoU2VsZWN0RWxlbWVudERhdGEm
LCBFbGVtZW50Kik7CiAgICAgc3RhdGljIHZvaWQgc2Nyb2xsVG9TZWxlY3Rpb24oU2VsZWN0RWxl
bWVudERhdGEmLCBFbGVtZW50Kik7Ci0gICAgc3RhdGljIHZvaWQgcmVjYWxjU3R5bGUoU2VsZWN0
RWxlbWVudERhdGEmLCBFbGVtZW50Kik7CiAgICAgc3RhdGljIHZvaWQgc2V0UmVjYWxjTGlzdEl0
ZW1zKFNlbGVjdEVsZW1lbnREYXRhJiwgRWxlbWVudCopOwogICAgIHN0YXRpYyB2b2lkIHJlY2Fs
Y0xpc3RJdGVtcyhTZWxlY3RFbGVtZW50RGF0YSYsIGNvbnN0IEVsZW1lbnQqLCBib29sIHVwZGF0
ZVNlbGVjdGVkU3RhdGVzID0gdHJ1ZSk7CiAgICAgc3RhdGljIGludCBzZWxlY3RlZEluZGV4KGNv
bnN0IFNlbGVjdEVsZW1lbnREYXRhJiwgY29uc3QgRWxlbWVudCopOwpAQCAtMTAwLDYgKzk5LDcg
QEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBtZW51TGlzdERlZmF1bHRF
dmVudEhhbmRsZXIoU2VsZWN0RWxlbWVudERhdGEmLCBFbGVtZW50KiwgRXZlbnQqLCBIVE1MRm9y
bUVsZW1lbnQqKTsKICAgICBzdGF0aWMgdm9pZCBsaXN0Qm94RGVmYXVsdEV2ZW50SGFuZGxlcihT
ZWxlY3RFbGVtZW50RGF0YSYsIEVsZW1lbnQqLCBFdmVudCosIEhUTUxGb3JtRWxlbWVudCopOwor
ICAgIHN0YXRpYyB2b2lkIHNldE9wdGlvbnNDaGFuZ2VkT25SZW5kZXJlcihTZWxlY3RFbGVtZW50
RGF0YSYsIEVsZW1lbnQqKTsKIH07CiAKIC8vIEhUTUwvV01MU2VsZWN0RWxlbWVudCBob2xkIHRo
aXMgc3RydWN0IGFzIG1lbWJlciB2YXJpYWJsZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hU
TUxPcHRpb25FbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAK
aW5kZXggMzE2YjE5Mi4uMzI2MzM5MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxPcHRp
b25FbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCkBA
IC0xMzcsNiArMTM3LDggQEAgdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6c2V0VmFsdWUoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIAogYm9vbCBIVE1MT3B0aW9uRWxlbWVudDo6c2VsZWN0ZWQoKSBjb25z
dAogeworICAgIGlmIChIVE1MU2VsZWN0RWxlbWVudCogc2VsZWN0ID0gb3duZXJTZWxlY3RFbGVt
ZW50KCkpCisgICAgICAgIHNlbGVjdC0+cmVjYWxjTGlzdEl0ZW1zSWZOZWVkZWQoKTsKICAgICBy
ZXR1cm4gbV9kYXRhLnNlbGVjdGVkKCk7CiB9CiAKQEAgLTIyMCw3ICsyMjIsOCBAQCB2b2lkIEhU
TUxPcHRpb25FbGVtZW50OjppbnNlcnRlZEludG9UcmVlKGJvb2wgZGVlcCkKIHsKICAgICBpZiAo
SFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCA9IG93bmVyU2VsZWN0RWxlbWVudCgpKSB7CiAgICAg
ICAgIHNlbGVjdC0+c2V0UmVjYWxjTGlzdEl0ZW1zKCk7Ci0gICAgICAgIGlmIChzZWxlY3RlZCgp
KQorICAgICAgICAvLyBBdm9pZCBvdXIgc2VsZWN0ZWQoKSBnZXR0ZXIgc2luY2UgaXQgd2lsbCBy
ZWNhbGN1bGF0ZSBsaXN0IGl0ZW1zIGluY29ycmVjdGx5IGZvciB1cy4KKyAgICAgICAgaWYgKG1f
ZGF0YS5zZWxlY3RlZCgpKQogICAgICAgICAgICAgc2VsZWN0LT5zZXRTZWxlY3RlZEluZGV4KGlu
ZGV4KCksIGZhbHNlKTsKICAgICAgICAgc2VsZWN0LT5zY3JvbGxUb1NlbGVjdGlvbigpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAgYi9XZWJD
b3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDI0MDlmMzEuLjVmNWM4NTUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29y
ZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcApAQCAtNCw2ICs0LDcgQEAKICAqICAgICAgICAg
ICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKICAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlw
b3AuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTU5LDcgKzYwLDYgQEAgYm9vbCBIVE1MU2Vs
ZWN0RWxlbWVudDo6Y2hlY2tEVEQoY29uc3QgTm9kZSogbmV3Q2hpbGQpCiAKIHZvaWQgSFRNTFNl
bGVjdEVsZW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKIHsKLSAgICBTZWxl
Y3RFbGVtZW50OjpyZWNhbGNTdHlsZShtX2RhdGEsIHRoaXMpOwogICAgIEhUTUxGb3JtQ29udHJv
bEVsZW1lbnRXaXRoU3RhdGU6OnJlY2FsY1N0eWxlKGNoYW5nZSk7CiB9CiAKQEAgLTI2MSw2ICsy
NjEsMTIgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0ZW1zKGJvb2wgdXBk
YXRlU2VsZWN0ZWRTdGF0ZXMpIGNvbnN0CiAgICAgU2VsZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0
ZW1zKGNvbnN0X2Nhc3Q8U2VsZWN0RWxlbWVudERhdGEmPihtX2RhdGEpLCB0aGlzLCB1cGRhdGVT
ZWxlY3RlZFN0YXRlcyk7CiB9CiAKK3ZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJ
dGVtc0lmTmVlZGVkKCkKK3sKKyAgICBpZiAobV9kYXRhLnNob3VsZFJlY2FsY0xpc3RJdGVtcygp
KQorICAgICAgICByZWNhbGNMaXN0SXRlbXMoKTsKK30KKwogdm9pZCBIVE1MU2VsZWN0RWxlbWVu
dDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFu
Z2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQogewogICAgIHNldFJl
Y2FsY0xpc3RJdGVtcygpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVt
ZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAppbmRleCA4ZjU3NWQyLi5k
NzcyZTRkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAorKysg
Yi9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaApAQCAtMyw2ICszLDcgQEAKICAqICAg
ICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAg
ICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKICAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNTgsNiArNTksNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9
IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGlu
dCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIHZvaWQgc2V0UmVjYWxjTGlzdEl0ZW1zKCk7
CisgICAgdm9pZCByZWNhbGNMaXN0SXRlbXNJZk5lZWRlZCgpOwogCiAgICAgdmlydHVhbCBjb25z
dCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMoKSBjb25zdCB7IHJldHVybiBtX2RhdGEubGlz
dEl0ZW1zKHRoaXMpOyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd21sL1dNTFNlbGVjdEVsZW1l
bnQuY3BwIGIvV2ViQ29yZS93bWwvV01MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggMDNjYTA1YS4u
ZTYwNDFmNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS93bWwvV01MU2VsZWN0RWxlbWVudC5jcHAKKysr
IGIvV2ViQ29yZS93bWwvV01MU2VsZWN0RWxlbWVudC5jcHAKQEAgLTgzLDcgKzgzLDYgQEAgdm9p
ZCBXTUxTZWxlY3RFbGVtZW50OjpzZWxlY3RBbGwoKQogCiB2b2lkIFdNTFNlbGVjdEVsZW1lbnQ6
OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKIHsKLSAgICBTZWxlY3RFbGVtZW50Ojpy
ZWNhbGNTdHlsZShtX2RhdGEsIHRoaXMpOwogICAgIFdNTEZvcm1Db250cm9sRWxlbWVudDo6cmVj
YWxjU3R5bGUoY2hhbmdlKTsKIH0KIAo=
</data>
<flag name="commit-queue"
          id="28296"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46108</attachid>
            <date>2010-01-07 19:07:18 -0800</date>
            <delta_ts>2010-01-10 23:12:56 -0800</delta_ts>
            <desc>Removes trailing newline in HTMLOptionElement_selected3-expectation.txt</desc>
            <filename>b_32641.diff</filename>
            <type>text/plain</type>
            <size>16437</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxOGFiNDM1Li44MGZlN2Y0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMDEt
MDcgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHRlc3RzIGZvciB0aGUgJ3Nl
bGVjdGVkJyBhdHRyaWJ1dGUgb2YgPG9wdGlvbj5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjY0MQorCisgICAgICAgIEhUTUxPcHRpb25FbGVtZW50
X3NlbGVjdGVkMiBjaGVja3MgdGhhdCB0aGUgc2VsZWN0ZWQgYXR0cmlidXRlIGlzIHVwIHRvIGRh
dGUgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIDxzZWxlY3Q+CisgICAgICAgIHBhcnNlZC4gIEhUTUxP
cHRpb25FbGVtZW50X3NlbGVjdGVkMyBkb2VzIHRoZSBzYW1lLCBidXQgY2hlY2tzIGltbWVkaWF0
ZWx5IHByaW9yIHRvIHRoZSA8L3NlbGVjdD4gZWxlbWVudC4KKworICAgICAgICBBbHNvIGNoYW5n
ZXMgdGhlIGV4cGVjdGF0aW9uIGZvciBhZGQtcmVtb3ZlLW9wdGlvbi1tb2RpZmljYXRpb24tZXZl
bnQgdG8gcmVmbGVjdCB0aGF0IHdlIG5vdyBwYXNzLgorCisKKyAgICAgICAgKiBmYXN0L2Zvcm1z
L0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0
L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkLmh0bWw6CisgICAgICAgICogZmFzdC9m
b3Jtcy9IVE1MT3B0aW9uRWxlbWVudF9zZWxlY3RlZDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMi5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRf
c2VsZWN0ZWQzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvYWRkLXJlbW92ZS1v
cHRpb24tbW9kaWZpY2F0aW9uLWV2ZW50LWV4cGVjdGVkLnR4dDoKKwogMjAxMC0wMS0wNSAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFj
aWVqIFN0YWNob3dpYWsuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxP
cHRpb25FbGVtZW50X3NlbGVjdGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQtZXhwZWN0ZWQudHh0CmluZGV4IDcwOTdjZmUu
Ljk4YjkwODcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvSFRNTE9wdGlvbkVs
ZW1lbnRfc2VsZWN0ZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
SFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNiBAQAog
VGhlIHRlc3QgYmVsb3cgcXVlcmllcyB0aGUgc2VsZWN0ZWQgcHJvcGVydHkgb2YgdGhlIG9wdGlv
bi4gSW4gYm90aCBjYXNlcyBpdCBzaG91bGQgYmUgc2VsZWN0ZWQsIGp1c3QgYXMgdGhlIHJlc3Vs
dCBpcyB3aGVuIHRoZSBzZWxlY3QgaXMgdmlzaWJsZS4gQnVnIDE1MDg4CiAKIHRydWUKKzAKIHRy
dWUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVu
dF9zZWxlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVu
dF9zZWxlY3RlZC5odG1sCmluZGV4IDE4MWJiNTkuLjFjMmQ1ZjggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkLmh0bWwKQEAg
LTEwLDcgKzEwLDcgQEAKICAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2NvbnNvbGUnKTsKICAgICAgICAgICAgIHZhciB0aGVPcHRpb24gPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgndGhlT3B0aW9uJyk7CiAgICAgICAgICAgICBjb25zb2xlLmlubmVy
SFRNTCArPSB0aGVPcHRpb24uc2VsZWN0ZWQgKyAiPGJyPiI7Ci0gICAgICAgICAgICB0aGVPcHRp
b24ucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4OworICAgICAgICAgICAgY29uc29sZS5pbm5lckhU
TUwgKz0gdGhlT3B0aW9uLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCArICI8YnI+IjsKICAgICAg
ICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MICs9IHRoZU9wdGlvbi5zZWxlY3RlZCArICI8YnI+IjsK
ICAgICAgICAgfQogICAgICAgICA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQyLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xMTcyYjdhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVudF9zZWxlY3Rl
ZDItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHRo
ZSBzZWxlY3RlZCBwcm9wZXJ0eSBvZiBhbiBvcHRpb24gaXMgaW5pdGlhbGl6ZWQgY29ycmVjdGx5
LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI2NDEKKworQmVmb3Jl
IHF1ZXJ5aW5nIHNlbGVjdGVkSW5kZXgsIFt0aGVPcHRpb25dLnNlbGVjdGVkID0gdHJ1ZQorCitb
dGhlU2VsZWN0XS5zZWxlY3RlZEluZGV4ID0gMAorCitBZnRlciBxdWVyeWluZyBzZWxlY3RlZElu
ZGV4LCBbdGhlT3B0aW9uXS5zZWxlY3RlZCA9IHRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQyLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjg3NmU1MWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMi5odG1sCkBAIC0w
LDAgKzEsMjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgIDxib2R5PgorICAgIDxwPlRo
aXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgc2VsZWN0ZWQgcHJvcGVydHkgb2YgYW4gb3B0aW9uIGlz
IGluaXRpYWxpemVkIGNvcnJlY3RseS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMyNjQxPC9wPgorICAgIDxwPkJlZm9yZSBxdWVyeWluZyBzZWxlY3RlZEluZGV4LCBb
dGhlT3B0aW9uXS5zZWxlY3RlZCA9IDxzcGFuIGlkPSJsb2dPbmUiPjwvc3Bhbj48L3A+CisgICAg
PHA+W3RoZVNlbGVjdF0uc2VsZWN0ZWRJbmRleCA9IDxzcGFuIGlkPSJsb2dUd28iPjwvc3Bhbj48
L3A+CisgICAgPHA+QWZ0ZXIgcXVlcnlpbmcgc2VsZWN0ZWRJbmRleCwgW3RoZU9wdGlvbl0uc2Vs
ZWN0ZWQgPSA8c3BhbiBpZD0ibG9nVGhyZWUiPjwvc3Bhbj48L3A+CisgICAgPHNlbGVjdCBpZD0i
dGhlU2VsZWN0IiBzdHlsZT0iZGlzcGxheTpub25lIj4KKyAgICAgIDxvcHRpb24gaWQ9InRoZU9w
dGlvbiI+bGFsYWxhPC9vcHRpb24+CisgICAgPC9zZWxlY3Q+CisgICAgPHNjcmlwdD4KKyAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgIHZhciBvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3RoZU9wdGlvbicpOworICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZ09uZScp
LnRleHRDb250ZW50ID0gby5zZWxlY3RlZDsKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdsb2dUd28nKS50ZXh0Q29udGVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aGVTZWxl
Y3QnKS5zZWxlY3RlZEluZGV4OworICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZ1Ro
cmVlJykudGV4dENvbnRlbnQgPSBvLnNlbGVjdGVkOworICAgIDwvc2NyaXB0PgorIDwvYm9keT4K
KzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0aW9u
RWxlbWVudF9zZWxlY3RlZDMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9I
VE1MT3B0aW9uRWxlbWVudF9zZWxlY3RlZDMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmI4ZTM4NTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw4IEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhlIHNlbGVjdGVkIHByb3BlcnR5
IG9mIGFuIG9wdGlvbiBpcyBpbml0aWFsaXplZCBjb3JyZWN0bHkgZXZlbiBwcmlvciB0byB0aGUg
PC9zZWxlY3Q+IGJlaW5nIHBhcnNlZC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMyNjQxCisKK0JlZm9yZSBxdWVyeWluZyBzZWxlY3RlZEluZGV4LCBbdGhlT3B0aW9u
XS5zZWxlY3RlZCA9IHRydWUKKworW3RoZVNlbGVjdF0uc2VsZWN0ZWRJbmRleCA9IDAKKworQWZ0
ZXIgcXVlcnlpbmcgc2VsZWN0ZWRJbmRleCwgW3RoZU9wdGlvbl0uc2VsZWN0ZWQgPSB0cnVlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVj
dGVkMy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVudF9zZWxl
Y3RlZDMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yNTIwYWJlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVu
dF9zZWxlY3RlZDMuaHRtbApAQCAtMCwwICsxLDIxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICA8Ym9keT4KKyAgICA8cD5UaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhlIHNlbGVjdGVkIHBy
b3BlcnR5IG9mIGFuIG9wdGlvbiBpcyBpbml0aWFsaXplZCBjb3JyZWN0bHkgZXZlbiBwcmlvciB0
byB0aGUgJmx0Oy9zZWxlY3QmZ3Q7IGJlaW5nIHBhcnNlZC4gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTMyNjQxPC9wPgorICAgIDxwPkJlZm9yZSBxdWVyeWluZyBzZWxl
Y3RlZEluZGV4LCBbdGhlT3B0aW9uXS5zZWxlY3RlZCA9IDxzcGFuIGlkPSJsb2dPbmUiPjwvc3Bh
bj48L3A+CisgICAgPHA+W3RoZVNlbGVjdF0uc2VsZWN0ZWRJbmRleCA9IDxzcGFuIGlkPSJsb2dU
d28iPjwvc3Bhbj48L3A+CisgICAgPHA+QWZ0ZXIgcXVlcnlpbmcgc2VsZWN0ZWRJbmRleCwgW3Ro
ZU9wdGlvbl0uc2VsZWN0ZWQgPSA8c3BhbiBpZD0ibG9nVGhyZWUiPjwvc3Bhbj48L3A+CisgICAg
PHNlbGVjdCBpZD0idGhlU2VsZWN0IiBzdHlsZT0iZGlzcGxheTpub25lIj4KKyAgICAgIDxvcHRp
b24gaWQ9InRoZU9wdGlvbiI+bGFsYWxhPC9vcHRpb24+CisgICAgPHNjcmlwdD4KKyAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICAgIHZhciBvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3RoZU9wdGlvbicpOworICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZ09uZScpLnRl
eHRDb250ZW50ID0gby5zZWxlY3RlZDsKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCds
b2dUd28nKS50ZXh0Q29udGVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aGVTZWxlY3Qn
KS5zZWxlY3RlZEluZGV4OworICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZ1RocmVl
JykudGV4dENvbnRlbnQgPSBvLnNlbGVjdGVkOworICAgIDwvc2NyaXB0PgorICAgIDwvc2VsZWN0
PgorIDwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9hZGQtcmVtb3ZlLW9wdGlvbi1tb2RpZmljYXRpb24tZXZlbnQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9hZGQtcmVtb3ZlLW9wdGlvbi1tb2RpZmljYXRpb24tZXZlbnQt
ZXhwZWN0ZWQudHh0CmluZGV4IDgxOGM0N2MuLjVlMWQ3NjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvYWRkLXJlbW92ZS1vcHRpb24tbW9kaWZpY2F0aW9uLWV2ZW50LWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2FkZC1yZW1vdmUtb3B0aW9uLW1v
ZGlmaWNhdGlvbi1ldmVudC1leHBlY3RlZC50eHQKQEAgLTIsOSArMiw2IEBAIFRlc3QgdGhhdCBT
RUxFQ1QgaXMgaW4gY29ycmVjdCBzdGF0ZSB3aGVuIGhhbmRsaW5nIGEgRE9NIG1vZGlmaWNhdGlv
biBldmVudCBmb3IKIAogICAKIAotRmFpbGVkCi0gICAgIEV4cGVjdGVkOiB0cnVlCi0gICAgIEFj
dHVhbDogZmFsc2UKLQorUGFzc2VkCiBQYXNzZWQKIFBhc3NlZApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxZmZmNTljLi43M2FlZTEwIDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM2IEBACisyMDEwLTAxLTA3ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RW5zdXJlcyB0aGF0IHRoZSAnc2VsZWN0ZWQnIGF0dHJpYnV0ZSBvZiBhbiA8b3B0aW9uPiBpcyBj
b3JyZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
MjY0MQorCisgICAgICAgIEFkZHMgYSBjaGVjayBpbiBPcHRpb25FbGVtZW50OjpzZWxlY3RlZCgp
IHRoYXQgY2hlY2tzIGlmIGxpc3QgaXRlbXMgbmVlZCB0byBiZSByZWNhbGN1bGF0ZWQgYW5kIGRv
ZXMgc28gaWYgbmVlZGVkLAorICAgICAgICBzbyB0aGUgYXR0cmlidXRlIGlzIHVwIHRvIGRhdGUg
bW9yZSBvZnRlbi4gIEFsc28gZ2V0cyByaWQgb2YgbW9zdCBvZiB0aGUgcmVjYWxjU3R5bGUoKSBz
aWRlIGVmZmVjdHMuCisKKyAgICAgICAgT3VyIGJlaGF2aW9yIG5vdyBtYXRjaGVzIEZpcmVmb3gg
My41IGFuZCBJRTggYWZ0ZXIgdGhlIDwvc2VsZWN0PiBpcyBwYXJzZWQuCisKKyAgICAgICAgVGVz
dHM6IGZhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQyLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQzLmh0bWwKKworICAg
ICAgICAqIGRvbS9TZWxlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdEVs
ZW1lbnQ6OnNldE9wdGlvbnNDaGFuZ2VkT25SZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpT
ZWxlY3RFbGVtZW50OjpzZXRSZWNhbGNMaXN0SXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdEVs
ZW1lbnQ6OnJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dEVsZW1lbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdEVsZW1lbnQ6OnR5cGVB
aGVhZEZpbmQpOgorICAgICAgICAqIGRvbS9TZWxlY3RFbGVtZW50Lmg6CisgICAgICAgICogaHRt
bC9IVE1MT3B0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxl
bWVudDo6c2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6Omlu
c2VydGVkSW50b1RyZWUpOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY1N0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpyZWNhbGNMaXN0SXRlbXNJZk5lZWRlZCk6
CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOgorICAgICAgICAqIHdtbC9XTUxT
ZWxlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldNTFNlbGVjdEVsZW1lbnQ6OnJl
Y2FsY1N0eWxlKToKKwogMjAxMC0wMS0wNSAgRGFyaW4gRmlzaGVyICA8ZGFyaW5AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2RvbS9TZWxlY3RFbGVtZW50LmNwcCBiL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3Bw
CmluZGV4IDBlODRhMDkuLjQ1OGY0Y2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1NlbGVjdEVs
ZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwCkBAIC0yMjIsMjgg
KzIyMiwyMSBAQCB2b2lkIFNlbGVjdEVsZW1lbnQ6OnNjcm9sbFRvU2VsZWN0aW9uKFNlbGVjdEVs
ZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50KiBlbGVtZW50KQogICAgICAgICB0b1JlbmRlckxpc3RC
b3gocmVuZGVyZXIpLT5zZWxlY3Rpb25DaGFuZ2VkKCk7CiB9CiAKLXZvaWQgU2VsZWN0RWxlbWVu
dDo6cmVjYWxjU3R5bGUoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQp
Cit2b2lkIFNlbGVjdEVsZW1lbnQ6OnNldE9wdGlvbnNDaGFuZ2VkT25SZW5kZXJlcihTZWxlY3RF
bGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKLSAgICBpZiAoZWxlbWVudC0+Y2hpbGRO
ZWVkc1N0eWxlUmVjYWxjKCkgJiYgcmVuZGVyZXIpIHsKKyAgICBpZiAoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgaWYgKGRhdGEudXNlc01l
bnVMaXN0KCkpCiAgICAgICAgICAgICB0b1JlbmRlck1lbnVMaXN0KHJlbmRlcmVyKS0+c2V0T3B0
aW9uc0NoYW5nZWQodHJ1ZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRvUmVuZGVyTGlz
dEJveChyZW5kZXJlciktPnNldE9wdGlvbnNDaGFuZ2VkKHRydWUpOwotICAgIH0gZWxzZSBpZiAo
ZGF0YS5zaG91bGRSZWNhbGNMaXN0SXRlbXMoKSkKLSAgICAgICAgcmVjYWxjTGlzdEl0ZW1zKGRh
dGEsIGVsZW1lbnQpOworICAgIH0KIH0KIAogdm9pZCBTZWxlY3RFbGVtZW50OjpzZXRSZWNhbGNM
aXN0SXRlbXMoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAg
ICAgZGF0YS5zZXRTaG91bGRSZWNhbGNMaXN0SXRlbXModHJ1ZSk7CiAgICAgZGF0YS5zZXRBY3Rp
dmVTZWxlY3Rpb25BbmNob3JJbmRleCgtMSk7IC8vIE1hbnVhbCBzZWxlY3Rpb24gYW5jaG9yIGlz
IHJlc2V0IHdoZW4gbWFuaXB1bGF0aW5nIHRoZSBzZWxlY3QgcHJvZ3JhbW1hdGljYWxseS4KLSAg
ICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCkpIHsKLSAg
ICAgICAgaWYgKGRhdGEudXNlc01lbnVMaXN0KCkpCi0gICAgICAgICAgICB0b1JlbmRlck1lbnVM
aXN0KHJlbmRlcmVyKS0+c2V0T3B0aW9uc0NoYW5nZWQodHJ1ZSk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHRvUmVuZGVyTGlzdEJveChyZW5kZXJlciktPnNldE9wdGlvbnNDaGFuZ2VkKHRy
dWUpOwotICAgIH0KKyAgICBzZXRPcHRpb25zQ2hhbmdlZE9uUmVuZGVyZXIoZGF0YSwgZWxlbWVu
dCk7CiAgICAgZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQogCkBAIC0yNTIsNiAr
MjQ1LDggQEAgdm9pZCBTZWxlY3RFbGVtZW50OjpyZWNhbGNMaXN0SXRlbXMoU2VsZWN0RWxlbWVu
dERhdGEmIGRhdGEsIGNvbnN0IEVsZW1lbnQqIGVsZW0KICAgICBWZWN0b3I8RWxlbWVudCo+JiBs
aXN0SXRlbXMgPSBkYXRhLnJhd0xpc3RJdGVtcygpOwogICAgIGxpc3RJdGVtcy5jbGVhcigpOwog
CisgICAgZGF0YS5zZXRTaG91bGRSZWNhbGNMaXN0SXRlbXMoZmFsc2UpOworCiAgICAgT3B0aW9u
RWxlbWVudCogZm91bmRTZWxlY3RlZCA9IDA7CiAgICAgZm9yIChOb2RlKiBjdXJyZW50Tm9kZSA9
IGVsZW1lbnQtPmZpcnN0Q2hpbGQoKTsgY3VycmVudE5vZGU7KSB7CiAgICAgICAgIGlmICghY3Vy
cmVudE5vZGUtPmlzRWxlbWVudE5vZGUoKSkgewpAQCAtMjk3LDggKzI5Miw2IEBAIHZvaWQgU2Vs
ZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0ZW1zKFNlbGVjdEVsZW1lbnREYXRhJiBkYXRhLCBjb25z
dCBFbGVtZW50KiBlbGVtCiAgICAgICAgIC8vIDxzZWxlY3Q+J3Mgc3VidHJlZSBhdCB0aGlzIHBv
aW50LgogICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLT50cmF2ZXJzZU5leHRTaWJs
aW5nKGVsZW1lbnQpOwogICAgIH0KLQotICAgIGRhdGEuc2V0U2hvdWxkUmVjYWxjTGlzdEl0ZW1z
KGZhbHNlKTsKIH0KIAogaW50IFNlbGVjdEVsZW1lbnQ6OnNlbGVjdGVkSW5kZXgoY29uc3QgU2Vs
ZWN0RWxlbWVudERhdGEmIGRhdGEsIGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCkBAIC00NDcsNyAr
NDQwLDcgQEAgdm9pZCBTZWxlY3RFbGVtZW50OjpyZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZShTZWxl
Y3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWwKICAgICAgICAgICAgIG9wdGlvbkVsZW1l
bnQtPnNldFNlbGVjdGVkU3RhdGUoc3RhdGVbaV0gPT0gJ1gnKTsKICAgICB9CiAKLSAgICBlbGVt
ZW50LT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgc2V0T3B0aW9uc0NoYW5nZWRPblJlbmRl
cmVyKGRhdGEsIGVsZW1lbnQpOwogfQogCiB2b2lkIFNlbGVjdEVsZW1lbnQ6OnBhcnNlTXVsdGlw
bGVBdHRyaWJ1dGUoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQsIE1h
cHBlZEF0dHJpYnV0ZSogYXR0cmlidXRlKQpAQCAtNTIxLDcgKzUxNCw3IEBAIHZvaWQgU2VsZWN0
RWxlbWVudDo6cmVzZXQoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQp
CiAgICAgaWYgKCFzZWxlY3RlZE9wdGlvbiAmJiBmaXJzdE9wdGlvbiAmJiBkYXRhLnVzZXNNZW51
TGlzdCgpKQogICAgICAgICBmaXJzdE9wdGlvbi0+c2V0U2VsZWN0ZWRTdGF0ZSh0cnVlKTsKIAot
ICAgIGVsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICBzZXRPcHRpb25zQ2hhbmdl
ZE9uUmVuZGVyZXIoZGF0YSwgZWxlbWVudCk7CiB9CiAgICAgCiAjaWYgIUFSUk9XX0tFWVNfUE9Q
X01FTlUKQEAgLTg5NSw3ICs4ODgsOCBAQCB2b2lkIFNlbGVjdEVsZW1lbnQ6OnR5cGVBaGVhZEZp
bmQoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQsIEtleQogICAgICAg
ICAgICAgc2V0U2VsZWN0ZWRJbmRleChkYXRhLCBlbGVtZW50LCBsaXN0VG9PcHRpb25JbmRleChk
YXRhLCBlbGVtZW50LCBpbmRleCkpOwogICAgICAgICAgICAgaWYgKCFkYXRhLnVzZXNNZW51TGlz
dCgpKQogICAgICAgICAgICAgICAgIGxpc3RCb3hPbkNoYW5nZShkYXRhLCBlbGVtZW50KTsKLSAg
ICAgICAgICAgIGVsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKworICAgICAgICAgICAg
c2V0T3B0aW9uc0NoYW5nZWRPblJlbmRlcmVyKGRhdGEsIGVsZW1lbnQpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vU2VsZWN0
RWxlbWVudC5oIGIvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5oCmluZGV4IDRjYzc2YTAuLjY4
OTFjMjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuaAorKysgYi9XZWJD
b3JlL2RvbS9TZWxlY3RFbGVtZW50LmgKQEAgLTc1LDcgKzc1LDYgQEAgcHJvdGVjdGVkOgogICAg
IHN0YXRpYyB2b2lkIGxpc3RCb3hPbkNoYW5nZShTZWxlY3RFbGVtZW50RGF0YSYsIEVsZW1lbnQq
KTsKICAgICBzdGF0aWMgdm9pZCBtZW51TGlzdE9uQ2hhbmdlKFNlbGVjdEVsZW1lbnREYXRhJiwg
RWxlbWVudCopOwogICAgIHN0YXRpYyB2b2lkIHNjcm9sbFRvU2VsZWN0aW9uKFNlbGVjdEVsZW1l
bnREYXRhJiwgRWxlbWVudCopOwotICAgIHN0YXRpYyB2b2lkIHJlY2FsY1N0eWxlKFNlbGVjdEVs
ZW1lbnREYXRhJiwgRWxlbWVudCopOwogICAgIHN0YXRpYyB2b2lkIHNldFJlY2FsY0xpc3RJdGVt
cyhTZWxlY3RFbGVtZW50RGF0YSYsIEVsZW1lbnQqKTsKICAgICBzdGF0aWMgdm9pZCByZWNhbGNM
aXN0SXRlbXMoU2VsZWN0RWxlbWVudERhdGEmLCBjb25zdCBFbGVtZW50KiwgYm9vbCB1cGRhdGVT
ZWxlY3RlZFN0YXRlcyA9IHRydWUpOwogICAgIHN0YXRpYyBpbnQgc2VsZWN0ZWRJbmRleChjb25z
dCBTZWxlY3RFbGVtZW50RGF0YSYsIGNvbnN0IEVsZW1lbnQqKTsKQEAgLTEwMCw2ICs5OSw3IEBA
IHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgbWVudUxpc3REZWZhdWx0RXZl
bnRIYW5kbGVyKFNlbGVjdEVsZW1lbnREYXRhJiwgRWxlbWVudCosIEV2ZW50KiwgSFRNTEZvcm1F
bGVtZW50Kik7CiAgICAgc3RhdGljIHZvaWQgbGlzdEJveERlZmF1bHRFdmVudEhhbmRsZXIoU2Vs
ZWN0RWxlbWVudERhdGEmLCBFbGVtZW50KiwgRXZlbnQqLCBIVE1MRm9ybUVsZW1lbnQqKTsKKyAg
ICBzdGF0aWMgdm9pZCBzZXRPcHRpb25zQ2hhbmdlZE9uUmVuZGVyZXIoU2VsZWN0RWxlbWVudERh
dGEmLCBFbGVtZW50Kik7CiB9OwogCiAvLyBIVE1ML1dNTFNlbGVjdEVsZW1lbnQgaG9sZCB0aGlz
IHN0cnVjdCBhcyBtZW1iZXIgdmFyaWFibGUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1M
T3B0aW9uRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCmlu
ZGV4IDMxNmIxOTIuLjMyNjMzOTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9u
RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcApAQCAt
MTM3LDYgKzEzNyw4IEBAIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OnNldFZhbHVlKGNvbnN0IFN0
cmluZyYgdmFsdWUpCiAKIGJvb2wgSFRNTE9wdGlvbkVsZW1lbnQ6OnNlbGVjdGVkKCkgY29uc3QK
IHsKKyAgICBpZiAoSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCA9IG93bmVyU2VsZWN0RWxlbWVu
dCgpKQorICAgICAgICBzZWxlY3QtPnJlY2FsY0xpc3RJdGVtc0lmTmVlZGVkKCk7CiAgICAgcmV0
dXJuIG1fZGF0YS5zZWxlY3RlZCgpOwogfQogCkBAIC0yMjAsNyArMjIyLDggQEAgdm9pZCBIVE1M
T3B0aW9uRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZShib29sIGRlZXApCiB7CiAgICAgaWYgKEhU
TUxTZWxlY3RFbGVtZW50KiBzZWxlY3QgPSBvd25lclNlbGVjdEVsZW1lbnQoKSkgewogICAgICAg
ICBzZWxlY3QtPnNldFJlY2FsY0xpc3RJdGVtcygpOwotICAgICAgICBpZiAoc2VsZWN0ZWQoKSkK
KyAgICAgICAgLy8gQXZvaWQgb3VyIHNlbGVjdGVkKCkgZ2V0dGVyIHNpbmNlIGl0IHdpbGwgcmVj
YWxjdWxhdGUgbGlzdCBpdGVtcyBpbmNvcnJlY3RseSBmb3IgdXMuCisgICAgICAgIGlmIChtX2Rh
dGEuc2VsZWN0ZWQoKSkKICAgICAgICAgICAgIHNlbGVjdC0+c2V0U2VsZWN0ZWRJbmRleChpbmRl
eCgpLCBmYWxzZSk7CiAgICAgICAgIHNlbGVjdC0+c2Nyb2xsVG9TZWxlY3Rpb24oKTsKICAgICB9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGIvV2ViQ29y
ZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAppbmRleCAyNDA5ZjMxLi41ZjVjODU1IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUv
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKQEAgLTQsNiArNCw3IEBACiAgKiAgICAgICAgICAg
KEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9w
LmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01OSw3ICs2MCw2IEBAIGJvb2wgSFRNTFNlbGVj
dEVsZW1lbnQ6OmNoZWNrRFREKGNvbnN0IE5vZGUqIG5ld0NoaWxkKQogCiB2b2lkIEhUTUxTZWxl
Y3RFbGVtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2UpCiB7Ci0gICAgU2VsZWN0
RWxlbWVudDo6cmVjYWxjU3R5bGUobV9kYXRhLCB0aGlzKTsKICAgICBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50V2l0aFN0YXRlOjpyZWNhbGNTdHlsZShjaGFuZ2UpOwogfQogCkBAIC0yNjEsNiArMjYx
LDEyIEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVtcyhib29sIHVwZGF0
ZVNlbGVjdGVkU3RhdGVzKSBjb25zdAogICAgIFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVt
cyhjb25zdF9jYXN0PFNlbGVjdEVsZW1lbnREYXRhJj4obV9kYXRhKSwgdGhpcywgdXBkYXRlU2Vs
ZWN0ZWRTdGF0ZXMpOwogfQogCit2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpyZWNhbGNMaXN0SXRl
bXNJZk5lZWRlZCgpCit7CisgICAgaWYgKG1fZGF0YS5zaG91bGRSZWNhbGNMaXN0SXRlbXMoKSkK
KyAgICAgICAgcmVjYWxjTGlzdEl0ZW1zKCk7Cit9CisKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdl
LCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKICAgICBzZXRSZWNh
bGNMaXN0SXRlbXMoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVu
dC5oIGIvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKaW5kZXggOGY1NzVkMi4uZDc3
MmU0ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKKysrIGIv
V2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKQEAgLTMsNiArMyw3IEBACiAgKiAgICAg
ICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAg
ICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTU4LDYgKzU5LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBm
YWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQg
Y2hpbGRDb3VudERlbHRhID0gMCk7CiAKICAgICB2b2lkIHNldFJlY2FsY0xpc3RJdGVtcygpOwor
ICAgIHZvaWQgcmVjYWxjTGlzdEl0ZW1zSWZOZWVkZWQoKTsKIAogICAgIHZpcnR1YWwgY29uc3Qg
VmVjdG9yPEVsZW1lbnQqPiYgbGlzdEl0ZW1zKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmxpc3RJ
dGVtcyh0aGlzKTsgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dtbC9XTUxTZWxlY3RFbGVtZW50
LmNwcCBiL1dlYkNvcmUvd21sL1dNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDAzY2EwNWEuLmU2
MDQxZjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd21sL1dNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBi
L1dlYkNvcmUvd21sL1dNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC04Myw3ICs4Myw2IEBAIHZvaWQg
V01MU2VsZWN0RWxlbWVudDo6c2VsZWN0QWxsKCkKIAogdm9pZCBXTUxTZWxlY3RFbGVtZW50Ojpy
ZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2UpCiB7Ci0gICAgU2VsZWN0RWxlbWVudDo6cmVj
YWxjU3R5bGUobV9kYXRhLCB0aGlzKTsKICAgICBXTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlY2Fs
Y1N0eWxlKGNoYW5nZSk7CiB9CiAK
</data>
<flag name="commit-queue"
          id="28327"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46156</attachid>
            <date>2010-01-08 13:45:43 -0800</date>
            <delta_ts>2010-01-14 18:41:03 -0800</delta_ts>
            <desc>Valid (this time!) patch</desc>
            <filename>b_32641_2.diff</filename>
            <type>text/plain</type>
            <size>15958</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2RvbS9TZWxlY3RFbGVtZW50LmgJKHJldmlzaW9uIDUyODY4KQorKysgV2ViQ29yZS9kb20vU2Vs
ZWN0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw2IEBACiAgICAgc3RhdGlj
IHZvaWQgbGlzdEJveE9uQ2hhbmdlKFNlbGVjdEVsZW1lbnREYXRhJiwgRWxlbWVudCopOwogICAg
IHN0YXRpYyB2b2lkIG1lbnVMaXN0T25DaGFuZ2UoU2VsZWN0RWxlbWVudERhdGEmLCBFbGVtZW50
Kik7CiAgICAgc3RhdGljIHZvaWQgc2Nyb2xsVG9TZWxlY3Rpb24oU2VsZWN0RWxlbWVudERhdGEm
LCBFbGVtZW50Kik7Ci0gICAgc3RhdGljIHZvaWQgcmVjYWxjU3R5bGUoU2VsZWN0RWxlbWVudERh
dGEmLCBFbGVtZW50Kik7CiAgICAgc3RhdGljIHZvaWQgc2V0UmVjYWxjTGlzdEl0ZW1zKFNlbGVj
dEVsZW1lbnREYXRhJiwgRWxlbWVudCopOwogICAgIHN0YXRpYyB2b2lkIHJlY2FsY0xpc3RJdGVt
cyhTZWxlY3RFbGVtZW50RGF0YSYsIGNvbnN0IEVsZW1lbnQqLCBib29sIHVwZGF0ZVNlbGVjdGVk
U3RhdGVzID0gdHJ1ZSk7CiAgICAgc3RhdGljIGludCBzZWxlY3RlZEluZGV4KGNvbnN0IFNlbGVj
dEVsZW1lbnREYXRhJiwgY29uc3QgRWxlbWVudCopOwpAQCAtMTAwLDYgKzk5LDcgQEAKIHByaXZh
dGU6CiAgICAgc3RhdGljIHZvaWQgbWVudUxpc3REZWZhdWx0RXZlbnRIYW5kbGVyKFNlbGVjdEVs
ZW1lbnREYXRhJiwgRWxlbWVudCosIEV2ZW50KiwgSFRNTEZvcm1FbGVtZW50Kik7CiAgICAgc3Rh
dGljIHZvaWQgbGlzdEJveERlZmF1bHRFdmVudEhhbmRsZXIoU2VsZWN0RWxlbWVudERhdGEmLCBF
bGVtZW50KiwgRXZlbnQqLCBIVE1MRm9ybUVsZW1lbnQqKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRP
cHRpb25zQ2hhbmdlZE9uUmVuZGVyZXIoU2VsZWN0RWxlbWVudERhdGEmLCBFbGVtZW50Kik7CiB9
OwogCiAvLyBIVE1ML1dNTFNlbGVjdEVsZW1lbnQgaG9sZCB0aGlzIHN0cnVjdCBhcyBtZW1iZXIg
dmFyaWFibGUKSW5kZXg6IFdlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiA1Mjg2OCkKKysrIFdl
YkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjIsMjggKzIy
MiwyMSBAQAogICAgICAgICB0b1JlbmRlckxpc3RCb3gocmVuZGVyZXIpLT5zZWxlY3Rpb25DaGFu
Z2VkKCk7CiB9CiAKLXZvaWQgU2VsZWN0RWxlbWVudDo6cmVjYWxjU3R5bGUoU2VsZWN0RWxlbWVu
dERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQpCit2b2lkIFNlbGVjdEVsZW1lbnQ6OnNldE9w
dGlvbnNDaGFuZ2VkT25SZW5kZXJlcihTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCog
ZWxlbWVudCkKIHsKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVy
ZXIoKTsKLSAgICBpZiAoZWxlbWVudC0+Y2hpbGROZWVkc1N0eWxlUmVjYWxjKCkgJiYgcmVuZGVy
ZXIpIHsKKyAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVy
KCkpIHsKICAgICAgICAgaWYgKGRhdGEudXNlc01lbnVMaXN0KCkpCiAgICAgICAgICAgICB0b1Jl
bmRlck1lbnVMaXN0KHJlbmRlcmVyKS0+c2V0T3B0aW9uc0NoYW5nZWQodHJ1ZSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHRvUmVuZGVyTGlzdEJveChyZW5kZXJlciktPnNldE9wdGlvbnND
aGFuZ2VkKHRydWUpOwotICAgIH0gZWxzZSBpZiAoZGF0YS5zaG91bGRSZWNhbGNMaXN0SXRlbXMo
KSkKLSAgICAgICAgcmVjYWxjTGlzdEl0ZW1zKGRhdGEsIGVsZW1lbnQpOworICAgIH0KIH0KIAog
dm9pZCBTZWxlY3RFbGVtZW50OjpzZXRSZWNhbGNMaXN0SXRlbXMoU2VsZWN0RWxlbWVudERhdGEm
IGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgZGF0YS5zZXRTaG91bGRSZWNhbGNMaXN0
SXRlbXModHJ1ZSk7CiAgICAgZGF0YS5zZXRBY3RpdmVTZWxlY3Rpb25BbmNob3JJbmRleCgtMSk7
IC8vIE1hbnVhbCBzZWxlY3Rpb24gYW5jaG9yIGlzIHJlc2V0IHdoZW4gbWFuaXB1bGF0aW5nIHRo
ZSBzZWxlY3QgcHJvZ3JhbW1hdGljYWxseS4KLSAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IGVsZW1lbnQtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKGRhdGEudXNlc01lbnVMaXN0
KCkpCi0gICAgICAgICAgICB0b1JlbmRlck1lbnVMaXN0KHJlbmRlcmVyKS0+c2V0T3B0aW9uc0No
YW5nZWQodHJ1ZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRvUmVuZGVyTGlzdEJveChy
ZW5kZXJlciktPnNldE9wdGlvbnNDaGFuZ2VkKHRydWUpOwotICAgIH0KKyAgICBzZXRPcHRpb25z
Q2hhbmdlZE9uUmVuZGVyZXIoZGF0YSwgZWxlbWVudCk7CiAgICAgZWxlbWVudC0+c2V0TmVlZHNT
dHlsZVJlY2FsYygpOwogfQogCkBAIC0yNTIsNiArMjQ1LDggQEAKICAgICBWZWN0b3I8RWxlbWVu
dCo+JiBsaXN0SXRlbXMgPSBkYXRhLnJhd0xpc3RJdGVtcygpOwogICAgIGxpc3RJdGVtcy5jbGVh
cigpOwogCisgICAgZGF0YS5zZXRTaG91bGRSZWNhbGNMaXN0SXRlbXMoZmFsc2UpOworCiAgICAg
T3B0aW9uRWxlbWVudCogZm91bmRTZWxlY3RlZCA9IDA7CiAgICAgZm9yIChOb2RlKiBjdXJyZW50
Tm9kZSA9IGVsZW1lbnQtPmZpcnN0Q2hpbGQoKTsgY3VycmVudE5vZGU7KSB7CiAgICAgICAgIGlm
ICghY3VycmVudE5vZGUtPmlzRWxlbWVudE5vZGUoKSkgewpAQCAtMjk3LDggKzI5Miw2IEBACiAg
ICAgICAgIC8vIDxzZWxlY3Q+J3Mgc3VidHJlZSBhdCB0aGlzIHBvaW50LgogICAgICAgICBjdXJy
ZW50Tm9kZSA9IGN1cnJlbnROb2RlLT50cmF2ZXJzZU5leHRTaWJsaW5nKGVsZW1lbnQpOwogICAg
IH0KLQotICAgIGRhdGEuc2V0U2hvdWxkUmVjYWxjTGlzdEl0ZW1zKGZhbHNlKTsKIH0KIAogaW50
IFNlbGVjdEVsZW1lbnQ6OnNlbGVjdGVkSW5kZXgoY29uc3QgU2VsZWN0RWxlbWVudERhdGEmIGRh
dGEsIGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCkBAIC00NDcsNyArNDQwLDcgQEAKICAgICAgICAg
ICAgIG9wdGlvbkVsZW1lbnQtPnNldFNlbGVjdGVkU3RhdGUoc3RhdGVbaV0gPT0gJ1gnKTsKICAg
ICB9CiAKLSAgICBlbGVtZW50LT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgc2V0T3B0aW9u
c0NoYW5nZWRPblJlbmRlcmVyKGRhdGEsIGVsZW1lbnQpOwogfQogCiB2b2lkIFNlbGVjdEVsZW1l
bnQ6OnBhcnNlTXVsdGlwbGVBdHRyaWJ1dGUoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIEVsZW1l
bnQqIGVsZW1lbnQsIE1hcHBlZEF0dHJpYnV0ZSogYXR0cmlidXRlKQpAQCAtNTIxLDcgKzUxNCw3
IEBACiAgICAgaWYgKCFzZWxlY3RlZE9wdGlvbiAmJiBmaXJzdE9wdGlvbiAmJiBkYXRhLnVzZXNN
ZW51TGlzdCgpKQogICAgICAgICBmaXJzdE9wdGlvbi0+c2V0U2VsZWN0ZWRTdGF0ZSh0cnVlKTsK
IAotICAgIGVsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICBzZXRPcHRpb25zQ2hh
bmdlZE9uUmVuZGVyZXIoZGF0YSwgZWxlbWVudCk7CiB9CiAgICAgCiAjaWYgIUFSUk9XX0tFWVNf
UE9QX01FTlUKQEAgLTg5NSw3ICs4ODgsOCBAQAogICAgICAgICAgICAgc2V0U2VsZWN0ZWRJbmRl
eChkYXRhLCBlbGVtZW50LCBsaXN0VG9PcHRpb25JbmRleChkYXRhLCBlbGVtZW50LCBpbmRleCkp
OwogICAgICAgICAgICAgaWYgKCFkYXRhLnVzZXNNZW51TGlzdCgpKQogICAgICAgICAgICAgICAg
IGxpc3RCb3hPbkNoYW5nZShkYXRhLCBlbGVtZW50KTsKLSAgICAgICAgICAgIGVsZW1lbnQtPnNl
dE5lZWRzU3R5bGVSZWNhbGMoKTsKKworICAgICAgICAgICAgc2V0T3B0aW9uc0NoYW5nZWRPblJl
bmRlcmVyKGRhdGEsIGVsZW1lbnQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgfQpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDUzMDAzKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwzNiBAQAorMjAxMC0wMS0wOCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEVuc3VyZXMgdGhhdCB0aGUgJ3NlbGVjdGVkJyBhdHRyaWJ1dGUgb2YgYW4gPG9wdGlv
bj4gaXMgY29ycmVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzI2NDEKKworICAgICAgICBBZGRzIGEgY2hlY2sgaW4gT3B0aW9uRWxlbWVudDo6c2Vs
ZWN0ZWQoKSB0aGF0IGNoZWNrcyBpZiBsaXN0IGl0ZW1zIG5lZWQgdG8gYmUgcmVjYWxjdWxhdGVk
IGFuZCBkb2VzIHNvIGlmIG5lZWRlZCwKKyAgICAgICAgc28gdGhlIGF0dHJpYnV0ZSBpcyB1cCB0
byBkYXRlIG1vcmUgb2Z0ZW4uICBBbHNvIGdldHMgcmlkIG9mIG1vc3Qgb2YgdGhlIHJlY2FsY1N0
eWxlKCkgc2lkZSBlZmZlY3RzLgorCisgICAgICAgICBPdXIgYmVoYXZpb3Igbm93IG1hdGNoZXMg
RmlyZWZveCAzLjUgYW5kIElFOCBhZnRlciB0aGUgPC9zZWxlY3Q+IGlzIHBhcnNlZC4KKworICAg
ICAgICAgVGVzdHM6IGZhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQyLmh0bWwK
KyAgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMy5o
dG1sCisKKyAgICAgICAgKiBkb20vU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RFbGVtZW50OjpzZXRPcHRpb25zQ2hhbmdlZE9uUmVuZGVyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0RWxlbWVudDo6c2V0UmVjYWxjTGlzdEl0ZW1zKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVtcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3RFbGVtZW50OjpyZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTZWxlY3RFbGVtZW50OjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RFbGVt
ZW50Ojp0eXBlQWhlYWRGaW5kKToKKyAgICAgICAgKiBkb20vU2VsZWN0RWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE9wdGlvbkVsZW1lbnQ6OnNlbGVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25F
bGVtZW50OjppbnNlcnRlZEludG9UcmVlKToKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpyZWNhbGNTdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjTGlzdEl0ZW1z
SWZOZWVkZWQpOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaDoKKyAgICAgICAg
KiB3bWwvV01MU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXTUxTZWxlY3RF
bGVtZW50OjpyZWNhbGNTdHlsZSk6CisKIDIwMTAtMDEtMDggIENocmlzIEZsZWl6YWNoICA8Y2Zs
ZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBCZXRoIERha2luLgpJbmRl
eDogV2ViQ29yZS93bWwvV01MU2VsZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS93bWwvV01MU2VsZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDUyODY4KQorKysgV2ViQ29yZS93
bWwvV01MU2VsZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDYgQEAK
IAogdm9pZCBXTUxTZWxlY3RFbGVtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2Up
CiB7Ci0gICAgU2VsZWN0RWxlbWVudDo6cmVjYWxjU3R5bGUobV9kYXRhLCB0aGlzKTsKICAgICBX
TUxGb3JtQ29udHJvbEVsZW1lbnQ6OnJlY2FsY1N0eWxlKGNoYW5nZSk7CiB9CiAKSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAkocmV2aXNpb24gNTI4NjgpCisrKyBXZWJDb3JlL2h0
bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsNiArMTM3LDgg
QEAKIAogYm9vbCBIVE1MT3B0aW9uRWxlbWVudDo6c2VsZWN0ZWQoKSBjb25zdAogeworICAgIGlm
IChIVE1MU2VsZWN0RWxlbWVudCogc2VsZWN0ID0gb3duZXJTZWxlY3RFbGVtZW50KCkpCisgICAg
ICAgIHNlbGVjdC0+cmVjYWxjTGlzdEl0ZW1zSWZOZWVkZWQoKTsKICAgICByZXR1cm4gbV9kYXRh
LnNlbGVjdGVkKCk7CiB9CiAKQEAgLTIyMCw3ICsyMjIsOCBAQAogewogICAgIGlmIChIVE1MU2Vs
ZWN0RWxlbWVudCogc2VsZWN0ID0gb3duZXJTZWxlY3RFbGVtZW50KCkpIHsKICAgICAgICAgc2Vs
ZWN0LT5zZXRSZWNhbGNMaXN0SXRlbXMoKTsKLSAgICAgICAgaWYgKHNlbGVjdGVkKCkpCisgICAg
ICAgIC8vIEF2b2lkIG91ciBzZWxlY3RlZCgpIGdldHRlciBzaW5jZSBpdCB3aWxsIHJlY2FsY3Vs
YXRlIGxpc3QgaXRlbXMgaW5jb3JyZWN0bHkgZm9yIHVzLgorICAgICAgICBpZiAobV9kYXRhLnNl
bGVjdGVkKCkpCiAgICAgICAgICAgICBzZWxlY3QtPnNldFNlbGVjdGVkSW5kZXgoaW5kZXgoKSwg
ZmFsc2UpOwogICAgICAgICBzZWxlY3QtPnNjcm9sbFRvU2VsZWN0aW9uKCk7CiAgICAgfQpJbmRl
eDogV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgJKHJldmlzaW9uIDUyODY4KQorKysgV2ViQ29yZS9o
dG1sL0hUTUxTZWxlY3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMsNiArMyw3IEBACiAg
KiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAg
KiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTU4LDYgKzU5LDcgQEAKICAg
ICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFs
c2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNo
aWxkQ291bnREZWx0YSA9IDApOwogCiAgICAgdm9pZCBzZXRSZWNhbGNMaXN0SXRlbXMoKTsKKyAg
ICB2b2lkIHJlY2FsY0xpc3RJdGVtc0lmTmVlZGVkKCk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IFZl
Y3RvcjxFbGVtZW50Kj4mIGxpc3RJdGVtcygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5saXN0SXRl
bXModGhpcyk7IH0KIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCShyZXZpc2lv
biA1Mjg2OCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQsNiArNCw3IEBACiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVy
IChtdWVsbGVyQGtkZS5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChD
KSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC01OSw3ICs2MCw2IEBACiAKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY1N0
eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKIHsKLSAgICBTZWxlY3RFbGVtZW50OjpyZWNhbGNTdHls
ZShtX2RhdGEsIHRoaXMpOwogICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OnJl
Y2FsY1N0eWxlKGNoYW5nZSk7CiB9CiAKQEAgLTI2MSw2ICsyNjEsMTIgQEAKICAgICBTZWxlY3RF
bGVtZW50OjpyZWNhbGNMaXN0SXRlbXMoY29uc3RfY2FzdDxTZWxlY3RFbGVtZW50RGF0YSY+KG1f
ZGF0YSksIHRoaXMsIHVwZGF0ZVNlbGVjdGVkU3RhdGVzKTsKIH0KIAordm9pZCBIVE1MU2VsZWN0
RWxlbWVudDo6cmVjYWxjTGlzdEl0ZW1zSWZOZWVkZWQoKQoreworICAgIGlmIChtX2RhdGEuc2hv
dWxkUmVjYWxjTGlzdEl0ZW1zKCkpCisgICAgICAgIHJlY2FsY0xpc3RJdGVtcygpOworfQorCiB2
b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJz
ZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50
RGVsdGEpCiB7CiAgICAgc2V0UmVjYWxjTGlzdEl0ZW1zKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVudF9zZWxlY3RlZC5odG1sCShy
ZXZpc2lvbiA1Mjg2OCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1l
bnRfc2VsZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsNyArMTAsNyBAQAogICAgICAg
ICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpOwog
ICAgICAgICAgICAgdmFyIHRoZU9wdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aGVP
cHRpb24nKTsKICAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MICs9IHRoZU9wdGlvbi5zZWxl
Y3RlZCArICI8YnI+IjsKLSAgICAgICAgICAgIHRoZU9wdGlvbi5wYXJlbnROb2RlLnNlbGVjdGVk
SW5kZXg7CisgICAgICAgICAgICBjb25zb2xlLmlubmVySFRNTCArPSB0aGVPcHRpb24ucGFyZW50
Tm9kZS5zZWxlY3RlZEluZGV4ICsgIjxicj4iOwogICAgICAgICAgICAgY29uc29sZS5pbm5lckhU
TUwgKz0gdGhlT3B0aW9uLnNlbGVjdGVkICsgIjxicj4iOwogICAgICAgICB9CiAgICAgICAgIDwv
c2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVudF9z
ZWxlY3RlZDMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxP
cHRpb25FbGVtZW50X3NlbGVjdGVkMy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVudF9zZWxlY3RlZDMuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwyMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgPGJvZHk+CisgICAg
PHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHRoZSBzZWxlY3RlZCBwcm9wZXJ0eSBvZiBhbiBvcHRp
b24gaXMgaW5pdGlhbGl6ZWQgY29ycmVjdGx5IGV2ZW4gcHJpb3IgdG8gdGhlICZsdDsvc2VsZWN0
Jmd0OyBiZWluZyBwYXJzZWQuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMjY0MTwvcD4KKyAgICA8cD5CZWZvcmUgcXVlcnlpbmcgc2VsZWN0ZWRJbmRleCwgW3RoZU9w
dGlvbl0uc2VsZWN0ZWQgPSA8c3BhbiBpZD0ibG9nT25lIj48L3NwYW4+PC9wPgorICAgIDxwPlt0
aGVTZWxlY3RdLnNlbGVjdGVkSW5kZXggPSA8c3BhbiBpZD0ibG9nVHdvIj48L3NwYW4+PC9wPgor
ICAgIDxwPkFmdGVyIHF1ZXJ5aW5nIHNlbGVjdGVkSW5kZXgsIFt0aGVPcHRpb25dLnNlbGVjdGVk
ID0gPHNwYW4gaWQ9ImxvZ1RocmVlIj48L3NwYW4+PC9wPgorICAgIDxzZWxlY3QgaWQ9InRoZVNl
bGVjdCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+CisgICAgICA8b3B0aW9uIGlkPSJ0aGVPcHRpb24i
PmxhbGFsYTwvb3B0aW9uPgorICAgIDxzY3JpcHQ+CisgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgICB2YXIgbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aGVPcHRpb24nKTsKKyAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2dPbmUnKS50ZXh0Q29udGVudCA9IG8uc2Vs
ZWN0ZWQ7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nVHdvJykudGV4dENvbnRl
bnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGhlU2VsZWN0Jykuc2VsZWN0ZWRJbmRleDsK
KyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2dUaHJlZScpLnRleHRDb250ZW50ID0g
by5zZWxlY3RlZDsKKyAgICA8L3NjcmlwdD4KKyAgICA8L3NlbGVjdD4KKyA8L2JvZHk+Cis8L2h0
bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2Vs
ZWN0ZWQzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNyBAQAorVGhpcyB0ZXN0IGNoZWNrcyB0
aGF0IHRoZSBzZWxlY3RlZCBwcm9wZXJ0eSBvZiBhbiBvcHRpb24gaXMgaW5pdGlhbGl6ZWQgY29y
cmVjdGx5IGV2ZW4gcHJpb3IgdG8gdGhlIDwvc2VsZWN0PiBiZWluZyBwYXJzZWQuIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjY0MQorCitCZWZvcmUgcXVlcnlpbmcg
c2VsZWN0ZWRJbmRleCwgW3RoZU9wdGlvbl0uc2VsZWN0ZWQgPSB0cnVlCisKK1t0aGVTZWxlY3Rd
LnNlbGVjdGVkSW5kZXggPSAwCisKK0FmdGVyIHF1ZXJ5aW5nIHNlbGVjdGVkSW5kZXgsIFt0aGVP
cHRpb25dLnNlbGVjdGVkID0gdHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9hZGQt
cmVtb3ZlLW9wdGlvbi1tb2RpZmljYXRpb24tZXZlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvYWRkLXJlbW92ZS1vcHRpb24tbW9kaWZpY2F0aW9u
LWV2ZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTI4NjgpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2FkZC1yZW1vdmUtb3B0aW9uLW1vZGlmaWNhdGlvbi1ldmVudC1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTIsOSArMiw2IEBACiAKICAgCiAKLUZhaWxlZAotICAgICBFeHBl
Y3RlZDogdHJ1ZQotICAgICBBY3R1YWw6IGZhbHNlCi0KIFBhc3NlZAogUGFzc2VkCitQYXNzZWQK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvSFRNTE9w
dGlvbkVsZW1lbnRfc2VsZWN0ZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1Mjg2OCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogVGhlIHRlc3QgYmVsb3cgcXVlcmll
cyB0aGUgc2VsZWN0ZWQgcHJvcGVydHkgb2YgdGhlIG9wdGlvbi4gSW4gYm90aCBjYXNlcyBpdCBz
aG91bGQgYmUgc2VsZWN0ZWQsIGp1c3QgYXMgdGhlIHJlc3VsdCBpcyB3aGVuIHRoZSBzZWxlY3Qg
aXMgdmlzaWJsZS4gQnVnIDE1MDg4CiAKIHRydWUKKzAKIHRydWUKIApJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVudF9zZWxlY3RlZDItZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2Vs
ZWN0ZWQyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZm9y
bXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw3IEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhlIHNlbGVjdGVkIHByb3Bl
cnR5IG9mIGFuIG9wdGlvbiBpcyBpbml0aWFsaXplZCBjb3JyZWN0bHkuIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjY0MQorCitCZWZvcmUgcXVlcnlpbmcgc2VsZWN0
ZWRJbmRleCwgW3RoZU9wdGlvbl0uc2VsZWN0ZWQgPSB0cnVlCisKK1t0aGVTZWxlY3RdLnNlbGVj
dGVkSW5kZXggPSAwCisKK0FmdGVyIHF1ZXJ5aW5nIHNlbGVjdGVkSW5kZXgsIFt0aGVPcHRpb25d
LnNlbGVjdGVkID0gdHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0aW9u
RWxlbWVudF9zZWxlY3RlZDIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVudF9zZWxlY3RlZDIuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgPGJv
ZHk+CisgICAgPHA+VGhpcyB0ZXN0IGNoZWNrcyB0aGF0IHRoZSBzZWxlY3RlZCBwcm9wZXJ0eSBv
ZiBhbiBvcHRpb24gaXMgaW5pdGlhbGl6ZWQgY29ycmVjdGx5LiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI2NDE8L3A+CisgICAgPHA+QmVmb3JlIHF1ZXJ5aW5nIHNl
bGVjdGVkSW5kZXgsIFt0aGVPcHRpb25dLnNlbGVjdGVkID0gPHNwYW4gaWQ9ImxvZ09uZSI+PC9z
cGFuPjwvcD4KKyAgICA8cD5bdGhlU2VsZWN0XS5zZWxlY3RlZEluZGV4ID0gPHNwYW4gaWQ9Imxv
Z1R3byI+PC9zcGFuPjwvcD4KKyAgICA8cD5BZnRlciBxdWVyeWluZyBzZWxlY3RlZEluZGV4LCBb
dGhlT3B0aW9uXS5zZWxlY3RlZCA9IDxzcGFuIGlkPSJsb2dUaHJlZSI+PC9zcGFuPjwvcD4KKyAg
ICA8c2VsZWN0IGlkPSJ0aGVTZWxlY3QiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgorICAgICAgPG9w
dGlvbiBpZD0idGhlT3B0aW9uIj5sYWxhbGE8L29wdGlvbj4KKyAgICA8L3NlbGVjdD4KKyAgICA8
c2NyaXB0PgorICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgdmFyIG8gPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgndGhlT3B0aW9uJyk7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnbG9nT25lJykudGV4dENvbnRlbnQgPSBvLnNlbGVjdGVkOworICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2xvZ1R3bycpLnRleHRDb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3RoZVNlbGVjdCcpLnNlbGVjdGVkSW5kZXg7CisgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnbG9nVGhyZWUnKS50ZXh0Q29udGVudCA9IG8uc2VsZWN0ZWQ7CisgICAgPC9zY3Jp
cHQ+CisgPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MzAwMykKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEw
LTAxLTA4ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyB0ZXN0cyBmb3IgdGhl
ICdzZWxlY3RlZCcgYXR0cmlidXRlIG9mIDxvcHRpb24+cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI2NDEKKworICAgICAgICBIVE1MT3B0aW9uRWxl
bWVudF9zZWxlY3RlZDIgY2hlY2tzIHRoYXQgdGhlIHNlbGVjdGVkIGF0dHJpYnV0ZSBpcyB1cCB0
byBkYXRlIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSA8c2VsZWN0PgorICAgICAgICBwYXJzZWQuICBI
VE1MT3B0aW9uRWxlbWVudF9zZWxlY3RlZDMgZG9lcyB0aGUgc2FtZSwgYnV0IGNoZWNrcyBpbW1l
ZGlhdGVseSBwcmlvciB0byB0aGUgPC9zZWxlY3Q+LgorCisgICAgICAgIEFsc28gY2hhbmdlcyB0
aGUgZXhwZWN0YXRpb24gZm9yIGFkZC1yZW1vdmUtb3B0aW9uLW1vZGlmaWNhdGlvbi1ldmVudCB0
byByZWZsZWN0IHRoYXQgd2Ugbm93IHBhc3MuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL0hUTUxP
cHRpb25FbGVtZW50X3NlbGVjdGVkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2Zvcm1z
L0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkLmh0bWw6CisgICAgICAgICogZmFzdC9mb3Jtcy9I
VE1MT3B0aW9uRWxlbWVudF9zZWxlY3RlZDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0
ZWQzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvYWRkLXJlbW92ZS1vcHRpb24t
bW9kaWZpY2F0aW9uLWV2ZW50LWV4cGVjdGVkLnR4dDoKKwogMjAxMC0wMS0wOCAgQ2hyaXMgTWFy
cmluICA8Y21hcnJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4ZWQgbWVkaWEgdGVzdCBmYWls
dXJlcyBjYXVzZWQgYnkgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNTI5OTguCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46633</attachid>
            <date>2010-01-14 18:41:08 -0800</date>
            <delta_ts>2010-01-22 22:19:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32641-20100114184106.patch</filename>
            <type>text/plain</type>
            <size>16403</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxOWY3OGQ5Li5mMjRlMjNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDEt
MTQgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHRlc3RzIGZvciB0aGUgJ3Nl
bGVjdGVkJyBhdHRyaWJ1dGUgb2YgPG9wdGlvbj5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjY0MQorCisgICAgICAgIEhUTUxPcHRpb25FbGVtZW50
X3NlbGVjdGVkMiBjaGVja3MgdGhhdCB0aGUgc2VsZWN0ZWQgYXR0cmlidXRlIGlzIHVwIHRvIGRh
dGUgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIDxzZWxlY3Q+CisgICAgICAgIHBhcnNlZC4gIEhUTUxP
cHRpb25FbGVtZW50X3NlbGVjdGVkMyBkb2VzIHRoZSBzYW1lLCBidXQgY2hlY2tzIGltbWVkaWF0
ZWx5IHByaW9yIHRvIHRoZSA8L3NlbGVjdD4uCisKKyAgICAgICAgQWxzbyBjaGFuZ2VzIHRoZSBl
eHBlY3RhdGlvbiBmb3IgYWRkLXJlbW92ZS1vcHRpb24tbW9kaWZpY2F0aW9uLWV2ZW50IHRvIHJl
ZmxlY3QgdGhhdCB3ZSBub3cgcGFzcy4KKworICAgICAgICAqIGZhc3QvZm9ybXMvSFRNTE9wdGlv
bkVsZW1lbnRfc2VsZWN0ZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZm9ybXMvSFRN
TE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2Zvcm1zL0hUTUxP
cHRpb25FbGVtZW50X3NlbGVjdGVkMi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQyLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVudF9zZWxlY3RlZDMu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9hZGQtcmVtb3ZlLW9wdGlvbi1tb2Rp
ZmljYXRpb24tZXZlbnQtZXhwZWN0ZWQudHh0OgorCiAyMDEwLTAxLTE0ICBCcmlhbiBXZWluc3Rl
aW4gIDxid2VpbnN0ZWluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIg
SHVudC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1l
bnRfc2VsZWN0ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0
aW9uRWxlbWVudF9zZWxlY3RlZC1leHBlY3RlZC50eHQKaW5kZXggNzA5N2NmZS4uOThiOTA4NyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVudF9zZWxl
Y3RlZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9IVE1MT3B0aW9u
RWxlbWVudF9zZWxlY3RlZC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw2IEBACiBUaGUgdGVzdCBi
ZWxvdyBxdWVyaWVzIHRoZSBzZWxlY3RlZCBwcm9wZXJ0eSBvZiB0aGUgb3B0aW9uLiBJbiBib3Ro
IGNhc2VzIGl0IHNob3VsZCBiZSBzZWxlY3RlZCwganVzdCBhcyB0aGUgcmVzdWx0IGlzIHdoZW4g
dGhlIHNlbGVjdCBpcyB2aXNpYmxlLiBCdWcgMTUwODgKIAogdHJ1ZQorMAogdHJ1ZQogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVk
Lmh0bWwKaW5kZXggMTgxYmI1OS4uMWMyZDVmOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVudF9zZWxlY3RlZC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQuaHRtbApAQCAtMTAsNyArMTAs
NyBAQAogICAgICAgICAgICAgdmFyIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29uc29sZScpOwogICAgICAgICAgICAgdmFyIHRoZU9wdGlvbiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCd0aGVPcHRpb24nKTsKICAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MICs9IHRo
ZU9wdGlvbi5zZWxlY3RlZCArICI8YnI+IjsKLSAgICAgICAgICAgIHRoZU9wdGlvbi5wYXJlbnRO
b2RlLnNlbGVjdGVkSW5kZXg7CisgICAgICAgICAgICBjb25zb2xlLmlubmVySFRNTCArPSB0aGVP
cHRpb24ucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4ICsgIjxicj4iOwogICAgICAgICAgICAgY29u
c29sZS5pbm5lckhUTUwgKz0gdGhlT3B0aW9uLnNlbGVjdGVkICsgIjxicj4iOwogICAgICAgICB9
CiAgICAgICAgIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9I
VE1MT3B0aW9uRWxlbWVudF9zZWxlY3RlZDItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVudF9zZWxlY3RlZDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExNzJiN2EKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMi1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw3IEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgdGhlIHNlbGVjdGVk
IHByb3BlcnR5IG9mIGFuIG9wdGlvbiBpcyBpbml0aWFsaXplZCBjb3JyZWN0bHkuIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjY0MQorCitCZWZvcmUgcXVlcnlpbmcg
c2VsZWN0ZWRJbmRleCwgW3RoZU9wdGlvbl0uc2VsZWN0ZWQgPSB0cnVlCisKK1t0aGVTZWxlY3Rd
LnNlbGVjdGVkSW5kZXggPSAwCisKK0FmdGVyIHF1ZXJ5aW5nIHNlbGVjdGVkSW5kZXgsIFt0aGVP
cHRpb25dLnNlbGVjdGVkID0gdHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9IVE1MT3B0aW9uRWxlbWVudF9zZWxlY3RlZDIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uODc2ZTUxYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQyLmh0bWwKQEAgLTAsMCArMSwyMSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgPGJvZHk+CisgICAgPHA+VGhpcyB0ZXN0IGNo
ZWNrcyB0aGF0IHRoZSBzZWxlY3RlZCBwcm9wZXJ0eSBvZiBhbiBvcHRpb24gaXMgaW5pdGlhbGl6
ZWQgY29ycmVjdGx5LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI2
NDE8L3A+CisgICAgPHA+QmVmb3JlIHF1ZXJ5aW5nIHNlbGVjdGVkSW5kZXgsIFt0aGVPcHRpb25d
LnNlbGVjdGVkID0gPHNwYW4gaWQ9ImxvZ09uZSI+PC9zcGFuPjwvcD4KKyAgICA8cD5bdGhlU2Vs
ZWN0XS5zZWxlY3RlZEluZGV4ID0gPHNwYW4gaWQ9ImxvZ1R3byI+PC9zcGFuPjwvcD4KKyAgICA8
cD5BZnRlciBxdWVyeWluZyBzZWxlY3RlZEluZGV4LCBbdGhlT3B0aW9uXS5zZWxlY3RlZCA9IDxz
cGFuIGlkPSJsb2dUaHJlZSI+PC9zcGFuPjwvcD4KKyAgICA8c2VsZWN0IGlkPSJ0aGVTZWxlY3Qi
IHN0eWxlPSJkaXNwbGF5Om5vbmUiPgorICAgICAgPG9wdGlvbiBpZD0idGhlT3B0aW9uIj5sYWxh
bGE8L29wdGlvbj4KKyAgICA8L3NlbGVjdD4KKyAgICA8c2NyaXB0PgorICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgICAgdmFyIG8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGhlT3B0
aW9uJyk7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nT25lJykudGV4dENvbnRl
bnQgPSBvLnNlbGVjdGVkOworICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZ1R3bycp
LnRleHRDb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RoZVNlbGVjdCcpLnNlbGVj
dGVkSW5kZXg7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nVGhyZWUnKS50ZXh0
Q29udGVudCA9IG8uc2VsZWN0ZWQ7CisgICAgPC9zY3JpcHQ+CisgPC9ib2R5PgorPC9odG1sPgor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3Nl
bGVjdGVkMy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25F
bGVtZW50X3NlbGVjdGVkMy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZWI5YzEyOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcg
QEAKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgc2VsZWN0ZWQgcHJvcGVydHkgb2YgYW4gb3B0
aW9uIGlzIGluaXRpYWxpemVkIGNvcnJlY3RseSBldmVuIHByaW9yIHRvIHRoZSA8L3NlbGVjdD4g
YmVpbmcgcGFyc2VkLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI2
NDEKKworQmVmb3JlIHF1ZXJ5aW5nIHNlbGVjdGVkSW5kZXgsIFt0aGVPcHRpb25dLnNlbGVjdGVk
ID0gdHJ1ZQorCitbdGhlU2VsZWN0XS5zZWxlY3RlZEluZGV4ID0gMAorCitBZnRlciBxdWVyeWlu
ZyBzZWxlY3RlZEluZGV4LCBbdGhlT3B0aW9uXS5zZWxlY3RlZCA9IHRydWUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvSFRNTE9wdGlvbkVsZW1lbnRfc2VsZWN0ZWQzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1MjBhYmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVk
My5odG1sCkBAIC0wLDAgKzEsMjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgIDxib2R5
PgorICAgIDxwPlRoaXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgc2VsZWN0ZWQgcHJvcGVydHkgb2Yg
YW4gb3B0aW9uIGlzIGluaXRpYWxpemVkIGNvcnJlY3RseSBldmVuIHByaW9yIHRvIHRoZSAmbHQ7
L3NlbGVjdCZndDsgYmVpbmcgcGFyc2VkLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzI2NDE8L3A+CisgICAgPHA+QmVmb3JlIHF1ZXJ5aW5nIHNlbGVjdGVkSW5kZXgs
IFt0aGVPcHRpb25dLnNlbGVjdGVkID0gPHNwYW4gaWQ9ImxvZ09uZSI+PC9zcGFuPjwvcD4KKyAg
ICA8cD5bdGhlU2VsZWN0XS5zZWxlY3RlZEluZGV4ID0gPHNwYW4gaWQ9ImxvZ1R3byI+PC9zcGFu
PjwvcD4KKyAgICA8cD5BZnRlciBxdWVyeWluZyBzZWxlY3RlZEluZGV4LCBbdGhlT3B0aW9uXS5z
ZWxlY3RlZCA9IDxzcGFuIGlkPSJsb2dUaHJlZSI+PC9zcGFuPjwvcD4KKyAgICA8c2VsZWN0IGlk
PSJ0aGVTZWxlY3QiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgorICAgICAgPG9wdGlvbiBpZD0idGhl
T3B0aW9uIj5sYWxhbGE8L29wdGlvbj4KKyAgICA8c2NyaXB0PgorICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgICAgdmFyIG8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGhlT3B0aW9u
Jyk7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nT25lJykudGV4dENvbnRlbnQg
PSBvLnNlbGVjdGVkOworICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZ1R3bycpLnRl
eHRDb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RoZVNlbGVjdCcpLnNlbGVjdGVk
SW5kZXg7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nVGhyZWUnKS50ZXh0Q29u
dGVudCA9IG8uc2VsZWN0ZWQ7CisgICAgPC9zY3JpcHQ+CisgICAgPC9zZWxlY3Q+CisgPC9ib2R5
PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2FkZC1yZW1v
dmUtb3B0aW9uLW1vZGlmaWNhdGlvbi1ldmVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2FkZC1yZW1vdmUtb3B0aW9uLW1vZGlmaWNhdGlvbi1ldmVudC1leHBlY3RlZC50
eHQKaW5kZXggODE4YzQ3Yy4uNWUxZDc2MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9hZGQtcmVtb3ZlLW9wdGlvbi1tb2RpZmljYXRpb24tZXZlbnQtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvYWRkLXJlbW92ZS1vcHRpb24tbW9kaWZpY2F0aW9u
LWV2ZW50LWV4cGVjdGVkLnR4dApAQCAtMiw5ICsyLDYgQEAgVGVzdCB0aGF0IFNFTEVDVCBpcyBp
biBjb3JyZWN0IHN0YXRlIHdoZW4gaGFuZGxpbmcgYSBET00gbW9kaWZpY2F0aW9uIGV2ZW50IGZv
cgogCiAgIAogCi1GYWlsZWQKLSAgICAgRXhwZWN0ZWQ6IHRydWUKLSAgICAgQWN0dWFsOiBmYWxz
ZQotCitQYXNzZWQKIFBhc3NlZAogUGFzc2VkCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDAxNTJhYzcuLmMzZjVlMWIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTAtMDEtMTQgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbnN1cmVzIHRo
YXQgdGhlICdzZWxlY3RlZCcgYXR0cmlidXRlIG9mIGFuIDxvcHRpb24+IGlzIGNvcnJlY3QKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNjQxCisKKyAg
ICAgICAgQWRkcyBhIGNoZWNrIGluIE9wdGlvbkVsZW1lbnQ6OnNlbGVjdGVkKCkgdGhhdCBjaGVj
a3MgaWYgbGlzdCBpdGVtcyBuZWVkIHRvIGJlIHJlY2FsY3VsYXRlZCBhbmQgZG9lcyBzbyBpZiBu
ZWVkZWQsCisgICAgICAgIHNvIHRoZSBhdHRyaWJ1dGUgaXMgdXAgdG8gZGF0ZSBtb3JlIG9mdGVu
LiAgQWxzbyBnZXRzIHJpZCBvZiBtb3N0IG9mIHRoZSByZWNhbGNTdHlsZSgpIHNpZGUgZWZmZWN0
cy4KKworICAgICAgICAgT3VyIGJlaGF2aW9yIG5vdyBtYXRjaGVzIEZpcmVmb3ggMy41IGFuZCBJ
RTggYWZ0ZXIgdGhlIDwvc2VsZWN0PiBpcyBwYXJzZWQuCisKKyAgICAgICAgIFRlc3RzOiBmYXN0
L2Zvcm1zL0hUTUxPcHRpb25FbGVtZW50X3NlbGVjdGVkMi5odG1sCisgICAgICAgICAgICAgICAg
ZmFzdC9mb3Jtcy9IVE1MT3B0aW9uRWxlbWVudF9zZWxlY3RlZDMuaHRtbAorCisgICAgICAgICog
ZG9tL1NlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0RWxlbWVudDo6
c2V0T3B0aW9uc0NoYW5nZWRPblJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdEVs
ZW1lbnQ6OnNldFJlY2FsY0xpc3RJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RFbGVt
ZW50OjpyZWNhbGNMaXN0SXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0RWxlbWVudDo6
cmVzdG9yZUZvcm1Db250cm9sU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0RWxlbWVu
dDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0RWxlbWVudDo6dHlwZUFoZWFkRmlu
ZCk6CisgICAgICAgICogZG9tL1NlbGVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxP
cHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25FbGVtZW50Ojpz
ZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6aW5zZXJ0ZWRJ
bnRvVHJlZSk6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6cmVjYWxjU3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVtc0lmTmVlZGVkKToKKyAgICAg
ICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50Lmg6CisgICAgICAgICogd21sL1dNTFNlbGVjdEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V01MU2VsZWN0RWxlbWVudDo6cmVjYWxjU3R5
bGUpOgorCiAyMDEwLTAxLTE0ICBCcmlhbiBXZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvZG9tL1NlbGVjdEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5jcHAK
aW5kZXggNGY3NzEyZC4uODY2YjZjYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vU2VsZWN0RWxl
bWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vU2VsZWN0RWxlbWVudC5jcHAKQEAgLTIyMiwyOCAr
MjIyLDIxIEBAIHZvaWQgU2VsZWN0RWxlbWVudDo6c2Nyb2xsVG9TZWxlY3Rpb24oU2VsZWN0RWxl
bWVudERhdGEmIGRhdGEsIEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgICAgIHRvUmVuZGVyTGlzdEJv
eChyZW5kZXJlciktPnNlbGVjdGlvbkNoYW5nZWQoKTsKIH0KIAotdm9pZCBTZWxlY3RFbGVtZW50
OjpyZWNhbGNTdHlsZShTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCkK
K3ZvaWQgU2VsZWN0RWxlbWVudDo6c2V0T3B0aW9uc0NoYW5nZWRPblJlbmRlcmVyKFNlbGVjdEVs
ZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50KiBlbGVtZW50KQogewotICAgIFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOwotICAgIGlmIChlbGVtZW50LT5jaGlsZE5l
ZWRzU3R5bGVSZWNhbGMoKSAmJiByZW5kZXJlcikgeworICAgIGlmIChSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKSkgewogICAgICAgICBpZiAoZGF0YS51c2VzTWVu
dUxpc3QoKSkKICAgICAgICAgICAgIHRvUmVuZGVyTWVudUxpc3QocmVuZGVyZXIpLT5zZXRPcHRp
b25zQ2hhbmdlZCh0cnVlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdG9SZW5kZXJMaXN0
Qm94KHJlbmRlcmVyKS0+c2V0T3B0aW9uc0NoYW5nZWQodHJ1ZSk7Ci0gICAgfSBlbHNlIGlmIChk
YXRhLnNob3VsZFJlY2FsY0xpc3RJdGVtcygpKQotICAgICAgICByZWNhbGNMaXN0SXRlbXMoZGF0
YSwgZWxlbWVudCk7CisgICAgfQogfQogCiB2b2lkIFNlbGVjdEVsZW1lbnQ6OnNldFJlY2FsY0xp
c3RJdGVtcyhTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCkKIHsKICAg
ICBkYXRhLnNldFNob3VsZFJlY2FsY0xpc3RJdGVtcyh0cnVlKTsKICAgICBkYXRhLnNldEFjdGl2
ZVNlbGVjdGlvbkFuY2hvckluZGV4KC0xKTsgLy8gTWFudWFsIHNlbGVjdGlvbiBhbmNob3IgaXMg
cmVzZXQgd2hlbiBtYW5pcHVsYXRpbmcgdGhlIHNlbGVjdCBwcm9ncmFtbWF0aWNhbGx5LgotICAg
IGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKSkgewotICAg
ICAgICBpZiAoZGF0YS51c2VzTWVudUxpc3QoKSkKLSAgICAgICAgICAgIHRvUmVuZGVyTWVudUxp
c3QocmVuZGVyZXIpLT5zZXRPcHRpb25zQ2hhbmdlZCh0cnVlKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgdG9SZW5kZXJMaXN0Qm94KHJlbmRlcmVyKS0+c2V0T3B0aW9uc0NoYW5nZWQodHJ1
ZSk7Ci0gICAgfQorICAgIHNldE9wdGlvbnNDaGFuZ2VkT25SZW5kZXJlcihkYXRhLCBlbGVtZW50
KTsKICAgICBlbGVtZW50LT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CiB9CiAKQEAgLTI1Miw2ICsy
NDUsOCBAQCB2b2lkIFNlbGVjdEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVtcyhTZWxlY3RFbGVtZW50
RGF0YSYgZGF0YSwgY29uc3QgRWxlbWVudCogZWxlbQogICAgIFZlY3RvcjxFbGVtZW50Kj4mIGxp
c3RJdGVtcyA9IGRhdGEucmF3TGlzdEl0ZW1zKCk7CiAgICAgbGlzdEl0ZW1zLmNsZWFyKCk7CiAK
KyAgICBkYXRhLnNldFNob3VsZFJlY2FsY0xpc3RJdGVtcyhmYWxzZSk7CisKICAgICBPcHRpb25F
bGVtZW50KiBmb3VuZFNlbGVjdGVkID0gMDsKICAgICBmb3IgKE5vZGUqIGN1cnJlbnROb2RlID0g
ZWxlbWVudC0+Zmlyc3RDaGlsZCgpOyBjdXJyZW50Tm9kZTspIHsKICAgICAgICAgaWYgKCFjdXJy
ZW50Tm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7CkBAIC0yOTcsOCArMjkyLDYgQEAgdm9pZCBTZWxl
Y3RFbGVtZW50OjpyZWNhbGNMaXN0SXRlbXMoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEsIGNvbnN0
IEVsZW1lbnQqIGVsZW0KICAgICAgICAgLy8gPHNlbGVjdD4ncyBzdWJ0cmVlIGF0IHRoaXMgcG9p
bnQuCiAgICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUtPnRyYXZlcnNlTmV4dFNpYmxp
bmcoZWxlbWVudCk7CiAgICAgfQotCi0gICAgZGF0YS5zZXRTaG91bGRSZWNhbGNMaXN0SXRlbXMo
ZmFsc2UpOwogfQogCiBpbnQgU2VsZWN0RWxlbWVudDo6c2VsZWN0ZWRJbmRleChjb25zdCBTZWxl
Y3RFbGVtZW50RGF0YSYgZGF0YSwgY29uc3QgRWxlbWVudCogZWxlbWVudCkKQEAgLTQ0Nyw3ICs0
NDAsNyBAQCB2b2lkIFNlbGVjdEVsZW1lbnQ6OnJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKFNlbGVj
dEVsZW1lbnREYXRhJiBkYXRhLCBFbGVtZW50KiBlbAogICAgICAgICAgICAgb3B0aW9uRWxlbWVu
dC0+c2V0U2VsZWN0ZWRTdGF0ZShzdGF0ZVtpXSA9PSAnWCcpOwogICAgIH0KIAotICAgIGVsZW1l
bnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICBzZXRPcHRpb25zQ2hhbmdlZE9uUmVuZGVy
ZXIoZGF0YSwgZWxlbWVudCk7CiB9CiAKIHZvaWQgU2VsZWN0RWxlbWVudDo6cGFyc2VNdWx0aXBs
ZUF0dHJpYnV0ZShTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCwgTWFw
cGVkQXR0cmlidXRlKiBhdHRyaWJ1dGUpCkBAIC01MjEsNiArNTE0LDcgQEAgdm9pZCBTZWxlY3RF
bGVtZW50OjpyZXNldChTZWxlY3RFbGVtZW50RGF0YSYgZGF0YSwgRWxlbWVudCogZWxlbWVudCkK
ICAgICBpZiAoIXNlbGVjdGVkT3B0aW9uICYmIGZpcnN0T3B0aW9uICYmIGRhdGEudXNlc01lbnVM
aXN0KCkpCiAgICAgICAgIGZpcnN0T3B0aW9uLT5zZXRTZWxlY3RlZFN0YXRlKHRydWUpOwogCisg
ICAgc2V0T3B0aW9uc0NoYW5nZWRPblJlbmRlcmVyKGRhdGEsIGVsZW1lbnQpOwogICAgIGVsZW1l
bnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KICAgICAKQEAgLTg5NSw2ICs4ODksOCBAQCB2
b2lkIFNlbGVjdEVsZW1lbnQ6OnR5cGVBaGVhZEZpbmQoU2VsZWN0RWxlbWVudERhdGEmIGRhdGEs
IEVsZW1lbnQqIGVsZW1lbnQsIEtleQogICAgICAgICAgICAgc2V0U2VsZWN0ZWRJbmRleChkYXRh
LCBlbGVtZW50LCBsaXN0VG9PcHRpb25JbmRleChkYXRhLCBlbGVtZW50LCBpbmRleCkpOwogICAg
ICAgICAgICAgaWYgKCFkYXRhLnVzZXNNZW51TGlzdCgpKQogICAgICAgICAgICAgICAgIGxpc3RC
b3hPbkNoYW5nZShkYXRhLCBlbGVtZW50KTsKKworICAgICAgICAgICAgc2V0T3B0aW9uc0NoYW5n
ZWRPblJlbmRlcmVyKGRhdGEsIGVsZW1lbnQpOwogICAgICAgICAgICAgZWxlbWVudC0+c2V0TmVl
ZHNTdHlsZVJlY2FsYygpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2RvbS9TZWxlY3RFbGVtZW50LmggYi9XZWJDb3JlL2RvbS9TZWxlY3RFbGVt
ZW50LmgKaW5kZXggNGNjNzZhMC4uNjg5MWMyMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vU2Vs
ZWN0RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL1NlbGVjdEVsZW1lbnQuaApAQCAtNzUsNyAr
NzUsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgbGlzdEJveE9uQ2hhbmdlKFNlbGVj
dEVsZW1lbnREYXRhJiwgRWxlbWVudCopOwogICAgIHN0YXRpYyB2b2lkIG1lbnVMaXN0T25DaGFu
Z2UoU2VsZWN0RWxlbWVudERhdGEmLCBFbGVtZW50Kik7CiAgICAgc3RhdGljIHZvaWQgc2Nyb2xs
VG9TZWxlY3Rpb24oU2VsZWN0RWxlbWVudERhdGEmLCBFbGVtZW50Kik7Ci0gICAgc3RhdGljIHZv
aWQgcmVjYWxjU3R5bGUoU2VsZWN0RWxlbWVudERhdGEmLCBFbGVtZW50Kik7CiAgICAgc3RhdGlj
IHZvaWQgc2V0UmVjYWxjTGlzdEl0ZW1zKFNlbGVjdEVsZW1lbnREYXRhJiwgRWxlbWVudCopOwog
ICAgIHN0YXRpYyB2b2lkIHJlY2FsY0xpc3RJdGVtcyhTZWxlY3RFbGVtZW50RGF0YSYsIGNvbnN0
IEVsZW1lbnQqLCBib29sIHVwZGF0ZVNlbGVjdGVkU3RhdGVzID0gdHJ1ZSk7CiAgICAgc3RhdGlj
IGludCBzZWxlY3RlZEluZGV4KGNvbnN0IFNlbGVjdEVsZW1lbnREYXRhJiwgY29uc3QgRWxlbWVu
dCopOwpAQCAtMTAwLDYgKzk5LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBzdGF0aWMg
dm9pZCBtZW51TGlzdERlZmF1bHRFdmVudEhhbmRsZXIoU2VsZWN0RWxlbWVudERhdGEmLCBFbGVt
ZW50KiwgRXZlbnQqLCBIVE1MRm9ybUVsZW1lbnQqKTsKICAgICBzdGF0aWMgdm9pZCBsaXN0Qm94
RGVmYXVsdEV2ZW50SGFuZGxlcihTZWxlY3RFbGVtZW50RGF0YSYsIEVsZW1lbnQqLCBFdmVudCos
IEhUTUxGb3JtRWxlbWVudCopOworICAgIHN0YXRpYyB2b2lkIHNldE9wdGlvbnNDaGFuZ2VkT25S
ZW5kZXJlcihTZWxlY3RFbGVtZW50RGF0YSYsIEVsZW1lbnQqKTsKIH07CiAKIC8vIEhUTUwvV01M
U2VsZWN0RWxlbWVudCBob2xkIHRoaXMgc3RydWN0IGFzIG1lbWJlciB2YXJpYWJsZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9I
VE1MT3B0aW9uRWxlbWVudC5jcHAKaW5kZXggMzE2YjE5Mi4uMzI2MzM5MyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TE9wdGlvbkVsZW1lbnQuY3BwCkBAIC0xMzcsNiArMTM3LDggQEAgdm9pZCBIVE1MT3B0aW9uRWxl
bWVudDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIAogYm9vbCBIVE1MT3B0aW9uRWxl
bWVudDo6c2VsZWN0ZWQoKSBjb25zdAogeworICAgIGlmIChIVE1MU2VsZWN0RWxlbWVudCogc2Vs
ZWN0ID0gb3duZXJTZWxlY3RFbGVtZW50KCkpCisgICAgICAgIHNlbGVjdC0+cmVjYWxjTGlzdEl0
ZW1zSWZOZWVkZWQoKTsKICAgICByZXR1cm4gbV9kYXRhLnNlbGVjdGVkKCk7CiB9CiAKQEAgLTIy
MCw3ICsyMjIsOCBAQCB2b2lkIEhUTUxPcHRpb25FbGVtZW50OjppbnNlcnRlZEludG9UcmVlKGJv
b2wgZGVlcCkKIHsKICAgICBpZiAoSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCA9IG93bmVyU2Vs
ZWN0RWxlbWVudCgpKSB7CiAgICAgICAgIHNlbGVjdC0+c2V0UmVjYWxjTGlzdEl0ZW1zKCk7Ci0g
ICAgICAgIGlmIChzZWxlY3RlZCgpKQorICAgICAgICAvLyBBdm9pZCBvdXIgc2VsZWN0ZWQoKSBn
ZXR0ZXIgc2luY2UgaXQgd2lsbCByZWNhbGN1bGF0ZSBsaXN0IGl0ZW1zIGluY29ycmVjdGx5IGZv
ciB1cy4KKyAgICAgICAgaWYgKG1fZGF0YS5zZWxlY3RlZCgpKQogICAgICAgICAgICAgc2VsZWN0
LT5zZXRTZWxlY3RlZEluZGV4KGluZGV4KCksIGZhbHNlKTsKICAgICAgICAgc2VsZWN0LT5zY3Jv
bGxUb1NlbGVjdGlvbigpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MU2Vs
ZWN0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4
IDI0MDlmMzEuLjVmNWM4NTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxl
bWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcApAQCAtNCw2
ICs0LDcgQEAKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2Rl
Lm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5
IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTU5LDcg
KzYwLDYgQEAgYm9vbCBIVE1MU2VsZWN0RWxlbWVudDo6Y2hlY2tEVEQoY29uc3QgTm9kZSogbmV3
Q2hpbGQpCiAKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdl
IGNoYW5nZSkKIHsKLSAgICBTZWxlY3RFbGVtZW50OjpyZWNhbGNTdHlsZShtX2RhdGEsIHRoaXMp
OwogICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OnJlY2FsY1N0eWxlKGNoYW5n
ZSk7CiB9CiAKQEAgLTI2MSw2ICsyNjEsMTIgQEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cmVj
YWxjTGlzdEl0ZW1zKGJvb2wgdXBkYXRlU2VsZWN0ZWRTdGF0ZXMpIGNvbnN0CiAgICAgU2VsZWN0
RWxlbWVudDo6cmVjYWxjTGlzdEl0ZW1zKGNvbnN0X2Nhc3Q8U2VsZWN0RWxlbWVudERhdGEmPiht
X2RhdGEpLCB0aGlzLCB1cGRhdGVTZWxlY3RlZFN0YXRlcyk7CiB9CiAKK3ZvaWQgSFRNTFNlbGVj
dEVsZW1lbnQ6OnJlY2FsY0xpc3RJdGVtc0lmTmVlZGVkKCkKK3sKKyAgICBpZiAobV9kYXRhLnNo
b3VsZFJlY2FsY0xpc3RJdGVtcygpKQorICAgICAgICByZWNhbGNMaXN0SXRlbXMoKTsKK30KKwog
dm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFy
c2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3Vu
dERlbHRhKQogewogICAgIHNldFJlY2FsY0xpc3RJdGVtcygpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuaAppbmRleCA4ZjU3NWQyLi5kNzcyZTRkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRN
TFNlbGVjdEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaApA
QCAtMyw2ICszLDcgQEAKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29p
dmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxs
ZXJAa2RlLm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
NTgsNiArNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChi
b29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2Rl
KiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIAogICAgIHZvaWQg
c2V0UmVjYWxjTGlzdEl0ZW1zKCk7CisgICAgdm9pZCByZWNhbGNMaXN0SXRlbXNJZk5lZWRlZCgp
OwogCiAgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBsaXN0SXRlbXMoKSBjb25z
dCB7IHJldHVybiBtX2RhdGEubGlzdEl0ZW1zKHRoaXMpOyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvd21sL1dNTFNlbGVjdEVsZW1lbnQuY3BwIGIvV2ViQ29yZS93bWwvV01MU2VsZWN0RWxlbWVu
dC5jcHAKaW5kZXggMDNjYTA1YS4uZTYwNDFmNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS93bWwvV01M
U2VsZWN0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS93bWwvV01MU2VsZWN0RWxlbWVudC5jcHAK
QEAgLTgzLDcgKzgzLDYgQEAgdm9pZCBXTUxTZWxlY3RFbGVtZW50OjpzZWxlY3RBbGwoKQogCiB2
b2lkIFdNTFNlbGVjdEVsZW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKIHsK
LSAgICBTZWxlY3RFbGVtZW50OjpyZWNhbGNTdHlsZShtX2RhdGEsIHRoaXMpOwogICAgIFdNTEZv
cm1Db250cm9sRWxlbWVudDo6cmVjYWxjU3R5bGUoY2hhbmdlKTsKIH0KIAo=
</data>
<flag name="commit-queue"
          id="29676"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>