<?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>209617</bug_id>
          
          <creation_ts>2020-03-26 13:18:19 -0700</creation_ts>
          <short_desc>Web Inspector: RTL: ArrowLeft and ArrowRight keys select wrong navigation bar items</short_desc>
          <delta_ts>2020-03-26 17:12:16 -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</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>209625</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikita Vasilyev">nvasilyev</reporter>
          <assigned_to name="Nikita Vasilyev">nvasilyev</assigned_to>
          <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>1634524</commentid>
    <comment_count>0</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2020-03-26 13:18:19 -0700</bug_when>
    <thetext>Steps:
0. Enable RTL mode
1. Open Elements tab
2. In the right sidebar, focus on &quot;Styles&quot; navigation bar item
3. Press Arrow Left key

Expected:
Item on the left is selected (&quot;Computed&quot;).

Actual:
Selection didn&apos;t change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634530</commentid>
    <comment_count>1</comment_count>
      <attachid>394651</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2020-03-26 13:20:58 -0700</bug_when>
    <thetext>Created attachment 394651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634557</commentid>
    <comment_count>2</comment_count>
      <attachid>394651</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-03-26 13:58:57 -0700</bug_when>
    <thetext>Comment on attachment 394651
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Views/NavigationBar.js:383
&gt; +        if (delta === -1) {

Why not combine these into one loop?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634560</commentid>
    <comment_count>3</comment_count>
      <attachid>394651</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2020-03-26 14:01:23 -0700</bug_when>
    <thetext>Comment on attachment 394651
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/NavigationBar.js:383
&gt;&gt; +        if (delta === -1) {
&gt; 
&gt; Why not combine these into one loop?

I can. I simply didn&apos;t touch what was working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634581</commentid>
    <comment_count>4</comment_count>
      <attachid>394659</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2020-03-26 14:44:00 -0700</bug_when>
    <thetext>Created attachment 394659
Patch

Looks much nicer now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634585</commentid>
    <comment_count>5</comment_count>
      <attachid>394659</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-03-26 14:57:35 -0700</bug_when>
    <thetext>Comment on attachment 394659
Patch

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

r=me, with a few changes

&gt; Source/WebInspectorUI/UserInterface/Views/NavigationBar.js:371
&gt; +        if (event.code !== &quot;ArrowLeft&quot; &amp;&amp; event.code !== &quot;ArrowRight&quot;)

NIT: I&apos;d pull this out into an `isLeftArrow` variable so you can avoid the repeated comparison below

&gt; Source/WebInspectorUI/UserInterface/Views/NavigationBar.js:377
&gt; +        let selectedIndex = this._navigationItems.indexOf(this._selectedNavigationItem);

NIT: I&apos;d put this closer to the `while`, where it&apos;s used

&gt; Source/WebInspectorUI/UserInterface/Views/NavigationBar.js:-381
&gt; -            if (selectedNavigationItemIndex === -1)
&gt; -                selectedNavigationItemIndex = this._navigationItems.length;

I think we still need this logic, or at least something like it.
```
    if (selectedIndex === -1)
        selectedIndex = (this._navigationItems.length + delta) % this._navigationItems.length;
```

&gt; Source/WebInspectorUI/UserInterface/Views/NavigationBar.js:383
&gt; +        while (true) {

I generally try to avoid `while (true)` as they can often easily turn into an infinite loop, but the bounding in this case looks fine.  To be really safe, I&apos;d ether add `console.assert(selectedIndex)` or move the first `if` to just be the condition of the `while` itself.

&gt; Source/WebInspectorUI/UserInterface/Views/NavigationBar.js:392
&gt; +                this.selectedNavigationItem?.element.focus();

I don&apos;t think we need the `?.`, as it shouldn&apos;t be possible for a `WI.RadioButtonNavigationItem` to not have an `element`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634593</commentid>
    <comment_count>6</comment_count>
      <attachid>394659</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2020-03-26 15:07:11 -0700</bug_when>
    <thetext>Comment on attachment 394659
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/NavigationBar.js:392
&gt;&gt; +                this.selectedNavigationItem?.element.focus();
&gt; 
&gt; I don&apos;t think we need the `?.`, as it shouldn&apos;t be possible for a `WI.RadioButtonNavigationItem` to not have an `element`.

It checks for `this.selectedNavigationItem` which can be null. Not the element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634602</commentid>
    <comment_count>7</comment_count>
      <attachid>394659</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2020-03-26 15:36:05 -0700</bug_when>
    <thetext>Comment on attachment 394659
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/NavigationBar.js:-381
&gt;&gt; -                selectedNavigationItemIndex = this._navigationItems.length;
&gt; 
&gt; I think we still need this logic, or at least something like it.
&gt; ```
&gt;     if (selectedIndex === -1)
&gt;         selectedIndex = (this._navigationItems.length + delta) % this._navigationItems.length;
&gt; ```

Currently in NavigationBar, focus doesn&apos;t cycle from the last item to the 1st. It *does* cycle in ScopeBar. I have a slight preference for not cycling the focus.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634603</commentid>
    <comment_count>8</comment_count>
      <attachid>394659</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-03-26 15:36:22 -0700</bug_when>
    <thetext>Comment on attachment 394659
Patch

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

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/NavigationBar.js:392
&gt;&gt;&gt; +                this.selectedNavigationItem?.element.focus();
&gt;&gt; 
&gt;&gt; I don&apos;t think we need the `?.`, as it shouldn&apos;t be possible for a `WI.RadioButtonNavigationItem` to not have an `element`.
&gt; 
&gt; It checks for `this.selectedNavigationItem` which can be null. Not the element.

Err, yes, my mistake 😅

Regardless, it shouldn&apos;t be possible for `this.selectedNavigationItem` to not exist in these conditions.  `WI.NavigationBar.prototype.set selectedNavigationItem` will only result in a `null` value for `this.selectedNavitationItem` if:
 - the given `WI.NavigationItem` is attached to a different `WI.NavigationBar`
    =&gt; this isn&apos;t possible because we&apos;re grabbing the `WI.NavigationItem` from `this._navigationItems`, meaning `this` is already the right parent
 - the given `WI.NavigationItem` is `null` or not a `WI.RadioButtonNavigationItem`
    =&gt; this isn&apos;t possible because of the `if` condition that had to have been true for this code to be run

As such, I think we should be safe to remove it.  Or am I missing something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634604</commentid>
    <comment_count>9</comment_count>
      <attachid>394659</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-03-26 15:38:28 -0700</bug_when>
    <thetext>Comment on attachment 394659
Patch

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

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/NavigationBar.js:-381
&gt;&gt;&gt; -                selectedNavigationItemIndex = this._navigationItems.length;
&gt;&gt; 
&gt;&gt; I think we still need this logic, or at least something like it.
&gt;&gt; ```
&gt;&gt;     if (selectedIndex === -1)
&gt;&gt;         selectedIndex = (this._navigationItems.length + delta) % this._navigationItems.length;
&gt;&gt; ```
&gt; 
&gt; Currently in NavigationBar, focus doesn&apos;t cycle from the last item to the 1st. It *does* cycle in ScopeBar. I have a slight preference for not cycling the focus.

I don&apos;t think that&apos;s what this does.  I think this just makes it so that if nothing is currently selected (or if somehow the selected `WI.NavigationItem` is not in the list of `_navigationItems`), it selects either the first or the last `WI.NavigationItem` depending on what key was pressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634606</commentid>
    <comment_count>10</comment_count>
      <attachid>394659</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2020-03-26 15:42:41 -0700</bug_when>
    <thetext>Comment on attachment 394659
Patch

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

&gt;&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/NavigationBar.js:-381
&gt;&gt;&gt;&gt; -                selectedNavigationItemIndex = this._navigationItems.length;
&gt;&gt;&gt; 
&gt;&gt;&gt; I think we still need this logic, or at least something like it.
&gt;&gt;&gt; ```
&gt;&gt;&gt;     if (selectedIndex === -1)
&gt;&gt;&gt;         selectedIndex = (this._navigationItems.length + delta) % this._navigationItems.length;
&gt;&gt;&gt; ```
&gt;&gt; 
&gt;&gt; Currently in NavigationBar, focus doesn&apos;t cycle from the last item to the 1st. It *does* cycle in ScopeBar. I have a slight preference for not cycling the focus.
&gt; 
&gt; I don&apos;t think that&apos;s what this does.  I think this just makes it so that if nothing is currently selected (or if somehow the selected `WI.NavigationItem` is not in the list of `_navigationItems`), it selects either the first or the last `WI.NavigationItem` depending on what key was pressed.

Oh, you&apos;re right.

You just pointed out that this.selectedNavitationItem should never be null here, so this shouldn&apos;t be something that could happen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634611</commentid>
    <comment_count>11</comment_count>
      <attachid>394664</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2020-03-26 15:52:50 -0700</bug_when>
    <thetext>Created attachment 394664
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634621</commentid>
    <comment_count>12</comment_count>
      <attachid>394667</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2020-03-26 16:08:14 -0700</bug_when>
    <thetext>Created attachment 394667
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634633</commentid>
    <comment_count>13</comment_count>
      <attachid>394659</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-03-26 16:30:27 -0700</bug_when>
    <thetext>Comment on attachment 394659
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/NavigationBar.js:-381
&gt;&gt;&gt;&gt;&gt; -                selectedNavigationItemIndex = this._navigationItems.length;
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I think we still need this logic, or at least something like it.
&gt;&gt;&gt;&gt; ```
&gt;&gt;&gt;&gt;     if (selectedIndex === -1)
&gt;&gt;&gt;&gt;         selectedIndex = (this._navigationItems.length + delta) % this._navigationItems.length;
&gt;&gt;&gt;&gt; ```
&gt;&gt;&gt; 
&gt;&gt;&gt; Currently in NavigationBar, focus doesn&apos;t cycle from the last item to the 1st. It *does* cycle in ScopeBar. I have a slight preference for not cycling the focus.
&gt;&gt; 
&gt;&gt; I don&apos;t think that&apos;s what this does.  I think this just makes it so that if nothing is currently selected (or if somehow the selected `WI.NavigationItem` is not in the list of `_navigationItems`), it selects either the first or the last `WI.NavigationItem` depending on what key was pressed.
&gt; 
&gt; Oh, you&apos;re right.
&gt; 
&gt; You just pointed out that this.selectedNavitationItem should never be null here, so this shouldn&apos;t be something that could happen.

I pointed out that `this.selctedNavigationItem` can&apos;t be `null` _below_.  I think this is completely possible for it to be `null` here, such as in the case that a `WI.NavigationBar` doesn&apos;t have any `WI.RadioButtonNavigationItem`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634639</commentid>
    <comment_count>14</comment_count>
      <attachid>394675</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2020-03-26 16:40:09 -0700</bug_when>
    <thetext>Created attachment 394675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634654</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-03-26 17:11:37 -0700</bug_when>
    <thetext>Committed r259094: &lt;https://trac.webkit.org/changeset/259094&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 394675.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634655</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-26 17:12:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/60943785&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394651</attachid>
            <date>2020-03-26 13:20:58 -0700</date>
            <delta_ts>2020-03-26 14:44:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>2570</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDU1ZWVlMTk1ZjY5Li44ZmE5YWYwYTExNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDMtMjYgIE5pa2l0
YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogUlRMOiBBcnJvd0xlZnQgYW5kIEFycm93UmlnaHQga2V5cyBzZWxlY3Qgd3JvbmcgbmF2aWdh
dGlvbiBiYXIgaXRlbXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwOTYxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpzOgorICAgICAgICAo
V0kuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUuX2tleURvd24pOgorICAgICAgICBSZXZlcnNlIGRp
cmVjdGlvbiBmb3IgUlRMIG1vZGUuCisKIDIwMjAtMDMtMjMgIERldmluIFJvdXNzbyAgPGRyb3Vz
c29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJFR1JFU1NJT04ocjI1Nzc5
MSk6IGV2ZW50IGJyZWFrcG9pbnQgaWNvbiBzaG91bGQgYmUgW0VdCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5q
cwppbmRleCA4M2FmYjkyZjY4ZS4uNjFhOTNhM2YyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25CYXIuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5qcwpA
QCAtMzY4LDcgKzM2OCw3IEBAIFdJLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFy
IGV4dGVuZHMgV0kuVmlldwogCiAgICAgX2tleURvd24oZXZlbnQpCiAgICAgewotICAgICAgICBp
ZiAoZXZlbnQua2V5SWRlbnRpZmllciAhPT0gIkxlZnQiICYmIGV2ZW50LmtleUlkZW50aWZpZXIg
IT09ICJSaWdodCIpCisgICAgICAgIGlmIChldmVudC5jb2RlICE9PSAiQXJyb3dMZWZ0IiAmJiBl
dmVudC5jb2RlICE9PSAiQXJyb3dSaWdodCIpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKQEAgLTM3NiwxNCArMzc2LDE4IEBAIFdJLk5hdmln
YXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV0kuVmlldwogCiAgICAgICAg
IHZhciBzZWxlY3RlZE5hdmlnYXRpb25JdGVtSW5kZXggPSB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMu
aW5kZXhPZih0aGlzLl9zZWxlY3RlZE5hdmlnYXRpb25JdGVtKTsKIAotICAgICAgICBpZiAoZXZl
bnQua2V5SWRlbnRpZmllciA9PT0gIkxlZnQiKSB7CisgICAgICAgIGxldCBkZWx0YSA9IChldmVu
dC5jb2RlID09PSAiQXJyb3dMZWZ0IikgPyAtMSA6IDE7CisgICAgICAgIGlmIChXSS5yZXNvbHZl
TGF5b3V0RGlyZWN0aW9uRm9yRWxlbWVudCh0aGlzLl9lbGVtZW50KSA9PT0gV0kuTGF5b3V0RGly
ZWN0aW9uLlJUTCkKKyAgICAgICAgICAgIGRlbHRhICo9IC0xOworCisgICAgICAgIGlmIChkZWx0
YSA9PT0gLTEpIHsKICAgICAgICAgICAgIGlmIChzZWxlY3RlZE5hdmlnYXRpb25JdGVtSW5kZXgg
PT09IC0xKQogICAgICAgICAgICAgICAgIHNlbGVjdGVkTmF2aWdhdGlvbkl0ZW1JbmRleCA9IHRo
aXMuX25hdmlnYXRpb25JdGVtcy5sZW5ndGg7CiAKICAgICAgICAgICAgIGRvIHsKICAgICAgICAg
ICAgICAgICBzZWxlY3RlZE5hdmlnYXRpb25JdGVtSW5kZXggPSBNYXRoLm1heCgwLCBzZWxlY3Rl
ZE5hdmlnYXRpb25JdGVtSW5kZXggLSAxKTsKICAgICAgICAgICAgIH0gd2hpbGUgKHNlbGVjdGVk
TmF2aWdhdGlvbkl0ZW1JbmRleCAmJiAhKHRoaXMuX25hdmlnYXRpb25JdGVtc1tzZWxlY3RlZE5h
dmlnYXRpb25JdGVtSW5kZXhdIGluc3RhbmNlb2YgV0kuUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRl
bSkpOwotICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJSaWdodCIp
IHsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICBz
ZWxlY3RlZE5hdmlnYXRpb25JdGVtSW5kZXggPSBNYXRoLm1pbihzZWxlY3RlZE5hdmlnYXRpb25J
dGVtSW5kZXggKyAxLCB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoIC0gMSk7CiAgICAgICAg
ICAgICB9IHdoaWxlIChzZWxlY3RlZE5hdmlnYXRpb25JdGVtSW5kZXggPCB0aGlzLl9uYXZpZ2F0
aW9uSXRlbXMubGVuZ3RoIC0gMSAmJiAhKHRoaXMuX25hdmlnYXRpb25JdGVtc1tzZWxlY3RlZE5h
dmlnYXRpb25JdGVtSW5kZXhdIGluc3RhbmNlb2YgV0kuUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRl
bSkpOwo=
</data>
<flag name="commit-queue"
          id="410083"
          type_id="3"
          status="-"
          setter="nvasilyev"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394659</attachid>
            <date>2020-03-26 14:44:00 -0700</date>
            <delta_ts>2020-03-26 15:52:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>3413</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDU1ZWVlMTk1ZjY5Li44ZmE5YWYwYTExNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDMtMjYgIE5pa2l0
YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogUlRMOiBBcnJvd0xlZnQgYW5kIEFycm93UmlnaHQga2V5cyBzZWxlY3Qgd3JvbmcgbmF2aWdh
dGlvbiBiYXIgaXRlbXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwOTYxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpzOgorICAgICAgICAo
V0kuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUuX2tleURvd24pOgorICAgICAgICBSZXZlcnNlIGRp
cmVjdGlvbiBmb3IgUlRMIG1vZGUuCisKIDIwMjAtMDMtMjMgIERldmluIFJvdXNzbyAgPGRyb3Vz
c29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJFR1JFU1NJT04ocjI1Nzc5
MSk6IGV2ZW50IGJyZWFrcG9pbnQgaWNvbiBzaG91bGQgYmUgW0VdCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5q
cwppbmRleCA4M2FmYjkyZjY4ZS4uMDBkOTE1ZjMyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25CYXIuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5qcwpA
QCAtMzY4LDMyICszNjgsMzEgQEAgV0kuTmF2aWdhdGlvbkJhciA9IGNsYXNzIE5hdmlnYXRpb25C
YXIgZXh0ZW5kcyBXSS5WaWV3CiAKICAgICBfa2V5RG93bihldmVudCkKICAgICB7Ci0gICAgICAg
IGlmIChldmVudC5rZXlJZGVudGlmaWVyICE9PSAiTGVmdCIgJiYgZXZlbnQua2V5SWRlbnRpZmll
ciAhPT0gIlJpZ2h0IikKKyAgICAgICAgaWYgKGV2ZW50LmNvZGUgIT09ICJBcnJvd0xlZnQiICYm
IGV2ZW50LmNvZGUgIT09ICJBcnJvd1JpZ2h0IikKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRp
b24oKTsKIAotICAgICAgICB2YXIgc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbUluZGV4ID0gdGhpcy5f
bmF2aWdhdGlvbkl0ZW1zLmluZGV4T2YodGhpcy5fc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSk7Cisg
ICAgICAgIGxldCBzZWxlY3RlZEluZGV4ID0gdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLmluZGV4T2Yo
dGhpcy5fc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSk7CiAKLSAgICAgICAgaWYgKGV2ZW50LmtleUlk
ZW50aWZpZXIgPT09ICJMZWZ0IikgewotICAgICAgICAgICAgaWYgKHNlbGVjdGVkTmF2aWdhdGlv
bkl0ZW1JbmRleCA9PT0gLTEpCi0gICAgICAgICAgICAgICAgc2VsZWN0ZWROYXZpZ2F0aW9uSXRl
bUluZGV4ID0gdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLmxlbmd0aDsKKyAgICAgICAgbGV0IGRlbHRh
ID0gKGV2ZW50LmNvZGUgPT09ICJBcnJvd0xlZnQiKSA/IC0xIDogMTsKKyAgICAgICAgaWYgKFdJ
LnJlc29sdmVMYXlvdXREaXJlY3Rpb25Gb3JFbGVtZW50KHRoaXMuX2VsZW1lbnQpID09PSBXSS5M
YXlvdXREaXJlY3Rpb24uUlRMKQorICAgICAgICAgICAgZGVsdGEgKj0gLTE7CiAKLSAgICAgICAg
ICAgIGRvIHsKLSAgICAgICAgICAgICAgICBzZWxlY3RlZE5hdmlnYXRpb25JdGVtSW5kZXggPSBN
YXRoLm1heCgwLCBzZWxlY3RlZE5hdmlnYXRpb25JdGVtSW5kZXggLSAxKTsKLSAgICAgICAgICAg
IH0gd2hpbGUgKHNlbGVjdGVkTmF2aWdhdGlvbkl0ZW1JbmRleCAmJiAhKHRoaXMuX25hdmlnYXRp
b25JdGVtc1tzZWxlY3RlZE5hdmlnYXRpb25JdGVtSW5kZXhdIGluc3RhbmNlb2YgV0kuUmFkaW9C
dXR0b25OYXZpZ2F0aW9uSXRlbSkpOwotICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleUlkZW50
aWZpZXIgPT09ICJSaWdodCIpIHsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBz
ZWxlY3RlZE5hdmlnYXRpb25JdGVtSW5kZXggPSBNYXRoLm1pbihzZWxlY3RlZE5hdmlnYXRpb25J
dGVtSW5kZXggKyAxLCB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoIC0gMSk7Ci0gICAgICAg
ICAgICB9IHdoaWxlIChzZWxlY3RlZE5hdmlnYXRpb25JdGVtSW5kZXggPCB0aGlzLl9uYXZpZ2F0
aW9uSXRlbXMubGVuZ3RoIC0gMSAmJiAhKHRoaXMuX25hdmlnYXRpb25JdGVtc1tzZWxlY3RlZE5h
dmlnYXRpb25JdGVtSW5kZXhdIGluc3RhbmNlb2YgV0kuUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRl
bSkpOwotICAgICAgICB9CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBzZWxl
Y3RlZEluZGV4ICs9IGRlbHRhOwogCi0gICAgICAgIGlmICghKHRoaXMuX25hdmlnYXRpb25JdGVt
c1tzZWxlY3RlZE5hdmlnYXRpb25JdGVtSW5kZXhdIGluc3RhbmNlb2YgV0kuUmFkaW9CdXR0b25O
YXZpZ2F0aW9uSXRlbSkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAoc2Vs
ZWN0ZWRJbmRleCA8IDAgfHwgc2VsZWN0ZWRJbmRleCA+PSB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMu
bGVuZ3RoKQorICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIHRoaXMuc2VsZWN0ZWRO
YXZpZ2F0aW9uSXRlbSA9IHRoaXMuX25hdmlnYXRpb25JdGVtc1tzZWxlY3RlZE5hdmlnYXRpb25J
dGVtSW5kZXhdOwotICAgICAgICB0aGlzLnNlbGVjdGVkTmF2aWdhdGlvbkl0ZW0/LmVsZW1lbnQu
Zm9jdXMoKTsKKyAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW1DYW5kaWRhdGUgPSB0aGlzLl9u
YXZpZ2F0aW9uSXRlbXNbc2VsZWN0ZWRJbmRleF07CisgICAgICAgICAgICBpZiAoc2VsZWN0ZWRJ
dGVtQ2FuZGlkYXRlIGluc3RhbmNlb2YgV0kuUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbSkgewor
ICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSA9IHNlbGVjdGVkSXRl
bUNhbmRpZGF0ZTsKKyAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTmF2aWdhdGlvbkl0ZW0/
LmVsZW1lbnQuZm9jdXMoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQogICAgIH0KIAogICAgIF9jYWxjdWxhdGVNaW5pbXVtV2lkdGgoKQo=
</data>
<flag name="review"
          id="410096"
          type_id="1"
          status="+"
          setter="hi"
    />
    <flag name="commit-queue"
          id="410097"
          type_id="3"
          status="-"
          setter="hi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394664</attachid>
            <date>2020-03-26 15:52:50 -0700</date>
            <delta_ts>2020-03-26 16:08:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>3436</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDU1ZWVlMTk1ZjY5Li44ZmE5YWYwYTExNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDMtMjYgIE5pa2l0
YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogUlRMOiBBcnJvd0xlZnQgYW5kIEFycm93UmlnaHQga2V5cyBzZWxlY3Qgd3JvbmcgbmF2aWdh
dGlvbiBiYXIgaXRlbXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwOTYxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpzOgorICAgICAgICAo
V0kuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUuX2tleURvd24pOgorICAgICAgICBSZXZlcnNlIGRp
cmVjdGlvbiBmb3IgUlRMIG1vZGUuCisKIDIwMjAtMDMtMjMgIERldmluIFJvdXNzbyAgPGRyb3Vz
c29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJFR1JFU1NJT04ocjI1Nzc5
MSk6IGV2ZW50IGJyZWFrcG9pbnQgaWNvbiBzaG91bGQgYmUgW0VdCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5q
cwppbmRleCA4M2FmYjkyZjY4ZS4uNjA5NjhkMmQ3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25CYXIuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5qcwpA
QCAtMzY4LDMyICszNjgsMzIgQEAgV0kuTmF2aWdhdGlvbkJhciA9IGNsYXNzIE5hdmlnYXRpb25C
YXIgZXh0ZW5kcyBXSS5WaWV3CiAKICAgICBfa2V5RG93bihldmVudCkKICAgICB7Ci0gICAgICAg
IGlmIChldmVudC5rZXlJZGVudGlmaWVyICE9PSAiTGVmdCIgJiYgZXZlbnQua2V5SWRlbnRpZmll
ciAhPT0gIlJpZ2h0IikKKyAgICAgICAgbGV0IGlzTGVmdEFycm93ID0gZXZlbnQuY29kZSA9PT0g
IkFycm93TGVmdCI7CisgICAgICAgIGlmICghaXNMZWZ0QXJyb3cgJiYgZXZlbnQuY29kZSAhPT0g
IkFycm93UmlnaHQiKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGV2ZW50LnByZXZl
bnREZWZhdWx0KCk7CiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogCi0gICAgICAg
IHZhciBzZWxlY3RlZE5hdmlnYXRpb25JdGVtSW5kZXggPSB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMu
aW5kZXhPZih0aGlzLl9zZWxlY3RlZE5hdmlnYXRpb25JdGVtKTsKKyAgICAgICAgbGV0IGRlbHRh
ID0gaXNMZWZ0QXJyb3cgPyAtMSA6IDE7CisgICAgICAgIGlmIChXSS5yZXNvbHZlTGF5b3V0RGly
ZWN0aW9uRm9yRWxlbWVudCh0aGlzLl9lbGVtZW50KSA9PT0gV0kuTGF5b3V0RGlyZWN0aW9uLlJU
TCkKKyAgICAgICAgICAgIGRlbHRhICo9IC0xOwogCi0gICAgICAgIGlmIChldmVudC5rZXlJZGVu
dGlmaWVyID09PSAiTGVmdCIpIHsKLSAgICAgICAgICAgIGlmIChzZWxlY3RlZE5hdmlnYXRpb25J
dGVtSW5kZXggPT09IC0xKQotICAgICAgICAgICAgICAgIHNlbGVjdGVkTmF2aWdhdGlvbkl0ZW1J
bmRleCA9IHRoaXMuX25hdmlnYXRpb25JdGVtcy5sZW5ndGg7CisgICAgICAgIGxldCBzZWxlY3Rl
ZEluZGV4ID0gdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLmluZGV4T2YodGhpcy5fc2VsZWN0ZWROYXZp
Z2F0aW9uSXRlbSk7CiAKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBzZWxlY3Rl
ZE5hdmlnYXRpb25JdGVtSW5kZXggPSBNYXRoLm1heCgwLCBzZWxlY3RlZE5hdmlnYXRpb25JdGVt
SW5kZXggLSAxKTsKLSAgICAgICAgICAgIH0gd2hpbGUgKHNlbGVjdGVkTmF2aWdhdGlvbkl0ZW1J
bmRleCAmJiAhKHRoaXMuX25hdmlnYXRpb25JdGVtc1tzZWxlY3RlZE5hdmlnYXRpb25JdGVtSW5k
ZXhdIGluc3RhbmNlb2YgV0kuUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbSkpOwotICAgICAgICB9
IGVsc2UgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJSaWdodCIpIHsKLSAgICAgICAgICAg
IGRvIHsKLSAgICAgICAgICAgICAgICBzZWxlY3RlZE5hdmlnYXRpb25JdGVtSW5kZXggPSBNYXRo
Lm1pbihzZWxlY3RlZE5hdmlnYXRpb25JdGVtSW5kZXggKyAxLCB0aGlzLl9uYXZpZ2F0aW9uSXRl
bXMubGVuZ3RoIC0gMSk7Ci0gICAgICAgICAgICB9IHdoaWxlIChzZWxlY3RlZE5hdmlnYXRpb25J
dGVtSW5kZXggPCB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoIC0gMSAmJiAhKHRoaXMuX25h
dmlnYXRpb25JdGVtc1tzZWxlY3RlZE5hdmlnYXRpb25JdGVtSW5kZXhdIGluc3RhbmNlb2YgV0ku
UmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbSkpOwotICAgICAgICB9CisgICAgICAgIHdoaWxlICh0
cnVlKSB7CisgICAgICAgICAgICBzZWxlY3RlZEluZGV4ICs9IGRlbHRhOwogCi0gICAgICAgIGlm
ICghKHRoaXMuX25hdmlnYXRpb25JdGVtc1tzZWxlY3RlZE5hdmlnYXRpb25JdGVtSW5kZXhdIGlu
c3RhbmNlb2YgV0kuUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbSkpCi0gICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA8IDAgfHwgc2VsZWN0ZWRJbmRleCA+
PSB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoKQorICAgICAgICAgICAgICAgIGJyZWFrOwog
Ci0gICAgICAgIHRoaXMuc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSA9IHRoaXMuX25hdmlnYXRpb25J
dGVtc1tzZWxlY3RlZE5hdmlnYXRpb25JdGVtSW5kZXhdOwotICAgICAgICB0aGlzLnNlbGVjdGVk
TmF2aWdhdGlvbkl0ZW0/LmVsZW1lbnQuZm9jdXMoKTsKKyAgICAgICAgICAgIGxldCBzZWxlY3Rl
ZEl0ZW1DYW5kaWRhdGUgPSB0aGlzLl9uYXZpZ2F0aW9uSXRlbXNbc2VsZWN0ZWRJbmRleF07Cisg
ICAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtQ2FuZGlkYXRlIGluc3RhbmNlb2YgV0kuUmFkaW9C
dXR0b25OYXZpZ2F0aW9uSXRlbSkgeworICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWROYXZp
Z2F0aW9uSXRlbSA9IHNlbGVjdGVkSXRlbUNhbmRpZGF0ZTsKKyAgICAgICAgICAgICAgICB0aGlz
LnNlbGVjdGVkTmF2aWdhdGlvbkl0ZW0uZWxlbWVudC5mb2N1cygpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAgX2NhbGN1bGF0
ZU1pbmltdW1XaWR0aCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394667</attachid>
            <date>2020-03-26 16:08:14 -0700</date>
            <delta_ts>2020-03-26 16:40:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>3434</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDU1ZWVlMTk1ZjY5Li5jNTJjMWVjYzYxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDMtMjYgIE5pa2l0
YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogUlRMOiBBcnJvd0xlZnQgYW5kIEFycm93UmlnaHQga2V5cyBzZWxlY3Qgd3JvbmcgbmF2aWdh
dGlvbiBiYXIgaXRlbXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwOTYxNworCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJvdXNzby4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5qczoKKyAgICAgICAgKFdJ
Lk5hdmlnYXRpb25CYXIucHJvdG90eXBlLl9rZXlEb3duKToKKyAgICAgICAgUmV2ZXJzZSBkaXJl
Y3Rpb24gZm9yIFJUTCBtb2RlLgorCiAyMDIwLTAzLTIzICBEZXZpbiBSb3Vzc28gIDxkcm91c3Nv
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSRUdSRVNTSU9OKHIyNTc3OTEp
OiBldmVudCBicmVha3BvaW50IGljb24gc2hvdWxkIGJlIFtFXQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25CYXIuanMK
aW5kZXggODNhZmI5MmY2OGUuLjYwOTY4ZDJkN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25CYXIuanMKQEAg
LTM2OCwzMiArMzY4LDMyIEBAIFdJLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFy
IGV4dGVuZHMgV0kuVmlldwogCiAgICAgX2tleURvd24oZXZlbnQpCiAgICAgewotICAgICAgICBp
ZiAoZXZlbnQua2V5SWRlbnRpZmllciAhPT0gIkxlZnQiICYmIGV2ZW50LmtleUlkZW50aWZpZXIg
IT09ICJSaWdodCIpCisgICAgICAgIGxldCBpc0xlZnRBcnJvdyA9IGV2ZW50LmNvZGUgPT09ICJB
cnJvd0xlZnQiOworICAgICAgICBpZiAoIWlzTGVmdEFycm93ICYmIGV2ZW50LmNvZGUgIT09ICJB
cnJvd1JpZ2h0IikKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBldmVudC5wcmV2ZW50
RGVmYXVsdCgpOwogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKIAotICAgICAgICB2
YXIgc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbUluZGV4ID0gdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLmlu
ZGV4T2YodGhpcy5fc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSk7CisgICAgICAgIGxldCBkZWx0YSA9
IGlzTGVmdEFycm93ID8gLTEgOiAxOworICAgICAgICBpZiAoV0kucmVzb2x2ZUxheW91dERpcmVj
dGlvbkZvckVsZW1lbnQodGhpcy5fZWxlbWVudCkgPT09IFdJLkxheW91dERpcmVjdGlvbi5SVEwp
CisgICAgICAgICAgICBkZWx0YSAqPSAtMTsKIAotICAgICAgICBpZiAoZXZlbnQua2V5SWRlbnRp
ZmllciA9PT0gIkxlZnQiKSB7Ci0gICAgICAgICAgICBpZiAoc2VsZWN0ZWROYXZpZ2F0aW9uSXRl
bUluZGV4ID09PSAtMSkKLSAgICAgICAgICAgICAgICBzZWxlY3RlZE5hdmlnYXRpb25JdGVtSW5k
ZXggPSB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoOworICAgICAgICBsZXQgc2VsZWN0ZWRJ
bmRleCA9IHRoaXMuX25hdmlnYXRpb25JdGVtcy5pbmRleE9mKHRoaXMuX3NlbGVjdGVkTmF2aWdh
dGlvbkl0ZW0pOwogCi0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgc2VsZWN0ZWRO
YXZpZ2F0aW9uSXRlbUluZGV4ID0gTWF0aC5tYXgoMCwgc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbUlu
ZGV4IC0gMSk7Ci0gICAgICAgICAgICB9IHdoaWxlIChzZWxlY3RlZE5hdmlnYXRpb25JdGVtSW5k
ZXggJiYgISh0aGlzLl9uYXZpZ2F0aW9uSXRlbXNbc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbUluZGV4
XSBpbnN0YW5jZW9mIFdJLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0pKTsKLSAgICAgICAgfSBl
bHNlIGlmIChldmVudC5rZXlJZGVudGlmaWVyID09PSAiUmlnaHQiKSB7Ci0gICAgICAgICAgICBk
byB7Ci0gICAgICAgICAgICAgICAgc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbUluZGV4ID0gTWF0aC5t
aW4oc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbUluZGV4ICsgMSwgdGhpcy5fbmF2aWdhdGlvbkl0ZW1z
Lmxlbmd0aCAtIDEpOwotICAgICAgICAgICAgfSB3aGlsZSAoc2VsZWN0ZWROYXZpZ2F0aW9uSXRl
bUluZGV4IDwgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLmxlbmd0aCAtIDEgJiYgISh0aGlzLl9uYXZp
Z2F0aW9uSXRlbXNbc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbUluZGV4XSBpbnN0YW5jZW9mIFdJLlJh
ZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0pKTsKLSAgICAgICAgfQorICAgICAgICB3aGlsZSAodHJ1
ZSkgeworICAgICAgICAgICAgc2VsZWN0ZWRJbmRleCArPSBkZWx0YTsKIAotICAgICAgICBpZiAo
ISh0aGlzLl9uYXZpZ2F0aW9uSXRlbXNbc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbUluZGV4XSBpbnN0
YW5jZW9mIFdJLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0pKQotICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggPCAwIHx8IHNlbGVjdGVkSW5kZXggPj0g
dGhpcy5fbmF2aWdhdGlvbkl0ZW1zLmxlbmd0aCkKKyAgICAgICAgICAgICAgICBicmVhazsKIAot
ICAgICAgICB0aGlzLnNlbGVjdGVkTmF2aWdhdGlvbkl0ZW0gPSB0aGlzLl9uYXZpZ2F0aW9uSXRl
bXNbc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbUluZGV4XTsKLSAgICAgICAgdGhpcy5zZWxlY3RlZE5h
dmlnYXRpb25JdGVtPy5lbGVtZW50LmZvY3VzKCk7CisgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJ
dGVtQ2FuZGlkYXRlID0gdGhpcy5fbmF2aWdhdGlvbkl0ZW1zW3NlbGVjdGVkSW5kZXhdOworICAg
ICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbUNhbmRpZGF0ZSBpbnN0YW5jZW9mIFdJLlJhZGlvQnV0
dG9uTmF2aWdhdGlvbkl0ZW0pIHsKKyAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTmF2aWdh
dGlvbkl0ZW0gPSBzZWxlY3RlZEl0ZW1DYW5kaWRhdGU7CisgICAgICAgICAgICAgICAgdGhpcy5z
ZWxlY3RlZE5hdmlnYXRpb25JdGVtLmVsZW1lbnQuZm9jdXMoKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICAgIF9jYWxjdWxhdGVN
aW5pbXVtV2lkdGgoKQo=
</data>
<flag name="commit-queue"
          id="410106"
          type_id="3"
          status="-"
          setter="nvasilyev"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394675</attachid>
            <date>2020-03-26 16:40:09 -0700</date>
            <delta_ts>2020-03-26 17:11:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>3571</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDU1ZWVlMTk1ZjY5Li5jNTJjMWVjYzYxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDMtMjYgIE5pa2l0
YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogUlRMOiBBcnJvd0xlZnQgYW5kIEFycm93UmlnaHQga2V5cyBzZWxlY3Qgd3JvbmcgbmF2aWdh
dGlvbiBiYXIgaXRlbXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwOTYxNworCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJvdXNzby4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5qczoKKyAgICAgICAgKFdJ
Lk5hdmlnYXRpb25CYXIucHJvdG90eXBlLl9rZXlEb3duKToKKyAgICAgICAgUmV2ZXJzZSBkaXJl
Y3Rpb24gZm9yIFJUTCBtb2RlLgorCiAyMDIwLTAzLTIzICBEZXZpbiBSb3Vzc28gIDxkcm91c3Nv
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSRUdSRVNTSU9OKHIyNTc3OTEp
OiBldmVudCBicmVha3BvaW50IGljb24gc2hvdWxkIGJlIFtFXQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25CYXIuanMK
aW5kZXggODNhZmI5MmY2OGUuLjkyMzZlMDlmMmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25CYXIuanMKQEAg
LTM2OCwzMiArMzY4LDM1IEBAIFdJLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFy
IGV4dGVuZHMgV0kuVmlldwogCiAgICAgX2tleURvd24oZXZlbnQpCiAgICAgewotICAgICAgICBp
ZiAoZXZlbnQua2V5SWRlbnRpZmllciAhPT0gIkxlZnQiICYmIGV2ZW50LmtleUlkZW50aWZpZXIg
IT09ICJSaWdodCIpCisgICAgICAgIGxldCBpc0xlZnRBcnJvdyA9IGV2ZW50LmNvZGUgPT09ICJB
cnJvd0xlZnQiOworICAgICAgICBpZiAoIWlzTGVmdEFycm93ICYmIGV2ZW50LmNvZGUgIT09ICJB
cnJvd1JpZ2h0IikKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBldmVudC5wcmV2ZW50
RGVmYXVsdCgpOwogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKIAotICAgICAgICB2
YXIgc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbUluZGV4ID0gdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLmlu
ZGV4T2YodGhpcy5fc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSk7CisgICAgICAgIGxldCBkZWx0YSA9
IGlzTGVmdEFycm93ID8gLTEgOiAxOworICAgICAgICBpZiAoV0kucmVzb2x2ZUxheW91dERpcmVj
dGlvbkZvckVsZW1lbnQodGhpcy5fZWxlbWVudCkgPT09IFdJLkxheW91dERpcmVjdGlvbi5SVEwp
CisgICAgICAgICAgICBkZWx0YSAqPSAtMTsKIAotICAgICAgICBpZiAoZXZlbnQua2V5SWRlbnRp
ZmllciA9PT0gIkxlZnQiKSB7Ci0gICAgICAgICAgICBpZiAoc2VsZWN0ZWROYXZpZ2F0aW9uSXRl
bUluZGV4ID09PSAtMSkKLSAgICAgICAgICAgICAgICBzZWxlY3RlZE5hdmlnYXRpb25JdGVtSW5k
ZXggPSB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoOworICAgICAgICBsZXQgc2VsZWN0ZWRJ
bmRleCA9IHRoaXMuX25hdmlnYXRpb25JdGVtcy5pbmRleE9mKHRoaXMuX3NlbGVjdGVkTmF2aWdh
dGlvbkl0ZW0pOwogCi0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgc2VsZWN0ZWRO
YXZpZ2F0aW9uSXRlbUluZGV4ID0gTWF0aC5tYXgoMCwgc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbUlu
ZGV4IC0gMSk7Ci0gICAgICAgICAgICB9IHdoaWxlIChzZWxlY3RlZE5hdmlnYXRpb25JdGVtSW5k
ZXggJiYgISh0aGlzLl9uYXZpZ2F0aW9uSXRlbXNbc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbUluZGV4
XSBpbnN0YW5jZW9mIFdJLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0pKTsKLSAgICAgICAgfSBl
bHNlIGlmIChldmVudC5rZXlJZGVudGlmaWVyID09PSAiUmlnaHQiKSB7Ci0gICAgICAgICAgICBk
byB7Ci0gICAgICAgICAgICAgICAgc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbUluZGV4ID0gTWF0aC5t
aW4oc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbUluZGV4ICsgMSwgdGhpcy5fbmF2aWdhdGlvbkl0ZW1z
Lmxlbmd0aCAtIDEpOwotICAgICAgICAgICAgfSB3aGlsZSAoc2VsZWN0ZWROYXZpZ2F0aW9uSXRl
bUluZGV4IDwgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLmxlbmd0aCAtIDEgJiYgISh0aGlzLl9uYXZp
Z2F0aW9uSXRlbXNbc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbUluZGV4XSBpbnN0YW5jZW9mIFdJLlJh
ZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0pKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoc2VsZWN0
ZWRJbmRleCA9PT0gLTEpCisgICAgICAgICAgICBzZWxlY3RlZEluZGV4ID0gKHRoaXMuX25hdmln
YXRpb25JdGVtcy5sZW5ndGggKyBkZWx0YSkgJSB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMubGVuZ3Ro
OwogCi0gICAgICAgIGlmICghKHRoaXMuX25hdmlnYXRpb25JdGVtc1tzZWxlY3RlZE5hdmlnYXRp
b25JdGVtSW5kZXhdIGluc3RhbmNlb2YgV0kuUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbSkpCi0g
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBz
ZWxlY3RlZEluZGV4ICs9IGRlbHRhOworCisgICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA8
IDAgfHwgc2VsZWN0ZWRJbmRleCA+PSB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoKQorICAg
ICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIHRoaXMuc2VsZWN0ZWROYXZpZ2F0aW9uSXRl
bSA9IHRoaXMuX25hdmlnYXRpb25JdGVtc1tzZWxlY3RlZE5hdmlnYXRpb25JdGVtSW5kZXhdOwot
ICAgICAgICB0aGlzLnNlbGVjdGVkTmF2aWdhdGlvbkl0ZW0/LmVsZW1lbnQuZm9jdXMoKTsKKyAg
ICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW1DYW5kaWRhdGUgPSB0aGlzLl9uYXZpZ2F0aW9uSXRl
bXNbc2VsZWN0ZWRJbmRleF07CisgICAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtQ2FuZGlkYXRl
IGluc3RhbmNlb2YgV0kuUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbSkgeworICAgICAgICAgICAg
ICAgIHRoaXMuc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSA9IHNlbGVjdGVkSXRlbUNhbmRpZGF0ZTsK
KyAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTmF2aWdhdGlvbkl0ZW0uZWxlbWVudC5mb2N1
cygpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAg
ICAgfQogCiAgICAgX2NhbGN1bGF0ZU1pbmltdW1XaWR0aCgpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>