<?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>155991</bug_id>
          
          <creation_ts>2016-03-29 15:54:56 -0700</creation_ts>
          <short_desc>[OS X] [RTL Scrollbars] List boxes should obey RTL scrollbars</short_desc>
          <delta_ts>2016-04-04 19:53:45 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>bdakin</cc>
    
    <cc>dino</cc>
    
    <cc>jonlee</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1178839</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-03-29 15:54:56 -0700</bug_when>
    <thetext>[OS X] [RTL Scrollbars] List boxes should obey RTL scrollbars</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178843</commentid>
    <comment_count>1</comment_count>
      <attachid>275142</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-03-29 15:57:50 -0700</bug_when>
    <thetext>Created attachment 275142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179078</commentid>
    <comment_count>2</comment_count>
      <attachid>275142</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-30 09:41:40 -0700</bug_when>
    <thetext>Comment on attachment 275142
Patch

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

&gt; Source/WebCore/rendering/RenderListBox.cpp:476
&gt; +    if (verticalScrollbarIsOnLeft() &amp;&amp; (offset.width() &lt; borderLeft() + paddingLeft() + scrollbarWidth || offset.width() &gt; width() - borderRight() - paddingRight()))
&gt; +        return -1;
&gt; +    if (!verticalScrollbarIsOnLeft() &amp;&amp; (offset.width() &lt; borderLeft() + paddingLeft() || offset.width() &gt; width() - borderRight() - paddingRight() - scrollbarWidth))
&gt;          return -1;

Inelegant to have this in two separate if statements, but I have no cleaner suggestion.

&gt; Source/WebCore/rendering/RenderListBox.cpp:721
&gt; -        if (itemBoundingBoxRect(adjustedLocation, i).contains(locationInContainer.point())) {
&gt; -            if (Element* node = listItems[i]) {
&gt; -                result.setInnerNode(node);
&gt; -                if (!result.innerNonSharedNode())
&gt; -                    result.setInnerNonSharedNode(node);
&gt; -                result.setLocalPoint(locationInContainer.point() - toLayoutSize(adjustedLocation));
&gt; -                break;
&gt; -            }
&gt; +        if (!itemBoundingBoxRect(adjustedLocation, i).contains(locationInContainer.point()))
&gt; +            continue;
&gt; +        if (Element* node = listItems[i]) {
&gt; +            result.setInnerNode(node);
&gt; +            if (!result.innerNonSharedNode())
&gt; +                result.setInnerNonSharedNode(node);
&gt; +            result.setLocalPoint(locationInContainer.point() - toLayoutSize(adjustedLocation));
&gt; +            break;
&gt;          }

I like the new code slightly better, but why make this unrelated change in this patch.

&gt; Source/WebCore/rendering/RenderListBox.cpp:905
&gt;  bool RenderListBox::scrolledToTop() const
&gt;  {
&gt; -    Scrollbar* vbar = verticalScrollbar();
&gt; -    if (!vbar)
&gt; -        return true;
&gt; -    
&gt; +    if (Scrollbar* vbar = verticalScrollbar())
&gt;      return vbar-&gt;value() &lt;= 0;
&gt; +
&gt; +    return true;
&gt;  }
&gt;  
&gt;  bool RenderListBox::scrolledToBottom() const
&gt;  {
&gt; -    Scrollbar* vbar = verticalScrollbar();
&gt; -    if (!vbar)
&gt; -        return true;
&gt; +    if (Scrollbar* vbar = verticalScrollbar())
&gt; +        return vbar-&gt;value() &gt;= vbar-&gt;maximum();
&gt;  
&gt; -    return vbar-&gt;value() &gt;= vbar-&gt;maximum();
&gt; +    return true;
&gt;  }

Old code with early return looks better to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179095</commentid>
    <comment_count>3</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-03-30 10:34:31 -0700</bug_when>
    <thetext>Committed r198843: &lt;http://trac.webkit.org/changeset/198843&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180655</commentid>
    <comment_count>4</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-04-04 19:53:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/25137021&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275142</attachid>
            <date>2016-03-29 15:57:50 -0700</date>
            <delta_ts>2016-03-30 09:41:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155991-20160329155754.patch</filename>
            <type>text/plain</type>
            <size>28236</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4Nzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY2MzU3M2I0ZWUyODE4
ZWIyODc5Njk2Nzk3MmViZTlkZjczZWQ5MC4uODA4YmIwYWEyZDFlNzc3MDg5OTRkMjgxODZlODBi
MmM0MGJjYzVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQxIEBACiAyMDE2LTAzLTI5ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKKyAgICAgICAgW09TIFhdIFtS
VEwgU2Nyb2xsYmFyc10gTGlzdCBib3hlcyBzaG91bGQgb2JleSBSVEwgc2Nyb2xsYmFycworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1OTkxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGlzdCBib3hlcyB3
ZXJlIGNyZWF0ZWQgYmVmb3JlIFJlbmRlckxheWVycywgYW5kIHRoZXJlZm9yZSBkb24ndCBzaGFy
ZQorICAgICAgICB0aGUgc2NvbGxiYXIgbG9naWMgd2l0aCB0aGVtLiBJbnN0ZWFkLCB0aGV5IG1h
bmFnZSB0aGVpciBvd24gU2Nyb2xsYmFycy4KKyAgICAgICAgVGhlIHBsYWNlbWVudCBsb2dpYyBu
ZWVkcyB0byBiZSB1cGRhdGVkIHRvIHRha2UgUlRMIHNjcm9sbGJhcnMgaW50bworICAgICAgICBh
Y2NvdW50LgorCisgICAgICAgIFRlc3RzOiBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1s
aXN0Ym94LXNjcm9sbC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3Njcm9sbGluZy9ydGwtc2Ny
b2xsYmFycy1saXN0Ym94LXNlbGVjdC1sZWZ0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2Ny
b2xsaW5nL3J0bC1zY3JvbGxiYXJzLWxpc3Rib3gtc2VsZWN0LXJpZ2h0Lmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWxpc3Rib3gtc2ltcGxlLmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWxpc3Rib3guaHRt
bAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OmNvbnRlbnRCb3hSZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Qm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbnRlbnRCb3hSZWN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjppdGVtQm91bmRpbmdCb3hSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxpc3RCb3g6OnBhaW50U2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUJhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGlzdEJveDo6aXNQb2ludEluT3ZlcmZsb3dDb250cm9sKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxpc3RCb3g6Omxpc3RJbmRleEF0T2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxpc3RCb3g6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxp
c3RCb3g6OmNvbnRyb2xDbGlwUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94
OjppbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94Ojpjb252ZXJ0RnJvbVNjcm9sbGJhclRvQ29udGFpbmluZ1ZpZXcpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGlzdEJveDo6Y29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OnNjcm9sbGVkVG9Ub3ApOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6c2Nyb2xsZWRUb0JvdHRvbSk6CisKKzIwMTYt
MDMtMjkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKwogICAgICAg
ICBbT1MgWF0gW1JUTCBTY3JvbGxiYXJzXSBPdmVybGF5IFJUTCBzY3JvbGxiYXJzIGFuaW1hdGUg
aW4gZnJvbSB0aGUgd3Jvbmcgc2lkZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU1OTYyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAKaW5kZXggYzYzNzEwYjM5MzQ2OTg2ZWNiN2Q2MDBhNWNlOTA5ODFiYTQ3ODc1Ny4uZDI3NGE5
YjRiMGQzZjY4NTFhZGM2MzUzMWQ4ZDNjZjkxMDMyZjk0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAKQEAgLTY5NCw2ICs2OTQsMTUgQEAgUm91bmRlZFJlY3Q6OlJhZGlp
IFJlbmRlckJveDo6Ym9yZGVyUmFkaWkoKSBjb25zdAogICAgIHJldHVybiBzdHlsZS5nZXRSb3Vu
ZGVkQm9yZGVyRm9yKGJvdW5kcykucmFkaWkoKTsKIH0KIAorTGF5b3V0UmVjdCBSZW5kZXJCb3g6
OmNvbnRlbnRCb3hSZWN0KCkgY29uc3QKK3sKKyAgICBMYXlvdXRVbml0IHggPSBib3JkZXJMZWZ0
KCkgKyBwYWRkaW5nTGVmdCgpOworICAgIGlmIChsYXllcigpICYmIGxheWVyKCktPnZlcnRpY2Fs
U2Nyb2xsYmFySXNPbkxlZnQoKSkKKyAgICAgICAgeCArPSB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRo
KCk7CisgICAgTGF5b3V0VW5pdCB5ID0gYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCk7CisgICAg
cmV0dXJuIExheW91dFJlY3QoeCwgeSwgY29udGVudFdpZHRoKCksIGNvbnRlbnRIZWlnaHQoKSk7
Cit9CisKIEludFJlY3QgUmVuZGVyQm94OjphYnNvbHV0ZUNvbnRlbnRCb3goKSBjb25zdAogewog
ICAgIC8vIFRoaXMgaXMgd3Jvbmcgd2l0aCB0cmFuc2Zvcm1zIGFuZCBmbGlwcGVkIHdyaXRpbmcg
bW9kZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggNjFiNmU3ZmU4ZmU2
NGY0ZDU5NjUyYjdjNjhhYWZhZTcwMzM4ZmE2MC4uOTcxZWI2MGQ2ZjRlYWE5YjIyNjlhZmY4Nzdj
YjZhZTQ4NzkzNTI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtMTU4
LDcgKzE1OCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBSb3VuZGVkUmVjdDo6UmFk
aWkgYm9yZGVyUmFkaWkoKSBjb25zdDsKIAogICAgIC8vIFRoZSBjb250ZW50IGFyZWEgb2YgdGhl
IGJveCAoZXhjbHVkZXMgcGFkZGluZyAtIGFuZCBpbnRyaW5zaWMgcGFkZGluZyBmb3IgdGFibGUg
Y2VsbHMsIGV0Yy4uLiAtIGFuZCBib3JkZXIpLgotICAgIExheW91dFJlY3QgY29udGVudEJveFJl
Y3QoKSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0KGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0
KCksIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpLCBjb250ZW50V2lkdGgoKSwgY29udGVudEhl
aWdodCgpKTsgfQorICAgIExheW91dFJlY3QgY29udGVudEJveFJlY3QoKSBjb25zdDsKICAgICAv
LyBUaGUgY29udGVudCBib3ggaW4gYWJzb2x1dGUgY29vcmRzLiBJZ25vcmVzIHRyYW5zZm9ybXMu
CiAgICAgSW50UmVjdCBhYnNvbHV0ZUNvbnRlbnRCb3goKSBjb25zdDsKICAgICAvLyBUaGUgY29u
dGVudCBib3ggY29udmVydGVkIHRvIGFic29sdXRlIGNvb3JkcyAodGFraW5nIHRyYW5zZm9ybXMg
aW50byBhY2NvdW50KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNw
cAppbmRleCBjZWQ3NzQxZTZiMGRhZTlmZmU5ODUwZWE4NjEzYTcwZTBjMTMyMWRlLi42N2E0ZjI3
YTQ0NGFjNzUwYWZiZGQ4MjAzYzcwMTRkZmM2NzcwOTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC0yNjUsOSArMjY1LDExIEBAIGludCBSZW5kZXJM
aXN0Qm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wg
Zmlyc3RMaW5lLCBMCiAKIExheW91dFJlY3QgUmVuZGVyTGlzdEJveDo6aXRlbUJvdW5kaW5nQm94
UmVjdChjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgaW50IGluZGV4KQogewot
ICAgIHJldHVybiBMYXlvdXRSZWN0KGFkZGl0aW9uYWxPZmZzZXQueCgpICsgYm9yZGVyTGVmdCgp
ICsgcGFkZGluZ0xlZnQoKSwKLSAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsT2Zmc2V0Lnko
KSArIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpICsgaXRlbUhlaWdodCgpICogKGluZGV4IC0g
bV9pbmRleE9mZnNldCksCi0gICAgICAgICAgICAgICAgICAgY29udGVudFdpZHRoKCksIGl0ZW1I
ZWlnaHQoKSk7CisgICAgTGF5b3V0VW5pdCB4ID0gYWRkaXRpb25hbE9mZnNldC54KCkgKyBib3Jk
ZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpOworICAgIGlmICh2ZXJ0aWNhbFNjcm9sbGJhcklzT25M
ZWZ0KCkgJiYgbV92QmFyKQorICAgICAgICB4ICs9IG1fdkJhci0+b2NjdXBpZWRXaWR0aCgpOwor
ICAgIExheW91dFVuaXQgeSA9IGFkZGl0aW9uYWxPZmZzZXQueSgpICsgYm9yZGVyVG9wKCkgKyBw
YWRkaW5nVG9wKCkgKyBpdGVtSGVpZ2h0KCkgKiAoaW5kZXggLSBtX2luZGV4T2Zmc2V0KTsKKyAg
ICByZXR1cm4gTGF5b3V0UmVjdCh4LCB5LCBjb250ZW50V2lkdGgoKSwgaXRlbUhlaWdodCgpKTsK
IH0KICAgICAKIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKQEAgLTM0MCwxNCArMzQyLDE2
IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6YWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPExheW91dFJl
Y3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pCiAKIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRT
Y3JvbGxiYXIoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9m
ZnNldCkKIHsKLSAgICBpZiAobV92QmFyKSB7Ci0gICAgICAgIEludFJlY3Qgc2Nyb2xsUmVjdCA9
IHNuYXBwZWRJbnRSZWN0KHBhaW50T2Zmc2V0LngoKSArIHdpZHRoKCkgLSBib3JkZXJSaWdodCgp
IC0gbV92QmFyLT53aWR0aCgpLAotICAgICAgICAgICAgcGFpbnRPZmZzZXQueSgpICsgYm9yZGVy
VG9wKCksCi0gICAgICAgICAgICBtX3ZCYXItPndpZHRoKCksCi0gICAgICAgICAgICBoZWlnaHQo
KSAtIChib3JkZXJUb3AoKSArIGJvcmRlckJvdHRvbSgpKSk7Ci0gICAgICAgIG1fdkJhci0+c2V0
RnJhbWVSZWN0KHNjcm9sbFJlY3QpOwotICAgICAgICBtX3ZCYXItPnBhaW50KHBhaW50SW5mby5j
b250ZXh0KCksIHNuYXBwZWRJbnRSZWN0KHBhaW50SW5mby5yZWN0KSk7Ci0gICAgfQorICAgIGlm
ICghbV92QmFyKQorICAgICAgICByZXR1cm47CisKKyAgICBMYXlvdXRVbml0IGxlZnQgPSBwYWlu
dE9mZnNldC54KCkgKyAodmVydGljYWxTY3JvbGxiYXJJc09uTGVmdCgpID8gYm9yZGVyTGVmdCgp
IDogd2lkdGgoKSAtIGJvcmRlclJpZ2h0KCkgLSBtX3ZCYXItPndpZHRoKCkpOworICAgIExheW91
dFVuaXQgdG9wID0gcGFpbnRPZmZzZXQueSgpICsgYm9yZGVyVG9wKCk7CisgICAgTGF5b3V0VW5p
dCB3aWR0aCA9IG1fdkJhci0+d2lkdGgoKTsKKyAgICBMYXlvdXRVbml0IGhlaWdodCA9IHRoaXMt
PmhlaWdodCgpIC0gKGJvcmRlclRvcCgpICsgYm9yZGVyQm90dG9tKCkpOworICAgIEludFJlY3Qg
c2Nyb2xsUmVjdCA9IHNuYXBwZWRJbnRSZWN0KGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodCk7Cisg
ICAgbV92QmFyLT5zZXRGcmFtZVJlY3Qoc2Nyb2xsUmVjdCk7CisgICAgbV92QmFyLT5wYWludChw
YWludEluZm8uY29udGV4dCgpLCBzbmFwcGVkSW50UmVjdChwYWludEluZm8ucmVjdCkpOwogfQog
CiBzdGF0aWMgTGF5b3V0U2l6ZSBpdGVtT2Zmc2V0Rm9yQWxpZ25tZW50KFRleHRSdW4gdGV4dFJ1
biwgUmVuZGVyU3R5bGUqIGl0ZW1TdHlsZSwgRm9udENhc2NhZGUgaXRlbUZvbnQsIExheW91dFJl
Y3QgaXRlbUJvdWRpbmdCb3gpCkBAIC00MzEsMTEgKzQzNSwxMiBAQCB2b2lkIFJlbmRlckxpc3RC
b3g6OnBhaW50SXRlbUJhY2tncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JgogICAgICAgICBiYWNrQ29sb3IgPSBpdGVtU3R5bGUudmlzaXRlZERlcGVuZGVudENv
bG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKIAogICAgIC8vIERyYXcgdGhlIGJhY2tn
cm91bmQgZm9yIHRoaXMgbGlzdCBib3ggaXRlbQotICAgIGlmIChpdGVtU3R5bGUudmlzaWJpbGl0
eSgpICE9IEhJRERFTikgewotICAgICAgICBMYXlvdXRSZWN0IGl0ZW1SZWN0ID0gaXRlbUJvdW5k
aW5nQm94UmVjdChwYWludE9mZnNldCwgbGlzdEluZGV4KTsKLSAgICAgICAgaXRlbVJlY3QuaW50
ZXJzZWN0KGNvbnRyb2xDbGlwUmVjdChwYWludE9mZnNldCkpOwotICAgICAgICBwYWludEluZm8u
Y29udGV4dCgpLmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KGl0ZW1SZWN0KSwgYmFja0NvbG9yKTsK
LSAgICB9CisgICAgaWYgKGl0ZW1TdHlsZS52aXNpYmlsaXR5KCkgPT0gSElEREVOKQorICAgICAg
ICByZXR1cm47CisKKyAgICBMYXlvdXRSZWN0IGl0ZW1SZWN0ID0gaXRlbUJvdW5kaW5nQm94UmVj
dChwYWludE9mZnNldCwgbGlzdEluZGV4KTsKKyAgICBpdGVtUmVjdC5pbnRlcnNlY3QoY29udHJv
bENsaXBSZWN0KHBhaW50T2Zmc2V0KSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVj
dChzbmFwcGVkSW50UmVjdChpdGVtUmVjdCksIGJhY2tDb2xvcik7CiB9CiAKIGJvb2wgUmVuZGVy
TGlzdEJveDo6aXNQb2ludEluT3ZlcmZsb3dDb250cm9sKEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwg
Y29uc3QgTGF5b3V0UG9pbnQmIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50
JiBhY2N1bXVsYXRlZE9mZnNldCkKQEAgLTQ0MywxNiArNDQ4LDE3IEBAIGJvb2wgUmVuZGVyTGlz
dEJveDo6aXNQb2ludEluT3ZlcmZsb3dDb250cm9sKEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29u
c3QgTGF5b3V0CiAgICAgaWYgKCFtX3ZCYXIgfHwgIW1fdkJhci0+c2hvdWxkUGFydGljaXBhdGVJ
bkhpdFRlc3RpbmcoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTGF5b3V0UmVjdCB2
ZXJ0UmVjdChhY2N1bXVsYXRlZE9mZnNldC54KCkgKyB3aWR0aCgpIC0gYm9yZGVyUmlnaHQoKSAt
IG1fdkJhci0+d2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdGVkT2Zm
c2V0LnkoKSArIGJvcmRlclRvcCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgbV92QmFyLT53
aWR0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KCkgLSBib3JkZXJUb3AoKSAt
IGJvcmRlckJvdHRvbSgpKTsKKyAgICBMYXlvdXRVbml0IHggPSBhY2N1bXVsYXRlZE9mZnNldC54
KCkgKyAodmVydGljYWxTY3JvbGxiYXJJc09uTGVmdCgpID8gYm9yZGVyTGVmdCgpIDogd2lkdGgo
KSAtIGJvcmRlclJpZ2h0KCkgLSBtX3ZCYXItPndpZHRoKCkpOworICAgIExheW91dFVuaXQgeSA9
IGFjY3VtdWxhdGVkT2Zmc2V0LnkoKSArIGJvcmRlclRvcCgpOworICAgIExheW91dFVuaXQgd2lk
dGggPSBtX3ZCYXItPndpZHRoKCk7CisgICAgTGF5b3V0VW5pdCBoZWlnaHQgPSB0aGlzLT5oZWln
aHQoKSAtIGJvcmRlclRvcCgpIC0gYm9yZGVyQm90dG9tKCk7CisgICAgTGF5b3V0UmVjdCB2ZXJ0
UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKIAotICAgIGlmICh2ZXJ0UmVjdC5jb250YWlucyhs
b2NhdGlvbkluQ29udGFpbmVyKSkgewotICAgICAgICByZXN1bHQuc2V0U2Nyb2xsYmFyKG1fdkJh
ci5nZXQoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKCF2ZXJ0UmVjdC5jb250YWlucyhsb2NhdGlvbkluQ29udGFpbmVyKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0LnNldFNjcm9sbGJhcihtX3ZCYXIuZ2V0KCkp
OworICAgIHJldHVybiB0cnVlOwogfQogCiBpbnQgUmVuZGVyTGlzdEJveDo6bGlzdEluZGV4QXRP
ZmZzZXQoY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0KQpAQCAtNDY0LDcgKzQ3MCw5IEBAIGludCBS
ZW5kZXJMaXN0Qm94OjpsaXN0SW5kZXhBdE9mZnNldChjb25zdCBMYXlvdXRTaXplJiBvZmZzZXQp
CiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIGludCBzY3JvbGxiYXJXaWR0aCA9IG1fdkJhciA/
IG1fdkJhci0+d2lkdGgoKSA6IDA7Ci0gICAgaWYgKG9mZnNldC53aWR0aCgpIDwgYm9yZGVyTGVm
dCgpICsgcGFkZGluZ0xlZnQoKSB8fCBvZmZzZXQud2lkdGgoKSA+IHdpZHRoKCkgLSBib3JkZXJS
aWdodCgpIC0gcGFkZGluZ1JpZ2h0KCkgLSBzY3JvbGxiYXJXaWR0aCkKKyAgICBpZiAodmVydGlj
YWxTY3JvbGxiYXJJc09uTGVmdCgpICYmIChvZmZzZXQud2lkdGgoKSA8IGJvcmRlckxlZnQoKSAr
IHBhZGRpbmdMZWZ0KCkgKyBzY3JvbGxiYXJXaWR0aCB8fCBvZmZzZXQud2lkdGgoKSA+IHdpZHRo
KCkgLSBib3JkZXJSaWdodCgpIC0gcGFkZGluZ1JpZ2h0KCkpKQorICAgICAgICByZXR1cm4gLTE7
CisgICAgaWYgKCF2ZXJ0aWNhbFNjcm9sbGJhcklzT25MZWZ0KCkgJiYgKG9mZnNldC53aWR0aCgp
IDwgYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSB8fCBvZmZzZXQud2lkdGgoKSA+IHdpZHRo
KCkgLSBib3JkZXJSaWdodCgpIC0gcGFkZGluZ1JpZ2h0KCkgLSBzY3JvbGxiYXJXaWR0aCkpCiAg
ICAgICAgIHJldHVybiAtMTsKIAogICAgIGludCBuZXdPZmZzZXQgPSAob2Zmc2V0LmhlaWdodCgp
IC0gYm9yZGVyVG9wKCkgLSBwYWRkaW5nVG9wKCkpIC8gaXRlbUhlaWdodCgpICsgbV9pbmRleE9m
ZnNldDsKQEAgLTcwMiwxNCArNzEwLDE0IEBAIGJvb2wgUmVuZGVyTGlzdEJveDo6bm9kZUF0UG9p
bnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlCiAgICAg
TGF5b3V0UG9pbnQgYWRqdXN0ZWRMb2NhdGlvbiA9IGFjY3VtdWxhdGVkT2Zmc2V0ICsgbG9jYXRp
b24oKTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGlm
IChpdGVtQm91bmRpbmdCb3hSZWN0KGFkanVzdGVkTG9jYXRpb24sIGkpLmNvbnRhaW5zKGxvY2F0
aW9uSW5Db250YWluZXIucG9pbnQoKSkpIHsKLSAgICAgICAgICAgIGlmIChFbGVtZW50KiBub2Rl
ID0gbGlzdEl0ZW1zW2ldKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LnNldElubmVyTm9kZShu
b2RlKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSkK
LSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldElubmVyTm9uU2hhcmVkTm9kZShub2RlKTsK
LSAgICAgICAgICAgICAgICByZXN1bHQuc2V0TG9jYWxQb2ludChsb2NhdGlvbkluQ29udGFpbmVy
LnBvaW50KCkgLSB0b0xheW91dFNpemUoYWRqdXN0ZWRMb2NhdGlvbikpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQorICAgICAgICBpZiAoIWl0ZW1Cb3VuZGluZ0JveFJl
Y3QoYWRqdXN0ZWRMb2NhdGlvbiwgaSkuY29udGFpbnMobG9jYXRpb25JbkNvbnRhaW5lci5wb2lu
dCgpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoRWxlbWVudCogbm9kZSA9
IGxpc3RJdGVtc1tpXSkgeworICAgICAgICAgICAgcmVzdWx0LnNldElubmVyTm9kZShub2RlKTsK
KyAgICAgICAgICAgIGlmICghcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpKQorICAgICAgICAg
ICAgICAgIHJlc3VsdC5zZXRJbm5lck5vblNoYXJlZE5vZGUobm9kZSk7CisgICAgICAgICAgICBy
ZXN1bHQuc2V0TG9jYWxQb2ludChsb2NhdGlvbkluQ29udGFpbmVyLnBvaW50KCkgLSB0b0xheW91
dFNpemUoYWRqdXN0ZWRMb2NhdGlvbikpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTcxOSw2ICs3MjcsOCBAQCBib29sIFJlbmRlckxpc3RCb3g6Om5vZGVBdFBv
aW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZQogTGF5
b3V0UmVjdCBSZW5kZXJMaXN0Qm94Ojpjb250cm9sQ2xpcFJlY3QoY29uc3QgTGF5b3V0UG9pbnQm
IGFkZGl0aW9uYWxPZmZzZXQpIGNvbnN0CiB7CiAgICAgTGF5b3V0UmVjdCBjbGlwUmVjdCA9IGNv
bnRlbnRCb3hSZWN0KCk7CisgICAgaWYgKHZlcnRpY2FsU2Nyb2xsYmFySXNPbkxlZnQoKSAmJiAo
IWxheWVyKCkgfHwgIWxheWVyKCktPnZlcnRpY2FsU2Nyb2xsYmFySXNPbkxlZnQoKSkpCisgICAg
ICAgIGNsaXBSZWN0Lm1vdmUobV92QmFyLT5vY2N1cGllZFdpZHRoKCksIDApOwogICAgIGNsaXBS
ZWN0Lm1vdmVCeShhZGRpdGlvbmFsT2Zmc2V0KTsKICAgICByZXR1cm4gY2xpcFJlY3Q7CiB9CkBA
IC03MzIsMTQgKzc0MiwxNCBAQCBib29sIFJlbmRlckxpc3RCb3g6OmlzQWN0aXZlKCkgY29uc3QK
IHZvaWQgUmVuZGVyTGlzdEJveDo6aW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgSW50UmVjdCBzY3JvbGxSZWN0
ID0gcmVjdDsKLSAgICBzY3JvbGxSZWN0Lm1vdmUod2lkdGgoKSAtIGJvcmRlclJpZ2h0KCkgLSBz
Y3JvbGxiYXItPndpZHRoKCksIGJvcmRlclRvcCgpKTsKKyAgICBzY3JvbGxSZWN0Lm1vdmUodmVy
dGljYWxTY3JvbGxiYXJJc09uTGVmdCgpID8gYm9yZGVyTGVmdCgpIDogd2lkdGgoKSAtIGJvcmRl
clJpZ2h0KCkgLSBzY3JvbGxiYXItPndpZHRoKCksIGJvcmRlclRvcCgpKTsKICAgICByZXBhaW50
UmVjdGFuZ2xlKHNjcm9sbFJlY3QpOwogfQogCiBJbnRSZWN0IFJlbmRlckxpc3RCb3g6OmNvbnZl
cnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25zdCBTY3JvbGxiYXIqIHNjcm9sbGJh
ciwgY29uc3QgSW50UmVjdCYgc2Nyb2xsYmFyUmVjdCkgY29uc3QKIHsKICAgICBJbnRSZWN0IHJl
Y3QgPSBzY3JvbGxiYXJSZWN0OwotICAgIGludCBzY3JvbGxiYXJMZWZ0ID0gd2lkdGgoKSAtIGJv
cmRlclJpZ2h0KCkgLSBzY3JvbGxiYXItPndpZHRoKCk7CisgICAgaW50IHNjcm9sbGJhckxlZnQg
PSB2ZXJ0aWNhbFNjcm9sbGJhcklzT25MZWZ0KCkgPyBib3JkZXJMZWZ0KCkgOiB3aWR0aCgpIC0g
Ym9yZGVyUmlnaHQoKSAtIHNjcm9sbGJhci0+d2lkdGgoKTsKICAgICBpbnQgc2Nyb2xsYmFyVG9w
ID0gYm9yZGVyVG9wKCk7CiAgICAgcmVjdC5tb3ZlKHNjcm9sbGJhckxlZnQsIHNjcm9sbGJhclRv
cCk7CiAgICAgcmV0dXJuIHZpZXcoKS5mcmFtZVZpZXcoKS5jb252ZXJ0RnJvbVJlbmRlcmVyVG9D
b250YWluaW5nVmlldyh0aGlzLCByZWN0KTsKQEAgLTc0OCw3ICs3NTgsNyBAQCBJbnRSZWN0IFJl
bmRlckxpc3RCb3g6OmNvbnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25zdCBT
Y3JvbGxiYXIqIHNjcgogSW50UmVjdCBSZW5kZXJMaXN0Qm94Ojpjb252ZXJ0RnJvbUNvbnRhaW5p
bmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJl
Y3QmIHBhcmVudFJlY3QpIGNvbnN0CiB7CiAgICAgSW50UmVjdCByZWN0ID0gdmlldygpLmZyYW1l
VmlldygpLmNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1JlbmRlcmVyKHRoaXMsIHBhcmVudFJl
Y3QpOwotICAgIGludCBzY3JvbGxiYXJMZWZ0ID0gd2lkdGgoKSAtIGJvcmRlclJpZ2h0KCkgLSBz
Y3JvbGxiYXItPndpZHRoKCk7CisgICAgaW50IHNjcm9sbGJhckxlZnQgPSB2ZXJ0aWNhbFNjcm9s
bGJhcklzT25MZWZ0KCkgPyBib3JkZXJMZWZ0KCkgOiB3aWR0aCgpIC0gYm9yZGVyUmlnaHQoKSAt
IHNjcm9sbGJhci0+d2lkdGgoKTsKICAgICBpbnQgc2Nyb2xsYmFyVG9wID0gYm9yZGVyVG9wKCk7
CiAgICAgcmVjdC5tb3ZlKC1zY3JvbGxiYXJMZWZ0LCAtc2Nyb2xsYmFyVG9wKTsKICAgICByZXR1
cm4gcmVjdDsKQEAgLTc1Nyw3ICs3NjcsNyBAQCBJbnRSZWN0IFJlbmRlckxpc3RCb3g6OmNvbnZl
cnRGcm9tQ29udGFpbmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBTY3JvbGxiYXIqIHNjcgogSW50
UG9pbnQgUmVuZGVyTGlzdEJveDo6Y29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3
KGNvbnN0IFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRQb2ludCYgc2Nyb2xsYmFyUG9p
bnQpIGNvbnN0CiB7CiAgICAgSW50UG9pbnQgcG9pbnQgPSBzY3JvbGxiYXJQb2ludDsKLSAgICBp
bnQgc2Nyb2xsYmFyTGVmdCA9IHdpZHRoKCkgLSBib3JkZXJSaWdodCgpIC0gc2Nyb2xsYmFyLT53
aWR0aCgpOworICAgIGludCBzY3JvbGxiYXJMZWZ0ID0gdmVydGljYWxTY3JvbGxiYXJJc09uTGVm
dCgpID8gYm9yZGVyTGVmdCgpIDogd2lkdGgoKSAtIGJvcmRlclJpZ2h0KCkgLSBzY3JvbGxiYXIt
PndpZHRoKCk7CiAgICAgaW50IHNjcm9sbGJhclRvcCA9IGJvcmRlclRvcCgpOwogICAgIHBvaW50
Lm1vdmUoc2Nyb2xsYmFyTGVmdCwgc2Nyb2xsYmFyVG9wKTsKICAgICByZXR1cm4gdmlldygpLmZy
YW1lVmlldygpLmNvbnZlcnRGcm9tUmVuZGVyZXJUb0NvbnRhaW5pbmdWaWV3KHRoaXMsIHBvaW50
KTsKQEAgLTc2Niw3ICs3NzYsNyBAQCBJbnRQb2ludCBSZW5kZXJMaXN0Qm94Ojpjb252ZXJ0RnJv
bVNjcm9sbGJhclRvQ29udGFpbmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyKiBzYwogSW50UG9pbnQg
UmVuZGVyTGlzdEJveDo6Y29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0
IFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRQb2ludCYgcGFyZW50UG9pbnQpIGNvbnN0
CiB7CiAgICAgSW50UG9pbnQgcG9pbnQgPSB2aWV3KCkuZnJhbWVWaWV3KCkuY29udmVydEZyb21D
b250YWluaW5nVmlld1RvUmVuZGVyZXIodGhpcywgcGFyZW50UG9pbnQpOwotICAgIGludCBzY3Jv
bGxiYXJMZWZ0ID0gd2lkdGgoKSAtIGJvcmRlclJpZ2h0KCkgLSBzY3JvbGxiYXItPndpZHRoKCk7
CisgICAgaW50IHNjcm9sbGJhckxlZnQgPSB2ZXJ0aWNhbFNjcm9sbGJhcklzT25MZWZ0KCkgPyBi
b3JkZXJMZWZ0KCkgOiB3aWR0aCgpIC0gYm9yZGVyUmlnaHQoKSAtIHNjcm9sbGJhci0+d2lkdGgo
KTsKICAgICBpbnQgc2Nyb2xsYmFyVG9wID0gYm9yZGVyVG9wKCk7CiAgICAgcG9pbnQubW92ZSgt
c2Nyb2xsYmFyTGVmdCwgLXNjcm9sbGJhclRvcCk7CiAgICAgcmV0dXJuIHBvaW50OwpAQCAtODgw
LDIwICs4OTAsMTggQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpzZXRIYXNWZXJ0aWNhbFNjcm9sbGJh
cihib29sIGhhc1Njcm9sbGJhcikKIAogYm9vbCBSZW5kZXJMaXN0Qm94OjpzY3JvbGxlZFRvVG9w
KCkgY29uc3QKIHsKLSAgICBTY3JvbGxiYXIqIHZiYXIgPSB2ZXJ0aWNhbFNjcm9sbGJhcigpOwot
ICAgIGlmICghdmJhcikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgCisgICAgaWYgKFNjcm9s
bGJhciogdmJhciA9IHZlcnRpY2FsU2Nyb2xsYmFyKCkpCiAgICAgcmV0dXJuIHZiYXItPnZhbHVl
KCkgPD0gMDsKKworICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFJlbmRlckxpc3RCb3g6OnNj
cm9sbGVkVG9Cb3R0b20oKSBjb25zdAogewotICAgIFNjcm9sbGJhciogdmJhciA9IHZlcnRpY2Fs
U2Nyb2xsYmFyKCk7Ci0gICAgaWYgKCF2YmFyKQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBp
ZiAoU2Nyb2xsYmFyKiB2YmFyID0gdmVydGljYWxTY3JvbGxiYXIoKSkKKyAgICAgICAgcmV0dXJu
IHZiYXItPnZhbHVlKCkgPj0gdmJhci0+bWF4aW11bSgpOwogCi0gICAgcmV0dXJuIHZiYXItPnZh
bHVlKCkgPj0gdmJhci0+bWF4aW11bSgpOworICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFJl
bmRlckxpc3RCb3g6OnNjcm9sbGVkVG9MZWZ0KCkgY29uc3QKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzZGQyOTUxY2ZhZTEz
YWRmYWY0MmE2ZTA3ZjU3OTI0MDgyYmM2YTg4Li42NjE3ZmIxZDU5ZTk2YzdjNDJmOWUyZmIwNzMz
MjQ1ZjBiOTdlOGMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTYtMDMtMjkgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbT1MgWF0gW1JUTCBT
Y3JvbGxiYXJzXSBMaXN0IGJveGVzIHNob3VsZCBvYmV5IFJUTCBzY3JvbGxiYXJzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU5OTEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcyB3aXRoIHRoZSBwcmV2
aW91cyBwYXRjaGVzLCBtYXJrIG5ldyB0ZXN0cyBhcyBmYWlsaW5nIG9uIGFsbCBPU2VzIHRoYXQK
KyAgICAgICAgZG9uJ3Qgc3VwcG9ydCBSVEwgc2Nyb2xsYmFycy4KKworICAgICAgICAqIFRlc3RF
eHBlY3RhdGlvbnM6CisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtbGlz
dGJveC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9ydGwt
c2Nyb2xsYmFycy1saXN0Ym94LXNjcm9sbC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1saXN0Ym94LXNjcm9sbC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1saXN0Ym94LXNlbGVj
dC1sZWZ0LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL3J0
bC1zY3JvbGxiYXJzLWxpc3Rib3gtc2VsZWN0LWxlZnQuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtbGlzdGJveC1zZWxlY3QtcmlnaHQtZXhwZWN0
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMt
bGlzdGJveC1zZWxlY3QtcmlnaHQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxp
bmcvcnRsLXNjcm9sbGJhcnMtbGlzdGJveC1zaW1wbGUtZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtbGlzdGJveC1z
aW1wbGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJh
cnMtbGlzdGJveC5odG1sOiBBZGRlZC4KKwogMjAxNi0wMy0yOSAgRXJpYyBDYXJsc29uICA8ZXJp
Yy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBtZWRpYS90cmFjay90cmFjay1yZW1vdmUt
dHJhY2suaHRtbCBpcyBmbGFreSwgY3Jhc2hpbmcgYW5kIGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IGVmZWM1MDlhOWQwMGYxYTUxN2Y5ZmRkZDQwYzBlZDQzODRkMDg0NTUuLmVjYjM0MTZj
MDc2OWQ5NTllZGFkNDZiYTU4MTQwZWNiZGIwNGJkZWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
MTAxMCwzICsxMDEwLDggQEAgZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtaWZyYW1lLW9m
ZnNldC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xs
YmFycy1lbGVtZW50RnJvbVBvaW50LXN0YXRpYy5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L3Njcm9s
bGluZy9ydGwtc2Nyb2xsYmFycy1pZnJhbWUtc2Nyb2xsZWQuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQogZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtcG9zaXRpb25pbmcuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQorZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtbGlzdGJveC1z
Y3JvbGwuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQorZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9s
bGJhcnMtbGlzdGJveC1zZWxlY3QtbGVmdC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitmYXN0
L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1saXN0Ym94LXNlbGVjdC1yaWdodC5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCitmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1saXN0Ym94LXNp
bXBsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitmYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xs
YmFycy1saXN0Ym94Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWxpc3Rib3gtZXhwZWN0ZWQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWxpc3Rib3gtZXhw
ZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGI2ZDZmYjhiOWU4MGNlMzVkYjc3OWE4MDdlYTM1MzA1
MWY1MzVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcnRs
LXNjcm9sbGJhcnMtbGlzdGJveC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4KKzxib2R5IHN0eWxlPSJtYXJnaW46
IDBweDsiPgorPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiA4cHg7IHRvcDog
MjAwcHg7Ij5UaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IGxpc3QgYm94ZXMgb2JleSBSVEwgc2Ny
b2xsYmFycy48L2Rpdj4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDQw
MHB4OyBoZWlnaHQ6IDQwMHB4OyBvdmVyZmxvdzogaGlkZGVuOyI+Cis8c2VsZWN0IG11bHRpcGxl
PSJtdWx0aXBsZSIgc3R5bGU9Im1hcmdpbjogMHB4OyBib3JkZXI6IDBweCBzb2xpZCBibGFjazsg
cGFkZGluZzogMHB4OyB3aWR0aDogNDAwcHg7IGhlaWdodDogMTAwcHg7IHBvc2l0aW9uOiBhYnNv
bHV0ZTsgbGVmdDogMTFweDsgdG9wOiAwcHg7Ij4KKzxvcHRpb24+SmFudWFyeTwvb3B0aW9uPgor
PG9wdGlvbj5GZWJydWFyeTwvb3B0aW9uPgorPG9wdGlvbj5NYXJjaDwvb3B0aW9uPgorPG9wdGlv
bj5BcHJpbDwvb3B0aW9uPgorPG9wdGlvbj5NYXk8L29wdGlvbj4KKzxvcHRpb24+SnVuZTwvb3B0
aW9uPgorPG9wdGlvbj5KdWx5PC9vcHRpb24+Cis8b3B0aW9uPkF1Z3VzdDwvb3B0aW9uPgorPG9w
dGlvbj5TZXB0ZW1iZXI8L29wdGlvbj4KKzxvcHRpb24+T2N0b2Jlcjwvb3B0aW9uPgorPG9wdGlv
bj5Ob3ZlbWJlcjwvb3B0aW9uPgorPG9wdGlvbj5EZWNlbWJlcjwvb3B0aW9uPgorPC9zZWxlY3Q+
Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1saXN0
Ym94LXNjcm9sbC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcnRs
LXNjcm9sbGJhcnMtbGlzdGJveC1zY3JvbGwtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYmNk
NDkyYmJjM2Q3OTU3M2JmNmQzM2FhMjYzZjhhMjUxYWU5MzFiCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtbGlzdGJveC1zY3JvbGwt
ZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtp
dC10ZXN0LXJ1bm5lciBbIHJ0bFNjcm9sbGJhcnM9dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4K
KzwvaGVhZD4KKzxib2R5IHN0eWxlPSJtYXJnaW46IDBweDsiPgorPGRpdiBzdHlsZT0icG9zaXRp
b246IGFic29sdXRlOyBsZWZ0OiA4cHg7IHRvcDogMjAwcHg7Ij5UaGlzIHRlc3QgbWFrZXMgc3Vy
ZSB0aGF0IGxpc3QgYm94ZXMgb2JleSBSVEwgc2Nyb2xsYmFycy48L2Rpdj4KKzxzZWxlY3QgaWQ9
ImNvbnRhaW5lciIgbXVsdGlwbGU9Im11bHRpcGxlIiBzdHlsZT0ibWFyZ2luOiAwcHg7IGJvcmRl
cjogMHB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOiAwcHg7Ij4KKzxvcHRpb24+SmFudWFyeTwvb3B0
aW9uPgorPG9wdGlvbj5GZWJydWFyeTwvb3B0aW9uPgorPG9wdGlvbj5NYXJjaDwvb3B0aW9uPgor
PG9wdGlvbj5BcHJpbDwvb3B0aW9uPgorPG9wdGlvbj5NYXk8L29wdGlvbj4KKzxvcHRpb24+SnVu
ZTwvb3B0aW9uPgorPG9wdGlvbj5KdWx5PC9vcHRpb24+Cis8b3B0aW9uPkF1Z3VzdDwvb3B0aW9u
PgorPG9wdGlvbj5TZXB0ZW1iZXI8L29wdGlvbj4KKzxvcHRpb24+T2N0b2Jlcjwvb3B0aW9uPgor
PG9wdGlvbj5Ob3ZlbWJlcjwvb3B0aW9uPgorPG9wdGlvbj5EZWNlbWJlcjwvb3B0aW9uPgorPC9z
ZWxlY3Q+Cis8c2NyaXB0PgordmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb250YWluZXIiKTsKK2NvbnRhaW5lci5zY3JvbGxUb3AgPSBjb250YWluZXIuc2Nyb2xsSGVp
Z2h0IC0gY29udGFpbmVyLmNsaWVudEhlaWdodDsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWxpc3Rib3gtc2Nyb2xsLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1saXN0Ym94LXNjcm9sbC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg2NGNhN2M1YTI5YmE3ZGFmZDBhMTAzMTdhZTBiYmQxYzVlNTUxMjUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1s
aXN0Ym94LXNjcm9sbC5odG1sCkBAIC0wLDAgKzEsMjkgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0g
d2Via2l0LXRlc3QtcnVubmVyIFsgcnRsU2Nyb2xsYmFycz10cnVlIF0gLS0+Cis8aHRtbD4KKzxo
ZWFkPgorPC9oZWFkPgorPGJvZHkgc3R5bGU9Im1hcmdpbjogMHB4OyI+Cis8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDhweDsgdG9wOiAyMDBweDsiPlRoaXMgdGVzdCBtYWtl
cyBzdXJlIHRoYXQgbGlzdCBib3hlcyBvYmV5IFJUTCBzY3JvbGxiYXJzLjwvZGl2PgorPHNlbGVj
dCBtdWx0aXBsZT0ibXVsdGlwbGUiIHN0eWxlPSJtYXJnaW46IDBweDsgYm9yZGVyOiAwcHggc29s
aWQgYmxhY2s7IHBhZGRpbmc6IDBweDsiPgorPG9wdGlvbj5KYW51YXJ5PC9vcHRpb24+Cis8b3B0
aW9uPkZlYnJ1YXJ5PC9vcHRpb24+Cis8b3B0aW9uPk1hcmNoPC9vcHRpb24+Cis8b3B0aW9uPkFw
cmlsPC9vcHRpb24+Cis8b3B0aW9uPk1heTwvb3B0aW9uPgorPG9wdGlvbj5KdW5lPC9vcHRpb24+
Cis8b3B0aW9uPkp1bHk8L29wdGlvbj4KKzxvcHRpb24+QXVndXN0PC9vcHRpb24+Cis8b3B0aW9u
PlNlcHRlbWJlcjwvb3B0aW9uPgorPG9wdGlvbj5PY3RvYmVyPC9vcHRpb24+Cis8b3B0aW9uPk5v
dmVtYmVyPC9vcHRpb24+Cis8b3B0aW9uPkRlY2VtYmVyPC9vcHRpb24+Cis8L3NlbGVjdD4KKzxz
Y3JpcHQ+CitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oMjUsIDUpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAtMjAsICJiZWdhbiIsICJub25lIik7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICJlbmRlZCIsICJu
b25lIik7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9ydGwtc2Ny
b2xsYmFycy1saXN0Ym94LXNlbGVjdC1sZWZ0LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1saXN0Ym94LXNlbGVjdC1sZWZ0LWV4cGVjdGVk
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzYxZTRmNmVjNTc4NTNjOGU3ZjVmMzNlODVlNWU5MGI2YTczNTgx
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3Jv
bGxiYXJzLWxpc3Rib3gtc2VsZWN0LWxlZnQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDI2IEBA
Cis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHJ0bFNjcm9sbGJhcnM9
dHJ1ZSBdIC0tPgorPGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4KKzxib2R5IHN0eWxlPSJtYXJnaW46
IDBweDsiPgorPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiA4cHg7IHRvcDog
MjAwcHg7Ij5UaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IGNsaWtpbmcgb24gYW4gTFRSIHNjcm9s
bGJhciBkb2Vzbid0IHNlbGVjdCBhbiBpdGVtIGluIGEgbGlzdCBib3guPC9kaXY+Cis8c2VsZWN0
IGlkPSJjb250YWluZXIiIG11bHRpcGxlPSJtdWx0aXBsZSIgc3R5bGU9Im1hcmdpbjogMHB4OyBi
b3JkZXI6IDBweCBzb2xpZCBibGFjazsgcGFkZGluZzogMHB4OyI+Cis8b3B0aW9uPkphbnVhcnk8
L29wdGlvbj4KKzxvcHRpb24+RmVicnVhcnk8L29wdGlvbj4KKzxvcHRpb24+TWFyY2g8L29wdGlv
bj4KKzxvcHRpb24+QXByaWw8L29wdGlvbj4KKzxvcHRpb24+TWF5PC9vcHRpb24+Cis8b3B0aW9u
Pkp1bmU8L29wdGlvbj4KKzxvcHRpb24+SnVseTwvb3B0aW9uPgorPG9wdGlvbj5BdWd1c3Q8L29w
dGlvbj4KKzxvcHRpb24+U2VwdGVtYmVyPC9vcHRpb24+Cis8b3B0aW9uPk9jdG9iZXI8L29wdGlv
bj4KKzxvcHRpb24+Tm92ZW1iZXI8L29wdGlvbj4KKzxvcHRpb24+RGVjZW1iZXI8L29wdGlvbj4K
Kzwvc2VsZWN0PgorPHNjcmlwdD4KK3ZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY29udGFpbmVyIik7Citjb250YWluZXIuZm9jdXMoKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWxpc3Rib3gtc2VsZWN0LWxlZnQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWxpc3Rib3gt
c2VsZWN0LWxlZnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzFjZDcxNDE1ZjQwZjgyY2M0NDRhMDU4NDYx
MTJiMmZhOGU5NmNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvcnRsLXNjcm9sbGJhcnMtbGlzdGJveC1zZWxlY3QtbGVmdC5odG1sCkBAIC0wLDAgKzEsMjkg
QEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgcnRsU2Nyb2xsYmFy
cz10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHkgc3R5bGU9Im1hcmdp
bjogMHB4OyI+Cis8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDhweDsgdG9w
OiAyMDBweDsiPlRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgY2xpa2luZyBvbiBhbiBMVFIgc2Ny
b2xsYmFyIGRvZXNuJ3Qgc2VsZWN0IGFuIGl0ZW0gaW4gYSBsaXN0IGJveC48L2Rpdj4KKzxzZWxl
Y3QgbXVsdGlwbGU9Im11bHRpcGxlIiBzdHlsZT0ibWFyZ2luOiAwcHg7IGJvcmRlcjogMHB4IHNv
bGlkIGJsYWNrOyBwYWRkaW5nOiAwcHg7Ij4KKzxvcHRpb24+SmFudWFyeTwvb3B0aW9uPgorPG9w
dGlvbj5GZWJydWFyeTwvb3B0aW9uPgorPG9wdGlvbj5NYXJjaDwvb3B0aW9uPgorPG9wdGlvbj5B
cHJpbDwvb3B0aW9uPgorPG9wdGlvbj5NYXk8L29wdGlvbj4KKzxvcHRpb24+SnVuZTwvb3B0aW9u
PgorPG9wdGlvbj5KdWx5PC9vcHRpb24+Cis8b3B0aW9uPkF1Z3VzdDwvb3B0aW9uPgorPG9wdGlv
bj5TZXB0ZW1iZXI8L29wdGlvbj4KKzxvcHRpb24+T2N0b2Jlcjwvb3B0aW9uPgorPG9wdGlvbj5O
b3ZlbWJlcjwvb3B0aW9uPgorPG9wdGlvbj5EZWNlbWJlcjwvb3B0aW9uPgorPC9zZWxlY3Q+Cis8
c2NyaXB0PgoraWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKDUsIDUpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlVXAoKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L3J0bC1zY3JvbGxiYXJzLWxpc3Rib3gtc2VsZWN0LXJpZ2h0LWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1saXN0Ym94LXNlbGVjdC1yaWdo
dC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3MDFlZmE5YWY5MzgxMDJkNWY2ZTA5NTI1NmM3
MWI2Y2YzZDg2OTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy9ydGwtc2Nyb2xsYmFycy1saXN0Ym94LXNlbGVjdC1yaWdodC1leHBlY3RlZC5odG1sCkBAIC0w
LDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgcnRs
U2Nyb2xsYmFycz10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHkgc3R5
bGU9Im1hcmdpbjogMHB4OyI+Cis8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6
IDhweDsgdG9wOiAyMDBweDsiPlRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgY2xpa2luZyBvbiB0
aGUgcmlnaHRtb3N0IHBhcnQgb2YgYW4gaXRlbSBjYXVzZXMgaXQgdG8gYmUgc2VsZWN0ZWQuPC9k
aXY+Cis8c2VsZWN0IGlkPSJjb250YWluZXIiIG11bHRpcGxlPSJtdWx0aXBsZSIgc3R5bGU9Im1h
cmdpbjogMHB4OyBib3JkZXI6IDBweCBzb2xpZCBibGFjazsgcGFkZGluZzogMHB4OyB3aWR0aDog
MjAwcHg7Ij4KKzxvcHRpb24gaWQ9ImphbnVhcnkiPkphbnVhcnk8L29wdGlvbj4KKzxvcHRpb24+
RmVicnVhcnk8L29wdGlvbj4KKzxvcHRpb24+TWFyY2g8L29wdGlvbj4KKzxvcHRpb24+QXByaWw8
L29wdGlvbj4KKzxvcHRpb24+TWF5PC9vcHRpb24+Cis8b3B0aW9uPkp1bmU8L29wdGlvbj4KKzxv
cHRpb24+SnVseTwvb3B0aW9uPgorPG9wdGlvbj5BdWd1c3Q8L29wdGlvbj4KKzxvcHRpb24+U2Vw
dGVtYmVyPC9vcHRpb24+Cis8b3B0aW9uPk9jdG9iZXI8L29wdGlvbj4KKzxvcHRpb24+Tm92ZW1i
ZXI8L29wdGlvbj4KKzxvcHRpb24+RGVjZW1iZXI8L29wdGlvbj4KKzwvc2VsZWN0PgorPHNjcmlw
dD4KK3ZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGFpbmVyIik7
Citjb250YWluZXIuZm9jdXMoKTsKK3ZhciBqYW51YXJ5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImphbnVhcnkiKTsKK2phbnVhcnkuc2VsZWN0ZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtbGlzdGJveC1zZWxlY3Qtcmln
aHQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWxpc3Ri
b3gtc2VsZWN0LXJpZ2h0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2I3MzVjOWUwZmI5NjkzZjhmMGY1ZDFi
ZDM5ZWMxMjM3YjRmYjE4NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL3J0bC1zY3JvbGxiYXJzLWxpc3Rib3gtc2VsZWN0LXJpZ2h0Lmh0bWwKQEAgLTAsMCAr
MSwyOSBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBydGxTY3Jv
bGxiYXJzPXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8L2hlYWQ+Cis8Ym9keSBzdHlsZT0i
bWFyZ2luOiAwcHg7Ij4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogOHB4
OyB0b3A6IDIwMHB4OyI+VGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBjbGlraW5nIG9uIHRoZSBy
aWdodG1vc3QgcGFydCBvZiBhbiBpdGVtIGNhdXNlcyBpdCB0byBiZSBzZWxlY3RlZC48L2Rpdj4K
KzxzZWxlY3QgbXVsdGlwbGU9Im11bHRpcGxlIiBzdHlsZT0ibWFyZ2luOiAwcHg7IGJvcmRlcjog
MHB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOiAwcHg7IHdpZHRoOiAyMDBweDsiPgorPG9wdGlvbj5K
YW51YXJ5PC9vcHRpb24+Cis8b3B0aW9uPkZlYnJ1YXJ5PC9vcHRpb24+Cis8b3B0aW9uPk1hcmNo
PC9vcHRpb24+Cis8b3B0aW9uPkFwcmlsPC9vcHRpb24+Cis8b3B0aW9uPk1heTwvb3B0aW9uPgor
PG9wdGlvbj5KdW5lPC9vcHRpb24+Cis8b3B0aW9uPkp1bHk8L29wdGlvbj4KKzxvcHRpb24+QXVn
dXN0PC9vcHRpb24+Cis8b3B0aW9uPlNlcHRlbWJlcjwvb3B0aW9uPgorPG9wdGlvbj5PY3RvYmVy
PC9vcHRpb24+Cis8b3B0aW9uPk5vdmVtYmVyPC9vcHRpb24+Cis8b3B0aW9uPkRlY2VtYmVyPC9v
cHRpb24+Cis8L3NlbGVjdD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMTk1LCA1KTsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1saXN0Ym94LXNpbXBsZS1leHBl
Y3RlZC1taXNtYXRjaC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9s
bGJhcnMtbGlzdGJveC1zaW1wbGUtZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
Y2Q1NjJlZTFkNGJhZGMzYTBlMjgwYzQ2MTdmNDIyODIwNDhmMDViCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtbGlzdGJveC1zaW1w
bGUtZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbApAQCAtMCwwICsxLDIyIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdCBtYWtlcyBz
dXJlIHRoYXQgbGlzdCBib3hlcyBvYmV5IFJUTCBzY3JvbGxiYXJzLjwvcD4KKzxzZWxlY3QgbXVs
dGlwbGU9Im11bHRpcGxlIj4KKzxvcHRpb24+SmFudWFyeTwvb3B0aW9uPgorPG9wdGlvbj5GZWJy
dWFyeTwvb3B0aW9uPgorPG9wdGlvbj5NYXJjaDwvb3B0aW9uPgorPG9wdGlvbj5BcHJpbDwvb3B0
aW9uPgorPG9wdGlvbj5NYXk8L29wdGlvbj4KKzxvcHRpb24+SnVuZTwvb3B0aW9uPgorPG9wdGlv
bj5KdWx5PC9vcHRpb24+Cis8b3B0aW9uPkF1Z3VzdDwvb3B0aW9uPgorPG9wdGlvbj5TZXB0ZW1i
ZXI8L29wdGlvbj4KKzxvcHRpb24+T2N0b2Jlcjwvb3B0aW9uPgorPG9wdGlvbj5Ob3ZlbWJlcjwv
b3B0aW9uPgorPG9wdGlvbj5EZWNlbWJlcjwvb3B0aW9uPgorPC9zZWxlY3Q+Cis8L2JvZHk+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtbGlzdGJveC1zaW1wbGUuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxiYXJzLWxpc3Rib3gtc2ltcGxlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTk3NGI2ODNiMDJjZDQ5ODUwNDlmMmIwZjIyYjA0YzEzYmM0NTVlYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3J0bC1zY3JvbGxi
YXJzLWxpc3Rib3gtc2ltcGxlLmh0bWwKQEAgLTAsMCArMSwyMiBAQAorPCFET0NUWVBFIGh0bWw+
PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBydGxTY3JvbGxiYXJzPXRydWUgXSAtLT4KKzxodG1s
PgorPGhlYWQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQg
bGlzdCBib3hlcyBvYmV5IFJUTCBzY3JvbGxiYXJzLjwvcD4KKzxzZWxlY3QgbXVsdGlwbGU9Im11
bHRpcGxlIj4KKzxvcHRpb24+SmFudWFyeTwvb3B0aW9uPgorPG9wdGlvbj5GZWJydWFyeTwvb3B0
aW9uPgorPG9wdGlvbj5NYXJjaDwvb3B0aW9uPgorPG9wdGlvbj5BcHJpbDwvb3B0aW9uPgorPG9w
dGlvbj5NYXk8L29wdGlvbj4KKzxvcHRpb24+SnVuZTwvb3B0aW9uPgorPG9wdGlvbj5KdWx5PC9v
cHRpb24+Cis8b3B0aW9uPkF1Z3VzdDwvb3B0aW9uPgorPG9wdGlvbj5TZXB0ZW1iZXI8L29wdGlv
bj4KKzxvcHRpb24+T2N0b2Jlcjwvb3B0aW9uPgorPG9wdGlvbj5Ob3ZlbWJlcjwvb3B0aW9uPgor
PG9wdGlvbj5EZWNlbWJlcjwvb3B0aW9uPgorPC9zZWxlY3Q+Cis8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtbGlzdGJveC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvcnRsLXNjcm9sbGJhcnMtbGlzdGJveC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlMjY5MzY3
MDcwMzk2OTBkZGY2ZGQzNDQ4MGU4ZmY0MDJjZjViOWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9ydGwtc2Nyb2xsYmFycy1saXN0Ym94Lmh0bWwKQEAgLTAs
MCArMSwyNCBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBydGxT
Y3JvbGxiYXJzPXRydWUgXSAtLT4KKzxodG1sPgorPGhlYWQ+Cis8L2hlYWQ+Cis8Ym9keSBzdHls
ZT0ibWFyZ2luOiAwcHg7Ij4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDog
OHB4OyB0b3A6IDIwMHB4OyI+VGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBsaXN0IGJveGVzIG9i
ZXkgUlRMIHNjcm9sbGJhcnMuPC9kaXY+Cis8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7
IHdpZHRoOiAzODVweDsgaGVpZ2h0OiA0MDBweDsgb3ZlcmZsb3c6IGhpZGRlbjsgbGVmdDogMTFw
eDsiPgorPHNlbGVjdCBtdWx0aXBsZT0ibXVsdGlwbGUiIHN0eWxlPSJtYXJnaW46IDBweDsgYm9y
ZGVyOiAwcHggc29saWQgYmxhY2s7IHBhZGRpbmc6IDBweDsgd2lkdGg6IDQwMHB4OyBoZWlnaHQ6
IDEwMHB4OyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IC0xMXB4OyB0b3A6IDBweDsiPgorPG9w
dGlvbj5KYW51YXJ5PC9vcHRpb24+Cis8b3B0aW9uPkZlYnJ1YXJ5PC9vcHRpb24+Cis8b3B0aW9u
Pk1hcmNoPC9vcHRpb24+Cis8b3B0aW9uPkFwcmlsPC9vcHRpb24+Cis8b3B0aW9uPk1heTwvb3B0
aW9uPgorPG9wdGlvbj5KdW5lPC9vcHRpb24+Cis8b3B0aW9uPkp1bHk8L29wdGlvbj4KKzxvcHRp
b24+QXVndXN0PC9vcHRpb24+Cis8b3B0aW9uPlNlcHRlbWJlcjwvb3B0aW9uPgorPG9wdGlvbj5P
Y3RvYmVyPC9vcHRpb24+Cis8b3B0aW9uPk5vdmVtYmVyPC9vcHRpb24+Cis8b3B0aW9uPkRlY2Vt
YmVyPC9vcHRpb24+Cis8L3NlbGVjdD4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>
<flag name="review"
          id="299513"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>