<?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>236750</bug_id>
          
          <creation_ts>2022-02-16 21:04:21 -0800</creation_ts>
          <short_desc>AX: AccessibilityScrollView should be resilient to destruction of underlying scroll view</short_desc>
          <delta_ts>2022-02-18 08:48:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>WebKit Nightly Build</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>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1842688</commentid>
    <comment_count>0</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-02-16 21:04:21 -0800</bug_when>
    <thetext>Sometimes, we can get into a state where we have a valid AccessibilityScrollView, backed by an iframe, with a destroyed WeakPtr&lt;ScrollView&gt; m_scrollView. When this happens, all of the content inside the iframe becomes inaccessible. We need to handle the case where an iframe changes the frame it holds (e.g. respect the current frame in HTMLFrameOwner::contentFrame, which can change).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842689</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-16 21:04:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/89066221&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842698</commentid>
    <comment_count>2</comment_count>
      <attachid>452311</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-02-16 21:35:10 -0800</bug_when>
    <thetext>Created attachment 452311
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842702</commentid>
    <comment_count>3</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2022-02-16 21:52:37 -0800</bug_when>
    <thetext>patch looks good. is there any way to test this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842838</commentid>
    <comment_count>4</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-02-17 05:17:38 -0800</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #2)
&gt; Created attachment 452311 [details]
&gt; Patch

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

+AXObjectCache* AccessibilityScrollView::currentAxObjectCache() const
+{
+    if (auto* cache = axObjectCache())
+        return cache;
+
+    // It&apos;s possible that the document associated with `this` was destroyed (and thus axObjectCache() will return null),
+    // but also that `this` still represents a valid frame owner (e.g. iframe). Return the cache of the iframe in this case.
+    return m_frameOwnerElement ? m_frameOwnerElement-&gt;document().axObjectCache() : nullptr;
+}

Can we just override AXCoreObject::axObjectCache instead of adding a new method? 

The comment here only makes sense for the reader who knows the implementation of AccessibilityObject::axObjectCache. this could be written more succinctly and clearer like:

    auto* document = this-&gt;document();
    return document ? document-&gt;axObjectCache() :
        m_frameOwnerElement ? m_frameOwnerElement-&gt;document().axObjectCache() : nullptr;

Or perhaps better yet to override document(), and then you wouldn&apos;t need to override axObjectCache().

+Document* AccessibilityScrollView::contentDocument() const
+{
+    if (m_frameOwnerElement)
+        return m_frameOwnerElement-&gt;contentDocument();
+    return nullptr;
+}

do we need this method separate from document()? Or we can just override document()?

If we need this, it could be written in two lines with the ? :, which I think it is better.

+FrameView* AccessibilityScrollView::contentDocumentFrameView() const
+{
+    if (auto* document = contentDocument())
+        return document-&gt;view();
+    return nullptr;
+}

Can we override documentFrameView() instead?

@@ -157,7 +194,7 @@ AccessibilityScrollbar* AccessibilityScrollView::addChildScrollbar(Scrollbar* sc
     if (!scrollbar)
         return nullptr;

-    AXObjectCache* cache = axObjectCache();
+    AXObjectCache* cache = currentAxObjectCache();

No need for this if you override axObjectCache().


 AccessibilityObject* AccessibilityScrollView::webAreaObject() const
 {
-    if (!is&lt;FrameView&gt;(m_scrollView))
-        return nullptr;
+    auto* document = contentDocument();
+    if (is&lt;FrameView&gt;(m_scrollView))
+        document = downcast&lt;FrameView&gt;(*m_scrollView).frame().document();

-    Document* document = downcast&lt;FrameView&gt;(*m_scrollView).frame().document();
     if (!document || !document-&gt;hasLivingRenderTree())
         return nullptr;

-    if (AXObjectCache* cache = axObjectCache())
+    if (auto* cache = currentAxObjectCache())
         return cache-&gt;getOrCreate(document);
I think this can be simplified with the right overrides.

 AccessibilityObject* AccessibilityScrollView::parentObject() const
 {
-    if (!is&lt;FrameView&gt;(m_scrollView))
+    if (!is&lt;FrameView&gt;(m_scrollView)) {
+        if (m_frameOwnerElement) {
+            if (auto* cache = m_frameOwnerElement-&gt;document().axObjectCache())
+                return cache-&gt;getOrCreate(m_frameOwnerElement.get());
+        }
         return nullptr;
+    }

     AXObjectCache* cache = axObjectCache();
     if (!cache)

Can this be simplified with the right overrides? i.e., no need to get the cache in two different places.

 ScrollableArea* AccessibilityScrollView::getScrollableAreaIfScrollable() const
 {
-    return m_scrollView.get();
+    return currentScrollView();
 }

Can we inline this in the header like scrollView() for consistency?

--- a/Source/WebCore/accessibility/AccessibilityScrollView.h
+++ a/Source/WebCore/accessibility/AccessibilityScrollView.h

+    // Returns the document for m_frameOwnerElement&apos;s current `contentFrame` (if present).
+    Document* contentDocument() const;
+    FrameView* contentDocumentFrameView() const;
...
+    AXObjectCache* currentAxObjectCache() const;

Do we need these, or we can just override document() and documentFrameView()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843016</commentid>
    <comment_count>5</comment_count>
      <attachid>452400</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-02-17 12:00:08 -0800</bug_when>
    <thetext>Created attachment 452400
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843019</commentid>
    <comment_count>6</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-02-17 12:00:57 -0800</bug_when>
    <thetext>Fixed all of your comments. Still trying to get a minimal test case reproducing the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843078</commentid>
    <comment_count>7</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-02-17 12:55:12 -0800</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #5)
&gt; Created attachment 452400 [details]
&gt; Patch

 bool AccessibilityScrollView::isAttachment() const
 {
-    return m_scrollView &amp;&amp; m_scrollView-&gt;platformWidget();
+    if (auto* scrollView = currentScrollView())
+        return scrollView-&gt;platformWidget();
+    return false;

I personally prefer the two line version:

auto* scrollView = currentScrollView();
return scrollView ? scrollView-&gt;platformWidget() : false;

But not big deal.

 PlatformWidget AccessibilityScrollView::platformWidget() const
 {
-    return m_scrollView ? m_scrollView-&gt;platformWidget() : nullptr;
+    if (auto* scrollView = currentScrollView())
+        return scrollView-&gt;platformWidget();
+    return nullptr;
 }

Same here:

auto* scrollView = currentScrollView();
return scrollView ? scrollView-&gt;platformWidget() : nullptr;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843236</commentid>
    <comment_count>8</comment_count>
      <attachid>452465</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-02-17 18:51:06 -0800</bug_when>
    <thetext>Created attachment 452465
Minimal reproduction of issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843434</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-18 08:48:52 -0800</bug_when>
    <thetext>Committed r290130 (247474@main): &lt;https://commits.webkit.org/247474@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452400.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452311</attachid>
            <date>2022-02-16 21:35:10 -0800</date>
            <delta_ts>2022-02-17 12:00:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236750-20220216233508.patch</filename>
            <type>text/plain</type>
            <size>13319</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5ODk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODNiZTFlOGIxZjNmYzIx
ODdmZWJmNzc2ZGM0NWNkMzkyOWJiYzU5MS4uZjYyNDg5YjhjMmRmNDhkZmM0NjUwMTU2ODNjZWY0
ZDA0ODMyYThjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIyLTAyLTE2ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEFjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3IHNob3VsZCBiZSByZXNpbGllbnQgdG8gZGVzdHJ1Y3Rpb24gb2YgdW5kZXJs
eWluZyBzY3JvbGwgdmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM2NzUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU29tZXRpbWVzIHdlIGNhbiBnZXQgaW50byBhIHN0YXRlIHdoZXJlIHdlIGhhdmUg
YSB2YWxpZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldywKKyAgICAgICAgYmFja2VkIGJ5IGFuIGlm
cmFtZSwgd2l0aCBhIGRlc3Ryb3llZCBXZWFrUHRyPFNjcm9sbFZpZXc+IG1fc2Nyb2xsVmlldy4g
V2hlbiB0aGlzCisgICAgICAgIGhhcHBlbnMsIGFsbCBvZiB0aGUgY29udGVudCBpbnNpZGUgdGhl
IGlmcmFtZSBiZWNvbWVzIGluYWNjZXNzaWJsZS4gV2UgbmVlZCB0byBoYW5kbGUKKyAgICAgICAg
dGhlIGNhc2Ugd2hlcmUgYW4gaWZyYW1lIGNoYW5nZXMgdGhlIGZyYW1lIGFuZCBkb2N1bWVudCBp
dCBob2xkcyAoZS5nLiByZXNwZWN0IHRoZSBjdXJyZW50IGZyYW1lIGluCisgICAgICAgIEhUTUxG
cmFtZU93bmVyOjpjb250ZW50RnJhbWUsIHdoaWNoIGNhbiBjaGFuZ2UpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggZml4ZXMgdGhpcyBieSBjYWNoaW5nIGEgV2Vha1B0cjxIVE1MRnJhbWVPd25lckVs
ZW1lbnQ+IHdoZW4gYW4gQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcKKyAgICAgICAgaXMgY3JlYXRl
ZC4gTmV3IG1ldGhvZHMgY3VycmVudFNjcm9sbFZpZXcoKSBhbmQgY3VycmVudEF4T2JqZWN0Q2Fj
aGUoKSBoYXZlIGJlZW4gYWRkZWQgdG8gcHJlZmVyIHRoZQorICAgICAgICBvcmlnaW5hbCBtX3Nj
cm9sbFZpZXcsIGFuZCBmYWxsYmFjayB0byB0aGUgc2Nyb2xsdmlldyByZXByZXNlbnRlZCBieSB0
aGUgZnJhbWUgb3duZXIgZWxlbWVudCBpZiBtX3Njcm9sbFZpZXcKKyAgICAgICAgaGFzIGJlZW4g
ZGVzdHJveWVkLgorCisgICAgICAgIEFsbCBvdGhlciBtZXRob2RzIGluIHRoaXMgY2xhc3MgaGF2
ZSBiZWVuIHVwZGF0ZWQgdG8gdXNlIHRoZXNlIG5ldyBhYnN0cmFjdGlvbnMuCisKKyAgICAgICAg
VGhhbmtzIHRvIEFuZHJlcyBHb256YWxleiBmb3IgaGVscGluZyB0byBmaW5kIGFuZCBmaXggdGhp
cyBpc3N1ZS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OkFjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3KToKKyAgICAgICAgQ2FjaGUgdGhlIGZyYW1lIG93bmVyIG9mIHRo
ZSBwcm92aWRlZCBTY3JvbGxWaWV3KiBpbiBuZXcKKyAgICAgICAgbV9mcmFtZU93bmVyRWxlbWVu
dCBmaWVsZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpkZXRh
Y2hSZW1vdGVQYXJ0cyk6CisgICAgICAgIERldGFjaCBuZXcgbV9mcmFtZU93bmVyRWxlbWVudCBm
aWVsZC4KKworICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmN1cnJl
bnRTY3JvbGxWaWV3IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3OjpjdXJyZW50QXhPYmplY3RDYWNoZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y29udGVudERvY3VtZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojpjb250ZW50RG9jdW1lbnRGcmFtZVZp
ZXcgY29uc3QpOgorICAgICAgICBBZGRlZC4KKworICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXc6OmlzQXR0YWNobWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6cGxhdGZvcm1XaWRnZXQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OndpZGdldEZvckF0dGFjaG1lbnRWaWV3
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp1cGRh
dGVTY3JvbGxiYXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
OjphZGRDaGlsZFNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldzo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFkZENoaWxkcmVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp3ZWJBcmVhT2JqZWN0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjplbGVtZW50UmVjdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6ZG9jdW1l
bnRGcmFtZVZpZXcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9s
bFZpZXc6OnBhcmVudE9iamVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldzo6cGFyZW50T2JqZWN0SWZFeGlzdHMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmdldFNjcm9sbGFibGVBcmVhSWZTY3JvbGxh
YmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojpz
Y3JvbGxUbyBjb25zdCk6CisgICAgICAgIFVzZSBuZXcgY3VycmVudFNjcm9sbFZpZXcoKSBhbmQg
Y3VycmVudEF4T2JqZWN0Q2FjaGUoKSBtZXRob2RzIGluc3RlYWQKKyAgICAgICAgb2YgZGlyZWN0
bHkgdXNpbmcgbV9zY3JvbGxWaWV3IGFuZCBheE9iamVjdENhY2hlKCkuCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oOgorCiAyMDIyLTAyLTE2ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBBZGQgYSBkZWRp
Y2F0ZWQgRU5BQkxFIGZsYWcgZm9yIE1lZGlhUmVjb3JkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKaW5kZXgg
NjBjMjYxMjdkZjg1YmMxOWRhYzY5MzQwMjg4MjRmNGFmZGE1MjdjOS4uZDc4MGMzZDRkYjk5YzA2
YjFkNTlhNTBlNTNkMWY2ZjVjN2Y4NzQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKQEAgLTQxLDYgKzQx
LDggQEAgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KFNj
cm9sbFZpZXcqIHZpZXcpCiAgICAgOiBtX3Njcm9sbFZpZXcodmlldykKICAgICAsIG1fY2hpbGRy
ZW5EaXJ0eShmYWxzZSkKIHsKKyAgICBpZiAoaXM8RnJhbWVWaWV3Pih2aWV3KSkKKyAgICAgICAg
bV9mcmFtZU93bmVyRWxlbWVudCA9IGRvd25jYXN0PEZyYW1lVmlldz4oKnZpZXcpLmZyYW1lKCku
b3duZXJFbGVtZW50KCk7CiB9CiAKIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp+QWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXcoKQpAQCAtNTIsMTMgKzU0LDQzIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXc6OmRldGFjaFJlbW90ZVBhcnRzKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSBk
ZXRhCiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGV0YWNoUmVtb3RlUGFydHMoZGV0YWNo
bWVudFR5cGUpOwogICAgIG1fc2Nyb2xsVmlldyA9IG51bGxwdHI7CisgICAgbV9mcmFtZU93bmVy
RWxlbWVudCA9IG51bGxwdHI7CiB9CiAKIFJlZjxBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldz4gQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmNyZWF0ZShTY3JvbGxWaWV3KiB2aWV3KQogewogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KHZpZXcpKTsKIH0KLSAg
ICAKKworU2Nyb2xsVmlldyogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmN1cnJlbnRTY3JvbGxW
aWV3KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JvbGxWaWV3ID8gbV9zY3JvbGxWaWV3Lmdl
dCgpIDogY29udGVudERvY3VtZW50RnJhbWVWaWV3KCk7Cit9CisKK0FYT2JqZWN0Q2FjaGUqIEFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpjdXJyZW50QXhPYmplY3RDYWNoZSgpIGNvbnN0Cit7Cisg
ICAgaWYgKGF1dG8qIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpKQorICAgICAgICByZXR1cm4gY2Fj
aGU7CisKKyAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGRvY3VtZW50IGFzc29jaWF0ZWQg
d2l0aCBgdGhpc2Agd2FzIGRlc3Ryb3llZCAoYW5kIHRodXMgYXhPYmplY3RDYWNoZSgpIHdpbGwg
cmV0dXJuIG51bGwpLAorICAgIC8vIGJ1dCBhbHNvIHRoYXQgYHRoaXNgIHN0aWxsIHJlcHJlc2Vu
dHMgYSB2YWxpZCBmcmFtZSBvd25lciAoZS5nLiBpZnJhbWUpLiBSZXR1cm4gdGhlIGNhY2hlIG9m
IHRoZSBpZnJhbWUgaW4gdGhpcyBjYXNlLgorICAgIHJldHVybiBtX2ZyYW1lT3duZXJFbGVtZW50
ID8gbV9mcmFtZU93bmVyRWxlbWVudC0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCkgOiBudWxs
cHRyOworfQorCitEb2N1bWVudCogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmNvbnRlbnREb2N1
bWVudCgpIGNvbnN0Cit7CisgICAgaWYgKG1fZnJhbWVPd25lckVsZW1lbnQpCisgICAgICAgIHJl
dHVybiBtX2ZyYW1lT3duZXJFbGVtZW50LT5jb250ZW50RG9jdW1lbnQoKTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKworRnJhbWVWaWV3KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y29udGVu
dERvY3VtZW50RnJhbWVWaWV3KCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBj
b250ZW50RG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50LT52aWV3KCk7CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3OjpzY3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KQogewogICAgIHVwZGF0ZVNjcm9sbGJhcnMoKTsKQEAgLTgwLDE3ICsxMTIsMjEgQEAgQWNjZXNz
aWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnNjcm9sbEJhcihBY2Nlc3Np
YmlsaXR5T3JpZW50YXRpb24KIC8vIEluIFdlYktpdDIsIHRoZSBTY3JvbGxWaWV3IG9iamVjdCB3
aWxsIHJldHVybiB0aGUgQVggaW5mb3JtYXRpb24gKGJlY2F1c2UgdGhlcmUgYXJlIG5vIHBsYXRm
b3JtIHdpZGdldHMpLgogYm9vbCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6aXNBdHRhY2htZW50
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zY3JvbGxWaWV3ICYmIG1fc2Nyb2xsVmlldy0+cGxh
dGZvcm1XaWRnZXQoKTsKKyAgICBpZiAoYXV0byogc2Nyb2xsVmlldyA9IGN1cnJlbnRTY3JvbGxW
aWV3KCkpCisgICAgICAgIHJldHVybiBzY3JvbGxWaWV3LT5wbGF0Zm9ybVdpZGdldCgpOworICAg
IHJldHVybiBmYWxzZTsKIH0KIAogUGxhdGZvcm1XaWRnZXQgQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXc6OnBsYXRmb3JtV2lkZ2V0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zY3JvbGxWaWV3ID8g
bV9zY3JvbGxWaWV3LT5wbGF0Zm9ybVdpZGdldCgpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byog
c2Nyb2xsVmlldyA9IGN1cnJlbnRTY3JvbGxWaWV3KCkpCisgICAgICAgIHJldHVybiBzY3JvbGxW
aWV3LT5wbGF0Zm9ybVdpZGdldCgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBXaWRnZXQq
IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp3aWRnZXRGb3JBdHRhY2htZW50VmlldygpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fc2Nyb2xsVmlldy5nZXQoKTsKKyAgICByZXR1cm4gY3VycmVudFNj
cm9sbFZpZXcoKTsKIH0KICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmNhblNl
dEZvY3VzQXR0cmlidXRlKCkgY29uc3QKQEAgLTEyNSwxOSArMTYxLDIwIEBAIHZvaWQgQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXc6OnVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKQogCiB2b2lkIEFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKCkKIHsKLSAgICBpZiAoIW1f
c2Nyb2xsVmlldykKKyAgICBhdXRvKiBzY3JvbGxWaWV3ID0gY3VycmVudFNjcm9sbFZpZXcoKTsK
KyAgICBpZiAoIXNjcm9sbFZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX3Njcm9s
bFZpZXctPmhvcml6b250YWxTY3JvbGxiYXIoKSAmJiAhbV9ob3Jpem9udGFsU2Nyb2xsYmFyKQot
ICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXIgPSBhZGRDaGlsZFNjcm9sbGJhcihtX3Njcm9s
bFZpZXctPmhvcml6b250YWxTY3JvbGxiYXIoKSk7Ci0gICAgZWxzZSBpZiAoIW1fc2Nyb2xsVmll
dy0+aG9yaXpvbnRhbFNjcm9sbGJhcigpICYmIG1faG9yaXpvbnRhbFNjcm9sbGJhcikgeworICAg
IGlmIChzY3JvbGxWaWV3LT5ob3Jpem9udGFsU2Nyb2xsYmFyKCkgJiYgIW1faG9yaXpvbnRhbFNj
cm9sbGJhcikKKyAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyID0gYWRkQ2hpbGRTY3JvbGxi
YXIoc2Nyb2xsVmlldy0+aG9yaXpvbnRhbFNjcm9sbGJhcigpKTsKKyAgICBlbHNlIGlmICghc2Ny
b2xsVmlldy0+aG9yaXpvbnRhbFNjcm9sbGJhcigpICYmIG1faG9yaXpvbnRhbFNjcm9sbGJhcikg
ewogICAgICAgICByZW1vdmVDaGlsZFNjcm9sbGJhcihtX2hvcml6b250YWxTY3JvbGxiYXIuZ2V0
KCkpOwogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXIgPSBudWxscHRyOwogICAgIH0KIAot
ICAgIGlmIChtX3Njcm9sbFZpZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCkgJiYgIW1fdmVydGljYWxT
Y3JvbGxiYXIpCi0gICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXIgPSBhZGRDaGlsZFNjcm9sbGJh
cihtX3Njcm9sbFZpZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCkpOwotICAgIGVsc2UgaWYgKCFtX3Nj
cm9sbFZpZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCkgJiYgbV92ZXJ0aWNhbFNjcm9sbGJhcikgewor
ICAgIGlmIChzY3JvbGxWaWV3LT52ZXJ0aWNhbFNjcm9sbGJhcigpICYmICFtX3ZlcnRpY2FsU2Ny
b2xsYmFyKQorICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyID0gYWRkQ2hpbGRTY3JvbGxiYXIo
c2Nyb2xsVmlldy0+dmVydGljYWxTY3JvbGxiYXIoKSk7CisgICAgZWxzZSBpZiAoIXNjcm9sbFZp
ZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCkgJiYgbV92ZXJ0aWNhbFNjcm9sbGJhcikgewogICAgICAg
ICByZW1vdmVDaGlsZFNjcm9sbGJhcihtX3ZlcnRpY2FsU2Nyb2xsYmFyLmdldCgpKTsKICAgICAg
ICAgbV92ZXJ0aWNhbFNjcm9sbGJhciA9IG51bGxwdHI7CiAgICAgfQpAQCAtMTU3LDcgKzE5NCw3
IEBAIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjphZGRD
aGlsZFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjCiAgICAgaWYgKCFzY3JvbGxiYXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIAotICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gYXhPYmpl
Y3RDYWNoZSgpOworICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gY3VycmVudEF4T2JqZWN0Q2Fj
aGUoKTsKICAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTc5
LDcgKzIxNiw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmNvbXB1dGVBY2Nlc3Np
YmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB3ZWJBcmVh
ID0gd2ViQXJlYU9iamVjdCgpOwogICAgIGlmICghd2ViQXJlYSkKICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgCisKICAgICByZXR1cm4gd2ViQXJlYS0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgp
OwogfQogCkBAIC0xODcsMjMgKzIyNCwyMyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
OjphZGRDaGlsZHJlbigpCiB7CiAgICAgQVNTRVJUKCFtX2NoaWxkcmVuSW5pdGlhbGl6ZWQpOwog
ICAgIG1fY2hpbGRyZW5Jbml0aWFsaXplZCA9IHRydWU7Ci0gICAgCisKICAgICBhZGRDaGlsZCh3
ZWJBcmVhT2JqZWN0KCkpOwotICAgIHVwZGF0ZVNjcm9sbGJhcnMoKTsgICAgCisgICAgdXBkYXRl
U2Nyb2xsYmFycygpOwogfQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldzo6d2ViQXJlYU9iamVjdCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFpczxGcmFtZVZpZXc+
KG1fc2Nyb2xsVmlldykpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8qIGRvY3Vt
ZW50ID0gY29udGVudERvY3VtZW50KCk7CisgICAgaWYgKGlzPEZyYW1lVmlldz4obV9zY3JvbGxW
aWV3KSkKKyAgICAgICAgZG9jdW1lbnQgPSBkb3duY2FzdDxGcmFtZVZpZXc+KCptX3Njcm9sbFZp
ZXcpLmZyYW1lKCkuZG9jdW1lbnQoKTsKIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGRvd25j
YXN0PEZyYW1lVmlldz4oKm1fc2Nyb2xsVmlldykuZnJhbWUoKS5kb2N1bWVudCgpOwogICAgIGlm
ICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gYXhPYmpl
Y3RDYWNoZSgpKQorICAgIGlmIChhdXRvKiBjYWNoZSA9IGN1cnJlbnRBeE9iamVjdENhY2hlKCkp
CiAgICAgICAgIHJldHVybiBjYWNoZS0+Z2V0T3JDcmVhdGUoZG9jdW1lbnQpOwotICAgIAorCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTIyMywxMSArMjYwLDEzIEBAIEFYQ29yZU9iamVj
dCogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IElu
dFBvaW50JiBwb2luCiAKIExheW91dFJlY3QgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmVsZW1l
bnRSZWN0KCkgY29uc3QKIHsKLSAgICBpZiAoIW1fc2Nyb2xsVmlldykKKyAgICBhdXRvKiBzY3Jv
bGxWaWV3ID0gY3VycmVudFNjcm9sbFZpZXcoKTsKKyAgICBpZiAoIXNjcm9sbFZpZXcpCiAgICAg
ICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CiAKLSAgICBMYXlvdXRSZWN0IHJlY3QgPSBtX3Njcm9s
bFZpZXctPmZyYW1lUmVjdCgpOwotICAgIGZsb2F0IHRvcENvbnRlbnRJbnNldCA9IG1fc2Nyb2xs
Vmlldy0+dG9wQ29udGVudEluc2V0KCk7CisgICAgTGF5b3V0UmVjdCByZWN0ID0gc2Nyb2xsVmll
dy0+ZnJhbWVSZWN0KCk7CisgICAgZmxvYXQgdG9wQ29udGVudEluc2V0ID0gc2Nyb2xsVmlldy0+
dG9wQ29udGVudEluc2V0KCk7CisKICAgICAvLyBUb3AgY29udGVudCBpbnNldCBwdXNoZXMgdGhl
IGZyYW1lIGRvd24gYW5kIHNocmlua3MgaXQuCiAgICAgcmVjdC5tb3ZlKDAsIHRvcENvbnRlbnRJ
bnNldCk7CiAgICAgcmVjdC5jb250cmFjdCgwLCB0b3BDb250ZW50SW5zZXQpOwpAQCAtMjM3LDE1
ICsyNzYsMjAgQEAgTGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6ZWxlbWVudFJl
Y3QoKSBjb25zdAogRnJhbWVWaWV3KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6ZG9jdW1lbnRG
cmFtZVZpZXcoKSBjb25zdAogewogICAgIGlmICghaXM8RnJhbWVWaWV3PihtX3Njcm9sbFZpZXcp
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGNvbnRlbnREb2N1bWVu
dEZyYW1lVmlldygpOwogCiAgICAgcmV0dXJuIGRvd25jYXN0PEZyYW1lVmlldz4obV9zY3JvbGxW
aWV3LmdldCgpKTsKIH0gICAgCiAKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3OjpwYXJlbnRPYmplY3QoKSBjb25zdAogewotICAgIGlmICghaXM8RnJhbWVWaWV3
PihtX3Njcm9sbFZpZXcpKQorICAgIGlmICghaXM8RnJhbWVWaWV3PihtX3Njcm9sbFZpZXcpKSB7
CisgICAgICAgIGlmIChtX2ZyYW1lT3duZXJFbGVtZW50KSB7CisgICAgICAgICAgICBpZiAoYXV0
byogY2FjaGUgPSBtX2ZyYW1lT3duZXJFbGVtZW50LT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FjaGUtPmdldE9yQ3JlYXRlKG1fZnJhbWVPd25l
ckVsZW1lbnQuZ2V0KCkpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KIAogICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOwogICAgIGlm
ICghY2FjaGUpCkBAIC0yNjAsMjkgKzMwNCwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldzo6cGFyZW50T2JqZWN0KCkgY29uc3QKICAgICAKIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpwYXJlbnRPYmplY3RJZkV4aXN0
cygpIGNvbnN0CiB7Ci0gICAgaWYgKCFpczxGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldykpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotCi0gICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBheE9iamVj
dENhY2hlKCk7Ci0gICAgaWYgKCFjYWNoZSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyID0gZG93bmNhc3Q8RnJhbWVWaWV3PigqbV9z
Y3JvbGxWaWV3KS5mcmFtZSgpLm93bmVyRWxlbWVudCgpOwotICAgIGlmIChvd25lciAmJiBvd25l
ci0+cmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIGNhY2hlLT5nZXQob3duZXIpOwotCi0gICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHBhcmVudE9iamVjdCgpOwogfQogCiBTY3JvbGxh
YmxlQXJlYSogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmdldFNjcm9sbGFibGVBcmVhSWZTY3Jv
bGxhYmxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zY3JvbGxWaWV3LmdldCgpOworICAgIHJl
dHVybiBjdXJyZW50U2Nyb2xsVmlldygpOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3OjpzY3JvbGxUbyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7Ci0gICAgaWYgKG1f
c2Nyb2xsVmlldykKLSAgICAgICAgbV9zY3JvbGxWaWV3LT5zZXRTY3JvbGxQb3NpdGlvbihwb2lu
dCk7CisgICAgaWYgKGF1dG8qIHNjcm9sbFZpZXcgPSBjdXJyZW50U2Nyb2xsVmlldygpKQorICAg
ICAgICBzY3JvbGxWaWV3LT5zZXRTY3JvbGxQb3NpdGlvbihwb2ludCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgKaW5kZXggZjA0ZjJiMGU5ZDgyMmNlZmZjZTJj
YjY5ZDZiMTBkMGI0OWYzM2U4Yy4uM2JmODg3NDU0OTQ4NDFhOTcyMWIyYzM5ZDQzZDNkMzAxOTcw
MDkwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXcuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldyBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3PiBjcmVhdGUoU2Nyb2xsVmll
dyopOwogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpTY3JvbGxBcmVhOyB9Ci0gICAgU2Nyb2xsVmlldyog
c2Nyb2xsVmlldygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2Nyb2xsVmlldy5nZXQoKTsg
fQorICAgIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBj
dXJyZW50U2Nyb2xsVmlldygpOyB9CiAKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5U2Nyb2xs
VmlldygpOwogCkBAIC03Niw4ICs3NiwxOCBAQCBwcml2YXRlOgogICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGZpcnN0Q2hpbGQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB3ZWJBcmVhT2JqZWN0
KCk7IH0KICAgICBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKiBhZGRDaGlsZFNjcm9sbGJhcihTY3Jv
bGxiYXIqKTsKICAgICB2b2lkIHJlbW92ZUNoaWxkU2Nyb2xsYmFyKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqKTsKLSAgICAKKworICAgIC8vIFJldHVybnMgdGhlIGRvY3VtZW50IGZvciBtX2ZyYW1lT3du
ZXJFbGVtZW50J3MgY3VycmVudCBgY29udGVudEZyYW1lYCAoaWYgcHJlc2VudCkuCisgICAgRG9j
dW1lbnQqIGNvbnRlbnREb2N1bWVudCgpIGNvbnN0OworICAgIEZyYW1lVmlldyogY29udGVudERv
Y3VtZW50RnJhbWVWaWV3KCkgY29uc3Q7CisKKyAgICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IHNj
cm9sbHZpZXcgLS0gbV9zY3JvbGxWaWV3IGlmIGl0IGhhc24ndCBiZWVuIGRlc3Ryb3llZCwgYW5k
CisgICAgLy8gdGhlIGNvbnRlbnREb2N1bWVudEZyYW1lVmlldygpIG90aGVyd2lzZS4KKyAgICBT
Y3JvbGxWaWV3KiBjdXJyZW50U2Nyb2xsVmlldygpIGNvbnN0OworICAgIEFYT2JqZWN0Q2FjaGUq
IGN1cnJlbnRBeE9iamVjdENhY2hlKCkgY29uc3Q7CisKICAgICBXZWFrUHRyPFNjcm9sbFZpZXc+
IG1fc2Nyb2xsVmlldzsKKyAgICBXZWFrUHRyPEhUTUxGcmFtZU93bmVyRWxlbWVudD4gbV9mcmFt
ZU93bmVyRWxlbWVudDsKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gbV9ob3Jpem9u
dGFsU2Nyb2xsYmFyOwogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBtX3ZlcnRpY2Fs
U2Nyb2xsYmFyOwogICAgIGJvb2wgbV9jaGlsZHJlbkRpcnR5Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452400</attachid>
            <date>2022-02-17 12:00:08 -0800</date>
            <delta_ts>2022-02-18 08:48:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236750-20220217140007.patch</filename>
            <type>text/plain</type>
            <size>13648</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5ODk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODNiZTFlOGIxZjNmYzIx
ODdmZWJmNzc2ZGM0NWNkMzkyOWJiYzU5MS4uMmFiMDEzMDc0ZjMzNmFmZTM4OWQ4NDQzYmEzYjM1
OGNiYTgyMmRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIyLTAyLTE3ICBUeWxl
ciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEFjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3IHNob3VsZCBiZSByZXNpbGllbnQgdG8gZGVzdHJ1Y3Rpb24gb2YgdW5kZXJs
eWluZyBzY3JvbGwgdmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM2NzUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU29tZXRpbWVzIHdlIGNhbiBnZXQgaW50byBhIHN0YXRlIHdoZXJlIHdlIGhhdmUg
YSB2YWxpZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldywKKyAgICAgICAgYmFja2VkIGJ5IGFuIGlm
cmFtZSwgd2l0aCBhIGRlc3Ryb3llZCBXZWFrUHRyPFNjcm9sbFZpZXc+IG1fc2Nyb2xsVmlldy4g
V2hlbiB0aGlzCisgICAgICAgIGhhcHBlbnMsIGFsbCBvZiB0aGUgY29udGVudCBpbnNpZGUgdGhl
IGlmcmFtZSBiZWNvbWVzIGluYWNjZXNzaWJsZS4gV2UgbmVlZCB0byBoYW5kbGUKKyAgICAgICAg
dGhlIGNhc2Ugd2hlcmUgYW4gaWZyYW1lIGNoYW5nZXMgdGhlIGZyYW1lIGFuZCBkb2N1bWVudCBp
dCBob2xkcyAoZS5nLiByZXNwZWN0IHRoZSBjdXJyZW50IGZyYW1lIGluCisgICAgICAgIEhUTUxG
cmFtZU93bmVyOjpjb250ZW50RnJhbWUsIHdoaWNoIGNhbiBjaGFuZ2UpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggZml4ZXMgdGhpcyBieSBjYWNoaW5nIGEgV2Vha1B0cjxIVE1MRnJhbWVPd25lckVs
ZW1lbnQ+IHdoZW4gYW4gQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcKKyAgICAgICAgaXMgY3JlYXRl
ZC4gQSBuZXcgbWV0aG9kIGN1cnJlbnRTY3JvbGxWaWV3KCkgaGFzIGJlZW4gYWRkZWQgdG8gcHJl
ZmVyIHRoZSBvcmlnaW5hbCBtX3Njcm9sbFZpZXcsIGFuZAorICAgICAgICBmYWxsYmFjayB0byB0
aGUgc2Nyb2xsdmlldyByZXByZXNlbnRlZCBieSB0aGUgZnJhbWUgb3duZXIgZWxlbWVudCBpZiBt
X3Njcm9sbFZpZXcgaGFzIGJlZW4gZGVzdHJveWVkLgorCisgICAgICAgIFRoYW5rcyB0byBBbmRy
ZXMgR29uemFsZXogZm9yIGhlbHBpbmcgdG8gZmluZCBhbmQgZml4IHRoaXMgaXNzdWUuCisKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpBY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldyk6CisgICAgICAgIENhY2hlIHRoZSBmcmFtZSBvd25lciBvZiB0aGUgcHJvdmlkZWQgU2Ny
b2xsVmlldyogaW4gbmV3CisgICAgICAgIG1fZnJhbWVPd25lckVsZW1lbnQgZmllbGQuCisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6ZGV0YWNoUmVtb3RlUGFydHMp
OgorICAgICAgICBEZXRhY2ggbmV3IG1fZnJhbWVPd25lckVsZW1lbnQgZmllbGQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y3VycmVudFNjcm9sbFZpZXcgY29u
c3QpOgorICAgICAgICBBZGRlZC4KKworICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXc6OmlzQXR0YWNobWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldzo6cGxhdGZvcm1XaWRnZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
OjphZGRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dzo6d2ViQXJlYU9iamVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldzo6ZWxlbWVudFJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXc6OmRvY3VtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojpkb2N1bWVudEZyYW1lVmlldyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6cGFyZW50T2JqZWN0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpzY3JvbGxUbyBjb25z
dCk6CisgICAgICAgIFVzZSBuZXcgY3VycmVudFNjcm9sbFZpZXcoKSBtZXRob2QgaW5zdGVhZCBv
ZiBkaXJlY3RseSB1c2luZyBtX3Njcm9sbFZpZXcuCisKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3Ojp3aWRnZXRGb3JBdHRhY2htZW50VmlldyBjb25zdCk6CisgICAg
ICAgIElubGluZWQgaW4gaGVhZGVyLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXc6OnBhcmVudE9iamVjdElmRXhpc3RzIGNvbnN0KToKKyAgICAgICAgSW5saW5lZCBp
biBoZWFkZXIgYXMgY2FsbCB0byBwYXJlbnRPYmplY3QoKSBzaW5jZSB0aGVzZSBtZXRob2RzIHdl
cmUgZHVwbGljYXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
OjpnZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSBjb25zdCk6CisgICAgICAgIElubGluZWQg
aW4gaGVhZGVyLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXcuaDoKKwogMjAyMi0wMi0xNiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5j
b20+CiAKICAgICAgICAgQWRkIGEgZGVkaWNhdGVkIEVOQUJMRSBmbGFnIGZvciBNZWRpYVJlY29y
ZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXcuY3BwCmluZGV4IDYwYzI2MTI3ZGY4NWJjMTlkYWM2OTM0MDI4ODI0ZjRh
ZmRhNTI3YzkuLjZiZWVhNTEzYWRiYzNkMDU0MWQ4MjNiN2ZjZTQ0NTRhNjZkMmRiZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXcuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAj
aW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVu
dC5oIgotI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNDEsNiArNDAsOCBAQCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dzo6QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoU2Nyb2xsVmlldyogdmlldykKICAgICA6IG1fc2Ny
b2xsVmlldyh2aWV3KQogICAgICwgbV9jaGlsZHJlbkRpcnR5KGZhbHNlKQogeworICAgIGlmIChp
czxGcmFtZVZpZXc+KHZpZXcpKQorICAgICAgICBtX2ZyYW1lT3duZXJFbGVtZW50ID0gZG93bmNh
c3Q8RnJhbWVWaWV3PigqdmlldykuZnJhbWUoKS5vd25lckVsZW1lbnQoKTsKIH0KIAogQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXc6On5BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpCkBAIC01MiwxMyAr
NTMsMTkgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6ZGV0YWNoUmVtb3RlUGFydHMo
QWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlIGRldGEKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpkZXRhY2hSZW1vdGVQYXJ0cyhkZXRhY2htZW50VHlwZSk7CiAgICAgbV9zY3JvbGxWaWV3
ID0gbnVsbHB0cjsKKyAgICBtX2ZyYW1lT3duZXJFbGVtZW50ID0gbnVsbHB0cjsKIH0KIAogUmVm
PEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3PiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y3JlYXRl
KFNjcm9sbFZpZXcqIHZpZXcpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXcodmlldykpOwogfQotICAgIAorCitTY3JvbGxWaWV3KiBBY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldzo6Y3VycmVudFNjcm9sbFZpZXcoKSBjb25zdAoreworICAgIHJldHVybiBt
X3Njcm9sbFZpZXcgPyBtX3Njcm9sbFZpZXcuZ2V0KCkgOiBkb2N1bWVudEZyYW1lVmlldygpOwor
fQorCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6c2Nyb2xs
QmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICB1cGRhdGVT
Y3JvbGxiYXJzKCk7CkBAIC04MCwxOSArODcsMTggQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24K
IC8vIEluIFdlYktpdDIsIHRoZSBTY3JvbGxWaWV3IG9iamVjdCB3aWxsIHJldHVybiB0aGUgQVgg
aW5mb3JtYXRpb24gKGJlY2F1c2UgdGhlcmUgYXJlIG5vIHBsYXRmb3JtIHdpZGdldHMpLgogYm9v
bCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6aXNBdHRhY2htZW50KCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9zY3JvbGxWaWV3ICYmIG1fc2Nyb2xsVmlldy0+cGxhdGZvcm1XaWRnZXQoKTsKKyAg
ICBpZiAoYXV0byogc2Nyb2xsVmlldyA9IGN1cnJlbnRTY3JvbGxWaWV3KCkpCisgICAgICAgIHJl
dHVybiBzY3JvbGxWaWV3LT5wbGF0Zm9ybVdpZGdldCgpOworICAgIHJldHVybiBmYWxzZTsKIH0K
IAogUGxhdGZvcm1XaWRnZXQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnBsYXRmb3JtV2lkZ2V0
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zY3JvbGxWaWV3ID8gbV9zY3JvbGxWaWV3LT5wbGF0
Zm9ybVdpZGdldCgpIDogbnVsbHB0cjsKKyAgICBpZiAoYXV0byogc2Nyb2xsVmlldyA9IGN1cnJl
bnRTY3JvbGxWaWV3KCkpCisgICAgICAgIHJldHVybiBzY3JvbGxWaWV3LT5wbGF0Zm9ybVdpZGdl
dCgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCi1XaWRnZXQqIEFjY2Vzc2liaWxpdHlTY3Jv
bGxWaWV3Ojp3aWRnZXRGb3JBdHRhY2htZW50VmlldygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
c2Nyb2xsVmlldy5nZXQoKTsKLX0KLSAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6
OmNhblNldEZvY3VzQXR0cmlidXRlKCkgY29uc3QKIHsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiB3ZWJBcmVhID0gd2ViQXJlYU9iamVjdCgpOwpAQCAtMTI1LDE5ICsxMzEsMjAgQEAgdm9pZCBB
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6dXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpCiAKIHZv
aWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoKQogewotICAgIGlm
ICghbV9zY3JvbGxWaWV3KQorICAgIGF1dG8qIHNjcm9sbFZpZXcgPSBjdXJyZW50U2Nyb2xsVmll
dygpOworICAgIGlmICghc2Nyb2xsVmlldykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1f
c2Nyb2xsVmlldy0+aG9yaXpvbnRhbFNjcm9sbGJhcigpICYmICFtX2hvcml6b250YWxTY3JvbGxi
YXIpCi0gICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhciA9IGFkZENoaWxkU2Nyb2xsYmFyKG1f
c2Nyb2xsVmlldy0+aG9yaXpvbnRhbFNjcm9sbGJhcigpKTsKLSAgICBlbHNlIGlmICghbV9zY3Jv
bGxWaWV3LT5ob3Jpem9udGFsU2Nyb2xsYmFyKCkgJiYgbV9ob3Jpem9udGFsU2Nyb2xsYmFyKSB7
CisgICAgaWYgKHNjcm9sbFZpZXctPmhvcml6b250YWxTY3JvbGxiYXIoKSAmJiAhbV9ob3Jpem9u
dGFsU2Nyb2xsYmFyKQorICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXIgPSBhZGRDaGlsZFNj
cm9sbGJhcihzY3JvbGxWaWV3LT5ob3Jpem9udGFsU2Nyb2xsYmFyKCkpOworICAgIGVsc2UgaWYg
KCFzY3JvbGxWaWV3LT5ob3Jpem9udGFsU2Nyb2xsYmFyKCkgJiYgbV9ob3Jpem9udGFsU2Nyb2xs
YmFyKSB7CiAgICAgICAgIHJlbW92ZUNoaWxkU2Nyb2xsYmFyKG1faG9yaXpvbnRhbFNjcm9sbGJh
ci5nZXQoKSk7CiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhciA9IG51bGxwdHI7CiAgICAg
fQogCi0gICAgaWYgKG1fc2Nyb2xsVmlldy0+dmVydGljYWxTY3JvbGxiYXIoKSAmJiAhbV92ZXJ0
aWNhbFNjcm9sbGJhcikKLSAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhciA9IGFkZENoaWxkU2Ny
b2xsYmFyKG1fc2Nyb2xsVmlldy0+dmVydGljYWxTY3JvbGxiYXIoKSk7Ci0gICAgZWxzZSBpZiAo
IW1fc2Nyb2xsVmlldy0+dmVydGljYWxTY3JvbGxiYXIoKSAmJiBtX3ZlcnRpY2FsU2Nyb2xsYmFy
KSB7CisgICAgaWYgKHNjcm9sbFZpZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCkgJiYgIW1fdmVydGlj
YWxTY3JvbGxiYXIpCisgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXIgPSBhZGRDaGlsZFNjcm9s
bGJhcihzY3JvbGxWaWV3LT52ZXJ0aWNhbFNjcm9sbGJhcigpKTsKKyAgICBlbHNlIGlmICghc2Ny
b2xsVmlldy0+dmVydGljYWxTY3JvbGxiYXIoKSAmJiBtX3ZlcnRpY2FsU2Nyb2xsYmFyKSB7CiAg
ICAgICAgIHJlbW92ZUNoaWxkU2Nyb2xsYmFyKG1fdmVydGljYWxTY3JvbGxiYXIuZ2V0KCkpOwog
ICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyID0gbnVsbHB0cjsKICAgICB9CkBAIC0xNzksNyAr
MTg2LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Y29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKSBjb25zdAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHdlYkFyZWEgPSB3
ZWJBcmVhT2JqZWN0KCk7CiAgICAgaWYgKCF3ZWJBcmVhKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAKKwogICAgIHJldHVybiB3ZWJBcmVhLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCk7CiB9
CiAKQEAgLTE4NywyMyArMTk0LDIwIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmFk
ZENoaWxkcmVuKCkKIHsKICAgICBBU1NFUlQoIW1fY2hpbGRyZW5Jbml0aWFsaXplZCk7CiAgICAg
bV9jaGlsZHJlbkluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICAKKwogICAgIGFkZENoaWxkKHdlYkFy
ZWFPYmplY3QoKSk7Ci0gICAgdXBkYXRlU2Nyb2xsYmFycygpOyAgICAKKyAgICB1cGRhdGVTY3Jv
bGxiYXJzKCk7CiB9CiAKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3Ojp3ZWJBcmVhT2JqZWN0KCkgY29uc3QKIHsKLSAgICBpZiAoIWlzPEZyYW1lVmlldz4obV9z
Y3JvbGxWaWV3KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBkb3duY2FzdDxGcmFtZVZpZXc+KCptX3Njcm9sbFZpZXcpLmZyYW1lKCkuZG9jdW1l
bnQoKTsKKyAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CiAgICAgaWYgKCFk
b2N1bWVudCB8fCAhZG9jdW1lbnQtPmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBheE9iamVjdENh
Y2hlKCkpCisgICAgaWYgKGF1dG8qIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpKQogICAgICAgICBy
ZXR1cm4gY2FjaGUtPmdldE9yQ3JlYXRlKGRvY3VtZW50KTsKLSAgICAKKwogICAgIHJldHVybiBu
dWxscHRyOwogfQogCkBAIC0yMjMsNjYgKzIyNyw1NyBAQCBBWENvcmVPYmplY3QqIEFjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3OjphY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9p
bgogCiBMYXlvdXRSZWN0IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjplbGVtZW50UmVjdCgpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX3Njcm9sbFZpZXcpCisgICAgYXV0byogc2Nyb2xsVmlldyA9IGN1
cnJlbnRTY3JvbGxWaWV3KCk7CisgICAgaWYgKCFzY3JvbGxWaWV3KQogICAgICAgICByZXR1cm4g
TGF5b3V0UmVjdCgpOwogCi0gICAgTGF5b3V0UmVjdCByZWN0ID0gbV9zY3JvbGxWaWV3LT5mcmFt
ZVJlY3QoKTsKLSAgICBmbG9hdCB0b3BDb250ZW50SW5zZXQgPSBtX3Njcm9sbFZpZXctPnRvcENv
bnRlbnRJbnNldCgpOworICAgIExheW91dFJlY3QgcmVjdCA9IHNjcm9sbFZpZXctPmZyYW1lUmVj
dCgpOworICAgIGZsb2F0IHRvcENvbnRlbnRJbnNldCA9IHNjcm9sbFZpZXctPnRvcENvbnRlbnRJ
bnNldCgpOworCiAgICAgLy8gVG9wIGNvbnRlbnQgaW5zZXQgcHVzaGVzIHRoZSBmcmFtZSBkb3du
IGFuZCBzaHJpbmtzIGl0LgogICAgIHJlY3QubW92ZSgwLCB0b3BDb250ZW50SW5zZXQpOwogICAg
IHJlY3QuY29udHJhY3QoMCwgdG9wQ29udGVudEluc2V0KTsKICAgICByZXR1cm4gcmVjdDsKIH0K
IAotRnJhbWVWaWV3KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6ZG9jdW1lbnRGcmFtZVZpZXco
KSBjb25zdAorRG9jdW1lbnQqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojpkb2N1bWVudCgpIGNv
bnN0CiB7Ci0gICAgaWYgKCFpczxGcmFtZVZpZXc+KG1fc2Nyb2xsVmlldykpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGRvd25jYXN0PEZyYW1lVmlldz4obV9zY3JvbGxW
aWV3LmdldCgpKTsKLX0gICAgCisgICAgaWYgKGlzPEZyYW1lVmlldz4obV9zY3JvbGxWaWV3KSkK
KyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEZyYW1lVmlldz4oKm1fc2Nyb2xsVmlldykuZnJhbWUo
KS5kb2N1bWVudCgpOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb2N1bWVudCgp
OworfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6cGFy
ZW50T2JqZWN0KCkgY29uc3QKK0ZyYW1lVmlldyogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OmRv
Y3VtZW50RnJhbWVWaWV3KCkgY29uc3QKIHsKLSAgICBpZiAoIWlzPEZyYW1lVmlldz4obV9zY3Jv
bGxWaWV3KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKGlzPEZyYW1lVmlldz4o
bV9zY3JvbGxWaWV3KSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEZyYW1lVmlldz4obV9zY3Jv
bGxWaWV3LmdldCgpKTsKIAotICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gYXhPYmplY3RDYWNo
ZSgpOwotICAgIGlmICghY2FjaGUpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgSFRN
TEZyYW1lT3duZXJFbGVtZW50KiBvd25lciA9IGRvd25jYXN0PEZyYW1lVmlldz4oKm1fc2Nyb2xs
VmlldykuZnJhbWUoKS5vd25lckVsZW1lbnQoKTsKLSAgICBpZiAob3duZXIgJiYgb3duZXItPnJl
bmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBjYWNoZS0+Z2V0T3JDcmVhdGUob3duZXIpOworICAg
IGlmIChtX2ZyYW1lT3duZXJFbGVtZW50ICYmIG1fZnJhbWVPd25lckVsZW1lbnQtPmNvbnRlbnRE
b2N1bWVudCgpKQorICAgICAgICByZXR1cm4gbV9mcmFtZU93bmVyRWxlbWVudC0+Y29udGVudERv
Y3VtZW50KCktPnZpZXcoKTsKIAogICAgIHJldHVybiBudWxscHRyOwogfQotICAgIAotQWNjZXNz
aWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnBhcmVudE9iamVjdElmRXhp
c3RzKCkgY29uc3QKLXsKLSAgICBpZiAoIWlzPEZyYW1lVmlldz4obV9zY3JvbGxWaWV3KSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3OjpwYXJlbnRPYmplY3QoKSBjb25zdAorewogICAgIEFYT2JqZWN0Q2FjaGUq
IGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOwogICAgIGlmICghY2FjaGUpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lciA9IGRvd25jYXN0
PEZyYW1lVmlldz4oKm1fc2Nyb2xsVmlldykuZnJhbWUoKS5vd25lckVsZW1lbnQoKTsKKyAgICBI
VE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyID0gbV9mcmFtZU93bmVyRWxlbWVudC5nZXQoKTsK
KyAgICBpZiAoaXM8RnJhbWVWaWV3PihtX3Njcm9sbFZpZXcpKQorICAgICAgICBvd25lciA9IGRv
d25jYXN0PEZyYW1lVmlldz4oKm1fc2Nyb2xsVmlldykuZnJhbWUoKS5vd25lckVsZW1lbnQoKTsK
KwogICAgIGlmIChvd25lciAmJiBvd25lci0+cmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIGNh
Y2hlLT5nZXQob3duZXIpOworICAgICAgICByZXR1cm4gY2FjaGUtPmdldE9yQ3JlYXRlKG93bmVy
KTsKIAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1TY3JvbGxhYmxlQXJlYSogQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXc6OmdldFNjcm9sbGFibGVBcmVhSWZTY3JvbGxhYmxlKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9zY3JvbGxWaWV3LmdldCgpOwotfQotCiB2b2lkIEFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3OjpzY3JvbGxUbyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7Ci0gICAg
aWYgKG1fc2Nyb2xsVmlldykKLSAgICAgICAgbV9zY3JvbGxWaWV3LT5zZXRTY3JvbGxQb3NpdGlv
bihwb2ludCk7CisgICAgaWYgKGF1dG8qIHNjcm9sbFZpZXcgPSBjdXJyZW50U2Nyb2xsVmlldygp
KQorICAgICAgICBzY3JvbGxWaWV3LT5zZXRTY3JvbGxQb3NpdGlvbihwb2ludCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgKaW5kZXggZjA0ZjJiMGU5ZDgyMmNl
ZmZjZTJjYjY5ZDZiMTBkMGI0OWYzM2U4Yy4uYWRjNjVjYTVhMDMzODk3NzI4NmZjM2Y2MGE2NzY4
YzUyMjVhOTcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCisjaW5jbHVkZSAiU2Nyb2xsVmll
dy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC0zNyw3ICszOCw3IEBAIGNsYXNz
IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3IGZpbmFsIDogcHVibGljIEFjY2Vzc2liaWxpdHlPYmpl
Y3QgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc+IGNy
ZWF0ZShTY3JvbGxWaWV3Kik7CiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWNjZXNzaWJpbGl0eVJvbGU6OlNjcm9sbEFyZWE7IH0KLSAg
ICBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zY3Jv
bGxWaWV3LmdldCgpOyB9CisgICAgU2Nyb2xsVmlldyogc2Nyb2xsVmlldygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGN1cnJlbnRTY3JvbGxWaWV3KCk7IH0KIAogICAgIHZpcnR1YWwgfkFjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3KCk7CiAKQEAgLTQ3LDcgKzQ4LDggQEAgcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyhTY3JvbGxWaWV3Kik7CiAgICAgdm9pZCBk
ZXRhY2hSZW1vdGVQYXJ0cyhBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGUpIG92ZXJyaWRlOwog
Ci0gICAgU2Nyb2xsYWJsZUFyZWEqIGdldFNjcm9sbGFibGVBcmVhSWZTY3JvbGxhYmxlKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgU2Nyb2xsVmlldyogY3VycmVudFNjcm9sbFZpZXcoKSBjb25zdDsK
KyAgICBTY3JvbGxhYmxlQXJlYSogZ2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBjdXJyZW50U2Nyb2xsVmlldygpOyB9CiAgICAgdm9pZCBzY3Jv
bGxUbyhjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgY29tcHV0ZUFj
Y2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXdJbnN0YW5jZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KQEAgLTU1LDcgKzU3LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBib29sIGlzQXR0YWNobWVu
dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFBsYXRmb3JtV2lkZ2V0IHBsYXRmb3JtV2lkZ2V0KCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgV2lkZ2V0KiB3aWRnZXRGb3JBdHRhY2htZW50VmlldygpIGNv
bnN0IG92ZXJyaWRlOworICAgIFdpZGdldCogd2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBjdXJyZW50U2Nyb2xsVmlldygpOyB9CiAgICAgCiAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogc2Nyb2xsQmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBhZGRDaGlsZHJlbigpIG92ZXJyaWRlOwpAQCAtNjcsMTcgKzY5LDE5
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRGb2N1c2VkKGJvb2wpIG92ZXJyaWRlOwogICAgIGJv
b2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzRm9j
dXNlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIAorCisgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgRnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0
IG92ZXJyaWRlOwogICAgIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3QoKSBjb25zdCBvdmVycmlkZTsK
LSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0IG92
ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdElmRXhpc3RzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcGFyZW50T2JqZWN0KCk7IH0KIAogICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGZpcnN0Q2hpbGQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB3ZWJBcmVh
T2JqZWN0KCk7IH0KICAgICBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKiBhZGRDaGlsZFNjcm9sbGJh
cihTY3JvbGxiYXIqKTsKICAgICB2b2lkIHJlbW92ZUNoaWxkU2Nyb2xsYmFyKEFjY2Vzc2liaWxp
dHlPYmplY3QqKTsKLSAgICAKKwogICAgIFdlYWtQdHI8U2Nyb2xsVmlldz4gbV9zY3JvbGxWaWV3
OworICAgIFdlYWtQdHI8SFRNTEZyYW1lT3duZXJFbGVtZW50PiBtX2ZyYW1lT3duZXJFbGVtZW50
OwogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBtX2hvcml6b250YWxTY3JvbGxiYXI7
CiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG1fdmVydGljYWxTY3JvbGxiYXI7CiAg
ICAgYm9vbCBtX2NoaWxkcmVuRGlydHk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>452465</attachid>
            <date>2022-02-17 18:51:06 -0800</date>
            <delta_ts>2022-02-17 19:25:47 -0800</delta_ts>
            <desc>Minimal reproduction of issue</desc>
            <filename>file_236750.txt</filename>
            <type>text/plain</type>
            <size>939</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUw+DQo8aHRtbD4NCjxoZWFkPg0KPC9oZWFkPg0KPGJvZHkgaWQ9ImJvZHki
Pg0KDQo8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InRleHQtaW5wdXQtb3V0c2lkZS1pZnJhbWUiPg0K
PGlmcmFtZSBpZD0iaWZyYW1lIiB3aWR0aD01MDAgaGVpZ2h0PTUwMD48L2lmcmFtZT4NCiAgICAN
CjxzY3JpcHQ+DQogICAgZnVuY3Rpb24gc2xlZXAobXMpIHsNCiAgICAgICAgcmV0dXJuIG5ldyBQ
cm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpOw0KICAgIH0NCg0KICAg
IGNvbnN0IHVwZGF0ZUlmcmFtZU1pbGxpc2Vjb25kcyA9IDUwMDsNCiAgICB2YXIgaWZyYW1lID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lmcmFtZScpOw0KICAgIHNldFRpbWVvdXQoYXN5bmMg
KCkgPT4gew0KICAgICAgICBpZnJhbWUuc3JjID0gImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250
ZW50LmNvbS9XZWJLaXQvV2ViS2l0LzY4OTIxNWQ0NTBjZThjMjA5OTEyNzFlZWM5NTJiYTJhMWY5
NmNhMDYvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9yZXNvdXJjZXMvdGV4dC5odG1sIjsNCiAg
ICAgICAgYXdhaXQgc2xlZXAodXBkYXRlSWZyYW1lTWlsbGlzZWNvbmRzKTsNCiAgICAgICAgaWZy
YW1lLnNyYyA9ICIiOw0KICAgICAgICBhd2FpdCBzbGVlcCh1cGRhdGVJZnJhbWVNaWxsaXNlY29u
ZHMpOw0KICAgICAgICBpZnJhbWUuc3JjID0gImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50
LmNvbS9XZWJLaXQvV2ViS2l0LzY4OTIxNWQ0NTBjZThjMjA5OTEyNzFlZWM5NTJiYTJhMWY5NmNh
MDYvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9yZXNvdXJjZXMvdGV4dC5odG1sIjsNCiAgICAg
ICAgYXdhaXQgc2xlZXAodXBkYXRlSWZyYW1lTWlsbGlzZWNvbmRzKTsNCiAgICB9LCAwKTsNCjwv
c2NyaXB0Pg0KPC9ib2R5Pg0KPC9odG1sPg0K
</data>
<flag name="review"
          id="479511"
          type_id="1"
          status="+"
          setter="andresg_22"
    />
          </attachment>
      

    </bug>

</bugzilla>