<?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>236546</bug_id>
          
          <creation_ts>2022-02-12 17:20:42 -0800</creation_ts>
          <short_desc>Refactor logic for writing selected text in image overlays to the pasteboard</short_desc>
          <delta_ts>2022-02-15 12:48:50 -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>HTML Editing</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>
          <dependson>236535</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>akeerthi</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>kangil.han</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>mifenton</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1840750</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-12 17:20:42 -0800</bug_when>
    <thetext>rdar://83173693</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841090</commentid>
    <comment_count>1</comment_count>
      <attachid>451848</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-13 17:22:00 -0800</bug_when>
    <thetext>Created attachment 451848
Depends on #236535</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841413</commentid>
    <comment_count>2</comment_count>
      <attachid>451944</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-14 14:21:49 -0800</bug_when>
    <thetext>Created attachment 451944
Rebase on trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841847</commentid>
    <comment_count>3</comment_count>
      <attachid>451944</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2022-02-15 11:52:29 -0800</bug_when>
    <thetext>Comment on attachment 451944
Rebase on trunk

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

&gt; Source/WebCore/editing/Editor.cpp:1450
&gt; +        if (action == CopyAction &amp;&amp; !isSelectionInImageOverlay)

I&apos;m a bit confused, because this seems like it used to work for selections in overlays, but now it won&apos;t? The logic just isn&apos;t lining up for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841853</commentid>
    <comment_count>4</comment_count>
      <attachid>451944</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-15 11:55:16 -0800</bug_when>
    <thetext>Comment on attachment 451944
Rebase on trunk

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

Thanks for the review!

&gt;&gt; Source/WebCore/editing/Editor.cpp:1450
&gt;&gt; +        if (action == CopyAction &amp;&amp; !isSelectionInImageOverlay)
&gt; 
&gt; I&apos;m a bit confused, because this seems like it used to work for selections in overlays, but now it won&apos;t? The logic just isn&apos;t lining up for me.

So before, if the selection was in an image overlay, we&apos;d take the plain text writing codepath above; however, this patch removes the &quot;image overlay&quot; part of the check.

```
if (enclosingTextFormControl(m_document.selection().selection().start()) || (selection &amp;&amp; ImageOverlay::isInsideOverlay(*selection)))
```

…so this adjustment ensures that we go down the `writeSelectionToPasteboard` codepath instead of the `writeImageToPasteboard` codepath when Live Text is selected inside of an image document (hopefully that clarifies things?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841864</commentid>
    <comment_count>5</comment_count>
      <attachid>451944</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-02-15 12:15:43 -0800</bug_when>
    <thetext>Comment on attachment 451944
Rebase on trunk

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

r=me as well :)

&gt; Source/WebCore/dom/ImageOverlay.cpp:132
&gt; +    std::optional&lt;SimpleRange&gt; imageOverlayRange;

NIT: rather than bother with a `std::optional` you could just move the `return` inside the `for`

&gt; Source/WebCore/dom/ImageOverlay.cpp:133
&gt; +    for (auto&amp; ancestor : ancestorsOfType&lt;HTMLDivElement&gt;(*selection.start().containerNode())) {

Do we need to check `containerNode()` before dereferencing?

&gt; Source/WebCore/editing/cocoa/EditorCocoa.mm:110
&gt; +    auto* page = selection.document()-&gt;page();

Do we need to check `document()` before dereferencing?

&gt; Source/WebCore/editing/cocoa/EditorCocoa.mm:114
&gt; +    RefPtr hostElement = dynamicDowncast&lt;HTMLElement&gt;(selection.start().containerNode()-&gt;shadowHost());

ditto (Source/WebCore/dom/ImageOverlay.cpp:133)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841871</commentid>
    <comment_count>6</comment_count>
      <attachid>451944</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-15 12:21:46 -0800</bug_when>
    <thetext>Comment on attachment 451944
Rebase on trunk

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

&gt;&gt; Source/WebCore/dom/ImageOverlay.cpp:132
&gt;&gt; +    std::optional&lt;SimpleRange&gt; imageOverlayRange;
&gt; 
&gt; NIT: rather than bother with a `std::optional` you could just move the `return` inside the `for`

I don&apos;t think we can, since we&apos;re using element iterators and `resolveCharacterLocation`/`characterRange` will trigger layout, so moving the `return` inside the `for` will release assert.

&gt;&gt; Source/WebCore/dom/ImageOverlay.cpp:133
&gt;&gt; +    for (auto&amp; ancestor : ancestorsOfType&lt;HTMLDivElement&gt;(*selection.start().containerNode())) {
&gt; 
&gt; Do we need to check `containerNode()` before dereferencing?

It shouldn&apos;t be necessary here, since we otherwise would&apos;ve bailed in the `!isInsideOverlay()` check above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841874</commentid>
    <comment_count>7</comment_count>
      <attachid>451944</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-02-15 12:24:53 -0800</bug_when>
    <thetext>Comment on attachment 451944
Rebase on trunk

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

&gt;&gt; Source/WebCore/editing/cocoa/EditorCocoa.mm:110
&gt;&gt; +    auto* page = selection.document()-&gt;page();
&gt; 
&gt; Do we need to check `document()` before dereferencing?

I think we can assume `document()` is non null here, since we should only get here if `isInsideOverlay` is true.

&gt;&gt; Source/WebCore/editing/cocoa/EditorCocoa.mm:114
&gt;&gt; +    RefPtr hostElement = dynamicDowncast&lt;HTMLElement&gt;(selection.start().containerNode()-&gt;shadowHost());
&gt; 
&gt; ditto (Source/WebCore/dom/ImageOverlay.cpp:133)

(ditto)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841883</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-15 12:48:46 -0800</bug_when>
    <thetext>Committed r289839 (247287@main): &lt;https://commits.webkit.org/247287@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 451944.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451848</attachid>
            <date>2022-02-13 17:22:00 -0800</date>
            <delta_ts>2022-02-14 14:21:48 -0800</delta_ts>
            <desc>Depends on #236535</desc>
            <filename>bug-236546-20220213172159.patch</filename>
            <type>text/plain</type>
            <size>11453</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGNkYzIxNTE0YWExMDJl
MGIxY2RlN2ZjN2UyNmE5ZjQxZTYwMTgzMS4uZjUwYzVhNDI0ZjFiMjdmOWFjODQ5NGFhZDZmY2Rl
ODU5NzBjNTM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIyLTAyLTEzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIGxv
Z2ljIGZvciB3cml0aW5nIHNlbGVjdGVkIHRleHQgaW4gaW1hZ2Ugb3ZlcmxheXMgdG8gdGhlIHBh
c3RlYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNjU0NgorICAgICAgICByZGFyOi8vODMxNzM2OTMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBsb2dpYyBmb3IgY29weWluZyB0ZXh0
IGluIGltYWdlIG92ZXJsYXlzIHRvIHVzZSBgRWRpdG9yOjp3cml0ZVNlbGVjdGlvbmAsIGFzIG9w
cG9zZWQgdG8gZXh0cmFjdGluZyBhCisgICAgICAgIHN0cmluZyBmcm9tIHRoZSBjdXJyZW50IHNl
bGVjdGlvbiByYW5nZSBhbmQgZGlyZWN0bHkgd3JpdGluZyBpdCB0byB0aGUgcGFzdGVib2FyZCBh
cyBwbGFpbiB0ZXh0LiBTZWUgYmVsb3cgZm9yCisgICAgICAgIG1vcmUgZGV0YWlscy4KKworICAg
ICAgICAqIGRvbS9JbWFnZU92ZXJsYXkuY3BwOgorCisgICAgICAgIEFkZCBhIGNvdXBsZSBvZiBu
ZXcgSW1hZ2VPdmVybGF5LW5hbWVzcGFjZWQgaGVscGVyIGZ1bmN0aW9ucy4KKworICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VPdmVybGF5OjpjaGFyYWN0ZXJSYW5nZSk6CisKKyAgICAgICAgQWRkIGEg
ZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBjaGFyYWN0ZXIgcmFuZ2UgZm9yIHRoZSBnaXZlbiBzZWxl
Y3Rpb24gaW5zaWRlIGFuIGltYWdlIG92ZXJsYXkgKG9yIGBzdGQ6Om51bGxvcHRgCisgICAgICAg
IGlmIHRoZSBzZWxlY3Rpb24gaXMgbm90IGluc2lkZSBvZiBhbiBpbWFnZSBvdmVybGF5KS4KKwor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Ojppc0luc2lkZU92ZXJsYXkpOgorCisgICAg
ICAgIEFkZCBhIGZ1bmN0aW9uIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0aGUgZ2l2ZW4g
c2VsZWN0aW9uIGlzIGluc2lkZSBvZiBhbiBpbWFnZSBvdmVybGF5LgorCisgICAgICAgICogZG9t
L0ltYWdlT3ZlcmxheS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6cGVyZm9ybUN1dE9yQ29weSk6CisKKyAgICAgICAgUmVmYWN0b3Ig
dGhpcyB0byB1c2UgYHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKClgIHdoZW4gdGhlIGN1cnJl
bnQgc2VsZWN0aW9uIGlzIGluc2lkZSBhbiBpbWFnZSBvdmVybGF5LgorCisgICAgICAgICogZWRp
dGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2Vs
ZWN0aW9uSW5IVE1MRm9ybWF0KToKKworICAgICAgICBJbnRlbnRpb25hbGx5IHJldHVybiB0aGUg
bnVsbCBzdHJpbmcgZm9yIGltYWdlIG92ZXJsYXlzLgorCisgICAgICAgIChXZWJDb3JlOjpzZWxl
Y3Rpb25JbkltYWdlT3ZlcmxheUFzQXR0cmlidXRlZFN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpzZWxlY3Rpb25Bc0F0dHJpYnV0ZWRTdHJpbmcpOgorCisgICAgICAgIEFkZCBhIHNwZWNpYWwg
Y29kZXBhdGggd2hlbiBzZXJpYWxpemluZyBzZWxlY3RlZCB0ZXh0IGluIGltYWdlIG92ZXJsYXlz
IHN1Y2ggdGhhdCB3ZSBjb25zdWx0IHRoZSBpbWFnZSBlbGVtZW50J3MKKyAgICAgICAgVGV4dFJl
Y29nbml0aW9uUmVzdWx0IGZvciB0aGUgYXR0cmlidXRlZCBzdHJpbmcgdG8gd3JpdGUgdG8gdGhl
IHBhc3RlYm9hcmQsIGdpdmVuIHRoZSBzZWxlY3RlZCBDaGFyYWN0ZXJSYW5nZSBpbgorICAgICAg
ICB0aGUgaW1hZ2Ugb3ZlcmxheS4KKworICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rp
b25JbldlYkFyY2hpdmVGb3JtYXQpOgorCisgICAgICAgIEludGVudGlvbmFsbHkgcmV0dXJuIG51
bGwgZm9yIGltYWdlIG92ZXJsYXlzLgorCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OmNhY2hlZFRleHRSZWNvZ25pdGlvblJlc3VsdCBjb25zdCk6CisK
KyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhvZCB0byByZXRyaWV2ZSBhIGNhY2hlZCBUZXh0UmVj
b2duaXRpb25SZXN1bHQsIGdpdmVuIGEgaG9zdCBpbWFnZSBlbGVtZW50LgorCisgICAgICAgICog
cGFnZS9QYWdlLmg6CisKIDIwMjItMDItMTMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CiAKICAgICAgICAgW0xpdmUgVGV4dF0gUGx1bWIgcGxhdGZvcm0gaW1hZ2UgYW5h
bHlzaXMgb2JqZWN0cyB0byB0aGUgd2ViIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9JbWFnZU92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3Zlcmxh
eS5jcHAKaW5kZXggM2Q0MGVhZmE3ZjU0MGEyMDU4ZGMwMDBmZjMzODU5N2EyYTk4NDAwYS4uZWQ0
M2ZlZGE4MTZjMGUyMTI5OGJkMWVhZTJmNDM2ZTk0YmUwZjQ3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lt
YWdlT3ZlcmxheS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJJbWFnZU92ZXJsYXkuaCIKIAorI2luY2x1ZGUgIkNoYXJhY3RlclJhbmdlLmgiCiAj
aW5jbHVkZSAiRE9NVG9rZW5MaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJFbGVtZW50Q2hpbGRJdGVyYXRvci5oIgpAQCAtNDYsOCArNDcsMTAgQEAKICNpbmNsdWRlICJT
aGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0Lmgi
CisjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dFJlY29nbml0aW9uUmVz
dWx0LmgiCiAjaW5jbHVkZSAiVXNlckFnZW50U3R5bGVTaGVldHMuaCIKKyNpbmNsdWRlICJWaXNp
YmxlU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1JhbmdlLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CkBAIC0xMTcsNiArMTIw
LDM1IEBAIGJvb2wgaXNEYXRhRGV0ZWN0b3JSZXN1bHQoY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1l
bnQpCiAgICAgcmV0dXJuIGltYWdlT3ZlcmxheUhvc3QoZWxlbWVudCkgJiYgZWxlbWVudC5oYXND
bGFzcygpICYmIGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKGltYWdlT3ZlcmxheURhdGFE
ZXRlY3RvckNsYXNzKCkpOwogfQogCitzdGQ6Om9wdGlvbmFsPENoYXJhY3RlclJhbmdlPiBjaGFy
YWN0ZXJSYW5nZShjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCit7CisgICAgYXV0
byBzZWxlY3Rpb25SYW5nZSA9IHNlbGVjdGlvbi5yYW5nZSgpOworICAgIGlmICghc2VsZWN0aW9u
UmFuZ2UpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWlzSW5zaWRl
T3ZlcmxheShzZWxlY3Rpb24pKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gaW1hZ2VPdmVybGF5UmFuZ2U7CisgICAgZm9yIChh
dXRvJiBhbmNlc3RvciA6IGFuY2VzdG9yc09mVHlwZTxIVE1MRGl2RWxlbWVudD4oKnNlbGVjdGlv
bi5zdGFydCgpLmNvbnRhaW5lck5vZGUoKSkpIHsKKyAgICAgICAgaWYgKGFuY2VzdG9yLmdldElk
QXR0cmlidXRlKCkgPT0gaW1hZ2VPdmVybGF5RWxlbWVudElkZW50aWZpZXIoKSkgeworICAgICAg
ICAgICAgaW1hZ2VPdmVybGF5UmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMo
YW5jZXN0b3IpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAoIWltYWdlT3ZlcmxheVJhbmdlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgcmV0dXJuIGNoYXJhY3RlclJhbmdlKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbigqaW1hZ2VP
dmVybGF5UmFuZ2UsIDApLCAqc2VsZWN0aW9uUmFuZ2UpOworfQorCitib29sIGlzSW5zaWRlT3Zl
cmxheShjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCit7CisgICAgYXV0byByYW5n
ZSA9IHNlbGVjdGlvbi5yYW5nZSgpOworICAgIHJldHVybiByYW5nZSAmJiBpc0luc2lkZU92ZXJs
YXkoKnJhbmdlKTsKK30KKwogYm9vbCBpc0luc2lkZU92ZXJsYXkoY29uc3QgU2ltcGxlUmFuZ2Um
IHJhbmdlKQogewogICAgIFJlZlB0ciBjb21tb25BbmNlc3RvciA9IGNvbW1vbkluY2x1c2l2ZUFu
Y2VzdG9yPENvbXBvc2VkVHJlZT4ocmFuZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0ltYWdlT3ZlcmxheS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5oCmlu
ZGV4IDY1YzNiZDUzYWJkZDE0YjBiODBkMzE0YzM2ODI2NzUyNzNmMDI2MTMuLjJmODE1NGJhMzg1
YmMwNTIzMTliM2FiNzI2NTA0MGFiYjA2NDg5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9JbWFnZU92ZXJsYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW1hZ2VPdmVybGF5
LmgKQEAgLTMxLDcgKzMxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MRWxl
bWVudDsKIGNsYXNzIE5vZGU7CitjbGFzcyBWaXNpYmxlU2VsZWN0aW9uOwogCitzdHJ1Y3QgQ2hh
cmFjdGVyUmFuZ2U7CiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiBzdHJ1Y3QgVGV4dFJlY29nbml0aW9u
UmVzdWx0OwogCkBAIC00NSw2ICs0Nyw4IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNPdmVybGF5
VGV4dChjb25zdCBOb2RlJik7CiBXRUJDT1JFX0VYUE9SVCBib29sIGlzT3ZlcmxheVRleHQoY29u
c3QgTm9kZSopOwogdm9pZCByZW1vdmVPdmVybGF5U29vbklmTmVlZGVkKEhUTUxFbGVtZW50Jik7
CiBJbnRSZWN0IGNvbnRhaW5lclJlY3QoSFRNTEVsZW1lbnQmKTsKK3N0ZDo6b3B0aW9uYWw8Q2hh
cmFjdGVyUmFuZ2U+IGNoYXJhY3RlclJhbmdlKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKK2Jv
b2wgaXNJbnNpZGVPdmVybGF5KGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKIAogI2lmIEVOQUJM
RShJTUFHRV9BTkFMWVNJUykKIGVudW0gY2xhc3MgQ2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHRz
IDogYm9vbCB7IE5vLCBZZXMgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBhOTNk
MWZjZmNmNWVjMmZlMzYzNGJiYWVhZWY3N2RlNzE4NWIyNDJjLi40ZWE4YTQzMDI2YWY5MzgyOTQw
N2Y0MWYzNWMyOTlkNWFlNWM0ODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0x
NDQyLDExICsxNDQyLDEyIEBAIHZvaWQgRWRpdG9yOjpwZXJmb3JtQ3V0T3JDb3B5KEVkaXRvckFj
dGlvblNwZWNpZmllciBhY3Rpb24pCiAgICAgICAgIHVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVj
dGVkQnlFZGl0aW5nKHRydWUpOwogICAgIH0KIAotICAgIGlmIChlbmNsb3NpbmdUZXh0Rm9ybUNv
bnRyb2wobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpKSB8fCAoc2Vs
ZWN0aW9uICYmIEltYWdlT3ZlcmxheTo6aXNJbnNpZGVPdmVybGF5KCpzZWxlY3Rpb24pKSkKKyAg
ICBpZiAoZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sKG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCkuc3RhcnQoKSkpCiAgICAgICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQ
YXN0ZShQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LnBhZ2VJRCgpKSkt
PndyaXRlUGxhaW5UZXh0KHNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2ZlcigpLCBjYW5TbWFydENv
cHlPckRlbGV0ZSgpID8gUGFzdGVib2FyZDo6Q2FuU21hcnRSZXBsYWNlIDogUGFzdGVib2FyZDo6
Q2Fubm90U21hcnRSZXBsYWNlKTsKICAgICBlbHNlIHsKICAgICAgICAgUmVmUHRyPEhUTUxJbWFn
ZUVsZW1lbnQ+IGltYWdlRWxlbWVudDsKLSAgICAgICAgaWYgKGFjdGlvbiA9PSBDb3B5QWN0aW9u
KQorICAgICAgICBib29sIGlzU2VsZWN0aW9uSW5JbWFnZU92ZXJsYXkgPSBzZWxlY3Rpb24gJiYg
IXNlbGVjdGlvbi0+Y29sbGFwc2VkKCkgJiYgSW1hZ2VPdmVybGF5Ojppc0luc2lkZU92ZXJsYXko
KnNlbGVjdGlvbik7CisgICAgICAgIGlmIChhY3Rpb24gPT0gQ29weUFjdGlvbiAmJiBpc1NlbGVj
dGlvbkluSW1hZ2VPdmVybGF5KQogICAgICAgICAgICAgaW1hZ2VFbGVtZW50ID0gaW1hZ2VFbGVt
ZW50RnJvbUltYWdlRG9jdW1lbnQoZG9jdW1lbnQoKSk7CiAKICAgICAgICAgaWYgKGltYWdlRWxl
bWVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JD
b2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KaW5k
ZXggMjQ4N2JlNjA0NWU3NWMyM2Y1ZDY0OTFiM2ZhMDQxZDkxZTkzZTAzYS4uNTg1NDBmYTcyNmU1
Njk1YjdiNTJjMjk2OWEzODE3ZmY4MjcwMjA2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0VkaXRvckNvY29hLm1tCkBAIC00NSw4ICs0NSwxMCBAQAogI2ltcG9ydCAiSFRNTENv
bnZlcnRlci5oIgogI2ltcG9ydCAiSFRNTEltYWdlRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTFNw
YW5FbGVtZW50LmgiCisjaW1wb3J0ICJJbWFnZU92ZXJsYXkuaCIKICNpbXBvcnQgIkxlZ2FjeU5T
UGFzdGVib2FyZFR5cGVzLmgiCiAjaW1wb3J0ICJMZWdhY3lXZWJBcmNoaXZlLmgiCisjaW1wb3J0
ICJQYWdlLmgiCiAjaW1wb3J0ICJQYWdlUGFzdGVib2FyZENvbnRleHQuaCIKICNpbXBvcnQgIlBh
c3RlYm9hcmQuaCIKICNpbXBvcnQgIlBhc3RlYm9hcmRTdHJhdGVneS5oIgpAQCAtNzUsNiArNzcs
OCBAQCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRhRm9yQXR0cmlidXRl
ZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKgogCiBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25J
bkhUTUxGb3JtYXQoKQogeworICAgIGlmIChJbWFnZU92ZXJsYXk6OmlzSW5zaWRlT3ZlcmxheSht
X2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICByZXR1cm4gc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UobV9kb2N1bWVu
dC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ0xvY2Fs
RmlsZVVSTHNGb3JQcml2YWN5LCBTZXJpYWxpemVDb21wb3NlZFRyZWU6Olllcyk7CiB9CiAKQEAg
LTEwMCw5ICsxMDQsNTIgQEAgdm9pZCBFZGl0b3I6OmdldFBhc3RlYm9hcmRUeXBlc0FuZERhdGFG
b3JBdHRhY2htZW50KEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxTdHIKIAogI2VuZGlmCiAKK3N0
YXRpYyBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBzZWxlY3Rpb25JbkltYWdlT3Zlcmxh
eUFzQXR0cmlidXRlZFN0cmluZyhjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCit7
CisjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTX0VOSEFOQ0VNRU5UUykKKyAgICBhdXRvKiBwYWdl
ID0gc2VsZWN0aW9uLmRvY3VtZW50KCktPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAg
IHJldHVybiBuaWw7CisKKyAgICBSZWZQdHIgaG9zdEVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8
SFRNTEVsZW1lbnQ+KHNlbGVjdGlvbi5zdGFydCgpLmNvbnRhaW5lck5vZGUoKS0+c2hhZG93SG9z
dCgpKTsKKyAgICBpZiAoIWhvc3RFbGVtZW50KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKworICAgIGF1dG8gY2FjaGVkUmVzdWx0
ID0gcGFnZS0+Y2FjaGVkVGV4dFJlY29nbml0aW9uUmVzdWx0KCpob3N0RWxlbWVudCk7CisgICAg
aWYgKCFjYWNoZWRSZXN1bHQpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBhdXRvIGNoYXJh
Y3RlclJhbmdlID0gdmFsdWVPckRlZmF1bHQoSW1hZ2VPdmVybGF5OjpjaGFyYWN0ZXJSYW5nZShz
ZWxlY3Rpb24pKTsKKyAgICBpZiAoIWNoYXJhY3RlclJhbmdlLmxlbmd0aCkKKyAgICAgICAgcmV0
dXJuIG5pbDsKKworICAgIGF1dG8gc3RyaW5nID0gc3RyaW5nRm9yUmFuZ2UoKmNhY2hlZFJlc3Vs
dCwgY2hhcmFjdGVyUmFuZ2UpOworICAgIF9fYmxvY2sgYm9vbCBoYXNBbnlBdHRyaWJ1dGVzID0g
ZmFsc2U7CisgICAgW3N0cmluZyBlbnVtZXJhdGVBdHRyaWJ1dGVzSW5SYW5nZTpOU01ha2VSYW5n
ZSgwLCBbc3RyaW5nIGxlbmd0aF0pIG9wdGlvbnM6MCB1c2luZ0Jsb2NrOl4oTlNEaWN0aW9uYXJ5
ICphdHRyaWJ1dGVzLCBOU1JhbmdlLCBCT09MICpzdG9wKSB7CisgICAgICAgIGlmIChhdHRyaWJ1
dGVzLmNvdW50KSB7CisgICAgICAgICAgICBoYXNBbnlBdHRyaWJ1dGVzID0gdHJ1ZTsKKyAgICAg
ICAgICAgICpzdG9wID0gWUVTOworICAgICAgICB9CisgICAgfV07CisKKyAgICBpZiAoIWhhc0Fu
eUF0dHJpYnV0ZXMpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gc3RyaW5nOwor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2VsZWN0aW9uKTsKKyAgICByZXR1cm4gbmlsOworI2Vu
ZGlmCit9CisKIHN0YXRpYyBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBzZWxlY3Rpb25B
c0F0dHJpYnV0ZWRTdHJpbmcoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIGF1dG8g
cmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5maXJzdFJhbmdlKCk7Cisg
ICAgYXV0byBzZWxlY3Rpb24gPSBkb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKKyAg
ICBpZiAoSW1hZ2VPdmVybGF5Ojppc0luc2lkZU92ZXJsYXkoc2VsZWN0aW9uKSkKKyAgICAgICAg
cmV0dXJuIHNlbGVjdGlvbkluSW1hZ2VPdmVybGF5QXNBdHRyaWJ1dGVkU3RyaW5nKHNlbGVjdGlv
bik7CisgICAgYXV0byByYW5nZSA9IHNlbGVjdGlvbi5maXJzdFJhbmdlKCk7CiAgICAgcmV0dXJu
IHJhbmdlID8gYXR0cmlidXRlZFN0cmluZygqcmFuZ2UpLnN0cmluZyA6IGFkb3B0TlMoW1tOU0F0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdKTsKIH0KIApAQCAtMTQ2LDYgKzE5Myw4IEBAIHZv
aWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlvbihQYXN0ZWJvYXJkV3JpdGVyRGF0YSYgcGFzdGVib2Fy
ZFdyaXRlckRhdGEpCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IEVkaXRvcjo6c2VsZWN0aW9uSW5X
ZWJBcmNoaXZlRm9ybWF0KCkKIHsKKyAgICBpZiAoSW1hZ2VPdmVybGF5Ojppc0luc2lkZU92ZXJs
YXkobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIGF1dG8gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21T
ZWxlY3Rpb24obV9kb2N1bWVudC5mcmFtZSgpKTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggNmE4NWU4NDNkOGJiZTNkMTky
ZDk3ZjQ5NmJkN2ViNDU0NzQ5ZGJhNC4uMjBkZjgxMTVlOGZkOTUyMDNhNTUxMmQyZjg4ZjA0ZmVm
OTE2N2ZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0zODM2LDYgKzM4MzYsMTUgQEAgYm9vbCBQ
YWdlOjpoYXNDYWNoZWRUZXh0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgSFRNTEVsZW1lbnQmIGVs
ZW1lbnQpIGNvbnN0CiAgICAgcmV0dXJuIG1fdGV4dFJlY29nbml0aW9uUmVzdWx0cy5jb250YWlu
cyhlbGVtZW50KTsKIH0KIAorc3RkOjpvcHRpb25hbDxUZXh0UmVjb2duaXRpb25SZXN1bHQ+IFBh
Z2U6OmNhY2hlZFRleHRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVu
dCkgY29uc3QKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV90ZXh0UmVjb2duaXRpb25SZXN1bHRz
LmZpbmQoZWxlbWVudCk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fdGV4dFJlY29nbml0aW9uUmVz
dWx0cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7
IGl0ZXJhdG9yLT52YWx1ZS5maXJzdCB9OworfQorCiB2b2lkIFBhZ2U6OmNhY2hlVGV4dFJlY29n
bml0aW9uUmVzdWx0KGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBJbnRSZWN0JiBj
b250YWluZXJSZWN0LCBjb25zdCBUZXh0UmVjb2duaXRpb25SZXN1bHQmIHJlc3VsdCkKIHsKICAg
ICBtX3RleHRSZWNvZ25pdGlvblJlc3VsdHMuc2V0KGVsZW1lbnQsIENhY2hlZFRleHRSZWNvZ25p
dGlvblJlc3VsdCB7IHJlc3VsdCwgY29udGFpbmVyUmVjdCB9KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXgg
OGZkNTFlYjY3ZDFlYmEyZmYwYTljZDU4ODFhN2NlNzY3ZTIyYWJiOS4uNTFjODBkOGMxZTJjZWM2
NmI2YTJmYjI2ZTZlYWEzNjA3MWM2N2ZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTkxOCw2ICs5MTgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMb2FkU2NoZWR1bGluZ01vZGUoTG9hZFNjaGVkdWxp
bmdNb2RlKTsKIAogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKKyAgICBzdGQ6Om9wdGlvbmFs
PFRleHRSZWNvZ25pdGlvblJlc3VsdD4gY2FjaGVkVGV4dFJlY29nbml0aW9uUmVzdWx0KGNvbnN0
IEhUTUxFbGVtZW50JikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNDYWNoZWRU
ZXh0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgSFRNTEVsZW1lbnQmKSBjb25zdDsKICAgICB2b2lk
IGNhY2hlVGV4dFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IEhUTUxFbGVtZW50JiwgY29uc3QgSW50
UmVjdCYgY29udGFpbmVyUmVjdCwgY29uc3QgVGV4dFJlY29nbml0aW9uUmVzdWx0Jik7CiAgICAg
dm9pZCByZXNldFRleHRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBIVE1MRWxlbWVudCYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451944</attachid>
            <date>2022-02-14 14:21:49 -0800</date>
            <delta_ts>2022-02-15 12:48:49 -0800</delta_ts>
            <desc>Rebase on trunk</desc>
            <filename>bug-236546-20220214142149.patch</filename>
            <type>text/plain</type>
            <size>11454</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY4ZTU3MzdlM2YzNWU2
MjBjMDE2ZmZlY2Q5MDJmYWNlMTAyYzI1NC4uN2Q3YmQzYmE4M2FmY2VhOTllNDk3MzczOTgwMWMy
Yjc2NjQ4OWNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIyLTAyLTE0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIGxv
Z2ljIGZvciB3cml0aW5nIHNlbGVjdGVkIHRleHQgaW4gaW1hZ2Ugb3ZlcmxheXMgdG8gdGhlIHBh
c3RlYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNjU0NgorICAgICAgICByZGFyOi8vODMxNzM2OTMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBsb2dpYyBmb3IgY29weWluZyB0ZXh0
IGluIGltYWdlIG92ZXJsYXlzIHRvIHVzZSBgRWRpdG9yOjp3cml0ZVNlbGVjdGlvbmAsIGFzIG9w
cG9zZWQgdG8gZXh0cmFjdGluZyBhCisgICAgICAgIHN0cmluZyBmcm9tIHRoZSBjdXJyZW50IHNl
bGVjdGlvbiByYW5nZSBhbmQgZGlyZWN0bHkgd3JpdGluZyBpdCB0byB0aGUgcGFzdGVib2FyZCBh
cyBwbGFpbiB0ZXh0LiBTZWUgYmVsb3cgZm9yCisgICAgICAgIG1vcmUgZGV0YWlscy4KKworICAg
ICAgICAqIGRvbS9JbWFnZU92ZXJsYXkuY3BwOgorCisgICAgICAgIEFkZCBhIGNvdXBsZSBvZiBu
ZXcgSW1hZ2VPdmVybGF5LW5hbWVzcGFjZWQgaGVscGVyIGZ1bmN0aW9ucy4KKworICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VPdmVybGF5OjpjaGFyYWN0ZXJSYW5nZSk6CisKKyAgICAgICAgQWRkIGEg
ZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBjaGFyYWN0ZXIgcmFuZ2UgZm9yIHRoZSBnaXZlbiBzZWxl
Y3Rpb24gaW5zaWRlIGFuIGltYWdlIG92ZXJsYXkgKG9yIGBzdGQ6Om51bGxvcHRgCisgICAgICAg
IGlmIHRoZSBzZWxlY3Rpb24gaXMgbm90IGluc2lkZSBvZiBhbiBpbWFnZSBvdmVybGF5KS4KKwor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VPdmVybGF5Ojppc0luc2lkZU92ZXJsYXkpOgorCisgICAg
ICAgIEFkZCBhIGZ1bmN0aW9uIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0aGUgZ2l2ZW4g
c2VsZWN0aW9uIGlzIGluc2lkZSBvZiBhbiBpbWFnZSBvdmVybGF5LgorCisgICAgICAgICogZG9t
L0ltYWdlT3ZlcmxheS5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6cGVyZm9ybUN1dE9yQ29weSk6CisKKyAgICAgICAgUmVmYWN0b3Ig
dGhpcyB0byB1c2UgYHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKClgIHdoZW4gdGhlIGN1cnJl
bnQgc2VsZWN0aW9uIGlzIGluc2lkZSBhbiBpbWFnZSBvdmVybGF5LgorCisgICAgICAgICogZWRp
dGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2Vs
ZWN0aW9uSW5IVE1MRm9ybWF0KToKKworICAgICAgICBJbnRlbnRpb25hbGx5IHJldHVybiB0aGUg
bnVsbCBzdHJpbmcgZm9yIGltYWdlIG92ZXJsYXlzLgorCisgICAgICAgIChXZWJDb3JlOjpzZWxl
Y3Rpb25JbkltYWdlT3ZlcmxheUFzQXR0cmlidXRlZFN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpzZWxlY3Rpb25Bc0F0dHJpYnV0ZWRTdHJpbmcpOgorCisgICAgICAgIEFkZCBhIHNwZWNpYWwg
Y29kZXBhdGggd2hlbiBzZXJpYWxpemluZyBzZWxlY3RlZCB0ZXh0IGluIGltYWdlIG92ZXJsYXlz
IHN1Y2ggdGhhdCB3ZSBjb25zdWx0IHRoZSBpbWFnZSBlbGVtZW50J3MKKyAgICAgICAgVGV4dFJl
Y29nbml0aW9uUmVzdWx0IGZvciB0aGUgYXR0cmlidXRlZCBzdHJpbmcgdG8gd3JpdGUgdG8gdGhl
IHBhc3RlYm9hcmQsIGdpdmVuIHRoZSBzZWxlY3RlZCBDaGFyYWN0ZXJSYW5nZSBpbgorICAgICAg
ICB0aGUgaW1hZ2Ugb3ZlcmxheS4KKworICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rp
b25JbldlYkFyY2hpdmVGb3JtYXQpOgorCisgICAgICAgIEludGVudGlvbmFsbHkgcmV0dXJuIG51
bGwgZm9yIGltYWdlIG92ZXJsYXlzLgorCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OmNhY2hlZFRleHRSZWNvZ25pdGlvblJlc3VsdCBjb25zdCk6CisK
KyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhvZCB0byByZXRyaWV2ZSBhIGNhY2hlZCBUZXh0UmVj
b2duaXRpb25SZXN1bHQsIGdpdmVuIGEgaG9zdCBpbWFnZSBlbGVtZW50LgorCisgICAgICAgICog
cGFnZS9QYWdlLmg6CisKIDIwMjItMDItMTQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CiAKICAgICAgICAgW0xpdmUgVGV4dF0gUGx1bWIgcGxhdGZvcm0gaW1hZ2UgYW5h
bHlzaXMgb2JqZWN0cyB0byB0aGUgd2ViIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9JbWFnZU92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3Zlcmxh
eS5jcHAKaW5kZXggM2Q0MGVhZmE3ZjU0MGEyMDU4ZGMwMDBmZjMzODU5N2EyYTk4NDAwYS4uZWQ0
M2ZlZGE4MTZjMGUyMTI5OGJkMWVhZTJmNDM2ZTk0YmUwZjQ3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0lt
YWdlT3ZlcmxheS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJJbWFnZU92ZXJsYXkuaCIKIAorI2luY2x1ZGUgIkNoYXJhY3RlclJhbmdlLmgiCiAj
aW5jbHVkZSAiRE9NVG9rZW5MaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJFbGVtZW50Q2hpbGRJdGVyYXRvci5oIgpAQCAtNDYsOCArNDcsMTAgQEAKICNpbmNsdWRlICJT
aGFkb3dSb290LmgiCiAjaW5jbHVkZSAiU2ltcGxlUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0Lmgi
CisjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dFJlY29nbml0aW9uUmVz
dWx0LmgiCiAjaW5jbHVkZSAiVXNlckFnZW50U3R5bGVTaGVldHMuaCIKKyNpbmNsdWRlICJWaXNp
YmxlU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1JhbmdlLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CkBAIC0xMTcsNiArMTIw
LDM1IEBAIGJvb2wgaXNEYXRhRGV0ZWN0b3JSZXN1bHQoY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1l
bnQpCiAgICAgcmV0dXJuIGltYWdlT3ZlcmxheUhvc3QoZWxlbWVudCkgJiYgZWxlbWVudC5oYXND
bGFzcygpICYmIGVsZW1lbnQuY2xhc3NOYW1lcygpLmNvbnRhaW5zKGltYWdlT3ZlcmxheURhdGFE
ZXRlY3RvckNsYXNzKCkpOwogfQogCitzdGQ6Om9wdGlvbmFsPENoYXJhY3RlclJhbmdlPiBjaGFy
YWN0ZXJSYW5nZShjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCit7CisgICAgYXV0
byBzZWxlY3Rpb25SYW5nZSA9IHNlbGVjdGlvbi5yYW5nZSgpOworICAgIGlmICghc2VsZWN0aW9u
UmFuZ2UpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoIWlzSW5zaWRl
T3ZlcmxheShzZWxlY3Rpb24pKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gaW1hZ2VPdmVybGF5UmFuZ2U7CisgICAgZm9yIChh
dXRvJiBhbmNlc3RvciA6IGFuY2VzdG9yc09mVHlwZTxIVE1MRGl2RWxlbWVudD4oKnNlbGVjdGlv
bi5zdGFydCgpLmNvbnRhaW5lck5vZGUoKSkpIHsKKyAgICAgICAgaWYgKGFuY2VzdG9yLmdldElk
QXR0cmlidXRlKCkgPT0gaW1hZ2VPdmVybGF5RWxlbWVudElkZW50aWZpZXIoKSkgeworICAgICAg
ICAgICAgaW1hZ2VPdmVybGF5UmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMo
YW5jZXN0b3IpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAoIWltYWdlT3ZlcmxheVJhbmdlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgcmV0dXJuIGNoYXJhY3RlclJhbmdlKHJlc29sdmVDaGFyYWN0ZXJMb2NhdGlvbigqaW1hZ2VP
dmVybGF5UmFuZ2UsIDApLCAqc2VsZWN0aW9uUmFuZ2UpOworfQorCitib29sIGlzSW5zaWRlT3Zl
cmxheShjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCit7CisgICAgYXV0byByYW5n
ZSA9IHNlbGVjdGlvbi5yYW5nZSgpOworICAgIHJldHVybiByYW5nZSAmJiBpc0luc2lkZU92ZXJs
YXkoKnJhbmdlKTsKK30KKwogYm9vbCBpc0luc2lkZU92ZXJsYXkoY29uc3QgU2ltcGxlUmFuZ2Um
IHJhbmdlKQogewogICAgIFJlZlB0ciBjb21tb25BbmNlc3RvciA9IGNvbW1vbkluY2x1c2l2ZUFu
Y2VzdG9yPENvbXBvc2VkVHJlZT4ocmFuZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0ltYWdlT3ZlcmxheS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0ltYWdlT3ZlcmxheS5oCmlu
ZGV4IDY1YzNiZDUzYWJkZDE0YjBiODBkMzE0YzM2ODI2NzUyNzNmMDI2MTMuLjJmODE1NGJhMzg1
YmMwNTIzMTliM2FiNzI2NTA0MGFiYjA2NDg5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9JbWFnZU92ZXJsYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW1hZ2VPdmVybGF5
LmgKQEAgLTMxLDcgKzMxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MRWxl
bWVudDsKIGNsYXNzIE5vZGU7CitjbGFzcyBWaXNpYmxlU2VsZWN0aW9uOwogCitzdHJ1Y3QgQ2hh
cmFjdGVyUmFuZ2U7CiBzdHJ1Y3QgU2ltcGxlUmFuZ2U7CiBzdHJ1Y3QgVGV4dFJlY29nbml0aW9u
UmVzdWx0OwogCkBAIC00NSw2ICs0Nyw4IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNPdmVybGF5
VGV4dChjb25zdCBOb2RlJik7CiBXRUJDT1JFX0VYUE9SVCBib29sIGlzT3ZlcmxheVRleHQoY29u
c3QgTm9kZSopOwogdm9pZCByZW1vdmVPdmVybGF5U29vbklmTmVlZGVkKEhUTUxFbGVtZW50Jik7
CiBJbnRSZWN0IGNvbnRhaW5lclJlY3QoSFRNTEVsZW1lbnQmKTsKK3N0ZDo6b3B0aW9uYWw8Q2hh
cmFjdGVyUmFuZ2U+IGNoYXJhY3RlclJhbmdlKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKK2Jv
b2wgaXNJbnNpZGVPdmVybGF5KGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKIAogI2lmIEVOQUJM
RShJTUFHRV9BTkFMWVNJUykKIGVudW0gY2xhc3MgQ2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHRz
IDogYm9vbCB7IE5vLCBZZXMgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBhOTNk
MWZjZmNmNWVjMmZlMzYzNGJiYWVhZWY3N2RlNzE4NWIyNDJjLi43MjQ1ZjE4MDg2YmY1MzY5NDI1
Nzc4NTlkYjE2ZDg5YzJiMjQ4ZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0x
NDQyLDExICsxNDQyLDEyIEBAIHZvaWQgRWRpdG9yOjpwZXJmb3JtQ3V0T3JDb3B5KEVkaXRvckFj
dGlvblNwZWNpZmllciBhY3Rpb24pCiAgICAgICAgIHVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVj
dGVkQnlFZGl0aW5nKHRydWUpOwogICAgIH0KIAotICAgIGlmIChlbmNsb3NpbmdUZXh0Rm9ybUNv
bnRyb2wobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpKSB8fCAoc2Vs
ZWN0aW9uICYmIEltYWdlT3ZlcmxheTo6aXNJbnNpZGVPdmVybGF5KCpzZWxlY3Rpb24pKSkKKyAg
ICBpZiAoZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sKG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCkuc3RhcnQoKSkpCiAgICAgICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQ
YXN0ZShQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShtX2RvY3VtZW50LnBhZ2VJRCgpKSkt
PndyaXRlUGxhaW5UZXh0KHNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2ZlcigpLCBjYW5TbWFydENv
cHlPckRlbGV0ZSgpID8gUGFzdGVib2FyZDo6Q2FuU21hcnRSZXBsYWNlIDogUGFzdGVib2FyZDo6
Q2Fubm90U21hcnRSZXBsYWNlKTsKICAgICBlbHNlIHsKICAgICAgICAgUmVmUHRyPEhUTUxJbWFn
ZUVsZW1lbnQ+IGltYWdlRWxlbWVudDsKLSAgICAgICAgaWYgKGFjdGlvbiA9PSBDb3B5QWN0aW9u
KQorICAgICAgICBib29sIGlzU2VsZWN0aW9uSW5JbWFnZU92ZXJsYXkgPSBzZWxlY3Rpb24gJiYg
IXNlbGVjdGlvbi0+Y29sbGFwc2VkKCkgJiYgSW1hZ2VPdmVybGF5Ojppc0luc2lkZU92ZXJsYXko
KnNlbGVjdGlvbik7CisgICAgICAgIGlmIChhY3Rpb24gPT0gQ29weUFjdGlvbiAmJiAhaXNTZWxl
Y3Rpb25JbkltYWdlT3ZlcmxheSkKICAgICAgICAgICAgIGltYWdlRWxlbWVudCA9IGltYWdlRWxl
bWVudEZyb21JbWFnZURvY3VtZW50KGRvY3VtZW50KCkpOwogCiAgICAgICAgIGlmIChpbWFnZUVs
ZW1lbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9y
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmlu
ZGV4IDI0ODdiZTYwNDVlNzVjMjNmNWQ2NDkxYjNmYTA0MWQ5MWU5M2UwM2EuLjU4NTQwZmE3MjZl
NTY5NWI3YjUyYzI5NjlhMzgxN2ZmODI3MDIwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtNDUsOCArNDUsMTAgQEAKICNpbXBvcnQgIkhUTUxD
b252ZXJ0ZXIuaCIKICNpbXBvcnQgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxT
cGFuRWxlbWVudC5oIgorI2ltcG9ydCAiSW1hZ2VPdmVybGF5LmgiCiAjaW1wb3J0ICJMZWdhY3lO
U1Bhc3RlYm9hcmRUeXBlcy5oIgogI2ltcG9ydCAiTGVnYWN5V2ViQXJjaGl2ZS5oIgorI2ltcG9y
dCAiUGFnZS5oIgogI2ltcG9ydCAiUGFnZVBhc3RlYm9hcmRDb250ZXh0LmgiCiAjaW1wb3J0ICJQ
YXN0ZWJvYXJkLmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJkU3RyYXRlZ3kuaCIKQEAgLTc1LDYgKzc3
LDggQEAgc3RhdGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0
ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICoKIAogU3RyaW5nIEVkaXRvcjo6c2VsZWN0aW9u
SW5IVE1MRm9ybWF0KCkKIHsKKyAgICBpZiAoSW1hZ2VPdmVybGF5Ojppc0luc2lkZU92ZXJsYXko
bV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSkpCisgICAgICAgIHJldHVybiB7IH07
CiAgICAgcmV0dXJuIHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJhbmNlKG1fZG9jdW1l
bnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCksIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRpbmdMb2Nh
bEZpbGVVUkxzRm9yUHJpdmFjeSwgU2VyaWFsaXplQ29tcG9zZWRUcmVlOjpZZXMpOwogfQogCkBA
IC0xMDAsOSArMTA0LDUyIEBAIHZvaWQgRWRpdG9yOjpnZXRQYXN0ZWJvYXJkVHlwZXNBbmREYXRh
Rm9yQXR0YWNobWVudChFbGVtZW50JiBlbGVtZW50LCBWZWN0b3I8U3RyCiAKICNlbmRpZgogCitz
dGF0aWMgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4gc2VsZWN0aW9uSW5JbWFnZU92ZXJs
YXlBc0F0dHJpYnV0ZWRTdHJpbmcoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQor
eworI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJU19FTkhBTkNFTUVOVFMpCisgICAgYXV0byogcGFn
ZSA9IHNlbGVjdGlvbi5kb2N1bWVudCgpLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAg
ICByZXR1cm4gbmlsOworCisgICAgUmVmUHRyIGhvc3RFbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0
PEhUTUxFbGVtZW50PihzZWxlY3Rpb24uc3RhcnQoKS5jb250YWluZXJOb2RlKCktPnNoYWRvd0hv
c3QoKSk7CisgICAgaWYgKCFob3N0RWxlbWVudCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisKKyAgICBhdXRvIGNhY2hlZFJlc3Vs
dCA9IHBhZ2UtPmNhY2hlZFRleHRSZWNvZ25pdGlvblJlc3VsdCgqaG9zdEVsZW1lbnQpOworICAg
IGlmICghY2FjaGVkUmVzdWx0KQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgYXV0byBjaGFy
YWN0ZXJSYW5nZSA9IHZhbHVlT3JEZWZhdWx0KEltYWdlT3ZlcmxheTo6Y2hhcmFjdGVyUmFuZ2Uo
c2VsZWN0aW9uKSk7CisgICAgaWYgKCFjaGFyYWN0ZXJSYW5nZS5sZW5ndGgpCisgICAgICAgIHJl
dHVybiBuaWw7CisKKyAgICBhdXRvIHN0cmluZyA9IHN0cmluZ0ZvclJhbmdlKCpjYWNoZWRSZXN1
bHQsIGNoYXJhY3RlclJhbmdlKTsKKyAgICBfX2Jsb2NrIGJvb2wgaGFzQW55QXR0cmlidXRlcyA9
IGZhbHNlOworICAgIFtzdHJpbmcgZW51bWVyYXRlQXR0cmlidXRlc0luUmFuZ2U6TlNNYWtlUmFu
Z2UoMCwgW3N0cmluZyBsZW5ndGhdKSBvcHRpb25zOjAgdXNpbmdCbG9jazpeKE5TRGljdGlvbmFy
eSAqYXR0cmlidXRlcywgTlNSYW5nZSwgQk9PTCAqc3RvcCkgeworICAgICAgICBpZiAoYXR0cmli
dXRlcy5jb3VudCkgeworICAgICAgICAgICAgaGFzQW55QXR0cmlidXRlcyA9IHRydWU7CisgICAg
ICAgICAgICAqc3RvcCA9IFlFUzsKKyAgICAgICAgfQorICAgIH1dOworCisgICAgaWYgKCFoYXNB
bnlBdHRyaWJ1dGVzKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIHN0cmluZzsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNlbGVjdGlvbik7CisgICAgcmV0dXJuIG5pbDsKKyNl
bmRpZgorfQorCiBzdGF0aWMgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4gc2VsZWN0aW9u
QXNBdHRyaWJ1dGVkU3RyaW5nKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBhdXRv
IHJhbmdlID0gZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuZmlyc3RSYW5nZSgpOwor
ICAgIGF1dG8gc2VsZWN0aW9uID0gZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7Cisg
ICAgaWYgKEltYWdlT3ZlcmxheTo6aXNJbnNpZGVPdmVybGF5KHNlbGVjdGlvbikpCisgICAgICAg
IHJldHVybiBzZWxlY3Rpb25JbkltYWdlT3ZlcmxheUFzQXR0cmlidXRlZFN0cmluZyhzZWxlY3Rp
b24pOworICAgIGF1dG8gcmFuZ2UgPSBzZWxlY3Rpb24uZmlyc3RSYW5nZSgpOwogICAgIHJldHVy
biByYW5nZSA/IGF0dHJpYnV0ZWRTdHJpbmcoKnJhbmdlKS5zdHJpbmcgOiBhZG9wdE5TKFtbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XSk7CiB9CiAKQEAgLTE0Niw2ICsxOTMsOCBAQCB2
b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb24oUGFzdGVib2FyZFdyaXRlckRhdGEmIHBhc3RlYm9h
cmRXcml0ZXJEYXRhKQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBFZGl0b3I6OnNlbGVjdGlvbklu
V2ViQXJjaGl2ZUZvcm1hdCgpCiB7CisgICAgaWYgKEltYWdlT3ZlcmxheTo6aXNJbnNpZGVPdmVy
bGF5KG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICBhdXRvIGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9t
U2VsZWN0aW9uKG1fZG9jdW1lbnQuZnJhbWUoKSk7CiAgICAgaWYgKCFhcmNoaXZlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDZhODVlODQzZDhiYmUzZDE5
MmQ5N2Y0OTZiZDdlYjQ1NDc0OWRiYTQuLjIwZGY4MTE1ZThmZDk1MjAzYTU1MTJkMmY4OGYwNGZl
ZjkxNjdmZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMzgzNiw2ICszODM2LDE1IEBAIGJvb2wg
UGFnZTo6aGFzQ2FjaGVkVGV4dFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IEhUTUxFbGVtZW50JiBl
bGVtZW50KSBjb25zdAogICAgIHJldHVybiBtX3RleHRSZWNvZ25pdGlvblJlc3VsdHMuY29udGFp
bnMoZWxlbWVudCk7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8VGV4dFJlY29nbml0aW9uUmVzdWx0PiBQ
YWdlOjpjYWNoZWRUZXh0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1l
bnQpIGNvbnN0Cit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fdGV4dFJlY29nbml0aW9uUmVzdWx0
cy5maW5kKGVsZW1lbnQpOworICAgIGlmIChpdGVyYXRvciA9PSBtX3RleHRSZWNvZ25pdGlvblJl
c3VsdHMuZW5kKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4g
eyBpdGVyYXRvci0+dmFsdWUuZmlyc3QgfTsKK30KKwogdm9pZCBQYWdlOjpjYWNoZVRleHRSZWNv
Z25pdGlvblJlc3VsdChjb25zdCBIVE1MRWxlbWVudCYgZWxlbWVudCwgY29uc3QgSW50UmVjdCYg
Y29udGFpbmVyUmVjdCwgY29uc3QgVGV4dFJlY29nbml0aW9uUmVzdWx0JiByZXN1bHQpCiB7CiAg
ICAgbV90ZXh0UmVjb2duaXRpb25SZXN1bHRzLnNldChlbGVtZW50LCBDYWNoZWRUZXh0UmVjb2du
aXRpb25SZXN1bHQgeyByZXN1bHQsIGNvbnRhaW5lclJlY3QgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4
IDhmZDUxZWI2N2QxZWJhMmZmMGE5Y2Q1ODgxYTdjZTc2N2UyMmFiYjkuLjUxYzgwZDhjMWUyY2Vj
NjZiNmEyZmIyNmU2ZWFhMzYwNzFjNjdmZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC05MTgsNiArOTE4
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TG9hZFNjaGVkdWxpbmdNb2RlKExvYWRTY2hlZHVs
aW5nTW9kZSk7CiAKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCisgICAgc3RkOjpvcHRpb25h
bDxUZXh0UmVjb2duaXRpb25SZXN1bHQ+IGNhY2hlZFRleHRSZWNvZ25pdGlvblJlc3VsdChjb25z
dCBIVE1MRWxlbWVudCYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzQ2FjaGVk
VGV4dFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IEhUTUxFbGVtZW50JikgY29uc3Q7CiAgICAgdm9p
ZCBjYWNoZVRleHRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBIVE1MRWxlbWVudCYsIGNvbnN0IElu
dFJlY3QmIGNvbnRhaW5lclJlY3QsIGNvbnN0IFRleHRSZWNvZ25pdGlvblJlc3VsdCYpOwogICAg
IHZvaWQgcmVzZXRUZXh0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgSFRNTEVsZW1lbnQmKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>