AF:
NF:0
PS:10
SRH:1
SFN:
DSR:
MID:<20070119172741.6bb1250f@ripper.onstor.net>
CFG:
PT:0
S:andy.sharp@onstor.com
RQ:
SSV:onstor-exch02.onstor.net
NSV:
SSH:
R:<larry.scheer@onstor.com>
MAID:1
X-Sylpheed-Privacy-System:
X-Sylpheed-Sign:0
SCF:#mh/Mailbox/sent
X-Sylpheed-End-Special-Headers: 1
Date: Fri, 19 Jan 2007 17:28:47 -0800
From: Andrew Sharp <andy.sharp@onstor.com>
To: Larry Scheer <larry.scheer@onstor.com>
Subject: test out this verify_install.sh
Message-ID: <20070119172847.7185f5a6@ripper.onstor.net>
Organization: Onstor
X-Mailer: Sylpheed-Claws 2.6.0 (GTK+ 2.8.20; x86_64-pc-linux-gnu)
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="MP_GK=R2L9GUzCZe.WLzHjl4pB"

--MP_GK=R2L9GUzCZe.WLzHjl4pB
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hi Larry,

I've made some improvements.  Give this one a whirl if you have a
chance.  Let me know if you are so I can look over your shoulder.

a

--MP_GK=R2L9GUzCZe.WLzHjl4pB
Content-Type: application/x-shellscript; name=verify_install.sh
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=verify_install.sh

IyEgL2Jpbi9rc2gKIwojIFByb2dyYW06IHZlcmlmeV9pbnN0YWxsLnNoCiMgQ29weXJpZ2h0IChD
KSAyMDA3IE9uc3RvciBTdG9yYWdlLCBJbmMuCiMKIyBDcmVhdGVkIGJ5OiBMYXJyeSBTY2hlZXIK
IwojIERhdGUgQ3JlYXRlZDogMDEvMTIvMjAwNwojCiMgRnVuY3Rpb246IEEgc2NyaXB0IHRoYXQg
Y2hlY2tzIHRoZSBpbnRlZ3JpdHkgb2YgdGhlIGZpbGUgc3lzdGVtIG9mIHRoZQojIE5BUyBHYXRl
d2F5LiBJdCBpcyBjYWxsZWQgYnkgdGhlIG5meHNoIHN5c3RlbSB1cGdyYWRlIGNvbW1hbmQgdG8g
Y2hlY2sKIyB3aGljaCBmaWxlcyBhcmUgb3V0IG9mIGRhdGUgd2l0aCByZXNwZWN0IHRvIHRoZSBy
ZWxlYXNlIGRpc3RyaWJ1dGlvbiBhbmQKIyBpbnN0YWxsIHRob3NlIGZpbGVzIG9uIHRoZSBjb21w
YWN0IGZsYXNoLgojCiMgSW4gdGhlIHVubGlrZWx5IGNhc2UgdGhlIHN5c3RlbSB1cGdyYWRlIGNv
bW1hbmQgYmVjb21lcyB1bnVzYWJsZSB0aGlzCiMgc2NyaXB0LCB3aGVuIGdpdmVuIHRoZSBwcm9w
ZXIgb3B0aW9ucywgY2FuIHBlcmZvcm0gdGhlIGZpbGUgc3lzdGVtCiMgc29mdHdhcmUgaW5zdGFs
bGF0aW9uIHRvIHRoZSBjb21wYWN0IGZsYXNoLgojCiMgTmVlZGVkIEVuaGFuY2VtZW50czoKIwkx
LiBFcnJvciBleGl0IGlmIG5vIG1hbmlmZXN0IGZpbGUgZm91bmQgaW4gZGlzdHJpYnV0aW9uCiMJ
Mi4gUmVtb3ZhbCBvZiBjcCBtZXRob2Qgb2YgaW5zdGFsbAojCTMuIFRha2Ugb3ZlciBtb3JlIGZ1
bmN0aW9ucyBmb3VuZCBpbiBjbWRfdXBncmFkZS5jIChpLmUuIG10cmVlLCB2ZXJzaW9uCiMJICAg
Y2hlY2tpbmcsIGV0Yy4pCiMKClVTQUdFPSJVc2FnZTogYGJhc2VuYW1lICQwYCBbLWYgZnRwLy9V
UkxdIHwgWy1yXSB8IC1zIHwgLXAgfCBbLWhdIHwgWy1hXSIKCiNpbml0aWxpemUgZ2xvYmFscyBh
bmQgc2V0IGRlZmF1bHRzClRBUkJPTT0iIgpNTlQxPS9tbnQxCkNGX0RJUj0kTU5UMQpUQVJfRElS
PS9tbnQKREJHTE9HPS90bXAvdmVyaWZ5X2ZsYXNoLmxvZwpTWVNMT0c9L3Zhci9sb2cvc3lzX3Vw
Z3JhZGUubG9nCkxPRz0ke1RBUl9ESVJ9L3N5c191cGdyYWRlLmxvZwpET19TRUNPTkRBUlk9IiIK
RE9fUFJJTUFSWT0iIgpET19SRUlOU1RBTEw9IiIKRE9fRE9XTkxPQUQ9IiIKRE9fRE9XTkxPQUQ9
IiIKUlVOX1NUQU5EQUxPTkU9IiIKTkVFRF9ORVdfREVWUz0iIgoKIyBkZXRlcm1pbmUgb25zdG9y
IHBhdGgKaWYgbW91bnQgfCBncmVwIC91c3IvbG9jYWwvYWdpbGUgOyB0aGVuCglPTlNUT1JfUEFU
SD0vdXNyL2xvY2FsL2FnaWxlCmVsaWYgbW91bnQgfCBncmVwIC9vbnN0b3IgOyB0aGVuCglPTlNU
T1JfUEFUSD0vb25zdG9yCmVsc2UKCWVjaG8gIkNhbm5vdCBmaW5kIE9OU1RPUiBwYXRoISIKCWV4
aXQgMQpmaQoKT05TVE9SX0NPTkY9JHtPTlNUT1JfUEFUSH0vY29uZgpPTlNUT1JfRVRDPSR7T05T
VE9SX1BBVEh9L2V0YwpPTlNUT1JfQklOPSR7T05TVE9SX1BBVEh9L2JpbgpERVNDUj0ke09OU1RP
Ul9FVEN9L2Rlc2NyClNSQ0JPTT0ke09OU1RPUl9DT05GfS9jdXJyZW50LmJvbQpQUkVWQk9NPSR7
T05TVE9SX0NPTkZ9L3ByZXZpb3VzLmJvbQoKU1lTX0NORl9GSUxFUz0iJE9OU1RPUl9DT05GL2Fn
aWxlLmNvbmYgXAoJJE9OU1RPUl9DT05GL2NsdXN0ZXIuY29uZiBcCgkkT05TVE9SX0NPTkYvY2x1
c3Rlci5kYi5EQjAgXAoJJE9OU1RPUl9DT05GL2NsdXN0ZXIuZGIuREJTWVMxIFwKCSRPTlNUT1Jf
RVRDL2Vsb2cuY29uZiBcCgkkT05TVE9SX0VUQy9zeXNsb2cuY29uZiBcCgkvZXRjL2hvc3RzIFwK
CS9ldGMvbXlnYXRlIFwKCS9ldGMvaG9zdG5hbWUuc2MxIFwKCS9ldGMvaG9zdG5hbWUuc2MyIFwK
CS9ldGMvbWFzdGVyLnBhc3N3ZCBcCgkvZXRjL3Bhc3N3ZCBcCgkvZXRjL3B3ZC5kYiBcCgkvZXRj
L3Nwd2QuZGIgXAoJL2V0Yy9teW5hbWUgXAoJL2V0Yy9yZXNvbHYuY29uZiBcCgkvZXRjL3NzaC9z
c2hfaG9zdF9kc2Ffa2V5LnB1YiBcCgkvZXRjL3NzaC9zc2hfaG9zdF9yc2Ffa2V5LnB1YiBcCgkv
ZXRjL3NzaC9zc2hfaG9zdF9kc2Ffa2V5IFwKCS9ldGMvc3NoL3NzaF9ob3N0X3JzYV9rZXkgXAoJ
L2V0Yy9zc2gvc3NoX2hvc3Rfa2V5LnB1YiBcCgkvZXRjL3NzaC9zc2hfaG9zdF9rZXkgXAoJL2V0
Yy9sb2NhbHRpbWUgXAoJL2V0Yy9zeXNsb2cuY29uZiBcCgkvZXRjL250cC5jb25mIFwKCS9ldGMv
bnRwL3N0ZXAtdGlja2VycyIKClBBVEg9L3NiaW46L3Vzci9zYmluOi9iaW46L3Vzci9iaW46L3Vz
ci9sb2NhbC9iaW46JHtPTlNUT1JfQklOfQpleHBvcnQgUEFUSAoKYXJncz0iJCoiCmlmIFsgLXog
IiRhcmdzIiBdIDsgdGhlbgoJZWNobyAiJFVTQUdFIgoJZXhpdCAxCmZpCgpvcHRpb25zPSJmOmFo
cHJzIgoKd2hpbGUgZ2V0b3B0cyAkb3B0aW9ucyBvcHQgOyBkbwoJY2FzZSAkb3B0IGluCglmKQoJ
CURPX0RPV05MT0FEPXllcwoJCWlmIFsgIiRPUFRBUkciIF0gOyB0aGVuCgkJCVVSTD0kT1BUQVJH
CgkJCUJVSUxEPWBlY2hvICRVUkwgfCBzZWQgJ3MlLiovXCguKlwpWy5ddGFyWy5dZ3olXDElJ2AK
CQkJVEFSQk9NPSR7T05TVE9SX0NPTkZ9LyR7QlVJTER9LmJvbQoJCQlleHBvcnQgVVJMIEJVSUxE
IFRBUkJPTQoJCWVsc2UKCQkJZWNobyAiJFVTQUdFIgoJCQllY2hvICJNdXN0IHNwZWNpZnkgYSBm
dHAgVVJMIgoJCQlleGl0IDIKCQlmaQoJCWNvbnRpbnVlCgkJOzsKCWEpCgkJUlVOX1NUQU5EQUxP
TkU9eWVzCgkJOzsKCXMpCgkJQ0ZfRElSPS9tbnQxCgkJRE9fU0VDT05EQVJZPXllcwoJCVJPT1Q9
JENGX0RJUgoJCWNvbnRpbnVlCgkJOzsKCXApCgkJQ0ZfRElSPScnCgkJIyBWYXJpYWJsZSB1c2Vk
IHRvIHNodXQgZG93biBwbSBhbmQgcmVib290IHN5c3RlbQoJCURPX1BSSU1BUlk9eWVzCgkJRE9f
U0VDT05EQVJZPSIiCgkJUk9PVD0vCgkJY29udGludWUKCQk7OwoJcikKCQlET19SRUlOU1RBTEw9
eWVzCgkJY29udGludWUKCQk7OwoJaHxcPykKCQllY2hvICIkVVNBR0UiCgkJZWNobyAiCS1zIENo
ZWNrIHNlY29uZGFyeSBmbGFzaCIKCQllY2hvICIJLXAgQ2hlY2sgcHJpbWFyeSBmbGFzaCIKCQll
Y2hvICIJLWYgZnRwOi8vVVJMIERvd25sb2FkIGRpc3RyaWJ1dGlvbiBpbnRvIG1lbW9yeSBmaWxl
c3lzdGVtIgoJCWVjaG8gIgktciBJbnN0YWxsIGZpbGVzIGFzIG5lZWRlZCBmcm9tIHRoZSBkaXN0
cmlidXRpb24iCgkJZWNobyAiCS1hIFN0YW5kYWxvbmUgb3BlcmF0aW9uIFVzZWQgd2hlbiBub3Qg
Y2FsbGVkIGJ5IHN5c3RlbSB1cGdyYWRlIgoJCWVjaG8gIgktaCBQcmludCB0aGlzIG1lc3NhZ2Ui
CgkJZXhpdCAxCgkJOzsKCWVzYWMKZG9uZQoKcmVjb3JkKCkKewoJaWYgWyAiJE5PX1JFQ09SRCIg
XSA7IHRoZW4KCQl0ZWVfY21kPSIiCgllbHNlCgkJdGVlX2NtZD0iIHwgdGVlIC1hICRMT0ciCglm
aQoKCWV2YWwgZWNobyAiJEAiICR0ZWVfY21kCn0KCmVycm9yX2NsZWFudXAoKQp7CgkjY2xlYW4g
dXAgYW5kIHJldHVybgoJIyBtaWdodCBoYXZlIHJldHVybmVkIGZyb20gYSBmdW5jdGlvbiB0aGF0
IGRpZCBhIGNkIGludG8gQ0ZfRElSIG9yIC9tbnQKCWNkIC8KCXVtb3VudF9zZWNvbmRhcnkKCXVt
b3VudF9wYXRocyAkVEFSX0RJUgp9Cgptb3VudF9lcnJvcl9oYW5kbGVyKCkKewoJc3RhdHVzPSQ/
CglyZWNvcmQgIkVycm9yIGluIG1vdW50L3Vtb3VudCBvZiBgZXZhbCAiJEAiYCIKCXJlY29yZCAi
RXhpdGluZy4uLiIKCWVycm9yX2NsZWFudXAKCXJldHVybiAkc3RhdHVzCn0KCnJlbW91bnRfcHJp
bWFyeSgpCnsKCU1QVEg9LzsgbW91bnQgLXV3ICRNUFRIICYmCglNUFRIPS91c3I7IG1vdW50IC11
dyAkTVBUSCAmJgoJTVBUSD0kT05TVE9SX1BBVEg7IG1vdW50IC11dyAkTVBUSCB8fAoJbW91bnRf
ZXJyb3JfaGFuZGxlciAkTVBUSAp9CgojIGdldCB0aGUgbW91bnQgcG9pbnRzIGZyb20gdGhlIGZz
dGFiIGZpbGUgb24gdGhlIHNlY29uZGFyeSBmbGFzaC4KIyB0aGV5IG1pZ2h0IGJlIGRpZmZlcmVu
dCBmcm9tIHByaW1hcnk7IGFuZCB0aGV5CiMgbWlnaHQgYmUgIndyb25nIiBpbiB0aGF0IHRoZXkg
bWF5IGhhdmUgdGhlIHdyb25nCiMgZGV2aWNlcyAoc2F5LCBmb3IgaW5zdGFuY2UsIGlmIENGIGNh
cmRzIHdlcmUgc3dhcHBlZCkKaWRfc2Vjb25kYXJ5KCkKewoJcm9vdD1gZGYgLyB8IGZncmVwIC9k
ZXYgfCBhd2sgJ3twcmludCAkMX0nYAogICAgY2FzZSAkcm9vdCBpbgoJCS9kZXYvd2QwYSkKCQkJ
c19iYXNlPS9kZXYvd2QxCgkJCTs7CgkJL2Rldi93ZDFhKQoJCQlzX2Jhc2U9L2Rldi93ZDAKCQkJ
OzsKCWVzYWMKCgkjIG1vdW50IHRoZSBzZWNvbmRhcnkgcm9vdAoJbW91bnQgJHtzX2Jhc2V9YSAv
bW50MQoKCXdoaWxlIHJlYWQgc2RldiBzcGF0aCBzdHlwZSByZXN0IDsgZG8KCQlpZiBbICIkc3R5
cGUiID0gInN3IiAtbyAiJHN0eXBlIiA9ICJzd2FwIiBdIDsgdGhlbgoJCQljb250aW51ZQoJCWZp
CgkJaWYgWyAiJHNwYXRoIiA9ICIvIiBdIDsgdGhlbgoJCQlpZiBbICIkc2RldiIgIT0gIiR7c19i
YXNlfWEiIF0gOyB0aGVuCgkJCQlkZXZfaW5jb3JyZWN0PTEKCQkJZmkKCQkJIyBzdGFydCB0aGUg
dHdvIGZvcndhcmQgbGlzdHMgYW5kIHRoZSBiYWNrd2FyZCBsaXN0CgkJCVNFQ19ERVZfTElTVD0i
JHtzX2Jhc2V9YSIKCQkJU0VDX01OVF9MSVNUPSIvIgoJCQlTRUNfTU5UX0JMSVNUPSIvIgoJCQlj
b250aW51ZQoJCWZpCgkJaWYgWyAiJGRldl9pbmNvcnJlY3QiIF0gOyB0aGVuCgkJCXNkZXY9YGVj
aG8gJHNkZXYgfCBzZWQgInMrL2Rldi93ZC4rJHNfYmFzZSJgCgkJZmkKCQkjIHN0b3JlIHRoZW0g
aW4gb3JkZXIKCQlTRUNfREVWX0xJU1Q9IiRTRUNfREVWX0xJU1QgJHNkZXYiCgkJU0VDX01OVF9M
SVNUPSIkU0VDX01OVF9MSVNUICRzcGF0aCIKCQlTRUNfTU5UX0JMSVNUPSIkc3BhdGggJFNFQ19N
TlRfQkxJU1QiCglkb25lIDwgL21udDEvZXRjL2ZzdGFiCgoJZXhwb3J0IFNFQ19ERVZfTElTVCBT
RUNfTU5UX0xJU1QgU0VDX01OVF9CTElTVAoKCSMgdW5tb3VudCBzZWNvbmRhcnkgcm9vdAoJdW1v
dW50IC9tbnQxCn0KCiMgdGFrZXMgYSBsaXN0IG9mIHBhdGhzIGFzIGFyZ3VtZW50cyBhbmQgdW5t
b3VudHMgdGhlbSBpZiB0aGV5IGFyZSBtb3VudGVkCnVtb3VudF9wYXRocygpCnsKCSMgdW1vdW50
IG9ubHkgcGF0aHMgdGhhdCBhcmUgbW91bnRlZAoJbW91bnRzPSIkQCIKCWZvciBtIGluICAkbW91
bnRzIDsgZG8KCQltb3VudF9wdD1gbW91bnQgfCBmZ3JlcCAkbSB8IGF3ayAne3ByaW50ICQzfSdg
CgkJaWYgWyAiJG1vdW50X3B0IiBdIDsgdGhlbgoJCQl1bW91bnQgJG1vdW50X3B0IDI+JjEgPj4v
ZGV2L251bGwKCQlmaQoJZG9uZQp9Cgptb3VudF9zZWNvbmRhcnkoKQp7CglyZWNvcmQgIk1vdW50
aW5nIHNlY29uZGFyeSBkaXNrLi4uIgoKCWRpPTAKCWZvciBkIGluICRTRUNfREVWX0xJU1QgOyBk
bwoJCWRpPWBleHByICRkaSArIDFgCgkJcGk9MAoJCWZvciBwIGluICRTRUNfTU5UX0xJU1QgOyBk
bwoJCQlwaT1gZXhwciAkcGkgKyAxYAoJCQlpZiBbICRkaSAtZXEgJGRpIF0gOyB0aGVuCgkJCQlt
b3VudCAkZCAke01OVDF9JHtwfSB8fCB7CgkJCQkJZXJyb3JfY2xlYW51cAoJCQkJCWJyZWFrIDIK
CQkJCX0KCQkJZmkKCQlkb25lCglkb25lCn0KCnVtb3VudF9zZWNvbmRhcnkoKQp7CglyZWNvcmQg
IlVubW91bnRpbmcgc2Vjb25kYXJ5IGRpc2suLi4iCgkjIHJldmVyc2UgdGhlIGxpc3QKCWZvciBw
IGluICRTRUNfTU5UX0xJU1QgOyBkbwoJCWlmIFsgIiRwIiA9ICIvIiBdIDsgdGhlbgoJCQlTRUNf
TU5UX0JMSVNUPSIvIgoJCWVsc2UKCQkJU0VDX01OVF9CTElTVD0iJHAgJFNFQ19NTlRfQkxJU1Qi
CgkJZmkKCWRvbmUKCgkjIHVubW91bnQgdGhlIGRpcmVjdG9yaWVzCglmb3IgcCBpbiAkU0VDX01O
VF9CTElTVCA7IGRvCgkJdW1vdW50ICRwIHx8IGJyZWFrCglkb25lCn0KCmNoZWNrX3NlY29uZGFy
eSgpCnsKCXJlY29yZCAiQ2hlY2tpbmcgZmlsZSBzeXN0ZW1zLi4uIgoJZm9yIGQgaW4gJFNFQ19E
RVZfTElTVCA7IGRvCgkJL3NiaW4vZnNjayAteSAkZCAyPiYxID4+L2Rldi9udWxsIHx8IHsKCQkJ
ZWNobyAiRmFpbHVyZSBjaGVja2luZyBmaWxlc3lzdGVtIG9uIGRldmljZSAkZCIKCQkJcmV0dXJu
IDEKCQl9Cglkb25lCn0KCmNkX2ZsYXNoKCkKewoJaWYgWyAiJERPX1NFQ09OREFSWSIgXSA7IHRo
ZW4KCQljZCAkQ0ZfRElSCgllbHNlCgkJY2QgLwoJZmkKCglyZXR1cm4gMAp9Cgppbml0X2xvZygp
CnsKCSNpbml0aWFsaXplIGRlYnVnIGxvZwoJWyAtciAkREJHTE9HIC1hIC1zICREQkdMT0cgXSAm
JiBybSAkREJHTE9HCgl0b3VjaCAkREJHTE9HCgoJcmV0dXJuIDAKfQoKd2Fybl91c2VyX2Fib3V0
X2RldmljZXMoKQp7CglyZWNvcmQgIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqIgoJcmVjb3JkICJXYXJuaW5nOiAvZGV2L01BS0VE
RVYgaGFzIGNoYW5nZWQgaW4gdGhpcyByZWxlYXNlIGRpc3RyaWJ1dGlvbiIKCXJlY29yZCAiYW5k
IHlvdSBjaG9zZSB0byB1cGRhdGUgdGhlIHByaW1hcnkgZmxhc2guIgoJcmVjb3JkICJEZXZpY2Vz
IGNhbm5vdCBiZSB1cGRhdGVkIG9uIGEgcnVubmluZyBzeXN0ZW0uIFJlLWJvb3Qgd2l0aCAiCgly
ZWNvcmQgJ3N5c3RlbSByZWJvb3QgLXMgYW5kIHJ1biBzeXN0ZW0gdXBncmFkZSAtcyAtZiB0byB1
cGRhdGUgL2RldicKCXJlY29yZCAiV2FybmluZzogeW91ciBpbnN0YWxsYXRpb24gaXMgaW5jb21w
bGV0ZS4iCglyZWNvcmQgIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqIgoKCXJldHVybiAwCn0KCnVwZGF0ZV9kZXZpY2VzKCkKewoJ
bG9jYWwgZXJyCgoJIyBDYW4ndCB1cGRhdGUgZGV2aWNlcyBvbiBwcmltYXJ5IGZsYXNoCglpZiBb
ICIkRE9fUFJJTUFSWSIgXSA7IHRoZW4KCQl3YXJuX3VzZXJfYWJvdXRfZGV2aWNlcwoJZWxzZQoJ
CXJlY29yZAoJCXJlY29yZCAiVXBkYXRpbmcgZGV2aWNlcyBvbiBgZGF0ZWAiCgkJY2RfZmxhc2gK
CQljZCBkZXYKCQkuL01BS0VERVYgYWxsID4+L2Rldi9udWxsIDI+JjEgJiYgewoJCQlyZWNvcmQg
Ik5ldyBkZXZpY2VzIGluc3RhbGxlZCBvbiBgZGF0ZWAiCgkJCXJlY29yZAoJCX0gfHwgewoJCQll
cnI9JD8KCQkJcmVjb3JkICJOZXcgZGV2aWNlcyBub3QgdXBkYXRlZC4gIE1BS0VERVYgZmFpbGVk
OiAkZXJyIgoJCX0KCQljZCAvCglmaQoKCXJldHVybiAkZXJyCn0KCnJlaW5zdGFsbCgpCnsKCSMK
CSMgVXNlIHRhciB0byBpbnN0YWxsIGZpbGVzIG9uIGZsYXNoCgkjCgkjIFRoZSB0YXIgbWV0aG9k
IHVzZXMgZmFyIGxlc3MgbWVtb3J5IGFuZCBwcmVzZXJ2ZXMgaGFyZCBsaW5rcy4KCSMgSXQgY2Fu
IG9ubHkgYmUgdXNlZCBpbiBjb25qdWN0aW9uIHdpdGggaXQncyBkb3dubG9hZCBvcHRpb24uCgkj
IFRoZSB0YXIgbWV0aG9kIGZpcnN0IGNyZWF0ZXMgYSBmaWxlIGxpc3RpbmcgYWxsIGZpbGVzIG5l
ZWRpbmcgdXBncmFkZQoJIyBPbmx5IGZpbGVzIGluIHRoZSBsaXN0d2lsbCBiZSBleHRyYWN0ZWQg
ZnJvbSB0aGUgZGlzdHJpYnV0aW9uLgoJIyBUaGlzIGlzIGRvbmUgdG8gbWluaW1pemUgd3JpdGVz
IHRvIHRoZSBjb21wYWN0IGZsYXNoLgoJIyBUaGUgcmVhc29uIGEgZmlsZSBpcyB1c2VkIHZlcnN1
cyBqdXN0IGdpdmluZyB0YXIgdGhlIGZpbGVuYW1lcyB0bwoJIyBleHRyYWN0IGlzIHRoZSBmaWxl
bmFtZSBsaXN0IGNvdWxkIHBvdGVudGlhbGx5IGJlIGxhcmdlIGVub3VnaCB0bwoJIyBvdmVyZmxv
dyBidWZmZXJzLgoJIwoKCSMgcmVtb3VudCBwcmltYXJ5IGZsYXNoIHJ3IGlmIG5lZWRlZAoJaWYg
WyAiJERPX1BSSU1BUlkiIC1hICIkUlVOX1NUQU5EQUxPTkUiIF0gOyB0aGVuCgkJcmVjb3JkICJS
ZW1vdW50aW5nIHRoZSBsb2NhbCBmaWxlc3lzdGVtIHJlYWQtd3JpdGUuLi4iCgkJcmVtb3VudF9w
cmltYXJ5IHx8IHJldHVybgoJZmkKCgkjSW5pdGlhbGl6ZSB0aGUgbGlzdCBmaWxlIGZvciB0aGUg
dGFyIG9wdGlvbgoJdW50YXJ0aGVzZT0ke1RBUl9ESVJ9L2ZpbGVzLXRvX3VwZ3JhZGUubHN0Cglb
IC1mICR1bnRhcnRoZXNlIF0gJiYgcm0gLWYgJHVudGFydGhlc2UKCVsgIiRET19ET1dOTE9BRCIg
XSAmJiB0b3VjaCAkdW50YXJ0aGVzZQoKCSNBZGQgdGhlIGZpbGUgdG8gdGhlIGxpc3QKCWZvciBm
IGluICRET19PVkVSUyA7IGRvCgkJaWYgWyAiJERPX0RPV05MT0FEIiBdIDsgdGhlbgoJCQllY2hv
ICIuLyR7Zn0iID4+ICR1bnRhcnRoZXNlCgkJZmkKCWRvbmUKCgkjIFRoZSB0YXIgbWV0aG9kCglp
ZiBbIC1zICR1bnRhcnRoZXNlICAtYSAiJERPX0RPV05MT0FEIiBdIDsgdGhlbgoJCXJlY29yZCAi
SW5zdGFsbGluZyBkaXN0cmlidXRpb24gZmlsZXMgb24gYGRhdGVgIgoJCXJlY29yZCAiVGhpcyB3
aWxsIHRha2UgYSB3aGlsZS4uLiIKCQlyZWNvcmQgIkNvbW1hbmQ6IHRhciB4dnpwZiAke1RBUl9E
SVJ9LyR7QlVJTER9LnRhci5neiAtQyAkUk9PVCAtVCAkdW50YXJ0aGVzZSIKCQl0YXIgeHZ6cGYg
JHtUQVJfRElSfS8ke0JVSUxEfS50YXIuZ3ogLUMgJFJPT1QgLVQgJHVudGFydGhlc2UgfAoJCQkJ
dGVlICAtYSAkTE9HIHx8IHsKCQkJIyB0YXIgZmFpbGVkCgkJCXJlY29yZCAidGFyIGNvbW1hbmQg
aW4gX3JlaW5zdGFsbCBmYWlsZWQ6ICQ/IgoJCQlyZXR1cm4gMQoJCX0KCgkJIyBwdXQgYSBibGFu
ayBsaW5lIGluIGxvZyBmaWxlCgkJcmVjb3JkCglmaQoKCSMgQ2FsbCBmdW5jdGlvbiB0byB1cGRh
dGVkIHRoZSBkZXZpY2VzIGlmIG5lZWRlZAoJaWYgWyAiJE5FRURfTkVXX0RFVlMiIF0gOyB0aGVu
CgkJdXBkYXRlX2RldmljZXMgfHwgcmV0dXJuIDEKCWZpCgoJcmVjb3JkICJGaWxzeXN0ZW0gdXBk
YXRlZCBvbiBgZGF0ZWAiCgoJcmV0dXJuIDAKfQoKbGVzc19tZW1fZG93bmxvYWQoKQp7CgltYW5p
ZmVzdD0iLiR7VEFSQk9NfSAuJHtTUkNCT019IC4ke0RFU0NSfSAuL3ZlcnNpb24iCgltdHJlZT0i
Li9ldGMvbXRyZWUvNC40QlNELmRpc3QiCgl1bW91bnQgLWYgJFRBUl9ESVIKCSMgY3JlYXRlIG1l
bW9yeSBwYXJ0aXRpb24gdG8gc3RvcmUgZGlzdHJpYnV0aW9uCgkvc2Jpbi9tb3VudF9tZnMgLW0g
MCAtcyAxMjAwMDAgc3dhcCAkVEFSX0RJUiB8fCB7CgkJZXJyPSQ/CgkJcmVjb3JkICJVbmFibGUg
dG8gY3JlYXRlIFJBTSBmaWxlc3lzdGVtOiAkZXJyIgoJCXJldHVybiAkZXJyCgl9Cglpbml0X2xv
ZwoJcmVjb3JkICJEb3dubG9hZGluZyBleHRlcm5hbCBzeXN0ZW0gc29mdHdhcmUgZGlzdHJpYnV0
aW9uLiIKCSMgRG93bmxvYWQgdGhlIGRpc3RyaWJ1dGlvbiB0YXIgZmlsZSBvbmx5IGV4dHJhY3Qg
dGhlIG1hbmlmZXN0LgoJY2QgJFRBUl9ESVIKCS91c3IvYmluL2Z0cCAgLW0gJFVSTCB8fCB7CgkJ
ZXJyPSQ/CgkJcmVjb3JkICJGdHAgcmV0cmlldmFsIG9mIHVwZ3JhZGUgYXJjaGl2ZSBmaWxlIGZh
aWxlZDogJGVyciIKCQlyZXR1cm4gJGVycgoJfQoJcmVjb3JkICJFeHRyYWN0aW5nIG1hbmlmZXN0
IGZpbGVzIGZyb20gYXJjaGl2ZSBmaWxlIgoJdGFyIHh2enBmICR7QlVJTER9LnRhci5neiAkbWFu
aWZlc3QgJG10cmVlIDI+JjEgPj4gJERCR0xPRyB8fCB7CgkJZXJyPSQ/CgkJcmVjb3JkICJFeHRy
YWN0aW9uIG9mIG1hbmlmZXN0IGZpbGVzIGZyb20gYXJjaGl2ZSBmaWxlIGZhaWxlZDogJGVyciIK
CX0KCXJldHVybiAkZXJyCn0KCnVwZGF0ZV9tYW5pZmVzdCgpCnsKCXJlY29yZCAiVXBkYXRpbmcg
dGhlIG1hbmlmZXN0IGZpbGUiCgkjIHVwZGF0ZSB0aGUgY3VycmVudC5ib20gbGluayBhbmQgaW5z
YWxsIHRoaXMgZGlzdHJpYnV0aW9uJ3MgbWFuaWZlc3QgZmlsZQoJKGNkICRUQVJfRElSICYmIHRh
ciBjZiAtICIuJHtUQVJCT019IiAiLiR7U1JDQk9NfSIpIHwgdGFyIHh2cGYgLQp9Cgp2ZXJpZnlf
bWFuaWZlc3QoKQp7CgkjCgkjIFZlcmlmeSBtYW5pZmVzdCBmaWxlIGluc3RhbGxlZCBvbiBmbGFz
aCBpcyBjdXJyZW50LgoJIyBDYWxsIHVwZGF0ZV9tYW5pZmVzdCBpZiBpdCBkb2Vzbid0IGV4aXN0
IG9yIGlzIG91dCBvZiBkYXRlCgkjCgkjIEluIHRoZSBkaXN0cmlidXRpb246IGN1cnJlbnQuYm9t
IC0tPiByZWxlYXNlLW5hbWUuYm9tCgkjCgoJY2RfZmxhc2gKCgkjIFdhbnQgY3VycmVudC5ib20g
c2hvdWxkIGJlIGEgc3ltIGxpbmsgc28gcmVtb3ZlIGlmIGl0IGlzbid0LgoJWyAtciAuJHtTUkNC
T019IC1hIC1oIC4ke1NSQ0JPTX0gXSB8fCAgcm0gLWYgLiR7U1JDQk9NfQoKCSMgQ2hlY2sgdGhl
IGRvd25sb2FkIGFyZWEgZm9yIG1hbmlmZXN0IGZpbGUgYnkgbmFtZSBpZiBrbm93biBhbmQgZ2V0
IGl0cwoJIyBjaGVjayBzdW0uCglpZiBbICIkVEFSQk9NIiBdIDsgdGhlbgoJCSMgY2hlY2sgc3Vt
IG9mIHRoZSBkaXN0cmlidXRpb24gbWFuaWZlc3QgZmlsZQoJCVsgLWYgJHtUQVJfRElSfSR7VEFS
Qk9NfSBdICYmICB0ZGJzdW09ImBja3N1bSAke1RBUl9ESVJ9JHtUQVJCT019YCIKCQkjIFNlZSBp
ZiBhIGZpbGUgb2YgdGhlIHNhbWUgbmFtZSBleGlzdHMgb24gdGhlIGZsYXNoIGFuZCBnZXQgaXRz
IHN1bQoJCVsgLWYgLiR7VEFSQk9NfSBdICYmIGNmYnN1bT0iYGNrc3VtIC4ke1RBUkJPTX1gIgoJ
ZWxpZiBbIC1yICR7VEFSX0RJUn0ke1NSQ0JPTX0gXSA7IHRoZW4KCQkjIGRvbid0IGtub3cgdGhl
IG5hbWUgb2YgdGhlIG1hbmlmZXN0IGZpbGUgc28gdXNlIGl0cyBsaW5rIHRvIGdldCBzdW0KCQl0
ZGJzdW09ImBja3N1bSAke1RBUl9ESVJ9JHtTUkNCT019YCIKCWVsc2UKCQkjIFRoZSBkb3dubG9h
ZCBzaG91bGQgaGF2ZSB1bnBhY2tlZCBhIG1hbmlmZXN0IGZpbGUsIHBlcmhhcHMgdGhlIHVzZXIK
CQkjIGp1c3Qgd2FudHMgdG8gdmVyaWZ5IGFuIGV4aXRpbmcgaW5zdGFsbGF0aW9uIHdpdGggYW4g
YWxyZWFkeQoJCSMgaW5zdGFsbGVkIG1hbmlmZXN0IGZpbGUgYW5kIGRpZG4ndCBkbyBhIGRvd25s
b2FkLgoJCXRkYnN1bT0iIgoJZmkKCgkjIE9ubHkgdXBkYXRlIGN1cnJlbnQgbWFuaWZlc3QgZmls
ZSBpZiBpdCBkb2Vzbid0IG1hdGNoIGRpc3RydWJ1dGlvbiBvcgoJIyBkb2Vzbid0IGV4aXN0LgoJ
aWYgWyAtaCAuJHtTUkNCT019IF0gOyB0aGVuCgkJIyBjaGVjayBzdW0gb2YgdGhlIGZpbGUgY3Vy
cmVudC5ib20gbGlua3MgdG8KCQljbGJzdW09ImBja3N1bSAuJHtTUkNCT019YCIKCQkjIGNoZWNr
IGlmIGN1cnJlbnQgZG9lcyBub3QgbWF0Y2ggZGlzdHJpYnV0aW9uIGFuZCByZW5hbWUgaXQKCQkj
IGFuZCB1cGRhdGUKCQlpZiBbICIkdGRic3VtIiAtYSAiJHRkYnN1bSIgIT0gIiRjbGJzdW0iIF0g
OyB0aGVuCgkJCW12IC4ke1NSQ0JPTX0gLiR7UFJFVkJPTX0KCQkJdXBkYXRlX21hbmlmZXN0IHx8
IHJldHVybiAkPwoJCWZpCgkjIElmIG5hbWVkIG1hbmlmZXN0IGZpbGUgZGlmZmVycyB3aXRoIGRp
c3RyaWJ1dGlvbiB1cGRhdGUgaXQKCWVsaWYgWyAiJHRkYnN1bSIgLWEgIiRjZmJzdW0iIF0gOyB0
aGVuCgkJaWYgWyAiJHRkYnN1bSIJIT0gIiRjZmJzdW0iIF0gIDsgdGhlbgoJCQl1cGRhdGVfbWFu
aWZlc3QgfHwgcmV0dXJuICQ/CgkJZmkKCWVsc2UKCQl1cGRhdGVfbWFuaWZlc3QgfHwgcmV0dXJu
ICQ/CglmaQoKfQoKcmVtb3ZlX29sZF9tYW5pZmVzdCgpCnsKCWNkX2ZsYXNoCgljZCB1c3IvbG9j
YWwvYWdpbGUvY29uZgoJYWxsX2JvbXM9ImBscyAtMSAqLmJvbWAiCglpbnVzZT0iYGxzIC1sIGN1
cnJlbnQuYm9tIHwgYXdrICd7cHJpbnQgJE5GfSdgIgoJb25lYmFjaz0iYGxzIC1sIHByZXZpb3Vz
LmJvbSB8IGF3ayAne3ByaW50ICRORn0nYCIKCWZvciBmIGluICRhbGxfYm9tcyA7IGRvCgkJaWYg
WyAiJGludXNlIiAtYSAkZiA9ICIkaW51c2UiIF0gOyB0aGVuCgkJCWNvbnRpbnVlCgkJZWxpZiBb
ICIkb25lYmFjayIgLWEgJGYgPSAiJG9uZWJhY2siIF0gOyB0aGVuCgkJCWNvbnRpbnVlCgkJZWxp
ZiBbICRmID0gY3VycmVudC5ib20gXSA7IHRoZW4KCQkJY29udGludWUKCQllbGlmIFsgJGYgPSBw
cmV2aW91cy5ib20gXSA7IHRoZW4KCQkJY29udGludWUKCQllbHNlCgkJCXJtIC1mICRmCgkJZmkK
CWRvbmUKCWNkIC8KCglyZXR1cm4gMAp9Cgp2ZXJpZnlfc3VtcygpCnsKCWNkX2ZsYXNoCgoJRE9f
T1ZFUlM9IiIKCSMgUHJlZmVyIHRoZSBtYW5pZmVzdCBmaWxlIGluIHRoZSBkaXN0cmlidXRpb24g
dmVyc3VzIHRoZSBvbmUgb24gZmxhc2guCglpZiBbICIkVEFSQk9NIiAtYSAtZiAke1RBUl9ESVJ9
JHtUQVJCT019IF0gOyB0aGVuCgkJU1JDQk9NPSR7VEFSX0RJUn0ke1RBUkJPTX0KCWVsaWYgWyAt
aCAke1RBUl9ESVJ9JHtPTlNUT1JfQ09ORn0vY3VycmVudC5ib20gXSA7IHRoZW4KCQlTUkNCT009
JHtUQVJfRElSfSR7T05TVE9SX0NPTkZ9L2N1cnJlbnQuYm9tCglmaQoKCXJlY29yZCAiVmVyaWZ5
aW5nIGZpbGVzeXN0ZW0gaW50ZWdyaXR5IgoJd2hpbGUgcmVhZCBmaWxlc3VtIDsgZG8KCQkjIEdl
dCBmaWxlbmFtZSBhbmQgc3RyaXAgbGVhZGluZyAnLi8nCgkJZm5hbWU9YGVjaG8gIiRmaWxlc3Vt
IiB8IGF3ayAne3ByaW50ICRORn0nIHwgc2VkICdzJV5bLl0vJSUnYAoJCSMgSWRlbnRpZnkgcHJv
bSBpbWFnZXMgbWF5IG5lZWQgZnVydGhlciBwcm9jZXNzaW5nLi4uCgkJaXNwcm9tPSJgZmdyZXAg
cHJvbSAke1RBUl9ESVJ9JHtERVNDUn0gfCBmZ3JlcCAkZm5hbWVgIgoJCSMgSWdub3JlIGNvbmZp
Z3VyYXRpb24gZmlsZXMgbGlzdGVkIGluIHRoZSBERVNDUiBmaWxlLgoJCXRvc2tpcD0iYGVncmVw
ICdjb25maWd8c2VydmljZScgJHtUQVJfRElSfSR7REVTQ1J9IHwgZmdyZXAgJGZuYW1lYCIKCQlp
ZiBbICIkdG9za2lwIiBdIDsgdGhlbgoJCQkjIFdlbGwgaWYgdGhleSBhcmUgbWlzc2luZyBsZXQn
cyB1cGdyYWRlIHRoZW0uCgkJCWlmIFsgISAtciAiJGZuYW1lIiBdIDsgdGhlbgoJCQkJcmVjb3Jk
ICJNaXNzaW5nIGNvbmZpZ3VyYXRpb24gZmlsZTogJGZuYW1lIgoJCQkJRE9fT1ZFUlM9IiRET19P
VkVSUyAkZm5hbWUiCgkJCWZpCgkJCWNvbnRpbnVlCgkJZmkKCQkjIFZlcmlmeSB0aGUgcmVzdCBv
ZiB0aGUgZGlzdHJpYnV0aW9uCgkJaWYgWyAtZSAiLi8ke2ZuYW1lfSIgXSA7IHRoZW4KCQkJcmVj
b3JkICJDaGVja2luZzogJGZuYW1lIgoJCQlja3N1bT0iYGNrc3VtIC4vJHtmbmFtZX1gIgoJCWVs
c2UKCQkJcmVjb3JkICIkZm5hbWUgaXMgbm90IGluc3RhbGxlZCIKCQkJRE9fT1ZFUlM9IiRET19P
VkVSUyAkZm5hbWUiCgkJCSMgZGV2L01BS0VERVYgbWlzc2luZyBuZWVkIHRvIHVwZGF0ZSBkZXZp
Y2VzCgkJCWlmIFsgIiRmbmFtZSIgPSAiZGV2L01BS0VERVYiIF0gOyB0aGVuCgkJCQlORUVEX05F
V19ERVZTPXllcwoJCQkJZXhwb3J0IE5FRURfTkVXX0RFVlMKCQkJZmkKCQlmaQoJCWlmIFsgIiRj
a3N1bSIgIT0gIiRmaWxlc3VtIiBdIDsgdGhlbgoJCQkjIElmIGRldi9NQUtFREVWIGNoYW5nZWQg
dGhlbiBmbGFnIGNoYW5nZSBmb3IgZnV0dXJlIHByb2Nlc3NpbmcKCQkJaWYgWyAiJGZuYW1lIiA9
ICJkZXYvTUFLRURFViIgXSA7IHRoZW4KCQkJCU5FRURfTkVXX0RFVlM9eWVzCgkJCQlleHBvcnQg
TkVFRF9ORVdfREVWUwoJCQlmaQoKCQkJIyBDaGVjayB0byBzZWUgaWYgc3VtIG1hdGNoIGxhc3Qg
dmVyc2lvbiBpbnN0YWxsZWQuCgkJCSMgVGhpcyBhbiBleHRyYSBkaWFnbm9zdGljIGZvciBkZXZl
bG9wbWVudCdzIHVzZS4KCQkJIyBJbiBhIGJhY2stdG8tYmFjayB2ZXJpZnkgaXQgd2lsbCBmbGFn
IGZpbGVzIG1pc3NlZCBieSB1cGdyYWRlCgkJCVsgLXIgLi8ke1BSRVZCT019IF0gJiYgIHByZXZz
dW09ImBmZ3JlcCAiJGNrc3VtIiAuLyR7UFJFVkJPTX1gIgoJCQlpZiBbICIkcHJldnN1bSIgLWEg
IiRwcmV2c3VtIiA9ICIkY2tzdW0iIF0gOyB0aGVuCgkJCQlyZWNvcmQgIiRmbmFtZSBtYXRjaGVz
IHByZXZpb3VzIGluc3RhbGxlZCB2ZXJzaW9uIgoJCQkJcmVjb3JkICIkZm5hbWUgbmVlZHMgdXBn
cmFkZSIKCQkJCURPX09WRVJTPSIkRE9fT1ZFUlMgJGZuYW1lIgoJCQllbHNlCgkJCQkjIFBvc3Np
YmxlIGZpbGUgY29ycnVwdGlvbiBvciBvbGQgdmVyc2lvbiBkZXRlY3RlZAoJCQkJcmVjb3JkICIk
Zm5hbWUgbmVlZHMgdXBncmFkZSIKCQkJCSMgQ2FzdWFsIHVzZXJzIGRvbid0IG5lZWQgdG8gc2Vl
IHRoZSBmb2xsb3dpbmcuCgkJCQllY2hvICIkZm5hbWUgdmVyaWZpY2F0aW9uIGZhaWxlZCIgPj4g
JERCR0xPRwoJCQkJZWNobyAiU3JjOiAkZmlsZXN1bSIgID4+ICREQkdMT0cKCQkJCWVjaG8gIlRn
dDogJGNrc3VtIiAgPj4gJERCR0xPRwoJCQkJcmVjb3JkCgkJCQlET19PVkVSUz0iJERPX09WRVJT
ICRmbmFtZSIKCQkJZmkKCQlmaQoJZG9uZSA8ICR7U1JDQk9NfQoJZXhwb3J0IERPX09WRVJTCgoJ
cmV0dXJuIDAKfQoKcHJpbnRfZG9fb3ZlcnMoKQp7CgkjIFByaW50IHRoZSBsaXN0IG9mIGZpbGVz
IHRoYXQgY2hhbmdlZC4KCXJlY29yZAoJcmVjb3JkICJUaGUgZm9sbG93aW5nIGZpbGVzIG5lZWQg
dXBncmFkaW5nOiIKCXJlY29yZAoJZm9yIGYgaW4gJERPX09WRVJTIDsgZG8KCQlyZWNvcmQgIiRm
IgoJZG9uZQoJcmVjb3JkCgoJcmV0dXJuIDAKfQoKcmVwb3J0X3ZlcmlmeV9yZXN1bHRzKCkKewoJ
IyBSZXBvcnQgcmVzdWx0cyBvZiB2ZXJpZmljYXRpb24gc3RlcAoJaWYgWyAiYGVjaG8gJERPX09W
RVJTIHwgaGVhZCAtMWAiIF0gOyB0aGVuCgkJcHJpbnRfZG9fb3ZlcnMKCWVsc2UKCQlyZWNvcmQK
CQlyZWNvcmQgImZpbGVzIGFyZSBzYW1lIG9uIHNvdXJjZSBhbmQgdGFyZ2V0IGxvY2F0aW9uOiIK
CQlyZWNvcmQKCWZpCgoJcmV0dXJuIDAKfQoKc2h1dGRvd25fcG0oKQp7CgkjIEZvciBwcmltYXJ5
IGZsYXNoIHVwZ3JhZGVzIGFsbCBTU0MgZGFlbW9ucyBtdXN0IGJlIHN0b3BwZWQuCgkke09OU1RP
Ul9CSU59L2VtcnNjcm9uIC1yCglyZWNvcmQgIlNodXR0aW5nIGRvd24gUE0uLi4iCglwbV9waWQ9
YGNhdCAvdmFyL3J1bi9wbS5waWRgCglraWxsICRwbV9waWQKCXdhaXQgJHBtX3BpZCAyPi9kZXYv
bnVsbAp9CgojIGNvcHkgdGhlIHN5c3RlbSBjb25maWcgZmlsZXMuICBBIGR1cGUgb2YgdGhlIEMg
Y29kZSBpbiBjbWRfZmxhc2gsCiMgdW50aWwgdGhhdCBjb2RlIGNhbiBiZSBtb2RpZmllZCB0byBq
dXN0IHVzZSB0aGlzIHNjcmlwdCBpbnN0ZWFkLCBMR0kuCmNvcHlfY29uZmlnX2ZpbGVzKCkKewoJ
cmVjb3JkCglyZWNvcmQgIlVwZGF0aW5nIGNvbmZpZ3VyYXRpb24gZmlsZXMsIFN0YXJ0IHRpbWU6
IGBkYXRlYCIKCWZvciBmIGluICRTWVNfQ05GX0ZJTEVTIDsgZG8KCQllY2hvICRmID4+IC90bXAv
cmFtZGlzay9jZmxpc3QKCWRvbmUKCXRhciBjZiAtIC1GIC90bXAvcmFtZGlzay9jZmxpc3QgfCAo
Y2QgJE1OVDEgJiYgdGFyIHh2ZiAtKSAgfAoJCXRlZSAtYSAkTE9HIHx8IHsKCQkJcmVjb3JkICJG
YWlsdXJlOiBjb25maWcgZmlsZXMgbm90IGZ1bGx5IHVwZGF0ZWQuIgoJCQlyZXR1cm4gMQoJCX0K
CglybSAtZiAvdG1wL3JhbWRpc2svY2ZsaXN0CglyZWNvcmQgIlVwZGF0aW5nIGNvbmZpZ3VyYXRp
b24gZmlsZXMsICBFbmQgdGltZTogYGRhdGVgIgp9CgpmaW5pc2hfc3RhbmRhbG9uZV9pbnN0YWxs
KCkKewoJIwoJIyBUaGVzZSBzdGVwcyBhcmUgbm9ybWFsbHkgZG9uZSBieSBjb21tYW5kIHVwZ3Jh
ZGUuIEluIGNhc2UgdGhpcyBzY3JpcHQKCSMgaXMgZXZlciBuZWVkZWQgdG8gcGVyZm9ybSBhbiBp
bnN0YWxsIGluIHBsYWNlIG9mIGNvbW1hbmQgdXBncmFkZSB0aGlzCgkjIGZ1bmN0aW9uIHBlcmZv
cm1zIHRoZSBmaW5hbCBzdGVwcyBvZiB0aGUgdXBncmFkZSBwcm9jZXNzLgoJIwoKCSMgQ29weSBz
eXN0ZW0gY29uZmlndXJhdGlvbiBkYXRhIHRvIHNlY29uZGFyeSBmbGFzaAoJaWYgWyAiJERPX1JF
SU5TVEFMTCIgLWEgICIkRE9fU0VDT05EQVJZIiBdIDsgdGhlbgoJCWNvcHlfY29uZmlnX2ZpbGVz
IHx8IHsKCQkJZXJyb3JfY2xlYW51cAoJCQlleGl0IDEKCQl9CglmaQoKCWlmIFsgIiRET19TRUNP
TkRBUlkiIF0gOyB0aGVuCgkJcmVjb3JkICJVcGdyYWRlIG9mIHRoZSBzdGFuZGJ5IGZsYXNoIGNv
bXBsZXRlZCIKCWVsc2UKCQlyZWNvcmQgIlVwZ3JhZGUgb2YgdGhlIHByaW1hcnkgZmxhc2ggY29t
cGxldGVkIgoJZmkKCglyZWNvcmQgIlN5c3RlbSBVcGdyYWRlIGNvbXBsZXRlZCBhdDogYGRhdGVg
IgoKCSMgTW92ZSB0aGUgbG9nIG9mIHRoaXMgdHJhbnNhY3Rpb24gdG8gZmxhc2gKCWlmIFsgIiRE
T19SRUlOU1RBTEwiIF0gOyB0aGVuCgkJIyBOZWVkIHRvIHJlbW91bnQgQ0YgZGlycwoJCWlmIFsg
IiRET19TRUNPTkRBUlkiIF0gOyB0aGVuCgkJCW1vdW50ICRzZWNfdmFyICRDRl9ESVIvdmFyCgkJ
CW12ICRMT0cgJHtDRl9ESVJ9JHtTWVNMT0d9CgkJCXVtb3VudCAke0NGX0RJUn0vdmFyCgkJZWxz
ZQoJCQltdiAkTE9HICRTWVNMT0cKCQlmaQoJZmkKCgl1bW91bnRfc2Vjb25kYXJ5CgoJaWYgWyAi
JERPX1BSSU1BUlkiIF0gOyB0aGVuCgkJcmVjb3JkICJVbm1vdW50aW5nIGZpbGVzeXN0ZW1zIGFu
ZCBSZWJvb3RpbmcgdGhlIHN5c3RlbSIKCQkjIHBtIG5lZWRzIHRvIGJlIHVwIGJlZm9yZSBzeXN0
ZW0gcmVib290IHdpbGwgd29yawoJCSR7T05TVE9SX0JJTn0vcG0KCQlzbGVlcCA1CgkJcmVjb3Jk
ICJTYWZlIHNodXRvd24gaW4gcHJvZ3Jlc3MiCgkJbmZ4c2ggLWUgICJzeXN0ZW0gcmVib290IC15
IgoJZmkKfQoKIwojIG1haW4gYmVnaW5zIGhlcmUKIwoKdHJhcCAncmVjb3JkICJJbnRlcnJ1cHQg
ZGV0ZWN0ZWQgY2xlYW5pbmcgdXAiOyBlcnJvcl9jbGVhbnVwOyBleGl0JyAxIDIgMTUKCmlmIFsg
LXogIiRSVU5fU1RBTkRBTE9ORSIgXSA7IHRoZW4KCUxPRz0kU1lTTE9HCmZpCgppZiBbICEgLWQg
JE1OVDEgXSA7IHRoZW4KCW1vdW50IC11IC13IC8gJiYKCW1rZGlyIC1wICRNTlQxICYmCgltb3Vu
dCAtdSAtciAvCmZpCgppZiBbICIkRE9fRE9XTkxPQUQiIF0gOyB0aGVuCglsZXNzX21lbV9kb3du
bG9hZCB8fCB7CgkJdW1vdW50X3BhdGhzICRUQVJfRElSCgkJcmVjb3JkICJVcGdyYWRlIGZhaWxl
ZDogdGVybWluYXRpbmcuIgoJCWV4aXQgMQoJfQpmaQoKaWYgWyAiJERPX1NFQ09OREFSWSIgXSA7
IHRoZW4KCWlkX3NlY29uZGFyeQoJdW1vdW50X3NlY29uZGFyeQoJY2hlY2tfc2Vjb25kYXJ5IHx8
IHsKCQkjIGZzY2sgcHVrZWQgb24gdXM6IG5vdCBnb29kCgkJcmVjb3JkICJDb3VsZCBub3QgZml4
IGEgZmlsZXN5c3RlbSwgdXBncmFkZSBjYW5jZWxsZWQuIgoJCXVtb3VudF9wYXRocyAkVEFSX0RJ
UgoJCWV4aXQgMQoJfQoJbW91bnRfc2Vjb25kYXJ5IHx8IHsKCQlyZWNvcmQgIlByb2JsZW0gZW5j
b3VudGVyZWQgbW91bnRpbmcgc2Vjb25kYXJ5IENGLCB0ZXJtaW5hdGluZy4iCgkJZXhpdCAxCgl9
CmZpCgpjZF9mbGFzaAoKI3ByZXNlcnZlIHByZXZpb3VzIGluc3RhbGwncyBsb2cgKGp1c3QgbGFz
dCB2ZXJzaW9uIHdpbGwgYmUgc2F2ZWQpClsgIiRSVU5fU1RBTkRBTE9ORSIgLWEgLXIgJFNZU0xP
RyBdICYmIG12ICRTWVNMT0cgJHtTWVNMT0d9LnByZXZpb3VzCgojIFZlcmlmeSB0aGUgbWFuaWZl
c3QgZmlsZXMuCnZlcmlmeV9tYW5pZmVzdCB8fCB7CglyZWNvcmQgIkEgcHJvYmxlbSB2ZXJpZnlp
bmcgb3IgdXBkYXRpbmcgdGhlIG1hbmlmZXN0IG1hbmlmZXN0cyB3ZSBhYm9ydC4iCgllcnJvcl9j
bGVhbnVwCglleGl0IDEKfQoKIyBDaGVjayBmaWxlcyBmb3IgaW50ZWdyaXR5IGFuZCBuZWVkIHRv
IHVwZ3JhZGUuCnZlcmlmeV9zdW1zCnJlcG9ydF92ZXJpZnlfcmVzdWx0cwoKIyByZXR1cm4gdG8g
cm9vdCBhZnRlciB2ZXJpZnlfc3VtcwpjZCAvCgojIEFuZCBvcHRpb25hbGx5IGluc3RhbGwgaWYg
bmVlZGVkLiBEb24ndCBib3RoZXIgaW5zdGFsbGluZyBpZiBubyBmaWxlcyBjaGFuZ2VkLgppZiBb
ICJgZWNobyAkRE9fT1ZFUlMgfCBoZWFkIC0xYCIgLWEgICIkRE9fUkVJTlNUQUxMIiBdIDsgdGhl
bgoJaWYgWyAiJERPX1BSSU1BUlkiIC1hICIkUlVOX1NUQU5EQUxPTkUiIF0gOyB0aGVuCgkJc2h1
dGRvd25fcG0KCWZpCglyZWluc3RhbGwgfHwgewoJCXJlY29yZCAiU2VyaW91cyBwcm9ibGVtIGVu
Y291bnRlcmVkLiAgQWJvcnRpbmcgdXBncmFkZS4iCgkJZXJyb3JfY2xlYW51cAoJCWV4aXQgMQoJ
fQoJc3luYwoJIyB2ZXJpZnkgdGhlIGluc3RhbGxhdGlvbiB3ZW50IG9rYXkuCgl2ZXJpZnlfc3Vt
cwoJcmVwb3J0X3ZlcmlmeV9yZXN1bHRzCgljZCAvCmZpCgpyZW1vdmVfb2xkX21hbmlmZXN0Cgpp
ZiBbICIkUlVOX1NUQU5EQUxPTkUiIF0gOyB0aGVuCglmaW5pc2hfc3RhbmRhbG9uZV9pbnN0YWxs
CmZpCgojIERvbmUgd2l0aCBNRlMgc28gdW5tb3VudAppZiBbICIkRE9fRE9XTkxPQUQiIF0gOyB0
aGVuCgl1bW91bnQgJFRBUl9ESVIKZmkK

--MP_GK=R2L9GUzCZe.WLzHjl4pB--
