<?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>230079</bug_id>
          
          <creation_ts>2021-09-08 20:31:31 -0700</creation_ts>
          <short_desc>Some css-transforms tests assert in debug</short_desc>
          <delta_ts>2022-01-11 05:47:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=230115</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pdr</cc>
    
    <cc>rbuis</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1791746</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-08 20:31:31 -0700</bug_when>
    <thetext>These tests:

imported/w3c/web-platform-tests/css/css-transforms/transform-transformed-tbody-contains-fixed-position.html
imported/w3c/web-platform-tests/css/css-transforms/transform-transformed-tfoot-contains-fixed-position.html
imported/w3c/web-platform-tests/css/css-transforms/transform-transformed-thead-contains-fixed-position.html
imported/w3c/web-platform-tests/css/css-transforms/transform-transformed-tr-contains-fixed-position.html
imported/w3c/web-platform-tests/css/css-transforms/transform-transformed-tr-percent-height-child.html

hit an assertion:

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.JavaScriptCore      	0x00000003da6a4a9e WTFCrash + 14 (Assertions.cpp:321)
1   com.apple.WebCore             	0x00000003bb25c96b WTFCrashWithInfo(int, char const*, char const*, int) + 27 (Assertions.h:703)
2   com.apple.WebCore             	0x00000003bfa2b4c6 WebCore::RenderObject::offsetFromAncestorContainer(WebCore::RenderElement&amp;) const + 262 (RenderObject.cpp:1446)
3   com.apple.WebCore             	0x00000003bf897dae WebCore::RenderBox::pushMappingToContainer(WebCore::RenderLayerModelObject const*, WebCore::RenderGeometryMap&amp;) const + 238 (RenderBox.cpp:2291)
4   com.apple.WebCore             	0x00000003bf93bfab WebCore::RenderGeometryMap::pushMappingsToAncestor(WebCore::RenderObject const*, WebCore::RenderLayerModelObject const*) + 91 (RenderGeometryMap.cpp:140)
5   com.apple.WebCore             	0x00000003bf93c3a6 WebCore::RenderGeometryMap::pushMappingsToAncestor(WebCore::RenderLayer const*, WebCore::RenderLayer const*, bool) + 598 (RenderGeometryMap.cpp:197)
6   com.apple.WebCore             	0x00000003bf971313 WebCore::RenderLayer::updateLayerPositions(WebCore::RenderGeometryMap*, WTF::OptionSet&lt;WebCore::RenderLayer::UpdateLayerPositionsFlag&gt;) + 179 (RenderLayer.cpp:941)
7   com.apple.WebCore             	0x00000003bf971b28 WebCore::RenderLayer::updateLayerPositions(WebCore::RenderGeometryMap*, WTF::OptionSet&lt;WebCore::RenderLayer::UpdateLayerPositionsFlag&gt;) + 2248 (RenderLayer.cpp:1032)
8   com.apple.WebCore             	0x00000003bf971b28 WebCore::RenderLayer::updateLayerPositions(WebCore::RenderGeometryMap*, WTF::OptionSet&lt;WebCore::RenderLayer::UpdateLayerPositionsFlag&gt;) + 2248 (RenderLayer.cpp:1032)
9   com.apple.WebCore             	0x00000003bf971b28 WebCore::RenderLayer::updateLayerPositions(WebCore::RenderGeometryMap*, WTF::OptionSet&lt;WebCore::RenderLayer::UpdateLayerPositionsFlag&gt;) + 2248 (RenderLayer.cpp:1032)
10  com.apple.WebCore             	0x00000003bf971b28 WebCore::RenderLayer::updateLayerPositions(WebCore::RenderGeometryMap*, WTF::OptionSet&lt;WebCore::RenderLayer::UpdateLayerPositionsFlag&gt;) + 2248 (RenderLayer.cpp:1032)
11  com.apple.WebCore             	0x00000003bf971e0b WebCore::RenderLayer::updateLayerPositionsAfterLayout(bool, bool) + 219 (RenderLayer.cpp:931)
12  com.apple.WebCore             	0x00000003bef1179e WebCore::FrameView::didLayout(WTF::WeakPtr&lt;WebCore::RenderElement, WTF::EmptyCounter&gt;) + 142 (FrameView.cpp:1297)
13  com.apple.WebCore             	0x00000003bef06dac WebCore::FrameViewLayoutContext::layout() + 2828 (FrameViewLayoutContext.cpp:260)
14  com.apple.WebCore             	0x00000003bef1a8b0 WebCore::FrameView::updateContentsSize() + 112 (FrameView.cpp:2780)
15  com.apple.WebCore             	0x00000003bf15376c WebCore::ScrollView::updateScrollbars(WebCore::IntPoint const&amp;) + 2668 (ScrollView.cpp:711)
16  com.apple.WebCore             	0x00000003bf155320 WebCore::ScrollView::setContentsSize(WebCore::IntSize const&amp;) + 160 (ScrollView.cpp:403)
17  com.apple.WebCore             	0x00000003bef0c73f WebCore::FrameView::setContentsSize(WebCore::IntSize const&amp;) + 111 (FrameView.cpp:590)
18  com.apple.WebCore             	0x00000003bef039bb WebCore::FrameView::adjustViewSize() + 747 (FrameView.cpp:622)
19  com.apple.WebCore             	0x00000003bef06c21 WebCore::FrameViewLayoutContext::layout() + 2433 (FrameViewLayoutContext.cpp:248)
...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793944</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-15 20:32:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/83179970&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829405</commentid>
    <comment_count>2</comment_count>
      <attachid>448730</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2022-01-10 02:57:00 -0800</bug_when>
    <thetext>Created attachment 448730
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829436</commentid>
    <comment_count>3</comment_count>
      <attachid>448730</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-01-10 06:15:48 -0800</bug_when>
    <thetext>Comment on attachment 448730
Patch

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

Thanks Martin for the patch. Here&apos;s an unofficial review / some thoughts:

&gt; Source/WebCore/rendering/RenderElement.h:88
&gt; +    // Whether or not this RenderObject is a &quot;transformable element&quot; as defined by the css-transforms-1 specification.

Strictly speaking this is mixing terminology: The &quot;transformable element&quot; definition refers to DOM elements, whereas you attempt to define whether or not a RenderElement is transformable (whatever this means).
The name &apos;isTransformable&apos; is quite broad, whereas you only check CSS transformations here -- there are RenderElements in the render tree that are transformed by other means, such as RenderSVG* (inheriting from RenderElement, via LegacyRenderSVGModelObject). However SVG transforms aren&apos;t considered in your isTransformable() definition... the name needs to be re-visited.

&gt; Source/WebCore/rendering/RenderElement.h:484
&gt; +    return isBoxModelObject() &amp;&amp; !isRenderInline() &amp;&amp; !isRenderTableCol();

This is an observable change: any RenderBoxModelObject derived renderer is now considered transformable (if it&apos;s not RenderInline-derived or RenderTableCol). Observable in the sense, that you&apos;re potentially influencing the RenderLayer hierarchy creation, where these canContainXXX methods are used. Therefore we need to be very careful with the conditions that are checked here.
You return true in isTransformable() for basically all RenderBox-derived classes, such as Render{Replaced|TableRow|TableSection|...} (therefore also LegacyRenderSVGRoot), except the two cases that you excluded: RenderTableCol/RenderInline. Are all the cases covered by WPT tests? (need to make a list of affected renderers...)

However, do we really need to define isTransformable here?

To answer if an element &quot;can contain fixed position / absolutely positioned objects&quot;, one needs to find out if the given renderer can establish a containing block for its descendants, which happens to be the case for all &quot;transformed elements&quot;, according to CSS Transforms Level 1: &quot;For elements whose layout is governed by the CSS box model, any value other than none for the transform property also causes the element to establish a containing block for all descendants.&quot;

You could move both &quot;isTransformable() &amp;&amp; hasTransform()&quot; into a establishesContainingBlockDueToTransformations() method, that returns false if no CSS transform property is set, or otherwise consult an &quot;accept list&quot;, to see if the current renderer respects CSS transformations (there you can return false for all SVG enderers, except RenderSVGForeignObject). In this way you can also fold the &quot;|| isSVGForeignObject()&quot; check from canContainXY into the new establishesContainingBlockDueToTransformations() method.

Alternatively you could also obtain the containingBlock() for the renderer, and check it&apos;s == this, however this is way more expensive than some is&lt;RenderXY&gt;() checks + hasTransform(), and potentially dangerous during render tree building, so ... stay away from it :-)

(Side-Note: I naively expected both canContainXY methods to check the same: hasTransform not hasTransformRelatedProperty -- that needs a careful check first, why these checks are not identical)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829472</commentid>
    <comment_count>4</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2022-01-10 08:15:40 -0800</bug_when>
    <thetext>(In reply to Nikolas Zimmermann from comment #3)
&gt; Comment on attachment 448730 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=448730&amp;action=review
&gt; 
&gt; Thanks Martin for the patch. Here&apos;s an unofficial review / some thoughts:

Thanks for the review! 

&gt; &gt; Source/WebCore/rendering/RenderElement.h:88
&gt; &gt; +    // Whether or not this RenderObject is a &quot;transformable element&quot; as defined by the css-transforms-1 specification.
&gt; 
&gt; Strictly speaking this is mixing terminology: The &quot;transformable element&quot;
&gt; definition refers to DOM elements, whereas you attempt to define whether or
&gt; not a RenderElement is transformable (whatever this means).
&gt; The name &apos;isTransformable&apos; is quite broad, whereas you only check CSS
&gt; transformations here -- there are RenderElements in the render tree that are
&gt; transformed by other means, such as RenderSVG* (inheriting from
&gt; RenderElement, via LegacyRenderSVGModelObject). However SVG transforms
&gt; aren&apos;t considered in your isTransformable() definition... the name needs to
&gt; be re-visited.

This is a good point. 
 
&gt; &gt; Source/WebCore/rendering/RenderElement.h:484
&gt; &gt; +    return isBoxModelObject() &amp;&amp; !isRenderInline() &amp;&amp; !isRenderTableCol();
&gt; 
&gt; This is an observable change: any RenderBoxModelObject derived renderer is
&gt; now considered transformable (if it&apos;s not RenderInline-derived or
&gt; RenderTableCol). Observable in the sense, that you&apos;re potentially
&gt; influencing the RenderLayer hierarchy creation, where these canContainXXX
&gt; methods are used. Therefore we need to be very careful with the conditions
&gt; that are checked here.
&gt; You return true in isTransformable() for basically all RenderBox-derived
&gt; classes, such as Render{Replaced|TableRow|TableSection|...} (therefore also
&gt; LegacyRenderSVGRoot), except the two cases that you excluded:
&gt; RenderTableCol/RenderInline. Are all the cases covered by WPT tests? (need
&gt; to make a list of affected renderers...)

You&apos;re right, I think. It&apos;s best to target this fix as much as possible until there&apos;s test coverage for other cases.

&gt; You could move both &quot;isTransformable() &amp;&amp; hasTransform()&quot; into a
&gt; establishesContainingBlockDueToTransformations() method, that returns false
&gt; if no CSS transform property is set, or otherwise consult an &quot;accept list&quot;,
&gt; to see if the current renderer respects CSS transformations (there you can
&gt; return false for all SVG enderers, except RenderSVGForeignObject). In this
&gt; way you can also fold the &quot;|| isSVGForeignObject()&quot; check from canContainXY
&gt; into the new establishesContainingBlockDueToTransformations() method.

I&apos;ve taken this approach and just explicitly added table parts. There is testing for table parts and this change leads to a progression for these tests (though doesn&apos;t completely fix them).

&gt; 
&gt; Alternatively you could also obtain the containingBlock() for the renderer,
&gt; and check it&apos;s == this, however this is way more expensive than some
&gt; is&lt;RenderXY&gt;() checks + hasTransform(), and potentially dangerous during
&gt; render tree building, so ... stay away from it :-)

I&apos;m not sure this will work, because `containingBlock()` calls `canContainAbsolutelyPositionedObjects()` and `canContainFixedPositionObjects()`. :)

&gt; 
&gt; (Side-Note: I naively expected both canContainXY methods to check the same:
&gt; hasTransform not hasTransformRelatedProperty -- that needs a careful check
&gt; first, why these checks are not identical)

Totally agree here. This should be investigated and addressed if it&apos;s wrong (though in a different change).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829483</commentid>
    <comment_count>5</comment_count>
      <attachid>448756</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2022-01-10 08:57:00 -0800</bug_when>
    <thetext>Created attachment 448756
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829564</commentid>
    <comment_count>6</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-01-10 11:08:52 -0800</bug_when>
    <thetext>Martin, you may want to unskip top-layer-ancestor-opacity-and-transform-crash.html in this patch when landing this patch (see https://bugs.webkit.org/show_bug.cgi?id=234315).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829759</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2022-01-11 04:16:31 -0800</bug_when>
    <thetext>(In reply to Rob Buis from comment #6)
&gt; Martin, you may want to unskip
&gt; top-layer-ancestor-opacity-and-transform-crash.html in this patch when
&gt; landing this patch (see https://bugs.webkit.org/show_bug.cgi?id=234315).

I took a look at this test and it seems like it&apos;s a slightly different issue. This one is about table elements which are transformed and the assertion failure you mention is about top layer elements with a transformed body. I suspect that the fix will be a bit different for that issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829763</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-11 04:23:15 -0800</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 448756 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829765</commentid>
    <comment_count>9</comment_count>
      <attachid>448838</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2022-01-11 04:33:26 -0800</bug_when>
    <thetext>Created attachment 448838
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829781</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-11 05:47:00 -0800</bug_when>
    <thetext>Committed r287875 (245919@main): &lt;https://commits.webkit.org/245919@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 448838.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448730</attachid>
            <date>2022-01-10 02:57:00 -0800</date>
            <delta_ts>2022-01-10 08:56:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230079-20220110115656.patch</filename>
            <type>text/plain</type>
            <size>7450</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3ODMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Y5M2U5NjE0MDJmOWVj
MmQ3NjVkY2YxODZhNjNiOTY4NWMyZmU4Ny4uOThjMjZhMWJjNjk1ODgzYzQ5NGJkMWJiNmViZmZi
MGYzNWMxNDE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIyLTAxLTEwICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBTb21lIGNzcy10
cmFuc2Zvcm1zIHRlc3RzIGFzc2VydCBpbiBkZWJ1ZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwMDc5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
MzE3OTk3MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMuIFRoaXMgaXMgY292ZXJlZCBieSBleGlzdGluZyBXUFQgdGVzdHMuIFRo
aXMgY2hhbmdlIGZpeGVzCisgICAgICAgIGZpdmUgYXNzZXJ0aW9ucyBhbmQgb25lIHRlc3QgY29t
cGxldGVseS4gSW4gYWRkaXRpb24sIGl0IGxlYWRzIHRvIHByb2dyZXNzaW9ucywKKyAgICAgICAg
YnV0IG5vdCBjb21wbGV0ZSBmaXhlcywgaW4gdGhlIGZvdXIgcmVtYWluaW5nIHRlc3RzLgorCisg
ICAgICAgIFRhYmxlIGVsZW1lbnRzLCB3aGljaCBjYW4gYmUgdHJhbnNmb3JtZWQsIHdlcmUgbm90
IHByb3Blcmx5IGZvcm1pbmcgY29udGFpbmluZyBibG9ja3MKKyAgICAgICAgZm9yIGZpeGVkIGFu
ZCBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgZWxlbWVudHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Y2FuQ29u
dGFpbkZpeGVkUG9zaXRpb25PYmplY3RzIGNvbnN0KTogUmV0dXJuIHRydWUgZXZlbiB3aGVuCisg
ICAgICAgIHdlIGhhdmUgYSB0cmFuc2Zvcm1lZCBlbGVtZW50IHRoYXQgaXMgbm90IGEgYmxvY2su
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpjYW5Db250YWluQWJzb2x1dGVseVBv
c2l0aW9uZWRPYmplY3RzIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJF
bGVtZW50Ojppc1RyYW5zZm9ybWFibGUgY29uc3QpOiBBZGRlZCB0aGlzIGhlbHBlciB3aGljaCBy
ZXR1cm5zIHdoZXRoZXIKKyAgICAgICAgbm90IFNWRyBlbGVtZW50cyBhcmUgdHJhbnNmb3JtYWJs
ZS4gRXZlbnR1YWxseSB0aGlzIHNob3VsZCBiZSBleHRlbmRlZCB0byBoYW5kbGUgU1ZHCisgICAg
ICAgIGVsZW1lbnRzIGFzIHdlbGwuCisKIDIwMjItMDEtMDkgIFNhbSBXZWluaWcgIDx3ZWluaWdA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciBEaXJlY3QyRCAvIEZUVwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKaW5kZXggMmY1OGZiZWFhYTNh
YWY1NTFlZjJjYjA2NGY4Y2RiYjUzYzMyM2YyYS4uZTUyNzJmZTE4MjIzZmU3OTc1Y2M5NjMzZDBm
NTJkNmY0NmMxNjM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5o
CkBAIC04NSw2ICs4NSw5IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkNvbnRhaW5GaXhlZFBvc2l0
aW9uT2JqZWN0cygpIGNvbnN0OwogICAgIGJvb2wgY2FuQ29udGFpbkFic29sdXRlbHlQb3NpdGlv
bmVkT2JqZWN0cygpIGNvbnN0OwogCisgICAgLy8gV2hldGhlciBvciBub3QgdGhpcyBSZW5kZXJP
YmplY3QgaXMgYSAidHJhbnNmb3JtYWJsZSBlbGVtZW50IiBhcyBkZWZpbmVkIGJ5IHRoZSBjc3Mt
dHJhbnNmb3Jtcy0xIHNwZWNpZmljYXRpb24uCisgICAgYm9vbCBpc1RyYW5zZm9ybWFibGUoKSBj
b25zdDsKKwogICAgIENvbG9yIHNlbGVjdGlvbkNvbG9yKENTU1Byb3BlcnR5SUQpIGNvbnN0Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc2VsZWN0aW9uUHNldWRvU3R5bGUoKSBj
b25zdDsKIApAQCAtNDU1LDcgKzQ1OCw3IEBAIGlubGluZSBFbGVtZW50KiBSZW5kZXJFbGVtZW50
OjpnZW5lcmF0aW5nRWxlbWVudCgpIGNvbnN0CiBpbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50Ojpj
YW5Db250YWluRml4ZWRQb3NpdGlvbk9iamVjdHMoKSBjb25zdAogewogICAgIHJldHVybiBpc1Jl
bmRlclZpZXcoKQotICAgICAgICB8fCAoaXNSZW5kZXJCbG9jaygpICYmIGhhc1RyYW5zZm9ybSgp
KQorICAgICAgICB8fCAoaXNUcmFuc2Zvcm1hYmxlKCkgJiYgaGFzVHJhbnNmb3JtKCkpCiAgICAg
ICAgIC8vIEZJWE1FOiB3aWxsLWNoYW5nZSBzaG91bGQgY3JlYXRlIGNvbnRhaW5pbmcgYmxvY2tz
IG9uIGlubGluZSBib3hlcyAoYnVnIDIyNTAzNSkKICAgICAgICAgfHwgKGlzUmVuZGVyQmxvY2so
KSAmJiBzdHlsZSgpLndpbGxDaGFuZ2UoKSAmJiBzdHlsZSgpLndpbGxDaGFuZ2UoKS0+Y3JlYXRl
c0NvbnRhaW5pbmdCbG9ja0Zvck91dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgfHwgaXNT
VkdGb3JlaWduT2JqZWN0KCkKQEAgLTQ2Niw3ICs0NjksNyBAQCBpbmxpbmUgYm9vbCBSZW5kZXJF
bGVtZW50OjpjYW5Db250YWluRml4ZWRQb3NpdGlvbk9iamVjdHMoKSBjb25zdAogaW5saW5lIGJv
b2wgUmVuZGVyRWxlbWVudDo6Y2FuQ29udGFpbkFic29sdXRlbHlQb3NpdGlvbmVkT2JqZWN0cygp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIHN0eWxlKCkucG9zaXRpb24oKSAhPSBQb3NpdGlvblR5cGU6
OlN0YXRpYwotICAgICAgICB8fCAoaXNSZW5kZXJCbG9jaygpICYmIGhhc1RyYW5zZm9ybVJlbGF0
ZWRQcm9wZXJ0eSgpKQorICAgICAgICB8fCAoaXNUcmFuc2Zvcm1hYmxlKCkgJiYgaGFzVHJhbnNm
b3JtUmVsYXRlZFByb3BlcnR5KCkpCiAgICAgICAgIC8vIEZJWE1FOiB3aWxsLWNoYW5nZSBzaG91
bGQgY3JlYXRlIGNvbnRhaW5pbmcgYmxvY2tzIG9uIGlubGluZSBib3hlcyAoYnVnIDIyNTAzNSkK
ICAgICAgICAgfHwgKGlzUmVuZGVyQmxvY2soKSAmJiBzdHlsZSgpLndpbGxDaGFuZ2UoKSAmJiBz
dHlsZSgpLndpbGxDaGFuZ2UoKS0+Y3JlYXRlc0NvbnRhaW5pbmdCbG9ja0ZvckFic29sdXRlbHlQ
b3NpdGlvbmVkKCkpCiAgICAgICAgIHx8IGlzU1ZHRm9yZWlnbk9iamVjdCgpCkBAIC00NzUsNiAr
NDc4LDEyIEBAIGlubGluZSBib29sIFJlbmRlckVsZW1lbnQ6OmNhbkNvbnRhaW5BYnNvbHV0ZWx5
UG9zaXRpb25lZE9iamVjdHMoKSBjb25zdAogICAgICAgICB8fCBpc1JlbmRlclZpZXcoKTsKIH0K
IAoraW5saW5lIGJvb2wgUmVuZGVyRWxlbWVudDo6aXNUcmFuc2Zvcm1hYmxlKCkgY29uc3QKK3sK
KyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgZXh0ZW5kZWQgdG8gaW5jbHVk
ZSB0cmFuc2Zvcm1lZCBTVkcgZWxlbWVudHMuCisgICAgcmV0dXJuIGlzQm94TW9kZWxPYmplY3Qo
KSAmJiAhaXNSZW5kZXJJbmxpbmUoKSAmJiAhaXNSZW5kZXJUYWJsZUNvbCgpOworfQorCiBpbmxp
bmUgYm9vbCBSZW5kZXJFbGVtZW50OjpjcmVhdGVzR3JvdXBGb3JTdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUpCiB7CiAgICAgcmV0dXJuIHN0eWxlLmhhc09wYWNpdHkoKSB8fCBzdHlsZS5o
YXNNYXNrKCkgfHwgc3R5bGUuY2xpcFBhdGgoKSB8fCBzdHlsZS5oYXNGaWx0ZXIoKSB8fCBzdHls
ZS5oYXNCYWNrZHJvcEZpbHRlcigpIHx8IHN0eWxlLmhhc0JsZW5kTW9kZSgpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDIz
YTI5OWYwM2MxOTk1YmMzNzRjZmIyN2U2YjVkNjNlYjM1M2I0MzEuLjIwYmUzOWE1YTAyMTViYzcw
YjNlMDVmOTgyMjJkZWJmMWE0ZmM3NDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMS0x
MCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU29t
ZSBjc3MtdHJhbnNmb3JtcyB0ZXN0cyBhc3NlcnQgaW4gZGVidWcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDA3OQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vODMxNzk5NzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOiBVcGRhdGUgZXhwZWN0YXRpb25zIHRvIG5vdGUg
bmV3IHBhc3Nlcy4KKwogMjAyMi0wMS0wOSAgWmlyYW4gU3VuICA8enN1bkBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtjc3MtZ3JpZF0gUmVzeW5jIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdy
aWQgdGVzdHMgZnJvbSB1cHN0cmVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNmM1YWQxZTcwNGNm
ZjI4Y2ViMzhhMTI2NzQ4ZjZhNzc0ZDE2ODJhOS4uYWZkYTQyNTdkZmU2ODgzNzE1MjI5MDVlYTFl
MjIwNmNkZjg0OGFjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0zOTI5LDE3ICszOTI5LDEwIEBA
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5z
Zm9ybS1jb21wb3VuZC1ub3RyZWYtMS5oCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tY29tcG91bmQtbm90cmVmLTIuaHRtbCBbIFNr
aXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMv
YmFja2ZhY2UtdmlzaWJpbGl0eS0wMDEucmVmLmh0bWwgWyBTa2lwIF0KIAotd2Via2l0Lm9yZy9i
LzIzMDA3OSBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXRyYW5zZm9ybXMvdHJhbnNmb3JtLXRyYW5zZm9ybWVkLXRib2R5LWNvbnRhaW5zLWZpeGVkLXBv
c2l0aW9uLmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8yMzAwNzkgWyBEZWJ1ZyBdIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS10
cmFuc2Zvcm1lZC10Zm9vdC1jb250YWlucy1maXhlZC1wb3NpdGlvbi5odG1sIFsgU2tpcCBdCi13
ZWJraXQub3JnL2IvMjMwMDc5IFsgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tdHJhbnNmb3JtZWQtdGhlYWQtY29udGFp
bnMtZml4ZWQtcG9zaXRpb24uaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzIzMDA3OSBbIERl
YnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMv
dHJhbnNmb3JtLXRyYW5zZm9ybWVkLXRyLWNvbnRhaW5zLWZpeGVkLXBvc2l0aW9uLmh0bWwgWyBT
a2lwIF0KLXdlYmtpdC5vcmcvYi8yMzAwNzkgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS10cmFuc2Zvcm1lZC10ci1w
ZXJjZW50LWhlaWdodC1jaGlsZC5odG1sIFsgU2tpcCBdCi0KLXdlYmtpdC5vcmcvYi8yMzAwODAg
WyBSZWxlYXNlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5z
Zm9ybXMvdHJhbnNmb3JtLXRyYW5zZm9ybWVkLXRib2R5LWNvbnRhaW5zLWZpeGVkLXBvc2l0aW9u
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzAwODAgWyBSZWxlYXNl
IF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJh
bnNmb3JtLXRyYW5zZm9ybWVkLXRmb290LWNvbnRhaW5zLWZpeGVkLXBvc2l0aW9uLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzAwODAgWyBSZWxlYXNlIF0gaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLXRy
YW5zZm9ybWVkLXRoZWFkLWNvbnRhaW5zLWZpeGVkLXBvc2l0aW9uLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzAwODAgWyBSZWxlYXNlIF0gaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLXRyYW5zZm9ybWVk
LXRyLWNvbnRhaW5zLWZpeGVkLXBvc2l0aW9uLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdl
YmtpdC5vcmcvYi8yMzAwODAgWyBSZWxlYXNlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLXRyYW5zZm9ybWVkLXRyLXBlcmNlbnQt
aGVpZ2h0LWNoaWxkLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzAw
ODAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJh
bnNmb3JtLXRyYW5zZm9ybWVkLXRib2R5LWNvbnRhaW5zLWZpeGVkLXBvc2l0aW9uLmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzAwODAgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLXRyYW5zZm9ybWVkLXRm
b290LWNvbnRhaW5zLWZpeGVkLXBvc2l0aW9uLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dl
YmtpdC5vcmcvYi8yMzAwODAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXRyYW5zZm9ybXMvdHJhbnNmb3JtLXRyYW5zZm9ybWVkLXRoZWFkLWNvbnRhaW5zLWZpeGVkLXBv
c2l0aW9uLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzAwODAgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3Jt
LXRyYW5zZm9ybWVkLXRyLXBlcmNlbnQtaGVpZ2h0LWNoaWxkLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KIAogd2Via2l0Lm9yZy9iLzIzMDA4MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy8zZC1yZW5kZXJpbmctY29udGV4dC1hbmQtYWJzcG9zLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMzAwODAgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvM2QtcmVuZGVyaW5nLWNvbnRl
eHQtYW5kLWZpeHBvcy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448756</attachid>
            <date>2022-01-10 08:57:00 -0800</date>
            <delta_ts>2022-01-11 04:33:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230079-20220110175657.patch</filename>
            <type>text/plain</type>
            <size>7547</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3ODMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Y5M2U5NjE0MDJmOWVj
MmQ3NjVkY2YxODZhNjNiOTY4NWMyZmU4Ny4uOThjMjZhMWJjNjk1ODgzYzQ5NGJkMWJiNmViZmZi
MGYzNWMxNDE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIyLTAxLTEwICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBTb21lIGNzcy10
cmFuc2Zvcm1zIHRlc3RzIGFzc2VydCBpbiBkZWJ1ZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwMDc5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
MzE3OTk3MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMuIFRoaXMgaXMgY292ZXJlZCBieSBleGlzdGluZyBXUFQgdGVzdHMuIFRo
aXMgY2hhbmdlIGZpeGVzCisgICAgICAgIGZpdmUgYXNzZXJ0aW9ucyBhbmQgb25lIHRlc3QgY29t
cGxldGVseS4gSW4gYWRkaXRpb24sIGl0IGxlYWRzIHRvIHByb2dyZXNzaW9ucywKKyAgICAgICAg
YnV0IG5vdCBjb21wbGV0ZSBmaXhlcywgaW4gdGhlIGZvdXIgcmVtYWluaW5nIHRlc3RzLgorCisg
ICAgICAgIFRhYmxlIGVsZW1lbnRzLCB3aGljaCBjYW4gYmUgdHJhbnNmb3JtZWQsIHdlcmUgbm90
IHByb3Blcmx5IGZvcm1pbmcgY29udGFpbmluZyBibG9ja3MKKyAgICAgICAgZm9yIGZpeGVkIGFu
ZCBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgZWxlbWVudHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Y2FuQ29u
dGFpbkZpeGVkUG9zaXRpb25PYmplY3RzIGNvbnN0KTogUmV0dXJuIHRydWUgZXZlbiB3aGVuCisg
ICAgICAgIHdlIGhhdmUgYSB0cmFuc2Zvcm1lZCBlbGVtZW50IHRoYXQgaXMgbm90IGEgYmxvY2su
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpjYW5Db250YWluQWJzb2x1dGVseVBv
c2l0aW9uZWRPYmplY3RzIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJF
bGVtZW50Ojppc1RyYW5zZm9ybWFibGUgY29uc3QpOiBBZGRlZCB0aGlzIGhlbHBlciB3aGljaCBy
ZXR1cm5zIHdoZXRoZXIKKyAgICAgICAgbm90IFNWRyBlbGVtZW50cyBhcmUgdHJhbnNmb3JtYWJs
ZS4gRXZlbnR1YWxseSB0aGlzIHNob3VsZCBiZSBleHRlbmRlZCB0byBoYW5kbGUgU1ZHCisgICAg
ICAgIGVsZW1lbnRzIGFzIHdlbGwuCisKIDIwMjItMDEtMDkgIFNhbSBXZWluaWcgIDx3ZWluaWdA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciBEaXJlY3QyRCAvIEZUVwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKaW5kZXggMmY1OGZiZWFhYTNh
YWY1NTFlZjJjYjA2NGY4Y2RiYjUzYzMyM2YyYS4uZmE0NDQ0YTMxYTRhMGJjMTFkYmRmNjQ5ODdi
YjllM2YwMjUyNWRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5o
CkBAIC04NCw2ICs4NCw3IEBAIHB1YmxpYzoKICAgICAvLyBOb3RlIHRoYXQgZXZlbiBpZiB0aGVz
ZSAyICJjYW5Db250YWluIiBmdW5jdGlvbnMgcmV0dXJuIHRydWUgZm9yIGEgcGFydGljdWxhciBy
ZW5kZXJlciwgaXQgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiB0aGUgcmVuZGVyZXIgaXMgdGhl
IGNvbnRhaW5pbmcgYmxvY2sgKHNlZSBjb250YWluaW5nQmxvY2tGb3JBYnNvbHV0ZShGaXhlZClQ
b3NpdGlvbikuCiAgICAgYm9vbCBjYW5Db250YWluRml4ZWRQb3NpdGlvbk9iamVjdHMoKSBjb25z
dDsKICAgICBib29sIGNhbkNvbnRhaW5BYnNvbHV0ZWx5UG9zaXRpb25lZE9iamVjdHMoKSBjb25z
dDsKKyAgICBib29sIGNhbkVzdGFibGlzaENvbnRhaW5pbmdCbG9ja1dpdGhUcmFuc2Zvcm0oKSBj
b25zdDsKIAogICAgIENvbG9yIHNlbGVjdGlvbkNvbG9yKENTU1Byb3BlcnR5SUQpIGNvbnN0Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc2VsZWN0aW9uUHNldWRvU3R5bGUoKSBj
b25zdDsKQEAgLTQ1NSw3ICs0NTYsNyBAQCBpbmxpbmUgRWxlbWVudCogUmVuZGVyRWxlbWVudDo6
Z2VuZXJhdGluZ0VsZW1lbnQoKSBjb25zdAogaW5saW5lIGJvb2wgUmVuZGVyRWxlbWVudDo6Y2Fu
Q29udGFpbkZpeGVkUG9zaXRpb25PYmplY3RzKCkgY29uc3QKIHsKICAgICByZXR1cm4gaXNSZW5k
ZXJWaWV3KCkKLSAgICAgICAgfHwgKGlzUmVuZGVyQmxvY2soKSAmJiBoYXNUcmFuc2Zvcm0oKSkK
KyAgICAgICAgfHwgKGNhbkVzdGFibGlzaENvbnRhaW5pbmdCbG9ja1dpdGhUcmFuc2Zvcm0oKSAm
JiBoYXNUcmFuc2Zvcm0oKSkKICAgICAgICAgLy8gRklYTUU6IHdpbGwtY2hhbmdlIHNob3VsZCBj
cmVhdGUgY29udGFpbmluZyBibG9ja3Mgb24gaW5saW5lIGJveGVzIChidWcgMjI1MDM1KQogICAg
ICAgICB8fCAoaXNSZW5kZXJCbG9jaygpICYmIHN0eWxlKCkud2lsbENoYW5nZSgpICYmIHN0eWxl
KCkud2lsbENoYW5nZSgpLT5jcmVhdGVzQ29udGFpbmluZ0Jsb2NrRm9yT3V0T2ZGbG93UG9zaXRp
b25lZCgpKQogICAgICAgICB8fCBpc1NWR0ZvcmVpZ25PYmplY3QoKQpAQCAtNDY2LDcgKzQ2Nyw3
IEBAIGlubGluZSBib29sIFJlbmRlckVsZW1lbnQ6OmNhbkNvbnRhaW5GaXhlZFBvc2l0aW9uT2Jq
ZWN0cygpIGNvbnN0CiBpbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50OjpjYW5Db250YWluQWJzb2x1
dGVseVBvc2l0aW9uZWRPYmplY3RzKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3R5bGUoKS5wb3Np
dGlvbigpICE9IFBvc2l0aW9uVHlwZTo6U3RhdGljCi0gICAgICAgIHx8IChpc1JlbmRlckJsb2Nr
KCkgJiYgaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkpCisgICAgICAgIHx8IChjYW5Fc3Rh
Ymxpc2hDb250YWluaW5nQmxvY2tXaXRoVHJhbnNmb3JtKCkgJiYgaGFzVHJhbnNmb3JtUmVsYXRl
ZFByb3BlcnR5KCkpCiAgICAgICAgIC8vIEZJWE1FOiB3aWxsLWNoYW5nZSBzaG91bGQgY3JlYXRl
IGNvbnRhaW5pbmcgYmxvY2tzIG9uIGlubGluZSBib3hlcyAoYnVnIDIyNTAzNSkKICAgICAgICAg
fHwgKGlzUmVuZGVyQmxvY2soKSAmJiBzdHlsZSgpLndpbGxDaGFuZ2UoKSAmJiBzdHlsZSgpLndp
bGxDaGFuZ2UoKS0+Y3JlYXRlc0NvbnRhaW5pbmdCbG9ja0ZvckFic29sdXRlbHlQb3NpdGlvbmVk
KCkpCiAgICAgICAgIHx8IGlzU1ZHRm9yZWlnbk9iamVjdCgpCkBAIC00NzUsNiArNDc2LDExIEBA
IGlubGluZSBib29sIFJlbmRlckVsZW1lbnQ6OmNhbkNvbnRhaW5BYnNvbHV0ZWx5UG9zaXRpb25l
ZE9iamVjdHMoKSBjb25zdAogICAgICAgICB8fCBpc1JlbmRlclZpZXcoKTsKIH0KIAoraW5saW5l
IGJvb2wgUmVuZGVyRWxlbWVudDo6Y2FuRXN0YWJsaXNoQ29udGFpbmluZ0Jsb2NrV2l0aFRyYW5z
Zm9ybSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzUmVuZGVyQmxvY2soKSB8fCAoaXNUYWJsZVBh
cnQoKSAmJiAhaXNSZW5kZXJUYWJsZUNvbCgpKTsKK30KKwogaW5saW5lIGJvb2wgUmVuZGVyRWxl
bWVudDo6Y3JlYXRlc0dyb3VwRm9yU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewog
ICAgIHJldHVybiBzdHlsZS5oYXNPcGFjaXR5KCkgfHwgc3R5bGUuaGFzTWFzaygpIHx8IHN0eWxl
LmNsaXBQYXRoKCkgfHwgc3R5bGUuaGFzRmlsdGVyKCkgfHwgc3R5bGUuaGFzQmFja2Ryb3BGaWx0
ZXIoKSB8fCBzdHlsZS5oYXNCbGVuZE1vZGUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyM2EyOTlmMDNjMTk5NWJjMzc0
Y2ZiMjdlNmI1ZDYzZWIzNTNiNDMxLi4yMGJlMzlhNWEwMjE1YmM3MGIzZTA1Zjk4MjIyZGViZjFh
NGZjNzQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDEtMTAgIE1hcnRpbiBSb2JpbnNv
biAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFNvbWUgY3NzLXRyYW5zZm9ybXMg
dGVzdHMgYXNzZXJ0IGluIGRlYnVnCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzAwNzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgzMTc5OTcwPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4
cGVjdGF0aW9uczogVXBkYXRlIGV4cGVjdGF0aW9ucyB0byBub3RlIG5ldyBwYXNzZXMuCisKIDIw
MjItMDEtMDkgIFppcmFuIFN1biAgPHpzdW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3NzLWdy
aWRdIFJlc3luYyB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkIHRlc3RzIGZyb20gdXBz
dHJlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDZjNWFkMWU3MDRjZmYyOGNlYjM4YTEyNjc0OGY2
YTc3NGQxNjgyYTkuLmFmZGE0MjU3ZGZlNjg4MzcxNTIyOTA1ZWExZTIyMDZjZGY4NDhhY2IgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMzkyOSwxNyArMzkyOSwxMCBAQCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tY29tcG91bmQtbm90
cmVmLTEuaAogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9y
bXMvdHJhbnNmb3JtLWNvbXBvdW5kLW5vdHJlZi0yLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL2JhY2tmYWNlLXZpc2liaWxp
dHktMDAxLnJlZi5odG1sIFsgU2tpcCBdCiAKLXdlYmtpdC5vcmcvYi8yMzAwNzkgWyBEZWJ1ZyBd
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5z
Zm9ybS10cmFuc2Zvcm1lZC10Ym9keS1jb250YWlucy1maXhlZC1wb3NpdGlvbi5odG1sIFsgU2tp
cCBdCi13ZWJraXQub3JnL2IvMjMwMDc5IFsgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tdHJhbnNmb3JtZWQtdGZvb3Qt
Y29udGFpbnMtZml4ZWQtcG9zaXRpb24uaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzIzMDA3
OSBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5z
Zm9ybXMvdHJhbnNmb3JtLXRyYW5zZm9ybWVkLXRoZWFkLWNvbnRhaW5zLWZpeGVkLXBvc2l0aW9u
Lmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8yMzAwNzkgWyBEZWJ1ZyBdIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS10cmFuc2Zv
cm1lZC10ci1jb250YWlucy1maXhlZC1wb3NpdGlvbi5odG1sIFsgU2tpcCBdCi13ZWJraXQub3Jn
L2IvMjMwMDc5IFsgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tdHJhbnNmb3JtZWQtdHItcGVyY2VudC1oZWlnaHQtY2hp
bGQuaHRtbCBbIFNraXAgXQotCi13ZWJraXQub3JnL2IvMjMwMDgwIFsgUmVsZWFzZSBdIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS10
cmFuc2Zvcm1lZC10Ym9keS1jb250YWlucy1maXhlZC1wb3NpdGlvbi5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjMwMDgwIFsgUmVsZWFzZSBdIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS10cmFuc2Zvcm1l
ZC10Zm9vdC1jb250YWlucy1maXhlZC1wb3NpdGlvbi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Ci13ZWJraXQub3JnL2IvMjMwMDgwIFsgUmVsZWFzZSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS10cmFuc2Zvcm1lZC10aGVhZC1j
b250YWlucy1maXhlZC1wb3NpdGlvbi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQu
b3JnL2IvMjMwMDgwIFsgUmVsZWFzZSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS10cmFuc2Zvcm1lZC10ci1jb250YWlucy1maXhl
ZC1wb3NpdGlvbi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjMwMDgw
IFsgUmVsZWFzZSBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFu
c2Zvcm1zL3RyYW5zZm9ybS10cmFuc2Zvcm1lZC10ci1wZXJjZW50LWhlaWdodC1jaGlsZC5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjMwMDgwIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS10cmFuc2Zvcm1l
ZC10Ym9keS1jb250YWlucy1maXhlZC1wb3NpdGlvbi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Cit3ZWJraXQub3JnL2IvMjMwMDgwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS10cmFuc2Zvcm1lZC10Zm9vdC1jb250YWlucy1maXhl
ZC1wb3NpdGlvbi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjMwMDgw
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5z
Zm9ybS10cmFuc2Zvcm1lZC10aGVhZC1jb250YWlucy1maXhlZC1wb3NpdGlvbi5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjMwMDgwIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS10cmFuc2Zvcm1lZC10ci1w
ZXJjZW50LWhlaWdodC1jaGlsZC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKIHdlYmtpdC5v
cmcvYi8yMzAwODAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5z
Zm9ybXMvM2QtcmVuZGVyaW5nLWNvbnRleHQtYW5kLWFic3Bvcy5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCiB3ZWJraXQub3JnL2IvMjMwMDgwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy10cmFuc2Zvcm1zLzNkLXJlbmRlcmluZy1jb250ZXh0LWFuZC1maXhwb3MuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448838</attachid>
            <date>2022-01-11 04:33:26 -0800</date>
            <delta_ts>2022-01-11 05:47:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230079-20220111133324.patch</filename>
            <type>text/plain</type>
            <size>7835</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3ODcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RiYWFjYTFlYzkxMmYx
NGVjNTQxZWM5NTNjZGY1N2E5YjgyZjRhMi4uZDEwZDRkOTMzMjQzYWI5NWNjZWI0YTgyNjg0MWE0
MTU3MDY2MmVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIyLTAxLTExICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBTb21lIGNzcy10
cmFuc2Zvcm1zIHRlc3RzIGFzc2VydCBpbiBkZWJ1ZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwMDc5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
MzE3OTk3MD4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzLiBUaGlzIGlzIGNvdmVyZWQgYnkgZXhpc3RpbmcgV1BUIHRlc3RzLiBUaGlz
IGNoYW5nZSBmaXhlcworICAgICAgICBmaXZlIGFzc2VydGlvbnMgYW5kIG9uZSB0ZXN0IGNvbXBs
ZXRlbHkuIEluIGFkZGl0aW9uLCBpdCBsZWFkcyB0byBwcm9ncmVzc2lvbnMsCisgICAgICAgIGJ1
dCBub3QgY29tcGxldGUgZml4ZXMsIGluIHRoZSBmb3VyIHJlbWFpbmluZyB0ZXN0cy4KKworICAg
ICAgICBUYWJsZSBlbGVtZW50cywgd2hpY2ggY2FuIGJlIHRyYW5zZm9ybWVkLCB3ZXJlIG5vdCBw
cm9wZXJseSBmb3JtaW5nIGNvbnRhaW5pbmcgYmxvY2tzCisgICAgICAgIGZvciBmaXhlZCBhbmQg
YWJzb2x1dGVseSBwb3NpdGlvbmVkIGVsZW1lbnRzLgorCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmNhbkNvbnRh
aW5GaXhlZFBvc2l0aW9uT2JqZWN0cyBjb25zdCk6IFJldHVybiB0cnVlIGV2ZW4gd2hlbgorICAg
ICAgICB3ZSBoYXZlIGEgdHJhbnNmb3JtZWQgZWxlbWVudCB0aGF0IGlzIG5vdCBhIGJsb2NrLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Y2FuQ29udGFpbkFic29sdXRlbHlQb3Np
dGlvbmVkT2JqZWN0cyBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxl
bWVudDo6aXNUcmFuc2Zvcm1hYmxlIGNvbnN0KTogQWRkZWQgdGhpcyBoZWxwZXIgd2hpY2ggcmV0
dXJucyB3aGV0aGVyCisgICAgICAgIG5vdCBTVkcgZWxlbWVudHMgYXJlIHRyYW5zZm9ybWFibGUu
IEV2ZW50dWFsbHkgdGhpcyBzaG91bGQgYmUgZXh0ZW5kZWQgdG8gaGFuZGxlIFNWRworICAgICAg
ICBlbGVtZW50cyBhcyB3ZWxsLgorCiAyMDIyLTAxLTExICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVthMTF5XSBXVFI6IGRvIG5vdCBp
bW1lZGlhdGVseSBwcm9jZXNzIG1haW4gdGhyZWFkIGV2ZW50cyB3aGlsZSB3YWl0aW5nIGZvciBh
eCB0aHJlYWQgdGFzawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKaW5k
ZXggMmY1OGZiZWFhYTNhYWY1NTFlZjJjYjA2NGY4Y2RiYjUzYzMyM2YyYS4uZmE0NDQ0YTMxYTRh
MGJjMTFkYmRmNjQ5ODdiYjllM2YwMjUyNWRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5oCkBAIC04NCw2ICs4NCw3IEBAIHB1YmxpYzoKICAgICAvLyBOb3RlIHRo
YXQgZXZlbiBpZiB0aGVzZSAyICJjYW5Db250YWluIiBmdW5jdGlvbnMgcmV0dXJuIHRydWUgZm9y
IGEgcGFydGljdWxhciByZW5kZXJlciwgaXQgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiB0aGUg
cmVuZGVyZXIgaXMgdGhlIGNvbnRhaW5pbmcgYmxvY2sgKHNlZSBjb250YWluaW5nQmxvY2tGb3JB
YnNvbHV0ZShGaXhlZClQb3NpdGlvbikuCiAgICAgYm9vbCBjYW5Db250YWluRml4ZWRQb3NpdGlv
bk9iamVjdHMoKSBjb25zdDsKICAgICBib29sIGNhbkNvbnRhaW5BYnNvbHV0ZWx5UG9zaXRpb25l
ZE9iamVjdHMoKSBjb25zdDsKKyAgICBib29sIGNhbkVzdGFibGlzaENvbnRhaW5pbmdCbG9ja1dp
dGhUcmFuc2Zvcm0oKSBjb25zdDsKIAogICAgIENvbG9yIHNlbGVjdGlvbkNvbG9yKENTU1Byb3Bl
cnR5SUQpIGNvbnN0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc2VsZWN0aW9u
UHNldWRvU3R5bGUoKSBjb25zdDsKQEAgLTQ1NSw3ICs0NTYsNyBAQCBpbmxpbmUgRWxlbWVudCog
UmVuZGVyRWxlbWVudDo6Z2VuZXJhdGluZ0VsZW1lbnQoKSBjb25zdAogaW5saW5lIGJvb2wgUmVu
ZGVyRWxlbWVudDo6Y2FuQ29udGFpbkZpeGVkUG9zaXRpb25PYmplY3RzKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gaXNSZW5kZXJWaWV3KCkKLSAgICAgICAgfHwgKGlzUmVuZGVyQmxvY2soKSAmJiBo
YXNUcmFuc2Zvcm0oKSkKKyAgICAgICAgfHwgKGNhbkVzdGFibGlzaENvbnRhaW5pbmdCbG9ja1dp
dGhUcmFuc2Zvcm0oKSAmJiBoYXNUcmFuc2Zvcm0oKSkKICAgICAgICAgLy8gRklYTUU6IHdpbGwt
Y2hhbmdlIHNob3VsZCBjcmVhdGUgY29udGFpbmluZyBibG9ja3Mgb24gaW5saW5lIGJveGVzIChi
dWcgMjI1MDM1KQogICAgICAgICB8fCAoaXNSZW5kZXJCbG9jaygpICYmIHN0eWxlKCkud2lsbENo
YW5nZSgpICYmIHN0eWxlKCkud2lsbENoYW5nZSgpLT5jcmVhdGVzQ29udGFpbmluZ0Jsb2NrRm9y
T3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICB8fCBpc1NWR0ZvcmVpZ25PYmplY3QoKQpA
QCAtNDY2LDcgKzQ2Nyw3IEBAIGlubGluZSBib29sIFJlbmRlckVsZW1lbnQ6OmNhbkNvbnRhaW5G
aXhlZFBvc2l0aW9uT2JqZWN0cygpIGNvbnN0CiBpbmxpbmUgYm9vbCBSZW5kZXJFbGVtZW50Ojpj
YW5Db250YWluQWJzb2x1dGVseVBvc2l0aW9uZWRPYmplY3RzKCkgY29uc3QKIHsKICAgICByZXR1
cm4gc3R5bGUoKS5wb3NpdGlvbigpICE9IFBvc2l0aW9uVHlwZTo6U3RhdGljCi0gICAgICAgIHx8
IChpc1JlbmRlckJsb2NrKCkgJiYgaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkpCisgICAg
ICAgIHx8IChjYW5Fc3RhYmxpc2hDb250YWluaW5nQmxvY2tXaXRoVHJhbnNmb3JtKCkgJiYgaGFz
VHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkpCiAgICAgICAgIC8vIEZJWE1FOiB3aWxsLWNoYW5n
ZSBzaG91bGQgY3JlYXRlIGNvbnRhaW5pbmcgYmxvY2tzIG9uIGlubGluZSBib3hlcyAoYnVnIDIy
NTAzNSkKICAgICAgICAgfHwgKGlzUmVuZGVyQmxvY2soKSAmJiBzdHlsZSgpLndpbGxDaGFuZ2Uo
KSAmJiBzdHlsZSgpLndpbGxDaGFuZ2UoKS0+Y3JlYXRlc0NvbnRhaW5pbmdCbG9ja0ZvckFic29s
dXRlbHlQb3NpdGlvbmVkKCkpCiAgICAgICAgIHx8IGlzU1ZHRm9yZWlnbk9iamVjdCgpCkBAIC00
NzUsNiArNDc2LDExIEBAIGlubGluZSBib29sIFJlbmRlckVsZW1lbnQ6OmNhbkNvbnRhaW5BYnNv
bHV0ZWx5UG9zaXRpb25lZE9iamVjdHMoKSBjb25zdAogICAgICAgICB8fCBpc1JlbmRlclZpZXco
KTsKIH0KIAoraW5saW5lIGJvb2wgUmVuZGVyRWxlbWVudDo6Y2FuRXN0YWJsaXNoQ29udGFpbmlu
Z0Jsb2NrV2l0aFRyYW5zZm9ybSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzUmVuZGVyQmxvY2so
KSB8fCAoaXNUYWJsZVBhcnQoKSAmJiAhaXNSZW5kZXJUYWJsZUNvbCgpKTsKK30KKwogaW5saW5l
IGJvb2wgUmVuZGVyRWxlbWVudDo6Y3JlYXRlc0dyb3VwRm9yU3R5bGUoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlKQogewogICAgIHJldHVybiBzdHlsZS5oYXNPcGFjaXR5KCkgfHwgc3R5bGUuaGFz
TWFzaygpIHx8IHN0eWxlLmNsaXBQYXRoKCkgfHwgc3R5bGUuaGFzRmlsdGVyKCkgfHwgc3R5bGUu
aGFzQmFja2Ryb3BGaWx0ZXIoKSB8fCBzdHlsZS5oYXNCbGVuZE1vZGUoKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3ZGJk
NzMyN2M4NmNkNDNjZWY1NjI5OGRlN2IxZDBlZDc5NjFlNjQ5Li45ZjA4NmFlZWU3MDM2NDQ4MTBm
MGZkNjQxMWIwOTQ5MDU2MWQzM2Q5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDEtMTEg
IE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFNvbWUg
Y3NzLXRyYW5zZm9ybXMgdGVzdHMgYXNzZXJ0IGluIGRlYnVnCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAwNzkKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzgzMTc5OTcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAg
ICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6IFVwZGF0ZSBleHBlY3RhdGlvbnMgdG8gbm90ZSBuZXcg
cGFzc2VzLgorCiAyMDIyLTAxLTEwICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBudWxsIHB0ciBkZXJlZiBpbiBXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGlu
ZUxheW91dDo6Y29sbGVjdE92ZXJmbG93KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDVjZjM4YWEx
YzhhZTU2NDkxNjI4NDgyY2M5YTMxYTBhOGMzZmQ2NWYuLjU1ZTE0ZmQ5YTg4ZjE3MDYyNDc0NTVi
NzRhODQzMGQ0MDFlYzZlNTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzk0NCwxOCArMzk0NCwx
MiBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90
cmFuc2Zvcm0tY29tcG91bmQtbm90cmVmLTEuaAogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLWNvbXBvdW5kLW5vdHJlZi0yLmh0bWwg
WyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zv
cm1zL2JhY2tmYWNlLXZpc2liaWxpdHktMDAxLnJlZi5odG1sIFsgU2tpcCBdCiAKLXdlYmtpdC5v
cmcvYi8yMzAwNzkgWyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy10cmFuc2Zvcm1zL3RyYW5zZm9ybS10cmFuc2Zvcm1lZC10Ym9keS1jb250YWlucy1maXhl
ZC1wb3NpdGlvbi5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMjMwMDc5IFsgRGVidWcgXSBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zv
cm0tdHJhbnNmb3JtZWQtdGZvb3QtY29udGFpbnMtZml4ZWQtcG9zaXRpb24uaHRtbCBbIFNraXAg
XQotd2Via2l0Lm9yZy9iLzIzMDA3OSBbIERlYnVnIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLXRyYW5zZm9ybWVkLXRoZWFkLWNv
bnRhaW5zLWZpeGVkLXBvc2l0aW9uLmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8yMzAwNzkg
WyBEZWJ1ZyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2Zv
cm1zL3RyYW5zZm9ybS10cmFuc2Zvcm1lZC10ci1jb250YWlucy1maXhlZC1wb3NpdGlvbi5odG1s
IFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMjMwMDc5IFsgRGVidWcgXSBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNmb3Jtcy90cmFuc2Zvcm0tdHJhbnNmb3JtZWQt
dHItcGVyY2VudC1oZWlnaHQtY2hpbGQuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzIzMDA3
OSBbIERlYnVnIF0gZmFzdC9sYXllcnMvdG9wLWxheWVyLWFuY2VzdG9yLW9wYWNpdHktYW5kLXRy
YW5zZm9ybS1jcmFzaC5odG1sIFsgU2tpcCBdCi0KLXdlYmtpdC5vcmcvYi8yMzAwODAgWyBSZWxl
YXNlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMv
dHJhbnNmb3JtLXRyYW5zZm9ybWVkLXRib2R5LWNvbnRhaW5zLWZpeGVkLXBvc2l0aW9uLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzAwODAgWyBSZWxlYXNlIF0gaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3Jt
LXRyYW5zZm9ybWVkLXRmb290LWNvbnRhaW5zLWZpeGVkLXBvc2l0aW9uLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMzAwODAgWyBSZWxlYXNlIF0gaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLXRyYW5zZm9y
bWVkLXRoZWFkLWNvbnRhaW5zLWZpeGVkLXBvc2l0aW9uLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi8yMzAwODAgWyBSZWxlYXNlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLXRyYW5zZm9ybWVkLXRyLWNv
bnRhaW5zLWZpeGVkLXBvc2l0aW9uLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi8yMzAwODAgWyBSZWxlYXNlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLXRyYW5zZm9ybWVkLXRyLXBlcmNlbnQtaGVpZ2h0
LWNoaWxkLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzAwODAgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3Jt
LXRyYW5zZm9ybWVkLXRib2R5LWNvbnRhaW5zLWZpeGVkLXBvc2l0aW9uLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzAwODAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLXRyYW5zZm9ybWVkLXRmb290LWNv
bnRhaW5zLWZpeGVkLXBvc2l0aW9uLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5v
cmcvYi8yMzAwODAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5z
Zm9ybXMvdHJhbnNmb3JtLXRyYW5zZm9ybWVkLXRoZWFkLWNvbnRhaW5zLWZpeGVkLXBvc2l0aW9u
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzAwODAgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zZm9ybXMvdHJhbnNmb3JtLXRyYW5z
Zm9ybWVkLXRyLXBlcmNlbnQtaGVpZ2h0LWNoaWxkLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
Kword2Via2l0Lm9yZy9iLzIzNTA2MyBbIERlYnVnIF0gZmFzdC9sYXllcnMvdG9wLWxheWVyLWFu
Y2VzdG9yLW9wYWNpdHktYW5kLXRyYW5zZm9ybS1jcmFzaC5odG1sIFsgU2tpcCBdCiAKIHdlYmtp
dC5vcmcvYi8yMzAwODAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRy
YW5zZm9ybXMvM2QtcmVuZGVyaW5nLWNvbnRleHQtYW5kLWFic3Bvcy5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjMwMDgwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy10cmFuc2Zvcm1zLzNkLXJlbmRlcmluZy1jb250ZXh0LWFuZC1maXhwb3Mu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>