Date: Sun, 25 Mar 2007 15:50:12 GMT From: nemo <nemoliu@gmail.com> To: freebsd-ports-bugs@FreeBSD.org Subject: Re: ports/110768: [UPDATE]java/jboss4:fix some FATAL error noticed by portlint -C Message-ID: <200703251550.l2PFoCF6079774@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR ports/110768; it has been noted by GNATS. From: nemo <nemoliu@gmail.com> To: bug-followup@FreeBSD.org, nemoliu@gmail.com, "Pav Lucistnik" <pav@freebsd.org> Cc: Subject: Re: ports/110768: [UPDATE]java/jboss4:fix some FATAL error noticed by portlint -C Date: Sun, 25 Mar 2007 23:43:15 +0800 ------=_Part_225929_4138004.1174837395459 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline I rewrite the patch .this one should be better. such as: change USE_RC_SUBR value to jboss4.sh; use ant to build src; use SUB_FILES and SUB_LIST replace use sed manaully. ------=_Part_225929_4138004.1174837395459 Content-Type: text/plain; name=patch-jboss4.txt; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_ezpntd0q Content-Disposition: attachment; filename="patch-jboss4.txt" SW5kZXg6IE1ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9ob21lL25jdnMvcG9ydHMvamF2 YS9qYm9zczQvTWFrZWZpbGUsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzgKZGlmZiAtdSAtcjEu MzggTWFrZWZpbGUKLS0tIE1ha2VmaWxlCTggTm92IDIwMDYgMTY6MTk6MTcgLTAwMDAJMS4zOAor KysgTWFrZWZpbGUJMjUgTWFyIDIwMDcgMTU6MjY6NDcgLTAwMDAKQEAgLTIsNyArMiw3IEBACiAj IERhdGUgY3JlYXRlZDogICAgICAgICAgICAgICAgICAxNiBBcHJpbCAyMDAyCiAjIFdob206ICAg ICAgICAgICAgICAgICAgICAgICAgICBFcm5zdCBkZSBIYWFuIDx6bmVyZEBGcmVlQlNELm9yZz4K ICMKLSMgJEZyZWVCU0Q6IHBvcnRzL2phdmEvamJvc3M0L01ha2VmaWxlLHYgMS4zOCAyMDA2LzEx LzA4IDE2OjE5OjE3IHJhZmFuIEV4cCAkCisjICRGcmVlQlNEJAogIwogCiBQT1JUTkFNRT0JJHtB UFBfVElUTEU6TH0KQEAgLTIxLDggKzIxLDExIEBACiBMQVRFU1RfTElOSz0JamJvc3M0CiBVU0Vf SkFWQT0JeWVzCiBKQVZBX1ZFUlNJT049CTEuNCsKK1VTRV9BTlQ9CXllcworTUFLRV9BUkdTPQkt YnVpbGRmaWxlIGJ1aWxkL2J1aWxkLnhtbAogCi1VU0VfUkNfU1VCUj0JWUVTCitVU0VfUkNfU1VC Uj0JamJvc3M0LnNoCitTVUJfRklMRVM9CXBrZy1pbnN0YWxsIHBrZy1kZWluc3RhbGwgcGtnLW1l c3NhZ2UgZGFlbW9uY3RsLjEgZGFlbW9uY3RsLmMKIAogLmlmICFkZWZpbmVkKE5PUE9SVERPQ1Mp CiBQT1JURE9DUz0JKgpAQCAtNDgsNTUgKzUxLDQ4IEBACiBKQVZBX09QVFM9CiBKQVZBX0NQPQli aW4vcnVuLmphcjoke0pBVkFfSE9NRX0vbGliL3Rvb2xzLmphcgogSkFWQV9NQUlOPQlvcmcuamJv c3MuTWFpbgotREFFTU9OQ1RMX0RJUj0JJHtGSUxFU0RJUn0KLURBRU1PTkNUTF9GSUxFUz1kYWVt b25jdGwuYyBkYWVtb25jdGwuMSBzdGFydHVwLnNoIHBrZy1tZXNzYWdlCiBNQU4xPQkJJHtDT05U Uk9MX1NDUklQVF9OQU1FfS4xCiAKIEpCT1NTT1VUUFVUPQkke1dSS1NSQ30vYnVpbGQvb3V0cHV0 LyR7UE9SVE5BTUV9LSR7UE9SVFZFUlNJT046Uy8ucy9TUC99CiBBUFBfSE9NRV9GSUxFUz0JYmlu IGNsaWVudCBsaWIgc2VydmVyCiAKIFBMSVNUX0ZJTEVTPQkke0NPTlRST0xfU0NSSVBUOlMsXiR7 UFJFRklYfS8sLH0gXAotCQkke1NUQVJUVVBfU0NSSVBUOlMsXiR7UFJFRklYfS8sLH0gXAogCQkk e1NURE9VVF9MT0c6UyxeJHtQUkVGSVh9LywsfSBcCiAJCSR7U1RERVJSX0xPRzpTLF4ke1BSRUZJ WH0vLCx9CiAKLVBLR01FU1NBR0U9CSR7V1JLRElSfS9wa2ctbWVzc2FnZS5mbXQKK1BLR01FU1NB R0U9CSR7V1JLRElSfS9wa2ctbWVzc2FnZQorCitTVUJfTElTVD0JQVBQX0hPTUU9JHtBUFBfSE9N RX0gXAorCQlBUFBfU0hPUlROQU1FPSR7QVBQX1NIT1JUTkFNRX0gXAorCQlBUFBfVElUTEU9JHtB UFBfVElUTEV9IFwKKwkJQ09OVFJPTF9TQ1JJUFQ9JHtDT05UUk9MX1NDUklQVH0gXAorCQlDT05U Uk9MX1NDUklQVF9NQU5QQUdFX1RJVExFPSR7Q09OVFJPTF9TQ1JJUFRfTUFOUEFHRV9USVRMRX0g XAorCQlDT05UUk9MX1NDUklQVF9OQU1FPSR7Q09OVFJPTF9TQ1JJUFRfTkFNRX0gXAorCQlHUk9V UD0ke0dST1VQfSBcCisJCUpBVkE9JHtKQVZBfSBcCisJCUpBVkFfQ1A9JHtKQVZBX0NQfSBcCisJ CUpBVkFfSE9NRT0ke0pBVkFfSE9NRX0gXAorCQlKQVZBX01BSU49JHtKQVZBX01BSU59IFwKKwkJ SkFWQV9PUFRTPSR7SkFWQV9PUFRTfSBcCisJCUpBVkFfUE9SVF9WRVJTSU9OPSR7SkFWQV9QT1JU X1ZFUlNJT059IFwKKwkJSkFWQV9QT1JUX09TX0RFU0NSSVBUSU9OPSR7SkFWQV9QT1JUX09TX0RF U0NSSVBUSU9OfSBcCisJCUpBUl9GSUxFPSR7SkFSX0ZJTEV9IFwKKwkJTE9HX0RJUj0ke0xPR19E SVJ9IFwKKwkJUElEX0ZJTEU9JHtQSURfRklMRX0gXAorCQlQS0dOQU1FPSR7UEtHTkFNRX0gXAor CQlQT1JUTkFNRT0ke1BPUlROQU1FfSBcCisJCVBPUlRWRVJTSU9OPSR7UE9SVFZFUlNJT059IFwK KwkJUFJFRklYPSR7UFJFRklYfSBcCisJCVNUQVJUVVBfU0NSSVBUPSR7U1RBUlRVUF9TQ1JJUFR9 IFwKKwkJU1RERVJSX0xPRz0ke1NUREVSUl9MT0d9IFwKKwkJU1RET1VUX0xPRz0ke1NURE9VVF9M T0d9IFwKKwkJU1RPUF9USU1FT1VUPSR7U1RPUF9USU1FT1VUfSBcCisJCVVTRVI9JHtVU0VSfQog CiAuaW5jbHVkZSA8YnNkLnBvcnQucHJlLm1rPgogCi1kby1jb25maWd1cmU6Ci0JQChjZCAke0RB RU1PTkNUTF9ESVJ9ICYmICR7Q1B9ICR7REFFTU9OQ1RMX0ZJTEVTfSAke1dSS0RJUn0pCi0JQChj ZCAke1dSS0RJUn0gJiYgJHtSRUlOUExBQ0VfQ01EfSBcCi0JCS1lICJzfCUlUkNfU1VCUiUlfCR7 UkNfU1VCUn18ZzsiIFwKLQkJLWUgInN8JSVBUFBfSE9NRSUlfCR7QVBQX0hPTUV9fGc7IiBcCi0J CS1lICJzfCUlQVBQX1NIT1JUTkFNRSUlfCR7QVBQX1NIT1JUTkFNRX18ZzsiIFwKLQkJLWUgInN8 JSVBUFBfVElUTEUlJXwke0FQUF9USVRMRX18ZzsiIFwKLQkJLWUgInN8JSVDT05UUk9MX1NDUklQ VCUlfCR7Q09OVFJPTF9TQ1JJUFR9fGc7IiBcCi0JCS1lICJzfCUlQ09OVFJPTF9TQ1JJUFRfTUFO UEFHRV9USVRMRSUlfCR7Q09OVFJPTF9TQ1JJUFRfTUFOUEFHRV9USVRMRX18ZzsiIFwKLQkJLWUg InN8JSVDT05UUk9MX1NDUklQVF9OQU1FJSV8JHtDT05UUk9MX1NDUklQVF9OQU1FfXxnOyIgXAot CQktZSAic3wlJUdST1VQJSV8JHtHUk9VUH18ZzsiIFwKLQkJLWUgInN8JSVKQVZBJSV8JHtKQVZB fXxnOyIgXAotCQktZSAic3wlJUpBVkFfQ1AlJXwke0pBVkFfQ1B9fGc7IiBcCi0JCS1lICJzfCUl SkFWQV9IT01FJSV8JHtKQVZBX0hPTUV9fGc7IiBcCi0JCS1lICJzfCUlSkFWQV9NQUlOJSV8JHtK QVZBX01BSU59fGc7IiBcCi0JCS1lICJzfCUlSkFWQV9PUFRTJSV8JHtKQVZBX09QVFN9fGc7IiBc Ci0JCS1lICJzfCUlSkFWQV9QT1JUX1ZFUlNJT04lJXwke0pBVkFfUE9SVF9WRVJTSU9OfXxnOyIg XAotCQktZSAic3wlJUpBVkFfUE9SVF9PU19ERVNDUklQVElPTiUlfCR7SkFWQV9QT1JUX09TX0RF U0NSSVBUSU9OfXxnOyIgXAotCQktZSAic3wlJUpBUl9GSUxFJSV8JHtKQVJfRklMRX18ZzsiIFwK LQkJLWUgInN8JSVMT0dfRElSJSV8JHtMT0dfRElSfXxnOyIgXAotCQktZSAic3wlJVBJRF9GSUxF JSV8JHtQSURfRklMRX18ZzsiIFwKLQkJLWUgInN8JSVQS0dOQU1FJSV8JHtQS0dOQU1FfXxnOyIg XAotCQktZSAic3wlJVBPUlROQU1FJSV8JHtQT1JUTkFNRX18ZzsiIFwKLQkJLWUgInN8JSVQT1JU VkVSU0lPTiUlfCR7UE9SVFZFUlNJT059fGc7IiBcCi0JCS1lICJzfCUlUFJFRklYJSV8JHtQUkVG SVh9fGc7IiBcCi0JCS1lICJzfCUlU1RBUlRVUF9TQ1JJUFQlJXwke1NUQVJUVVBfU0NSSVBUfXxn OyIgXAotCQktZSAic3wlJVNUREVSUl9MT0clJXwke1NUREVSUl9MT0d9fGc7IiBcCi0JCS1lICJz fCUlU1RET1VUX0xPRyUlfCR7U1RET1VUX0xPR318ZzsiIFwKLQkJLWUgInN8JSVTVE9QX1RJTUVP VVQlJXwke1NUT1BfVElNRU9VVH18ZzsiIFwKLQkJLWUgInN8JSVVU0VSJSV8JHtVU0VSfXxnOyIg JHtEQUVNT05DVExfRklMRVN9KQotCUAke0ZNVH0gLXMgODAgJHtXUktESVJ9L3BrZy1tZXNzYWdl ID4ke1BLR01FU1NBR0V9CiAKLXBvc3QtY29uZmlndXJlOgorcG9zdC1wYXRjaDoKIAlAJHtFQ0hP X01TR30gIkluc3RhbGxhdGlvbiBzZXR0aW5nczoiCiAJQCR7RUNIT19NU0d9ICIgICBEZXN0aW5h dGlvbiBkaXJlY3Rvcnk6ICAgICR7QVBQX0hPTUV9IgogCUAke0VDSE9fTVNHfSAiICAgQ29udHJv bCBwcm9ncmFtIGxvY2F0aW9uOiAke0NPTlRST0xfU0NSSVBUfSIKQEAgLTExMCwyMSArMTA2LDE4 IEBACiAJQCR7RUNIT19NU0d9ICIgICBTdGFydGluZyBhZnRlciBpbnN0YWxsOiAgICR7QVVUT19T VEFSVH0iCiAJQCR7RUNIT19NU0d9ICIgICBTdG9wIHRpbWUtb3V0OiAgICAgICAgICAgICR7U1RP UF9USU1FT1VUfSBzZWMuIgogCi1kby1idWlsZDoKLQkoY2QgJHtXUktESVJ9ICYmICR7Q0N9ICR7 Q0ZMQUdTfSAtbyAke0NPTlRST0xfU0NSSVBUX05BTUV9IGRhZW1vbmN0bC5jKQotCShjZCAke1dS S1NSQ30vYnVpbGQgJiYgJHtTRVRFTlZ9IEpBVkFfSE9NRT0iJHtKQVZBX0hPTUV9IiBQQVRIPSIk e0pBVkFfSE9NRX0vYmluOiR7UEFUSH0iICR7U0h9IGJ1aWxkLnNoKQogCiBwcmUtaW5zdGFsbDoK IAlAJHtTRVRFTlZ9IFBLR19QUkVGSVg9JHtQUkVGSVh9ICR7U0h9ICR7UEtHSU5TVEFMTH0gJHtQ S0dOQU1FfSBQUkUtSU5TVEFMTAogCiBkby1pbnN0YWxsOgorCWNkICR7V1JLRElSfSAmJiAke0ND fSAke0NGTEFHU30gLW8gJHtDT05UUk9MX1NDUklQVF9OQU1FfSBkYWVtb25jdGwuYwogCSR7TUtE SVJ9ICR7QVBQX0hPTUV9ICYmICR7Q0hPV059ICR7VVNFUn06JHtHUk9VUH0gJHtBUFBfSE9NRX0K IAkke01LRElSfSAke0xPR19ESVJ9ICYmICR7Q0hPV059ICR7VVNFUn06JHtHUk9VUH0gJHtMT0df RElSfQogCShjZCAke0pCT1NTT1VUUFVUfSAmJiAke0ZJTkR9ICR7QVBQX0hPTUVfRklMRVN9IHxc CiAJCSR7Q1BJT30gLXBkbXUgLVIgJHtVU0VSfToke0dST1VQfSAke0FQUF9IT01FfSkKIAkke0lO U1RBTEx9IC1vICR7VVNFUn0gLWcgJHtHUk9VUH0gLW0gMDY3NTRcCiAJCSR7V1JLRElSfS8ke0NP TlRST0xfU0NSSVBUX05BTUV9ICR7Q09OVFJPTF9TQ1JJUFR9Ci0JJHtJTlNUQUxMX1NDUklQVH0g JHtXUktESVJ9L3N0YXJ0dXAuc2ggJHtTVEFSVFVQX1NDUklQVH0KIAkke0lOU1RBTEx9IC1vICR7 VVNFUn0gLWcgJHtHUk9VUH0gLW0gMDY0MCAvZGV2L251bGwgJHtTVERPVVRfTE9HfQogCSR7SU5T VEFMTH0gLW8gJHtVU0VSfSAtZyAke0dST1VQfSAtbSAwNjQwIC9kZXYvbnVsbCAke1NUREVSUl9M T0d9CiAJJHtJTlNUQUxMfSAtbyAke1VTRVJ9IC1nICR7R1JPVVB9IC1tIDA2NDAgL2Rldi9udWxs ICR7UElEX0ZJTEV9CkluZGV4OiBwa2ctZGVpbnN0YWxsCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IHBr Zy1kZWluc3RhbGwKZGlmZiAtTiBwa2ctZGVpbnN0YWxsCi0tLSBwa2ctZGVpbnN0YWxsCTE0IEp1 bCAyMDAzIDEwOjAzOjEzIC0wMDAwCTEuMgorKysgL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6 MDAgLTAwMDAKQEAgLTEsMzUgKzAsMCBAQAotIyEvYmluL3NoCi0jCi0jIFRoaXMgc2NyaXB0IGRv ZXMgdGhlIGZvbGxvd2luZy4KLSMKLSMgKiBDaGVja3MgaWYgdGhlIEpCb3NzIFBJRCBmaWxlIGV4 aXN0cy4gSWYgaXQgZG9lcywgaXQga2lsbHMgdGhlCi0jICAgSkJvc3MgcHJvY2VzcyBhbmQgcmVt b3ZlcyB0aGUgUElEIGZpbGUuCi0jCi0jICRGcmVlQlNEOiBwb3J0cy9qYXZhL2pib3NzNC9wa2ct ZGVpbnN0YWxsLHYgMS4yIDIwMDMvMDcvMTQgMTA6MDM6MTMgZGVzIEV4cCAkCi0jCi0KLSMgTWFr ZSBzdXJlIHdlJ3JlIGluIHRoZSByaWdodCBzdGFnZSBvZiB0aGUgcHJvY2VzcwotaWYgWyAiJDIi ID0gIkRFSU5TVEFMTCIgXTsgdGhlbgotCi0JIyBLaWxsIEpCb3NzIGlmIGl0IGlzIHN0aWxsIHJ1 bm5pbmcKLQlQSURfRklMRT0vdmFyL3J1bi9qYm9zcy5waWQKLQlpZiBbIC1zICR7UElEX0ZJTEV9 IF07IHRoZW4KLQkJUElEPWBjYXQgJHtQSURfRklMRX1gCi0JCWVjaG8gLW4gIj4+IEtpbGxpbmcg SkJvc3MgU2VydmVyIHByb2Nlc3MgKCR7UElEfSkuLi4iCi0JCS9iaW4va2lsbCAke1BJRH0gPiAv ZGV2L251bGwgMj4gL2Rldi9udWxsCi0JCWlmIFsgJD8gLWVxIDAgXTsgdGhlbgotCQkJZWNobyAi IFsgRE9ORSBdIgotCQllbHNlCi0JCQllY2hvICIgWyBGQUlMRUQgXSIKLQkJZmkKLQkJZWNobyAt biAiPj4gUmVtb3ZpbmcgUElEIGZpbGUgKCR7UElEX0ZJTEV9KS4uLiIKLQkJcm0gJHtQSURfRklM RX0gPiAvZGV2L251bGwgMj4gL2Rldi9udWxsCi0JCWlmIFsgJD8gLWVxIDAgXTsgdGhlbgotCQkJ ZWNobyAiIFsgRE9ORSBdIgotCQllbHNlCi0JCQllY2hvICIgWyBGQUlMRUQgXSIKLQkJZmkKLQlm aQotZmkKLQotZXhpdCAwCkluZGV4OiBwa2ctaW5zdGFsbAo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBw a2ctaW5zdGFsbApkaWZmIC1OIHBrZy1pbnN0YWxsCi0tLSBwa2ctaW5zdGFsbAkyNiBBcHIgMjAw MiAyMTo1NDoxNSAtMDAwMAkxLjEKKysrIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0w MDAwCkBAIC0xLDQ2ICswLDAgQEAKLSMhL2Jpbi9zaAotIwotIyBDaGVja3MgaWYgdGhlICd3d3cn IHVzZXIgYW5kIGdyb3VwIGV4aXN0LiBJZiB0aGV5IGRvbid0LCB0aGVuCi0jIGFuIGF0dGVtcHQg aXMgbWFkZSB0byBjcmVhdGUgYm90aC4KLSMKLSMgJEZyZWVCU0Q6IHBvcnRzL2phdmEvamJvc3M0 L3BrZy1pbnN0YWxsLHYgMS4xIDIwMDIvMDQvMjYgMjE6NTQ6MTUgem5lcmQgRXhwICQKLSMKLQot IyBNYWtlIHN1cmUgd2UncmUgY2FsbGVkIGR1cmluZyB0aGUgJ21ha2UgaW5zdGFsbCcgcHJvY2Vz cwotaWYgWyAiJDIiICE9ICJQUkUtSU5TVEFMTCIgXTsgdGhlbgotICAgIGV4aXQgMAotZmkKLQot IyBTZXQgc29tZSBjb25zdGFudHMKLVVTRVI9d3d3Ci1HUk9VUD0ke1VTRVJ9Ci1VSUQ9ODAKLUdJ RD0ke1VJRH0KLQotIyBTZWUgaWYgdGhlIGdyb3VwIGFscmVhZHkgZXhpc3RzCi1pZiAhIHB3IGdy b3Vwc2hvdyAiJHtHUk9VUH0iIDI+L2Rldi9udWxsIDE+JjI7IHRoZW4KLQotCSMgSWYgbm90LCB0 cnkgdG8gY3JlYXRlIGl0Ci0JaWYgcHcgZ3JvdXBhZGQgJHtHUk9VUH0gLWcgJHtHSUR9OyB0aGVu Ci0JCWVjaG8gIkFkZGVkIGdyb3VwIFwiJHtHUk9VUH1cIi4iCi0JZWxzZQotCQllY2hvICJBZGRp bmcgZ3JvdXAgXCIke0dST1VQfVwiIGZhaWxlZC4uLiIKLQkJZXhpdCAxCi0JZmkKLWZpCi0KLSMg U2VlIGlmIHRoZSB1c2VyIGFscmVhZHkgZXhpc3RzCi1pZiAhIHB3IHVzZXJzaG93ICIke1VTRVJ9 IiAyPi9kZXYvbnVsbCAxPiYyOyB0aGVuCi0KLQkjIElmIG5vdCwgdHJ5IHRvIGNyZWF0ZSBpdAot CWlmIHB3IHVzZXJhZGQgJHtVU0VSfSAtdSAke1VJRH0gLWcgJHtHUk9VUH0gLWggLSBcCi0JCS1z ICIvc2Jpbi9ub2xvZ2luIiAtZCAiL25vbmV4aXN0ZW50IiBcCi0JCS1jICJXb3JsZCBXaWRlIFdl YiBPd25lciI7IFwKLQl0aGVuCi0JCWVjaG8gIkFkZGVkIHVzZXIgXCIke1VTRVJ9XCIuIgotCWVs c2UKLQkJZWNobyAiQWRkaW5nIHVzZXIgXCIke1VTRVJ9XCIgZmFpbGVkLi4uIgotCQlleGl0IDEK LQlmaQotZmkKLWV4aXQgMApJbmRleDogZmlsZXMvZGFlbW9uY3RsLjEKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg ZmlsZTogZmlsZXMvZGFlbW9uY3RsLjEKZGlmZiAtTiBmaWxlcy9kYWVtb25jdGwuMQotLS0gZmls ZXMvZGFlbW9uY3RsLjEJMjEgSnVuIDIwMDQgMTY6NDI6NTkgLTAwMDAJMS4xCisrKyAvZGV2L251 bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMApAQCAtMSw3OCArMCwwIEBACi0uRGQgRmVicnVh cnkgMjEsIDIwMDIKLS5EdCAlJUNPTlRST0xfU0NSSVBUX01BTlBBR0VfVElUTEUlJSAxCi0uT3Mg RnJlZUJTRAotLlNoIE5BTUUKLS5ObSAlJUNPTlRST0xfU0NSSVBUX05BTUUlJQotLk5kICUlQVBQ X1RJVExFJSUgc2VydmVyIGNvbnRyb2wgaW50ZXJmYWNlCi0uU2ggU1lOT1BTSVMKLS5ObQotLk9w IEZsIGphdmEtb3B0aW9ucwotLkFyIHtzdGFydHxyZXN0YXJ0fHN0b3B9Ci0uU2ggREVTQ1JJUFRJ T04KLVRoZQotLk5tCi1wcm9ncmFtIHByb3ZpZGVzIGFuIHJlc3RyaWN0ZWQgaW50ZXJmYWNlIHRv IHRoZSAlJUFQUF9USVRMRSUlCi1hcHBsaWNhdGlvbiBzZXJ2ZXIuIFRoZQotLk5tCi1wcm9ncmFt IGlzIG9ubHkgYWNjZXNzaWJsZSB0byB1c2VycyBpbiB0aGUgJ3d3dycgZ3JvdXAsIGFuZCB3aWxs Ci1vbmx5IGludm9rZSB0aGUgJSVKQVZBX1BPUlRfT1NfREVTQ1JJUFRJT04lJSAlJUpBVkFfUE9S VF9WRVJTSU9OJSUgSlZNLgotLlBwCi1BbnkgSmF2YSBvcHRpb25zIGxpc3RlZCBhcmUgaGFuZGVk IG9mZiBkaXJlY3RseSB0byB0aGUgSlZNLiBBbnkKLWNsYXNzcGF0aCBvcHRpb25zIHdpbGwgYmUg aWdub3JlZC4KLS5QcAotVGhlIHByb2dyYW0gZXhwZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgZm9s bG93aW5nIHRlcm1pbmF0aW5nIGNvbW1hbmRzOgotLkJsIC10YWcgLXdpZHRoIGluZGVudAotLkl0 IEFyIHN0YXJ0Ci1TdGFydCAlJUFQUF9USVRMRSUlLCBpZiBpdCBpcyBub3QgYWxyZWFkeSBydW5u aW5nLgotLkl0IEFyIHJlc3RhcnQKLVJlc3RhcnQgJSVBUFBfVElUTEUlJS4gSWYgaXQgaXMgYWxy ZWFkeSBydW5uaW5nLCB0aGVuIGl0IHdpbGwgYmUgc3RvcHBlZCBhbmQKLXRoZW4gc3RhcnRlZCBy aWdodCBhZnRlciB0aGF0LiBPdGhlcndpc2UgaXQgd2lsbCBqdXN0IGJlIHN0YXJ0ZWQgdXAuCi0u SXQgQXIgc3RvcAotU3RvcCAlJUFQUF9USVRMRSUlLCBpZiBpdCBpcyBhY3R1YWxseSBydW5uaW5n LgotLkVsCi0uU2ggRVJST1JTCi1UaGUgZm9sbG93aW5nIGVycm9yIGNvbmRpdGlvbnMgYXJlIGRl dGVjdGVkLiBUaGV5IHdpbGwgYmUgY2hlY2tlZCBpbiB0aGUKLXNwZWNpZmllZCBvcmRlci4gSW4g ZWFjaCBjYXNlIGFuIGVycm9yIG1lc3NhZ2UgaXMgcHJpbnRlZCB3aXRoIHRoZSBuYW1lIG9mIHRo ZQotY29udHJvbCBwcm9ncmFtIHByZXBlbmRlZC4KLS5QcAotSWYgbm8gYXJndW1lbnQgaXMgcGFz c2VkLCB0aGVuIGEgc2ltcGxlIGhlbHAgbWVzc2FnZSBpcyBwcmludGVkIGFuZCB0aGUKLXByb2dy YW0gZXhpc3RzIHdpdGggZXJyb3IgY29kZSAwLgotLlBwCi1JZiBhdCBsZWFzdCBvbmUgYXJndW1l bnQgaXMgcGFzc2VkLCBidXQgaXQgaXMgZGlmZmVyZW50IGZyb20KLS5BciBzdGFydCAsCi0uQXIg cmVzdGFydAotb3IKLS5BciBzdG9wCi10aGVuIHRoZSBoZWxwIG1lc3NhZ2UgaXMgcHJpbnRlZCBh cyB3ZWxsLCBhbmQgdGhlIHByb2dyYW0gZXhpdHMgd2l0aCBlcnJvcgotY29kZSAxLgotLlBwCi1U aGUgZm9sbG93aW5nIGVycm9ycyBjb25kaXRpb25zIGFyZSBkZWZpbmVkOgotLkJsIC10YWcgLXdp ZHRoIGluZGVudAotLkl0IEVtIElsbGVnYWwgcHJvZ3JhbSBhcmd1bWVudCAoZXJyb3IgY29kZSAx KQotLkl0IEVtIFBJRCBmaWxlIG5vdCBmb3VuZCAoZXJyb3IgY29kZSAyKQotLkl0IEVtIFBJRCBm aWxlIHRvbyBsYXJnZSAoZXJyb3IgY29kZSAzKQotLkl0IEVtIFBJRCBmaWxlIGNvbnRhaW5zIGls bGVnYWwgY2hhcmFjdGVyIChlcnJvciBjb2RlIDQpCi0uSXQgRW0gS2lsbCBvZiBwcm9jZXNzIGZh aWxlZCAoZXJyb3IgY29kZSA1KQotLkl0IEVtICUlQVBQX1RJVExFJSUgaXMgYWxyZWFkeSBydW5u aW5nIChlcnJvciBjb2RlIDYpCi0uSXQgRW0gJSVBUFBfVElUTEUlJSBpcyBub3QgcnVubmluZyAo ZXJyb3IgY29kZSA3KQotLkl0IEVtIFVuYWJsZSB0byBjaGRpciB0byB0aGUgJSVBUFBfVElUTEUl JSBob21lIGRpcmVjdG9yeSAoZXJyb3IgY29kZSA4KQotLkl0IEVtIFVuYWJsZSB0byBvcGVuIHRo ZSBzdGRvdXQgbG9nIGZpbGUgKGVycm9yIGNvZGUgOSkKLS5JdCBFbSBVbmFibGUgdG8gb3BlbiB0 aGUgc3RkZXJyIGxvZyBmaWxlIChlcnJvciBjb2RlIDEwKQotLkl0IEVtIFVuYWJsZSB0byBzdGFy dCAlJUFQUF9USVRMRSUlIChlcnJvciBjb2RlIDExKQotLkVsCi0uU2ggRklMRVMKLS5CbCAtdGFn IC13aWR0aCAtaW5kZW50Ci0uSXQgUGEgJSVQSURfRklMRSUlCi1UaGUgJSVBUFBfVElUTEUlJSBQ SUQgZmlsZSB0aGF0IGlzIHVzZWQgdG8gc3RvcmUgdGhlIHByb2Nlc3MgSUQgb2YgdGhlCi1jdXJy ZW50bHkgcnVubmluZyBwcm9jZXNzIGluLiBJdCBpcyBlbXB0aWVkIGFzIHNvb24gYXMgdGhlIHNl cnZlciBpcyBzdG9wcGVkCi1hbmQgZmlsbGVkIHdpdGggdGhlIHByb2Nlc3MgSUQgd2hlbiBpdCBp cyBzdGFydGVkLiBJdCBzaG91bGQgbmV2ZXIgYmUgd3JpdGFibGUKLWZvciBhbnlvbmUgYnV0Ci0u RW0gd3d3ICwKLS5JdCBQYSAlJVNUQVJUVVBfU0NSSVBUJSUKLUEgc2NyaXB0IHRoYXQgc3RhcnRz IHRoZQotLk5tCi1wcm9ncmFtLiBJdCBpcyB1c2VkIHRvIHN0YXJ0ICUlQVBQX1RJVExFJSUgYXQg c3RhcnR1cCB0aW1lLgotLkVsCi0uU2ggQVVUSE9SUwotLkFuIEVybnN0IGRlIEhhYW4gQXEgem5l cmRARnJlZUJTRC5vcmcKLS5BbiBKb25hdGhhbiBDaGVuIEFxIGpvbmNAY2hlbi5vcmcubnoKSW5k ZXg6IGZpbGVzL2RhZW1vbmN0bC4xLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IGZpbGVzL2RhZW1v bmN0bC4xLmluCmRpZmYgLU4gZmlsZXMvZGFlbW9uY3RsLjEuaW4KLS0tIC9kZXYvbnVsbAkxIEph biAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBmaWxlcy9kYWVtb25jdGwuMS5pbgkyMSBKdW4gMjAw NCAxNjo0Mjo1OSAtMDAwMApAQCAtMCwwICsxLDc4IEBACisuRGQgRmVicnVhcnkgMjEsIDIwMDIK Ky5EdCAlJUNPTlRST0xfU0NSSVBUX01BTlBBR0VfVElUTEUlJSAxCisuT3MgRnJlZUJTRAorLlNo IE5BTUUKKy5ObSAlJUNPTlRST0xfU0NSSVBUX05BTUUlJQorLk5kICUlQVBQX1RJVExFJSUgc2Vy dmVyIGNvbnRyb2wgaW50ZXJmYWNlCisuU2ggU1lOT1BTSVMKKy5ObQorLk9wIEZsIGphdmEtb3B0 aW9ucworLkFyIHtzdGFydHxyZXN0YXJ0fHN0b3B9CisuU2ggREVTQ1JJUFRJT04KK1RoZQorLk5t Citwcm9ncmFtIHByb3ZpZGVzIGFuIHJlc3RyaWN0ZWQgaW50ZXJmYWNlIHRvIHRoZSAlJUFQUF9U SVRMRSUlCithcHBsaWNhdGlvbiBzZXJ2ZXIuIFRoZQorLk5tCitwcm9ncmFtIGlzIG9ubHkgYWNj ZXNzaWJsZSB0byB1c2VycyBpbiB0aGUgJ3d3dycgZ3JvdXAsIGFuZCB3aWxsCitvbmx5IGludm9r ZSB0aGUgJSVKQVZBX1BPUlRfT1NfREVTQ1JJUFRJT04lJSAlJUpBVkFfUE9SVF9WRVJTSU9OJSUg SlZNLgorLlBwCitBbnkgSmF2YSBvcHRpb25zIGxpc3RlZCBhcmUgaGFuZGVkIG9mZiBkaXJlY3Rs eSB0byB0aGUgSlZNLiBBbnkKK2NsYXNzcGF0aCBvcHRpb25zIHdpbGwgYmUgaWdub3JlZC4KKy5Q cAorVGhlIHByb2dyYW0gZXhwZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgZm9sbG93aW5nIHRlcm1p bmF0aW5nIGNvbW1hbmRzOgorLkJsIC10YWcgLXdpZHRoIGluZGVudAorLkl0IEFyIHN0YXJ0CitT dGFydCAlJUFQUF9USVRMRSUlLCBpZiBpdCBpcyBub3QgYWxyZWFkeSBydW5uaW5nLgorLkl0IEFy IHJlc3RhcnQKK1Jlc3RhcnQgJSVBUFBfVElUTEUlJS4gSWYgaXQgaXMgYWxyZWFkeSBydW5uaW5n LCB0aGVuIGl0IHdpbGwgYmUgc3RvcHBlZCBhbmQKK3RoZW4gc3RhcnRlZCByaWdodCBhZnRlciB0 aGF0LiBPdGhlcndpc2UgaXQgd2lsbCBqdXN0IGJlIHN0YXJ0ZWQgdXAuCisuSXQgQXIgc3RvcAor U3RvcCAlJUFQUF9USVRMRSUlLCBpZiBpdCBpcyBhY3R1YWxseSBydW5uaW5nLgorLkVsCisuU2gg RVJST1JTCitUaGUgZm9sbG93aW5nIGVycm9yIGNvbmRpdGlvbnMgYXJlIGRldGVjdGVkLiBUaGV5 IHdpbGwgYmUgY2hlY2tlZCBpbiB0aGUKK3NwZWNpZmllZCBvcmRlci4gSW4gZWFjaCBjYXNlIGFu IGVycm9yIG1lc3NhZ2UgaXMgcHJpbnRlZCB3aXRoIHRoZSBuYW1lIG9mIHRoZQorY29udHJvbCBw cm9ncmFtIHByZXBlbmRlZC4KKy5QcAorSWYgbm8gYXJndW1lbnQgaXMgcGFzc2VkLCB0aGVuIGEg c2ltcGxlIGhlbHAgbWVzc2FnZSBpcyBwcmludGVkIGFuZCB0aGUKK3Byb2dyYW0gZXhpc3RzIHdp dGggZXJyb3IgY29kZSAwLgorLlBwCitJZiBhdCBsZWFzdCBvbmUgYXJndW1lbnQgaXMgcGFzc2Vk LCBidXQgaXQgaXMgZGlmZmVyZW50IGZyb20KKy5BciBzdGFydCAsCisuQXIgcmVzdGFydAorb3IK Ky5BciBzdG9wCit0aGVuIHRoZSBoZWxwIG1lc3NhZ2UgaXMgcHJpbnRlZCBhcyB3ZWxsLCBhbmQg dGhlIHByb2dyYW0gZXhpdHMgd2l0aCBlcnJvcgorY29kZSAxLgorLlBwCitUaGUgZm9sbG93aW5n IGVycm9ycyBjb25kaXRpb25zIGFyZSBkZWZpbmVkOgorLkJsIC10YWcgLXdpZHRoIGluZGVudAor Lkl0IEVtIElsbGVnYWwgcHJvZ3JhbSBhcmd1bWVudCAoZXJyb3IgY29kZSAxKQorLkl0IEVtIFBJ RCBmaWxlIG5vdCBmb3VuZCAoZXJyb3IgY29kZSAyKQorLkl0IEVtIFBJRCBmaWxlIHRvbyBsYXJn ZSAoZXJyb3IgY29kZSAzKQorLkl0IEVtIFBJRCBmaWxlIGNvbnRhaW5zIGlsbGVnYWwgY2hhcmFj dGVyIChlcnJvciBjb2RlIDQpCisuSXQgRW0gS2lsbCBvZiBwcm9jZXNzIGZhaWxlZCAoZXJyb3Ig Y29kZSA1KQorLkl0IEVtICUlQVBQX1RJVExFJSUgaXMgYWxyZWFkeSBydW5uaW5nIChlcnJvciBj b2RlIDYpCisuSXQgRW0gJSVBUFBfVElUTEUlJSBpcyBub3QgcnVubmluZyAoZXJyb3IgY29kZSA3 KQorLkl0IEVtIFVuYWJsZSB0byBjaGRpciB0byB0aGUgJSVBUFBfVElUTEUlJSBob21lIGRpcmVj dG9yeSAoZXJyb3IgY29kZSA4KQorLkl0IEVtIFVuYWJsZSB0byBvcGVuIHRoZSBzdGRvdXQgbG9n IGZpbGUgKGVycm9yIGNvZGUgOSkKKy5JdCBFbSBVbmFibGUgdG8gb3BlbiB0aGUgc3RkZXJyIGxv ZyBmaWxlIChlcnJvciBjb2RlIDEwKQorLkl0IEVtIFVuYWJsZSB0byBzdGFydCAlJUFQUF9USVRM RSUlIChlcnJvciBjb2RlIDExKQorLkVsCisuU2ggRklMRVMKKy5CbCAtdGFnIC13aWR0aCAtaW5k ZW50CisuSXQgUGEgJSVQSURfRklMRSUlCitUaGUgJSVBUFBfVElUTEUlJSBQSUQgZmlsZSB0aGF0 IGlzIHVzZWQgdG8gc3RvcmUgdGhlIHByb2Nlc3MgSUQgb2YgdGhlCitjdXJyZW50bHkgcnVubmlu ZyBwcm9jZXNzIGluLiBJdCBpcyBlbXB0aWVkIGFzIHNvb24gYXMgdGhlIHNlcnZlciBpcyBzdG9w cGVkCithbmQgZmlsbGVkIHdpdGggdGhlIHByb2Nlc3MgSUQgd2hlbiBpdCBpcyBzdGFydGVkLiBJ dCBzaG91bGQgbmV2ZXIgYmUgd3JpdGFibGUKK2ZvciBhbnlvbmUgYnV0CisuRW0gd3d3ICwKKy5J dCBQYSAlJVNUQVJUVVBfU0NSSVBUJSUKK0Egc2NyaXB0IHRoYXQgc3RhcnRzIHRoZQorLk5tCitw cm9ncmFtLiBJdCBpcyB1c2VkIHRvIHN0YXJ0ICUlQVBQX1RJVExFJSUgYXQgc3RhcnR1cCB0aW1l LgorLkVsCisuU2ggQVVUSE9SUworLkFuIEVybnN0IGRlIEhhYW4gQXEgem5lcmRARnJlZUJTRC5v cmcKKy5BbiBKb25hdGhhbiBDaGVuIEFxIGpvbmNAY2hlbi5vcmcubnoKSW5kZXg6IGZpbGVzL2Rh ZW1vbmN0bC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IGZpbGVzL2RhZW1vbmN0bC5jCmRpZmYgLU4g ZmlsZXMvZGFlbW9uY3RsLmMKLS0tIGZpbGVzL2RhZW1vbmN0bC5jCTIyIERlYyAyMDA0IDIwOjQ0 OjIzIC0wMDAwCTEuMworKysgL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKQEAg LTEsNTU3ICswLDAgQEAKLS8qCi0gKiAtKi0gbW9kZTogRnVuZGFtZW50YWw7IHRhYi13aWR0aDog NDsgLSotCi0gKiBleDp0cz00Ci0gKgotICogRGFlbW9uIGNvbnRyb2wgcHJvZ3JhbSwgd2l0aCBK YXZhIFN0YXJ0dXAgb3B0aW9ucy4KLSAqCi0gKglPcmlnaW5hbCBieSBFcm5zdCBkZSBIYWFuIDx6 bmVyZEBmcmVlYnNkLm9yZz4KLSAqCXd3dy9qYWthcnRhLXRvbWNhdDQvZmlsZXMvZGFlbW9uY3Rs LmMKLSAqCi0gKiAkRnJlZUJTRDogcG9ydHMvamF2YS9qYm9zczQvZmlsZXMvZGFlbW9uY3RsLmMs diAxLjMgMjAwNC8xMi8yMiAyMDo0NDoyMyBocSBFeHAgJAotICovCi0KLSNpbmNsdWRlIDxhc3Nl cnQuaD4KLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPHNpZ25hbC5oPgotI2luY2x1ZGUg PHN0ZGFyZy5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5j bHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8c3lzbG9nLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+ Ci0jaW5jbHVkZSA8c3lzL2Vycm5vLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRl IDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvdWlvLmg+Ci0KLSNkZWZpbmUJVFJVRQkxCi0j ZGVmaW5lCUZBTFNFCTAKLQotLyogVGhlIGludGVydmFsIGluIHNlY29uZHMgYmV0d2VlbiB0aGUg Y2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGUgcHJvY2VzcwotICAgZGllZCBhZnRlciBhIGtpbGwgKi8K LSNkZWZpbmUgU1RPUF9USU1FX0lOVEVSVkFMCQkxCi0KLSNkZWZpbmUgRVJSX0lMTEVHQUxfQVJH VU1FTlQJCQkJMQotI2RlZmluZSBFUlJfUElEX0ZJTEVfTk9UX0ZPVU5ECQkJCTIKLSNkZWZpbmUg RVJSX0tJTExfRkFJTEVECQkJCQkJNQotI2RlZmluZSBFUlJfQUxSRUFEWV9SVU5OSU5HCQkJCQk2 Ci0jZGVmaW5lIEVSUl9OT1RfUlVOTklORwkJCQkJCTcKLSNkZWZpbmUgRVJSX0NIRElSX1RPX0FQ UF9IT01FCQkJCTgKLSNkZWZpbmUgRVJSX0FDQ0VTU19KQVJfRklMRQkJCQkJMTcKLSNkZWZpbmUg RVJSX1NURE9VVF9MT0dGSUxFX09QRU4JCQkJOQotI2RlZmluZSBFUlJfU1RERVJSX0xPR0ZJTEVf T1BFTgkJCQkxMAotI2RlZmluZSBFUlJfRk9SS19GQUlMRUQJCQkJCQkxMQotI2RlZmluZSBFUlJf U1RBVF9KQVZBX0hPTUUJCQkJCTEyCi0jZGVmaW5lIEVSUl9KQVZBX0hPTUVfTk9UX0RJUgkJCQkx MwotI2RlZmluZSBFUlJfU1RBVF9KQVZBX0NNRAkJCQkJMTQKLSNkZWZpbmUgRVJSX0pBVkFfQ01E X05PVF9GSUxFCQkJCTE1Ci0jZGVmaW5lIEVSUl9KQVZBX0NNRF9OT1RfRVhFQ1VUQUJMRQkJCTE2 Ci0KLS8qCi0JRnVuY3Rpb24gZGVjbGFyYXRpb25zLgotICovCi1zdGF0aWMgdm9pZCBwcmludFVz YWdlICh2b2lkKTsKLXN0YXRpYyBpbnQgcmVhZFBJRCAodm9pZCk7Ci1zdGF0aWMgdm9pZCB3cml0 ZVBJRCAoaW50IHBpZCk7Ci1zdGF0aWMgdm9pZCBjbGVhclBJRCAodm9pZCk7Ci1zdGF0aWMgdm9p ZCBzdGFydCAoaW50IGphdmFPcHQsIGNoYXIgKiBqYXZhQXJncyBbXSwgaW50IGpib3NzT3B0LCBj aGFyICogamJvc3NBcmdzIFtdKTsKLXN0YXRpYyB2b2lkIHN0b3AgKHZvaWQpOwotc3RhdGljIHZv aWQgcmVzdGFydCAoaW50IGphdmFPcHQsIGNoYXIgKiBqYXZhQXJncyBbXSwgaW50IGpib3NzT3B0 LCBjaGFyICogamJvc3NBcmdzIFtdKTsKLXN0YXRpYyB2b2lkIGxvZ091dHB1dCAoY2hhciAqKTsK LQotLyoKLQlHbG9iYWxzCi0gKi8KLXN0YXRpYyBpbnQgaXNRdWlldCA9IEZBTFNFOwotc3RhdGlj IGNoYXIgKiBvcHRRdWlldCA9ICItcSIsCQkJLyogcXVpZXQgb3B0aW9uICovCi0JCQkqIG9wdENv bmZpZyA9ICItY29uZmlnIjsJLyogamJvc3MgY29uZmlndXJhdGlvbiBvcHRpb24gKi8KLQotLyoq Ci0gKiBNYWluIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoaXMgcHJv Z3JhbSBpcyBleGVjdXRlZC4KLSAqCi0gKiBAcGFyYW0gYXJnYwotICogICAgdGhlIG51bWJlciBv ZiBhcmd1bWVudHMgcGx1cyBvbmUsIHNvIGFsd2F5cyBncmVhdGVyIHRoYW4gMC4KLSAqCi0gKiBA cGFyYW0gYXJndgotICogICAgdGhlIGFyZ3VtZW50cyBpbiBhbiBhcnJheSBvZiBjaGFyYWN0ZXIg cG9pbnRlcnMsIHdoZXJlIHRoZSBsYXN0IGFyZ3VtZW50Ci0gKiAgICBlbGVtZW50IGlzIGZvbGxv d2VkIGJ5IGEgTlVMTCBlbGVtZW50LgotICovCi1pbnQKLW1haW4gKAotIGludCBhcmdjLAotIGNo YXIgKmFyZ3YgW10pCi17Ci0JLyogRGVjbGFyZSB2YXJpYWJsZXMsIGxpa2UgYWxsIG90aGVyIGdv b2QgQU5TSSBDIHByb2dyYW1zIGRvIDopICovCi0JaW50IGksIGphdmFPcHQsIGpib3NzT3B0Owot CWNoYXIgKmFyZ3VtZW50LCAqKmphdmFBcmdzLCAqKmpib3NzQXJnczsKLQotCS8qIFBhcnNlIHRo ZSBhcmd1bWVudHMgKi8KLQlpZiAoYXJnYyA8IDIpCi0JewotCQlwcmludFVzYWdlICgpOwotCQly ZXR1cm4gMDsKLQl9Ci0KLQkvKiBYWFg6IEZpeCBmb3Igc2V0dGluZyB1cCB0aGUgZW52aXJvbm1l bnQgZm9yIHRoZSBqYXZhIHdyYXBwZXIgc2NyaXB0ICovCi0Jc2V0dWlkIChnZXRldWlkICgpKTsK LQlzZXRnaWQgKGdldGVnaWQgKCkpOwotCi0JLyoKLQkJQnVpbGQgdXAgamF2YSBhbmQgamJvc3Mg b3B0aW9uIGJsb2Nrcy4KLQkgKi8KLQlqYXZhT3B0ID0gamJvc3NPcHQgPSAwOwotCWZvciAoaSA9 IDE7IGkgPCBhcmdjOyBpKyspCi0JewotCQlpZiAoc3RyY21wIChhcmd2IFtpXSwgb3B0UXVpZXQp ID09IDApCi0JCXsKLQkJCWlzUXVpZXQgPSBUUlVFOwotCi0JCX0gZWxzZSBpZiAoc3RyY21wIChh cmd2IFtpXSwgb3B0Q29uZmlnKSA9PSAwKQotCQl7Ci0JCQlqYm9zc09wdCArPSAyOwotCQkJaWYg KCsraSA+PSBhcmdjKQotCQkJewotCQkJCXByaW50VXNhZ2UgKCk7Ci0JCQkJcmV0dXJuIEVSUl9J TExFR0FMX0FSR1VNRU5UOwotCQkJfQotCi0JCX0gZWxzZSBpZiAoKmFyZ3YgW2ldID09ICctJykK LQkJewotCQkJamF2YU9wdCsrOwotCQl9Ci0JfQotCWlmIChqYXZhT3B0ID09IDApCi0JCWphdmFB cmdzID0gTlVMTDsKLQllbHNlCi0JewotCQlpbnQgaiA9IDA7Ci0JCWphdmFBcmdzID0gbWFsbG9j IChzaXplb2YgKGNoYXIgKikgKiBqYXZhT3B0KTsKLQkJZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkr KykKLQkJewotCQkJaWYgKHN0cmNtcCAoYXJndiBbaV0sIG9wdFF1aWV0KSAmJgotCQkJCXN0cmNt cCAoYXJndiBbaV0sIG9wdENvbmZpZykgJiYKLQkJCQkqYXJndiBbaV0gPT0gJy0nKQotCQkJewot CQkJCWphdmFBcmdzIFtqKytdID0gYXJndiBbaV07Ci0JCQl9Ci0JCX0KLQl9Ci0JaWYgKGpib3Nz T3B0ID09IDApCi0JCWpib3NzQXJncyA9IE5VTEw7Ci0JZWxzZQotCXsKLQkJaW50IGogPSAwOwot CQlqYm9zc0FyZ3MgPSBtYWxsb2MgKHNpemVvZiAoY2hhciAqKSAqIGpib3NzT3B0KTsKLQkJZm9y IChpID0gMDsgaSA8IGFyZ2M7IGkrKykKLQkJewotCQkJaWYgKHN0cmNtcCAoYXJndiBbaV0sIG9w dENvbmZpZykgPT0gMCkKLQkJCXsKLQkJCQlqYm9zc0FyZ3MgW2orK10gPSAiLWMiOwotCQkJCWpi b3NzQXJncyBbaisrXSA9IGFyZ3YgWysraV07Ci0JCQl9Ci0JCX0KLQl9Ci0KLQkvKgotCQlEZWNp ZGUgb24ganVzdCB3aGF0IHRvIGNhbGwuCi0JICovCi0JYXJndW1lbnQgPSBhcmd2IFthcmdjIC0g MV07Ci0JaWYgKHN0cmNtcCAoInN0YXJ0IiwgYXJndW1lbnQpID09IDApCi0JewotCQlzdGFydCAo amF2YU9wdCwgamF2YUFyZ3MsIGpib3NzT3B0LCBqYm9zc0FyZ3MpOwotCi0JfSBlbHNlIGlmIChz dHJjbXAgKCJzdG9wIiwgYXJndW1lbnQpID09IDApCi0JewotCQlzdG9wICgpOwotCi0JfSBlbHNl IGlmIChzdHJjbXAgKCJyZXN0YXJ0IiwgYXJndW1lbnQpID09IDApCi0JewotCQlyZXN0YXJ0IChq YXZhT3B0LCBqYXZhQXJncywgamJvc3NPcHQsIGpib3NzQXJncyk7Ci0KLQl9IGVsc2UgewotCQlm cHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogSWxsZWdhbCBhcmd1bWVu dCBcIiVzXCIuXG4iLCBhcmd1bWVudCk7Ci0JCXByaW50VXNhZ2UgKCk7Ci0JCWV4aXQgKEVSUl9J TExFR0FMX0FSR1VNRU5UKTsKLQl9Ci0KLQlyZXR1cm4gRVhJVF9TVUNDRVNTOwotfQotCi0vKioK LSAqIFByaW50cyB1c2FnZSBpbmZvcm1hdGlvbiB0byBzdGRvdXQuCi0gKi8KLXN0YXRpYyB2b2lk Ci1wcmludFVzYWdlICh2b2lkKQotewotCXByaW50ZiAoIlVzYWdlOiAlJUNPTlRST0xfU0NSSVBU X05BTUUlJSBbamF2YS1vcHRpb25zXSBbLWNvbmZpZyBqYm9zc2NvbmZpZ10ge3N0YXJ0fHN0b3B8 cmVzdGFydH1cbiIpOwotfQotCi0vKioKLSAqIFJlYWRzIGEgUElEIGZyb20gdGhlIFBJRCBmaWxl LgotICoKLSAqIEByZXR1cm4KLSAqICAgIHRoZSBQSUQsIG9yIC0xIGlmIHRoZSBmaWxlIHdhcyBl bXB0eS4KLSAqLwotc3RhdGljIGludAotcmVhZFBJRCAodm9pZCkKLXsKLQlGSUxFICogZmlsZTsK LQlpbnQgcGlkOwotCi0JbG9nT3V0cHV0ICgiPj4gUmVhZGluZyBQSUQgZmlsZSAoJSVQSURfRklM RSUlKS4uLiIpOwotCWZpbGUgPSBmb3BlbiAoIiUlUElEX0ZJTEUlJSIsICJyIik7Ci0JaWYgKCFm aWxlKQotCXsKLQkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOwotCQlwZXJyb3IgKCIlJUNP TlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIG9wZW4gJSVQSURfRklMRSUlIGZvciByZWFk aW5nOiAiKTsKLQkJZXhpdCAoRVJSX1BJRF9GSUxFX05PVF9GT1VORCk7Ci0JfQotCWlmIChmc2Nh bmYgKGZpbGUsICIlZCIsICZwaWQpIDwgMSkKLQkJcGlkID0gLTE7Ci0JZmNsb3NlIChmaWxlKTsK LQotCWxvZ091dHB1dCAoIiBbIERPTkUgXVxuIik7Ci0JcmV0dXJuIHBpZDsKLX0KLQotLyoqCi0g KiBXcml0ZXMgYSBwcm9jZXNzIElEIHRvIHRoZSBzcGVjaWZpZWQgZmlsZS4gVGhlIGZpbGUgaXMg aWRlbnRpZmllZCBieSBhIGZpbGUKLSAqIGhhbmRsZS4KLSAqCi0gKiBAcGFyYW0gcGlkCi0gKiAg ICB0aGUgUElEIHRvIHN0b3JlLCBhbHdheXMgZ3JlYXRlciB0aGFuIDAuCi0gKi8KLXN0YXRpYyB2 b2lkCi13cml0ZVBJRCAoCi0gaW50IHBpZCkKLXsKLQlGSUxFICogZmlsZTsKLQotCWxvZ091dHB1 dCAoIj4+IFdyaXRpbmcgUElEIGZpbGUuLi4iKTsKLQlmaWxlID0gZm9wZW4gKCIlJVBJRF9GSUxF JSUiLCAidyIpOwotCWlmICghZmlsZSkKLQl7Ci0JCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4i KTsKLQkJcGVycm9yICgiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBvcGVuICUl UElEX0ZJTEUlJSBmb3Igd3JpdGluZzogIik7Ci0JCWV4aXQgKEVSUl9QSURfRklMRV9OT1RfRk9V TkQpOwotCX0KLQlmcHJpbnRmIChmaWxlLCAiJWRcbiIsIHBpZCk7Ci0JZmNsb3NlIChmaWxlKTsK LQotCWxvZ091dHB1dCAoIiBbIERPTkUgXVxuIik7Ci19Ci0KLS8qKgotCVRydW5jYXRlIHRoZSBQ SUQgZmlsZS4KLSAqLwotc3RhdGljIHZvaWQKLWNsZWFyUElEICh2b2lkKQotewotCWlmICh0cnVu Y2F0ZSAoIiUlUElEX0ZJTEUlJSIsIDApICE9IDApCi0JewotCQlwZXJyb3IgKCIlJUNPTlRST0xf U0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIGNsZWFyICUlUElEX0ZJTEUlJTogIik7Ci0JCWV4aXQg KEVSUl9QSURfRklMRV9OT1RfRk9VTkQpOwotCX0KLX0KLQotLyoqCi0gKiBDaGVja3MgaWYgdGhl IHNwZWNpZmllZCBwcm9jZXNzIGlzIHJ1bm5pbmcuCi0gKgotICogQHBhcmFtIHBpZAotICogICAg dGhlIHByb2Nlc3MgaWQsIGdyZWF0ZXIgdGhhbiAwLgotICoKLSAqIEByZXR1cm4KLSAqICAgIDAg aWYgdGhlIHNwZWNpZmllZCBwcm9jZXNzIGlzIG5vdCBydW5uaW5nLCBhIGRpZmZlcmVudCB2YWx1 ZSBvdGhlcndpc2UuCi0gKi8KLXN0YXRpYyBpbnQKLWV4aXN0c1Byb2Nlc3MgKAotIGludCBwaWQp Ci17Ci0JaW50IHJlc3VsdDsKLQotCS8qIENoZWNrIHByZWNvbmRpdGlvbnMgKi8KLQlhc3NlcnQg KHBpZCA+IDApOwotCi0JLyogU2VlIGlmIHRoZSBwcm9jZXNzIGV4aXN0cyAqLwotICAgCXJlc3Vs dCA9IGtpbGwgKHBpZCwgMCk7Ci0KLQkvKiBJZiB0aGUgcmVzdWx0IGlzIDAsIHRoZW4gdGhlIHBy b2Nlc3MgZXhpc3RzICovCi0JcmV0dXJuIHJlc3VsdCA9PSAwOwotfQotCi0vKioKLSAqIEtpbGxz IHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkgdGhlIHNwZWNpZmllZCBJRC4KLSAqCi0gKiBAcGFy YW0gcGlkCi0gKiAgICB0aGUgcHJvY2VzcyBpZCwgZ3JlYXRlciB0aGFuIDAuCi0gKi8KLXN0YXRp YyB2b2lkCi1raWxsUHJvY2VzcyAoCi0gaW50IHBpZCkKLXsKLQlpbnQgcmVzdWx0OwotCXVuc2ln bmVkIGludCB3YWl0ZWQ7Ci0JdW5zaWduZWQgaW50IGZvcmNlZDsKLQl1bnNpZ25lZCBpbnQgaW50 ZXJ2YWwgPSBTVE9QX1RJTUVfSU5URVJWQUw7Ci0JdW5zaWduZWQgaW50IHRpbWVvdXQgID0gJSVT VE9QX1RJTUVPVVQlJTsKLQotCS8qIENoZWNrIHByZWNvbmRpdGlvbnMgKi8KLQlhc3NlcnQgKHBp ZCA+IDApOwotCi0JaWYgKCFpc1F1aWV0KQotCQlwcmludGYgKCI+PiBUZXJtaW5hdGluZyBwcm9j ZXNzICVkLi4uIiwgcGlkKTsKLQlyZXN1bHQgPSBraWxsIChwaWQsIFNJR1RFUk0pOwotCWlmIChy ZXN1bHQgPCAwKSB7Ci0JCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKLQkJZnByaW50ZiAo c3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBraWxsIHByb2Nlc3Mg JWQ6ICIsIHBpZCk7Ci0JCXBlcnJvciAoTlVMTCk7Ci0JCWV4aXQgKEVSUl9LSUxMX0ZBSUxFRCk7 Ci0JfQotCi0JLyogV2FpdCB1bnRpbCB0aGUgcHJvY2VzcyBpcyBhY3R1YWxseSBraWxsZWQgKi8K LSAgICByZXN1bHQgPSBleGlzdHNQcm9jZXNzIChwaWQpOwotCWZvciAod2FpdGVkPTA7IHJlc3Vs dCA9PSAxICYmIHdhaXRlZCA8IHRpbWVvdXQ7IHdhaXRlZCArPSBpbnRlcnZhbCkKLQl7Ci0JCWxv Z091dHB1dCAoIi4iKTsKLQkJZmZsdXNoIChzdGRvdXQpOwotCQlzbGVlcCAoaW50ZXJ2YWwpOwot ICAgIAlyZXN1bHQgPSBleGlzdHNQcm9jZXNzIChwaWQpOwotCX0KLQotCS8qIElmIHRoZSBwcm9j ZXNzIHN0aWxsIGV4aXN0cywgdGhlbiBoYXZlIG5vIG1lcmN5IGFuZCBraWxsIGl0ICovCi0JZm9y Y2VkID0gMDsKLQlpZiAocmVzdWx0ID09IDEpCi0JewotCQkvKiBGb3JjZSB0aGUgcHJvY2VzcyB0 byBkaWUgKi8KLQkJcmVzdWx0ID0ga2lsbCAocGlkLCBTSUdLSUxMKTsKLQkJaWYgKHJlc3VsdCA9 PSAwKSB7Ci0JCQlmb3JjZWQgPSAxOwotCQkJbG9nT3V0cHV0ICgiIFsgS0lMTEVEIF1cbiIpOwot CQkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFByb2Nlc3MgJWQg ZGlkIG5vdCB0ZXJtaW5hdGUgd2l0aGluICUlU1RPUF9USU1FT1VUJSUgc2VjLiBLaWxsZWQuXG4i LCBwaWQpOwotCQl9IGVsc2UgaWYgKHJlc3VsdCAhPSBFU1JDSCkgewotCQkJbG9nT3V0cHV0ICgi IFsgRkFJTEVEIF1cbiIpOwotCQkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9O QU1FJSU6IFVuYWJsZSB0byBraWxsIHByb2Nlc3MgJWQ6ICIsIHBpZCk7Ci0JCQlwZXJyb3IgKE5V TEwpOwotCQkJZXhpdCAoRVJSX0tJTExfRkFJTEVEKTsKLQkJfQotCX0KLQotCWlmIChmb3JjZWQg PT0gMCkgewotCQlsb2dPdXRwdXQgKCIgWyBET05FIF1cbiIpOwotCX0KLX0KLQotLyoqCi0gKiBT dGFydHMgdGhlIGRhZW1vbi4KLSAqLwotc3RhdGljIHZvaWQKLXN0YXJ0ICgKLSBpbnQgamF2YU9w dCwKLSBjaGFyICogamF2YUFyZ3MgW10sCi0gaW50IGpib3NzT3B0LAotIGNoYXIgKiBqYm9zc0Fy Z3MgW10pCi17Ci0JaW50IGksIGFyZ2M7Ci0JY2hhciAqKiBhcmd2OwotCWludCBwaWQ7Ci0JaW50 IHJlc3VsdDsKLQlpbnQgc3Rkb3V0TG9nRmlsZTsKLQlpbnQgc3RkZXJyTG9nRmlsZTsKLQlzdHJ1 Y3Qgc3RhdCBzYjsKLQotCXBpZCA9IHJlYWRQSUQgKCk7Ci0KLQlsb2dPdXRwdXQgKCI+PiBTdGFy dGluZyAlJUFQUF9USVRMRSUlICUlUE9SVFZFUlNJT04lJS4uLiIpOwotCWlmIChwaWQgIT0gLTEp Ci0JewotCQkvKiBDaGVjayBpZiB0aGUgcHJvY2VzcyBhY3R1YWxseSBleGlzdHMgKi8KLQkJcmVz dWx0ID0gZXhpc3RzUHJvY2VzcyAocGlkKTsKLQkJaWYgKHJlc3VsdCA9PSAxKQotCQl7Ci0JCQls b2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7Ci0JCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRS T0xfU0NSSVBUX05BTUUlJTogJSVBUFBfVElUTEUlJSAlJVBPUlRWRVJTSU9OJSUgaXMgYWxyZWFk eSBydW5uaW5nLCBQSUQgaXMgJWQuXG4iLCBwaWQpOwotCQkJZXhpdCAoRVJSX0FMUkVBRFlfUlVO TklORyk7Ci0JCX0KLQl9Ci0KLQkvKiBDaGVjayBpZiB0aGUgSkRLIGhvbWUgZGlyZWN0b3J5IGlz IGFjdHVhbGx5IGEgZGlyZWN0b3J5ICovCi0JcmVzdWx0ID0gc3RhdCAoIiUlSkFWQV9IT01FJSUi LCAmc2IpOwotCWlmIChyZXN1bHQgIT0gMCkgewotCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxu Iik7Ci0JCWZwcmludGYgKHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBVbmFibGUg dG8gc3RhdCAlJUpBVkFfSE9NRSUlOiAiKTsKLQkJcGVycm9yIChOVUxMKTsKLQkJZXhpdCAoRVJS X1NUQVRfSkFWQV9IT01FKTsKLQl9Ci0JaWYgKCFTX0lTRElSIChzYi5zdF9tb2RlKSkgewotCQls b2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7Ci0JCWZwcmludGYgKHN0ZGVyciwgIiUlQ09OVFJP TF9TQ1JJUFRfTkFNRSUlOiBKYXZhIGhvbWUgZGlyZWN0b3J5ICUlSkFWQV9IT01FJSUgaXMgbm90 IGEgZGlyZWN0b3J5LlxuIik7Ci0JCWV4aXQgKEVSUl9KQVZBX0hPTUVfTk9UX0RJUik7Ci0JfQot Ci0JLyogQ2hlY2sgaWYgdGhlIEphdmEgY29tbWFuZCBpcyBhY3R1YWxseSBhbiBleGVjdXRhYmxl IHJlZ3VsYXIgZmlsZSAqLwotCXJlc3VsdCA9IHN0YXQgKCIlJUpBVkElJSIsICZzYik7Ci0JaWYg KHJlc3VsdCAhPSAwKSB7Ci0JCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKLQkJZnByaW50 ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBzdGF0ICUlSkFW QSUlOiAiKTsKLQkJcGVycm9yIChOVUxMKTsKLQkJZXhpdCAoRVJSX1NUQVRfSkFWQV9DTUQpOwot CX0KLQlpZiAoIVNfSVNSRUcgKHNiLnN0X21vZGUpKSB7Ci0JCWxvZ091dHB1dCAoIiBbIEZBSUxF RCBdXG4iKTsKLQkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IEph dmEgY29tbWFuZCAlJUpBVkElJSBpcyBub3QgYSByZWd1bGFyIGZpbGUuXG4iKTsKLQkJZXhpdCAo RVJSX0pBVkFfQ01EX05PVF9GSUxFKTsKLQl9Ci0JcmVzdWx0ID0gYWNjZXNzICgiJSVKQVZBJSUi LCBYX09LKTsKLQlpZiAocmVzdWx0ICE9IDApIHsKLQkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1c biIpOwotCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogSmF2YSBj b21tYW5kICUlSkFWQSUlIGlzIG5vdCBleGVjdXRhYmxlOiAiKTsKLQkJcGVycm9yIChOVUxMKTsK LQkJZXhpdCAoRVJSX0pBVkFfQ01EX05PVF9FWEVDVVRBQkxFKTsKLQl9Ci0KLQkvKiBDaGFuZ2Ug ZGlyZWN0b3J5ICovCi0JcmVzdWx0ID0gY2hkaXIgKCIlJUFQUF9IT01FJSUiKTsKLQlpZiAocmVz dWx0IDwgMCkgewotCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7Ci0JCWZwcmludGYgKHN0 ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBVbmFibGUgdG8gYWNjZXNzIGRpcmVjdG9y eSAlJUFQUF9IT01FJSU6ICIpOwotCQlwZXJyb3IgKE5VTEwpOwotCQlleGl0IChFUlJfQ0hESVJf VE9fQVBQX0hPTUUpOwotCX0KLQotCS8qIFNlZSBpZiB0aGUgSkFSIGZpbGUgZXhpc3RzICovCi0J cmVzdWx0ID0gYWNjZXNzICgiJSVBUFBfSE9NRSUlLyUlSkFSX0ZJTEUlJSIsIFJfT0spOwotCWlm IChyZXN1bHQgPCAwKSB7Ci0JCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKLQkJZnByaW50 ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBhY2Nlc3MgSkFS IGZpbGUgJSVBUFBfSE9NRSUlLyUlSkFSX0ZJTEUlJTogIik7Ci0JCXBlcnJvciAoTlVMTCk7Ci0J CWV4aXQgKEVSUl9BQ0NFU1NfSkFSX0ZJTEUpOwotCX0KLQotCS8qIE9wZW4gdGhlIHN0ZG91dCBs b2cgZmlsZSAqLwotCXN0ZG91dExvZ0ZpbGUgPSBvcGVuICgiJSVTVERPVVRfTE9HJSUiLCBPX1dS T05MWSk7Ci0JaWYgKHN0ZG91dExvZ0ZpbGUgPCAwKSB7Ci0JCWxvZ091dHB1dCAoIiBbIEZBSUxF RCBdXG4iKTsKLQkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVu YWJsZSB0byBvcGVuICUlU1RET1VUX0xPRyUlIGZvciB3cml0aW5nOiAiKTsKLQkJcGVycm9yIChO VUxMKTsKLQkJZXhpdCAoRVJSX1NURE9VVF9MT0dGSUxFX09QRU4pOwotCX0KLQlsc2VlayAoc3Rk b3V0TG9nRmlsZSwgKG9mZl90KSAwLCBTRUVLX0VORCk7Ci0KLQkvKiBPcGVuIHRoZSBzdGRlcnIg bG9nIGZpbGUgKi8KLQlzdGRlcnJMb2dGaWxlID0gb3BlbiAoIiUlU1RERVJSX0xPRyUlIiwgT19X Uk9OTFkpOwotCWlmIChzdGRlcnJMb2dGaWxlIDwgMCkgewotCQlsb2dPdXRwdXQgKCIgWyBGQUlM RUQgXVxuIik7Ci0JCWZwcmludGYgKHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBV bmFibGUgdG8gb3BlbiAlJVNUREVSUl9MT0clJSBmb3Igd3JpdGluZzogIik7Ci0JCXBlcnJvciAo TlVMTCk7Ci0JCWV4aXQgKEVSUl9TVERFUlJfTE9HRklMRV9PUEVOKTsKLQl9Ci0JbHNlZWsgKHN0 ZGVyckxvZ0ZpbGUsIChvZmZfdCkgMCwgU0VFS19FTkQpOwotCi0JLyogU3BsaXQgdGhpcyBwcm9j ZXNzIGluIHR3byAqLwotCXN3aXRjaCAocGlkID0gZm9yayAoKSkKLQl7Ci0JY2FzZSAtMToKLQkJ bG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOwotCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRS T0xfU0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIGZvcms6ICIpOwotCQlwZXJyb3IgKE5VTEwpOwot CQlleGl0IChFUlJfRk9SS19GQUlMRUQpOwotCQlicmVhazsKLQotCWNhc2UgMDoKLQkJLyogUmVk aXJlY3Qgc3Rkb3V0IHRvIGxvZyBmaWxlICovCi0JCWR1cDIgKHN0ZG91dExvZ0ZpbGUsIFNURE9V VF9GSUxFTk8pOwotCi0JCS8qIFJlZGlyZWN0IHN0ZGVyciB0byBsb2cgZmlsZSAqLwotCQlkdXAy IChzdGRlcnJMb2dGaWxlLCBTVERFUlJfRklMRU5PKTsKLQotCQkvKiBUT0RPOiBTdXBwb3J0IHJl ZGlyZWN0aW9uIG9mIGJvdGggc3Rkb3V0IGFuZCBzdGRlcnIgdG8gdGhlIHNhbWUKLQkJCQkgZmls ZSB1c2luZyBwaXBlICgyKSAqLwotCi0JCS8qCi0JCQlCdWlsZCB0aGUgYXJndW1lbnQgdmVjdG9y LCB3aXRoIHRoZSBqYXZhL2pib3NzIG9wdGlvbnMgaWYgYW55LgotCQkgKi8KLQkJYXJndiA9IG1h bGxvYyAoc2l6ZW9mIChjaGFyICopICogKGphdmFPcHQgKyBqYm9zc09wdCArIDUpKTsKLQkJYXJn YyA9IDA7Ci0JCWFyZ3YgW2FyZ2MrK10gPSAiJSVKQVZBJSUiOwotCQlmb3IgKGkgPSAwOyBpIDwg amF2YU9wdDsgaSsrKQotCQkJYXJndiBbYXJnYysrXSA9IGphdmFBcmdzIFtpXTsKLQkJYXJndiBb YXJnYysrXSA9ICItY3AiOwotCQlhcmd2IFthcmdjKytdID0gIiUlSkFWQV9DUCUlIjsKLQkJYXJn diBbYXJnYysrXSA9ICIlJUpBVkFfTUFJTiUlIjsKLQkJZm9yIChpID0gMDsgaSA8IGpib3NzT3B0 OyBpKyspCi0JCQlhcmd2IFthcmdjKytdID0gamJvc3NBcmdzIFtpXTsKLQkJYXJndiBbYXJnYysr XSA9IE5VTEw7Ci0KLQkJLyogRXhlY3V0ZSB0aGUgY29tbWFuZCAqLwotCQlleGVjdiAoYXJndiBb MF0sIGFyZ3YpOwotCQlwZXJyb3IgKE5VTEwpOwotCQlicmVhazsKLQotCWRlZmF1bHQ6Ci0JCWxv Z091dHB1dCAoIiBbIERPTkUgXVxuIik7Ci0JCXdyaXRlUElEIChwaWQpOwotCX0KLX0KLQotLyoq Ci0gKiBTdG9wcyB0aGUgZGFlbW9uLgotICovCi1zdGF0aWMgdm9pZAotc3RvcCAodm9pZCkKLXsK LQlpbnQgcGlkOwotCi0JcGlkID0gcmVhZFBJRCAoKTsKLQotCWxvZ091dHB1dCAoIj4+IENoZWNr aW5nIGlmICUlQVBQX1RJVExFJSUgJSVQT1JUVkVSU0lPTiUlIGlzIHJ1bm5pbmcuLi4iKTsKLQot CS8qIElmIHRoZXJlIGlzIGEgUElELCBzZWUgaWYgdGhlIHByb2Nlc3Mgc3RpbGwgZXhpc3RzICov Ci0JaWYgKHBpZCAhPSAtMSkKLQl7Ci0JCWludCByZXN1bHQgPSBraWxsIChwaWQsIDApOwotCQlp ZiAocmVzdWx0ICE9IDAgJiYgZXJybm8gPT0gRVNSQ0gpCi0JCXsKLQkJCWNsZWFyUElEICgpOwot CQkJcGlkID0gLTE7Ci0JCX0KLQl9Ci0KLQkvKiBJZiB0aGVyZSBpcyBubyBydW5uaW5nIHByb2Nl c3MsIHByb2R1Y2UgYW4gZXJyb3IgKi8KLQlpZiAocGlkID09IC0xKQotCXsKLQkJbG9nT3V0cHV0 ICgiIFsgRkFJTEVEIF1cbiIpOwotCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBU X05BTUUlJTogJSVBUFBfVElUTEUlJSAlJVBPUlRWRVJTSU9OJSUgaXMgY3VycmVudGx5IG5vdCBy dW5uaW5nLlxuIik7Ci0JCWV4aXQgKEVSUl9OT1RfUlVOTklORyk7Ci0JfQotCWxvZ091dHB1dCAo IiBbIERPTkUgXVxuIik7Ci0KLQkvKiBUZXJtaW5hdGUgdGhlIHByb2Nlc3MgKi8KLQlraWxsUHJv Y2VzcyAocGlkKTsKLQljbGVhclBJRCAoKTsKLX0KLQotCi0vKioKLSAqIFJlc3RhcnRzIHRoZSBw cm9jZXNzLiBJZiBpdCBub3QgY3VycmVudGx5IHJ1bm5pbmcsIHRoZW4gaXQgd2lsbCBmYWlsLgot ICovCi1zdGF0aWMgdm9pZAotcmVzdGFydCAoCi0gaW50IGphdmFPcHQsCi0gY2hhciAqIGphdmFB cmdzIFtdLAotIGludCBqYm9zc09wdCwKLSBjaGFyICogamJvc3NBcmdzIFtdKQotewotCXN0b3Ag KCk7Ci0Jc3RhcnQgKGphdmFPcHQsIGphdmFBcmdzLCBqYm9zc09wdCwgamJvc3NBcmdzKTsKLX0K LQotLyoqCi0JT3V0cHV0IGxvZyB0byBzdGRvdXQuCi0gKi8KLXN0YXRpYyB2b2lkCi1sb2dPdXRw dXQgKAotIGNoYXIgKiBzdHJpbmcpCi17Ci0JaWYgKCFpc1F1aWV0KQotCQlwcmludGYgKHN0cmlu Zyk7Ci19CkluZGV4OiBmaWxlcy9kYWVtb25jdGwuYy5pbgo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBm aWxlcy9kYWVtb25jdGwuYy5pbgpkaWZmIC1OIGZpbGVzL2RhZW1vbmN0bC5jLmluCi0tLSAvZGV2 L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgZmlsZXMvZGFlbW9uY3RsLmMuaW4J MjIgRGVjIDIwMDQgMjA6NDQ6MjMgLTAwMDAKQEAgLTAsMCArMSw1NTcgQEAKKy8qCisgKiAtKi0g bW9kZTogRnVuZGFtZW50YWw7IHRhYi13aWR0aDogNDsgLSotCisgKiBleDp0cz00CisgKgorICog RGFlbW9uIGNvbnRyb2wgcHJvZ3JhbSwgd2l0aCBKYXZhIFN0YXJ0dXAgb3B0aW9ucy4KKyAqCisg KglPcmlnaW5hbCBieSBFcm5zdCBkZSBIYWFuIDx6bmVyZEBmcmVlYnNkLm9yZz4KKyAqCXd3dy9q YWthcnRhLXRvbWNhdDQvZmlsZXMvZGFlbW9uY3RsLmMKKyAqCisgKiAkRnJlZUJTRDogcG9ydHMv amF2YS9qYm9zczQvZmlsZXMvZGFlbW9uY3RsLmMsdiAxLjMgMjAwNC8xMi8yMiAyMDo0NDoyMyBo cSBFeHAgJAorICovCisKKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxmY250bC5oPgor I2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0ZGlv Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8 c3lzbG9nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3lzL2Vycm5vLmg+Cisj aW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxz eXMvdWlvLmg+CisKKyNkZWZpbmUJVFJVRQkxCisjZGVmaW5lCUZBTFNFCTAKKworLyogVGhlIGlu dGVydmFsIGluIHNlY29uZHMgYmV0d2VlbiB0aGUgY2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGUgcHJv Y2VzcworICAgZGllZCBhZnRlciBhIGtpbGwgKi8KKyNkZWZpbmUgU1RPUF9USU1FX0lOVEVSVkFM CQkxCisKKyNkZWZpbmUgRVJSX0lMTEVHQUxfQVJHVU1FTlQJCQkJMQorI2RlZmluZSBFUlJfUElE X0ZJTEVfTk9UX0ZPVU5ECQkJCTIKKyNkZWZpbmUgRVJSX0tJTExfRkFJTEVECQkJCQkJNQorI2Rl ZmluZSBFUlJfQUxSRUFEWV9SVU5OSU5HCQkJCQk2CisjZGVmaW5lIEVSUl9OT1RfUlVOTklORwkJ CQkJCTcKKyNkZWZpbmUgRVJSX0NIRElSX1RPX0FQUF9IT01FCQkJCTgKKyNkZWZpbmUgRVJSX0FD Q0VTU19KQVJfRklMRQkJCQkJMTcKKyNkZWZpbmUgRVJSX1NURE9VVF9MT0dGSUxFX09QRU4JCQkJ OQorI2RlZmluZSBFUlJfU1RERVJSX0xPR0ZJTEVfT1BFTgkJCQkxMAorI2RlZmluZSBFUlJfRk9S S19GQUlMRUQJCQkJCQkxMQorI2RlZmluZSBFUlJfU1RBVF9KQVZBX0hPTUUJCQkJCTEyCisjZGVm aW5lIEVSUl9KQVZBX0hPTUVfTk9UX0RJUgkJCQkxMworI2RlZmluZSBFUlJfU1RBVF9KQVZBX0NN RAkJCQkJMTQKKyNkZWZpbmUgRVJSX0pBVkFfQ01EX05PVF9GSUxFCQkJCTE1CisjZGVmaW5lIEVS Ul9KQVZBX0NNRF9OT1RfRVhFQ1VUQUJMRQkJCTE2CisKKy8qCisJRnVuY3Rpb24gZGVjbGFyYXRp b25zLgorICovCitzdGF0aWMgdm9pZCBwcmludFVzYWdlICh2b2lkKTsKK3N0YXRpYyBpbnQgcmVh ZFBJRCAodm9pZCk7CitzdGF0aWMgdm9pZCB3cml0ZVBJRCAoaW50IHBpZCk7CitzdGF0aWMgdm9p ZCBjbGVhclBJRCAodm9pZCk7CitzdGF0aWMgdm9pZCBzdGFydCAoaW50IGphdmFPcHQsIGNoYXIg KiBqYXZhQXJncyBbXSwgaW50IGpib3NzT3B0LCBjaGFyICogamJvc3NBcmdzIFtdKTsKK3N0YXRp YyB2b2lkIHN0b3AgKHZvaWQpOworc3RhdGljIHZvaWQgcmVzdGFydCAoaW50IGphdmFPcHQsIGNo YXIgKiBqYXZhQXJncyBbXSwgaW50IGpib3NzT3B0LCBjaGFyICogamJvc3NBcmdzIFtdKTsKK3N0 YXRpYyB2b2lkIGxvZ091dHB1dCAoY2hhciAqKTsKKworLyoKKwlHbG9iYWxzCisgKi8KK3N0YXRp YyBpbnQgaXNRdWlldCA9IEZBTFNFOworc3RhdGljIGNoYXIgKiBvcHRRdWlldCA9ICItcSIsCQkJ LyogcXVpZXQgb3B0aW9uICovCisJCQkqIG9wdENvbmZpZyA9ICItY29uZmlnIjsJLyogamJvc3Mg Y29uZmlndXJhdGlvbiBvcHRpb24gKi8KKworLyoqCisgKiBNYWluIGZ1bmN0aW9uLiBUaGlzIGZ1 bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoaXMgcHJvZ3JhbSBpcyBleGVjdXRlZC4KKyAqCisgKiBA cGFyYW0gYXJnYworICogICAgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgcGx1cyBvbmUsIHNvIGFs d2F5cyBncmVhdGVyIHRoYW4gMC4KKyAqCisgKiBAcGFyYW0gYXJndgorICogICAgdGhlIGFyZ3Vt ZW50cyBpbiBhbiBhcnJheSBvZiBjaGFyYWN0ZXIgcG9pbnRlcnMsIHdoZXJlIHRoZSBsYXN0IGFy Z3VtZW50CisgKiAgICBlbGVtZW50IGlzIGZvbGxvd2VkIGJ5IGEgTlVMTCBlbGVtZW50LgorICov CitpbnQKK21haW4gKAorIGludCBhcmdjLAorIGNoYXIgKmFyZ3YgW10pCit7CisJLyogRGVjbGFy ZSB2YXJpYWJsZXMsIGxpa2UgYWxsIG90aGVyIGdvb2QgQU5TSSBDIHByb2dyYW1zIGRvIDopICov CisJaW50IGksIGphdmFPcHQsIGpib3NzT3B0OworCWNoYXIgKmFyZ3VtZW50LCAqKmphdmFBcmdz LCAqKmpib3NzQXJnczsKKworCS8qIFBhcnNlIHRoZSBhcmd1bWVudHMgKi8KKwlpZiAoYXJnYyA8 IDIpCisJeworCQlwcmludFVzYWdlICgpOworCQlyZXR1cm4gMDsKKwl9CisKKwkvKiBYWFg6IEZp eCBmb3Igc2V0dGluZyB1cCB0aGUgZW52aXJvbm1lbnQgZm9yIHRoZSBqYXZhIHdyYXBwZXIgc2Ny aXB0ICovCisJc2V0dWlkIChnZXRldWlkICgpKTsKKwlzZXRnaWQgKGdldGVnaWQgKCkpOworCisJ LyoKKwkJQnVpbGQgdXAgamF2YSBhbmQgamJvc3Mgb3B0aW9uIGJsb2Nrcy4KKwkgKi8KKwlqYXZh T3B0ID0gamJvc3NPcHQgPSAwOworCWZvciAoaSA9IDE7IGkgPCBhcmdjOyBpKyspCisJeworCQlp ZiAoc3RyY21wIChhcmd2IFtpXSwgb3B0UXVpZXQpID09IDApCisJCXsKKwkJCWlzUXVpZXQgPSBU UlVFOworCisJCX0gZWxzZSBpZiAoc3RyY21wIChhcmd2IFtpXSwgb3B0Q29uZmlnKSA9PSAwKQor CQl7CisJCQlqYm9zc09wdCArPSAyOworCQkJaWYgKCsraSA+PSBhcmdjKQorCQkJeworCQkJCXBy aW50VXNhZ2UgKCk7CisJCQkJcmV0dXJuIEVSUl9JTExFR0FMX0FSR1VNRU5UOworCQkJfQorCisJ CX0gZWxzZSBpZiAoKmFyZ3YgW2ldID09ICctJykKKwkJeworCQkJamF2YU9wdCsrOworCQl9CisJ fQorCWlmIChqYXZhT3B0ID09IDApCisJCWphdmFBcmdzID0gTlVMTDsKKwllbHNlCisJeworCQlp bnQgaiA9IDA7CisJCWphdmFBcmdzID0gbWFsbG9jIChzaXplb2YgKGNoYXIgKikgKiBqYXZhT3B0 KTsKKwkJZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykKKwkJeworCQkJaWYgKHN0cmNtcCAoYXJn diBbaV0sIG9wdFF1aWV0KSAmJgorCQkJCXN0cmNtcCAoYXJndiBbaV0sIG9wdENvbmZpZykgJiYK KwkJCQkqYXJndiBbaV0gPT0gJy0nKQorCQkJeworCQkJCWphdmFBcmdzIFtqKytdID0gYXJndiBb aV07CisJCQl9CisJCX0KKwl9CisJaWYgKGpib3NzT3B0ID09IDApCisJCWpib3NzQXJncyA9IE5V TEw7CisJZWxzZQorCXsKKwkJaW50IGogPSAwOworCQlqYm9zc0FyZ3MgPSBtYWxsb2MgKHNpemVv ZiAoY2hhciAqKSAqIGpib3NzT3B0KTsKKwkJZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykKKwkJ eworCQkJaWYgKHN0cmNtcCAoYXJndiBbaV0sIG9wdENvbmZpZykgPT0gMCkKKwkJCXsKKwkJCQlq Ym9zc0FyZ3MgW2orK10gPSAiLWMiOworCQkJCWpib3NzQXJncyBbaisrXSA9IGFyZ3YgWysraV07 CisJCQl9CisJCX0KKwl9CisKKwkvKgorCQlEZWNpZGUgb24ganVzdCB3aGF0IHRvIGNhbGwuCisJ ICovCisJYXJndW1lbnQgPSBhcmd2IFthcmdjIC0gMV07CisJaWYgKHN0cmNtcCAoInN0YXJ0Iiwg YXJndW1lbnQpID09IDApCisJeworCQlzdGFydCAoamF2YU9wdCwgamF2YUFyZ3MsIGpib3NzT3B0 LCBqYm9zc0FyZ3MpOworCisJfSBlbHNlIGlmIChzdHJjbXAgKCJzdG9wIiwgYXJndW1lbnQpID09 IDApCisJeworCQlzdG9wICgpOworCisJfSBlbHNlIGlmIChzdHJjbXAgKCJyZXN0YXJ0IiwgYXJn dW1lbnQpID09IDApCisJeworCQlyZXN0YXJ0IChqYXZhT3B0LCBqYXZhQXJncywgamJvc3NPcHQs IGpib3NzQXJncyk7CisKKwl9IGVsc2UgeworCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xf U0NSSVBUX05BTUUlJTogSWxsZWdhbCBhcmd1bWVudCBcIiVzXCIuXG4iLCBhcmd1bWVudCk7CisJ CXByaW50VXNhZ2UgKCk7CisJCWV4aXQgKEVSUl9JTExFR0FMX0FSR1VNRU5UKTsKKwl9CisKKwly ZXR1cm4gRVhJVF9TVUNDRVNTOworfQorCisvKioKKyAqIFByaW50cyB1c2FnZSBpbmZvcm1hdGlv biB0byBzdGRvdXQuCisgKi8KK3N0YXRpYyB2b2lkCitwcmludFVzYWdlICh2b2lkKQoreworCXBy aW50ZiAoIlVzYWdlOiAlJUNPTlRST0xfU0NSSVBUX05BTUUlJSBbamF2YS1vcHRpb25zXSBbLWNv bmZpZyBqYm9zc2NvbmZpZ10ge3N0YXJ0fHN0b3B8cmVzdGFydH1cbiIpOworfQorCisvKioKKyAq IFJlYWRzIGEgUElEIGZyb20gdGhlIFBJRCBmaWxlLgorICoKKyAqIEByZXR1cm4KKyAqICAgIHRo ZSBQSUQsIG9yIC0xIGlmIHRoZSBmaWxlIHdhcyBlbXB0eS4KKyAqLworc3RhdGljIGludAorcmVh ZFBJRCAodm9pZCkKK3sKKwlGSUxFICogZmlsZTsKKwlpbnQgcGlkOworCisJbG9nT3V0cHV0ICgi Pj4gUmVhZGluZyBQSUQgZmlsZSAoJSVQSURfRklMRSUlKS4uLiIpOworCWZpbGUgPSBmb3BlbiAo IiUlUElEX0ZJTEUlJSIsICJyIik7CisJaWYgKCFmaWxlKQorCXsKKwkJbG9nT3V0cHV0ICgiIFsg RkFJTEVEIF1cbiIpOworCQlwZXJyb3IgKCIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxl IHRvIG9wZW4gJSVQSURfRklMRSUlIGZvciByZWFkaW5nOiAiKTsKKwkJZXhpdCAoRVJSX1BJRF9G SUxFX05PVF9GT1VORCk7CisJfQorCWlmIChmc2NhbmYgKGZpbGUsICIlZCIsICZwaWQpIDwgMSkK KwkJcGlkID0gLTE7CisJZmNsb3NlIChmaWxlKTsKKworCWxvZ091dHB1dCAoIiBbIERPTkUgXVxu Iik7CisJcmV0dXJuIHBpZDsKK30KKworLyoqCisgKiBXcml0ZXMgYSBwcm9jZXNzIElEIHRvIHRo ZSBzcGVjaWZpZWQgZmlsZS4gVGhlIGZpbGUgaXMgaWRlbnRpZmllZCBieSBhIGZpbGUKKyAqIGhh bmRsZS4KKyAqCisgKiBAcGFyYW0gcGlkCisgKiAgICB0aGUgUElEIHRvIHN0b3JlLCBhbHdheXMg Z3JlYXRlciB0aGFuIDAuCisgKi8KK3N0YXRpYyB2b2lkCit3cml0ZVBJRCAoCisgaW50IHBpZCkK K3sKKwlGSUxFICogZmlsZTsKKworCWxvZ091dHB1dCAoIj4+IFdyaXRpbmcgUElEIGZpbGUuLi4i KTsKKwlmaWxlID0gZm9wZW4gKCIlJVBJRF9GSUxFJSUiLCAidyIpOworCWlmICghZmlsZSkKKwl7 CisJCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKKwkJcGVycm9yICgiJSVDT05UUk9MX1ND UklQVF9OQU1FJSU6IFVuYWJsZSB0byBvcGVuICUlUElEX0ZJTEUlJSBmb3Igd3JpdGluZzogIik7 CisJCWV4aXQgKEVSUl9QSURfRklMRV9OT1RfRk9VTkQpOworCX0KKwlmcHJpbnRmIChmaWxlLCAi JWRcbiIsIHBpZCk7CisJZmNsb3NlIChmaWxlKTsKKworCWxvZ091dHB1dCAoIiBbIERPTkUgXVxu Iik7Cit9CisKKy8qKgorCVRydW5jYXRlIHRoZSBQSUQgZmlsZS4KKyAqLworc3RhdGljIHZvaWQK K2NsZWFyUElEICh2b2lkKQoreworCWlmICh0cnVuY2F0ZSAoIiUlUElEX0ZJTEUlJSIsIDApICE9 IDApCisJeworCQlwZXJyb3IgKCIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIGNs ZWFyICUlUElEX0ZJTEUlJTogIik7CisJCWV4aXQgKEVSUl9QSURfRklMRV9OT1RfRk9VTkQpOwor CX0KK30KKworLyoqCisgKiBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBwcm9jZXNzIGlzIHJ1bm5p bmcuCisgKgorICogQHBhcmFtIHBpZAorICogICAgdGhlIHByb2Nlc3MgaWQsIGdyZWF0ZXIgdGhh biAwLgorICoKKyAqIEByZXR1cm4KKyAqICAgIDAgaWYgdGhlIHNwZWNpZmllZCBwcm9jZXNzIGlz IG5vdCBydW5uaW5nLCBhIGRpZmZlcmVudCB2YWx1ZSBvdGhlcndpc2UuCisgKi8KK3N0YXRpYyBp bnQKK2V4aXN0c1Byb2Nlc3MgKAorIGludCBwaWQpCit7CisJaW50IHJlc3VsdDsKKworCS8qIENo ZWNrIHByZWNvbmRpdGlvbnMgKi8KKwlhc3NlcnQgKHBpZCA+IDApOworCisJLyogU2VlIGlmIHRo ZSBwcm9jZXNzIGV4aXN0cyAqLworICAgCXJlc3VsdCA9IGtpbGwgKHBpZCwgMCk7CisKKwkvKiBJ ZiB0aGUgcmVzdWx0IGlzIDAsIHRoZW4gdGhlIHByb2Nlc3MgZXhpc3RzICovCisJcmV0dXJuIHJl c3VsdCA9PSAwOworfQorCisvKioKKyAqIEtpbGxzIHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkg dGhlIHNwZWNpZmllZCBJRC4KKyAqCisgKiBAcGFyYW0gcGlkCisgKiAgICB0aGUgcHJvY2VzcyBp ZCwgZ3JlYXRlciB0aGFuIDAuCisgKi8KK3N0YXRpYyB2b2lkCitraWxsUHJvY2VzcyAoCisgaW50 IHBpZCkKK3sKKwlpbnQgcmVzdWx0OworCXVuc2lnbmVkIGludCB3YWl0ZWQ7CisJdW5zaWduZWQg aW50IGZvcmNlZDsKKwl1bnNpZ25lZCBpbnQgaW50ZXJ2YWwgPSBTVE9QX1RJTUVfSU5URVJWQUw7 CisJdW5zaWduZWQgaW50IHRpbWVvdXQgID0gJSVTVE9QX1RJTUVPVVQlJTsKKworCS8qIENoZWNr IHByZWNvbmRpdGlvbnMgKi8KKwlhc3NlcnQgKHBpZCA+IDApOworCisJaWYgKCFpc1F1aWV0KQor CQlwcmludGYgKCI+PiBUZXJtaW5hdGluZyBwcm9jZXNzICVkLi4uIiwgcGlkKTsKKwlyZXN1bHQg PSBraWxsIChwaWQsIFNJR1RFUk0pOworCWlmIChyZXN1bHQgPCAwKSB7CisJCWxvZ091dHB1dCAo IiBbIEZBSUxFRCBdXG4iKTsKKwkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9O QU1FJSU6IFVuYWJsZSB0byBraWxsIHByb2Nlc3MgJWQ6ICIsIHBpZCk7CisJCXBlcnJvciAoTlVM TCk7CisJCWV4aXQgKEVSUl9LSUxMX0ZBSUxFRCk7CisJfQorCisJLyogV2FpdCB1bnRpbCB0aGUg cHJvY2VzcyBpcyBhY3R1YWxseSBraWxsZWQgKi8KKyAgICByZXN1bHQgPSBleGlzdHNQcm9jZXNz IChwaWQpOworCWZvciAod2FpdGVkPTA7IHJlc3VsdCA9PSAxICYmIHdhaXRlZCA8IHRpbWVvdXQ7 IHdhaXRlZCArPSBpbnRlcnZhbCkKKwl7CisJCWxvZ091dHB1dCAoIi4iKTsKKwkJZmZsdXNoIChz dGRvdXQpOworCQlzbGVlcCAoaW50ZXJ2YWwpOworICAgIAlyZXN1bHQgPSBleGlzdHNQcm9jZXNz IChwaWQpOworCX0KKworCS8qIElmIHRoZSBwcm9jZXNzIHN0aWxsIGV4aXN0cywgdGhlbiBoYXZl IG5vIG1lcmN5IGFuZCBraWxsIGl0ICovCisJZm9yY2VkID0gMDsKKwlpZiAocmVzdWx0ID09IDEp CisJeworCQkvKiBGb3JjZSB0aGUgcHJvY2VzcyB0byBkaWUgKi8KKwkJcmVzdWx0ID0ga2lsbCAo cGlkLCBTSUdLSUxMKTsKKwkJaWYgKHJlc3VsdCA9PSAwKSB7CisJCQlmb3JjZWQgPSAxOworCQkJ bG9nT3V0cHV0ICgiIFsgS0lMTEVEIF1cbiIpOworCQkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05U Uk9MX1NDUklQVF9OQU1FJSU6IFByb2Nlc3MgJWQgZGlkIG5vdCB0ZXJtaW5hdGUgd2l0aGluICUl U1RPUF9USU1FT1VUJSUgc2VjLiBLaWxsZWQuXG4iLCBwaWQpOworCQl9IGVsc2UgaWYgKHJlc3Vs dCAhPSBFU1JDSCkgeworCQkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOworCQkJZnByaW50 ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBraWxsIHByb2Nl c3MgJWQ6ICIsIHBpZCk7CisJCQlwZXJyb3IgKE5VTEwpOworCQkJZXhpdCAoRVJSX0tJTExfRkFJ TEVEKTsKKwkJfQorCX0KKworCWlmIChmb3JjZWQgPT0gMCkgeworCQlsb2dPdXRwdXQgKCIgWyBE T05FIF1cbiIpOworCX0KK30KKworLyoqCisgKiBTdGFydHMgdGhlIGRhZW1vbi4KKyAqLworc3Rh dGljIHZvaWQKK3N0YXJ0ICgKKyBpbnQgamF2YU9wdCwKKyBjaGFyICogamF2YUFyZ3MgW10sCisg aW50IGpib3NzT3B0LAorIGNoYXIgKiBqYm9zc0FyZ3MgW10pCit7CisJaW50IGksIGFyZ2M7CisJ Y2hhciAqKiBhcmd2OworCWludCBwaWQ7CisJaW50IHJlc3VsdDsKKwlpbnQgc3Rkb3V0TG9nRmls ZTsKKwlpbnQgc3RkZXJyTG9nRmlsZTsKKwlzdHJ1Y3Qgc3RhdCBzYjsKKworCXBpZCA9IHJlYWRQ SUQgKCk7CisKKwlsb2dPdXRwdXQgKCI+PiBTdGFydGluZyAlJUFQUF9USVRMRSUlICUlUE9SVFZF UlNJT04lJS4uLiIpOworCWlmIChwaWQgIT0gLTEpCisJeworCQkvKiBDaGVjayBpZiB0aGUgcHJv Y2VzcyBhY3R1YWxseSBleGlzdHMgKi8KKwkJcmVzdWx0ID0gZXhpc3RzUHJvY2VzcyAocGlkKTsK KwkJaWYgKHJlc3VsdCA9PSAxKQorCQl7CisJCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7 CisJCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogJSVBUFBfVElU TEUlJSAlJVBPUlRWRVJTSU9OJSUgaXMgYWxyZWFkeSBydW5uaW5nLCBQSUQgaXMgJWQuXG4iLCBw aWQpOworCQkJZXhpdCAoRVJSX0FMUkVBRFlfUlVOTklORyk7CisJCX0KKwl9CisKKwkvKiBDaGVj ayBpZiB0aGUgSkRLIGhvbWUgZGlyZWN0b3J5IGlzIGFjdHVhbGx5IGEgZGlyZWN0b3J5ICovCisJ cmVzdWx0ID0gc3RhdCAoIiUlSkFWQV9IT01FJSUiLCAmc2IpOworCWlmIChyZXN1bHQgIT0gMCkg eworCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7CisJCWZwcmludGYgKHN0ZGVyciwgIiUl Q09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBVbmFibGUgdG8gc3RhdCAlJUpBVkFfSE9NRSUlOiAiKTsK KwkJcGVycm9yIChOVUxMKTsKKwkJZXhpdCAoRVJSX1NUQVRfSkFWQV9IT01FKTsKKwl9CisJaWYg KCFTX0lTRElSIChzYi5zdF9tb2RlKSkgeworCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7 CisJCWZwcmludGYgKHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBKYXZhIGhvbWUg ZGlyZWN0b3J5ICUlSkFWQV9IT01FJSUgaXMgbm90IGEgZGlyZWN0b3J5LlxuIik7CisJCWV4aXQg KEVSUl9KQVZBX0hPTUVfTk9UX0RJUik7CisJfQorCisJLyogQ2hlY2sgaWYgdGhlIEphdmEgY29t bWFuZCBpcyBhY3R1YWxseSBhbiBleGVjdXRhYmxlIHJlZ3VsYXIgZmlsZSAqLworCXJlc3VsdCA9 IHN0YXQgKCIlJUpBVkElJSIsICZzYik7CisJaWYgKHJlc3VsdCAhPSAwKSB7CisJCWxvZ091dHB1 dCAoIiBbIEZBSUxFRCBdXG4iKTsKKwkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQ VF9OQU1FJSU6IFVuYWJsZSB0byBzdGF0ICUlSkFWQSUlOiAiKTsKKwkJcGVycm9yIChOVUxMKTsK KwkJZXhpdCAoRVJSX1NUQVRfSkFWQV9DTUQpOworCX0KKwlpZiAoIVNfSVNSRUcgKHNiLnN0X21v ZGUpKSB7CisJCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKKwkJZnByaW50ZiAoc3RkZXJy LCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IEphdmEgY29tbWFuZCAlJUpBVkElJSBpcyBub3Qg YSByZWd1bGFyIGZpbGUuXG4iKTsKKwkJZXhpdCAoRVJSX0pBVkFfQ01EX05PVF9GSUxFKTsKKwl9 CisJcmVzdWx0ID0gYWNjZXNzICgiJSVKQVZBJSUiLCBYX09LKTsKKwlpZiAocmVzdWx0ICE9IDAp IHsKKwkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOworCQlmcHJpbnRmIChzdGRlcnIsICIl JUNPTlRST0xfU0NSSVBUX05BTUUlJTogSmF2YSBjb21tYW5kICUlSkFWQSUlIGlzIG5vdCBleGVj dXRhYmxlOiAiKTsKKwkJcGVycm9yIChOVUxMKTsKKwkJZXhpdCAoRVJSX0pBVkFfQ01EX05PVF9F WEVDVVRBQkxFKTsKKwl9CisKKwkvKiBDaGFuZ2UgZGlyZWN0b3J5ICovCisJcmVzdWx0ID0gY2hk aXIgKCIlJUFQUF9IT01FJSUiKTsKKwlpZiAocmVzdWx0IDwgMCkgeworCQlsb2dPdXRwdXQgKCIg WyBGQUlMRUQgXVxuIik7CisJCWZwcmludGYgKHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFN RSUlOiBVbmFibGUgdG8gYWNjZXNzIGRpcmVjdG9yeSAlJUFQUF9IT01FJSU6ICIpOworCQlwZXJy b3IgKE5VTEwpOworCQlleGl0IChFUlJfQ0hESVJfVE9fQVBQX0hPTUUpOworCX0KKworCS8qIFNl ZSBpZiB0aGUgSkFSIGZpbGUgZXhpc3RzICovCisJcmVzdWx0ID0gYWNjZXNzICgiJSVBUFBfSE9N RSUlLyUlSkFSX0ZJTEUlJSIsIFJfT0spOworCWlmIChyZXN1bHQgPCAwKSB7CisJCWxvZ091dHB1 dCAoIiBbIEZBSUxFRCBdXG4iKTsKKwkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQ VF9OQU1FJSU6IFVuYWJsZSB0byBhY2Nlc3MgSkFSIGZpbGUgJSVBUFBfSE9NRSUlLyUlSkFSX0ZJ TEUlJTogIik7CisJCXBlcnJvciAoTlVMTCk7CisJCWV4aXQgKEVSUl9BQ0NFU1NfSkFSX0ZJTEUp OworCX0KKworCS8qIE9wZW4gdGhlIHN0ZG91dCBsb2cgZmlsZSAqLworCXN0ZG91dExvZ0ZpbGUg PSBvcGVuICgiJSVTVERPVVRfTE9HJSUiLCBPX1dST05MWSk7CisJaWYgKHN0ZG91dExvZ0ZpbGUg PCAwKSB7CisJCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKKwkJZnByaW50ZiAoc3RkZXJy LCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBvcGVuICUlU1RET1VUX0xPRyUl IGZvciB3cml0aW5nOiAiKTsKKwkJcGVycm9yIChOVUxMKTsKKwkJZXhpdCAoRVJSX1NURE9VVF9M T0dGSUxFX09QRU4pOworCX0KKwlsc2VlayAoc3Rkb3V0TG9nRmlsZSwgKG9mZl90KSAwLCBTRUVL X0VORCk7CisKKwkvKiBPcGVuIHRoZSBzdGRlcnIgbG9nIGZpbGUgKi8KKwlzdGRlcnJMb2dGaWxl ID0gb3BlbiAoIiUlU1RERVJSX0xPRyUlIiwgT19XUk9OTFkpOworCWlmIChzdGRlcnJMb2dGaWxl IDwgMCkgeworCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7CisJCWZwcmludGYgKHN0ZGVy ciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBVbmFibGUgdG8gb3BlbiAlJVNUREVSUl9MT0cl JSBmb3Igd3JpdGluZzogIik7CisJCXBlcnJvciAoTlVMTCk7CisJCWV4aXQgKEVSUl9TVERFUlJf TE9HRklMRV9PUEVOKTsKKwl9CisJbHNlZWsgKHN0ZGVyckxvZ0ZpbGUsIChvZmZfdCkgMCwgU0VF S19FTkQpOworCisJLyogU3BsaXQgdGhpcyBwcm9jZXNzIGluIHR3byAqLworCXN3aXRjaCAocGlk ID0gZm9yayAoKSkKKwl7CisJY2FzZSAtMToKKwkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIp OworCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxlIHRv IGZvcms6ICIpOworCQlwZXJyb3IgKE5VTEwpOworCQlleGl0IChFUlJfRk9SS19GQUlMRUQpOwor CQlicmVhazsKKworCWNhc2UgMDoKKwkJLyogUmVkaXJlY3Qgc3Rkb3V0IHRvIGxvZyBmaWxlICov CisJCWR1cDIgKHN0ZG91dExvZ0ZpbGUsIFNURE9VVF9GSUxFTk8pOworCisJCS8qIFJlZGlyZWN0 IHN0ZGVyciB0byBsb2cgZmlsZSAqLworCQlkdXAyIChzdGRlcnJMb2dGaWxlLCBTVERFUlJfRklM RU5PKTsKKworCQkvKiBUT0RPOiBTdXBwb3J0IHJlZGlyZWN0aW9uIG9mIGJvdGggc3Rkb3V0IGFu ZCBzdGRlcnIgdG8gdGhlIHNhbWUKKwkJCQkgZmlsZSB1c2luZyBwaXBlICgyKSAqLworCisJCS8q CisJCQlCdWlsZCB0aGUgYXJndW1lbnQgdmVjdG9yLCB3aXRoIHRoZSBqYXZhL2pib3NzIG9wdGlv bnMgaWYgYW55LgorCQkgKi8KKwkJYXJndiA9IG1hbGxvYyAoc2l6ZW9mIChjaGFyICopICogKGph dmFPcHQgKyBqYm9zc09wdCArIDUpKTsKKwkJYXJnYyA9IDA7CisJCWFyZ3YgW2FyZ2MrK10gPSAi JSVKQVZBJSUiOworCQlmb3IgKGkgPSAwOyBpIDwgamF2YU9wdDsgaSsrKQorCQkJYXJndiBbYXJn YysrXSA9IGphdmFBcmdzIFtpXTsKKwkJYXJndiBbYXJnYysrXSA9ICItY3AiOworCQlhcmd2IFth cmdjKytdID0gIiUlSkFWQV9DUCUlIjsKKwkJYXJndiBbYXJnYysrXSA9ICIlJUpBVkFfTUFJTiUl IjsKKwkJZm9yIChpID0gMDsgaSA8IGpib3NzT3B0OyBpKyspCisJCQlhcmd2IFthcmdjKytdID0g amJvc3NBcmdzIFtpXTsKKwkJYXJndiBbYXJnYysrXSA9IE5VTEw7CisKKwkJLyogRXhlY3V0ZSB0 aGUgY29tbWFuZCAqLworCQlleGVjdiAoYXJndiBbMF0sIGFyZ3YpOworCQlwZXJyb3IgKE5VTEwp OworCQlicmVhazsKKworCWRlZmF1bHQ6CisJCWxvZ091dHB1dCAoIiBbIERPTkUgXVxuIik7CisJ CXdyaXRlUElEIChwaWQpOworCX0KK30KKworLyoqCisgKiBTdG9wcyB0aGUgZGFlbW9uLgorICov CitzdGF0aWMgdm9pZAorc3RvcCAodm9pZCkKK3sKKwlpbnQgcGlkOworCisJcGlkID0gcmVhZFBJ RCAoKTsKKworCWxvZ091dHB1dCAoIj4+IENoZWNraW5nIGlmICUlQVBQX1RJVExFJSUgJSVQT1JU VkVSU0lPTiUlIGlzIHJ1bm5pbmcuLi4iKTsKKworCS8qIElmIHRoZXJlIGlzIGEgUElELCBzZWUg aWYgdGhlIHByb2Nlc3Mgc3RpbGwgZXhpc3RzICovCisJaWYgKHBpZCAhPSAtMSkKKwl7CisJCWlu dCByZXN1bHQgPSBraWxsIChwaWQsIDApOworCQlpZiAocmVzdWx0ICE9IDAgJiYgZXJybm8gPT0g RVNSQ0gpCisJCXsKKwkJCWNsZWFyUElEICgpOworCQkJcGlkID0gLTE7CisJCX0KKwl9CisKKwkv KiBJZiB0aGVyZSBpcyBubyBydW5uaW5nIHByb2Nlc3MsIHByb2R1Y2UgYW4gZXJyb3IgKi8KKwlp ZiAocGlkID09IC0xKQorCXsKKwkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOworCQlmcHJp bnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogJSVBUFBfVElUTEUlJSAlJVBP UlRWRVJTSU9OJSUgaXMgY3VycmVudGx5IG5vdCBydW5uaW5nLlxuIik7CisJCWV4aXQgKEVSUl9O T1RfUlVOTklORyk7CisJfQorCWxvZ091dHB1dCAoIiBbIERPTkUgXVxuIik7CisKKwkvKiBUZXJt aW5hdGUgdGhlIHByb2Nlc3MgKi8KKwlraWxsUHJvY2VzcyAocGlkKTsKKwljbGVhclBJRCAoKTsK K30KKworCisvKioKKyAqIFJlc3RhcnRzIHRoZSBwcm9jZXNzLiBJZiBpdCBub3QgY3VycmVudGx5 IHJ1bm5pbmcsIHRoZW4gaXQgd2lsbCBmYWlsLgorICovCitzdGF0aWMgdm9pZAorcmVzdGFydCAo CisgaW50IGphdmFPcHQsCisgY2hhciAqIGphdmFBcmdzIFtdLAorIGludCBqYm9zc09wdCwKKyBj aGFyICogamJvc3NBcmdzIFtdKQoreworCXN0b3AgKCk7CisJc3RhcnQgKGphdmFPcHQsIGphdmFB cmdzLCBqYm9zc09wdCwgamJvc3NBcmdzKTsKK30KKworLyoqCisJT3V0cHV0IGxvZyB0byBzdGRv dXQuCisgKi8KK3N0YXRpYyB2b2lkCitsb2dPdXRwdXQgKAorIGNoYXIgKiBzdHJpbmcpCit7CisJ aWYgKCFpc1F1aWV0KQorCQlwcmludGYgKHN0cmluZyk7Cit9CkluZGV4OiBmaWxlcy9qYm9zczQu c2guaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogZmlsZXMvamJvc3M0LnNoLmluCmRpZmYgLU4gZmls ZXMvamJvc3M0LnNoLmluCi0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAor KysgZmlsZXMvamJvc3M0LnNoLmluCTEzIEp1biAyMDA2IDE3OjQzOjE0IC0wMDAwCkBAIC0wLDAg KzEsNjEgQEAKKyMhL2Jpbi9zaAorIworIyAlJUFQUF9USVRMRSUlIHN0YXJ0dXAgc2NyaXB0Lgor IworIyAkRnJlZUJTRDogcG9ydHMvamF2YS9qYm9zczQvZmlsZXMvc3RhcnR1cC5zaCx2IDEuNCAy MDA2LzA2LzEzIDE3OjQzOjE0IGdsZXdpcyBFeHAgJAorIworCisjIFBST1ZJREU6ICUlQVBQX1NI T1JUTkFNRSUlCisjIFJFUVVJUkU6IE5FVFdPUktJTkcgU0VSVkVSUworCisjIEFkZCB0aGUgZm9s bG93aW5nIGxpbmVzIHRvIC9ldGMvcmMuY29uZiB0byBlbmFibGUgJSVBUFBfU0hPUlROQU1FJSU6 CisjICUlQVBQX1NIT1JUTkFNRSUlX2VuYWJsZSAoYm9vbCk6CQlTZXQgdG8gIk5PIiBieSBkZWZh dWx0LgorIwkJCQlTZXQgaXQgdG8gIllFUyIgdG8gZW5hYmxlICUlQVBQX1NIT1JUTkFNRSUlCisj ICUlQVBQX1NIT1JUTkFNRSUlX2ZsYWdzIChzdHIpOgkJU2V0IHRvICItc2VydmVyIiBieSBkZWZh dWx0LgorIwkJCQlFeHRyYSBKVk0gZmxhZ3MuCisjICUlQVBQX1NIT1JUTkFNRSUlX2NvbmZpZyAo c3RyKToJCVNldCB0byAiIiBieSBkZWZhdWx0CisjCQkJCUpCb3NzIHNlcnZlciBjb25maWcsIGVn IHthbGx8ZGVmYXVsdHxtaW5pbWFsfHN0YW5kYXJkfQorIworLiAlJVJDX1NVQlIlJQorCituYW1l PSIlJUFQUF9TSE9SVE5BTUUlJSIKK3JjdmFyPWBzZXRfcmN2YXJgCisKK3N0YXJ0X2NtZD0iJSVB UFBfU0hPUlROQU1FJSVfc3RhcnQiCityZXN0YXJ0X2NtZD0iJSVBUFBfU0hPUlROQU1FJSVfcmVz dGFydCIKK3BpZGZpbGU9IiUlUElEX0ZJTEUlJSIKK3Byb2NuYW1lPSIlJUpBVkElJSIKKworWyAt eiAiJCUlQVBQX1NIT1JUTkFNRSUlX2VuYWJsZSIgXQkmJiAlJUFQUF9TSE9SVE5BTUUlJV9lbmFi bGU9Ik5PIgorWyAteiAiJCUlQVBQX1NIT1JUTkFNRSUlX2ZsYWdzIiBdCSYmICUlQVBQX1NIT1JU TkFNRSUlX2ZsYWdzPSItc2VydmVyIgorWyAteiAiJCUlQVBQX1NIT1JUTkFNRSUlX2NvbmZpZyIg XQkmJiAlJUFQUF9TSE9SVE5BTUUlJV9jb25maWc9IiIKKworJSVBUFBfU0hPUlROQU1FJSVfc3Rh cnQgKCkKK3sKKwljaGVja3llc25vICUlQVBQX1NIT1JUTkFNRSUlX2VuYWJsZSAmJgorCXsKKwkJ aWYgWyAhIC1mICR7cGlkZmlsZX0gXQorCQl0aGVuCisJCQl0b3VjaCAke3BpZGZpbGV9CisJCQlj aG93biAlJVVTRVIlJTolJUdST1VQJSUgJHtwaWRmaWxlfQorCQlmaQorCisJCWVjaG8gIlN0YXJ0 aW5nICUlQVBQX1NIT1JUTkFNRSUlLiIKKwkJJSVDT05UUk9MX1NDUklQVCUlIC1xICR7JSVBUFBf U0hPUlROQU1FJSVfZmxhZ3N9ICR7JSVBUFBfU0hPUlROQU1FJSVfY29uZmlnZmxhZ30gJHslJUFQ UF9TSE9SVE5BTUUlJV9jb25maWd9IHN0YXJ0CisJfQorfQorCislJUFQUF9TSE9SVE5BTUUlJV9y ZXN0YXJ0ICgpCit7CisJY2hlY2t5ZXNubyAlJUFQUF9TSE9SVE5BTUUlJV9lbmFibGUgJiYKKwl7 CisJCWVjaG8gIlJlc3RhcnRpbmcgJSVBUFBfU0hPUlROQU1FJSUuIgorCQklJUNPTlRST0xfU0NS SVBUJSUgLXEgJHslJUFQUF9TSE9SVE5BTUUlJV9mbGFnc30gJHslJUFQUF9TSE9SVE5BTUUlJV9j b25maWdmbGFnfSAkeyUlQVBQX1NIT1JUTkFNRSUlX2NvbmZpZ30gcmVzdGFydAorCX0KK30KKwor bG9hZF9yY19jb25maWcgJG5hbWUKKworWyAtbiAiJHslJUFQUF9TSE9SVE5BTUUlJV9jb25maWd9 IiBdICYmICUlQVBQX1NIT1JUTkFNRSUlX2NvbmZpZ2ZsYWc9Ii1jb25maWciCisKK3J1bl9yY19j b21tYW5kICIkMSIKSW5kZXg6IGZpbGVzL3BhdGNoLWJ1aWxkLnhtbAo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm aWxlOiBmaWxlcy9wYXRjaC1idWlsZC54bWwKZGlmZiAtTiBmaWxlcy9wYXRjaC1idWlsZC54bWwK LS0tIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBmaWxlcy9wYXRjaC1i dWlsZC54bWwJMjUgTWFyIDIwMDcgMTU6MDk6NTMgLTAwMDAKQEAgLTAsMCArMSwzOCBAQAorLS0t IC4vYnVpbGQvYnVpbGQueG1sLm9yaWcJU3VuIE1hciAyNSAyMzowNzoxNyAyMDA3CisrKysgLi9i dWlsZC9idWlsZC54bWwJU3VuIE1hciAyNSAyMzowNzo0NCAyMDA3CitAQCAtNDAsNiArNDAsMzUg QEAKKyAgICAtLT4KKyAKKyAgIDx0YXJnZXQgbmFtZT0iaW5pdCIgdW5sZXNzPSJpbml0LmRpc2Fi bGUiIGRlcGVuZHM9Il9idWlsZG1hZ2ljOmluaXQiPgorKzwhLS0gTWFrZSBzdXJlIHdlIGhhdmUg dGhlIHJpZ2h0IHZlcnNpb24gb2YgQW50IC0tPgorKyAgPHByb3BlcnR5IG5hbWU9ImJ1aWxkbWFn aWMuYW50MTUuYmFzZXZlcnNpb24iIHZhbHVlPSIxLjUiLz4KKysgIDxwcm9wZXJ0eSBuYW1lPSJi dWlsZG1hZ2ljLmFudDE2LmJhc2V2ZXJzaW9uIiB2YWx1ZT0iMS42Ii8+CisrICA8cHJvcGVydHkg bmFtZT0iYnVpbGRtYWdpYy5hbnQxNi5iYXNldmVyc2lvbiIgdmFsdWU9IjEuNyIvPgorKyAgPCEt LQorKyAgICAgfCBBZGQgbmV3IGNvbmRpdGlvbnMgZm9yIG90aGVyIHN1cHBvcnRlZCBBbnQgdmVy c2lvbnMgd2hlbiB0aGV5CisrICAgICB8IGJlY29tZSBhdmFpYWxibGUuCisrICAgLS0+CisrCisr ICA8Y29uZGl0aW9uIHByb3BlcnR5PSJidWlsZG1hZ2ljLmFudC5jb21wYXRpYmxlIj4KKysgICAg PG9yPgorKyAgICAgIDxjb250YWlucyBzdHJpbmc9IiR7YW50LnZlcnNpb259IgorKyAgICAgICAg c3Vic3RyaW5nPSJBbnQgdmVyc2lvbiAke2J1aWxkbWFnaWMuYW50MTUuYmFzZXZlcnNpb259Ii8+ CisrICAgICAgPGNvbnRhaW5zIHN0cmluZz0iJHthbnQudmVyc2lvbn0iCisrICAgICAgICBzdWJz dHJpbmc9IkFudCB2ZXJzaW9uICR7YnVpbGRtYWdpYy5hbnQxNi5iYXNldmVyc2lvbn0iLz4KKysg ICAgICA8Y29udGFpbnMgc3RyaW5nPSIke2FudC52ZXJzaW9ufSIKKysgICAgICAgIHN1YnN0cmlu Zz0iQW50IHZlcnNpb24gJHtidWlsZG1hZ2ljLmFudDE3LmJhc2V2ZXJzaW9ufSIvPgorKyAgICA8 L29yPgorKyAgPC9jb25kaXRpb24+CisrCisrICA8ZmFpbCB1bmxlc3M9ImJ1aWxkbWFnaWMuYW50 LmNvbXBhdGlibGUiPgorKworKyAgVW5zdXBwb3J0ZWQgQW50IHZlcnNpb246CisrCisrICAgICR7 YW50LnZlcnNpb259CisrCisrICBQbGVhc2UgaW5zdGFsbCBhIHZlcnNpb24gd2hpY2ggaXMgY29t cGF0aWJsZSB3aXRoIEFudCAke2J1aWxkbWFnaWMuYW50MTUuYmFzZXZlcnNpb259IG9yICR7YnVp bGRtYWdpYy5hbnQxNi5iYXNldmVyc2lvbn0gb3IgJHtidWlsZG1hZ2ljLmFudDE3LmJhc2V2ZXJz aW9ufS4KKysKKysgIDwvZmFpbD4KKyAgIDwvdGFyZ2V0PgorIAorIApJbmRleDogZmlsZXMvcGF0 Y2gtYnVpbGRtYWdpYy5lbnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogZmlsZXMvcGF0Y2gtYnVpbGRt YWdpYy5lbnQKZGlmZiAtTiBmaWxlcy9wYXRjaC1idWlsZG1hZ2ljLmVudAotLS0gL2Rldi9udWxs CTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIGZpbGVzL3BhdGNoLWJ1aWxkbWFnaWMuZW50 CTI1IE1hciAyMDA3IDE1OjEwOjQ1IC0wMDAwCkBAIC0wLDAgKzEsMzcgQEAKKy0tLSAuL3Rvb2xz L2V0Yy9idWlsZG1hZ2ljL2J1aWxkbWFnaWMuZW50Lm9yaWcJU3VuIE1hciAyNSAyMzowNTo1NSAy MDA3CisrKysgLi90b29scy9ldGMvYnVpbGRtYWdpYy9idWlsZG1hZ2ljLmVudAlTdW4gTWFyIDI1 IDIzOjA2OjE1IDIwMDcKK0BAIC03LDM0ICs3LDYgQEAKKyA8IS0tIEluaXRpYWxpemUgdGhlIGJ1 aWxkIHN5c3RlbS4gLS0+CisgPHRhcmdldCBuYW1lPSJfYnVpbGRtYWdpYzppbml0IiB1bmxlc3M9 ImluaXQuZGlzYWJsZSI+CisgCistICA8IS0tIE1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSByaWdodCB2 ZXJzaW9uIG9mIEFudCAtLT4KKy0gIDxwcm9wZXJ0eSBuYW1lPSJidWlsZG1hZ2ljLmFudDE1LmJh c2V2ZXJzaW9uIiB2YWx1ZT0iMS41Ii8+CistICA8cHJvcGVydHkgbmFtZT0iYnVpbGRtYWdpYy5h bnQxNi5iYXNldmVyc2lvbiIgdmFsdWU9IjEuNiIvPgorLSAgCistICA8IS0tCistICAgICB8IEFk ZCBuZXcgY29uZGl0aW9ucyBmb3Igb3RoZXIgc3VwcG9ydGVkIEFudCB2ZXJzaW9ucyB3aGVuIHRo ZXkKKy0gICAgIHwgYmVjb21lIGF2YWlhbGJsZS4KKy0gICAtLT4KKy0KKy0gIDxjb25kaXRpb24g cHJvcGVydHk9ImJ1aWxkbWFnaWMuYW50LmNvbXBhdGlibGUiPgorLSAgICA8b3I+CistICAgICAg PGNvbnRhaW5zIHN0cmluZz0iJHthbnQudmVyc2lvbn0iCistICAgICAgICBzdWJzdHJpbmc9IkFu dCB2ZXJzaW9uICR7YnVpbGRtYWdpYy5hbnQxNS5iYXNldmVyc2lvbn0iLz4KKy0gICAgICA8Y29u dGFpbnMgc3RyaW5nPSIke2FudC52ZXJzaW9ufSIKKy0gICAgICAgIHN1YnN0cmluZz0iQW50IHZl cnNpb24gJHtidWlsZG1hZ2ljLmFudDE2LmJhc2V2ZXJzaW9ufSIvPgorLSAgICA8L29yPgorLSAg PC9jb25kaXRpb24+CistCistICA8ZmFpbCB1bmxlc3M9ImJ1aWxkbWFnaWMuYW50LmNvbXBhdGli bGUiPgorLQorLSAgVW5zdXBwb3J0ZWQgQW50IHZlcnNpb246CistCistICAgICR7YW50LnZlcnNp b259CistCistICBQbGVhc2UgaW5zdGFsbCBhIHZlcnNpb24gd2hpY2ggaXMgY29tcGF0aWJsZSB3 aXRoIEFudCAke2J1aWxkbWFnaWMuYW50MTUuYmFzZXZlcnNpb259IG9yICR7YnVpbGRtYWdpYy5h bnQxNi5iYXNldmVyc2lvbn0uCistCistICA8L2ZhaWw+CistCisgICA8IS0tIEpESyBEZXRlY3Rp b24gLS0+CisgICA8YXZhaWxhYmxlIGNsYXNzbmFtZT0iamF2YS5sYW5nLlN0YWNrVHJhY2VFbGVt ZW50IiBwcm9wZXJ0eT0iSEFWRV9KREtfMS40Ii8+CisgICA8YXZhaWxhYmxlIGNsYXNzbmFtZT0i amF2YS5sYW5nLkVudW0iIHByb3BlcnR5PSJIQVZFX0pES18xLjUiLz4KSW5kZXg6IGZpbGVzL3Br Zy1kZWluc3RhbGwuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogZmlsZXMvcGtnLWRlaW5zdGFsbC5p bgpkaWZmIC1OIGZpbGVzL3BrZy1kZWluc3RhbGwuaW4KLS0tIC9kZXYvbnVsbAkxIEphbiAxOTcw IDAwOjAwOjAwIC0wMDAwCisrKyBmaWxlcy9wa2ctZGVpbnN0YWxsLmluCTE0IEp1bCAyMDAzIDEw OjAzOjEzIC0wMDAwCkBAIC0wLDAgKzEsMzUgQEAKKyMhL2Jpbi9zaAorIworIyBUaGlzIHNjcmlw dCBkb2VzIHRoZSBmb2xsb3dpbmcuCisjCisjICogQ2hlY2tzIGlmIHRoZSBKQm9zcyBQSUQgZmls ZSBleGlzdHMuIElmIGl0IGRvZXMsIGl0IGtpbGxzIHRoZQorIyAgIEpCb3NzIHByb2Nlc3MgYW5k IHJlbW92ZXMgdGhlIFBJRCBmaWxlLgorIworIyAkRnJlZUJTRDogcG9ydHMvamF2YS9qYm9zczQv cGtnLWRlaW5zdGFsbCx2IDEuMiAyMDAzLzA3LzE0IDEwOjAzOjEzIGRlcyBFeHAgJAorIworCisj IE1ha2Ugc3VyZSB3ZSdyZSBpbiB0aGUgcmlnaHQgc3RhZ2Ugb2YgdGhlIHByb2Nlc3MKK2lmIFsg IiQyIiA9ICJERUlOU1RBTEwiIF07IHRoZW4KKworCSMgS2lsbCBKQm9zcyBpZiBpdCBpcyBzdGls bCBydW5uaW5nCisJUElEX0ZJTEU9L3Zhci9ydW4vamJvc3MucGlkCisJaWYgWyAtcyAke1BJRF9G SUxFfSBdOyB0aGVuCisJCVBJRD1gY2F0ICR7UElEX0ZJTEV9YAorCQllY2hvIC1uICI+PiBLaWxs aW5nIEpCb3NzIFNlcnZlciBwcm9jZXNzICgke1BJRH0pLi4uIgorCQkvYmluL2tpbGwgJHtQSUR9 ID4gL2Rldi9udWxsIDI+IC9kZXYvbnVsbAorCQlpZiBbICQ/IC1lcSAwIF07IHRoZW4KKwkJCWVj aG8gIiBbIERPTkUgXSIKKwkJZWxzZQorCQkJZWNobyAiIFsgRkFJTEVEIF0iCisJCWZpCisJCWVj aG8gLW4gIj4+IFJlbW92aW5nIFBJRCBmaWxlICgke1BJRF9GSUxFfSkuLi4iCisJCXJtICR7UElE X0ZJTEV9ID4gL2Rldi9udWxsIDI+IC9kZXYvbnVsbAorCQlpZiBbICQ/IC1lcSAwIF07IHRoZW4K KwkJCWVjaG8gIiBbIERPTkUgXSIKKwkJZWxzZQorCQkJZWNobyAiIFsgRkFJTEVEIF0iCisJCWZp CisJZmkKK2ZpCisKK2V4aXQgMApJbmRleDogZmlsZXMvcGtnLWluc3RhbGwuaW4KPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQpSQ1MgZmlsZTogZmlsZXMvcGtnLWluc3RhbGwuaW4KZGlmZiAtTiBmaWxlcy9wa2ctaW5zdGFs bC5pbgotLS0gL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIGZpbGVzL3Br Zy1pbnN0YWxsLmluCTI2IEFwciAyMDAyIDIxOjU0OjE1IC0wMDAwCkBAIC0wLDAgKzEsNDYgQEAK KyMhL2Jpbi9zaAorIworIyBDaGVja3MgaWYgdGhlICd3d3cnIHVzZXIgYW5kIGdyb3VwIGV4aXN0 LiBJZiB0aGV5IGRvbid0LCB0aGVuCisjIGFuIGF0dGVtcHQgaXMgbWFkZSB0byBjcmVhdGUgYm90 aC4KKyMKKyMgJEZyZWVCU0Q6IHBvcnRzL2phdmEvamJvc3M0L3BrZy1pbnN0YWxsLHYgMS4xIDIw MDIvMDQvMjYgMjE6NTQ6MTUgem5lcmQgRXhwICQKKyMKKworIyBNYWtlIHN1cmUgd2UncmUgY2Fs bGVkIGR1cmluZyB0aGUgJ21ha2UgaW5zdGFsbCcgcHJvY2VzcworaWYgWyAiJDIiICE9ICJQUkUt SU5TVEFMTCIgXTsgdGhlbgorICAgIGV4aXQgMAorZmkKKworIyBTZXQgc29tZSBjb25zdGFudHMK K1VTRVI9d3d3CitHUk9VUD0ke1VTRVJ9CitVSUQ9ODAKK0dJRD0ke1VJRH0KKworIyBTZWUgaWYg dGhlIGdyb3VwIGFscmVhZHkgZXhpc3RzCitpZiAhIHB3IGdyb3Vwc2hvdyAiJHtHUk9VUH0iIDI+ L2Rldi9udWxsIDE+JjI7IHRoZW4KKworCSMgSWYgbm90LCB0cnkgdG8gY3JlYXRlIGl0CisJaWYg cHcgZ3JvdXBhZGQgJHtHUk9VUH0gLWcgJHtHSUR9OyB0aGVuCisJCWVjaG8gIkFkZGVkIGdyb3Vw IFwiJHtHUk9VUH1cIi4iCisJZWxzZQorCQllY2hvICJBZGRpbmcgZ3JvdXAgXCIke0dST1VQfVwi IGZhaWxlZC4uLiIKKwkJZXhpdCAxCisJZmkKK2ZpCisKKyMgU2VlIGlmIHRoZSB1c2VyIGFscmVh ZHkgZXhpc3RzCitpZiAhIHB3IHVzZXJzaG93ICIke1VTRVJ9IiAyPi9kZXYvbnVsbCAxPiYyOyB0 aGVuCisKKwkjIElmIG5vdCwgdHJ5IHRvIGNyZWF0ZSBpdAorCWlmIHB3IHVzZXJhZGQgJHtVU0VS fSAtdSAke1VJRH0gLWcgJHtHUk9VUH0gLWggLSBcCisJCS1zICIvc2Jpbi9ub2xvZ2luIiAtZCAi L25vbmV4aXN0ZW50IiBcCisJCS1jICJXb3JsZCBXaWRlIFdlYiBPd25lciI7IFwKKwl0aGVuCisJ CWVjaG8gIkFkZGVkIHVzZXIgXCIke1VTRVJ9XCIuIgorCWVsc2UKKwkJZWNobyAiQWRkaW5nIHVz ZXIgXCIke1VTRVJ9XCIgZmFpbGVkLi4uIgorCQlleGl0IDEKKwlmaQorZmkKK2V4aXQgMApJbmRl eDogZmlsZXMvcGtnLW1lc3NhZ2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogZmlsZXMvcGtnLW1lc3Nh Z2UKZGlmZiAtTiBmaWxlcy9wa2ctbWVzc2FnZQotLS0gZmlsZXMvcGtnLW1lc3NhZ2UJMjIgRGVj IDIwMDQgMjA6NDQ6MjMgLTAwMDAJMS4xCisrKyAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDow MCAtMDAwMApAQCAtMSw3ICswLDAgQEAKLSUlUEtHTkFNRSUlIGhhcyBiZWVuIGluc3RhbGxlZCBp biAlJUFQUF9IT01FJSUuCi0KLUlmIGEgdXNlciBzaG91bGQgYmUgYWJsZSB0byB1c2UgJSVDT05U Uk9MX1NDUklQVF9OQU1FJSUsIHB1dCBpdCBpbiB0aGUgZ3JvdXAgJyUlR1JPVVAlJScuCi0KLVVz ZSAnbWFuICUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlJyBmb3IgaW5mb3JtYXRpb24gYWJvdXQgc3Rh cnRpbmcgYW5kIHN0b3BwaW5nICUlQVBQX1RJVExFJSUuCi0KLVRvIHJ1biB0aGUgJSVBUFBfVElU TEUlJSBzZXJ2ZXIgZnJvbSBzdGFydHVwLCBhZGQgJSVBUFBfU0hPUlROQU1FJSVfZW5hYmxlPSJZ RVMiIGluIHlvdXIgL2V0Yy9yYy5jb25mLiBFeHRyYSBvcHRpb25zIGNhbiBiZSBmb3VuZCBpbiB0 aGUgc3RhcnR1cCBzY3JpcHQuCkluZGV4OiBmaWxlcy9wa2ctbWVzc2FnZS5pbgo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 ClJDUyBmaWxlOiBmaWxlcy9wa2ctbWVzc2FnZS5pbgpkaWZmIC1OIGZpbGVzL3BrZy1tZXNzYWdl LmluCi0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgZmlsZXMvcGtn LW1lc3NhZ2UuaW4JMjIgRGVjIDIwMDQgMjA6NDQ6MjMgLTAwMDAKQEAgLTAsMCArMSw3IEBACisl JVBLR05BTUUlJSBoYXMgYmVlbiBpbnN0YWxsZWQgaW4gJSVBUFBfSE9NRSUlLgorCitJZiBhIHVz ZXIgc2hvdWxkIGJlIGFibGUgdG8gdXNlICUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlLCBwdXQgaXQg aW4gdGhlIGdyb3VwICclJUdST1VQJSUnLgorCitVc2UgJ21hbiAlJUNPTlRST0xfU0NSSVBUX05B TUUlJScgZm9yIGluZm9ybWF0aW9uIGFib3V0IHN0YXJ0aW5nIGFuZCBzdG9wcGluZyAlJUFQUF9U SVRMRSUlLgorCitUbyBydW4gdGhlICUlQVBQX1RJVExFJSUgc2VydmVyIGZyb20gc3RhcnR1cCwg YWRkICUlQVBQX1NIT1JUTkFNRSUlX2VuYWJsZT0iWUVTIiBpbiB5b3VyIC9ldGMvcmMuY29uZi4g RXh0cmEgb3B0aW9ucyBjYW4gYmUgZm91bmQgaW4gdGhlIHN0YXJ0dXAgc2NyaXB0LgpJbmRleDog ZmlsZXMvc3RhcnR1cC5zaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBmaWxlcy9zdGFydHVwLnNoCmRp ZmYgLU4gZmlsZXMvc3RhcnR1cC5zaAotLS0gZmlsZXMvc3RhcnR1cC5zaAkxMyBKdW4gMjAwNiAx Nzo0MzoxNCAtMDAwMAkxLjQKKysrIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAw CkBAIC0xLDYxICswLDAgQEAKLSMhL2Jpbi9zaAotIwotIyAlJUFQUF9USVRMRSUlIHN0YXJ0dXAg c2NyaXB0LgotIwotIyAkRnJlZUJTRDogcG9ydHMvamF2YS9qYm9zczQvZmlsZXMvc3RhcnR1cC5z aCx2IDEuNCAyMDA2LzA2LzEzIDE3OjQzOjE0IGdsZXdpcyBFeHAgJAotIwotCi0jIFBST1ZJREU6 ICUlQVBQX1NIT1JUTkFNRSUlCi0jIFJFUVVJUkU6IE5FVFdPUktJTkcgU0VSVkVSUwotCi0jIEFk ZCB0aGUgZm9sbG93aW5nIGxpbmVzIHRvIC9ldGMvcmMuY29uZiB0byBlbmFibGUgJSVBUFBfU0hP UlROQU1FJSU6Ci0jICUlQVBQX1NIT1JUTkFNRSUlX2VuYWJsZSAoYm9vbCk6CQlTZXQgdG8gIk5P IiBieSBkZWZhdWx0LgotIwkJCQlTZXQgaXQgdG8gIllFUyIgdG8gZW5hYmxlICUlQVBQX1NIT1JU TkFNRSUlCi0jICUlQVBQX1NIT1JUTkFNRSUlX2ZsYWdzIChzdHIpOgkJU2V0IHRvICItc2VydmVy IiBieSBkZWZhdWx0LgotIwkJCQlFeHRyYSBKVk0gZmxhZ3MuCi0jICUlQVBQX1NIT1JUTkFNRSUl X2NvbmZpZyAoc3RyKToJCVNldCB0byAiIiBieSBkZWZhdWx0Ci0jCQkJCUpCb3NzIHNlcnZlciBj b25maWcsIGVnIHthbGx8ZGVmYXVsdHxtaW5pbWFsfHN0YW5kYXJkfQotIwotLiAlJVJDX1NVQlIl JQotCi1uYW1lPSIlJUFQUF9TSE9SVE5BTUUlJSIKLXJjdmFyPWBzZXRfcmN2YXJgCi0KLXN0YXJ0 X2NtZD0iJSVBUFBfU0hPUlROQU1FJSVfc3RhcnQiCi1yZXN0YXJ0X2NtZD0iJSVBUFBfU0hPUlRO QU1FJSVfcmVzdGFydCIKLXBpZGZpbGU9IiUlUElEX0ZJTEUlJSIKLXByb2NuYW1lPSIlJUpBVkEl JSIKLQotWyAteiAiJCUlQVBQX1NIT1JUTkFNRSUlX2VuYWJsZSIgXQkmJiAlJUFQUF9TSE9SVE5B TUUlJV9lbmFibGU9Ik5PIgotWyAteiAiJCUlQVBQX1NIT1JUTkFNRSUlX2ZsYWdzIiBdCSYmICUl QVBQX1NIT1JUTkFNRSUlX2ZsYWdzPSItc2VydmVyIgotWyAteiAiJCUlQVBQX1NIT1JUTkFNRSUl X2NvbmZpZyIgXQkmJiAlJUFQUF9TSE9SVE5BTUUlJV9jb25maWc9IiIKLQotJSVBUFBfU0hPUlRO QU1FJSVfc3RhcnQgKCkKLXsKLQljaGVja3llc25vICUlQVBQX1NIT1JUTkFNRSUlX2VuYWJsZSAm JgotCXsKLQkJaWYgWyAhIC1mICR7cGlkZmlsZX0gXQotCQl0aGVuCi0JCQl0b3VjaCAke3BpZGZp bGV9Ci0JCQljaG93biAlJVVTRVIlJTolJUdST1VQJSUgJHtwaWRmaWxlfQotCQlmaQotCi0JCWVj aG8gIlN0YXJ0aW5nICUlQVBQX1NIT1JUTkFNRSUlLiIKLQkJJSVDT05UUk9MX1NDUklQVCUlIC1x ICR7JSVBUFBfU0hPUlROQU1FJSVfZmxhZ3N9ICR7JSVBUFBfU0hPUlROQU1FJSVfY29uZmlnZmxh Z30gJHslJUFQUF9TSE9SVE5BTUUlJV9jb25maWd9IHN0YXJ0Ci0JfQotfQotCi0lJUFQUF9TSE9S VE5BTUUlJV9yZXN0YXJ0ICgpCi17Ci0JY2hlY2t5ZXNubyAlJUFQUF9TSE9SVE5BTUUlJV9lbmFi bGUgJiYKLQl7Ci0JCWVjaG8gIlJlc3RhcnRpbmcgJSVBUFBfU0hPUlROQU1FJSUuIgotCQklJUNP TlRST0xfU0NSSVBUJSUgLXEgJHslJUFQUF9TSE9SVE5BTUUlJV9mbGFnc30gJHslJUFQUF9TSE9S VE5BTUUlJV9jb25maWdmbGFnfSAkeyUlQVBQX1NIT1JUTkFNRSUlX2NvbmZpZ30gcmVzdGFydAot CX0KLX0KLQotbG9hZF9yY19jb25maWcgJG5hbWUKLQotWyAtbiAiJHslJUFQUF9TSE9SVE5BTUUl JV9jb25maWd9IiBdICYmICUlQVBQX1NIT1JUTkFNRSUlX2NvbmZpZ2ZsYWc9Ii1jb25maWciCi0K LXJ1bl9yY19jb21tYW5kICIkMSIK ------=_Part_225929_4138004.1174837395459--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200703251550.l2PFoCF6079774>