<?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>25530</bug_id>
          
          <creation_ts>2009-05-03 16:11:45 -0700</creation_ts>
          <short_desc>[Gtk] Implement LABEL_FOR/LABELLED_BY relationship pair for labels</short_desc>
          <delta_ts>2009-10-22 16:08:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>walker.willie</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zecke</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>119744</commentid>
    <comment_count>0</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-05-03 16:11:45 -0700</bug_when>
    <thetext>Steps to reproduce:

1. Open the (to-be) attached test case.

2. In Accerciser, in the pane on the left, select the accessible object associated with the text &quot;First Name:&quot;.

3. In Accerciser, in the pane on the right, choose the Interface Viewer and expand &quot;Accessible&quot;.

Expected results:

1. The accessible would be of ROLE_LABEL.

2. In the &quot;Relations&quot; list, Accerciser would indicate that this accessible is a &quot;Label for&quot; beneath which it would list the accessible entry.

Actual results:

1. The accessible is of ROLE_TEXT.

2. The &quot;Relations&quot; list is empty.

In addition:

The Atk relationship LABEL_FOR has a reciprocal LABELLED_BY relationship (see http://library.gnome.org/devel/atk/unstable/AtkRelation.html#AtkRelationType). It is expected that this would be also be indicated/present for the entry being labelled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119745</commentid>
    <comment_count>1</comment_count>
      <attachid>29968</attachid>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-05-03 16:12:18 -0700</bug_when>
    <thetext>Created attachment 29968
aforementioned test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155442</commentid>
    <comment_count>2</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-10-17 21:31:44 -0700</bug_when>
    <thetext>I&apos;m doing a little bug re-arrangement. Don&apos;t mind me. :-)

Exposing labels as ATK_ROLE_LABEL is now part of bug 25901 as that&apos;s really no different from the role issue around divs.

This bug is now first and foremost about implementing the accessible relationship set for labels (and in general). In addition, we need to be sure that the thing being labelled gets its accessible name from the thing doing the labelling.

BTW, I&apos;ll take this bug. (Doesn&apos;t look like I can change the Assigned To.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155525</commentid>
    <comment_count>3</comment_count>
      <attachid>41386</attachid>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-10-18 14:11:48 -0700</bug_when>
    <thetext>Created attachment 41386
patch to implement the relationship pair - take 1

For some reason I&apos;m not having any luck getting the accessible names to take (which should be the easier of the two parts). Go figure.... Anyhoo, because the two parts are discrete, I figured I&apos;d submit this relationship pair implementation.

General/culture question: Should I hold off on asking for review until I&apos;ve got all the parts ready to go?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155677</commentid>
    <comment_count>4</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-10-19 07:20:17 -0700</bug_when>
    <thetext>Ugh. It seems that controls (at least those of ROLE_ENTRY) base their accessible name on their contents (or lack thereof). My doing atk_object_set_name() on them when I set LABELLED_BY is having no impact. :-(

Therefore, requesting review on the relationship pair patch, which needs doing anyway. Advice on how best (or how at all) I can approach changing the accessible name on these creatures would be awesome. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156288</commentid>
    <comment_count>5</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-10-20 13:55:34 -0700</bug_when>
    <thetext>Xan: Ping. :-)

Since you reviewed the Table Interface patch which I intentionally didn&apos;t ask for a review on, I figured you must have missed this one. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156294</commentid>
    <comment_count>6</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-10-20 14:08:19 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Xan: Ping. :-)
&gt; 
&gt; Since you reviewed the Table Interface patch which I intentionally didn&apos;t ask
&gt; for a review on, I figured you must have missed this one. :-)

I&apos;ll check this one tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156465</commentid>
    <comment_count>7</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-10-21 06:27:16 -0700</bug_when>
    <thetext>Technically it looks fine. The name of the new methods are a bit misleading. When reading them one would expect to see a parameter. Can you come up with a better name?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156472</commentid>
    <comment_count>8</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-10-21 06:53:23 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Technically it looks fine. The name of the new methods are a bit misleading.
&gt; When reading them one would expect to see a parameter. Can you come up with a
&gt; better name?

Thanks for the review! 

Having slept and had some coffee, I do believe I can. :-)

Current:   labeledBy()
Proposed:  getLabelForControl()

Current:   labelFor()
Proposed:  getControlForLabel()

Assuming those are acceptable, and Xan doesn&apos;t find any other issues, I&apos;ll work up a new patch later today. (Doing my DayJob atm.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156477</commentid>
    <comment_count>9</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-10-21 07:03:04 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; Technically it looks fine. The name of the new methods are a bit misleading.
&gt; &gt; When reading them one would expect to see a parameter. Can you come up with a
&gt; &gt; better name?
&gt; 
&gt; Thanks for the review! 
&gt; 
&gt; Having slept and had some coffee, I do believe I can. :-)
&gt; 
&gt; Current:   labeledBy()
&gt; Proposed:  getLabelForControl()
&gt; 
&gt; Current:   labelFor()
&gt; Proposed:  getControlForLabel()

Great, normally we omit the &quot;get&quot; part in methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156590</commentid>
    <comment_count>10</comment_count>
      <attachid>41596</attachid>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-10-21 12:02:03 -0700</bug_when>
    <thetext>Created attachment 41596
patch to implement the relationship pair - take 2

&gt; &gt; Current:   labeledBy()
&gt; &gt; Proposed:  getLabelForControl()
&gt; &gt; 
&gt; &gt; Current:   labelFor()
&gt; &gt; Proposed:  getControlForLabel()
&gt; 
&gt; Great, normally we omit the &quot;get&quot; part in methods.

&lt;slap type=&quot;forehead&quot;&gt;Style Guidelines&lt;/slap&gt; Thanks for the reminder. labelForControl and controlForLabel it is. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156641</commentid>
    <comment_count>11</comment_count>
      <attachid>41596</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-10-21 14:02:39 -0700</bug_when>
    <thetext>Comment on attachment 41596
patch to implement the relationship pair - take 2

&gt; diff --git a/WebCore/accessibility/AccessibilityRenderObject.cpp b/WebCore/accessibility/AccessibilityRenderObject.cpp
&gt; index 834e931..9c1122b 100644
&gt; --- a/WebCore/accessibility/AccessibilityRenderObject.cpp
&gt; +++ b/WebCore/accessibility/AccessibilityRenderObject.cpp
&gt; @@ -930,6 +930,35 @@ static HTMLLabelElement* labelForElement(Element* element)
&gt;      
&gt;      return 0;
&gt;  }
&gt; +
&gt; +AccessibilityObject* AccessibilityRenderObject::labelForControl() const
&gt; +{
&gt; +    if (!m_renderer)
&gt; +        return 0;
&gt; +
&gt; +    Node* node = m_renderer-&gt;node();
&gt; +    if (node &amp;&amp; node-&gt;isHTMLElement()) {
&gt; +        HTMLLabelElement* label = labelForElement(static_cast&lt;Element*&gt;(node));
&gt; +        if (label)
&gt; +            return firstAccessibleObjectFromNode(static_cast&lt;Node*&gt;(label));
&gt; +    }
&gt; +
&gt; +    return 0;
&gt; +}
&gt; +
&gt; +AccessibilityObject* AccessibilityRenderObject::controlForLabel() const
&gt; +{
&gt; +    if (!m_renderer)
&gt; +        return 0;
&gt; +
&gt; +    Node* node = m_renderer-&gt;node();
&gt; +    if (node &amp;&amp; node-&gt;hasTagName(labelTag)) {
&gt; +        HTMLLabelElement* label = static_cast&lt;HTMLLabelElement*&gt;(node);
&gt; +        return firstAccessibleObjectFromNode(static_cast&lt;Node*&gt;(label-&gt;correspondingControl()));
&gt; +    }
&gt; +
&gt; +    return 0;
&gt; +}

I think I prefer to have this as private functions in our code, since they seem somewhat tied to ATK functionality. We can later ask the other ports using a11y if they think this would be useful for them, and we can put it in the crossplatform code.

  
&gt; +static void setAtkRelationSetFromCoreObject(AccessibilityObject* coreObject, AtkRelationSet* relationSet)
&gt; +{
&gt; +    AccessibilityRenderObject* accObject = static_cast&lt;AccessibilityRenderObject*&gt;(coreObject);
&gt; +    if (accObject-&gt;isControl()) {
&gt; +        AccessibilityObject* label = accObject-&gt;labelForControl();
&gt; +        if (label) {
&gt; +            AtkObject* atkLabel = label-&gt;wrapper();
&gt; +            atk_relation_set_add_relation_by_type(relationSet, ATK_RELATION_LABELLED_BY, atkLabel);
&gt; +        }
&gt; +    }
&gt; +    else {

The &apos;else {&apos; goes in the same line than the &apos;}&apos;.

Looks good to me otherwise, marking r- while we change those two details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156672</commentid>
    <comment_count>12</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-10-21 15:48:49 -0700</bug_when>
    <thetext>OK, so, my comment is wrong and silly. The code joannie added originally to AccessibilityRenderObject.cpp can&apos;t be moved elsewhere, since it&apos;s using a static function in that file.

After talking with her on IRC she says she thinks those two functions are pretty basic for any a11y implementation, so let&apos;s try to go with her plan and have those added.

CCing cfleizach@apple.com, which was in the past our a11y contact: can you look at the last patch in the attachment list and see if you are OK with the two functions added to AccessibilityRenderObject?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156700</commentid>
    <comment_count>13</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-10-21 16:24:50 -0700</bug_when>
    <thetext>&gt; CCing cfleizach@apple.com, which was in the past our a11y contact: can you look
&gt; at the last patch in the attachment list and see if you are OK with the two
&gt; functions added to AccessibilityRenderObject?

So there&apos;s already a 
correspondingControlForLabelElement

method in AXRenderObject.cpp. I don&apos;t think there&apos;s a counterpart going the other direction that&apos;s not static however. it seems you should be able to remove/use that method.

Otherwise, i&apos;m OK having a pair to find label/control control/label pairs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157022</commentid>
    <comment_count>14</comment_count>
      <attachid>41689</attachid>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-10-22 15:18:31 -0700</bug_when>
    <thetext>Created attachment 41689
implment relationship pair and set the name

(In reply to comment #13)
&gt; &gt; CCing cfleizach@apple.com, which was in the past our a11y contact: can you look
&gt; &gt; at the last patch in the attachment list and see if you are OK with the two
&gt; &gt; functions added to AccessibilityRenderObject?
&gt; 
&gt; So there&apos;s already a 
&gt; correspondingControlForLabelElement

Yikes. I totally missed that somehow. My apologies.

This patch uses it.
 
&gt; Otherwise, i&apos;m OK having a pair to find label/control control/label pairs

Awesome. Thanks. labelForCorrespondingControlElement added.

This also solves the issue of setting the name, which I mentioned having problems with.

Xan, please review. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157025</commentid>
    <comment_count>15</comment_count>
      <attachid>41690</attachid>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-10-22 15:52:28 -0700</bug_when>
    <thetext>Created attachment 41690
implment relationship pair and set the name - corrected

* Xan recommended correspondingLabelForControlElement instead. Done.
* We both caught a rogue Tab char and left-over include from debugging. Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157026</commentid>
    <comment_count>16</comment_count>
      <attachid>41690</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-10-22 15:55:22 -0700</bug_when>
    <thetext>Comment on attachment 41690
implment relationship pair and set the name - corrected

Looks good to me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157027</commentid>
    <comment_count>17</comment_count>
      <attachid>41690</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-22 16:08:03 -0700</bug_when>
    <thetext>Comment on attachment 41690
implment relationship pair and set the name - corrected

Clearing flags on attachment: 41690

Committed r49958: &lt;http://trac.webkit.org/changeset/49958&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157028</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-22 16:08:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>29968</attachid>
            <date>2009-05-03 16:12:18 -0700</date>
            <delta_ts>2009-05-03 16:12:18 -0700</delta_ts>
            <desc>aforementioned test case</desc>
            <filename>label-relation.html</filename>
            <type>text/html</type>
            <size>186</size>
            <attacher name="Joanmarie Diggs">jdiggs</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8dGl0bGU+TGFiZWwgUmVsYXRpb24gVGVzdDwvdGl0bGU+CjwvaGVhZD4K
PGJvZHk+CjxwPkhlcmUgaXMgYW4gZW50cnkgd2l0aCBhIGxhYmVsOjwvcD4KPGxhYmVsIGZvcj0i
Zm9vIj5GaXJzdCBOYW1lOjwvbGFiZWw+CjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZm9vIiAvPgo8
L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41386</attachid>
            <date>2009-10-18 14:11:48 -0700</date>
            <delta_ts>2009-10-21 12:02:03 -0700</delta_ts>
            <desc>patch to implement the relationship pair - take 1</desc>
            <filename>25530-relations-1.patch</filename>
            <type>text/plain</type>
            <size>6367</size>
            <attacher name="Joanmarie Diggs">jdiggs</attacher>
            
              <data encoding="base64">RnJvbSBiOThkNGJjMTU4MDA2MGNlMGMzZDgxNzU5ZTI0NTI2N2I1MmEwYTZhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2FubWFyaWUgRGlnZ3MgPGpvYW5tYXJpZS5kaWdnc0BnbWFp
bC5jb20+CkRhdGU6IFN1biwgMTggT2N0IDIwMDkgMTY6NTE6NTMgLTA0MDAKU3ViamVjdDogW1BB
VENIIDIvMl0gUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU1MzAKW0d0a10gSW1wbGVtZW50IExBQkVMX0ZPUi9MQUJF
TExFRF9CWSByZWxhdGlvbnNoaXAgcGFpciBmb3IgbGFiZWxzCgpJbXBsZW1lbnRzIGF0a19vYmpl
Y3RfcmVmX3JlbGF0aW9uX3NldCBhbmQgTEFCRUxfRk9SL0xBQkVMTEVEX0JZLgoKKiBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaDoKKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgoobGFiZWxlZEJ5KToKKGxhYmVsRm9yKToKKiBhY2Nl
c3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6CihzZXRBdGtS
ZWxhdGlvblNldEZyb21Db3JlT2JqZWN0KToKKHdlYmtpdF9hY2Nlc3NpYmxlX3JlZl9yZWxhdGlv
bl9zZXQpOgood2Via2l0X2FjY2Vzc2libGVfY2xhc3NfaW5pdCk6Ci0tLQogV2ViQ29yZS9DaGFu
Z2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE4ICsrKysrKysrKysr
CiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCAgICB8ICAg
MjkgKysrKysrKysrKysrKysrKysKIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmggIHwgICAgMyArKwogLi4uL2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlckF0ay5jcHAgICAgICAgICAgfCAgIDMzICsrKysrKysrKysrKysrKysrKysrCiA0IGZpbGVz
IGNoYW5nZWQsIDgzIGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4OGJiZDY0Li4yNzJj
ZDg5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSw1ICsxLDIzIEBACiAyMDA5LTEwLTE4ICBKb2FubWFyaWUgRGlnZ3MgIDxqb2FubWFy
aWUuZGlnZ3NAZ21haWwuY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTUz
MAorICAgICAgICBbR3RrXSBJbXBsZW1lbnQgTEFCRUxfRk9SL0xBQkVMTEVEX0JZIHJlbGF0aW9u
c2hpcCBwYWlyIGZvciBsYWJlbHMKKworICAgICAgICBJbXBsZW1lbnRzIGF0a19vYmplY3RfcmVm
X3JlbGF0aW9uX3NldCBhbmQgTEFCRUxfRk9SL0xBQkVMTEVEX0JZLgorCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKGxhYmVsZWRC
eSk6CisgICAgICAgIChsYWJlbEZvcik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9ndGsvQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwOgorICAgICAgICAoc2V0QXRrUmVsYXRpb25T
ZXRGcm9tQ29yZU9iamVjdCk6CisgICAgICAgICh3ZWJraXRfYWNjZXNzaWJsZV9yZWZfcmVsYXRp
b25fc2V0KToKKyAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX2NsYXNzX2luaXQpOgorCisyMDA5
LTEwLTE4ICBKb2FubWFyaWUgRGlnZ3MgIDxqb2FubWFyaWUuZGlnZ3NAZ21haWwuY29tPgorCiAg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpCiAKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1OTAxCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggODM0ZTkzMS4uNzE3
MWE0MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcApAQCAtOTMwLDYgKzkzMCwzNSBAQCBzdGF0aWMgSFRNTExhYmVsRWxlbWVu
dCogbGFiZWxGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgCiAgICAgcmV0dXJuIDA7
CiB9CisKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omxh
YmVsZWRCeSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlcmVyKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIE5vZGUqIG5vZGUgPSBtX3JlbmRlcmVyLT5ub2RlKCk7CisgICAgaWYgKG5vZGUg
JiYgbm9kZS0+aXNIVE1MRWxlbWVudCgpKSB7CisgICAgICAgIEhUTUxMYWJlbEVsZW1lbnQqIGxh
YmVsID0gbGFiZWxGb3JFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKSk7CisgICAg
ICAgIGlmIChsYWJlbCkKKyAgICAgICAgICAgIHJldHVybiBmaXJzdEFjY2Vzc2libGVPYmplY3RG
cm9tTm9kZShzdGF0aWNfY2FzdDxOb2RlKj4obGFiZWwpKTsKKyAgICB9CisKKyAgICByZXR1cm4g
MDsKK30KKworQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
bGFiZWxGb3IoKSBjb25zdAoreworICAgIGlmICghbV9yZW5kZXJlcikKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBOb2RlKiBub2RlID0gbV9yZW5kZXJlci0+bm9kZSgpOworICAgIGlmIChub2Rl
ICYmIG5vZGUtPmhhc1RhZ05hbWUobGFiZWxUYWcpKSB7CisgICAgICAgIEhUTUxMYWJlbEVsZW1l
bnQqIGxhYmVsID0gc3RhdGljX2Nhc3Q8SFRNTExhYmVsRWxlbWVudCo+KG5vZGUpOworICAgICAg
ICByZXR1cm4gZmlyc3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUoc3RhdGljX2Nhc3Q8Tm9kZSo+
KGxhYmVsLT5jb3JyZXNwb25kaW5nQ29udHJvbCgpKSk7CisgICAgfQorCisgICAgcmV0dXJuIDA7
Cit9CiAgICAgCiBIVE1MTGFiZWxFbGVtZW50KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojps
YWJlbEVsZW1lbnRDb250YWluZXIoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCBiL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKaW5kZXggZDgyY2E3MS4uZDY1YTg0NSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuaAorKysgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5oCkBAIC0xNjEsNiArMTYxLDkgQEAgcHVibGljOgogICAgIERvY3VtZW50KiBkb2N1bWVudCgp
IGNvbnN0OwogICAgIEZyYW1lVmlldyogdG9wRG9jdW1lbnRGcmFtZVZpZXcoKSBjb25zdDsgIAog
ICAgIEhUTUxMYWJlbEVsZW1lbnQqIGxhYmVsRWxlbWVudENvbnRhaW5lcigpIGNvbnN0OworCisg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGFiZWxlZEJ5KCkgY29uc3Q7CisgICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogbGFiZWxGb3IoKSBjb25zdDsKICAgICAKICAgICB2aXJ0dWFsIEtVUkwgdXJs
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBzZWxlY3RlZFRleHRSYW5nZSgp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlckF0ay5jcHAgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcAppbmRleCBjZTlkNTY1Li5hMTEzMDBhIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyQXRrLmNwcAorKysgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQXRrLmNwcApAQCAtMzg0LDYgKzM4NCwyOCBAQCBzdGF0aWMgdm9pZCBzZXRB
dGtTdGF0ZVNldEZyb21Db3JlT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3Qs
IEF0a1N0YQogICAgICAgICBhdGtfc3RhdGVfc2V0X2FkZF9zdGF0ZShzdGF0ZVNldCwgQVRLX1NU
QVRFX1ZJU0lURUQpOwogfQogCitzdGF0aWMgdm9pZCBzZXRBdGtSZWxhdGlvblNldEZyb21Db3Jl
T2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QsIEF0a1JlbGF0aW9uU2V0KiBy
ZWxhdGlvblNldCkKK3sKKyAgICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KiBhY2NPYmplY3Qg
PSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Kj4oY29yZU9iamVjdCk7Cisg
ICAgaWYgKGFjY09iamVjdC0+aXNDb250cm9sKCkpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogbGFiZWwgPSBhY2NPYmplY3QtPmxhYmVsZWRCeSgpOworICAgICAgICBpZiAobGFiZWwp
IHsKKyAgICAgICAgICAgIEF0a09iamVjdCogYXRrTGFiZWwgPSBsYWJlbC0+d3JhcHBlcigpOwor
ICAgICAgICAgICAgYXRrX3JlbGF0aW9uX3NldF9hZGRfcmVsYXRpb25fYnlfdHlwZShyZWxhdGlv
blNldCwgQVRLX1JFTEFUSU9OX0xBQkVMTEVEX0JZLCBhdGtMYWJlbCk7CisgICAgICAgIH0KKyAg
ICB9CisgICAgZWxzZSB7CisgICAgICAgIE5vZGUqIG5vZGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Kj4oYWNjT2JqZWN0KS0+cmVuZGVyZXIoKS0+bm9kZSgpOworICAg
ICAgICBpZiAobm9kZSAmJiBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6bGFiZWxUYWcpKSB7
CisgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb250cm9sID0gYWNjT2JqZWN0LT5s
YWJlbEZvcigpOworICAgICAgICAgICAgaWYgKGNvbnRyb2wpIHsKKyAgICAgICAgICAgICAgICBB
dGtPYmplY3QqIGF0a0NvbnRyb2wgPSBjb250cm9sLT53cmFwcGVyKCk7CisgICAgICAgICAgICAg
ICAgYXRrX3JlbGF0aW9uX3NldF9hZGRfcmVsYXRpb25fYnlfdHlwZShyZWxhdGlvblNldCwgQVRL
X1JFTEFUSU9OX0xBQkVMX0ZPUiwgYXRrQ29udHJvbCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9Cit9CisKIHN0YXRpYyBncG9pbnRlciB3ZWJraXRfYWNjZXNzaWJsZV9wYXJlbnRf
Y2xhc3MgPSBOVUxMOwogCiBzdGF0aWMgQXRrU3RhdGVTZXQqIHdlYmtpdF9hY2Nlc3NpYmxlX3Jl
Zl9zdGF0ZV9zZXQoQXRrT2JqZWN0KiBvYmplY3QpCkBAIC00MDEsNiArNDIzLDE2IEBAIHN0YXRp
YyBBdGtTdGF0ZVNldCogd2Via2l0X2FjY2Vzc2libGVfcmVmX3N0YXRlX3NldChBdGtPYmplY3Qq
IG9iamVjdCkKICAgICByZXR1cm4gc3RhdGVTZXQ7CiB9CiAKK3N0YXRpYyBBdGtSZWxhdGlvblNl
dCogd2Via2l0X2FjY2Vzc2libGVfcmVmX3JlbGF0aW9uX3NldChBdGtPYmplY3QqIG9iamVjdCkK
K3sKKyAgICBBdGtSZWxhdGlvblNldCogcmVsYXRpb25TZXQgPSBBVEtfT0JKRUNUX0NMQVNTKHdl
YmtpdF9hY2Nlc3NpYmxlX3BhcmVudF9jbGFzcyktPnJlZl9yZWxhdGlvbl9zZXQob2JqZWN0KTsK
KyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gY29yZShvYmplY3QpOworCisg
ICAgc2V0QXRrUmVsYXRpb25TZXRGcm9tQ29yZU9iamVjdChjb3JlT2JqZWN0LCByZWxhdGlvblNl
dCk7CisKKyAgICByZXR1cm4gcmVsYXRpb25TZXQ7Cit9CisKIHN0YXRpYyB2b2lkIHdlYmtpdF9h
Y2Nlc3NpYmxlX2luaXQoQXRrT2JqZWN0KiBvYmplY3QsIGdwb2ludGVyIGRhdGEpCiB7CiAgICAg
aWYgKEFUS19PQkpFQ1RfQ0xBU1Mod2Via2l0X2FjY2Vzc2libGVfcGFyZW50X2NsYXNzKS0+aW5p
dGlhbGl6ZSkKQEAgLTQzNSw2ICs0NjcsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfYWNjZXNzaWJs
ZV9jbGFzc19pbml0KEF0a09iamVjdENsYXNzKiBrbGFzcykKICAgICBrbGFzcy0+cmVmX3N0YXRl
X3NldCA9IHdlYmtpdF9hY2Nlc3NpYmxlX3JlZl9zdGF0ZV9zZXQ7CiAgICAga2xhc3MtPmdldF9p
bmRleF9pbl9wYXJlbnQgPSB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfaW5kZXhfaW5fcGFyZW50Owog
ICAgIGtsYXNzLT5nZXRfYXR0cmlidXRlcyA9IHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9hdHRyaWJ1
dGVzOworICAgIGtsYXNzLT5yZWZfcmVsYXRpb25fc2V0ID0gd2Via2l0X2FjY2Vzc2libGVfcmVm
X3JlbGF0aW9uX3NldDsKIH0KIAogR1R5cGUKLS0gCjEuNi4zLjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41596</attachid>
            <date>2009-10-21 12:02:03 -0700</date>
            <delta_ts>2009-10-22 15:18:31 -0700</delta_ts>
            <desc>patch to implement the relationship pair - take 2</desc>
            <filename>25530-relations-2.patch</filename>
            <type>text/plain</type>
            <size>6348</size>
            <attacher name="Joanmarie Diggs">jdiggs</attacher>
            
              <data encoding="base64">RnJvbSAyZmIyOWI5MGI0OGMyYWVhNzZiMDJjMmRjYjIxMWEzMzhkODFmNDc4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2FubWFyaWUgRGlnZ3MgPGpvYW5tYXJpZS5kaWdnc0BnbWFp
bC5jb20+CkRhdGU6IFdlZCwgMjEgT2N0IDIwMDkgMTQ6NDQ6MjcgLTA0MDAKU3ViamVjdDogW1BB
VENIXSBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCmh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNTUzMApbR3RrXSBJbXBsZW1lbnQgTEFCRUxfRk9SL0xBQkVMTEVE
X0JZIHJlbGF0aW9uc2hpcCBwYWlyIGZvciBsYWJlbHMKCkltcGxlbWVudHMgYXRrX29iamVjdF9y
ZWZfcmVsYXRpb25fc2V0IGFuZCBMQUJFTF9GT1IvTEFCRUxMRURfQlkuCgoqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOgoqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHA6CihsYWJlbEZvckNvbnRyb2wpOgooY29udHJvbEZvckxhYmVs
KToKKiBhY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6
CihzZXRBdGtSZWxhdGlvblNldEZyb21Db3JlT2JqZWN0KToKKHdlYmtpdF9hY2Nlc3NpYmxlX3Jl
Zl9yZWxhdGlvbl9zZXQpOgood2Via2l0X2FjY2Vzc2libGVfY2xhc3NfaW5pdCk6Ci0tLQogV2Vi
Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE4ICsr
KysrKysrKysrCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cCAgICB8ICAgMjkgKysrKysrKysrKysrKysrKysKIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggIHwgICAgMyArKwogLi4uL2d0ay9BY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlckF0ay5jcHAgICAgICAgICAgfCAgIDMzICsrKysrKysrKysrKysrKysrKysr
CiA0IGZpbGVzIGNoYW5nZWQsIDgzIGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwMzhk
ZDc5Li5jOTRkMzEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDA5LTEwLTIxICBKb2FubWFyaWUgRGlnZ3Mg
IDxqb2FubWFyaWUuZGlnZ3NAZ21haWwuY29tPgorIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjU1MzAKKyAgICAgICAgW0d0a10gSW1wbGVtZW50IExBQkVMX0ZPUi9MQUJFTExFRF9C
WSByZWxhdGlvbnNoaXAgcGFpciBmb3IgbGFiZWxzCisKKyAgICAgICAgSW1wbGVtZW50cyBhdGtf
b2JqZWN0X3JlZl9yZWxhdGlvbl9zZXQgYW5kIExBQkVMX0ZPUi9MQUJFTExFRF9CWS4KKworICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAg
IChsYWJlbEZvckNvbnRyb2wpOgorICAgICAgICAoY29udHJvbEZvckxhYmVsKToKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6Cisg
ICAgICAgIChzZXRBdGtSZWxhdGlvblNldEZyb21Db3JlT2JqZWN0KToKKyAgICAgICAgKHdlYmtp
dF9hY2Nlc3NpYmxlX3JlZl9yZWxhdGlvbl9zZXQpOgorICAgICAgICAod2Via2l0X2FjY2Vzc2li
bGVfY2xhc3NfaW5pdCk6CisKIDIwMDktMTAtMjEgIEFkYW0gTGFuZ2xleSAgPGFnbEBnb29nbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDgzNGU5
MzEuLjljMTEyMmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTkzMCw2ICs5MzAsMzUgQEAgc3RhdGljIEhUTUxMYWJl
bEVsZW1lbnQqIGxhYmVsRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQogICAgIAogICAgIHJl
dHVybiAwOwogfQorCitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpsYWJlbEZvckNvbnRyb2woKSBjb25zdAoreworICAgIGlmICghbV9yZW5kZXJlcikKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBOb2RlKiBub2RlID0gbV9yZW5kZXJlci0+bm9kZSgpOwor
ICAgIGlmIChub2RlICYmIG5vZGUtPmlzSFRNTEVsZW1lbnQoKSkgeworICAgICAgICBIVE1MTGFi
ZWxFbGVtZW50KiBsYWJlbCA9IGxhYmVsRm9yRWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4o
bm9kZSkpOworICAgICAgICBpZiAobGFiZWwpCisgICAgICAgICAgICByZXR1cm4gZmlyc3RBY2Nl
c3NpYmxlT2JqZWN0RnJvbU5vZGUoc3RhdGljX2Nhc3Q8Tm9kZSo+KGxhYmVsKSk7CisgICAgfQor
CisgICAgcmV0dXJuIDA7Cit9CisKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmNvbnRyb2xGb3JMYWJlbCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRl
cmVyKQorICAgICAgICByZXR1cm4gMDsKKworICAgIE5vZGUqIG5vZGUgPSBtX3JlbmRlcmVyLT5u
b2RlKCk7CisgICAgaWYgKG5vZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShsYWJlbFRhZykpIHsKKyAg
ICAgICAgSFRNTExhYmVsRWxlbWVudCogbGFiZWwgPSBzdGF0aWNfY2FzdDxIVE1MTGFiZWxFbGVt
ZW50Kj4obm9kZSk7CisgICAgICAgIHJldHVybiBmaXJzdEFjY2Vzc2libGVPYmplY3RGcm9tTm9k
ZShzdGF0aWNfY2FzdDxOb2RlKj4obGFiZWwtPmNvcnJlc3BvbmRpbmdDb250cm9sKCkpKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gMDsKK30KICAgICAKIEhUTUxMYWJlbEVsZW1lbnQqIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmxhYmVsRWxlbWVudENvbnRhaW5lcigpIGNvbnN0CiB7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5o
IGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAppbmRl
eCBkODJjYTcxLi4xZjgzMjM5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCisrKyBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKQEAgLTE2MSw2ICsxNjEsOSBAQCBwdWJsaWM6CiAgICAg
RG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7CiAgICAgRnJhbWVWaWV3KiB0b3BEb2N1bWVudEZy
YW1lVmlldygpIGNvbnN0OyAgCiAgICAgSFRNTExhYmVsRWxlbWVudCogbGFiZWxFbGVtZW50Q29u
dGFpbmVyKCkgY29uc3Q7CisKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsYWJlbEZvckNvbnRy
b2woKSBjb25zdDsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb250cm9sRm9yTGFiZWwoKSBj
b25zdDsKICAgICAKICAgICB2aXJ0dWFsIEtVUkwgdXJsKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQ
bGFpblRleHRSYW5nZSBzZWxlY3RlZFRleHRSYW5nZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAg
Yi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRr
LmNwcAppbmRleCA0ZGZiMWM1Li5mYTYzYTE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcAorKysgYi9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcApAQCAt
MTMyLDYgKzEzMiwyOCBAQCBzdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdF9hY2Nlc3NpYmxlX2dl
dF9kZXNjcmlwdGlvbihBdGtPYmplY3QqIG9iamVjdCkKICAgICByZXR1cm4gcmV0dXJuU3RyaW5n
KGNvcmUob2JqZWN0KS0+YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkpOwogfQogCitzdGF0aWMg
dm9pZCBzZXRBdGtSZWxhdGlvblNldEZyb21Db3JlT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGNvcmVPYmplY3QsIEF0a1JlbGF0aW9uU2V0KiByZWxhdGlvblNldCkKK3sKKyAgICBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0KiBhY2NPYmplY3QgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Kj4oY29yZU9iamVjdCk7CisgICAgaWYgKGFjY09iamVjdC0+aXNDb250cm9s
KCkpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGFiZWwgPSBhY2NPYmplY3QtPmxh
YmVsRm9yQ29udHJvbCgpOworICAgICAgICBpZiAobGFiZWwpIHsKKyAgICAgICAgICAgIEF0a09i
amVjdCogYXRrTGFiZWwgPSBsYWJlbC0+d3JhcHBlcigpOworICAgICAgICAgICAgYXRrX3JlbGF0
aW9uX3NldF9hZGRfcmVsYXRpb25fYnlfdHlwZShyZWxhdGlvblNldCwgQVRLX1JFTEFUSU9OX0xB
QkVMTEVEX0JZLCBhdGtMYWJlbCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAg
ICAgIE5vZGUqIG5vZGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Kj4o
YWNjT2JqZWN0KS0+cmVuZGVyZXIoKS0+bm9kZSgpOworICAgICAgICBpZiAobm9kZSAmJiBub2Rl
LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6bGFiZWxUYWcpKSB7CisgICAgICAgICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBjb250cm9sID0gYWNjT2JqZWN0LT5jb250cm9sRm9yTGFiZWwoKTsKKyAg
ICAgICAgICAgIGlmIChjb250cm9sKSB7CisgICAgICAgICAgICAgICAgQXRrT2JqZWN0KiBhdGtD
b250cm9sID0gY29udHJvbC0+d3JhcHBlcigpOworICAgICAgICAgICAgICAgIGF0a19yZWxhdGlv
bl9zZXRfYWRkX3JlbGF0aW9uX2J5X3R5cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9MQUJF
TF9GT1IsIGF0a0NvbnRyb2wpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQor
CiBzdGF0aWMgZ3BvaW50ZXIgd2Via2l0X2FjY2Vzc2libGVfcGFyZW50X2NsYXNzID0gTlVMTDsK
IAogc3RhdGljIEF0a09iamVjdCogd2Via2l0X2FjY2Vzc2libGVfZ2V0X3BhcmVudChBdGtPYmpl
Y3QqIG9iamVjdCkKQEAgLTQyMSw2ICs0NDMsMTYgQEAgc3RhdGljIEF0a1N0YXRlU2V0KiB3ZWJr
aXRfYWNjZXNzaWJsZV9yZWZfc3RhdGVfc2V0KEF0a09iamVjdCogb2JqZWN0KQogICAgIHJldHVy
biBzdGF0ZVNldDsKIH0KIAorc3RhdGljIEF0a1JlbGF0aW9uU2V0KiB3ZWJraXRfYWNjZXNzaWJs
ZV9yZWZfcmVsYXRpb25fc2V0KEF0a09iamVjdCogb2JqZWN0KQoreworICAgIEF0a1JlbGF0aW9u
U2V0KiByZWxhdGlvblNldCA9IEFUS19PQkpFQ1RfQ0xBU1Mod2Via2l0X2FjY2Vzc2libGVfcGFy
ZW50X2NsYXNzKS0+cmVmX3JlbGF0aW9uX3NldChvYmplY3QpOworICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGNvcmVPYmplY3QgPSBjb3JlKG9iamVjdCk7CisKKyAgICBzZXRBdGtSZWxhdGlvblNl
dEZyb21Db3JlT2JqZWN0KGNvcmVPYmplY3QsIHJlbGF0aW9uU2V0KTsKKworICAgIHJldHVybiBy
ZWxhdGlvblNldDsKK30KKwogc3RhdGljIHZvaWQgd2Via2l0X2FjY2Vzc2libGVfaW5pdChBdGtP
YmplY3QqIG9iamVjdCwgZ3BvaW50ZXIgZGF0YSkKIHsKICAgICBpZiAoQVRLX09CSkVDVF9DTEFT
Uyh3ZWJraXRfYWNjZXNzaWJsZV9wYXJlbnRfY2xhc3MpLT5pbml0aWFsaXplKQpAQCAtNDU1LDYg
KzQ4Nyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9hY2Nlc3NpYmxlX2NsYXNzX2luaXQoQXRrT2Jq
ZWN0Q2xhc3MqIGtsYXNzKQogICAgIGtsYXNzLT5yZWZfc3RhdGVfc2V0ID0gd2Via2l0X2FjY2Vz
c2libGVfcmVmX3N0YXRlX3NldDsKICAgICBrbGFzcy0+Z2V0X2luZGV4X2luX3BhcmVudCA9IHdl
YmtpdF9hY2Nlc3NpYmxlX2dldF9pbmRleF9pbl9wYXJlbnQ7CiAgICAga2xhc3MtPmdldF9hdHRy
aWJ1dGVzID0gd2Via2l0X2FjY2Vzc2libGVfZ2V0X2F0dHJpYnV0ZXM7CisgICAga2xhc3MtPnJl
Zl9yZWxhdGlvbl9zZXQgPSB3ZWJraXRfYWNjZXNzaWJsZV9yZWZfcmVsYXRpb25fc2V0OwogfQog
CiBHVHlwZQotLSAKMS42LjMuMwoK
</data>
<flag name="review"
          id="23017"
          type_id="1"
          status="-"
          setter="xan.lopez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41689</attachid>
            <date>2009-10-22 15:18:31 -0700</date>
            <delta_ts>2009-10-22 15:52:28 -0700</delta_ts>
            <desc>implment relationship pair and set the name</desc>
            <filename>25530-full.patch</filename>
            <type>text/plain</type>
            <size>7503</size>
            <attacher name="Joanmarie Diggs">jdiggs</attacher>
            
              <data encoding="base64">RnJvbSBiYjljOWUxNTk3MjhmODM3ZmU1OWI4MzkwMTY2Y2JhY2UxNmZjMTRhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2FubWFyaWUgRGlnZ3MgPGpvYW5tYXJpZS5kaWdnc0BnbWFp
bC5jb20+CkRhdGU6IFRodSwgMjIgT2N0IDIwMDkgMTQ6MzI6MzcgLTA0MDAKU3ViamVjdDogW1BB
VENIXSBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCmh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNTUzMApbR3RrXSBJbXBsZW1lbnQgTEFCRUxfRk9SL0xBQkVMTEVE
X0JZIHJlbGF0aW9uc2hpcCBwYWlyIGZvciBsYWJlbHMKCkltcGxlbWVudHMgYXRrX29iamVjdF9y
ZWZfcmVsYXRpb25fc2V0IGFuZCBMQUJFTF9GT1IvTEFCRUxMRURfQlkuCkFsc28gY2F1c2VzIHRo
ZSBhY2Nlc3NpYmxlIG5hbWUgZm9yIGxhYmVsZWQgY29udHJvbHMgdG8gYmUgYmFzZWQgb24KdGhl
IGxhYmVsIGFzIGV4cGVjdGVkLCByYXRoZXIgdGhhbiBiYXNlZCBvbiB0aGUgY29udGVudHMuCgoq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOgoqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CihsYWJlbEZvckNvcnJlc3BvbmRpbmdD
b250cm9sRWxlbWVudCk6CiogYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJBdGsuY3BwOgooc2V0QXRrUmVsYXRpb25TZXRGcm9tQ29yZU9iamVjdCk6Cih3ZWJraXRf
YWNjZXNzaWJsZV9yZWZfcmVsYXRpb25fc2V0KToKKHdlYmtpdF9hY2Nlc3NpYmxlX2NsYXNzX2lu
aXQpOgood2Via2l0X2FjY2Vzc2libGVfZ2V0X25hbWUpOgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMCArKysrKysrKysKIC4uLi9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwICAgIHwgICAxNSArKysr
KysrCiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oICB8
ICAgIDEgKwogLi4uL2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAgICAgICAg
ICAgfCAgIDQyICsrKysrKysrKysrKysrKysrKystCiA0IGZpbGVzIGNoYW5nZWQsIDc3IGluc2Vy
dGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4YmFkMjg4Li5iMzM0ZmY0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBA
CisyMDA5LTEwLTIyICBKb2FubWFyaWUgRGlnZ3MgIDxqb2FubWFyaWUuZGlnZ3NAZ21haWwuY29t
PgorIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU1MzAKKyAgICAgICAgW0d0a10g
SW1wbGVtZW50IExBQkVMX0ZPUi9MQUJFTExFRF9CWSByZWxhdGlvbnNoaXAgcGFpciBmb3IgbGFi
ZWxzCisKKyAgICAgICAgSW1wbGVtZW50cyBhdGtfb2JqZWN0X3JlZl9yZWxhdGlvbl9zZXQgYW5k
IExBQkVMX0ZPUi9MQUJFTExFRF9CWS4KKyAgICAgICAgQWxzbyBjYXVzZXMgdGhlIGFjY2Vzc2li
bGUgbmFtZSBmb3IgbGFiZWxlZCBjb250cm9scyB0byBiZSBiYXNlZCBvbgorICAgICAgICB0aGUg
bGFiZWwgYXMgZXhwZWN0ZWQsIHJhdGhlciB0aGFuIGJhc2VkIG9uIHRoZSBjb250ZW50cy4KKwor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAg
ICAgIChsYWJlbEZvckNvcnJlc3BvbmRpbmdDb250cm9sRWxlbWVudCk6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwOgorICAgICAg
ICAoc2V0QXRrUmVsYXRpb25TZXRGcm9tQ29yZU9iamVjdCk6CisgICAgICAgICh3ZWJraXRfYWNj
ZXNzaWJsZV9yZWZfcmVsYXRpb25fc2V0KToKKyAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX2Ns
YXNzX2luaXQpOgorICAgICAgICAod2Via2l0X2FjY2Vzc2libGVfZ2V0X25hbWUpOgorCiAyMDA5
LTEwLTIyICBLZWlzaGkgSGF0dG9yaSAgPGNhc2V5LmhhdHRvcmlAZ21haWwuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggODM0ZTkzMS4uZWZmZTBk
OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCisrKyBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcApAQCAtMjIxMiw2ICsyMjEyLDIxIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvcnJlc3BvbmRpbmdDb250cm9sRm9yTGFiZWxFbGVt
CiAgICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoY29ycmVzcG9uZGluZ0Nv
bnRyb2wtPnJlbmRlcmVyKCkpOyAgICAgCiB9CiAKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmxhYmVsRm9yQ29ycmVzcG9uZGluZ0NvbnRyb2xFbGVtZW50
KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsKKyAgICBpZiAobm9kZSAmJiBub2Rl
LT5pc0hUTUxFbGVtZW50KCkpIHsKKyAgICAgICAgSFRNTExhYmVsRWxlbWVudCogbGFiZWwgPSBs
YWJlbEZvckVsZW1lbnQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpKTsKKyAgICAgICAgaWYg
KGxhYmVsKQorICAgICAgICAgICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUo
bGFiZWwtPnJlbmRlcmVyKCkpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCiBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpvYnNlcnZhYmxlT2JqZWN0
KCkgY29uc3QKIHsKICAgICBmb3IgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX3JlbmRlcmVy
OyByZW5kZXJlciAmJiByZW5kZXJlci0+bm9kZSgpOyByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJl
bnQoKSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuaCBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmgKaW5kZXggZDgyY2E3MS4uOGUwNmRjNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAorKysgYi9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCkBAIC0xMzQsNiArMTM0LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBleHBvc2VzVGl0bGVVSUVsZW1lbnQoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRpdGxlVUlFbGVtZW50KCkgY29uc3Q7
CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JyZXNwb25kaW5nQ29udHJvbEZv
ckxhYmVsRWxlbWVudCgpIGNvbnN0OworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCog
bGFiZWxGb3JDb3JyZXNwb25kaW5nQ29udHJvbEVsZW1lbnQoKSBjb25zdDsKIAogICAgIHZpcnR1
YWwgQWNjZXNzaWJpbGl0eVJvbGUgYXJpYVJvbGVBdHRyaWJ1dGUoKSBjb25zdDsKICAgICB2aXJ0
dWFsIGJvb2wgaXNQcmVzZW50YXRpb25hbENoaWxkT2ZBcmlhUm9sZSgpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ckF0ay5jcHAgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQXRrLmNwcAppbmRleCA0ZGZiMWM1Li5jZjI3MDM1IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcAorKysg
Yi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRr
LmNwcApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgPGdsaWIvZ3ByaW50Zi5oPgogI2luY2x1
ZGUgPGxpYmdhaWwtdXRpbC9nYWlsLXV0aWwuaD4KICNpbmNsdWRlIDxwYW5nby9wYW5nby5oPgor
I2luY2x1ZGUgPHN0ZGlvLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xMjIs
NyArMTIzLDIxIEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlKEF0a0ltYWdlKiBp
bWFnZSkKIAogc3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfbmFtZShB
dGtPYmplY3QqIG9iamVjdCkKIHsKLSAgICByZXR1cm4gcmV0dXJuU3RyaW5nKGNvcmUob2JqZWN0
KS0+c3RyaW5nVmFsdWUoKSk7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCA9
IGNvcmUob2JqZWN0KTsKKyAgICBpZiAoY29yZU9iamVjdC0+aXNDb250cm9sKCkpIHsKKyAgICAg
ICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0ID0gc3RhdGljX2Nhc3Q8
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCo+KGNvcmVPYmplY3QpOworICAgICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBsYWJlbCA9IHJlbmRlck9iamVjdC0+bGFiZWxGb3JDb3JyZXNwb25kaW5n
Q29udHJvbEVsZW1lbnQoKTsKKyAgICAgICAgaWYgKGxhYmVsKSB7CisJICAgIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbiA9IGxh
YmVsLT5jaGlsZHJlbigpOworICAgICAgICAgICAgLy8gQ3VycmVudGx5LCBsYWJlbC0+c3RyaW5n
VmFsdWUoKSBzaG91bGQgYmUgYW4gZW1wdHkgU3RyaW5nLiBUaGlzCisgICAgICAgICAgICAvLyBt
aWdodCBub3QgYmUgdGhlIGNhc2UgZG93biB0aGUgcm9hZC4KKyAgICAgICAgICAgIFN0cmluZyBu
YW1lID0gbGFiZWwtPnN0cmluZ1ZhbHVlKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgY2hpbGRyZW4uc2l6ZSgpOyArK2kpCisgICAgICAgICAgICAgICAgbmFtZSArPSBj
aGlsZHJlbi5hdChpKS5nZXQoKS0+c3RyaW5nVmFsdWUoKTsKKyAgICAgICAgICAgIHJldHVybiBy
ZXR1cm5TdHJpbmcobmFtZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJldHVyblN0
cmluZyhjb3JlT2JqZWN0LT5zdHJpbmdWYWx1ZSgpKTsKIH0KIAogc3RhdGljIGNvbnN0IGdjaGFy
KiB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfZGVzY3JpcHRpb24oQXRrT2JqZWN0KiBvYmplY3QpCkBA
IC0xMzIsNiArMTQ3LDIwIEBAIHN0YXRpYyBjb25zdCBnY2hhciogd2Via2l0X2FjY2Vzc2libGVf
Z2V0X2Rlc2NyaXB0aW9uKEF0a09iamVjdCogb2JqZWN0KQogICAgIHJldHVybiByZXR1cm5TdHJp
bmcoY29yZShvYmplY3QpLT5hY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSk7CiB9CiAKK3N0YXRp
YyB2b2lkIHNldEF0a1JlbGF0aW9uU2V0RnJvbUNvcmVPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVj
dCogY29yZU9iamVjdCwgQXRrUmVsYXRpb25TZXQqIHJlbGF0aW9uU2V0KQoreworICAgIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QqIGFjY09iamVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QqPihjb3JlT2JqZWN0KTsKKyAgICBpZiAoYWNjT2JqZWN0LT5pc0NvbnRy
b2woKSkgeworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsYWJlbCA9IGFjY09iamVjdC0+
bGFiZWxGb3JDb3JyZXNwb25kaW5nQ29udHJvbEVsZW1lbnQoKTsKKyAgICAgICAgaWYgKGxhYmVs
KQorICAgICAgICAgICAgYXRrX3JlbGF0aW9uX3NldF9hZGRfcmVsYXRpb25fYnlfdHlwZShyZWxh
dGlvblNldCwgQVRLX1JFTEFUSU9OX0xBQkVMTEVEX0JZLCBsYWJlbC0+d3JhcHBlcigpKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb250cm9sID0gYWNjT2Jq
ZWN0LT5jb3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCgpOworICAgICAgICBpZiAo
Y29udHJvbCkKKyAgICAgICAgICAgIGF0a19yZWxhdGlvbl9zZXRfYWRkX3JlbGF0aW9uX2J5X3R5
cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9MQUJFTF9GT1IsIGNvbnRyb2wtPndyYXBwZXIo
KSk7CisgICAgfQorfQorCiBzdGF0aWMgZ3BvaW50ZXIgd2Via2l0X2FjY2Vzc2libGVfcGFyZW50
X2NsYXNzID0gTlVMTDsKIAogc3RhdGljIEF0a09iamVjdCogd2Via2l0X2FjY2Vzc2libGVfZ2V0
X3BhcmVudChBdGtPYmplY3QqIG9iamVjdCkKQEAgLTQyMSw2ICs0NTAsMTYgQEAgc3RhdGljIEF0
a1N0YXRlU2V0KiB3ZWJraXRfYWNjZXNzaWJsZV9yZWZfc3RhdGVfc2V0KEF0a09iamVjdCogb2Jq
ZWN0KQogICAgIHJldHVybiBzdGF0ZVNldDsKIH0KIAorc3RhdGljIEF0a1JlbGF0aW9uU2V0KiB3
ZWJraXRfYWNjZXNzaWJsZV9yZWZfcmVsYXRpb25fc2V0KEF0a09iamVjdCogb2JqZWN0KQorewor
ICAgIEF0a1JlbGF0aW9uU2V0KiByZWxhdGlvblNldCA9IEFUS19PQkpFQ1RfQ0xBU1Mod2Via2l0
X2FjY2Vzc2libGVfcGFyZW50X2NsYXNzKS0+cmVmX3JlbGF0aW9uX3NldChvYmplY3QpOworICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QgPSBjb3JlKG9iamVjdCk7CisKKyAgICBz
ZXRBdGtSZWxhdGlvblNldEZyb21Db3JlT2JqZWN0KGNvcmVPYmplY3QsIHJlbGF0aW9uU2V0KTsK
KworICAgIHJldHVybiByZWxhdGlvblNldDsKK30KKwogc3RhdGljIHZvaWQgd2Via2l0X2FjY2Vz
c2libGVfaW5pdChBdGtPYmplY3QqIG9iamVjdCwgZ3BvaW50ZXIgZGF0YSkKIHsKICAgICBpZiAo
QVRLX09CSkVDVF9DTEFTUyh3ZWJraXRfYWNjZXNzaWJsZV9wYXJlbnRfY2xhc3MpLT5pbml0aWFs
aXplKQpAQCAtNDU1LDYgKzQ5NCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9hY2Nlc3NpYmxlX2Ns
YXNzX2luaXQoQXRrT2JqZWN0Q2xhc3MqIGtsYXNzKQogICAgIGtsYXNzLT5yZWZfc3RhdGVfc2V0
ID0gd2Via2l0X2FjY2Vzc2libGVfcmVmX3N0YXRlX3NldDsKICAgICBrbGFzcy0+Z2V0X2luZGV4
X2luX3BhcmVudCA9IHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9pbmRleF9pbl9wYXJlbnQ7CiAgICAg
a2xhc3MtPmdldF9hdHRyaWJ1dGVzID0gd2Via2l0X2FjY2Vzc2libGVfZ2V0X2F0dHJpYnV0ZXM7
CisgICAga2xhc3MtPnJlZl9yZWxhdGlvbl9zZXQgPSB3ZWJraXRfYWNjZXNzaWJsZV9yZWZfcmVs
YXRpb25fc2V0OwogfQogCiBHVHlwZQotLSAKMS42LjMuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41690</attachid>
            <date>2009-10-22 15:52:28 -0700</date>
            <delta_ts>2009-10-22 16:08:03 -0700</delta_ts>
            <desc>implment relationship pair and set the name - corrected</desc>
            <filename>25530-full.patch</filename>
            <type>text/plain</type>
            <size>7353</size>
            <attacher name="Joanmarie Diggs">jdiggs</attacher>
            
              <data encoding="base64">RnJvbSAyY2JkN2JhYzg2Y2UyYWRlMjdmNmQ4OWM5ZjQxMDk0NWRjZGVhYzZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2FubWFyaWUgRGlnZ3MgPGpvYW5tYXJpZS5kaWdnc0BnbWFp
bC5jb20+CkRhdGU6IFRodSwgMjIgT2N0IDIwMDkgMTQ6MzI6MzcgLTA0MDAKU3ViamVjdDogW1BB
VENIXSBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCmh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNTUzMApbR3RrXSBJbXBsZW1lbnQgTEFCRUxfRk9SL0xBQkVMTEVE
X0JZIHJlbGF0aW9uc2hpcCBwYWlyIGZvciBsYWJlbHMKCkltcGxlbWVudHMgYXRrX29iamVjdF9y
ZWZfcmVsYXRpb25fc2V0IGFuZCBMQUJFTF9GT1IvTEFCRUxMRURfQlkuCkFsc28gY2F1c2VzIHRo
ZSBhY2Nlc3NpYmxlIG5hbWUgZm9yIGxhYmVsZWQgY29udHJvbHMgdG8gYmUgYmFzZWQgb24KdGhl
IGxhYmVsIGFzIGV4cGVjdGVkLCByYXRoZXIgdGhhbiBiYXNlZCBvbiB0aGUgY29udGVudHMuCgoq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOgoqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6Cihjb3JyZXNwb25kaW5nTGFiZWxGb3JD
b250cm9sRWxlbWVudCk6CiogYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJBdGsuY3BwOgooc2V0QXRrUmVsYXRpb25TZXRGcm9tQ29yZU9iamVjdCk6Cih3ZWJraXRf
YWNjZXNzaWJsZV9yZWZfcmVsYXRpb25fc2V0KToKKHdlYmtpdF9hY2Nlc3NpYmxlX2NsYXNzX2lu
aXQpOgood2Via2l0X2FjY2Vzc2libGVfZ2V0X25hbWUpOgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMCArKysrKysrKysrCiAuLi4v
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCAgICB8ICAgMTUgKysr
KysrKwogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCAg
fCAgICAxICsKIC4uLi9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwICAgICAg
ICAgIHwgICA0MSArKysrKysrKysrKysrKysrKysrLQogNCBmaWxlcyBjaGFuZ2VkLCA3NiBpbnNl
cnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGJhZDI4OC4uMzVmMTkxMyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBA
QAorMjAwOS0xMC0yMiAgSm9hbm1hcmllIERpZ2dzICA8am9hbm1hcmllLmRpZ2dzQGdtYWlsLmNv
bT4KKyAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NTMwCisgICAgICAgIFtHdGtd
IEltcGxlbWVudCBMQUJFTF9GT1IvTEFCRUxMRURfQlkgcmVsYXRpb25zaGlwIHBhaXIgZm9yIGxh
YmVscworCisgICAgICAgIEltcGxlbWVudHMgYXRrX29iamVjdF9yZWZfcmVsYXRpb25fc2V0IGFu
ZCBMQUJFTF9GT1IvTEFCRUxMRURfQlkuCisgICAgICAgIEFsc28gY2F1c2VzIHRoZSBhY2Nlc3Np
YmxlIG5hbWUgZm9yIGxhYmVsZWQgY29udHJvbHMgdG8gYmUgYmFzZWQgb24KKyAgICAgICAgdGhl
IGxhYmVsIGFzIGV4cGVjdGVkLCByYXRoZXIgdGhhbiBiYXNlZCBvbiB0aGUgY29udGVudHMuCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaDoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAg
ICAgICAoY29ycmVzcG9uZGluZ0xhYmVsRm9yQ29udHJvbEVsZW1lbnQpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcDoKKyAgICAg
ICAgKHNldEF0a1JlbGF0aW9uU2V0RnJvbUNvcmVPYmplY3QpOgorICAgICAgICAod2Via2l0X2Fj
Y2Vzc2libGVfcmVmX3JlbGF0aW9uX3NldCk6CisgICAgICAgICh3ZWJraXRfYWNjZXNzaWJsZV9j
bGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9uYW1lKToKKwogMjAw
OS0xMC0yMiAgS2Vpc2hpIEhhdHRvcmkgIDxjYXNleS5oYXR0b3JpQGdtYWlsLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDgzNGU5MzEuLmVmMDZh
ODIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAKQEAgLTIyMTIsNiArMjIxMiwyMSBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxl
bQogICAgIHJldHVybiBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGNvcnJlc3BvbmRpbmdD
b250cm9sLT5yZW5kZXJlcigpKTsgICAgIAogfQogCitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb3JyZXNwb25kaW5nTGFiZWxGb3JDb250cm9sRWxlbWVu
dCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlcmVyKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIE5vZGUqIG5vZGUgPSBtX3JlbmRlcmVyLT5ub2RlKCk7CisgICAgaWYgKG5vZGUgJiYgbm9k
ZS0+aXNIVE1MRWxlbWVudCgpKSB7CisgICAgICAgIEhUTUxMYWJlbEVsZW1lbnQqIGxhYmVsID0g
bGFiZWxGb3JFbGVtZW50KHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKSk7CisgICAgICAgIGlm
IChsYWJlbCkKKyAgICAgICAgICAgIHJldHVybiBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRl
KGxhYmVsLT5yZW5kZXJlcigpKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKwogQWNjZXNz
aWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6b2JzZXJ2YWJsZU9iamVj
dCgpIGNvbnN0CiB7CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9yZW5kZXJl
cjsgcmVuZGVyZXIgJiYgcmVuZGVyZXItPm5vZGUoKTsgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFy
ZW50KCkpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmggYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5oCmluZGV4IGQ4MmNhNzEuLmM2ZmQ3NDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKKysrIGIvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaApAQCAtMTM0LDYgKzEzNCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZXhwb3Nlc1RpdGxlVUlFbGVtZW50KCkgY29uc3Q7
CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0aXRsZVVJRWxlbWVudCgpIGNvbnN0
OwogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogY29ycmVzcG9uZGluZ0NvbnRyb2xG
b3JMYWJlbEVsZW1lbnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGNvcnJlc3BvbmRpbmdMYWJlbEZvckNvbnRyb2xFbGVtZW50KCkgY29uc3Q7CiAKICAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xlQXR0cmlidXRlKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIGlzUHJlc2VudGF0aW9uYWxDaGlsZE9mQXJpYVJvbGUoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJBdGsuY3BwIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlckF0ay5jcHAKaW5kZXggNGRmYjFjNS4uZjBkOWJmZSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAKKysr
IGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0
ay5jcHAKQEAgLTEyMiw3ICsxMjIsMjEgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNv
cmUoQXRrSW1hZ2UqIGltYWdlKQogCiBzdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdF9hY2Nlc3Np
YmxlX2dldF9uYW1lKEF0a09iamVjdCogb2JqZWN0KQogewotICAgIHJldHVybiByZXR1cm5TdHJp
bmcoY29yZShvYmplY3QpLT5zdHJpbmdWYWx1ZSgpKTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBjb3JlT2JqZWN0ID0gY29yZShvYmplY3QpOworICAgIGlmIChjb3JlT2JqZWN0LT5pc0NvbnRy
b2woKSkgeworICAgICAgICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3Qg
PSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Kj4oY29yZU9iamVjdCk7Cisg
ICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxhYmVsID0gcmVuZGVyT2JqZWN0LT5jb3JyZXNw
b25kaW5nTGFiZWxGb3JDb250cm9sRWxlbWVudCgpOworICAgICAgICBpZiAobGFiZWwpIHsKKyAg
ICAgICAgICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciBjaGlsZHJlbiA9IGxhYmVsLT5jaGlsZHJlbigpOworICAgICAgICAgICAgLy8gQ3Vy
cmVudGx5LCBsYWJlbC0+c3RyaW5nVmFsdWUoKSBzaG91bGQgYmUgYW4gZW1wdHkgU3RyaW5nLiBU
aGlzCisgICAgICAgICAgICAvLyBtaWdodCBub3QgYmUgdGhlIGNhc2UgZG93biB0aGUgcm9hZC4K
KyAgICAgICAgICAgIFN0cmluZyBuYW1lID0gbGFiZWwtPnN0cmluZ1ZhbHVlKCk7CisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2hpbGRyZW4uc2l6ZSgpOyArK2kpCisgICAg
ICAgICAgICAgICAgbmFtZSArPSBjaGlsZHJlbi5hdChpKS5nZXQoKS0+c3RyaW5nVmFsdWUoKTsK
KyAgICAgICAgICAgIHJldHVybiByZXR1cm5TdHJpbmcobmFtZSk7CisgICAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIHJldHVyblN0cmluZyhjb3JlT2JqZWN0LT5zdHJpbmdWYWx1ZSgpKTsKIH0K
IAogc3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfZGVzY3JpcHRpb24o
QXRrT2JqZWN0KiBvYmplY3QpCkBAIC0xMzIsNiArMTQ2LDIwIEBAIHN0YXRpYyBjb25zdCBnY2hh
ciogd2Via2l0X2FjY2Vzc2libGVfZ2V0X2Rlc2NyaXB0aW9uKEF0a09iamVjdCogb2JqZWN0KQog
ICAgIHJldHVybiByZXR1cm5TdHJpbmcoY29yZShvYmplY3QpLT5hY2Nlc3NpYmlsaXR5RGVzY3Jp
cHRpb24oKSk7CiB9CiAKK3N0YXRpYyB2b2lkIHNldEF0a1JlbGF0aW9uU2V0RnJvbUNvcmVPYmpl
Y3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgQXRrUmVsYXRpb25TZXQqIHJlbGF0
aW9uU2V0KQoreworICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QqIGFjY09iamVjdCA9IHN0
YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QqPihjb3JlT2JqZWN0KTsKKyAgICBp
ZiAoYWNjT2JqZWN0LT5pc0NvbnRyb2woKSkgeworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBsYWJlbCA9IGFjY09iamVjdC0+Y29ycmVzcG9uZGluZ0xhYmVsRm9yQ29udHJvbEVsZW1lbnQo
KTsKKyAgICAgICAgaWYgKGxhYmVsKQorICAgICAgICAgICAgYXRrX3JlbGF0aW9uX3NldF9hZGRf
cmVsYXRpb25fYnlfdHlwZShyZWxhdGlvblNldCwgQVRLX1JFTEFUSU9OX0xBQkVMTEVEX0JZLCBs
YWJlbC0+d3JhcHBlcigpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBjb250cm9sID0gYWNjT2JqZWN0LT5jb3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxl
bWVudCgpOworICAgICAgICBpZiAoY29udHJvbCkKKyAgICAgICAgICAgIGF0a19yZWxhdGlvbl9z
ZXRfYWRkX3JlbGF0aW9uX2J5X3R5cGUocmVsYXRpb25TZXQsIEFUS19SRUxBVElPTl9MQUJFTF9G
T1IsIGNvbnRyb2wtPndyYXBwZXIoKSk7CisgICAgfQorfQorCiBzdGF0aWMgZ3BvaW50ZXIgd2Vi
a2l0X2FjY2Vzc2libGVfcGFyZW50X2NsYXNzID0gTlVMTDsKIAogc3RhdGljIEF0a09iamVjdCog
d2Via2l0X2FjY2Vzc2libGVfZ2V0X3BhcmVudChBdGtPYmplY3QqIG9iamVjdCkKQEAgLTQyMSw2
ICs0NDksMTYgQEAgc3RhdGljIEF0a1N0YXRlU2V0KiB3ZWJraXRfYWNjZXNzaWJsZV9yZWZfc3Rh
dGVfc2V0KEF0a09iamVjdCogb2JqZWN0KQogICAgIHJldHVybiBzdGF0ZVNldDsKIH0KIAorc3Rh
dGljIEF0a1JlbGF0aW9uU2V0KiB3ZWJraXRfYWNjZXNzaWJsZV9yZWZfcmVsYXRpb25fc2V0KEF0
a09iamVjdCogb2JqZWN0KQoreworICAgIEF0a1JlbGF0aW9uU2V0KiByZWxhdGlvblNldCA9IEFU
S19PQkpFQ1RfQ0xBU1Mod2Via2l0X2FjY2Vzc2libGVfcGFyZW50X2NsYXNzKS0+cmVmX3JlbGF0
aW9uX3NldChvYmplY3QpOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QgPSBj
b3JlKG9iamVjdCk7CisKKyAgICBzZXRBdGtSZWxhdGlvblNldEZyb21Db3JlT2JqZWN0KGNvcmVP
YmplY3QsIHJlbGF0aW9uU2V0KTsKKworICAgIHJldHVybiByZWxhdGlvblNldDsKK30KKwogc3Rh
dGljIHZvaWQgd2Via2l0X2FjY2Vzc2libGVfaW5pdChBdGtPYmplY3QqIG9iamVjdCwgZ3BvaW50
ZXIgZGF0YSkKIHsKICAgICBpZiAoQVRLX09CSkVDVF9DTEFTUyh3ZWJraXRfYWNjZXNzaWJsZV9w
YXJlbnRfY2xhc3MpLT5pbml0aWFsaXplKQpAQCAtNDU1LDYgKzQ5Myw3IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF9hY2Nlc3NpYmxlX2NsYXNzX2luaXQoQXRrT2JqZWN0Q2xhc3MqIGtsYXNzKQogICAg
IGtsYXNzLT5yZWZfc3RhdGVfc2V0ID0gd2Via2l0X2FjY2Vzc2libGVfcmVmX3N0YXRlX3NldDsK
ICAgICBrbGFzcy0+Z2V0X2luZGV4X2luX3BhcmVudCA9IHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9p
bmRleF9pbl9wYXJlbnQ7CiAgICAga2xhc3MtPmdldF9hdHRyaWJ1dGVzID0gd2Via2l0X2FjY2Vz
c2libGVfZ2V0X2F0dHJpYnV0ZXM7CisgICAga2xhc3MtPnJlZl9yZWxhdGlvbl9zZXQgPSB3ZWJr
aXRfYWNjZXNzaWJsZV9yZWZfcmVsYXRpb25fc2V0OwogfQogCiBHVHlwZQotLSAKMS42LjMuMwoK
</data>

          </attachment>
      

    </bug>

</bugzilla>