Message-ID: <20011026142859.50974.qmail@web9104.mail.yahoo.com> Date: Fri, 26 Oct 2001 07:28:59 -0700 (PDT) From: ROLAND Subject: Problems with sgtty.h, ioctl.h and termios.h To: djgpp AT delorie DOT com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="0-816682262-1004106539=:48781" Reply-To: djgpp AT delorie DOT com --0-816682262-1004106539=:48781 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline I am trying to convert a program from UNIX to PC. The UNIX program is using sgtty.h and is working fine. For PC I need the same stuff that is in sgtty.h and I found that it was in termios.h and sys/ioctl.h. Only problem is that in sys/ioctl.h a part is turned off by a #if 0. Can someone tell me what I can do to make this program work? I added the program as an attachment, so feel free to experiment. Also there is an attachment which is an edited script containing the errors my compiler gives. Please help me. ROLAND __________________________________________________ Do You Yahoo!? Make a great connection at Yahoo! Personals. http://personals.yahoo.com --0-816682262-1004106539=:48781 Content-Type: application/x-unknown; name="mipdown.c" Content-Transfer-Encoding: base64 Content-Description: mipdown.c Content-Disposition: attachment; filename="mipdown.c" LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICovCi8qIERPQ1VNRU5UQ09ERSAgPSA5NTAxLTQ0My05OTAw MC1DLTAwMS0wMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyog REFURSAgICAgICAgICA9IDk0LTA4LTIzICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqLwovKiBOQU1FICAgICAgICAgID0g TUlQRE9XTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICovCi8qIEZVTkNUSU9OICAgICAgPSBNSVBET1dOIENPTlZFUlNJ T04vRE9XTkxPQUQgUFJPR1JBTSAgICAgICAgICAgICAgICAgKi8KLyogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqLwovKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCi8qKi8KI2luY2x1ZGUJPHN0ZGlvLmg+CiNpbmNsdWRlCTxjdHlw ZS5oPgojaWZkZWYgX1VOSVgKI2luY2x1ZGUJPHNndHR5Lmg+CiNlbHNlCiNp bmNsdWRlCTx0ZXJtaW9zLmg+CiNpbmNsdWRlCTxzeXMvaW9jdGwuaD4KI2Vu ZGlmCiNpbmNsdWRlCTxzaWduYWwuaD4KCiNkZWZpbmUJCVNFVAkJMQojZGVm aW5lCQlSRVNFVAkJMAojZGVmaW5lCQlBQ0sJCTEJLyogcG9zLiBhY2tub3ds ZWRnZW1lbnQJCSovCiNkZWZpbmUJCU5BSwkJMAkvKiBuZWcuIGFja25vd2xl ZGdlbWVudAkJKi8KI2RlZmluZQkJRVRYCQkxMAkvKiBlbmQgb2YgdGV4dCBj aGFyYWN0ZXIJKi8KI2RlZmluZQkJT0JKRklMCQkwCS8qIGZpbGV0eXBlIG9i amVjdGZpbGUJCSovCiNkZWZpbmUJCURBVEZJTAkJMQkvKiBmaWxldHlwZSB0 ZWNobmljYWwgcy4gZmlsZQkqLwojZGVmaW5lCQlNRVNGSUwJCTIJLyogZmls ZXR5cGUgaW50ZXJtZWRpYXRlIGZpbGUJKi8KI2RlZmluZQkJREVGTUVTCQki bWlwcC5tZXMiIC8qIGRlZmF1bHQgaW50ZXJtLiBmaWxlCSovCiNkZWZpbmUJ CUVSUkZJTAkJMwkvKiBmaWxldHlwZSBlcnJvcmZpbGUJCSovCiNkZWZpbmUJ CUlOUEZJTAkJNAkvKiBmaWxldHlwZSBpbnB1dGZpbGUJCSovCiNkZWZpbmUJ CU1BWElOCQk4MCAgICAgLyogbWF4IG5vLiBvZiBjaGFycy9saW5lIGhlbHBm aWxlKi8KI2RlZmluZQkJTUFYSU5QQgkJMTk4MAkvKiBtYXggbm8uIG9mIGNo YXJzIGluIGlucHV0CSovCgkJCQkJLyogY29udmVyc2lvbiB0byBieXRlcwkJ Ki8KI2RlZmluZQkJTUFYQlVGCQkyMDQ4CS8qIGxlbmd0aCBvZiBkYXRhIGJ1 ZmZlcgkqLwojZGVmaW5lCQlERUZMRU4JCTI1MgkvKiBkZWZhdWx0IG1lc3Nh Z2VsZW5ndGgJKi8KI2RlZmluZQkJTUlOTEVOCQk0CS8qIG1pbmltdW0gbWVz c2FnZSBsZW5ndGgJKi8KI2RlZmluZQkJVE9QTEVOCQkxMDAwCS8qIG1heGlt dW0gbWVzc2FnZSBsZW5ndGgJKi8KI2RlZmluZQkJREVGQkFVRAkJNDgwMAkv KiBkZWZhdWx0IGJhdWRyYXRlCQkqLwojZGVmaW5lCQlERUZCQkFVRAlCNDgw MAkvKiBkZWZhdWx0IGJhdWRyYXRlCQkqLwojZGVmaW5lCQlUSU1PVVQJCTEw CS8qIHRpbWVvdXQgPSAxMCBzZWMuCQkqLwojZGVmaW5lCQlERUZERVYJCSIv ZGV2L3R0eTAwIgkvKiBkZWZhdWx0IGRldmljZQkqLwojZGVmaW5lCQlTRVRN U0sJCSI4MDAwODAiIC8qIG1hc2sgb2YgYml0cyB0byBzZXQJCSovCiNkZWZp bmUJCUNMUk1TSwkJIkJGRkY5RiIgLyogbWFzayBvZiBiaXRzIHRvIGNsZWFy CSovCiNkZWZpbmUJCVNFVE1TS1IJCSI0MDAwMDAiIC8qIG1hc2sgdG8gc2V0 IHJldHJ5IGJpdAkqLwojZGVmaW5lCQlJTlZNU0tSCQkiNDAiCSAvKiBtYXNr IHRvIGludmVydCByLmIuKGNoZWNrKQkqLwojZGVmaW5lCQlTRVRNU0tMCQki MDAwMDIwIiAvKiBtYXNrIHRvIHNldCBsYXN0IG1lc3NhZ2UgYml0Ki8KI2Rl ZmluZQkJRE9UCQknLicJCS8qIGNoYXJhY3RlciAuCQkqLwojZGVmaW5lCQlE VUJET1QJCSc6JwkJLyogY2hhcmFjdGVyIDoJCSovCiNkZWZpbmUJCUVSQVNF Q0gJCSdcMjYnCSAvKiBlcmFzZSBjaGFyYWN0ZXIJCSovCiNkZWZpbmUJCUtJ TExDSAkJJ1wzMCcJIC8qIGtpbGwgY2hhcmFjdGVyCQkqLwojZGVmaW5lCQlG TEFHCQkwMzAxCSAvKiBldmVuLCBvZGQgYW5kIHRhbmRlbSAJKi8KI2RlZmlu ZQkJTkwJCXByaW50ZigiXG4iKQkvKiBvdXRwdXQgb2YgbmV3bGluZQkqLwov KgwqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKgkJCQkJCQkJ CSovCi8qCQkJcHJvZ3JhbSBuYW1lCQkJCQkqLwovKgkJCQkJCQkJCSovCi8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovCgpjaGFyCXByb2dyYW1fbmFt ZVtdPQoiPDw8PDwJTUlQRE9XTiB2ZXJzaW9uIDogMDMsCWRhdGU6IDI0LWph bi05MAk+Pj4+PiI7Ci8qDCovCi8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCi8qCQkJCQkJCQkJKi8KLyoJCQlnbG9iYWwgdmFyaWFibGVzCQkJCSov Ci8qCQkJCQkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K CgpzdHJ1Y3QJc2d0dHliCWxrdGVybTsKCmxvbmcJaXJlY25vLAkJCQkvKiBp bnB1dHJlY29yZCBudW1iZXIJCSovCglvcmVjbm87CQkJCS8qIG91dHB1dHJl Y29yZCBudW1iZXIJCSovCmludAllcnJmbGcsCQkJCS8qIGVycm9yZmxhZyhz ZXQgaWYgZXJyb3IpCSovCglmaWx0eXBbNDFdLAkJCS8qIGZpbGV0eXBlKGV4 dGVuc2lvbikJCSovCglwYWdlbm8sCQkJCS8qIG5vLiBvZiB0aGUgUkFNLXBh Z2UJCSovCglkb3Rwb3M9NCwJCQkvKiBwb3NpdGlvbiBkb3QgaW50ZXJtLmZp bGVuYW1lCSovCgltZXNvcHQ9UkVTRVQsCQkJLyogc2V0IGlmIG9wdGlvbiAt bSB1c2VkCSovCgllcnJvcHQ9UkVTRVQsCQkJLyogc2V0IGlmIG9wdGlvbiAt ZSB1c2VkCSovCglsZW5vcHQ9UkVTRVQsCQkJLyogc2V0IGlmIG9wdGlvbiAt bCB1c2VkCSovCgliYXVkb3B0PVJFU0VULAkJCS8qIHNldCBpZiBvcHRpb24g LWIgdXNlZAkqLwoJZGV2b3B0PVJFU0VULAkJCS8qIHNldCBpZiBvcHRpb24g LWQgdXNlZAkqLwoJb25lb3B0PVJFU0VULAkJCS8qIHNldCBpZiBvcHRpb24g LTEgdXNlZAkqLwoJdHdvb3B0PVJFU0VULAkJCS8qIHNldCBpZiBvcHRpb24g LTIgdXNlZAkqLwoJc2F2b3B0PVJFU0VULAkJCS8qIHNldCBpZiBvcHRpb24g LXMgdXNlZAkqLwoJcHJvZ29wdD1SRVNFVCwJCQkvKiBzZXQgaWYgb3B0aW9u IC1wIHVzZWQJKi8KCWYxLAkJCQkvKiBmaWxlIGRlc2NyaXB0b3IgMQkJKi8K CWYyLAkJCQkvKiBmaWxlIGRlc2NyaXB0b3IgMgkJKi8KCWYzLAkJCQkvKiBm aWxlIGRlc2NyaXB0b3IgMwkJKi8KCWY0LAkJCQkvKiBmaWxlIGRlc2NyaXB0 b3IgNAkJKi8KCW9sZGFkciwJCQkJLyogbGFzdCBhZGRyZXNzCQkJKi8KCWVv ZiwJCQkJLyogZW5kX29mX2ZpbGUgZmxhZwkJKi8KCW1heGxlbj1ERUZMRU4s CQkJLyogbWF4LiBsZW5ndGggb2Ygb25lIG1lc3NhZ2UJKi8KCWxhc3RmaWws CQkJLyogZmlsZXR5cGUgbGFzdCBjb252ZXJ0ZWQgZmlsZQkqLwoJYmF1ZD1E RUZCQVVELAkJCS8qIGJhdWRyYXRlIG9mIGRvd25sb2FkCQkqLwoJYmF1ZHRh YltdPXs5NjAwLDQ4MDAsMjQwMCwxODAwLAkvKiBiYXVkcmF0ZSB0YWJsZQkJ Ki8KCQkgIDEyMDAsNjAwLDMwMCwyMDAsMTUwLAoJCQkgIDExMCw3NSw1MCww fSwKCWJkcmF0ZT1ERUZCQkFVRCwJCS8qIGJhdWRyYXRlKHN5c3RlbSkJCSov CgliZHJhdGV0YWJbXT17Qjk2MDAsQjQ4MDAsQjI0MDAsCS8qIHN5c3RlbSBi YXVkcmF0ZSB0YWJsZQkqLwoJCSAgICBCMTIwMCxCNjAwLEIzMDAsQjIwMCwK CQkgICAgQjE1MCxCMTEwLEI3NSxCNTB9LAoJY2hhcnNpbiwJCQkvKiBuby4g b2YgY2hhcmFjdGVycyByZWFkCSovCgloZXhwb3dlcltdPXsxLDE2LDI1Niw0 MDk2LDY1NTM2fTsvKiBwb3dlcnMgb2Ygc2l4dGVlbiAoaGV4KQkqLwpjaGFy CWFuc3dlclsxMjFdLAkJCS8qIGFuc3dlciBzdHJpbmcgZm9yIHF1ZXN0aW9u cwkqLwoJZHVtbXksCQkJCS8qIGR1bW15IGNoYXJhY3RlcgkJKi8KCWlucGZp bFs0MF1bODFdLAkJICAgICAgLyogaW5wdXRmaWxlbmFtZShzKSgub2JqIG9y IC5kYXQpCSovCgltZXNmaWxbODFdPURFRk1FUywJCS8qIGludGVybWVkaWF0 ZWZpbGVuYW1lKC5tZXMpCSovCgllcnJmaWxbODFdLAkJCS8qIGVycm9yZmls ZW5hbWUocykoLmVycikJKi8KCXN0cnRhZFs3XSwJCQkvKiBzdGFydGFkZHJl c3MgaW4gcHJvbQkJKi8KCWhlYWRlcls0MF1bMTBdLAkJCS8qIDMoNCkgYnl0 ZXMgaGVhZGVyIG9mIG1lc3NhZ2UJKi8KCWRlZmV4dFs1XVs1XT17Ii5vYmoi LAkJLyogZGVmYXVsdCBleHRlbnNpb25zIG9mCSovCgkJICAgICAgIi5kYXQi LAkJLyogZmlsZW5hbWVzCQkJKi8KCQkgICAgICAiLm1lcyIsCgkJICAgICAg Ii5lcnIifSwKCWlucGJ1ZltNQVhCVUZdLAkJCS8qIGRhdGEgaW5wdXQgYnVm ZmVyCQkqLwoJb3V0YnVmW01BWEJVRl0sCQkJLyogZGF0YSBvdXRwdXQgYnVm ZmVyCQkqLwoJZW1wdG1lc1syMV0sCQkJLyogZW1wdHkgbWVzc2FnZSBidWZm ZXIJCSovCglhbm1lc1syNTZdLAkJCS8qIGFjay9uYWsgbWVzc2FnZSBidWZm ZXIJKi8KCW5ha21lc1tdPSIwMDAxMDAwMDAwMDAwMFxuIiwJLyogbWVzc2Fn ZSB3aXRoIE5BSwkJKi8KCWRldmljZVs4MF09REVGREVWLAkJLyogZGV2aWNl bmFtZQkJCSovCgloZXhzZXRbXT0iMDEyMzQ1Njc4OUFCQ0RFRiI7CS8qIGhl eGFkZWNpbWFsIGNoYXJhY3RlcnNldAkqLwoKLyoMKi8KLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KLyoJCQkJCQkJCQkqLwovKgkJCQltYWluIHBy b2dyYW0JCQkJKi8KLyoJCQkJCQkJCQkqLwovKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLwoKLyogVGhpcyBwcm9ncmFtIGNvbnZlcnRzIHRoZSBvYmpl Y3RmaWxlKHMpIG9mIHRoZSBNSVBQIGFzc2VtYmxlciBhbmQJKi8KLyogdGVj aG5pY2FsIHNldHRpbmdzIGZpbGVzIGludG8gaW50ZXJtZWRpYXRlIGZpbGVz IGFuZC9vciB0YWtlcyBjYXJlIAkqLwovKiBvZiB0aGUgZG93bmxvYWQgb2Yg dGhlIGludGVybWVkaWF0ZSBmaWxlIHRvIHJhY2tfY29udHJvbC4JCSovCgpt YWluKGFyZ2MsYXJndikKCmludAlhcmdjOwpjaGFyCSphcmd2W107CnsKICAg ICAgICBjaGFyCSpnZXRlbnYoKTsKCWludAlpbnBmOwkJCS8qIG5vLiBvZiBp bnB1dGZpbGVuYW1lcwkqLwoJdm9pZAlpbnRlcnJ1cHQoKTsJCS8qIGludGVy cnVwdCByb3V0aW5lCQkqLwoKCXNpZ25hbChTSUdJTlQsaW50ZXJydXB0KTsJ LyogY2F0Y2ggaW50ZXJydXB0CQkqLwoJTkw7CglwcmludGYoIiVzXG4iLHBy b2dyYW1fbmFtZSk7CglOTDsKCWVycmZsZz1SRVNFVDsKCWlucGY9aW5wcm9j KGFyZ2MsYXJndik7CQkvKiBpbnB1dCBwcm9jZXNzb3IJCSovCglpZih0d29v cHQhPVNFVCkKCQljb252Ynl0KGlucGYpOwkJLyogY29udmVyc2lvbiBpbnRv IGJ5dGUgZm9ybWF0CSovCglpZihvbmVvcHQhPVNFVCkKCQlkb3dubG9hZCgp OwkJLyogZG93bmxvYWQgdG8gcmFja19jb250cm9sCSovCglmaW5pc2goMCk7 CglyZXR1cm4oMCk7Cn0vKgwqLwovKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLwovKgkJCQkJCQkJCSovCi8qCQkJc3Vicm91dGluZSBpbnByb2MJCQkJ Ki8KLyoJCQkJCQkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LwoKLyogVGhlIHN1YnJvdXRpbmUgaW5wcm9jIGlzIGFuIGlucHV0IHByb2Nl c3NvciB3aGljaCByZWFkcyB0aGUgY29tbWFuZC0JKi8KLyogbGluZSBhbmQg ZGVyaXZlcyBmcm9tIGl0IHRoZSBmaWxlbmFtZXMgKGFuZCBvcHRpb25zKS4J CSovCi8qIFRoZSByb3V0aW5lIGFsc28gY2hlY2tzIHRoZSBjb21tYW5kLWxp bmUgZm9yIGVycm9ycy4JCQkqLwoKaW5wcm9jKGFyZ2MsYXJndikKCmludAlh cmdjOwpjaGFyCSphcmd2W107CnsKCWludAlpPTEsCQkJLyogbG9vcCB2YXJp YWJsZQkJKi8KCQlqLAkJCS8qIGxvb3AgdmFyaWFibGUJCSovCgkJaGVscHZh ciwJCS8qIGhlbHAgdmFyaWFibGUJCSovCgkJaW5wPSAtMSwJCS8qIG5vLiBv ZiBpbnB1dGZpbGVuYW1lcwkqLwoJCWxhc3RpbnA9UkVTRVQ7CQkvKiBzZXQg aWYgaW5wdXRmaWxlPSAnXG4nCSovCgoJd2hpbGUoaTxhcmdjKXsKCSAgICBz d2l0Y2goYXJndltpXVswXSl7CgkgICAgY2FzZSAnLSc6CQkJLyogYXJndW1l bnQgaXMgb3B0aW9uCQkqLwoJCXN3aXRjaChhcmd2W2ldWzFdKXsKCQljYXNl ICdvJzoJLyogb3B0aW9uOiBvYmplY3RmaWxlbmFtZT1uZXh0IGFyZ3VtZW50 CSovCgkJCQkvKgkgICBmaWxldHlwZSBpcyBub3QgYXNrZWQgZm9yCSovCgkJ ICAgIGFyZ3NwZWMoKytpLGFyZ2MsIm9iamVjdGZpbGVuYW1lIik7CgkJICAg IGZpbHR5cFsrK2lucF09T0JKRklMOwoJCQkJCQkvKiByZWFkIG9iamVjdGZp bGVuYW1lCSovCgkJICAgIGZldGNobmFtZShpbnBmaWxbaW5wXSxhcmd2W2ld LCZmaWx0eXBbaW5wXSk7CgkJICAgIGlmKGVycmZsZyE9UkVTRVQpIGV4aXQo LTEpOwoJCSAgICBhcmdzcGVjKCsraSxhcmdjLCJoZWFkZXIiKTsKCQkJCQkJ LyogcmVhZCBoZWFkZXJieXRlcwkqLwoJCSAgICBzc2NhbmYoYXJndltpXSwi JThzIixoZWFkZXJbaW5wXSk7CgkJICAgIGlmKGNoYXJjaChoZWFkZXJbaW5w XSw4KT09U0VUKXsKCQkJZXJyb3IoImhlYWRlciBvZiAiLC0xLGlucGZpbFtp bnBdKTsKCQkJZXJyb3IoIiBtdXN0IGJlIDggaGV4IGNoYXJhY3RlcnMiLC0x LCJcbiIpOwoJCQlleGl0KC0xKTsKCQkgICAgfQoJCSAgICBicmVhazsKCQlj YXNlICd0JzoJLyogb3B0aW9uOiB0ZWNobi5zLmZpbGVuYW1lPW5leHQgYXJn dW1lbnQqLwoJCQkJLyoJICAgZmlsZXR5cGUgaXMgbm90IGFza2VkIGZvcgkq LwoJCSAgICBhcmdzcGVjKCsraSxhcmdjLCJ0ZWNobmljYWwgc2V0dGluZ3Mg ZmlsZW5hbWUiKTsKCQkgICAgZmlsdHlwWysraW5wXT1EQVRGSUw7CgkJCQkv KiByZWFkIHRlY2huaWNhbCBzZXR0aW5ncyBmaWxlbmFtZQkqLwoJCSAgICBm ZXRjaG5hbWUoaW5wZmlsW2lucF0sYXJndltpXSwmZmlsdHlwW2lucF0pOwoJ CSAgICBpZihlcnJmbGchPVJFU0VUKSBleGl0KC0xKTsKCQkgICAgYXJnc3Bl YygrK2ksYXJnYywiaGVhZGVyIik7CgkJCQkJCS8qIHJlYWQgaGVhZGVyYnl0 ZXMJKi8KCQkgICAgc3NjYW5mKGFyZ3ZbaV0sIiU2cyIsaGVhZGVyW2lucF0p OwoJCSAgICBpZihjaGFyY2goaGVhZGVyW2lucF0sNik9PVNFVCl7CgkJCWVy cm9yKCJoZWFkZXIgb2YgIiwtMSxpbnBmaWxbaW5wXSk7CgkJCWVycm9yKCIg bXVzdCBiZSA2IGhleCBjaGFyYWN0ZXJzIiwtMSwiXG4iKTsKCQkJZXhpdCgt MSk7CgkJICAgIH0KCQkgICAgYnJlYWs7CgkJY2FzZSAnbSc6CS8qIG9wdGlv bjogaW50ZXJtLmZpbGVuYW1lPW5leHQgYXJndW1lbnQqLwoJCSAgICBhcmdz cGVjKCsraSxhcmdjLCJpbnRlcm1lZGlhdGUgZmlsZW5hbWUiKTsKCQkgICAg bWVzb3B0PVNFVDsKCQkgICAgZmlsdHlwWzQwXT1NRVNGSUw7CgkJCQkJLyog cmVhZCBpbnRlcm1lZGlhdGUgZmlsZW5hbWUJKi8KCQkgICAgZG90cG9zPWZl dGNobmFtZShtZXNmaWwsYXJndltpXSwmZmlsdHlwWzQwXSk7CgkJICAgIGlm KGVycmZsZyE9UkVTRVQpIGV4aXQoLTEpOwoJCSAgICBicmVhazsKCQljYXNl ICdlJzoJLyogb3B0aW9uOiBlcnJvcmZpbGVuYW1lPW5leHQgYXJndW1lbnQJ Ki8KCQkJCS8qIGluc3RlYWQgb2YgZGVmYXVsdCBsb2FkZmlsZW5hbWUuZXJy CSovCgkJICAgIGFyZ3NwZWMoKytpLGFyZ2MsImVycm9yZmlsZW5hbWUiKTsK CQkgICAgZXJyb3B0PVNFVDsKCQkgICAgZmlsdHlwWzQwXT1FUlJGSUw7CgkJ CQkJCS8qIHJlYWQgZXJyb3JmaWxlbmFtZQkqLwoJCSAgICBmZXRjaG5hbWUo ZXJyZmlsLGFyZ3ZbaV0sJmZpbHR5cFs0MF0pOwoJCSAgICBpZihlcnJmbGch PVJFU0VUKSBleGl0KC0xKTsKCQkgICAgYnJlYWs7CgkJY2FzZSAnbCc6CS8q IG9wdGlvbjogbWVzc2FnZWxlbmd0aD1uZXh0IGFyZ3VtZW50CSovCgkJCSAJ LyoJICAgaW5zdGVhZCBvZiBERUZMRU4JCSovCgkJICAgIGFyZ3NwZWMoKytp LGFyZ2MsIm1lc3NhZ2VsZW5ndGgiKTsKCQkgICAgbGVub3B0PVNFVDsKCQkJ CQkJLyogcmVhZCBtZXNzYWdlbGVuZ3RoCSovCgkJICAgIGlmKChzc2NhbmYo YXJndltpXSwiJWQiLCZtYXhsZW4pKT09LTEpewoJCQllcnJvcigibWVzc2Fn ZWxlbmd0aCBtdXN0IGJlIGludGVnZXIiLC0xLCJcbiIpOwoJCQlleGl0KC0x KTsKCQkgICAgfQoJCSAgICBpZihtYXhsZW48TUlOTEVOIHx8IG1heGxlbj5U T1BMRU4pewoJCQllcnJvcigibGVuZ3RoIG11c3QgbGllIGJldHdlZW4gIixN SU5MRU4sIiIpOwoJCQllcnJvcigiIGFuZCAiLFRPUExFTiwiXG4iKTsKCQkJ ZXhpdCgtMSk7CgkJICAgIH0KCQkgICAgYnJlYWs7CgkJY2FzZSAnYic6CS8q IG9wdGlvbjogYmF1ZHJhdGUgPSBuZXh0IGFyZ3VtZW50CSovCgkJCSAJLyoJ ICAgaW5zdGVhZCBvZiBERUZCQVVECQkqLwoJCSAgICBhcmdzcGVjKCsraSxh cmdjLCJiYXVkcmF0ZSIpOwoJCSAgICBiYXVkb3B0PVNFVDsKCQkJCQkJLyog cmVhZCBiYXVkcmF0ZQkqLwoJCSAgICBpZigoc3NjYW5mKGFyZ3ZbaV0sIiVk IiwmYmF1ZCkpPT0tMSl7CgkJCWVycm9yKCJiYXVkcmF0ZSBtdXN0IGJlIGlu dGVnZXIiLC0xLCJcbiIpOwoJCQlleGl0KC0xKTsKCQkgICAgfQoJCSAgICBm b3Ioaj0wOyhoZWxwdmFyPWJhdWR0YWJbal0pPjAmJmhlbHB2YXIhPWJhdWQ7 aisrKTsKCQkgICAgaWYoaGVscHZhciE9YmF1ZCl7CgkJCWVycm9yKCJiYXVk cmF0ZTogIixiYXVkLCIiKTsKCQkJZXJyb3IoIiBub3QgZmFtaWxpYXIiLC0x LCJcbiIpOwoJCQlleGl0KC0xKTsKCQkgICAgfQoJCSAgICBlbHNlCWJkcmF0 ZT1iZHJhdGV0YWJbal07CgkJICAgIGJyZWFrOwoJCWNhc2UgJ2QnOgkvKiBv cHRpb246IGRldmljZSA9bmV4dCBhcmcuCQkqLwoJCQkJLyoJICAgaW5zdGVh ZCBvZiBERUZERVYJCSovCgkJICAgIGFyZ3NwZWMoKytpLGFyZ2MsImRldmlj ZSIpOwoJCSAgICBkZXZvcHQ9U0VUOwoJCQkJCQkvKiByZWFkIGRldmljZW5h bWUJKi8KCQkgICAgc3ByaW50ZihkZXZpY2UsIiVzIixhcmd2W2ldKTsKCQkg ICAgYnJlYWs7CgkJY2FzZSAnMSc6CS8qIG9wdGlvbjogb25seSBjb252ZXJz aW9uCQkqLwoJCSAgICBvbmVvcHQ9U0VUOwoJCSAgICBicmVhazsKCQljYXNl ICcyJzoJLyogb3B0aW9uOiBvbmx5IGRvd25sb2FkCQkqLwoJCSAgICB0d29v cHQ9U0VUOwoJCSAgICBicmVhazsKCQljYXNlICdzJzoJLyogbm8gcmVtb3Zh bCBvZiBpbnRlcm1lZGlhdGUgZmlsZQkqLwoJCSAgICBzYXZvcHQ9U0VUOwoJ CSAgICBicmVhazsKCQljYXNlICdwJzoJLyogc2hvdyBkb3dubG9hZCBwcm9n cmVzcyhvbmx5IFBNRFMgSUkpCSovCgkJICAgIHByb2dvcHQ9U0VUOwoJCSAg ICBicmVhazsKCQlkZWZhdWx0OgkJCS8qIGlsbGVnYWwgb3B0aW9uCSovCgkJ ICAgIGVycm9yKCJpbGxlZ2FsIG9wdGlvbjogIiwtMSxhcmd2W2ldKTsKCQkg ICAgZXJyb3IoIlxuIiwtMSwiIik7CgkJICAgIGV4aXQoLTEpOwoJCX0KCQli cmVhazsKCSAgICBkZWZhdWx0OgkJCQkvKiBubyBvcHRpb24JCSovCgkJZXJy b3IoInVua25vd24gb3B0aW9uOiAiLC0xLGFyZ3ZbaV0pOwoJCWVycm9yKCJc biIsLTEsIiIpOwoJCWV4aXQoLTEpOwoJICAgIH0KCWkrKzsKCX0KCWlmKChp bnA8MCYmdHdvb3B0IT1TRVQpfHwobWVzb3B0IT1TRVQmJnR3b29wdCE9UkVT RVQpKXsKCQkJCQkvKiBubyBpbnB1dGZpbGVuYW1lIHNwZWNpZmllZAkqLwoJ ICAgIGFuc3dlclswXT0naCc7CgkgICAgd2hpbGUgKGFuc3dlclswXSE9J2kn KXsgCgkJZXJyb3IoIlxuaGVscC9pbnRlcmFjdGl2ZSBpbnB1dC9xdWl0KGgv aS9xKT4iLC0xLCIiKTsKCQlnZXRzKGFuc3dlcik7CQkJLyogcmVhZCBhbnN3 ZXIJCSovCgkJc3dpdGNoKGFuc3dlclswXSl7CgkJY2FzZSAncSc6CQkJLyog cXVpdCB0aGUgcHJvZ3JhbQkqLwoJCQlleGl0KC0xKTsKCQkJYnJlYWs7CgkJ Y2FzZSAnaSc6CQkJLyogcHJvbXB0IGZvciBuZXcgaW5wdXQJKi8KCQkJYnJl YWs7CgkJZGVmYXVsdDoJCQkvKiBwcmludCBoZWxwZmlsZQkqLwoJCQloZWxw ZmlsZSgpOwoJCX0KCSAgICB9CgkgICAgd2hpbGUob25lb3B0IT1TRVQgJiYg dHdvb3B0IT1TRVQpewoJCQkJCS8qIHByb21wdDogY29udmVyc2lvbi9kb3du bG9hZAkqLwoJCXByaW50Zigib25seSBjb252ZXJzaW9uL2Rvd25sb2FkKDEv MikJOiAiKTsKCQlnZXRzKGFuc3dlcik7CgkJZXJyZmxnPVJFU0VUOwoJCWlm KGFuc3dlclswXSE9J1wwJyl7CQkvKiByZWFkIDEgb3IgMgkJKi8KCQkgICAg aWYoYW5zd2VyWzBdPT0nMScpCQkvKiBvbmx5IGNvbnZlcnNpb24JKi8KCQkJ b25lb3B0PVNFVDsKCQkgICAgZWxzZSBpZihhbnN3ZXJbMF09PScyJykJLyog b25seSBkb3dubG9hZAkqLwoJCQl0d29vcHQ9U0VUOwoJCSAgICBlbHNlCWVy cmZsZz1TRVQ7CgkJfQoJCWVsc2UgCWJyZWFrOwoJICAgIH0KCQkJCQkvKiBp bnRlcmFjdGl2ZSBtb2RlCQkqLwoJICAgIHdoaWxlKChsYXN0aW5wIT1TRVQg fHwgaW5wPDApJiZ0d29vcHQhPVNFVCl7CgkJCQkJLyogcHJvbXB0IGZvciBp bnB1dGZpbGVuYW1lKHMpLAkqLwoJCQkJCS8qIGZpbGV0eXBlKHMpIGFuZCBo ZWFkZXIocykJKi8KCQlwcmludGYoImlucHV0ZmlsZW5hbWUJCQk6ICIpOwoJ CWdldHMoYW5zd2VyKTsKCQlpZihhbnN3ZXJbMF09PSdcMCcpIGxhc3RpbnA9 U0VUOwoJCWVsc2V7CQkJCS8qIHJlYWQgaW5wdXRmaWxlbmFtZQkqLwoJCSAg ICBsYXN0aW5wPVJFU0VUOwoJCSAgICBmaWx0eXBbKytpbnBdPUlOUEZJTDsK CQkgICAgZmV0Y2huYW1lKGlucGZpbFtpbnBdLGFuc3dlciwmZmlsdHlwW2lu cF0pOwoJCSAgICBpZihlcnJmbGchPVJFU0VUKSAtLWlucDsJLyogZXJyb3Ig aW4gZmV0Y2huYW1lCSovCgkJICAgIGVsc2V7CQkvKiBwcm9tcHQgZm9yIGhl YWRlcmJ5dGVzCSovCgkJCXByb21wdCgicHJvY2Vzc29ybmFtZQkiLCZoZWFk ZXJbaW5wXVswXSk7CgkJCXByb21wdCgicHJvY2Vzc25hbWUJIiwmaGVhZGVy W2lucF1bMl0pOwoJCQlwcm9tcHQoInBhcmFtZXRlcm5hbWUJIiwmaGVhZGVy W2lucF1bNF0pOwoJCQloZWFkZXJbaW5wXVs2XT0nXDAnOwoJCQlpZihmaWx0 eXBbaW5wXT09T0JKRklMKXsKCQkJICAgIHByb21wdCgicGFnZW51bWJlcgki LCZoZWFkZXJbaW5wXVs2XSk7CgkJCSAgICBoZWFkZXJbaW5wXVs4XT0nXDAn OwoJCQl9CgkJICAgIH0KCQl9CgkgICAgfQoJICAgIHdoaWxlKG1lc29wdCE9 U0VUKXsJCS8qIHByb21wdCBmb3IgaW50ZXJtLiBmaWxlbmFtZQkqLwoJCXBy aW50ZigiaW50ZXJtZWRpYXRlIGZpbGVuYW1lCQk6ICIpOwoJCWdldHMoYW5z d2VyKTsKCQlpZihhbnN3ZXJbMF0hPSdcMCcpewoJCSAgICBmaWx0eXBbNDBd PU1FU0ZJTDsKCQkgICAgZG90cG9zPWZldGNobmFtZShtZXNmaWwsYW5zd2Vy LCZmaWx0eXBbNDBdKTsKCQkgICAgaWYoZXJyZmxnIT1TRVQpIG1lc29wdD1T RVQ7CgkJfQoJCWVsc2UgaWYoZXJyZmxnIT1TRVQpIGJyZWFrOwoJICAgIH0K CSAgICB3aGlsZShlcnJvcHQhPVNFVCYmdHdvb3B0IT1TRVQpeyAvKiBwcm9t cHQgZm9yIGVycm9yZmlsZW5hbWUqLwoJCXByaW50ZigiZXJyb3JmaWxlbmFt ZQkJCTogIik7CgkJZ2V0cyhhbnN3ZXIpOwoJCWlmKGFuc3dlclswXSE9J1ww Jyl7CgkJICAgIGZpbHR5cFs0MF09RVJSRklMOwoJCSAgICBmZXRjaG5hbWUo ZXJyZmlsLGFuc3dlciwmZmlsdHlwWzQwXSk7CgkJICAgIGlmKGVycmZsZyE9 U0VUKSBlcnJvcHQ9U0VUOwoJCX0KCQllbHNlIGlmKGVycmZsZyE9U0VUKSBi cmVhazsKCSAgICB9CgkgICAgd2hpbGUobGVub3B0IT1TRVQmJnR3b29wdCE9 U0VUKXsvKiBwcm9tcHQgZm9yIG1lc3NhZ2VsZW5ndGgJKi8KCQlwcmludGYo Im1lc3NhZ2VsZW5ndGgJCQk6ICIpOwoJCWdldHMoYW5zd2VyKTsKCQlpZihh bnN3ZXJbMF0hPSdcMCcpewkvKiByZWFkIG1lc3NhZ2VsZW5ndGgJCSovCgkJ ICAgIGlmKChzc2NhbmYoYW5zd2VyLCIlZCIsJm1heGxlbikpPT0tMSl7CgkJ CWVycm9yKCJtZXNzYWdlbGVuZ3RoIG11c3QgYmUgaW50ZWdlciIsLTEsIlxu Iik7CgkJCWVycmZsZz1TRVQ7CgkJICAgIH0KCQkgICAgZWxzZSBpZihtYXhs ZW48TUlOTEVOIHx8IG1heGxlbj5UT1BMRU4pewoJCQllcnJvcigibGVuZ3Ro IG11c3QgbGllIGJldHdlZW4gIixNSU5MRU4sIiIpOwoJCQllcnJvcigiIGFu ZCAiLFRPUExFTiwiXG4iKTsKCQkJZXJyZmxnPVNFVDsKCQkgICAgfQoJCSAg ICBlbHNlewoJCQlsZW5vcHQ9U0VUOwoJCQllcnJmbGc9UkVTRVQ7CgkJICAg IH0KCQl9CgkJZWxzZSBpZihlcnJmbGchPVNFVCkgYnJlYWs7CgkgICAgfQoJ ICAgIHdoaWxlKGJhdWRvcHQhPVNFVCYmb25lb3B0IT1TRVQpewoJCQkJCS8q IHByb21wdCBmb3IgYmF1ZHJhdGUJCSovCgkJcHJpbnRmKCJiYXVkcmF0ZQkJ CTogIik7CgkJZ2V0cyhhbnN3ZXIpOwoJCWlmKGFuc3dlclswXSE9J1wwJyl7 CS8qIHJlYWQgYmF1ZHJhdGUJCSovCgkJICAgIGlmKChzc2NhbmYoYW5zd2Vy LCIlZCIsJmJhdWQpKT09LTEpewoJCQllcnJvcigiYmF1ZHJhdGUgbXVzdCBi ZSBpbnRlZ2VyIiwtMSwiXG4iKTsKCQkJZXJyZmxnPVNFVDsKCQkgICAgfQoJ CSAgICBlbHNlewoJCQlmb3Ioaj0wOyhoZWxwdmFyPWJhdWR0YWJbal0pPjAm JmhlbHB2YXIhPWJhdWQ7aisrKTsKCQkJaWYoaGVscHZhciE9YmF1ZCl7CgkJ CSAgICBlcnJvcigiYmF1ZHJhdGU6ICIsYmF1ZCwiIik7CgkJCSAgICBlcnJv cigiIG5vdCBmYW1pbGlhciIsLTEsIlxuIik7CgkJCSAgICBlcnJmbGc9U0VU OwoJCQl9CgkJCWVsc2V7CgkJCSAgICBiZHJhdGU9YmRyYXRldGFiW2ldOwoJ CQkgICAgYmF1ZG9wdD1TRVQ7CgkJCSAgICBlcnJmbGc9UkVTRVQ7CgkJCX0K CQkgICAgfQoJCX0KCQllbHNlIGlmKGVycmZsZyE9U0VUKSBicmVhazsKCSAg ICB9CgkgICAgd2hpbGUoZGV2b3B0IT1TRVQmJm9uZW9wdCE9U0VUKXsgICAv KiBwcm9tcHQgZm9yIGRldmljZW5hbWUJKi8KCQlwcmludGYoImRldmljZQkJ CQk6ICIpOwoJCWdldHMoYW5zd2VyKTsKCQlpZihhbnN3ZXJbMF0hPSdcMCcp ewkvKiByZWFkIGRldmljZW5hbWUJCSovCgkJICAgIHNwcmludGYoZGV2aWNl LCIlcyIsYW5zd2VyKTsKCQkgICAgZGV2b3B0PVNFVDsKCQl9CgkJZWxzZSBi cmVhazsKCSAgICB9CgkgICAgd2hpbGUoc2F2b3B0IT1TRVQmJm9uZW9wdCE9 U0VUKXsKCQlwcmludGYoInNhdmUgaW50ZXJtZWRpYXRlIGZpbGUoeS9uKT8J OiAiKTsKCQlnZXRzKGFuc3dlcik7CgkJZXJyZmxnPVJFU0VUOwoJCWlmKGFu c3dlclswXSE9J1wwJyl7CQkvKiByZWFkIHkgb3IgbgkJKi8KCQkgICAgaWYo YW5zd2VyWzBdPT0neScpCQkvKiBzYXZlCQkJKi8KCQkJc2F2b3B0PVNFVDsK CQkgICAgZWxzZSBpZihhbnN3ZXJbMF09PSduJykJLyogbm8gc2F2ZQkJKi8K CQkJYnJlYWs7CgkJICAgIGVsc2UKCQkJZXJyZmxnPVNFVDsKCQl9CgkJZWxz ZSAJYnJlYWs7CgkgICAgfQoJICAgIHdoaWxlKHByb2dvcHQhPVNFVCYmb25l b3B0IT1TRVQpewoJCXByaW50Zigic2hvdyBwcm9ncmVzcyBhdCBkb3dubG9h ZCh5L24pPwk6ICIpOwoJCWdldHMoYW5zd2VyKTsKCQlpZihhbnN3ZXJbMF0h PSdcMCcpewkJLyogcmVhZCB5IG9yIG4JCSovCgkJICAgIGlmKGFuc3dlclsw XT09J3knKQkJLyogc2hvdyBwcm9ncmVzcwkqLwoJCQlwcm9nb3B0PVNFVDsK CQkgICAgZWxzZSBpZihhbnN3ZXJbMF09PSduJykJLyogZG9uJ3Qgc2hvdyBw cm9ncmVzcwkqLwoJCQlicmVhazsKCQkgICAgZWxzZQoJCQllcnJmbGc9U0VU OwoJCX0KCQllbHNlCWJyZWFrOwoJICAgIH0KCX0KCWlmKGlucD49NDApewoJ ICAgIGVycm9yKCJtYXhpbXVtIG51bWJlciBvZiBpbnB1dGZpbGVzKDQwKSBl eGNlZWRlZCIsLTEsIlxuIik7CgkgICAgZXhpdCgtMSk7Cgl9CglpZihlcnJv cHQhPVNFVCl7CQkvKiBkZWZpbmUgZXJyb3JmaWxlbmFtZQkJKi8KCSAgICBm b3Ioaj0wO2o8ZG90cG9zO2orKykJLyogY29weSBmaWxlbmFtZQkJKi8KCQll cnJmaWxbal09bWVzZmlsW2pdOwoJICAgIGZvcihqPTA7ajw9NDtqKyspCQkv KiBkZWZhdWx0IGV4dGVuc2lvbjogLmVycgkqLwoJCWVycmZpbFtkb3Rwb3Mr al09ZGVmZXh0W0VSUkZJTF1bal07Cgl9CglpZih0d29vcHQhPVNFVCl7Cgkg ICAgcHJpbnRmKCJpbnB1dGZpbGVuYW1lcytoZWFkZXJzCTogJXMJJXNcbiIs CgkJCQkJCWlucGZpbFswXSxoZWFkZXJbMF0pOwoJICAgIGZvcihpPTE7aTw9 aW5wO2krKykKCSAgICAgICAgcHJpbnRmKCIJCQkgICVzCSVzXG4iLAoJCQkJ CQlpbnBmaWxbaV0saGVhZGVyW2ldKTsKCX0KCXByaW50ZigiaW50ZXJtZWRp YXRlIGZpbGVuYW1lCTogJXNcbiIsbWVzZmlsKTsKCXByaW50ZigiZXJyb3Jm aWxlbmFtZQkJOiAlc1xuIixlcnJmaWwpOwoJaWYodHdvb3B0IT1TRVQpCgkJ cHJpbnRmKCJtZXNzYWdlbGVuZ3RoCQk6ICVkXG4iLG1heGxlbik7CglpZihv bmVvcHQhPVNFVCl7CgkJcHJpbnRmKCJiYXVkcmF0ZQkJOiAlZFxuIixiYXVk KTsKCQlwcmludGYoImRldmljZQkJCTogJXNcbiIsZGV2aWNlKTsKCQlpZih0 d29vcHQhPVJFU0VUKQoJCSAgICBwcmludGYoIm9ubHkgZG93bmxvYWRcbiIp OwoJCWlmKHNhdm9wdCE9UkVTRVQpCgkJICAgIHByaW50ZigiJXMgaXMgc2F2 ZWQgYWZ0ZXIgZG93bmxvYWRcbiIsbWVzZmlsKTsKCQllbHNlCgkJICAgIHBy aW50ZigiJXMgaXMgcmVtb3ZlZCBhZnRlciBkb3dubG9hZFxuIixtZXNmaWwp OwoJfQoJZWxzZQoJCXByaW50Zigib25seSBjb252ZXJzaW9uXG4iKTsKCXJl dHVybihpbnApOwp9LyoMKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KLyoJCQkJCQkJCQkqLwovKgkJCXN1YnJvdXRpbmUgYXJnc3BlYwkJCQkq LwovKgkJCQkJCQkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CgovKiBUaGlzIHN1YnJvdXRpbmUgY2hlY2tzLCBpZiB0aGUgbmV4dCBhcmd1 bWVudCBpcyBwcm92aWRlZCBvciBub3QuCSovCi8qIElmIG5vdCwgYW4gZXJy b3JtZXNzYWdlIGlzIGdpdmVuIGFuZCB0aGUgcHJvZ3JhbSBzdG9wcy4JCSov CgphcmdzcGVjKGFyZyxtYXhhcmcsYXJnc3RyaW5nKQoKaW50CWFyZywJCQkv KiBuby4gb2YgdGhlIGFyZ3VtZW50IHdoaWNoIGlzIGFza2VkCSovCgltYXhh cmc7CQkJLyogbm8uIG9mIHRoZSBsYXN0IGFyZ3VtZW50IHByb3ZpZGVkCSov CmNoYXIJYXJnc3RyaW5nW107CQkvKiBhcmd1bWVudCB3aGljaCBpcyBhc2tl ZAkJKi8KewoJaWYoYXJnPj1tYXhhcmcpewoJCWVycm9yKGFyZ3N0cmluZywt MSwiIG5vdCBzcGVjaWZpZWQiKTsKCQllcnJvcigiXG4iLC0xLCIiKTsKCQll eGl0KC0xKTsKCX0KfS8qDCovCi8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCi8qCQkJCQkJCQkJKi8KLyoJCQlzdWJyb3V0aW5lIGZldGNobmFtZQkJ CQkqLwovKgkJCQkJCQkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCgovKiBUaGlzIHN1YnJvdXRpbmUgZmV0Y2hlcyBhIGZpbGVuYW1lIG91 dCBvZiBhcmcgYW5kIHB1dHMgaXQgaW4gbmFtZS4JKi8KLyogSXQgYWxzbyBj aGVja3MgdGhlIG5hbWUgZm9yIHRoZSBleHRlbnNpb24gYW5kIHJldHVybnMg dGhlIHBvc2l0aW9uCSovCi8qIG9mIHRoZSBkb3QuIElmIHRoZSBleHRlbnNp b24gZmFpbHMsIHRoZSBkZWZhdWx0IGV4dGVuc2lvbiB3aWxsIGJlCSovCi8q IGFzc3VtZWQuCQkJCQkJCQkqLwoKZmV0Y2huYW1lKG5hbWUsYXJnLGZpbHR5 cCkKCmludAkqZmlsdHlwOwkJLyogcG9pbnRlciB0byBmaWxldHlwZShleHRl bnNpb24pCSovCmNoYXIJbmFtZVtdLAkJCS8qIHRoZSBuYW1lIGZldGNoZWQg ZnJvbSB0aGUgYXJndW1lbnQJKi8KCWFyZ1tdOwkJCS8qIHRoZSBhcmd1bWVu dAkJCQkqLwp7CglpbnQJaSwJCS8qIGxvb3AgdmFyaWFibGUJCQkqLwoJCWos CQkvKiBsb29wIHZhcmlhYmxlCQkJKi8KCQlkb3Q9IC0xOwkvKiBzZXQgcG9z aXRpb24gb2YgZG90IHRvIG5lZ2F0aXZlCSovCgljaGFyCWM9YXJnWzBdOwkv KiBvbmUgY2hhcmFjdGVyCQkJKi8KCgllcnJmbGc9UkVTRVQ7Cglmb3IoaT0w O2MhPSdcMCc7Yz1hcmdbaV0pewkJLyogZmV0Y2ggbmFtZQkJKi8KCQluYW1l W2ldPWM7CgkJaWYoYz09RE9UIHx8IGM9PURVQkRPVCkKCQkJZG90PWk7CgkJ aSsrOwoJfQoJbmFtZVtpXT0nXDAnOwoJd2hpbGUoKmZpbHR5cD09SU5QRklM KXsJCS8qIHByb21wdCBmb3IgZmlsZXR5cGUJCSovCgkJcHJpbnRmKCJmaWxl dHlwZShvPW9iai90PXRlY2huaWNhbCBzZXR0aW5ncykJOiIpOwoJCWlmKChh bnN3ZXJbMF09Z2V0Y2hhcigpKSE9J1xuJykJLyogcmVhZCBvbmUgY2hhcmFj dGVyCSovCgkJCXdoaWxlKChkdW1teT1nZXRjaGFyKCkpIT0nXG4nKTsKCQkJ CQkvKiBza2lwIHJlc3Qgb2YgbGluZQkJKi8KCQlzd2l0Y2goYW5zd2VyWzBd KXsKCQljYXNlICdvJzoJCS8qIG9iamVjdGZpbGUJCQkqLwoJCQkqZmlsdHlw PU9CSkZJTDsKCQkJYnJlYWs7CgkJY2FzZSAndCc6CQkvKiB0ZWNobmljYWwg c2V0dGluZ3MgZmlsZQkqLwoJCQkqZmlsdHlwPURBVEZJTDsKCQkJYnJlYWs7 CgkJZGVmYXVsdDoJCS8qIGlsbGVnYWwgZmlsZXR5cGUJCSovCgkJCWVycm9y KCJpbGxlZ2FsIGZpbGV0eXBlIiwtMSwiXG4iKTsKCQl9Cgl9CglpZihkb3Q8 MCl7CQkvKiBleHRlbnNpb24gaXMgZGVmYXVsdCBleHRlbnNpb24JKi8KCQlk b3Q9aTsKCQlmb3IoaT0wO2k8PTQ7aSsrKQkvKiBmaWxsIGV4dGVuc2lvbiBp biBzdHJpbmcJKi8KCQkJbmFtZVtkb3QraV09ZGVmZXh0WypmaWx0eXBdW2ld OwoJfQoJZWxzZXsJCQkJCS8qIGNoZWNrIGV4dGVuc2lvbgkqLwoJCWZvcihp PTA7aTw0O2krKyl7CgkJCWlmKGkhPSAqZmlsdHlwKXsJLyogY29tcGFyZSBl eHRlbnNpb25zCSovCgkJCSAgICBlcnJmbGc9U0VUOwkJLyogc2V0IGVycm9y ZmxhZwkqLwoJCQkgICAgZm9yKGo9MDtqPDQ7aisrKXsKCQkJCWlmKG5hbWVb ZG90K2pdIT1kZWZleHRbaV1bal0pCgkJCQkgICAgZXJyZmxnPVJFU0VUOyAv KiByZXNldCBlcnJvcmZsYWcJKi8KCQkJICAgIH0KCQkJfQoJCQlpZihlcnJm bGchPVJFU0VUKXsKCQkJICAgIGVycm9yKCJpbGxlZ2FsIGV4dGVuc2lvbjog IiwtMSxkZWZleHRbaV0pOwoJCQkgICAgZXJyb3IoIlxuIiwtMSwiIik7CgkJ CSAgICBicmVhazsKCQkJfQoJCX0KCX0KCXJldHVybihkb3QpOwp9LyoMKi8K LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoJCQkJCQkJCQkqLwov KgkJCXN1YnJvdXRpbmUgcHJvbXB0CQkJCSovCi8qCQkJCQkJCQkJKi8KLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qIHRoaXMgc3Vicm91dGlu ZSBwcm9tcHRzIGZvciBhIGJ5dGUgcmVmZXJyZWQgdG8gYW4gaW5wdXRuYW1l CQkqLwovKiBhbmQgdHJpZXMgdG8gZG8gc28sIHVudGlsIHRoZSBieXRlIGhh cyB0aGUgcmlnaHQgZm9ybWF0KGhleCkuCSovCgpwcm9tcHQoaW5wbmFtLGJ5 dGUpCgpjaGFyCWlucG5hbVtdLAkJLyogbmFtZSBvZiBieXRlIHRvIHByb21w dCBmb3IJCSovCglieXRlW107CQkJLyogYnl0ZSB0byByZXR1cm4JCQkqLwp7 CglpbnQJZXJyZmxnOwkJLyogZXJyb3JmbGFnCQkJCSovCgoJZXJyZmxnPVNF VDsJCQkJLyogc2V0IGVycm9yZmxhZwkqLwoJd2hpbGUoZXJyZmxnIT1SRVNF VCl7CgkgICAgcHJpbnRmKCIlcwkoMWJ5dGUpOiAiLGlucG5hbSk7CS8qIHBy b21wdCBmb3IgaW5wdXQJKi8KCSAgICBpZigoYnl0ZVswXT1nZXRjaGFyKCkp IT0nXG4nJiYJLyogcmVhZCBieXRlCQkqLwoJICAgICAgIChieXRlWzFdPWdl dGNoYXIoKSkhPSdcbicpCgkJd2hpbGUoKGR1bW15PWdldGNoYXIoKSkhPSdc bicpOwkvKiBza2lwIHJlc3QJCSovCgkJYnl0ZVsyXT0nXDAnOwoJCWlmKChl cnJmbGc9Y2hhcmNoKGJ5dGUsMikpIT1SRVNFVCl7CgkJICAgIGVycm9yKGlu cG5hbSwtMSwiICIpOwkvKiB3cm9uZyBpbnB1dCBmb3JtYXQJKi8KCQkgICAg ZXJyb3IoIm11c3QgYmUgdHdvIGhleCBjaGFyYWN0ZXJzIiwtMSwiXG4iKTsK CQl9Cgl9Cn0vKgwqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwov KgkJCQkJCQkJCSovCi8qCQkJc3Vicm91dGluZSBjb252Ynl0CQkJCSovCi8q CQkJCQkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8q IFRoaXMgc3Vicm91dGluZSBjb252ZXJ0cyBlYWNoIGlucHV0ZmlsZSBpbnRv IGEgYnl0ZSBmb3JtYXR0ZWQJKi8KLyogaW50ZXJtZWRpYXRlIGZpbGUuCQkJ CQkJCSovCgpjb252Ynl0KGlucGYpCgppbnQJaW5wZjsJCQkJLyogbm8uIG9m IGlucHV0ZmlsZXMJCSovCgp7CglpbnQJaTsJCQkvKiBsb29wIHZhcmlhYmxl CQkqLwoJY2hhcgloZXhtYXhsWzRdOwkJLyogbWF4aW11bSBtZXNzYWdlIGxl bmd0aChoZXgpCSovCgoJcHJpbnRmKCJDT05WRVJTSU9OIE9GIElOUFVURklM RVNcblxuIik7CglpZigoZjI9Y3JlYXQobWVzZmlsLDA2NDQpKT09LTEpewkv KiBjcmVhdGUgZmlsZQkJKi8KCQllcnJvcigiZXJyb3I6ICIsLTEsbWVzZmls KTsKCQllcnJvcigiIGNhbiBub3QgYmUgY3JlYXRlZCIsLTEsIlxuIik7CgkJ ZmluaXNoKC0xKTsKCX0KCWlmKG9wZW4oZXJyZmlsLDEpIT0gLTEpCQkvKiBy ZW1vdmUgb2xkIGVycm9yZmlsZQkJKi8KCQl1bmxpbmsoZXJyZmlsKTsKCWxh c3RmaWw9ZmlsdHlwWzBdOwkJLyogZmlsZXR5cGUgb2YgZmlyc3QgaW5wdXRm aWxlCSovCglmaWx0eXBbaW5wZisxXT1maWx0eXBbaW5wZl0gXiAxOwoJaW50 aGV4KG1heGxlbis4LGhleG1heGwsNCk7CS8qIGNvbnZlcnQgbWF4LiBtZXMu IGwuIHRvIGhleAkqLwoJbHNlZWsoZjIsMEwsMCk7CQkJLyogcmV3aW5kIGlu dGVybWVkaWF0ZSBmaWxlCSovCgl3cml0ZShmMixoZXhtYXhsLDQpOwkJLyog b3V0cHV0IG9mIG1heC4gbWVzLiBsZW5ndGgJKi8KCW9yZWNubz00OwoJZm9y KGk9MDtpPD1pbnBmO2krKyl7CQkvKiBjb252ZXJ0IGVhY2ggaW5wdXRmaWxl CSovCgkJaWYoZmlsdHlwW2ldIT1sYXN0ZmlsKQoJCQlvdXRlbXB0KGktMSk7 CS8qIG91dHB1dCBvZiBlbXB0eSBtZXNzYWdlCSovCgkJaWYoKGYxPW9wZW4o aW5wZmlsW2ldLDApKT09LTEpewkJLyogb3BlbiBmaWxlCSovCgkJCWVycm9y KCJlcnJvcjogIiwtMSxpbnBmaWxbaV0pOwoJCQllcnJvcigiIGNhbiBub3Qg YmUgb3BlbmVkXG4iLC0xLCIiKTsKCQkJZmluaXNoKC0xKTsKCQl9CgkJaWYo ZmlsdHlwW2ldPT1PQkpGSUwpewkJLyogcGFnZW51bWJlcgkJKi8KCQkJc3Nj YW5mKCZoZWFkZXJbaV1bNl0sIiUyeCIsJnBhZ2Vubyk7CgkJCWhlYWRlcltp XVs2XT0nXDAnOwoJCX0KCQllbHNlIHBhZ2Vubz0wOwoJCXNldGJpdChoZWFk ZXJbaV0sU0VUTVNLLDYpOwoJCWNscmJpdChoZWFkZXJbaV0sQ0xSTVNLLDYp OwoJCWxzZWVrKGYxLDBMLDApOwkJLyogcmV3aW5kIGlucHV0ZmlsZQkJKi8K CQlwcmludGYoImNvbnZlcnNpb24gb2YgJXNcbiIsaW5wZmlsW2ldKTsKCQlj b252cnQoZmlsdHlwW2ldLGhlYWRlcltpXSk7CgkJY2xvc2UoZjEpOwkJLyog Y2xvc2UgaW50ZXJtZWRpYXRlIGZpbGUJKi8KCQlpZihlcnJmbGchPVJFU0VU KXsKCQkJZXJyb3IoImNvbnZlcnNpb24gc3RvcHBlZCIsLTEsIlxuIik7CgkJ CWZpbmlzaCgtMSk7CgkJfQoJfQoJb3V0ZW1wdChpbnBmKTsJCQkvKiBvdXRw dXQgb2YgZW1wdHkgbWVzc2FnZQkqLwoJY2xvc2UoZjIpOwkJCS8qIGNsb3Nl IGlucHV0ZmlsZQkJKi8KCXJldHVybjsKfS8qDCovCi8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCi8qCQkJCQkJCQkJKi8KLyoJCQlzdWJyb3V0aW5l IGNvbnZydAkJCQkqLwovKgkJCQkJCQkJCSovCi8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCgovKiBUaGlzIHN1YnJvdXRpbmUgY29udmVydHMgdGhl IGRhdGEgZnJvbSBvbmUgb2JqZWN0ZmlsZSBvciB0ZWNobmljYWwJKi8KLyog c2V0dGluZ3MgZmlsZSBpbnRvIGJ5dGVzIGFuZCBhZGRzIHRoZSByY19kYXRh KGhlYWRlciBieXRlcykgdG8gaXQuCSovCgpjb252cnQodHlwZSxyY2RhdCkK CmludAl0eXBlOwkJCQkvKiBmaWxldHlwZShvYmplY3Qgb3IgdGVjaG4uIHMu CSovCmNoYXIJcmNkYXRbXTsJCQkvKiByY19kYXRhIG9mIG1lc3NhZ2UJCSov CnsKCWludAltZXNsZW47CQkJLyogbWVzc2FnZWxlbmd0aAkJKi8KCWxvbmcJ aGVhZHBudHIsCQkvKiBvdXRwLiByZWMuIGhlYWRlciBidWZmZXIJKi8KCQlk YXRwbnRyLAkJLyogb3V0cC4gcmVjLiBmaXJzdCBkYXRhIGJ5dGUJKi8KCQlj aGtwbnRyOwkJLyogb3V0cC4gcmVjLiBjaGVja2J5dGUJCSovCgljaGFyCWhl eG1lc2xbNF0sCQkvKiBtZXNzYWdlbGVuZ3RoKGhleCkJCSovCgkJaGVhZGJ1 ZlsxOV0sCQkvKiBoZWFkZXIgYnVmZmVyCQkqLwoJCWNoa2J5dFsyXTsJCS8q IGNoZWNrYnl0ZQkJCSovCgoJaXJlY25vPTA7CglvbGRhZHI9IC0xOwoJZW9m PVJFU0VUOwoJc3ByaW50ZigmaGVhZGJ1Zls0XSwiJXMiLHJjZGF0KTsKCWhl YWRidWZbMThdPSdcMCc7Cgl3aGlsZShlb2YhPVNFVCl7CQkvKiBlbmRfb2Zf ZmlsZSBub3QgeWV0IHJlYWNoZWQJKi8KCQkJCQkvKiBjb252ZXJzaW9uIG9m IG9uZSBtZXNzYWdlCSovCgkgICAgY2hrYnl0WzBdPWNoa2J5dFsxXT0nMCc7 CgkgICAgaGVhZHBudHI9b3JlY25vOwoJICAgIGRhdHBudHI9b3JlY25vKzE4 OwoJICAgIGxzZWVrKGYyLGRhdHBudHIsMCk7CS8qIGFkanVzdCBmaWxlZGVz Y3JpcHRvcgkqLwoJCQkJCS8qIGNvbnZlcnNpb24gb2Ygb25lIG1lc3NhZ2UJ Ki8KCSAgICBtZXNsZW49Y29udm1lcyh0eXBlLGhlYWRidWYsY2hrYnl0KTsK CSAgICBpZihlcnJmbGchPVJFU0VUKQkJLyogaW5wdXQgZXJyb3IgCQkJKi8K CQlyZXR1cm47CQkJLyogc3RvcCBjb252ZXJzaW9uCQkqLwoJICAgIGlmKG1l c2xlbj4wKXsKCQlleGNsb3IoY2hrYnl0LCZoZWFkYnVmWzRdLDcpOwoJCWNo a3BudHI9aGVhZHBudHIrMioobWVzbGVuKzkpOyAvKiBwb3NpdGlvbiBjaGVj a2J5dGUJKi8KCQlsc2VlayhmMixoZWFkcG50ciwwKTsKCQl3cml0ZShmMixo ZWFkYnVmLDE4KTsJLyogb3V0cHV0IG9mIGhlYWRlciBieXRlcwkqLwoJCWxz ZWVrKGYyLGNoa3BudHIsMCk7CgkJd3JpdGUoZjIsY2hrYnl0LDIpOwkvKiBv dXRwdXQgb2YgY2hlY2tieXRlCQkqLwoJCW9yZWNubz1vcmVjbm8rMioobWF4 bGVuKzEwKTsgLyogbmV4dCBtZXNzYWdlIHBvc2l0aW9uCSovCgkgICAgfQoJ fQp9LyoMKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoJCQkJ CQkJCQkqLwovKgkJCXN1YnJvdXRpbmUgY29udm1lcwkJCQkqLwovKgkJCQkJ CQkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKiBUaGlz IHN1YnJvdXRpbmUgdGFrZXMgY2FyZSBvZiB0aGUgaW5wdXQgY29udmVyc2lv biBhbmQgb3V0cHV0IG9mIHRoZQkqLwovKiBkYXRhIG9mIG9uZSBtZXNzYWdl IG9mIGFuIGlucHV0ZmlsZS4JCQkJCSovCi8qIFRoZSByb3V0aW5lIGFsc28g Y2hlY2tzIHRoZSBkYXRhIG9uIGZvcm1hdC1lcnJvcnMuCQkJKi8KCmNvbnZt ZXModHlwZSxoZWFkYnVmLGNoa2J5dCkKCmludAl0eXBlOwkJCS8qIHR5cGUg b2YgaW5wdXRmaWxlCQkJKi8KY2hhcgloZWFkYnVmW10sCQkvKiBoZWFkZXIg YnVmZmVyCQkJKi8KCWNoa2J5dFtdOwkJLyogY2hlY2tieXRlCQkJCSovCnsK CWludAlpLAkJLyogbG9vcCB2YXJpYWJsZQkJCSovCgkJb2J1ZnBudCwJLyog cG9pbnRlciBvdXRwdXRidWZmZXIJCQkqLwoJCWVvbT1SRVNFVCwJLyogZW5k X29mX21lc3NhZ2UJCQkqLwoJCWFkZHJlc3MsCS8qIGRlY2ltYWwgYWRkcmVz cwkJCSovCgkJaW5wbm8sCQkvKiBuby4gb2YgY2hhcmFjdGVycyByZWFkIGlu IGJ1ZmZlcgkqLwoJCWxpbmVsZW4sCS8qIG5vLiBvZiBjaGFyYWN0ZXJzIGlu IG9uZSBsaW5lCSovCgkJc2tpcG5vLAkJLyogbm8uIG9mIGJ5dGVzIHRvIHNr aXAgaW4gbGluZQkJKi8KCQlieXRubywJCS8qIG5vLiBvZiBieXRlcyBpbiBv bmUgZGF0YXdvcmQJCSovCgkJbWVzbGVuPTA7CS8qIG1lc3NhZ2VsZW5ndGgJ CQkqLwoJY2hhcglkYXR3b3JkWzldLAkvKiBkYXRhd29yZAkJCQkqLwoJCWhl eGFkcls2XTsJLyogaGV4YWRlY2ltYWwgYWRkcmVzcwkJCSovCgoJbGluZWxl bj0xOC04KnR5cGU7Cglza2lwbm89NC00KnR5cGU7CglieXRubz00LTIqdHlw ZTsKCXdoaWxlKGVvZiE9U0VUJiZlb20hPVNFVCl7CS8qIGNvbnZlcnNpb24g b2Ygb25lIG1lc3NhZ2UJKi8KCSAgICBsc2VlayhmMSxpcmVjbm8sMCk7CQkv KiBhZGp1c3QgZmlsZWRlc2NyaXB0b3IJKi8KCSAgICBpZigoaW5wbm89cmVh ZChmMSxpbnBidWYsTUFYSU5QQikpPT0wKXsKCQllb2Y9U0VUOwkJLyogZW5k X29mX2ZpbGUgcmVhY2hlZAkJKi8KCQlicmVhazsKCSAgICB9CgkgICAgaW5w YnVmW2lucG5vXT0nXDAnOwoJICAgIG9idWZwbnQ9MDsKCSAgICBmb3IoaT0w O2k8aW5wbm8mJmVvbSE9U0VUO2k9aStsaW5lbGVuKXsKCQkJCQkvKiBjb252 ZXJzaW9uIG9mIGlucHV0YnVmZmVyCSovCgkJaWYoaW5wYnVmW2ldIT0nXDAn KXsJLyogY29udmVyc2lvbiBvZiBvbmUgbGluZQkqLwoJCSAgICBzc2NhbmYo JmlucGJ1ZltpK3NraXBub10sIiU0eCVzIiwmYWRkcmVzcyxkYXR3b3JkKTsK CQkJCQkvKiBjaGVjayBmb3IgZm9ybWF0IGVycm9ycwkqLwoJCSAgICBpZihj aGFyY2goZGF0d29yZCwoYnl0bm8qMikpPT1TRVQpewoJCQkJCS8qIGZvcm1h dCBlcnJvciBpbiBsaW5lCQkqLwoJCQlpZigoZjQ9b3BlbihlcnJmaWwsMSkp IT0gLTEgfHwKCQkJICAgKGY0PWNyZWF0KGVycmZpbCwwNjY2KSkhPSAtMSl7 CgkJCSAgICBsc2VlayhmNCwwTCwyKTsJLyogYXBwZW5kIGVycm9yIG1lc3Nh Z2UJKi8KCQkJICAgIHNwcmludGYoaGV4YWRyLCIlNGRcbiIsYWRkcmVzcyk7 CgkJCSAgICB3cml0ZShmNCwiZm9ybWF0IGVycm9yIGRldGVjdGVkIGF0ICIs MjYpOwoJCQkgICAgd3JpdGUoZjQsImFkZHJlc3M6ICIsOSk7CgkJCSAgICB3 cml0ZShmNCxoZXhhZHIsNSk7CgkJCSAgICBjbG9zZShmNCk7CgkJCX0KCQkJ ZXJyb3IoImZvcm1hdCBlcnJvciBkZXRlY3RlZCBhdCBhZGRyZXNzOiAiLAoJ CQkJYWRkcmVzcywiXG4iKTsKCQkJZXJyZmxnPVNFVDsKCQkgICAgfQoJCSAg ICBpZihhZGRyZXNzIT0ob2xkYWRyKzEpKXsKCQkJaWYoYWRkcmVzcz5vbGRh ZHIpIHsJLyogZW5kIG9mIG1lc3NhZ2UJKi8KCQkJICAgIG9sZGFkcj1hZGRy ZXNzLTE7CgkJCSAgICBlb209U0VUOwoJCQkgICAgYnJlYWs7CgkJCX0KCQkJ ZWxzZXsJCS8qIHdyb25nIGFkZHJlc3Mgc2VxdWVuY2UJKi8KCQkJICAgIGVy cm9yKCJ3cm9uZyBhZGRyZXNzIHNlcXVlbmNlIGRldGVjdGVkIiwtMSwiIik7 CgkJCSAgICBlcnJvcigiIGF0IGFkZHJlc3M6ICIsKGFkZHJlc3MrMSksIlxu Iik7CgkJCSAgICBlcnJmbGc9U0VUOwoJCQkgICAgcmV0dXJuKG1lc2xlbik7 CS8qIHN0b3AgY29udmVyc2lvbgkqLwoJCQl9CgkJICAgIH0KCQkgICAgZWxz ZSBpZihtZXNsZW49PTApewkvKiBmaWxsIHN0YXJ0YWRkcmVzcyBpbiBoZWFk YnVmCSovCgkJCWludGhleCgoYWRkcmVzcytwYWdlbm8qNDA5NiksJmhlYWRi dWZbMTRdLDQpOwoJCQltZXNsZW49Ynl0bm87CgkJICAgIH0KCQkJCQkvKiBj b252ZXJ0IG1pY3Jvd29yZCBpbnRvIGJ5dGVzCSovCgkJICAgIHNwcmludGYo Jm91dGJ1ZlsyKm9idWZwbnRdLCIlcyIsZGF0d29yZCk7CgkJICAgIG9idWZw bnQ9b2J1ZnBudCtieXRubzsKCQkgICAgb2xkYWRyPWFkZHJlc3M7CgkJICAg IGlmKChvYnVmcG50K21lc2xlbik+bWF4bGVuKXsKCQkJZW9tPVNFVDsKCQkJ aXJlY25vPWlyZWNubytsaW5lbGVuOwoJCQlicmVhazsKCQkgICAgfQoJCX0K CSAgICB9CgkgICAgZXhjbG9yKGNoa2J5dCxvdXRidWYsb2J1ZnBudCk7CS8q IGFkanVzdCBjaGVja2J5dGUJKi8KCSAgICB3cml0ZShmMixvdXRidWYsMipv YnVmcG50KTsKCSAgICBpcmVjbm89aXJlY25vK2k7CgkgICAgbWVzbGVuPW1l c2xlbitvYnVmcG50OwoJfQoJbWVzbGVuPW1lc2xlbi1ieXRubzsKCWludGhl eCgobWVzbGVuKzEpLCZoZWFkYnVmWzEwXSw0KTsgICAgIC8qIGNvbnZlcnQg bGVuZ3RoIHRvIGhleAkqLwoJaW50aGV4KChtZXNsZW4rOCksaGVhZGJ1Ziw0 KTsJICAvKiBjb252ZXJ0IGFjdHVhbCBtLmwuIHRvIGhleAkqLwoJcmV0dXJu KG1lc2xlbik7Cn0vKgwqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq LwovKgkJCQkJCQkJCSovCi8qCQkJc3Vicm91dGluZSBjaGFyY2gJCQkJKi8K LyoJCQkJCQkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoK LyogVGhpcyBzdWJyb3V0aW5lIGNoZWNrcyB0aGUgY2hhcmFjdGVycyBpbiBh IGNoYXJhY3RlcnN0cmluZyhoZXh2YWwpCSovCi8qIGZvciB0aGUgb2NjdXJl bmNlIG9mIHRoZW0gaW4gdGhlIGhleGFkZWNpbWFsIGNoYXJhY3RlcnNldAkJ Ki8KCmNoYXJjaChoZXh2YWwsY2hhcm5vKQoKaW50CWNoYXJubzsJCQkvKiBu dW1iZXIgb2YgY2hhcmFjdGVycyB0byBjaGVjawkqLwpjaGFyCWhleHZhbFtd OwkJLyogaGV4YWRlY2ltYWwgdmFsdWUgdG8gY2hlY2sJCSovCnsKCWludAlp OwoJZm9yKGk9MDtpPD1jaGFybm8gJiYgaXN4ZGlnaXQoaGV4dmFsW2ldKSE9 MDtpKyspOwoJcmV0dXJuKChpPT1jaGFybm8pID8gUkVTRVQgOiBTRVQpOwp9 LyoMKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoJCQkJCQkJ CQkqLwovKgkJCXN1YnJvdXRpbmUgb3V0ZW1wdAkJCQkqLwovKgkJCQkJCQkJ CSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKiBUaGlzIHN1 YnJvdXRpbmUgdGFrZXMgY2FyZSBvZiB0aGUgb3V0cHV0IG9mIGFuIGVtcHR5 IG1lc3NhZ2UgaWYgdGhlCSovCi8qIHRoZSBmaWxldHlwZSBvZiB0aGUgbGFz dCBpbnB1dGZpbGUgaXMgZGlmZmVyZW50IGZyb20gdGhlIGZpbGV0eXBlIG9m CSovCi8qIHRoZSBjdXJyZW50IGlucHV0ZmlsZSwgb3IgaWYgdGhlIGxhc3Qg bWVzc2FnZSBpcyB3cml0dGVuLgkJKi8KCm91dGVtcHQobmlmKQoKaW50CW5p ZjsJCQkvKiBubyBvZiB0aGUgY3VycmVudCBpbnB1dGZpbGUJCSovCnsKCXNl dGJpdChoZWFkZXJbbmlmXSxTRVRNU0tMLDYpOwkJLyogc2V0IGxhc3QgbWVz c2FnZSBiaXQJKi8KCXNwcmludGYoZW1wdG1lcywiMDAwOCVzIixoZWFkZXJb bmlmXSk7CglzcHJpbnRmKCZlbXB0bWVzWzEwXSwiMDAwMUZGRkYwMCIpOwoJ ZXhjbG9yKCZlbXB0bWVzWzE4XSwmZW1wdG1lc1s0XSw3KTsgIC8qIGV4Y2x1 c2l2ZV9vciBvZiBtZXNzYWdlCSovCglsc2VlayhmMixvcmVjbm8sMCk7Cgl3 cml0ZShmMixlbXB0bWVzLDIwKTsJCSAgICAgLyogb3V0cHV0IG9mIGVtcHR5 IG1lc3NhZ2UJKi8KCW9yZWNubz1vcmVjbm8rMioobWF4bGVuKzEwKTsKCWxh c3RmaWw9ZmlsdHlwW25pZisxXTsKfS8qDCovCi8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovCi8qCQkJCQkJCQkJKi8KLyoJCQlzdWJyb3V0aW5lIGRv d25sb2FkCQkJCSovCi8qCQkJCQkJCQkJKi8KLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KCi8qIFRoaXMgc3Vicm91dGluZSB0YWtlcyBjYXJlIG9m IHRoZSBkb3dubG9hZCBvZiB0aGUgbWVzc2FnZXMgZnJvbSB0aGUJKi8KLyog aW50ZXJtZWRpYXRlIGZpbGUgYW5kIG9mIHRoZSBmaWxlaGFuZGxpbmcgZmFj aWxpdGllcwkJCSovCgpkb3dubG9hZCgpCgp7CglwcmludGYoIkRPV05MT0FE IFRPIFJBQ0tfQ09OVFJPTFxuXG4iKTsKCWlmKChmMj1vcGVuKG1lc2ZpbCww KSk9PS0xKXsJLyogb3BlbiBpbnRlcm0uIGZpbGUJKi8KCQllcnJvcigiZXJy b3I6ICIsLTEsbWVzZmlsKTsKCQllcnJvcigiIGNhbiBub3QgYmUgb3BlbmVk IiwtMSwiXG4iKTsKCQlmaW5pc2goLTEpOwoJfQoJaWYoKGYzPW9wZW4oZGV2 aWNlLDApKT09LTEpewkvKiBvcGVuIGRldmljZSBmb3IgcmVhZAkqLwoJCWVy cm9yKCJlcnJvcjogIiwtMSxkZXZpY2UpOwoJCWVycm9yKCIgY2FuIG5vdCBi ZSBvcGVuZWQgZm9yIHJlYWQiLC0xLCJcbiIpOwoJCWZpbmlzaCgtMSk7Cgl9 CglpZigoZjQ9b3BlbihkZXZpY2UsMSkpPT0tMSl7CS8qIG9wZW4gZGV2aWNl IGZvciB3cml0ZSovCgkJZXJyb3IoImVycm9yOiAiLC0xLGRldmljZSk7CgkJ ZXJyb3IoIiBjYW4gbm90IGJlIG9wZW5lZCBmb3Igd3JpdGUiLC0xLCJcbiIp OwoJCWZpbmlzaCgtMSk7Cgl9CglpcmVjbm89MDsKCWRvd25sZChpbnBidWYp OwoJaWYoc2F2b3B0IT1TRVQpCgkJdW5saW5rKG1lc2ZpbCk7CgllbHNlCgkJ Y2xvc2UoZjIpOwoJY2xvc2UoZjMpOwoJY2xvc2UoZjQpOwp9LyoMKi8KLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoJCQkJCQkJCQkqLwovKgkJ CXN1YnJvdXRpbmUgZG93bmxkCQkJCSovCi8qCQkJCQkJCQkJKi8KLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KCmRvd25sZChtZXNzYWcpCgovKiBU aGlzIHJvdXRpbmUgdGFrZXMgY2FyZSBvZiB0aGUgZG93bmxvYWQgb2YgdGhl IG1lc3NhZ2VzIG9mIG9uZSBmaWxlCSovCi8qIGFuZCBvZiB0aGUgY29tbXVu aWNhdGlvbiBjb250cm9sIG9mIHRoZSBkb3dubG9hZC4JCQkqLwoKY2hhcglt ZXNzYWdbXVtNQVhCVUYvMl07CnsKCWludAlpLAkJCS8qIGxvb3AgdmFyaWFi bGUJCSovCgkJaiwJCQkvKiBsb29wIHZhcmlhYmxlCQkqLwoJCW1lc3NubywJ CQkvKiBtZXNzYWdlIG51bWJlcgkJKi8KCQltZXNsZW5bMl0sCQkvKiBsZW5n dGggb2YgYSBtZXNzYWdlCQkqLwoJCXJldHJ5LAkJCS8qIG51bWJlciBvZiB0 aW1lcyBvZiBzZW5kaW5nCSovCgkJCQkJLyogdGhlIHNhbWUgbWVzc2FnZQkJ Ki8KCQlhY2tuYWs7CQkJLyogcG9zLi9uZWcuIGFja25vd2xlZGdlbWVudAkq LwoJY2hhcglyZXBvcnQsCQkJLyogY29udHJvbF9yZXBvcnQgZm9yIGRldmlj ZQkqLwoJCWhleG1heGxbNF07CQkvKiBtYXguIGxlbmd0aCBvbmUgbWVzc2Fn ZShoZXgpCSovCgoJaXJlY25vPTA7CgltZXNzbm89MDsKCWk9MDsKCWo9MTsK CXJldHJ5PVJFU0VUOwoJZW9mPVJFU0VUOwoJbHNlZWsoZjIsaXJlY25vLDAp OwkJLyogcmV3aW5kCQkJKi8KCWlmKChyZWFkKGYyLGhleG1heGwsNCkpIT00 KXsJLyogcmVhZCBtYXgubGVuZ3RoIGZyb20gZmlsZQkqLwoJICAgIGVycm9y KCJlcnJvcihzKSBkZXRlY3RlZCB3aGlsZSByZWFkaW5nIGlucHV0IiwtMSwi XG4iKTsKCSAgICBmaW5pc2goLTEpOwoJfQoJc3NjYW5mKGhleG1heGwsIiU0 eCIsJm1heGxlbik7CS8qIGNvbnZlcnQgbWF4LiBsZW5ndGggdG8gaGV4CSov CgltYXhsZW49bWF4bGVuKjI7CglpZihtYXhsZW4+TUFYQlVGLzIpewoJICAg IGVycm9yKCJtYXhpbXVtIGxlbmd0aCBncmVhdGVyIHRoYW4gbWVzc2FnZSBi dWZmZXIiLC0xLCJcbiIpOwoJICAgIGZpbmlzaCgtMSk7Cgl9CglpcmVjbm89 aXJlY25vKzQ7Cgl0ZXJtc3QoKTsJCQkJLyogc2V0IHRlcm1pbmFsIHN0YXR1 cwkqLwoJYWNrbmFrPUFDSzsJCQkJLyogY2xlYXIgdG8gc2VuZAkqLwoJd2hp bGUoZW9mIT1TRVQgfHwgcmV0cnkhPVJFU0VUKXsKCSAgICBpZihyZXRyeT09 UkVTRVQpewoJCWlyZWNubz00K21lc3NubyoobWF4bGVuKzQpOwkvKiBhZGp1 c3QgcmVjb3JkbnVtYmVyCSovCgkJbWVzbGVuW2ldPXJlYWRtcyhtZXNzYWdb aV0pOwkvKiByZWFkIG9uZSBtZXNzYWdlCSovCgkJbWVzc25vKys7CQkJLyog aW5jcmVhc2UgbWVzc2FnZW5vLgkqLwoJCWo9aTsKCQlpPWleMTsJCQkJLyog aW52ZXJ0IGkJCSovCgkgICAgfQoJICAgIGlmKG1lc3Nubz4xKXsKCQlhY2tu YWs9d2FpdCgpOwkJCS8qIHdhaXQgZm9yIGFjay9uYWsJKi8KCQlpZihhY2tu YWshPU5BSyl7CQkvKiBwb3MuIGFja25vd2xlZGdlbWVudAkqLwoJCSAgICBp Zihlb2YhPVJFU0VUKQkJLyogb24gZW5kX29mX2ZpbGUJKi8KCQkJYnJlYWs7 CgkJICAgIHJldHJ5PVJFU0VUOwoJCSAgICBqPWleMTsJCQkvKiBpbnZlcnQg agkJKi8KCQl9CgkJZWxzZXsKCQkgICAgcmV0cnk9U0VUOwoJCSAgICBqPWk7 CgkJICAgIGlmKCh0c3RiaXQobWVzc2FnW2pdLFNFVE1TS1IsNikpIT1TRVQp ewoJCQkJLyogc2V0IHJldHJ5IGJpdCBhbmQgYWRqdXN0IGV4b3IJKi8KCQkJ ICAgIHNldGJpdChtZXNzYWdbal0sU0VUTVNLUiw2KTsKCQkJICAgIGludmJp dCgmbWVzc2FnW2pdW21lc2xlbltqXS0yXSxJTlZNU0tSLDIpOwoJCSAgICB9 CgkJfQoJICAgIH0KCSAgICBpZihwcm9nb3B0PT1TRVQpCXByaW50ZigiPiIp OwojaWZkZWYgbm9kZWYKcHJpbnRmKCJtYXhsZW49JWQgbGVuPSVkIG1lcz0n JXMnXG4iLG1heGxlbixtZXNsZW5bal0sbWVzc2FnW2pdKTsKI2VuZGlmCgkg ICAgd3JpdGUoZjQsbWVzc2FnW2pdLG1lc2xlbltqXSsxKTsJLyogZG93bmxv YWQgb2YgbWVzc2FnZQkqLwoJfQp9LyoMKi8KLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KLyoJCQkJCQkJCQkqLwovKgkJCXN1YnJvdXRpbmUgdGVy bXN0IAkJCQkqLwovKgkJCQkJCQkJCSovCi8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCgp0ZXJtc3QoKQoKLyogVGhpcyByb3V0aW5lIHRha2VzIGNh cmUgb2YgdGhlIHRlcm1pbmFsLXNldHRpbmdzLgkJCSovCgp7CglpZihpb2N0 bChmMyxUSU9DRVhDTCk9PTAgJiYKCSAgIGlvY3RsKGY0LFRJT0NFWENMKT09 MCl7CS8qIHNldCBleGNsdXNpdmUgb3duZXIgb2YgZGV2aWNlKi8KCSAgICBs a3Rlcm0uc2dfaXNwZWVkCT0gYmRyYXRlOwkvKiBpbnB1dCBiYXVkcmF0ZQkq LwoJICAgIGxrdGVybS5zZ19vc3BlZWQJPSBiZHJhdGU7CS8qIG91dHB1dCBi YXVkcmF0ZQkqLwoJICAgIGxrdGVybS5zZ19lcmFzZQk9IEVSQVNFQ0g7CS8q IGVyYXNlIGNoYXJhY3RlcgkqLwoJICAgIGxrdGVybS5zZ19raWxsCT0gS0lM TENIOwkvKiBraWxsIGNoYXJhY3RlcgkqLwoJICAgIGxrdGVybS5zZ19mbGFn cwk9IEZMQUc7CQkvKiBjb21tdW5pY2F0aW9uIG1vZGUJKi8KCSAgICBpZihp b2N0bChmMyxUSU9DU0VUUCwmbGt0ZXJtKSE9MCB8fAkvKiBzZXQgdGVybWlu YWwtCSovCgkgICAgICAgaW9jdGwoZjQsVElPQ1NFVFAsJmxrdGVybSkhPTAp ewkvKiBjaGFyYWN0ZXJpc3RpY3MJKi8KCQllcnJvcigidGVybWluYWxzZXR0 aW5ncyBjYW4gbm90IGJlIGNoYW5nZWQiLC0xLCJcbiIpOwoJCWZpbmlzaCgt MSk7CQkvKiByZXNldCBleGNsdXNpdmUgb3duZXIJKi8KCSAgICB9Cgl9Cgll bHNlewoJICAgIGVycm9yKCJkZXZpY2UgaXMgYnVzeSIsLTEsIlxuIik7Cgkg ICAgZmluaXNoKC0xKTsJCQkvKiByZXNldCBleGNsdXNpdmUgb3duZXIJKi8K CX0KfS8qDCovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qCQkJ CQkJCQkJKi8KLyoJCQlzdWJyb3V0aW5lIGludGVycnVwdAkJCQkqLwovKgkJ CQkJCQkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKiBU aGUgcm91dGluZSBpbnRlcnJ1cHQgaXMgY2FsbGVkIGlmIGFuIGludGVycnVw dCBpcyBnaXZlbiBhZnRlciB0aGUJKi8KLyogdGVybWluYWxzZXR0aW5ncyBo YXZlIGFscmVhZHkgYmVlbiBtYWRlLgkJCQkqLwoKdm9pZCBpbnRlcnJ1cHQo KQp7CgllcnJvcigicHJvZ3JhbSB3YXMgaW50ZXJydXB0ZWQiLC0xLCJcbiIp OwoJZmluaXNoKDApOwp9LyoMKi8KLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KLyoJCQkJCQkJCQkqLwovKgkJCXN1YnJvdXRpbmUgZmluaXNoCQkJ CSovCi8qCQkJCQkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KCi8qIFRoZSBzdWJyb3V0aW5lIGZpbmlzaCBpcyBjYWxsZWQgdG8gcmVz ZXQgdGhlIGV4Y2x1c2l2ZSBvd25lcnNoaXAgb2YJKi8KLyogdGhlIHRlcm1p bmFsLgkJCSAJCQkJKi8KCmZpbmlzaChhKQoKaW50CWE7CQkJLyogcmV0dXJu IHZhbHVlCQkJCSovCnsKCWlvY3RsKGYzLFRJT0NOWENMKTsKCWlvY3RsKGY0 LFRJT0NOWENMKTsKCWV4aXQoYSk7Cn0vKgwqLwovKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLwovKgkJCQkJCQkJCSovCi8qCQkJc3Vicm91dGluZSBy ZWFkbXMJCQkJKi8KLyoJCQkJCQkJCQkqLwovKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLwoKcmVhZG1zKG1lc3MpCgovKiBUaGlzIHJvdXRpbmUgcmVh ZHMgb25lIG1lc3NhZ2UgZnJvbSBhIGZpbGUsIHN0YXJ0aW5nIGF0IHJlY29y ZG51bWJlcgkqLwovKiBpcmVjbm8uCQkJCQkJCQkqLwoKY2hhcgltZXNzW107 CQkJCS8qIG1lc3NhZ2UgYnVmZmVyCQkqLwp7CglpbnQJaSwJCQkvKiBsb29w IHZhcmlhYmxlCQkqLwoJCWxlbmd0aDsKCWNoYXIJaGV4bGVuWzRdOwkJLyog aGV4LiByZXByZXNlbnRhdGlvbiBvZiBsZW5ndGgqLwoKCWxzZWVrKGYyLGly ZWNubywwKTsJCS8qIHN0YXJ0IHJlY29yZAkJCSovCglpZigocmVhZChmMixo ZXhsZW4sNCkpIT00KXsKCQllb2Y9U0VUOwkJLyogc3RvcCBvbiBlbmRfb2Zf ZmlsZQkJKi8KCQlyZXR1cm47Cgl9Cglzc2NhbmYoaGV4bGVuLCIlNHgiLCZs ZW5ndGgpOwkvKiBjb252ZXJ0IGhleGxlbiB0byBpbnRlZ2VyCSovCglsZW5n dGg9bGVuZ3RoKjI7CglpZihsZW5ndGg+TUFYQlVGLzIpewoJCWVycm9yKCJt ZXNzYWdlcyBsYXJnZXIgdGhhbiBtZXNzYWdlYnVmZmVyIiwtMSwiXG4iKTsK CQlmaW5pc2goLTEpOwoJfQoJaWYoKHJlYWQoZjIsbWVzcyxsZW5ndGgpKSE9 bGVuZ3RoKXsKCQllcnJvcigiZXJyb3IocykgZGV0ZWN0ZWQgd2hpbGUgcmVh ZGluZyBpbnB1dCIsLTEsIlxuIik7CgkJZmluaXNoKC0xKTsKCX0KCW1lc3Nb bGVuZ3RoXT1FVFg7CgltZXNzW2xlbmd0aCsxXT0wOwoJcmV0dXJuKGxlbmd0 aCk7CQkJLyogcmV0dXJuIG1lc3NhZ2UtbGVuZ3RoCSovCn0vKgwqLwovKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLwovKgkJCQkJCQkJCSovCi8qCQlz dWJyb3V0aW5lIHdhaXQgYW5kIGFsYXJtX2hhbmRsZXIJCQkqLwovKgkJCQkJ CQkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgp3YWl0KCkK Ci8qIFRoaXMgcm91dGluZSByZWFkcyBhbiBhY2svbmFrIG1lc3NhZ2UgZnJv bSB0aGUgaW5wdXRkZXZpY2UuCQkqLwovKiBUaGUgcm91dGluZSByZXR1cm5z IEFDSyBvciBOQUsuCQkJCQkqLwoKewoJY2hhcgljaGVja1syXTsJCS8qIGNo ZWNrYnl0ZQkJCSovCglpbnQJbWVzYW49UkVTRVQ7CQkvKiBTRVQgaWYgYWNr L25hayBtZXNzYWdlCSovCgl2b2lkCWFsYXJtX2hhbmRsZXIoKTsJLyogc3Vi cm91dGluZSBhbGFybV9oYW5kbGVyCSovCgoJY2hlY2tbMF09Y2hlY2tbMV09 JzAnOwoJc2lnbmFsKFNJR0FMUk0sYWxhcm1faGFuZGxlcik7CS8qIHNldCBz aWduYWwgaGFuZGxlcgkJKi8KCWFsYXJtKFRJTU9VVCk7CQkJLyogc2V0IGFs YXJtCQkJKi8KCXdoaWxlKG1lc2FuIT1TRVQpewoJICAgIGlmKHByb2dvcHQ9 PVNFVCkJcHJpbnRmKCI8Iik7CgkgICAgY2hhcnNpbj1yZWFkKGYzLGFubWVz LDI1Nik7CS8qIHJlYWQgbWVzc2FnZSArIFxuCQkqLwoJICAgIGlmKGFubWVz WzJdPT0nMCcmJmFubWVzWzNdPT0nMScpCgkJbWVzYW49U0VUOwkJLyogbWVz c2FnZSBpcyBhY2svbmFrIG1lc3NhZ2UJKi8KCX0KCWFsYXJtKDApOwkJCS8q IHJlc2V0IGFsYXJtCQkJKi8KCXNpZ25hbChTSUdBTFJNLFNJR19ERkwpOwkv KiByZXNldCBzaWduYWwgaGFuZGxlcgkJKi8KCWV4Y2xvcihjaGVjayxhbm1l cyw1KTsJCS8qIGRlZmluZSBjaGVja2J5dGUJCSovCglpZihjaGFyc2luPT0x MyAmJgoJICAgY2hlY2tbMF09PWFubWVzWzEwXSAmJiBjaGVja1sxXT09YW5t ZXNbMTFdICYmIAoJICAgYW5tZXNbNF09PScwJyAmJiBhbm1lc1s1XT09JzAn KXsJLyogbWVzc2FnZSBpcyBBQ0sJKi8KCQlpZihwcm9nb3B0PT1TRVQpCgkJ ICAgIHByaW50ZigiKGEpeyVjJWMlYyVjJWMlYyVjJWMlYyVjJWMlYyVjfSIs YW5tZXNbMF0sYW5tZXNbMV0sCgkJICAgIGFubWVzWzJdLGFubWVzWzNdLGFu bWVzWzRdLGFubWVzWzVdLGFubWVzWzZdLGFubWVzWzddLAoJCSAgICBhbm1l c1s4XSxhbm1lc1s5XSxhbm1lc1sxMF0sYW5tZXNbMTFdLGFubWVzWzEyXSk7 CgkJcmV0dXJuKEFDSyk7CQkvKiBwb3NpdGl2ZSBhY2tub3dsZWRnZW1lbnQJ Ki8KCX0KCWVsc2V7CQkJCQkvKiBtZXNzYWdlIGlzIE5BSwkqLwoJICAgIGlm KHByb2dvcHQ9PVNFVCkKCQlwcmludGYoIihuKXslYyVjJWMlYyVjJWMlYyVj JWMlYyVjJWMlY30iLGFubWVzWzBdLGFubWVzWzFdLAoJCSAgICBhbm1lc1sy XSxhbm1lc1szXSxhbm1lc1s0XSxhbm1lc1s1XSxhbm1lc1s2XSxhbm1lc1s3 XSwKCQkgICAgYW5tZXNbOF0sYW5tZXNbOV0sYW5tZXNbMTBdLGFubWVzWzEx XSxhbm1lc1sxMl0pOwoJICAgIHJldHVybihOQUspOwkJLyogbmVnYXRpdmUg YWNrbm93bGVkZ2VtZW50CSovCgl9Cn0Kdm9pZCBhbGFybV9oYW5kbGVyKCl7 CglpZihwcm9nb3B0PT1TRVQpCXByaW50ZigiKHQpIik7CglzdHJjcHkoYW5t ZXMsbmFrbWVzKTsJCS8qIGZpbGwgYW5tZXMgd2l0aCBOQUsJCSovCgljaGFy c2luPTE1Owp9LyoMKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K LyoJCQkJCQkJCQkqLwovKgkJCXN1YnJvdXRpbmUgZXhjbG9yCQkJCSovCi8q CQkJCQkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8q IFRoaXMgc3Vicm91dGluZSBnZW5lcmF0ZXMgdGhlIGV4Y2x1c2l2ZV9vciBv ZiBleG9yIGFuZCBvZiB0aGUgYnl0ZXMJKi8KLyogaW4gYW4gYXJyYXkgb2Yg Ynl0bnVtIGJ5dGVzCQkJCQkJKi8KCmV4Y2xvcihleG9yLGFycmF5LGJ5dG51 bSkKCmludAlieXRudW07CQkJCS8qIG51bWJlciBvZiBieXRlcyBpbiBhcnJh eQkqLwpjaGFyCWV4b3JbXSwJCQkJLyogZXhjbHVzaXZlX29yIGJ5dGUJCSov CglhcnJheVtdWzJdOwkJCS8qIGFycmF5IHdpdGggYnl0ZXMJCSovCnsKCWlu dAlpLAkJCS8qIGxvb3AgdmFyaWFibGUJCSovCgkJaiwJCQkvKiBsb29wIHZh cmlhYmxlCQkqLwoJCWRlY2FbMl0sCQkvKiBkZWNpbWFsIHZhbHVlcyBhCQkq LwoJCWRlY2JbMl07CQkvKiBkZWNpbWFsIHZhbHVlcyBiCQkqLwoKCWZvcihq PTA7ajwyO2orKyl7CQkvKiBsb29wIGZvciBlYWNoIGNoYXJhY3RlcgkqLwoJ CWlmKChkZWNhW2pdPWV4b3Jbal0pPD0nOScpCgkJCWRlY2Fbal09ZGVjYVtq XS0nMCc7CgkJZWxzZQoJCQlkZWNhW2pdPWRlY2Fbal0tJzcnOwoJCWZvcihp PTA7aTxieXRudW07aSsrKXsKCQkJZGVjYltqXT1hcnJheVtpXVtqXTsKCQkJ aWYoZGVjYltqXTw9JzknKQkvKiBjaGFyYWN0ZXIgMC4uLiA5CSovCgkJCQlk ZWNiW2pdPWRlY2Jbal0tJzAnOwoJCQllbHNlCQkJLyogY2hhcmFjdGVyIEEu Li4gRgkqLwoJCQkJZGVjYltqXT1kZWNiW2pdLSc3JzsKCQkJZGVjYVtqXT1k ZWNhW2pdXmRlY2Jbal07LyogZXhjbHVzaXZlX29yCQkqLwoJCX0KCQkJZXhv cltqXT1oZXhzZXRbZGVjYVtqXV07LyogZGVmaW5lIHJlc3VsdCB2YWx1ZQkq LwoJfQp9LyoMKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoJ CQkJCQkJCQkqLwovKgkJCXN1YnJvdXRpbmUgc2V0Yml0CQkJCSovCi8qCQkJ CQkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qIFRo aXMgc3Vicm91dGluZSBzZXRzIG9uZSBvciBtb3JlIGJpdHMgKGhpZ2ggYml0 cyBvZiBtYXNrKSBpbiBhCSovCi8qIHN0cmluZwkJCQkJCQkJKi8KCnNldGJp dChzdHJpbmcsbWFzayxzdHJsZW4pCgppbnQJc3RybGVuOwkJCS8qIGxlbmd0 aCBvZiBzdHJpbmcJCQkqLwpjaGFyCXN0cmluZ1tdLAkJLyogc3RyaW5nIGlu IHdoaWNoIGJpdChzKSBhcmUgc2V0CSovCgltYXNrW107CQkJLyogbWFzayBv ZiBiaXRzIHRvIHNldAkJCSovCnsKCWludAlpLAkJLyogbG9vcCB2YXJpYWJs ZQkJCSovCgkJaW50c3RyLAkJLyogaW50ZWdlciB2YWx1ZSBvZiBvbmUgY2hh ciBvZiBzdHJpbmcJKi8KCQlpbnRtc2s7CQkvKiBpbnRlZ2VyIHZhbHVlIG9m IG9uZSBjaGFyIG9mIG1hc2sJKi8KCglmb3IoaT0wO2k8c3RybGVuO2krKyl7 CgkJc3NjYW5mKCZzdHJpbmdbaV0sIiUxeCIsJmludHN0cik7CgkJc3NjYW5m KCZtYXNrW2ldLCIlMXgiLCZpbnRtc2spOwoJCWludHN0cj1pbnRzdHIgfCBp bnRtc2s7CQkvKiBzZXQgYml0KHMpCQkqLwoJCXN0cmluZ1tpXT1oZXhzZXRb aW50c3RyXTsKCX0KfS8qDCovCi8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCi8qCQkJCQkJCQkJKi8KLyoJCQlzdWJyb3V0aW5lIGNscmJpdAkJCQkq LwovKgkJCQkJCQkJCSovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CgovKiBUaGlzIHN1YnJvdXRpbmUgY2xlYXJzIG9uZSBvciBtb3JlIGJpdHMg KHplcm8gYml0cyBvZiBtYXNrKSBpbiBhCSovCi8qIHN0cmluZwkJCQkJCQkJ Ki8KCmNscmJpdChzdHJpbmcsbWFzayxzdHJsZW4pCgppbnQJc3RybGVuOwkJ CS8qIGxlbmd0aCBvZiBzdHJpbmcJCQkqLwpjaGFyCXN0cmluZ1tdLAkJLyog c3RyaW5nIGluIHdoaWNoIGJpdChzKSBhcmUgY2xlYXJlZAkqLwoJbWFza1td OwkJCS8qIG1hc2sgb2YgYml0cyB0byBjbGVhcgkJKi8KewoJaW50CWksCQkv KiBsb29wIHZhcmlhYmxlCQkJKi8KCQlpbnRzdHIsCQkvKiBpbnRlZ2VyIHZh bHVlIG9mIG9uZSBjaGFyIG9mIHN0cmluZwkqLwoJCWludG1zazsJCS8qIGlu dGVnZXIgdmFsdWUgb2Ygb25lIGNoYXIgb2YgbWFzawkqLwoKCWZvcihpPTA7 aTxzdHJsZW47aSsrKXsKCQlzc2NhbmYoJnN0cmluZ1tpXSwiJTF4IiwmaW50 c3RyKTsKCQlzc2NhbmYoJm1hc2tbaV0sIiUxeCIsJmludG1zayk7CgkJaW50 c3RyPWludHN0ciAmIGludG1zazsJCS8qIGNsZWFyIGJpdChzKQkJKi8KCQlz dHJpbmdbaV09aGV4c2V0W2ludHN0cl07Cgl9Cn0vKgwqLwovKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLwovKgkJCQkJCQkJCSovCi8qCQkJc3Vicm91 dGluZSB0c3RiaXQJCQkJKi8KLyoJCQkJCQkJCQkqLwovKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLwoKLyogVGhpcyBzdWJyb3V0aW5lIHJldHVybnMg U0VUIGlmIGF0IGxlYXN0IG9uZSBiaXQgKHNldCBpbiBtYXNrKSBpcwkqLwov KiBhbHNvIHNldCBpbiBzdHJpbmcsIGVsc2UgaXQgcmV0dXJucyBSRVNFVC4J CQkJKi8KCnRzdGJpdChzdHJpbmcsbWFzayxzdHJsZW4pCgppbnQJc3RybGVu OwkJCS8qIGxlbmd0aCBvZiBzdHJpbmcJCQkqLwpjaGFyCXN0cmluZ1tdLAkJ Lyogc3RyaW5nIGluIHdoaWNoIGJpdCBpcyB0ZXN0ZWQJKi8KCW1hc2tbXTsJ CQkvKiBtYXNrIG9mIGJpdHMgdG8gdGVzdAkJCSovCnsKCWludAlpLAkJLyog bG9vcCB2YXJpYWJsZQkJCSovCgkJaW50c3RyLAkJLyogaW50ZWdlciB2YWx1 ZSBvZiBvbmUgY2hhciBvZiBzdHJpbmcJKi8KCQlpbnRtc2s7CQkvKiBpbnRl Z2VyIHZhbHVlIG9mIG9uZSBjaGFyIG9mIG1hc2sJKi8KCglmb3IoaT0wO2k8 c3RybGVuO2krKyl7CgkJc3NjYW5mKCZzdHJpbmdbaV0sIiUyeCIsJmludHN0 cik7CgkJc3NjYW5mKCZtYXNrW2ldLCIlMngiLCZpbnRtc2spOwoJCWlmKChp bnRzdHIgJiBpbnRtc2spIT0wKQkvKiB0ZXN0IGJpdAkJKi8KCQkJcmV0dXJu KFNFVCk7CQkvKiBhdCBsZWFzdCBvbmUgYml0IHNldAkqLwoJfQoJcmV0dXJu KFJFU0VUKTsJCQkJLyogbm8gYml0IHNldAkJKi8KfS8qDCovCi8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCi8qCQkJCQkJCQkJKi8KLyoJCQlzdWJy b3V0aW5lIGludmJpdAkJCQkqLwovKgkJCQkJCQkJCSovCi8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCgovKiBUaGlzIHN1YnJvdXRpbmUgaW52ZXJ0 cyB0aGUgYml0cyBvZiBhIHN0cmluZwkJCQkqLwoKaW52Yml0KHN0cmluZyxt YXNrLHN0cmxlbikKCmludAlzdHJsZW47CQkJLyogbGVuZ3RoIG9mIHN0cmlu ZwkJCSovCmNoYXIJc3RyaW5nW10sCQkvKiBzdHJpbmcgaW4gd2hpY2ggYml0 KHMpIGFyZSBzZXQJKi8KCW1hc2tbXTsJCQkvKiBtYXNrIG9mIGJpdHMgdG8g aW52ZXJ0CQkqLwp7CglpbnQJaSwJCS8qIGxvb3AgdmFyaWFibGUJCQkqLwoJ CWludHN0ciwJCS8qIGludGVnZXIgdmFsdWUgb2Ygb25lIGNoYXIgb2Ygc3Ry aW5nCSovCgkJaW50bXNrOwkJLyogaW50ZWdlciB2YWx1ZSBvZiBvbmUgY2hh ciBvZiBtYXNrCSovCgoJZm9yKGk9MDtpPHN0cmxlbjtpKyspewoJCXNzY2Fu Zigmc3RyaW5nW2ldLCIlMXgiLCZpbnRzdHIpOwoJCXNzY2FuZigmbWFza1tp XSwiJTF4IiwmaW50bXNrKTsKCQlpbnRzdHI9aW50c3RyIF4gaW50bXNrOwoJ CXN0cmluZ1tpXT1oZXhzZXRbaW50c3RyXTsJLyogaW52ZXJ0IGJpdHMJCSov Cgl9Cn0vKgwqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKgkJ CQkJCQkJCSovCi8qCQkJc3Vicm91dGluZSBpbnRoZXgJCQkJKi8KLyoJCQkJ CQkJCQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyogVGhp cyBzdWJyb3V0aW5lIGNvbnZlcnRzIGFuIGludGVnZXIgdmFsdWUgaW50byBh IGhleGFkZWNpbWFsIHN0cmluZwkqLwoKaW50aGV4KGludHZhbCxoZXh2YWws Y2hhcm5vKQoKaW50CWludHZhbCwJCQkvKiBpbnRlZ2VyIHZhbHVlCQkJKi8K CWNoYXJubzsJCQkvKiBudW1iZXIgb2YgaGV4YWRlY2ltYWwgY2hhcmFjdGVy cwkqLwpjaGFyCWhleHZhbFtdOwkJLyogaGV4YWRlY2ltYWwgdmFsdWUJCQkq Lwp7CglpbnQJaSwJCS8qIGxvb3AgdmFyaWFibGUJCQkqLwoJCXg9Y2hhcm5v LTEsCS8qIGNvdW50IHZhcmlhYmxlCQkJKi8KCQlyZXN0PWludHZhbCwJLyog cmVzdCB2YWx1ZQkJCQkqLwoJCWRldmlkOwkJLyogZGV2aXNvciB2YWx1ZQkJ CSovCgoJZm9yKGk9eDtpPj0wO2ktLSl7CgkJZGV2aWQ9cmVzdC9oZXhwb3dl cltpXTsJCS8qIGRlZmluZSBkZXZpc29yCSovCgkJaGV4dmFsW3gtaV09aGV4 c2V0W2RldmlkXTsJLyogZGVmaW5lIGhleC4gY2hhcmFjdGVyKi8KCQlyZXN0 PXJlc3QtZGV2aWQqaGV4cG93ZXJbaV07CS8qIGRlZmluZSByZXN0CQkqLwoJ fQp9LyoMKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoJCQkJ CQkJCQkqLwovKgkJCXN1YnJvdXRpbmUgZXJyb3IJCQkJKi8KLyoJCQkJCQkJ CQkqLwovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyogVGhpcyBz dWJyb3V0aW5lIHByaW50cyBhbiBlcnJvcm1lc3NhZ2Ugb24gdGhlIHN0YW5k YXJkIGVycm9yZmlsZS4JKi8KCmVycm9yKGVycm1lczEsZXJybm8sZXJybWVz MikKCmNoYXIJZXJybWVzMVtdLAoJZXJybWVzMltdOwppbnQJZXJybm87CnsK CWZwcmludGYoc3RkZXJyLCIlcyIsZXJybWVzMSk7CQkvKiBmaXJzdCBzdHJp bmcJCSovCglpZihlcnJubyE9IC0xKQoJCWZwcmludGYoc3RkZXJyLCIlZCIs ZXJybm8pOwkvKiBkZWNpbWFsIHZhbHVlCSovCglpZihlcnJtZXMyWzBdIT0n XDAnKQoJCWZwcmludGYoc3RkZXJyLCIlcyIsZXJybWVzMik7CS8qIHNlY29u ZCBzdHJpbmcJKi8KfS8qDCovCi8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovCi8qCQkJCQkJCQkJKi8KLyoJCQlzdWJyb3V0aW5lIGhlbHBmaWxlCQkJ CSovCi8qCQkJCQkJCQkJKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KCi8qIFRoaXMgc3Vicm91dGluZSBwcmludHMgYSBzaG9ydCB1c2VycyBn dWlkZSB0byBoZWxwIHRoZSB1c2VyCQkqLwoKaGVscGZpbGUoKQp7CiAgRklM RSAqZnBoOwogIGludCBsaW5lY250ID0gMDsKICBjaGFyIGluX2xpbmVbTUFY SU5dLCBubFsyXTsKCiAgaWYgKChmcGggPSBmb3BlbigiL3Vzci9tYW4vbWlw ZG93bi5tYW4iLCJyIikpPT0gTlVMTCl7CiAgICBwcmludGYoIlNvcnJ5LCBu byBpbmZvcm1hdGlvbiBhdmFpbGFibGUuXG4iKTsKICAgIHJldHVybjsKICB9 CiAgd2hpbGUoZmdldHMoJmluX2xpbmVbMF0sTUFYSU4sZnBoKSkgewogICAg aWYoKmluX2xpbmUhPScqJyYmKmluX2xpbmUhPScuJyl7CiAgICAgIHByaW50 ZigiJXMiLGluX2xpbmUpOwogICAgICBsaW5lY250Kys7CiAgICAgIGlmIChs aW5lY250ID09IDIyKSB7CglwcmludGYoIlBSRVNTIFJFVFVSTiBvciBxKD1x dWl0KTogIik7CglnZXRzKCZubFswXSk7CiAJaWYgKG5sWzBdID09ICdxJykK CSAgYnJlYWs7CgllbHNlCgkgIGxpbmVjbnQgPSAwOwogICAgICB9CiAgICB9 CiAgfQogIGZjbG9zZShmcGgpOwp9Cg== --0-816682262-1004106539=:48781 Content-Type: application/x-unknown; name="mipdown.err" Content-Transfer-Encoding: base64 Content-Description: mipdown.err Content-Disposition: attachment; filename="mipdown.err" bWlwZG93bi5jOiBJbiBmdW5jdGlvbiBgdGVybXN0JzoNCm1pcGRvd24uYzo5 NzQ6IGBUSU9DRVhDTCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMg ZnVuY3Rpb24pDQptaXBkb3duLmM6OTc0OiAoRWFjaCB1bmRlY2xhcmVkIGlk ZW50aWZpZXIgaXMgcmVwb3J0ZWQgb25seSBvbmNlDQptaXBkb3duLmM6OTc0 OiBmb3IgZWFjaCBmdW5jdGlvbiBpdCBhcHBlYXJzIGluLikNCm1pcGRvd24u Yzo5NzY6IGludmFsaWQgdXNlIG9mIHVuZGVmaW5lZCB0eXBlIGBzdHJ1Y3Qg c2d0dHliJw0KbWlwZG93bi5jOjk3NzogaW52YWxpZCB1c2Ugb2YgdW5kZWZp bmVkIHR5cGUgYHN0cnVjdCBzZ3R0eWInDQptaXBkb3duLmM6OTc4OiBpbnZh bGlkIHVzZSBvZiB1bmRlZmluZWQgdHlwZSBgc3RydWN0IHNndHR5YicNCm1p cGRvd24uYzo5Nzk6IGludmFsaWQgdXNlIG9mIHVuZGVmaW5lZCB0eXBlIGBz dHJ1Y3Qgc2d0dHliJw0KbWlwZG93bi5jOjk4MDogaW52YWxpZCB1c2Ugb2Yg dW5kZWZpbmVkIHR5cGUgYHN0cnVjdCBzZ3R0eWInDQptaXBkb3duLmM6OTgx OiBgVElPQ1NFVFAnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1 bmN0aW9uKQ0KbWlwZG93bi5jOiBJbiBmdW5jdGlvbiBgZmluaXNoJzoNCm1p cGRvd24uYzoxMDE5OiBgVElPQ05YQ0wnIHVuZGVjbGFyZWQgKGZpcnN0IHVz ZSBpbiB0aGlzIGZ1bmN0aW9uKQ0KbWlwZG93bi5jOiBBdCB0b3AgbGV2ZWw6 DQptaXBkb3duLmM6NzA6IHN0b3JhZ2Ugc2l6ZSBvZiBgbGt0ZXJtJyBpc24n dCBrbm93bg0K --0-816682262-1004106539=:48781--