<?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>233266</bug_id>
          
          <creation_ts>2021-11-17 11:29:34 -0800</creation_ts>
          <short_desc>ImageAnalysisQueue should analyze image elements that are loaded after the call to enqueueAllImages()</short_desc>
          <delta_ts>2022-01-17 12:18:30 -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>Platform</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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>akeerthi</cc>
    
    <cc>bdakin</cc>
    
    <cc>darin</cc>
    
    <cc>hi</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1816028</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-11-17 11:29:34 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817675</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-24 11:30:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/85731875&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831355</commentid>
    <comment_count>2</comment_count>
      <attachid>449292</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-16 15:32:14 -0800</bug_when>
    <thetext>Created attachment 449292
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831364</commentid>
    <comment_count>3</comment_count>
      <attachid>449292</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-16 17:01:05 -0800</bug_when>
    <thetext>Comment on attachment 449292
For EWS

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

&gt; Source/WebCore/page/ImageAnalysisQueue.cpp:68
&gt; +    auto&amp; renderImage = downcast&lt;RenderImage&gt;(*element.renderer());

I would just call this local variable &quot;renderer&quot;. Yes the type is RenderImage, but that doesn’t need to be the name as well.

&gt; Source/WebCore/page/ImageAnalysisQueue.cpp:99
&gt; +    auto imageIterator = document.images()-&gt;createIterator();
&gt; +    for (RefPtr node = imageIterator.next(); node; node = imageIterator.next()) {
&gt; +        if (auto* element = dynamicDowncast&lt;HTMLElement&gt;(*node))
&gt; +            enqueueIfNeeded(*element);
&gt; +    }

It’s a mistake to use Document::images here. An HTMLCollection is designed as an API for use from JavaScript and offers no significant advantages over descendantsOfType&lt;HTMLImageElement&gt; for use in C++ code.

    for (auto&amp; image : descendantsOfType&lt;HTMLImageElement&gt;(document))
        enqueueIfNeeded(image);

Using Document::images will just waste memory and time allocating objects to fulfill the abstraction needed to work with the JavaScript code.

Note also that the m_page check, the isConnected check, and document check in ImageAnalysisQueue::enqueueIfNeeded are all unnecessary here. But harmless I suppose.

&gt; Source/WebCore/page/ImageAnalysisQueue.h:51
&gt; +    void enqueueIfNeeded(HTMLElement&amp;);

This can use HTMLImageElement.

&gt; Source/WebCore/page/ImageAnalysisQueue.h:61
&gt; +    WeakHashSet&lt;HTMLElement&gt; m_queuedElements;
&gt; +    Deque&lt;WeakPtr&lt;HTMLElement&gt;&gt; m_queue;

These can use HTMLImageElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831389</commentid>
    <comment_count>4</comment_count>
      <attachid>449292</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-16 21:11:13 -0800</bug_when>
    <thetext>Comment on attachment 449292
For EWS

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

Thanks for the review!

&gt;&gt; Source/WebCore/page/ImageAnalysisQueue.cpp:68
&gt;&gt; +    auto&amp; renderImage = downcast&lt;RenderImage&gt;(*element.renderer());
&gt; 
&gt; I would just call this local variable &quot;renderer&quot;. Yes the type is RenderImage, but that doesn’t need to be the name as well.

Renamed to `renderer`.

&gt;&gt; Source/WebCore/page/ImageAnalysisQueue.cpp:99
&gt;&gt; +    }
&gt; 
&gt; It’s a mistake to use Document::images here. An HTMLCollection is designed as an API for use from JavaScript and offers no significant advantages over descendantsOfType&lt;HTMLImageElement&gt; for use in C++ code.
&gt; 
&gt;     for (auto&amp; image : descendantsOfType&lt;HTMLImageElement&gt;(document))
&gt;         enqueueIfNeeded(image);
&gt; 
&gt; Using Document::images will just waste memory and time allocating objects to fulfill the abstraction needed to work with the JavaScript code.
&gt; 
&gt; Note also that the m_page check, the isConnected check, and document check in ImageAnalysisQueue::enqueueIfNeeded are all unnecessary here. But harmless I suppose.

Good point — changed this to just use `descendantsOfType&lt;&gt;`!

Also removed the unnecessary early returns.

&gt;&gt; Source/WebCore/page/ImageAnalysisQueue.h:51
&gt;&gt; +    void enqueueIfNeeded(HTMLElement&amp;);
&gt; 
&gt; This can use HTMLImageElement.

Changed to HTMLImageElement.

&gt;&gt; Source/WebCore/page/ImageAnalysisQueue.h:61
&gt;&gt; +    Deque&lt;WeakPtr&lt;HTMLElement&gt;&gt; m_queue;
&gt; 
&gt; These can use HTMLImageElement.

Changed these to &lt;HTMLImageElement&gt; as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831395</commentid>
    <comment_count>5</comment_count>
      <attachid>449305</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-16 22:09:05 -0800</bug_when>
    <thetext>Created attachment 449305
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831521</commentid>
    <comment_count>6</comment_count>
      <attachid>449305</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-17 09:58:57 -0800</bug_when>
    <thetext>Comment on attachment 449305
For EWS

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

&gt; Source/WebCore/page/ImageAnalysisQueue.h:60
&gt; +    WeakHashSet&lt;HTMLImageElement&gt; m_queuedElements;
&gt; +    Deque&lt;WeakPtr&lt;HTMLImageElement&gt;&gt; m_queue;

One other thought. The reason that ListHashSet exists is for use cases like this one where we want an ordered collection without duplicates. While it doesn’t have &quot;deque&quot; in its name, it does have an efficient takeFirst operation, and and new items are added at the end, so it’s much like a deque combined with a set.

I don’t know, though, how well it works with WeakPtr. But it would be nicer to use that combined data structure rather than building it out of the two pieces manually as we do here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831522</commentid>
    <comment_count>7</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-17 10:01:11 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #6)
&gt; Comment on attachment 449305 [details]
&gt; For EWS
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=449305&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/ImageAnalysisQueue.h:60
&gt; &gt; +    WeakHashSet&lt;HTMLImageElement&gt; m_queuedElements;
&gt; &gt; +    Deque&lt;WeakPtr&lt;HTMLImageElement&gt;&gt; m_queue;
&gt; 
&gt; One other thought. The reason that ListHashSet exists is for use cases like
&gt; this one where we want an ordered collection without duplicates. While it
&gt; doesn’t have &quot;deque&quot; in its name, it does have an efficient takeFirst
&gt; operation, and and new items are added at the end, so it’s much like a deque
&gt; combined with a set.
&gt; 
&gt; I don’t know, though, how well it works with WeakPtr. But it would be nicer
&gt; to use that combined data structure rather than building it out of the two
&gt; pieces manually as we do here.

In this case, elements are removed from `m_queue` when they&apos;re analyzed, but not removed from `m_queuedElements`, since want to avoid repeatedly re-analyzing elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831549</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-17 12:18:28 -0800</bug_when>
    <thetext>Committed r288102 (246116@main): &lt;https://commits.webkit.org/246116@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 449305.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449292</attachid>
            <date>2022-01-16 15:32:14 -0800</date>
            <delta_ts>2022-01-16 22:09:03 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-233266-20220116153214.patch</filename>
            <type>text/plain</type>
            <size>18422</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTAwMzRkZDMyNzRhYjIx
MWZiYWI5NTQ2ZGI1NmQ3MDUzN2U3ZjMwZS4uMTQ0OTM1NzJmZTU0ZTdmYzQ4MjQ0M2JkN2M0ZDU0
MjM1N2Y5OTEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIyLTAxLTE2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEltYWdlQW5hbHlz
aXNRdWV1ZSBzaG91bGQgYW5hbHl6ZSBpbWFnZSBlbGVtZW50cyB0aGF0IGFyZSBsb2FkZWQgYWZ0
ZXIgdGhlIGNhbGwgdG8gZW5xdWV1ZUFsbEltYWdlcygpCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMyNjYKKyAgICAgICAgcmRhcjovLzg1NzMxODc1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBh
IGZldyBhZGp1c3RtZW50cyB0byBJbWFnZUFuYWx5c2lzUXVldWUsIHN1Y2ggdGhhdCBpdCBjb250
aW51ZXMgdG8gYW5hbHl6ZSBpbWFnZXMgaW4gdGhlIGRvY3VtZW50IHRoYXQgaGF2ZQorICAgICAg
ICBmaW5pc2hlZCBsb2FkaW5nIGFmdGVyIHRyaWdnZXJpbmcgdGhlIGluaXRpYWwgY2FsbCB0byBg
ZW5xdWV1ZUFsbEltYWdlcygpYCBpbiB0aGUgZG9jdW1lbnQuCisKKyAgICAgICAgVGVzdDogICBJ
bWFnZUFuYWx5c2lzVGVzdHMuQW5hbHl6ZUR5bmFtaWNhbGx5TG9hZGVkSW1hZ2VzCisgICAgICAg
ICAgICAgICAgSW1hZ2VBbmFseXNpc1Rlc3RzLlJlc2V0SW1hZ2VBbmFseXNpc0FmdGVyTmF2aWdh
dGlvbgorCisgICAgICAgICogcGFnZS9JbWFnZUFuYWx5c2lzUXVldWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VBbmFseXNpc1F1ZXVlOjplbnF1ZXVlSWZOZWVkZWQpOgorCisgICAgICAg
IFB1bGwgbG9naWMgZm9yIHF1ZXVlaW5nIGFuIGltYWdlIGVsZW1lbnQgZm9yIGFuYWx5c2lzIGlu
dG8gYSBzZXBhcmF0ZSBoZWxwZXIgbWV0aG9kOyB3ZSBvbmx5IGF0dGVtcHQgdG8gYW5hbHl6ZQor
ICAgICAgICBpbWFnZSBlbGVtZW50cyB0aGF0IGhhdmUgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBhbmQg
Y29udGFpbiBhIGBDYWNoZWRJbWFnZWAgdGhhdCBpcyBsYXJnZXIgdGhhbiBhbiBhcmJpdHJhcmls
eQorICAgICAgICBjaG9zZW4gc2l6ZSBvZiAyMHB4IGJ5IDIwcHguCisKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQW5hbHlzaXNRdWV1ZTo6ZW5xdWV1ZUFsbEltYWdlcyk6CisKKyAgICAgICAgUmVm
YWN0b3IgdGhpcyB0byB1c2UgdGhlIG5ldyBgZW5xdWV1ZUlmTmVlZGVkYCBtZXRob2QgYWJvdmUu
CisKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQW5hbHlzaXNRdWV1ZTo6cmVzdW1lUHJvY2Vzc2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUFuYWx5c2lzUXVldWU6OmNsZWFyKToKKyAgICAg
ICAgKiBwYWdlL0ltYWdlQW5hbHlzaXNRdWV1ZS5oOgorCisgICAgICAgIEFkZCBhIHdlYWsgaGFz
aHNldCBvZiBlbGVtZW50cyB0aGF0IHdlJ3ZlIGFscmVhZHkgYWRkZWQgdG8gdGhlIGltYWdlIGFu
YWx5c2lzIHF1ZXVlIGF0IHNvbWUgcG9pbnQuIFRoaXMgcHJldmVudHMKKyAgICAgICAgdXMgZnJv
bSBjb250aW51YWxseSBwZXJmb3JtaW5nIGltYWdlIGFuYWx5c2lzIG9uIHRoZSBzYW1lIGltYWdl
IGlmIGl0J3Mgb25seSBiZWluZyByZW1vdmVkIGFuZCByZWluc2VydGVkIGluIHRoZQorICAgICAg
ICBkb2N1bWVudC4KKworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjpkaWRDb21taXRMb2FkKToKKworICAgICAgICBBZGRpdGlvbmFsbHkgcmVzZXQgdGhl
IGltYWdlIGFuYWx5c2lzIHF1ZXVlIHdoZW4gY29tbWl0dGluZyBwYWdlIGxvYWQsIHNvIHRoYXQg
dGhlIGltYWdlIGFuYWx5c2lzIHF1ZXVlIGRvZXNuJ3QKKyAgICAgICAgcGVyc2lzdCBhbmQgY29u
dGludWUgYW5hbHl6aW5nIGltYWdlcyBldmVuIGFmdGVyIHJlbG9hZGluZyB0aGUgcGFnZSAob3Ig
bmF2aWdhdGluZyBhd2F5KS4KKworICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZGlkRmluaXNoTG9h
ZGluZ0ltYWdlRm9yRWxlbWVudCk6CisKKyAgICAgICAgSWYgaXQgZXhpc3RzLCB0ZWxsIHRoZSBw
YWdlJ3MgaW1hZ2UgYW5hbHlzaXMgcXVldWUgdG8gYWRkIHRoZSBuZXdseSBsb2FkZWQgaW1hZ2Uu
CisKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlc2V0SW1hZ2VBbmFseXNpc1F1ZXVlKToKKyAg
ICAgICAgKiBwYWdlL1BhZ2UuaDoKKwogMjAyMi0wMS0xNSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgQ1NTIEdyYWRpZW50czogaW50ZXJwb2xhdGlvbiBtb2RlIHNo
b3VsZCBkZWZhdWx0IHRvIE9LTGFiIGlmIGFueSBub24tbGVnYWN5IGNvbG9yIHN5bnRheCBjb2xv
cnMgYXJlIHVzZWQgaW4gdGhlIHN0b3BzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ltYWdlQW5hbHlzaXNRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ltYWdlQW5hbHlz
aXNRdWV1ZS5jcHAKaW5kZXggODY4Y2NjN2YyOTM5MWY3MGYyZGY3ZjUwZDBhMTIyZjBkZjFkZWNk
MC4uZjY0ZmE1ZmFkNmZkMjUwODk3Y2M1OTA0ZmI4ZTM5MmRhZDFiMmVjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9JbWFnZUFuYWx5c2lzUXVldWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvSW1hZ2VBbmFseXNpc1F1ZXVlLmNwcApAQCAtNTEsNDkgKzUxLDY4IEBAIElt
YWdlQW5hbHlzaXNRdWV1ZTo6SW1hZ2VBbmFseXNpc1F1ZXVlKFBhZ2UmIHBhZ2UpCiAKIEltYWdl
QW5hbHlzaXNRdWV1ZTo6fkltYWdlQW5hbHlzaXNRdWV1ZSgpID0gZGVmYXVsdDsKIAotdm9pZCBJ
bWFnZUFuYWx5c2lzUXVldWU6OmVucXVldWVBbGxJbWFnZXMoRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCit2b2lkIEltYWdlQW5hbHlzaXNRdWV1ZTo6ZW5xdWV1
ZUlmTmVlZGVkKEhUTUxFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmICghbV9wYWdlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRSAoMjMzMjY2KTogQW5hbHl6ZSBpbWFnZSBlbGVt
ZW50cyB0aGF0IGFyZSBsb2FkZWQgYWZ0ZXIgd2UndmUgZW5xdWV1ZWQgYWxsIGltYWdlcyBpbiB0
aGUgZG9jdW1lbnQuCi0gICAgYXV0byBpbWFnZUl0ZXJhdG9yID0gZG9jdW1lbnQuaW1hZ2VzKCkt
PmNyZWF0ZUl0ZXJhdG9yKCk7Ci0gICAgZm9yIChSZWZQdHIgbm9kZSA9IGltYWdlSXRlcmF0b3Iu
bmV4dCgpOyBub2RlOyBub2RlID0gaW1hZ2VJdGVyYXRvci5uZXh0KCkpIHsKLSAgICAgICAgaWYg
KCFpczxIVE1MRWxlbWVudD4oKm5vZGUpKQotICAgICAgICAgICAgY29udGludWU7CisgICAgaWYg
KCFlbGVtZW50LmlzQ29ubmVjdGVkKCkpCisgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRv
JiBlbGVtZW50ID0gZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCpub2RlKTsKLSAgICAgICAgaWYgKCFp
czxSZW5kZXJJbWFnZT4oZWxlbWVudC5yZW5kZXJlcigpKSkKLSAgICAgICAgICAgIGNvbnRpbnVl
OworICAgIGlmIChtX2RvY3VtZW50ICE9ICZlbGVtZW50LmRvY3VtZW50KCkpCisgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBhdXRvJiByZW5kZXJJbWFnZSA9IGRvd25jYXN0PFJlbmRlckltYWdl
PigqZWxlbWVudC5yZW5kZXJlcigpKTsKLSAgICAgICAgYXV0byogY2FjaGVkSW1hZ2UgPSByZW5k
ZXJJbWFnZS5jYWNoZWRJbWFnZSgpOwotICAgICAgICBpZiAoIWNhY2hlZEltYWdlIHx8IGNhY2hl
ZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICBpZiAo
IWlzPFJlbmRlckltYWdlPihlbGVtZW50LnJlbmRlcmVyKCkpKQorICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgaWYgKHJlbmRlckltYWdlLnNpemUoKS53aWR0aCgpIDwgbWluaW11bVdpZHRoRm9y
QW5hbHlzaXMgfHwgcmVuZGVySW1hZ2Uuc2l6ZSgpLmhlaWdodCgpIDwgbWluaW11bUhlaWdodEZv
ckFuYWx5c2lzKQotICAgICAgICAgICAgY29udGludWU7CisgICAgYXV0byYgcmVuZGVySW1hZ2Ug
PSBkb3duY2FzdDxSZW5kZXJJbWFnZT4oKmVsZW1lbnQucmVuZGVyZXIoKSk7CisgICAgYXV0byog
Y2FjaGVkSW1hZ2UgPSByZW5kZXJJbWFnZS5jYWNoZWRJbWFnZSgpOworICAgIGlmICghY2FjaGVk
SW1hZ2UgfHwgY2FjaGVkSW1hZ2UtPmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIG1fcXVldWUuYXBwZW5kKHsgV2Vha1B0ciB7IGVsZW1lbnQgfSwgaWRlbnRpZmll
ciB9KTsKLSAgICB9CisgICAgaWYgKHJlbmRlckltYWdlLnNpemUoKS53aWR0aCgpIDwgbWluaW11
bVdpZHRoRm9yQW5hbHlzaXMgfHwgcmVuZGVySW1hZ2Uuc2l6ZSgpLmhlaWdodCgpIDwgbWluaW11
bUhlaWdodEZvckFuYWx5c2lzKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fcXVldWVk
RWxlbWVudHMuYWRkKGVsZW1lbnQpLmlzTmV3RW50cnkpCisgICAgICAgIHJldHVybjsKIAorICAg
IG1fcXVldWUuYXBwZW5kKHsgZWxlbWVudCB9KTsKICAgICByZXN1bWVQcm9jZXNzaW5nKCk7CiB9
CiAKK3ZvaWQgSW1hZ2VBbmFseXNpc1F1ZXVlOjplbnF1ZXVlQWxsSW1hZ2VzKERvY3VtZW50JiBk
b2N1bWVudCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQoreworICAgIGlmICghbV9wYWdlKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9pZGVudGlmaWVyICE9IGlkZW50aWZpZXIpIHsK
KyAgICAgICAgY2xlYXIoKTsKKyAgICAgICAgbV9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAg
ICB9CisKKyAgICBtX2RvY3VtZW50ID0gZG9jdW1lbnQ7CisKKyAgICBhdXRvIGltYWdlSXRlcmF0
b3IgPSBkb2N1bWVudC5pbWFnZXMoKS0+Y3JlYXRlSXRlcmF0b3IoKTsKKyAgICBmb3IgKFJlZlB0
ciBub2RlID0gaW1hZ2VJdGVyYXRvci5uZXh0KCk7IG5vZGU7IG5vZGUgPSBpbWFnZUl0ZXJhdG9y
Lm5leHQoKSkgeworICAgICAgICBpZiAoYXV0byogZWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxI
VE1MRWxlbWVudD4oKm5vZGUpKQorICAgICAgICAgICAgZW5xdWV1ZUlmTmVlZGVkKCplbGVtZW50
KTsKKyAgICB9Cit9CisKIHZvaWQgSW1hZ2VBbmFseXNpc1F1ZXVlOjpyZXN1bWVQcm9jZXNzaW5n
KCkKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgd2hpbGUgKCFt
X3F1ZXVlLmlzRW1wdHkoKSAmJiBtX3BlbmRpbmdSZXF1ZXN0Q291bnQgPCBtYXhpbXVtUGVuZGlu
Z0ltYWdlQW5hbHlzaXNDb3VudCkgewotICAgICAgICBhdXRvIFt3ZWFrRWxlbWVudCwgaWRlbnRp
Zmllcl0gPSBtX3F1ZXVlLnRha2VGaXJzdCgpOworICAgICAgICBhdXRvIHdlYWtFbGVtZW50ID0g
bV9xdWV1ZS50YWtlRmlyc3QoKTsKICAgICAgICAgUmVmUHRyIGVsZW1lbnQgPSB3ZWFrRWxlbWVu
dC5nZXQoKTsKICAgICAgICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LT5pc0Nvbm5lY3RlZCgp
KQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgbV9wZW5kaW5nUmVxdWVzdENvdW50
Kys7CiAgICAgICAgIG1fcGFnZS0+cmVzZXRUZXh0UmVjb2duaXRpb25SZXN1bHQoKmVsZW1lbnQp
OwotICAgICAgICBtX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnJlcXVlc3RUZXh0UmVjb2duaXRp
b24oKmVsZW1lbnQsIGlkZW50aWZpZXIsIFt0aGlzLCBwYWdlID0gbV9wYWdlXSAoYXV0byYmKSB7
CisgICAgICAgIG1fcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkucmVxdWVzdFRleHRSZWNvZ25pdGlv
bigqZWxlbWVudCwgbV9pZGVudGlmaWVyLCBbdGhpcywgcGFnZSA9IG1fcGFnZV0gKGF1dG8mJikg
ewogICAgICAgICAgICAgaWYgKCFwYWdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAt
MTEyLDYgKzEzMSw5IEBAIHZvaWQgSW1hZ2VBbmFseXNpc1F1ZXVlOjpjbGVhcigpCiAgICAgbV9w
ZW5kaW5nUmVxdWVzdENvdW50ID0gMDsKICAgICBtX3Jlc3VtZVByb2Nlc3NpbmdUaW1lci5zdG9w
KCk7CiAgICAgbV9xdWV1ZS5jbGVhcigpOworICAgIG1fcXVldWVkRWxlbWVudHMuY2xlYXIoKTsK
KyAgICBtX2lkZW50aWZpZXIgPSB7IH07CisgICAgbV9kb2N1bWVudCA9IHsgfTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbWFn
ZUFuYWx5c2lzUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW1hZ2VBbmFseXNpc1F1ZXVl
LmgKaW5kZXggZmE5NDQ4YWZmNDRjYzkyNjA5NWMwZWJmOWQ1YTQxMmExOWZjYjg1ZS4uMGVlMDc2
NTRlOTY3MjNhOTU2MzdhZjUyYTJlNDMxZDE5NWZlMmEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9JbWFnZUFuYWx5c2lzUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ltYWdlQW5hbHlzaXNRdWV1ZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlIDx3dGYv
RGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9XZWFr
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTQ1LDE5ICs0NiwxOSBAQCBwdWJsaWM6CiAgICAgfkltYWdlQW5hbHlzaXNRdWV1ZSgp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbnF1ZXVlQWxsSW1hZ2VzKERvY3VtZW50Jiwg
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFy
KCk7CisgICAgdm9pZCBjbGVhcigpOworCisgICAgdm9pZCBlbnF1ZXVlSWZOZWVkZWQoSFRNTEVs
ZW1lbnQmKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHJlc3VtZVByb2Nlc3NpbmcoKTsKIAotICAg
IHN0cnVjdCBUYXNrIHsKLSAgICAgICAgV2Vha1B0cjxIVE1MRWxlbWVudD4gZWxlbWVudDsKLSAg
ICAgICAgU3RyaW5nIGlkZW50aWZpZXI7Ci0gICAgfTsKLQorICAgIFdlYWtQdHI8RG9jdW1lbnQ+
IG1fZG9jdW1lbnQ7CisgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKICAgICBXZWFrUHRyPFBhZ2U+
IG1fcGFnZTsKICAgICBUaW1lciBtX3Jlc3VtZVByb2Nlc3NpbmdUaW1lcjsKLSAgICBEZXF1ZTxU
YXNrPiBtX3F1ZXVlOworICAgIFdlYWtIYXNoU2V0PEhUTUxFbGVtZW50PiBtX3F1ZXVlZEVsZW1l
bnRzOworICAgIERlcXVlPFdlYWtQdHI8SFRNTEVsZW1lbnQ+PiBtX3F1ZXVlOwogICAgIHVuc2ln
bmVkIG1fcGVuZGluZ1JlcXVlc3RDb3VudCB7IDAgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmlu
ZGV4IGI1MzkyZGMzNzljMTNhYTNjNjdlMzViMmNhNjZjNTg2YmI5YmIwN2EuLjdiMjNiMjM3ZWNm
NGU5MjBkZTY1NmYwNmE1OWJmZjM1MzE4ZGYxODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTMx
NCw2ICsxMzE0LDcgQEAgdm9pZCBQYWdlOjpkaWRDb21taXRMb2FkKCkKIAogI2lmIEVOQUJMRShJ
TUFHRV9BTkFMWVNJUykKICAgICByZXNldFRleHRSZWNvZ25pdGlvblJlc3VsdHMoKTsKKyAgICBy
ZXNldEltYWdlQW5hbHlzaXNRdWV1ZSgpOwogI2VuZGlmCiB9CiAKQEAgLTM2MTUsOCArMzYxNiwx
NyBAQCB2b2lkIFBhZ2U6OmRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1lbnQoSFRNTEltYWdl
RWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBmcmFtZS0+
ZWRpdG9yKCkucmV2ZWFsU2VsZWN0aW9uSWZOZWVkZWRBZnRlckxvYWRpbmdJbWFnZUZvckVsZW1l
bnQoZWxlbWVudCk7Ci0gICAgICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsgZWxl
bWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpID09IGZyYW1lKQorCisgICAgICAgIGlmIChlbGVtZW50
LT5kb2N1bWVudCgpLmZyYW1lKCkgIT0gZnJhbWUpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7CisjaWYgRU5BQkxFKElNQUdF
X0FOQUxZU0lTKQorICAgICAgICAgICAgaWYgKGF1dG8qIHF1ZXVlID0gcGFnZS0+aW1hZ2VBbmFs
eXNpc1F1ZXVlSWZFeGlzdHMoKSkKKyAgICAgICAgICAgICAgICBxdWV1ZS0+ZW5xdWV1ZUlmTmVl
ZGVkKGVsZW1lbnQpOworI2VuZGlmCiAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQo
KS5kaWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KGVsZW1lbnQpOworICAgICAgICB9CiAg
ICAgfSk7CiB9CiAKQEAgLTM3NTYsNiArMzc2NiwxMiBAQCBJbWFnZUFuYWx5c2lzUXVldWUmIFBh
Z2U6OmltYWdlQW5hbHlzaXNRdWV1ZSgpCiAgICAgcmV0dXJuICptX2ltYWdlQW5hbHlzaXNRdWV1
ZTsKIH0KIAordm9pZCBQYWdlOjpyZXNldEltYWdlQW5hbHlzaXNRdWV1ZSgpCit7CisgICAgaWYg
KGF1dG8gcHJldmlvdXNRdWV1ZSA9IHN0ZDo6ZXhjaGFuZ2UobV9pbWFnZUFuYWx5c2lzUXVldWUs
IHsgfSkpCisgICAgICAgIHByZXZpb3VzUXVldWUtPmNsZWFyKCk7Cit9CisKIHZvaWQgUGFnZTo6
dXBkYXRlRWxlbWVudHNXaXRoVGV4dFJlY29nbml0aW9uUmVzdWx0cygpCiB7CiAgICAgaWYgKG1f
dGV4dFJlY29nbml0aW9uUmVzdWx0cy5pc0VtcHR5SWdub3JpbmdOdWxsUmVmZXJlbmNlcygpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAppbmRleCBiZGYwMDM0ZTZiNDI0NmY1Y2E0N2E5Y2U4ODA1NGNiZmMxZGZhMzky
Li45MDVhMzE5ZTA1OWE3ZjNiMDExMzliNmJjMzFkZGYxMTI4NGU4YWVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aApAQCAtOTE1LDYgKzkxNSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhh
c0NhY2hlZFRleHRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBIVE1MRWxlbWVudCYpIGNvbnN0Owog
ICAgIHZvaWQgY2FjaGVUZXh0UmVjb2duaXRpb25SZXN1bHQoY29uc3QgSFRNTEVsZW1lbnQmLCBj
b25zdCBJbnRSZWN0JiBjb250YWluZXJSZWN0LCBjb25zdCBUZXh0UmVjb2duaXRpb25SZXN1bHQm
KTsKICAgICB2b2lkIHJlc2V0VGV4dFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IEhUTUxFbGVtZW50
Jik7CisgICAgdm9pZCByZXNldEltYWdlQW5hbHlzaXNRdWV1ZSgpOwogI2VuZGlmCiAKICAgICBX
RUJDT1JFX0VYUE9SVCBQZXJtaXNzaW9uQ29udHJvbGxlciYgcGVybWlzc2lvbkNvbnRyb2xsZXIo
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4
ZTFmZmQ3OTE4Y2ZhNjc5NTQwNWE1NmIzMTg3ZWYzZTc5ZDljZDhhLi45ZjNiYzg1YTk4OWI1Y2Vh
NjM4ZmFiODI5ZTVjMWNjNGI1Y2ExZjM0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjItMDEtMTYgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgSW1hZ2VBbmFseXNpc1F1
ZXVlIHNob3VsZCBhbmFseXplIGltYWdlIGVsZW1lbnRzIHRoYXQgYXJlIGxvYWRlZCBhZnRlciB0
aGUgY2FsbCB0byBlbnF1ZXVlQWxsSW1hZ2VzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzI2NgorICAgICAgICByZGFyOi8vODU3MzE4NzUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IEFQ
SSB0ZXN0cyB0byBjaGVjayB0aGF0IGltYWdlIGVsZW1lbnRzIHRoYXQgYXJlIGNyZWF0ZWQgYW5k
IGluc2VydGVkIGFmdGVyIGtpY2tpbmcgb2ZmIHRoZSBpbWFnZQorICAgICAgICBhbmFseXNpcyBx
dWV1ZSBhcmUgc3VjY2Vzc2Z1bGx5IGFkZGVkIHRvIHRoZSBxdWV1ZSwgYW5kIHJlc3VsdCBpbiBw
bGF0Zm9ybSBpbWFnZSBhbmFseXNpcyByZXF1ZXN0cywgYW5kIHRvIGFsc28KKyAgICAgICAgdmVy
aWZ5IHRoYXQgdGhlIGltYWdlIGFuYWx5c2lzIHF1ZXVlIGlzIHJlc2V0IGFmdGVyIG5hdmlnYXRp
b24uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ltYWdlQW5h
bHlzaXNUZXN0cy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnByb2Nlc3NSZXF1ZXN0V2l0
aFJlc3VsdHMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bWFrZUltYWdlQW5hbHlzaXNSZXF1
ZXN0U3dpenpsZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cHJvY2Vzc1JlcXVlc3RXaXRo
RXJyb3IpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpzd2l6emxlZFByb2Nlc3NSZXF1ZXN0V2l0aFJlc3VsdHMpOiBEZWxldGVkLgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6c3dpenpsZWRQcm9jZXNzUmVxdWVzdFdpdGhFcnJvcik6IERl
bGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tdWx0aXBs
ZS1pbWFnZXMuaHRtbDoKKwogMjAyMi0wMS0xNSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgQ1NTIEdyYWRpZW50czogaW50ZXJwb2xhdGlvbiBtb2RlIHNob3VsZCBk
ZWZhdWx0IHRvIE9LTGFiIGlmIGFueSBub24tbGVnYWN5IGNvbG9yIHN5bnRheCBjb2xvcnMgYXJl
IHVzZWQgaW4gdGhlIHN0b3BzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0ltYWdlQW5hbHlzaXNUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvSW1hZ2VBbmFseXNpc1Rlc3RzLm1tCmluZGV4IGU4MDc4MGZkZmRj
OGQyZDJkOWY1NTc1OWExYjc1OWExNDEzZTUxMmMuLjljMzU2NzllZWU0MTAzOGRjODQ4MDMwYzhj
ZWYyMWY0OTliMjkyZGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW1hZ2VBbmFseXNpc1Rlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvSW1hZ2VBbmFseXNpc1Rlc3RzLm1tCkBAIC0xMDQsMTUgKzEwNCwy
MSBAQCBzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IGNyZWF0ZVdlYlZpZXdXaXRoVGV4
dFJlY29nbml0aW9uRW5oYW5jZW1lbnRzKCkKICAgICByZXR1cm4gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiB9CiAKLXN0YXRpYyB2b2lkIHN3aXp6
bGVkUHJvY2Vzc1JlcXVlc3RXaXRoUmVzdWx0cyhpZCwgU0VMLCBWS0ltYWdlQW5hbHl6ZXJSZXF1
ZXN0ICosIHZvaWQgKF4pKGRvdWJsZSBwcm9ncmVzcyksIHZvaWQgKF5jb21wbGV0aW9uKShWS0lt
YWdlQW5hbHlzaXMgKiwgTlNFcnJvciAqKSkKK3N0YXRpYyB2b2lkIHByb2Nlc3NSZXF1ZXN0V2l0
aFJlc3VsdHMoaWQsIFNFTCwgVktJbWFnZUFuYWx5emVyUmVxdWVzdCAqLCB2b2lkICheKShkb3Vi
bGUgcHJvZ3Jlc3MpLCB2b2lkICheY29tcGxldGlvbikoVktJbWFnZUFuYWx5c2lzICosIE5TRXJy
b3IgKikpCiB7CiAgICAgZ0RpZFByb2Nlc3NSZXF1ZXN0Q291bnQrKzsKICAgICBjb21wbGV0aW9u
KGNyZWF0ZUltYWdlQW5hbHlzaXNXaXRoU2ltcGxlRml4ZWRSZXN1bHRzKCkuZ2V0KCksIG5pbCk7
CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvblR5cGU+CitJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyIG1ha2VJbWFnZUFuYWx5c2lzUmVxdWVzdFN3aXp6bGVyKEZ1bmN0aW9uVHlwZSBmdW5j
dGlvbikKK3sKKyAgICByZXR1cm4gSW5zdGFuY2VNZXRob2RTd2l6emxlciB7IFBBTDo6Z2V0VktJ
bWFnZUFuYWx5emVyQ2xhc3MoKSwgQHNlbGVjdG9yKHByb2Nlc3NSZXF1ZXN0OnByb2dyZXNzSGFu
ZGxlcjpjb21wbGV0aW9uSGFuZGxlcjopLCByZWludGVycHJldF9jYXN0PElNUD4oZnVuY3Rpb24p
IH07Cit9CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCi1zdGF0aWMgdm9pZCBzd2l6emxl
ZFByb2Nlc3NSZXF1ZXN0V2l0aEVycm9yKGlkLCBTRUwsIFZLSW1hZ2VBbmFseXplclJlcXVlc3Qg
Kiwgdm9pZCAoXikoZG91YmxlIHByb2dyZXNzKSwgdm9pZCAoXmNvbXBsZXRpb24pKFZLSW1hZ2VB
bmFseXNpcyAqYW5hbHlzaXMsIE5TRXJyb3IgKmVycm9yKSkKK3N0YXRpYyB2b2lkIHByb2Nlc3NS
ZXF1ZXN0V2l0aEVycm9yKGlkLCBTRUwsIFZLSW1hZ2VBbmFseXplclJlcXVlc3QgKiwgdm9pZCAo
XikoZG91YmxlIHByb2dyZXNzKSwgdm9pZCAoXmNvbXBsZXRpb24pKFZLSW1hZ2VBbmFseXNpcyAq
YW5hbHlzaXMsIE5TRXJyb3IgKmVycm9yKSkKIHsKICAgICBnRGlkUHJvY2Vzc1JlcXVlc3RDb3Vu
dCsrOwogICAgIGNvbXBsZXRpb24obmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46TlNDb2Nv
YUVycm9yRG9tYWluIGNvZGU6MSB1c2VySW5mbzpuaWxdKTsKQEAgLTEyMCw3ICsxMjYsNyBAQCBz
dGF0aWMgdm9pZCBzd2l6emxlZFByb2Nlc3NSZXF1ZXN0V2l0aEVycm9yKGlkLCBTRUwsIFZLSW1h
Z2VBbmFseXplclJlcXVlc3QgKiwgdgogCiBURVNUKEltYWdlQW5hbHlzaXNUZXN0cywgRG9Ob3RB
bmFseXplSW1hZ2VzSW5FZGl0YWJsZUNvbnRlbnQpCiB7Ci0gICAgSW5zdGFuY2VNZXRob2RTd2l6
emxlciBpbWFnZUFuYWx5c2lzUmVxdWVzdFN3aXp6bGVyIHsgUEFMOjpnZXRWS0ltYWdlQW5hbHl6
ZXJDbGFzcygpLCBAc2VsZWN0b3IocHJvY2Vzc1JlcXVlc3Q6cHJvZ3Jlc3NIYW5kbGVyOmNvbXBs
ZXRpb25IYW5kbGVyOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZFByb2Nlc3NSZXF1
ZXN0V2l0aEVycm9yKSB9OworICAgIGF1dG8gcmVxdWVzdFN3aXp6bGVyID0gbWFrZUltYWdlQW5h
bHlzaXNSZXF1ZXN0U3dpenpsZXIocHJvY2Vzc1JlcXVlc3RXaXRoRXJyb3IpOwogCiAgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCA0MDAsIDQwMCldKTsKICAgICBbd2ViVmlldyBfc2V0RWRpdGFibGU6
WUVTXTsKQEAgLTEzMCw3ICsxMzYsNyBAQCBURVNUKEltYWdlQW5hbHlzaXNUZXN0cywgRG9Ob3RB
bmFseXplSW1hZ2VzSW5FZGl0YWJsZUNvbnRlbnQpCiAKIFRFU1QoSW1hZ2VBbmFseXNpc1Rlc3Rz
LCBIYW5kbGVJbWFnZUFuYWx5emVyRXJyb3JzKQogewotICAgIEluc3RhbmNlTWV0aG9kU3dpenps
ZXIgaW1hZ2VBbmFseXNpc1JlcXVlc3RTd2l6emxlciB7IFBBTDo6Z2V0VktJbWFnZUFuYWx5emVy
Q2xhc3MoKSwgQHNlbGVjdG9yKHByb2Nlc3NSZXF1ZXN0OnByb2dyZXNzSGFuZGxlcjpjb21wbGV0
aW9uSGFuZGxlcjopLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRQcm9jZXNzUmVxdWVz
dFdpdGhFcnJvcikgfTsKKyAgICBhdXRvIHJlcXVlc3RTd2l6emxlciA9IG1ha2VJbWFnZUFuYWx5
c2lzUmVxdWVzdFN3aXp6bGVyKHByb2Nlc3NSZXF1ZXN0V2l0aEVycm9yKTsKIAogICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdE1ha2UoMCwgMCwgNDAwLCA0MDApXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxv
YWRUZXN0UGFnZU5hbWVkOkAiaW1hZ2UiXTsKQEAgLTE0MCw3ICsxNDYsNyBAQCBURVNUKEltYWdl
QW5hbHlzaXNUZXN0cywgSGFuZGxlSW1hZ2VBbmFseXplckVycm9ycykKIAogVEVTVChJbWFnZUFu
YWx5c2lzVGVzdHMsIERvTm90Q3Jhc2hXaGVuSGl0VGVzdGluZ091dHNpZGVPZldlYlZpZXcpCiB7
Ci0gICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBpbWFnZUFuYWx5c2lzUmVxdWVzdFN3aXp6bGVy
IHsgUEFMOjpnZXRWS0ltYWdlQW5hbHl6ZXJDbGFzcygpLCBAc2VsZWN0b3IocHJvY2Vzc1JlcXVl
c3Q6cHJvZ3Jlc3NIYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyOiksIHJlaW50ZXJwcmV0X2Nhc3Q8
SU1QPihzd2l6emxlZFByb2Nlc3NSZXF1ZXN0V2l0aEVycm9yKSB9OworICAgIGF1dG8gcmVxdWVz
dFN3aXp6bGVyID0gbWFrZUltYWdlQW5hbHlzaXNSZXF1ZXN0U3dpenpsZXIocHJvY2Vzc1JlcXVl
c3RXaXRoRXJyb3IpOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA0MDAsIDQwMCldKTsKICAg
ICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJpbWFnZSJdOwpAQCAt
MTUxLDcgKzE1Nyw3IEBAIFRFU1QoSW1hZ2VBbmFseXNpc1Rlc3RzLCBEb05vdENyYXNoV2hlbkhp
dFRlc3RpbmdPdXRzaWRlT2ZXZWJWaWV3KQogCiBURVNUKEltYWdlQW5hbHlzaXNUZXN0cywgQXZv
aWRSZWR1bmRhbnRUZXh0UmVjb2duaXRpb25SZXF1ZXN0cykKIHsKLSAgICBJbnN0YW5jZU1ldGhv
ZFN3aXp6bGVyIGltYWdlQW5hbHlzaXNSZXF1ZXN0U3dpenpsZXIgeyBQQUw6OmdldFZLSW1hZ2VB
bmFseXplckNsYXNzKCksIEBzZWxlY3Rvcihwcm9jZXNzUmVxdWVzdDpwcm9ncmVzc0hhbmRsZXI6
Y29tcGxldGlvbkhhbmRsZXI6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkUHJvY2Vz
c1JlcXVlc3RXaXRoUmVzdWx0cykgfTsKKyAgICBhdXRvIHJlcXVlc3RTd2l6emxlciA9IG1ha2VJ
bWFnZUFuYWx5c2lzUmVxdWVzdFN3aXp6bGVyKHByb2Nlc3NSZXF1ZXN0V2l0aFJlc3VsdHMpOwog
CiAgICAgYXV0byB3ZWJWaWV3ID0gY3JlYXRlV2ViVmlld1dpdGhUZXh0UmVjb2duaXRpb25Fbmhh
bmNlbWVudHMoKTsKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6
QCJpbWFnZSJdOwpAQCAtMTY2LDcgKzE3Miw3IEBAIFRFU1QoSW1hZ2VBbmFseXNpc1Rlc3RzLCBB
dm9pZFJlZHVuZGFudFRleHRSZWNvZ25pdGlvblJlcXVlc3RzKQogCiBURVNUKEltYWdlQW5hbHlz
aXNUZXN0cywgU3RhcnRJbWFnZUFuYWx5c2lzV2l0aG91dElkZW50aWZpZXIpCiB7Ci0gICAgSW5z
dGFuY2VNZXRob2RTd2l6emxlciBpbWFnZUFuYWx5c2lzUmVxdWVzdFN3aXp6bGVyIHsgUEFMOjpn
ZXRWS0ltYWdlQW5hbHl6ZXJDbGFzcygpLCBAc2VsZWN0b3IocHJvY2Vzc1JlcXVlc3Q6cHJvZ3Jl
c3NIYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6
emxlZFByb2Nlc3NSZXF1ZXN0V2l0aFJlc3VsdHMpIH07CisgICAgYXV0byByZXF1ZXN0U3dpenps
ZXIgPSBtYWtlSW1hZ2VBbmFseXNpc1JlcXVlc3RTd2l6emxlcihwcm9jZXNzUmVxdWVzdFdpdGhS
ZXN1bHRzKTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdXaXRoVGV4dFJlY29n
bml0aW9uRW5oYW5jZW1lbnRzKCk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0
UGFnZU5hbWVkOkAibXVsdGlwbGUtaW1hZ2VzIl07CkBAIC0xNzksNiArMTg1LDQ1IEBAIFRFU1Qo
SW1hZ2VBbmFseXNpc1Rlc3RzLCBTdGFydEltYWdlQW5hbHlzaXNXaXRob3V0SWRlbnRpZmllcikK
ICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKG92ZXJsYXlUZXh0LCBAIkZvbyBiYXIiKTsKIH0KIAor
VEVTVChJbWFnZUFuYWx5c2lzVGVzdHMsIEFuYWx5emVEeW5hbWljYWxseUxvYWRlZEltYWdlcykK
K3sKKyAgICBhdXRvIHJlcXVlc3RTd2l6emxlciA9IG1ha2VJbWFnZUFuYWx5c2lzUmVxdWVzdFN3
aXp6bGVyKHByb2Nlc3NSZXF1ZXN0V2l0aFJlc3VsdHMpOworCisgICAgYXV0byB3ZWJWaWV3ID0g
Y3JlYXRlV2ViVmlld1dpdGhUZXh0UmVjb2duaXRpb25FbmhhbmNlbWVudHMoKTsKKyAgICBbd2Vi
VmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJtdWx0aXBsZS1pbWFnZXMiXTsK
KyAgICBbd2ViVmlldyBfc3RhcnRJbWFnZUFuYWx5c2lzOm5pbF07CisgICAgW3dlYlZpZXcgd2Fp
dEZvckltYWdlQW5hbHlzaXNSZXF1ZXN0czo1XTsKKworICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJhcHBlbmRJbWFnZSgnYXBwbGUuZ2lmJykiXTsKKyAgICBbd2Vi
VmlldyB3YWl0Rm9ySW1hZ2VBbmFseXNpc1JlcXVlc3RzOjZdOworCisgICAgW3dlYlZpZXcgb2Jq
ZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImFwcGVuZEltYWdlKCdpY29uLnBuZycpIl07Cisg
ICAgW3dlYlZpZXcgd2FpdEZvckltYWdlQW5hbHlzaXNSZXF1ZXN0czo3XTsKKworICAgIFt3ZWJW
aWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJoaWRlQWxsSW1hZ2VzKCkiXTsKKyAg
ICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisgICAgW3dlYlZpZXcg
b2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInNob3dBbGxJbWFnZXMoKSJdOworICAgIFt3
ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKyAgICBFWFBFQ1RfRVEoZ0Rp
ZFByb2Nlc3NSZXF1ZXN0Q291bnQsIDdVKTsKK30KKworVEVTVChJbWFnZUFuYWx5c2lzVGVzdHMs
IFJlc2V0SW1hZ2VBbmFseXNpc0FmdGVyTmF2aWdhdGlvbikKK3sKKyAgICBhdXRvIHJlcXVlc3RT
d2l6emxlciA9IG1ha2VJbWFnZUFuYWx5c2lzUmVxdWVzdFN3aXp6bGVyKHByb2Nlc3NSZXF1ZXN0
V2l0aFJlc3VsdHMpOworCisgICAgYXV0byB3ZWJWaWV3ID0gY3JlYXRlV2ViVmlld1dpdGhUZXh0
UmVjb2duaXRpb25FbmhhbmNlbWVudHMoKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9h
ZFRlc3RQYWdlTmFtZWQ6QCJtdWx0aXBsZS1pbWFnZXMiXTsKKyAgICBbd2ViVmlldyBfc3RhcnRJ
bWFnZUFuYWx5c2lzOm5pbF07CisgICAgW3dlYlZpZXcgd2FpdEZvckltYWdlQW5hbHlzaXNSZXF1
ZXN0czo1XTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpA
InNpbXBsZSJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsK
KworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAIm11bHRpcGxl
LWltYWdlcyJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsK
KyAgICBFWFBFQ1RfRVEoZ0RpZFByb2Nlc3NSZXF1ZXN0Q291bnQsIDVVKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCiAjZW5kaWYgLy8gRU5BQkxFKElNQUdFX0FOQUxZU0lT
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tdWx0
aXBsZS1pbWFnZXMuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
bXVsdGlwbGUtaW1hZ2VzLmh0bWwKaW5kZXggOGVkNDc5ZDgzYjAyZDg2NmUwZjdkMWMwNmJmODE3
OTNjMWZkYzUzMi4uYWQ0OTNmMThjZDU3Y2RhMjU5NTBkZTQ1MjcwNTRjMmE0ZDkxODc4MSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tdWx0aXBsZS1p
bWFnZXMuaHRtbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL211
bHRpcGxlLWltYWdlcy5odG1sCkBAIC0xOSw2ICsxOSwyMyBAQAogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBmdW5jdGlvbiBhcHBlbmRJbWFnZShpbWFnZVNvdXJjZSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBjb25zdCBpbWFnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIp
OworICAgICAgICAgICAgICAgIGltYWdlLnNyYyA9IGltYWdlU291cmNlOworICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW1hZ2UpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBmdW5jdGlvbiBoaWRlQWxsSW1hZ2VzKCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBBcnJheS5mcm9tKGRvY3VtZW50LmltYWdlcykuZm9yRWFjaChpbWFnZSA9PiBp
bWFnZS5zdHlsZS5zZXRQcm9wZXJ0eSgiZGlzcGxheSIsICJub25lIikpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBmdW5jdGlvbiBzaG93QWxsSW1hZ2VzKCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBBcnJheS5mcm9tKGRvY3VtZW50LmltYWdlcykuZm9yRWFjaChpbWFn
ZSA9PiBpbWFnZS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiZGlzcGxheSIpKTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9oZWFkPgogICAgIDxib2R5IHN0eWxlPSdtYXJn
aW46IDBweDsnPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449305</attachid>
            <date>2022-01-16 22:09:05 -0800</date>
            <delta_ts>2022-01-17 12:18:29 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-233266-20220116220905.patch</filename>
            <type>text/plain</type>
            <size>18405</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDg1ZDExZTk3NzNjNzRm
NDQ3ZjAxMWFkZDBmMDA0NzBkNzc3MWExNS4uNmZhOTRmMTkwMTY4ODg0NWIxOTUwZGM2ZTkzMTU4
MjAxMWZmMzllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIyLTAxLTE2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEltYWdlQW5hbHlz
aXNRdWV1ZSBzaG91bGQgYW5hbHl6ZSBpbWFnZSBlbGVtZW50cyB0aGF0IGFyZSBsb2FkZWQgYWZ0
ZXIgdGhlIGNhbGwgdG8gZW5xdWV1ZUFsbEltYWdlcygpCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMyNjYKKyAgICAgICAgcmRhcjovLzg1NzMxODc1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgTWFrZSBhIGZl
dyBhZGp1c3RtZW50cyB0byBJbWFnZUFuYWx5c2lzUXVldWUsIHN1Y2ggdGhhdCBpdCBjb250aW51
ZXMgdG8gYW5hbHl6ZSBpbWFnZXMgaW4gdGhlIGRvY3VtZW50IHRoYXQgaGF2ZQorICAgICAgICBm
aW5pc2hlZCBsb2FkaW5nIGFmdGVyIHRyaWdnZXJpbmcgdGhlIGluaXRpYWwgY2FsbCB0byBgZW5x
dWV1ZUFsbEltYWdlcygpYCBpbiB0aGUgZG9jdW1lbnQuCisKKyAgICAgICAgVGVzdDogICBJbWFn
ZUFuYWx5c2lzVGVzdHMuQW5hbHl6ZUR5bmFtaWNhbGx5TG9hZGVkSW1hZ2VzCisgICAgICAgICAg
ICAgICAgSW1hZ2VBbmFseXNpc1Rlc3RzLlJlc2V0SW1hZ2VBbmFseXNpc0FmdGVyTmF2aWdhdGlv
bgorCisgICAgICAgICogcGFnZS9JbWFnZUFuYWx5c2lzUXVldWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VBbmFseXNpc1F1ZXVlOjplbnF1ZXVlSWZOZWVkZWQpOgorCisgICAgICAgIFB1
bGwgbG9naWMgZm9yIHF1ZXVlaW5nIGFuIGltYWdlIGVsZW1lbnQgZm9yIGFuYWx5c2lzIGludG8g
YSBzZXBhcmF0ZSBoZWxwZXIgbWV0aG9kOyB3ZSBvbmx5IGF0dGVtcHQgdG8gYW5hbHl6ZQorICAg
ICAgICBpbWFnZSBlbGVtZW50cyB0aGF0IGhhdmUgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBhbmQgY29u
dGFpbiBhIGBDYWNoZWRJbWFnZWAgdGhhdCBpcyBsYXJnZXIgdGhhbiBhbiBhcmJpdHJhcmlseQor
ICAgICAgICBjaG9zZW4gc2l6ZSBvZiAyMHB4IGJ5IDIwcHguCisKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQW5hbHlzaXNRdWV1ZTo6ZW5xdWV1ZUFsbEltYWdlcyk6CisKKyAgICAgICAgUmVmYWN0
b3IgdGhpcyB0byB1c2UgdGhlIG5ldyBgZW5xdWV1ZUlmTmVlZGVkYCBtZXRob2QgYWJvdmUuCisK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQW5hbHlzaXNRdWV1ZTo6cmVzdW1lUHJvY2Vzc2luZyk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUFuYWx5c2lzUXVldWU6OmNsZWFyKToKKyAgICAgICAg
KiBwYWdlL0ltYWdlQW5hbHlzaXNRdWV1ZS5oOgorCisgICAgICAgIEFkZCBhIHdlYWsgaGFzaHNl
dCBvZiBlbGVtZW50cyB0aGF0IHdlJ3ZlIGFscmVhZHkgYWRkZWQgdG8gdGhlIGltYWdlIGFuYWx5
c2lzIHF1ZXVlIGF0IHNvbWUgcG9pbnQuIFRoaXMgcHJldmVudHMKKyAgICAgICAgdXMgZnJvbSBj
b250aW51YWxseSBwZXJmb3JtaW5nIGltYWdlIGFuYWx5c2lzIG9uIHRoZSBzYW1lIGltYWdlIGlm
IGl0J3Mgb25seSBiZWluZyByZW1vdmVkIGFuZCByZWluc2VydGVkIGluIHRoZQorICAgICAgICBk
b2N1bWVudC4KKworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpkaWRDb21taXRMb2FkKToKKworICAgICAgICBBZGRpdGlvbmFsbHkgcmVzZXQgdGhlIGlt
YWdlIGFuYWx5c2lzIHF1ZXVlIHdoZW4gY29tbWl0dGluZyBwYWdlIGxvYWQsIHNvIHRoYXQgdGhl
IGltYWdlIGFuYWx5c2lzIHF1ZXVlIGRvZXNuJ3QKKyAgICAgICAgcGVyc2lzdCBhbmQgY29udGlu
dWUgYW5hbHl6aW5nIGltYWdlcyBldmVuIGFmdGVyIHJlbG9hZGluZyB0aGUgcGFnZSAob3IgbmF2
aWdhdGluZyBhd2F5KS4KKworICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZGlkRmluaXNoTG9hZGlu
Z0ltYWdlRm9yRWxlbWVudCk6CisKKyAgICAgICAgSWYgaXQgZXhpc3RzLCB0ZWxsIHRoZSBwYWdl
J3MgaW1hZ2UgYW5hbHlzaXMgcXVldWUgdG8gYWRkIHRoZSBuZXdseSBsb2FkZWQgaW1hZ2UuCisK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlc2V0SW1hZ2VBbmFseXNpc1F1ZXVlKToKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuaDoKKwogMjAyMi0wMS0xNiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIFVzZSBjaGFyYWN0ZXIgbmFtZXMgaW5z
dGVhZCBvZiBjb2RlcG9pbnQgdmFsdWVzIGluIG92ZXJyaWRlQ29udHJvbENoYXJhY3RlcnMoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbWFnZUFuYWx5c2lzUXVldWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9JbWFnZUFuYWx5c2lzUXVldWUuY3BwCmluZGV4IDg2OGNjYzdm
MjkzOTFmNzBmMmRmN2Y1MGQwYTEyMmYwZGYxZGVjZDAuLjU1MTQ0Y2U2NDdlNWM5NzE0NjdiNjI4
NGNhMGJjN2MyOWRlYWFiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW1hZ2VB
bmFseXNpc1F1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ltYWdlQW5hbHlzaXNR
dWV1ZS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRl
ICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgotI2luY2x1ZGUg
IkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUg
IkltYWdlT3ZlcmxheS5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiVGlt
ZXIuaCIKQEAgLTUxLDMzICs1MSwzOCBAQCBJbWFnZUFuYWx5c2lzUXVldWU6OkltYWdlQW5hbHlz
aXNRdWV1ZShQYWdlJiBwYWdlKQogCiBJbWFnZUFuYWx5c2lzUXVldWU6On5JbWFnZUFuYWx5c2lz
UXVldWUoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgSW1hZ2VBbmFseXNpc1F1ZXVlOjplbnF1ZXVlQWxs
SW1hZ2VzKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQordm9p
ZCBJbWFnZUFuYWx5c2lzUXVldWU6OmVucXVldWVJZk5lZWRlZChIVE1MSW1hZ2VFbGVtZW50JiBl
bGVtZW50KQogewotICAgIGlmICghbV9wYWdlKQorICAgIGlmICghaXM8UmVuZGVySW1hZ2U+KGVs
ZW1lbnQucmVuZGVyZXIoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FICgyMzMy
NjYpOiBBbmFseXplIGltYWdlIGVsZW1lbnRzIHRoYXQgYXJlIGxvYWRlZCBhZnRlciB3ZSd2ZSBl
bnF1ZXVlZCBhbGwgaW1hZ2VzIGluIHRoZSBkb2N1bWVudC4KLSAgICBhdXRvIGltYWdlSXRlcmF0
b3IgPSBkb2N1bWVudC5pbWFnZXMoKS0+Y3JlYXRlSXRlcmF0b3IoKTsKLSAgICBmb3IgKFJlZlB0
ciBub2RlID0gaW1hZ2VJdGVyYXRvci5uZXh0KCk7IG5vZGU7IG5vZGUgPSBpbWFnZUl0ZXJhdG9y
Lm5leHQoKSkgewotICAgICAgICBpZiAoIWlzPEhUTUxFbGVtZW50Pigqbm9kZSkpCi0gICAgICAg
ICAgICBjb250aW51ZTsKKyAgICBhdXRvJiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlckltYWdl
PigqZWxlbWVudC5yZW5kZXJlcigpKTsKKyAgICBhdXRvKiBjYWNoZWRJbWFnZSA9IHJlbmRlcmVy
LmNhY2hlZEltYWdlKCk7CisgICAgaWYgKCFjYWNoZWRJbWFnZSB8fCBjYWNoZWRJbWFnZS0+ZXJy
b3JPY2N1cnJlZCgpKQorICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byYgZWxlbWVudCA9
IGRvd25jYXN0PEhUTUxFbGVtZW50Pigqbm9kZSk7Ci0gICAgICAgIGlmICghaXM8UmVuZGVySW1h
Z2U+KGVsZW1lbnQucmVuZGVyZXIoKSkpCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICBpZiAo
cmVuZGVyZXIuc2l6ZSgpLndpZHRoKCkgPCBtaW5pbXVtV2lkdGhGb3JBbmFseXNpcyB8fCByZW5k
ZXJlci5zaXplKCkuaGVpZ2h0KCkgPCBtaW5pbXVtSGVpZ2h0Rm9yQW5hbHlzaXMpCisgICAgICAg
IHJldHVybjsKIAotICAgICAgICBhdXRvJiByZW5kZXJJbWFnZSA9IGRvd25jYXN0PFJlbmRlcklt
YWdlPigqZWxlbWVudC5yZW5kZXJlcigpKTsKLSAgICAgICAgYXV0byogY2FjaGVkSW1hZ2UgPSBy
ZW5kZXJJbWFnZS5jYWNoZWRJbWFnZSgpOwotICAgICAgICBpZiAoIWNhY2hlZEltYWdlIHx8IGNh
Y2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICBp
ZiAoIW1fcXVldWVkRWxlbWVudHMuYWRkKGVsZW1lbnQpLmlzTmV3RW50cnkpCisgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBpZiAocmVuZGVySW1hZ2Uuc2l6ZSgpLndpZHRoKCkgPCBtaW5pbXVt
V2lkdGhGb3JBbmFseXNpcyB8fCByZW5kZXJJbWFnZS5zaXplKCkuaGVpZ2h0KCkgPCBtaW5pbXVt
SGVpZ2h0Rm9yQW5hbHlzaXMpCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICBtX3F1ZXVlLmFw
cGVuZCh7IGVsZW1lbnQgfSk7CisgICAgcmVzdW1lUHJvY2Vzc2luZygpOworfQorCit2b2lkIElt
YWdlQW5hbHlzaXNRdWV1ZTo6ZW5xdWV1ZUFsbEltYWdlcyhEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIG1fcXVldWUuYXBwZW5kKHsgV2Vha1B0ciB7IGVsZW1lbnQgfSwgaWRl
bnRpZmllciB9KTsKKyAgICBpZiAobV9pZGVudGlmaWVyICE9IGlkZW50aWZpZXIpIHsKKyAgICAg
ICAgY2xlYXIoKTsKKyAgICAgICAgbV9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKICAgICB9CiAK
LSAgICByZXN1bWVQcm9jZXNzaW5nKCk7CisgICAgZm9yIChhdXRvJiBpbWFnZSA6IGRlc2NlbmRh
bnRzT2ZUeXBlPEhUTUxJbWFnZUVsZW1lbnQ+KGRvY3VtZW50KSkKKyAgICAgICAgZW5xdWV1ZUlm
TmVlZGVkKGltYWdlKTsKIH0KIAogdm9pZCBJbWFnZUFuYWx5c2lzUXVldWU6OnJlc3VtZVByb2Nl
c3NpbmcoKQpAQCAtODYsMTQgKzkxLDE0IEBAIHZvaWQgSW1hZ2VBbmFseXNpc1F1ZXVlOjpyZXN1
bWVQcm9jZXNzaW5nKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgd2hpbGUgKCFtX3F1ZXVlLmlz
RW1wdHkoKSAmJiBtX3BlbmRpbmdSZXF1ZXN0Q291bnQgPCBtYXhpbXVtUGVuZGluZ0ltYWdlQW5h
bHlzaXNDb3VudCkgewotICAgICAgICBhdXRvIFt3ZWFrRWxlbWVudCwgaWRlbnRpZmllcl0gPSBt
X3F1ZXVlLnRha2VGaXJzdCgpOworICAgICAgICBhdXRvIHdlYWtFbGVtZW50ID0gbV9xdWV1ZS50
YWtlRmlyc3QoKTsKICAgICAgICAgUmVmUHRyIGVsZW1lbnQgPSB3ZWFrRWxlbWVudC5nZXQoKTsK
ICAgICAgICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LT5pc0Nvbm5lY3RlZCgpKQogICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgbV9wZW5kaW5nUmVxdWVzdENvdW50Kys7CiAgICAg
ICAgIG1fcGFnZS0+cmVzZXRUZXh0UmVjb2duaXRpb25SZXN1bHQoKmVsZW1lbnQpOwotICAgICAg
ICBtX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnJlcXVlc3RUZXh0UmVjb2duaXRpb24oKmVsZW1l
bnQsIGlkZW50aWZpZXIsIFt0aGlzLCBwYWdlID0gbV9wYWdlXSAoYXV0byYmKSB7CisgICAgICAg
IG1fcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkucmVxdWVzdFRleHRSZWNvZ25pdGlvbigqZWxlbWVu
dCwgbV9pZGVudGlmaWVyLCBbdGhpcywgcGFnZSA9IG1fcGFnZV0gKGF1dG8mJikgewogICAgICAg
ICAgICAgaWYgKCFwYWdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTEyLDYgKzEx
Nyw4IEBAIHZvaWQgSW1hZ2VBbmFseXNpc1F1ZXVlOjpjbGVhcigpCiAgICAgbV9wZW5kaW5nUmVx
dWVzdENvdW50ID0gMDsKICAgICBtX3Jlc3VtZVByb2Nlc3NpbmdUaW1lci5zdG9wKCk7CiAgICAg
bV9xdWV1ZS5jbGVhcigpOworICAgIG1fcXVldWVkRWxlbWVudHMuY2xlYXIoKTsKKyAgICBtX2lk
ZW50aWZpZXIgPSB7IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW1hZ2VBbmFseXNpc1F1ZXVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ltYWdlQW5hbHlzaXNRdWV1ZS5oCmluZGV4IGZhOTQ0OGFmZjQ0Y2M5MjYwOTVjMGVi
ZjlkNWE0MTJhMTlmY2I4NWUuLjA2YzczMzhjYzY1MmI4ODlmNGU2YWUzMDhhNTQ0YzkzYzQ4ZWM4
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW1hZ2VBbmFseXNpc1F1ZXVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbWFnZUFuYWx5c2lzUXVldWUuaApAQCAtMjksMTIg
KzI5LDEzIEBACiAKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBI
VE1MRWxlbWVudDsKK2NsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFzcyBQYWdlOwogY2xhc3Mg
VGltZXI7CiAKQEAgLTQ1LDE5ICs0NiwxOCBAQCBwdWJsaWM6CiAgICAgfkltYWdlQW5hbHlzaXNR
dWV1ZSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbnF1ZXVlQWxsSW1hZ2VzKERvY3Vt
ZW50JiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGNsZWFyKCk7CisgICAgdm9pZCBjbGVhcigpOworCisgICAgdm9pZCBlbnF1ZXVlSWZOZWVkZWQo
SFRNTEltYWdlRWxlbWVudCYpOwogCiBwcml2YXRlOgogICAgIHZvaWQgcmVzdW1lUHJvY2Vzc2lu
ZygpOwogCi0gICAgc3RydWN0IFRhc2sgewotICAgICAgICBXZWFrUHRyPEhUTUxFbGVtZW50PiBl
bGVtZW50OwotICAgICAgICBTdHJpbmcgaWRlbnRpZmllcjsKLSAgICB9OwotCisgICAgU3RyaW5n
IG1faWRlbnRpZmllcjsKICAgICBXZWFrUHRyPFBhZ2U+IG1fcGFnZTsKICAgICBUaW1lciBtX3Jl
c3VtZVByb2Nlc3NpbmdUaW1lcjsKLSAgICBEZXF1ZTxUYXNrPiBtX3F1ZXVlOworICAgIFdlYWtI
YXNoU2V0PEhUTUxJbWFnZUVsZW1lbnQ+IG1fcXVldWVkRWxlbWVudHM7CisgICAgRGVxdWU8V2Vh
a1B0cjxIVE1MSW1hZ2VFbGVtZW50Pj4gbV9xdWV1ZTsKICAgICB1bnNpZ25lZCBtX3BlbmRpbmdS
ZXF1ZXN0Q291bnQgeyAwIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBiNTM5MmRjMzc5
YzEzYWEzYzY3ZTM1YjJjYTY2YzU4NmJiOWJiMDdhLi43YjIzYjIzN2VjZjRlOTIwZGU2NTZmMDZh
NTliZmYzNTMxOGRmMTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTEzMTQsNiArMTMxNCw3IEBA
IHZvaWQgUGFnZTo6ZGlkQ29tbWl0TG9hZCgpCiAKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMp
CiAgICAgcmVzZXRUZXh0UmVjb2duaXRpb25SZXN1bHRzKCk7CisgICAgcmVzZXRJbWFnZUFuYWx5
c2lzUXVldWUoKTsKICNlbmRpZgogfQogCkBAIC0zNjE1LDggKzM2MTYsMTcgQEAgdm9pZCBQYWdl
OjpkaWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1l
bnQpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgZnJhbWUtPmVkaXRvcigpLnJldmVh
bFNlbGVjdGlvbklmTmVlZGVkQWZ0ZXJMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KGVsZW1lbnQpOwot
ICAgICAgICBpZiAoYXV0byogcGFnZSA9IGZyYW1lLT5wYWdlKCk7IGVsZW1lbnQtPmRvY3VtZW50
KCkuZnJhbWUoKSA9PSBmcmFtZSkKKworICAgICAgICBpZiAoZWxlbWVudC0+ZG9jdW1lbnQoKS5m
cmFtZSgpICE9IGZyYW1lKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChhdXRv
KiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkgeworI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKKyAg
ICAgICAgICAgIGlmIChhdXRvKiBxdWV1ZSA9IHBhZ2UtPmltYWdlQW5hbHlzaXNRdWV1ZUlmRXhp
c3RzKCkpCisgICAgICAgICAgICAgICAgcXVldWUtPmVucXVldWVJZk5lZWRlZChlbGVtZW50KTsK
KyNlbmRpZgogICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuZGlkRmluaXNoTG9h
ZGluZ0ltYWdlRm9yRWxlbWVudChlbGVtZW50KTsKKyAgICAgICAgfQogICAgIH0pOwogfQogCkBA
IC0zNzU2LDYgKzM3NjYsMTIgQEAgSW1hZ2VBbmFseXNpc1F1ZXVlJiBQYWdlOjppbWFnZUFuYWx5
c2lzUXVldWUoKQogICAgIHJldHVybiAqbV9pbWFnZUFuYWx5c2lzUXVldWU7CiB9CiAKK3ZvaWQg
UGFnZTo6cmVzZXRJbWFnZUFuYWx5c2lzUXVldWUoKQoreworICAgIGlmIChhdXRvIHByZXZpb3Vz
UXVldWUgPSBzdGQ6OmV4Y2hhbmdlKG1faW1hZ2VBbmFseXNpc1F1ZXVlLCB7IH0pKQorICAgICAg
ICBwcmV2aW91c1F1ZXVlLT5jbGVhcigpOworfQorCiB2b2lkIFBhZ2U6OnVwZGF0ZUVsZW1lbnRz
V2l0aFRleHRSZWNvZ25pdGlvblJlc3VsdHMoKQogewogICAgIGlmIChtX3RleHRSZWNvZ25pdGlv
blJlc3VsdHMuaXNFbXB0eUlnbm9yaW5nTnVsbFJlZmVyZW5jZXMoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5k
ZXggNzY0M2ZhNzQwMDQ1ODJkMGVkZDZjNzVkMWJkM2Q3YjVjM2FmMDRkZS4uNTg0NDNkZTE0OTI2
N2QxZTIzNzRhZDBiZDlmOWFhMjQzZmQzN2U0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTkxNSw2ICs5
MTUsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNDYWNoZWRUZXh0UmVj
b2duaXRpb25SZXN1bHQoY29uc3QgSFRNTEVsZW1lbnQmKSBjb25zdDsKICAgICB2b2lkIGNhY2hl
VGV4dFJlY29nbml0aW9uUmVzdWx0KGNvbnN0IEhUTUxFbGVtZW50JiwgY29uc3QgSW50UmVjdCYg
Y29udGFpbmVyUmVjdCwgY29uc3QgVGV4dFJlY29nbml0aW9uUmVzdWx0Jik7CiAgICAgdm9pZCBy
ZXNldFRleHRSZWNvZ25pdGlvblJlc3VsdChjb25zdCBIVE1MRWxlbWVudCYpOworICAgIHZvaWQg
cmVzZXRJbWFnZUFuYWx5c2lzUXVldWUoKTsKICNlbmRpZgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
UGVybWlzc2lvbkNvbnRyb2xsZXImIHBlcm1pc3Npb25Db250cm9sbGVyKCk7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGUxZmZkNzkxOGNmYTY3
OTU0MDVhNTZiMzE4N2VmM2U3OWQ5Y2Q4YS4uY2U5ZTM0Y2M2OGVlOWZiNGY1NGI5NTU3ZDZjNzFj
NTY3YTFkNzEyMyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIyLTAxLTE2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEltYWdlQW5hbHlzaXNRdWV1ZSBzaG91bGQgYW5h
bHl6ZSBpbWFnZSBlbGVtZW50cyB0aGF0IGFyZSBsb2FkZWQgYWZ0ZXIgdGhlIGNhbGwgdG8gZW5x
dWV1ZUFsbEltYWdlcygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMyNjYKKyAgICAgICAgcmRhcjovLzg1NzMxODc1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIG5ldyBBUEkgdGVzdHMgdG8gY2hlY2sg
dGhhdCBpbWFnZSBlbGVtZW50cyB0aGF0IGFyZSBjcmVhdGVkIGFuZCBpbnNlcnRlZCBhZnRlciBr
aWNraW5nIG9mZiB0aGUgaW1hZ2UKKyAgICAgICAgYW5hbHlzaXMgcXVldWUgYXJlIHN1Y2Nlc3Nm
dWxseSBhZGRlZCB0byB0aGUgcXVldWUsIGFuZCByZXN1bHQgaW4gcGxhdGZvcm0gaW1hZ2UgYW5h
bHlzaXMgcmVxdWVzdHMsIGFuZCB0byBhbHNvCisgICAgICAgIHZlcmlmeSB0aGF0IHRoZSBpbWFn
ZSBhbmFseXNpcyBxdWV1ZSBpcyByZXNldCBhZnRlciBuYXZpZ2F0aW9uLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbWFnZUFuYWx5c2lzVGVzdHMubW06Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpwcm9jZXNzUmVxdWVzdFdpdGhSZXN1bHRzKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6Om1ha2VJbWFnZUFuYWx5c2lzUmVxdWVzdFN3aXp6bGVyKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OnByb2Nlc3NSZXF1ZXN0V2l0aEVycm9yKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c3dpenpsZWRQ
cm9jZXNzUmVxdWVzdFdpdGhSZXN1bHRzKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OnN3aXp6bGVkUHJvY2Vzc1JlcXVlc3RXaXRoRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbXVsdGlwbGUtaW1hZ2VzLmh0bWw6CisK
IDIwMjItMDEtMTUgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIENT
UyBHcmFkaWVudHM6IGludGVycG9sYXRpb24gbW9kZSBzaG91bGQgZGVmYXVsdCB0byBPS0xhYiBp
ZiBhbnkgbm9uLWxlZ2FjeSBjb2xvciBzeW50YXggY29sb3JzIGFyZSB1c2VkIGluIHRoZSBzdG9w
cwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbWFn
ZUFuYWx5c2lzVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0ltYWdlQW5hbHlzaXNUZXN0cy5tbQppbmRleCBlODA3ODBmZGZkYzhkMmQyZDlmNTU3NTlhMWI3
NTlhMTQxM2U1MTJjLi45YzM1Njc5ZWVlNDEwMzhkYzg0ODAzMGM4Y2VmMjFmNDk5YjI5MmRkIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ltYWdlQW5h
bHlzaXNUZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0ltYWdlQW5hbHlzaXNUZXN0cy5tbQpAQCAtMTA0LDE1ICsxMDQsMjEgQEAgc3RhdGljIFJldGFp
blB0cjxUZXN0V0tXZWJWaWV3PiBjcmVhdGVXZWJWaWV3V2l0aFRleHRSZWNvZ25pdGlvbkVuaGFu
Y2VtZW50cygpCiAgICAgcmV0dXJuIGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOwogfQogCi1zdGF0aWMgdm9pZCBzd2l6emxlZFByb2Nlc3NSZXF1ZXN0
V2l0aFJlc3VsdHMoaWQsIFNFTCwgVktJbWFnZUFuYWx5emVyUmVxdWVzdCAqLCB2b2lkICheKShk
b3VibGUgcHJvZ3Jlc3MpLCB2b2lkICheY29tcGxldGlvbikoVktJbWFnZUFuYWx5c2lzICosIE5T
RXJyb3IgKikpCitzdGF0aWMgdm9pZCBwcm9jZXNzUmVxdWVzdFdpdGhSZXN1bHRzKGlkLCBTRUws
IFZLSW1hZ2VBbmFseXplclJlcXVlc3QgKiwgdm9pZCAoXikoZG91YmxlIHByb2dyZXNzKSwgdm9p
ZCAoXmNvbXBsZXRpb24pKFZLSW1hZ2VBbmFseXNpcyAqLCBOU0Vycm9yICopKQogewogICAgIGdE
aWRQcm9jZXNzUmVxdWVzdENvdW50Kys7CiAgICAgY29tcGxldGlvbihjcmVhdGVJbWFnZUFuYWx5
c2lzV2l0aFNpbXBsZUZpeGVkUmVzdWx0cygpLmdldCgpLCBuaWwpOwogfQogCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgRnVuY3Rpb25UeXBlPgorSW5zdGFuY2VNZXRob2RTd2l6emxlciBtYWtlSW1hZ2VB
bmFseXNpc1JlcXVlc3RTd2l6emxlcihGdW5jdGlvblR5cGUgZnVuY3Rpb24pCit7CisgICAgcmV0
dXJuIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgeyBQQUw6OmdldFZLSW1hZ2VBbmFseXplckNsYXNz
KCksIEBzZWxlY3Rvcihwcm9jZXNzUmVxdWVzdDpwcm9ncmVzc0hhbmRsZXI6Y29tcGxldGlvbkhh
bmRsZXI6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KGZ1bmN0aW9uKSB9OworfQorCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAotc3RhdGljIHZvaWQgc3dpenpsZWRQcm9jZXNzUmVxdWVzdFdp
dGhFcnJvcihpZCwgU0VMLCBWS0ltYWdlQW5hbHl6ZXJSZXF1ZXN0ICosIHZvaWQgKF4pKGRvdWJs
ZSBwcm9ncmVzcyksIHZvaWQgKF5jb21wbGV0aW9uKShWS0ltYWdlQW5hbHlzaXMgKmFuYWx5c2lz
LCBOU0Vycm9yICplcnJvcikpCitzdGF0aWMgdm9pZCBwcm9jZXNzUmVxdWVzdFdpdGhFcnJvcihp
ZCwgU0VMLCBWS0ltYWdlQW5hbHl6ZXJSZXF1ZXN0ICosIHZvaWQgKF4pKGRvdWJsZSBwcm9ncmVz
cyksIHZvaWQgKF5jb21wbGV0aW9uKShWS0ltYWdlQW5hbHlzaXMgKmFuYWx5c2lzLCBOU0Vycm9y
ICplcnJvcikpCiB7CiAgICAgZ0RpZFByb2Nlc3NSZXF1ZXN0Q291bnQrKzsKICAgICBjb21wbGV0
aW9uKG5pbCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOk5TQ29jb2FFcnJvckRvbWFpbiBjb2Rl
OjEgdXNlckluZm86bmlsXSk7CkBAIC0xMjAsNyArMTI2LDcgQEAgc3RhdGljIHZvaWQgc3dpenps
ZWRQcm9jZXNzUmVxdWVzdFdpdGhFcnJvcihpZCwgU0VMLCBWS0ltYWdlQW5hbHl6ZXJSZXF1ZXN0
ICosIHYKIAogVEVTVChJbWFnZUFuYWx5c2lzVGVzdHMsIERvTm90QW5hbHl6ZUltYWdlc0luRWRp
dGFibGVDb250ZW50KQogewotICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgaW1hZ2VBbmFseXNp
c1JlcXVlc3RTd2l6emxlciB7IFBBTDo6Z2V0VktJbWFnZUFuYWx5emVyQ2xhc3MoKSwgQHNlbGVj
dG9yKHByb2Nlc3NSZXF1ZXN0OnByb2dyZXNzSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcjopLCBy
ZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRQcm9jZXNzUmVxdWVzdFdpdGhFcnJvcikgfTsK
KyAgICBhdXRvIHJlcXVlc3RTd2l6emxlciA9IG1ha2VJbWFnZUFuYWx5c2lzUmVxdWVzdFN3aXp6
bGVyKHByb2Nlc3NSZXF1ZXN0V2l0aEVycm9yKTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwg
NDAwLCA0MDApXSk7CiAgICAgW3dlYlZpZXcgX3NldEVkaXRhYmxlOllFU107CkBAIC0xMzAsNyAr
MTM2LDcgQEAgVEVTVChJbWFnZUFuYWx5c2lzVGVzdHMsIERvTm90QW5hbHl6ZUltYWdlc0luRWRp
dGFibGVDb250ZW50KQogCiBURVNUKEltYWdlQW5hbHlzaXNUZXN0cywgSGFuZGxlSW1hZ2VBbmFs
eXplckVycm9ycykKIHsKLSAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIGltYWdlQW5hbHlzaXNS
ZXF1ZXN0U3dpenpsZXIgeyBQQUw6OmdldFZLSW1hZ2VBbmFseXplckNsYXNzKCksIEBzZWxlY3Rv
cihwcm9jZXNzUmVxdWVzdDpwcm9ncmVzc0hhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXI6KSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KHN3aXp6bGVkUHJvY2Vzc1JlcXVlc3RXaXRoRXJyb3IpIH07Cisg
ICAgYXV0byByZXF1ZXN0U3dpenpsZXIgPSBtYWtlSW1hZ2VBbmFseXNpc1JlcXVlc3RTd2l6emxl
cihwcm9jZXNzUmVxdWVzdFdpdGhFcnJvcik7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDQw
MCwgNDAwKV0pOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpA
ImltYWdlIl07CkBAIC0xNDAsNyArMTQ2LDcgQEAgVEVTVChJbWFnZUFuYWx5c2lzVGVzdHMsIEhh
bmRsZUltYWdlQW5hbHl6ZXJFcnJvcnMpCiAKIFRFU1QoSW1hZ2VBbmFseXNpc1Rlc3RzLCBEb05v
dENyYXNoV2hlbkhpdFRlc3RpbmdPdXRzaWRlT2ZXZWJWaWV3KQogewotICAgIEluc3RhbmNlTWV0
aG9kU3dpenpsZXIgaW1hZ2VBbmFseXNpc1JlcXVlc3RTd2l6emxlciB7IFBBTDo6Z2V0VktJbWFn
ZUFuYWx5emVyQ2xhc3MoKSwgQHNlbGVjdG9yKHByb2Nlc3NSZXF1ZXN0OnByb2dyZXNzSGFuZGxl
cjpjb21wbGV0aW9uSGFuZGxlcjopLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRQcm9j
ZXNzUmVxdWVzdFdpdGhFcnJvcikgfTsKKyAgICBhdXRvIHJlcXVlc3RTd2l6emxlciA9IG1ha2VJ
bWFnZUFuYWx5c2lzUmVxdWVzdFN3aXp6bGVyKHByb2Nlc3NSZXF1ZXN0V2l0aEVycm9yKTsKIAog
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgNDAwLCA0MDApXSk7CiAgICAgW3dlYlZpZXcgc3luY2hy
b25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiaW1hZ2UiXTsKQEAgLTE1MSw3ICsxNTcsNyBAQCBU
RVNUKEltYWdlQW5hbHlzaXNUZXN0cywgRG9Ob3RDcmFzaFdoZW5IaXRUZXN0aW5nT3V0c2lkZU9m
V2ViVmlldykKIAogVEVTVChJbWFnZUFuYWx5c2lzVGVzdHMsIEF2b2lkUmVkdW5kYW50VGV4dFJl
Y29nbml0aW9uUmVxdWVzdHMpCiB7Ci0gICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBpbWFnZUFu
YWx5c2lzUmVxdWVzdFN3aXp6bGVyIHsgUEFMOjpnZXRWS0ltYWdlQW5hbHl6ZXJDbGFzcygpLCBA
c2VsZWN0b3IocHJvY2Vzc1JlcXVlc3Q6cHJvZ3Jlc3NIYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVy
OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihzd2l6emxlZFByb2Nlc3NSZXF1ZXN0V2l0aFJlc3Vs
dHMpIH07CisgICAgYXV0byByZXF1ZXN0U3dpenpsZXIgPSBtYWtlSW1hZ2VBbmFseXNpc1JlcXVl
c3RTd2l6emxlcihwcm9jZXNzUmVxdWVzdFdpdGhSZXN1bHRzKTsKIAogICAgIGF1dG8gd2ViVmll
dyA9IGNyZWF0ZVdlYlZpZXdXaXRoVGV4dFJlY29nbml0aW9uRW5oYW5jZW1lbnRzKCk7CiAgICAg
W3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiaW1hZ2UiXTsKQEAgLTE2
Niw3ICsxNzIsNyBAQCBURVNUKEltYWdlQW5hbHlzaXNUZXN0cywgQXZvaWRSZWR1bmRhbnRUZXh0
UmVjb2duaXRpb25SZXF1ZXN0cykKIAogVEVTVChJbWFnZUFuYWx5c2lzVGVzdHMsIFN0YXJ0SW1h
Z2VBbmFseXNpc1dpdGhvdXRJZGVudGlmaWVyKQogewotICAgIEluc3RhbmNlTWV0aG9kU3dpenps
ZXIgaW1hZ2VBbmFseXNpc1JlcXVlc3RTd2l6emxlciB7IFBBTDo6Z2V0VktJbWFnZUFuYWx5emVy
Q2xhc3MoKSwgQHNlbGVjdG9yKHByb2Nlc3NSZXF1ZXN0OnByb2dyZXNzSGFuZGxlcjpjb21wbGV0
aW9uSGFuZGxlcjopLCByZWludGVycHJldF9jYXN0PElNUD4oc3dpenpsZWRQcm9jZXNzUmVxdWVz
dFdpdGhSZXN1bHRzKSB9OworICAgIGF1dG8gcmVxdWVzdFN3aXp6bGVyID0gbWFrZUltYWdlQW5h
bHlzaXNSZXF1ZXN0U3dpenpsZXIocHJvY2Vzc1JlcXVlc3RXaXRoUmVzdWx0cyk7CiAKICAgICBh
dXRvIHdlYlZpZXcgPSBjcmVhdGVXZWJWaWV3V2l0aFRleHRSZWNvZ25pdGlvbkVuaGFuY2VtZW50
cygpOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAIm11bHRp
cGxlLWltYWdlcyJdOwpAQCAtMTc5LDYgKzE4NSw0NSBAQCBURVNUKEltYWdlQW5hbHlzaXNUZXN0
cywgU3RhcnRJbWFnZUFuYWx5c2lzV2l0aG91dElkZW50aWZpZXIpCiAgICAgICAgIEVYUEVDVF9X
S19TVFJFUShvdmVybGF5VGV4dCwgQCJGb28gYmFyIik7CiB9CiAKK1RFU1QoSW1hZ2VBbmFseXNp
c1Rlc3RzLCBBbmFseXplRHluYW1pY2FsbHlMb2FkZWRJbWFnZXMpCit7CisgICAgYXV0byByZXF1
ZXN0U3dpenpsZXIgPSBtYWtlSW1hZ2VBbmFseXNpc1JlcXVlc3RTd2l6emxlcihwcm9jZXNzUmVx
dWVzdFdpdGhSZXN1bHRzKTsKKworICAgIGF1dG8gd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdXaXRo
VGV4dFJlY29nbml0aW9uRW5oYW5jZW1lbnRzKCk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNs
eUxvYWRUZXN0UGFnZU5hbWVkOkAibXVsdGlwbGUtaW1hZ2VzIl07CisgICAgW3dlYlZpZXcgX3N0
YXJ0SW1hZ2VBbmFseXNpczpuaWxdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JJbWFnZUFuYWx5c2lz
UmVxdWVzdHM6NV07CisKKyAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiYXBwZW5kSW1hZ2UoJ2FwcGxlLmdpZicpIl07CisgICAgW3dlYlZpZXcgd2FpdEZvckltYWdl
QW5hbHlzaXNSZXF1ZXN0czo2XTsKKworICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJhcHBlbmRJbWFnZSgnaWNvbi5wbmcnKSJdOworICAgIFt3ZWJWaWV3IHdhaXRG
b3JJbWFnZUFuYWx5c2lzUmVxdWVzdHM6N107CisKKyAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiaGlkZUFsbEltYWdlcygpIl07CisgICAgW3dlYlZpZXcgd2FpdEZv
ck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJzaG93QWxsSW1hZ2VzKCkiXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4
dFByZXNlbnRhdGlvblVwZGF0ZV07CisgICAgRVhQRUNUX0VRKGdEaWRQcm9jZXNzUmVxdWVzdENv
dW50LCA3VSk7Cit9CisKK1RFU1QoSW1hZ2VBbmFseXNpc1Rlc3RzLCBSZXNldEltYWdlQW5hbHlz
aXNBZnRlck5hdmlnYXRpb24pCit7CisgICAgYXV0byByZXF1ZXN0U3dpenpsZXIgPSBtYWtlSW1h
Z2VBbmFseXNpc1JlcXVlc3RTd2l6emxlcihwcm9jZXNzUmVxdWVzdFdpdGhSZXN1bHRzKTsKKwor
ICAgIGF1dG8gd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdXaXRoVGV4dFJlY29nbml0aW9uRW5oYW5j
ZW1lbnRzKCk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAi
bXVsdGlwbGUtaW1hZ2VzIl07CisgICAgW3dlYlZpZXcgX3N0YXJ0SW1hZ2VBbmFseXNpczpuaWxd
OworICAgIFt3ZWJWaWV3IHdhaXRGb3JJbWFnZUFuYWx5c2lzUmVxdWVzdHM6NV07CisKKyAgICBb
d2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiXTsKKyAgICBb
d2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJtdWx0aXBsZS1pbWFnZXMiXTsKKyAgICBb
d2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisgICAgRVhQRUNUX0VRKGdE
aWRQcm9jZXNzUmVxdWVzdENvdW50LCA1VSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkKIAogI2VuZGlmIC8vIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbXVsdGlwbGUtaW1hZ2VzLmh0bWwg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL211bHRpcGxlLWltYWdlcy5o
dG1sCmluZGV4IDhlZDQ3OWQ4M2IwMmQ4NjZlMGY3ZDFjMDZiZjgxNzkzYzFmZGM1MzIuLmFkNDkz
ZjE4Y2Q1N2NkYTI1OTUwZGU0NTI3MDU0YzJhNGQ5MTg3ODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvbXVsdGlwbGUtaW1hZ2VzLmh0bWwKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9tdWx0aXBsZS1pbWFnZXMuaHRt
bApAQCAtMTksNiArMTksMjMgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gYXBw
ZW5kSW1hZ2UoaW1hZ2VTb3VyY2UpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29u
c3QgaW1hZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICAgICAgICAgICAg
ICBpbWFnZS5zcmMgPSBpbWFnZVNvdXJjZTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGltYWdlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rp
b24gaGlkZUFsbEltYWdlcygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQXJyYXku
ZnJvbShkb2N1bWVudC5pbWFnZXMpLmZvckVhY2goaW1hZ2UgPT4gaW1hZ2Uuc3R5bGUuc2V0UHJv
cGVydHkoImRpc3BsYXkiLCAibm9uZSIpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ZnVuY3Rpb24gc2hvd0FsbEltYWdlcygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
QXJyYXkuZnJvbShkb2N1bWVudC5pbWFnZXMpLmZvckVhY2goaW1hZ2UgPT4gaW1hZ2Uuc3R5bGUu
cmVtb3ZlUHJvcGVydHkoImRpc3BsYXkiKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIDwvc2Ny
aXB0PgogICAgIDwvaGVhZD4KICAgICA8Ym9keSBzdHlsZT0nbWFyZ2luOiAwcHg7Jz4K
</data>

          </attachment>
      

    </bug>

</bugzilla>