From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1071 invoked by alias); 6 Nov 2008 07:50:07 -0000 Received: (qmail 348 invoked by uid 22791); 6 Nov 2008 07:49:57 -0000 X-Spam-Check-By: sourceware.org Received: from ti-out-0910.google.com (HELO ti-out-0910.google.com) (209.85.142.189) by sourceware.org (qpsmtpd/0.31) with ESMTP; Thu, 06 Nov 2008 07:48:48 +0000 Received: by ti-out-0910.google.com with SMTP id d10so246477tib.12 for ; Wed, 05 Nov 2008 23:48:47 -0800 (PST) Received: by 10.110.49.6 with SMTP id w6mr1799940tiw.9.1225957727138; Wed, 05 Nov 2008 23:48:47 -0800 (PST) Received: by 10.110.42.9 with HTTP; Wed, 5 Nov 2008 23:48:46 -0800 (PST) Message-ID: Date: Thu, 06 Nov 2008 07:50:00 -0000 From: teawater To: "gdb-patches@sourceware.org" Subject: [RFA] Process record and replay, 5/10 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_24887_11537914.1225957727079" 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/msg00101.txt.bz2 ------=_Part_24887_11537914.1225957727079 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Content-length: 632 This patch add process record and replay for Linux support file. The main function is "record_linux_system_call" will be called by architecture record function. It is used to record the system call execute log. 2008-11-06 Hui Zhu Process record and replay target. * Makefile.in (linux-record.c): New file. * configure.tgt (linux-record.c): New file. * linux-record.c, linux-record.h: New file. Makefile.in | 4 configure.tgt | 6 linux-record.c | 2465 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ linux-record.h | 171 +++ 4 files changed, 2642 insertions(+), 4 deletions(-) ------=_Part_24887_11537914.1225957727079 Content-Type: text/plain; name=linux-record.txt Content-Transfer-Encoding: base64 X-Attachment-Id: f_fn73poos0 Content-Disposition: attachment; filename=linux-record.txt Content-length: 89170 LS0tIGEvY29uZmlndXJlLnRndAorKysgYi9jb25maWd1cmUudGd0CkBAIC0x ODUsNyArMTg1LDggQEAgaVszNDU2N104Ni0qLXNvbGFyaXMqKQogaVszNDU2 N104Ni0qLWxpbnV4KikKIAkjIFRhcmdldDogSW50ZWwgMzg2IHJ1bm5pbmcg R05VL0xpbnV4CiAJZ2RiX3RhcmdldF9vYnM9ImkzODYtdGRlcC5vIGkzODYt bGludXgtdGRlcC5vIGdsaWJjLXRkZXAubyBpMzg3LXRkZXAubyBcCi0JCQlz b2xpYi5vIHNvbGliLXN2cjQubyBzeW1maWxlLW1lbS5vIGNvcmVsb3cubyIK KwkJCXNvbGliLm8gc29saWItc3ZyNC5vIHN5bWZpbGUtbWVtLm8gY29yZWxv dy5vIFwKKwkJCWxpbnV4LXJlY29yZC5vIgogCWJ1aWxkX2dkYnNlcnZlcj15 ZXMKIAk7OwogaVszNDU2N104Ni0qLWdudSopCkBAIC01MDcsNyArNTA4LDgg QEAgeDg2XzY0LSotbGludXgqKQogCSMgVGFyZ2V0OiBHTlUvTGludXggeDg2 LTY0CiAJZ2RiX3RhcmdldF9vYnM9ImFtZDY0LXRkZXAubyBhbWQ2NC1saW51 eC10ZGVwLm8gaTM4Ni10ZGVwLm8gXAogCQkJaTM4Ny10ZGVwLm8gaTM4Ni1s aW51eC10ZGVwLm8gZ2xpYmMtdGRlcC5vIFwKLQkJCXNvbGliLm8gc29saWIt c3ZyNC5vIGNvcmVsb3cubyBzeW1maWxlLW1lbS5vIgorCQkJc29saWIubyBz b2xpYi1zdnI0Lm8gY29yZWxvdy5vIHN5bWZpbGUtbWVtLm8gXAorCQkJbGlu dXgtcmVjb3JkLm8iCiAJYnVpbGRfZ2Ric2VydmVyPXllcwogCTs7CiB4ODZf NjQtKi1mcmVlYnNkKiB8IHg4Nl82NC0qLWtmcmVlYnNkKi1nbnUpCi0tLSBh L01ha2VmaWxlLmluCisrKyBiL01ha2VmaWxlLmluCkBAIC01MTUsNyArNTE1 LDcgQEAgQUxMX1RBUkdFVF9PQlMgPSBcCiAJeGNvZmZyZWFkLm8gXAogCXBy b2xvZ3VlLXZhbHVlLm8gXAogCXN5bWZpbGUtbWVtLm8gXAotCWNvcmVsb3cu bworCWNvcmVsb3cubyBsaW51eC1yZWNvcmQubwogCiAjIEhvc3QtZGVwZW5k ZW50IG1ha2VmaWxlIGZyYWdtZW50IGNvbWVzIGluIGhlcmUuCiBAaG9zdF9t YWtlZmlsZV9mcmFnQApAQCAtMTI5Nyw3ICsxMjk3LDcgQEAgQUxMREVQRklM RVMgPSBcCiAJaW5mLXB0cmFjZS5jIGluZi10dHJhY2UuYyBcCiAJaXJpeDUt bmF0LmMgXAogCWxpYnVud2luZC1mcmFtZS5jIFwKLQlsaW51eC1mb3JrLmMg XAorCWxpbnV4LWZvcmsuYyBsaW51eC1yZWNvcmQuYyBcCiAJbTY4aGMxMS10 ZGVwLmMgXAogCW0zMnItdGRlcC5jIFwKIAltMzJyLWxpbnV4LW5hdC5jIG0z MnItbGludXgtdGRlcC5jIFwKLS0tIGEvbGludXgtcmVjb3JkLmMKKysrIGIv bGludXgtcmVjb3JkLmMKQEAgLTAsMCArMSwyNDY1IEBACisvKiBQcm9jZXNz IHJlY29yZCBhbmQgcmVwbGF5IHRhcmdldCBjb2RlIGZvciBHTlUvTGludXgu CisKKyAgIENvcHlyaWdodCAoQykgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKworICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgor CisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjaW5jbHVkZSAiZGVm cy5oIgorI2luY2x1ZGUgInRhcmdldC5oIgorI2luY2x1ZGUgInJlZ2NhY2hl LmgiCisjaW5jbHVkZSAicmVjb3JkLmgiCisjaW5jbHVkZSAibGludXgtcmVj b3JkLmgiCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKy8qIFRoZXNlIG1hY3Jv cyBhcmUgdGhlIHZhbHVlcyBvZiB0aGUgZmlyc3QgYXJndW1lbnQgb2Ygc3lz dGVtIGNhbGwKKyAgICJzeXNfcHRyYWNlIi4gVGhlIHZhbHVlcyBvZiB0aGVz ZSBtYWNyb3MgYXJlIGdvdHRlbiBmcm9tIExpbnV4IEtlcm5lbAorICAgc291 cmNlLiAgKi8KKworI2RlZmluZSBSRUNPUkRfUFRSQUNFX1BFRUtURVhUCTEK KyNkZWZpbmUgUkVDT1JEX1BUUkFDRV9QRUVLREFUQQkyCisjZGVmaW5lIFJF Q09SRF9QVFJBQ0VfUEVFS1VTUgkzCisKKy8qIFRoZXNlIG1hY3JvcyBhcmUg dGhlIHZhbHVlcyBvZiB0aGUgZmlyc3QgYXJndW1lbnQgb2Ygc3lzdGVtIGNh bGwKKyAgICJzeXNfc29ja2V0Y2FsbCIuIFRoZSB2YWx1ZXMgb2YgdGhlc2Ug bWFjcm9zIGFyZSBnb3R0ZW4gZnJvbSBMaW51eCBLZXJuZWwKKyAgIHNvdXJj ZS4gICovCisKKyNkZWZpbmUgUkVDT1JEX1NZU19TT0NLRVQJMQorI2RlZmlu ZSBSRUNPUkRfU1lTX0JJTkQJCTIKKyNkZWZpbmUgUkVDT1JEX1NZU19DT05O RUNUCTMKKyNkZWZpbmUgUkVDT1JEX1NZU19MSVNURU4JNAorI2RlZmluZSBS RUNPUkRfU1lTX0FDQ0VQVAk1CisjZGVmaW5lIFJFQ09SRF9TWVNfR0VUU09D S05BTUUJNgorI2RlZmluZSBSRUNPUkRfU1lTX0dFVFBFRVJOQU1FCTcKKyNk ZWZpbmUgUkVDT1JEX1NZU19TT0NLRVRQQUlSCTgKKyNkZWZpbmUgUkVDT1JE X1NZU19TRU5ECQk5CisjZGVmaW5lIFJFQ09SRF9TWVNfUkVDVgkJMTAKKyNk ZWZpbmUgUkVDT1JEX1NZU19TRU5EVE8JMTEKKyNkZWZpbmUgUkVDT1JEX1NZ U19SRUNWRlJPTQkxMgorI2RlZmluZSBSRUNPUkRfU1lTX1NIVVRET1dOCTEz CisjZGVmaW5lIFJFQ09SRF9TWVNfU0VUU09DS09QVAkxNAorI2RlZmluZSBS RUNPUkRfU1lTX0dFVFNPQ0tPUFQJMTUKKyNkZWZpbmUgUkVDT1JEX1NZU19T RU5ETVNHCTE2CisjZGVmaW5lIFJFQ09SRF9TWVNfUkVDVk1TRwkxNworCisv KiBUaGVzZSBtYWNyb3MgYXJlIHRoZSB2YWx1ZXMgb2YgdGhlIGZpcnN0IGFy Z3VtZW50IG9mIHN5c3RlbSBjYWxsCisgICAic3lzX2lwYyIuIFRoZSB2YWx1 ZXMgb2YgdGhlc2UgbWFjcm9zIGFyZSBnb3R0ZW4gZnJvbSBMaW51eCBLZXJu ZWwgc291cmNlLgorICovCisKKyNkZWZpbmUgUkVDT1JEX1NFTU9QCQkxCisj ZGVmaW5lIFJFQ09SRF9TRU1HRVQJCTIKKyNkZWZpbmUgUkVDT1JEX1NFTUNU TAkJMworI2RlZmluZSBSRUNPUkRfU0VNVElNRURPUAk0CisjZGVmaW5lIFJF Q09SRF9NU0dTTkQJCTExCisjZGVmaW5lIFJFQ09SRF9NU0dSQ1YJCTEyCisj ZGVmaW5lIFJFQ09SRF9NU0dHRVQJCTEzCisjZGVmaW5lIFJFQ09SRF9NU0dD VEwJCTE0CisjZGVmaW5lIFJFQ09SRF9TSE1BVAkJMjEKKyNkZWZpbmUgUkVD T1JEX1NITURUCQkyMgorI2RlZmluZSBSRUNPUkRfU0hNR0VUCQkyMworI2Rl ZmluZSBSRUNPUkRfU0hNQ1RMCQkyNAorCisvKiBUaGVzZSBtYWNyb3MgYXJl IHRoZSB2YWx1ZXMgb2YgdGhlIGZpcnN0IGFyZ3VtZW50IG9mIHN5c3RlbSBj YWxsCisgICAic3lzX3F1b3RhY3RsIi4gVGhlIHZhbHVlcyBvZiB0aGVzZSBt YWNyb3MgYXJlIGdvdHRlbiBmcm9tIExpbnV4IEtlcm5lbAorICAgc291cmNl LiAgKi8KKworI2RlZmluZSBSRUNPUkRfUV9HRVRGTVQJCTB4ODAwMDA0Cisj ZGVmaW5lIFJFQ09SRF9RX0dFVElORk8JMHg4MDAwMDUKKyNkZWZpbmUgUkVD T1JEX1FfR0VUUVVPVEEJMHg4MDAwMDcKKyNkZWZpbmUgUkVDT1JEX1FfWEdF VFFTVEFUCSgoJzUnPDw4KSsoNSkpCisjZGVmaW5lIFJFQ09SRF9RX1hHRVRR VU9UQQkoKCczJzw8OCkrKDMpKQorCisvKiBSZWNvcmQgdGhlIHZhbHVlcyBv ZiB0aGUgcmVnaXN0ZXJzIGFuZCBtZW1vcnkgdGhhdCB3aWxsIGJlIGNoYW5n ZWQgaW4KKyAgIGN1cnJlbnQgc3lzdGVtIGNhbGwuCisgICBSZXR1cm4gLTEg aWYgc29tZXRoaW5nIHdyb25nLiAgKi8KKworaW50CityZWNvcmRfbGludXhf c3lzdGVtX2NhbGwgKGludCBudW0sIGxpbnV4X3JlY29yZF90ZGVwX3QgKiB0 ZGVwKQoreworICB1aW50MzJfdCB0bXB1MzI7CisKKyAgc3dpdGNoIChudW0p CisgICAgeworICAgICAgLyogc3lzX3Jlc3RhcnRfc3lzY2FsbCAqLworICAg IGNhc2UgMDoKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfZXhpdCAq LworICAgIGNhc2UgMToKKyAgICAgIHsKKwlpbnQgcTsKKwl0YXJnZXRfdGVy bWluYWxfb3VycyAoKTsKKwlxID0KKwkgIHlxdWVyeSAoXworCQkgICgiVGhl IG5leHQgaW5zdHJ1Y3Rpb24gaXMgc3lzY2FsbCBleGl0LiAgSXQgd2lsbCBt YWtlIHRoZSBwcm9ncmFtIGV4aXQuICBEbyB5b3Ugd2FudCB0byBzdG9wIHRo ZSBwcm9ncmFtLiIpKTsKKwl0YXJnZXRfdGVybWluYWxfaW5mZXJpb3IgKCk7 CisJaWYgKHEpCisJICB7CisJICAgIHJldHVybiAoMSk7CisJICB9CisgICAg ICB9CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX2ZvcmsgKi8KKyAg ICBjYXNlIDI6CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX3JlYWQg Ki8KKyAgICBjYXNlIDM6CisgICAgICB7CisJdWludDMyX3QgYWRkciwgY291 bnQ7CisJcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRl cC0+YXJnMiwgKGdkYl9ieXRlICopICYgYWRkcik7CisJcmVnY2FjaGVfcmF3 X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMywgKGdkYl9ieXRl ICopICYgY291bnQpOworCWlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0g KGFkZHIsIGNvdW50KSkKKwkgIHsKKwkgICAgcmV0dXJuICgtMSk7CisJICB9 CisgICAgICB9CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX3dyaXRl ICovCisgICAgY2FzZSA0OgorICAgICAgLyogc3lzX29wZW4gKi8KKyAgICBj YXNlIDU6CisgICAgICAvKiBzeXNfY2xvc2UgKi8KKyAgICBjYXNlIDY6Cisg ICAgICAvKiBzeXNfd2FpdHBpZCAqLworICAgIGNhc2UgNzoKKyAgICAgIC8q IHN5c19jcmVhdCAqLworICAgIGNhc2UgODoKKyAgICAgIC8qIHN5c19saW5r ICovCisgICAgY2FzZSA5OgorICAgICAgLyogc3lzX3VubGluayAqLworICAg IGNhc2UgMTA6CisgICAgICAvKiBzeXNfZXhlY3ZlICovCisgICAgY2FzZSAx MToKKyAgICAgIC8qIHN5c19jaGRpciAqLworICAgIGNhc2UgMTI6CisgICAg ICAvKiBzeXNfdGltZSAqLworICAgIGNhc2UgMTM6CisgICAgICAvKiBzeXNf bWtub2QgKi8KKyAgICBjYXNlIDE0OgorICAgICAgLyogc3lzX2NobW9kICov CisgICAgY2FzZSAxNToKKyAgICAgIC8qIHN5c19sY2hvd24xNiAqLworICAg IGNhc2UgMTY6CisgICAgICAvKiBzeXNfbmlfc3lzY2FsbCAqLworICAgIGNh c2UgMTc6CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX3N0YXQgKi8K KyAgICBjYXNlIDE4OgorICAgICAgLyogc3lzX2ZzdGF0ICovCisgICAgY2Fz ZSAyODoKKyAgICAgIC8qIHN5c19sc3RhdCAqLworICAgIGNhc2UgODQ6Cisg ICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVw LT5hcmcyLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJl Y29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX19v bGRfa2VybmVsX3N0YXQpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAg ICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfbHNlZWsgKi8KKyAgICBjYXNl IDE5OgorICAgICAgLyogc3lzX2dldHBpZCAqLworICAgIGNhc2UgMjA6Cisg ICAgICAvKiBzeXNfbW91bnQgKi8KKyAgICBjYXNlIDIxOgorICAgICAgLyog c3lzX29sZHVtb3VudCAqLworICAgIGNhc2UgMjI6CisgICAgICAvKiBzeXNf c2V0dWlkMTYgKi8KKyAgICBjYXNlIDIzOgorICAgICAgLyogc3lzX2dldHVp ZDE2ICovCisgICAgY2FzZSAyNDoKKyAgICAgIC8qIHN5c19zdGltZSAqLwor ICAgIGNhc2UgMjU6CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX3B0 cmFjZSAqLworICAgIGNhc2UgMjY6CisgICAgICByZWdjYWNoZV9yYXdfcmVh ZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcxLCAoZ2RiX2J5dGUgKikg JiB0bXB1MzIpOworICAgICAgaWYgKHRtcHUzMiA9PSBSRUNPUkRfUFRSQUNF X1BFRUtURVhUCisJICB8fCB0bXB1MzIgPT0gUkVDT1JEX1BUUkFDRV9QRUVL REFUQQorCSAgfHwgdG1wdTMyID09IFJFQ09SRF9QVFJBQ0VfUEVFS1VTUikK Kwl7CisJICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0 ZGVwLT5hcmc0LAorCQkJICAgICAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOwor CSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCA0KSkK KwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJfQorICAg ICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19hbGFybSAqLworICAgIGNhc2Ug Mjc6CisgICAgICAvKiBzeXNfcGF1c2UgKi8KKyAgICBjYXNlIDI5OgorICAg ICAgLyogc3lzX3V0aW1lICAgICovCisgICAgY2FzZSAzMDoKKyAgICAgIC8q IHN5c19uaV9zeXNjYWxsICovCisgICAgY2FzZSAzMToKKyAgICAgIC8qIHN5 c19uaV9zeXNjYWxsICovCisgICAgY2FzZSAzMjoKKyAgICAgIC8qIHN5c19h Y2Nlc3MgKi8KKyAgICBjYXNlIDMzOgorICAgICAgLyogc3lzX25pY2UgKi8K KyAgICBjYXNlIDM0OgorICAgICAgLyogc3lzX25pX3N5c2NhbGwgKi8KKyAg ICBjYXNlIDM1OgorICAgICAgLyogc3lzX3N5bmMgKi8KKyAgICBjYXNlIDM2 OgorICAgICAgLyogc3lzX2tpbGwgKi8KKyAgICBjYXNlIDM3OgorICAgICAg Lyogc3lzX3JlbmFtZSAqLworICAgIGNhc2UgMzg6CisgICAgICAvKiBzeXNf bWtkaXIgKi8KKyAgICBjYXNlIDM5OgorICAgICAgLyogc3lzX3JtZGlyICov CisgICAgY2FzZSA0MDoKKyAgICAgIC8qIHN5c19kdXAgKi8KKyAgICBjYXNl IDQxOgorICAgICAgLyogc3lzX3BpcGUgKi8KKyAgICBjYXNlIDQyOgorICAg ICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c190aW1lcyAqLworICAgIGNhc2Ug NDM6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hl LCB0ZGVwLT5hcmcxLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5z aXplX3RtcykpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJl YWs7CisKKyAgICAgIC8qIHN5c19uaV9zeXNjYWxsICovCisgICAgY2FzZSA0 NDoKKyAgICAgIC8qIHN5c19icmsgKi8KKyAgICBjYXNlIDQ1OgorICAgICAg Lyogc3lzX3NldGdpZDE2ICovCisgICAgY2FzZSA0NjoKKyAgICAgIC8qIHN5 c19nZXRnaWQxNiAqLworICAgIGNhc2UgNDc6CisgICAgICAvKiBzeXNfc2ln bmFsICovCisgICAgY2FzZSA0ODoKKyAgICAgIC8qIHN5c19nZXRldWlkMTYg Ki8KKyAgICBjYXNlIDQ5OgorICAgICAgLyogc3lzX2dldGVnaWQxNiAqLwor ICAgIGNhc2UgNTA6CisgICAgICAvKiBzeXNfYWNjdCAqLworICAgIGNhc2Ug NTE6CisgICAgICAvKiBzeXNfdW1vdW50ICovCisgICAgY2FzZSA1MjoKKyAg ICAgIC8qIHN5c19uaV9zeXNjYWxsICovCisgICAgY2FzZSA1MzoKKyAgICAg IGJyZWFrOworCisgICAgICAvKiBzeXNfaW9jdGwgKi8KKyAgICBjYXNlIDU0 OgorICAgICAgLyogWFhYIHRoZXJlIG5lZWQgYWRkIGEgbG90IG9mIHN1cHBv cnQgb2Ygb3RoZXIgaW9jdGwgcmVxdWVzdHMuICAqLworICAgICAgcmVnY2Fj aGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMiwgKGdk Yl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmICh0bXB1MzIgPT0gdGRl cC0+aW9jdGxfRklPQ0xFWCB8fCB0bXB1MzIgPT0gdGRlcC0+aW9jdGxfRklP TkNMRVgKKwkgIHx8IHRtcHUzMiA9PSB0ZGVwLT5pb2N0bF9GSU9OQklPIHx8 IHRtcHUzMiA9PSB0ZGVwLT5pb2N0bF9GSU9BU1lOQworCSAgfHwgdG1wdTMy ID09IHRkZXAtPmlvY3RsX1RDU0VUUyB8fCB0bXB1MzIgPT0gdGRlcC0+aW9j dGxfVENTRVRTVworCSAgfHwgdG1wdTMyID09IHRkZXAtPmlvY3RsX1RDU0VU U0YgfHwgdG1wdTMyID09IHRkZXAtPmlvY3RsX1RDU0VUQQorCSAgfHwgdG1w dTMyID09IHRkZXAtPmlvY3RsX1RDU0VUQVcgfHwgdG1wdTMyID09IHRkZXAt PmlvY3RsX1RDU0VUQUYKKwkgIHx8IHRtcHUzMiA9PSB0ZGVwLT5pb2N0bF9U Q1NCUksgfHwgdG1wdTMyID09IHRkZXAtPmlvY3RsX1RDWE9OQworCSAgfHwg dG1wdTMyID09IHRkZXAtPmlvY3RsX1RDRkxTSCB8fCB0bXB1MzIgPT0gdGRl cC0+aW9jdGxfVElPQ0VYQ0wKKwkgIHx8IHRtcHUzMiA9PSB0ZGVwLT5pb2N0 bF9USU9DTlhDTAorCSAgfHwgdG1wdTMyID09IHRkZXAtPmlvY3RsX1RJT0NT Q1RUWQorCSAgfHwgdG1wdTMyID09IHRkZXAtPmlvY3RsX1RJT0NTUEdSUCB8 fCB0bXB1MzIgPT0gdGRlcC0+aW9jdGxfVElPQ1NUSQorCSAgfHwgdG1wdTMy ID09IHRkZXAtPmlvY3RsX1RJT0NTV0lOU1oKKwkgIHx8IHRtcHUzMiA9PSB0 ZGVwLT5pb2N0bF9USU9DTUJJUyB8fCB0bXB1MzIgPT0gdGRlcC0+aW9jdGxf VElPQ01CSUMKKwkgIHx8IHRtcHUzMiA9PSB0ZGVwLT5pb2N0bF9USU9DTVNF VAorCSAgfHwgdG1wdTMyID09IHRkZXAtPmlvY3RsX1RJT0NTU09GVENBUgor CSAgfHwgdG1wdTMyID09IHRkZXAtPmlvY3RsX1RJT0NDT05TCisJICB8fCB0 bXB1MzIgPT0gdGRlcC0+aW9jdGxfVElPQ1NTRVJJQUwKKwkgIHx8IHRtcHUz MiA9PSB0ZGVwLT5pb2N0bF9USU9DUEtUIHx8IHRtcHUzMiA9PSB0ZGVwLT5p b2N0bF9USU9DTk9UVFkKKwkgIHx8IHRtcHUzMiA9PSB0ZGVwLT5pb2N0bF9U SU9DU0VURCB8fCB0bXB1MzIgPT0gdGRlcC0+aW9jdGxfVENTQlJLUAorCSAg fHwgdG1wdTMyID09IHRkZXAtPmlvY3RsX1RJT0NUVFlHU1RSVUNUCisJICB8 fCB0bXB1MzIgPT0gdGRlcC0+aW9jdGxfVElPQ1NCUksgfHwgdG1wdTMyID09 IHRkZXAtPmlvY3RsX1RJT0NDQlJLCisJICB8fCB0bXB1MzIgPT0gdGRlcC0+ aW9jdGxfVENTRVRTMiB8fCB0bXB1MzIgPT0gdGRlcC0+aW9jdGxfVENTRVRT VzIKKwkgIHx8IHRtcHUzMiA9PSB0ZGVwLT5pb2N0bF9UQ1NFVFNGMgorCSAg fHwgdG1wdTMyID09IHRkZXAtPmlvY3RsX1RJT0NTUFRMQ0sKKwkgIHx8IHRt cHUzMiA9PSB0ZGVwLT5pb2N0bF9USU9DU0VSQ09ORklHCisJICB8fCB0bXB1 MzIgPT0gdGRlcC0+aW9jdGxfVElPQ1NFUkdXSUxECisJICB8fCB0bXB1MzIg PT0gdGRlcC0+aW9jdGxfVElPQ1NFUlNXSUxECisJICB8fCB0bXB1MzIgPT0g dGRlcC0+aW9jdGxfVElPQ1NMQ0tUUk1JT1MKKwkgIHx8IHRtcHUzMiA9PSB0 ZGVwLT5pb2N0bF9USU9DU0VSR0VUTVVMVEkKKwkgIHx8IHRtcHUzMiA9PSB0 ZGVwLT5pb2N0bF9USU9DU0VSU0VUTVVMVEkKKwkgIHx8IHRtcHUzMiA9PSB0 ZGVwLT5pb2N0bF9USU9DTUlXQUlUCisJICB8fCB0bXB1MzIgPT0gdGRlcC0+ aW9jdGxfVElPQ1NIQVlFU0VTUCkKKwl7CisJICAvKiBOb3RoaW5nIHRvIGRv LiAgKi8KKwl9CisgICAgICBlbHNlIGlmICh0bXB1MzIgPT0gdGRlcC0+aW9j dGxfVENHRVRTIHx8IHRtcHUzMiA9PSB0ZGVwLT5pb2N0bF9UQ0dFVEEKKwkg ICAgICAgfHwgdG1wdTMyID09IHRkZXAtPmlvY3RsX1RJT0NHTENLVFJNSU9T KQorCXsKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUs IHRkZXAtPmFyZzMsCisJCQkgICAgIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7 CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRk ZXAtPnNpemVfdGVybWlvcykpCisJICAgIHsKKwkgICAgICByZXR1cm4gKC0x KTsKKwkgICAgfQorCX0KKyAgICAgIGVsc2UgaWYgKHRtcHUzMiA9PSB0ZGVw LT5pb2N0bF9USU9DR1BHUlAKKwkgICAgICAgfHwgdG1wdTMyID09IHRkZXAt PmlvY3RsX1RJT0NHU0lEKQorCXsKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChy ZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzMsCisJCQkgICAgIChnZGJfYnl0 ZSAqKSAmIHRtcHUzMik7CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRf bWVtICh0bXB1MzIsIHRkZXAtPnNpemVfcGlkX3QpKQorCSAgICB7CisJICAg ICAgcmV0dXJuICgtMSk7CisJICAgIH0KKwl9CisgICAgICBlbHNlIGlmICh0 bXB1MzIgPT0gdGRlcC0+aW9jdGxfVElPQ09VVFEKKwkgICAgICAgfHwgdG1w dTMyID09IHRkZXAtPmlvY3RsX1RJT0NNR0VUCisJICAgICAgIHx8IHRtcHUz MiA9PSB0ZGVwLT5pb2N0bF9USU9DR1NPRlRDQVIKKwkgICAgICAgfHwgdG1w dTMyID09IHRkZXAtPmlvY3RsX0ZJT05SRUFECisJICAgICAgIHx8IHRtcHUz MiA9PSB0ZGVwLT5pb2N0bF9USU9DSU5RCisJICAgICAgIHx8IHRtcHUzMiA9 PSB0ZGVwLT5pb2N0bF9USU9DR0VURAorCSAgICAgICB8fCB0bXB1MzIgPT0g dGRlcC0+aW9jdGxfVElPQ0dQVE4KKwkgICAgICAgfHwgdG1wdTMyID09IHRk ZXAtPmlvY3RsX1RJT0NTRVJHRVRMU1IpCisJeworCSAgcmVnY2FjaGVfcmF3 X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMywKKwkJCSAgICAg KGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwkgIGlmIChyZWNvcmRfYXJjaF9s aXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV9pbnQpKQorCSAgICB7 CisJICAgICAgcmV0dXJuICgtMSk7CisJICAgIH0KKwl9CisgICAgICBlbHNl IGlmICh0bXB1MzIgPT0gdGRlcC0+aW9jdGxfVElPQ0dXSU5TWikKKwl7CisJ ICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5h cmczLAorCQkJICAgICAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworCSAgaWYg KHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXpl X3dpbnNpemUpKQorCSAgICB7CisJICAgICAgcmV0dXJuICgtMSk7CisJICAg IH0KKwl9CisgICAgICBlbHNlIGlmICh0bXB1MzIgPT0gdGRlcC0+aW9jdGxf VElPQ0xJTlVYKQorCXsKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRf cmVnY2FjaGUsIHRkZXAtPmFyZzMsCisJCQkgICAgIChnZGJfYnl0ZSAqKSAm IHRtcHUzMik7CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0 bXB1MzIsIHRkZXAtPnNpemVfY2hhcikpCisJICAgIHsKKwkgICAgICByZXR1 cm4gKC0xKTsKKwkgICAgfQorCX0KKyAgICAgIGVsc2UgaWYgKHRtcHUzMiA9 PSB0ZGVwLT5pb2N0bF9USU9DR1NFUklBTCkKKwl7CisJICByZWdjYWNoZV9y YXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmczLAorCQkJICAg ICAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworCSAgaWYgKHJlY29yZF9hcmNo X2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX3NlcmlhbF9zdHJ1 Y3QpKQorCSAgICB7CisJICAgICAgcmV0dXJuICgtMSk7CisJICAgIH0KKwl9 CisgICAgICBlbHNlIGlmICh0bXB1MzIgPT0gdGRlcC0+aW9jdGxfVENHRVRT MikKKwl7CisJICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hl LCB0ZGVwLT5hcmczLAorCQkJICAgICAoZ2RiX2J5dGUgKikgJiB0bXB1MzIp OworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0 ZGVwLT5zaXplX3Rlcm1pb3MyKSkKKwkgICAgeworCSAgICAgIHJldHVybiAo LTEpOworCSAgICB9CisJfQorICAgICAgZWxzZSBpZiAodG1wdTMyID09IHRk ZXAtPmlvY3RsX0ZJT1FTSVpFKQorCXsKKwkgIHJlZ2NhY2hlX3Jhd19yZWFk IChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzMsCisJCQkgICAgIChnZGJf Ynl0ZSAqKSAmIHRtcHUzMik7CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfbG9mZl90KSkKKwkgICAgewor CSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJfQorICAgICAgZWxzZSBp ZiAodG1wdTMyID09IHRkZXAtPmlvY3RsX1RJT0NHSUNPVU5UKQorCXsKKwkg IHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFy ZzMsCisJCQkgICAgIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisJICBpZiAo cmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtCisJICAgICAgKHRtcHUzMiwgdGRl cC0+c2l6ZV9zZXJpYWxfaWNvdW50ZXJfc3RydWN0KSkKKwkgICAgeworCSAg ICAgIHJldHVybiAoLTEpOworCSAgICB9CisJfQorICAgICAgZWxzZSBpZiAo dG1wdTMyID09IHRkZXAtPmlvY3RsX1RJT0NHSEFZRVNFU1ApCisJeworCSAg cmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJn MywKKwkJCSAgICAgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwkgIGlmIChy ZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV9o YXllc19lc3BfY29uZmlnKSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEp OworCSAgICB9CisJfQorICAgICAgZWxzZSBpZiAodG1wdTMyID09IHRkZXAt PmlvY3RsX1RJT0NTRVJHU1RSVUNUKQorCXsKKwkgIHByaW50Zl91bmZpbHRl cmVkIChfCisJCQkgICAgICgiUmVjb3JkOiByZWNvcmQgYW5kIHJldmVyc2Ug dGFyZ2V0IGRvZXNuJ3Qgc3VwcG9ydCBpb2N0bCByZXF1ZXN0IFRJT0NTRVJH U1RSVUNUXG4iKSk7CisJICByZXR1cm4gKDEpOworCX0KKyAgICAgIGVsc2UK Kwl7CisJICBwcmludGZfdW5maWx0ZXJlZCAoXworCQkJICAgICAoIlJlY29y ZDogcmVjb3JkIGFuZCByZXZlcnNlIHRhcmdldCBkb2Vzbid0IHN1cHBvcnQg aW9jdGwgcmVxdWVzdCAweCUwOHguXG4iKSwKKwkJCSAgICAgdG1wdTMyKTsK KwkgIHJldHVybiAoMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8q IHN5c19mY250bCAqLworICAgIGNhc2UgNTU6CisgICAgICAvKiBYWFggKi8K KyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRk ZXAtPmFyZzIsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgc3lzX2Zj bnRsOgorICAgICAgaWYgKHRtcHUzMiA9PSBGX0dFVExLKQorCXsKKwkgIHJl Z2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzMs CisJCQkgICAgIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisJICBpZiAocmVj b3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfZmxv Y2spKQorCSAgICB7CisJICAgICAgcmV0dXJuICgtMSk7CisJICAgIH0KKwl9 CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX25pX3N5c2NhbGwgKi8K KyAgICBjYXNlIDU2OgorICAgICAgLyogc3lzX3NldHBnaWQgKi8KKyAgICBj YXNlIDU3OgorICAgICAgLyogc3lzX25pX3N5c2NhbGwgKi8KKyAgICBjYXNl IDU4OgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19vbGR1bmFtZSAq LworICAgIGNhc2UgNTk6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVj b3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcxLCAoZ2RiX2J5dGUgKikgJiB0bXB1 MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1w dTMyLCB0ZGVwLT5zaXplX29sZG9sZF91dHNuYW1lKSkKKwl7CisJICByZXR1 cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX3Vt YXNrICovCisgICAgY2FzZSA2MDoKKyAgICAgIC8qIHN5c19jaHJvb3QgKi8K KyAgICBjYXNlIDYxOgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c191 c3RhdCAqLworICAgIGNhc2UgNjI6CisgICAgICByZWdjYWNoZV9yYXdfcmVh ZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLCAoZ2RiX2J5dGUgKikg JiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21l bSAodG1wdTMyLCB0ZGVwLT5zaXplX3VzdGF0KSkKKwl7CisJICByZXR1cm4g KC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX2R1cDIg Ki8KKyAgICBjYXNlIDYzOgorICAgICAgLyogc3lzX2dldHBwaWQgKi8KKyAg ICBjYXNlIDY0OgorICAgICAgLyogc3lzX2dldHBncnAgKi8KKyAgICBjYXNl IDY1OgorICAgICAgLyogc3lzX3NldHNpZCAqLworICAgIGNhc2UgNjY6Cisg ICAgICBicmVhazsKKworICAgICAgLyogc3lzX3NpZ2FjdGlvbiAqLworICAg IGNhc2UgNjc6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3Jl Z2NhY2hlLCB0ZGVwLT5hcmczLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOwor ICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0 ZGVwLT5zaXplX29sZF9zaWdhY3Rpb24pKQorCXsKKwkgIHJldHVybiAoLTEp OworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfc2dldG1hc2sg Ki8KKyAgICBjYXNlIDY4OgorICAgICAgLyogc3lzX3NzZXRtYXNrICovCisg ICAgY2FzZSA2OToKKyAgICAgIC8qIHN5c19zZXRyZXVpZDE2ICovCisgICAg Y2FzZSA3MDoKKyAgICAgIC8qIHN5c19zZXRyZWdpZDE2ICovCisgICAgY2Fz ZSA3MToKKyAgICAgIC8qIHN5c19zaWdzdXNwZW5kICovCisgICAgY2FzZSA3 MjoKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfc2lncGVuZGluZyAq LworICAgIGNhc2UgNzM6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVj b3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcxLCAoZ2RiX2J5dGUgKikgJiB0bXB1 MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1w dTMyLCB0ZGVwLT5zaXplX29sZF9zaWdzZXRfdCkpCisJeworCSAgcmV0dXJu ICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19zZXRo b3N0bmFtZSAqLworICAgIGNhc2UgNzQ6CisgICAgICAvKiBzeXNfc2V0cmxp bWl0ICovCisgICAgY2FzZSA3NToKKyAgICAgIGJyZWFrOworCisgICAgICAv KiBzeXNfb2xkX2dldHJsaW1pdCAqLworICAgIGNhc2UgNzY6CisgICAgICBy ZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcy LCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9h cmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX3JsaW1pdCkp CisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAg ICAgIC8qIHN5c19nZXRydXNhZ2UgKi8KKyAgICBjYXNlIDc3OgorICAgICAg cmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJn MiwgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRf YXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV9ydXNhZ2Up KQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisg ICAgICAvKiBzeXNfZ2V0dGltZW9mZGF5ICovCisgICAgY2FzZSA3ODoKKyAg ICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAt PmFyZzEsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVj b3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfdGlt ZXZhbCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgcmVnY2Fj aGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMiwgKGdk Yl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9s aXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV90aW1lem9uZSkpCisJ eworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAg IC8qIHN5c19zZXR0aW1lb2ZkYXkgKi8KKyAgICBjYXNlIDc5OgorICAgICAg YnJlYWs7CisKKyAgICAgIC8qIHN5c19nZXRncm91cHMxNiAqLworICAgIGNh c2UgODA6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2Nh Y2hlLCB0ZGVwLT5hcmcyLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAg ICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVw LT5zaXplX29sZF9naWRfdCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQor ICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19zZXRncm91cHMxNiAqLwor ICAgIGNhc2UgODE6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3Jk X3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIp OworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMy LCB0ZGVwLT5zaXplX29sZF9naWRfdCkpCisJeworCSAgcmV0dXJuICgtMSk7 CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIG9sZF9zZWxlY3QgKi8K KyAgICBjYXNlIDgyOgorICAgICAgeworCS8qCisJICAgc3RydWN0IHNlbF9h cmdfc3RydWN0IHsKKwkgICB1bnNpZ25lZCBsb25nIG47CisJICAgZmRfc2V0 ICppbnA7CisJICAgZmRfc2V0ICpvdXRwOworCSAgIGZkX3NldCAqZXhwOwor CSAgIHN0cnVjdCB0aW1ldmFsICp0dnA7CisJICAgfTsKKwkgKi8KKwlzdHJ1 Y3Qgc2VsX2FyZ19zdHJ1Y3QKKwl7CisJICB1aW50MzJfdCBuOworCSAgdWlu dDMyX3QgaW5wOworCSAgdWludDMyX3Qgb3V0cDsKKwkgIHVpbnQzMl90IGV4 cDsKKwkgIHVpbnQzMl90IHR2cDsKKwl9IHNlbDsKKworCXJlZ2NhY2hlX3Jh d19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzEsCisJCQkgICAo Z2RiX2J5dGUgKikgJiB0bXB1MzIpOworCWlmICh0bXB1MzIpCisJICB7CisJ ICAgIGlmICh0YXJnZXRfcmVhZF9tZW1vcnkgKHRtcHUzMiwgKGdkYl9ieXRl ICopICYgc2VsLCBzaXplb2YgKHNlbCkpKQorCSAgICAgIHsKKwkJZnByaW50 Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorCQkJCSAgICAiUmVjb3JkOiBy ZWFkIG1lbW9yeSBhZGRyID0gMHglcyBsZW4gPSAlZCBlcnJvci5cbiIsCisJ CQkJICAgIHBhZGRyX256ICh0bXB1MzIpLCBzaXplb2YgKHNlbCkpOworCQly ZXR1cm4gKC0xKTsKKwkgICAgICB9CisJICAgIGlmIChyZWNvcmRfYXJjaF9s aXN0X2FkZF9tZW0gKHNlbC5pbnAsIHRkZXAtPnNpemVfZmRfc2V0KSkKKwkg ICAgICB7CisJCXJldHVybiAoLTEpOworCSAgICAgIH0KKwkgICAgaWYgKHJl Y29yZF9hcmNoX2xpc3RfYWRkX21lbSAoc2VsLm91dHAsIHRkZXAtPnNpemVf ZmRfc2V0KSkKKwkgICAgICB7CisJCXJldHVybiAoLTEpOworCSAgICAgIH0K KwkgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAoc2VsLmV4cCwg dGRlcC0+c2l6ZV9mZF9zZXQpKQorCSAgICAgIHsKKwkJcmV0dXJuICgtMSk7 CisJICAgICAgfQorCSAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVt IChzZWwudHZwLCB0ZGVwLT5zaXplX3RpbWV2YWwpKQorCSAgICAgIHsKKwkJ cmV0dXJuICgtMSk7CisJICAgICAgfQorCSAgfQorICAgICAgfQorICAgICAg YnJlYWs7CisKKyAgICAgIC8qIHN5c19zeW1saW5rICovCisgICAgY2FzZSA4 MzoKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfcmVhZGxpbmsgKi8K KyAgICBjYXNlIDg1OgorICAgICAgeworCXVpbnQzMl90IGxlbjsKKwlyZWdj YWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLAor CQkJICAgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwlyZWdjYWNoZV9yYXdf cmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmczLCAoZ2RiX2J5dGUg KikgJiBsZW4pOworCWlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRt cHUzMiwgbGVuKSkKKwkgIHsKKwkgICAgcmV0dXJuICgtMSk7CisJICB9Cisg ICAgICB9CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX3VzZWxpYiAq LworICAgIGNhc2UgODY6CisgICAgICAvKiBzeXNfc3dhcG9uICovCisgICAg Y2FzZSA4NzoKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfcmVib290 ICovCisgICAgY2FzZSA4ODoKKyAgICAgIHsKKwlpbnQgcTsKKwl0YXJnZXRf dGVybWluYWxfb3VycyAoKTsKKwlxID0KKwkgIHlxdWVyeSAoXworCQkgICgi VGhlIG5leHQgaW5zdHJ1Y3Rpb24gaXMgc3lzY2FsbCByZWJvb3QuICBJdCB3 aWxsIHJlc3RhcnQgdGhlIGNvbXB1dGVyLiAgRG8geW91IHdhbnQgdG8gc3Rv cCB0aGUgcHJvZ3JhbS4iKSk7CisJdGFyZ2V0X3Rlcm1pbmFsX2luZmVyaW9y ICgpOworCWlmIChxKQorCSAgeworCSAgICByZXR1cm4gKDEpOworCSAgfQor ICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIG9sZF9yZWFkZGly ICovCisgICAgY2FzZSA4OToKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChy ZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzIsIChnZGJfYnl0ZSAqKSAmIHRt cHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0 bXB1MzIsIHRkZXAtPnNpemVfZGlyZW50KSkKKwl7CisJICByZXR1cm4gKC0x KTsKKwl9CisgICAgICBicmVhazsKKworICAgICAgLyogb2xkX21tYXAgKi8K KyAgICBjYXNlIDkwOgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19t dW5tYXAgKi8KKyAgICBjYXNlIDkxOgorICAgICAgeworCWludCBxOworCXVp bnQzMl90IGxlbjsKKworCXJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVn Y2FjaGUsIHRkZXAtPmFyZzEsCisJCQkgICAoZ2RiX2J5dGUgKikgJiB0bXB1 MzIpOworCXJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRk ZXAtPmFyZzIsIChnZGJfYnl0ZSAqKSAmIGxlbik7CisJdGFyZ2V0X3Rlcm1p bmFsX291cnMgKCk7CisJcSA9CisJICB5cXVlcnkgKF8KKwkJICAoIlRoZSBu ZXh0IGluc3RydWN0aW9uIGlzIHN5c2NhbGwgbXVubWFwLiAgSXQgd2lsbCBm cmVlIHRoZSBtZW1vcnkgYWRkciA9IDB4JXMgbGVuID0gJWQuICBJdCB3aWxs IG1ha2UgcmVjb3JkIHRhcmdldCBnZXQgZXJyb3IuICBEbyB5b3Ugd2FudCB0 byBzdG9wIHRoZSBwcm9ncmFtLiIpLAorCQkgIHBhZGRyX256ICh0bXB1MzIp LCBsZW4pOworCXRhcmdldF90ZXJtaW5hbF9pbmZlcmlvciAoKTsKKwlpZiAo cSkKKwkgIHsKKwkgICAgcmV0dXJuICgxKTsKKwkgIH0KKyAgICAgIH0KKyAg ICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfdHJ1bmNhdGUgKi8KKyAgICBj YXNlIDkyOgorICAgICAgLyogc3lzX2Z0cnVuY2F0ZSAqLworICAgIGNhc2Ug OTM6CisgICAgICAvKiBzeXNfZmNobW9kICovCisgICAgY2FzZSA5NDoKKyAg ICAgIC8qIHN5c19mY2hvd24xNiAqLworICAgIGNhc2UgOTU6CisgICAgICAv KiBzeXNfZ2V0cHJpb3JpdHkgKi8KKyAgICBjYXNlIDk2OgorICAgICAgLyog c3lzX3NldHByaW9yaXR5ICovCisgICAgY2FzZSA5NzoKKyAgICAgIC8qIHN5 c19uaV9zeXNjYWxsICovCisgICAgY2FzZSA5ODoKKyAgICAgIGJyZWFrOwor CisgICAgICAvKiBzeXNfc3RhdGZzICovCisgICAgY2FzZSA5OToKKyAgICAg IC8qIHN5c19mc3RhdGZzICovCisgICAgY2FzZSAxMDA6CisgICAgICByZWdj YWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLCAo Z2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNo X2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX3N0YXRmcykpCisJ eworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAg IC8qIHN5c19pb3Blcm0gKi8KKyAgICBjYXNlIDEwMToKKyAgICAgIGJyZWFr OworCisgICAgICAvKiBzeXNfc29ja2V0Y2FsbCAqLworICAgIGNhc2UgMTAy OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwg dGRlcC0+YXJnMSwgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIHN3 aXRjaCAodG1wdTMyKQorCXsKKwljYXNlIFJFQ09SRF9TWVNfU09DS0VUOgor CWNhc2UgUkVDT1JEX1NZU19CSU5EOgorCWNhc2UgUkVDT1JEX1NZU19DT05O RUNUOgorCWNhc2UgUkVDT1JEX1NZU19MSVNURU46CisJICBicmVhazsKKwlj YXNlIFJFQ09SRF9TWVNfQUNDRVBUOgorCWNhc2UgUkVDT1JEX1NZU19HRVRT T0NLTkFNRToKKwljYXNlIFJFQ09SRF9TWVNfR0VUUEVFUk5BTUU6CisJICB7 CisJICAgIHVpbnQzMl90IGFbM107CisJICAgIHJlZ2NhY2hlX3Jhd19yZWFk IChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzIsCisJCQkgICAgICAgKGdk Yl9ieXRlICopICYgdG1wdTMyKTsKKwkgICAgaWYgKHRtcHUzMikKKwkgICAg ICB7CisJCWlmICh0YXJnZXRfcmVhZF9tZW1vcnkgKHRtcHUzMiwgKGdkYl9i eXRlICopIGEsIHNpemVvZiAoYSkpKQorCQkgIHsKKwkJICAgIGZwcmludGZf dW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKwkJCQkJIlJlY29yZDogcmVhZCBt ZW1vcnkgYWRkciA9IDB4JXMgbGVuID0gJWQgZXJyb3IuXG4iLAorCQkJCQlw YWRkcl9ueiAodG1wdTMyKSwgc2l6ZW9mIChhKSk7CisJCSAgICByZXR1cm4g KC0xKTsKKwkJICB9CisJCWlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0g KGFbMV0sIHRkZXAtPnNpemVfc29ja2FkZHIpKQorCQkgIHsKKwkJICAgIHJl dHVybiAoLTEpOworCQkgIH0KKwkJaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRk X21lbSAoYVsyXSwgdGRlcC0+c2l6ZV9pbnQpKQorCQkgIHsKKwkJICAgIHJl dHVybiAoLTEpOworCQkgIH0KKwkgICAgICB9CisJICB9CisJICBicmVhazsK KworCWNhc2UgUkVDT1JEX1NZU19TT0NLRVRQQUlSOgorCSAgeworCSAgICB1 aW50MzJfdCBhWzRdOworCSAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3Jk X3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLAorCQkJICAgICAgIChnZGJfYnl0ZSAq KSAmIHRtcHUzMik7CisJICAgIGlmICh0bXB1MzIpCisJICAgICAgeworCQlp ZiAodGFyZ2V0X3JlYWRfbWVtb3J5ICh0bXB1MzIsIChnZGJfYnl0ZSAqKSBh LCBzaXplb2YgKGEpKSkKKwkJICB7CisJCSAgICBmcHJpbnRmX3VuZmlsdGVy ZWQgKGdkYl9zdGRsb2csCisJCQkJCSJSZWNvcmQ6IHJlYWQgbWVtb3J5IGFk ZHIgPSAweCVzIGxlbiA9ICVkIGVycm9yLlxuIiwKKwkJCQkJcGFkZHJfbnog KHRtcHUzMiksIHNpemVvZiAoYSkpOworCQkgICAgcmV0dXJuICgtMSk7CisJ CSAgfQorCQlpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtIChhWzNdLCB0 ZGVwLT5zaXplX2ludCkpCisJCSAgeworCQkgICAgcmV0dXJuICgtMSk7CisJ CSAgfQorCSAgICAgIH0KKwkgIH0KKwkgIGJyZWFrOworCWNhc2UgUkVDT1JE X1NZU19TRU5EOgorCWNhc2UgUkVDT1JEX1NZU19TRU5EVE86CisJICBicmVh azsKKwljYXNlIFJFQ09SRF9TWVNfUkVDVjoKKwkgIHsKKwkgICAgdWludDMy X3QgYVszXTsKKwkgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdj YWNoZSwgdGRlcC0+YXJnMiwKKwkJCSAgICAgICAoZ2RiX2J5dGUgKikgJiB0 bXB1MzIpOworCSAgICBpZiAodG1wdTMyKQorCSAgICAgIHsKKwkJaWYgKHRh cmdldF9yZWFkX21lbW9yeSAodG1wdTMyLCAoZ2RiX2J5dGUgKikgYSwgc2l6 ZW9mIChhKSkpCisJCSAgeworCQkgICAgZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3RkbG9nLAorCQkJCQkiUmVjb3JkOiByZWFkIG1lbW9yeSBhZGRyID0g MHglcyBsZW4gPSAlZCBlcnJvci5cbiIsCisJCQkJCXBhZGRyX256ICh0bXB1 MzIpLCBzaXplb2YgKGEpKTsKKwkJICAgIHJldHVybiAoLTEpOworCQkgIH0K KwkJaWYgKGFbMl0pCisJCSAgeworCQkgICAgaWYgKHRhcmdldF9yZWFkX21l bW9yeQorCQkJKGFbMl0sIChnZGJfYnl0ZSAqKSAmIChhWzJdKSwgc2l6ZW9m IChhWzJdKSkpCisJCSAgICAgIHsKKwkJCWZwcmludGZfdW5maWx0ZXJlZCAo Z2RiX3N0ZGxvZywKKwkJCQkJICAgICJSZWNvcmQ6IHJlYWQgbWVtb3J5IGFk ZHIgPSAweCVzIGxlbiA9ICVkIGVycm9yLlxuIiwKKwkJCQkJICAgIHBhZGRy X256IChhWzJdKSwgc2l6ZW9mIChhWzJdKSk7CisJCQlyZXR1cm4gKC0xKTsK KwkJICAgICAgfQorCQkgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21l bSAoYVsxXSwgYVsyXSkpCisJCSAgICAgIHsKKwkJCXJldHVybiAoLTEpOwor CQkgICAgICB9CisJCSAgfQorCSAgICAgIH0KKwkgIH0KKwkgIGJyZWFrOwor CWNhc2UgUkVDT1JEX1NZU19SRUNWRlJPTToKKwkgIHsKKwkgICAgdWludDMy X3QgYVs2XTsKKwkgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdj YWNoZSwgdGRlcC0+YXJnMiwKKwkJCSAgICAgICAoZ2RiX2J5dGUgKikgJiB0 bXB1MzIpOworCSAgICBpZiAodG1wdTMyKQorCSAgICAgIHsKKwkJaWYgKHRh cmdldF9yZWFkX21lbW9yeSAodG1wdTMyLCAoZ2RiX2J5dGUgKikgYSwgc2l6 ZW9mIChhKSkpCisJCSAgeworCQkgICAgZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3RkbG9nLAorCQkJCQkiUmVjb3JkOiByZWFkIG1lbW9yeSBhZGRyID0g MHglcyBsZW4gPSAlZCBlcnJvci5cbiIsCisJCQkJCXBhZGRyX256ICh0bXB1 MzIpLCBzaXplb2YgKGEpKTsKKwkJICAgIHJldHVybiAoLTEpOworCQkgIH0K KwkJaWYgKGFbMl0pCisJCSAgeworCQkgICAgaWYgKHRhcmdldF9yZWFkX21l bW9yeQorCQkJKGFbMl0sIChnZGJfYnl0ZSAqKSAmIChhWzJdKSwgc2l6ZW9m IChhWzJdKSkpCisJCSAgICAgIHsKKwkJCWZwcmludGZfdW5maWx0ZXJlZCAo Z2RiX3N0ZGxvZywKKwkJCQkJICAgICJSZWNvcmQ6IHJlYWQgbWVtb3J5IGFk ZHIgPSAweCVzIGxlbiA9ICVkIGVycm9yLlxuIiwKKwkJCQkJICAgIHBhZGRy X256IChhWzJdKSwgc2l6ZW9mIChhWzJdKSk7CisJCQlyZXR1cm4gKC0xKTsK KwkJICAgICAgfQorCQkgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21l bSAoYVsxXSwgYVsyXSkpCisJCSAgICAgIHsKKwkJCXJldHVybiAoLTEpOwor CQkgICAgICB9CisJCSAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVt IChhWzRdLCB0ZGVwLT5zaXplX3NvY2thZGRyKSkKKwkJICAgICAgeworCQkJ cmV0dXJuICgtMSk7CisJCSAgICAgIH0KKwkJICAgIGlmIChyZWNvcmRfYXJj aF9saXN0X2FkZF9tZW0gKGFbNV0sIHRkZXAtPnNpemVfaW50KSkKKwkJICAg ICAgeworCQkJcmV0dXJuICgtMSk7CisJCSAgICAgIH0KKwkJICB9CisJICAg ICAgfQorCSAgfQorCSAgYnJlYWs7CisJY2FzZSBSRUNPUkRfU1lTX1NIVVRE T1dOOgorCWNhc2UgUkVDT1JEX1NZU19TRVRTT0NLT1BUOgorCSAgYnJlYWs7 CisJY2FzZSBSRUNPUkRfU1lTX0dFVFNPQ0tPUFQ6CisJICB7CisJICAgIHVp bnQzMl90IGFbNV07CisJICAgIHVpbnQzMl90IGF2OworCisJICAgIHJlZ2Nh Y2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzIsCisJ CQkgICAgICAgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwkgICAgaWYgKHRt cHUzMikKKwkgICAgICB7CisJCWlmICh0YXJnZXRfcmVhZF9tZW1vcnkgKHRt cHUzMiwgKGdkYl9ieXRlICopIGEsIHNpemVvZiAoYSkpKQorCQkgIHsKKwkJ ICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKwkJCQkJIlJl Y29yZDogcmVhZCBtZW1vcnkgYWRkciA9IDB4JXMgbGVuID0gJWQgZXJyb3Iu XG4iLAorCQkJCQlwYWRkcl9ueiAodG1wdTMyKSwgc2l6ZW9mIChhKSk7CisJ CSAgICByZXR1cm4gKC0xKTsKKwkJICB9CisJCWlmIChhWzRdKQorCQkgIHsK KwkJICAgIGlmICh0YXJnZXRfcmVhZF9tZW1vcnkKKwkJCShhWzRdLCAoZ2Ri X2J5dGUgKikgJiBhdiwgc2l6ZW9mIChhdikpKQorCQkgICAgICB7CisJCQlm cHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisJCQkJCSAgICAiUmVj b3JkOiByZWFkIG1lbW9yeSBhZGRyID0gMHglcyBsZW4gPSAlZCBlcnJvci5c biIsCisJCQkJCSAgICBwYWRkcl9ueiAoYVs0XSksIHNpemVvZiAoYXYpKTsK KwkJCXJldHVybiAoLTEpOworCQkgICAgICB9CisJCSAgICBpZiAocmVjb3Jk X2FyY2hfbGlzdF9hZGRfbWVtIChhWzNdLCBhdikpCisJCSAgICAgIHsKKwkJ CXJldHVybiAoLTEpOworCQkgICAgICB9CisJCSAgICBpZiAocmVjb3JkX2Fy Y2hfbGlzdF9hZGRfbWVtIChhWzRdLCB0ZGVwLT5zaXplX2ludCkpCisJCSAg ICAgIHsKKwkJCXJldHVybiAoLTEpOworCQkgICAgICB9CisJCSAgfQorCSAg ICAgIH0KKwkgIH0KKwkgIGJyZWFrOworCWNhc2UgUkVDT1JEX1NZU19TRU5E TVNHOgorCSAgYnJlYWs7CisJY2FzZSBSRUNPUkRfU1lTX1JFQ1ZNU0c6CisJ ICB7CisJICAgIHVpbnQzMl90IGFbMl0sIGk7CisJICAgIHN0cnVjdCByZWNv cmRfbXNnaGRyCisJICAgIHsKKwkgICAgICB1aW50MzJfdCBtc2dfbmFtZTsK KwkgICAgICB1aW50MzJfdCBtc2dfbmFtZWxlbjsKKwkgICAgICB1aW50MzJf dCBtc2dfaW92OworCSAgICAgIHVpbnQzMl90IG1zZ19pb3ZsZW47CisJICAg ICAgdWludDMyX3QgbXNnX2NvbnRyb2w7CisJICAgICAgdWludDMyX3QgbXNn X2NvbnRyb2xsZW47CisJICAgICAgdWludDMyX3QgbXNnX2ZsYWdzOworCSAg ICB9IHJlYzsKKwkgICAgc3RydWN0IHJlY29yZF9pb3ZlYworCSAgICB7CisJ ICAgICAgdWludDMyX3QgaW92X2Jhc2U7CisJICAgICAgdWludDMyX3QgaW92 X2xlbjsKKwkgICAgfSBpb3Y7CisKKwkgICAgcmVnY2FjaGVfcmF3X3JlYWQg KHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMiwKKwkJCSAgICAgICAoZ2Ri X2J5dGUgKikgJiB0bXB1MzIpOworCSAgICBpZiAodG1wdTMyKQorCSAgICAg IHsKKwkJaWYgKHRhcmdldF9yZWFkX21lbW9yeSAodG1wdTMyLCAoZ2RiX2J5 dGUgKikgYSwgc2l6ZW9mIChhKSkpCisJCSAgeworCQkgICAgZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorCQkJCQkiUmVjb3JkOiByZWFkIG1l bW9yeSBhZGRyID0gMHglcyBsZW4gPSAlZCBlcnJvci5cbiIsCisJCQkJCXBh ZGRyX256ICh0bXB1MzIpLCBzaXplb2YgKGEpKTsKKwkJICAgIHJldHVybiAo LTEpOworCQkgIH0KKwkJaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAo YVsxXSwgdGRlcC0+c2l6ZV9tc2doZHIpKQorCQkgIHsKKwkJICAgIHJldHVy biAoLTEpOworCQkgIH0KKwkJaWYgKGFbMV0pCisJCSAgeworCQkgICAgaWYg KHRhcmdldF9yZWFkX21lbW9yeQorCQkJKGFbMV0sIChnZGJfYnl0ZSAqKSAm IHJlYywgc2l6ZW9mIChyZWMpKSkKKwkJICAgICAgeworCQkJZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorCQkJCQkgICAgIlJlY29yZDogcmVh ZCBtZW1vcnkgYWRkciA9IDB4JXMgbGVuID0gJWQgZXJyb3IuXG4iLAorCQkJ CQkgICAgcGFkZHJfbnogKGFbMV0pLCBzaXplb2YgKHJlYykpOworCQkJcmV0 dXJuICgtMSk7CisJCSAgICAgIH0KKwkJICAgIGlmIChyZWNvcmRfYXJjaF9s aXN0X2FkZF9tZW0KKwkJCShyZWMubXNnX25hbWUsIHJlYy5tc2dfbmFtZWxl bikpCisJCSAgICAgIHsKKwkJCXJldHVybiAoLTEpOworCQkgICAgICB9CisJ CSAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtCisJCQkocmVjLm1z Z19jb250cm9sLCByZWMubXNnX2NvbnRyb2xsZW4pKQorCQkgICAgICB7CisJ CQlyZXR1cm4gKC0xKTsKKwkJICAgICAgfQorCQkgICAgaWYgKHJlYy5tc2df aW92KQorCQkgICAgICB7CisJCQlmb3IgKGkgPSAwOyBpIDwgcmVjLm1zZ19p b3ZsZW47IGkrKykKKwkJCSAgeworCQkJICAgIGlmICh0YXJnZXRfcmVhZF9t ZW1vcnkKKwkJCQkocmVjLm1zZ19pb3YsIChnZGJfYnl0ZSAqKSAmIGlvdiwK KwkJCQkgc2l6ZW9mIChpb3YpKSkKKwkJCSAgICAgIHsKKwkJCQlmcHJpbnRm X3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisJCQkJCQkgICAgIlJlY29yZDog cmVhZCBtZW1vcnkgYWRkciA9IDB4JXMgbGVuID0gJWQgZXJyb3IuXG4iLAor CQkJCQkJICAgIHBhZGRyX256IChyZWMubXNnX2lvdiksCisJCQkJCQkgICAg c2l6ZW9mIChpb3YpKTsKKwkJCQlyZXR1cm4gKC0xKTsKKwkJCSAgICAgIH0K KwkJCSAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtCisJCQkJKGlv di5pb3ZfYmFzZSwgaW92Lmlvdl9sZW4pKQorCQkJICAgICAgeworCQkJCXJl dHVybiAoLTEpOworCQkJICAgICAgfQorCQkJICAgIHJlYy5tc2dfaW92ICs9 IHNpemVvZiAoc3RydWN0IHJlY29yZF9pb3ZlYyk7CisJCQkgIH0KKwkJICAg ICAgfQorCQkgIH0KKwkgICAgICB9CisJICB9CisJICBicmVhazsKKwlkZWZh dWx0OgorCSAgcHJpbnRmX3VuZmlsdGVyZWQgKF8KKwkJCSAgICAgKCJSZWNv cmQ6IHJlY29yZCBhbmQgcmV2ZXJzZSBmdW5jdGlvbiBkb2Vzbid0IHN1cHBv cnQgc29ja2V0Y2FsbCBjYWxsIDB4JTA4eFxuIiksCisJCQkgICAgIHRtcHUz Mik7CisJICByZXR1cm4gKC0xKTsKKwkgIGJyZWFrOworCX0KKyAgICAgIGJy ZWFrOworCisgICAgICAvKiBzeXNfc3lzbG9nICovCisgICAgY2FzZSAxMDM6 CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX3NldGl0aW1lciAqLwor ICAgIGNhc2UgMTA0OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29y ZF9yZWdjYWNoZSwgdGRlcC0+YXJnMywgKGdkYl9ieXRlICopICYgdG1wdTMy KTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUz MiwgdGRlcC0+c2l6ZV9pdGltZXJ2YWwpKQorCXsKKwkgIHJldHVybiAoLTEp OworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfZ2V0aXRpbWVy ICovCisgICAgY2FzZSAxMDU6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAo cmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLCAoZ2RiX2J5dGUgKikgJiB0 bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAo dG1wdTMyLCB0ZGVwLT5zaXplX2l0aW1lcnZhbCkpCisJeworCSAgcmV0dXJu ICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19uZXdz dGF0ICovCisgICAgY2FzZSAxMDY6CisgICAgICAvKiBzeXNfbmV3bHN0YXQg Ki8KKyAgICBjYXNlIDEwNzoKKyAgICAgIC8qIHN5c19uZXdmc3RhdCAqLwor ICAgIGNhc2UgMTA4OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29y ZF9yZWdjYWNoZSwgdGRlcC0+YXJnMiwgKGdkYl9ieXRlICopICYgdG1wdTMy KTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUz MiwgdGRlcC0+c2l6ZV9zdGF0KSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9 CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX3VuYW1lICovCisgICAg Y2FzZSAxMDk6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3Jl Z2NhY2hlLCB0ZGVwLT5hcmcxLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOwor ICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0 ZGVwLT5zaXplX29sZF91dHNuYW1lKSkKKwl7CisJICByZXR1cm4gKC0xKTsK Kwl9CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX2lvcGwgKi8KKyAg ICBjYXNlIDExMDoKKyAgICAgIC8qIHN5c192aGFuZ3VwICovCisgICAgY2Fz ZSAxMTE6CisgICAgICAvKiBzeXNfbmlfc3lzY2FsbCAqLworICAgIGNhc2Ug MTEyOgorICAgICAgLyogc3lzX3ZtODZvbGQgKi8KKyAgICBjYXNlIDExMzoK KyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfd2FpdDQgKi8KKyAgICBj YXNlIDExNDoKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVn Y2FjaGUsIHRkZXAtPmFyZzIsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7Cisg ICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRk ZXAtPnNpemVfaW50KSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAg ICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5h cmc0LCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29y ZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX3J1c2Fn ZSkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisK KyAgICAgIC8qIHN5c19zd2Fwb2ZmICovCisgICAgY2FzZSAxMTU6CisgICAg ICBicmVhazsKKworICAgICAgLyogc3lzX3N5c2luZm8gKi8KKyAgICBjYXNl IDExNjoKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2Fj aGUsIHRkZXAtPmFyZzEsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAg ICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAt PnNpemVfc3lzaW5mbykpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAg ICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19pcGMgKi8KKyAgICBjYXNlIDEx NzoKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUs IHRkZXAtPmFyZzEsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBz d2l0Y2ggKHRtcHUzMikKKwl7CisJY2FzZSBSRUNPUkRfTVNHUkNWOgorCSAg eworCSAgICBpbnQzMl90IHNlY29uZDsKKwkgICAgdWludDMyX3QgcHRyOwor CSAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVw LT5hcmczLAorCQkJICAgICAgIChnZGJfYnl0ZSAqKSAmIHNlY29uZCk7CisJ ICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAt PmFyZzUsCisJCQkgICAgICAgKGdkYl9ieXRlICopICYgcHRyKTsKKwkgICAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAocHRyLCBzZWNvbmQgKyB0 ZGVwLT5zaXplX2xvbmcpKQorCSAgICAgIHsKKwkJcmV0dXJuICgtMSk7CisJ ICAgICAgfQorCSAgfQorCSAgYnJlYWs7CisJY2FzZSBSRUNPUkRfTVNHQ1RM OgorCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRl cC0+YXJnNSwKKwkJCSAgICAgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKwkg IGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+ c2l6ZV9tc3FpZF9kcykpCisJICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsK KwkgICAgfQorCSAgYnJlYWs7CisJY2FzZSBSRUNPUkRfU0hNQVQ6CisJICBy ZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmc0 LAorCQkJICAgICAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworCSAgaWYgKHJl Y29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX3Vs b25nKSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJ ICBicmVhazsKKwljYXNlIFJFQ09SRF9TSE1DVEw6CisJICByZWdjYWNoZV9y YXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmc1LAorCQkJICAg ICAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworCSAgaWYgKHJlY29yZF9hcmNo X2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX3NobWlkX2RzKSkK KwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJICBicmVh azsKKwl9CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX2ZzeW5jICov CisgICAgY2FzZSAxMTg6CisgICAgICAvKiBzeXNfc2lncmV0dXJuICovCisg ICAgY2FzZSAxMTk6CisgICAgICAvKiBzeXNfY2xvbmUgKi8KKyAgICBjYXNl IDEyMDoKKyAgICAgIC8qIHN5c19zZXRkb21haW5uYW1lICovCisgICAgY2Fz ZSAxMjE6CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX25ld3VuYW1l ICovCisgICAgY2FzZSAxMjI6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAo cmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcxLCAoZ2RiX2J5dGUgKikgJiB0 bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAo dG1wdTMyLCB0ZGVwLT5zaXplX25ld191dHNuYW1lKSkKKwl7CisJICByZXR1 cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX21v ZGlmeV9sZHQgKi8KKyAgICBjYXNlIDEyMzoKKyAgICAgIHJlZ2NhY2hlX3Jh d19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzEsIChnZGJfYnl0 ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAodG1wdTMyID09IDAgfHwgdG1w dTMyID09IDIpCisJeworCSAgdWludDMyX3QgcHRyLCBieXRlY291bnQ7CisJ ICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5h cmcyLCAoZ2RiX2J5dGUgKikgJiBwdHIpOworCSAgcmVnY2FjaGVfcmF3X3Jl YWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMywKKwkJCSAgICAgKGdk Yl9ieXRlICopICYgYnl0ZWNvdW50KTsKKwkgIGlmIChyZWNvcmRfYXJjaF9s aXN0X2FkZF9tZW0gKHB0ciwgYnl0ZWNvdW50KSkKKwkgICAgeworCSAgICAg IHJldHVybiAoLTEpOworCSAgICB9CisJfQorICAgICAgYnJlYWs7CisKKyAg ICAgIC8qIHN5c19hZGp0aW1leCAqLworICAgIGNhc2UgMTI0OgorICAgICAg cmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJn MSwgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRf YXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV90aW1leCkp CisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAg ICAgIC8qIHN5c19tcHJvdGVjdCAqLworICAgIGNhc2UgMTI1OgorICAgICAg YnJlYWs7CisKKyAgICAgIC8qIHN5c19zaWdwcm9jbWFzayAqLworICAgIGNh c2UgMTI2OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdj YWNoZSwgdGRlcC0+YXJnMywgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAg ICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRl cC0+c2l6ZV9vbGRfc2lnc2V0X3QpKQorCXsKKwkgIHJldHVybiAoLTEpOwor CX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfbmlfc3lzY2FsbCAq LworICAgIGNhc2UgMTI3OgorICAgICAgLyogc3lzX2luaXRfbW9kdWxlICov CisgICAgY2FzZSAxMjg6CisgICAgICAvKiBzeXNfZGVsZXRlX21vZHVsZSAq LworICAgIGNhc2UgMTI5OgorICAgICAgLyogc3lzX25pX3N5c2NhbGwgKi8K KyAgICBjYXNlIDEzMDoKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNf cXVvdGFjdGwgKi8KKyAgICBjYXNlIDEzMToKKyAgICAgIHJlZ2NhY2hlX3Jh d19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzEsIChnZGJfYnl0 ZSAqKSAmIHRtcHUzMik7CisgICAgICBzd2l0Y2ggKHRtcHUzMikKKwl7CisJ Y2FzZSBSRUNPUkRfUV9HRVRGTVQ6CisJICByZWdjYWNoZV9yYXdfcmVhZCAo cmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmc0LAorCQkJICAgICAoZ2RiX2J5 dGUgKikgJiB0bXB1MzIpOworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRk X21lbSAodG1wdTMyLCA0KSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEp OworCSAgICB9CisJICBicmVhazsKKwljYXNlIFJFQ09SRF9RX0dFVElORk86 CisJICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVw LT5hcmc0LAorCQkJICAgICAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworCSAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5z aXplX21lbV9kcWluZm8pKQorCSAgICB7CisJICAgICAgcmV0dXJuICgtMSk7 CisJICAgIH0KKwkgIGJyZWFrOworCWNhc2UgUkVDT1JEX1FfR0VUUVVPVEE6 CisJICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVw LT5hcmc0LAorCQkJICAgICAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworCSAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5z aXplX2lmX2RxYmxrKSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOwor CSAgICB9CisJICBicmVhazsKKwljYXNlIFJFQ09SRF9RX1hHRVRRU1RBVDoK KwljYXNlIFJFQ09SRF9RX1hHRVRRVU9UQToKKwkgIHJlZ2NhY2hlX3Jhd19y ZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzQsCisJCQkgICAgIChn ZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisJICBpZiAocmVjb3JkX2FyY2hfbGlz dF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfZnNfcXVvdGFfc3RhdCkp CisJICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAgfQorCSAgYnJl YWs7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19nZXRwZ2lk ICovCisgICAgY2FzZSAxMzI6CisgICAgICAvKiBzeXNfZmNoZGlyICovCisg ICAgY2FzZSAxMzM6CisgICAgICAvKiBzeXNfYmRmbHVzaCAqLworICAgIGNh c2UgMTM0OgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19zeXNmcyAq LworICAgIGNhc2UgMTM1OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJl Y29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMSwgKGdkYl9ieXRlICopICYgdG1w dTMyKTsKKyAgICAgIGlmICh0bXB1MzIgPT0gMikKKwl7CisJICByZWdjYWNo ZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmczLAorCQkJ ICAgICAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworCSAgLypYWFggdGhlIHNp emUgb2YgbWVtb3J5IGlzIG5vdCB2ZXJ5IGNsZWFyICovCisJICBpZiAocmVj b3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIDEwKSkKKwkgICAgewor CSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJfQorICAgICAgYnJlYWs7 CisKKyAgICAgIC8qIHN5c19wZXJzb25hbGl0eSAqLworICAgIGNhc2UgMTM2 OgorICAgICAgLyogc3lzX25pX3N5c2NhbGwgKi8KKyAgICBjYXNlIDEzNzoK KyAgICAgIC8qIHN5c19zZXRmc3VpZDE2ICovCisgICAgY2FzZSAxMzg6Cisg ICAgICAvKiBzeXNfc2V0ZnNnaWQxNiAqLworICAgIGNhc2UgMTM5OgorICAg ICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19sbHNlZWsgKi8KKyAgICBjYXNl IDE0MDoKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2Fj aGUsIHRkZXAtPmFyZzQsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAg ICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAt PnNpemVfbG9mZl90KSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAg ICBicmVhazsKKworICAgICAgLyogc3lzX2dldGRlbnRzICovCisgICAgY2Fz ZSAxNDE6CisgICAgICB7CisJdWludDMyX3QgY291bnQ7CisJcmVnY2FjaGVf cmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMiwKKwkJCSAg IChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisJcmVnY2FjaGVfcmF3X3JlYWQg KHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMywgKGdkYl9ieXRlICopICYg Y291bnQpOworCWlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUz MiwgdGRlcC0+c2l6ZV9kaXJlbnQgKiBjb3VudCkpCisJICB7CisJICAgIHJl dHVybiAoLTEpOworCSAgfQorICAgICAgfQorICAgICAgYnJlYWs7CisKKyAg ICAgIC8qIHN5c19zZWxlY3QgKi8KKyAgICBjYXNlIDE0MjoKKyAgICAgIHJl Z2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzIs IChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2Fy Y2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfZmRfc2V0KSkK Kwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICByZWdjYWNoZV9yYXdf cmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmczLCAoZ2RiX2J5dGUg KikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRk X21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX2ZkX3NldCkpCisJeworCSAgcmV0 dXJuICgtMSk7CisJfQorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29y ZF9yZWdjYWNoZSwgdGRlcC0+YXJnNCwgKGdkYl9ieXRlICopICYgdG1wdTMy KTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUz MiwgdGRlcC0+c2l6ZV9mZF9zZXQpKQorCXsKKwkgIHJldHVybiAoLTEpOwor CX0KKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUs IHRkZXAtPmFyZzUsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBp ZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNp emVfdGltZXZhbCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAg YnJlYWs7CisKKyAgICAgIC8qIHN5c19mbG9jayAqLworICAgIGNhc2UgMTQz OgorICAgICAgLyogc3lzX21zeW5jICovCisgICAgY2FzZSAxNDQ6CisgICAg ICBicmVhazsKKworICAgICAgLyogc3lzX3JlYWR2ICovCisgICAgY2FzZSAx NDU6CisgICAgICB7CisJdWludDMyX3QgdmVjOworCXVpbnQzMl90IHZsZW47 CisJc3RydWN0IHJlY29yZF9pb3ZlYworCXsKKwkgIHVpbnQzMl90IGlvdl9i YXNlOworCSAgdWludDMyX3QgaW92X2xlbjsKKwl9IGlvdjsKKwlyZWdjYWNo ZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLCAoZ2Ri X2J5dGUgKikgJiB2ZWMpOworCWlmICh2ZWMpCisJICB7CisJICAgIHJlZ2Nh Y2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzMsCisJ CQkgICAgICAgKGdkYl9ieXRlICopICYgdmxlbik7CisJICAgIGZvciAodG1w dTMyID0gMDsgdG1wdTMyIDwgdmxlbjsgdG1wdTMyKyspCisJICAgICAgewor CQlpZiAodGFyZ2V0X3JlYWRfbWVtb3J5CisJCSAgICAodmVjLCAoZ2RiX2J5 dGUgKikgJiBpb3YsIHNpemVvZiAoc3RydWN0IHJlY29yZF9pb3ZlYykpKQor CQkgIHsKKwkJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywK KwkJCQkJIlJlY29yZDogcmVhZCBtZW1vcnkgYWRkciA9IDB4JXMgbGVuID0g JWQgZXJyb3IuXG4iLAorCQkJCQlwYWRkcl9ueiAodmVjKSwKKwkJCQkJc2l6 ZW9mIChzdHJ1Y3QgcmVjb3JkX2lvdmVjKSk7CisJCSAgICByZXR1cm4gKC0x KTsKKwkJICB9CisJCWlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKGlv di5pb3ZfYmFzZSwgaW92Lmlvdl9sZW4pKQorCQkgIHsKKwkJICAgIHJldHVy biAoLTEpOworCQkgIH0KKwkJdmVjICs9IHNpemVvZiAoc3RydWN0IHJlY29y ZF9pb3ZlYyk7CisJICAgICAgfQorCSAgfQorICAgICAgfQorICAgICAgYnJl YWs7CisKKyAgICAgIC8qIHN5c193cml0ZXYgKi8KKyAgICBjYXNlIDE0NjoK KyAgICAgIC8qIHN5c19nZXRzaWQgKi8KKyAgICBjYXNlIDE0NzoKKyAgICAg IC8qIHN5c19mZGF0YXN5bmMgKi8KKyAgICBjYXNlIDE0ODoKKyAgICAgIC8q IHN5c19zeXNjdGwgKi8KKyAgICBjYXNlIDE0OToKKyAgICAgIC8qIHN5c19t bG9jayAqLworICAgIGNhc2UgMTUwOgorICAgICAgLyogc3lzX211bmxvY2sg Ki8KKyAgICBjYXNlIDE1MToKKyAgICAgIC8qIHN5c19tbG9ja2FsbCAqLwor ICAgIGNhc2UgMTUyOgorICAgICAgLyogc3lzX211bmxvY2thbGwgKi8KKyAg ICBjYXNlIDE1MzoKKyAgICAgIC8qIHN5c19zY2hlZF9zZXRwYXJhbSAqLwor ICAgIGNhc2UgMTU0OgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19z Y2hlZF9nZXRwYXJhbSAqLworICAgIGNhc2UgMTU1OgorICAgICAgcmVnY2Fj aGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMiwgKGdk Yl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9s aXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV9pbnQpKQorCXsKKwkg IHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBz eXNfc2NoZWRfc2V0c2NoZWR1bGVyICovCisgICAgY2FzZSAxNTY6CisgICAg ICAvKiBzeXNfc2NoZWRfZ2V0c2NoZWR1bGVyICovCisgICAgY2FzZSAxNTc6 CisgICAgICAvKiBzeXNfc2NoZWRfeWllbGQgKi8KKyAgICBjYXNlIDE1ODoK KyAgICAgIC8qIHN5c19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4ICovCisgICAg Y2FzZSAxNTk6CisgICAgICAvKiBzeXNfc2NoZWRfZ2V0X3ByaW9yaXR5X21p biAqLworICAgIGNhc2UgMTYwOgorICAgICAgYnJlYWs7CisKKyAgICAgIC8q IHN5c19zY2hlZF9ycl9nZXRfaW50ZXJ2YWwgKi8KKyAgICBjYXNlIDE2MToK KyAgICAgIC8qIHN5c19uYW5vc2xlZXAgKi8KKyAgICBjYXNlIDE2MjoKKyAg ICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAt PmFyZzIsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVj b3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfdGlt ZXNwZWMpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFr OworCisgICAgICAvKiBzeXNfbXJlbWFwICovCisgICAgY2FzZSAxNjM6Cisg ICAgICAvKiBzeXNfc2V0cmVzdWlkMTYgKi8KKyAgICBjYXNlIDE2NDoKKyAg ICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfZ2V0cmVzdWlkMTYgKi8KKyAg ICBjYXNlIDE2NToKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRf cmVnY2FjaGUsIHRkZXAtPmFyZzEsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7 CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIs IHRkZXAtPnNpemVfb2xkX3VpZF90KSkKKwl7CisJICByZXR1cm4gKC0xKTsK Kwl9CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hl LCB0ZGVwLT5hcmcyLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5z aXplX29sZF91aWRfdCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAg ICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+ YXJnMywgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNv cmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV9vbGRf dWlkX3QpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFr OworCisgICAgICAvKiBzeXNfdm04NiAqLworICAgIGNhc2UgMTY2OgorICAg ICAgLyogc3lzX25pX3N5c2NhbGwgKi8KKyAgICBjYXNlIDE2NzoKKyAgICAg IGJyZWFrOworCisgICAgICAvKiBzeXNfcG9sbCAqLworICAgIGNhc2UgMTY4 OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwg dGRlcC0+YXJnMSwgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlm ICh0bXB1MzIpCisJeworCSAgdWludDMyX3QgbmZkczsKKwkgIHJlZ2NhY2hl X3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzIsCisJCQkg ICAgIChnZGJfYnl0ZSAqKSAmIG5mZHMpOworCSAgaWYgKHJlY29yZF9hcmNo X2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX3BvbGxmZCAqIG5m ZHMpKQorCSAgICB7CisJICAgICAgcmV0dXJuICgtMSk7CisJICAgIH0KKwl9 CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX25mc3NlcnZjdGwgKi8K KyAgICBjYXNlIDE2OToKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNv cmRfcmVnY2FjaGUsIHRkZXAtPmFyZzEsIChnZGJfYnl0ZSAqKSAmIHRtcHUz Mik7CisgICAgICBpZiAodG1wdTMyID09IDcgfHwgdG1wdTMyID09IDgpCisJ eworCSAgdWludDMyX3QgcnNpemU7CisJICBpZiAodG1wdTMyID09IDcpCisJ ICAgIHsKKwkgICAgICByc2l6ZSA9IHRkZXAtPnNpemVfTkZTX0ZIU0laRTsK KwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJICAgICAgcnNpemUgPSB0ZGVw LT5zaXplX2tuZnNkX2ZoOworCSAgICB9CisJICByZWdjYWNoZV9yYXdfcmVh ZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmczLAorCQkJICAgICAoZ2Ri X2J5dGUgKikgJiB0bXB1MzIpOworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX21lbSAodG1wdTMyLCByc2l6ZSkpCisJICAgIHsKKwkgICAgICByZXR1 cm4gKC0xKTsKKwkgICAgfQorCX0KKyAgICAgIGJyZWFrOworCisgICAgICAv KiBzeXNfc2V0cmVzZ2lkMTYgKi8KKyAgICBjYXNlIDE3MDoKKyAgICAgIGJy ZWFrOworCisgICAgICAvKiBzeXNfZ2V0cmVzZ2lkMTYgKi8KKyAgICBjYXNl IDE3MToKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2Fj aGUsIHRkZXAtPmFyZzEsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAg ICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAt PnNpemVfb2xkX2dpZF90KSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9Cisg ICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVw LT5hcmcyLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJl Y29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX29s ZF9naWRfdCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgcmVn Y2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMywg KGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJj aF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV9vbGRfZ2lkX3Qp KQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisg ICAgICAvKiBzeXNfcHJjdGwgKi8KKyAgICBjYXNlIDE3MjoKKyAgICAgIHJl Z2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzEs IChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBzd2l0Y2ggKHRtcHUz MikKKwl7CisJY2FzZSAyOgorCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29y ZF9yZWdjYWNoZSwgdGRlcC0+YXJnMiwKKwkJCSAgICAgKGdkYl9ieXRlICop ICYgdG1wdTMyKTsKKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0g KHRtcHUzMiwgdGRlcC0+c2l6ZV9pbnQpKQorCSAgICB7CisJICAgICAgcmV0 dXJuICgtMSk7CisJICAgIH0KKwkgIGJyZWFrOworCWNhc2UgMTY6CisJICBy ZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcy LAorCQkJICAgICAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworCSAgaWYgKHJl Y29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX1RB U0tfQ09NTV9MRU4pKQorCSAgICB7CisJICAgICAgcmV0dXJuICgtMSk7CisJ ICAgIH0KKwkgIGJyZWFrOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAv KiBzeXNfcnRfc2lncmV0dXJuICovCisgICAgY2FzZSAxNzM6CisgICAgICBi cmVhazsKKworICAgICAgLyogc3lzX3J0X3NpZ2FjdGlvbiAqLworICAgIGNh c2UgMTc0OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdj YWNoZSwgdGRlcC0+YXJnMywgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAg ICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRl cC0+c2l6ZV9zaWdhY3Rpb24pKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0K KyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfcnRfc2lncHJvY21hc2sg Ki8KKyAgICBjYXNlIDE3NToKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChy ZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzMsIChnZGJfYnl0ZSAqKSAmIHRt cHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0 bXB1MzIsIHRkZXAtPnNpemVfc2lnc2V0X3QpKQorCXsKKwkgIHJldHVybiAo LTEpOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfcnRfc2ln cGVuZGluZyAqLworICAgIGNhc2UgMTc2OgorICAgICAgcmVnY2FjaGVfcmF3 X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMSwgKGdkYl9ieXRl ICopICYgdG1wdTMyKTsKKyAgICAgIGlmICh0bXB1MzIpCisJeworCSAgdWlu dDMyX3Qgc2lnc2V0c2l6ZTsKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNv cmRfcmVnY2FjaGUsIHRkZXAtPmFyZzIsCisJCQkgICAgIChnZGJfYnl0ZSAq KSAmIHNpZ3NldHNpemUpOworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRk X21lbSAodG1wdTMyLCBzaWdzZXRzaXplKSkKKwkgICAgeworCSAgICAgIHJl dHVybiAoLTEpOworCSAgICB9CisJfQorICAgICAgYnJlYWs7CisKKyAgICAg IC8qIHN5c19ydF9zaWd0aW1lZHdhaXQgKi8KKyAgICBjYXNlIDE3NzoKKyAg ICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAt PmFyZzIsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVj b3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfc2ln aW5mb190KSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBicmVh azsKKworICAgICAgLyogc3lzX3J0X3NpZ3F1ZXVlaW5mbyAqLworICAgIGNh c2UgMTc4OgorICAgICAgLyogc3lzX3J0X3NpZ3N1c3BlbmQgKi8KKyAgICBj YXNlIDE3OToKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfcHJlYWQ2 NCAqLworICAgIGNhc2UgMTgwOgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQg KHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMiwgKGdkYl9ieXRlICopICYg dG1wdTMyKTsKKyAgICAgIGlmICh0bXB1MzIpCisJeworCSAgdWludDMyX3Qg Y291bnQ7CisJICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hl LCB0ZGVwLT5hcmczLAorCQkJICAgICAoZ2RiX2J5dGUgKikgJiBjb3VudCk7 CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIGNv dW50KSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJ fQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19wd3JpdGU2NCAqLwor ICAgIGNhc2UgMTgxOgorICAgICAgLyogc3lzX2Nob3duMTYgKi8KKyAgICBj YXNlIDE4MjoKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfZ2V0Y3dk ICovCisgICAgY2FzZSAxODM6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAo cmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcxLCAoZ2RiX2J5dGUgKikgJiB0 bXB1MzIpOworICAgICAgaWYgKHRtcHUzMikKKwl7CisJICB1aW50MzJfdCBz aXplOworCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwg dGRlcC0+YXJnMiwKKwkJCSAgICAgKGdkYl9ieXRlICopICYgc2l6ZSk7CisJ ICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHNpemUp KQorCSAgICB7CisJICAgICAgcmV0dXJuICgtMSk7CisJICAgIH0KKwl9Cisg ICAgICBicmVhazsKKworICAgICAgLyogc3lzX2NhcGdldCAqLworICAgIGNh c2UgMTg0OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdj YWNoZSwgdGRlcC0+YXJnMiwgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAg ICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRl cC0+c2l6ZV9jYXBfdXNlcl9kYXRhX3QpKQorCXsKKwkgIHJldHVybiAoLTEp OworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfY2Fwc2V0ICov CisgICAgY2FzZSAxODU6CisgICAgICBicmVhazsKKworICAgICAgLyogc3lz X3NpZ2FsdHN0YWNrICovCisgICAgY2FzZSAxODY6CisgICAgICByZWdjYWNo ZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLCAoZ2Ri X2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xp c3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX3N0YWNrX3QpKQorCXsK KwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAv KiBzeXNfc2VuZGZpbGUgKi8KKyAgICBjYXNlIDE4NzoKKyAgICAgIHJlZ2Nh Y2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzMsIChn ZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hf bGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfb2ZmX3QpKQorCXsK KwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAv KiBzeXNfbmlfc3lzY2FsbCAqLworICAgIGNhc2UgMTg4OgorICAgICAgLyog c3lzX25pX3N5c2NhbGwgKi8KKyAgICBjYXNlIDE4OToKKyAgICAgIC8qIHN5 c192Zm9yayAqLworICAgIGNhc2UgMTkwOgorICAgICAgYnJlYWs7CisKKyAg ICAgIC8qIHN5c19nZXRybGltaXQgKi8KKyAgICBjYXNlIDE5MToKKyAgICAg IHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFy ZzIsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3Jk X2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfcmxpbWl0 KSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsKKwor ICAgICAgLyogc3lzX21tYXAyICovCisgICAgY2FzZSAxOTI6CisgICAgICBi cmVhazsKKworICAgICAgLyogc3lzX3RydW5jYXRlNjQgKi8KKyAgICBjYXNl IDE5MzoKKyAgICAgIC8qIHN5c19mdHJ1bmNhdGU2NCAqLworICAgIGNhc2Ug MTk0OgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19zdGF0NjQgKi8K KyAgICBjYXNlIDE5NToKKyAgICAgIC8qIHN5c19sc3RhdDY0ICovCisgICAg Y2FzZSAxOTY6CisgICAgICAvKiBzeXNfZnN0YXQ2NCAqLworICAgIGNhc2Ug MTk3OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNo ZSwgdGRlcC0+YXJnMiwgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAg IGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+ c2l6ZV9zdGF0NjQpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAg IGJyZWFrOworCisgICAgICAvKiBzeXNfbGNob3duICovCisgICAgY2FzZSAx OTg6CisgICAgICAvKiBzeXNfZ2V0dWlkICovCisgICAgY2FzZSAxOTk6Cisg ICAgICAvKiBzeXNfZ2V0Z2lkICovCisgICAgY2FzZSAyMDA6CisgICAgICAv KiBzeXNfZ2V0ZXVpZCAqLworICAgIGNhc2UgMjAxOgorICAgICAgLyogc3lz X2dldGVnaWQgKi8KKyAgICBjYXNlIDIwMjoKKyAgICAgIC8qIHN5c19zZXRy ZXVpZCAqLworICAgIGNhc2UgMjAzOgorICAgICAgLyogc3lzX3NldHJlZ2lk ICovCisgICAgY2FzZSAyMDQ6CisgICAgICBicmVhazsKKworICAgICAgLyog c3lzX2dldGdyb3VwcyAqLworICAgIGNhc2UgMjA1OgorICAgICAgcmVnY2Fj aGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMiwgKGdk Yl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmICh0bXB1MzIpCisJewor CSAgaW50IGdpZHNldHNpemU7CisJICByZWdjYWNoZV9yYXdfcmVhZCAocmVj b3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcxLAorCQkJICAgICAoZ2RiX2J5dGUg KikgJiBnaWRzZXRzaXplKTsKKwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2Fk ZF9tZW0KKwkgICAgICAodG1wdTMyLCB0ZGVwLT5zaXplX2dpZF90ICogZ2lk c2V0c2l6ZSkpCisJICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAg fQorCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfc2V0Z3JvdXBz ICovCisgICAgY2FzZSAyMDY6CisgICAgICAvKiBzeXNfZmNob3duICovCisg ICAgY2FzZSAyMDc6CisgICAgICAvKiBzeXNfc2V0cmVzdWlkICovCisgICAg Y2FzZSAyMDg6CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX2dldHJl c3VpZCAqLworICAgIGNhc2UgMjA5OgorICAgICAgcmVnY2FjaGVfcmF3X3Jl YWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMSwgKGdkYl9ieXRlICop ICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9t ZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV91aWRfdCkpCisJeworCSAgcmV0dXJu ICgtMSk7CisJfQorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9y ZWdjYWNoZSwgdGRlcC0+YXJnMiwgKGdkYl9ieXRlICopICYgdG1wdTMyKTsK KyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwg dGRlcC0+c2l6ZV91aWRfdCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQor ICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRl cC0+YXJnMywgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChy ZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV91 aWRfdCkpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7 CisKKyAgICAgIC8qIHN5c19zZXRyZXNnaWQgKi8KKyAgICBjYXNlIDIxMDoK KyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfZ2V0cmVzZ2lkICovCisg ICAgY2FzZSAyMTE6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3Jk X3JlZ2NhY2hlLCB0ZGVwLT5hcmcxLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIp OworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMy LCB0ZGVwLT5zaXplX2dpZF90KSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9 CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0 ZGVwLT5hcmcyLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYg KHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXpl X2dpZF90KSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICByZWdj YWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmczLCAo Z2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNo X2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX2dpZF90KSkKKwl7 CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAgICAg Lyogc3lzX2Nob3duICovCisgICAgY2FzZSAyMTI6CisgICAgICAvKiBzeXNf c2V0dWlkICovCisgICAgY2FzZSAyMTM6CisgICAgICAvKiBzeXNfc2V0Z2lk ICovCisgICAgY2FzZSAyMTQ6CisgICAgICAvKiBzeXNfc2V0ZnN1aWQgKi8K KyAgICBjYXNlIDIxNToKKyAgICAgIC8qIHN5c19zZXRmc2dpZCAqLworICAg IGNhc2UgMjE2OgorICAgICAgLyogc3lzX3Bpdm90X3Jvb3QgKi8KKyAgICBj YXNlIDIxNzoKKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfbWluY29y ZSAqLworICAgIGNhc2UgMjE4OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQg KHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMywgKGdkYl9ieXRlICopICYg dG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0g KHRtcHUzMiwgdGRlcC0+c2l6ZV9QQUdFX1NJWkUpKQorCXsKKwkgIHJldHVy biAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfbWFk dmlzZSAqLworICAgIGNhc2UgMjE5OgorICAgICAgYnJlYWs7CisKKyAgICAg IC8qIHN5c19nZXRkZW50czY0ICovCisgICAgY2FzZSAyMjA6CisgICAgICB7 CisJdWludDMyX3QgY291bnQ7CisJcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29y ZF9yZWdjYWNoZSwgdGRlcC0+YXJnMiwKKwkJCSAgIChnZGJfYnl0ZSAqKSAm IHRtcHUzMik7CisJcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNo ZSwgdGRlcC0+YXJnMywgKGdkYl9ieXRlICopICYgY291bnQpOworCWlmIChy ZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV9k aXJlbnQ2NCAqIGNvdW50KSkKKwkgIHsKKwkgICAgcmV0dXJuICgtMSk7CisJ ICB9CisgICAgICB9CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX2Zj bnRsNjQgKi8KKyAgICBjYXNlIDIyMToKKyAgICAgIHJlZ2NhY2hlX3Jhd19y ZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzIsIChnZGJfYnl0ZSAq KSAmIHRtcHUzMik7CisgICAgICBzd2l0Y2ggKHRtcHUzMikKKwl7CisJY2Fz ZSBGX0dFVExLNjQ6CisJICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3Jl Z2NhY2hlLCB0ZGVwLT5hcmczLAorCQkJICAgICAoZ2RiX2J5dGUgKikgJiB0 bXB1MzIpOworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1w dTMyLCB0ZGVwLT5zaXplX2Zsb2NrNjQpKQorCSAgICB7CisJICAgICAgcmV0 dXJuICgtMSk7CisJICAgIH0KKwkgIGJyZWFrOworCWNhc2UgRl9TRVRMSzY0 OgorCWNhc2UgRl9TRVRMS1c2NDoKKwkgIGJyZWFrOworCWRlZmF1bHQ6CisJ ICBnb3RvIHN5c19mY250bDsKKwkgIGJyZWFrOworCX0KKyAgICAgIGJyZWFr OworCisgICAgICAvKiBzeXNfbmlfc3lzY2FsbCAqLworICAgIGNhc2UgMjIy OgorICAgICAgLyogc3lzX25pX3N5c2NhbGwgKi8KKyAgICBjYXNlIDIyMzoK KyAgICAgIC8qIHN5c19nZXR0aWQgKi8KKyAgICBjYXNlIDIyNDoKKyAgICAg IC8qIHN5c19yZWFkYWhlYWQgKi8KKyAgICBjYXNlIDIyNToKKyAgICAgIC8q IHN5c19zZXR4YXR0ciAqLworICAgIGNhc2UgMjI2OgorICAgICAgLyogc3lz X2xzZXR4YXR0ciAqLworICAgIGNhc2UgMjI3OgorICAgICAgLyogc3lzX2Zz ZXR4YXR0ciAqLworICAgIGNhc2UgMjI4OgorICAgICAgYnJlYWs7CisKKyAg ICAgIC8qIHN5c19nZXR4YXR0ciAqLworICAgIGNhc2UgMjI5OgorICAgICAg Lyogc3lzX2xnZXR4YXR0ciAqLworICAgIGNhc2UgMjMwOgorICAgICAgLyog c3lzX2ZnZXR4YXR0ciAqLworICAgIGNhc2UgMjMxOgorICAgICAgcmVnY2Fj aGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMywgKGdk Yl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmICh0bXB1MzIpCisJewor CSAgdWludDMyX3Qgc2l6ZTsKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNv cmRfcmVnY2FjaGUsIHRkZXAtPmFyZzQsCisJCQkgICAgIChnZGJfYnl0ZSAq KSAmIHNpemUpOworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAo dG1wdTMyLCBzaXplKSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOwor CSAgICB9CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19saXN0 eGF0dHIgKi8KKyAgICBjYXNlIDIzMjoKKyAgICAgIC8qIHN5c19sbGlzdHhh dHRyICovCisgICAgY2FzZSAyMzM6CisgICAgICAvKiBzeXNfZmxpc3R4YXR0 ciAqLworICAgIGNhc2UgMjM0OgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQg KHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMiwgKGdkYl9ieXRlICopICYg dG1wdTMyKTsKKyAgICAgIGlmICh0bXB1MzIpCisJeworCSAgdWludDMyX3Qg c2l6ZTsKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUs IHRkZXAtPmFyZzMsCisJCQkgICAgIChnZGJfYnl0ZSAqKSAmIHNpemUpOwor CSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCBzaXpl KSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJfQor ICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19yZW1vdmV4YXR0ciAqLwor ICAgIGNhc2UgMjM1OgorICAgICAgLyogc3lzX2xyZW1vdmV4YXR0ciAqLwor ICAgIGNhc2UgMjM2OgorICAgICAgLyogc3lzX2ZyZW1vdmV4YXR0ciAqLwor ICAgIGNhc2UgMjM3OgorICAgICAgLyogc3lzX3RraWxsICovCisgICAgY2Fz ZSAyMzg6CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX3NlbmRmaWxl NjQgKi8KKyAgICBjYXNlIDIzOToKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFk IChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzMsIChnZGJfYnl0ZSAqKSAm IHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVt ICh0bXB1MzIsIHRkZXAtPnNpemVfbG9mZl90KSkKKwl7CisJICByZXR1cm4g KC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX2Z1dGV4 ICovCisgICAgY2FzZSAyNDA6CisgICAgICAvKiBzeXNfc2NoZWRfc2V0YWZm aW5pdHkgKi8KKyAgICBjYXNlIDI0MToKKyAgICAgIGJyZWFrOworCisgICAg ICAvKiBzeXNfc2NoZWRfZ2V0YWZmaW5pdHkgKi8KKyAgICBjYXNlIDI0MjoK KyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRk ZXAtPmFyZzMsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAo dG1wdTMyKQorCXsKKwkgIHVpbnQzMl90IGxlbjsKKwkgIHJlZ2NhY2hlX3Jh d19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzIsIChnZGJfYnl0 ZSAqKSAmIGxlbik7CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVt ICh0bXB1MzIsIGxlbikpCisJICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsK KwkgICAgfQorCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfc2V0 X3RocmVhZF9hcmVhICovCisgICAgY2FzZSAyNDM6CisgICAgICByZWdjYWNo ZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcxLCAoZ2Ri X2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xp c3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX2ludCkpCisJeworCSAg cmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5 c19nZXRfdGhyZWFkX2FyZWEgKi8KKyAgICBjYXNlIDI0NDoKKyAgICAgIHJl Z2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzEs IChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2Fy Y2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfdXNlcl9kZXNj KSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsKKwor ICAgICAgLyogc3lzX2lvX3NldHVwICovCisgICAgY2FzZSAyNDU6CisgICAg ICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5h cmcyLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29y ZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX2xvbmcp KQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisg ICAgICAvKiBzeXNfaW9fZGVzdHJveSAqLworICAgIGNhc2UgMjQ2OgorICAg ICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19pb19nZXRldmVudHMgKi8KKyAg ICBjYXNlIDI0NzoKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRf cmVnY2FjaGUsIHRkZXAtPmFyZzQsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7 CisgICAgICBpZiAodG1wdTMyKQorCXsKKwkgIGludDMyX3QgbnI7CisJICBy ZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcz LCAoZ2RiX2J5dGUgKikgJiBucik7CisJICBpZiAocmVjb3JkX2FyY2hfbGlz dF9hZGRfbWVtICh0bXB1MzIsIG5yICogdGRlcC0+c2l6ZV9pb19ldmVudCkp CisJICAgIHsKKwkgICAgICByZXR1cm4gKC0xKTsKKwkgICAgfQorCX0KKyAg ICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfaW9fc3VibWl0ICovCisgICAg Y2FzZSAyNDg6CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3Jl Z2NhY2hlLCB0ZGVwLT5hcmczLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOwor ICAgICAgaWYgKHRtcHUzMikKKwl7CisJICBpbnQzMl90IGksIG5yOworCSAg dWludDMyX3QgKmlvY2JwOworCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29y ZF9yZWdjYWNoZSwgdGRlcC0+YXJnMiwgKGdkYl9ieXRlICopICYgbnIpOwor CSAgaW9jYnAgPSAodWludDMyX3QgKikgYWxsb2NhIChuciAqIHRkZXAtPnNp emVfaW50KTsKKwkgIGlmICh0YXJnZXRfcmVhZF9tZW1vcnkKKwkgICAgICAo dG1wdTMyLCAoZ2RiX2J5dGUgKikgaW9jYnAsIG5yICogdGRlcC0+c2l6ZV9p bnQpKQorCSAgICB7CisJICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJf c3RkbG9nLAorCQkJCSAgIlJlY29yZDogcmVhZCBtZW1vcnkgYWRkciA9IDB4 JXMgbGVuID0gJWQgZXJyb3IuXG4iLAorCQkJCSAgcGFkZHJfbnogKHRtcHUz MiksIG5yICogdGRlcC0+c2l6ZV9pbnQpOworCSAgICAgIHJldHVybiAoLTEp OworCSAgICB9CisJICBmb3IgKGkgPSAwOyBpIDwgbnI7IGkrKykKKwkgICAg eworCSAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKGlvY2Jw W2ldLCB0ZGVwLT5zaXplX2lvY2IpKQorCQl7CisJCSAgcmV0dXJuICgtMSk7 CisJCX0KKwkgICAgfQorCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBz eXNfaW9fY2FuY2VsICovCisgICAgY2FzZSAyNDk6CisgICAgICByZWdjYWNo ZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmczLCAoZ2Ri X2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xp c3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX2lvX2V2ZW50KSkKKwl7 CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAgICAg Lyogc3lzX2ZhZHZpc2U2NCAqLworICAgIGNhc2UgMjUwOgorICAgICAgLyog c3lzX25pX3N5c2NhbGwgKi8KKyAgICBjYXNlIDI1MToKKyAgICAgIGJyZWFr OworCisgICAgICAvKiBzeXNfZXhpdF9ncm91cCAqLworICAgIGNhc2UgMjUy OgorICAgICAgeworCWludCBxOworCXRhcmdldF90ZXJtaW5hbF9vdXJzICgp OworCXEgPQorCSAgeXF1ZXJ5IChfCisJCSAgKCJUaGUgbmV4dCBpbnN0cnVj dGlvbiBpcyBzeXNjYWxsIGV4aXRfZ3JvdXAuICBJdCB3aWxsIG1ha2UgdGhl IHByb2dyYW0gZXhpdC4gIERvIHlvdSB3YW50IHRvIHN0b3AgdGhlIHByb2dy YW0uIikpOworCXRhcmdldF90ZXJtaW5hbF9pbmZlcmlvciAoKTsKKwlpZiAo cSkKKwkgIHsKKwkgICAgcmV0dXJuICgxKTsKKwkgIH0KKyAgICAgIH0KKyAg ICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfbG9va3VwX2Rjb29raWUgKi8K KyAgICBjYXNlIDI1MzoKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNv cmRfcmVnY2FjaGUsIHRkZXAtPmFyZzIsIChnZGJfYnl0ZSAqKSAmIHRtcHUz Mik7CisgICAgICBpZiAodG1wdTMyKQorCXsKKwkgIHVpbnQzMl90IGxlbjsK KwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAt PmFyZzMsIChnZGJfYnl0ZSAqKSAmIGxlbik7CisJICBpZiAocmVjb3JkX2Fy Y2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIGxlbikpCisJICAgIHsKKwkgICAg ICByZXR1cm4gKC0xKTsKKwkgICAgfQorCX0KKyAgICAgIGJyZWFrOworCisg ICAgICAvKiBzeXNfZXBvbGxfY3JlYXRlICovCisgICAgY2FzZSAyNTQ6Cisg ICAgICAvKiBzeXNfZXBvbGxfY3RsICovCisgICAgY2FzZSAyNTU6CisgICAg ICBicmVhazsKKworICAgICAgLyogc3lzX2Vwb2xsX3dhaXQgKi8KKyAgICBj YXNlIDI1NjoKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVn Y2FjaGUsIHRkZXAtPmFyZzIsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7Cisg ICAgICBpZiAodG1wdTMyKQorCXsKKwkgIGludDMyX3QgbWF4ZXZlbnRzOwor CSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+ YXJnMywKKwkJCSAgICAgKGdkYl9ieXRlICopICYgbWF4ZXZlbnRzKTsKKwkg IGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0KKwkgICAgICAodG1wdTMy LCBtYXhldmVudHMgKiB0ZGVwLT5zaXplX2Vwb2xsX2V2ZW50KSkKKwkgICAg eworCSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJfQorICAgICAgYnJl YWs7CisKKyAgICAgIC8qIHN5c19yZW1hcF9maWxlX3BhZ2VzICovCisgICAg Y2FzZSAyNTc6CisgICAgICAvKiBzeXNfc2V0X3RpZF9hZGRyZXNzICovCisg ICAgY2FzZSAyNTg6CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX3Rp bWVyX2NyZWF0ZSAqLworICAgIGNhc2UgMjU5OgorICAgICAgcmVnY2FjaGVf cmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMywgKGdkYl9i eXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0 X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV9pbnQpKQorCXsKKwkgIHJl dHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNf dGltZXJfc2V0dGltZSAqLworICAgIGNhc2UgMjYwOgorICAgICAgcmVnY2Fj aGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnNCwgKGdk Yl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9s aXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV9pdGltZXJzcGVjKSkK Kwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAg ICAgLyogc3lzX3RpbWVyX2dldHRpbWUgKi8KKyAgICBjYXNlIDI2MToKKyAg ICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAt PmFyZzIsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVj b3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfaXRp bWVyc3BlYykpCisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJl YWs7CisKKyAgICAgIC8qIHN5c190aW1lcl9nZXRvdmVycnVuICovCisgICAg Y2FzZSAyNjI6CisgICAgICAvKiBzeXNfdGltZXJfZGVsZXRlICovCisgICAg Y2FzZSAyNjM6CisgICAgICAvKiBzeXNfY2xvY2tfc2V0dGltZSAqLworICAg IGNhc2UgMjY0OgorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c19jbG9j a19nZXR0aW1lICovCisgICAgY2FzZSAyNjU6CisgICAgICByZWdjYWNoZV9y YXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLCAoZ2RiX2J5 dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3Rf YWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX3RpbWVzcGVjKSkKKwl7CisJ ICByZXR1cm4gKC0xKTsKKwl9CisgICAgICBicmVhazsKKworICAgICAgLyog c3lzX2Nsb2NrX2dldHJlcyAqLworICAgIGNhc2UgMjY2OgorICAgICAgcmVn Y2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMiwg KGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJj aF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV90aW1lc3BlYykp CisJeworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAg ICAgIC8qIHN5c19jbG9ja19uYW5vc2xlZXAgKi8KKyAgICBjYXNlIDI2NzoK KyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRk ZXAtPmFyZzQsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAo cmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVf dGltZXNwZWMpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJy ZWFrOworCisgICAgICAvKiBzeXNfc3RhdGZzNjQgKi8KKyAgICBjYXNlIDI2 ODoKKyAgICAgIC8qIHN5c19mc3RhdGZzNjQgKi8KKyAgICBjYXNlIDI2OToK KyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRk ZXAtPmFyZzMsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAo cmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVf c3RhdGZzNjQpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJy ZWFrOworCisgICAgICAvKiBzeXNfdGdraWxsICovCisgICAgY2FzZSAyNzA6 CisgICAgICAvKiBzeXNfdXRpbWVzICovCisgICAgY2FzZSAyNzE6CisgICAg ICAvKiBzeXNfZmFkdmlzZTY0XzY0ICovCisgICAgY2FzZSAyNzI6CisgICAg ICAvKiBzeXNfbmlfc3lzY2FsbCAqLworICAgIGNhc2UgMjczOgorICAgICAg Lyogc3lzX21iaW5kICovCisgICAgY2FzZSAyNzQ6CisgICAgICBicmVhazsK KworICAgICAgLyogc3lzX2dldF9tZW1wb2xpY3kgKi8KKyAgICBjYXNlIDI3 NToKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUs IHRkZXAtPmFyZzEsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBp ZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNp emVfaW50KSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICByZWdj YWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLCAo Z2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHRtcHUzMikKKwl7 CisJICB1aW50MzJfdCBtYXhub2RlOworCSAgcmVnY2FjaGVfcmF3X3JlYWQg KHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMywKKwkJCSAgICAgKGdkYl9i eXRlICopICYgbWF4bm9kZSk7CisJICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfbWVtICh0bXB1MzIsIG1heG5vZGUgKiB0ZGVwLT5zaXplX2xvbmcpKQor CSAgICB7CisJICAgICAgcmV0dXJuICgtMSk7CisJICAgIH0KKwl9CisgICAg ICBicmVhazsKKworICAgICAgLyogc3lzX3NldF9tZW1wb2xpY3kgKi8KKyAg ICBjYXNlIDI3NjoKKyAgICAgIC8qIHN5c19tcV9vcGVuICovCisgICAgY2Fz ZSAyNzc6CisgICAgICAvKiBzeXNfbXFfdW5saW5rICovCisgICAgY2FzZSAy Nzg6CisgICAgICAvKiBzeXNfbXFfdGltZWRzZW5kICovCisgICAgY2FzZSAy Nzk6CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX21xX3RpbWVkcmVj ZWl2ZSAqLworICAgIGNhc2UgMjgwOgorICAgICAgcmVnY2FjaGVfcmF3X3Jl YWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMiwgKGdkYl9ieXRlICop ICYgdG1wdTMyKTsKKyAgICAgIGlmICh0bXB1MzIpCisJeworCSAgdWludDMy X3QgbXNnX2xlbjsKKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVn Y2FjaGUsIHRkZXAtPmFyZzMsCisJCQkgICAgIChnZGJfYnl0ZSAqKSAmIG1z Z19sZW4pOworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1w dTMyLCBtc2dfbGVuKSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOwor CSAgICB9CisJfQorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9y ZWdjYWNoZSwgdGRlcC0+YXJnNCwgKGdkYl9ieXRlICopICYgdG1wdTMyKTsK KyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwg dGRlcC0+c2l6ZV9pbnQpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAg ICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfbXFfbm90aWZ5ICovCisgICAg Y2FzZSAyODE6CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX21xX2dl dHNldGF0dHIgKi8KKyAgICBjYXNlIDI4MjoKKyAgICAgIHJlZ2NhY2hlX3Jh d19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzMsIChnZGJfYnl0 ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9h ZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfbXFfYXR0cikpCisJeworCSAg cmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5 c19rZXhlY19sb2FkICovCisgICAgY2FzZSAyODM6CisgICAgICBicmVhazsK KworICAgICAgLyogc3lzX3dhaXRpZCAqLworICAgIGNhc2UgMjg0OgorICAg ICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+ YXJnMywgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNv cmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV9zaWdp bmZvKSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICByZWdjYWNo ZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmc1LCAoZ2Ri X2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xp c3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX3J1c2FnZSkpCisJewor CSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgYnJlYWs7CisKKyAgICAgIC8q IHN5c19uaV9zeXNjYWxsICovCisgICAgY2FzZSAyODU6CisgICAgICAvKiBz eXNfYWRkX2tleSAqLworICAgIGNhc2UgMjg2OgorICAgICAgLyogc3lzX3Jl cXVlc3Rfa2V5ICovCisgICAgY2FzZSAyODc6CisgICAgICBicmVhazsKKwor ICAgICAgLyogc3lzX2tleWN0bCAqLworICAgIGNhc2UgMjg4OgorICAgICAg cmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJn MSwgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmICh0bXB1MzIg PT0gNiB8fCB0bXB1MzIgPT0gMTEpCisJeworCSAgcmVnY2FjaGVfcmF3X3Jl YWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMywKKwkJCSAgICAgKGdk Yl9ieXRlICopICYgdG1wdTMyKTsKKwkgIGlmICh0bXB1MzIpCisJICAgIHsK KwkgICAgICB1aW50MzJfdCBidWZsZW47CisJICAgICAgcmVnY2FjaGVfcmF3 X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnNCwKKwkJCQkgKGdk Yl9ieXRlICopICYgYnVmbGVuKTsKKwkgICAgICBpZiAocmVjb3JkX2FyY2hf bGlzdF9hZGRfbWVtICh0bXB1MzIsIGJ1ZmxlbikpCisJCXsKKwkJICByZXR1 cm4gKC0xKTsKKwkJfQorCSAgICB9CisJfQorICAgICAgYnJlYWs7CisKKyAg ICAgIC8qIHN5c19pb3ByaW9fc2V0ICovCisgICAgY2FzZSAyODk6CisgICAg ICAvKiBzeXNfaW9wcmlvX2dldCAqLworICAgIGNhc2UgMjkwOgorICAgICAg Lyogc3lzX2lub3RpZnlfaW5pdCAqLworICAgIGNhc2UgMjkxOgorICAgICAg Lyogc3lzX2lub3RpZnlfYWRkX3dhdGNoICovCisgICAgY2FzZSAyOTI6Cisg ICAgICAvKiBzeXNfaW5vdGlmeV9ybV93YXRjaCAqLworICAgIGNhc2UgMjkz OgorICAgICAgLyogc3lzX21pZ3JhdGVfcGFnZXMgKi8KKyAgICBjYXNlIDI5 NDoKKyAgICAgIC8qIHN5c19vcGVuYXQgKi8KKyAgICBjYXNlIDI5NToKKyAg ICAgIC8qIHN5c19ta2RpcmF0ICovCisgICAgY2FzZSAyOTY6CisgICAgICAv KiBzeXNfbWtub2RhdCAqLworICAgIGNhc2UgMjk3OgorICAgICAgLyogc3lz X2ZjaG93bmF0ICovCisgICAgY2FzZSAyOTg6CisgICAgICAvKiBzeXNfZnV0 aW1lc2F0ICovCisgICAgY2FzZSAyOTk6CisgICAgICBicmVhazsKKworICAg ICAgLyogc3lzX2ZzdGF0YXQ2NCAqLworICAgIGNhc2UgMzAwOgorICAgICAg cmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJn MywgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRf YXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV9zdGF0NjQp KQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIGJyZWFrOworCisg ICAgICAvKiBzeXNfdW5saW5rYXQgKi8KKyAgICBjYXNlIDMwMToKKyAgICAg IC8qIHN5c19yZW5hbWVhdCAqLworICAgIGNhc2UgMzAyOgorICAgICAgLyog c3lzX2xpbmthdCAqLworICAgIGNhc2UgMzAzOgorICAgICAgLyogc3lzX3N5 bWxpbmthdCAqLworICAgIGNhc2UgMzA0OgorICAgICAgYnJlYWs7CisKKyAg ICAgIC8qIHN5c19yZWFkbGlua2F0ICovCisgICAgY2FzZSAzMDU6CisgICAg ICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5h cmczLCAoZ2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHRtcHUz MikKKwl7CisJICBpbnQzMl90IGJ1ZnNpejsKKwkgIHJlZ2NhY2hlX3Jhd19y ZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzQsCisJCQkgICAgIChn ZGJfYnl0ZSAqKSAmIGJ1ZnNpeik7CisJICBpZiAocmVjb3JkX2FyY2hfbGlz dF9hZGRfbWVtICh0bXB1MzIsIGJ1ZnNpeikpCisJICAgIHsKKwkgICAgICBy ZXR1cm4gKC0xKTsKKwkgICAgfQorCX0KKyAgICAgIGJyZWFrOworCisgICAg ICAvKiBzeXNfZmNobW9kYXQgKi8KKyAgICBjYXNlIDMwNjoKKyAgICAgIC8q IHN5c19mYWNjZXNzYXQgKi8KKyAgICBjYXNlIDMwNzoKKyAgICAgIGJyZWFr OworCisgICAgICAvKiBzeXNfcHNlbGVjdDYgKi8KKyAgICBjYXNlIDMwODoK KyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRk ZXAtPmFyZzIsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAo cmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVf ZmRfc2V0KSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAgICByZWdj YWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmczLCAo Z2RiX2J5dGUgKikgJiB0bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNo X2xpc3RfYWRkX21lbSAodG1wdTMyLCB0ZGVwLT5zaXplX2ZkX3NldCkpCisJ eworCSAgcmV0dXJuICgtMSk7CisJfQorICAgICAgcmVnY2FjaGVfcmF3X3Jl YWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnNCwgKGdkYl9ieXRlICop ICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9t ZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV9mZF9zZXQpKQorCXsKKwkgIHJldHVy biAoLTEpOworCX0KKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRf cmVnY2FjaGUsIHRkZXAtPmFyZzUsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7 CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIs IHRkZXAtPnNpemVfdGltZXNwZWMpKQorCXsKKwkgIHJldHVybiAoLTEpOwor CX0KKyAgICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfcHBvbGwgKi8KKyAg ICBjYXNlIDMwOToKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRf cmVnY2FjaGUsIHRkZXAtPmFyZzEsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7 CisgICAgICBpZiAodG1wdTMyKQorCXsKKwkgIHVpbnQzMl90IG5mZHM7CisJ ICByZWdjYWNoZV9yYXdfcmVhZCAocmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5h cmcyLAorCQkJICAgICAoZ2RiX2J5dGUgKikgJiBuZmRzKTsKKwkgIGlmIChy ZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV9w b2xsZmQgKiBuZmRzKSkKKwkgICAgeworCSAgICAgIHJldHVybiAoLTEpOwor CSAgICB9CisJfQorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9y ZWdjYWNoZSwgdGRlcC0+YXJnMywgKGdkYl9ieXRlICopICYgdG1wdTMyKTsK KyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwg dGRlcC0+c2l6ZV90aW1lc3BlYykpCisJeworCSAgcmV0dXJuICgtMSk7CisJ fQorICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHN5c191bnNoYXJlICovCisg ICAgY2FzZSAzMTA6CisgICAgICAvKiBzeXNfc2V0X3JvYnVzdF9saXN0ICov CisgICAgY2FzZSAzMTE6CisgICAgICBicmVhazsKKworICAgICAgLyogc3lz X2dldF9yb2J1c3RfbGlzdCAqLworICAgIGNhc2UgMzEyOgorICAgICAgcmVn Y2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMiwg KGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJj aF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+c2l6ZV9pbnQpKQorCXsK KwkgIHJldHVybiAoLTEpOworCX0KKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFk IChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzMsIChnZGJfYnl0ZSAqKSAm IHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVt ICh0bXB1MzIsIHRkZXAtPnNpemVfaW50KSkKKwl7CisJICByZXR1cm4gKC0x KTsKKwl9CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX3NwbGljZSAq LworICAgIGNhc2UgMzEzOgorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJl Y29yZF9yZWdjYWNoZSwgdGRlcC0+YXJnMiwgKGdkYl9ieXRlICopICYgdG1w dTMyKTsKKyAgICAgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRt cHUzMiwgdGRlcC0+c2l6ZV9sb2ZmX3QpKQorCXsKKwkgIHJldHVybiAoLTEp OworCX0KKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2Fj aGUsIHRkZXAtPmFyZzQsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAg ICBpZiAocmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAt PnNpemVfbG9mZl90KSkKKwl7CisJICByZXR1cm4gKC0xKTsKKwl9CisgICAg ICBicmVhazsKKworICAgICAgLyogc3lzX3N5bmNfZmlsZV9yYW5nZSAqLwor ICAgIGNhc2UgMzE0OgorICAgICAgLyogc3lzX3RlZSAqLworICAgIGNhc2Ug MzE1OgorICAgICAgLyogc3lzX3Ztc3BsaWNlICovCisgICAgY2FzZSAzMTY6 CisgICAgICBicmVhazsKKworICAgICAgLyogc3lzX21vdmVfcGFnZXMgKi8K KyAgICBjYXNlIDMxNzoKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNv cmRfcmVnY2FjaGUsIHRkZXAtPmFyZzUsIChnZGJfYnl0ZSAqKSAmIHRtcHUz Mik7CisgICAgICBpZiAodG1wdTMyKQorCXsKKwkgIHVpbnQzMl90IG5yX3Bh Z2VzOworCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwg dGRlcC0+YXJnMiwKKwkJCSAgICAgKGdkYl9ieXRlICopICYgbnJfcGFnZXMp OworCSAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdTMyLCBu cl9wYWdlcyAqIHRkZXAtPnNpemVfaW50KSkKKwkgICAgeworCSAgICAgIHJl dHVybiAoLTEpOworCSAgICB9CisJfQorICAgICAgYnJlYWs7CisKKyAgICAg IC8qIHN5c19nZXRjcHUgKi8KKyAgICBjYXNlIDMxODoKKyAgICAgIHJlZ2Nh Y2hlX3Jhd19yZWFkIChyZWNvcmRfcmVnY2FjaGUsIHRkZXAtPmFyZzEsIChn ZGJfYnl0ZSAqKSAmIHRtcHUzMik7CisgICAgICBpZiAocmVjb3JkX2FyY2hf bGlzdF9hZGRfbWVtICh0bXB1MzIsIHRkZXAtPnNpemVfaW50KSkKKwl7CisJ ICByZXR1cm4gKC0xKTsKKwl9CisgICAgICByZWdjYWNoZV9yYXdfcmVhZCAo cmVjb3JkX3JlZ2NhY2hlLCB0ZGVwLT5hcmcyLCAoZ2RiX2J5dGUgKikgJiB0 bXB1MzIpOworICAgICAgaWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAo dG1wdTMyLCB0ZGVwLT5zaXplX2ludCkpCisJeworCSAgcmV0dXJuICgtMSk7 CisJfQorICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNo ZSwgdGRlcC0+YXJnMywgKGdkYl9ieXRlICopICYgdG1wdTMyKTsKKyAgICAg IGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0gKHRtcHUzMiwgdGRlcC0+ c2l6ZV91bG9uZyAqIDIpKQorCXsKKwkgIHJldHVybiAoLTEpOworCX0KKyAg ICAgIGJyZWFrOworCisgICAgICAvKiBzeXNfZXBvbGxfcHdhaXQgKi8KKyAg ICBjYXNlIDMxOToKKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWNvcmRf cmVnY2FjaGUsIHRkZXAtPmFyZzIsIChnZGJfYnl0ZSAqKSAmIHRtcHUzMik7 CisgICAgICBpZiAodG1wdTMyKQorCXsKKwkgIGludDMyX3QgbWF4ZXZlbnRz OworCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlY29yZF9yZWdjYWNoZSwgdGRl cC0+YXJnMywKKwkJCSAgICAgKGdkYl9ieXRlICopICYgbWF4ZXZlbnRzKTsK KwkgIGlmIChyZWNvcmRfYXJjaF9saXN0X2FkZF9tZW0KKwkgICAgICAodG1w dTMyLCBtYXhldmVudHMgKiB0ZGVwLT5zaXplX2Vwb2xsX2V2ZW50KSkKKwkg ICAgeworCSAgICAgIHJldHVybiAoLTEpOworCSAgICB9CisJfQorICAgICAg YnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgcHJpbnRmX3VuZmlsdGVy ZWQgKF8KKwkJCSAoIlJlY29yZDogcmVjb3JkIGFuZCByZXZlcnNlIGZ1bmN0 aW9uIGRvZXNuJ3Qgc3VwcG9ydCBzeXNjYWxsIG51bWJlciAweCUwOHhcbiIp LAorCQkJIHRtcHUzMik7CisgICAgICByZXR1cm4gKC0xKTsKKyAgICAgIGJy ZWFrOworICAgIH0KKworICByZXR1cm4gKDApOworfQotLS0gYS9saW51eC1y ZWNvcmQuaAorKysgYi9saW51eC1yZWNvcmQuaApAQCAtMCwwICsxLDE3MSBA QAorLyogUHJvY2VzcyByZWNvcmQgYW5kIHJlcGxheSB0YXJnZXQgY29kZSBm b3IgR05VL0xpbnV4LgorCisgICBDb3B5cmlnaHQgKEMpIDIwMDggRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIEdEQi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAg IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl LCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKwor I2lmbmRlZiBfTElOVVhfUkVDT1JEX0hfCisjZGVmaW5lIF9MSU5VWF9SRUNP UkRfSF8KKwordHlwZWRlZiBzdHJ1Y3QgbGludXhfcmVjb3JkX3RkZXBfcwor eworICAvKiBUaGUgc2l6ZSBvZiB0aGUgdHlwZSB0aGF0IHdpbGwgYmUgdXNl IGluIHN5c3RlbSBjYWxsLiAqLworICBpbnQgc2l6ZV9fb2xkX2tlcm5lbF9z dGF0OworICBpbnQgc2l6ZV90bXM7CisgIGludCBzaXplX2xvZmZfdDsKKyAg aW50IHNpemVfZmxvY2s7CisgIGludCBzaXplX29sZG9sZF91dHNuYW1lOwor ICBpbnQgc2l6ZV91c3RhdDsKKyAgaW50IHNpemVfb2xkX3NpZ2FjdGlvbjsK KyAgaW50IHNpemVfb2xkX3NpZ3NldF90OworICBpbnQgc2l6ZV9ybGltaXQ7 CisgIGludCBzaXplX3J1c2FnZTsKKyAgaW50IHNpemVfdGltZXZhbDsKKyAg aW50IHNpemVfdGltZXpvbmU7CisgIGludCBzaXplX29sZF9naWRfdDsKKyAg aW50IHNpemVfb2xkX3VpZF90OworICBpbnQgc2l6ZV9mZF9zZXQ7CisgIGlu dCBzaXplX2RpcmVudDsKKyAgaW50IHNpemVfZGlyZW50NjQ7CisgIGludCBz aXplX3N0YXRmczsKKyAgaW50IHNpemVfc3RhdGZzNjQ7CisgIGludCBzaXpl X3NvY2thZGRyOworICBpbnQgc2l6ZV9pbnQ7CisgIGludCBzaXplX2xvbmc7 CisgIGludCBzaXplX3Vsb25nOworICBpbnQgc2l6ZV9tc2doZHI7CisgIGlu dCBzaXplX2l0aW1lcnZhbDsKKyAgaW50IHNpemVfc3RhdDsKKyAgaW50IHNp emVfb2xkX3V0c25hbWU7CisgIGludCBzaXplX3N5c2luZm87CisgIGludCBz aXplX21zcWlkX2RzOworICBpbnQgc2l6ZV9zaG1pZF9kczsKKyAgaW50IHNp emVfbmV3X3V0c25hbWU7CisgIGludCBzaXplX3RpbWV4OworICBpbnQgc2l6 ZV9tZW1fZHFpbmZvOworICBpbnQgc2l6ZV9pZl9kcWJsazsKKyAgaW50IHNp emVfZnNfcXVvdGFfc3RhdDsKKyAgaW50IHNpemVfdGltZXNwZWM7CisgIGlu dCBzaXplX3BvbGxmZDsKKyAgaW50IHNpemVfTkZTX0ZIU0laRTsKKyAgaW50 IHNpemVfa25mc2RfZmg7CisgIGludCBzaXplX1RBU0tfQ09NTV9MRU47Cisg IGludCBzaXplX3NpZ2FjdGlvbjsKKyAgaW50IHNpemVfc2lnc2V0X3Q7Cisg IGludCBzaXplX3NpZ2luZm9fdDsKKyAgaW50IHNpemVfY2FwX3VzZXJfZGF0 YV90OworICBpbnQgc2l6ZV9zdGFja190OworICBpbnQgc2l6ZV9vZmZfdDsK KyAgaW50IHNpemVfc3RhdDY0OworICBpbnQgc2l6ZV9naWRfdDsKKyAgaW50 IHNpemVfdWlkX3Q7CisgIGludCBzaXplX1BBR0VfU0laRTsKKyAgaW50IHNp emVfZmxvY2s2NDsKKyAgaW50IHNpemVfdXNlcl9kZXNjOworICBpbnQgc2l6 ZV9pb19ldmVudDsKKyAgaW50IHNpemVfaW9jYjsKKyAgaW50IHNpemVfZXBv bGxfZXZlbnQ7CisgIGludCBzaXplX2l0aW1lcnNwZWM7CisgIGludCBzaXpl X21xX2F0dHI7CisgIGludCBzaXplX3NpZ2luZm87CisKKyAgaW50IHNpemVf dGVybWlvczsKKyAgaW50IHNpemVfdGVybWlvczI7CisgIGludCBzaXplX3Bp ZF90OworICBpbnQgc2l6ZV93aW5zaXplOworICBpbnQgc2l6ZV9jaGFyOwor ICBpbnQgc2l6ZV9zZXJpYWxfc3RydWN0OworICBpbnQgc2l6ZV9zZXJpYWxf aWNvdW50ZXJfc3RydWN0OworICBpbnQgc2l6ZV9oYXllc19lc3BfY29uZmln OworCisgIC8qIHRoZSB2YWx1ZXMgb2YgdGhlIHNlY29uZCBhcmd1bWVudCBv ZiBzeXN0ZW0gY2FsbCAic3lzX2lvY3RsIi4gKi8KKyAgaW50IGlvY3RsX1RD R0VUUzsKKyAgaW50IGlvY3RsX1RDU0VUUzsKKyAgaW50IGlvY3RsX1RDU0VU U1c7CisgIGludCBpb2N0bF9UQ1NFVFNGOworICBpbnQgaW9jdGxfVENHRVRB OworICBpbnQgaW9jdGxfVENTRVRBOworICBpbnQgaW9jdGxfVENTRVRBVzsK KyAgaW50IGlvY3RsX1RDU0VUQUY7CisgIGludCBpb2N0bF9UQ1NCUks7Cisg IGludCBpb2N0bF9UQ1hPTkM7CisgIGludCBpb2N0bF9UQ0ZMU0g7CisgIGlu dCBpb2N0bF9USU9DRVhDTDsKKyAgaW50IGlvY3RsX1RJT0NOWENMOworICBp bnQgaW9jdGxfVElPQ1NDVFRZOworICBpbnQgaW9jdGxfVElPQ0dQR1JQOwor ICBpbnQgaW9jdGxfVElPQ1NQR1JQOworICBpbnQgaW9jdGxfVElPQ09VVFE7 CisgIGludCBpb2N0bF9USU9DU1RJOworICBpbnQgaW9jdGxfVElPQ0dXSU5T WjsKKyAgaW50IGlvY3RsX1RJT0NTV0lOU1o7CisgIGludCBpb2N0bF9USU9D TUdFVDsKKyAgaW50IGlvY3RsX1RJT0NNQklTOworICBpbnQgaW9jdGxfVElP Q01CSUM7CisgIGludCBpb2N0bF9USU9DTVNFVDsKKyAgaW50IGlvY3RsX1RJ T0NHU09GVENBUjsKKyAgaW50IGlvY3RsX1RJT0NTU09GVENBUjsKKyAgaW50 IGlvY3RsX0ZJT05SRUFEOworICBpbnQgaW9jdGxfVElPQ0lOUTsKKyAgaW50 IGlvY3RsX1RJT0NMSU5VWDsKKyAgaW50IGlvY3RsX1RJT0NDT05TOworICBp bnQgaW9jdGxfVElPQ0dTRVJJQUw7CisgIGludCBpb2N0bF9USU9DU1NFUklB TDsKKyAgaW50IGlvY3RsX1RJT0NQS1Q7CisgIGludCBpb2N0bF9GSU9OQklP OworICBpbnQgaW9jdGxfVElPQ05PVFRZOworICBpbnQgaW9jdGxfVElPQ1NF VEQ7CisgIGludCBpb2N0bF9USU9DR0VURDsKKyAgaW50IGlvY3RsX1RDU0JS S1A7CisgIGludCBpb2N0bF9USU9DVFRZR1NUUlVDVDsKKyAgaW50IGlvY3Rs X1RJT0NTQlJLOworICBpbnQgaW9jdGxfVElPQ0NCUks7CisgIGludCBpb2N0 bF9USU9DR1NJRDsKKyAgaW50IGlvY3RsX1RDR0VUUzI7CisgIGludCBpb2N0 bF9UQ1NFVFMyOworICBpbnQgaW9jdGxfVENTRVRTVzI7CisgIGludCBpb2N0 bF9UQ1NFVFNGMjsKKyAgaW50IGlvY3RsX1RJT0NHUFROOworICBpbnQgaW9j dGxfVElPQ1NQVExDSzsKKyAgaW50IGlvY3RsX0ZJT05DTEVYOworICBpbnQg aW9jdGxfRklPQ0xFWDsKKyAgaW50IGlvY3RsX0ZJT0FTWU5DOworICBpbnQg aW9jdGxfVElPQ1NFUkNPTkZJRzsKKyAgaW50IGlvY3RsX1RJT0NTRVJHV0lM RDsKKyAgaW50IGlvY3RsX1RJT0NTRVJTV0lMRDsKKyAgaW50IGlvY3RsX1RJ T0NHTENLVFJNSU9TOworICBpbnQgaW9jdGxfVElPQ1NMQ0tUUk1JT1M7Cisg IGludCBpb2N0bF9USU9DU0VSR1NUUlVDVDsKKyAgaW50IGlvY3RsX1RJT0NT RVJHRVRMU1I7CisgIGludCBpb2N0bF9USU9DU0VSR0VUTVVMVEk7CisgIGlu dCBpb2N0bF9USU9DU0VSU0VUTVVMVEk7CisgIGludCBpb2N0bF9USU9DTUlX QUlUOworICBpbnQgaW9jdGxfVElPQ0dJQ09VTlQ7CisgIGludCBpb2N0bF9U SU9DR0hBWUVTRVNQOworICBpbnQgaW9jdGxfVElPQ1NIQVlFU0VTUDsKKyAg aW50IGlvY3RsX0ZJT1FTSVpFOworCisgIC8qIFRoZSBudW1iZXIgb2YgdGhl IHJlZ2lzdGVycyB0aGF0IHVzZSB0byBiZSB0aGUgYXJndW1lbnRzIG9mIHN5 c3RlbSBjYWxsLiAqLworICBpbnQgYXJnMTsKKyAgaW50IGFyZzI7CisgIGlu dCBhcmczOworICBpbnQgYXJnNDsKKyAgaW50IGFyZzU7Cit9IGxpbnV4X3Jl Y29yZF90ZGVwX3Q7CisKK2V4dGVybiBpbnQgcmVjb3JkX2xpbnV4X3N5c3Rl bV9jYWxsIChpbnQgbnVtLCBsaW51eF9yZWNvcmRfdGRlcF90ICogdGRlcCk7 CisKKyNlbmRpZiAvKiBfTElOVVhfUkVDT1JEX0hfICovCg== ------=_Part_24887_11537914.1225957727079--