From: "Tan Swee Heng" Subject: [PATCH 3/3] [eSTREAM] salsa20: Salsa20 stream cipher algorithm Date: Tue, 13 Nov 2007 04:01:12 +0800 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_8842_17744582.1194897672395" To: "Linux Crypto" Return-path: Received: from wa-out-1112.google.com ([209.85.146.183]:61557 "EHLO wa-out-1112.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755122AbXKLUBN (ORCPT ); Mon, 12 Nov 2007 15:01:13 -0500 Received: by wa-out-1112.google.com with SMTP id v27so1650038wah for ; Mon, 12 Nov 2007 12:01:13 -0800 (PST) Sender: linux-crypto-owner@vger.kernel.org List-Id: linux-crypto.vger.kernel.org ------=_Part_8842_17744582.1194897672395 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline This patch implements the Salsa20 cipher algorithm. It has been reworked to support the crypto_estream_* type instead of crypto_cipher_*. ------=_Part_8842_17744582.1194897672395 Content-Type: text/plain; name=patch3-salsa20.txt Content-Transfer-Encoding: base64 X-Attachment-Id: f_f8xf5ka40 Content-Disposition: attachment; filename=patch3-salsa20.txt ZGlmZiAtLWdpdCBhL2NyeXB0by9LY29uZmlnIGIvY3J5cHRvL0tjb25maWcKaW5kZXggMjdhODAy Zi4uZWI3YjEzMiAxMDA2NDQKLS0tIGEvY3J5cHRvL0tjb25maWcKKysrIGIvY3J5cHRvL0tjb25m aWcKQEAgLTQ2Nyw2ICs0NjcsMTkgQEAgY29uZmlnIENSWVBUT19TRUVECiAJICBTZWUgYWxzbzoK IAkgIDxodHRwOi8vd3d3Lmtpc2Eub3Iua3Iva2lzYS9zZWVkL2pzcC9zZWVkX2VuZy5qc3A+CiAK K2NvbmZpZyBDUllQVE9fU0FMU0EyMAorCXRyaXN0YXRlICJTYWxzYTIwIHN0cmVhbSBjaXBoZXIg YWxnb3JpdGhtIChFWFBFUklNRU5UQUwpIgorCWRlcGVuZHMgb24gRVhQRVJJTUVOVEFMCisJc2Vs ZWN0IENSWVBUT19BTEdBUEkKKwlzZWxlY3QgQ1JZUFRPX0VTVFJFQU0KKwloZWxwCisJICBTYWxz YTIwIHN0cmVhbSBjaXBoZXIgYWxnb3JpdGhtLgorCisJICBTYWxzYTIwIGlzIGEgc3RyZWFtIGNp cGhlciBzdWJtaXR0ZWQgdG8gZVNUUkVBTSwgdGhlIEVDUllQVAorCSAgU3RyZWFtIENpcGhlciBQ cm9qZWN0LiBTZWUgPGh0dHA6Ly93d3cuZWNyeXB0LmV1Lm9yZy9zdHJlYW0vPgorCisJICBUaGUg U2Fsc2EyMCBzdHJlYW0gY2lwaGVyIGFsZ29yaXRobSBpcyBkZXNpZ25lZCBieSBEYW5pZWwgSi4K KwkgIEJlcm5zdGVpbiA8ZGpiQGNyLnlwLnRvPi4gU2VlIDxodHRwOi8vY3IueXAudG8vc251ZmZs ZS5odG1sPgogCiBjb25maWcgQ1JZUFRPX0RFRkxBVEUKIAl0cmlzdGF0ZSAiRGVmbGF0ZSBjb21w cmVzc2lvbiBhbGdvcml0aG0iCmRpZmYgLS1naXQgYS9jcnlwdG8vTWFrZWZpbGUgYi9jcnlwdG8v TWFrZWZpbGUKaW5kZXggZjk1MjA2Yi4uYWRiZTI2YSAxMDA2NDQKLS0tIGEvY3J5cHRvL01ha2Vm aWxlCisrKyBiL2NyeXB0by9NYWtlZmlsZQpAQCAtNTEsNiArNTEsNyBAQCBvYmotJChDT05GSUdf Q1JZUFRPX1RFQSkgKz0gdGVhLm8KIG9iai0kKENPTkZJR19DUllQVE9fS0hBWkFEKSArPSBraGF6 YWQubwogb2JqLSQoQ09ORklHX0NSWVBUT19BTlVCSVMpICs9IGFudWJpcy5vCiBvYmotJChDT05G SUdfQ1JZUFRPX1NFRUQpICs9IHNlZWQubworb2JqLSQoQ09ORklHX0NSWVBUT19TQUxTQTIwKSAr PSBzYWxzYTIwLm8KIG9iai0kKENPTkZJR19DUllQVE9fREVGTEFURSkgKz0gZGVmbGF0ZS5vCiBv YmotJChDT05GSUdfQ1JZUFRPX01JQ0hBRUxfTUlDKSArPSBtaWNoYWVsX21pYy5vCiBvYmotJChD T05GSUdfQ1JZUFRPX0NSQzMyQykgKz0gY3JjMzJjLm8KZGlmZiAtLWdpdCBhL2NyeXB0by9zYWxz YTIwLmMgYi9jcnlwdG8vc2Fsc2EyMC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjZhZGY1NDAKLS0tIC9kZXYvbnVsbAorKysgYi9jcnlwdG8vc2Fsc2EyMC5jCkBAIC0wLDAg KzEsMjI1IEBACisvKgorICogU2Fsc2EyMDogU2Fsc2EyMCBzdHJlYW0gY2lwaGVyIGFsZ29yaXRo bQorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNyBUYW4gU3dlZSBIZW5nIDx0aGVzd2VlaGVuZ0Bn bWFpbC5jb20+CisgKgorICogRGVyaXZlZCBmcm9tOgorICogLSBzYWxzYTIwLmM6IFB1YmxpYyBk b21haW4gQyBjb2RlIGJ5IERhbmllbCBKLiBCZXJuc3RlaW4gPGRqYkBjci55cC50bz4KKyAqCisg KiBTYWxzYTIwIGlzIGEgc3RyZWFtIGNpcGhlciBjYW5kaWRhdGUgaW4gZVNUUkVBTSwgdGhlIEVD UllQVCBTdHJlYW0KKyAqIENpcGhlciBQcm9qZWN0LiBJdCBpcyBkZXNpZ25lZCBieSBEYW5pZWwg Si4gQmVybnN0ZWluIDxkamJAY3IueXAudG8+LgorICogTW9yZSBpbmZvcm1hdGlvbiBhYm91dCBl U1RSRUFNIGFuZCBTYWxzYTIwIGNhbiBiZSBmb3VuZCBoZXJlOgorICogICBodHRwOi8vd3d3LmVj cnlwdC5ldS5vcmcvc3RyZWFtLworICogICBodHRwOi8vY3IueXAudG8vc251ZmZsZS5odG1sCisg KgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlCisgKiBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv cHRpb24pCisgKiBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKi8KKworI2luY2x1ZGUgPGxpbnV4 L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnJu by5oPgorI2luY2x1ZGUgPGxpbnV4L2NyeXB0by5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+ CisjaW5jbHVkZSA8Y3J5cHRvL2FsZ2FwaS5oPgorI2luY2x1ZGUgPGFzbS9ieXRlb3JkZXIuaD4K KworI2RlZmluZSBTQUxTQTIwX0lWX1NJWkUgICAgICAgIDgKKyNkZWZpbmUgU0FMU0EyMF9CTE9D S19TSVpFICAgIDY0CisjZGVmaW5lIFNBTFNBMjBfTUlOX0tFWV9TSVpFICAxNgorI2RlZmluZSBT QUxTQTIwX01BWF9LRVlfU0laRSAgMzIKKworLyoKKyAqIFN0YXJ0IG9mIGNvZGUgdGFrZW4gZnJv bSBELiBKLiBCZXJuc3RlaW4ncyByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24uCisgKiBXaXRoIHNv bWUgbW9kaWZpY2F0aW9ucyBtYWRlIHRvIHN1aXQgb3VyIG5lZWRzLgorICovCisKKy8qCitzYWxz YTIwLXJlZi5jIHZlcnNpb24gMjAwNTExMTgKK0QuIEouIEJlcm5zdGVpbgorUHVibGljIGRvbWFp bi4KKyovCisKKyNkZWZpbmUgUk9UQVRFKHYsbikgKCgodikgPDwgKG4pKSB8ICgodikgPj4gKDMy IC0gKG4pKSkpCisjZGVmaW5lIFhPUih2LHcpICgodikgXiAodykpCisjZGVmaW5lIFBMVVModix3 KSAoKCh2KSArICh3KSkpCisjZGVmaW5lIFBMVVNPTkUodikgKFBMVVMoKHYpLDEpKQorI2RlZmlu ZSBVMzJUTzhfTElUVExFKHAsIHYpIFwKKwl7IChwKVswXSA9ICh2ID4+ICAwKSAmIDB4ZmY7IChw KVsxXSA9ICh2ID4+ICA4KSAmIDB4ZmY7IFwKKwkgIChwKVsyXSA9ICh2ID4+IDE2KSAmIDB4ZmY7 IChwKVszXSA9ICh2ID4+IDI0KSAmIDB4ZmY7IH0KKyNkZWZpbmUgVThUTzMyX0xJVFRMRShwKSAg IFwKKwkoKCh1MzIpKChwKVswXSkgICAgICApIHwgKCh1MzIpKChwKVsxXSkgPDwgIDgpIHwgXAor CSAoKHUzMikoKHApWzJdKSA8PCAxNikgfCAoKHUzMikoKHApWzNdKSA8PCAyNCkgICApCisKK3N0 cnVjdCBzYWxzYTIwX2N0eAoreworCXUzMiBpbnB1dFsxNl07Cit9OworCitzdGF0aWMgdm9pZCBz YWxzYTIwX3dvcmR0b2J5dGUodTggb3V0cHV0WzY0XSwgY29uc3QgdTMyIGlucHV0WzE2XSkKK3sK Kwl1MzIgeFsxNl07CisJaW50IGk7CisKKwltZW1jcHkoeCwgaW5wdXQsIHNpemVvZih4KSk7CisJ Zm9yIChpID0gMjA7aSA+IDA7aSAtPSAyKSB7CisJCXhbIDRdID0gWE9SKHhbIDRdLFJPVEFURShQ TFVTKHhbIDBdLHhbMTJdKSwgNykpOworCQl4WyA4XSA9IFhPUih4WyA4XSxST1RBVEUoUExVUyh4 WyA0XSx4WyAwXSksIDkpKTsKKwkJeFsxMl0gPSBYT1IoeFsxMl0sUk9UQVRFKFBMVVMoeFsgOF0s eFsgNF0pLDEzKSk7CisJCXhbIDBdID0gWE9SKHhbIDBdLFJPVEFURShQTFVTKHhbMTJdLHhbIDhd KSwxOCkpOworCQl4WyA5XSA9IFhPUih4WyA5XSxST1RBVEUoUExVUyh4WyA1XSx4WyAxXSksIDcp KTsKKwkJeFsxM10gPSBYT1IoeFsxM10sUk9UQVRFKFBMVVMoeFsgOV0seFsgNV0pLCA5KSk7CisJ CXhbIDFdID0gWE9SKHhbIDFdLFJPVEFURShQTFVTKHhbMTNdLHhbIDldKSwxMykpOworCQl4WyA1 XSA9IFhPUih4WyA1XSxST1RBVEUoUExVUyh4WyAxXSx4WzEzXSksMTgpKTsKKwkJeFsxNF0gPSBY T1IoeFsxNF0sUk9UQVRFKFBMVVMoeFsxMF0seFsgNl0pLCA3KSk7CisJCXhbIDJdID0gWE9SKHhb IDJdLFJPVEFURShQTFVTKHhbMTRdLHhbMTBdKSwgOSkpOworCQl4WyA2XSA9IFhPUih4WyA2XSxS T1RBVEUoUExVUyh4WyAyXSx4WzE0XSksMTMpKTsKKwkJeFsxMF0gPSBYT1IoeFsxMF0sUk9UQVRF KFBMVVMoeFsgNl0seFsgMl0pLDE4KSk7CisJCXhbIDNdID0gWE9SKHhbIDNdLFJPVEFURShQTFVT KHhbMTVdLHhbMTFdKSwgNykpOworCQl4WyA3XSA9IFhPUih4WyA3XSxST1RBVEUoUExVUyh4WyAz XSx4WzE1XSksIDkpKTsKKwkJeFsxMV0gPSBYT1IoeFsxMV0sUk9UQVRFKFBMVVMoeFsgN10seFsg M10pLDEzKSk7CisJCXhbMTVdID0gWE9SKHhbMTVdLFJPVEFURShQTFVTKHhbMTFdLHhbIDddKSwx OCkpOworCQl4WyAxXSA9IFhPUih4WyAxXSxST1RBVEUoUExVUyh4WyAwXSx4WyAzXSksIDcpKTsK KwkJeFsgMl0gPSBYT1IoeFsgMl0sUk9UQVRFKFBMVVMoeFsgMV0seFsgMF0pLCA5KSk7CisJCXhb IDNdID0gWE9SKHhbIDNdLFJPVEFURShQTFVTKHhbIDJdLHhbIDFdKSwxMykpOworCQl4WyAwXSA9 IFhPUih4WyAwXSxST1RBVEUoUExVUyh4WyAzXSx4WyAyXSksMTgpKTsKKwkJeFsgNl0gPSBYT1Io eFsgNl0sUk9UQVRFKFBMVVMoeFsgNV0seFsgNF0pLCA3KSk7CisJCXhbIDddID0gWE9SKHhbIDdd LFJPVEFURShQTFVTKHhbIDZdLHhbIDVdKSwgOSkpOworCQl4WyA0XSA9IFhPUih4WyA0XSxST1RB VEUoUExVUyh4WyA3XSx4WyA2XSksMTMpKTsKKwkJeFsgNV0gPSBYT1IoeFsgNV0sUk9UQVRFKFBM VVMoeFsgNF0seFsgN10pLDE4KSk7CisJCXhbMTFdID0gWE9SKHhbMTFdLFJPVEFURShQTFVTKHhb MTBdLHhbIDldKSwgNykpOworCQl4WyA4XSA9IFhPUih4WyA4XSxST1RBVEUoUExVUyh4WzExXSx4 WzEwXSksIDkpKTsKKwkJeFsgOV0gPSBYT1IoeFsgOV0sUk9UQVRFKFBMVVMoeFsgOF0seFsxMV0p LDEzKSk7CisJCXhbMTBdID0gWE9SKHhbMTBdLFJPVEFURShQTFVTKHhbIDldLHhbIDhdKSwxOCkp OworCQl4WzEyXSA9IFhPUih4WzEyXSxST1RBVEUoUExVUyh4WzE1XSx4WzE0XSksIDcpKTsKKwkJ eFsxM10gPSBYT1IoeFsxM10sUk9UQVRFKFBMVVMoeFsxMl0seFsxNV0pLCA5KSk7CisJCXhbMTRd ID0gWE9SKHhbMTRdLFJPVEFURShQTFVTKHhbMTNdLHhbMTJdKSwxMykpOworCQl4WzE1XSA9IFhP Uih4WzE1XSxST1RBVEUoUExVUyh4WzE0XSx4WzEzXSksMTgpKTsKKwl9CisJZm9yIChpID0gMDtp IDwgMTY7KytpKSB4W2ldID0gUExVUyh4W2ldLCBpbnB1dFtpXSk7CisJZm9yIChpID0gMDtpIDwg MTY7KytpKSBVMzJUTzhfTElUVExFKG91dHB1dCArIDQgKiBpLHhbaV0pOworfQorCitzdGF0aWMg Y29uc3QgY2hhciBzaWdtYVsxNl0gPSAiZXhwYW5kIDMyLWJ5dGUgayI7CitzdGF0aWMgY29uc3Qg Y2hhciB0YXVbMTZdID0gImV4cGFuZCAxNi1ieXRlIGsiOworCitzdGF0aWMgdm9pZCBzYWxzYTIw X2tleXNldHVwKHN0cnVjdCBzYWxzYTIwX2N0eCAqY3R4LCBjb25zdCB1OCAqaywgdTMyIGtieXRl cykKK3sKKwljb25zdCBjaGFyICpjb25zdGFudHM7CisKKwljdHgtPmlucHV0WzFdID0gVThUTzMy X0xJVFRMRShrICsgMCk7CisJY3R4LT5pbnB1dFsyXSA9IFU4VE8zMl9MSVRUTEUoayArIDQpOwor CWN0eC0+aW5wdXRbM10gPSBVOFRPMzJfTElUVExFKGsgKyA4KTsKKwljdHgtPmlucHV0WzRdID0g VThUTzMyX0xJVFRMRShrICsgMTIpOworCWlmIChrYnl0ZXMgPT0gMzIpIHsgLyogcmVjb21tZW5k ZWQgKi8KKwkJayArPSAxNjsKKwkJY29uc3RhbnRzID0gc2lnbWE7CisJfSBlbHNlIHsgLyoga2J5 dGVzID09IDE2ICovCisJCWNvbnN0YW50cyA9IHRhdTsKKwl9CisJY3R4LT5pbnB1dFsxMV0gPSBV OFRPMzJfTElUVExFKGsgKyAwKTsKKwljdHgtPmlucHV0WzEyXSA9IFU4VE8zMl9MSVRUTEUoayAr IDQpOworCWN0eC0+aW5wdXRbMTNdID0gVThUTzMyX0xJVFRMRShrICsgOCk7CisJY3R4LT5pbnB1 dFsxNF0gPSBVOFRPMzJfTElUVExFKGsgKyAxMik7CisJY3R4LT5pbnB1dFswXSA9IFU4VE8zMl9M SVRUTEUoY29uc3RhbnRzICsgMCk7CisJY3R4LT5pbnB1dFs1XSA9IFU4VE8zMl9MSVRUTEUoY29u c3RhbnRzICsgNCk7CisJY3R4LT5pbnB1dFsxMF0gPSBVOFRPMzJfTElUVExFKGNvbnN0YW50cyAr IDgpOworCWN0eC0+aW5wdXRbMTVdID0gVThUTzMyX0xJVFRMRShjb25zdGFudHMgKyAxMik7Cit9 CisKK3N0YXRpYyB2b2lkIHNhbHNhMjBfaXZzZXR1cChzdHJ1Y3Qgc2Fsc2EyMF9jdHggKmN0eCwg Y29uc3QgdTggKml2KQoreworCWN0eC0+aW5wdXRbNl0gPSBVOFRPMzJfTElUVExFKGl2ICsgMCk7 CisJY3R4LT5pbnB1dFs3XSA9IFU4VE8zMl9MSVRUTEUoaXYgKyA0KTsKKwljdHgtPmlucHV0Wzhd ID0gMDsKKwljdHgtPmlucHV0WzldID0gMDsKK30KKworc3RhdGljIHZvaWQgc2Fsc2EyMF9lbmNy eXB0X2Jsb2NrKHN0cnVjdCBzYWxzYTIwX2N0eCAqY3R4LCB1OCAqZHN0LAorCQkJCSAgY29uc3Qg dTggKnNyYykKK3sKKwl1OCBrc1tTQUxTQTIwX0JMT0NLX1NJWkVdOworICAgICAgICB1MzIgKmQg PSAodTMyICopZHN0OworICAgICAgICB1MzIgKnMgPSAodTMyICopc3JjOworICAgICAgICB1MzIg KmsgPSAodTMyICopa3M7CisJaW50ICBpOworCisJc2Fsc2EyMF93b3JkdG9ieXRlKGtzLCBjdHgt PmlucHV0KTsKKworCWN0eC0+aW5wdXRbOF0gPSBQTFVTT05FKGN0eC0+aW5wdXRbOF0pOworCWlm ICghY3R4LT5pbnB1dFs4XSkKKwkJY3R4LT5pbnB1dFs5XSA9IFBMVVNPTkUoY3R4LT5pbnB1dFs5 XSk7CisKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IFNBTFNBMjBfQkxPQ0tfU0laRS80OyBpKyss IGQrKywgcysrLCBrKyspCisgICAgICAgICAgICAgICAgKmQgPSAqcyBeICprOworfQorCisvKgor ICogRW5kIG9mIGNvZGUgdGFrZW4gZnJvbSBELiBKLiBCZXJuc3RlaW4ncyByZWZlcmVuY2UgaW1w bGVtZW50YXRpb24uCisgKi8KKworc3RhdGljIGludCBzZXRrZXkoc3RydWN0IGNyeXB0b190Zm0g KnRmbSwgY29uc3QgdTggKmtleSwKKwkJICB1bnNpZ25lZCBpbnQga2V5c2l6ZSwgdW5zaWduZWQg aW50IGl2c2l6ZSkKK3sKKwlzdHJ1Y3Qgc2Fsc2EyMF9jdHggKmN0eCA9IGNyeXB0b190Zm1fY3R4 KHRmbSk7CisJc2Fsc2EyMF9rZXlzZXR1cChjdHgsIGtleSwga2V5c2l6ZSk7CisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgc2V0aXYoc3RydWN0IGNyeXB0b190Zm0gKnRmbSwgY29uc3QgdTgg Kml2KQoreworCXN0cnVjdCBzYWxzYTIwX2N0eCAqY3R4ID0gY3J5cHRvX3RmbV9jdHgodGZtKTsK KwlzYWxzYTIwX2l2c2V0dXAoY3R4LCBpdik7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lk IGVuY3J5cHRfYmxvY2soc3RydWN0IGNyeXB0b190Zm0gKnRmbSwgdTggKmRzdCwKKwkJCSAgY29u c3QgdTggKnNyYykKK3sKKwlzdHJ1Y3Qgc2Fsc2EyMF9jdHggKmN0eCA9IGNyeXB0b190Zm1fY3R4 KHRmbSk7CisJc2Fsc2EyMF9lbmNyeXB0X2Jsb2NrKGN0eCwgZHN0LCBzcmMpOworfQorCitzdGF0 aWMgc3RydWN0IGNyeXB0b19hbGcgYWxnID0geworCS5jcmFfbmFtZSAgICAgICAgICAgPSAgICJz YWxzYTIwIiwKKwkuY3JhX2RyaXZlcl9uYW1lICAgID0gICAic2Fsc2EyMC1nZW5lcmljIiwKKwku Y3JhX3ByaW9yaXR5ICAgICAgID0gICAxMDAsCisJLmNyYV9mbGFncyAgICAgICAgICA9ICAgQ1JZ UFRPX0FMR19UWVBFX0VTVFJFQU0sCisJLmNyYV90eXBlICAgICAgICAgICA9ICAgJmNyeXB0b19l c3RyZWFtX3R5cGUsCisJLmNyYV9ibG9ja3NpemUgICAgICA9ICAgU0FMU0EyMF9CTE9DS19TSVpF LAorCS5jcmFfY3R4c2l6ZSAgICAgICAgPSAgIHNpemVvZihzdHJ1Y3Qgc2Fsc2EyMF9jdHgpLAor CS5jcmFfYWxpZ25tYXNrICAgICAgPQkzLAorCS5jcmFfbW9kdWxlICAgICAgICAgPSAgIFRISVNf TU9EVUxFLAorCS5jcmFfbGlzdCAgICAgICAgICAgPSAgIExJU1RfSEVBRF9JTklUKGFsZy5jcmFf bGlzdCksCisJLmNyYV91ICAgICAgICAgICAgICA9ICAgeworCQkuZXN0cmVhbSA9IHsKKwkJCS5t aW5fa2V5c2l6ZSAgICA9ICAgU0FMU0EyMF9NSU5fS0VZX1NJWkUsCisJCQkubWF4X2tleXNpemUg ICAgPSAgIFNBTFNBMjBfTUFYX0tFWV9TSVpFLAorCQkJLm1pbl9pdnNpemUgICAgID0gICBTQUxT QTIwX0lWX1NJWkUsCisJCQkubWF4X2l2c2l6ZSAgICAgPSAgIFNBTFNBMjBfSVZfU0laRSwKKwkJ CS5zZXRrZXkgICAgICAgICA9ICAgc2V0a2V5LAorCQkJLnNldGl2ICAgICAgICAgID0gICBzZXRp diwKKwkJCS5lbmNyeXB0X2Jsb2NrICA9ICAgZW5jcnlwdF9ibG9jaywKKwkJfQorCX0KK307CisK K3N0YXRpYyBpbnQgX19pbml0IGluaXQodm9pZCkKK3sKKwlyZXR1cm4gY3J5cHRvX3JlZ2lzdGVy X2FsZygmYWxnKTsKK30KKworc3RhdGljIHZvaWQgX19leGl0IGZpbmkodm9pZCkKK3sKKwljcnlw dG9fdW5yZWdpc3Rlcl9hbGcoJmFsZyk7Cit9CisKK21vZHVsZV9pbml0KGluaXQpOworbW9kdWxl X2V4aXQoZmluaSk7CisKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9ERVNDUklQVElP TiAoIlNhbHNhMjAgc3RyZWFtIGNpcGhlciBhbGdvcml0aG0iKTsKKwpkaWZmIC0tZ2l0IGEvY3J5 cHRvL3RjcnlwdC5jIGIvY3J5cHRvL3RjcnlwdC5jCmluZGV4IGQ3YmQwYzIuLjhhMmYwNTQgMTAw NjQ0Ci0tLSBhL2NyeXB0by90Y3J5cHQuYworKysgYi9jcnlwdG8vdGNyeXB0LmMKQEAgLTc4LDcg Kzc4LDcgQEAgc3RhdGljIGNoYXIgKmNoZWNrW10gPSB7CiAJInR3b2Zpc2giLCAic2VycGVudCIs ICJzaGEzODQiLCAic2hhNTEyIiwgIm1kNCIsICJhZXMiLCAiY2FzdDYiLAogCSJhcmM0IiwgIm1p Y2hhZWxfbWljIiwgImRlZmxhdGUiLCAiY3JjMzJjIiwgInRlYSIsICJ4dGVhIiwKIAkia2hhemFk IiwgIndwNTEyIiwgIndwMzg0IiwgIndwMjU2IiwgInRuZXByZXMiLCAieGV0YSIsICAiZmNyeXB0 IiwKLQkiY2FtZWxsaWEiLCAic2VlZCIsIE5VTEwKKwkiY2FtZWxsaWEiLCAic2VlZCIsICJzYWxz YTIwIiwgTlVMTAogfTsKIAogc3RhdGljIHZvaWQgaGV4ZHVtcCh1bnNpZ25lZCBjaGFyICpidWYs IHVuc2lnbmVkIGludCBsZW4pCkBAIC0xMjkwLDYgKzEyOTAsMTIgQEAgc3RhdGljIHZvaWQgZG9f dGVzdCh2b2lkKQogCQkJICAgIENBTUVMTElBX0NCQ19ERUNfVEVTVF9WRUNUT1JTKTsKIAkJYnJl YWs7CiAKKwljYXNlIDM0OgorCQl0ZXN0X2NpcGhlcigic3RyZWFtKHNhbHNhMjAsOCkiLCBFTkNS WVBULAorCQkJICAgIHNhbHNhMjBfc3RyZWFtX2VuY190dl90ZW1wbGF0ZSwKKwkJCSAgICBTQUxT QTIwX1NUUkVBTV9FTkNfVEVTVF9WRUNUT1JTKTsKKwkJYnJlYWs7CisKIAljYXNlIDEwMDoKIAkJ dGVzdF9oYXNoKCJobWFjKG1kNSkiLCBobWFjX21kNV90dl90ZW1wbGF0ZSwKIAkJCSAgSE1BQ19N RDVfVEVTVF9WRUNUT1JTKTsKZGlmZiAtLWdpdCBhL2NyeXB0by90Y3J5cHQuaCBiL2NyeXB0by90 Y3J5cHQuaAppbmRleCBmN2Y5YjIzLi5kYjNhNDMyIDEwMDY0NAotLS0gYS9jcnlwdG8vdGNyeXB0 LmgKKysrIGIvY3J5cHRvL3RjcnlwdC5oCkBAIC00NTAyLDYgKzQ1MDIsMTY3IEBAIHN0YXRpYyBz dHJ1Y3QgY2lwaGVyX3Rlc3R2ZWMgc2VlZF9kZWNfdHZfdGVtcGxhdGVbXSA9IHsKIAl9CiB9Owog CisjZGVmaW5lIFNBTFNBMjBfU1RSRUFNX0VOQ19URVNUX1ZFQ1RPUlMgNAorc3RhdGljIHN0cnVj dCBjaXBoZXJfdGVzdHZlYyBzYWxzYTIwX3N0cmVhbV9lbmNfdHZfdGVtcGxhdGVbXSA9IHsKKwkv KgorCSogVGVzdHZlY3RvcnMgZnJvbSB2ZXJpZmllZC50ZXN0LXZlY3RvcnMgc3VibWl0dGVkIHRv IEVDUllQVC4KKwkqIFRoZXkgYXJlIHRydW5jYXRlZCB0byBzaXplIDM5LCA2NCwgMTExLCAxMjkg dG8gdGVzdCBhIHZhcmlldHkKKwkqIG9mIGlucHV0IGxlbmd0aC4KKwkqLworCXsgLyogU2V0IDMs IHZlY3RvciAwICovCisJCS5rZXkJPSB7CisJCQkgICAgMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywg MHgwNCwgMHgwNSwgMHgwNiwgMHgwNywKKwkJCSAgICAweDA4LCAweDA5LCAweDBBLCAweDBCLCAw eDBDLCAweDBELCAweDBFLCAweDBGCisJCQkgIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pdiAgICAg PSB7IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAgfSwKKwkJ LmlucHV0CT0geworCQkJICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsCisJCQkgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwKKwkJCSAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw LCAweDAwLAorCQkJICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsCisJCQkgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwK KwkJCSAgfSwKKwkJLmlsZW4JPSAzOSwKKwkJLnJlc3VsdAk9IHsKKwkJCSAgICAweDJELCAweEQ1 LCAweEMzLCAweEY3LCAweEJBLCAweDJCLCAweDIwLCAweEY3LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4NjgsIDB4MDIsIDB4NDEsIDB4MEMsIDB4NjgsIDB4ODYsIDB4ODgsIDB4ODks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1QSwgMHhEOCwgMHhDMSwgMHhCRCwgMHg0 RSwgMHhBNiwgMHhDOSwgMHhCMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwLCAw eEZCLCAweDlCLCAweDkwLCAweEUyLCAweDEwLCAweDQ5LCAweEJGLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4NTgsIDB4M0YsIDB4NTIsIDB4NzksIDB4NzAsIDB4RUIsIDB4QzEsCisJ CQl9LAorCQkucmxlbgk9IDM5LAorCX0sIHsgLyogU2V0IDUsIHZlY3RvciAwICovCisJCS5rZXkJ PSB7CisJCQkgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MCwKKwkJCSAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw CisJCQkgIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pdiAgICAgPSB7IDB4ODAsIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAgfSwKKwkJLmlucHV0CT0geworCQkJICAgIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJCQkgICAgMHgw MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkJCSAgICAweDAw LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCQkJICAgIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJCQkgICAgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkJCSAgICAweDAwLCAw eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCQkJICAgIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJCQkgICAgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkJCSAgfSwKKwkJLmlsZW4J PSA2NCwKKwkJLnJlc3VsdAk9IHsKKwkJCSAgICAweEI2LCAweDZDLCAweDFFLCAweDQ0LCAweDQ2 LCAweERELCAweDk1LCAweDU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RTUsIDB4 NzgsIDB4RTIsIDB4MjMsIDB4QjAsIDB4QjcsIDB4NjgsIDB4MDEsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMHg3QiwgMHgyMywgMHhCMiwgMHg2NywgMHhCQiwgMHgwMiwgMHgzNCwgMHhB RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ2LCAweDI2LCAweEJGLCAweDQ0LCAw eDNGLCAweDIxLCAweDk3LCAweDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDMs IDB4NkYsIDB4QjEsIDB4OUYsIDB4RDAsIDB4RTgsIDB4ODYsIDB4NkYsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMHhDRCwgMHgwRCwgMHhFOSwgMHhBOSwgMHg1MywgMHg4RiwgMHg0QSwg MHgwOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweENBLCAweDlBLCAweEMwLCAweDcz LCAweDJFLCAweDMwLCAweEJDLCAweEY5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 OEUsIDB4NEYsIDB4MTMsIDB4RTQsIDB4QjksIDB4RTIsIDB4MDEsIDB4RDksCisJCQkgIH0sCisJ CS5ybGVuCT0gNjQsCisJfSwgeyAvKiBTZXQgMywgdmVjdG9yIDI3ICovCisJCS5rZXkJPSB7CisJ CQkgICAgMHgxQiwgMHgxQywgMHgxRCwgMHgxRSwgMHgxRiwgMHgyMCwgMHgyMSwgMHgyMiwKKwkJ CSAgICAweDIzLCAweDI0LCAweDI1LCAweDI2LCAweDI3LCAweDI4LCAweDI5LCAweDJBLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MkIsIDB4MkMsIDB4MkQsIDB4MkUsIDB4MkYsIDB4 MzAsIDB4MzEsIDB4MzIsCisJCQkgICAgMHgzMywgMHgzNCwgMHgzNSwgMHgzNiwgMHgzNywgMHgz OCwgMHgzOSwgMHgzQQorCQkJICB9LAorCQkua2xlbgk9IDMyLAorCQkuaXYgICAgID0geyAweDAw LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwIH0sCisJCS5pbnB1dAk9 IHsKKwkJCSAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw LAorCQkJICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs CisJCQkgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwK KwkJCSAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAor CQkJICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJ CQkgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkJ CSAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCQkJ ICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisKKwkJ CSAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCQkJ ICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJCQkg ICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkJCSAg ICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCQkJICAg IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJCQkgICAg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkJCSAgfSwKKwkJLmls ZW4JPSAxMTEsCisJCS5yZXN1bHQJPSB7CisJCQkgICAgMHhBRSwgMHgzOSwgMHg1MCwgMHg4RSwg MHhBQywgMHg5QSwgMHhFQywgMHhFNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEJG LCAweDk3LCAweEJCLCAweDIwLCAweEI5LCAweERFLCAweEU0LCAweDFGLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDB4ODcsIDB4RDksIDB4NDcsIDB4RjgsIDB4MjgsIDB4OTEsIDB4MzUs IDB4OTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhEQiwgMHg3MiwgMHhDQywgMHgy MywgMHgyOSwgMHg0OCwgMHg1NiwgMHg1RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDgzLCAweDdFLCAweDBCLCAweEYzLCAweDdELCAweDVELCAweDM4LCAweDdCLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4MkQsIDB4NzEsIDB4MDIsIDB4QjQsIDB4M0IsIDB4QjUsIDB4 RDgsIDB4MjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhCMCwgMHg0QSwgMHhERiwg MHgzQywgMHhFQywgMHhCNiwgMHhEOSwgMHgzQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAweDlCLCAweEE3LCAweDUyLCAweEJFLCAweEM1LCAweEQ0LCAweDUwLCAweDU5LAorCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSwgMHgxNCwgMHhCNCwgMHgwRSwgMHg0MCwgMHhF NiwgMHg1MywgMHhEMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzLCAweDlDLCAw eDVCLCAweEEwLCAweDkyLCAweDI5LCAweDZCLCAweDVFLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDB4OTYsIDB4NUIsIDB4MUUsIDB4MkYsIDB4RDMsIDB4QUMsIDB4QzEsIDB4OTIsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhCMSwgMHg0MSwgMHgzRiwgMHgxOSwgMHgyRiwg MHhDNCwgMHgzQiwgMHhDNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk1LCAweDQ2 LCAweDQ1LCAweDU0LCAweEU5LCAweDc1LCAweDAzLCAweDA4LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4NDQsIDB4QUYsIDB4RTUsIDB4OEEsIDB4ODEsIDB4MTIsIDB4MDksCisJCQkg IH0sCisJCS5ybGVuCT0gMTExLAorCisJfSwgeyAvKiBTZXQgNSwgdmVjdG9yIDI3ICovCisJCS5r ZXkJPSB7CisJCQkgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCwKKwkJCSAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw eDAwLAorCQkJICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsCisJCQkgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MAorCQkJICB9LAorCQkua2xlbgk9IDMyLAorCQkuaXYgICAgID0geyAweDAwLCAweDAwLCAweDAw LCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDAwIH0sCisJCS5pbnB1dAk9IHsKKwkJCSAgICAw eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCQkJICAgIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJCQkgICAgMHgw MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkJCSAgICAweDAw LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCQkJICAgIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJCQkgICAgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkJCSAgICAweDAwLCAw eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCQkJICAgIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisKKwkJCSAgICAweDAwLCAw eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCQkJICAgIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJCQkgICAgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkJCSAgICAweDAwLCAweDAw LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCQkJICAgIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJCQkgICAgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkJCSAgICAweDAwLCAweDAwLCAw eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCQkJICAgIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisKKwkJCSAgICAweDAwLAorCQkJICB9 LAorCQkuaWxlbgk9IDEyOSwKKwkJLnJlc3VsdAk9IHsKKwkJCSAgICAweEQyLCAweERCLCAweDFB LCAweDVDLCAweEYxLCAweEMxLCAweEFDLCAweERCLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDB4RTgsIDB4MUEsIDB4N0EsIDB4NDMsIDB4NDAsIDB4RUYsIDB4NTMsIDB4NDMsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHg1RSwgMHg3RiwgMHg0QiwgMHgxQSwgMHg1MCwgMHg1 MiwgMHgzRiwgMHg4RCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI4LCAweDNELCAw eENGLCAweDg1LCAweDFELCAweDY5LCAweDZFLCAweDYwLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDB4RjIsIDB4REUsIDB4NzQsIDB4NTYsIDB4MTgsIDB4MUIsIDB4ODQsIDB4MTAsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhENCwgMHg2MiwgMHhCQSwgMHg2MCwgMHg1MCwg MHhGMCwgMHg2MSwgMHhGMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFDLCAweDc4 LCAweDdGLCAweEMxLCAweDI0LCAweDM0LCAweEFGLCAweDU4LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDB4QkYsIDB4MkMsIDB4NTksIDB4Q0EsIDB4OTAsIDB4NzcsIDB4RjMsIDB4QjAs CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVCLCAweDRBLCAweERGLCAweDg5LCAw eENFLCAweDJDLCAweDJGLCAweEZDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4Njcs IDB4RjAsIDB4RTMsIDB4NDUsIDB4RTgsIDB4QjMsIDB4QjMsIDB4NzUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMHhBMCwgMHg5NSwgMHg3MSwgMHhBMSwgMHgyOSwgMHgzOSwgMHg5NCwg MHhDQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQ1LCAweDJGLCAweEJELCAweENC LCAweDEwLCAweEI2LCAweEJFLCAweDlGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 OEUsIDB4RjksIDB4QjIsIDB4MDEsIDB4MEEsIDB4NUEsIDB4MEEsIDB4QjcsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgMHg2QiwgMHg5RCwgMHg3MCwgMHg4RSwgMHg0QiwgMHhENiwgMHgy RiwgMHhDRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDJFLCAweDQwLCAweDQ4LCAw eDc1LCAweEU5LCAweEUyLCAweDIxLCAweDQ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg IDB4MEIsIDB4QzksIDB4QjYsIDB4QjUsIDB4NjYsIDB4QkMsIDB4OUEsIDB4NTksCisKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDVBLAorCQkJICB9LAorCQkucmxlbgk9IDEyOSwKKwl9 Cit9OworCiAvKgogICogQ29tcHJlc3Npb24gc3R1ZmYuCiAgKi8K ------=_Part_8842_17744582.1194897672395--