<?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>209893</bug_id>
          
          <creation_ts>2020-04-01 22:05:15 -0700</creation_ts>
          <short_desc>Add SPI to restrict loading to main resources or non-network loads</short_desc>
          <delta_ts>2020-04-02 10:52:14 -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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>thorton</cc>
    
    <cc>toyoshim</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1636802</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-01 22:05:15 -0700</bug_when>
    <thetext>Add SPI to restrict loading to main resources or non-network loads</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636803</commentid>
    <comment_count>1</comment_count>
      <attachid>395242</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-01 22:06:49 -0700</bug_when>
    <thetext>Created attachment 395242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636805</commentid>
    <comment_count>2</comment_count>
      <attachid>395242</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-04-01 22:13:36 -0700</bug_when>
    <thetext>Comment on attachment 395242
Patch

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

Seems reasonable to me though I&apos;d love a cdumez or bradee-oh review

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:921
&gt; +- (BOOL)_loadsFromNetwork

Is this a good name? It really means &quot;allowsLoadingFromHTTPFamilySchemes&quot;, right? (what about web sockets, WKURLSchemeHandlers that happen to hit the network, etc...)

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:931
&gt; +- (BOOL)_loadsSubresources

Are we consistent in this capitalization of subresources?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636806</commentid>
    <comment_count>3</comment_count>
      <attachid>395243</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-01 22:16:16 -0700</bug_when>
    <thetext>Created attachment 395243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636808</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-01 22:20:24 -0700</bug_when>
    <thetext>_loadsFromNetwork prevents http, https, ws, and wss loads.  This is to fix rdar://problem/19426383 which was fixed using bundle SPI that did not block web sockets.  This does block web sockets, as verified by the test, which counts the number of requests.  If it did not block web sockets, the server would see a &quot;request&quot; from the web socket.
We are quite consistent in our capitalization of Subresources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636810</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-04-01 22:23:53 -0700</bug_when>
    <thetext>Ah, I see the WebSocket change now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636947</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-02 10:51:12 -0700</bug_when>
    <thetext>Committed r259392: &lt;https://trac.webkit.org/changeset/259392&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 395243.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636948</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-02 10:52:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/61215964&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395242</attachid>
            <date>2020-04-01 22:06:49 -0700</date>
            <delta_ts>2020-04-01 22:16:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209893-20200401220648.patch</filename>
            <type>text/plain</type>
            <size>23224</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDIwLTA0LTAxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byByZXN0cmljdCBsb2FkaW5nIHRvIG1haW4gcmVzb3VyY2VzIG9yIG5vbi1uZXR3b3JrIGxvYWRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk4OTMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHdp
bGwgYWxsb3cgdHdvIHByb2plY3RzIHRoYXQgY3VycmVudGx5IHVzZSB0aGUgaW5qZWN0ZWQgYnVu
ZGxlIFNQSSB0byB1c2UgdGhlc2UgaW5zdGVhZC4KKyAgICAgICAgQ292ZXJlZCBieSBBUEkgdGVz
dHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OnZhbGlkYXRlVVJMKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmFzc2lnbklkZW50aWZp
ZXJUb0luaXRpYWxSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlm
aWVyOjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNl
TG9hZE5vdGlmaWVyLmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Om1fbG9hZHNGcm9tTmV0d29yayk6CisgICAgICAgIChXZWJDb3JlOjptX2RldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6bG9hZHNTdWJyZXNvdXJjZXMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZTo6bG9hZHNGcm9tTmV0d29yayBjb25zdCk6CisgICAgICAgICogcGFn
ZS9QYWdlQ29uZmlndXJhdGlvbi5oOgorCiAyMDIwLTAzLTMxICBQaW5raSBHeWFuY2hhbmRhbmkg
IDxwZ3lhbmNoYW5kYW5pQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnZhbGlkIG1lbW9yeSBhY2Nl
c3MgQCBXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9U
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDggKzgyLDEwIEBAIFJlZjxUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbD4gVGhyZWFkYWIKIE9wdGlvbmFsPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpWYWxpZGF0ZWRVUkw+IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjp2YWxpZGF0ZVVSTChE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgcmVxdWVzdGVkVVJMKQogewogICAgIFZhbGlk
YXRlZFVSTCB2YWxpZGF0ZWRVUkwgeyByZXF1ZXN0ZWRVUkwsIHRydWUgfTsKLSNpZiBFTkFCTEUo
Q09OVEVOVF9FWFRFTlNJT05TKQogICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgp
KSB7CisgICAgICAgIGlmICghcGFnZS0+bG9hZHNGcm9tTmV0d29yaygpKQorICAgICAgICAgICAg
cmV0dXJuIHsgfTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgICAgICBpZiAo
YXV0byogZG9jdW1lbnRMb2FkZXIgPSBkb2N1bWVudC5sb2FkZXIoKSkgewogICAgICAgICAgICAg
YXV0byByZXN1bHRzID0gcGFnZS0+dXNlckNvbnRlbnRQcm92aWRlcigpLnByb2Nlc3NDb250ZW50
UnVsZUxpc3RzRm9yTG9hZCh2YWxpZGF0ZWRVUkwudXJsLCBDb250ZW50RXh0ZW5zaW9uczo6UmVz
b3VyY2VUeXBlOjpSYXcsICpkb2N1bWVudExvYWRlcik7CiAgICAgICAgICAgICBpZiAocmVzdWx0
cy5zdW1tYXJ5LmJsb2NrZWRMb2FkKQpAQCAtOTQsMTAgKzk2LDEwIEBAIE9wdGlvbmFsPFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpWYWwKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHZh
bGlkYXRlZFVSTC5hcmVDb29raWVzQWxsb3dlZCA9ICFyZXN1bHRzLnN1bW1hcnkuYmxvY2tlZENv
b2tpZXM7CiAgICAgICAgIH0KLSAgICB9CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShkb2N1bWVu
dCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShkb2N1bWVudCk7CiAjZW5kaWYKKyAgICB9CiAgICAg
cmV0dXJuIHZhbGlkYXRlZFVSTDsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZE5vdGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDksNiArMTA5LDEzIEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZEZhaWxUb0xv
YWQKIAogdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6YXNzaWduSWRlbnRpZmllclRvSW5pdGlh
bFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVy
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CisgICAgYm9vbCBwYWdlSXNQcm92
aXNpb25hbGx5TG9hZGluZyA9IGZhbHNlOworICAgIGlmIChhdXRvKiBmcmFtZUxvYWRlciA9IGxv
YWRlciA/IGxvYWRlci0+ZnJhbWVMb2FkZXIoKSA6IG51bGxwdHIpCisgICAgICAgIHBhZ2VJc1By
b3Zpc2lvbmFsbHlMb2FkaW5nID0gZnJhbWVMb2FkZXItPnByb3Zpc2lvbmFsRG9jdW1lbnRMb2Fk
ZXIoKSA9PSBsb2FkZXI7CisKKyAgICBpZiAocGFnZUlzUHJvdmlzaW9uYWxseUxvYWRpbmcpCisg
ICAgICAgIG1faW5pdGlhbFJlcXVlc3RJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKwogICAgIG1f
ZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuYXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3Qo
aWRlbnRpZmllciwgbG9hZGVyLCByZXF1ZXN0KTsKIH0KIApAQCAtMTI2LDYgKzEzMywxMyBAQCB2
b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaFdpbGxTCiAgICAgaWYgKG1fZnJhbWUu
bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgbV9mcmFtZS5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpLT5kaWRUZWxsQ2xpZW50QWJvdXRMb2FkKHJlcXVlc3QudXJsKCkpOwogCisg
ICAgaWYgKGF1dG8qIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkgeworICAgICAgICBpZiAoIXBhZ2Ut
PmxvYWRzU3VicmVzb3VyY2VzKCkgJiYgbV9pbml0aWFsUmVxdWVzdElkZW50aWZpZXIgJiYgKm1f
aW5pdGlhbFJlcXVlc3RJZGVudGlmaWVyICE9IGlkZW50aWZpZXIpCisgICAgICAgICAgICByZXF1
ZXN0ID0geyB9OworICAgICAgICBlbHNlIGlmICghcGFnZS0+bG9hZHNGcm9tTmV0d29yaygpICYm
IHJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKQorICAgICAgICAgICAgcmVx
dWVzdCA9IHsgfTsKKyAgICB9CisgICAgCiAgICAgLy8gTm90aWZ5aW5nIHRoZSBGcmFtZUxvYWRl
ckNsaWVudCBtYXkgY2F1c2UgdGhlIGZyYW1lIHRvIGJlIGRlc3Ryb3llZC4KICAgICBSZWY8RnJh
bWU+IHByb3RlY3QobV9mcmFtZSk7CiAgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNw
YXRjaFdpbGxTZW5kUmVxdWVzdChsb2FkZXIsIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlZGlyZWN0
UmVzcG9uc2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlm
aWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5v
dGlmaWVyLmgJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWROb3RpZmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw3IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICBGcmFtZSYgbV9mcmFtZTsKKyAgICBPcHRpb25hbDx1bnNpZ25l
ZCBsb25nPiBtX2luaXRpYWxSZXF1ZXN0SWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMjU5MzA2KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkwLDYgKzI5MCw4
IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkKICNpZiBFTkFCTEUo
REVWSUNFX09SSUVOVEFUSU9OKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICwgbV9kZXZp
Y2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uZGV2
aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlcikpCiAjZW5kaWYKKyAgICAsIG1fbG9hZHNTdWJy
ZXNvdXJjZXMocGFnZUNvbmZpZ3VyYXRpb24ubG9hZHNTdWJyZXNvdXJjZXMpCisgICAgLCBtX2xv
YWRzRnJvbU5ldHdvcmsocGFnZUNvbmZpZ3VyYXRpb24ubG9hZHNGcm9tTmV0d29yaykKIHsKICAg
ICB1cGRhdGVUaW1lclRocm90dGxpbmdTdGF0ZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2
aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTcwMCw2ICs3MDAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc09ubHlOb25VdGlsaXR5
UGFnZSgpIGNvbnN0OwogICAgIGJvb2wgaXNVdGlsaXR5UGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNVdGlsaXR5UGFnZTsgfQogCisgICAgYm9vbCBsb2Fkc1N1YnJlc291cmNlcygpIGNvbnN0IHsg
cmV0dXJuIG1fbG9hZHNTdWJyZXNvdXJjZXM7IH0KKyAgICBib29sIGxvYWRzRnJvbU5ldHdvcmso
KSBjb25zdCB7IHJldHVybiBtX2xvYWRzRnJvbU5ldHdvcms7IH0KKwogICAgIGJvb2wgaXNMb3dQ
b3dlck1vZGVFbmFibGVkKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb3dQ
b3dlck1vZGVFbmFibGVkT3ZlcnJpZGVGb3JUZXN0aW5nKE9wdGlvbmFsPGJvb2w+KTsKIApAQCAt
MTAwOCw2ICsxMDExLDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8VXNlckNvbnRlbnRVUkxQYXR0
ZXJuPiBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJuczsKICAgICBWZWN0b3I8VXNlclN0eWxlU2hlZXQ+
IG1fdXNlclN0eWxlU2hlZXRzUGVuZGluZ0luamVjdGlvbjsKICAgICBib29sIG1fc2hvdWxkRmly
ZVJlc2l6ZUV2ZW50cyB7IHRydWUgfTsKKyAgICBib29sIG1fbG9hZHNTdWJyZXNvdXJjZXMgeyB0
cnVlIH07CisgICAgYm9vbCBtX2xvYWRzRnJvbU5ldHdvcmsgeyB0cnVlIH07CiB9OwogCiBpbmxp
bmUgUGFnZUdyb3VwJiBQYWdlOjpncm91cCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
Q29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw2ICsxMjcsOCBAQCBw
dWJsaWM6CiAjZW5kaWYKICAgICBWZWN0b3I8U3RyaW5nPiBjb3JzRGlzYWJsaW5nUGF0dGVybnM7
CiAgICAgVW5pcXVlUmVmPE1lZGlhUmVjb3JkZXJQcm92aWRlcj4gbWVkaWFSZWNvcmRlclByb3Zp
ZGVyOworICAgIGJvb2wgbG9hZHNTdWJyZXNvdXJjZXMgeyB0cnVlIH07CisgICAgYm9vbCBsb2Fk
c0Zyb21OZXR3b3JrIHsgdHJ1ZSB9OwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1
OTMzNSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzEgQEAKKzIwMjAtMDQtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIHRvIHJlc3RyaWN0IGxvYWRpbmcgdG8gbWFpbiBy
ZXNvdXJjZXMgb3Igbm9uLW5ldHdvcmsgbG9hZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTg5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChB
UEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0
aW9uOjpsb2Fkc1N1YnJlc291cmNlcyBjb25zdCk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1
cmF0aW9uOjpzZXRMb2Fkc1N1YnJlc291cmNlcyk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1
cmF0aW9uOjpsb2Fkc0Zyb21OZXR3b3JrIGNvbnN0KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZp
Z3VyYXRpb246OnNldExvYWRzRnJvbU5ldHdvcmspOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBfc2V0TG9hZHNGcm9tTmV0d29yazpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBfbG9hZHNGcm9tTmV0d29ya10pOgorICAgICAgICAoLVtXS1dlYlZpZXdD
b25maWd1cmF0aW9uIF9zZXRMb2Fkc1N1YnJlc291cmNlczpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBfbG9hZHNTdWJyZXNvdXJjZXNdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX3Byb2Nlc3NEaXNwbGF5TmFtZSk6CisK
IDIwMjAtMDMtMzEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIHR5cGUgdHJhaXRzIGZvciBTY3JvbGxhYmxlQXJlYSwgYW5kIG90aGVyIGNsZWFu
dXAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyNTkzMjQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDYgKzEz
Myw4IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKEkKICAgICBlbmNv
ZGVyIDw8IG9sZFBhZ2VJRDsKICAgICBlbmNvZGVyIDw8IG92ZXJyaWRkZW5NZWRpYVR5cGU7CiAg
ICAgZW5jb2RlciA8PCBjb3JzRGlzYWJsaW5nUGF0dGVybnM7CisgICAgZW5jb2RlciA8PCBsb2Fk
c1N1YnJlc291cmNlczsKKyAgICBlbmNvZGVyIDw8IGxvYWRzRnJvbU5ldHdvcms7CiAgICAgZW5j
b2RlciA8PCBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7CiAgICAgZW5jb2Rl
ciA8PCBwcm9jZXNzRGlzcGxheU5hbWU7CiAKQEAgLTQxNiw2ICs0MTgsMTggQEAgT3B0aW9uYWw8
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUAogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogICAgIHBhcmFtZXRlcnMuY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gV1RGTW92ZSgqY29y
c0Rpc2FibGluZ1BhdHRlcm5zKTsKIAorICAgIE9wdGlvbmFsPGJvb2w+IGxvYWRzU3VicmVzb3Vy
Y2VzOworICAgIGRlY29kZXIgPj4gbG9hZHNTdWJyZXNvdXJjZXM7CisgICAgaWYgKCFsb2Fkc1N1
YnJlc291cmNlcykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBwYXJhbWV0ZXJz
LmxvYWRzU3VicmVzb3VyY2VzID0gKmxvYWRzU3VicmVzb3VyY2VzOworCisgICAgT3B0aW9uYWw8
Ym9vbD4gbG9hZHNGcm9tTmV0d29yazsKKyAgICBkZWNvZGVyID4+IGxvYWRzRnJvbU5ldHdvcms7
CisgICAgaWYgKCFsb2Fkc0Zyb21OZXR3b3JrKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHBhcmFtZXRlcnMubG9hZHNGcm9tTmV0d29yayA9ICpsb2Fkc0Zyb21OZXR3b3JrOwor
CiAgICAgT3B0aW9uYWw8Ym9vbD4gY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVk
OwogICAgIGRlY29kZXIgPj4gY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOwog
ICAgIGlmICghY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKQpJbmRleDogU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2
aXNpb24gMjU5MzI0KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsNiArMjAyLDkgQEAgc3RydWN0IFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgU3RyaW5nIG92ZXJyaWRkZW5NZWRpYVR5cGU7
CiAgICAgVmVjdG9yPFN0cmluZz4gY29yc0Rpc2FibGluZ1BhdHRlcm5zOworICAgIGJvb2wgbG9h
ZHNTdWJyZXNvdXJjZXMgeyB0cnVlIH07CisgICAgYm9vbCBsb2Fkc0Zyb21OZXR3b3JrIHsgdHJ1
ZSB9OworCiAgICAgYm9vbCBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgeyB0
cnVlIH07CiAgICAgU3RyaW5nIHByb2Nlc3NEaXNwbGF5TmFtZTsKIApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNTkzMjQpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NzgxLDYgKzc3ODEsOCBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6
CiAKICAgICBwYXJhbWV0ZXJzLm92ZXJyaWRkZW5NZWRpYVR5cGUgPSBtX292ZXJyaWRkZW5NZWRp
YVR5cGU7CiAgICAgcGFyYW1ldGVycy5jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSBtX2NvbmZpZ3Vy
YXRpb24tPmNvcnNEaXNhYmxpbmdQYXR0ZXJucygpOworICAgIHBhcmFtZXRlcnMubG9hZHNGcm9t
TmV0d29yayA9IG1fY29uZmlndXJhdGlvbi0+bG9hZHNGcm9tTmV0d29yaygpOworICAgIHBhcmFt
ZXRlcnMubG9hZHNTdWJyZXNvdXJjZXMgPSBtX2NvbmZpZ3VyYXRpb24tPmxvYWRzU3VicmVzb3Vy
Y2VzKCk7CiAgICAgcGFyYW1ldGVycy5jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJs
ZWQgPSBtX2NvbmZpZ3VyYXRpb24tPmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxl
ZCgpOwogICAgIHBhcmFtZXRlcnMuaGFzUmVzb3VyY2VMb2FkQ2xpZW50ID0gISFtX3Jlc291cmNl
TG9hZENsaWVudDsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VD
b25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05NSw2ICs5NSw4IEBAIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3Vy
YXRpb24KIAogICAgIGNvcHktPm1fcHJvY2Vzc0Rpc3BsYXlOYW1lID0gdGhpcy0+bV9wcm9jZXNz
RGlzcGxheU5hbWU7CiAgICAgY29weS0+bV9pZ25vcmVzQXBwQm91bmREb21haW5zID0gdGhpcy0+
bV9pZ25vcmVzQXBwQm91bmREb21haW5zOworICAgIGNvcHktPm1fbG9hZHNTdWJyZXNvdXJjZXMg
PSB0aGlzLT5tX2xvYWRzU3VicmVzb3VyY2VzOworICAgIGNvcHktPm1fbG9hZHNGcm9tTmV0d29y
ayA9IHRoaXMtPm1fbG9hZHNGcm9tTmV0d29yazsKIAogICAgIHJldHVybiBjb3B5OwogfQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0
aW9uLmgJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElQYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNyArMTQ5LDEzIEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgaWdub3Jlc0FwcEJvdW5kRG9tYWlucygpIGNvbnN0IHsgcmV0
dXJuIG1faWdub3Jlc0FwcEJvdW5kRG9tYWluczsgfQogICAgIHZvaWQgc2V0SWdub3Jlc0FwcEJv
dW5kRG9tYWlucyhib29sIHNob3VsZElnbm9yZSkgeyBtX2lnbm9yZXNBcHBCb3VuZERvbWFpbnMg
PSBzaG91bGRJZ25vcmU7IH0KLSAgICAKKworICAgIGJvb2wgbG9hZHNTdWJyZXNvdXJjZXMoKSBj
b25zdCB7IHJldHVybiBtX2xvYWRzU3VicmVzb3VyY2VzOyB9CisgICAgdm9pZCBzZXRMb2Fkc1N1
YnJlc291cmNlcyhib29sIGxvYWRzKSB7IG1fbG9hZHNTdWJyZXNvdXJjZXMgPSBsb2FkczsgfQor
CisgICAgYm9vbCBsb2Fkc0Zyb21OZXR3b3JrKCkgY29uc3QgeyByZXR1cm4gbV9sb2Fkc0Zyb21O
ZXR3b3JrOyB9CisgICAgdm9pZCBzZXRMb2Fkc0Zyb21OZXR3b3JrKGJvb2wgbG9hZHMpIHsgbV9s
b2Fkc0Zyb21OZXR3b3JrID0gbG9hZHM7IH0KKwogcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJL
aXQ6OldlYlByb2Nlc3NQb29sPiBtX3Byb2Nlc3NQb29sOwpAQCAtMTkxLDYgKzE5Nyw4IEBAIHBy
aXZhdGU6CiAgICAgV1RGOjpTdHJpbmcgbV9wcm9jZXNzRGlzcGxheU5hbWU7CiAgICAgV2ViS2l0
OjpXZWJWaWV3Q2F0ZWdvcnkgbV93ZWJWaWV3Q2F0ZWdvcnkgeyBXZWJLaXQ6OldlYlZpZXdDYXRl
Z29yeTo6QXBwQm91bmREb21haW4gfTsKICAgICBib29sIG1faWdub3Jlc0FwcEJvdW5kRG9tYWlu
cyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2xvYWRzU3VicmVzb3VyY2VzIHsgdHJ1ZSB9OworICAg
IGJvb2wgbV9sb2Fkc0Zyb21OZXR3b3JrIHsgdHJ1ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
QVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQkocmV2aXNpb24gMjU5MzA2KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0J
KHdvcmtpbmcgY29weSkKQEAgLTkxMyw2ICs5MTMsMjYgQEAgLSAodm9pZClfc2V0Q09SU0Rpc2Fi
bGluZ1BhdHRlcm5zOihOU0FycgogICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0Q09SU0Rpc2Fi
bGluZ1BhdHRlcm5zKFdURk1vdmUodmVjdG9yKSk7CiB9CiAKKy0gKHZvaWQpX3NldExvYWRzRnJv
bU5ldHdvcms6KEJPT0wpbG9hZHMKK3sKKyAgICBfcGFnZUNvbmZpZ3VyYXRpb24tPnNldExvYWRz
RnJvbU5ldHdvcmsobG9hZHMpOworfQorCistIChCT09MKV9sb2Fkc0Zyb21OZXR3b3JrCit7Cisg
ICAgcmV0dXJuIF9wYWdlQ29uZmlndXJhdGlvbi0+bG9hZHNGcm9tTmV0d29yaygpOworfQorCist
ICh2b2lkKV9zZXRMb2Fkc1N1YnJlc291cmNlczooQk9PTClsb2FkcworeworICAgIF9wYWdlQ29u
ZmlndXJhdGlvbi0+c2V0TG9hZHNTdWJyZXNvdXJjZXMobG9hZHMpOworfQorCistIChCT09MKV9s
b2Fkc1N1YnJlc291cmNlcworeworICAgIHJldHVybiBfcGFnZUNvbmZpZ3VyYXRpb24tPmxvYWRz
U3VicmVzb3VyY2VzKCk7Cit9CisKIC0gKHZvaWQpX3NldENyb3NzT3JpZ2luQWNjZXNzQ29udHJv
bENoZWNrRW5hYmxlZDooQk9PTCllbmFibGVkCiB7CiAgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5z
ZXRDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQoZW5hYmxlZCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblBy
aXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAkocmV2aXNpb24gMjU5MzA2KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2
YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDkgQEAgdHlwZWRlZiBOU19FTlVNKE5T
VUludGVnZXIsIF9XS1dlYlZpZXdDYQogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNldHRl
cj1fc2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zOikgTlNBcnJheTxOU1N0cmluZyAqPiAqX2NvcnNE
aXNhYmxpbmdQYXR0ZXJucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0Q3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOikgQk9PTCBfY3Jvc3NPcmlnaW5BY2Nlc3NDb250
cm9sQ2hlY2tFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CiAKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldExvYWRzRnJv
bU5ldHdvcms6KSBCT09MIF9sb2Fkc0Zyb21OZXR3b3JrIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0
dGVyPV9zZXRMb2Fkc1N1YnJlc291cmNlczopIEJPT0wgX2xvYWRzU3VicmVzb3VyY2VzIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKICNpZiBU
QVJHRVRfT1NfSVBIT05FCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRDbGllbnRO
YXZpZ2F0aW9uc1J1bkF0Rm9yZWdyb3VuZFByaW9yaXR5OikgQk9PTCBfY2xpZW50TmF2aWdhdGlv
bnNSdW5BdEZvcmVncm91bmRQcmlvcml0eSBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJB
KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBbHdheXNSdW5zQXRGb3JlZ3Jv
dW5kUHJpb3JpdHk6KSBCT09MIF9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgV0tfQVBJ
X0FWQUlMQUJMRShpb3MoOV8wKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjU5MzI0KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyOSw2ICs1
MjksOSBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgCiAjZW5kaWYK
IAogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IFdURk1vdmUo
cGFyYW1ldGVycy5jb3JzRGlzYWJsaW5nUGF0dGVybnMpOworICAgIHBhZ2VDb25maWd1cmF0aW9u
LmxvYWRzU3VicmVzb3VyY2VzID0gcGFyYW1ldGVycy5sb2Fkc1N1YnJlc291cmNlczsKKyAgICBw
YWdlQ29uZmlndXJhdGlvbi5sb2Fkc0Zyb21OZXR3b3JrID0gcGFyYW1ldGVycy5sb2Fkc0Zyb21O
ZXR3b3JrOworCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENo
ZWNrRW5hYmxlZCkKICAgICAgICAgQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxl
cjo6c2luZ2xldG9uKCkuc2V0Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKGZh
bHNlKTsKIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjU5Mzc3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDQtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIHRvIHJlc3RyaWN0IGxvYWRpbmcg
dG8gbWFpbiByZXNvdXJjZXMgb3Igbm9uLW5ldHdvcmsgbG9hZHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTg5MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L2NvY29hL0hUVFBTZXJ2ZXIuaDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6
OnRvdGFsUmVxdWVzdHMgY29uc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRU
UFNlcnZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OnJlc3BvbmRU
b1JlcXVlc3RzKToKKwogMjAyMC0wNC0wMSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBVVEkgZnJvbSBNSU1FIHR5cGUgY2FjaGUgY2FuIGJl
IHJlbW92ZWQgYWZ0ZXIgcjI1ODkxNQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCShy
ZXZpc2lvbiAyNTkzMDYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDA0LDYgKzEwMDQs
MTIxIEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgRGlzYWJsZUNPUlNTY3JpcHQKICAgICBFWFBF
Q1RfRkFMU0UobG9hZEZhaWwpOwogfQogCitURVNUKFVSTFNjaGVtZUhhbmRsZXIsIExvYWRzRnJv
bU5ldHdvcmspCit7CisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoeworICAg
ICAgICB7ICIvIiwgeyB7eyAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgIioiIH19LCAi
dGVzdCBjb250ZW50IiB9IH0KKyAgICB9KTsKKworICAgIGJvb2wgbG9hZFN1Y2Nlc3MgPSBmYWxz
ZTsKKyAgICBib29sIGxvYWRGYWlsID0gZmFsc2U7CisgICAgYm9vbCBkb25lID0gZmFsc2U7CisK
KyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtUZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddKTsK
KworICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInRl
c3QiXTsKKworICAgIFtoYW5kbGVyIHNldFN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXI6WyZdKFdL
V2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKKyAgICAgICAgaWYgKFt0YXNr
LnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL21haW4uaHRtbCJdKSB7CisgICAg
ICAgICAgICBOU0RhdGEgKmRhdGEgPSBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8c2Ny
aXB0PiIKKyAgICAgICAgICAgICAgICAiZmV0Y2goJ2h0dHA6Ly8xMjcuMC4wLjE6JWQvJykudGhl
bigoKT0+eyIKKyAgICAgICAgICAgICAgICAgICAgImZldGNoKCcvbG9hZFN1Y2Nlc3MnKSIKKyAg
ICAgICAgICAgICAgICAifSkuY2F0Y2goKCk9PnsiCisgICAgICAgICAgICAgICAgICAgICJ2YXIg
d3MgPSBuZXcgV2ViU29ja2V0KCd3czovLzEyNy4wLjAuMTolZCcpOyIKKyAgICAgICAgICAgICAg
ICAgICAgIndzLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsgZmV0Y2goJy9sb2FkRmFpbCcpIH07Igor
ICAgICAgICAgICAgICAgICJ9KSIKKyAgICAgICAgICAgICAgICAiPC9zY3JpcHQ+Iiwgc2VydmVy
LnBvcnQoKSwgc2VydmVyLnBvcnQoKV0gZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddOworICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVz
cG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0
L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1l
Om5pbF0gYXV0b3JlbGVhc2VdXTsKKyAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOmRh
dGFdOworICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKKyAgICAgICAgfSBlbHNlIGlmIChb
dGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9sb2FkU3VjY2VzcyJdKSB7
CisgICAgICAgICAgICBsb2FkU3VjY2VzcyA9IHRydWU7CisgICAgICAgICAgICBkb25lID0gdHJ1
ZTsKKyAgICAgICAgfSBlbHNlIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0
cmluZzpAIi9sb2FkRmFpbCJdKSB7CisgICAgICAgICAgICBsb2FkRmFpbCA9IHRydWU7CisgICAg
ICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICB9XTsKKyAgICAKKyAgICB7CisgICAgICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgw
LCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJ0ZXN0Oi8vaG9zdDEvbWFpbi5odG1sIl1dXTsKKyAgICAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICB9CisgICAgRVhQRUNUX1RSVUUobG9hZFN1
Y2Nlc3MpOworICAgIEVYUEVDVF9GQUxTRShsb2FkRmFpbCk7CisgICAgRVhQRUNUX0VRKHNlcnZl
ci50b3RhbFJlcXVlc3RzKCksIDF1KTsKKyAgICAKKyAgICBsb2FkU3VjY2VzcyA9IGZhbHNlOwor
ICAgIGxvYWRGYWlsID0gZmFsc2U7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgY29uZmlndXJh
dGlvbi5fbG9hZHNGcm9tTmV0d29yayA9IE5POworICAgIHsKKyAgICAgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICAgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJM
V2l0aFN0cmluZzpAInRlc3Q6Ly9ob3N0MS9tYWluLmh0bWwiXV1dOworICAgICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIH0KKyAgICBFWFBFQ1RfRkFMU0UobG9hZFN1
Y2Nlc3MpOworICAgIEVYUEVDVF9UUlVFKGxvYWRGYWlsKTsKKyAgICBFWFBFQ1RfRVEoc2VydmVy
LnRvdGFsUmVxdWVzdHMoKSwgMXUpOworfQorCitURVNUKFVSTFNjaGVtZUhhbmRsZXIsIExvYWRz
U3VicmVzb3VyY2VzKQoreworICAgIGJvb2wgbG9hZGVkSW1hZ2UgPSBmYWxzZTsKKyAgICBib29s
IGxvYWRlZElGcmFtZSA9IGZhbHNlOworCisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbVGVz
dFVSTFNjaGVtZUhhbmRsZXIgbmV3XSk7CisKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpj
b25maWd1cmF0aW9uID0gW1tbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0
b3JlbGVhc2VdOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxl
ci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJ0ZXN0Il07CisKKyAgICBbaGFuZGxlciBzZXRTdGFydFVS
TFNjaGVtZVRhc2tIYW5kbGVyOlsmXShXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0
YXNrKSB7CisgICAgICAgIE5TU3RyaW5nICpyZXNwb25zZSA9IG5pbDsKKyAgICAgICAgaWYgKFt0
YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL21haW4uaHRtbCJdKSB7Cisg
ICAgICAgICAgICByZXNwb25zZSA9IEAiPGltZyBzcmM9Jy9pbWdzcmMnPjwvaW1nPjxpZnJhbWUg
c3JjPScvaWZyYW1lc3JjJz48L2lmcmFtZT4iOworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJM
T0FERUQgTUFJTiIpOworICAgICAgICB9IGVsc2UgaWYgKFt0YXNrLnJlcXVlc3QuVVJMLnBhdGgg
aXNFcXVhbFRvU3RyaW5nOkAiL2ltZ3NyYyJdKSB7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMo
IkxPQURFRCBJTUFHRSIpOworICAgICAgICAgICAgcmVzcG9uc2UgPSBAImltYWdlIGNvbnRlbnQi
OworICAgICAgICAgICAgbG9hZGVkSW1hZ2UgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKFt0
YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2lmcmFtZXNyYyJdKSB7Cisg
ICAgICAgICAgICBXVEZMb2dBbHdheXMoIkxPQURFRCBGUkFNRSIpOworICAgICAgICAgICAgcmVz
cG9uc2UgPSBAImlmcmFtZSBjb250ZW50IjsKKyAgICAgICAgICAgIGxvYWRlZElGcmFtZSA9IHRy
dWU7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBp
bml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3Rl
ZENvbnRlbnRMZW5ndGg6cmVzcG9uc2UubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRv
cmVsZWFzZV1dOworICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpbcmVzcG9uc2UgZGF0YVVz
aW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKKyAgICAgICAgW3Rhc2sgZGlkRmlu
aXNoXTsKKyAgICB9XTsKKyAgICAKKyAgICB7CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAs
IDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJ0ZXN0Oi8vaG9zdDEvbWFpbi5odG1sIl1dXTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZsb2FkZWRJbWFnZSk7CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmbG9hZGVkSUZyYW1lKTsKKyAgICB9CisgICAgCisgICAgbG9hZGVkSW1hZ2UgPSBmYWxzZTsK
KyAgICBsb2FkZWRJRnJhbWUgPSBmYWxzZTsKKworICAgIGNvbmZpZ3VyYXRpb24uX2xvYWRzU3Vi
cmVzb3VyY2VzID0gTk87CisgICAgeworICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgICAgICBhdXRvIGRlbGVnYXRlID0g
YWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKKyAgICAgICAgd2ViVmlldy5n
ZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAInRlc3Q6Ly9ob3N0MS9tYWluLmh0bWwiXV1dOworICAgICAgICBbZGVsZWdhdGUg
d2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgICAgICBFWFBFQ1RfVFJVRShsb2FkZWRJ
RnJhbWUpOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgxMDApOwor
ICAgICAgICBFWFBFQ1RfRkFMU0UobG9hZGVkSW1hZ2UpOworICAgIH0KK30KKwogI2VuZGlmIC8v
IEhBVkUoTkVUV09SS19GUkFNRVdPUkspCiAKIEBpbnRlcmZhY2UgRnJhbWVTY2hlbWVIYW5kbGVy
IDogTlNPYmplY3QgPFdLVVJMU2NoZW1lSGFuZGxlcj4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvSFRUUFNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvSFRUUFNlcnZlci5oCShyZXZpc2lvbiAyNTkzMDYpCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBw
dWJsaWM6CiAgICAgSFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0
cmluZywgSFRUUFJlc3BvbnNlPj4sIFByb3RvY29sID0gUHJvdG9jb2w6Okh0dHApOwogICAgIHVp
bnQxNl90IHBvcnQoKSBjb25zdDsKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QoKSBjb25zdDsK
KyAgICBzaXplX3QgdG90YWxSZXF1ZXN0cygpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxSZXF1ZXN0
czsgfQogICAgIAogcHJpdmF0ZToKICAgICB2b2lkIHJlc3BvbmRUb1JlcXVlc3RzKG53X2Nvbm5l
Y3Rpb25fdCk7CkBAIC01MCw2ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPG53X2xp
c3RlbmVyX3Q+IG1fbGlzdGVuZXI7CiAgICAgY29uc3QgUHJvdG9jb2wgbV9wcm90b2NvbDsKICAg
ICBjb25zdCBIYXNoTWFwPFN0cmluZywgSFRUUFJlc3BvbnNlPiBtX3JlcXVlc3RSZXNwb25zZU1h
cDsKKyAgICBzaXplX3QgbV90b3RhbFJlcXVlc3RzIHsgMCB9OwogfTsKIAogc3RydWN0IEhUVFBT
ZXJ2ZXI6OkhUVFBSZXNwb25zZSB7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hU
VFBTZXJ2ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQ
U2VydmVyLm1tCShyZXZpc2lvbiAyNTkzMDYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L0hUVFBTZXJ2ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwMCw2ICsxMDAsOCBAQCB2b2lkIEhU
VFBTZXJ2ZXI6OnJlc3BvbmRUb1JlcXVlc3RzKG53X2NvCiAgICAgICAgIH0pOwogICAgICAgICBy
ZXF1ZXN0LmFwcGVuZCgnXDAnKTsKIAorICAgICAgICBtX3RvdGFsUmVxdWVzdHMrKzsKKwogICAg
ICAgICBjb25zdCBjaGFyKiBnZXRQYXRoUHJlZml4ID0gIkdFVCAiOwogICAgICAgICBjb25zdCBj
aGFyKiBwb3N0UGF0aFByZWZpeCA9ICJQT1NUICI7CiAgICAgICAgIGNvbnN0IGNoYXIqIHBhdGhT
dWZmaXggPSAiIEhUVFAvMS4xXHJcbiI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395243</attachid>
            <date>2020-04-01 22:16:16 -0700</date>
            <delta_ts>2020-04-02 10:51:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209893-20200401221615.patch</filename>
            <type>text/plain</type>
            <size>23144</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDIwLTA0LTAxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0
byByZXN0cmljdCBsb2FkaW5nIHRvIG1haW4gcmVzb3VyY2VzIG9yIG5vbi1uZXR3b3JrIGxvYWRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk4OTMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHdp
bGwgYWxsb3cgdHdvIHByb2plY3RzIHRoYXQgY3VycmVudGx5IHVzZSB0aGUgaW5qZWN0ZWQgYnVu
ZGxlIFNQSSB0byB1c2UgdGhlc2UgaW5zdGVhZC4KKyAgICAgICAgQ292ZXJlZCBieSBBUEkgdGVz
dHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OnZhbGlkYXRlVVJMKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmFzc2lnbklkZW50aWZp
ZXJUb0luaXRpYWxSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlm
aWVyOjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNl
TG9hZE5vdGlmaWVyLmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Om1fbG9hZHNGcm9tTmV0d29yayk6CisgICAgICAgIChXZWJDb3JlOjptX2RldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6bG9hZHNTdWJyZXNvdXJjZXMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZTo6bG9hZHNGcm9tTmV0d29yayBjb25zdCk6CisgICAgICAgICogcGFn
ZS9QYWdlQ29uZmlndXJhdGlvbi5oOgorCiAyMDIwLTAzLTMxICBQaW5raSBHeWFuY2hhbmRhbmkg
IDxwZ3lhbmNoYW5kYW5pQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnZhbGlkIG1lbW9yeSBhY2Nl
c3MgQCBXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9U
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDggKzgyLDEwIEBAIFJlZjxUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbD4gVGhyZWFkYWIKIE9wdGlvbmFsPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpWYWxpZGF0ZWRVUkw+IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjp2YWxpZGF0ZVVSTChE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgcmVxdWVzdGVkVVJMKQogewogICAgIFZhbGlk
YXRlZFVSTCB2YWxpZGF0ZWRVUkwgeyByZXF1ZXN0ZWRVUkwsIHRydWUgfTsKLSNpZiBFTkFCTEUo
Q09OVEVOVF9FWFRFTlNJT05TKQogICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgp
KSB7CisgICAgICAgIGlmICghcGFnZS0+bG9hZHNGcm9tTmV0d29yaygpKQorICAgICAgICAgICAg
cmV0dXJuIHsgfTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgICAgICBpZiAo
YXV0byogZG9jdW1lbnRMb2FkZXIgPSBkb2N1bWVudC5sb2FkZXIoKSkgewogICAgICAgICAgICAg
YXV0byByZXN1bHRzID0gcGFnZS0+dXNlckNvbnRlbnRQcm92aWRlcigpLnByb2Nlc3NDb250ZW50
UnVsZUxpc3RzRm9yTG9hZCh2YWxpZGF0ZWRVUkwudXJsLCBDb250ZW50RXh0ZW5zaW9uczo6UmVz
b3VyY2VUeXBlOjpSYXcsICpkb2N1bWVudExvYWRlcik7CiAgICAgICAgICAgICBpZiAocmVzdWx0
cy5zdW1tYXJ5LmJsb2NrZWRMb2FkKQpAQCAtOTQsMTAgKzk2LDEwIEBAIE9wdGlvbmFsPFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpWYWwKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHZh
bGlkYXRlZFVSTC5hcmVDb29raWVzQWxsb3dlZCA9ICFyZXN1bHRzLnN1bW1hcnkuYmxvY2tlZENv
b2tpZXM7CiAgICAgICAgIH0KLSAgICB9CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShkb2N1bWVu
dCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShkb2N1bWVudCk7CiAjZW5kaWYKKyAgICB9CiAgICAg
cmV0dXJuIHZhbGlkYXRlZFVSTDsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZE5vdGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDksNiArMTA5LDEzIEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZEZhaWxUb0xv
YWQKIAogdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6YXNzaWduSWRlbnRpZmllclRvSW5pdGlh
bFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVy
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CisgICAgYm9vbCBwYWdlSXNQcm92
aXNpb25hbGx5TG9hZGluZyA9IGZhbHNlOworICAgIGlmIChhdXRvKiBmcmFtZUxvYWRlciA9IGxv
YWRlciA/IGxvYWRlci0+ZnJhbWVMb2FkZXIoKSA6IG51bGxwdHIpCisgICAgICAgIHBhZ2VJc1By
b3Zpc2lvbmFsbHlMb2FkaW5nID0gZnJhbWVMb2FkZXItPnByb3Zpc2lvbmFsRG9jdW1lbnRMb2Fk
ZXIoKSA9PSBsb2FkZXI7CisKKyAgICBpZiAocGFnZUlzUHJvdmlzaW9uYWxseUxvYWRpbmcpCisg
ICAgICAgIG1faW5pdGlhbFJlcXVlc3RJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKwogICAgIG1f
ZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuYXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3Qo
aWRlbnRpZmllciwgbG9hZGVyLCByZXF1ZXN0KTsKIH0KIApAQCAtMTI2LDYgKzEzMywxNCBAQCB2
b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaFdpbGxTCiAgICAgaWYgKG1fZnJhbWUu
bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgbV9mcmFtZS5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpLT5kaWRUZWxsQ2xpZW50QWJvdXRMb2FkKHJlcXVlc3QudXJsKCkpOwogCisg
ICAgaWYgKGF1dG8qIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkgeworICAgICAgICBpZiAoIXBhZ2Ut
PmxvYWRzU3VicmVzb3VyY2VzKCkpIHsKKyAgICAgICAgICAgIGlmICghbV9mcmFtZS5pc01haW5G
cmFtZSgpIHx8IChtX2luaXRpYWxSZXF1ZXN0SWRlbnRpZmllciAmJiAqbV9pbml0aWFsUmVxdWVz
dElkZW50aWZpZXIgIT0gaWRlbnRpZmllcikpCisgICAgICAgICAgICAgICAgcmVxdWVzdCA9IHsg
fTsKKyAgICAgICAgfSBlbHNlIGlmICghcGFnZS0+bG9hZHNGcm9tTmV0d29yaygpICYmIHJlcXVl
c3QudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKQorICAgICAgICAgICAgcmVxdWVzdCA9
IHsgfTsKKyAgICB9CisgICAgCiAgICAgLy8gTm90aWZ5aW5nIHRoZSBGcmFtZUxvYWRlckNsaWVu
dCBtYXkgY2F1c2UgdGhlIGZyYW1lIHRvIGJlIGRlc3Ryb3llZC4KICAgICBSZWY8RnJhbWU+IHBy
b3RlY3QobV9mcmFtZSk7CiAgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaFdp
bGxTZW5kUmVxdWVzdChsb2FkZXIsIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9u
c2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVy
LmgJKHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWROb3RpZmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw3IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICBGcmFtZSYgbV9mcmFtZTsKKyAgICBPcHRpb25hbDx1bnNpZ25lZCBsb25n
PiBtX2luaXRpYWxSZXF1ZXN0SWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkwLDYgKzI5MCw4IEBAIFBh
Z2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkKICNpZiBFTkFCTEUoREVWSUNF
X09SSUVOVEFUSU9OKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICwgbV9kZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uZGV2aWNlT3Jp
ZW50YXRpb25VcGRhdGVQcm92aWRlcikpCiAjZW5kaWYKKyAgICAsIG1fbG9hZHNTdWJyZXNvdXJj
ZXMocGFnZUNvbmZpZ3VyYXRpb24ubG9hZHNTdWJyZXNvdXJjZXMpCisgICAgLCBtX2xvYWRzRnJv
bU5ldHdvcmsocGFnZUNvbmZpZ3VyYXRpb24ubG9hZHNGcm9tTmV0d29yaykKIHsKICAgICB1cGRh
dGVUaW1lclRocm90dGxpbmdTdGF0ZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24g
MjU5MzA2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTcwMCw2ICs3MDAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc09ubHlOb25VdGlsaXR5UGFnZSgp
IGNvbnN0OwogICAgIGJvb2wgaXNVdGlsaXR5UGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNVdGls
aXR5UGFnZTsgfQogCisgICAgYm9vbCBsb2Fkc1N1YnJlc291cmNlcygpIGNvbnN0IHsgcmV0dXJu
IG1fbG9hZHNTdWJyZXNvdXJjZXM7IH0KKyAgICBib29sIGxvYWRzRnJvbU5ldHdvcmsoKSBjb25z
dCB7IHJldHVybiBtX2xvYWRzRnJvbU5ldHdvcms7IH0KKwogICAgIGJvb2wgaXNMb3dQb3dlck1v
ZGVFbmFibGVkKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb3dQb3dlck1v
ZGVFbmFibGVkT3ZlcnJpZGVGb3JUZXN0aW5nKE9wdGlvbmFsPGJvb2w+KTsKIApAQCAtMTAwOCw2
ICsxMDExLDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8VXNlckNvbnRlbnRVUkxQYXR0ZXJuPiBt
X2NvcnNEaXNhYmxpbmdQYXR0ZXJuczsKICAgICBWZWN0b3I8VXNlclN0eWxlU2hlZXQ+IG1fdXNl
clN0eWxlU2hlZXRzUGVuZGluZ0luamVjdGlvbjsKICAgICBib29sIG1fc2hvdWxkRmlyZVJlc2l6
ZUV2ZW50cyB7IHRydWUgfTsKKyAgICBib29sIG1fbG9hZHNTdWJyZXNvdXJjZXMgeyB0cnVlIH07
CisgICAgYm9vbCBtX2xvYWRzRnJvbU5ldHdvcmsgeyB0cnVlIH07CiB9OwogCiBpbmxpbmUgUGFn
ZUdyb3VwJiBQYWdlOjpncm91cCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25m
aWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmln
dXJhdGlvbi5oCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VD
b25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw2ICsxMjcsOCBAQCBwdWJsaWM6
CiAjZW5kaWYKICAgICBWZWN0b3I8U3RyaW5nPiBjb3JzRGlzYWJsaW5nUGF0dGVybnM7CiAgICAg
VW5pcXVlUmVmPE1lZGlhUmVjb3JkZXJQcm92aWRlcj4gbWVkaWFSZWNvcmRlclByb3ZpZGVyOwor
ICAgIGJvb2wgbG9hZHNTdWJyZXNvdXJjZXMgeyB0cnVlIH07CisgICAgYm9vbCBsb2Fkc0Zyb21O
ZXR3b3JrIHsgdHJ1ZSB9OwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTMzNSkK
KysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMjAtMDQtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBBZGQgU1BJIHRvIHJlc3RyaWN0IGxvYWRpbmcgdG8gbWFpbiByZXNvdXJj
ZXMgb3Igbm9uLW5ldHdvcmsgbG9hZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwOTg5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6OlBh
Z2VDb25maWd1cmF0aW9uOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SVBhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjps
b2Fkc1N1YnJlc291cmNlcyBjb25zdCk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9u
OjpzZXRMb2Fkc1N1YnJlc291cmNlcyk6CisgICAgICAgIChBUEk6OlBhZ2VDb25maWd1cmF0aW9u
Ojpsb2Fkc0Zyb21OZXR3b3JrIGNvbnN0KToKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRp
b246OnNldExvYWRzRnJvbU5ldHdvcmspOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBfc2V0TG9hZHNGcm9tTmV0d29yazpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBfbG9hZHNGcm9tTmV0d29ya10pOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1
cmF0aW9uIF9zZXRMb2Fkc1N1YnJlc291cmNlczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBfbG9hZHNTdWJyZXNvdXJjZXNdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX3Byb2Nlc3NEaXNwbGF5TmFtZSk6CisKIDIwMjAt
MDMtMzEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIHR5cGUgdHJhaXRzIGZvciBTY3JvbGxhYmxlQXJlYSwgYW5kIG90aGVyIGNsZWFudXAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCShyZXZpc2lvbiAyNTkzMjQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDYgKzEzMyw4IEBA
IHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKEkKICAgICBlbmNvZGVyIDw8
IG9sZFBhZ2VJRDsKICAgICBlbmNvZGVyIDw8IG92ZXJyaWRkZW5NZWRpYVR5cGU7CiAgICAgZW5j
b2RlciA8PCBjb3JzRGlzYWJsaW5nUGF0dGVybnM7CisgICAgZW5jb2RlciA8PCBsb2Fkc1N1YnJl
c291cmNlczsKKyAgICBlbmNvZGVyIDw8IGxvYWRzRnJvbU5ldHdvcms7CiAgICAgZW5jb2RlciA8
PCBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7CiAgICAgZW5jb2RlciA8PCBw
cm9jZXNzRGlzcGxheU5hbWU7CiAKQEAgLTQxNiw2ICs0MTgsMTggQEAgT3B0aW9uYWw8V2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
ICAgIHBhcmFtZXRlcnMuY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gV1RGTW92ZSgqY29yc0Rpc2Fi
bGluZ1BhdHRlcm5zKTsKIAorICAgIE9wdGlvbmFsPGJvb2w+IGxvYWRzU3VicmVzb3VyY2VzOwor
ICAgIGRlY29kZXIgPj4gbG9hZHNTdWJyZXNvdXJjZXM7CisgICAgaWYgKCFsb2Fkc1N1YnJlc291
cmNlcykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBwYXJhbWV0ZXJzLmxvYWRz
U3VicmVzb3VyY2VzID0gKmxvYWRzU3VicmVzb3VyY2VzOworCisgICAgT3B0aW9uYWw8Ym9vbD4g
bG9hZHNGcm9tTmV0d29yazsKKyAgICBkZWNvZGVyID4+IGxvYWRzRnJvbU5ldHdvcms7CisgICAg
aWYgKCFsb2Fkc0Zyb21OZXR3b3JrKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHBhcmFtZXRlcnMubG9hZHNGcm9tTmV0d29yayA9ICpsb2Fkc0Zyb21OZXR3b3JrOworCiAgICAg
T3B0aW9uYWw8Ym9vbD4gY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOwogICAg
IGRlY29kZXIgPj4gY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOwogICAgIGlm
ICghY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKQpJbmRleDogU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24g
MjU5MzI0KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsNiArMjAyLDkgQEAgc3RydWN0IFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMgewogCiAgICAgU3RyaW5nIG92ZXJyaWRkZW5NZWRpYVR5cGU7CiAgICAg
VmVjdG9yPFN0cmluZz4gY29yc0Rpc2FibGluZ1BhdHRlcm5zOworICAgIGJvb2wgbG9hZHNTdWJy
ZXNvdXJjZXMgeyB0cnVlIH07CisgICAgYm9vbCBsb2Fkc0Zyb21OZXR3b3JrIHsgdHJ1ZSB9Owor
CiAgICAgYm9vbCBjcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgeyB0cnVlIH07
CiAgICAgU3RyaW5nIHByb2Nlc3NEaXNwbGF5TmFtZTsKIApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNTkzMjQpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzgxLDYg
Kzc3ODEsOCBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6CiAKICAg
ICBwYXJhbWV0ZXJzLm92ZXJyaWRkZW5NZWRpYVR5cGUgPSBtX292ZXJyaWRkZW5NZWRpYVR5cGU7
CiAgICAgcGFyYW1ldGVycy5jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSBtX2NvbmZpZ3VyYXRpb24t
PmNvcnNEaXNhYmxpbmdQYXR0ZXJucygpOworICAgIHBhcmFtZXRlcnMubG9hZHNGcm9tTmV0d29y
ayA9IG1fY29uZmlndXJhdGlvbi0+bG9hZHNGcm9tTmV0d29yaygpOworICAgIHBhcmFtZXRlcnMu
bG9hZHNTdWJyZXNvdXJjZXMgPSBtX2NvbmZpZ3VyYXRpb24tPmxvYWRzU3VicmVzb3VyY2VzKCk7
CiAgICAgcGFyYW1ldGVycy5jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgPSBt
X2NvbmZpZ3VyYXRpb24tPmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCgpOwog
ICAgIHBhcmFtZXRlcnMuaGFzUmVzb3VyY2VMb2FkQ2xpZW50ID0gISFtX3Jlc291cmNlTG9hZENs
aWVudDsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1
cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
UGFnZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAyNTkzMDYpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NSw2ICs5NSw4IEBAIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZpZ3VyYXRpb24K
IAogICAgIGNvcHktPm1fcHJvY2Vzc0Rpc3BsYXlOYW1lID0gdGhpcy0+bV9wcm9jZXNzRGlzcGxh
eU5hbWU7CiAgICAgY29weS0+bV9pZ25vcmVzQXBwQm91bmREb21haW5zID0gdGhpcy0+bV9pZ25v
cmVzQXBwQm91bmREb21haW5zOworICAgIGNvcHktPm1fbG9hZHNTdWJyZXNvdXJjZXMgPSB0aGlz
LT5tX2xvYWRzU3VicmVzb3VyY2VzOworICAgIGNvcHktPm1fbG9hZHNGcm9tTmV0d29yayA9IHRo
aXMtPm1fbG9hZHNGcm9tTmV0d29yazsKIAogICAgIHJldHVybiBjb3B5OwogfQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgJ
KHJldmlzaW9uIDI1OTMwNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdl
Q29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNyArMTQ5LDEzIEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgaWdub3Jlc0FwcEJvdW5kRG9tYWlucygpIGNvbnN0IHsgcmV0dXJuIG1f
aWdub3Jlc0FwcEJvdW5kRG9tYWluczsgfQogICAgIHZvaWQgc2V0SWdub3Jlc0FwcEJvdW5kRG9t
YWlucyhib29sIHNob3VsZElnbm9yZSkgeyBtX2lnbm9yZXNBcHBCb3VuZERvbWFpbnMgPSBzaG91
bGRJZ25vcmU7IH0KLSAgICAKKworICAgIGJvb2wgbG9hZHNTdWJyZXNvdXJjZXMoKSBjb25zdCB7
IHJldHVybiBtX2xvYWRzU3VicmVzb3VyY2VzOyB9CisgICAgdm9pZCBzZXRMb2Fkc1N1YnJlc291
cmNlcyhib29sIGxvYWRzKSB7IG1fbG9hZHNTdWJyZXNvdXJjZXMgPSBsb2FkczsgfQorCisgICAg
Ym9vbCBsb2Fkc0Zyb21OZXR3b3JrKCkgY29uc3QgeyByZXR1cm4gbV9sb2Fkc0Zyb21OZXR3b3Jr
OyB9CisgICAgdm9pZCBzZXRMb2Fkc0Zyb21OZXR3b3JrKGJvb2wgbG9hZHMpIHsgbV9sb2Fkc0Zy
b21OZXR3b3JrID0gbG9hZHM7IH0KKwogcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sPiBtX3Byb2Nlc3NQb29sOwpAQCAtMTkxLDYgKzE5Nyw4IEBAIHByaXZhdGU6
CiAgICAgV1RGOjpTdHJpbmcgbV9wcm9jZXNzRGlzcGxheU5hbWU7CiAgICAgV2ViS2l0OjpXZWJW
aWV3Q2F0ZWdvcnkgbV93ZWJWaWV3Q2F0ZWdvcnkgeyBXZWJLaXQ6OldlYlZpZXdDYXRlZ29yeTo6
QXBwQm91bmREb21haW4gfTsKICAgICBib29sIG1faWdub3Jlc0FwcEJvdW5kRG9tYWlucyB7IGZh
bHNlIH07CisgICAgYm9vbCBtX2xvYWRzU3VicmVzb3VyY2VzIHsgdHJ1ZSB9OworICAgIGJvb2wg
bV9sb2Fkc0Zyb21OZXR3b3JrIHsgdHJ1ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJh
dGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0JKHdvcmtp
bmcgY29weSkKQEAgLTkxMyw2ICs5MTMsMjYgQEAgLSAodm9pZClfc2V0Q09SU0Rpc2FibGluZ1Bh
dHRlcm5zOihOU0FycgogICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0Q09SU0Rpc2FibGluZ1Bh
dHRlcm5zKFdURk1vdmUodmVjdG9yKSk7CiB9CiAKKy0gKHZvaWQpX3NldExvYWRzRnJvbU5ldHdv
cms6KEJPT0wpbG9hZHMKK3sKKyAgICBfcGFnZUNvbmZpZ3VyYXRpb24tPnNldExvYWRzRnJvbU5l
dHdvcmsobG9hZHMpOworfQorCistIChCT09MKV9sb2Fkc0Zyb21OZXR3b3JrCit7CisgICAgcmV0
dXJuIF9wYWdlQ29uZmlndXJhdGlvbi0+bG9hZHNGcm9tTmV0d29yaygpOworfQorCistICh2b2lk
KV9zZXRMb2Fkc1N1YnJlc291cmNlczooQk9PTClsb2FkcworeworICAgIF9wYWdlQ29uZmlndXJh
dGlvbi0+c2V0TG9hZHNTdWJyZXNvdXJjZXMobG9hZHMpOworfQorCistIChCT09MKV9sb2Fkc1N1
YnJlc291cmNlcworeworICAgIHJldHVybiBfcGFnZUNvbmZpZ3VyYXRpb24tPmxvYWRzU3VicmVz
b3VyY2VzKCk7Cit9CisKIC0gKHZvaWQpX3NldENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNr
RW5hYmxlZDooQk9PTCllbmFibGVkCiB7CiAgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRDcm9z
c09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQoZW5hYmxlZCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAkocmV2aXNpb24gMjU5MzA2KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDkgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUludGVn
ZXIsIF9XS1dlYlZpZXdDYQogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNldHRlcj1fc2V0
Q09SU0Rpc2FibGluZ1BhdHRlcm5zOikgTlNBcnJheTxOU1N0cmluZyAqPiAqX2NvcnNEaXNhYmxp
bmdQYXR0ZXJucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0Q3Jvc3NPcmlnaW5BY2Nl
c3NDb250cm9sQ2hlY2tFbmFibGVkOikgQk9PTCBfY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hl
Y2tFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CiAKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldExvYWRzRnJvbU5ldHdv
cms6KSBCT09MIF9sb2Fkc0Zyb21OZXR3b3JrIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9z
ZXRMb2Fkc1N1YnJlc291cmNlczopIEJPT0wgX2xvYWRzU3VicmVzb3VyY2VzIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKICNpZiBUQVJHRVRf
T1NfSVBIT05FCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRDbGllbnROYXZpZ2F0
aW9uc1J1bkF0Rm9yZWdyb3VuZFByaW9yaXR5OikgQk9PTCBfY2xpZW50TmF2aWdhdGlvbnNSdW5B
dEZvcmVncm91bmRQcmlvcml0eSBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CiBA
cHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJp
b3JpdHk6KSBCT09MIF9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkgV0tfQVBJX0FWQUlM
QUJMRShpb3MoOV8wKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjU5MzI0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyOSw2ICs1MjksOSBA
QCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgCiAjZW5kaWYKIAogICAg
IHBhZ2VDb25maWd1cmF0aW9uLmNvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IFdURk1vdmUocGFyYW1l
dGVycy5jb3JzRGlzYWJsaW5nUGF0dGVybnMpOworICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRz
U3VicmVzb3VyY2VzID0gcGFyYW1ldGVycy5sb2Fkc1N1YnJlc291cmNlczsKKyAgICBwYWdlQ29u
ZmlndXJhdGlvbi5sb2Fkc0Zyb21OZXR3b3JrID0gcGFyYW1ldGVycy5sb2Fkc0Zyb21OZXR3b3Jr
OworCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5h
YmxlZCkKICAgICAgICAgQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tEaXNhYmxlcjo6c2lu
Z2xldG9uKCkuc2V0Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkKGZhbHNlKTsK
IApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gMjU5Mzc3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMjAtMDQtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIHRvIHJlc3RyaWN0IGxvYWRpbmcgdG8gbWFp
biByZXNvdXJjZXMgb3Igbm9uLW5ldHdvcmsgbG9hZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTg5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29h
L0hUVFBTZXJ2ZXIuaDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OnRvdGFs
UmVxdWVzdHMgY29uc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZl
ci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OnJlc3BvbmRUb1JlcXVl
c3RzKToKKwogMjAyMC0wNC0wMSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW0NvY29hXSBVVEkgZnJvbSBNSU1FIHR5cGUgY2FjaGUgY2FuIGJlIHJlbW92
ZWQgYWZ0ZXIgcjI1ODkxNQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCShyZXZpc2lv
biAyNTkzMDYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJM
U2NoZW1lSGFuZGxlci0xLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDA0LDYgKzEwMDQsMTE4IEBA
IFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgRGlzYWJsZUNPUlNTY3JpcHQKICAgICBFWFBFQ1RfRkFM
U0UobG9hZEZhaWwpOwogfQogCitURVNUKFVSTFNjaGVtZUhhbmRsZXIsIExvYWRzRnJvbU5ldHdv
cmspCit7CisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7
ICIvIiwgeyB7eyAiQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luIiwgIioiIH19LCAidGVzdCBj
b250ZW50IiB9IH0KKyAgICB9KTsKKworICAgIGJvb2wgbG9hZFN1Y2Nlc3MgPSBmYWxzZTsKKyAg
ICBib29sIGxvYWRGYWlsID0gZmFsc2U7CisgICAgYm9vbCBkb25lID0gZmFsc2U7CisKKyAgICBh
dXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtUZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddKTsKKworICAg
IFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgW2NvbmZpZ3VyYXRpb24g
c2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInRlc3QiXTsK
KworICAgIFtoYW5kbGVyIHNldFN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXI6WyZdKFdLV2ViVmll
dyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKKyAgICAgICAgaWYgKFt0YXNrLnJlcXVl
c3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL21haW4uaHRtbCJdKSB7CisgICAgICAgICAg
ICBOU0RhdGEgKmRhdGEgPSBbW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8c2NyaXB0PiIK
KyAgICAgICAgICAgICAgICAiZmV0Y2goJ2h0dHA6Ly8xMjcuMC4wLjE6JWQvJykudGhlbigoKT0+
eyIKKyAgICAgICAgICAgICAgICAgICAgImZldGNoKCcvbG9hZFN1Y2Nlc3MnKSIKKyAgICAgICAg
ICAgICAgICAifSkuY2F0Y2goKCk9PnsiCisgICAgICAgICAgICAgICAgICAgICJ2YXIgd3MgPSBu
ZXcgV2ViU29ja2V0KCd3czovLzEyNy4wLjAuMTolZCcpOyIKKyAgICAgICAgICAgICAgICAgICAg
IndzLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsgZmV0Y2goJy9sb2FkRmFpbCcpIH07IgorICAgICAg
ICAgICAgICAgICJ9KSIKKyAgICAgICAgICAgICAgICAiPC9zY3JpcHQ+Iiwgc2VydmVyLnBvcnQo
KSwgc2VydmVyLnBvcnQoKV0gZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmdd
OworICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9uc2Ug
YWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwi
IGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0g
YXV0b3JlbGVhc2VdXTsKKyAgICAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOmRhdGFdOwor
ICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKKyAgICAgICAgfSBlbHNlIGlmIChbdGFzay5y
ZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9sb2FkU3VjY2VzcyJdKSB7CisgICAg
ICAgICAgICBsb2FkU3VjY2VzcyA9IHRydWU7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICAgICAgfSBlbHNlIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpA
Ii9sb2FkRmFpbCJdKSB7CisgICAgICAgICAgICBsb2FkRmFpbCA9IHRydWU7CisgICAgICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICB9XTsKKyAgICAKKyAgICB7CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJ0ZXN0Oi8vaG9zdDEvbWFpbi5odG1sIl1dXTsKKyAgICAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICB9CisgICAgRVhQRUNUX1RSVUUobG9hZFN1Y2Nlc3Mp
OworICAgIEVYUEVDVF9GQUxTRShsb2FkRmFpbCk7CisgICAgRVhQRUNUX0VRKHNlcnZlci50b3Rh
bFJlcXVlc3RzKCksIDF1KTsKKyAgICAKKyAgICBsb2FkU3VjY2VzcyA9IGZhbHNlOworICAgIGxv
YWRGYWlsID0gZmFsc2U7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgY29uZmlndXJhdGlvbi5f
bG9hZHNGcm9tTmV0d29yayA9IE5POworICAgIHsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICAgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpAInRlc3Q6Ly9ob3N0MS9tYWluLmh0bWwiXV1dOworICAgICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmUpOworICAgIH0KKyAgICBFWFBFQ1RfRkFMU0UobG9hZFN1Y2Nlc3Mp
OworICAgIEVYUEVDVF9UUlVFKGxvYWRGYWlsKTsKKyAgICBFWFBFQ1RfRVEoc2VydmVyLnRvdGFs
UmVxdWVzdHMoKSwgMXUpOworfQorCitURVNUKFVSTFNjaGVtZUhhbmRsZXIsIExvYWRzU3VicmVz
b3VyY2VzKQoreworICAgIGJvb2wgbG9hZGVkSW1hZ2UgPSBmYWxzZTsKKyAgICBib29sIGxvYWRl
ZElGcmFtZSA9IGZhbHNlOworCisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbVGVzdFVSTFNj
aGVtZUhhbmRsZXIgbmV3XSk7CisKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1
cmF0aW9uID0gW1tbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVh
c2VdOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQo
KSBmb3JVUkxTY2hlbWU6QCJ0ZXN0Il07CisKKyAgICBbaGFuZGxlciBzZXRTdGFydFVSTFNjaGVt
ZVRhc2tIYW5kbGVyOlsmXShXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7
CisgICAgICAgIE5TU3RyaW5nICpyZXNwb25zZSA9IG5pbDsKKyAgICAgICAgaWYgKFt0YXNrLnJl
cXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL21haW4uaHRtbCJdKQorICAgICAgICAg
ICAgcmVzcG9uc2UgPSBAIjxpbWcgc3JjPScvaW1nc3JjJz48L2ltZz48aWZyYW1lIHNyYz0nL2lm
cmFtZXNyYyc+PC9pZnJhbWU+IjsKKyAgICAgICAgZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwu
cGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvaW1nc3JjIl0pIHsKKyAgICAgICAgICAgIHJlc3BvbnNl
ID0gQCJpbWFnZSBjb250ZW50IjsKKyAgICAgICAgICAgIGxvYWRlZEltYWdlID0gdHJ1ZTsKKyAg
ICAgICAgfSBlbHNlIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpA
Ii9pZnJhbWVzcmMiXSkgeworICAgICAgICAgICAgcmVzcG9uc2UgPSBAImlmcmFtZSBjb250ZW50
IjsKKyAgICAgICAgICAgIGxvYWRlZElGcmFtZSA9IHRydWU7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVS
ZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3Qu
VVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6cmVzcG9uc2Uu
bGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1dOworICAgICAgICBbdGFz
ayBkaWRSZWNlaXZlRGF0YTpbcmVzcG9uc2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmddXTsKKyAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKKyAgICB9XTsKKyAgICAKKyAg
ICB7CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uXSk7CisgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0Oi8vaG9zdDEvbWFpbi5o
dG1sIl1dXTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZsb2FkZWRJbWFnZSk7
CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmbG9hZGVkSUZyYW1lKTsKKyAgICB9
CisgICAgCisgICAgbG9hZGVkSW1hZ2UgPSBmYWxzZTsKKyAgICBsb2FkZWRJRnJhbWUgPSBmYWxz
ZTsKKworICAgIGNvbmZpZ3VyYXRpb24uX2xvYWRzU3VicmVzb3VyY2VzID0gTk87CisgICAgewor
ICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbl0pOworICAgICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25E
ZWxlZ2F0ZSBuZXddKTsKKyAgICAgICAgd2ViVmlldy5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUg
PSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInRlc3Q6Ly9ob3N0MS9t
YWluLmh0bWwiXV1dOworICAgICAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRp
b25dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgxMDApOworICAg
ICAgICBFWFBFQ1RfRkFMU0UobG9hZGVkSUZyYW1lKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGxv
YWRlZEltYWdlKTsKKyAgICB9Cit9CisKICNlbmRpZiAvLyBIQVZFKE5FVFdPUktfRlJBTUVXT1JL
KQogCiBAaW50ZXJmYWNlIEZyYW1lU2NoZW1lSGFuZGxlciA6IE5TT2JqZWN0IDxXS1VSTFNjaGVt
ZUhhbmRsZXI+CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAkocmV2
aXNpb24gMjU5MzA2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgcHVibGljOgogICAgIEhUVFBTZXJ2ZXIo
c3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+LCBQ
cm90b2NvbCA9IFByb3RvY29sOjpIdHRwKTsKICAgICB1aW50MTZfdCBwb3J0KCkgY29uc3Q7CiAg
ICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KCkgY29uc3Q7CisgICAgc2l6ZV90IHRvdGFsUmVxdWVz
dHMoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsUmVxdWVzdHM7IH0KICAgICAKIHByaXZhdGU6CiAg
ICAgdm9pZCByZXNwb25kVG9SZXF1ZXN0cyhud19jb25uZWN0aW9uX3QpOwpAQCAtNTAsNiArNTEs
NyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxud19saXN0ZW5lcl90PiBtX2xpc3RlbmVyOwog
ICAgIGNvbnN0IFByb3RvY29sIG1fcHJvdG9jb2w7CiAgICAgY29uc3QgSGFzaE1hcDxTdHJpbmcs
IEhUVFBSZXNwb25zZT4gbV9yZXF1ZXN0UmVzcG9uc2VNYXA7CisgICAgc2l6ZV90IG1fdG90YWxS
ZXF1ZXN0cyB7IDAgfTsKIH07CiAKIHN0cnVjdCBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2UgewpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQkocmV2aXNpb24gMjU5
MzA2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDAsNiArMTAwLDggQEAgdm9pZCBIVFRQU2VydmVyOjpyZXNwb25kVG9SZXF1
ZXN0cyhud19jbwogICAgICAgICB9KTsKICAgICAgICAgcmVxdWVzdC5hcHBlbmQoJ1wwJyk7CiAK
KyAgICAgICAgbV90b3RhbFJlcXVlc3RzKys7CisKICAgICAgICAgY29uc3QgY2hhciogZ2V0UGF0
aFByZWZpeCA9ICJHRVQgIjsKICAgICAgICAgY29uc3QgY2hhciogcG9zdFBhdGhQcmVmaXggPSAi
UE9TVCAiOwogICAgICAgICBjb25zdCBjaGFyKiBwYXRoU3VmZml4ID0gIiBIVFRQLzEuMVxyXG4i
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>