<?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>229059</bug_id>
          
          <creation_ts>2021-08-12 17:05:20 -0700</creation_ts>
          <short_desc>[Web App Manifest] Always fetch the first manifest if provided</short_desc>
          <delta_ts>2021-09-03 14:49:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>david_quesada</cc>
    
    <cc>eoconnor</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>japhet</cc>
    
    <cc>jensimmons</cc>
    
    <cc>marcos</cc>
    
    <cc>mkwst</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1783991</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-08-12 17:05:20 -0700</bug_when>
    <thetext>Right now, WebKit only fetches the web app manifest when `-[WKWebView _getApplicationManifestWithCompletionHandler:]` is called.  We should always fetch it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783997</commentid>
    <comment_count>1</comment_count>
      <attachid>435457</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-08-12 17:20:32 -0700</bug_when>
    <thetext>Created attachment 435457
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784003</commentid>
    <comment_count>2</comment_count>
      <attachid>435459</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-08-12 17:51:23 -0700</bug_when>
    <thetext>Created attachment 435459
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784668</commentid>
    <comment_count>3</comment_count>
      <attachid>435634</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-08-16 15:39:54 -0700</bug_when>
    <thetext>Created attachment 435634
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785631</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-19 17:06:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/82148333&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789753</commentid>
    <comment_count>5</comment_count>
      <attachid>435634</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-09-02 09:53:17 -0700</bug_when>
    <thetext>Comment on attachment 435634
Patch

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

&gt; Source/WebCore/ChangeLog:4
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=229059

&lt;rdar://82148333&gt;

&gt; Source/WebCore/html/HTMLLinkElement.cpp:514
&gt; +    auto media = MediaQuerySet::create(m_media, MediaQueryParserContext(document()));

Why did you remove the LOG statement?

&gt; Source/WebCore/loader/DocumentLoader.cpp:1566
&gt; +        if (link.href().isEmpty() || !link.href().isValid())

HTMLLinkElement::href() looks kind of expensive. Would be good to only build it once rather than three times.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789943</commentid>
    <comment_count>6</comment_count>
      <attachid>437205</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-09-02 15:49:55 -0700</bug_when>
    <thetext>Created attachment 437205
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790385</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-03 14:49:02 -0700</bug_when>
    <thetext>Committed r282026 (241330@main): &lt;https://commits.webkit.org/241330@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 437205.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435457</attachid>
            <date>2021-08-12 17:20:32 -0700</date>
            <delta_ts>2021-08-12 17:51:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229059-20210812172031.patch</filename>
            <type>text/plain</type>
            <size>22178</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4NTA4NTQzNjFmZmQwYjBhZGI5OWNkYTg2NzVkN2IwMjNkNjAyMTc1Li4y
MDU0ZjEzYzc5Yzg5MzZlMmZkNjljNjRjZjMzNTlhNjg4YmFhYTVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzQgQEAKKzIwMjEtMDgtMTIgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFtXZWIgQXBwIE1hbmlmZXN0XSBBbHdheXMgZmV0Y2ggdGhlIGZpcnN0IG1h
bmlmZXN0IGlmIHByb3ZpZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjkwNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaCwgV2ViS2l0IG9ubHkgZmV0Y2hlZC9wYXJzZWQv
YXBwbGllZC9ldGMuIHRoZSB3ZWIgYXBwIG1hbmlmZXN0IHdoZW4KKyAgICAgICAgYC1bV0tXZWJW
aWV3IF9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOl1gIHdhcyBj
YWxsZWQuIFRoaXMgcGF0Y2ggbWFrZXMKKyAgICAgICAgV2ViS2l0IGRvIGFsbCB0aGF0IGFzIHNv
b24gYXMgYSBgPGxpbmsgcmVsPSJtYW5pZmVzdCI+YCAod2l0aCBhIHZhbGlkIFVSTCkgaXMgZW5j
b3VudGVyZWQuCisgICAgICAgIFRoaXMgYWxsb3dzIG1hbmlmZXN0cyB0aGF0IGhhdmUgc3BlY2lm
aWVkIGEgYCJ0aGVtZV9jb2xvciJgIHRvIGFjdHVhbGx5IGhhdmUgYW4gZWZmZWN0LgorCisgICAg
ICAgIFRlc3RzOiBBcHBsaWNhdGlvbk1hbmlmZXN0LkFsd2F5c0ZldGNoCisgICAgICAgICAgICAg
ICBBcHBsaWNhdGlvbk1hbmlmZXN0Lk9ubHlGaXJzdE1hbmlmZXN0CisKKyAgICAgICAgKiBodG1s
L0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6
OnByb2Nlc3MpOgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjpzdG9wTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
bG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6OmZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZl
c3QpOiBEZWxldGVkLgorICAgICAgICBTaW1wbGlmeSB0aGUgd2F5IHRoYXQgdGhlIFVJUHJvY2Vz
cyBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgV2ViUHJvY2VzcyAoYW5kIGJldHdlZW4gV2ViS2l0IGFu
ZAorICAgICAgICBXZWJDb3JlKS4gVGhlcmUncyBubyBuZWVkIHRvIGhhdmUgYSBgSGFzaE1hcGAg
b2YgY2FsbGJhY2tzIHNpbmNlIGVhY2ggZG9jdW1lbnQgY2FuIG9ubHkgaGF2ZQorICAgICAgICBh
dCBtb3N0IG9uZSB3ZWIgYXBwIG1hbmlmZXN0LiBGdXJ0aGVybW9yZSwgaW5zdGVhZCBvZiBoYXZp
bmcgYSBgSGFzaE1hcGAgaW4gYm90aCBXZWJLaXQgYW5kCisgICAgICAgIFdlYkNvcmUsIGp1c3Qg
cGFzcyBhbG9uZyB0aGUgYENvbXBsZXRpb25IYW5kbGVyYCB0byB0aGUgYERvY3VtZW50TG9hZGVy
YCBmb3IgYSBzaW5nbGUgbGlzdAorICAgICAgICBvZiBjb21wbGV0aW9uIGNhbGxiYWNrcyAoYSBs
aXN0IGlzIG5lZWRlZCBiZWNhdXNlIGl0J3MgcG9zc2libGUgZm9yIGEgY2xpZW50IHRvIGludm9r
ZQorICAgICAgICBgLVtXS1dlYlZpZXcgX2dldEFwcGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6XWAgbXVsdGlwbGUgdGltZXMpLgorCiAyMDIxLTA4LTEyICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWlncmF0ZSBQZXJm
b3JtYW5jZTo6cmVzb3VyY2VUaW1pbmdCdWZmZXJGdWxsVGltZXJGaXJlZCB0byBIVE1MIGV2ZW50
IGxvb3AKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggOGYzNTc1ODcyMzExM2NjMTI2OTQ3MjJiODM2NGNhODQ3MDE4MmZm
NC4uODk1NTZjZDc2NDUzYWE2YmM2NjZlNjYzOWQ0NDlhMmFjZGVjZGFlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMCBAQAorMjAyMS0wOC0xMiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5j
b20+CisKKyAgICAgICAgW1dlYiBBcHAgTWFuaWZlc3RdIEFsd2F5cyBmZXRjaCB0aGUgZmlyc3Qg
bWFuaWZlc3QgaWYgcHJvdmlkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyOTA1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEJlZm9yZSB0aGlzIHBhdGNoLCBXZWJLaXQgb25seSBmZXRjaGVkL3BhcnNl
ZC9hcHBsaWVkL2V0Yy4gdGhlIHdlYiBhcHAgbWFuaWZlc3Qgd2hlbgorICAgICAgICBgLVtXS1dl
YlZpZXcgX2dldEFwcGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxldGlvbkhhbmRsZXI6XWAgd2Fz
IGNhbGxlZC4gVGhpcyBwYXRjaCBtYWtlcworICAgICAgICBXZWJLaXQgZG8gYWxsIHRoYXQgYXMg
c29vbiBhcyBhIGA8bGluayByZWw9Im1hbmlmZXN0Ij5gICh3aXRoIGEgdmFsaWQgVVJMKSBpcyBl
bmNvdW50ZXJlZC4KKyAgICAgICAgVGhpcyBhbGxvd3MgbWFuaWZlc3RzIHRoYXQgaGF2ZSBzcGVj
aWZpZWQgYSBgInRoZW1lX2NvbG9yImAgdG8gYWN0dWFsbHkgaGF2ZSBhbiBlZmZlY3QuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExv
YWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6fldlYlBhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZGlkRmluaXNoTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QpOiBEZWxldGVkLgor
ICAgICAgICBTaW1wbGlmeSB0aGUgd2F5IHRoYXQgdGhlIFVJUHJvY2VzcyBjb21tdW5pY2F0ZXMg
d2l0aCB0aGUgV2ViUHJvY2VzcyAoYW5kIGJldHdlZW4gV2ViS2l0IGFuZAorICAgICAgICBXZWJD
b3JlKS4gVGhlcmUncyBubyBuZWVkIHRvIGhhdmUgYSBgSGFzaE1hcGAgb2YgY2FsbGJhY2tzIHNp
bmNlIGVhY2ggZG9jdW1lbnQgY2FuIG9ubHkgaGF2ZQorICAgICAgICBhdCBtb3N0IG9uZSB3ZWIg
YXBwIG1hbmlmZXN0LiBGdXJ0aGVybW9yZSwgaW5zdGVhZCBvZiBoYXZpbmcgYSBgSGFzaE1hcGAg
aW4gYm90aCBXZWJLaXQgYW5kCisgICAgICAgIFdlYkNvcmUsIGp1c3QgcGFzcyBhbG9uZyB0aGUg
YENvbXBsZXRpb25IYW5kbGVyYCB0byB0aGUgYERvY3VtZW50TG9hZGVyYCBmb3IgYSBzaW5nbGUg
bGlzdAorICAgICAgICBvZiBjb21wbGV0aW9uIGNhbGxiYWNrcyAoYSBsaXN0IGlzIG5lZWRlZCBi
ZWNhdXNlIGl0J3MgcG9zc2libGUgZm9yIGEgY2xpZW50IHRvIGludm9rZQorICAgICAgICBgLVtX
S1dlYlZpZXcgX2dldEFwcGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxldGlvbkhhbmRsZXI6XWAg
bXVsdGlwbGUgdGltZXMpLgorCiAyMDIxLTA4LTEyICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRA
YXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gUkVHUkVTU0lPTjogV2ViQ29udGVu
dCBvZnRlbiBjcmFzaGVzIHdoZW4gdXNpbmcgaUNsb3VkIHBob3RvcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IDc4YTlkODM4OTNmNmIxNDJmMGNhYjBiYWEzNGFm
OGRhMDM1ZjQxNjUuLjc2OTQ1NWE1Y2M5MjA2M2NkYTYxMGY1NWQxYWRhNzgyMDJjMWMzN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAK
ICNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIKICNpbmNsdWRlICJEZWZhdWx0UmVzb3VyY2VMb2Fk
UHJpb3JpdHkuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50TG9h
ZGVyLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5j
bHVkZSAiRXZlbnRTZW5kZXIuaCIKQEAgLTM1MSwxMSArMzUyLDI0IEBAIHZvaWQgSFRNTExpbmtF
bGVtZW50Ojpwcm9jZXNzKCkKICAgICAgICAgICAgIHNoZWV0TG9hZGVkKCk7CiAgICAgICAgICAg
ICBub3RpZnlMb2FkZWRTaGVldEFuZEFsbENyaXRpY2FsU3VicmVzb3VyY2VzKHRydWUpOwogICAg
ICAgICB9Ci0gICAgfSBlbHNlIGlmIChtX3NoZWV0KSB7CisKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmIChtX3NoZWV0KSB7CiAgICAgICAgIC8vIHdlIG5vIGxvbmdlciBjb250YWlu
IGEgc3R5bGVzaGVldCwgZS5nLiBwZXJoYXBzIHJlbCBvciB0eXBlIHdhcyBjaGFuZ2VkCiAgICAg
ICAgIGNsZWFyU2hlZXQoKTsKICAgICAgICAgbV9zdHlsZVNjb3BlLT5kaWRDaGFuZ2VBY3RpdmVT
dHlsZVNoZWV0Q2FuZGlkYXRlcygpOworICAgICAgICByZXR1cm47CiAgICAgfQorCisjaWYgRU5B
QkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIGlmIChpc0FwcGxpY2F0aW9uTWFuaWZlc3Qo
KSkgeworICAgICAgICBpZiAoUmVmUHRyIGxvYWRlciA9IGRvY3VtZW50KCkubG9hZGVyKCkpCisg
ICAgICAgICAgICBsb2FkZXItPmxvYWRBcHBsaWNhdGlvbk1hbmlmZXN0KHsgfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQog
fQogCiB2b2lkIEhUTUxMaW5rRWxlbWVudDo6Y2xlYXJTaGVldCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCAzZTRmZjllMDQ5NjRiMTZiNDI4MDkyNmNmOWUw
MzI4MDUwM2M3YmUwLi5jMmE1NzgxOTAxOWU5ZTRkNjJlODBmNjFkZjlkZTE5MDA5ZDRiMjFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTk2LDYgKzk2LDcg
QEAKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1Njb3Bl
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCkBAIC0zMzIsOSArMzMzLDEwIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0
b3BMb2FkaW5nKCkKICAgICBtX2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbi5jbGVhcigpOwogICAg
IAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLSAgICBmb3IgKGF1dG8gY2FsbGJh
Y2tJZGVudGlmaWVyIDogbV9hcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVycy52YWx1ZXMoKSkKLSAg
ICAgICAgbm90aWZ5RmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdChjYWxsYmFja0lk
ZW50aWZpZXIsIHN0ZDo6bnVsbG9wdCk7Ci0gICAgbV9hcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVy
cy5jbGVhcigpOworICAgIG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRlciA9IG51bGxwdHI7Cisg
ICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHN0ZDo6ZXhjaGFuZ2UobV9sb2FkQXBwbGljYXRpb25N
YW5pZmVzdENhbGxiYWNrcywgeyB9KSkKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsK
KyAgICBtX2ZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QgPSBmYWxzZTsKICNlbmRp
ZgogCiAgICAgLy8gQWx3YXlzIGNhbmNlbCBtdWx0aXBhcnQgbG9hZGVycwpAQCAtMTUyNywyMyAr
MTUyOSw0MSBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVhck1haW5SZXNvdXJjZUxvYWRlcigp
CiB9CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi11aW50NjRfdCBEb2N1bWVu
dExvYWRlcjo6bG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QoKQorCit2b2lkIERvY3VtZW50TG9hZGVy
Ojpsb2FkQXBwbGljYXRpb25NYW5pZmVzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBzdGF0aWMgdWludDY0X3QgbmV4dENhbGxiYWNrSUQgPSAxOworICAgIGlmIChtX2Fw
cGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIpIHsKKyAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVy
KSB7CisgICAgICAgICAgICBpZiAobV9maW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0
KQorICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fYXBwbGljYXRpb25NYW5pZmVz
dExvYWRlci0+cHJvY2Vzc01hbmlmZXN0KCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIG1fbG9hZEFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFja3MuYXBwZW5kKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQog
Ci0gICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIGJvb2wgc3VjY2Vz
cyA9IGZhbHNlOworICAgIGF1dG8gaW52b2tlQ29tcGxldGlvbkhhbmRsZXJPbkV4aXRJZkZhaWxl
ZCA9IG1ha2VTY29wZUV4aXQoWyZdIHsKKyAgICAgICAgaWYgKHN1Y2Nlc3MpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKKyAgICB9KTsKKworICAgIFJlZlB0ciBk
b2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9mcmFtZS0+aXNNYWluRnJh
bWUoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFkb2N1bWVudC0+aXNUb3BEb2N1bWVu
dCgpKQorICAgICAgICByZXR1cm47CiAKICAgICBpZiAoZG9jdW1lbnQtPnVybCgpLmlzRW1wdHko
KSB8fCBkb2N1bWVudC0+dXJsKCkucHJvdG9jb2xJc0Fib3V0KCkpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGhlYWQgPSBkb2N1bWVudC0+aGVhZCgpOwor
ICAgIFJlZlB0ciBoZWFkID0gZG9jdW1lbnQtPmhlYWQoKTsKICAgICBpZiAoIWhlYWQpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm47CiAKICAgICBVUkwgbWFuaWZlc3RVUkw7CiAg
ICAgYm9vbCB1c2VDcmVkZW50aWFscyA9IGZhbHNlOwpAQCAtMTU1NiwxOSArMTU3NiwxNiBAQCB1
aW50NjRfdCBEb2N1bWVudExvYWRlcjo6bG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QoKQogICAgIH0K
IAogICAgIGlmIChtYW5pZmVzdFVSTC5pc0VtcHR5KCkgfHwgIW1hbmlmZXN0VVJMLmlzVmFsaWQo
KSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gbWFuaWZl
c3RMb2FkZXIgPSBtYWtlVW5pcXVlPEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI+KCp0aGlzLCBt
YW5pZmVzdFVSTCwgdXNlQ3JlZGVudGlhbHMpOwotICAgIGF1dG8qIHJhd01hbmlmZXN0TG9hZGVy
ID0gbWFuaWZlc3RMb2FkZXIuZ2V0KCk7Ci0gICAgYXV0byBjYWxsYmFja0lEID0gbmV4dENhbGxi
YWNrSUQrKzsKLSAgICBtX2FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXJzLnNldChXVEZNb3ZlKG1h
bmlmZXN0TG9hZGVyKSwgY2FsbGJhY2tJRCk7CisgICAgbV9hcHBsaWNhdGlvbk1hbmlmZXN0TG9h
ZGVyID0gbWFrZVVuaXF1ZTxBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyPigqdGhpcywgbWFuaWZl
c3RVUkwsIHVzZUNyZWRlbnRpYWxzKTsKIAotICAgIGlmICghcmF3TWFuaWZlc3RMb2FkZXItPnN0
YXJ0TG9hZGluZygpKSB7Ci0gICAgICAgIG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRlcnMucmVt
b3ZlKHJhd01hbmlmZXN0TG9hZGVyKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgc3VjY2VzcyA9
IG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRlci0+c3RhcnRMb2FkaW5nKCk7CisKKyAgICBpZiAo
c3VjY2VzcykgeworICAgICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICBt
X2xvYWRBcHBsaWNhdGlvbk1hbmlmZXN0Q2FsbGJhY2tzLmFwcGVuZChXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiAgICAgfQotCi0gICAgcmV0dXJuIGNhbGxiYWNrSUQ7CiB9CiAKIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QoQXBwbGlj
YXRpb25NYW5pZmVzdExvYWRlciYgbG9hZGVyKQpAQCAtMTU3NiwxOCArMTU5MywxNyBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KEFwcGxp
Y2F0aW9uTWFuaWZlc3RMb2FkZQogICAgIC8vIElmIHRoZSBEb2N1bWVudExvYWRlciBoYXMgZGV0
YWNoZWQgZnJvbSBpdHMgZnJhbWUsIGFsbCBtYW5pZmVzdCBsb2FkcyBzaG91bGQgaGF2ZSBhbHJl
YWR5IGJlZW4gY2FuY2VsZWQuCiAgICAgQVNTRVJUKG1fZnJhbWUpOwogCi0gICAgYXV0byBjYWxs
YmFja0lkZW50aWZpZXIgPSBtX2FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXJzLmdldCgmbG9hZGVy
KTsKLSAgICBub3RpZnlGaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KGNhbGxiYWNr
SWRlbnRpZmllciwgbG9hZGVyLnByb2Nlc3NNYW5pZmVzdCgpKTsKLSAgICBtX2FwcGxpY2F0aW9u
TWFuaWZlc3RMb2FkZXJzLnJlbW92ZSgmbG9hZGVyKTsKKyAgICBBU1NFUlQoIW1fZmluaXNoZWRM
b2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCk7CisgICAgbV9maW5pc2hlZExvYWRpbmdBcHBsaWNh
dGlvbk1hbmlmZXN0ID0gdHJ1ZTsKKworICAgIEFTU0VSVF9VTlVTRUQobG9hZGVyLCAmbG9hZGVy
ID09IG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRlcik7CisgICAgYXV0byBtYW5pZmVzdCA9IG1f
YXBwbGljYXRpb25NYW5pZmVzdExvYWRlci0+cHJvY2Vzc01hbmlmZXN0KCk7CisKKyAgICBmb3Ig
KGF1dG8mIGNhbGxiYWNrIDogc3RkOjpleGNoYW5nZShtX2xvYWRBcHBsaWNhdGlvbk1hbmlmZXN0
Q2FsbGJhY2tzLCB7IH0pKQorICAgICAgICBjYWxsYmFjayhtYW5pZmVzdCk7CiB9CiAKLXZvaWQg
RG9jdW1lbnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3Qo
dWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uTWFu
aWZlc3Q+IG1hbmlmZXN0KQotewotICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxiYWNrSWRlbnRpZmll
cik7Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9mcmFtZSk7Ci0gICAgbV9mcmFtZS0+bG9hZGVyKCku
Y2xpZW50KCkuZmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdChjYWxsYmFja0lkZW50
aWZpZXIsIG1hbmlmZXN0KTsKLX0KLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShBUFBMSUNBVElP
Tl9NQU5JRkVTVCkKIAogYm9vbCBEb2N1bWVudExvYWRlcjo6aXNMb2FkaW5nSW5BUElTZW5zZSgp
IGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGQ4ZmYx
ZGEzYmQ2NDA2YzVkNzY0ODc2YWFkNDliYmQwMDRhYzE3NzAuLjZkN2M0MmFmM2RmZTE1MWI0MGMx
ZTczMDk1NjkxNmY1MzA0MmRlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oCkBAIC0zOTMsNyArMzkzLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxMaW5rSWNv
bj4mIGxpbmtJY29ucygpIGNvbnN0IHsgcmV0dXJuIG1fbGlua0ljb25zOyB9CiAKICNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi0gICAgV0VCQ09SRV9FWFBPUlQgdWludDY0X3QgbG9h
ZEFwcGxpY2F0aW9uTWFuaWZlc3QoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxvYWRBcHBs
aWNhdGlvbk1hbmlmZXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25h
bDxBcHBsaWNhdGlvbk1hbmlmZXN0PiYpPiYmKTsKICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0Fw
cGxpY2F0aW9uTWFuaWZlc3QoQXBwbGljYXRpb25NYW5pZmVzdExvYWRlciYpOwogI2VuZGlmCiAK
QEAgLTUxMSwxMCArNTExLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNhbmNlbFBvbGljeUNoZWNr
SWZOZWVkZWQoKTsKICAgICB2b2lkIGJlY29tZU1haW5SZXNvdXJjZUNsaWVudCgpOwogCi0jaWYg
RU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQotICAgIHZvaWQgbm90aWZ5RmluaXNoZWRMb2Fk
aW5nQXBwbGljYXRpb25NYW5pZmVzdCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIHN0ZDo6
b3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4pOwotI2VuZGlmCi0KICAgICAvLyBDb250ZW50
U2VjdXJpdHlQb2xpY3lDbGllbnQKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiwgdW5zaWdu
ZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZW5kQ1NQVmlvbGF0aW9uUmVwb3J0KFVSTCYmLCBSZWY8Rm9ybURhdGE+JiYpIGZpbmFsOwpA
QCAtNjE2LDcgKzYxMiw5IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPExpbmtJY29uPiBtX2xpbmtJ
Y29uczsKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLSAgICBIYXNoTWFwPHN0
ZDo6dW5pcXVlX3B0cjxBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyPiwgdWludDY0X3Q+IG1fYXBw
bGljYXRpb25NYW5pZmVzdExvYWRlcnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFwcGxpY2F0aW9u
TWFuaWZlc3RMb2FkZXI+IG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRlcjsKKyAgICBWZWN0b3I8
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uTWFu
aWZlc3Q+Jik+PiBtX2xvYWRBcHBsaWNhdGlvbk1hbmlmZXN0Q2FsbGJhY2tzOworICAgIGJvb2wg
bV9maW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0IHsgZmFsc2UgfTsKICNlbmRpZgog
CiAgICAgVmVjdG9yPEN1c3RvbUhlYWRlckZpZWxkcz4gbV9jdXN0b21IZWFkZXJGaWVsZHM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0MGJlNjFjMjBmY2I4ZDNhZjcxMDNm
YWNjMzczYTIwYzkxNjYzMzA5Li5hZjEwOTM1YWMxNmU2MWJjMmQ5YmZlM2Y3Mzc2ZjUyYTljNWZk
NmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE5MjcsMTcgKzE5Mjcs
NiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRDcmVhdGVXaW5kb3coRE9NV2luZG93
JiB3aW5kb3cpCiAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRD
cmVhdGVXaW5kb3cobV9mcmFtZS0+ZnJhbWVJRCgpLCB3aW5kb3cuaWRlbnRpZmllcigpKSk7CiB9
CiAKLSNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi12b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpmaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KHVpbnQ2NF90IGNhbGxi
YWNrSWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1h
bmlmZXN0PiYgbWFuaWZlc3QpCi17Ci0gICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBh
Z2UoKTsKLSAgICBpZiAoIXdlYlBhZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIHdlYlBhZ2Ut
PmRpZEZpbmlzaExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KGNhbGxiYWNrSWRlbnRpZmllciwg
bWFuaWZlc3QpOwotfQotI2VuZGlmIC8vIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLQog
I2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpIGNvbnN0CiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGFhM2E4NjAxNzU3MjY1NDEzODUyYTRiOWU4
OTU2NGJiNGQxYTNmM2IuLmQxNjlkNGFjN2QyYjE2NTMzODgxNjkzZWU5NjdiZDgzOTNiOWNiN2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yNzAsMTAgKzI3MCw2IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGRpZENyZWF0ZVdpbmRvdyhXZWJDb3JlOjpET01XaW5kb3cmKSBmaW5h
bDsKIAotI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLSAgICB2b2lkIGZpbmlzaGVk
TG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QodWludDY0X3QsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mKSBmaW5hbDsKLSNlbmRpZgotCiAgICAgUmVm
PFdlYkZyYW1lPiBtX2ZyYW1lOwogICAgIFJlZlB0cjxQbHVnaW5WaWV3PiBtX3BsdWdpblZpZXc7
CiAgICAgYm9vbCBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luVmlldyB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDRlNGJiY2Zi
YmNkYWVlYTBiMTI1ZjdiMGQ4ZTYzZjBkZmU4MjNhZjcuLjRhM2ZkMGQyM2YyYzJiNzlkMjIxYTE5
ZTE4MDZlMjVkZjQzZTMwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0xMDQ4LDEzICsxMDQ4LDYgQEAgV2ViUGFnZTo6fldlYlBhZ2UoKQog
CiAgICAgZm9yIChhdXRvJiBjb21wbGV0aW9uSGFuZGxlciA6IHN0ZDo6ZXhjaGFuZ2UobV9tYXJr
TGF5ZXJzQXNWb2xhdGlsZUNvbXBsZXRpb25IYW5kbGVycywgeyB9KSkKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoZmFsc2UpOwotICAgIAotI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVT
VCkKLSAgICBmb3IgKGF1dG8mIGNvbXBsZXRpb25IYW5kbGVyIDogbV9hcHBsaWNhdGlvbk1hbmlm
ZXN0RmV0Y2hDYWxsYmFja01hcC52YWx1ZXMoKSkgewotICAgICAgICBpZiAoY29tcGxldGlvbkhh
bmRsZXIpCi0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwotICAg
IH0KLSNlbmRpZgogfQogCiBJUEM6OkNvbm5lY3Rpb24qIFdlYlBhZ2U6Om1lc3NhZ2VTZW5kZXJD
b25uZWN0aW9uKCkgY29uc3QKQEAgLTcxODksMjUgKzcxODIsMTcgQEAgUmVmUHRyPEhUTUxBdHRh
Y2htZW50RWxlbWVudD4gV2ViUGFnZTo6YXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRpZmllcihj
b25zdCBTdHIKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCiAjaWYgRU5B
QkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorCiB2b2lkIFdlYlBhZ2U6OmdldEFwcGxpY2F0aW9u
TWFuaWZlc3QoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAg
RG9jdW1lbnQqIG1haW5GcmFtZURvY3VtZW50ID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5k
b2N1bWVudCgpOwotICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBtYWluRnJhbWVEb2N1bWVu
dCA/IG1haW5GcmFtZURvY3VtZW50LT5sb2FkZXIoKSA6IG51bGxwdHI7Ci0gICAgaWYgKCFsb2Fk
ZXIpCisgICAgUmVmUHRyIG1haW5GcmFtZURvY3VtZW50ID0gbV9tYWluRnJhbWUtPmNvcmVGcmFt
ZSgpLT5kb2N1bWVudCgpOworICAgIFJlZlB0ciBtYWluRG9jdW1lbnRMb2FkZXIgPSBtYWluRnJh
bWVEb2N1bWVudCA/IG1haW5GcmFtZURvY3VtZW50LT5sb2FkZXIoKSA6IG51bGxwdHI7CisgICAg
aWYgKCFtYWluRG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihzdGQ6Om51bGxvcHQpOwogCi0gICAgYXV0byBjb3JlQ2FsbGJhY2tJRCA9IGxvYWRlci0+bG9h
ZEFwcGxpY2F0aW9uTWFuaWZlc3QoKTsKLSAgICBpZiAoIWNvcmVDYWxsYmFja0lEKQotICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKLQotICAgIG1fYXBwbGlj
YXRpb25NYW5pZmVzdEZldGNoQ2FsbGJhY2tNYXAuYWRkKGNvcmVDYWxsYmFja0lELCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgbWFpbkRvY3VtZW50TG9hZGVyLT5sb2FkQXBwbGlj
YXRpb25NYW5pZmVzdChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2Vi
UGFnZTo6ZGlkRmluaXNoTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QodWludDY0X3QgY29yZUNh
bGxiYWNrSUQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVz
dD4mIG1hbmlmZXN0KQotewotICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9hcHBsaWNhdGlvbk1h
bmlmZXN0RmV0Y2hDYWxsYmFja01hcC50YWtlKGNvcmVDYWxsYmFja0lEKSkKLSAgICAgICAgY2Fs
bGJhY2sobWFuaWZlc3QpOwotfQogI2VuZGlmIC8vIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVT
VCkKIAogdm9pZCBXZWJQYWdlOjp1cGRhdGVDdXJyZW50TW9kaWZpZXJTdGF0ZShPcHRpb25TZXQ8
UGxhdGZvcm1FdmVudDo6TW9kaWZpZXI+IG1vZGlmaWVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA3OGQ4MzBkYTQyZDk1NjdjZGY5NWNmYTFmZTMy
NzMzMDJmZjNiMjFjLi5kNmRmYzE4Nzk3YjcxNGJmYjBkMjFhZjVjNzllMTBlNWIzMGMxNjk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMjkyLDcg
KzEyOTIsNiBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAg
ICAgdm9pZCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYpPiYmKTsKLSAg
ICB2b2lkIGRpZEZpbmlzaExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KHVpbnQ2NF90LCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+Jik7CiAjZW5kaWYK
IAogI2lmIFVTRShXUEVfUkVOREVSRVIpCkBAIC0yMzEwLDEwICsyMzA5LDYgQEAgcHJpdmF0ZToK
IAogICAgIEhhc2hNYXA8dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoYm9vbCBncmFudGVkKT4+IG1f
c3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXA7CiAKLSNpZiBFTkFCTEUoQVBQTElDQVRJ
T05fTUFOSUZFU1QpCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+Jik+PiBt
X2FwcGxpY2F0aW9uTWFuaWZlc3RGZXRjaENhbGxiYWNrTWFwOwotI2VuZGlmCi0KICAgICBPcHRp
b25TZXQ8TGF5ZXJUcmVlRnJlZXplUmVhc29uPiBtX2xheWVyVHJlZUZyZWV6ZVJlYXNvbnM7CiAg
ICAgYm9vbCBtX2lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fbmVlZHNGb250QXR0
cmlidXRlcyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggZmVmMWJkYTNlMzk4OGRmYzQzOGRkYzU1MTYwYzQxNDMyMGM2ODRhZi4u
OWJhYWE5MDM4ZjEwMzM4ZDE4N2Q3ZjM2OGFjMzFhMDI3NzhjNzkxMSAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIx
LTA4LTEyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBbV2Vi
IEFwcCBNYW5pZmVzdF0gQWx3YXlzIGZldGNoIHRoZSBmaXJzdCBtYW5pZmVzdCBpZiBwcm92aWRl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MDU5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcGxpY2F0aW9uTWFuaWZlc3QubW06CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNULkFwcGxpY2F0aW9uTWFuaWZlc3QuQWx3YXlzRmV0Y2gp
OiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QuQXBwbGljYXRpb25NYW5pZmVz
dC5Pbmx5Rmlyc3RNYW5pZmVzdCk6IEFkZGVkLgorCiAyMDIxLTA4LTEyICBQYXRyaWNrIEFuZ2xl
ICA8cGFuZ2xlQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgbXlzZWxmIChQYXRyaWNrIEFuZ2xl
KSB0byB3YXRjaGxpc3QgZm9yIEluc3BlY3RvciBjb2RlIGNoYW5nZXMKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwbGljYXRpb25NYW5pZmVzdC5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwbGljYXRpb25NYW5p
ZmVzdC5tbQppbmRleCBhMjQ3M2I2MmIwZmVmNDk2ZmYzMWNhMjIxNzQ1NjE1YTRhMmMyMGZiLi5i
YmI3OWExNmQ5MTRhZjA1MmM3YzliYTYxYWM3NWM3ZWNkMTlkMzg2IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcGxpY2F0aW9uTWFuaWZlc3QubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBsaWNhdGlvbk1h
bmlmZXN0Lm1tCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAog
Y29uc3RleHByIENHRmxvYXQgcmVkQ29sb3JDb21wb25lbnRzWzRdID0geyAxLCAwLCAwLCAxIH07
CiAKLVRFU1QoV2ViS2l0LCBBcHBsaWNhdGlvbk1hbmlmZXN0Q29kaW5nKQorVEVTVChBcHBsaWNh
dGlvbk1hbmlmZXN0LCBDb2RpbmcpCiB7CiAgICAgYXV0byBqc29uU3RyaW5nID0gQCJ7IFwibmFt
ZVwiOiBcIlRlc3ROYW1lXCIsIFwic2hvcnRfbmFtZVwiOiBcIlRlc3RTaG9ydE5hbWVcIiwgXCJk
ZXNjcmlwdGlvblwiOiBcIlRlc3REZXNjcmlwdGlvblwiLCBcInNjb3BlXCI6IFwiaHR0cHM6Ly90
ZXN0LmNvbS9hcHBcIiwgXCJzdGFydF91cmxcIjogXCJodHRwczovL3Rlc3QuY29tL2FwcC9pbmRl
eC5odG1sXCIsIFwiZGlzcGxheVwiOiBcIm1pbmltYWwtdWlcIiwgXCJ0aGVtZV9jb2xvclwiOiBc
InJlZFwiIH0iOwogICAgIFJldGFpblB0cjxfV0tBcHBsaWNhdGlvbk1hbmlmZXN0PiBtYW5pZmVz
dCB7IFtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGFwcGxpY2F0aW9uTWFuaWZlc3RGcm9tSlNPTjpq
c29uU3RyaW5nIG1hbmlmZXN0VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly90ZXN0
LmNvbS9tYW5pZmVzdC5qc29uIl0gZG9jdW1lbnRVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJo
dHRwczovL3Rlc3QuY29tLyJdXSB9OwpAQCAtNjAsNyArNjAsNyBAQCBURVNUKFdlYktpdCwgQXBw
bGljYXRpb25NYW5pZmVzdENvZGluZykKICAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0Nv
bG9yKG1hbmlmZXN0LmdldCgpLnRoZW1lQ29sb3IuQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsK
IH0KIAotVEVTVChXZWJLaXQsIEFwcGxpY2F0aW9uTWFuaWZlc3RCYXNpYykKK1RFU1QoQXBwbGlj
YXRpb25NYW5pZmVzdCwgQmFzaWMpCiB7CiAgICAgc3RhdGljIGJvb2wgZG9uZSA9IGZhbHNlOwog
CkBAIC0xMTcsNyArMTE3LDcgQEAgVEVTVChXZWJLaXQsIEFwcGxpY2F0aW9uTWFuaWZlc3RCYXNp
YykKICAgICBVdGlsOjpydW4oJmRvbmUpOwogfQogCi1URVNUKFdlYktpdCwgQXBwbGljYXRpb25N
YW5pZmVzdERpc3BsYXlNb2RlKQorVEVTVChBcHBsaWNhdGlvbk1hbmlmZXN0LCBEaXNwbGF5TW9k
ZSkKIHsKICAgICBzdGF0aWMgYm9vbCBkb25lOwogICAgIE5TRGljdGlvbmFyeSAqZGlzcGxheU1v
ZGVzQW5kRXhwZWN0ZWRDb250ZW50ID0gQHsKQEAgLTE0OSw2ICsxNDksNTcgQEAgVEVTVChXZWJL
aXQsIEFwcGxpY2F0aW9uTWFuaWZlc3REaXNwbGF5TW9kZSkKICAgICB9XTsKIH0KIAorVEVTVChB
cHBsaWNhdGlvbk1hbmlmZXN0LCBBbHdheXNGZXRjaCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSk7
CisKKyAgICBOU0RpY3Rpb25hcnkgKm1hbmlmZXN0T2JqZWN0ID0gQHsgQCJ0aGVtZV9jb2xvciI6
IEAicmVkIiB9OworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxsaW5rIHJlbD1cIm1hbmlmZXN0XCIgaHJlZj1cImRh
dGE6YXBwbGljYXRpb24vbWFuaWZlc3QranNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCwlQFwiPiIs
IFtbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6bWFuaWZlc3RPYmplY3Qg
b3B0aW9uczowIGVycm9yOm5pbF0gYmFzZTY0RW5jb2RlZFN0cmluZ1dpdGhPcHRpb25zOjBdXV07
CisKKyAgICB7CisgICAgICAgIGF1dG8gc1JHQkNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JT
cGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7CisgICAgICAgIGF1dG8gcmVk
Q29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCksIHJlZENv
bG9yQ29tcG9uZW50cykpOworICAgICAgICB3aGlsZSAoIUNHQ29sb3JFcXVhbFRvQ29sb3IoW3dl
YlZpZXcgdGhlbWVDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKQorICAgICAgICAgICAg
VXRpbDo6c2xlZXAoMSk7CisgICAgfQorCisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsK
KyAgICBbd2ViVmlldyBfZ2V0QXBwbGljYXRpb25NYW5pZmVzdFdpdGhDb21wbGV0aW9uSGFuZGxl
cjpeKF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QgKm1hbmlmZXN0KSB7CisgICAgICAgIGF1dG8gc1JH
QkNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9y
U3BhY2VTUkdCKSk7CisgICAgICAgIGF1dG8gcmVkQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVh
dGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCksIHJlZENvbG9yQ29tcG9uZW50cykpOworICAgICAgICBF
WFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKG1hbmlmZXN0LnRoZW1lQ29sb3IuQ0dDb2xv
ciwgcmVkQ29sb3IuZ2V0KCkpKTsKKworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBVdGlsOjpydW4oJmRvbmUpOworfQorCitURVNUKEFwcGxpY2F0aW9uTWFuaWZlc3QsIE9ubHlG
aXJzdE1hbmlmZXN0KQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdKTsKKworICAgIE5TRGljdGlvbmFy
eSAqbWFuaWZlc3RPYmplY3QxID0gQHsgQCJ0aGVtZV9jb2xvciI6IEAicmVkIiB9OworICAgIE5T
RGljdGlvbmFyeSAqbWFuaWZlc3RPYmplY3QyID0gQHsgQCJ0aGVtZV9jb2xvciI6IEAiYmx1ZSIg
fTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6W05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCI8bGluayByZWw9XCJtYW5pZmVzdFwiIGhyZWY9XCJkYXRhOmFwcGxp
Y2F0aW9uL21hbmlmZXN0K2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsJUBcIj48bGluayByZWw9
XCJtYW5pZmVzdFwiIGhyZWY9XCJkYXRhOmFwcGxpY2F0aW9uL21hbmlmZXN0K2pzb247Y2hhcnNl
dD11dGYtODtiYXNlNjQsJUBcIj4iLCBbW05TSlNPTlNlcmlhbGl6YXRpb24gZGF0YVdpdGhKU09O
T2JqZWN0Om1hbmlmZXN0T2JqZWN0MSBvcHRpb25zOjAgZXJyb3I6bmlsXSBiYXNlNjRFbmNvZGVk
U3RyaW5nV2l0aE9wdGlvbnM6MF0sIFtbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05P
YmplY3Q6bWFuaWZlc3RPYmplY3QyIG9wdGlvbnM6MCBlcnJvcjpuaWxdIGJhc2U2NEVuY29kZWRT
dHJpbmdXaXRoT3B0aW9uczowXV1dOworCisgICAgeworICAgICAgICBhdXRvIHNSR0JDb2xvclNw
YWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JH
QikpOworICAgICAgICBhdXRvIHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JD
b2xvclNwYWNlLmdldCgpLCByZWRDb2xvckNvbXBvbmVudHMpKTsKKyAgICAgICAgd2hpbGUgKCFD
R0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHRoZW1lQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9y
LmdldCgpKSkKKyAgICAgICAgICAgIFV0aWw6OnNsZWVwKDEpOworICAgIH0KKworICAgIF9fYmxv
Y2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2dldEFwcGxpY2F0aW9uTWFuaWZl
c3RXaXRoQ29tcGxldGlvbkhhbmRsZXI6XihfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICptYW5pZmVz
dCkgeworICAgICAgICBhdXRvIHNSR0JDb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VD
cmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOworICAgICAgICBhdXRvIHJlZENvbG9y
ID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCByZWRDb2xvckNv
bXBvbmVudHMpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihtYW5p
ZmVzdC50aGVtZUNvbG9yLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSk7CisKKyAgICAgICAgZG9u
ZSA9IHRydWU7CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSQogCiAjZW5kaWYgLy8gRU5BQkxFKEFQUExJQ0FUSU9OX01BTklG
RVNUKQo=
</data>
<flag name="commit-queue"
          id="458281"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435459</attachid>
            <date>2021-08-12 17:51:23 -0700</date>
            <delta_ts>2021-08-16 15:39:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>229059.diff</filename>
            <type>text/plain</type>
            <size>22184</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4NTA4NTQzNjFmZmQwYjBhZGI5OWNkYTg2NzVkN2IwMjNkNjAyMTc1Li4y
MDU0ZjEzYzc5Yzg5MzZlMmZkNjljNjRjZjMzNTlhNjg4YmFhYTVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzQgQEAKKzIwMjEtMDgtMTIgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFtXZWIgQXBwIE1hbmlmZXN0XSBBbHdheXMgZmV0Y2ggdGhlIGZpcnN0IG1h
bmlmZXN0IGlmIHByb3ZpZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjkwNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaCwgV2ViS2l0IG9ubHkgZmV0Y2hlZC9wYXJzZWQv
YXBwbGllZC9ldGMuIHRoZSB3ZWIgYXBwIG1hbmlmZXN0IHdoZW4KKyAgICAgICAgYC1bV0tXZWJW
aWV3IF9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOl1gIHdhcyBj
YWxsZWQuIFRoaXMgcGF0Y2ggbWFrZXMKKyAgICAgICAgV2ViS2l0IGRvIGFsbCB0aGF0IGFzIHNv
b24gYXMgYSBgPGxpbmsgcmVsPSJtYW5pZmVzdCI+YCAod2l0aCBhIHZhbGlkIFVSTCkgaXMgZW5j
b3VudGVyZWQuCisgICAgICAgIFRoaXMgYWxsb3dzIG1hbmlmZXN0cyB0aGF0IGhhdmUgc3BlY2lm
aWVkIGEgYCJ0aGVtZV9jb2xvciJgIHRvIGFjdHVhbGx5IGhhdmUgYW4gZWZmZWN0LgorCisgICAg
ICAgIFRlc3RzOiBBcHBsaWNhdGlvbk1hbmlmZXN0LkFsd2F5c0ZldGNoCisgICAgICAgICAgICAg
ICBBcHBsaWNhdGlvbk1hbmlmZXN0Lk9ubHlGaXJzdE1hbmlmZXN0CisKKyAgICAgICAgKiBodG1s
L0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6
OnByb2Nlc3MpOgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjpzdG9wTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
bG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6OmZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZl
c3QpOiBEZWxldGVkLgorICAgICAgICBTaW1wbGlmeSB0aGUgd2F5IHRoYXQgdGhlIFVJUHJvY2Vz
cyBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgV2ViUHJvY2VzcyAoYW5kIGJldHdlZW4gV2ViS2l0IGFu
ZAorICAgICAgICBXZWJDb3JlKS4gVGhlcmUncyBubyBuZWVkIHRvIGhhdmUgYSBgSGFzaE1hcGAg
b2YgY2FsbGJhY2tzIHNpbmNlIGVhY2ggZG9jdW1lbnQgY2FuIG9ubHkgaGF2ZQorICAgICAgICBh
dCBtb3N0IG9uZSB3ZWIgYXBwIG1hbmlmZXN0LiBGdXJ0aGVybW9yZSwgaW5zdGVhZCBvZiBoYXZp
bmcgYSBgSGFzaE1hcGAgaW4gYm90aCBXZWJLaXQgYW5kCisgICAgICAgIFdlYkNvcmUsIGp1c3Qg
cGFzcyBhbG9uZyB0aGUgYENvbXBsZXRpb25IYW5kbGVyYCB0byB0aGUgYERvY3VtZW50TG9hZGVy
YCBmb3IgYSBzaW5nbGUgbGlzdAorICAgICAgICBvZiBjb21wbGV0aW9uIGNhbGxiYWNrcyAoYSBs
aXN0IGlzIG5lZWRlZCBiZWNhdXNlIGl0J3MgcG9zc2libGUgZm9yIGEgY2xpZW50IHRvIGludm9r
ZQorICAgICAgICBgLVtXS1dlYlZpZXcgX2dldEFwcGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6XWAgbXVsdGlwbGUgdGltZXMpLgorCiAyMDIxLTA4LTEyICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWlncmF0ZSBQZXJm
b3JtYW5jZTo6cmVzb3VyY2VUaW1pbmdCdWZmZXJGdWxsVGltZXJGaXJlZCB0byBIVE1MIGV2ZW50
IGxvb3AKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggOGYzNTc1ODcyMzExM2NjMTI2OTQ3MjJiODM2NGNhODQ3MDE4MmZm
NC4uODk1NTZjZDc2NDUzYWE2YmM2NjZlNjYzOWQ0NDlhMmFjZGVjZGFlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMCBAQAorMjAyMS0wOC0xMiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5j
b20+CisKKyAgICAgICAgW1dlYiBBcHAgTWFuaWZlc3RdIEFsd2F5cyBmZXRjaCB0aGUgZmlyc3Qg
bWFuaWZlc3QgaWYgcHJvdmlkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyOTA1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEJlZm9yZSB0aGlzIHBhdGNoLCBXZWJLaXQgb25seSBmZXRjaGVkL3BhcnNl
ZC9hcHBsaWVkL2V0Yy4gdGhlIHdlYiBhcHAgbWFuaWZlc3Qgd2hlbgorICAgICAgICBgLVtXS1dl
YlZpZXcgX2dldEFwcGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxldGlvbkhhbmRsZXI6XWAgd2Fz
IGNhbGxlZC4gVGhpcyBwYXRjaCBtYWtlcworICAgICAgICBXZWJLaXQgZG8gYWxsIHRoYXQgYXMg
c29vbiBhcyBhIGA8bGluayByZWw9Im1hbmlmZXN0Ij5gICh3aXRoIGEgdmFsaWQgVVJMKSBpcyBl
bmNvdW50ZXJlZC4KKyAgICAgICAgVGhpcyBhbGxvd3MgbWFuaWZlc3RzIHRoYXQgaGF2ZSBzcGVj
aWZpZWQgYSBgInRoZW1lX2NvbG9yImAgdG8gYWN0dWFsbHkgaGF2ZSBhbiBlZmZlY3QuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExv
YWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6fldlYlBhZ2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZGlkRmluaXNoTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QpOiBEZWxldGVkLgor
ICAgICAgICBTaW1wbGlmeSB0aGUgd2F5IHRoYXQgdGhlIFVJUHJvY2VzcyBjb21tdW5pY2F0ZXMg
d2l0aCB0aGUgV2ViUHJvY2VzcyAoYW5kIGJldHdlZW4gV2ViS2l0IGFuZAorICAgICAgICBXZWJD
b3JlKS4gVGhlcmUncyBubyBuZWVkIHRvIGhhdmUgYSBgSGFzaE1hcGAgb2YgY2FsbGJhY2tzIHNp
bmNlIGVhY2ggZG9jdW1lbnQgY2FuIG9ubHkgaGF2ZQorICAgICAgICBhdCBtb3N0IG9uZSB3ZWIg
YXBwIG1hbmlmZXN0LiBGdXJ0aGVybW9yZSwgaW5zdGVhZCBvZiBoYXZpbmcgYSBgSGFzaE1hcGAg
aW4gYm90aCBXZWJLaXQgYW5kCisgICAgICAgIFdlYkNvcmUsIGp1c3QgcGFzcyBhbG9uZyB0aGUg
YENvbXBsZXRpb25IYW5kbGVyYCB0byB0aGUgYERvY3VtZW50TG9hZGVyYCBmb3IgYSBzaW5nbGUg
bGlzdAorICAgICAgICBvZiBjb21wbGV0aW9uIGNhbGxiYWNrcyAoYSBsaXN0IGlzIG5lZWRlZCBi
ZWNhdXNlIGl0J3MgcG9zc2libGUgZm9yIGEgY2xpZW50IHRvIGludm9rZQorICAgICAgICBgLVtX
S1dlYlZpZXcgX2dldEFwcGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxldGlvbkhhbmRsZXI6XWAg
bXVsdGlwbGUgdGltZXMpLgorCiAyMDIxLTA4LTEyICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRA
YXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gUkVHUkVTU0lPTjogV2ViQ29udGVu
dCBvZnRlbiBjcmFzaGVzIHdoZW4gdXNpbmcgaUNsb3VkIHBob3RvcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IDc4YTlkODM4OTNmNmIxNDJmMGNhYjBiYWEzNGFm
OGRhMDM1ZjQxNjUuLjc2OTQ1NWE1Y2M5MjA2M2NkYTYxMGY1NWQxYWRhNzgyMDJjMWMzN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAK
ICNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIKICNpbmNsdWRlICJEZWZhdWx0UmVzb3VyY2VMb2Fk
UHJpb3JpdHkuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50TG9h
ZGVyLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5j
bHVkZSAiRXZlbnRTZW5kZXIuaCIKQEAgLTM1MSwxMSArMzUyLDI0IEBAIHZvaWQgSFRNTExpbmtF
bGVtZW50Ojpwcm9jZXNzKCkKICAgICAgICAgICAgIHNoZWV0TG9hZGVkKCk7CiAgICAgICAgICAg
ICBub3RpZnlMb2FkZWRTaGVldEFuZEFsbENyaXRpY2FsU3VicmVzb3VyY2VzKHRydWUpOwogICAg
ICAgICB9Ci0gICAgfSBlbHNlIGlmIChtX3NoZWV0KSB7CisKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmIChtX3NoZWV0KSB7CiAgICAgICAgIC8vIHdlIG5vIGxvbmdlciBjb250YWlu
IGEgc3R5bGVzaGVldCwgZS5nLiBwZXJoYXBzIHJlbCBvciB0eXBlIHdhcyBjaGFuZ2VkCiAgICAg
ICAgIGNsZWFyU2hlZXQoKTsKICAgICAgICAgbV9zdHlsZVNjb3BlLT5kaWRDaGFuZ2VBY3RpdmVT
dHlsZVNoZWV0Q2FuZGlkYXRlcygpOworICAgICAgICByZXR1cm47CiAgICAgfQorCisjaWYgRU5B
QkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorICAgIGlmIChpc0FwcGxpY2F0aW9uTWFuaWZlc3Qo
KSkgeworICAgICAgICBpZiAoUmVmUHRyIGxvYWRlciA9IGRvY3VtZW50KCkubG9hZGVyKCkpCisg
ICAgICAgICAgICBsb2FkZXItPmxvYWRBcHBsaWNhdGlvbk1hbmlmZXN0KHsgfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQog
fQogCiB2b2lkIEhUTUxMaW5rRWxlbWVudDo6Y2xlYXJTaGVldCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCAzZTRmZjllMDQ5NjRiMTZiNDI4MDkyNmNmOWUw
MzI4MDUwM2M3YmUwLi5jMmE1NzgxOTAxOWU5ZTRkNjJlODBmNjFkZjlkZTE5MDA5ZDRiMjFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTk2LDYgKzk2LDcg
QEAKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CisjaW5jbHVkZSA8d3RmL1Njb3Bl
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCkBAIC0zMzIsOSArMzMzLDEwIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0
b3BMb2FkaW5nKCkKICAgICBtX2ljb25zUGVuZGluZ0xvYWREZWNpc2lvbi5jbGVhcigpOwogICAg
IAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLSAgICBmb3IgKGF1dG8gY2FsbGJh
Y2tJZGVudGlmaWVyIDogbV9hcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVycy52YWx1ZXMoKSkKLSAg
ICAgICAgbm90aWZ5RmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdChjYWxsYmFja0lk
ZW50aWZpZXIsIHN0ZDo6bnVsbG9wdCk7Ci0gICAgbV9hcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVy
cy5jbGVhcigpOworICAgIG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRlciA9IG51bGxwdHI7Cisg
ICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IHN0ZDo6ZXhjaGFuZ2UobV9sb2FkQXBwbGljYXRpb25N
YW5pZmVzdENhbGxiYWNrcywgeyB9KSkKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsK
KyAgICBtX2ZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QgPSBmYWxzZTsKICNlbmRp
ZgogCiAgICAgLy8gQWx3YXlzIGNhbmNlbCBtdWx0aXBhcnQgbG9hZGVycwpAQCAtMTUyNywyMyAr
MTUyOSw0MSBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVhck1haW5SZXNvdXJjZUxvYWRlcigp
CiB9CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi11aW50NjRfdCBEb2N1bWVu
dExvYWRlcjo6bG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QoKQorCit2b2lkIERvY3VtZW50TG9hZGVy
Ojpsb2FkQXBwbGljYXRpb25NYW5pZmVzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBzdGF0aWMgdWludDY0X3QgbmV4dENhbGxiYWNrSUQgPSAxOworICAgIGlmIChtX2Fw
cGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIpIHsKKyAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVy
KSB7CisgICAgICAgICAgICBpZiAobV9maW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0
KQorICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fYXBwbGljYXRpb25NYW5pZmVz
dExvYWRlci0+cHJvY2Vzc01hbmlmZXN0KCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIG1fbG9hZEFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFja3MuYXBwZW5kKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQog
Ci0gICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIGJvb2wgc3VjY2Vz
cyA9IGZhbHNlOworICAgIGF1dG8gaW52b2tlQ29tcGxldGlvbkhhbmRsZXJPbkV4aXRJZkZhaWxl
ZCA9IG1ha2VTY29wZUV4aXQoWyZdIHsKKyAgICAgICAgaWYgKHN1Y2Nlc3MpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKKyAgICB9KTsKKworICAgIFJlZlB0ciBk
b2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9mcmFtZS0+aXNNYWluRnJh
bWUoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFkb2N1bWVudC0+aXNUb3BEb2N1bWVu
dCgpKQorICAgICAgICByZXR1cm47CiAKICAgICBpZiAoZG9jdW1lbnQtPnVybCgpLmlzRW1wdHko
KSB8fCBkb2N1bWVudC0+dXJsKCkucHJvdG9jb2xJc0Fib3V0KCkpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGhlYWQgPSBkb2N1bWVudC0+aGVhZCgpOwor
ICAgIFJlZlB0ciBoZWFkID0gZG9jdW1lbnQtPmhlYWQoKTsKICAgICBpZiAoIWhlYWQpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm47CiAKICAgICBVUkwgbWFuaWZlc3RVUkw7CiAg
ICAgYm9vbCB1c2VDcmVkZW50aWFscyA9IGZhbHNlOwpAQCAtMTU1NiwxOSArMTU3NiwxNiBAQCB1
aW50NjRfdCBEb2N1bWVudExvYWRlcjo6bG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QoKQogICAgIH0K
IAogICAgIGlmIChtYW5pZmVzdFVSTC5pc0VtcHR5KCkgfHwgIW1hbmlmZXN0VVJMLmlzVmFsaWQo
KSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gbWFuaWZl
c3RMb2FkZXIgPSBtYWtlVW5pcXVlPEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI+KCp0aGlzLCBt
YW5pZmVzdFVSTCwgdXNlQ3JlZGVudGlhbHMpOwotICAgIGF1dG8qIHJhd01hbmlmZXN0TG9hZGVy
ID0gbWFuaWZlc3RMb2FkZXIuZ2V0KCk7Ci0gICAgYXV0byBjYWxsYmFja0lEID0gbmV4dENhbGxi
YWNrSUQrKzsKLSAgICBtX2FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXJzLnNldChXVEZNb3ZlKG1h
bmlmZXN0TG9hZGVyKSwgY2FsbGJhY2tJRCk7CisgICAgbV9hcHBsaWNhdGlvbk1hbmlmZXN0TG9h
ZGVyID0gbWFrZVVuaXF1ZTxBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyPigqdGhpcywgbWFuaWZl
c3RVUkwsIHVzZUNyZWRlbnRpYWxzKTsKIAotICAgIGlmICghcmF3TWFuaWZlc3RMb2FkZXItPnN0
YXJ0TG9hZGluZygpKSB7Ci0gICAgICAgIG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRlcnMucmVt
b3ZlKHJhd01hbmlmZXN0TG9hZGVyKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgc3VjY2VzcyA9
IG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRlci0+c3RhcnRMb2FkaW5nKCk7CisKKyAgICBpZiAo
c3VjY2VzcykgeworICAgICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICBt
X2xvYWRBcHBsaWNhdGlvbk1hbmlmZXN0Q2FsbGJhY2tzLmFwcGVuZChXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiAgICAgfQotCi0gICAgcmV0dXJuIGNhbGxiYWNrSUQ7CiB9CiAKIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QoQXBwbGlj
YXRpb25NYW5pZmVzdExvYWRlciYgbG9hZGVyKQpAQCAtMTU3NiwxOCArMTU5MywxNyBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KEFwcGxp
Y2F0aW9uTWFuaWZlc3RMb2FkZQogICAgIC8vIElmIHRoZSBEb2N1bWVudExvYWRlciBoYXMgZGV0
YWNoZWQgZnJvbSBpdHMgZnJhbWUsIGFsbCBtYW5pZmVzdCBsb2FkcyBzaG91bGQgaGF2ZSBhbHJl
YWR5IGJlZW4gY2FuY2VsZWQuCiAgICAgQVNTRVJUKG1fZnJhbWUpOwogCi0gICAgYXV0byBjYWxs
YmFja0lkZW50aWZpZXIgPSBtX2FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXJzLmdldCgmbG9hZGVy
KTsKLSAgICBub3RpZnlGaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KGNhbGxiYWNr
SWRlbnRpZmllciwgbG9hZGVyLnByb2Nlc3NNYW5pZmVzdCgpKTsKLSAgICBtX2FwcGxpY2F0aW9u
TWFuaWZlc3RMb2FkZXJzLnJlbW92ZSgmbG9hZGVyKTsKKyAgICBBU1NFUlQoIW1fZmluaXNoZWRM
b2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCk7CisgICAgbV9maW5pc2hlZExvYWRpbmdBcHBsaWNh
dGlvbk1hbmlmZXN0ID0gdHJ1ZTsKKworICAgIEFTU0VSVF9VTlVTRUQobG9hZGVyLCAmbG9hZGVy
ID09IG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRlci5nZXQoKSk7CisgICAgYXV0byBtYW5pZmVz
dCA9IG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRlci0+cHJvY2Vzc01hbmlmZXN0KCk7CisKKyAg
ICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogc3RkOjpleGNoYW5nZShtX2xvYWRBcHBsaWNhdGlvbk1h
bmlmZXN0Q2FsbGJhY2tzLCB7IH0pKQorICAgICAgICBjYWxsYmFjayhtYW5pZmVzdCk7CiB9CiAK
LXZvaWQgRG9jdW1lbnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFu
aWZlc3QodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0
aW9uTWFuaWZlc3Q+IG1hbmlmZXN0KQotewotICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxiYWNrSWRl
bnRpZmllcik7Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9mcmFtZSk7Ci0gICAgbV9mcmFtZS0+bG9h
ZGVyKCkuY2xpZW50KCkuZmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdChjYWxsYmFj
a0lkZW50aWZpZXIsIG1hbmlmZXN0KTsKLX0KLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShBUFBM
SUNBVElPTl9NQU5JRkVTVCkKIAogYm9vbCBEb2N1bWVudExvYWRlcjo6aXNMb2FkaW5nSW5BUElT
ZW5zZSgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4
IGQ4ZmYxZGEzYmQ2NDA2YzVkNzY0ODc2YWFkNDliYmQwMDRhYzE3NzAuLjZkN2M0MmFmM2RmZTE1
MWI0MGMxZTczMDk1NjkxNmY1MzA0MmRlMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oCkBAIC0zOTMsNyArMzkzLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxM
aW5rSWNvbj4mIGxpbmtJY29ucygpIGNvbnN0IHsgcmV0dXJuIG1fbGlua0ljb25zOyB9CiAKICNp
ZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi0gICAgV0VCQ09SRV9FWFBPUlQgdWludDY0
X3QgbG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxv
YWRBcHBsaWNhdGlvbk1hbmlmZXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpv
cHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0PiYpPiYmKTsKICAgICB2b2lkIGZpbmlzaGVkTG9h
ZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QoQXBwbGljYXRpb25NYW5pZmVzdExvYWRlciYpOwogI2Vu
ZGlmCiAKQEAgLTUxMSwxMCArNTExLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNhbmNlbFBvbGlj
eUNoZWNrSWZOZWVkZWQoKTsKICAgICB2b2lkIGJlY29tZU1haW5SZXNvdXJjZUNsaWVudCgpOwog
Ci0jaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQotICAgIHZvaWQgbm90aWZ5RmluaXNo
ZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIs
IHN0ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVzdD4pOwotI2VuZGlmCi0KICAgICAvLyBD
b250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiwg
dW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZW5kQ1NQVmlvbGF0aW9uUmVwb3J0KFVSTCYmLCBSZWY8Rm9ybURhdGE+JiYpIGZp
bmFsOwpAQCAtNjE2LDcgKzYxMiw5IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPExpbmtJY29uPiBt
X2xpbmtJY29uczsKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLSAgICBIYXNo
TWFwPHN0ZDo6dW5pcXVlX3B0cjxBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyPiwgdWludDY0X3Q+
IG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRlcnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFwcGxp
Y2F0aW9uTWFuaWZlc3RMb2FkZXI+IG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRlcjsKKyAgICBW
ZWN0b3I8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0
aW9uTWFuaWZlc3Q+Jik+PiBtX2xvYWRBcHBsaWNhdGlvbk1hbmlmZXN0Q2FsbGJhY2tzOworICAg
IGJvb2wgbV9maW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0IHsgZmFsc2UgfTsKICNl
bmRpZgogCiAgICAgVmVjdG9yPEN1c3RvbUhlYWRlckZpZWxkcz4gbV9jdXN0b21IZWFkZXJGaWVs
ZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0MGJlNjFjMjBmY2I4ZDNh
ZjcxMDNmYWNjMzczYTIwYzkxNjYzMzA5Li5hZjEwOTM1YWMxNmU2MWJjMmQ5YmZlM2Y3Mzc2ZjUy
YTljNWZkNmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTE5MjcsMTcg
KzE5MjcsNiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRDcmVhdGVXaW5kb3coRE9N
V2luZG93JiB3aW5kb3cpCiAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRDcmVhdGVXaW5kb3cobV9mcmFtZS0+ZnJhbWVJRCgpLCB3aW5kb3cuaWRlbnRpZmllcigp
KSk7CiB9CiAKLSNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi12b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KHVpbnQ2NF90
IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNh
dGlvbk1hbmlmZXN0PiYgbWFuaWZlc3QpCi17Ci0gICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJh
bWUtPnBhZ2UoKTsKLSAgICBpZiAoIXdlYlBhZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIHdl
YlBhZ2UtPmRpZEZpbmlzaExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KGNhbGxiYWNrSWRlbnRp
ZmllciwgbWFuaWZlc3QpOwotfQotI2VuZGlmIC8vIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVT
VCkKLQogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKIGJvb2wgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpIGNvbnN0
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGFhM2E4NjAxNzU3MjY1NDEzODUy
YTRiOWU4OTU2NGJiNGQxYTNmM2IuLmQxNjlkNGFjN2QyYjE2NTMzODgxNjkzZWU5NjdiZDgzOTNi
OWNiN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yNzAsMTAgKzI3MCw2IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGRpZENyZWF0ZVdpbmRvdyhXZWJDb3JlOjpET01XaW5kb3cm
KSBmaW5hbDsKIAotI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLSAgICB2b2lkIGZp
bmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QodWludDY0X3QsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mKSBmaW5hbDsKLSNlbmRpZgotCiAg
ICAgUmVmPFdlYkZyYW1lPiBtX2ZyYW1lOwogICAgIFJlZlB0cjxQbHVnaW5WaWV3PiBtX3BsdWdp
blZpZXc7CiAgICAgYm9vbCBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luVmlldyB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDRl
NGJiY2ZiYmNkYWVlYTBiMTI1ZjdiMGQ4ZTYzZjBkZmU4MjNhZjcuLjRhM2ZkMGQyM2YyYzJiNzlk
MjIxYTE5ZTE4MDZlMjVkZjQzZTMwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xMDQ4LDEzICsxMDQ4LDYgQEAgV2ViUGFnZTo6fldlYlBh
Z2UoKQogCiAgICAgZm9yIChhdXRvJiBjb21wbGV0aW9uSGFuZGxlciA6IHN0ZDo6ZXhjaGFuZ2Uo
bV9tYXJrTGF5ZXJzQXNWb2xhdGlsZUNvbXBsZXRpb25IYW5kbGVycywgeyB9KSkKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgIAotI2lmIEVOQUJMRShBUFBMSUNBVElPTl9N
QU5JRkVTVCkKLSAgICBmb3IgKGF1dG8mIGNvbXBsZXRpb25IYW5kbGVyIDogbV9hcHBsaWNhdGlv
bk1hbmlmZXN0RmV0Y2hDYWxsYmFja01hcC52YWx1ZXMoKSkgewotICAgICAgICBpZiAoY29tcGxl
dGlvbkhhbmRsZXIpCi0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQp
OwotICAgIH0KLSNlbmRpZgogfQogCiBJUEM6OkNvbm5lY3Rpb24qIFdlYlBhZ2U6Om1lc3NhZ2VT
ZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKQEAgLTcxODksMjUgKzcxODIsMTcgQEAgUmVmUHRyPEhU
TUxBdHRhY2htZW50RWxlbWVudD4gV2ViUGFnZTo6YXR0YWNobWVudEVsZW1lbnRXaXRoSWRlbnRp
Zmllcihjb25zdCBTdHIKICNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCiAj
aWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQorCiB2b2lkIFdlYlBhZ2U6OmdldEFwcGxp
Y2F0aW9uTWFuaWZlc3QoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgRG9jdW1lbnQqIG1haW5GcmFtZURvY3VtZW50ID0gbV9tYWluRnJhbWUtPmNvcmVGcmFt
ZSgpLT5kb2N1bWVudCgpOwotICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBtYWluRnJhbWVE
b2N1bWVudCA/IG1haW5GcmFtZURvY3VtZW50LT5sb2FkZXIoKSA6IG51bGxwdHI7Ci0gICAgaWYg
KCFsb2FkZXIpCisgICAgUmVmUHRyIG1haW5GcmFtZURvY3VtZW50ID0gbV9tYWluRnJhbWUtPmNv
cmVGcmFtZSgpLT5kb2N1bWVudCgpOworICAgIFJlZlB0ciBtYWluRG9jdW1lbnRMb2FkZXIgPSBt
YWluRnJhbWVEb2N1bWVudCA/IG1haW5GcmFtZURvY3VtZW50LT5sb2FkZXIoKSA6IG51bGxwdHI7
CisgICAgaWYgKCFtYWluRG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihzdGQ6Om51bGxvcHQpOwogCi0gICAgYXV0byBjb3JlQ2FsbGJhY2tJRCA9IGxvYWRl
ci0+bG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QoKTsKLSAgICBpZiAoIWNvcmVDYWxsYmFja0lEKQot
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKLQotICAgIG1f
YXBwbGljYXRpb25NYW5pZmVzdEZldGNoQ2FsbGJhY2tNYXAuYWRkKGNvcmVDYWxsYmFja0lELCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgbWFpbkRvY3VtZW50TG9hZGVyLT5sb2Fk
QXBwbGljYXRpb25NYW5pZmVzdChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZv
aWQgV2ViUGFnZTo6ZGlkRmluaXNoTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QodWludDY0X3Qg
Y29yZUNhbGxiYWNrSUQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25N
YW5pZmVzdD4mIG1hbmlmZXN0KQotewotICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9hcHBsaWNh
dGlvbk1hbmlmZXN0RmV0Y2hDYWxsYmFja01hcC50YWtlKGNvcmVDYWxsYmFja0lEKSkKLSAgICAg
ICAgY2FsbGJhY2sobWFuaWZlc3QpOwotfQogI2VuZGlmIC8vIEVOQUJMRShBUFBMSUNBVElPTl9N
QU5JRkVTVCkKIAogdm9pZCBXZWJQYWdlOjp1cGRhdGVDdXJyZW50TW9kaWZpZXJTdGF0ZShPcHRp
b25TZXQ8UGxhdGZvcm1FdmVudDo6TW9kaWZpZXI+IG1vZGlmaWVycykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA3OGQ4MzBkYTQyZDk1NjdjZGY5NWNm
YTFmZTMyNzMzMDJmZjNiMjFjLi5kNmRmYzE4Nzk3YjcxNGJmYjBkMjFhZjVjNzllMTBlNWIzMGMx
Njk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0x
MjkyLDcgKzEyOTIsNiBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZF
U1QpCiAgICAgdm9pZCBnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYpPiYm
KTsKLSAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KHVpbnQ2NF90
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+Jik7CiAj
ZW5kaWYKIAogI2lmIFVTRShXUEVfUkVOREVSRVIpCkBAIC0yMzEwLDEwICsyMzA5LDYgQEAgcHJp
dmF0ZToKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoYm9vbCBncmFudGVk
KT4+IG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2FsbGJhY2tNYXA7CiAKLSNpZiBFTkFCTEUoQVBQ
TElDQVRJT05fTUFOSUZFU1QpCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+
Jik+PiBtX2FwcGxpY2F0aW9uTWFuaWZlc3RGZXRjaENhbGxiYWNrTWFwOwotI2VuZGlmCi0KICAg
ICBPcHRpb25TZXQ8TGF5ZXJUcmVlRnJlZXplUmVhc29uPiBtX2xheWVyVHJlZUZyZWV6ZVJlYXNv
bnM7CiAgICAgYm9vbCBtX2lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fbmVlZHNG
b250QXR0cmlidXRlcyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggZmVmMWJkYTNlMzk4OGRmYzQzOGRkYzU1MTYwYzQxNDMyMGM2
ODRhZi4uOWJhYWE5MDM4ZjEwMzM4ZDE4N2Q3ZjM2OGFjMzFhMDI3NzhjNzkxMSAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDIxLTA4LTEyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAg
ICBbV2ViIEFwcCBNYW5pZmVzdF0gQWx3YXlzIGZldGNoIHRoZSBmaXJzdCBtYW5pZmVzdCBpZiBw
cm92aWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI5MDU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcGxpY2F0aW9uTWFuaWZlc3QubW06
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNULkFwcGxpY2F0aW9uTWFuaWZlc3QuQWx3YXlz
RmV0Y2gpOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QuQXBwbGljYXRpb25N
YW5pZmVzdC5Pbmx5Rmlyc3RNYW5pZmVzdCk6IEFkZGVkLgorCiAyMDIxLTA4LTEyICBQYXRyaWNr
IEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgbXlzZWxmIChQYXRyaWNr
IEFuZ2xlKSB0byB3YXRjaGxpc3QgZm9yIEluc3BlY3RvciBjb2RlIGNoYW5nZXMKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwbGljYXRpb25NYW5p
ZmVzdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwbGljYXRp
b25NYW5pZmVzdC5tbQppbmRleCBhMjQ3M2I2MmIwZmVmNDk2ZmYzMWNhMjIxNzQ1NjE1YTRhMmMy
MGZiLi5iYmI3OWExNmQ5MTRhZjA1MmM3YzliYTYxYWM3NWM3ZWNkMTlkMzg2IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcGxpY2F0aW9uTWFuaWZl
c3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBsaWNh
dGlvbk1hbmlmZXN0Lm1tCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKIAogY29uc3RleHByIENHRmxvYXQgcmVkQ29sb3JDb21wb25lbnRzWzRdID0geyAxLCAwLCAw
LCAxIH07CiAKLVRFU1QoV2ViS2l0LCBBcHBsaWNhdGlvbk1hbmlmZXN0Q29kaW5nKQorVEVTVChB
cHBsaWNhdGlvbk1hbmlmZXN0LCBDb2RpbmcpCiB7CiAgICAgYXV0byBqc29uU3RyaW5nID0gQCJ7
IFwibmFtZVwiOiBcIlRlc3ROYW1lXCIsIFwic2hvcnRfbmFtZVwiOiBcIlRlc3RTaG9ydE5hbWVc
IiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3REZXNjcmlwdGlvblwiLCBcInNjb3BlXCI6IFwiaHR0
cHM6Ly90ZXN0LmNvbS9hcHBcIiwgXCJzdGFydF91cmxcIjogXCJodHRwczovL3Rlc3QuY29tL2Fw
cC9pbmRleC5odG1sXCIsIFwiZGlzcGxheVwiOiBcIm1pbmltYWwtdWlcIiwgXCJ0aGVtZV9jb2xv
clwiOiBcInJlZFwiIH0iOwogICAgIFJldGFpblB0cjxfV0tBcHBsaWNhdGlvbk1hbmlmZXN0PiBt
YW5pZmVzdCB7IFtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGFwcGxpY2F0aW9uTWFuaWZlc3RGcm9t
SlNPTjpqc29uU3RyaW5nIG1hbmlmZXN0VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6
Ly90ZXN0LmNvbS9tYW5pZmVzdC5qc29uIl0gZG9jdW1lbnRVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJodHRwczovL3Rlc3QuY29tLyJdXSB9OwpAQCAtNjAsNyArNjAsNyBAQCBURVNUKFdlYktp
dCwgQXBwbGljYXRpb25NYW5pZmVzdENvZGluZykKICAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1
YWxUb0NvbG9yKG1hbmlmZXN0LmdldCgpLnRoZW1lQ29sb3IuQ0dDb2xvciwgcmVkQ29sb3IuZ2V0
KCkpKTsKIH0KIAotVEVTVChXZWJLaXQsIEFwcGxpY2F0aW9uTWFuaWZlc3RCYXNpYykKK1RFU1Qo
QXBwbGljYXRpb25NYW5pZmVzdCwgQmFzaWMpCiB7CiAgICAgc3RhdGljIGJvb2wgZG9uZSA9IGZh
bHNlOwogCkBAIC0xMTcsNyArMTE3LDcgQEAgVEVTVChXZWJLaXQsIEFwcGxpY2F0aW9uTWFuaWZl
c3RCYXNpYykKICAgICBVdGlsOjpydW4oJmRvbmUpOwogfQogCi1URVNUKFdlYktpdCwgQXBwbGlj
YXRpb25NYW5pZmVzdERpc3BsYXlNb2RlKQorVEVTVChBcHBsaWNhdGlvbk1hbmlmZXN0LCBEaXNw
bGF5TW9kZSkKIHsKICAgICBzdGF0aWMgYm9vbCBkb25lOwogICAgIE5TRGljdGlvbmFyeSAqZGlz
cGxheU1vZGVzQW5kRXhwZWN0ZWRDb250ZW50ID0gQHsKQEAgLTE0OSw2ICsxNDksNTcgQEAgVEVT
VChXZWJLaXQsIEFwcGxpY2F0aW9uTWFuaWZlc3REaXNwbGF5TW9kZSkKICAgICB9XTsKIH0KIAor
VEVTVChBcHBsaWNhdGlvbk1hbmlmZXN0LCBBbHdheXNGZXRjaCkKK3sKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9S
ZWN0XSk7CisKKyAgICBOU0RpY3Rpb25hcnkgKm1hbmlmZXN0T2JqZWN0ID0gQHsgQCJ0aGVtZV9j
b2xvciI6IEAicmVkIiB9OworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmlu
ZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxsaW5rIHJlbD1cIm1hbmlmZXN0XCIgaHJl
Zj1cImRhdGE6YXBwbGljYXRpb24vbWFuaWZlc3QranNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCwl
QFwiPiIsIFtbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6bWFuaWZlc3RP
YmplY3Qgb3B0aW9uczowIGVycm9yOm5pbF0gYmFzZTY0RW5jb2RlZFN0cmluZ1dpdGhPcHRpb25z
OjBdXV07CisKKyAgICB7CisgICAgICAgIGF1dG8gc1JHQkNvbG9yU3BhY2UgPSBhZG9wdENGKENH
Q29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7CisgICAgICAgIGF1
dG8gcmVkQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCks
IHJlZENvbG9yQ29tcG9uZW50cykpOworICAgICAgICB3aGlsZSAoIUNHQ29sb3JFcXVhbFRvQ29s
b3IoW3dlYlZpZXcgdGhlbWVDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKQorICAgICAg
ICAgICAgVXRpbDo6c2xlZXAoMSk7CisgICAgfQorCisgICAgX19ibG9jayBib29sIGRvbmUgPSBm
YWxzZTsKKyAgICBbd2ViVmlldyBfZ2V0QXBwbGljYXRpb25NYW5pZmVzdFdpdGhDb21wbGV0aW9u
SGFuZGxlcjpeKF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QgKm1hbmlmZXN0KSB7CisgICAgICAgIGF1
dG8gc1JHQkNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtD
R0NvbG9yU3BhY2VTUkdCKSk7CisgICAgICAgIGF1dG8gcmVkQ29sb3IgPSBhZG9wdENGKENHQ29s
b3JDcmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCksIHJlZENvbG9yQ29tcG9uZW50cykpOworICAg
ICAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKG1hbmlmZXN0LnRoZW1lQ29sb3Iu
Q0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKTsKKworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9
XTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworfQorCitURVNUKEFwcGxpY2F0aW9uTWFuaWZlc3Qs
IE9ubHlGaXJzdE1hbmlmZXN0KQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdKTsKKworICAgIE5TRGlj
dGlvbmFyeSAqbWFuaWZlc3RPYmplY3QxID0gQHsgQCJ0aGVtZV9jb2xvciI6IEAicmVkIiB9Owor
ICAgIE5TRGljdGlvbmFyeSAqbWFuaWZlc3RPYmplY3QyID0gQHsgQCJ0aGVtZV9jb2xvciI6IEAi
Ymx1ZSIgfTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8bGluayByZWw9XCJtYW5pZmVzdFwiIGhyZWY9XCJkYXRh
OmFwcGxpY2F0aW9uL21hbmlmZXN0K2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsJUBcIj48bGlu
ayByZWw9XCJtYW5pZmVzdFwiIGhyZWY9XCJkYXRhOmFwcGxpY2F0aW9uL21hbmlmZXN0K2pzb247
Y2hhcnNldD11dGYtODtiYXNlNjQsJUBcIj4iLCBbW05TSlNPTlNlcmlhbGl6YXRpb24gZGF0YVdp
dGhKU09OT2JqZWN0Om1hbmlmZXN0T2JqZWN0MSBvcHRpb25zOjAgZXJyb3I6bmlsXSBiYXNlNjRF
bmNvZGVkU3RyaW5nV2l0aE9wdGlvbnM6MF0sIFtbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0
aEpTT05PYmplY3Q6bWFuaWZlc3RPYmplY3QyIG9wdGlvbnM6MCBlcnJvcjpuaWxdIGJhc2U2NEVu
Y29kZWRTdHJpbmdXaXRoT3B0aW9uczowXV1dOworCisgICAgeworICAgICAgICBhdXRvIHNSR0JD
b2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNw
YWNlU1JHQikpOworICAgICAgICBhdXRvIHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRl
KHNSR0JDb2xvclNwYWNlLmdldCgpLCByZWRDb2xvckNvbXBvbmVudHMpKTsKKyAgICAgICAgd2hp
bGUgKCFDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHRoZW1lQ29sb3JdLkNHQ29sb3IsIHJl
ZENvbG9yLmdldCgpKSkKKyAgICAgICAgICAgIFV0aWw6OnNsZWVwKDEpOworICAgIH0KKworICAg
IF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2dldEFwcGxpY2F0aW9u
TWFuaWZlc3RXaXRoQ29tcGxldGlvbkhhbmRsZXI6XihfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICpt
YW5pZmVzdCkgeworICAgICAgICBhdXRvIHNSR0JDb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9y
U3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOworICAgICAgICBhdXRvIHJl
ZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCByZWRD
b2xvckNvbXBvbmVudHMpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xv
cihtYW5pZmVzdC50aGVtZUNvbG9yLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSk7CisKKyAgICAg
ICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCiAjZW5kaWYgLy8gRU5BQkxFKEFQUExJQ0FUSU9O
X01BTklGRVNUKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435634</attachid>
            <date>2021-08-16 15:39:54 -0700</date>
            <delta_ts>2021-09-02 15:49:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229059-20210816153953.patch</filename>
            <type>text/plain</type>
            <size>31955</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5OWI4ZWI0MTUwY2E5MWYxMGJiNGQ0Njc2OGYwMjFiZTZkYjMzNDU1Li45
OTJhNTk1NzFkN2IwYzJkMjU2MmU2MGQzOGY0MDZlNzk4NDZhOGM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzggQEAKKzIwMjEtMDgtMTYgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFtXZWIgQXBwIE1hbmlmZXN0XSBBbHdheXMgZmV0Y2ggdGhlIGZpcnN0IG1h
bmlmZXN0IGlmIHByb3ZpZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjkwNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaCwgV2ViS2l0IG9ubHkgZmV0Y2hlZC9wYXJzZWQv
YXBwbGllZC9ldGMuIHRoZSB3ZWIgYXBwIG1hbmlmZXN0IHdoZW4KKyAgICAgICAgYC1bV0tXZWJW
aWV3IF9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOl1gIHdhcyBj
YWxsZWQuIFRoaXMgcGF0Y2ggbWFrZXMKKyAgICAgICAgV2ViS2l0IGRvIGFsbCB0aGF0IGFzIHNv
b24gYXMgYSBgPGxpbmsgcmVsPSJtYW5pZmVzdCI+YCAod2l0aCBhIHZhbGlkIFVSTCkgaXMgZW5j
b3VudGVyZWQuCisgICAgICAgIFRoaXMgYWxsb3dzIG1hbmlmZXN0cyB0aGF0IGhhdmUgc3BlY2lm
aWVkIGEgYCJ0aGVtZV9jb2xvciJgIHRvIGFjdHVhbGx5IGhhdmUgYW4gZWZmZWN0LgorCisgICAg
ICAgIFRlc3RzOiBBcHBsaWNhdGlvbk1hbmlmZXN0LkFsd2F5c0ZldGNoCisgICAgICAgICAgICAg
ICBBcHBsaWNhdGlvbk1hbmlmZXN0Lk9ubHlGaXJzdE1hbmlmZXN0CisgICAgICAgICAgICAgICBB
cHBsaWNhdGlvbk1hbmlmZXN0Lk5vTWFuaWZlc3QKKyAgICAgICAgICAgICAgIEFwcGxpY2F0aW9u
TWFuaWZlc3QuTWVkaWFBdHRyaXV0ZQorICAgICAgICAgICAgICAgQXBwbGljYXRpb25NYW5pZmVz
dC5Eb2VzTm90RXhpc3QKKyAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uTWFuaWZlc3QuQmxvY2tl
ZAorCisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKToKKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVu
dExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OmxvYWRBcHBsaWNhdGlvbk1hbmlmZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZExvYWRp
bmdBcHBsaWNhdGlvbk1hbmlmZXN0KTogRGVsZXRlZC4KKyAgICAgICAgU2ltcGxpZnkgdGhlIHdh
eSB0aGF0IHRoZSBVSVByb2Nlc3MgY29tbXVuaWNhdGVzIHdpdGggdGhlIFdlYlByb2Nlc3MgKGFu
ZCBiZXR3ZWVuIFdlYktpdCBhbmQKKyAgICAgICAgV2ViQ29yZSkuIFRoZXJlJ3Mgbm8gbmVlZCB0
byBoYXZlIGEgYEhhc2hNYXBgIG9mIGNhbGxiYWNrcyBzaW5jZSBlYWNoIGRvY3VtZW50IGNhbiBv
bmx5IGhhdmUKKyAgICAgICAgYXQgbW9zdCBvbmUgd2ViIGFwcCBtYW5pZmVzdC4gRnVydGhlcm1v
cmUsIGluc3RlYWQgb2YgaGF2aW5nIGEgYEhhc2hNYXBgIGluIGJvdGggV2ViS2l0IGFuZAorICAg
ICAgICBXZWJDb3JlLCBqdXN0IHBhc3MgYWxvbmcgdGhlIGBDb21wbGV0aW9uSGFuZGxlcmAgdG8g
dGhlIGBEb2N1bWVudExvYWRlcmAgZm9yIGEgc2luZ2xlIGxpc3QKKyAgICAgICAgb2YgY29tcGxl
dGlvbiBjYWxsYmFja3MgKGEgbGlzdCBpcyBuZWVkZWQgYmVjYXVzZSBpdCdzIHBvc3NpYmxlIGZv
ciBhIGNsaWVudCB0byBpbnZva2UKKyAgICAgICAgYC1bV0tXZWJWaWV3IF9nZXRBcHBsaWNhdGlv
bk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOl1gIG11bHRpcGxlIHRpbWVzKS4KKwogMjAy
MS0wOC0xMiAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFRo
cmVhZFNhbml0aXplcjogZGF0YSByYWNlIGluIFdlYkNvcmU6OkNBUmluZ0J1ZmZlclN0b3JhZ2VW
ZWN0b3I6OnNldEN1cnJlbnRGcmFtZUJvdW5kcygpIC8gZ2V0Q3VycmVudEZyYW1lQm91bmRzKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYjdlM2FiNzE0YWI3ZjEzMWZhOTdjZWZiZjgwZGZkNDI0NGFkMmI4Yi4uOTJm
ZThmNzc5MGViZmQ2OTk2M2M2ZjE2ZmVkZTllYzJmNWE3N2ZhMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzMCBAQAorMjAyMS0wOC0xNiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisK
KyAgICAgICAgW1dlYiBBcHAgTWFuaWZlc3RdIEFsd2F5cyBmZXRjaCB0aGUgZmlyc3QgbWFuaWZl
c3QgaWYgcHJvdmlkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyOTA1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEJlZm9yZSB0aGlzIHBhdGNoLCBXZWJLaXQgb25seSBmZXRjaGVkL3BhcnNlZC9hcHBs
aWVkL2V0Yy4gdGhlIHdlYiBhcHAgbWFuaWZlc3Qgd2hlbgorICAgICAgICBgLVtXS1dlYlZpZXcg
X2dldEFwcGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxldGlvbkhhbmRsZXI6XWAgd2FzIGNhbGxl
ZC4gVGhpcyBwYXRjaCBtYWtlcworICAgICAgICBXZWJLaXQgZG8gYWxsIHRoYXQgYXMgc29vbiBh
cyBhIGA8bGluayByZWw9Im1hbmlmZXN0Ij5gICh3aXRoIGEgdmFsaWQgVVJMKSBpcyBlbmNvdW50
ZXJlZC4KKyAgICAgICAgVGhpcyBhbGxvd3MgbWFuaWZlc3RzIHRoYXQgaGF2ZSBzcGVjaWZpZWQg
YSBgInRoZW1lX2NvbG9yImAgdG8gYWN0dWFsbHkgaGF2ZSBhbiBlZmZlY3QuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdB
cHBsaWNhdGlvbk1hbmlmZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6fldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6ZGlkRmluaXNoTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAgICBTaW1wbGlm
eSB0aGUgd2F5IHRoYXQgdGhlIFVJUHJvY2VzcyBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgV2ViUHJv
Y2VzcyAoYW5kIGJldHdlZW4gV2ViS2l0IGFuZAorICAgICAgICBXZWJDb3JlKS4gVGhlcmUncyBu
byBuZWVkIHRvIGhhdmUgYSBgSGFzaE1hcGAgb2YgY2FsbGJhY2tzIHNpbmNlIGVhY2ggZG9jdW1l
bnQgY2FuIG9ubHkgaGF2ZQorICAgICAgICBhdCBtb3N0IG9uZSB3ZWIgYXBwIG1hbmlmZXN0LiBG
dXJ0aGVybW9yZSwgaW5zdGVhZCBvZiBoYXZpbmcgYSBgSGFzaE1hcGAgaW4gYm90aCBXZWJLaXQg
YW5kCisgICAgICAgIFdlYkNvcmUsIGp1c3QgcGFzcyBhbG9uZyB0aGUgYENvbXBsZXRpb25IYW5k
bGVyYCB0byB0aGUgYERvY3VtZW50TG9hZGVyYCBmb3IgYSBzaW5nbGUgbGlzdAorICAgICAgICBv
ZiBjb21wbGV0aW9uIGNhbGxiYWNrcyAoYSBsaXN0IGlzIG5lZWRlZCBiZWNhdXNlIGl0J3MgcG9z
c2libGUgZm9yIGEgY2xpZW50IHRvIGludm9rZQorICAgICAgICBgLVtXS1dlYlZpZXcgX2dldEFw
cGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxldGlvbkhhbmRsZXI6XWAgbXVsdGlwbGUgdGltZXMp
LgorCiAyMDIxLTA4LTEyICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CiAgICAgICAgIFsgaU9TIERlYnVnXSAzIGVkaXRpbmcvcGFzdGVib2FyZC9zbWFydC1wYXN0ZS1w
YXJhZ3JhcGggdGVzdHMgYXJlIGZsYWt5IGZhaWxpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExp
bmtFbGVtZW50LmNwcAppbmRleCA3OGE5ZDgzODkzZjZiMTQyZjBjYWIwYmFhMzRhZjhkYTAzNWY0
MTY1Li41OTYyOTNjNjZlMDg0YTAzOTYzMjI0ZTIzYTc5NzBhN2VjZjFjZWZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSAiRE9NVG9rZW5MaXN0LmgiCiAjaW5jbHVkZSAiRGVmYXVsdFJlc291cmNlTG9hZFByaW9yaXR5
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgog
I2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV2
ZW50U2VuZGVyLmgiCkBAIC0zMDUsMTkgKzMwNiw5IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpw
cm9jZXNzKCkKIAogICAgICAgICBtX2xvYWRpbmcgPSB0cnVlOwogCi0gICAgICAgIGJvb2wgbWVk
aWFRdWVyeU1hdGNoZXMgPSB0cnVlOwotICAgICAgICBpZiAoIW1fbWVkaWEuaXNFbXB0eSgpKSB7
Ci0gICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlclN0eWxlPiBkb2N1bWVudFN0eWxlOwot
ICAgICAgICAgICAgaWYgKGRvY3VtZW50KCkuaGFzTGl2aW5nUmVuZGVyVHJlZSgpKQotICAgICAg
ICAgICAgICAgIGRvY3VtZW50U3R5bGUgPSBTdHlsZTo6cmVzb2x2ZUZvckRvY3VtZW50KGRvY3Vt
ZW50KCkpOwotICAgICAgICAgICAgYXV0byBtZWRpYSA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZSht
X21lZGlhLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChkb2N1bWVudCgpKSk7Ci0gICAgICAgICAg
ICBMT0coTWVkaWFRdWVyaWVzLCAiSFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzIGV2YWx1YXRpbmcg
cXVlcmllcyIpOwotICAgICAgICAgICAgbWVkaWFRdWVyeU1hdGNoZXMgPSBNZWRpYVF1ZXJ5RXZh
bHVhdG9yIHsgZG9jdW1lbnQoKS5mcmFtZSgpLT52aWV3KCktPm1lZGlhVHlwZSgpLCBkb2N1bWVu
dCgpLCBkb2N1bWVudFN0eWxlID8gJipkb2N1bWVudFN0eWxlIDogbnVsbHB0ciB9LmV2YWx1YXRl
KG1lZGlhLmdldCgpKTsKLSAgICAgICAgfQotCiAgICAgICAgIC8vIERvbid0IGhvbGQgdXAgcmVu
ZGVyIHRyZWUgY29uc3RydWN0aW9uIGFuZCBzY3JpcHQgZXhlY3V0aW9uIG9uIHN0eWxlc2hlZXRz
CiAgICAgICAgIC8vIHRoYXQgYXJlIG5vdCBuZWVkZWQgZm9yIHRoZSByZW5kZXJpbmcgYXQgdGhl
IG1vbWVudC4KLSAgICAgICAgYm9vbCBpc0FjdGl2ZSA9IG1lZGlhUXVlcnlNYXRjaGVzICYmICFp
c0FsdGVybmF0ZSgpOworICAgICAgICBib29sIGlzQWN0aXZlID0gbWVkaWFBdHRyaWJ1dGVNYXRj
aGVzKCkgJiYgIWlzQWx0ZXJuYXRlKCk7CiAgICAgICAgIGFkZFBlbmRpbmdTaGVldChpc0FjdGl2
ZSA/IEFjdGl2ZVNoZWV0IDogSW5hY3RpdmVTaGVldCk7CiAKICAgICAgICAgLy8gTG9hZCBzdHls
ZXNoZWV0cyB0aGF0IGFyZSBub3QgbmVlZGVkIGZvciB0aGUgcmVuZGVyaW5nIGltbWVkaWF0ZWx5
IHdpdGggbG93IHByaW9yaXR5LgpAQCAtMzUxLDExICszNDIsMjQgQEAgdm9pZCBIVE1MTGlua0Vs
ZW1lbnQ6OnByb2Nlc3MoKQogICAgICAgICAgICAgc2hlZXRMb2FkZWQoKTsKICAgICAgICAgICAg
IG5vdGlmeUxvYWRlZFNoZWV0QW5kQWxsQ3JpdGljYWxTdWJyZXNvdXJjZXModHJ1ZSk7CiAgICAg
ICAgIH0KLSAgICB9IGVsc2UgaWYgKG1fc2hlZXQpIHsKKworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKG1fc2hlZXQpIHsKICAgICAgICAgLy8gd2Ugbm8gbG9uZ2VyIGNvbnRhaW4g
YSBzdHlsZXNoZWV0LCBlLmcuIHBlcmhhcHMgcmVsIG9yIHR5cGUgd2FzIGNoYW5nZWQKICAgICAg
ICAgY2xlYXJTaGVldCgpOwogICAgICAgICBtX3N0eWxlU2NvcGUtPmRpZENoYW5nZUFjdGl2ZVN0
eWxlU2hlZXRDYW5kaWRhdGVzKCk7CisgICAgICAgIHJldHVybjsKICAgICB9CisKKyNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCisgICAgaWYgKGlzQXBwbGljYXRpb25NYW5pZmVzdCgp
KSB7CisgICAgICAgIGlmIChSZWZQdHIgbG9hZGVyID0gZG9jdW1lbnQoKS5sb2FkZXIoKSkKKyAg
ICAgICAgICAgIGxvYWRlci0+bG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QoeyB9KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiB9
CiAKIHZvaWQgSFRNTExpbmtFbGVtZW50OjpjbGVhclNoZWV0KCkKQEAgLTQ5OSw2ICs1MDMsMTgg
QEAgRE9NVG9rZW5MaXN0JiBIVE1MTGlua0VsZW1lbnQ6OnNpemVzKCkKICAgICByZXR1cm4gKm1f
c2l6ZXM7CiB9CiAKK2Jvb2wgSFRNTExpbmtFbGVtZW50OjptZWRpYUF0dHJpYnV0ZU1hdGNoZXMo
KSBjb25zdAoreworICAgIGlmIChtX21lZGlhLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlclN0eWxlPiBkb2N1bWVudFN0eWxlOworICAg
IGlmIChkb2N1bWVudCgpLmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKKyAgICAgICAgZG9jdW1lbnRT
dHlsZSA9IFN0eWxlOjpyZXNvbHZlRm9yRG9jdW1lbnQoZG9jdW1lbnQoKSk7CisgICAgYXV0byBt
ZWRpYSA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShtX21lZGlhLCBNZWRpYVF1ZXJ5UGFyc2VyQ29u
dGV4dChkb2N1bWVudCgpKSk7CisgICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3IoZG9jdW1l
bnQoKS5mcmFtZSgpLT52aWV3KCktPm1lZGlhVHlwZSgpLCBkb2N1bWVudCgpLCBkb2N1bWVudFN0
eWxlID8gJipkb2N1bWVudFN0eWxlIDogbnVsbHB0cikuZXZhbHVhdGUobWVkaWEuZ2V0KCkpOwor
fQorCiB2b2lkIEhUTUxMaW5rRWxlbWVudDo6bGlua0xvYWRlZCgpCiB7CiAgICAgbV9sb2FkZWRS
ZXNvdXJjZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5r
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAppbmRleCAy
NjRmOTRhMTkxMDNhNTRjNjcyODY0YTljNzY1NjU2MDA4YmRmODMyLi5kYTNiZTViOTAyNGI3YmEx
MWQwZDU4ZmM0NzdmODZiMDkyNGIzY2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVt
ZW50LmgKQEAgLTY1LDYgKzY1LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNFbmFibGVkVmlhU2Ny
aXB0KCkgY29uc3QgeyByZXR1cm4gbV9kaXNhYmxlZFN0YXRlID09IEVuYWJsZWRWaWFTY3JpcHQ7
IH0KICAgICBET01Ub2tlbkxpc3QmIHNpemVzKCk7CiAKKyAgICBib29sIG1lZGlhQXR0cmlidXRl
TWF0Y2hlcygpIGNvbnN0OworCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDcm9zc09yaWdp
bihjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNyb3NzT3Jp
Z2luKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcyhjb25zdCBBdG9tU3Ry
aW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCAzZTRm
ZjllMDQ5NjRiMTZiNDI4MDkyNmNmOWUwMzI4MDUwM2M3YmUwLi4wNjRhZTYxYTAxM2VmYjdjNmUz
MTI5ODAyZTQzZDM4N2MwZjI2ODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAKQEAgLTk2LDYgKzk2LDcgQEAKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Lmg+CisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zMzIsOSArMzMzLDkgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmcoKQogICAgIG1faWNvbnNQZW5kaW5nTG9h
ZERlY2lzaW9uLmNsZWFyKCk7CiAgICAgCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNU
KQotICAgIGZvciAoYXV0byBjYWxsYmFja0lkZW50aWZpZXIgOiBtX2FwcGxpY2F0aW9uTWFuaWZl
c3RMb2FkZXJzLnZhbHVlcygpKQotICAgICAgICBub3RpZnlGaW5pc2hlZExvYWRpbmdBcHBsaWNh
dGlvbk1hbmlmZXN0KGNhbGxiYWNrSWRlbnRpZmllciwgc3RkOjpudWxsb3B0KTsKLSAgICBtX2Fw
cGxpY2F0aW9uTWFuaWZlc3RMb2FkZXJzLmNsZWFyKCk7CisgICAgbV9hcHBsaWNhdGlvbk1hbmlm
ZXN0TG9hZGVyID0gbnVsbHB0cjsKKyAgICBtX2ZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFu
aWZlc3QgPSBmYWxzZTsKKyAgICBub3RpZnlGaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlm
ZXN0KCk7CiAjZW5kaWYKIAogICAgIC8vIEFsd2F5cyBjYW5jZWwgbXVsdGlwYXJ0IGxvYWRlcnMK
QEAgLTE1MjcsNjcgKzE1MjgsODUgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJNYWluUmVz
b3VyY2VMb2FkZXIoKQogfQogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQotdWlu
dDY0X3QgRG9jdW1lbnRMb2FkZXI6OmxvYWRBcHBsaWNhdGlvbk1hbmlmZXN0KCkKKwordm9pZCBE
b2N1bWVudExvYWRlcjo6bG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+Jik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgc3RhdGljIHVpbnQ2NF90IG5leHRDYWxsYmFja0lEID0gMTsK
KyAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIG1fbG9hZEFwcGxpY2F0aW9uTWFu
aWZlc3RDYWxsYmFja3MuYXBwZW5kKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKworICAg
IGJvb2wgaXNMb2FkaW5nID0gISFtX2FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI7CisgICAgYXV0
byBub3RpZnlJZlVuYWJsZVRvTG9hZCA9IG1ha2VTY29wZUV4aXQoWyZdIHsKKyAgICAgICAgaWYg
KCFpc0xvYWRpbmcgfHwgbV9maW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KQorICAg
ICAgICAgICAgbm90aWZ5RmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCgpOworICAg
IH0pOworCisgICAgaWYgKGlzTG9hZGluZykKKyAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byog
ZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fZnJhbWUtPmlzTWFpbkZy
YW1lKCkpCi0gICAgICAgIHJldHVybiAwOworICAgIGlmICghZG9jdW1lbnQtPmlzVG9wRG9jdW1l
bnQoKSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGRvY3VtZW50LT51cmwoKS5pc0VtcHR5
KCkgfHwgZG9jdW1lbnQtPnVybCgpLnByb3RvY29sSXNBYm91dCgpKQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBoZWFkID0gZG9jdW1lbnQtPmhlYWQoKTsK
ICAgICBpZiAoIWhlYWQpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm47CiAKICAg
ICBVUkwgbWFuaWZlc3RVUkw7CiAgICAgYm9vbCB1c2VDcmVkZW50aWFscyA9IGZhbHNlOwogICAg
IGZvciAoY29uc3QgYXV0byYgbGluayA6IGNoaWxkcmVuT2ZUeXBlPEhUTUxMaW5rRWxlbWVudD4o
KmhlYWQpKSB7Ci0gICAgICAgIGlmIChsaW5rLmlzQXBwbGljYXRpb25NYW5pZmVzdCgpKSB7Ci0g
ICAgICAgICAgICBtYW5pZmVzdFVSTCA9IGxpbmsuaHJlZigpOwotICAgICAgICAgICAgdXNlQ3Jl
ZGVudGlhbHMgPSBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGxpbmsuYXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmNyb3Nzb3JpZ2luQXR0ciksICJ1c2UtY3JlZGVudGlh
bHMiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgICAgIGlmICghbGluay5p
c0FwcGxpY2F0aW9uTWFuaWZlc3QoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
IGlmIChsaW5rLmhyZWYoKS5pc0VtcHR5KCkgfHwgIWxpbmsuaHJlZigpLmlzVmFsaWQoKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICghbGluay5tZWRpYUF0dHJpYnV0ZU1h
dGNoZXMoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIG1hbmlmZXN0VVJMID0g
bGluay5ocmVmKCk7CisgICAgICAgIHVzZUNyZWRlbnRpYWxzID0gZXF1YWxJZ25vcmluZ0FTQ0lJ
Q2FzZShsaW5rLmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpjcm9z
c29yaWdpbkF0dHIpLCAidXNlLWNyZWRlbnRpYWxzIik7CisgICAgICAgIGJyZWFrOwogICAgIH0K
IAogICAgIGlmIChtYW5pZmVzdFVSTC5pc0VtcHR5KCkgfHwgIW1hbmlmZXN0VVJMLmlzVmFsaWQo
KSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gbWFuaWZl
c3RMb2FkZXIgPSBtYWtlVW5pcXVlPEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI+KCp0aGlzLCBt
YW5pZmVzdFVSTCwgdXNlQ3JlZGVudGlhbHMpOwotICAgIGF1dG8qIHJhd01hbmlmZXN0TG9hZGVy
ID0gbWFuaWZlc3RMb2FkZXIuZ2V0KCk7Ci0gICAgYXV0byBjYWxsYmFja0lEID0gbmV4dENhbGxi
YWNrSUQrKzsKLSAgICBtX2FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXJzLnNldChXVEZNb3ZlKG1h
bmlmZXN0TG9hZGVyKSwgY2FsbGJhY2tJRCk7CisgICAgbV9hcHBsaWNhdGlvbk1hbmlmZXN0TG9h
ZGVyID0gbWFrZVVuaXF1ZTxBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyPigqdGhpcywgbWFuaWZl
c3RVUkwsIHVzZUNyZWRlbnRpYWxzKTsKIAotICAgIGlmICghcmF3TWFuaWZlc3RMb2FkZXItPnN0
YXJ0TG9hZGluZygpKSB7Ci0gICAgICAgIG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRlcnMucmVt
b3ZlKHJhd01hbmlmZXN0TG9hZGVyKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAg
cmV0dXJuIGNhbGxiYWNrSUQ7CisgICAgaXNMb2FkaW5nID0gbV9hcHBsaWNhdGlvbk1hbmlmZXN0
TG9hZGVyLT5zdGFydExvYWRpbmcoKTsKKyAgICBpZiAoIWlzTG9hZGluZykKKyAgICAgICAgbV9m
aW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0ID0gdHJ1ZTsKIH0KIAogdm9pZCBEb2N1
bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdChBcHBsaWNhdGlv
bk1hbmlmZXN0TG9hZGVyJiBsb2FkZXIpCiB7CisgICAgQVNTRVJUX1VOVVNFRChsb2FkZXIsICZs
b2FkZXIgPT0gbV9hcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLmdldCgpKTsKKwogICAgIC8vIElm
IHRoZSBEb2N1bWVudExvYWRlciBoYXMgZGV0YWNoZWQgZnJvbSBpdHMgZnJhbWUsIGFsbCBtYW5p
ZmVzdCBsb2FkcyBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY2FuY2VsZWQuCiAgICAgQVNTRVJU
KG1fZnJhbWUpOwogCi0gICAgYXV0byBjYWxsYmFja0lkZW50aWZpZXIgPSBtX2FwcGxpY2F0aW9u
TWFuaWZlc3RMb2FkZXJzLmdldCgmbG9hZGVyKTsKLSAgICBub3RpZnlGaW5pc2hlZExvYWRpbmdB
cHBsaWNhdGlvbk1hbmlmZXN0KGNhbGxiYWNrSWRlbnRpZmllciwgbG9hZGVyLnByb2Nlc3NNYW5p
ZmVzdCgpKTsKLSAgICBtX2FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXJzLnJlbW92ZSgmbG9hZGVy
KTsKKyAgICBBU1NFUlQoIW1fZmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCk7Cisg
ICAgbV9maW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0ID0gdHJ1ZTsKKworICAgIG5v
dGlmeUZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QoKTsKIH0KIAotdm9pZCBEb2N1
bWVudExvYWRlcjo6bm90aWZ5RmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCh1aW50
NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25NYW5pZmVz
dD4gbWFuaWZlc3QpCit2b2lkIERvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZExvYWRpbmdB
cHBsaWNhdGlvbk1hbmlmZXN0KCkKIHsKLSAgICBSRUxFQVNFX0FTU0VSVChjYWxsYmFja0lkZW50
aWZpZXIpOwotICAgIFJFTEVBU0VfQVNTRVJUKG1fZnJhbWUpOwotICAgIG1fZnJhbWUtPmxvYWRl
cigpLmNsaWVudCgpLmZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QoY2FsbGJhY2tJ
ZGVudGlmaWVyLCBtYW5pZmVzdCk7CisgICAgc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlm
ZXN0PiBtYW5pZmVzdCA9IG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRlciA/IG1fYXBwbGljYXRp
b25NYW5pZmVzdExvYWRlci0+cHJvY2Vzc01hbmlmZXN0KCkgOiBzdGQ6Om51bGxvcHQ7CisgICAg
QVNTRVJUX0lNUExJRVMobWFuaWZlc3QsIG1fZmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5p
ZmVzdCk7CisKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogc3RkOjpleGNoYW5nZShtX2xvYWRB
cHBsaWNhdGlvbk1hbmlmZXN0Q2FsbGJhY2tzLCB7IH0pKQorICAgICAgICBjYWxsYmFjayhtYW5p
ZmVzdCk7CiB9Ci0jZW5kaWYKKworI2VuZGlmIC8vIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVT
VCkKIAogYm9vbCBEb2N1bWVudExvYWRlcjo6aXNMb2FkaW5nSW5BUElTZW5zZSgpIGNvbnN0CiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGQ4ZmYxZGEzYmQ2NDA2
YzVkNzY0ODc2YWFkNDliYmQwMDRhYzE3NzAuLmVhYTk2NzIwMTEyMmRjYTZmNmVjN2RjM2IxZTMx
ZTdlNTZkYTdkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC0z
OTMsNyArMzkzLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxMaW5rSWNvbj4mIGxpbmtJ
Y29ucygpIGNvbnN0IHsgcmV0dXJuIG1fbGlua0ljb25zOyB9CiAKICNpZiBFTkFCTEUoQVBQTElD
QVRJT05fTUFOSUZFU1QpCi0gICAgV0VCQ09SRV9FWFBPUlQgdWludDY0X3QgbG9hZEFwcGxpY2F0
aW9uTWFuaWZlc3QoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxvYWRBcHBsaWNhdGlvbk1h
bmlmZXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxBcHBsaWNh
dGlvbk1hbmlmZXN0PiYpPiYmKTsKICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9u
TWFuaWZlc3QoQXBwbGljYXRpb25NYW5pZmVzdExvYWRlciYpOwogI2VuZGlmCiAKQEAgLTUxMiw3
ICs1MTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYmVjb21lTWFpblJlc291cmNlQ2xpZW50KCk7
CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi0gICAgdm9pZCBub3RpZnlGaW5p
c2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmll
ciwgc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0Pik7CisgICAgdm9pZCBub3RpZnlG
aW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KCk7CiAjZW5kaWYKIAogICAgIC8vIENv
bnRlbnRTZWN1cml0eVBvbGljeUNsaWVudApAQCAtNjE2LDcgKzYxNiw5IEBAIHByaXZhdGU6CiAg
ICAgVmVjdG9yPExpbmtJY29uPiBtX2xpbmtJY29uczsKIAogI2lmIEVOQUJMRShBUFBMSUNBVElP
Tl9NQU5JRkVTVCkKLSAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxBcHBsaWNhdGlvbk1hbmlm
ZXN0TG9hZGVyPiwgdWludDY0X3Q+IG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRlcnM7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXI+IG1fYXBwbGljYXRpb25N
YW5pZmVzdExvYWRlcjsKKyAgICBWZWN0b3I8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBz
dGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+Jik+PiBtX2xvYWRBcHBsaWNhdGlvbk1h
bmlmZXN0Q2FsbGJhY2tzOworICAgIGJvb2wgbV9maW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1h
bmlmZXN0IHsgZmFsc2UgfTsKICNlbmRpZgogCiAgICAgVmVjdG9yPEN1c3RvbUhlYWRlckZpZWxk
cz4gbV9jdXN0b21IZWFkZXJGaWVsZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApp
bmRleCA0MGJlNjFjMjBmY2I4ZDNhZjcxMDNmYWNjMzczYTIwYzkxNjYzMzA5Li5hZjEwOTM1YWMx
NmU2MWJjMmQ5YmZlM2Y3Mzc2ZjUyYTljNWZkNmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKQEAgLTE5MjcsMTcgKzE5MjcsNiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaWRDcmVhdGVXaW5kb3coRE9NV2luZG93JiB3aW5kb3cpCiAgICAgd2ViUGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVXaW5kb3cobV9mcmFtZS0+ZnJhbWVJRCgp
LCB3aW5kb3cuaWRlbnRpZmllcigpKSk7CiB9CiAKLSNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFO
SUZFU1QpCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdBcHBsaWNh
dGlvbk1hbmlmZXN0KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYgbWFuaWZlc3QpCi17Ci0gICAgV2Vi
UGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKLSAgICBpZiAoIXdlYlBhZ2UpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIHdlYlBhZ2UtPmRpZEZpbmlzaExvYWRpbmdBcHBsaWNhdGlvbk1h
bmlmZXN0KGNhbGxiYWNrSWRlbnRpZmllciwgbWFuaWZlc3QpOwotfQotI2VuZGlmIC8vIEVOQUJM
RShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLQogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykK
IGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZh
Y3lQcm90ZWN0aW9ucygpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4
IGFhM2E4NjAxNzU3MjY1NDEzODUyYTRiOWU4OTU2NGJiNGQxYTNmM2IuLmQxNjlkNGFjN2QyYjE2
NTMzODgxNjkzZWU5NjdiZDgzOTNiOWNiN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
CkBAIC0yNzAsMTAgKzI3MCw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZENyZWF0ZVdpbmRv
dyhXZWJDb3JlOjpET01XaW5kb3cmKSBmaW5hbDsKIAotI2lmIEVOQUJMRShBUFBMSUNBVElPTl9N
QU5JRkVTVCkKLSAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QodWlu
dDY0X3QsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4m
KSBmaW5hbDsKLSNlbmRpZgotCiAgICAgUmVmPFdlYkZyYW1lPiBtX2ZyYW1lOwogICAgIFJlZlB0
cjxQbHVnaW5WaWV3PiBtX3BsdWdpblZpZXc7CiAgICAgYm9vbCBtX2hhc1NlbnRSZXNwb25zZVRv
UGx1Z2luVmlldyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCmluZGV4IDRlNGJiY2ZiYmNkYWVlYTBiMTI1ZjdiMGQ4ZTYzZjBkZmU4MjNh
ZjcuLmU4M2Q4ZmYyZDhjNTU4Y2EzNzYwZjVjYzRjYWExYzc1NjM0OWM4MDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xMDQ4LDEzICsxMDQ4
LDYgQEAgV2ViUGFnZTo6fldlYlBhZ2UoKQogCiAgICAgZm9yIChhdXRvJiBjb21wbGV0aW9uSGFu
ZGxlciA6IHN0ZDo6ZXhjaGFuZ2UobV9tYXJrTGF5ZXJzQXNWb2xhdGlsZUNvbXBsZXRpb25IYW5k
bGVycywgeyB9KSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgIAotI2lm
IEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLSAgICBmb3IgKGF1dG8mIGNvbXBsZXRpb25I
YW5kbGVyIDogbV9hcHBsaWNhdGlvbk1hbmlmZXN0RmV0Y2hDYWxsYmFja01hcC52YWx1ZXMoKSkg
ewotICAgICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzdGQ6Om51bGxvcHQpOwotICAgIH0KLSNlbmRpZgogfQogCiBJUEM6OkNvbm5lY3Rp
b24qIFdlYlBhZ2U6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKQEAgLTcxODksNiAr
NzE4Miw3IEBAIFJlZlB0cjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+IFdlYlBhZ2U6OmF0dGFjaG1l
bnRFbGVtZW50V2l0aElkZW50aWZpZXIoY29uc3QgU3RyCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKwogdm9p
ZCBXZWJQYWdlOjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIERvY3VtZW50KiBtYWluRnJhbWVEb2N1bWVudCA9IG1f
bWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKTsKQEAgLTcxOTYsMTggKzcxOTAsOSBA
QCB2b2lkIFdlYlBhZ2U6OmdldEFwcGxpY2F0aW9uTWFuaWZlc3QoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPAogICAgIGlmICghbG9hZGVyKQogICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKIAotICAgIGF1dG8gY29yZUNhbGxi
YWNrSUQgPSBsb2FkZXItPmxvYWRBcHBsaWNhdGlvbk1hbmlmZXN0KCk7Ci0gICAgaWYgKCFjb3Jl
Q2FsbGJhY2tJRCkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9w
dCk7Ci0KLSAgICBtX2FwcGxpY2F0aW9uTWFuaWZlc3RGZXRjaENhbGxiYWNrTWFwLmFkZChjb3Jl
Q2FsbGJhY2tJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGxvYWRlci0+bG9h
ZEFwcGxpY2F0aW9uTWFuaWZlc3QoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12
b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KHVpbnQ2NF90
IGNvcmVDYWxsYmFja0lELCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9u
TWFuaWZlc3Q+JiBtYW5pZmVzdCkKLXsKLSAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fYXBwbGlj
YXRpb25NYW5pZmVzdEZldGNoQ2FsbGJhY2tNYXAudGFrZShjb3JlQ2FsbGJhY2tJRCkpCi0gICAg
ICAgIGNhbGxiYWNrKG1hbmlmZXN0KTsKLX0KICNlbmRpZiAvLyBFTkFCTEUoQVBQTElDQVRJT05f
TUFOSUZFU1QpCiAKIHZvaWQgV2ViUGFnZTo6dXBkYXRlQ3VycmVudE1vZGlmaWVyU3RhdGUoT3B0
aW9uU2V0PFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyPiBtb2RpZmllcnMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNzhkODMwZGE0MmQ5NTY3Y2RmOTVj
ZmExZmUzMjczMzAyZmYzYjIxYy4uZDZkZmMxODc5N2I3MTRiZmIwZDIxYWY1Yzc5ZTEwZTViMzBj
MTY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
MTI5Miw3ICsxMjkyLDYgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklG
RVNUKQogICAgIHZvaWQgZ2V0QXBwbGljYXRpb25NYW5pZmVzdChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mKT4m
Jik7Ci0gICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCh1aW50NjRf
dCwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYpOwog
I2VuZGlmCiAKICNpZiBVU0UoV1BFX1JFTkRFUkVSKQpAQCAtMjMxMCwxMCArMjMwOSw2IEBAIHBy
aXZhdGU6CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlvbjx2b2lkKGJvb2wgZ3JhbnRl
ZCk+PiBtX3N0b3JhZ2VBY2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFwOwogCi0jaWYgRU5BQkxFKEFQ
UExJQ0FUSU9OX01BTklGRVNUKQotICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0
PiYpPj4gbV9hcHBsaWNhdGlvbk1hbmlmZXN0RmV0Y2hDYWxsYmFja01hcDsKLSNlbmRpZgotCiAg
ICAgT3B0aW9uU2V0PExheWVyVHJlZUZyZWV6ZVJlYXNvbj4gbV9sYXllclRyZWVGcmVlemVSZWFz
b25zOwogICAgIGJvb2wgbV9pc1N1c3BlbmRlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX25lZWRz
Rm9udEF0dHJpYnV0ZXMgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDI1Zjk0YzY2ZmM4NmRhNzhkY2FiY2EyNWJiZTI0OGFiMTQx
ZWEzYjEuLjU5OTdhNGU1NzNiMDIzMGNjYWYxNTA4NmZkNzc4ZWViMTExODUyYTggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBA
QAorMjAyMS0wOC0xNiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAg
ICAgW1dlYiBBcHAgTWFuaWZlc3RdIEFsd2F5cyBmZXRjaCB0aGUgZmlyc3QgbWFuaWZlc3QgaWYg
cHJvdmlkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyOTA1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBsaWNhdGlvbk1hbmlmZXN0Lm1t
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVC5BcHBsaWNhdGlvbk1hbmlmZXN0LkFsd2F5
c0ZldGNoKTogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNULkFwcGxpY2F0aW9u
TWFuaWZlc3QuT25seUZpcnN0TWFuaWZlc3QpOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QuQXBwbGljYXRpb25NYW5pZmVzdC5Ob01hbmlmZXN0KTogQWRkZWQuCisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNULkFwcGxpY2F0aW9uTWFuaWZlc3QuTWVkaWFBdHRyaXV0ZSk6
IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVC5BcHBsaWNhdGlvbk1hbmlmZXN0
LkRvZXNOb3RFeGlzdCk6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVC5BcHBs
aWNhdGlvbk1hbmlmZXN0LkJsb2NrZWQpOiBBZGRlZC4KKwogMjAyMS0wOC0xMiAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKGlQYWRPUyAxNCk6
IFsgaVBhZE9TIHdrMiBdIFRlc3RXZWJLaXRBUEkuU2VydmljZVdvcmtlcnMuU3VzcGVuZE5ldHdv
cmtQcm9jZXNzIGlzIGEgZmxha3kgZmFpbHVyZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBsaWNhdGlvbk1hbmlmZXN0Lm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCmluZGV4
IGEyNDczYjYyYjBmZWY0OTZmZjMxY2EyMjE3NDU2MTVhNGEyYzIwZmIuLmM5YmY4Y2QwMWU1NmFi
OWVhMzMzNDgwODUxY2M1YzU0NDllMzZlMmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwbGljYXRpb25NYW5pZmVzdC5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcGxpY2F0aW9uTWFuaWZlc3QubW0KQEAg
LTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBjb25zdGV4cHIgQ0dG
bG9hdCByZWRDb2xvckNvbXBvbmVudHNbNF0gPSB7IDEsIDAsIDAsIDEgfTsKIAotVEVTVChXZWJL
aXQsIEFwcGxpY2F0aW9uTWFuaWZlc3RDb2RpbmcpCitURVNUKEFwcGxpY2F0aW9uTWFuaWZlc3Qs
IENvZGluZykKIHsKICAgICBhdXRvIGpzb25TdHJpbmcgPSBAInsgXCJuYW1lXCI6IFwiVGVzdE5h
bWVcIiwgXCJzaG9ydF9uYW1lXCI6IFwiVGVzdFNob3J0TmFtZVwiLCBcImRlc2NyaXB0aW9uXCI6
IFwiVGVzdERlc2NyaXB0aW9uXCIsIFwic2NvcGVcIjogXCJodHRwczovL3Rlc3QuY29tL2FwcFwi
LCBcInN0YXJ0X3VybFwiOiBcImh0dHBzOi8vdGVzdC5jb20vYXBwL2luZGV4Lmh0bWxcIiwgXCJk
aXNwbGF5XCI6IFwibWluaW1hbC11aVwiLCBcInRoZW1lX2NvbG9yXCI6IFwicmVkXCIgfSI7CiAg
ICAgUmV0YWluUHRyPF9XS0FwcGxpY2F0aW9uTWFuaWZlc3Q+IG1hbmlmZXN0IHsgW19XS0FwcGxp
Y2F0aW9uTWFuaWZlc3QgYXBwbGljYXRpb25NYW5pZmVzdEZyb21KU09OOmpzb25TdHJpbmcgbWFu
aWZlc3RVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3Rlc3QuY29tL21hbmlmZXN0
Lmpzb24iXSBkb2N1bWVudFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vdGVzdC5j
b20vIl1dIH07CkBAIC02MCw3ICs2MCw3IEBAIFRFU1QoV2ViS2l0LCBBcHBsaWNhdGlvbk1hbmlm
ZXN0Q29kaW5nKQogICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IobWFuaWZlc3Qu
Z2V0KCkudGhlbWVDb2xvci5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOwogfQogCi1URVNUKFdl
YktpdCwgQXBwbGljYXRpb25NYW5pZmVzdEJhc2ljKQorVEVTVChBcHBsaWNhdGlvbk1hbmlmZXN0
LCBCYXNpYykKIHsKICAgICBzdGF0aWMgYm9vbCBkb25lID0gZmFsc2U7CiAKQEAgLTExNyw3ICsx
MTcsNyBAQCBURVNUKFdlYktpdCwgQXBwbGljYXRpb25NYW5pZmVzdEJhc2ljKQogICAgIFV0aWw6
OnJ1bigmZG9uZSk7CiB9CiAKLVRFU1QoV2ViS2l0LCBBcHBsaWNhdGlvbk1hbmlmZXN0RGlzcGxh
eU1vZGUpCitURVNUKEFwcGxpY2F0aW9uTWFuaWZlc3QsIERpc3BsYXlNb2RlKQogewogICAgIHN0
YXRpYyBib29sIGRvbmU7CiAgICAgTlNEaWN0aW9uYXJ5ICpkaXNwbGF5TW9kZXNBbmRFeHBlY3Rl
ZENvbnRlbnQgPSBAewpAQCAtMTQ5LDYgKzE0OSwxMzUgQEAgVEVTVChXZWJLaXQsIEFwcGxpY2F0
aW9uTWFuaWZlc3REaXNwbGF5TW9kZSkKICAgICB9XTsKIH0KIAorVEVTVChBcHBsaWNhdGlvbk1h
bmlmZXN0LCBBbHdheXNGZXRjaCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSk7CisKKyAgICBOU0Rp
Y3Rpb25hcnkgKm1hbmlmZXN0T2JqZWN0ID0gQHsgQCJ0aGVtZV9jb2xvciI6IEAicmVkIiB9Owor
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIjxsaW5rIHJlbD1cIm1hbmlmZXN0XCIgaHJlZj1cImRhdGE6YXBwbGljYXRp
b24vbWFuaWZlc3QranNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCwlQFwiPiIsIFtbTlNKU09OU2Vy
aWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6bWFuaWZlc3RPYmplY3Qgb3B0aW9uczowIGVy
cm9yOm5pbF0gYmFzZTY0RW5jb2RlZFN0cmluZ1dpdGhPcHRpb25zOjBdXV07CisKKyAgICB7Cisg
ICAgICAgIGF1dG8gc1JHQkNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdp
dGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7CisgICAgICAgIGF1dG8gcmVkQ29sb3IgPSBhZG9w
dENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2UuZ2V0KCksIHJlZENvbG9yQ29tcG9uZW50
cykpOworICAgICAgICB3aGlsZSAoIUNHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdGhlbWVD
b2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkpKQorICAgICAgICAgICAgVXRpbDo6c2xlZXAo
MSk7CisgICAgfQorCisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmll
dyBfZ2V0QXBwbGljYXRpb25NYW5pZmVzdFdpdGhDb21wbGV0aW9uSGFuZGxlcjpeKF9XS0FwcGxp
Y2F0aW9uTWFuaWZlc3QgKm1hbmlmZXN0KSB7CisgICAgICAgIGF1dG8gc1JHQkNvbG9yU3BhY2Ug
PSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7
CisgICAgICAgIGF1dG8gcmVkQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9y
U3BhY2UuZ2V0KCksIHJlZENvbG9yQ29tcG9uZW50cykpOworICAgICAgICBFWFBFQ1RfVFJVRShD
R0NvbG9yRXF1YWxUb0NvbG9yKG1hbmlmZXN0LnRoZW1lQ29sb3IuQ0dDb2xvciwgcmVkQ29sb3Iu
Z2V0KCkpKTsKKworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4o
JmRvbmUpOworfQorCitURVNUKEFwcGxpY2F0aW9uTWFuaWZlc3QsIE9ubHlGaXJzdE1hbmlmZXN0
KQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdKTsKKworICAgIE5TRGljdGlvbmFyeSAqbWFuaWZlc3RP
YmplY3QxID0gQHsgQCJ0aGVtZV9jb2xvciI6IEAicmVkIiB9OworICAgIE5TRGljdGlvbmFyeSAq
bWFuaWZlc3RPYmplY3QyID0gQHsgQCJ0aGVtZV9jb2xvciI6IEAiYmx1ZSIgfTsKKyAgICBbd2Vi
VmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCI8bGluayByZWw9XCJtYW5pZmVzdFwiIGhyZWY9XCJkYXRhOmFwcGxpY2F0aW9uL21hbmlm
ZXN0K2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsJUBcIj48bGluayByZWw9XCJtYW5pZmVzdFwi
IGhyZWY9XCJkYXRhOmFwcGxpY2F0aW9uL21hbmlmZXN0K2pzb247Y2hhcnNldD11dGYtODtiYXNl
NjQsJUBcIj4iLCBbW05TSlNPTlNlcmlhbGl6YXRpb24gZGF0YVdpdGhKU09OT2JqZWN0Om1hbmlm
ZXN0T2JqZWN0MSBvcHRpb25zOjAgZXJyb3I6bmlsXSBiYXNlNjRFbmNvZGVkU3RyaW5nV2l0aE9w
dGlvbnM6MF0sIFtbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6bWFuaWZl
c3RPYmplY3QyIG9wdGlvbnM6MCBlcnJvcjpuaWxdIGJhc2U2NEVuY29kZWRTdHJpbmdXaXRoT3B0
aW9uczowXV1dOworCisgICAgeworICAgICAgICBhdXRvIHNSR0JDb2xvclNwYWNlID0gYWRvcHRD
RihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOworICAgICAg
ICBhdXRvIHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdl
dCgpLCByZWRDb2xvckNvbXBvbmVudHMpKTsKKyAgICAgICAgd2hpbGUgKCFDR0NvbG9yRXF1YWxU
b0NvbG9yKFt3ZWJWaWV3IHRoZW1lQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSkKKyAg
ICAgICAgICAgIFV0aWw6OnNsZWVwKDEpOworICAgIH0KKworICAgIF9fYmxvY2sgYm9vbCBkb25l
ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2dldEFwcGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6XihfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICptYW5pZmVzdCkgeworICAgICAg
ICBhdXRvIHNSR0JDb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFt
ZShrQ0dDb2xvclNwYWNlU1JHQikpOworICAgICAgICBhdXRvIHJlZENvbG9yID0gYWRvcHRDRihD
R0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCByZWRDb2xvckNvbXBvbmVudHMpKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihtYW5pZmVzdC50aGVtZUNv
bG9yLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSk7CisKKyAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgfV07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKK30KKworVEVTVChBcHBsaWNhdGlvbk1hbmlm
ZXN0LCBOb01hbmlmZXN0KQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdKTsKKworICAgIFt3ZWJWaWV3
IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIkhlbGxvIFdvcmxkIl07CisKKyAgICBFWFBF
Q1RfTlVMTChbd2ViVmlldyB0aGVtZUNvbG9yXSk7CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9
IGZhbHNlOworICAgIFt3ZWJWaWV3IF9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRp
b25IYW5kbGVyOl4oX1dLQXBwbGljYXRpb25NYW5pZmVzdCAqbWFuaWZlc3QpIHsKKyAgICAgICAg
RVhQRUNUX05VTEwobWFuaWZlc3QpOworCisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOwor
ICAgIFV0aWw6OnJ1bigmZG9uZSk7Cit9CisKK1RFU1QoQXBwbGljYXRpb25NYW5pZmVzdCwgTWVk
aWFBdHRyaXV0ZSkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSk7CisKKyAgICBOU0RpY3Rpb25hcnkg
Km1hbmlmZXN0T2JqZWN0MSA9IEB7IEAidGhlbWVfY29sb3IiOiBAImJsdWUiIH07CisgICAgTlNE
aWN0aW9uYXJ5ICptYW5pZmVzdE9iamVjdDIgPSBAeyBAInRoZW1lX2NvbG9yIjogQCJyZWQiIH07
CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOltOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiPGxpbmsgcmVsPVwibWFuaWZlc3RcIiBocmVmPVwiZGF0YTphcHBsaWNh
dGlvbi9tYW5pZmVzdCtqc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LCVAXCIgbWVkaWE9XCJpbnZh
bGlkXCI+PGxpbmsgcmVsPVwibWFuaWZlc3RcIiBocmVmPVwiZGF0YTphcHBsaWNhdGlvbi9tYW5p
ZmVzdCtqc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LCVAXCIgbWVkaWE9XCJzY3JlZW5cIj4iLCBb
W05TSlNPTlNlcmlhbGl6YXRpb24gZGF0YVdpdGhKU09OT2JqZWN0Om1hbmlmZXN0T2JqZWN0MSBv
cHRpb25zOjAgZXJyb3I6bmlsXSBiYXNlNjRFbmNvZGVkU3RyaW5nV2l0aE9wdGlvbnM6MF0sIFtb
TlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6bWFuaWZlc3RPYmplY3QyIG9w
dGlvbnM6MCBlcnJvcjpuaWxdIGJhc2U2NEVuY29kZWRTdHJpbmdXaXRoT3B0aW9uczowXV1dOwor
CisgICAgeworICAgICAgICBhdXRvIHNSR0JDb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3Bh
Y2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOworICAgICAgICBhdXRvIHJlZENv
bG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCByZWRDb2xv
ckNvbXBvbmVudHMpKTsKKyAgICAgICAgd2hpbGUgKCFDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJW
aWV3IHRoZW1lQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSkKKyAgICAgICAgICAgIFV0
aWw6OnNsZWVwKDEpOworICAgIH0KKworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7Cisg
ICAgW3dlYlZpZXcgX2dldEFwcGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxldGlvbkhhbmRsZXI6
XihfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICptYW5pZmVzdCkgeworICAgICAgICBhdXRvIHNSR0JD
b2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNw
YWNlU1JHQikpOworICAgICAgICBhdXRvIHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRl
KHNSR0JDb2xvclNwYWNlLmdldCgpLCByZWRDb2xvckNvbXBvbmVudHMpKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihtYW5pZmVzdC50aGVtZUNvbG9yLkNHQ29sb3Is
IHJlZENvbG9yLmdldCgpKSk7CisKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAg
VXRpbDo6cnVuKCZkb25lKTsKK30KKworVEVTVChBcHBsaWNhdGlvbk1hbmlmZXN0LCBEb2VzTm90
RXhpc3QpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF0pOworCisgICAgW3dlYlZpZXcgc3luY2hyb25v
dXNseUxvYWRIVE1MU3RyaW5nOkAiPGxpbmsgcmVsPVwibWFuaWZlc3RcIiBocmVmPVwiZG9lcyBu
b3QgZXhpc3RcIj4iXTsKKworICAgIEVYUEVDVF9OVUxMKFt3ZWJWaWV3IHRoZW1lQ29sb3JdKTsK
KworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2dldEFwcGxp
Y2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxldGlvbkhhbmRsZXI6XihfV0tBcHBsaWNhdGlvbk1hbmlm
ZXN0ICptYW5pZmVzdCkgeworICAgICAgICBFWFBFQ1RfTlVMTChtYW5pZmVzdCk7CisKKyAgICAg
ICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKK30KKworVEVT
VChBcHBsaWNhdGlvbk1hbmlmZXN0LCBCbG9ja2VkKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdKTsK
KworICAgIE5TRGljdGlvbmFyeSAqbWFuaWZlc3RPYmplY3QgPSBAeyBAInRoZW1lX2NvbG9yIjog
QCJyZWQiIH07CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOltOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPG1ldGEgaHR0cC1lcXVpdj1cIkNvbnRlbnQtU2VjdXJp
dHktUG9saWN5XCIgY29udGVudD1cIm1hbmlmZXN0LXNyYyAnbm9uZSdcIj48bGluayByZWw9XCJt
YW5pZmVzdFwiIGhyZWY9XCJkYXRhOmFwcGxpY2F0aW9uL21hbmlmZXN0K2pzb247Y2hhcnNldD11
dGYtODtiYXNlNjQsJUBcIj4iLCBbW05TSlNPTlNlcmlhbGl6YXRpb24gZGF0YVdpdGhKU09OT2Jq
ZWN0Om1hbmlmZXN0T2JqZWN0IG9wdGlvbnM6MCBlcnJvcjpuaWxdIGJhc2U2NEVuY29kZWRTdHJp
bmdXaXRoT3B0aW9uczowXV1dOworCisgICAgRVhQRUNUX05VTEwoW3dlYlZpZXcgdGhlbWVDb2xv
cl0pOworCisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfZ2V0
QXBwbGljYXRpb25NYW5pZmVzdFdpdGhDb21wbGV0aW9uSGFuZGxlcjpeKF9XS0FwcGxpY2F0aW9u
TWFuaWZlc3QgKm1hbmlmZXN0KSB7CisgICAgICAgIEVYUEVDVF9OVUxMKG1hbmlmZXN0KTsKKwor
ICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRpZiAvLyBFTkFCTEUoQVBQTElD
QVRJT05fTUFOSUZFU1QpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGY4ODdlMzY3NWNlMThmOTIxYTFjNDJiNzIyZjQyY2Yx
ZWFmOGI5Yy4uOWNkYzY1ZTI1NmI0Y2E0N2JhOGY4OWE1NzUzNTY5YTVkYzVhMWQ4NCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDIxLTA4LTE2ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxl
LmNvbT4KKworICAgICAgICBbV2ViIEFwcCBNYW5pZmVzdF0gQWx3YXlzIGZldGNoIHRoZSBmaXJz
dCBtYW5pZmVzdCBpZiBwcm92aWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI5MDU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBhcHBsaWNhdGlvbm1hbmlmZXN0L211bHRpcGxlLWxpbmtzLmh0bWw6
CisgICAgICAgICogYXBwbGljYXRpb25tYW5pZmVzdC9tdWx0aXBsZS1saW5rcy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kv
bWFuaWZlc3Qtc3JjLWJsb2NrZWQuaHRtbDoKKwogMjAyMS0wOC0xMiAgQ2FybG9zIEFsYmVydG8g
TG9wZXogUGVyZXogIDxjbG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIEdh
cmRlbmluZyBvZiBsYXlvdXQgdGVzdCBmYWlsdXJlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
YXBwbGljYXRpb25tYW5pZmVzdC9tdWx0aXBsZS1saW5rcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9hcHBsaWNhdGlvbm1hbmlmZXN0L211bHRpcGxlLWxpbmtzLWV4cGVjdGVkLnR4dAppbmRl
eCA5MGM3ODk2MTE2MTFkZGY0ZWRiNjdiOGFhMWM1ODQzMzU4MzQ4ZWMwLi44NTNmZGIwNzQ5MWVj
YjE3MjFiYmQ3YzliYmQzYzM2ZjM1ZDFkNmFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hcHBs
aWNhdGlvbm1hbmlmZXN0L211bHRpcGxlLWxpbmtzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9hcHBsaWNhdGlvbm1hbmlmZXN0L211bHRpcGxlLWxpbmtzLWV4cGVjdGVkLnR4dApAQCAt
MSw0ICsxLDQgQEAKK3VybHNjaGVtZTovLzIgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVz
dCBVUkwgdXJsc2NoZW1lOi8vMiwgbWFpbiBkb2N1bWVudCBVUkwgbXVsdGlwbGUtbGlua3MuaHRt
bCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQogbXVsdGlwbGUtbGlu
a3MuaHRtbCAtIGRpZEZpbmlzaExvYWRpbmcKLXVybHNjaGVtZTovLzEgLSB3aWxsU2VuZFJlcXVl
c3QgPE5TVVJMUmVxdWVzdCBVUkwgdXJsc2NoZW1lOi8vMSwgbWFpbiBkb2N1bWVudCBVUkwgbXVs
dGlwbGUtbGlua3MuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxs
KQotdXJsc2NoZW1lOi8vMSAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiA8TlNFcnJvciBkb21h
aW4gTlNVUkxFcnJvckRvbWFpbiwgY29kZSAtMTAwMiwgZmFpbGluZyBVUkwgInVybHNjaGVtZTov
LzEiPgordXJsc2NoZW1lOi8vMiAtIGRpZEZhaWxMb2FkaW5nV2l0aEVycm9yOiA8TlNFcnJvciBk
b21haW4gTlNVUkxFcnJvckRvbWFpbiwgY29kZSAtMTAwMiwgZmFpbGluZyBVUkwgInVybHNjaGVt
ZTovLzIiPgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1hbmlmZXN0L211
bHRpcGxlLWxpbmtzLmh0bWwgYi9MYXlvdXRUZXN0cy9hcHBsaWNhdGlvbm1hbmlmZXN0L211bHRp
cGxlLWxpbmtzLmh0bWwKaW5kZXggMDA3YmI4ZjgwNjI4YmRlYzJkOGM3ZDc2NTUzZWQ5MDQzMWFi
ZmE1NS4uMzdkN2YwNzI1NTk5YzY2ZDlkOTk0MWVmN2EyZDQwNWY5ODQ0OGIxMyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvYXBwbGljYXRpb25tYW5pZmVzdC9tdWx0aXBsZS1saW5rcy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2FwcGxpY2F0aW9ubWFuaWZlc3QvbXVsdGlwbGUtbGlua3MuaHRtbApA
QCAtMSwxMCArMSwxNCBAQAotPGxpbmsgcmVsPSJtYW5pZmVzdCIgaHJlZj0idXJsc2NoZW1lOi8v
MSIgbWVkaWE9InByaW50Ij4KLTxsaW5rIHJlbD0ibWFuaWZlc3QiIGhyZWY9InVybHNjaGVtZTov
LzIiPgogPHNjcmlwdD4KIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHRlc3RSdW5uZXIu
ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpOwogICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwogICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorPC9zY3JpcHQ+Cis8bGluayBy
ZWw9Im1hbmlmZXN0IiBocmVmPSJ1cmxzY2hlbWU6Ly8xIiBtZWRpYT0icHJpbnQiPgorPGxpbmsg
cmVsPSJtYW5pZmVzdCIgaHJlZj0idXJsc2NoZW1lOi8vMiI+Cis8c2NyaXB0PgoraWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1bm5lci5nZXRBcHBsaWNhdGlvbk1hbmlmZXN0VGhl
bihmdW5jdGlvbigpIHsKICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgfSk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYmxvY2tlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZlc3Qtc3JjLWJsb2NrZWQu
aHRtbAppbmRleCBjZDRkMWY3Yjg5NzY3YTJmM2RlYWZkZDVhMTY1Y2M0MWViZWY2MmYwLi4yY2Qy
MzAyMzZhNDExYjBkNmUyMGRlMzA2ODRhZjAxNmI0N2JlNTEzIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVzdC1z
cmMtYmxvY2tlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1ibG9ja2VkLmh0bWwKQEAgLTEsOSArMSwx
MyBAQAogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1TZWN1cml0eS1Qb2xpY3kiIGNvbnRlbnQ9
Im1hbmlmZXN0LXNyYyAnbm9uZSciPgotPGxpbmsgcmVsPSJtYW5pZmVzdCIgaHJlZj0ibWFuaWZl
c3QudGVzdC9tYW5pZmVzdC5qc29uIj4KIDxzY3JpcHQ+CiAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CiAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9Cis8L3NjcmlwdD4KKzxsaW5rIHJlbD0ibWFuaWZl
c3QiIGhyZWY9Im1hbmlmZXN0LnRlc3QvbWFuaWZlc3QuanNvbiI+Cis8c2NyaXB0PgorICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAgICB0ZXN0UnVubmVyLmdldEFwcGxpY2F0aW9u
TWFuaWZlc3RUaGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgYWxlcnQoIlBhc3MiKTsKICAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwo=
</data>
<flag name="review"
          id="458502"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
    <flag name="commit-queue"
          id="458503"
          type_id="3"
          status="-"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437205</attachid>
            <date>2021-09-02 15:49:55 -0700</date>
            <delta_ts>2021-09-03 14:49:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>229059-2.diff</filename>
            <type>text/plain</type>
            <size>31217</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwMzgyYjFjZWQwOTcuLmEzZGU4ZDFhNjFjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDIxLTA5LTAyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAg
ICBbV2ViIEFwcCBNYW5pZmVzdF0gQWx3YXlzIGZldGNoIHRoZSBmaXJzdCBtYW5pZmVzdCBpZiBw
cm92aWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI5MDU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MjE0ODMzMz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAgICogYXBwbGljYXRpb25tYW5pZmVzdC9t
dWx0aXBsZS1saW5rcy5odG1sOgorICAgICAgICAqIGFwcGxpY2F0aW9ubWFuaWZlc3QvbXVsdGlw
bGUtbGlua3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L21hbmlmZXN0LXNyYy1ibG9ja2VkLmh0bWw6CisKIDIwMjEtMDkt
MDIgIEF5dW1pIEtvamltYSAgPGF5dW1pX2tvamltYUBhcHBsZS5jb20+CiAKICAgICAgICAgWyBN
YWMgRVdTIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9iZWFjb24vYmVhY29uLXJl
ZGlyZWN0Lmh0dHBzLndpbmRvdy5odG1sIGlzIGEgZmxha3kgZmFpbHVyZS4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2FwcGxpY2F0aW9ubWFuaWZlc3QvbXVsdGlwbGUtbGlua3MtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvYXBwbGljYXRpb25tYW5pZmVzdC9tdWx0aXBsZS1saW5rcy1leHBl
Y3RlZC50eHQKaW5kZXggOTBjNzg5NjExNjExLi44NTNmZGIwNzQ5MWUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2FwcGxpY2F0aW9ubWFuaWZlc3QvbXVsdGlwbGUtbGlua3MtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2FwcGxpY2F0aW9ubWFuaWZlc3QvbXVsdGlwbGUtbGlua3MtZXhw
ZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAordXJsc2NoZW1lOi8vMiAtIHdpbGxTZW5kUmVxdWVz
dCA8TlNVUkxSZXF1ZXN0IFVSTCB1cmxzY2hlbWU6Ly8yLCBtYWluIGRvY3VtZW50IFVSTCBtdWx0
aXBsZS1saW5rcy5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwp
CiBtdWx0aXBsZS1saW5rcy5odG1sIC0gZGlkRmluaXNoTG9hZGluZwotdXJsc2NoZW1lOi8vMSAt
IHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCB1cmxzY2hlbWU6Ly8xLCBtYWluIGRv
Y3VtZW50IFVSTCBtdWx0aXBsZS1saW5rcy5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0
UmVzcG9uc2UgKG51bGwpCi11cmxzY2hlbWU6Ly8xIC0gZGlkRmFpbExvYWRpbmdXaXRoRXJyb3I6
IDxOU0Vycm9yIGRvbWFpbiBOU1VSTEVycm9yRG9tYWluLCBjb2RlIC0xMDAyLCBmYWlsaW5nIFVS
TCAidXJsc2NoZW1lOi8vMSI+Cit1cmxzY2hlbWU6Ly8yIC0gZGlkRmFpbExvYWRpbmdXaXRoRXJy
b3I6IDxOU0Vycm9yIGRvbWFpbiBOU1VSTEVycm9yRG9tYWluLCBjb2RlIC0xMDAyLCBmYWlsaW5n
IFVSTCAidXJsc2NoZW1lOi8vMiI+CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FwcGxpY2F0
aW9ubWFuaWZlc3QvbXVsdGlwbGUtbGlua3MuaHRtbCBiL0xheW91dFRlc3RzL2FwcGxpY2F0aW9u
bWFuaWZlc3QvbXVsdGlwbGUtbGlua3MuaHRtbAppbmRleCAwMDdiYjhmODA2MjguLjM3ZDdmMDcy
NTU5OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYXBwbGljYXRpb25tYW5pZmVzdC9tdWx0aXBs
ZS1saW5rcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2FwcGxpY2F0aW9ubWFuaWZlc3QvbXVsdGlw
bGUtbGlua3MuaHRtbApAQCAtMSwxMCArMSwxNCBAQAotPGxpbmsgcmVsPSJtYW5pZmVzdCIgaHJl
Zj0idXJsc2NoZW1lOi8vMSIgbWVkaWE9InByaW50Ij4KLTxsaW5rIHJlbD0ibWFuaWZlc3QiIGhy
ZWY9InVybHNjaGVtZTovLzIiPgogPHNjcmlwdD4KIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewog
ICAgIHRlc3RSdW5uZXIuZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpOwogICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorPC9z
Y3JpcHQ+Cis8bGluayByZWw9Im1hbmlmZXN0IiBocmVmPSJ1cmxzY2hlbWU6Ly8xIiBtZWRpYT0i
cHJpbnQiPgorPGxpbmsgcmVsPSJtYW5pZmVzdCIgaHJlZj0idXJsc2NoZW1lOi8vMiI+Cis8c2Ny
aXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1bm5lci5nZXRBcHBsaWNh
dGlvbk1hbmlmZXN0VGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYmxvY2tlZC5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvbWFuaWZl
c3Qtc3JjLWJsb2NrZWQuaHRtbAppbmRleCBjZDRkMWY3Yjg5NzYuLjJjZDIzMDIzNmE0MSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQ
b2xpY3kvbWFuaWZlc3Qtc3JjLWJsb2NrZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9tYW5pZmVzdC1zcmMtYmxvY2tlZC5o
dG1sCkBAIC0xLDkgKzEsMTMgQEAKIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtU2VjdXJpdHkt
UG9saWN5IiBjb250ZW50PSJtYW5pZmVzdC1zcmMgJ25vbmUnIj4KLTxsaW5rIHJlbD0ibWFuaWZl
c3QiIGhyZWY9Im1hbmlmZXN0LnRlc3QvbWFuaWZlc3QuanNvbiI+CiA8c2NyaXB0PgogICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
ICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgfQorPC9zY3JpcHQ+Cis8
bGluayByZWw9Im1hbmlmZXN0IiBocmVmPSJtYW5pZmVzdC50ZXN0L21hbmlmZXN0Lmpzb24iPgor
PHNjcmlwdD4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgdGVzdFJ1bm5l
ci5nZXRBcHBsaWNhdGlvbk1hbmlmZXN0VGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGFs
ZXJ0KCJQYXNzIik7CiAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBjOGZjOTdlZGVkNDMuLjc1NjRiMjM4NzI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM5IEBACisyMDIxLTA5LTAyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbV2ViIEFwcCBNYW5pZmVzdF0gQWx3YXlzIGZldGNoIHRoZSBmaXJzdCBtYW5pZmVz
dCBpZiBwcm92aWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI5MDU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MjE0ODMzMz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAgIEJlZm9yZSB0aGlzIHBhdGNo
LCBXZWJLaXQgb25seSBmZXRjaGVkL3BhcnNlZC9hcHBsaWVkL2V0Yy4gdGhlIHdlYiBhcHAgbWFu
aWZlc3Qgd2hlbgorICAgICAgICBgLVtXS1dlYlZpZXcgX2dldEFwcGxpY2F0aW9uTWFuaWZlc3RX
aXRoQ29tcGxldGlvbkhhbmRsZXI6XWAgd2FzIGNhbGxlZC4gVGhpcyBwYXRjaCBtYWtlcworICAg
ICAgICBXZWJLaXQgZG8gYWxsIHRoYXQgYXMgc29vbiBhcyBhIGA8bGluayByZWw9Im1hbmlmZXN0
Ij5gICh3aXRoIGEgdmFsaWQgVVJMKSBpcyBlbmNvdW50ZXJlZC4KKyAgICAgICAgVGhpcyBhbGxv
d3MgbWFuaWZlc3RzIHRoYXQgaGF2ZSBzcGVjaWZpZWQgYSBgInRoZW1lX2NvbG9yImAgdG8gYWN0
dWFsbHkgaGF2ZSBhbiBlZmZlY3QuCisKKyAgICAgICAgVGVzdHM6IEFwcGxpY2F0aW9uTWFuaWZl
c3QuQWx3YXlzRmV0Y2gKKyAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uTWFuaWZlc3QuT25seUZp
cnN0TWFuaWZlc3QKKyAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uTWFuaWZlc3QuTm9NYW5pZmVz
dAorICAgICAgICAgICAgICAgQXBwbGljYXRpb25NYW5pZmVzdC5NZWRpYUF0dHJpdXRlCisgICAg
ICAgICAgICAgICBBcHBsaWNhdGlvbk1hbmlmZXN0LkRvZXNOb3RFeGlzdAorICAgICAgICAgICAg
ICAgQXBwbGljYXRpb25NYW5pZmVzdC5CbG9ja2VkCisKKyAgICAgICAgKiBodG1sL0hUTUxMaW5r
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3Mp
OgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpz
dG9wTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bG9hZEFwcGxp
Y2F0aW9uTWFuaWZlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmZpbmlz
aGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QpOiBEZWxl
dGVkLgorICAgICAgICBTaW1wbGlmeSB0aGUgd2F5IHRoYXQgdGhlIFVJUHJvY2VzcyBjb21tdW5p
Y2F0ZXMgd2l0aCB0aGUgV2ViUHJvY2VzcyAoYW5kIGJldHdlZW4gV2ViS2l0IGFuZAorICAgICAg
ICBXZWJDb3JlKS4gVGhlcmUncyBubyBuZWVkIHRvIGhhdmUgYSBgSGFzaE1hcGAgb2YgY2FsbGJh
Y2tzIHNpbmNlIGVhY2ggZG9jdW1lbnQgY2FuIG9ubHkgaGF2ZQorICAgICAgICBhdCBtb3N0IG9u
ZSB3ZWIgYXBwIG1hbmlmZXN0LiBGdXJ0aGVybW9yZSwgaW5zdGVhZCBvZiBoYXZpbmcgYSBgSGFz
aE1hcGAgaW4gYm90aCBXZWJLaXQgYW5kCisgICAgICAgIFdlYkNvcmUsIGp1c3QgcGFzcyBhbG9u
ZyB0aGUgYENvbXBsZXRpb25IYW5kbGVyYCB0byB0aGUgYERvY3VtZW50TG9hZGVyYCBmb3IgYSBz
aW5nbGUgbGlzdAorICAgICAgICBvZiBjb21wbGV0aW9uIGNhbGxiYWNrcyAoYSBsaXN0IGlzIG5l
ZWRlZCBiZWNhdXNlIGl0J3MgcG9zc2libGUgZm9yIGEgY2xpZW50IHRvIGludm9rZQorICAgICAg
ICBgLVtXS1dlYlZpZXcgX2dldEFwcGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxldGlvbkhhbmRs
ZXI6XWAgbXVsdGlwbGUgdGltZXMpLgorCiAyMDIxLTA5LTAyICBBZGl0eWEgS2VlcnRoaSAgPGFr
ZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBTaW1wbGlmeSBkYXRlIHBpY2tlciBs
b2dpYyBmb3IgZGF0ZXRpbWUtbG9jYWwgaW5wdXRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5r
RWxlbWVudC5jcHAKaW5kZXggNzhhOWQ4Mzg5M2Y2Li45ODc3MWQ4MjMxYjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl
ICJET01Ub2tlbkxpc3QuaCIKICNpbmNsdWRlICJEZWZhdWx0UmVzb3VyY2VMb2FkUHJpb3JpdHku
aCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAj
aW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZl
bnRTZW5kZXIuaCIKQEAgLTMwNSwxOSArMzA2LDkgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnBy
b2Nlc3MoKQogCiAgICAgICAgIG1fbG9hZGluZyA9IHRydWU7CiAKLSAgICAgICAgYm9vbCBtZWRp
YVF1ZXJ5TWF0Y2hlcyA9IHRydWU7Ci0gICAgICAgIGlmICghbV9tZWRpYS5pc0VtcHR5KCkpIHsK
LSAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyU3R5bGU+IGRvY3VtZW50U3R5bGU7Ci0g
ICAgICAgICAgICBpZiAoZG9jdW1lbnQoKS5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpCi0gICAgICAg
ICAgICAgICAgZG9jdW1lbnRTdHlsZSA9IFN0eWxlOjpyZXNvbHZlRm9yRG9jdW1lbnQoZG9jdW1l
bnQoKSk7Ci0gICAgICAgICAgICBhdXRvIG1lZGlhID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlKG1f
bWVkaWEsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KGRvY3VtZW50KCkpKTsKLSAgICAgICAgICAg
IExPRyhNZWRpYVF1ZXJpZXMsICJIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MgZXZhbHVhdGluZyBx
dWVyaWVzIik7Ci0gICAgICAgICAgICBtZWRpYVF1ZXJ5TWF0Y2hlcyA9IE1lZGlhUXVlcnlFdmFs
dWF0b3IgeyBkb2N1bWVudCgpLmZyYW1lKCktPnZpZXcoKS0+bWVkaWFUeXBlKCksIGRvY3VtZW50
KCksIGRvY3VtZW50U3R5bGUgPyAmKmRvY3VtZW50U3R5bGUgOiBudWxscHRyIH0uZXZhbHVhdGUo
bWVkaWEuZ2V0KCkpOwotICAgICAgICB9Ci0KICAgICAgICAgLy8gRG9uJ3QgaG9sZCB1cCByZW5k
ZXIgdHJlZSBjb25zdHJ1Y3Rpb24gYW5kIHNjcmlwdCBleGVjdXRpb24gb24gc3R5bGVzaGVldHMK
ICAgICAgICAgLy8gdGhhdCBhcmUgbm90IG5lZWRlZCBmb3IgdGhlIHJlbmRlcmluZyBhdCB0aGUg
bW9tZW50LgotICAgICAgICBib29sIGlzQWN0aXZlID0gbWVkaWFRdWVyeU1hdGNoZXMgJiYgIWlz
QWx0ZXJuYXRlKCk7CisgICAgICAgIGJvb2wgaXNBY3RpdmUgPSBtZWRpYUF0dHJpYnV0ZU1hdGNo
ZXMoKSAmJiAhaXNBbHRlcm5hdGUoKTsKICAgICAgICAgYWRkUGVuZGluZ1NoZWV0KGlzQWN0aXZl
ID8gQWN0aXZlU2hlZXQgOiBJbmFjdGl2ZVNoZWV0KTsKIAogICAgICAgICAvLyBMb2FkIHN0eWxl
c2hlZXRzIHRoYXQgYXJlIG5vdCBuZWVkZWQgZm9yIHRoZSByZW5kZXJpbmcgaW1tZWRpYXRlbHkg
d2l0aCBsb3cgcHJpb3JpdHkuCkBAIC0zNTEsMTEgKzM0MiwyNCBAQCB2b2lkIEhUTUxMaW5rRWxl
bWVudDo6cHJvY2VzcygpCiAgICAgICAgICAgICBzaGVldExvYWRlZCgpOwogICAgICAgICAgICAg
bm90aWZ5TG9hZGVkU2hlZXRBbmRBbGxDcml0aWNhbFN1YnJlc291cmNlcyh0cnVlKTsKICAgICAg
ICAgfQotICAgIH0gZWxzZSBpZiAobV9zaGVldCkgeworCisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAobV9zaGVldCkgewogICAgICAgICAvLyB3ZSBubyBsb25nZXIgY29udGFpbiBh
IHN0eWxlc2hlZXQsIGUuZy4gcGVyaGFwcyByZWwgb3IgdHlwZSB3YXMgY2hhbmdlZAogICAgICAg
ICBjbGVhclNoZWV0KCk7CiAgICAgICAgIG1fc3R5bGVTY29wZS0+ZGlkQ2hhbmdlQWN0aXZlU3R5
bGVTaGVldENhbmRpZGF0ZXMoKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KKworI2lmIEVOQUJM
RShBUFBMSUNBVElPTl9NQU5JRkVTVCkKKyAgICBpZiAoaXNBcHBsaWNhdGlvbk1hbmlmZXN0KCkp
IHsKKyAgICAgICAgaWYgKFJlZlB0ciBsb2FkZXIgPSBkb2N1bWVudCgpLmxvYWRlcigpKQorICAg
ICAgICAgICAgbG9hZGVyLT5sb2FkQXBwbGljYXRpb25NYW5pZmVzdCh7IH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKIH0K
IAogdm9pZCBIVE1MTGlua0VsZW1lbnQ6OmNsZWFyU2hlZXQoKQpAQCAtNDk5LDYgKzUwMywxOSBA
QCBET01Ub2tlbkxpc3QmIEhUTUxMaW5rRWxlbWVudDo6c2l6ZXMoKQogICAgIHJldHVybiAqbV9z
aXplczsKIH0KIAorYm9vbCBIVE1MTGlua0VsZW1lbnQ6Om1lZGlhQXR0cmlidXRlTWF0Y2hlcygp
IGNvbnN0Cit7CisgICAgaWYgKG1fbWVkaWEuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyU3R5bGU+IGRvY3VtZW50U3R5bGU7CisgICAg
aWYgKGRvY3VtZW50KCkuaGFzTGl2aW5nUmVuZGVyVHJlZSgpKQorICAgICAgICBkb2N1bWVudFN0
eWxlID0gU3R5bGU6OnJlc29sdmVGb3JEb2N1bWVudChkb2N1bWVudCgpKTsKKyAgICBhdXRvIG1l
ZGlhID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlKG1fbWVkaWEsIE1lZGlhUXVlcnlQYXJzZXJDb250
ZXh0KGRvY3VtZW50KCkpKTsKKyAgICBMT0coTWVkaWFRdWVyaWVzLCAiSFRNTExpbmtFbGVtZW50
OjptZWRpYUF0dHJpYnV0ZU1hdGNoZXMiKTsKKyAgICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRv
cihkb2N1bWVudCgpLmZyYW1lKCktPnZpZXcoKS0+bWVkaWFUeXBlKCksIGRvY3VtZW50KCksIGRv
Y3VtZW50U3R5bGUgPyAmKmRvY3VtZW50U3R5bGUgOiBudWxscHRyKS5ldmFsdWF0ZShtZWRpYS5n
ZXQoKSk7Cit9CisKIHZvaWQgSFRNTExpbmtFbGVtZW50OjpsaW5rTG9hZGVkKCkKIHsKICAgICBt
X2xvYWRlZFJlc291cmNlID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTExpbmtFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5o
CmluZGV4IDI2NGY5NGExOTEwMy4uZGEzYmU1YjkwMjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmgKQEAgLTY1LDYgKzY1LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNFbmFi
bGVkVmlhU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9kaXNhYmxlZFN0YXRlID09IEVuYWJsZWRW
aWFTY3JpcHQ7IH0KICAgICBET01Ub2tlbkxpc3QmIHNpemVzKCk7CiAKKyAgICBib29sIG1lZGlh
QXR0cmlidXRlTWF0Y2hlcygpIGNvbnN0OworCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRD
cm9zc09yaWdpbihjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IGNyb3NzT3JpZ2luKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBcyhjb25z
dCBBdG9tU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApp
bmRleCA5MTdmY2IyMWMxZmQuLmE1Yzk5ODEyYjUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCkBAIC05Niw2ICs5Niw3IEBACiAjaW5jbHVkZSA8d3RmL0NvbXBs
ZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzMyLDkg
KzMzMyw5IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0b3BMb2FkaW5nKCkKICAgICBtX2ljb25z
UGVuZGluZ0xvYWREZWNpc2lvbi5jbGVhcigpOwogICAgIAogI2lmIEVOQUJMRShBUFBMSUNBVElP
Tl9NQU5JRkVTVCkKLSAgICBmb3IgKGF1dG8gY2FsbGJhY2tJZGVudGlmaWVyIDogbV9hcHBsaWNh
dGlvbk1hbmlmZXN0TG9hZGVycy52YWx1ZXMoKSkKLSAgICAgICAgbm90aWZ5RmluaXNoZWRMb2Fk
aW5nQXBwbGljYXRpb25NYW5pZmVzdChjYWxsYmFja0lkZW50aWZpZXIsIHN0ZDo6bnVsbG9wdCk7
Ci0gICAgbV9hcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVycy5jbGVhcigpOworICAgIG1fYXBwbGlj
YXRpb25NYW5pZmVzdExvYWRlciA9IG51bGxwdHI7CisgICAgbV9maW5pc2hlZExvYWRpbmdBcHBs
aWNhdGlvbk1hbmlmZXN0ID0gZmFsc2U7CisgICAgbm90aWZ5RmluaXNoZWRMb2FkaW5nQXBwbGlj
YXRpb25NYW5pZmVzdCgpOwogI2VuZGlmCiAKICAgICAvLyBBbHdheXMgY2FuY2VsIG11bHRpcGFy
dCBsb2FkZXJzCkBAIC0xNTUzLDY3ICsxNTU0LDg2IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNs
ZWFyTWFpblJlc291cmNlTG9hZGVyKCkKIH0KIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5J
RkVTVCkKLXVpbnQ2NF90IERvY3VtZW50TG9hZGVyOjpsb2FkQXBwbGljYXRpb25NYW5pZmVzdCgp
CisKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmxvYWRBcHBsaWNhdGlvbk1hbmlmZXN0KENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0PiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHN0YXRpYyB1aW50NjRfdCBuZXh0Q2FsbGJh
Y2tJRCA9IDE7CisgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICBtX2xvYWRBcHBs
aWNhdGlvbk1hbmlmZXN0Q2FsbGJhY2tzLmFwcGVuZChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisKKyAgICBib29sIGlzTG9hZGluZyA9ICEhbV9hcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVy
OworICAgIGF1dG8gbm90aWZ5SWZVbmFibGVUb0xvYWQgPSBtYWtlU2NvcGVFeGl0KFsmXSB7Cisg
ICAgICAgIGlmICghaXNMb2FkaW5nIHx8IG1fZmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5p
ZmVzdCkKKyAgICAgICAgICAgIG5vdGlmeUZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZl
c3QoKTsKKyAgICB9KTsKKworICAgIGlmIChpc0xvYWRpbmcpCisgICAgICAgIHJldHVybjsKIAog
ICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50
KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2ZyYW1l
LT5pc01haW5GcmFtZSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIWRvY3VtZW50LT5p
c1RvcERvY3VtZW50KCkpCisgICAgICAgIHJldHVybjsKIAogICAgIGlmIChkb2N1bWVudC0+dXJs
KCkuaXNFbXB0eSgpIHx8IGRvY3VtZW50LT51cmwoKS5wcm90b2NvbElzQWJvdXQoKSkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gaGVhZCA9IGRvY3VtZW50
LT5oZWFkKCk7CiAgICAgaWYgKCFoZWFkKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuOwogCiAgICAgVVJMIG1hbmlmZXN0VVJMOwogICAgIGJvb2wgdXNlQ3JlZGVudGlhbHMgPSBm
YWxzZTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGxpbmsgOiBjaGlsZHJlbk9mVHlwZTxIVE1MTGlu
a0VsZW1lbnQ+KCpoZWFkKSkgewotICAgICAgICBpZiAobGluay5pc0FwcGxpY2F0aW9uTWFuaWZl
c3QoKSkgewotICAgICAgICAgICAgbWFuaWZlc3RVUkwgPSBsaW5rLmhyZWYoKTsKLSAgICAgICAg
ICAgIHVzZUNyZWRlbnRpYWxzID0gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShsaW5rLmF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpjcm9zc29yaWdpbkF0dHIpLCAidXNl
LWNyZWRlbnRpYWxzIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQorICAgICAgICBp
ZiAoIWxpbmsuaXNBcHBsaWNhdGlvbk1hbmlmZXN0KCkpCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBhdXRvIGhyZWYgPSBsaW5rLmhyZWYoKTsKKyAgICAgICAgaWYgKGhyZWYuaXNF
bXB0eSgpIHx8ICFocmVmLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIGlmICghbGluay5tZWRpYUF0dHJpYnV0ZU1hdGNoZXMoKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgIG1hbmlmZXN0VVJMID0gaHJlZjsKKyAgICAgICAgdXNlQ3JlZGVudGlh
bHMgPSBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGxpbmsuYXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihIVE1MTmFtZXM6OmNyb3Nzb3JpZ2luQXR0ciksICJ1c2UtY3JlZGVudGlhbHMiKTsK
KyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYgKG1hbmlmZXN0VVJMLmlzRW1wdHkoKSB8
fCAhbWFuaWZlc3RVUkwuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0byBtYW5pZmVzdExvYWRlciA9IG1ha2VVbmlxdWU8QXBwbGljYXRpb25N
YW5pZmVzdExvYWRlcj4oKnRoaXMsIG1hbmlmZXN0VVJMLCB1c2VDcmVkZW50aWFscyk7Ci0gICAg
YXV0byogcmF3TWFuaWZlc3RMb2FkZXIgPSBtYW5pZmVzdExvYWRlci5nZXQoKTsKLSAgICBhdXRv
IGNhbGxiYWNrSUQgPSBuZXh0Q2FsbGJhY2tJRCsrOwotICAgIG1fYXBwbGljYXRpb25NYW5pZmVz
dExvYWRlcnMuc2V0KFdURk1vdmUobWFuaWZlc3RMb2FkZXIpLCBjYWxsYmFja0lEKTsKKyAgICBt
X2FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXIgPSBtYWtlVW5pcXVlPEFwcGxpY2F0aW9uTWFuaWZl
c3RMb2FkZXI+KCp0aGlzLCBtYW5pZmVzdFVSTCwgdXNlQ3JlZGVudGlhbHMpOwogCi0gICAgaWYg
KCFyYXdNYW5pZmVzdExvYWRlci0+c3RhcnRMb2FkaW5nKCkpIHsKLSAgICAgICAgbV9hcHBsaWNh
dGlvbk1hbmlmZXN0TG9hZGVycy5yZW1vdmUocmF3TWFuaWZlc3RMb2FkZXIpOwotICAgICAgICBy
ZXR1cm4gMDsKLSAgICB9Ci0KLSAgICByZXR1cm4gY2FsbGJhY2tJRDsKKyAgICBpc0xvYWRpbmcg
PSBtX2FwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXItPnN0YXJ0TG9hZGluZygpOworICAgIGlmICgh
aXNMb2FkaW5nKQorICAgICAgICBtX2ZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3Qg
PSB0cnVlOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmdBcHBsaWNh
dGlvbk1hbmlmZXN0KEFwcGxpY2F0aW9uTWFuaWZlc3RMb2FkZXImIGxvYWRlcikKIHsKKyAgICBB
U1NFUlRfVU5VU0VEKGxvYWRlciwgJmxvYWRlciA9PSBtX2FwcGxpY2F0aW9uTWFuaWZlc3RMb2Fk
ZXIuZ2V0KCkpOworCiAgICAgLy8gSWYgdGhlIERvY3VtZW50TG9hZGVyIGhhcyBkZXRhY2hlZCBm
cm9tIGl0cyBmcmFtZSwgYWxsIG1hbmlmZXN0IGxvYWRzIHNob3VsZCBoYXZlIGFscmVhZHkgYmVl
biBjYW5jZWxlZC4KICAgICBBU1NFUlQobV9mcmFtZSk7CiAKLSAgICBhdXRvIGNhbGxiYWNrSWRl
bnRpZmllciA9IG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRlcnMuZ2V0KCZsb2FkZXIpOwotICAg
IG5vdGlmeUZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QoY2FsbGJhY2tJZGVudGlm
aWVyLCBsb2FkZXIucHJvY2Vzc01hbmlmZXN0KCkpOwotICAgIG1fYXBwbGljYXRpb25NYW5pZmVz
dExvYWRlcnMucmVtb3ZlKCZsb2FkZXIpOworICAgIEFTU0VSVCghbV9maW5pc2hlZExvYWRpbmdB
cHBsaWNhdGlvbk1hbmlmZXN0KTsKKyAgICBtX2ZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFu
aWZlc3QgPSB0cnVlOworCisgICAgbm90aWZ5RmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5p
ZmVzdCgpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZExvYWRpbmdB
cHBsaWNhdGlvbk1hbmlmZXN0KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgc3RkOjpvcHRp
b25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0PiBtYW5pZmVzdCkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6
Om5vdGlmeUZpbmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QoKQogewotICAgIFJFTEVB
U0VfQVNTRVJUKGNhbGxiYWNrSWRlbnRpZmllcik7Ci0gICAgUkVMRUFTRV9BU1NFUlQobV9mcmFt
ZSk7Ci0gICAgbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZmluaXNoZWRMb2FkaW5nQXBwbGlj
YXRpb25NYW5pZmVzdChjYWxsYmFja0lkZW50aWZpZXIsIG1hbmlmZXN0KTsKKyAgICBzdGQ6Om9w
dGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+IG1hbmlmZXN0ID0gbV9hcHBsaWNhdGlvbk1hbmlm
ZXN0TG9hZGVyID8gbV9hcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyLT5wcm9jZXNzTWFuaWZlc3Qo
KSA6IHN0ZDo6bnVsbG9wdDsKKyAgICBBU1NFUlRfSU1QTElFUyhtYW5pZmVzdCwgbV9maW5pc2hl
ZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KTsKKworICAgIGZvciAoYXV0byYgY2FsbGJhY2sg
OiBzdGQ6OmV4Y2hhbmdlKG1fbG9hZEFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFja3MsIHsgfSkp
CisgICAgICAgIGNhbGxiYWNrKG1hbmlmZXN0KTsKIH0KLSNlbmRpZgorCisjZW5kaWYgLy8gRU5B
QkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogCiBib29sIERvY3VtZW50TG9hZGVyOjppc0xvYWRp
bmdJbkFQSVNlbnNlKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgKaW5kZXggNzEyNmVkNGUzZGI1Li5hNzMxMzkyNmFjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5oCkBAIC0zOTMsNyArMzkzLDcgQEAgcHVibGljOgogICAgIGNvbnN0
IFZlY3RvcjxMaW5rSWNvbj4mIGxpbmtJY29ucygpIGNvbnN0IHsgcmV0dXJuIG1fbGlua0ljb25z
OyB9CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi0gICAgV0VCQ09SRV9FWFBP
UlQgdWludDY0X3QgbG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGxvYWRBcHBsaWNhdGlvbk1hbmlmZXN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3Qgc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlmZXN0PiYpPiYmKTsKICAgICB2b2lkIGZp
bmlzaGVkTG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QoQXBwbGljYXRpb25NYW5pZmVzdExvYWRl
ciYpOwogI2VuZGlmCiAKQEAgLTUxNiw3ICs1MTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYmVj
b21lTWFpblJlc291cmNlQ2xpZW50KCk7CiAKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZF
U1QpCi0gICAgdm9pZCBub3RpZnlGaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KHVp
bnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbk1hbmlm
ZXN0Pik7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0
KCk7CiAjZW5kaWYKIAogICAgIC8vIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudApAQCAtNjIx
LDcgKzYyMSw5IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPExpbmtJY29uPiBtX2xpbmtJY29uczsK
IAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLSAgICBIYXNoTWFwPHN0ZDo6dW5p
cXVlX3B0cjxBcHBsaWNhdGlvbk1hbmlmZXN0TG9hZGVyPiwgdWludDY0X3Q+IG1fYXBwbGljYXRp
b25NYW5pZmVzdExvYWRlcnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEFwcGxpY2F0aW9uTWFuaWZl
c3RMb2FkZXI+IG1fYXBwbGljYXRpb25NYW5pZmVzdExvYWRlcjsKKyAgICBWZWN0b3I8Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uTWFuaWZlc3Q+
Jik+PiBtX2xvYWRBcHBsaWNhdGlvbk1hbmlmZXN0Q2FsbGJhY2tzOworICAgIGJvb2wgbV9maW5p
c2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0IHsgZmFsc2UgfTsKICNlbmRpZgogCiAgICAg
VmVjdG9yPEN1c3RvbUhlYWRlckZpZWxkcz4gbV9jdXN0b21IZWFkZXJGaWVsZHM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IGQzYmY5NDU0YWU2MS4uMThiNjkxOGJhZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBA
CisyMDIxLTA5LTAyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAg
ICBbV2ViIEFwcCBNYW5pZmVzdF0gQWx3YXlzIGZldGNoIHRoZSBmaXJzdCBtYW5pZmVzdCBpZiBw
cm92aWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI5MDU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MjE0ODMzMz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAgIEJlZm9yZSB0aGlzIHBhdGNoLCBXZWJL
aXQgb25seSBmZXRjaGVkL3BhcnNlZC9hcHBsaWVkL2V0Yy4gdGhlIHdlYiBhcHAgbWFuaWZlc3Qg
d2hlbgorICAgICAgICBgLVtXS1dlYlZpZXcgX2dldEFwcGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29t
cGxldGlvbkhhbmRsZXI6XWAgd2FzIGNhbGxlZC4gVGhpcyBwYXRjaCBtYWtlcworICAgICAgICBX
ZWJLaXQgZG8gYWxsIHRoYXQgYXMgc29vbiBhcyBhIGA8bGluayByZWw9Im1hbmlmZXN0Ij5gICh3
aXRoIGEgdmFsaWQgVVJMKSBpcyBlbmNvdW50ZXJlZC4KKyAgICAgICAgVGhpcyBhbGxvd3MgbWFu
aWZlc3RzIHRoYXQgaGF2ZSBzcGVjaWZpZWQgYSBgInRoZW1lX2NvbG9yImAgdG8gYWN0dWFsbHkg
aGF2ZSBhbiBlZmZlY3QuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdBcHBsaWNhdGlvbk1hbmlmZXN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6fldl
YlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkRmluaXNoTG9hZGluZ0FwcGxpY2F0aW9u
TWFuaWZlc3QpOgorICAgICAgICBTaW1wbGlmeSB0aGUgd2F5IHRoYXQgdGhlIFVJUHJvY2VzcyBj
b21tdW5pY2F0ZXMgd2l0aCB0aGUgV2ViUHJvY2VzcyAoYW5kIGJldHdlZW4gV2ViS2l0IGFuZAor
ICAgICAgICBXZWJDb3JlKS4gVGhlcmUncyBubyBuZWVkIHRvIGhhdmUgYSBgSGFzaE1hcGAgb2Yg
Y2FsbGJhY2tzIHNpbmNlIGVhY2ggZG9jdW1lbnQgY2FuIG9ubHkgaGF2ZQorICAgICAgICBhdCBt
b3N0IG9uZSB3ZWIgYXBwIG1hbmlmZXN0LiBGdXJ0aGVybW9yZSwgaW5zdGVhZCBvZiBoYXZpbmcg
YSBgSGFzaE1hcGAgaW4gYm90aCBXZWJLaXQgYW5kCisgICAgICAgIFdlYkNvcmUsIGp1c3QgcGFz
cyBhbG9uZyB0aGUgYENvbXBsZXRpb25IYW5kbGVyYCB0byB0aGUgYERvY3VtZW50TG9hZGVyYCBm
b3IgYSBzaW5nbGUgbGlzdAorICAgICAgICBvZiBjb21wbGV0aW9uIGNhbGxiYWNrcyAoYSBsaXN0
IGlzIG5lZWRlZCBiZWNhdXNlIGl0J3MgcG9zc2libGUgZm9yIGEgY2xpZW50IHRvIGludm9rZQor
ICAgICAgICBgLVtXS1dlYlZpZXcgX2dldEFwcGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxldGlv
bkhhbmRsZXI6XWAgbXVsdGlwbGUgdGltZXMpLgorCiAyMDIxLTA5LTAyICBBZGl0eWEgS2VlcnRo
aSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBTaW1wbGlmeSBkYXRlIHBp
Y2tlciBsb2dpYyBmb3IgZGF0ZXRpbWUtbG9jYWwgaW5wdXRzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAppbmRleCBkNzI5YmFjYjU4OTAuLmNkM2U3MWEyNjQyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xOTMzLDE3ICsxOTMzLDYgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlkQ3JlYXRlV2luZG93KERPTVdpbmRvdyYgd2luZG93KQogICAgIHdl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlV2luZG93KG1fZnJh
bWUtPmZyYW1lSUQoKSwgd2luZG93LmlkZW50aWZpZXIoKSkpOwogfQogCi0jaWYgRU5BQkxFKEFQ
UExJQ0FUSU9OX01BTklGRVNUKQotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRM
b2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mIG1hbmlmZXN0
KQotewotICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7Ci0gICAgaWYgKCF3
ZWJQYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICB3ZWJQYWdlLT5kaWRGaW5pc2hMb2FkaW5n
QXBwbGljYXRpb25NYW5pZmVzdChjYWxsYmFja0lkZW50aWZpZXIsIG1hbmlmZXN0KTsKLX0KLSNl
bmRpZiAvLyBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCi0KICNpZiBFTkFCTEUoQVBQX0JP
VU5EX0RPTUFJTlMpCiBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRFbmFibGVJbkFw
cEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAppbmRleCBmNjEyYjk3M2FjYTUuLjMwNzYyMDAwZmNmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKQEAgLTI3MCwxMCArMjcwLDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
ZGlkQ3JlYXRlV2luZG93KFdlYkNvcmU6OkRPTVdpbmRvdyYpIGZpbmFsOwogCi0jaWYgRU5BQkxF
KEFQUExJQ0FUSU9OX01BTklGRVNUKQotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nQXBwbGljYXRp
b25NYW5pZmVzdCh1aW50NjRfdCwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNh
dGlvbk1hbmlmZXN0PiYpIGZpbmFsOwotI2VuZGlmCi0KICAgICBSZWY8V2ViRnJhbWU+IG1fZnJh
bWU7CiAgICAgUmVmUHRyPFBsdWdpblZpZXc+IG1fcGx1Z2luVmlldzsKICAgICBib29sIG1faGFz
U2VudFJlc3BvbnNlVG9QbHVnaW5WaWV3IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggN2UwMDY4ODYxNWVlLi4xN2IyOWE1NmI1
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBA
IC0xMDUxLDEzICsxMDUxLDYgQEAgV2ViUGFnZTo6fldlYlBhZ2UoKQogCiAgICAgZm9yIChhdXRv
JiBjb21wbGV0aW9uSGFuZGxlciA6IHN0ZDo6ZXhjaGFuZ2UobV9tYXJrTGF5ZXJzQXNWb2xhdGls
ZUNvbXBsZXRpb25IYW5kbGVycywgeyB9KSkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFs
c2UpOwotICAgIAotI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLSAgICBmb3IgKGF1
dG8mIGNvbXBsZXRpb25IYW5kbGVyIDogbV9hcHBsaWNhdGlvbk1hbmlmZXN0RmV0Y2hDYWxsYmFj
a01hcC52YWx1ZXMoKSkgewotICAgICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwotICAgIH0KLSNlbmRpZgogfQog
CiBJUEM6OkNvbm5lY3Rpb24qIFdlYlBhZ2U6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29u
c3QKQEAgLTcxOTcsNiArNzE5MCw3IEBAIFJlZlB0cjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+IFdl
YlBhZ2U6OmF0dGFjaG1lbnRFbGVtZW50V2l0aElkZW50aWZpZXIoY29uc3QgU3RyCiAjZW5kaWYg
Ly8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9N
QU5JRkVTVCkKKwogdm9pZCBXZWJQYWdlOjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1h
bmlmZXN0PiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIERvY3VtZW50KiBtYWluRnJh
bWVEb2N1bWVudCA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKTsKQEAgLTcy
MDQsMTggKzcxOTgsOSBAQCB2b2lkIFdlYlBhZ2U6OmdldEFwcGxpY2F0aW9uTWFuaWZlc3QoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPAogICAgIGlmICghbG9hZGVy
KQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKIAotICAg
IGF1dG8gY29yZUNhbGxiYWNrSUQgPSBsb2FkZXItPmxvYWRBcHBsaWNhdGlvbk1hbmlmZXN0KCk7
Ci0gICAgaWYgKCFjb3JlQ2FsbGJhY2tJRCkKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKHN0ZDo6bnVsbG9wdCk7Ci0KLSAgICBtX2FwcGxpY2F0aW9uTWFuaWZlc3RGZXRjaENhbGxi
YWNrTWFwLmFkZChjb3JlQ2FsbGJhY2tJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgIGxvYWRlci0+bG9hZEFwcGxpY2F0aW9uTWFuaWZlc3QoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogfQogCi12b2lkIFdlYlBhZ2U6OmRpZEZpbmlzaExvYWRpbmdBcHBsaWNhdGlvbk1h
bmlmZXN0KHVpbnQ2NF90IGNvcmVDYWxsYmFja0lELCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+JiBtYW5pZmVzdCkKLXsKLSAgICBpZiAoYXV0byBjYWxs
YmFjayA9IG1fYXBwbGljYXRpb25NYW5pZmVzdEZldGNoQ2FsbGJhY2tNYXAudGFrZShjb3JlQ2Fs
bGJhY2tJRCkpCi0gICAgICAgIGNhbGxiYWNrKG1hbmlmZXN0KTsKLX0KICNlbmRpZiAvLyBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAKIHZvaWQgV2ViUGFnZTo6dXBkYXRlQ3VycmVudE1v
ZGlmaWVyU3RhdGUoT3B0aW9uU2V0PFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVyPiBtb2RpZmllcnMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggODQ1ZWMw
OWQxNThjLi4xMWRkYmVmYTg2NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKQEAgLTEyOTQsNyArMTI5NCw2IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShB
UFBMSUNBVElPTl9NQU5JRkVTVCkKICAgICB2b2lkIGdldEFwcGxpY2F0aW9uTWFuaWZlc3QoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0
aW9uTWFuaWZlc3Q+Jik+JiYpOwotICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZ0FwcGxpY2F0aW9u
TWFuaWZlc3QodWludDY0X3QsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRp
b25NYW5pZmVzdD4mKTsKICNlbmRpZgogCiAjaWYgVVNFKFdQRV9SRU5ERVJFUikKQEAgLTIzMDks
MTAgKzIzMDgsNiBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgRnVuY3Rpb248
dm9pZChib29sIGdyYW50ZWQpPj4gbV9zdG9yYWdlQWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcDsK
IAotI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKLSAgICBIYXNoTWFwPHVpbnQ2NF90
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBw
bGljYXRpb25NYW5pZmVzdD4mKT4+IG1fYXBwbGljYXRpb25NYW5pZmVzdEZldGNoQ2FsbGJhY2tN
YXA7Ci0jZW5kaWYKLQogICAgIE9wdGlvblNldDxMYXllclRyZWVGcmVlemVSZWFzb24+IG1fbGF5
ZXJUcmVlRnJlZXplUmVhc29uczsKICAgICBib29sIG1faXNTdXNwZW5kZWQgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9uZWVkc0ZvbnRBdHRyaWJ1dGVzIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0MjFlMTlhNGFhMDAuLmMwY2My
NDIyMmFkMiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTA5LTAyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KKworICAgICAgICBbV2ViIEFwcCBNYW5pZmVzdF0gQWx3YXlzIGZldGNoIHRoZSBm
aXJzdCBtYW5pZmVzdCBpZiBwcm92aWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MDU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MjE0ODMz
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBsaWNhdGlvbk1hbmlmZXN0Lm1tOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVC5BcHBsaWNhdGlvbk1hbmlmZXN0LkFsd2F5c0ZldGNo
KTogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNULkFwcGxpY2F0aW9uTWFuaWZl
c3QuT25seUZpcnN0TWFuaWZlc3QpOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QuQXBwbGljYXRpb25NYW5pZmVzdC5Ob01hbmlmZXN0KTogQWRkZWQuCisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNULkFwcGxpY2F0aW9uTWFuaWZlc3QuTWVkaWFBdHRyaXV0ZSk6IEFkZGVk
LgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVC5BcHBsaWNhdGlvbk1hbmlmZXN0LkRvZXNO
b3RFeGlzdCk6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVC5BcHBsaWNhdGlv
bk1hbmlmZXN0LkJsb2NrZWQpOiBBZGRlZC4KKwogMjAyMS0wOS0wMiAgQ2FybG9zIEFsYmVydG8g
TG9wZXogUGVyZXogIDxjbG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbcnVuLXBlcmYtdGVz
dHNdIEFkZCBzdXBwb3J0IGZvciBweXRob24zIGFuZCB1c2UgaXQgYnkgZGVmYXVsdApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBsaWNhdGlvbk1h
bmlmZXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBsaWNh
dGlvbk1hbmlmZXN0Lm1tCmluZGV4IGEyNDczYjYyYjBmZS4uYzliZjhjZDAxZTU2IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcGxpY2F0aW9uTWFu
aWZlc3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBs
aWNhdGlvbk1hbmlmZXN0Lm1tCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKIAogY29uc3RleHByIENHRmxvYXQgcmVkQ29sb3JDb21wb25lbnRzWzRdID0geyAxLCAw
LCAwLCAxIH07CiAKLVRFU1QoV2ViS2l0LCBBcHBsaWNhdGlvbk1hbmlmZXN0Q29kaW5nKQorVEVT
VChBcHBsaWNhdGlvbk1hbmlmZXN0LCBDb2RpbmcpCiB7CiAgICAgYXV0byBqc29uU3RyaW5nID0g
QCJ7IFwibmFtZVwiOiBcIlRlc3ROYW1lXCIsIFwic2hvcnRfbmFtZVwiOiBcIlRlc3RTaG9ydE5h
bWVcIiwgXCJkZXNjcmlwdGlvblwiOiBcIlRlc3REZXNjcmlwdGlvblwiLCBcInNjb3BlXCI6IFwi
aHR0cHM6Ly90ZXN0LmNvbS9hcHBcIiwgXCJzdGFydF91cmxcIjogXCJodHRwczovL3Rlc3QuY29t
L2FwcC9pbmRleC5odG1sXCIsIFwiZGlzcGxheVwiOiBcIm1pbmltYWwtdWlcIiwgXCJ0aGVtZV9j
b2xvclwiOiBcInJlZFwiIH0iOwogICAgIFJldGFpblB0cjxfV0tBcHBsaWNhdGlvbk1hbmlmZXN0
PiBtYW5pZmVzdCB7IFtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGFwcGxpY2F0aW9uTWFuaWZlc3RG
cm9tSlNPTjpqc29uU3RyaW5nIG1hbmlmZXN0VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0
cHM6Ly90ZXN0LmNvbS9tYW5pZmVzdC5qc29uIl0gZG9jdW1lbnRVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJodHRwczovL3Rlc3QuY29tLyJdXSB9OwpAQCAtNjAsNyArNjAsNyBAQCBURVNUKFdl
YktpdCwgQXBwbGljYXRpb25NYW5pZmVzdENvZGluZykKICAgICBFWFBFQ1RfVFJVRShDR0NvbG9y
RXF1YWxUb0NvbG9yKG1hbmlmZXN0LmdldCgpLnRoZW1lQ29sb3IuQ0dDb2xvciwgcmVkQ29sb3Iu
Z2V0KCkpKTsKIH0KIAotVEVTVChXZWJLaXQsIEFwcGxpY2F0aW9uTWFuaWZlc3RCYXNpYykKK1RF
U1QoQXBwbGljYXRpb25NYW5pZmVzdCwgQmFzaWMpCiB7CiAgICAgc3RhdGljIGJvb2wgZG9uZSA9
IGZhbHNlOwogCkBAIC0xMTcsNyArMTE3LDcgQEAgVEVTVChXZWJLaXQsIEFwcGxpY2F0aW9uTWFu
aWZlc3RCYXNpYykKICAgICBVdGlsOjpydW4oJmRvbmUpOwogfQogCi1URVNUKFdlYktpdCwgQXBw
bGljYXRpb25NYW5pZmVzdERpc3BsYXlNb2RlKQorVEVTVChBcHBsaWNhdGlvbk1hbmlmZXN0LCBE
aXNwbGF5TW9kZSkKIHsKICAgICBzdGF0aWMgYm9vbCBkb25lOwogICAgIE5TRGljdGlvbmFyeSAq
ZGlzcGxheU1vZGVzQW5kRXhwZWN0ZWRDb250ZW50ID0gQHsKQEAgLTE0OSw2ICsxNDksMTM1IEBA
IFRFU1QoV2ViS2l0LCBBcHBsaWNhdGlvbk1hbmlmZXN0RGlzcGxheU1vZGUpCiAgICAgfV07CiB9
CiAKK1RFU1QoQXBwbGljYXRpb25NYW5pZmVzdCwgQWx3YXlzRmV0Y2gpCit7CisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNa
ZXJvUmVjdF0pOworCisgICAgTlNEaWN0aW9uYXJ5ICptYW5pZmVzdE9iamVjdCA9IEB7IEAidGhl
bWVfY29sb3IiOiBAInJlZCIgfTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxT
dHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8bGluayByZWw9XCJtYW5pZmVzdFwi
IGhyZWY9XCJkYXRhOmFwcGxpY2F0aW9uL21hbmlmZXN0K2pzb247Y2hhcnNldD11dGYtODtiYXNl
NjQsJUBcIj4iLCBbW05TSlNPTlNlcmlhbGl6YXRpb24gZGF0YVdpdGhKU09OT2JqZWN0Om1hbmlm
ZXN0T2JqZWN0IG9wdGlvbnM6MCBlcnJvcjpuaWxdIGJhc2U2NEVuY29kZWRTdHJpbmdXaXRoT3B0
aW9uczowXV1dOworCisgICAgeworICAgICAgICBhdXRvIHNSR0JDb2xvclNwYWNlID0gYWRvcHRD
RihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOworICAgICAg
ICBhdXRvIHJlZENvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdl
dCgpLCByZWRDb2xvckNvbXBvbmVudHMpKTsKKyAgICAgICAgd2hpbGUgKCFDR0NvbG9yRXF1YWxU
b0NvbG9yKFt3ZWJWaWV3IHRoZW1lQ29sb3JdLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSkKKyAg
ICAgICAgICAgIFV0aWw6OnNsZWVwKDEpOworICAgIH0KKworICAgIF9fYmxvY2sgYm9vbCBkb25l
ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2dldEFwcGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxl
dGlvbkhhbmRsZXI6XihfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICptYW5pZmVzdCkgeworICAgICAg
ICBhdXRvIHNSR0JDb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFt
ZShrQ0dDb2xvclNwYWNlU1JHQikpOworICAgICAgICBhdXRvIHJlZENvbG9yID0gYWRvcHRDRihD
R0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlLmdldCgpLCByZWRDb2xvckNvbXBvbmVudHMpKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihtYW5pZmVzdC50aGVtZUNv
bG9yLkNHQ29sb3IsIHJlZENvbG9yLmdldCgpKSk7CisKKyAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgfV07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKK30KKworVEVTVChBcHBsaWNhdGlvbk1hbmlm
ZXN0LCBPbmx5Rmlyc3RNYW5pZmVzdCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSk7CisKKyAgICBO
U0RpY3Rpb25hcnkgKm1hbmlmZXN0T2JqZWN0MSA9IEB7IEAidGhlbWVfY29sb3IiOiBAInJlZCIg
fTsKKyAgICBOU0RpY3Rpb25hcnkgKm1hbmlmZXN0T2JqZWN0MiA9IEB7IEAidGhlbWVfY29sb3Ii
OiBAImJsdWUiIH07CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOltO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPGxpbmsgcmVsPVwibWFuaWZlc3RcIiBocmVmPVwi
ZGF0YTphcHBsaWNhdGlvbi9tYW5pZmVzdCtqc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LCVAXCI+
PGxpbmsgcmVsPVwibWFuaWZlc3RcIiBocmVmPVwiZGF0YTphcHBsaWNhdGlvbi9tYW5pZmVzdCtq
c29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LCVAXCI+IiwgW1tOU0pTT05TZXJpYWxpemF0aW9uIGRh
dGFXaXRoSlNPTk9iamVjdDptYW5pZmVzdE9iamVjdDEgb3B0aW9uczowIGVycm9yOm5pbF0gYmFz
ZTY0RW5jb2RlZFN0cmluZ1dpdGhPcHRpb25zOjBdLCBbW05TSlNPTlNlcmlhbGl6YXRpb24gZGF0
YVdpdGhKU09OT2JqZWN0Om1hbmlmZXN0T2JqZWN0MiBvcHRpb25zOjAgZXJyb3I6bmlsXSBiYXNl
NjRFbmNvZGVkU3RyaW5nV2l0aE9wdGlvbnM6MF1dXTsKKworICAgIHsKKyAgICAgICAgYXV0byBz
UkdCQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29s
b3JTcGFjZVNSR0IpKTsKKyAgICAgICAgYXV0byByZWRDb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNy
ZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgcmVkQ29sb3JDb21wb25lbnRzKSk7CisgICAgICAg
IHdoaWxlICghQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB0aGVtZUNvbG9yXS5DR0NvbG9y
LCByZWRDb2xvci5nZXQoKSkpCisgICAgICAgICAgICBVdGlsOjpzbGVlcCgxKTsKKyAgICB9CisK
KyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9nZXRBcHBsaWNh
dGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVyOl4oX1dLQXBwbGljYXRpb25NYW5pZmVz
dCAqbWFuaWZlc3QpIHsKKyAgICAgICAgYXV0byBzUkdCQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dD
b2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKKyAgICAgICAgYXV0
byByZWRDb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwg
cmVkQ29sb3JDb21wb25lbnRzKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRv
Q29sb3IobWFuaWZlc3QudGhlbWVDb2xvci5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOworCisg
ICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZG9uZSk7Cit9CisK
K1RFU1QoQXBwbGljYXRpb25NYW5pZmVzdCwgTm9NYW5pZmVzdCkKK3sKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9S
ZWN0XSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJIZWxs
byBXb3JsZCJdOworCisgICAgRVhQRUNUX05VTEwoW3dlYlZpZXcgdGhlbWVDb2xvcl0pOworCisg
ICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfZ2V0QXBwbGljYXRp
b25NYW5pZmVzdFdpdGhDb21wbGV0aW9uSGFuZGxlcjpeKF9XS0FwcGxpY2F0aW9uTWFuaWZlc3Qg
Km1hbmlmZXN0KSB7CisgICAgICAgIEVYUEVDVF9OVUxMKG1hbmlmZXN0KTsKKworICAgICAgICBk
b25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworfQorCitURVNUKEFw
cGxpY2F0aW9uTWFuaWZlc3QsIE1lZGlhQXR0cml1dGUpCit7CisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF0p
OworCisgICAgTlNEaWN0aW9uYXJ5ICptYW5pZmVzdE9iamVjdDEgPSBAeyBAInRoZW1lX2NvbG9y
IjogQCJibHVlIiB9OworICAgIE5TRGljdGlvbmFyeSAqbWFuaWZlc3RPYmplY3QyID0gQHsgQCJ0
aGVtZV9jb2xvciI6IEAicmVkIiB9OworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRN
TFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxsaW5rIHJlbD1cIm1hbmlmZXN0
XCIgaHJlZj1cImRhdGE6YXBwbGljYXRpb24vbWFuaWZlc3QranNvbjtjaGFyc2V0PXV0Zi04O2Jh
c2U2NCwlQFwiIG1lZGlhPVwiaW52YWxpZFwiPjxsaW5rIHJlbD1cIm1hbmlmZXN0XCIgaHJlZj1c
ImRhdGE6YXBwbGljYXRpb24vbWFuaWZlc3QranNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCwlQFwi
IG1lZGlhPVwic2NyZWVuXCI+IiwgW1tOU0pTT05TZXJpYWxpemF0aW9uIGRhdGFXaXRoSlNPTk9i
amVjdDptYW5pZmVzdE9iamVjdDEgb3B0aW9uczowIGVycm9yOm5pbF0gYmFzZTY0RW5jb2RlZFN0
cmluZ1dpdGhPcHRpb25zOjBdLCBbW05TSlNPTlNlcmlhbGl6YXRpb24gZGF0YVdpdGhKU09OT2Jq
ZWN0Om1hbmlmZXN0T2JqZWN0MiBvcHRpb25zOjAgZXJyb3I6bmlsXSBiYXNlNjRFbmNvZGVkU3Ry
aW5nV2l0aE9wdGlvbnM6MF1dXTsKKworICAgIHsKKyAgICAgICAgYXV0byBzUkdCQ29sb3JTcGFj
ZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0Ip
KTsKKyAgICAgICAgYXV0byByZWRDb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29s
b3JTcGFjZS5nZXQoKSwgcmVkQ29sb3JDb21wb25lbnRzKSk7CisgICAgICAgIHdoaWxlICghQ0dD
b2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB0aGVtZUNvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5n
ZXQoKSkpCisgICAgICAgICAgICBVdGlsOjpzbGVlcCgxKTsKKyAgICB9CisKKyAgICBfX2Jsb2Nr
IGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0
V2l0aENvbXBsZXRpb25IYW5kbGVyOl4oX1dLQXBwbGljYXRpb25NYW5pZmVzdCAqbWFuaWZlc3Qp
IHsKKyAgICAgICAgYXV0byBzUkdCQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3Jl
YXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKKyAgICAgICAgYXV0byByZWRDb2xvciA9
IGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZS5nZXQoKSwgcmVkQ29sb3JDb21w
b25lbnRzKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IobWFuaWZl
c3QudGhlbWVDb2xvci5DR0NvbG9yLCByZWRDb2xvci5nZXQoKSkpOworCisgICAgICAgIGRvbmUg
PSB0cnVlOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZG9uZSk7Cit9CisKK1RFU1QoQXBwbGlj
YXRpb25NYW5pZmVzdCwgRG9lc05vdEV4aXN0KQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdKTsKKwor
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxsaW5rIHJlbD1cIm1h
bmlmZXN0XCIgaHJlZj1cImRvZXMgbm90IGV4aXN0XCI+Il07CisKKyAgICBFWFBFQ1RfTlVMTChb
d2ViVmlldyB0aGVtZUNvbG9yXSk7CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwor
ICAgIFt3ZWJWaWV3IF9nZXRBcHBsaWNhdGlvbk1hbmlmZXN0V2l0aENvbXBsZXRpb25IYW5kbGVy
Ol4oX1dLQXBwbGljYXRpb25NYW5pZmVzdCAqbWFuaWZlc3QpIHsKKyAgICAgICAgRVhQRUNUX05V
TEwobWFuaWZlc3QpOworCisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFV0aWw6
OnJ1bigmZG9uZSk7Cit9CisKK1RFU1QoQXBwbGljYXRpb25NYW5pZmVzdCwgQmxvY2tlZCkKK3sK
KyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU1plcm9SZWN0XSk7CisKKyAgICBOU0RpY3Rpb25hcnkgKm1hbmlmZXN0T2JqZWN0
ID0gQHsgQCJ0aGVtZV9jb2xvciI6IEAicmVkIiB9OworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlMb2FkSFRNTFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxtZXRhIGh0dHAt
ZXF1aXY9XCJDb250ZW50LVNlY3VyaXR5LVBvbGljeVwiIGNvbnRlbnQ9XCJtYW5pZmVzdC1zcmMg
J25vbmUnXCI+PGxpbmsgcmVsPVwibWFuaWZlc3RcIiBocmVmPVwiZGF0YTphcHBsaWNhdGlvbi9t
YW5pZmVzdCtqc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LCVAXCI+IiwgW1tOU0pTT05TZXJpYWxp
emF0aW9uIGRhdGFXaXRoSlNPTk9iamVjdDptYW5pZmVzdE9iamVjdCBvcHRpb25zOjAgZXJyb3I6
bmlsXSBiYXNlNjRFbmNvZGVkU3RyaW5nV2l0aE9wdGlvbnM6MF1dXTsKKworICAgIEVYUEVDVF9O
VUxMKFt3ZWJWaWV3IHRoZW1lQ29sb3JdKTsKKworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFs
c2U7CisgICAgW3dlYlZpZXcgX2dldEFwcGxpY2F0aW9uTWFuaWZlc3RXaXRoQ29tcGxldGlvbkhh
bmRsZXI6XihfV0tBcHBsaWNhdGlvbk1hbmlmZXN0ICptYW5pZmVzdCkgeworICAgICAgICBFWFBF
Q1RfTlVMTChtYW5pZmVzdCk7CisKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAg
VXRpbDo6cnVuKCZkb25lKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCiAj
ZW5kaWYgLy8gRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>