<?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>169924</bug_id>
          
          <creation_ts>2017-03-21 14:22:52 -0700</creation_ts>
          <short_desc>AX: WebKit should not expose redundant AXGroups with missing role when the label is the same as the contents</short_desc>
          <delta_ts>2021-10-17 09:38:37 -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>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>231848</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Craig">jcraig</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>tyler_w</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1289841</commentid>
    <comment_count>0</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2017-03-21 14:22:52 -0700</bug_when>
    <thetext>AX: WebKit should not expose redundant AXGroups with missing role when the label is the same as the contents... Unless there are click/key event handlers or some other heuristic indicator of meaning.

VoiceOver users on staff found the following markup pattern problematic:

&lt;div aria-label=&quot;1&quot;&gt;1&lt;/div&gt;
&lt;div aria-label=&quot;2&quot;&gt;2&lt;/div&gt;
&lt;div aria-label=&quot;3&quot;&gt;3&lt;/div&gt;

By default, WebKit exposes layout blocks as an AXGroup, and the aria-label as the AXTitle. This means users with bookended groups redundantly hear:

&quot;1 group, 1, end of group&quot;
&quot;2 group, 3, end of group&quot;
&quot;3 group, 3, end of group&quot;

Yes, it&apos;s an authoring problem, but it happens enough that I think we should work around it.

Proposal: On generic elements (GroupRole, not ApplicationGroupRole):
- If there is no explicit role, (With bug 169810, ARIA grouping roles will be WebCore ApplicationGroupRole, not WebCore GroupRole.)
- and if there is no click or key-down/up/press handler (nothing to make the AXGroup actionable)
- and if the content string matches the computed @aria-labelledby or @aria-label string...

Expose only the generic view: AXGroup with no AXTitle. VoiceOver will read the contents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290478</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-03-23 09:38:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/31221183&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804078</commentid>
    <comment_count>2</comment_count>
      <attachid>441161</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-10-13 17:16:50 -0700</bug_when>
    <thetext>Created attachment 441161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804114</commentid>
    <comment_count>3</comment_count>
      <attachid>441171</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-10-13 18:21:38 -0700</bug_when>
    <thetext>Created attachment 441171
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804272</commentid>
    <comment_count>4</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-10-14 07:42:34 -0700</bug_when>
    <thetext>Looks like this introduced a few crashes by trying to get the `stringValue` of nodes within documents that are marked for update.

// Renders referenced by accessibility objects could get destroyed, if TextIterator ends up triggering
// style update/layout here. See also AXObjectCache::deferTextChangedIfNeeded().
ASSERT_WITH_SECURITY_IMPLICATION(!nodeDocument-&gt;childNeedsStyleRecalc());

If we can&apos;t accurately determine the text because the document needs an update, we can return an empty string instead of asserting. We can&apos;t `updateBackingStore` before executing this codepath because we&apos;re calling from `accessibilityPlatformIncludesObject` (and other &quot;is ignored&quot; methods upstream) that are all const.

Stacktrace:

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.JavaScriptCore      	0x000000013840aef0 WTFCrash + 20 (Assertions.cpp:321)
1   com.apple.JavaScriptCore      	0x000000013840af04 WTFCrashWithSecurityImplication + 12 (Assertions.cpp:342)
2   com.apple.WebCore             	0x00000001177a5ac4 WebCore::AccessibilityRenderObject::textUnderElement(WebCore::AccessibilityTextUnderElementMode) const + 776
3   com.apple.WebCore             	0x00000001177a645c WebCore::AccessibilityRenderObject::stringValue() const + 428
4   com.apple.WebCore             	0x000000011563a4bc WebCore::isIgnorableGroup(WebCore::AccessibilityObject const&amp;) + 416
5   com.apple.WebCore             	0x000000011563a298 WebCore::AccessibilityObject::accessibilityPlatformIncludesObject() const + 472
6   com.apple.WebCore             	0x00000001177a081c WebCore::AccessibilityObject::defaultObjectInclusion() const + 300
7   com.apple.WebCore             	0x00000001177a90bc WebCore::AccessibilityRenderObject::defaultObjectInclusion() const + 172
8   com.apple.WebCore             	0x00000001177a91b0 WebCore::AccessibilityRenderObject::computeAccessibilityIsIgnored() const + 224
9   com.apple.WebCore             	0x00000001177a0944 WebCore::AccessibilityObject::accessibilityIsIgnored() const + 228
10  com.apple.WebCore             	0x00000001177d1fc4 WebCore::AccessibilityObject::parentObjectUnignored() const::$_2::operator()(WebCore::AccessibilityObject const&amp;) const + 40</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804275</commentid>
    <comment_count>5</comment_count>
      <attachid>441217</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-10-14 07:58:03 -0700</bug_when>
    <thetext>Created attachment 441217
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804280</commentid>
    <comment_count>6</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-10-14 08:31:32 -0700</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #5)
&gt; Created attachment 441217 [details]
&gt; Patch

--- a/Source/WebCore/ChangeLog
+++ a/Source/WebCore/ChangeLog

+        Instead of asserting when we try to get the text of an element in a
+        document that needs a style update, return an empty `String()` instead.

Two insteads.

--- a/Source/WebCore/accessibility/AccessibilityRenderObject.cpp
+++ a/Source/WebCore/accessibility/AccessibilityRenderObject.cpp

+                if (nodeDocument-&gt;childNeedsStyleRecalc())
+                    return String();

return { };

--- a/Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm
+++ a/Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm

+static bool isIgnorableGroup(const AccessibilityObject&amp; axObject)

isIgnorableGroup -&gt; shouldIgnoreGroup

+    // Never ignore a &lt;div&gt; with event listeners attached to it (e.g. onclick).
+    if (axObject.node() &amp;&amp; axObject.node()-&gt;hasEventListeners())
+        return false;

Isn&apos;t this check done for any object already in the isIgnored method? Wondering why we need to do this specifically for groups.

+    auto* first = axObject.firstChild();
+    if (first &amp;&amp; first == axObject.lastChild() &amp;&amp; first-&gt;roleValue() == AccessibilityRole::StaticText) {

Wouldn&apos;t this be more efficient?

+    auto&amp; children = axObject.children();
+    if (children.size() == 1 &amp;&amp; children[0]-&gt;roleValue() == AccessibilityRole::StaticText) {

or the problem is that this is used in children()?

+        Vector&lt;AccessibilityText&gt; text;
...
+        auto axText = text.size() ? text[0].text : String();

Aren&apos;t these names inverted?  i.e., shouldn&apos;t the String be text and the vector axText?

What if the vector has more than one element? Perhaps we should return false in that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804288</commentid>
    <comment_count>7</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-10-14 08:45:43 -0700</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #5)
&gt; Created attachment 441217 [details]
&gt; Patch

+        // Ensure the only accessible content exposed via `children` is the text elements and event handler groups.
+        shouldBe(&quot;contentContainer.childrenCount&quot;, &quot;6&quot;);
+        shouldBe(&quot;contentContainer.childAtIndex(0).stringValue&quot;, &quot;&apos;AXValue: Blue cheese&apos;&quot;);
+        shouldBe(&quot;contentContainer.childAtIndex(1).stringValue&quot;, &quot;&apos;AXValue: Oranges&apos;&quot;);
+        shouldBe(&quot;contentContainer.childAtIndex(2).role&quot;, &quot;&apos;AXRole: AXGroup&apos;&quot;);
+        shouldBe(&quot;contentContainer.childAtIndex(3).stringValue&quot;, &quot;&apos;AXValue: Jello&apos;&quot;);
+        shouldBe(&quot;contentContainer.childAtIndex(4).stringValue&quot;, &quot;&apos;AXValue: Broccoli&apos;&quot;);
+        shouldBe(&quot;contentContainer.childAtIndex(5).role&quot;, &quot;&apos;AXRole: AXGroup&apos;&quot;);

Perhaps we should check the role of the static text objects as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804303</commentid>
    <comment_count>8</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-10-14 09:17:21 -0700</bug_when>
    <thetext>&gt; +                if (nodeDocument-&gt;childNeedsStyleRecalc())
&gt; +                    return String();
&gt;
&gt; return { };

There is code two lines above that also does `return String();`. I can change both if that&apos;s the style preference here.

&gt; +    // Never ignore a &lt;div&gt; with event listeners attached to it (e.g.
&gt; onclick).
&gt; +    if (axObject.node() &amp;&amp; axObject.node()-&gt;hasEventListeners())
&gt; +        return false;
&gt; 
&gt; Isn&apos;t this check done for any object already in the isIgnored method?
&gt; Wondering why we need to do this specifically for groups.

If it is, I can&apos;t find it. It probably should exist everywhere?

Regardless, I think we&apos;d still need this check to avoid returning a false positive for a group with redundant AX text and an event handler.

&gt; +    auto* first = axObject.firstChild();
&gt; +    if (first &amp;&amp; first == axObject.lastChild() &amp;&amp; first-&gt;roleValue() ==
&gt; AccessibilityRole::StaticText) {
&gt; 
&gt; Wouldn&apos;t this be more efficient?
&gt; 
&gt; +    auto&amp; children = axObject.children();
&gt; +    if (children.size() == 1 &amp;&amp; children[0]-&gt;roleValue() ==
&gt; AccessibilityRole::StaticText) {
&gt; 
&gt; or the problem is that this is used in children()?

We can&apos;t call children() here because children() is not const (it updates the children if required). Making any &quot;is ignored&quot; function non-const will make many other things have to be non-const as well.

This is generally unfortunate, because it makes ignoring things based on their contents much more difficult. We&apos;ll have to comb through the AX objects represented by the raw layout tree ourselves. It works fine in this simple example, but more complex analyses will be harder and fragile.

&gt; +        Vector&lt;AccessibilityText&gt; text;
&gt; ...
&gt; +        auto axText = text.size() ? text[0].text : String();
&gt; 
&gt; Aren&apos;t these names inverted?  i.e., shouldn&apos;t the String be text and the
&gt; vector axText?
&gt; 
&gt; What if the vector has more than one element? Perhaps we should return false
&gt; in that case.

My understanding of accessibilityText is that it&apos;s ordered in terms of the most applicable text based on https://www.w3.org/TR/accname-1.2/#step1. So by picking the first one, we are choosing the one AX clients should be using when describing the element. Web Inspector also picks the first accessibilityText.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804308</commentid>
    <comment_count>9</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-10-14 09:31:28 -0700</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #8)
&gt; &gt; +                if (nodeDocument-&gt;childNeedsStyleRecalc())
&gt; &gt; +                    return String();
&gt; &gt;
&gt; &gt; return { };
&gt; 
&gt; There is code two lines above that also does `return String();`. I can
&gt; change both if that&apos;s the style preference here.

Yes, feel free to change the other two. We don&apos;t do mass style changes but if you are adding new code or touching a function, you may just fix it up.

&gt; 
&gt; &gt; +    // Never ignore a &lt;div&gt; with event listeners attached to it (e.g.
&gt; &gt; onclick).
&gt; &gt; +    if (axObject.node() &amp;&amp; axObject.node()-&gt;hasEventListeners())
&gt; &gt; +        return false;
&gt; &gt; 
&gt; &gt; Isn&apos;t this check done for any object already in the isIgnored method?
&gt; &gt; Wondering why we need to do this specifically for groups.
&gt; 
&gt; If it is, I can&apos;t find it. It probably should exist everywhere?
&gt; 
&gt; Regardless, I think we&apos;d still need this check to avoid returning a false
&gt; positive for a group with redundant AX text and an event handler.
&gt; 
&gt; &gt; +    auto* first = axObject.firstChild();
&gt; &gt; +    if (first &amp;&amp; first == axObject.lastChild() &amp;&amp; first-&gt;roleValue() ==
&gt; &gt; AccessibilityRole::StaticText) {
&gt; &gt; 
&gt; &gt; Wouldn&apos;t this be more efficient?
&gt; &gt; 
&gt; &gt; +    auto&amp; children = axObject.children();
&gt; &gt; +    if (children.size() == 1 &amp;&amp; children[0]-&gt;roleValue() ==
&gt; &gt; AccessibilityRole::StaticText) {
&gt; &gt; 
&gt; &gt; or the problem is that this is used in children()?
&gt; 
&gt; We can&apos;t call children() here because children() is not const (it updates
&gt; the children if required). Making any &quot;is ignored&quot; function non-const will
&gt; make many other things have to be non-const as well.
&gt; 
&gt; This is generally unfortunate, because it makes ignoring things based on
&gt; their contents much more difficult. We&apos;ll have to comb through the AX
&gt; objects represented by the raw layout tree ourselves. It works fine in this
&gt; simple example, but more complex analyses will be harder and fragile.

Maybe we need a variant of children that doesn&apos;t do an update. And  we need to rework the first and last child two. But that is for a separate patch.

&gt; 
&gt; &gt; +        Vector&lt;AccessibilityText&gt; text;
&gt; &gt; ...
&gt; &gt; +        auto axText = text.size() ? text[0].text : String();
&gt; &gt; 
&gt; &gt; Aren&apos;t these names inverted?  i.e., shouldn&apos;t the String be text and the
&gt; &gt; vector axText?
&gt; &gt; 
&gt; &gt; What if the vector has more than one element? Perhaps we should return false
&gt; &gt; in that case.
&gt; 
&gt; My understanding of accessibilityText is that it&apos;s ordered in terms of the
&gt; most applicable text based on https://www.w3.org/TR/accname-1.2/#step1. So
&gt; by picking the first one, we are choosing the one AX clients should be using
&gt; when describing the element. Web Inspector also picks the first
&gt; accessibilityText.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804325</commentid>
    <comment_count>10</comment_count>
      <attachid>441233</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-10-14 10:04:19 -0700</bug_when>
    <thetext>Created attachment 441233
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804413</commentid>
    <comment_count>11</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-10-14 12:21:32 -0700</bug_when>
    <thetext>Marking r? again. Will wait on passing tests before marking cq?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1804802</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-15 07:35:11 -0700</bug_when>
    <thetext>Committed r284245 (243054@main): &lt;https://commits.webkit.org/243054@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 441233.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805162</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-10-15 17:47:12 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 231848</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805263</commentid>
    <comment_count>14</comment_count>
      <attachid>441492</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-10-16 08:34:31 -0700</bug_when>
    <thetext>Created attachment 441492
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805385</commentid>
    <comment_count>15</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2021-10-17 08:07:24 -0700</bug_when>
    <thetext>The previous patch was reverted because it caused a failure in inspector/dom/getAccessibilityPropertiesForNode.html. This wasn’t caught in EWS because the test is marked as flaky timeout, and EWS skips those.

The test failure pointed out a bug. This patch changes AccessibilityNodeObject::textUnderElement to return null String() if the document needs style recalculation.

if (nodeDocument-&gt;childNeedsStyleRecalc())
    return { };

We never accounted for this in shouldIgnoreGroup, and we can sometimes get a null stringValue where there actually is a non-empty value in the DOM. This caused the group to be incorrectly ignored.

To protect against this, the new patch only checks for redundancies against non-null static text values. If the static text is actually null, it will be ignored anyways, and the containing group will be marked AXEmptyGroup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805389</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-17 09:38:35 -0700</bug_when>
    <thetext>Committed r284335 (243130@main): &lt;https://commits.webkit.org/243130@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 441492.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441161</attachid>
            <date>2021-10-13 17:16:50 -0700</date>
            <delta_ts>2021-10-13 18:21:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169924-20211013191649.patch</filename>
            <type>text/plain</type>
            <size>9540</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM5ZjNjNzUxNzg2Mjlm
NTRhMzg3ZmFjMmU0NzQ4YzM3MTM5YWE2My4uNjYyNzE3NjEwYzVkOTRmYzQ0ZGQ1MDkyZDQ2ODky
NzcyNGMyYzFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTEwLTEzICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFdlYktpdCBzaG91
bGQgbm90IGV4cG9zZSByZWR1bmRhbnQgQVhHcm91cHMgd2l0aCBtaXNzaW5nIHJvbGUgd2hlbiB0
aGUgbGFiZWwgaXMgdGhlIHNhbWUgYXMgdGhlIGNvbnRlbnRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk5MjQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEb24ndCBleHBvc2UgZ3JvdXBzIHdpdGggcmVk
dW5kYW50IGFjY2Vzc2liaWxpdHkgdGV4dCBvbiB0aGUgTWFjLgorICAgICAgICBIZXJlJ3MgYW4g
ZXhhbXBsZSBvZiBvbmUgc3VjaCBncm91cDoKKworICAgICAgICA8ZGl2IGFyaWEtbGFiZWw9IjEi
PjE8L2Rpdj4KKworICAgICAgICBUaGlzIGdyb3VwIGlzIG5vdCB1c2VmdWwgdG8gYWNjZXNzaWJp
bGl0eSBjbGllbnRzLiBJbnN0ZWFkLCB3ZQorICAgICAgICBleHBvc2UgdGhlIHRleHQgY29udGVu
dHMgZGlyZWN0bHkuCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9pZ25vcmUtcmVkdW5k
YW50LWFjY2Vzc2liaWxpdHktdGV4dC1ncm91cHMuaHRtbAorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Omlz
SWdub3JhYmxlR3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
YWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QgY29uc3QpOgorCiAyMDIxLTEwLTEz
ICBUaW0gTmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IDxkaWFs
b2c+IGZvY3VzaW5nIHN0ZXBzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQppbmRleCAyOGUxNTVhMjY2ZjVi
ZWY1ZjM1MzAyM2Y5Y2MzMGJkOWY3NjhmNDEyLi5mODZiZjcyYTE2M2RjMzU1ZWRmNzZjODAzZjlj
ZWQ3MzFlMTdiYmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0KQEAgLTExNCw2ICsxMTQsMjggQEAg
Ym9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5SWdub3JlQXR0YWNobWVudCgp
IGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBib29sIGlzSWdub3JhYmxlR3Jv
dXAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgYXhPYmplY3QpCit7CisgICAgaWYgKCFheE9i
amVjdC5pc0dyb3VwKCkgJiYgYXhPYmplY3Qucm9sZVZhbHVlKCkgIT0gQWNjZXNzaWJpbGl0eVJv
bGU6OkRpdikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTmV2ZXIgaWdub3JlIGEg
PGRpdj4gd2l0aCBldmVudCBsaXN0ZW5lcnMgYXR0YWNoZWQgdG8gaXQgKGUuZy4gb25jbGljayku
CisgICAgaWYgKGF4T2JqZWN0Lm5vZGUoKSAmJiBheE9iamVjdC5ub2RlKCktPmhhc0V2ZW50TGlz
dGVuZXJzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8qIGZpcnN0ID0gYXhP
YmplY3QuZmlyc3RDaGlsZCgpOworICAgIGlmIChmaXJzdCA9PSBheE9iamVjdC5sYXN0Q2hpbGQo
KSAmJiBmaXJzdCAmJiBmaXJzdC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0
YXRpY1RleHQpIHsKKyAgICAgICAgVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiB0ZXh0OworICAg
ICAgICBheE9iamVjdC5hY2Nlc3NpYmlsaXR5VGV4dCh0ZXh0KTsKKyAgICAgICAgLy8gRG9uJ3Qg
ZXhwb3NlIDxkaXY+cyB3aG9zZSBvbmx5IGNoaWxkIGlzIHRleHQgdGhhdCBoYXMgdGhlIHNhbWUg
Y29udGVudCBhcyB0aGUgPGRpdj5zIGFjY2Vzc2liaWxpdHkgdGV4dC4KKyAgICAgICAgLy8gSW5z
dGVhZCwgd2Ugc2hvdWxkIGV4cG9zZSB0aGUgdGV4dCBlbGVtZW50IGRpcmVjdGx5LgorICAgICAg
ICBhdXRvIGF4VGV4dCA9IHRleHQuc2l6ZSgpID8gdGV4dFswXS50ZXh0IDogU3RyaW5nKCk7Cisg
ICAgICAgIGlmIChmaXJzdC0+c3RyaW5nVmFsdWUoKSA9PSBheFRleHQpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBBY2Nlc3NpYmlsaXR5
T2JqZWN0SW5jbHVzaW9uIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlQbGF0Zm9y
bUluY2x1ZGVzT2JqZWN0KCkgY29uc3QKIHsKICAgICBpZiAoaXNNZW51TGlzdFBvcHVwKCkgfHwg
aXNNZW51TGlzdE9wdGlvbigpKQpAQCAtMTQyLDYgKzE2NCw5IEBAIEFjY2Vzc2liaWxpdHlPYmpl
Y3RJbmNsdXNpb24gQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5j
bHVkZXNPCiAgICAgICAgIH0KICAgICB9CiAgICAgCisgICAgaWYgKGlzSWdub3JhYmxlR3JvdXAo
KnRoaXMpKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdu
b3JlT2JqZWN0OworCiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkRl
ZmF1bHRCZWhhdmlvcjsKIH0KICAgICAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwY2UxNGE3MmRlMDg4Zjg4ZTQ4MzI3ZjY2
NGQzYmQzYTFhMDg1OTI1Li4wZGZlYjA4ZjYzNjk4OTVhODcxMWRhYjU2MWNjZjFmNGUzMWIwM2Y2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTAtMTMgIFR5bGVyIFdpbGNvY2sgIDx0eWxl
cl93QGFwcGxlLmNvbT4KKworICAgICAgICBBWDogV2ViS2l0IHNob3VsZCBub3QgZXhwb3NlIHJl
ZHVuZGFudCBBWEdyb3VwcyB3aXRoIG1pc3Npbmcgcm9sZSB3aGVuIHRoZSBsYWJlbCBpcyB0aGUg
c2FtZSBhcyB0aGUgY29udGVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2OTkyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBhIHRlc3QgZW5zdXJpbmcgV2ViS2l0IGFwcHJvcHJpYXRlbHkgZG9l
cyBhbmQgZG9lc24ndCBleHBvc2UKKyAgICAgICAgZ3JvdXBzIHdpdGggcmVkdW5kYW50IGFjY2Vz
c2liaWxpdHkgdGV4dC4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaWdub3JlLXJlZHVuZGFu
dC1hY2Nlc3NpYmlsaXR5LXRleHQtZ3JvdXBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9pZ25vcmUtcmVkdW5kYW50LWFjY2Vzc2liaWxpdHktdGV4dC1ncm91
cHMuaHRtbDogQWRkZWQuCisKIDIwMjEtMTAtMTMgIEVyaWMgSHV0Y2hpc29uICA8ZWh1dGNoaXNv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIHRlc3QgZXhwZWN0YXRpb25zIGZvciBmYXN0
L2V2ZW50cy9pb3MvZG9tLXVwZGF0ZS1vbi1rZXlkb3duLXF1aXJrLmh0bWwuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9pZ25vcmUtcmVkdW5kYW50LWFjY2Vzc2li
aWxpdHktdGV4dC1ncm91cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvaWdub3JlLXJlZHVuZGFudC1hY2Nlc3NpYmlsaXR5LXRleHQtZ3JvdXBzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kNTE5ZmZiNDQ2MmExZWRkZDI4NGNlMTFiYzM4YTY5OGQ3YzMyMjQ1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvaWdub3Jl
LXJlZHVuZGFudC1hY2Nlc3NpYmlsaXR5LXRleHQtZ3JvdXBzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDI2IEBACitUaGlzIHRlc3QgZW5zdXJlcyBXZWJLaXQgaWdub3JlcyBncm91cHMgd2l0aCBy
ZWR1bmRhbnQgYWNjZXNzaWJpbGl0eSB0ZXh0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyAhYXJpYUxhYmVsR3JvdXAgaXMgdHJ1ZQorUEFTUyAhdGl0bGVHcm91cCBpcyB0
cnVlCitQQVNTICFhcmlhTGFiZWxEaXYgaXMgdHJ1ZQorUEFTUyAhdGl0bGVEaXYgaXMgdHJ1ZQor
UEFTUyB0eXBlb2YgY2xpY2tIYW5kbGVyR3JvdXAgaXMgJ29iamVjdCcKK1BBU1MgdHlwZW9mIGNs
aWNrSGFuZGxlckRpdiBpcyAnb2JqZWN0JworUEFTUyByZXN1bHRFbGVtZW50LnJvbGUgaXMgJ0FY
Um9sZTogQVhTdGF0aWNUZXh0JworUEFTUyByZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIGlzICdB
WFZhbHVlOiBCbHVlIGNoZWVzZScKK1BBU1MgcmVzdWx0RWxlbWVudC5yb2xlIGlzICdBWFJvbGU6
IEFYU3RhdGljVGV4dCcKK1BBU1MgcmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1
ZTogT3JhbmdlcycKK1BBU1MgY29udGVudENvbnRhaW5lci5jaGlsZHJlbkNvdW50IGlzIDYKK1BB
U1MgY29udGVudENvbnRhaW5lci5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFs
dWU6IEJsdWUgY2hlZXNlJworUEFTUyBjb250ZW50Q29udGFpbmVyLmNoaWxkQXRJbmRleCgxKS5z
dHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogT3JhbmdlcycKK1BBU1MgY29udGVudENvbnRhaW5lci5j
aGlsZEF0SW5kZXgoMikucm9sZSBpcyAnQVhSb2xlOiBBWEdyb3VwJworUEFTUyBjb250ZW50Q29u
dGFpbmVyLmNoaWxkQXRJbmRleCgzKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogSmVsbG8nCitQ
QVNTIGNvbnRlbnRDb250YWluZXIuY2hpbGRBdEluZGV4KDQpLnN0cmluZ1ZhbHVlIGlzICdBWFZh
bHVlOiBCcm9jY29saScKK1BBU1MgY29udGVudENvbnRhaW5lci5jaGlsZEF0SW5kZXgoNSkucm9s
ZSBpcyAnQVhSb2xlOiBBWEdyb3VwJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
bWFjL2lnbm9yZS1yZWR1bmRhbnQtYWNjZXNzaWJpbGl0eS10ZXh0LWdyb3Vwcy5odG1sIGIvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvaWdub3JlLXJlZHVuZGFudC1hY2Nlc3NpYmlsaXR5
LXRleHQtZ3JvdXBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDkzOTg4YzU2MGYwZjAxMThiZDlmZmFjOWUw
MjQwZWE2ZDIwZmQwZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL2lnbm9yZS1yZWR1bmRhbnQtYWNjZXNzaWJpbGl0eS10ZXh0LWdyb3Vwcy5odG1sCkBA
IC0wLDAgKzEsODUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nlc3NpYmls
aXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPGRpdiBpZD0iY29u
dGVudCIgcm9sZT0iZ3JvdXAiPgorICAgIDwhLS0gRmlyc3QsIHRlc3Qgcm9sZT0iZ3JvdXAiIGVs
ZW1lbnRzLiAtLT4KKyAgICA8ZGl2IGlkPSJhcmlhLWxhYmVsLWdyb3VwIiByb2xlPSJncm91cCIg
YXJpYS1sYWJlbD0iQmx1ZSBjaGVlc2UiPgorICAgICAgICBCbHVlIGNoZWVzZQorICAgIDwvZGl2
PgorCisgICAgPGRpdiBpZD0idGl0bGUtZ3JvdXAiIHJvbGU9Imdyb3VwIiB0aXRsZT0iT3Jhbmdl
cyI+CisgICAgICAgIE9yYW5nZXMKKyAgICA8L2Rpdj4KKworICAgIDxkaXYgaWQ9ImNsaWNrLWhh
bmRsZXItZ3JvdXAiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSJHcm91cCBjbGljayBoYW5kbGVy
IiBvbmNsaWNrPSJlbXB0eUNsaWNrSGFuZGxlcigpIj4KKyAgICAgICAgR3JvdXAgY2xpY2sgaGFu
ZGxlcgorICAgIDwvZGl2PgorCisgICAgPCEtLSBBbHNvIHRlc3Qgcm9sZS1sZXNzIGdlbmVyaWMg
ZGl2cy4gLS0+CisgICAgPGRpdiBpZD0iYXJpYS1sYWJlbC1kaXYiIGFyaWEtbGFiZWw9IkplbGxv
Ij4KKyAgICAgICAgSmVsbG8KKyAgICA8L2Rpdj4KKworICAgIDxkaXYgaWQ9InRpdGxlLWRpdiIg
dGl0bGU9IkJyb2Njb2xpIj4KKyAgICAgICAgQnJvY2NvbGkKKyAgICA8L2Rpdj4KKworICAgIDxk
aXYgaWQ9ImNsaWNrLWhhbmRsZXItZGl2IiBhcmlhLWxhYmVsPSJEaXYgY2xpY2sgaGFuZGxlciIg
b25jbGljaz0iZW1wdHlDbGlja0hhbmRsZXIoKSI+CisgICAgICAgIERpdiBjbGljayBoYW5kbGVy
CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0
ZXN0IGVuc3VyZXMgV2ViS2l0IGlnbm9yZXMgZ3JvdXBzIHdpdGggcmVkdW5kYW50IGFjY2Vzc2li
aWxpdHkgdGV4dC4iKTsKKyAgICBjb25zdCBlbXB0eUNsaWNrSGFuZGxlciA9ICgpID0+IHt9Owor
CisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworCisgICAgICAgIHZh
ciBjb250ZW50Q29udGFpbmVyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJjb250ZW50Iik7CisKKyAgICAgICAgdmFyIGFyaWFMYWJlbEdyb3VwID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJhcmlhLWxhYmVsLWdy
b3VwIik7CisgICAgICAgIHZhciBjbGlja0hhbmRsZXJHcm91cCA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2xpY2staGFuZGxlci1ncm91cCIpOworICAg
ICAgICB2YXIgdGl0bGVHcm91cCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgidGl0bGUtZ3JvdXAiKTsKKworICAgICAgICB2YXIgYXJpYUxhYmVsRGl2ID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJhcmlhLWxhYmVs
LWRpdiIpOworICAgICAgICB2YXIgY2xpY2tIYW5kbGVyRGl2ID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjbGljay1oYW5kbGVyLWRpdiIpOworICAgICAg
ICB2YXIgdGl0bGVEaXYgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQoInRpdGxlLWRpdiIpOworCisgICAgICAgIC8vIFdlIHNob3VsZG4ndCBiZSBhYmxlIHRv
IGdldCBhbiBhY2Nlc3NpYmxlIGVsZW1lbnQgZm9yIHRoZXNlIGdyb3VwcyBiZWNhdXNlIHRoZXkg
c2hvdWxkIGJlIGlnbm9yZWQuCisgICAgICAgIHNob3VsZEJlVHJ1ZSgiIWFyaWFMYWJlbEdyb3Vw
Iik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiIXRpdGxlR3JvdXAiKTsKKyAgICAgICAgc2hvdWxk
QmVUcnVlKCIhYXJpYUxhYmVsRGl2Iik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiIXRpdGxlRGl2
Iik7CisgICAgICAgIC8vIEJ1dCBhbnkgZ3JvdXAgd2l0aCBhbiBldmVudCBoYW5kbGVyIHNob3Vs
ZCBhbHdheXMgYmUgZXhwb3NlZC4KKyAgICAgICAgc2hvdWxkQmUoInR5cGVvZiBjbGlja0hhbmRs
ZXJHcm91cCIsICInb2JqZWN0JyIpOworICAgICAgICBzaG91bGRCZSgidHlwZW9mIGNsaWNrSGFu
ZGxlckRpdiIsICInb2JqZWN0JyIpOworCisgICAgICAgIC8vIEVuc3VyZSB3ZSBjYW4gc2VhcmNo
IGZvciB0aGUgdGV4dCB3aXRoaW4gdGhlIGlnbm9yZWQgZ3JvdXBzLgorICAgICAgICB2YXIgcmVz
dWx0RWxlbWVudCA9IGNvbnRlbnRDb250YWluZXIudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRl
KGNvbnRlbnRDb250YWluZXIsIHRydWUsICJBWEFueVR5cGVTZWFyY2hLZXkiLCAiIiwgZmFsc2Up
OworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYU3Rh
dGljVGV4dCciKTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUi
LCAiJ0FYVmFsdWU6IEJsdWUgY2hlZXNlJyIpOworCisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBj
b250ZW50Q29udGFpbmVyLnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShyZXN1bHRFbGVtZW50
LCB0cnVlLCAiQVhBbnlUeXBlU2VhcmNoS2V5IiwgIiIsIGZhbHNlKTsKKyAgICAgICAgc2hvdWxk
QmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWFN0YXRpY1RleHQnIik7CisgICAg
ICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBPcmFu
Z2VzJyIpOworCisgICAgICAgIC8vIEVuc3VyZSB0aGUgb25seSBhY2Nlc3NpYmxlIGNvbnRlbnQg
ZXhwb3NlZCB2aWEgYGNoaWxkcmVuYCBpcyB0aGUgdGV4dCBlbGVtZW50cyBhbmQgZXZlbnQgaGFu
ZGxlciBncm91cHMuCisgICAgICAgIHNob3VsZEJlKCJjb250ZW50Q29udGFpbmVyLmNoaWxkcmVu
Q291bnQiLCAiNiIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudENvbnRhaW5lci5jaGlsZEF0
SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IEJsdWUgY2hlZXNlJyIpOworICAgICAg
ICBzaG91bGRCZSgiY29udGVudENvbnRhaW5lci5jaGlsZEF0SW5kZXgoMSkuc3RyaW5nVmFsdWUi
LCAiJ0FYVmFsdWU6IE9yYW5nZXMnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50Q29udGFp
bmVyLmNoaWxkQXRJbmRleCgyKS5yb2xlIiwgIidBWFJvbGU6IEFYR3JvdXAnIik7CisgICAgICAg
IHNob3VsZEJlKCJjb250ZW50Q29udGFpbmVyLmNoaWxkQXRJbmRleCgzKS5zdHJpbmdWYWx1ZSIs
ICInQVhWYWx1ZTogSmVsbG8nIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50Q29udGFpbmVy
LmNoaWxkQXRJbmRleCg0KS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogQnJvY2NvbGknIik7Cisg
ICAgICAgIHNob3VsZEJlKCJjb250ZW50Q29udGFpbmVyLmNoaWxkQXRJbmRleCg1KS5yb2xlIiwg
IidBWFJvbGU6IEFYR3JvdXAnIik7CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNvbnRlbnQiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgfQorPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441171</attachid>
            <date>2021-10-13 18:21:38 -0700</date>
            <delta_ts>2021-10-14 07:57:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169924-20211013202137.patch</filename>
            <type>text/plain</type>
            <size>9540</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM5ZjNjNzUxNzg2Mjlm
NTRhMzg3ZmFjMmU0NzQ4YzM3MTM5YWE2My4uNjYyNzE3NjEwYzVkOTRmYzQ0ZGQ1MDkyZDQ2ODky
NzcyNGMyYzFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTEwLTEzICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFdlYktpdCBzaG91
bGQgbm90IGV4cG9zZSByZWR1bmRhbnQgQVhHcm91cHMgd2l0aCBtaXNzaW5nIHJvbGUgd2hlbiB0
aGUgbGFiZWwgaXMgdGhlIHNhbWUgYXMgdGhlIGNvbnRlbnRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk5MjQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEb24ndCBleHBvc2UgZ3JvdXBzIHdpdGggcmVk
dW5kYW50IGFjY2Vzc2liaWxpdHkgdGV4dCBvbiB0aGUgTWFjLgorICAgICAgICBIZXJlJ3MgYW4g
ZXhhbXBsZSBvZiBvbmUgc3VjaCBncm91cDoKKworICAgICAgICA8ZGl2IGFyaWEtbGFiZWw9IjEi
PjE8L2Rpdj4KKworICAgICAgICBUaGlzIGdyb3VwIGlzIG5vdCB1c2VmdWwgdG8gYWNjZXNzaWJp
bGl0eSBjbGllbnRzLiBJbnN0ZWFkLCB3ZQorICAgICAgICBleHBvc2UgdGhlIHRleHQgY29udGVu
dHMgZGlyZWN0bHkuCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9pZ25vcmUtcmVkdW5k
YW50LWFjY2Vzc2liaWxpdHktdGV4dC1ncm91cHMuaHRtbAorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Omlz
SWdub3JhYmxlR3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6
YWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QgY29uc3QpOgorCiAyMDIxLTEwLTEz
ICBUaW0gTmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IDxkaWFs
b2c+IGZvY3VzaW5nIHN0ZXBzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQppbmRleCAyOGUxNTVhMjY2ZjVi
ZWY1ZjM1MzAyM2Y5Y2MzMGJkOWY3NjhmNDEyLi45OTA2ZWIzYWY2M2U4NWNlOTExNzlkZTRmNThl
ZjhlZDVkOWRiMTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0KQEAgLTExNCw2ICsxMTQsMjggQEAg
Ym9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5SWdub3JlQXR0YWNobWVudCgp
IGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBib29sIGlzSWdub3JhYmxlR3Jv
dXAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCYgYXhPYmplY3QpCit7CisgICAgaWYgKCFheE9i
amVjdC5pc0dyb3VwKCkgJiYgYXhPYmplY3Qucm9sZVZhbHVlKCkgIT0gQWNjZXNzaWJpbGl0eVJv
bGU6OkRpdikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTmV2ZXIgaWdub3JlIGEg
PGRpdj4gd2l0aCBldmVudCBsaXN0ZW5lcnMgYXR0YWNoZWQgdG8gaXQgKGUuZy4gb25jbGljayku
CisgICAgaWYgKGF4T2JqZWN0Lm5vZGUoKSAmJiBheE9iamVjdC5ub2RlKCktPmhhc0V2ZW50TGlz
dGVuZXJzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8qIGZpcnN0ID0gYXhP
YmplY3QuZmlyc3RDaGlsZCgpOworICAgIGlmIChmaXJzdCAmJiBmaXJzdCA9PSBheE9iamVjdC5s
YXN0Q2hpbGQoKSAmJiBmaXJzdC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0
YXRpY1RleHQpIHsKKyAgICAgICAgVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiB0ZXh0OworICAg
ICAgICBheE9iamVjdC5hY2Nlc3NpYmlsaXR5VGV4dCh0ZXh0KTsKKyAgICAgICAgLy8gRG9uJ3Qg
ZXhwb3NlIDxkaXY+cyB3aG9zZSBvbmx5IGNoaWxkIGlzIHRleHQgdGhhdCBoYXMgdGhlIHNhbWUg
Y29udGVudCBhcyB0aGUgPGRpdj5zIGFjY2Vzc2liaWxpdHkgdGV4dC4KKyAgICAgICAgLy8gSW5z
dGVhZCwgd2Ugc2hvdWxkIGV4cG9zZSB0aGUgdGV4dCBlbGVtZW50IGRpcmVjdGx5LgorICAgICAg
ICBhdXRvIGF4VGV4dCA9IHRleHQuc2l6ZSgpID8gdGV4dFswXS50ZXh0IDogU3RyaW5nKCk7Cisg
ICAgICAgIGlmIChmaXJzdC0+c3RyaW5nVmFsdWUoKSA9PSBheFRleHQpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBBY2Nlc3NpYmlsaXR5
T2JqZWN0SW5jbHVzaW9uIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlQbGF0Zm9y
bUluY2x1ZGVzT2JqZWN0KCkgY29uc3QKIHsKICAgICBpZiAoaXNNZW51TGlzdFBvcHVwKCkgfHwg
aXNNZW51TGlzdE9wdGlvbigpKQpAQCAtMTQyLDYgKzE2NCw5IEBAIEFjY2Vzc2liaWxpdHlPYmpl
Y3RJbmNsdXNpb24gQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5j
bHVkZXNPCiAgICAgICAgIH0KICAgICB9CiAgICAgCisgICAgaWYgKGlzSWdub3JhYmxlR3JvdXAo
KnRoaXMpKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6SWdu
b3JlT2JqZWN0OworCiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246OkRl
ZmF1bHRCZWhhdmlvcjsKIH0KICAgICAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwY2UxNGE3MmRlMDg4Zjg4ZTQ4MzI3ZjY2
NGQzYmQzYTFhMDg1OTI1Li4wZGZlYjA4ZjYzNjk4OTVhODcxMWRhYjU2MWNjZjFmNGUzMWIwM2Y2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTAtMTMgIFR5bGVyIFdpbGNvY2sgIDx0eWxl
cl93QGFwcGxlLmNvbT4KKworICAgICAgICBBWDogV2ViS2l0IHNob3VsZCBub3QgZXhwb3NlIHJl
ZHVuZGFudCBBWEdyb3VwcyB3aXRoIG1pc3Npbmcgcm9sZSB3aGVuIHRoZSBsYWJlbCBpcyB0aGUg
c2FtZSBhcyB0aGUgY29udGVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2OTkyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBhIHRlc3QgZW5zdXJpbmcgV2ViS2l0IGFwcHJvcHJpYXRlbHkgZG9l
cyBhbmQgZG9lc24ndCBleHBvc2UKKyAgICAgICAgZ3JvdXBzIHdpdGggcmVkdW5kYW50IGFjY2Vz
c2liaWxpdHkgdGV4dC4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaWdub3JlLXJlZHVuZGFu
dC1hY2Nlc3NpYmlsaXR5LXRleHQtZ3JvdXBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9pZ25vcmUtcmVkdW5kYW50LWFjY2Vzc2liaWxpdHktdGV4dC1ncm91
cHMuaHRtbDogQWRkZWQuCisKIDIwMjEtMTAtMTMgIEVyaWMgSHV0Y2hpc29uICA8ZWh1dGNoaXNv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIHRlc3QgZXhwZWN0YXRpb25zIGZvciBmYXN0
L2V2ZW50cy9pb3MvZG9tLXVwZGF0ZS1vbi1rZXlkb3duLXF1aXJrLmh0bWwuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9pZ25vcmUtcmVkdW5kYW50LWFjY2Vzc2li
aWxpdHktdGV4dC1ncm91cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvaWdub3JlLXJlZHVuZGFudC1hY2Nlc3NpYmlsaXR5LXRleHQtZ3JvdXBzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kNTE5ZmZiNDQ2MmExZWRkZDI4NGNlMTFiYzM4YTY5OGQ3YzMyMjQ1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvaWdub3Jl
LXJlZHVuZGFudC1hY2Nlc3NpYmlsaXR5LXRleHQtZ3JvdXBzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDI2IEBACitUaGlzIHRlc3QgZW5zdXJlcyBXZWJLaXQgaWdub3JlcyBncm91cHMgd2l0aCBy
ZWR1bmRhbnQgYWNjZXNzaWJpbGl0eSB0ZXh0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyAhYXJpYUxhYmVsR3JvdXAgaXMgdHJ1ZQorUEFTUyAhdGl0bGVHcm91cCBpcyB0
cnVlCitQQVNTICFhcmlhTGFiZWxEaXYgaXMgdHJ1ZQorUEFTUyAhdGl0bGVEaXYgaXMgdHJ1ZQor
UEFTUyB0eXBlb2YgY2xpY2tIYW5kbGVyR3JvdXAgaXMgJ29iamVjdCcKK1BBU1MgdHlwZW9mIGNs
aWNrSGFuZGxlckRpdiBpcyAnb2JqZWN0JworUEFTUyByZXN1bHRFbGVtZW50LnJvbGUgaXMgJ0FY
Um9sZTogQVhTdGF0aWNUZXh0JworUEFTUyByZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIGlzICdB
WFZhbHVlOiBCbHVlIGNoZWVzZScKK1BBU1MgcmVzdWx0RWxlbWVudC5yb2xlIGlzICdBWFJvbGU6
IEFYU3RhdGljVGV4dCcKK1BBU1MgcmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1
ZTogT3JhbmdlcycKK1BBU1MgY29udGVudENvbnRhaW5lci5jaGlsZHJlbkNvdW50IGlzIDYKK1BB
U1MgY29udGVudENvbnRhaW5lci5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFs
dWU6IEJsdWUgY2hlZXNlJworUEFTUyBjb250ZW50Q29udGFpbmVyLmNoaWxkQXRJbmRleCgxKS5z
dHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogT3JhbmdlcycKK1BBU1MgY29udGVudENvbnRhaW5lci5j
aGlsZEF0SW5kZXgoMikucm9sZSBpcyAnQVhSb2xlOiBBWEdyb3VwJworUEFTUyBjb250ZW50Q29u
dGFpbmVyLmNoaWxkQXRJbmRleCgzKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogSmVsbG8nCitQ
QVNTIGNvbnRlbnRDb250YWluZXIuY2hpbGRBdEluZGV4KDQpLnN0cmluZ1ZhbHVlIGlzICdBWFZh
bHVlOiBCcm9jY29saScKK1BBU1MgY29udGVudENvbnRhaW5lci5jaGlsZEF0SW5kZXgoNSkucm9s
ZSBpcyAnQVhSb2xlOiBBWEdyb3VwJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
bWFjL2lnbm9yZS1yZWR1bmRhbnQtYWNjZXNzaWJpbGl0eS10ZXh0LWdyb3Vwcy5odG1sIGIvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvaWdub3JlLXJlZHVuZGFudC1hY2Nlc3NpYmlsaXR5
LXRleHQtZ3JvdXBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDkzOTg4YzU2MGYwZjAxMThiZDlmZmFjOWUw
MjQwZWE2ZDIwZmQwZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL2lnbm9yZS1yZWR1bmRhbnQtYWNjZXNzaWJpbGl0eS10ZXh0LWdyb3Vwcy5odG1sCkBA
IC0wLDAgKzEsODUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nlc3NpYmls
aXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPGRpdiBpZD0iY29u
dGVudCIgcm9sZT0iZ3JvdXAiPgorICAgIDwhLS0gRmlyc3QsIHRlc3Qgcm9sZT0iZ3JvdXAiIGVs
ZW1lbnRzLiAtLT4KKyAgICA8ZGl2IGlkPSJhcmlhLWxhYmVsLWdyb3VwIiByb2xlPSJncm91cCIg
YXJpYS1sYWJlbD0iQmx1ZSBjaGVlc2UiPgorICAgICAgICBCbHVlIGNoZWVzZQorICAgIDwvZGl2
PgorCisgICAgPGRpdiBpZD0idGl0bGUtZ3JvdXAiIHJvbGU9Imdyb3VwIiB0aXRsZT0iT3Jhbmdl
cyI+CisgICAgICAgIE9yYW5nZXMKKyAgICA8L2Rpdj4KKworICAgIDxkaXYgaWQ9ImNsaWNrLWhh
bmRsZXItZ3JvdXAiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSJHcm91cCBjbGljayBoYW5kbGVy
IiBvbmNsaWNrPSJlbXB0eUNsaWNrSGFuZGxlcigpIj4KKyAgICAgICAgR3JvdXAgY2xpY2sgaGFu
ZGxlcgorICAgIDwvZGl2PgorCisgICAgPCEtLSBBbHNvIHRlc3Qgcm9sZS1sZXNzIGdlbmVyaWMg
ZGl2cy4gLS0+CisgICAgPGRpdiBpZD0iYXJpYS1sYWJlbC1kaXYiIGFyaWEtbGFiZWw9IkplbGxv
Ij4KKyAgICAgICAgSmVsbG8KKyAgICA8L2Rpdj4KKworICAgIDxkaXYgaWQ9InRpdGxlLWRpdiIg
dGl0bGU9IkJyb2Njb2xpIj4KKyAgICAgICAgQnJvY2NvbGkKKyAgICA8L2Rpdj4KKworICAgIDxk
aXYgaWQ9ImNsaWNrLWhhbmRsZXItZGl2IiBhcmlhLWxhYmVsPSJEaXYgY2xpY2sgaGFuZGxlciIg
b25jbGljaz0iZW1wdHlDbGlja0hhbmRsZXIoKSI+CisgICAgICAgIERpdiBjbGljayBoYW5kbGVy
CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0
ZXN0IGVuc3VyZXMgV2ViS2l0IGlnbm9yZXMgZ3JvdXBzIHdpdGggcmVkdW5kYW50IGFjY2Vzc2li
aWxpdHkgdGV4dC4iKTsKKyAgICBjb25zdCBlbXB0eUNsaWNrSGFuZGxlciA9ICgpID0+IHt9Owor
CisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworCisgICAgICAgIHZh
ciBjb250ZW50Q29udGFpbmVyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJjb250ZW50Iik7CisKKyAgICAgICAgdmFyIGFyaWFMYWJlbEdyb3VwID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJhcmlhLWxhYmVsLWdy
b3VwIik7CisgICAgICAgIHZhciBjbGlja0hhbmRsZXJHcm91cCA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2xpY2staGFuZGxlci1ncm91cCIpOworICAg
ICAgICB2YXIgdGl0bGVHcm91cCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgidGl0bGUtZ3JvdXAiKTsKKworICAgICAgICB2YXIgYXJpYUxhYmVsRGl2ID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJhcmlhLWxhYmVs
LWRpdiIpOworICAgICAgICB2YXIgY2xpY2tIYW5kbGVyRGl2ID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjbGljay1oYW5kbGVyLWRpdiIpOworICAgICAg
ICB2YXIgdGl0bGVEaXYgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQoInRpdGxlLWRpdiIpOworCisgICAgICAgIC8vIFdlIHNob3VsZG4ndCBiZSBhYmxlIHRv
IGdldCBhbiBhY2Nlc3NpYmxlIGVsZW1lbnQgZm9yIHRoZXNlIGdyb3VwcyBiZWNhdXNlIHRoZXkg
c2hvdWxkIGJlIGlnbm9yZWQuCisgICAgICAgIHNob3VsZEJlVHJ1ZSgiIWFyaWFMYWJlbEdyb3Vw
Iik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiIXRpdGxlR3JvdXAiKTsKKyAgICAgICAgc2hvdWxk
QmVUcnVlKCIhYXJpYUxhYmVsRGl2Iik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiIXRpdGxlRGl2
Iik7CisgICAgICAgIC8vIEJ1dCBhbnkgZ3JvdXAgd2l0aCBhbiBldmVudCBoYW5kbGVyIHNob3Vs
ZCBhbHdheXMgYmUgZXhwb3NlZC4KKyAgICAgICAgc2hvdWxkQmUoInR5cGVvZiBjbGlja0hhbmRs
ZXJHcm91cCIsICInb2JqZWN0JyIpOworICAgICAgICBzaG91bGRCZSgidHlwZW9mIGNsaWNrSGFu
ZGxlckRpdiIsICInb2JqZWN0JyIpOworCisgICAgICAgIC8vIEVuc3VyZSB3ZSBjYW4gc2VhcmNo
IGZvciB0aGUgdGV4dCB3aXRoaW4gdGhlIGlnbm9yZWQgZ3JvdXBzLgorICAgICAgICB2YXIgcmVz
dWx0RWxlbWVudCA9IGNvbnRlbnRDb250YWluZXIudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRl
KGNvbnRlbnRDb250YWluZXIsIHRydWUsICJBWEFueVR5cGVTZWFyY2hLZXkiLCAiIiwgZmFsc2Up
OworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYU3Rh
dGljVGV4dCciKTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUi
LCAiJ0FYVmFsdWU6IEJsdWUgY2hlZXNlJyIpOworCisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBj
b250ZW50Q29udGFpbmVyLnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShyZXN1bHRFbGVtZW50
LCB0cnVlLCAiQVhBbnlUeXBlU2VhcmNoS2V5IiwgIiIsIGZhbHNlKTsKKyAgICAgICAgc2hvdWxk
QmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWFN0YXRpY1RleHQnIik7CisgICAg
ICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBPcmFu
Z2VzJyIpOworCisgICAgICAgIC8vIEVuc3VyZSB0aGUgb25seSBhY2Nlc3NpYmxlIGNvbnRlbnQg
ZXhwb3NlZCB2aWEgYGNoaWxkcmVuYCBpcyB0aGUgdGV4dCBlbGVtZW50cyBhbmQgZXZlbnQgaGFu
ZGxlciBncm91cHMuCisgICAgICAgIHNob3VsZEJlKCJjb250ZW50Q29udGFpbmVyLmNoaWxkcmVu
Q291bnQiLCAiNiIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudENvbnRhaW5lci5jaGlsZEF0
SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IEJsdWUgY2hlZXNlJyIpOworICAgICAg
ICBzaG91bGRCZSgiY29udGVudENvbnRhaW5lci5jaGlsZEF0SW5kZXgoMSkuc3RyaW5nVmFsdWUi
LCAiJ0FYVmFsdWU6IE9yYW5nZXMnIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50Q29udGFp
bmVyLmNoaWxkQXRJbmRleCgyKS5yb2xlIiwgIidBWFJvbGU6IEFYR3JvdXAnIik7CisgICAgICAg
IHNob3VsZEJlKCJjb250ZW50Q29udGFpbmVyLmNoaWxkQXRJbmRleCgzKS5zdHJpbmdWYWx1ZSIs
ICInQVhWYWx1ZTogSmVsbG8nIik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50Q29udGFpbmVy
LmNoaWxkQXRJbmRleCg0KS5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogQnJvY2NvbGknIik7Cisg
ICAgICAgIHNob3VsZEJlKCJjb250ZW50Q29udGFpbmVyLmNoaWxkQXRJbmRleCg1KS5yb2xlIiwg
IidBWFJvbGU6IEFYR3JvdXAnIik7CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNvbnRlbnQiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgfQorPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441217</attachid>
            <date>2021-10-14 07:58:03 -0700</date>
            <delta_ts>2021-10-14 10:04:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169924-20211014095802.patch</filename>
            <type>text/plain</type>
            <size>11362</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM5ZjNjNzUxNzg2Mjlm
NTRhMzg3ZmFjMmU0NzQ4YzM3MTM5YWE2My4uNjU4ZjIxOTJjMmM1MTdmNWYxMTFlODUwZTkwNzZk
ZmU0MDZkMGMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIxLTEwLTE0ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFdlYktpdCBzaG91
bGQgbm90IGV4cG9zZSByZWR1bmRhbnQgQVhHcm91cHMgd2l0aCBtaXNzaW5nIHJvbGUgd2hlbiB0
aGUgbGFiZWwgaXMgdGhlIHNhbWUgYXMgdGhlIGNvbnRlbnRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk5MjQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEb24ndCBleHBvc2UgZ3JvdXBzIHdpdGggcmVk
dW5kYW50IGFjY2Vzc2liaWxpdHkgdGV4dCBvbiB0aGUgTWFjLgorICAgICAgICBIZXJlJ3MgYW4g
ZXhhbXBsZSBvZiBvbmUgc3VjaCBncm91cDoKKworICAgICAgICA8ZGl2IGFyaWEtbGFiZWw9IjEi
PjE8L2Rpdj4KKworICAgICAgICBUaGlzIGdyb3VwIGlzIG5vdCB1c2VmdWwgdG8gYWNjZXNzaWJp
bGl0eSBjbGllbnRzLiBJbnN0ZWFkLCB3ZQorICAgICAgICBleHBvc2UgdGhlIHRleHQgY29udGVu
dHMgZGlyZWN0bHkuCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9pZ25vcmUtcmVkdW5k
YW50LWFjY2Vzc2liaWxpdHktdGV4dC1ncm91cHMuaHRtbAorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnRleHRVbmRlckVsZW1lbnQgY29uc3QpOgorICAgICAg
ICBJbnN0ZWFkIG9mIGFzc2VydGluZyB3aGVuIHdlIHRyeSB0byBnZXQgdGhlIHRleHQgb2YgYW4g
ZWxlbWVudCBpbiBhCisgICAgICAgIGRvY3VtZW50IHRoYXQgbmVlZHMgYSBzdHlsZSB1cGRhdGUs
IHJldHVybiBhbiBlbXB0eSBgU3RyaW5nKClgIGluc3RlYWQuCisKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
aXNJZ25vcmFibGVHcm91cCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjphY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCBjb25zdCk6CisKIDIwMjEtMTAt
MTMgIFRpbSBOZ3V5ZW4gIDxudGltQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgPGRp
YWxvZz4gZm9jdXNpbmcgc3RlcHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IGRmZWYwZWM0ZDgx
ZjlkMDA0NTQ0ODEzNTA0YzI2NTZmNTdlNjY5ZjQuLjhjZjVmNzQzNTgwZDg4NzcxNWE1ZmYwZTZj
ZDY3OTRmOGZmM2QxMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtNjgxLDExICs2ODEsMTMg
QEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnRleHRVbmRlckVsZW1lbnQoQWNj
ZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnQKICAgICAgICAgICAgICAgICAvLyBjYXRjaCBzdGFs
ZSBXZWJDb3JlQVhPYmplY3QgKHNlZSA8cmRhcjovL3Byb2JsZW0vMzk2MDE5Nj4pCiAgICAgICAg
ICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpICE9IG5vZGVEb2N1bWVudCkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgICAgICAgICAgICAgLy8gUmVuZGVy
cyByZWZlcmVuY2VkIGJ5IGFjY2Vzc2liaWxpdHkgb2JqZWN0cyBjb3VsZCBnZXQgZGVzdHJveWVk
LCBpZiBUZXh0SXRlcmF0b3IgZW5kcyB1cCB0cmlnZ2VyaW5nCi0gICAgICAgICAgICAgICAgLy8g
c3R5bGUgdXBkYXRlL2xheW91dCBoZXJlLiBTZWUgYWxzbyBBWE9iamVjdENhY2hlOjpkZWZlclRl
eHRDaGFuZ2VkSWZOZWVkZWQoKS4KLSAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTighbm9kZURvY3VtZW50LT5jaGlsZE5lZWRzU3R5bGVSZWNhbGMoKSk7Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gUmVuZGVyZXJzIHJlZmVyZW5jZWQg
YnkgYWNjZXNzaWJpbGl0eSBvYmplY3RzIGNvdWxkIGdldCBkZXN0cm95ZWQgaWYgVGV4dEl0ZXJh
dG9yIGVuZHMgdXAgdHJpZ2dlcmluZworICAgICAgICAgICAgICAgIC8vIGEgc3R5bGUgdXBkYXRl
IG9yIGxheW91dCBoZXJlLiBTZWUgYWxzbyBBWE9iamVjdENhY2hlOjpkZWZlclRleHRDaGFuZ2Vk
SWZOZWVkZWQoKS4KKyAgICAgICAgICAgICAgICBpZiAobm9kZURvY3VtZW50LT5jaGlsZE5lZWRz
U3R5bGVSZWNhbGMoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAg
ICAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFub2RlRG9jdW1l
bnQtPnZpZXcoKS0+bGF5b3V0Q29udGV4dCgpLmlzSW5SZW5kZXJUcmVlTGF5b3V0KCkpOworICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHJldHVybiBwbGFpblRleHQoKnRleHRSYW5n
ZSwgdGV4dEl0ZXJhdG9yQmVoYXZpb3JGb3JUZXh0UmFuZ2UoKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0Fj
Y2Vzc2liaWxpdHlPYmplY3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCmluZGV4IDI4ZTE1NWEyNjZmNWJlZjVmMzUzMDIz
ZjljYzMwYmQ5Zjc2OGY0MTIuLjk5MDZlYjNhZjYzZTg1Y2U5MTE3OWRlNGY1OGVmOGVkNWQ5ZGIx
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2li
aWxpdHlPYmplY3RNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
QWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQpAQCAtMTE0LDYgKzExNCwyOCBAQCBib29sIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJZ25vcmVBdHRhY2htZW50KCkgY29uc3QKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGJvb2wgaXNJZ25vcmFibGVHcm91cChjb25zdCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0JiBheE9iamVjdCkKK3sKKyAgICBpZiAoIWF4T2JqZWN0LmlzR3Jv
dXAoKSAmJiBheE9iamVjdC5yb2xlVmFsdWUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6RGl2KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBOZXZlciBpZ25vcmUgYSA8ZGl2PiB3aXRo
IGV2ZW50IGxpc3RlbmVycyBhdHRhY2hlZCB0byBpdCAoZS5nLiBvbmNsaWNrKS4KKyAgICBpZiAo
YXhPYmplY3Qubm9kZSgpICYmIGF4T2JqZWN0Lm5vZGUoKS0+aGFzRXZlbnRMaXN0ZW5lcnMoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byogZmlyc3QgPSBheE9iamVjdC5maXJz
dENoaWxkKCk7CisgICAgaWYgKGZpcnN0ICYmIGZpcnN0ID09IGF4T2JqZWN0Lmxhc3RDaGlsZCgp
ICYmIGZpcnN0LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6U3RhdGljVGV4dCkg
eworICAgICAgICBWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+IHRleHQ7CisgICAgICAgIGF4T2Jq
ZWN0LmFjY2Vzc2liaWxpdHlUZXh0KHRleHQpOworICAgICAgICAvLyBEb24ndCBleHBvc2UgPGRp
dj5zIHdob3NlIG9ubHkgY2hpbGQgaXMgdGV4dCB0aGF0IGhhcyB0aGUgc2FtZSBjb250ZW50IGFz
IHRoZSA8ZGl2PnMgYWNjZXNzaWJpbGl0eSB0ZXh0LgorICAgICAgICAvLyBJbnN0ZWFkLCB3ZSBz
aG91bGQgZXhwb3NlIHRoZSB0ZXh0IGVsZW1lbnQgZGlyZWN0bHkuCisgICAgICAgIGF1dG8gYXhU
ZXh0ID0gdGV4dC5zaXplKCkgPyB0ZXh0WzBdLnRleHQgOiBTdHJpbmcoKTsKKyAgICAgICAgaWYg
KGZpcnN0LT5zdHJpbmdWYWx1ZSgpID09IGF4VGV4dCkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNs
dXNpb24gQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNP
YmplY3QoKSBjb25zdAogewogICAgIGlmIChpc01lbnVMaXN0UG9wdXAoKSB8fCBpc01lbnVMaXN0
T3B0aW9uKCkpCkBAIC0xNDIsNiArMTY0LDkgQEAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lv
biBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc08KICAg
ICAgICAgfQogICAgIH0KICAgICAKKyAgICBpZiAoaXNJZ25vcmFibGVHcm91cCgqdGhpcykpCisg
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpJZ25vcmVPYmplY3Q7
CisKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6RGVmYXVsdEJlaGF2
aW9yOwogfQogICAgIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBjZTE0YTcyZGUwODhmODhlNDgzMjdmNjY0ZDNiZDNhMWEw
ODU5MjUuLjg4YmI1ODE2MWM3OTQxZGQ1N2Q4OWM5ODE0MmFjNmJiNzZiNWMwOGMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAyMS0xMC0xNCAgVHlsZXIgV2lsY29jayAgPHR5bGVyX3dAYXBwbGUu
Y29tPgorCisgICAgICAgIEFYOiBXZWJLaXQgc2hvdWxkIG5vdCBleHBvc2UgcmVkdW5kYW50IEFY
R3JvdXBzIHdpdGggbWlzc2luZyByb2xlIHdoZW4gdGhlIGxhYmVsIGlzIHRoZSBzYW1lIGFzIHRo
ZSBjb250ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY5OTI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGEgdGVzdCBlbnN1cmluZyBXZWJLaXQgYXBwcm9wcmlhdGVseSBkb2VzIGFuZCBkb2Vz
bid0IGV4cG9zZQorICAgICAgICBncm91cHMgd2l0aCByZWR1bmRhbnQgYWNjZXNzaWJpbGl0eSB0
ZXh0LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvaWdub3JlLXJlZHVuZGFudC1hY2Nl
c3NpYmlsaXR5LXRleHQtZ3JvdXBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9tYWMvaWdub3JlLXJlZHVuZGFudC1hY2Nlc3NpYmlsaXR5LXRleHQtZ3JvdXBz
Lmh0bWw6IEFkZGVkLgorCiAyMDIxLTEwLTEzICBFcmljIEh1dGNoaXNvbiAgPGVodXRjaGlzb25A
YXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSB0ZXN0IGV4cGVjdGF0aW9ucyBmb3IgZmFzdC9l
dmVudHMvaW9zL2RvbS11cGRhdGUtb24ta2V5ZG93bi1xdWlyay5odG1sLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvaWdub3JlLXJlZHVuZGFudC1hY2Nlc3NpYmls
aXR5LXRleHQtZ3JvdXBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
bWFjL2lnbm9yZS1yZWR1bmRhbnQtYWNjZXNzaWJpbGl0eS10ZXh0LWdyb3Vwcy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDUxOWZmYjQ0NjJhMWVkZGQyODRjZTExYmMzOGE2OThkN2MzMjI0NQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2lnbm9yZS1y
ZWR1bmRhbnQtYWNjZXNzaWJpbGl0eS10ZXh0LWdyb3Vwcy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwyNiBAQAorVGhpcyB0ZXN0IGVuc3VyZXMgV2ViS2l0IGlnbm9yZXMgZ3JvdXBzIHdpdGggcmVk
dW5kYW50IGFjY2Vzc2liaWxpdHkgdGV4dC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgIWFyaWFMYWJlbEdyb3VwIGlzIHRydWUKK1BBU1MgIXRpdGxlR3JvdXAgaXMgdHJ1
ZQorUEFTUyAhYXJpYUxhYmVsRGl2IGlzIHRydWUKK1BBU1MgIXRpdGxlRGl2IGlzIHRydWUKK1BB
U1MgdHlwZW9mIGNsaWNrSGFuZGxlckdyb3VwIGlzICdvYmplY3QnCitQQVNTIHR5cGVvZiBjbGlj
a0hhbmRsZXJEaXYgaXMgJ29iamVjdCcKK1BBU1MgcmVzdWx0RWxlbWVudC5yb2xlIGlzICdBWFJv
bGU6IEFYU3RhdGljVGV4dCcKK1BBU1MgcmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSBpcyAnQVhW
YWx1ZTogQmx1ZSBjaGVlc2UnCitQQVNTIHJlc3VsdEVsZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBB
WFN0YXRpY1RleHQnCitQQVNTIHJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6
IE9yYW5nZXMnCitQQVNTIGNvbnRlbnRDb250YWluZXIuY2hpbGRyZW5Db3VudCBpcyA2CitQQVNT
IGNvbnRlbnRDb250YWluZXIuY2hpbGRBdEluZGV4KDApLnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVl
OiBCbHVlIGNoZWVzZScKK1BBU1MgY29udGVudENvbnRhaW5lci5jaGlsZEF0SW5kZXgoMSkuc3Ry
aW5nVmFsdWUgaXMgJ0FYVmFsdWU6IE9yYW5nZXMnCitQQVNTIGNvbnRlbnRDb250YWluZXIuY2hp
bGRBdEluZGV4KDIpLnJvbGUgaXMgJ0FYUm9sZTogQVhHcm91cCcKK1BBU1MgY29udGVudENvbnRh
aW5lci5jaGlsZEF0SW5kZXgoMykuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IEplbGxvJworUEFT
UyBjb250ZW50Q29udGFpbmVyLmNoaWxkQXRJbmRleCg0KS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1
ZTogQnJvY2NvbGknCitQQVNTIGNvbnRlbnRDb250YWluZXIuY2hpbGRBdEluZGV4KDUpLnJvbGUg
aXMgJ0FYUm9sZTogQVhHcm91cCcKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21h
Yy9pZ25vcmUtcmVkdW5kYW50LWFjY2Vzc2liaWxpdHktdGV4dC1ncm91cHMuaHRtbCBiL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2lnbm9yZS1yZWR1bmRhbnQtYWNjZXNzaWJpbGl0eS10
ZXh0LWdyb3Vwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5Mzk4OGM1NjBmMGYwMTE4YmQ5ZmZhYzllMDI0
MGVhNmQyMGZkMGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy9pZ25vcmUtcmVkdW5kYW50LWFjY2Vzc2liaWxpdHktdGV4dC1ncm91cHMuaHRtbApAQCAt
MCwwICsxLDg1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9F
TiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0
eS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxkaXYgaWQ9ImNvbnRl
bnQiIHJvbGU9Imdyb3VwIj4KKyAgICA8IS0tIEZpcnN0LCB0ZXN0IHJvbGU9Imdyb3VwIiBlbGVt
ZW50cy4gLS0+CisgICAgPGRpdiBpZD0iYXJpYS1sYWJlbC1ncm91cCIgcm9sZT0iZ3JvdXAiIGFy
aWEtbGFiZWw9IkJsdWUgY2hlZXNlIj4KKyAgICAgICAgQmx1ZSBjaGVlc2UKKyAgICA8L2Rpdj4K
KworICAgIDxkaXYgaWQ9InRpdGxlLWdyb3VwIiByb2xlPSJncm91cCIgdGl0bGU9Ik9yYW5nZXMi
PgorICAgICAgICBPcmFuZ2VzCisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGlkPSJjbGljay1oYW5k
bGVyLWdyb3VwIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iR3JvdXAgY2xpY2sgaGFuZGxlciIg
b25jbGljaz0iZW1wdHlDbGlja0hhbmRsZXIoKSI+CisgICAgICAgIEdyb3VwIGNsaWNrIGhhbmRs
ZXIKKyAgICA8L2Rpdj4KKworICAgIDwhLS0gQWxzbyB0ZXN0IHJvbGUtbGVzcyBnZW5lcmljIGRp
dnMuIC0tPgorICAgIDxkaXYgaWQ9ImFyaWEtbGFiZWwtZGl2IiBhcmlhLWxhYmVsPSJKZWxsbyI+
CisgICAgICAgIEplbGxvCisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGlkPSJ0aXRsZS1kaXYiIHRp
dGxlPSJCcm9jY29saSI+CisgICAgICAgIEJyb2Njb2xpCisgICAgPC9kaXY+CisKKyAgICA8ZGl2
IGlkPSJjbGljay1oYW5kbGVyLWRpdiIgYXJpYS1sYWJlbD0iRGl2IGNsaWNrIGhhbmRsZXIiIG9u
Y2xpY2s9ImVtcHR5Q2xpY2tIYW5kbGVyKCkiPgorICAgICAgICBEaXYgY2xpY2sgaGFuZGxlcgor
ICAgIDwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVz
dCBlbnN1cmVzIFdlYktpdCBpZ25vcmVzIGdyb3VwcyB3aXRoIHJlZHVuZGFudCBhY2Nlc3NpYmls
aXR5IHRleHQuIik7CisgICAgY29uc3QgZW1wdHlDbGlja0hhbmRsZXIgPSAoKSA9PiB7fTsKKwor
ICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKworICAgICAgICB2YXIg
Y29udGVudENvbnRhaW5lciA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgiY29udGVudCIpOworCisgICAgICAgIHZhciBhcmlhTGFiZWxHcm91cCA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiYXJpYS1sYWJlbC1ncm91
cCIpOworICAgICAgICB2YXIgY2xpY2tIYW5kbGVyR3JvdXAgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNsaWNrLWhhbmRsZXItZ3JvdXAiKTsKKyAgICAg
ICAgdmFyIHRpdGxlR3JvdXAgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoInRpdGxlLWdyb3VwIik7CisKKyAgICAgICAgdmFyIGFyaWFMYWJlbERpdiA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiYXJpYS1sYWJlbC1k
aXYiKTsKKyAgICAgICAgdmFyIGNsaWNrSGFuZGxlckRpdiA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2xpY2staGFuZGxlci1kaXYiKTsKKyAgICAgICAg
dmFyIHRpdGxlRGl2ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCJ0aXRsZS1kaXYiKTsKKworICAgICAgICAvLyBXZSBzaG91bGRuJ3QgYmUgYWJsZSB0byBn
ZXQgYW4gYWNjZXNzaWJsZSBlbGVtZW50IGZvciB0aGVzZSBncm91cHMgYmVjYXVzZSB0aGV5IHNo
b3VsZCBiZSBpZ25vcmVkLgorICAgICAgICBzaG91bGRCZVRydWUoIiFhcmlhTGFiZWxHcm91cCIp
OworICAgICAgICBzaG91bGRCZVRydWUoIiF0aXRsZUdyb3VwIik7CisgICAgICAgIHNob3VsZEJl
VHJ1ZSgiIWFyaWFMYWJlbERpdiIpOworICAgICAgICBzaG91bGRCZVRydWUoIiF0aXRsZURpdiIp
OworICAgICAgICAvLyBCdXQgYW55IGdyb3VwIHdpdGggYW4gZXZlbnQgaGFuZGxlciBzaG91bGQg
YWx3YXlzIGJlIGV4cG9zZWQuCisgICAgICAgIHNob3VsZEJlKCJ0eXBlb2YgY2xpY2tIYW5kbGVy
R3JvdXAiLCAiJ29iamVjdCciKTsKKyAgICAgICAgc2hvdWxkQmUoInR5cGVvZiBjbGlja0hhbmRs
ZXJEaXYiLCAiJ29iamVjdCciKTsKKworICAgICAgICAvLyBFbnN1cmUgd2UgY2FuIHNlYXJjaCBm
b3IgdGhlIHRleHQgd2l0aGluIHRoZSBpZ25vcmVkIGdyb3Vwcy4KKyAgICAgICAgdmFyIHJlc3Vs
dEVsZW1lbnQgPSBjb250ZW50Q29udGFpbmVyLnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShj
b250ZW50Q29udGFpbmVyLCB0cnVlLCAiQVhBbnlUeXBlU2VhcmNoS2V5IiwgIiIsIGZhbHNlKTsK
KyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWFN0YXRp
Y1RleHQnIik7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwg
IidBWFZhbHVlOiBCbHVlIGNoZWVzZSciKTsKKworICAgICAgICByZXN1bHRFbGVtZW50ID0gY29u
dGVudENvbnRhaW5lci51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUocmVzdWx0RWxlbWVudCwg
dHJ1ZSwgIkFYQW55VHlwZVNlYXJjaEtleSIsICIiLCBmYWxzZSk7CisgICAgICAgIHNob3VsZEJl
KCJyZXN1bHRFbGVtZW50LnJvbGUiLCAiJ0FYUm9sZTogQVhTdGF0aWNUZXh0JyIpOworICAgICAg
ICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogT3Jhbmdl
cyciKTsKKworICAgICAgICAvLyBFbnN1cmUgdGhlIG9ubHkgYWNjZXNzaWJsZSBjb250ZW50IGV4
cG9zZWQgdmlhIGBjaGlsZHJlbmAgaXMgdGhlIHRleHQgZWxlbWVudHMgYW5kIGV2ZW50IGhhbmRs
ZXIgZ3JvdXBzLgorICAgICAgICBzaG91bGRCZSgiY29udGVudENvbnRhaW5lci5jaGlsZHJlbkNv
dW50IiwgIjYiKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnRDb250YWluZXIuY2hpbGRBdElu
ZGV4KDApLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBCbHVlIGNoZWVzZSciKTsKKyAgICAgICAg
c2hvdWxkQmUoImNvbnRlbnRDb250YWluZXIuY2hpbGRBdEluZGV4KDEpLnN0cmluZ1ZhbHVlIiwg
IidBWFZhbHVlOiBPcmFuZ2VzJyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudENvbnRhaW5l
ci5jaGlsZEF0SW5kZXgoMikucm9sZSIsICInQVhSb2xlOiBBWEdyb3VwJyIpOworICAgICAgICBz
aG91bGRCZSgiY29udGVudENvbnRhaW5lci5jaGlsZEF0SW5kZXgoMykuc3RyaW5nVmFsdWUiLCAi
J0FYVmFsdWU6IEplbGxvJyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudENvbnRhaW5lci5j
aGlsZEF0SW5kZXgoNCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IEJyb2Njb2xpJyIpOworICAg
ICAgICBzaG91bGRCZSgiY29udGVudENvbnRhaW5lci5jaGlsZEF0SW5kZXgoNSkucm9sZSIsICIn
QVhSb2xlOiBBWEdyb3VwJyIpOworCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b250ZW50Iikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgIH0KKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441233</attachid>
            <date>2021-10-14 10:04:19 -0700</date>
            <delta_ts>2021-10-16 08:34:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169924-20211014120418.patch</filename>
            <type>text/plain</type>
            <size>12129</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQzYTNhOTc5ZThlMzQ5
NGZmMDkwYzRmYjUzYTliYTA1MWRiYmVlNS4uMjdlZGNiZmE3ZjBiOTg4YzAxOTViMDEzNjk1NTIx
MDg1OTg3MzhlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIxLTEwLTE0ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFdlYktpdCBzaG91
bGQgbm90IGV4cG9zZSByZWR1bmRhbnQgQVhHcm91cHMgd2l0aCBtaXNzaW5nIHJvbGUgd2hlbiB0
aGUgbGFiZWwgaXMgdGhlIHNhbWUgYXMgdGhlIGNvbnRlbnRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk5MjQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEb24ndCBleHBvc2UgZ3JvdXBzIHdpdGggcmVk
dW5kYW50IGFjY2Vzc2liaWxpdHkgdGV4dCBvbiB0aGUgTWFjLgorICAgICAgICBIZXJlJ3MgYW4g
ZXhhbXBsZSBvZiBvbmUgc3VjaCBncm91cDoKKworICAgICAgICA8ZGl2IGFyaWEtbGFiZWw9IjEi
PjE8L2Rpdj4KKworICAgICAgICBUaGlzIGdyb3VwIGlzIG5vdCB1c2VmdWwgdG8gYWNjZXNzaWJp
bGl0eSBjbGllbnRzLiBJbnN0ZWFkLCB3ZQorICAgICAgICBleHBvc2UgdGhlIHRleHQgY29udGVu
dHMgZGlyZWN0bHkuCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9pZ25vcmUtcmVkdW5k
YW50LWFjY2Vzc2liaWxpdHktdGV4dC1ncm91cHMuaHRtbAorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnRleHRVbmRlckVsZW1lbnQgY29uc3QpOgorICAgICAg
ICBJbnN0ZWFkIG9mIGFzc2VydGluZyB3aGVuIHdlIHRyeSB0byBnZXQgdGhlIHRleHQgb2YgYW4g
ZWxlbWVudCBpbiBhCisgICAgICAgIGRvY3VtZW50IHRoYXQgbmVlZHMgYSBzdHlsZSB1cGRhdGUs
IHJldHVybiBhbiBlbXB0eSBzdHJpbmcuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9B
Y2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkSWdub3Jl
R3JvdXApOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFj
Y2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0IGNvbnN0KToKKwogMjAyMS0xMC0xNCAg
RGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkNvcmU6OkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGIHNob3VsZCB1c2UgYSB3ZWFrIG9ic2VydmVyIHdp
dGggQ0ZOb3RpZmljYXRpb25DZW50ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IGRmZWYwZWM0
ZDgxZjlkMDA0NTQ0ODEzNTA0YzI2NTZmNTdlNjY5ZjQuLmE5ZTdlZmVmMmMzZTBiYTAxMjZlNmUz
MGM4YTA0MTBiNjVlMDE1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtNjgwLDEyICs2ODAs
MTQgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnRleHRVbmRlckVsZW1lbnQo
QWNjZXNzaWJpbGl0eVRleHRVbmRlckVsZW1lbnQKICAgICAgICAgICAgIGlmIChGcmFtZSogZnJh
bWUgPSBub2RlRG9jdW1lbnQtPmZyYW1lKCkpIHsKICAgICAgICAgICAgICAgICAvLyBjYXRjaCBz
dGFsZSBXZWJDb3JlQVhPYmplY3QgKHNlZSA8cmRhcjovL3Byb2JsZW0vMzk2MDE5Nj4pCiAgICAg
ICAgICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpICE9IG5vZGVEb2N1bWVudCkKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4geyB9OwogCi0gICAgICAgICAgICAgICAgLy8gUmVuZGVycyByZWZlcmVuY2VkIGJ5IGFjY2Vz
c2liaWxpdHkgb2JqZWN0cyBjb3VsZCBnZXQgZGVzdHJveWVkLCBpZiBUZXh0SXRlcmF0b3IgZW5k
cyB1cCB0cmlnZ2VyaW5nCi0gICAgICAgICAgICAgICAgLy8gc3R5bGUgdXBkYXRlL2xheW91dCBo
ZXJlLiBTZWUgYWxzbyBBWE9iamVjdENhY2hlOjpkZWZlclRleHRDaGFuZ2VkSWZOZWVkZWQoKS4K
LSAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighbm9kZURv
Y3VtZW50LT5jaGlsZE5lZWRzU3R5bGVSZWNhbGMoKSk7CisgICAgICAgICAgICAgICAgLy8gUmVu
ZGVyZXJzIHJlZmVyZW5jZWQgYnkgYWNjZXNzaWJpbGl0eSBvYmplY3RzIGNvdWxkIGdldCBkZXN0
cm95ZWQgaWYgVGV4dEl0ZXJhdG9yIGVuZHMgdXAgdHJpZ2dlcmluZworICAgICAgICAgICAgICAg
IC8vIGEgc3R5bGUgdXBkYXRlIG9yIGxheW91dCBoZXJlLiBTZWUgYWxzbyBBWE9iamVjdENhY2hl
OjpkZWZlclRleHRDaGFuZ2VkSWZOZWVkZWQoKS4KKyAgICAgICAgICAgICAgICBpZiAobm9kZURv
Y3VtZW50LT5jaGlsZE5lZWRzU3R5bGVSZWNhbGMoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
Tighbm9kZURvY3VtZW50LT52aWV3KCktPmxheW91dENvbnRleHQoKS5pc0luUmVuZGVyVHJlZUxh
eW91dCgpKTsKKwogICAgICAgICAgICAgICAgIHJldHVybiBwbGFpblRleHQoKnRleHRSYW5nZSwg
dGV4dEl0ZXJhdG9yQmVoYXZpb3JGb3JUZXh0UmFuZ2UoKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vz
c2liaWxpdHlPYmplY3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9B
Y2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCmluZGV4IDI4ZTE1NWEyNjZmNWJlZjVmMzUzMDIzZjlj
YzMwYmQ5Zjc2OGY0MTIuLmUxZTZlZDFkZjRiNzhiNWQ4ZTNlMjFiYTllZTU1YWU4MDFlNWNmYzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxp
dHlPYmplY3RNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNj
ZXNzaWJpbGl0eU9iamVjdE1hYy5tbQpAQCAtMTE0LDYgKzExNCwyOCBAQCBib29sIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJZ25vcmVBdHRhY2htZW50KCkgY29uc3QKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGJvb2wgc2hvdWxkSWdub3JlR3JvdXAoY29uc3QgQWNj
ZXNzaWJpbGl0eU9iamVjdCYgYXhPYmplY3QpCit7CisgICAgaWYgKCFheE9iamVjdC5pc0dyb3Vw
KCkgJiYgYXhPYmplY3Qucm9sZVZhbHVlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OkRpdikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTmV2ZXIgaWdub3JlIGEgPGRpdj4gd2l0aCBl
dmVudCBsaXN0ZW5lcnMgYXR0YWNoZWQgdG8gaXQgKGUuZy4gb25jbGljaykuCisgICAgaWYgKGF4
T2JqZWN0Lm5vZGUoKSAmJiBheE9iamVjdC5ub2RlKCktPmhhc0V2ZW50TGlzdGVuZXJzKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8qIGZpcnN0ID0gYXhPYmplY3QuZmlyc3RD
aGlsZCgpOworICAgIGlmIChmaXJzdCAmJiBmaXJzdCA9PSBheE9iamVjdC5sYXN0Q2hpbGQoKSAm
JiBmaXJzdC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQpIHsK
KyAgICAgICAgVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiBheFRleHQ7CisgICAgICAgIGF4T2Jq
ZWN0LmFjY2Vzc2liaWxpdHlUZXh0KGF4VGV4dCk7CisgICAgICAgIC8vIERvbid0IGV4cG9zZSA8
ZGl2PnMgd2hvc2Ugb25seSBjaGlsZCBpcyB0ZXh0IHRoYXQgaGFzIHRoZSBzYW1lIGNvbnRlbnQg
YXMgdGhlIDxkaXY+cyBhY2Nlc3NpYmlsaXR5IHRleHQuCisgICAgICAgIC8vIEluc3RlYWQsIHdl
IHNob3VsZCBleHBvc2UgdGhlIHRleHQgZWxlbWVudCBkaXJlY3RseS4KKyAgICAgICAgYXV0byBm
aXJzdFRleHQgPSBheFRleHQuc2l6ZSgpID8gYXhUZXh0WzBdLnRleHQgOiBTdHJpbmcoKTsKKyAg
ICAgICAgaWYgKGZpcnN0LT5zdHJpbmdWYWx1ZSgpID09IGZpcnN0VGV4dCkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIEFjY2Vzc2liaWxp
dHlPYmplY3RJbmNsdXNpb24gQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eVBsYXRm
b3JtSW5jbHVkZXNPYmplY3QoKSBjb25zdAogewogICAgIGlmIChpc01lbnVMaXN0UG9wdXAoKSB8
fCBpc01lbnVMaXN0T3B0aW9uKCkpCkBAIC0xNDIsNiArMTY0LDkgQEAgQWNjZXNzaWJpbGl0eU9i
amVjdEluY2x1c2lvbiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5UGxhdGZvcm1J
bmNsdWRlc08KICAgICAgICAgfQogICAgIH0KICAgICAKKyAgICBpZiAoc2hvdWxkSWdub3JlR3Jv
dXAoKnRoaXMpKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbjo6
SWdub3JlT2JqZWN0OworCiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246
OkRlZmF1bHRCZWhhdmlvcjsKIH0KICAgICAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjNTc3MWQ3ZjA2YTdiYmE2MGExZWFj
ZDMxYTM2YmRmOTgxY2I2YTgyLi5hOTM0ZjYxOGE2MWNhNjJiZTg1OTI5MmMzNGVhOTM0NzljNmIw
OGFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTAtMTQgIFR5bGVyIFdpbGNvY2sgIDx0
eWxlcl93QGFwcGxlLmNvbT4KKworICAgICAgICBBWDogV2ViS2l0IHNob3VsZCBub3QgZXhwb3Nl
IHJlZHVuZGFudCBBWEdyb3VwcyB3aXRoIG1pc3Npbmcgcm9sZSB3aGVuIHRoZSBsYWJlbCBpcyB0
aGUgc2FtZSBhcyB0aGUgY29udGVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2OTkyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhIHRlc3QgZW5zdXJpbmcgV2ViS2l0IGFwcHJvcHJpYXRlbHkg
ZG9lcyBhbmQgZG9lc24ndCBleHBvc2UKKyAgICAgICAgZ3JvdXBzIHdpdGggcmVkdW5kYW50IGFj
Y2Vzc2liaWxpdHkgdGV4dC4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL2lnbm9yZS1y
ZWR1bmRhbnQtYWNjZXNzaWJpbGl0eS10ZXh0LWdyb3Vwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL2lnbm9yZS1yZWR1bmRhbnQtYWNjZXNzaWJpbGl0
eS10ZXh0LWdyb3Vwcy5odG1sOiBBZGRlZC4KKwogMjAyMS0xMC0xNCAgQWxhbiBCdWp0YXMgIDx6
YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBBcHBseSB0aGUgbGluZS1nYXAg
Zm9udCBtZXRyaWNzIHdoZW4gY29tcHV0aW5nIHRoZSBsYXlvdXQgYm91bmRzIGZvciBpbmxpbmUg
Ym94ZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2lnbm9yZS1y
ZWR1bmRhbnQtYWNjZXNzaWJpbGl0eS10ZXh0LWdyb3Vwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9pZ25vcmUtcmVkdW5kYW50LWFjY2Vzc2liaWxpdHktdGV4
dC1ncm91cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmYzQ1NjY3NjJlMGZkYjQ5OTI2NThi
NmU5YjUwYWY4MWQwNDIyZmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy9pZ25vcmUtcmVkdW5kYW50LWFjY2Vzc2liaWxpdHktdGV4dC1ncm91cHMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzAgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIFdlYktpdCBpZ25v
cmVzIGdyb3VwcyB3aXRoIHJlZHVuZGFudCBhY2Nlc3NpYmlsaXR5IHRleHQuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTICFhcmlhTGFiZWxHcm91cCBpcyB0cnVlCitQQVNT
ICF0aXRsZUdyb3VwIGlzIHRydWUKK1BBU1MgIWFyaWFMYWJlbERpdiBpcyB0cnVlCitQQVNTICF0
aXRsZURpdiBpcyB0cnVlCitQQVNTIHR5cGVvZiBjbGlja0hhbmRsZXJHcm91cCBpcyAnb2JqZWN0
JworUEFTUyB0eXBlb2YgY2xpY2tIYW5kbGVyRGl2IGlzICdvYmplY3QnCitQQVNTIHJlc3VsdEVs
ZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBBWFN0YXRpY1RleHQnCitQQVNTIHJlc3VsdEVsZW1lbnQu
c3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IEJsdWUgY2hlZXNlJworUEFTUyByZXN1bHRFbGVtZW50
LnJvbGUgaXMgJ0FYUm9sZTogQVhTdGF0aWNUZXh0JworUEFTUyByZXN1bHRFbGVtZW50LnN0cmlu
Z1ZhbHVlIGlzICdBWFZhbHVlOiBPcmFuZ2VzJworUEFTUyBjb250ZW50Q29udGFpbmVyLmNoaWxk
cmVuQ291bnQgaXMgNgorUEFTUyBjb250ZW50Q29udGFpbmVyLmNoaWxkQXRJbmRleCgwKS5zdHJp
bmdWYWx1ZSBpcyAnQVhWYWx1ZTogQmx1ZSBjaGVlc2UnCitQQVNTIGNvbnRlbnRDb250YWluZXIu
Y2hpbGRBdEluZGV4KDApLnJvbGUgaXMgJ0FYUm9sZTogQVhTdGF0aWNUZXh0JworUEFTUyBjb250
ZW50Q29udGFpbmVyLmNoaWxkQXRJbmRleCgxKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogT3Jh
bmdlcycKK1BBU1MgY29udGVudENvbnRhaW5lci5jaGlsZEF0SW5kZXgoMSkucm9sZSBpcyAnQVhS
b2xlOiBBWFN0YXRpY1RleHQnCitQQVNTIGNvbnRlbnRDb250YWluZXIuY2hpbGRBdEluZGV4KDIp
LnJvbGUgaXMgJ0FYUm9sZTogQVhHcm91cCcKK1BBU1MgY29udGVudENvbnRhaW5lci5jaGlsZEF0
SW5kZXgoMykuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IEplbGxvJworUEFTUyBjb250ZW50Q29u
dGFpbmVyLmNoaWxkQXRJbmRleCgzKS5yb2xlIGlzICdBWFJvbGU6IEFYU3RhdGljVGV4dCcKK1BB
U1MgY29udGVudENvbnRhaW5lci5jaGlsZEF0SW5kZXgoNCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFs
dWU6IEJyb2Njb2xpJworUEFTUyBjb250ZW50Q29udGFpbmVyLmNoaWxkQXRJbmRleCg0KS5yb2xl
IGlzICdBWFJvbGU6IEFYU3RhdGljVGV4dCcKK1BBU1MgY29udGVudENvbnRhaW5lci5jaGlsZEF0
SW5kZXgoNSkucm9sZSBpcyAnQVhSb2xlOiBBWEdyb3VwJworUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbWFjL2lnbm9yZS1yZWR1bmRhbnQtYWNjZXNzaWJpbGl0eS10ZXh0LWdyb3Vw
cy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvaWdub3JlLXJlZHVuZGFudC1h
Y2Nlc3NpYmlsaXR5LXRleHQtZ3JvdXBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNThkOTI0MTM5MTRjOGNh
YzJiMTlmYmY0YTNkOTNmOWIyMDI1OTBiNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvbWFjL2lnbm9yZS1yZWR1bmRhbnQtYWNjZXNzaWJpbGl0eS10ZXh0LWdy
b3Vwcy5odG1sCkBAIC0wLDAgKzEsOTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKwor
PGRpdiBpZD0iY29udGVudCIgcm9sZT0iZ3JvdXAiPgorICAgIDwhLS0gRmlyc3QsIHRlc3Qgcm9s
ZT0iZ3JvdXAiIGVsZW1lbnRzLiAtLT4KKyAgICA8ZGl2IGlkPSJhcmlhLWxhYmVsLWdyb3VwIiBy
b2xlPSJncm91cCIgYXJpYS1sYWJlbD0iQmx1ZSBjaGVlc2UiPgorICAgICAgICBCbHVlIGNoZWVz
ZQorICAgIDwvZGl2PgorCisgICAgPGRpdiBpZD0idGl0bGUtZ3JvdXAiIHJvbGU9Imdyb3VwIiB0
aXRsZT0iT3JhbmdlcyI+CisgICAgICAgIE9yYW5nZXMKKyAgICA8L2Rpdj4KKworICAgIDxkaXYg
aWQ9ImNsaWNrLWhhbmRsZXItZ3JvdXAiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSJHcm91cCBj
bGljayBoYW5kbGVyIiBvbmNsaWNrPSJlbXB0eUNsaWNrSGFuZGxlcigpIj4KKyAgICAgICAgR3Jv
dXAgY2xpY2sgaGFuZGxlcgorICAgIDwvZGl2PgorCisgICAgPCEtLSBBbHNvIHRlc3Qgcm9sZS1s
ZXNzIGdlbmVyaWMgZGl2cy4gLS0+CisgICAgPGRpdiBpZD0iYXJpYS1sYWJlbC1kaXYiIGFyaWEt
bGFiZWw9IkplbGxvIj4KKyAgICAgICAgSmVsbG8KKyAgICA8L2Rpdj4KKworICAgIDxkaXYgaWQ9
InRpdGxlLWRpdiIgdGl0bGU9IkJyb2Njb2xpIj4KKyAgICAgICAgQnJvY2NvbGkKKyAgICA8L2Rp
dj4KKworICAgIDxkaXYgaWQ9ImNsaWNrLWhhbmRsZXItZGl2IiBhcmlhLWxhYmVsPSJEaXYgY2xp
Y2sgaGFuZGxlciIgb25jbGljaz0iZW1wdHlDbGlja0hhbmRsZXIoKSI+CisgICAgICAgIERpdiBj
bGljayBoYW5kbGVyCisgICAgPC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KKyAgICBkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgV2ViS2l0IGlnbm9yZXMgZ3JvdXBzIHdpdGggcmVkdW5k
YW50IGFjY2Vzc2liaWxpdHkgdGV4dC4iKTsKKyAgICBjb25zdCBlbXB0eUNsaWNrSGFuZGxlciA9
ICgpID0+IHt9OworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewor
CisgICAgICAgIHZhciBjb250ZW50Q29udGFpbmVyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjb250ZW50Iik7CisKKyAgICAgICAgdmFyIGFyaWFMYWJl
bEdyb3VwID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJh
cmlhLWxhYmVsLWdyb3VwIik7CisgICAgICAgIHZhciBjbGlja0hhbmRsZXJHcm91cCA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2xpY2staGFuZGxlci1n
cm91cCIpOworICAgICAgICB2YXIgdGl0bGVHcm91cCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGl0bGUtZ3JvdXAiKTsKKworICAgICAgICB2YXIgYXJp
YUxhYmVsRGl2ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCJhcmlhLWxhYmVsLWRpdiIpOworICAgICAgICB2YXIgY2xpY2tIYW5kbGVyRGl2ID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjbGljay1oYW5kbGVyLWRp
diIpOworICAgICAgICB2YXIgdGl0bGVEaXYgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoInRpdGxlLWRpdiIpOworCisgICAgICAgIC8vIFdlIHNob3VsZG4n
dCBiZSBhYmxlIHRvIGdldCBhbiBhY2Nlc3NpYmxlIGVsZW1lbnQgZm9yIHRoZXNlIGdyb3VwcyBi
ZWNhdXNlIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQuCisgICAgICAgIHNob3VsZEJlVHJ1ZSgiIWFy
aWFMYWJlbEdyb3VwIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiIXRpdGxlR3JvdXAiKTsKKyAg
ICAgICAgc2hvdWxkQmVUcnVlKCIhYXJpYUxhYmVsRGl2Iik7CisgICAgICAgIHNob3VsZEJlVHJ1
ZSgiIXRpdGxlRGl2Iik7CisgICAgICAgIC8vIEJ1dCBhbnkgZ3JvdXAgd2l0aCBhbiBldmVudCBo
YW5kbGVyIHNob3VsZCBhbHdheXMgYmUgZXhwb3NlZC4KKyAgICAgICAgc2hvdWxkQmUoInR5cGVv
ZiBjbGlja0hhbmRsZXJHcm91cCIsICInb2JqZWN0JyIpOworICAgICAgICBzaG91bGRCZSgidHlw
ZW9mIGNsaWNrSGFuZGxlckRpdiIsICInb2JqZWN0JyIpOworCisgICAgICAgIC8vIEVuc3VyZSB3
ZSBjYW4gc2VhcmNoIGZvciB0aGUgdGV4dCB3aXRoaW4gdGhlIGlnbm9yZWQgZ3JvdXBzLgorICAg
ICAgICB2YXIgcmVzdWx0RWxlbWVudCA9IGNvbnRlbnRDb250YWluZXIudWlFbGVtZW50Rm9yU2Vh
cmNoUHJlZGljYXRlKGNvbnRlbnRDb250YWluZXIsIHRydWUsICJBWEFueVR5cGVTZWFyY2hLZXki
LCAiIiwgZmFsc2UpOworICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidB
WFJvbGU6IEFYU3RhdGljVGV4dCciKTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQu
c3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IEJsdWUgY2hlZXNlJyIpOworCisgICAgICAgIHJlc3Vs
dEVsZW1lbnQgPSBjb250ZW50Q29udGFpbmVyLnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShy
ZXN1bHRFbGVtZW50LCB0cnVlLCAiQVhBbnlUeXBlU2VhcmNoS2V5IiwgIiIsIGZhbHNlKTsKKyAg
ICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQucm9sZSIsICInQVhSb2xlOiBBWFN0YXRpY1Rl
eHQnIik7CisgICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwgIidB
WFZhbHVlOiBPcmFuZ2VzJyIpOworCisgICAgICAgIC8vIEVuc3VyZSB0aGUgb25seSBhY2Nlc3Np
YmxlIGNvbnRlbnQgZXhwb3NlZCB2aWEgYGNoaWxkcmVuYCBpcyB0aGUgdGV4dCBlbGVtZW50cyBh
bmQgZXZlbnQgaGFuZGxlciBncm91cHMuCisgICAgICAgIHNob3VsZEJlKCJjb250ZW50Q29udGFp
bmVyLmNoaWxkcmVuQ291bnQiLCAiNiIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudENvbnRh
aW5lci5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IEJsdWUgY2hlZXNl
JyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudENvbnRhaW5lci5jaGlsZEF0SW5kZXgoMCku
cm9sZSIsICInQVhSb2xlOiBBWFN0YXRpY1RleHQnIik7CisKKyAgICAgICAgc2hvdWxkQmUoImNv
bnRlbnRDb250YWluZXIuY2hpbGRBdEluZGV4KDEpLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBP
cmFuZ2VzJyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudENvbnRhaW5lci5jaGlsZEF0SW5k
ZXgoMSkucm9sZSIsICInQVhSb2xlOiBBWFN0YXRpY1RleHQnIik7CisKKyAgICAgICAgc2hvdWxk
QmUoImNvbnRlbnRDb250YWluZXIuY2hpbGRBdEluZGV4KDIpLnJvbGUiLCAiJ0FYUm9sZTogQVhH
cm91cCciKTsKKworICAgICAgICBzaG91bGRCZSgiY29udGVudENvbnRhaW5lci5jaGlsZEF0SW5k
ZXgoMykuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IEplbGxvJyIpOworICAgICAgICBzaG91bGRC
ZSgiY29udGVudENvbnRhaW5lci5jaGlsZEF0SW5kZXgoMykucm9sZSIsICInQVhSb2xlOiBBWFN0
YXRpY1RleHQnIik7CisKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnRDb250YWluZXIuY2hpbGRB
dEluZGV4KDQpLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBCcm9jY29saSciKTsKKyAgICAgICAg
c2hvdWxkQmUoImNvbnRlbnRDb250YWluZXIuY2hpbGRBdEluZGV4KDQpLnJvbGUiLCAiJ0FYUm9s
ZTogQVhTdGF0aWNUZXh0JyIpOworCisgICAgICAgIHNob3VsZEJlKCJjb250ZW50Q29udGFpbmVy
LmNoaWxkQXRJbmRleCg1KS5yb2xlIiwgIidBWFJvbGU6IEFYR3JvdXAnIik7CisKKyAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhp
ZGRlbiI7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441492</attachid>
            <date>2021-10-16 08:34:31 -0700</date>
            <delta_ts>2021-10-17 09:38:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169924-20211016103430.patch</filename>
            <type>text/plain</type>
            <size>12327</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjI5NmY4NmY5ZjQyOGI2
NGZkYTYzZmI4OGRkNGUyOTExMWU0ZjA5NC4uNzI2NjU0NmQ2OGZjMTMwZmJiNzNmOTRhMDI4Yjlm
MjY1MWZmMTBhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIxLTEwLTE1ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFdlYktpdCBzaG91
bGQgbm90IGV4cG9zZSByZWR1bmRhbnQgQVhHcm91cHMgd2l0aCBtaXNzaW5nIHJvbGUgd2hlbiB0
aGUgbGFiZWwgaXMgdGhlIHNhbWUgYXMgdGhlIGNvbnRlbnRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk5MjQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEb24ndCBleHBvc2UgZ3JvdXBzIHdpdGggcmVk
dW5kYW50IGFjY2Vzc2liaWxpdHkgdGV4dCBvbiB0aGUgTWFjLgorICAgICAgICBIZXJlJ3MgYW4g
ZXhhbXBsZSBvZiBvbmUgc3VjaCBncm91cDoKKworICAgICAgICA8ZGl2IGFyaWEtbGFiZWw9IjEi
PjE8L2Rpdj4KKworICAgICAgICBUaGlzIGdyb3VwIGlzIG5vdCB1c2VmdWwgdG8gYWNjZXNzaWJp
bGl0eSBjbGllbnRzLiBJbnN0ZWFkLCB3ZQorICAgICAgICBleHBvc2UgdGhlIHRleHQgY29udGVu
dHMgZGlyZWN0bHkuCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9pZ25vcmUtcmVkdW5k
YW50LWFjY2Vzc2liaWxpdHktdGV4dC1ncm91cHMuaHRtbAorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnRleHRVbmRlckVsZW1lbnQgY29uc3QpOgorICAgICAg
ICBJbnN0ZWFkIG9mIGFzc2VydGluZyB3aGVuIHdlIHRyeSB0byBnZXQgdGhlIHRleHQgb2YgYW4g
ZWxlbWVudCBpbiBhCisgICAgICAgIGRvY3VtZW50IHRoYXQgbmVlZHMgYSBzdHlsZSB1cGRhdGUs
IHJldHVybiBhbiBlbXB0eSBzdHJpbmcuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9B
Y2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkSWdub3Jl
R3JvdXApOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFj
Y2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0IGNvbnN0KToKKwogMjAyMS0xMC0xNiAg
QW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGlubGluZSBp
dGVyYXRvciBmb3IgU1ZHIHJldmVyc2UgQmlESSByZW9yZGVyaW5nCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cAppbmRleCA0MThmMmExNDEwNjMwYmVkZDk4ODY5ZGZhNmQzMjQzYmQ0MjliODQ2Li45OTFjYWRl
OWIyMzIzZDFhZmJjNzU4N2JjMjIwOTdkNTI3Y2Y5N2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
QEAgLTY4MCwxMiArNjgwLDE0IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0
ZXh0VW5kZXJFbGVtZW50KEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50CiAgICAgICAgICAg
ICBpZiAoRnJhbWUqIGZyYW1lID0gbm9kZURvY3VtZW50LT5mcmFtZSgpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gY2F0Y2ggc3RhbGUgV2ViQ29yZUFYT2JqZWN0IChzZWUgPHJkYXI6Ly9wcm9ibGVt
LzM5NjAxOTY+KQogICAgICAgICAgICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSAhPSBub2Rl
RG9jdW1lbnQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgICAgICAgICAgICAgIC8vIFJlbmRlcnMgcmVm
ZXJlbmNlZCBieSBhY2Nlc3NpYmlsaXR5IG9iamVjdHMgY291bGQgZ2V0IGRlc3Ryb3llZCwgaWYg
VGV4dEl0ZXJhdG9yIGVuZHMgdXAgdHJpZ2dlcmluZwotICAgICAgICAgICAgICAgIC8vIHN0eWxl
IHVwZGF0ZS9sYXlvdXQgaGVyZS4gU2VlIGFsc28gQVhPYmplY3RDYWNoZTo6ZGVmZXJUZXh0Q2hh
bmdlZElmTmVlZGVkKCkuCi0gICAgICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oIW5vZGVEb2N1bWVudC0+Y2hpbGROZWVkc1N0eWxlUmVjYWxjKCkpOworICAgICAg
ICAgICAgICAgIC8vIFJlbmRlcmVycyByZWZlcmVuY2VkIGJ5IGFjY2Vzc2liaWxpdHkgb2JqZWN0
cyBjb3VsZCBnZXQgZGVzdHJveWVkIGlmIFRleHRJdGVyYXRvciBlbmRzIHVwIHRyaWdnZXJpbmcK
KyAgICAgICAgICAgICAgICAvLyBhIHN0eWxlIHVwZGF0ZSBvciBsYXlvdXQgaGVyZS4gU2VlIGFs
c28gQVhPYmplY3RDYWNoZTo6ZGVmZXJUZXh0Q2hhbmdlZElmTmVlZGVkKCkuCisgICAgICAgICAg
ICAgICAgaWYgKG5vZGVEb2N1bWVudC0+Y2hpbGROZWVkc1N0eWxlUmVjYWxjKCkpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oIW5vZGVEb2N1bWVudC0+dmlldygpLT5sYXlvdXRDb250ZXh0KCku
aXNJblJlbmRlclRyZWVMYXlvdXQoKSk7CisKICAgICAgICAgICAgICAgICByZXR1cm4gcGxhaW5U
ZXh0KCp0ZXh0UmFuZ2UsIHRleHRJdGVyYXRvckJlaGF2aW9yRm9yVGV4dFJhbmdlKCkpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQppbmRleCAyOGUxNTVhMjY2
ZjViZWY1ZjM1MzAyM2Y5Y2MzMGJkOWY3NjhmNDEyLi45ODcxY2Y1NDk2NmY1YTA4MzQxZjgwMmM2
NDVmZWE1MzMyYjVkZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0KQEAgLTExNCw2ICsxMTQsMzIg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5SWdub3JlQXR0YWNobWVu
dCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBib29sIHNob3VsZElnbm9y
ZUdyb3VwKGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QmIGF4T2JqZWN0KQoreworICAgIGlmICgh
YXhPYmplY3QuaXNHcm91cCgpICYmIGF4T2JqZWN0LnJvbGVWYWx1ZSgpICE9IEFjY2Vzc2liaWxp
dHlSb2xlOjpEaXYpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE5ldmVyIGlnbm9y
ZSBhIDxkaXY+IHdpdGggZXZlbnQgbGlzdGVuZXJzIGF0dGFjaGVkIHRvIGl0IChlLmcuIG9uY2xp
Y2spLgorICAgIGlmIChheE9iamVjdC5ub2RlKCkgJiYgYXhPYmplY3Qubm9kZSgpLT5oYXNFdmVu
dExpc3RlbmVycygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvKiBmaXJzdCA9
IGF4T2JqZWN0LmZpcnN0Q2hpbGQoKTsKKyAgICBpZiAoZmlyc3QgJiYgZmlyc3QgPT0gYXhPYmpl
Y3QubGFzdENoaWxkKCkgJiYgZmlyc3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xl
OjpTdGF0aWNUZXh0KSB7CisgICAgICAgIGF1dG8gY2hpbGRTdHJpbmcgPSBmaXJzdC0+c3RyaW5n
VmFsdWUoKTsKKyAgICAgICAgLy8gc3RyaW5nVmFsdWUoKSBjYW4gYmUgbnVsbCBpZiB0aGUgdW5k
ZXJseWluZyBkb2N1bWVudCBuZWVkcyBzdHlsZSByZWNhbGN1bGF0aW9uLgorICAgICAgICBpZiAo
IWNoaWxkU3RyaW5nLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBWZWN0b3I8QWNjZXNzaWJpbGl0
eVRleHQ+IGF4VGV4dDsKKyAgICAgICAgICAgIGF4T2JqZWN0LmFjY2Vzc2liaWxpdHlUZXh0KGF4
VGV4dCk7CisgICAgICAgICAgICAvLyBEb24ndCBleHBvc2UgPGRpdj5zIHdob3NlIG9ubHkgY2hp
bGQgaXMgdGV4dCB0aGF0IGhhcyB0aGUgc2FtZSBjb250ZW50IGFzIHRoZSA8ZGl2PnMgYWNjZXNz
aWJpbGl0eSB0ZXh0LgorICAgICAgICAgICAgLy8gSW5zdGVhZCwgd2Ugc2hvdWxkIGV4cG9zZSB0
aGUgdGV4dCBlbGVtZW50IGRpcmVjdGx5LgorICAgICAgICAgICAgYXV0byBmaXJzdFRleHQgPSBh
eFRleHQuc2l6ZSgpID8gYXhUZXh0WzBdLnRleHQgOiBTdHJpbmcoKTsKKyAgICAgICAgICAgIGlm
IChmaXJzdFRleHQgPT0gY2hpbGRTdHJpbmcpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBBY2Nlc3NpYmlsaXR5
T2JqZWN0SW5jbHVzaW9uIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlQbGF0Zm9y
bUluY2x1ZGVzT2JqZWN0KCkgY29uc3QKIHsKICAgICBpZiAoaXNNZW51TGlzdFBvcHVwKCkgfHwg
aXNNZW51TGlzdE9wdGlvbigpKQpAQCAtMTQyLDYgKzE2OCw5IEBAIEFjY2Vzc2liaWxpdHlPYmpl
Y3RJbmNsdXNpb24gQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5j
bHVkZXNPCiAgICAgICAgIH0KICAgICB9CiAgICAgCisgICAgaWYgKHNob3VsZElnbm9yZUdyb3Vw
KCp0aGlzKSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb246Okln
bm9yZU9iamVjdDsKKwogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uOjpE
ZWZhdWx0QmVoYXZpb3I7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZWU1ZmJhMmU4MTZiZDgxMmU2NjBmZGYx
YTdiODcxNWMxMjJmMDVhOC4uYjY1MTYyNTIyNzU5NTkxOWM4ZTlkYjNjYzk3ZTQ3YzY3NTVkNTZm
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTEwLTE1ICBUeWxlciBXaWxjb2NrICA8dHls
ZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFdlYktpdCBzaG91bGQgbm90IGV4cG9zZSBy
ZWR1bmRhbnQgQVhHcm91cHMgd2l0aCBtaXNzaW5nIHJvbGUgd2hlbiB0aGUgbGFiZWwgaXMgdGhl
IHNhbWUgYXMgdGhlIGNvbnRlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjk5MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYSB0ZXN0IGVuc3VyaW5nIFdlYktpdCBhcHByb3ByaWF0ZWx5IGRv
ZXMgYW5kIGRvZXNuJ3QgZXhwb3NlCisgICAgICAgIGdyb3VwcyB3aXRoIHJlZHVuZGFudCBhY2Nl
c3NpYmlsaXR5IHRleHQuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9pZ25vcmUtcmVk
dW5kYW50LWFjY2Vzc2liaWxpdHktdGV4dC1ncm91cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9pZ25vcmUtcmVkdW5kYW50LWFjY2Vzc2liaWxpdHkt
dGV4dC1ncm91cHMuaHRtbDogQWRkZWQuCisKIDIwMjEtMTAtMTYgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBzdXJlIGNoaWxkIGxheWVycyBv
ZiB0b3AgbGF5ZXIgZWxlbWVudHMgYXJlIHJlbmRlcmVkIGFuZCBjb3JyZWN0bHkgei1vcmRlcmVk
ICh0b3AtbGF5ZXItc3RhY2tpbmcuaHRtbCBmYWlscykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvbWFjL2lnbm9yZS1yZWR1bmRhbnQtYWNjZXNzaWJpbGl0eS10ZXh0LWdy
b3Vwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9pZ25vcmUt
cmVkdW5kYW50LWFjY2Vzc2liaWxpdHktdGV4dC1ncm91cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjFmYzQ1NjY3NjJlMGZkYjQ5OTI2NThiNmU5YjUwYWY4MWQwNDIyZmYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9pZ25vcmUtcmVkdW5kYW50LWFj
Y2Vzc2liaWxpdHktdGV4dC1ncm91cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzAgQEAKK1Ro
aXMgdGVzdCBlbnN1cmVzIFdlYktpdCBpZ25vcmVzIGdyb3VwcyB3aXRoIHJlZHVuZGFudCBhY2Nl
c3NpYmlsaXR5IHRleHQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTICFh
cmlhTGFiZWxHcm91cCBpcyB0cnVlCitQQVNTICF0aXRsZUdyb3VwIGlzIHRydWUKK1BBU1MgIWFy
aWFMYWJlbERpdiBpcyB0cnVlCitQQVNTICF0aXRsZURpdiBpcyB0cnVlCitQQVNTIHR5cGVvZiBj
bGlja0hhbmRsZXJHcm91cCBpcyAnb2JqZWN0JworUEFTUyB0eXBlb2YgY2xpY2tIYW5kbGVyRGl2
IGlzICdvYmplY3QnCitQQVNTIHJlc3VsdEVsZW1lbnQucm9sZSBpcyAnQVhSb2xlOiBBWFN0YXRp
Y1RleHQnCitQQVNTIHJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IEJsdWUg
Y2hlZXNlJworUEFTUyByZXN1bHRFbGVtZW50LnJvbGUgaXMgJ0FYUm9sZTogQVhTdGF0aWNUZXh0
JworUEFTUyByZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBPcmFuZ2VzJwor
UEFTUyBjb250ZW50Q29udGFpbmVyLmNoaWxkcmVuQ291bnQgaXMgNgorUEFTUyBjb250ZW50Q29u
dGFpbmVyLmNoaWxkQXRJbmRleCgwKS5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogQmx1ZSBjaGVl
c2UnCitQQVNTIGNvbnRlbnRDb250YWluZXIuY2hpbGRBdEluZGV4KDApLnJvbGUgaXMgJ0FYUm9s
ZTogQVhTdGF0aWNUZXh0JworUEFTUyBjb250ZW50Q29udGFpbmVyLmNoaWxkQXRJbmRleCgxKS5z
dHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogT3JhbmdlcycKK1BBU1MgY29udGVudENvbnRhaW5lci5j
aGlsZEF0SW5kZXgoMSkucm9sZSBpcyAnQVhSb2xlOiBBWFN0YXRpY1RleHQnCitQQVNTIGNvbnRl
bnRDb250YWluZXIuY2hpbGRBdEluZGV4KDIpLnJvbGUgaXMgJ0FYUm9sZTogQVhHcm91cCcKK1BB
U1MgY29udGVudENvbnRhaW5lci5jaGlsZEF0SW5kZXgoMykuc3RyaW5nVmFsdWUgaXMgJ0FYVmFs
dWU6IEplbGxvJworUEFTUyBjb250ZW50Q29udGFpbmVyLmNoaWxkQXRJbmRleCgzKS5yb2xlIGlz
ICdBWFJvbGU6IEFYU3RhdGljVGV4dCcKK1BBU1MgY29udGVudENvbnRhaW5lci5jaGlsZEF0SW5k
ZXgoNCkuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IEJyb2Njb2xpJworUEFTUyBjb250ZW50Q29u
dGFpbmVyLmNoaWxkQXRJbmRleCg0KS5yb2xlIGlzICdBWFJvbGU6IEFYU3RhdGljVGV4dCcKK1BB
U1MgY29udGVudENvbnRhaW5lci5jaGlsZEF0SW5kZXgoNSkucm9sZSBpcyAnQVhSb2xlOiBBWEdy
b3VwJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2lnbm9yZS1yZWR1bmRh
bnQtYWNjZXNzaWJpbGl0eS10ZXh0LWdyb3Vwcy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvaWdub3JlLXJlZHVuZGFudC1hY2Nlc3NpYmlsaXR5LXRleHQtZ3JvdXBzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNThkOTI0MTM5MTRjOGNhYzJiMTlmYmY0YTNkOTNmOWIyMDI1OTBiNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2lnbm9yZS1yZWR1
bmRhbnQtYWNjZXNzaWJpbGl0eS10ZXh0LWdyb3Vwcy5odG1sCkBAIC0wLDAgKzEsOTQgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPGRpdiBpZD0iY29udGVudCIgcm9sZT0iZ3JvdXAi
PgorICAgIDwhLS0gRmlyc3QsIHRlc3Qgcm9sZT0iZ3JvdXAiIGVsZW1lbnRzLiAtLT4KKyAgICA8
ZGl2IGlkPSJhcmlhLWxhYmVsLWdyb3VwIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iQmx1ZSBj
aGVlc2UiPgorICAgICAgICBCbHVlIGNoZWVzZQorICAgIDwvZGl2PgorCisgICAgPGRpdiBpZD0i
dGl0bGUtZ3JvdXAiIHJvbGU9Imdyb3VwIiB0aXRsZT0iT3JhbmdlcyI+CisgICAgICAgIE9yYW5n
ZXMKKyAgICA8L2Rpdj4KKworICAgIDxkaXYgaWQ9ImNsaWNrLWhhbmRsZXItZ3JvdXAiIHJvbGU9
Imdyb3VwIiBhcmlhLWxhYmVsPSJHcm91cCBjbGljayBoYW5kbGVyIiBvbmNsaWNrPSJlbXB0eUNs
aWNrSGFuZGxlcigpIj4KKyAgICAgICAgR3JvdXAgY2xpY2sgaGFuZGxlcgorICAgIDwvZGl2Pgor
CisgICAgPCEtLSBBbHNvIHRlc3Qgcm9sZS1sZXNzIGdlbmVyaWMgZGl2cy4gLS0+CisgICAgPGRp
diBpZD0iYXJpYS1sYWJlbC1kaXYiIGFyaWEtbGFiZWw9IkplbGxvIj4KKyAgICAgICAgSmVsbG8K
KyAgICA8L2Rpdj4KKworICAgIDxkaXYgaWQ9InRpdGxlLWRpdiIgdGl0bGU9IkJyb2Njb2xpIj4K
KyAgICAgICAgQnJvY2NvbGkKKyAgICA8L2Rpdj4KKworICAgIDxkaXYgaWQ9ImNsaWNrLWhhbmRs
ZXItZGl2IiBhcmlhLWxhYmVsPSJEaXYgY2xpY2sgaGFuZGxlciIgb25jbGljaz0iZW1wdHlDbGlj
a0hhbmRsZXIoKSI+CisgICAgICAgIERpdiBjbGljayBoYW5kbGVyCisgICAgPC9kaXY+Cis8L2Rp
dj4KKworPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgV2ViS2l0
IGlnbm9yZXMgZ3JvdXBzIHdpdGggcmVkdW5kYW50IGFjY2Vzc2liaWxpdHkgdGV4dC4iKTsKKyAg
ICBjb25zdCBlbXB0eUNsaWNrSGFuZGxlciA9ICgpID0+IHt9OworCisgICAgaWYgKHdpbmRvdy5h
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworCisgICAgICAgIHZhciBjb250ZW50Q29udGFpbmVy
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjb250ZW50
Iik7CisKKyAgICAgICAgdmFyIGFyaWFMYWJlbEdyb3VwID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJhcmlhLWxhYmVsLWdyb3VwIik7CisgICAgICAgIHZh
ciBjbGlja0hhbmRsZXJHcm91cCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgiY2xpY2staGFuZGxlci1ncm91cCIpOworICAgICAgICB2YXIgdGl0bGVHcm91
cCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGl0bGUt
Z3JvdXAiKTsKKworICAgICAgICB2YXIgYXJpYUxhYmVsRGl2ID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJhcmlhLWxhYmVsLWRpdiIpOworICAgICAgICB2
YXIgY2xpY2tIYW5kbGVyRGl2ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJjbGljay1oYW5kbGVyLWRpdiIpOworICAgICAgICB2YXIgdGl0bGVEaXYgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRpdGxlLWRpdiIp
OworCisgICAgICAgIC8vIFdlIHNob3VsZG4ndCBiZSBhYmxlIHRvIGdldCBhbiBhY2Nlc3NpYmxl
IGVsZW1lbnQgZm9yIHRoZXNlIGdyb3VwcyBiZWNhdXNlIHRoZXkgc2hvdWxkIGJlIGlnbm9yZWQu
CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiIWFyaWFMYWJlbEdyb3VwIik7CisgICAgICAgIHNob3Vs
ZEJlVHJ1ZSgiIXRpdGxlR3JvdXAiKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCIhYXJpYUxhYmVs
RGl2Iik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiIXRpdGxlRGl2Iik7CisgICAgICAgIC8vIEJ1
dCBhbnkgZ3JvdXAgd2l0aCBhbiBldmVudCBoYW5kbGVyIHNob3VsZCBhbHdheXMgYmUgZXhwb3Nl
ZC4KKyAgICAgICAgc2hvdWxkQmUoInR5cGVvZiBjbGlja0hhbmRsZXJHcm91cCIsICInb2JqZWN0
JyIpOworICAgICAgICBzaG91bGRCZSgidHlwZW9mIGNsaWNrSGFuZGxlckRpdiIsICInb2JqZWN0
JyIpOworCisgICAgICAgIC8vIEVuc3VyZSB3ZSBjYW4gc2VhcmNoIGZvciB0aGUgdGV4dCB3aXRo
aW4gdGhlIGlnbm9yZWQgZ3JvdXBzLgorICAgICAgICB2YXIgcmVzdWx0RWxlbWVudCA9IGNvbnRl
bnRDb250YWluZXIudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKGNvbnRlbnRDb250YWluZXIs
IHRydWUsICJBWEFueVR5cGVTZWFyY2hLZXkiLCAiIiwgZmFsc2UpOworICAgICAgICBzaG91bGRC
ZSgicmVzdWx0RWxlbWVudC5yb2xlIiwgIidBWFJvbGU6IEFYU3RhdGljVGV4dCciKTsKKyAgICAg
ICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IEJsdWUg
Y2hlZXNlJyIpOworCisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250ZW50Q29udGFpbmVyLnVp
RWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShyZXN1bHRFbGVtZW50LCB0cnVlLCAiQVhBbnlUeXBl
U2VhcmNoS2V5IiwgIiIsIGZhbHNlKTsKKyAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQu
cm9sZSIsICInQVhSb2xlOiBBWFN0YXRpY1RleHQnIik7CisgICAgICAgIHNob3VsZEJlKCJyZXN1
bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBPcmFuZ2VzJyIpOworCisgICAgICAg
IC8vIEVuc3VyZSB0aGUgb25seSBhY2Nlc3NpYmxlIGNvbnRlbnQgZXhwb3NlZCB2aWEgYGNoaWxk
cmVuYCBpcyB0aGUgdGV4dCBlbGVtZW50cyBhbmQgZXZlbnQgaGFuZGxlciBncm91cHMuCisgICAg
ICAgIHNob3VsZEJlKCJjb250ZW50Q29udGFpbmVyLmNoaWxkcmVuQ291bnQiLCAiNiIpOworICAg
ICAgICBzaG91bGRCZSgiY29udGVudENvbnRhaW5lci5jaGlsZEF0SW5kZXgoMCkuc3RyaW5nVmFs
dWUiLCAiJ0FYVmFsdWU6IEJsdWUgY2hlZXNlJyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVu
dENvbnRhaW5lci5jaGlsZEF0SW5kZXgoMCkucm9sZSIsICInQVhSb2xlOiBBWFN0YXRpY1RleHQn
Iik7CisKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnRDb250YWluZXIuY2hpbGRBdEluZGV4KDEp
LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBPcmFuZ2VzJyIpOworICAgICAgICBzaG91bGRCZSgi
Y29udGVudENvbnRhaW5lci5jaGlsZEF0SW5kZXgoMSkucm9sZSIsICInQVhSb2xlOiBBWFN0YXRp
Y1RleHQnIik7CisKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnRDb250YWluZXIuY2hpbGRBdElu
ZGV4KDIpLnJvbGUiLCAiJ0FYUm9sZTogQVhHcm91cCciKTsKKworICAgICAgICBzaG91bGRCZSgi
Y29udGVudENvbnRhaW5lci5jaGlsZEF0SW5kZXgoMykuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6
IEplbGxvJyIpOworICAgICAgICBzaG91bGRCZSgiY29udGVudENvbnRhaW5lci5jaGlsZEF0SW5k
ZXgoMykucm9sZSIsICInQVhSb2xlOiBBWFN0YXRpY1RleHQnIik7CisKKyAgICAgICAgc2hvdWxk
QmUoImNvbnRlbnRDb250YWluZXIuY2hpbGRBdEluZGV4KDQpLnN0cmluZ1ZhbHVlIiwgIidBWFZh
bHVlOiBCcm9jY29saSciKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnRDb250YWluZXIuY2hp
bGRBdEluZGV4KDQpLnJvbGUiLCAiJ0FYUm9sZTogQVhTdGF0aWNUZXh0JyIpOworCisgICAgICAg
IHNob3VsZEJlKCJjb250ZW50Q29udGFpbmVyLmNoaWxkQXRJbmRleCg1KS5yb2xlIiwgIidBWFJv
bGU6IEFYR3JvdXAnIik7CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRl
bnQiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgfQorPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CisK
</data>

          </attachment>
      

    </bug>

</bugzilla>