AF:
NF:0
PS:10
SRH:1
SFN:
DSR:
MID:<20070123133829.3e37b64f@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
RMID:#imap/andys@onstor.net@onstor-exch02.onstor.net/INBOX	0	BB375AF679D4A34E9CA8DFA650E2B04E02215601@onstor-exch02.onstor.net
X-Sylpheed-End-Special-Headers: 1
Date: Tue, 23 Jan 2007 13:39:27 -0800
From: Andrew Sharp <andy.sharp@onstor.com>
To: "Larry Scheer" <larry.scheer@onstor.com>
Subject: Re: give verify_install.sh a try
Message-ID: <20070123133927.0147e9cb@ripper.onstor.net>
In-Reply-To: <BB375AF679D4A34E9CA8DFA650E2B04E02215601@onstor-exch02.onstor.net>
References: <20070123100011.7522f220@ripper.onstor.net>
	<BB375AF679D4A34E9CA8DFA650E2B04E02215601@onstor-exch02.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_A0.t_3eedTIh/A7Sfg/PW5R"

--MP_A0.t_3eedTIh/A7Sfg/PW5R
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

My bad.  Some bugs needed to be cleaned up.  And some error handling
added.  Doh.

Try this one?

Cheers,

a


 On Tue, 23 Jan 2007 11:55:09 -0800 "Larry Scheer"
<larry.scheer@onstor.com> wrote:

> Gave your updates a try. I saw these problems with the mount:
> 
> Extracting manifest files from archive file
> mount_ffs: /dev/wd1a on /mnt1: Device busy
> umount: /mnt1: Device busy
> Unmounting secondary disk...
> umount: /usr/local/agile/conf: Device busy
> Checking file systems...
> Mounting secondary disk...
> mount_ffs: /dev/wd1a on /mnt1: Device busy
> Unmounting secondary disk...
> umount: /usr/local/agile/conf: Device busy
> umount: /mnt1: Device busy
> umount: /mnt1/usr: Device busy
> umount: /mnt1/usr/local/agile: Device busy

--MP_A0.t_3eedTIh/A7Sfg/PW5R
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
OzsKCWVzYWMKCgkjIG1vdW50IHRoZSBzZWNvbmRhcnkgcm9vdAoJbW91bnQgJHtzX2Jhc2V9YSAk
TU5UMSB8fCB7CgkJcmVjb3JkICJpZF9zZWNvbmRhcnk6IHByb2JsZW0gbW91bnRpbmcgc2Vjb25k
YXJ5IGZsYXNoIHJvb3QgZmlsZSBzeXN0ZW0gb24gZGV2aWNlICR7c19iYXNlfWEiCgkJcmV0dXJu
IDEKCX0KCglpZiBbICEgLXIgJE1OVDEvZXRjL2ZzdGFiIF0gOyB0aGVuCgkJcmVjb3JkICJTZWNv
bmRhcnkgZmxhc2ggZG9lcyBub3QgaGF2ZSBhIHJlYWRhYmxlIC9ldGMvZnN0YWIgZmlsZSEiCgkJ
cmVjb3JkICJZb3UgbXVzdCBmaXJzdCBpbml0aWFsaXplIHlvdXIgc2Vjb25kYXJ5IGZsYXNoIGJ5
IGV4ZWN1dGluZyIKCQlyZWNvcmQgInRoZSBuZnhzaCBjb21tYW5kICdzeXN0ZW0gY29weSBhbGwg
LWknIgoJCXJldHVybiAxCglmaQoJd2hpbGUgcmVhZCBzZGV2IHNwYXRoIHN0eXBlIHJlc3QgOyBk
bwoJCWlmIFsgIiRzdHlwZSIgPSAic3ciIC1vICIkc3R5cGUiID0gInN3YXAiIF0gOyB0aGVuCgkJ
CWNvbnRpbnVlCgkJZmkKCQlpZiBbICIkc3BhdGgiID0gIi8iIF0gOyB0aGVuCgkJCWlmIFsgIiRz
ZGV2IiAhPSAiJHtzX2Jhc2V9YSIgXSA7IHRoZW4KCQkJCWRldl9pbmNvcnJlY3Q9MQoJCQlmaQoJ
CQkjIHN0YXJ0IHRoZSB0d28gZm9yd2FyZCBsaXN0cyBhbmQgdGhlIGJhY2t3YXJkIGxpc3QKCQkJ
U0VDX0RFVl9MSVNUPSIke3NfYmFzZX1hIgoJCQlTRUNfTU5UX0xJU1Q9Ii8iCgkJCVNFQ19NTlRf
QkxJU1Q9Ii8iCgkJCWNvbnRpbnVlCgkJZmkKCQlpZiBbICIkZGV2X2luY29ycmVjdCIgXSA7IHRo
ZW4KCQkJc2Rldj1gZWNobyAkc2RldiB8IHNlZCAicysvZGV2L3dkLiskc19iYXNlImAKCQlmaQoJ
CSMgc3RvcmUgdGhlbSBpbiBvcmRlcgoJCVNFQ19ERVZfTElTVD0iJFNFQ19ERVZfTElTVCAkc2Rl
diIKCQlTRUNfTU5UX0xJU1Q9IiRTRUNfTU5UX0xJU1QgJHNwYXRoIgoJCVNFQ19NTlRfQkxJU1Q9
IiRzcGF0aCAkU0VDX01OVF9CTElTVCIKCWRvbmUgPCAkTU5UMS9ldGMvZnN0YWIKCglleHBvcnQg
U0VDX0RFVl9MSVNUIFNFQ19NTlRfTElTVCBTRUNfTU5UX0JMSVNUCgoJIyB1bm1vdW50IHNlY29u
ZGFyeSByb290Cgl1bW91bnQgJE1OVDEKfQoKIyB0YWtlcyBhIGxpc3Qgb2YgcGF0aHMgYXMgYXJn
dW1lbnRzIGFuZCB1bm1vdW50cyB0aGVtIGlmIHRoZXkgYXJlIG1vdW50ZWQKdW1vdW50X3BhdGhz
KCkKewoJIyB1bW91bnQgb25seSBwYXRocyB0aGF0IGFyZSBtb3VudGVkCgltb3VudHM9IiRAIgoJ
Zm9yIG0gaW4gICRtb3VudHMgOyBkbwoJCW1vdW50X3B0PWBtb3VudCB8IGZncmVwICRtIHwgYXdr
ICd7cHJpbnQgJDN9J2AKCQlpZiBbICIkbW91bnRfcHQiIF0gOyB0aGVuCgkJCXVtb3VudCAkbW91
bnRfcHQgMj4mMSA+Pi9kZXYvbnVsbAoJCWZpCglkb25lCn0KCm1vdW50X3NlY29uZGFyeSgpCnsK
CXJlY29yZCAiTW91bnRpbmcgc2Vjb25kYXJ5IGRpc2suLi4iCgoJZGk9MAoJZm9yIGQgaW4gJFNF
Q19ERVZfTElTVCA7IGRvCgkJZGk9YGV4cHIgJGRpICsgMWAKCQlwaT0wCgkJZm9yIHAgaW4gJFNF
Q19NTlRfTElTVCA7IGRvCgkJCXBpPWBleHByICRwaSArIDFgCgkJCWlmIFsgJGRpIC1lcSAkZGkg
XSA7IHRoZW4KCQkJCW1vdW50ICRkICR7TU5UMX0ke3B9IHx8IHsKCQkJCQllcnJvcl9jbGVhbnVw
CgkJCQkJcmV0dXJuIDEKCQkJCX0KCQkJZmkKCQlkb25lCglkb25lCn0KCnVtb3VudF9zZWNvbmRh
cnkoKQp7CglyZWNvcmQgIlVubW91bnRpbmcgc2Vjb25kYXJ5IGRpc2suLi4iCgpzZXQgLXgKCSMg
dW5tb3VudCB0aGUgZGlyZWN0b3JpZXMKCWZvciBwIGluICRTRUNfTU5UX0JMSVNUIDsgZG8KCQl1
bW91bnQgJHtNTlQxfSR7cH0gfHwgcmV0dXJuIDEKCWRvbmUKc2V0ICt4Cn0KCmNoZWNrX3NlY29u
ZGFyeSgpCnsKCXJlY29yZCAiQ2hlY2tpbmcgZmlsZSBzeXN0ZW1zLi4uIgoJZm9yIGQgaW4gJFNF
Q19ERVZfTElTVCA7IGRvCgkJL3NiaW4vZnNjayAteSAkZCAyPiYxID4+L2Rldi9udWxsIHx8IHsK
CQkJZWNobyAiRmFpbHVyZSBjaGVja2luZyBmaWxlc3lzdGVtIG9uIGRldmljZSAkZCIKCQkJcmV0
dXJuIDEKCQl9Cglkb25lCn0KCmNkX2ZsYXNoKCkKewoJaWYgWyAiJERPX1NFQ09OREFSWSIgXSA7
IHRoZW4KCQljZCAkQ0ZfRElSCgllbHNlCgkJY2QgLwoJZmkKCglyZXR1cm4gMAp9Cgppbml0X2xv
ZygpCnsKCSNpbml0aWFsaXplIGRlYnVnIGxvZwoJWyAtciAkREJHTE9HIC1hIC1zICREQkdMT0cg
XSAmJiBybSAkREJHTE9HCgl0b3VjaCAkREJHTE9HCgoJcmV0dXJuIDAKfQoKd2Fybl91c2VyX2Fi
b3V0X2RldmljZXMoKQp7CglyZWNvcmQgIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIgoJcmVjb3JkICJXYXJuaW5nOiAvZGV2L01B
S0VERVYgaGFzIGNoYW5nZWQgaW4gdGhpcyByZWxlYXNlIGRpc3RyaWJ1dGlvbiIKCXJlY29yZCAi
YW5kIHlvdSBjaG9zZSB0byB1cGRhdGUgdGhlIHByaW1hcnkgZmxhc2guIgoJcmVjb3JkICJEZXZp
Y2VzIGNhbm5vdCBiZSB1cGRhdGVkIG9uIGEgcnVubmluZyBzeXN0ZW0uIFJlLWJvb3Qgd2l0aCAi
CglyZWNvcmQgJ3N5c3RlbSByZWJvb3QgLXMgYW5kIHJ1biBzeXN0ZW0gdXBncmFkZSAtcyAtZiB0
byB1cGRhdGUgL2RldicKCXJlY29yZCAiV2FybmluZzogeW91ciBpbnN0YWxsYXRpb24gaXMgaW5j
b21wbGV0ZS4iCglyZWNvcmQgIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqIgoKCXJldHVybiAwCn0KCnVwZGF0ZV9kZXZpY2VzKCkK
ewoJbG9jYWwgZXJyCgoJIyBDYW4ndCB1cGRhdGUgZGV2aWNlcyBvbiBwcmltYXJ5IGZsYXNoCglp
ZiBbICIkRE9fUFJJTUFSWSIgXSA7IHRoZW4KCQl3YXJuX3VzZXJfYWJvdXRfZGV2aWNlcwoJZWxz
ZQoJCXJlY29yZAoJCXJlY29yZCAiVXBkYXRpbmcgZGV2aWNlcyBvbiBgZGF0ZWAiCgkJY2RfZmxh
c2gKCQljZCBkZXYKCQkuL01BS0VERVYgYWxsID4+L2Rldi9udWxsIDI+JjEgJiYgewoJCQlyZWNv
cmQgIk5ldyBkZXZpY2VzIGluc3RhbGxlZCBvbiBgZGF0ZWAiCgkJCXJlY29yZAoJCX0gfHwgewoJ
CQllcnI9JD8KCQkJcmVjb3JkICJOZXcgZGV2aWNlcyBub3QgdXBkYXRlZC4gIE1BS0VERVYgZmFp
bGVkOiAkZXJyIgoJCX0KCQljZCAvCglmaQoKCXJldHVybiAkZXJyCn0KCnJlaW5zdGFsbCgpCnsK
CSMKCSMgVXNlIHRhciB0byBpbnN0YWxsIGZpbGVzIG9uIGZsYXNoCgkjCgkjIFRoZSB0YXIgbWV0
aG9kIHVzZXMgZmFyIGxlc3MgbWVtb3J5IGFuZCBwcmVzZXJ2ZXMgaGFyZCBsaW5rcy4KCSMgSXQg
Y2FuIG9ubHkgYmUgdXNlZCBpbiBjb25qdWN0aW9uIHdpdGggaXQncyBkb3dubG9hZCBvcHRpb24u
CgkjIFRoZSB0YXIgbWV0aG9kIGZpcnN0IGNyZWF0ZXMgYSBmaWxlIGxpc3RpbmcgYWxsIGZpbGVz
IG5lZWRpbmcgdXBncmFkZQoJIyBPbmx5IGZpbGVzIGluIHRoZSBsaXN0d2lsbCBiZSBleHRyYWN0
ZWQgZnJvbSB0aGUgZGlzdHJpYnV0aW9uLgoJIyBUaGlzIGlzIGRvbmUgdG8gbWluaW1pemUgd3Jp
dGVzIHRvIHRoZSBjb21wYWN0IGZsYXNoLgoJIyBUaGUgcmVhc29uIGEgZmlsZSBpcyB1c2VkIHZl
cnN1cyBqdXN0IGdpdmluZyB0YXIgdGhlIGZpbGVuYW1lcyB0bwoJIyBleHRyYWN0IGlzIHRoZSBm
aWxlbmFtZSBsaXN0IGNvdWxkIHBvdGVudGlhbGx5IGJlIGxhcmdlIGVub3VnaCB0bwoJIyBvdmVy
ZmxvdyBidWZmZXJzLgoJIwoKCSMgcmVtb3VudCBwcmltYXJ5IGZsYXNoIHJ3IGlmIG5lZWRlZAoJ
aWYgWyAiJERPX1BSSU1BUlkiIC1hICIkUlVOX1NUQU5EQUxPTkUiIF0gOyB0aGVuCgkJcmVjb3Jk
ICJSZW1vdW50aW5nIHRoZSBsb2NhbCBmaWxlc3lzdGVtIHJlYWQtd3JpdGUuLi4iCgkJcmVtb3Vu
dF9wcmltYXJ5IHx8IHJldHVybgoJZmkKCgkjSW5pdGlhbGl6ZSB0aGUgbGlzdCBmaWxlIGZvciB0
aGUgdGFyIG9wdGlvbgoJdW50YXJ0aGVzZT0ke1RBUl9ESVJ9L2ZpbGVzLXRvX3VwZ3JhZGUubHN0
CglbIC1mICR1bnRhcnRoZXNlIF0gJiYgcm0gLWYgJHVudGFydGhlc2UKCVsgIiRET19ET1dOTE9B
RCIgXSAmJiB0b3VjaCAkdW50YXJ0aGVzZQoKCSNBZGQgdGhlIGZpbGUgdG8gdGhlIGxpc3QKCWZv
ciBmIGluICRET19PVkVSUyA7IGRvCgkJaWYgWyAiJERPX0RPV05MT0FEIiBdIDsgdGhlbgoJCQll
Y2hvICIuLyR7Zn0iID4+ICR1bnRhcnRoZXNlCgkJZmkKCWRvbmUKCgkjIFRoZSB0YXIgbWV0aG9k
CglpZiBbIC1zICR1bnRhcnRoZXNlICAtYSAiJERPX0RPV05MT0FEIiBdIDsgdGhlbgoJCXJlY29y
ZCAiSW5zdGFsbGluZyBkaXN0cmlidXRpb24gZmlsZXMgb24gYGRhdGVgIgoJCXJlY29yZCAiVGhp
cyB3aWxsIHRha2UgYSB3aGlsZS4uLiIKCQlyZWNvcmQgIkNvbW1hbmQ6IHRhciB4dnpwZiAke1RB
Ul9ESVJ9LyR7QlVJTER9LnRhci5neiAtQyAkUk9PVCAtVCAkdW50YXJ0aGVzZSIKCQl0YXIgeHZ6
cGYgJHtUQVJfRElSfS8ke0JVSUxEfS50YXIuZ3ogLUMgJFJPT1QgLVQgJHVudGFydGhlc2UgfAoJ
CQkJdGVlICAtYSAkTE9HIHx8IHsKCQkJIyB0YXIgZmFpbGVkCgkJCXJlY29yZCAidGFyIGNvbW1h
bmQgaW4gX3JlaW5zdGFsbCBmYWlsZWQ6ICQ/IgoJCQlyZXR1cm4gMQoJCX0KCgkJIyBwdXQgYSBi
bGFuayBsaW5lIGluIGxvZyBmaWxlCgkJcmVjb3JkCglmaQoKCSMgQ2FsbCBmdW5jdGlvbiB0byB1
cGRhdGVkIHRoZSBkZXZpY2VzIGlmIG5lZWRlZAoJaWYgWyAiJE5FRURfTkVXX0RFVlMiIF0gOyB0
aGVuCgkJdXBkYXRlX2RldmljZXMgfHwgcmV0dXJuIDEKCWZpCgoJcmVjb3JkICJGaWxzeXN0ZW0g
dXBkYXRlZCBvbiBgZGF0ZWAiCgoJcmV0dXJuIDAKfQoKbGVzc19tZW1fZG93bmxvYWQoKQp7Cglt
YW5pZmVzdD0iLiR7VEFSQk9NfSAuJHtTUkNCT019IC4ke0RFU0NSfSAuL3ZlcnNpb24iCgltdHJl
ZT0iLi9ldGMvbXRyZWUvNC40QlNELmRpc3QiCgl1bW91bnQgLWYgJFRBUl9ESVIKCSMgY3JlYXRl
IG1lbW9yeSBwYXJ0aXRpb24gdG8gc3RvcmUgZGlzdHJpYnV0aW9uCgkvc2Jpbi9tb3VudF9tZnMg
LW0gMCAtcyAxMjAwMDAgc3dhcCAkVEFSX0RJUiB8fCB7CgkJZXJyPSQ/CgkJcmVjb3JkICJVbmFi
bGUgdG8gY3JlYXRlIFJBTSBmaWxlc3lzdGVtOiAkZXJyIgoJCXJldHVybiAkZXJyCgl9Cglpbml0
X2xvZwoJcmVjb3JkICJEb3dubG9hZGluZyBleHRlcm5hbCBzeXN0ZW0gc29mdHdhcmUgZGlzdHJp
YnV0aW9uLiIKCSMgRG93bmxvYWQgdGhlIGRpc3RyaWJ1dGlvbiB0YXIgZmlsZSBvbmx5IGV4dHJh
Y3QgdGhlIG1hbmlmZXN0LgoJY2QgJFRBUl9ESVIKCS91c3IvYmluL2Z0cCAgLW0gJFVSTCB8fCB7
CgkJZXJyPSQ/CgkJcmVjb3JkICJGdHAgcmV0cmlldmFsIG9mIHVwZ3JhZGUgYXJjaGl2ZSBmaWxl
IGZhaWxlZDogJGVyciIKCQlyZXR1cm4gJGVycgoJfQoJcmVjb3JkICJFeHRyYWN0aW5nIG1hbmlm
ZXN0IGZpbGVzIGZyb20gYXJjaGl2ZSBmaWxlIgoJdGFyIHh2enBmICR7QlVJTER9LnRhci5neiAk
bWFuaWZlc3QgJG10cmVlIDI+JjEgPj4gJERCR0xPRyB8fCB7CgkJZXJyPSQ/CgkJcmVjb3JkICJF
eHRyYWN0aW9uIG9mIG1hbmlmZXN0IGZpbGVzIGZyb20gYXJjaGl2ZSBmaWxlIGZhaWxlZDogJGVy
ciIKCX0KCXJldHVybiAkZXJyCn0KCnVwZGF0ZV9tYW5pZmVzdCgpCnsKCXJlY29yZCAiVXBkYXRp
bmcgdGhlIG1hbmlmZXN0IGZpbGUiCgkjIHVwZGF0ZSB0aGUgY3VycmVudC5ib20gbGluayBhbmQg
aW5zdGFsbCB0aGlzIGRpc3RyaWJ1dGlvbidzIG1hbmlmZXN0IGZpbGUKCShjZCAkVEFSX0RJUiAm
JiB0YXIgY2YgLSAiLiR7VEFSQk9NfSIgIi4ke1NSQ0JPTX0iKSB8IHRhciB4dnBmIC0KfQoKdmVy
aWZ5X21hbmlmZXN0KCkKewoJIwoJIyBWZXJpZnkgbWFuaWZlc3QgZmlsZSBpbnN0YWxsZWQgb24g
Zmxhc2ggaXMgY3VycmVudC4KCSMgQ2FsbCB1cGRhdGVfbWFuaWZlc3QgaWYgaXQgZG9lc24ndCBl
eGlzdCBvciBpcyBvdXQgb2YgZGF0ZQoJIwoJIyBJbiB0aGUgZGlzdHJpYnV0aW9uOiBjdXJyZW50
LmJvbSAtLT4gcmVsZWFzZS1uYW1lLmJvbQoJIwoKCWNkX2ZsYXNoCgoJIyBXYW50IGN1cnJlbnQu
Ym9tIHNob3VsZCBiZSBhIHN5bSBsaW5rIHNvIHJlbW92ZSBpZiBpdCBpc24ndC4KCVsgLXIgLiR7
U1JDQk9NfSAtYSAtaCAuJHtTUkNCT019IF0gfHwgIHJtIC1mIC4ke1NSQ0JPTX0KCgkjIENoZWNr
IHRoZSBkb3dubG9hZCBhcmVhIGZvciBtYW5pZmVzdCBmaWxlIGJ5IG5hbWUgaWYga25vd24gYW5k
IGdldCBpdHMKCSMgY2hlY2sgc3VtLgoJaWYgWyAiJFRBUkJPTSIgXSA7IHRoZW4KCQkjIGNoZWNr
IHN1bSBvZiB0aGUgZGlzdHJpYnV0aW9uIG1hbmlmZXN0IGZpbGUKCQlbIC1mICR7VEFSX0RJUn0k
e1RBUkJPTX0gXSAmJiAgdGRic3VtPSJgY2tzdW0gJHtUQVJfRElSfSR7VEFSQk9NfWAiCgkJIyBT
ZWUgaWYgYSBmaWxlIG9mIHRoZSBzYW1lIG5hbWUgZXhpc3RzIG9uIHRoZSBmbGFzaCBhbmQgZ2V0
IGl0cyBzdW0KCQlbIC1mIC4ke1RBUkJPTX0gXSAmJiBjZmJzdW09ImBja3N1bSAuJHtUQVJCT019
YCIKCWVsaWYgWyAtciAke1RBUl9ESVJ9JHtTUkNCT019IF0gOyB0aGVuCgkJIyBkb24ndCBrbm93
IHRoZSBuYW1lIG9mIHRoZSBtYW5pZmVzdCBmaWxlIHNvIHVzZSBpdHMgbGluayB0byBnZXQgc3Vt
CgkJdGRic3VtPSJgY2tzdW0gJHtUQVJfRElSfSR7U1JDQk9NfWAiCgllbHNlCgkJIyBUaGUgZG93
bmxvYWQgc2hvdWxkIGhhdmUgdW5wYWNrZWQgYSBtYW5pZmVzdCBmaWxlLCBwZXJoYXBzIHRoZSB1
c2VyCgkJIyBqdXN0IHdhbnRzIHRvIHZlcmlmeSBhbiBleGl0aW5nIGluc3RhbGxhdGlvbiB3aXRo
IGFuIGFscmVhZHkKCQkjIGluc3RhbGxlZCBtYW5pZmVzdCBmaWxlIGFuZCBkaWRuJ3QgZG8gYSBk
b3dubG9hZC4KCQl0ZGJzdW09IiIKCWZpCgoJIyBPbmx5IHVwZGF0ZSBjdXJyZW50IG1hbmlmZXN0
IGZpbGUgaWYgaXQgZG9lc24ndCBtYXRjaCBkaXN0cnVidXRpb24gb3IKCSMgZG9lc24ndCBleGlz
dC4KCWlmIFsgLWggLiR7U1JDQk9NfSBdIDsgdGhlbgoJCSMgY2hlY2sgc3VtIG9mIHRoZSBmaWxl
IGN1cnJlbnQuYm9tIGxpbmtzIHRvCgkJY2xic3VtPSJgY2tzdW0gLiR7U1JDQk9NfWAiCgkJIyBj
aGVjayBpZiBjdXJyZW50IGRvZXMgbm90IG1hdGNoIGRpc3RyaWJ1dGlvbiBhbmQgcmVuYW1lIGl0
CgkJIyBhbmQgdXBkYXRlCgkJaWYgWyAiJHRkYnN1bSIgLWEgIiR0ZGJzdW0iICE9ICIkY2xic3Vt
IiBdIDsgdGhlbgoJCQltdiAuJHtTUkNCT019IC4ke1BSRVZCT019CgkJCXVwZGF0ZV9tYW5pZmVz
dCB8fCByZXR1cm4gJD8KCQlmaQoJIyBJZiBuYW1lZCBtYW5pZmVzdCBmaWxlIGRpZmZlcnMgd2l0
aCBkaXN0cmlidXRpb24gdXBkYXRlIGl0CgllbGlmIFsgIiR0ZGJzdW0iIC1hICIkY2Zic3VtIiBd
IDsgdGhlbgoJCWlmIFsgIiR0ZGJzdW0iCSE9ICIkY2Zic3VtIiBdICA7IHRoZW4KCQkJdXBkYXRl
X21hbmlmZXN0IHx8IHJldHVybiAkPwoJCWZpCgllbHNlCgkJdXBkYXRlX21hbmlmZXN0IHx8IHJl
dHVybiAkPwoJZmkKCn0KCnJlbW92ZV9vbGRfbWFuaWZlc3QoKQp7CgljZF9mbGFzaAoJY2QgdXNy
L2xvY2FsL2FnaWxlL2NvbmYKCWFsbF9ib21zPSJgbHMgLTEgKi5ib21gIgoJaW51c2U9ImBscyAt
bCBjdXJyZW50LmJvbSB8IGF3ayAne3ByaW50ICRORn0nYCIKCW9uZWJhY2s9ImBscyAtbCBwcmV2
aW91cy5ib20gfCBhd2sgJ3twcmludCAkTkZ9J2AiCglmb3IgZiBpbiAkYWxsX2JvbXMgOyBkbwoJ
CWlmIFsgIiRpbnVzZSIgLWEgJGYgPSAiJGludXNlIiBdIDsgdGhlbgoJCQljb250aW51ZQoJCWVs
aWYgWyAiJG9uZWJhY2siIC1hICRmID0gIiRvbmViYWNrIiBdIDsgdGhlbgoJCQljb250aW51ZQoJ
CWVsaWYgWyAkZiA9IGN1cnJlbnQuYm9tIF0gOyB0aGVuCgkJCWNvbnRpbnVlCgkJZWxpZiBbICRm
ID0gcHJldmlvdXMuYm9tIF0gOyB0aGVuCgkJCWNvbnRpbnVlCgkJZWxzZQoJCQlybSAtZiAkZgoJ
CWZpCglkb25lCgljZCAvCgoJcmV0dXJuIDAKfQoKdmVyaWZ5X3N1bXMoKQp7CgljZF9mbGFzaAoK
CURPX09WRVJTPSIiCgkjIFByZWZlciB0aGUgbWFuaWZlc3QgZmlsZSBpbiB0aGUgZGlzdHJpYnV0
aW9uIHZlcnN1cyB0aGUgb25lIG9uIGZsYXNoLgoJaWYgWyAiJFRBUkJPTSIgLWEgLWYgJHtUQVJf
RElSfSR7VEFSQk9NfSBdIDsgdGhlbgoJCVNSQ0JPTT0ke1RBUl9ESVJ9JHtUQVJCT019CgllbGlm
IFsgLWggJHtUQVJfRElSfSR7T05TVE9SX0NPTkZ9L2N1cnJlbnQuYm9tIF0gOyB0aGVuCgkJU1JD
Qk9NPSR7VEFSX0RJUn0ke09OU1RPUl9DT05GfS9jdXJyZW50LmJvbQoJZmkKCglyZWNvcmQgIlZl
cmlmeWluZyBmaWxlc3lzdGVtIGludGVncml0eSIKCXdoaWxlIHJlYWQgZmlsZXN1bSA7IGRvCgkJ
IyBHZXQgZmlsZW5hbWUgYW5kIHN0cmlwIGxlYWRpbmcgJy4vJwoJCWZuYW1lPWBlY2hvICIkZmls
ZXN1bSIgfCBhd2sgJ3twcmludCAkTkZ9JyB8IHNlZCAncyVeWy5dLyUlJ2AKCQkjIElkZW50aWZ5
IHByb20gaW1hZ2VzIG1heSBuZWVkIGZ1cnRoZXIgcHJvY2Vzc2luZy4uLgoJCWlzcHJvbT0iYGZn
cmVwIHByb20gJHtUQVJfRElSfSR7REVTQ1J9IHwgZmdyZXAgJGZuYW1lYCIKCQkjIElnbm9yZSBj
b25maWd1cmF0aW9uIGZpbGVzIGxpc3RlZCBpbiB0aGUgREVTQ1IgZmlsZS4KCQl0b3NraXA9ImBl
Z3JlcCAnY29uZmlnfHNlcnZpY2UnICR7VEFSX0RJUn0ke0RFU0NSfSB8IGZncmVwICRmbmFtZWAi
CgkJaWYgWyAiJHRvc2tpcCIgXSA7IHRoZW4KCQkJIyBXZWxsIGlmIHRoZXkgYXJlIG1pc3Npbmcg
bGV0J3MgdXBncmFkZSB0aGVtLgoJCQlpZiBbICEgLXIgIiRmbmFtZSIgXSA7IHRoZW4KCQkJCXJl
Y29yZCAiTWlzc2luZyBjb25maWd1cmF0aW9uIGZpbGU6ICRmbmFtZSIKCQkJCURPX09WRVJTPSIk
RE9fT1ZFUlMgJGZuYW1lIgoJCQlmaQoJCQljb250aW51ZQoJCWZpCgkJIyBWZXJpZnkgdGhlIHJl
c3Qgb2YgdGhlIGRpc3RyaWJ1dGlvbgoJCWlmIFsgLWUgIi4vJHtmbmFtZX0iIF0gOyB0aGVuCgkJ
CXJlY29yZCAiQ2hlY2tpbmc6ICRmbmFtZSIKCQkJY2tzdW09ImBja3N1bSAuLyR7Zm5hbWV9YCIK
CQllbHNlCgkJCXJlY29yZCAiJGZuYW1lIGlzIG5vdCBpbnN0YWxsZWQiCgkJCURPX09WRVJTPSIk
RE9fT1ZFUlMgJGZuYW1lIgoJCQkjIGRldi9NQUtFREVWIG1pc3NpbmcgbmVlZCB0byB1cGRhdGUg
ZGV2aWNlcwoJCQlpZiBbICIkZm5hbWUiID0gImRldi9NQUtFREVWIiBdIDsgdGhlbgoJCQkJTkVF
RF9ORVdfREVWUz15ZXMKCQkJCWV4cG9ydCBORUVEX05FV19ERVZTCgkJCWZpCgkJZmkKCQlpZiBb
ICIkY2tzdW0iICE9ICIkZmlsZXN1bSIgXSA7IHRoZW4KCQkJIyBJZiBkZXYvTUFLRURFViBjaGFu
Z2VkIHRoZW4gZmxhZyBjaGFuZ2UgZm9yIGZ1dHVyZSBwcm9jZXNzaW5nCgkJCWlmIFsgIiRmbmFt
ZSIgPSAiZGV2L01BS0VERVYiIF0gOyB0aGVuCgkJCQlORUVEX05FV19ERVZTPXllcwoJCQkJZXhw
b3J0IE5FRURfTkVXX0RFVlMKCQkJZmkKCgkJCSMgQ2hlY2sgdG8gc2VlIGlmIHN1bSBtYXRjaCBs
YXN0IHZlcnNpb24gaW5zdGFsbGVkLgoJCQkjIFRoaXMgYW4gZXh0cmEgZGlhZ25vc3RpYyBmb3Ig
ZGV2ZWxvcG1lbnQncyB1c2UuCgkJCSMgSW4gYSBiYWNrLXRvLWJhY2sgdmVyaWZ5IGl0IHdpbGwg
ZmxhZyBmaWxlcyBtaXNzZWQgYnkgdXBncmFkZQoJCQlbIC1yIC4vJHtQUkVWQk9NfSBdICYmICBw
cmV2c3VtPSJgZmdyZXAgIiRja3N1bSIgLi8ke1BSRVZCT019YCIKCQkJaWYgWyAiJHByZXZzdW0i
IC1hICIkcHJldnN1bSIgPSAiJGNrc3VtIiBdIDsgdGhlbgoJCQkJcmVjb3JkICIkZm5hbWUgbWF0
Y2hlcyBwcmV2aW91cyBpbnN0YWxsZWQgdmVyc2lvbiIKCQkJCXJlY29yZCAiJGZuYW1lIG5lZWRz
IHVwZ3JhZGUiCgkJCQlET19PVkVSUz0iJERPX09WRVJTICRmbmFtZSIKCQkJZWxzZQoJCQkJIyBQ
b3NzaWJsZSBmaWxlIGNvcnJ1cHRpb24gb3Igb2xkIHZlcnNpb24gZGV0ZWN0ZWQKCQkJCXJlY29y
ZCAiJGZuYW1lIG5lZWRzIHVwZ3JhZGUiCgkJCQkjIENhc3VhbCB1c2VycyBkb24ndCBuZWVkIHRv
IHNlZSB0aGUgZm9sbG93aW5nLgoJCQkJZWNobyAiJGZuYW1lIHZlcmlmaWNhdGlvbiBmYWlsZWQi
ID4+ICREQkdMT0cKCQkJCWVjaG8gIlNyYzogJGZpbGVzdW0iICA+PiAkREJHTE9HCgkJCQllY2hv
ICJUZ3Q6ICRja3N1bSIgID4+ICREQkdMT0cKCQkJCXJlY29yZAoJCQkJRE9fT1ZFUlM9IiRET19P
VkVSUyAkZm5hbWUiCgkJCWZpCgkJZmkKCWRvbmUgPCAke1NSQ0JPTX0KCWV4cG9ydCBET19PVkVS
UwoKCXJldHVybiAwCn0KCnByaW50X2RvX292ZXJzKCkKewoJIyBQcmludCB0aGUgbGlzdCBvZiBm
aWxlcyB0aGF0IGNoYW5nZWQuCglyZWNvcmQKCXJlY29yZCAiVGhlIGZvbGxvd2luZyBmaWxlcyBu
ZWVkIHVwZ3JhZGluZzoiCglyZWNvcmQKCWZvciBmIGluICRET19PVkVSUyA7IGRvCgkJcmVjb3Jk
ICIkZiIKCWRvbmUKCXJlY29yZAoKCXJldHVybiAwCn0KCnJlcG9ydF92ZXJpZnlfcmVzdWx0cygp
CnsKCSMgUmVwb3J0IHJlc3VsdHMgb2YgdmVyaWZpY2F0aW9uIHN0ZXAKCWlmIFsgImBlY2hvICRE
T19PVkVSUyB8IGhlYWQgLTFgIiBdIDsgdGhlbgoJCXByaW50X2RvX292ZXJzCgllbHNlCgkJcmVj
b3JkCgkJcmVjb3JkICJmaWxlcyBhcmUgc2FtZSBvbiBzb3VyY2UgYW5kIHRhcmdldCBsb2NhdGlv
bjoiCgkJcmVjb3JkCglmaQoKCXJldHVybiAwCn0KCnNodXRkb3duX3BtKCkKewoJIyBGb3IgcHJp
bWFyeSBmbGFzaCB1cGdyYWRlcyBhbGwgU1NDIGRhZW1vbnMgbXVzdCBiZSBzdG9wcGVkLgoJJHtP
TlNUT1JfQklOfS9lbXJzY3JvbiAtcgoJcmVjb3JkICJTaHV0dGluZyBkb3duIFBNLi4uIgoJcG1f
cGlkPWBjYXQgL3Zhci9ydW4vcG0ucGlkYAoJa2lsbCAkcG1fcGlkCgl3YWl0ICRwbV9waWQgMj4v
ZGV2L251bGwKfQoKIyBjb3B5IHRoZSBzeXN0ZW0gY29uZmlnIGZpbGVzLiAgQSBkdXBlIG9mIHRo
ZSBDIGNvZGUgaW4gY21kX2ZsYXNoLAojIHVudGlsIHRoYXQgY29kZSBjYW4gYmUgbW9kaWZpZWQg
dG8ganVzdCB1c2UgdGhpcyBzY3JpcHQgaW5zdGVhZCwgTEdJLgpjb3B5X2NvbmZpZ19maWxlcygp
CnsKCXJlY29yZAoJcmVjb3JkICJVcGRhdGluZyBjb25maWd1cmF0aW9uIGZpbGVzLCBTdGFydCB0
aW1lOiBgZGF0ZWAiCglmb3IgZiBpbiAkU1lTX0NORl9GSUxFUyA7IGRvCgkJZWNobyAkZiA+PiAv
dG1wL3JhbWRpc2svY2ZsaXN0Cglkb25lCgl0YXIgY2YgLSAtRiAvdG1wL3JhbWRpc2svY2ZsaXN0
IHwgKGNkICRNTlQxICYmIHRhciB4dmYgLSkgIHwKCQl0ZWUgLWEgJExPRyB8fCB7CgkJCXJlY29y
ZCAiRmFpbHVyZTogY29uZmlnIGZpbGVzIG5vdCBmdWxseSB1cGRhdGVkLiIKCQkJcmV0dXJuIDEK
CQl9CgoJcm0gLWYgL3RtcC9yYW1kaXNrL2NmbGlzdAoJcmVjb3JkICJVcGRhdGluZyBjb25maWd1
cmF0aW9uIGZpbGVzLCAgRW5kIHRpbWU6IGBkYXRlYCIKfQoKZmluaXNoX3N0YW5kYWxvbmVfaW5z
dGFsbCgpCnsKCSMKCSMgVGhlc2Ugc3RlcHMgYXJlIG5vcm1hbGx5IGRvbmUgYnkgY29tbWFuZCB1
cGdyYWRlLiBJbiBjYXNlIHRoaXMgc2NyaXB0CgkjIGlzIGV2ZXIgbmVlZGVkIHRvIHBlcmZvcm0g
YW4gaW5zdGFsbCBpbiBwbGFjZSBvZiBjb21tYW5kIHVwZ3JhZGUgdGhpcwoJIyBmdW5jdGlvbiBw
ZXJmb3JtcyB0aGUgZmluYWwgc3RlcHMgb2YgdGhlIHVwZ3JhZGUgcHJvY2Vzcy4KCSMKCgkjIENv
cHkgc3lzdGVtIGNvbmZpZ3VyYXRpb24gZGF0YSB0byBzZWNvbmRhcnkgZmxhc2gKCWlmIFsgIiRE
T19SRUlOU1RBTEwiIC1hICAiJERPX1NFQ09OREFSWSIgXSA7IHRoZW4KCQljb3B5X2NvbmZpZ19m
aWxlcyB8fCB7CgkJCWVycm9yX2NsZWFudXAKCQkJZXhpdCAxCgkJfQoJZmkKCglpZiBbICIkRE9f
U0VDT05EQVJZIiBdIDsgdGhlbgoJCXJlY29yZCAiVXBncmFkZSBvZiB0aGUgc3RhbmRieSBmbGFz
aCBjb21wbGV0ZWQiCgllbHNlCgkJcmVjb3JkICJVcGdyYWRlIG9mIHRoZSBwcmltYXJ5IGZsYXNo
IGNvbXBsZXRlZCIKCWZpCgoJcmVjb3JkICJTeXN0ZW0gVXBncmFkZSBjb21wbGV0ZWQgYXQ6IGBk
YXRlYCIKCgkjIE1vdmUgdGhlIGxvZyBvZiB0aGlzIHRyYW5zYWN0aW9uIHRvIGZsYXNoCglpZiBb
ICIkRE9fUkVJTlNUQUxMIiBdIDsgdGhlbgoJCSMgTmVlZCB0byByZW1vdW50IENGIGRpcnMKCQlp
ZiBbICIkRE9fU0VDT05EQVJZIiBdIDsgdGhlbgoJCQltb3VudCAkc2VjX3ZhciAkQ0ZfRElSL3Zh
cgoJCQltdiAkTE9HICR7Q0ZfRElSfSR7U1lTTE9HfQoJCQl1bW91bnQgJHtDRl9ESVJ9L3ZhcgoJ
CWVsc2UKCQkJbXYgJExPRyAkU1lTTE9HCgkJZmkKCWZpCgoJdW1vdW50X3NlY29uZGFyeQoKCWlm
IFsgIiRET19QUklNQVJZIiBdIDsgdGhlbgoJCXJlY29yZCAiVW5tb3VudGluZyBmaWxlc3lzdGVt
cyBhbmQgUmVib290aW5nIHRoZSBzeXN0ZW0iCgkJIyBwbSBuZWVkcyB0byBiZSB1cCBiZWZvcmUg
c3lzdGVtIHJlYm9vdCB3aWxsIHdvcmsKCQkke09OU1RPUl9CSU59L3BtCgkJc2xlZXAgNQoJCXJl
Y29yZCAiU2FmZSBzaHV0b3duIGluIHByb2dyZXNzIgoJCW5meHNoIC1lICAic3lzdGVtIHJlYm9v
dCAteSIKCWZpCn0KCiMKIyBtYWluIGJlZ2lucyBoZXJlCiMKCnRyYXAgJ3JlY29yZCAiSW50ZXJy
dXB0IGRldGVjdGVkIGNsZWFuaW5nIHVwIjsgZXJyb3JfY2xlYW51cDsgZXhpdCcgMSAyIDE1Cgpp
ZiBbIC16ICIkUlVOX1NUQU5EQUxPTkUiIF0gOyB0aGVuCglMT0c9JFNZU0xPRwpmaQoKaWYgWyAh
IC1kICRNTlQxIF0gOyB0aGVuCgltb3VudCAtdSAtdyAvICYmCglta2RpciAtcCAkTU5UMSAmJgoJ
bW91bnQgLXUgLXIgLwpmaQoKaWYgWyAiJERPX0RPV05MT0FEIiBdIDsgdGhlbgoJbGVzc19tZW1f
ZG93bmxvYWQgfHwgewoJCXVtb3VudF9wYXRocyAkVEFSX0RJUgoJCXJlY29yZCAiVXBncmFkZSBm
YWlsZWQ6IHRlcm1pbmF0aW5nLiIKCQlleGl0IDEKCX0KZmkKCmlmIFsgIiRET19TRUNPTkRBUlki
IF0gOyB0aGVuCglpZF9zZWNvbmRhcnkKCXVtb3VudF9zZWNvbmRhcnkKCWNoZWNrX3NlY29uZGFy
eSB8fCB7CgkJIyBmc2NrIHB1a2VkIG9uIHVzOiBub3QgZ29vZAoJCXJlY29yZCAiQ291bGQgbm90
IGZpeCBhIGZpbGVzeXN0ZW0sIHVwZ3JhZGUgY2FuY2VsbGVkLiIKCQl1bW91bnRfcGF0aHMgJFRB
Ul9ESVIKCQlleGl0IDEKCX0KCW1vdW50X3NlY29uZGFyeSB8fCB7CgkJcmVjb3JkICJQcm9ibGVt
IGVuY291bnRlcmVkIG1vdW50aW5nIHNlY29uZGFyeSBDRiwgdGVybWluYXRpbmcuIgoJCWV4aXQg
MQoJfQpmaQoKY2RfZmxhc2gKCiNwcmVzZXJ2ZSBwcmV2aW91cyBpbnN0YWxsJ3MgbG9nIChqdXN0
IGxhc3QgdmVyc2lvbiB3aWxsIGJlIHNhdmVkKQpbICIkUlVOX1NUQU5EQUxPTkUiIC1hIC1yICRT
WVNMT0cgXSAmJiBtdiAkU1lTTE9HICR7U1lTTE9HfS5wcmV2aW91cwoKIyBWZXJpZnkgdGhlIG1h
bmlmZXN0IGZpbGVzLgp2ZXJpZnlfbWFuaWZlc3QgfHwgewoJcmVjb3JkICJBIHByb2JsZW0gdmVy
aWZ5aW5nIG9yIHVwZGF0aW5nIHRoZSBtYW5pZmVzdCBtYW5pZmVzdHMgd2UgYWJvcnQuIgoJZXJy
b3JfY2xlYW51cAoJZXhpdCAxCn0KCiMgQ2hlY2sgZmlsZXMgZm9yIGludGVncml0eSBhbmQgbmVl
ZCB0byB1cGdyYWRlLgp2ZXJpZnlfc3VtcwpyZXBvcnRfdmVyaWZ5X3Jlc3VsdHMKCiMgcmV0dXJu
IHRvIHJvb3QgYWZ0ZXIgdmVyaWZ5X3N1bXMKY2QgLwoKIyBBbmQgb3B0aW9uYWxseSBpbnN0YWxs
IGlmIG5lZWRlZC4gRG9uJ3QgYm90aGVyIGluc3RhbGxpbmcgaWYgbm8gZmlsZXMgY2hhbmdlZC4K
aWYgWyAiYGVjaG8gJERPX09WRVJTIHwgaGVhZCAtMWAiIC1hICAiJERPX1JFSU5TVEFMTCIgXSA7
IHRoZW4KCWlmIFsgIiRET19QUklNQVJZIiAtYSAiJFJVTl9TVEFOREFMT05FIiBdIDsgdGhlbgoJ
CXNodXRkb3duX3BtCglmaQoJcmVpbnN0YWxsIHx8IHsKCQlyZWNvcmQgIlNlcmlvdXMgcHJvYmxl
bSBlbmNvdW50ZXJlZC4gIEFib3J0aW5nIHVwZ3JhZGUuIgoJCWVycm9yX2NsZWFudXAKCQlleGl0
IDEKCX0KCXN5bmMKCSMgdmVyaWZ5IHRoZSBpbnN0YWxsYXRpb24gd2VudCBva2F5LgoJdmVyaWZ5
X3N1bXMKCXJlcG9ydF92ZXJpZnlfcmVzdWx0cwoJY2QgLwpmaQoKcmVtb3ZlX29sZF9tYW5pZmVz
dAoKaWYgWyAiJFJVTl9TVEFOREFMT05FIiBdIDsgdGhlbgoJZmluaXNoX3N0YW5kYWxvbmVfaW5z
dGFsbApmaQoKIyBEb25lIHdpdGggTUZTIHNvIHVubW91bnQKaWYgWyAiJERPX0RPV05MT0FEIiBd
IDsgdGhlbgoJdW1vdW50ICRUQVJfRElSCmZpCg==

--MP_A0.t_3eedTIh/A7Sfg/PW5R--
