<?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>25679</bug_id>
          
          <creation_ts>2009-05-10 18:39:04 -0700</creation_ts>
          <short_desc>[GTK] Improve accessibility of focusable lists</short_desc>
          <delta_ts>2010-11-09 19:44:59 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>25531</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Joanmarie Diggs">jdiggs</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apinheiro</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>mario</cc>
    
    <cc>walker.willie</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>120583</commentid>
    <comment_count>0</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-05-10 18:39:04 -0700</bug_when>
    <thetext>Focusable Lists (such as the Version and Component lists in bugzilla) need several improvements in order to be fully accessible:

1. The list itself should implement the accessible selection interface so that ATs can identify which item(s) in the list have be selected. (Please see http://library.gnome.org/devel/atk/unstable/AtkSelection.html for more information.)

2. List items should have the following states:

   a. STATE_SELECTABLE
   b. STATE_SELECTED (as appropriate)
   c. STATE_FOCUSABLE
   d. STATE_FOCUSED (as appropriate)

3. List items should NOT have STATE_EDITABLE as a general rule (but seem to in the current WebKit).

4. The appropriate events should be emitted. Because some lists are multi-selectable, I would suggest:

   a. object:state-changed:focused
   b. object:state-changed:selected

Thus, in normal arrowing about, two events would be emitted -- or potentially three:

   a. A state-changed:focused event (detail1 == 1) for the focused item.

   b. A state-changed:selected event if the item which has focus was selected (detail1 == 1).

   c. A state-changed:focused event (detail1 == 0) for the item which just gave up focus.

If selection for the current item in a multi-selectable list was toggled, a state-changed:selected event would be expected, with detail1 indicating state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157572</commentid>
    <comment_count>1</comment_count>
      <attachid>41817</attachid>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-10-25 01:40:34 -0700</bug_when>
    <thetext>Created attachment 41817
part 1 - Fix the states exposed

This patch addresses issues 2 and 3. I&apos;ll work on the other issues after I get some sleep. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157687</commentid>
    <comment_count>2</comment_count>
      <attachid>41846</attachid>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-10-25 23:36:17 -0700</bug_when>
    <thetext>Created attachment 41846
part 1 and 2 - Fix the states exposed and implement the AtkSelection interface</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157690</commentid>
    <comment_count>3</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-10-25 23:59:57 -0700</bug_when>
    <thetext>Can you please split the patches and put them separately for review? Makes things much easier for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157691</commentid>
    <comment_count>4</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-10-26 00:00:49 -0700</bug_when>
    <thetext>I mean, since you already had the first one split, I see no reason to not do the second on its own.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157693</commentid>
    <comment_count>5</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-10-26 00:05:57 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I mean, since you already had the first one split, I see no reason to not do
&gt; the second on its own.

The first one was quite small so I figured it would be more work as two separate patches, ChangeLogs, commits, etc. But sure... Lemme reboot that box and split them up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157694</commentid>
    <comment_count>6</comment_count>
      <attachid>41817</attachid>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-10-26 00:08:26 -0700</bug_when>
    <thetext>Comment on attachment 41817
part 1 - Fix the states exposed

Un-obsoleting this one and will then split off the second one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157696</commentid>
    <comment_count>7</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-10-26 00:11:47 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; I mean, since you already had the first one split, I see no reason to not do
&gt; &gt; the second on its own.
&gt; 
&gt; The first one was quite small so I figured it would be more work as two
&gt; separate patches, ChangeLogs, commits, etc. But sure... Lemme reboot that box
&gt; and split them up.

We always prefer to do patches as small as possible, and if you can split a big
task in several small-ish patches that&apos;s always the way to go. Not that the
compiler, or the build bots, or anything like that cares, but the human
reviewers do care :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157702</commentid>
    <comment_count>8</comment_count>
      <attachid>41817</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-10-26 00:35:31 -0700</bug_when>
    <thetext>Comment on attachment 41817
part 1 - Fix the states exposed

&gt;  
&gt;  static void setAtkStateSetFromCoreObject(AccessibilityObject* coreObject, AtkStateSet* stateSet)
&gt;  {
&gt; -    // Please keep the state list in alphabetical order
&gt; +    AccessibilityObject* parent = coreObject-&gt;parentObject();
&gt; +    bool isListBoxOption = parent &amp;&amp; parent-&gt;isListBox();
&gt; +    if (isListBoxOption)
&gt; +        coreObject = static_cast&lt;AccessibilityListBoxOption*&gt;(coreObject);

I don&apos;t understand what this cast is for?

&gt;  
&gt; +    // Please keep the state list in alphabetical order
&gt;      if (coreObject-&gt;isChecked())
&gt;          atk_state_set_add_state(stateSet, ATK_STATE_CHECKED);
&gt;  
&gt;      // FIXME: isReadOnly does not seem to do the right thing for
&gt;      // controls, so check explicitly for them
&gt; -    if (!coreObject-&gt;isReadOnly() ||
&gt; -        (coreObject-&gt;isControl() &amp;&amp; coreObject-&gt;canSetValueAttribute()))
&gt; +    if ((!coreObject-&gt;isReadOnly() ||
&gt; +        (coreObject-&gt;isControl() &amp;&amp; coreObject-&gt;canSetValueAttribute())) &amp;&amp;
&gt; +        !isListBoxOption)
&gt;          atk_state_set_add_state(stateSet, ATK_STATE_EDITABLE);

I&apos;d go ahead and add a comment explaining that we don&apos;t want this in ATK for whatever reason, otherwise the if is impossible to understand.
&gt;  
&gt;      // FIXME: Put both ENABLED and SENSITIVE together here for now
&gt; @@ -408,8 +414,23 @@ static void setAtkStateSetFromCoreObject(AccessibilityObject* coreObject, AtkSta
&gt;  
&gt;      // TODO: ATK_STATE_SELECTABLE_TEXT
&gt;  
&gt; -    if (coreObject-&gt;isSelected())
&gt; +    if (coreObject-&gt;canSetSelectedAttribute()) {
&gt; +        atk_state_set_add_state(stateSet, ATK_STATE_SELECTABLE);
&gt; +        // Items in focusable lists in Gtk have both STATE_SELECT{ABLE,ED}
&gt; +        // and STATE_FOCUS{ABLE,ED}. We&apos;ll fake the latter based on the
&gt; +        // former.
&gt; +        if (isListBoxOption)
&gt; +            atk_state_set_add_state(stateSet, ATK_STATE_FOCUSABLE);
&gt; +    }
&gt; +
&gt; +    if (coreObject-&gt;isSelected()) {
&gt;          atk_state_set_add_state(stateSet, ATK_STATE_SELECTED);
&gt; +        // Items in focusable lists in Gtk have both STATE_SELECT{ABLE,ED}
&gt; +        // and STATE_FOCUS{ABLE,ED}. We&apos;ll fake the latter based on the
&gt; +        // former.
&gt; +        if (isListBoxOption)
&gt; +            atk_state_set_add_state(stateSet, ATK_STATE_FOCUSED);
&gt; +    }

Good!

Marking r- to fix those two details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157704</commentid>
    <comment_count>9</comment_count>
      <attachid>41852</attachid>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-10-26 00:40:25 -0700</bug_when>
    <thetext>Created attachment 41852
Just selection</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157705</commentid>
    <comment_count>10</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-10-26 00:53:03 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 41817 [details])
&gt; &gt;  
&gt; &gt;  static void setAtkStateSetFromCoreObject(AccessibilityObject* coreObject, AtkStateSet* stateSet)
&gt; &gt;  {
&gt; &gt; -    // Please keep the state list in alphabetical order
&gt; &gt; +    AccessibilityObject* parent = coreObject-&gt;parentObject();
&gt; &gt; +    bool isListBoxOption = parent &amp;&amp; parent-&gt;isListBox();
&gt; &gt; +    if (isListBoxOption)
&gt; &gt; +        coreObject = static_cast&lt;AccessibilityListBoxOption*&gt;(coreObject);
&gt; 
&gt; I don&apos;t understand what this cast is for?

As I recall, without it we were not getting the isSelected() associated with AccessibilityListBoxOption. But I&apos;ll double check when WebKit finishes building.

&gt; &gt; +    // Please keep the state list in alphabetical order
&gt; &gt;      if (coreObject-&gt;isChecked())
&gt; &gt;          atk_state_set_add_state(stateSet, ATK_STATE_CHECKED);
&gt; &gt;  
&gt; &gt;      // FIXME: isReadOnly does not seem to do the right thing for
&gt; &gt;      // controls, so check explicitly for them
&gt; &gt; -    if (!coreObject-&gt;isReadOnly() ||
&gt; &gt; -        (coreObject-&gt;isControl() &amp;&amp; coreObject-&gt;canSetValueAttribute()))
&gt; &gt; +    if ((!coreObject-&gt;isReadOnly() ||
&gt; &gt; +        (coreObject-&gt;isControl() &amp;&amp; coreObject-&gt;canSetValueAttribute())) &amp;&amp;
&gt; &gt; +        !isListBoxOption)
&gt; &gt;          atk_state_set_add_state(stateSet, ATK_STATE_EDITABLE);
&gt; 
&gt; I&apos;d go ahead and add a comment explaining that we don&apos;t want this in ATK for
&gt; whatever reason, otherwise the if is impossible to understand.

Okie dokie.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157714</commentid>
    <comment_count>11</comment_count>
      <attachid>41856</attachid>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-10-26 02:44:20 -0700</bug_when>
    <thetext>Created attachment 41856
Part 1 - Fix the states exposed - Take 2

&gt; I don&apos;t understand what this cast is for?

I swear there was a good reason for it. But at the moment I couldn&apos;t tell you what it is or was. :-) Removed.

&gt; I&apos;d go ahead and add a comment explaining that we don&apos;t want this in ATK for
&gt; whatever reason

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157717</commentid>
    <comment_count>12</comment_count>
      <attachid>41857</attachid>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-10-26 03:15:24 -0700</bug_when>
    <thetext>Created attachment 41857
Part 2 - Selection - Take 2

When splitting the patches, this bit got left out:

@@ -100,6 +101,11 @@ static AccessibilityObject* core(AtkAction* action)
     return core(ATK_OBJECT(action));
 }
 
+static AccessibilityObject* core(AtkSelection* selection)
+{
+    return core(ATK_OBJECT(selection));
+}
+
 static AccessibilityObject* core(AtkText* text)
 {
     return core(ATK_OBJECT(text));

I believe this is now all of the needed bits from Part 2 and none of the bits from Part 1. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157729</commentid>
    <comment_count>13</comment_count>
      <attachid>41856</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-10-26 04:28:18 -0700</bug_when>
    <thetext>Comment on attachment 41856
Part 1 - Fix the states exposed - Take 2

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157735</commentid>
    <comment_count>14</comment_count>
      <attachid>41856</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-26 04:42:49 -0700</bug_when>
    <thetext>Comment on attachment 41856
Part 1 - Fix the states exposed - Take 2

Clearing flags on attachment: 41856

Committed r50054: &lt;http://trac.webkit.org/changeset/50054&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157736</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-26 04:42:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157738</commentid>
    <comment_count>16</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-10-26 04:44:14 -0700</bug_when>
    <thetext>Reopening, still patches to land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158747</commentid>
    <comment_count>17</comment_count>
      <attachid>41857</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-10-28 15:35:37 -0700</bug_when>
    <thetext>Comment on attachment 41857
Part 2 - Selection - Take 2

Looks good to me, but can you change the NULL for 0 so we can have the bot land it? Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158771</commentid>
    <comment_count>18</comment_count>
      <attachid>42068</attachid>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-10-28 16:28:07 -0700</bug_when>
    <thetext>Created attachment 42068
Part 2 - Selection - Take 3 (remove NULLs)

(In reply to comment #17)
&gt; (From update of attachment 41857 [details])
&gt; Looks good to me, but can you change the NULL for 0 so we can have the bot land
&gt; it? Thank you!

Done (modulo the ones at the end, to be consistent with the surrounding, broken ones). I&apos;ll do a de-nitify patch before too long.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158772</commentid>
    <comment_count>19</comment_count>
      <attachid>42068</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-10-28 16:31:07 -0700</bug_when>
    <thetext>Comment on attachment 42068
Part 2 - Selection - Take 3 (remove NULLs)

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158778</commentid>
    <comment_count>20</comment_count>
      <attachid>42068</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-28 17:04:51 -0700</bug_when>
    <thetext>Comment on attachment 42068
Part 2 - Selection - Take 3 (remove NULLs)

Rejecting patch 42068 from commit-queue.

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

httpd is already running: pid 46435, killing...
http/tests/appcache/max-size.html -&gt; failed

Exiting early after 1 failures. 8487 tests run.
175.08s total testing time

8486 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
4 test cases (&lt;1%) had stderr output</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158878</commentid>
    <comment_count>21</comment_count>
      <attachid>42068</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-10-29 06:43:20 -0700</bug_when>
    <thetext>Comment on attachment 42068
Part 2 - Selection - Take 3 (remove NULLs)

Try again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158938</commentid>
    <comment_count>22</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-29 10:19:33 -0700</bug_when>
    <thetext>Sorry.  The commit queue was down for 8 hours due to bug 30869.  I expect the rejection you saw was due to bug 30098.  I expect to fix both issues today.  My apologies for the delay on landing your patch.  The commit-queue is back up and running: http://webkit-commit-queue.appspot.com/ and your patch should be processed shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158945</commentid>
    <comment_count>23</comment_count>
      <attachid>42068</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-29 10:34:49 -0700</bug_when>
    <thetext>Comment on attachment 42068
Part 2 - Selection - Take 3 (remove NULLs)

Clearing flags on attachment: 42068

Committed r50282: &lt;http://trac.webkit.org/changeset/50282&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158946</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-29 10:34:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158957</commentid>
    <comment_count>25</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-10-29 10:50:54 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 42068 [details])
&gt; Clearing flags on attachment: 42068
&gt; 
&gt; Committed r50282: &lt;http://trac.webkit.org/changeset/50282&gt;

Woo hoo! :-)

Reopening because I still have to cause events to be emitted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304679</commentid>
    <comment_count>26</comment_count>
      <attachid>72945</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-11-04 08:38:54 -0700</bug_when>
    <thetext>Created attachment 72945
Part 3 - emit &apos;selected&apos; and &apos;focused&apos; signals

(In reply to comment #25)
&gt; (In reply to comment #23)
&gt; &gt; (From update of attachment 42068 [details] [details])
&gt; &gt; Clearing flags on attachment: 42068
&gt; &gt; 
&gt; &gt; Committed r50282: &lt;http://trac.webkit.org/changeset/50282&gt;
&gt; 
&gt; Woo hoo! :-)
&gt; 
&gt; Reopening because I still have to cause events to be emitted.

Attaching the last bit to fix this bug, by addressing this pending issue (the events).

Asking for review then...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306008</commentid>
    <comment_count>27</comment_count>
      <attachid>72945</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-11-07 23:20:06 -0800</bug_when>
    <thetext>Comment on attachment 72945
Part 3 - emit &apos;selected&apos; and &apos;focused&apos; signals

View in context: https://bugs.webkit.org/attachment.cgi?id=72945&amp;action=review

&gt; WebCore/ChangeLog:14
&gt; +        &apos;focus-event&apos;, along with apropriate detail along with each of

spelling -&gt; apropriate

&gt; WebCore/accessibility/gtk/AXObjectCacheAtk.cpp:55
&gt; +    AccessibilityRenderObject::AccessibilityChildrenVector items = object-&gt;children();

this should be AccessibilityObject::AXChildrenVector

&gt; WebCore/accessibility/gtk/AXObjectCacheAtk.cpp:56
&gt; +    SelectElement* select = toSelectElement(static_cast&lt;Element*&gt;(object-&gt;node()));

you should check if select == 0 after this line

&gt; WebCore/accessibility/gtk/AXObjectCacheAtk.cpp:58
&gt; +    if (changedItemIndex &lt; 0 || changedItemIndex &gt;= (int)items.size())

use static cast here

&gt; WebCore/accessibility/gtk/AXObjectCacheAtk.cpp:65
&gt; +    static RefPtr&lt;AccessibilityObject&gt; oldFocusedObject;

this static should be at the top of the method. i also believe there&apos;s a standard way to initialize statics, that you should look for

&gt; WebCore/accessibility/gtk/AXObjectCacheAtk.cpp:83
&gt; +        g_signal_emit_by_name(axItem, &quot;focus-event&quot;, isSelected);

do you want to emit focus-event every time this happens? or do you want to limit it to when axItem != oldFocusedItem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306210</commentid>
    <comment_count>28</comment_count>
      <attachid>73250</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2010-11-08 10:46:45 -0800</bug_when>
    <thetext>Created attachment 73250
Part 3 - emit &apos;selected&apos; and &apos;focused&apos; signals

Thanks for the review, Chris. Now attaching a new patch. See my comments below...

(In reply to comment #27)
&gt; (From update of attachment 72945 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=72945&amp;action=review
&gt; 
&gt; &gt; WebCore/ChangeLog:14
&gt; &gt; +        &apos;focus-event&apos;, along with apropriate detail along with each of
&gt; 
&gt; spelling -&gt; apropriate

Fixed.

&gt; &gt; WebCore/accessibility/gtk/AXObjectCacheAtk.cpp:55
&gt; &gt; +    AccessibilityRenderObject::AccessibilityChildrenVector items = object-&gt;children();
&gt; 
&gt; this should be AccessibilityObject::AXChildrenVector

Fixed.

&gt; &gt; WebCore/accessibility/gtk/AXObjectCacheAtk.cpp:56
&gt; &gt; +    SelectElement* select = toSelectElement(static_cast&lt;Element*&gt;(object-&gt;node()));
&gt; 
&gt; you should check if select == 0 after this line

Fixed.

&gt; &gt; WebCore/accessibility/gtk/AXObjectCacheAtk.cpp:58
&gt; &gt; +    if (changedItemIndex &lt; 0 || changedItemIndex &gt;= (int)items.size())
&gt; 
&gt; use static cast here

Fixed.

&gt; &gt; WebCore/accessibility/gtk/AXObjectCacheAtk.cpp:65
&gt; &gt; +    static RefPtr&lt;AccessibilityObject&gt; oldFocusedObject;
&gt; 
&gt; this static should be at the top of the method. 

Fixed.

&gt; i also believe there&apos;s a standard way to initialize statics, that you should look for

I guess you mean initializating the var &apos;= 0&apos;. If so -&gt; &quot;Fixed!&quot;

&gt; &gt; WebCore/accessibility/gtk/AXObjectCacheAtk.cpp:83
&gt; &gt; +        g_signal_emit_by_name(axItem, &quot;focus-event&quot;, isSelected);
&gt; 
&gt; do you want to emit focus-event every time this happens? or do you want to limit it to when axItem != oldFocusedItem

Yes, that&apos;s the expected behavior. The axItem != oldFocusedItem check for the old item is meant to avoid sending the same signal twice in the hypothetical case they were the same object, but for the current one (axItem) we should definitely always emit those signals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306990</commentid>
    <comment_count>29</comment_count>
      <attachid>73250</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-11-09 14:40:03 -0800</bug_when>
    <thetext>Comment on attachment 73250
Part 3 - emit &apos;selected&apos; and &apos;focused&apos; signals

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307122</commentid>
    <comment_count>30</comment_count>
      <attachid>73250</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-09 19:44:52 -0800</bug_when>
    <thetext>Comment on attachment 73250
Part 3 - emit &apos;selected&apos; and &apos;focused&apos; signals

Clearing flags on attachment: 73250

Committed r71710: &lt;http://trac.webkit.org/changeset/71710&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>307123</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-11-09 19:44:59 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41817</attachid>
            <date>2009-10-25 01:40:34 -0700</date>
            <delta_ts>2009-10-26 02:44:20 -0700</delta_ts>
            <desc>part 1 - Fix the states exposed</desc>
            <filename>25679-states-1.patch</filename>
            <type>text/plain</type>
            <size>3987</size>
            <attacher name="Joanmarie Diggs">jdiggs</attacher>
            
              <data encoding="base64">RnJvbSAyYmFkOTIzMDQ2OWI3N2ZjMTQ0OTQ3MTA2NTIzZTViMDdiZTBiOTA2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2FubWFyaWUgRGlnZ3MgPGpvYW5tYXJpZS5kaWdnc0BnbWFp
bC5jb20+CkRhdGU6IFN1biwgMjUgT2N0IDIwMDkgMDQ6MzM6MDAgLTA0MDAKU3ViamVjdDogW1BB
VENIXSBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCmh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNTY3OQpbR3RrXSBJbXByb3ZlIGFjY2Vzc2liaWxpdHkgb2YgZm9j
dXNhYmxlIGxpc3RzCgpGaXhlcyB0aGUgaXNzdWVzIHdpdGggdGhlIEF0ayBzdGF0ZXMgZXhwb3Nl
ZCBmb3IgTGlzdEJveE9wdGlvbgoKKiBhY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlckF0ay5jcHA6CihzZXRBdGtTdGF0ZVNldEZyb21Db3JlT2JqZWN0KToKLS0tCiBX
ZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIg
KysrKysrKysKIC4uLi9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwICAgICAg
ICAgIHwgICAyOSArKysrKysrKysrKysrKysrKy0tLQogMiBmaWxlcyBjaGFuZ2VkLCAzNyBpbnNl
cnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWRjZjZkMC4uOTJlZjZjMSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAwOS0xMC0yNSAgSm9hbm1hcmllIERpZ2dzICA8am9hbm1hcmllLmRpZ2dzQGdtYWlsLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU2NzkKKyAgICAgICAgW0d0a10g
SW1wcm92ZSBhY2Nlc3NpYmlsaXR5IG9mIGZvY3VzYWJsZSBsaXN0cworCisgICAgICAgIEZpeGVz
IHRoZSBpc3N1ZXMgd2l0aCB0aGUgQXRrIHN0YXRlcyBleHBvc2VkIGZvciBMaXN0Qm94T3B0aW9u
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ckF0ay5jcHA6CisgICAgICAgIChzZXRBdGtTdGF0ZVNldEZyb21Db3JlT2JqZWN0KToKKwogMjAw
OS0xMC0yNCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3Rr
L0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcCBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwCmluZGV4IGYwZDliZmUuLmRm
NWRmMjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJBdGsuY3BwCisrKyBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAKICNpbmNs
dWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUxpc3RCb3guaCIK
KyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oIgogI2luY2x1ZGUgIkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKICNpbmNs
dWRlICJDU3RyaW5nLmgiCkBAIC0zNzAsMTUgKzM3MSwyMCBAQCBzdGF0aWMgQXRrUm9sZSB3ZWJr
aXRfYWNjZXNzaWJsZV9nZXRfcm9sZShBdGtPYmplY3QqIG9iamVjdCkKIAogc3RhdGljIHZvaWQg
c2V0QXRrU3RhdGVTZXRGcm9tQ29yZU9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2Jq
ZWN0LCBBdGtTdGF0ZVNldCogc3RhdGVTZXQpCiB7Ci0gICAgLy8gUGxlYXNlIGtlZXAgdGhlIHN0
YXRlIGxpc3QgaW4gYWxwaGFiZXRpY2FsIG9yZGVyCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
cGFyZW50ID0gY29yZU9iamVjdC0+cGFyZW50T2JqZWN0KCk7CisgICAgYm9vbCBpc0xpc3RCb3hP
cHRpb24gPSBwYXJlbnQgJiYgcGFyZW50LT5pc0xpc3RCb3goKTsKKyAgICBpZiAoaXNMaXN0Qm94
T3B0aW9uKQorICAgICAgICBjb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eUxp
c3RCb3hPcHRpb24qPihjb3JlT2JqZWN0KTsKIAorICAgIC8vIFBsZWFzZSBrZWVwIHRoZSBzdGF0
ZSBsaXN0IGluIGFscGhhYmV0aWNhbCBvcmRlcgogICAgIGlmIChjb3JlT2JqZWN0LT5pc0NoZWNr
ZWQoKSkKICAgICAgICAgYXRrX3N0YXRlX3NldF9hZGRfc3RhdGUoc3RhdGVTZXQsIEFUS19TVEFU
RV9DSEVDS0VEKTsKIAogICAgIC8vIEZJWE1FOiBpc1JlYWRPbmx5IGRvZXMgbm90IHNlZW0gdG8g
ZG8gdGhlIHJpZ2h0IHRoaW5nIGZvcgogICAgIC8vIGNvbnRyb2xzLCBzbyBjaGVjayBleHBsaWNp
dGx5IGZvciB0aGVtCi0gICAgaWYgKCFjb3JlT2JqZWN0LT5pc1JlYWRPbmx5KCkgfHwKLSAgICAg
ICAgKGNvcmVPYmplY3QtPmlzQ29udHJvbCgpICYmIGNvcmVPYmplY3QtPmNhblNldFZhbHVlQXR0
cmlidXRlKCkpKQorICAgIGlmICgoIWNvcmVPYmplY3QtPmlzUmVhZE9ubHkoKSB8fAorICAgICAg
ICAoY29yZU9iamVjdC0+aXNDb250cm9sKCkgJiYgY29yZU9iamVjdC0+Y2FuU2V0VmFsdWVBdHRy
aWJ1dGUoKSkpICYmCisgICAgICAgICFpc0xpc3RCb3hPcHRpb24pCiAgICAgICAgIGF0a19zdGF0
ZV9zZXRfYWRkX3N0YXRlKHN0YXRlU2V0LCBBVEtfU1RBVEVfRURJVEFCTEUpOwogCiAgICAgLy8g
RklYTUU6IFB1dCBib3RoIEVOQUJMRUQgYW5kIFNFTlNJVElWRSB0b2dldGhlciBoZXJlIGZvciBu
b3cKQEAgLTQwOCw4ICs0MTQsMjMgQEAgc3RhdGljIHZvaWQgc2V0QXRrU3RhdGVTZXRGcm9tQ29y
ZU9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBBdGtTdGEKIAogICAgIC8v
IFRPRE86IEFUS19TVEFURV9TRUxFQ1RBQkxFX1RFWFQKIAotICAgIGlmIChjb3JlT2JqZWN0LT5p
c1NlbGVjdGVkKCkpCisgICAgaWYgKGNvcmVPYmplY3QtPmNhblNldFNlbGVjdGVkQXR0cmlidXRl
KCkpIHsKKyAgICAgICAgYXRrX3N0YXRlX3NldF9hZGRfc3RhdGUoc3RhdGVTZXQsIEFUS19TVEFU
RV9TRUxFQ1RBQkxFKTsKKyAgICAgICAgLy8gSXRlbXMgaW4gZm9jdXNhYmxlIGxpc3RzIGluIEd0
ayBoYXZlIGJvdGggU1RBVEVfU0VMRUNUe0FCTEUsRUR9CisgICAgICAgIC8vIGFuZCBTVEFURV9G
T0NVU3tBQkxFLEVEfS4gV2UnbGwgZmFrZSB0aGUgbGF0dGVyIGJhc2VkIG9uIHRoZQorICAgICAg
ICAvLyBmb3JtZXIuCisgICAgICAgIGlmIChpc0xpc3RCb3hPcHRpb24pCisgICAgICAgICAgICBh
dGtfc3RhdGVfc2V0X2FkZF9zdGF0ZShzdGF0ZVNldCwgQVRLX1NUQVRFX0ZPQ1VTQUJMRSk7Cisg
ICAgfQorCisgICAgaWYgKGNvcmVPYmplY3QtPmlzU2VsZWN0ZWQoKSkgewogICAgICAgICBhdGtf
c3RhdGVfc2V0X2FkZF9zdGF0ZShzdGF0ZVNldCwgQVRLX1NUQVRFX1NFTEVDVEVEKTsKKyAgICAg
ICAgLy8gSXRlbXMgaW4gZm9jdXNhYmxlIGxpc3RzIGluIEd0ayBoYXZlIGJvdGggU1RBVEVfU0VM
RUNUe0FCTEUsRUR9CisgICAgICAgIC8vIGFuZCBTVEFURV9GT0NVU3tBQkxFLEVEfS4gV2UnbGwg
ZmFrZSB0aGUgbGF0dGVyIGJhc2VkIG9uIHRoZQorICAgICAgICAvLyBmb3JtZXIuCisgICAgICAg
IGlmIChpc0xpc3RCb3hPcHRpb24pCisgICAgICAgICAgICBhdGtfc3RhdGVfc2V0X2FkZF9zdGF0
ZShzdGF0ZVNldCwgQVRLX1NUQVRFX0ZPQ1VTRUQpOworICAgIH0KIAogICAgIC8vIEZJWE1FOiBH
cm91cCBib3RoIFNIT1dJTkcgYW5kIFZJU0lCTEUgaGVyZSBmb3Igbm93CiAgICAgLy8gTm90IHN1
cmUgaG93IHRvIGhhbmRsZSB0aGlzIGluIFdlYktpdCwgc2VlIGJ1ZwotLSAKMS42LjMuMwoK
</data>
<flag name="review"
          id="23302"
          type_id="1"
          status="-"
          setter="xan.lopez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41846</attachid>
            <date>2009-10-25 23:36:17 -0700</date>
            <delta_ts>2009-10-26 00:08:39 -0700</delta_ts>
            <desc>part 1 and 2 - Fix the states exposed and implement the AtkSelection interface</desc>
            <filename>25679-states-and-selection-1.patch</filename>
            <type>text/plain</type>
            <size>13274</size>
            <attacher name="Joanmarie Diggs">jdiggs</attacher>
            
              <data encoding="base64">RnJvbSBkMzQ3OGRlMDE4M2Y5NGU1MzcwYWE3ODUyMzhmY2FkYTMxZTZhYmNhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2FubWFyaWUgRGlnZ3MgPGpvYW5tYXJpZS5kaWdnc0BnbWFp
bC5jb20+CkRhdGU6IFN1biwgMjUgT2N0IDIwMDkgMDQ6MzM6MDAgLTA0MDAKU3ViamVjdDogW1BB
VENIXSBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCmh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNTY3OQpbR3RrXSBJbXByb3ZlIGFjY2Vzc2liaWxpdHkgb2YgZm9j
dXNhYmxlIGxpc3RzCgpGaXhlcyB0aGUgaXNzdWVzIHdpdGggdGhlIEF0ayBzdGF0ZXMgZXhwb3Nl
ZCBmb3IgTGlzdEJveE9wdGlvbjsKYWxzbyBpbXBsZW1lbnRzIHRoZSBBdGtTZWxlY3Rpb24gaW50
ZXJmYWNlIGFuZCBlbmFibGVzIHRoZQpjb3JyZXNwb25kaW5nIChhbmQgZXhwZWN0ZWQpIG9iamVj
dDpzZWxlY3Rpb24tY2hhbmdlZCBldmVudC4KCiogYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwOgooc2V0QXRrU3RhdGVTZXRGcm9tQ29yZU9iamVjdCk6
CihvcHRpb25Gcm9tTGlzdCk6CihvcHRpb25Gcm9tU2VsZWN0aW9uKToKKGF0a19zZWxlY3Rpb25f
aW50ZXJmYWNlX2luaXQpOgood2Via2l0X2FjY2Vzc2libGVfc2VsZWN0aW9uX2FkZF9zZWxlY3Rp
b24pOgood2Via2l0X2FjY2Vzc2libGVfc2VsZWN0aW9uX2NsZWFyX3NlbGVjdGlvbik6Cih3ZWJr
aXRfYWNjZXNzaWJsZV9zZWxlY3Rpb25fcmVmX3NlbGVjdGlvbik6Cih3ZWJraXRfYWNjZXNzaWJs
ZV9zZWxlY3Rpb25fZ2V0X3NlbGVjdGlvbl9jb3VudCk6Cih3ZWJraXRfYWNjZXNzaWJsZV9zZWxl
Y3Rpb25faXNfY2hpbGRfc2VsZWN0ZWQpOgood2Via2l0X2FjY2Vzc2libGVfc2VsZWN0aW9uX3Jl
bW92ZV9zZWxlY3Rpb24pOgood2Via2l0X2FjY2Vzc2libGVfc2VsZWN0aW9uX3NlbGVjdF9hbGxf
c2VsZWN0aW9uKToKKEdldEF0a0ludGVyZmFjZVR5cGVGcm9tV0FJVHlwZSk6CiogYWNjZXNzaWJp
bGl0eS9ndGsvQVhPYmplY3RDYWNoZUF0ay5jcHA6CihBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZv
cm1Ob3RpZmljYXRpb24pOgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAyNyArKysKIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQVhP
YmplY3RDYWNoZUF0ay5jcHAgICAgIHwgICAgNCArCiAuLi4vZ3RrL0FjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyQXRrLmNwcCAgICAgICAgICB8ICAxODIgKysrKysrKysrKysrKysrKysrKy0KIDMg
ZmlsZXMgY2hhbmdlZCwgMjA5IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlZGNmNmQw
Li5lZWNkNzI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDA5LTEwLTI2ICBKb2FubWFyaWUgRGlnZ3MgIDxq
b2FubWFyaWUuZGlnZ3NAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNTY3OQorICAgICAgICBbR3RrXSBJbXByb3ZlIGFjY2Vzc2liaWxpdHkgb2YgZm9jdXNhYmxl
IGxpc3RzCisKKyAgICAgICAgRml4ZXMgdGhlIGlzc3VlcyB3aXRoIHRoZSBBdGsgc3RhdGVzIGV4
cG9zZWQgZm9yIExpc3RCb3hPcHRpb247CisgICAgICAgIGFsc28gaW1wbGVtZW50cyB0aGUgQXRr
U2VsZWN0aW9uIGludGVyZmFjZSBhbmQgZW5hYmxlcyB0aGUKKyAgICAgICAgY29ycmVzcG9uZGlu
ZyAoYW5kIGV4cGVjdGVkKSBvYmplY3Q6c2VsZWN0aW9uLWNoYW5nZWQgZXZlbnQuCisKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6
CisgICAgICAgIChzZXRBdGtTdGF0ZVNldEZyb21Db3JlT2JqZWN0KToKKyAgICAgICAgKG9wdGlv
bkZyb21MaXN0KToKKyAgICAgICAgKG9wdGlvbkZyb21TZWxlY3Rpb24pOgorICAgICAgICAoYXRr
X3NlbGVjdGlvbl9pbnRlcmZhY2VfaW5pdCk6CisgICAgICAgICh3ZWJraXRfYWNjZXNzaWJsZV9z
ZWxlY3Rpb25fYWRkX3NlbGVjdGlvbik6CisgICAgICAgICh3ZWJraXRfYWNjZXNzaWJsZV9zZWxl
Y3Rpb25fY2xlYXJfc2VsZWN0aW9uKToKKyAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX3NlbGVj
dGlvbl9yZWZfc2VsZWN0aW9uKToKKyAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX3NlbGVjdGlv
bl9nZXRfc2VsZWN0aW9uX2NvdW50KToKKyAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX3NlbGVj
dGlvbl9pc19jaGlsZF9zZWxlY3RlZCk6CisgICAgICAgICh3ZWJraXRfYWNjZXNzaWJsZV9zZWxl
Y3Rpb25fcmVtb3ZlX3NlbGVjdGlvbik6CisgICAgICAgICh3ZWJraXRfYWNjZXNzaWJsZV9zZWxl
Y3Rpb25fc2VsZWN0X2FsbF9zZWxlY3Rpb24pOgorICAgICAgICAoR2V0QXRrSW50ZXJmYWNlVHlw
ZUZyb21XQUlUeXBlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2d0ay9BWE9iamVjdENhY2hl
QXRrLmNwcDoKKyAgICAgICAgKEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlv
bik6CisKIDIwMDktMTAtMjQgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2d0ay9BWE9iamVjdENhY2hlQXRrLmNwcCBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9n
dGsvQVhPYmplY3RDYWNoZUF0ay5jcHAKaW5kZXggY2M1MTVhZC4uYzMwYjAwNiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BWE9iamVjdENhY2hlQXRrLmNwcAorKysgYi9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCkBAIC00Myw2ICs0
MywxMCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBBWAogICAgICAgICBpZiAoIWNvcmVPYmplY3Qt
PmlzQ2hlY2tib3hPclJhZGlvKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGdfc2ln
bmFsX2VtaXRfYnlfbmFtZShjb3JlT2JqZWN0LT53cmFwcGVyKCksICJzdGF0ZS1jaGFuZ2UiLCAi
Y2hlY2tlZCIsIGNvcmVPYmplY3QtPmlzQ2hlY2tlZCgpKTsKKyAgICB9IGVsc2UgaWYgKG5vdGlm
aWNhdGlvbiA9PSBBWFNlbGVjdGVkQ2hpbGRyZW5DaGFuZ2VkKSB7CisgICAgICAgIGlmICghY29y
ZU9iamVjdC0+aXNMaXN0Qm94KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGdfc2ln
bmFsX2VtaXRfYnlfbmFtZShjb3JlT2JqZWN0LT53cmFwcGVyKCksICJzZWxlY3Rpb24tY2hhbmdl
ZCIpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9B
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
Z3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcAppbmRleCBmMGQ5YmZlLi40Y2U1
NjdkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQXRrLmNwcAorKysgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcApAQCAtMzUsNiArMzUsNyBAQAogCiAjaW5jbHVk
ZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlMaXN0Qm94LmgiCisj
aW5jbHVkZSAiQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaCIKICNpbmNsdWRlICJBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCiAjaW5jbHVk
ZSAiQ1N0cmluZy5oIgpAQCAtMTAwLDYgKzEwMSwxMSBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9i
amVjdCogY29yZShBdGtBY3Rpb24qIGFjdGlvbikKICAgICByZXR1cm4gY29yZShBVEtfT0JKRUNU
KGFjdGlvbikpOwogfQogCitzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZShBdGtTZWxl
Y3Rpb24qIHNlbGVjdGlvbikKK3sKKyAgICByZXR1cm4gY29yZShBVEtfT0JKRUNUKHNlbGVjdGlv
bikpOworfQorCiBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZShBdGtUZXh0KiB0ZXh0
KQogewogICAgIHJldHVybiBjb3JlKEFUS19PQkpFQ1QodGV4dCkpOwpAQCAtMzcwLDE1ICszNzYs
MjAgQEAgc3RhdGljIEF0a1JvbGUgd2Via2l0X2FjY2Vzc2libGVfZ2V0X3JvbGUoQXRrT2JqZWN0
KiBvYmplY3QpCiAKIHN0YXRpYyB2b2lkIHNldEF0a1N0YXRlU2V0RnJvbUNvcmVPYmplY3QoQWNj
ZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgQXRrU3RhdGVTZXQqIHN0YXRlU2V0KQogewot
ICAgIC8vIFBsZWFzZSBrZWVwIHRoZSBzdGF0ZSBsaXN0IGluIGFscGhhYmV0aWNhbCBvcmRlcgor
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IGNvcmVPYmplY3QtPnBhcmVudE9iamVj
dCgpOworICAgIGJvb2wgaXNMaXN0Qm94T3B0aW9uID0gcGFyZW50ICYmIHBhcmVudC0+aXNMaXN0
Qm94KCk7CisgICAgaWYgKGlzTGlzdEJveE9wdGlvbikKKyAgICAgICAgY29yZU9iamVjdCA9IHN0
YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uKj4oY29yZU9iamVjdCk7CiAKKyAg
ICAvLyBQbGVhc2Uga2VlcCB0aGUgc3RhdGUgbGlzdCBpbiBhbHBoYWJldGljYWwgb3JkZXIKICAg
ICBpZiAoY29yZU9iamVjdC0+aXNDaGVja2VkKCkpCiAgICAgICAgIGF0a19zdGF0ZV9zZXRfYWRk
X3N0YXRlKHN0YXRlU2V0LCBBVEtfU1RBVEVfQ0hFQ0tFRCk7CiAKICAgICAvLyBGSVhNRTogaXNS
ZWFkT25seSBkb2VzIG5vdCBzZWVtIHRvIGRvIHRoZSByaWdodCB0aGluZyBmb3IKICAgICAvLyBj
b250cm9scywgc28gY2hlY2sgZXhwbGljaXRseSBmb3IgdGhlbQotICAgIGlmICghY29yZU9iamVj
dC0+aXNSZWFkT25seSgpIHx8Ci0gICAgICAgIChjb3JlT2JqZWN0LT5pc0NvbnRyb2woKSAmJiBj
b3JlT2JqZWN0LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpKSkKKyAgICBpZiAoKCFjb3JlT2JqZWN0
LT5pc1JlYWRPbmx5KCkgfHwKKyAgICAgICAgKGNvcmVPYmplY3QtPmlzQ29udHJvbCgpICYmIGNv
cmVPYmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkpKSAmJgorICAgICAgICAhaXNMaXN0Qm94
T3B0aW9uKQogICAgICAgICBhdGtfc3RhdGVfc2V0X2FkZF9zdGF0ZShzdGF0ZVNldCwgQVRLX1NU
QVRFX0VESVRBQkxFKTsKIAogICAgIC8vIEZJWE1FOiBQdXQgYm90aCBFTkFCTEVEIGFuZCBTRU5T
SVRJVkUgdG9nZXRoZXIgaGVyZSBmb3Igbm93CkBAIC00MDgsOCArNDE5LDIzIEBAIHN0YXRpYyB2
b2lkIHNldEF0a1N0YXRlU2V0RnJvbUNvcmVPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29y
ZU9iamVjdCwgQXRrU3RhCiAKICAgICAvLyBUT0RPOiBBVEtfU1RBVEVfU0VMRUNUQUJMRV9URVhU
CiAKLSAgICBpZiAoY29yZU9iamVjdC0+aXNTZWxlY3RlZCgpKQorICAgIGlmIChjb3JlT2JqZWN0
LT5jYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgpKSB7CisgICAgICAgIGF0a19zdGF0ZV9zZXRfYWRk
X3N0YXRlKHN0YXRlU2V0LCBBVEtfU1RBVEVfU0VMRUNUQUJMRSk7CisgICAgICAgIC8vIEl0ZW1z
IGluIGZvY3VzYWJsZSBsaXN0cyBpbiBHdGsgaGF2ZSBib3RoIFNUQVRFX1NFTEVDVHtBQkxFLEVE
fQorICAgICAgICAvLyBhbmQgU1RBVEVfRk9DVVN7QUJMRSxFRH0uIFdlJ2xsIGZha2UgdGhlIGxh
dHRlciBiYXNlZCBvbiB0aGUKKyAgICAgICAgLy8gZm9ybWVyLgorICAgICAgICBpZiAoaXNMaXN0
Qm94T3B0aW9uKQorICAgICAgICAgICAgYXRrX3N0YXRlX3NldF9hZGRfc3RhdGUoc3RhdGVTZXQs
IEFUS19TVEFURV9GT0NVU0FCTEUpOworICAgIH0KKworICAgIGlmIChjb3JlT2JqZWN0LT5pc1Nl
bGVjdGVkKCkpIHsKICAgICAgICAgYXRrX3N0YXRlX3NldF9hZGRfc3RhdGUoc3RhdGVTZXQsIEFU
S19TVEFURV9TRUxFQ1RFRCk7CisgICAgICAgIC8vIEl0ZW1zIGluIGZvY3VzYWJsZSBsaXN0cyBp
biBHdGsgaGF2ZSBib3RoIFNUQVRFX1NFTEVDVHtBQkxFLEVEfQorICAgICAgICAvLyBhbmQgU1RB
VEVfRk9DVVN7QUJMRSxFRH0uIFdlJ2xsIGZha2UgdGhlIGxhdHRlciBiYXNlZCBvbiB0aGUKKyAg
ICAgICAgLy8gZm9ybWVyLgorICAgICAgICBpZiAoaXNMaXN0Qm94T3B0aW9uKQorICAgICAgICAg
ICAgYXRrX3N0YXRlX3NldF9hZGRfc3RhdGUoc3RhdGVTZXQsIEFUS19TVEFURV9GT0NVU0VEKTsK
KyAgICB9CiAKICAgICAvLyBGSVhNRTogR3JvdXAgYm90aCBTSE9XSU5HIGFuZCBWSVNJQkxFIGhl
cmUgZm9yIG5vdwogICAgIC8vIE5vdCBzdXJlIGhvdyB0byBoYW5kbGUgdGhpcyBpbiBXZWJLaXQs
IHNlZSBidWcKQEAgLTU2NCw2ICs1OTAsMTQ1IEBAIHN0YXRpYyB2b2lkIGF0a19hY3Rpb25faW50
ZXJmYWNlX2luaXQoQXRrQWN0aW9uSWZhY2UqIGlmYWNlKQogICAgIGlmYWNlLT5nZXRfbmFtZSA9
IHdlYmtpdF9hY2Nlc3NpYmxlX2FjdGlvbl9nZXRfbmFtZTsKIH0KIAorLy8gU2VsZWN0aW9uIChm
b3IgY29udHJvbHMpCisKK3N0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvcHRpb25Gcm9tTGlz
dChBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbiwgZ2ludCBpKQoreworICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGNvcmVTZWxlY3Rpb24gPSBjb3JlKHNlbGVjdGlvbik7CisgICAgaWYgKCFjb3JlU2Vs
ZWN0aW9uIHx8IGkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBvcHRpb25zID0gY29y
ZShzZWxlY3Rpb24pLT5jaGlsZHJlbigpOworICAgIGlmIChpIDwgc3RhdGljX2Nhc3Q8Z2ludD4o
b3B0aW9ucy5zaXplKCkpKQorICAgICAgICByZXR1cm4gb3B0aW9ucy5hdChpKS5nZXQoKTsKKwor
ICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogb3B0aW9u
RnJvbVNlbGVjdGlvbihBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbiwgZ2ludCBpKQoreworICAgIC8v
IGkgaXMgdGhlIGl0aCBzZWxlY3Rpb24gYXMgb3Bwb3NlZCB0byB0aGUgaXRoIGNoaWxkLgorCisg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZVNlbGVjdGlvbiA9IGNvcmUoc2VsZWN0aW9uKTsK
KyAgICBpZiAoIWNvcmVTZWxlY3Rpb24gfHwgaSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwor
CisgICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yIHNlbGVjdGVkSXRlbXM7CisgICAgaWYgKGNvcmVTZWxlY3Rpb24tPmlzTGlzdEJveCgpKQor
ICAgICAgICBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5TGlzdEJveCo+KGNvcmVTZWxlY3Rpb24p
LT5zZWxlY3RlZENoaWxkcmVuKHNlbGVjdGVkSXRlbXMpOworCisgICAgLy8gVE9ETzogQ29tYm8g
Ym94ZXMKKworICAgIGlmIChpIDwgc3RhdGljX2Nhc3Q8Z2ludD4oc2VsZWN0ZWRJdGVtcy5zaXpl
KCkpKQorICAgICAgICByZXR1cm4gc2VsZWN0ZWRJdGVtcy5hdChpKS5nZXQoKTsKKworICAgIHJl
dHVybiBOVUxMOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2FjY2Vzc2libGVfc2VsZWN0
aW9uX2FkZF9zZWxlY3Rpb24oQXRrU2VsZWN0aW9uKiBzZWxlY3Rpb24sIGdpbnQgaSkKK3sKKyAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvcHRpb24gPSBvcHRpb25Gcm9tTGlzdChzZWxlY3Rpb24s
IGkpOworICAgIGlmIChvcHRpb24gJiYgY29yZShzZWxlY3Rpb24pLT5pc0xpc3RCb3goKSkgewor
ICAgICAgICBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbiogbGlzdEJveE9wdGlvbiA9IHN0YXRp
Y19jYXN0PEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uKj4ob3B0aW9uKTsKKyAgICAgICAgbGlz
dEJveE9wdGlvbi0+c2V0U2VsZWN0ZWQodHJ1ZSk7CisgICAgICAgIHJldHVybiBsaXN0Qm94T3B0
aW9uLT5pc1NlbGVjdGVkKCk7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0
aWMgZ2Jvb2xlYW4gd2Via2l0X2FjY2Vzc2libGVfc2VsZWN0aW9uX2NsZWFyX3NlbGVjdGlvbihB
dGtTZWxlY3Rpb24qIHNlbGVjdGlvbikKK3sKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3Jl
U2VsZWN0aW9uID0gY29yZShzZWxlY3Rpb24pOworICAgIGlmICghY29yZVNlbGVjdGlvbikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6QWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVkSXRlbXM7CisgICAgaWYgKGNvcmVTZWxl
Y3Rpb24tPmlzTGlzdEJveCgpKSB7CisgICAgICAgIC8vIFNldCB0aGUgbGlzdCBvZiBzZWxlY3Rl
ZCBpdGVtcyB0byBhbiBlbXB0eSBsaXN0OyB0aGVuIHZlcmlmeSB0aGF0IGl0IHdvcmtlZC4KKyAg
ICAgICAgQWNjZXNzaWJpbGl0eUxpc3RCb3gqIGxpc3RCb3ggPSBzdGF0aWNfY2FzdDxBY2Nlc3Np
YmlsaXR5TGlzdEJveCo+KGNvcmVTZWxlY3Rpb24pOworICAgICAgICBsaXN0Qm94LT5zZXRTZWxl
Y3RlZENoaWxkcmVuKHNlbGVjdGVkSXRlbXMpOworICAgICAgICBsaXN0Qm94LT5zZWxlY3RlZENo
aWxkcmVuKHNlbGVjdGVkSXRlbXMpOworICAgICAgICByZXR1cm4gc2VsZWN0ZWRJdGVtcy5zaXpl
KCkgPT0gMDsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgQXRrT2JqZWN0
KiB3ZWJraXRfYWNjZXNzaWJsZV9zZWxlY3Rpb25fcmVmX3NlbGVjdGlvbihBdGtTZWxlY3Rpb24q
IHNlbGVjdGlvbiwgZ2ludCBpKQoreworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9wdGlvbiA9
IG9wdGlvbkZyb21TZWxlY3Rpb24oc2VsZWN0aW9uLCBpKTsKKyAgICBpZiAob3B0aW9uKSB7Cisg
ICAgICAgIEF0a09iamVjdCogY2hpbGQgPSBvcHRpb24tPndyYXBwZXIoKTsKKyAgICAgICAgZ19v
YmplY3RfcmVmKGNoaWxkKTsKKyAgICAgICAgcmV0dXJuIGNoaWxkOworICAgIH0KKworICAgIHJl
dHVybiBOVUxMOworfQorCitzdGF0aWMgZ2ludCB3ZWJraXRfYWNjZXNzaWJsZV9zZWxlY3Rpb25f
Z2V0X3NlbGVjdGlvbl9jb3VudChBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbikKK3sKKyAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBjb3JlU2VsZWN0aW9uID0gY29yZShzZWxlY3Rpb24pOworICAgIGlm
IChjb3JlU2VsZWN0aW9uICYmIGNvcmVTZWxlY3Rpb24tPmlzTGlzdEJveCgpKSB7CisgICAgICAg
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBz
ZWxlY3RlZEl0ZW1zOworICAgICAgICBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5TGlzdEJveCo+
KGNvcmVTZWxlY3Rpb24pLT5zZWxlY3RlZENoaWxkcmVuKHNlbGVjdGVkSXRlbXMpOworICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Z2ludD4oc2VsZWN0ZWRJdGVtcy5zaXplKCkpOworICAgIH0K
KworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2FjY2Vzc2libGVf
c2VsZWN0aW9uX2lzX2NoaWxkX3NlbGVjdGVkKEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uLCBnaW50
IGkpCit7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb3B0aW9uID0gb3B0aW9uRnJvbUxpc3Qo
c2VsZWN0aW9uLCBpKTsKKyAgICBpZiAob3B0aW9uICYmIGNvcmUoc2VsZWN0aW9uKS0+aXNMaXN0
Qm94KCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5TGlzdEJveE9w
dGlvbio+KG9wdGlvbiktPmlzU2VsZWN0ZWQoKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwor
c3RhdGljIGdib29sZWFuIHdlYmtpdF9hY2Nlc3NpYmxlX3NlbGVjdGlvbl9yZW1vdmVfc2VsZWN0
aW9uKEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uLCBnaW50IGkpCit7CisgICAgLy8gVE9ETzogVGhp
cyBpcyBvbmx5IGdldHRpbmcgY2FsbGVkIGlmIGkgPT0gMC4gV2hhdCBpcyBwcmV2ZW50aW5nIHRo
ZSByZXN0PworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9wdGlvbiA9IG9wdGlvbkZyb21TZWxl
Y3Rpb24oc2VsZWN0aW9uLCBpKTsKKyAgICBpZiAob3B0aW9uICYmIGNvcmUoc2VsZWN0aW9uKS0+
aXNMaXN0Qm94KCkpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24qIGxpc3RC
b3hPcHRpb24gPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbio+KG9wdGlv
bik7CisgICAgICAgIGxpc3RCb3hPcHRpb24tPnNldFNlbGVjdGVkKGZhbHNlKTsKKyAgICAgICAg
cmV0dXJuICFsaXN0Qm94T3B0aW9uLT5pc1NlbGVjdGVkKCk7CisgICAgfQorCisgICAgcmV0dXJu
IGZhbHNlOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2FjY2Vzc2libGVfc2VsZWN0aW9u
X3NlbGVjdF9hbGxfc2VsZWN0aW9uKEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uKQoreworICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGNvcmVTZWxlY3Rpb24gPSBjb3JlKHNlbGVjdGlvbik7CisgICAg
aWYgKCFjb3JlU2VsZWN0aW9uIHx8ICFjb3JlU2VsZWN0aW9uLT5pc011bHRpU2VsZWN0KCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OkFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbiA9IGNvcmVTZWxlY3Rpb24tPmNoaWxk
cmVuKCk7CisgICAgaWYgKGNvcmVTZWxlY3Rpb24tPmlzTGlzdEJveCgpKSB7CisgICAgICAgIEFj
Y2Vzc2liaWxpdHlMaXN0Qm94KiBsaXN0Qm94ID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eUxp
c3RCb3gqPihjb3JlU2VsZWN0aW9uKTsKKyAgICAgICAgbGlzdEJveC0+c2V0U2VsZWN0ZWRDaGls
ZHJlbihjaGlsZHJlbik7CisgICAgICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZEl0ZW1zOworICAgICAgICBsaXN0Qm94LT5z
ZWxlY3RlZENoaWxkcmVuKHNlbGVjdGVkSXRlbXMpOworICAgICAgICByZXR1cm4gc2VsZWN0ZWRJ
dGVtcy5zaXplKCkgPT0gY2hpbGRyZW4uc2l6ZSgpOworICAgIH0KKworICAgIHJldHVybiBmYWxz
ZTsKK30KKworc3RhdGljIHZvaWQgYXRrX3NlbGVjdGlvbl9pbnRlcmZhY2VfaW5pdChBdGtTZWxl
Y3Rpb25JZmFjZSogaWZhY2UpCit7CisgICAgaWZhY2UtPmFkZF9zZWxlY3Rpb24gPSB3ZWJraXRf
YWNjZXNzaWJsZV9zZWxlY3Rpb25fYWRkX3NlbGVjdGlvbjsKKyAgICBpZmFjZS0+Y2xlYXJfc2Vs
ZWN0aW9uID0gd2Via2l0X2FjY2Vzc2libGVfc2VsZWN0aW9uX2NsZWFyX3NlbGVjdGlvbjsKKyAg
ICBpZmFjZS0+cmVmX3NlbGVjdGlvbiA9IHdlYmtpdF9hY2Nlc3NpYmxlX3NlbGVjdGlvbl9yZWZf
c2VsZWN0aW9uOworICAgIGlmYWNlLT5nZXRfc2VsZWN0aW9uX2NvdW50ID0gd2Via2l0X2FjY2Vz
c2libGVfc2VsZWN0aW9uX2dldF9zZWxlY3Rpb25fY291bnQ7CisgICAgaWZhY2UtPmlzX2NoaWxk
X3NlbGVjdGVkID0gd2Via2l0X2FjY2Vzc2libGVfc2VsZWN0aW9uX2lzX2NoaWxkX3NlbGVjdGVk
OworICAgIGlmYWNlLT5yZW1vdmVfc2VsZWN0aW9uID0gd2Via2l0X2FjY2Vzc2libGVfc2VsZWN0
aW9uX3JlbW92ZV9zZWxlY3Rpb247CisgICAgaWZhY2UtPnNlbGVjdF9hbGxfc2VsZWN0aW9uID0g
d2Via2l0X2FjY2Vzc2libGVfc2VsZWN0aW9uX3NlbGVjdF9hbGxfc2VsZWN0aW9uOworfQorCiAv
LyBUZXh0CiAKIHN0YXRpYyBnY2hhciogd2Via2l0X2FjY2Vzc2libGVfdGV4dF9nZXRfdGV4dChB
dGtUZXh0KiB0ZXh0LCBnaW50IHN0YXJ0T2Zmc2V0LCBnaW50IGVuZE9mZnNldCkKQEAgLTEwMjgs
NiArMTE5Myw4IEBAIHN0YXRpYyB2b2lkIGF0a19pbWFnZV9pbnRlcmZhY2VfaW5pdChBdGtJbWFn
ZUlmYWNlKiBpZmFjZSkKIHN0YXRpYyBjb25zdCBHSW50ZXJmYWNlSW5mbyBBdGtJbnRlcmZhY2Vz
SW5pdEZ1bmN0aW9uc1tdID0gewogICAgIHsoR0ludGVyZmFjZUluaXRGdW5jKWF0a19hY3Rpb25f
aW50ZXJmYWNlX2luaXQsCiAgICAgIChHSW50ZXJmYWNlRmluYWxpemVGdW5jKSBOVUxMLCBOVUxM
fSwKKyAgICB7KEdJbnRlcmZhY2VJbml0RnVuYylhdGtfc2VsZWN0aW9uX2ludGVyZmFjZV9pbml0
LAorICAgICAoR0ludGVyZmFjZUZpbmFsaXplRnVuYykgTlVMTCwgTlVMTH0sCiAgICAgeyhHSW50
ZXJmYWNlSW5pdEZ1bmMpYXRrX2VkaXRhYmxlX3RleHRfaW50ZXJmYWNlX2luaXQsCiAgICAgIChH
SW50ZXJmYWNlRmluYWxpemVGdW5jKSBOVUxMLCBOVUxMfSwKICAgICB7KEdJbnRlcmZhY2VJbml0
RnVuYylhdGtfdGV4dF9pbnRlcmZhY2VfaW5pdCwKQEAgLTEwNDAsNiArMTIwNyw3IEBAIHN0YXRp
YyBjb25zdCBHSW50ZXJmYWNlSW5mbyBBdGtJbnRlcmZhY2VzSW5pdEZ1bmN0aW9uc1tdID0gewog
CiBlbnVtIFdBSVR5cGUgewogICAgIFdBSV9BQ1RJT04sCisgICAgV0FJX1NFTEVDVElPTiwKICAg
ICBXQUlfRURJVEFCTEVfVEVYVCwKICAgICBXQUlfVEVYVCwKICAgICBXQUlfQ09NUE9ORU5ULApA
QCAtMTA1MSw2ICsxMjE5LDggQEAgc3RhdGljIEdUeXBlIEdldEF0a0ludGVyZmFjZVR5cGVGcm9t
V0FJVHlwZShXQUlUeXBlIHR5cGUpCiAgIHN3aXRjaCAodHlwZSkgewogICBjYXNlIFdBSV9BQ1RJ
T046CiAgICAgICByZXR1cm4gQVRLX1RZUEVfQUNUSU9OOworICBjYXNlIFdBSV9TRUxFQ1RJT046
CisgICAgICByZXR1cm4gQVRLX1RZUEVfU0VMRUNUSU9OOwogICBjYXNlIFdBSV9FRElUQUJMRV9U
RVhUOgogICAgICAgcmV0dXJuIEFUS19UWVBFX0VESVRBQkxFX1RFWFQ7CiAgIGNhc2UgV0FJX1RF
WFQ6CkBAIC0xMDc1LDYgKzEyNDUsMTAgQEAgc3RhdGljIGd1aW50MTYgZ2V0SW50ZXJmYWNlTWFz
a0Zyb21PYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCkKICAgICBpZiAoIWNv
cmVPYmplY3QtPmFjdGlvblZlcmIoKS5pc0VtcHR5KCkpCiAgICAgICAgIGludGVyZmFjZU1hc2sg
fD0gMSA8PCBXQUlfQUNUSU9OOwogCisgICAgLy8gU2VsZWN0aW9uCisgICAgaWYgKGNvcmVPYmpl
Y3QtPmlzTGlzdEJveCgpKQorICAgICAgICBpbnRlcmZhY2VNYXNrIHw9IDEgPDwgV0FJX1NFTEVD
VElPTjsKKwogICAgIC8vIFRleHQgJiBFZGl0YWJsZSBUZXh0CiAgICAgQWNjZXNzaWJpbGl0eVJv
bGUgcm9sZSA9IGNvcmVPYmplY3QtPnJvbGVWYWx1ZSgpOwogCi0tIAoxLjYuMy4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41852</attachid>
            <date>2009-10-26 00:40:25 -0700</date>
            <delta_ts>2009-10-26 03:15:24 -0700</delta_ts>
            <desc>Just selection</desc>
            <filename>25679-selection-only-1.patch</filename>
            <type>text/plain</type>
            <size>10552</size>
            <attacher name="Joanmarie Diggs">jdiggs</attacher>
            
              <data encoding="base64">RnJvbSBiMTU3Njg4OTQ1ZTNiM2E4NDQ3OTk3OTdiMTk3MjliMTZlZGQwYzNhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2FubWFyaWUgRGlnZ3MgPGpvYW5tYXJpZS5kaWdnc0BnbWFp
bC5jb20+CkRhdGU6IE1vbiwgMjYgT2N0IDIwMDkgMDM6MzQ6MDAgLTA0MDAKU3ViamVjdDogW1BB
VENIXSBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCmh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNTY3OQpbR3RrXSBJbXByb3ZlIGFjY2Vzc2liaWxpdHkgb2YgZm9j
dXNhYmxlIGxpc3RzCgpJbXBsZW1lbnRzIHRoZSBBdGtTZWxlY3Rpb24gaW50ZXJmYWNlIGFuZCBl
bmFibGVzIHRoZQpjb3JyZXNwb25kaW5nIChhbmQgZXhwZWN0ZWQpIG9iamVjdDpzZWxlY3Rpb24t
Y2hhbmdlZCBldmVudC4KCiogYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJBdGsuY3BwOgoob3B0aW9uRnJvbUxpc3QpOgoob3B0aW9uRnJvbVNlbGVjdGlvbik6Cihh
dGtfc2VsZWN0aW9uX2ludGVyZmFjZV9pbml0KToKKHdlYmtpdF9hY2Nlc3NpYmxlX3NlbGVjdGlv
bl9hZGRfc2VsZWN0aW9uKToKKHdlYmtpdF9hY2Nlc3NpYmxlX3NlbGVjdGlvbl9jbGVhcl9zZWxl
Y3Rpb24pOgood2Via2l0X2FjY2Vzc2libGVfc2VsZWN0aW9uX3JlZl9zZWxlY3Rpb24pOgood2Vi
a2l0X2FjY2Vzc2libGVfc2VsZWN0aW9uX2dldF9zZWxlY3Rpb25fY291bnQpOgood2Via2l0X2Fj
Y2Vzc2libGVfc2VsZWN0aW9uX2lzX2NoaWxkX3NlbGVjdGVkKToKKHdlYmtpdF9hY2Nlc3NpYmxl
X3NlbGVjdGlvbl9yZW1vdmVfc2VsZWN0aW9uKToKKHdlYmtpdF9hY2Nlc3NpYmxlX3NlbGVjdGlv
bl9zZWxlY3RfYWxsX3NlbGVjdGlvbik6CihHZXRBdGtJbnRlcmZhY2VUeXBlRnJvbVdBSVR5cGUp
OgoqIGFjY2Vzc2liaWxpdHkvZ3RrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwOgooQVhPYmplY3RDYWNo
ZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKToKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjUgKysrKwogV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2d0ay9BWE9iamVjdENhY2hlQXRrLmNwcCAgICAgfCAgICA0ICsKIC4uLi9ndGsvQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwICAgICAgICAgIHwgIDE0OSArKysrKysrKysr
KysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxNzggaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlv
bnMoLSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGVkY2Y2ZDAuLjE5ZjgzN2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMDktMTAtMjYgIEpvYW5t
YXJpZSBEaWdncyAgPGpvYW5tYXJpZS5kaWdnc0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI1Njc5CisgICAgICAgIFtHdGtdIEltcHJvdmUgYWNjZXNzaWJpbGl0
eSBvZiBmb2N1c2FibGUgbGlzdHMKKworICAgICAgICBJbXBsZW1lbnRzIHRoZSBBdGtTZWxlY3Rp
b24gaW50ZXJmYWNlIGFuZCBlbmFibGVzIHRoZQorICAgICAgICBjb3JyZXNwb25kaW5nIChhbmQg
ZXhwZWN0ZWQpIG9iamVjdDpzZWxlY3Rpb24tY2hhbmdlZCBldmVudC4KKworICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcDoKKyAgICAg
ICAgKG9wdGlvbkZyb21MaXN0KToKKyAgICAgICAgKG9wdGlvbkZyb21TZWxlY3Rpb24pOgorICAg
ICAgICAoYXRrX3NlbGVjdGlvbl9pbnRlcmZhY2VfaW5pdCk6CisgICAgICAgICh3ZWJraXRfYWNj
ZXNzaWJsZV9zZWxlY3Rpb25fYWRkX3NlbGVjdGlvbik6CisgICAgICAgICh3ZWJraXRfYWNjZXNz
aWJsZV9zZWxlY3Rpb25fY2xlYXJfc2VsZWN0aW9uKToKKyAgICAgICAgKHdlYmtpdF9hY2Nlc3Np
YmxlX3NlbGVjdGlvbl9yZWZfc2VsZWN0aW9uKToKKyAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxl
X3NlbGVjdGlvbl9nZXRfc2VsZWN0aW9uX2NvdW50KToKKyAgICAgICAgKHdlYmtpdF9hY2Nlc3Np
YmxlX3NlbGVjdGlvbl9pc19jaGlsZF9zZWxlY3RlZCk6CisgICAgICAgICh3ZWJraXRfYWNjZXNz
aWJsZV9zZWxlY3Rpb25fcmVtb3ZlX3NlbGVjdGlvbik6CisgICAgICAgICh3ZWJraXRfYWNjZXNz
aWJsZV9zZWxlY3Rpb25fc2VsZWN0X2FsbF9zZWxlY3Rpb24pOgorICAgICAgICAoR2V0QXRrSW50
ZXJmYWNlVHlwZUZyb21XQUlUeXBlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2d0ay9BWE9i
amVjdENhY2hlQXRrLmNwcDoKKyAgICAgICAgKEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5v
dGlmaWNhdGlvbik6CisKIDIwMDktMTAtMjQgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2d0ay9BWE9iamVjdENhY2hlQXRrLmNwcCBiL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9ndGsvQVhPYmplY3RDYWNoZUF0ay5jcHAKaW5kZXggY2M1MTVhZC4uYzMwYjAwNiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BWE9iamVjdENhY2hlQXRrLmNw
cAorKysgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCkBA
IC00Myw2ICs0MywxMCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNh
dGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBBWAogICAgICAgICBpZiAoIWNv
cmVPYmplY3QtPmlzQ2hlY2tib3hPclJhZGlvKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShjb3JlT2JqZWN0LT53cmFwcGVyKCksICJzdGF0ZS1j
aGFuZ2UiLCAiY2hlY2tlZCIsIGNvcmVPYmplY3QtPmlzQ2hlY2tlZCgpKTsKKyAgICB9IGVsc2Ug
aWYgKG5vdGlmaWNhdGlvbiA9PSBBWFNlbGVjdGVkQ2hpbGRyZW5DaGFuZ2VkKSB7CisgICAgICAg
IGlmICghY29yZU9iamVjdC0+aXNMaXN0Qm94KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShjb3JlT2JqZWN0LT53cmFwcGVyKCksICJzZWxlY3Rp
b24tY2hhbmdlZCIpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAgYi9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcAppbmRleCBmMGQ5
YmZlLi43MmNmNTI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcAorKysgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
Z3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcApAQCAtMzUsNiArMzUsNyBAQAog
CiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlMaXN0
Qm94LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaCIKICNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgi
CiAjaW5jbHVkZSAiQ1N0cmluZy5oIgpAQCAtNTY0LDYgKzU2NSwxNDUgQEAgc3RhdGljIHZvaWQg
YXRrX2FjdGlvbl9pbnRlcmZhY2VfaW5pdChBdGtBY3Rpb25JZmFjZSogaWZhY2UpCiAgICAgaWZh
Y2UtPmdldF9uYW1lID0gd2Via2l0X2FjY2Vzc2libGVfYWN0aW9uX2dldF9uYW1lOwogfQogCisv
LyBTZWxlY3Rpb24gKGZvciBjb250cm9scykKKworc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG9wdGlvbkZyb21MaXN0KEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uLCBnaW50IGkpCit7CisgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogY29yZVNlbGVjdGlvbiA9IGNvcmUoc2VsZWN0aW9uKTsKKyAg
ICBpZiAoIWNvcmVTZWxlY3Rpb24gfHwgaSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCisg
ICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IG9wdGlvbnMgPSBjb3JlKHNlbGVjdGlvbiktPmNoaWxkcmVuKCk7CisgICAgaWYgKGkgPCBzdGF0
aWNfY2FzdDxnaW50PihvcHRpb25zLnNpemUoKSkpCisgICAgICAgIHJldHVybiBvcHRpb25zLmF0
KGkpLmdldCgpOworCisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBvcHRpb25Gcm9tU2VsZWN0aW9uKEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uLCBnaW50
IGkpCit7CisgICAgLy8gaSBpcyB0aGUgaXRoIHNlbGVjdGlvbiBhcyBvcHBvc2VkIHRvIHRoZSBp
dGggY2hpbGQuCisKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlU2VsZWN0aW9uID0gY29y
ZShzZWxlY3Rpb24pOworICAgIGlmICghY29yZVNlbGVjdGlvbiB8fCBpIDwgMCkKKyAgICAgICAg
cmV0dXJuIE5VTEw7CisKKyAgICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRJdGVtczsKKyAgICBpZiAoY29yZVNlbGVjdGlvbi0+
aXNMaXN0Qm94KCkpCisgICAgICAgIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlMaXN0Qm94Kj4o
Y29yZVNlbGVjdGlvbiktPnNlbGVjdGVkQ2hpbGRyZW4oc2VsZWN0ZWRJdGVtcyk7CisKKyAgICAv
LyBUT0RPOiBDb21ibyBib3hlcworCisgICAgaWYgKGkgPCBzdGF0aWNfY2FzdDxnaW50PihzZWxl
Y3RlZEl0ZW1zLnNpemUoKSkpCisgICAgICAgIHJldHVybiBzZWxlY3RlZEl0ZW1zLmF0KGkpLmdl
dCgpOworCisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfYWNj
ZXNzaWJsZV9zZWxlY3Rpb25fYWRkX3NlbGVjdGlvbihBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbiwg
Z2ludCBpKQoreworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9wdGlvbiA9IG9wdGlvbkZyb21M
aXN0KHNlbGVjdGlvbiwgaSk7CisgICAgaWYgKG9wdGlvbiAmJiBjb3JlKHNlbGVjdGlvbiktPmlz
TGlzdEJveCgpKSB7CisgICAgICAgIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uKiBsaXN0Qm94
T3B0aW9uID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24qPihvcHRpb24p
OworICAgICAgICBsaXN0Qm94T3B0aW9uLT5zZXRTZWxlY3RlZCh0cnVlKTsKKyAgICAgICAgcmV0
dXJuIGxpc3RCb3hPcHRpb24tPmlzU2VsZWN0ZWQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfYWNjZXNzaWJsZV9zZWxlY3Rpb25fY2xl
YXJfc2VsZWN0aW9uKEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uKQoreworICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGNvcmVTZWxlY3Rpb24gPSBjb3JlKHNlbGVjdGlvbik7CisgICAgaWYgKCFjb3Jl
U2VsZWN0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRJdGVtczsKKyAg
ICBpZiAoY29yZVNlbGVjdGlvbi0+aXNMaXN0Qm94KCkpIHsKKyAgICAgICAgLy8gU2V0IHRoZSBs
aXN0IG9mIHNlbGVjdGVkIGl0ZW1zIHRvIGFuIGVtcHR5IGxpc3Q7IHRoZW4gdmVyaWZ5IHRoYXQg
aXQgd29ya2VkLgorICAgICAgICBBY2Nlc3NpYmlsaXR5TGlzdEJveCogbGlzdEJveCA9IHN0YXRp
Y19jYXN0PEFjY2Vzc2liaWxpdHlMaXN0Qm94Kj4oY29yZVNlbGVjdGlvbik7CisgICAgICAgIGxp
c3RCb3gtPnNldFNlbGVjdGVkQ2hpbGRyZW4oc2VsZWN0ZWRJdGVtcyk7CisgICAgICAgIGxpc3RC
b3gtPnNlbGVjdGVkQ2hpbGRyZW4oc2VsZWN0ZWRJdGVtcyk7CisgICAgICAgIHJldHVybiBzZWxl
Y3RlZEl0ZW1zLnNpemUoKSA9PSAwOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0
YXRpYyBBdGtPYmplY3QqIHdlYmtpdF9hY2Nlc3NpYmxlX3NlbGVjdGlvbl9yZWZfc2VsZWN0aW9u
KEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uLCBnaW50IGkpCit7CisgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogb3B0aW9uID0gb3B0aW9uRnJvbVNlbGVjdGlvbihzZWxlY3Rpb24sIGkpOworICAgIGlm
IChvcHRpb24pIHsKKyAgICAgICAgQXRrT2JqZWN0KiBjaGlsZCA9IG9wdGlvbi0+d3JhcHBlcigp
OworICAgICAgICBnX29iamVjdF9yZWYoY2hpbGQpOworICAgICAgICByZXR1cm4gY2hpbGQ7Cisg
ICAgfQorCisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBnaW50IHdlYmtpdF9hY2Nlc3Np
YmxlX3NlbGVjdGlvbl9nZXRfc2VsZWN0aW9uX2NvdW50KEF0a1NlbGVjdGlvbiogc2VsZWN0aW9u
KQoreworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVTZWxlY3Rpb24gPSBjb3JlKHNlbGVj
dGlvbik7CisgICAgaWYgKGNvcmVTZWxlY3Rpb24gJiYgY29yZVNlbGVjdGlvbi0+aXNMaXN0Qm94
KCkpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6QWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yIHNlbGVjdGVkSXRlbXM7CisgICAgICAgIHN0YXRpY19jYXN0PEFjY2Vzc2li
aWxpdHlMaXN0Qm94Kj4oY29yZVNlbGVjdGlvbiktPnNlbGVjdGVkQ2hpbGRyZW4oc2VsZWN0ZWRJ
dGVtcyk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxnaW50PihzZWxlY3RlZEl0ZW1zLnNp
emUoKSk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJr
aXRfYWNjZXNzaWJsZV9zZWxlY3Rpb25faXNfY2hpbGRfc2VsZWN0ZWQoQXRrU2VsZWN0aW9uKiBz
ZWxlY3Rpb24sIGdpbnQgaSkKK3sKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvcHRpb24gPSBv
cHRpb25Gcm9tTGlzdChzZWxlY3Rpb24sIGkpOworICAgIGlmIChvcHRpb24gJiYgY29yZShzZWxl
Y3Rpb24pLT5pc0xpc3RCb3goKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFjY2Vzc2li
aWxpdHlMaXN0Qm94T3B0aW9uKj4ob3B0aW9uKS0+aXNTZWxlY3RlZCgpOworCisgICAgcmV0dXJu
IGZhbHNlOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2FjY2Vzc2libGVfc2VsZWN0aW9u
X3JlbW92ZV9zZWxlY3Rpb24oQXRrU2VsZWN0aW9uKiBzZWxlY3Rpb24sIGdpbnQgaSkKK3sKKyAg
ICAvLyBUT0RPOiBUaGlzIGlzIG9ubHkgZ2V0dGluZyBjYWxsZWQgaWYgaSA9PSAwLiBXaGF0IGlz
IHByZXZlbnRpbmcgdGhlIHJlc3Q/CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb3B0aW9uID0g
b3B0aW9uRnJvbVNlbGVjdGlvbihzZWxlY3Rpb24sIGkpOworICAgIGlmIChvcHRpb24gJiYgY29y
ZShzZWxlY3Rpb24pLT5pc0xpc3RCb3goKSkgeworICAgICAgICBBY2Nlc3NpYmlsaXR5TGlzdEJv
eE9wdGlvbiogbGlzdEJveE9wdGlvbiA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlMaXN0Qm94
T3B0aW9uKj4ob3B0aW9uKTsKKyAgICAgICAgbGlzdEJveE9wdGlvbi0+c2V0U2VsZWN0ZWQoZmFs
c2UpOworICAgICAgICByZXR1cm4gIWxpc3RCb3hPcHRpb24tPmlzU2VsZWN0ZWQoKTsKKyAgICB9
CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfYWNjZXNz
aWJsZV9zZWxlY3Rpb25fc2VsZWN0X2FsbF9zZWxlY3Rpb24oQXRrU2VsZWN0aW9uKiBzZWxlY3Rp
b24pCit7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZVNlbGVjdGlvbiA9IGNvcmUoc2Vs
ZWN0aW9uKTsKKyAgICBpZiAoIWNvcmVTZWxlY3Rpb24gfHwgIWNvcmVTZWxlY3Rpb24tPmlzTXVs
dGlTZWxlY3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxkcmVuID0gY29yZVNl
bGVjdGlvbi0+Y2hpbGRyZW4oKTsKKyAgICBpZiAoY29yZVNlbGVjdGlvbi0+aXNMaXN0Qm94KCkp
IHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eUxpc3RCb3gqIGxpc3RCb3ggPSBzdGF0aWNfY2FzdDxB
Y2Nlc3NpYmlsaXR5TGlzdEJveCo+KGNvcmVTZWxlY3Rpb24pOworICAgICAgICBsaXN0Qm94LT5z
ZXRTZWxlY3RlZENoaWxkcmVuKGNoaWxkcmVuKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVkSXRlbXM7CisgICAg
ICAgIGxpc3RCb3gtPnNlbGVjdGVkQ2hpbGRyZW4oc2VsZWN0ZWRJdGVtcyk7CisgICAgICAgIHJl
dHVybiBzZWxlY3RlZEl0ZW1zLnNpemUoKSA9PSBjaGlsZHJlbi5zaXplKCk7CisgICAgfQorCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgdm9pZCBhdGtfc2VsZWN0aW9uX2ludGVyZmFj
ZV9pbml0KEF0a1NlbGVjdGlvbklmYWNlKiBpZmFjZSkKK3sKKyAgICBpZmFjZS0+YWRkX3NlbGVj
dGlvbiA9IHdlYmtpdF9hY2Nlc3NpYmxlX3NlbGVjdGlvbl9hZGRfc2VsZWN0aW9uOworICAgIGlm
YWNlLT5jbGVhcl9zZWxlY3Rpb24gPSB3ZWJraXRfYWNjZXNzaWJsZV9zZWxlY3Rpb25fY2xlYXJf
c2VsZWN0aW9uOworICAgIGlmYWNlLT5yZWZfc2VsZWN0aW9uID0gd2Via2l0X2FjY2Vzc2libGVf
c2VsZWN0aW9uX3JlZl9zZWxlY3Rpb247CisgICAgaWZhY2UtPmdldF9zZWxlY3Rpb25fY291bnQg
PSB3ZWJraXRfYWNjZXNzaWJsZV9zZWxlY3Rpb25fZ2V0X3NlbGVjdGlvbl9jb3VudDsKKyAgICBp
ZmFjZS0+aXNfY2hpbGRfc2VsZWN0ZWQgPSB3ZWJraXRfYWNjZXNzaWJsZV9zZWxlY3Rpb25faXNf
Y2hpbGRfc2VsZWN0ZWQ7CisgICAgaWZhY2UtPnJlbW92ZV9zZWxlY3Rpb24gPSB3ZWJraXRfYWNj
ZXNzaWJsZV9zZWxlY3Rpb25fcmVtb3ZlX3NlbGVjdGlvbjsKKyAgICBpZmFjZS0+c2VsZWN0X2Fs
bF9zZWxlY3Rpb24gPSB3ZWJraXRfYWNjZXNzaWJsZV9zZWxlY3Rpb25fc2VsZWN0X2FsbF9zZWxl
Y3Rpb247Cit9CisKIC8vIFRleHQKIAogc3RhdGljIGdjaGFyKiB3ZWJraXRfYWNjZXNzaWJsZV90
ZXh0X2dldF90ZXh0KEF0a1RleHQqIHRleHQsIGdpbnQgc3RhcnRPZmZzZXQsIGdpbnQgZW5kT2Zm
c2V0KQpAQCAtMTAyOCw2ICsxMTY4LDggQEAgc3RhdGljIHZvaWQgYXRrX2ltYWdlX2ludGVyZmFj
ZV9pbml0KEF0a0ltYWdlSWZhY2UqIGlmYWNlKQogc3RhdGljIGNvbnN0IEdJbnRlcmZhY2VJbmZv
IEF0a0ludGVyZmFjZXNJbml0RnVuY3Rpb25zW10gPSB7CiAgICAgeyhHSW50ZXJmYWNlSW5pdEZ1
bmMpYXRrX2FjdGlvbl9pbnRlcmZhY2VfaW5pdCwKICAgICAgKEdJbnRlcmZhY2VGaW5hbGl6ZUZ1
bmMpIE5VTEwsIE5VTEx9LAorICAgIHsoR0ludGVyZmFjZUluaXRGdW5jKWF0a19zZWxlY3Rpb25f
aW50ZXJmYWNlX2luaXQsCisgICAgIChHSW50ZXJmYWNlRmluYWxpemVGdW5jKSBOVUxMLCBOVUxM
fSwKICAgICB7KEdJbnRlcmZhY2VJbml0RnVuYylhdGtfZWRpdGFibGVfdGV4dF9pbnRlcmZhY2Vf
aW5pdCwKICAgICAgKEdJbnRlcmZhY2VGaW5hbGl6ZUZ1bmMpIE5VTEwsIE5VTEx9LAogICAgIHso
R0ludGVyZmFjZUluaXRGdW5jKWF0a190ZXh0X2ludGVyZmFjZV9pbml0LApAQCAtMTA0MCw2ICsx
MTgyLDcgQEAgc3RhdGljIGNvbnN0IEdJbnRlcmZhY2VJbmZvIEF0a0ludGVyZmFjZXNJbml0RnVu
Y3Rpb25zW10gPSB7CiAKIGVudW0gV0FJVHlwZSB7CiAgICAgV0FJX0FDVElPTiwKKyAgICBXQUlf
U0VMRUNUSU9OLAogICAgIFdBSV9FRElUQUJMRV9URVhULAogICAgIFdBSV9URVhULAogICAgIFdB
SV9DT01QT05FTlQsCkBAIC0xMDUxLDYgKzExOTQsOCBAQCBzdGF0aWMgR1R5cGUgR2V0QXRrSW50
ZXJmYWNlVHlwZUZyb21XQUlUeXBlKFdBSVR5cGUgdHlwZSkKICAgc3dpdGNoICh0eXBlKSB7CiAg
IGNhc2UgV0FJX0FDVElPTjoKICAgICAgIHJldHVybiBBVEtfVFlQRV9BQ1RJT047CisgIGNhc2Ug
V0FJX1NFTEVDVElPTjoKKyAgICAgIHJldHVybiBBVEtfVFlQRV9TRUxFQ1RJT047CiAgIGNhc2Ug
V0FJX0VESVRBQkxFX1RFWFQ6CiAgICAgICByZXR1cm4gQVRLX1RZUEVfRURJVEFCTEVfVEVYVDsK
ICAgY2FzZSBXQUlfVEVYVDoKQEAgLTEwNzUsNiArMTIyMCwxMCBAQCBzdGF0aWMgZ3VpbnQxNiBn
ZXRJbnRlcmZhY2VNYXNrRnJvbU9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0
KQogICAgIGlmICghY29yZU9iamVjdC0+YWN0aW9uVmVyYigpLmlzRW1wdHkoKSkKICAgICAgICAg
aW50ZXJmYWNlTWFzayB8PSAxIDw8IFdBSV9BQ1RJT047CiAKKyAgICAvLyBTZWxlY3Rpb24KKyAg
ICBpZiAoY29yZU9iamVjdC0+aXNMaXN0Qm94KCkpCisgICAgICAgIGludGVyZmFjZU1hc2sgfD0g
MSA8PCBXQUlfU0VMRUNUSU9OOworCiAgICAgLy8gVGV4dCAmIEVkaXRhYmxlIFRleHQKICAgICBB
Y2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gY29yZU9iamVjdC0+cm9sZVZhbHVlKCk7CiAKLS0gCjEu
Ni4zLjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41856</attachid>
            <date>2009-10-26 02:44:20 -0700</date>
            <delta_ts>2010-06-10 19:25:49 -0700</delta_ts>
            <desc>Part 1 - Fix the states exposed - Take 2</desc>
            <filename>25679-states-2.patch</filename>
            <type>text/plain</type>
            <size>3878</size>
            <attacher name="Joanmarie Diggs">jdiggs</attacher>
            
              <data encoding="base64">RnJvbSAyMGE2OTJhNjk1OTQ1OGMxN2IwYWI2YjhlNmU3YmJlZTM4NTBkYmRlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2FubWFyaWUgRGlnZ3MgPGpvYW5tYXJpZS5kaWdnc0BnbWFp
bC5jb20+CkRhdGU6IFN1biwgMjUgT2N0IDIwMDkgMDQ6MzM6MDAgLTA0MDAKU3ViamVjdDogW1BB
VENIXSBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCmh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNTY3OQpbR3RrXSBJbXByb3ZlIGFjY2Vzc2liaWxpdHkgb2YgZm9j
dXNhYmxlIGxpc3RzCgpGaXhlcyB0aGUgaXNzdWVzIHdpdGggdGhlIEF0ayBzdGF0ZXMgZXhwb3Nl
ZCBmb3IgTGlzdEJveE9wdGlvbgoKKiBhY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlckF0ay5jcHA6CihzZXRBdGtTdGF0ZVNldEZyb21Db3JlT2JqZWN0KToKLS0tCiBX
ZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIg
KysrKysrKysKIC4uLi9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwICAgICAg
ICAgIHwgICAzMCArKysrKysrKysrKysrKysrLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDM3IGluc2Vy
dGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlZGNmNmQwLi45NWFjM2QyIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDA5LTEwLTI2ICBKb2FubWFyaWUgRGlnZ3MgIDxqb2FubWFyaWUuZGlnZ3NAZ21haWwuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTY3OQorICAgICAgICBbR3RrXSBJ
bXByb3ZlIGFjY2Vzc2liaWxpdHkgb2YgZm9jdXNhYmxlIGxpc3RzCisKKyAgICAgICAgRml4ZXMg
dGhlIGlzc3VlcyB3aXRoIHRoZSBBdGsgc3RhdGVzIGV4cG9zZWQgZm9yIExpc3RCb3hPcHRpb24K
KworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
QXRrLmNwcDoKKyAgICAgICAgKHNldEF0a1N0YXRlU2V0RnJvbUNvcmVPYmplY3QpOgorCiAyMDA5
LTEwLTI0ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsv
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAKaW5kZXggZjBkOWJmZS4uZTI4
MjRkZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlckF0ay5jcHAKKysrIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAKQEAgLTM3MCwxNSArMzcwLDIwIEBAIHN0YXRp
YyBBdGtSb2xlIHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9yb2xlKEF0a09iamVjdCogb2JqZWN0KQog
CiBzdGF0aWMgdm9pZCBzZXRBdGtTdGF0ZVNldEZyb21Db3JlT2JqZWN0KEFjY2Vzc2liaWxpdHlP
YmplY3QqIGNvcmVPYmplY3QsIEF0a1N0YXRlU2V0KiBzdGF0ZVNldCkKIHsKLSAgICAvLyBQbGVh
c2Uga2VlcCB0aGUgc3RhdGUgbGlzdCBpbiBhbHBoYWJldGljYWwgb3JkZXIKKyAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBjb3JlT2JqZWN0LT5wYXJlbnRPYmplY3QoKTsKKyAgICBi
b29sIGlzTGlzdEJveE9wdGlvbiA9IHBhcmVudCAmJiBwYXJlbnQtPmlzTGlzdEJveCgpOwogCisg
ICAgLy8gUGxlYXNlIGtlZXAgdGhlIHN0YXRlIGxpc3QgaW4gYWxwaGFiZXRpY2FsIG9yZGVyCiAg
ICAgaWYgKGNvcmVPYmplY3QtPmlzQ2hlY2tlZCgpKQogICAgICAgICBhdGtfc3RhdGVfc2V0X2Fk
ZF9zdGF0ZShzdGF0ZVNldCwgQVRLX1NUQVRFX0NIRUNLRUQpOwogCiAgICAgLy8gRklYTUU6IGlz
UmVhZE9ubHkgZG9lcyBub3Qgc2VlbSB0byBkbyB0aGUgcmlnaHQgdGhpbmcgZm9yCi0gICAgLy8g
Y29udHJvbHMsIHNvIGNoZWNrIGV4cGxpY2l0bHkgZm9yIHRoZW0KLSAgICBpZiAoIWNvcmVPYmpl
Y3QtPmlzUmVhZE9ubHkoKSB8fAotICAgICAgICAoY29yZU9iamVjdC0+aXNDb250cm9sKCkgJiYg
Y29yZU9iamVjdC0+Y2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSkpCisgICAgLy8gY29udHJvbHMsIHNv
IGNoZWNrIGV4cGxpY2l0bHkgZm9yIHRoZW0uIEluIGFkZGl0aW9uLCBiZWNhdXNlCisgICAgLy8g
aXNSZWFkT25seSBpcyBmYWxzZSBmb3IgbGlzdEJveE9wdGlvbnMsIHdlIG5lZWQgdG8gYWRkIG9u
ZQorICAgIC8vIG1vcmUgY2hlY2sgc28gdGhhdCB3ZSBkbyBub3QgcHJlc2VudCB0aGVtIGFzIGJl
aW5nICJlZGl0YWJsZSIuCisgICAgaWYgKCghY29yZU9iamVjdC0+aXNSZWFkT25seSgpIHx8Cisg
ICAgICAgIChjb3JlT2JqZWN0LT5pc0NvbnRyb2woKSAmJiBjb3JlT2JqZWN0LT5jYW5TZXRWYWx1
ZUF0dHJpYnV0ZSgpKSkgJiYKKyAgICAgICAgIWlzTGlzdEJveE9wdGlvbikKICAgICAgICAgYXRr
X3N0YXRlX3NldF9hZGRfc3RhdGUoc3RhdGVTZXQsIEFUS19TVEFURV9FRElUQUJMRSk7CiAKICAg
ICAvLyBGSVhNRTogUHV0IGJvdGggRU5BQkxFRCBhbmQgU0VOU0lUSVZFIHRvZ2V0aGVyIGhlcmUg
Zm9yIG5vdwpAQCAtNDA4LDggKzQxMywyMyBAQCBzdGF0aWMgdm9pZCBzZXRBdGtTdGF0ZVNldEZy
b21Db3JlT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QsIEF0a1N0YQogCiAg
ICAgLy8gVE9ETzogQVRLX1NUQVRFX1NFTEVDVEFCTEVfVEVYVAogCi0gICAgaWYgKGNvcmVPYmpl
Y3QtPmlzU2VsZWN0ZWQoKSkKKyAgICBpZiAoY29yZU9iamVjdC0+Y2FuU2V0U2VsZWN0ZWRBdHRy
aWJ1dGUoKSkgeworICAgICAgICBhdGtfc3RhdGVfc2V0X2FkZF9zdGF0ZShzdGF0ZVNldCwgQVRL
X1NUQVRFX1NFTEVDVEFCTEUpOworICAgICAgICAvLyBJdGVtcyBpbiBmb2N1c2FibGUgbGlzdHMg
aW4gR3RrIGhhdmUgYm90aCBTVEFURV9TRUxFQ1R7QUJMRSxFRH0KKyAgICAgICAgLy8gYW5kIFNU
QVRFX0ZPQ1VTe0FCTEUsRUR9LiBXZSdsbCBmYWtlIHRoZSBsYXR0ZXIgYmFzZWQgb24gdGhlCisg
ICAgICAgIC8vIGZvcm1lci4KKyAgICAgICAgaWYgKGlzTGlzdEJveE9wdGlvbikKKyAgICAgICAg
ICAgIGF0a19zdGF0ZV9zZXRfYWRkX3N0YXRlKHN0YXRlU2V0LCBBVEtfU1RBVEVfRk9DVVNBQkxF
KTsKKyAgICB9CisKKyAgICBpZiAoY29yZU9iamVjdC0+aXNTZWxlY3RlZCgpKSB7CiAgICAgICAg
IGF0a19zdGF0ZV9zZXRfYWRkX3N0YXRlKHN0YXRlU2V0LCBBVEtfU1RBVEVfU0VMRUNURUQpOwor
ICAgICAgICAvLyBJdGVtcyBpbiBmb2N1c2FibGUgbGlzdHMgaW4gR3RrIGhhdmUgYm90aCBTVEFU
RV9TRUxFQ1R7QUJMRSxFRH0KKyAgICAgICAgLy8gYW5kIFNUQVRFX0ZPQ1VTe0FCTEUsRUR9LiBX
ZSdsbCBmYWtlIHRoZSBsYXR0ZXIgYmFzZWQgb24gdGhlCisgICAgICAgIC8vIGZvcm1lci4KKyAg
ICAgICAgaWYgKGlzTGlzdEJveE9wdGlvbikKKyAgICAgICAgICAgIGF0a19zdGF0ZV9zZXRfYWRk
X3N0YXRlKHN0YXRlU2V0LCBBVEtfU1RBVEVfRk9DVVNFRCk7CisgICAgfQogCiAgICAgLy8gRklY
TUU6IEdyb3VwIGJvdGggU0hPV0lORyBhbmQgVklTSUJMRSBoZXJlIGZvciBub3cKICAgICAvLyBO
b3Qgc3VyZSBob3cgdG8gaGFuZGxlIHRoaXMgaW4gV2ViS2l0LCBzZWUgYnVnCi0tIAoxLjYuMy4z
Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41857</attachid>
            <date>2009-10-26 03:15:24 -0700</date>
            <delta_ts>2009-10-28 16:28:07 -0700</delta_ts>
            <desc>Part 2 - Selection - Take 2</desc>
            <filename>25679-selection-2.patch</filename>
            <type>text/plain</type>
            <size>11038</size>
            <attacher name="Joanmarie Diggs">jdiggs</attacher>
            
              <data encoding="base64">RnJvbSA4OTJkNWMwYjAyOGY2NjU4MzJiMDZhZjA1ODI3OWE5ZTVhODMyYWM3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2FubWFyaWUgRGlnZ3MgPGpvYW5tYXJpZS5kaWdnc0BnbWFp
bC5jb20+CkRhdGU6IE1vbiwgMjYgT2N0IDIwMDkgMDU6NTg6NDAgLTA0MDAKU3ViamVjdDogW1BB
VENIIDIvMl0gUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU2NzkKW0d0a10gSW1wcm92ZSBhY2Nlc3NpYmlsaXR5IG9m
IGZvY3VzYWJsZSBsaXN0cwoKSW1wbGVtZW50cyB0aGUgQXRrU2VsZWN0aW9uIGludGVyZmFjZSBh
bmQgZW5hYmxlcyB0aGUgY29ycmVzcG9uZGluZwooYW5kIGV4cGVjdGVkKSBvYmplY3Q6c2VsZWN0
aW9uLWNoYW5nZWQgZXZlbnQuCgoqIGFjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyQXRrLmNwcDoKKG9wdGlvbkZyb21MaXN0KToKKG9wdGlvbkZyb21TZWxlY3Rpb24p
OgooYXRrX3NlbGVjdGlvbl9pbnRlcmZhY2VfaW5pdCk6Cih3ZWJraXRfYWNjZXNzaWJsZV9zZWxl
Y3Rpb25fYWRkX3NlbGVjdGlvbik6Cih3ZWJraXRfYWNjZXNzaWJsZV9zZWxlY3Rpb25fY2xlYXJf
c2VsZWN0aW9uKToKKHdlYmtpdF9hY2Nlc3NpYmxlX3NlbGVjdGlvbl9yZWZfc2VsZWN0aW9uKToK
KHdlYmtpdF9hY2Nlc3NpYmxlX3NlbGVjdGlvbl9nZXRfc2VsZWN0aW9uX2NvdW50KToKKHdlYmtp
dF9hY2Nlc3NpYmxlX3NlbGVjdGlvbl9pc19jaGlsZF9zZWxlY3RlZCk6Cih3ZWJraXRfYWNjZXNz
aWJsZV9zZWxlY3Rpb25fcmVtb3ZlX3NlbGVjdGlvbik6Cih3ZWJraXRfYWNjZXNzaWJsZV9zZWxl
Y3Rpb25fc2VsZWN0X2FsbF9zZWxlY3Rpb24pOgooR2V0QXRrSW50ZXJmYWNlVHlwZUZyb21XQUlU
eXBlKToKKiBhY2Nlc3NpYmlsaXR5L2d0ay9BWE9iamVjdENhY2hlQXRrLmNwcDoKKEFYT2JqZWN0
Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbik6Ci0tLQogV2ViQ29yZS9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI1ICsrKwogV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2d0ay9BWE9iamVjdENhY2hlQXRrLmNwcCAgICAgfCAgICA0ICsKIC4uLi9ndGsv
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwICAgICAgICAgIHwgIDE1NCArKysrKysr
KysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxODMgaW5zZXJ0aW9ucygrKSwgMCBkZWxl
dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDk1YWMzZDIuLjkwYTk3NDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC01LDYgKzUsMzEgQEAKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1Njc5CiAgICAgICAgIFtHdGtdIElt
cHJvdmUgYWNjZXNzaWJpbGl0eSBvZiBmb2N1c2FibGUgbGlzdHMKIAorICAgICAgICBJbXBsZW1l
bnRzIHRoZSBBdGtTZWxlY3Rpb24gaW50ZXJmYWNlIGFuZCBlbmFibGVzIHRoZSBjb3JyZXNwb25k
aW5nCisgICAgICAgIChhbmQgZXhwZWN0ZWQpIG9iamVjdDpzZWxlY3Rpb24tY2hhbmdlZCBldmVu
dC4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyQXRrLmNwcDoKKyAgICAgICAgKG9wdGlvbkZyb21MaXN0KToKKyAgICAgICAgKG9wdGlvbkZy
b21TZWxlY3Rpb24pOgorICAgICAgICAoYXRrX3NlbGVjdGlvbl9pbnRlcmZhY2VfaW5pdCk6Cisg
ICAgICAgICh3ZWJraXRfYWNjZXNzaWJsZV9zZWxlY3Rpb25fYWRkX3NlbGVjdGlvbik6CisgICAg
ICAgICh3ZWJraXRfYWNjZXNzaWJsZV9zZWxlY3Rpb25fY2xlYXJfc2VsZWN0aW9uKToKKyAgICAg
ICAgKHdlYmtpdF9hY2Nlc3NpYmxlX3NlbGVjdGlvbl9yZWZfc2VsZWN0aW9uKToKKyAgICAgICAg
KHdlYmtpdF9hY2Nlc3NpYmxlX3NlbGVjdGlvbl9nZXRfc2VsZWN0aW9uX2NvdW50KToKKyAgICAg
ICAgKHdlYmtpdF9hY2Nlc3NpYmxlX3NlbGVjdGlvbl9pc19jaGlsZF9zZWxlY3RlZCk6CisgICAg
ICAgICh3ZWJraXRfYWNjZXNzaWJsZV9zZWxlY3Rpb25fcmVtb3ZlX3NlbGVjdGlvbik6CisgICAg
ICAgICh3ZWJraXRfYWNjZXNzaWJsZV9zZWxlY3Rpb25fc2VsZWN0X2FsbF9zZWxlY3Rpb24pOgor
ICAgICAgICAoR2V0QXRrSW50ZXJmYWNlVHlwZUZyb21XQUlUeXBlKToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L2d0ay9BWE9iamVjdENhY2hlQXRrLmNwcDoKKyAgICAgICAgKEFYT2JqZWN0Q2Fj
aGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisKKzIwMDktMTAtMjYgIEpvYW5tYXJpZSBE
aWdncyAgPGpvYW5tYXJpZS5kaWdnc0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI1Njc5CisgICAgICAgIFtHdGtdIEltcHJvdmUgYWNjZXNzaWJpbGl0eSBvZiBm
b2N1c2FibGUgbGlzdHMKKwogICAgICAgICBGaXhlcyB0aGUgaXNzdWVzIHdpdGggdGhlIEF0ayBz
dGF0ZXMgZXhwb3NlZCBmb3IgTGlzdEJveE9wdGlvbgogCiAgICAgICAgICogYWNjZXNzaWJpbGl0
eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwOgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BWE9iamVjdENhY2hlQXRrLmNwcCBiL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9ndGsvQVhPYmplY3RDYWNoZUF0ay5jcHAKaW5kZXggY2M1MTVhZC4uYzMwYjAw
NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BWE9iamVjdENhY2hlQXRr
LmNwcAorKysgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FYT2JqZWN0Q2FjaGVBdGsuY3Bw
CkBAIC00Myw2ICs0MywxMCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlm
aWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBBWAogICAgICAgICBpZiAo
IWNvcmVPYmplY3QtPmlzQ2hlY2tib3hPclJhZGlvKCkpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShjb3JlT2JqZWN0LT53cmFwcGVyKCksICJzdGF0
ZS1jaGFuZ2UiLCAiY2hlY2tlZCIsIGNvcmVPYmplY3QtPmlzQ2hlY2tlZCgpKTsKKyAgICB9IGVs
c2UgaWYgKG5vdGlmaWNhdGlvbiA9PSBBWFNlbGVjdGVkQ2hpbGRyZW5DaGFuZ2VkKSB7CisgICAg
ICAgIGlmICghY29yZU9iamVjdC0+aXNMaXN0Qm94KCkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShjb3JlT2JqZWN0LT53cmFwcGVyKCksICJzZWxl
Y3Rpb24tY2hhbmdlZCIpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAgYi9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcAppbmRleCBl
MjgyNGRkLi5hMTc0ZTZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0Fj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcAorKysgYi9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcApAQCAtMzUsNiArMzUsNyBA
QAogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlM
aXN0Qm94LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaCIKICNpbmNs
dWRlICJBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5n
LmgiCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgpAQCAtMTAwLDYgKzEwMSwxMSBAQCBzdGF0aWMgQWNj
ZXNzaWJpbGl0eU9iamVjdCogY29yZShBdGtBY3Rpb24qIGFjdGlvbikKICAgICByZXR1cm4gY29y
ZShBVEtfT0JKRUNUKGFjdGlvbikpOwogfQogCitzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCog
Y29yZShBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbikKK3sKKyAgICByZXR1cm4gY29yZShBVEtfT0JK
RUNUKHNlbGVjdGlvbikpOworfQorCiBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZShB
dGtUZXh0KiB0ZXh0KQogewogICAgIHJldHVybiBjb3JlKEFUS19PQkpFQ1QodGV4dCkpOwpAQCAt
NTg0LDYgKzU5MCwxNDUgQEAgc3RhdGljIHZvaWQgYXRrX2FjdGlvbl9pbnRlcmZhY2VfaW5pdChB
dGtBY3Rpb25JZmFjZSogaWZhY2UpCiAgICAgaWZhY2UtPmdldF9uYW1lID0gd2Via2l0X2FjY2Vz
c2libGVfYWN0aW9uX2dldF9uYW1lOwogfQogCisvLyBTZWxlY3Rpb24gKGZvciBjb250cm9scykK
Kworc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9wdGlvbkZyb21MaXN0KEF0a1NlbGVjdGlv
biogc2VsZWN0aW9uLCBnaW50IGkpCit7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZVNl
bGVjdGlvbiA9IGNvcmUoc2VsZWN0aW9uKTsKKyAgICBpZiAoIWNvcmVTZWxlY3Rpb24gfHwgaSA8
IDApCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIG9wdGlvbnMgPSBjb3JlKHNlbGVjdGlvbikt
PmNoaWxkcmVuKCk7CisgICAgaWYgKGkgPCBzdGF0aWNfY2FzdDxnaW50PihvcHRpb25zLnNpemUo
KSkpCisgICAgICAgIHJldHVybiBvcHRpb25zLmF0KGkpLmdldCgpOworCisgICAgcmV0dXJuIE5V
TEw7Cit9CisKK3N0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvcHRpb25Gcm9tU2VsZWN0aW9u
KEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uLCBnaW50IGkpCit7CisgICAgLy8gaSBpcyB0aGUgaXRo
IHNlbGVjdGlvbiBhcyBvcHBvc2VkIHRvIHRoZSBpdGggY2hpbGQuCisKKyAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBjb3JlU2VsZWN0aW9uID0gY29yZShzZWxlY3Rpb24pOworICAgIGlmICghY29y
ZVNlbGVjdGlvbiB8fCBpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRJ
dGVtczsKKyAgICBpZiAoY29yZVNlbGVjdGlvbi0+aXNMaXN0Qm94KCkpCisgICAgICAgIHN0YXRp
Y19jYXN0PEFjY2Vzc2liaWxpdHlMaXN0Qm94Kj4oY29yZVNlbGVjdGlvbiktPnNlbGVjdGVkQ2hp
bGRyZW4oc2VsZWN0ZWRJdGVtcyk7CisKKyAgICAvLyBUT0RPOiBDb21ibyBib3hlcworCisgICAg
aWYgKGkgPCBzdGF0aWNfY2FzdDxnaW50PihzZWxlY3RlZEl0ZW1zLnNpemUoKSkpCisgICAgICAg
IHJldHVybiBzZWxlY3RlZEl0ZW1zLmF0KGkpLmdldCgpOworCisgICAgcmV0dXJuIE5VTEw7Cit9
CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfYWNjZXNzaWJsZV9zZWxlY3Rpb25fYWRkX3NlbGVj
dGlvbihBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbiwgZ2ludCBpKQoreworICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIG9wdGlvbiA9IG9wdGlvbkZyb21MaXN0KHNlbGVjdGlvbiwgaSk7CisgICAgaWYg
KG9wdGlvbiAmJiBjb3JlKHNlbGVjdGlvbiktPmlzTGlzdEJveCgpKSB7CisgICAgICAgIEFjY2Vz
c2liaWxpdHlMaXN0Qm94T3B0aW9uKiBsaXN0Qm94T3B0aW9uID0gc3RhdGljX2Nhc3Q8QWNjZXNz
aWJpbGl0eUxpc3RCb3hPcHRpb24qPihvcHRpb24pOworICAgICAgICBsaXN0Qm94T3B0aW9uLT5z
ZXRTZWxlY3RlZCh0cnVlKTsKKyAgICAgICAgcmV0dXJuIGxpc3RCb3hPcHRpb24tPmlzU2VsZWN0
ZWQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3
ZWJraXRfYWNjZXNzaWJsZV9zZWxlY3Rpb25fY2xlYXJfc2VsZWN0aW9uKEF0a1NlbGVjdGlvbiog
c2VsZWN0aW9uKQoreworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVTZWxlY3Rpb24gPSBj
b3JlKHNlbGVjdGlvbik7CisgICAgaWYgKCFjb3JlU2VsZWN0aW9uKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3Igc2VsZWN0ZWRJdGVtczsKKyAgICBpZiAoY29yZVNlbGVjdGlvbi0+aXNMaXN0
Qm94KCkpIHsKKyAgICAgICAgLy8gU2V0IHRoZSBsaXN0IG9mIHNlbGVjdGVkIGl0ZW1zIHRvIGFu
IGVtcHR5IGxpc3Q7IHRoZW4gdmVyaWZ5IHRoYXQgaXQgd29ya2VkLgorICAgICAgICBBY2Nlc3Np
YmlsaXR5TGlzdEJveCogbGlzdEJveCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlMaXN0Qm94
Kj4oY29yZVNlbGVjdGlvbik7CisgICAgICAgIGxpc3RCb3gtPnNldFNlbGVjdGVkQ2hpbGRyZW4o
c2VsZWN0ZWRJdGVtcyk7CisgICAgICAgIGxpc3RCb3gtPnNlbGVjdGVkQ2hpbGRyZW4oc2VsZWN0
ZWRJdGVtcyk7CisgICAgICAgIHJldHVybiBzZWxlY3RlZEl0ZW1zLnNpemUoKSA9PSAwOworICAg
IH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBBdGtPYmplY3QqIHdlYmtpdF9hY2Nl
c3NpYmxlX3NlbGVjdGlvbl9yZWZfc2VsZWN0aW9uKEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uLCBn
aW50IGkpCit7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb3B0aW9uID0gb3B0aW9uRnJvbVNl
bGVjdGlvbihzZWxlY3Rpb24sIGkpOworICAgIGlmIChvcHRpb24pIHsKKyAgICAgICAgQXRrT2Jq
ZWN0KiBjaGlsZCA9IG9wdGlvbi0+d3JhcHBlcigpOworICAgICAgICBnX29iamVjdF9yZWYoY2hp
bGQpOworICAgICAgICByZXR1cm4gY2hpbGQ7CisgICAgfQorCisgICAgcmV0dXJuIE5VTEw7Cit9
CisKK3N0YXRpYyBnaW50IHdlYmtpdF9hY2Nlc3NpYmxlX3NlbGVjdGlvbl9nZXRfc2VsZWN0aW9u
X2NvdW50KEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uKQoreworICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGNvcmVTZWxlY3Rpb24gPSBjb3JlKHNlbGVjdGlvbik7CisgICAgaWYgKGNvcmVTZWxlY3Rp
b24gJiYgY29yZVNlbGVjdGlvbi0+aXNMaXN0Qm94KCkpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVkSXRlbXM7
CisgICAgICAgIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlMaXN0Qm94Kj4oY29yZVNlbGVjdGlv
biktPnNlbGVjdGVkQ2hpbGRyZW4oc2VsZWN0ZWRJdGVtcyk7CisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxnaW50PihzZWxlY3RlZEl0ZW1zLnNpemUoKSk7CisgICAgfQorCisgICAgcmV0dXJu
IDA7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfYWNjZXNzaWJsZV9zZWxlY3Rpb25faXNf
Y2hpbGRfc2VsZWN0ZWQoQXRrU2VsZWN0aW9uKiBzZWxlY3Rpb24sIGdpbnQgaSkKK3sKKyAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBvcHRpb24gPSBvcHRpb25Gcm9tTGlzdChzZWxlY3Rpb24sIGkp
OworICAgIGlmIChvcHRpb24gJiYgY29yZShzZWxlY3Rpb24pLT5pc0xpc3RCb3goKSkKKyAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uKj4ob3B0aW9u
KS0+aXNTZWxlY3RlZCgpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgZ2Jvb2xl
YW4gd2Via2l0X2FjY2Vzc2libGVfc2VsZWN0aW9uX3JlbW92ZV9zZWxlY3Rpb24oQXRrU2VsZWN0
aW9uKiBzZWxlY3Rpb24sIGdpbnQgaSkKK3sKKyAgICAvLyBUT0RPOiBUaGlzIGlzIG9ubHkgZ2V0
dGluZyBjYWxsZWQgaWYgaSA9PSAwLiBXaGF0IGlzIHByZXZlbnRpbmcgdGhlIHJlc3Q/CisgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogb3B0aW9uID0gb3B0aW9uRnJvbVNlbGVjdGlvbihzZWxlY3Rp
b24sIGkpOworICAgIGlmIChvcHRpb24gJiYgY29yZShzZWxlY3Rpb24pLT5pc0xpc3RCb3goKSkg
eworICAgICAgICBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbiogbGlzdEJveE9wdGlvbiA9IHN0
YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uKj4ob3B0aW9uKTsKKyAgICAgICAg
bGlzdEJveE9wdGlvbi0+c2V0U2VsZWN0ZWQoZmFsc2UpOworICAgICAgICByZXR1cm4gIWxpc3RC
b3hPcHRpb24tPmlzU2VsZWN0ZWQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfYWNjZXNzaWJsZV9zZWxlY3Rpb25fc2VsZWN0X2FsbF9z
ZWxlY3Rpb24oQXRrU2VsZWN0aW9uKiBzZWxlY3Rpb24pCit7CisgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogY29yZVNlbGVjdGlvbiA9IGNvcmUoc2VsZWN0aW9uKTsKKyAgICBpZiAoIWNvcmVTZWxl
Y3Rpb24gfHwgIWNvcmVTZWxlY3Rpb24tPmlzTXVsdGlTZWxlY3QoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6QWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yIGNoaWxkcmVuID0gY29yZVNlbGVjdGlvbi0+Y2hpbGRyZW4oKTsKKyAgICBp
ZiAoY29yZVNlbGVjdGlvbi0+aXNMaXN0Qm94KCkpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eUxp
c3RCb3gqIGxpc3RCb3ggPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5TGlzdEJveCo+KGNvcmVT
ZWxlY3Rpb24pOworICAgICAgICBsaXN0Qm94LT5zZXRTZWxlY3RlZENoaWxkcmVuKGNoaWxkcmVu
KTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIHNlbGVjdGVkSXRlbXM7CisgICAgICAgIGxpc3RCb3gtPnNlbGVjdGVkQ2hpbGRy
ZW4oc2VsZWN0ZWRJdGVtcyk7CisgICAgICAgIHJldHVybiBzZWxlY3RlZEl0ZW1zLnNpemUoKSA9
PSBjaGlsZHJlbi5zaXplKCk7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0
aWMgdm9pZCBhdGtfc2VsZWN0aW9uX2ludGVyZmFjZV9pbml0KEF0a1NlbGVjdGlvbklmYWNlKiBp
ZmFjZSkKK3sKKyAgICBpZmFjZS0+YWRkX3NlbGVjdGlvbiA9IHdlYmtpdF9hY2Nlc3NpYmxlX3Nl
bGVjdGlvbl9hZGRfc2VsZWN0aW9uOworICAgIGlmYWNlLT5jbGVhcl9zZWxlY3Rpb24gPSB3ZWJr
aXRfYWNjZXNzaWJsZV9zZWxlY3Rpb25fY2xlYXJfc2VsZWN0aW9uOworICAgIGlmYWNlLT5yZWZf
c2VsZWN0aW9uID0gd2Via2l0X2FjY2Vzc2libGVfc2VsZWN0aW9uX3JlZl9zZWxlY3Rpb247Cisg
ICAgaWZhY2UtPmdldF9zZWxlY3Rpb25fY291bnQgPSB3ZWJraXRfYWNjZXNzaWJsZV9zZWxlY3Rp
b25fZ2V0X3NlbGVjdGlvbl9jb3VudDsKKyAgICBpZmFjZS0+aXNfY2hpbGRfc2VsZWN0ZWQgPSB3
ZWJraXRfYWNjZXNzaWJsZV9zZWxlY3Rpb25faXNfY2hpbGRfc2VsZWN0ZWQ7CisgICAgaWZhY2Ut
PnJlbW92ZV9zZWxlY3Rpb24gPSB3ZWJraXRfYWNjZXNzaWJsZV9zZWxlY3Rpb25fcmVtb3ZlX3Nl
bGVjdGlvbjsKKyAgICBpZmFjZS0+c2VsZWN0X2FsbF9zZWxlY3Rpb24gPSB3ZWJraXRfYWNjZXNz
aWJsZV9zZWxlY3Rpb25fc2VsZWN0X2FsbF9zZWxlY3Rpb247Cit9CisKIC8vIFRleHQKIAogc3Rh
dGljIGdjaGFyKiB3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF90ZXh0KEF0a1RleHQqIHRleHQs
IGdpbnQgc3RhcnRPZmZzZXQsIGdpbnQgZW5kT2Zmc2V0KQpAQCAtMTA0OCw2ICsxMTkzLDggQEAg
c3RhdGljIHZvaWQgYXRrX2ltYWdlX2ludGVyZmFjZV9pbml0KEF0a0ltYWdlSWZhY2UqIGlmYWNl
KQogc3RhdGljIGNvbnN0IEdJbnRlcmZhY2VJbmZvIEF0a0ludGVyZmFjZXNJbml0RnVuY3Rpb25z
W10gPSB7CiAgICAgeyhHSW50ZXJmYWNlSW5pdEZ1bmMpYXRrX2FjdGlvbl9pbnRlcmZhY2VfaW5p
dCwKICAgICAgKEdJbnRlcmZhY2VGaW5hbGl6ZUZ1bmMpIE5VTEwsIE5VTEx9LAorICAgIHsoR0lu
dGVyZmFjZUluaXRGdW5jKWF0a19zZWxlY3Rpb25faW50ZXJmYWNlX2luaXQsCisgICAgIChHSW50
ZXJmYWNlRmluYWxpemVGdW5jKSBOVUxMLCBOVUxMfSwKICAgICB7KEdJbnRlcmZhY2VJbml0RnVu
YylhdGtfZWRpdGFibGVfdGV4dF9pbnRlcmZhY2VfaW5pdCwKICAgICAgKEdJbnRlcmZhY2VGaW5h
bGl6ZUZ1bmMpIE5VTEwsIE5VTEx9LAogICAgIHsoR0ludGVyZmFjZUluaXRGdW5jKWF0a190ZXh0
X2ludGVyZmFjZV9pbml0LApAQCAtMTA2MCw2ICsxMjA3LDcgQEAgc3RhdGljIGNvbnN0IEdJbnRl
cmZhY2VJbmZvIEF0a0ludGVyZmFjZXNJbml0RnVuY3Rpb25zW10gPSB7CiAKIGVudW0gV0FJVHlw
ZSB7CiAgICAgV0FJX0FDVElPTiwKKyAgICBXQUlfU0VMRUNUSU9OLAogICAgIFdBSV9FRElUQUJM
RV9URVhULAogICAgIFdBSV9URVhULAogICAgIFdBSV9DT01QT05FTlQsCkBAIC0xMDcxLDYgKzEy
MTksOCBAQCBzdGF0aWMgR1R5cGUgR2V0QXRrSW50ZXJmYWNlVHlwZUZyb21XQUlUeXBlKFdBSVR5
cGUgdHlwZSkKICAgc3dpdGNoICh0eXBlKSB7CiAgIGNhc2UgV0FJX0FDVElPTjoKICAgICAgIHJl
dHVybiBBVEtfVFlQRV9BQ1RJT047CisgIGNhc2UgV0FJX1NFTEVDVElPTjoKKyAgICAgIHJldHVy
biBBVEtfVFlQRV9TRUxFQ1RJT047CiAgIGNhc2UgV0FJX0VESVRBQkxFX1RFWFQ6CiAgICAgICBy
ZXR1cm4gQVRLX1RZUEVfRURJVEFCTEVfVEVYVDsKICAgY2FzZSBXQUlfVEVYVDoKQEAgLTEwOTUs
NiArMTI0NSwxMCBAQCBzdGF0aWMgZ3VpbnQxNiBnZXRJbnRlcmZhY2VNYXNrRnJvbU9iamVjdChB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0KQogICAgIGlmICghY29yZU9iamVjdC0+YWN0
aW9uVmVyYigpLmlzRW1wdHkoKSkKICAgICAgICAgaW50ZXJmYWNlTWFzayB8PSAxIDw8IFdBSV9B
Q1RJT047CiAKKyAgICAvLyBTZWxlY3Rpb24KKyAgICBpZiAoY29yZU9iamVjdC0+aXNMaXN0Qm94
KCkpCisgICAgICAgIGludGVyZmFjZU1hc2sgfD0gMSA8PCBXQUlfU0VMRUNUSU9OOworCiAgICAg
Ly8gVGV4dCAmIEVkaXRhYmxlIFRleHQKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gY29y
ZU9iamVjdC0+cm9sZVZhbHVlKCk7CiAKLS0gCjEuNi4zLjMKCg==
</data>
<flag name="review"
          id="23309"
          type_id="1"
          status="-"
          setter="xan.lopez"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42068</attachid>
            <date>2009-10-28 16:28:07 -0700</date>
            <delta_ts>2009-10-29 10:34:49 -0700</delta_ts>
            <desc>Part 2 - Selection - Take 3 (remove NULLs)</desc>
            <filename>selection.patch</filename>
            <type>text/plain</type>
            <size>10912</size>
            <attacher name="Joanmarie Diggs">jdiggs</attacher>
            
              <data encoding="base64">RnJvbSAyNmMxNjVjOTJlMGE5YjRhMGE2ZTA1YThlODYzOWIzODhiNTY4MDI5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2FubWFyaWUgRGlnZ3MgPGpvYW5tYXJpZS5kaWdnc0BnbWFp
bC5jb20+CkRhdGU6IFdlZCwgMjggT2N0IDIwMDkgMTk6MDc6MzcgLTA0MDAKU3ViamVjdDogW1BB
VENIXSBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCmh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNTY3OQpbR3RrXSBJbXByb3ZlIGFjY2Vzc2liaWxpdHkgb2YgZm9j
dXNhYmxlIGxpc3RzCgpJbXBsZW1lbnRzIHRoZSBBdGtTZWxlY3Rpb24gaW50ZXJmYWNlIGFuZCBl
bmFibGVzIHRoZSBjb3JyZXNwb25kaW5nCihhbmQgZXhwZWN0ZWQpIG9iamVjdDpzZWxlY3Rpb24t
Y2hhbmdlZCBldmVudC4KCiogYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJBdGsuY3BwOgoob3B0aW9uRnJvbUxpc3QpOgoob3B0aW9uRnJvbVNlbGVjdGlvbik6Cihh
dGtfc2VsZWN0aW9uX2ludGVyZmFjZV9pbml0KToKKHdlYmtpdF9hY2Nlc3NpYmxlX3NlbGVjdGlv
bl9hZGRfc2VsZWN0aW9uKToKKHdlYmtpdF9hY2Nlc3NpYmxlX3NlbGVjdGlvbl9jbGVhcl9zZWxl
Y3Rpb24pOgood2Via2l0X2FjY2Vzc2libGVfc2VsZWN0aW9uX3JlZl9zZWxlY3Rpb24pOgood2Vi
a2l0X2FjY2Vzc2libGVfc2VsZWN0aW9uX2dldF9zZWxlY3Rpb25fY291bnQpOgood2Via2l0X2Fj
Y2Vzc2libGVfc2VsZWN0aW9uX2lzX2NoaWxkX3NlbGVjdGVkKToKKHdlYmtpdF9hY2Nlc3NpYmxl
X3NlbGVjdGlvbl9yZW1vdmVfc2VsZWN0aW9uKToKKHdlYmtpdF9hY2Nlc3NpYmxlX3NlbGVjdGlv
bl9zZWxlY3RfYWxsX3NlbGVjdGlvbik6CihHZXRBdGtJbnRlcmZhY2VUeXBlRnJvbVdBSVR5cGUp
OgoqIGFjY2Vzc2liaWxpdHkvZ3RrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwOgooQVhPYmplY3RDYWNo
ZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKToKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjcgKysrKy0KIFdlYkNvcmUvYWNjZXNz
aWJpbGl0eS9ndGsvQVhPYmplY3RDYWNoZUF0ay5jcHAgICAgIHwgICAgNCArCiAuLi4vZ3RrL0Fj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcCAgICAgICAgICB8ICAxNTQgKysrKysrKysr
KysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMTg0IGluc2VydGlvbnMoKyksIDEgZGVsZXRp
b25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA5N2I2M2JkLi4zZGViOGNmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDA5LTEwLTI4ICBKb2Fu
bWFyaWUgRGlnZ3MgIDxqb2FubWFyaWUuZGlnZ3NAZ21haWwuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNTY3OQorICAgICAgICBbR3RrXSBJbXByb3ZlIGFjY2Vzc2liaWxp
dHkgb2YgZm9jdXNhYmxlIGxpc3RzCisKKyAgICAgICAgSW1wbGVtZW50cyB0aGUgQXRrU2VsZWN0
aW9uIGludGVyZmFjZSBhbmQgZW5hYmxlcyB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAoYW5k
IGV4cGVjdGVkKSBvYmplY3Q6c2VsZWN0aW9uLWNoYW5nZWQgZXZlbnQuCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6CisgICAg
ICAgIChvcHRpb25Gcm9tTGlzdCk6CisgICAgICAgIChvcHRpb25Gcm9tU2VsZWN0aW9uKToKKyAg
ICAgICAgKGF0a19zZWxlY3Rpb25faW50ZXJmYWNlX2luaXQpOgorICAgICAgICAod2Via2l0X2Fj
Y2Vzc2libGVfc2VsZWN0aW9uX2FkZF9zZWxlY3Rpb24pOgorICAgICAgICAod2Via2l0X2FjY2Vz
c2libGVfc2VsZWN0aW9uX2NsZWFyX3NlbGVjdGlvbik6CisgICAgICAgICh3ZWJraXRfYWNjZXNz
aWJsZV9zZWxlY3Rpb25fcmVmX3NlbGVjdGlvbik6CisgICAgICAgICh3ZWJraXRfYWNjZXNzaWJs
ZV9zZWxlY3Rpb25fZ2V0X3NlbGVjdGlvbl9jb3VudCk6CisgICAgICAgICh3ZWJraXRfYWNjZXNz
aWJsZV9zZWxlY3Rpb25faXNfY2hpbGRfc2VsZWN0ZWQpOgorICAgICAgICAod2Via2l0X2FjY2Vz
c2libGVfc2VsZWN0aW9uX3JlbW92ZV9zZWxlY3Rpb24pOgorICAgICAgICAod2Via2l0X2FjY2Vz
c2libGVfc2VsZWN0aW9uX3NlbGVjdF9hbGxfc2VsZWN0aW9uKToKKyAgICAgICAgKEdldEF0a0lu
dGVyZmFjZVR5cGVGcm9tV0FJVHlwZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9ndGsvQVhP
YmplY3RDYWNoZUF0ay5jcHA6CisgICAgICAgIChBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1O
b3RpZmljYXRpb24pOgorCiAyMDA5LTEwLTI4ICBHZW9yZ2UgU3RhaWtvcyAgPGdlb3JnZS5zdGFp
a29zQHRvcmNobW9iaWxlLmNvbT4KIAogICAgICAgICBBdHRlbXB0IHRvIGZpeCB0aGUgTWFjIGRl
YnVnIGJ1aWxkIGFmdGVyIDUwMjI1LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2d0ay9BWE9iamVjdENhY2hlQXRrLmNwcCBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQVhP
YmplY3RDYWNoZUF0ay5jcHAKaW5kZXggY2M1MTVhZC4uYzMwYjAwNiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BWE9iamVjdENhY2hlQXRrLmNwcAorKysgYi9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvZ3RrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCkBAIC00Myw2ICs0MywxMCBA
QCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmls
aXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBBWAogICAgICAgICBpZiAoIWNvcmVPYmplY3QtPmlzQ2hl
Y2tib3hPclJhZGlvKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGdfc2lnbmFsX2Vt
aXRfYnlfbmFtZShjb3JlT2JqZWN0LT53cmFwcGVyKCksICJzdGF0ZS1jaGFuZ2UiLCAiY2hlY2tl
ZCIsIGNvcmVPYmplY3QtPmlzQ2hlY2tlZCgpKTsKKyAgICB9IGVsc2UgaWYgKG5vdGlmaWNhdGlv
biA9PSBBWFNlbGVjdGVkQ2hpbGRyZW5DaGFuZ2VkKSB7CisgICAgICAgIGlmICghY29yZU9iamVj
dC0+aXNMaXN0Qm94KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGdfc2lnbmFsX2Vt
aXRfYnlfbmFtZShjb3JlT2JqZWN0LT53cmFwcGVyKCksICJzZWxlY3Rpb24tY2hhbmdlZCIpOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0Fj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcAppbmRleCA1OTI0OWJlLi44ZmNiZGViIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQXRrLmNwcAorKysgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyQXRrLmNwcApAQCAtMzUsNiArMzUsNyBAQAogCiAjaW5jbHVkZSAiQVhP
YmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlMaXN0Qm94LmgiCisjaW5jbHVk
ZSAiQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlLmgiCiAjaW5jbHVk
ZSAiQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oIgpAQCAtMTA2LDYgKzEwNywxMSBAQCBzdGF0aWMg
QWNjZXNzaWJpbGl0eU9iamVjdCogY29yZShBdGtBY3Rpb24qIGFjdGlvbikKICAgICByZXR1cm4g
Y29yZShBVEtfT0JKRUNUKGFjdGlvbikpOwogfQogCitzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVj
dCogY29yZShBdGtTZWxlY3Rpb24qIHNlbGVjdGlvbikKK3sKKyAgICByZXR1cm4gY29yZShBVEtf
T0JKRUNUKHNlbGVjdGlvbikpOworfQorCiBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogY29y
ZShBdGtUZXh0KiB0ZXh0KQogewogICAgIHJldHVybiBjb3JlKEFUS19PQkpFQ1QodGV4dCkpOwpA
QCAtNjE1LDYgKzYyMSwxNDUgQEAgc3RhdGljIHZvaWQgYXRrX2FjdGlvbl9pbnRlcmZhY2VfaW5p
dChBdGtBY3Rpb25JZmFjZSogaWZhY2UpCiAgICAgaWZhY2UtPmdldF9uYW1lID0gd2Via2l0X2Fj
Y2Vzc2libGVfYWN0aW9uX2dldF9uYW1lOwogfQogCisvLyBTZWxlY3Rpb24gKGZvciBjb250cm9s
cykKKworc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9wdGlvbkZyb21MaXN0KEF0a1NlbGVj
dGlvbiogc2VsZWN0aW9uLCBnaW50IGkpCit7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29y
ZVNlbGVjdGlvbiA9IGNvcmUoc2VsZWN0aW9uKTsKKyAgICBpZiAoIWNvcmVTZWxlY3Rpb24gfHwg
aSA8IDApCisgICAgICAgIHJldHVybiAwOworCisgICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIG9wdGlvbnMgPSBjb3JlKHNlbGVjdGlvbikt
PmNoaWxkcmVuKCk7CisgICAgaWYgKGkgPCBzdGF0aWNfY2FzdDxnaW50PihvcHRpb25zLnNpemUo
KSkpCisgICAgICAgIHJldHVybiBvcHRpb25zLmF0KGkpLmdldCgpOworCisgICAgcmV0dXJuIDA7
Cit9CisKK3N0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvcHRpb25Gcm9tU2VsZWN0aW9uKEF0
a1NlbGVjdGlvbiogc2VsZWN0aW9uLCBnaW50IGkpCit7CisgICAgLy8gaSBpcyB0aGUgaXRoIHNl
bGVjdGlvbiBhcyBvcHBvc2VkIHRvIHRoZSBpdGggY2hpbGQuCisKKyAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBjb3JlU2VsZWN0aW9uID0gY29yZShzZWxlY3Rpb24pOworICAgIGlmICghY29yZVNl
bGVjdGlvbiB8fCBpIDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRJdGVtczsK
KyAgICBpZiAoY29yZVNlbGVjdGlvbi0+aXNMaXN0Qm94KCkpCisgICAgICAgIHN0YXRpY19jYXN0
PEFjY2Vzc2liaWxpdHlMaXN0Qm94Kj4oY29yZVNlbGVjdGlvbiktPnNlbGVjdGVkQ2hpbGRyZW4o
c2VsZWN0ZWRJdGVtcyk7CisKKyAgICAvLyBUT0RPOiBDb21ibyBib3hlcworCisgICAgaWYgKGkg
PCBzdGF0aWNfY2FzdDxnaW50PihzZWxlY3RlZEl0ZW1zLnNpemUoKSkpCisgICAgICAgIHJldHVy
biBzZWxlY3RlZEl0ZW1zLmF0KGkpLmdldCgpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRp
YyBnYm9vbGVhbiB3ZWJraXRfYWNjZXNzaWJsZV9zZWxlY3Rpb25fYWRkX3NlbGVjdGlvbihBdGtT
ZWxlY3Rpb24qIHNlbGVjdGlvbiwgZ2ludCBpKQoreworICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG9wdGlvbiA9IG9wdGlvbkZyb21MaXN0KHNlbGVjdGlvbiwgaSk7CisgICAgaWYgKG9wdGlvbiAm
JiBjb3JlKHNlbGVjdGlvbiktPmlzTGlzdEJveCgpKSB7CisgICAgICAgIEFjY2Vzc2liaWxpdHlM
aXN0Qm94T3B0aW9uKiBsaXN0Qm94T3B0aW9uID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eUxp
c3RCb3hPcHRpb24qPihvcHRpb24pOworICAgICAgICBsaXN0Qm94T3B0aW9uLT5zZXRTZWxlY3Rl
ZCh0cnVlKTsKKyAgICAgICAgcmV0dXJuIGxpc3RCb3hPcHRpb24tPmlzU2VsZWN0ZWQoKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfYWNj
ZXNzaWJsZV9zZWxlY3Rpb25fY2xlYXJfc2VsZWN0aW9uKEF0a1NlbGVjdGlvbiogc2VsZWN0aW9u
KQoreworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVTZWxlY3Rpb24gPSBjb3JlKHNlbGVj
dGlvbik7CisgICAgaWYgKCFjb3JlU2VsZWN0aW9uKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3Igc2VsZWN0ZWRJdGVtczsKKyAgICBpZiAoY29yZVNlbGVjdGlvbi0+aXNMaXN0Qm94KCkpIHsK
KyAgICAgICAgLy8gU2V0IHRoZSBsaXN0IG9mIHNlbGVjdGVkIGl0ZW1zIHRvIGFuIGVtcHR5IGxp
c3Q7IHRoZW4gdmVyaWZ5IHRoYXQgaXQgd29ya2VkLgorICAgICAgICBBY2Nlc3NpYmlsaXR5TGlz
dEJveCogbGlzdEJveCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlMaXN0Qm94Kj4oY29yZVNl
bGVjdGlvbik7CisgICAgICAgIGxpc3RCb3gtPnNldFNlbGVjdGVkQ2hpbGRyZW4oc2VsZWN0ZWRJ
dGVtcyk7CisgICAgICAgIGxpc3RCb3gtPnNlbGVjdGVkQ2hpbGRyZW4oc2VsZWN0ZWRJdGVtcyk7
CisgICAgICAgIHJldHVybiBzZWxlY3RlZEl0ZW1zLnNpemUoKSA9PSAwOworICAgIH0KKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBBdGtPYmplY3QqIHdlYmtpdF9hY2Nlc3NpYmxlX3Nl
bGVjdGlvbl9yZWZfc2VsZWN0aW9uKEF0a1NlbGVjdGlvbiogc2VsZWN0aW9uLCBnaW50IGkpCit7
CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb3B0aW9uID0gb3B0aW9uRnJvbVNlbGVjdGlvbihz
ZWxlY3Rpb24sIGkpOworICAgIGlmIChvcHRpb24pIHsKKyAgICAgICAgQXRrT2JqZWN0KiBjaGls
ZCA9IG9wdGlvbi0+d3JhcHBlcigpOworICAgICAgICBnX29iamVjdF9yZWYoY2hpbGQpOworICAg
ICAgICByZXR1cm4gY2hpbGQ7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBn
aW50IHdlYmtpdF9hY2Nlc3NpYmxlX3NlbGVjdGlvbl9nZXRfc2VsZWN0aW9uX2NvdW50KEF0a1Nl
bGVjdGlvbiogc2VsZWN0aW9uKQoreworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVTZWxl
Y3Rpb24gPSBjb3JlKHNlbGVjdGlvbik7CisgICAgaWYgKGNvcmVTZWxlY3Rpb24gJiYgY29yZVNl
bGVjdGlvbi0+aXNMaXN0Qm94KCkpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVkSXRlbXM7CisgICAgICAgIHN0
YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlMaXN0Qm94Kj4oY29yZVNlbGVjdGlvbiktPnNlbGVjdGVk
Q2hpbGRyZW4oc2VsZWN0ZWRJdGVtcyk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxnaW50
PihzZWxlY3RlZEl0ZW1zLnNpemUoKSk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0
YXRpYyBnYm9vbGVhbiB3ZWJraXRfYWNjZXNzaWJsZV9zZWxlY3Rpb25faXNfY2hpbGRfc2VsZWN0
ZWQoQXRrU2VsZWN0aW9uKiBzZWxlY3Rpb24sIGdpbnQgaSkKK3sKKyAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBvcHRpb24gPSBvcHRpb25Gcm9tTGlzdChzZWxlY3Rpb24sIGkpOworICAgIGlmIChv
cHRpb24gJiYgY29yZShzZWxlY3Rpb24pLT5pc0xpc3RCb3goKSkKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uKj4ob3B0aW9uKS0+aXNTZWxlY3Rl
ZCgpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2Fj
Y2Vzc2libGVfc2VsZWN0aW9uX3JlbW92ZV9zZWxlY3Rpb24oQXRrU2VsZWN0aW9uKiBzZWxlY3Rp
b24sIGdpbnQgaSkKK3sKKyAgICAvLyBUT0RPOiBUaGlzIGlzIG9ubHkgZ2V0dGluZyBjYWxsZWQg
aWYgaSA9PSAwLiBXaGF0IGlzIHByZXZlbnRpbmcgdGhlIHJlc3Q/CisgICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogb3B0aW9uID0gb3B0aW9uRnJvbVNlbGVjdGlvbihzZWxlY3Rpb24sIGkpOworICAg
IGlmIChvcHRpb24gJiYgY29yZShzZWxlY3Rpb24pLT5pc0xpc3RCb3goKSkgeworICAgICAgICBB
Y2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbiogbGlzdEJveE9wdGlvbiA9IHN0YXRpY19jYXN0PEFj
Y2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uKj4ob3B0aW9uKTsKKyAgICAgICAgbGlzdEJveE9wdGlv
bi0+c2V0U2VsZWN0ZWQoZmFsc2UpOworICAgICAgICByZXR1cm4gIWxpc3RCb3hPcHRpb24tPmlz
U2VsZWN0ZWQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBnYm9v
bGVhbiB3ZWJraXRfYWNjZXNzaWJsZV9zZWxlY3Rpb25fc2VsZWN0X2FsbF9zZWxlY3Rpb24oQXRr
U2VsZWN0aW9uKiBzZWxlY3Rpb24pCit7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZVNl
bGVjdGlvbiA9IGNvcmUoc2VsZWN0aW9uKTsKKyAgICBpZiAoIWNvcmVTZWxlY3Rpb24gfHwgIWNv
cmVTZWxlY3Rpb24tPmlzTXVsdGlTZWxlY3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IGNoaWxkcmVuID0gY29yZVNlbGVjdGlvbi0+Y2hpbGRyZW4oKTsKKyAgICBpZiAoY29yZVNlbGVj
dGlvbi0+aXNMaXN0Qm94KCkpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eUxpc3RCb3gqIGxpc3RC
b3ggPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5TGlzdEJveCo+KGNvcmVTZWxlY3Rpb24pOwor
ICAgICAgICBsaXN0Qm94LT5zZXRTZWxlY3RlZENoaWxkcmVuKGNoaWxkcmVuKTsKKyAgICAgICAg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNl
bGVjdGVkSXRlbXM7CisgICAgICAgIGxpc3RCb3gtPnNlbGVjdGVkQ2hpbGRyZW4oc2VsZWN0ZWRJ
dGVtcyk7CisgICAgICAgIHJldHVybiBzZWxlY3RlZEl0ZW1zLnNpemUoKSA9PSBjaGlsZHJlbi5z
aXplKCk7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgdm9pZCBhdGtf
c2VsZWN0aW9uX2ludGVyZmFjZV9pbml0KEF0a1NlbGVjdGlvbklmYWNlKiBpZmFjZSkKK3sKKyAg
ICBpZmFjZS0+YWRkX3NlbGVjdGlvbiA9IHdlYmtpdF9hY2Nlc3NpYmxlX3NlbGVjdGlvbl9hZGRf
c2VsZWN0aW9uOworICAgIGlmYWNlLT5jbGVhcl9zZWxlY3Rpb24gPSB3ZWJraXRfYWNjZXNzaWJs
ZV9zZWxlY3Rpb25fY2xlYXJfc2VsZWN0aW9uOworICAgIGlmYWNlLT5yZWZfc2VsZWN0aW9uID0g
d2Via2l0X2FjY2Vzc2libGVfc2VsZWN0aW9uX3JlZl9zZWxlY3Rpb247CisgICAgaWZhY2UtPmdl
dF9zZWxlY3Rpb25fY291bnQgPSB3ZWJraXRfYWNjZXNzaWJsZV9zZWxlY3Rpb25fZ2V0X3NlbGVj
dGlvbl9jb3VudDsKKyAgICBpZmFjZS0+aXNfY2hpbGRfc2VsZWN0ZWQgPSB3ZWJraXRfYWNjZXNz
aWJsZV9zZWxlY3Rpb25faXNfY2hpbGRfc2VsZWN0ZWQ7CisgICAgaWZhY2UtPnJlbW92ZV9zZWxl
Y3Rpb24gPSB3ZWJraXRfYWNjZXNzaWJsZV9zZWxlY3Rpb25fcmVtb3ZlX3NlbGVjdGlvbjsKKyAg
ICBpZmFjZS0+c2VsZWN0X2FsbF9zZWxlY3Rpb24gPSB3ZWJraXRfYWNjZXNzaWJsZV9zZWxlY3Rp
b25fc2VsZWN0X2FsbF9zZWxlY3Rpb247Cit9CisKIC8vIFRleHQKIAogc3RhdGljIGdjaGFyKiB3
ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF90ZXh0KEF0a1RleHQqIHRleHQsIGdpbnQgc3RhcnRP
ZmZzZXQsIGdpbnQgZW5kT2Zmc2V0KQpAQCAtMTIzNiw2ICsxMzgxLDggQEAgc3RhdGljIHZvaWQg
YXRrX3RhYmxlX2ludGVyZmFjZV9pbml0KEF0a1RhYmxlSWZhY2UqIGlmYWNlKQogc3RhdGljIGNv
bnN0IEdJbnRlcmZhY2VJbmZvIEF0a0ludGVyZmFjZXNJbml0RnVuY3Rpb25zW10gPSB7CiAgICAg
eyhHSW50ZXJmYWNlSW5pdEZ1bmMpYXRrX2FjdGlvbl9pbnRlcmZhY2VfaW5pdCwKICAgICAgKEdJ
bnRlcmZhY2VGaW5hbGl6ZUZ1bmMpIE5VTEwsIE5VTEx9LAorICAgIHsoR0ludGVyZmFjZUluaXRG
dW5jKWF0a19zZWxlY3Rpb25faW50ZXJmYWNlX2luaXQsCisgICAgIChHSW50ZXJmYWNlRmluYWxp
emVGdW5jKSBOVUxMLCBOVUxMfSwKICAgICB7KEdJbnRlcmZhY2VJbml0RnVuYylhdGtfZWRpdGFi
bGVfdGV4dF9pbnRlcmZhY2VfaW5pdCwKICAgICAgKEdJbnRlcmZhY2VGaW5hbGl6ZUZ1bmMpIE5V
TEwsIE5VTEx9LAogICAgIHsoR0ludGVyZmFjZUluaXRGdW5jKWF0a190ZXh0X2ludGVyZmFjZV9p
bml0LApAQCAtMTI1MCw2ICsxMzk3LDcgQEAgc3RhdGljIGNvbnN0IEdJbnRlcmZhY2VJbmZvIEF0
a0ludGVyZmFjZXNJbml0RnVuY3Rpb25zW10gPSB7CiAKIGVudW0gV0FJVHlwZSB7CiAgICAgV0FJ
X0FDVElPTiwKKyAgICBXQUlfU0VMRUNUSU9OLAogICAgIFdBSV9FRElUQUJMRV9URVhULAogICAg
IFdBSV9URVhULAogICAgIFdBSV9DT01QT05FTlQsCkBAIC0xMjYyLDYgKzE0MTAsOCBAQCBzdGF0
aWMgR1R5cGUgR2V0QXRrSW50ZXJmYWNlVHlwZUZyb21XQUlUeXBlKFdBSVR5cGUgdHlwZSkKICAg
c3dpdGNoICh0eXBlKSB7CiAgIGNhc2UgV0FJX0FDVElPTjoKICAgICAgIHJldHVybiBBVEtfVFlQ
RV9BQ1RJT047CisgIGNhc2UgV0FJX1NFTEVDVElPTjoKKyAgICAgIHJldHVybiBBVEtfVFlQRV9T
RUxFQ1RJT047CiAgIGNhc2UgV0FJX0VESVRBQkxFX1RFWFQ6CiAgICAgICByZXR1cm4gQVRLX1RZ
UEVfRURJVEFCTEVfVEVYVDsKICAgY2FzZSBXQUlfVEVYVDoKQEAgLTEyODgsNiArMTQzOCwxMCBA
QCBzdGF0aWMgZ3VpbnQxNiBnZXRJbnRlcmZhY2VNYXNrRnJvbU9iamVjdChBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBjb3JlT2JqZWN0KQogICAgIGlmICghY29yZU9iamVjdC0+YWN0aW9uVmVyYigpLmlz
RW1wdHkoKSkKICAgICAgICAgaW50ZXJmYWNlTWFzayB8PSAxIDw8IFdBSV9BQ1RJT047CiAKKyAg
ICAvLyBTZWxlY3Rpb24KKyAgICBpZiAoY29yZU9iamVjdC0+aXNMaXN0Qm94KCkpCisgICAgICAg
IGludGVyZmFjZU1hc2sgfD0gMSA8PCBXQUlfU0VMRUNUSU9OOworCiAgICAgLy8gVGV4dCAmIEVk
aXRhYmxlIFRleHQKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gY29yZU9iamVjdC0+cm9s
ZVZhbHVlKCk7CiAKLS0gCjEuNi4zLjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72945</attachid>
            <date>2010-11-04 08:38:54 -0700</date>
            <delta_ts>2010-11-08 10:46:45 -0800</delta_ts>
            <desc>Part 3 - emit &apos;selected&apos; and &apos;focused&apos; signals</desc>
            <filename>0001-2010-11-04-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>6520</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSBjM2M3NmU5ZGY3YjEwMTVmZWVkOTc4OWI2OTY2YTk3MmQ2MThkYjc4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBUaHUsIDQgTm92IDIwMTAgMTY6MzY6MjEgKzAxMDAKU3ViamVjdDogW1BBVENI
XSAyMDEwLTExLTA0ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4K
CiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIFtHVEtdIEltcHJv
dmUgYWNjZXNzaWJpbGl0eSBvZiBmb2N1c2FibGUgbGlzdHMKICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU2NzkKCiAgICAgICAgRW1pdCB0aGUgJ3NlbGVj
dGVkJyBhbmQgJ2ZvY3VzZWQnIGV2ZW50cyBhcyBuZWVkZWQuCgogICAgICAgIFRoaXMgaXMgdGhl
IGxhc3QgYml0IG9mIGEgc2VyaWVzIG9mIHBhdGNoZXMgdG8gZml4IGJ1ZyAyNTY3OSwKICAgICAg
ICB3aGljaCBqdXN0IGVuc3VyZXMgdGhhdCB0aGUgcmlnaHQgc2lnbmFscyBhcmUgZW1taXRlZCB3
aGVuZXZlciBhCiAgICAgICAgc2VsZWN0aW9uIGluc2lkZSBhIGxpc3Rib3ggb2JqZWN0IGNoYW5n
ZXMsIHRoYXQgaXMsIHRoZSBzaWduYWxzCiAgICAgICAgJ3N0YXRlLWNoYW5nZWQ6OnNlbGVjdGVk
JywgJ3N0YXRlLWNoYW5nZWQ6OmZvY3VzZWQnIGFuZAogICAgICAgICdmb2N1cy1ldmVudCcsIGFs
b25nIHdpdGggYXByb3ByaWF0ZSBkZXRhaWwgYWxvbmcgd2l0aCBlYWNoIG9mCiAgICAgICAgdGhl
bSB0byByZXBvcnQgaWYgdGhlIGZvY3VzL3NlbGVjdGlvbiBoYXMgYmVlbiBhY3RpdmF0ZWQgb3Ig
bm90LgoKICAgICAgICAqIGFjY2Vzc2liaWxpdHkvZ3RrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwOgog
ICAgICAgIChXZWJDb3JlOjpub3RpZnlDaGlsZHJlblNlbGVjdGlvbkNoYW5nZSk6IE5ldywgdGFr
ZXMgY2FyZSBvZgogICAgICAgIGVtaXR0aW5nIGFsbCB0aGUgbmVlZGVkIHNpZ25hbHMgd2hlbiBj
aGlsZHJlbiBzZWxlY3Rpb24gaGFzCiAgICAgICAgY2hhbmdlZCwgYm90aCBmcm9tIHRoZSBwb2lu
dCBvZiB2aWV3IG9mIHRoZSBjb250YWluZXIgYW5kIHRoZQogICAgICAgIHNlbGVjdGVkL3Vuc2Vs
ZWN0ZWQgaXRlbXMgaW5zaWRlIG9mIGl0LiBJdCBjdXJyZW50bHkgc3VwcG9ydHMKICAgICAgICBs
aXN0Ym94ZXMgKGh0bWwgJ3NlbGVjdCcgY29udHJvbHMpIG9ubHkuCiAgICAgICAgKFdlYkNvcmU6
OkFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbik6IFJlcGxhY2VkIHNvbWUK
ICAgICAgICBvbGQgY29kZSB3aXRoIGEgc2ltcGxlIGNhbGwgdG8gbm90aWZ5Q2hpbGRyZW5TZWxl
Y3Rpb25DaGFuZ2UoKS4KLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAyNSArKysrKysrKysrKwogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9B
WE9iamVjdENhY2hlQXRrLmNwcCB8ICAgNTQgKysrKysrKysrKysrKysrKysrKysrLS0KIDIgZmls
ZXMgY2hhbmdlZCwgNzQgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg
YS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDM5M2U1MjIuLmE3
Y2IxNDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTAtMTEtMDQgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxt
c2FuY2hlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFtHVEtdIEltcHJvdmUgYWNjZXNzaWJpbGl0eSBvZiBmb2N1c2FibGUgbGlz
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1Njc5
CisKKyAgICAgICAgRW1pdCB0aGUgJ3NlbGVjdGVkJyBhbmQgJ2ZvY3VzZWQnIGV2ZW50cyBhcyBu
ZWVkZWQuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgbGFzdCBiaXQgb2YgYSBzZXJpZXMgb2YgcGF0
Y2hlcyB0byBmaXggYnVnIDI1Njc5LAorICAgICAgICB3aGljaCBqdXN0IGVuc3VyZXMgdGhhdCB0
aGUgcmlnaHQgc2lnbmFscyBhcmUgZW1taXRlZCB3aGVuZXZlciBhCisgICAgICAgIHNlbGVjdGlv
biBpbnNpZGUgYSBsaXN0Ym94IG9iamVjdCBjaGFuZ2VzLCB0aGF0IGlzLCB0aGUgc2lnbmFscwor
ICAgICAgICAnc3RhdGUtY2hhbmdlZDo6c2VsZWN0ZWQnLCAnc3RhdGUtY2hhbmdlZDo6Zm9jdXNl
ZCcgYW5kCisgICAgICAgICdmb2N1cy1ldmVudCcsIGFsb25nIHdpdGggYXByb3ByaWF0ZSBkZXRh
aWwgYWxvbmcgd2l0aCBlYWNoIG9mCisgICAgICAgIHRoZW0gdG8gcmVwb3J0IGlmIHRoZSBmb2N1
cy9zZWxlY3Rpb24gaGFzIGJlZW4gYWN0aXZhdGVkIG9yIG5vdC4KKworICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvZ3RrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm90
aWZ5Q2hpbGRyZW5TZWxlY3Rpb25DaGFuZ2UpOiBOZXcsIHRha2VzIGNhcmUgb2YKKyAgICAgICAg
ZW1pdHRpbmcgYWxsIHRoZSBuZWVkZWQgc2lnbmFscyB3aGVuIGNoaWxkcmVuIHNlbGVjdGlvbiBo
YXMKKyAgICAgICAgY2hhbmdlZCwgYm90aCBmcm9tIHRoZSBwb2ludCBvZiB2aWV3IG9mIHRoZSBj
b250YWluZXIgYW5kIHRoZQorICAgICAgICBzZWxlY3RlZC91bnNlbGVjdGVkIGl0ZW1zIGluc2lk
ZSBvZiBpdC4gSXQgY3VycmVudGx5IHN1cHBvcnRzCisgICAgICAgIGxpc3Rib3hlcyAoaHRtbCAn
c2VsZWN0JyBjb250cm9scykgb25seS4KKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6
OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbik6IFJlcGxhY2VkIHNvbWUKKyAgICAgICAgb2xkIGNv
ZGUgd2l0aCBhIHNpbXBsZSBjYWxsIHRvIG5vdGlmeUNoaWxkcmVuU2VsZWN0aW9uQ2hhbmdlKCku
CisKIDIwMTAtMTEtMDEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2ZSBIeWF0dC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9ndGsvQVhPYmplY3RDYWNoZUF0ay5jcHAgYi9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvZ3RrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCmluZGV4IGE0ZWE4N2MuLjg1NGE4NDcgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQVhPYmplY3RDYWNoZUF0ay5jcHAKKysr
IGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BWE9iamVjdENhY2hlQXRrLmNwcApAQCAtMjUs
NiArMjUsNyBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCIKICNpbmNs
dWRlICJHT3duUHRyLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKKyNpbmNsdWRlICJTZWxlY3RFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTQxLDE3ICs0Miw2MCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmF0dGFjaFdyYXBwZXIoQWNj
ZXNzaWJpbGl0eU9iamVjdCogb2JqKQogICAgIGdfb2JqZWN0X3VucmVmKGF0a09iaik7CiB9CiAK
K3N0YXRpYyB2b2lkIG5vdGlmeUNoaWxkcmVuU2VsZWN0aW9uQ2hhbmdlKEFjY2Vzc2liaWxpdHlP
YmplY3QqIG9iamVjdCkKK3sKKyAgICAvLyBPbmx5IGxpc3QgYm94ZXMgc3VwcG9ydGVkIHNvIGZh
ci4KKyAgICBpZiAoIW9iamVjdCB8fCAhb2JqZWN0LT5pc0xpc3RCb3goKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gRW1pdCBzaWduYWwgZnJvbSB0aGUgbGlzdGJveCdzIHBvaW50IG9mIHZp
ZXcgZmlyc3QuCisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG9iamVjdC0+d3JhcHBlcigpLCAi
c2VsZWN0aW9uLWNoYW5nZWQiKTsKKworICAgIC8vIEZpbmQgdGhlIGl0ZW0gd2hlcmUgdGhlIHNl
bGVjdGlvbiBjaGFuZ2Ugd2FzIHRyaWdnZXJlZCBmcm9tLgorICAgIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBpdGVtcyA9IG9iamVjdC0+Y2hp
bGRyZW4oKTsKKyAgICBTZWxlY3RFbGVtZW50KiBzZWxlY3QgPSB0b1NlbGVjdEVsZW1lbnQoc3Rh
dGljX2Nhc3Q8RWxlbWVudCo+KG9iamVjdC0+bm9kZSgpKSk7CisgICAgaW50IGNoYW5nZWRJdGVt
SW5kZXggPSBzZWxlY3QtPmFjdGl2ZVNlbGVjdGlvblN0YXJ0TGlzdEluZGV4KCk7CisgICAgaWYg
KGNoYW5nZWRJdGVtSW5kZXggPCAwIHx8IGNoYW5nZWRJdGVtSW5kZXggPj0gKGludClpdGVtcy5z
aXplKCkpCisgICAgICAgIHJldHVybjsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBpdGVtID0g
aXRlbXMuYXQoY2hhbmdlZEl0ZW1JbmRleCkuZ2V0KCk7CisKKyAgICAvLyBFbnN1cmUgdGhlIG9s
ZEZvY3VzZWRPYmplY3QgYmVsb25ncyB0byB0aGUgc2FtZSBkb2N1bWVudCB0aGF0CisgICAgLy8g
dGhlIGN1cnJlbnQgaXRlbSBzbyBmdXJ0aGVyIGNvbXBhcmlzb25zIG1ha2Ugc2Vuc2UuIE90aGVy
d2lzZSwKKyAgICAvLyBqdXN0IHJlc2V0IG9sZEZvY3VzZWRPYmplY3Qgc28gaXQgd29uJ3QgYmUg
dGFrZW4gaW50byBhY2NvdW50LgorICAgIHN0YXRpYyBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVj
dD4gb2xkRm9jdXNlZE9iamVjdDsKKyAgICBpZiAoaXRlbSAmJiBvbGRGb2N1c2VkT2JqZWN0ICYm
IGl0ZW0tPmRvY3VtZW50KCkgIT0gb2xkRm9jdXNlZE9iamVjdC0+ZG9jdW1lbnQoKSkKKyAgICAg
ICAgb2xkRm9jdXNlZE9iamVjdCA9IDA7CisKKyAgICBBdGtPYmplY3QqIGF4SXRlbSA9IGl0ZW0g
PyBpdGVtLT53cmFwcGVyKCkgOiAwOworICAgIEF0a09iamVjdCogYXhPbGRGb2N1c2VkT2JqZWN0
ID0gb2xkRm9jdXNlZE9iamVjdCA/IG9sZEZvY3VzZWRPYmplY3QtPndyYXBwZXIoKSA6IDA7CisK
KyAgICAvLyBPbGQgZm9jdXNlZCBvYmplY3QganVzdCBsb3N0IGZvY3VzLCBzbyBlbWl0IHRoZSBl
dmVudHMuCisgICAgaWYgKGF4T2xkRm9jdXNlZE9iamVjdCAmJiBheEl0ZW0gIT0gYXhPbGRGb2N1
c2VkT2JqZWN0KSB7CisgICAgICAgIGJvb2wgaXNTZWxlY3RlZCA9IG9sZEZvY3VzZWRPYmplY3Qt
PmlzU2VsZWN0ZWQoKTsKKyAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGF4T2xkRm9jdXNl
ZE9iamVjdCwgImZvY3VzLWV2ZW50IiwgZmFsc2UpOworICAgICAgICBnX3NpZ25hbF9lbWl0X2J5
X25hbWUoYXhPbGRGb2N1c2VkT2JqZWN0LCAic3RhdGUtY2hhbmdlIiwgImZvY3VzZWQiLCBmYWxz
ZSk7CisgICAgfQorCisgICAgLy8gRW1pdCBuZWVkZWQgZXZlbnRzIGZvciB0aGUgY3VycmVudGx5
ICh1bilzZWxlY3RlZCBpdGVtLgorICAgIGlmIChheEl0ZW0pIHsKKyAgICAgICAgYm9vbCBpc1Nl
bGVjdGVkID0gaXRlbS0+aXNTZWxlY3RlZCgpOworICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25h
bWUoYXhJdGVtLCAic3RhdGUtY2hhbmdlIiwgInNlbGVjdGVkIiwgaXNTZWxlY3RlZCk7CisgICAg
ICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShheEl0ZW0sICJmb2N1cy1ldmVudCIsIGlzU2VsZWN0
ZWQpOworICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUoYXhJdGVtLCAic3RhdGUtY2hhbmdl
IiwgImZvY3VzZWQiLCBpc1NlbGVjdGVkKTsKKyAgICB9CisKKyAgICAvLyBVcGRhdGUgcG9pbnRl
ciB0byB0aGUgcHJldmlvdXNseSBmb2N1c2VkIG9iamVjdC4KKyAgICBvbGRGb2N1c2VkT2JqZWN0
ID0gaXRlbTsKK30KKwogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRp
b24oQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgQVhOb3RpZmljYXRpb24gbm90aWZp
Y2F0aW9uKQogewogICAgIGlmIChub3RpZmljYXRpb24gPT0gQVhDaGVja2VkU3RhdGVDaGFuZ2Vk
KSB7CiAgICAgICAgIGlmICghY29yZU9iamVjdC0+aXNDaGVja2JveE9yUmFkaW8oKSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGNvcmVPYmplY3Qt
PndyYXBwZXIoKSwgInN0YXRlLWNoYW5nZSIsICJjaGVja2VkIiwgY29yZU9iamVjdC0+aXNDaGVj
a2VkKCkpOwotICAgIH0gZWxzZSBpZiAobm90aWZpY2F0aW9uID09IEFYU2VsZWN0ZWRDaGlsZHJl
bkNoYW5nZWQpIHsKLSAgICAgICAgaWYgKCFjb3JlT2JqZWN0LT5pc0xpc3RCb3goKSkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGNvcmVPYmplY3Qt
PndyYXBwZXIoKSwgInNlbGVjdGlvbi1jaGFuZ2VkIik7Ci0gICAgfQorICAgIH0gZWxzZSBpZiAo
bm90aWZpY2F0aW9uID09IEFYU2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQpCisgICAgICAgIG5vdGlm
eUNoaWxkcmVuU2VsZWN0aW9uQ2hhbmdlKGNvcmVPYmplY3QpOwogfQogCiBzdGF0aWMgdm9pZCBl
bWl0VGV4dENoYW5nZWQoQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCogb2JqZWN0LCBBWE9iamVj
dENhY2hlOjpBWFRleHRDaGFuZ2UgdGV4dENoYW5nZSwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25l
ZCBjb3VudCkKLS0gCjEuNy4yLjMKCg==
</data>
<flag name="review"
          id="63288"
          type_id="1"
          status="-"
          setter="cfleizach"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73250</attachid>
            <date>2010-11-08 10:46:45 -0800</date>
            <delta_ts>2010-11-09 19:44:52 -0800</delta_ts>
            <desc>Part 3 - emit &apos;selected&apos; and &apos;focused&apos; signals</desc>
            <filename>0001-2010-11-08-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>6693</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSA2OTJkNjgxYmQ0NWUzYzQ1OGM0NTZjNGZkOTk3YWE0Njg1NTI0NjI4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBUaHUsIDQgTm92IDIwMTAgMTY6MzY6MjEgKzAxMDAKU3ViamVjdDogW1BBVENI
XSAyMDEwLTExLTA4ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4K
CiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIFtHVEtdIEltcHJv
dmUgYWNjZXNzaWJpbGl0eSBvZiBmb2N1c2FibGUgbGlzdHMKICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU2NzkKCiAgICAgICAgRW1pdCB0aGUgJ3NlbGVj
dGVkJyBhbmQgJ2ZvY3VzZWQnIGV2ZW50cyBhcyBuZWVkZWQuCgogICAgICAgIFRoaXMgaXMgdGhl
IGxhc3QgYml0IG9mIGEgc2VyaWVzIG9mIHBhdGNoZXMgdG8gZml4IGJ1ZyAyNTY3OSwKICAgICAg
ICB3aGljaCBqdXN0IGVuc3VyZXMgdGhhdCB0aGUgcmlnaHQgc2lnbmFscyBhcmUgZW1taXRlZCB3
aGVuZXZlciBhCiAgICAgICAgc2VsZWN0aW9uIGluc2lkZSBhIGxpc3Rib3ggb2JqZWN0IGNoYW5n
ZXMsIHRoYXQgaXMsIHRoZSBzaWduYWxzCiAgICAgICAgJ3N0YXRlLWNoYW5nZWQ6OnNlbGVjdGVk
JywgJ3N0YXRlLWNoYW5nZWQ6OmZvY3VzZWQnIGFuZAogICAgICAgICdmb2N1cy1ldmVudCcsIGFs
b25nIHdpdGggdGhlIHJpZ2h0IGRldGFpbCBmb3IgZWFjaCBvZiB0aGVtIHRvCiAgICAgICAgcmVw
b3J0IGlmIHRoZSBmb2N1cy9zZWxlY3Rpb24gaGFzIGJlZW4gYWN0aXZhdGVkIG9yIG5vdC4KCiAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L2d0ay9BWE9iamVjdENhY2hlQXRrLmNwcDoKICAgICAgICAo
V2ViQ29yZTo6bm90aWZ5Q2hpbGRyZW5TZWxlY3Rpb25DaGFuZ2UpOiBOZXcsIHRha2VzIGNhcmUg
b2YKICAgICAgICBlbWl0dGluZyBhbGwgdGhlIG5lZWRlZCBzaWduYWxzIHdoZW4gY2hpbGRyZW4g
c2VsZWN0aW9uIGhhcwogICAgICAgIGNoYW5nZWQsIGJvdGggZnJvbSB0aGUgcG9pbnQgb2Ygdmll
dyBvZiB0aGUgY29udGFpbmVyIGFuZCB0aGUKICAgICAgICBzZWxlY3RlZC91bnNlbGVjdGVkIGl0
ZW1zIGluc2lkZSBvZiBpdC4gSXQgY3VycmVudGx5IHN1cHBvcnRzCiAgICAgICAgbGlzdGJveGVz
IChodG1sICdzZWxlY3QnIGNvbnRyb2xzKSBvbmx5LgogICAgICAgIChXZWJDb3JlOjpBWE9iamVj
dENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24pOiBSZXBsYWNlZCBzb21lCiAgICAgICAg
b2xkIGNvZGUgd2l0aCBhIHNpbXBsZSBjYWxsIHRvIG5vdGlmeUNoaWxkcmVuU2VsZWN0aW9uQ2hh
bmdlKCkuCi0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMjUgKysrKysrKysrKwogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BWE9iamVjdENh
Y2hlQXRrLmNwcCB8ICAgNTkgKysrKysrKysrKysrKysrKysrKysrKy0tCiAyIGZpbGVzIGNoYW5n
ZWQsIDc5IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzOTNlNTIyLi5jMThmYzZhIDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI4IEBACisyMDEwLTExLTA4ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpA
aWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBbR1RLXSBJbXByb3ZlIGFjY2Vzc2liaWxpdHkgb2YgZm9jdXNhYmxlIGxpc3RzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTY3OQorCisgICAg
ICAgIEVtaXQgdGhlICdzZWxlY3RlZCcgYW5kICdmb2N1c2VkJyBldmVudHMgYXMgbmVlZGVkLgor
CisgICAgICAgIFRoaXMgaXMgdGhlIGxhc3QgYml0IG9mIGEgc2VyaWVzIG9mIHBhdGNoZXMgdG8g
Zml4IGJ1ZyAyNTY3OSwKKyAgICAgICAgd2hpY2gganVzdCBlbnN1cmVzIHRoYXQgdGhlIHJpZ2h0
IHNpZ25hbHMgYXJlIGVtbWl0ZWQgd2hlbmV2ZXIgYQorICAgICAgICBzZWxlY3Rpb24gaW5zaWRl
IGEgbGlzdGJveCBvYmplY3QgY2hhbmdlcywgdGhhdCBpcywgdGhlIHNpZ25hbHMKKyAgICAgICAg
J3N0YXRlLWNoYW5nZWQ6OnNlbGVjdGVkJywgJ3N0YXRlLWNoYW5nZWQ6OmZvY3VzZWQnIGFuZAor
ICAgICAgICAnZm9jdXMtZXZlbnQnLCBhbG9uZyB3aXRoIHRoZSByaWdodCBkZXRhaWwgZm9yIGVh
Y2ggb2YgdGhlbSB0bworICAgICAgICByZXBvcnQgaWYgdGhlIGZvY3VzL3NlbGVjdGlvbiBoYXMg
YmVlbiBhY3RpdmF0ZWQgb3Igbm90LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9ndGsvQVhP
YmplY3RDYWNoZUF0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub3RpZnlDaGlsZHJlblNlbGVj
dGlvbkNoYW5nZSk6IE5ldywgdGFrZXMgY2FyZSBvZgorICAgICAgICBlbWl0dGluZyBhbGwgdGhl
IG5lZWRlZCBzaWduYWxzIHdoZW4gY2hpbGRyZW4gc2VsZWN0aW9uIGhhcworICAgICAgICBjaGFu
Z2VkLCBib3RoIGZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2YgdGhlIGNvbnRhaW5lciBhbmQgdGhl
CisgICAgICAgIHNlbGVjdGVkL3Vuc2VsZWN0ZWQgaXRlbXMgaW5zaWRlIG9mIGl0LiBJdCBjdXJy
ZW50bHkgc3VwcG9ydHMKKyAgICAgICAgbGlzdGJveGVzIChodG1sICdzZWxlY3QnIGNvbnRyb2xz
KSBvbmx5LgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90
aWZpY2F0aW9uKTogUmVwbGFjZWQgc29tZQorICAgICAgICBvbGQgY29kZSB3aXRoIGEgc2ltcGxl
IGNhbGwgdG8gbm90aWZ5Q2hpbGRyZW5TZWxlY3Rpb25DaGFuZ2UoKS4KKwogMjAxMC0xMS0wMSAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYXZlIEh5YXR0LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9B
WE9iamVjdENhY2hlQXRrLmNwcCBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQVhPYmplY3RD
YWNoZUF0ay5jcHAKaW5kZXggYTRlYTg3Yy4uNDIxNmJlNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2d0ay9BWE9iamVjdENhY2hlQXRrLmNwcAorKysgYi9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvZ3RrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5j
bHVkZSAiQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIkdPd25QdHIuaCIK
ICNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlNlbGVjdEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJUZXh0SXRlcmF0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDEsMTcgKzQyLDY1
IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6YXR0YWNoV3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBvYmopCiAgICAgZ19vYmplY3RfdW5yZWYoYXRrT2JqKTsKIH0KIAorc3RhdGljIHZvaWQgbm90
aWZ5Q2hpbGRyZW5TZWxlY3Rpb25DaGFuZ2UoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQor
eworICAgIC8vIFRoaXMgc3RhdGljIHZhcmlhYmxlIGlzIG5lZWRlZCB0byBrZWVwIHRyYWNrIG9m
IHRoZSBvbGQgZm9jdXNlZAorICAgIC8vIG9iamVjdCBhcyBwZXIgcHJldmlvdXMgY2FsbHMgdG8g
dGhpcyBmdW5jdGlvbiwgaW4gb3JkZXIgdG8KKyAgICAvLyBwcm9wZXJseSBkZWNpZGUgd2hldGhl
ciB0byBlbWl0IHNvbWUgc2lnbmFscyBvciBub3QuCisgICAgc3RhdGljIFJlZlB0cjxBY2Nlc3Np
YmlsaXR5T2JqZWN0PiBvbGRGb2N1c2VkT2JqZWN0ID0gMDsKKworICAgIC8vIE9ubHkgbGlzdCBi
b3hlcyBzdXBwb3J0ZWQgc28gZmFyLgorICAgIGlmICghb2JqZWN0IHx8ICFvYmplY3QtPmlzTGlz
dEJveCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBFbWl0IHNpZ25hbCBmcm9tIHRoZSBs
aXN0Ym94J3MgcG9pbnQgb2YgdmlldyBmaXJzdC4KKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUo
b2JqZWN0LT53cmFwcGVyKCksICJzZWxlY3Rpb24tY2hhbmdlZCIpOworCisgICAgLy8gRmluZCB0
aGUgaXRlbSB3aGVyZSB0aGUgc2VsZWN0aW9uIGNoYW5nZSB3YXMgdHJpZ2dlcmVkIGZyb20uCisg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGl0ZW1z
ID0gb2JqZWN0LT5jaGlsZHJlbigpOworICAgIFNlbGVjdEVsZW1lbnQqIHNlbGVjdCA9IHRvU2Vs
ZWN0RWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4ob2JqZWN0LT5ub2RlKCkpKTsKKyAgICBp
ZiAoIXNlbGVjdCkKKyAgICAgICAgcmV0dXJuOworICAgIGludCBjaGFuZ2VkSXRlbUluZGV4ID0g
c2VsZWN0LT5hY3RpdmVTZWxlY3Rpb25TdGFydExpc3RJbmRleCgpOworICAgIGlmIChjaGFuZ2Vk
SXRlbUluZGV4IDwgMCB8fCBjaGFuZ2VkSXRlbUluZGV4ID49IHN0YXRpY19jYXN0PGludD4oaXRl
bXMuc2l6ZSgpKSkKKyAgICAgICAgcmV0dXJuOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGl0
ZW0gPSBpdGVtcy5hdChjaGFuZ2VkSXRlbUluZGV4KS5nZXQoKTsKKworICAgIC8vIEVuc3VyZSB0
aGUgb2xkRm9jdXNlZE9iamVjdCBiZWxvbmdzIHRvIHRoZSBzYW1lIGRvY3VtZW50IHRoYXQKKyAg
ICAvLyB0aGUgY3VycmVudCBpdGVtIHNvIGZ1cnRoZXIgY29tcGFyaXNvbnMgbWFrZSBzZW5zZS4g
T3RoZXJ3aXNlLAorICAgIC8vIGp1c3QgcmVzZXQgb2xkRm9jdXNlZE9iamVjdCBzbyBpdCB3b24n
dCBiZSB0YWtlbiBpbnRvIGFjY291bnQuCisgICAgaWYgKGl0ZW0gJiYgb2xkRm9jdXNlZE9iamVj
dCAmJiBpdGVtLT5kb2N1bWVudCgpICE9IG9sZEZvY3VzZWRPYmplY3QtPmRvY3VtZW50KCkpCisg
ICAgICAgIG9sZEZvY3VzZWRPYmplY3QgPSAwOworCisgICAgQXRrT2JqZWN0KiBheEl0ZW0gPSBp
dGVtID8gaXRlbS0+d3JhcHBlcigpIDogMDsKKyAgICBBdGtPYmplY3QqIGF4T2xkRm9jdXNlZE9i
amVjdCA9IG9sZEZvY3VzZWRPYmplY3QgPyBvbGRGb2N1c2VkT2JqZWN0LT53cmFwcGVyKCkgOiAw
OworCisgICAgLy8gT2xkIGZvY3VzZWQgb2JqZWN0IGp1c3QgbG9zdCBmb2N1cywgc28gZW1pdCB0
aGUgZXZlbnRzLgorICAgIGlmIChheE9sZEZvY3VzZWRPYmplY3QgJiYgYXhJdGVtICE9IGF4T2xk
Rm9jdXNlZE9iamVjdCkgeworICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUoYXhPbGRGb2N1
c2VkT2JqZWN0LCAiZm9jdXMtZXZlbnQiLCBmYWxzZSk7CisgICAgICAgIGdfc2lnbmFsX2VtaXRf
YnlfbmFtZShheE9sZEZvY3VzZWRPYmplY3QsICJzdGF0ZS1jaGFuZ2UiLCAiZm9jdXNlZCIsIGZh
bHNlKTsKKyAgICB9CisKKyAgICAvLyBFbWl0IG5lZWRlZCBldmVudHMgZm9yIHRoZSBjdXJyZW50
bHkgKHVuKXNlbGVjdGVkIGl0ZW0uCisgICAgaWYgKGF4SXRlbSkgeworICAgICAgICBib29sIGlz
U2VsZWN0ZWQgPSBpdGVtLT5pc1NlbGVjdGVkKCk7CisgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlf
bmFtZShheEl0ZW0sICJzdGF0ZS1jaGFuZ2UiLCAic2VsZWN0ZWQiLCBpc1NlbGVjdGVkKTsKKyAg
ICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGF4SXRlbSwgImZvY3VzLWV2ZW50IiwgaXNTZWxl
Y3RlZCk7CisgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShheEl0ZW0sICJzdGF0ZS1jaGFu
Z2UiLCAiZm9jdXNlZCIsIGlzU2VsZWN0ZWQpOworICAgIH0KKworICAgIC8vIFVwZGF0ZSBwb2lu
dGVyIHRvIHRoZSBwcmV2aW91c2x5IGZvY3VzZWQgb2JqZWN0LgorICAgIG9sZEZvY3VzZWRPYmpl
Y3QgPSBpdGVtOworfQorCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNh
dGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBBWE5vdGlmaWNhdGlvbiBub3Rp
ZmljYXRpb24pCiB7CiAgICAgaWYgKG5vdGlmaWNhdGlvbiA9PSBBWENoZWNrZWRTdGF0ZUNoYW5n
ZWQpIHsKICAgICAgICAgaWYgKCFjb3JlT2JqZWN0LT5pc0NoZWNrYm94T3JSYWRpbygpKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUoY29yZU9iamVj
dC0+d3JhcHBlcigpLCAic3RhdGUtY2hhbmdlIiwgImNoZWNrZWQiLCBjb3JlT2JqZWN0LT5pc0No
ZWNrZWQoKSk7Ci0gICAgfSBlbHNlIGlmIChub3RpZmljYXRpb24gPT0gQVhTZWxlY3RlZENoaWxk
cmVuQ2hhbmdlZCkgewotICAgICAgICBpZiAoIWNvcmVPYmplY3QtPmlzTGlzdEJveCgpKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUoY29yZU9iamVj
dC0+d3JhcHBlcigpLCAic2VsZWN0aW9uLWNoYW5nZWQiKTsKLSAgICB9CisgICAgfSBlbHNlIGlm
IChub3RpZmljYXRpb24gPT0gQVhTZWxlY3RlZENoaWxkcmVuQ2hhbmdlZCkKKyAgICAgICAgbm90
aWZ5Q2hpbGRyZW5TZWxlY3Rpb25DaGFuZ2UoY29yZU9iamVjdCk7CiB9CiAKIHN0YXRpYyB2b2lk
IGVtaXRUZXh0Q2hhbmdlZChBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KiBvYmplY3QsIEFYT2Jq
ZWN0Q2FjaGU6OkFYVGV4dENoYW5nZSB0ZXh0Q2hhbmdlLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2ln
bmVkIGNvdW50KQotLSAKMS43LjMuMgoK
</data>

          </attachment>
      

    </bug>

</bugzilla>