<?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>270866</bug_id>
          
          <creation_ts>2024-03-12 11:30:06 -0700</creation_ts>
          <short_desc>AX: WebAccessibilityObjectWrapperMac and AXIsolatedTree do many unnecessary isMainThread() calls</short_desc>
          <delta_ts>2024-03-13 23:34:36 -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>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tyler Wilcock">tyler_w</reporter>
          <assigned_to name="Tyler Wilcock">tyler_w</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>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2020514</commentid>
    <comment_count>0</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2024-03-12 11:30:06 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2020515</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2024-03-12 11:30:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/124468129&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2020516</commentid>
    <comment_count>2</comment_count>
      <attachid>470325</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2024-03-12 11:38:09 -0700</bug_when>
    <thetext>Created attachment 470325
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2020720</commentid>
    <comment_count>3</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2024-03-13 08:24:41 -0700</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #2)
&gt; Created attachment 470325 [details]
&gt; Patch

diff --git a/Source/WebCore/accessibility/AXTextMarker.cpp b/Source/WebCore/accessibility/AXTextMarker.cpp
index abfdacccb630..eb5e1128e179 100644
--- a/Source/WebCore/accessibility/AXTextMarker.cpp
+++ b/Source/WebCore/accessibility/AXTextMarker.cpp
@@ -218,8 +218,8 @@ RefPtr&lt;AXCoreObject&gt; AXTextMarker::object() const
         return tree ? tree-&gt;objectForID(objectID()) : nullptr;
     }
 #endif
-    auto tree = std::get&lt;WeakPtr&lt;AXObjectCache&gt;&gt;(axTreeForID(treeID()));
-    return tree ? tree-&gt;objectForID(objectID()) : nullptr;
+    auto cache = std::get&lt;WeakPtr&lt;AXObjectCache&gt;&gt;(axTreeForID(treeID()));
+    return cache ? cache-&gt;objectForID(objectID()) : nullptr;

AG: The use of tree here instead of cache was deliberate to remark the fact that AXObjectCache is also a tree as far as this code is concerned. In the future we should have a common interface for the tree portion of AXObjectcache and AXIsolatedTree.

 }

 String AXTextMarker::debugDescription() const</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2020721</commentid>
    <comment_count>4</comment_count>
      <attachid>470342</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2024-03-13 08:27:07 -0700</bug_when>
    <thetext>Created attachment 470342
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2020722</commentid>
    <comment_count>5</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2024-03-13 08:27:49 -0700</bug_when>
    <thetext>&gt; -    auto tree = std::get&lt;WeakPtr&lt;AXObjectCache&gt;&gt;(axTreeForID(treeID()));
&gt; -    return tree ? tree-&gt;objectForID(objectID()) : nullptr;
&gt; +    auto cache = std::get&lt;WeakPtr&lt;AXObjectCache&gt;&gt;(axTreeForID(treeID()));
&gt; +    return cache ? cache-&gt;objectForID(objectID()) : nullptr;
&gt; 
&gt; AG: The use of tree here instead of cache was deliberate to remark the fact
&gt; that AXObjectCache is also a tree as far as this code is concerned. In the
&gt; future we should have a common interface for the tree portion of
&gt; AXObjectcache and AXIsolatedTree.
TW: Got it, makes sense, reverted to the old naming in the latest patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2020728</commentid>
    <comment_count>6</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2024-03-13 08:50:56 -0700</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #4)
&gt; Created attachment 470342 [details]
&gt; Patch

diff --git a/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm b/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
index 0a77761affda..ac0f55f0cda0 100644
--- a/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
+++ b/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm
@@ -72,6 +72,7 @@
 #import &quot;RenderTextControl.h&quot;
 #import &quot;RenderView.h&quot;
 #import &quot;RenderWidget.h&quot;
+#import &quot;RuntimeApplicationChecks.h&quot;
 #import &quot;ScrollView.h&quot;
 #import &quot;TextIterator.h&quot;
 #import &quot;VisibleUnits.h&quot;
@@ -759,12 +760,8 @@ ALLOW_DEPRECATED_IMPLEMENTATIONS_END
     return actions;
 }

-- (NSArray*)additionalAccessibilityAttributeNames
+- (NSArray*)_additionalAccessibilityAttributeNames:(const RefPtr&lt;AXCoreObject&gt;&amp;)backingObject
 {
-    RefPtr&lt;AXCoreObject&gt; backingObject = self.axBackingObject;
-    if (!backingObject)
-        return nil;
-
     NSMutableArray *additional = [NSMutableArray array];
     if (backingObject-&gt;supportsARIAOwns())
         [additional addObject:NSAccessibilityOwnsAttribute];
@@ -1245,7 +1242,7 @@ ALLOW_DEPRECATED_IMPLEMENTATIONS_END
     else if (backingObject-&gt;isVideo())
         objectAttributes = videoAttrs.get().get();

-    NSArray *additionalAttributes = [self additionalAccessibilityAttributeNames];
+    NSArray *additionalAttributes = [self _additionalAccessibilityAttributeNames:backingObject];
     if ([additionalAttributes count])
         objectAttributes = [objectAttributes arrayByAddingObjectsFromArray:additionalAttributes];

@@ -1314,7 +1311,8 @@ - (AXTextMarkerRangeRef)selectedTextMarkerRange

 - (id)associatedPluginParent
 {
-    if (!self.axBackingObject || !self.axBackingObject-&gt;hasApplePDFAnnotationAttribute())
+    RefPtr&lt;AXCoreObject&gt; backingObject = self.axBackingObject;
+    if (!backingObject || !backingObject-&gt;hasApplePDFAnnotationAttribute())
         return nil;

AG: can we pass the backingObject to this one too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2020730</commentid>
    <comment_count>7</comment_count>
      <attachid>470345</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2024-03-13 08:57:52 -0700</bug_when>
    <thetext>Created attachment 470345
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2020731</commentid>
    <comment_count>8</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2024-03-13 08:58:21 -0700</bug_when>
    <thetext>&gt;  - (id)associatedPluginParent
&gt;  {
&gt; -    if (!self.axBackingObject ||
&gt; !self.axBackingObject-&gt;hasApplePDFAnnotationAttribute())
&gt; +    RefPtr&lt;AXCoreObject&gt; backingObject = self.axBackingObject;
&gt; +    if (!backingObject || !backingObject-&gt;hasApplePDFAnnotationAttribute())
&gt;          return nil;
&gt; 
&gt; AG: can we pass the backingObject to this one too?
TW: Sure can, done in latest patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2020945</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-03-13 23:34:31 -0700</bug_when>
    <thetext>Committed 276073@main (299896402ebb): &lt;https://commits.webkit.org/276073@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 470345.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>470325</attachid>
            <date>2024-03-12 11:38:09 -0700</date>
            <delta_ts>2024-03-13 08:27:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-270866-20240312113808.patch</filename>
            <type>text/plain</type>
            <size>14950</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSBjNWM2MmY3Y2Y2ZjhkYzI5MmM3MzYzMmJjYzJhNjVlMGQ4MDJhZTMzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogVHVlLCAxMiBNYXIgMjAyNCAxMTozMDoyMCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFYOiBX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYyBhbmQgQVhJc29sYXRlZFRyZWUgZG8KIG1h
bnkgdW5uZWNlc3NhcnkgaXNNYWluVGhyZWFkKCkgY2FsbHMKIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yNzA4NjYgcmRhcjovL3Byb2JsZW0vMTI0NDY4MTI5CgpSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCk1hbnkgb2Ygb3VyIGhvdHRlc3QgY29kZXBhdGhzICh2
YXJpb3VzIHdyYXBwZXIgZnVuY3Rpb25zLCBBWElzb2xhdGVkVHJlZTo6e29iamVjdEZvcklELCBh
cHBseVBlbmRpbmdDaGFuZ2VzfSkKY2FsbCBpc01haW5UaHJlYWQoKSBlaXRoZXIgY29tcGxldGVs
eSB1bm5lY2Vzc2FyaWx5IChpLmUuIGluIHRoZSBjYXNlIG9mIHRoZSBBWElzb2xhdGVkVHJlZSBm
dW5jdGlvbnMpLCBvcgptb3JlIHRoYW4gbmVjZXNzYXJ5LiBUaGVzZSBzaG93IHVwIGluIHNhbXBs
ZXMuCgpUaGlzIHBhdGNoIGRvd25ncmFkZXMgdGhlIGlzTWFpblRocmVhZCgpIGNoZWNrcyBpbiBB
WElzb2xhdGVkVHJlZTo6e29iamVjdEZvcklELCBhcHBseVBlbmRpbmdDaGFuZ2VzfSB0byBBU1NF
UlQsCmFzIG5vIGNvZGVwYXRoIGV4aXN0cyBmb3IgdGhlc2UgdG8gYmUgY2FsbGVkIG9uIHRoZSBt
YWluLXRocmVhZC4KClRoaXMgcGF0Y2ggYWxzbyByZW1vdmVzIHVubmVjZXNzYXJ5IGNhbGxzIHRv
IGF4QmFja2luZ09iamVjdCBpbiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYyBhbmQg
aW5zdGVhZApwYXNzZXMgYSBzaW5nbGUgUmVmUHRyIG9iamVjdCBhcm91bmQgKHdoaWNoIGNhbiBh
bHNvIGJlIG1vcmUgY29ycmVjdCwgaS5lLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjY3Nzg2KS4KCkZ1cnRoZXJtb3JlLCAtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyIGFjY2Vzc2liaWxpdHlQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcl0gbm93IGRpcmVj
dGx5IGNhbGxzIHByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpLApyYXRoZXIgdGhhbiBnZXR0aW5n
IGF4QmFja2luZ09iamVjdCBmaXJzdCBhbmQgY2FsbGluZyBwcmVzZW50aW5nQXBwbGljYXRpb25Q
SUQoKSBvbiB0aGF0LgoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVj
dC5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmNwcDoKKFdl
YkNvcmU6OkFYVGV4dE1hcmtlcjo6b2JqZWN0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6cHJvY2Vzc0lEIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFYSXNv
bGF0ZWRPYmplY3Q6OmRldGFjaFJlbW90ZVBhcnRzKToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OnVwZGF0ZUJhY2tpbmdTdG9yZSk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcDoKKFdlYkNvcmU6OkFYSXNvbGF0
ZWRUcmVlOjpvYmplY3RGb3JJRCBjb25zdCk6CihXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6YXBw
bHlQZW5kaW5nQ2hhbmdlcyk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWUuaDoKKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpwcm9jZXNz
SUQgY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciBfYWRkaXRpb25hbEFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lczpdKToKKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfRU5EXSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFzc29jaWF0ZWRQ
bHVnaW5QYXJlbnRdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2lzRW1wdHlH
cm91cDpdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgc3Vicm9sZV0pOgooLVtX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5UHJlc2VudGVyUHJvY2Vz
c0lkZW50aWZpZXJdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJp
bGl0eUFycmF5QXR0cmlidXRlVmFsdWVzOmluZGV4Om1heENvdW50Ol0pOgooLVtXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciBhZGRpdGlvbmFsQWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVz
XSk6IERlbGV0ZWQuCigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGlzRW1wdHlHcm91
cF0pOiBEZWxldGVkLgotLS0KIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2Jq
ZWN0LmggICB8ICAyIC0KIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2Vy
LmNwcCB8ICA0ICstCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCAg
ICAgfCAgNiAtLS0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCAgICAg
ICB8ICAxIC0KIC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgICAgICAgICB8
ICA1ICsrLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmggICAgICAgICAgIHwg
IDEgLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgICAgICAgICAgIHwgMTQg
KystLS0tLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oICAgICAgICAgICAgIHwg
IDMgLS0KIC4uLi9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gICB8IDM3
ICsrKysrKysrLS0tLS0tLS0tLS0KIDkgZmlsZXMgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwg
NDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWENvcmVPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2Jq
ZWN0LmgKaW5kZXggZDdiNjI4NDYyOTQ4Li5jYzA4MDc1OWQ2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1
ZGUgPHZhcmlhbnQ+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvT2Jq
ZWN0SWRlbnRpZmllci5oPgotI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlV2Vha1B0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgpAQCAtODA5LDcgKzgwOCw2IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldE9iamVjdElEKEFYSUQgYXhJRCkgeyBtX2lkID0gYXhJRDsgfQogICAgIEFYSUQgb2Jq
ZWN0SUQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAgdmlydHVhbCBBWElEIHRyZWVJRCgp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFByb2Nlc3NJRCBwcm9jZXNzSUQoKSBjb25zdCA9IDA7
CiAKICAgICAvLyBXaGVuIHRoZSBjb3JyZXNwb25kaW5nIFdlYkNvcmUgb2JqZWN0IHRoYXQgdGhp
cyBhY2Nlc3NpYmxlIG9iamVjdAogICAgIC8vIHJlcHJlc2VudHMgaXMgZGVsZXRlZCwgaXQgbXVz
dCBiZSBkZXRhY2hlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhUZXh0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFy
a2VyLmNwcAppbmRleCBhYmZkYWNjY2I2MzAuLmViNWUxMTI4ZTE3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmNwcApAQCAtMjE4LDggKzIxOCw4IEBA
IFJlZlB0cjxBWENvcmVPYmplY3Q+IEFYVGV4dE1hcmtlcjo6b2JqZWN0KCkgY29uc3QKICAgICAg
ICAgcmV0dXJuIHRyZWUgPyB0cmVlLT5vYmplY3RGb3JJRChvYmplY3RJRCgpKSA6IG51bGxwdHI7
CiAgICAgfQogI2VuZGlmCi0gICAgYXV0byB0cmVlID0gc3RkOjpnZXQ8V2Vha1B0cjxBWE9iamVj
dENhY2hlPj4oYXhUcmVlRm9ySUQodHJlZUlEKCkpKTsKLSAgICByZXR1cm4gdHJlZSA/IHRyZWUt
Pm9iamVjdEZvcklEKG9iamVjdElEKCkpIDogbnVsbHB0cjsKKyAgICBhdXRvIGNhY2hlID0gc3Rk
OjpnZXQ8V2Vha1B0cjxBWE9iamVjdENhY2hlPj4oYXhUcmVlRm9ySUQodHJlZUlEKCkpKTsKKyAg
ICByZXR1cm4gY2FjaGUgPyBjYWNoZS0+b2JqZWN0Rm9ySUQob2JqZWN0SUQoKSkgOiBudWxscHRy
OwogfQogCiBTdHJpbmcgQVhUZXh0TWFya2VyOjpkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCmluZGV4IDRlZjE1MDFlNDFjNy4uNGI3ZjA1ODkwODA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTg1LDcg
Kzg1LDYgQEAKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0
LmgiCiAjaW5jbHVkZSAiUmVuZGVyZWRQb3NpdGlvbi5oIgotI2luY2x1ZGUgIlJ1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dENo
ZWNrZXJDbGllbnQuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tpbmdIZWxwZXIuaCIKQEAgLTExOSwx
MSArMTE4LDYgQEAgQVhJRCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0cmVlSUQoKSBjb25zdAogICAg
IHJldHVybiBjYWNoZSA/IGNhY2hlLT50cmVlSUQoKSA6IEFYSUQoKTsKIH0KIAotaW5saW5lIFBy
b2Nlc3NJRCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpwcm9jZXNzSUQoKSBjb25zdAotewotICAgIHJl
dHVybiBwcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKTsKLX0KLQogU3RyaW5nIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmRiZygpIGNvbnN0CiB7CiAgICAgU3RyaW5nIGJhY2tpbmdFbnRpdHlEZXNjcmlw
dGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmgKaW5kZXggOWQ0OTQ1M2Q4OWUyLi5mMjZkNjQ2MGM2OGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC02NSw3
ICs2NSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5T2JqZWN0KCk7CiAK
ICAgICBBWElEIHRyZWVJRCgpIGNvbnN0IGZpbmFsOwotICAgIFByb2Nlc3NJRCBwcm9jZXNzSUQo
KSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgZGJnKCkgY29uc3QgZmluYWw7CiAKICAgICAv
LyBBZnRlciBjb25zdHJ1Y3RpbmcgYW4gQWNjZXNzaWJpbGl0eU9iamVjdCwgaXQgbXVzdCBiZSBn
aXZlbiBhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCmluZGV4IGRlZDhmM2U0MzFkOS4uNDli
OTBiYmQ2MGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcApAQCAtNTAwLDYgKzUwMCw4
IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBBWFByb3BlcnR5VmFsdWVWCiAKIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6ZGV0
YWNoUmVtb3RlUGFydHMoQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlKQogeworICAgIEFTU0VS
VCghaXNNYWluVGhyZWFkKCkpOworCiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZElEIDogbV9j
aGlsZHJlbklEcykgewogICAgICAgICBpZiAoUmVmUHRyIGNoaWxkID0gdHJlZSgpLT5vYmplY3RG
b3JJRChjaGlsZElEKSkKICAgICAgICAgICAgIGNoaWxkLT5kZXRhY2hGcm9tUGFyZW50KCk7CkBA
IC0xMDcwLDcgKzEwNzIsOCBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmZpbGxDaGlsZHJlblZl
Y3RvckZvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZQogCiB2b2lkIEFYSXNv
bGF0ZWRPYmplY3Q6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpCiB7Ci0gICAgLy8gVGhpcyBtZXRob2Qg
Y2FuIGJlIGNhbGxlZCBvbiBlaXRoZXIgdGhlIG1haW4gb3IgdGhlIEFYIHRocmVhZHMuCisgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisKICAgICBpZiAoUmVmUHRyIHRyZWUgPSB0aGlzLT50
cmVlKCkpCiAgICAgICAgIHRyZWUtPmFwcGx5UGVuZGluZ0NoYW5nZXMoKTsKICAgICAvLyBBWElz
b2xhdGVkVHJlZTo6YXBwbHlQZW5kaW5nQ2hhbmdlcyBjYW4gY2F1c2UgdGhpcyBvYmplY3QgYW5k
IC8gb3IgdGhlIEFYSXNvbGF0ZWRUcmVlIHRvIGJlIGRlc3Ryb3llZC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRP
YmplY3QuaAppbmRleCA5Zjc2ZGM1ZGJiMGIuLmE1ZDY5ZTVkYmEwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRPYmplY3QuaApAQCAtNTYsNyArNTYsNiBAQCBwdWJsaWM6CiAgICAgfkFYSXNvbGF0ZWRPYmpl
Y3QoKTsKIAogICAgIEFYSUQgdHJlZUlEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJlZSgpLT50
cmVlSUQoKTsgfQotICAgIFByb2Nlc3NJRCBwcm9jZXNzSUQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cmVlKCktPnByb2Nlc3NJRCgpOyB9CiAgICAgU3RyaW5nIGRiZygpIGNvbnN0IGZpbmFsOwog
CiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVJvbGU+KGludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lOjpSb2xlVmFsdWUpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCmluZGV4IDRmNWNh
MDg5NDlkMC4uYjNiYzIyZjc2N2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCkBAIC0yMjgs
MTEgKzIyOCw4IEBAIFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OnRyZWVG
b3JQYWdlSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogCiBSZWZQdHI8QVhJc29sYXRlZE9iamVj
dD4gQVhJc29sYXRlZFRyZWU6Om9iamVjdEZvcklEKGNvbnN0IEFYSUQgYXhJRCkgY29uc3QKIHsK
LSAgICAvLyBJbiBpc29sYXRlZCB0cmVlIG1vZGUsIG9ubHkgYWNjZXNzIG1fcmVhZGVyVGhyZWFk
Tm9kZU1hcCBvbiB0aGUgQVggdGhyZWFkLgotICAgIGlmIChpc01haW5UaHJlYWQoKSkgewotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
fQorICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworCiAgICAgcmV0dXJuIGF4SUQuaXNWYWxp
ZCgpID8gbV9yZWFkZXJUaHJlYWROb2RlTWFwLmdldChheElEKSA6IG51bGxwdHI7CiB9CiAKQEAg
LTExNjksMTIgKzExNjYsNyBAQCBzdGQ6Om9wdGlvbmFsPExpc3RIYXNoU2V0PEFYSUQ+PiBBWElz
b2xhdGVkVHJlZTo6cmVsYXRlZE9iamVjdElEc0Zvcihjb25zdCBBWElzbwogdm9pZCBBWElzb2xh
dGVkVHJlZTo6YXBwbHlQZW5kaW5nQ2hhbmdlcygpCiB7CiAgICAgQVhUUkFDRSgiQVhJc29sYXRl
ZFRyZWU6OmFwcGx5UGVuZGluZ0NoYW5nZXMiX3MpOwotCi0gICAgLy8gSW4gaXNvbGF0ZWQgdHJl
ZSBtb2RlLCBvbmx5IGFwcGx5IHBlbmRpbmcgY2hhbmdlcyBvbiB0aGUgQVggdGhyZWFkLgotICAg
IGlmIChpc01haW5UaHJlYWQoKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAogICAg
IExvY2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xvY2sgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgK
aW5kZXggODhhMTU1MTFjYzJiLi40ZDAyMmZmMzc2NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApA
QCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkFYVHJlZVN0b3JlLmgiCiAjaW5jbHVkZSAiUGFn
ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgotI2luY2x1
ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0zMjUs
NyArMzI0LDYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZlB0cjxBWElzb2xhdGVkVHJlZT4g
dHJlZUZvclBhZ2VJRChzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPik7CiAgICAgc3RhdGlj
IFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gdHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllcik7Ci0g
ICAgY29uc3RleHByIFByb2Nlc3NJRCBwcm9jZXNzSUQoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nl
c3NJRDsgfQogICAgIEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUoKSBjb25zdDsKICAgICBj
b25zdGV4cHIgQVhHZW9tZXRyeU1hbmFnZXIqIGdlb21ldHJ5TWFuYWdlcigpIGNvbnN0IHsgcmV0
dXJuIG1fZ2VvbWV0cnlNYW5hZ2VyLmdldCgpOyB9CiAKQEAgLTQyOSw3ICs0MjcsNiBAQCBwcml2
YXRlOgogICAgIFZlY3RvcjxOb2RlQ2hhbmdlPiByZXNvbHZlQXBwZW5kcygpOwogICAgIHZvaWQg
cXVldWVBcHBlbmRzQW5kUmVtb3ZhbHMoVmVjdG9yPE5vZGVDaGFuZ2U+JiYsIFZlY3RvcjxBWElE
PiYmKTsKIAotICAgIGNvbnN0IFByb2Nlc3NJRCBtX3Byb2Nlc3NJRCB7IHByZXNlbnRpbmdBcHBs
aWNhdGlvblBJRCgpIH07CiAgICAgdW5zaWduZWQgbV9tYXhUcmVlRGVwdGggeyAwIH07CiAgICAg
V2Vha1B0cjxBWE9iamVjdENhY2hlPiBtX2F4T2JqZWN0Q2FjaGU7CiAgICAgT3B0aW9uU2V0PEFj
dGl2aXR5U3RhdGU+IG1fcGFnZUFjdGl2aXR5U3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyTWFjLm1tCmluZGV4IDBhNzc3NjFhZmZkYS4uYWMwZjU1ZjBjZGEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtNzIsNiArNzIsNyBAQAogI2lt
cG9ydCAiUmVuZGVyVGV4dENvbnRyb2wuaCIKICNpbXBvcnQgIlJlbmRlclZpZXcuaCIKICNpbXBv
cnQgIlJlbmRlcldpZGdldC5oIgorI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgi
CiAjaW1wb3J0ICJTY3JvbGxWaWV3LmgiCiAjaW1wb3J0ICJUZXh0SXRlcmF0b3IuaCIKICNpbXBv
cnQgIlZpc2libGVVbml0cy5oIgpAQCAtNzU5LDEyICs3NjAsOCBAQCBBTExPV19ERVBSRUNBVEVE
X0lNUExFTUVOVEFUSU9OU19FTkQKICAgICByZXR1cm4gYWN0aW9uczsKIH0KIAotLSAoTlNBcnJh
eSopYWRkaXRpb25hbEFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lcworLSAoTlNBcnJheSopX2Fk
ZGl0aW9uYWxBY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXM6KGNvbnN0IFJlZlB0cjxBWENvcmVP
YmplY3Q+JiliYWNraW5nT2JqZWN0CiB7Ci0gICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2lu
Z09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwotICAgIGlmICghYmFja2luZ09iamVjdCkK
LSAgICAgICAgcmV0dXJuIG5pbDsKLQogICAgIE5TTXV0YWJsZUFycmF5ICphZGRpdGlvbmFsID0g
W05TTXV0YWJsZUFycmF5IGFycmF5XTsKICAgICBpZiAoYmFja2luZ09iamVjdC0+c3VwcG9ydHNB
UklBT3ducygpKQogICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
T3duc0F0dHJpYnV0ZV07CkBAIC0xMjQ1LDcgKzEyNDIsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkQKICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc1ZpZGVvKCkp
CiAgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSB2aWRlb0F0dHJzLmdldCgpLmdldCgpOwogCi0g
ICAgTlNBcnJheSAqYWRkaXRpb25hbEF0dHJpYnV0ZXMgPSBbc2VsZiBhZGRpdGlvbmFsQWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZU5hbWVzXTsKKyAgICBOU0FycmF5ICphZGRpdGlvbmFsQXR0cmlidXRl
cyA9IFtzZWxmIF9hZGRpdGlvbmFsQWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzOmJhY2tpbmdP
YmplY3RdOwogICAgIGlmIChbYWRkaXRpb25hbEF0dHJpYnV0ZXMgY291bnRdKQogICAgICAgICBv
YmplY3RBdHRyaWJ1dGVzID0gW29iamVjdEF0dHJpYnV0ZXMgYXJyYXlCeUFkZGluZ09iamVjdHNG
cm9tQXJyYXk6YWRkaXRpb25hbEF0dHJpYnV0ZXNdOwogCkBAIC0xMzE0LDcgKzEzMTEsOCBAQCAt
IChBWFRleHRNYXJrZXJSYW5nZVJlZilzZWxlY3RlZFRleHRNYXJrZXJSYW5nZQogCiAtIChpZClh
c3NvY2lhdGVkUGx1Z2luUGFyZW50CiB7Ci0gICAgaWYgKCFzZWxmLmF4QmFja2luZ09iamVjdCB8
fCAhc2VsZi5heEJhY2tpbmdPYmplY3QtPmhhc0FwcGxlUERGQW5ub3RhdGlvbkF0dHJpYnV0ZSgp
KQorICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2lu
Z09iamVjdDsKKyAgICBpZiAoIWJhY2tpbmdPYmplY3QgfHwgIWJhY2tpbmdPYmplY3QtPmhhc0Fw
cGxlUERGQW5ub3RhdGlvbkF0dHJpYnV0ZSgpKQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlQXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFpblRo
cmVhZDxpZD4oW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildICgpIC0+IFJldGFpblB0
cjxpZD4gewpAQCAtMTM4OCwyMiArMTM4NiwxOCBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5rbm93blJvbGU7CiB9CiAKLS0g
KEJPT0wpaXNFbXB0eUdyb3VwCistIChCT09MKV9pc0VtcHR5R3JvdXA6KGNvbnN0IFJlZlB0cjxB
WENvcmVPYmplY3Q+JilvYmplY3QKIHsKLSAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5n
T2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7Ci0gICAgaWYgKCFiYWNraW5nT2JqZWN0KQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKLSAgICBp
ZiAoYmFja2luZ09iamVjdC0+aXNNb2RlbCgpKQorICAgIGlmIChvYmplY3QtPmlzTW9kZWwoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKLSAgICBpZiAoYmFja2luZ09iamVjdC0+
aXNSZW1vdGVGcmFtZSgpKQorICAgIGlmIChvYmplY3QtPmlzUmVtb3RlRnJhbWUoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIFtbc2VsZiByb2xlXSBpc0VxdWFsOk5TQWNj
ZXNzaWJpbGl0eUdyb3VwUm9sZV0KLSAgICAgICAgJiYgYmFja2luZ09iamVjdC0+Y2hpbGRyZW4o
KS5pc0VtcHR5KCkKKyAgICAgICAgJiYgb2JqZWN0LT5jaGlsZHJlbigpLmlzRW1wdHkoKQogICAg
ICAgICAmJiAhW1tzZWxmIHJlbmRlcldpZGdldENoaWxkcmVuXSBjb3VudF07CiB9CiAKQEAgLTE0
MTQsNyArMTQwOCw3IEBAIC0gKE5TU3RyaW5nKilzdWJyb2xlCiAgICAgaWYgKCFiYWNraW5nT2Jq
ZWN0KQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgaWYgKFtzZWxmIGlzRW1wdHlHcm91cF0p
CisgICAgaWYgKFtzZWxmIF9pc0VtcHR5R3JvdXA6YmFja2luZ09iamVjdF0pCiAgICAgICAgIHJl
dHVybiBAIkFYRW1wdHlHcm91cCI7CiAKICAgICBhdXRvIHN1YnJvbGUgPSBiYWNraW5nT2JqZWN0
LT5zdWJyb2xlUGxhdGZvcm1TdHJpbmcoKTsKQEAgLTM4MzksOCArMzgzMyw3IEBAIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogLy8gdW50aWwgaXQgZmluZHMgc29tZXRoaW5nIHRo
YXQgcmVzcG9uZHMgdG8gdGhpcyBtZXRob2QuCiAtIChwaWRfdClhY2Nlc3NpYmlsaXR5UHJlc2Vu
dGVyUHJvY2Vzc0lkZW50aWZpZXIKIHsKLSAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5n
T2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7Ci0gICAgcmV0dXJuIGJhY2tpbmdPYmplY3Qg
PyBiYWNraW5nT2JqZWN0LT5wcm9jZXNzSUQoKSA6IDA7CisgICAgcmV0dXJuIHByZXNlbnRpbmdB
cHBsaWNhdGlvblBJRCgpOwogfQogCiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eUFycmF5QXR0
cmlidXRlVmFsdWVzOihOU1N0cmluZyAqKWF0dHJpYnV0ZSBpbmRleDooTlNVSW50ZWdlcilpbmRl
eCBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudApAQCAtMzg4MywxMSArMzg3NiwxMSBAQCAt
IChOU0FycmF5ICopYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlVmFsdWVzOihOU1N0cmluZyAq
KWF0dHJpYnV0ZSBpbmRleDooTlNVSQogCiAgICAgICAgICAgICAvLyBUaGUgYXR0YWNobWVudCB2
aWV3IHNob3VsZCBiZSByZXR1cm5lZCwgb3RoZXJ3aXNlIEFYIHBhbGluZHJvbWUgZXJyb3JzIG9j
Y3VyLgogICAgICAgICAgICAgaWQgYXR0YWNobWVudFZpZXcgPSBuaWw7Ci0gICAgICAgICAgICBp
ZiAoW3dyYXBwZXIgaXNLaW5kT2ZDbGFzczpbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
Y2xhc3NdXSAmJiB3cmFwcGVyLmF4QmFja2luZ09iamVjdCkgewotICAgICAgICAgICAgICAgIGlm
ICh3cmFwcGVyLmF4QmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCisgICAgICAgICAgICBp
ZiAoUmVmUHRyIGNoaWxkT2JqZWN0ID0gW3dyYXBwZXIgaXNLaW5kT2ZDbGFzczpbV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIgY2xhc3NdXSA/IHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0IDog
bnVsbHB0cikgeworICAgICAgICAgICAgICAgIGlmIChjaGlsZE9iamVjdC0+aXNBdHRhY2htZW50
KCkpCiAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRWaWV3ID0gW3dyYXBwZXIgYXR0YWNo
bWVudFZpZXddOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdyYXBwZXIuYXhCYWNraW5nT2Jq
ZWN0LT5pc1JlbW90ZUZyYW1lKCkpCi0gICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRWaWV3
ID0gd3JhcHBlci5heEJhY2tpbmdPYmplY3QtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCku
Z2V0KCk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGRPYmplY3QtPmlzUmVtb3RlRnJh
bWUoKSkKKyAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudFZpZXcgPSBjaGlsZE9iamVjdC0+
cmVtb3RlRnJhbWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKTsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgW3N1YmFycmF5IGFkZE9iamVjdDphdHRhY2htZW50VmlldyA/IGF0dGFjaG1lbnRW
aWV3IDogd3JhcHBlcl07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>470342</attachid>
            <date>2024-03-13 08:27:07 -0700</date>
            <delta_ts>2024-03-13 08:57:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-270866-20240313082707.patch</filename>
            <type>text/plain</type>
            <size>14172</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSBlMWEwYzFmN2ViMDI3YjFlMTU5N2NkNTE3OGZiYjc3ZDdmNzg5MTQ2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogVHVlLCAxMiBNYXIgMjAyNCAxMTozMDoyMCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFYOiBX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYyBhbmQgQVhJc29sYXRlZFRyZWUgZG8KIG1h
bnkgdW5uZWNlc3NhcnkgaXNNYWluVGhyZWFkKCkgY2FsbHMKIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yNzA4NjYgcmRhcjovL3Byb2JsZW0vMTI0NDY4MTI5CgpSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCk1hbnkgb2Ygb3VyIGhvdHRlc3QgY29kZXBhdGhzICh2
YXJpb3VzIHdyYXBwZXIgZnVuY3Rpb25zLCBBWElzb2xhdGVkVHJlZTo6e29iamVjdEZvcklELCBh
cHBseVBlbmRpbmdDaGFuZ2VzfSkKY2FsbCBpc01haW5UaHJlYWQoKSBlaXRoZXIgY29tcGxldGVs
eSB1bm5lY2Vzc2FyaWx5IChpLmUuIGluIHRoZSBjYXNlIG9mIHRoZSBBWElzb2xhdGVkVHJlZSBm
dW5jdGlvbnMpLCBvcgptb3JlIHRoYW4gbmVjZXNzYXJ5LiBUaGVzZSBzaG93IHVwIGluIHNhbXBs
ZXMuCgpUaGlzIHBhdGNoIGRvd25ncmFkZXMgdGhlIGlzTWFpblRocmVhZCgpIGNoZWNrcyBpbiBB
WElzb2xhdGVkVHJlZTo6e29iamVjdEZvcklELCBhcHBseVBlbmRpbmdDaGFuZ2VzfSB0byBBU1NF
UlQsCmFzIG5vIGNvZGVwYXRoIGV4aXN0cyBmb3IgdGhlc2UgdG8gYmUgY2FsbGVkIG9uIHRoZSBt
YWluLXRocmVhZC4KClRoaXMgcGF0Y2ggYWxzbyByZW1vdmVzIHVubmVjZXNzYXJ5IGNhbGxzIHRv
IGF4QmFja2luZ09iamVjdCBpbiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYyBhbmQg
aW5zdGVhZApwYXNzZXMgYSBzaW5nbGUgUmVmUHRyIG9iamVjdCBhcm91bmQgKHdoaWNoIGNhbiBh
bHNvIGJlIG1vcmUgY29ycmVjdCwgaS5lLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjY3Nzg2KS4KCkZ1cnRoZXJtb3JlLCAtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyIGFjY2Vzc2liaWxpdHlQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcl0gbm93IGRpcmVj
dGx5IGNhbGxzIHByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpLApyYXRoZXIgdGhhbiBnZXR0aW5n
IGF4QmFja2luZ09iamVjdCBmaXJzdCBhbmQgY2FsbGluZyBwcmVzZW50aW5nQXBwbGljYXRpb25Q
SUQoKSBvbiB0aGF0LgoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVj
dC5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmNwcDoKKFdl
YkNvcmU6OkFYVGV4dE1hcmtlcjo6b2JqZWN0IGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6cHJvY2Vzc0lEIGNvbnN0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFYSXNv
bGF0ZWRPYmplY3Q6OmRldGFjaFJlbW90ZVBhcnRzKToKKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OnVwZGF0ZUJhY2tpbmdTdG9yZSk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcDoKKFdlYkNvcmU6OkFYSXNvbGF0
ZWRUcmVlOjpvYmplY3RGb3JJRCBjb25zdCk6CihXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6YXBw
bHlQZW5kaW5nQ2hhbmdlcyk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWUuaDoKKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpwcm9jZXNz
SUQgY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciBfYWRkaXRpb25hbEFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lczpdKToKKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfRU5EXSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFzc29jaWF0ZWRQ
bHVnaW5QYXJlbnRdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2lzRW1wdHlH
cm91cDpdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgc3Vicm9sZV0pOgooLVtX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5UHJlc2VudGVyUHJvY2Vz
c0lkZW50aWZpZXJdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJp
bGl0eUFycmF5QXR0cmlidXRlVmFsdWVzOmluZGV4Om1heENvdW50Ol0pOgooLVtXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciBhZGRpdGlvbmFsQWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVz
XSk6IERlbGV0ZWQuCigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGlzRW1wdHlHcm91
cF0pOiBEZWxldGVkLgotLS0KIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2Jq
ZWN0LmggICB8ICAyIC0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
ICAgICB8ICA2IC0tLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oICAg
ICAgIHwgIDEgLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcCAgICAgICAg
IHwgIDUgKystCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaCAgICAgICAgICAg
fCAgMSAtCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCAgICAgICAgICAgfCAx
NCArKy0tLS0tCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggICAgICAgICAgICAg
fCAgMyAtLQogLi4uL21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSAgIHwg
MzcgKysrKysrKystLS0tLS0tLS0tLQogOCBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCsp
LCA0NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYQ29yZU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVP
YmplY3QuaAppbmRleCBkN2I2Mjg0NjI5NDguLmNjMDgwNzU5ZDZmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVjdC5oCkBAIC0zOCw3ICszOCw2IEBACiAjaW5j
bHVkZSA8dmFyaWFudD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9P
YmplY3RJZGVudGlmaWVyLmg+Ci0jaW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVXZWFrUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CkBAIC04MDksNyArODA4LDYgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0T2JqZWN0SUQoQVhJRCBheElEKSB7IG1faWQgPSBheElEOyB9CiAgICAgQVhJRCBv
YmplY3RJRCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICB2aXJ0dWFsIEFYSUQgdHJlZUlE
KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUHJvY2Vzc0lEIHByb2Nlc3NJRCgpIGNvbnN0ID0g
MDsKIAogICAgIC8vIFdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgV2ViQ29yZSBvYmplY3QgdGhhdCB0
aGlzIGFjY2Vzc2libGUgb2JqZWN0CiAgICAgLy8gcmVwcmVzZW50cyBpcyBkZWxldGVkLCBpdCBt
dXN0IGJlIGRldGFjaGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggNGVmMTUwMWU0MWM3Li40YjdmMDU4OTA4MDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcApAQCAtODUsNyArODUsNiBAQAogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNp
bmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKICNpbmNsdWRlICJSZW5kZXJlZFBvc2l0aW9uLmgiCi0j
aW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlckNsaWVudC5oIgogI2luY2x1ZGUgIlRleHRDaGVja2lu
Z0hlbHBlci5oIgpAQCAtMTE5LDExICsxMTgsNiBAQCBBWElEIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OnRyZWVJRCgpIGNvbnN0CiAgICAgcmV0dXJuIGNhY2hlID8gY2FjaGUtPnRyZWVJRCgpIDogQVhJ
RCgpOwogfQogCi1pbmxpbmUgUHJvY2Vzc0lEIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnByb2Nlc3NJ
RCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpOwotfQot
CiBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGJnKCkgY29uc3QKIHsKICAgICBTdHJpbmcg
YmFja2luZ0VudGl0eURlc2NyaXB0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCA5ZDQ5NDUzZDg5ZTIuLmYyNmQ2NDYw
YzY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmgKQEAgLTY1LDcgKzY1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkFjY2Vz
c2liaWxpdHlPYmplY3QoKTsKIAogICAgIEFYSUQgdHJlZUlEKCkgY29uc3QgZmluYWw7Ci0gICAg
UHJvY2Vzc0lEIHByb2Nlc3NJRCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBkYmcoKSBj
b25zdCBmaW5hbDsKIAogICAgIC8vIEFmdGVyIGNvbnN0cnVjdGluZyBhbiBBY2Nlc3NpYmlsaXR5
T2JqZWN0LCBpdCBtdXN0IGJlIGdpdmVuIGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKaW5k
ZXggZGVkOGYzZTQzMWQ5Li40OWI5MGJiZDYwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3Qu
Y3BwCkBAIC01MDAsNiArNTAwLDggQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0OjpzZXRQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEFYUHJvcGVydHlWYWx1ZVYKIAogdm9pZCBB
WElzb2xhdGVkT2JqZWN0OjpkZXRhY2hSZW1vdGVQYXJ0cyhBY2Nlc3NpYmlsaXR5RGV0YWNobWVu
dFR5cGUpCiB7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisKICAgICBmb3IgKGNvbnN0
IGF1dG8mIGNoaWxkSUQgOiBtX2NoaWxkcmVuSURzKSB7CiAgICAgICAgIGlmIChSZWZQdHIgY2hp
bGQgPSB0cmVlKCktPm9iamVjdEZvcklEKGNoaWxkSUQpKQogICAgICAgICAgICAgY2hpbGQtPmRl
dGFjaEZyb21QYXJlbnQoKTsKQEAgLTEwNzAsNyArMTA3Miw4IEBAIHZvaWQgQVhJc29sYXRlZE9i
amVjdDo6ZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lCiAKIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6dXBkYXRlQmFja2luZ1N0b3JlKCkKIHsK
LSAgICAvLyBUaGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIG9uIGVpdGhlciB0aGUgbWFpbiBvciB0
aGUgQVggdGhyZWFkcy4KKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKwogICAgIGlmIChS
ZWZQdHIgdHJlZSA9IHRoaXMtPnRyZWUoKSkKICAgICAgICAgdHJlZS0+YXBwbHlQZW5kaW5nQ2hh
bmdlcygpOwogICAgIC8vIEFYSXNvbGF0ZWRUcmVlOjphcHBseVBlbmRpbmdDaGFuZ2VzIGNhbiBj
YXVzZSB0aGlzIG9iamVjdCBhbmQgLyBvciB0aGUgQVhJc29sYXRlZFRyZWUgdG8gYmUgZGVzdHJv
eWVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCmluZGV4IDlmNzZkYzVkYmIwYi4uYTVkNjllNWRi
YTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCkBAIC01Niw3ICs1Niw2IEBAIHB1YmxpYzoK
ICAgICB+QVhJc29sYXRlZE9iamVjdCgpOwogCiAgICAgQVhJRCB0cmVlSUQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiB0cmVlKCktPnRyZWVJRCgpOyB9Ci0gICAgUHJvY2Vzc0lEIHByb2Nlc3NJRCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRyZWUoKS0+cHJvY2Vzc0lEKCk7IH0KICAgICBTdHJpbmcg
ZGJnKCkgY29uc3QgZmluYWw7CiAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5Um9sZT4oaW50QXR0
cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlJvbGVWYWx1ZSkpOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
VHJlZS5jcHAKaW5kZXggNGY1Y2EwODk0OWQwLi5iM2JjMjJmNzY3ZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkVHJlZS5jcHAKQEAgLTIyOCwxMSArMjI4LDggQEAgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBB
WElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllciBwYWdlSUQpCiAKIFJl
ZlB0cjxBWElzb2xhdGVkT2JqZWN0PiBBWElzb2xhdGVkVHJlZTo6b2JqZWN0Rm9ySUQoY29uc3Qg
QVhJRCBheElEKSBjb25zdAogewotICAgIC8vIEluIGlzb2xhdGVkIHRyZWUgbW9kZSwgb25seSBh
Y2Nlc3MgbV9yZWFkZXJUaHJlYWROb2RlTWFwIG9uIHRoZSBBWCB0aHJlYWQuCi0gICAgaWYgKGlz
TWFpblRocmVhZCgpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisKICAg
ICByZXR1cm4gYXhJRC5pc1ZhbGlkKCkgPyBtX3JlYWRlclRocmVhZE5vZGVNYXAuZ2V0KGF4SUQp
IDogbnVsbHB0cjsKIH0KIApAQCAtMTE2OSwxMiArMTE2Niw3IEBAIHN0ZDo6b3B0aW9uYWw8TGlz
dEhhc2hTZXQ8QVhJRD4+IEFYSXNvbGF0ZWRUcmVlOjpyZWxhdGVkT2JqZWN0SURzRm9yKGNvbnN0
IEFYSXNvCiB2b2lkIEFYSXNvbGF0ZWRUcmVlOjphcHBseVBlbmRpbmdDaGFuZ2VzKCkKIHsKICAg
ICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6YXBwbHlQZW5kaW5nQ2hhbmdlcyJfcyk7Ci0KLSAg
ICAvLyBJbiBpc29sYXRlZCB0cmVlIG1vZGUsIG9ubHkgYXBwbHkgcGVuZGluZyBjaGFuZ2VzIG9u
IHRoZSBBWCB0aHJlYWQuCi0gICAgaWYgKGlzTWFpblRocmVhZCgpKSB7Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOwogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZFRyZWUuaAppbmRleCA4OGExNTUxMWNjMmIuLjRkMDIyZmYzNzY1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZFRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZS5oCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiQVhUcmVlU3Rv
cmUuaCIKICNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxl
Q29uc3RhbnRzLmgiCi0jaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KQEAgLTMyNSw3ICszMjQsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVm
UHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9yUGFnZUlEKHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+KTsKICAgICBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9yUGFnZUlE
KFBhZ2VJZGVudGlmaWVyKTsKLSAgICBjb25zdGV4cHIgUHJvY2Vzc0lEIHByb2Nlc3NJRCgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJvY2Vzc0lEOyB9CiAgICAgQVhPYmplY3RDYWNoZSogYXhPYmplY3RD
YWNoZSgpIGNvbnN0OwogICAgIGNvbnN0ZXhwciBBWEdlb21ldHJ5TWFuYWdlciogZ2VvbWV0cnlN
YW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9nZW9tZXRyeU1hbmFnZXIuZ2V0KCk7IH0KIApAQCAt
NDI5LDcgKzQyNyw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPE5vZGVDaGFuZ2U+IHJlc29sdmVB
cHBlbmRzKCk7CiAgICAgdm9pZCBxdWV1ZUFwcGVuZHNBbmRSZW1vdmFscyhWZWN0b3I8Tm9kZUNo
YW5nZT4mJiwgVmVjdG9yPEFYSUQ+JiYpOwogCi0gICAgY29uc3QgUHJvY2Vzc0lEIG1fcHJvY2Vz
c0lEIHsgcHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKCkgfTsKICAgICB1bnNpZ25lZCBtX21heFRy
ZWVEZXB0aCB7IDAgfTsKICAgICBXZWFrUHRyPEFYT2JqZWN0Q2FjaGU+IG1fYXhPYmplY3RDYWNo
ZTsKICAgICBPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZT4gbV9wYWdlQWN0aXZpdHlTdGF0ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggMGE3Nzc2MWFmZmRhLi5h
YzBmNTVmMGNkYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBA
IC03Miw2ICs3Miw3IEBACiAjaW1wb3J0ICJSZW5kZXJUZXh0Q29udHJvbC5oIgogI2ltcG9ydCAi
UmVuZGVyVmlldy5oIgogI2ltcG9ydCAiUmVuZGVyV2lkZ2V0LmgiCisjaW1wb3J0ICJSdW50aW1l
QXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgIlNjcm9sbFZpZXcuaCIKICNpbXBvcnQgIlRl
eHRJdGVyYXRvci5oIgogI2ltcG9ydCAiVmlzaWJsZVVuaXRzLmgiCkBAIC03NTksMTIgKzc2MCw4
IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIHJldHVybiBhY3Rp
b25zOwogfQogCi0tIChOU0FycmF5KilhZGRpdGlvbmFsQWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5h
bWVzCistIChOU0FycmF5KilfYWRkaXRpb25hbEFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lczoo
Y29uc3QgUmVmUHRyPEFYQ29yZU9iamVjdD4mKWJhY2tpbmdPYmplY3QKIHsKLSAgICBSZWZQdHI8
QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7Ci0gICAg
aWYgKCFiYWNraW5nT2JqZWN0KQotICAgICAgICByZXR1cm4gbmlsOwotCiAgICAgTlNNdXRhYmxl
QXJyYXkgKmFkZGl0aW9uYWwgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwogICAgIGlmIChiYWNr
aW5nT2JqZWN0LT5zdXBwb3J0c0FSSUFPd25zKCkpCiAgICAgICAgIFthZGRpdGlvbmFsIGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlPd25zQXR0cmlidXRlXTsKQEAgLTEyNDUsNyArMTI0Miw3IEBA
IEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIGVsc2UgaWYgKGJhY2tp
bmdPYmplY3QtPmlzVmlkZW8oKSkKICAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IHZpZGVvQXR0
cnMuZ2V0KCkuZ2V0KCk7CiAKLSAgICBOU0FycmF5ICphZGRpdGlvbmFsQXR0cmlidXRlcyA9IFtz
ZWxmIGFkZGl0aW9uYWxBY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXNdOworICAgIE5TQXJyYXkg
KmFkZGl0aW9uYWxBdHRyaWJ1dGVzID0gW3NlbGYgX2FkZGl0aW9uYWxBY2Nlc3NpYmlsaXR5QXR0
cmlidXRlTmFtZXM6YmFja2luZ09iamVjdF07CiAgICAgaWYgKFthZGRpdGlvbmFsQXR0cmlidXRl
cyBjb3VudF0pCiAgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBbb2JqZWN0QXR0cmlidXRlcyBh
cnJheUJ5QWRkaW5nT2JqZWN0c0Zyb21BcnJheTphZGRpdGlvbmFsQXR0cmlidXRlc107CiAKQEAg
LTEzMTQsNyArMTMxMSw4IEBAIC0gKEFYVGV4dE1hcmtlclJhbmdlUmVmKXNlbGVjdGVkVGV4dE1h
cmtlclJhbmdlCiAKIC0gKGlkKWFzc29jaWF0ZWRQbHVnaW5QYXJlbnQKIHsKLSAgICBpZiAoIXNl
bGYuYXhCYWNraW5nT2JqZWN0IHx8ICFzZWxmLmF4QmFja2luZ09iamVjdC0+aGFzQXBwbGVQREZB
bm5vdGF0aW9uQXR0cmlidXRlKCkpCisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09i
amVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIGlmICghYmFja2luZ09iamVjdCB8fCAh
YmFja2luZ09iamVjdC0+aGFzQXBwbGVQREZBbm5vdGF0aW9uQXR0cmlidXRlKCkpCiAgICAgICAg
IHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRvcmVs
ZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihz
ZWxmKV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7CkBAIC0xMzg4LDIyICsxMzg2LDE4IEBAIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlV
bmtub3duUm9sZTsKIH0KIAotLSAoQk9PTClpc0VtcHR5R3JvdXAKKy0gKEJPT0wpX2lzRW1wdHlH
cm91cDooY29uc3QgUmVmUHRyPEFYQ29yZU9iamVjdD4mKW9iamVjdAogewotICAgIFJlZlB0cjxB
WENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKLSAgICBp
ZiAoIWJhY2tpbmdPYmplY3QpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogI2lmIEVOQUJMRShN
T0RFTF9FTEVNRU5UKQotICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc01vZGVsKCkpCisgICAgaWYg
KG9iamVjdC0+aXNNb2RlbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAotICAg
IGlmIChiYWNraW5nT2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpCisgICAgaWYgKG9iamVjdC0+aXNS
ZW1vdGVGcmFtZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gW1tzZWxm
IHJvbGVdIGlzRXF1YWw6TlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlXQotICAgICAgICAmJiBiYWNr
aW5nT2JqZWN0LT5jaGlsZHJlbigpLmlzRW1wdHkoKQorICAgICAgICAmJiBvYmplY3QtPmNoaWxk
cmVuKCkuaXNFbXB0eSgpCiAgICAgICAgICYmICFbW3NlbGYgcmVuZGVyV2lkZ2V0Q2hpbGRyZW5d
IGNvdW50XTsKIH0KIApAQCAtMTQxNCw3ICsxNDA4LDcgQEAgLSAoTlNTdHJpbmcqKXN1YnJvbGUK
ICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBpZiAo
W3NlbGYgaXNFbXB0eUdyb3VwXSkKKyAgICBpZiAoW3NlbGYgX2lzRW1wdHlHcm91cDpiYWNraW5n
T2JqZWN0XSkKICAgICAgICAgcmV0dXJuIEAiQVhFbXB0eUdyb3VwIjsKIAogICAgIGF1dG8gc3Vi
cm9sZSA9IGJhY2tpbmdPYmplY3QtPnN1YnJvbGVQbGF0Zm9ybVN0cmluZygpOwpAQCAtMzgzOSw4
ICszODMzLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAvLyB1bnRpbCBp
dCBmaW5kcyBzb21ldGhpbmcgdGhhdCByZXNwb25kcyB0byB0aGlzIG1ldGhvZC4KIC0gKHBpZF90
KWFjY2Vzc2liaWxpdHlQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcgogewotICAgIFJlZlB0cjxB
WENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKLSAgICBy
ZXR1cm4gYmFja2luZ09iamVjdCA/IGJhY2tpbmdPYmplY3QtPnByb2Nlc3NJRCgpIDogMDsKKyAg
ICByZXR1cm4gcHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKCk7CiB9CiAKIC0gKE5TQXJyYXkgKilh
Y2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVWYWx1ZXM6KE5TU3RyaW5nICopYXR0cmlidXRlIGlu
ZGV4OihOU1VJbnRlZ2VyKWluZGV4IG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50CkBAIC0z
ODgzLDExICszODc2LDExIEBAIC0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1
dGVWYWx1ZXM6KE5TU3RyaW5nICopYXR0cmlidXRlIGluZGV4OihOU1VJCiAKICAgICAgICAgICAg
IC8vIFRoZSBhdHRhY2htZW50IHZpZXcgc2hvdWxkIGJlIHJldHVybmVkLCBvdGhlcndpc2UgQVgg
cGFsaW5kcm9tZSBlcnJvcnMgb2NjdXIuCiAgICAgICAgICAgICBpZCBhdHRhY2htZW50VmlldyA9
IG5pbDsKLSAgICAgICAgICAgIGlmIChbd3JhcHBlciBpc0tpbmRPZkNsYXNzOltXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciBjbGFzc11dICYmIHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0KSB7
Ci0gICAgICAgICAgICAgICAgaWYgKHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0LT5pc0F0dGFjaG1l
bnQoKSkKKyAgICAgICAgICAgIGlmIChSZWZQdHIgY2hpbGRPYmplY3QgPSBbd3JhcHBlciBpc0tp
bmRPZkNsYXNzOltXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBjbGFzc11dID8gd3JhcHBl
ci5heEJhY2tpbmdPYmplY3QgOiBudWxscHRyKSB7CisgICAgICAgICAgICAgICAgaWYgKGNoaWxk
T2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKICAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudFZp
ZXcgPSBbd3JhcHBlciBhdHRhY2htZW50Vmlld107Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAo
d3JhcHBlci5heEJhY2tpbmdPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSkKLSAgICAgICAgICAgICAg
ICAgICAgYXR0YWNobWVudFZpZXcgPSB3cmFwcGVyLmF4QmFja2luZ09iamVjdC0+cmVtb3RlRnJh
bWVQbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGls
ZE9iamVjdC0+aXNSZW1vdGVGcmFtZSgpKQorICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50
VmlldyA9IGNoaWxkT2JqZWN0LT5yZW1vdGVGcmFtZVBsYXRmb3JtRWxlbWVudCgpLmdldCgpOwog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBbc3ViYXJyYXkgYWRkT2JqZWN0OmF0dGFjaG1l
bnRWaWV3ID8gYXR0YWNobWVudFZpZXcgOiB3cmFwcGVyXTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>470345</attachid>
            <date>2024-03-13 08:57:52 -0700</date>
            <delta_ts>2024-03-13 23:34:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-270866-20240313085751.patch</filename>
            <type>text/plain</type>
            <size>16933</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSAwNTQ5ZGRiMzM3Y2NlZDYyNjNiYjk3YzQ5MjA1OWI2YjdmNjMxYWQ2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogVHVlLCAxMiBNYXIgMjAyNCAxMTozMDoyMCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFYOiBX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYyBhbmQgQVhJc29sYXRlZFRyZWUgZG8KIG1h
bnkgdW5uZWNlc3NhcnkgaXNNYWluVGhyZWFkKCkgY2FsbHMKIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yNzA4NjYgcmRhcjovL3Byb2JsZW0vMTI0NDY4MTI5CgpSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCk1hbnkgb2Ygb3VyIGhvdHRlc3QgY29kZXBhdGhzICh2
YXJpb3VzIHdyYXBwZXIgZnVuY3Rpb25zLCBBWElzb2xhdGVkVHJlZTo6e29iamVjdEZvcklELCBh
cHBseVBlbmRpbmdDaGFuZ2VzfSkKY2FsbCBpc01haW5UaHJlYWQoKSBlaXRoZXIgY29tcGxldGVs
eSB1bm5lY2Vzc2FyaWx5IChpLmUuIGluIHRoZSBjYXNlIG9mIHRoZSBBWElzb2xhdGVkVHJlZSBm
dW5jdGlvbnMpLCBvcgptb3JlIHRoYW4gbmVjZXNzYXJ5LiBUaGVzZSBzaG93IHVwIGluIHNhbXBs
ZXMuCgpUaGlzIHBhdGNoIGRvd25ncmFkZXMgdGhlIGlzTWFpblRocmVhZCgpIGNoZWNrcyBpbiBB
WElzb2xhdGVkVHJlZTo6e29iamVjdEZvcklELCBhcHBseVBlbmRpbmdDaGFuZ2VzfSB0byBBU1NF
UlQsCmFzIG5vIGNvZGVwYXRoIGV4aXN0cyBmb3IgdGhlc2UgdG8gYmUgY2FsbGVkIG9uIHRoZSBt
YWluLXRocmVhZC4KClRoaXMgcGF0Y2ggYWxzbyByZW1vdmVzIHVubmVjZXNzYXJ5IGNhbGxzIHRv
IGF4QmFja2luZ09iamVjdCBpbiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYyBhbmQg
aW5zdGVhZApwYXNzZXMgYSBzaW5nbGUgUmVmUHRyIG9iamVjdCBhcm91bmQgKHdoaWNoIGNhbiBh
bHNvIGJlIG1vcmUgY29ycmVjdCwgaS5lLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjY3Nzg2KS4KCkZ1cnRoZXJtb3JlLCAtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyIGFjY2Vzc2liaWxpdHlQcmVzZW50ZXJQcm9jZXNzSWRlbnRpZmllcl0gbm93IGRpcmVj
dGx5IGNhbGxzIHByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpLApyYXRoZXIgdGhhbiBnZXR0aW5n
IGF4QmFja2luZ09iamVjdCBmaXJzdCBhbmQgY2FsbGluZyBwcmVzZW50aW5nQXBwbGljYXRpb25Q
SUQoKSBvbiB0aGF0LgoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVj
dC5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHA6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpwcm9jZXNzSUQgY29uc3QpOiBEZWxl
dGVkLgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
OgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRP
YmplY3QuY3BwOgooV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZGV0YWNoUmVtb3RlUGFydHMp
OgooV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6dXBkYXRlQmFja2luZ1N0b3JlKToKKiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0Lmg6
CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRy
ZWUuY3BwOgooV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6Om9iamVjdEZvcklEIGNvbnN0KToKKFdl
YkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjphcHBseVBlbmRpbmdDaGFuZ2VzKToKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oOgooV2ViQ29y
ZTo6QVhJc29sYXRlZFRyZWU6OnByb2Nlc3NJRCBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbToKKFdlYkNvcmU6OkFY
UG9zdE5vdGlmaWNhdGlvbldpdGhVc2VySW5mbyk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2FkZGl0aW9uYWxBY2Nlc3NpYmls
aXR5QXR0cmlidXRlTmFtZXM6XSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORF0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciBfYXNzb2NpYXRlZFBsdWdpblBhcmVudF0pOgooLVtXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBfYXNzb2NpYXRlZFBsdWdpblBhcmVudFdpdGg6XSk6CigtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF9pc0VtcHR5R3JvdXA6XSk6CigtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIHN1YnJvbGVdKToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOl0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5UHJlc2VudGVyUHJvY2Vzc0lkZW50aWZpZXJdKToK
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUFycmF5QXR0cmli
dXRlVmFsdWVzOmluZGV4Om1heENvdW50Ol0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciBhZGRpdGlvbmFsQWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXSk6IERlbGV0ZWQuCigt
W1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFzc29jaWF0ZWRQbHVnaW5QYXJlbnRdKTog
RGVsZXRlZC4KKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgaXNFbXB0eUdyb3VwXSk6
IERlbGV0ZWQuCi0tLQogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3Qu
aCAgIHwgIDIgLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgICAg
IHwgIDYgLS0tCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggICAgICAg
fCAgMSAtCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwICAgICAgICAgfCAg
NSArLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmggICAgICAgICAgIHwgIDEg
LQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgICAgICAgICAgIHwgMTQgKyst
LS0tCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggICAgICAgICAgICAgfCAgMyAt
LQogLi4uL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0gICAgIHwgIDIgKy0K
IC4uLi9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaCAgICB8ICAyICstCiAu
Li4vbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tICAgfCA0NiArKysrKysr
KystLS0tLS0tLS0tCiAxMCBmaWxlcyBjaGFuZ2VkLCAzMSBpbnNlcnRpb25zKCspLCA1MSBkZWxl
dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29y
ZU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaApp
bmRleCBkN2I2Mjg0NjI5NDguLmNjMDgwNzU5ZDZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWENvcmVPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYQ29yZU9iamVjdC5oCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSA8dmFy
aWFudD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVu
dGlmaWVyLmg+Ci0jaW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVXZWFrUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1dhbGxUaW1lLmg+CkBAIC04MDksNyArODA4LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
T2JqZWN0SUQoQVhJRCBheElEKSB7IG1faWQgPSBheElEOyB9CiAgICAgQVhJRCBvYmplY3RJRCgp
IGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICB2aXJ0dWFsIEFYSUQgdHJlZUlEKCkgY29uc3Qg
PSAwOwotICAgIHZpcnR1YWwgUHJvY2Vzc0lEIHByb2Nlc3NJRCgpIGNvbnN0ID0gMDsKIAogICAg
IC8vIFdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgV2ViQ29yZSBvYmplY3QgdGhhdCB0aGlzIGFjY2Vz
c2libGUgb2JqZWN0CiAgICAgLy8gcmVwcmVzZW50cyBpcyBkZWxldGVkLCBpdCBtdXN0IGJlIGRl
dGFjaGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAKaW5kZXggNGVmMTUwMWU0MWM3Li40YjdmMDU4OTA4MDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cApAQCAtODUsNyArODUsNiBAQAogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJS
ZW5kZXJXaWRnZXQuaCIKICNpbmNsdWRlICJSZW5kZXJlZFBvc2l0aW9uLmgiCi0jaW5jbHVkZSAi
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNs
dWRlICJUZXh0Q2hlY2tlckNsaWVudC5oIgogI2luY2x1ZGUgIlRleHRDaGVja2luZ0hlbHBlci5o
IgpAQCAtMTE5LDExICsxMTgsNiBAQCBBWElEIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnRyZWVJRCgp
IGNvbnN0CiAgICAgcmV0dXJuIGNhY2hlID8gY2FjaGUtPnRyZWVJRCgpIDogQVhJRCgpOwogfQog
Ci1pbmxpbmUgUHJvY2Vzc0lEIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnByb2Nlc3NJRCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIHByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpOwotfQotCiBTdHJpbmcg
QWNjZXNzaWJpbGl0eU9iamVjdDo6ZGJnKCkgY29uc3QKIHsKICAgICBTdHJpbmcgYmFja2luZ0Vu
dGl0eURlc2NyaXB0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCA5ZDQ5NDUzZDg5ZTIuLmYyNmQ2NDYwYzY4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmgKQEAgLTY1LDcgKzY1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlP
YmplY3QoKTsKIAogICAgIEFYSUQgdHJlZUlEKCkgY29uc3QgZmluYWw7Ci0gICAgUHJvY2Vzc0lE
IHByb2Nlc3NJRCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFN0cmluZyBkYmcoKSBjb25zdCBmaW5h
bDsKIAogICAgIC8vIEFmdGVyIGNvbnN0cnVjdGluZyBhbiBBY2Nlc3NpYmlsaXR5T2JqZWN0LCBp
dCBtdXN0IGJlIGdpdmVuIGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKaW5kZXggZGVkOGYz
ZTQzMWQ5Li40OWI5MGJiZDYwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCkBAIC01
MDAsNiArNTAwLDggQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0OjpzZXRQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEFYUHJvcGVydHlWYWx1ZVYKIAogdm9pZCBBWElzb2xhdGVk
T2JqZWN0OjpkZXRhY2hSZW1vdGVQYXJ0cyhBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGUpCiB7
CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNo
aWxkSUQgOiBtX2NoaWxkcmVuSURzKSB7CiAgICAgICAgIGlmIChSZWZQdHIgY2hpbGQgPSB0cmVl
KCktPm9iamVjdEZvcklEKGNoaWxkSUQpKQogICAgICAgICAgICAgY2hpbGQtPmRldGFjaEZyb21Q
YXJlbnQoKTsKQEAgLTEwNzAsNyArMTA3Miw4IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6Zmls
bENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lCiAK
IHZvaWQgQVhJc29sYXRlZE9iamVjdDo6dXBkYXRlQmFja2luZ1N0b3JlKCkKIHsKLSAgICAvLyBU
aGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIG9uIGVpdGhlciB0aGUgbWFpbiBvciB0aGUgQVggdGhy
ZWFkcy4KKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKwogICAgIGlmIChSZWZQdHIgdHJl
ZSA9IHRoaXMtPnRyZWUoKSkKICAgICAgICAgdHJlZS0+YXBwbHlQZW5kaW5nQ2hhbmdlcygpOwog
ICAgIC8vIEFYSXNvbGF0ZWRUcmVlOjphcHBseVBlbmRpbmdDaGFuZ2VzIGNhbiBjYXVzZSB0aGlz
IG9iamVjdCBhbmQgLyBvciB0aGUgQVhJc29sYXRlZFRyZWUgdG8gYmUgZGVzdHJveWVkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZE9iamVjdC5oCmluZGV4IDlmNzZkYzVkYmIwYi4uYTVkNjllNWRiYTA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZE9iamVjdC5oCkBAIC01Niw3ICs1Niw2IEBAIHB1YmxpYzoKICAgICB+QVhJ
c29sYXRlZE9iamVjdCgpOwogCiAgICAgQVhJRCB0cmVlSUQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cmVlKCktPnRyZWVJRCgpOyB9Ci0gICAgUHJvY2Vzc0lEIHByb2Nlc3NJRCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHRyZWUoKS0+cHJvY2Vzc0lEKCk7IH0KICAgICBTdHJpbmcgZGJnKCkgY29u
c3QgZmluYWw7CiAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5Um9sZT4oaW50QXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWU6OlJvbGVWYWx1ZSkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAK
aW5kZXggNGY1Y2EwODk0OWQwLi5iM2JjMjJmNzY3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5j
cHAKQEAgLTIyOCwxMSArMjI4LDggQEAgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVk
VHJlZTo6dHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllciBwYWdlSUQpCiAKIFJlZlB0cjxBWElz
b2xhdGVkT2JqZWN0PiBBWElzb2xhdGVkVHJlZTo6b2JqZWN0Rm9ySUQoY29uc3QgQVhJRCBheElE
KSBjb25zdAogewotICAgIC8vIEluIGlzb2xhdGVkIHRyZWUgbW9kZSwgb25seSBhY2Nlc3MgbV9y
ZWFkZXJUaHJlYWROb2RlTWFwIG9uIHRoZSBBWCB0aHJlYWQuCi0gICAgaWYgKGlzTWFpblRocmVh
ZCgpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICB9CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisKICAgICByZXR1cm4g
YXhJRC5pc1ZhbGlkKCkgPyBtX3JlYWRlclRocmVhZE5vZGVNYXAuZ2V0KGF4SUQpIDogbnVsbHB0
cjsKIH0KIApAQCAtMTE2OSwxMiArMTE2Niw3IEBAIHN0ZDo6b3B0aW9uYWw8TGlzdEhhc2hTZXQ8
QVhJRD4+IEFYSXNvbGF0ZWRUcmVlOjpyZWxhdGVkT2JqZWN0SURzRm9yKGNvbnN0IEFYSXNvCiB2
b2lkIEFYSXNvbGF0ZWRUcmVlOjphcHBseVBlbmRpbmdDaGFuZ2VzKCkKIHsKICAgICBBWFRSQUNF
KCJBWElzb2xhdGVkVHJlZTo6YXBwbHlQZW5kaW5nQ2hhbmdlcyJfcyk7Ci0KLSAgICAvLyBJbiBp
c29sYXRlZCB0cmVlIG1vZGUsIG9ubHkgYXBwbHkgcGVuZGluZyBjaGFuZ2VzIG9uIHRoZSBBWCB0
aHJlYWQuCi0gICAgaWYgKGlzTWFpblRocmVhZCgpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
VHJlZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZFRyZWUuaAppbmRleCA4OGExNTUxMWNjMmIuLjRkMDIyZmYzNzY1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkVHJlZS5oCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiQVhUcmVlU3RvcmUuaCIKICNp
bmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRz
LmgiCi0jaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KQEAgLTMyNSw3ICszMjQsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmUHRyPEFYSXNv
bGF0ZWRUcmVlPiB0cmVlRm9yUGFnZUlEKHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+KTsK
ICAgICBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9yUGFnZUlEKFBhZ2VJZGVu
dGlmaWVyKTsKLSAgICBjb25zdGV4cHIgUHJvY2Vzc0lEIHByb2Nlc3NJRCgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJvY2Vzc0lEOyB9CiAgICAgQVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNoZSgpIGNv
bnN0OwogICAgIGNvbnN0ZXhwciBBWEdlb21ldHJ5TWFuYWdlciogZ2VvbWV0cnlNYW5hZ2VyKCkg
Y29uc3QgeyByZXR1cm4gbV9nZW9tZXRyeU1hbmFnZXIuZ2V0KCk7IH0KIApAQCAtNDI5LDcgKzQy
Nyw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPE5vZGVDaGFuZ2U+IHJlc29sdmVBcHBlbmRzKCk7
CiAgICAgdm9pZCBxdWV1ZUFwcGVuZHNBbmRSZW1vdmFscyhWZWN0b3I8Tm9kZUNoYW5nZT4mJiwg
VmVjdG9yPEFYSUQ+JiYpOwogCi0gICAgY29uc3QgUHJvY2Vzc0lEIG1fcHJvY2Vzc0lEIHsgcHJl
c2VudGluZ0FwcGxpY2F0aW9uUElEKCkgfTsKICAgICB1bnNpZ25lZCBtX21heFRyZWVEZXB0aCB7
IDAgfTsKICAgICBXZWFrUHRyPEFYT2JqZWN0Q2FjaGU+IG1fYXhPYmplY3RDYWNoZTsKICAgICBP
cHRpb25TZXQ8QWN0aXZpdHlTdGF0ZT4gbV9wYWdlQWN0aXZpdHlTdGF0ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCmluZGV4
IGEwNjgwMTVkZmNmOC4uNzhmYzViNzQ2YmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KQEAgLTI4Nyw3ICsyODcsNyBA
QCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnNldFNob3VsZFJlcG9zdE5vdGlmaWNhdGlvbnNGb3JUZXN0
cyhib29sIHZhbHVlKQogCiBzdGF0aWMgdm9pZCBBWFBvc3ROb3RpZmljYXRpb25XaXRoVXNlcklu
Zm8oQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgKm9iamVjdCwgTlNTdHJpbmcgKm5vdGlmaWNh
dGlvbiwgaWQgdXNlckluZm8sIGJvb2wgc2tpcFN5c3RlbU5vdGlmaWNhdGlvbiA9IGZhbHNlKQog
ewotICAgIGlmIChpZCBhc3NvY2lhdGVkUGx1Z2luUGFyZW50ID0gW29iamVjdCBhc3NvY2lhdGVk
UGx1Z2luUGFyZW50XSkKKyAgICBpZiAoaWQgYXNzb2NpYXRlZFBsdWdpblBhcmVudCA9IFtvYmpl
Y3QgX2Fzc29jaWF0ZWRQbHVnaW5QYXJlbnRdKQogICAgICAgICBvYmplY3QgPSBhc3NvY2lhdGVk
UGx1Z2luUGFyZW50OwogCiAgICAgLy8gVG8gc2ltcGxpZnkgbW9uaXRvcmluZyBmb3Igbm90aWZp
Y2F0aW9ucyBpbiB0ZXN0cywgcmVwb3N0IGFzIGEgc2ltcGxlIE5TTm90aWZpY2F0aW9uIGluc3Rl
YWQgb2YgZm9yY2luZyB0ZXN0IGluZnJhc3R1Y3R1cmUgdG8gc2V0dXAgYW4gSVBDIGNsaWVudCBh
bmQgZG8gYWxsIHRoZSB0cmFuc2xhdGlvbiBiZXR3ZWVuIFdlYkNvcmUgdHlwZXMgYW5kIHBsYXRm
b3JtIHNwZWNpZmljIElQQyB0eXBlcyBhbmQgYmFjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLmgKaW5kZXggOGI4MjIwOGQyZmIwLi5mMjZhNTlmZTE0YzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaApAQCAtMTM5LDcgKzEzOSw3IEBAIGV4dGVybiAi
QyIgQVhVSUVsZW1lbnRSZWYgTlNBY2Nlc3NpYmlsaXR5Q3JlYXRlQVhVSUVsZW1lbnRSZWYoaWQg
ZWxlbWVudCk7CiAtIChSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVmPil0ZXh0TWFya2VyRm9yRmly
c3RQb3NpdGlvbkluVGV4dENvbnRyb2w6KFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50Jil0ZXh0Q29udHJvbDsKIAogLy8gV2hlbiBhIHBsdWdpbiB1c2VzIGEgV2ViS2l0IGNvbnRy
b2wgdG8gYWN0IGFzIGEgc3Vycm9nYXRlIHZpZXcgKGUuZy4gUERGIHVzZSBXZWJLaXQgdG8gY3Jl
YXRlIHRleHQgZmllbGRzKS4KLS0gKGlkKWFzc29jaWF0ZWRQbHVnaW5QYXJlbnQ7CistIChpZClf
YXNzb2NpYXRlZFBsdWdpblBhcmVudDsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyTWFjLm1tCmluZGV4IDBhNzc3NjFhZmZkYS4uMDBhZmQ1YjZiMDJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtNzIsNiArNzIsNyBAQAogI2lt
cG9ydCAiUmVuZGVyVGV4dENvbnRyb2wuaCIKICNpbXBvcnQgIlJlbmRlclZpZXcuaCIKICNpbXBv
cnQgIlJlbmRlcldpZGdldC5oIgorI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgi
CiAjaW1wb3J0ICJTY3JvbGxWaWV3LmgiCiAjaW1wb3J0ICJUZXh0SXRlcmF0b3IuaCIKICNpbXBv
cnQgIlZpc2libGVVbml0cy5oIgpAQCAtNzU5LDEyICs3NjAsOCBAQCBBTExPV19ERVBSRUNBVEVE
X0lNUExFTUVOVEFUSU9OU19FTkQKICAgICByZXR1cm4gYWN0aW9uczsKIH0KIAotLSAoTlNBcnJh
eSopYWRkaXRpb25hbEFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lcworLSAoTlNBcnJheSopX2Fk
ZGl0aW9uYWxBY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXM6KGNvbnN0IFJlZlB0cjxBWENvcmVP
YmplY3Q+JiliYWNraW5nT2JqZWN0CiB7Ci0gICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2lu
Z09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwotICAgIGlmICghYmFja2luZ09iamVjdCkK
LSAgICAgICAgcmV0dXJuIG5pbDsKLQogICAgIE5TTXV0YWJsZUFycmF5ICphZGRpdGlvbmFsID0g
W05TTXV0YWJsZUFycmF5IGFycmF5XTsKICAgICBpZiAoYmFja2luZ09iamVjdC0+c3VwcG9ydHNB
UklBT3ducygpKQogICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
T3duc0F0dHJpYnV0ZV07CkBAIC0xMjQ1LDcgKzEyNDIsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkQKICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc1ZpZGVvKCkp
CiAgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSB2aWRlb0F0dHJzLmdldCgpLmdldCgpOwogCi0g
ICAgTlNBcnJheSAqYWRkaXRpb25hbEF0dHJpYnV0ZXMgPSBbc2VsZiBhZGRpdGlvbmFsQWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZU5hbWVzXTsKKyAgICBOU0FycmF5ICphZGRpdGlvbmFsQXR0cmlidXRl
cyA9IFtzZWxmIF9hZGRpdGlvbmFsQWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzOmJhY2tpbmdP
YmplY3RdOwogICAgIGlmIChbYWRkaXRpb25hbEF0dHJpYnV0ZXMgY291bnRdKQogICAgICAgICBv
YmplY3RBdHRyaWJ1dGVzID0gW29iamVjdEF0dHJpYnV0ZXMgYXJyYXlCeUFkZGluZ09iamVjdHNG
cm9tQXJyYXk6YWRkaXRpb25hbEF0dHJpYnV0ZXNdOwogCkBAIC0xMzEyLDkgKzEzMDksMTUgQEAg
LSAoQVhUZXh0TWFya2VyUmFuZ2VSZWYpc2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UKICAgICByZXR1
cm4gcmFuZ2U7CiB9CiAKLS0gKGlkKWFzc29jaWF0ZWRQbHVnaW5QYXJlbnQKKy0gKGlkKV9hc3Nv
Y2lhdGVkUGx1Z2luUGFyZW50Cit7CisgICAgUmVmUHRyPEFYQ29yZU9iamVjdD4gYmFja2luZ09i
amVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OworICAgIHJldHVybiBbc2VsZiBfYXNzb2NpYXRl
ZFBsdWdpblBhcmVudFdpdGg6c2VsZi5heEJhY2tpbmdPYmplY3RdOworfQorCistIChpZClfYXNz
b2NpYXRlZFBsdWdpblBhcmVudFdpdGg6KGNvbnN0IFJlZlB0cjxBWENvcmVPYmplY3Q+JiliYWNr
aW5nT2JqZWN0CiB7Ci0gICAgaWYgKCFzZWxmLmF4QmFja2luZ09iamVjdCB8fCAhc2VsZi5heEJh
Y2tpbmdPYmplY3QtPmhhc0FwcGxlUERGQW5ub3RhdGlvbkF0dHJpYnV0ZSgpKQorICAgIGlmICgh
YmFja2luZ09iamVjdCB8fCAhYmFja2luZ09iamVjdC0+aGFzQXBwbGVQREZBbm5vdGF0aW9uQXR0
cmlidXRlKCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eTo6cmV0cmlldmVBdXRvcmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbcHJvdGVjdGVk
U2VsZiA9IHJldGFpblB0cihzZWxmKV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7CkBAIC0xMzg4LDIy
ICsxMzkxLDE4IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIHJldHVy
biBOU0FjY2Vzc2liaWxpdHlVbmtub3duUm9sZTsKIH0KIAotLSAoQk9PTClpc0VtcHR5R3JvdXAK
Ky0gKEJPT0wpX2lzRW1wdHlHcm91cDooY29uc3QgUmVmUHRyPEFYQ29yZU9iamVjdD4mKW9iamVj
dAogewotICAgIFJlZlB0cjxBWENvcmVPYmplY3Q+IGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFj
a2luZ09iamVjdDsKLSAgICBpZiAoIWJhY2tpbmdPYmplY3QpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQotICAgIGlmIChiYWNraW5nT2JqZWN0LT5p
c01vZGVsKCkpCisgICAgaWYgKG9iamVjdC0+aXNNb2RlbCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAjZW5kaWYKIAotICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1JlbW90ZUZyYW1lKCkpCisg
ICAgaWYgKG9iamVjdC0+aXNSZW1vdGVGcmFtZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICByZXR1cm4gW1tzZWxmIHJvbGVdIGlzRXF1YWw6TlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xl
XQotICAgICAgICAmJiBiYWNraW5nT2JqZWN0LT5jaGlsZHJlbigpLmlzRW1wdHkoKQorICAgICAg
ICAmJiBvYmplY3QtPmNoaWxkcmVuKCkuaXNFbXB0eSgpCiAgICAgICAgICYmICFbW3NlbGYgcmVu
ZGVyV2lkZ2V0Q2hpbGRyZW5dIGNvdW50XTsKIH0KIApAQCAtMTQxNCw3ICsxNDEzLDcgQEAgLSAo
TlNTdHJpbmcqKXN1YnJvbGUKICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKLSAgICBpZiAoW3NlbGYgaXNFbXB0eUdyb3VwXSkKKyAgICBpZiAoW3NlbGYgX2lz
RW1wdHlHcm91cDpiYWNraW5nT2JqZWN0XSkKICAgICAgICAgcmV0dXJuIEAiQVhFbXB0eUdyb3Vw
IjsKIAogICAgIGF1dG8gc3Vicm9sZSA9IGJhY2tpbmdPYmplY3QtPnN1YnJvbGVQbGF0Zm9ybVN0
cmluZygpOwpAQCAtMjE4NCw3ICsyMTgzLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfRU5ECiAgICAgCiAgICAgLy8gVGhpcyBhbGxvd3MgdXMgdG8gY29ubmVjdCB0byBhIHBs
dWdpbiB0aGF0IGNyZWF0ZXMgYSBzaGFkb3cgbm9kZSBmb3IgZWRpdGluZyAobGlrZSBQREZzKS4K
ICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiX0FYQXNzb2NpYXRlZFBs
dWdpblBhcmVudCJdKQotICAgICAgICByZXR1cm4gW3NlbGYgYXNzb2NpYXRlZFBsdWdpblBhcmVu
dF07CisgICAgICAgIHJldHVybiBbc2VsZiBfYXNzb2NpYXRlZFBsdWdpblBhcmVudFdpdGg6YmFj
a2luZ09iamVjdF07CiAKICAgICAvLyB0aGlzIGlzIHVzZWQgb25seSBieSBEdW1wUmVuZGVyVHJl
ZSBmb3IgdGVzdGluZwogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJB
WENsaWNrUG9pbnQiXSkKQEAgLTM4MzksOCArMzgzOCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogLy8gdW50aWwgaXQgZmluZHMgc29tZXRoaW5nIHRoYXQgcmVzcG9uZHMg
dG8gdGhpcyBtZXRob2QuCiAtIChwaWRfdClhY2Nlc3NpYmlsaXR5UHJlc2VudGVyUHJvY2Vzc0lk
ZW50aWZpZXIKIHsKLSAgICBSZWZQdHI8QVhDb3JlT2JqZWN0PiBiYWNraW5nT2JqZWN0ID0gc2Vs
Zi5heEJhY2tpbmdPYmplY3Q7Ci0gICAgcmV0dXJuIGJhY2tpbmdPYmplY3QgPyBiYWNraW5nT2Jq
ZWN0LT5wcm9jZXNzSUQoKSA6IDA7CisgICAgcmV0dXJuIHByZXNlbnRpbmdBcHBsaWNhdGlvblBJ
RCgpOwogfQogCiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlVmFsdWVz
OihOU1N0cmluZyAqKWF0dHJpYnV0ZSBpbmRleDooTlNVSW50ZWdlcilpbmRleCBtYXhDb3VudDoo
TlNVSW50ZWdlciltYXhDb3VudApAQCAtMzg4MywxMSArMzg4MSwxMSBAQCAtIChOU0FycmF5ICop
YWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlVmFsdWVzOihOU1N0cmluZyAqKWF0dHJpYnV0ZSBp
bmRleDooTlNVSQogCiAgICAgICAgICAgICAvLyBUaGUgYXR0YWNobWVudCB2aWV3IHNob3VsZCBi
ZSByZXR1cm5lZCwgb3RoZXJ3aXNlIEFYIHBhbGluZHJvbWUgZXJyb3JzIG9jY3VyLgogICAgICAg
ICAgICAgaWQgYXR0YWNobWVudFZpZXcgPSBuaWw7Ci0gICAgICAgICAgICBpZiAoW3dyYXBwZXIg
aXNLaW5kT2ZDbGFzczpbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgY2xhc3NdXSAmJiB3
cmFwcGVyLmF4QmFja2luZ09iamVjdCkgewotICAgICAgICAgICAgICAgIGlmICh3cmFwcGVyLmF4
QmFja2luZ09iamVjdC0+aXNBdHRhY2htZW50KCkpCisgICAgICAgICAgICBpZiAoUmVmUHRyIGNo
aWxkT2JqZWN0ID0gW3dyYXBwZXIgaXNLaW5kT2ZDbGFzczpbV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgY2xhc3NdXSA/IHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0IDogbnVsbHB0cikgewor
ICAgICAgICAgICAgICAgIGlmIChjaGlsZE9iamVjdC0+aXNBdHRhY2htZW50KCkpCiAgICAgICAg
ICAgICAgICAgICAgIGF0dGFjaG1lbnRWaWV3ID0gW3dyYXBwZXIgYXR0YWNobWVudFZpZXddOwot
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0LT5pc1JlbW90
ZUZyYW1lKCkpCi0gICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRWaWV3ID0gd3JhcHBlci5h
eEJhY2tpbmdPYmplY3QtPnJlbW90ZUZyYW1lUGxhdGZvcm1FbGVtZW50KCkuZ2V0KCk7CisgICAg
ICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGRPYmplY3QtPmlzUmVtb3RlRnJhbWUoKSkKKyAgICAg
ICAgICAgICAgICAgICAgYXR0YWNobWVudFZpZXcgPSBjaGlsZE9iamVjdC0+cmVtb3RlRnJhbWVQ
bGF0Zm9ybUVsZW1lbnQoKS5nZXQoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgW3N1
YmFycmF5IGFkZE9iamVjdDphdHRhY2htZW50VmlldyA/IGF0dGFjaG1lbnRWaWV3IDogd3JhcHBl
cl07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>