From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Landley Subject: PATCH [1/3]: Replace kernel/timeconst.pl with kernel/timeconst.sh (v2) Date: Sat, 3 Jan 2009 19:27:07 -0600 Message-ID: <200901031927.07670.rob@landley.net> References: <200901020207.30359.rob@landley.net> <200901031924.15869.rob@landley.net> Mime-Version: 1.0 Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <200901031924.15869.rob@landley.net> Content-Disposition: inline Sender: linux-embedded-owner@vger.kernel.org List-ID: Content-Type: text/plain; charset="us-ascii" To: Embedded Linux mailing list Cc: linux-kernel@vger.kernel.org, Andrew Morton , "H. Peter Anvin" , Sam Ravnborg RnJvbTogUm9iIExhbmRsZXkgPHJvYkBsYW5kbGV5Lm5ldD4KClJlcGxhY2Uga2VybmVsL3RpbWVj b25zdC5wbCB3aXRoIGtlcm5lbC90aW1lY29uc3Quc2guICBUaGUgbmV3IHNoZWxsIHNjcmlwdApp cyBtdWNoIHNpbXBsZXIsIGFib3V0IDEvNCB0aGUgc2l6ZSwgYW5kIHJ1bnMgb24gUmVkIEhhdCA5 IGZyb20gMjAwMy4KCkl0IHJlcXVpcmVzIGEgc2hlbGwgd2hpY2ggY2FuIGRvIDY0IGJpdCBtYXRo LCBzdWNoIGFzIGJhc2gsIGJ1c3lib3ggYXNoLApvciBkYXNoIHJ1bm5pbmcgb24gYSA2NCBiaXQg aG9zdC4KCkNoYW5nZXMgZnJvbSBwcmV2aW91cyB2ZXJzaW9uOgoKUmVkbyBBREozMiBtYXRoIHRv IGF2b2lkIGludGVnZXIgb3ZlcmZsb3cgZm9yIHNtYWxsIEhaIHNpemVzIChzdWNoIGFzIDI0IG9y CjEyMikuICBJbiB0aGUgcGF0aG9sb2dpY2FsIGNhc2UgKEhaPTEpIGJvdGggdmVyc2lvbnMgbm93 IHByb2R1Y2UKVVNFQ19UT19IWl9BREozMiBvZiAweDdmZmZmNzljODQyZmEuICAoU2VlIHNvdXJj ZSBjb21tZW50cyBmb3IgZGV0YWlscy4pCgpBbHNvIGV4cGFuZCB1c2FnZSBtZXNzYWdlLCBhZGQg ZXJyb3IgbWVzc2FnZSB3aGVuIG5vIDY0IGJpdCBtYXRoIGF2YWlsYWJsZSBpbgpzaGVsbCAoYW5k IHN1Z2dlc3Qgc29tZSBzaGVsbHMgdGhhdCBzdXBwb3J0IGl0KSwgYWRkIHdoaXRlc3BhY2UgYXJv dW5kCm9wZXJhdG9ycyBpbiBlcXVhdGlvbnMsIGFkZGVkIHVuZGVyc2NvcmVzIGJlZm9yZSBfX0tF Uk5FTF9USU1FQ09OU1RfSCwgY2hhbmdlCm1ha2VmaWxlIHNvIHNjcmlwdCBpcyByZXNwb25zaWJs ZSBmb3IgY3JlYXRpbmcgb3V0cHV0IGZpbGUsIG1ha2Ugc2NyaXB0IGRlbGV0ZSAKb3V0cHV0IGZp bGUgb24gZXJyb3IsIGNoYW5nZSBzaGViYW5nIHRvICMhL2Jpbi9zaCBhbmQgdGVzdCB3aXRoIGRh c2ggYW5kIGJhc2guCgpTaWduZWQtb2ZmLWJ5OiBSb2IgTGFuZGxleSA8cm9iQGxhbmRsZXkubmV0 PgotLS0KCiBrZXJuZWwvTWFrZWZpbGUgICAgIHwgICAgNCAKIGtlcm5lbC90aW1lY29uc3QucGwg fCAgMzc4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoga2VybmVs L3RpbWVjb25zdC5zaCB8ICAxNDkgKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAx NTEgaW5zZXJ0aW9ucygrKSwgMzgwIGRlbGV0aW9ucygtKQoKLS0tIGxpbnV4LTIuNi4yOC9rZXJu ZWwvdGltZWNvbnN0LnBsCTIwMDgtMTItMjQgMTc6MjY6MzcuMDAwMDAwMDAwIC0wNjAwCisrKyAv ZGV2L251bGwJMjAwOC0xMS0yMSAwNDo0Njo0MS4wMDAwMDAwMDAgLTA2MDAKQEAgLTEsMzc4ICsw LDAgQEAKLSMhL3Vzci9iaW4vcGVybAotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIwotIyAgIENvcHlyaWdo dCAyMDA3LTIwMDggclBhdGgsIEluYy4gLSBBbGwgUmlnaHRzIFJlc2VydmVkCi0jCi0jICAgVGhp cyBmaWxlIGlzIHBhcnQgb2YgdGhlIExpbnV4IGtlcm5lbCwgYW5kIGlzIG1hZGUgYXZhaWxhYmxl IHVuZGVyCi0jICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2 ZXJzaW9uIDIgb3IgKGF0IHlvdXIKLSMgICBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uOyBpbmNv cnBvcmF0ZWQgaGVyZWluIGJ5IHJlZmVyZW5jZS4KLSMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMKLQot IwotIyBVc2FnZTogdGltZWNvbnN0LnBsIEhaID4gdGltZWNvbnN0LmgKLSMKLQotIyBQcmVjb21w dXRlZCB2YWx1ZXMgZm9yIHN5c3RlbXMgd2l0aG91dCBNYXRoOjpCaWdJbnQKLSMgR2VuZXJhdGVk IGJ5OgotIyB0aW1lY29uc3QucGwgLS1jYW4gMjQgMzIgNDggNjQgMTAwIDEyMiAxMjggMjAwIDI1 MCAyNTYgMzAwIDUxMiAxMDAwIDEwMjQgMTIwMAotJWNhbm5lZF92YWx1ZXMgPSAoCi0JMjQgPT4g WwotCQknMHhhNmFhYWFhYicsJzB4MmFhYWFhYScsMjYsCi0JCTEyNSwzLAotCQknMHhjNDliYTVl NCcsJzB4MWZiZTc2YzhiNCcsMzcsCi0JCTMsMTI1LAotCQknMHhhMmMyYWFhYicsJzB4YWFhYScs MTYsCi0JCTEyNTAwMCwzLAotCQknMHhjOTUzOWI4OScsJzB4N2ZmZmJjZTQyMTdkJyw0NywKLQkJ MywxMjUwMDAsCi0JXSwgMzIgPT4gWwotCQknMHhmYTAwMDAwMCcsJzB4NjAwMDAwMCcsMjcsCi0J CTEyNSw0LAotCQknMHg4MzEyNmU5OCcsJzB4ZmRmM2I2NDVhJywzNiwKLQkJNCwxMjUsCi0JCScw eGY0MjQwMDAwJywnMHgwJywxNywKLQkJMzEyNTAsMSwKLQkJJzB4ODYzN2JkMDYnLCcweDNmZmY3 OWM4NDJmYScsNDYsCi0JCTEsMzEyNTAsCi0JXSwgNDggPT4gWwotCQknMHhhNmFhYWFhYicsJzB4 NmFhYWFhYScsMjcsCi0JCTEyNSw2LAotCQknMHhjNDliYTVlNCcsJzB4ZmRmM2I2NDVhJywzNiwK LQkJNiwxMjUsCi0JCScweGEyYzJhYWFiJywnMHgxNTU1NScsMTcsCi0JCTYyNTAwLDMsCi0JCScw eGM5NTM5Yjg5JywnMHgzZmZmYmNlNDIxN2QnLDQ2LAotCQkzLDYyNTAwLAotCV0sIDY0ID0+IFsK LQkJJzB4ZmEwMDAwMDAnLCcweGUwMDAwMDAnLDI4LAotCQkxMjUsOCwKLQkJJzB4ODMxMjZlOTgn LCcweDdlZjlkYjIyZCcsMzUsCi0JCTgsMTI1LAotCQknMHhmNDI0MDAwMCcsJzB4MCcsMTgsCi0J CTE1NjI1LDEsCi0JCScweDg2MzdiZDA2JywnMHgxZmZmNzljODQyZmEnLDQ1LAotCQkxLDE1NjI1 LAotCV0sIDEwMCA9PiBbCi0JCScweGEwMDAwMDAwJywnMHgwJywyOCwKLQkJMTAsMSwKLQkJJzB4 Y2NjY2NjY2QnLCcweDczMzMzMzMzMycsMzUsCi0JCTEsMTAsCi0JCScweDljNDAwMDAwJywnMHgw JywxOCwKLQkJMTAwMDAsMSwKLQkJJzB4ZDFiNzE3NTknLCcweDFmZmYyZTQ4ZThhNycsNDUsCi0J CTEsMTAwMDAsCi0JXSwgMTIyID0+IFsKLQkJJzB4ODMyNWM1M2YnLCcweGZiY2RhM2EnLDI4LAot CQk1MDAsNjEsCi0JCScweGY5ZGIyMmQxJywnMHg3ZmJlNzZjOGInLDM1LAotCQk2MSw1MDAsCi0J CScweDgwMTJlMmEwJywnMHgzZWYzNicsMTgsCi0JCTUwMDAwMCw2MSwKLQkJJzB4ZmZkYTQwNTMn LCcweDFmZmZmYmNlNDIxNycsNDUsCi0JCTYxLDUwMDAwMCwKLQldLCAxMjggPT4gWwotCQknMHhm YTAwMDAwMCcsJzB4MWUwMDAwMDAnLDI5LAotCQkxMjUsMTYsCi0JCScweDgzMTI2ZTk4JywnMHgz ZjdjZWQ5MTYnLDM0LAotCQkxNiwxMjUsCi0JCScweGY0MjQwMDAwJywnMHg0MDAwMCcsMTksCi0J CTE1NjI1LDIsCi0JCScweDg2MzdiZDA2JywnMHhmZmZiY2U0MjE3ZCcsNDQsCi0JCTIsMTU2MjUs Ci0JXSwgMjAwID0+IFsKLQkJJzB4YTAwMDAwMDAnLCcweDAnLDI5LAotCQk1LDEsCi0JCScweGNj Y2NjY2NkJywnMHgzMzMzMzMzMzMnLDM0LAotCQkxLDUsCi0JCScweDljNDAwMDAwJywnMHgwJywx OSwKLQkJNTAwMCwxLAotCQknMHhkMWI3MTc1OScsJzB4ZmZmMmU0OGU4YTcnLDQ0LAotCQkxLDUw MDAsCi0JXSwgMjUwID0+IFsKLQkJJzB4ODAwMDAwMDAnLCcweDAnLDI5LAotCQk0LDEsCi0JCScw eDgwMDAwMDAwJywnMHgxODAwMDAwMDAnLDMzLAotCQkxLDQsCi0JCScweGZhMDAwMDAwJywnMHgw JywyMCwKLQkJNDAwMCwxLAotCQknMHg4MzEyNmU5OCcsJzB4N2ZmN2NlZDkxNjgnLDQzLAotCQkx LDQwMDAsCi0JXSwgMjU2ID0+IFsKLQkJJzB4ZmEwMDAwMDAnLCcweDNlMDAwMDAwJywzMCwKLQkJ MTI1LDMyLAotCQknMHg4MzEyNmU5OCcsJzB4MWZiZTc2YzhiJywzMywKLQkJMzIsMTI1LAotCQkn MHhmNDI0MDAwMCcsJzB4YzAwMDAnLDIwLAotCQkxNTYyNSw0LAotCQknMHg4NjM3YmQwNicsJzB4 N2ZmZGU3MjEwYmUnLDQzLAotCQk0LDE1NjI1LAotCV0sIDMwMCA9PiBbCi0JCScweGQ1NTU1NTU2 JywnMHgyYWFhYWFhYScsMzAsCi0JCTEwLDMsCi0JCScweDk5OTk5OTlhJywnMHgxY2NjY2NjY2Mn LDMzLAotCQkzLDEwLAotCQknMHhkMDU1NTU1NicsJzB4YWFhYWEnLDIwLAotCQkxMDAwMCwzLAot CQknMHg5ZDQ5NTE4MycsJzB4N2ZmY2I5MjNhMjknLDQzLAotCQkzLDEwMDAwLAotCV0sIDUxMiA9 PiBbCi0JCScweGZhMDAwMDAwJywnMHg3ZTAwMDAwMCcsMzEsCi0JCTEyNSw2NCwKLQkJJzB4ODMx MjZlOTgnLCcweGZkZjNiNjQ1JywzMiwKLQkJNjQsMTI1LAotCQknMHhmNDI0MDAwMCcsJzB4MWMw MDAwJywyMSwKLQkJMTU2MjUsOCwKLQkJJzB4ODYzN2JkMDYnLCcweDNmZmVmMzkwODVmJyw0MiwK LQkJOCwxNTYyNSwKLQldLCAxMDAwID0+IFsKLQkJJzB4ODAwMDAwMDAnLCcweDAnLDMxLAotCQkx LDEsCi0JCScweDgwMDAwMDAwJywnMHgwJywzMSwKLQkJMSwxLAotCQknMHhmYTAwMDAwMCcsJzB4 MCcsMjIsCi0JCTEwMDAsMSwKLQkJJzB4ODMxMjZlOTgnLCcweDFmZjdjZWQ5MTY4Jyw0MSwKLQkJ MSwxMDAwLAotCV0sIDEwMjQgPT4gWwotCQknMHhmYTAwMDAwMCcsJzB4ZmUwMDAwMDAnLDMyLAot CQkxMjUsMTI4LAotCQknMHg4MzEyNmU5OCcsJzB4N2VmOWRiMjInLDMxLAotCQkxMjgsMTI1LAot CQknMHhmNDI0MDAwMCcsJzB4M2MwMDAwJywyMiwKLQkJMTU2MjUsMTYsCi0JCScweDg2MzdiZDA2 JywnMHgxZmZmNzljODQyZicsNDEsCi0JCTE2LDE1NjI1LAotCV0sIDEyMDAgPT4gWwotCQknMHhk NTU1NTU1NicsJzB4ZDU1NTU1NTUnLDMyLAotCQk1LDYsCi0JCScweDk5OTk5OTlhJywnMHg2NjY2 NjY2NicsMzEsCi0JCTYsNSwKLQkJJzB4ZDA1NTU1NTYnLCcweDJhYWFhYScsMjIsCi0JCTI1MDAs MywKLQkJJzB4OWQ0OTUxODMnLCcweDFmZmNiOTIzYTI5Jyw0MSwKLQkJMywyNTAwLAotCV0KLSk7 Ci0KLSRoYXNfYmlnaW50ID0gZXZhbCAndXNlIE1hdGg6OkJpZ0ludCBxdyhiZ2NkKTsgMTsnOwot Ci1zdWIgYmludCgkKQotewotCW15KCR4KSA9IEBfOwotCXJldHVybiBNYXRoOjpCaWdJbnQtPm5l dygkeCk7Ci19Ci0KLSMKLSMgQ29uc3RhbnRzIGZvciBkaXZpc2lvbiBieSByZWNpcHJvY2FsIG11 bHRpcGxpY2F0aW9uLgotIyAoYml0cywgbnVtZXJhdG9yLCBkZW5vbWluYXRvcikKLSMKLXN1YiBm bXVsKCQkJCkKLXsKLQlteSAoJGIsJG4sJGQpID0gQF87Ci0KLQkkbiA9IGJpbnQoJG4pOwotCSRk ID0gYmludCgkZCk7Ci0KLQlyZXR1cm4gc2NhbGFyICgoJG4gPDwgJGIpKyRkLWJpbnQoMSkpLyRk OwotfQotCi1zdWIgZmFkaigkJCQpCi17Ci0JbXkoJGIsJG4sJGQpID0gQF87Ci0KLQkkbiA9IGJp bnQoJG4pOwotCSRkID0gYmludCgkZCk7Ci0KLQkkZCA9ICRkL2JnY2QoJG4sICRkKTsKLQlyZXR1 cm4gc2NhbGFyICgoJGQtYmludCgxKSkgPDwgJGIpLyRkOwotfQotCi1zdWIgZm11bHMoJCQkKSB7 Ci0JbXkoJGIsJG4sJGQpID0gQF87Ci0JbXkoJHMsJG0pOwotCW15KCR0aHJlcykgPSBiaW50KDEp IDw8ICgkYi0xKTsKLQotCSRuID0gYmludCgkbik7Ci0JJGQgPSBiaW50KCRkKTsKLQotCWZvciAo JHMgPSAwOyAxOyAkcysrKSB7Ci0JCSRtID0gZm11bCgkcywkbiwkZCk7Ci0JCXJldHVybiAkcyBp ZiAoJG0gPj0gJHRocmVzKTsKLQl9Ci0JcmV0dXJuIDA7Ci19Ci0KLSMgR2VuZXJhdGUgYSBoZXgg dmFsdWUgaWYgdGhlIHJlc3VsdCBmaXRzIGluIDY0IGJpdHM7Ci0jIG90aGVyd2lzZSBza2lwLgot c3ViIGJpZ251bV9oZXgoJCkgewotCW15KCR4KSA9IEBfOwotCW15ICRzID0gJHgtPmFzX2hleCgp OwotCi0JcmV0dXJuIChsZW5ndGgoJHMpID4gMTgpID8gdW5kZWYgOiAkczsKLX0KLQotIyBQcm92 aWRlcyBtdWwsIGFkaiwgYW5kIHNociBmYWN0b3JzIGZvciBhIHNwZWNpZmljCi0jIChiaXQsIHRp bWUsIGh6KSBjb21iaW5hdGlvbgotc3ViIG11bGFkaigkJCQpIHsKLQlteSgkYiwgJHQsICRoeikg PSBAXzsKLQlteSAkcyA9IGZtdWxzKCRiLCAkdCwgJGh6KTsKLQlteSAkbSA9IGZtdWwoJHMsICR0 LCAkaHopOwotCW15ICRhID0gZmFkaigkcywgJHQsICRoeik7Ci0JcmV0dXJuIChiaWdudW1faGV4 KCRtKSwgYmlnbnVtX2hleCgkYSksICRzKTsKLX0KLQotIyBQcm92aWRlcyBudW1lcmF0b3IsIGRl bm9taW5hdG9yIHZhbHVlcwotc3ViIG51bWRlbigkJCkgewotCW15KCRuLCAkZCkgPSBAXzsKLQlt eSAkZyA9IGJnY2QoJG4sICRkKTsKLQlyZXR1cm4gKCRuLyRnLCAkZC8kZyk7Ci19Ci0KLSMgQWxs IHZhbHVlcyBmb3IgYSBzcGVjaWZpYyAodGltZSwgaHopIGNvbWJvCi1zdWIgY29udmVyc2lvbnMo JCQpIHsKLQlteSAoJHQsICRoeikgPSBAXzsKLQlteSBAdmFsID0gKCk7Ci0KLQkjIEhaX1RPX3h4 Ci0JcHVzaChAdmFsLCBtdWxhZGooMzIsICR0LCAkaHopKTsKLQlwdXNoKEB2YWwsIG51bWRlbigk dCwgJGh6KSk7Ci0KLQkjIHh4X1RPX0haCi0JcHVzaChAdmFsLCBtdWxhZGooMzIsICRoeiwgJHQp KTsKLQlwdXNoKEB2YWwsIG51bWRlbigkaHosICR0KSk7Ci0KLQlyZXR1cm4gQHZhbDsKLX0KLQot c3ViIGNvbXB1dGVfdmFsdWVzKCQpIHsKLQlteSgkaHopID0gQF87Ci0JbXkgQHZhbCA9ICgpOwot CW15ICRzLCAkbSwgJGEsICRnOwotCi0JaWYgKCEkaGFzX2JpZ2ludCkgewotCQlkaWUgIiQwOiBI WiA9PSAkaHogbm90IGNhbm5lZCBhbmQgIi4KLQkJICAgICJNYXRoOjpCaWdJbnQgbm90IGF2YWls YWJsZVxuIjsKLQl9Ci0KLQkjIE1TRUMgY29udmVyc2lvbnMKLQlwdXNoKEB2YWwsIGNvbnZlcnNp b25zKDEwMDAsICRoeikpOwotCi0JIyBVU0VDIGNvbnZlcnNpb25zCi0JcHVzaChAdmFsLCBjb252 ZXJzaW9ucygxMDAwMDAwLCAkaHopKTsKLQotCXJldHVybiBAdmFsOwotfQotCi1zdWIgb3V0cHV0 dmFsKCQkKQotewotCW15KCRuYW1lLCAkdmFsKSA9IEBfOwotCW15ICRjc3VmOwotCi0JaWYgKGRl ZmluZWQoJHZhbCkpIHsKLQkgICAgaWYgKCRuYW1lICF+IC9TSFIvKSB7Ci0JCSR2YWwgPSAiVTY0 X0MoJHZhbCkiOwotCSAgICB9Ci0JICAgIHByaW50ZiAiI2RlZmluZSAlLTIzcyAlc1xuIiwgJG5h bWUuJGNzdWYsICR2YWwuJGNzdWY7Ci0JfQotfQotCi1zdWIgb3V0cHV0KCRAKQotewotCW15KCRo eiwgQHZhbCkgPSBAXzsKLQlteSAkcGZ4LCAkYml0LCAkc3VmLCAkcywgJG0sICRhOwotCi0JcHJp bnQgIi8qIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGtlcm5lbC90aW1lY29uc3QucGwgKi9c biI7Ci0JcHJpbnQgIi8qIENvbnZlcnNpb24gY29uc3RhbnRzIGZvciBIWiA9PSAkaHogKi9cbiI7 Ci0JcHJpbnQgIlxuIjsKLQlwcmludCAiI2lmbmRlZiBLRVJORUxfVElNRUNPTlNUX0hcbiI7Ci0J cHJpbnQgIiNkZWZpbmUgS0VSTkVMX1RJTUVDT05TVF9IXG4iOwotCXByaW50ICJcbiI7Ci0KLQlw cmludCAiI2luY2x1ZGUgPGxpbnV4L3BhcmFtLmg+XG4iOwotCXByaW50ICIjaW5jbHVkZSA8bGlu dXgvdHlwZXMuaD5cbiI7Ci0KLQlwcmludCAiXG4iOwotCXByaW50ICIjaWYgSFogIT0gJGh6XG4i OwotCXByaW50ICIjZXJyb3IgXCJrZXJuZWwvdGltZWNvbnN0LmggaGFzIHRoZSB3cm9uZyBIWiB2 YWx1ZSFcIlxuIjsKLQlwcmludCAiI2VuZGlmXG4iOwotCXByaW50ICJcbiI7Ci0KLQlmb3JlYWNo ICRwZnggKCdIWl9UT19NU0VDJywnTVNFQ19UT19IWicsCi0JCSAgICAgICdIWl9UT19VU0VDJywn VVNFQ19UT19IWicpIHsKLQkJZm9yZWFjaCAkYml0ICgzMikgewotCQkJZm9yZWFjaCAkc3VmICgn TVVMJywgJ0FESicsICdTSFInKSB7Ci0JCQkJb3V0cHV0dmFsKCIke3BmeH1fJHN1ZiRiaXQiLCBz aGlmdChAdmFsKSk7Ci0JCQl9Ci0JCX0KLQkJZm9yZWFjaCAkc3VmICgnTlVNJywgJ0RFTicpIHsK LQkJCW91dHB1dHZhbCgiJHtwZnh9XyRzdWYiLCBzaGlmdChAdmFsKSk7Ci0JCX0KLQl9Ci0KLQlw cmludCAiXG4iOwotCXByaW50ICIjZW5kaWYgLyogS0VSTkVMX1RJTUVDT05TVF9IICovXG4iOwot fQotCi0jIFByZXR0eS1wcmludCBQZXJsIHZhbHVlcwotc3ViIHBlcmx2YWxzKEApIHsKLQlteSAk djsKLQlteSBAbCA9ICgpOwotCi0JZm9yZWFjaCAkdiAoQF8pIHsKLQkJaWYgKCFkZWZpbmVkKCR2 KSkgewotCQkJcHVzaChAbCwgJ3VuZGVmJyk7Ci0JCX0gZWxzaWYgKCR2ID1+IC9eMHgvKSB7Ci0J CQlwdXNoKEBsLCAiXCciLiR2LiJcJyIpOwotCQl9IGVsc2UgewotCQkJcHVzaChAbCwgJHYuJycp OwotCQl9Ci0JfQotCXJldHVybiBqb2luKCcsJywgQGwpOwotfQotCi0oJGh6KSA9IEBBUkdWOwot Ci0jIFVzZSB0aGlzIHRvIGdlbmVyYXRlIHRoZSAlY2FubmVkX3ZhbHVlcyBzdHJ1Y3R1cmUKLWlm ICgkaHogZXEgJy0tY2FuJykgewotCXNoaWZ0KEBBUkdWKTsKLQlAaHpsaXN0ID0gc29ydCB7JGEg PD0+ICRifSAoQEFSR1YpOwotCi0JcHJpbnQgIiMgUHJlY29tcHV0ZWQgdmFsdWVzIGZvciBzeXN0 ZW1zIHdpdGhvdXQgTWF0aDo6QmlnSW50XG4iOwotCXByaW50ICIjIEdlbmVyYXRlZCBieTpcbiI7 Ci0JcHJpbnQgIiMgdGltZWNvbnN0LnBsIC0tY2FuICIsIGpvaW4oJyAnLCBAaHpsaXN0KSwgIlxu IjsKLQlwcmludCAiXCVjYW5uZWRfdmFsdWVzID0gKFxuIjsKLQlteSAkcGYgPSAiXHQiOwotCWZv cmVhY2ggJGh6IChAaHpsaXN0KSB7Ci0JCW15IEB2YWx1ZXMgPSBjb21wdXRlX3ZhbHVlcygkaHop OwotCQlwcmludCAiJHBmJGh6ID0+IFtcbiI7Ci0JCXdoaWxlIChzY2FsYXIoQHZhbHVlcykpIHsK LQkJCW15ICRiaXQ7Ci0JCQlmb3JlYWNoICRiaXQgKDMyKSB7Ci0JCQkJbXkgJG0gPSBzaGlmdChA dmFsdWVzKTsKLQkJCQlteSAkYSA9IHNoaWZ0KEB2YWx1ZXMpOwotCQkJCW15ICRzID0gc2hpZnQo QHZhbHVlcyk7Ci0JCQkJcHJpbnQgIlx0XHQiLCBwZXJsdmFscygkbSwkYSwkcyksICIsXG4iOwot CQkJfQotCQkJbXkgJG4gPSBzaGlmdChAdmFsdWVzKTsKLQkJCW15ICRkID0gc2hpZnQoQHZhbHVl cyk7Ci0JCQlwcmludCAiXHRcdCIsIHBlcmx2YWxzKCRuLCRkKSwgIixcbiI7Ci0JCX0KLQkJcHJp bnQgIlx0XSI7Ci0JCSRwZiA9ICcsICc7Ci0JfQotCXByaW50ICJcbik7XG4iOwotfSBlbHNlIHsK LQkkaHogKz0gMDsJCQkjIEZvcmNlIHRvIG51bWJlcgotCWlmICgkaHogPCAxKSB7Ci0JCWRpZSAi VXNhZ2U6ICQwIEhaXG4iOwotCX0KLQotCUB2YWwgPSBAeyRjYW5uZWRfdmFsdWVzeyRoen19Owot CWlmICghZGVmaW5lZChAdmFsKSkgewotCQlAdmFsID0gY29tcHV0ZV92YWx1ZXMoJGh6KTsKLQl9 Ci0Jb3V0cHV0KCRoeiwgQHZhbCk7Ci19Ci1leGl0IDA7Ci0tLSAvZGV2L251bGwJMjAwOC0xMS0y MSAwNDo0Njo0MS4wMDAwMDAwMDAgLTA2MDAKKysrIGxpbnV4LTIuNi4yOC1uZXcva2VybmVsL3Rp bWVjb25zdC5zaAkyMDA5LTAxLTAzIDE1OjI0OjAxLjAwMDAwMDAwMCAtMDYwMApAQCAtMCwwICsx LDE0NyBAQAorIyEvYmluL3NoCisKK2lmIFsgJCMgLW5lIDIgXQordGhlbgorCWVjaG8gIlVzYWdl OiB0aW1lY29uc3Quc2ggSFogRklMRU5BTUUiCisJZWNobworCWVjaG8gIkdlbmVyYXRlIGEgaGVh ZGVyIGZpbGUgd2l0aCBjb25zdGFudHMgZm9yIGNvdmVydGluZyBiZXR3ZWVuIgorCWVjaG8gImRl Y2ltYWwgSFogdGltZXIgdGlja3MgYW5kIG1pbGlzZWNvbmQgb3IgbWljcm9zZWNvbmQgZGVsYXlz LiIKKwllY2hvCisJZXhpdCAxCitmaQorCitIWj0kMQorc2hpZnQKK0ZJTEVOQU1FPSQxCisKKyMg U2FuaXR5IHRlc3Q6IGV2ZW4gdGhlIHNoZWxsIGluIFJlZCBIYXQgOSAoY2lyY2EgMjAwMykgc3Vw cG9ydGVkIDY0IGJpdCBtYXRoLgorCitpZiBbICQoKDEgPDwgMzIpKSAtbHQgMCBdCit0aGVuCisJ ZWNobyAidGltZWNvbnN0LnNoIG5lZWRzIGEgc2hlbGwgd2l0aCA2NCBiaXQgbWF0aCwgc3VjaCBh cyBiYXNoLCIKKwllY2hvICJidXN5Ym94IGFzaCwgb3IgZGFzaCBydW5uaW5nIG9uIGEgNjQgYml0 IGhvc3QuIgorCWV4aXQgMQorZmkKKworIyBJZiB0aGlzIHNjcmlwdCBleGl0cyBmb3IgYW55IHJl YXNvbiBiZWZvcmUgdGhpcyB0cmFwIGlzIHJlbW92ZWQsCisjIGRlbGV0ZSB0aGUgb3V0cHV0IGZp bGUgc28gYSBwYXJ0aWFsIGZpbGUgd29uJ3QgY29uZnVzZSB0aGUgYnVpbGQuCisKK3RyYXAgInJt ICRGSUxFTkFNRSIgRVhJVAorCisjIE91dHB1dCBzdGFydCBvZiBoZWFkZXIgZmlsZQorCitjYXQg PiAkRklMRU5BTUUgPDwgRU9GIHx8IGV4aXQgMQorLyogQXV0b21hdGljYWxseSBnZW5lcmF0ZWQg Ynkga2VybmVsL3RpbWVjb25zdC5zaCAqLworLyogQ29udmVyc2lvbiBjb25zdGFudHMgZm9yIEha ID09ICRIWiAqLworCisjaWZuZGVmIF9fS0VSTkVMX1RJTUVDT05TVF9ICisjZGVmaW5lIF9fS0VS TkVMX1RJTUVDT05TVF9ICisKKyNpbmNsdWRlIDxsaW51eC9wYXJhbS5oPgorI2luY2x1ZGUgPGxp bnV4L3R5cGVzLmg+CisKKyNpZiBIWiAhPSAkSFoKKyNlcnJvciAia2VybmVsL3RpbWVjb25zdC5o IGhhcyB0aGUgd3JvbmcgSFogdmFsdWUhIgorI2VuZGlmCisKK0VPRgorCisjIEZvciBib3RoIE1p bGxpc2Vjb25kcyBhbmQgTWljcm9zZWNvbmRzCisKK2ZvciBpIGluICJNU0VDIDEwMDAiICJVU0VD IDEwMDAwMDAiCitkbworCU5BTUU9JChlY2hvICRpIHwgY3V0IC1kICcgJyAtZiAxKQorCVBFUklP RD0kKGVjaG8gJGkgfCBjdXQgLWQgJyAnIC1mIDIpCisKKwkjIEZpbmQgZ3JlYXRlc3QgY29tbW9u IGRlbm9taW5hdG9yICh1c2luZyBFdWNsaWQncyBhbGdvcml0aG0pCisKKwlBPSRIWgorCUI9JFBF UklPRAorCisJd2hpbGUgWyAkQiAtbmUgMCBdCisJZG8KKwkJQz0kKCggJEEgJSAkQiApKQorCQlB PSRCCisJCUI9JEMKKwlkb25lCisKKwlHQ0Q9JEEKKworCSMgRG8gdGhpcyBmb3IgZWFjaCBkaXJl Y3Rpb24gKEhaX1RPX1BFUklPRCBhbmQgUEVSSU9EX1RPX0haKQorCisJZm9yIERJUkVDVElPTiBp biAwIDEKKwlkbworCQlpZiBbICRESVJFQ1RJT04gLWVxIDAgXQorCQl0aGVuCisJCQlDT05WRVJU PSJIWl9UT18ke05BTUV9IgorCQkJRlJPTT0kSFoKKwkJCVRPPSRQRVJJT0QKKwkJZWxzZQorCQkJ Q09OVkVSVD0iJHtOQU1FfV9UT19IWiIKKwkJCUZST009JFBFUklPRAorCQkJVE89JEhaCisJCWZp CisKKwkJIyBDYWxjdWxhdGUgMzIgc2lnbmlmaWNhbnQgYml0cyBvZiBNVUwzMiBkYXRhLgorCisJ CVNISUZUPTAKKwkJd2hpbGUgdHJ1ZQorCQlkbworCQkJIyBUaGlzIGNhbid0IG92ZXJmbG93IDY0 IGJpdCBtYXRoLiAgUGF0aG9sb2dpY2FsIGNhc2UKKwkJCSMgKFRPPTEsIEZST009MTAwMDAwMCkg dXNlcyBhcm91bmQgMzIrMjA9NTIgYml0cy4KKworCQkJTVVMMzI9JCgoICggKCAkVE8gPDwgJFNI SUZUICkgKyAkRlJPTSAtIDEgKSAvICRGUk9NICkpCisKKwkJCSMgS2VlcCBpbmNyZWFzaW5nICRT SElGVCB1bnRpbCB3ZSd2ZSBnb3QgMzIgYml0cy4KKworCQkJWyAkTVVMMzIgLWd0ICQoKCAxIDw8 IDMxICkpIF0gJiYgYnJlYWsKKwkJCVNISUZUPSQoKCAkU0hJRlQgKyAxICkpCisJCWRvbmUKKwkJ TVVMMzI9JCggcHJpbnRmICV4ICRNVUwzMiApCisKKwkJIyBBREozMiBpcyBqdXN0ICgoKEZST00v R0NEKS0xKTw8U0hJRlQpLyhGUk9NL0dDRCkgYnV0IHRoaXMKKwkJIyBjYW4gb3ZlcmZsb3cgNjQg Yml0IG1hdGggKGV4YW1wbGVzLCBIWj0yNCBvciBIWj0xMjIpLgorCQkjIFBhdGhvbG9naWNhbCBj YXNlIGNvdWxkIHVzZSAzMisyMCsyMD03MiBiaXRzLiAgKEFuZCB0aGlzIGlzCisJCSMgdGhlIHBh dGhvbG9naWNhbCBjYXNlIGJlY2F1c2UgYSBsYXJnZXIgJEhaIHJlc3VsdHMgaW4gYQorCQkjIHNt YWxsZXIgJFNISUZULCBzbyBldmVuIGluc2FuZSBIWj5VU0VDIGNhc2VzIHNob3VsZCBiZSBvay4p CisKKwkJIyBUbyBnZXQgYXJvdW5kIHRoaXMsIHdlIGNob3AgdGhlIGJvdHRvbSAzMiBiaXRzIG9m ZiB0aGUKKwkJIyBjYWxjdWxhdGlvbiBhbmQgdGhlbiByZWFzc2VtYmxlIGl0IHRvIGF2b2lkIG92 ZXJmbG93OgorCQkjIDMyKzY0PTk2LCB3aGljaCBpcyA+IDcyLgorCisJCUFESjMyPSQoKCAkRlJP TSAvICRHQ0QgKSkKKwkJaWYgWyAkU0hJRlQgLWd0IDMyIF0KKwkJdGhlbgorCQkJVVBQRVI9JCgo ICggJEFESjMyIC0gMSApIDw8ICggJFNISUZUIC0gMzIgKSApKQorCQkJTE9XRVI9JCgoICggJFVQ UEVSICUgJEFESjMyICkgPDwgMzIgKSkKKwkJCUFESjMyPSQoKCAoICggJFVQUEVSIC8gJEFESjMy ICkgPDwgMzIgKSArICggJExPV0VSIC8gJEFESjMyICkpKQorCQllbHNlCisJCQlBREozMj0kKCgg KCAoICRBREozMiAtIDEgKSA8PCAkU0hJRlQpIC8gJEFESjMyICkpCisJCWZpCisJCUFESjMyPSQo IHByaW50ZiAleCAkQURKMzIgKQorCisJCU5VTT0kKCggJFRPIC8gJEdDRCApKQorCQlERU49JCgo ICRGUk9NIC8gJEdDRCApKQorCisJCSMgT3V0cHV0IG5leHQgY2h1bmsgb2YgaGVhZGVyIGRhdGEg dG8gZmlsZQorCisJCSgKKwkJCWVjaG8gIiNkZWZpbmUgJHtDT05WRVJUfV9NVUwzMglVNjRfQygw eCRNVUwzMikiICYmCisJCQllY2hvICIjZGVmaW5lICR7Q09OVkVSVH1fQURKMzIJVTY0X0MoMHgk QURKMzIpIiAmJgorCQkJZWNobyAiI2RlZmluZSAke0NPTlZFUlR9X1NIUjMyCSRTSElGVCIgJiYK KwkJCWVjaG8gIiNkZWZpbmUgJHtDT05WRVJUfV9OVU0JCVU2NF9DKCROVU0pIiAmJgorCQkJZWNo byAiI2RlZmluZSAke0NPTlZFUlR9X0RFTgkJVTY0X0MoJERFTikiCisJCSkgPj4gJEZJTEVOQU1F IHx8IGV4aXQgMQorCWRvbmUKK2RvbmUKKworKAorCWVjaG8KKwllY2hvICIjZW5kaWYgLyogX19L RVJORUxfVElNRUNIT05TVF9IICovIgorKSA+PiAkRklMRU5BTUUgfHwgZXhpdCAxCisKKyMgRG9u J3Qgcm0gJEZJTEVOQU1FIG9uIGV4aXQgYW55bW9yZS4KKwordHJhcCAiIiBFWElUCisKK2V4aXQg MAotLS0gbGludXgtMi42LjI4L2tlcm5lbC9NYWtlZmlsZQkyMDA4LTEyLTI0IDE3OjI2OjM3LjAw MDAwMDAwMCAtMDYwMAorKysgbGludXgtMi42LjI4LW5ldy9rZXJuZWwvTWFrZWZpbGUJMjAwOS0w MS0wMyAwMDo0MDoyMS4wMDAwMDAwMDAgLTA2MDAKQEAgLTExNiw3ICsxMTYsNyBAQAogJChvYmop L3RpbWUubzogJChvYmopL3RpbWVjb25zdC5oCiAKIHF1aWV0X2NtZF90aW1lY29uc3QgID0gVElN RUMgICAkQAotICAgICAgY21kX3RpbWVjb25zdCAgPSAkKFBFUkwpICQ8ICQoQ09ORklHX0haKSA+ ICRACisgICAgICBjbWRfdGltZWNvbnN0ICA9ICQoQ09ORklHX1NIRUxMKSAkPCAkKENPTkZJR19I WikgJEAKIHRhcmdldHMgKz0gdGltZWNvbnN0LmgKLSQob2JqKS90aW1lY29uc3QuaDogJChzcmMp L3RpbWVjb25zdC5wbCBGT1JDRQorJChvYmopL3RpbWVjb25zdC5oOiAkKHNyYykvdGltZWNvbnN0 LnNoIEZPUkNFCiAJJChjYWxsIGlmX2NoYW5nZWQsdGltZWNvbnN0KQoACg==