<?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>192116</bug_id>
          
          <creation_ts>2018-11-28 15:31:51 -0800</creation_ts>
          <short_desc>Web Inspector: REGRESSION(r238602): Elements: deleting multiple DOM nodes doesn&apos;t select the nearest node after deletion</short_desc>
          <delta_ts>2018-12-13 14:29:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=192044</see_also>
          <bug_file_loc>https://devinrousso.com/demo/WebKit/test.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>192059</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Matt Baker">mattbaker</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1482705</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-11-28 15:31:51 -0800</bug_when>
    <thetext>* STEPS TO REPRODUCE:
1. open WebInspector
2. go to the Elements tab
3. select all &lt;area&gt;
4. press ⌫ to delete
 =&gt; no element is selected</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482974</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-29 09:33:55 -0800</bug_when>
    <thetext>&lt;rdar://problem/46344339&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486819</commentid>
    <comment_count>2</comment_count>
      <attachid>357019</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-12-10 16:50:45 -0800</bug_when>
    <thetext>Created attachment 357019
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486820</commentid>
    <comment_count>3</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-12-10 16:53:19 -0800</bug_when>
    <thetext>It works pretty well, even for edge cases like having multiple selected end-tag TreeElements (&lt;/li&gt; etc). I am seeing some asserts, and occasionally a new selected element cannot be found.

Looking into the above issues now, but this is largely reviewable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486858</commentid>
    <comment_count>4</comment_count>
      <attachid>357019</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-12-10 19:46:06 -0800</bug_when>
    <thetext>Comment on attachment 357019
Patch

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

r-, as I&apos;d expect slightly different functionality

Having a Delete &gt; Nodes is a good idea :)

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js:520
&gt; +        let selectedTreeElements = this.selectedTreeElements.filter(hasNoSelectedAncestors);

This wouldn&apos;t have the effect I&apos;d expect.  If I&apos;ve selected a parent and child, and press delete, I&apos;d expect that they are no longer attached to the DOM tree _and_ that their parent-child relationship no longer exists.  This would be testable by having both nodes saved as $x values (e.g. `$1.parentNode !== $2 &amp;&amp; $1.parentNode === null`).

Is the reason you&apos;re performing this check to ensure that the `WI.SelectionController` doesn&apos;t try to do funky things?  You&apos;re already `removeSelectedItems()` before removing each `WI.DOMTreeElement` individually, so I don&apos;t think that&apos;s an issue there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487420</commentid>
    <comment_count>5</comment_count>
      <attachid>357019</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-12-12 17:04:19 -0800</bug_when>
    <thetext>Comment on attachment 357019
Patch

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

In addition to the issue you brought up, there is another bug I just noticed that should be resolved.

Given the following DOM with selected (*) nodes:

  &lt;div&gt;
*     &lt;p&gt;
*         &lt;span&gt;
              &lt;b&gt;&lt;/b&gt;
          &lt;/span&gt;
      &lt;p&gt;
      &lt;p&gt;&lt;/p&gt;
  &lt;/div&gt;

When SelectionController looks for a new index for select in preparation for the removal of the selected &lt;p&gt; and &lt;span&gt;, it does so unaware of the parent-child relationships involved. It will select the index for &lt;b&gt;, which is going to be removed with its parent &lt;span&gt;.

To resolve this, SelectionController.prototype.removeSelectedItems should use delegate methods `selectionControllerNextSelectableIndex` and `selectionControllerNextSelectableIndex` when determining an index to select. The delegate can skip children of items that are flagged for deletion.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js:520
&gt;&gt; +        let selectedTreeElements = this.selectedTreeElements.filter(hasNoSelectedAncestors);
&gt; 
&gt; This wouldn&apos;t have the effect I&apos;d expect.  If I&apos;ve selected a parent and child, and press delete, I&apos;d expect that they are no longer attached to the DOM tree _and_ that their parent-child relationship no longer exists.  This would be testable by having both nodes saved as $x values (e.g. `$1.parentNode !== $2 &amp;&amp; $1.parentNode === null`).
&gt; 
&gt; Is the reason you&apos;re performing this check to ensure that the `WI.SelectionController` doesn&apos;t try to do funky things?  You&apos;re already `removeSelectedItems()` before removing each `WI.DOMTreeElement` individually, so I don&apos;t think that&apos;s an issue there.

I agree with your assessment. The reason for not removing a child if its parent is going to be removed is to avoid having to sort nodes prior to removing. Removing a node from a subtree that&apos;s no longer attached to the root is an error. I&apos;ll rework this so that nodes are removed bottom-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487516</commentid>
    <comment_count>6</comment_count>
      <attachid>357212</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-12-12 23:27:29 -0800</bug_when>
    <thetext>Created attachment 357212
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487658</commentid>
    <comment_count>7</comment_count>
      <attachid>357212</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-12-13 12:31:04 -0800</bug_when>
    <thetext>Comment on attachment 357212
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js:274
&gt;      {
&gt;      }

I&apos;m amazed this made it through review...

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js:284
&gt; +        let levelMap = new Map;

Rather than do all of this work, isn&apos;t it just as valid to remove the elements in reverse order?  The list of selected indexes is already sorted, meaning that any selected parent-child &quot;combo&quot;s would be parent &lt; child, so removing the `WI.TreeElement`s in reverse order should completely avoid the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487661</commentid>
    <comment_count>8</comment_count>
      <attachid>357212</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-12-13 12:35:09 -0800</bug_when>
    <thetext>Comment on attachment 357212
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js:284
&gt;&gt; +        let levelMap = new Map;
&gt; 
&gt; Rather than do all of this work, isn&apos;t it just as valid to remove the elements in reverse order?  The list of selected indexes is already sorted, meaning that any selected parent-child &quot;combo&quot;s would be parent &lt; child, so removing the `WI.TreeElement`s in reverse order should completely avoid the issue.

Oh, this might have an issue if the user has selected the closing tag of an expanded element.  In that case, we can leverage `WI.DOMTreeElement.prototype.isCloseTag` and search for the opening tag `WI.DOMTreeElement` (which should have the same `representedObject`), or even just pass the opening tag `WI.DOMTreeElement` to the closing tag `WI.DOMTreeElement` on creation (e.g. replace `elementCloseTag` with an actual `WI.DOMTreeElement` instead of a `boolean`).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487663</commentid>
    <comment_count>9</comment_count>
      <attachid>357212</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-12-13 12:39:46 -0800</bug_when>
    <thetext>Comment on attachment 357212
Patch

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

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js:284
&gt;&gt;&gt; +        let levelMap = new Map;
&gt;&gt; 
&gt;&gt; Rather than do all of this work, isn&apos;t it just as valid to remove the elements in reverse order?  The list of selected indexes is already sorted, meaning that any selected parent-child &quot;combo&quot;s would be parent &lt; child, so removing the `WI.TreeElement`s in reverse order should completely avoid the issue.
&gt; 
&gt; Oh, this might have an issue if the user has selected the closing tag of an expanded element.  In that case, we can leverage `WI.DOMTreeElement.prototype.isCloseTag` and search for the opening tag `WI.DOMTreeElement` (which should have the same `representedObject`), or even just pass the opening tag `WI.DOMTreeElement` to the closing tag `WI.DOMTreeElement` on creation (e.g. replace `elementCloseTag` with an actual `WI.DOMTreeElement` instead of a `boolean`).

Great observation about reversing the array of TreeElements. I also really like the idea of passing the start tag DOMTreeElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487674</commentid>
    <comment_count>10</comment_count>
      <attachid>357212</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-12-13 13:05:18 -0800</bug_when>
    <thetext>Comment on attachment 357212
Patch

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

&gt;&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js:284
&gt;&gt;&gt;&gt; +        let levelMap = new Map;
&gt;&gt;&gt; 
&gt;&gt;&gt; Rather than do all of this work, isn&apos;t it just as valid to remove the elements in reverse order?  The list of selected indexes is already sorted, meaning that any selected parent-child &quot;combo&quot;s would be parent &lt; child, so removing the `WI.TreeElement`s in reverse order should completely avoid the issue.
&gt;&gt; 
&gt;&gt; Oh, this might have an issue if the user has selected the closing tag of an expanded element.  In that case, we can leverage `WI.DOMTreeElement.prototype.isCloseTag` and search for the opening tag `WI.DOMTreeElement` (which should have the same `representedObject`), or even just pass the opening tag `WI.DOMTreeElement` to the closing tag `WI.DOMTreeElement` on creation (e.g. replace `elementCloseTag` with an actual `WI.DOMTreeElement` instead of a `boolean`).
&gt; 
&gt; Great observation about reversing the array of TreeElements. I also really like the idea of passing the start tag DOMTreeElement.

Ah, but I think this simpler approach fails in the case where you have selected an element and the closing tag of its parent. If you have:

   &lt;p&gt;
       &lt;span&gt;
*          &lt;b&gt;&lt;/b&gt;
*      &lt;/span&gt;
   &lt;/p&gt;

and you delete &lt;b&gt; and &lt;/span&gt;:

ondelete()
{
    if (!this._editable)
        return false;

    let selectedTreeElements = this.selectedTreeElements.map((element) =&gt; element.isCloseTag ? this.findTreeElememnt(element.node) : element);
    selectedTreeElements.reverse();

    this._selectionController.removeSelectedItems();

    for (let treeElement of selectedTreeElements)
        treeElement.remove();

    return true;
}

you would remove the parent before its child.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487675</commentid>
    <comment_count>11</comment_count>
      <attachid>357212</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-12-13 13:06:28 -0800</bug_when>
    <thetext>Comment on attachment 357212
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js:284
&gt;&gt;&gt;&gt;&gt; +        let levelMap = new Map;
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Rather than do all of this work, isn&apos;t it just as valid to remove the elements in reverse order?  The list of selected indexes is already sorted, meaning that any selected parent-child &quot;combo&quot;s would be parent &lt; child, so removing the `WI.TreeElement`s in reverse order should completely avoid the issue.
&gt;&gt;&gt; 
&gt;&gt;&gt; Oh, this might have an issue if the user has selected the closing tag of an expanded element.  In that case, we can leverage `WI.DOMTreeElement.prototype.isCloseTag` and search for the opening tag `WI.DOMTreeElement` (which should have the same `representedObject`), or even just pass the opening tag `WI.DOMTreeElement` to the closing tag `WI.DOMTreeElement` on creation (e.g. replace `elementCloseTag` with an actual `WI.DOMTreeElement` instead of a `boolean`).
&gt;&gt; 
&gt;&gt; Great observation about reversing the array of TreeElements. I also really like the idea of passing the start tag DOMTreeElement.
&gt; 
&gt; Ah, but I think this simpler approach fails in the case where you have selected an element and the closing tag of its parent. If you have:
&gt; 
&gt;    &lt;p&gt;
&gt;        &lt;span&gt;
&gt; *          &lt;b&gt;&lt;/b&gt;
&gt; *      &lt;/span&gt;
&gt;    &lt;/p&gt;
&gt; 
&gt; and you delete &lt;b&gt; and &lt;/span&gt;:
&gt; 
&gt; ondelete()
&gt; {
&gt;     if (!this._editable)
&gt;         return false;
&gt; 
&gt;     let selectedTreeElements = this.selectedTreeElements.map((element) =&gt; element.isCloseTag ? this.findTreeElememnt(element.node) : element);
&gt;     selectedTreeElements.reverse();
&gt; 
&gt;     this._selectionController.removeSelectedItems();
&gt; 
&gt;     for (let treeElement of selectedTreeElements)
&gt;         treeElement.remove();
&gt; 
&gt;     return true;
&gt; }
&gt; 
&gt; you would remove the parent before its child.

Disregard this comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487681</commentid>
    <comment_count>12</comment_count>
      <attachid>357248</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-12-13 13:22:07 -0800</bug_when>
    <thetext>Created attachment 357248
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487683</commentid>
    <comment_count>13</comment_count>
      <attachid>357248</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-12-13 13:29:32 -0800</bug_when>
    <thetext>Comment on attachment 357248
Patch

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

r=me, nice work :)

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js:287
&gt; +            if (!levelMap.has(element)) {

This performs two lookups, which can be avoided.

    function getLevel(treeElement) {
        let level = levelMap.get(treeElement);
        if (isNaN(level)) {
            level = 0;
            let current = treeElement;
            while (current = current.parent)
                ++level;
            levelMap.set(treeElement, level);
        }
        return level;
    }

Style: you&apos;re reusing `level` as both a function name and variable name.
Style: since we&apos;re expecting `WI.TreeElement` and not DOM nodes, the parameter should be `treeElement` instead of `element`.

&gt; Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js:302
&gt; +        // same DOMNode can both be selected.

NIT: I&apos;d either include the `WI` or separate it into two names, for clarity as to whether you&apos;re referring to our model object or the builtin Node (e.g. `WI.DOMNode` vs DOM node).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487685</commentid>
    <comment_count>14</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-12-13 13:30:37 -0800</bug_when>
    <thetext>I forgot to mention, but this case should _definitely_ have a test, as this is not an edge-case by any means.  Either add it to this patch, or to &lt;https://webkit.org/b/192044&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487694</commentid>
    <comment_count>15</comment_count>
      <attachid>357249</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-12-13 13:50:39 -0800</bug_when>
    <thetext>Created attachment 357249
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487713</commentid>
    <comment_count>16</comment_count>
      <attachid>357249</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-13 14:29:14 -0800</bug_when>
    <thetext>Comment on attachment 357249
Patch for landing

Clearing flags on attachment: 357249

Committed r239178: &lt;https://trac.webkit.org/changeset/239178&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487715</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-13 14:29:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357019</attachid>
            <date>2018-12-10 16:50:45 -0800</date>
            <delta_ts>2018-12-12 23:27:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192116-20181210165032.patch</filename>
            <type>text/plain</type>
            <size>4866</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBm
MWFiOGM0NGFkOWYxMjNmMzk4OTJiMjhjYzU3ZjRhYmZlNDQ0MDYzLi4yYzcyZjcwOTY2MTI4Zjll
NTdkNjcxOGQxZGYzNjJiZDU5YmJhNTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAxOC0xMi0xMCAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUkVHUkVTU0lPTihyMjM4NjAyKTogRWxlbWVudHM6
IGRlbGV0aW5nIG11bHRpcGxlIERPTSBub2RlcyBkb2Vzbid0IHNlbGVjdCB0aGUgbmVhcmVzdCBu
b2RlIGFmdGVyIGRlbGV0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTIxMTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ2MzQ0MzM5PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qczoKKyAgICAgICAgKFdJLkRPTVRyZWVFbGVtZW50
LnByb3RvdHlwZS5fcG9wdWxhdGVOb2RlQ29udGV4dE1lbnUpOgorICAgICAgICAoV0kuRE9NVHJl
ZUVsZW1lbnQucHJvdG90eXBlLm9uZGVsZXRlKTogRGVsZXRlZC4KKyAgICAgICAgVGhlIG1lbnUg
aXRlbSBmb3IgcmVtb3ZpbmcgdGhlIERPTSBub2RlIGlzIG5vdyBtYW5hZ2VkIGJ5IHRoZSBwYXJl
bnQKKyAgICAgICAgRE9NVHJlZU91dGxpbmUsIHNpbmNlIGl0cyBVSSBhbmQgYmVoYXZpb3Igbm93
IGRlcGVuZCBvbiB3aGV0aGVyIHRoZXJlCisgICAgICAgIGFyZSBtdWx0aXBsZSBlbGVtZW50cyBz
ZWxlY3RlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxpbmUu
anM6CisgICAgICAgIChXSS5ET01UcmVlT3V0bGluZSk6CisgICAgICAgIChXSS5ET01UcmVlT3V0
bGluZS5wcm90b3R5cGUucG9wdWxhdGVDb250ZXh0TWVudSk6CisgICAgICAgIChXSS5ET01UcmVl
T3V0bGluZS5wcm90b3R5cGUub25kZWxldGUuaGFzTm9TZWxlY3RlZEFuY2VzdG9ycyk6CisgICAg
ICAgIChXSS5ET01UcmVlT3V0bGluZS5wcm90b3R5cGUub25kZWxldGUpOgorICAgICAgICBJbXBs
ZW1lbnQgYG9uZGVsZXRlYCB0byByZW1vdmUgc2VsZWN0ZWQgRE9NIG5vZGVzIHVzaW5nIHRoZSBk
ZWxldGUgYW5kCisgICAgICAgIGJhY2tzcGFjZSBrZXlzLiBBbHNvIHVzZWQgYnkgdGhlIERPTVRy
ZWVPdXRsaW5lJ3MgY29udGV4dCBtZW51IGhhbmRsZXIuCisKIDIwMTgtMTItMDYgIE1hdHQgQmFr
ZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFRhYmxl
IHNlbGVjdGlvbiBiZWNvbWVzIGNvcnJ1cHRlZCB3aGVuIGRlbGV0aW5nIHNlbGVjdGVkIGNvb2tp
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0RPTVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NVHJlZUVsZW1lbnQuanMKaW5kZXggOTQyYjBjN2VjYTliYzRiMDQ0NDkyZGQ0NTEy
NzJjNzk4YzliOWYzMy4uZDVkMGZhZmU1ZTVmY2RhM2JhOTRlYWFkM2RmMzg1MDQ5ZTJjNjBmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9N
VHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NVHJlZUVsZW1lbnQuanMKQEAgLTYyNSwxOSArNjI1LDYgQEAgV0kuRE9NVHJlZUVs
ZW1lbnQgPSBjbGFzcyBET01UcmVlRWxlbWVudCBleHRlbmRzIFdJLlRyZWVFbGVtZW50CiAgICAg
ICAgIGxpc3RJdGVtRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdJLkRPTVRyZWVFbGVtZW50LkhpZ2hs
aWdodFN0eWxlQ2xhc3NOYW1lKTsKICAgICB9CiAKLSAgICBvbmRlbGV0ZSgpCi0gICAgewotICAg
ICAgICBpZiAoIXRoaXMuZWRpdGFibGUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAgICAgdmFyIHN0YXJ0VGFnVHJlZUVsZW1lbnQgPSB0aGlzLnRyZWVPdXRsaW5lLmZpbmRUcmVl
RWxlbWVudCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKLSAgICAgICAgaWYgKHN0YXJ0VGFnVHJl
ZUVsZW1lbnQpCi0gICAgICAgICAgICBzdGFydFRhZ1RyZWVFbGVtZW50LnJlbW92ZSgpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLnJlbW92ZSgpOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0KICAgICBvbmVudGVyKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5lZGl0
YWJsZSkKQEAgLTgwOCw3ICs3OTUsOSBAQCBXSS5ET01UcmVlRWxlbWVudCA9IGNsYXNzIERPTVRy
ZWVFbGVtZW50IGV4dGVuZHMgV0kuVHJlZUVsZW1lbnQKIAogICAgICAgICBzdWJNZW51cy5lZGl0
LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkhUTUwiKSwgdGhpcy5fZWRpdEFzSFRNTC5iaW5kKHRo
aXMpLCAhdGhpcy5lZGl0YWJsZSk7CiAgICAgICAgIHN1Yk1lbnVzLmNvcHkuYXBwZW5kSXRlbShX
SS5VSVN0cmluZygiSFRNTCIpLCB0aGlzLl9jb3B5SFRNTC5iaW5kKHRoaXMpLCBub2RlLmlzUHNl
dWRvRWxlbWVudCgpKTsKLSAgICAgICAgc3ViTWVudXMuZGVsZXRlLmFwcGVuZEl0ZW0oV0kuVUlT
dHJpbmcoIk5vZGUiKSwgdGhpcy5yZW1vdmUuYmluZCh0aGlzKSwgIXRoaXMuZWRpdGFibGUpOwor
CisgICAgICAgIGlmICghdGhpcy5zZWxlY3RlZCB8fCB0aGlzLnRyZWVPdXRsaW5lLnNlbGVjdGVk
VHJlZUVsZW1lbnRzLmxlbmd0aCA9PT0gMSkKKyAgICAgICAgICAgIHN1Yk1lbnVzLmRlbGV0ZS5h
cHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJOb2RlIiksIHRoaXMucmVtb3ZlLmJpbmQodGhpcyksICF0
aGlzLmVkaXRhYmxlKTsKIAogICAgICAgICBmb3IgKGxldCBzdWJNZW51IG9mIE9iamVjdC52YWx1
ZXMoc3ViTWVudXMpKQogICAgICAgICAgICAgY29udGV4dE1lbnUucHVzaEl0ZW0oc3ViTWVudSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
T01UcmVlT3V0bGluZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0RPTVRyZWVPdXRsaW5lLmpzCmluZGV4IGIzNzg0MzQ1ZDZiM2JkODE2MzdlNjRlYTBkNDI3
NDg5MzlkZTRiMGMuLjUzOWYxZDQ3MDJlMjkwMmNjMWExMjQwNWJmMWE2NGZhZWU2YTc0ZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRy
ZWVPdXRsaW5lLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0RPTVRyZWVPdXRsaW5lLmpzCkBAIC0yNTAsNiArMjUwLDkgQEAgV0kuRE9NVHJlZU91dGxp
bmUgPSBjbGFzcyBET01UcmVlT3V0bGluZSBleHRlbmRzIFdJLlRyZWVPdXRsaW5lCiAgICAgICAg
ICAgICBkZWxldGU6IG5ldyBXSS5Db250ZXh0U3ViTWVudUl0ZW0oY29udGV4dE1lbnUsIFdJLlVJ
U3RyaW5nKCJEZWxldGUiKSksCiAgICAgICAgIH07CiAKKyAgICAgICAgaWYgKHRyZWVFbGVtZW50
LnNlbGVjdGVkICYmIHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudHMubGVuZ3RoID4gMSkKKyAgICAg
ICAgICAgIHN1Yk1lbnVzLmRlbGV0ZS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJOb2RlcyIpLCAo
KSA9PiB7IHRoaXMub25kZWxldGUoKTsgfSwgIXRoaXMuX2VkaXRhYmxlKTsKKwogICAgICAgICBp
ZiAodGFnICYmIHRyZWVFbGVtZW50Ll9wb3B1bGF0ZVRhZ0NvbnRleHRNZW51KQogICAgICAgICAg
ICAgdHJlZUVsZW1lbnQuX3BvcHVsYXRlVGFnQ29udGV4dE1lbnUoY29udGV4dE1lbnUsIGV2ZW50
LCBzdWJNZW51cyk7CiAgICAgICAgIGVsc2UgaWYgKHRleHROb2RlICYmIHRyZWVFbGVtZW50Ll9w
b3B1bGF0ZVRleHRDb250ZXh0TWVudSkKQEAgLTUwMCw2ICs1MDMsMjkgQEAgV0kuRE9NVHJlZU91
dGxpbmUgPSBjbGFzcyBET01UcmVlT3V0bGluZSBleHRlbmRzIFdJLlRyZWVPdXRsaW5lCiAKICAg
ICAgICAgdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LnRvZ2dsZUVsZW1lbnRWaXNpYmlsaXR5KCk7
CiAgICAgfQorCisgICAgb25kZWxldGUoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9lZGl0
YWJsZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBmdW5jdGlvbiBoYXNO
b1NlbGVjdGVkQW5jZXN0b3JzKHRyZWVFbGVtZW50KSB7CisgICAgICAgICAgICB3aGlsZSAodHJl
ZUVsZW1lbnQgPSB0cmVlRWxlbWVudC5wYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBpZiAodHJl
ZUVsZW1lbnQuc2VsZWN0ZWQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAg
ICAgbGV0IHNlbGVjdGVkVHJlZUVsZW1lbnRzID0gdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50cy5m
aWx0ZXIoaGFzTm9TZWxlY3RlZEFuY2VzdG9ycyk7CisKKyAgICAgICAgdGhpcy5fc2VsZWN0aW9u
Q29udHJvbGxlci5yZW1vdmVTZWxlY3RlZEl0ZW1zKCk7CisKKyAgICAgICAgZm9yIChsZXQgdHJl
ZUVsZW1lbnQgb2Ygc2VsZWN0ZWRUcmVlRWxlbWVudHMpCisgICAgICAgICAgICB0cmVlRWxlbWVu
dC5yZW1vdmUoKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiB9OwogCiBXSS5ET01U
cmVlT3V0bGluZS5FdmVudCA9IHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357212</attachid>
            <date>2018-12-12 23:27:29 -0800</date>
            <delta_ts>2018-12-13 13:22:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192116-20181212232713.patch</filename>
            <type>text/plain</type>
            <size>7206</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBj
Y2Y1MzkxNWMzNDdiMjhmYTg5ODQ1OWJlY2IwYmY1ZDYxYzllOTkwLi4zYjYyODk4ZWViZmVlMmIx
Mzg1YzcxYmE3MWZiYzJiM2IxZTFkZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxOC0xMi0xMiAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUkVHUkVTU0lPTihyMjM4NjAyKTogRWxlbWVudHM6
IGRlbGV0aW5nIG11bHRpcGxlIERPTSBub2RlcyBkb2Vzbid0IHNlbGVjdCB0aGUgbmVhcmVzdCBu
b2RlIGFmdGVyIGRlbGV0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTIxMTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ2MzQ0MzM5PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9TZWxlY3Rpb25Db250cm9sbGVyLmpzOgorICAgICAgICAoV0kuU2Vs
ZWN0aW9uQ29udHJvbGxlci5wcm90b3R5cGUucmVtb3ZlU2VsZWN0ZWRJdGVtcyk6CisgICAgICAg
IEZpbmRpbmcgYSBuZXcgaW5kZXggdG8gc2VsZWN0IHNob3VsZCBnbyB0aHJvdWdoIHRoZSBkZWxl
Z2F0ZSBpbnN0ZWFkIG9mCisgICAgICAgIG5haXZlbHkgYWR2YW5jaW5nIHRoZSBpbmRleC4KKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanM6CisgICAgICAg
IChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUuX3BvcHVsYXRlTm9kZUNvbnRleHRNZW51KToK
KyAgICAgICAgKFdJLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmRlbGV0ZSk6IERlbGV0ZWQu
CisgICAgICAgIFRoZSBtZW51IGl0ZW0gZm9yIHJlbW92aW5nIHRoZSBET00gbm9kZSBpcyBub3cg
bWFuYWdlZCBieSB0aGUgcGFyZW50CisgICAgICAgIERPTVRyZWVPdXRsaW5lLCBzaW5jZSBpdHMg
VUkgYW5kIGJlaGF2aW9yIG5vdyBkZXBlbmQgb24gd2hldGhlciB0aGVyZQorICAgICAgICBhcmUg
bXVsdGlwbGUgZWxlbWVudHMgc2VsZWN0ZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL0RPTVRyZWVPdXRsaW5lLmpzOgorICAgICAgICAoV0kuRE9NVHJlZU91dGxpbmUucHJvdG90
eXBlLnBvcHVsYXRlQ29udGV4dE1lbnUpOgorICAgICAgICAoV0kuRE9NVHJlZU91dGxpbmUucHJv
dG90eXBlLm9uZGVsZXRlLmxldmVsKToKKyAgICAgICAgKFdJLkRPTVRyZWVPdXRsaW5lLnByb3Rv
dHlwZS5vbmRlbGV0ZSk6CisgICAgICAgIEltcGxlbWVudCBgb25kZWxldGVgIHRvIHJlbW92ZSBz
ZWxlY3RlZCBET00gbm9kZXMgdXNpbmcgdGhlIGRlbGV0ZSBhbmQKKyAgICAgICAgYmFja3NwYWNl
IGtleXMuIEFsc28gdXNlZCBieSB0aGUgRE9NVHJlZU91dGxpbmUncyBjb250ZXh0IG1lbnUgaGFu
ZGxlci4KKwogMjAxOC0xMi0xMiAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogVGFibGUgc2VsZWN0aW9uIGJlY29tZXMgY29ycnVwdGVk
IHdoZW4gZGVsZXRpbmcgc2VsZWN0ZWQgY29va2llcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvU2VsZWN0aW9uQ29udHJvbGxlci5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1NlbGVj
dGlvbkNvbnRyb2xsZXIuanMKaW5kZXggZDFlOWYzMWE3M2Q2ODIzYTVkYThjYWRhMmU3ZTY0MGY5
MTJhZjdjZS4uNzA2NmEzZGZiZjM3NjkwMzBhOTExYmJlY2I1NjEzZTAxMDQ1ZjQyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvU2Vs
ZWN0aW9uQ29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9TZWxlY3Rpb25Db250cm9sbGVyLmpzCkBAIC0xNzcsMTkgKzE3Nywx
OSBAQCBXSS5TZWxlY3Rpb25Db250cm9sbGVyID0gY2xhc3MgU2VsZWN0aW9uQ29udHJvbGxlciBl
eHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAgIC8vIFRyeSBzZWxlY3RpbmcgdGhlIGl0ZW0gZm9s
bG93aW5nIHRoZSBzZWxlY3Rpb24uCiAgICAgICAgIGxldCBsYXN0U2VsZWN0ZWRJbmRleCA9IHRo
aXMuX3NlbGVjdGVkSW5kZXhlcy5sYXN0SW5kZXg7Ci0gICAgICAgIGxldCBpbmRleFRvU2VsZWN0
ID0gbGFzdFNlbGVjdGVkSW5kZXggKyAxOwotICAgICAgICBpZiAoaW5kZXhUb1NlbGVjdCA9PT0g
dGhpcy5udW1iZXJPZkl0ZW1zKSB7CisgICAgICAgIGxldCBpbmRleFRvU2VsZWN0ID0gdGhpcy5f
bmV4dFNlbGVjdGFibGVJbmRleChsYXN0U2VsZWN0ZWRJbmRleCk7CisgICAgICAgIGlmIChpc05h
TihpbmRleFRvU2VsZWN0KSkgewogICAgICAgICAgICAgLy8gSWYgbm8gaXRlbSBleGlzdHMgYWZ0
ZXIgdGhlIGxhc3QgaXRlbSBpbiB0aGUgc2VsZWN0aW9uLCB0cnkgc2VsZWN0aW5nCiAgICAgICAg
ICAgICAvLyBhIGRlc2VsZWN0ZWQgaXRlbSAoaG9sZSkgd2l0aGluIHRoZSBzZWxlY3Rpb24uCiAg
ICAgICAgICAgICBsZXQgZmlyc3RTZWxlY3RlZEluZGV4ID0gdGhpcy5fc2VsZWN0ZWRJbmRleGVz
LmZpcnN0SW5kZXg7CiAgICAgICAgICAgICBpZiAobGFzdFNlbGVjdGVkSW5kZXggLSBmaXJzdFNl
bGVjdGVkSW5kZXggPiBudW1iZXJPZlNlbGVjdGVkSXRlbXMpIHsKLSAgICAgICAgICAgICAgICBp
bmRleFRvU2VsZWN0ID0gdGhpcy5fc2VsZWN0ZWRJbmRleGVzLmZpcnN0SW5kZXggKyAxOworICAg
ICAgICAgICAgICAgIGluZGV4VG9TZWxlY3QgPSB0aGlzLl9uZXh0U2VsZWN0YWJsZUluZGV4KGZp
cnN0U2VsZWN0ZWRJbmRleCk7CiAgICAgICAgICAgICAgICAgd2hpbGUgKHRoaXMuX3NlbGVjdGVk
SW5kZXhlcy5oYXMoaW5kZXhUb1NlbGVjdCkpCi0gICAgICAgICAgICAgICAgICAgIGluZGV4VG9T
ZWxlY3QrKzsKKyAgICAgICAgICAgICAgICAgICAgaW5kZXhUb1NlbGVjdCA9IHRoaXMuX25leHRT
ZWxlY3RhYmxlSW5kZXgoZmlyc3RTZWxlY3RlZEluZGV4KTsKICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHNlbGVjdGlvbiBjb250YWlucyBubyBob2xlcywg
dHJ5IHNlbGVjdGluZyB0aGUgaXRlbQogICAgICAgICAgICAgICAgIC8vIHByZWNlZGluZyB0aGUg
c2VsZWN0aW9uLgotICAgICAgICAgICAgICAgIGluZGV4VG9TZWxlY3QgPSBmaXJzdFNlbGVjdGVk
SW5kZXggPiAwID8gZmlyc3RTZWxlY3RlZEluZGV4IC0gMSA6IE5hTjsKKyAgICAgICAgICAgICAg
ICBpbmRleFRvU2VsZWN0ID0gZmlyc3RTZWxlY3RlZEluZGV4ID4gMCA/IHRoaXMuX3ByZXZpb3Vz
U2VsZWN0YWJsZUluZGV4KGZpcnN0U2VsZWN0ZWRJbmRleCkgOiBOYU47CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcwppbmRleCA5NDJiMGM3ZWNhOWJjNGIw
NDQ0OTJkZDQ1MTI3MmM3OThjOWI5ZjMzLi5kNWQwZmFmZTVlNWZjZGEzYmE5NGVhYWQzZGYzODUw
NDllMmM2MGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcwpAQCAtNjI1LDE5ICs2MjUsNiBAQCBX
SS5ET01UcmVlRWxlbWVudCA9IGNsYXNzIERPTVRyZWVFbGVtZW50IGV4dGVuZHMgV0kuVHJlZUVs
ZW1lbnQKICAgICAgICAgbGlzdEl0ZW1FbGVtZW50LmNsYXNzTGlzdC5hZGQoV0kuRE9NVHJlZUVs
ZW1lbnQuSGlnaGxpZ2h0U3R5bGVDbGFzc05hbWUpOwogICAgIH0KIAotICAgIG9uZGVsZXRlKCkK
LSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5lZGl0YWJsZSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgICAgICB2YXIgc3RhcnRUYWdUcmVlRWxlbWVudCA9IHRoaXMudHJlZU91dGxp
bmUuZmluZFRyZWVFbGVtZW50KHRoaXMucmVwcmVzZW50ZWRPYmplY3QpOwotICAgICAgICBpZiAo
c3RhcnRUYWdUcmVlRWxlbWVudCkKLSAgICAgICAgICAgIHN0YXJ0VGFnVHJlZUVsZW1lbnQucmVt
b3ZlKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMucmVtb3ZlKCk7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLQogICAgIG9uZW50ZXIoKQogICAgIHsKICAgICAgICAgaWYg
KCF0aGlzLmVkaXRhYmxlKQpAQCAtODA4LDcgKzc5NSw5IEBAIFdJLkRPTVRyZWVFbGVtZW50ID0g
Y2xhc3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5UcmVlRWxlbWVudAogCiAgICAgICAgIHN1
Yk1lbnVzLmVkaXQuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiSFRNTCIpLCB0aGlzLl9lZGl0QXNI
VE1MLmJpbmQodGhpcyksICF0aGlzLmVkaXRhYmxlKTsKICAgICAgICAgc3ViTWVudXMuY29weS5h
cHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJIVE1MIiksIHRoaXMuX2NvcHlIVE1MLmJpbmQodGhpcyks
IG5vZGUuaXNQc2V1ZG9FbGVtZW50KCkpOwotICAgICAgICBzdWJNZW51cy5kZWxldGUuYXBwZW5k
SXRlbShXSS5VSVN0cmluZygiTm9kZSIpLCB0aGlzLnJlbW92ZS5iaW5kKHRoaXMpLCAhdGhpcy5l
ZGl0YWJsZSk7CisKKyAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkIHx8IHRoaXMudHJlZU91dGxp
bmUuc2VsZWN0ZWRUcmVlRWxlbWVudHMubGVuZ3RoID09PSAxKQorICAgICAgICAgICAgc3ViTWVu
dXMuZGVsZXRlLmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIk5vZGUiKSwgdGhpcy5yZW1vdmUuYmlu
ZCh0aGlzKSwgIXRoaXMuZWRpdGFibGUpOwogCiAgICAgICAgIGZvciAobGV0IHN1Yk1lbnUgb2Yg
T2JqZWN0LnZhbHVlcyhzdWJNZW51cykpCiAgICAgICAgICAgICBjb250ZXh0TWVudS5wdXNoSXRl
bShzdWJNZW51KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5lLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanMKaW5kZXggYjM3ODQzNDVkNmIzYmQ4MTYz
N2U2NGVhMGQ0Mjc0ODkzOWRlNGIwYy4uNWJjYjQ0MDc4ODFjYmIwODk0MTg3ZjVlMTFiZDVlZTQ5
ZWVjNTk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NVHJlZU91dGxpbmUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanMKQEAgLTI1MCw2ICsyNTAsOSBAQCBXSS5E
T01UcmVlT3V0bGluZSA9IGNsYXNzIERPTVRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuVHJlZU91dGxp
bmUKICAgICAgICAgICAgIGRlbGV0ZTogbmV3IFdJLkNvbnRleHRTdWJNZW51SXRlbShjb250ZXh0
TWVudSwgV0kuVUlTdHJpbmcoIkRlbGV0ZSIpKSwKICAgICAgICAgfTsKIAorICAgICAgICBpZiAo
dHJlZUVsZW1lbnQuc2VsZWN0ZWQgJiYgdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50cy5sZW5ndGgg
PiAxKQorICAgICAgICAgICAgc3ViTWVudXMuZGVsZXRlLmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmco
Ik5vZGVzIiksICgpID0+IHsgdGhpcy5vbmRlbGV0ZSgpOyB9LCAhdGhpcy5fZWRpdGFibGUpOwor
CiAgICAgICAgIGlmICh0YWcgJiYgdHJlZUVsZW1lbnQuX3BvcHVsYXRlVGFnQ29udGV4dE1lbnUp
CiAgICAgICAgICAgICB0cmVlRWxlbWVudC5fcG9wdWxhdGVUYWdDb250ZXh0TWVudShjb250ZXh0
TWVudSwgZXZlbnQsIHN1Yk1lbnVzKTsKICAgICAgICAgZWxzZSBpZiAodGV4dE5vZGUgJiYgdHJl
ZUVsZW1lbnQuX3BvcHVsYXRlVGV4dENvbnRleHRNZW51KQpAQCAtMjcwLDYgKzI3MywzNyBAQCBX
SS5ET01UcmVlT3V0bGluZSA9IGNsYXNzIERPTVRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuVHJlZU91
dGxpbmUKICAgICB7CiAgICAgfQogCisgICAgb25kZWxldGUoKQorICAgIHsKKyAgICAgICAgaWYg
KCF0aGlzLl9lZGl0YWJsZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBs
ZXQgc2VsZWN0ZWRUcmVlRWxlbWVudHMgPSB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnRzOworICAg
ICAgICB0aGlzLl9zZWxlY3Rpb25Db250cm9sbGVyLnJlbW92ZVNlbGVjdGVkSXRlbXMoKTsKKwor
ICAgICAgICBsZXQgbGV2ZWxNYXAgPSBuZXcgTWFwOworCisgICAgICAgIGZ1bmN0aW9uIGxldmVs
KGVsZW1lbnQpIHsKKyAgICAgICAgICAgIGlmICghbGV2ZWxNYXAuaGFzKGVsZW1lbnQpKSB7Cisg
ICAgICAgICAgICAgICAgbGV0IGxldmVsID0gMDsKKyAgICAgICAgICAgICAgICBsZXQgY3VycmVu
dCA9IGVsZW1lbnQ7CisgICAgICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnQgPSBjdXJyZW50LnBh
cmVudCkKKyAgICAgICAgICAgICAgICAgICAgbGV2ZWwrKzsKKyAgICAgICAgICAgICAgICBsZXZl
bE1hcC5zZXQoZWxlbWVudCwgbGV2ZWwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0
dXJuIGxldmVsTWFwLmdldChlbGVtZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFNvcnQg
aW4gZGVzY2VuZGluZyBvcmRlciBieSBub2RlIGxldmVsLiBUaGlzIGVuc3VyZXMgdGhhdCBjaGls
ZCBub2RlcworICAgICAgICAvLyBhcmUgcmVtb3ZlZCBiZWZvcmUgdGhlaXIgYW5jZXN0b3JzLgor
ICAgICAgICBzZWxlY3RlZFRyZWVFbGVtZW50cy5zb3J0KChhLCBiKSA9PiBsZXZlbChiKSAtIGxl
dmVsKGEpKTsKKworICAgICAgICBmb3IgKGxldCB0cmVlRWxlbWVudCBvZiBzZWxlY3RlZFRyZWVF
bGVtZW50cykKKyAgICAgICAgICAgIHRyZWVFbGVtZW50LnJlbW92ZSgpOworCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKwogICAgIC8vIFByaXZhdGUKIAogICAgIF9yZXZlYWxBbmRTZWxl
Y3ROb2RlKG5vZGUsIG9taXRGb2N1cykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357248</attachid>
            <date>2018-12-13 13:22:07 -0800</date>
            <delta_ts>2018-12-13 13:50:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192116-20181213132149.patch</filename>
            <type>text/plain</type>
            <size>7523</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBj
Y2Y1MzkxNWMzNDdiMjhmYTg5ODQ1OWJlY2IwYmY1ZDYxYzllOTkwLi5jOTNkNmI4MDVjMjc3Mzhl
MWMwOWE2OTM5ZWZiNmYyNTE0ZDU0M2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxOC0xMi0xMyAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUkVHUkVTU0lPTihyMjM4NjAyKTogRWxlbWVudHM6
IGRlbGV0aW5nIG11bHRpcGxlIERPTSBub2RlcyBkb2Vzbid0IHNlbGVjdCB0aGUgbmVhcmVzdCBu
b2RlIGFmdGVyIGRlbGV0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTIxMTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ2MzQ0MzM5PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9TZWxlY3Rpb25Db250cm9sbGVyLmpzOgorICAgICAgICAoV0kuU2Vs
ZWN0aW9uQ29udHJvbGxlci5wcm90b3R5cGUucmVtb3ZlU2VsZWN0ZWRJdGVtcyk6CisgICAgICAg
IEZpbmRpbmcgYSBuZXcgaW5kZXggdG8gc2VsZWN0IHNob3VsZCBnbyB0aHJvdWdoIHRoZSBkZWxl
Z2F0ZSBpbnN0ZWFkIG9mCisgICAgICAgIG5haXZlbHkgYWR2YW5jaW5nIHRoZSBpbmRleC4KKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanM6CisgICAgICAg
IChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUuX3BvcHVsYXRlTm9kZUNvbnRleHRNZW51KToK
KyAgICAgICAgKFdJLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmRlbGV0ZSk6IERlbGV0ZWQu
CisgICAgICAgIFRoZSBtZW51IGl0ZW0gZm9yIHJlbW92aW5nIHRoZSBET00gbm9kZSBpcyBub3cg
bWFuYWdlZCBieSB0aGUgcGFyZW50CisgICAgICAgIERPTVRyZWVPdXRsaW5lLCBzaW5jZSBpdHMg
VUkgYW5kIGJlaGF2aW9yIG5vdyBkZXBlbmQgb24gd2hldGhlciB0aGVyZQorICAgICAgICBhcmUg
bXVsdGlwbGUgZWxlbWVudHMgc2VsZWN0ZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL0RPTVRyZWVPdXRsaW5lLmpzOgorICAgICAgICAoV0kuRE9NVHJlZU91dGxpbmUucHJvdG90
eXBlLnBvcHVsYXRlQ29udGV4dE1lbnUpOgorICAgICAgICAoV0kuRE9NVHJlZU91dGxpbmUucHJv
dG90eXBlLm9uZGVsZXRlLmxldmVsKToKKyAgICAgICAgKFdJLkRPTVRyZWVPdXRsaW5lLnByb3Rv
dHlwZS5vbmRlbGV0ZSk6CisgICAgICAgIEltcGxlbWVudCBgb25kZWxldGVgIHRvIHJlbW92ZSBz
ZWxlY3RlZCBET00gbm9kZXMgdXNpbmcgdGhlIGRlbGV0ZSBhbmQKKyAgICAgICAgYmFja3NwYWNl
IGtleXMuIEFsc28gdXNlZCBieSB0aGUgRE9NVHJlZU91dGxpbmUncyBjb250ZXh0IG1lbnUgaGFu
ZGxlci4KKwogMjAxOC0xMi0xMiAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogVGFibGUgc2VsZWN0aW9uIGJlY29tZXMgY29ycnVwdGVk
IHdoZW4gZGVsZXRpbmcgc2VsZWN0ZWQgY29va2llcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvU2VsZWN0aW9uQ29udHJvbGxlci5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1NlbGVj
dGlvbkNvbnRyb2xsZXIuanMKaW5kZXggZDFlOWYzMWE3M2Q2ODIzYTVkYThjYWRhMmU3ZTY0MGY5
MTJhZjdjZS4uNzA2NmEzZGZiZjM3NjkwMzBhOTExYmJlY2I1NjEzZTAxMDQ1ZjQyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvU2Vs
ZWN0aW9uQ29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9TZWxlY3Rpb25Db250cm9sbGVyLmpzCkBAIC0xNzcsMTkgKzE3Nywx
OSBAQCBXSS5TZWxlY3Rpb25Db250cm9sbGVyID0gY2xhc3MgU2VsZWN0aW9uQ29udHJvbGxlciBl
eHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAgIC8vIFRyeSBzZWxlY3RpbmcgdGhlIGl0ZW0gZm9s
bG93aW5nIHRoZSBzZWxlY3Rpb24uCiAgICAgICAgIGxldCBsYXN0U2VsZWN0ZWRJbmRleCA9IHRo
aXMuX3NlbGVjdGVkSW5kZXhlcy5sYXN0SW5kZXg7Ci0gICAgICAgIGxldCBpbmRleFRvU2VsZWN0
ID0gbGFzdFNlbGVjdGVkSW5kZXggKyAxOwotICAgICAgICBpZiAoaW5kZXhUb1NlbGVjdCA9PT0g
dGhpcy5udW1iZXJPZkl0ZW1zKSB7CisgICAgICAgIGxldCBpbmRleFRvU2VsZWN0ID0gdGhpcy5f
bmV4dFNlbGVjdGFibGVJbmRleChsYXN0U2VsZWN0ZWRJbmRleCk7CisgICAgICAgIGlmIChpc05h
TihpbmRleFRvU2VsZWN0KSkgewogICAgICAgICAgICAgLy8gSWYgbm8gaXRlbSBleGlzdHMgYWZ0
ZXIgdGhlIGxhc3QgaXRlbSBpbiB0aGUgc2VsZWN0aW9uLCB0cnkgc2VsZWN0aW5nCiAgICAgICAg
ICAgICAvLyBhIGRlc2VsZWN0ZWQgaXRlbSAoaG9sZSkgd2l0aGluIHRoZSBzZWxlY3Rpb24uCiAg
ICAgICAgICAgICBsZXQgZmlyc3RTZWxlY3RlZEluZGV4ID0gdGhpcy5fc2VsZWN0ZWRJbmRleGVz
LmZpcnN0SW5kZXg7CiAgICAgICAgICAgICBpZiAobGFzdFNlbGVjdGVkSW5kZXggLSBmaXJzdFNl
bGVjdGVkSW5kZXggPiBudW1iZXJPZlNlbGVjdGVkSXRlbXMpIHsKLSAgICAgICAgICAgICAgICBp
bmRleFRvU2VsZWN0ID0gdGhpcy5fc2VsZWN0ZWRJbmRleGVzLmZpcnN0SW5kZXggKyAxOworICAg
ICAgICAgICAgICAgIGluZGV4VG9TZWxlY3QgPSB0aGlzLl9uZXh0U2VsZWN0YWJsZUluZGV4KGZp
cnN0U2VsZWN0ZWRJbmRleCk7CiAgICAgICAgICAgICAgICAgd2hpbGUgKHRoaXMuX3NlbGVjdGVk
SW5kZXhlcy5oYXMoaW5kZXhUb1NlbGVjdCkpCi0gICAgICAgICAgICAgICAgICAgIGluZGV4VG9T
ZWxlY3QrKzsKKyAgICAgICAgICAgICAgICAgICAgaW5kZXhUb1NlbGVjdCA9IHRoaXMuX25leHRT
ZWxlY3RhYmxlSW5kZXgoZmlyc3RTZWxlY3RlZEluZGV4KTsKICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHNlbGVjdGlvbiBjb250YWlucyBubyBob2xlcywg
dHJ5IHNlbGVjdGluZyB0aGUgaXRlbQogICAgICAgICAgICAgICAgIC8vIHByZWNlZGluZyB0aGUg
c2VsZWN0aW9uLgotICAgICAgICAgICAgICAgIGluZGV4VG9TZWxlY3QgPSBmaXJzdFNlbGVjdGVk
SW5kZXggPiAwID8gZmlyc3RTZWxlY3RlZEluZGV4IC0gMSA6IE5hTjsKKyAgICAgICAgICAgICAg
ICBpbmRleFRvU2VsZWN0ID0gZmlyc3RTZWxlY3RlZEluZGV4ID4gMCA/IHRoaXMuX3ByZXZpb3Vz
U2VsZWN0YWJsZUluZGV4KGZpcnN0U2VsZWN0ZWRJbmRleCkgOiBOYU47CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcwppbmRleCA5NDJiMGM3ZWNhOWJjNGIw
NDQ0OTJkZDQ1MTI3MmM3OThjOWI5ZjMzLi5kNWQwZmFmZTVlNWZjZGEzYmE5NGVhYWQzZGYzODUw
NDllMmM2MGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcwpAQCAtNjI1LDE5ICs2MjUsNiBAQCBX
SS5ET01UcmVlRWxlbWVudCA9IGNsYXNzIERPTVRyZWVFbGVtZW50IGV4dGVuZHMgV0kuVHJlZUVs
ZW1lbnQKICAgICAgICAgbGlzdEl0ZW1FbGVtZW50LmNsYXNzTGlzdC5hZGQoV0kuRE9NVHJlZUVs
ZW1lbnQuSGlnaGxpZ2h0U3R5bGVDbGFzc05hbWUpOwogICAgIH0KIAotICAgIG9uZGVsZXRlKCkK
LSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5lZGl0YWJsZSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgICAgICB2YXIgc3RhcnRUYWdUcmVlRWxlbWVudCA9IHRoaXMudHJlZU91dGxp
bmUuZmluZFRyZWVFbGVtZW50KHRoaXMucmVwcmVzZW50ZWRPYmplY3QpOwotICAgICAgICBpZiAo
c3RhcnRUYWdUcmVlRWxlbWVudCkKLSAgICAgICAgICAgIHN0YXJ0VGFnVHJlZUVsZW1lbnQucmVt
b3ZlKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMucmVtb3ZlKCk7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLQogICAgIG9uZW50ZXIoKQogICAgIHsKICAgICAgICAgaWYg
KCF0aGlzLmVkaXRhYmxlKQpAQCAtODA4LDcgKzc5NSw5IEBAIFdJLkRPTVRyZWVFbGVtZW50ID0g
Y2xhc3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5UcmVlRWxlbWVudAogCiAgICAgICAgIHN1
Yk1lbnVzLmVkaXQuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiSFRNTCIpLCB0aGlzLl9lZGl0QXNI
VE1MLmJpbmQodGhpcyksICF0aGlzLmVkaXRhYmxlKTsKICAgICAgICAgc3ViTWVudXMuY29weS5h
cHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJIVE1MIiksIHRoaXMuX2NvcHlIVE1MLmJpbmQodGhpcyks
IG5vZGUuaXNQc2V1ZG9FbGVtZW50KCkpOwotICAgICAgICBzdWJNZW51cy5kZWxldGUuYXBwZW5k
SXRlbShXSS5VSVN0cmluZygiTm9kZSIpLCB0aGlzLnJlbW92ZS5iaW5kKHRoaXMpLCAhdGhpcy5l
ZGl0YWJsZSk7CisKKyAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkIHx8IHRoaXMudHJlZU91dGxp
bmUuc2VsZWN0ZWRUcmVlRWxlbWVudHMubGVuZ3RoID09PSAxKQorICAgICAgICAgICAgc3ViTWVu
dXMuZGVsZXRlLmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIk5vZGUiKSwgdGhpcy5yZW1vdmUuYmlu
ZCh0aGlzKSwgIXRoaXMuZWRpdGFibGUpOwogCiAgICAgICAgIGZvciAobGV0IHN1Yk1lbnUgb2Yg
T2JqZWN0LnZhbHVlcyhzdWJNZW51cykpCiAgICAgICAgICAgICBjb250ZXh0TWVudS5wdXNoSXRl
bShzdWJNZW51KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5lLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanMKaW5kZXggYjM3ODQzNDVkNmIzYmQ4MTYz
N2U2NGVhMGQ0Mjc0ODkzOWRlNGIwYy4uNDM3ZjM1YWM2NGFjOWQyMGNlYWY5NmY3ZjkyNzcxMGNi
YzVjMzU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NVHJlZU91dGxpbmUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanMKQEAgLTI1MCw2ICsyNTAsOSBAQCBXSS5E
T01UcmVlT3V0bGluZSA9IGNsYXNzIERPTVRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuVHJlZU91dGxp
bmUKICAgICAgICAgICAgIGRlbGV0ZTogbmV3IFdJLkNvbnRleHRTdWJNZW51SXRlbShjb250ZXh0
TWVudSwgV0kuVUlTdHJpbmcoIkRlbGV0ZSIpKSwKICAgICAgICAgfTsKIAorICAgICAgICBpZiAo
dHJlZUVsZW1lbnQuc2VsZWN0ZWQgJiYgdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50cy5sZW5ndGgg
PiAxKQorICAgICAgICAgICAgc3ViTWVudXMuZGVsZXRlLmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmco
Ik5vZGVzIiksICgpID0+IHsgdGhpcy5vbmRlbGV0ZSgpOyB9LCAhdGhpcy5fZWRpdGFibGUpOwor
CiAgICAgICAgIGlmICh0YWcgJiYgdHJlZUVsZW1lbnQuX3BvcHVsYXRlVGFnQ29udGV4dE1lbnUp
CiAgICAgICAgICAgICB0cmVlRWxlbWVudC5fcG9wdWxhdGVUYWdDb250ZXh0TWVudShjb250ZXh0
TWVudSwgZXZlbnQsIHN1Yk1lbnVzKTsKICAgICAgICAgZWxzZSBpZiAodGV4dE5vZGUgJiYgdHJl
ZUVsZW1lbnQuX3BvcHVsYXRlVGV4dENvbnRleHRNZW51KQpAQCAtMjcwLDYgKzI3Myw0NSBAQCBX
SS5ET01UcmVlT3V0bGluZSA9IGNsYXNzIERPTVRyZWVPdXRsaW5lIGV4dGVuZHMgV0kuVHJlZU91
dGxpbmUKICAgICB7CiAgICAgfQogCisgICAgb25kZWxldGUoKQorICAgIHsKKyAgICAgICAgaWYg
KCF0aGlzLl9lZGl0YWJsZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBs
ZXQgc2VsZWN0ZWRUcmVlRWxlbWVudHMgPSB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnRzOworICAg
ICAgICB0aGlzLl9zZWxlY3Rpb25Db250cm9sbGVyLnJlbW92ZVNlbGVjdGVkSXRlbXMoKTsKKwor
ICAgICAgICBsZXQgbGV2ZWxNYXAgPSBuZXcgTWFwOworCisgICAgICAgIGZ1bmN0aW9uIGxldmVs
KGVsZW1lbnQpIHsKKyAgICAgICAgICAgIGlmICghbGV2ZWxNYXAuaGFzKGVsZW1lbnQpKSB7Cisg
ICAgICAgICAgICAgICAgbGV0IGxldmVsID0gMDsKKyAgICAgICAgICAgICAgICBsZXQgY3VycmVu
dCA9IGVsZW1lbnQ7CisgICAgICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnQgPSBjdXJyZW50LnBh
cmVudCkKKyAgICAgICAgICAgICAgICAgICAgbGV2ZWwrKzsKKyAgICAgICAgICAgICAgICBsZXZl
bE1hcC5zZXQoZWxlbWVudCwgbGV2ZWwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0
dXJuIGxldmVsTWFwLmdldChlbGVtZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFNvcnQg
aW4gZGVzY2VuZGluZyBvcmRlciBieSBub2RlIGxldmVsLiBUaGlzIGVuc3VyZXMgdGhhdCBjaGls
ZCBub2RlcworICAgICAgICAvLyBhcmUgcmVtb3ZlZCBiZWZvcmUgdGhlaXIgYW5jZXN0b3JzLgor
ICAgICAgICBzZWxlY3RlZFRyZWVFbGVtZW50cy5zb3J0KChhLCBiKSA9PiBsZXZlbChiKSAtIGxl
dmVsKGEpKTsKKworICAgICAgICAvLyBUcmFjayByZW1vdmVkIGVsZW1lbnRzLCBzaW5jZSB0aGUg
b3BlbmluZyBhbmQgY2xvc2luZyB0YWdzIGZvciB0aGUKKyAgICAgICAgLy8gc2FtZSBET01Ob2Rl
IGNhbiBib3RoIGJlIHNlbGVjdGVkLgorICAgICAgICBsZXQgcmVtb3ZlZFRyZWVFbGVtZW50cyA9
IG5ldyBTZXQ7CisKKyAgICAgICAgZm9yIChsZXQgdHJlZUVsZW1lbnQgb2Ygc2VsZWN0ZWRUcmVl
RWxlbWVudHMpIHsKKyAgICAgICAgICAgIGlmIChyZW1vdmVkVHJlZUVsZW1lbnRzLmhhcyh0cmVl
RWxlbWVudCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZW1vdmVk
VHJlZUVsZW1lbnRzLmFkZCh0cmVlRWxlbWVudCkKKyAgICAgICAgICAgIHRyZWVFbGVtZW50LnJl
bW92ZSgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAg
Ly8gUHJpdmF0ZQogCiAgICAgX3JldmVhbEFuZFNlbGVjdE5vZGUobm9kZSwgb21pdEZvY3VzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357249</attachid>
            <date>2018-12-13 13:50:39 -0800</date>
            <delta_ts>2018-12-13 14:29:14 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-192116-20181213135021.patch</filename>
            <type>text/plain</type>
            <size>7567</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBj
Y2Y1MzkxNWMzNDdiMjhmYTg5ODQ1OWJlY2IwYmY1ZDYxYzllOTkwLi5mNGNjMjViOTA3MWY1MGU3
YjI0NTQ4NDJjMTQ2ZmRjY2VjZjgzNmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxOC0xMi0xMyAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUkVHUkVTU0lPTihyMjM4NjAyKTogRWxlbWVudHM6
IGRlbGV0aW5nIG11bHRpcGxlIERPTSBub2RlcyBkb2Vzbid0IHNlbGVjdCB0aGUgbmVhcmVzdCBu
b2RlIGFmdGVyIGRlbGV0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTIxMTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ2MzQ0MzM5PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IERldmluIFJvdXNzby4KKworICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvU2VsZWN0aW9uQ29udHJvbGxlci5qczoKKyAgICAgICAgKFdJLlNlbGVj
dGlvbkNvbnRyb2xsZXIucHJvdG90eXBlLnJlbW92ZVNlbGVjdGVkSXRlbXMpOgorICAgICAgICBG
aW5kaW5nIGEgbmV3IGluZGV4IHRvIHNlbGVjdCBzaG91bGQgZ28gdGhyb3VnaCB0aGUgZGVsZWdh
dGUgaW5zdGVhZCBvZgorICAgICAgICBuYWl2ZWx5IGFkdmFuY2luZyB0aGUgaW5kZXguCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzOgorICAgICAgICAo
V0kuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlLl9wb3B1bGF0ZU5vZGVDb250ZXh0TWVudSk6Cisg
ICAgICAgIChXSS5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUub25kZWxldGUpOiBEZWxldGVkLgor
ICAgICAgICBUaGUgbWVudSBpdGVtIGZvciByZW1vdmluZyB0aGUgRE9NIG5vZGUgaXMgbm93IG1h
bmFnZWQgYnkgdGhlIHBhcmVudAorICAgICAgICBET01UcmVlT3V0bGluZSwgc2luY2UgaXRzIFVJ
IGFuZCBiZWhhdmlvciBub3cgZGVwZW5kIG9uIHdoZXRoZXIgdGhlcmUKKyAgICAgICAgYXJlIG11
bHRpcGxlIGVsZW1lbnRzIHNlbGVjdGVkLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9ET01UcmVlT3V0bGluZS5qczoKKyAgICAgICAgKFdJLkRPTVRyZWVPdXRsaW5lLnByb3RvdHlw
ZS5wb3B1bGF0ZUNvbnRleHRNZW51KToKKyAgICAgICAgKFdJLkRPTVRyZWVPdXRsaW5lLnByb3Rv
dHlwZS5vbmRlbGV0ZS5sZXZlbCk6CisgICAgICAgIChXSS5ET01UcmVlT3V0bGluZS5wcm90b3R5
cGUub25kZWxldGUpOgorICAgICAgICBJbXBsZW1lbnQgYG9uZGVsZXRlYCB0byByZW1vdmUgc2Vs
ZWN0ZWQgRE9NIG5vZGVzIHVzaW5nIHRoZSBkZWxldGUgYW5kCisgICAgICAgIGJhY2tzcGFjZSBr
ZXlzLiBBbHNvIHVzZWQgYnkgdGhlIERPTVRyZWVPdXRsaW5lJ3MgY29udGV4dCBtZW51IGhhbmRs
ZXIuCisKIDIwMTgtMTItMTIgIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFRhYmxlIHNlbGVjdGlvbiBiZWNvbWVzIGNvcnJ1cHRlZCB3
aGVuIGRlbGV0aW5nIHNlbGVjdGVkIGNvb2tpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1NlbGVjdGlvbkNvbnRyb2xsZXIuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9TZWxlY3Rp
b25Db250cm9sbGVyLmpzCmluZGV4IGQxZTlmMzFhNzNkNjgyM2E1ZGE4Y2FkYTJlN2U2NDBmOTEy
YWY3Y2UuLjcwNjZhM2RmYmYzNzY5MDMwYTkxMWJiZWNiNTYxM2UwMTA0NWY0MjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1NlbGVj
dGlvbkNvbnRyb2xsZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvU2VsZWN0aW9uQ29udHJvbGxlci5qcwpAQCAtMTc3LDE5ICsxNzcsMTkg
QEAgV0kuU2VsZWN0aW9uQ29udHJvbGxlciA9IGNsYXNzIFNlbGVjdGlvbkNvbnRyb2xsZXIgZXh0
ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICAvLyBUcnkgc2VsZWN0aW5nIHRoZSBpdGVtIGZvbGxv
d2luZyB0aGUgc2VsZWN0aW9uLgogICAgICAgICBsZXQgbGFzdFNlbGVjdGVkSW5kZXggPSB0aGlz
Ll9zZWxlY3RlZEluZGV4ZXMubGFzdEluZGV4OwotICAgICAgICBsZXQgaW5kZXhUb1NlbGVjdCA9
IGxhc3RTZWxlY3RlZEluZGV4ICsgMTsKLSAgICAgICAgaWYgKGluZGV4VG9TZWxlY3QgPT09IHRo
aXMubnVtYmVyT2ZJdGVtcykgeworICAgICAgICBsZXQgaW5kZXhUb1NlbGVjdCA9IHRoaXMuX25l
eHRTZWxlY3RhYmxlSW5kZXgobGFzdFNlbGVjdGVkSW5kZXgpOworICAgICAgICBpZiAoaXNOYU4o
aW5kZXhUb1NlbGVjdCkpIHsKICAgICAgICAgICAgIC8vIElmIG5vIGl0ZW0gZXhpc3RzIGFmdGVy
IHRoZSBsYXN0IGl0ZW0gaW4gdGhlIHNlbGVjdGlvbiwgdHJ5IHNlbGVjdGluZwogICAgICAgICAg
ICAgLy8gYSBkZXNlbGVjdGVkIGl0ZW0gKGhvbGUpIHdpdGhpbiB0aGUgc2VsZWN0aW9uLgogICAg
ICAgICAgICAgbGV0IGZpcnN0U2VsZWN0ZWRJbmRleCA9IHRoaXMuX3NlbGVjdGVkSW5kZXhlcy5m
aXJzdEluZGV4OwogICAgICAgICAgICAgaWYgKGxhc3RTZWxlY3RlZEluZGV4IC0gZmlyc3RTZWxl
Y3RlZEluZGV4ID4gbnVtYmVyT2ZTZWxlY3RlZEl0ZW1zKSB7Ci0gICAgICAgICAgICAgICAgaW5k
ZXhUb1NlbGVjdCA9IHRoaXMuX3NlbGVjdGVkSW5kZXhlcy5maXJzdEluZGV4ICsgMTsKKyAgICAg
ICAgICAgICAgICBpbmRleFRvU2VsZWN0ID0gdGhpcy5fbmV4dFNlbGVjdGFibGVJbmRleChmaXJz
dFNlbGVjdGVkSW5kZXgpOwogICAgICAgICAgICAgICAgIHdoaWxlICh0aGlzLl9zZWxlY3RlZElu
ZGV4ZXMuaGFzKGluZGV4VG9TZWxlY3QpKQotICAgICAgICAgICAgICAgICAgICBpbmRleFRvU2Vs
ZWN0Kys7CisgICAgICAgICAgICAgICAgICAgIGluZGV4VG9TZWxlY3QgPSB0aGlzLl9uZXh0U2Vs
ZWN0YWJsZUluZGV4KGZpcnN0U2VsZWN0ZWRJbmRleCk7CiAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgIC8vIElmIHRoZSBzZWxlY3Rpb24gY29udGFpbnMgbm8gaG9sZXMsIHRy
eSBzZWxlY3RpbmcgdGhlIGl0ZW0KICAgICAgICAgICAgICAgICAvLyBwcmVjZWRpbmcgdGhlIHNl
bGVjdGlvbi4KLSAgICAgICAgICAgICAgICBpbmRleFRvU2VsZWN0ID0gZmlyc3RTZWxlY3RlZElu
ZGV4ID4gMCA/IGZpcnN0U2VsZWN0ZWRJbmRleCAtIDEgOiBOYU47CisgICAgICAgICAgICAgICAg
aW5kZXhUb1NlbGVjdCA9IGZpcnN0U2VsZWN0ZWRJbmRleCA+IDAgPyB0aGlzLl9wcmV2aW91c1Nl
bGVjdGFibGVJbmRleChmaXJzdFNlbGVjdGVkSW5kZXgpIDogTmFOOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMKaW5kZXggOTQyYjBjN2VjYTliYzRiMDQ0
NDkyZGQ0NTEyNzJjNzk4YzliOWYzMy4uZDVkMGZhZmU1ZTVmY2RhM2JhOTRlYWFkM2RmMzg1MDQ5
ZTJjNjBmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMKQEAgLTYyNSwxOSArNjI1LDYgQEAgV0ku
RE9NVHJlZUVsZW1lbnQgPSBjbGFzcyBET01UcmVlRWxlbWVudCBleHRlbmRzIFdJLlRyZWVFbGVt
ZW50CiAgICAgICAgIGxpc3RJdGVtRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdJLkRPTVRyZWVFbGVt
ZW50LkhpZ2hsaWdodFN0eWxlQ2xhc3NOYW1lKTsKICAgICB9CiAKLSAgICBvbmRlbGV0ZSgpCi0g
ICAgewotICAgICAgICBpZiAoIXRoaXMuZWRpdGFibGUpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICAgICAgdmFyIHN0YXJ0VGFnVHJlZUVsZW1lbnQgPSB0aGlzLnRyZWVPdXRsaW5l
LmZpbmRUcmVlRWxlbWVudCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKLSAgICAgICAgaWYgKHN0
YXJ0VGFnVHJlZUVsZW1lbnQpCi0gICAgICAgICAgICBzdGFydFRhZ1RyZWVFbGVtZW50LnJlbW92
ZSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLnJlbW92ZSgpOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KICAgICBvbmVudGVyKCkKICAgICB7CiAgICAgICAgIGlmICgh
dGhpcy5lZGl0YWJsZSkKQEAgLTgwOCw3ICs3OTUsOSBAQCBXSS5ET01UcmVlRWxlbWVudCA9IGNs
YXNzIERPTVRyZWVFbGVtZW50IGV4dGVuZHMgV0kuVHJlZUVsZW1lbnQKIAogICAgICAgICBzdWJN
ZW51cy5lZGl0LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkhUTUwiKSwgdGhpcy5fZWRpdEFzSFRN
TC5iaW5kKHRoaXMpLCAhdGhpcy5lZGl0YWJsZSk7CiAgICAgICAgIHN1Yk1lbnVzLmNvcHkuYXBw
ZW5kSXRlbShXSS5VSVN0cmluZygiSFRNTCIpLCB0aGlzLl9jb3B5SFRNTC5iaW5kKHRoaXMpLCBu
b2RlLmlzUHNldWRvRWxlbWVudCgpKTsKLSAgICAgICAgc3ViTWVudXMuZGVsZXRlLmFwcGVuZEl0
ZW0oV0kuVUlTdHJpbmcoIk5vZGUiKSwgdGhpcy5yZW1vdmUuYmluZCh0aGlzKSwgIXRoaXMuZWRp
dGFibGUpOworCisgICAgICAgIGlmICghdGhpcy5zZWxlY3RlZCB8fCB0aGlzLnRyZWVPdXRsaW5l
LnNlbGVjdGVkVHJlZUVsZW1lbnRzLmxlbmd0aCA9PT0gMSkKKyAgICAgICAgICAgIHN1Yk1lbnVz
LmRlbGV0ZS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJOb2RlIiksIHRoaXMucmVtb3ZlLmJpbmQo
dGhpcyksICF0aGlzLmVkaXRhYmxlKTsKIAogICAgICAgICBmb3IgKGxldCBzdWJNZW51IG9mIE9i
amVjdC52YWx1ZXMoc3ViTWVudXMpKQogICAgICAgICAgICAgY29udGV4dE1lbnUucHVzaEl0ZW0o
c3ViTWVudSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9ET01UcmVlT3V0bGluZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5lLmpzCmluZGV4IGIzNzg0MzQ1ZDZiM2JkODE2Mzdl
NjRlYTBkNDI3NDg5MzlkZTRiMGMuLjBkYzMyNGFmYjlhOWMwMWQ5NzRhZTEzMWI1ZWNhNjAyZGFl
ZTkyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0RPTVRyZWVPdXRsaW5lLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5lLmpzCkBAIC0yNTAsNiArMjUwLDkgQEAgV0kuRE9N
VHJlZU91dGxpbmUgPSBjbGFzcyBET01UcmVlT3V0bGluZSBleHRlbmRzIFdJLlRyZWVPdXRsaW5l
CiAgICAgICAgICAgICBkZWxldGU6IG5ldyBXSS5Db250ZXh0U3ViTWVudUl0ZW0oY29udGV4dE1l
bnUsIFdJLlVJU3RyaW5nKCJEZWxldGUiKSksCiAgICAgICAgIH07CiAKKyAgICAgICAgaWYgKHRy
ZWVFbGVtZW50LnNlbGVjdGVkICYmIHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudHMubGVuZ3RoID4g
MSkKKyAgICAgICAgICAgIHN1Yk1lbnVzLmRlbGV0ZS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJO
b2RlcyIpLCAoKSA9PiB7IHRoaXMub25kZWxldGUoKTsgfSwgIXRoaXMuX2VkaXRhYmxlKTsKKwog
ICAgICAgICBpZiAodGFnICYmIHRyZWVFbGVtZW50Ll9wb3B1bGF0ZVRhZ0NvbnRleHRNZW51KQog
ICAgICAgICAgICAgdHJlZUVsZW1lbnQuX3BvcHVsYXRlVGFnQ29udGV4dE1lbnUoY29udGV4dE1l
bnUsIGV2ZW50LCBzdWJNZW51cyk7CiAgICAgICAgIGVsc2UgaWYgKHRleHROb2RlICYmIHRyZWVF
bGVtZW50Ll9wb3B1bGF0ZVRleHRDb250ZXh0TWVudSkKQEAgLTI3MCw2ICsyNzMsNDYgQEAgV0ku
RE9NVHJlZU91dGxpbmUgPSBjbGFzcyBET01UcmVlT3V0bGluZSBleHRlbmRzIFdJLlRyZWVPdXRs
aW5lCiAgICAgewogICAgIH0KIAorICAgIG9uZGVsZXRlKCkKKyAgICB7CisgICAgICAgIGlmICgh
dGhpcy5fZWRpdGFibGUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgbGV0
IHNlbGVjdGVkVHJlZUVsZW1lbnRzID0gdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50czsKKyAgICAg
ICAgdGhpcy5fc2VsZWN0aW9uQ29udHJvbGxlci5yZW1vdmVTZWxlY3RlZEl0ZW1zKCk7CisKKyAg
ICAgICAgbGV0IGxldmVsTWFwID0gbmV3IE1hcDsKKworICAgICAgICBmdW5jdGlvbiBnZXRMZXZl
bCh0cmVlRWxlbWVudCkgeworICAgICAgICAgICAgbGV0IGxldmVsID0gbGV2ZWxNYXAuZ2V0KHRy
ZWVFbGVtZW50KTsKKyAgICAgICAgICAgIGlmIChpc05hTihsZXZlbCkpIHsKKyAgICAgICAgICAg
ICAgICBsZXZlbCA9IDA7CisgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnQgPSB0cmVlRWxlbWVu
dDsKKyAgICAgICAgICAgICAgICB3aGlsZSAoY3VycmVudCA9IGN1cnJlbnQucGFyZW50KQorICAg
ICAgICAgICAgICAgICAgICBsZXZlbCsrOworICAgICAgICAgICAgICAgIGxldmVsTWFwLnNldCh0
cmVlRWxlbWVudCwgbGV2ZWwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGxl
dmVsOworICAgICAgICB9CisKKyAgICAgICAgLy8gU29ydCBpbiBkZXNjZW5kaW5nIG9yZGVyIGJ5
IG5vZGUgbGV2ZWwuIFRoaXMgZW5zdXJlcyB0aGF0IGNoaWxkIG5vZGVzCisgICAgICAgIC8vIGFy
ZSByZW1vdmVkIGJlZm9yZSB0aGVpciBhbmNlc3RvcnMuCisgICAgICAgIHNlbGVjdGVkVHJlZUVs
ZW1lbnRzLnNvcnQoKGEsIGIpID0+IGdldExldmVsKGIpIC0gZ2V0TGV2ZWwoYSkpOworCisgICAg
ICAgIC8vIFRyYWNrIHJlbW92ZWQgZWxlbWVudHMsIHNpbmNlIHRoZSBvcGVuaW5nIGFuZCBjbG9z
aW5nIHRhZ3MgZm9yIHRoZQorICAgICAgICAvLyBzYW1lIFdJLkRPTU5vZGUgY2FuIGJvdGggYmUg
c2VsZWN0ZWQuCisgICAgICAgIGxldCByZW1vdmVkVHJlZUVsZW1lbnRzID0gbmV3IFNldDsKKwor
ICAgICAgICBmb3IgKGxldCB0cmVlRWxlbWVudCBvZiBzZWxlY3RlZFRyZWVFbGVtZW50cykgewor
ICAgICAgICAgICAgaWYgKHJlbW92ZWRUcmVlRWxlbWVudHMuaGFzKHRyZWVFbGVtZW50KSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHJlbW92ZWRUcmVlRWxlbWVudHMu
YWRkKHRyZWVFbGVtZW50KQorICAgICAgICAgICAgdHJlZUVsZW1lbnQucmVtb3ZlKCk7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICAvLyBQcml2YXRlCiAK
ICAgICBfcmV2ZWFsQW5kU2VsZWN0Tm9kZShub2RlLCBvbWl0Rm9jdXMpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>