From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6505 invoked by alias); 6 Nov 2008 07:51:33 -0000 Received: (qmail 6176 invoked by uid 22791); 6 Nov 2008 07:51:25 -0000 X-Spam-Check-By: sourceware.org Received: from ti-out-0910.google.com (HELO ti-out-0910.google.com) (209.85.142.186) by sourceware.org (qpsmtpd/0.31) with ESMTP; Thu, 06 Nov 2008 07:50:48 +0000 Received: by ti-out-0910.google.com with SMTP id d10so247994tib.12 for ; Wed, 05 Nov 2008 23:50:44 -0800 (PST) Received: by 10.110.7.5 with SMTP id 5mr1801177tig.13.1225957844585; Wed, 05 Nov 2008 23:50:44 -0800 (PST) Received: by 10.110.42.9 with HTTP; Wed, 5 Nov 2008 23:50:44 -0800 (PST) Message-ID: Date: Thu, 06 Nov 2008 07:51:00 -0000 From: teawater To: "gdb-patches@sourceware.org" Subject: [RFA] Process record and replay, 8/10 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_24927_10185296.1225957844527" X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2008-11/txt/msg00104.txt.bz2 ------=_Part_24927_10185296.1225957844527 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Content-length: 1070 This patch add code to make I386 architecture support process record and replay. 2008-11-06 Hui Zhu I386 architecture process record and replay support. * i386-tdep.c (PREFIX_REPZ, PREFIX_REPNZ, PREFIX_LOCK, PREFIX_DATA, PREFIX_ADDR): New macros. Help decode the I386 instruction. (aflag, dflag, override, modrm, mod, reg, rm, ot, i386_record_pc): New variables. Ditto. (i386_record_modrm, i386_record_lea_modrm_addr, i386_record_lea_modrm): New functions. Ditto. (i386_process_record): New function. Parse the instruction in address "addr" and record the values of registers and memory that will be change in this instruction. (i386_gdbarch_init): Set "i386_process_record" to GDBARCH "process_record" interface. * i386-tdep.h (gdbarch_tdep): New function pointers "i386_intx80_record" and "i386_sysenter_record" that point to the function can record "intx80" and "sysenter" execute log. i386-tdep.c | 2706 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ i386-tdep.h | 3 2 files changed, 2709 insertions(+) ------=_Part_24927_10185296.1225957844527 Content-Type: text/plain; name=i386-tdep.txt Content-Transfer-Encoding: base64 X-Attachment-Id: f_fn73so4t0 Content-Disposition: attachment; filename=i386-tdep.txt Content-length: 67462 LS0tIGEvaTM4Ni10ZGVwLmMKKysrIGIvaTM4Ni10ZGVwLmMKQEAgLTQ5LDYg KzQ5LDkgQEAKICNpbmNsdWRlICJpMzg2LXRkZXAuaCIKICNpbmNsdWRlICJp Mzg3LXRkZXAuaCIKIAorI2luY2x1ZGUgInJlY29yZC5oIgorI2luY2x1ZGUg PHN0ZGludC5oPgorCiAvKiBSZWdpc3RlciBuYW1lcy4gICovCiAKIHN0YXRp YyBjaGFyICppMzg2X3JlZ2lzdGVyX25hbWVzW10gPQpAQCAtMjYzOCw2ICsy NjQxLDI3MDcgQEAgaTM4Nl9za2lwX3Blcm1hbmVudF9icmVha3BvaW50IChz dHJ1Y3QgcgogfQogCiAKKyNkZWZpbmUgUFJFRklYX1JFUFoJMHgwMQorI2Rl ZmluZSBQUkVGSVhfUkVQTloJMHgwMgorI2RlZmluZSBQUkVGSVhfTE9DSwkw eDA0CisjZGVmaW5lIFBSRUZJWF9EQVRBCTB4MDgKKyNkZWZpbmUgUFJFRklY X0FERFIJMHgxMAorCisvKiBvcGVyYW5kIHNpemUgKi8KK2VudW0KK3sKKyAg T1RfQllURSA9IDAsCisgIE9UX1dPUkQsCisgIE9UX0xPTkcsCit9OworCisv KiBpMzg2IGFyaXRoL2xvZ2ljIG9wZXJhdGlvbnMgKi8KK2VudW0KK3sKKyAg T1BfQURETCwKKyAgT1BfT1JMLAorICBPUF9BRENMLAorICBPUF9TQkJMLAor ICBPUF9BTkRMLAorICBPUF9TVUJMLAorICBPUF9YT1JMLAorICBPUF9DTVBM LAorfTsKKworc3RhdGljIGludCBhZmxhZyA9IDE7CitzdGF0aWMgaW50IGRm bGFnID0gMTsKK3N0YXRpYyBpbnQgb3ZlcnJpZGUgPSAwOworc3RhdGljIHVp bnQ4X3QgbW9kcm07CitzdGF0aWMgdWludDhfdCBtb2QsIHJlZywgcm07Citz dGF0aWMgaW50IG90Oworc3RhdGljIENPUkVfQUREUiBpMzg2X3JlY29yZF9w YzsKKworLyogUGFyc2UgIm1vZHJtIiBwYXJ0IGluIGN1cnJlbnQgbWVtb3J5 IGFkZHJlc3MgdGhhdCBpMzg2X3JlY29yZF9wYyBwb2ludCB0by4KKyAgIFJl dHVybiAtMSBpZiBzb21ldGhpbmcgd3JvbmcuICovCitzdGF0aWMgaW50Citp Mzg2X3JlY29yZF9tb2RybSAodm9pZCkKK3sKKyAgaWYgKHRhcmdldF9yZWFk X21lbW9yeSAoaTM4Nl9yZWNvcmRfcGMsICZtb2RybSwgMSkpCisgICAgewor ICAgICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oIlByb2Nlc3MgcmVjb3JkOiBy ZWFkIG1lbWVvcnkgMHglcyBlcnJvci5cbiIpLAorCQkJIHBhZGRyX256IChp Mzg2X3JlY29yZF9wYykpOworICAgICAgcmV0dXJuICgtMSk7CisgICAgfQor ICBpMzg2X3JlY29yZF9wYysrOworICBtb2QgPSAobW9kcm0gPj4gNikgJiAz OworICByZWcgPSAobW9kcm0gPj4gMykgJiA3OworICBybSA9IG1vZHJtICYg NzsKKworICByZXR1cm4gKDApOworfQorCisvKiBHZXQgdGhlIG1lbW9yeSBh ZGRyZXNzIHRoYXQgY3VycmVudCBpbnN0cnVjdGlvbiAgd3JpdGUgdG8gYW5k IHNldCBpdCB0bworICAgdGhlIGFyZ3VtZW50ICJhZGRyIi4KKyAgIFJldHVy biAtMSBpZiBzb21ldGhpbmcgd3JvbmcuICovCitzdGF0aWMgaW50CitpMzg2 X3JlY29yZF9sZWFfbW9kcm1fYWRkciAodWludDMyX3QgKiBhZGRyKQorewor ICB1aW50OF90IHRtcHU4OworICB1aW50MTZfdCB0bXB1MTY7CisgIHVpbnQz Ml90IHRtcHUzMjsKKworICAqYWRkciA9IDA7CisgIGlmIChhZmxhZykKKyAg ICB7CisgICAgICAvKiAzMiBiaXRzICovCisgICAgICBpbnQgaGF2ZXNpYiA9 IDA7CisgICAgICB1aW50OF90IHNjYWxlID0gMDsKKyAgICAgIHVpbnQ4X3Qg aW5kZXggPSAwOworICAgICAgdWludDhfdCBiYXNlID0gcm07CisKKyAgICAg IGlmIChiYXNlID09IDQpCisJeworCSAgaGF2ZXNpYiA9IDE7CisJICBpZiAo dGFyZ2V0X3JlYWRfbWVtb3J5IChpMzg2X3JlY29yZF9wYywgJnRtcHU4LCAx KSkKKwkgICAgeworCSAgICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCJQcm9j ZXNzIHJlY29yZDogcmVhZCBtZW1lb3J5IDB4JXMgZXJyb3IuXG4iKSwKKwkJ CQkgcGFkZHJfbnogKGkzODZfcmVjb3JkX3BjKSk7CisJICAgICAgcmV0dXJu ICgtMSk7CisJICAgIH0KKwkgIGkzODZfcmVjb3JkX3BjKys7CisJICBzY2Fs ZSA9ICh0bXB1OCA+PiA2KSAmIDM7CisJICBpbmRleCA9ICgodG1wdTggPj4g MykgJiA3KTsKKwkgIGJhc2UgPSAodG1wdTggJiA3KTsKKwl9CisKKyAgICAg IHN3aXRjaCAobW9kKQorCXsKKwljYXNlIDA6CisJICBpZiAoKGJhc2UgJiA3 KSA9PSA1KQorCSAgICB7CisJICAgICAgYmFzZSA9IDB4ZmY7CisJICAgICAg aWYgKHRhcmdldF9yZWFkX21lbW9yeSAoaTM4Nl9yZWNvcmRfcGMsIChnZGJf Ynl0ZSAqKSBhZGRyLCA0KSkKKwkJeworCQkgIHByaW50Zl91bmZpbHRlcmVk IChfKCJQcm9jZXNzIHJlY29yZDogcmVhZCBtZW1lb3J5IDB4JXMgZXJyb3Iu XG4iKSwKKwkJCQkgICAgIHBhZGRyX256IChpMzg2X3JlY29yZF9wYykpOwor CQkgIHJldHVybiAoLTEpOworCQl9CisJICAgICAgaTM4Nl9yZWNvcmRfcGMg Kz0gNDsKKwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJICAgICAgKmFkZHIg PSAwOworCSAgICB9CisJICBicmVhazsKKwljYXNlIDE6CisJICBpZiAodGFy Z2V0X3JlYWRfbWVtb3J5IChpMzg2X3JlY29yZF9wYywgJnRtcHU4LCAxKSkK KwkgICAgeworCSAgICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCJQcm9jZXNz IHJlY29yZDogcmVhZCBtZW1lb3J5IDB4JXMgZXJyb3IuXG4iKSwKKwkJCQkg cGFkZHJfbnogKGkzODZfcmVjb3JkX3BjKSk7CisJICAgICAgcmV0dXJuICgt MSk7CisJICAgIH0KKwkgIGkzODZfcmVjb3JkX3BjKys7CisJICAqYWRkciA9 IChpbnQ4X3QpIHRtcHU4OworCSAgYnJlYWs7CisJY2FzZSAyOgorCSAgaWYg KHRhcmdldF9yZWFkX21lbW9yeSAoaTM4Nl9yZWNvcmRfcGMsIChnZGJfYnl0 ZSAqKSBhZGRyLCA0KSkKKwkgICAgeworCSAgICAgIHByaW50Zl91bmZpbHRl cmVkIChfKCJQcm9jZXNzIHJlY29yZDogcmVhZCBtZW1lb3J5IDB4JXMgZXJy b3IuXG4iKSwKKwkJCQkgcGFkZHJfbnogKGkzODZfcmVjb3JkX3BjKSk7CisJ ICAgICAgcmV0dXJuICgtMSk7CisJICAgIH0KKwkgIGkzODZfcmVjb3JkX3Bj ICs9IDQ7CisJICBicmVhazsKKwl9CisKKyAgICAgIGlmIChiYXNlICE9IDB4 ZmYpCisJeworCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNo ZSwgYmFzZSwgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwkgICphZGRyICs9 IHRtcHUzMjsKKwl9CisKKyAgICAgIC8qIFhYWDogaW5kZXggPT0gNCBpcyBh bHdheXMgaW52YWxpZCAqLworICAgICAgaWYgKGhhdmVzaWIgJiYgKGluZGV4 ICE9IDQgfHwgc2NhbGUgIT0gMCkpCisJeworCSAgcmVnY2FjaGVfcmF3X3Jl YWQgKHJlY29yZF9yZWdjYWNoZSwgaW5kZXgsIChnZGJfYnl0ZSAqKSAmIHRt cHUzMik7CisJICAqYWRkciArPSB0bXB1MzIgPDwgc2NhbGU7CisJfQorICAg IH0KKyAgZWxzZQorICAgIHsKKyAgICAgIC8qIDE2IGJpdHMgKi8KKyAgICAg IHN3aXRjaCAobW9kKQorCXsKKwljYXNlIDA6CisJICBpZiAocm0gPT0gNikK KwkgICAgeworCSAgICAgIGlmICh0YXJnZXRfcmVhZF9tZW1vcnkKKwkJICAo aTM4Nl9yZWNvcmRfcGMsIChnZGJfYnl0ZSAqKSAmIHRtcHUxNiwgMikpCisJ CXsKKwkJICBwcmludGZfdW5maWx0ZXJlZCAoXygiUHJvY2VzcyByZWNvcmQ6 IHJlYWQgbWVtZW9yeSAweCVzIGVycm9yLlxuIiksCisJCQkJICAgICBwYWRk cl9ueiAoaTM4Nl9yZWNvcmRfcGMpKTsKKwkJICByZXR1cm4gKC0xKTsKKwkJ fQorCSAgICAgIGkzODZfcmVjb3JkX3BjICs9IDI7CisJICAgICAgKmFkZHIg PSAoaW50MTZfdCkgdG1wdTE2OworCSAgICAgIHJtID0gMDsKKwkgICAgICBn b3RvIG5vX3JtOworCSAgICB9CisJICBlbHNlCisJICAgIHsKKwkgICAgICAq YWRkciA9IDA7CisJICAgIH0KKwkgIGJyZWFrOworCWNhc2UgMToKKwkgIGlm ICh0YXJnZXRfcmVhZF9tZW1vcnkgKGkzODZfcmVjb3JkX3BjLCAmdG1wdTgs IDEpKQorCSAgICB7CisJICAgICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oIlBy b2Nlc3MgcmVjb3JkOiByZWFkIG1lbWVvcnkgMHglcyBlcnJvci5cbiIpLAor CQkJCSBwYWRkcl9ueiAoaTM4Nl9yZWNvcmRfcGMpKTsKKwkgICAgICByZXR1 cm4gKC0xKTsKKwkgICAgfQorCSAgaTM4Nl9yZWNvcmRfcGMrKzsKKwkgICph ZGRyID0gKGludDhfdCkgdG1wdTg7CisJICBicmVhazsKKwljYXNlIDI6CisJ ICBpZiAodGFyZ2V0X3JlYWRfbWVtb3J5IChpMzg2X3JlY29yZF9wYywgKGdk Yl9ieXRlICopICYgdG1wdTE2LCAyKSkKKwkgICAgeworCSAgICAgIHByaW50 Zl91bmZpbHRlcmVkIChfKCJQcm9jZXNzIHJlY29yZDogcmVhZCBtZW1lb3J5 IDB4JXMgZXJyb3IuXG4iKSwKKwkJCQkgcGFkZHJfbnogKGkzODZfcmVjb3Jk X3BjKSk7CisJICAgICAgcmV0dXJuICgtMSk7CisJICAgIH0KKwkgIGkzODZf cmVjb3JkX3BjICs9IDI7CisJICAqYWRkciA9IChpbnQxNl90KSB0bXB1MTY7 CisJICBicmVhazsKKwl9CisKKyAgICAgIHN3aXRjaCAocm0pCisJeworCWNh c2UgMDoKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUs IEkzODZfRUJYX1JFR05VTSwKKwkJCSAgICAgKGdkYl9ieXRlICopICYgdG1w dTMyKTsKKwkgICphZGRyICs9IHRtcHUzMjsKKwkgIHJlZ2NhY2hlX3Jhd19y ZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRVNJX1JFR05VTSwKKwkJCSAg ICAgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwkgICphZGRyICs9IHRtcHUz MjsKKwkgIGJyZWFrOworCWNhc2UgMToKKwkgIHJlZ2NhY2hlX3Jhd19yZWFk IChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRUJYX1JFR05VTSwKKwkJCSAgICAg KGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwkgICphZGRyICs9IHRtcHUzMjsK KwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZf RURJX1JFR05VTSwKKwkJCSAgICAgKGdkYl9ieXRlICopICYgdG1wdTMyKTsK KwkgICphZGRyICs9IHRtcHUzMjsKKwkgIGJyZWFrOworCWNhc2UgMjoKKwkg IHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRUJQ X1JFR05VTSwKKwkJCSAgICAgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwkg ICphZGRyICs9IHRtcHUzMjsKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNv cmRfcmVnY2FjaGUsIEkzODZfRVNJX1JFR05VTSwKKwkJCSAgICAgKGdkYl9i eXRlICopICYgdG1wdTMyKTsKKwkgICphZGRyICs9IHRtcHUzMjsKKwkgIGJy ZWFrOworCWNhc2UgMzoKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRf cmVnY2FjaGUsIEkzODZfRUJQX1JFR05VTSwKKwkJCSAgICAgKGdkYl9ieXRl ICopICYgdG1wdTMyKTsKKwkgICphZGRyICs9IHRtcHUzMjsKKwkgIHJlZ2Nh Y2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRURJX1JFR05V TSwKKwkJCSAgICAgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwkgICphZGRy ICs9IHRtcHUzMjsKKwkgIGJyZWFrOworCWNhc2UgNDoKKwkgIHJlZ2NhY2hl X3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRVNJX1JFR05VTSwK KwkJCSAgICAgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwkgICphZGRyICs9 IHRtcHUzMjsKKwkgIGJyZWFrOworCWNhc2UgNToKKwkgIHJlZ2NhY2hlX3Jh d19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRURJX1JFR05VTSwKKwkJ CSAgICAgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwkgICphZGRyICs9IHRt cHUzMjsKKwkgIGJyZWFrOworCWNhc2UgNjoKKwkgIHJlZ2NhY2hlX3Jhd19y ZWFkIChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRUJQX1JFR05VTSwKKwkJCSAg ICAgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwkgICphZGRyICs9IHRtcHUz MjsKKwkgIGJyZWFrOworCWNhc2UgNzoKKwkgIHJlZ2NhY2hlX3Jhd19yZWFk IChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRUJYX1JFR05VTSwKKwkJCSAgICAg KGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwkgICphZGRyICs9IHRtcHUzMjsK KwkgIGJyZWFrOworCX0KKyAgICAgICphZGRyICY9IDB4ZmZmZjsKKyAgICB9 CisKK25vX3JtOgorICByZXR1cm4gKDApOworfQorCisvKiBSZWNvcmQgdGhl IHZhbHVlIG9mIHRoZSBtZW1vcnkgdGhhdCB3aWxsYmUgY2hhbmdlZCBpbiBj dXJyZW50IGluc3RydWN0aW9uCisgICB0byAicmVjb3JkX2FyY2hfbGlzdCIu CisgICBSZXR1cm4gLTEgaWYgc29tZXRoaW5nIHdyb25nLiAqLworc3RhdGlj IGludAoraTM4Nl9yZWNvcmRfbGVhX21vZHJtICh2b2lkKQoreworICB1aW50 MzJfdCBhZGRyOworCisgIGlmIChvdmVycmlkZSkKKyAgICB7CisgICAgICBp ZiAocmVjb3JkX2RlYnVnKQorCXByaW50Zl91bmZpbHRlcmVkIChfCisJCQkg ICAoIlByb2Nlc3MgcmVjb3JkIGlnbm9yZXMgdGhlIG1lbW9yeSBjaGFuZ2Ug b2YgaW5zdHJ1Y3Rpb24gaW4gYWRkcmVzcyAweCVzIGJlY2F1c2UgaXQgY2Fu J3QgZ2V0IHRoZSB2YWx1ZSBvZiB0aGUgc2VnbWVudCByZWdpc3Rlci5cbiIp LAorCQkJICAgcGFkZHJfbnogKGkzODZfcmVjb3JkX3BjKSk7CisgICAgICBy ZXR1cm4gKDApOworICAgIH0KKworICBpZiAoaTM4Nl9yZWNvcmRfbGVhX21v ZHJtX2FkZHIgKCZhZGRyKSkKKyAgICB7CisgICAgICByZXR1cm4gKC0xKTsK KyAgICB9CisKKyAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAoYWRk ciwgMSA8PCBvdCkpCisgICAgeworICAgICAgcmV0dXJuICgtMSk7CisgICAg fQorCisgIHJldHVybiAoMCk7Cit9CisKKy8qIFBhcnNlIHRoZSBjdXJyZW50 IGluc3RydWN0aW9uIGFuZCByZWNvcmQgdGhlIHZhbHVlcyBvZiB0aGUgcmVn aXN0ZXJzIGFuZAorICAgbWVtb3J5IHRoYXQgd2lsbCBiZSBjaGFuZ2VkIGlu IGN1cnJlbnQgaW5zdHJ1Y3Rpb24gdG8gInJlY29yZF9hcmNoX2xpc3QiLgor ICAgUmV0dXJuIC0xIGlmIHNvbWV0aGluZyB3cm9uZy4gKi8KK3N0YXRpYyBp bnQKK2kzODZfcHJvY2Vzc19yZWNvcmQgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLCBDT1JFX0FERFIgYWRkcikKK3sKKyAgaW50IHByZWZpeGVzID0gMDsK KyAgdWludDhfdCB0bXB1ODsKKyAgdWludDE2X3QgdG1wdTE2OworICB1aW50 MzJfdCB0bXB1MzI7CisgIHVpbnQzMl90IG9wY29kZTsKKworICBpMzg2X3Jl Y29yZF9wYyA9IGFkZHI7CisgIGFmbGFnID0gMTsKKyAgZGZsYWcgPSAxOwor ICBvdmVycmlkZSA9IDA7CisKKyAgaWYgKHJlY29yZF9kZWJ1ZyA+IDEpCisg ICAgeworICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAi UHJvY2VzcyByZWNvcmQ6IGkzODZfcmVjb3JkIHBjID0gMHglc1xuIiwKKwkJ CSAgcGFkZHJfbnogKGkzODZfcmVjb3JkX3BjKSk7CisgICAgfQorCisgIC8q IHByZWZpeGVzICovCisgIHdoaWxlICgxKQorICAgIHsKKyAgICAgIGlmICh0 YXJnZXRfcmVhZF9tZW1vcnkgKGkzODZfcmVjb3JkX3BjLCAmdG1wdTgsIDEp KQorCXsKKwkgIHByaW50Zl91bmZpbHRlcmVkIChfKCJQcm9jZXNzIHJlY29y ZDogcmVhZCBtZW1lb3J5IDB4JXMgZXJyb3IuXG4iKSwKKwkJCSAgICAgcGFk ZHJfbnogKGkzODZfcmVjb3JkX3BjKSk7CisJICByZXR1cm4gKC0xKTsKKwl9 CisgICAgICBpMzg2X3JlY29yZF9wYysrOworICAgICAgc3dpdGNoICh0bXB1 OCkKKwl7CisJY2FzZSAweGYzOgorCSAgcHJlZml4ZXMgfD0gUFJFRklYX1JF UFo7CisJICBicmVhazsKKwljYXNlIDB4ZjI6CisJICBwcmVmaXhlcyB8PSBQ UkVGSVhfUkVQTlo7CisJICBicmVhazsKKwljYXNlIDB4ZjA6CisJICBwcmVm aXhlcyB8PSBQUkVGSVhfTE9DSzsKKwkgIGJyZWFrOworCWNhc2UgMHgyZToK KwkgIG92ZXJyaWRlID0gSTM4Nl9DU19SRUdOVU07CisJICBicmVhazsKKwlj YXNlIDB4MzY6CisJICBvdmVycmlkZSA9IEkzODZfU1NfUkVHTlVNOworCSAg YnJlYWs7CisJY2FzZSAweDNlOgorCSAgb3ZlcnJpZGUgPSBJMzg2X0RTX1JF R05VTTsKKwkgIGJyZWFrOworCWNhc2UgMHgyNjoKKwkgIG92ZXJyaWRlID0g STM4Nl9FU19SRUdOVU07CisJICBicmVhazsKKwljYXNlIDB4NjQ6CisJICBv dmVycmlkZSA9IEkzODZfRlNfUkVHTlVNOworCSAgYnJlYWs7CisJY2FzZSAw eDY1OgorCSAgb3ZlcnJpZGUgPSBJMzg2X0dTX1JFR05VTTsKKwkgIGJyZWFr OworCWNhc2UgMHg2NjoKKwkgIHByZWZpeGVzIHw9IFBSRUZJWF9EQVRBOwor CSAgYnJlYWs7CisJY2FzZSAweDY3OgorCSAgcHJlZml4ZXMgfD0gUFJFRklY X0FERFI7CisJICBicmVhazsKKwlkZWZhdWx0OgorCSAgZ290byBvdXRfcHJl Zml4ZXM7CisJICBicmVhazsKKwl9CisgICAgfQorb3V0X3ByZWZpeGVzOgor ICBpZiAocHJlZml4ZXMgJiBQUkVGSVhfREFUQSkKKyAgICB7CisgICAgICBk ZmxhZyBePSAxOworICAgIH0KKyAgaWYgKHByZWZpeGVzICYgUFJFRklYX0FE RFIpCisgICAgeworICAgICAgYWZsYWcgXj0gMTsKKyAgICB9CisKKyAgLyog bm93IGNoZWNrIG9wIGNvZGUgKi8KKyAgb3Bjb2RlID0gKHVpbnQzMl90KSB0 bXB1ODsKK3Jlc3dpdGNoOgorICBzd2l0Y2ggKG9wY29kZSkKKyAgICB7Cisg ICAgY2FzZSAweDBmOgorICAgICAgaWYgKHRhcmdldF9yZWFkX21lbW9yeSAo aTM4Nl9yZWNvcmRfcGMsICZ0bXB1OCwgMSkpCisJeworCSAgcHJpbnRmX3Vu ZmlsdGVyZWQgKF8oIlByb2Nlc3MgcmVjb3JkOiByZWFkIG1lbWVvcnkgMHgl cyBlcnJvci5cbiIpLAorCQkJICAgICBwYWRkcl9ueiAoaTM4Nl9yZWNvcmRf cGMpKTsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGkzODZfcmVjb3Jk X3BjKys7CisgICAgICBvcGNvZGUgPSAodWludDE2X3QpIHRtcHU4IHwgMHgw ZjAwOworICAgICAgZ290byByZXN3aXRjaDsKKyAgICAgIGJyZWFrOworCisg ICAgICAvKiBhcml0aCAmIGxvZ2ljICovCisgICAgY2FzZSAweDAwIC4uLiAw eDA1OgorICAgIGNhc2UgMHgwOCAuLi4gMHgwZDoKKyAgICBjYXNlIDB4MTAg Li4uIDB4MTU6CisgICAgY2FzZSAweDE4IC4uLiAweDFkOgorICAgIGNhc2Ug MHgyMCAuLi4gMHgyNToKKyAgICBjYXNlIDB4MjggLi4uIDB4MmQ6CisgICAg Y2FzZSAweDMwIC4uLiAweDM1OgorICAgIGNhc2UgMHgzOCAuLi4gMHgzZDoK KyAgICAgIGlmICgoKG9wY29kZSA+PiAzKSAmIDcpICE9IE9QX0NNUEwpCisJ eworCSAgaWYgKChvcGNvZGUgJiAxKSA9PSAwKQorCSAgICB7CisJICAgICAg b3QgPSBPVF9CWVRFOworCSAgICB9CisJICBlbHNlCisJICAgIHsKKwkgICAg ICBvdCA9IGRmbGFnICsgT1RfV09SRDsKKwkgICAgfQorCisJICBzd2l0Y2gg KChvcGNvZGUgPj4gMSkgJiAzKQorCSAgICB7CisJICAgICAgLyogT1AgRXYs IEd2ICovCisJICAgIGNhc2UgMDoKKwkgICAgICBpZiAoaTM4Nl9yZWNvcmRf bW9kcm0gKCkpCisJCXsKKwkJICByZXR1cm4gKC0xKTsKKwkJfQorCSAgICAg IGlmIChtb2QgIT0gMykKKwkJeworCQkgIGlmIChpMzg2X3JlY29yZF9sZWFf bW9kcm0gKCkpCisJCSAgICB7CisJCSAgICAgIHJldHVybiAoLTEpOworCQkg ICAgfQorCQl9CisJICAgICAgZWxzZQorCQl7CisJCSAgaWYgKG90ID09IE9U X0JZVEUpCisJCSAgICB7CisJCSAgICAgIHJtICY9IDB4MzsKKwkJICAgIH0K KwkJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChybSkpCisJCSAg ICB7CisJCSAgICAgIHJldHVybiAoLTEpOworCQkgICAgfQorCQl9CisJICAg ICAgYnJlYWs7CisJICAgICAgLyogT1AgR3YsIEV2ICovCisJICAgIGNhc2Ug MToKKwkgICAgICBpZiAoaTM4Nl9yZWNvcmRfbW9kcm0gKCkpCisJCXsKKwkJ ICByZXR1cm4gKC0xKTsKKwkJfQorCSAgICAgIGlmIChvdCA9PSBPVF9CWVRF KQorCQl7CisJCSAgcmVnICY9IDB4MzsKKwkJfQorCSAgICAgIGlmIChyZWNv cmRfYXJjaF9saXN0X2FkZF9yZWcgKHJlZykpCisJCXsKKwkJICByZXR1cm4g KC0xKTsKKwkJfQorCSAgICAgIGJyZWFrOworCSAgICAgIC8qIE9QIEEsIEl2 ICovCisJICAgIGNhc2UgMjoKKwkgICAgICBpZiAocmVjb3JkX2FyY2hfbGlz dF9hZGRfcmVnIChJMzg2X0VBWF9SRUdOVU0pKQorCQl7CisJCSAgcmV0dXJu ICgtMSk7CisJCX0KKwkgICAgICBicmVhazsKKwkgICAgfQorCX0KKyAgICAg IGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRUZMQUdTX1JF R05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7 CisKKyAgICAgIC8qIEdSUDEgKi8KKyAgICBjYXNlIDB4ODAgLi4uIDB4ODM6 CisgICAgICBpZiAoaTM4Nl9yZWNvcmRfbW9kcm0gKCkpCisJeworCSAgcmV0 dXJuICgtMSk7CisJfQorCisgICAgICBpZiAocmVnICE9IE9QX0NNUEwpCisJ eworCSAgaWYgKChvcGNvZGUgJiAxKSA9PSAwKQorCSAgICB7CisJICAgICAg b3QgPSBPVF9CWVRFOworCSAgICB9CisJICBlbHNlCisJICAgIHsKKwkgICAg ICBvdCA9IGRmbGFnICsgT1RfV09SRDsKKwkgICAgfQorCisJICBpZiAobW9k ICE9IDMpCisJICAgIHsKKwkgICAgICBpZiAoaTM4Nl9yZWNvcmRfbGVhX21v ZHJtICgpKQorCQl7CisJCSAgcmV0dXJuICgtMSk7CisJCX0KKwkgICAgfQor CSAgZWxzZQorCSAgICB7CisJICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX3JlZyAocm0pKQorCQl7CisJCSAgcmV0dXJuICgtMSk7CisJCX0KKwkg ICAgfQorCX0KKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcg KEkzODZfRUZMQUdTX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7CisJ fQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIGludiAqLworICAgIGNhc2Ug MHg0MCAuLi4gMHg0NzoKKyAgICAgIC8qIGRlYyAqLworICAgIGNhc2UgMHg0 OCAuLi4gMHg0ZjoKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9y ZWcgKG9wY29kZSAmIDcpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAg ICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRUZMQUdT X1JFR05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJl YWs7CisKKyAgICAgIC8qIEdSUDMgKi8KKyAgICBjYXNlIDB4ZjY6CisgICAg Y2FzZSAweGY3OgorICAgICAgaWYgKChvcGNvZGUgJiAxKSA9PSAwKQorCXsK KwkgIG90ID0gT1RfQllURTsKKwl9CisgICAgICBlbHNlCisJeworCSAgb3Qg PSBkZmxhZyArIE9UX1dPUkQ7CisJfQorICAgICAgaWYgKGkzODZfcmVjb3Jk X21vZHJtICgpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKworICAgICAg c3dpdGNoIChyZWcpCisJeworCSAgLyogdGVzdCAqLworCWNhc2UgMDoKKwkg IGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRUZMQUdTX1JF R05VTSkpCisJICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAgfQor CSAgYnJlYWs7CisJICAvKiBub3QgKi8KKwljYXNlIDI6CisJICBpZiAobW9k ICE9IDMpCisJICAgIHsKKwkgICAgICBpZiAoaTM4Nl9yZWNvcmRfbGVhX21v ZHJtICgpKQorCQl7CisJCSAgcmV0dXJuICgtMSk7CisJCX0KKwkgICAgfQor CSAgZWxzZQorCSAgICB7CisJICAgICAgaWYgKG90ID09IE9UX0JZVEUpCisJ CXsKKwkJICBybSAmPSAweDM7CisJCX0KKwkgICAgICBpZiAocmVjb3JkX2Fy Y2hfbGlzdF9hZGRfcmVnIChybSkpCisJCXsKKwkJICByZXR1cm4gKC0xKTsK KwkJfQorCSAgICB9CisJICBicmVhazsKKwkgIC8qIG5lZyAqLworCWNhc2Ug MzoKKwkgIGlmIChtb2QgIT0gMykKKwkgICAgeworCSAgICAgIGlmIChpMzg2 X3JlY29yZF9sZWFfbW9kcm0gKCkpCisJCXsKKwkJICByZXR1cm4gKC0xKTsK KwkJfQorCSAgICB9CisJICBlbHNlCisJICAgIHsKKwkgICAgICBpZiAob3Qg PT0gT1RfQllURSkKKwkJeworCQkgIHJtICY9IDB4MzsKKwkJfQorCSAgICAg IGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKHJtKSkKKwkJeworCQkg IHJldHVybiAoLTEpOworCQl9CisJICAgIH0KKwkgIGlmIChyZWNvcmRfYXJj aF9saXN0X2FkZF9yZWcgKEkzODZfRUZMQUdTX1JFR05VTSkpCisJICAgIHsK KwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAgfQorCSAgYnJlYWs7CisJICAv KiBtdWwgKi8KKwljYXNlIDQ6CisJICAvKiBpbXVsICovCisJY2FzZSA1Ogor CSAgLyogZGl2ICovCisJY2FzZSA2OgorCSAgLyogaWRpdiAqLworCWNhc2Ug NzoKKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRUFY X1JFR05VTSkpCisJICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAg fQorCSAgaWYgKG90ICE9IE9UX0JZVEUpCisJICAgIHsKKwkgICAgICBpZiAo cmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VEWF9SRUdOVU0pKQor CQl7CisJCSAgcmV0dXJuICgtMSk7CisJCX0KKwkgICAgfQorCSAgaWYgKHJl Y29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FRkxBR1NfUkVHTlVNKSkK KwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJICBicmVh azsKKwlkZWZhdWx0OgorCSAgaTM4Nl9yZWNvcmRfcGMgLT0gMjsKKwkgIG9w Y29kZSA9IG9wY29kZSA8PCA4IHwgbW9kcm07CisJICBnb3RvIG5vX3N1cHBv cnQ7CisJICBicmVhazsKKwl9CisgICAgICBicmVhazsKKworICAgICAgLyog R1JQNCAqLworICAgIGNhc2UgMHhmZToKKyAgICAgIC8qIEdSUDUgKi8KKyAg ICBjYXNlIDB4ZmY6CisgICAgICBpZiAoKG9wY29kZSAmIDEpID09IDApCisJ eworCSAgb3QgPSBPVF9CWVRFOworCX0KKyAgICAgIGVsc2UKKwl7CisJICBv dCA9IGRmbGFnICsgT1RfV09SRDsKKwl9CisgICAgICBpZiAoaTM4Nl9yZWNv cmRfbW9kcm0gKCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAg aWYgKHJlZyA+PSAyICYmIG9wY29kZSA9PSAweGZlKQorCXsKKwkgIGkzODZf cmVjb3JkX3BjIC09IDI7CisJICBvcGNvZGUgPSBvcGNvZGUgPDwgOCB8IG1v ZHJtOworCSAgZ290byBub19zdXBwb3J0OworCX0KKworICAgICAgc3dpdGNo IChyZWcpCisJeworCSAgLyogaW5jICovCisJY2FzZSAwOgorCSAgLyogZGVj ICovCisJY2FzZSAxOgorCSAgaWYgKG1vZCAhPSAzKQorCSAgICB7CisJICAg ICAgaWYgKGkzODZfcmVjb3JkX2xlYV9tb2RybSAoKSkKKwkJeworCQkgIHJl dHVybiAoLTEpOworCQl9CisJICAgIH0KKwkgIGVsc2UKKwkgICAgeworCSAg ICAgIGlmIChvdCA9PSBPVF9CWVRFKQorCQl7CisJCSAgcm0gJj0gMHgzOwor CQl9CisJICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAocm0p KQorCQl7CisJCSAgcmV0dXJuICgtMSk7CisJCX0KKwkgICAgfQorCSAgaWYg KHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FRkxBR1NfUkVHTlVN KSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJICBi cmVhazsKKwkgIC8qIGNhbGwgKi8KKwljYXNlIDI6CisJICAvKiBwdXNoICov CisJY2FzZSA2OgorCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAo STM4Nl9FU1BfUkVHTlVNKSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEp OworCSAgICB9CisJICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2Nh Y2hlLCBJMzg2X0VTUF9SRUdOVU0sCisJCQkgICAgIChnZGJfYnl0ZSAqKSAm IHRtcHUzMik7CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtCisJ ICAgICAgKChDT1JFX0FERFIpIHRtcHUzMiAtICgxIDw8IChkZmxhZyArIDEp KSwgKDEgPDwgKGRmbGFnICsgMSkpKSkKKwkgICAgeworCSAgICAgIHJldHVy biAoLTEpOworCSAgICB9CisJICBicmVhazsKKwkgIC8qIGxjYWxsICovCisJ Y2FzZSAzOgorCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4 Nl9FU1BfUkVHTlVNKSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOwor CSAgICB9CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2 X0NTX1JFR05VTSkpCisJICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkg ICAgfQorCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwg STM4Nl9FU1BfUkVHTlVNLAorCQkJICAgICAoZ2RiX2J5dGUgKikgJiB0bXB1 MzIpOworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbQorCSAgICAg ICgoQ09SRV9BRERSKSB0bXB1MzIgLSAoMSA8PCAoZGZsYWcgKyAyKSksICgx IDw8IChkZmxhZyArIDIpKSkpCisJICAgIHsKKwkgICAgICByZXR1cm4gKC0x KTsKKwkgICAgfQorCSAgYnJlYWs7CisJICAvKiBqbXAgKi8KKwljYXNlIDQ6 CisJICAvKiBsam1wICovCisJY2FzZSA1OgorCSAgYnJlYWs7CisJZGVmYXVs dDoKKwkgIGkzODZfcmVjb3JkX3BjIC09IDI7CisJICBvcGNvZGUgPSBvcGNv ZGUgPDwgOCB8IG1vZHJtOworCSAgZ290byBub19zdXBwb3J0OworCSAgYnJl YWs7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHRlc3QgKi8KKyAg ICBjYXNlIDB4ODQ6CisgICAgY2FzZSAweDg1OgorICAgIGNhc2UgMHhhODoK KyAgICBjYXNlIDB4YTk6CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfcmVnIChJMzg2X0VGTEFHU19SRUdOVU0pKQorCXsKKwkgIHJldHVybiAo LTEpOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBDV0RFL0NCVyAq LworICAgIGNhc2UgMHg5ODoKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0 X2FkZF9yZWcgKEkzODZfRUFYX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgt MSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIENEUS9DV0QgKi8K KyAgICBjYXNlIDB4OTk6CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfcmVnIChJMzg2X0VBWF9SRUdOVU0pKQorCXsKKwkgIHJldHVybiAoLTEp OworCX0KKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkz ODZfRURYX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAg ICAgYnJlYWs7CisKKyAgICAgIC8qIGltdWwgKi8KKyAgICBjYXNlIDB4MGZh ZjoKKyAgICBjYXNlIDB4Njk6CisgICAgY2FzZSAweDZiOgorICAgICAgb3Qg PSBkZmxhZyArIE9UX1dPUkQ7CisgICAgICBpZiAoaTM4Nl9yZWNvcmRfbW9k cm0gKCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgaWYgKG90 ID09IE9UX0JZVEUpCisJeworCSAgcmVnICY9IDB4MzsKKwl9CisgICAgICBp ZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChyZWcpKQorCXsKKwkgIHJl dHVybiAoLTEpOworCX0KKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2Fk ZF9yZWcgKEkzODZfRUZMQUdTX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgt MSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHhhZGQgKi8KKyAg ICBjYXNlIDB4MGZjMDoKKyAgICBjYXNlIDB4MGZjMToKKyAgICAgIGlmICgo b3Bjb2RlICYgMSkgPT0gMCkKKwl7CisJICBvdCA9IE9UX0JZVEU7CisJfQor ICAgICAgZWxzZQorCXsKKwkgIG90ID0gZGZsYWcgKyBPVF9XT1JEOworCX0K KyAgICAgIGlmIChpMzg2X3JlY29yZF9tb2RybSAoKSkKKwl7CisJICByZXR1 cm4gKC0xKTsKKwl9CisgICAgICBpZiAobW9kID09IDMpCisJeworCSAgaWYg KG90ID09IE9UX0JZVEUpCisJICAgIHsKKwkgICAgICByZWcgJj0gMHgzOwor CSAgICB9CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChyZWcp KQorCSAgICB7CisJICAgICAgcmV0dXJuICgtMSk7CisJICAgIH0KKwkgIGlm IChvdCA9PSBPVF9CWVRFKQorCSAgICB7CisJICAgICAgcm0gJj0gMHgzOwor CSAgICB9CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChybSkp CisJICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAgfQorCX0KKyAg ICAgIGVsc2UKKwl7CisJICBpZiAoaTM4Nl9yZWNvcmRfbGVhX21vZHJtICgp KQorCSAgICB7CisJICAgICAgcmV0dXJuICgtMSk7CisJICAgIH0KKwkgIGlm IChvdCA9PSBPVF9CWVRFKQorCSAgICB7CisJICAgICAgcmVnICY9IDB4MzsK KwkgICAgfQorCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAocmVn KSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJfQor ICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FRkxB R1NfUkVHTlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBi cmVhazsKKworICAgICAgLyogY21weGNoZyAqLworICAgIGNhc2UgMHgwZmIw OgorICAgIGNhc2UgMHgwZmIxOgorICAgICAgaWYgKChvcGNvZGUgJiAxKSA9 PSAwKQorCXsKKwkgIG90ID0gT1RfQllURTsKKwl9CisgICAgICBlbHNlCisJ eworCSAgb3QgPSBkZmxhZyArIE9UX1dPUkQ7CisJfQorICAgICAgaWYgKGkz ODZfcmVjb3JkX21vZHJtICgpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0K KyAgICAgIGlmIChtb2QgPT0gMykKKwl7CisJICBpZiAocmVjb3JkX2FyY2hf bGlzdF9hZGRfcmVnIChJMzg2X0VBWF9SRUdOVU0pKQorCSAgICB7CisJICAg ICAgcmV0dXJuICgtMSk7CisJICAgIH0KKwkgIGlmIChvdCA9PSBPVF9CWVRF KQorCSAgICB7CisJICAgICAgcmVnICY9IDB4MzsKKwkgICAgfQorCSAgaWYg KHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAocmVnKSkKKwkgICAgeworCSAg ICAgIHJldHVybiAoLTEpOworCSAgICB9CisJfQorICAgICAgZWxzZQorCXsK KwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRUFYX1JF R05VTSkpCisJICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAgfQor CSAgaWYgKGkzODZfcmVjb3JkX2xlYV9tb2RybSAoKSkKKwkgICAgeworCSAg ICAgIHJldHVybiAoLTEpOworCSAgICB9CisJfQorICAgICAgaWYgKHJlY29y ZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FRkxBR1NfUkVHTlVNKSkKKwl7 CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAgICAg LyogY21weGNoZzhiICovCisgICAgY2FzZSAweDBmYzc6CisgICAgICBpZiAo aTM4Nl9yZWNvcmRfbW9kcm0gKCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJ fQorICAgICAgaWYgKG1vZCA9PSAzKQorCXsKKwkgIGkzODZfcmVjb3JkX3Bj IC09IDI7CisJICBvcGNvZGUgPSBvcGNvZGUgPDwgOCB8IG1vZHJtOworCSAg Z290byBub19zdXBwb3J0OworCX0KKyAgICAgIGlmIChyZWNvcmRfYXJjaF9s aXN0X2FkZF9yZWcgKEkzODZfRUFYX1JFR05VTSkpCisJeworCSAgcmV0dXJu ICgtMSk7CisJfQorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3Jl ZyAoSTM4Nl9FRFhfUkVHTlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9 CisgICAgICBpZiAoaTM4Nl9yZWNvcmRfbGVhX21vZHJtICgpKQorCXsKKwkg IHJldHVybiAoLTEpOworCX0KKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0 X2FkZF9yZWcgKEkzODZfRUZMQUdTX1JFR05VTSkpCisJeworCSAgcmV0dXJu ICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHB1c2ggKi8K KyAgICBjYXNlIDB4NTAgLi4uIDB4NTc6CisgICAgY2FzZSAweDY4OgorICAg IGNhc2UgMHg2YToKKyAgICAgIC8qIHB1c2ggZXMgKi8KKyAgICBjYXNlIDB4 MDY6CisgICAgICAvKiBwdXNoIGNzICovCisgICAgY2FzZSAweDBlOgorICAg ICAgLyogcHVzaCBzcyAqLworICAgIGNhc2UgMHgxNjoKKyAgICAgIC8qIHB1 c2ggZHMgKi8KKyAgICBjYXNlIDB4MWU6CisgICAgICAvKiBwdXNoIGZzICov CisgICAgY2FzZSAweDBmYTA6CisgICAgICAvKiBwdXNoIGdzICovCisgICAg Y2FzZSAweDBmYTg6CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf cmVnIChJMzg2X0VTUF9SRUdOVU0pKQorCXsKKwkgIHJldHVybiAoLTEpOwor CX0KKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUs IEkzODZfRVNQX1JFR05VTSwKKwkJCSAoZ2RiX2J5dGUgKikgJiB0bXB1MzIp OworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbQorCSAgKChD T1JFX0FERFIpIHRtcHUzMiAtICgxIDw8IChkZmxhZyArIDEpKSwgKDEgPDwg KGRmbGFnICsgMSkpKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAg ICBicmVhazsKKworICAgICAgLyogcG9wICovCisgICAgY2FzZSAweDU4IC4u LiAweDVmOgorICAgICAgb3QgPSBkZmxhZyArIE9UX1dPUkQ7CisgICAgICBp ZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VTUF9SRUdOVU0p KQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGlmIChvdCA9PSBP VF9CWVRFKQorCXsKKwkgIG9wY29kZSAmPSAweDM7CisJfQorICAgICAgaWYg KHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAob3Bjb2RlICYgMHg3KSkKKwl7 CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAgICAg LyogcHVzaGEgKi8KKyAgICBjYXNlIDB4NjA6CisgICAgICBpZiAocmVjb3Jk X2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VTUF9SRUdOVU0pKQorCXsKKwkg IHJldHVybiAoLTEpOworCX0KKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChy ZWNvcmRfcmVnY2FjaGUsIEkzODZfRVNQX1JFR05VTSwKKwkJCSAoZ2RiX2J5 dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX21lbQorCSAgKChDT1JFX0FERFIpIHRtcHUzMiAtICgxIDw8IChkZmxh ZyArIDQpKSwgKDEgPDwgKGRmbGFnICsgNCkpKSkKKwl7CisJICByZXR1cm4g KC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAgICAgLyogcG9wYSAqLwor ICAgIGNhc2UgMHg2MToKKyAgICAgIGZvciAodG1wdTggPSBJMzg2X0VBWF9S RUdOVU07IHRtcHU4IDw9IEkzODZfRURJX1JFR05VTTsgdG1wdTgrKykKKwl7 CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnICh0bXB1OCkpCisJ ICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAgfQorCX0KKyAgICAg IGJyZWFrOworCisgICAgICAvKiBwb3AgKi8KKyAgICBjYXNlIDB4OGY6Cisg ICAgICBvdCA9IGRmbGFnICsgT1RfV09SRDsKKyAgICAgIGlmIChpMzg2X3Jl Y29yZF9tb2RybSAoKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAg ICBpZiAobW9kID09IDMpCisJeworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX3JlZyAocm0pKQorCSAgICB7CisJICAgICAgcmV0dXJuICgtMSk7CisJ ICAgIH0KKwl9CisgICAgICBlbHNlCisJeworCSAgaWYgKGkzODZfcmVjb3Jk X2xlYV9tb2RybSAoKSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOwor CSAgICB9CisJfQorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3Jl ZyAoSTM4Nl9FU1BfUkVHTlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9 CisgICAgICBicmVhazsKKworICAgICAgLyogZW50ZXIgKi8KKyAgICBjYXNl IDB4Yzg6CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJ Mzg2X0VTUF9SRUdOVU0pKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAg ICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRUJQX1JF R05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgcmVnY2Fj aGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9FU1BfUkVHTlVN LAorCQkJIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVj b3JkX2FyY2hfbGlzdF9hZGRfbWVtCisJICAoKENPUkVfQUREUikgdG1wdTMy IC0gKDEgPDwgKGRmbGFnICsgMSkpLCAoMSA8PCAoZGZsYWcgKyAxKSkpKQor CXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisgICAg ICAvKiBsZWF2ZSAqLworICAgIGNhc2UgMHhjOToKKyAgICAgIGlmIChyZWNv cmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRVNQX1JFR05VTSkpCisJewor CSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgaWYgKHJlY29yZF9hcmNoX2xp c3RfYWRkX3JlZyAoSTM4Nl9FQlBfUkVHTlVNKSkKKwl7CisJICByZXR1cm4g KC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAgICAgLyogcG9wIGVzICov CisgICAgY2FzZSAweDA3OgorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX3JlZyAoSTM4Nl9FU1BfUkVHTlVNKSkKKwl7CisJICByZXR1cm4gKC0x KTsKKwl9CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJ Mzg2X0VTX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAg ICAgYnJlYWs7CisKKyAgICAgIC8qIHBvcCBzcyAqLworICAgIGNhc2UgMHgx NzoKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZf RVNQX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9TU19SRUdOVU0p KQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisg ICAgICAvKiBwb3AgZHMgKi8KKyAgICBjYXNlIDB4MWY6CisgICAgICBpZiAo cmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VTUF9SRUdOVU0pKQor CXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGlmIChyZWNvcmRfYXJj aF9saXN0X2FkZF9yZWcgKEkzODZfRFNfUkVHTlVNKSkKKwl7CisJICByZXR1 cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAgICAgLyogcG9wIGZz ICovCisgICAgY2FzZSAweDBmYTE6CisgICAgICBpZiAocmVjb3JkX2FyY2hf bGlzdF9hZGRfcmVnIChJMzg2X0VTUF9SRUdOVU0pKQorCXsKKwkgIHJldHVy biAoLTEpOworCX0KKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9y ZWcgKEkzODZfRlNfUkVHTlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9 CisgICAgICBicmVhazsKKworICAgICAgLyogcG9wIGdzICovCisgICAgY2Fz ZSAweDBmYTk6CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVn IChJMzg2X0VTUF9SRUdOVU0pKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0K KyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfR1Nf UkVHTlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBicmVh azsKKworICAgICAgLyogbW92ICovCisgICAgY2FzZSAweDg4OgorICAgIGNh c2UgMHg4OToKKyAgICBjYXNlIDB4YzY6CisgICAgY2FzZSAweGM3OgorICAg ICAgaWYgKChvcGNvZGUgJiAxKSA9PSAwKQorCXsKKwkgIG90ID0gT1RfQllU RTsKKwl9CisgICAgICBlbHNlCisJeworCSAgb3QgPSBkZmxhZyArIE9UX1dP UkQ7CisJfQorCisgICAgICBpZiAoaTM4Nl9yZWNvcmRfbW9kcm0gKCkpCisJ eworCSAgcmV0dXJuICgtMSk7CisJfQorCisgICAgICBpZiAobW9kICE9IDMp CisJeworCSAgaWYgKGkzODZfcmVjb3JkX2xlYV9tb2RybSAoKSkKKwkgICAg eworCSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJfQorICAgICAgZWxz ZQorCXsKKwkgIGlmIChvdCA9PSBPVF9CWVRFKQorCSAgICB7CisJICAgICAg cm0gJj0gMHgzOworCSAgICB9CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfcmVnIChybSkpCisJICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkg ICAgfQorCX0KKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcg KEkzODZfRUZMQUdTX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7CisJ fQorICAgICAgYnJlYWs7CisgICAgICAvKiBtb3YgKi8KKyAgICBjYXNlIDB4 OGE6CisgICAgY2FzZSAweDhiOgorICAgICAgaWYgKChvcGNvZGUgJiAxKSA9 PSAwKQorCXsKKwkgIG90ID0gT1RfQllURTsKKwl9CisgICAgICBlbHNlCisJ eworCSAgb3QgPSBkZmxhZyArIE9UX1dPUkQ7CisJfQorCisgICAgICBpZiAo aTM4Nl9yZWNvcmRfbW9kcm0gKCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJ fQorCisgICAgICBpZiAob3QgPT0gT1RfQllURSkKKwl7CisJICByZWcgJj0g MHgzOworCX0KKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcg KHJlZykpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorCisgICAgICBpZiAo cmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VGTEFHU19SRUdOVU0p KQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisg ICAgICAvKiBtb3Ygc2VnICovCisgICAgY2FzZSAweDhlOgorICAgICAgaWYg KGkzODZfcmVjb3JkX21vZHJtICgpKQorCXsKKwkgIHJldHVybiAoLTEpOwor CX0KKworICAgICAgc3dpdGNoIChyZWcpCisJeworCWNhc2UgMDoKKwkgIHRt cHU4ID0gSTM4Nl9FU19SRUdOVU07CisJICBicmVhazsKKwljYXNlIDI6CisJ ICB0bXB1OCA9IEkzODZfU1NfUkVHTlVNOworCSAgYnJlYWs7CisJY2FzZSAz OgorCSAgdG1wdTggPSBJMzg2X0RTX1JFR05VTTsKKwkgIGJyZWFrOworCWNh c2UgNDoKKwkgIHRtcHU4ID0gSTM4Nl9GU19SRUdOVU07CisJICBicmVhazsK KwljYXNlIDU6CisJICB0bXB1OCA9IEkzODZfR1NfUkVHTlVNOworCSAgYnJl YWs7CisJZGVmYXVsdDoKKwkgIGkzODZfcmVjb3JkX3BjIC09IDI7CisJICBv cGNvZGUgPSBvcGNvZGUgPDwgOCB8IG1vZHJtOworCSAgZ290byBub19zdXBw b3J0OworCSAgYnJlYWs7CisJfQorICAgICAgaWYgKHJlY29yZF9hcmNoX2xp c3RfYWRkX3JlZyAodG1wdTgpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0K KworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9F RkxBR1NfUkVHTlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAg ICBicmVhazsKKworICAgICAgLyogbW92IHNlZyAqLworICAgIGNhc2UgMHg4 YzoKKyAgICAgIGlmIChpMzg2X3JlY29yZF9tb2RybSAoKSkKKwl7CisJICBy ZXR1cm4gKC0xKTsKKwl9CisgICAgICBpZiAocmVnID4gNSkKKwl7CisJICBp Mzg2X3JlY29yZF9wYyAtPSAyOworCSAgb3Bjb2RlID0gb3Bjb2RlIDw8IDgg fCBtb2RybTsKKwkgIGdvdG8gbm9fc3VwcG9ydDsKKwl9CisKKyAgICAgIGlm IChtb2QgPT0gMykKKwl7CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf cmVnIChybSkpCisJICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAg fQorCX0KKyAgICAgIGVsc2UKKwl7CisJICBvdCA9IE9UX1dPUkQ7CisJICBp ZiAoaTM4Nl9yZWNvcmRfbGVhX21vZHJtICgpKQorCSAgICB7CisJICAgICAg cmV0dXJuICgtMSk7CisJICAgIH0KKwl9CisKKyAgICAgIGlmIChyZWNvcmRf YXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRUZMQUdTX1JFR05VTSkpCisJewor CSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8q IG1vdnpiUyAqLworICAgIGNhc2UgMHgwZmI2OgorICAgICAgLyogbW92endT ICovCisgICAgY2FzZSAweDBmYjc6CisgICAgICAvKiBtb3ZzYlMgKi8KKyAg ICBjYXNlIDB4MGZiZToKKyAgICAgIC8qIG1vdnN3UyAqLworICAgIGNhc2Ug MHgwZmJmOgorICAgICAgaWYgKGkzODZfcmVjb3JkX21vZHJtICgpKQorCXsK KwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGlmIChyZWNvcmRfYXJjaF9s aXN0X2FkZF9yZWcgKHJlZykpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQor ICAgICAgYnJlYWs7CisKKyAgICAgIC8qIGxlYSAqLworICAgIGNhc2UgMHg4 ZDoKKyAgICAgIGlmIChpMzg2X3JlY29yZF9tb2RybSAoKSkKKwl7CisJICBy ZXR1cm4gKC0xKTsKKwl9CisgICAgICBpZiAobW9kID09IDMpCisJeworCSAg aTM4Nl9yZWNvcmRfcGMgLT0gMjsKKwkgIG9wY29kZSA9IG9wY29kZSA8PCA4 IHwgbW9kcm07CisJICBnb3RvIG5vX3N1cHBvcnQ7CisJfQorCisgICAgICBv dCA9IGRmbGFnOworICAgICAgaWYgKG90ID09IE9UX0JZVEUpCisJeworCSAg cmVnICY9IDB4MzsKKwl9CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfcmVnIChyZWcpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAg IGJyZWFrOworCisgICAgICAvKiBtb3YgRUFYICovCisgICAgY2FzZSAweGEw OgorICAgIGNhc2UgMHhhMToKKyAgICAgIC8qIHhsYXQgKi8KKyAgICBjYXNl IDB4ZDc6CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJ Mzg2X0VBWF9SRUdOVU0pKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAg ICAgIGJyZWFrOworCisgICAgICAvKiBtb3YgRUFYICovCisgICAgY2FzZSAw eGEyOgorICAgIGNhc2UgMHhhMzoKKyAgICAgIHsKKwl1aW50MzJfdCBhZGRy OworCisJaWYgKG92ZXJyaWRlKQorCSAgeworCSAgICBpZiAocmVjb3JkX2Rl YnVnKQorCSAgICAgIHByaW50Zl91bmZpbHRlcmVkIChfCisJCQkJICgiUHJv Y2VzcyByZWNvcmQgaWdub3JlcyB0aGUgbWVtb3J5IGNoYW5nZSBvZiBpbnN0 cnVjdGlvbiBpbiBhZGRyZXNzIDB4JXMgYmVjYXVzZSBpdCBjYW4ndCBnZXQg dGhlIHZhbHVlIG9mIHRoZSBzZWdtZW50IHJlZ2lzdGVyLlxuIiksCisJCQkJ IHBhZGRyX256IChpMzg2X3JlY29yZF9wYykpOworCSAgfQorCWVsc2UKKwkg IHsKKwkgICAgaWYgKChvcGNvZGUgJiAxKSA9PSAwKQorCSAgICAgIHsKKwkJ b3QgPSBPVF9CWVRFOworCSAgICAgIH0KKwkgICAgZWxzZQorCSAgICAgIHsK KwkJb3QgPSBkZmxhZyArIE9UX1dPUkQ7CisJICAgICAgfQorCSAgICBpZiAo YWZsYWcpCisJICAgICAgeworCQlpZiAodGFyZ2V0X3JlYWRfbWVtb3J5CisJ CSAgICAoaTM4Nl9yZWNvcmRfcGMsIChnZGJfYnl0ZSAqKSAmIGFkZHIsIDQp KQorCQkgIHsKKwkJICAgIHByaW50Zl91bmZpbHRlcmVkIChfCisJCQkJICAg ICAgICgiUHJvY2VzcyByZWNvcmQ6IHJlYWQgbWVtZW9yeSAweCVzIGVycm9y LlxuIiksCisJCQkJICAgICAgIHBhZGRyX256IChpMzg2X3JlY29yZF9wYykp OworCQkgICAgcmV0dXJuICgtMSk7CisJCSAgfQorCQlpMzg2X3JlY29yZF9w YyArPSA0OworCSAgICAgIH0KKwkgICAgZWxzZQorCSAgICAgIHsKKwkJaWYg KHRhcmdldF9yZWFkX21lbW9yeQorCQkgICAgKGkzODZfcmVjb3JkX3BjLCAo Z2RiX2J5dGUgKikgJiB0bXB1MTYsIDQpKQorCQkgIHsKKwkJICAgIHByaW50 Zl91bmZpbHRlcmVkIChfCisJCQkJICAgICAgICgiUHJvY2VzcyByZWNvcmQ6 IHJlYWQgbWVtZW9yeSAweCVzIGVycm9yLlxuIiksCisJCQkJICAgICAgIHBh ZGRyX256IChpMzg2X3JlY29yZF9wYykpOworCQkgICAgcmV0dXJuICgtMSk7 CisJCSAgfQorCQlpMzg2X3JlY29yZF9wYyArPSAyOworCQlhZGRyID0gdG1w dTE2OworCSAgICAgIH0KKwkgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRk X21lbSAoYWRkciwgMSA8PCBvdCkpCisJICAgICAgeworCQlyZXR1cm4gKC0x KTsKKwkgICAgICB9CisJICB9CisgICAgICB9CisgICAgICBicmVhazsKKwor ICAgICAgLyogbW92IFIsIEliICovCisgICAgY2FzZSAweGIwIC4uLiAweGI3 OgorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoKG9wY29k ZSAmIDB4NykgJiAweDMpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAg ICAgIGJyZWFrOworCisgICAgICAvKiBtb3YgUiwgSXYgKi8KKyAgICBjYXNl IDB4YjggLi4uIDB4YmY6CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfcmVnIChvcGNvZGUgJiAweDcpKQorCXsKKwkgIHJldHVybiAoLTEpOwor CX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiB4Y2hnIFIsIEVBWCAqLwor ICAgIGNhc2UgMHg5MSAuLi4gMHg5NzoKKyAgICAgIGlmIChyZWNvcmRfYXJj aF9saXN0X2FkZF9yZWcgKEkzODZfRUFYX1JFR05VTSkpCisJeworCSAgcmV0 dXJuICgtMSk7CisJfQorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRk X3JlZyAob3Bjb2RlICYgMHg3KSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9 CisgICAgICBicmVhazsKKworICAgICAgLyogeGNoZyBFdiwgR3YgKi8KKyAg ICBjYXNlIDB4ODY6CisgICAgY2FzZSAweDg3OgorICAgICAgaWYgKChvcGNv ZGUgJiAxKSA9PSAwKQorCXsKKwkgIG90ID0gT1RfQllURTsKKwl9CisgICAg ICBlbHNlCisJeworCSAgb3QgPSBkZmxhZyArIE9UX1dPUkQ7CisJfQorCisg ICAgICBpZiAoaTM4Nl9yZWNvcmRfbW9kcm0gKCkpCisJeworCSAgcmV0dXJu ICgtMSk7CisJfQorCisgICAgICBpZiAobW9kID09IDMpCisJeworCSAgaWYg KG90ID09IE9UX0JZVEUpCisJICAgIHsKKwkgICAgICBybSAmPSAweDM7CisJ ICAgIH0KKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKHJtKSkK KwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJfQorICAg ICAgZWxzZQorCXsKKwkgIGlmIChpMzg2X3JlY29yZF9sZWFfbW9kcm0gKCkp CisJICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAgfQorCX0KKwor ICAgICAgaWYgKG90ID09IE9UX0JZVEUpCisJeworCSAgcmVnICY9IDB4MzsK Kwl9CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChyZWcp KQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisg ICAgICAvKiBsZXMgR3YgKi8KKyAgICBjYXNlIDB4YzQ6CisgICAgICAvKiBs ZHMgR3YgKi8KKyAgICBjYXNlIDB4YzU6CisgICAgICAvKiBsc3MgR3YgKi8K KyAgICBjYXNlIDB4MGZiMjoKKyAgICAgIC8qIGxmcyBHdiAqLworICAgIGNh c2UgMHgwZmI0OgorICAgICAgLyogbGdzIEd2ICovCisgICAgY2FzZSAweDBm YjU6CisgICAgICBpZiAoaTM4Nl9yZWNvcmRfbW9kcm0gKCkpCisJeworCSAg cmV0dXJuICgtMSk7CisJfQorICAgICAgaWYgKG1vZCA9PSAzKQorCXsKKwkg IGlmIChvcGNvZGUgPiAweGZmKQorCSAgICB7CisJICAgICAgaTM4Nl9yZWNv cmRfcGMgLT0gMzsKKwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJICAgICAg aTM4Nl9yZWNvcmRfcGMgLT0gMjsKKwkgICAgfQorCSAgb3Bjb2RlID0gb3Bj b2RlIDw8IDggfCBtb2RybTsKKwkgIGdvdG8gbm9fc3VwcG9ydDsKKwl9CisK KyAgICAgIHN3aXRjaCAob3Bjb2RlKQorCXsKKwkgIC8qIGxlcyBHdiAqLwor CWNhc2UgMHhjNDoKKwkgIHRtcHU4ID0gSTM4Nl9FU19SRUdOVU07CisJICBi cmVhazsKKwkgIC8qIGxkcyBHdiAqLworCWNhc2UgMHhjNToKKwkgIHRtcHU4 ID0gSTM4Nl9EU19SRUdOVU07CisJICBicmVhazsKKwkgIC8qIGxzcyBHdiAq LworCWNhc2UgMHgwZmIyOgorCSAgdG1wdTggPSBJMzg2X1NTX1JFR05VTTsK KwkgIGJyZWFrOworCSAgLyogbGZzIEd2ICovCisJY2FzZSAweDBmYjQ6CisJ ICB0bXB1OCA9IEkzODZfRlNfUkVHTlVNOworCSAgYnJlYWs7CisJICAvKiBs Z3MgR3YgKi8KKwljYXNlIDB4MGZiNToKKwkgIHRtcHU4ID0gSTM4Nl9HU19S RUdOVU07CisJICBicmVhazsKKwl9CisgICAgICBpZiAocmVjb3JkX2FyY2hf bGlzdF9hZGRfcmVnICh0bXB1OCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJ fQorCisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChyZWcp KQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisg ICAgICAvKiBzaGlmdHMgKi8KKyAgICBjYXNlIDB4YzA6CisgICAgY2FzZSAw eGMxOgorICAgIGNhc2UgMHhkMDoKKyAgICBjYXNlIDB4ZDE6CisgICAgY2Fz ZSAweGQyOgorICAgIGNhc2UgMHhkMzoKKyAgICAgIGlmICgob3Bjb2RlICYg MSkgPT0gMCkKKwl7CisJICBvdCA9IE9UX0JZVEU7CisJfQorICAgICAgZWxz ZQorCXsKKwkgIG90ID0gZGZsYWcgKyBPVF9XT1JEOworCX0KKworICAgICAg aWYgKGkzODZfcmVjb3JkX21vZHJtICgpKQorCXsKKwkgIHJldHVybiAoLTEp OworCX0KKworICAgICAgaWYgKG1vZCAhPSAzICYmIChvcGNvZGUgPT0gMHhk MiB8fCBvcGNvZGUgPT0gMHhkMykpCisJeworCSAgaWYgKGkzODZfcmVjb3Jk X2xlYV9tb2RybSAoKSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOwor CSAgICB9CisJfQorICAgICAgZWxzZQorCXsKKwkgIGlmIChvdCA9PSBPVF9C WVRFKQorCSAgICB7CisJICAgICAgcm0gJj0gMHgzOworCSAgICB9CisJICBp ZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChybSkpCisJICAgIHsKKwkg ICAgICByZXR1cm4gKC0xKTsKKwkgICAgfQorCX0KKworICAgICAgaWYgKHJl Y29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FRkxBR1NfUkVHTlVNKSkK Kwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAg IGNhc2UgMHgwZmE0OgorICAgIGNhc2UgMHgwZmE1OgorICAgIGNhc2UgMHgw ZmFjOgorICAgIGNhc2UgMHgwZmFkOgorICAgICAgaWYgKGkzODZfcmVjb3Jk X21vZHJtICgpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGlm IChtb2QgPT0gMykKKwl7CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf cmVnIChybSkpCisJICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAg fQorCX0KKyAgICAgIGVsc2UKKwl7CisJICBpZiAoaTM4Nl9yZWNvcmRfbGVh X21vZHJtICgpKQorCSAgICB7CisJICAgICAgcmV0dXJuICgtMSk7CisJICAg IH0KKwl9CisgICAgICBicmVhazsKKworICAgICAgLyogZmxvYXRzICovCisg ICAgICAvKiBJdCBqdXN0IHJlY29yZCB0aGUgbWVtb3J5IGNoYW5nZSBvZiBp bnN0cmN1dGlvbi4gKi8KKyAgICBjYXNlIDB4ZDggLi4uIDB4ZGY6CisgICAg ICBpZiAoaTM4Nl9yZWNvcmRfbW9kcm0gKCkpCisJeworCSAgcmV0dXJuICgt MSk7CisJfQorICAgICAgcmVnIHw9ICgob3Bjb2RlICYgNykgPDwgMyk7Cisg ICAgICBpZiAobW9kICE9IDMpCisJeworCSAgLyogbWVtb3J5ICovCisJICB1 aW50MzJfdCBhZGRyOworCisJICBpZiAoaTM4Nl9yZWNvcmRfbGVhX21vZHJt X2FkZHIgKCZhZGRyKSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOwor CSAgICB9CisJICBzd2l0Y2ggKHJlZykKKwkgICAgeworCSAgICBjYXNlIDB4 MDAgLi4uIDB4MDc6CisJICAgIGNhc2UgMHgxMCAuLi4gMHgxNzoKKwkgICAg Y2FzZSAweDIwIC4uLiAweDI3OgorCSAgICBjYXNlIDB4MzAgLi4uIDB4Mzc6 CisJICAgICAgYnJlYWs7CisJICAgIGNhc2UgMHgwODoKKwkgICAgY2FzZSAw eDBhOgorCSAgICBjYXNlIDB4MGI6CisJICAgIGNhc2UgMHgxOCAuLi4gMHgx YjoKKwkgICAgY2FzZSAweDI4IC4uLiAweDJiOgorCSAgICBjYXNlIDB4Mzgg Li4uIDB4M2I6CisJICAgICAgc3dpdGNoIChyZWcgJiA3KQorCQl7CisJCWNh c2UgMDoKKwkJICBicmVhazsKKwkJY2FzZSAxOgorCQkgIHN3aXRjaCAocmVn ID4+IDQpCisJCSAgICB7CisJCSAgICBjYXNlIDA6CisJCSAgICAgIGlmIChy ZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKGFkZHIsIDQpKQorCQkJeworCQkJ ICByZXR1cm4gKC0xKTsKKwkJCX0KKwkJICAgICAgYnJlYWs7CisJCSAgICBj YXNlIDI6CisJCSAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0g KGFkZHIsIDgpKQorCQkJeworCQkJICByZXR1cm4gKC0xKTsKKwkJCX0KKwkJ ICAgICAgYnJlYWs7CisJCSAgICBjYXNlIDM6CisJCSAgICBkZWZhdWx0Ogor CQkgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtIChhZGRyLCAy KSkKKwkJCXsKKwkJCSAgcmV0dXJuICgtMSk7CisJCQl9CisJCSAgICAgIGJy ZWFrOworCQkgICAgfQorCQkgIGJyZWFrOworCQlkZWZhdWx0OgorCQkgIHN3 aXRjaCAocmVnID4+IDQpCisJCSAgICB7CisJCSAgICBjYXNlIDA6CisJCSAg ICBjYXNlIDE6CisJCSAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9t ZW0gKGFkZHIsIDQpKQorCQkJeworCQkJICByZXR1cm4gKC0xKTsKKwkJCX0K KwkJICAgICAgYnJlYWs7CisJCSAgICBjYXNlIDI6CisJCSAgICAgIGlmIChy ZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKGFkZHIsIDgpKQorCQkJeworCQkJ ICByZXR1cm4gKC0xKTsKKwkJCX0KKwkJICAgICAgYnJlYWs7CisJCSAgICBj YXNlIDM6CisJCSAgICBkZWZhdWx0OgorCQkgICAgICBpZiAocmVjb3JkX2Fy Y2hfbGlzdF9hZGRfbWVtIChhZGRyLCAyKSkKKwkJCXsKKwkJCSAgcmV0dXJu ICgtMSk7CisJCQl9CisJCSAgICAgIGJyZWFrOworCQkgICAgfQorCQkgIGJy ZWFrOworCQl9CisJICAgICAgYnJlYWs7CisJICAgIGNhc2UgMHgwYzoKKwkg ICAgY2FzZSAweDBkOgorCSAgICBjYXNlIDB4MWQ6CisJICAgIGNhc2UgMHgy YzoKKwkgICAgY2FzZSAweDNjOgorCSAgICBjYXNlIDB4M2Q6CisJICAgICAg YnJlYWs7CisJICAgIGNhc2UgMHgwZToKKwkgICAgICBpZiAoZGZsYWcpCisJ CXsKKwkJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtIChhZGRyLCAy OCkpCisJCSAgICB7CisJCSAgICAgIHJldHVybiAoLTEpOworCQkgICAgfQor CQl9CisJICAgICAgZWxzZQorCQl7CisJCSAgaWYgKHJlY29yZF9hcmNoX2xp c3RfYWRkX21lbSAoYWRkciwgMTQpKQorCQkgICAgeworCQkgICAgICByZXR1 cm4gKC0xKTsKKwkJICAgIH0KKwkJfQorCSAgICAgIGJyZWFrOworCSAgICBj YXNlIDB4MGY6CisJICAgIGNhc2UgMHgyZjoKKwkgICAgICBpZiAocmVjb3Jk X2FyY2hfbGlzdF9hZGRfbWVtIChhZGRyLCAyKSkKKwkJeworCQkgIHJldHVy biAoLTEpOworCQl9CisJICAgICAgYnJlYWs7CisJICAgIGNhc2UgMHgxZjoK KwkgICAgY2FzZSAweDNlOgorCSAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0 X2FkZF9tZW0gKGFkZHIsIDEwKSkKKwkJeworCQkgIHJldHVybiAoLTEpOwor CQl9CisJICAgICAgYnJlYWs7CisJICAgIGNhc2UgMHgyZToKKwkgICAgICBp ZiAoZGZsYWcpCisJCXsKKwkJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf bWVtIChhZGRyLCAyOCkpCisJCSAgICB7CisJCSAgICAgIHJldHVybiAoLTEp OworCQkgICAgfQorCQkgIGFkZHIgKz0gMjg7CisJCX0KKwkgICAgICBlbHNl CisJCXsKKwkJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtIChhZGRy LCAxNCkpCisJCSAgICB7CisJCSAgICAgIHJldHVybiAoLTEpOworCQkgICAg fQorCQkgIGFkZHIgKz0gMTQ7CisJCX0KKwkgICAgICBpZiAocmVjb3JkX2Fy Y2hfbGlzdF9hZGRfbWVtIChhZGRyLCA4MCkpCisJCXsKKwkJICByZXR1cm4g KC0xKTsKKwkJfQorCSAgICAgIGJyZWFrOworCSAgICBjYXNlIDB4M2Y6CisJ ICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAoYWRkciwgOCkp CisJCXsKKwkJICByZXR1cm4gKC0xKTsKKwkJfQorCSAgICAgIGJyZWFrOwor CSAgICBkZWZhdWx0OgorCSAgICAgIGkzODZfcmVjb3JkX3BjIC09IDI7CisJ ICAgICAgb3Bjb2RlID0gb3Bjb2RlIDw8IDggfCBtb2RybTsKKwkgICAgICBn b3RvIG5vX3N1cHBvcnQ7CisJICAgICAgYnJlYWs7CisJICAgIH0KKwl9Cisg ICAgICBicmVhazsKKworICAgICAgLyogc3RyaW5nIG9wcyAqLworICAgICAg LyogbW92c1MgKi8KKyAgICBjYXNlIDB4YTQ6CisgICAgY2FzZSAweGE1Ogor ICAgICAgLyogc3Rvc1MgKi8KKyAgICBjYXNlIDB4YWE6CisgICAgY2FzZSAw eGFiOgorICAgICAgLyogaW5zUyAqLworICAgIGNhc2UgMHg2YzoKKyAgICBj YXNlIDB4NmQ6CisgICAgICB7CisJdWludDMyX3QgYWRkcjsKKworCWlmICgo b3Bjb2RlICYgMSkgPT0gMCkKKwkgIHsKKwkgICAgb3QgPSBPVF9CWVRFOwor CSAgfQorCWVsc2UKKwkgIHsKKwkgICAgb3QgPSBkZmxhZyArIE9UX1dPUkQ7 CisJICB9CisJaWYgKG9wY29kZSA9PSAweGE0IHx8IG9wY29kZSA9PSAweGE1 KQorCSAgeworCSAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJ Mzg2X0VTSV9SRUdOVU0pKQorCSAgICAgIHsKKwkJcmV0dXJuICgtMSk7CisJ ICAgICAgfQorCSAgfQorCWlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcg KEkzODZfRURJX1JFR05VTSkpCisJICB7CisJICAgIHJldHVybiAoLTEpOwor CSAgfQorCisJcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwg STM4Nl9FRElfUkVHTlVNLAorCQkJICAgKGdkYl9ieXRlICopICYgYWRkcik7 CisJaWYgKCFhZmxhZykKKwkgIHsKKwkgICAgYWRkciAmPSAweGZmZmY7CisJ ICAgIC8qIGFkZHIgKz0gKCh1aW50MzJfdClyZWFkX3JlZ2lzdGVyIChJMzg2 X0VTX1JFR05VTSkpIDw8IDQ7ICovCisgICAgICAgICAgICBpZiAocmVjb3Jk X2RlYnVnKQorCSAgICAgIHByaW50Zl91bmZpbHRlcmVkIChfCisJCQkgICAg ICAgICAoIlByb2Nlc3MgcmVjb3JkIGlnbm9yZXMgdGhlIG1lbW9yeSBjaGFu Z2Ugb2YgaW5zdHJ1Y3Rpb24gaW4gYWRkcmVzcyAweCVzIGJlY2F1c2UgaXQg Y2FuJ3QgZ2V0IHRoZSB2YWx1ZSBvZiB0aGUgc2VnbWVudCByZWdpc3Rlci5c biIpLAorCQkJICAgcGFkZHJfbnogKGkzODZfcmVjb3JkX3BjKSk7CisJICB9 CisKKwlpZiAocHJlZml4ZXMgJiAoUFJFRklYX1JFUFogfCBQUkVGSVhfUkVQ TlopKQorCSAgeworCSAgICB1aW50MzJfdCBjb3VudDsKKworCSAgICByZWdj YWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VDWF9SRUdO VU0sCisJCQkgICAgICAgKGdkYl9ieXRlICopICYgY291bnQpOworCSAgICBp ZiAoIWFmbGFnKQorCSAgICAgIHsKKwkJY291bnQgJj0gMHhmZmZmOworCSAg ICAgIH0KKworCSAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2Nh Y2hlLCBJMzg2X0VGTEFHU19SRUdOVU0sCisJCQkgICAgICAgKGdkYl9ieXRl ICopICYgdG1wdTMyKTsKKwkgICAgaWYgKCh0bXB1MzIgPj4gMTApICYgMHgx KQorCSAgICAgIHsKKwkJYWRkciAtPSAoY291bnQgLSAxKSAqICgxIDw8IG90 KTsKKwkgICAgICB9CisKKwkgICAgaWYgKGFmbGFnKQorCSAgICAgIHsKKwkg ICAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKGFkZHIsIGNv dW50ICogKDEgPDwgb3QpKSkKKwkgICAgICAgICAgeworCQkgICAgcmV0dXJu ICgtMSk7CisJICAgICAgICAgIH0KKwkgICAgICB9CisKKwkgICAgaWYgKHJl Y29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FQ1hfUkVHTlVNKSkKKwkg ICAgICB7CisJCXJldHVybiAoLTEpOworCSAgICAgIH0KKwkgIH0KKwllbHNl CisJICB7CisJICAgIGlmIChhZmxhZykKKwkgICAgICB7CisJICAgICAgICBp ZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtIChhZGRyLCAxIDw8IG90KSkK KwkgICAgICAgICAgeworCQkgICAgcmV0dXJuICgtMSk7CisJICAgICAgICAg IH0KKwkgICAgICB9CisJICB9CisgICAgICB9CisgICAgICBicmVhazsKKwor ICAgICAgLyogbG9kc1MgKi8KKyAgICBjYXNlIDB4YWM6CisgICAgY2FzZSAw eGFkOgorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4 Nl9FQVhfUkVHTlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAg ICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VTSV9SRUdO VU0pKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGlmIChwcmVm aXhlcyAmIChQUkVGSVhfUkVQWiB8IFBSRUZJWF9SRVBOWikpCisJeworCSAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FQ1hfUkVHTlVN KSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJfQor ICAgICAgYnJlYWs7CisKKyAgICAgIC8qIG91dHNTICovCisgICAgY2FzZSAw eDZlOgorICAgIGNhc2UgMHg2ZjoKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9s aXN0X2FkZF9yZWcgKEkzODZfRVNJX1JFR05VTSkpCisJeworCSAgcmV0dXJu ICgtMSk7CisJfQorICAgICAgaWYgKHByZWZpeGVzICYgKFBSRUZJWF9SRVBa IHwgUFJFRklYX1JFUE5aKSkKKwl7CisJICBpZiAocmVjb3JkX2FyY2hfbGlz dF9hZGRfcmVnIChJMzg2X0VDWF9SRUdOVU0pKQorCSAgICB7CisJICAgICAg cmV0dXJuICgtMSk7CisJICAgIH0KKwl9CisgICAgICBicmVhazsKKworICAg ICAgLyogc2Nhc1MgKi8KKyAgICBjYXNlIDB4YWU6CisgICAgY2FzZSAweGFm OgorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9F RElfUkVHTlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBp ZiAocHJlZml4ZXMgJiAoUFJFRklYX1JFUFogfCBQUkVGSVhfUkVQTlopKQor CXsKKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRUNY X1JFR05VTSkpCisJICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAg fQorCX0KKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkz ODZfRUZMQUdTX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQor ICAgICAgYnJlYWs7CisKKyAgICAgIC8qIGNtcHNTICovCisgICAgY2FzZSAw eGE2OgorICAgIGNhc2UgMHhhNzoKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9s aXN0X2FkZF9yZWcgKEkzODZfRURJX1JFR05VTSkpCisJeworCSAgcmV0dXJu ICgtMSk7CisJfQorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3Jl ZyAoSTM4Nl9FU0lfUkVHTlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9 CisgICAgICBpZiAocHJlZml4ZXMgJiAoUFJFRklYX1JFUFogfCBQUkVGSVhf UkVQTlopKQorCXsKKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcg KEkzODZfRUNYX1JFR05VTSkpCisJICAgIHsKKwkgICAgICByZXR1cm4gKC0x KTsKKwkgICAgfQorCX0KKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2Fk ZF9yZWcgKEkzODZfRUZMQUdTX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgt MSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHBvcnQgSS9PICov CisgICAgY2FzZSAweGU0OgorICAgIGNhc2UgMHhlNToKKyAgICBjYXNlIDB4 ZWM6CisgICAgY2FzZSAweGVkOgorICAgICAgaWYgKHJlY29yZF9hcmNoX2xp c3RfYWRkX3JlZyAoSTM4Nl9FQVhfUkVHTlVNKSkKKwl7CisJICByZXR1cm4g KC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAgIGNhc2UgMHhlNjoKKyAg ICBjYXNlIDB4ZTc6CisgICAgY2FzZSAweGVlOgorICAgIGNhc2UgMHhlZjoK KyAgICAgIGJyZWFrOworCisgICAgICAvKiBjb250cm9sICovCisgICAgICAv KiByZXQgaW0gKi8KKyAgICBjYXNlIDB4YzI6CisgICAgICAvKiByZXQgKi8K KyAgICBjYXNlIDB4YzM6CisgICAgICAvKiBscmV0IGltICovCisgICAgY2Fz ZSAweGNhOgorICAgICAgLyogbHJldCAqLworICAgIGNhc2UgMHhjYjoKKyAg ICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRVNQX1JF R05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgaWYgKHJl Y29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9DU19SRUdOVU0pKQorCXsK KwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAv KiBpcmV0ICovCisgICAgY2FzZSAweGNmOgorICAgICAgaWYgKHJlY29yZF9h cmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FU1BfUkVHTlVNKSkKKwl7CisJICBy ZXR1cm4gKC0xKTsKKwl9CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfcmVnIChJMzg2X0NTX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7 CisJfQorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4 Nl9FRkxBR1NfUkVHTlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9Cisg ICAgICBicmVhazsKKworICAgICAgLyogY2FsbCBpbSAqLworICAgIGNhc2Ug MHhlODoKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkz ODZfRVNQX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAg ICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgSTM4Nl9F U1BfUkVHTlVNLAorCQkJIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAg ICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtCisJICAoKENPUkVfQURE UikgdG1wdTMyIC0gKDEgPDwgKGRmbGFnICsgMSkpLCAoMSA8PCAoZGZsYWcg KyAxKSkpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFr OworCisgICAgICAvKiBsY2FsbCBpbSAqLworICAgIGNhc2UgMHg5YToKKyAg ICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfQ1NfUkVH TlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBpZiAocmVj b3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VTUF9SRUdOVU0pKQorCXsK KwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFk IChyZWNvcmRfcmVnY2FjaGUsIEkzODZfRVNQX1JFR05VTSwKKwkJCSAoZ2Ri X2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xp c3RfYWRkX21lbQorCSAgKChDT1JFX0FERFIpIHRtcHUzMiAtICgxIDw8IChk ZmxhZyArIDIpKSwgKDEgPDwgKGRmbGFnICsgMikpKSkKKwl7CisJICByZXR1 cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAgICAgLyogam1wIGlt ICovCisgICAgY2FzZSAweGU5OgorICAgICAgLyogbGptcCBpbSAqLworICAg IGNhc2UgMHhlYToKKyAgICAgIC8qIGptcCBKYiAqLworICAgIGNhc2UgMHhl YjoKKyAgICAgIC8qIGpjYyBKYiAqLworICAgIGNhc2UgMHg3MCAuLi4gMHg3 ZjoKKyAgICAgIC8qIGpjYyBKdiAqLworICAgIGNhc2UgMHgwZjgwIC4uLiAw eDBmOGY6CisgICAgICBicmVhazsKKworICAgICAgLyogc2V0Y2MgR3YgKi8K KyAgICBjYXNlIDB4MGY5MCAuLi4gMHgwZjlmOgorICAgICAgb3QgPSBPVF9C WVRFOworICAgICAgaWYgKGkzODZfcmVjb3JkX21vZHJtICgpKQorCXsKKwkg IHJldHVybiAoLTEpOworCX0KKyAgICAgIGlmIChtb2QgPT0gMykKKwl7CisJ ICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChybSAmIDB4MykpCisJ ICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAgfQorCX0KKyAgICAg IGVsc2UKKwl7CisJICBpZiAoaTM4Nl9yZWNvcmRfbGVhX21vZHJtICgpKQor CSAgICB7CisJICAgICAgcmV0dXJuICgtMSk7CisJICAgIH0KKwl9CisgICAg ICBicmVhazsKKworICAgICAgLyogY21vdiBHdiwgRXYgKi8KKyAgICBjYXNl IDB4MGY0MCAuLi4gMHgwZjRmOgorICAgICAgaWYgKGkzODZfcmVjb3JkX21v ZHJtICgpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGlmIChk ZmxhZyA9PSBPVF9CWVRFKQorCXsKKwkgIHJlZyAmPSAweDM7CisJfQorICAg ICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAocmVnICYgMHgzKSkK Kwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAg ICAgLyogZmxhZ3MgKi8KKyAgICAgIC8qIHB1c2hmICovCisgICAgY2FzZSAw eDljOgorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4 Nl9FU1BfUkVHTlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAg ICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCBJMzg2X0VT UF9SRUdOVU0sCisJCQkgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAg IGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0KKwkgICgoQ09SRV9BRERS KSB0bXB1MzIgLSAoMSA8PCAoZGZsYWcgKyAxKSksICgxIDw8IChkZmxhZyAr IDEpKSkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7 CisKKyAgICAgIC8qIHBvcGYgKi8KKyAgICBjYXNlIDB4OWQ6CisgICAgICBp ZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VTUF9SRUdOVU0p KQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGlmIChyZWNvcmRf YXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRUZMQUdTX1JFR05VTSkpCisJewor CSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8q IHNhaGYgKi8KKyAgICBjYXNlIDB4OWU6CisgICAgICAvKiBjbWMgKi8KKyAg ICBjYXNlIDB4ZjU6CisgICAgICAvKiBjbGMgKi8KKyAgICBjYXNlIDB4Zjg6 CisgICAgICAvKiBzdGMgKi8KKyAgICBjYXNlIDB4Zjk6CisgICAgICAvKiBj bGQgKi8KKyAgICBjYXNlIDB4ZmM6CisgICAgICAvKiBzdGQgKi8KKyAgICBj YXNlIDB4ZmQ6CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVn IChJMzg2X0VGTEFHU19SRUdOVU0pKQorCXsKKwkgIHJldHVybiAoLTEpOwor CX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBsYWhmICovCisgICAgY2Fz ZSAweDlmOgorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAo STM4Nl9FQVhfUkVHTlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9Cisg ICAgICBicmVhazsKKworICAgICAgLyogYml0IG9wZXJhdGlvbnMgKi8KKyAg ICAgIC8qIGJ0L2J0cy9idHIvYnRjIEd2LCBpbSAqLworICAgIGNhc2UgMHgw ZmJhOgorICAgICAgLyogYnRzICovCisgICAgY2FzZSAweDBmYWI6CisgICAg ICAvKiBidHIgKi8KKyAgICBjYXNlIDB4MGZiMzoKKyAgICAgIC8qIGJ0YyAq LworICAgIGNhc2UgMHgwZmJiOgorICAgICAgb3QgPSBkZmxhZyArIE9UX1dP UkQ7CisgICAgICBpZiAoaTM4Nl9yZWNvcmRfbW9kcm0gKCkpCisJeworCSAg cmV0dXJuICgtMSk7CisJfQorICAgICAgaWYgKHJlZyA8IDQpCisJeworCSAg aTM4Nl9yZWNvcmRfcGMgLT0gMzsKKwkgIG9wY29kZSA9IG9wY29kZSA8PCA4 IHwgbW9kcm07CisJICBnb3RvIG5vX3N1cHBvcnQ7CisJfQorICAgICAgcmVn IC09IDQ7CisgICAgICBpZiAocmVnICE9IDApCisJeworCSAgaWYgKG1vZCAh PSAzKQorCSAgICB7CisJICAgICAgaWYgKGkzODZfcmVjb3JkX2xlYV9tb2Ry bSAoKSkKKwkJeworCQkgIHJldHVybiAoLTEpOworCQl9CisJICAgIH0KKwkg IGVsc2UKKwkgICAgeworCSAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2Fk ZF9yZWcgKHJtKSkKKwkJeworCQkgIHJldHVybiAoLTEpOworCQl9CisJICAg IH0KKwl9CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJ Mzg2X0VGTEFHU19SRUdOVU0pKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0K KyAgICAgIGJyZWFrOworCisgICAgICAvKiBidCBHdiwgRXYgKi8KKyAgICBj YXNlIDB4MGZhMzoKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9y ZWcgKEkzODZfRUZMQUdTX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7 CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIGJzZiAqLworICAgIGNh c2UgMHgwZmJjOgorICAgICAgLyogYnNyICovCisgICAgY2FzZSAweDBmYmQ6 CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChyZWcpKQor CXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGlmIChyZWNvcmRfYXJj aF9saXN0X2FkZF9yZWcgKEkzODZfRUZMQUdTX1JFR05VTSkpCisJeworCSAg cmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIGJj ZCAqLworICAgICAgLyogZGFhICovCisgICAgY2FzZSAweDI3OgorICAgICAg LyogZGFzICovCisgICAgY2FzZSAweDJmOgorICAgICAgLyogYWFhICovCisg ICAgY2FzZSAweDM3OgorICAgICAgLyogYWFzICovCisgICAgY2FzZSAweDNm OgorICAgICAgLyogYWFtICovCisgICAgY2FzZSAweGQ0OgorICAgICAgLyog YWFkICovCisgICAgY2FzZSAweGQ1OgorICAgICAgaWYgKHJlY29yZF9hcmNo X2xpc3RfYWRkX3JlZyAoSTM4Nl9FQVhfUkVHTlVNKSkKKwl7CisJICByZXR1 cm4gKC0xKTsKKwl9CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf cmVnIChJMzg2X0VGTEFHU19SRUdOVU0pKQorCXsKKwkgIHJldHVybiAoLTEp OworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBtaXNjICovCisgICAg ICAvKiBub3AgKi8KKyAgICBjYXNlIDB4OTA6CisgICAgICBpZiAocHJlZml4 ZXMgJiBQUkVGSVhfTE9DSykKKwl7CisJICBpMzg2X3JlY29yZF9wYyAtPSAx OworCSAgZ290byBub19zdXBwb3J0OworCX0KKyAgICAgIGJyZWFrOworCisg ICAgICAvKiBmd2FpdCAqLworICAgICAgLyogWFhYICovCisgICAgY2FzZSAw eDliOgorICAgICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8KKwkJCSAoIlByb2Nl c3MgcmVjb3JkIGRvbid0IHN1cHBvcnQgaW5zdHJ1Y3Rpb24gZndhaXQuXG4i KSk7CisgICAgICBpMzg2X3JlY29yZF9wYyAtPSAxOworICAgICAgZ290byBu b19zdXBwb3J0OworICAgICAgYnJlYWs7CisKKyAgICAgIC8qIGludDMgKi8K KyAgICAgIC8qIFhYWCAqLworICAgIGNhc2UgMHhjYzoKKyAgICAgIHByaW50 Zl91bmZpbHRlcmVkIChfCisJCQkgKCJQcm9jZXNzIHJlY29yZCBkb2Vzbid0 IHN1cHBvcnQgaW5zdHJ1Y3Rpb24gaW50My5cbiIpKTsKKyAgICAgIGkzODZf cmVjb3JkX3BjIC09IDE7CisgICAgICBnb3RvIG5vX3N1cHBvcnQ7CisgICAg ICBicmVhazsKKworICAgICAgLyogaW50ICovCisgICAgICAvKiBYWFggKi8K KyAgICBjYXNlIDB4Y2Q6CisgICAgICB7CisJaW50IHJldDsKKwlpZiAodGFy Z2V0X3JlYWRfbWVtb3J5IChpMzg2X3JlY29yZF9wYywgJnRtcHU4LCAxKSkK KwkgIHsKKwkgICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oIlByb2Nlc3MgcmVj b3JkOiByZWFkIG1lbWVvcnkgMHglcyBlcnJvci5cbiIpLAorCQkJICAgICAg IHBhZGRyX256IChpMzg2X3JlY29yZF9wYykpOworCSAgICByZXR1cm4gKC0x KTsKKwkgIH0KKwlpMzg2X3JlY29yZF9wYysrOworCWlmICh0bXB1OCAhPSAw eDgwCisJICAgIHx8IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCktPmkzODZfaW50 eDgwX3JlY29yZCA9PSBOVUxMKQorCSAgeworCSAgICBwcmludGZfdW5maWx0 ZXJlZCAoXworCQkJICAgICAgICgiUHJvY2VzcyByZWNvcmQgZG9lc24ndCBz dXBwb3J0IGluc3RydWN0aW9uIGludCAweCUwMnguXG4iKSwKKwkJCSAgICAg ICB0bXB1OCk7CisJICAgIGkzODZfcmVjb3JkX3BjIC09IDI7CisJICAgIGdv dG8gbm9fc3VwcG9ydDsKKwkgIH0KKwlyZXQgPSBnZGJhcmNoX3RkZXAgKGdk YmFyY2gpLT5pMzg2X2ludHg4MF9yZWNvcmQgKCk7CisJaWYgKHJldCkKKwkg IHsKKwkgICAgcmV0dXJuIChyZXQpOworCSAgfQorICAgICAgfQorICAgICAg YnJlYWs7CisKKyAgICAgIC8qIGludG8gKi8KKyAgICAgIC8qIFhYWCAqLwor ICAgIGNhc2UgMHhjZToKKyAgICAgIHByaW50Zl91bmZpbHRlcmVkIChfCisJ CQkgKCJQcm9jZXNzIHJlY29yZCBkb2Vzbid0IHN1cHBvcnQgaW5zdHJ1Y3Rp b24gaW50by5cbiIpKTsKKyAgICAgIGkzODZfcmVjb3JkX3BjIC09IDE7Cisg ICAgICBnb3RvIG5vX3N1cHBvcnQ7CisgICAgICBicmVhazsKKworICAgICAg LyogY2xpICovCisgICAgY2FzZSAweGZhOgorICAgICAgLyogc3RpICovCisg ICAgY2FzZSAweGZiOgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIGJvdW5k ICovCisgICAgY2FzZSAweDYyOgorICAgICAgcHJpbnRmX3VuZmlsdGVyZWQg KF8KKwkJCSAoIlByb2Nlc3MgcmVjb3JkIGRvZXNuJ3Qgc3VwcG9ydCBpbnN0 cnVjdGlvbiBib3VuZC5cbiIpKTsKKyAgICAgIGkzODZfcmVjb3JkX3BjIC09 IDE7CisgICAgICBnb3RvIG5vX3N1cHBvcnQ7CisgICAgICBicmVhazsKKwor ICAgICAgLyogYnN3YXAgcmVnICovCisgICAgY2FzZSAweDBmYzggLi4uIDB4 MGZjZjoKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKG9w Y29kZSAmIDcpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJy ZWFrOworCisgICAgICAvKiBzYWxjICovCisgICAgY2FzZSAweGQ2OgorICAg ICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9FQVhfUkVH TlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBpZiAocmVj b3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VGTEFHU19SRUdOVU0pKQor CXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisgICAg ICAvKiBsb29wbnogKi8KKyAgICBjYXNlIDB4ZTA6CisgICAgICAvKiBsb29w eiAqLworICAgIGNhc2UgMHhlMToKKyAgICAgIC8qIGxvb3AgKi8KKyAgICBj YXNlIDB4ZTI6CisgICAgICAvKiBqZWN4eiAqLworICAgIGNhc2UgMHhlMzoK KyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9yZWcgKEkzODZfRUNY X1JFR05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJl YWs7CisKKyAgICAgIC8qIHdybXNyICovCisgICAgY2FzZSAweDBmMzA6Cisg ICAgICBwcmludGZfdW5maWx0ZXJlZCAoXworCQkJICgiUHJvY2VzcyByZWNv cmQgZG9lc24ndCBzdXBwb3J0IGluc3RydWN0aW9uIHdybXNyLlxuIikpOwor ICAgICAgaTM4Nl9yZWNvcmRfcGMgLT0gMjsKKyAgICAgIGdvdG8gbm9fc3Vw cG9ydDsKKyAgICAgIGJyZWFrOworCisgICAgICAvKiByZG1zciAqLworICAg IGNhc2UgMHgwZjMyOgorICAgICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8KKwkJ CSAoIlByb2Nlc3MgcmVjb3JkIGRvZXNuJ3Qgc3VwcG9ydCBpbnN0cnVjdGlv biByZG1zci5cbiIpKTsKKyAgICAgIGkzODZfcmVjb3JkX3BjIC09IDI7Cisg ICAgICBnb3RvIG5vX3N1cHBvcnQ7CisgICAgICBicmVhazsKKworICAgICAg LyogcmR0c2MgKi8KKyAgICBjYXNlIDB4MGYzMToKKyAgICAgIHByaW50Zl91 bmZpbHRlcmVkIChfCisJCQkgKCJQcm9jZXNzIHJlY29yZCBkb2Vzbid0IHN1 cHBvcnQgaW5zdHJ1Y3Rpb24gcmR0c2MuXG4iKSk7CisgICAgICBpMzg2X3Jl Y29yZF9wYyAtPSAyOworICAgICAgZ290byBub19zdXBwb3J0OworICAgICAg YnJlYWs7CisKKyAgICAgIC8qIHN5c2VudGVyICovCisgICAgY2FzZSAweDBm MzQ6CisgICAgICB7CisJaW50IHJldDsKKwlpZiAoZ2RiYXJjaF90ZGVwIChn ZGJhcmNoKS0+aTM4Nl9zeXNlbnRlcl9yZWNvcmQgPT0gTlVMTCkKKwkgIHsK KwkgICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8KKwkJCSAgICAgICAoIlByb2Nl c3MgcmVjb3JkIGRvZXNuJ3Qgc3VwcG9ydCBpbnN0cnVjdGlvbiBzeXNlbnRl ci5cbiIpKTsKKwkgICAgaTM4Nl9yZWNvcmRfcGMgLT0gMjsKKwkgICAgZ290 byBub19zdXBwb3J0OworCSAgfQorCXJldCA9IGdkYmFyY2hfdGRlcCAoZ2Ri YXJjaCktPmkzODZfc3lzZW50ZXJfcmVjb3JkICgpOworCWlmIChyZXQpCisJ ICB7CisJICAgIHJldHVybiAocmV0KTsKKwkgIH0KKyAgICAgIH0KKyAgICAg IGJyZWFrOworCisgICAgICAvKiBzeXNleGl0ICovCisgICAgY2FzZSAweDBm MzU6CisgICAgICBwcmludGZfdW5maWx0ZXJlZCAoXworCQkJICgiUHJvY2Vz cyByZWNvcmQgZG9lc24ndCBzdXBwb3J0IGluc3RydWN0aW9uIHN5c2V4aXQu XG4iKSk7CisgICAgICBpMzg2X3JlY29yZF9wYyAtPSAyOworICAgICAgZ290 byBub19zdXBwb3J0OworICAgICAgYnJlYWs7CisKKyAgICAgIC8qIGNwdWlk ICovCisgICAgY2FzZSAweDBmYTI6CisgICAgICBpZiAocmVjb3JkX2FyY2hf bGlzdF9hZGRfcmVnIChJMzg2X0VBWF9SRUdOVU0pKQorCXsKKwkgIHJldHVy biAoLTEpOworCX0KKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9y ZWcgKEkzODZfRUNYX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7CisJ fQorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX3JlZyAoSTM4Nl9F RFhfUkVHTlVNKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBp ZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VCWF9SRUdOVU0p KQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisg ICAgICAvKiBobHQgKi8KKyAgICBjYXNlIDB4ZjQ6CisgICAgICBwcmludGZf dW5maWx0ZXJlZCAoXworCQkJICgiUHJvY2VzcyByZWNvcmQgZG9lc24ndCBz dXBwb3J0IGluc3RydWN0aW9uIGhsdC5cbiIpKTsKKyAgICAgIGkzODZfcmVj b3JkX3BjIC09IDE7CisgICAgICBnb3RvIG5vX3N1cHBvcnQ7CisgICAgICBi cmVhazsKKworICAgIGNhc2UgMHgwZjAwOgorICAgICAgaWYgKGkzODZfcmVj b3JkX21vZHJtICgpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAg IHN3aXRjaCAocmVnKQorCXsKKwkgIC8qIHNsZHQgKi8KKwljYXNlIDA6CisJ ICAvKiBzdHIgKi8KKwljYXNlIDE6CisJICBpZiAobW9kID09IDMpCisJICAg IHsKKwkgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChybSkp CisJCXsKKwkJICByZXR1cm4gKC0xKTsKKwkJfQorCSAgICB9CisJICBlbHNl CisJICAgIHsKKwkgICAgICBvdCA9IE9UX1dPUkQ7CisJICAgICAgaWYgKGkz ODZfcmVjb3JkX2xlYV9tb2RybSAoKSkKKwkJeworCQkgIHJldHVybiAoLTEp OworCQl9CisJICAgIH0KKwkgIGJyZWFrOworCSAgLyogbGxkdCAqLworCWNh c2UgMjoKKwkgIC8qIGx0ciAqLworCWNhc2UgMzoKKwkgIGJyZWFrOworCSAg LyogdmVyciAqLworCWNhc2UgNDoKKwkgIC8qIHZlcncgKi8KKwljYXNlIDU6 CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VGTEFH U19SRUdOVU0pKQorCSAgICB7CisJICAgICAgcmV0dXJuICgtMSk7CisJICAg IH0KKwkgIGJyZWFrOworCWRlZmF1bHQ6CisJICBpMzg2X3JlY29yZF9wYyAt PSAzOworCSAgb3Bjb2RlID0gb3Bjb2RlIDw8IDggfCBtb2RybTsKKwkgIGdv dG8gbm9fc3VwcG9ydDsKKwkgIGJyZWFrOworCX0KKyAgICAgIGJyZWFrOwor CisgICAgY2FzZSAweDBmMDE6CisgICAgICBpZiAoaTM4Nl9yZWNvcmRfbW9k cm0gKCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgc3dpdGNo IChyZWcpCisJeworCSAgLyogc2dkdCAqLworCWNhc2UgMDoKKwkgIHsKKwkg ICAgdWludDMyX3QgYWRkcjsKKworCSAgICBpZiAobW9kID09IDMpCisJICAg ICAgeworCQlpMzg2X3JlY29yZF9wYyAtPSAzOworCQlvcGNvZGUgPSBvcGNv ZGUgPDwgOCB8IG1vZHJtOworCQlnb3RvIG5vX3N1cHBvcnQ7CisJICAgICAg fQorCisJICAgIGlmIChvdmVycmlkZSkKKwkgICAgICB7CisJCWlmIChyZWNv cmRfZGVidWcpCisJCSAgcHJpbnRmX3VuZmlsdGVyZWQgKF8KKwkJCQkgICAg ICgiUHJvY2VzcyByZWNvcmQgaWdub3JlcyB0aGUgbWVtb3J5IGNoYW5nZSBv ZiBpbnN0cnVjdGlvbiBpbiBhZGRyZXNzIDB4JXMgYmVjYXVzZSBpdCBjYW4n dCBnZXQgdGhlIHZhbHVlIG9mIHRoZSBzZWdtZW50IHJlZ2lzdGVyLlxuIiks CisJCQkJICAgICBwYWRkcl9ueiAoaTM4Nl9yZWNvcmRfcGMpKTsKK2Vycm9y KCIzIik7CisJICAgICAgfQorCSAgICBlbHNlCisJICAgICAgeworCQlpZiAo aTM4Nl9yZWNvcmRfbGVhX21vZHJtX2FkZHIgKCZhZGRyKSkKKwkJICB7CisJ CSAgICByZXR1cm4gKC0xKTsKKwkJICB9CisJCWlmIChyZWNvcmRfYXJjaF9s aXN0X2FkZF9tZW0gKGFkZHIsIDIpKQorCQkgIHsKKwkJICAgIHJldHVybiAo LTEpOworCQkgIH0KKwkJYWRkciArPSAyOworCQlpZiAocmVjb3JkX2FyY2hf bGlzdF9hZGRfbWVtIChhZGRyLCA0KSkKKwkJICB7CisJCSAgICByZXR1cm4g KC0xKTsKKwkJICB9CisJICAgICAgfQorCSAgfQorCSAgYnJlYWs7CisJY2Fz ZSAxOgorCSAgaWYgKG1vZCA9PSAzKQorCSAgICB7CisJICAgICAgc3dpdGNo IChybSkKKwkJeworCQkgIC8qIG1vbml0b3IgKi8KKwkJY2FzZSAwOgorCQkg IGJyZWFrOworCQkgIC8qIG13YWl0ICovCisJCWNhc2UgMToKKwkJICBpZiAo cmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VGTEFHU19SRUdOVU0p KQorCQkgICAgeworCQkgICAgICByZXR1cm4gKC0xKTsKKwkJICAgIH0KKwkJ ICBicmVhazsKKwkJZGVmYXVsdDoKKwkJICBpMzg2X3JlY29yZF9wYyAtPSAz OworCQkgIG9wY29kZSA9IG9wY29kZSA8PCA4IHwgbW9kcm07CisJCSAgZ290 byBub19zdXBwb3J0OworCQkgIGJyZWFrOworCQl9CisJICAgIH0KKwkgIGVs c2UKKwkgICAgeworCSAgICAgIC8qIHNpZHQgKi8KKwkgICAgICBpZiAob3Zl cnJpZGUpCisJCXsKKwkJICBpZiAocmVjb3JkX2RlYnVnKQorCQkgICAgcHJp bnRmX3VuZmlsdGVyZWQgKF8KKwkJCQkgICAgICAgKCJQcm9jZXNzIHJlY29y ZCBpZ25vcmVzIHRoZSBtZW1vcnkgY2hhbmdlIG9mIGluc3RydWN0aW9uIGlu IGFkZHJlc3MgMHglcyBiZWNhdXNlIGl0IGNhbid0IGdldCB0aGUgdmFsdWUg b2YgdGhlIHNlZ21lbnQgcmVnaXN0ZXIuXG4iKSwKKwkJCQkgICAgICAgcGFk ZHJfbnogKGkzODZfcmVjb3JkX3BjKSk7CisJCX0KKwkgICAgICBlbHNlCisJ CXsKKwkJICB1aW50MzJfdCBhZGRyOworCisJCSAgaWYgKGkzODZfcmVjb3Jk X2xlYV9tb2RybV9hZGRyICgmYWRkcikpCisJCSAgICB7CisJCSAgICAgIHJl dHVybiAoLTEpOworCQkgICAgfQorCQkgIGlmIChyZWNvcmRfYXJjaF9saXN0 X2FkZF9tZW0gKGFkZHIsIDIpKQorCQkgICAgeworCQkgICAgICByZXR1cm4g KC0xKTsKKwkJICAgIH0KKwkJICBhZGRyICs9IDI7CisJCSAgaWYgKHJlY29y ZF9hcmNoX2xpc3RfYWRkX21lbSAoYWRkciwgNCkpCisJCSAgICB7CisJCSAg ICAgIHJldHVybiAoLTEpOworCQkgICAgfQorCQl9CisJICAgIH0KKwkgIGJy ZWFrOworCSAgLyogbGdkdCAqLworCWNhc2UgMjoKKwkgIC8qIGxpZHQgKi8K KwljYXNlIDM6CisJICAvKiBpbnZscGcgKi8KKwljYXNlIDc6CisJZGVmYXVs dDoKKwkgIGlmIChtb2QgPT0gMykKKwkgICAgeworCSAgICAgIGkzODZfcmVj b3JkX3BjIC09IDM7CisJICAgICAgb3Bjb2RlID0gb3Bjb2RlIDw8IDggfCBt b2RybTsKKwkgICAgICBnb3RvIG5vX3N1cHBvcnQ7CisJICAgIH0KKwkgIGJy ZWFrOworCSAgLyogc21zdyAqLworCWNhc2UgNDoKKwkgIGlmIChtb2QgPT0g MykKKwkgICAgeworCSAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9y ZWcgKHJtKSkKKwkJeworCQkgIHJldHVybiAoLTEpOworCQl9CisJICAgIH0K KwkgIGVsc2UKKwkgICAgeworCSAgICAgIG90ID0gT1RfV09SRDsKKwkgICAg ICBpZiAoaTM4Nl9yZWNvcmRfbGVhX21vZHJtICgpKQorCQl7CisJCSAgcmV0 dXJuICgtMSk7CisJCX0KKwkgICAgfQorCSAgYnJlYWs7CisJICAvKiBsbXN3 ICovCisJY2FzZSA2OgorCSAgYnJlYWs7CisJfQorICAgICAgYnJlYWs7CisK KyAgICAgIC8qIGludmQgKi8KKyAgICBjYXNlIDB4MGYwODoKKyAgICAgIC8q IHdiaW52ZCAqLworICAgIGNhc2UgMHgwZjA5OgorICAgICAgYnJlYWs7CisK KyAgICAgIC8qIGFycGwgKi8KKyAgICBjYXNlIDB4NjM6CisgICAgICBvdCA9 IGRmbGFnID8gT1RfTE9ORyA6IE9UX1dPUkQ7CisgICAgICBpZiAoaTM4Nl9y ZWNvcmRfbW9kcm0gKCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAg ICAgaWYgKG1vZCAhPSAzKQorCXsKKwkgIGlmIChpMzg2X3JlY29yZF9sZWFf bW9kcm0gKCkpCisJICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAg fQorCX0KKyAgICAgIGVsc2UKKwl7CisJICBpZiAocmVjb3JkX2FyY2hfbGlz dF9hZGRfcmVnIChybSkpCisJICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsK KwkgICAgfQorCX0KKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9y ZWcgKEkzODZfRUZMQUdTX1JFR05VTSkpCisJeworCSAgcmV0dXJuICgtMSk7 CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIGxhciAqLworICAgIGNh c2UgMHgwZjAyOgorICAgICAgLyogbHNsICovCisgICAgY2FzZSAweDBmMDM6 CisgICAgICBpZiAoaTM4Nl9yZWNvcmRfbW9kcm0gKCkpCisJeworCSAgcmV0 dXJuICgtMSk7CisJfQorICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRk X3JlZyAocmVnKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBp ZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfcmVnIChJMzg2X0VGTEFHU19SRUdO VU0pKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOwor CisgICAgY2FzZSAweDBmMTg6CisgICAgICBicmVhazsKKworICAgICAgLyog bm9wIChtdWx0aSBieXRlKSAqLworICAgIGNhc2UgMHgwZjE5IC4uLiAweDBm MWY6CisgICAgICBicmVhazsKKworICAgICAgLyogbW92IHJlZywgY3JOICov CisgICAgY2FzZSAweDBmMjA6CisgICAgICAvKiBtb3YgY3JOLCByZWcgKi8K KyAgICBjYXNlIDB4MGYyMjoKKyAgICAgIGlmIChpMzg2X3JlY29yZF9tb2Ry bSAoKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBpZiAoKG1v ZHJtICYgMHhjMCkgIT0gMHhjMCkKKwl7CisJICBpMzg2X3JlY29yZF9wYyAt PSAyOworCSAgb3Bjb2RlID0gb3Bjb2RlIDw8IDggfCBtb2RybTsKKwkgIGdv dG8gbm9fc3VwcG9ydDsKKwl9CisgICAgICBzd2l0Y2ggKHJlZykKKwl7CisJ Y2FzZSAwOgorCWNhc2UgMjoKKwljYXNlIDM6CisJY2FzZSA0OgorCWNhc2Ug ODoKKwkgIGlmIChvcGNvZGUgJiAyKQorCSAgICB7CisJICAgIH0KKwkgIGVs c2UKKwkgICAgeworCSAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9y ZWcgKHJtKSkKKwkJeworCQkgIHJldHVybiAoLTEpOworCQl9CisJICAgIH0K KwkgIGJyZWFrOworCWRlZmF1bHQ6CisJICBpMzg2X3JlY29yZF9wYyAtPSAy OworCSAgb3Bjb2RlID0gb3Bjb2RlIDw8IDggfCBtb2RybTsKKwkgIGdvdG8g bm9fc3VwcG9ydDsKKwkgIGJyZWFrOworCX0KKyAgICAgIGJyZWFrOworCisg ICAgICAvKiBtb3YgcmVnLCBkck4gKi8KKyAgICBjYXNlIDB4MGYyMToKKyAg ICAgIC8qIG1vdiBkck4sIHJlZyAqLworICAgIGNhc2UgMHgwZjIzOgorICAg ICAgaWYgKGkzODZfcmVjb3JkX21vZHJtICgpKQorCXsKKwkgIHJldHVybiAo LTEpOworCX0KKyAgICAgIGlmICgobW9kcm0gJiAweGMwKSAhPSAweGMwIHx8 IHJlZyA9PSA0IHx8IHJlZyA9PSA1IHx8IHJlZyA+PSA4KQorCXsKKwkgIGkz ODZfcmVjb3JkX3BjIC09IDI7CisJICBvcGNvZGUgPSBvcGNvZGUgPDwgOCB8 IG1vZHJtOworCSAgZ290byBub19zdXBwb3J0OworCX0KKyAgICAgIGlmIChv cGNvZGUgJiAyKQorCXsKKwl9CisgICAgICBlbHNlCisJeworCSAgaWYgKHJl Y29yZF9hcmNoX2xpc3RfYWRkX3JlZyAocm0pKQorCSAgICB7CisJICAgICAg cmV0dXJuICgtMSk7CisJICAgIH0KKwl9CisgICAgICBicmVhazsKKworICAg ICAgLyogY2x0cyAqLworICAgIGNhc2UgMHgwZjA2OgorICAgICAgYnJlYWs7 CisKKyAgICAgIC8qIE1NWC9TU0UvU1NFMi9QTkkgc3VwcG9ydCAqLworICAg ICAgLyogWFhYICovCisKKyAgICBkZWZhdWx0OgorICAgICAgaWYgKG9wY29k ZSA+IDB4ZmYpCisJeworCSAgaTM4Nl9yZWNvcmRfcGMgLT0gMjsKKwl9Cisg ICAgICBlbHNlCisJeworCSAgaTM4Nl9yZWNvcmRfcGMgLT0gMTsKKwl9Cisg ICAgICBnb3RvIG5vX3N1cHBvcnQ7CisgICAgICBicmVhazsKKyAgICB9CisK Ky8qIEluIHRoZSBmdXR1cmUsIE1heWJlIHN0aWxsIG5lZWQgdG8gZGVhbCB3 aXRoIG5lZWRfZGFzbSAqLworICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf cmVnIChJMzg2X0VJUF9SRUdOVU0pKQorICAgIHsKKyAgICAgIHJldHVybiAo LTEpOworICAgIH0KKyAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX2VuZCAo MCkpCisgICAgeworICAgICAgcmV0dXJuICgtMSk7CisgICAgfQorCisgIHJl dHVybiAoMCk7CisKK25vX3N1cHBvcnQ6CisgIHByaW50Zl91bmZpbHRlcmVk IChfCisJCSAgICAgKCJQcm9jZXNzIHJlY29yZCBkb2Vzbid0IHN1cHBvcnQg aW5zdHJ1Y3Rpb24gMHglMDJ4IGF0IGFkZHJlc3MgMHglcy5cbiIpLAorCQkg ICAgICh1bnNpZ25lZCBpbnQpIChvcGNvZGUpLCBwYWRkcl9ueiAoaTM4Nl9y ZWNvcmRfcGMpKTsKKyAgcmV0dXJuICgtMSk7Cit9CisKIAwKIHN0YXRpYyBz dHJ1Y3QgZ2RiYXJjaCAqCiBpMzg2X2dkYmFyY2hfaW5pdCAoc3RydWN0IGdk YmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICphcmNoZXMp CkBAIC0yODI5LDYgKzU1MzMsOCBAQCBpMzg2X2dkYmFyY2hfaW5pdCAoc3Ry dWN0IGdkYmFyY2hfaW5mbyBpCiAgIHNldF9nZGJhcmNoX3NraXBfcGVybWFu ZW50X2JyZWFrcG9pbnQgKGdkYmFyY2gsCiAJCQkJCSBpMzg2X3NraXBfcGVy bWFuZW50X2JyZWFrcG9pbnQpOwogCisgIHNldF9nZGJhcmNoX3Byb2Nlc3Nf cmVjb3JkIChnZGJhcmNoLCBpMzg2X3Byb2Nlc3NfcmVjb3JkKTsKKwogICBy ZXR1cm4gZ2RiYXJjaDsKIH0KIAotLS0gYS9pMzg2LXRkZXAuaAorKysgYi9p Mzg2LXRkZXAuaApAQCAtMTA2LDYgKzEwNiw5IEBAIHN0cnVjdCBnZGJhcmNo X3RkZXAKICAgLyogSVNBLXNwZWNpZmljIGRhdGEgdHlwZXMuICAqLwogICBz dHJ1Y3QgdHlwZSAqaTM4Nl9tbXhfdHlwZTsKICAgc3RydWN0IHR5cGUgKmkz ODZfc3NlX3R5cGU7CisKKyAgaW50ICgqaTM4Nl9pbnR4ODBfcmVjb3JkKSAo dm9pZCk7CisgIGludCAoKmkzODZfc3lzZW50ZXJfcmVjb3JkKSAodm9pZCk7 CiB9OwogCiAvKiBGbG9hdGluZy1wb2ludCByZWdpc3RlcnMuICAqLwo= ------=_Part_24927_10185296.1225957844527--