<?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>3774</bug_id>
          
          <creation_ts>2005-06-30 08:14:07 -0700</creation_ts>
          <short_desc>do renaming so that loaders are called &quot;loader&quot;, not &quot;client&quot; or &quot;delegate&quot;</short_desc>
          <delta_ts>2005-06-30 22:35:35 -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>WebKit Misc.</component>
          <version>412</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>13542</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-06-30 08:14:08 -0700</bug_when>
    <thetext>I am planning on renaming the following classes, source files, and methods in WebKit:

    WebBaseResourceHandleDelegate -&gt; WebLoader
    WebMainResourceClient -&gt; WebMainResourceLoader
    WebSubresourceClient -&gt; WebSubresourceLoader
    WebNetscapePluginConnectionDelegate -&gt; WebNetscapePlugInStreamLoader
    subresourceClients -&gt; subresourceLoaders
    mainClient -&gt; mainResourceLoader
    plugInStreamClients -&gt; plugInStreamLoaders
    _addSubresourceClient -&gt; _addSubresourceLoader
    _removeSubresourceClient -&gt; _removeSubresourceLoader
    _addPlugInStreamClient -&gt; _addPlugInStreamLoader
    _removePlugInStreamClient -&gt; _removePlugInStreamLoader</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13543</commentid>
    <comment_count>1</comment_count>
      <attachid>2715</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-06-30 08:16:14 -0700</bug_when>
    <thetext>Created attachment 2715
Patch, including deleting files; best applied with cvs-apply

I went to the cvs server and copied the files that need renaming. This patch
now does a cvs rm on the now-obsolete files and patches all the code, including
the project, to use the new names.

Also, it fixes some patches in the WebKit project file to be group-relative and
removes one unneeded framework path. But that&apos;s all -- just the renaming and
the project file tweaks. I&apos;ve compiled and tested running Safari and layout
tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13544</commentid>
    <comment_count>2</comment_count>
      <attachid>2715</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-06-30 08:17:27 -0700</bug_when>
    <thetext>Comment on attachment 2715
Patch, including deleting files; best applied with cvs-apply

This patch is simply renaming -- I considered landing it without review and
decided it would be better to get patch review.

It&apos;s a bit time-critical because we have &quot;doubled&quot; files in the repository due
to the &quot;copy files on the CVS server&quot; technique we use for renaming files in
CVS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13548</commentid>
    <comment_count>3</comment_count>
      <attachid>2715</attachid>
    <who name="John Sullivan">sullivan</who>
    <bug_when>2005-06-30 09:08:46 -0700</bug_when>
    <thetext>Comment on attachment 2715
Patch, including deleting files; best applied with cvs-apply

Good name change. I see that this doesn&apos;t affect any public headers, so r=me. I
am assuming that you tested Safari in some simple way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>13550</commentid>
    <comment_count>4</comment_count>
      <attachid>2715</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-06-30 09:12:59 -0700</bug_when>
    <thetext>Comment on attachment 2715
Patch, including deleting files; best applied with cvs-apply

It&apos;s too bad webkit isn&apos;t using svn quite yet... or the rename of files would
have been directly supported.  Also glad to see that this is in WK and not in
WC where a rename would have further differenced us from KDE.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2715</attachid>
            <date>2005-06-30 08:16:14 -0700</date>
            <delta_ts>2005-06-30 09:08:46 -0700</delta_ts>
            <desc>Patch, including deleting files; best applied with cvs-apply</desc>
            <filename>LoaderRenamePatch.txt</filename>
            <type>text/plain</type>
            <size>105746</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IC4vTWlzYy5zdWJwcm9qL1dlYkljb25Mb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl
OiAvY3ZzL3Jvb3QvV2ViS2l0L01pc2Muc3VicHJvai9XZWJJY29uTG9hZGVyLmgsdgpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuMTcKZGlmZiAtcCAtdSAtcCAtdSAtcjEuMTcgLi9NaXNjLnN1YnByb2ov
V2ViSWNvbkxvYWRlci5oCi0tLSAuL01pc2Muc3VicHJvai9XZWJJY29uTG9hZGVyLmgJNSBKdW4g
MjAwNSAxNzo1NDoyNSAtMDAwMAkxLjE3CisrKyAuL01pc2Muc3VicHJvai9XZWJJY29uTG9hZGVy
LmgJMzAgSnVuIDIwMDUgMTQ6NTY6MDMgLTAwMDAKQEAgLTI2LDE0ICsyNiwxNCBAQAogICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaW1wb3J0IDxXZWJLaXQvV2ViQmFzZVJlc291cmNlSGFuZGxlRGVsZWdh
dGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJMb2FkZXIuaD4KIAogQGNsYXNzIFdlYkljb25Mb2Fk
ZXJQcml2YXRlOwogCiAvKiEKICAgICBAY2xhc3MgV2ViSWNvbkxvYWRlcgogKi8KLUBpbnRlcmZh
Y2UgV2ViSWNvbkxvYWRlciA6IFdlYkJhc2VSZXNvdXJjZUhhbmRsZURlbGVnYXRlCitAaW50ZXJm
YWNlIFdlYkljb25Mb2FkZXIgOiBXZWJMb2FkZXIKIHsKICAgICBXZWJJY29uTG9hZGVyUHJpdmF0
ZSAqX3ByaXZhdGU7CiB9CkluZGV4OiAuL1BsdWdpbnMuc3VicHJvai9XZWJOZXRzY2FwZVBsdWdp
blN0cmVhbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJLaXQvUGx1Z2lucy5z
dWJwcm9qL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu
MTIKZGlmZiAtcCAtdSAtcCAtdSAtcjEuMTIgLi9QbHVnaW5zLnN1YnByb2ovV2ViTmV0c2NhcGVQ
bHVnaW5TdHJlYW0uaAotLS0gLi9QbHVnaW5zLnN1YnByb2ovV2ViTmV0c2NhcGVQbHVnaW5TdHJl
YW0uaAk1IEp1biAyMDA1IDE3OjU0OjM1IC0wMDAwCTEuMTIKKysrIC4vUGx1Z2lucy5zdWJwcm9q
L1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgJMzAgSnVuIDIwMDUgMTQ6NTY6MjQgLTAwMDAKQEAg
LTMzLDEyICszMywxMiBAQAogCiBAY2xhc3MgTlNVUkxSZXF1ZXN0OwogQGNsYXNzIE5TVVJMQ29u
bmVjdGlvbjsKLUBjbGFzcyBXZWJOZXRzY2FwZVBsdWdpbkNvbm5lY3Rpb25EZWxlZ2F0ZTsKK0Bj
bGFzcyBXZWJOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjsKIAogCiBAaW50ZXJmYWNlIFdlYk5l
dHNjYXBlUGx1Z2luU3RyZWFtIDogV2ViQmFzZU5ldHNjYXBlUGx1Z2luU3RyZWFtIAogeyAgICAK
LSAgICBXZWJOZXRzY2FwZVBsdWdpbkNvbm5lY3Rpb25EZWxlZ2F0ZSAqX2xvYWRlcjsKKyAgICBX
ZWJOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciAqX2xvYWRlcjsKICAgICBOU1VSTFJlcXVlc3Qg
KnJlcXVlc3Q7CiB9CiAKSW5kZXg6IC4vUGx1Z2lucy5zdWJwcm9qL1dlYk5ldHNjYXBlUGx1Z2lu
U3RyZWFtLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYktpdC9QbHVnaW5zLnN1
YnByb2ovV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41
MwpkaWZmIC1wIC11IC1wIC11IC1yMS41MyAuL1BsdWdpbnMuc3VicHJvai9XZWJOZXRzY2FwZVBs
dWdpblN0cmVhbS5tCi0tLSAuL1BsdWdpbnMuc3VicHJvai9XZWJOZXRzY2FwZVBsdWdpblN0cmVh
bS5tCTYgSnVuIDIwMDUgMDA6MTU6MDkgLTAwMDAJMS41MworKysgLi9QbHVnaW5zLnN1YnByb2ov
V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubQkzMCBKdW4gMjAwNSAxNDo1NjoyNCAtMDAwMApAQCAt
MjgsNyArMjgsNyBAQAogCiAjaW1wb3J0IDxXZWJLaXQvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0u
aD4KIAotI2ltcG9ydCA8V2ViS2l0L1dlYkJhc2VSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmg+Cisj
aW1wb3J0IDxXZWJLaXQvV2ViTG9hZGVyLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViQnJpZGdlLmg+
CiAjaW1wb3J0IDxXZWJLaXQvV2ViRGF0YVNvdXJjZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktp
dC9XZWJLaXRFcnJvcnNQcml2YXRlLmg+CkBAIC00MCw3ICs0MCw3IEBACiAKICNpbXBvcnQgPEZv
dW5kYXRpb24vTlNVUkxDb25uZWN0aW9uLmg+CiAKLUBpbnRlcmZhY2UgV2ViTmV0c2NhcGVQbHVn
aW5Db25uZWN0aW9uRGVsZWdhdGUgOiBXZWJCYXNlUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZQorQGlu
dGVyZmFjZSBXZWJOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciA6IFdlYkxvYWRlcgogewogICAg
IFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtICpzdHJlYW07CiAgICAgV2ViQmFzZU5ldHNjYXBlUGx1
Z2luVmlldyAqdmlldzsKQEAgLTgzLDcgKzgzLDcgQEAKICAgICAgICAgWyhOU011dGFibGVVUkxS
ZXF1ZXN0ICopcmVxdWVzdCBfd2ViX3NldEhUVFBSZWZlcnJlcjpuaWxdOwogICAgIH0KIAotICAg
IF9sb2FkZXIgPSBbW1dlYk5ldHNjYXBlUGx1Z2luQ29ubmVjdGlvbkRlbGVnYXRlIGFsbG9jXSBp
bml0V2l0aFN0cmVhbTpzZWxmIHZpZXc6dmlld107IAorICAgIF9sb2FkZXIgPSBbW1dlYk5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyIGFsbG9jXSBpbml0V2l0aFN0cmVhbTpzZWxmIHZpZXc6dmll
d107IAogICAgIFtfbG9hZGVyIHNldERhdGFTb3VyY2U6W3ZpZXcgZGF0YVNvdXJjZV1dOwogICAg
IAogICAgIGlzVGVybWluYXRlZCA9IE5POwpAQCAtMTAyLDExICsxMDIsMTEgQEAKIHsKICAgICBB
U1NFUlQocmVxdWVzdCk7CiAKLSAgICBbW19sb2FkZXIgZGF0YVNvdXJjZV0gX2FkZFBsdWdJblN0
cmVhbUNsaWVudDpfbG9hZGVyXTsKKyAgICBbW19sb2FkZXIgZGF0YVNvdXJjZV0gX2FkZFBsdWdJ
blN0cmVhbUxvYWRlcjpfbG9hZGVyXTsKIAogICAgIEJPT0wgc3VjY2VlZGVkID0gW19sb2FkZXIg
bG9hZFdpdGhSZXF1ZXN0OnJlcXVlc3RdOwogICAgIGlmICghc3VjY2VlZGVkKSB7Ci0gICAgICAg
IFtbX2xvYWRlciBkYXRhU291cmNlXSBfcmVtb3ZlUGx1Z0luU3RyZWFtQ2xpZW50Ol9sb2FkZXJd
OworICAgICAgICBbW19sb2FkZXIgZGF0YVNvdXJjZV0gX3JlbW92ZVBsdWdJblN0cmVhbUxvYWRl
cjpfbG9hZGVyXTsKICAgICB9CiB9CiAKQEAgLTEyNCw3ICsxMjQsNyBAQAogCiBAZW5kCiAKLUBp
bXBsZW1lbnRhdGlvbiBXZWJOZXRzY2FwZVBsdWdpbkNvbm5lY3Rpb25EZWxlZ2F0ZQorQGltcGxl
bWVudGF0aW9uIFdlYk5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyCiAKIC0gaW5pdFdpdGhTdHJl
YW06KFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtICopdGhlU3RyZWFtIHZpZXc6KFdlYkJhc2VOZXRz
Y2FwZVBsdWdpblZpZXcgKil0aGVWaWV3CiB7CkBAIC0xODMsMTAgKzE4MywxMCBAQAogCiAtICh2
b2lkKWRpZEZpbmlzaExvYWRpbmcKIHsKLSAgICAvLyBDYWxsaW5nIF9yZW1vdmVQbHVnSW5TdHJl
YW1DbGllbnQgd2lsbCBsaWtlbHkgcmVzdWx0IGluIGEgY2FsbCB0byByZWxlYXNlLCBzbyB3ZSBt
dXN0IHJldGFpbi4KKyAgICAvLyBDYWxsaW5nIF9yZW1vdmVQbHVnSW5TdHJlYW1Mb2FkZXIgd2ls
bCBsaWtlbHkgcmVzdWx0IGluIGEgY2FsbCB0byByZWxlYXNlLCBzbyB3ZSBtdXN0IHJldGFpbi4K
ICAgICBbc2VsZiByZXRhaW5dOwogCi0gICAgW1tzZWxmIGRhdGFTb3VyY2VdIF9yZW1vdmVQbHVn
SW5TdHJlYW1DbGllbnQ6c2VsZl07CisgICAgW1tzZWxmIGRhdGFTb3VyY2VdIF9yZW1vdmVQbHVn
SW5TdHJlYW1Mb2FkZXI6c2VsZl07CiAgICAgW1t2aWV3IHdlYlZpZXddIF9maW5pc2hlZExvYWRp
bmdSZXNvdXJjZUZyb21EYXRhU291cmNlOltzZWxmIGRhdGFTb3VyY2VdXTsKICAgICBbc3RyZWFt
IGZpbmlzaGVkTG9hZGluZ1dpdGhEYXRhOltzZWxmIHJlc291cmNlRGF0YV1dOwogICAgIFtzdXBl
ciBkaWRGaW5pc2hMb2FkaW5nXTsKQEAgLTE5NiwxMiArMTk2LDEyIEBACiAKIC0gKHZvaWQpZGlk
RmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCiB7Ci0gICAgLy8gQ2FsbGluZyBfcmVtb3Zl
UGx1Z0luU3RyZWFtQ2xpZW50IHdpbGwgbGlrZWx5IHJlc3VsdCBpbiBhIGNhbGwgdG8gcmVsZWFz
ZSwgc28gd2UgbXVzdCByZXRhaW4uCisgICAgLy8gQ2FsbGluZyBfcmVtb3ZlUGx1Z0luU3RyZWFt
TG9hZGVyIHdpbGwgbGlrZWx5IHJlc3VsdCBpbiBhIGNhbGwgdG8gcmVsZWFzZSwgc28gd2UgbXVz
dCByZXRhaW4uCiAgICAgLy8gVGhlIG90aGVyIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8g
YW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IHJlbGVhc2luZyBzZWxmOwogICAgIC8vIG9uZSBl
eGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIxNgogICAgIFtzZWxmIHJldGFpbl07CiAKLSAgICBbW3Nl
bGYgZGF0YVNvdXJjZV0gX3JlbW92ZVBsdWdJblN0cmVhbUNsaWVudDpzZWxmXTsKKyAgICBbW3Nl
bGYgZGF0YVNvdXJjZV0gX3JlbW92ZVBsdWdJblN0cmVhbUxvYWRlcjpzZWxmXTsKICAgICBbW3Zp
ZXcgd2ViVmlld10gX3JlY2VpdmVkRXJyb3I6ZXJyb3IgZnJvbURhdGFTb3VyY2U6W3NlbGYgZGF0
YVNvdXJjZV1dOwogICAgIFtzdHJlYW0gZGVzdHJveVN0cmVhbVdpdGhFcnJvcjplcnJvcl07CiAg
ICAgW3N1cGVyIGRpZEZhaWxXaXRoRXJyb3I6ZXJyb3JdOwpAQCAtMjExLDEwICsyMTEsMTAgQEAK
IAogLSAodm9pZCljYW5jZWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgogewotICAgIC8vIENh
bGxpbmcgX3JlbW92ZVBsdWdJblN0cmVhbUNsaWVudCB3aWxsIGxpa2VseSByZXN1bHQgaW4gYSBj
YWxsIHRvIHJlbGVhc2UsIHNvIHdlIG11c3QgcmV0YWluLgorICAgIC8vIENhbGxpbmcgX3JlbW92
ZVBsdWdJblN0cmVhbUxvYWRlciB3aWxsIGxpa2VseSByZXN1bHQgaW4gYSBjYWxsIHRvIHJlbGVh
c2UsIHNvIHdlIG11c3QgcmV0YWluLgogICAgIFtzZWxmIHJldGFpbl07CiAKLSAgICBbW3NlbGYg
ZGF0YVNvdXJjZV0gX3JlbW92ZVBsdWdJblN0cmVhbUNsaWVudDpzZWxmXTsKKyAgICBbW3NlbGYg
ZGF0YVNvdXJjZV0gX3JlbW92ZVBsdWdJblN0cmVhbUxvYWRlcjpzZWxmXTsKICAgICBbc3VwZXIg
Y2FuY2VsV2l0aEVycm9yOmVycm9yXTsKIAogICAgIFtzZWxmIHJlbGVhc2VdOwpJbmRleDogLi9X
ZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYkJyaWRnZS5tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9j
dnMvcm9vdC9XZWJLaXQvV2ViQ29yZVN1cHBvcnQuc3VicHJvai9XZWJCcmlkZ2UubSx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS4zNTUKZGlmZiAtcCAtdSAtcCAtdSAtcjEuMzU1IC4vV2ViQ29yZVN1
cHBvcnQuc3VicHJvai9XZWJCcmlkZ2UubQotLS0gLi9XZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dl
YkJyaWRnZS5tCTYgSnVuIDIwMDUgMDA6MTU6MDkgLTAwMDAJMS4zNTUKKysrIC4vV2ViQ29yZVN1
cHBvcnQuc3VicHJvai9XZWJCcmlkZ2UubQkzMCBKdW4gMjAwNSAxNDo1NjoyOCAtMDAwMApAQCAt
MzIsNyArMzIsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYkJhY2tGb3J3YXJkTGlzdC5oPgogI2lt
cG9ydCA8V2ViS2l0L1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcuaD4KICNpbXBvcnQgPFdlYktp
dC9XZWJCYXNlUGx1Z2luUGFja2FnZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYkJhc2VSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViTG9hZGVyLmg+CiAjaW1wb3J0
ICJXZWJDb250cm9sbGVyU2V0cy5oIgogI2ltcG9ydCA8V2ViS2l0L1dlYkRhdGFTb3VyY2VQcml2
YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViRGVmYXVsdFVJRGVsZWdhdGUuaD4KQEAgLTY5LDcg
KzY5LDcgQEAKICNpbXBvcnQgPFdlYktpdC9XZWJOZXRzY2FwZVBsdWdpbkRvY3VtZW50Vmlldy5o
PgogI2ltcG9ydCA8V2ViS2l0L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dlYlJlc291cmNlUHJpdmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYlN1YnJlc291cmNl
Q2xpZW50Lmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViU3VicmVzb3VyY2VMb2FkZXIuaD4KICNpbXBv
cnQgPFdlYktpdC9XZWJWaWV3SW50ZXJuYWwuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJWaWV3UHJp
dmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYlVJRGVsZWdhdGVQcml2YXRlLmg+CkBAIC00NTAs
NyArNDUwLDcgQEAgTlNTdHJpbmcgKldlYlBsdWdpbkNvbnRhaW5lcktleSA9ICAgQCJXZQogICAg
IEJPT0wgaGlkZVJlZmVycmVyOwogICAgIFtzZWxmIGNhbkxvYWRVUkw6VVJMIGZyb21SZWZlcnJl
cjpbc2VsZiByZWZlcnJlcl0gaGlkZVJlZmVycmVyOiZoaWRlUmVmZXJyZXJdOwogCi0gICAgcmV0
dXJuIFtXZWJTdWJyZXNvdXJjZUNsaWVudCBzdGFydExvYWRpbmdSZXNvdXJjZTpyZXNvdXJjZUxv
YWRlcgorICAgIHJldHVybiBbV2ViU3VicmVzb3VyY2VMb2FkZXIgc3RhcnRMb2FkaW5nUmVzb3Vy
Y2U6cmVzb3VyY2VMb2FkZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3aXRoVVJMOlVSTAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGN1c3RvbUhlYWRlcnM6Y3VzdG9tSGVhZGVycwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVmZXJyZXI6KGhpZGVSZWZlcnJlciA/IG5pbCA6IFtzZWxm
IHJlZmVycmVyXSkKQEAgLTQ3MCw3ICs0NzAsNyBAQCBOU1N0cmluZyAqV2ViUGx1Z2luQ29udGFp
bmVyS2V5ID0gICBAIldlCiAgICAgQk9PTCBoaWRlUmVmZXJyZXI7CiAgICAgW3NlbGYgY2FuTG9h
ZFVSTDpVUkwgZnJvbVJlZmVycmVyOltzZWxmIHJlZmVycmVyXSBoaWRlUmVmZXJyZXI6JmhpZGVS
ZWZlcnJlcl07CiAKLSAgICByZXR1cm4gW1dlYlN1YnJlc291cmNlQ2xpZW50IHN0YXJ0TG9hZGlu
Z1Jlc291cmNlOnJlc291cmNlTG9hZGVyCisgICAgcmV0dXJuIFtXZWJTdWJyZXNvdXJjZUxvYWRl
ciBzdGFydExvYWRpbmdSZXNvdXJjZTpyZXNvdXJjZUxvYWRlcgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhVUkw6VVJMCiAgCQkJCSAgICAgICAgY3Vz
dG9tSGVhZGVyczpjdXN0b21IZWFkZXJzCiAJCQkJICAgICAgICAgICAgIHBvc3REYXRhOnBvc3RE
YXRhCkBAIC0xNjU0LDcgKzE2NTQsNyBAQCBzdGF0aWMgTlNDaGFyYWN0ZXJTZXQgKl9nZXRQb3N0
U21hcnRTZXQoCiAKIC0gKEJPT0wpY2FuUnVuTW9kYWxOb3cKIHsKLSAgICByZXR1cm4gW3NlbGYg
Y2FuUnVuTW9kYWxdICYmICFbV2ViQmFzZVJlc291cmNlSGFuZGxlRGVsZWdhdGUgaW5Db25uZWN0
aW9uQ2FsbGJhY2tdOworICAgIHJldHVybiBbc2VsZiBjYW5SdW5Nb2RhbF0gJiYgIVtXZWJMb2Fk
ZXIgaW5Db25uZWN0aW9uQ2FsbGJhY2tdOwogfQogCiAtICh2b2lkKXJ1bk1vZGFsCkluZGV4OiAu
L1dlYkNvcmVTdXBwb3J0LnN1YnByb2ovV2ViU3VicmVzb3VyY2VDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
ClJDUyBmaWxlOiBXZWJTdWJyZXNvdXJjZUNsaWVudC5oCmRpZmYgLU4gLi9XZWJDb3JlU3VwcG9y
dC5zdWJwcm9qL1dlYlN1YnJlc291cmNlQ2xpZW50LmgKLS0tIC4vV2ViQ29yZVN1cHBvcnQuc3Vi
cHJvai9XZWJTdWJyZXNvdXJjZUNsaWVudC5oCTUgSnVuIDIwMDUgMTc6NTQ6NDAgLTAwMDAJMS4x
OAorKysgLi9XZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlN1YnJlc291cmNlQ2xpZW50LmgJMSBK
YW4gMTk3MCAwMDowMDowMCAtMDAwMApAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgotCi0jaW1wb3J0IDxXZWJLaXQvV2ViQmFz
ZVJlc291cmNlSGFuZGxlRGVsZWdhdGUuaD4KLQotQGNsYXNzIFdlYkRhdGFTb3VyY2U7Ci0KLUBw
cm90b2NvbCBXZWJDb3JlUmVzb3VyY2VIYW5kbGU7Ci1AcHJvdG9jb2wgV2ViQ29yZVJlc291cmNl
TG9hZGVyOwotCi1AaW50ZXJmYWNlIFdlYlN1YnJlc291cmNlQ2xpZW50IDogV2ViQmFzZVJlc291
cmNlSGFuZGxlRGVsZWdhdGUgPFdlYkNvcmVSZXNvdXJjZUhhbmRsZT4KLXsKLSAgICBpZCA8V2Vi
Q29yZVJlc291cmNlTG9hZGVyPiBsb2FkZXI7Ci19Ci0KLSsgKFdlYlN1YnJlc291cmNlQ2xpZW50
ICopc3RhcnRMb2FkaW5nUmVzb3VyY2U6KGlkIDxXZWJDb3JlUmVzb3VyY2VMb2FkZXI+KXJMb2Fk
ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhVUkw6KE5TVVJM
ICopVVJMIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tSGVhZGVyczoo
TlNEaWN0aW9uYXJ5ICopY3VzdG9tSGVhZGVycwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWZlcnJlcjooTlNTdHJpbmcgKilyZWZlcnJlciAKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZvckRhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilzb3VyY2U7
Ci0KLSsgKFdlYlN1YnJlc291cmNlQ2xpZW50ICopc3RhcnRMb2FkaW5nUmVzb3VyY2U6KGlkIDxX
ZWJDb3JlUmVzb3VyY2VMb2FkZXI+KXJMb2FkZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdpdGhVUkw6KE5TVVJMICopVVJMIAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3VzdG9tSGVhZGVyczooTlNEaWN0aW9uYXJ5ICopY3VzdG9tSGVhZGVycwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0RGF0YTooTlNBcnJheSAq
KXBvc3REYXRhIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcnJl
cjooTlNTdHJpbmcgKilyZWZlcnJlciAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZvckRhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilzb3VyY2U7Ci0KLUBlbmQKSW5kZXg6IC4v
V2ViQ29yZVN1cHBvcnQuc3VicHJvai9XZWJTdWJyZXNvdXJjZUNsaWVudC5tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IFdlYlN1YnJlc291cmNlQ2xpZW50Lm0KZGlmZiAtTiAuL1dlYkNvcmVTdXBwb3J0
LnN1YnByb2ovV2ViU3VicmVzb3VyY2VDbGllbnQubQotLS0gLi9XZWJDb3JlU3VwcG9ydC5zdWJw
cm9qL1dlYlN1YnJlc291cmNlQ2xpZW50Lm0JNSBKdW4gMjAwNSAxNzo1NDo0MCAtMDAwMAkxLjEx
MQorKysgLi9XZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlN1YnJlc291cmNlQ2xpZW50Lm0JMSBK
YW4gMTk3MCAwMDowMDowMCAtMDAwMApAQCAtMSwyMjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0g
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLiAKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW1wb3J0IDxXZWJLaXQvV2ViU3VicmVzb3VyY2VDbGllbnQuaD4KLQotI2ltcG9ydCA8V2ViS2l0
L1dlYkFzc2VydGlvbnMuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJCcmlkZ2UuaD4KLSNpbXBvcnQg
PFdlYktpdC9XZWJEYXRhU291cmNlUHJpdmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYkZvcm1E
YXRhU3RyZWFtLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViRnJhbWUuaD4KLSNpbXBvcnQgPFdlYktp
dC9XZWJLaXRFcnJvcnNQcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViTlNVUkxSZXF1ZXN0
RXh0cmFzLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViVmlld1ByaXZhdGUuaD4KLQotI2ltcG9ydCA8
Rm91bmRhdGlvbi9OU1VSTFJlc3BvbnNlLmg+Ci0KLSNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVJl
c291cmNlTG9hZGVyLmg+Ci0KLUBpbXBsZW1lbnRhdGlvbiBXZWJTdWJyZXNvdXJjZUNsaWVudAot
Ci0tIGluaXRXaXRoTG9hZGVyOihpZCA8V2ViQ29yZVJlc291cmNlTG9hZGVyPilsIGRhdGFTb3Vy
Y2U6KFdlYkRhdGFTb3VyY2UgKilzCi17Ci0gICAgW3N1cGVyIGluaXRdOwotICAgIAotICAgIGxv
YWRlciA9IFtsIHJldGFpbl07Ci0KLSAgICBbc2VsZiBzZXREYXRhU291cmNlOiBzXTsKLSAgICAK
LSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW2xvYWRlciBy
ZWxlYXNlXTsKLSAgICBbc3VwZXIgZGVhbGxvY107Ci19Ci0KLSsgKFdlYlN1YnJlc291cmNlQ2xp
ZW50ICopc3RhcnRMb2FkaW5nUmVzb3VyY2U6KGlkIDxXZWJDb3JlUmVzb3VyY2VMb2FkZXI+KXJM
b2FkZXIKLQkJCQkgICB3aXRoUmVxdWVzdDooTlNNdXRhYmxlVVJMUmVxdWVzdCAqKW5ld1JlcXVl
c3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUhlYWRlcnM6KE5TRGlj
dGlvbmFyeSAqKWN1c3RvbUhlYWRlcnMKLQkJCQkgICAgICByZWZlcnJlcjooTlNTdHJpbmcgKily
ZWZlcnJlciAKLQkJCQkgZm9yRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKXNvdXJjZQotewot
ICAgIFdlYlN1YnJlc291cmNlQ2xpZW50ICpjbGllbnQgPSBbW1tzZWxmIGFsbG9jXSBpbml0V2l0
aExvYWRlcjpyTG9hZGVyIGRhdGFTb3VyY2U6c291cmNlXSBhdXRvcmVsZWFzZV07Ci0gICAgCi0g
ICAgW3NvdXJjZSBfYWRkU3VicmVzb3VyY2VDbGllbnQ6Y2xpZW50XTsKLQotCi0gICAgTlNFbnVt
ZXJhdG9yICplID0gW2N1c3RvbUhlYWRlcnMga2V5RW51bWVyYXRvcl07Ci0gICAgTlNTdHJpbmcg
KmtleTsKLSAgICB3aGlsZSAoKGtleSA9IChOU1N0cmluZyAqKVtlIG5leHRPYmplY3RdKSAhPSBu
aWwpIHsKLQlbbmV3UmVxdWVzdCBhZGRWYWx1ZTpbY3VzdG9tSGVhZGVycyBvYmplY3RGb3JLZXk6
a2V5XSBmb3JIVFRQSGVhZGVyRmllbGQ6a2V5XTsKLSAgICB9Ci0KLSAgICAvLyBVc2UgdGhlIG9y
aWdpbmFsIHJlcXVlc3QncyBjYWNoZSBwb2xpY3kgZm9yIHR3byByZWFzb25zOgotICAgIC8vIDEu
IEZvciBQT1NUIHJlcXVlc3RzLCB3ZSBtdXRhdGUgdGhlIGNhY2hlIHBvbGljeSBmb3IgdGhlIG1h
aW4gcmVzb3VyY2UsCi0gICAgLy8gICAgYnV0IHdlIGRvIG5vdCB3YW50IHRoaXMgdG8gYXBwbHkg
dG8gc3VicmVzb3VyY2VzCi0gICAgLy8gMi4gRGVsZWdhdGVzIHRoYXQgbW9kaWZ5IHRoZSBjYWNo
ZSBwb2xpY3kgdXNpbmcgd2lsbFNlbmRSZXF1ZXN0OiBzaG91bGQKLSAgICAvLyAgICBub3QgYWZm
ZWN0IGFueSBvdGhlciByZXNvdXJjZXMuIFN1Y2ggY2hhbmdlcyBuZWVkIHRvIGJlIGRvbmUKLSAg
ICAvLyAgICBwZXIgcmVxdWVzdC4KLSAgICBbbmV3UmVxdWVzdCBzZXRDYWNoZVBvbGljeTpbW3Nv
dXJjZSBfb3JpZ2luYWxSZXF1ZXN0XSBjYWNoZVBvbGljeV1dOwotICAgIFtuZXdSZXF1ZXN0IF93
ZWJfc2V0SFRUUFJlZmVycmVyOnJlZmVycmVyXTsKLSAgICAKLSAgICBXZWJWaWV3ICpfd2ViVmll
dyA9IFtzb3VyY2UgX3dlYlZpZXddOwotICAgIFtuZXdSZXF1ZXN0IHNldE1haW5Eb2N1bWVudFVS
TDpbW1tbX3dlYlZpZXcgbWFpbkZyYW1lXSBkYXRhU291cmNlXSByZXF1ZXN0XSBVUkxdXTsKLSAg
ICBbbmV3UmVxdWVzdCBfd2ViX3NldEhUVFBVc2VyQWdlbnQ6W193ZWJWaWV3IHVzZXJBZ2VudEZv
clVSTDpbbmV3UmVxdWVzdCBVUkxdXV07Ci0gICAgICAgICAgICAKLSAgICBpZiAoIVtjbGllbnQg
bG9hZFdpdGhSZXF1ZXN0Om5ld1JlcXVlc3RdKSB7Ci0gICAgICAgIGNsaWVudCA9IG5pbDsKLSAg
ICB9Ci0gICAgCi0gICAgcmV0dXJuIGNsaWVudDsKLX0KLQotKyAoV2ViU3VicmVzb3VyY2VDbGll
bnQgKilzdGFydExvYWRpbmdSZXNvdXJjZTooaWQgPFdlYkNvcmVSZXNvdXJjZUxvYWRlcj4pckxv
YWRlcgotCQkJCSAgICAgICB3aXRoVVJMOihOU1VSTCAqKVVSTAotCQkJCSBjdXN0b21IZWFkZXJz
OihOU0RpY3Rpb25hcnkgKiljdXN0b21IZWFkZXJzCi0JCQkJICAgICAgcmVmZXJyZXI6KE5TU3Ry
aW5nICopcmVmZXJyZXIKLQkJCQkgZm9yRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKXNvdXJj
ZQotewotICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5ld1JlcXVlc3QgPSBbW05TTXV0YWJsZVVS
TFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJMOlVSTF07Ci0gICAgV2ViU3VicmVzb3VyY2VDbGll
bnQgKmNsaWVudCA9IFtzZWxmIHN0YXJ0TG9hZGluZ1Jlc291cmNlOnJMb2FkZXIgd2l0aFJlcXVl
c3Q6bmV3UmVxdWVzdCBjdXN0b21IZWFkZXJzOmN1c3RvbUhlYWRlcnMgcmVmZXJyZXI6cmVmZXJy
ZXIgZm9yRGF0YVNvdXJjZTpzb3VyY2VdOwotICAgIFtuZXdSZXF1ZXN0IHJlbGVhc2VdOwotCi0g
ICAgcmV0dXJuIGNsaWVudDsKLX0KLQotKyAoV2ViU3VicmVzb3VyY2VDbGllbnQgKilzdGFydExv
YWRpbmdSZXNvdXJjZTooaWQgPFdlYkNvcmVSZXNvdXJjZUxvYWRlcj4pckxvYWRlcgotCQkJCSAg
ICAgICB3aXRoVVJMOihOU1VSTCAqKVVSTAotCQkJCSBjdXN0b21IZWFkZXJzOihOU0RpY3Rpb25h
cnkgKiljdXN0b21IZWFkZXJzCi0JCQkJICAgICAgcG9zdERhdGE6KE5TQXJyYXkgKilwb3N0RGF0
YQotCQkJCSAgICAgIHJlZmVycmVyOihOU1N0cmluZyAqKXJlZmVycmVyCi0JCQkJIGZvckRhdGFT
b3VyY2U6KFdlYkRhdGFTb3VyY2UgKilzb3VyY2UKLXsKLSAgICBOU011dGFibGVVUkxSZXF1ZXN0
ICpuZXdSZXF1ZXN0ID0gW1tOU011dGFibGVVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpV
UkxdOwotCi0gICAgW25ld1JlcXVlc3Qgc2V0SFRUUE1ldGhvZDpAIlBPU1QiXTsKLSAgICB3ZWJT
ZXRIVFRQQm9keShuZXdSZXF1ZXN0LCBwb3N0RGF0YSk7Ci0KLSAgICBXZWJTdWJyZXNvdXJjZUNs
aWVudCAqY2xpZW50ID0gW3NlbGYgc3RhcnRMb2FkaW5nUmVzb3VyY2U6ckxvYWRlciB3aXRoUmVx
dWVzdDpuZXdSZXF1ZXN0IGN1c3RvbUhlYWRlcnM6Y3VzdG9tSGVhZGVycyByZWZlcnJlcjpyZWZl
cnJlciBmb3JEYXRhU291cmNlOnNvdXJjZV07Ci0gICAgW25ld1JlcXVlc3QgcmVsZWFzZV07Ci0K
LSAgICByZXR1cm4gY2xpZW50OwotCi19Ci0KLS0gKHZvaWQpcmVjZWl2ZWRFcnJvcjooTlNFcnJv
ciAqKWVycm9yCi17Ci0gICAgW1tkYXRhU291cmNlIF93ZWJWaWV3XSBfcmVjZWl2ZWRFcnJvcjpl
cnJvciBmcm9tRGF0YVNvdXJjZTpkYXRhU291cmNlXTsKLX0KLQotLSAoTlNVUkxSZXF1ZXN0ICop
d2lsbFNlbmRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKiluZXdSZXF1ZXN0IHJlZGlyZWN0UmVzcG9u
c2U6KE5TVVJMUmVzcG9uc2UgKilyZWRpcmVjdFJlc3BvbnNlOwotewotICAgIE5TVVJMICpvbGRV
UkwgPSBbcmVxdWVzdCBVUkxdOwotICAgIE5TVVJMUmVxdWVzdCAqY2xpZW50UmVxdWVzdCA9IFtz
dXBlciB3aWxsU2VuZFJlcXVlc3Q6bmV3UmVxdWVzdCByZWRpcmVjdFJlc3BvbnNlOnJlZGlyZWN0
UmVzcG9uc2VdOwotICAgIAotICAgIGlmIChjbGllbnRSZXF1ZXN0ICE9IG5pbCAmJiAhW29sZFVS
TCBpc0VxdWFsOltjbGllbnRSZXF1ZXN0IFVSTF1dKSB7Ci0JW2xvYWRlciByZWRpcmVjdGVkVG9V
Ukw6W2NsaWVudFJlcXVlc3QgVVJMXV07Ci0gICAgfQotCi0gICAgcmV0dXJuIGNsaWVudFJlcXVl
c3Q7Ci19Ci0KLS0gKHZvaWQpZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcgot
ewotICAgIEFTU0VSVChyKTsKLSAgICAKLSAgICAvLyBGSVhNRTogU2luY2Ugd2UncmUgbm90IGdv
aW5nIHRvIGZpeCA8cmRhcjovL3Byb2JsZW0vMzA4NzUzNT4gZm9yIFRpZ2VyLCB3ZSBzaG91bGQg
bm90IAotICAgIC8vIGxvYWQgbXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBjb250ZW50LiAgUGFn
ZXMgd2l0aCBzdWNoIGNvbnRlbnQgY29udGFpbiB3aGF0IGlzIAotICAgIC8vIGVzc2VudGlhbGx5
IGFuIGluZmluaXRlIGxvYWQgYW5kIHRoZXJlZm9yZSBhIG1lbW9yeSBsZWFrLiBCb3RoIHRoaXMg
Y29kZSBhbmQgY29kZSBpbiAKLSAgICAvLyBXZWJNYWluUmVjb3VyZUNsaWVudCBtdXN0IGJlIHJl
bW92ZWQgb25jZSBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIGlzIGZ1bGx5IGltcGxlbWVudGVk
LiAKLSAgICBpZiAoW1tyIE1JTUVUeXBlXSBpc0VxdWFsVG9TdHJpbmc6QCJtdWx0aXBhcnQveC1t
aXhlZC1yZXBsYWNlIl0pIHsKLSAgICAgICAgW2RhdGFTb3VyY2UgX3JlbW92ZVN1YnJlc291cmNl
Q2xpZW50OnNlbGZdOwotICAgICAgICBbW1tkYXRhU291cmNlIF93ZWJWaWV3XSBtYWluRnJhbWVd
IF9jaGVja0xvYWRDb21wbGV0ZV07Ci0gICAgICAgIFtzZWxmIGNhbmNlbFdpdGhFcnJvcjpbTlNF
cnJvciBfd2ViS2l0RXJyb3JXaXRoRG9tYWluOk5TVVJMRXJyb3JEb21haW4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6TlNVUkxF
cnJvclVuc3VwcG9ydGVkVVJMCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVVJMOltyIFVSTF1dXTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0gICAgCi0gICAgCi0gICAgLy8gcmV0YWluL3JlbGVhc2Ugc2VsZiBpbiB0aGlzIGRlbGVnYXRl
IG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwotICAgIC8vIGFu
eXRoaW5nIGluY2x1ZGluZyBwb3NzaWJseSByZWxlYXNpbmcgc2VsZjsgb25lIGV4YW1wbGUgb2Yg
dGhpcyBpcyAzMjY2MjE2Ci0gICAgW3NlbGYgcmV0YWluXTsKLSAgICBbbG9hZGVyIHJlY2VpdmVk
UmVzcG9uc2U6cl07Ci0gICAgW3N1cGVyIGRpZFJlY2VpdmVSZXNwb25zZTpyXTsKLSAgICBbc2Vs
ZiByZWxlYXNlXTsKLX0KLQotLSAodm9pZClkaWRSZWNlaXZlRGF0YTooTlNEYXRhICopZGF0YSBs
ZW5ndGhSZWNlaXZlZDoobG9uZyBsb25nKWxlbmd0aFJlY2VpdmVkCi17Ci0gICAgLy8gcmV0YWlu
L3JlbGVhc2Ugc2VsZiBpbiB0aGlzIGRlbGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25h
bCBwcm9jZXNzaW5nIGNhbiBkbwotICAgIC8vIGFueXRoaW5nIGluY2x1ZGluZyBwb3NzaWJseSBy
ZWxlYXNpbmcgc2VsZjsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyAzMjY2MjE2Ci0gICAgW3NlbGYg
cmV0YWluXTsKLSAgICBbbG9hZGVyIGFkZERhdGE6ZGF0YV07Ci0gICAgW3N1cGVyIGRpZFJlY2Vp
dmVEYXRhOmRhdGEgbGVuZ3RoUmVjZWl2ZWQ6bGVuZ3RoUmVjZWl2ZWRdOwotICAgIFtzZWxmIHJl
bGVhc2VdOwotfQotCi0tICh2b2lkKWRpZEZpbmlzaExvYWRpbmcKLXsKLSAgICAvLyBDYWxsaW5n
IF9yZW1vdmVTdWJyZXNvdXJjZUNsaWVudCB3aWxsIGxpa2VseSByZXN1bHQgaW4gYSBjYWxsIHRv
IHJlbGVhc2UsIHNvIHdlIG11c3QgcmV0YWluLgotICAgIFtzZWxmIHJldGFpbl07Ci0gICAgCi0g
ICAgW2xvYWRlciBmaW5pc2hXaXRoRGF0YTpbc2VsZiByZXNvdXJjZURhdGFdXTsKLSAgICAKLSAg
ICBbZGF0YVNvdXJjZSBfcmVtb3ZlU3VicmVzb3VyY2VDbGllbnQ6c2VsZl07Ci0gICAgCi0gICAg
W1tkYXRhU291cmNlIF93ZWJWaWV3XSBfZmluaXNoZWRMb2FkaW5nUmVzb3VyY2VGcm9tRGF0YVNv
dXJjZTpkYXRhU291cmNlXTsKLQotICAgIFtzdXBlciBkaWRGaW5pc2hMb2FkaW5nXTsKLQotICAg
IFtzZWxmIHJlbGVhc2VdOyAgICAKLX0KLQotLSAodm9pZClkaWRGYWlsV2l0aEVycm9yOihOU0Vy
cm9yICopZXJyb3IKLXsKLSAgICAvLyBDYWxsaW5nIF9yZW1vdmVTdWJyZXNvdXJjZUNsaWVudCB3
aWxsIGxpa2VseSByZXN1bHQgaW4gYSBjYWxsIHRvIHJlbGVhc2UsIHNvIHdlIG11c3QgcmV0YWlu
LgotICAgIFtzZWxmIHJldGFpbl07Ci0gICAgCi0gICAgW2xvYWRlciByZXBvcnRFcnJvcl07Ci0g
ICAgW2RhdGFTb3VyY2UgX3JlbW92ZVN1YnJlc291cmNlQ2xpZW50OnNlbGZdOwotICAgIFtzZWxm
IHJlY2VpdmVkRXJyb3I6ZXJyb3JdOwotICAgIFtzdXBlciBkaWRGYWlsV2l0aEVycm9yOmVycm9y
XTsKLQotICAgIFtzZWxmIHJlbGVhc2VdOwotfQotCi0tICh2b2lkKWNhbmNlbAotewotICAgIC8v
IENhbGxpbmcgX3JlbW92ZVN1YnJlc291cmNlQ2xpZW50IHdpbGwgbGlrZWx5IHJlc3VsdCBpbiBh
IGNhbGwgdG8gcmVsZWFzZSwgc28gd2UgbXVzdCByZXRhaW4uCi0gICAgW3NlbGYgcmV0YWluXTsK
LSAgICAgICAgCi0gICAgW2xvYWRlciBjYW5jZWxdOwotICAgIFtkYXRhU291cmNlIF9yZW1vdmVT
dWJyZXNvdXJjZUNsaWVudDpzZWxmXTsKLSAgICBbc2VsZiByZWNlaXZlZEVycm9yOltzZWxmIGNh
bmNlbGxlZEVycm9yXV07Ci0gICAgW3N1cGVyIGNhbmNlbF07Ci0KLSAgICBbc2VsZiByZWxlYXNl
XTsKLX0KLQotQGVuZApJbmRleDogLi9XZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlN1YnJlc291
cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYktpdC9XZWJDb3Jl
U3VwcG9ydC5zdWJwcm9qL1dlYlN1YnJlc291cmNlTG9hZGVyLmgsdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuMTgKZGlmZiAtcCAtdSAtcCAtdSAtcjEuMTggLi9XZWJDb3JlU3VwcG9ydC5zdWJwcm9q
L1dlYlN1YnJlc291cmNlTG9hZGVyLmgKLS0tIC4vV2ViQ29yZVN1cHBvcnQuc3VicHJvai9XZWJT
dWJyZXNvdXJjZUxvYWRlci5oCTUgSnVuIDIwMDUgMTc6NTQ6NDAgLTAwMDAJMS4xOAorKysgLi9X
ZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlN1YnJlc291cmNlTG9hZGVyLmgJMzAgSnVuIDIwMDUg
MTQ6NTY6MjggLTAwMDAKQEAgLTI4LDI1ICsyOCwyNSBAQAogCiAjaW1wb3J0IDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaD4KIAotI2ltcG9ydCA8V2ViS2l0L1dlYkJhc2VSZXNvdXJjZUhhbmRsZURl
bGVnYXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViTG9hZGVyLmg+CiAKIEBjbGFzcyBXZWJEYXRh
U291cmNlOwogCiBAcHJvdG9jb2wgV2ViQ29yZVJlc291cmNlSGFuZGxlOwogQHByb3RvY29sIFdl
YkNvcmVSZXNvdXJjZUxvYWRlcjsKIAotQGludGVyZmFjZSBXZWJTdWJyZXNvdXJjZUNsaWVudCA6
IFdlYkJhc2VSZXNvdXJjZUhhbmRsZURlbGVnYXRlIDxXZWJDb3JlUmVzb3VyY2VIYW5kbGU+CitA
aW50ZXJmYWNlIFdlYlN1YnJlc291cmNlTG9hZGVyIDogV2ViTG9hZGVyIDxXZWJDb3JlUmVzb3Vy
Y2VIYW5kbGU+CiB7Ci0gICAgaWQgPFdlYkNvcmVSZXNvdXJjZUxvYWRlcj4gbG9hZGVyOworICAg
IGlkIDxXZWJDb3JlUmVzb3VyY2VMb2FkZXI+IGNvcmVMb2FkZXI7CiB9CiAKLSsgKFdlYlN1YnJl
c291cmNlQ2xpZW50ICopc3RhcnRMb2FkaW5nUmVzb3VyY2U6KGlkIDxXZWJDb3JlUmVzb3VyY2VM
b2FkZXI+KXJMb2FkZXIKKysgKFdlYlN1YnJlc291cmNlTG9hZGVyICopc3RhcnRMb2FkaW5nUmVz
b3VyY2U6KGlkIDxXZWJDb3JlUmVzb3VyY2VMb2FkZXI+KXJMb2FkZXIKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhVUkw6KE5TVVJMICopVVJMIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tSGVhZGVyczooTlNEaWN0aW9uYXJ5ICopY3Vz
dG9tSGVhZGVycwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcnJl
cjooTlNTdHJpbmcgKilyZWZlcnJlciAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZvckRhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilzb3VyY2U7CiAKLSsgKFdlYlN1YnJlc291
cmNlQ2xpZW50ICopc3RhcnRMb2FkaW5nUmVzb3VyY2U6KGlkIDxXZWJDb3JlUmVzb3VyY2VMb2Fk
ZXI+KXJMb2FkZXIKKysgKFdlYlN1YnJlc291cmNlTG9hZGVyICopc3RhcnRMb2FkaW5nUmVzb3Vy
Y2U6KGlkIDxXZWJDb3JlUmVzb3VyY2VMb2FkZXI+KXJMb2FkZXIKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdpdGhVUkw6KE5TVVJMICopVVJMIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3VzdG9tSGVhZGVyczooTlNEaWN0aW9uYXJ5ICopY3VzdG9t
SGVhZGVycwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0RGF0YToo
TlNBcnJheSAqKXBvc3REYXRhIApJbmRleDogLi9XZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlN1
YnJlc291cmNlTG9hZGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYktpdC9X
ZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlN1YnJlc291cmNlTG9hZGVyLm0sdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuMTExCmRpZmYgLXAgLXUgLXAgLXUgLXIxLjExMSAuL1dlYkNvcmVTdXBwb3J0
LnN1YnByb2ovV2ViU3VicmVzb3VyY2VMb2FkZXIubQotLS0gLi9XZWJDb3JlU3VwcG9ydC5zdWJw
cm9qL1dlYlN1YnJlc291cmNlTG9hZGVyLm0JNSBKdW4gMjAwNSAxNzo1NDo0MCAtMDAwMAkxLjEx
MQorKysgLi9XZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlN1YnJlc291cmNlTG9hZGVyLm0JMzAg
SnVuIDIwMDUgMTQ6NTY6MjggLTAwMDAKQEAgLTI2LDcgKzI2LDcgQEAKICAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotI2ltcG9ydCA8V2ViS2l0L1dlYlN1YnJlc291cmNlQ2xpZW50Lmg+CisjaW1wb3J0IDxX
ZWJLaXQvV2ViU3VicmVzb3VyY2VMb2FkZXIuaD4KIAogI2ltcG9ydCA8V2ViS2l0L1dlYkFzc2Vy
dGlvbnMuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJCcmlkZ2UuaD4KQEAgLTQxLDEzICs0MSwxMyBA
QAogCiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVSZXNvdXJjZUxvYWRlci5oPgogCi1AaW1wbGVt
ZW50YXRpb24gV2ViU3VicmVzb3VyY2VDbGllbnQKK0BpbXBsZW1lbnRhdGlvbiBXZWJTdWJyZXNv
dXJjZUxvYWRlcgogCiAtIGluaXRXaXRoTG9hZGVyOihpZCA8V2ViQ29yZVJlc291cmNlTG9hZGVy
PilsIGRhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilzCiB7CiAgICAgW3N1cGVyIGluaXRdOwog
ICAgIAotICAgIGxvYWRlciA9IFtsIHJldGFpbl07CisgICAgY29yZUxvYWRlciA9IFtsIHJldGFp
bl07CiAKICAgICBbc2VsZiBzZXREYXRhU291cmNlOiBzXTsKICAgICAKQEAgLTU2LDIwICs1Niwx
OSBAQAogCiAtICh2b2lkKWRlYWxsb2MKIHsKLSAgICBbbG9hZGVyIHJlbGVhc2VdOworICAgIFtj
b3JlTG9hZGVyIHJlbGVhc2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAotKyAoV2ViU3Vi
cmVzb3VyY2VDbGllbnQgKilzdGFydExvYWRpbmdSZXNvdXJjZTooaWQgPFdlYkNvcmVSZXNvdXJj
ZUxvYWRlcj4pckxvYWRlcgorKyAoV2ViU3VicmVzb3VyY2VMb2FkZXIgKilzdGFydExvYWRpbmdS
ZXNvdXJjZTooaWQgPFdlYkNvcmVSZXNvdXJjZUxvYWRlcj4pckxvYWRlcgogCQkJCSAgIHdpdGhS
ZXF1ZXN0OihOU011dGFibGVVUkxSZXF1ZXN0ICopbmV3UmVxdWVzdAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3VzdG9tSGVhZGVyczooTlNEaWN0aW9uYXJ5ICopY3VzdG9tSGVh
ZGVycwogCQkJCSAgICAgIHJlZmVycmVyOihOU1N0cmluZyAqKXJlZmVycmVyIAogCQkJCSBmb3JE
YXRhU291cmNlOihXZWJEYXRhU291cmNlICopc291cmNlCiB7Ci0gICAgV2ViU3VicmVzb3VyY2VD
bGllbnQgKmNsaWVudCA9IFtbW3NlbGYgYWxsb2NdIGluaXRXaXRoTG9hZGVyOnJMb2FkZXIgZGF0
YVNvdXJjZTpzb3VyY2VdIGF1dG9yZWxlYXNlXTsKKyAgICBXZWJTdWJyZXNvdXJjZUxvYWRlciAq
bG9hZGVyID0gW1tbc2VsZiBhbGxvY10gaW5pdFdpdGhMb2FkZXI6ckxvYWRlciBkYXRhU291cmNl
OnNvdXJjZV0gYXV0b3JlbGVhc2VdOwogICAgIAotICAgIFtzb3VyY2UgX2FkZFN1YnJlc291cmNl
Q2xpZW50OmNsaWVudF07Ci0KKyAgICBbc291cmNlIF9hZGRTdWJyZXNvdXJjZUxvYWRlcjpsb2Fk
ZXJdOwogCiAgICAgTlNFbnVtZXJhdG9yICplID0gW2N1c3RvbUhlYWRlcnMga2V5RW51bWVyYXRv
cl07CiAgICAgTlNTdHJpbmcgKmtleTsKQEAgLTkwLDI3ICs4OSwyNyBAQAogICAgIFtuZXdSZXF1
ZXN0IHNldE1haW5Eb2N1bWVudFVSTDpbW1tbX3dlYlZpZXcgbWFpbkZyYW1lXSBkYXRhU291cmNl
XSByZXF1ZXN0XSBVUkxdXTsKICAgICBbbmV3UmVxdWVzdCBfd2ViX3NldEhUVFBVc2VyQWdlbnQ6
W193ZWJWaWV3IHVzZXJBZ2VudEZvclVSTDpbbmV3UmVxdWVzdCBVUkxdXV07CiAgICAgICAgICAg
ICAKLSAgICBpZiAoIVtjbGllbnQgbG9hZFdpdGhSZXF1ZXN0Om5ld1JlcXVlc3RdKSB7Ci0gICAg
ICAgIGNsaWVudCA9IG5pbDsKKyAgICBpZiAoIVtsb2FkZXIgbG9hZFdpdGhSZXF1ZXN0Om5ld1Jl
cXVlc3RdKSB7CisgICAgICAgIGxvYWRlciA9IG5pbDsKICAgICB9CiAgICAgCi0gICAgcmV0dXJu
IGNsaWVudDsKKyAgICByZXR1cm4gbG9hZGVyOwogfQogCi0rIChXZWJTdWJyZXNvdXJjZUNsaWVu
dCAqKXN0YXJ0TG9hZGluZ1Jlc291cmNlOihpZCA8V2ViQ29yZVJlc291cmNlTG9hZGVyPilyTG9h
ZGVyCisrIChXZWJTdWJyZXNvdXJjZUxvYWRlciAqKXN0YXJ0TG9hZGluZ1Jlc291cmNlOihpZCA8
V2ViQ29yZVJlc291cmNlTG9hZGVyPilyTG9hZGVyCiAJCQkJICAgICAgIHdpdGhVUkw6KE5TVVJM
ICopVVJMCiAJCQkJIGN1c3RvbUhlYWRlcnM6KE5TRGljdGlvbmFyeSAqKWN1c3RvbUhlYWRlcnMK
IAkJCQkgICAgICByZWZlcnJlcjooTlNTdHJpbmcgKilyZWZlcnJlcgogCQkJCSBmb3JEYXRhU291
cmNlOihXZWJEYXRhU291cmNlICopc291cmNlCiB7CiAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAq
bmV3UmVxdWVzdCA9IFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6VVJM
XTsKLSAgICBXZWJTdWJyZXNvdXJjZUNsaWVudCAqY2xpZW50ID0gW3NlbGYgc3RhcnRMb2FkaW5n
UmVzb3VyY2U6ckxvYWRlciB3aXRoUmVxdWVzdDpuZXdSZXF1ZXN0IGN1c3RvbUhlYWRlcnM6Y3Vz
dG9tSGVhZGVycyByZWZlcnJlcjpyZWZlcnJlciBmb3JEYXRhU291cmNlOnNvdXJjZV07CisgICAg
V2ViU3VicmVzb3VyY2VMb2FkZXIgKmxvYWRlciA9IFtzZWxmIHN0YXJ0TG9hZGluZ1Jlc291cmNl
OnJMb2FkZXIgd2l0aFJlcXVlc3Q6bmV3UmVxdWVzdCBjdXN0b21IZWFkZXJzOmN1c3RvbUhlYWRl
cnMgcmVmZXJyZXI6cmVmZXJyZXIgZm9yRGF0YVNvdXJjZTpzb3VyY2VdOwogICAgIFtuZXdSZXF1
ZXN0IHJlbGVhc2VdOwogCi0gICAgcmV0dXJuIGNsaWVudDsKKyAgICByZXR1cm4gbG9hZGVyOwog
fQogCi0rIChXZWJTdWJyZXNvdXJjZUNsaWVudCAqKXN0YXJ0TG9hZGluZ1Jlc291cmNlOihpZCA8
V2ViQ29yZVJlc291cmNlTG9hZGVyPilyTG9hZGVyCisrIChXZWJTdWJyZXNvdXJjZUxvYWRlciAq
KXN0YXJ0TG9hZGluZ1Jlc291cmNlOihpZCA8V2ViQ29yZVJlc291cmNlTG9hZGVyPilyTG9hZGVy
CiAJCQkJICAgICAgIHdpdGhVUkw6KE5TVVJMICopVVJMCiAJCQkJIGN1c3RvbUhlYWRlcnM6KE5T
RGljdGlvbmFyeSAqKWN1c3RvbUhlYWRlcnMKIAkJCQkgICAgICBwb3N0RGF0YTooTlNBcnJheSAq
KXBvc3REYXRhCkBAIC0xMjIsMTAgKzEyMSwxMCBAQAogICAgIFtuZXdSZXF1ZXN0IHNldEhUVFBN
ZXRob2Q6QCJQT1NUIl07CiAgICAgd2ViU2V0SFRUUEJvZHkobmV3UmVxdWVzdCwgcG9zdERhdGEp
OwogCi0gICAgV2ViU3VicmVzb3VyY2VDbGllbnQgKmNsaWVudCA9IFtzZWxmIHN0YXJ0TG9hZGlu
Z1Jlc291cmNlOnJMb2FkZXIgd2l0aFJlcXVlc3Q6bmV3UmVxdWVzdCBjdXN0b21IZWFkZXJzOmN1
c3RvbUhlYWRlcnMgcmVmZXJyZXI6cmVmZXJyZXIgZm9yRGF0YVNvdXJjZTpzb3VyY2VdOworICAg
IFdlYlN1YnJlc291cmNlTG9hZGVyICpsb2FkZXIgPSBbc2VsZiBzdGFydExvYWRpbmdSZXNvdXJj
ZTpyTG9hZGVyIHdpdGhSZXF1ZXN0Om5ld1JlcXVlc3QgY3VzdG9tSGVhZGVyczpjdXN0b21IZWFk
ZXJzIHJlZmVycmVyOnJlZmVycmVyIGZvckRhdGFTb3VyY2U6c291cmNlXTsKICAgICBbbmV3UmVx
dWVzdCByZWxlYXNlXTsKIAotICAgIHJldHVybiBjbGllbnQ7CisgICAgcmV0dXJuIGxvYWRlcjsK
IAogfQogCkBAIC0xNDAsNyArMTM5LDcgQEAKICAgICBOU1VSTFJlcXVlc3QgKmNsaWVudFJlcXVl
c3QgPSBbc3VwZXIgd2lsbFNlbmRSZXF1ZXN0Om5ld1JlcXVlc3QgcmVkaXJlY3RSZXNwb25zZTpy
ZWRpcmVjdFJlc3BvbnNlXTsKICAgICAKICAgICBpZiAoY2xpZW50UmVxdWVzdCAhPSBuaWwgJiYg
IVtvbGRVUkwgaXNFcXVhbDpbY2xpZW50UmVxdWVzdCBVUkxdXSkgewotCVtsb2FkZXIgcmVkaXJl
Y3RlZFRvVVJMOltjbGllbnRSZXF1ZXN0IFVSTF1dOworCVtjb3JlTG9hZGVyIHJlZGlyZWN0ZWRU
b1VSTDpbY2xpZW50UmVxdWVzdCBVUkxdXTsKICAgICB9CiAKICAgICByZXR1cm4gY2xpZW50UmVx
dWVzdDsKQEAgLTE1NSw3ICsxNTQsNyBAQAogICAgIC8vIGVzc2VudGlhbGx5IGFuIGluZmluaXRl
IGxvYWQgYW5kIHRoZXJlZm9yZSBhIG1lbW9yeSBsZWFrLiBCb3RoIHRoaXMgY29kZSBhbmQgY29k
ZSBpbiAKICAgICAvLyBXZWJNYWluUmVjb3VyZUNsaWVudCBtdXN0IGJlIHJlbW92ZWQgb25jZSBt
dWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIGlzIGZ1bGx5IGltcGxlbWVudGVkLiAKICAgICBpZiAo
W1tyIE1JTUVUeXBlXSBpc0VxdWFsVG9TdHJpbmc6QCJtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNl
Il0pIHsKLSAgICAgICAgW2RhdGFTb3VyY2UgX3JlbW92ZVN1YnJlc291cmNlQ2xpZW50OnNlbGZd
OworICAgICAgICBbZGF0YVNvdXJjZSBfcmVtb3ZlU3VicmVzb3VyY2VMb2FkZXI6c2VsZl07CiAg
ICAgICAgIFtbW2RhdGFTb3VyY2UgX3dlYlZpZXddIG1haW5GcmFtZV0gX2NoZWNrTG9hZENvbXBs
ZXRlXTsKICAgICAgICAgW3NlbGYgY2FuY2VsV2l0aEVycm9yOltOU0Vycm9yIF93ZWJLaXRFcnJv
cldpdGhEb21haW46TlNVUkxFcnJvckRvbWFpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTpOU1VSTEVycm9yVW5zdXBwb3J0ZWRV
UkwKQEAgLTE2Niw3ICsxNjUsNyBAQAogICAgIC8vIHJldGFpbi9yZWxlYXNlIHNlbGYgaW4gdGhp
cyBkZWxlZ2F0ZSBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8K
ICAgICAvLyBhbnl0aGluZyBpbmNsdWRpbmcgcG9zc2libHkgcmVsZWFzaW5nIHNlbGY7IG9uZSBl
eGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIxNgogICAgIFtzZWxmIHJldGFpbl07Ci0gICAgW2xvYWRl
ciByZWNlaXZlZFJlc3BvbnNlOnJdOworICAgIFtjb3JlTG9hZGVyIHJlY2VpdmVkUmVzcG9uc2U6
cl07CiAgICAgW3N1cGVyIGRpZFJlY2VpdmVSZXNwb25zZTpyXTsKICAgICBbc2VsZiByZWxlYXNl
XTsKIH0KQEAgLTE3NiwxOSArMTc1LDE5IEBACiAgICAgLy8gcmV0YWluL3JlbGVhc2Ugc2VsZiBp
biB0aGlzIGRlbGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNh
biBkbwogICAgIC8vIGFueXRoaW5nIGluY2x1ZGluZyBwb3NzaWJseSByZWxlYXNpbmcgc2VsZjsg
b25lIGV4YW1wbGUgb2YgdGhpcyBpcyAzMjY2MjE2CiAgICAgW3NlbGYgcmV0YWluXTsKLSAgICBb
bG9hZGVyIGFkZERhdGE6ZGF0YV07CisgICAgW2NvcmVMb2FkZXIgYWRkRGF0YTpkYXRhXTsKICAg
ICBbc3VwZXIgZGlkUmVjZWl2ZURhdGE6ZGF0YSBsZW5ndGhSZWNlaXZlZDpsZW5ndGhSZWNlaXZl
ZF07CiAgICAgW3NlbGYgcmVsZWFzZV07CiB9CiAKIC0gKHZvaWQpZGlkRmluaXNoTG9hZGluZwog
ewotICAgIC8vIENhbGxpbmcgX3JlbW92ZVN1YnJlc291cmNlQ2xpZW50IHdpbGwgbGlrZWx5IHJl
c3VsdCBpbiBhIGNhbGwgdG8gcmVsZWFzZSwgc28gd2UgbXVzdCByZXRhaW4uCisgICAgLy8gQ2Fs
bGluZyBfcmVtb3ZlU3VicmVzb3VyY2VMb2FkZXIgd2lsbCBsaWtlbHkgcmVzdWx0IGluIGEgY2Fs
bCB0byByZWxlYXNlLCBzbyB3ZSBtdXN0IHJldGFpbi4KICAgICBbc2VsZiByZXRhaW5dOwogICAg
IAotICAgIFtsb2FkZXIgZmluaXNoV2l0aERhdGE6W3NlbGYgcmVzb3VyY2VEYXRhXV07CisgICAg
W2NvcmVMb2FkZXIgZmluaXNoV2l0aERhdGE6W3NlbGYgcmVzb3VyY2VEYXRhXV07CiAgICAgCi0g
ICAgW2RhdGFTb3VyY2UgX3JlbW92ZVN1YnJlc291cmNlQ2xpZW50OnNlbGZdOworICAgIFtkYXRh
U291cmNlIF9yZW1vdmVTdWJyZXNvdXJjZUxvYWRlcjpzZWxmXTsKICAgICAKICAgICBbW2RhdGFT
b3VyY2UgX3dlYlZpZXddIF9maW5pc2hlZExvYWRpbmdSZXNvdXJjZUZyb21EYXRhU291cmNlOmRh
dGFTb3VyY2VdOwogCkBAIC0xOTksMTEgKzE5OCwxMSBAQAogCiAtICh2b2lkKWRpZEZhaWxXaXRo
RXJyb3I6KE5TRXJyb3IgKillcnJvcgogewotICAgIC8vIENhbGxpbmcgX3JlbW92ZVN1YnJlc291
cmNlQ2xpZW50IHdpbGwgbGlrZWx5IHJlc3VsdCBpbiBhIGNhbGwgdG8gcmVsZWFzZSwgc28gd2Ug
bXVzdCByZXRhaW4uCisgICAgLy8gQ2FsbGluZyBfcmVtb3ZlU3VicmVzb3VyY2VMb2FkZXIgd2ls
bCBsaWtlbHkgcmVzdWx0IGluIGEgY2FsbCB0byByZWxlYXNlLCBzbyB3ZSBtdXN0IHJldGFpbi4K
ICAgICBbc2VsZiByZXRhaW5dOwogICAgIAotICAgIFtsb2FkZXIgcmVwb3J0RXJyb3JdOwotICAg
IFtkYXRhU291cmNlIF9yZW1vdmVTdWJyZXNvdXJjZUNsaWVudDpzZWxmXTsKKyAgICBbY29yZUxv
YWRlciByZXBvcnRFcnJvcl07CisgICAgW2RhdGFTb3VyY2UgX3JlbW92ZVN1YnJlc291cmNlTG9h
ZGVyOnNlbGZdOwogICAgIFtzZWxmIHJlY2VpdmVkRXJyb3I6ZXJyb3JdOwogICAgIFtzdXBlciBk
aWRGYWlsV2l0aEVycm9yOmVycm9yXTsKIApAQCAtMjEyLDExICsyMTEsMTEgQEAKIAogLSAodm9p
ZCljYW5jZWwKIHsKLSAgICAvLyBDYWxsaW5nIF9yZW1vdmVTdWJyZXNvdXJjZUNsaWVudCB3aWxs
IGxpa2VseSByZXN1bHQgaW4gYSBjYWxsIHRvIHJlbGVhc2UsIHNvIHdlIG11c3QgcmV0YWluLgor
ICAgIC8vIENhbGxpbmcgX3JlbW92ZVN1YnJlc291cmNlTG9hZGVyIHdpbGwgbGlrZWx5IHJlc3Vs
dCBpbiBhIGNhbGwgdG8gcmVsZWFzZSwgc28gd2UgbXVzdCByZXRhaW4uCiAgICAgW3NlbGYgcmV0
YWluXTsKICAgICAgICAgCi0gICAgW2xvYWRlciBjYW5jZWxdOwotICAgIFtkYXRhU291cmNlIF9y
ZW1vdmVTdWJyZXNvdXJjZUNsaWVudDpzZWxmXTsKKyAgICBbY29yZUxvYWRlciBjYW5jZWxdOwor
ICAgIFtkYXRhU291cmNlIF9yZW1vdmVTdWJyZXNvdXJjZUxvYWRlcjpzZWxmXTsKICAgICBbc2Vs
ZiByZWNlaXZlZEVycm9yOltzZWxmIGNhbmNlbGxlZEVycm9yXV07CiAgICAgW3N1cGVyIGNhbmNl
bF07CiAKSW5kZXg6IC4vV2ViS2l0LnBicHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2cy9yb290L1dlYktpdC9XZWJLaXQucGJwcm9qL3Byb2plY3QucGJ4cHJvaix2
CnJldHJpZXZpbmcgcmV2aXNpb24gMS43MjQKZGlmZiAtcCAtdSAtcCAtdSAtcjEuNzI0IC4vV2Vi
S2l0LnBicHJvai9wcm9qZWN0LnBieHByb2oKLS0tIC4vV2ViS2l0LnBicHJvai9wcm9qZWN0LnBi
eHByb2oJMTQgSnVuIDIwMDUgMTY6MTk6MTYgLTAwMDAJMS43MjQKKysrIC4vV2ViS2l0LnBicHJv
ai9wcm9qZWN0LnBieHByb2oJMzAgSnVuIDIwMDUgMTQ6NTY6MzMgLTAwMDAKQEAgLTUzOCwxMCAr
NTM4LDkgQEAKIAkJCWZpbGVFbmNvZGluZyA9IDMwOwogCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsKIAkJCWxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7Ci0JCQluYW1lID0gV2Vi
UmVzb3VyY2VMb2FkRGVsZWdhdGUuaDsKLQkJCXBhdGggPSBXZWJWaWV3LnN1YnByb2ovV2ViUmVz
b3VyY2VMb2FkRGVsZWdhdGUuaDsKLQkJCXJlZlR5cGUgPSAyOwotCQkJc291cmNlVHJlZSA9IFNP
VVJDRV9ST09UOworCQkJcGF0aCA9IFdlYlJlc291cmNlTG9hZERlbGVnYXRlLmg7CisJCQlyZWZU
eXBlID0gNDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CiAJCTUxNDQzRjlBMDQy
OTM5MkIwMENBMkQzQSA9IHsKIAkJCWZpbGVFbmNvZGluZyA9IDMwOwpAQCAtNjAzLDQ2ICs2MDIs
NDEgQEAKIAkJCWZpbGVFbmNvZGluZyA9IDQ7CiAJCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwog
CQkJbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsKLQkJCW5hbWUgPSBXZWJEZWZh
dWx0Q29udGV4dE1lbnVEZWxlZ2F0ZS5oOwotCQkJcGF0aCA9IFdlYlZpZXcuc3VicHJvai9XZWJE
ZWZhdWx0Q29udGV4dE1lbnVEZWxlZ2F0ZS5oOwotCQkJcmVmVHlwZSA9IDI7Ci0JCQlzb3VyY2VU
cmVlID0gU09VUkNFX1JPT1Q7CisJCQlwYXRoID0gV2ViRGVmYXVsdENvbnRleHRNZW51RGVsZWdh
dGUuaDsKKwkJCXJlZlR5cGUgPSA0OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsK
IAkJNTE1MkZBREUwMzNGQzUwNDAwQ0EyQUNEID0gewogCQkJZmlsZUVuY29kaW5nID0gNDsKIAkJ
CWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7CiAJCQlsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5vYmpjOwotCQkJbmFtZSA9IFdlYkRlZmF1bHRDb250ZXh0TWVudURlbGVnYXRlLm07Ci0J
CQlwYXRoID0gV2ViVmlldy5zdWJwcm9qL1dlYkRlZmF1bHRDb250ZXh0TWVudURlbGVnYXRlLm07
Ci0JCQlyZWZUeXBlID0gMjsKLQkJCXNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsKKwkJCXBhdGgg
PSBXZWJEZWZhdWx0Q29udGV4dE1lbnVEZWxlZ2F0ZS5tOworCQkJcmVmVHlwZSA9IDQ7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwogCQk1MTUyRkFERjAzM0ZDNTA0MDBDQTJBQ0Qg
PSB7CiAJCQlmaWxlRW5jb2RpbmcgPSA0OwogCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKIAkJ
CWxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7Ci0JCQluYW1lID0gV2ViRGVmYXVs
dFBvbGljeURlbGVnYXRlLmg7Ci0JCQlwYXRoID0gV2ViVmlldy5zdWJwcm9qL1dlYkRlZmF1bHRQ
b2xpY3lEZWxlZ2F0ZS5oOwotCQkJcmVmVHlwZSA9IDI7Ci0JCQlzb3VyY2VUcmVlID0gU09VUkNF
X1JPT1Q7CisJCQlwYXRoID0gV2ViRGVmYXVsdFBvbGljeURlbGVnYXRlLmg7CisJCQlyZWZUeXBl
ID0gNDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CiAJCTUxNTJGQUUwMDMzRkM1
MDQwMENBMkFDRCA9IHsKIAkJCWZpbGVFbmNvZGluZyA9IDQ7CiAJCQlpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOwogCQkJbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsKLQkJCW5h
bWUgPSBXZWJEZWZhdWx0UG9saWN5RGVsZWdhdGUubTsKLQkJCXBhdGggPSBXZWJWaWV3LnN1YnBy
b2ovV2ViRGVmYXVsdFBvbGljeURlbGVnYXRlLm07Ci0JCQlyZWZUeXBlID0gMjsKLQkJCXNvdXJj
ZVRyZWUgPSBTT1VSQ0VfUk9PVDsKKwkJCXBhdGggPSBXZWJEZWZhdWx0UG9saWN5RGVsZWdhdGUu
bTsKKwkJCXJlZlR5cGUgPSA0OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKIAkJ
NTE1MkZBRTUwMzNGQzUyMjAwQ0EyQUNEID0gewogCQkJZmlsZUVuY29kaW5nID0gNDsKIAkJCWlz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7CiAJCQlsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOwotCQkJbmFtZSA9IFdlYkZyYW1lTG9hZERlbGVnYXRlLmg7Ci0JCQlwYXRoID0gV2ViVmll
dy5zdWJwcm9qL1dlYkZyYW1lTG9hZERlbGVnYXRlLmg7Ci0JCQlyZWZUeXBlID0gMjsKLQkJCXNv
dXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsKKwkJCXBhdGggPSBXZWJGcmFtZUxvYWREZWxlZ2F0ZS5o
OworCQkJcmVmVHlwZSA9IDQ7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwogCQk1
MTVFMjdDQzA0NThDODY1MDBDQTJEM0EgPSB7CiAJCQlmaWxlRW5jb2RpbmcgPSAzMDsKQEAgLTgw
NCw4ICs3OTgsOCBAQAogCQkJZmlsZUVuY29kaW5nID0gMzA7CiAJCQlpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOwogCQkJbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsKLQkJCW5hbWUg
PSBXZWJCYXNlUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oOwotCQkJcGF0aCA9IFdlYlZpZXcuc3Vi
cHJvai9XZWJCYXNlUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oOworCQkJbmFtZSA9IFdlYkxvYWRl
ci5oOworCQkJcGF0aCA9IFdlYlZpZXcuc3VicHJvai9XZWJMb2FkZXIuaDsKIAkJCXJlZlR5cGUg
PSAyOwogCQkJc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOwogCQl9OwpAQCAtODEzLDggKzgwNyw4
IEBACiAJCQlmaWxlRW5jb2RpbmcgPSAzMDsKIAkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7CiAJ
CQlsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOwotCQkJbmFtZSA9IFdlYkJh
c2VSZXNvdXJjZUhhbmRsZURlbGVnYXRlLm07Ci0JCQlwYXRoID0gV2ViVmlldy5zdWJwcm9qL1dl
YkJhc2VSZXNvdXJjZUhhbmRsZURlbGVnYXRlLm07CisJCQluYW1lID0gV2ViTG9hZGVyLm07CisJ
CQlwYXRoID0gV2ViVmlldy5zdWJwcm9qL1dlYkxvYWRlci5tOwogCQkJcmVmVHlwZSA9IDI7CiAJ
CQlzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7CiAJCX07CkBAIC0xMTE1LDE5ICsxMTA5LDE3IEBA
CiAJCQlmaWxlRW5jb2RpbmcgPSAzMDsKIAkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7CiAJCQls
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOwotCQkJbmFtZSA9IFdlYkRhdGFQcm90
b2NvbC5oOwotCQkJcGF0aCA9IFdlYlZpZXcuc3VicHJvai9XZWJEYXRhUHJvdG9jb2wuaDsKLQkJ
CXJlZlR5cGUgPSAyOwotCQkJc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOworCQkJcGF0aCA9IFdl
YkRhdGFQcm90b2NvbC5oOworCQkJcmVmVHlwZSA9IDQ7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwogCQl9OwogCQk3MEVDRDZDRDA0M0I3Mjc0MDBBODAxODEgPSB7CiAJCQlmaWxlRW5jb2Rp
bmcgPSAzMDsKIAkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7CiAJCQlsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5vYmpjOwotCQkJbmFtZSA9IFdlYkRhdGFQcm90b2NvbC5tOwotCQkJ
cGF0aCA9IFdlYlZpZXcuc3VicHJvai9XZWJEYXRhUHJvdG9jb2wubTsKLQkJCXJlZlR5cGUgPSAy
OwotCQkJc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOworCQkJcGF0aCA9IFdlYkRhdGFQcm90b2Nv
bC5tOworCQkJcmVmVHlwZSA9IDQ7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9Owog
Ly83MDAKIC8vNzAxCkBAIC0xMjk1LDEwICsxMjg3LDkgQEAKIAkJCWZpbGVFbmNvZGluZyA9IDQ7
CiAJCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwogCQkJbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsKLQkJCW5hbWUgPSBXZWJQbHVnaW5WaWV3RmFjdG9yeVByaXZhdGUuaDsKLQkJ
CXBhdGggPSBQbHVnaW5zLnN1YnByb2ovV2ViUGx1Z2luVmlld0ZhY3RvcnlQcml2YXRlLmg7Ci0J
CQlyZWZUeXBlID0gMjsKLQkJCXNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsKKwkJCXBhdGggPSBX
ZWJQbHVnaW5WaWV3RmFjdG9yeVByaXZhdGUuaDsKKwkJCXJlZlR5cGUgPSA0OworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKIC8vODMwCiAvLzgzMQpAQCAtMTMzOCw4ICsxMzI5LDcg
QEAKIAkJCWZpbGVFbmNvZGluZyA9IDQ7CiAJCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwogCQkJ
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsKLQkJCW5hbWUgPSBXZWJET01PcGVy
YXRpb25zLmg7Ci0JCQlwYXRoID0gRE9NLnN1YnByb2ovV2ViRE9NT3BlcmF0aW9ucy5oOworCQkJ
cGF0aCA9IFdlYkRPTU9wZXJhdGlvbnMuaDsKIAkJCXJlZlR5cGUgPSA0OwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKIAkJfTsKQEAgLTEzNDcsOCArMTMzNyw3IEBACiAJCQlmaWxlRW5jb2Rp
bmcgPSA0OwogCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKIAkJCWxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLm9iamM7Ci0JCQluYW1lID0gV2ViRE9NT3BlcmF0aW9ucy5tOwotCQkJ
cGF0aCA9IERPTS5zdWJwcm9qL1dlYkRPTU9wZXJhdGlvbnMubTsKKwkJCXBhdGggPSBXZWJET01P
cGVyYXRpb25zLm07CiAJCQlyZWZUeXBlID0gNDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CiAJCX07CkBAIC0xNDc3LDggKzE0NjYsNyBAQAogCQkJZmlsZUVuY29kaW5nID0gNDsKIAkJCWlz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7CiAJCQlsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOwotCQkJbmFtZSA9IFdlYkRPTU9wZXJhdGlvbnNQcml2YXRlLmg7Ci0JCQlwYXRoID0gRE9N
LnN1YnByb2ovV2ViRE9NT3BlcmF0aW9uc1ByaXZhdGUuaDsKKwkJCXBhdGggPSBXZWJET01PcGVy
YXRpb25zUHJpdmF0ZS5oOwogCQkJcmVmVHlwZSA9IDQ7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwogCQl9OwpAQCAtMTgxMSw3ICsxNzk5LDcgQEAKIAkJCQlEWUxJQl9DT01QQVRJQklMSVRZ
X1ZFUlNJT04gPSAxOwogCQkJCURZTElCX0NVUlJFTlRfVkVSU0lPTiA9IDE7CiAJCQkJRVhQT1JU
RURfU1lNQk9MU19GSUxFID0gV2ViS2l0LmV4cDsKLQkJCQlGUkFNRVdPUktfU0VBUkNIX1BBVEhT
ID0gIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1dlYktpdC5mcmFtZXdvcmsvRnJhbWV3b3Jr
cyAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29y
ay9GcmFtZXdvcmtzICQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFt
ZXdvcmsvRnJhbWV3b3JrcyAvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MgJyQoREVS
SVZFRF9GSUxFX0RJUiknIjsKKwkJCQlGUkFNRVdPUktfU0VBUkNIX1BBVEhTID0gIi9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL1dlYktpdC5mcmFtZXdvcmsvRnJhbWV3b3JrcyAvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtz
ICQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvRnJhbWV3
b3JrcyAvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MiOwogCQkJCUdDQ19FTkFCTEVf
T0JKQ19HQyA9IFlFUzsKIAkJCQlHQ0NfRkFTVF9PQkpDX0RJU1BBVENIID0gWUVTOwogCQkJCUdD
Q19PUFRJTUlaQVRJT05fTEVWRUwgPSBzOwpAQCAtNDgzMiw2ICs0ODIwLDcgQEAKIAkJCSk7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCW5hbWUgPSBET007CisJCQlwYXRoID0gRE9NLnN1YnByb2o7
CiAJCQlyZWZUeXBlID0gNDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CkBAIC00
ODM5LDQ2ICs0ODI4LDQzIEBACiAJCQlmaWxlRW5jb2RpbmcgPSA0OwogCQkJaXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsKIAkJCWxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7Ci0JCQlu
YW1lID0gV2ViRE9NRG9jdW1lbnQuaDsKLQkJCXBhdGggPSBET00uc3VicHJvai9XZWJET01Eb2N1
bWVudC5oOwotCQkJcmVmVHlwZSA9IDI7Ci0JCQlzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7CisJ
CQlwYXRoID0gV2ViRE9NRG9jdW1lbnQuaDsKKwkJCXJlZlR5cGUgPSA0OworCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKIAkJfTsKIAkJRjU3RDE5NEQwMzRFNzM0OTAxQTgwMTgwID0gewogCQkJ
ZmlsZUVuY29kaW5nID0gNDsKIAkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7CiAJCQlsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOwotCQkJbmFtZSA9IFdlYkRPTUVsZW1lbnQuaDsK
LQkJCXBhdGggPSBET00uc3VicHJvai9XZWJET01FbGVtZW50Lmg7Ci0JCQlyZWZUeXBlID0gMjsK
LQkJCXNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsKKwkJCXBhdGggPSBXZWJET01FbGVtZW50Lmg7
CisJCQlyZWZUeXBlID0gNDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CiAJCUY1
N0QxOTUxMDM0RTczNDkwMUE4MDE4MCA9IHsKIAkJCWZpbGVFbmNvZGluZyA9IDQ7CiAJCQlpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOwogCQkJbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsKLQkJCW5hbWUgPSBXZWJET01Ob2RlLmg7Ci0JCQlwYXRoID0gRE9NLnN1YnByb2ovV2ViRE9N
Tm9kZS5oOwotCQkJcmVmVHlwZSA9IDI7Ci0JCQlzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7CisJ
CQlwYXRoID0gV2ViRE9NTm9kZS5oOworCQkJcmVmVHlwZSA9IDQ7CisJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwogCQl9OwogCQlGNTdGQjhDNDAzNEUxODAxMDFBODAxODAgPSB7CiAJCQlmaWxl
RW5jb2RpbmcgPSA0OwogCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKIAkJCWxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7CiAJCQluYW1lID0gV2ViRGVidWdET01Ob2RlLmg7Ci0J
CQlwYXRoID0gV2ViVmlldy5zdWJwcm9qL1dlYkRlYnVnRE9NTm9kZS5oOwotCQkJcmVmVHlwZSA9
IDI7Ci0JCQlzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7CisJCQlwYXRoID0gLi4vV2ViVmlldy5z
dWJwcm9qL1dlYkRlYnVnRE9NTm9kZS5oOworCQkJcmVmVHlwZSA9IDQ7CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwogCQl9OwogCQlGNTdGQjhDNTAzNEUxODAxMDFBODAxODAgPSB7CiAJCQlm
aWxlRW5jb2RpbmcgPSA0OwogCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKIAkJCWxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7CiAJCQluYW1lID0gV2ViRGVidWdET01Ob2Rl
Lm07Ci0JCQlwYXRoID0gV2ViVmlldy5zdWJwcm9qL1dlYkRlYnVnRE9NTm9kZS5tOwotCQkJcmVm
VHlwZSA9IDI7Ci0JCQlzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7CisJCQlwYXRoID0gLi4vV2Vi
Vmlldy5zdWJwcm9qL1dlYkRlYnVnRE9NTm9kZS5tOworCQkJcmVmVHlwZSA9IDQ7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwogCQl9OwogCQlGNTg4M0JERTAyNUU1QzZBMDEwMDAxMDIgPSB7
CiAJCQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwpAQCAtNTA3NiwxMCArNTA2Miw5IEBACiAJCQlm
aWxlRW5jb2RpbmcgPSA0OwogCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKIAkJCWxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7Ci0JCQluYW1lID0gV2ViVGV4dFJlbmRlcmVy
Lm07Ci0JCQlwYXRoID0gV2ViQ29yZVN1cHBvcnQuc3VicHJvai9XZWJUZXh0UmVuZGVyZXIubTsK
LQkJCXJlZlR5cGUgPSAyOwotCQkJc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOworCQkJcGF0aCA9
IFdlYlRleHRSZW5kZXJlci5tOworCQkJcmVmVHlwZSA9IDQ7CisJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwogCQl9OwogCQlGNUIzNkI0NTAyODFERjlDMDE4NjM1Q0IgPSB7CiAJCQlmaWxlRW5j
b2RpbmcgPSA0OwpAQCAtNTE1MCw3ICs1MTM1LDcgQEAKIAkJCWZpbGVFbmNvZGluZyA9IDQ7CiAJ
CQlpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOwogCQkJbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsKLQkJCXBhdGggPSBXZWJNYWluUmVzb3VyY2VDbGllbnQuaDsKKwkJCXBhdGggPSBX
ZWJNYWluUmVzb3VyY2VMb2FkZXIuaDsKIAkJCXJlZlR5cGUgPSA0OwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKIAkJfTsKQEAgLTUxNTgsNyArNTE0Myw3IEBACiAJCQlmaWxlRW5jb2Rpbmcg
PSA0OwogCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKIAkJCWxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLm9iamM7Ci0JCQlwYXRoID0gV2ViTWFpblJlc291cmNlQ2xpZW50Lm07CisJ
CQlwYXRoID0gV2ViTWFpblJlc291cmNlTG9hZGVyLm07CiAJCQlyZWZUeXBlID0gNDsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CkBAIC01MTgyLDcgKzUxNjcsNyBAQAogCQkJZmls
ZUVuY29kaW5nID0gNDsKIAkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7CiAJCQlsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOwotCQkJcGF0aCA9IFdlYlN1YnJlc291cmNlQ2xpZW50
Lmg7CisJCQlwYXRoID0gV2ViU3VicmVzb3VyY2VMb2FkZXIuaDsKIAkJCXJlZlR5cGUgPSA0Owog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKQEAgLTUxOTAsNyArNTE3NSw3IEBACiAJ
CQlmaWxlRW5jb2RpbmcgPSA0OwogCQkJaXNhID0gUEJYRmlsZVJlZmVyZW5jZTsKIAkJCWxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7Ci0JCQlwYXRoID0gV2ViU3VicmVzb3Vy
Y2VDbGllbnQubTsKKwkJCXBhdGggPSBXZWJTdWJyZXNvdXJjZUxvYWRlci5tOwogCQkJcmVmVHlw
ZSA9IDQ7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwpAQCAtNTE5OCwxOSArNTE4
MywxNyBAQAogCQkJZmlsZUVuY29kaW5nID0gNDsKIAkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
CiAJCQlsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOwotCQkJbmFtZSA9IFdlYkds
eXBoQnVmZmVyLmg7Ci0JCQlwYXRoID0gV2ViQ29yZVN1cHBvcnQuc3VicHJvai9XZWJHbHlwaEJ1
ZmZlci5oOwotCQkJcmVmVHlwZSA9IDI7Ci0JCQlzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7CisJ
CQlwYXRoID0gV2ViR2x5cGhCdWZmZXIuaDsKKwkJCXJlZlR5cGUgPSA0OworCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKIAkJfTsKIAkJRjVFN0IyNDYwMzAyNUNFODAxQTgwMTgwID0gewogCQkJ
ZmlsZUVuY29kaW5nID0gNDsKIAkJCWlzYSA9IFBCWEZpbGVSZWZlcmVuY2U7CiAJCQlsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOwotCQkJbmFtZSA9IFdlYkdseXBoQnVmZmVy
Lm07Ci0JCQlwYXRoID0gV2ViQ29yZVN1cHBvcnQuc3VicHJvai9XZWJHbHlwaEJ1ZmZlci5tOwot
CQkJcmVmVHlwZSA9IDI7Ci0JCQlzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7CisJCQlwYXRoID0g
V2ViR2x5cGhCdWZmZXIubTsKKwkJCXJlZlR5cGUgPSA0OworCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKIAkJfTsKIAkJRjVFQkM0NTIwMjEzNEJCNjAxQ0ExNTIwID0gewogCQkJY2hpbGRyZW4g
PSAoCkluZGV4OiAuL1dlYlZpZXcuc3VicHJvai9XZWJCYXNlUmVzb3VyY2VIYW5kbGVEZWxlZ2F0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KUkNTIGZpbGU6IFdlYkJhc2VSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmgK
ZGlmZiAtTiAuL1dlYlZpZXcuc3VicHJvai9XZWJCYXNlUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5o
Ci0tLSAuL1dlYlZpZXcuc3VicHJvai9XZWJCYXNlUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oCTUg
SnVuIDIwMDUgMTc6NTQ6NDUgLTAwMDAJMS40MgorKysgLi9XZWJWaWV3LnN1YnByb2ovV2ViQmFz
ZVJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCkBAIC0x
LDExNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwot
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5oPgotCi0jaW1wb3J0IDxXZWJLaXQvV2ViVmlld1ByaXZhdGUuaD4KLQotQGNsYXNzIE5TRXJy
b3I7Ci1AY2xhc3MgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKLUBjbGFzcyBOU1VSTENv
bm5lY3Rpb247Ci1AY2xhc3MgTlNVUkxDb25uZWN0aW9uQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7
Ci1AY2xhc3MgTlNVUkxDcmVkZW50aWFsOwotQGNsYXNzIE5TVVJMUmVxdWVzdDsKLUBjbGFzcyBO
U1VSTFJlc3BvbnNlOwotQGNsYXNzIFdlYkRhdGFTb3VyY2U7Ci1AY2xhc3MgV2ViUmVzb3VyY2U7
Ci1AY2xhc3MgV2ViVmlldzsKLQotQGludGVyZmFjZSBXZWJCYXNlUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZSA6IE5TT2JqZWN0Ci17Ci1AcHJvdGVjdGVkCi0gICAgV2ViRGF0YVNvdXJjZSAqZGF0YVNv
dXJjZTsKLSAgICBOU1VSTENvbm5lY3Rpb24gKmNvbm5lY3Rpb247Ci0gICAgTlNVUkxSZXF1ZXN0
ICpyZXF1ZXN0OwotICAgIEJPT0wgcmVhY2hlZFRlcm1pbmFsU3RhdGU7Ci1AcHJpdmF0ZQotICAg
IFdlYlZpZXcgKndlYlZpZXc7Ci0gICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2U7Ci0gICAgaWQg
aWRlbnRpZmllcjsKLSAgICBpZCByZXNvdXJjZUxvYWREZWxlZ2F0ZTsKLSAgICBpZCBkb3dubG9h
ZERlbGVnYXRlOwotICAgIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmN1cnJlbnRDb25u
ZWN0aW9uQ2hhbGxlbmdlOwotICAgIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmN1cnJl
bnRXZWJDaGFsbGVuZ2U7Ci0gICAgQk9PTCBjYW5jZWxsZWRGbGFnOwotICAgIEJPT0wgZGVmZXJz
Q2FsbGJhY2tzOwotICAgIEJPT0wgd2FpdGluZ1RvRGVsaXZlclJlc291cmNlOwotICAgIEJPT0wg
ZGVsaXZlcmVkUmVzb3VyY2U7Ci0gICAgV2ViUmVzb3VyY2VEZWxlZ2F0ZUltcGxlbWVudGF0aW9u
Q2FjaGUgaW1wbGVtZW50YXRpb25zOwotICAgIE5TVVJMICpvcmlnaW5hbFVSTDsKLSAgICBOU011
dGFibGVEYXRhICpyZXNvdXJjZURhdGE7Ci0gICAgV2ViUmVzb3VyY2UgKnJlc291cmNlOwotI2lm
bmRlZiBOREVCVUcKLSAgICBCT09MIGlzSW5pdGlhbGl6aW5nQ29ubmVjdGlvbjsKLSNlbmRpZgot
fQotCi0tIChCT09MKWxvYWRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdDsKLQot
LSAodm9pZClzZXREYXRhU291cmNlOihXZWJEYXRhU291cmNlICopZDsKLS0gKFdlYkRhdGFTb3Vy
Y2UgKilkYXRhU291cmNlOwotCi0tIChpZClyZXNvdXJjZUxvYWREZWxlZ2F0ZTsKLS0gKGlkKWRv
d25sb2FkRGVsZWdhdGU7Ci0KLS0gKHZvaWQpY2FuY2VsOwotLSAodm9pZCljYW5jZWxXaXRoRXJy
b3I6KE5TRXJyb3IgKillcnJvcjsKLQotLSAodm9pZClzZXREZWZlcnNDYWxsYmFja3M6KEJPT0wp
ZGVmZXJzOwotLSAoQk9PTClkZWZlcnNDYWxsYmFja3M7Ci0KLS0gKE5TRXJyb3IgKiljYW5jZWxs
ZWRFcnJvcjsKLQotLSAodm9pZClzZXRJZGVudGlmaWVyOihpZClpZGVudDsKLQotLSAodm9pZCly
ZWxlYXNlUmVzb3VyY2VzOwotLSAoTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlOwotCi0tICh2b2lk
KWFkZERhdGE6KE5TRGF0YSAqKWRhdGE7Ci0tIChOU0RhdGEgKilyZXNvdXJjZURhdGE7Ci0KLS8v
IENvbm5lY3Rpb24tbGVzcyBjYWxsYmFja3MgYWxsb3cgdXMgdG8gc2VuZCBjYWxsYmFja3MgdXNp
bmcgZGF0YSBhdHRhaW5lZCBmcm9tIGEgV2ViUmVzb3VyY2UgaW5zdGVhZCBvZiBhbiBOU1VSTENv
bm5lY3Rpb24uCi0tIChOU1VSTFJlcXVlc3QgKil3aWxsU2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVz
dCAqKW5ld1JlcXVlc3QgcmVkaXJlY3RSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlZGlyZWN0
UmVzcG9uc2U7Ci0tICh2b2lkKWRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZTsKLS0gKHZvaWQpZGlkQ2FuY2Vs
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKilj
aGFsbGVuZ2U7Ci0tICh2b2lkKWRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXI7
Ci0tICh2b2lkKWRpZFJlY2VpdmVEYXRhOihOU0RhdGEgKilkYXRhIGxlbmd0aFJlY2VpdmVkOihs
b25nIGxvbmcpbGVuZ3RoUmVjZWl2ZWQ7Ci0tICh2b2lkKXdpbGxTdG9wQnVmZmVyaW5nRGF0YToo
TlNEYXRhICopZGF0YTsKLS0gKHZvaWQpZGlkRmluaXNoTG9hZGluZzsKLS0gKHZvaWQpZGlkRmFp
bFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yOwotLSAoTlNDYWNoZWRVUkxSZXNwb25zZSAqKXdp
bGxDYWNoZVJlc3BvbnNlOihOU0NhY2hlZFVSTFJlc3BvbnNlICopY2FjaGVkUmVzcG9uc2U7Ci0K
LS8vIFVzZWQgdG8gd29yayBhcm91bmQgdGhlIGZhY3QgdGhhdCB5b3UgZG9uJ3QgZ2V0IGFueSBt
b3JlIE5TVVJMQ29ubmVjdGlvbiBjYWxsYmFja3MgdW50aWwgeW91IHJldHVybiBmcm9tIHRoZSBm
aXJzdCBvbmUuCi0rIChCT09MKWluQ29ubmVjdGlvbkNhbGxiYWNrOwotCi1AZW5kCi0KLS8vIE5v
dGU6IFRoaXMgaW50ZXJmYWNlIGNhbiBiZSByZW1vdmVkIG9uY2UgdGhpcyBtZXRob2QgaXMgZGVj
bGFyZWQKLS8vIGluIEZvdW5kYXRpb24gKHByb2JhYmx5IHdpbGwgYmUgaW4gRm91bmRhdGlvbi00
ODUpLgotQGludGVyZmFjZSBOU09iamVjdCAoV2ViQmFzZVJlc291cmNlSGFuZGxlRGVsZWdhdGVF
eHRyYXMpCi0tICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbiBkaWRSZWNl
aXZlRGF0YTooTlNEYXRhICopZGF0YSBsZW5ndGhSZWNlaXZlZDoobG9uZyBsb25nKWxlbmd0aFJl
Y2VpdmVkOwotQGVuZApJbmRleDogLi9XZWJWaWV3LnN1YnByb2ovV2ViQmFzZVJlc291cmNlSGFu
ZGxlRGVsZWdhdGUubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBXZWJCYXNlUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5tCmRpZmYgLU4gLi9XZWJWaWV3LnN1YnByb2ovV2ViQmFzZVJlc291cmNlSGFuZGxl
RGVsZWdhdGUubQotLS0gLi9XZWJWaWV3LnN1YnByb2ovV2ViQmFzZVJlc291cmNlSGFuZGxlRGVs
ZWdhdGUubQk2IEp1biAyMDA1IDExOjEyOjMyIC0wMDAwCTEuOTQKKysrIC4vV2ViVmlldy5zdWJw
cm9qL1dlYkJhc2VSZXNvdXJjZUhhbmRsZURlbGVnYXRlLm0JMSBKYW4gMTk3MCAwMDowMDowMCAt
MDAwMApAQCAtMSw3MzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBD
b21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAot
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0IDxXZWJLaXQvV2Vi
QmFzZVJlc291cmNlSGFuZGxlRGVsZWdhdGUuaD4KLQotI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+Ci0jaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMQ29u
bmVjdGlvbi5oPgotI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFJlcXVlc3QuaD4KLSNpbXBvcnQg
PEZvdW5kYXRpb24vTlNVUkxSZXNwb25zZS5oPgotCi0jaW1wb3J0IDxXZWJLaXQvV2ViQXNzZXJ0
aW9ucy5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYkRhdGFQcm90b2NvbC5oPgotI2ltcG9ydCA8V2Vi
S2l0L1dlYkRhdGFTb3VyY2VQcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViRGVmYXVsdFJl
c291cmNlTG9hZERlbGVnYXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViS2l0RXJyb3JzLmg+Ci0j
aW1wb3J0IDxXZWJLaXQvV2ViS2l0RXJyb3JzUHJpdmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dl
Yk5TVVJMUmVxdWVzdEV4dHJhcy5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYktpdE5TU3RyaW5nRXh0
cmFzLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViUHJlZmVyZW5jZXMuaD4KLSNpbXBvcnQgPFdlYktp
dC9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJSZXNvdXJjZUxv
YWREZWxlZ2F0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYlJlc291cmNlUHJpdmF0ZS5oPgotI2lt
cG9ydCA8V2ViS2l0L1dlYlZpZXdQcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRl
cmZhY2UuaD4KLQotc3RhdGljIHVuc2lnbmVkIGluTlNVUkxDb25uZWN0aW9uQ2FsbGJhY2s7Ci1z
dGF0aWMgQk9PTCBOU1VSTENvbm5lY3Rpb25TdXBwb3J0c0J1ZmZlcmVkRGF0YTsKLQotQGludGVy
ZmFjZSBOU1VSTENvbm5lY3Rpb24gKE5TVVJMQ29ubmVjdGlvblRpZ2VyUHJpdmF0ZSkKLS0gKE5T
RGF0YSAqKV9idWZmZXJlZERhdGE7Ci1AZW5kCi0KLUBpbnRlcmZhY2UgV2ViQmFzZVJlc291cmNl
SGFuZGxlRGVsZWdhdGUgKFdlYk5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIpIDxO
U1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyPgotQGVuZAotCi1AaW1wbGVtZW50YXRp
b24gV2ViQmFzZVJlc291cmNlSGFuZGxlRGVsZWdhdGUgKFdlYk5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VTZW5kZXIpIAotCi0tICh2b2lkKXVzZUNyZWRlbnRpYWw6KE5TVVJMQ3JlZGVudGlh
bCAqKWNyZWRlbnRpYWwgZm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UKLXsKLSAgICBpZiAoY2hhbGxlbmdlID09IG5pbCB8
fCBjaGFsbGVuZ2UgIT0gY3VycmVudFdlYkNoYWxsZW5nZSkgewotCXJldHVybjsKLSAgICB9Ci0K
LSAgICBbW2N1cnJlbnRDb25uZWN0aW9uQ2hhbGxlbmdlIHNlbmRlcl0gdXNlQ3JlZGVudGlhbDpj
cmVkZW50aWFsIGZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmN1cnJlbnRDb25uZWN0aW9uQ2hh
bGxlbmdlXTsKLQotICAgIFtjdXJyZW50Q29ubmVjdGlvbkNoYWxsZW5nZSByZWxlYXNlXTsKLSAg
ICBjdXJyZW50Q29ubmVjdGlvbkNoYWxsZW5nZSA9IG5pbDsKLSAgICAKLSAgICBbY3VycmVudFdl
YkNoYWxsZW5nZSByZWxlYXNlXTsKLSAgICBjdXJyZW50V2ViQ2hhbGxlbmdlID0gbmlsOwotfQot
Ci0tICh2b2lkKWNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZQotewotICAgIGlm
IChjaGFsbGVuZ2UgPT0gbmlsIHx8IGNoYWxsZW5nZSAhPSBjdXJyZW50V2ViQ2hhbGxlbmdlKSB7
Ci0JcmV0dXJuOwotICAgIH0KLQotICAgIFtbY3VycmVudENvbm5lY3Rpb25DaGFsbGVuZ2Ugc2Vu
ZGVyXSBjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
Y3VycmVudENvbm5lY3Rpb25DaGFsbGVuZ2VdOwotCi0gICAgW2N1cnJlbnRDb25uZWN0aW9uQ2hh
bGxlbmdlIHJlbGVhc2VdOwotICAgIGN1cnJlbnRDb25uZWN0aW9uQ2hhbGxlbmdlID0gbmlsOwot
ICAgIAotICAgIFtjdXJyZW50V2ViQ2hhbGxlbmdlIHJlbGVhc2VdOwotICAgIGN1cnJlbnRXZWJD
aGFsbGVuZ2UgPSBuaWw7Ci19Ci0KLS0gKHZvaWQpY2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UKLXsKLSAgICBpZiAo
Y2hhbGxlbmdlID09IG5pbCB8fCBjaGFsbGVuZ2UgIT0gY3VycmVudFdlYkNoYWxsZW5nZSkgewot
CXJldHVybjsKLSAgICB9Ci0KLSAgICBbc2VsZiBjYW5jZWxdOwotfQotCi1AZW5kCi0KLS8vIFRo
aXMgZGVjbGFyYXRpb24gaXMgb25seSBuZWVkZWQgdG8gZWFzZSB0aGUgdHJhbnNpdGlvbiB0byBh
IG5ldyBTUEkuICBJdCBjYW4gYmUgcmVtb3ZlZAotLy8gbW92aW5nIGZvcndhcmQgYmV5b25kIFRp
Z2VyIDhBNDE2LgotQGludGVyZmFjZSBOU1VSTFByb3RvY29sIChXZWJGb3VuZGF0aW9uU2VjcmV0
KSAKLSsgKHZvaWQpX3JlbW92ZVByb3BlcnR5Rm9yS2V5OihOU1N0cmluZyAqKWtleSBpblJlcXVl
c3Q6KE5TTXV0YWJsZVVSTFJlcXVlc3QgKilyZXF1ZXN0OwotQGVuZAotCi1AaW1wbGVtZW50YXRp
b24gV2ViQmFzZVJlc291cmNlSGFuZGxlRGVsZWdhdGUKLQotKyAodm9pZClpbml0aWFsaXplCi17
Ci0gICAgTlNVUkxDb25uZWN0aW9uU3VwcG9ydHNCdWZmZXJlZERhdGEgPSBbTlNVUkxDb25uZWN0
aW9uIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBzZWxlY3RvcihfYnVmZmVyZWREYXRhKV07
Ci19Ci0KLS0gKHZvaWQpcmVsZWFzZVJlc291cmNlcwotewotICAgIEFTU0VSVCghcmVhY2hlZFRl
cm1pbmFsU3RhdGUpOwotICAgIAotICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB3aGVuIHdlIHJl
bGVhc2UgdGhlIGhhbmRsZSwgaXQgd2lsbCBiZQotICAgIC8vIGRlYWxsb2NhdGVkIGFuZCByZWxl
YXNlIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdC4KLSAgICAvLyBXZSBuZWVkIHRv
IHJldGFpbiB0byBhdm9pZCBhY2Nlc3NpbmcgdGhlIG9iamVjdCBhZnRlciBpdAotICAgIC8vIGhh
cyBiZWVuIGRlYWxsb2NhdGVkIGFuZCBhbHNvIHRvIGF2b2lkIHJlZW50ZXJpbmcgdGhpcyBtZXRo
b2QuCi0gICAgCi0gICAgW3NlbGYgcmV0YWluXTsKLSAgICAKLSAgICBbaWRlbnRpZmllciByZWxl
YXNlXTsKLSAgICBpZGVudGlmaWVyID0gbmlsOwotCi0gICAgW2Nvbm5lY3Rpb24gcmVsZWFzZV07
Ci0gICAgY29ubmVjdGlvbiA9IG5pbDsKLQotICAgIFt3ZWJWaWV3IHJlbGVhc2VdOwotICAgIHdl
YlZpZXcgPSBuaWw7Ci0gICAgCi0gICAgW2RhdGFTb3VyY2UgcmVsZWFzZV07Ci0gICAgZGF0YVNv
dXJjZSA9IG5pbDsKLSAgICAKLSAgICBbcmVzb3VyY2VMb2FkRGVsZWdhdGUgcmVsZWFzZV07Ci0g
ICAgcmVzb3VyY2VMb2FkRGVsZWdhdGUgPSBuaWw7Ci0KLSAgICBbZG93bmxvYWREZWxlZ2F0ZSBy
ZWxlYXNlXTsKLSAgICBkb3dubG9hZERlbGVnYXRlID0gbmlsOwotICAgIAotICAgIFtyZXNvdXJj
ZSByZWxlYXNlXTsKLSAgICByZXNvdXJjZSA9IG5pbDsKLSAgICAKLSAgICBbcmVzb3VyY2VEYXRh
IHJlbGVhc2VdOwotICAgIHJlc291cmNlRGF0YSA9IG5pbDsKLSAgICAKLSAgICByZWFjaGVkVGVy
bWluYWxTdGF0ZSA9IFlFUzsKLSAgICAKLSAgICBbc2VsZiByZWxlYXNlXTsKLX0KLQotLSAodm9p
ZClkZWFsbG9jCi17Ci0gICAgQVNTRVJUKHJlYWNoZWRUZXJtaW5hbFN0YXRlKTsKLSAgICBbcmVx
dWVzdCByZWxlYXNlXTsKLSAgICBbcmVzcG9uc2UgcmVsZWFzZV07Ci0gICAgW29yaWdpbmFsVVJM
IHJlbGVhc2VdOwotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAodm9pZClkZWxpdmVyUmVz
b3VyY2UKLXsKLSAgICBBU1NFUlQocmVzb3VyY2UpOwotICAgIEFTU0VSVCh3YWl0aW5nVG9EZWxp
dmVyUmVzb3VyY2UpOwotICAgIAotICAgIGlmICghZGVmZXJzQ2FsbGJhY2tzKSB7Ci0gICAgICAg
IFtzZWxmIGRpZFJlY2VpdmVSZXNwb25zZTpbcmVzb3VyY2UgX3Jlc3BvbnNlXV07Ci0gICAgICAg
IE5TRGF0YSAqZGF0YSA9IFtyZXNvdXJjZSBkYXRhXTsKLSAgICAgICAgW3NlbGYgZGlkUmVjZWl2
ZURhdGE6ZGF0YSBsZW5ndGhSZWNlaXZlZDpbZGF0YSBsZW5ndGhdXTsKLSAgICAgICAgW3NlbGYg
ZGlkRmluaXNoTG9hZGluZ107Ci0gICAgICAgIGRlbGl2ZXJlZFJlc291cmNlID0gWUVTOwotICAg
ICAgICB3YWl0aW5nVG9EZWxpdmVyUmVzb3VyY2UgPSBOTzsKLSAgICB9Ci19Ci0KLS0gKHZvaWQp
ZGVsaXZlclJlc291cmNlQWZ0ZXJEZWxheQotewotICAgIGlmIChyZXNvdXJjZSAmJiAhZGVmZXJz
Q2FsbGJhY2tzICYmICF3YWl0aW5nVG9EZWxpdmVyUmVzb3VyY2UgJiYgIWRlbGl2ZXJlZFJlc291
cmNlKSB7Ci0gICAgICAgIFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoZGVsaXZlclJl
c291cmNlKSB3aXRoT2JqZWN0Om5pbCBhZnRlckRlbGF5OjBdOwotICAgICAgICB3YWl0aW5nVG9E
ZWxpdmVyUmVzb3VyY2UgPSBZRVM7Ci0gICAgfQotfQotCi0vLyBUaGUgZm9sbG93aW5nIDIgbWV0
aG9kcyBhcmUgY29waWVkIGZyb20gW05TSFRUUFVSTFByb3RvY29sIF9jYWNoZWRSZXNwb25zZVBh
c3Nlc1ZhbGlkaXR5Q2hlY2tzXSBhbmQgbW9kaWZpZWQgZm9yIG91ciBuZWVkcy4KLS8vIEZJWE1F
OiBJdCB3b3VsZCBiZSBuaWNlIHRvIGV2ZW50dWFsbHkgdG8gc2hhcmUgdGhpcyBjb2RlIHNvbWVo
b3cuCi0tIChCT09MKV9jYW5Vc2VSZXNvdXJjZUZvclJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXRo
ZVJlcXVlc3QKLXsKLSAgICBOU1VSTFJlcXVlc3RDYWNoZVBvbGljeSBwb2xpY3kgPSBbdGhlUmVx
dWVzdCBjYWNoZVBvbGljeV07Ci0gICAgICAgIAotICAgIGlmIChwb2xpY3kgPT0gTlNVUkxSZXF1
ZXN0UmV0dXJuQ2FjaGVEYXRhRWxzZUxvYWQpIHsKLSAgICAgICAgcmV0dXJuIFlFUzsKLSAgICB9
IGVsc2UgaWYgKHBvbGljeSA9PSBOU1VSTFJlcXVlc3RSZXR1cm5DYWNoZURhdGFEb250TG9hZCkg
ewotICAgICAgICByZXR1cm4gWUVTOwotICAgIH0gZWxzZSBpZiAocG9saWN5ID09IE5TVVJMUmVx
dWVzdFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhKSB7Ci0gICAgICAgIHJldHVybiBOTzsKLSAgICB9
IGVsc2UgaWYgKFt0aGVSZXF1ZXN0IHZhbHVlRm9ySFRUUEhlYWRlckZpZWxkOkAibXVzdC1yZXZh
bGlkYXRlIl0gIT0gbmlsKSB7Ci0gICAgICAgIHJldHVybiBOTzsKLSAgICB9IGVsc2UgaWYgKFt0
aGVSZXF1ZXN0IHZhbHVlRm9ySFRUUEhlYWRlckZpZWxkOkAicHJveHktcmV2YWxpZGF0ZSJdICE9
IG5pbCkgewotICAgICAgICByZXR1cm4gTk87Ci0gICAgfSBlbHNlIGlmIChbdGhlUmVxdWVzdCB2
YWx1ZUZvckhUVFBIZWFkZXJGaWVsZDpAIklmLU1vZGlmaWVkLVNpbmNlIl0gIT0gbmlsKSB7Ci0g
ICAgICAgIHJldHVybiBOTzsKLSAgICB9IGVsc2UgaWYgKFt0aGVSZXF1ZXN0IHZhbHVlRm9ySFRU
UEhlYWRlckZpZWxkOkAiQ2FjaGUtQ29udHJvbCJdICE9IG5pbCkgewotCXJldHVybiBOTzsKLSAg
ICB9IGVsc2UgaWYgKFtbdGhlUmVxdWVzdCBIVFRQTWV0aG9kXSBfd2Via2l0X2lzQ2FzZUluc2Vu
c2l0aXZlRXF1YWxUb1N0cmluZzpAIlBPU1QiXSkgewotICAgICAgICByZXR1cm4gTk87Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgcmV0dXJuIFlFUzsKLSAgICB9Ci19Ci0KLS0gKEJPT0wpX2NhblVz
ZVJlc291cmNlV2l0aFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopdGhlUmVzcG9uc2UKLXsKLSAg
ICBpZiAoV0tHZXROU1VSTFJlc3BvbnNlTXVzdFJldmFsaWRhdGUodGhlUmVzcG9uc2UpKSB7Ci0g
ICAgICAgIHJldHVybiBOTzsKLSAgICB9IGVsc2UgaWYgKFdLR2V0TlNVUkxSZXNwb25zZUNhbGN1
bGF0ZWRFeHBpcmF0aW9uKHRoZVJlc3BvbnNlKSAtIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgp
IDwgMSkgewotICAgICAgICByZXR1cm4gTk87Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmV0dXJu
IFlFUzsKLSAgICB9Ci19Ci0KLS0gKEJPT0wpbG9hZFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3Qg
KilyCi17Ci0gICAgQVNTRVJUKGNvbm5lY3Rpb24gPT0gbmlsKTsKLSAgICBBU1NFUlQocmVzb3Vy
Y2UgPT0gbmlsKTsKLSAgICAKLSAgICBOU1VSTCAqVVJMID0gW1tyIFVSTF0gcmV0YWluXTsKLSAg
ICBbb3JpZ2luYWxVUkwgcmVsZWFzZV07Ci0gICAgb3JpZ2luYWxVUkwgPSBVUkw7Ci0gICAgCi0g
ICAgZGVsaXZlcmVkUmVzb3VyY2UgPSBOTzsKLSAgICB3YWl0aW5nVG9EZWxpdmVyUmVzb3VyY2Ug
PSBOTzsKLQotICAgIE5TVVJMUmVxdWVzdCAqY2xpZW50UmVxdWVzdCA9IFtzZWxmIHdpbGxTZW5k
UmVxdWVzdDpyIHJlZGlyZWN0UmVzcG9uc2U6bmlsXTsKLSAgICBpZiAoY2xpZW50UmVxdWVzdCA9
PSBuaWwpIHsKLSAgICAgICAgTlNFcnJvciAqYmFkVVJMRXJyb3IgPSBbTlNFcnJvciBfd2ViS2l0
RXJyb3JXaXRoRG9tYWluOk5TVVJMRXJyb3JEb21haW4gCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTpOU1VSTEVycm9yQ2FuY2Vs
bGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVSTDpbciBVUkxdXTsKLSAgICAgICAgW3NlbGYgZGlkRmFpbFdpdGhFcnJvcjpiYWRV
UkxFcnJvcl07Ci0gICAgICAgIHJldHVybiBOTzsKLSAgICB9Ci0gICAgciA9IGNsaWVudFJlcXVl
c3Q7Ci0gICAgCi0gICAgaWYgKFtbciBVUkxdIGlzRXF1YWw6b3JpZ2luYWxVUkxdICYmIFtzZWxm
IF9jYW5Vc2VSZXNvdXJjZUZvclJlcXVlc3Q6cl0pIHsKLSAgICAgICAgcmVzb3VyY2UgPSBbZGF0
YVNvdXJjZSBzdWJyZXNvdXJjZUZvclVSTDpvcmlnaW5hbFVSTF07Ci0gICAgICAgIGlmIChyZXNv
dXJjZSAhPSBuaWwpIHsKLSAgICAgICAgICAgIGlmIChbc2VsZiBfY2FuVXNlUmVzb3VyY2VXaXRo
UmVzcG9uc2U6W3Jlc291cmNlIF9yZXNwb25zZV1dKSB7Ci0gICAgICAgICAgICAgICAgW3Jlc291
cmNlIHJldGFpbl07Ci0gICAgICAgICAgICAgICAgLy8gRGVsaXZlciB0aGUgcmVzb3VyY2UgYWZ0
ZXIgYSBkZWxheSBiZWNhdXNlIGNhbGxlcnMgZG9uJ3QgZXhwZWN0IHRvIHJlY2VpdmUgY2FsbGJh
Y2tzIHdoaWxlIGNhbGxpbmcgdGhpcyBtZXRob2QuCi0gICAgICAgICAgICAgICAgW3NlbGYgZGVs
aXZlclJlc291cmNlQWZ0ZXJEZWxheV07Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFlFUzsKLSAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmVzb3VyY2UgPSBuaWw7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0jaWZuZGVmIE5ERUJVRwotICAgIGlz
SW5pdGlhbGl6aW5nQ29ubmVjdGlvbiA9IFlFUzsKLSNlbmRpZgotICAgIGNvbm5lY3Rpb24gPSBb
W05TVVJMQ29ubmVjdGlvbiBhbGxvY10gaW5pdFdpdGhSZXF1ZXN0OnIgZGVsZWdhdGU6c2VsZl07
Ci0jaWZuZGVmIE5ERUJVRwotICAgIGlzSW5pdGlhbGl6aW5nQ29ubmVjdGlvbiA9IE5POwotI2Vu
ZGlmCi0gICAgaWYgKGRlZmVyc0NhbGxiYWNrcykgewotCQlXS1NldE5TVVJMQ29ubmVjdGlvbkRl
ZmVyc0NhbGxiYWNrcyhjb25uZWN0aW9uLCBZRVMpOwotICAgIH0KLQotICAgIHJldHVybiBZRVM7
Ci19Ci0KLS0gKHZvaWQpc2V0RGVmZXJzQ2FsbGJhY2tzOihCT09MKWRlZmVycwotewotICAgIGRl
ZmVyc0NhbGxiYWNrcyA9IGRlZmVyczsKLQlXS1NldE5TVVJMQ29ubmVjdGlvbkRlZmVyc0NhbGxi
YWNrcyhjb25uZWN0aW9uLCBkZWZlcnMpOwotICAgIC8vIERlbGl2ZXIgdGhlIHJlc291cmNlIGFm
dGVyIGEgZGVsYXkgYmVjYXVzZSBjYWxsZXJzIGRvbid0IGV4cGVjdCB0byByZWNlaXZlIGNhbGxi
YWNrcyB3aGlsZSBjYWxsaW5nIHRoaXMgbWV0aG9kLgotICAgIFtzZWxmIGRlbGl2ZXJSZXNvdXJj
ZUFmdGVyRGVsYXldOwotfQotCi0tIChCT09MKWRlZmVyc0NhbGxiYWNrcwotewotICAgIHJldHVy
biBkZWZlcnNDYWxsYmFja3M7Ci19Ci0KLS0gKHZvaWQpc2V0RGF0YVNvdXJjZTooV2ViRGF0YVNv
dXJjZSAqKWQKLXsKLSAgICBBU1NFUlQoZCk7Ci0gICAgQVNTRVJUKFtkIF93ZWJWaWV3XSk7Ci0g
ICAgCi0gICAgW2QgcmV0YWluXTsKLSAgICBbZGF0YVNvdXJjZSByZWxlYXNlXTsKLSAgICBkYXRh
U291cmNlID0gZDsKLQotICAgIFt3ZWJWaWV3IHJlbGVhc2VdOwotICAgIHdlYlZpZXcgPSBbW2Rh
dGFTb3VyY2UgX3dlYlZpZXddIHJldGFpbl07Ci0gICAgCi0gICAgW3Jlc291cmNlTG9hZERlbGVn
YXRlIHJlbGVhc2VdOwotICAgIHJlc291cmNlTG9hZERlbGVnYXRlID0gW1t3ZWJWaWV3IHJlc291
cmNlTG9hZERlbGVnYXRlXSByZXRhaW5dOwotICAgIGltcGxlbWVudGF0aW9ucyA9IFt3ZWJWaWV3
IF9yZXNvdXJjZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uc107Ci0KLSAgICBbZG93bmxvYWRE
ZWxlZ2F0ZSByZWxlYXNlXTsKLSAgICBkb3dubG9hZERlbGVnYXRlID0gW1t3ZWJWaWV3IGRvd25s
b2FkRGVsZWdhdGVdIHJldGFpbl07Ci0KLSAgICBbc2VsZiBzZXREZWZlcnNDYWxsYmFja3M6W3dl
YlZpZXcgZGVmZXJzQ2FsbGJhY2tzXV07Ci19Ci0KLS0gKFdlYkRhdGFTb3VyY2UgKilkYXRhU291
cmNlCi17Ci0gICAgcmV0dXJuIGRhdGFTb3VyY2U7Ci19Ci0KLS0gcmVzb3VyY2VMb2FkRGVsZWdh
dGUKLXsKLSAgICByZXR1cm4gcmVzb3VyY2VMb2FkRGVsZWdhdGU7Ci19Ci0KLS0gZG93bmxvYWRE
ZWxlZ2F0ZQotewotICAgIHJldHVybiBkb3dubG9hZERlbGVnYXRlOwotfQotCi0tICh2b2lkKWFk
ZERhdGE6KE5TRGF0YSAqKWRhdGEKLXsKLSAgICAvLyBEb24ndCBidWZmZXIgZGF0YSBpZiB3ZSdy
ZSBsb2FkaW5nIGl0IGZyb20gYSBXZWJSZXNvdXJjZS4KLSAgICBpZiAocmVzb3VyY2UgPT0gbmls
KSB7Ci0gICAgICAgIGlmIChOU1VSTENvbm5lY3Rpb25TdXBwb3J0c0J1ZmZlcmVkRGF0YSkgewot
ICAgICAgICAgICAgLy8gQnVmZmVyIGRhdGEgb25seSBpZiB0aGUgY29ubmVjdGlvbiBoYXMgaGFu
ZGVkIHVzIHRoZSBkYXRhIGJlY2F1c2UgaXMgaGFzIHN0b3BwZWQgYnVmZmVyaW5nIGl0LgotICAg
ICAgICAgICAgaWYgKHJlc291cmNlRGF0YSAhPSBuaWwpIHsKLSAgICAgICAgICAgICAgICBbcmVz
b3VyY2VEYXRhIGFwcGVuZERhdGE6ZGF0YV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBpZiAocmVzb3VyY2VEYXRhID09IG5pbCkgewotICAgICAgICAgICAg
ICAgIHJlc291cmNlRGF0YSA9IFtbTlNNdXRhYmxlRGF0YSBhbGxvY10gaW5pdF07Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBbcmVzb3VyY2VEYXRhIGFwcGVuZERhdGE6ZGF0YV07Ci0gICAg
ICAgIH0KLSAgICB9Ci19Ci0KLS0gKHZvaWQpc2F2ZVJlc291cmNlCi17Ci0gICAgLy8gRG9uJ3Qg
c2F2ZSBkYXRhIGFzIGEgV2ViUmVzb3VyY2UgaWYgaXQgd2FzIGxvYWRlZCBmcm9tIGEgV2ViUmVz
b3VyY2UuCi0gICAgaWYgKHJlc291cmNlID09IG5pbCkgewotICAgICAgICBOU0RhdGEgKmRhdGEg
PSBbc2VsZiByZXNvdXJjZURhdGFdOwotICAgICAgICBpZiAoW2RhdGEgbGVuZ3RoXSA+IDApIHsK
LSAgICAgICAgICAgIEFTU0VSVChvcmlnaW5hbFVSTCk7Ci0gICAgICAgICAgICBBU1NFUlQoW3Jl
c3BvbnNlIE1JTUVUeXBlXSk7Ci0gICAgICAgICAgICBXZWJSZXNvdXJjZSAqbmV3UmVzb3VyY2Ug
PSBbW1dlYlJlc291cmNlIGFsbG9jXSBfaW5pdFdpdGhEYXRhOmRhdGEgVVJMOm9yaWdpbmFsVVJM
IHJlc3BvbnNlOnJlc3BvbnNlXTsKLSAgICAgICAgICAgIGlmIChuZXdSZXNvdXJjZSAhPSBuaWwp
IHsKLSAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZSBhZGRTdWJyZXNvdXJjZTpuZXdSZXNvdXJj
ZV07Ci0gICAgICAgICAgICAgICAgW25ld1Jlc291cmNlIHJlbGVhc2VdOwotICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotLSAoTlNEYXRhICopcmVzb3VyY2VEYXRhCi17
Ci0gICAgaWYgKHJlc291cmNlICE9IG5pbCkgewotICAgICAgICByZXR1cm4gW3Jlc291cmNlIGRh
dGFdOwotICAgIH0KLSAgICBpZiAocmVzb3VyY2VEYXRhICE9IG5pbCkgewotICAgICAgICAvLyBS
ZXRhaW4gYW5kIGF1dG9yZWxlYXNlIHJlc291cmNlRGF0YSBzaW5jZSByZWxlYXNlUmVzb3VyY2Vz
ICh3aGljaCByZWxlYXNlcyByZXNvdXJjZURhdGEpIG1heSBiZSBjYWxsZWQgCi0gICAgICAgIC8v
IGJlZm9yZSB0aGUgY2FsbGVyIG9mIHRoaXMgbWV0aG9kIGhhcyBhbiBvcHBvcnVudGl0eSB0byBy
ZXRhaW4gdGhlIHJldHVybmVkIGRhdGEgKDQwNzA3MjkpLgotICAgICAgICByZXR1cm4gW1tyZXNv
dXJjZURhdGEgcmV0YWluXSBhdXRvcmVsZWFzZV07Ci0gICAgfQotICAgIGlmIChOU1VSTENvbm5l
Y3Rpb25TdXBwb3J0c0J1ZmZlcmVkRGF0YSkgewotICAgICAgICByZXR1cm4gW2Nvbm5lY3Rpb24g
X2J1ZmZlcmVkRGF0YV07Ci0gICAgfQotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKE5TVVJMUmVx
dWVzdCAqKXdpbGxTZW5kUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopbmV3UmVxdWVzdCByZWRpcmVj
dFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVkaXJlY3RSZXNwb25zZQotewotICAgIEFTU0VS
VCghcmVhY2hlZFRlcm1pbmFsU3RhdGUpOwotICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm11dGFi
bGVSZXF1ZXN0ID0gW25ld1JlcXVlc3QgbXV0YWJsZUNvcHldOwotICAgIE5TVVJMUmVxdWVzdCAq
Y2xpZW50UmVxdWVzdCwgKnVwZGF0ZWRSZXF1ZXN0OwotICAgIEJPT0wgaGF2ZURhdGFTY2hlbWVS
ZXF1ZXN0ID0gTk87Ci0gICAgCi0gICAgLy8gcmV0YWluL3JlbGVhc2Ugc2VsZiBpbiB0aGlzIGRl
bGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwotICAg
IC8vIGFueXRoaW5nIGluY2x1ZGluZyBwb3NzaWJseSByZWxlYXNpbmcgc2VsZjsgb25lIGV4YW1w
bGUgb2YgdGhpcyBpcyAzMjY2MjE2Ci0gICAgW3NlbGYgcmV0YWluXTsKLQotICAgIFttdXRhYmxl
UmVxdWVzdCBfd2ViX3NldEhUVFBVc2VyQWdlbnQ6W3dlYlZpZXcgdXNlckFnZW50Rm9yVVJMOltu
ZXdSZXF1ZXN0IFVSTF1dXTsKLSAgICBuZXdSZXF1ZXN0ID0gW211dGFibGVSZXF1ZXN0IGF1dG9y
ZWxlYXNlXTsKLQotICAgIGNsaWVudFJlcXVlc3QgPSBbbmV3UmVxdWVzdCBfd2ViRGF0YVJlcXVl
c3RFeHRlcm5hbFJlcXVlc3RdOwotICAgIGlmKCFjbGllbnRSZXF1ZXN0KQotICAgICAgICBjbGll
bnRSZXF1ZXN0ID0gbmV3UmVxdWVzdDsKLSAgICBlbHNlCi0gICAgICAgIGhhdmVEYXRhU2NoZW1l
UmVxdWVzdCA9IFlFUzsKLSAgICAKLSAgICBpZiAoaWRlbnRpZmllciA9PSBuaWwpIHsKLSAgICAg
ICAgLy8gVGhlIGlkZW50aWZpZXIgaXMgcmVsZWFzZWQgYWZ0ZXIgdGhlIGxhc3QgY2FsbGJhY2ss
IHJhdGhlciB0aGFuIGluIGRlYWxsb2MKLSAgICAgICAgLy8gdG8gYXZvaWQgcG90ZW50aWFsIGN5
Y2xlcy4KLSAgICAgICAgaWYgKGltcGxlbWVudGF0aW9ucy5kZWxlZ2F0ZUltcGxlbWVudHNJZGVu
dGlmaWVyRm9yUmVxdWVzdCkKLSAgICAgICAgICAgIGlkZW50aWZpZXIgPSBbW3Jlc291cmNlTG9h
ZERlbGVnYXRlIHdlYlZpZXc6IHdlYlZpZXcgaWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0OmNs
aWVudFJlcXVlc3QgZnJvbURhdGFTb3VyY2U6ZGF0YVNvdXJjZV0gcmV0YWluXTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgaWRlbnRpZmllciA9IFtbW1dlYkRlZmF1bHRSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZSBzaGFyZWRSZXNvdXJjZUxvYWREZWxlZ2F0ZV0gd2ViVmlldzp3ZWJWaWV3IGlkZW50
aWZpZXJGb3JJbml0aWFsUmVxdWVzdDpjbGllbnRSZXF1ZXN0IGZyb21EYXRhU291cmNlOmRhdGFT
b3VyY2VdIHJldGFpbl07Ci0gICAgfQotCi0gICAgLy8gSWYgd2UgaGF2ZSBhIHNwZWNpYWwgImFw
cGxld2ViZGF0YSIgc2NoZW1lIFVSTCB3ZSBzZW5kIGEgZmFrZSByZXF1ZXN0IHRvIHRoZSBkZWxl
Z2F0ZS4KLSAgICBpZiAoaW1wbGVtZW50YXRpb25zLmRlbGVnYXRlSW1wbGVtZW50c1dpbGxTZW5k
UmVxdWVzdCkKLSAgICAgICAgdXBkYXRlZFJlcXVlc3QgPSBbcmVzb3VyY2VMb2FkRGVsZWdhdGUg
d2ViVmlldzp3ZWJWaWV3IHJlc291cmNlOmlkZW50aWZpZXIgd2lsbFNlbmRSZXF1ZXN0OmNsaWVu
dFJlcXVlc3QgcmVkaXJlY3RSZXNwb25zZTpyZWRpcmVjdFJlc3BvbnNlIGZyb21EYXRhU291cmNl
OmRhdGFTb3VyY2VdOwotICAgIGVsc2UKLSAgICAgICAgdXBkYXRlZFJlcXVlc3QgPSBbW1dlYkRl
ZmF1bHRSZXNvdXJjZUxvYWREZWxlZ2F0ZSBzaGFyZWRSZXNvdXJjZUxvYWREZWxlZ2F0ZV0gd2Vi
Vmlldzp3ZWJWaWV3IHJlc291cmNlOmlkZW50aWZpZXIgd2lsbFNlbmRSZXF1ZXN0OmNsaWVudFJl
cXVlc3QgcmVkaXJlY3RSZXNwb25zZTpyZWRpcmVjdFJlc3BvbnNlIGZyb21EYXRhU291cmNlOmRh
dGFTb3VyY2VdOwotICAgICAgICAKLSAgICBpZiAoIWhhdmVEYXRhU2NoZW1lUmVxdWVzdCkKLSAg
ICAgICAgbmV3UmVxdWVzdCA9IHVwZGF0ZWRSZXF1ZXN0OwotICAgIGVsc2UgewotICAgICAgICAv
LyBJZiB0aGUgZGVsZWdhdGUgbW9kaWZpZWQgdGhlIHJlcXVlc3QgdXNlIHRoYXQgaW5zdGVhZCBv
ZgotICAgICAgICAvLyBvdXIgYXBwbGV3ZWJkYXRhIHJlcXVlc3QsIG90aGVyd2lzZSB1c2UgdGhl
IG9yaWdpbmFsCi0gICAgICAgIC8vIGFwcGxld2ViZGF0YSByZXF1ZXN0LgotICAgICAgICBpZiAo
IVt1cGRhdGVkUmVxdWVzdCBpc0VxdWFsOmNsaWVudFJlcXVlc3RdKSB7Ci0gICAgICAgICAgICBu
ZXdSZXF1ZXN0ID0gdXBkYXRlZFJlcXVlc3Q7Ci0gICAgICAgIAotICAgICAgICAgICAgLy8gVGhl
IHJlc3BvbmRzVG9TZWxlY3RvcjogY2hlY2sgaXMgb25seSBuZWNlc3NhcnkgZm9yIHBlb3BsZSBi
dWlsZGluZy9ydW5uaW5nIHByaW9yIHRvIFRpZXIgOEE0MTYuCi0gICAgICAgICAgICBpZiAoW05T
VVJMUHJvdG9jb2wgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfcmVtb3ZlUHJvcGVydHlG
b3JLZXk6aW5SZXF1ZXN0OildICYmCi0gICAgICAgICAgICAgICAgW25ld1JlcXVlc3QgaXNLaW5k
T2ZDbGFzczpbTlNNdXRhYmxlVVJMUmVxdWVzdCBjbGFzc11dKSB7Ci0gICAgICAgICAgICAgICAg
TlNNdXRhYmxlVVJMUmVxdWVzdCAqbXIgPSAoTlNNdXRhYmxlVVJMUmVxdWVzdCAqKW5ld1JlcXVl
c3Q7Ci0gICAgICAgICAgICAgICAgW05TVVJMUHJvdG9jb2wgX3JlbW92ZVByb3BlcnR5Rm9yS2V5
OltOU1VSTFJlcXVlc3QgX3dlYkRhdGFSZXF1ZXN0UHJvcGVydHlLZXldIGluUmVxdWVzdDptcl07
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIFN0b3JlIGEgY29w
eSBvZiB0aGUgcmVxdWVzdC4KLSAgICBbcmVxdWVzdCBhdXRvcmVsZWFzZV07Ci0KLSAgICAvLyBD
bGllbnQgbWF5IHJldHVybiBhIG5pbCByZXF1ZXN0LCBpbmRpY2F0aW5nIHRoYXQgdGhlIHJlcXVl
c3Qgc2hvdWxkIGJlIGFib3J0ZWQuCi0gICAgaWYgKG5ld1JlcXVlc3QpewotICAgICAgICByZXF1
ZXN0ID0gW25ld1JlcXVlc3QgY29weV07Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICByZXF1
ZXN0ID0gbmlsOwotICAgIH0KLQotICAgIFtzZWxmIHJlbGVhc2VdOwotICAgIHJldHVybiByZXF1
ZXN0OwotfQotCi0tICh2b2lkKWRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZQotewotICAgIEFTU0VSVCghcmVh
Y2hlZFRlcm1pbmFsU3RhdGUpOwotICAgIEFTU0VSVCghY3VycmVudENvbm5lY3Rpb25DaGFsbGVu
Z2UpOwotICAgIEFTU0VSVCghY3VycmVudFdlYkNoYWxsZW5nZSk7Ci0KLSAgICAvLyByZXRhaW4v
cmVsZWFzZSBzZWxmIGluIHRoaXMgZGVsZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFs
IHByb2Nlc3NpbmcgY2FuIGRvCi0gICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IHJl
bGVhc2luZyBzZWxmOyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIDMyNjYyMTYKLSAgICBbc2VsZiBy
ZXRhaW5dOwotICAgIGN1cnJlbnRDb25uZWN0aW9uQ2hhbGxlbmdlID0gW2NoYWxsZW5nZSByZXRh
aW5dOzsKLSAgICBjdXJyZW50V2ViQ2hhbGxlbmdlID0gW1tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlIGFsbG9jXSBpbml0V2l0aEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNoYWxsZW5nZSBz
ZW5kZXI6c2VsZl07Ci0KLSAgICBpZiAoaW1wbGVtZW50YXRpb25zLmRlbGVnYXRlSW1wbGVtZW50
c0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkgewotICAgICAgICBbcmVzb3VyY2VM
b2FkRGVsZWdhdGUgd2ViVmlldzp3ZWJWaWV3IHJlc291cmNlOmlkZW50aWZpZXIgZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmN1cnJlbnRXZWJDaGFsbGVuZ2UgZnJvbURhdGFTb3Vy
Y2U6ZGF0YVNvdXJjZV07Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgW1tXZWJEZWZhdWx0UmVzb3Vy
Y2VMb2FkRGVsZWdhdGUgc2hhcmVkUmVzb3VyY2VMb2FkRGVsZWdhdGVdIHdlYlZpZXc6d2ViVmll
dyByZXNvdXJjZTppZGVudGlmaWVyIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpj
dXJyZW50V2ViQ2hhbGxlbmdlIGZyb21EYXRhU291cmNlOmRhdGFTb3VyY2VdOwotICAgIH0KLSAg
ICBbc2VsZiByZWxlYXNlXTsKLX0KLQotLSAodm9pZClkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZQotewotICAg
IEFTU0VSVCghcmVhY2hlZFRlcm1pbmFsU3RhdGUpOwotICAgIEFTU0VSVChjdXJyZW50Q29ubmVj
dGlvbkNoYWxsZW5nZSk7Ci0gICAgQVNTRVJUKGN1cnJlbnRXZWJDaGFsbGVuZ2UpOwotICAgIEFT
U0VSVChjdXJyZW50Q29ubmVjdGlvbkNoYWxsZW5nZSA9IGNoYWxsZW5nZSk7Ci0KLSAgICAvLyBy
ZXRhaW4vcmVsZWFzZSBzZWxmIGluIHRoaXMgZGVsZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRp
dGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvCi0gICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3Np
Ymx5IHJlbGVhc2luZyBzZWxmOyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIDMyNjYyMTYKLSAgICBb
c2VsZiByZXRhaW5dOwotICAgIGlmIChpbXBsZW1lbnRhdGlvbnMuZGVsZWdhdGVJbXBsZW1lbnRz
RGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpIHsKLSAgICAgICAgW3Jlc291cmNlTG9h
ZERlbGVnYXRlIHdlYlZpZXc6d2ViVmlldyByZXNvdXJjZTppZGVudGlmaWVyIGRpZENhbmNlbEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmN1cnJlbnRXZWJDaGFsbGVuZ2UgZnJvbURhdGFTb3VyY2U6
ZGF0YVNvdXJjZV07Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgW1tXZWJEZWZhdWx0UmVzb3VyY2VM
b2FkRGVsZWdhdGUgc2hhcmVkUmVzb3VyY2VMb2FkRGVsZWdhdGVdIHdlYlZpZXc6d2ViVmlldyBy
ZXNvdXJjZTppZGVudGlmaWVyIGRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmN1cnJl
bnRXZWJDaGFsbGVuZ2UgZnJvbURhdGFTb3VyY2U6ZGF0YVNvdXJjZV07Ci0gICAgfQotICAgIFtz
ZWxmIHJlbGVhc2VdOwotfQotCi0tICh2b2lkKWRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNw
b25zZSAqKXIKLXsKLSAgICBBU1NFUlQoIXJlYWNoZWRUZXJtaW5hbFN0YXRlKTsKLQotICAgIC8v
IHJldGFpbi9yZWxlYXNlIHNlbGYgaW4gdGhpcyBkZWxlZ2F0ZSBtZXRob2Qgc2luY2UgdGhlIGFk
ZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8KLSAgICAvLyBhbnl0aGluZyBpbmNsdWRpbmcgcG9z
c2libHkgcmVsZWFzaW5nIHNlbGY7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIxNgotICAg
IFtzZWxmIHJldGFpbl07IAotCi0gICAgLy8gSWYgdGhlIFVSTCBpcyBvbmUgb2Ygb3VyIHdoYWNr
eSBhcHBsZXdlYmRhdGEgVVJMcyB0aGVuCi0gICAgLy8gZmFrZSB1cCBhIHN1YnN0aXR1dGUgVVJM
IHRvIHByZXNlbnQgdG8gdGhlIGRlbGVnYXRlLgotICAgIGlmKFtXZWJEYXRhUHJvdG9jb2wgX3dl
YklzRGF0YVByb3RvY29sVVJMOltyIFVSTF1dKSB7Ci0gICAgICAgIHIgPSBbW1tOU1VSTFJlc3Bv
bnNlIGFsbG9jXSBpbml0V2l0aFVSTDpbcmVxdWVzdCBfd2ViRGF0YVJlcXVlc3RFeHRlcm5hbFVS
TF0gTUlNRVR5cGU6W3IgTUlNRVR5cGVdIGV4cGVjdGVkQ29udGVudExlbmd0aDpbciBleHBlY3Rl
ZENvbnRlbnRMZW5ndGhdIHRleHRFbmNvZGluZ05hbWU6W3IgdGV4dEVuY29kaW5nTmFtZV1dIGF1
dG9yZWxlYXNlXTsKLSAgICB9Ci0KLSAgICBbciByZXRhaW5dOwotICAgIFtyZXNwb25zZSByZWxl
YXNlXTsKLSAgICByZXNwb25zZSA9IHI7Ci0KLSAgICBbZGF0YVNvdXJjZSBfYWRkUmVzcG9uc2U6
IHJdOwotCi0gICAgW3dlYlZpZXcgX2luY3JlbWVudFByb2dyZXNzRm9yQ29ubmVjdGlvbkRlbGVn
YXRlOnNlbGYgcmVzcG9uc2U6cl07Ci0gICAgICAgIAotICAgIGlmIChpbXBsZW1lbnRhdGlvbnMu
ZGVsZWdhdGVJbXBsZW1lbnRzRGlkUmVjZWl2ZVJlc3BvbnNlKQotICAgICAgICBbcmVzb3VyY2VM
b2FkRGVsZWdhdGUgd2ViVmlldzp3ZWJWaWV3IHJlc291cmNlOmlkZW50aWZpZXIgZGlkUmVjZWl2
ZVJlc3BvbnNlOnIgZnJvbURhdGFTb3VyY2U6ZGF0YVNvdXJjZV07Ci0gICAgZWxzZQotICAgICAg
ICBbW1dlYkRlZmF1bHRSZXNvdXJjZUxvYWREZWxlZ2F0ZSBzaGFyZWRSZXNvdXJjZUxvYWREZWxl
Z2F0ZV0gd2ViVmlldzp3ZWJWaWV3IHJlc291cmNlOmlkZW50aWZpZXIgZGlkUmVjZWl2ZVJlc3Bv
bnNlOnIgZnJvbURhdGFTb3VyY2U6ZGF0YVNvdXJjZV07Ci0gICAgW3NlbGYgcmVsZWFzZV07Ci19
Ci0KLS0gKHZvaWQpZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEgbGVuZ3RoUmVjZWl2ZWQ6
KGxvbmcgbG9uZylsZW5ndGhSZWNlaXZlZAotewotICAgIC8vIFRoZSBmb2xsb3dpbmcgYXNzZXJ0
aW9ucyBhcmUgbm90IHF1aXRlIHZhbGlkIGhlcmUsIHNpbmNlIGEgc3ViY2xhc3MKLSAgICAvLyBt
aWdodCBvdmVycmlkZSBkaWRSZWNlaXZlRGF0YTogaW4gYSB3YXkgdGhhdCBpbnZhbGlkYXRlcyB0
aGVtLiBUaGlzCi0gICAgLy8gaGFwcGVucyB3aXRoIHRoZSBzdGVwcyBsaXN0ZWQgaW4gMzI2NjIx
NgotICAgIC8vIEFTU0VSVChjb24gPT0gY29ubmVjdGlvbik7Ci0gICAgLy8gQVNTRVJUKCFyZWFj
aGVkVGVybWluYWxTdGF0ZSk7Ci0KLSAgICAvLyByZXRhaW4vcmVsZWFzZSBzZWxmIGluIHRoaXMg
ZGVsZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvCi0g
ICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IHJlbGVhc2luZyBzZWxmOyBvbmUgZXhh
bXBsZSBvZiB0aGlzIGlzIDMyNjYyMTYKLSAgICBbc2VsZiByZXRhaW5dOwotICAgIAotICAgIFtz
ZWxmIGFkZERhdGE6ZGF0YV07Ci0gICAgCi0gICAgW3dlYlZpZXcgX2luY3JlbWVudFByb2dyZXNz
Rm9yQ29ubmVjdGlvbkRlbGVnYXRlOnNlbGYgZGF0YTpkYXRhXTsKLQotICAgIGlmIChpbXBsZW1l
bnRhdGlvbnMuZGVsZWdhdGVJbXBsZW1lbnRzRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgpCi0gICAg
ICAgIFtyZXNvdXJjZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OndlYlZpZXcgcmVzb3VyY2U6aWRlbnRp
ZmllciBkaWRSZWNlaXZlQ29udGVudExlbmd0aDpsZW5ndGhSZWNlaXZlZCBmcm9tRGF0YVNvdXJj
ZTpkYXRhU291cmNlXTsKLSAgICBlbHNlCi0gICAgICAgIFtbV2ViRGVmYXVsdFJlc291cmNlTG9h
ZERlbGVnYXRlIHNoYXJlZFJlc291cmNlTG9hZERlbGVnYXRlXSB3ZWJWaWV3OndlYlZpZXcgcmVz
b3VyY2U6aWRlbnRpZmllciBkaWRSZWNlaXZlQ29udGVudExlbmd0aDpsZW5ndGhSZWNlaXZlZCBm
cm9tRGF0YVNvdXJjZTpkYXRhU291cmNlXTsKLSAgICBbc2VsZiByZWxlYXNlXTsKLX0KLQotLSAo
dm9pZCl3aWxsU3RvcEJ1ZmZlcmluZ0RhdGE6KE5TRGF0YSAqKWRhdGEKLXsKLSAgICBBU1NFUlQo
cmVzb3VyY2VEYXRhID09IG5pbCk7Ci0gICAgcmVzb3VyY2VEYXRhID0gW2RhdGEgbXV0YWJsZUNv
cHldOwotfQotCi0tICh2b2lkKWRpZEZpbmlzaExvYWRpbmcKLXsKLSAgICAvLyBJZiBsb2FkIGhh
cyBiZWVuIGNhbmNlbGxlZCBhZnRlciBmaW5pc2hpbmcgKHdoaWNoIGNvdWxkIGhhcHBlbiB3aXRo
IGEgCi0gICAgLy8gamF2YXNjcmlwdCB0aGF0IGNoYW5nZXMgdGhlIHdpbmRvdyBsb2NhdGlvbiks
IGRvIG5vdGhpbmcuCi0gICAgaWYgKGNhbmNlbGxlZEZsYWcpIHsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICAKLSAgICBBU1NFUlQoIXJlYWNoZWRUZXJtaW5hbFN0YXRlKTsKLQotICAgIFtz
ZWxmIHNhdmVSZXNvdXJjZV07Ci0gICAgCi0gICAgW3dlYlZpZXcgX2NvbXBsZXRlUHJvZ3Jlc3NG
b3JDb25uZWN0aW9uRGVsZWdhdGU6c2VsZl07Ci0KLSAgICBpZiAoaW1wbGVtZW50YXRpb25zLmRl
bGVnYXRlSW1wbGVtZW50c0RpZEZpbmlzaExvYWRpbmdGcm9tRGF0YVNvdXJjZSkKLSAgICAgICAg
W3Jlc291cmNlTG9hZERlbGVnYXRlIHdlYlZpZXc6d2ViVmlldyByZXNvdXJjZTppZGVudGlmaWVy
IGRpZEZpbmlzaExvYWRpbmdGcm9tRGF0YVNvdXJjZTpkYXRhU291cmNlXTsKLSAgICBlbHNlCi0g
ICAgICAgIFtbV2ViRGVmYXVsdFJlc291cmNlTG9hZERlbGVnYXRlIHNoYXJlZFJlc291cmNlTG9h
ZERlbGVnYXRlXSB3ZWJWaWV3OndlYlZpZXcgcmVzb3VyY2U6aWRlbnRpZmllciBkaWRGaW5pc2hM
b2FkaW5nRnJvbURhdGFTb3VyY2U6ZGF0YVNvdXJjZV07Ci0KLSAgICBbc2VsZiByZWxlYXNlUmVz
b3VyY2VzXTsKLX0KLQotLSAodm9pZClkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IK
LXsKLSAgICBBU1NFUlQoIXJlYWNoZWRUZXJtaW5hbFN0YXRlKTsKLQotICAgIC8vIHJldGFpbi9y
ZWxlYXNlIHNlbGYgaW4gdGhpcyBkZWxlZ2F0ZSBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwg
cHJvY2Vzc2luZyBjYW4gZG8KLSAgICAvLyBhbnl0aGluZyBpbmNsdWRpbmcgcG9zc2libHkgcmVs
ZWFzaW5nIHNlbGY7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIxNgotICAgIFtzZWxmIHJl
dGFpbl07Ci0gICAgW3dlYlZpZXcgX2NvbXBsZXRlUHJvZ3Jlc3NGb3JDb25uZWN0aW9uRGVsZWdh
dGU6c2VsZl07Ci0KLSAgICBbW3dlYlZpZXcgX3Jlc291cmNlTG9hZERlbGVnYXRlRm9yd2FyZGVy
XSB3ZWJWaWV3OndlYlZpZXcgcmVzb3VyY2U6aWRlbnRpZmllciBkaWRGYWlsTG9hZGluZ1dpdGhF
cnJvcjplcnJvciBmcm9tRGF0YVNvdXJjZTpkYXRhU291cmNlXTsKLQotICAgIFtzZWxmIHJlbGVh
c2VSZXNvdXJjZXNdOwotICAgIFtzZWxmIHJlbGVhc2VdOwotfQotCi0tIChOU0NhY2hlZFVSTFJl
c3BvbnNlICopd2lsbENhY2hlUmVzcG9uc2U6KE5TQ2FjaGVkVVJMUmVzcG9uc2UgKiljYWNoZWRS
ZXNwb25zZQotewotICAgIC8vIFdoZW4gaW4gcHJpdmF0ZSBicm93c2luZyBtb2RlLCBwcmV2ZW50
IGNhY2hpbmcgdG8gZGlzawotICAgIGlmIChbY2FjaGVkUmVzcG9uc2Ugc3RvcmFnZVBvbGljeV0g
PT0gTlNVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkICYmIFtbd2ViVmlldyBwcmVmZXJlbmNlc10gcHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZF0pIHsKLSAgICAgICAgY2FjaGVkUmVzcG9uc2UgPSBbW1tOU0Nh
Y2hlZFVSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFJlc3BvbnNlOltjYWNoZWRSZXNwb25zZSBy
ZXNwb25zZV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhOltjYWNoZWRSZXNwb25zZSBkYXRhXQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNl
ckluZm86W2NhY2hlZFJlc3BvbnNlIHVzZXJJbmZvXQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2VQb2xpY3k6TlNVUkxDYWNo
ZVN0b3JhZ2VBbGxvd2VkSW5NZW1vcnlPbmx5XSBhdXRvcmVsZWFzZV07Ci0gICAgfQotICAgIHJl
dHVybiBjYWNoZWRSZXNwb25zZTsKLX0KLQotLSAoTlNVUkxSZXF1ZXN0ICopY29ubmVjdGlvbjoo
TlNVUkxDb25uZWN0aW9uICopY29uIHdpbGxTZW5kUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopbmV3
UmVxdWVzdCByZWRpcmVjdFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVkaXJlY3RSZXNwb25z
ZQotewotICAgIEFTU0VSVChjb24gPT0gY29ubmVjdGlvbik7Ci0gICAgKytpbk5TVVJMQ29ubmVj
dGlvbkNhbGxiYWNrOwotICAgIE5TVVJMUmVxdWVzdCAqcmVzdWx0ID0gW3NlbGYgd2lsbFNlbmRS
ZXF1ZXN0Om5ld1JlcXVlc3QgcmVkaXJlY3RSZXNwb25zZTpyZWRpcmVjdFJlc3BvbnNlXTsKLSAg
ICAtLWluTlNVUkxDb25uZWN0aW9uQ2FsbGJhY2s7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
LSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb24gZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxl
bmdlCi17Ci0gICAgQVNTRVJUKGNvbiA9PSBjb25uZWN0aW9uKTsKLSAgICArK2luTlNVUkxDb25u
ZWN0aW9uQ2FsbGJhY2s7Ci0gICAgW3NlbGYgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOmNoYWxsZW5nZV07Ci0gICAgLS1pbk5TVVJMQ29ubmVjdGlvbkNhbGxiYWNrOwotfQotCi0t
ICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbiBkaWRDYW5jZWxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5n
ZQotewotICAgIEFTU0VSVChjb24gPT0gY29ubmVjdGlvbik7Ci0gICAgKytpbk5TVVJMQ29ubmVj
dGlvbkNhbGxiYWNrOwotICAgIFtzZWxmIGRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OmNoYWxsZW5nZV07Ci0gICAgLS1pbk5TVVJMQ29ubmVjdGlvbkNhbGxiYWNrOwotfQotCi0tICh2
b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbiBkaWRSZWNlaXZlUmVzcG9uc2U6
KE5TVVJMUmVzcG9uc2UgKilyCi17Ci0gICAgQVNTRVJUKGNvbiA9PSBjb25uZWN0aW9uKTsKLSAg
ICArK2luTlNVUkxDb25uZWN0aW9uQ2FsbGJhY2s7Ci0gICAgW3NlbGYgZGlkUmVjZWl2ZVJlc3Bv
bnNlOnJdOwotICAgIC0taW5OU1VSTENvbm5lY3Rpb25DYWxsYmFjazsKLX0KLQotLSAodm9pZClj
b25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAq
KWRhdGEgbGVuZ3RoUmVjZWl2ZWQ6KGxvbmcgbG9uZylsZW5ndGhSZWNlaXZlZAotewotICAgIEFT
U0VSVChjb24gPT0gY29ubmVjdGlvbik7Ci0gICAgKytpbk5TVVJMQ29ubmVjdGlvbkNhbGxiYWNr
OwotICAgIFtzZWxmIGRpZFJlY2VpdmVEYXRhOmRhdGEgbGVuZ3RoUmVjZWl2ZWQ6bGVuZ3RoUmVj
ZWl2ZWRdOwotICAgIC0taW5OU1VSTENvbm5lY3Rpb25DYWxsYmFjazsKLX0KLQotLSAodm9pZClj
b25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb24gd2lsbFN0b3BCdWZmZXJpbmdEYXRhOihO
U0RhdGEgKilkYXRhCi17Ci0gICAgQVNTRVJUKGNvbiA9PSBjb25uZWN0aW9uKTsKLSAgICArK2lu
TlNVUkxDb25uZWN0aW9uQ2FsbGJhY2s7Ci0gICAgW3NlbGYgd2lsbFN0b3BCdWZmZXJpbmdEYXRh
OmRhdGFdOwotICAgIC0taW5OU1VSTENvbm5lY3Rpb25DYWxsYmFjazsKLX0KLQotLSAodm9pZClj
b25uZWN0aW9uRGlkRmluaXNoTG9hZGluZzooTlNVUkxDb25uZWN0aW9uICopY29uCi17Ci0gICAg
Ly8gZG9uJ3Qgd29ycnkgYWJvdXQgY2hlY2tpbmcgY29ubmVjdGlvbiBjb25zaXN0ZW5jeSBpZiB0
aGlzIGxvYWQKLSAgICAvLyBnb3QgY2FuY2VsbGVkIHdoaWxlIGZpbmlzaGluZy4KLSAgICBBU1NF
UlQoY2FuY2VsbGVkRmxhZyB8fCBjb24gPT0gY29ubmVjdGlvbik7Ci0gICAgKytpbk5TVVJMQ29u
bmVjdGlvbkNhbGxiYWNrOwotICAgIFtzZWxmIGRpZEZpbmlzaExvYWRpbmddOwotICAgIC0taW5O
U1VSTENvbm5lY3Rpb25DYWxsYmFjazsKLX0KLQotLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENv
bm5lY3Rpb24gKiljb24gZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCi17Ci0gICAg
QVNTRVJUKGNvbiA9PSBjb25uZWN0aW9uKTsKLSAgICArK2luTlNVUkxDb25uZWN0aW9uQ2FsbGJh
Y2s7Ci0gICAgW3NlbGYgZGlkRmFpbFdpdGhFcnJvcjplcnJvcl07Ci0gICAgLS1pbk5TVVJMQ29u
bmVjdGlvbkNhbGxiYWNrOwotfQotCi0tIChOU0NhY2hlZFVSTFJlc3BvbnNlICopY29ubmVjdGlv
bjooTlNVUkxDb25uZWN0aW9uICopY29uIHdpbGxDYWNoZVJlc3BvbnNlOihOU0NhY2hlZFVSTFJl
c3BvbnNlICopY2FjaGVkUmVzcG9uc2UKLXsKLSNpZm5kZWYgTkRFQlVHCi0gICAgaWYgKGNvbm5l
Y3Rpb24gPT0gbmlsICYmIGlzSW5pdGlhbGl6aW5nQ29ubmVjdGlvbikgewotICAgICAgICBFUlJP
UigiY29ubmVjdGlvbjp3aWxsQ2FjaGVSZXNwb25zZTogd2FzIGNhbGxlZCBpbnNpZGUgb2YgW05T
VVJMQ29ubmVjdGlvbiBpbml0V2l0aFJlcXVlc3Q6ZGVsZWdhdGU6XSAoNDA2NzYyNTApIik7Ci0g
ICAgfQotI2VuZGlmCi0gICAgKytpbk5TVVJMQ29ubmVjdGlvbkNhbGxiYWNrOwotICAgIE5TQ2Fj
aGVkVVJMUmVzcG9uc2UgKnJlc3VsdCA9IFtzZWxmIHdpbGxDYWNoZVJlc3BvbnNlOmNhY2hlZFJl
c3BvbnNlXTsKLSAgICAtLWluTlNVUkxDb25uZWN0aW9uQ2FsbGJhY2s7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotLSAodm9pZCljYW5jZWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgotewot
ICAgIEFTU0VSVCghcmVhY2hlZFRlcm1pbmFsU3RhdGUpOwotCi0gICAgLy8gVGhpcyBmbGFnIHBy
ZXZlbnRzIGJhZCBiZWh2aW9yIHdoZW4gbG9hZHMgdGhhdCBmaW5pc2ggY2F1c2UgdGhlCi0gICAg
Ly8gbG9hZCBpdHNlbGYgdG8gYmUgY2FuY2VsbGVkICh3aGljaCBjb3VsZCBoYXBwZW4gd2l0aCBh
IGphdmFzY3JpcHQgdGhhdCAKLSAgICAvLyBjaGFuZ2VzIHRoZSB3aW5kb3cgbG9jYXRpb24pLiBU
aGlzIGlzIHVzZWQgdG8gcHJldmVudCBib3RoIHRoZSBib2R5Ci0gICAgLy8gb2YgdGhpcyBtZXRo
b2QgYW5kIHRoZSBib2R5IG9mIGNvbm5lY3Rpb25EaWRGaW5pc2hMb2FkaW5nOiBydW5uaW5nCi0g
ICAgLy8gZm9yIGEgc2luZ2xlIGRlbGVnYXRlLiBDYW5jZWxsaW5nIHdpbnMuCi0gICAgY2FuY2Vs
bGVkRmxhZyA9IFlFUzsKLSAgICAKLSAgICBbY3VycmVudENvbm5lY3Rpb25DaGFsbGVuZ2UgcmVs
ZWFzZV07Ci0gICAgY3VycmVudENvbm5lY3Rpb25DaGFsbGVuZ2UgPSBuaWw7Ci0gICAgCi0gICAg
W2N1cnJlbnRXZWJDaGFsbGVuZ2UgcmVsZWFzZV07Ci0gICAgY3VycmVudFdlYkNoYWxsZW5nZSA9
IG5pbDsKLQotICAgIFtOU09iamVjdCBjYW5jZWxQcmV2aW91c1BlcmZvcm1SZXF1ZXN0c1dpdGhU
YXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoZGVsaXZlclJlc291cmNlKSBvYmplY3Q6bmls
XTsKLSAgICBbY29ubmVjdGlvbiBjYW5jZWxdOwotCi0gICAgW3dlYlZpZXcgX2NvbXBsZXRlUHJv
Z3Jlc3NGb3JDb25uZWN0aW9uRGVsZWdhdGU6c2VsZl07Ci0KLSAgICBpZiAoZXJyb3IpIHsKLSAg
ICAgICAgW1t3ZWJWaWV3IF9yZXNvdXJjZUxvYWREZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3
ZWJWaWV3IHJlc291cmNlOmlkZW50aWZpZXIgZGlkRmFpbExvYWRpbmdXaXRoRXJyb3I6ZXJyb3Ig
ZnJvbURhdGFTb3VyY2U6ZGF0YVNvdXJjZV07Ci0gICAgfQotCi0gICAgW3NlbGYgcmVsZWFzZVJl
c291cmNlc107Ci19Ci0KLS0gKHZvaWQpY2FuY2VsCi17Ci0gICAgaWYgKCFyZWFjaGVkVGVybWlu
YWxTdGF0ZSkgewotICAgICAgICBbc2VsZiBjYW5jZWxXaXRoRXJyb3I6W3NlbGYgY2FuY2VsbGVk
RXJyb3JdXTsKLSAgICB9Ci19Ci0KLS0gKE5TRXJyb3IgKiljYW5jZWxsZWRFcnJvcgotewotICAg
IHJldHVybiBbTlNFcnJvciBfd2ViS2l0RXJyb3JXaXRoRG9tYWluOk5TVVJMRXJyb3JEb21haW4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTpOU1VSTEVycm9yQ2Fu
Y2VsbGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVUkw6W3JlcXVl
c3QgVVJMXV07Ci19Ci0KLS0gKHZvaWQpc2V0SWRlbnRpZmllcjogaWRlbnQKLXsKLSAgICBpZiAo
aWRlbnRpZmllciAhPSBpZGVudCl7Ci0gICAgICAgIFtpZGVudGlmaWVyIHJlbGVhc2VdOwotICAg
ICAgICBpZGVudGlmaWVyID0gW2lkZW50IHJldGFpbl07Ci0gICAgfQotfQotCi0tIChOU1VSTFJl
c3BvbnNlICopcmVzcG9uc2UKLXsKLSAgICByZXR1cm4gcmVzcG9uc2U7Ci19Ci0KLSsgKEJPT0wp
aW5Db25uZWN0aW9uQ2FsbGJhY2sKLXsKLSAgICByZXR1cm4gaW5OU1VSTENvbm5lY3Rpb25DYWxs
YmFjayAhPSAwOwotfQotCi1AZW5kCkluZGV4OiAuL1dlYlZpZXcuc3VicHJvai9XZWJEYXRhU291
cmNlLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYktpdC9XZWJWaWV3LnN1YnBy
b2ovV2ViRGF0YVNvdXJjZS5tLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIwNQpkaWZmIC1wIC11
IC1wIC11IC1yMS4yMDUgLi9XZWJWaWV3LnN1YnByb2ovV2ViRGF0YVNvdXJjZS5tCi0tLSAuL1dl
YlZpZXcuc3VicHJvai9XZWJEYXRhU291cmNlLm0JMTQgSnVuIDIwMDUgMDA6MjU6MTggLTAwMDAJ
MS4yMDUKKysrIC4vV2ViVmlldy5zdWJwcm9qL1dlYkRhdGFTb3VyY2UubQkzMCBKdW4gMjAwNSAx
NDo1NjozNyAtMDAwMApAQCAtNTIsNyArNTIsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYktpdExv
Z2dpbmcuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXROU1N0cmluZ0V4dHJhcy5oPgogI2ltcG9y
dCA8V2ViS2l0L1dlYktpdFN0YXRpc3RpY3NQcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2Vi
TWFpblJlc291cmNlQ2xpZW50Lmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViTWFpblJlc291cmNlTG9h
ZGVyLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViTlNPYmplY3RFeHRyYXMuaD4KICNpbXBvcnQgPFdl
YktpdC9XZWJOU1VSTEV4dHJhcy5oPgogI2lmbmRlZiBPTUlUX1RJR0VSX0ZFQVRVUkVTCkBAIC04
MCw5ICs4MCw5IEBACiAgICAgW3JlcXVlc3QgcmVsZWFzZV07CiAgICAgW29yaWdpbmFsUmVxdWVz
dCByZWxlYXNlXTsKICAgICBbb3JpZ2luYWxSZXF1ZXN0Q29weSByZWxlYXNlXTsKLSAgICBbbWFp
bkNsaWVudCByZWxlYXNlXTsKLSAgICBbc3VicmVzb3VyY2VDbGllbnRzIHJlbGVhc2VdOwotICAg
IFtwbHVnSW5TdHJlYW1DbGllbnRzIHJlbGVhc2VdOworICAgIFttYWluUmVzb3VyY2VMb2FkZXIg
cmVsZWFzZV07CisgICAgW3N1YnJlc291cmNlTG9hZGVycyByZWxlYXNlXTsKKyAgICBbcGx1Z0lu
U3RyZWFtTG9hZGVycyByZWxlYXNlXTsKICAgICBbcGFnZVRpdGxlIHJlbGVhc2VdOwogICAgIFty
ZXNwb25zZSByZWxlYXNlXTsKICAgICBbbWFpbkRvY3VtZW50RXJyb3IgcmVsZWFzZV07CkBAIC0z
MDAsNyArMzAwLDcgQEAKICAgICB9IGVsc2UgewogICAgICAgICBbX3ByaXZhdGUtPndlYlZpZXcg
cmVsZWFzZV07CiAgICAgICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBjbGVhbmVzdCB0byBzZXQg
d2ViVmlldyB0byBuaWwgaGVyZS4gS2VlcGluZyBhIG5vbi1yZXRhaW5lZCByZWZlcmVuY2UKLSAg
ICAgICAgLy8gdG8gdGhlIFdlYlZpZXcgaXMgZGFuZ2Vyb3VzLiBCdXQgV2ViU3VicmVzb3VyY2VD
bGllbnQgYWN0dWFsbHkgZGVwZW5kcyBvbiB0aGlzIG5vbi1yZXRhaW5lZAorICAgICAgICAvLyB0
byB0aGUgV2ViVmlldyBpcyBkYW5nZXJvdXMuIEJ1dCBXZWJTdWJyZXNvdXJjZUxvYWRlciBhY3R1
YWxseSBkZXBlbmRzIG9uIHRoaXMgbm9uLXJldGFpbmVkCiAgICAgICAgIC8vIHJlZmVyZW5jZSB3
aGVuIHN0YXJ0aW5nIGxvYWRzIGFmdGVyIHRoZSBkYXRhIHNvdXJjZSBoYXMgc3RvcHBwZWQgbG9h
ZGluZy4KICAgICAgICAgW3NlbGYgcmVsZWFzZV07CiAgICAgfQpAQCAtMzA4LDcgKzMwOCw3IEBA
CiAKIC0gKHZvaWQpX3VwZGF0ZUxvYWRpbmcKIHsKLSAgICBbc2VsZiBfc2V0TG9hZGluZzpfcHJp
dmF0ZS0+bWFpbkNsaWVudCB8fCBbX3ByaXZhdGUtPnN1YnJlc291cmNlQ2xpZW50cyBjb3VudF1d
OworICAgIFtzZWxmIF9zZXRMb2FkaW5nOl9wcml2YXRlLT5tYWluUmVzb3VyY2VMb2FkZXIgfHwg
W19wcml2YXRlLT5zdWJyZXNvdXJjZUxvYWRlcnMgY291bnRdXTsKIH0KIAogLSAodm9pZClfc2V0
V2ViVmlldzogKFdlYlZpZXcgKil3ZWJWaWV3CkBAIC0zMzksMTAgKzMzOSwxMCBAQAogCS8vIHRo
ZXJlJ3Mgbm8gY2FsbGJhY2sgZm9yIHRoYXQuCiAgICAgICAgIFtzZWxmIF9sb2FkSWNvbl07CiAK
LSAgICAgICAgaWYgKF9wcml2YXRlLT5tYWluQ2xpZW50ICE9IG5pbCkgewotICAgICAgICAgICAg
W3NlbGYgX3NldERhdGE6W19wcml2YXRlLT5tYWluQ2xpZW50IHJlc291cmNlRGF0YV1dOwotICAg
ICAgICAgICAgW19wcml2YXRlLT5tYWluQ2xpZW50IHJlbGVhc2VdOwotICAgICAgICAgICAgX3By
aXZhdGUtPm1haW5DbGllbnQgPSBuaWw7CisgICAgICAgIGlmIChfcHJpdmF0ZS0+bWFpblJlc291
cmNlTG9hZGVyICE9IG5pbCkgeworICAgICAgICAgICAgW3NlbGYgX3NldERhdGE6W19wcml2YXRl
LT5tYWluUmVzb3VyY2VMb2FkZXIgcmVzb3VyY2VEYXRhXV07CisgICAgICAgICAgICBbX3ByaXZh
dGUtPm1haW5SZXNvdXJjZUxvYWRlciByZWxlYXNlXTsKKyAgICAgICAgICAgIF9wcml2YXRlLT5t
YWluUmVzb3VyY2VMb2FkZXIgPSBuaWw7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIFtz
ZWxmIF91cGRhdGVMb2FkaW5nXTsKQEAgLTM4OSw3ICszODksNyBAQAogICAgIGlmIChwYWdlQ2Fj
aGUpewogICAgICAgICBfcHJpdmF0ZS0+bG9hZGluZ0Zyb21QYWdlQ2FjaGUgPSBZRVM7CiAgICAg
ICAgIFtzZWxmIF9jb21taXRJZlJlYWR5OiBwYWdlQ2FjaGVdOwotICAgIH0gZWxzZSBpZiAoIV9w
cml2YXRlLT5tYWluQ2xpZW50KSB7CisgICAgfSBlbHNlIGlmICghX3ByaXZhdGUtPm1haW5SZXNv
dXJjZUxvYWRlcikgewogICAgICAgICBfcHJpdmF0ZS0+bG9hZGluZ0Zyb21QYWdlQ2FjaGUgPSBO
TzsKICAgICAgICAgCiAgICAgICAgIGlkIGlkZW50aWZpZXI7CkBAIC0zOTksNDYgKzM5OSw0NiBA
QAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpZGVudGlmaWVyID0gW1tXZWJEZWZhdWx0UmVz
b3VyY2VMb2FkRGVsZWdhdGUgc2hhcmVkUmVzb3VyY2VMb2FkRGVsZWdhdGVdIHdlYlZpZXc6X3By
aXZhdGUtPndlYlZpZXcgaWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0Ol9wcml2YXRlLT5vcmln
aW5hbFJlcXVlc3QgZnJvbURhdGFTb3VyY2U6c2VsZl07CiAgICAgICAgICAgICAKLSAgICAgICAg
X3ByaXZhdGUtPm1haW5DbGllbnQgPSBbW1dlYk1haW5SZXNvdXJjZUNsaWVudCBhbGxvY10gaW5p
dFdpdGhEYXRhU291cmNlOnNlbGZdOwotICAgICAgICBbX3ByaXZhdGUtPm1haW5DbGllbnQgc2V0
SWRlbnRpZmllcjogaWRlbnRpZmllcl07CisgICAgICAgIF9wcml2YXRlLT5tYWluUmVzb3VyY2VM
b2FkZXIgPSBbW1dlYk1haW5SZXNvdXJjZUxvYWRlciBhbGxvY10gaW5pdFdpdGhEYXRhU291cmNl
OnNlbGZdOworICAgICAgICBbX3ByaXZhdGUtPm1haW5SZXNvdXJjZUxvYWRlciBzZXRJZGVudGlm
aWVyOiBpZGVudGlmaWVyXTsKICAgICAgICAgW1tzZWxmIHdlYkZyYW1lXSBfYWRkRXh0cmFGaWVs
ZHNUb1JlcXVlc3Q6X3ByaXZhdGUtPnJlcXVlc3QgYWx3YXlzRnJvbVJlcXVlc3Q6IE5PXTsKLSAg
ICAgICAgaWYgKCFbX3ByaXZhdGUtPm1haW5DbGllbnQgbG9hZFdpdGhSZXF1ZXN0Ol9wcml2YXRl
LT5yZXF1ZXN0XSkgeworICAgICAgICBpZiAoIVtfcHJpdmF0ZS0+bWFpblJlc291cmNlTG9hZGVy
IGxvYWRXaXRoUmVxdWVzdDpfcHJpdmF0ZS0+cmVxdWVzdF0pIHsKICAgICAgICAgICAgIEVSUk9S
KCJjb3VsZCBub3QgY3JlYXRlIFdlYlJlc291cmNlSGFuZGxlIGZvciBVUkwgJUAgLS0gc2hvdWxk
IGJlIGNhdWdodCBieSBwb2xpY3kgaGFuZGxlciBsZXZlbCIsCiAgICAgICAgICAgICAgICAgW19w
cml2YXRlLT5yZXF1ZXN0IFVSTF0pOwotICAgICAgICAgICAgW19wcml2YXRlLT5tYWluQ2xpZW50
IHJlbGVhc2VdOwotICAgICAgICAgICAgX3ByaXZhdGUtPm1haW5DbGllbnQgPSBuaWw7CisgICAg
ICAgICAgICBbX3ByaXZhdGUtPm1haW5SZXNvdXJjZUxvYWRlciByZWxlYXNlXTsKKyAgICAgICAg
ICAgIF9wcml2YXRlLT5tYWluUmVzb3VyY2VMb2FkZXIgPSBuaWw7CiAgICAgICAgICAgICBbc2Vs
ZiBfdXBkYXRlTG9hZGluZ107CiAgICAgICAgIH0KICAgICB9CiB9CiAKLS0gKHZvaWQpX2FkZFN1
YnJlc291cmNlQ2xpZW50OihXZWJCYXNlUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZSAqKWNsaWVudAor
LSAodm9pZClfYWRkU3VicmVzb3VyY2VMb2FkZXI6KFdlYkxvYWRlciAqKWxvYWRlcgogewotICAg
IGlmIChfcHJpdmF0ZS0+c3VicmVzb3VyY2VDbGllbnRzID09IG5pbCkgewotICAgICAgICBfcHJp
dmF0ZS0+c3VicmVzb3VyY2VDbGllbnRzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF07
CisgICAgaWYgKF9wcml2YXRlLT5zdWJyZXNvdXJjZUxvYWRlcnMgPT0gbmlsKSB7CisgICAgICAg
IF9wcml2YXRlLT5zdWJyZXNvdXJjZUxvYWRlcnMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0XTsKICAgICB9Ci0gICAgW19wcml2YXRlLT5zdWJyZXNvdXJjZUNsaWVudHMgYWRkT2JqZWN0
OmNsaWVudF07CisgICAgW19wcml2YXRlLT5zdWJyZXNvdXJjZUxvYWRlcnMgYWRkT2JqZWN0Omxv
YWRlcl07CiAgICAgW3NlbGYgX3NldExvYWRpbmc6WUVTXTsKIH0KIAotLSAodm9pZClfcmVtb3Zl
U3VicmVzb3VyY2VDbGllbnQ6KFdlYkJhc2VSZXNvdXJjZUhhbmRsZURlbGVnYXRlICopY2xpZW50
CistICh2b2lkKV9yZW1vdmVTdWJyZXNvdXJjZUxvYWRlcjooV2ViTG9hZGVyICopbG9hZGVyCiB7
Ci0gICAgW19wcml2YXRlLT5zdWJyZXNvdXJjZUNsaWVudHMgcmVtb3ZlT2JqZWN0OmNsaWVudF07
CisgICAgW19wcml2YXRlLT5zdWJyZXNvdXJjZUxvYWRlcnMgcmVtb3ZlT2JqZWN0OmxvYWRlcl07
CiAgICAgW3NlbGYgX3VwZGF0ZUxvYWRpbmddOwogfQogCi0tICh2b2lkKV9hZGRQbHVnSW5TdHJl
YW1DbGllbnQ6KFdlYkJhc2VSZXNvdXJjZUhhbmRsZURlbGVnYXRlICopY2xpZW50CistICh2b2lk
KV9hZGRQbHVnSW5TdHJlYW1Mb2FkZXI6KFdlYkxvYWRlciAqKWxvYWRlcgogewotICAgIGlmIChf
cHJpdmF0ZS0+cGx1Z0luU3RyZWFtQ2xpZW50cyA9PSBuaWwpIHsKLSAgICAgICAgX3ByaXZhdGUt
PnBsdWdJblN0cmVhbUNsaWVudHMgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKKyAg
ICBpZiAoX3ByaXZhdGUtPnBsdWdJblN0cmVhbUxvYWRlcnMgPT0gbmlsKSB7CisgICAgICAgIF9w
cml2YXRlLT5wbHVnSW5TdHJlYW1Mb2FkZXJzID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dF07CiAgICAgfQotICAgIFtfcHJpdmF0ZS0+cGx1Z0luU3RyZWFtQ2xpZW50cyBhZGRPYmplY3Q6
Y2xpZW50XTsKKyAgICBbX3ByaXZhdGUtPnBsdWdJblN0cmVhbUxvYWRlcnMgYWRkT2JqZWN0Omxv
YWRlcl07CiAgICAgW3NlbGYgX3NldExvYWRpbmc6WUVTXTsKIH0KIAotLSAodm9pZClfcmVtb3Zl
UGx1Z0luU3RyZWFtQ2xpZW50OihXZWJCYXNlUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZSAqKWNsaWVu
dAorLSAodm9pZClfcmVtb3ZlUGx1Z0luU3RyZWFtTG9hZGVyOihXZWJMb2FkZXIgKilsb2FkZXIK
IHsKLSAgICBbX3ByaXZhdGUtPnBsdWdJblN0cmVhbUNsaWVudHMgcmVtb3ZlT2JqZWN0OmNsaWVu
dF07CisgICAgW19wcml2YXRlLT5wbHVnSW5TdHJlYW1Mb2FkZXJzIHJlbW92ZU9iamVjdDpsb2Fk
ZXJdOwogICAgIFtzZWxmIF91cGRhdGVMb2FkaW5nXTsKIH0KIApAQCAtNDU5LDkgKzQ1OSw5IEBA
CiAKICAgICBfcHJpdmF0ZS0+c3RvcHBpbmcgPSBZRVM7CiAKLSAgICBpZihfcHJpdmF0ZS0+bWFp
bkNsaWVudCl7CisgICAgaWYoX3ByaXZhdGUtPm1haW5SZXNvdXJjZUxvYWRlcil7CiAgICAgICAg
IC8vIFN0b3AgdGhlIG1haW4gaGFuZGxlIGFuZCBsZXQgaXQgc2V0IHRoZSBjYW5jZWxsZWQgZXJy
b3IuCi0gICAgICAgIFtfcHJpdmF0ZS0+bWFpbkNsaWVudCBjYW5jZWxdOworICAgICAgICBbX3By
aXZhdGUtPm1haW5SZXNvdXJjZUxvYWRlciBjYW5jZWxdOwogICAgIH1lbHNlewogICAgICAgICAv
LyBNYWluIGhhbmRsZSBpcyBhbHJlYWR5IGRvbmUuIFNldCB0aGUgY2FuY2VsbGVkIGVycm9yLgog
ICAgICAgICBOU0Vycm9yICpjYW5jZWxsZWRFcnJvciA9IFtOU0Vycm9yIF93ZWJLaXRFcnJvcldp
dGhEb21haW46TlNVUkxFcnJvckRvbWFpbgpAQCAtNDcwLDkgKzQ3MCw5IEBACiAgICAgICAgIFtz
ZWxmIF9zZXRNYWluRG9jdW1lbnRFcnJvcjpjYW5jZWxsZWRFcnJvcl07CiAgICAgfQogICAgIAot
ICAgIE5TQXJyYXkgKmNsaWVudHMgPSBbX3ByaXZhdGUtPnN1YnJlc291cmNlQ2xpZW50cyBjb3B5
XTsKLSAgICBbY2xpZW50cyBtYWtlT2JqZWN0c1BlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoY2Fu
Y2VsKV07Ci0gICAgW2NsaWVudHMgcmVsZWFzZV07CisgICAgTlNBcnJheSAqbG9hZGVycyA9IFtf
cHJpdmF0ZS0+c3VicmVzb3VyY2VMb2FkZXJzIGNvcHldOworICAgIFtsb2FkZXJzIG1ha2VPYmpl
Y3RzUGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihjYW5jZWwpXTsKKyAgICBbbG9hZGVycyByZWxl
YXNlXTsKICAgICAKICAgICBpZiAoX3ByaXZhdGUtPmNvbW1pdHRlZCkgewogCVtbc2VsZiBfYnJp
ZGdlXSBzdG9wTG9hZGluZ107ICAgICAgICAKQEAgLTkzMiwxNiArOTMyLDE2IEBACiAgICAgfQog
CiAgICAgX3ByaXZhdGUtPmRlZmVyc0NhbGxiYWNrcyA9IGRlZmVyczsKLSAgICBbX3ByaXZhdGUt
Pm1haW5DbGllbnQgc2V0RGVmZXJzQ2FsbGJhY2tzOmRlZmVyc107CisgICAgW19wcml2YXRlLT5t
YWluUmVzb3VyY2VMb2FkZXIgc2V0RGVmZXJzQ2FsbGJhY2tzOmRlZmVyc107CiAKLSAgICBOU0Vu
dW1lcmF0b3IgKmUgPSBbX3ByaXZhdGUtPnN1YnJlc291cmNlQ2xpZW50cyBvYmplY3RFbnVtZXJh
dG9yXTsKLSAgICBXZWJCYXNlUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZSAqY2xpZW50OwotICAgIHdo
aWxlICgoY2xpZW50ID0gW2UgbmV4dE9iamVjdF0pKSB7Ci0gICAgICAgIFtjbGllbnQgc2V0RGVm
ZXJzQ2FsbGJhY2tzOmRlZmVyc107Ci0gICAgfQotICAgIGUgPSBbX3ByaXZhdGUtPnBsdWdJblN0
cmVhbUNsaWVudHMgb2JqZWN0RW51bWVyYXRvcl07Ci0gICAgd2hpbGUgKChjbGllbnQgPSBbZSBu
ZXh0T2JqZWN0XSkpIHsKLSAgICAgICAgW2NsaWVudCBzZXREZWZlcnNDYWxsYmFja3M6ZGVmZXJz
XTsKKyAgICBOU0VudW1lcmF0b3IgKmUgPSBbX3ByaXZhdGUtPnN1YnJlc291cmNlTG9hZGVycyBv
YmplY3RFbnVtZXJhdG9yXTsKKyAgICBXZWJMb2FkZXIgKmxvYWRlcjsKKyAgICB3aGlsZSAoKGxv
YWRlciA9IFtlIG5leHRPYmplY3RdKSkgeworICAgICAgICBbbG9hZGVyIHNldERlZmVyc0NhbGxi
YWNrczpkZWZlcnNdOworICAgIH0KKyAgICBlID0gW19wcml2YXRlLT5wbHVnSW5TdHJlYW1Mb2Fk
ZXJzIG9iamVjdEVudW1lcmF0b3JdOworICAgIHdoaWxlICgobG9hZGVyID0gW2UgbmV4dE9iamVj
dF0pKSB7CisgICAgICAgIFtsb2FkZXIgc2V0RGVmZXJzQ2FsbGJhY2tzOmRlZmVyc107CiAgICAg
fQogCiAgICAgLy8gSXQncyBPSyB0byB1c2UgdGhlIGludGVybmFsIHZlcnNpb24gb2YgZ2V0dGlu
ZyB0aGUgY2hpbGQKQEAgLTEwMjgsNyArMTAyOCw3IEBACiAKIC0gKHZvaWQpX3N0b3BMb2FkaW5n
V2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKIHsKLSAgICBbX3ByaXZhdGUtPm1haW5DbGllbnQg
Y2FuY2VsV2l0aEVycm9yOmVycm9yXTsKKyAgICBbX3ByaXZhdGUtPm1haW5SZXNvdXJjZUxvYWRl
ciBjYW5jZWxXaXRoRXJyb3I6ZXJyb3JdOwogfQogCiAtICh2b2lkKV9zZXRXZWJGcmFtZTooV2Vi
RnJhbWUgKilmcmFtZQpAQCAtMTExMiw3ICsxMTEyLDcgQEAKIAogLSAoTlNEYXRhICopZGF0YQog
ewotICAgIHJldHVybiBfcHJpdmF0ZS0+cmVzb3VyY2VEYXRhICE9IG5pbCA/IF9wcml2YXRlLT5y
ZXNvdXJjZURhdGEgOiBbX3ByaXZhdGUtPm1haW5DbGllbnQgcmVzb3VyY2VEYXRhXTsKKyAgICBy
ZXR1cm4gX3ByaXZhdGUtPnJlc291cmNlRGF0YSAhPSBuaWwgPyBfcHJpdmF0ZS0+cmVzb3VyY2VE
YXRhIDogW19wcml2YXRlLT5tYWluUmVzb3VyY2VMb2FkZXIgcmVzb3VyY2VEYXRhXTsKIH0KIAog
LSAoaWQgPFdlYkRvY3VtZW50UmVwcmVzZW50YXRpb24+KSByZXByZXNlbnRhdGlvbgpAQCAtMTE2
NSw3ICsxMTY1LDcgQEAKICAgICAgICAgaWYgKCFfcHJpdmF0ZS0+cHJpbWFyeUxvYWRDb21wbGV0
ZSAmJiBfcHJpdmF0ZS0+bG9hZGluZykgewogICAgICAgICAgICAgcmV0dXJuIFlFUzsKICAgICAg
ICAgfQotICAgICAgICBpZiAoW19wcml2YXRlLT5zdWJyZXNvdXJjZUNsaWVudHMgY291bnRdKSB7
CisgICAgICAgIGlmIChbX3ByaXZhdGUtPnN1YnJlc291cmNlTG9hZGVycyBjb3VudF0pIHsKICAg
ICAgICAgICAgIHJldHVybiBZRVM7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFbW1tzZWxmIHdl
YkZyYW1lXSBfYnJpZGdlXSBkb25lUHJvY2Vzc2luZ0RhdGFdKQpJbmRleDogLi9XZWJWaWV3LnN1
YnByb2ovV2ViRGF0YVNvdXJjZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jv
b3QvV2ViS2l0L1dlYlZpZXcuc3VicHJvai9XZWJEYXRhU291cmNlUHJpdmF0ZS5oLHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjE0MgpkaWZmIC1wIC11IC1wIC11IC1yMS4xNDIgLi9XZWJWaWV3LnN1
YnByb2ovV2ViRGF0YVNvdXJjZVByaXZhdGUuaAotLS0gLi9XZWJWaWV3LnN1YnByb2ovV2ViRGF0
YVNvdXJjZVByaXZhdGUuaAk1IEp1biAyMDA1IDE3OjU0OjQ2IC0wMDAwCTEuMTQyCisrKyAuL1dl
YlZpZXcuc3VicHJvai9XZWJEYXRhU291cmNlUHJpdmF0ZS5oCTMwIEp1biAyMDA1IDE0OjU2OjM3
IC0wMDAwCkBAIC0zNSwxMSArMzUsMTEgQEAKIEBjbGFzcyBOU1VSTFJlcXVlc3Q7CiBAY2xhc3Mg
TlNVUkxSZXNwb25zZTsKIEBjbGFzcyBXZWJBcmNoaXZlOwotQGNsYXNzIFdlYkJhc2VSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlOworQGNsYXNzIFdlYkxvYWRlcjsKIEBjbGFzcyBXZWJCcmlkZ2U7CiBA
Y2xhc3MgV2ViSGlzdG9yeUl0ZW07CiBAY2xhc3MgV2ViSWNvbkxvYWRlcjsKLUBjbGFzcyBXZWJN
YWluUmVzb3VyY2VDbGllbnQ7CitAY2xhc3MgV2ViTWFpblJlc291cmNlTG9hZGVyOwogQGNsYXNz
IFdlYlJlc291cmNlOwogQGNsYXNzIFdlYlZpZXc7CiAKQEAgLTcyLDExICs3MiwxMSBAQAogICAg
IE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlOwogCiAgICAgLy8gQ2xpZW50IGZvciBtYWluIHJlc291
cmNlLgotICAgIFdlYk1haW5SZXNvdXJjZUNsaWVudCAqbWFpbkNsaWVudDsKKyAgICBXZWJNYWlu
UmVzb3VyY2VMb2FkZXIgKm1haW5SZXNvdXJjZUxvYWRlcjsKICAgICAKICAgICAvLyBDbGllbnRz
IGZvciBvdGhlciByZXNvdXJjZXMuCi0gICAgTlNNdXRhYmxlQXJyYXkgKnN1YnJlc291cmNlQ2xp
ZW50czsKLSAgICBOU011dGFibGVBcnJheSAqcGx1Z0luU3RyZWFtQ2xpZW50czsKKyAgICBOU011
dGFibGVBcnJheSAqc3VicmVzb3VyY2VMb2FkZXJzOworICAgIE5TTXV0YWJsZUFycmF5ICpwbHVn
SW5TdHJlYW1Mb2FkZXJzOwogCiAgICAgLy8gVGhlIHRpbWUgd2hlbiB0aGUgZGF0YSBzb3VyY2Ug
d2FzIHRvbGQgdG8gc3RhcnQgbG9hZGluZy4KICAgICBkb3VibGUgbG9hZGluZ1N0YXJ0ZWRUaW1l
OwpAQCAtMTY4LDEwICsxNjgsMTAgQEAKIC0gKHZvaWQpX3N0b3BMb2FkaW5nSW50ZXJuYWw7CiAt
IChCT09MKV9pc1N0b3BwaW5nOwogLSAodm9pZClfcmVjdXJzaXZlU3RvcExvYWRpbmc7Ci0tICh2
b2lkKV9hZGRTdWJyZXNvdXJjZUNsaWVudDooV2ViQmFzZVJlc291cmNlSGFuZGxlRGVsZWdhdGUg
KiljbGllbnQ7Ci0tICh2b2lkKV9yZW1vdmVTdWJyZXNvdXJjZUNsaWVudDooV2ViQmFzZVJlc291
cmNlSGFuZGxlRGVsZWdhdGUgKiljbGllbnQ7Ci0tICh2b2lkKV9hZGRQbHVnSW5TdHJlYW1DbGll
bnQ6KFdlYkJhc2VSZXNvdXJjZUhhbmRsZURlbGVnYXRlICopY2xpZW50OwotLSAodm9pZClfcmVt
b3ZlUGx1Z0luU3RyZWFtQ2xpZW50OihXZWJCYXNlUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZSAqKWNs
aWVudDsKKy0gKHZvaWQpX2FkZFN1YnJlc291cmNlTG9hZGVyOihXZWJMb2FkZXIgKilsb2FkZXI7
CistICh2b2lkKV9yZW1vdmVTdWJyZXNvdXJjZUxvYWRlcjooV2ViTG9hZGVyICopbG9hZGVyOwor
LSAodm9pZClfYWRkUGx1Z0luU3RyZWFtTG9hZGVyOihXZWJMb2FkZXIgKilsb2FkZXI7CistICh2
b2lkKV9yZW1vdmVQbHVnSW5TdHJlYW1Mb2FkZXI6KFdlYkxvYWRlciAqKWxvYWRlcjsKIC0gKHZv
aWQpX3NldFByaW1hcnlMb2FkQ29tcGxldGU6KEJPT0wpZmxhZzsKIC0gKGRvdWJsZSlfbG9hZGlu
Z1N0YXJ0ZWRUaW1lOwogLSAodm9pZClfc2V0VGl0bGU6KE5TU3RyaW5nICopdGl0bGU7CkluZGV4
OiAuL1dlYlZpZXcuc3VicHJvai9XZWJMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz
L3Jvb3QvV2ViS2l0L1dlYlZpZXcuc3VicHJvai9XZWJMb2FkZXIuaCx2CnJldHJpZXZpbmcgcmV2
aXNpb24gMS40MgpkaWZmIC1wIC11IC1wIC11IC1yMS40MiAuL1dlYlZpZXcuc3VicHJvai9XZWJM
b2FkZXIuaAotLS0gLi9XZWJWaWV3LnN1YnByb2ovV2ViTG9hZGVyLmgJNSBKdW4gMjAwNSAxNzo1
NDo0NSAtMDAwMAkxLjQyCisrKyAuL1dlYlZpZXcuc3VicHJvai9XZWJMb2FkZXIuaAkzMCBKdW4g
MjAwNSAxNDo1NjozNyAtMDAwMApAQCAtNDEsNyArNDEsNyBAQAogQGNsYXNzIFdlYlJlc291cmNl
OwogQGNsYXNzIFdlYlZpZXc7CiAKLUBpbnRlcmZhY2UgV2ViQmFzZVJlc291cmNlSGFuZGxlRGVs
ZWdhdGUgOiBOU09iamVjdAorQGludGVyZmFjZSBXZWJMb2FkZXIgOiBOU09iamVjdAogewogQHBy
b3RlY3RlZAogICAgIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2U7CkBAIC0xMTEsNiArMTExLDYg
QEAKIAogLy8gTm90ZTogVGhpcyBpbnRlcmZhY2UgY2FuIGJlIHJlbW92ZWQgb25jZSB0aGlzIG1l
dGhvZCBpcyBkZWNsYXJlZAogLy8gaW4gRm91bmRhdGlvbiAocHJvYmFibHkgd2lsbCBiZSBpbiBG
b3VuZGF0aW9uLTQ4NSkuCi1AaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJCYXNlUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZUV4dHJhcykKK0BpbnRlcmZhY2UgTlNPYmplY3QgKFdlYkxvYWRlckV4dHJhcykK
IC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29uIGRpZFJlY2VpdmVEYXRh
OihOU0RhdGEgKilkYXRhIGxlbmd0aFJlY2VpdmVkOihsb25nIGxvbmcpbGVuZ3RoUmVjZWl2ZWQ7
CiBAZW5kCkluZGV4OiAuL1dlYlZpZXcuc3VicHJvai9XZWJMb2FkZXIubQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0L1dlYlZpZXcuc3VicHJvai9XZWJMb2FkZXIubSx2CnJl
dHJpZXZpbmcgcmV2aXNpb24gMS45NApkaWZmIC1wIC11IC1wIC11IC1yMS45NCAuL1dlYlZpZXcu
c3VicHJvai9XZWJMb2FkZXIubQotLS0gLi9XZWJWaWV3LnN1YnByb2ovV2ViTG9hZGVyLm0JNiBK
dW4gMjAwNSAxMToxMjozMiAtMDAwMAkxLjk0CisrKyAuL1dlYlZpZXcuc3VicHJvai9XZWJMb2Fk
ZXIubQkzMCBKdW4gMjAwNSAxNDo1NjozOCAtMDAwMApAQCAtMjYsNyArMjYsNyBAQAogICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaW1wb3J0IDxXZWJLaXQvV2ViQmFzZVJlc291cmNlSGFuZGxlRGVsZWdh
dGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJMb2FkZXIuaD4KIAogI2ltcG9ydCA8Rm91bmRhdGlv
bi9OU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL05T
VVJMQ29ubmVjdGlvbi5oPgpAQCAtNTUsMTAgKzU1LDEwIEBAIHN0YXRpYyBCT09MIE5TVVJMQ29u
bmVjdGlvblN1cHBvcnRzQnVmZmUKIC0gKE5TRGF0YSAqKV9idWZmZXJlZERhdGE7CiBAZW5kCiAK
LUBpbnRlcmZhY2UgV2ViQmFzZVJlc291cmNlSGFuZGxlRGVsZWdhdGUgKFdlYk5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VTZW5kZXIpIDxOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2Vu
ZGVyPgorQGludGVyZmFjZSBXZWJMb2FkZXIgKFdlYk5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VTZW5kZXIpIDxOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyPgogQGVuZAogCi1A
aW1wbGVtZW50YXRpb24gV2ViQmFzZVJlc291cmNlSGFuZGxlRGVsZWdhdGUgKFdlYk5TVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIpIAorQGltcGxlbWVudGF0aW9uIFdlYkxvYWRlciAo
V2ViTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcikgCiAKIC0gKHZvaWQpdXNlQ3Jl
ZGVudGlhbDooTlNVUkxDcmVkZW50aWFsICopY3JlZGVudGlhbCBmb3JBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZQogewpAQCAt
MTA3LDcgKzEwNyw3IEBAIHN0YXRpYyBCT09MIE5TVVJMQ29ubmVjdGlvblN1cHBvcnRzQnVmZmUK
ICsgKHZvaWQpX3JlbW92ZVByb3BlcnR5Rm9yS2V5OihOU1N0cmluZyAqKWtleSBpblJlcXVlc3Q6
KE5TTXV0YWJsZVVSTFJlcXVlc3QgKilyZXF1ZXN0OwogQGVuZAogCi1AaW1wbGVtZW50YXRpb24g
V2ViQmFzZVJlc291cmNlSGFuZGxlRGVsZWdhdGUKK0BpbXBsZW1lbnRhdGlvbiBXZWJMb2FkZXIK
IAogKyAodm9pZClpbml0aWFsaXplCiB7CkluZGV4OiAuL1dlYlZpZXcuc3VicHJvai9XZWJNYWlu
UmVzb3VyY2VDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBXZWJNYWluUmVzb3VyY2VDbGll
bnQuaApkaWZmIC1OIC4vV2ViVmlldy5zdWJwcm9qL1dlYk1haW5SZXNvdXJjZUNsaWVudC5oCi0t
LSAuL1dlYlZpZXcuc3VicHJvai9XZWJNYWluUmVzb3VyY2VDbGllbnQuaAk2IEp1biAyMDA1IDEx
OjQzOjUwIC0wMDAwCTEuNTEKKysrIC4vV2ViVmlldy5zdWJwcm9qL1dlYk1haW5SZXNvdXJjZUNs
aWVudC5oCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0g
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLiAKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KLQotI2ltcG9ydCA8V2Vi
S2l0L1dlYkJhc2VSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXRTeXN0
ZW1JbnRlcmZhY2UuaD4KLQotQGNsYXNzIFdlYlBvbGljeURlY2lzaW9uTGlzdGVuZXI7Ci1AY2xh
c3MgV2ViRGF0YVNvdXJjZTsKLQotQGludGVyZmFjZSBXZWJNYWluUmVzb3VyY2VDbGllbnQgOiBX
ZWJCYXNlUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZQotewotICAgIGludCBfY29udGVudExlbmd0aDsg
Ly8gZm9yIGxvZ2dpbmcgb25seQotICAgIGludCBfYnl0ZXNSZWNlaXZlZDsgLy8gZm9yIGxvZ2dp
bmcgb25seQotICAgIFdlYlBvbGljeURlY2lzaW9uTGlzdGVuZXIgKmxpc3RlbmVyOwotICAgIE5T
VVJMUmVzcG9uc2UgKnBvbGljeVJlc3BvbnNlOwotICAgIFdLTlNVUkxDb25uZWN0aW9uRGVsZWdh
dGVQcm94eVB0ciBwcm94eTsKLSAgICBOU1VSTFJlcXVlc3QgKl9pbml0aWFsUmVxdWVzdDsKLX0K
LQotLSAoaWQpaW5pdFdpdGhEYXRhU291cmNlOihXZWJEYXRhU291cmNlICopZGF0YVNvdXJjZTsK
LQotQGVuZApJbmRleDogLi9XZWJWaWV3LnN1YnByb2ovV2ViTWFpblJlc291cmNlQ2xpZW50Lm0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpSQ1MgZmlsZTogV2ViTWFpblJlc291cmNlQ2xpZW50Lm0KZGlmZiAtTiAuL1dl
YlZpZXcuc3VicHJvai9XZWJNYWluUmVzb3VyY2VDbGllbnQubQotLS0gLi9XZWJWaWV3LnN1YnBy
b2ovV2ViTWFpblJlc291cmNlQ2xpZW50Lm0JNiBKdW4gMjAwNSAxMTo0Mzo1MCAtMDAwMAkxLjI3
MAorKysgLi9XZWJWaWV3LnN1YnByb2ovV2ViTWFpblJlc291cmNlQ2xpZW50Lm0JMSBKYW4gMTk3
MCAwMDowMDowMCAtMDAwMApAQCAtMSw0ODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLiAKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0
IDxXZWJLaXQvV2ViTWFpblJlc291cmNlQ2xpZW50Lmg+Ci0KLSNpbXBvcnQgPEZvdW5kYXRpb24v
TlNIVFRQQ29va2llLmg+Ci0jaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMQ29ubmVjdGlvbi5oPgot
I2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFJlcXVlc3QuaD4KLSNpbXBvcnQgPEZvdW5kYXRpb24v
TlNVUkxSZXNwb25zZS5oPgotCi0jaW1wb3J0IDxXZWJLaXQvV2ViRGF0YVByb3RvY29sLmg+Ci0j
aW1wb3J0IDxXZWJLaXQvV2ViRGF0YVNvdXJjZVByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9X
ZWJEZWZhdWx0UG9saWN5RGVsZWdhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJEb2N1bWVudC5o
PgotI2ltcG9ydCA8V2ViS2l0L1dlYkRvd25sb2FkLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViRnJh
bWVMb2FkRGVsZWdhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJGcmFtZVZpZXcuaD4KLSNpbXBv
cnQgPFdlYktpdC9XZWJGcmFtZVByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJLaXRFcnJv
cnMuaD4KLSNpbXBvcnQgPFdlYktpdC9XZWJLaXRFcnJvcnNQcml2YXRlLmg+Ci0jaW1wb3J0IDxX
ZWJLaXQvV2ViS2l0TG9nZ2luZy5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYktpdE5TU3RyaW5nRXh0
cmFzLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViTlNPYmplY3RFeHRyYXMuaD4KLSNpbXBvcnQgPFdl
YktpdC9XZWJOU1VSTEV4dHJhcy5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYlBvbGljeURlbGVnYXRl
UHJpdmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYlZpZXdQcml2YXRlLmg+Ci0jaW1wb3J0IDxX
ZWJLaXQvV2ViQnJpZGdlLmg+Ci0KLS8vIEZJWE1FOiBNb3JlIHRoYXQgaXMgaW4gY29tbW9uIHdp
dGggV2ViU3VicmVzb3VyY2VDbGllbnQgc2hvdWxkIG1vdmUgdXAgaW50byBXZWJCYXNlUmVzb3Vy
Y2VIYW5kbGVEZWxlZ2F0ZS4KLQotQGltcGxlbWVudGF0aW9uIFdlYk1haW5SZXNvdXJjZUNsaWVu
dAotCi0tIGluaXRXaXRoRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRzCi17Ci0gICAgc2Vs
ZiA9IFtzdXBlciBpbml0XTsKLSAgICAKLSAgICBpZiAoc2VsZikgewotICAgICAgICBbc2VsZiBz
ZXREYXRhU291cmNlOmRzXTsKLSAgICAgICAgcHJveHkgPSBXS0NyZWF0ZU5TVVJMQ29ubmVjdGlv
bkRlbGVnYXRlUHJveHkoKTsKLSAgICAgICAgW3Byb3h5IHNldERlbGVnYXRlOnNlbGZdOwotICAg
IH0KLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKWRlYWxsb2MKLXsKLSAgICBbX2lu
aXRpYWxSZXF1ZXN0IHJlbGVhc2VdOwotCi0gICAgW3Byb3h5IHNldERlbGVnYXRlOm5pbF07Ci0g
ICAgW3Byb3h5IHJlbGVhc2VdOwotICAgIAotICAgIFtzdXBlciBkZWFsbG9jXTsKLX0KLQotLSAo
dm9pZClmaW5hbGl6ZQotewotICAgIFtwcm94eSBzZXREZWxlZ2F0ZTpuaWxdOwotICAgIFtzdXBl
ciBmaW5hbGl6ZV07Ci19Ci0KLS0gKHZvaWQpcmVjZWl2ZWRFcnJvcjooTlNFcnJvciAqKWVycm9y
Ci17Ci0gICAgLy8gQ2FsbGluZyBfcmVjZWl2ZWRNYWluUmVzb3VyY2VFcnJvciB3aWxsIGxpa2Vs
eSByZXN1bHQgaW4gYSBjYWxsIHRvIHJlbGVhc2UsIHNvIHdlIG11c3QgcmV0YWluLgotICAgIFtz
ZWxmIHJldGFpbl07Ci0gICAgW2RhdGFTb3VyY2UgX3JlY2VpdmVkTWFpblJlc291cmNlRXJyb3I6
ZXJyb3IgY29tcGxldGU6WUVTXTsKLSAgICBbc3VwZXIgZGlkRmFpbFdpdGhFcnJvcjplcnJvcl07
Ci0gICAgW3NlbGYgcmVsZWFzZV07Ci19Ci0KLS0gKHZvaWQpY2FuY2VsQ29udGVudFBvbGljeQot
ewotICAgIFtsaXN0ZW5lciBfaW52YWxpZGF0ZV07Ci0gICAgW2xpc3RlbmVyIHJlbGVhc2VdOwot
ICAgIGxpc3RlbmVyID0gbmlsOwotICAgIFtwb2xpY3lSZXNwb25zZSByZWxlYXNlXTsKLSAgICBw
b2xpY3lSZXNwb25zZSA9IG5pbDsKLX0KLQotLSh2b2lkKWNhbmNlbFdpdGhFcnJvcjooTlNFcnJv
ciAqKWVycm9yCi17Ci0gICAgLy8gQ2FsbGluZyBfcmVjZWl2ZWRNYWluUmVzb3VyY2VFcnJvciB3
aWxsIGxpa2VseSByZXN1bHQgaW4gYSBjYWxsIHRvIHJlbGVhc2UsIHNvIHdlIG11c3QgcmV0YWlu
LgotICAgIFtzZWxmIHJldGFpbl07Ci0gICAgW3NlbGYgY2FuY2VsQ29udGVudFBvbGljeV07Ci0g
ICAgW2RhdGFTb3VyY2UgX3JlY2VpdmVkTWFpblJlc291cmNlRXJyb3I6ZXJyb3IgY29tcGxldGU6
WUVTXTsKLSAgICBbc3VwZXIgY2FuY2VsV2l0aEVycm9yOmVycm9yXTsKLSAgICBbc2VsZiByZWxl
YXNlXTsKLX0KLQotLSAoTlNFcnJvciAqKWludGVycnVwdEZvclBvbGljeUNoYW5nZUVycm9yCi17
Ci0gICAgcmV0dXJuIFtOU0Vycm9yIF93ZWJLaXRFcnJvcldpdGhEb21haW46V2ViS2l0RXJyb3JE
b21haW4gY29kZTpXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2Ug
VVJMOltyZXF1ZXN0IFVSTF1dOwotfQotCi0tKHZvaWQpc3RvcExvYWRpbmdGb3JQb2xpY3lDaGFu
Z2UKLXsKLSAgICBbc2VsZiByZXRhaW5dOwotICAgIFtzZWxmIGNhbmNlbFdpdGhFcnJvcjpbc2Vs
ZiBpbnRlcnJ1cHRGb3JQb2xpY3lDaGFuZ2VFcnJvcl1dOwotICAgIFtzZWxmIHJlbGVhc2VdOwot
fQotCi0tKHZvaWQpY29udGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3k6KE5TVVJMUmVxdWVzdCAq
KV9yZXF1ZXN0IGZvcm1TdGF0ZTooV2ViRm9ybVN0YXRlICopc3RhdGUKLXsKLSAgICBpZiAoIV9y
ZXF1ZXN0KSB7Ci0JW3NlbGYgc3RvcExvYWRpbmdGb3JQb2xpY3lDaGFuZ2VdOwotICAgIH0KLX0K
LQotLSAoQk9PTClfaXNQb3N0T3JSZWRpcmVjdEFmdGVyUG9zdDooTlNVUkxSZXF1ZXN0ICopbmV3
UmVxdWVzdCByZWRpcmVjdFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVkaXJlY3RSZXNwb25z
ZQotewotICAgIEJPT0wgcmVzdWx0ID0gTk87Ci0gICAgCi0gICAgaWYgKFtbbmV3UmVxdWVzdCBI
VFRQTWV0aG9kXSBpc0VxdWFsVG9TdHJpbmc6QCJQT1NUIl0pIHsKLSAgICAgICAgcmVzdWx0ID0g
WUVTOwotICAgIH0KLSAgICBlbHNlIGlmIChyZWRpcmVjdFJlc3BvbnNlICYmIFtyZWRpcmVjdFJl
c3BvbnNlIGlzS2luZE9mQ2xhc3M6W05TSFRUUFVSTFJlc3BvbnNlIGNsYXNzXV0pIHsKLSAgICAg
ICAgaW50IHN0YXR1cyA9IFsoTlNIVFRQVVJMUmVzcG9uc2UgKilyZWRpcmVjdFJlc3BvbnNlIHN0
YXR1c0NvZGVdOwotICAgICAgICBpZiAoKChzdGF0dXMgPj0gMzAxICYmIHN0YXR1cyA8PSAzMDMp
IHx8IHN0YXR1cyA9PSAzMDcpCi0gICAgICAgICAgICAmJiBbW1tkYXRhU291cmNlIGluaXRpYWxS
ZXF1ZXN0XSBIVFRQTWV0aG9kXSBpc0VxdWFsVG9TdHJpbmc6QCJQT1NUIl0pIHsKLSAgICAgICAg
ICAgIHJlc3VsdCA9IFlFUzsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi0tICh2b2lkKWFkZERhdGE6KE5TRGF0YSAqKWRhdGEKLXsKLSAgICBbc3VwZXIg
YWRkRGF0YTpkYXRhXTsKLSAgICBbZGF0YVNvdXJjZSBfcmVjZWl2ZWREYXRhOmRhdGFdOwotfQot
Ci0tICh2b2lkKXNhdmVSZXNvdXJjZQotewotICAgIC8vIE92ZXJyaWRlLiBXZSBkb24ndCB3YW50
IHRvIHNhdmUgdGhlIG1haW4gcmVzb3VyY2UgYXMgYSBzdWJyZXNvdXJjZSBvZiB0aGUgZGF0YSBz
b3VyY2UuCi19Ci0KLS0gKE5TVVJMUmVxdWVzdCAqKXdpbGxTZW5kUmVxdWVzdDooTlNVUkxSZXF1
ZXN0ICopbmV3UmVxdWVzdCByZWRpcmVjdFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVkaXJl
Y3RSZXNwb25zZQotewotICAgIC8vIE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gYXNzZXJ0cyBoZXJl
IGFzIHRoZXJlIGFyZSBmb3IgdGhlIG90aGVyIGNhbGxiYWNrcy4gVGhpcyBpcyBkdWUgdG8gdGhl
Ci0gICAgLy8gZmFjdCB0aGF0IHRoaXMgImNhbGxiYWNrIiBpcyBzZW50IHdoZW4gc3RhcnRpbmcg
ZXZlcnkgbG9hZCwgYW5kIHRoZSBzdGF0ZSBvZiBjYWxsYmFjawotICAgIC8vIGRlZmVycmFscyBw
bGF5cyBsZXNzIG9mIGEgcGFydCBpbiB0aGlzIGZ1bmN0aW9uIGluIHByZXZlbnRpbmcgdGhlIGJh
ZCBiZWhhdmlvciBkZWZlcnJpbmcgCi0gICAgLy8gY2FsbGJhY2tzIGlzIG1lYW50IHRvIHByZXZl
bnQuCi0gICAgQVNTRVJUKG5ld1JlcXVlc3QgIT0gbmlsKTsKLQotICAgIC8vIHJldGFpbi9yZWxl
YXNlIHNlbGYgaW4gdGhpcyBkZWxlZ2F0ZSBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwgcHJv
Y2Vzc2luZyBjYW4gZG8KLSAgICAvLyBhbnl0aGluZyBpbmNsdWRpbmcgcG9zc2libHkgcmVsZWFz
aW5nIHNlbGY7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIxNgotICAgIFtzZWxmIHJldGFp
bl07Ci0KLSAgICBOU1VSTCAqVVJMID0gW25ld1JlcXVlc3QgVVJMXTsKLQotICAgIExPRyhSZWRp
cmVjdCwgIlVSTCA9ICVAIiwgVVJMKTsKLQotICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm11dGFi
bGVSZXF1ZXN0ID0gbmlsOwotICAgIC8vIFVwZGF0ZSBjb29raWUgcG9saWN5IGJhc2UgVVJMIGFz
IFVSTCBjaGFuZ2VzLCBleGNlcHQgZm9yIHN1YmZyYW1lcywgd2hpY2ggdXNlIHRoZQotICAgIC8v
IFVSTCBvZiB0aGUgbWFpbiBmcmFtZSB3aGljaCBkb2Vzbid0IGNoYW5nZSB3aGVuIHdlIHJlZGly
ZWN0LgotICAgIGlmIChbZGF0YVNvdXJjZSB3ZWJGcmFtZV0gPT0gW1tkYXRhU291cmNlIF93ZWJW
aWV3XSBtYWluRnJhbWVdKSB7Ci0gICAgICAgIG11dGFibGVSZXF1ZXN0ID0gW25ld1JlcXVlc3Qg
bXV0YWJsZUNvcHldOwotICAgICAgICBbbXV0YWJsZVJlcXVlc3Qgc2V0TWFpbkRvY3VtZW50VVJM
OlVSTF07Ci0gICAgfQotCi0gICAgLy8gSWYgd2UncmUgZmllbGRpbmcgYSByZWRpcmVjdCBpbiBy
ZXNwb25zZSB0byBhIFBPU1QsIGZvcmNlIGEgbG9hZCBmcm9tIG9yaWdpbiwgc2luY2UKLSAgICAv
LyB0aGlzIGlzIGEgY29tbW9uIHNpdGUgdGVjaG5pcXVlIHRvIHJldHVybiB0byBhIHBhZ2Ugdmll
d2luZyBzb21lIGRhdGEgdGhhdCB0aGUgUE9TVAotICAgIC8vIGp1c3QgbW9kaWZpZWQuCi0gICAg
Ly8gQWxzbywgUE9TVCByZXF1ZXN0cyBhbHdheXMgbG9hZCBmcm9tIG9yaWdpbiwgYnV0IHRoaXMg
ZG9lcyBub3QgYWZmZWN0IHN1YnJlc291cmNlcy4KLSAgICBpZiAoW25ld1JlcXVlc3QgY2FjaGVQ
b2xpY3ldID09IE5TVVJMUmVxdWVzdFVzZVByb3RvY29sQ2FjaGVQb2xpY3kgJiYgCi0gICAgICAg
IFtzZWxmIF9pc1Bvc3RPclJlZGlyZWN0QWZ0ZXJQb3N0Om5ld1JlcXVlc3QgcmVkaXJlY3RSZXNw
b25zZTpyZWRpcmVjdFJlc3BvbnNlXSkgewotICAgICAgICBpZiAoIW11dGFibGVSZXF1ZXN0KSB7
Ci0gICAgICAgICAgICBtdXRhYmxlUmVxdWVzdCA9IFtuZXdSZXF1ZXN0IG11dGFibGVDb3B5XTsK
LSAgICAgICAgfQotICAgICAgICBbbXV0YWJsZVJlcXVlc3Qgc2V0Q2FjaGVQb2xpY3k6TlNVUkxS
ZXF1ZXN0UmVsb2FkSWdub3JpbmdDYWNoZURhdGFdOwotICAgIH0KLSAgICBpZiAobXV0YWJsZVJl
cXVlc3QpIHsKLSAgICAgICAgbmV3UmVxdWVzdCA9IFttdXRhYmxlUmVxdWVzdCBhdXRvcmVsZWFz
ZV07Ci0gICAgfQotCi0gICAgLy8gTm90ZSBzdXBlciB3aWxsIG1ha2UgYSBjb3B5IGZvciB1cywg
c28gcmVhc3NpZ25pbmcgbmV3UmVxdWVzdCBpcyBpbXBvcnRhbnQuIFNpbmNlIHdlIGFyZSByZXR1
cm5pbmcgdGhpcyB2YWx1ZSwgYnV0Ci0gICAgLy8gaXQncyBvbmx5IGd1YXJhbnRlZWQgdG8gYmUg
cmV0YWluZWQgYnkgc2VsZiwgYW5kIHNlbGYgbWlnaHQgYmUgZGVhbGxvYydlZCBpbiB0aGlzIG1l
dGhvZCwgd2UgaGF2ZSB0byBhdXRvcmVsZWFzZS4KLSAgICAvLyBTZWUgMzc3NzI1MyBmb3IgYW4g
ZXhhbXBsZS4KLSAgICBuZXdSZXF1ZXN0ID0gW1tbc3VwZXIgd2lsbFNlbmRSZXF1ZXN0Om5ld1Jl
cXVlc3QgcmVkaXJlY3RSZXNwb25zZTpyZWRpcmVjdFJlc3BvbnNlXSByZXRhaW5dIGF1dG9yZWxl
YXNlXTsKLQotICAgIC8vIERvbid0IHNldCB0aGlzIG9uIHRoZSBmaXJzdCByZXF1ZXN0LiAgSXQg
aXMgc2V0Ci0gICAgLy8gd2hlbiB0aGUgbWFpbiBsb2FkIHdhcyBzdGFydGVkLgotICAgIFtkYXRh
U291cmNlIF9zZXRSZXF1ZXN0Om5ld1JlcXVlc3RdOwotICAgIAotICAgIFtbZGF0YVNvdXJjZSB3
ZWJGcmFtZV0gX2NoZWNrTmF2aWdhdGlvblBvbGljeUZvclJlcXVlc3Q6bmV3UmVxdWVzdAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6
ZGF0YVNvdXJjZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmb3JtU3RhdGU6bmlsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5kQ2FsbDpzZWxmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdpdGhTZWxlY3RvcjpAc2VsZWN0b3IoY29udGludWVBZnRlck5h
dmlnYXRpb25Qb2xpY3k6Zm9ybVN0YXRlOildOwotCi0gICAgW3NlbGYgcmVsZWFzZV07Ci0gICAg
cmV0dXJuIG5ld1JlcXVlc3Q7Ci19Ci0KLS0odm9pZCljb250aW51ZUFmdGVyQ29udGVudFBvbGlj
eTooV2ViUG9saWN5QWN0aW9uKWNvbnRlbnRQb2xpY3kgcmVzcG9uc2U6KE5TVVJMUmVzcG9uc2Ug
KilyCi17Ci0gICAgTlNVUkwgKlVSTCA9IFtyZXF1ZXN0IFVSTF07Ci0gICAgTlNTdHJpbmcgKk1J
TUVUeXBlID0gW3IgTUlNRVR5cGVdOyAKLSAgICAKLSAgICBzd2l0Y2ggKGNvbnRlbnRQb2xpY3kp
IHsKLSAgICBjYXNlIFdlYlBvbGljeVVzZToKLSAgICB7Ci0gICAgICAgIC8vIFByZXZlbnQgcmVt
b3RlIHdlYiBhcmNoaXZlcyBmcm9tIGxvYWRpbmcgYmVjYXVzZSB0aGV5IGNhbiBjbGFpbSB0byBi
ZSBmcm9tIGFueSBkb21haW4gYW5kIHRodXMgYXZvaWQgY3Jvc3MtZG9tYWluIHNlY3VyaXR5IGNo
ZWNrcyAoNDEyMDI1NSkuCi0gICAgICAgIEJPT0wgaXNSZW1vdGUgPSAhW1VSTCBpc0ZpbGVVUkxd
ICYmICFbV2ViRGF0YVByb3RvY29sIF93ZWJJc0RhdGFQcm90b2NvbFVSTDpVUkxdOwotCUJPT0wg
aXNSZW1vdGVXZWJBcmNoaXZlID0gaXNSZW1vdGUgJiYgW01JTUVUeXBlIF93ZWJraXRfaXNDYXNl
SW5zZW5zaXRpdmVFcXVhbFRvU3RyaW5nOkAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIl07Ci0g
ICAgICAgIGlmICghW1dlYlZpZXcgY2FuU2hvd01JTUVUeXBlOk1JTUVUeXBlXSB8fCBpc1JlbW90
ZVdlYkFyY2hpdmUpIHsKLQkgICAgW1tkYXRhU291cmNlIHdlYkZyYW1lXSBfaGFuZGxlVW5pbXBs
ZW1lbnRhYmxlUG9saWN5V2l0aEVycm9yQ29kZTpXZWJLaXRFcnJvckNhbm5vdFNob3dNSU1FVHlw
ZSBmb3JVUkw6VVJMXTsKLSAgICAgICAgICAgIC8vIENoZWNrIHJlYWNoZWRUZXJtaW5hbFN0YXRl
IHNpbmNlIHRoZSBsb2FkIG1heSBoYXZlIGFscmVhZHkgYmVlbiBjYW5jZWxsZWQgaW5zaWRlIG9m
IF9oYW5kbGVVbmltcGxlbWVudGFibGVQb2xpY3lXaXRoRXJyb3JDb2RlOjouCi0gICAgICAgICAg
ICBpZiAoIXJlYWNoZWRUZXJtaW5hbFN0YXRlKSB7Ci0gICAgICAgICAgICAgICAgW3NlbGYgc3Rv
cExvYWRpbmdGb3JQb2xpY3lDaGFuZ2VdOwotICAgICAgICAgICAgfQotCSAgICByZXR1cm47Ci0J
fQotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBXZWJQb2xpY3lEb3dubG9hZDoKLSAg
ICAgICAgW3Byb3h5IHNldERlbGVnYXRlOm5pbF07Ci0gICAgICAgIFtXZWJEb3dubG9hZCBfZG93
bmxvYWRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246Y29ubmVjdGlvbgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OnJlcXVlc3QKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZTpyCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGU6W3NlbGYgZG93bmxvYWREZWxlZ2F0
ZV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm94eTpw
cm94eV07Ci0gICAgICAgIFtwcm94eSByZWxlYXNlXTsKLSAgICAgICAgcHJveHkgPSBuaWw7Ci0g
ICAgICAgIFtzZWxmIHJlY2VpdmVkRXJyb3I6W3NlbGYgaW50ZXJydXB0Rm9yUG9saWN5Q2hhbmdl
RXJyb3JdXTsKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY2FzZSBXZWJQb2xpY3lJZ25vcmU6Ci0J
W3NlbGYgc3RvcExvYWRpbmdGb3JQb2xpY3lDaGFuZ2VdOwotCXJldHVybjsKLSAgICAKLSAgICBk
ZWZhdWx0OgotCUFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIFtzZWxmIHJldGFp
bl07Ci0KLSAgICBpZiAoW3IgaXNLaW5kT2ZDbGFzczpbTlNIVFRQVVJMUmVzcG9uc2UgY2xhc3Nd
XSkgewotICAgICAgICBpbnQgc3RhdHVzID0gWyhOU0hUVFBVUkxSZXNwb25zZSAqKXIgc3RhdHVz
Q29kZV07Ci0gICAgICAgIGlmIChzdGF0dXMgPCAyMDAgfHwgc3RhdHVzID49IDMwMCkgewotICAg
ICAgICAgICAgLy8gSGFuZGxlIDxvYmplY3Q+IGZhbGxiYWNrIGZvciBlcnJvciBjYXNlcy4KLSAg
ICAgICAgICAgIFtbW2RhdGFTb3VyY2Ugd2ViRnJhbWVdIF9icmlkZ2VdIG1haW5SZXNvdXJjZUVy
cm9yXTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIFtzdXBlciBkaWRSZWNlaXZlUmVzcG9uc2U6
cl07Ci0KLSAgICBpZiAoIVtkYXRhU291cmNlIF9pc1N0b3BwaW5nXSAmJiAoW1VSTCBfd2Via2l0
X3Nob3VsZExvYWRBc0VtcHR5RG9jdW1lbnRdIHx8IFtXZWJWaWV3IF9yZXByZXNlbnRhdGlvbkV4
aXN0c0ZvclVSTFNjaGVtZTpbVVJMIHNjaGVtZV1dKSkgewotICAgICAgICBbc2VsZiBkaWRGaW5p
c2hMb2FkaW5nXTsKLSAgICB9Ci0gICAgCi0gICAgW3NlbGYgcmVsZWFzZV07Ci19Ci0KLS0odm9p
ZCljb250aW51ZUFmdGVyQ29udGVudFBvbGljeTooV2ViUG9saWN5QWN0aW9uKXBvbGljeQotewot
ICAgIE5TVVJMUmVzcG9uc2UgKnIgPSBbcG9saWN5UmVzcG9uc2UgcmV0YWluXTsKLSAgICBCT09M
IGlzU3RvcHBpbmcgPSBbZGF0YVNvdXJjZSBfaXNTdG9wcGluZ107Ci0KLSAgICBbc2VsZiBjYW5j
ZWxDb250ZW50UG9saWN5XTsKLSAgICBpZiAoIWlzU3RvcHBpbmcpewotICAgICAgICBbc2VsZiBj
b250aW51ZUFmdGVyQ29udGVudFBvbGljeTpwb2xpY3kgcmVzcG9uc2U6cl07Ci0gICAgfQotICAg
IFtyIHJlbGVhc2VdOwotfQotCi0tKHZvaWQpY2hlY2tDb250ZW50UG9saWN5Rm9yUmVzcG9uc2U6
KE5TVVJMUmVzcG9uc2UgKilyCi17Ci0gICAgV2ViUG9saWN5RGVjaXNpb25MaXN0ZW5lciAqbCA9
IFtbV2ViUG9saWN5RGVjaXNpb25MaXN0ZW5lciBhbGxvY10KLQkJCQkgICAgICAgX2luaXRXaXRo
VGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3Rvcihjb250aW51ZUFmdGVyQ29udGVudFBvbGljeTop
XTsKLSAgICBsaXN0ZW5lciA9IGw7Ci0gICAgcG9saWN5UmVzcG9uc2UgPSBbciByZXRhaW5dOwot
Ci0gICAgV2ViVmlldyAqd3YgPSBbZGF0YVNvdXJjZSBfd2ViVmlld107Ci0gICAgW2wgcmV0YWlu
XTsKLSAgICBbW3d2IF9wb2xpY3lEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3diBkZWNpZGVQ
b2xpY3lGb3JNSU1FVHlwZTpbciBNSU1FVHlwZV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6W2RhdGFTb3VyY2UgcmVx
dWVzdF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZnJhbWU6W2RhdGFTb3VyY2Ugd2ViRnJhbWVdCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpc2lvbkxpc3RlbmVyOmxpc3Rl
bmVyXTsKLSAgICBbbCByZWxlYXNlXTsKLX0KLQotCi0tICh2b2lkKWRpZFJlY2VpdmVSZXNwb25z
ZTooTlNVUkxSZXNwb25zZSAqKXIKLXsKLSAgICBBU1NFUlQoW1tyIFVSTF0gX3dlYmtpdF9zaG91
bGRMb2FkQXNFbXB0eURvY3VtZW50XSB8fCAhW3NlbGYgZGVmZXJzQ2FsbGJhY2tzXSk7Ci0gICAg
QVNTRVJUKFtbciBVUkxdIF93ZWJraXRfc2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVudF0gfHwgIVtb
ZGF0YVNvdXJjZSBfd2ViVmlld10gZGVmZXJzQ2FsbGJhY2tzXSk7Ci0KLSAgICBMT0coTG9hZGlu
ZywgIm1haW4gY29udGVudCB0eXBlOiAlQCIsIFtyIE1JTUVUeXBlXSk7Ci0gICAgCi0gICAgLy8g
RklYTUU6IFNpbmNlIHdlJ3JlIG5vdCBnb2luZyB0byBmaXggPHJkYXI6Ly9wcm9ibGVtLzMwODc1
MzU+IGZvciBUaWdlciwgd2Ugc2hvdWxkIG5vdCAKLSAgICAvLyBsb2FkIG11bHRpcGFydC94LW1p
eGVkLXJlcGxhY2UgY29udGVudC4gIFBhZ2VzIHdpdGggc3VjaCBjb250ZW50IGNvbnRhaW4gd2hh
dCBpcyAKLSAgICAvLyBlc3NlbnRpYWxseSBhbiBpbmZpbml0ZSBsb2FkIGFuZCB0aGVyZWZvcmUg
YSBtZW1vcnkgbGVhay4gQm90aCB0aGlzIGNvZGUgYW5kIGNvZGUgaW4KLSAgICAvLyBTdWJyZXNv
dXJjZUNsaWVudCBtdXN0IGJlIHJlbW92ZWQgb25jZSBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNl
IGlzIGZ1bGx5IGltcGxlbWVudGVkLiAKLSAgICBpZiAoW1tyIE1JTUVUeXBlXSBpc0VxdWFsVG9T
dHJpbmc6QCJtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIl0pIHsKLSAgICAgICAgW2RhdGFTb3Vy
Y2UgX3JlbW92ZVN1YnJlc291cmNlQ2xpZW50OnNlbGZdOwotICAgICAgICBbW1tkYXRhU291cmNl
IF93ZWJWaWV3XSBtYWluRnJhbWVdIF9jaGVja0xvYWRDb21wbGV0ZV07Ci0gICAgICAgIFtzZWxm
IGNhbmNlbFdpdGhFcnJvcjpbTlNFcnJvciBfd2ViS2l0RXJyb3JXaXRoRG9tYWluOk5TVVJMRXJy
b3JEb21haW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvZGU6TlNVUkxFcnJvclVuc3VwcG9ydGVkVVJMCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVJMOltyIFVSTF1dXTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAgICAgCi0gICAgLy8gRklYTUU6IFRoaXMgaXMg
YSB3b3JrYXJvdW5kIHRvIG1ha2Ugd2ViIGFyY2hpdmUgZmlsZXMgd29yayB3aXRoIEZvdW5kYXRp
b25zIHRoYXQKLSAgICAvLyBhcmUgdG9vIG9sZCB0byBrbm93IGFib3V0IHdlYiBhcmNoaXZlIGZp
bGVzLiBXZSBzaG91bGQgcmVtb3ZlIHRoaXMgYmVmb3JlIHdlIHNoaXAuCi0gICAgTlNVUkwgKlVS
TCA9IFtyIFVSTF07Ci0gICAgaWYgKFtbW1VSTCBwYXRoXSBwYXRoRXh0ZW5zaW9uXSBfd2Via2l0
X2lzQ2FzZUluc2Vuc2l0aXZlRXF1YWxUb1N0cmluZzpAIndlYmFyY2hpdmUiXSkgewotICAgICAg
ICByID0gW1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6VVJMIAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUlNRVR5cGU6QCJhcHBsaWNhdGlvbi94LXdl
YmFyY2hpdmUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkQ29udGVudExlbmd0
aDpbciBleHBlY3RlZENvbnRlbnRMZW5ndGhdIAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRleHRFbmNvZGluZ05hbWU6W3IgdGV4dEVuY29kaW5nTmFtZV1dIGF1dG9yZWxlYXNlXTsK
LSAgICB9Ci0gICAgCi0gICAgLy8gcmV0YWluL3JlbGVhc2Ugc2VsZiBpbiB0aGlzIGRlbGVnYXRl
IG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwotICAgIC8vIGFu
eXRoaW5nIGluY2x1ZGluZyBwb3NzaWJseSByZWxlYXNpbmcgc2VsZjsgb25lIGV4YW1wbGUgb2Yg
dGhpcyBpcyAzMjY2MjE2Ci0gICAgW3NlbGYgcmV0YWluXTsKLSAgICBbZGF0YVNvdXJjZSBfc2V0
UmVzcG9uc2U6cl07Ci0gICAgX2NvbnRlbnRMZW5ndGggPSBbciBleHBlY3RlZENvbnRlbnRMZW5n
dGhdOwotCi0gICAgW3NlbGYgY2hlY2tDb250ZW50UG9saWN5Rm9yUmVzcG9uc2U6cl07Ci0gICAg
W3NlbGYgcmVsZWFzZV07Ci19Ci0KLS0gKHZvaWQpZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRh
dGEgbGVuZ3RoUmVjZWl2ZWQ6KGxvbmcgbG9uZylsZW5ndGhSZWNlaXZlZAotewotICAgIEFTU0VS
VChkYXRhKTsKLSAgICBBU1NFUlQoW2RhdGEgbGVuZ3RoXSAhPSAwKTsKLSAgICBBU1NFUlQoIVtz
ZWxmIGRlZmVyc0NhbGxiYWNrc10pOwotICAgIEFTU0VSVCghW1tkYXRhU291cmNlIF93ZWJWaWV3
XSBkZWZlcnNDYWxsYmFja3NdKTsKLSAKLSAgICBMT0coTG9hZGluZywgIlVSTCA9ICVALCBkYXRh
ID0gJXAsIGxlbmd0aCAlZCIsIFtkYXRhU291cmNlIF9VUkxdLCBkYXRhLCBbZGF0YSBsZW5ndGhd
KTsKLQotICAgIC8vIHJldGFpbi9yZWxlYXNlIHNlbGYgaW4gdGhpcyBkZWxlZ2F0ZSBtZXRob2Qg
c2luY2UgdGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8KLSAgICAvLyBhbnl0aGluZyBp
bmNsdWRpbmcgcG9zc2libHkgcmVsZWFzaW5nIHNlbGY7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMg
MzI2NjIxNgotICAgIFtzZWxmIHJldGFpbl07Ci0gICAgW1tkYXRhU291cmNlIF93ZWJWaWV3XSBf
bWFpblJlY2VpdmVkQnl0ZXNTb0ZhcjpfYnl0ZXNSZWNlaXZlZAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZnJvbURhdGFTb3VyY2U6ZGF0YVNvdXJjZQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGU6Tk9dOwotICAgIAot
ICAgIFtzdXBlciBkaWRSZWNlaXZlRGF0YTpkYXRhIGxlbmd0aFJlY2VpdmVkOmxlbmd0aFJlY2Vp
dmVkXTsKLSAgICBfYnl0ZXNSZWNlaXZlZCArPSBbZGF0YSBsZW5ndGhdOwotCi0gICAgTE9HKExv
YWRpbmcsICIlZCBvZiAlZCIsIF9ieXRlc1JlY2VpdmVkLCBfY29udGVudExlbmd0aCk7Ci0gICAg
W3NlbGYgcmVsZWFzZV07Ci19Ci0KLS0gKHZvaWQpZGlkRmluaXNoTG9hZGluZwotewotICAgIEFT
U0VSVChbW2RhdGFTb3VyY2UgX1VSTF0gX3dlYmtpdF9zaG91bGRMb2FkQXNFbXB0eURvY3VtZW50
XSB8fCAhW3NlbGYgZGVmZXJzQ2FsbGJhY2tzXSk7Ci0gICAgQVNTRVJUKFtbZGF0YVNvdXJjZSBf
VVJMXSBfd2Via2l0X3Nob3VsZExvYWRBc0VtcHR5RG9jdW1lbnRdIHx8ICFbW2RhdGFTb3VyY2Ug
X3dlYlZpZXddIGRlZmVyc0NhbGxiYWNrc10pOwotCi0gICAgTE9HKExvYWRpbmcsICJVUkwgPSAl
QCIsIFtkYXRhU291cmNlIF9VUkxdKTsKLSAgICAgICAgCi0gICAgLy8gQ2FsbHMgaW4gdGhpcyBt
ZXRob2Qgd2lsbCBtb3N0IGxpa2VseSByZXN1bHQgaW4gYSBjYWxsIHRvIHJlbGVhc2UsIHNvIHdl
IG11c3QgcmV0YWluLgotICAgIFtzZWxmIHJldGFpbl07Ci0KLSAgICBbZGF0YVNvdXJjZSBfZmlu
aXNoZWRMb2FkaW5nXTsKLSAgICBbW2RhdGFTb3VyY2UgX3dlYlZpZXddIF9tYWluUmVjZWl2ZWRC
eXRlc1NvRmFyOl9ieXRlc1JlY2VpdmVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmcm9tRGF0YVNvdXJjZTpkYXRhU291cmNlCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOllFU107Ci0gICAgW3N1cGVyIGRpZEZpbmlzaExv
YWRpbmddOwotCi0gICAgW3NlbGYgcmVsZWFzZV07Ci19Ci0KLS0gKHZvaWQpZGlkRmFpbFdpdGhF
cnJvcjooTlNFcnJvciAqKWVycm9yCi17Ci0gICAgQVNTRVJUKCFbc2VsZiBkZWZlcnNDYWxsYmFj
a3NdKTsKLSAgICBBU1NFUlQoIVtbZGF0YVNvdXJjZSBfd2ViVmlld10gZGVmZXJzQ2FsbGJhY2tz
XSk7Ci0KLSAgICBbc2VsZiByZWNlaXZlZEVycm9yOmVycm9yXTsKLX0KLQotLSAoTlNVUkxSZXF1
ZXN0ICopbG9hZFdpdGhSZXF1ZXN0Tm93OihOU1VSTFJlcXVlc3QgKilyCi17Ci0gICAgQk9PTCBz
aG91bGRMb2FkRW1wdHlCZWZvcmVSZWRpcmVjdCA9IFtbciBVUkxdIF93ZWJraXRfc2hvdWxkTG9h
ZEFzRW1wdHlEb2N1bWVudF07Ci0KLSAgICBBU1NFUlQoY29ubmVjdGlvbiA9PSBuaWwpOwotICAg
IEFTU0VSVChzaG91bGRMb2FkRW1wdHlCZWZvcmVSZWRpcmVjdCB8fCAhW3NlbGYgZGVmZXJzQ2Fs
bGJhY2tzXSk7Ci0gICAgQVNTRVJUKHNob3VsZExvYWRFbXB0eUJlZm9yZVJlZGlyZWN0IHx8ICFb
W2RhdGFTb3VyY2UgX3dlYlZpZXddIGRlZmVyc0NhbGxiYWNrc10pOwotCi0gICAgLy8gU2VuZCB0
aGlzIHN5bnRoZXRpYyBkZWxlZ2F0ZSBjYWxsYmFjayBzaW5jZSBjbGllbnRzIGV4cGVjdCBpdCwg
YW5kCi0gICAgLy8gd2Ugbm8gbG9uZ2VyIHNlbmQgdGhlIGNhbGxiYWNrIGZyb20gd2l0aGluIE5T
VVJMQ29ubmVjdGlvbiBmb3IKLSAgICAvLyBpbml0aWFsIHJlcXVlc3RzLgotICAgIHIgPSBbc2Vs
ZiB3aWxsU2VuZFJlcXVlc3Q6ciByZWRpcmVjdFJlc3BvbnNlOm5pbF07Ci0gICAgTlNVUkwgKlVS
TCA9IFtyIFVSTF07Ci0gICAgQk9PTCBzaG91bGRMb2FkRW1wdHkgPSBbVVJMIF93ZWJraXRfc2hv
dWxkTG9hZEFzRW1wdHlEb2N1bWVudF07Ci0KLSAgICBpZiAoc2hvdWxkTG9hZEVtcHR5QmVmb3Jl
UmVkaXJlY3QgJiYgIXNob3VsZExvYWRFbXB0eSAmJiBbc2VsZiBkZWZlcnNDYWxsYmFja3NdKSB7
Ci0gICAgICAgIHJldHVybiByOwotICAgIH0KLQotICAgIGlmIChzaG91bGRMb2FkRW1wdHkgfHwg
W1dlYlZpZXcgX3JlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lOltVUkwgc2NoZW1lXV0p
IHsKLSAgICAgICAgTlNTdHJpbmcgKk1JTUVUeXBlOwotICAgICAgICBpZiAoc2hvdWxkTG9hZEVt
cHR5KSB7Ci0gICAgICAgICAgICBNSU1FVHlwZSA9IEAidGV4dC9odG1sIjsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIE1JTUVUeXBlID0gW1dlYlZpZXcgX2dlbmVyYXRlZE1JTUVUeXBl
Rm9yVVJMU2NoZW1lOltVUkwgc2NoZW1lXV07Ci0gICAgICAgIH0KLQotICAgICAgICBOU1VSTFJl
c3BvbnNlICpyZXNwID0gW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpVUkwgTUlN
RVR5cGU6TUlNRVR5cGUKLSAgICAgICAgICAgIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRF
bmNvZGluZ05hbWU6bmlsXTsKLQlbc2VsZiBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcF07Ci0JW3Jl
c3AgcmVsZWFzZV07Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY29ubmVjdGlvbiA9IFtbTlNVUkxD
b25uZWN0aW9uIGFsbG9jXSBpbml0V2l0aFJlcXVlc3Q6ciBkZWxlZ2F0ZTpwcm94eV07Ci0gICAg
fQotCi0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoQk9PTClsb2FkV2l0aFJlcXVlc3Q6KE5TVVJM
UmVxdWVzdCAqKXIKLXsKLSAgICBBU1NFUlQoY29ubmVjdGlvbiA9PSBuaWwpOwotCi0gICAgQk9P
TCBkZWZlciA9IFtzZWxmIGRlZmVyc0NhbGxiYWNrc107Ci0gICAgaWYgKGRlZmVyKSB7Ci0gICAg
ICAgIE5TVVJMICpVUkwgPSBbciBVUkxdOwotICAgICAgICBCT09MIHNob3VsZExvYWRFbXB0eSA9
IFtVUkwgX3dlYmtpdF9zaG91bGRMb2FkQXNFbXB0eURvY3VtZW50XTsKLSAgICAgICAgaWYgKHNo
b3VsZExvYWRFbXB0eSkgewotICAgICAgICAgICAgZGVmZXIgPSBOTzsKLSAgICAgICAgfQotICAg
IH0KLSAgICBpZiAoIWRlZmVyKSB7Ci0gICAgICAgIHIgPSBbc2VsZiBsb2FkV2l0aFJlcXVlc3RO
b3c6cl07Ci0gICAgICAgIGlmIChyICE9IG5pbCkgewotICAgICAgICAgICAgLy8gU3RhcnRlZCBh
cyBhbiBlbXB0eSBkb2N1bWVudCwgYnV0IHdhcyByZWRpcmVjdGVkIHRvIHNvbWV0aGluZyBub24t
ZW1wdHkuCi0gICAgICAgICAgICBBU1NFUlQoW3NlbGYgZGVmZXJzQ2FsbGJhY2tzXSk7Ci0gICAg
ICAgICAgICBkZWZlciA9IFlFUzsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoZGVmZXIpIHsK
LSAgICAgICAgTlNVUkxSZXF1ZXN0ICpjb3B5ID0gW3IgY29weV07Ci0gICAgICAgIFtfaW5pdGlh
bFJlcXVlc3QgcmVsZWFzZV07Ci0gICAgICAgIF9pbml0aWFsUmVxdWVzdCA9IGNvcHk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIFlFUzsKLX0KLQotLSAodm9pZClzZXREZWZlcnNDYWxsYmFja3M6KEJP
T0wpZGVmZXJzCi17Ci0gICAgW3N1cGVyIHNldERlZmVyc0NhbGxiYWNrczpkZWZlcnNdOwotICAg
IGlmICghZGVmZXJzKSB7Ci0gICAgICAgIE5TVVJMUmVxdWVzdCAqciA9IF9pbml0aWFsUmVxdWVz
dDsKLSAgICAgICAgaWYgKHIgIT0gbmlsKSB7Ci0gICAgICAgICAgICBfaW5pdGlhbFJlcXVlc3Qg
PSBuaWw7Ci0gICAgICAgICAgICBbc2VsZiBsb2FkV2l0aFJlcXVlc3ROb3c6cl07Ci0gICAgICAg
ICAgICBbciByZWxlYXNlXTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotQGVuZApJbmRleDogLi9X
ZWJWaWV3LnN1YnByb2ovV2ViTWFpblJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls
ZTogL2N2cy9yb290L1dlYktpdC9XZWJWaWV3LnN1YnByb2ovV2ViTWFpblJlc291cmNlTG9hZGVy
LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNTEKZGlmZiAtcCAtdSAtcCAtdSAtcjEuNTEgLi9X
ZWJWaWV3LnN1YnByb2ovV2ViTWFpblJlc291cmNlTG9hZGVyLmgKLS0tIC4vV2ViVmlldy5zdWJw
cm9qL1dlYk1haW5SZXNvdXJjZUxvYWRlci5oCTYgSnVuIDIwMDUgMTE6NDM6NTAgLTAwMDAJMS41
MQorKysgLi9XZWJWaWV3LnN1YnByb2ovV2ViTWFpblJlc291cmNlTG9hZGVyLmgJMzAgSnVuIDIw
MDUgMTQ6NTY6MzggLTAwMDAKQEAgLTI4LDEzICsyOCwxMyBAQAogCiAjaW1wb3J0IDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaD4KIAotI2ltcG9ydCA8V2ViS2l0L1dlYkJhc2VSZXNvdXJjZUhhbmRs
ZURlbGVnYXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViTG9hZGVyLmg+CiAjaW1wb3J0IDxXZWJL
aXRTeXN0ZW1JbnRlcmZhY2UuaD4KIAogQGNsYXNzIFdlYlBvbGljeURlY2lzaW9uTGlzdGVuZXI7
CiBAY2xhc3MgV2ViRGF0YVNvdXJjZTsKIAotQGludGVyZmFjZSBXZWJNYWluUmVzb3VyY2VDbGll
bnQgOiBXZWJCYXNlUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZQorQGludGVyZmFjZSBXZWJNYWluUmVz
b3VyY2VMb2FkZXIgOiBXZWJMb2FkZXIKIHsKICAgICBpbnQgX2NvbnRlbnRMZW5ndGg7IC8vIGZv
ciBsb2dnaW5nIG9ubHkKICAgICBpbnQgX2J5dGVzUmVjZWl2ZWQ7IC8vIGZvciBsb2dnaW5nIG9u
bHkKSW5kZXg6IC4vV2ViVmlldy5zdWJwcm9qL1dlYk1haW5SZXNvdXJjZUxvYWRlci5tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJLaXQvV2ViVmlldy5zdWJwcm9qL1dlYk1haW5S
ZXNvdXJjZUxvYWRlci5tLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjI3MApkaWZmIC1wIC11IC1w
IC11IC1yMS4yNzAgLi9XZWJWaWV3LnN1YnByb2ovV2ViTWFpblJlc291cmNlTG9hZGVyLm0KLS0t
IC4vV2ViVmlldy5zdWJwcm9qL1dlYk1haW5SZXNvdXJjZUxvYWRlci5tCTYgSnVuIDIwMDUgMTE6
NDM6NTAgLTAwMDAJMS4yNzAKKysrIC4vV2ViVmlldy5zdWJwcm9qL1dlYk1haW5SZXNvdXJjZUxv
YWRlci5tCTMwIEp1biAyMDA1IDE0OjU2OjM4IC0wMDAwCkBAIC0yNiw3ICsyNiw3IEBACiAgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpbXBvcnQgPFdlYktpdC9XZWJNYWluUmVzb3VyY2VDbGllbnQuaD4K
KyNpbXBvcnQgPFdlYktpdC9XZWJNYWluUmVzb3VyY2VMb2FkZXIuaD4KIAogI2ltcG9ydCA8Rm91
bmRhdGlvbi9OU0hUVFBDb29raWUuaD4KICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxDb25uZWN0
aW9uLmg+CkBAIC01MSw5ICs1MSw5IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViVmlld1ByaXZhdGUu
aD4KICNpbXBvcnQgPFdlYktpdC9XZWJCcmlkZ2UuaD4KIAotLy8gRklYTUU6IE1vcmUgdGhhdCBp
cyBpbiBjb21tb24gd2l0aCBXZWJTdWJyZXNvdXJjZUNsaWVudCBzaG91bGQgbW92ZSB1cCBpbnRv
IFdlYkJhc2VSZXNvdXJjZUhhbmRsZURlbGVnYXRlLgorLy8gRklYTUU6IE1vcmUgdGhhdCBpcyBp
biBjb21tb24gd2l0aCBXZWJTdWJyZXNvdXJjZUxvYWRlciBzaG91bGQgbW92ZSB1cCBpbnRvIFdl
YkxvYWRlci4KIAotQGltcGxlbWVudGF0aW9uIFdlYk1haW5SZXNvdXJjZUNsaWVudAorQGltcGxl
bWVudGF0aW9uIFdlYk1haW5SZXNvdXJjZUxvYWRlcgogCiAtIGluaXRXaXRoRGF0YVNvdXJjZToo
V2ViRGF0YVNvdXJjZSAqKWRzCiB7CkBAIC0zMTcsOSArMzE3LDkgQEAKICAgICAvLyBGSVhNRTog
U2luY2Ugd2UncmUgbm90IGdvaW5nIHRvIGZpeCA8cmRhcjovL3Byb2JsZW0vMzA4NzUzNT4gZm9y
IFRpZ2VyLCB3ZSBzaG91bGQgbm90IAogICAgIC8vIGxvYWQgbXVsdGlwYXJ0L3gtbWl4ZWQtcmVw
bGFjZSBjb250ZW50LiAgUGFnZXMgd2l0aCBzdWNoIGNvbnRlbnQgY29udGFpbiB3aGF0IGlzIAog
ICAgIC8vIGVzc2VudGlhbGx5IGFuIGluZmluaXRlIGxvYWQgYW5kIHRoZXJlZm9yZSBhIG1lbW9y
eSBsZWFrLiBCb3RoIHRoaXMgY29kZSBhbmQgY29kZSBpbgotICAgIC8vIFN1YnJlc291cmNlQ2xp
ZW50IG11c3QgYmUgcmVtb3ZlZCBvbmNlIG11bHRpcGFydC94LW1peGVkLXJlcGxhY2UgaXMgZnVs
bHkgaW1wbGVtZW50ZWQuIAorICAgIC8vIFN1YnJlc291cmNlTG9hZGVyIG11c3QgYmUgcmVtb3Zl
ZCBvbmNlIG11bHRpcGFydC94LW1peGVkLXJlcGxhY2UgaXMgZnVsbHkgaW1wbGVtZW50ZWQuIAog
ICAgIGlmIChbW3IgTUlNRVR5cGVdIGlzRXF1YWxUb1N0cmluZzpAIm11bHRpcGFydC94LW1peGVk
LXJlcGxhY2UiXSkgewotICAgICAgICBbZGF0YVNvdXJjZSBfcmVtb3ZlU3VicmVzb3VyY2VDbGll
bnQ6c2VsZl07CisgICAgICAgIFtkYXRhU291cmNlIF9yZW1vdmVTdWJyZXNvdXJjZUxvYWRlcjpz
ZWxmXTsKICAgICAgICAgW1tbZGF0YVNvdXJjZSBfd2ViVmlld10gbWFpbkZyYW1lXSBfY2hlY2tM
b2FkQ29tcGxldGVdOwogICAgICAgICBbc2VsZiBjYW5jZWxXaXRoRXJyb3I6W05TRXJyb3IgX3dl
YktpdEVycm9yV2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWluCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOk5TVVJMRXJyb3JVbnN1
cHBvcnRlZFVSTAo=
</data>
<flag name="review"
          id="139"
          type_id="1"
          status="+"
          setter="sullivan"
    />
          </attachment>
      

    </bug>

</bugzilla>