<?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>228141</bug_id>
          
          <creation_ts>2021-07-21 01:34:28 -0700</creation_ts>
          <short_desc>[css-scroll-snap] Consider all snap areas at a given snap offset when snapping</short_desc>
          <delta_ts>2021-08-02 01:54:25 -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>Scrolling</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://github.com/web-platform-tests/wpt/pull/29794</see_also>
          <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>227949</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>clopez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>rego</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1778378</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-07-21 01:34:28 -0700</bug_when>
    <thetext>When we process snap offsets we only record data about the first snap area at a given snap stop. Instead we should keep information about all snap areas because any of them might be one which is larger than the viewport and provides a range of possible valid snap offsets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779495</commentid>
    <comment_count>1</comment_count>
      <attachid>434220</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-07-26 11:46:16 -0700</bug_when>
    <thetext>Created attachment 434220
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779497</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-07-26 11:47:30 -0700</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779559</commentid>
    <comment_count>3</comment_count>
      <attachid>434235</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-07-26 14:04:35 -0700</bug_when>
    <thetext>Created attachment 434235
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779989</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-28 01:35:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/81205933&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780004</commentid>
    <comment_count>5</comment_count>
      <attachid>434235</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2021-07-28 02:52:54 -0700</bug_when>
    <thetext>Comment on attachment 434235
Patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        the viewport. This will avoid extra work on the most common usecase of large sets

&quot;use case&quot; in two words?

&gt; Source/WebCore/ChangeLog:24
&gt; +        (WebCore::convertOffsetInfo): Convert the list of snap ares.

areas*

&gt; Source/WebCore/page/scrolling/ScrollSnapOffsetsInfo.cpp:232
&gt; +    auto addOrUpdateStopForSnapOffset = [](HashMap&lt;float, SnapOffset&lt;LayoutUnit&gt;&gt;&amp; offsets, LayoutUnit newOffset, ScrollSnapStop stop, bool hasSnapAreaLargerThanViewport, size_t snapAreaIndices)

s/snapAreaIndices/snapAreaIndex/

BTW, this is already present before you patch and could be done separately, but it looks like we can use a HashMap&lt;LayoutUnit, SnapOffset&lt;LayoutUnit&gt;&gt; here, and in the horizontalSnapOffsetsMap/verticalSnapOffsetsMap below.

&gt; Source/WebCore/page/scrolling/ScrollSnapOffsetsInfo.cpp:234
&gt; +        auto offset = offsets.ensure(newOffset, [&amp;] {

Does HashMap::ensure have the same semantic as HashMap::add, except that it uses a functor? https://webkit-search.igalia.com/webkit/source/Source/WTF/wtf/HashMap.h#158

It&apos;s not clear to me why you can&apos;t keep add? Is it just to make init more convenient?

Also it seems the variable should still be called addResult.

&gt; Source/WebCore/page/scrolling/ScrollSnapOffsetsInfo.cpp:243
&gt; +        offset.iterator-&gt;value.snapAreaIndices.append(snapAreaIndices);

I&apos;m think it&apos;s a bit confusing that some values are immediately initialized with the passed parameters and some are not. Instead, I would do

Try and add { newOffset, stop, hasSnapAreaLargerThanViewport, { snapAreaIndex } } to the HashMap
If there was already an entry (addResult.isNewEntry is false) then update stop, hasSnapAreaLargerThanViewport and snapAreaIndices accordingly.

Then the comment above can be updated to say we updated too to mention the new variables. 

IIUC, this assumes snapAreaIndices will always grow at each call and so hasSnapAreaLargerThanViewport can never become false again. Is it correct? In the past, snapAreaIndex was never updated after the first call.

&gt; Source/WebCore/page/scrolling/ScrollSnapOffsetsInfo.h:80
&gt; +    return a.offset == b.offset &amp;&amp; a.stop == b.stop &amp;&amp; a.snapAreaIndices == b.snapAreaIndices;

I guess this is implied by a.snapAreaIndices == b.snapAreaIndices, but shouldn&apos;t use also compare a.hasSnapAreaLargerThanViewport == b.hasSnapAreaLargerThanViewport ? (That can also make comparison slightly faster...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780044</commentid>
    <comment_count>6</comment_count>
      <attachid>434235</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2021-07-28 06:43:29 -0700</bug_when>
    <thetext>Comment on attachment 434235
Patch

After talking to Martin, I can r+ this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780088</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-07-28 10:01:23 -0700</bug_when>
    <thetext>(In reply to Frédéric Wang (:fredw) from comment #5)
&gt; Comment on attachment 434235 [details]
&gt; Patch

Thanks for the review!

&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=434235&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:12
&gt; &gt; +        the viewport. This will avoid extra work on the most common usecase of large sets
&gt; 
&gt; &quot;use case&quot; in two words?

Fixed.


&gt; &gt; Source/WebCore/ChangeLog:24
&gt; &gt; +        (WebCore::convertOffsetInfo): Convert the list of snap ares.
&gt; 
&gt; areas*

Fixed.

&gt; &gt; Source/WebCore/page/scrolling/ScrollSnapOffsetsInfo.cpp:232
&gt; &gt; +    auto addOrUpdateStopForSnapOffset = [](HashMap&lt;float, SnapOffset&lt;LayoutUnit&gt;&gt;&amp; offsets, LayoutUnit newOffset, ScrollSnapStop stop, bool hasSnapAreaLargerThanViewport, size_t snapAreaIndices)
&gt; 
&gt; s/snapAreaIndices/snapAreaIndex/

Fixed.

&gt; Also it seems the variable should still be called addResult.

Fixed.

 
&gt; Try and add { newOffset, stop, hasSnapAreaLargerThanViewport, {
&gt; snapAreaIndex } } to the HashMap
&gt; If there was already an entry (addResult.isNewEntry is false) then update
&gt; stop, hasSnapAreaLargerThanViewport and snapAreaIndices accordingly.
&gt; 
&gt; Then the comment above can be updated to say we updated too to mention the
&gt; new variables. 

In the end, I decided to remove this comment because it&apos;s a bit redundant.
 
&gt; IIUC, this assumes snapAreaIndices will always grow at each call and so
&gt; hasSnapAreaLargerThanViewport can never become false again. Is it correct?
&gt; In the past, snapAreaIndex was never updated after the first call.
&gt; 
&gt; &gt; Source/WebCore/page/scrolling/ScrollSnapOffsetsInfo.h:80
&gt; &gt; +    return a.offset == b.offset &amp;&amp; a.stop == b.stop &amp;&amp; a.snapAreaIndices == b.snapAreaIndices;
&gt; 
&gt; I guess this is implied by a.snapAreaIndices == b.snapAreaIndices, but
&gt; shouldn&apos;t use also compare a.hasSnapAreaLargerThanViewport ==
&gt; b.hasSnapAreaLargerThanViewport ? (That can also make comparison slightly
&gt; faster...)

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1781207</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-02 01:54:23 -0700</bug_when>
    <thetext>Committed r280527 (240159@main): &lt;https://commits.webkit.org/240159@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 434235.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434220</attachid>
            <date>2021-07-26 11:46:16 -0700</date>
            <delta_ts>2021-07-26 14:04:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228141-20210726204615.patch</filename>
            <type>text/plain</type>
            <size>14387</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ2NTgyZmNkOTBhMTEz
MTg4ZmQ0Y2U4NThmZmIzNTczMWMzM2Y3Ny4uOWEwNzYzOTZlYzk1MGIxZjYyNmQ1NTc0YTM1ZDll
ODAwYjVmZWZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTA3LTI2ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBbY3NzLXNjcm9s
bC1zbmFwXSBDb25zaWRlciBhbGwgc25hcCBhcmVhcyBhdCBhIGdpdmVuIHNuYXAgb2Zmc2V0IHdo
ZW4gc25hcHBpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyODE0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdoZW4gZGVjaWRpbmcgd2hldGhlciB0byBzbmFwIHRvIHNuYXAgYXJlYXMgdGhhdCBvdmVy
ZmxvdyB0aGUgc25hcCBwb3J0LCBkb24ndAorICAgICAgICBqdXN0IGNvbnNpZGVyIHRoZSBmaXJz
dCBzbmFwIGFyZWEgYXQgYSBnaXZlbiBzbmFwIG9mZnNldC4gSW5zdGVhZCwga2VlcCBpbmZvcm1h
dGlvbgorICAgICAgICBhYm91dCBhbGwgc25hcCBhcmVhcyBpbiB0aGUgU2Nyb2xTbmFwT2Zmc2V0
SW5mby4gSW4gb3JkZXIgdG8gYXZvaWQgaXRlcmF0aW5nIG92ZXIKKyAgICAgICAgYXJyYXlzIG9m
IGh1bmRyZWRzIG9mIHJlY3RhbmdsZXMsIGFsc28gcmVjb3JkIHdoZXRoZXIgYW55IG9mIHRoZW0g
YXJlIGxhcmdlciB0aGFuCisgICAgICAgIHRoZSB2aWV3cG9ydC4gVGhpcyB3aWxsIGF2b2lkIGV4
dHJhIHdvcmsgb24gdGhlIG1vc3QgY29tbW9uIHVzZWNhc2Ugb2YgbGFyZ2Ugc2V0cworICAgICAg
ICBvZiBzbmFwIGFyZWFzIChncmlkZGVkIHRhYmxlIGxheW91dHMpLgorCisgICAgICAgIFRoaXMg
Y2hhbmdlIGlzIHRlc3RlZCBieSBleHRlbmRpbmcgYW4gZXhpc3RpbmcgV1BUIHRlc3QuCisKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cmFuZ2VGb3JBeGlzKTogQWRkZWQgdGhpcyBoZWxwZXIuCisgICAgICAgIChX
ZWJDb3JlOjpzZWFyY2hGb3JQb3RlbnRpYWxTbmFwUG9pbnRzKTogV2hlbiBkZWNpZGluZyBpZiBh
IHBhcnRpY3VsYXIgc25hcCBhcmVhCisgICAgICAgIG92ZXJmbG93cyB0aGUgc25hcCBwb3J0LCBs
b29rIGF0IGFsbCBhdmFpbGFibGUgc25hcCBhcmVhcyBpbnN0ZWFkIG9mIGp1c3QgdGhlCisgICAg
ICAgIGZpcnN0IG9uZS4KKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVNuYXBPZmZzZXRzRm9yU2Ny
b2xsYWJsZUFyZWEpOiBJbnN0ZWFkIG9mIG9ubHkgcmVjb3JkaW5nIHRoZSBmaXJzdAorICAgICAg
ICBzbmFwIGFyZWEsIHJlY29yZCBhbGwgb2YgdGhlbSBpbiB0aGUgbGlzdCBvZiBzbmFwIGFyZWEg
cmVjdGFuZ2xlcy4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRPZmZzZXRJbmZvKTogQ29udmVy
dCB0aGUgbGlzdCBvZiBzbmFwIGFyZXMuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
U25hcE9mZnNldHNJbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KTogQWRkZWQg
dGhpcyBvcGVyYXRvciB3aGljaCBpcyBuZWNlc3Nhcnkgbm93IHRoYXQgc25hcEFyZWFJbmRpY2Vz
CisgICAgICAgIGlzIGEgdmVjdG9yLgorCiAyMDIxLTA3LTIyICBNYXJ0aW4gUm9iaW5zb24gIDxt
cm9iaW5zb25Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbY3NzLXNjcm9sbC1zbmFwXSBQYXNzIHRo
ZSBmdWxsIHRhcmdldCBwb2ludCB3aGVuIHNlbGVjdGluZyBhIHNuYXAgb2Zmc2V0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDI4MDA5NmExM2RhN2Y0M2I0NTU0ZmU0NmYxMjJmN2VkYjljNjFkMDYuLjU0NWY3YmFjYjQ4
MzY1NDU2MWJkZGVlNTgyM2Q4NjcwMDQxYWNiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMjEtMDctMjYgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtjc3Mtc2Nyb2xsLXNuYXBdIENvbnNpZGVyIGFsbCBzbmFwIGFyZWFzIGF0IGEgZ2l2
ZW4gc25hcCBvZmZzZXQgd2hlbiBzbmFwcGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoQXJndW1lbnRDb2RlcjxT
bmFwT2Zmc2V0PGZsb2F0Pj46OmVuY29kZSk6IFNlcmlhbGl6ZSBuZXcgbWVtYmVycy4KKyAgICAg
ICAgKEFyZ3VtZW50Q29kZXI8U25hcE9mZnNldDxmbG9hdD4+OjpkZWNvZGUpOiBEZXNlcmlhbGl6
ZSBuZXcgbWVtYmVycy4KKwogMjAyMS0wNy0yMiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29u
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW2Nzcy1zY3JvbGwtc25hcF0gUGFzcyB0aGUgZnVsbCB0
YXJnZXQgcG9pbnQgd2hlbiBzZWxlY3RpbmcgYSBzbmFwIG9mZnNldApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAKaW5k
ZXggZjRhZDVkNGFiMDIxMzc4MzZmZTI2YzhhMTEzYTNjZDkwY2NmODkxYy4uMjcxY2QyMTU4ZDlk
ZjEwMzg4Nzg5MTBiM2M2MjliZmUyMjg0MzdhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwCkBAIC00MCw2ICs0
MCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBVbml0
VHlwZSwgdHlwZW5hbWUgUmVjdFR5cGU+CitzdGF0aWMgc3RkOjpwYWlyPFVuaXRUeXBlLCBVbml0
VHlwZT4gcmFuZ2VGb3JBeGlzKFJlY3RUeXBlIHJlY3QsIFNjcm9sbEV2ZW50QXhpcyBheGlzKQor
eworICAgIHJldHVybiBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IHN0ZDo6
bWFrZV9wYWlyKHJlY3QueCgpLCByZWN0Lm1heFgoKSkgOiBzdGQ6Om1ha2VfcGFpcihyZWN0Lnko
KSwgcmVjdC5tYXhZKCkpOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVW5pdFR5cGU+CiBzdHJ1
Y3QgUG90ZW50aWFsU25hcFBvaW50U2VhcmNoUmVzdWx0IHsKICAgICBzdGQ6Om9wdGlvbmFsPHN0
ZDo6cGFpcjxVbml0VHlwZSwgdW5zaWduZWQ+PiBwcmV2aW91czsKQEAgLTY3LDEzICs3MywxNyBA
QCBzdGF0aWMgUG90ZW50aWFsU25hcFBvaW50U2VhcmNoUmVzdWx0PFVuaXRUeXBlPiBzZWFyY2hG
b3JQb3RlbnRpYWxTbmFwUG9pbnRzKGNvbgogICAgIH07CiAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgc25hcE9mZnNldHMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgVW5pdFR5cGUgcG90
ZW50aWFsU25hcE9mZnNldCA9IHNuYXBPZmZzZXRzW2ldLm9mZnNldDsKLQotICAgICAgICBjb25z
dCBhdXRvJiBzbmFwQXJlYSA9IGluZm8uc25hcEFyZWFzW3NuYXBPZmZzZXRzW2ldLnNuYXBBcmVh
SW5kZXhdOwotICAgICAgICBhdXRvIHNuYXBBcmVhTWluID0gYXhpcyA9PSBTY3JvbGxFdmVudEF4
aXM6Okhvcml6b250YWwgPyBzbmFwQXJlYS54KCkgOiBzbmFwQXJlYS55KCk7Ci0gICAgICAgIGF1
dG8gc25hcEFyZWFNYXggPSBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IHNu
YXBBcmVhLm1heFgoKSA6IHNuYXBBcmVhLm1heFkoKTsKLSAgICAgICAgbGFuZGVkSW5zaWRlU25h
cEFyZWFUaGF0Q29uc3VtZXNWaWV3cG9ydCB8PSBzbmFwQXJlYU1pbiA8PSBkZXN0aW5hdGlvbk9m
ZnNldCAmJiBzbmFwQXJlYU1heCA+PSAoZGVzdGluYXRpb25PZmZzZXQgKyB2aWV3cG9ydExlbmd0
aCk7CisgICAgICAgIGlmICghbGFuZGVkSW5zaWRlU25hcEFyZWFUaGF0Q29uc3VtZXNWaWV3cG9y
dCAmJiBzbmFwT2Zmc2V0c1tpXS5oYXNTbmFwQXJlYUxhcmdlclRoYW5WaWV3cG9ydCkgeworICAg
ICAgICAgICAgZm9yIChhdXRvIHNuYXBBcmVhSW5kaWNlcyA6IHNuYXBPZmZzZXRzW2ldLnNuYXBB
cmVhSW5kaWNlcykgeworICAgICAgICAgICAgICAgIGF1dG8gW3NuYXBBcmVhTWluLCBzbmFwQXJl
YU1heF0gPSByYW5nZUZvckF4aXM8VW5pdFR5cGU+KGluZm8uc25hcEFyZWFzW3NuYXBBcmVhSW5k
aWNlc10sIGF4aXMpOworICAgICAgICAgICAgICAgIGlmIChzbmFwQXJlYU1pbiA8PSBkZXN0aW5h
dGlvbk9mZnNldCAmJiBzbmFwQXJlYU1heCA+PSAoZGVzdGluYXRpb25PZmZzZXQgKyB2aWV3cG9y
dExlbmd0aCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbGFuZGVkSW5zaWRlU25hcEFyZWFUaGF0
Q29uc3VtZXNWaWV3cG9ydCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogCisgICAgICAgIFVuaXRU
eXBlIHBvdGVudGlhbFNuYXBPZmZzZXQgPSBzbmFwT2Zmc2V0c1tpXS5vZmZzZXQ7CiAgICAgICAg
IGlmIChwb3RlbnRpYWxTbmFwT2Zmc2V0ID09IGRlc3RpbmF0aW9uT2Zmc2V0KQogICAgICAgICAg
ICAgZXhhY3QgPSBzdGQ6Om1ha2VfcGFpcihwb3RlbnRpYWxTbmFwT2Zmc2V0LCBpKTsKICAgICAg
ICAgZWxzZSBpZiAocG90ZW50aWFsU25hcE9mZnNldCA8IGRlc3RpbmF0aW9uT2Zmc2V0KQpAQCAt
MjE5LDEyICsyMjksMTggQEAgdm9pZCB1cGRhdGVTbmFwT2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVh
KFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgY29uc3QgUmUKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGF1dG8gYWRkT3JVcGRhdGVTdG9wRm9yU25hcE9mZnNldCA9IFtdKEhh
c2hNYXA8ZmxvYXQsIFNuYXBPZmZzZXQ8TGF5b3V0VW5pdD4+JiBvZmZzZXRzLCBTbmFwT2Zmc2V0
PExheW91dFVuaXQ+IG5ld09mZnNldCkKKyAgICBhdXRvIGFkZE9yVXBkYXRlU3RvcEZvclNuYXBP
ZmZzZXQgPSBbXShIYXNoTWFwPGZsb2F0LCBTbmFwT2Zmc2V0PExheW91dFVuaXQ+PiYgb2Zmc2V0
cywgTGF5b3V0VW5pdCBuZXdPZmZzZXQsIFNjcm9sbFNuYXBTdG9wIHN0b3AsIGJvb2wgaGFzU25h
cEFyZWFMYXJnZXJUaGFuVmlld3BvcnQsIHNpemVfdCBzbmFwQXJlYUluZGljZXMpCiAgICAgewor
ICAgICAgICBhdXRvIG9mZnNldCA9IG9mZnNldHMuZW5zdXJlKG5ld09mZnNldCwgWyZdIHsKKyAg
ICAgICAgICAgIHJldHVybiBTbmFwT2Zmc2V0PExheW91dFVuaXQ+IHsgbmV3T2Zmc2V0LCBzdG9w
LCBoYXNTbmFwQXJlYUxhcmdlclRoYW5WaWV3cG9ydCwgeyB9IH07CisgICAgICAgIH0pOworCiAg
ICAgICAgIC8vIElmIHRoZSBvZmZzZXQgYWxyZWFkeSBleGlzdHMsIHdlIGVuc3VyZSB0aGF0IGl0
IGhhcyBTY3JvbGxTbmFwU3RvcDo6QWx3YXlzLCB3aGVuIGFwcHJvcHJpYXRlLgotICAgICAgICBh
dXRvIGFkZFJlc3VsdCA9IG9mZnNldHMuYWRkKG5ld09mZnNldC5vZmZzZXQsIG5ld09mZnNldCk7
Ci0gICAgICAgIGlmIChuZXdPZmZzZXQuc3RvcCA9PSBTY3JvbGxTbmFwU3RvcDo6QWx3YXlzKQot
ICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zdG9wID0gU2Nyb2xsU25hcFN0
b3A6OkFsd2F5czsKKyAgICAgICAgaWYgKHN0b3AgPT0gU2Nyb2xsU25hcFN0b3A6OkFsd2F5cykK
KyAgICAgICAgICAgIG9mZnNldC5pdGVyYXRvci0+dmFsdWUuc3RvcCA9IFNjcm9sbFNuYXBTdG9w
OjpBbHdheXM7CisKKyAgICAgICAgb2Zmc2V0Lml0ZXJhdG9yLT52YWx1ZS5oYXNTbmFwQXJlYUxh
cmdlclRoYW5WaWV3cG9ydCB8PSBoYXNTbmFwQXJlYUxhcmdlclRoYW5WaWV3cG9ydDsKKyAgICAg
ICAgb2Zmc2V0Lml0ZXJhdG9yLT52YWx1ZS5zbmFwQXJlYUluZGljZXMuYXBwZW5kKHNuYXBBcmVh
SW5kaWNlcyk7CiAgICAgfTsKIAogICAgIEhhc2hNYXA8ZmxvYXQsIFNuYXBPZmZzZXQ8TGF5b3V0
VW5pdD4+IHZlcnRpY2FsU25hcE9mZnNldHNNYXA7CkBAIC0yOTMsMTIgKzMwOSwxMiBAQCB2b2lk
IHVwZGF0ZVNuYXBPZmZzZXRzRm9yU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9s
bGFibGVBcmVhLCBjb25zdCBSZQogICAgICAgICBpZiAoc25hcHNIb3Jpem9udGFsbHkpIHsKICAg
ICAgICAgICAgIGF1dG8gYWJzb2x1dGVTY3JvbGxYUG9zaXRpb24gPSBjb21wdXRlU2Nyb2xsU25h
cEFsaWduT2Zmc2V0KHNjcm9sbFNuYXBBcmVhLngoKSwgc2Nyb2xsU25hcEFyZWEubWF4WCgpLCB4
QWxpZ24sIGFyZWFYQXhpc0ZsaXBwZWQpIC0gY29tcHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChz
Y3JvbGxTbmFwUG9ydC54KCksIHNjcm9sbFNuYXBQb3J0Lm1heFgoKSwgeEFsaWduLCBhcmVhWEF4
aXNGbGlwcGVkKTsKICAgICAgICAgICAgIGF1dG8gYWJzb2x1dGVTY3JvbGxPZmZzZXQgPSBjbGFt
cFRvPGludD4oc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsT2Zmc2V0RnJvbVBvc2l0aW9uKHsgcm91bmRU
b0ludChhYnNvbHV0ZVNjcm9sbFhQb3NpdGlvbiksIDAgfSkueCgpLCAwLCBtYXhTY3JvbGxPZmZz
ZXQueCgpKTsKLSAgICAgICAgICAgIGFkZE9yVXBkYXRlU3RvcEZvclNuYXBPZmZzZXQoaG9yaXpv
bnRhbFNuYXBPZmZzZXRzTWFwLCB7IGFic29sdXRlU2Nyb2xsT2Zmc2V0LCBzdG9wLCBzbmFwQXJl
YXMuc2l6ZSgpIC0gMSB9KTsKKyAgICAgICAgICAgIGFkZE9yVXBkYXRlU3RvcEZvclNuYXBPZmZz
ZXQoaG9yaXpvbnRhbFNuYXBPZmZzZXRzTWFwLCBhYnNvbHV0ZVNjcm9sbE9mZnNldCwgc3RvcCwg
c2Nyb2xsU25hcEFyZWFBc09mZnNldHMud2lkdGgoKSA+IHNjcm9sbFNuYXBQb3J0LndpZHRoKCks
IHNuYXBBcmVhcy5zaXplKCkgLSAxKTsKICAgICAgICAgfQogICAgICAgICBpZiAoc25hcHNWZXJ0
aWNhbGx5KSB7CiAgICAgICAgICAgICBhdXRvIGFic29sdXRlU2Nyb2xsWVBvc2l0aW9uID0gY29t
cHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChzY3JvbGxTbmFwQXJlYS55KCksIHNjcm9sbFNuYXBB
cmVhLm1heFkoKSwgeUFsaWduLCBhcmVhWUF4aXNGbGlwcGVkKSAtIGNvbXB1dGVTY3JvbGxTbmFw
QWxpZ25PZmZzZXQoc2Nyb2xsU25hcFBvcnQueSgpLCBzY3JvbGxTbmFwUG9ydC5tYXhZKCksIHlB
bGlnbiwgYXJlYVlBeGlzRmxpcHBlZCk7CiAgICAgICAgICAgICBhdXRvIGFic29sdXRlU2Nyb2xs
T2Zmc2V0ID0gY2xhbXBUbzxpbnQ+KHNjcm9sbGFibGVBcmVhLnNjcm9sbE9mZnNldEZyb21Qb3Np
dGlvbih7IDAsIHJvdW5kVG9JbnQoYWJzb2x1dGVTY3JvbGxZUG9zaXRpb24pIH0pLnkoKSwgMCwg
bWF4U2Nyb2xsT2Zmc2V0LnkoKSk7Ci0gICAgICAgICAgICBhZGRPclVwZGF0ZVN0b3BGb3JTbmFw
T2Zmc2V0KHZlcnRpY2FsU25hcE9mZnNldHNNYXAsIHsgYWJzb2x1dGVTY3JvbGxPZmZzZXQsIHN0
b3AsIHNuYXBBcmVhcy5zaXplKCkgLSAxIH0pOworICAgICAgICAgICAgYWRkT3JVcGRhdGVTdG9w
Rm9yU25hcE9mZnNldCh2ZXJ0aWNhbFNuYXBPZmZzZXRzTWFwLCBhYnNvbHV0ZVNjcm9sbE9mZnNl
dCwgc3RvcCwgc2Nyb2xsU25hcEFyZWFBc09mZnNldHMuaGVpZ2h0KCkgPiBzY3JvbGxTbmFwUG9y
dC5oZWlnaHQoKSwgc25hcEFyZWFzLnNpemUoKSAtIDEpOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKCFzbmFwQXJlYXMuaXNFbXB0eSgpKQpAQCAtMzQ4LDcgKzM2NCw3IEBAIHN0YXRpYyBTY3Jv
bGxTbmFwT2Zmc2V0c0luZm88T3V0cHV0VHlwZSwgT3V0cHV0UmVjdFR5cGU+IGNvbnZlcnRPZmZz
ZXRJbmZvKGNvbnN0CiAgICAgICAgIFZlY3RvcjxTbmFwT2Zmc2V0PE91dHB1dFR5cGU+PiBvdXRw
dXQ7CiAgICAgICAgIG91dHB1dC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGlucHV0LnNpemUoKSk7
CiAgICAgICAgIGZvciAoYXV0byYgb2Zmc2V0IDogaW5wdXQpCi0gICAgICAgICAgICBvdXRwdXQu
dW5jaGVja2VkQXBwZW5kKHsgY29udmVydE9mZnNldFVuaXQob2Zmc2V0Lm9mZnNldCwgc2NhbGVG
YWN0b3IpLCBvZmZzZXQuc3RvcCwgb2Zmc2V0LnNuYXBBcmVhSW5kZXggfSk7CisgICAgICAgICAg
ICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKHsgY29udmVydE9mZnNldFVuaXQob2Zmc2V0Lm9mZnNl
dCwgc2NhbGVGYWN0b3IpLCBvZmZzZXQuc3RvcCwgb2Zmc2V0Lmhhc1NuYXBBcmVhTGFyZ2VyVGhh
blZpZXdwb3J0LCBvZmZzZXQuc25hcEFyZWFJbmRpY2VzIH0pOwogICAgICAgICByZXR1cm4gb3V0
cHV0OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsU25hcE9mZnNldHNJbmZvLmgKaW5kZXggMTVjMjI3NGIyN2EwNGRlODM5NzQ0Y2MyYjMx
NzgwZWQzMTlhNWE5Zi4uN2E5NGJhODRiOGFhYzUzMWFjNGFkOTQzNmEyZDgwYmJkYjMwYTVkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNl
dHNJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9m
ZnNldHNJbmZvLmgKQEAgLTQzLDcgKzQzLDggQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBzdHJ1
Y3QgU25hcE9mZnNldCB7CiAgICAgVCBvZmZzZXQ7CiAgICAgU2Nyb2xsU25hcFN0b3Agc3RvcDsK
LSAgICBzaXplX3Qgc25hcEFyZWFJbmRleDsKKyAgICBib29sIGhhc1NuYXBBcmVhTGFyZ2VyVGhh
blZpZXdwb3J0OworICAgIFZlY3RvcjxzaXplX3Q+IHNuYXBBcmVhSW5kaWNlczsKIH07CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBVbml0VHlwZSwgdHlwZW5hbWUgUmVjdFR5cGU+CkBAIC03NCw2ICs3
NSwxMSBAQCBzdHJ1Y3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvIHsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGQ6OnBhaXI8VW5pdFR5cGUsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+PiBjbG9zZXN0U25h
cE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IFNpemVUeXBlJiB2aWV3cG9ydFNpemUsIFBv
aW50VHlwZSBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIHN0ZDo6b3B0
aW9uYWw8VW5pdFR5cGU+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nID0g
c3RkOjpudWxsb3B0KSBjb25zdDsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFVuaXRUeXBlPiBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNuYXBPZmZzZXQ8VW5pdFR5cGU+JiBhLCBjb25z
dCBTbmFwT2Zmc2V0PFVuaXRUeXBlPiYgYikKK3sKKyAgICByZXR1cm4gYS5vZmZzZXQgPT0gYi5v
ZmZzZXQgJiYgYS5zdG9wID09IGIuc3RvcCAmJiBhLnNuYXBBcmVhSW5kaWNlcyA9PSBiLnNuYXBB
cmVhSW5kaWNlczsKK30KKwogdXNpbmcgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvID0gU2Ny
b2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQsIExheW91dFJlY3Q+OwogdXNpbmcgRmxvYXRT
Y3JvbGxTbmFwT2Zmc2V0c0luZm8gPSBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQsIEZsb2F0
UmVjdD47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5z
YWN0aW9uLmNwcAppbmRleCA5MWU0ZDg5YTJjMjFmYWRjZjBmOTYwODNlNzZlODMzNDNkZjc1OTQ3
Li43Y2QyY2EyYTYyMTY4N2RjNDE4Y2JhMDA1OTdjMzczNWU5YzU2YjMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCkBAIC01Mjcs
NyArNTI3LDggQEAgdm9pZCBBcmd1bWVudENvZGVyPFNuYXBPZmZzZXQ8ZmxvYXQ+Pjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNuYXBPZmZzZXQKIHsKICAgICBlbmNvZGVyIDw8IG9m
ZnNldC5vZmZzZXQ7CiAgICAgZW5jb2RlciA8PCBvZmZzZXQuc3RvcDsKLSAgICBlbmNvZGVyIDw8
IG9mZnNldC5zbmFwQXJlYUluZGV4OworICAgIGVuY29kZXIgPDwgb2Zmc2V0Lmhhc1NuYXBBcmVh
TGFyZ2VyVGhhblZpZXdwb3J0OworICAgIGVuY29kZXIgPDwgb2Zmc2V0LnNuYXBBcmVhSW5kaWNl
czsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPFNuYXBPZmZzZXQ8ZmxvYXQ+Pjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIFNuYXBPZmZzZXQ8ZmxvYXQ+JiBvZmZzZXQpCkBAIC01MzYsNyArNTM3
LDkgQEAgYm9vbCBBcmd1bWVudENvZGVyPFNuYXBPZmZzZXQ8ZmxvYXQ+Pjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIFNuYXBPZmZzZXQ8ZmxvYXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUob2Zmc2V0LnN0b3ApKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShvZmZzZXQuc25hcEFyZWFJbmRleCkpCisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShvZmZzZXQuaGFzU25hcEFyZWFMYXJnZXJUaGFuVmlld3BvcnQpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShvZmZzZXQuc25h
cEFyZWFJbmRpY2VzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwog
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggMDMwNmViN2NhNTM5NjI0YTVmZDA1
ZDA3Y2VkM2U0OGI4NjM2ZmI5My4uYTJhNTM5NGQzZmJlYTZhYjFlOTgxZGNiMTE1ZDI4ZGRjMTdl
M2I3NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MjEtMDctMjYgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAg
ICAgIFtjc3Mtc2Nyb2xsLXNuYXBdIENvbnNpZGVyIGFsbCBzbmFwIGFyZWFzIGF0IGEgZ2l2ZW4g
c25hcCBvZmZzZXQgd2hlbiBzbmFwcGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25h
cC9vdmVyZmxvd2luZy1zbmFwLWFyZWFzLmh0bWw6CisKIDIwMjEtMDctMjEgIFJvYiBCdWlzICA8
cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQXNwZWN0UmF0aW9dIEZpeCBzZWxlY3QtZWxl
bWVudC0wMDEuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL292ZXJmbG93aW5nLXNuYXAtYXJlYXMu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1zY3JvbGwtc25hcC9vdmVyZmxvd2luZy1zbmFwLWFyZWFzLmh0bWwKaW5kZXggYzFiNGUyNWM1
Nzc2ZDI0YTg2NmRjNDBkNTQzOTU3ODY0NTliZmFlZC4uMDhhZmY1ZWJhZWJmNzFkN2E0NjgzZGQ1
M2FhMmI1ZDlhMTRhOGYzMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL292ZXJmbG93aW5nLXNuYXAtYXJl
YXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3Mtc2Nyb2xsLXNuYXAvb3ZlcmZsb3dpbmctc25hcC1hcmVhcy5odG1sCkBAIC0yNCwx
NiArMjQsMTYgQEAgZGl2IHsKIH0KIC50YXJnZXQgewogICBzY3JvbGwtc25hcC1hbGlnbjogc3Rh
cnQ7CisgIGhlaWdodDogNDAwcHg7CisgIHdpZHRoOiA0MDBweDsKIH0KIC5sYXJnZS14IHsKICAg
d2lkdGg6IDMwMDBweDsKLSAgaGVpZ2h0OiA0MDBweDsKICAgYmFja2dyb3VuZC1jb2xvcjogeWVs
bG93OwogfQogLmxhcmdlLXkgewotICB3aWR0aDogNDAwcHg7CiAgIGhlaWdodDogMjAwMHB4Owot
ICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93Owog
fQogLnNtYWxsIHsKICAgaGVpZ2h0OiAyMDBweDsKQEAgLTcyLDExICs3MiwyNSBAQCBkaXYgewog
ICA8ZGl2IGNsYXNzPSJ0YXJnZXQgbGFyZ2UteCIgc3R5bGU9InRvcDogMjAwcHgiPjwvZGl2Pgog
PC9kaXY+CiAKKzxkaXYgY2xhc3M9InNjcm9sbGVyLXgiIGlkPSJvdmVybGFwcGluZy1vdmVyZmxv
dyIgc3R5bGU9InNjcm9sbC1zbmFwLXR5cGU6IGJvdGggbWFuZGF0b3J5Ij4KKyAgPGRpdiBjbGFz
cz0ic3BhY2UiPjwvZGl2PgorICA8ZGl2IHN0eWxlPSJsZWZ0OiAyMDBweDsgdG9wOiAyMDBweDsi
PgorICAgIDxkaXYgY2xhc3M9InRhcmdldCBzbWFsbCI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0i
dGFyZ2V0IHNtYWxsIj48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJ0YXJnZXQgc21hbGwiPjwvZGl2
PgorICAgIDxkaXYgY2xhc3M9InRhcmdldCBsYXJnZS15IGxhcmdlLXgiPjwvZGl2PgorICAgIDxk
aXYgY2xhc3M9InRhcmdldCBzbWFsbCI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0idGFyZ2V0IHNt
YWxsIj48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJ0YXJnZXQgc21hbGwiPjwvZGl2PgorICA8L2Rp
dj4KKzwvZGl2PgorCiA8c2NyaXB0PgogdmFyIG9uZV90YXJnZXRfc2Nyb2xsZXIgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgib25lLXRhcmdldCIpOwogdmFyIHNjcm9sbGVyX3ggPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgieCIpOwogdmFyIHNjcm9sbGVyX3kgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgieSIpOwogdmFyIHR3b19heGVzX3Njcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInR3by1heGVzIik7Cit2YXIgb3ZlcmxhcHBpbmdfc2Nyb2xsZXIgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgib3ZlcmxhcHBpbmctb3ZlcmZsb3ciKTsKIAogdGVzdCgoKSA9PiB7CiAg
IG9uZV90YXJnZXRfc2Nyb2xsZXIuc2Nyb2xsVG8oMTAsIDApOwpAQCAtMTY1LDQgKzE3OSwxOSBA
QCB0ZXN0KCgpID0+IHsKIH0sICJTbmFwIHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIG9uIHgg
YXMgdGhlIGFyZWEgaXMgY292ZXJpbmcgeCBheGlzLiIgKwogICAgIkhvd2V2ZXIsIHdlIHNuYXAg
dG8gdGhlIHNwZWNpZmllZCBzbmFwIHBvc2l0aW9uIG9uIHkgYXMgdGhlIGFyZWEgaXMgbm90ICIg
KwogICAgImNvdmVyaW5nIHkgYXhpcy4iKTsKKwordGVzdCgoKSA9PiB7CisgIG92ZXJsYXBwaW5n
X3Njcm9sbGVyLnNjcm9sbFRvKDIwMCwgODAwKTsKKyAgYXNzZXJ0X2VxdWFscyhvdmVybGFwcGlu
Z19zY3JvbGxlci5zY3JvbGxMZWZ0LCAyMDApOworICBhc3NlcnRfZXF1YWxzKG92ZXJsYXBwaW5n
X3Njcm9sbGVyLnNjcm9sbFRvcCwgODAwKTsKK30sICJzbmFwIHRvIGN1cnJlbnQgc2Nyb2xsIHBv
c2l0aW9uIG9uIHkgYXMgdGhlIGFyZWEgaXMgY292ZXJpbmcgeSBheGlzLCAiICsKKyAgICJldmVu
IHRob3VnaCB0aGF0IGFyZWEgaXMgbm90IHRoZSBvbmx5IHNjcm9sbCBhcmVhIGF0IHRoZSBzYW1l
IHBvc2l0aW9uLiIpOworCit0ZXN0KCgpID0+IHsKKyAgb3ZlcmxhcHBpbmdfc2Nyb2xsZXIuc2Ny
b2xsVG8oODAwLCAyMDApOworICBhc3NlcnRfZXF1YWxzKG92ZXJsYXBwaW5nX3Njcm9sbGVyLnNj
cm9sbExlZnQsIDgwMCk7CisgIGFzc2VydF9lcXVhbHMob3ZlcmxhcHBpbmdfc2Nyb2xsZXIuc2Ny
b2xsVG9wLCAyMDApOworfSwgInNuYXAgdG8gY3VycmVudCBzY3JvbGwgcG9zaXRpb24gb24geCBh
cyB0aGUgYXJlYSBpcyBjb3ZlcmluZyB4IGF4aXMsICIgKworICAgImV2ZW4gdGhvdWdoIHRoYXQg
YXJlYSBpcyBub3QgdGhlIG9ubHkgc2Nyb2xsIGFyZWEgYXQgdGhlIHNhbWUgcG9zaXRpb24uIik7
Cis8L3NjcmlwdD4KIDwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434235</attachid>
            <date>2021-07-26 14:04:35 -0700</date>
            <delta_ts>2021-08-02 01:54:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228141-20210726230433.patch</filename>
            <type>text/plain</type>
            <size>15860</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ2NTgyZmNkOTBhMTEz
MTg4ZmQ0Y2U4NThmZmIzNTczMWMzM2Y3Ny4uOWEwNzYzOTZlYzk1MGIxZjYyNmQ1NTc0YTM1ZDll
ODAwYjVmZWZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTA3LTI2ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBbY3NzLXNjcm9s
bC1zbmFwXSBDb25zaWRlciBhbGwgc25hcCBhcmVhcyBhdCBhIGdpdmVuIHNuYXAgb2Zmc2V0IHdo
ZW4gc25hcHBpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyODE0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdoZW4gZGVjaWRpbmcgd2hldGhlciB0byBzbmFwIHRvIHNuYXAgYXJlYXMgdGhhdCBvdmVy
ZmxvdyB0aGUgc25hcCBwb3J0LCBkb24ndAorICAgICAgICBqdXN0IGNvbnNpZGVyIHRoZSBmaXJz
dCBzbmFwIGFyZWEgYXQgYSBnaXZlbiBzbmFwIG9mZnNldC4gSW5zdGVhZCwga2VlcCBpbmZvcm1h
dGlvbgorICAgICAgICBhYm91dCBhbGwgc25hcCBhcmVhcyBpbiB0aGUgU2Nyb2xTbmFwT2Zmc2V0
SW5mby4gSW4gb3JkZXIgdG8gYXZvaWQgaXRlcmF0aW5nIG92ZXIKKyAgICAgICAgYXJyYXlzIG9m
IGh1bmRyZWRzIG9mIHJlY3RhbmdsZXMsIGFsc28gcmVjb3JkIHdoZXRoZXIgYW55IG9mIHRoZW0g
YXJlIGxhcmdlciB0aGFuCisgICAgICAgIHRoZSB2aWV3cG9ydC4gVGhpcyB3aWxsIGF2b2lkIGV4
dHJhIHdvcmsgb24gdGhlIG1vc3QgY29tbW9uIHVzZWNhc2Ugb2YgbGFyZ2Ugc2V0cworICAgICAg
ICBvZiBzbmFwIGFyZWFzIChncmlkZGVkIHRhYmxlIGxheW91dHMpLgorCisgICAgICAgIFRoaXMg
Y2hhbmdlIGlzIHRlc3RlZCBieSBleHRlbmRpbmcgYW4gZXhpc3RpbmcgV1BUIHRlc3QuCisKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cmFuZ2VGb3JBeGlzKTogQWRkZWQgdGhpcyBoZWxwZXIuCisgICAgICAgIChX
ZWJDb3JlOjpzZWFyY2hGb3JQb3RlbnRpYWxTbmFwUG9pbnRzKTogV2hlbiBkZWNpZGluZyBpZiBh
IHBhcnRpY3VsYXIgc25hcCBhcmVhCisgICAgICAgIG92ZXJmbG93cyB0aGUgc25hcCBwb3J0LCBs
b29rIGF0IGFsbCBhdmFpbGFibGUgc25hcCBhcmVhcyBpbnN0ZWFkIG9mIGp1c3QgdGhlCisgICAg
ICAgIGZpcnN0IG9uZS4KKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVNuYXBPZmZzZXRzRm9yU2Ny
b2xsYWJsZUFyZWEpOiBJbnN0ZWFkIG9mIG9ubHkgcmVjb3JkaW5nIHRoZSBmaXJzdAorICAgICAg
ICBzbmFwIGFyZWEsIHJlY29yZCBhbGwgb2YgdGhlbSBpbiB0aGUgbGlzdCBvZiBzbmFwIGFyZWEg
cmVjdGFuZ2xlcy4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRPZmZzZXRJbmZvKTogQ29udmVy
dCB0aGUgbGlzdCBvZiBzbmFwIGFyZXMuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
U25hcE9mZnNldHNJbmZvLmg6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KTogQWRkZWQg
dGhpcyBvcGVyYXRvciB3aGljaCBpcyBuZWNlc3Nhcnkgbm93IHRoYXQgc25hcEFyZWFJbmRpY2Vz
CisgICAgICAgIGlzIGEgdmVjdG9yLgorCiAyMDIxLTA3LTIyICBNYXJ0aW4gUm9iaW5zb24gIDxt
cm9iaW5zb25Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbY3NzLXNjcm9sbC1zbmFwXSBQYXNzIHRo
ZSBmdWxsIHRhcmdldCBwb2ludCB3aGVuIHNlbGVjdGluZyBhIHNuYXAgb2Zmc2V0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDI4MDA5NmExM2RhN2Y0M2I0NTU0ZmU0NmYxMjJmN2VkYjljNjFkMDYuLjU0NWY3YmFjYjQ4
MzY1NDU2MWJkZGVlNTgyM2Q4NjcwMDQxYWNiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMjEtMDctMjYgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtjc3Mtc2Nyb2xsLXNuYXBdIENvbnNpZGVyIGFsbCBzbmFwIGFyZWFzIGF0IGEgZ2l2
ZW4gc25hcCBvZmZzZXQgd2hlbiBzbmFwcGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoQXJndW1lbnRDb2RlcjxT
bmFwT2Zmc2V0PGZsb2F0Pj46OmVuY29kZSk6IFNlcmlhbGl6ZSBuZXcgbWVtYmVycy4KKyAgICAg
ICAgKEFyZ3VtZW50Q29kZXI8U25hcE9mZnNldDxmbG9hdD4+OjpkZWNvZGUpOiBEZXNlcmlhbGl6
ZSBuZXcgbWVtYmVycy4KKwogMjAyMS0wNy0yMiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29u
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW2Nzcy1zY3JvbGwtc25hcF0gUGFzcyB0aGUgZnVsbCB0
YXJnZXQgcG9pbnQgd2hlbiBzZWxlY3RpbmcgYSBzbmFwIG9mZnNldApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAKaW5k
ZXggZjRhZDVkNGFiMDIxMzc4MzZmZTI2YzhhMTEzYTNjZDkwY2NmODkxYy4uMjcxY2QyMTU4ZDlk
ZjEwMzg4Nzg5MTBiM2M2MjliZmUyMjg0MzdhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwCkBAIC00MCw2ICs0
MCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBVbml0
VHlwZSwgdHlwZW5hbWUgUmVjdFR5cGU+CitzdGF0aWMgc3RkOjpwYWlyPFVuaXRUeXBlLCBVbml0
VHlwZT4gcmFuZ2VGb3JBeGlzKFJlY3RUeXBlIHJlY3QsIFNjcm9sbEV2ZW50QXhpcyBheGlzKQor
eworICAgIHJldHVybiBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IHN0ZDo6
bWFrZV9wYWlyKHJlY3QueCgpLCByZWN0Lm1heFgoKSkgOiBzdGQ6Om1ha2VfcGFpcihyZWN0Lnko
KSwgcmVjdC5tYXhZKCkpOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVW5pdFR5cGU+CiBzdHJ1
Y3QgUG90ZW50aWFsU25hcFBvaW50U2VhcmNoUmVzdWx0IHsKICAgICBzdGQ6Om9wdGlvbmFsPHN0
ZDo6cGFpcjxVbml0VHlwZSwgdW5zaWduZWQ+PiBwcmV2aW91czsKQEAgLTY3LDEzICs3MywxNyBA
QCBzdGF0aWMgUG90ZW50aWFsU25hcFBvaW50U2VhcmNoUmVzdWx0PFVuaXRUeXBlPiBzZWFyY2hG
b3JQb3RlbnRpYWxTbmFwUG9pbnRzKGNvbgogICAgIH07CiAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgc25hcE9mZnNldHMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgVW5pdFR5cGUgcG90
ZW50aWFsU25hcE9mZnNldCA9IHNuYXBPZmZzZXRzW2ldLm9mZnNldDsKLQotICAgICAgICBjb25z
dCBhdXRvJiBzbmFwQXJlYSA9IGluZm8uc25hcEFyZWFzW3NuYXBPZmZzZXRzW2ldLnNuYXBBcmVh
SW5kZXhdOwotICAgICAgICBhdXRvIHNuYXBBcmVhTWluID0gYXhpcyA9PSBTY3JvbGxFdmVudEF4
aXM6Okhvcml6b250YWwgPyBzbmFwQXJlYS54KCkgOiBzbmFwQXJlYS55KCk7Ci0gICAgICAgIGF1
dG8gc25hcEFyZWFNYXggPSBheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/IHNu
YXBBcmVhLm1heFgoKSA6IHNuYXBBcmVhLm1heFkoKTsKLSAgICAgICAgbGFuZGVkSW5zaWRlU25h
cEFyZWFUaGF0Q29uc3VtZXNWaWV3cG9ydCB8PSBzbmFwQXJlYU1pbiA8PSBkZXN0aW5hdGlvbk9m
ZnNldCAmJiBzbmFwQXJlYU1heCA+PSAoZGVzdGluYXRpb25PZmZzZXQgKyB2aWV3cG9ydExlbmd0
aCk7CisgICAgICAgIGlmICghbGFuZGVkSW5zaWRlU25hcEFyZWFUaGF0Q29uc3VtZXNWaWV3cG9y
dCAmJiBzbmFwT2Zmc2V0c1tpXS5oYXNTbmFwQXJlYUxhcmdlclRoYW5WaWV3cG9ydCkgeworICAg
ICAgICAgICAgZm9yIChhdXRvIHNuYXBBcmVhSW5kaWNlcyA6IHNuYXBPZmZzZXRzW2ldLnNuYXBB
cmVhSW5kaWNlcykgeworICAgICAgICAgICAgICAgIGF1dG8gW3NuYXBBcmVhTWluLCBzbmFwQXJl
YU1heF0gPSByYW5nZUZvckF4aXM8VW5pdFR5cGU+KGluZm8uc25hcEFyZWFzW3NuYXBBcmVhSW5k
aWNlc10sIGF4aXMpOworICAgICAgICAgICAgICAgIGlmIChzbmFwQXJlYU1pbiA8PSBkZXN0aW5h
dGlvbk9mZnNldCAmJiBzbmFwQXJlYU1heCA+PSAoZGVzdGluYXRpb25PZmZzZXQgKyB2aWV3cG9y
dExlbmd0aCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbGFuZGVkSW5zaWRlU25hcEFyZWFUaGF0
Q29uc3VtZXNWaWV3cG9ydCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogCisgICAgICAgIFVuaXRU
eXBlIHBvdGVudGlhbFNuYXBPZmZzZXQgPSBzbmFwT2Zmc2V0c1tpXS5vZmZzZXQ7CiAgICAgICAg
IGlmIChwb3RlbnRpYWxTbmFwT2Zmc2V0ID09IGRlc3RpbmF0aW9uT2Zmc2V0KQogICAgICAgICAg
ICAgZXhhY3QgPSBzdGQ6Om1ha2VfcGFpcihwb3RlbnRpYWxTbmFwT2Zmc2V0LCBpKTsKICAgICAg
ICAgZWxzZSBpZiAocG90ZW50aWFsU25hcE9mZnNldCA8IGRlc3RpbmF0aW9uT2Zmc2V0KQpAQCAt
MjE5LDEyICsyMjksMTggQEAgdm9pZCB1cGRhdGVTbmFwT2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVh
KFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSwgY29uc3QgUmUKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGF1dG8gYWRkT3JVcGRhdGVTdG9wRm9yU25hcE9mZnNldCA9IFtdKEhh
c2hNYXA8ZmxvYXQsIFNuYXBPZmZzZXQ8TGF5b3V0VW5pdD4+JiBvZmZzZXRzLCBTbmFwT2Zmc2V0
PExheW91dFVuaXQ+IG5ld09mZnNldCkKKyAgICBhdXRvIGFkZE9yVXBkYXRlU3RvcEZvclNuYXBP
ZmZzZXQgPSBbXShIYXNoTWFwPGZsb2F0LCBTbmFwT2Zmc2V0PExheW91dFVuaXQ+PiYgb2Zmc2V0
cywgTGF5b3V0VW5pdCBuZXdPZmZzZXQsIFNjcm9sbFNuYXBTdG9wIHN0b3AsIGJvb2wgaGFzU25h
cEFyZWFMYXJnZXJUaGFuVmlld3BvcnQsIHNpemVfdCBzbmFwQXJlYUluZGljZXMpCiAgICAgewor
ICAgICAgICBhdXRvIG9mZnNldCA9IG9mZnNldHMuZW5zdXJlKG5ld09mZnNldCwgWyZdIHsKKyAg
ICAgICAgICAgIHJldHVybiBTbmFwT2Zmc2V0PExheW91dFVuaXQ+IHsgbmV3T2Zmc2V0LCBzdG9w
LCBoYXNTbmFwQXJlYUxhcmdlclRoYW5WaWV3cG9ydCwgeyB9IH07CisgICAgICAgIH0pOworCiAg
ICAgICAgIC8vIElmIHRoZSBvZmZzZXQgYWxyZWFkeSBleGlzdHMsIHdlIGVuc3VyZSB0aGF0IGl0
IGhhcyBTY3JvbGxTbmFwU3RvcDo6QWx3YXlzLCB3aGVuIGFwcHJvcHJpYXRlLgotICAgICAgICBh
dXRvIGFkZFJlc3VsdCA9IG9mZnNldHMuYWRkKG5ld09mZnNldC5vZmZzZXQsIG5ld09mZnNldCk7
Ci0gICAgICAgIGlmIChuZXdPZmZzZXQuc3RvcCA9PSBTY3JvbGxTbmFwU3RvcDo6QWx3YXlzKQot
ICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zdG9wID0gU2Nyb2xsU25hcFN0
b3A6OkFsd2F5czsKKyAgICAgICAgaWYgKHN0b3AgPT0gU2Nyb2xsU25hcFN0b3A6OkFsd2F5cykK
KyAgICAgICAgICAgIG9mZnNldC5pdGVyYXRvci0+dmFsdWUuc3RvcCA9IFNjcm9sbFNuYXBTdG9w
OjpBbHdheXM7CisKKyAgICAgICAgb2Zmc2V0Lml0ZXJhdG9yLT52YWx1ZS5oYXNTbmFwQXJlYUxh
cmdlclRoYW5WaWV3cG9ydCB8PSBoYXNTbmFwQXJlYUxhcmdlclRoYW5WaWV3cG9ydDsKKyAgICAg
ICAgb2Zmc2V0Lml0ZXJhdG9yLT52YWx1ZS5zbmFwQXJlYUluZGljZXMuYXBwZW5kKHNuYXBBcmVh
SW5kaWNlcyk7CiAgICAgfTsKIAogICAgIEhhc2hNYXA8ZmxvYXQsIFNuYXBPZmZzZXQ8TGF5b3V0
VW5pdD4+IHZlcnRpY2FsU25hcE9mZnNldHNNYXA7CkBAIC0yOTMsMTIgKzMwOSwxMiBAQCB2b2lk
IHVwZGF0ZVNuYXBPZmZzZXRzRm9yU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEmIHNjcm9s
bGFibGVBcmVhLCBjb25zdCBSZQogICAgICAgICBpZiAoc25hcHNIb3Jpem9udGFsbHkpIHsKICAg
ICAgICAgICAgIGF1dG8gYWJzb2x1dGVTY3JvbGxYUG9zaXRpb24gPSBjb21wdXRlU2Nyb2xsU25h
cEFsaWduT2Zmc2V0KHNjcm9sbFNuYXBBcmVhLngoKSwgc2Nyb2xsU25hcEFyZWEubWF4WCgpLCB4
QWxpZ24sIGFyZWFYQXhpc0ZsaXBwZWQpIC0gY29tcHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChz
Y3JvbGxTbmFwUG9ydC54KCksIHNjcm9sbFNuYXBQb3J0Lm1heFgoKSwgeEFsaWduLCBhcmVhWEF4
aXNGbGlwcGVkKTsKICAgICAgICAgICAgIGF1dG8gYWJzb2x1dGVTY3JvbGxPZmZzZXQgPSBjbGFt
cFRvPGludD4oc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsT2Zmc2V0RnJvbVBvc2l0aW9uKHsgcm91bmRU
b0ludChhYnNvbHV0ZVNjcm9sbFhQb3NpdGlvbiksIDAgfSkueCgpLCAwLCBtYXhTY3JvbGxPZmZz
ZXQueCgpKTsKLSAgICAgICAgICAgIGFkZE9yVXBkYXRlU3RvcEZvclNuYXBPZmZzZXQoaG9yaXpv
bnRhbFNuYXBPZmZzZXRzTWFwLCB7IGFic29sdXRlU2Nyb2xsT2Zmc2V0LCBzdG9wLCBzbmFwQXJl
YXMuc2l6ZSgpIC0gMSB9KTsKKyAgICAgICAgICAgIGFkZE9yVXBkYXRlU3RvcEZvclNuYXBPZmZz
ZXQoaG9yaXpvbnRhbFNuYXBPZmZzZXRzTWFwLCBhYnNvbHV0ZVNjcm9sbE9mZnNldCwgc3RvcCwg
c2Nyb2xsU25hcEFyZWFBc09mZnNldHMud2lkdGgoKSA+IHNjcm9sbFNuYXBQb3J0LndpZHRoKCks
IHNuYXBBcmVhcy5zaXplKCkgLSAxKTsKICAgICAgICAgfQogICAgICAgICBpZiAoc25hcHNWZXJ0
aWNhbGx5KSB7CiAgICAgICAgICAgICBhdXRvIGFic29sdXRlU2Nyb2xsWVBvc2l0aW9uID0gY29t
cHV0ZVNjcm9sbFNuYXBBbGlnbk9mZnNldChzY3JvbGxTbmFwQXJlYS55KCksIHNjcm9sbFNuYXBB
cmVhLm1heFkoKSwgeUFsaWduLCBhcmVhWUF4aXNGbGlwcGVkKSAtIGNvbXB1dGVTY3JvbGxTbmFw
QWxpZ25PZmZzZXQoc2Nyb2xsU25hcFBvcnQueSgpLCBzY3JvbGxTbmFwUG9ydC5tYXhZKCksIHlB
bGlnbiwgYXJlYVlBeGlzRmxpcHBlZCk7CiAgICAgICAgICAgICBhdXRvIGFic29sdXRlU2Nyb2xs
T2Zmc2V0ID0gY2xhbXBUbzxpbnQ+KHNjcm9sbGFibGVBcmVhLnNjcm9sbE9mZnNldEZyb21Qb3Np
dGlvbih7IDAsIHJvdW5kVG9JbnQoYWJzb2x1dGVTY3JvbGxZUG9zaXRpb24pIH0pLnkoKSwgMCwg
bWF4U2Nyb2xsT2Zmc2V0LnkoKSk7Ci0gICAgICAgICAgICBhZGRPclVwZGF0ZVN0b3BGb3JTbmFw
T2Zmc2V0KHZlcnRpY2FsU25hcE9mZnNldHNNYXAsIHsgYWJzb2x1dGVTY3JvbGxPZmZzZXQsIHN0
b3AsIHNuYXBBcmVhcy5zaXplKCkgLSAxIH0pOworICAgICAgICAgICAgYWRkT3JVcGRhdGVTdG9w
Rm9yU25hcE9mZnNldCh2ZXJ0aWNhbFNuYXBPZmZzZXRzTWFwLCBhYnNvbHV0ZVNjcm9sbE9mZnNl
dCwgc3RvcCwgc2Nyb2xsU25hcEFyZWFBc09mZnNldHMuaGVpZ2h0KCkgPiBzY3JvbGxTbmFwUG9y
dC5oZWlnaHQoKSwgc25hcEFyZWFzLnNpemUoKSAtIDEpOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKCFzbmFwQXJlYXMuaXNFbXB0eSgpKQpAQCAtMzQ4LDcgKzM2NCw3IEBAIHN0YXRpYyBTY3Jv
bGxTbmFwT2Zmc2V0c0luZm88T3V0cHV0VHlwZSwgT3V0cHV0UmVjdFR5cGU+IGNvbnZlcnRPZmZz
ZXRJbmZvKGNvbnN0CiAgICAgICAgIFZlY3RvcjxTbmFwT2Zmc2V0PE91dHB1dFR5cGU+PiBvdXRw
dXQ7CiAgICAgICAgIG91dHB1dC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGlucHV0LnNpemUoKSk7
CiAgICAgICAgIGZvciAoYXV0byYgb2Zmc2V0IDogaW5wdXQpCi0gICAgICAgICAgICBvdXRwdXQu
dW5jaGVja2VkQXBwZW5kKHsgY29udmVydE9mZnNldFVuaXQob2Zmc2V0Lm9mZnNldCwgc2NhbGVG
YWN0b3IpLCBvZmZzZXQuc3RvcCwgb2Zmc2V0LnNuYXBBcmVhSW5kZXggfSk7CisgICAgICAgICAg
ICBvdXRwdXQudW5jaGVja2VkQXBwZW5kKHsgY29udmVydE9mZnNldFVuaXQob2Zmc2V0Lm9mZnNl
dCwgc2NhbGVGYWN0b3IpLCBvZmZzZXQuc3RvcCwgb2Zmc2V0Lmhhc1NuYXBBcmVhTGFyZ2VyVGhh
blZpZXdwb3J0LCBvZmZzZXQuc25hcEFyZWFJbmRpY2VzIH0pOwogICAgICAgICByZXR1cm4gb3V0
cHV0OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsU25hcE9mZnNldHNJbmZvLmgKaW5kZXggMTVjMjI3NGIyN2EwNGRlODM5NzQ0Y2MyYjMx
NzgwZWQzMTlhNWE5Zi4uN2E5NGJhODRiOGFhYzUzMWFjNGFkOTQzNmEyZDgwYmJkYjMwYTVkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNl
dHNJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9m
ZnNldHNJbmZvLmgKQEAgLTQzLDcgKzQzLDggQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBzdHJ1
Y3QgU25hcE9mZnNldCB7CiAgICAgVCBvZmZzZXQ7CiAgICAgU2Nyb2xsU25hcFN0b3Agc3RvcDsK
LSAgICBzaXplX3Qgc25hcEFyZWFJbmRleDsKKyAgICBib29sIGhhc1NuYXBBcmVhTGFyZ2VyVGhh
blZpZXdwb3J0OworICAgIFZlY3RvcjxzaXplX3Q+IHNuYXBBcmVhSW5kaWNlczsKIH07CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBVbml0VHlwZSwgdHlwZW5hbWUgUmVjdFR5cGU+CkBAIC03NCw2ICs3
NSwxMSBAQCBzdHJ1Y3QgU2Nyb2xsU25hcE9mZnNldHNJbmZvIHsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGQ6OnBhaXI8VW5pdFR5cGUsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+PiBjbG9zZXN0U25h
cE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IFNpemVUeXBlJiB2aWV3cG9ydFNpemUsIFBv
aW50VHlwZSBzY3JvbGxEZXN0aW5hdGlvbk9mZnNldCwgZmxvYXQgdmVsb2NpdHksIHN0ZDo6b3B0
aW9uYWw8VW5pdFR5cGU+IG9yaWdpbmFsUG9zaXRpb25Gb3JEaXJlY3Rpb25hbFNuYXBwaW5nID0g
c3RkOjpudWxsb3B0KSBjb25zdDsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFVuaXRUeXBlPiBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNuYXBPZmZzZXQ8VW5pdFR5cGU+JiBhLCBjb25z
dCBTbmFwT2Zmc2V0PFVuaXRUeXBlPiYgYikKK3sKKyAgICByZXR1cm4gYS5vZmZzZXQgPT0gYi5v
ZmZzZXQgJiYgYS5zdG9wID09IGIuc3RvcCAmJiBhLnNuYXBBcmVhSW5kaWNlcyA9PSBiLnNuYXBB
cmVhSW5kaWNlczsKK30KKwogdXNpbmcgTGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvID0gU2Ny
b2xsU25hcE9mZnNldHNJbmZvPExheW91dFVuaXQsIExheW91dFJlY3Q+OwogdXNpbmcgRmxvYXRT
Y3JvbGxTbmFwT2Zmc2V0c0luZm8gPSBTY3JvbGxTbmFwT2Zmc2V0c0luZm88ZmxvYXQsIEZsb2F0
UmVjdD47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5z
YWN0aW9uLmNwcAppbmRleCA5MWU0ZDg5YTJjMjFmYWRjZjBmOTYwODNlNzZlODMzNDNkZjc1OTQ3
Li43Y2QyY2EyYTYyMTY4N2RjNDE4Y2JhMDA1OTdjMzczNWU5YzU2YjMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCkBAIC01Mjcs
NyArNTI3LDggQEAgdm9pZCBBcmd1bWVudENvZGVyPFNuYXBPZmZzZXQ8ZmxvYXQ+Pjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNuYXBPZmZzZXQKIHsKICAgICBlbmNvZGVyIDw8IG9m
ZnNldC5vZmZzZXQ7CiAgICAgZW5jb2RlciA8PCBvZmZzZXQuc3RvcDsKLSAgICBlbmNvZGVyIDw8
IG9mZnNldC5zbmFwQXJlYUluZGV4OworICAgIGVuY29kZXIgPDwgb2Zmc2V0Lmhhc1NuYXBBcmVh
TGFyZ2VyVGhhblZpZXdwb3J0OworICAgIGVuY29kZXIgPDwgb2Zmc2V0LnNuYXBBcmVhSW5kaWNl
czsKIH0KIAogYm9vbCBBcmd1bWVudENvZGVyPFNuYXBPZmZzZXQ8ZmxvYXQ+Pjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIFNuYXBPZmZzZXQ8ZmxvYXQ+JiBvZmZzZXQpCkBAIC01MzYsNyArNTM3
LDkgQEAgYm9vbCBBcmd1bWVudENvZGVyPFNuYXBPZmZzZXQ8ZmxvYXQ+Pjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIFNuYXBPZmZzZXQ8ZmxvYXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUob2Zmc2V0LnN0b3ApKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShvZmZzZXQuc25hcEFyZWFJbmRleCkpCisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShvZmZzZXQuaGFzU25hcEFyZWFMYXJnZXJUaGFuVmlld3BvcnQpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShvZmZzZXQuc25h
cEFyZWFJbmRpY2VzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwog
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggMDMwNmViN2NhNTM5NjI0YTVmZDA1
ZDA3Y2VkM2U0OGI4NjM2ZmI5My4uOGI3Yzg2OWE2OGViZmQ1YWY0M2UxODA5ZTM1MzM4MTFiYTU4
NmZiMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MjEtMDctMjYgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAg
ICAgIFtjc3Mtc2Nyb2xsLXNuYXBdIENvbnNpZGVyIGFsbCBzbmFwIGFyZWFzIGF0IGEgZ2l2ZW4g
c25hcCBvZmZzZXQgd2hlbiBzbmFwcGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25h
cC9vdmVyZmxvd2luZy1zbmFwLWFyZWFzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9vdmVyZmxvd2luZy1zbmFwLWFyZWFzLmh0
bWw6CisKIDIwMjEtMDctMjEgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbQXNwZWN0UmF0aW9dIEZpeCBzZWxlY3QtZWxlbWVudC0wMDEuaHRtbApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9s
bC1zbmFwL292ZXJmbG93aW5nLXNuYXAtYXJlYXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL292ZXJm
bG93aW5nLXNuYXAtYXJlYXMtZXhwZWN0ZWQudHh0CmluZGV4IDI1OWNkOTgwYzU0OWEwNThhMDhm
ZmZhN2YyNDMyMWY2YWM1ODMyMjcuLjFiODhiMmZlZWM2N2ZmNGQzNWY5YjFmZjM0MzY2MWIxOWJk
NWZkMWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy1zY3JvbGwtc25hcC9vdmVyZmxvd2luZy1zbmFwLWFyZWFzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3Mtc2Nyb2xsLXNuYXAvb3ZlcmZsb3dpbmctc25hcC1hcmVhcy1leHBlY3RlZC50eHQKQEAg
LTEwLDQgKzEwLDYgQEAgUEFTUyBTbmFwIHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIHdoaWNo
IGlzIGEgdmFsaWQgc25hcCBwb3NpdGlvbiwgYXMgdGhlIHNuYXAKIFBBU1MgU25hcCB0byBjdXJy
ZW50IHNjcm9sbCBwb3NpdGlvbiB3aGljaCBpcyBhIHZhbGlkIHNuYXAgcG9zaXRpb24sIGFzIHRo
ZSBzbmFwIGFyZWEgY292ZXJzIHNuYXBwb3J0IG9uIHkgYW5kIHRoZXJlIGlzIG5vIHN1YnNlcXVl
bnQgc25hcCBwb3NpdGlvbnMuCiBQQVNTIERvbid0IHNuYXAgYmFjayBldmVuIGlmIHNjcm9sbFRv
IHRyaWVzIHRvIHNjcm9sbCB0byBwb3NpdGlvbnMgd2hpY2ggYXJlIG91dHNpZGUgb2YgdGhlIHNj
cm9sbCByYW5nZSBhbmQgaWYgYSBzbmFwIHRhcmdldCBlbGVtZW50IGNvdmVycyB0aGUgc25hcG9y
dAogUEFTUyBTbmFwIHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIG9uIHggYXMgdGhlIGFyZWEg
aXMgY292ZXJpbmcgeCBheGlzLkhvd2V2ZXIsIHdlIHNuYXAgdG8gdGhlIHNwZWNpZmllZCBzbmFw
IHBvc2l0aW9uIG9uIHkgYXMgdGhlIGFyZWEgaXMgbm90IGNvdmVyaW5nIHkgYXhpcy4KK1BBU1Mg
c25hcCB0byBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiBvbiB5IGFzIHRoZSBhcmVhIGlzIGNvdmVy
aW5nIHkgYXhpcywgZXZlbiB0aG91Z2ggdGhhdCBhcmVhIGlzIG5vdCB0aGUgb25seSBzY3JvbGwg
YXJlYSBhdCB0aGUgc2FtZSBwb3NpdGlvbi4KK1BBU1Mgc25hcCB0byBjdXJyZW50IHNjcm9sbCBw
b3NpdGlvbiBvbiB4IGFzIHRoZSBhcmVhIGlzIGNvdmVyaW5nIHggYXhpcywgZXZlbiB0aG91Z2gg
dGhhdCBhcmVhIGlzIG5vdCB0aGUgb25seSBzY3JvbGwgYXJlYSBhdCB0aGUgc2FtZSBwb3NpdGlv
bi4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL292ZXJmbG93aW5nLXNuYXAtYXJlYXMuaHRtbCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zY3JvbGwt
c25hcC9vdmVyZmxvd2luZy1zbmFwLWFyZWFzLmh0bWwKaW5kZXggYzFiNGUyNWM1Nzc2ZDI0YTg2
NmRjNDBkNTQzOTU3ODY0NTliZmFlZC4uMDhhZmY1ZWJhZWJmNzFkN2E0NjgzZGQ1M2FhMmI1ZDlh
MTRhOGYzMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXNjcm9sbC1zbmFwL292ZXJmbG93aW5nLXNuYXAtYXJlYXMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
c2Nyb2xsLXNuYXAvb3ZlcmZsb3dpbmctc25hcC1hcmVhcy5odG1sCkBAIC0yNCwxNiArMjQsMTYg
QEAgZGl2IHsKIH0KIC50YXJnZXQgewogICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7CisgIGhl
aWdodDogNDAwcHg7CisgIHdpZHRoOiA0MDBweDsKIH0KIC5sYXJnZS14IHsKICAgd2lkdGg6IDMw
MDBweDsKLSAgaGVpZ2h0OiA0MDBweDsKICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OwogfQog
LmxhcmdlLXkgewotICB3aWR0aDogNDAwcHg7CiAgIGhlaWdodDogMjAwMHB4OwotICBiYWNrZ3Jv
dW5kLWNvbG9yOiBncmVlbjsKKyAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OwogfQogLnNtYWxs
IHsKICAgaGVpZ2h0OiAyMDBweDsKQEAgLTcyLDExICs3MiwyNSBAQCBkaXYgewogICA8ZGl2IGNs
YXNzPSJ0YXJnZXQgbGFyZ2UteCIgc3R5bGU9InRvcDogMjAwcHgiPjwvZGl2PgogPC9kaXY+CiAK
KzxkaXYgY2xhc3M9InNjcm9sbGVyLXgiIGlkPSJvdmVybGFwcGluZy1vdmVyZmxvdyIgc3R5bGU9
InNjcm9sbC1zbmFwLXR5cGU6IGJvdGggbWFuZGF0b3J5Ij4KKyAgPGRpdiBjbGFzcz0ic3BhY2Ui
PjwvZGl2PgorICA8ZGl2IHN0eWxlPSJsZWZ0OiAyMDBweDsgdG9wOiAyMDBweDsiPgorICAgIDxk
aXYgY2xhc3M9InRhcmdldCBzbWFsbCI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0idGFyZ2V0IHNt
YWxsIj48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJ0YXJnZXQgc21hbGwiPjwvZGl2PgorICAgIDxk
aXYgY2xhc3M9InRhcmdldCBsYXJnZS15IGxhcmdlLXgiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9
InRhcmdldCBzbWFsbCI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0idGFyZ2V0IHNtYWxsIj48L2Rp
dj4KKyAgICA8ZGl2IGNsYXNzPSJ0YXJnZXQgc21hbGwiPjwvZGl2PgorICA8L2Rpdj4KKzwvZGl2
PgorCiA8c2NyaXB0PgogdmFyIG9uZV90YXJnZXRfc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgib25lLXRhcmdldCIpOwogdmFyIHNjcm9sbGVyX3ggPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgieCIpOwogdmFyIHNjcm9sbGVyX3kgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
eSIpOwogdmFyIHR3b19heGVzX3Njcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInR3
by1heGVzIik7Cit2YXIgb3ZlcmxhcHBpbmdfc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgib3ZlcmxhcHBpbmctb3ZlcmZsb3ciKTsKIAogdGVzdCgoKSA9PiB7CiAgIG9uZV90YXJn
ZXRfc2Nyb2xsZXIuc2Nyb2xsVG8oMTAsIDApOwpAQCAtMTY1LDQgKzE3OSwxOSBAQCB0ZXN0KCgp
ID0+IHsKIH0sICJTbmFwIHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIG9uIHggYXMgdGhlIGFy
ZWEgaXMgY292ZXJpbmcgeCBheGlzLiIgKwogICAgIkhvd2V2ZXIsIHdlIHNuYXAgdG8gdGhlIHNw
ZWNpZmllZCBzbmFwIHBvc2l0aW9uIG9uIHkgYXMgdGhlIGFyZWEgaXMgbm90ICIgKwogICAgImNv
dmVyaW5nIHkgYXhpcy4iKTsKKwordGVzdCgoKSA9PiB7CisgIG92ZXJsYXBwaW5nX3Njcm9sbGVy
LnNjcm9sbFRvKDIwMCwgODAwKTsKKyAgYXNzZXJ0X2VxdWFscyhvdmVybGFwcGluZ19zY3JvbGxl
ci5zY3JvbGxMZWZ0LCAyMDApOworICBhc3NlcnRfZXF1YWxzKG92ZXJsYXBwaW5nX3Njcm9sbGVy
LnNjcm9sbFRvcCwgODAwKTsKK30sICJzbmFwIHRvIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIG9u
IHkgYXMgdGhlIGFyZWEgaXMgY292ZXJpbmcgeSBheGlzLCAiICsKKyAgICJldmVuIHRob3VnaCB0
aGF0IGFyZWEgaXMgbm90IHRoZSBvbmx5IHNjcm9sbCBhcmVhIGF0IHRoZSBzYW1lIHBvc2l0aW9u
LiIpOworCit0ZXN0KCgpID0+IHsKKyAgb3ZlcmxhcHBpbmdfc2Nyb2xsZXIuc2Nyb2xsVG8oODAw
LCAyMDApOworICBhc3NlcnRfZXF1YWxzKG92ZXJsYXBwaW5nX3Njcm9sbGVyLnNjcm9sbExlZnQs
IDgwMCk7CisgIGFzc2VydF9lcXVhbHMob3ZlcmxhcHBpbmdfc2Nyb2xsZXIuc2Nyb2xsVG9wLCAy
MDApOworfSwgInNuYXAgdG8gY3VycmVudCBzY3JvbGwgcG9zaXRpb24gb24geCBhcyB0aGUgYXJl
YSBpcyBjb3ZlcmluZyB4IGF4aXMsICIgKworICAgImV2ZW4gdGhvdWdoIHRoYXQgYXJlYSBpcyBu
b3QgdGhlIG9ubHkgc2Nyb2xsIGFyZWEgYXQgdGhlIHNhbWUgcG9zaXRpb24uIik7Cis8L3Njcmlw
dD4KIDwvc2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>