AttributeError: 'NoneType' object has no attribute 'remove_unneeded_initial_trunk_delete'

Nikola Radovanovic <[email protected]> Thu, 8 May 2014 15:04:17 +0000
Newsgroups gmane.comp.version-control.subversion.cvs2svn.user
Message-ID <[email protected]>
------=_Part_3955_1527075798.1399565014955
Content-Type: multipart/alternative; 
	boundary="----=_Part_3956_985871689.1399565014955"

------=_Part_3956_985871689.1399565014955
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: quoted-printable

Hi,
i have tried cvs2git on trunk (2.5.0-dev) and also 2.3.0 and i got the same=
 error when running: cvs2git --options=3Dcvs2git.options (options file is a=
ttached in this email. unfortunately, failing file is too large to be attac=
hed). It seems like there is some problem (unhandled error) in cvs2git, but=
 I'm not sure. I have used cvs2git in about 6 or 7 really large CVS to GIT =
transformations with no such problem.

I will resolve this problem by omitting failing file and add it later manua=
lly (only one branch, so no problem); but maybe you can find something usef=
ul to improve code if there is a problem

ERROR: '/media/Prenosivi/to_convert/cvsroot/DMS_DB/ERwin/BACKUP_CLEAN_ALL_S=
ER.ER1,v' is not a valid ,v file
Traceback (most recent call last):
  File "cvs2git", line 70, in <module>
    git_main(os.path.basename(sys.argv[0]), sys.argv[1:])
  File "/media/Prenosivi/cvs2svn-trunk/cvs2svn_lib/main.py", line 124, in g=
it_main
    main(progname, run_options, pass_manager)
  File "/media/Prenosivi/cvs2svn-trunk/cvs2svn_lib/main.py", line 101, in m=
ain
    pass_manager.run(run_options)
  File "/media/Prenosivi/cvs2svn-trunk/cvs2svn_lib/pass_manager.py", line 2=
55, in run
    the_pass.run(run_options, stats_keeper)
  File "/media/Prenosivi/cvs2svn-trunk/cvs2svn_lib/passes.py", line 109, in=
 run
    walk_repository(project, file_key_generator, cd.record_fatal_error),
  File "/media/Prenosivi/cvs2svn-trunk/cvs2svn_lib/collect_data.py", line 1=
169, in process_project
    self._process_cvs_file_items(cvs_file_items)
  File "/media/Prenosivi/cvs2svn-trunk/cvs2svn_lib/collect_data.py", line 1=
144, in _process_cvs_file_items
    cvs_file_items.remove_unneeded_initial_trunk_delete(self.metadata_db)
AttributeError: 'NoneType' object has no attribute 'remove_unneeded_initial=
_trunk_delete'

many thanks in advance and best regards


--
___________________________________________________________________________=
_______________________________________

Nikola Radovanovic | Schneider Electric DMS NS | Smart Grid IT | SERBIA | C=
PASv2 team deputy
Phone: +381 (0)21 488 3633 | Fax: +381 (0)21 488 3789 | Mobile: +381 (0)64 =
29 74 528
Email: [email protected]<mailto:nikola.radovano=
[email protected]> | Site: www.schneider-electric-dms.com<http=
://www.schneider-electric-dms.com/> | Address: Narodnog fronta 25A-D, 21000=
 Novi Sad
*** Please consider the environment before printing this e-mail

------------------------------------------------------
http://cvs2svn.tigris.org/ds/viewMessage.do?dsForumId=3D1670&dsMessageId=3D=
3077865

To unsubscribe from this discussion, e-mail: [[email protected]=
ris.org].
------=_Part_3956_985871689.1399565014955
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-ID: <[email protected]>

<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Diso-8859-=
1">
</head>
<body bgcolor=3D"#FFFFFF" text=3D"#000000">
Hi,<br>
i have tried cvs2git on trunk (2.5.0-dev) and also 2.3.0 and i got the same=
 error when running:
<font color=3D"#3366ff">cvs2git --options=3Dcvs2git.options</font> (options=
 file is attached in this email. unfortunately, failing file is too large t=
o be attached). It seems like there is some problem (unhandled error) in cv=
s2git, but I'm not sure. I have used
 cvs2git in about 6 or 7 <i>really large</i> CVS to GIT transformations wit=
h no such problem.<br>
<br>
I will resolve this problem by omitting failing file and add it later manua=
lly (only one branch, so no problem); but maybe you can find something usef=
ul to improve code if there is a problem<br>
<font color=3D"#ff0000"><br>
ERROR: '/media/Prenosivi/to_convert/cvsroot/DMS_DB/ERwin/BACKUP_CLEAN_ALL_S=
ER.ER1,v' is not a valid ,v file<br>
Traceback (most recent call last):<br>
&nbsp; File &quot;cvs2git&quot;, line 70, in &lt;module&gt;<br>
&nbsp;&nbsp;&nbsp; git_main(os.path.basename(sys.argv[0]), sys.argv[1:])<br=
>
&nbsp; File &quot;/media/Prenosivi/cvs2svn-trunk/cvs2svn_lib/main.py&quot;,=
 line 124, in git_main<br>
&nbsp;&nbsp;&nbsp; main(progname, run_options, pass_manager)<br>
&nbsp; File &quot;/media/Prenosivi/cvs2svn-trunk/cvs2svn_lib/main.py&quot;,=
 line 101, in main<br>
&nbsp;&nbsp;&nbsp; pass_manager.run(run_options)<br>
&nbsp; File &quot;/media/Prenosivi/cvs2svn-trunk/cvs2svn_lib/pass_manager.p=
y&quot;, line 255, in run<br>
&nbsp;&nbsp;&nbsp; the_pass.run(run_options, stats_keeper)<br>
&nbsp; File &quot;/media/Prenosivi/cvs2svn-trunk/cvs2svn_lib/passes.py&quot=
;, line 109, in run<br>
&nbsp;&nbsp;&nbsp; walk_repository(project, file_key_generator, cd.record_f=
atal_error),<br>
&nbsp; File &quot;/media/Prenosivi/cvs2svn-trunk/cvs2svn_lib/collect_data.p=
y&quot;, line 1169, in process_project<br>
&nbsp;&nbsp;&nbsp; self._process_cvs_file_items(cvs_file_items)<br>
&nbsp; File &quot;/media/Prenosivi/cvs2svn-trunk/cvs2svn_lib/collect_data.p=
y&quot;, line 1144, in _process_cvs_file_items<br>
&nbsp;&nbsp;&nbsp; cvs_file_items.remove_unneeded_initial_trunk_delete(self=
.metadata_db)<br>
AttributeError: 'NoneType' object has no attribute 'remove_unneeded_initial=
_trunk_delete'</font><br>
<br>
many thanks in advance and best regards<br>
<br>
<br>
<div class=3D"moz-signature">-- <br>
<span style=3D"font-size: 7.5pt; font-family:
        &quot;Arial&quot;,&quot;sans-serif&quot;; color: green;">__________=
___________________________________________________________________________=
_____________________________</span><span style=3D"font-size: 7.5pt; font-f=
amily:
        &quot;Arial&quot;,&quot;sans-serif&quot;;"><o:p></o:p></span>
<div class=3D"WordSection1">
<p class=3D"MsoNormal" style=3D"text-align: justify;"><span style=3D"font-s=
ize: 7.5pt; font-family:
            &quot;Arial&quot;,&quot;sans-serif&quot;;"><o:p>&nbsp;</o:p></s=
pan></p>
<p class=3D"MsoNormal" style=3D"text-align: justify;"><b><span style=3D"fon=
t-size: 7.5pt; font-family:
              &quot;Arial&quot;,&quot;sans-serif&quot;; color: black;">Niko=
la Radovanovic |
</span></b><b><span style=3D"font-size: 7.5pt;
              font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;
              color: green;">Schneider Electric DMS NS</span></b><b><span s=
tyle=3D"font-size:
              7.5pt; font-family:
              &quot;Arial&quot;,&quot;sans-serif&quot;; color: black;">
 | Smart Grid IT | SERBIA | CPASv2 team deputy</span></b><span style=3D"fon=
t-size: 7.5pt; font-family:
            &quot;Arial&quot;,&quot;sans-serif&quot;;"><o:p></o:p></span></=
p>
<p class=3D"MsoNormal" style=3D"text-align: justify;"><b><span style=3D"fon=
t-size: 7.5pt; font-family:
              &quot;Arial&quot;,&quot;sans-serif&quot;; color: black;">Phon=
e:</span></b><span style=3D"font-size: 7.5pt; font-family:
            &quot;Arial&quot;,&quot;sans-serif&quot;; color: black;">
 &#43;381 (0)21 488 3633<b> | Fax:</b> &#43;381 (0)21 488 3789<b> | Mobile:=
</b> &#43;381 (0)64 29 74 528</span><span style=3D"font-size: 7.5pt;
            font-family: &quot;Arial&quot;,&quot;sans-serif&quot;;"><o:p></=
o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-align: justify;"><b><span style=3D"fon=
t-size: 7.5pt; font-family:
              &quot;Arial&quot;,&quot;sans-serif&quot;; color: black;">Emai=
l:</span></b><span style=3D"font-size: 7.5pt; font-family:
            &quot;Arial&quot;,&quot;sans-serif&quot;; color: black;">
</span><span style=3D"font-size: 7.5pt; font-family:
            &quot;Arial&quot;,&quot;sans-serif&quot;;"><a href=3D"mailto:ni=
[email protected]"><span style=3D"color: blue;">n=
[email protected]</span></a><b>
<span style=3D"color: black;">| Site: </span></b><a href=3D"http://www.schn=
eider-electric-dms.com/"><span style=3D"color: blue;">www.schneider-electri=
c-dms.com</span></a><b>
<span style=3D"color: black;">| Address:</span></b><span style=3D"color: bl=
ack;"> Narodnog fronta 25A-D, 21000 Novi Sad</span><o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-align: justify;"><span style=3D"font-s=
ize: 7.5pt; font-family:
            &quot;Arial&quot;,&quot;sans-serif&quot;; color: rgb(0, 160,
            0);">*** Please consider the environment before printing this e=
-mail</span><span style=3D"font-size: 7.5pt; font-family:
            &quot;Arial&quot;,&quot;sans-serif&quot;;"><o:p></o:p></span></=
p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
</div>
</body>
</html>

------=_Part_3956_985871689.1399565014955--

------=_Part_3955_1527075798.1399565014955
Content-Type: text/plain; name=cvs2git.options
Content-Transfer-Encoding: base64
Content-ID: <[email protected]>
Content-Disposition: attachment; filename=cvs2git.options; size=28946; 
	creation-date="Thu, 08 May 2014 15:04:17 GMT"; 
	modification-date="Thu, 08 May 2014 15:04:17 GMT"
Content-Description: cvs2git.options

IyAoQmUgaW4gLSotIG1vZGU6IHB5dGhvbjsgY29kaW5nOiB1dGYtOCAtKi0gbW9kZS4pDQojDQoj
ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQojIENvcHlyaWdodCAoYykgMjAwNi0yMDEwIENvbGxhYk5ldC4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuDQojDQojIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3Jp
YmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoDQojIHlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhcyBwYXJ0IG9mIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIHRlcm1zDQojIGFyZSBhbHNvIGF2
YWlsYWJsZSBhdCBodHRwOi8vc3VidmVyc2lvbi50aWdyaXMub3JnL2xpY2Vuc2UtMS5odG1sLg0K
IyBJZiBuZXdlciB2ZXJzaW9ucyBvZiB0aGlzIGxpY2Vuc2UgYXJlIHBvc3RlZCB0aGVyZSwgeW91
IG1heSB1c2UgYQ0KIyBuZXdlciB2ZXJzaW9uIGluc3RlYWQsIGF0IHlvdXIgb3B0aW9uLg0KIw0K
IyBUaGlzIHNvZnR3YXJlIGNvbnNpc3RzIG9mIHZvbHVudGFyeSBjb250cmlidXRpb25zIG1hZGUg
YnkgbWFueQ0KIyBpbmRpdmlkdWFscy4gIEZvciBleGFjdCBjb250cmlidXRpb24gaGlzdG9yeSwg
c2VlIHRoZSByZXZpc2lvbg0KIyBoaXN0b3J5IGFuZCBsb2dzLCBhdmFpbGFibGUgYXQgaHR0cDov
L2N2czJzdm4udGlncmlzLm9yZy8uDQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCiMgICAgICAgICAgICAgICAg
ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiMgICAgICAgICAgICAgICAgICAjIyBQTEVBU0UgUkVB
RCBNRSEgIyMNCiMgICAgICAgICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiMNCiMg
VGhpcyBpcyBhIHRlbXBsYXRlIGZvciBhbiBvcHRpb25zIGZpbGUgdGhhdCBjYW4gYmUgdXNlZCB0
byBjb25maWd1cmUNCiMgY3ZzMmdpdCB0byBjb252ZXJ0IHRvIGdpdCByYXRoZXIgdGhhbiB0byBT
dWJ2ZXJzaW9uLiAgU2VlDQojIHd3dy9jdnMyZ2l0Lmh0bWwgYW5kIHd3dy9jdnMyc3ZuLmh0bWwg
Zm9yIGdlbmVyYWwgaW5mb3JtYXRpb24sIGFuZA0KIyBzZWUgdGhlIGNvbW1lbnRzIGluIHRoaXMg
ZmlsZSBmb3IgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBvcHRpb25zIGFyZQ0KIyBhdmFpbGFibGUg
YW5kIGhvdyB0aGV5IGNhbiBiZSBzZXQuDQojDQojIFRoZSBwcm9ncmFtIHRoYXQgaXMgcnVuIHRv
IGNvbnZlcnQgZnJvbSBDVlMgdG8gZ2l0IGlzIGNhbGxlZA0KIyBjdnMyZ2l0LiAgUnVuIGl0IHdp
dGggdGhlIC0tb3B0aW9ucyBvcHRpb24sIHBhc3NpbmcgaXQgdGhpcyBmaWxlDQojIGxpa2UgdGhp
czoNCiMNCiMgICAgIGN2czJnaXQgLS1vcHRpb25zPWN2czJnaXQtZXhhbXBsZS5vcHRpb25zDQoj
DQojIFRoZSBvdXRwdXQgb2YgY3ZzMmdpdCBpcyBhIGJsb2IgZmlsZSBhbmQgYSBkdW1wIGZpbGUg
dGhhdCBjYW4gYmUNCiMgbG9hZGVkIGludG8gZ2l0IHVzaW5nIHRoZSAiZ2l0IGZhc3QtaW1wb3J0
IiBjb21tYW5kLiAgUGxlYXNlIHJlYWQNCiMgd3d3L2N2czJnaXQuaHRtbCBmb3IgbW9yZSBpbmZv
cm1hdGlvbi4NCiMNCiMgTWFueSBvcHRpb25zIGRvIG5vdCBoYXZlIGRlZmF1bHRzLCBzbyBpdCBp
cyBlYXNpZXIgdG8gY29weSB0aGlzIGZpbGUNCiMgYW5kIG1vZGlmeSB3aGF0IHlvdSBuZWVkIHJh
dGhlciB0aGFuIGNyZWF0aW5nIGEgbmV3IG9wdGlvbnMgZmlsZQ0KIyBmcm9tIHNjcmF0Y2guICBU
aGlzIGZpbGUgaXMgaW4gUHl0aG9uIHN5bnRheCwgYnV0IHlvdSBkb24ndCBuZWVkIHRvDQojIGtu
b3cgUHl0aG9uIHRvIG1vZGlmeSBpdC4gIEJ1dCBpZiB5b3UgKmRvKiBrbm93IFB5dGhvbiwgdGhl
biB5b3UNCiMgd2lsbCBiZSBoYXBweSB0byBrbm93IHRoYXQgeW91IGNhbiB1c2UgYXJiaXRhcnkg
UHl0aG9uIGNvbnN0cnVjdHMgdG8NCiMgZG8gZmFuY3kgY29uZmlndXJhdGlvbiB0cmlja3MuDQoj
DQojIEJ1dCBwbGVhc2UgYmUgYXdhcmUgb2YgdGhlIGZvbGxvd2luZzoNCiMNCiMgKiBJbiBtYW55
IHBsYWNlcywgbGVhZGluZyB3aGl0ZXNwYWNlIGlzIHNpZ25pZmljYW50IGluIFB5dGhvbiAoaXQg
aXMNCiMgICB1c2VkIGluc3RlYWQgb2YgY3VybHkgYnJhY2VzIHRvIGdyb3VwIHN0YXRlbWVudHMg
dG9nZXRoZXIpLg0KIyAgIFRoZXJlZm9yZSwgaWYgeW91IGRvbid0IGtub3cgd2hhdCB5b3UgYXJl
IGRvaW5nLCBpdCBpcyBiZXN0IHRvDQojICAgbGVhdmUgdGhlIHdoaXRlc3BhY2UgYXMgaXQgaXMu
DQojDQojICogSW4gbm9ybWFsIHN0cmluZ3MsIFB5dGhvbiB0cmVhdHMgYSBiYWNrc2xhc2ggKCJc
IikgYXMgYW4gZXNjYXBlDQojICAgY2hhcmFjdGVyLiAgVGhlcmVmb3JlLCBpZiB5b3Ugd2FudCB0
byBzcGVjaWZ5IGEgc3RyaW5nIHRoYXQNCiMgICBjb250YWlucyBhIGJhY2tzbGFzaCwgeW91IG5l
ZWQgZWl0aGVyIHRvIGVzY2FwZSB0aGUgYmFja3NsYXNoIHdpdGgNCiMgICBhbm90aGVyIGJhY2tz
bGFzaCAoIlxcIiksIG9yIHVzZSBhICJyYXcgc3RyaW5nIiwgYXMgaW4gb25lIGlmIHRoZQ0KIyAg
IGZvbGxvd2luZyBlcXVpdmFsZW50IGV4YW1wbGVzOg0KIw0KIyAgICAgICBjdnNfZXhlY3V0YWJs
ZSA9ICdjOlxcd2luZG93c1xcc3lzdGVtMzJcXGN2cy5leGUnDQojICAgICAgIGN2c19leGVjdXRh
YmxlID0gcidjOlx3aW5kb3dzXHN5c3RlbTMyXGN2cy5leGUnDQojDQojICAgU2VlIGh0dHA6Ly9k
b2NzLnB5dGhvbi5vcmcvdHV0b3JpYWwvaW50cm9kdWN0aW9uLmh0bWwjc3RyaW5ncyBmb3INCiMg
ICBtb3JlIGluZm9ybWF0aW9uLg0KIw0KIyBUd28gaWRlbnRpZmllcnMgd2lsbCBoYXZlIGJlZW4g
ZGVmaW5lZCBiZWZvcmUgdGhpcyBmaWxlIGlzIGV4ZWN1dGVkLA0KIyBhbmQgY2FuIGJlIHVzZWQg
ZnJlZWx5IHdpdGhpbiB0aGlzIGZpbGU6DQojDQojICAgICBjdHggLS0gYSBDdHggb2JqZWN0IChz
ZWUgY3ZzMnN2bl9saWIvY29udGV4dC5weSksIHdoaWNoIGhvbGRzDQojICAgICAgICAgbWFueSBj
b25maWd1cmF0aW9uIG9wdGlvbnMNCiMNCiMgICAgIHJ1bl9vcHRpb25zIC0tIGFuIGluc3RhbmNl
IG9mIHRoZSBHaXRSdW5PcHRpb25zIGNsYXNzIChzZWUNCiMgICAgICAgICBjdnMyc3ZuX2xpYi9n
aXRfcnVuX29wdGlvbnMucHkpLCB3aGljaCBob2xkcyBzb21lIHZhcmlhYmxlcw0KIyAgICAgICAg
IGdvdmVybmluZyBob3cgY3ZzMmdpdCBpcyBydW4NCg0KDQojIEltcG9ydCBzb21lIG1vZHVsZXMg
dGhhdCBhcmUgdXNlZCBpbiBzZXR0aW5nIHRoZSBvcHRpb25zOg0KaW1wb3J0IG9zDQoNCmZyb20g
Y3ZzMnN2bl9saWIgaW1wb3J0IGNvbmZpZw0KZnJvbSBjdnMyc3ZuX2xpYiBpbXBvcnQgY2hhbmdl
c2V0X2RhdGFiYXNlDQpmcm9tIGN2czJzdm5fbGliLmNvbW1vbiBpbXBvcnQgQ1ZTVGV4dERlY29k
ZXINCmZyb20gY3ZzMnN2bl9saWIubG9nIGltcG9ydCBsb2dnZXINCmZyb20gY3ZzMnN2bl9saWIu
Z2l0X3JldmlzaW9uX2NvbGxlY3RvciBpbXBvcnQgR2l0UmV2aXNpb25Db2xsZWN0b3INCmZyb20g
Y3ZzMnN2bl9saWIuZXh0ZXJuYWxfYmxvYl9nZW5lcmF0b3IgaW1wb3J0IEV4dGVybmFsQmxvYkdl
bmVyYXRvcg0KZnJvbSBjdnMyc3ZuX2xpYi5naXRfb3V0cHV0X29wdGlvbiBpbXBvcnQgR2l0UmV2
aXNpb25NYXJrV3JpdGVyDQpmcm9tIGN2czJzdm5fbGliLmdpdF9vdXRwdXRfb3B0aW9uIGltcG9y
dCBHaXRPdXRwdXRPcHRpb24NCmZyb20gY3ZzMnN2bl9saWIuZHZjc19jb21tb24gaW1wb3J0IEtl
eXdvcmRIYW5kbGluZ1Byb3BlcnR5U2V0dGVyDQpmcm9tIGN2czJzdm5fbGliLnJjc19yZXZpc2lv
bl9tYW5hZ2VyIGltcG9ydCBSQ1NSZXZpc2lvblJlYWRlcg0KZnJvbSBjdnMyc3ZuX2xpYi5jdnNf
cmV2aXNpb25fbWFuYWdlciBpbXBvcnQgQ1ZTUmV2aXNpb25SZWFkZXINCmZyb20gY3ZzMnN2bl9s
aWIuc3ltYm9sX3N0cmF0ZWd5IGltcG9ydCBBbGxCcmFuY2hSdWxlDQpmcm9tIGN2czJzdm5fbGli
LnN5bWJvbF9zdHJhdGVneSBpbXBvcnQgQWxsVGFnUnVsZQ0KZnJvbSBjdnMyc3ZuX2xpYi5zeW1i
b2xfc3RyYXRlZ3kgaW1wb3J0IEJyYW5jaElmQ29tbWl0c1J1bGUNCmZyb20gY3ZzMnN2bl9saWIu
c3ltYm9sX3N0cmF0ZWd5IGltcG9ydCBFeGNsdWRlUmVnZXhwU3RyYXRlZ3lSdWxlDQpmcm9tIGN2
czJzdm5fbGliLnN5bWJvbF9zdHJhdGVneSBpbXBvcnQgRm9yY2VCcmFuY2hSZWdleHBTdHJhdGVn
eVJ1bGUNCmZyb20gY3ZzMnN2bl9saWIuc3ltYm9sX3N0cmF0ZWd5IGltcG9ydCBGb3JjZVRhZ1Jl
Z2V4cFN0cmF0ZWd5UnVsZQ0KZnJvbSBjdnMyc3ZuX2xpYi5zeW1ib2xfc3RyYXRlZ3kgaW1wb3J0
IEV4Y2x1ZGVUcml2aWFsSW1wb3J0QnJhbmNoUnVsZQ0KZnJvbSBjdnMyc3ZuX2xpYi5zeW1ib2xf
c3RyYXRlZ3kgaW1wb3J0IEV4Y2x1ZGVWZW5kb3JCcmFuY2hSdWxlDQpmcm9tIGN2czJzdm5fbGli
LnN5bWJvbF9zdHJhdGVneSBpbXBvcnQgSGV1cmlzdGljU3RyYXRlZ3lSdWxlDQpmcm9tIGN2czJz
dm5fbGliLnN5bWJvbF9zdHJhdGVneSBpbXBvcnQgVW5hbWJpZ3VvdXNVc2FnZVJ1bGUNCmZyb20g
Y3ZzMnN2bl9saWIuc3ltYm9sX3N0cmF0ZWd5IGltcG9ydCBIZXVyaXN0aWNQcmVmZXJyZWRQYXJl
bnRSdWxlDQpmcm9tIGN2czJzdm5fbGliLnN5bWJvbF9zdHJhdGVneSBpbXBvcnQgU3ltYm9sSGlu
dHNGaWxlUnVsZQ0KZnJvbSBjdnMyc3ZuX2xpYi5zeW1ib2xfdHJhbnNmb3JtIGltcG9ydCBSZXBs
YWNlU3Vic3RyaW5nc1N5bWJvbFRyYW5zZm9ybQ0KZnJvbSBjdnMyc3ZuX2xpYi5zeW1ib2xfdHJh
bnNmb3JtIGltcG9ydCBSZWdleHBTeW1ib2xUcmFuc2Zvcm0NCmZyb20gY3ZzMnN2bl9saWIuc3lt
Ym9sX3RyYW5zZm9ybSBpbXBvcnQgSWdub3JlU3ltYm9sVHJhbnNmb3JtDQpmcm9tIGN2czJzdm5f
bGliLnN5bWJvbF90cmFuc2Zvcm0gaW1wb3J0IE5vcm1hbGl6ZVBhdGhzU3ltYm9sVHJhbnNmb3Jt
DQpmcm9tIGN2czJzdm5fbGliLnByb3BlcnR5X3NldHRlcnMgaW1wb3J0IEF1dG9Qcm9wc1Byb3Bl
cnR5U2V0dGVyDQpmcm9tIGN2czJzdm5fbGliLnByb3BlcnR5X3NldHRlcnMgaW1wb3J0IENvbmRp
dGlvbmFsUHJvcGVydHlTZXR0ZXINCmZyb20gY3ZzMnN2bl9saWIucHJvcGVydHlfc2V0dGVycyBp
bXBvcnQgY3ZzX2ZpbGVfaXNfYmluYXJ5DQpmcm9tIGN2czJzdm5fbGliLnByb3BlcnR5X3NldHRl
cnMgaW1wb3J0IENWU0JpbmFyeUZpbGVEZWZhdWx0TWltZVR5cGVTZXR0ZXINCmZyb20gY3ZzMnN2
bl9saWIucHJvcGVydHlfc2V0dGVycyBpbXBvcnQgQ1ZTQmluYXJ5RmlsZUVPTFN0eWxlU2V0dGVy
DQpmcm9tIGN2czJzdm5fbGliLnByb3BlcnR5X3NldHRlcnMgaW1wb3J0IERlZmF1bHRFT0xTdHls
ZVNldHRlcg0KZnJvbSBjdnMyc3ZuX2xpYi5wcm9wZXJ0eV9zZXR0ZXJzIGltcG9ydCBFT0xTdHls
ZUZyb21NaW1lVHlwZVNldHRlcg0KZnJvbSBjdnMyc3ZuX2xpYi5wcm9wZXJ0eV9zZXR0ZXJzIGlt
cG9ydCBFeGVjdXRhYmxlUHJvcGVydHlTZXR0ZXINCmZyb20gY3ZzMnN2bl9saWIucHJvcGVydHlf
c2V0dGVycyBpbXBvcnQgS2V5d29yZHNQcm9wZXJ0eVNldHRlcg0KZnJvbSBjdnMyc3ZuX2xpYi5w
cm9wZXJ0eV9zZXR0ZXJzIGltcG9ydCBNaW1lTWFwcGVyDQpmcm9tIGN2czJzdm5fbGliLnByb3Bl
cnR5X3NldHRlcnMgaW1wb3J0IFNWTkJpbmFyeUZpbGVLZXl3b3Jkc1Byb3BlcnR5U2V0dGVyDQoN
CiMgVG8gY2hvb3NlIHRoZSBsZXZlbCBvZiBsb2dnaW5nIG91dHB1dCwgdW5jb21tZW50IG9uZSBv
ZiB0aGUNCiMgZm9sbG93aW5nIGxpbmVzOg0KI2xvZ2dlci5sb2dfbGV2ZWwgPSBsb2dnZXIuV0FS
Tg0KI2xvZ2dlci5sb2dfbGV2ZWwgPSBsb2dnZXIuUVVJRVQNCiNsb2dnZXIubG9nX2xldmVsID0g
bG9nZ2VyLk5PUk1BTA0KbG9nZ2VyLmxvZ19sZXZlbCA9IGxvZ2dlci5WRVJCT1NFDQojbG9nZ2Vy
LmxvZ19sZXZlbCA9IGxvZ2dlci5ERUJVRw0KDQoNCiMgVGhlIGRpcmVjdG9yeSB0byB1c2UgZm9y
IHRlbXBvcmFyeSBmaWxlczoNCmN0eC50bXBkaXIgPSByJ2N2czJnaXQtdG1wJw0KDQojIER1cmlu
ZyBGaWx0ZXJTeW1ib2xzUGFzcywgY3ZzMmdpdCByZWNvcmRzIHRoZSBjb250ZW50cyBvZiBmaWxl
DQojIHJldmlzaW9ucyBpbnRvIGEgImJsb2IiIGZpbGUgaW4gZ2l0LWZhc3QtaW1wb3J0IGZvcm1h
dC4gIFRoZQ0KIyBjdHgucmV2aXNpb25fY29sbGVjdG9yIG9wdGlvbiBjb25maWd1cmVzIHRoYXQg
cHJvY2Vzcy4gIENob29zZSBvbmUNCiMgb2YgdGhlIHR3byB2ZXJzaW9ucyBhbmQgY3VzdG9taXpl
IGl0cyBvcHRpb25zLg0KDQojIFRoaXMgZmlyc3QgYWx0ZXJuYXRpdmUgaXMgbXVjaCBzbG93ZXIg
YnV0IGlzIGJldHRlciB0ZXN0ZWQgYW5kIGhhcyBhDQojIGNoYW5jZSBvZiB3b3JraW5nIHdpdGgg
Q1ZTTlQgcmVwb3NpdG9yaWVzLiAgSXQgaW52b2tlcyBDVlMgb3IgUkNTIHRvDQojIHJlY29uc3R1
Y3QgdGhlIGNvbnRlbnRzIG9mIENWUyBmaWxlIHJldmlzaW9uczoNCmN0eC5yZXZpc2lvbl9jb2xs
ZWN0b3IgPSBHaXRSZXZpc2lvbkNvbGxlY3RvcigNCiAgICAjIFRoZSBmb2xsb3dpbmcgb3B0aW9u
IHNwZWNpZmllcyBob3cgdGhlIHJldmlzaW9uIGNvbnRlbnRzIG9mIHRoZQ0KICAgICMgUkNTIGZp
bGVzIHNob3VsZCBiZSByZWFkLg0KICAgICMNCiAgICAjIFJDU1JldmlzaW9uUmVhZGVyIHVzZXMg
UkNTJ3MgImNvIiBwcm9ncmFtIHRvIGV4dHJhY3QgdGhlDQogICAgIyByZXZpc2lvbiBjb250ZW50
cyBvZiB0aGUgUkNTIGZpbGVzIGR1cmluZyBDb2xsZWN0UmV2c1Bhc3MuICBUaGUNCiAgICAjIGNv
bnN0cnVjdG9yIGFyZ3VtZW50IHNwZWNpZmllcyBob3cgdG8gaW52b2tlIHRoZSAiY28iDQogICAg
IyBleGVjdXRhYmxlLg0KICAgICMNCiAgICAjIENWU1JldmlzaW9uUmVhZGVyIHVzZXMgdGhlICJj
dnMiIHByb2dyYW0gdG8gZXh0cmFjdCB0aGUgcmV2aXNpb24NCiAgICAjIGNvbnRlbnRzIG91dCBv
ZiB0aGUgUkNTIGZpbGVzIGR1cmluZyBPdXRwdXRQYXNzLiAgVGhpcyBvcHRpb24gaXMNCiAgICAj
IGNvbnNpZGVyYWJseSBzbG93ZXIgdGhhbiBSQ1NSZXZpc2lvblJlYWRlciBiZWNhdXNlICJjdnMi
IGlzDQogICAgIyBjb25zaWRlcmFibHkgc2xvd2VyIHRoYW4gImNvIi4gIEhvd2V2ZXIsIGl0IHdv
cmtzIGluIHNvbWUNCiAgICAjIHNpdHVhdGlvbnMgd2hlcmUgUkNTUmV2aXNpb25SZWFkZXIgZmFp
bHM7IHNlZSB0aGUgSFRNTA0KICAgICMgZG9jdW1lbnRhdGlvbiBvZiB0aGUgIi0tdXNlLWN2cyIg
b3B0aW9uIGZvciBkZXRhaWxzLiAgVGhlDQogICAgIyBjb25zdHJ1Y3RvciBhcmd1bWVudCBzcGVj
aWZpZXMgaG93IHRvIGludm9rZSB0aGUgImNvIg0KICAgICMgZXhlY3V0YWJsZS4gIEl0IGlzIGFs
c28gcG9zc2libGUgdG8gcGFzcyBhIGdsb2JhbF9vcHRpb25zDQogICAgIyBwYXJhbWV0ZXIgdG8g
Q1ZTUmV2aXNpb25SZWFkZXIgdG8gc3BlY2lmeSB3aGljaCBvcHRpb25zIHNob3VsZA0KICAgICMg
YmUgcGFzc2VkIHRvIHRoZSBjdnMgY29tbWFuZC4gIEJ5IGRlZmF1bHQgdGhlIGNvcnJlY3Qgb3B0
aW9ucw0KICAgICMgYXJlIHVzdWFsbHkgY2hvc2VuLCBidXQgZm9yIENWU05UIHlvdSBtaWdodCB3
YW50IHRvIGFkZA0KICAgICMgZ2xvYmFsX29wdGlvbnM9WyctcScsICctTicsICctZiddLg0KICAg
ICMNCiAgICAjIFVuY29tbWVudCBvbmUgb2YgdGhlIHR3byBmb2xsb3dpbmcgbGluZXM6DQogICAg
I1JDU1JldmlzaW9uUmVhZGVyKGNvX2V4ZWN1dGFibGU9cidjbycpLA0KICAgIENWU1JldmlzaW9u
UmVhZGVyKGN2c19leGVjdXRhYmxlPXInY3ZzJyksDQoNCiAgICAjIFRoZSBmaWxlIGluIHdoaWNo
IHRvIHdyaXRlIHRoZSBnaXQtZmFzdC1pbXBvcnQgc3RyZWFtIHRoYXQNCiAgICAjIGNvbnRhaW5z
IHRoZSBmaWxlIHJldmlzaW9uIGNvbnRlbnRzLiAgSWYgTm9uZSwgaXQgd2lsbCBiZQ0KICAgICMg
d3JpdHRlbiB0byBhIHRlbXBvcmFyeSBmaWxlIHRoZW4gc3RyZWFtZWQgdG8gc3Rkb3V0IGluDQog
ICAgIyBPdXRwdXRQYXNzOg0KICAgIGJsb2JfZmlsZW5hbWU9J2N2czJnaXQtdG1wL2dpdC1ibG9i
LmRhdCcsDQogICAgKQ0KIyBUaGlzIHNlY29uZCBhbHRlcm5hdGl2ZSBpcyB2YXN0bHkgZmFzdGVy
IHRoYW4gdGhlIHZlcnNpb24gYWJvdmUuICBJdA0KIyB1c2VzIGFuIGV4dGVybmFsIFB5dGhvbiBw
cm9ncmFtIHRvIHJlY29uc3RydWN0IHRoZSBjb250ZW50cyBvZiBDVlMNCiMgZmlsZSByZXZpc2lv
bnMgYW5kIHdyaXRlIGl0IHRvIHRoZSBzcGVjaWZpZWQgZmlsZS4gIElmIGJsb2JfZmlsZW5hbWUN
CiMgaXMgTm9uZSwgdGhlIGJsb2JzIHdpbGwgYmUgd3JpdHRlbiB0byBhIHRlbXBvcmFyeSBmaWxl
IHRoZW4gc3RyZWFtZWQNCiMgdG8gc3Rkb3V0IGluIE91dHB1dFBhc3M6DQojY3R4LnJldmlzaW9u
X2NvbGxlY3RvciA9IEV4dGVybmFsQmxvYkdlbmVyYXRvcigNCiMgICAgYmxvYl9maWxlbmFtZT0n
Y3ZzMmdpdC10bXAvZ2l0LWJsb2IuZGF0JywNCiMgICAgKQ0KDQojIGN2czJnaXQgZG9lc24ndCBu
ZWVkIGEgcmV2aXNpb24gcmVhZGVyIGJlY2F1c2UgT3V0cHV0UGFzcyBvbmx5DQojIHJlZmVycyB0
byBibG9icyB0aGF0IHdlcmUgb3V0cHV0IGR1cmluZyBDb2xsZWN0UmV2c1Bhc3MsIHNvIGxlYXZl
DQojIHRoaXMgb3B0aW9uIHNldCB0byBOb25lLg0KY3R4LnJldmlzaW9uX3JlYWRlciA9IE5vbmUN
Cg0KIyBDaGFuZ2UgdGhlIGZvbGxvd2luZyBsaW5lIHRvIFRydWUgaWYgdGhlIGNvbnZlcnNpb24g
c2hvdWxkIG9ubHkNCiMgaW5jbHVkZSB0aGUgdHJ1bmsgb2YgdGhlIHJlcG9zaXRvcnkgKGkuZS4s
IGFsbCBicmFuY2hlcyBhbmQgdGFncw0KIyBzaG91bGQgYmUgb21pdHRlZCBmcm9tIHRoZSBjb252
ZXJzaW9uKToNCmN0eC50cnVua19vbmx5ID0gRmFsc2UNCg0KIyBIb3cgdG8gY29udmVydCBDVlMg
YXV0aG9yIG5hbWVzLCBsb2cgbWVzc2FnZXMsIGFuZCBmaWxlbmFtZXMgdG8NCiMgVW5pY29kZS4g
IFRoZSBmaXJzdCBhcmd1bWVudCB0byBDVlNUZXh0RGVjb2RlciBpcyBhIGxpc3Qgb2YgZW5jb2Rl
cnMNCiMgdGhhdCBhcmUgdHJpZWQgaW4gb3JkZXIgaW4gJ3N0cmljdCcgbW9kZSB1bnRpbCBvbmUg
b2YgdGhlbSBzdWNjZWVkcy4NCiMgSWYgbm9uZSBvZiB0aG9zZSBzdWNjZWVkcywgdGhlbiBmYWxs
YmFja19lbmNvZGVyIChpZiBpdCBpcw0KIyBzcGVjaWZpZWQpIGlzIHVzZWQgaW4gbG9zc3kgJ3Jl
cGxhY2UnIG1vZGUuICBTZXR0aW5nIGEgZmFsbGJhY2sNCiMgZW5jb2RlciBlbnN1cmVzIHRoYXQg
dGhlIGVuY29kZXIgYWx3YXlzIHN1Y2NlZWRzLCBidXQgaXQgY2FuIGNhdXNlDQojIGluZm9ybWF0
aW9uIGxvc3MuDQpjdHguY3ZzX2F1dGhvcl9kZWNvZGVyID0gQ1ZTVGV4dERlY29kZXIoDQogICAg
Ww0KICAgICAgICAndXRmOCcsDQogICAgICAgICMnbGF0aW4xJywNCiAgICAgICAgIydhc2NpaScs
DQogICAgICAgIF0sDQogICAgZmFsbGJhY2tfZW5jb2Rpbmc9J2FzY2lpJw0KICAgICkNCmN0eC5j
dnNfbG9nX2RlY29kZXIgPSBDVlNUZXh0RGVjb2RlcigNCiAgICBbDQogICAgICAgICd1dGY4JywN
CiAgICAgICAgIydsYXRpbjEnLA0KICAgICAgICAjJ2FzY2lpJywNCiAgICAgICAgXSwNCiAgICBm
YWxsYmFja19lbmNvZGluZz0nYXNjaWknLA0KICAgIGVvbF9maXg9J1xuJywNCiAgICApDQojIFlv
dSBtaWdodCB3YW50IHRvIGJlIGVzcGVjaWFsbHkgc3RyaWN0IHdoZW4gY29udmVydGluZyBmaWxl
bmFtZXMgdG8NCiMgVW5pY29kZSAoZS5nLiwgbWF5YmUgbm90IHNwZWNpZnkgYSBmYWxsYmFja19l
bmNvZGluZykuDQpjdHguY3ZzX2ZpbGVuYW1lX2RlY29kZXIgPSBDVlNUZXh0RGVjb2RlcigNCiAg
ICBbDQogICAgICAgICd1dGY4JywNCiAgICAgICAgIydsYXRpbjEnLA0KICAgICAgICAjJ2FzY2lp
JywNCiAgICAgICAgXSwNCiAgICBmYWxsYmFja19lbmNvZGluZz0nYXNjaWknDQogICAgKQ0KDQoj
IFRlbXBsYXRlIGZvciB0aGUgY29tbWl0IG1lc3NhZ2UgdG8gYmUgdXNlZCBmb3IgaW5pdGlhbCBw
cm9qZWN0DQojIGNvbW1pdHMuDQpjdHguaW5pdGlhbF9wcm9qZWN0X2NvbW1pdF9tZXNzYWdlID0g
KA0KICAgICdTdGFuZGFyZCBwcm9qZWN0IGRpcmVjdG9yaWVzIGluaXRpYWxpemVkIGJ5IGN2czJn
aXQuJw0KICAgICkNCg0KIyBUZW1wbGF0ZSBmb3IgdGhlIGNvbW1pdCBtZXNzYWdlIHRvIGJlIHVz
ZWQgZm9yIHBvc3QgY29tbWl0cywgaW4NCiMgd2hpY2ggbW9kaWZpY2F0aW9ucyB0byBhIHZlbmRv
ciBicmFuY2ggYXJlIGNvcGllZCBiYWNrIHRvIHRydW5rLg0KIyBUaGlzIG1lc3NhZ2UgY2FuIHVz
ZSAnJShyZXZudW0pZCcgdG8gaW5jbHVkZSB0aGUgU1ZOIHJldmlzaW9uIG51bWJlcg0KIyBvZiB0
aGUgcmV2aXNpb24gdGhhdCBpbmNsdWRlZCB0aGUgY2hhbmdlIHRvIHRoZSB2ZW5kb3IgYnJhbmNo
DQojIChhZG1pdHRlZGx5IHJhdGhlciBwb2ludGxlc3MgaW4gYSBjdnMyZ2l0IGNvbnZlcnNpb24p
Lg0KY3R4LnBvc3RfY29tbWl0X21lc3NhZ2UgPSAoDQogICAgJ1RoaXMgY29tbWl0IHdhcyBnZW5l
cmF0ZWQgYnkgY3ZzMmdpdCB0byB0cmFjayBjaGFuZ2VzIG9uIGEgQ1ZTICcNCiAgICAndmVuZG9y
IGJyYW5jaC4nDQogICAgKQ0KDQojIFRlbXBsYXRlIGZvciB0aGUgY29tbWl0IG1lc3NhZ2UgdG8g
YmUgdXNlZCBmb3IgY29tbWl0cyBpbiB3aGljaA0KIyBzeW1ib2xzIGFyZSBjcmVhdGVkLiAgVGhp
cyBtZXNzYWdlIGNhbiB1c2UgJyUoc3ltYm9sX3R5cGUpcycgdG8NCiMgaW5jbHVkZSB0aGUgdHlw
ZSBvZiB0aGUgc3ltYm9sICgnYnJhbmNoJyBvciAndGFnJykgb3INCiMgJyUoc3ltYm9sX25hbWUp
cycgdG8gaW5jbHVkZSB0aGUgbmFtZSBvZiB0aGUgc3ltYm9sLg0KY3R4LnN5bWJvbF9jb21taXRf
bWVzc2FnZSA9ICgNCiAgICAiVGhpcyBjb21taXQgd2FzIG1hbnVmYWN0dXJlZCBieSBjdnMyZ2l0
IHRvIGNyZWF0ZSAlKHN5bWJvbF90eXBlKXMgIg0KICAgICInJShzeW1ib2xfbmFtZSlzJy4iDQog
ICAgKQ0KDQojIFRlbXBsYXRlIGZvciB0aGUgY29tbWl0IG1lc3NhZ2UgdG8gYmUgdXNlZCBmb3Ig
Y29tbWl0cyBpbiB3aGljaA0KIyB0YWdzIGFyZSBwc2V1ZG8tbWVyZ2VkIGJhY2sgdG8gdGhlaXIg
c291cmNlIGJyYW5jaC4gIFRoaXMgbWVzc2FnZSBjYW4NCiMgdXNlICclKHN5bWJvbF9uYW1lKXMn
IHRvIGluY2x1ZGUgdGhlIG5hbWUgb2YgdGhlIHN5bWJvbC4NCiMgKE5vdCB1c2VkIGJ5IGRlZmF1
bHQgdW5sZXNzIHlvdSBlbmFibGUgdGllX3RhZ19maXh1cF9icmFuY2hlcyBvbg0KIyBHaXRPdXRw
dXRPcHRpb24uKQ0KY3R4LnRpZV90YWdfYW5jZXN0cnlfbWVzc2FnZSA9ICgNCiAgICAiVGhpcyBj
b21taXQgd2FzIG1hbnVmYWN0dXJlZCBieSBjdnMyZ2l0IHRvIHRpZSBhbmNlc3RyeSBmb3IgIg0K
ICAgICJ0YWcgJyUoc3ltYm9sX25hbWUpcycgYmFjayB0byB0aGUgc291cmNlIGJyYW5jaC4iDQog
ICAgKQ0KDQojIFNvbWUgQ1ZTIGNsaWVudHMgZm9yIE1hY09TIHN0b3JlIHJlc291cmNlIGZvcmsg
ZGF0YSBpbnRvIENWUyBhbG9uZw0KIyB3aXRoIHRoZSBmaWxlIGNvbnRlbnRzIGl0c2VsZiBieSB3
cmFwcGluZyBpdCBhbGwgdXAgaW4gYSBjb250YWluZXINCiMgZm9ybWF0IGNhbGxlZCAiQXBwbGVT
aW5nbGUiLiAgU3VidmVyc2lvbiBjdXJyZW50bHkgZG9lcyBub3Qgc3VwcG9ydA0KIyBNYWNPUyBy
ZXNvdXJjZSBmb3Jrcy4gIE5ldmVydGhlbGVzcywgc29tZXRpbWVzIHRoZSByZXNvdXJjZSBmb3Jr
DQojIGluZm9ybWF0aW9uIGlzIG5vdCBuZWNlc3NhcnkgYW5kIGNhbiBiZSBkaXNjYXJkZWQuICBT
ZXQgdGhlDQojIGZvbGxvd2luZyBvcHRpb24gdG8gVHJ1ZSBpZiB5b3Ugd291bGQgbGlrZSBjdnMy
Z2l0IHRvIGlkZW50aWZ5IGZpbGVzDQojIHdob3NlIGNvbnRlbnRzIGFyZSBlbmNvZGVkIGluIEFw
cGxlU2luZ2xlIGZvcm1hdCwgYW5kIGRpc2NhcmQgYWxsDQojIGJ1dCB0aGUgZGF0YSBmb3JrIGZv
ciBzdWNoIGZpbGVzIGJlZm9yZSBjb21taXR0aW5nIHRoZW0gdG8NCiMgU3VidmVyc2lvbi4gIChQ
bGVhc2Ugbm90ZSB0aGF0IEFwcGxlU2luZ2xlIGNvbnRlbnRzIGFyZSBpZGVudGlmaWVkDQojIGJ5
IHRoZSBBcHBsZVNpbmdsZSBtYWdpYyBudW1iZXIgYXMgdGhlIGZpcnN0IGZvdXIgYnl0ZXMgb2Yg
dGhlIGZpbGUuDQojIFRoaXMgY2hlY2sgaXMgbm90IGZhaWxwcm9vZiwgc28gb25seSBzZXQgdGhp
cyBvcHRpb24gaWYgeW91IHRoaW5rDQojIHlvdSBuZWVkIGl0LikNCmN0eC5kZWNvZGVfYXBwbGVf
c2luZ2xlID0gRmFsc2UNCg0KIyBUaGlzIG9wdGlvbiBjYW4gYmUgc2V0IHRvIHRoZSBuYW1lIG9m
IGEgZmlsZW5hbWUgdG8gd2hpY2ggYXJlIHN0b3JlZA0KIyBzdGF0aXN0aWNzIGFuZCBjb252ZXJz
aW9uIGRlY2lzaW9ucyBhYm91dCB0aGUgQ1ZTIHN5bWJvbHMuDQpjdHguc3ltYm9sX2luZm9fZmls
ZW5hbWUgPSBOb25lDQojY3R4LnN5bWJvbF9pbmZvX2ZpbGVuYW1lID0gJ3N5bWJvbC1pbmZvLnR4
dCcNCg0KIyBjdnMyZ2l0IHVzZXMgInN5bWJvbCBzdHJhdGVneSBydWxlcyIgdG8gaGVscCBkZWNp
ZGUgaG93IHRvIGhhbmRsZQ0KIyBDVlMgc3ltYm9scy4gIFRoZSBydWxlcyBpbiBhIHByb2plY3Qn
cyBzeW1ib2xfc3RyYXRlZ3lfcnVsZXMgYXJlDQojIGFwcGxpZWQgaW4gb3JkZXIsIGFuZCBlYWNo
IHJ1bGUgaXMgYWxsb3dlZCB0byBtb2RpZnkgdGhlIHN5bWJvbC4NCiMgVGhlIHJlc3VsdCAoYWZ0
ZXIgZWFjaCBvZiB0aGUgcnVsZXMgaGFzIGJlZW4gYXBwbGllZCkgaXMgdXNlZCBmb3INCiMgdGhl
IGNvbnZlcnNpb24uDQojDQojIDEuIEEgQ1ZTIHN5bWJvbCBtaWdodCBiZSB1c2VkIGFzIGEgdGFn
IGluIG9uZSBmaWxlIGFuZCBhcyBhIGJyYW5jaA0KIyAgICBpbiBhbm90aGVyIGZpbGUuICBjdnMy
Z2l0IGhhcyB0byBkZWNpZGUgd2hldGhlciB0byBjb252ZXJ0IHN1Y2ggYQ0KIyAgICBzeW1ib2wg
YXMgYSB0YWcgb3IgYXMgYSBicmFuY2guICBjdnMyZ2l0IHVzZXMgYSBzZXJpZXMgb2YNCiMgICAg
aGV1cmlzdGljIHJ1bGVzIHRvIGRlY2lkZSBob3cgdG8gY29udmVydCBhIHN5bWJvbC4gIFRoZSB1
c2VyIGNhbg0KIyAgICBvdmVycmlkZSB0aGUgZGVmYXVsdCBydWxlcyBmb3Igc3BlY2lmaWMgc3lt
Ym9scyBvciBzeW1ib2xzDQojICAgIG1hdGNoaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbnMuDQojDQoj
IDIuIGN2czJnaXQgaXMgYWxzbyBjYXBhYmxlIG9mIGV4Y2x1ZGluZyBzeW1ib2xzIGZyb20gdGhl
IGNvbnZlcnNpb24NCiMgICAgKHByb3ZpZGVkIG5vIG90aGVyIHN5bWJvbHMgZGVwZW5kIG9uIHRo
ZW0uDQojDQojIDMuIENWUyBkb2VzIG5vdCByZWNvcmQgdW5hbWJpZ3VvdXNseSB0aGUgbGluZSBv
ZiBkZXZlbG9wbWVudCBmcm9tDQojICAgIHdoaWNoIGEgc3ltYm9sIHNwcm91dGVkLiAgY3ZzMmdp
dCB1c2VzIGEgaGV1cmlzdGljIHRvIGNob29zZSBhDQojICAgIHN5bWJvbCdzICJwcmVmZXJyZWQg
cGFyZW50cyIuDQojDQojIFRoZSBzdGFuZGFyZCBicmFuY2gvdGFnL2V4Y2x1ZGUgU3RyYXRlZ3lS
dWxlcyBkbyBub3QgY2hhbmdlIGEgc3ltYm9sDQojIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBwcm9j
ZXNzZWQgYnkgYW4gZWFybGllciBydWxlLCBzbyBpbiBlZmZlY3QgdGhlDQojIGZpcnN0IG1hdGNo
aW5nIHJ1bGUgaXMgdGhlIG9uZSB0aGF0IGlzIHVzZWQuDQoNCmdsb2JhbF9zeW1ib2xfc3RyYXRl
Z3lfcnVsZXMgPSBbDQogICAgIyBJdCBpcyBwb3NzaWJsZSB0byBzcGVjaWZ5IG1hbnVhbGx5IGV4
YWN0bHkgaG93IHN5bWJvbHMgc2hvdWxkIGJlDQogICAgIyBjb252ZXJ0ZWQgYW5kIHdoYXQgbGlu
ZSBvZiBkZXZlbG9wbWVudCBzaG91bGQgYmUgdXNlZCBhcyB0aGUNCiAgICAjIHByZWZlcnJlZCBw
YXJlbnQuICBUbyBkbyBzbywgY3JlYXRlIGEgZmlsZSBjb250YWluaW5nIHRoZSBzeW1ib2wNCiAg
ICAjIGhpbnRzIGFuZCBlbmFibGUgdGhlIGZvbGxvd2luZyBvcHRpb24uDQogICAgIw0KICAgICMg
VGhlIGZvcm1hdCBvZiB0aGUgaGludHMgZmlsZSBpcyBkZXNjcmliZWQgaW4gdGhlIGRvY3VtZW50
YXRpb24NCiAgICAjIGZvciB0aGUgLS1zeW1ib2wtaGludHMgY29tbWFuZC1saW5lIG9wdGlvbi4g
IFRoZSBmaWxlIG91dHB1dCBieQ0KICAgICMgdGhlIC0td3JpdGUtc3ltYm9sLWluZm8gKGkuZS4s
IGN0eC5zeW1ib2xfaW5mb19maWxlbmFtZSkgb3B0aW9uDQogICAgIyBpcyBpbiB0aGUgc2FtZSBm
b3JtYXQuICBUaGUgc2ltcGxlc3Qgd2F5IHRvIHVzZSB0aGlzIG9wdGlvbiBpcw0KICAgICMgdG8g
cnVuIHRoZSBjb252ZXJzaW9uIHRocm91Z2ggQ29sbGF0ZVN5bWJvbHNQYXNzIHdpdGgNCiAgICAj
IC0td3JpdGUtc3ltYm9sLWluZm8gb3B0aW9uLCBjb3B5IHRoZSBzeW1ib2wgaW5mbyBhbmQgZWRp
dCBpdCB0bw0KICAgICMgY3JlYXRlIGEgaGludHMgZmlsZSwgdGhlbiByZS1zdGFydCB0aGUgY29u
dmVyc2lvbiBhdA0KICAgICMgQ29sbGF0ZVN5bWJvbHNQYXNzIHdpdGggdGhpcyBvcHRpb24gZW5h
YmxlZC4NCiAgICAjU3ltYm9sSGludHNGaWxlUnVsZSgnc3ltYm9sLWhpbnRzLnR4dCcpLA0KDQog
ICAgIyBUbyBmb3JjZSBhbGwgc3ltYm9scyBtYXRjaGluZyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB0
byBiZQ0KICAgICMgY29udmVydGVkIGFzIGJyYW5jaGVzLCBhZGQgcnVsZXMgbGlrZSB0aGUgZm9s
bG93aW5nOg0KICAgICNGb3JjZUJyYW5jaFJlZ2V4cFN0cmF0ZWd5UnVsZShyJ2JyYW5jaC4qJyks
DQoNCiAgICAjIFRvIGZvcmNlIGFsbCBzeW1ib2xzIG1hdGNoaW5nIGEgcmVndWxhciBleHByZXNz
aW9uIHRvIGJlDQogICAgIyBjb252ZXJ0ZWQgYXMgdGFncywgYWRkIHJ1bGVzIGxpa2UgdGhlIGZv
bGxvd2luZzoNCiAgICAjRm9yY2VUYWdSZWdleHBTdHJhdGVneVJ1bGUocid0YWcuKicpLA0KDQog
ICAgIyBUbyBmb3JjZSBhbGwgc3ltYm9scyBtYXRjaGluZyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB0
byBiZQ0KICAgICMgZXhjbHVkZWQgZnJvbSB0aGUgY29udmVyc2lvbiwgYWRkIHJ1bGVzIGxpa2Ug
dGhlIGZvbGxvd2luZzoNCiAgICAjRXhjbHVkZVJlZ2V4cFN0cmF0ZWd5UnVsZShyJ3Vua25vd24t
LionKSwNCg0KICAgICMgU29tZXRpbWVzIHBlb3BsZSB1c2UgImN2cyBpbXBvcnQiIHRvIGdldCB0
aGVpciBvd24gc291cmNlIGNvZGUNCiAgICAjIGludG8gQ1ZTLiAgVGhpcyBwcmFjdGljZSBjcmVh
dGVzIGEgdmVuZG9yIGJyYW5jaCAxLjEuMSBhbmQNCiAgICAjIGltcG9ydHMgdGhlIGNvZGUgb250
byB0aGUgdmVuZG9yIGJyYW5jaCBhcyAxLjEuMS4xLCB0aGVuIGNvcGllcw0KICAgICMgdGhlIHNh
bWUgY29udGVudCB0byB0aGUgdHJ1bmsgYXMgdmVyc2lvbiAxLjEuICBOb3JtYWxseSwgc3VjaA0K
ICAgICMgdmVuZG9yIGJyYW5jaGVzIGFyZSB1c2VsZXNzIGFuZCB0aGV5IGNvbXBsaWNhdGUgdGhl
IFNWTiBoaXN0b3J5DQogICAgIyB1bm5lY2Vzc2FyaWx5LiAgVGhlIGZvbGxvd2luZyBydWxlIGV4
Y2x1ZGVzIGFueSBicmFuY2hlcyB0aGF0DQogICAgIyBvbmx5IGV4aXN0ZWQgYXMgYSB2ZW5kb3Ig
YnJhbmNoIHdpdGggYSBzaW5nbGUgaW1wb3J0IChsZWF2aW5nDQogICAgIyBvbmx5IHRoZSAxLjEg
cmV2aXNpb24pLiAgSWYgeW91IHdhbnQgdG8gcmV0YWluIHN1Y2ggYnJhbmNoZXMsDQogICAgIyBj
b21tZW50IG91dCB0aGUgZm9sbG93aW5nIGxpbmUuICAoUGxlYXNlIG5vdGUgdGhhdCB0aGlzIHJ1
bGUNCiAgICAjIGRvZXMgbm90IGV4Y2x1ZGUgdmVuZG9yICp0YWdzKiwgYXMgdGhleSBhcmUgbm90
IHNvIGVhc3kgdG8NCiAgICAjIGlkZW50aWZ5LikNCiAgICBFeGNsdWRlVHJpdmlhbEltcG9ydEJy
YW5jaFJ1bGUoKSwNCg0KICAgICMgVG8gZXhjbHVkZSBhbGwgdmVuZG9yIGJyYW5jaGVzIChicmFu
Y2hlcyB0aGF0IGhhZCAiY3ZzIGltcG9ydCJzDQogICAgIyBvbiB0aGVtIGJ1dCBubyBvdGhlciBr
aW5kcyBvZiBjb21taXRzKSwgdW5jb21tZW50IHRoZSBmb2xsb3dpbmcNCiAgICAjIGxpbmU6DQog
ICAgI0V4Y2x1ZGVWZW5kb3JCcmFuY2hSdWxlKCksDQoNCiAgICAjIFVzdWFsbHkgeW91IHdhbnQg
dGhpcyBydWxlLCB0byBjb252ZXJ0IHVuYW1iaWd1b3VzIHN5bWJvbHMNCiAgICAjIChzeW1ib2xz
IHRoYXQgd2VyZSBvbmx5IGV2ZXIgdXNlZCBhcyB0YWdzIG9yIG9ubHkgZXZlciB1c2VkIGFzDQog
ICAgIyBicmFuY2hlcyBpbiBDVlMpIHRoZSBzYW1lIHdheSB0aGV5IHdlcmUgdXNlZCBpbiBDVlM6
DQogICAgVW5hbWJpZ3VvdXNVc2FnZVJ1bGUoKSwNCg0KICAgICMgSWYgdGhlcmUgd2FzIGV2ZXIg
YSBjb21taXQgb24gYSBzeW1ib2wsIHRoZW4gaXQgY2Fubm90IGJlDQogICAgIyBjb252ZXJ0ZWQg
YXMgYSB0YWcuICBUaGlzIHJ1bGUgY2F1c2VzIGFsbCBzdWNoIHN5bWJvbHMgdG8gYmUNCiAgICAj
IGNvbnZlcnRlZCBhcyBicmFuY2hlcy4gIElmIHlvdSB3b3VsZCBsaWtlIHRvIHJlc29sdmUgc3Vj
aA0KICAgICMgYW1iaWd1aXRpZXMgbWFudWFsbHksIGNvbW1lbnQgb3V0IHRoZSBmb2xsb3dpbmcg
bGluZToNCiAgICBCcmFuY2hJZkNvbW1pdHNSdWxlKCksDQoNCiAgICAjIExhc3QgaW4gdGhlIGxp
c3QgY2FuIGJlIGEgY2F0Y2gtYWxsIHJ1bGUgdGhhdCBpcyB1c2VkIGZvcg0KICAgICMgc3ltYm9s
cyB0aGF0IHdlcmUgbm90IG1hdGNoZWQgYnkgYW55IG9mIHRoZSBtb3JlIHNwZWNpZmljIHJ1bGVz
DQogICAgIyBhYm92ZS4gIChBc3N1bWluZyB0aGF0IEJyYW5jaElmQ29tbWl0c1J1bGUoKSB3YXMg
aW5jbHVkZWQgYWJvdmUsDQogICAgIyB0aGVuIHRoZSBzeW1ib2xzIHRoYXQgYXJlIHN0aWxsIGlu
ZGV0ZXJtaW5hdGUgYXQgdGhpcyBwb2ludCBjYW4NCiAgICAjIHNlbnNpYmx5IGJlIGNvbnZlcnRl
ZCBhcyBicmFuY2hlcyBvciB0YWdzLikgIEluY2x1ZGUgYXQgbW9zdCBvbmUNCiAgICAjIG9mIHRo
ZXNlIGxpbmVzLiAgSWYgbm9uZSBvZiB0aGVzZSBjYXRjaC1hbGwgcnVsZXMgYXJlIGluY2x1ZGVk
LA0KICAgICMgdGhlbiB0aGUgcHJlc2VuY2Ugb2YgYW55IGFtYmlndW91cyBzeW1ib2xzICh0aGF0
IGhhdmVuJ3QgYmVlbg0KICAgICMgZGlzYW1iaWd1YXRlZCBhYm92ZSkgaXMgYW4gZXJyb3I6DQoN
CiAgICAjIENvbnZlcnQgYW1iaWd1b3VzIHN5bWJvbHMgYmFzZWQgb24gd2hldGhlciB0aGV5IHdl
cmUgdXNlZCBtb3JlDQogICAgIyBvZnRlbiBhcyBicmFuY2hlcyBvciBhcyB0YWdzOg0KICAgIEhl
dXJpc3RpY1N0cmF0ZWd5UnVsZSgpLA0KICAgICMgQ29udmVydCBhbGwgYW1iaWd1b3VzIHN5bWJv
bHMgYXMgYnJhbmNoZXM6DQogICAgI0FsbEJyYW5jaFJ1bGUoKSwNCiAgICAjIENvbnZlcnQgYWxs
IGFtYmlndW91cyBzeW1ib2xzIGFzIHRhZ3M6DQogICAgI0FsbFRhZ1J1bGUoKSwNCg0KICAgICMg
VGhlIGxhc3QgcnVsZSBpcyBoZXJlIHRvIGNob29zZSB0aGUgcHJlZmVycmVkIHBhcmVudCBvZiBi
cmFuY2hlcw0KICAgICMgYW5kIHRhZ3MsIHRoYXQgaXMsIHRoZSBsaW5lIG9mIGRldmVsb3BtZW50
IGZyb20gd2hpY2ggdGhlIHN5bWJvbA0KICAgICMgc3Byb3V0cy4NCiAgICBIZXVyaXN0aWNQcmVm
ZXJyZWRQYXJlbnRSdWxlKCksDQogICAgXQ0KDQojIFNwZWNpZnkgYSB1c2VybmFtZSB0byBiZSB1
c2VkIGZvciBjb21taXRzIGZvciB3aGljaCBDVlMgZG9lc24ndA0KIyByZWNvcmQgdGhlIG9yaWdp
bmFsIGF1dGhvciAoZm9yIGV4YW1wbGUsIHRoZSBjcmVhdGlvbiBvZiBhIGJyYW5jaCkuDQojIFRo
aXMgc2hvdWxkIGJlIGEgc2ltcGxlICh1bml4LXN0eWxlKSB1c2VybmFtZSwgYnV0IGl0IGNhbiBi
ZQ0KIyB0cmFuc2xhdGVkIGludG8gYSBnaXQtc3R5bGUgbmFtZSBieSB0aGUgYXV0aG9yX3RyYW5z
Zm9ybXMgbWFwLg0KY3R4LnVzZXJuYW1lID0gJ2N2czJnaXQnDQoNCiMgY3R4LmZpbGVfcHJvcGVy
dHlfc2V0dGVycyBhbmQgY3R4LnJldmlzaW9uX3Byb3BlcnR5X3NldHRlcnMgY29udGFpbg0KIyBy
dWxlcyB1c2VkIHRvIHNldCB0aGUgc3ZuIHByb3BlcnRpZXMgb24gZmlsZXMgaW4gdGhlIGNvbnZl
cnRlZA0KIyBhcmNoaXZlLiAgRm9yIGVhY2ggZmlsZSwgdGhlIHJ1bGVzIGFyZSB0cmllZCBvbmUg
Ynkgb25lLiAgQW55IHJ1bGUNCiMgY2FuIGFkZCBvciBzdXBwcmVzcyBvbmUgb3IgbW9yZSBzdm4g
cHJvcGVydGllcy4gIFR5cGljYWxseSB0aGUgcnVsZXMNCiMgd2lsbCBub3Qgb3ZlcndyaXRlIHBy
b3BlcnRpZXMgc2V0IGJ5IGEgcHJldmlvdXMgcnVsZSAodGhvdWdoIHRoZXkNCiMgYXJlIGZyZWUg
dG8gZG8gc28pLiAgY3R4LmZpbGVfcHJvcGVydHlfc2V0dGVycyBzaG91bGQgYmUgdXNlZCBmb3IN
CiMgcHJvcGVydGllcyB0aGF0IHJlbWFpbiB0aGUgc2FtZSBmb3IgdGhlIGxpZmUgb2YgdGhlIGZp
bGU7IHRoZXNlDQojIHNob3VsZCBpbXBsZW1lbnQgRmlsZVByb3BlcnR5U2V0dGVyLiAgY3R4LnJl
dmlzaW9uX3Byb3BlcnR5X3NldHRlcnMNCiMgc2hvdWxkIGJlIHVzZWQgZm9yIHByb3BlcnRpZXMg
dGhhdCBhcmUgYWxsb3dlZCB0byB2YXJ5IGZyb20gcmV2aXNpb24NCiMgdG8gcmV2aXNpb247IHRo
ZXNlIHNob3VsZCBpbXBsZW1lbnQgUmV2aXNpb25Qcm9wZXJ0eVNldHRlci4NCiMNCiMgT2J2aW91
c2x5LCBTVk4gcHJvcGVydGllcyBwZXIgc2UgYXJlIG5vdCBpbnRlcmVzdGluZyBmb3IgYSBjdnMy
Z2l0DQojIGNvbnZlcnNpb24sIGJ1dCBzb21lIG9mIHRoZXNlIHByb3BlcnRpZXMgaGF2ZSBzaWRl
LWVmZmVjdHMgdGhhdCBkbw0KIyBhZmZlY3QgdGhlIGdpdCBvdXRwdXQuICBGSVhNRTogRG9jdW1l
bnQgdGhpcyBpbiBtb3JlIGRldGFpbC4NCmN0eC5maWxlX3Byb3BlcnR5X3NldHRlcnMuZXh0ZW5k
KFsNCiAgICAjIFRvIHJlYWQgYXV0by1wcm9wcyBydWxlcyBmcm9tIGEgZmlsZSwgdW5jb21tZW50
IHRoZSBmb2xsb3dpbmcgbGluZQ0KICAgICMgYW5kIHNwZWNpZnkgYSBmaWxlbmFtZS4gIFRoZSBi
b29sZWFuIGFyZ3VtZW50IHNwZWNpZmllcyB3aGV0aGVyDQogICAgIyBjYXNlIHNob3VsZCBiZSBp
Z25vcmVkIHdoZW4gbWF0Y2hpbmcgZmlsZW5hbWVzIHRvIHRoZSBmaWxlbmFtZQ0KICAgICMgcGF0
dGVybnMgZm91bmQgaW4gdGhlIGF1dG8tcHJvcHMgZmlsZToNCiAgICAjQXV0b1Byb3BzUHJvcGVy
dHlTZXR0ZXIoDQogICAgIyAgICByJy9ob21lL3VzZXJuYW1lLy5zdWJ2ZXJzaW9uL2NvbmZpZycs
DQogICAgIyAgICBpZ25vcmVfY2FzZT1UcnVlLA0KICAgICMgICAgKSwNCg0KICAgICMgVG8gcmVh
ZCBtaW1lIHR5cGVzIGZyb20gYSBmaWxlIGFuZCB1c2UgdGhlbSB0byBzZXQgc3ZuOm1pbWUtdHlw
ZQ0KICAgICMgYmFzZWQgb24gdGhlIGZpbGVuYW1lIGV4dGVuc2lvbnMsIHVuY29tbWVudCB0aGUg
Zm9sbG93aW5nIGxpbmUNCiAgICAjIGFuZCBzcGVjaWZ5IGEgZmlsZW5hbWUgKHNlZQ0KICAgICMg
aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NaW1lLnR5cGVzIGZvciBpbmZvcm1hdGlvbiBh
Ym91dA0KICAgICMgbWltZS50eXBlcyBmaWxlcyk6DQogICAgI01pbWVNYXBwZXIocicvZXRjL21p
bWUudHlwZXMnLCBpZ25vcmVfY2FzZT1GYWxzZSksDQoNCiAgICAjIE9taXQgdGhlIHN2bjplb2wt
c3R5bGUgcHJvcGVydHkgZnJvbSBhbnkgZmlsZXMgdGhhdCBhcmUgbGlzdGVkDQogICAgIyBhcyBi
aW5hcnkgKGkuZS4sIG1vZGUgJy1rYicpIGluIENWUzoNCiAgICBDVlNCaW5hcnlGaWxlRU9MU3R5
bGVTZXR0ZXIoKSwNCg0KICAgICMgSWYgdGhlIGZpbGUgaXMgYmluYXJ5IGFuZCBpdHMgc3ZuOm1p
bWUtdHlwZSBwcm9wZXJ0eSBpcyBub3QgeWV0DQogICAgIyBzZXQsIHNldCBzdm46bWltZS10eXBl
IHRvICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLg0KICAgIENWU0JpbmFyeUZpbGVEZWZhdWx0
TWltZVR5cGVTZXR0ZXIoKSwNCg0KICAgICMgVG8gdHJ5IHRvIGRldGVybWluZSB0aGUgZW9sLXN0
eWxlIGZyb20gdGhlIG1pbWUgdHlwZSwgdW5jb21tZW50DQogICAgIyB0aGUgZm9sbG93aW5nIGxp
bmU6DQogICAgI0VPTFN0eWxlRnJvbU1pbWVUeXBlU2V0dGVyKCksDQoNCiAgICAjIENob29zZSBv
bmUgb2YgdGhlIGZvbGxvd2luZyBsaW5lcyB0byBzZXQgdGhlIGRlZmF1bHQNCiAgICAjIHN2bjpl
b2wtc3R5bGUgaWYgbm9uZSBvZiB0aGUgYWJvdmUgcnVsZXMgYXBwbGllZC4gIFRoZSBhcmd1bWVu
dA0KICAgICMgaXMgdGhlIHN2bjplb2wtc3R5bGUgdGhhdCBzaG91bGQgYmUgYXBwbGllZCwgb3Ig
Tm9uZSBpZiBubw0KICAgICMgc3ZuOmVvbC1zdHlsZSBzaG91bGQgYmUgc2V0IChpLmUuLCB0aGUg
ZmlsZSBzaG91bGQgYmUgdHJlYXRlZCBhcw0KICAgICMgYmluYXJ5KS4NCiAgICAjDQogICAgIyBU
aGUgZGVmYXVsdCBpcyB0byB0cmVhdCBhbGwgZmlsZXMgYXMgYmluYXJ5IHVubGVzcyBvbmUgb2Yg
dGhlDQogICAgIyBwcmV2aW91cyBydWxlcyBoYXMgZGV0ZXJtaW5lZCBvdGhlcndpc2UsIGJlY2F1
c2UgdGhpcyBpcyB0aGUNCiAgICAjIHNhZmVzdCBhcHByb2FjaC4gIEhvd2V2ZXIsIGlmIHlvdSBo
YXZlIGJlZW4gZGlsaWdlbnQgYWJvdXQNCiAgICAjIG1hcmtpbmcgYmluYXJ5IGZpbGVzIHdpdGgg
LWtiIGluIENWUyBhbmQvb3IgeW91IGhhdmUgdXNlZCB0aGUNCiAgICAjIGFib3ZlIHJ1bGVzIHRv
IGRlZmluaXRlbHkgbWFyayBiaW5hcnkgZmlsZXMgYXMgYmluYXJ5LCB0aGVuIHlvdQ0KICAgICMg
bWlnaHQgcHJlZmVyIHRvIHVzZSAnbmF0aXZlJyBhcyB0aGUgZGVmYXVsdCwgYXMgaXQgaXMgdXN1
YWxseQ0KICAgICMgdGhlIG1vc3QgY29udmVuaWVudCBzZXR0aW5nIGZvciB0ZXh0IGZpbGVzLiAg
T3RoZXIgcG9zc2libGUNCiAgICAjIG9wdGlvbnM6ICdDUkxGJywgJ0NSJywgJ0xGJy4NCiAgICBE
ZWZhdWx0RU9MU3R5bGVTZXR0ZXIoTm9uZSksDQogICAgI0RlZmF1bHRFT0xTdHlsZVNldHRlcign
bmF0aXZlJyksDQoNCiAgICAjIFByZXZlbnQgc3ZuOmtleXdvcmRzIGZyb20gYmVpbmcgc2V0IG9u
IGZpbGVzIHRoYXQgaGF2ZQ0KICAgICMgc3ZuOmVvbC1zdHlsZSB1bnNldC4NCiAgICBTVk5CaW5h
cnlGaWxlS2V5d29yZHNQcm9wZXJ0eVNldHRlcigpLA0KDQogICAgIyBJZiBzdm46a2V5d29yZHMg
aGFzIG5vdCBiZWVuIHNldCB5ZXQsIHNldCBpdCBiYXNlZCBvbiB0aGUgZmlsZSdzDQogICAgIyBD
VlMgbW9kZToNCiAgICBLZXl3b3Jkc1Byb3BlcnR5U2V0dGVyKGNvbmZpZy5TVk5fS0VZV09SRFNf
VkFMVUUpLA0KDQogICAgIyBTZXQgdGhlIHN2bjpleGVjdXRhYmxlIGZsYWcgb24gYW55IGZpbGVz
IHRoYXQgYXJlIG1hcmtlZCBpbiBDVlMgYXMNCiAgICAjIGJlaW5nIGV4ZWN1dGFibGU6DQogICAg
RXhlY3V0YWJsZVByb3BlcnR5U2V0dGVyKCksDQoNCiAgICAjIFRoZSBmb2xsb3dpbmcgY2F1c2Vz
IGtleXdvcmRzIHRvIGJlIHVudG91Y2hlZCBpbiBiaW5hcnkgZmlsZXMgYW5kDQogICAgIyBjb2xs
YXBzZWQgaW4gYWxsIHRleHQgdG8gYmUgY29tbWl0dGVkOg0KICAgIENvbmRpdGlvbmFsUHJvcGVy
dHlTZXR0ZXIoDQogICAgICAgIGN2c19maWxlX2lzX2JpbmFyeSwgS2V5d29yZEhhbmRsaW5nUHJv
cGVydHlTZXR0ZXIoJ3VudG91Y2hlZCcpLA0KICAgICAgICApLA0KICAgIEtleXdvcmRIYW5kbGlu
Z1Byb3BlcnR5U2V0dGVyKCdjb2xsYXBzZWQnKSwNCg0KICAgIF0pDQpjdHgucmV2aXNpb25fcHJv
cGVydHlfc2V0dGVycy5leHRlbmQoWw0KICAgIF0pDQoNCiMgVG8gc2tpcCB0aGUgY2xlYW51cCBv
ZiB0ZW1wb3JhcnkgZmlsZXMsIHVuY29tbWVudCB0aGUgZm9sbG93aW5nDQojIG9wdGlvbjoNCiNj
dHguc2tpcF9jbGVhbnVwID0gVHJ1ZQ0KDQoNCiMgSW4gQ1ZTLCBpdCBpcyBwZXJmZWN0bHkgcG9z
c2libGUgdG8gbWFrZSBhIHNpbmdsZSBjb21taXQgdGhhdA0KIyBhZmZlY3RzIG1vcmUgdGhhbiBv
bmUgcHJvamVjdCBvciBtb3JlIHRoYW4gb25lIGJyYW5jaCBvZiBhIHNpbmdsZQ0KIyBwcm9qZWN0
LiAgU3VidmVyc2lvbiBhbHNvIGFsbG93cyBzdWNoIGNvbW1pdHMuICBUaGVyZWZvcmUsIGJ5DQoj
IGRlZmF1bHQsIHdoZW4gY3ZzMmdpdCBzZWVzIHdoYXQgbG9va3MgbGlrZSBhIGNyb3NzLXByb2pl
Y3Qgb3INCiMgY3Jvc3MtYnJhbmNoIENWUyBjb21taXQsIGl0IGNvbnZlcnRzIGl0IGludG8gYQ0K
IyBjcm9zcy1wcm9qZWN0L2Nyb3NzLWJyYW5jaCBTdWJ2ZXJzaW9uIGNvbW1pdC4NCiMNCiMgSG93
ZXZlciwgb3RoZXIgdG9vbHMgYW5kIFNDTXMgaGF2ZSB0cm91YmxlIHJlcHJlc2VudGluZw0KIyBj
cm9zcy1wcm9qZWN0IG9yIGNyb3NzLWJyYW5jaCBjb21taXRzLiAgKEZvciBleGFtcGxlLCBUcmFj
J3MgUmV2dHJlZQ0KIyBwbHVnaW4sIGh0dHA6Ly93d3cudHJhYy1oYWNrcy5vcmcvd2lraS9SZXZ0
cmVlUGx1Z2luIGlzIGNvbmZ1c2VkIGJ5DQojIHN1Y2ggY29tbWl0cy4pICBUaGVyZWZvcmUsIHdl
IHByb3ZpZGUgdGhlIGZvbGxvd2luZyB0d28gb3B0aW9ucyB0bw0KIyBhbGxvdyBjcm9zcy1wcm9q
ZWN0L2Nyb3NzLWJyYW5jaCBjb21taXRzIHRvIGJlIHN1cHByZXNzZWQuDQoNCiMgY3ZzMmdpdCBv
bmx5IHN1cHBvcnRzIHNpbmdsZS1wcm9qZWN0IGNvbnZlcnNpb25zIChtdWx0aXBsZS1wcm9qZWN0
DQojIGNvbnZlcnNpb25zIHdvdWxkbid0IHJlYWxseSBtYWtlIHNlbnNlIGZvciBnaXQgYW55d2F5
KS4gIFNvIHRoaXMNCiMgb3B0aW9uIG11c3QgYmUgc2V0IHRvIEZhbHNlOg0KY3R4LmNyb3NzX3By
b2plY3RfY29tbWl0cyA9IEZhbHNlDQoNCiMgZ2l0IGl0c2VsZiBkb2Vzbid0IGFsbG93IGNvbW1p
dHMgdGhhdCBhZmZlY3QgbW9yZSB0aGFuIG9uZSBicmFuY2gsDQojIHNvIHRoaXMgb3B0aW9uIG11
c3QgYmUgc2V0IHRvIEZhbHNlOg0KY3R4LmNyb3NzX2JyYW5jaF9jb21taXRzID0gRmFsc2UNCg0K
IyBjdnMyZ2l0IGRvZXMgbm90IHlldCBoYW5kbGUgdHJhbnNsYXRpbmcgLmN2c2lnbm9yZSBmaWxl
cyBpbnRvDQojIC5naXRpZ25vcmUgZmlsZXMsIHNvIGJ5IGRlZmF1bHQsIHRoZSAuY3ZzaWdub3Jl
IGZpbGVzIGFyZSBpbmNsdWRlZA0KIyBpbiB0aGUgY29udmVyc2lvbiBvdXRwdXQuICBJZiB5b3Ug
d291bGQgbGlrZSB0byBvbWl0IHRoZSAuY3ZzaWdub3JlDQojIGZpbGVzIGZyb20gdGhlIG91dHB1
dCwgc2V0IHRoaXMgb3B0aW9uIHRvIEZhbHNlOg0KY3R4LmtlZXBfY3ZzaWdub3JlID0gVHJ1ZQ0K
DQojIEJ5IGRlZmF1bHQsIGl0IGlzIGEgZmF0YWwgZXJyb3IgZm9yIGEgQ1ZTICIsdiIgZmlsZSB0
byBhcHBlYXIgYm90aA0KIyBpbnNpZGUgYW5kIG91dHNpZGUgb2YgYW4gIkF0dGljIiBzdWJkaXJl
Y3RvcnkgKHRoaXMgc2hvdWxkIG5ldmVyDQojIGhhcHBlbiwgYnV0IGZyZXF1ZW50bHkgb2NjdXJz
IGR1ZSB0byBib3RjaGVkIHJlcG9zaXRvcnkNCiMgYWRtaW5pc3RyYXRpb24pLiAgSWYgeW91IHdv
dWxkIGxpa2UgdG8gcmV0YWluIGJvdGggdmVyc2lvbnMgb2Ygc3VjaA0KIyBmaWxlcywgY2hhbmdl
IHRoZSBmb2xsb3dpbmcgb3B0aW9uIHRvIFRydWUsIGFuZCB0aGUgYXR0aWMgdmVyc2lvbiBvZg0K
IyB0aGUgZmlsZSB3aWxsIGJlIHdyaXR0ZW4gdG8gYSBzdWJkaXJlY3RvcnkgY2FsbGVkICJBdHRp
YyIgaW4gdGhlDQojIG91dHB1dCByZXBvc2l0b3J5Og0KY3R4LnJldGFpbl9jb25mbGljdGluZ19h
dHRpY19maWxlcyA9IEZhbHNlDQoNCiMgQ1ZTIHVzZXMgdW5peCBsb2dpbiBuYW1lcyBhcyBhdXRo
b3IgbmFtZXMgd2hlcmVhcyBnaXQgcmVxdWlyZXMNCiMgYXV0aG9yIG5hbWVzIHRvIGJlIG9mIHRo
ZSBmb3JtICJmb28gPGJhcj4iLiAgVGhlIGRlZmF1bHQgaXMgdG8gc2V0DQojIHRoZSBnaXQgYXV0
aG9yIHRvICJjdnNhdXRob3IgPGN2c2F1dGhvcj4iLiAgYXV0aG9yX3RyYW5zZm9ybXMgY2FuIGJl
DQojIHVzZWQgdG8gbWFwIGN2c2F1dGhvciBuYW1lcyAoZS5nLiwgImpyYW5kb20iKSB0byBhIHRy
dWUgbmFtZSBhbmQNCiMgZW1haWwgYWRkcmVzcyAoZS5nLiwgIkouIFJhbmRvbSA8anJhbmRvbUBl
eGFtcGxlLmNvbT4iIGZvciB0aGUNCiMgZXhhbXBsZSBzaG93bikuICBBbGwgc3RyaW5ncyBzaG91
bGQgYmUgZWl0aGVyIFVuaWNvZGUgc3RyaW5ncyAoaS5lLiwNCiMgd2l0aCAidSIgYXMgYSBwcmVm
aXgpIG9yIDgtYml0IHN0cmluZ3MgaW4gdGhlIHV0Zi04IGVuY29kaW5nLiAgVGhlDQojIHZhbHVl
cyBjYW4gZWl0aGVyIGJlIHN0cmluZ3MgaW4gdGhlIGZvcm0gIm5hbWUgPGVtYWlsPiIgb3IgdHVw
bGVzDQojIChuYW1lLCBlbWFpbCkuICBQbGVhc2Ugc3Vic3RpdHV0ZSB5b3VyIG93biBwcm9qZWN0
J3MgdXNlcm5hbWVzIGhlcmUNCiMgdG8gdXNlIHdpdGggdGhlIGF1dGhvcl90cmFuc2Zvcm1zIG9w
dGlvbiBvZiBHaXRPdXRwdXRPcHRpb24gYmVsb3cuDQphdXRob3JfdHJhbnNmb3Jtcz17DQogICAg
J2pyYW5kb20nIDogKCdKLiBSYW5kb20nLCAnanJhbmRvbUBleGFtcGxlLmNvbScpLA0KICAgICdt
aGFnZ2VyJyA6ICdNaWNoYWVsIEhhZ2dlcnR5IDxtaGFnZ2VyQGFsdW0ubWl0LmVkdT4nLA0KICAg
ICdicmFuZScgOiAodSdCcmFua28gxIxpYmVqJywgJ2JyYW5lQHhiYy5udScpLA0KICAgICdyaW5n
c3Ryb20nIDogJ1RvYmlhcyBSaW5nc3Ryw7ZtIDx0b2JpYXNAcmluZ3N0cm9tLm1pbmUubnU+JywN
CiAgICAnZGlvbmlzb3MnIDogKHUnRXJpayBIw7xsc21hbm4nLCAnZS5odWVsc21hbm5AZ214Lm5l
dCcpLA0KDQogICAgIyBUaGlzIG9uZSB3aWxsIGJlIHVzZWQgZm9yIGNvbW1pdHMgZm9yIHdoaWNo
IENWUyBkb2Vzbid0IHJlY29yZA0KICAgICMgdGhlIG9yaWdpbmFsIGF1dGhvciwgYXMgZXhwbGFp
bmVkIGFib3ZlLg0KICAgICdjdnMyZ2l0JyA6ICdjdnMyZ2l0IDxhZG1pbkBleGFtcGxlLmNvbT4n
LA0KICAgIH0NCg0KIyBUaGlzIGlzIHRoZSBtYWluIG9wdGlvbiB0aGF0IGNhdXNlcyBjdnMyZ2l0
IHRvIG91dHB1dCB0byBhDQojICJmYXN0aW1wb3J0Ii1mb3JtYXQgZHVtcGZpbGUgcmF0aGVyIHRo
YW4gdG8gU3VidmVyc2lvbjoNCmN0eC5vdXRwdXRfb3B0aW9uID0gR2l0T3V0cHV0T3B0aW9uKA0K
ICAgICMgVGhlIGJsb2JzIHdpbGwgYmUgd3JpdHRlbiB2aWEgdGhlIHJldmlzaW9uIHJlY29yZGVy
LCBzbyBpbg0KICAgICMgT3V0cHV0UGFzcyB3ZSBvbmx5IGhhdmUgdG8gZW1pdCByZWZlcmVuY2Vz
IHRvIHRoZSBibG9iIG1hcmtzOg0KICAgIEdpdFJldmlzaW9uTWFya1dyaXRlcigpLA0KDQogICAg
IyBUaGUgZmlsZSBpbiB3aGljaCB0byB3cml0ZSB0aGUgZ2l0LWZhc3QtaW1wb3J0IHN0cmVhbSB0
aGF0DQogICAgIyBjb250YWlucyB0aGUgY2hhbmdlc2V0cyBhbmQgYnJhbmNoL3RhZyBpbmZvcm1h
dGlvbiwgb3IgTm9uZQ0KICAgICMgdG8gd3JpdGUgaXQgdG8gc3Rkb3V0Og0KICAgIGR1bXBfZmls
ZW5hbWU9b3MucGF0aC5qb2luKGN0eC50bXBkaXIsICdnaXQtZHVtcC5kYXQnKSwNCg0KICAgICMg
T3B0aW9uYWwgbWFwIGZyb20gQ1ZTIGF1dGhvciBuYW1lcyB0byBnaXQgYXV0aG9yIG5hbWVzOg0K
ICAgIGF1dGhvcl90cmFuc2Zvcm1zPWF1dGhvcl90cmFuc2Zvcm1zLA0KICAgICkNCg0KIyBDaGFu
Z2UgdGhpcyBvcHRpb24gdG8gVHJ1ZSB0byB0dXJuIG9uIHByb2ZpbGluZyBvZiBjdnMyZ2l0IChm
b3INCiMgZGVidWdnaW5nIHB1cnBvc2VzKToNCnJ1bl9vcHRpb25zLnByb2ZpbGluZyA9IEZhbHNl
DQoNCg0KIyBTaG91bGQgQ1ZTSXRlbSAtPiBDaGFuZ2VzZXQgZGF0YWJhc2UgZmlsZXMgYmUgbWVt
b3J5IG1hcHBlZD8gIEluDQojIHNvbWUgdGVzdHMsIHVzaW5nIG1lbW9yeSBtYXBwaW5nIHNwZWVk
ZWQgdXAgdGhlIG92ZXJhbGwgY29udmVyc2lvbg0KIyBieSBhYm91dCA1JS4gIEJ1dCB0aGlzIG9w
dGlvbiBjYW4gY2F1c2UgdGhlIGNvbnZlcnNpb24gdG8gZmFpbCB3aXRoDQojIGFuIG91dCBvZiBt
ZW1vcnkgZXJyb3IgaWYgdGhlIGNvbnZlcnNpb24gY29tcHV0ZXIgcnVucyBvdXQgb2YNCiMgdmly
dHVhbCBhZGRyZXNzIHNwYWNlIChlLmcuLCB3aGVuIHJ1bm5pbmcgYSB2ZXJ5IGxhcmdlIGNvbnZl
cnNpb24gb24NCiMgYSAzMi1iaXQgb3BlcmF0aW5nIHN5c3RlbSkuICBUaGVyZWZvcmUgaXQgaXMg
ZGlzYWJsZWQgYnkgZGVmYXVsdC4NCiMgVW5jb21tZW50IHRoZSBmb2xsb3dpbmcgbGluZSB0byBh
bGxvdyB0aGVzZSBkYXRhYmFzZSBmaWxlcyB0byBiZQ0KIyBtZW1vcnkgbWFwcGVkLg0KI2NoYW5n
ZXNldF9kYXRhYmFzZS51c2VfbW1hcF9mb3JfY3ZzX2l0ZW1fdG9fY2hhbmdlc2V0X3RhYmxlID0g
VHJ1ZQ0KDQojIE5vdyBzZXQgdGhlIHByb2plY3QgdG8gYmUgY29udmVydGVkIHRvIGdpdC4gIGN2
czJnaXQgb25seSBzdXBwb3J0cw0KIyBzaW5nbGUtcHJvamVjdCBjb252ZXJzaW9ucywgc28gdGhp
cyBtZXRob2QgbXVzdCBvbmx5IGJlIGNhbGxlZA0KIyBvbmNlOg0KcnVuX29wdGlvbnMuc2V0X3By
b2plY3QoDQogICAgIyBUaGUgZmlsZXN5c3RlbSBwYXRoIHRvIHRoZSBwYXJ0IG9mIHRoZSBDVlMg
cmVwb3NpdG9yeSAoKm5vdCogYQ0KICAgICMgQ1ZTIHdvcmtpbmcgY29weSkgdGhhdCBzaG91bGQg
YmUgY29udmVydGVkLiAgVGhpcyBtYXkgYmUgYQ0KICAgICMgc3ViZGlyZWN0b3J5IChpLmUuLCBh
IG1vZHVsZSkgd2l0aGluIGEgbGFyZ2VyIENWUyByZXBvc2l0b3J5Lg0KICAgIHInL21lZGlhL1By
ZW5vc2l2aS90b19jb252ZXJ0L2N2c3Jvb3QvRE1TX0RCJywNCg0KICAgICMgQSBsaXN0IG9mIHN5
bWJvbCB0cmFuc2Zvcm1hdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCB0byByZW5hbWUNCiAgICAjIHN5
bWJvbHMgaW4gdGhpcyBwcm9qZWN0Lg0KICAgIHN5bWJvbF90cmFuc2Zvcm1zPVsNCiAgICAgICAg
IyBVc2UgSWdub3JlU3ltYm9sVHJhbnNmb3JtcyBsaWtlIHRoZSBmb2xsb3dpbmcgdG8gY29tcGxl
dGVseQ0KICAgICAgICAjIGlnbm9yZSBzeW1ib2xzIG1hdGNoaW5nIGEgcmVndWxhciBleHByZXNz
aW9uIHdoZW4gcGFyc2luZw0KICAgICAgICAjIHRoZSBDVlMgcmVwb3NpdG9yeSwgZm9yIGV4YW1w
bGUgdG8gYXZvaWQgd2FybmluZ3MgYWJvdXQNCiAgICAgICAgIyBicmFuY2hlcyB3aXRoIHR3byBu
YW1lcyBhbmQgdG8gY2hvb3NlIHRoZSBwcmVmZXJyZWQgbmFtZS4NCiAgICAgICAgIyBJdCBpcyAq
bm90KiByZWNvbW1lbmRlZCB0byB1c2UgdGhpcyBpbnN0ZWFkIG9mDQogICAgICAgICMgRXhjbHVk
ZVJlZ2V4cFN0cmF0ZWd5UnVsZTsgdGhvdWdoIG1vcmUgZWZmaWNpZW50LA0KICAgICAgICAjIEln
bm9yZVN5bWJvbFRyYW5zZm9ybXMgYXJlIGxlc3MgZmxleGlibGUgYW5kIGRvbid0IGV4Y2x1ZGUN
CiAgICAgICAgIyBicmFuY2hlcyBjb3JyZWN0bHkuICBUaGUgYXJndW1lbnQgaXMgYSBQeXRob24t
c3R5bGUgcmVndWxhcg0KICAgICAgICAjIGV4cHJlc3Npb24gdGhhdCBoYXMgdG8gbWF0Y2ggdGhl
ICp3aG9sZSogQ1ZTIHN5bWJvbCBuYW1lOg0KICAgICAgICAjSWdub3JlU3ltYm9sVHJhbnNmb3Jt
KHInbmlnaHRseS1idWlsZC10YWctLionKQ0KDQogICAgICAgICMgUmVnZXhwU3ltYm9sVHJhbnNm
b3JtcyB0cmFuc2Zvcm0gc3ltYm9scyB0ZXh0dWFsbHkgdXNpbmcgYQ0KICAgICAgICAjIHJlZ3Vs
YXIgZXhwcmVzc2lvbi4gIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIFB5dGhvbiByZWd1bGFyDQog
ICAgICAgICMgZXhwcmVzc2lvbiBwYXR0ZXJuIGFuZCB0aGUgc2Vjb25kIGlzIGEgcmVwbGFjZW1l
bnQgcGF0dGVybi4NCiAgICAgICAgIyBUaGUgcGF0dGVybiBpcyBtYXRjaGVkIGFnYWluc3QgZWFj
aCBzeW1ib2wgbmFtZS4gIElmIGl0DQogICAgICAgICMgbWF0Y2hlcyB0aGUgd2hvbGUgc3ltYm9s
IG5hbWUsIHRoZW4gdGhlIHN5bWJvbCBuYW1lIGlzDQogICAgICAgICMgcmVwbGFjZWQgd2l0aCB0
aGUgY29ycmVzcG9uZGluZyByZXBsYWNlbWVudCB0ZXh0LiAgVGhlDQogICAgICAgICMgcmVwbGFj
ZW1lbnQgY2FuIGluY2x1ZGUgc3Vic3RpdHV0aW9uIHBhdHRlcm5zIChlLmcuLCByJ1wxJw0KICAg
ICAgICAjIG9yIHInXGc8bmFtZT4nKS4gIFR5cGljYWxseSB5b3Ugd2lsbCB3YW50IHRvIHVzZSBy
YXcgc3RyaW5ncw0KICAgICAgICAjIChzdHJpbmdzIHdpdGggYSBwcmVjZWRpbmcgJ3InLCBsaWtl
IHNob3duIGluIHRoZSBleGFtcGxlcykNCiAgICAgICAgIyBmb3IgdGhlIHJlZ2V4cCBhbmQgaXRz
IHJlcGxhY2VtZW50IHRvIGF2b2lkIGJhY2tzbGFzaA0KICAgICAgICAjIHN1YnN0aXR1dGlvbiB3
aXRoaW4gdGhvc2Ugc3RyaW5ncy4NCiAgICAgICAgI1JlZ2V4cFN5bWJvbFRyYW5zZm9ybShyJ3Jl
bGVhc2UtKFxkKylfKFxkKyknLA0KICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgIHIncmVs
ZWFzZS1cMS5cMicpLA0KICAgICAgICAjUmVnZXhwU3ltYm9sVHJhbnNmb3JtKHIncmVsZWFzZS0o
XGQrKV8oXGQrKV8oXGQrKScsDQogICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgcidyZWxl
YXNlLVwxLlwyLlwzJyksDQoNCiAgICAgICAgIyBTaW1wbGUgMToxIGNoYXJhY3RlciByZXBsYWNl
bWVudHMgY2FuIGFsc28gYmUgZG9uZS4gIFRoZQ0KICAgICAgICAjIGZvbGxvd2luZyB0cmFuc2Zv
cm0sIHdoaWNoIGNvbnZlcnRzIGJhY2tzbGFzaGVzIGludG8gZm9yd2FyZA0KICAgICAgICAjIHNs
YXNoZXMsIHNob3VsZCB1c3VhbGx5IGJlIGluY2x1ZGVkOg0KICAgICAgICBSZXBsYWNlU3Vic3Ry
aW5nc1N5bWJvbFRyYW5zZm9ybSgnXFwnLCcvJyksDQoNCiAgICAgICAgIyBUaGlzIGxhc3QgcnVs
ZSBlbGltaW5hdGVzIGxlYWRpbmcsIHRyYWlsaW5nLCBhbmQgcmVwZWF0ZWQNCiAgICAgICAgIyBz
bGFzaGVzIHdpdGhpbiB0aGUgb3V0cHV0IHN5bWJvbCBuYW1lczoNCiAgICAgICAgTm9ybWFsaXpl
UGF0aHNTeW1ib2xUcmFuc2Zvcm0oKSwNCiAgICAgICAgXSwNCg0KICAgICMgU2VlIHRoZSBkZWZp
bml0aW9uIG9mIGdsb2JhbF9zeW1ib2xfc3RyYXRlZ3lfcnVsZXMgYWJvdmUgZm9yIGENCiAgICAj
IGRlc2NyaXB0aW9uIG9mIHRoaXMgb3B0aW9uOg0KICAgIHN5bWJvbF9zdHJhdGVneV9ydWxlcz1n
bG9iYWxfc3ltYm9sX3N0cmF0ZWd5X3J1bGVzLA0KDQogICAgIyBFeGNsdWRlIHBhdGhzIGZyb20g
dGhlIGNvbnZlcnNpb24uIFNob3VsZCBiZSByZWxhdGl2ZSB0bw0KICAgICMgcmVwb3NpdG9yeSBw
YXRoIGFuZCB1c2UgZm9yd2FyZCBzbGFzaGVzOg0KICAgICNleGNsdWRlX3BhdGhzPVsnZmlsZS10
by1leGNsdWRlLnR4dCx2JywgJ2Rpci90by9leGNsdWRlJ10sDQogICAgKQ0KDQo=
------=_Part_3955_1527075798.1399565014955--