<?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>6590</bug_id>
          
          <creation_ts>2006-01-16 10:43:25 -0800</creation_ts>
          <short_desc>Web Inspector shows stale DOM tree if the DOM changes after the inspector has loaded</short_desc>
          <delta_ts>2008-07-24 11:10:23 -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>Web Inspector (Deprecated)</component>
          <version>420+</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>8191</dependson>
    
    <dependson>18041</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Timothy Hatcher">timothy</assigned_to>
          <cc>aroben</cc>
    
    <cc>ian</cc>
    
    <cc>kmccullough</cc>
    
    <cc>rik</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>28591</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-01-16 10:43:25 -0800</bug_when>
    <thetext>Watch for DOM mutation events and update the tree when nodes are added or removed.

If the node is currently focused, it should stay in the tree until the user changes to another node. This will 
let you inspect nodes that are short lived.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>6495</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-06-24 00:55:08 -0700</bug_when>
    <thetext>*** Bug 14356 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68668</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-01-29 11:13:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/5712921&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73342</commentid>
    <comment_count>3</comment_count>
    <who name="Kevin McCullough">kmccullough</who>
    <bug_when>2008-03-11 10:42:47 -0700</bug_when>
    <thetext>I&apos;m using XHR to modify my DOM and it&apos;s additional elements show in the inspector because they were added before the inspector was opened.  This issue is about DOM changes while the inspector is open.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80872</commentid>
    <comment_count>4</comment_count>
    <who name="Anthony Ricaud">rik</who>
    <bug_when>2008-05-18 18:33:14 -0700</bug_when>
    <thetext>Firebug has also options &quot;Highlight changes&quot; and/or &quot;Scroll changes into view&quot;. These are useful options when working on a big document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86296</commentid>
    <comment_count>5</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-07-17 22:50:29 -0700</bug_when>
    <thetext>I think we will always highlight changes. Not sure about scroll...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86318</commentid>
    <comment_count>6</comment_count>
    <who name="Anthony Ricaud">rik</who>
    <bug_when>2008-07-18 06:41:21 -0700</bug_when>
    <thetext>Highlighting all the time is not a problem.

Scrolling on user demand (with a button) is really useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86577</commentid>
    <comment_count>7</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-07-21 09:43:07 -0700</bug_when>
    <thetext>I have a fix for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86579</commentid>
    <comment_count>8</comment_count>
      <attachid>22407</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-07-21 09:50:09 -0700</bug_when>
    <thetext>Created attachment 22407
Fixes a regression where TreeOutline.findTreeElement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86580</commentid>
    <comment_count>9</comment_count>
      <attachid>22408</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-07-21 09:50:39 -0700</bug_when>
    <thetext>Created attachment 22408
Added TreeOutline.removeChildAtIndex and TreeElement.removeChildAtIndex</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86581</commentid>
    <comment_count>10</comment_count>
      <attachid>22409</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-07-21 09:51:13 -0700</bug_when>
    <thetext>Created attachment 22409
Added InspectorController.isWindowVisible to the JavaScript class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86582</commentid>
    <comment_count>11</comment_count>
      <attachid>22410</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-07-21 09:52:07 -0700</bug_when>
    <thetext>Created attachment 22410
Updates the elements DOM tree when nodes are added or removed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86583</commentid>
    <comment_count>12</comment_count>
      <attachid>22408</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-07-21 10:06:37 -0700</bug_when>
    <thetext>Comment on attachment 22408
Added TreeOutline.removeChildAtIndex and TreeElement.removeChildAtIndex

+        will be used in an upcomming change.

Typo: upcomming -&gt; upcoming

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86584</commentid>
    <comment_count>13</comment_count>
      <attachid>22409</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-07-21 10:07:34 -0700</bug_when>
    <thetext>Comment on attachment 22409
Added InspectorController.isWindowVisible to the JavaScript class

+    InspectorController* controller = reinterpret_cast&lt;InspectorController*&gt;(JSObjectGetPrivate(thisObject));

This can be a static_cast

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86585</commentid>
    <comment_count>14</comment_count>
      <attachid>22407</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-07-21 10:07:45 -0700</bug_when>
    <thetext>Comment on attachment 22407
Fixes a regression where TreeOutline.findTreeElement

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86697</commentid>
    <comment_count>15</comment_count>
      <attachid>22443</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-07-22 18:52:23 -0700</bug_when>
    <thetext>Created attachment 22443
Updates the elements DOM tree when nodes are added or removed

This version works with subframes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86773</commentid>
    <comment_count>16</comment_count>
      <attachid>22443</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-07-23 13:53:17 -0700</bug_when>
    <thetext>Comment on attachment 22443
Updates the elements DOM tree when nodes are added or removed

+    _addMutationEventListeners: function(moniteredWindow)
+    _removeMutationEventListeners: function(moniteredWindow)
+    updateMutationEventListeners: function(moniteredWindow)
+    registerMutationEventListeners: function(moniteredWindow)
+    unregisterMutationEventListeners: function(moniteredWindow)

Typo: monitered -&gt; monitored

+                    for (var i = (treeChildIndex + 1); i &lt; treeElement.children.length; ++i) {
+                        if (sameObjects(treeElement.children[i].representedObject, child)) {
+                            existingTreeElement = treeElement.children[i];
+                            break;
+                        }
+                    }

I wonder if this check is really worth it, performance-wise. I guess we need it to preserve the selected element.

+        // Remove any tree elements that no longer have this node (or this node&apos;s contentDocument) as their parent.
+        for (var i = (this.children.length - 1); i &gt; 0; --i) {

Can&apos;t we skip this in the fullRefresh case?

I don&apos;t understand the &quot;or this nodes contentDocument&quot; part. Why do we want to leave these top-level nodes in?

+            if (currentNode.contentDocument)
+                this.treeOutline.panel.unregisterMutationEventListeners(currentNode.contentDocument.defaultView);

Why is this correct? It seems like it will cause us to stop listening for mutation events in any frame where a node is removed.

+TreeElement.prototype.hasAncestor = function(ancestor) {

Maybe isDescendantOf would be a better name? I guess either is fine.

I&apos;d really like to see some tests landed with this patch.

I&apos;ll wait until you answer my questions to r+ this, but it looks good (and was surprisingly easy to follow)!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86778</commentid>
    <comment_count>17</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-07-23 14:05:41 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 22443 [edit])
&gt; +                    for (var i = (treeChildIndex + 1); i &lt;
&gt; treeElement.children.length; ++i) {
&gt; +                        if
&gt; (sameObjects(treeElement.children[i].representedObject, child)) {
&gt; +                            existingTreeElement = treeElement.children[i];
&gt; +                            break;
&gt; +                        }
&gt; +                    }
&gt; 
&gt; I wonder if this check is really worth it, performance-wise. I guess we need it
&gt; to preserve the selected element.

It is not just selection, but it prevents throwing away whole subtrees that did not change. Otherwise we will be recreating many more tree elements each time and unrelated node changes. This really isn&apos;t hit that often in  the common cases of appending an inserting. It might happen once, but the next iteration elements are shifted and line up again, so objectsAreSame(currentTreeElement.representedObject, child) will be true and nothing will be needed.

&gt; +        // Remove any tree elements that no longer have this node (or this
&gt; node&apos;s contentDocument) as their parent.
&gt; +        for (var i = (this.children.length - 1); i &gt; 0; --i) {
&gt; 
&gt; Can&apos;t we skip this in the fullRefresh case?

It is effectively skipped in the fullRefresh case since at the start of updateChildren when doing a full refresh, we do this.removeChildren(). So this.children.length will be zero by this point in the code.

&gt; I don&apos;t understand the &quot;or this nodes contentDocument&quot; part. Why do we want to
&gt; leave these top-level nodes in?

Because we append children of this node and child of this node&apos;s contentDocument. So we need to keep the child if it has either of those parents.

        if (this.representedObject.contentDocument)
            updateChildrenOfNode(this.representedObject.contentDocument);
        updateChildrenOfNode(this.representedObject);

&gt; 
&gt; +            if (currentNode.contentDocument)
&gt; +               
&gt; this.treeOutline.panel.unregisterMutationEventListeners(currentNode.contentDocument.defaultView);
&gt; 
&gt; Why is this correct? It seems like it will cause us to stop listening for
&gt; mutation events in any frame where a node is removed.

No, not any node. Any time a frame or object is removed only, since only they have contentDocuments.

&gt; I&apos;d really like to see some tests landed with this patch.

I will clean up my test that I have locally. And land it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86779</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2008-07-23 14:09:27 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; (From update of attachment 22443 [edit] [edit])
&gt; &gt; +                    for (var i = (treeChildIndex + 1); i &lt;
&gt; &gt; treeElement.children.length; ++i) {
&gt; &gt; +                        if
&gt; &gt; (sameObjects(treeElement.children[i].representedObject, child)) {
&gt; &gt; +                            existingTreeElement = treeElement.children[i];
&gt; &gt; +                            break;
&gt; &gt; +                        }
&gt; &gt; +                    }
&gt; &gt; 
&gt; &gt; I wonder if this check is really worth it, performance-wise. I guess we need it
&gt; &gt; to preserve the selected element.
&gt; 
&gt; It is not just selection, but it prevents throwing away whole subtrees that did
&gt; not change. Otherwise we will be recreating many more tree elements each time
&gt; and unrelated node changes. This really isn&apos;t hit that often in  the common
&gt; cases of appending an inserting. It might happen once, but the next iteration
&gt; elements are shifted and line up again, so
&gt; objectsAreSame(currentTreeElement.representedObject, child) will be true and
&gt; nothing will be needed.

OK.

&gt; &gt; +        // Remove any tree elements that no longer have this node (or this
&gt; &gt; node&apos;s contentDocument) as their parent.
&gt; &gt; +        for (var i = (this.children.length - 1); i &gt; 0; --i) {
&gt; &gt; 
&gt; &gt; Can&apos;t we skip this in the fullRefresh case?
&gt; 
&gt; It is effectively skipped in the fullRefresh case since at the start of
&gt; updateChildren when doing a full refresh, we do this.removeChildren(). So
&gt; this.children.length will be zero by this point in the code.

OK.

&gt; &gt; I don&apos;t understand the &quot;or this nodes contentDocument&quot; part. Why do we want to
&gt; &gt; leave these top-level nodes in?
&gt; 
&gt; Because we append children of this node and child of this node&apos;s
&gt; contentDocument. So we need to keep the child if it has either of those
&gt; parents.
&gt; 
&gt;         if (this.representedObject.contentDocument)
&gt;             updateChildrenOfNode(this.representedObject.contentDocument);
&gt;         updateChildrenOfNode(this.representedObject);
&gt; 
&gt; &gt; 
&gt; &gt; +            if (currentNode.contentDocument)
&gt; &gt; +               
&gt; &gt; this.treeOutline.panel.unregisterMutationEventListeners(currentNode.contentDocument.defaultView);
&gt; &gt; 
&gt; &gt; Why is this correct? It seems like it will cause us to stop listening for
&gt; &gt; mutation events in any frame where a node is removed.
&gt; 
&gt; No, not any node. Any time a frame or object is removed only, since only they
&gt; have contentDocuments.

Ah, I was confusing contentDocument with ownerDocument. Makes sense now.

&gt; &gt; I&apos;d really like to see some tests landed with this patch.
&gt; 
&gt; I will clean up my test that I have locally. And land it.

Great!

r=me
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86854</commentid>
    <comment_count>19</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-07-24 08:24:47 -0700</bug_when>
    <thetext>Landed in r35312, r35313, r35314 and r35317.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86869</commentid>
    <comment_count>20</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-07-24 11:07:47 -0700</bug_when>
    <thetext>Updating when attributes change has ben filed as bug 20162.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86871</commentid>
    <comment_count>21</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-07-24 11:10:23 -0700</bug_when>
    <thetext>Highlighting nodes as they change is filed as bug 20163.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22407</attachid>
            <date>2008-07-21 09:50:09 -0700</date>
            <delta_ts>2008-07-21 10:07:45 -0700</delta_ts>
            <desc>Fixes a regression where TreeOutline.findTreeElement</desc>
            <filename>0001-Fixes-a-regression-where-TreeOutline.findTre.patch</filename>
            <type>text/plain</type>
            <size>2385</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">RnJvbSA0ZmNlNGFhODM2NDk3NDk3YjRhZWNlN2E2NmY1NGZlZGVjMjQyZWZlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUaW1vdGh5IEhhdGNoZXIgPHRpbW90aHlAYXBwbGUuY29tPgpE
YXRlOiBNb24sIDIxIEp1bCAyMDA4IDA3OjU2OjMwIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gICAg
ICAgICBGaXhlcyBhIHJlZ3Jlc3Npb24gd2hlcmUgVHJlZU91dGxpbmUuZmluZFRyZWVFbGVtZW50
IHdvdWxkCiAgICAgICAgIHJldHVybiB0aGUgcGFyZW50IFRyZWVFbGVtZW50IG9mIHRoZSByZXBy
ZXNlbnRlZE9iamVjdCBpbnN0ZWFkCiAgICAgICAgIG9mIHRoZSBUcmVlRWxlbWVudCBmb3IgdGhl
IHJlcHJlc2VudGVkT2JqZWN0LiBSZWdyZXNzZWQgd2l0aCB0aGUKICAgICAgICAgZml4IGZvciBi
dWcgMTkxNjQuCgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICAq
IHBhZ2UvaW5zcGVjdG9yL3RyZWVvdXRsaW5lLmpzOgogICAgICAgIChUcmVlT3V0bGluZS5wcm90
b3R5cGUuZmluZFRyZWVFbGVtZW50KTogV2hlbiBwZXJmb3JtaW5nIGEgc2xvdyBzZWFyY2gsCiAg
ICAgICAgZG8gYSBmaW5hbCBzZWFyY2ggZm9yIHJlcHJlc2VudGVkT2JqZWN0IGluc3RlYWQgb2Yg
cmV0dXJuaW5nIGl0ZW0sIHdoaWNoCiAgICAgICAgaXMgdGhlIHBhcmVudCBvZiByZXByZXNlbnRl
ZE9iamVjdC4KLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgIHwgICAx
NCArKysrKysrKysrKysrKwogV2ViQ29yZS9wYWdlL2luc3BlY3Rvci90cmVlb3V0bGluZS5qcyB8
ICAgIDQgKysrLQogMiBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggMDIwM2VmYi4uMWY1OTMyMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAwOC0wNy0yMSAgVGltb3Ro
eSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisKKyAgICAgICAgRml4ZXMgYSByZWdyZXNz
aW9uIHdoZXJlIFRyZWVPdXRsaW5lLmZpbmRUcmVlRWxlbWVudCB3b3VsZAorICAgICAgICByZXR1
cm4gdGhlIHBhcmVudCBUcmVlRWxlbWVudCBvZiB0aGUgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGVh
ZAorICAgICAgICBvZiB0aGUgVHJlZUVsZW1lbnQgZm9yIHRoZSByZXByZXNlbnRlZE9iamVjdC4g
UmVncmVzc2VkIHdpdGggdGhlCisgICAgICAgIGZpeCBmb3IgYnVnIDE5MTY0LgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFnZS9pbnNwZWN0b3Iv
dHJlZW91dGxpbmUuanM6CisgICAgICAgIChUcmVlT3V0bGluZS5wcm90b3R5cGUuZmluZFRyZWVF
bGVtZW50KTogV2hlbiBwZXJmb3JtaW5nIGEgc2xvdyBzZWFyY2gsCisgICAgICAgIGRvIGEgZmlu
YWwgc2VhcmNoIGZvciByZXByZXNlbnRlZE9iamVjdCBpbnN0ZWFkIG9mIHJldHVybmluZyBpdGVt
LCB3aGljaAorICAgICAgICBpcyB0aGUgcGFyZW50IG9mIHJlcHJlc2VudGVkT2JqZWN0LgorCiAy
MDA4LTA3LTE5ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgTWFyayBSb3dlLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci90
cmVlb3V0bGluZS5qcyBiL1dlYkNvcmUvcGFnZS9pbnNwZWN0b3IvdHJlZW91dGxpbmUuanMKaW5k
ZXggNWYzY2RiNS4uNWRmMGY3ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci90
cmVlb3V0bGluZS5qcworKysgYi9XZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL3RyZWVvdXRsaW5lLmpz
CkBAIC0yOTUsNyArMjk1LDkgQEAgVHJlZU91dGxpbmUucHJvdG90eXBlLmZpbmRUcmVlRWxlbWVu
dCA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0LCBpc0FuY2VzdG9yLAogICAgICAgICAgICAg
aXRlbS5vbnBvcHVsYXRlKGl0ZW0pOwogICAgIH0KIAotICAgIHJldHVybiBpdGVtOworICAgIC8v
IE5vdyB0aGF0IGFsbCB0aGUgYW5jZXN0b3JzIGFyZSBwb3B1bGF0ZWQsIHRyeSB0byBmaW5kIHRo
ZSByZXByZXNlbnRlZE9iamVjdCBhZ2Fpbi4gVGhpcyB0aW1lCisgICAgLy8gd2l0aG91dCB0aGUg
aXNBbmNlc3RvciBhbmQgZ2V0UGFyZW50IGZ1bmN0aW9ucyB0byBwcmV2ZW50IGFuIGluZmluaXRl
IHJlY3Vyc2lvbiBpZiBpdCBpc24ndCBmb3VuZC4KKyAgICByZXR1cm4gdGhpcy5maW5kVHJlZUVs
ZW1lbnQocmVwcmVzZW50ZWRPYmplY3QpOwogfQogCiBUcmVlT3V0bGluZS5wcm90b3R5cGUudHJl
ZUVsZW1lbnRGcm9tUG9pbnQgPSBmdW5jdGlvbih4LCB5KQotLSAKMS41LjQuNAoK
</data>
<flag name="review"
          id="9877"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22408</attachid>
            <date>2008-07-21 09:50:39 -0700</date>
            <delta_ts>2008-07-21 10:06:37 -0700</delta_ts>
            <desc>Added TreeOutline.removeChildAtIndex and TreeElement.removeChildAtIndex</desc>
            <filename>0002-Added-TreeOutline.removeChildAtIndex-and-Tre.patch</filename>
            <type>text/plain</type>
            <size>4541</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">RnJvbSA2Y2E2Mjg4Y2FhNjM0YzA0Yjg3NGQyOWFlMzk0ODRjMTNkMDRmM2I3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUaW1vdGh5IEhhdGNoZXIgPHRpbW90aHlAYXBwbGUuY29tPgpE
YXRlOiBNb24sIDIxIEp1bCAyMDA4IDA4OjAyOjEzIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gICAg
ICAgICBBZGRlZCBUcmVlT3V0bGluZS5yZW1vdmVDaGlsZEF0SW5kZXggYW5kIFRyZWVFbGVtZW50
LnJlbW92ZUNoaWxkQXRJbmRleAogICAgICAgICBmb3IgZWZmaWNpZW5jeSBvZiBjYWxsZXJzIHRo
YXQga25vdyB0aGUgaW5kZXggb2YgdGhlIGNoaWxkLiBUaGlzCiAgICAgICAgIHdpbGwgYmUgdXNl
ZCBpbiBhbiB1cGNvbW1pbmcgY2hhbmdlLgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KCiAgICAgICAgKiBwYWdlL2luc3BlY3Rvci90cmVlb3V0bGluZS5qczoKICAgICAgICAo
VHJlZU91dGxpbmUuX3JlbW92ZUNoaWxkQXRJbmRleCk6IFJlbmFtZWQgZnJvbSBfcmVtb3ZlQ2hp
bGQKICAgICAgICBhbmQgbW9kaWZpZWQgdG8gdGFrZSBhbiBpbmRleC4KICAgICAgICAoVHJlZU91
dGxpbmUuX3JlbW92ZUNoaWxkKTogQ2FsbCBfcmVtb3ZlQ2hpbGRBdEluZGV4IHdpdGggdGhlCiAg
ICAgICAgY2hpbGQgaW5kZXggZm91bmQgdXNpbmcgaW5kZXhPZi4KICAgICAgICAoVHJlZU91dGxp
bmUucHJvdG90eXBlLnJlbW92ZUNoaWxkQXRJbmRleCk6IEFkZGVkLiBDYWxscwogICAgICAgIFRy
ZWVPdXRsaW5lLl9yZW1vdmVDaGlsZEF0SW5kZXguCiAgICAgICAgKFRyZWVFbGVtZW50LnByb3Rv
dHlwZS5yZW1vdmVDaGlsZEF0SW5kZXgpOiBEaXR0by4KLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgICAgIHwgICAxNyArKysrKysrKysrKysrKysrKwogV2ViQ29yZS9wYWdl
L2luc3BlY3Rvci90cmVlb3V0bGluZS5qcyB8ICAgMjggKysrKysrKysrKysrKysrKysrKy0tLS0t
LS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWY1OTMyMy4uYjQ0NGI3ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMiBAQAogMjAwOC0wNy0yMSAgVGltb3RoeSBIYXRj
aGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKKyAgICAgICAgQWRkZWQgVHJlZU91dGxpbmUucmVt
b3ZlQ2hpbGRBdEluZGV4IGFuZCBUcmVlRWxlbWVudC5yZW1vdmVDaGlsZEF0SW5kZXgKKyAgICAg
ICAgZm9yIGVmZmljaWVuY3kgb2YgY2FsbGVycyB0aGF0IGtub3cgdGhlIGluZGV4IG9mIHRoZSBj
aGlsZC4gVGhpcworICAgICAgICB3aWxsIGJlIHVzZWQgaW4gYW4gdXBjb21taW5nIGNoYW5nZS4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhZ2Uv
aW5zcGVjdG9yL3RyZWVvdXRsaW5lLmpzOgorICAgICAgICAoVHJlZU91dGxpbmUuX3JlbW92ZUNo
aWxkQXRJbmRleCk6IFJlbmFtZWQgZnJvbSBfcmVtb3ZlQ2hpbGQKKyAgICAgICAgYW5kIG1vZGlm
aWVkIHRvIHRha2UgYW4gaW5kZXguCisgICAgICAgIChUcmVlT3V0bGluZS5fcmVtb3ZlQ2hpbGQp
OiBDYWxsIF9yZW1vdmVDaGlsZEF0SW5kZXggd2l0aCB0aGUKKyAgICAgICAgY2hpbGQgaW5kZXgg
Zm91bmQgdXNpbmcgaW5kZXhPZi4KKyAgICAgICAgKFRyZWVPdXRsaW5lLnByb3RvdHlwZS5yZW1v
dmVDaGlsZEF0SW5kZXgpOiBBZGRlZC4gQ2FsbHMKKyAgICAgICAgVHJlZU91dGxpbmUuX3JlbW92
ZUNoaWxkQXRJbmRleC4KKyAgICAgICAgKFRyZWVFbGVtZW50LnByb3RvdHlwZS5yZW1vdmVDaGls
ZEF0SW5kZXgpOiBEaXR0by4KKworMjAwOC0wNy0yMSAgVGltb3RoeSBIYXRjaGVyICA8dGltb3Ro
eUBhcHBsZS5jb20+CisKICAgICAgICAgRml4ZXMgYSByZWdyZXNzaW9uIHdoZXJlIFRyZWVPdXRs
aW5lLmZpbmRUcmVlRWxlbWVudCB3b3VsZAogICAgICAgICByZXR1cm4gdGhlIHBhcmVudCBUcmVl
RWxlbWVudCBvZiB0aGUgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGVhZAogICAgICAgICBvZiB0aGUg
VHJlZUVsZW1lbnQgZm9yIHRoZSByZXByZXNlbnRlZE9iamVjdC4gUmVncmVzc2VkIHdpdGggdGhl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL3RyZWVvdXRsaW5lLmpzIGIvV2Vi
Q29yZS9wYWdlL2luc3BlY3Rvci90cmVlb3V0bGluZS5qcwppbmRleCA1ZGYwZjdkLi4xNjNlMzU3
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL3RyZWVvdXRsaW5lLmpzCisrKyBi
L1dlYkNvcmUvcGFnZS9pbnNwZWN0b3IvdHJlZW91dGxpbmUuanMKQEAgLTEzMywxNyArMTMzLDEz
IEBAIFRyZWVPdXRsaW5lLl9pbnNlcnRDaGlsZCA9IGZ1bmN0aW9uKGNoaWxkLCBpbmRleCkKICAg
ICBjaGlsZC5fYXR0YWNoKCk7CiB9CiAKLVRyZWVPdXRsaW5lLl9yZW1vdmVDaGlsZCA9IGZ1bmN0
aW9uKGNoaWxkKQorVHJlZU91dGxpbmUuX3JlbW92ZUNoaWxkQXRJbmRleCA9IGZ1bmN0aW9uKGNo
aWxkSW5kZXgpCiB7Ci0gICAgaWYgKCFjaGlsZCkKLSAgICAgICAgdGhyb3coImNoaWxkIGNhbid0
IGJlIHVuZGVmaW5lZCBvciBudWxsIik7CisgICAgaWYgKGNoaWxkSW5kZXggPCAwIHx8IGNoaWxk
SW5kZXggPj0gdGhpcy5jaGlsZHJlbi5sZW5ndGgpCisgICAgICAgIHRocm93KCJjaGlsZEluZGV4
IG91dCBvZiByYW5nZSIpOwogCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVu
Lmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmICh0aGlzLmNoaWxkcmVuW2ldID09PSBjaGlsZCkg
ewotICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5zcGxpY2UoaSwgMSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgIH0KKyAgICB2YXIgY2hpbGQgPSB0aGlzLmNoaWxkcmVuW2No
aWxkSW5kZXhdOworICAgIHRoaXMuY2hpbGRyZW4uc3BsaWNlKGNoaWxkSW5kZXgsIDEpOwogCiAg
ICAgY2hpbGQuZGVzZWxlY3QoKTsKIApAQCAtMTYxLDYgKzE1NywxOCBAQCBUcmVlT3V0bGluZS5f
cmVtb3ZlQ2hpbGQgPSBmdW5jdGlvbihjaGlsZCkKICAgICBjaGlsZC5wcmV2aW91c1NpYmxpbmcg
PSBudWxsOwogfQogCitUcmVlT3V0bGluZS5fcmVtb3ZlQ2hpbGQgPSBmdW5jdGlvbihjaGlsZCkK
K3sKKyAgICBpZiAoIWNoaWxkKQorICAgICAgICB0aHJvdygiY2hpbGQgY2FuJ3QgYmUgdW5kZWZp
bmVkIG9yIG51bGwiKTsKKworICAgIHZhciBjaGlsZEluZGV4ID0gdGhpcy5jaGlsZHJlbi5pbmRl
eE9mKGNoaWxkKTsKKyAgICBpZiAoY2hpbGRJbmRleCA9PT0gLTEpCisgICAgICAgIHRocm93KCJj
aGlsZCBub3QgZm91bmQgaW4gdGhpcyBub2RlJ3MgY2hpbGRyZW4iKTsKKworICAgIFRyZWVPdXRs
aW5lLl9yZW1vdmVDaGlsZEF0SW5kZXguY2FsbCh0aGlzLCBjaGlsZEluZGV4KTsKK30KKwogVHJl
ZU91dGxpbmUuX3JlbW92ZUNoaWxkcmVuID0gZnVuY3Rpb24oKQogewogICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7ICsraSkgewpAQCAtMzk1LDYgKzQwMyw3IEBA
IFRyZWVPdXRsaW5lLnByb3RvdHlwZS5yZXZlYWwgPSBmdW5jdGlvbigpCiBUcmVlT3V0bGluZS5w
cm90b3R5cGUuYXBwZW5kQ2hpbGQgPSBUcmVlT3V0bGluZS5fYXBwZW5kQ2hpbGQ7CiBUcmVlT3V0
bGluZS5wcm90b3R5cGUuaW5zZXJ0Q2hpbGQgPSBUcmVlT3V0bGluZS5faW5zZXJ0Q2hpbGQ7CiBU
cmVlT3V0bGluZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGQgPSBUcmVlT3V0bGluZS5fcmVtb3ZlQ2hp
bGQ7CitUcmVlT3V0bGluZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGRBdEluZGV4ID0gVHJlZU91dGxp
bmUuX3JlbW92ZUNoaWxkQXRJbmRleDsKIFRyZWVPdXRsaW5lLnByb3RvdHlwZS5yZW1vdmVDaGls
ZHJlbiA9IFRyZWVPdXRsaW5lLl9yZW1vdmVDaGlsZHJlbjsKIFRyZWVPdXRsaW5lLnByb3RvdHlw
ZS5yZW1vdmVDaGlsZHJlblJlY3Vyc2l2ZSA9IFRyZWVPdXRsaW5lLl9yZW1vdmVDaGlsZHJlblJl
Y3Vyc2l2ZTsKIApAQCAtNDkxLDYgKzUwMCw3IEBAIFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsK
IFRyZWVFbGVtZW50LnByb3RvdHlwZS5hcHBlbmRDaGlsZCA9IFRyZWVPdXRsaW5lLl9hcHBlbmRD
aGlsZDsKIFRyZWVFbGVtZW50LnByb3RvdHlwZS5pbnNlcnRDaGlsZCA9IFRyZWVPdXRsaW5lLl9p
bnNlcnRDaGlsZDsKIFRyZWVFbGVtZW50LnByb3RvdHlwZS5yZW1vdmVDaGlsZCA9IFRyZWVPdXRs
aW5lLl9yZW1vdmVDaGlsZDsKK1RyZWVFbGVtZW50LnByb3RvdHlwZS5yZW1vdmVDaGlsZEF0SW5k
ZXggPSBUcmVlT3V0bGluZS5fcmVtb3ZlQ2hpbGRBdEluZGV4OwogVHJlZUVsZW1lbnQucHJvdG90
eXBlLnJlbW92ZUNoaWxkcmVuID0gVHJlZU91dGxpbmUuX3JlbW92ZUNoaWxkcmVuOwogVHJlZUVs
ZW1lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuUmVjdXJzaXZlID0gVHJlZU91dGxpbmUuX3Jl
bW92ZUNoaWxkcmVuUmVjdXJzaXZlOwogCi0tIAoxLjUuNC40Cgo=
</data>
<flag name="review"
          id="9878"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22409</attachid>
            <date>2008-07-21 09:51:13 -0700</date>
            <delta_ts>2008-07-21 10:07:34 -0700</delta_ts>
            <desc>Added InspectorController.isWindowVisible to the JavaScript class</desc>
            <filename>0003-Added-InspectorController.isWindowVisible-to.patch</filename>
            <type>text/plain</type>
            <size>3260</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">RnJvbSA5Mzk2ODcyNTNhNTEzMGJlNzgzMzM0Y2M0Y2I3NTY1MjY1YzZkYWZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUaW1vdGh5IEhhdGNoZXIgPHRpbW90aHlAYXBwbGUuY29tPgpE
YXRlOiBNb24sIDIxIEp1bCAyMDA4IDA4OjA4OjA0IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gICAg
ICAgICBBZGRlZCBJbnNwZWN0b3JDb250cm9sbGVyLmlzV2luZG93VmlzaWJsZSB0byB0aGUgSmF2
YVNjcmlwdCBjbGFzcwogICAgICAgICBmb3IgdXNlIGluIGFuIHVwY29taW5nIGNoYW5nZS4gVGhp
cyB3aWxsIGFsbG93IHRoZSBJbnNwZWN0b3IgdG8gbm90CiAgICAgICAgIHBlcmZvcm0gc2VsZWN0
aXZlIGFjdGlvbnMgd2hpbGUgdGhlIHdpbmRvdyBpcyBoaWRkZW4uCgogICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICAqIHBhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHA6CiAgICAgICAgKFdlYkNvcmU6OmlzV2luZG93VmlzaWJsZSk6IENhbGwgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6d2luZG93VmlzaWJsZS4KICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlcjo6d2luZG93U2NyaXB0T2JqZWN0QXZhaWxhYmxlKTogQWRkCiAgICAgICAgdGhlIGlzV2lu
ZG93VmlzaWJsZSBmdW5jdGlvbiB0byB0aGUgSmF2YVNjcmlwdCBjbGFzcy4KLS0tCiBXZWJDb3Jl
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgfCAgIDEzICsrKysrKysrKysrKysKIFdlYkNv
cmUvcGFnZS9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCB8ICAgIDkgKysrKysrKysrCiAyIGZpbGVz
IGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNDQ0YjdlLi5mOTQ1
MWEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSw1ICsxLDE4IEBACiAyMDA4LTA3LTIxICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5
QGFwcGxlLmNvbT4KIAorICAgICAgICBBZGRlZCBJbnNwZWN0b3JDb250cm9sbGVyLmlzV2luZG93
VmlzaWJsZSB0byB0aGUgSmF2YVNjcmlwdCBjbGFzcworICAgICAgICBmb3IgdXNlIGluIGFuIHVw
Y29taW5nIGNoYW5nZS4gVGhpcyB3aWxsIGFsbG93IHRoZSBJbnNwZWN0b3IgdG8gbm90CisgICAg
ICAgIHBlcmZvcm0gc2VsZWN0aXZlIGFjdGlvbnMgd2hpbGUgdGhlIHdpbmRvdyBpcyBoaWRkZW4u
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWdl
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNXaW5kb3dWaXNp
YmxlKTogQ2FsbCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aW5kb3dWaXNpYmxlLgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6d2luZG93U2NyaXB0T2JqZWN0QXZhaWxhYmxl
KTogQWRkCisgICAgICAgIHRoZSBpc1dpbmRvd1Zpc2libGUgZnVuY3Rpb24gdG8gdGhlIEphdmFT
Y3JpcHQgY2xhc3MuCisKKzIwMDgtMDctMjEgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBw
bGUuY29tPgorCiAgICAgICAgIEFkZGVkIFRyZWVPdXRsaW5lLnJlbW92ZUNoaWxkQXRJbmRleCBh
bmQgVHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGRBdEluZGV4CiAgICAgICAgIGZvciBlZmZpY2llbmN5
IG9mIGNhbGxlcnMgdGhhdCBrbm93IHRoZSBpbmRleCBvZiB0aGUgY2hpbGQuIFRoaXMKICAgICAg
ICAgd2lsbCBiZSB1c2VkIGluIGFuIHVwY29tbWluZyBjaGFuZ2UuCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL3BhZ2UvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKaW5kZXggNmI3OTk5NS4uMTI2NTY2YSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcApAQCAtOTY0LDYgKzk2NCwxNCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBy
ZW1vdmVCcmVha3BvaW50KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIC8qZnVuY3Rpb24q
LywgSgogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwogfQogCitzdGF0aWMg
SlNWYWx1ZVJlZiBpc1dpbmRvd1Zpc2libGUoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYg
LypmdW5jdGlvbiovLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQor
eworICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0
PEluc3BlY3RvckNvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwor
ICAgIGlmICghY29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGN0eCk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjdHgsIGNvbnRyb2xsZXItPndp
bmRvd1Zpc2libGUoKSk7Cit9CisKIC8vIFByb2ZpbGVzCiAKIHN0YXRpYyBKU1ZhbHVlUmVmIHBy
b2ZpbGVzKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIC8qZnVuY3Rpb24qLywgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IC8qYXJndW1lbnRDb3VudCovLCBjb25zdCBKU1ZhbHVl
UmVmW10gLyphcmd1bWVudHMqLywgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpAQCAtMTI3OCw2ICsx
Mjg2LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjp3aW5kb3dTY3JpcHRPYmplY3RBdmFp
bGFibGUoKQogICAgICAgICB7ICJzdGVwT3V0T2ZGdW5jdGlvbkluRGVidWdnZXIiLCBXZWJDb3Jl
OjpzdGVwT3V0T2ZGdW5jdGlvbkluRGVidWdnZXIsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSB9
LAogICAgICAgICB7ICJhZGRCcmVha3BvaW50IiwgV2ViQ29yZTo6YWRkQnJlYWtwb2ludCwga0pT
UHJvcGVydHlBdHRyaWJ1dGVOb25lIH0sCiAgICAgICAgIHsgInJlbW92ZUJyZWFrcG9pbnQiLCBX
ZWJDb3JlOjpyZW1vdmVCcmVha3BvaW50LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKKyAg
ICAgICAgeyAiaXNXaW5kb3dWaXNpYmxlIiwgV2ViQ29yZTo6aXNXaW5kb3dWaXNpYmxlLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZU5vbmUgfSwKICAgICAgICAgeyAwLCAwLCAwIH0KICAgICB9OwogCi0t
IAoxLjUuNC40Cgo=
</data>
<flag name="review"
          id="9879"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22410</attachid>
            <date>2008-07-21 09:52:07 -0700</date>
            <delta_ts>2008-07-22 18:52:23 -0700</delta_ts>
            <desc>Updates the elements DOM tree when nodes are added or removed</desc>
            <filename>0004-Updates-the-elements-DOM-tree-when-nodes-are.patch</filename>
            <type>text/plain</type>
            <size>12730</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">RnJvbSBkN2Q3MjliMjYxNzhiMzRmNTZhMWZlNmZjZGMxZmIzMzM5YTA3Njg1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUaW1vdGh5IEhhdGNoZXIgPHRpbW90aHlAYXBwbGUuY29tPgpE
YXRlOiBNb24sIDIxIEp1bCAyMDA4IDA5OjQyOjUxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gICAg
ICAgICBVcGRhdGVzIHRoZSBlbGVtZW50cyBET00gdHJlZSB3aGVuIG5vZGVzIGFyZSBhZGRlZCBv
ciByZW1vdmVkIGZyb20KICAgICAgICAgdGhlIGluc3BlY3RlZCBkb2N1bWVudC4KCiAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1OTAKICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTcxMjkyMT4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CgogICAgICAgICogcGFnZS9pbnNwZWN0b3IvRWxlbWVudHNQYW5lbC5qczoKICAgICAgICAoV2Vi
SW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLnNob3cpOiBDYWxsIF91cGRhdGVNb2Rp
ZmllZE5vZGVzIGlmCiAgICAgICAgdGhlcmUgYXJlIGFueSByZWNlbnRseSBtb2RpZmllZCBub2Rl
cy4KICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLnJlc2V0KTog
QWRkIG11dGF0aW9uIGV2ZW50IGxpc3RlbmVycy4KICAgICAgICBLZWVwaW5nIHRyYWNrIG9mIHRo
ZSBwcmV2aW91cyBkb2N1bWVudCwgc28gdGhlIGV2ZW50IGxpc3RlbmVycyBjYW4gYmUgcmVtb3Zl
ZC4KICAgICAgICBBZGRzIGEgY2hlY2sgZm9yIEluc3BlY3RvckNvbnRyb2xsZXIuaXNXaW5kb3dW
aXNpYmxlIHRvIHByZXZlbnQgYWRkaW5nCiAgICAgICAgZXZlbnQgbGlzdGVuZXJzIHdoZW4gdGhl
IHdpbmRvdyBpc24ndCB2aXNpYmxlLgogICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5l
bC5wcm90b3R5cGUuX25vZGVJbnNlcnRlZCk6IEFwcGVuZCB0aGUgbm9kZSBhbmQgcGFyZW50CiAg
ICAgICAgdG8gdGhlIHJlY2VudGx5TW9kaWZpZWROb2RlcyBhcnJheS4gQ2FsbCBfdXBkYXRlTW9k
aWZpZWROb2Rlc1Nvb24gaWYgdmlzaWJsZS4KICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRz
UGFuZWwucHJvdG90eXBlLl9ub2RlUmVtb3ZlZCk6IERpdHRvLgogICAgICAgIChXZWJJbnNwZWN0
b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUuX3VwZGF0ZU1vZGlmaWVkTm9kZXNTb29uKTogQ2Fs
bAogICAgICAgIF91cGRhdGVNb2RpZmllZE5vZGVzIG9uIGEgemVybyB0aW1lb3V0LgogICAgICAg
IChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUuX3VwZGF0ZU1vZGlmaWVkTm9k
ZXMpOiBJdGVyYXRlIG92ZXIKICAgICAgICB0aGUgcmVjZW50bHlNb2RpZmllZE5vZGVzIGFycmF5
IGFuZCBjYWxsIHVwZGF0ZUNoaWxkcmVuIG9uIGFsbCB0aGUgcGFyZW50CiAgICAgICAgZWxlbWVu
dHMgdGhhdCBoYWQgY2hhbmdlcy4gT25seSBjYWxscyB1cGRhdGVDaGlsZHJlbiBvbmNlIHBlciBw
YXJlbnQgZWxlbWVudC4KICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGVUcmVlRWxlbWVudC5w
cm90b3R5cGUub25wb3B1bGF0ZSk6IENhbGwgdXBkYXRlQ2hpbGRyZW4uCiAgICAgICAgKFdlYklu
c3BlY3Rvci5ET01Ob2RlVHJlZUVsZW1lbnQucHJvdG90eXBlLnVwZGF0ZUNoaWxkcmVuKTogQ29w
aWVkIGZyb20KICAgICAgICBvbnBvcHVsYXRlIGFuZCBjaGFuZ2VkIHRvIHJlYnVpbGQgdGhlIGNo
aWxkcmVuIGVsZW1lbnRzIGJ5IGFkZGluZyBuZXcgY2hpbGRyZW4sCiAgICAgICAgbW92aW5nIGV4
aXN0aW5nIGNoaWxkcmVuIGFuZCByZW1vdmVkIG9sZCBjaGlsZHJlbi4KLS0tCiBXZWJDb3JlL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMwICsrKysrKysKIFdlYkNvcmUvcGFn
ZS9pbnNwZWN0b3IvRWxlbWVudHNQYW5lbC5qcyB8ICAxMzIgKysrKysrKysrKysrKysrKysrKysr
KysrKysrKy0tCiAyIGZpbGVzIGNoYW5nZWQsIDE1MyBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggZjk0NTFhMi4uODA1NjYyYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzNSBAQAogMjAwOC0wNy0yMSAgVGltb3Ro
eSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKKyAgICAgICAgVXBkYXRlcyB0aGUgZWxl
bWVudHMgRE9NIHRyZWUgd2hlbiBub2RlcyBhcmUgYWRkZWQgb3IgcmVtb3ZlZCBmcm9tCisgICAg
ICAgIHRoZSBpbnNwZWN0ZWQgZG9jdW1lbnQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY1OTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MTI5
MjE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBw
YWdlL2luc3BlY3Rvci9FbGVtZW50c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVs
ZW1lbnRzUGFuZWwucHJvdG90eXBlLnNob3cpOiBDYWxsIF91cGRhdGVNb2RpZmllZE5vZGVzIGlm
CisgICAgICAgIHRoZXJlIGFyZSBhbnkgcmVjZW50bHkgbW9kaWZpZWQgbm9kZXMuCisgICAgICAg
IChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUucmVzZXQpOiBBZGQgbXV0YXRp
b24gZXZlbnQgbGlzdGVuZXJzLgorICAgICAgICBLZWVwaW5nIHRyYWNrIG9mIHRoZSBwcmV2aW91
cyBkb2N1bWVudCwgc28gdGhlIGV2ZW50IGxpc3RlbmVycyBjYW4gYmUgcmVtb3ZlZC4KKyAgICAg
ICAgQWRkcyBhIGNoZWNrIGZvciBJbnNwZWN0b3JDb250cm9sbGVyLmlzV2luZG93VmlzaWJsZSB0
byBwcmV2ZW50IGFkZGluZworICAgICAgICBldmVudCBsaXN0ZW5lcnMgd2hlbiB0aGUgd2luZG93
IGlzbid0IHZpc2libGUuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90
b3R5cGUuX25vZGVJbnNlcnRlZCk6IEFwcGVuZCB0aGUgbm9kZSBhbmQgcGFyZW50CisgICAgICAg
IHRvIHRoZSByZWNlbnRseU1vZGlmaWVkTm9kZXMgYXJyYXkuIENhbGwgX3VwZGF0ZU1vZGlmaWVk
Tm9kZXNTb29uIGlmIHZpc2libGUuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5l
bC5wcm90b3R5cGUuX25vZGVSZW1vdmVkKTogRGl0dG8uCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RWxlbWVudHNQYW5lbC5wcm90b3R5cGUuX3VwZGF0ZU1vZGlmaWVkTm9kZXNTb29uKTogQ2FsbAor
ICAgICAgICBfdXBkYXRlTW9kaWZpZWROb2RlcyBvbiBhIHplcm8gdGltZW91dC4KKyAgICAgICAg
KFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5fdXBkYXRlTW9kaWZpZWROb2Rl
cyk6IEl0ZXJhdGUgb3ZlcgorICAgICAgICB0aGUgcmVjZW50bHlNb2RpZmllZE5vZGVzIGFycmF5
IGFuZCBjYWxsIHVwZGF0ZUNoaWxkcmVuIG9uIGFsbCB0aGUgcGFyZW50CisgICAgICAgIGVsZW1l
bnRzIHRoYXQgaGFkIGNoYW5nZXMuIE9ubHkgY2FsbHMgdXBkYXRlQ2hpbGRyZW4gb25jZSBwZXIg
cGFyZW50IGVsZW1lbnQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NTm9kZVRyZWVFbGVtZW50
LnByb3RvdHlwZS5vbnBvcHVsYXRlKTogQ2FsbCB1cGRhdGVDaGlsZHJlbi4KKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5ET01Ob2RlVHJlZUVsZW1lbnQucHJvdG90eXBlLnVwZGF0ZUNoaWxkcmVuKTog
Q29waWVkIGZyb20KKyAgICAgICAgb25wb3B1bGF0ZSBhbmQgY2hhbmdlZCB0byByZWJ1aWxkIHRo
ZSBjaGlsZHJlbiBlbGVtZW50cyBieSBhZGRpbmcgbmV3IGNoaWxkcmVuLAorICAgICAgICBtb3Zp
bmcgZXhpc3RpbmcgY2hpbGRyZW4gYW5kIHJlbW92ZWQgb2xkIGNoaWxkcmVuLgorCisyMDA4LTA3
LTIxICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKwogICAgICAgICBBZGRl
ZCBJbnNwZWN0b3JDb250cm9sbGVyLmlzV2luZG93VmlzaWJsZSB0byB0aGUgSmF2YVNjcmlwdCBj
bGFzcwogICAgICAgICBmb3IgdXNlIGluIGFuIHVwY29taW5nIGNoYW5nZS4gVGhpcyB3aWxsIGFs
bG93IHRoZSBJbnNwZWN0b3IgdG8gbm90CiAgICAgICAgIHBlcmZvcm0gc2VsZWN0aXZlIGFjdGlv
bnMgd2hpbGUgdGhlIHdpbmRvdyBpcyBoaWRkZW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uv
aW5zcGVjdG9yL0VsZW1lbnRzUGFuZWwuanMgYi9XZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL0VsZW1l
bnRzUGFuZWwuanMKaW5kZXggNmJmMTQwNy4uNzU5ZjMxMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
YWdlL2luc3BlY3Rvci9FbGVtZW50c1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvcGFnZS9pbnNwZWN0
b3IvRWxlbWVudHNQYW5lbC5qcwpAQCAtMTAzLDYgKzEwMyw4IEBAIFdlYkluc3BlY3Rvci5FbGVt
ZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5zaWRlYmFyUmVzaXplRWxlbWVu
dC5zdHlsZS5yaWdodCA9ICh0aGlzLnNpZGViYXJFbGVtZW50Lm9mZnNldFdpZHRoIC0gMykgKyAi
cHgiOwogICAgICAgICB0aGlzLnVwZGF0ZUJyZWFkY3J1bWIoKTsKICAgICAgICAgdGhpcy51cGRh
dGVUcmVlU2VsZWN0aW9uKCk7CisgICAgICAgIGlmICh0aGlzLnJlY2VudGx5TW9kaWZpZWROb2Rl
cy5sZW5ndGgpCisgICAgICAgICAgICB0aGlzLl91cGRhdGVNb2RpZmllZE5vZGVzKCk7CiAgICAg
fSwKIAogICAgIGhpZGU6IGZ1bmN0aW9uKCkKQEAgLTEyOCw2ICsxMzAsMTYgQEAgV2ViSW5zcGVj
dG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmhvdmVyZWRET01O
b2RlID0gbnVsbDsKICAgICAgICAgdGhpcy5mb3JjZUhvdmVySGlnaGxpZ2h0ID0gZmFsc2U7CiAK
KyAgICAgICAgdGhpcy5yZWNlbnRseU1vZGlmaWVkTm9kZXMgPSBbXTsKKworICAgICAgICBpZiAo
dGhpcy5fcHJldmlvdXNJbnNwZWN0ZWRSb290RG9jdW1lbnQpIHsKKyAgICAgICAgICAgIGlmICh0
aGlzLl9ub2RlSW5zZXJ0ZWRFdmVudExpc3RlbmVyKQorICAgICAgICAgICAgICAgIHRoaXMuX3By
ZXZpb3VzSW5zcGVjdGVkUm9vdERvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTU5vZGVJ
bnNlcnRlZCIsIHRoaXMuX25vZGVJbnNlcnRlZEV2ZW50TGlzdGVuZXIsIHRydWUpOworICAgICAg
ICAgICAgaWYgKHRoaXMuX25vZGVSZW1vdmVkRXZlbnRMaXN0ZW5lcikKKyAgICAgICAgICAgICAg
ICB0aGlzLl9wcmV2aW91c0luc3BlY3RlZFJvb3REb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVy
KCJET01Ob2RlUmVtb3ZlZCIsIHRoaXMuX25vZGVSZW1vdmVkRXZlbnRMaXN0ZW5lciwgdHJ1ZSk7
CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fcHJldmlvdXNJbnNwZWN0ZWRSb290RG9jdW1lbnQ7
CisgICAgICAgIH0KKwogICAgICAgICB2YXIgaW5zcGVjdGVkV2luZG93ID0gSW5zcGVjdG9yQ29u
dHJvbGxlci5pbnNwZWN0ZWRXaW5kb3coKTsKICAgICAgICAgaWYgKCFpbnNwZWN0ZWRXaW5kb3cg
fHwgIWluc3BlY3RlZFdpbmRvdy5kb2N1bWVudCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0
MSwxMiArMTUzLDI0IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdmFyIGNvbnRlbnRMb2FkZWRDYWxsYmFjayA9
IEluc3BlY3RvckNvbnRyb2xsZXIud3JhcENhbGxiYWNrKGNvbnRlbnRMb2FkZWQuYmluZCh0aGlz
KSk7Ci0KICAgICAgICAgICAgIGluc3BlY3RlZFdpbmRvdy5kb2N1bWVudC5hZGRFdmVudExpc3Rl
bmVyKCJET01Db250ZW50TG9hZGVkIiwgY29udGVudExvYWRlZENhbGxiYWNrLCBmYWxzZSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICAvLyBJZiB0aGUgd2luZG93
IGlzbid0IHZpc2libGUsIHJldHVybiBlYXJseSBzbyB0aGUgRE9NIHRyZWUgaXNuJ3QgYnVpbHQK
KyAgICAgICAgLy8gYW5kIG11dGF0aW9uIGV2ZW50IGxpc3RlbmVycyBhcmUgbm90IGFkZGVkLgor
ICAgICAgICBpZiAoIUluc3BlY3RvckNvbnRyb2xsZXIuaXNXaW5kb3dWaXNpYmxlKCkpCisgICAg
ICAgICAgICByZXR1cm47CisKICAgICAgICAgdmFyIGluc3BlY3RlZFJvb3REb2N1bWVudCA9IGlu
c3BlY3RlZFdpbmRvdy5kb2N1bWVudDsKKyAgICAgICAgdGhpcy5fcHJldmlvdXNJbnNwZWN0ZWRS
b290RG9jdW1lbnQgPSBpbnNwZWN0ZWRSb290RG9jdW1lbnQ7CisKKyAgICAgICAgdGhpcy5fbm9k
ZUluc2VydGVkRXZlbnRMaXN0ZW5lciA9IEluc3BlY3RvckNvbnRyb2xsZXIud3JhcENhbGxiYWNr
KHRoaXMuX25vZGVJbnNlcnRlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgaW5zcGVjdGVkUm9vdERv
Y3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTU5vZGVJbnNlcnRlZCIsIHRoaXMuX25vZGVJbnNl
cnRlZEV2ZW50TGlzdGVuZXIsIHRydWUpOworCisgICAgICAgIHRoaXMuX25vZGVSZW1vdmVkRXZl
bnRMaXN0ZW5lciA9IEluc3BlY3RvckNvbnRyb2xsZXIud3JhcENhbGxiYWNrKHRoaXMuX25vZGVS
ZW1vdmVkLmJpbmQodGhpcykpOworICAgICAgICBpbnNwZWN0ZWRSb290RG9jdW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigiRE9NTm9kZVJlbW92ZWQiLCB0aGlzLl9ub2RlUmVtb3ZlZEV2ZW50TGlzdGVu
ZXIsIHRydWUpOworCiAgICAgICAgIHRoaXMucm9vdERPTU5vZGUgPSBpbnNwZWN0ZWRSb290RG9j
dW1lbnQ7CiAKICAgICAgICAgdmFyIGNhbmlkYXRlRm9jdXNOb2RlID0gaW5zcGVjdGVkUm9vdERv
Y3VtZW50LmJvZHkgfHwgaW5zcGVjdGVkUm9vdERvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKQEAg
LTI1OCw2ICsyODIsNTIgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgdGhpcy5fdXBkYXRlSG92ZXJIaWdobGlnaHQoKTsKICAgICB9LAogCisg
ICAgX25vZGVJbnNlcnRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLnJl
Y2VudGx5TW9kaWZpZWROb2Rlcy5wdXNoKHtub2RlOiBldmVudC50YXJnZXQsIHBhcmVudDogZXZl
bnQucmVsYXRlZE5vZGUsIGluc2VydGVkOiB0cnVlfSk7CisgICAgICAgIGlmICh0aGlzLnZpc2li
bGUpCisgICAgICAgICAgICB0aGlzLl91cGRhdGVNb2RpZmllZE5vZGVzU29vbigpOworICAgIH0s
CisKKyAgICBfbm9kZVJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhp
cy5yZWNlbnRseU1vZGlmaWVkTm9kZXMucHVzaCh7bm9kZTogZXZlbnQudGFyZ2V0LCBwYXJlbnQ6
IGV2ZW50LnJlbGF0ZWROb2RlLCByZW1vdmVkOiB0cnVlfSk7CisgICAgICAgIGlmICh0aGlzLnZp
c2libGUpCisgICAgICAgICAgICB0aGlzLl91cGRhdGVNb2RpZmllZE5vZGVzU29vbigpOworICAg
IH0sCisKKyAgICBfdXBkYXRlTW9kaWZpZWROb2Rlc1Nvb246IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIGlmICgiX3VwZGF0ZU1vZGlmaWVkTm9kZXNUaW1lb3V0IiBpbiB0aGlzKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLl91cGRhdGVNb2RpZmllZE5vZGVzVGltZW91dCA9
IHNldFRpbWVvdXQodGhpcy5fdXBkYXRlTW9kaWZpZWROb2Rlcy5iaW5kKHRoaXMpLCAwKTsKKyAg
ICB9LAorCisgICAgX3VwZGF0ZU1vZGlmaWVkTm9kZXM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIGlmICgiX3VwZGF0ZU1vZGlmaWVkTm9kZXNUaW1lb3V0IiBpbiB0aGlzKSB7CisgICAgICAg
ICAgICBjbGVhclRpbWVvdXQodGhpcy5fdXBkYXRlTW9kaWZpZWROb2Rlc1RpbWVvdXQpOworICAg
ICAgICAgICAgZGVsZXRlIHRoaXMuX3VwZGF0ZU1vZGlmaWVkTm9kZXNUaW1lb3V0OworICAgICAg
ICB9CisKKyAgICAgICAgdmFyIHVwZGF0ZWRQYXJlbnRUcmVlRWxlbWVudHMgPSBbXTsKKworICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMucmVjZW50bHlNb2RpZmllZE5vZGVzLmxlbmd0
aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgcGFyZW50ID0gdGhpcy5yZWNlbnRseU1vZGlmaWVk
Tm9kZXNbaV0ucGFyZW50OworICAgICAgICAgICAgdmFyIHBhcmVudE5vZGVJdGVtID0gdGhpcy50
cmVlT3V0bGluZS5maW5kVHJlZUVsZW1lbnQocGFyZW50KTsKKyAgICAgICAgICAgIGlmIChwYXJl
bnROb2RlSXRlbSAmJiAhcGFyZW50Tm9kZUl0ZW0uYWxyZWFkeVVwZGF0ZWRDaGlsZHJlbikgewor
ICAgICAgICAgICAgICAgIHBhcmVudE5vZGVJdGVtLnVwZGF0ZUNoaWxkcmVuKCk7CisgICAgICAg
ICAgICAgICAgcGFyZW50Tm9kZUl0ZW0uYWxyZWFkeVVwZGF0ZWRDaGlsZHJlbiA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgdXBkYXRlZFBhcmVudFRyZWVFbGVtZW50cy5wdXNoKHBhcmVudE5vZGVJ
dGVtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgdXBkYXRlZFBhcmVudFRyZWVFbGVtZW50cy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAg
IGRlbGV0ZSB1cGRhdGVkUGFyZW50VHJlZUVsZW1lbnRzW2ldLmFscmVhZHlVcGRhdGVkQ2hpbGRy
ZW47CisKKyAgICAgICAgdGhpcy5yZWNlbnRseU1vZGlmaWVkTm9kZXMgPSBbXTsKKyAgICB9LAor
CiAgICAgX3VwZGF0ZUhvdmVySGlnaGxpZ2h0U29vbjogZnVuY3Rpb24oKQogICAgIHsKICAgICAg
ICAgaWYgKCJfdXBkYXRlSG92ZXJIaWdobGlnaHRUaW1lb3V0IiBpbiB0aGlzKQpAQCAtMTAzNywy
OCArMTEwNyw3MiBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9
IHsKICAgICAgICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoIHx8IHRoaXMud2hpdGVzcGFjZUln
bm9yZWQgIT09IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgdGhpcy5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0aGlzLndoaXRl
c3BhY2VJZ25vcmVkID0gUHJlZmVyZW5jZXMuaWdub3JlV2hpdGVzcGFjZTsKIAorICAgICAgICB0
aGlzLnVwZGF0ZUNoaWxkcmVuKCk7CisgICAgfSwKKworICAgIHVwZGF0ZUNoaWxkcmVuOiBmdW5j
dGlvbihmdWxsUmVmcmVzaCkKKyAgICB7CisgICAgICAgIGlmIChmdWxsUmVmcmVzaCkKKyAgICAg
ICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW4oKTsKKwogICAgICAgICB2YXIgdHJlZUVsZW1lbnQg
PSB0aGlzOwotICAgICAgICBmdW5jdGlvbiBhcHBlbmRDaGlsZHJlbk9mTm9kZShub2RlKQorICAg
ICAgICB2YXIgdHJlZUNoaWxkSW5kZXggPSAwOworCisgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUNo
aWxkcmVuT2ZOb2RlKG5vZGUpCiAgICAgICAgIHsKKyAgICAgICAgICAgIHZhciB0cmVlT3V0bGlu
ZSA9IHRyZWVFbGVtZW50LnRyZWVPdXRsaW5lOwogICAgICAgICAgICAgdmFyIGNoaWxkID0gKFBy
ZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UgPyBmaXJzdENoaWxkU2tpcHBpbmdXaGl0ZXNwYWNl
LmNhbGwobm9kZSkgOiBub2RlLmZpcnN0Q2hpbGQpOwogICAgICAgICAgICAgd2hpbGUgKGNoaWxk
KSB7Ci0gICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3Bl
Y3Rvci5ET01Ob2RlVHJlZUVsZW1lbnQoY2hpbGQpKTsKKyAgICAgICAgICAgICAgICB2YXIgY3Vy
cmVudFRyZWVFbGVtZW50ID0gdHJlZUVsZW1lbnQuY2hpbGRyZW5bdHJlZUNoaWxkSW5kZXhdOwor
ICAgICAgICAgICAgICAgIGlmICghY3VycmVudFRyZWVFbGVtZW50IHx8IGN1cnJlbnRUcmVlRWxl
bWVudC5yZXByZXNlbnRlZE9iamVjdCAhPT0gY2hpbGQpIHsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gRml4IGFueSBleGlzdGluZyBlbGVtZW50IHRoYXQgaXMgbGF0ZXIgaW4gdGhlIGNoaWxkcmVu
IGxpc3QuCisgICAgICAgICAgICAgICAgICAgIHZhciBleGlzdGluZ1RyZWVFbGVtZW50ID0gbnVs
bDsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9ICh0cmVlQ2hpbGRJbmRleCArIDEp
OyBpIDwgdHJlZUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICh0cmVlRWxlbWVudC5jaGlsZHJlbltpXS5yZXByZXNlbnRlZE9iamVjdCA9
PT0gY2hpbGQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ1RyZWVFbGVt
ZW50ID0gdHJlZUVsZW1lbnQuY2hpbGRyZW5baV07CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdUcmVlRWxlbWVudCAmJiBleGlz
dGluZ1RyZWVFbGVtZW50LnBhcmVudCA9PT0gdHJlZUVsZW1lbnQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIElmIGFuIGV4aXN0aW5nIGVsZW1lbnQgd2FzIGZvdW5kIGFuZCBpdCBoYXMg
dGhlIHNhbWUgcGFyZW50LCBqdXN0IG1vdmUgaXQuCisgICAgICAgICAgICAgICAgICAgICAgICB0
cmVlRWxlbWVudC5yZW1vdmVDaGlsZChleGlzdGluZ1RyZWVFbGVtZW50KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRyZWVFbGVtZW50Lmluc2VydENoaWxkKGV4aXN0aW5nVHJlZUVsZW1lbnQs
IHRyZWVDaGlsZEluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIE5vIGV4aXN0aW5nIGVsZW1lbnQgZm91bmQsIGluc2VydCBhIG5l
dyBlbGVtZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQuaW5zZXJ0Q2hp
bGQobmV3IFdlYkluc3BlY3Rvci5ET01Ob2RlVHJlZUVsZW1lbnQoY2hpbGQpLCB0cmVlQ2hpbGRJ
bmRleCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKICAgICAg
ICAgICAgICAgICBjaGlsZCA9IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UgPyBuZXh0U2li
bGluZ1NraXBwaW5nV2hpdGVzcGFjZS5jYWxsKGNoaWxkKSA6IGNoaWxkLm5leHRTaWJsaW5nOwor
ICAgICAgICAgICAgICAgICsrdHJlZUNoaWxkSW5kZXg7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdC5jb250ZW50RG9jdW1lbnQp
Ci0gICAgICAgICAgICBhcHBlbmRDaGlsZHJlbk9mTm9kZSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0
LmNvbnRlbnREb2N1bWVudCk7CisgICAgICAgIC8vIFJlbW92ZSBhbnkgdHJlZSBlbGVtZW50cyB0
aGF0IG5vIGxvbmdlciBoYXZlIHRoaXMgbm9kZSAob3IgdGhpcyBub2RlJ3MgY29udGVudERvY3Vt
ZW50KSBhcyB0aGVpciBwYXJlbnQuCisgICAgICAgIGZvciAodmFyIGkgPSAodHJlZUVsZW1lbnQu
Y2hpbGRyZW4ubGVuZ3RoIC0gMSk7IGkgPiAwOyAtLWkpIHsKKyAgICAgICAgICAgIGlmICgiZWxl
bWVudENsb3NlVGFnIiBpbiB0cmVlRWxlbWVudC5jaGlsZHJlbltpXSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIHZhciBjdXJyZW50UGFyZW50Tm9kZSA9IHRyZWVFbGVt
ZW50LmNoaWxkcmVuW2ldLnJlcHJlc2VudGVkT2JqZWN0LnBhcmVudE5vZGU7CisgICAgICAgICAg
ICBpZiAoY3VycmVudFBhcmVudE5vZGUgPT09IHRoaXMucmVwcmVzZW50ZWRPYmplY3QpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAodGhpcy5yZXByZXNlbnRlZE9i
amVjdC5jb250ZW50RG9jdW1lbnQgJiYgY3VycmVudFBhcmVudE5vZGUgPT09IHRoaXMucmVwcmVz
ZW50ZWRPYmplY3QuY29udGVudERvY3VtZW50KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgdHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGRBdEluZGV4KGkpOworICAgICAgICB9
CiAKLSAgICAgICAgYXBwZW5kQ2hpbGRyZW5PZk5vZGUodGhpcy5yZXByZXNlbnRlZE9iamVjdCk7
CisgICAgICAgIGlmICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmNvbnRlbnREb2N1bWVudCkKKyAg
ICAgICAgICAgIHVwZGF0ZUNoaWxkcmVuT2ZOb2RlKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY29u
dGVudERvY3VtZW50KTsKKyAgICAgICAgdXBkYXRlQ2hpbGRyZW5PZk5vZGUodGhpcy5yZXByZXNl
bnRlZE9iamVjdCk7CiAKLSAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3Qubm9kZVR5
cGUgPT0gTm9kZS5FTEVNRU5UX05PREUpIHsKKyAgICAgICAgdmFyIGxhc3RDaGlsZCA9IHRoaXMu
Y2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXTsKKyAgICAgICAgaWYgKHRoaXMucmVw
cmVzZW50ZWRPYmplY3Qubm9kZVR5cGUgPT0gTm9kZS5FTEVNRU5UX05PREUgJiYgKCFsYXN0Q2hp
bGQgfHwgIWxhc3RDaGlsZC5lbGVtZW50Q2xvc2VUYWcpKSB7CiAgICAgICAgICAgICB2YXIgdGl0
bGUgPSAiPHNwYW4gY2xhc3M9XCJ3ZWJraXQtaHRtbC10YWcgY2xvc2VcIj4mbHQ7LyIgKyB0aGlz
LnJlcHJlc2VudGVkT2JqZWN0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkuZXNjYXBlSFRNTCgpICsg
IiZndDs8L3NwYW4+IjsKLSAgICAgICAgICAgIHZhciBpdGVtID0gbmV3IFRyZWVFbGVtZW50KHRp
dGxlLCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LCBmYWxzZSk7CisgICAgICAgICAgICB2YXIgaXRl
bSA9IG5ldyBUcmVlRWxlbWVudCh0aXRsZSwgbnVsbCwgZmFsc2UpOwogICAgICAgICAgICAgaXRl
bS5zZWxlY3RhYmxlID0gZmFsc2U7CisgICAgICAgICAgICBpdGVtLmVsZW1lbnRDbG9zZVRhZyA9
IHRydWU7CiAgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKGl0ZW0pOwogICAgICAgICB9CiAg
ICAgfSwKLS0gCjEuNS40LjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22443</attachid>
            <date>2008-07-22 18:52:23 -0700</date>
            <delta_ts>2008-07-23 14:09:35 -0700</delta_ts>
            <desc>Updates the elements DOM tree when nodes are added or removed</desc>
            <filename>0001-Updates-the-elements-DOM-tree-when-nodes-are.patch</filename>
            <type>text/plain</type>
            <size>27734</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">RnJvbSBmN2RkNzcwOTc5NDUxZTZhMTFiZWRlMzRkYzc0YjI0YjFmZTJjZGI5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUaW1vdGh5IEhhdGNoZXIgPHRpbW90aHlAYXBwbGUuY29tPgpE
YXRlOiBUdWUsIDIyIEp1bCAyMDA4IDE4OjE5OjM1IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gICAg
ICAgICBVcGRhdGVzIHRoZSBlbGVtZW50cyBET00gdHJlZSB3aGVuIG5vZGVzIGFyZSBhZGRlZCBv
ciByZW1vdmVkIGZyb20KICAgICAgICAgdGhlIGluc3BlY3RlZCBkb2N1bWVudC4KCiAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1OTAKICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTcxMjkyMT4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CgogICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmRpc3BhdGNoV2luZG93T2JqZWN0QXZhaWxhYmxlKTogQWRkZWQgYSBjYWxsIHRv
CiAgICAgICAgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkV2luZG93U2NyaXB0T2JqZWN0
Q2xlYXJlZC4KICAgICAgICAqIHBhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CiAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RlZFdpbmRvd1NjcmlwdE9iamVj
dENsZWFyZWQpOgogICAgICAgIENhbGxzIHRoZSBXZWJJbnNwZWN0b3IuaW5zcGVjdGVkV2luZG93
Q2xlYXJlZCBzY3JpcHQgZnVuY3Rpb24uCiAgICAgICAgKiBwYWdlL0luc3BlY3RvckNvbnRyb2xs
ZXIuaDoKICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL0VsZW1lbnRzUGFuZWwuanM6CiAgICAgICAg
KFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsKTogQ3JlYXRlIHRoZSBldmVudCBsaXN0ZW5lciBj
YWxsYmFjayB3cmFwcGVycy4KICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJv
dG90eXBlLnNob3cpOiBDYWxsIF91cGRhdGVNb2RpZmllZE5vZGVzIGlmCiAgICAgICAgdGhlcmUg
YXJlIGFueSByZWNlbnRseSBtb2RpZmllZCBub2Rlcy4KICAgICAgICAoV2ViSW5zcGVjdG9yLkVs
ZW1lbnRzUGFuZWwucHJvdG90eXBlLnJlc2V0KTogUmVtb3ZlIHByZXZpb3VzIG11dGF0aW9uIGV2
ZW50IGxpc3RlbmVycy4KICAgICAgICBBZGRzIGEgY2hlY2sgZm9yIEluc3BlY3RvckNvbnRyb2xs
ZXIuaXNXaW5kb3dWaXNpYmxlIHRvIHByZXZlbnQgYWRkaW5nCiAgICAgICAgZXZlbnQgbGlzdGVu
ZXJzIHdoZW4gdGhlIHdpbmRvdyBpc24ndCB2aXNpYmxlLgogICAgICAgIChXZWJJbnNwZWN0b3Iu
RWxlbWVudHNQYW5lbC5wcm90b3R5cGUuaW5zcGVjdGVkV2luZG93Q2xlYXJlZCk6CiAgICAgICAg
KFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5fYWRkTXV0YXRpb25FdmVudExp
c3RlbmVycyk6IEFkZCBET01Ob2RlSW5zZXJ0ZWQsCiAgICAgICAgRE9NTm9kZVJlbW92ZWQgYW5k
IERPTUNvbnRlbnRMb2FkZWQgZXZlbnQgbGlzdGVuZXJzIHRvIHRoZSBwYXNzZWQgaW4gd2luZG93
IG9yIHdpbmRvdydzIGRvY3VtZW50LgogICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5l
bC5wcm90b3R5cGUuX3JlbW92ZU11dGF0aW9uRXZlbnRMaXN0ZW5lcnMpOiBSZW1vdmVzIHRoZSBl
dmVudCBsaXN0ZW5lcnMKICAgICAgICBhZGRlZCBpbiBfYWRkTXV0YXRpb25FdmVudExpc3RlbmVy
cy4KICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLnVwZGF0ZU11
dGF0aW9uRXZlbnRMaXN0ZW5lcnMpOiBDYWxsIF9hZGRNdXRhdGlvbkV2ZW50TGlzdGVuZXJzCiAg
ICAgICAgYWdhaW4gdG8gcmVpbnN0YXRlIHRoZSBsaXN0bmVycyBpZiB0aGUgZG9jdW1lbnQgY2hh
bmdlZCBvciB3aW5kb3cgY2xlYXJlZCB0aGVtLgogICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVu
dHNQYW5lbC5wcm90b3R5cGUucmVnaXN0ZXJNdXRhdGlvbkV2ZW50TGlzdGVuZXJzKTogQXBwZW5k
IHRoZSB3aW5kb3cgdG8KICAgICAgICBfbXV0YXRpb25Nb25pdG9yZWRXaW5kb3dzIGFuZCBjYWxs
IF9hZGRNdXRhdGlvbkV2ZW50TGlzdGVuZXJzLgogICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVu
dHNQYW5lbC5wcm90b3R5cGUudW5yZWdpc3Rlck11dGF0aW9uRXZlbnRMaXN0ZW5lcnMpOiBSZW1v
dmUgdGhlIHdpbmRvdyBmcm9tCiAgICAgICAgX211dGF0aW9uTW9uaXRvcmVkV2luZG93cyBhbmQg
Y2FsbCBfcmVtb3ZlTXV0YXRpb25FdmVudExpc3RlbmVycy4KICAgICAgICAoV2ViSW5zcGVjdG9y
LkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLnVucmVnaXN0ZXJBbGxNdXRhdGlvbkV2ZW50TGlzdGVu
ZXJzKTogQ2FsbAogICAgICAgIF9yZW1vdmVNdXRhdGlvbkV2ZW50TGlzdGVuZXJzIGZvciBhbGwg
d2luZG93cyBpbiBfbXV0YXRpb25Nb25pdG9yZWRXaW5kb3dzIGFuZAogICAgICAgIGNsZWFyIF9t
dXRhdGlvbk1vbml0b3JlZFdpbmRvd3MuCiAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1Bh
bmVsLnByb3RvdHlwZS5fY29udGVudExvYWRlZCk6IEFwcGVuZCB0aGUgbm9kZSBhbmQgcGFyZW50
CiAgICAgICAgdG8gdGhlIHJlY2VudGx5TW9kaWZpZWROb2RlcyBhcnJheS4gQ2FsbCBfdXBkYXRl
TW9kaWZpZWROb2Rlc1Nvb24gaWYgdmlzaWJsZS4KICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1l
bnRzUGFuZWwucHJvdG90eXBlLl9ub2RlSW5zZXJ0ZWQpOiBEaXR0by4KICAgICAgICAoV2ViSW5z
cGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLl9ub2RlUmVtb3ZlZCk6IERpdHRvLgogICAg
ICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUuX3VwZGF0ZU1vZGlmaWVk
Tm9kZXNTb29uKTogQ2FsbAogICAgICAgIF91cGRhdGVNb2RpZmllZE5vZGVzIG9uIGEgemVybyB0
aW1lb3V0LgogICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUuX3Vw
ZGF0ZU1vZGlmaWVkTm9kZXMpOiBJdGVyYXRlIG92ZXIKICAgICAgICB0aGUgcmVjZW50bHlNb2Rp
ZmllZE5vZGVzIGFycmF5IGFuZCBjYWxsIHVwZGF0ZUNoaWxkcmVuIG9uIGFsbCB0aGUgcGFyZW50
CiAgICAgICAgZWxlbWVudHMgdGhhdCBoYWQgY2hhbmdlcy4gT25seSBjYWxscyB1cGRhdGVDaGls
ZHJlbiBvbmNlIHBlciBwYXJlbnQgZWxlbWVudC4KICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1l
bnRzUGFuZWwucHJvdG90eXBlLl9pc0FuY2VzdG9ySW5jbHVkaW5nUGFyZW50RnJhbWVzKTogUmV0
dXJuCiAgICAgICAgZmFsc2UgaWYgdGhlIG5vZGVzIGFyZSB0aGUgc2FtZS4gUmV0dXJuIHRydWUg
aWYgdGhlIG5vZGVzIGFyZSB0aGUgc2FtZSB3aGlsZQogICAgICAgIGxvb2tpbmcgYXQgYW5jZXN0
b3IgZnJhbWUgZWxlbWVudHMuIFRIaXMgdXNlIHRvIHJldHVybiBmYWxzZSwgd2hpY2ggd2FzIGlu
Y29ycmVjdC4KICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGVUcmVlRWxlbWVudC5wcm90b3R5
cGUub25wb3B1bGF0ZSk6IENhbGwgdXBkYXRlQ2hpbGRyZW4uCiAgICAgICAgKFdlYkluc3BlY3Rv
ci5ET01Ob2RlVHJlZUVsZW1lbnQucHJvdG90eXBlLnVwZGF0ZUNoaWxkcmVuKTogQ29waWVkIGZy
b20KICAgICAgICBvbnBvcHVsYXRlIGFuZCBjaGFuZ2VkIHRvIHJlYnVpbGQgdGhlIGNoaWxkcmVu
IGVsZW1lbnRzIGJ5IGFkZGluZyBuZXcgY2hpbGRyZW4sCiAgICAgICAgbW92aW5nIGV4aXN0aW5n
IGNoaWxkcmVuIGFuZCByZW1vdmVkIG9sZCBjaGlsZHJlbi4KICAgICAgICAoV2ViSW5zcGVjdG9y
LkRPTU5vZGVUcmVlRWxlbWVudC5wcm90b3R5cGUub25leHBhbmQpOiBJZiB0aGUgbm9kZSBoYXMg
YSBjb250ZW50RG9jdW1lbnQKICAgICAgICBjYWxsIHJlZ2lzdGVyTXV0YXRpb25FdmVudExpc3Rl
bmVycyB0byB0cmFjayBhbnkgbXV0YXRpb25zLgogICAgICAgICogcGFnZS9pbnNwZWN0b3IvaW5z
cGVjdG9yLmpzOgogICAgICAgIChXZWJJbnNwZWN0b3IuaW5zcGVjdGVkV2luZG93Q2xlYXJlZCk6
IENhbGwgRWxlbWVudHNQYW5lbC5pbnNwZWN0ZWRXaW5kb3dDbGVhcmVkLgogICAgICAgICogcGFn
ZS9pbnNwZWN0b3IvdHJlZW91dGxpbmUuanM6CiAgICAgICAgKFRyZWVFbGVtZW50LnByb3RvdHlw
ZS5nZXQgaGFzQ2hpbGRyZW4pOiBSZXR1cm4gX2hhc0NoaWxkcmVuLgogICAgICAgIChUcmVlRWxl
bWVudC5wcm90b3R5cGUuc2V0IGhhc0NoaWxkcmVuKTogU2V0IF9oYXNDaGlsZHJlbiBhbmQgdXBk
YXRlIHRoZSBjbGFzc05hbWUuCiAgICAgICAgKFRyZWVFbGVtZW50LnByb3RvdHlwZS5oYXNBbmNl
c3Rvcik6IFJldHVybiB0cnVlIGlmIHRoZSBlbGVtZW50IGhhcyB0aGUgcGFzc2VkIGluIGFuY2Vz
dG9yLgogICAgICAgIChUcmVlRWxlbWVudC5wcm90b3R5cGUuZXhwYW5kKTogRml4IGFuIGV4Y2Vw
dGlvbiB0aGF0IGNhbiBoYXBwZW4gaWYgZXhwYW5kIGlzCiAgICAgICAgY2FsbGVkIGJlZm9yZSBf
YXR0YWNoLgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICB8ICAg
NjUgKysrKysrKysrCiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgICAgICAgICAgfCAg
ICA2ICstCiBXZWJDb3JlL3BhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgICAgfCAgIDE5ICsr
KwogV2ViQ29yZS9wYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuaCAgICAgIHwgICAgMSArCiBXZWJD
b3JlL3BhZ2UvaW5zcGVjdG9yL0VsZW1lbnRzUGFuZWwuanMgfCAgMjIxICsrKysrKysrKysrKysr
KysrKysrKysrKysrKysrLS0KIFdlYkNvcmUvcGFnZS9pbnNwZWN0b3IvaW5zcGVjdG9yLmpzICAg
ICB8ICAgIDUgKwogV2ViQ29yZS9wYWdlL2luc3BlY3Rvci90cmVlb3V0bGluZS5qcyAgIHwgICAz
OSArKysrKy0KIDcgZmlsZXMgY2hhbmdlZCwgMzQzIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggYWM0MDc5MC4uNTIxYjZiZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw3MCBAQAogMjAwOC0wNy0yMiAgVGltb3Ro
eSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKKyAgICAgICAgVXBkYXRlcyB0aGUgZWxl
bWVudHMgRE9NIHRyZWUgd2hlbiBub2RlcyBhcmUgYWRkZWQgb3IgcmVtb3ZlZCBmcm9tCisgICAg
ICAgIHRoZSBpbnNwZWN0ZWQgZG9jdW1lbnQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY1OTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU3MTI5
MjE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRp
c3BhdGNoV2luZG93T2JqZWN0QXZhaWxhYmxlKTogQWRkZWQgYSBjYWxsIHRvCisgICAgICAgIElu
c3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RlZFdpbmRvd1NjcmlwdE9iamVjdENsZWFyZWQuCisg
ICAgICAgICogcGFnZS9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3RlZFdpbmRvd1NjcmlwdE9iamVjdENsZWFyZWQp
OgorICAgICAgICBDYWxscyB0aGUgV2ViSW5zcGVjdG9yLmluc3BlY3RlZFdpbmRvd0NsZWFyZWQg
c2NyaXB0IGZ1bmN0aW9uLgorICAgICAgICAqIHBhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5oOgor
ICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL0VsZW1lbnRzUGFuZWwuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRWxlbWVudHNQYW5lbCk6IENyZWF0ZSB0aGUgZXZlbnQgbGlzdGVuZXIgY2FsbGJh
Y2sgd3JhcHBlcnMuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5
cGUuc2hvdyk6IENhbGwgX3VwZGF0ZU1vZGlmaWVkTm9kZXMgaWYKKyAgICAgICAgdGhlcmUgYXJl
IGFueSByZWNlbnRseSBtb2RpZmllZCBub2Rlcy4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVt
ZW50c1BhbmVsLnByb3RvdHlwZS5yZXNldCk6IFJlbW92ZSBwcmV2aW91cyBtdXRhdGlvbiBldmVu
dCBsaXN0ZW5lcnMuCisgICAgICAgIEFkZHMgYSBjaGVjayBmb3IgSW5zcGVjdG9yQ29udHJvbGxl
ci5pc1dpbmRvd1Zpc2libGUgdG8gcHJldmVudCBhZGRpbmcKKyAgICAgICAgZXZlbnQgbGlzdGVu
ZXJzIHdoZW4gdGhlIHdpbmRvdyBpc24ndCB2aXNpYmxlLgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLmluc3BlY3RlZFdpbmRvd0NsZWFyZWQpOiAKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5fYWRkTXV0YXRpb25FdmVu
dExpc3RlbmVycyk6IEFkZCBET01Ob2RlSW5zZXJ0ZWQsCisgICAgICAgIERPTU5vZGVSZW1vdmVk
IGFuZCBET01Db250ZW50TG9hZGVkIGV2ZW50IGxpc3RlbmVycyB0byB0aGUgcGFzc2VkIGluIHdp
bmRvdyBvciB3aW5kb3cncyBkb2N1bWVudC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50
c1BhbmVsLnByb3RvdHlwZS5fcmVtb3ZlTXV0YXRpb25FdmVudExpc3RlbmVycyk6IFJlbW92ZXMg
dGhlIGV2ZW50IGxpc3RlbmVycworICAgICAgICBhZGRlZCBpbiBfYWRkTXV0YXRpb25FdmVudExp
c3RlbmVycy4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS51
cGRhdGVNdXRhdGlvbkV2ZW50TGlzdGVuZXJzKTogQ2FsbCBfYWRkTXV0YXRpb25FdmVudExpc3Rl
bmVycworICAgICAgICBhZ2FpbiB0byByZWluc3RhdGUgdGhlIGxpc3RuZXJzIGlmIHRoZSBkb2N1
bWVudCBjaGFuZ2VkIG9yIHdpbmRvdyBjbGVhcmVkIHRoZW0uCisgICAgICAgIChXZWJJbnNwZWN0
b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUucmVnaXN0ZXJNdXRhdGlvbkV2ZW50TGlzdGVuZXJz
KTogQXBwZW5kIHRoZSB3aW5kb3cgdG8KKyAgICAgICAgX211dGF0aW9uTW9uaXRvcmVkV2luZG93
cyBhbmQgY2FsbCBfYWRkTXV0YXRpb25FdmVudExpc3RlbmVycy4KKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS51bnJlZ2lzdGVyTXV0YXRpb25FdmVudExpc3Rl
bmVycyk6IFJlbW92ZSB0aGUgd2luZG93IGZyb20KKyAgICAgICAgX211dGF0aW9uTW9uaXRvcmVk
V2luZG93cyBhbmQgY2FsbCBfcmVtb3ZlTXV0YXRpb25FdmVudExpc3RlbmVycy4KKyAgICAgICAg
KFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS51bnJlZ2lzdGVyQWxsTXV0YXRp
b25FdmVudExpc3RlbmVycyk6IENhbGwKKyAgICAgICAgX3JlbW92ZU11dGF0aW9uRXZlbnRMaXN0
ZW5lcnMgZm9yIGFsbCB3aW5kb3dzIGluIF9tdXRhdGlvbk1vbml0b3JlZFdpbmRvd3MgYW5kCisg
ICAgICAgIGNsZWFyIF9tdXRhdGlvbk1vbml0b3JlZFdpbmRvd3MuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUuX2NvbnRlbnRMb2FkZWQpOiBBcHBlbmQgdGhl
IG5vZGUgYW5kIHBhcmVudAorICAgICAgICB0byB0aGUgcmVjZW50bHlNb2RpZmllZE5vZGVzIGFy
cmF5LiBDYWxsIF91cGRhdGVNb2RpZmllZE5vZGVzU29vbiBpZiB2aXNpYmxlLgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLl9ub2RlSW5zZXJ0ZWQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5fbm9kZVJl
bW92ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3Rv
dHlwZS5fdXBkYXRlTW9kaWZpZWROb2Rlc1Nvb24pOiBDYWxsCisgICAgICAgIF91cGRhdGVNb2Rp
ZmllZE5vZGVzIG9uIGEgemVybyB0aW1lb3V0LgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1l
bnRzUGFuZWwucHJvdG90eXBlLl91cGRhdGVNb2RpZmllZE5vZGVzKTogSXRlcmF0ZSBvdmVyCisg
ICAgICAgIHRoZSByZWNlbnRseU1vZGlmaWVkTm9kZXMgYXJyYXkgYW5kIGNhbGwgdXBkYXRlQ2hp
bGRyZW4gb24gYWxsIHRoZSBwYXJlbnQKKyAgICAgICAgZWxlbWVudHMgdGhhdCBoYWQgY2hhbmdl
cy4gT25seSBjYWxscyB1cGRhdGVDaGlsZHJlbiBvbmNlIHBlciBwYXJlbnQgZWxlbWVudC4KKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5faXNBbmNlc3Rvcklu
Y2x1ZGluZ1BhcmVudEZyYW1lcyk6IFJldHVybgorICAgICAgICBmYWxzZSBpZiB0aGUgbm9kZXMg
YXJlIHRoZSBzYW1lLiBSZXR1cm4gdHJ1ZSBpZiB0aGUgbm9kZXMgYXJlIHRoZSBzYW1lIHdoaWxl
CisgICAgICAgIGxvb2tpbmcgYXQgYW5jZXN0b3IgZnJhbWUgZWxlbWVudHMuIFRIaXMgdXNlIHRv
IHJldHVybiBmYWxzZSwgd2hpY2ggd2FzIGluY29ycmVjdC4KKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5ET01Ob2RlVHJlZUVsZW1lbnQucHJvdG90eXBlLm9ucG9wdWxhdGUpOiBDYWxsIHVwZGF0ZUNo
aWxkcmVuLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGVUcmVlRWxlbWVudC5wcm90b3R5
cGUudXBkYXRlQ2hpbGRyZW4pOiBDb3BpZWQgZnJvbQorICAgICAgICBvbnBvcHVsYXRlIGFuZCBj
aGFuZ2VkIHRvIHJlYnVpbGQgdGhlIGNoaWxkcmVuIGVsZW1lbnRzIGJ5IGFkZGluZyBuZXcgY2hp
bGRyZW4sCisgICAgICAgIG1vdmluZyBleGlzdGluZyBjaGlsZHJlbiBhbmQgcmVtb3ZlZCBvbGQg
Y2hpbGRyZW4uCisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NTm9kZVRyZWVFbGVtZW50LnByb3Rv
dHlwZS5vbmV4cGFuZCk6IElmIHRoZSBub2RlIGhhcyBhIGNvbnRlbnREb2N1bWVudAorICAgICAg
ICBjYWxsIHJlZ2lzdGVyTXV0YXRpb25FdmVudExpc3RlbmVycyB0byB0cmFjayBhbnkgbXV0YXRp
b25zLgorICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL2luc3BlY3Rvci5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5pbnNwZWN0ZWRXaW5kb3dDbGVhcmVkKTogQ2FsbCBFbGVtZW50c1BhbmVsLmlu
c3BlY3RlZFdpbmRvd0NsZWFyZWQuCisgICAgICAgICogcGFnZS9pbnNwZWN0b3IvdHJlZW91dGxp
bmUuanM6CisgICAgICAgIChUcmVlRWxlbWVudC5wcm90b3R5cGUuZ2V0IGhhc0NoaWxkcmVuKTog
UmV0dXJuIF9oYXNDaGlsZHJlbi4KKyAgICAgICAgKFRyZWVFbGVtZW50LnByb3RvdHlwZS5zZXQg
aGFzQ2hpbGRyZW4pOiBTZXQgX2hhc0NoaWxkcmVuIGFuZCB1cGRhdGUgdGhlIGNsYXNzTmFtZS4K
KyAgICAgICAgKFRyZWVFbGVtZW50LnByb3RvdHlwZS5oYXNBbmNlc3Rvcik6IFJldHVybiB0cnVl
IGlmIHRoZSBlbGVtZW50IGhhcyB0aGUgcGFzc2VkIGluIGFuY2VzdG9yLgorICAgICAgICAoVHJl
ZUVsZW1lbnQucHJvdG90eXBlLmV4cGFuZCk6IEZpeCBhbiBleGNlcHRpb24gdGhhdCBjYW4gaGFw
cGVuIGlmIGV4cGFuZCBpcworICAgICAgICBjYWxsZWQgYmVmb3JlIF9hdHRhY2guCisKKzIwMDgt
MDctMjIgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCiAgICAgICAgIEZp
eCBhbiBleGNlcHRpb24gdGhhdCBvY2N1cnJlZCB3aGVuIGRvdWJsZSBjbGlja2luZyB0aGUgY2xv
c2luZyB0YWcKICAgICAgICAgb2YgYW4gZWxlbWVudCBpbiB0aGUgRE9NIHRyZWUuCiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAppbmRleCBiY2ViMTQ2Li45MjU4Y2QzIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCkBAIC00NzgxLDkgKzQ3ODEsMTMgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hXaW5k
b3dPYmplY3RBdmFpbGFibGUoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NsaWVudC0+d2lu
ZG93T2JqZWN0Q2xlYXJlZCgpOwotICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgp
KQorCisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKKyAgICAgICAgaWYg
KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvciA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKSkKKyAgICAgICAgICAgIGluc3BlY3Rvci0+aW5zcGVjdGVkV2luZG93U2NyaXB0T2JqZWN0
Q2xlYXJlZChtX2ZyYW1lKTsKICAgICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvciA9IHBhZ2UtPnBhcmVudEluc3BlY3RvckNvbnRyb2xsZXIoKSkKICAgICAgICAgICAgIGlu
c3BlY3Rvci0+d2luZG93U2NyaXB0T2JqZWN0QXZhaWxhYmxlKCk7CisgICAgfQogfQogCiBXaWRn
ZXQqIEZyYW1lTG9hZGVyOjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmIHNp
emUsIEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBhcmdz
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvV2Vi
Q29yZS9wYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDEyNjU2NmEuLjNhNjZjMDcg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9X
ZWJDb3JlL3BhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTEyNDMsNiArMTI0MywyNSBA
QCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRldGFjaFdpbmRvdygpCiAgICAgbV9jbGllbnQt
PmRldGFjaFdpbmRvdygpOwogfQogCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3Rl
ZFdpbmRvd1NjcmlwdE9iamVjdENsZWFyZWQoRnJhbWUqIGZyYW1lKQoreworICAgIGlmICghZW5h
YmxlZCgpIHx8ICFtX3NjcmlwdENvbnRleHQgfHwgIW1fc2NyaXB0T2JqZWN0KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBKU0RPTVdpbmRvdyogd2luID0gdG9KU0RPTVdpbmRvdyhmcmFtZSk7Cisg
ICAgRXhlY1N0YXRlKiBleGVjID0gd2luLT5nbG9iYWxFeGVjKCk7CisKKyAgICBKU1ZhbHVlUmVm
IGFyZzA7CisKKyAgICB7CisgICAgICAgIEtKUzo6SlNMb2NrIGxvY2soZmFsc2UpOworICAgICAg
ICBhcmcwID0gdG9SZWYoSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyOjp3cmFwKGV4ZWMsIHdpbikp
OworICAgIH0KKworICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKKyAgICBjYWxsRnVuY3Rp
b24obV9zY3JpcHRDb250ZXh0LCBtX3NjcmlwdE9iamVjdCwgImluc3BlY3RlZFdpbmRvd0NsZWFy
ZWQiLCAxLCAmYXJnMCwgZXhjZXB0aW9uKTsKK30KKwogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
Ojp3aW5kb3dTY3JpcHRPYmplY3RBdmFpbGFibGUoKQogewogICAgIGlmICghbV9wYWdlIHx8ICFl
bmFibGVkKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5o
IGIvV2ViQ29yZS9wYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCAzZWFjMGJlLi40Mjhk
OWI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBi
L1dlYkNvcmUvcGFnZS9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTEyMCw2ICsxMjAsNyBAQCBw
dWJsaWM6CiAgICAgSlNDb250ZXh0UmVmIHNjcmlwdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBt
X3NjcmlwdENvbnRleHQ7IH07CiAgICAgdm9pZCBzZXRTY3JpcHRDb250ZXh0KEpTQ29udGV4dFJl
ZiBjb250ZXh0KSB7IG1fc2NyaXB0Q29udGV4dCA9IGNvbnRleHQ7IH07CiAKKyAgICB2b2lkIGlu
c3BlY3RlZFdpbmRvd1NjcmlwdE9iamVjdENsZWFyZWQoRnJhbWUqKTsKICAgICB2b2lkIHdpbmRv
d1NjcmlwdE9iamVjdEF2YWlsYWJsZSgpOwogCiAgICAgdm9pZCBzY3JpcHRPYmplY3RSZWFkeSgp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9FbGVtZW50c1BhbmVsLmpzIGIv
V2ViQ29yZS9wYWdlL2luc3BlY3Rvci9FbGVtZW50c1BhbmVsLmpzCmluZGV4IGRhOTY3MzMuLjZk
M2M3ODggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9pbnNwZWN0b3IvRWxlbWVudHNQYW5lbC5q
cworKysgYi9XZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL0VsZW1lbnRzUGFuZWwuanMKQEAgLTc2LDYg
Kzc2LDExIEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsID0gZnVuY3Rpb24oKQogICAgIHRo
aXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnNpZGViYXJFbGVtZW50KTsKICAgICB0aGlzLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5zaWRlYmFyUmVzaXplRWxlbWVudCk7CiAKKyAgICB0aGlz
Ll9tdXRhdGlvbk1vbml0b3JlZFdpbmRvd3MgPSBbXTsKKyAgICB0aGlzLl9ub2RlSW5zZXJ0ZWRF
dmVudExpc3RlbmVyID0gSW5zcGVjdG9yQ29udHJvbGxlci53cmFwQ2FsbGJhY2sodGhpcy5fbm9k
ZUluc2VydGVkLmJpbmQodGhpcykpOworICAgIHRoaXMuX25vZGVSZW1vdmVkRXZlbnRMaXN0ZW5l
ciA9IEluc3BlY3RvckNvbnRyb2xsZXIud3JhcENhbGxiYWNrKHRoaXMuX25vZGVSZW1vdmVkLmJp
bmQodGhpcykpOworICAgIHRoaXMuX2NvbnRlbnRMb2FkZWRFdmVudExpc3RlbmVyID0gSW5zcGVj
dG9yQ29udHJvbGxlci53cmFwQ2FsbGJhY2sodGhpcy5fY29udGVudExvYWRlZC5iaW5kKHRoaXMp
KTsKKwogICAgIHRoaXMucmVzZXQoKTsKIH0KIApAQCAtMTAzLDYgKzEwOCw4IEBAIFdlYkluc3Bl
Y3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5zaWRlYmFyUmVz
aXplRWxlbWVudC5zdHlsZS5yaWdodCA9ICh0aGlzLnNpZGViYXJFbGVtZW50Lm9mZnNldFdpZHRo
IC0gMykgKyAicHgiOwogICAgICAgICB0aGlzLnVwZGF0ZUJyZWFkY3J1bWIoKTsKICAgICAgICAg
dGhpcy51cGRhdGVUcmVlU2VsZWN0aW9uKCk7CisgICAgICAgIGlmICh0aGlzLnJlY2VudGx5TW9k
aWZpZWROb2Rlcy5sZW5ndGgpCisgICAgICAgICAgICB0aGlzLl91cGRhdGVNb2RpZmllZE5vZGVz
KCk7CiAgICAgfSwKIAogICAgIGhpZGU6IGZ1bmN0aW9uKCkKQEAgLTEyOCw2ICsxMzUsOSBAQCBX
ZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuaG92
ZXJlZERPTU5vZGUgPSBudWxsOwogICAgICAgICB0aGlzLmZvcmNlSG92ZXJIaWdobGlnaHQgPSBm
YWxzZTsKIAorICAgICAgICB0aGlzLnJlY2VudGx5TW9kaWZpZWROb2RlcyA9IFtdOworICAgICAg
ICB0aGlzLnVucmVnaXN0ZXJBbGxNdXRhdGlvbkV2ZW50TGlzdGVuZXJzKCk7CisKICAgICAgICAg
dmFyIGluc3BlY3RlZFdpbmRvdyA9IEluc3BlY3RvckNvbnRyb2xsZXIuaW5zcGVjdGVkV2luZG93
KCk7CiAgICAgICAgIGlmICghaW5zcGVjdGVkV2luZG93IHx8ICFpbnNwZWN0ZWRXaW5kb3cuZG9j
dW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNDEsMTEgKzE1MSwxNyBAQCBXZWJJbnNw
ZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIHZhciBjb250ZW50TG9hZGVkQ2FsbGJhY2sgPSBJbnNwZWN0b3JDb250cm9sbGVyLndy
YXBDYWxsYmFjayhjb250ZW50TG9hZGVkLmJpbmQodGhpcykpOwotCiAgICAgICAgICAgICBpbnNw
ZWN0ZWRXaW5kb3cuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIs
IGNvbnRlbnRMb2FkZWRDYWxsYmFjaywgZmFsc2UpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKKyAgICAgICAgLy8gSWYgdGhlIHdpbmRvdyBpc24ndCB2aXNpYmxlLCByZXR1cm4g
ZWFybHkgc28gdGhlIERPTSB0cmVlIGlzbid0IGJ1aWx0CisgICAgICAgIC8vIGFuZCBtdXRhdGlv
biBldmVudCBsaXN0ZW5lcnMgYXJlIG5vdCBhZGRlZC4KKyAgICAgICAgaWYgKCFJbnNwZWN0b3JD
b250cm9sbGVyLmlzV2luZG93VmlzaWJsZSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIHRoaXMucmVnaXN0ZXJNdXRhdGlvbkV2ZW50TGlzdGVuZXJzKGluc3BlY3RlZFdpbmRvdyk7
CisKICAgICAgICAgdmFyIGluc3BlY3RlZFJvb3REb2N1bWVudCA9IGluc3BlY3RlZFdpbmRvdy5k
b2N1bWVudDsKICAgICAgICAgdGhpcy5yb290RE9NTm9kZSA9IGluc3BlY3RlZFJvb3REb2N1bWVu
dDsKIApAQCAtMTU3LDYgKzE3Myw1OSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9LAogCisgICAgaW5zcGVjdGVkV2luZG93Q2xlYXJl
ZDogZnVuY3Rpb24od2luZG93KQorICAgIHsKKyAgICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xs
ZXIuaXNXaW5kb3dWaXNpYmxlKCkpCisgICAgICAgICAgICB0aGlzLnVwZGF0ZU11dGF0aW9uRXZl
bnRMaXN0ZW5lcnMod2luZG93KTsKKyAgICB9LAorCisgICAgX2FkZE11dGF0aW9uRXZlbnRMaXN0
ZW5lcnM6IGZ1bmN0aW9uKG1vbml0ZXJlZFdpbmRvdykKKyAgICB7CisgICAgICAgIG1vbml0ZXJl
ZFdpbmRvdy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Ob2RlSW5zZXJ0ZWQiLCB0aGlz
Ll9ub2RlSW5zZXJ0ZWRFdmVudExpc3RlbmVyLCB0cnVlKTsKKyAgICAgICAgbW9uaXRlcmVkV2lu
ZG93LmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTU5vZGVSZW1vdmVkIiwgdGhpcy5fbm9k
ZVJlbW92ZWRFdmVudExpc3RlbmVyLCB0cnVlKTsKKyAgICAgICAgaWYgKG1vbml0ZXJlZFdpbmRv
dy5mcmFtZUVsZW1lbnQpCisgICAgICAgICAgICBtb25pdGVyZWRXaW5kb3cuYWRkRXZlbnRMaXN0
ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIHRoaXMuX2NvbnRlbnRMb2FkZWRFdmVudExpc3RlbmVy
LCB0cnVlKTsKKyAgICB9LAorCisgICAgX3JlbW92ZU11dGF0aW9uRXZlbnRMaXN0ZW5lcnM6IGZ1
bmN0aW9uKG1vbml0ZXJlZFdpbmRvdykKKyAgICB7CisgICAgICAgIGlmIChtb25pdGVyZWRXaW5k
b3cuZnJhbWVFbGVtZW50KQorICAgICAgICAgICAgbW9uaXRlcmVkV2luZG93LnJlbW92ZUV2ZW50
TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCB0aGlzLl9jb250ZW50TG9hZGVkRXZlbnRMaXN0
ZW5lciwgdHJ1ZSk7CisgICAgICAgIGlmICghbW9uaXRlcmVkV2luZG93LmRvY3VtZW50KQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBtb25pdGVyZWRXaW5kb3cuZG9jdW1lbnQucmVtb3Zl
RXZlbnRMaXN0ZW5lcigiRE9NTm9kZUluc2VydGVkIiwgdGhpcy5fbm9kZUluc2VydGVkRXZlbnRM
aXN0ZW5lciwgdHJ1ZSk7CisgICAgICAgIG1vbml0ZXJlZFdpbmRvdy5kb2N1bWVudC5yZW1vdmVF
dmVudExpc3RlbmVyKCJET01Ob2RlUmVtb3ZlZCIsIHRoaXMuX25vZGVSZW1vdmVkRXZlbnRMaXN0
ZW5lciwgdHJ1ZSk7CisgICAgfSwKKworICAgIHVwZGF0ZU11dGF0aW9uRXZlbnRMaXN0ZW5lcnM6
IGZ1bmN0aW9uKG1vbml0ZXJlZFdpbmRvdykKKyAgICB7CisgICAgICAgIHRoaXMuX2FkZE11dGF0
aW9uRXZlbnRMaXN0ZW5lcnMobW9uaXRlcmVkV2luZG93KTsKKyAgICB9LAorCisgICAgcmVnaXN0
ZXJNdXRhdGlvbkV2ZW50TGlzdGVuZXJzOiBmdW5jdGlvbihtb25pdGVyZWRXaW5kb3cpCisgICAg
eworICAgICAgICBpZiAoIW1vbml0ZXJlZFdpbmRvdyB8fCB0aGlzLl9tdXRhdGlvbk1vbml0b3Jl
ZFdpbmRvd3MuaW5kZXhPZihtb25pdGVyZWRXaW5kb3cpICE9PSAtMSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgdGhpcy5fbXV0YXRpb25Nb25pdG9yZWRXaW5kb3dzLnB1c2gobW9uaXRl
cmVkV2luZG93KTsKKyAgICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIuaXNXaW5kb3dWaXNp
YmxlKCkpCisgICAgICAgICAgICB0aGlzLl9hZGRNdXRhdGlvbkV2ZW50TGlzdGVuZXJzKG1vbml0
ZXJlZFdpbmRvdyk7CisgICAgfSwKKworICAgIHVucmVnaXN0ZXJNdXRhdGlvbkV2ZW50TGlzdGVu
ZXJzOiBmdW5jdGlvbihtb25pdGVyZWRXaW5kb3cpCisgICAgeworICAgICAgICBpZiAoIW1vbml0
ZXJlZFdpbmRvdyB8fCB0aGlzLl9tdXRhdGlvbk1vbml0b3JlZFdpbmRvd3MuaW5kZXhPZihtb25p
dGVyZWRXaW5kb3cpID09PSAtMSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5f
bXV0YXRpb25Nb25pdG9yZWRXaW5kb3dzLnJlbW92ZShtb25pdGVyZWRXaW5kb3cpOworICAgICAg
ICB0aGlzLl9yZW1vdmVNdXRhdGlvbkV2ZW50TGlzdGVuZXJzKG1vbml0ZXJlZFdpbmRvdyk7Cisg
ICAgfSwKKworICAgIHVucmVnaXN0ZXJBbGxNdXRhdGlvbkV2ZW50TGlzdGVuZXJzOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX211dGF0aW9uTW9u
aXRvcmVkV2luZG93cy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRoaXMuX3JlbW92ZU11dGF0
aW9uRXZlbnRMaXN0ZW5lcnModGhpcy5fbXV0YXRpb25Nb25pdG9yZWRXaW5kb3dzW2ldKTsKKyAg
ICAgICAgdGhpcy5fbXV0YXRpb25Nb25pdG9yZWRXaW5kb3dzID0gW107CisgICAgfSwKKwogICAg
IHVwZGF0ZVRyZWVTZWxlY3Rpb246IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICghdGhp
cy50cmVlT3V0bGluZSB8fCAhdGhpcy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50KQpA
QCAtMjU4LDYgKzMyNyw3MCBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICB0aGlzLl91cGRhdGVIb3ZlckhpZ2hsaWdodCgpOwogICAgIH0sCiAK
KyAgICBfY29udGVudExvYWRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlz
LnJlY2VudGx5TW9kaWZpZWROb2Rlcy5wdXNoKHtub2RlOiBldmVudC50YXJnZXQsIHBhcmVudDog
ZXZlbnQudGFyZ2V0LmRlZmF1bHRWaWV3LmZyYW1lRWxlbWVudCwgcmVwbGFjZWQ6IHRydWV9KTsK
KyAgICAgICAgaWYgKHRoaXMudmlzaWJsZSkKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU1vZGlm
aWVkTm9kZXNTb29uKCk7CisgICAgfSwKKworICAgIF9ub2RlSW5zZXJ0ZWQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5yZWNlbnRseU1vZGlmaWVkTm9kZXMucHVzaCh7bm9k
ZTogZXZlbnQudGFyZ2V0LCBwYXJlbnQ6IGV2ZW50LnJlbGF0ZWROb2RlLCBpbnNlcnRlZDogdHJ1
ZX0pOworICAgICAgICBpZiAodGhpcy52aXNpYmxlKQorICAgICAgICAgICAgdGhpcy5fdXBkYXRl
TW9kaWZpZWROb2Rlc1Nvb24oKTsKKyAgICB9LAorCisgICAgX25vZGVSZW1vdmVkOiBmdW5jdGlv
bihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMucmVjZW50bHlNb2RpZmllZE5vZGVzLnB1c2go
e25vZGU6IGV2ZW50LnRhcmdldCwgcGFyZW50OiBldmVudC5yZWxhdGVkTm9kZSwgcmVtb3ZlZDog
dHJ1ZX0pOworICAgICAgICBpZiAodGhpcy52aXNpYmxlKQorICAgICAgICAgICAgdGhpcy5fdXBk
YXRlTW9kaWZpZWROb2Rlc1Nvb24oKTsKKyAgICB9LAorCisgICAgX3VwZGF0ZU1vZGlmaWVkTm9k
ZXNTb29uOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAoIl91cGRhdGVNb2RpZmllZE5v
ZGVzVGltZW91dCIgaW4gdGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5f
dXBkYXRlTW9kaWZpZWROb2Rlc1RpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuX3VwZGF0ZU1vZGlm
aWVkTm9kZXMuYmluZCh0aGlzKSwgMCk7CisgICAgfSwKKworICAgIF91cGRhdGVNb2RpZmllZE5v
ZGVzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAoIl91cGRhdGVNb2RpZmllZE5vZGVz
VGltZW91dCIgaW4gdGhpcykgeworICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0
ZU1vZGlmaWVkTm9kZXNUaW1lb3V0KTsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl91cGRhdGVN
b2RpZmllZE5vZGVzVGltZW91dDsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB1cGRhdGVkUGFy
ZW50VHJlZUVsZW1lbnRzID0gW107CisgICAgICAgIHZhciB1cGRhdGVCcmVhZGNydW1icyA9IGZh
bHNlOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5yZWNlbnRseU1vZGlmaWVk
Tm9kZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciByZXBsYWNlZCA9IHRoaXMucmVj
ZW50bHlNb2RpZmllZE5vZGVzW2ldLnJlcGxhY2VkOworICAgICAgICAgICAgdmFyIHBhcmVudCA9
IHRoaXMucmVjZW50bHlNb2RpZmllZE5vZGVzW2ldLnBhcmVudDsKKyAgICAgICAgICAgIGlmICgh
cGFyZW50KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICB2YXIgcGFy
ZW50Tm9kZUl0ZW0gPSB0aGlzLnRyZWVPdXRsaW5lLmZpbmRUcmVlRWxlbWVudChwYXJlbnQsIG51
bGwsIG51bGwsIHNhbWVPYmplY3RzKTsKKyAgICAgICAgICAgIGlmIChwYXJlbnROb2RlSXRlbSAm
JiAhcGFyZW50Tm9kZUl0ZW0uYWxyZWFkeVVwZGF0ZWRDaGlsZHJlbikgeworICAgICAgICAgICAg
ICAgIHBhcmVudE5vZGVJdGVtLnVwZGF0ZUNoaWxkcmVuKHJlcGxhY2VkKTsKKyAgICAgICAgICAg
ICAgICBwYXJlbnROb2RlSXRlbS5hbHJlYWR5VXBkYXRlZENoaWxkcmVuID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICB1cGRhdGVkUGFyZW50VHJlZUVsZW1lbnRzLnB1c2gocGFyZW50Tm9kZUl0ZW0p
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIXVwZGF0ZUJyZWFkY3J1bWJzICYm
IChzYW1lT2JqZWN0cyh0aGlzLmZvY3VzZWRET01Ob2RlLCBwYXJlbnQpIHx8IHRoaXMuX2lzQW5j
ZXN0b3JJbmNsdWRpbmdQYXJlbnRGcmFtZXModGhpcy5mb2N1c2VkRE9NTm9kZSwgcGFyZW50KSkp
CisgICAgICAgICAgICAgICAgdXBkYXRlQnJlYWRjcnVtYnMgPSB0cnVlOworICAgICAgICB9CisK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1cGRhdGVkUGFyZW50VHJlZUVsZW1lbnRzLmxl
bmd0aDsgKytpKQorICAgICAgICAgICAgZGVsZXRlIHVwZGF0ZWRQYXJlbnRUcmVlRWxlbWVudHNb
aV0uYWxyZWFkeVVwZGF0ZWRDaGlsZHJlbjsKKworICAgICAgICB0aGlzLnJlY2VudGx5TW9kaWZp
ZWROb2RlcyA9IFtdOworCisgICAgICAgIGlmICh1cGRhdGVCcmVhZGNydW1icykKKyAgICAgICAg
ICAgIHRoaXMudXBkYXRlQnJlYWRjcnVtYih0cnVlKTsKKyAgICB9LAorCiAgICAgX3VwZGF0ZUhv
dmVySGlnaGxpZ2h0U29vbjogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKCJfdXBkYXRl
SG92ZXJIaWdobGlnaHRUaW1lb3V0IiBpbiB0aGlzKQpAQCAtODg4LDggKzEwMjEsMTAgQEAgV2Vi
SW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgX2lzQW5jZXN0b3JJ
bmNsdWRpbmdQYXJlbnRGcmFtZXM6IGZ1bmN0aW9uKGEsIGIpCiAgICAgeworICAgICAgICBpZiAo
c2FtZU9iamVjdHMoYSwgYikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGZv
ciAodmFyIG5vZGUgPSBiOyBub2RlOyBub2RlID0gdGhpcy5fZ2V0RG9jdW1lbnRGb3JOb2RlKG5v
ZGUpLmRlZmF1bHRWaWV3LmZyYW1lRWxlbWVudCkKLSAgICAgICAgICAgIGlmIChpc0FuY2VzdG9y
Tm9kZS5jYWxsKGEsIG5vZGUpKQorICAgICAgICAgICAgaWYgKHNhbWVPYmplY3RzKGEsIG5vZGUp
IHx8IGlzQW5jZXN0b3JOb2RlLmNhbGwoYSwgbm9kZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9LApAQCAtMTAzNywyOCArMTE3Miw5
MSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoIHx8IHRoaXMud2hpdGVzcGFjZUlnbm9yZWQgIT09
IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgdGhpcy5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0aGlzLndoaXRlc3BhY2VJZ25v
cmVkID0gUHJlZmVyZW5jZXMuaWdub3JlV2hpdGVzcGFjZTsKIAorICAgICAgICB0aGlzLnVwZGF0
ZUNoaWxkcmVuKCk7CisgICAgfSwKKworICAgIHVwZGF0ZUNoaWxkcmVuOiBmdW5jdGlvbihmdWxs
UmVmcmVzaCkKKyAgICB7CisgICAgICAgIGlmIChmdWxsUmVmcmVzaCkgeworICAgICAgICAgICAg
dmFyIHNlbGVjdGVkVHJlZUVsZW1lbnQgPSB0aGlzLnRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVs
ZW1lbnQ7CisgICAgICAgICAgICBpZiAoc2VsZWN0ZWRUcmVlRWxlbWVudCAmJiBzZWxlY3RlZFRy
ZWVFbGVtZW50Lmhhc0FuY2VzdG9yKHRoaXMpKQorICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0
KCk7CisgICAgICAgICAgICB0aGlzLnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgIH0KKwogICAg
ICAgICB2YXIgdHJlZUVsZW1lbnQgPSB0aGlzOwotICAgICAgICBmdW5jdGlvbiBhcHBlbmRDaGls
ZHJlbk9mTm9kZShub2RlKQorICAgICAgICB2YXIgdHJlZUNoaWxkSW5kZXggPSAwOworCisgICAg
ICAgIGZ1bmN0aW9uIHVwZGF0ZUNoaWxkcmVuT2ZOb2RlKG5vZGUpCiAgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciB0cmVlT3V0bGluZSA9IHRyZWVFbGVtZW50LnRyZWVPdXRsaW5lOwogICAgICAg
ICAgICAgdmFyIGNoaWxkID0gKFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UgPyBmaXJzdENo
aWxkU2tpcHBpbmdXaGl0ZXNwYWNlLmNhbGwobm9kZSkgOiBub2RlLmZpcnN0Q2hpbGQpOwogICAg
ICAgICAgICAgd2hpbGUgKGNoaWxkKSB7Ci0gICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQuYXBw
ZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5ET01Ob2RlVHJlZUVsZW1lbnQoY2hpbGQpKTsKKyAg
ICAgICAgICAgICAgICB2YXIgY3VycmVudFRyZWVFbGVtZW50ID0gdHJlZUVsZW1lbnQuY2hpbGRy
ZW5bdHJlZUNoaWxkSW5kZXhdOworICAgICAgICAgICAgICAgIGlmICghY3VycmVudFRyZWVFbGVt
ZW50IHx8ICFzYW1lT2JqZWN0cyhjdXJyZW50VHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3Qs
IGNoaWxkKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBGaXggYW55IGV4aXN0aW5nIGVsZW1l
bnQgdGhhdCBpcyBsYXRlciBpbiB0aGUgY2hpbGRyZW4gbGlzdC4KKyAgICAgICAgICAgICAgICAg
ICAgdmFyIGV4aXN0aW5nVHJlZUVsZW1lbnQgPSBudWxsOworICAgICAgICAgICAgICAgICAgICBm
b3IgKHZhciBpID0gKHRyZWVDaGlsZEluZGV4ICsgMSk7IGkgPCB0cmVlRWxlbWVudC5jaGlsZHJl
bi5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNhbWVPYmplY3Rz
KHRyZWVFbGVtZW50LmNoaWxkcmVuW2ldLnJlcHJlc2VudGVkT2JqZWN0LCBjaGlsZCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ1RyZWVFbGVtZW50ID0gdHJlZUVsZW1l
bnQuY2hpbGRyZW5baV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgICAgICBpZiAoZXhpc3RpbmdUcmVlRWxlbWVudCAmJiBleGlzdGluZ1RyZWVFbGVtZW50
LnBhcmVudCA9PT0gdHJlZUVsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElm
IGFuIGV4aXN0aW5nIGVsZW1lbnQgd2FzIGZvdW5kIGFuZCBpdCBoYXMgdGhlIHNhbWUgcGFyZW50
LCBqdXN0IG1vdmUgaXQuCisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgd2FzU2VsZWN0ZWQg
PSBleGlzdGluZ1RyZWVFbGVtZW50LnNlbGVjdGVkOworICAgICAgICAgICAgICAgICAgICAgICAg
dHJlZUVsZW1lbnQucmVtb3ZlQ2hpbGQoZXhpc3RpbmdUcmVlRWxlbWVudCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB0cmVlRWxlbWVudC5pbnNlcnRDaGlsZChleGlzdGluZ1RyZWVFbGVtZW50
LCB0cmVlQ2hpbGRJbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2FzU2VsZWN0
ZWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdUcmVlRWxlbWVudC5zZWxl
Y3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIE5vIGV4aXN0aW5nIGVsZW1lbnQgZm91bmQsIGluc2VydCBhIG5ldyBlbGVtZW50Lgor
ICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQuaW5zZXJ0Q2hpbGQobmV3IFdlYklu
c3BlY3Rvci5ET01Ob2RlVHJlZUVsZW1lbnQoY2hpbGQpLCB0cmVlQ2hpbGRJbmRleCk7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBj
aGlsZCA9IFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UgPyBuZXh0U2libGluZ1NraXBwaW5n
V2hpdGVzcGFjZS5jYWxsKGNoaWxkKSA6IGNoaWxkLm5leHRTaWJsaW5nOworICAgICAgICAgICAg
ICAgICsrdHJlZUNoaWxkSW5kZXg7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAg
ICBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdC5jb250ZW50RG9jdW1lbnQpCi0gICAgICAgICAg
ICBhcHBlbmRDaGlsZHJlbk9mTm9kZSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmNvbnRlbnREb2N1
bWVudCk7CisgICAgICAgIC8vIFJlbW92ZSBhbnkgdHJlZSBlbGVtZW50cyB0aGF0IG5vIGxvbmdl
ciBoYXZlIHRoaXMgbm9kZSAob3IgdGhpcyBub2RlJ3MgY29udGVudERvY3VtZW50KSBhcyB0aGVp
ciBwYXJlbnQuCisgICAgICAgIGZvciAodmFyIGkgPSAodGhpcy5jaGlsZHJlbi5sZW5ndGggLSAx
KTsgaSA+IDA7IC0taSkgeworICAgICAgICAgICAgaWYgKCJlbGVtZW50Q2xvc2VUYWciIGluIHRo
aXMuY2hpbGRyZW5baV0pCisgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXBw
ZW5kQ2hpbGRyZW5PZk5vZGUodGhpcy5yZXByZXNlbnRlZE9iamVjdCk7CisgICAgICAgICAgICB2
YXIgY3VycmVudENoaWxkID0gdGhpcy5jaGlsZHJlbltpXTsKKyAgICAgICAgICAgIHZhciBjdXJy
ZW50Tm9kZSA9IGN1cnJlbnRDaGlsZC5yZXByZXNlbnRlZE9iamVjdDsKKyAgICAgICAgICAgIHZh
ciBjdXJyZW50UGFyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudE5vZGU7CiAKLSAgICAgICAg
aWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3Qubm9kZVR5cGUgPT0gTm9kZS5FTEVNRU5UX05PREUp
IHsKKyAgICAgICAgICAgIGlmIChzYW1lT2JqZWN0cyhjdXJyZW50UGFyZW50Tm9kZSwgdGhpcy5y
ZXByZXNlbnRlZE9iamVjdCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdC5jb250ZW50RG9jdW1lbnQgJiYgc2FtZU9iamVj
dHMoY3VycmVudFBhcmVudE5vZGUsIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY29udGVudERvY3Vt
ZW50KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgdmFyIHNlbGVj
dGVkVHJlZUVsZW1lbnQgPSB0aGlzLnRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQ7Cisg
ICAgICAgICAgICBpZiAoc2VsZWN0ZWRUcmVlRWxlbWVudCAmJiAoc2VsZWN0ZWRUcmVlRWxlbWVu
dCA9PT0gY3VycmVudENoaWxkIHx8IHNlbGVjdGVkVHJlZUVsZW1lbnQuaGFzQW5jZXN0b3IoY3Vy
cmVudENoaWxkKSkpCisgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3QoKTsKKworICAgICAgICAg
ICAgdGhpcy5yZW1vdmVDaGlsZEF0SW5kZXgoaSk7CisKKyAgICAgICAgICAgIGlmIChjdXJyZW50
Tm9kZS5jb250ZW50RG9jdW1lbnQpCisgICAgICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5w
YW5lbC51bnJlZ2lzdGVyTXV0YXRpb25FdmVudExpc3RlbmVycyhjdXJyZW50Tm9kZS5jb250ZW50
RG9jdW1lbnQuZGVmYXVsdFZpZXcpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMucmVw
cmVzZW50ZWRPYmplY3QuY29udGVudERvY3VtZW50KQorICAgICAgICAgICAgdXBkYXRlQ2hpbGRy
ZW5PZk5vZGUodGhpcy5yZXByZXNlbnRlZE9iamVjdC5jb250ZW50RG9jdW1lbnQpOworICAgICAg
ICB1cGRhdGVDaGlsZHJlbk9mTm9kZSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKKworICAgICAg
ICB2YXIgbGFzdENoaWxkID0gdGhpcy5jaGlsZHJlblt0aGlzLmNoaWxkcmVuLmxlbmd0aCAtIDFd
OworICAgICAgICBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdC5ub2RlVHlwZSA9PSBOb2RlLkVM
RU1FTlRfTk9ERSAmJiAoIWxhc3RDaGlsZCB8fCAhbGFzdENoaWxkLmVsZW1lbnRDbG9zZVRhZykp
IHsKICAgICAgICAgICAgIHZhciB0aXRsZSA9ICI8c3BhbiBjbGFzcz1cIndlYmtpdC1odG1sLXRh
ZyBjbG9zZVwiPiZsdDsvIiArIHRoaXMucmVwcmVzZW50ZWRPYmplY3Qubm9kZU5hbWUudG9Mb3dl
ckNhc2UoKS5lc2NhcGVIVE1MKCkgKyAiJmd0Ozwvc3Bhbj4iOwotICAgICAgICAgICAgdmFyIGl0
ZW0gPSBuZXcgVHJlZUVsZW1lbnQodGl0bGUsIHRoaXMucmVwcmVzZW50ZWRPYmplY3QsIGZhbHNl
KTsKKyAgICAgICAgICAgIHZhciBpdGVtID0gbmV3IFRyZWVFbGVtZW50KHRpdGxlLCBudWxsLCBm
YWxzZSk7CiAgICAgICAgICAgICBpdGVtLnNlbGVjdGFibGUgPSBmYWxzZTsKKyAgICAgICAgICAg
IGl0ZW0uZWxlbWVudENsb3NlVGFnID0gdHJ1ZTsKICAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hp
bGQoaXRlbSk7CiAgICAgICAgIH0KICAgICB9LApAQCAtMTA2Niw2ICsxMjY0LDkgQEAgV2ViSW5z
cGVjdG9yLkRPTU5vZGVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgb25leHBhbmQ6IGZ1
bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMudHJlZU91dGxpbmUucGFuZWwudXBkYXRlVHJl
ZVNlbGVjdGlvbigpOworCisgICAgICAgIGlmICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmNvbnRl
bnREb2N1bWVudCkKKyAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUucGFuZWwucmVnaXN0ZXJN
dXRhdGlvbkV2ZW50TGlzdGVuZXJzKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY29udGVudERvY3Vt
ZW50LmRlZmF1bHRWaWV3KTsKICAgICB9LAogCiAgICAgb25jb2xsYXBzZTogZnVuY3Rpb24oKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2luc3BlY3Rvci9pbnNwZWN0b3IuanMgYi9XZWJDb3Jl
L3BhZ2UvaW5zcGVjdG9yL2luc3BlY3Rvci5qcwppbmRleCBhY2E4MWRlLi4xZGQwNmQ1IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL2luc3BlY3Rvci5qcworKysgYi9XZWJDb3Jl
L3BhZ2UvaW5zcGVjdG9yL2luc3BlY3Rvci5qcwpAQCAtNzg2LDYgKzc4NiwxMSBAQCBXZWJJbnNw
ZWN0b3IucmVzZXQgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5jb25zb2xlLmNsZWFyTWVzc2FnZXMo
KTsKIH0KIAorV2ViSW5zcGVjdG9yLmluc3BlY3RlZFdpbmRvd0NsZWFyZWQgPSBmdW5jdGlvbihp
bnNwZWN0ZWRXaW5kb3cpCit7CisgICAgdGhpcy5wYW5lbHMuZWxlbWVudHMuaW5zcGVjdGVkV2lu
ZG93Q2xlYXJlZChpbnNwZWN0ZWRXaW5kb3cpOworfQorCiBXZWJJbnNwZWN0b3IucmVzb3VyY2VV
UkxDaGFuZ2VkID0gZnVuY3Rpb24ocmVzb3VyY2UsIG9sZFVSTCkKIHsKICAgICBkZWxldGUgdGhp
cy5yZXNvdXJjZVVSTE1hcFtvbGRVUkxdOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2luc3Bl
Y3Rvci90cmVlb3V0bGluZS5qcyBiL1dlYkNvcmUvcGFnZS9pbnNwZWN0b3IvdHJlZW91dGxpbmUu
anMKaW5kZXggNWMxMGNmMS4uMDUzZDUxZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL2luc3Bl
Y3Rvci90cmVlb3V0bGluZS5qcworKysgYi9XZWJDb3JlL3BhZ2UvaW5zcGVjdG9yL3RyZWVvdXRs
aW5lLmpzCkBAIC00NjYsNiArNDY2LDI3IEBAIFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS50aXRsZSA9IHggPyB4IDogIiI7CiAgICAgfSwK
IAorICAgIGdldCBoYXNDaGlsZHJlbigpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2hhc0NoaWxk
cmVuOworICAgIH0sCisKKyAgICBzZXQgaGFzQ2hpbGRyZW4oeCkgeworICAgICAgICBpZiAodGhp
cy5faGFzQ2hpbGRyZW4gPT09IHgpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhp
cy5faGFzQ2hpbGRyZW4gPSB4OworCisgICAgICAgIGlmICghdGhpcy5fbGlzdEl0ZW1Ob2RlKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh4KQorICAgICAgICAgICAgdGhpcy5f
bGlzdEl0ZW1Ob2RlLmFkZFN0eWxlQ2xhc3MoInBhcmVudCIpOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5yZW1vdmVTdHlsZUNsYXNzKCJwYXJlbnQiKTsK
KyAgICAgICAgICAgIHRoaXMuY29sbGFwc2UoKTsKKyAgICAgICAgfQorICAgIH0sCisKICAgICBn
ZXQgaGlkZGVuKCkgewogICAgICAgICByZXR1cm4gdGhpcy5faGlkZGVuOwogICAgIH0sCkBAIC02
MjgsNyArNjQ5LDcgQEAgVHJlZUVsZW1lbnQucHJvdG90eXBlLmV4cGFuZCA9IGZ1bmN0aW9uKCkK
ICAgICBpZiAoIXRoaXMuaGFzQ2hpbGRyZW4gfHwgKHRoaXMuZXhwYW5kZWQgJiYgIXRoaXMuX3No
b3VsZFJlZnJlc2hDaGlsZHJlbiAmJiB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKCF0aGlzLl9jaGlsZHJlbkxpc3ROb2RlIHx8IHRoaXMuX3Nob3Vs
ZFJlZnJlc2hDaGlsZHJlbikgeworICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lICYmICghdGhpcy5f
Y2hpbGRyZW5MaXN0Tm9kZSB8fCB0aGlzLl9zaG91bGRSZWZyZXNoQ2hpbGRyZW4pKSB7CiAgICAg
ICAgIGlmICh0aGlzLl9jaGlsZHJlbkxpc3ROb2RlICYmIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUu
cGFyZW50Tm9kZSkKICAgICAgICAgICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUucGFyZW50Tm9k
ZS5yZW1vdmVDaGlsZCh0aGlzLl9jaGlsZHJlbkxpc3ROb2RlKTsKIApAQCAtNjUwLDcgKzY3MSw3
IEBAIFRyZWVFbGVtZW50LnByb3RvdHlwZS5leHBhbmQgPSBmdW5jdGlvbigpCiAKICAgICBpZiAo
dGhpcy5fbGlzdEl0ZW1Ob2RlKSB7CiAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5hZGRTdHls
ZUNsYXNzKCJleHBhbmRlZCIpOwotICAgICAgICBpZiAodGhpcy5fY2hpbGRyZW5MaXN0Tm9kZS5w
YXJlbnROb2RlICE9IHRoaXMuX2xpc3RJdGVtTm9kZS5wYXJlbnROb2RlKQorICAgICAgICBpZiAo
dGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSAmJiB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlLnBhcmVudE5v
ZGUgIT0gdGhpcy5fbGlzdEl0ZW1Ob2RlLnBhcmVudE5vZGUpCiAgICAgICAgICAgICB0aGlzLnBh
cmVudC5fY2hpbGRyZW5MaXN0Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5fY2hpbGRyZW5MaXN0Tm9k
ZSwgdGhpcy5fbGlzdEl0ZW1Ob2RlLm5leHRTaWJsaW5nKTsKICAgICB9CiAKQEAgLTY4NSw2ICs3
MDYsMjAgQEAgVHJlZUVsZW1lbnQucHJvdG90eXBlLmV4cGFuZFJlY3Vyc2l2ZWx5ID0gZnVuY3Rp
b24obWF4RGVwdGgpCiAgICAgfQogfQogCitUcmVlRWxlbWVudC5wcm90b3R5cGUuaGFzQW5jZXN0
b3IgPSBmdW5jdGlvbihhbmNlc3RvcikgeworICAgIGlmICghYW5jZXN0b3IpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHZhciBjdXJyZW50Tm9kZSA9IHRoaXMucGFyZW50OworICAgIHdo
aWxlIChjdXJyZW50Tm9kZSkgeworICAgICAgICBpZiAoYW5jZXN0b3IgPT09IGN1cnJlbnROb2Rl
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVu
dE5vZGUucGFyZW50OworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogVHJlZUVsZW1l
bnQucHJvdG90eXBlLnJldmVhbCA9IGZ1bmN0aW9uKCkKIHsKICAgICB2YXIgY3VycmVudEFuY2Vz
dG9yID0gdGhpcy5wYXJlbnQ7Ci0tIAoxLjUuNC40Cgo=
</data>
<flag name="review"
          id="9898"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>