<?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>270616</bug_id>
          
          <creation_ts>2024-03-06 20:35:04 -0800</creation_ts>
          <short_desc>AX: VoiceOver doesn&apos;t read characters when user presses left / right arrows in Monaco code editor</short_desc>
          <delta_ts>2024-03-12 14:44:49 -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>Safari Technology Preview</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dominic Mazzoni">dm_mazzoni</reporter>
          <assigned_to name="Dominic Mazzoni">dm_mazzoni</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</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>2019261</commentid>
    <comment_count>0</comment_count>
      <attachid>470221</attachid>
    <who name="Dominic Mazzoni">dm_mazzoni</who>
    <bug_when>2024-03-06 20:35:04 -0800</bug_when>
    <thetext>Created attachment 470221
Simple repro

rdar://123984168

The Monaco code editor, used as the engine for VS Code, implements a custom text editor. Overall they&apos;ve gone to great lengths to make it accessible, but the editing feedback when arrowing through character-by-character is broken with the combination of Safari and VoiceOver.

You can try their demo playground here:
https://microsoft.github.io/monaco-editor/playground.html

The underlying issue is that when you press an arrow key, their JavaScript code is intercepting it and moving the cursor programmatically. This results in WebKit generating an editing intent with a text selection direction of AXTextSelectionDirectionDiscontiguous with no granularity, when normally if you pressed right-arrow it would get a direction of AXTextSelectionDirectionNext with a character granularity.

Chrome doesn&apos;t have this bug because it tries to infer the text intent in simple cases like when the cursor moves by a single character. I think we should do the same in WebKit. If we&apos;re concerned about doing it in general we can limit it to scenarios that we think are more likely to be this sort of custom accessible editor.

I attached a very simple repro that demonstrates the issue without needing to debug all of Monaco. It&apos;s just a textarea with JavaScript that intercepts all key presses and manually sets the selection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2019262</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2024-03-06 20:35:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/124185098&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2019447</commentid>
    <comment_count>2</comment_count>
      <attachid>470235</attachid>
    <who name="Dominic Mazzoni">dm_mazzoni</who>
    <bug_when>2024-03-07 13:38:32 -0800</bug_when>
    <thetext>Created attachment 470235
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2019622</commentid>
    <comment_count>3</comment_count>
      <attachid>470249</attachid>
    <who name="Dominic Mazzoni">dm_mazzoni</who>
    <bug_when>2024-03-08 09:01:57 -0800</bug_when>
    <thetext>Created attachment 470249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2019690</commentid>
    <comment_count>4</comment_count>
      <attachid>470249</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2024-03-08 12:54:41 -0800</bug_when>
    <thetext>Comment on attachment 470249
Patch

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

&gt; Source/WebCore/accessibility/mac/AXObjectCacheMac.mm:506
&gt; +AXTextStateChangeIntent AXObjectCache::inferDirectionFromIntent(AccessibilityObject* object, const AXTextStateChangeIntent&amp; originalIntent, const VisibleSelection&amp; selection)

Seems like we dereference `AccessibilityObject* object` without null-checking in this function. Is it possible to make this parameter a reference instead?

&gt; LayoutTests/accessibility/mac/custom-text-editor.html:24
&gt; +var AXTextStateChangeTypeSelectionMove = 2;
&gt; +var AXTextStateChangeTypeSelectionExtend = AXTextStateChangeTypeSelectionMove + 1;
&gt; +
&gt; +var AXTextSelectionDirectionBeginning = 1;
&gt; +var AXTextSelectionDirectionEnd = AXTextSelectionDirectionBeginning + 1;
&gt; +var AXTextSelectionDirectionPrevious = AXTextSelectionDirectionEnd + 1;
&gt; +var AXTextSelectionDirectionNext = AXTextSelectionDirectionPrevious + 1;
&gt; +var AXTextSelectionDirectionDiscontiguous = AXTextSelectionDirectionNext + 1;
&gt; +
&gt; +var AXTextSelectionGranularityCharacter = 1;

Can these be const?

&gt; LayoutTests/accessibility/mac/custom-text-editor.html:34
&gt; +        let dir = userInfo[&quot;AXTextSelectionDirection&quot;];

Can this be const?

&gt; LayoutTests/accessibility/mac/custom-text-editor.html:43
&gt; +        let granularity = userInfo[&quot;AXTextSelectionGranularity&quot;];

Can this be const?

&gt; LayoutTests/accessibility/mac/custom-text-editor.html:53
&gt; +        if (resolveNotificationPromise) {
&gt; +            resolveNotificationPromise();
&gt; +        }

WebKit style typically avoids curly-braces for single-line control statements, there&apos;s a few above this one that can probably do without braces too.

https://webkit.org/code-style-guidelines/#braces-function

&gt; LayoutTests/accessibility/mac/custom-text-editor.html:75
&gt; +    shouldBe(&quot;addedNotification&quot;, &quot;true&quot;);

I think the `output` style of tests (vs. using `shouldBe`) would use this instead: output += expect(&quot;addedNotification&quot;, &quot;true&quot;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2019709</commentid>
    <comment_count>5</comment_count>
      <attachid>470251</attachid>
    <who name="Dominic Mazzoni">dm_mazzoni</who>
    <bug_when>2024-03-08 15:21:54 -0800</bug_when>
    <thetext>Created attachment 470251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2019730</commentid>
    <comment_count>6</comment_count>
      <attachid>470251</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2024-03-08 16:02:34 -0800</bug_when>
    <thetext>Comment on attachment 470251
Patch

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

&gt; Source/WebCore/accessibility/mac/AXObjectCacheMac.mm:511
&gt; +    AXTextStateChangeIntent intent = originalIntent;
&gt; +
&gt; +    if (!object.isTextControl() &amp;&amp; !object.editableAncestor())
&gt; +        return originalIntent;

AXTextStateChangeIntent intent = originalIntent;

This copy is unnecessary if condition !object.isTextControl() &amp;&amp; !object.editableAncestor() is true. Does it work to move it below the if-statement?

&gt; LayoutTests/accessibility/mac/custom-text-editor.html:40
&gt; +        if (dir == AXTextSelectionDirectionNext) {
&gt; +            str += &quot; next&quot;;
&gt; +        } else if (dir == AXTextSelectionDirectionPrevious) {
&gt; +            str += &quot; previous&quot;;
&gt; +        } else if (dir == AXTextSelectionDirectionDiscontiguous) {
&gt; +            str += &quot; discontiguous&quot;;
&gt; +        }

I think these braces are unnecessary too, but not a huge deal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2019756</commentid>
    <comment_count>7</comment_count>
      <attachid>470255</attachid>
    <who name="Dominic Mazzoni">dm_mazzoni</who>
    <bug_when>2024-03-08 18:10:47 -0800</bug_when>
    <thetext>Created attachment 470255
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2019759</commentid>
    <comment_count>8</comment_count>
    <who name="Dominic Mazzoni">dm_mazzoni</who>
    <bug_when>2024-03-08 18:15:25 -0800</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #6)
&gt; Comment on attachment 470251 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=470251&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/mac/AXObjectCacheMac.mm:511
&gt; &gt; +    AXTextStateChangeIntent intent = originalIntent;
&gt; &gt; +
&gt; &gt; +    if (!object.isTextControl() &amp;&amp; !object.editableAncestor())
&gt; &gt; +        return originalIntent;
&gt; 
&gt; AXTextStateChangeIntent intent = originalIntent;
&gt; 
&gt; This copy is unnecessary if condition !object.isTextControl() &amp;&amp;
&gt; !object.editableAncestor() is true. Does it work to move it below the
&gt; if-statement?

Yep, sounds good.

&gt; &gt; LayoutTests/accessibility/mac/custom-text-editor.html:40
&gt; &gt; +        if (dir == AXTextSelectionDirectionNext) {
&gt; &gt; +            str += &quot; next&quot;;
&gt; &gt; +        } else if (dir == AXTextSelectionDirectionPrevious) {
&gt; &gt; +            str += &quot; previous&quot;;
&gt; &gt; +        } else if (dir == AXTextSelectionDirectionDiscontiguous) {
&gt; &gt; +            str += &quot; discontiguous&quot;;
&gt; &gt; +        }
&gt; 
&gt; I think these braces are unnecessary too, but not a huge deal.

Sure! It&apos;s still so hard for me to get used to when so many other projects have the opposite guidance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2020099</commentid>
    <comment_count>9</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2024-03-11 07:44:10 -0700</bug_when>
    <thetext>(In reply to Dominic Mazzoni from comment #7)
&gt; Created attachment 470255 [details]
&gt; Patch

From 57aa3d6b491aa1ce31b63fb71423a369783d6b5f Mon Sep 17 00:00:00 2001
From: Dominic Mazzoni &lt;dm_mazzoni@apple.com&gt;
Date: Thu, 7 Mar 2024 13:33:00 -0800
Subject: [PATCH] AX: VoiceOver doesn&apos;t read characters when user presses left
 / right arrows in Monaco code editor
 https://bugs.webkit.org/show_bug.cgi?id=270616 rdar://123984168

Reviewed by NOBODY (OOPS!).

When the character or selection extent moves by just one visible position, infer
that it was a character granularity move, rather than a discontiguous selection.

* LayoutTests/accessibility/mac/custom-text-editor-expected.txt: Added.
* LayoutTests/accessibility/mac/custom-text-editor.html: Added.
* Source/WebCore/accessibility/AXObjectCache.h:
* Source/WebCore/accessibility/mac/AXObjectCacheMac.mm:
(WebCore::AXObjectCache::inferDirectionFromIntent):
(WebCore::AXObjectCache::postTextStateChangePlatformNotification):
---
 Source/WebCore/accessibility/AXObjectCache.h  |  7 ++
 .../accessibility/mac/AXObjectCacheMac.mm     | 42 ++++++++-
 .../mac/custom-text-editor-expected.txt       | 24 +++++
 .../accessibility/mac/custom-text-editor.html | 91 +++++++++++++++++++
 4 files changed, 163 insertions(+), 1 deletion(-)
 create mode 100644 LayoutTests/accessibility/mac/custom-text-editor-expected.txt
 create mode 100644 LayoutTests/accessibility/mac/custom-text-editor.html

diff --git a/Source/WebCore/accessibility/AXObjectCache.h b/Source/WebCore/accessibility/AXObjectCache.h
index 28386f2ca43f..342ec61dc3d8 100644
--- a/Source/WebCore/accessibility/AXObjectCache.h
+++ b/Source/WebCore/accessibility/AXObjectCache.h
@@ -778,6 +778,13 @@ private:
 #if USE(ATSPI)
     ListHashSet&lt;RefPtr&lt;AXCoreObject&gt;&gt; m_deferredParentChangedList;
 #endif
+
+#if PLATFORM(COCOA)
+    AXID m_lastTextFieldAXID;
+    VisibleSelection m_lastSelection;
+
+    AXTextStateChangeIntent inferDirectionFromIntent(AccessibilityObject&amp;, const AXTextStateChangeIntent&amp;, const VisibleSelection&amp;);

AG: As a rule with exceptions, WebKit prefers to declare member functions first, and member variables last in the class declaration.
AG: this method is declare in COCOA but defined only in MAC. Do we need this in iOS as well?

+#endif
 };

 template&lt;typename U&gt;
diff --git a/Source/WebCore/accessibility/mac/AXObjectCacheMac.mm b/Source/WebCore/accessibility/mac/AXObjectCacheMac.mm
index 9cf57e4d0233..f0e437b59492 100644
--- a/Source/WebCore/accessibility/mac/AXObjectCacheMac.mm
+++ b/Source/WebCore/accessibility/mac/AXObjectCacheMac.mm
@@ -503,7 +503,45 @@ static void createIsolatedObjectIfNeeded(AccessibilityObject&amp; object, std::optio
 }
 #endif

-void AXObjectCache::postTextStateChangePlatformNotification(AccessibilityObject* object, const AXTextStateChangeIntent&amp; intent, const VisibleSelection&amp; selection)
+AXTextStateChangeIntent AXObjectCache::inferDirectionFromIntent(AccessibilityObject&amp; object, const AXTextStateChangeIntent&amp; originalIntent, const VisibleSelection&amp; selection)
+{
+    if (!object.isTextControl() &amp;&amp; !object.editableAncestor())
+        return originalIntent;
+
+    AXTextStateChangeIntent intent = originalIntent;

AG: auto intent;

+    if (intent.selection.direction == AXTextSelectionDirectionDiscontiguous &amp;&amp; object.objectID() == m_lastTextFieldAXID &amp;&amp; m_lastSelection != selection) {

AG: I think this whole block would be more readable as an early return, i.e., if (!condition) { update memeber vars and return early } continue with the processing. The early return block could be before the copy above.

+        if (m_lastSelection.isCaret() &amp;&amp; selection.isCaret()) {
+            // Cursor movement
+            if (selection.visibleStart() == m_lastSelection.visibleStart().next(CannotCrossEditingBoundary)) {
+                intent.type = AXTextStateChangeTypeSelectionMove;
+                intent.selection.direction = AXTextSelectionDirectionNext;
+                intent.selection.granularity = AXTextSelectionGranularityCharacter;
+            } else if (selection.visibleStart() == m_lastSelection.visibleStart().previous(CannotCrossEditingBoundary)) {
+                intent.type = AXTextStateChangeTypeSelectionMove;
+                intent.selection.direction = AXTextSelectionDirectionPrevious;
+                intent.selection.granularity = AXTextSelectionGranularityCharacter;
+            }
+        } else if (selection.visibleBase() == m_lastSelection.visibleBase()) {
+            // Selection
+            if (selection.visibleExtent() == m_lastSelection.visibleExtent().next(CannotCrossEditingBoundary)) {
+                intent.type = AXTextStateChangeTypeSelectionExtend;
+                intent.selection.direction = AXTextSelectionDirectionNext;
+                intent.selection.granularity = AXTextSelectionGranularityCharacter;
+            } else if (selection.visibleExtent() == m_lastSelection.visibleExtent().previous(CannotCrossEditingBoundary)) {
+                intent.type = AXTextStateChangeTypeSelectionExtend;
+                intent.selection.direction = AXTextSelectionDirectionPrevious;
+                intent.selection.granularity = AXTextSelectionGranularityCharacter;
+            }
+        }
+    }
+
+    m_lastTextFieldAXID = object.objectID();
+    m_lastSelection = selection;
+
+    return intent;
+}
+
+void AXObjectCache::postTextStateChangePlatformNotification(AccessibilityObject* object, const AXTextStateChangeIntent&amp; originalIntent, const VisibleSelection&amp; selection)
 {
     if (!object)
         object = rootWebArea();
@@ -516,6 +554,8 @@ void AXObjectCache::postTextStateChangePlatformNotification(AccessibilityObject*
     processQueuedIsolatedNodeUpdates();
 #endif

+    AXTextStateChangeIntent intent = inferDirectionFromIntent(*object, originalIntent, selection);

AG: auto intent

+
     auto userInfo = adoptNS([[NSMutableDictionary alloc] initWithCapacity:5]);
     if (m_isSynchronizingSelection)
         [userInfo setObject:@YES forKey:NSAccessibilityTextStateSyncKey];</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2020101</commentid>
    <comment_count>10</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2024-03-11 07:58:29 -0700</bug_when>
    <thetext>(In reply to Dominic Mazzoni from comment #7)
&gt; Created attachment 470255 [details]
&gt; Patch

diff --git a/LayoutTests/accessibility/mac/custom-text-editor.html b/LayoutTests/accessibility/mac/custom-text-editor.html
new file mode 100644
index 000000000000..0dd36c32cedb
--- /dev/null
+++ b/LayoutTests/accessibility/mac/custom-text-editor.html
@@ -0,0 +1,91 @@
+&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;script src=&quot;../../resources/accessibility-helper.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+
+&lt;textarea autofocus id=&quot;text&quot; role=&quot;textbox&quot;&gt;TextðŸ˜€area with custom cursor handling&lt;/textarea&gt;
+
+&lt;script&gt;
+var output = &quot;Texts that we infer intents when JS is used to move the cursor in a text editor; this practice is common in online code editors.\n\n&quot;;

AG: Typo: Texts -&gt; Tests

+
+const AXTextStateChangeTypeSelectionMove = 2;
+const AXTextStateChangeTypeSelectionExtend = AXTextStateChangeTypeSelectionMove + 1;
+
+const AXTextSelectionDirectionBeginning = 1;
+const AXTextSelectionDirectionEnd = AXTextSelectionDirectionBeginning + 1;
+const AXTextSelectionDirectionPrevious = AXTextSelectionDirectionEnd + 1;
+const AXTextSelectionDirectionNext = AXTextSelectionDirectionPrevious + 1;
+const AXTextSelectionDirectionDiscontiguous = AXTextSelectionDirectionNext + 1;
+
+const AXTextSelectionGranularityCharacter = 1;
+
+function notificationCallback(notification, userInfo) {
+    let str = &quot;&quot;;
+    if (notification == &quot;AXSelectedTextChanged&quot;) {

AG: early return.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2020118</commentid>
    <comment_count>11</comment_count>
      <attachid>470292</attachid>
    <who name="Dominic Mazzoni">dm_mazzoni</who>
    <bug_when>2024-03-11 08:40:50 -0700</bug_when>
    <thetext>Created attachment 470292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2020214</commentid>
    <comment_count>12</comment_count>
      <attachid>470299</attachid>
    <who name="Dominic Mazzoni">dm_mazzoni</who>
    <bug_when>2024-03-11 13:16:43 -0700</bug_when>
    <thetext>Created attachment 470299
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2020216</commentid>
    <comment_count>13</comment_count>
    <who name="Dominic Mazzoni">dm_mazzoni</who>
    <bug_when>2024-03-11 13:18:40 -0700</bug_when>
    <thetext>(In reply to Andres Gonzalez from comment #9)
&gt; AG: I think this whole block would be more readable as an early return,
&gt; i.e., if (!condition) { update memeber vars and return early } continue with
&gt; the processing. The early return block could be before the copy above.

The only thing I don&apos;t love is duplicating the code to update the member vars. But I do like less indentation. Done.

All other feedback should be address now. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2020568</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-03-12 14:44:47 -0700</bug_when>
    <thetext>Committed 275998@main (18d9a43b9d86): &lt;https://commits.webkit.org/275998@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 470299.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>470221</attachid>
            <date>2024-03-06 20:35:04 -0800</date>
            <delta_ts>2024-03-06 20:35:04 -0800</delta_ts>
            <desc>Simple repro</desc>
            <filename>code_editor.html</filename>
            <type>text/html</type>
            <size>804</size>
            <attacher name="Dominic Mazzoni">dm_mazzoni</attacher>
            
              <data encoding="base64">PHN0eWxlPgogIHRleHRhcmVhIHsKICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAg
Zm9udC1zaXplOiAxNHB0OwogICAgICB3aWR0aDogMTAwJTsKICB9Cjwvc3R5bGU+CjxwPgogIDx0
ZXh0YXJlYT5SZWd1bGFyIHRleHRhcmVhLCBWb2ljZU92ZXIgZmVlZGJhY2sgd29ya3MgZmluZTwv
dGV4dGFyZWE+CgogIDx0ZXh0YXJlYSBhdXRvZm9jdXMgaWQ9InRleHQiIHJvbGU9InRleHRib3gi
PlRleHRhcmVhIHdpdGggY3VzdG9tIGN1cnNvciBoYW5kbGluZzwvdGV4dGFyZWE+CiAgPHNjcmlw
dD4KICAgIGxldCB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHQnKTsKICAgIHRl
eHQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMCk7CiAgICBsZXQgb2Zmc2V0ID0gMDsKICAgIHRleHQu
YWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChlKSA9PiB7CiAgICAgICAgaWYgKGUua2V5ID09
ICdBcnJvd1JpZ2h0JykgewogICAgICAgICAgICBvZmZzZXQrKzsKICAgICAgICB9IGVsc2UgaWYg
KGUua2V5ID09ICdBcnJvd0xlZnQnKSB7CiAgICAgICAgICAgIG9mZnNldC0tOwogICAgICAgIH0K
ICAgICAgICBpZiAob2Zmc2V0IDwgMCkgb2Zmc2V0ID0gMDsKICAgICAgICBpZiAob2Zmc2V0ID4g
dGV4dC52YWx1ZS5sZW5ndGgpIG9mZnNldCA9IHRleHQudmFsdWUubGVuZ3RoOwogICAgICAgIHRl
eHQuc2V0U2VsZWN0aW9uUmFuZ2Uob2Zmc2V0LCBvZmZzZXQpOwogICAgICAgIGUucHJldmVudERl
ZmF1bHQoKTsKICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgfSk7CiAgPC9zY3JpcHQ+
CjwvcD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>470235</attachid>
            <date>2024-03-07 13:38:32 -0800</date>
            <delta_ts>2024-03-08 09:01:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-270616-20240307133831.patch</filename>
            <type>text/plain</type>
            <size>9617</size>
            <attacher name="Dominic Mazzoni">dm_mazzoni</attacher>
            
              <data encoding="base64">RnJvbSA0NDdjODc4Y2E2ZTFkMTA4NzZkOGEyOGQ5ZDQ2N2Y5N2ZhZDk1ZmFkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEb21pbmljIE1henpvbmkgPGRtX21henpvbmlAYXBwbGUuY29t
PgpEYXRlOiBUaHUsIDcgTWFyIDIwMjQgMTM6MzM6MDAgLTA4MDAKU3ViamVjdDogW1BBVENIXSBB
WDogVm9pY2VPdmVyIGRvZXNuJ3QgcmVhZCBjaGFyYWN0ZXJzIHdoZW4gdXNlciBwcmVzc2VzIGxl
ZnQKIC8gcmlnaHQgYXJyb3dzIGluIE1vbmFjbyBjb2RlIGVkaXRvcgogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3MDYxNiByZGFyOi8vMTIzOTg0MTY4CgpSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KCldoZW4gdGhlIGNoYXJhY3RlciBvciBzZWxlY3Rpb24gZXh0
ZW50IG1vdmVzIGJ5IGp1c3Qgb25lIHZpc2libGUgcG9zaXRpb24sIGluZmVyCnRoYXQgaXQgd2Fz
IGEgY2hhcmFjdGVyIGdyYW51bGFyaXR5IG1vdmUsIHJhdGhlciB0aGFuIGEgZGlzY29udGlndW91
cyBzZWxlY3Rpb24uCgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2N1c3RvbS10ZXh0
LWVkaXRvci1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
bWFjL2N1c3RvbS10ZXh0LWVkaXRvci5odG1sOiBBZGRlZC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9BWE9iamVjdENhY2hlTWFjLm1tOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aW5mZXJE
aXJlY3Rpb25Gcm9tSW50ZW50KToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3Rh
dGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbik6Ci0tLQogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmggIHwgIDcgKysKIC4uLi9hY2Nlc3NpYmlsaXR5L21hYy9B
WE9iamVjdENhY2hlTWFjLm1tICAgICB8IDQwICsrKysrKystCiAuLi4vbWFjL2N1c3RvbS10ZXh0
LWVkaXRvci1leHBlY3RlZC50eHQgICAgICAgfCAyNCArKysrKwogLi4uL2FjY2Vzc2liaWxpdHkv
bWFjL2N1c3RvbS10ZXh0LWVkaXRvci5odG1sIHwgOTUgKysrKysrKysrKysrKysrKysrKwogNCBm
aWxlcyBjaGFuZ2VkLCAxNjUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1v
ZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2N1c3RvbS10ZXh0LWVkaXRv
ci1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9jdXN0b20tdGV4dC1lZGl0b3IuaHRtbAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmgKaW5kZXggMjgzODZmMmNhNDNmLi5lNjMzMGE5MjU4NWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC03
NzgsNiArNzc4LDEzIEBAIHByaXZhdGU6CiAjaWYgVVNFKEFUU1BJKQogICAgIExpc3RIYXNoU2V0
PFJlZlB0cjxBWENvcmVPYmplY3Q+PiBtX2RlZmVycmVkUGFyZW50Q2hhbmdlZExpc3Q7CiAjZW5k
aWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEFYSUQgbV9sYXN0VGV4dEZpZWxkQVhJRDsK
KyAgICBWaXNpYmxlU2VsZWN0aW9uIG1fbGFzdFNlbGVjdGlvbjsKKworICAgIEFYVGV4dFN0YXRl
Q2hhbmdlSW50ZW50IGluZmVyRGlyZWN0aW9uRnJvbUludGVudChBY2Nlc3NpYmlsaXR5T2JqZWN0
KiwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9u
Jik7CisjZW5kaWYKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQppbmRleCA5Y2Y1
N2U0ZDAyMzMuLjUyZjNjNDM0NzI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCkBAIC01MDMsNyArNTAzLDQzIEBAIHN0
YXRpYyB2b2lkIGNyZWF0ZUlzb2xhdGVkT2JqZWN0SWZOZWVkZWQoQWNjZXNzaWJpbGl0eU9iamVj
dCYgb2JqZWN0LCBzdGQ6Om9wdGlvCiB9CiAjZW5kaWYKIAotdm9pZCBBWE9iamVjdENhY2hlOjpw
b3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVj
dCogb2JqZWN0LCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYgaW50ZW50LCBjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCitBWFRleHRTdGF0ZUNoYW5nZUludGVudCBBWE9i
amVjdENhY2hlOjppbmZlckRpcmVjdGlvbkZyb21JbnRlbnQoQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqZWN0LCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYgb3JpZ2luYWxJbnRlbnQsIGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKK3sKKyAgICBBWFRleHRTdGF0ZUNoYW5n
ZUludGVudCBpbnRlbnQgPSBvcmlnaW5hbEludGVudDsKKworICAgIGlmIChpbnRlbnQuc2VsZWN0
aW9uLmRpcmVjdGlvbiA9PSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25EaXNjb250aWd1b3VzICYm
IG9iamVjdC0+b2JqZWN0SUQoKSA9PSBtX2xhc3RUZXh0RmllbGRBWElEICYmIG1fbGFzdFNlbGVj
dGlvbiAhPSBzZWxlY3Rpb24pIHsKKyAgICAgICAgaWYgKG1fbGFzdFNlbGVjdGlvbi5pc0NhcmV0
KCkgJiYgc2VsZWN0aW9uLmlzQ2FyZXQoKSkgeworICAgICAgICAgICAgLy8gQ3Vyc29yIG1vdmVt
ZW50CisgICAgICAgICAgICBpZiAoc2VsZWN0aW9uLnZpc2libGVTdGFydCgpID09IG1fbGFzdFNl
bGVjdGlvbi52aXNpYmxlU3RhcnQoKS5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KSkg
eworICAgICAgICAgICAgICAgIGludGVudC50eXBlID0gQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2Vs
ZWN0aW9uTW92ZTsKKyAgICAgICAgICAgICAgICBpbnRlbnQuc2VsZWN0aW9uLmRpcmVjdGlvbiA9
IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbk5leHQ7CisgICAgICAgICAgICAgICAgaW50ZW50LnNl
bGVjdGlvbi5ncmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5Q2hhcmFjdGVy
OworICAgICAgICAgICAgfSBlbHNlIGlmIChzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkgPT0gbV9s
YXN0U2VsZWN0aW9uLnZpc2libGVTdGFydCgpLnByZXZpb3VzKENhbm5vdENyb3NzRWRpdGluZ0Jv
dW5kYXJ5KSkgeworICAgICAgICAgICAgICAgIGludGVudC50eXBlID0gQVhUZXh0U3RhdGVDaGFu
Z2VUeXBlU2VsZWN0aW9uTW92ZTsKKyAgICAgICAgICAgICAgICBpbnRlbnQuc2VsZWN0aW9uLmRp
cmVjdGlvbiA9IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvblByZXZpb3VzOworICAgICAgICAgICAg
ICAgIGludGVudC5zZWxlY3Rpb24uZ3JhbnVsYXJpdHkgPSBBWFRleHRTZWxlY3Rpb25HcmFudWxh
cml0eUNoYXJhY3RlcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChzZWxlY3Rp
b24udmlzaWJsZUJhc2UoKSA9PSBtX2xhc3RTZWxlY3Rpb24udmlzaWJsZUJhc2UoKSkgeworICAg
ICAgICAgICAgLy8gU2VsZWN0aW9uCisgICAgICAgICAgICBpZiAoc2VsZWN0aW9uLnZpc2libGVF
eHRlbnQoKSA9PSBtX2xhc3RTZWxlY3Rpb24udmlzaWJsZUV4dGVudCgpLm5leHQoQ2Fubm90Q3Jv
c3NFZGl0aW5nQm91bmRhcnkpKSB7CisgICAgICAgICAgICAgICAgaW50ZW50LnR5cGUgPSBBWFRl
eHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25FeHRlbmQ7CisgICAgICAgICAgICAgICAgaW50ZW50
LnNlbGVjdGlvbi5kaXJlY3Rpb24gPSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25OZXh0OworICAg
ICAgICAgICAgICAgIGludGVudC5zZWxlY3Rpb24uZ3JhbnVsYXJpdHkgPSBBWFRleHRTZWxlY3Rp
b25HcmFudWxhcml0eUNoYXJhY3RlcjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9u
LnZpc2libGVFeHRlbnQoKSA9PSBtX2xhc3RTZWxlY3Rpb24udmlzaWJsZUV4dGVudCgpLnByZXZp
b3VzKENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KSkgeworICAgICAgICAgICAgICAgIGludGVu
dC50eXBlID0gQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uRXh0ZW5kOworICAgICAgICAg
ICAgICAgIGludGVudC5zZWxlY3Rpb24uZGlyZWN0aW9uID0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0
aW9uUHJldmlvdXM7CisgICAgICAgICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5ncmFudWxhcml0
eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5Q2hhcmFjdGVyOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorCisgICAgbV9sYXN0VGV4dEZpZWxkQVhJRCA9IG9iamVjdC0+b2Jq
ZWN0SUQoKTsKKyAgICBtX2xhc3RTZWxlY3Rpb24gPSBzZWxlY3Rpb247CisKKyAgICByZXR1cm4g
aW50ZW50OworfQorCit2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0
Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIGNvbnN0IEFYVGV4
dFN0YXRlQ2hhbmdlSW50ZW50JiBvcmlnaW5hbEludGVudCwgY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYgc2VsZWN0aW9uKQogewogICAgIGlmICghb2JqZWN0KQogICAgICAgICBvYmplY3QgPSByb290
V2ViQXJlYSgpOwpAQCAtNTE2LDYgKzU1Miw4IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRl
eHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqCiAg
ICAgcHJvY2Vzc1F1ZXVlZElzb2xhdGVkTm9kZVVwZGF0ZXMoKTsKICNlbmRpZgogCisgICAgQVhU
ZXh0U3RhdGVDaGFuZ2VJbnRlbnQgaW50ZW50ID0gaW5mZXJEaXJlY3Rpb25Gcm9tSW50ZW50KG9i
amVjdCwgb3JpZ2luYWxJbnRlbnQsIHNlbGVjdGlvbik7CisKICAgICBhdXRvIHVzZXJJbmZvID0g
YWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6NV0p
OwogICAgIGlmIChtX2lzU3luY2hyb25pemluZ1NlbGVjdGlvbikKICAgICAgICAgW3VzZXJJbmZv
IHNldE9iamVjdDpAWUVTIGZvcktleTpOU0FjY2Vzc2liaWxpdHlUZXh0U3RhdGVTeW5jS2V5XTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2N1c3RvbS10ZXh0LWVk
aXRvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9jdXN0b20t
dGV4dC1lZGl0b3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uMzE3MmE4ODczMTliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvY3VzdG9tLXRleHQtZWRpdG9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDI0IEBACitQQVNTIGFkZGVkTm90aWZpY2F0aW9uIGlzIHRydWUKK1RleHRzIHRoYXQgd2UgaW5m
ZXIgaW50ZW50cyB3aGVuIEpTIGlzIHVzZWQgdG8gbW92ZSB0aGUgY3Vyc29yIGluIGEgdGV4dCBl
ZGl0b3I7IHRoaXMgcHJhY3RpY2UgaXMgY29tbW9uIGluIG9ubGluZSBjb2RlIGVkaXRvcnMuCisK
K01vdmUgdG8gMAorbW92ZSBkaXNjb250aWd1b3VzCitNb3ZlIHRvIDEKK21vdmUgbmV4dCBjaGFy
YWN0ZXIKK01vdmUgdG8gMgorbW92ZSBuZXh0IGNoYXJhY3RlcgorTW92ZSB0byAzCittb3ZlIG5l
eHQgY2hhcmFjdGVyCitNb3ZlIHRvIDQKK21vdmUgbmV4dCBjaGFyYWN0ZXIKK01vdmUgdG8gNgor
bW92ZSBuZXh0IGNoYXJhY3RlcgorTW92ZSB0byA4Cittb3ZlIGRpc2NvbnRpZ3VvdXMKK01vdmUg
dG8gOQorbW92ZSBuZXh0IGNoYXJhY3RlcgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvY3VzdG9tLXRleHQtZWRpdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9jdXN0b20tdGV4dC1lZGl0b3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLmRlZmM3ODllN2U0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL2N1c3RvbS10ZXh0LWVkaXRvci5odG1sCkBAIC0wLDAgKzEs
OTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KworPHRleHRhcmVhIGF1dG9mb2N1cyBpZD0idGV4dCIgcm9sZT0idGV4dGJveCI+VGV4dPCfmIBh
cmVhIHdpdGggY3VzdG9tIGN1cnNvciBoYW5kbGluZzwvdGV4dGFyZWE+CisKKzxzY3JpcHQ+Cit2
YXIgb3V0cHV0ID0gIlRleHRzIHRoYXQgd2UgaW5mZXIgaW50ZW50cyB3aGVuIEpTIGlzIHVzZWQg
dG8gbW92ZSB0aGUgY3Vyc29yIGluIGEgdGV4dCBlZGl0b3I7IHRoaXMgcHJhY3RpY2UgaXMgY29t
bW9uIGluIG9ubGluZSBjb2RlIGVkaXRvcnMuXG5cbiI7CisKK3ZhciBBWFRleHRTdGF0ZUNoYW5n
ZVR5cGVTZWxlY3Rpb25Nb3ZlID0gMjsKK3ZhciBBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rp
b25FeHRlbmQgPSBBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlICsgMTsKKwordmFy
IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkJlZ2lubmluZyA9IDE7Cit2YXIgQVhUZXh0U2VsZWN0
aW9uRGlyZWN0aW9uRW5kID0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uQmVnaW5uaW5nICsgMTsK
K3ZhciBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25QcmV2aW91cyA9IEFYVGV4dFNlbGVjdGlvbkRp
cmVjdGlvbkVuZCArIDE7Cit2YXIgQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uTmV4dCA9IEFYVGV4
dFNlbGVjdGlvbkRpcmVjdGlvblByZXZpb3VzICsgMTsKK3ZhciBBWFRleHRTZWxlY3Rpb25EaXJl
Y3Rpb25EaXNjb250aWd1b3VzID0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uTmV4dCArIDE7CisK
K3ZhciBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eUNoYXJhY3RlciA9IDE7CisKK2Z1bmN0aW9u
IG5vdGlmaWNhdGlvbkNhbGxiYWNrKG5vdGlmaWNhdGlvbiwgdXNlckluZm8pIHsKKyAgICBsZXQg
c3RyID0gIiI7CisgICAgaWYgKG5vdGlmaWNhdGlvbiA9PSAiQVhTZWxlY3RlZFRleHRDaGFuZ2Vk
IikgeworICAgICAgICBsZXQgdHlwZSA9IHVzZXJJbmZvWyJBWFRleHRTdGF0ZUNoYW5nZVR5cGUi
XTsKKyAgICAgICAgaWYgKHR5cGUgPT0gQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uTW92
ZSkgeworICAgICAgICAgICAgc3RyICs9ICJtb3ZlIjsKKyAgICAgICAgfQorCisgICAgICAgIGxl
dCBkaXIgPSB1c2VySW5mb1siQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uIl07CisgICAgICAgIGlm
IChkaXIgPT0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uTmV4dCkgeworICAgICAgICAgICAgc3Ry
ICs9ICIgbmV4dCI7CisgICAgICAgIH0gZWxzZSBpZiAoZGlyID09IEFYVGV4dFNlbGVjdGlvbkRp
cmVjdGlvblByZXZpb3VzKSB7CisgICAgICAgICAgICBzdHIgKz0gIiBwcmV2aW91cyI7CisgICAg
ICAgIH0gZWxzZSBpZiAoZGlyID09IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkRpc2NvbnRpZ3Vv
dXMpIHsKKyAgICAgICAgICAgIHN0ciArPSAiIGRpc2NvbnRpZ3VvdXMiOworICAgICAgICB9CisK
KyAgICAgICAgbGV0IGdyYW51bGFyaXR5ID0gdXNlckluZm9bIkFYVGV4dFNlbGVjdGlvbkdyYW51
bGFyaXR5Il07CisgICAgICAgIGlmIChncmFudWxhcml0eSA9PSBBWFRleHRTZWxlY3Rpb25HcmFu
dWxhcml0eUNoYXJhY3RlcikgeworICAgICAgICAgICAgc3RyICs9ICIgY2hhcmFjdGVyIjsKKyAg
ICAgICAgfQorCisgICAgICAgIHN0ciArPSAiXG4iOworICAgICAgICBvdXRwdXQgKz0gc3RyOwor
ICAgIH0KKworICAgIGlmIChyZXNvbHZlTm90aWZpY2F0aW9uUHJvbWlzZSkgeworICAgICAgICBy
ZXNvbHZlTm90aWZpY2F0aW9uUHJvbWlzZSgpOworICAgIH0KK30KKworYXN5bmMgZnVuY3Rpb24g
bW92ZUFuZFdhaXRGb3JOb3RpZmljYXRpb24ob2Zmc2V0KSB7CisgICAgdGV4dCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXh0Iik7CisgICAgb3V0cHV0ICs9ICJNb3ZlIHRvICIgKyBvZmZz
ZXQgKyAiXG4iOworICAgIGxldCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVj
dCkgPT4geworICAgICAgICByZXNvbHZlTm90aWZpY2F0aW9uUHJvbWlzZSA9IHJlc29sdmU7Cisg
ICAgfSk7CisgICAgdGV4dC5zZXRTZWxlY3Rpb25SYW5nZShvZmZzZXQsIG9mZnNldCk7CisgICAg
YXdhaXQgcHJvbWlzZTsKKyAgICByZXNvbHZlTm90aWZpY2F0aW9uUHJvbWlzZSA9IG51bGw7Cit9
CisKK2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5lbmFibGVF
bmhhbmNlZEFjY2Vzc2liaWxpdHkodHJ1ZSk7CisKKyAgICB3ZWJBcmVhID0gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIucm9vdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgIHZhciBhZGRlZE5v
dGlmaWNhdGlvbiA9IHdlYkFyZWEuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIobm90aWZpY2F0aW9u
Q2FsbGJhY2spOworICAgIHNob3VsZEJlKCJhZGRlZE5vdGlmaWNhdGlvbiIsICJ0cnVlIik7CisK
KyAgICBzZXRUaW1lb3V0KGFzeW5jIGZ1bmN0aW9uKCkgeworICAgICAgICBhd2FpdCBtb3ZlQW5k
V2FpdEZvck5vdGlmaWNhdGlvbigwKTsKKyAgICAgICAgYXdhaXQgbW92ZUFuZFdhaXRGb3JOb3Rp
ZmljYXRpb24oMSk7CisgICAgICAgIGF3YWl0IG1vdmVBbmRXYWl0Rm9yTm90aWZpY2F0aW9uKDIp
OworICAgICAgICBhd2FpdCBtb3ZlQW5kV2FpdEZvck5vdGlmaWNhdGlvbigzKTsKKyAgICAgICAg
YXdhaXQgbW92ZUFuZFdhaXRGb3JOb3RpZmljYXRpb24oNCk7CisKKyAgICAgICAgYXdhaXQgbW92
ZUFuZFdhaXRGb3JOb3RpZmljYXRpb24oNik7ICAvLyBOb3RlIHNpbmdsZSBjaGFyYWN0ZXIgKGVt
b2ppKQorCisgICAgICAgIGF3YWl0IG1vdmVBbmRXYWl0Rm9yTm90aWZpY2F0aW9uKDgpOyAgLy8g
RGlzY29udGlndW91cworICAgICAgICBhd2FpdCBtb3ZlQW5kV2FpdEZvck5vdGlmaWNhdGlvbig5
KTsKKworICAgICAgICBkZWJ1ZyhvdXRwdXQpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICB9LCAwKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>470249</attachid>
            <date>2024-03-08 09:01:57 -0800</date>
            <delta_ts>2024-03-08 15:21:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-270616-20240308090156.patch</filename>
            <type>text/plain</type>
            <size>9629</size>
            <attacher name="Dominic Mazzoni">dm_mazzoni</attacher>
            
              <data encoding="base64">RnJvbSAzZWJhZmRjNmFiNGJiYmI3YTQ1M2ZlZjNiMTMyZmI0Mzg1MzQ1ZmIxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEb21pbmljIE1henpvbmkgPGRtX21henpvbmlAYXBwbGUuY29t
PgpEYXRlOiBUaHUsIDcgTWFyIDIwMjQgMTM6MzM6MDAgLTA4MDAKU3ViamVjdDogW1BBVENIXSBB
WDogVm9pY2VPdmVyIGRvZXNuJ3QgcmVhZCBjaGFyYWN0ZXJzIHdoZW4gdXNlciBwcmVzc2VzIGxl
ZnQKIC8gcmlnaHQgYXJyb3dzIGluIE1vbmFjbyBjb2RlIGVkaXRvcgogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3MDYxNiByZGFyOi8vMTIzOTg0MTY4CgpSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KCldoZW4gdGhlIGNoYXJhY3RlciBvciBzZWxlY3Rpb24gZXh0
ZW50IG1vdmVzIGJ5IGp1c3Qgb25lIHZpc2libGUgcG9zaXRpb24sIGluZmVyCnRoYXQgaXQgd2Fz
IGEgY2hhcmFjdGVyIGdyYW51bGFyaXR5IG1vdmUsIHJhdGhlciB0aGFuIGEgZGlzY29udGlndW91
cyBzZWxlY3Rpb24uCgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2N1c3RvbS10ZXh0
LWVkaXRvci1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
bWFjL2N1c3RvbS10ZXh0LWVkaXRvci5odG1sOiBBZGRlZC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9BWE9iamVjdENhY2hlTWFjLm1tOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aW5mZXJE
aXJlY3Rpb25Gcm9tSW50ZW50KToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3Rh
dGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbik6Ci0tLQogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmggIHwgIDcgKysKIC4uLi9hY2Nlc3NpYmlsaXR5L21hYy9B
WE9iamVjdENhY2hlTWFjLm1tICAgICB8IDQwICsrKysrKystCiAuLi4vbWFjL2N1c3RvbS10ZXh0
LWVkaXRvci1leHBlY3RlZC50eHQgICAgICAgfCAyNCArKysrKwogLi4uL2FjY2Vzc2liaWxpdHkv
bWFjL2N1c3RvbS10ZXh0LWVkaXRvci5odG1sIHwgOTUgKysrKysrKysrKysrKysrKysrKwogNCBm
aWxlcyBjaGFuZ2VkLCAxNjUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1v
ZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2N1c3RvbS10ZXh0LWVkaXRv
ci1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9jdXN0b20tdGV4dC1lZGl0b3IuaHRtbAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmgKaW5kZXggMjgzODZmMmNhNDNmLi5lNjMzMGE5MjU4NWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC03
NzgsNiArNzc4LDEzIEBAIHByaXZhdGU6CiAjaWYgVVNFKEFUU1BJKQogICAgIExpc3RIYXNoU2V0
PFJlZlB0cjxBWENvcmVPYmplY3Q+PiBtX2RlZmVycmVkUGFyZW50Q2hhbmdlZExpc3Q7CiAjZW5k
aWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEFYSUQgbV9sYXN0VGV4dEZpZWxkQVhJRDsK
KyAgICBWaXNpYmxlU2VsZWN0aW9uIG1fbGFzdFNlbGVjdGlvbjsKKworICAgIEFYVGV4dFN0YXRl
Q2hhbmdlSW50ZW50IGluZmVyRGlyZWN0aW9uRnJvbUludGVudChBY2Nlc3NpYmlsaXR5T2JqZWN0
KiwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9u
Jik7CisjZW5kaWYKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQppbmRleCA5Y2Y1
N2U0ZDAyMzMuLjUyZjNjNDM0NzI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCkBAIC01MDMsNyArNTAzLDQzIEBAIHN0
YXRpYyB2b2lkIGNyZWF0ZUlzb2xhdGVkT2JqZWN0SWZOZWVkZWQoQWNjZXNzaWJpbGl0eU9iamVj
dCYgb2JqZWN0LCBzdGQ6Om9wdGlvCiB9CiAjZW5kaWYKIAotdm9pZCBBWE9iamVjdENhY2hlOjpw
b3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVj
dCogb2JqZWN0LCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYgaW50ZW50LCBjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCitBWFRleHRTdGF0ZUNoYW5nZUludGVudCBBWE9i
amVjdENhY2hlOjppbmZlckRpcmVjdGlvbkZyb21JbnRlbnQoQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqZWN0LCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYgb3JpZ2luYWxJbnRlbnQsIGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKK3sKKyAgICBBWFRleHRTdGF0ZUNoYW5n
ZUludGVudCBpbnRlbnQgPSBvcmlnaW5hbEludGVudDsKKworICAgIGlmIChpbnRlbnQuc2VsZWN0
aW9uLmRpcmVjdGlvbiA9PSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25EaXNjb250aWd1b3VzICYm
IG9iamVjdC0+b2JqZWN0SUQoKSA9PSBtX2xhc3RUZXh0RmllbGRBWElEICYmIG1fbGFzdFNlbGVj
dGlvbiAhPSBzZWxlY3Rpb24pIHsKKyAgICAgICAgaWYgKG1fbGFzdFNlbGVjdGlvbi5pc0NhcmV0
KCkgJiYgc2VsZWN0aW9uLmlzQ2FyZXQoKSkgeworICAgICAgICAgICAgLy8gQ3Vyc29yIG1vdmVt
ZW50CisgICAgICAgICAgICBpZiAoc2VsZWN0aW9uLnZpc2libGVTdGFydCgpID09IG1fbGFzdFNl
bGVjdGlvbi52aXNpYmxlU3RhcnQoKS5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KSkg
eworICAgICAgICAgICAgICAgIGludGVudC50eXBlID0gQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2Vs
ZWN0aW9uTW92ZTsKKyAgICAgICAgICAgICAgICBpbnRlbnQuc2VsZWN0aW9uLmRpcmVjdGlvbiA9
IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbk5leHQ7CisgICAgICAgICAgICAgICAgaW50ZW50LnNl
bGVjdGlvbi5ncmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5Q2hhcmFjdGVy
OworICAgICAgICAgICAgfSBlbHNlIGlmIChzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkgPT0gbV9s
YXN0U2VsZWN0aW9uLnZpc2libGVTdGFydCgpLnByZXZpb3VzKENhbm5vdENyb3NzRWRpdGluZ0Jv
dW5kYXJ5KSkgeworICAgICAgICAgICAgICAgIGludGVudC50eXBlID0gQVhUZXh0U3RhdGVDaGFu
Z2VUeXBlU2VsZWN0aW9uTW92ZTsKKyAgICAgICAgICAgICAgICBpbnRlbnQuc2VsZWN0aW9uLmRp
cmVjdGlvbiA9IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvblByZXZpb3VzOworICAgICAgICAgICAg
ICAgIGludGVudC5zZWxlY3Rpb24uZ3JhbnVsYXJpdHkgPSBBWFRleHRTZWxlY3Rpb25HcmFudWxh
cml0eUNoYXJhY3RlcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChzZWxlY3Rp
b24udmlzaWJsZUJhc2UoKSA9PSBtX2xhc3RTZWxlY3Rpb24udmlzaWJsZUJhc2UoKSkgeworICAg
ICAgICAgICAgLy8gU2VsZWN0aW9uCisgICAgICAgICAgICBpZiAoc2VsZWN0aW9uLnZpc2libGVF
eHRlbnQoKSA9PSBtX2xhc3RTZWxlY3Rpb24udmlzaWJsZUV4dGVudCgpLm5leHQoQ2Fubm90Q3Jv
c3NFZGl0aW5nQm91bmRhcnkpKSB7CisgICAgICAgICAgICAgICAgaW50ZW50LnR5cGUgPSBBWFRl
eHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25FeHRlbmQ7CisgICAgICAgICAgICAgICAgaW50ZW50
LnNlbGVjdGlvbi5kaXJlY3Rpb24gPSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25OZXh0OworICAg
ICAgICAgICAgICAgIGludGVudC5zZWxlY3Rpb24uZ3JhbnVsYXJpdHkgPSBBWFRleHRTZWxlY3Rp
b25HcmFudWxhcml0eUNoYXJhY3RlcjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9u
LnZpc2libGVFeHRlbnQoKSA9PSBtX2xhc3RTZWxlY3Rpb24udmlzaWJsZUV4dGVudCgpLnByZXZp
b3VzKENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KSkgeworICAgICAgICAgICAgICAgIGludGVu
dC50eXBlID0gQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uRXh0ZW5kOworICAgICAgICAg
ICAgICAgIGludGVudC5zZWxlY3Rpb24uZGlyZWN0aW9uID0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0
aW9uUHJldmlvdXM7CisgICAgICAgICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5ncmFudWxhcml0
eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5Q2hhcmFjdGVyOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorCisgICAgbV9sYXN0VGV4dEZpZWxkQVhJRCA9IG9iamVjdC0+b2Jq
ZWN0SUQoKTsKKyAgICBtX2xhc3RTZWxlY3Rpb24gPSBzZWxlY3Rpb247CisKKyAgICByZXR1cm4g
aW50ZW50OworfQorCit2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0
Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIGNvbnN0IEFYVGV4
dFN0YXRlQ2hhbmdlSW50ZW50JiBvcmlnaW5hbEludGVudCwgY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYgc2VsZWN0aW9uKQogewogICAgIGlmICghb2JqZWN0KQogICAgICAgICBvYmplY3QgPSByb290
V2ViQXJlYSgpOwpAQCAtNTE2LDYgKzU1Miw4IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRl
eHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqCiAg
ICAgcHJvY2Vzc1F1ZXVlZElzb2xhdGVkTm9kZVVwZGF0ZXMoKTsKICNlbmRpZgogCisgICAgQVhU
ZXh0U3RhdGVDaGFuZ2VJbnRlbnQgaW50ZW50ID0gaW5mZXJEaXJlY3Rpb25Gcm9tSW50ZW50KG9i
amVjdCwgb3JpZ2luYWxJbnRlbnQsIHNlbGVjdGlvbik7CisKICAgICBhdXRvIHVzZXJJbmZvID0g
YWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6NV0p
OwogICAgIGlmIChtX2lzU3luY2hyb25pemluZ1NlbGVjdGlvbikKICAgICAgICAgW3VzZXJJbmZv
IHNldE9iamVjdDpAWUVTIGZvcktleTpOU0FjY2Vzc2liaWxpdHlUZXh0U3RhdGVTeW5jS2V5XTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2N1c3RvbS10ZXh0LWVk
aXRvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9jdXN0b20t
dGV4dC1lZGl0b3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uMzE3MmE4ODczMTliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvY3VzdG9tLXRleHQtZWRpdG9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDI0IEBACitQQVNTIGFkZGVkTm90aWZpY2F0aW9uIGlzIHRydWUKK1RleHRzIHRoYXQgd2UgaW5m
ZXIgaW50ZW50cyB3aGVuIEpTIGlzIHVzZWQgdG8gbW92ZSB0aGUgY3Vyc29yIGluIGEgdGV4dCBl
ZGl0b3I7IHRoaXMgcHJhY3RpY2UgaXMgY29tbW9uIGluIG9ubGluZSBjb2RlIGVkaXRvcnMuCisK
K01vdmUgdG8gMAorbW92ZSBkaXNjb250aWd1b3VzCitNb3ZlIHRvIDEKK21vdmUgbmV4dCBjaGFy
YWN0ZXIKK01vdmUgdG8gMgorbW92ZSBuZXh0IGNoYXJhY3RlcgorTW92ZSB0byAzCittb3ZlIG5l
eHQgY2hhcmFjdGVyCitNb3ZlIHRvIDQKK21vdmUgbmV4dCBjaGFyYWN0ZXIKK01vdmUgdG8gNgor
bW92ZSBuZXh0IGNoYXJhY3RlcgorTW92ZSB0byA4Cittb3ZlIGRpc2NvbnRpZ3VvdXMKK01vdmUg
dG8gOQorbW92ZSBuZXh0IGNoYXJhY3RlcgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvY3VzdG9tLXRleHQtZWRpdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9jdXN0b20tdGV4dC1lZGl0b3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLjI3M2VkY2U3ODdmZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL2N1c3RvbS10ZXh0LWVkaXRvci5odG1sCkBAIC0wLDAgKzEs
OTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KworPHRleHRhcmVhIGF1dG9mb2N1cyBpZD0idGV4dCIgcm9sZT0idGV4dGJveCI+VGV4dPCfmIBh
cmVhIHdpdGggY3VzdG9tIGN1cnNvciBoYW5kbGluZzwvdGV4dGFyZWE+CisKKzxzY3JpcHQ+Cit2
YXIgb3V0cHV0ID0gIlRleHRzIHRoYXQgd2UgaW5mZXIgaW50ZW50cyB3aGVuIEpTIGlzIHVzZWQg
dG8gbW92ZSB0aGUgY3Vyc29yIGluIGEgdGV4dCBlZGl0b3I7IHRoaXMgcHJhY3RpY2UgaXMgY29t
bW9uIGluIG9ubGluZSBjb2RlIGVkaXRvcnMuXG5cbiI7CisKK3ZhciBBWFRleHRTdGF0ZUNoYW5n
ZVR5cGVTZWxlY3Rpb25Nb3ZlID0gMjsKK3ZhciBBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rp
b25FeHRlbmQgPSBBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlICsgMTsKKwordmFy
IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkJlZ2lubmluZyA9IDE7Cit2YXIgQVhUZXh0U2VsZWN0
aW9uRGlyZWN0aW9uRW5kID0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uQmVnaW5uaW5nICsgMTsK
K3ZhciBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25QcmV2aW91cyA9IEFYVGV4dFNlbGVjdGlvbkRp
cmVjdGlvbkVuZCArIDE7Cit2YXIgQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uTmV4dCA9IEFYVGV4
dFNlbGVjdGlvbkRpcmVjdGlvblByZXZpb3VzICsgMTsKK3ZhciBBWFRleHRTZWxlY3Rpb25EaXJl
Y3Rpb25EaXNjb250aWd1b3VzID0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uTmV4dCArIDE7CisK
K3ZhciBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eUNoYXJhY3RlciA9IDE7CisKK2Z1bmN0aW9u
IG5vdGlmaWNhdGlvbkNhbGxiYWNrKG5vdGlmaWNhdGlvbiwgdXNlckluZm8pIHsKKyAgICBsZXQg
c3RyID0gIiI7CisgICAgaWYgKG5vdGlmaWNhdGlvbiA9PSAiQVhTZWxlY3RlZFRleHRDaGFuZ2Vk
IikgeworICAgICAgICBsZXQgdHlwZSA9IHVzZXJJbmZvWyJBWFRleHRTdGF0ZUNoYW5nZVR5cGUi
XTsKKyAgICAgICAgaWYgKHR5cGUgPT0gQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uTW92
ZSkgeworICAgICAgICAgICAgc3RyICs9ICJtb3ZlIjsKKyAgICAgICAgfQorCisgICAgICAgIGxl
dCBkaXIgPSB1c2VySW5mb1siQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uIl07CisgICAgICAgIGlm
IChkaXIgPT0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uTmV4dCkgeworICAgICAgICAgICAgc3Ry
ICs9ICIgbmV4dCI7CisgICAgICAgIH0gZWxzZSBpZiAoZGlyID09IEFYVGV4dFNlbGVjdGlvbkRp
cmVjdGlvblByZXZpb3VzKSB7CisgICAgICAgICAgICBzdHIgKz0gIiBwcmV2aW91cyI7CisgICAg
ICAgIH0gZWxzZSBpZiAoZGlyID09IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkRpc2NvbnRpZ3Vv
dXMpIHsKKyAgICAgICAgICAgIHN0ciArPSAiIGRpc2NvbnRpZ3VvdXMiOworICAgICAgICB9CisK
KyAgICAgICAgbGV0IGdyYW51bGFyaXR5ID0gdXNlckluZm9bIkFYVGV4dFNlbGVjdGlvbkdyYW51
bGFyaXR5Il07CisgICAgICAgIGlmIChncmFudWxhcml0eSA9PSBBWFRleHRTZWxlY3Rpb25HcmFu
dWxhcml0eUNoYXJhY3RlcikgeworICAgICAgICAgICAgc3RyICs9ICIgY2hhcmFjdGVyIjsKKyAg
ICAgICAgfQorCisgICAgICAgIHN0ciArPSAiXG4iOworICAgICAgICBvdXRwdXQgKz0gc3RyOwor
CisgICAgICAgIGlmIChyZXNvbHZlTm90aWZpY2F0aW9uUHJvbWlzZSkgeworICAgICAgICAgICAg
cmVzb2x2ZU5vdGlmaWNhdGlvblByb21pc2UoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworYXN5
bmMgZnVuY3Rpb24gbW92ZUFuZFdhaXRGb3JOb3RpZmljYXRpb24ob2Zmc2V0KSB7CisgICAgdGV4
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0Iik7CisgICAgb3V0cHV0ICs9ICJNb3Zl
IHRvICIgKyBvZmZzZXQgKyAiXG4iOworICAgIGxldCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJl
c29sdmUsIHJlamVjdCkgPT4geworICAgICAgICByZXNvbHZlTm90aWZpY2F0aW9uUHJvbWlzZSA9
IHJlc29sdmU7CisgICAgfSk7CisgICAgdGV4dC5zZXRTZWxlY3Rpb25SYW5nZShvZmZzZXQsIG9m
ZnNldCk7CisgICAgYXdhaXQgcHJvbWlzZTsKKyAgICByZXNvbHZlTm90aWZpY2F0aW9uUHJvbWlz
ZSA9IG51bGw7Cit9CisKK2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5lbmFibGVFbmhhbmNlZEFjY2Vzc2liaWxpdHkodHJ1ZSk7CisKKyAgICB3ZWJBcmVhID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIucm9vdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAg
IHZhciBhZGRlZE5vdGlmaWNhdGlvbiA9IHdlYkFyZWEuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIo
bm90aWZpY2F0aW9uQ2FsbGJhY2spOworICAgIHNob3VsZEJlKCJhZGRlZE5vdGlmaWNhdGlvbiIs
ICJ0cnVlIik7CisKKyAgICBzZXRUaW1lb3V0KGFzeW5jIGZ1bmN0aW9uKCkgeworICAgICAgICBh
d2FpdCBtb3ZlQW5kV2FpdEZvck5vdGlmaWNhdGlvbigwKTsKKyAgICAgICAgYXdhaXQgbW92ZUFu
ZFdhaXRGb3JOb3RpZmljYXRpb24oMSk7CisgICAgICAgIGF3YWl0IG1vdmVBbmRXYWl0Rm9yTm90
aWZpY2F0aW9uKDIpOworICAgICAgICBhd2FpdCBtb3ZlQW5kV2FpdEZvck5vdGlmaWNhdGlvbigz
KTsKKyAgICAgICAgYXdhaXQgbW92ZUFuZFdhaXRGb3JOb3RpZmljYXRpb24oNCk7CisKKyAgICAg
ICAgYXdhaXQgbW92ZUFuZFdhaXRGb3JOb3RpZmljYXRpb24oNik7ICAvLyBOb3RlIHNpbmdsZSBj
aGFyYWN0ZXIgKGVtb2ppKQorCisgICAgICAgIGF3YWl0IG1vdmVBbmRXYWl0Rm9yTm90aWZpY2F0
aW9uKDgpOyAgLy8gRGlzY29udGlndW91cworICAgICAgICBhd2FpdCBtb3ZlQW5kV2FpdEZvck5v
dGlmaWNhdGlvbig5KTsKKworICAgICAgICBkZWJ1ZyhvdXRwdXQpOworICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICB9LCAwKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>470251</attachid>
            <date>2024-03-08 15:21:54 -0800</date>
            <delta_ts>2024-03-08 18:10:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-270616-20240308152153.patch</filename>
            <type>text/plain</type>
            <size>9714</size>
            <attacher name="Dominic Mazzoni">dm_mazzoni</attacher>
            
              <data encoding="base64">RnJvbSA5MjE0ODA0YTdkOTJhNGVkMzg3MDE1OTFhNGRkMzVmMjI4NjUzMThjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEb21pbmljIE1henpvbmkgPGRtX21henpvbmlAYXBwbGUuY29t
PgpEYXRlOiBUaHUsIDcgTWFyIDIwMjQgMTM6MzM6MDAgLTA4MDAKU3ViamVjdDogW1BBVENIXSBB
WDogVm9pY2VPdmVyIGRvZXNuJ3QgcmVhZCBjaGFyYWN0ZXJzIHdoZW4gdXNlciBwcmVzc2VzIGxl
ZnQKIC8gcmlnaHQgYXJyb3dzIGluIE1vbmFjbyBjb2RlIGVkaXRvcgogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3MDYxNiByZGFyOi8vMTIzOTg0MTY4CgpSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KCldoZW4gdGhlIGNoYXJhY3RlciBvciBzZWxlY3Rpb24gZXh0
ZW50IG1vdmVzIGJ5IGp1c3Qgb25lIHZpc2libGUgcG9zaXRpb24sIGluZmVyCnRoYXQgaXQgd2Fz
IGEgY2hhcmFjdGVyIGdyYW51bGFyaXR5IG1vdmUsIHJhdGhlciB0aGFuIGEgZGlzY29udGlndW91
cyBzZWxlY3Rpb24uCgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2N1c3RvbS10ZXh0
LWVkaXRvci1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
bWFjL2N1c3RvbS10ZXh0LWVkaXRvci5odG1sOiBBZGRlZC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9BWE9iamVjdENhY2hlTWFjLm1tOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aW5mZXJE
aXJlY3Rpb25Gcm9tSW50ZW50KToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3Rh
dGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbik6Ci0tLQogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmggIHwgIDcgKysKIC4uLi9hY2Nlc3NpYmlsaXR5L21hYy9B
WE9iamVjdENhY2hlTWFjLm1tICAgICB8IDQzICsrKysrKysrLQogLi4uL21hYy9jdXN0b20tdGV4
dC1lZGl0b3ItZXhwZWN0ZWQudHh0ICAgICAgIHwgMjQgKysrKysKIC4uLi9hY2Nlc3NpYmlsaXR5
L21hYy9jdXN0b20tdGV4dC1lZGl0b3IuaHRtbCB8IDkyICsrKysrKysrKysrKysrKysrKysKIDQg
ZmlsZXMgY2hhbmdlZCwgMTY1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9jdXN0b20tdGV4dC1lZGl0
b3ItZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvY3VzdG9tLXRleHQtZWRpdG9yLmh0bWwKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IDI4Mzg2ZjJjYTQzZi4uMzQyZWM2MWRjM2Q4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAt
Nzc4LDYgKzc3OCwxMyBAQCBwcml2YXRlOgogI2lmIFVTRShBVFNQSSkKICAgICBMaXN0SGFzaFNl
dDxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gbV9kZWZlcnJlZFBhcmVudENoYW5nZWRMaXN0OwogI2Vu
ZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBBWElEIG1fbGFzdFRleHRGaWVsZEFYSUQ7
CisgICAgVmlzaWJsZVNlbGVjdGlvbiBtX2xhc3RTZWxlY3Rpb247CisKKyAgICBBWFRleHRTdGF0
ZUNoYW5nZUludGVudCBpbmZlckRpcmVjdGlvbkZyb21JbnRlbnQoQWNjZXNzaWJpbGl0eU9iamVj
dCYsIGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYpOworI2VuZGlmCiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KaW5kZXggOWNm
NTdlNGQwMjMzLi5jZGI0NDkyZWU2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQpAQCAtNTAzLDcgKzUwMyw0NiBAQCBz
dGF0aWMgdm9pZCBjcmVhdGVJc29sYXRlZE9iamVjdElmTmVlZGVkKEFjY2Vzc2liaWxpdHlPYmpl
Y3QmIG9iamVjdCwgc3RkOjpvcHRpbwogfQogI2VuZGlmCiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6
cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG9iamVjdCwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmIGludGVudCwgY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQorQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgQVhP
YmplY3RDYWNoZTo6aW5mZXJEaXJlY3Rpb25Gcm9tSW50ZW50KEFjY2Vzc2liaWxpdHlPYmplY3Qm
IG9iamVjdCwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmIG9yaWdpbmFsSW50ZW50LCBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCit7CisgICAgQVhUZXh0U3RhdGVDaGFu
Z2VJbnRlbnQgaW50ZW50ID0gb3JpZ2luYWxJbnRlbnQ7CisKKyAgICBpZiAoIW9iamVjdC5pc1Rl
eHRDb250cm9sKCkgJiYgIW9iamVjdC5lZGl0YWJsZUFuY2VzdG9yKCkpCisgICAgICAgIHJldHVy
biBvcmlnaW5hbEludGVudDsKKworICAgIGlmIChpbnRlbnQuc2VsZWN0aW9uLmRpcmVjdGlvbiA9
PSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25EaXNjb250aWd1b3VzICYmIG9iamVjdC5vYmplY3RJ
RCgpID09IG1fbGFzdFRleHRGaWVsZEFYSUQgJiYgbV9sYXN0U2VsZWN0aW9uICE9IHNlbGVjdGlv
bikgeworICAgICAgICBpZiAobV9sYXN0U2VsZWN0aW9uLmlzQ2FyZXQoKSAmJiBzZWxlY3Rpb24u
aXNDYXJldCgpKSB7CisgICAgICAgICAgICAvLyBDdXJzb3IgbW92ZW1lbnQKKyAgICAgICAgICAg
IGlmIChzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkgPT0gbV9sYXN0U2VsZWN0aW9uLnZpc2libGVT
dGFydCgpLm5leHQoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpKSB7CisgICAgICAgICAgICAg
ICAgaW50ZW50LnR5cGUgPSBBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlOworICAg
ICAgICAgICAgICAgIGludGVudC5zZWxlY3Rpb24uZGlyZWN0aW9uID0gQVhUZXh0U2VsZWN0aW9u
RGlyZWN0aW9uTmV4dDsKKyAgICAgICAgICAgICAgICBpbnRlbnQuc2VsZWN0aW9uLmdyYW51bGFy
aXR5ID0gQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlDaGFyYWN0ZXI7CisgICAgICAgICAgICB9
IGVsc2UgaWYgKHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSA9PSBtX2xhc3RTZWxlY3Rpb24udmlz
aWJsZVN0YXJ0KCkucHJldmlvdXMoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpKSB7CisgICAg
ICAgICAgICAgICAgaW50ZW50LnR5cGUgPSBBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25N
b3ZlOworICAgICAgICAgICAgICAgIGludGVudC5zZWxlY3Rpb24uZGlyZWN0aW9uID0gQVhUZXh0
U2VsZWN0aW9uRGlyZWN0aW9uUHJldmlvdXM7CisgICAgICAgICAgICAgICAgaW50ZW50LnNlbGVj
dGlvbi5ncmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5Q2hhcmFjdGVyOwor
ICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGlvbi52aXNpYmxlQmFzZSgp
ID09IG1fbGFzdFNlbGVjdGlvbi52aXNpYmxlQmFzZSgpKSB7CisgICAgICAgICAgICAvLyBTZWxl
Y3Rpb24KKyAgICAgICAgICAgIGlmIChzZWxlY3Rpb24udmlzaWJsZUV4dGVudCgpID09IG1fbGFz
dFNlbGVjdGlvbi52aXNpYmxlRXh0ZW50KCkubmV4dChDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFy
eSkpIHsKKyAgICAgICAgICAgICAgICBpbnRlbnQudHlwZSA9IEFYVGV4dFN0YXRlQ2hhbmdlVHlw
ZVNlbGVjdGlvbkV4dGVuZDsKKyAgICAgICAgICAgICAgICBpbnRlbnQuc2VsZWN0aW9uLmRpcmVj
dGlvbiA9IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbk5leHQ7CisgICAgICAgICAgICAgICAgaW50
ZW50LnNlbGVjdGlvbi5ncmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5Q2hh
cmFjdGVyOworICAgICAgICAgICAgfSBlbHNlIGlmIChzZWxlY3Rpb24udmlzaWJsZUV4dGVudCgp
ID09IG1fbGFzdFNlbGVjdGlvbi52aXNpYmxlRXh0ZW50KCkucHJldmlvdXMoQ2Fubm90Q3Jvc3NF
ZGl0aW5nQm91bmRhcnkpKSB7CisgICAgICAgICAgICAgICAgaW50ZW50LnR5cGUgPSBBWFRleHRT
dGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25FeHRlbmQ7CisgICAgICAgICAgICAgICAgaW50ZW50LnNl
bGVjdGlvbi5kaXJlY3Rpb24gPSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25QcmV2aW91czsKKyAg
ICAgICAgICAgICAgICBpbnRlbnQuc2VsZWN0aW9uLmdyYW51bGFyaXR5ID0gQVhUZXh0U2VsZWN0
aW9uR3JhbnVsYXJpdHlDaGFyYWN0ZXI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBtX2xhc3RUZXh0RmllbGRBWElEID0gb2JqZWN0Lm9iamVjdElEKCk7CisgICAgbV9s
YXN0U2VsZWN0aW9uID0gc2VsZWN0aW9uOworCisgICAgcmV0dXJuIGludGVudDsKK30KKwordm9p
ZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24o
QWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVu
dCYgb3JpZ2luYWxJbnRlbnQsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKIHsK
ICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgb2JqZWN0ID0gcm9vdFdlYkFyZWEoKTsKQEAgLTUx
Niw2ICs1NTUsOCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0
Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KgogICAgIHByb2Nlc3NRdWV1ZWRJ
c29sYXRlZE5vZGVVcGRhdGVzKCk7CiAjZW5kaWYKIAorICAgIEFYVGV4dFN0YXRlQ2hhbmdlSW50
ZW50IGludGVudCA9IGluZmVyRGlyZWN0aW9uRnJvbUludGVudCgqb2JqZWN0LCBvcmlnaW5hbElu
dGVudCwgc2VsZWN0aW9uKTsKKwogICAgIGF1dG8gdXNlckluZm8gPSBhZG9wdE5TKFtbTlNNdXRh
YmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTo1XSk7CiAgICAgaWYgKG1faXNT
eW5jaHJvbml6aW5nU2VsZWN0aW9uKQogICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0OkBZRVMg
Zm9yS2V5Ok5TQWNjZXNzaWJpbGl0eVRleHRTdGF0ZVN5bmNLZXldOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvY3VzdG9tLXRleHQtZWRpdG9yLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2N1c3RvbS10ZXh0LWVkaXRvci1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zODhiYjQy
MmE3ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9j
dXN0b20tdGV4dC1lZGl0b3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjQgQEAKK1RleHRzIHRo
YXQgd2UgaW5mZXIgaW50ZW50cyB3aGVuIEpTIGlzIHVzZWQgdG8gbW92ZSB0aGUgY3Vyc29yIGlu
IGEgdGV4dCBlZGl0b3I7IHRoaXMgcHJhY3RpY2UgaXMgY29tbW9uIGluIG9ubGluZSBjb2RlIGVk
aXRvcnMuCisKK1BBU1M6IGFkZGVkTm90aWZpY2F0aW9uID09PSB0cnVlCitNb3ZlIHRvIDAKK21v
dmUgZGlzY29udGlndW91cworTW92ZSB0byAxCittb3ZlIG5leHQgY2hhcmFjdGVyCitNb3ZlIHRv
IDIKK21vdmUgbmV4dCBjaGFyYWN0ZXIKK01vdmUgdG8gMworbW92ZSBuZXh0IGNoYXJhY3Rlcgor
TW92ZSB0byA0Cittb3ZlIG5leHQgY2hhcmFjdGVyCitNb3ZlIHRvIDYKK21vdmUgbmV4dCBjaGFy
YWN0ZXIKK01vdmUgdG8gOAorbW92ZSBkaXNjb250aWd1b3VzCitNb3ZlIHRvIDkKK21vdmUgbmV4
dCBjaGFyYWN0ZXIKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2N1c3Rv
bS10ZXh0LWVkaXRvci5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvY3VzdG9t
LXRleHQtZWRpdG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li5mNzY4ZjQ3YWFhMGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9jdXN0b20tdGV4dC1lZGl0b3IuaHRtbApAQCAtMCwwICsxLDkyIEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nl
c3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzx0ZXh0YXJlYSBh
dXRvZm9jdXMgaWQ9InRleHQiIHJvbGU9InRleHRib3giPlRleHTwn5iAYXJlYSB3aXRoIGN1c3Rv
bSBjdXJzb3IgaGFuZGxpbmc8L3RleHRhcmVhPgorCis8c2NyaXB0PgordmFyIG91dHB1dCA9ICJU
ZXh0cyB0aGF0IHdlIGluZmVyIGludGVudHMgd2hlbiBKUyBpcyB1c2VkIHRvIG1vdmUgdGhlIGN1
cnNvciBpbiBhIHRleHQgZWRpdG9yOyB0aGlzIHByYWN0aWNlIGlzIGNvbW1vbiBpbiBvbmxpbmUg
Y29kZSBlZGl0b3JzLlxuXG4iOworCitjb25zdCBBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rp
b25Nb3ZlID0gMjsKK2NvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbkV4dGVuZCA9
IEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbk1vdmUgKyAxOworCitjb25zdCBBWFRleHRT
ZWxlY3Rpb25EaXJlY3Rpb25CZWdpbm5pbmcgPSAxOworY29uc3QgQVhUZXh0U2VsZWN0aW9uRGly
ZWN0aW9uRW5kID0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uQmVnaW5uaW5nICsgMTsKK2NvbnN0
IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvblByZXZpb3VzID0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0
aW9uRW5kICsgMTsKK2NvbnN0IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbk5leHQgPSBBWFRleHRT
ZWxlY3Rpb25EaXJlY3Rpb25QcmV2aW91cyArIDE7Citjb25zdCBBWFRleHRTZWxlY3Rpb25EaXJl
Y3Rpb25EaXNjb250aWd1b3VzID0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uTmV4dCArIDE7CisK
K2NvbnN0IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5Q2hhcmFjdGVyID0gMTsKKworZnVuY3Rp
b24gbm90aWZpY2F0aW9uQ2FsbGJhY2sobm90aWZpY2F0aW9uLCB1c2VySW5mbykgeworICAgIGxl
dCBzdHIgPSAiIjsKKyAgICBpZiAobm90aWZpY2F0aW9uID09ICJBWFNlbGVjdGVkVGV4dENoYW5n
ZWQiKSB7CisgICAgICAgIGxldCB0eXBlID0gdXNlckluZm9bIkFYVGV4dFN0YXRlQ2hhbmdlVHlw
ZSJdOworICAgICAgICBpZiAodHlwZSA9PSBBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25N
b3ZlKQorICAgICAgICAgICAgc3RyICs9ICJtb3ZlIjsKKworICAgICAgICBsZXQgZGlyID0gdXNl
ckluZm9bIkFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbiJdOworICAgICAgICBpZiAoZGlyID09IEFY
VGV4dFNlbGVjdGlvbkRpcmVjdGlvbk5leHQpIHsKKyAgICAgICAgICAgIHN0ciArPSAiIG5leHQi
OworICAgICAgICB9IGVsc2UgaWYgKGRpciA9PSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25QcmV2
aW91cykgeworICAgICAgICAgICAgc3RyICs9ICIgcHJldmlvdXMiOworICAgICAgICB9IGVsc2Ug
aWYgKGRpciA9PSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25EaXNjb250aWd1b3VzKSB7CisgICAg
ICAgICAgICBzdHIgKz0gIiBkaXNjb250aWd1b3VzIjsKKyAgICAgICAgfQorCisgICAgICAgIGxl
dCBncmFudWxhcml0eSA9IHVzZXJJbmZvWyJBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eSJdOwor
ICAgICAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlDaGFy
YWN0ZXIpCisgICAgICAgICAgICBzdHIgKz0gIiBjaGFyYWN0ZXIiOworCisgICAgICAgIHN0ciAr
PSAiXG4iOworICAgICAgICBvdXRwdXQgKz0gc3RyOworCisgICAgICAgIGlmIChyZXNvbHZlTm90
aWZpY2F0aW9uUHJvbWlzZSkKKyAgICAgICAgICAgIHJlc29sdmVOb3RpZmljYXRpb25Qcm9taXNl
KCk7CisgICAgfQorfQorCithc3luYyBmdW5jdGlvbiBtb3ZlQW5kV2FpdEZvck5vdGlmaWNhdGlv
bihvZmZzZXQpIHsKKyAgICB0ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHQiKTsK
KyAgICBvdXRwdXQgKz0gIk1vdmUgdG8gIiArIG9mZnNldCArICJcbiI7CisgICAgbGV0IHByb21p
c2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIHJlc29sdmVO
b3RpZmljYXRpb25Qcm9taXNlID0gcmVzb2x2ZTsKKyAgICB9KTsKKyAgICB0ZXh0LnNldFNlbGVj
dGlvblJhbmdlKG9mZnNldCwgb2Zmc2V0KTsKKyAgICBhd2FpdCBwcm9taXNlOworICAgIHJlc29s
dmVOb3RpZmljYXRpb25Qcm9taXNlID0gbnVsbDsKK30KKworaWYgKHdpbmRvdy5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcikgeworICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmVuYWJsZUVuaGFuY2VkQWNjZXNzaWJpbGl0eSh0cnVl
KTsKKworICAgIHdlYkFyZWEgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5yb290RWxlbWVudC5j
aGlsZEF0SW5kZXgoMCk7CisgICAgdmFyIGFkZGVkTm90aWZpY2F0aW9uID0gd2ViQXJlYS5hZGRO
b3RpZmljYXRpb25MaXN0ZW5lcihub3RpZmljYXRpb25DYWxsYmFjayk7CisgICAgb3V0cHV0ICs9
IGV4cGVjdCgiYWRkZWROb3RpZmljYXRpb24iLCAidHJ1ZSIpOworCisgICAgc2V0VGltZW91dChh
c3luYyBmdW5jdGlvbigpIHsKKyAgICAgICAgYXdhaXQgbW92ZUFuZFdhaXRGb3JOb3RpZmljYXRp
b24oMCk7CisgICAgICAgIGF3YWl0IG1vdmVBbmRXYWl0Rm9yTm90aWZpY2F0aW9uKDEpOworICAg
ICAgICBhd2FpdCBtb3ZlQW5kV2FpdEZvck5vdGlmaWNhdGlvbigyKTsKKyAgICAgICAgYXdhaXQg
bW92ZUFuZFdhaXRGb3JOb3RpZmljYXRpb24oMyk7CisgICAgICAgIGF3YWl0IG1vdmVBbmRXYWl0
Rm9yTm90aWZpY2F0aW9uKDQpOworCisgICAgICAgIGF3YWl0IG1vdmVBbmRXYWl0Rm9yTm90aWZp
Y2F0aW9uKDYpOyAgLy8gTm90ZSBzaW5nbGUgY2hhcmFjdGVyIChlbW9qaSkKKworICAgICAgICBh
d2FpdCBtb3ZlQW5kV2FpdEZvck5vdGlmaWNhdGlvbig4KTsgIC8vIERpc2NvbnRpZ3VvdXMKKyAg
ICAgICAgYXdhaXQgbW92ZUFuZFdhaXRGb3JOb3RpZmljYXRpb24oOSk7CisKKyAgICAgICAgZGVi
dWcob3V0cHV0KTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgMCk7Cit9Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>470255</attachid>
            <date>2024-03-08 18:10:47 -0800</date>
            <delta_ts>2024-03-11 08:40:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-270616-20240308181047.patch</filename>
            <type>text/plain</type>
            <size>9691</size>
            <attacher name="Dominic Mazzoni">dm_mazzoni</attacher>
            
              <data encoding="base64">RnJvbSA1N2FhM2Q2YjQ5MWFhMWNlMzFiNjNmYjcxNDIzYTM2OTc4M2Q2YjVmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEb21pbmljIE1henpvbmkgPGRtX21henpvbmlAYXBwbGUuY29t
PgpEYXRlOiBUaHUsIDcgTWFyIDIwMjQgMTM6MzM6MDAgLTA4MDAKU3ViamVjdDogW1BBVENIXSBB
WDogVm9pY2VPdmVyIGRvZXNuJ3QgcmVhZCBjaGFyYWN0ZXJzIHdoZW4gdXNlciBwcmVzc2VzIGxl
ZnQKIC8gcmlnaHQgYXJyb3dzIGluIE1vbmFjbyBjb2RlIGVkaXRvcgogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3MDYxNiByZGFyOi8vMTIzOTg0MTY4CgpSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KCldoZW4gdGhlIGNoYXJhY3RlciBvciBzZWxlY3Rpb24gZXh0
ZW50IG1vdmVzIGJ5IGp1c3Qgb25lIHZpc2libGUgcG9zaXRpb24sIGluZmVyCnRoYXQgaXQgd2Fz
IGEgY2hhcmFjdGVyIGdyYW51bGFyaXR5IG1vdmUsIHJhdGhlciB0aGFuIGEgZGlzY29udGlndW91
cyBzZWxlY3Rpb24uCgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2N1c3RvbS10ZXh0
LWVkaXRvci1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
bWFjL2N1c3RvbS10ZXh0LWVkaXRvci5odG1sOiBBZGRlZC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9BWE9iamVjdENhY2hlTWFjLm1tOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aW5mZXJE
aXJlY3Rpb25Gcm9tSW50ZW50KToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3Rh
dGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbik6Ci0tLQogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmggIHwgIDcgKysKIC4uLi9hY2Nlc3NpYmlsaXR5L21hYy9B
WE9iamVjdENhY2hlTWFjLm1tICAgICB8IDQyICsrKysrKysrLQogLi4uL21hYy9jdXN0b20tdGV4
dC1lZGl0b3ItZXhwZWN0ZWQudHh0ICAgICAgIHwgMjQgKysrKysKIC4uLi9hY2Nlc3NpYmlsaXR5
L21hYy9jdXN0b20tdGV4dC1lZGl0b3IuaHRtbCB8IDkxICsrKysrKysrKysrKysrKysrKysKIDQg
ZmlsZXMgY2hhbmdlZCwgMTYzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9jdXN0b20tdGV4dC1lZGl0
b3ItZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvY3VzdG9tLXRleHQtZWRpdG9yLmh0bWwKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IDI4Mzg2ZjJjYTQzZi4uMzQyZWM2MWRjM2Q4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAt
Nzc4LDYgKzc3OCwxMyBAQCBwcml2YXRlOgogI2lmIFVTRShBVFNQSSkKICAgICBMaXN0SGFzaFNl
dDxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gbV9kZWZlcnJlZFBhcmVudENoYW5nZWRMaXN0OwogI2Vu
ZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBBWElEIG1fbGFzdFRleHRGaWVsZEFYSUQ7
CisgICAgVmlzaWJsZVNlbGVjdGlvbiBtX2xhc3RTZWxlY3Rpb247CisKKyAgICBBWFRleHRTdGF0
ZUNoYW5nZUludGVudCBpbmZlckRpcmVjdGlvbkZyb21JbnRlbnQoQWNjZXNzaWJpbGl0eU9iamVj
dCYsIGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYpOworI2VuZGlmCiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KaW5kZXggOWNm
NTdlNGQwMjMzLi5mMGU0MzdiNTk0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQpAQCAtNTAzLDcgKzUwMyw0NSBAQCBz
dGF0aWMgdm9pZCBjcmVhdGVJc29sYXRlZE9iamVjdElmTmVlZGVkKEFjY2Vzc2liaWxpdHlPYmpl
Y3QmIG9iamVjdCwgc3RkOjpvcHRpbwogfQogI2VuZGlmCiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6
cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG9iamVjdCwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmIGludGVudCwgY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQorQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgQVhP
YmplY3RDYWNoZTo6aW5mZXJEaXJlY3Rpb25Gcm9tSW50ZW50KEFjY2Vzc2liaWxpdHlPYmplY3Qm
IG9iamVjdCwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmIG9yaWdpbmFsSW50ZW50LCBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCit7CisgICAgaWYgKCFvYmplY3QuaXNU
ZXh0Q29udHJvbCgpICYmICFvYmplY3QuZWRpdGFibGVBbmNlc3RvcigpKQorICAgICAgICByZXR1
cm4gb3JpZ2luYWxJbnRlbnQ7CisKKyAgICBBWFRleHRTdGF0ZUNoYW5nZUludGVudCBpbnRlbnQg
PSBvcmlnaW5hbEludGVudDsKKyAgICBpZiAoaW50ZW50LnNlbGVjdGlvbi5kaXJlY3Rpb24gPT0g
QVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRGlzY29udGlndW91cyAmJiBvYmplY3Qub2JqZWN0SUQo
KSA9PSBtX2xhc3RUZXh0RmllbGRBWElEICYmIG1fbGFzdFNlbGVjdGlvbiAhPSBzZWxlY3Rpb24p
IHsKKyAgICAgICAgaWYgKG1fbGFzdFNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgc2VsZWN0aW9uLmlz
Q2FyZXQoKSkgeworICAgICAgICAgICAgLy8gQ3Vyc29yIG1vdmVtZW50CisgICAgICAgICAgICBp
ZiAoc2VsZWN0aW9uLnZpc2libGVTdGFydCgpID09IG1fbGFzdFNlbGVjdGlvbi52aXNpYmxlU3Rh
cnQoKS5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KSkgeworICAgICAgICAgICAgICAg
IGludGVudC50eXBlID0gQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uTW92ZTsKKyAgICAg
ICAgICAgICAgICBpbnRlbnQuc2VsZWN0aW9uLmRpcmVjdGlvbiA9IEFYVGV4dFNlbGVjdGlvbkRp
cmVjdGlvbk5leHQ7CisgICAgICAgICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5ncmFudWxhcml0
eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5Q2hhcmFjdGVyOworICAgICAgICAgICAgfSBl
bHNlIGlmIChzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkgPT0gbV9sYXN0U2VsZWN0aW9uLnZpc2li
bGVTdGFydCgpLnByZXZpb3VzKENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KSkgeworICAgICAg
ICAgICAgICAgIGludGVudC50eXBlID0gQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uTW92
ZTsKKyAgICAgICAgICAgICAgICBpbnRlbnQuc2VsZWN0aW9uLmRpcmVjdGlvbiA9IEFYVGV4dFNl
bGVjdGlvbkRpcmVjdGlvblByZXZpb3VzOworICAgICAgICAgICAgICAgIGludGVudC5zZWxlY3Rp
b24uZ3JhbnVsYXJpdHkgPSBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eUNoYXJhY3RlcjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChzZWxlY3Rpb24udmlzaWJsZUJhc2UoKSA9
PSBtX2xhc3RTZWxlY3Rpb24udmlzaWJsZUJhc2UoKSkgeworICAgICAgICAgICAgLy8gU2VsZWN0
aW9uCisgICAgICAgICAgICBpZiAoc2VsZWN0aW9uLnZpc2libGVFeHRlbnQoKSA9PSBtX2xhc3RT
ZWxlY3Rpb24udmlzaWJsZUV4dGVudCgpLm5leHQoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkp
KSB7CisgICAgICAgICAgICAgICAgaW50ZW50LnR5cGUgPSBBWFRleHRTdGF0ZUNoYW5nZVR5cGVT
ZWxlY3Rpb25FeHRlbmQ7CisgICAgICAgICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5kaXJlY3Rp
b24gPSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25OZXh0OworICAgICAgICAgICAgICAgIGludGVu
dC5zZWxlY3Rpb24uZ3JhbnVsYXJpdHkgPSBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eUNoYXJh
Y3RlcjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uLnZpc2libGVFeHRlbnQoKSA9
PSBtX2xhc3RTZWxlY3Rpb24udmlzaWJsZUV4dGVudCgpLnByZXZpb3VzKENhbm5vdENyb3NzRWRp
dGluZ0JvdW5kYXJ5KSkgeworICAgICAgICAgICAgICAgIGludGVudC50eXBlID0gQVhUZXh0U3Rh
dGVDaGFuZ2VUeXBlU2VsZWN0aW9uRXh0ZW5kOworICAgICAgICAgICAgICAgIGludGVudC5zZWxl
Y3Rpb24uZGlyZWN0aW9uID0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uUHJldmlvdXM7CisgICAg
ICAgICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5ncmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlv
bkdyYW51bGFyaXR5Q2hhcmFjdGVyOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CisgICAgbV9sYXN0VGV4dEZpZWxkQVhJRCA9IG9iamVjdC5vYmplY3RJRCgpOworICAgIG1fbGFz
dFNlbGVjdGlvbiA9IHNlbGVjdGlvbjsKKworICAgIHJldHVybiBpbnRlbnQ7Cit9CisKK3ZvaWQg
QVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFj
Y2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQm
IG9yaWdpbmFsSW50ZW50LCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiB7CiAg
ICAgaWYgKCFvYmplY3QpCiAgICAgICAgIG9iamVjdCA9IHJvb3RXZWJBcmVhKCk7CkBAIC01MTYs
NiArNTU0LDggQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZv
cm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCoKICAgICBwcm9jZXNzUXVldWVkSXNv
bGF0ZWROb2RlVXBkYXRlcygpOwogI2VuZGlmCiAKKyAgICBBWFRleHRTdGF0ZUNoYW5nZUludGVu
dCBpbnRlbnQgPSBpbmZlckRpcmVjdGlvbkZyb21JbnRlbnQoKm9iamVjdCwgb3JpZ2luYWxJbnRl
bnQsIHNlbGVjdGlvbik7CisKICAgICBhdXRvIHVzZXJJbmZvID0gYWRvcHROUyhbW05TTXV0YWJs
ZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6NV0pOwogICAgIGlmIChtX2lzU3lu
Y2hyb25pemluZ1NlbGVjdGlvbikKICAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpAWUVTIGZv
cktleTpOU0FjY2Vzc2liaWxpdHlUZXh0U3RhdGVTeW5jS2V5XTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2N1c3RvbS10ZXh0LWVkaXRvci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9jdXN0b20tdGV4dC1lZGl0b3ItZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzg4YmI0MjJh
N2ZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvY3Vz
dG9tLXRleHQtZWRpdG9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI0IEBACitUZXh0cyB0aGF0
IHdlIGluZmVyIGludGVudHMgd2hlbiBKUyBpcyB1c2VkIHRvIG1vdmUgdGhlIGN1cnNvciBpbiBh
IHRleHQgZWRpdG9yOyB0aGlzIHByYWN0aWNlIGlzIGNvbW1vbiBpbiBvbmxpbmUgY29kZSBlZGl0
b3JzLgorCitQQVNTOiBhZGRlZE5vdGlmaWNhdGlvbiA9PT0gdHJ1ZQorTW92ZSB0byAwCittb3Zl
IGRpc2NvbnRpZ3VvdXMKK01vdmUgdG8gMQorbW92ZSBuZXh0IGNoYXJhY3RlcgorTW92ZSB0byAy
Cittb3ZlIG5leHQgY2hhcmFjdGVyCitNb3ZlIHRvIDMKK21vdmUgbmV4dCBjaGFyYWN0ZXIKK01v
dmUgdG8gNAorbW92ZSBuZXh0IGNoYXJhY3RlcgorTW92ZSB0byA2Cittb3ZlIG5leHQgY2hhcmFj
dGVyCitNb3ZlIHRvIDgKK21vdmUgZGlzY29udGlndW91cworTW92ZSB0byA5Cittb3ZlIG5leHQg
Y2hhcmFjdGVyCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9jdXN0b20t
dGV4dC1lZGl0b3IuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2N1c3RvbS10
ZXh0LWVkaXRvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
MGRkMzZjMzJjZWRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvY3VzdG9tLXRleHQtZWRpdG9yLmh0bWwKQEAgLTAsMCArMSw5MSBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWNjZXNz
aWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8dGV4dGFyZWEgYXV0
b2ZvY3VzIGlkPSJ0ZXh0IiByb2xlPSJ0ZXh0Ym94Ij5UZXh08J+YgGFyZWEgd2l0aCBjdXN0b20g
Y3Vyc29yIGhhbmRsaW5nPC90ZXh0YXJlYT4KKworPHNjcmlwdD4KK3ZhciBvdXRwdXQgPSAiVGV4
dHMgdGhhdCB3ZSBpbmZlciBpbnRlbnRzIHdoZW4gSlMgaXMgdXNlZCB0byBtb3ZlIHRoZSBjdXJz
b3IgaW4gYSB0ZXh0IGVkaXRvcjsgdGhpcyBwcmFjdGljZSBpcyBjb21tb24gaW4gb25saW5lIGNv
ZGUgZWRpdG9ycy5cblxuIjsKKworY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9u
TW92ZSA9IDI7Citjb25zdCBBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25FeHRlbmQgPSBB
WFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlICsgMTsKKworY29uc3QgQVhUZXh0U2Vs
ZWN0aW9uRGlyZWN0aW9uQmVnaW5uaW5nID0gMTsKK2NvbnN0IEFYVGV4dFNlbGVjdGlvbkRpcmVj
dGlvbkVuZCA9IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkJlZ2lubmluZyArIDE7Citjb25zdCBB
WFRleHRTZWxlY3Rpb25EaXJlY3Rpb25QcmV2aW91cyA9IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlv
bkVuZCArIDE7Citjb25zdCBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25OZXh0ID0gQVhUZXh0U2Vs
ZWN0aW9uRGlyZWN0aW9uUHJldmlvdXMgKyAxOworY29uc3QgQVhUZXh0U2VsZWN0aW9uRGlyZWN0
aW9uRGlzY29udGlndW91cyA9IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbk5leHQgKyAxOworCitj
b25zdCBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eUNoYXJhY3RlciA9IDE7CisKK2Z1bmN0aW9u
IG5vdGlmaWNhdGlvbkNhbGxiYWNrKG5vdGlmaWNhdGlvbiwgdXNlckluZm8pIHsKKyAgICBsZXQg
c3RyID0gIiI7CisgICAgaWYgKG5vdGlmaWNhdGlvbiA9PSAiQVhTZWxlY3RlZFRleHRDaGFuZ2Vk
IikgeworICAgICAgICBsZXQgdHlwZSA9IHVzZXJJbmZvWyJBWFRleHRTdGF0ZUNoYW5nZVR5cGUi
XTsKKyAgICAgICAgaWYgKHR5cGUgPT0gQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uTW92
ZSkKKyAgICAgICAgICAgIHN0ciArPSAibW92ZSI7CisKKyAgICAgICAgbGV0IGRpciA9IHVzZXJJ
bmZvWyJBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb24iXTsKKyAgICAgICAgaWYgKGRpciA9PSBBWFRl
eHRTZWxlY3Rpb25EaXJlY3Rpb25OZXh0KQorICAgICAgICAgICAgc3RyICs9ICIgbmV4dCI7Cisg
ICAgICAgIGVsc2UgaWYgKGRpciA9PSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25QcmV2aW91cykK
KyAgICAgICAgICAgIHN0ciArPSAiIHByZXZpb3VzIjsKKyAgICAgICAgZWxzZSBpZiAoZGlyID09
IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkRpc2NvbnRpZ3VvdXMpCisgICAgICAgICAgICBzdHIg
Kz0gIiBkaXNjb250aWd1b3VzIjsKKworICAgICAgICBsZXQgZ3JhbnVsYXJpdHkgPSB1c2VySW5m
b1siQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHkiXTsKKyAgICAgICAgaWYgKGdyYW51bGFyaXR5
ID09IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5Q2hhcmFjdGVyKQorICAgICAgICAgICAgc3Ry
ICs9ICIgY2hhcmFjdGVyIjsKKworICAgICAgICBzdHIgKz0gIlxuIjsKKyAgICAgICAgb3V0cHV0
ICs9IHN0cjsKKworICAgICAgICBpZiAocmVzb2x2ZU5vdGlmaWNhdGlvblByb21pc2UpCisgICAg
ICAgICAgICByZXNvbHZlTm90aWZpY2F0aW9uUHJvbWlzZSgpOworICAgIH0KK30KKworYXN5bmMg
ZnVuY3Rpb24gbW92ZUFuZFdhaXRGb3JOb3RpZmljYXRpb24ob2Zmc2V0KSB7CisgICAgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0Iik7CisgICAgb3V0cHV0ICs9ICJNb3ZlIHRv
ICIgKyBvZmZzZXQgKyAiXG4iOworICAgIGxldCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29s
dmUsIHJlamVjdCkgPT4geworICAgICAgICByZXNvbHZlTm90aWZpY2F0aW9uUHJvbWlzZSA9IHJl
c29sdmU7CisgICAgfSk7CisgICAgdGV4dC5zZXRTZWxlY3Rpb25SYW5nZShvZmZzZXQsIG9mZnNl
dCk7CisgICAgYXdhaXQgcHJvbWlzZTsKKyAgICByZXNvbHZlTm90aWZpY2F0aW9uUHJvbWlzZSA9
IG51bGw7Cit9CisKK2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5lbmFibGVFbmhhbmNlZEFjY2Vzc2liaWxpdHkodHJ1ZSk7CisKKyAgICB3ZWJBcmVhID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIucm9vdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgIHZh
ciBhZGRlZE5vdGlmaWNhdGlvbiA9IHdlYkFyZWEuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIobm90
aWZpY2F0aW9uQ2FsbGJhY2spOworICAgIG91dHB1dCArPSBleHBlY3QoImFkZGVkTm90aWZpY2F0
aW9uIiwgInRydWUiKTsKKworICAgIHNldFRpbWVvdXQoYXN5bmMgZnVuY3Rpb24oKSB7CisgICAg
ICAgIGF3YWl0IG1vdmVBbmRXYWl0Rm9yTm90aWZpY2F0aW9uKDApOworICAgICAgICBhd2FpdCBt
b3ZlQW5kV2FpdEZvck5vdGlmaWNhdGlvbigxKTsKKyAgICAgICAgYXdhaXQgbW92ZUFuZFdhaXRG
b3JOb3RpZmljYXRpb24oMik7CisgICAgICAgIGF3YWl0IG1vdmVBbmRXYWl0Rm9yTm90aWZpY2F0
aW9uKDMpOworICAgICAgICBhd2FpdCBtb3ZlQW5kV2FpdEZvck5vdGlmaWNhdGlvbig0KTsKKwor
ICAgICAgICBhd2FpdCBtb3ZlQW5kV2FpdEZvck5vdGlmaWNhdGlvbig2KTsgIC8vIE5vdGUgc2lu
Z2xlIGNoYXJhY3RlciAoZW1vamkpCisKKyAgICAgICAgYXdhaXQgbW92ZUFuZFdhaXRGb3JOb3Rp
ZmljYXRpb24oOCk7ICAvLyBEaXNjb250aWd1b3VzCisgICAgICAgIGF3YWl0IG1vdmVBbmRXYWl0
Rm9yTm90aWZpY2F0aW9uKDkpOworCisgICAgICAgIGRlYnVnKG91dHB1dCk7CisgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgIH0sIDApOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>470292</attachid>
            <date>2024-03-11 08:40:50 -0700</date>
            <delta_ts>2024-03-11 13:16:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-270616-20240311084049.patch</filename>
            <type>text/plain</type>
            <size>9691</size>
            <attacher name="Dominic Mazzoni">dm_mazzoni</attacher>
            
              <data encoding="base64">RnJvbSBiZDJjNTNiNmFiY2FjNWJiMzZlNTc4OTY5MmEwMTk4M2I1MzVhOTc5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEb21pbmljIE1henpvbmkgPGRtX21henpvbmlAYXBwbGUuY29t
PgpEYXRlOiBUaHUsIDcgTWFyIDIwMjQgMTM6MzM6MDAgLTA4MDAKU3ViamVjdDogW1BBVENIXSBB
WDogVm9pY2VPdmVyIGRvZXNuJ3QgcmVhZCBjaGFyYWN0ZXJzIHdoZW4gdXNlciBwcmVzc2VzIGxl
ZnQKIC8gcmlnaHQgYXJyb3dzIGluIE1vbmFjbyBjb2RlIGVkaXRvcgogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3MDYxNiByZGFyOi8vMTIzOTg0MTY4CgpSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KCldoZW4gdGhlIGNoYXJhY3RlciBvciBzZWxlY3Rpb24gZXh0
ZW50IG1vdmVzIGJ5IGp1c3Qgb25lIHZpc2libGUgcG9zaXRpb24sIGluZmVyCnRoYXQgaXQgd2Fz
IGEgY2hhcmFjdGVyIGdyYW51bGFyaXR5IG1vdmUsIHJhdGhlciB0aGFuIGEgZGlzY29udGlndW91
cyBzZWxlY3Rpb24uCgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2N1c3RvbS10ZXh0
LWVkaXRvci1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
bWFjL2N1c3RvbS10ZXh0LWVkaXRvci5odG1sOiBBZGRlZC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9BWE9iamVjdENhY2hlTWFjLm1tOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aW5mZXJE
aXJlY3Rpb25Gcm9tSW50ZW50KToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3Rh
dGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbik6Ci0tLQogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmggIHwgIDcgKysKIC4uLi9hY2Nlc3NpYmlsaXR5L21hYy9B
WE9iamVjdENhY2hlTWFjLm1tICAgICB8IDQyICsrKysrKysrLQogLi4uL21hYy9jdXN0b20tdGV4
dC1lZGl0b3ItZXhwZWN0ZWQudHh0ICAgICAgIHwgMjQgKysrKysKIC4uLi9hY2Nlc3NpYmlsaXR5
L21hYy9jdXN0b20tdGV4dC1lZGl0b3IuaHRtbCB8IDkxICsrKysrKysrKysrKysrKysrKysKIDQg
ZmlsZXMgY2hhbmdlZCwgMTYzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9jdXN0b20tdGV4dC1lZGl0
b3ItZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvY3VzdG9tLXRleHQtZWRpdG9yLmh0bWwKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IDNmNGI3Zjc2NDM2NC4uYjliZDdhMGVjYWYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAt
Nzc4LDYgKzc3OCwxMyBAQCBwcml2YXRlOgogI2lmIFVTRShBVFNQSSkKICAgICBMaXN0SGFzaFNl
dDxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gbV9kZWZlcnJlZFBhcmVudENoYW5nZWRMaXN0OwogI2Vu
ZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBBWElEIG1fbGFzdFRleHRGaWVsZEFYSUQ7
CisgICAgVmlzaWJsZVNlbGVjdGlvbiBtX2xhc3RTZWxlY3Rpb247CisKKyAgICBBWFRleHRTdGF0
ZUNoYW5nZUludGVudCBpbmZlckRpcmVjdGlvbkZyb21JbnRlbnQoQWNjZXNzaWJpbGl0eU9iamVj
dCYsIGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYpOworI2VuZGlmCiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KaW5kZXggYTA2
ODAxNWRmY2Y4Li5hOTIxNWRkOTk2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQpAQCAtNTA2LDcgKzUwNiw0NSBAQCBz
dGF0aWMgdm9pZCBjcmVhdGVJc29sYXRlZE9iamVjdElmTmVlZGVkKEFjY2Vzc2liaWxpdHlPYmpl
Y3QmIG9iamVjdCwgc3RkOjpvcHRpbwogfQogI2VuZGlmCiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6
cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG9iamVjdCwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmIGludGVudCwgY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQorQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgQVhP
YmplY3RDYWNoZTo6aW5mZXJEaXJlY3Rpb25Gcm9tSW50ZW50KEFjY2Vzc2liaWxpdHlPYmplY3Qm
IG9iamVjdCwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmIG9yaWdpbmFsSW50ZW50LCBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCit7CisgICAgaWYgKCFvYmplY3QuaXNU
ZXh0Q29udHJvbCgpICYmICFvYmplY3QuZWRpdGFibGVBbmNlc3RvcigpKQorICAgICAgICByZXR1
cm4gb3JpZ2luYWxJbnRlbnQ7CisKKyAgICBBWFRleHRTdGF0ZUNoYW5nZUludGVudCBpbnRlbnQg
PSBvcmlnaW5hbEludGVudDsKKyAgICBpZiAoaW50ZW50LnNlbGVjdGlvbi5kaXJlY3Rpb24gPT0g
QVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRGlzY29udGlndW91cyAmJiBvYmplY3Qub2JqZWN0SUQo
KSA9PSBtX2xhc3RUZXh0RmllbGRBWElEICYmIG1fbGFzdFNlbGVjdGlvbiAhPSBzZWxlY3Rpb24p
IHsKKyAgICAgICAgaWYgKG1fbGFzdFNlbGVjdGlvbi5pc0NhcmV0KCkgJiYgc2VsZWN0aW9uLmlz
Q2FyZXQoKSkgeworICAgICAgICAgICAgLy8gQ3Vyc29yIG1vdmVtZW50CisgICAgICAgICAgICBp
ZiAoc2VsZWN0aW9uLnZpc2libGVTdGFydCgpID09IG1fbGFzdFNlbGVjdGlvbi52aXNpYmxlU3Rh
cnQoKS5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KSkgeworICAgICAgICAgICAgICAg
IGludGVudC50eXBlID0gQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uTW92ZTsKKyAgICAg
ICAgICAgICAgICBpbnRlbnQuc2VsZWN0aW9uLmRpcmVjdGlvbiA9IEFYVGV4dFNlbGVjdGlvbkRp
cmVjdGlvbk5leHQ7CisgICAgICAgICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5ncmFudWxhcml0
eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5Q2hhcmFjdGVyOworICAgICAgICAgICAgfSBl
bHNlIGlmIChzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkgPT0gbV9sYXN0U2VsZWN0aW9uLnZpc2li
bGVTdGFydCgpLnByZXZpb3VzKENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KSkgeworICAgICAg
ICAgICAgICAgIGludGVudC50eXBlID0gQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uTW92
ZTsKKyAgICAgICAgICAgICAgICBpbnRlbnQuc2VsZWN0aW9uLmRpcmVjdGlvbiA9IEFYVGV4dFNl
bGVjdGlvbkRpcmVjdGlvblByZXZpb3VzOworICAgICAgICAgICAgICAgIGludGVudC5zZWxlY3Rp
b24uZ3JhbnVsYXJpdHkgPSBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eUNoYXJhY3RlcjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChzZWxlY3Rpb24udmlzaWJsZUJhc2UoKSA9
PSBtX2xhc3RTZWxlY3Rpb24udmlzaWJsZUJhc2UoKSkgeworICAgICAgICAgICAgLy8gU2VsZWN0
aW9uCisgICAgICAgICAgICBpZiAoc2VsZWN0aW9uLnZpc2libGVFeHRlbnQoKSA9PSBtX2xhc3RT
ZWxlY3Rpb24udmlzaWJsZUV4dGVudCgpLm5leHQoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkp
KSB7CisgICAgICAgICAgICAgICAgaW50ZW50LnR5cGUgPSBBWFRleHRTdGF0ZUNoYW5nZVR5cGVT
ZWxlY3Rpb25FeHRlbmQ7CisgICAgICAgICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5kaXJlY3Rp
b24gPSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25OZXh0OworICAgICAgICAgICAgICAgIGludGVu
dC5zZWxlY3Rpb24uZ3JhbnVsYXJpdHkgPSBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eUNoYXJh
Y3RlcjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uLnZpc2libGVFeHRlbnQoKSA9
PSBtX2xhc3RTZWxlY3Rpb24udmlzaWJsZUV4dGVudCgpLnByZXZpb3VzKENhbm5vdENyb3NzRWRp
dGluZ0JvdW5kYXJ5KSkgeworICAgICAgICAgICAgICAgIGludGVudC50eXBlID0gQVhUZXh0U3Rh
dGVDaGFuZ2VUeXBlU2VsZWN0aW9uRXh0ZW5kOworICAgICAgICAgICAgICAgIGludGVudC5zZWxl
Y3Rpb24uZGlyZWN0aW9uID0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uUHJldmlvdXM7CisgICAg
ICAgICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5ncmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlv
bkdyYW51bGFyaXR5Q2hhcmFjdGVyOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CisgICAgbV9sYXN0VGV4dEZpZWxkQVhJRCA9IG9iamVjdC5vYmplY3RJRCgpOworICAgIG1fbGFz
dFNlbGVjdGlvbiA9IHNlbGVjdGlvbjsKKworICAgIHJldHVybiBpbnRlbnQ7Cit9CisKK3ZvaWQg
QVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFj
Y2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQm
IG9yaWdpbmFsSW50ZW50LCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiB7CiAg
ICAgaWYgKCFvYmplY3QpCiAgICAgICAgIG9iamVjdCA9IHJvb3RXZWJBcmVhKCk7CkBAIC01MTks
NiArNTU3LDggQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZv
cm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCoKICAgICBwcm9jZXNzUXVldWVkSXNv
bGF0ZWROb2RlVXBkYXRlcygpOwogI2VuZGlmCiAKKyAgICBBWFRleHRTdGF0ZUNoYW5nZUludGVu
dCBpbnRlbnQgPSBpbmZlckRpcmVjdGlvbkZyb21JbnRlbnQoKm9iamVjdCwgb3JpZ2luYWxJbnRl
bnQsIHNlbGVjdGlvbik7CisKICAgICBhdXRvIHVzZXJJbmZvID0gYWRvcHROUyhbW05TTXV0YWJs
ZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6NV0pOwogICAgIGlmIChtX2lzU3lu
Y2hyb25pemluZ1NlbGVjdGlvbikKICAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpAWUVTIGZv
cktleTpOU0FjY2Vzc2liaWxpdHlUZXh0U3RhdGVTeW5jS2V5XTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2N1c3RvbS10ZXh0LWVkaXRvci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9jdXN0b20tdGV4dC1lZGl0b3ItZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzg4YmI0MjJh
N2ZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvY3Vz
dG9tLXRleHQtZWRpdG9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI0IEBACitUZXh0cyB0aGF0
IHdlIGluZmVyIGludGVudHMgd2hlbiBKUyBpcyB1c2VkIHRvIG1vdmUgdGhlIGN1cnNvciBpbiBh
IHRleHQgZWRpdG9yOyB0aGlzIHByYWN0aWNlIGlzIGNvbW1vbiBpbiBvbmxpbmUgY29kZSBlZGl0
b3JzLgorCitQQVNTOiBhZGRlZE5vdGlmaWNhdGlvbiA9PT0gdHJ1ZQorTW92ZSB0byAwCittb3Zl
IGRpc2NvbnRpZ3VvdXMKK01vdmUgdG8gMQorbW92ZSBuZXh0IGNoYXJhY3RlcgorTW92ZSB0byAy
Cittb3ZlIG5leHQgY2hhcmFjdGVyCitNb3ZlIHRvIDMKK21vdmUgbmV4dCBjaGFyYWN0ZXIKK01v
dmUgdG8gNAorbW92ZSBuZXh0IGNoYXJhY3RlcgorTW92ZSB0byA2Cittb3ZlIG5leHQgY2hhcmFj
dGVyCitNb3ZlIHRvIDgKK21vdmUgZGlzY29udGlndW91cworTW92ZSB0byA5Cittb3ZlIG5leHQg
Y2hhcmFjdGVyCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9jdXN0b20t
dGV4dC1lZGl0b3IuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2N1c3RvbS10
ZXh0LWVkaXRvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
MGRkMzZjMzJjZWRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvY3VzdG9tLXRleHQtZWRpdG9yLmh0bWwKQEAgLTAsMCArMSw5MSBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxt
ZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWNjZXNz
aWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8dGV4dGFyZWEgYXV0
b2ZvY3VzIGlkPSJ0ZXh0IiByb2xlPSJ0ZXh0Ym94Ij5UZXh08J+YgGFyZWEgd2l0aCBjdXN0b20g
Y3Vyc29yIGhhbmRsaW5nPC90ZXh0YXJlYT4KKworPHNjcmlwdD4KK3ZhciBvdXRwdXQgPSAiVGV4
dHMgdGhhdCB3ZSBpbmZlciBpbnRlbnRzIHdoZW4gSlMgaXMgdXNlZCB0byBtb3ZlIHRoZSBjdXJz
b3IgaW4gYSB0ZXh0IGVkaXRvcjsgdGhpcyBwcmFjdGljZSBpcyBjb21tb24gaW4gb25saW5lIGNv
ZGUgZWRpdG9ycy5cblxuIjsKKworY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9u
TW92ZSA9IDI7Citjb25zdCBBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25FeHRlbmQgPSBB
WFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlICsgMTsKKworY29uc3QgQVhUZXh0U2Vs
ZWN0aW9uRGlyZWN0aW9uQmVnaW5uaW5nID0gMTsKK2NvbnN0IEFYVGV4dFNlbGVjdGlvbkRpcmVj
dGlvbkVuZCA9IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkJlZ2lubmluZyArIDE7Citjb25zdCBB
WFRleHRTZWxlY3Rpb25EaXJlY3Rpb25QcmV2aW91cyA9IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlv
bkVuZCArIDE7Citjb25zdCBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25OZXh0ID0gQVhUZXh0U2Vs
ZWN0aW9uRGlyZWN0aW9uUHJldmlvdXMgKyAxOworY29uc3QgQVhUZXh0U2VsZWN0aW9uRGlyZWN0
aW9uRGlzY29udGlndW91cyA9IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbk5leHQgKyAxOworCitj
b25zdCBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eUNoYXJhY3RlciA9IDE7CisKK2Z1bmN0aW9u
IG5vdGlmaWNhdGlvbkNhbGxiYWNrKG5vdGlmaWNhdGlvbiwgdXNlckluZm8pIHsKKyAgICBsZXQg
c3RyID0gIiI7CisgICAgaWYgKG5vdGlmaWNhdGlvbiA9PSAiQVhTZWxlY3RlZFRleHRDaGFuZ2Vk
IikgeworICAgICAgICBsZXQgdHlwZSA9IHVzZXJJbmZvWyJBWFRleHRTdGF0ZUNoYW5nZVR5cGUi
XTsKKyAgICAgICAgaWYgKHR5cGUgPT0gQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uTW92
ZSkKKyAgICAgICAgICAgIHN0ciArPSAibW92ZSI7CisKKyAgICAgICAgbGV0IGRpciA9IHVzZXJJ
bmZvWyJBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb24iXTsKKyAgICAgICAgaWYgKGRpciA9PSBBWFRl
eHRTZWxlY3Rpb25EaXJlY3Rpb25OZXh0KQorICAgICAgICAgICAgc3RyICs9ICIgbmV4dCI7Cisg
ICAgICAgIGVsc2UgaWYgKGRpciA9PSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25QcmV2aW91cykK
KyAgICAgICAgICAgIHN0ciArPSAiIHByZXZpb3VzIjsKKyAgICAgICAgZWxzZSBpZiAoZGlyID09
IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkRpc2NvbnRpZ3VvdXMpCisgICAgICAgICAgICBzdHIg
Kz0gIiBkaXNjb250aWd1b3VzIjsKKworICAgICAgICBsZXQgZ3JhbnVsYXJpdHkgPSB1c2VySW5m
b1siQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHkiXTsKKyAgICAgICAgaWYgKGdyYW51bGFyaXR5
ID09IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5Q2hhcmFjdGVyKQorICAgICAgICAgICAgc3Ry
ICs9ICIgY2hhcmFjdGVyIjsKKworICAgICAgICBzdHIgKz0gIlxuIjsKKyAgICAgICAgb3V0cHV0
ICs9IHN0cjsKKworICAgICAgICBpZiAocmVzb2x2ZU5vdGlmaWNhdGlvblByb21pc2UpCisgICAg
ICAgICAgICByZXNvbHZlTm90aWZpY2F0aW9uUHJvbWlzZSgpOworICAgIH0KK30KKworYXN5bmMg
ZnVuY3Rpb24gbW92ZUFuZFdhaXRGb3JOb3RpZmljYXRpb24ob2Zmc2V0KSB7CisgICAgdGV4dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0Iik7CisgICAgb3V0cHV0ICs9ICJNb3ZlIHRv
ICIgKyBvZmZzZXQgKyAiXG4iOworICAgIGxldCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29s
dmUsIHJlamVjdCkgPT4geworICAgICAgICByZXNvbHZlTm90aWZpY2F0aW9uUHJvbWlzZSA9IHJl
c29sdmU7CisgICAgfSk7CisgICAgdGV4dC5zZXRTZWxlY3Rpb25SYW5nZShvZmZzZXQsIG9mZnNl
dCk7CisgICAgYXdhaXQgcHJvbWlzZTsKKyAgICByZXNvbHZlTm90aWZpY2F0aW9uUHJvbWlzZSA9
IG51bGw7Cit9CisKK2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5lbmFibGVFbmhhbmNlZEFjY2Vzc2liaWxpdHkodHJ1ZSk7CisKKyAgICB3ZWJBcmVhID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIucm9vdEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOworICAgIHZh
ciBhZGRlZE5vdGlmaWNhdGlvbiA9IHdlYkFyZWEuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIobm90
aWZpY2F0aW9uQ2FsbGJhY2spOworICAgIG91dHB1dCArPSBleHBlY3QoImFkZGVkTm90aWZpY2F0
aW9uIiwgInRydWUiKTsKKworICAgIHNldFRpbWVvdXQoYXN5bmMgZnVuY3Rpb24oKSB7CisgICAg
ICAgIGF3YWl0IG1vdmVBbmRXYWl0Rm9yTm90aWZpY2F0aW9uKDApOworICAgICAgICBhd2FpdCBt
b3ZlQW5kV2FpdEZvck5vdGlmaWNhdGlvbigxKTsKKyAgICAgICAgYXdhaXQgbW92ZUFuZFdhaXRG
b3JOb3RpZmljYXRpb24oMik7CisgICAgICAgIGF3YWl0IG1vdmVBbmRXYWl0Rm9yTm90aWZpY2F0
aW9uKDMpOworICAgICAgICBhd2FpdCBtb3ZlQW5kV2FpdEZvck5vdGlmaWNhdGlvbig0KTsKKwor
ICAgICAgICBhd2FpdCBtb3ZlQW5kV2FpdEZvck5vdGlmaWNhdGlvbig2KTsgIC8vIE5vdGUgc2lu
Z2xlIGNoYXJhY3RlciAoZW1vamkpCisKKyAgICAgICAgYXdhaXQgbW92ZUFuZFdhaXRGb3JOb3Rp
ZmljYXRpb24oOCk7ICAvLyBEaXNjb250aWd1b3VzCisgICAgICAgIGF3YWl0IG1vdmVBbmRXYWl0
Rm9yTm90aWZpY2F0aW9uKDkpOworCisgICAgICAgIGRlYnVnKG91dHB1dCk7CisgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgIH0sIDApOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>470299</attachid>
            <date>2024-03-11 13:16:43 -0700</date>
            <delta_ts>2024-03-12 14:44:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-270616-20240311131642.patch</filename>
            <type>text/plain</type>
            <size>9880</size>
            <attacher name="Dominic Mazzoni">dm_mazzoni</attacher>
            
              <data encoding="base64">RnJvbSA1YTJhNzJhZDgzOTkxMGY0MGRjOTZhNjk0NTcxYmVjZTliZTNjNDBhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEb21pbmljIE1henpvbmkgPGRtX21henpvbmlAYXBwbGUuY29t
PgpEYXRlOiBUaHUsIDcgTWFyIDIwMjQgMTM6MzM6MDAgLTA4MDAKU3ViamVjdDogW1BBVENIXSBB
WDogVm9pY2VPdmVyIGRvZXNuJ3QgcmVhZCBjaGFyYWN0ZXJzIHdoZW4gdXNlciBwcmVzc2VzIGxl
ZnQKIC8gcmlnaHQgYXJyb3dzIGluIE1vbmFjbyBjb2RlIGVkaXRvcgogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3MDYxNiByZGFyOi8vMTIzOTg0MTY4CgpSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KCldoZW4gdGhlIGNoYXJhY3RlciBvciBzZWxlY3Rpb24gZXh0
ZW50IG1vdmVzIGJ5IGp1c3Qgb25lIHZpc2libGUgcG9zaXRpb24sIGluZmVyCnRoYXQgaXQgd2Fz
IGEgY2hhcmFjdGVyIGdyYW51bGFyaXR5IG1vdmUsIHJhdGhlciB0aGFuIGEgZGlzY29udGlndW91
cyBzZWxlY3Rpb24uCgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2N1c3RvbS10ZXh0
LWVkaXRvci1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
bWFjL2N1c3RvbS10ZXh0LWVkaXRvci5odG1sOiBBZGRlZC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9BWE9iamVjdENhY2hlTWFjLm1tOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aW5mZXJE
aXJlY3Rpb25Gcm9tSW50ZW50KToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3Rh
dGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbik6Ci0tLQogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmggIHwgIDkgKysKIC4uLi9hY2Nlc3NpYmlsaXR5L21hYy9B
WE9iamVjdENhY2hlTWFjLm1tICAgICB8IDQ2ICsrKysrKysrKy0KIC4uLi9tYWMvY3VzdG9tLXRl
eHQtZWRpdG9yLWV4cGVjdGVkLnR4dCAgICAgICB8IDI0ICsrKysrCiAuLi4vYWNjZXNzaWJpbGl0
eS9tYWMvY3VzdG9tLXRleHQtZWRpdG9yLmh0bWwgfCA5MiArKysrKysrKysrKysrKysrKysrCiA0
IGZpbGVzIGNoYW5nZWQsIDE3MCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUg
bW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvY3VzdG9tLXRleHQtZWRp
dG9yLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvbWFjL2N1c3RvbS10ZXh0LWVkaXRvci5odG1sCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCAzZjRiN2Y3NjQzNjQuLjRiOWUxYzZiZGJk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAg
LTY4OSw2ICs2ODksMTAgQEAgcHJpdmF0ZToKICAgICBjb25zdCBIYXNoU2V0PEFYSUQ+JiByZWxh
dGlvblRhcmdldElEcygpOwogICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZSZWxhdGVkTm9kZShOb2Rl
Jik7CiAKKyNpZiBQTEFURk9STShNQUMpCisgICAgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgaW5m
ZXJEaXJlY3Rpb25Gcm9tSW50ZW50KEFjY2Vzc2liaWxpdHlPYmplY3QmLCBjb25zdCBBWFRleHRT
dGF0ZUNoYW5nZUludGVudCYsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKKyNlbmRpZgorCiAg
ICAgLy8gT2JqZWN0IGNyZWF0aW9uLgogICAgIFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBjcmVh
dGVPYmplY3RGcm9tUmVuZGVyZXIoUmVuZGVyT2JqZWN0Kik7CiAKQEAgLTc3OCw2ICs3ODIsMTEg
QEAgcHJpdmF0ZToKICNpZiBVU0UoQVRTUEkpCiAgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPEFYQ29y
ZU9iamVjdD4+IG1fZGVmZXJyZWRQYXJlbnRDaGFuZ2VkTGlzdDsKICNlbmRpZgorCisjaWYgUExB
VEZPUk0oTUFDKQorICAgIEFYSUQgbV9sYXN0VGV4dEZpZWxkQVhJRDsKKyAgICBWaXNpYmxlU2Vs
ZWN0aW9uIG1fbGFzdFNlbGVjdGlvbjsKKyNlbmRpZgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
VT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0
Q2FjaGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENh
Y2hlTWFjLm1tCmluZGV4IGEwNjgwMTVkZmNmOC4uOTc2OGRhYTM1M2U1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KQEAg
LTUwNiw3ICs1MDYsNDkgQEAgc3RhdGljIHZvaWQgY3JlYXRlSXNvbGF0ZWRPYmplY3RJZk5lZWRl
ZChBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QsIHN0ZDo6b3B0aW8KIH0KICNlbmRpZgogCi12
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlv
bihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50
ZW50JiBpbnRlbnQsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKK0FYVGV4dFN0
YXRlQ2hhbmdlSW50ZW50IEFYT2JqZWN0Q2FjaGU6OmluZmVyRGlyZWN0aW9uRnJvbUludGVudChB
Y2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QsIGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50
JiBvcmlnaW5hbEludGVudCwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQorewor
ICAgIGlmICghb2JqZWN0LmlzVGV4dENvbnRyb2woKSAmJiAhb2JqZWN0LmVkaXRhYmxlQW5jZXN0
b3IoKSkKKyAgICAgICAgcmV0dXJuIG9yaWdpbmFsSW50ZW50OworCisgICAgaWYgKG9yaWdpbmFs
SW50ZW50LnNlbGVjdGlvbi5kaXJlY3Rpb24gIT0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRGlz
Y29udGlndW91cyB8fCBvYmplY3Qub2JqZWN0SUQoKSAhPSBtX2xhc3RUZXh0RmllbGRBWElEIHx8
IG1fbGFzdFNlbGVjdGlvbiA9PSBzZWxlY3Rpb24pIHsKKyAgICAgICAgbV9sYXN0VGV4dEZpZWxk
QVhJRCA9IG9iamVjdC5vYmplY3RJRCgpOworICAgICAgICBtX2xhc3RTZWxlY3Rpb24gPSBzZWxl
Y3Rpb247CisgICAgICAgIHJldHVybiBvcmlnaW5hbEludGVudDsKKyAgICB9CisKKyAgICBhdXRv
IGludGVudCA9IG9yaWdpbmFsSW50ZW50OworICAgIGlmIChtX2xhc3RTZWxlY3Rpb24uaXNDYXJl
dCgpICYmIHNlbGVjdGlvbi5pc0NhcmV0KCkpIHsKKyAgICAgICAgLy8gQ3Vyc29yIG1vdmVtZW50
CisgICAgICAgIGlmIChzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkgPT0gbV9sYXN0U2VsZWN0aW9u
LnZpc2libGVTdGFydCgpLm5leHQoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpKSB7CisgICAg
ICAgICAgICBpbnRlbnQudHlwZSA9IEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbk1vdmU7
CisgICAgICAgICAgICBpbnRlbnQuc2VsZWN0aW9uLmRpcmVjdGlvbiA9IEFYVGV4dFNlbGVjdGlv
bkRpcmVjdGlvbk5leHQ7CisgICAgICAgICAgICBpbnRlbnQuc2VsZWN0aW9uLmdyYW51bGFyaXR5
ID0gQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlDaGFyYWN0ZXI7CisgICAgICAgIH0gZWxzZSBp
ZiAoc2VsZWN0aW9uLnZpc2libGVTdGFydCgpID09IG1fbGFzdFNlbGVjdGlvbi52aXNpYmxlU3Rh
cnQoKS5wcmV2aW91cyhDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSkpIHsKKyAgICAgICAgICAg
IGludGVudC50eXBlID0gQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uTW92ZTsKKyAgICAg
ICAgICAgIGludGVudC5zZWxlY3Rpb24uZGlyZWN0aW9uID0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0
aW9uUHJldmlvdXM7CisgICAgICAgICAgICBpbnRlbnQuc2VsZWN0aW9uLmdyYW51bGFyaXR5ID0g
QVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlDaGFyYWN0ZXI7CisgICAgICAgIH0KKyAgICB9IGVs
c2UgaWYgKHNlbGVjdGlvbi52aXNpYmxlQmFzZSgpID09IG1fbGFzdFNlbGVjdGlvbi52aXNpYmxl
QmFzZSgpKSB7CisgICAgICAgIC8vIFNlbGVjdGlvbgorICAgICAgICBpZiAoc2VsZWN0aW9uLnZp
c2libGVFeHRlbnQoKSA9PSBtX2xhc3RTZWxlY3Rpb24udmlzaWJsZUV4dGVudCgpLm5leHQoQ2Fu
bm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpKSB7CisgICAgICAgICAgICBpbnRlbnQudHlwZSA9IEFY
VGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbkV4dGVuZDsKKyAgICAgICAgICAgIGludGVudC5z
ZWxlY3Rpb24uZGlyZWN0aW9uID0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uTmV4dDsKKyAgICAg
ICAgICAgIGludGVudC5zZWxlY3Rpb24uZ3JhbnVsYXJpdHkgPSBBWFRleHRTZWxlY3Rpb25HcmFu
dWxhcml0eUNoYXJhY3RlcjsKKyAgICAgICAgfSBlbHNlIGlmIChzZWxlY3Rpb24udmlzaWJsZUV4
dGVudCgpID09IG1fbGFzdFNlbGVjdGlvbi52aXNpYmxlRXh0ZW50KCkucHJldmlvdXMoQ2Fubm90
Q3Jvc3NFZGl0aW5nQm91bmRhcnkpKSB7CisgICAgICAgICAgICBpbnRlbnQudHlwZSA9IEFYVGV4
dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbkV4dGVuZDsKKyAgICAgICAgICAgIGludGVudC5zZWxl
Y3Rpb24uZGlyZWN0aW9uID0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uUHJldmlvdXM7CisgICAg
ICAgICAgICBpbnRlbnQuc2VsZWN0aW9uLmdyYW51bGFyaXR5ID0gQVhUZXh0U2VsZWN0aW9uR3Jh
bnVsYXJpdHlDaGFyYWN0ZXI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX2xhc3RUZXh0Rmll
bGRBWElEID0gb2JqZWN0Lm9iamVjdElEKCk7CisgICAgbV9sYXN0U2VsZWN0aW9uID0gc2VsZWN0
aW9uOworCisgICAgcmV0dXJuIGludGVudDsKK30KKwordm9pZCBBWE9iamVjdENhY2hlOjpwb3N0
VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqZWN0LCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYgb3JpZ2luYWxJbnRlbnQsIGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKIHsKICAgICBpZiAoIW9iamVjdCkKICAg
ICAgICAgb2JqZWN0ID0gcm9vdFdlYkFyZWEoKTsKQEAgLTUxOSw2ICs1NjEsOCBAQCB2b2lkIEFY
T2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nl
c3NpYmlsaXR5T2JqZWN0KgogICAgIHByb2Nlc3NRdWV1ZWRJc29sYXRlZE5vZGVVcGRhdGVzKCk7
CiAjZW5kaWYKIAorICAgIGF1dG8gaW50ZW50ID0gaW5mZXJEaXJlY3Rpb25Gcm9tSW50ZW50KCpv
YmplY3QsIG9yaWdpbmFsSW50ZW50LCBzZWxlY3Rpb24pOworCiAgICAgYXV0byB1c2VySW5mbyA9
IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OjVd
KTsKICAgICBpZiAobV9pc1N5bmNocm9uaXppbmdTZWxlY3Rpb24pCiAgICAgICAgIFt1c2VySW5m
byBzZXRPYmplY3Q6QFlFUyBmb3JLZXk6TlNBY2Nlc3NpYmlsaXR5VGV4dFN0YXRlU3luY0tleV07
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9jdXN0b20tdGV4dC1l
ZGl0b3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvY3VzdG9t
LXRleHQtZWRpdG9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLmFkM2RjYjI1MDczMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbWFjL2N1c3RvbS10ZXh0LWVkaXRvci1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwyNCBAQAorVGVzdHMgdGhhdCB3ZSBpbmZlciBpbnRlbnRzIHdoZW4gSlMgaXMgdXNlZCB0byBt
b3ZlIHRoZSBjdXJzb3IgaW4gYSB0ZXh0IGVkaXRvcjsgdGhpcyBwcmFjdGljZSBpcyBjb21tb24g
aW4gb25saW5lIGNvZGUgZWRpdG9ycy4KKworUEFTUzogYWRkZWROb3RpZmljYXRpb24gPT09IHRy
dWUKK01vdmUgdG8gMAorbW92ZSBkaXNjb250aWd1b3VzCitNb3ZlIHRvIDEKK21vdmUgbmV4dCBj
aGFyYWN0ZXIKK01vdmUgdG8gMgorbW92ZSBuZXh0IGNoYXJhY3RlcgorTW92ZSB0byAzCittb3Zl
IG5leHQgY2hhcmFjdGVyCitNb3ZlIHRvIDQKK21vdmUgbmV4dCBjaGFyYWN0ZXIKK01vdmUgdG8g
NgorbW92ZSBuZXh0IGNoYXJhY3RlcgorTW92ZSB0byA4Cittb3ZlIGRpc2NvbnRpZ3VvdXMKK01v
dmUgdG8gOQorbW92ZSBuZXh0IGNoYXJhY3RlcgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9tYWMvY3VzdG9tLXRleHQtZWRpdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy9jdXN0b20tdGV4dC1lZGl0b3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjUyMjBkMDc0MDFmZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2N1c3RvbS10ZXh0LWVkaXRvci5odG1sCkBAIC0wLDAg
KzEsOTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKworPHRleHRhcmVhIGF1dG9mb2N1cyBpZD0idGV4dCIgcm9sZT0idGV4dGJveCI+VGV4dPCf
mIBhcmVhIHdpdGggY3VzdG9tIGN1cnNvciBoYW5kbGluZzwvdGV4dGFyZWE+CisKKzxzY3JpcHQ+
Cit2YXIgb3V0cHV0ID0gIlRlc3RzIHRoYXQgd2UgaW5mZXIgaW50ZW50cyB3aGVuIEpTIGlzIHVz
ZWQgdG8gbW92ZSB0aGUgY3Vyc29yIGluIGEgdGV4dCBlZGl0b3I7IHRoaXMgcHJhY3RpY2UgaXMg
Y29tbW9uIGluIG9ubGluZSBjb2RlIGVkaXRvcnMuXG5cbiI7CisKK2NvbnN0IEFYVGV4dFN0YXRl
Q2hhbmdlVHlwZVNlbGVjdGlvbk1vdmUgPSAyOworY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VUeXBl
U2VsZWN0aW9uRXh0ZW5kID0gQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uTW92ZSArIDE7
CisKK2NvbnN0IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkJlZ2lubmluZyA9IDE7Citjb25zdCBB
WFRleHRTZWxlY3Rpb25EaXJlY3Rpb25FbmQgPSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25CZWdp
bm5pbmcgKyAxOworY29uc3QgQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uUHJldmlvdXMgPSBBWFRl
eHRTZWxlY3Rpb25EaXJlY3Rpb25FbmQgKyAxOworY29uc3QgQVhUZXh0U2VsZWN0aW9uRGlyZWN0
aW9uTmV4dCA9IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvblByZXZpb3VzICsgMTsKK2NvbnN0IEFY
VGV4dFNlbGVjdGlvbkRpcmVjdGlvbkRpc2NvbnRpZ3VvdXMgPSBBWFRleHRTZWxlY3Rpb25EaXJl
Y3Rpb25OZXh0ICsgMTsKKworY29uc3QgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlDaGFyYWN0
ZXIgPSAxOworCitmdW5jdGlvbiBub3RpZmljYXRpb25DYWxsYmFjayhub3RpZmljYXRpb24sIHVz
ZXJJbmZvKSB7CisgICAgaWYgKG5vdGlmaWNhdGlvbiAhPSAiQVhTZWxlY3RlZFRleHRDaGFuZ2Vk
IikKKyAgICAgICAgcmV0dXJuOworCisgICAgbGV0IHN0ciA9ICIiOworICAgIGxldCB0eXBlID0g
dXNlckluZm9bIkFYVGV4dFN0YXRlQ2hhbmdlVHlwZSJdOworICAgIGlmICh0eXBlID09IEFYVGV4
dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbk1vdmUpCisgICAgICAgIHN0ciArPSAibW92ZSI7CisK
KyAgICBsZXQgZGlyID0gdXNlckluZm9bIkFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbiJdOworICAg
IGlmIChkaXIgPT0gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uTmV4dCkKKyAgICAgICAgc3RyICs9
ICIgbmV4dCI7CisgICAgZWxzZSBpZiAoZGlyID09IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvblBy
ZXZpb3VzKQorICAgICAgICBzdHIgKz0gIiBwcmV2aW91cyI7CisgICAgZWxzZSBpZiAoZGlyID09
IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkRpc2NvbnRpZ3VvdXMpCisgICAgICAgIHN0ciArPSAi
IGRpc2NvbnRpZ3VvdXMiOworCisgICAgbGV0IGdyYW51bGFyaXR5ID0gdXNlckluZm9bIkFYVGV4
dFNlbGVjdGlvbkdyYW51bGFyaXR5Il07CisgICAgaWYgKGdyYW51bGFyaXR5ID09IEFYVGV4dFNl
bGVjdGlvbkdyYW51bGFyaXR5Q2hhcmFjdGVyKQorICAgICAgICBzdHIgKz0gIiBjaGFyYWN0ZXIi
OworCisgICAgc3RyICs9ICJcbiI7CisgICAgb3V0cHV0ICs9IHN0cjsKKworICAgIGlmIChyZXNv
bHZlTm90aWZpY2F0aW9uUHJvbWlzZSkKKyAgICAgICAgcmVzb2x2ZU5vdGlmaWNhdGlvblByb21p
c2UoKTsKK30KKworYXN5bmMgZnVuY3Rpb24gbW92ZUFuZFdhaXRGb3JOb3RpZmljYXRpb24ob2Zm
c2V0KSB7CisgICAgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0Iik7CisgICAg
b3V0cHV0ICs9ICJNb3ZlIHRvICIgKyBvZmZzZXQgKyAiXG4iOworICAgIGxldCBwcm9taXNlID0g
bmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICByZXNvbHZlTm90aWZp
Y2F0aW9uUHJvbWlzZSA9IHJlc29sdmU7CisgICAgfSk7CisgICAgdGV4dC5zZXRTZWxlY3Rpb25S
YW5nZShvZmZzZXQsIG9mZnNldCk7CisgICAgYXdhaXQgcHJvbWlzZTsKKyAgICByZXNvbHZlTm90
aWZpY2F0aW9uUHJvbWlzZSA9IG51bGw7Cit9CisKK2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5lbmFibGVFbmhhbmNlZEFjY2Vzc2liaWxpdHkodHJ1ZSk7CisK
KyAgICB3ZWJBcmVhID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIucm9vdEVsZW1lbnQuY2hpbGRB
dEluZGV4KDApOworICAgIHZhciBhZGRlZE5vdGlmaWNhdGlvbiA9IHdlYkFyZWEuYWRkTm90aWZp
Y2F0aW9uTGlzdGVuZXIobm90aWZpY2F0aW9uQ2FsbGJhY2spOworICAgIG91dHB1dCArPSBleHBl
Y3QoImFkZGVkTm90aWZpY2F0aW9uIiwgInRydWUiKTsKKworICAgIHNldFRpbWVvdXQoYXN5bmMg
ZnVuY3Rpb24oKSB7CisgICAgICAgIGF3YWl0IG1vdmVBbmRXYWl0Rm9yTm90aWZpY2F0aW9uKDAp
OworICAgICAgICBhd2FpdCBtb3ZlQW5kV2FpdEZvck5vdGlmaWNhdGlvbigxKTsKKyAgICAgICAg
YXdhaXQgbW92ZUFuZFdhaXRGb3JOb3RpZmljYXRpb24oMik7CisgICAgICAgIGF3YWl0IG1vdmVB
bmRXYWl0Rm9yTm90aWZpY2F0aW9uKDMpOworICAgICAgICBhd2FpdCBtb3ZlQW5kV2FpdEZvck5v
dGlmaWNhdGlvbig0KTsKKworICAgICAgICBhd2FpdCBtb3ZlQW5kV2FpdEZvck5vdGlmaWNhdGlv
big2KTsgIC8vIE5vdGUgc2luZ2xlIGNoYXJhY3RlciAoZW1vamkpCisKKyAgICAgICAgYXdhaXQg
bW92ZUFuZFdhaXRGb3JOb3RpZmljYXRpb24oOCk7ICAvLyBEaXNjb250aWd1b3VzCisgICAgICAg
IGF3YWl0IG1vdmVBbmRXYWl0Rm9yTm90aWZpY2F0aW9uKDkpOworCisgICAgICAgIGRlYnVnKG91
dHB1dCk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0sIDApOworfQorPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>