All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <1322204787.11718.1.camel@phoenix>

diff --git a/a/1.txt b/N1/1.txt
index 607d796..b7741d0 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -1,819 +1,1720 @@
-VGhpcyBwYXRjaCBjb252ZXJ0cyB0aGUgZHJpdmVycyBpbiBkcml2ZXJzL2h3bW9uLyogdG8gdXNl
-IHRoZQptb2R1bGVfaTJjX2RyaXZlcigpIG1hY3JvIHdoaWNoIG1ha2VzIHRoZSBjb2RlIHNtYWxs
-ZXIgYW5kIGEgYml0CnNpbXBsZXIuCgpDYzogQ29yZW50aW4gTGFiYmUgPGNvcmVudGluLmxhYmJl
-QGdlb21hdHlzLmZyPgpDYzogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KQ2M6ICJNYXJr
-IE0uIEhvZmZtYW4iIDxtaG9mZm1hbkBsaWdodGxpbmsuY29tPgpDYzogU3RldmUgR2xlbmRpbm5p
-bmcgPHN0ZXZlLmdsZW5kaW5uaW5nQHNtc2MuY29tPgpDYzogUmlrdSBWb2lwaW8gPHJpa3Uudm9p
-cGlvQGlraS5maT4KQ2M6IEd1aWxsYXVtZSBMaWduZXVsIDxndWlsbGF1bWUubGlnbmV1bEBnbWFp
-bC5jb20+CkNjOiBEYXZpZCBHZW9yZ2UgPGRhdmlkLmdlb3JnZUBza2EuYWMuemE+CkNjOiAiSGFu
-cyBKLiBLb2NoIiA8aGprQGhhbnNqa29jaC5kZT4KQ2M6IE1hcmMgSHVsc21hbiA8bS5odWxzbWFu
-QHR1ZGVsZnQubmw+CkNjOiBSdWRvbGYgTWFyZWsgPHIubWFyZWtAYXNzZW1ibGVyLmN6PgpTaWdu
-ZWQtb2ZmLWJ5OiBBeGVsIExpbiA8YXhlbC5saW5AZ21haWwuY29tPgotLS0KIGRyaXZlcnMvaHdt
-b24vYWQ3NDE0LmMgICAgICB8ICAgMTIgKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2FkNzQx
-OC5jICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWRtMTAyMS5jICAg
-ICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9hZG0xMDI1LmMgICAgIHwgICAx
-MyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2FkbTEwMjYuYyAgICAgfCAgIDEzICstLS0t
-LS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWRtMTAyOS5jICAgICB8ICAgMTggKy0tLS0tLS0tLS0t
-LS0tLS0tCiBkcml2ZXJzL2h3bW9uL2FkbTEwMzEuYyAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0K
-IGRyaXZlcnMvaHdtb24vYWRtOTI0MC5jICAgICB8ICAgMTQgKy0tLS0tLS0tLS0tLS0KIGRyaXZl
-cnMvaHdtb24vYWRzMTAxNS5jICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21v
-bi9hZHQ3NDExLmMgICAgIHwgICAxMiArLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWR0NzQ2
-Mi5jICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9hZHQ3NDcwLmMgICAg
-IHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2FkdDc0NzUuYyAgICAgfCAgIDEz
-ICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYW1jNjgyMS5jICAgICB8ICAgMTUgKy0tLS0t
-LS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2FzYjEwMC5jICAgICAgfCAgIDEzICstLS0tLS0tLS0t
-LS0KIGRyaXZlcnMvaHdtb24vYXR4cDEuYyAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJp
-dmVycy9od21vbi9kczE2MjEuYyAgICAgIHwgICAxNCArLS0tLS0tLS0tLS0tLQogZHJpdmVycy9o
-d21vbi9kczYyMC5jICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2Vt
-YzE0MDMuYyAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vZW1jMjEwMy5j
-ICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9lbWM2dzIwMS5jICAgIHwg
-ICAxMiArLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vZjc1Mzc1cy5jICAgICB8ICAgMTMgKy0t
-LS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9mc2NobWQuYyAgICAgIHwgICAxMyArLS0tLS0tLS0t
-LS0tCiBkcml2ZXJzL2h3bW9uL2c3NjBhLmMgICAgICAgfCAgIDE1ICstLS0tLS0tLS0tLS0tLQog
-ZHJpdmVycy9od21vbi9nbDUxOHNtLmMgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJz
-L2h3bW9uL2dsNTIwc20uYyAgICAgfCAgIDE1ICstLS0tLS0tLS0tLS0tLQogZHJpdmVycy9od21v
-bi9qYzQyLmMgICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2xpbmVh
-Z2UtcGVtLmMgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbG02My5jICAgICAg
-ICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9sbTczLmMgICAgICAgIHwgICAx
-NSArLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbG03NS5jICAgICAgICB8ICAgMTcgKy0t
-LS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbG03Ny5jICAgICAgICB8ICAgMTMgKy0tLS0t
-LS0tLS0tLQogZHJpdmVycy9od21vbi9sbTgwLmMgICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0t
-CiBkcml2ZXJzL2h3bW9uL2xtODMuYyAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZl
-cnMvaHdtb24vbG04NS5jICAgICAgICB8ICAgMTQgKy0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdt
-b24vbG04Ny5jICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9sbTkw
-LmMgICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2xtOTIuYyAgICAg
-ICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbG05My5jICAgICAgICB8ICAg
-MTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9sbTk1MjQxLmMgICAgIHwgICAxMyArLS0t
-LS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2xtOTUyNDUuYyAgICAgfCAgIDEzICstLS0tLS0tLS0t
-LS0KIGRyaXZlcnMvaHdtb24vbHRjNDE1MS5jICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJp
-dmVycy9od21vbi9sdGM0MjE1LmMgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3
-bW9uL2x0YzQyNDUuYyAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbHRj
-NDI2MS5jICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9tYXgxNjA2NS5j
-ICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL21heDE2MTkuYyAgICAgfCAg
-IDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbWF4MTY2OC5jICAgICB8ICAgMTMgKy0t
-LS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9tYXg2NjM5LmMgICAgIHwgICAxMyArLS0tLS0tLS0t
-LS0tCiBkcml2ZXJzL2h3bW9uL21heDY2NDIuYyAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRy
-aXZlcnMvaHdtb24vbWF4NjY1MC5jICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9o
-d21vbi9zaHQyMS5jICAgICAgIHwgICAyMyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVy
-cy9od21vbi9zbW02NjUuYyAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9u
-L3Ntc2M0N20xOTIuYyAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vdGhtYzUw
-LmMgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi90bXAxMDIuYyAgICAg
-IHwgICAxMiArLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vdG1wNDAxLmMgICAgICB8ICAgMTMg
-Ky0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi90bXA0MjEuYyAgICAgIHwgICAxMyArLS0tLS0t
-LS0tLS0tCiBkcml2ZXJzL2h3bW9uL3c4Mzc5MWQuYyAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0K
-IGRyaXZlcnMvaHdtb24vdzgzNzkyZC5jICAgICB8ICAgMTYgKy0tLS0tLS0tLS0tLS0tLQogZHJp
-dmVycy9od21vbi93ODM3OTMuYyAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3
-bW9uL3c4Mzc5NS5jICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vdzgz
-bDc4NXRzLmMgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi93ODNsNzg2bmcu
-YyAgIHwgICAxNSArLS0tLS0tLS0tLS0tLS0KIDY0IGZpbGVzIGNoYW5nZWQsIDY0IGluc2VydGlv
-bnMoKyksIDc5OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2FkNzQx
-NC5jIGIvZHJpdmVycy9od21vbi9hZDc0MTQuYwppbmRleCBkZjI5YTdmLi4yMmMyNDIwIDEwMDY0
-NAotLS0gYS9kcml2ZXJzL2h3bW9uL2FkNzQxNC5jCisrKyBiL2RyaXZlcnMvaHdtb24vYWQ3NDE0
-LmMKQEAgLTI1MiwxNyArMjUyLDcgQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGFkNzQxNF9k
-cml2ZXIgPSB7CiAJLmlkX3RhYmxlID0gYWQ3NDE0X2lkLAogfTsKIAotc3RhdGljIGludCBfX2lu
-aXQgYWQ3NDE0X2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmFkNzQxNF9k
-cml2ZXIpOwotfQotbW9kdWxlX2luaXQoYWQ3NDE0X2luaXQpOwotCi1zdGF0aWMgdm9pZCBfX2V4
-aXQgYWQ3NDE0X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmYWQ3NDE0X2RyaXZlcik7
-Ci19Ci1tb2R1bGVfZXhpdChhZDc0MTRfZXhpdCk7Cittb2R1bGVfaTJjX2RyaXZlcihhZDc0MTRf
-ZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiU3RlZmFuIFJvZXNlIDxzciBhdCBkZW54LmRlPiwg
-IgogCSAgICAgICJGcmFuayBFZGVsaGFldXNlciA8ZnJhbmsuZWRlbGhhZXVzZXIgYXQgc3BhbnNp
-b24uY29tPiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hZDc0MTguYyBiL2RyaXZlcnMv
-aHdtb24vYWQ3NDE4LmMKaW5kZXggOGNiNzE4Yy4uMzY3MjQ0YiAxMDA2NDQKLS0tIGEvZHJpdmVy
-cy9od21vbi9hZDc0MTguYworKysgYi9kcml2ZXJzL2h3bW9uL2FkNzQxOC5jCkBAIC0yODksMjAg
-KzI4OSw5IEBAIHN0YXRpYyBpbnQgYWQ3NDE4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp
-ZW50KQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBhZDc0MThfaW5pdCh2b2lk
-KQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmYWQ3NDE4X2RyaXZlcik7Ci19Ci0KLXN0YXRp
-YyB2b2lkIF9fZXhpdCBhZDc0MThfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZhZDc0
-MThfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGFkNzQxOF9kcml2ZXIpOwogCiBNT0RV
-TEVfQVVUSE9SKCJBbGVzc2FuZHJvIFp1bW1vIDxhLnp1bW1vQHRvd2VydGVjaC5pdD4iKTsKIE1P
-RFVMRV9ERVNDUklQVElPTigiQUQ3NDE2LzE3LzE4IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0Uo
-IkdQTCIpOwogTU9EVUxFX1ZFUlNJT04oRFJWX1ZFUlNJT04pOwotCi1tb2R1bGVfaW5pdChhZDc0
-MThfaW5pdCk7Ci1tb2R1bGVfZXhpdChhZDc0MThfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJz
-L2h3bW9uL2FkbTEwMjEuYyBiL2RyaXZlcnMvaHdtb24vYWRtMTAyMS5jCmluZGV4IDFhZDBhODgu
-LjU0OThhZWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYWRtMTAyMS5jCisrKyBiL2RyaXZl
-cnMvaHdtb24vYWRtMTAyMS5jCkBAIC00NTEsMTUgKzQ1MSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYWRt
-MTAyMV9kYXRhICphZG0xMDIxX3VwZGF0ZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJl
-dHVybiBkYXRhOwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2FkbTEwMjFfaW5pdCh2
-b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmYWRtMTAyMV9kcml2ZXIpOwotfQotCi1z
-dGF0aWMgdm9pZCBfX2V4aXQgc2Vuc29yc19hZG0xMDIxX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVs
-X2RyaXZlcigmYWRtMTAyMV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIoYWRtMTAyMV9k
-cml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SICgiRnJvZG8gTG9vaWphYXJkIDxmcm9kb2xAZGRzLm5s
-PiBhbmQgIgogCQkiUGhpbGlwIEVkZWxicm9jayA8cGhpbEBuZXRyb2VkZ2UuY29tPiIpOwpAQCAt
-NDY4LDYgKzQ2MCwzIEBAIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIAogbW9kdWxlX3BhcmFtKHJl
-YWRfb25seSwgYm9vbCwgMCk7CiBNT0RVTEVfUEFSTV9ERVNDKHJlYWRfb25seSwgIkRvbid0IHNl
-dCBhbnkgdmFsdWVzLCByZWFkIG9ubHkgbW9kZSIpOwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2Fk
-bTEwMjFfaW5pdCkKLW1vZHVsZV9leGl0KHNlbnNvcnNfYWRtMTAyMV9leGl0KQpkaWZmIC0tZ2l0
-IGEvZHJpdmVycy9od21vbi9hZG0xMDI1LmMgYi9kcml2ZXJzL2h3bW9uL2FkbTEwMjUuYwppbmRl
-eCA2MGJlZmMwLi5mMDJjMzhiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2FkbTEwMjUuYwor
-KysgYi9kcml2ZXJzL2h3bW9uL2FkbTEwMjUuYwpAQCAtNTg5LDE5ICs1ODksOCBAQCBzdGF0aWMg
-c3RydWN0IGFkbTEwMjVfZGF0YSAqYWRtMTAyNV91cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2Ug
-KmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19hZG0x
-MDI1X2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmFkbTEwMjVfZHJpdmVy
-KTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfYWRtMTAyNV9leGl0KHZvaWQpCi17
-Ci0JaTJjX2RlbF9kcml2ZXIoJmFkbTEwMjVfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVy
-KGFkbTEwMjVfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiSmVhbiBEZWx2YXJlIDxraGFsaUBs
-aW51eC1mci5vcmc+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkFETTEwMjUgZHJpdmVyIik7CiBN
-T0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfYWRtMTAyNV9pbml0
-KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfYWRtMTAyNV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZl
-cnMvaHdtb24vYWRtMTAyNi5jIGIvZHJpdmVycy9od21vbi9hZG0xMDI2LmMKaW5kZXggMDUzMTg2
-Ny4uYmUxNzA4MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hZG0xMDI2LmMKKysrIGIvZHJp
-dmVycy9od21vbi9hZG0xMDI2LmMKQEAgLTE3NjEsMjAgKzE3NjEsOSBAQCBzdGF0aWMgaW50IGFk
-bTEwMjZfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCiAJcmV0dXJuIDA7CiB9CiAK
-LXN0YXRpYyBpbnQgX19pbml0IHNtX2FkbTEwMjZfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNf
-YWRkX2RyaXZlcigmYWRtMTAyNl9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc21f
-YWRtMTAyNl9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmFkbTEwMjZfZHJpdmVyKTsK
-LX0KK21vZHVsZV9pMmNfZHJpdmVyKGFkbTEwMjZfZHJpdmVyKTsKIAogTU9EVUxFX0xJQ0VOU0Uo
-IkdQTCIpOwogTU9EVUxFX0FVVEhPUigiUGhpbGlwIFBva29ybnkgPHBwb2tvcm55QHBlbmd1aW5j
-b21wdXRpbmcuY29tPiwgIgogCSAgICAgICJKdXN0aW4gVGhpZXNzZW4gPGp0aGllc3NlbkBwZW5n
-dWluY29tcHV0aW5nLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiQURNMTAyNiBkcml2ZXIi
-KTsKLQotbW9kdWxlX2luaXQoc21fYWRtMTAyNl9pbml0KTsKLW1vZHVsZV9leGl0KHNtX2FkbTEw
-MjZfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2FkbTEwMjkuYyBiL2RyaXZlcnMv
-aHdtb24vYWRtMTAyOS5jCmluZGV4IDBiOGEzYjEuLjhlNWFkYjIgMTAwNjQ0Ci0tLSBhL2RyaXZl
-cnMvaHdtb24vYWRtMTAyOS5jCisrKyBiL2RyaXZlcnMvaHdtb24vYWRtMTAyOS5jCkBAIC00NDYs
-MjQgKzQ0Niw4IEBAIHN0YXRpYyBzdHJ1Y3QgYWRtMTAyOV9kYXRhICphZG0xMDI5X3VwZGF0ZV9k
-ZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi0vKgotCUNvbW1v
-biBtb2R1bGUgc3R1ZmYKLSovCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2FkbTEwMjlfaW5p
-dCh2b2lkKQotewotCi0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhZG0xMDI5X2RyaXZlcik7Ci19
-Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2FkbTEwMjlfZXhpdCh2b2lkKQotewotCi0J
-aTJjX2RlbF9kcml2ZXIoJmFkbTEwMjlfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGFk
-bTEwMjlfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiQ29yZW50aW4gTEFCQkUgPGNvcmVudGlu
-LmxhYmJlQGdlb21hdHlzLmZyPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJhZG0xMDI5IGRyaXZl
-ciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2Fk
-bTEwMjlfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX2FkbTEwMjlfZXhpdCk7CmRpZmYgLS1n
-aXQgYS9kcml2ZXJzL2h3bW9uL2FkbTEwMzEuYyBiL2RyaXZlcnMvaHdtb24vYWRtMTAzMS5jCmlu
-ZGV4IDA2ODNlNmIuLjcxYmU0MmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYWRtMTAzMS5j
-CisrKyBiL2RyaXZlcnMvaHdtb24vYWRtMTAzMS5jCkBAIC0xMDc4LDE5ICsxMDc4LDggQEAgc3Rh
-dGljIHN0cnVjdCBhZG0xMDMxX2RhdGEgKmFkbTEwMzFfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2
-aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNf
-YWRtMTAzMV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhZG0xMDMxX2Ry
-aXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2FkbTEwMzFfZXhpdCh2b2lk
-KQotewotCWkyY19kZWxfZHJpdmVyKCZhZG0xMDMxX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2Ry
-aXZlcihhZG0xMDMxX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkFsZXhhbmRyZSBkJ0FsdG9u
-IDxhbGV4QGFsZXhkYWx0b24ub3JnPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJBRE0xMDMxL0FE
-TTEwMzAgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNl
-bnNvcnNfYWRtMTAzMV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfYWRtMTAzMV9leGl0KTsK
-ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWRtOTI0MC5jIGIvZHJpdmVycy9od21vbi9hZG05
-MjQwLmMKaW5kZXggOWUyMzRiOS4uNWUzMDdiYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9h
-ZG05MjQwLmMKKysrIGIvZHJpdmVycy9od21vbi9hZG05MjQwLmMKQEAgLTc5NSwyMSArNzk1LDkg
-QEAgc3RhdGljIHN0cnVjdCBhZG05MjQwX2RhdGEgKmFkbTkyNDBfdXBkYXRlX2RldmljZShzdHJ1
-Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNl
-bnNvcnNfYWRtOTI0MF9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhZG05
-MjQwX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2FkbTkyNDBfZXhp
-dCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZhZG05MjQwX2RyaXZlcik7Ci19Cittb2R1bGVf
-aTJjX2RyaXZlcihhZG05MjQwX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIk1pY2hpZWwgUm9v
-ayA8bWljaGllbEBncmVuZGVscHJvamVjdC5ubD4sICIKIAkJIkdyYW50IENvYWR5IDxnY29hZHku
-bGtAZ21haWwuY29tPiBhbmQgb3RoZXJzIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkFETTkyNDAv
-RFMxNzgwL0xNODEgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9p
-bml0KHNlbnNvcnNfYWRtOTI0MF9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfYWRtOTI0MF9l
-eGl0KTsKLQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hZHMxMDE1LmMgYi9kcml2ZXJzL2h3
-bW9uL2FkczEwMTUuYwppbmRleCBlZWRjYTNjLi42MGJlMzU4IDEwMDY0NAotLS0gYS9kcml2ZXJz
-L2h3bW9uL2FkczEwMTUuYworKysgYi9kcml2ZXJzL2h3bW9uL2FkczEwMTUuYwpAQCAtMzA2LDE5
-ICszMDYsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgYWRzMTAxNV9kcml2ZXIgPSB7CiAJ
-LmlkX3RhYmxlID0gYWRzMTAxNV9pZCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNf
-YWRzMTAxNV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhZHMxMDE1X2Ry
-aXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2FkczEwMTVfZXhpdCh2b2lk
-KQotewotCWkyY19kZWxfZHJpdmVyKCZhZHMxMDE1X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2Ry
-aXZlcihhZHMxMDE1X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkRpcmsgRWliYWNoIDxlaWJh
-Y2hAZ2RzeXMuZGU+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkFEUzEwMTUgZHJpdmVyIik7CiBN
-T0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfYWRzMTAxNV9pbml0
-KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfYWRzMTAxNV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZl
-cnMvaHdtb24vYWR0NzQxMS5jIGIvZHJpdmVycy9od21vbi9hZHQ3NDExLmMKaW5kZXggNWNjM2Uz
-Ny4uZTRkODZjYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hZHQ3NDExLmMKKysrIGIvZHJp
-dmVycy9od21vbi9hZHQ3NDExLmMKQEAgLTM0OCwxNyArMzQ4LDcgQEAgc3RhdGljIHN0cnVjdCBp
-MmNfZHJpdmVyIGFkdDc0MTFfZHJpdmVyID0gewogCS5jbGFzcyA9IEkyQ19DTEFTU19IV01PTiwK
-IH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfYWR0NzQxMV9pbml0KHZvaWQpCi17Ci0J
-cmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhZHQ3NDExX2RyaXZlcik7Ci19Ci1tb2R1bGVfaW5pdChz
-ZW5zb3JzX2FkdDc0MTFfaW5pdCkKLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfYWR0NzQx
-MV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmFkdDc0MTFfZHJpdmVyKTsKLX0KLW1v
-ZHVsZV9leGl0KHNlbnNvcnNfYWR0NzQxMV9leGl0KQorbW9kdWxlX2kyY19kcml2ZXIoYWR0NzQx
-MV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0
-cm9uaXguZGU+IGFuZCAiCiAJIldvbGZyYW0gU2FuZyA8dy5zYW5nQHBlbmd1dHJvbml4LmRlPiIp
-OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hZHQ3NDYyLmMgYi9kcml2ZXJzL2h3bW9uL2Fk
-dDc0NjIuYwppbmRleCAyYWYwYzdiLi4xYmViOGE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9u
-L2FkdDc0NjIuYworKysgYi9kcml2ZXJzL2h3bW9uL2FkdDc0NjIuYwpAQCAtMTk3NSwxOSArMTk3
-NSw4IEBAIHN0YXRpYyBpbnQgYWR0NzQ2Ml9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu
-dCkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBfX2luaXQgYWR0NzQ2Ml9pbml0KHZvaWQp
-Ci17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhZHQ3NDYyX2RyaXZlcik7Ci19Ci0KLXN0YXRp
-YyB2b2lkIF9fZXhpdCBhZHQ3NDYyX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmYWR0
-NzQ2Ml9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIoYWR0NzQ2Ml9kcml2ZXIpOwogCiBN
-T0RVTEVfQVVUSE9SKCJEYXJyaWNrIEouIFdvbmcgPGRqd29uZ0B1cy5pYm0uY29tPiIpOwogTU9E
-VUxFX0RFU0NSSVBUSU9OKCJBRFQ3NDYyIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIp
-OwotCi1tb2R1bGVfaW5pdChhZHQ3NDYyX2luaXQpOwotbW9kdWxlX2V4aXQoYWR0NzQ2Ml9leGl0
-KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWR0NzQ3MC5jIGIvZHJpdmVycy9od21vbi9h
-ZHQ3NDcwLmMKaW5kZXggYzZkMWNlMC4uZGRjYTIxNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21v
-bi9hZHQ3NDcwLmMKKysrIGIvZHJpdmVycy9od21vbi9hZHQ3NDcwLmMKQEAgLTEzMTcsMTkgKzEz
-MTcsOCBAQCBzdGF0aWMgaW50IGFkdDc0NzBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll
-bnQpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IGFkdDc0NzBfaW5pdCh2b2lk
-KQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmYWR0NzQ3MF9kcml2ZXIpOwotfQotCi1zdGF0
-aWMgdm9pZCBfX2V4aXQgYWR0NzQ3MF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmFk
-dDc0NzBfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGFkdDc0NzBfZHJpdmVyKTsKIAog
-TU9EVUxFX0FVVEhPUigiRGFycmljayBKLiBXb25nIDxkandvbmdAdXMuaWJtLmNvbT4iKTsKIE1P
-RFVMRV9ERVNDUklQVElPTigiQURUNzQ3MCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwi
-KTsKLQotbW9kdWxlX2luaXQoYWR0NzQ3MF9pbml0KTsKLW1vZHVsZV9leGl0KGFkdDc0NzBfZXhp
-dCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2FkdDc0NzUuYyBiL2RyaXZlcnMvaHdtb24v
-YWR0NzQ3NS5jCmluZGV4IGI1ZmNkODcuLmM3NTM1NDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdt
-b24vYWR0NzQ3NS5jCisrKyBiL2RyaXZlcnMvaHdtb24vYWR0NzQ3NS5jCkBAIC0xNjAwLDE5ICsx
-NjAwLDggQEAgc3RhdGljIHN0cnVjdCBhZHQ3NDc1X2RhdGEgKmFkdDc0NzVfdXBkYXRlX2Rldmlj
-ZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19p
-bml0IHNlbnNvcnNfYWR0NzQ3NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVy
-KCZhZHQ3NDc1X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2FkdDc0
-NzVfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZhZHQ3NDc1X2RyaXZlcik7Ci19Citt
-b2R1bGVfaTJjX2RyaXZlcihhZHQ3NDc1X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkFkdmFu
-Y2VkIE1pY3JvIERldmljZXMsIEluYyIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJhZHQ3NDc1IGRy
-aXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2Fk
-dDc0NzVfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX2FkdDc0NzVfZXhpdCk7CmRpZmYgLS1n
-aXQgYS9kcml2ZXJzL2h3bW9uL2FtYzY4MjEuYyBiL2RyaXZlcnMvaHdtb24vYW1jNjgyMS5jCmlu
-ZGV4IDQwMzM5NzQuLmRhNmNhNGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYW1jNjgyMS5j
-CisrKyBiL2RyaXZlcnMvaHdtb24vYW1jNjgyMS5jCkBAIC0xMDk1LDIwICsxMDk1LDcgQEAgc3Rh
-dGljIHN0cnVjdCBhbWM2ODIxX2RhdGEgKmFtYzY4MjFfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2
-aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLQotc3RhdGljIGludCBfX2luaXQgYW1jNjgy
-MV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhbWM2ODIxX2RyaXZlcik7
-Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhbWM2ODIxX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVs
-X2RyaXZlcigmYW1jNjgyMV9kcml2ZXIpOwotfQotCi1tb2R1bGVfaW5pdChhbWM2ODIxX2luaXQp
-OwotbW9kdWxlX2V4aXQoYW1jNjgyMV9leGl0KTsKLQorbW9kdWxlX2kyY19kcml2ZXIoYW1jNjgy
-MV9kcml2ZXIpOwogCiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiBNT0RVTEVfQVVUSE9SKCJULiBN
-ZXJ0ZWxqIDx0b21hei5tZXJ0ZWxqQGd1ZXN0LmFybmVzLnNpPiIpOwpkaWZmIC0tZ2l0IGEvZHJp
-dmVycy9od21vbi9hc2IxMDAuYyBiL2RyaXZlcnMvaHdtb24vYXNiMTAwLmMKaW5kZXggZDdiZDFm
-My4uMGYzMDBjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hc2IxMDAuYworKysgYi9kcml2
-ZXJzL2h3bW9uL2FzYjEwMC5jCkBAIC05NzEsMTkgKzk3MSw4IEBAIHN0YXRpYyBzdHJ1Y3QgYXNi
-MTAwX2RhdGEgKmFzYjEwMF91cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1
-cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgYXNiMTAwX2luaXQodm9pZCkKLXsKLQly
-ZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmFzYjEwMF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBf
-X2V4aXQgYXNiMTAwX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmYXNiMTAwX2RyaXZl
-cik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihhc2IxMDBfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhP
-UigiTWFyayBNLiBIb2ZmbWFuIDxtaG9mZm1hbkBsaWdodGxpbmsuY29tPiIpOwogTU9EVUxFX0RF
-U0NSSVBUSU9OKCJBU0IxMDAgQmFjaCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsK
-LQotbW9kdWxlX2luaXQoYXNiMTAwX2luaXQpOwotbW9kdWxlX2V4aXQoYXNiMTAwX2V4aXQpOwpk
-aWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hdHhwMS5jIGIvZHJpdmVycy9od21vbi9hdHhwMS5j
-CmluZGV4IDMzY2MxNDMuLjcwMWJjOWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYXR4cDEu
-YworKysgYi9kcml2ZXJzL2h3bW9uL2F0eHAxLmMKQEAgLTM2NywxNSArMzY3LDQgQEAgc3RhdGlj
-IGludCBhdHhwMV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAlyZXR1cm4gMDsK
-IH07CiAKLXN0YXRpYyBpbnQgX19pbml0IGF0eHAxX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJj
-X2FkZF9kcml2ZXIoJmF0eHAxX2RyaXZlcik7Ci19OwotCi1zdGF0aWMgdm9pZCBfX2V4aXQgYXR4
-cDFfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZhdHhwMV9kcml2ZXIpOwotfTsKLQot
-bW9kdWxlX2luaXQoYXR4cDFfaW5pdCk7Ci1tb2R1bGVfZXhpdChhdHhwMV9leGl0KTsKK21vZHVs
-ZV9pMmNfZHJpdmVyKGF0eHAxX2RyaXZlcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2Rz
-MTYyMS5jIGIvZHJpdmVycy9od21vbi9kczE2MjEuYwppbmRleCBlZjFhYzk5Ni4uOTgzMmFjNSAx
-MDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9kczE2MjEuYworKysgYi9kcml2ZXJzL2h3bW9uL2Rz
-MTYyMS5jCkBAIC0zMDUsMjAgKzMwNSw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBkczE2
-MjFfZHJpdmVyID0gewogCS5hZGRyZXNzX2xpc3QJPSBub3JtYWxfaTJjLAogfTsKIAotc3RhdGlj
-IGludCBfX2luaXQgZHMxNjIxX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIo
-JmRzMTYyMV9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgZHMxNjIxX2V4aXQodm9p
-ZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmZHMxNjIxX2RyaXZlcik7Ci19Ci0KK21vZHVsZV9pMmNf
-ZHJpdmVyKGRzMTYyMV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJDaHJpc3RpYW4gVy4gWnVj
-a3NjaHdlcmR0IDx6YW55QHRyaXEubmV0PiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJEUzE2MjEg
-ZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KGRzMTYyMV9p
-bml0KTsKLW1vZHVsZV9leGl0KGRzMTYyMV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdt
-b24vZHM2MjAuYyBiL2RyaXZlcnMvaHdtb24vZHM2MjAuYwppbmRleCAyMjVhZTRmLi4yZTJiNDMw
-IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2RzNjIwLmMKKysrIGIvZHJpdmVycy9od21vbi9k
-czYyMC5jCkBAIC0yOTcsMTkgKzI5Nyw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBkczYy
-MF9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlID0gZHM2MjBfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9f
-aW5pdCBkczYyMF9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZkczYyMF9k
-cml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgZHM2MjBfZXhpdCh2b2lkKQotewotCWky
-Y19kZWxfZHJpdmVyKCZkczYyMF9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIoZHM2MjBf
-ZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiUm9sYW5kIFN0aWdnZSA8c3RpZ2dlQGFudGNvbS5k
-ZT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiRFM2MjAgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5T
-RSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KGRzNjIwX2luaXQpOwotbW9kdWxlX2V4aXQoZHM2MjBf
-ZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2VtYzE0MDMuYyBiL2RyaXZlcnMvaHdt
-b24vZW1jMTQwMy5jCmluZGV4IGNkMmE2ZTQuLjIyM2JkM2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv
-aHdtb24vZW1jMTQwMy5jCisrKyBiL2RyaXZlcnMvaHdtb24vZW1jMTQwMy5jCkBAIC0zNjYsMTgg
-KzM2Niw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBzZW5zb3JfZW1jMTQwMyA9IHsKIAku
-YWRkcmVzc19saXN0ID0gZW1jMTQwM19hZGRyZXNzX2xpc3QsCiB9OwogCi1zdGF0aWMgaW50IF9f
-aW5pdCBzZW5zb3JfZW1jMTQwM19pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVy
-KCZzZW5zb3JfZW1jMTQwMyk7Ci19Ci0KLXN0YXRpYyB2b2lkICBfX2V4aXQgc2Vuc29yX2VtYzE0
-MDNfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZzZW5zb3JfZW1jMTQwMyk7Ci19Ci0K
-LW1vZHVsZV9pbml0KHNlbnNvcl9lbWMxNDAzX2luaXQpOwotbW9kdWxlX2V4aXQoc2Vuc29yX2Vt
-YzE0MDNfZXhpdCk7Cittb2R1bGVfaTJjX2RyaXZlcihzZW5zb3JfZW1jMTQwMyk7CiAKIE1PRFVM
-RV9BVVRIT1IoIkthbGhhbiBUcmlzYWwgPGthbGhhbi50cmlzYWxAaW50ZWwuY29tIik7CiBNT0RV
-TEVfREVTQ1JJUFRJT04oImVtYzE0MDMgVGhlcm1hbCBEcml2ZXIiKTsKZGlmZiAtLWdpdCBhL2Ry
-aXZlcnMvaHdtb24vZW1jMjEwMy5jIGIvZHJpdmVycy9od21vbi9lbWMyMTAzLmMKaW5kZXggYWY5
-MTRhZDkuLmMyNTE0NDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vZW1jMjEwMy5jCisrKyBi
-L2RyaXZlcnMvaHdtb24vZW1jMjEwMy5jCkBAIC03MjIsMTkgKzcyMiw4IEBAIHN0YXRpYyBzdHJ1
-Y3QgaTJjX2RyaXZlciBlbWMyMTAzX2RyaXZlciA9IHsKIAkuYWRkcmVzc19saXN0CT0gbm9ybWFs
-X2kyYywKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfZW1jMjEwM19pbml0KHZvaWQp
-Ci17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZlbWMyMTAzX2RyaXZlcik7Ci19Ci0KLXN0YXRp
-YyB2b2lkIF9fZXhpdCBzZW5zb3JzX2VtYzIxMDNfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJp
-dmVyKCZlbWMyMTAzX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihlbWMyMTAzX2RyaXZl
-cik7CiAKIE1PRFVMRV9BVVRIT1IoIlN0ZXZlIEdsZW5kaW5uaW5nIDxzdGV2ZS5nbGVuZGlubmlu
-Z0BzbXNjLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiU01TQyBFTUMyMTAzIGh3bW9uIGRy
-aXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2Vt
-YzIxMDNfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX2VtYzIxMDNfZXhpdCk7CmRpZmYgLS1n
-aXQgYS9kcml2ZXJzL2h3bW9uL2VtYzZ3MjAxLmMgYi9kcml2ZXJzL2h3bW9uL2VtYzZ3MjAxLmMK
-aW5kZXggMDA2NDQzMi4uY2JlZjZlMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9lbWM2dzIw
-MS5jCisrKyBiL2RyaXZlcnMvaHdtb24vZW1jNncyMDEuYwpAQCAtNTUyLDE3ICs1NTIsNyBAQCBz
-dGF0aWMgc3RydWN0IGkyY19kcml2ZXIgZW1jNncyMDFfZHJpdmVyID0gewogCS5hZGRyZXNzX2xp
-c3QJPSBub3JtYWxfaTJjLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19lbWM2dzIw
-MV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZlbWM2dzIwMV9kcml2ZXIp
-OwotfQotbW9kdWxlX2luaXQoc2Vuc29yc19lbWM2dzIwMV9pbml0KTsKLQotc3RhdGljIHZvaWQg
-X19leGl0IHNlbnNvcnNfZW1jNncyMDFfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZl
-bWM2dzIwMV9kcml2ZXIpOwotfQotbW9kdWxlX2V4aXQoc2Vuc29yc19lbWM2dzIwMV9leGl0KTsK
-K21vZHVsZV9pMmNfZHJpdmVyKGVtYzZ3MjAxX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkpl
-YW4gRGVsdmFyZSA8a2hhbGlAbGludXgtZnIub3JnPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJT
-TVNDIEVNQzZXMjAxIGhhcmR3YXJlIG1vbml0b3JpbmcgZHJpdmVyIik7CmRpZmYgLS1naXQgYS9k
-cml2ZXJzL2h3bW9uL2Y3NTM3NXMuYyBiL2RyaXZlcnMvaHdtb24vZjc1Mzc1cy5jCmluZGV4IDk1
-Y2JmYjMuLjgzMjYwODQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vZjc1Mzc1cy5jCisrKyBi
-L2RyaXZlcnMvaHdtb24vZjc1Mzc1cy5jCkBAIC02OTksMTkgKzY5OSw4IEBAIHN0YXRpYyBpbnQg
-Zjc1Mzc1X2RldGVjdChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAogCXJldHVybiAwOwogfQog
-Ci1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2Y3NTM3NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJu
-IGkyY19hZGRfZHJpdmVyKCZmNzUzNzVfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0
-IHNlbnNvcnNfZjc1Mzc1X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmZjc1Mzc1X2Ry
-aXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihmNzUzNzVfZHJpdmVyKTsKIAogTU9EVUxFX0FV
-VEhPUigiUmlrdSBWb2lwaW8iKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIE1PRFVMRV9ERVND
-UklQVElPTigiRjc1MzczL0Y3NTM3NSBoYXJkd2FyZSBtb25pdG9yaW5nIGRyaXZlciIpOwotCi1t
-b2R1bGVfaW5pdChzZW5zb3JzX2Y3NTM3NV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfZjc1
-Mzc1X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9mc2NobWQuYyBiL2RyaXZlcnMv
-aHdtb24vZnNjaG1kLmMKaW5kZXggYWE2ZDhiNi4uNzNiYTk0MiAxMDA2NDQKLS0tIGEvZHJpdmVy
-cy9od21vbi9mc2NobWQuYworKysgYi9kcml2ZXJzL2h3bW9uL2ZzY2htZC5jCkBAIC0xMzE0LDIw
-ICsxMzE0LDkgQEAgc3RhdGljIHN0cnVjdCBmc2NobWRfZGF0YSAqZnNjaG1kX3VwZGF0ZV9kZXZp
-Y2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi1zdGF0aWMgaW50IF9f
-aW5pdCBmc2NobWRfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmZnNjaG1k
-X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBmc2NobWRfZXhpdCh2b2lkKQotewot
-CWkyY19kZWxfZHJpdmVyKCZmc2NobWRfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGZz
-Y2htZF9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJIYW5zIGRlIEdvZWRlIDxoZGVnb2VkZUBy
-ZWRoYXQuY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJGU0MgUG9zZWlkb24sIEhlcm1lcywg
-U2N5bGxhLCBIZXJhY2xlcywgSGVpbWRhbGwsIEhhZGVzICIKIAkJCSJhbmQgU3lsZXVzIGRyaXZl
-ciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChmc2NobWRfaW5pdCk7
-Ci1tb2R1bGVfZXhpdChmc2NobWRfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2c3
-NjBhLmMgYi9kcml2ZXJzL2h3bW9uL2c3NjBhLmMKaW5kZXggMWQ2YTZmYS4uZjhjZDVhOSAxMDA2
-NDQKLS0tIGEvZHJpdmVycy9od21vbi9nNzYwYS5jCisrKyBiL2RyaXZlcnMvaHdtb24vZzc2MGEu
-YwpAQCAtMjUwLDIxICsyNTAsOCBAQCBzdGF0aWMgaW50IGc3NjBhX3JlbW92ZShzdHJ1Y3QgaTJj
-X2NsaWVudCAqY2xpZW50KQogCXJldHVybiAwOwogfQogCi0vKiBtb2R1bGUgbWFuYWdlbWVudCAq
-LwotCi1zdGF0aWMgaW50IF9faW5pdCBnNzYwYV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19h
-ZGRfZHJpdmVyKCZnNzYwYV9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgZzc2MGFf
-ZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZnNzYwYV9kcml2ZXIpOwotfQorbW9kdWxl
-X2kyY19kcml2ZXIoZzc2MGFfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiSGVyYmVydCBWYWxl
-cmlvIFJpZWRlbCA8aHZyQGdudS5vcmc+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkdNVCBHNzYw
-QSBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQoZzc2MGFf
-aW5pdCk7Ci1tb2R1bGVfZXhpdChnNzYwYV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdt
-b24vZ2w1MThzbS5jIGIvZHJpdmVycy9od21vbi9nbDUxOHNtLmMKaW5kZXggYTEzZTJkYS4uODli
-OGMwYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9nbDUxOHNtLmMKKysrIGIvZHJpdmVycy9o
-d21vbi9nbDUxOHNtLmMKQEAgLTY3NiwyMSArNjc2LDEwIEBAIHN0YXRpYyBzdHJ1Y3QgZ2w1MThf
-ZGF0YSAqZ2w1MThfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRh
-dGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfZ2w1MThzbV9pbml0KHZvaWQpCi17
-Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZnbDUxOF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9p
-ZCBfX2V4aXQgc2Vuc29yc19nbDUxOHNtX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigm
-Z2w1MThfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGdsNTE4X2RyaXZlcik7CiAKIE1P
-RFVMRV9BVVRIT1IoIkZyb2RvIExvb2lqYWFyZCA8ZnJvZG9sQGRkcy5ubD4sICIKIAkiS3lvc3Rp
-IE1hbGtraSA8a21hbGtraUBjYy5odXQuZmk+IGFuZCAiCiAJIkhvbmctR3VubiBDaGV3IDxoZ2xp
-bnV4QGd1bm5ldC5vcmc+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkdMNTE4U00gZHJpdmVyIik7
-CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfZ2w1MThzbV9p
-bml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfZ2w1MThzbV9leGl0KTsKZGlmZiAtLWdpdCBhL2Ry
-aXZlcnMvaHdtb24vZ2w1MjBzbS5jIGIvZHJpdmVycy9od21vbi9nbDUyMHNtLmMKaW5kZXggY2Q2
-MDg1Yi4uZTZkY2Y2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9nbDUyMHNtLmMKKysrIGIv
-ZHJpdmVycy9od21vbi9nbDUyMHNtLmMKQEAgLTkxMCwyMyArOTEwLDEwIEBAIHN0YXRpYyBzdHJ1
-Y3QgZ2w1MjBfZGF0YSAqZ2w1MjBfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJ
-cmV0dXJuIGRhdGE7CiB9CiAKLQotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19nbDUyMHNtX2lu
-aXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmdsNTIwX2RyaXZlcik7Ci19Ci0K
-LXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2dsNTIwc21fZXhpdCh2b2lkKQotewotCWkyY19k
-ZWxfZHJpdmVyKCZnbDUyMF9kcml2ZXIpOwotfQotCittb2R1bGVfaTJjX2RyaXZlcihnbDUyMF9k
-cml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+
-LCAiCiAJIkt5w7ZzdGkgTcOkbGtraSA8a21hbGtraUBjYy5odXQuZmk+LCAiCiAJIk1hYXJ0ZW4g
-RGVwcmV6IDxtYWFydGVuZGVwcmV6QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4iKTsKIE1PRFVMRV9E
-RVNDUklQVElPTigiR0w1MjBTTSBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQot
-bW9kdWxlX2luaXQoc2Vuc29yc19nbDUyMHNtX2luaXQpOwotbW9kdWxlX2V4aXQoc2Vuc29yc19n
-bDUyMHNtX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9qYzQyLmMgYi9kcml2ZXJz
-L2h3bW9uL2pjNDIuYwppbmRleCAyZDNkNzI4Li5kMzNjNTkyIDEwMDY0NAotLS0gYS9kcml2ZXJz
-L2h3bW9uL2pjNDIuYworKysgYi9kcml2ZXJzL2h3bW9uL2pjNDIuYwpAQCAtNTg4LDE5ICs1ODgs
-OCBAQCBhYm9ydDoKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3Jz
-X2pjNDJfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmamM0Ml9kcml2ZXIp
-OwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vuc29yc19qYzQyX2V4aXQodm9pZCkKLXsKLQlp
-MmNfZGVsX2RyaXZlcigmamM0Ml9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIoamM0Ml9k
-cml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJHdWVudGVyIFJvZWNrIDxndWVudGVyLnJvZWNrQGVy
-aWNzc29uLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiSkM0MiBkcml2ZXIiKTsKIE1PRFVM
-RV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc19qYzQyX2luaXQpOwotbW9k
-dWxlX2V4aXQoc2Vuc29yc19qYzQyX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9s
-aW5lYWdlLXBlbS5jIGIvZHJpdmVycy9od21vbi9saW5lYWdlLXBlbS5jCmluZGV4IDU4ZWRlZDIu
-LjViOGM5YWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbGluZWFnZS1wZW0uYworKysgYi9k
-cml2ZXJzL2h3bW9uL2xpbmVhZ2UtcGVtLmMKQEAgLTU2OCwxOSArNTY4LDggQEAgc3RhdGljIHN0
-cnVjdCBpMmNfZHJpdmVyIHBlbV9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlID0gcGVtX2lkLAogfTsK
-IAotc3RhdGljIGludCBfX2luaXQgcGVtX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9k
-cml2ZXIoJnBlbV9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgcGVtX2V4aXQodm9p
-ZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmcGVtX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZl
-cihwZW1fZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiR3VlbnRlciBSb2VjayA8Z3VlbnRlci5y
-b2Vja0Blcmljc3Nvbi5jb20+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkxpbmVhZ2UgQ1BMIFBF
-TSBoYXJkd2FyZSBtb25pdG9yaW5nIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwot
-Ci1tb2R1bGVfaW5pdChwZW1faW5pdCk7Ci1tb2R1bGVfZXhpdChwZW1fZXhpdCk7CmRpZmYgLS1n
-aXQgYS9kcml2ZXJzL2h3bW9uL2xtNjMuYyBiL2RyaXZlcnMvaHdtb24vbG02My5jCmluZGV4IDk2
-NDIyODYuLjJlYWUxYmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbG02My5jCisrKyBiL2Ry
-aXZlcnMvaHdtb24vbG02My5jCkBAIC03MjcsMTkgKzcyNyw4IEBAIHN0YXRpYyBzdHJ1Y3QgbG02
-M19kYXRhICpsbTYzX3VwZGF0ZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBk
-YXRhOwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2xtNjNfaW5pdCh2b2lkKQotewot
-CXJldHVybiBpMmNfYWRkX2RyaXZlcigmbG02M19kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBf
-X2V4aXQgc2Vuc29yc19sbTYzX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbG02M19k
-cml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobG02M19kcml2ZXIpOwogCiBNT0RVTEVfQVVU
-SE9SKCJKZWFuIERlbHZhcmUgPGtoYWxpQGxpbnV4LWZyLm9yZz4iKTsKIE1PRFVMRV9ERVNDUklQ
-VElPTigiTE02MyBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2lu
-aXQoc2Vuc29yc19sbTYzX2luaXQpOwotbW9kdWxlX2V4aXQoc2Vuc29yc19sbTYzX2V4aXQpOwpk
-aWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9sbTczLmMgYi9kcml2ZXJzL2h3bW9uL2xtNzMuYwpp
-bmRleCA5ZTY0ZDk2Li4yYzYzZjE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2xtNzMuYwor
-KysgYi9kcml2ZXJzL2h3bW9uL2xtNzMuYwpAQCAtMTk0LDIxICsxOTQsOCBAQCBzdGF0aWMgc3Ry
-dWN0IGkyY19kcml2ZXIgbG03M19kcml2ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9p
-MmMsCiB9OwogCi0vKiBtb2R1bGUgZ2x1ZSAqLwotCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3Jz
-X2xtNzNfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmbG03M19kcml2ZXIp
-OwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vuc29yc19sbTczX2V4aXQodm9pZCkKLXsKLQlp
-MmNfZGVsX2RyaXZlcigmbG03M19kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobG03M19k
-cml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJHdWlsbGF1bWUgTGlnbmV1bCA8Z3VpbGxhdW1lLmxp
-Z25ldWxAZ21haWwuY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJMTTczIGRyaXZlciIpOwog
-TU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2xtNzNfaW5pdCk7
-Ci1tb2R1bGVfZXhpdChzZW5zb3JzX2xtNzNfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3
-bW9uL2xtNzUuYyBiL2RyaXZlcnMvaHdtb24vbG03NS5jCmluZGV4IDE4ODhkZDAuLmYzYWFhMzAg
-MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbG03NS5jCisrKyBiL2RyaXZlcnMvaHdtb24vbG03
-NS5jCkBAIC00MjksMjMgKzQyOSw4IEBAIHN0YXRpYyBzdHJ1Y3QgbG03NV9kYXRhICpsbTc1X3Vw
-ZGF0ZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi0vKi0t
-LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
-LS0tLS0tLS0tLS0tKi8KLQotLyogbW9kdWxlIGdsdWUgKi8KLQotc3RhdGljIGludCBfX2luaXQg
-c2Vuc29yc19sbTc1X2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmxtNzVf
-ZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfbG03NV9leGl0KHZvaWQp
-Ci17Ci0JaTJjX2RlbF9kcml2ZXIoJmxtNzVfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVy
-KGxtNzVfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiRnJvZG8gTG9vaWphYXJkIDxmcm9kb2xA
-ZGRzLm5sPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJMTTc1IGRyaXZlciIpOwogTU9EVUxFX0xJ
-Q0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2xtNzVfaW5pdCk7Ci1tb2R1bGVf
-ZXhpdChzZW5zb3JzX2xtNzVfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2xtNzcu
-YyBiL2RyaXZlcnMvaHdtb24vbG03Ny5jCmluZGV4IDhkZmM2NzguLjdjZDUxNmYgMTAwNjQ0Ci0t
-LSBhL2RyaXZlcnMvaHdtb24vbG03Ny5jCisrKyBiL2RyaXZlcnMvaHdtb24vbG03Ny5jCkBAIC00
-MjAsMTkgKzQyMCw4IEBAIHN0YXRpYyBzdHJ1Y3QgbG03N19kYXRhICpsbTc3X3VwZGF0ZV9kZXZp
-Y2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi1zdGF0aWMgaW50IF9f
-aW5pdCBzZW5zb3JzX2xtNzdfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigm
-bG03N19kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vuc29yc19sbTc3X2V4aXQo
-dm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbG03N19kcml2ZXIpOwotfQorbW9kdWxlX2kyY19k
-cml2ZXIobG03N19kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJBbmRyYXMgQkFMSSA8ZHJld2ll
-QGZyZWVtYWlsLmh1PiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJMTTc3IGRyaXZlciIpOwogTU9E
-VUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2xtNzdfaW5pdCk7Ci1t
-b2R1bGVfZXhpdChzZW5zb3JzX2xtNzdfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9u
-L2xtODAuYyBiL2RyaXZlcnMvaHdtb24vbG04MC5jCmluZGV4IDE4YTBlNmMuLmRjOTgzZWMgMTAw
-NjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbG04MC5jCisrKyBiL2RyaXZlcnMvaHdtb24vbG04MC5j
-CkBAIC01OTUsMjAgKzU5NSw5IEBAIHN0YXRpYyBzdHJ1Y3QgbG04MF9kYXRhICpsbTgwX3VwZGF0
-ZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi1zdGF0aWMg
-aW50IF9faW5pdCBzZW5zb3JzX2xtODBfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2Ry
-aXZlcigmbG04MF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vuc29yc19sbTgw
-X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbG04MF9kcml2ZXIpOwotfQorbW9kdWxl
-X2kyY19kcml2ZXIobG04MF9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJGcm9kbyBMb29pamFh
-cmQgPGZyb2RvbEBkZHMubmw+IGFuZCAiCiAJIlBoaWxpcCBFZGVsYnJvY2sgPHBoaWxAbmV0cm9l
-ZGdlLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTE04MCBkcml2ZXIiKTsKIE1PRFVMRV9M
-SUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc19sbTgwX2luaXQpOwotbW9kdWxl
-X2V4aXQoc2Vuc29yc19sbTgwX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9sbTgz
-LmMgYi9kcml2ZXJzL2h3bW9uL2xtODMuYwppbmRleCA4MjkwNDc2Li5lOWE4YTA2IDEwMDY0NAot
-LS0gYS9kcml2ZXJzL2h3bW9uL2xtODMuYworKysgYi9kcml2ZXJzL2h3bW9uL2xtODMuYwpAQCAt
-NDIzLDE5ICs0MjMsOCBAQCBzdGF0aWMgc3RydWN0IGxtODNfZGF0YSAqbG04M191cGRhdGVfZGV2
-aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBf
-X2luaXQgc2Vuc29yc19sbTgzX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIo
-JmxtODNfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfbG04M19leGl0
-KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmxtODNfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNf
-ZHJpdmVyKGxtODNfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiSmVhbiBEZWx2YXJlIDxraGFs
-aUBsaW51eC1mci5vcmc+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkxNODMgZHJpdmVyIik7CiBN
-T0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfbG04M19pbml0KTsK
-LW1vZHVsZV9leGl0KHNlbnNvcnNfbG04M19leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdt
-b24vbG04NS5jIGIvZHJpdmVycy9od21vbi9sbTg1LmMKaW5kZXggZGE3MmRjMS4uZmQyNjk4MyAx
-MDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTg1LmMKKysrIGIvZHJpdmVycy9od21vbi9sbTg1
-LmMKQEAgLTE2MTEsMjIgKzE2MTEsMTAgQEAgc3RhdGljIHN0cnVjdCBsbTg1X2RhdGEgKmxtODVf
-dXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLQot
-c3RhdGljIGludCBfX2luaXQgc21fbG04NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRf
-ZHJpdmVyKCZsbTg1X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzbV9sbTg1X2V4
-aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbG04NV9kcml2ZXIpOwotfQorbW9kdWxlX2ky
-Y19kcml2ZXIobG04NV9kcml2ZXIpOwogCiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiBNT0RVTEVf
-QVVUSE9SKCJQaGlsaXAgUG9rb3JueSA8cHBva29ybnlAcGVuZ3VpbmNvbXB1dGluZy5jb20+LCAi
-CiAJIk1hcmdpdCBTY2h1YmVydC1XaGlsZSA8bWFyZ2l0c3dAdC1vbmxpbmUuZGU+LCAiCiAJIkp1
-c3RpbiBUaGllc3NlbiA8anRoaWVzc2VuQHBlbmd1aW5jb21wdXRpbmcuY29tPiIpOwogTU9EVUxF
-X0RFU0NSSVBUSU9OKCJMTTg1LUIsIExNODUtQyBkcml2ZXIiKTsKLQotbW9kdWxlX2luaXQoc21f
-bG04NV9pbml0KTsKLW1vZHVsZV9leGl0KHNtX2xtODVfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2
-ZXJzL2h3bW9uL2xtODcuYyBiL2RyaXZlcnMvaHdtb24vbG04Ny5jCmluZGV4IGYxZTZlNzUuLjEy
-NmQwY2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbG04Ny5jCisrKyBiL2RyaXZlcnMvaHdt
-b24vbG04Ny5jCkBAIC05NjMsMTkgKzk2Myw4IEBAIHN0YXRpYyBzdHJ1Y3QgbG04N19kYXRhICps
-bTg3X3VwZGF0ZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQog
-Ci1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2xtODdfaW5pdCh2b2lkKQotewotCXJldHVybiBp
-MmNfYWRkX2RyaXZlcigmbG04N19kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vu
-c29yc19sbTg3X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbG04N19kcml2ZXIpOwot
-fQorbW9kdWxlX2kyY19kcml2ZXIobG04N19kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJKZWFu
-IERlbHZhcmUgPGtoYWxpQGxpbnV4LWZyLm9yZz4gYW5kIG90aGVycyIpOwogTU9EVUxFX0RFU0NS
-SVBUSU9OKCJMTTg3IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVf
-aW5pdChzZW5zb3JzX2xtODdfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX2xtODdfZXhpdCk7
-CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2xtOTAuYyBiL2RyaXZlcnMvaHdtb24vbG05MC5j
-CmluZGV4IDYxNWJjNGYuLmU3MGNiYjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbG05MC5j
-CisrKyBiL2RyaXZlcnMvaHdtb24vbG05MC5jCkBAIC0xNTE0LDE5ICsxNTE0LDggQEAgc3RhdGlj
-IHN0cnVjdCBpMmNfZHJpdmVyIGxtOTBfZHJpdmVyID0gewogCS5hZGRyZXNzX2xpc3QJPSBub3Jt
-YWxfaTJjLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19sbTkwX2luaXQodm9pZCkK
-LXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmxtOTBfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZv
-aWQgX19leGl0IHNlbnNvcnNfbG05MF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmxt
-OTBfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGxtOTBfZHJpdmVyKTsKIAogTU9EVUxF
-X0FVVEhPUigiSmVhbiBEZWx2YXJlIDxraGFsaUBsaW51eC1mci5vcmc+Iik7CiBNT0RVTEVfREVT
-Q1JJUFRJT04oIkxNOTAvQURNMTAzMiBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsK
-LQotbW9kdWxlX2luaXQoc2Vuc29yc19sbTkwX2luaXQpOwotbW9kdWxlX2V4aXQoc2Vuc29yc19s
-bTkwX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9sbTkyLmMgYi9kcml2ZXJzL2h3
-bW9uL2xtOTIuYwppbmRleCA4ZmNiZDRkNC4uOTJmMmQ0NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9o
-d21vbi9sbTkyLmMKKysrIGIvZHJpdmVycy9od21vbi9sbTkyLmMKQEAgLTQxNiwxOSArNDE2LDgg
-QEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGxtOTJfZHJpdmVyID0gewogCS5hZGRyZXNzX2xp
-c3QJPSBub3JtYWxfaTJjLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19sbTkyX2lu
-aXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmxtOTJfZHJpdmVyKTsKLX0KLQot
-c3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfbG05Ml9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9k
-cml2ZXIoJmxtOTJfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGxtOTJfZHJpdmVyKTsK
-IAogTU9EVUxFX0FVVEhPUigiSmVhbiBEZWx2YXJlIDxraGFsaUBsaW51eC1mci5vcmc+Iik7CiBN
-T0RVTEVfREVTQ1JJUFRJT04oIkxNOTIvTUFYNjYzNSBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNF
-KCJHUEwiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc19sbTkyX2luaXQpOwotbW9kdWxlX2V4aXQo
-c2Vuc29yc19sbTkyX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9sbTkzLmMgYi9k
-cml2ZXJzL2h3bW9uL2xtOTMuYwppbmRleCAzYjQzZGY0Li5jYjFiZjhjIDEwMDY0NAotLS0gYS9k
-cml2ZXJzL2h3bW9uL2xtOTMuYworKysgYi9kcml2ZXJzL2h3bW9uL2xtOTMuYwpAQCAtMjYzNSwy
-MCArMjYzNSw5IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsbTkzX2RyaXZlciA9IHsKIAku
-YWRkcmVzc19saXN0CT0gbm9ybWFsX2kyYywKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IGxtOTNf
-aW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmbG05M19kcml2ZXIpOwotfQot
-Ci1zdGF0aWMgdm9pZCBfX2V4aXQgbG05M19leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIo
-JmxtOTNfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGxtOTNfZHJpdmVyKTsKIAogTU9E
-VUxFX0FVVEhPUigiTWFyayBNLiBIb2ZmbWFuIDxtaG9mZm1hbkBsaWdodGxpbmsuY29tPiwgIgog
-CQkiSGFucyBKLiBLb2NoIDxoamtAaGFuc2prb2NoLmRlPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9O
-KCJMTTkzIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChs
-bTkzX2luaXQpOwotbW9kdWxlX2V4aXQobG05M19leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv
-aHdtb24vbG05NTI0MS5jIGIvZHJpdmVycy9od21vbi9sbTk1MjQxLmMKaW5kZXggNTEzOTAxZC4u
-NjA3NGFmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTk1MjQxLmMKKysrIGIvZHJpdmVy
-cy9od21vbi9sbTk1MjQxLmMKQEAgLTQ1NSwxOSArNDU1LDggQEAgc3RhdGljIHN0cnVjdCBpMmNf
-ZHJpdmVyIGxtOTUyNDFfZHJpdmVyID0gewogCS5hZGRyZXNzX2xpc3QJPSBub3JtYWxfaTJjLAog
-fTsKIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19sbTk1MjQxX2luaXQodm9pZCkKLXsKLQly
-ZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmxtOTUyNDFfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQg
-X19leGl0IHNlbnNvcnNfbG05NTI0MV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmxt
-OTUyNDFfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGxtOTUyNDFfZHJpdmVyKTsKIAog
-TU9EVUxFX0FVVEhPUigiRGF2aWRlIFJpenpvIDxlbHBhLnJpenpvQGdtYWlsLmNvbT4iKTsKIE1P
-RFVMRV9ERVNDUklQVElPTigiTE05NTI0MSBzZW5zb3IgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5T
-RSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfbG05NTI0MV9pbml0KTsKLW1vZHVsZV9l
-eGl0KHNlbnNvcnNfbG05NTI0MV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG05
-NTI0NS5jIGIvZHJpdmVycy9od21vbi9sbTk1MjQ1LmMKaW5kZXggZGNlOWU2OC4uODdkZTdkZSAx
-MDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTk1MjQ1LmMKKysrIGIvZHJpdmVycy9od21vbi9s
-bTk1MjQ1LmMKQEAgLTUyNSwxOSArNTI1LDggQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGxt
-OTUyNDVfZHJpdmVyID0gewogCS5hZGRyZXNzX2xpc3QJPSBub3JtYWxfaTJjLAogfTsKIAotc3Rh
-dGljIGludCBfX2luaXQgc2Vuc29yc19sbTk1MjQ1X2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJj
-X2FkZF9kcml2ZXIoJmxtOTUyNDVfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNl
-bnNvcnNfbG05NTI0NV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmxtOTUyNDVfZHJp
-dmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGxtOTUyNDVfZHJpdmVyKTsKIAogTU9EVUxFX0FV
-VEhPUigiQWxleGFuZGVyIFN0ZWluIDxhbGV4YW5kZXIuc3RlaW5Ac3lzdGVjLWVsZWN0cm9uaWMu
-Y29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJMTTk1MjQ1IHNlbnNvciBkcml2ZXIiKTsKIE1P
-RFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc19sbTk1MjQ1X2luaXQp
-OwotbW9kdWxlX2V4aXQoc2Vuc29yc19sbTk1MjQ1X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVy
-cy9od21vbi9sdGM0MTUxLmMgYi9kcml2ZXJzL2h3bW9uL2x0YzQxNTEuYwppbmRleCA0YWMwNmI3
-Li5mNjQ2YjQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2x0YzQxNTEuYworKysgYi9kcml2
-ZXJzL2h3bW9uL2x0YzQxNTEuYwpAQCAtMjM4LDE5ICsyMzgsOCBAQCBzdGF0aWMgc3RydWN0IGky
-Y19kcml2ZXIgbHRjNDE1MV9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlCT0gbHRjNDE1MV9pZCwKIH07
-CiAKLXN0YXRpYyBpbnQgX19pbml0IGx0YzQxNTFfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNf
-YWRkX2RyaXZlcigmbHRjNDE1MV9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgbHRj
-NDE1MV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmx0YzQxNTFfZHJpdmVyKTsKLX0K
-K21vZHVsZV9pMmNfZHJpdmVyKGx0YzQxNTFfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiUGVy
-IERhbGVuIDxwZXIuZGFsZW5AYXBwZWFydHYuY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJM
-VEM0MTUxIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChs
-dGM0MTUxX2luaXQpOwotbW9kdWxlX2V4aXQobHRjNDE1MV9leGl0KTsKZGlmZiAtLWdpdCBhL2Ry
-aXZlcnMvaHdtb24vbHRjNDIxNS5jIGIvZHJpdmVycy9od21vbi9sdGM0MjE1LmMKaW5kZXggYzdl
-NmQ4ZS4uMDc4OWI2MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sdGM0MjE1LmMKKysrIGIv
-ZHJpdmVycy9od21vbi9sdGM0MjE1LmMKQEAgLTMwOSwxOSArMzA5LDggQEAgc3RhdGljIHN0cnVj
-dCBpMmNfZHJpdmVyIGx0YzQyMTVfZHJpdmVyID0gewogCS5pZF90YWJsZQk9IGx0YzQyMTVfaWQs
-CiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBsdGM0MjE1X2luaXQodm9pZCkKLXsKLQlyZXR1cm4g
-aTJjX2FkZF9kcml2ZXIoJmx0YzQyMTVfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0
-IGx0YzQyMTVfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZsdGM0MjE1X2RyaXZlcik7
-Ci19Cittb2R1bGVfaTJjX2RyaXZlcihsdGM0MjE1X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1Io
-IklyYSBXLiBTbnlkZXIgPGl3c0BvdnJvLmNhbHRlY2guZWR1PiIpOwogTU9EVUxFX0RFU0NSSVBU
-SU9OKCJMVEM0MjE1IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVf
-aW5pdChsdGM0MjE1X2luaXQpOwotbW9kdWxlX2V4aXQobHRjNDIxNV9leGl0KTsKZGlmZiAtLWdp
-dCBhL2RyaXZlcnMvaHdtb24vbHRjNDI0NS5jIGIvZHJpdmVycy9od21vbi9sdGM0MjQ1LmMKaW5k
-ZXggNjU5MzA4My4uNjkzYTZiZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sdGM0MjQ1LmMK
-KysrIGIvZHJpdmVycy9od21vbi9sdGM0MjQ1LmMKQEAgLTU3OCwxOSArNTc4LDggQEAgc3RhdGlj
-IHN0cnVjdCBpMmNfZHJpdmVyIGx0YzQyNDVfZHJpdmVyID0gewogCS5pZF90YWJsZQk9IGx0YzQy
-NDVfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBsdGM0MjQ1X2luaXQodm9pZCkKLXsKLQly
-ZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmx0YzQyNDVfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQg
-X19leGl0IGx0YzQyNDVfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZsdGM0MjQ1X2Ry
-aXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihsdGM0MjQ1X2RyaXZlcik7CiAKIE1PRFVMRV9B
-VVRIT1IoIklyYSBXLiBTbnlkZXIgPGl3c0BvdnJvLmNhbHRlY2guZWR1PiIpOwogTU9EVUxFX0RF
-U0NSSVBUSU9OKCJMVEM0MjQ1IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1t
-b2R1bGVfaW5pdChsdGM0MjQ1X2luaXQpOwotbW9kdWxlX2V4aXQobHRjNDI0NV9leGl0KTsKZGlm
-ZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbHRjNDI2MS5jIGIvZHJpdmVycy9od21vbi9sdGM0MjYx
-LmMKaW5kZXggNGI1MDYwMS4uYzc4ZDMyMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sdGM0
-MjYxLmMKKysrIGIvZHJpdmVycy9od21vbi9sdGM0MjYxLmMKQEAgLTI5NiwxOSArMjk2LDggQEAg
-c3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGx0YzQyNjFfZHJpdmVyID0gewogCS5pZF90YWJsZSA9
-IGx0YzQyNjFfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBsdGM0MjYxX2luaXQodm9pZCkK
-LXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmx0YzQyNjFfZHJpdmVyKTsKLX0KLQotc3RhdGlj
-IHZvaWQgX19leGl0IGx0YzQyNjFfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZsdGM0
-MjYxX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihsdGM0MjYxX2RyaXZlcik7CiAKIE1P
-RFVMRV9BVVRIT1IoIkd1ZW50ZXIgUm9lY2sgPGd1ZW50ZXIucm9lY2tAZXJpY3Nzb24uY29tPiIp
-OwogTU9EVUxFX0RFU0NSSVBUSU9OKCJMVEM0MjYxIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0Uo
-IkdQTCIpOwotCi1tb2R1bGVfaW5pdChsdGM0MjYxX2luaXQpOwotbW9kdWxlX2V4aXQobHRjNDI2
-MV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbWF4MTYwNjUuYyBiL2RyaXZlcnMv
-aHdtb24vbWF4MTYwNjUuYwppbmRleCAzODU4ODZhLi5jYTE4ZjUyIDEwMDY0NAotLS0gYS9kcml2
-ZXJzL2h3bW9uL21heDE2MDY1LmMKKysrIGIvZHJpdmVycy9od21vbi9tYXgxNjA2NS5jCkBAIC02
-OTksMTkgKzY5OSw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBtYXgxNjA2NV9kcml2ZXIg
-PSB7CiAJLmlkX3RhYmxlID0gbWF4MTYwNjVfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBt
-YXgxNjA2NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZtYXgxNjA2NV9k
-cml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgbWF4MTYwNjVfZXhpdCh2b2lkKQotewot
-CWkyY19kZWxfZHJpdmVyKCZtYXgxNjA2NV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIo
-bWF4MTYwNjVfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiR3VlbnRlciBSb2VjayA8Z3VlbnRl
-ci5yb2Vja0Blcmljc3Nvbi5jb20+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIk1BWDE2MDY1IGRy
-aXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChtYXgxNjA2NV9p
-bml0KTsKLW1vZHVsZV9leGl0KG1heDE2MDY1X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9o
-d21vbi9tYXgxNjE5LmMgYi9kcml2ZXJzL2h3bW9uL21heDE2MTkuYwppbmRleCAwMjJkZWQwLi4x
-MzU4MjJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL21heDE2MTkuYworKysgYi9kcml2ZXJz
-L2h3bW9uL21heDE2MTkuYwpAQCAtMzUzLDIwICszNTMsOSBAQCBzdGF0aWMgc3RydWN0IG1heDE2
-MTlfZGF0YSAqbWF4MTYxOV91cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1
-cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19tYXgxNjE5X2luaXQodm9p
-ZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJm1heDE2MTlfZHJpdmVyKTsKLX0KLQotc3Rh
-dGljIHZvaWQgX19leGl0IHNlbnNvcnNfbWF4MTYxOV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9k
-cml2ZXIoJm1heDE2MTlfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKG1heDE2MTlfZHJp
-dmVyKTsKIAogTU9EVUxFX0FVVEhPUigiQWxleGV5IEZpc2hlciA8ZmlzaG9yQG1haWwucnU+IGFu
-ZCAiCiAJIkplYW4gRGVsdmFyZSA8a2hhbGlAbGludXgtZnIub3JnPiIpOwogTU9EVUxFX0RFU0NS
-SVBUSU9OKCJNQVgxNjE5IHNlbnNvciBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsK
-LQotbW9kdWxlX2luaXQoc2Vuc29yc19tYXgxNjE5X2luaXQpOwotbW9kdWxlX2V4aXQoc2Vuc29y
-c19tYXgxNjE5X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9tYXgxNjY4LmMgYi9k
-cml2ZXJzL2h3bW9uL21heDE2NjguYwppbmRleCAyMGQxYjJkLi5kNWZiMTE3IDEwMDY0NAotLS0g
-YS9kcml2ZXJzL2h3bW9uL21heDE2NjguYworKysgYi9kcml2ZXJzL2h3bW9uL21heDE2NjguYwpA
-QCAtNDg0LDE5ICs0ODQsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbWF4MTY2OF9kcml2
-ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdCA9IG1heDE2NjhfYWRkcl9saXN0LAogfTsKIAotc3RhdGlj
-IGludCBfX2luaXQgc2Vuc29yc19tYXgxNjY4X2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2Fk
-ZF9kcml2ZXIoJm1heDE2NjhfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNv
-cnNfbWF4MTY2OF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJm1heDE2NjhfZHJpdmVy
-KTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKG1heDE2NjhfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhP
-UigiRGF2aWQgR2VvcmdlIDxkYXZpZC5nZW9yZ2VAc2thLmFjLnphPiIpOwogTU9EVUxFX0RFU0NS
-SVBUSU9OKCJNQVgxNjY4IHJlbW90ZSB0ZW1wZXJhdHVyZSBzZW5zb3IgZHJpdmVyIik7CiBNT0RV
-TEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfbWF4MTY2OF9pbml0KQot
-bW9kdWxlX2V4aXQoc2Vuc29yc19tYXgxNjY4X2V4aXQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3
-bW9uL21heDY2MzkuYyBiL2RyaXZlcnMvaHdtb24vbWF4NjYzOS5jCmluZGV4IGYyMGQ5OTcuLjY0
-ODY2YTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbWF4NjYzOS5jCisrKyBiL2RyaXZlcnMv
-aHdtb24vbWF4NjYzOS5jCkBAIC02MzUsMTkgKzYzNSw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2Ry
-aXZlciBtYXg2NjM5X2RyaXZlciA9IHsKIAkuYWRkcmVzc19saXN0ID0gbm9ybWFsX2kyYywKIH07
-CiAKLXN0YXRpYyBpbnQgX19pbml0IG1heDY2MzlfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNf
-YWRkX2RyaXZlcigmbWF4NjYzOV9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgbWF4
-NjYzOV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJm1heDY2MzlfZHJpdmVyKTsKLX0K
-K21vZHVsZV9pMmNfZHJpdmVyKG1heDY2MzlfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiUm9s
-YW5kIFN0aWdnZSA8c3RpZ2dlQGFudGNvbS5kZT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigibWF4
-NjYzOSBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQobWF4
-NjYzOV9pbml0KTsKLW1vZHVsZV9leGl0KG1heDY2MzlfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2
-ZXJzL2h3bW9uL21heDY2NDIuYyBiL2RyaXZlcnMvaHdtb24vbWF4NjY0Mi5jCmluZGV4IGU4NTVk
-M2IuLjY2ZjBkYmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbWF4NjY0Mi5jCisrKyBiL2Ry
-aXZlcnMvaHdtb24vbWF4NjY0Mi5jCkBAIC0zNTIsMTkgKzM1Miw4IEBAIHN0YXRpYyBzdHJ1Y3Qg
-aTJjX2RyaXZlciBtYXg2NjQyX2RyaXZlciA9IHsKIAkuYWRkcmVzc19saXN0CT0gbm9ybWFsX2ky
-YywKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IG1heDY2NDJfaW5pdCh2b2lkKQotewotCXJldHVy
-biBpMmNfYWRkX2RyaXZlcigmbWF4NjY0Ml9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4
-aXQgbWF4NjY0Ml9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJm1heDY2NDJfZHJpdmVy
-KTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKG1heDY2NDJfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhP
-UigiUGVyIERhbGVuIDxwZXIuZGFsZW5AYXBwZWFydHYuY29tPiIpOwogTU9EVUxFX0RFU0NSSVBU
-SU9OKCJNQVg2NjQyIHNlbnNvciBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQot
-bW9kdWxlX2luaXQobWF4NjY0Ml9pbml0KTsKLW1vZHVsZV9leGl0KG1heDY2NDJfZXhpdCk7CmRp
-ZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL21heDY2NTAuYyBiL2RyaXZlcnMvaHdtb24vbWF4NjY1
-MC5jCmluZGV4IGVjZTNhYWYuLjdhMGNkYjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbWF4
-NjY1MC5jCisrKyBiL2RyaXZlcnMvaHdtb24vbWF4NjY1MC5jCkBAIC03MTMsMTkgKzcxMyw4IEBA
-IHN0YXRpYyBzdHJ1Y3QgbWF4NjY1MF9kYXRhICptYXg2NjUwX3VwZGF0ZV9kZXZpY2Uoc3RydWN0
-IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5z
-b3JzX21heDY2NTBfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmbWF4NjY1
-MF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vuc29yc19tYXg2NjUwX2V4aXQo
-dm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbWF4NjY1MF9kcml2ZXIpOwotfQorbW9kdWxlX2ky
-Y19kcml2ZXIobWF4NjY1MF9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJIYW5zIEouIEtvY2gi
-KTsKIE1PRFVMRV9ERVNDUklQVElPTigiTUFYNjY1MCBzZW5zb3IgZHJpdmVyIik7CiBNT0RVTEVf
-TElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfbWF4NjY1MF9pbml0KTsKLW1v
-ZHVsZV9leGl0KHNlbnNvcnNfbWF4NjY1MF9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdt
-b24vc2h0MjEuYyBiL2RyaXZlcnMvaHdtb24vc2h0MjEuYwppbmRleCAxNTM5ODc4Li42YzJkZWRl
-IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3NodDIxLmMKKysrIGIvZHJpdmVycy9od21vbi9z
-aHQyMS5jCkBAIC0yNjEsMjggKzI2MSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBzaHQy
-MV9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlICAgID0gc2h0MjFfaWQsCiB9OwogCi0vKioKLSAqIHNo
-dDIxX2luaXQoKSAtIGluaXRpYWxpemUgZHJpdmVyCi0gKgotICogQ2FsbGVkIHdoZW4ga2VybmVs
-IGlzIGJvb3RlZCBvciBtb2R1bGUgaXMgaW5zZXJ0ZWQuCi0gKiBSZXR1cm5zIDAgb24gc3VjY2Vz
-cy4KLSAqLwotc3RhdGljIGludCBfX2luaXQgc2h0MjFfaW5pdCh2b2lkKQotewotCXJldHVybiBp
-MmNfYWRkX2RyaXZlcigmc2h0MjFfZHJpdmVyKTsKLX0KLW1vZHVsZV9pbml0KHNodDIxX2luaXQp
-OwotCi0vKioKLSAqIHNodDIxX2luaXQoKSAtIGNsZWFuIHVwIGRyaXZlcgotICoKLSAqIENhbGxl
-ZCB3aGVuIG1vZHVsZSBpcyByZW1vdmVkLgotICovCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2h0MjFf
-ZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZzaHQyMV9kcml2ZXIpOwotfQotbW9kdWxl
-X2V4aXQoc2h0MjFfZXhpdCk7Cittb2R1bGVfaTJjX2RyaXZlcihzaHQyMV9kcml2ZXIpOwogCiBN
-T0RVTEVfQVVUSE9SKCJVcnMgRmxlaXNjaCA8dXJzLmZsZWlzY2hAc2Vuc2lyaW9uLmNvbT4iKTsK
-IE1PRFVMRV9ERVNDUklQVElPTigiU2Vuc2lyaW9uIFNIVDIxIGh1bWlkaXR5IGFuZCB0ZW1wZXJh
-dHVyZSBzZW5zb3IgZHJpdmVyIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3NtbTY2NS5j
-IGIvZHJpdmVycy9od21vbi9zbW02NjUuYwppbmRleCA0MTE2MzgxLi4wZDM5MmQwIDEwMDY0NAot
-LS0gYS9kcml2ZXJzL2h3bW9uL3NtbTY2NS5jCisrKyBiL2RyaXZlcnMvaHdtb24vc21tNjY1LmMK
-QEAgLTcxOCwxOSArNzE4LDggQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHNtbTY2NV9kcml2
-ZXIgPSB7CiAJLmlkX3RhYmxlID0gc21tNjY1X2lkLAogfTsKIAotc3RhdGljIGludCBfX2luaXQg
-c21tNjY1X2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJnNtbTY2NV9kcml2
-ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc21tNjY1X2V4aXQodm9pZCkKLXsKLQlpMmNf
-ZGVsX2RyaXZlcigmc21tNjY1X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihzbW02NjVf
-ZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiR3VlbnRlciBSb2VjayIpOwogTU9EVUxFX0RFU0NS
-SVBUSU9OKCJTTU02NjUgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVs
-ZV9pbml0KHNtbTY2NV9pbml0KTsKLW1vZHVsZV9leGl0KHNtbTY2NV9leGl0KTsKZGlmZiAtLWdp
-dCBhL2RyaXZlcnMvaHdtb24vc21zYzQ3bTE5Mi5jIGIvZHJpdmVycy9od21vbi9zbXNjNDdtMTky
-LmMKaW5kZXggNDBiMjY2Ny4uOGY4ODkwOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9zbXNj
-NDdtMTkyLmMKKysrIGIvZHJpdmVycy9od21vbi9zbXNjNDdtMTkyLmMKQEAgLTYzNSwxOSArNjM1
-LDggQEAgc3RhdGljIHN0cnVjdCBzbXNjNDdtMTkyX2RhdGEgKnNtc2M0N20xOTJfdXBkYXRlX2Rl
-dmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQg
-X19pbml0IHNtc2M0N20xOTJfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigm
-c21zYzQ3bTE5Ml9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc21zYzQ3bTE5Ml9l
-eGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnNtc2M0N20xOTJfZHJpdmVyKTsKLX0KK21v
-ZHVsZV9pMmNfZHJpdmVyKHNtc2M0N20xOTJfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiSGFy
-dG11dCBSaWNrIDxsaW51eEByaWNrLmNsYXJhbmV0LmRlPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9O
-KCJTTVNDNDdNMTkyIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVf
-aW5pdChzbXNjNDdtMTkyX2luaXQpOwotbW9kdWxlX2V4aXQoc21zYzQ3bTE5Ml9leGl0KTsKZGlm
-ZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vdGhtYzUwLmMgYi9kcml2ZXJzL2h3bW9uL3RobWM1MC5j
-CmluZGV4IDdkZmI0ZGUuLmJkODNiYzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vdGhtYzUw
-LmMKKysrIGIvZHJpdmVycy9od21vbi90aG1jNTAuYwpAQCAtNDY1LDE4ICs0NjUsNyBAQCBzdGF0
-aWMgc3RydWN0IHRobWM1MF9kYXRhICp0aG1jNTBfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNl
-ICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNtX3RobWM1MF9p
-bml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZ0aG1jNTBfZHJpdmVyKTsKLX0K
-LQotc3RhdGljIHZvaWQgX19leGl0IHNtX3RobWM1MF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9k
-cml2ZXIoJnRobWM1MF9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIodGhtYzUwX2RyaXZl
-cik7CiAKIE1PRFVMRV9BVVRIT1IoIktyenlzenRvZiBIZWx0IDxrcnp5c3p0b2YuaDFAd3AucGw+
-Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlRITUM1MCBkcml2ZXIiKTsKLQotbW9kdWxlX2luaXQo
-c21fdGhtYzUwX2luaXQpOwotbW9kdWxlX2V4aXQoc21fdGhtYzUwX2V4aXQpOwpkaWZmIC0tZ2l0
-IGEvZHJpdmVycy9od21vbi90bXAxMDIuYyBiL2RyaXZlcnMvaHdtb24vdG1wMTAyLmMKaW5kZXgg
-NjQzYWE4Yy4uNDBiNzQyYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi90bXAxMDIuYworKysg
-Yi9kcml2ZXJzL2h3bW9uL3RtcDEwMi5jCkBAIC0yOTIsMTcgKzI5Miw3IEBAIHN0YXRpYyBzdHJ1
-Y3QgaTJjX2RyaXZlciB0bXAxMDJfZHJpdmVyID0gewogCS5pZF90YWJsZQk9IHRtcDEwMl9pZCwK
-IH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHRtcDEwMl9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGky
-Y19hZGRfZHJpdmVyKCZ0bXAxMDJfZHJpdmVyKTsKLX0KLW1vZHVsZV9pbml0KHRtcDEwMl9pbml0
-KTsKLQotc3RhdGljIHZvaWQgX19leGl0IHRtcDEwMl9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9k
-cml2ZXIoJnRtcDEwMl9kcml2ZXIpOwotfQotbW9kdWxlX2V4aXQodG1wMTAyX2V4aXQpOworbW9k
-dWxlX2kyY19kcml2ZXIodG1wMTAyX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlN0ZXZlbiBL
-aW5nIDxzZmtpbmdAZmR3ZGMuY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJUZXhhcyBJbnN0
-cnVtZW50cyBUTVAxMDIgdGVtcGVyYXR1cmUgc2Vuc29yIGRyaXZlciIpOwpkaWZmIC0tZ2l0IGEv
-ZHJpdmVycy9od21vbi90bXA0MDEuYyBiL2RyaXZlcnMvaHdtb24vdG1wNDAxLmMKaW5kZXggYWQ4
-ZDUzNS4uYTMyZDRkYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi90bXA0MDEuYworKysgYi9k
-cml2ZXJzL2h3bW9uL3RtcDQwMS5jCkBAIC02NjIsMTkgKzY2Miw4IEBAIHN0YXRpYyBzdHJ1Y3Qg
-aTJjX2RyaXZlciB0bXA0MDFfZHJpdmVyID0gewogCS5hZGRyZXNzX2xpc3QJPSBub3JtYWxfaTJj
-LAogfTsKIAotc3RhdGljIGludCBfX2luaXQgdG1wNDAxX2luaXQodm9pZCkKLXsKLQlyZXR1cm4g
-aTJjX2FkZF9kcml2ZXIoJnRtcDQwMV9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQg
-dG1wNDAxX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmdG1wNDAxX2RyaXZlcik7Ci19
-Cittb2R1bGVfaTJjX2RyaXZlcih0bXA0MDFfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiSGFu
-cyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigi
-VGV4YXMgSW5zdHJ1bWVudHMgVE1QNDAxIHRlbXBlcmF0dXJlIHNlbnNvciBkcml2ZXIiKTsKIE1P
-RFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQodG1wNDAxX2luaXQpOwotbW9kdWxl
-X2V4aXQodG1wNDAxX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi90bXA0MjEuYyBi
-L2RyaXZlcnMvaHdtb24vdG1wNDIxLmMKaW5kZXggMDUxN2E4Zi4uYWE1NTYyZCAxMDA2NDQKLS0t
-IGEvZHJpdmVycy9od21vbi90bXA0MjEuYworKysgYi9kcml2ZXJzL2h3bW9uL3RtcDQyMS5jCkBA
-IC0zMjQsMjAgKzMyNCw5IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciB0bXA0MjFfZHJpdmVy
-ID0gewogCS5hZGRyZXNzX2xpc3QgPSBub3JtYWxfaTJjLAogfTsKIAotc3RhdGljIGludCBfX2lu
-aXQgdG1wNDIxX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJnRtcDQyMV9k
-cml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgdG1wNDIxX2V4aXQodm9pZCkKLXsKLQlp
-MmNfZGVsX2RyaXZlcigmdG1wNDIxX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcih0bXA0
-MjFfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiQW5kcmUgUHJlbmRlbCA8YW5kcmUucHJlbmRl
-bEBnbXguZGU+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlRleGFzIEluc3RydW1lbnRzIFRNUDQy
-MS80MjIvNDIzIHRlbXBlcmF0dXJlIHNlbnNvciIKIAkJICAgIiBkcml2ZXIiKTsKIE1PRFVMRV9M
-SUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQodG1wNDIxX2luaXQpOwotbW9kdWxlX2V4aXQo
-dG1wNDIxX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi93ODM3OTFkLmMgYi9kcml2
-ZXJzL2h3bW9uL3c4Mzc5MWQuYwppbmRleCA4YzI4NDRlLi4xNzI5ZjE0IDEwMDY0NAotLS0gYS9k
-cml2ZXJzL2h3bW9uL3c4Mzc5MWQuYworKysgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5MWQuYwpAQCAt
-MTYyNSwxOSArMTYyNSw4IEBAIHN0YXRpYyB2b2lkIHc4Mzc5MWRfcHJpbnRfZGVidWcoc3RydWN0
-IHc4Mzc5MWRfZGF0YSAqZGF0YSwgc3RydWN0IGRldmljZSAqZGV2KQogfQogI2VuZGlmCiAKLXN0
-YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfdzgzNzkxZF9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGky
-Y19hZGRfZHJpdmVyKCZ3ODM3OTFkX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBz
-ZW5zb3JzX3c4Mzc5MWRfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZ3ODM3OTFkX2Ry
-aXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcih3ODM3OTFkX2RyaXZlcik7CiAKIE1PRFVMRV9B
-VVRIT1IoIkNoYXJsZXMgU3BpcmFraXMgPGJlemF1ckBnbWFpbC5jb20+Iik7CiBNT0RVTEVfREVT
-Q1JJUFRJT04oIlc4Mzc5MUQgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1v
-ZHVsZV9pbml0KHNlbnNvcnNfdzgzNzkxZF9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfdzgz
-NzkxZF9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vdzgzNzkyZC5jIGIvZHJpdmVy
-cy9od21vbi93ODM3OTJkLmMKaW5kZXggZjNlNzEzMC4uNDMyNDZlOCAxMDA2NDQKLS0tIGEvZHJp
-dmVycy9od21vbi93ODM3OTJkLmMKKysrIGIvZHJpdmVycy9od21vbi93ODM3OTJkLmMKQEAgLTE2
-NDEsMjIgKzE2NDEsOCBAQCBzdGF0aWMgdm9pZCB3ODM3OTJkX3ByaW50X2RlYnVnKHN0cnVjdCB3
-ODM3OTJkX2RhdGEgKmRhdGEsIHN0cnVjdCBkZXZpY2UgKmRldikKIH0KICNlbmRpZgogCi1zdGF0
-aWMgaW50IF9faW5pdAotc2Vuc29yc193ODM3OTJkX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJj
-X2FkZF9kcml2ZXIoJnc4Mzc5MmRfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0Ci1z
-ZW5zb3JzX3c4Mzc5MmRfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZ3ODM3OTJkX2Ry
-aXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcih3ODM3OTJkX2RyaXZlcik7CiAKIE1PRFVMRV9B
-VVRIT1IoIkNodW5oYW8gSHVhbmcgQCBXaW5ib25kIDxEWlNoZW5AV2luYm9uZC5jb20udHc+Iik7
-CiBNT0RVTEVfREVTQ1JJUFRJT04oIlc4Mzc5MkFEL0QgZHJpdmVyIGZvciBsaW51eC0yLjYiKTsK
-IE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc193ODM3OTJkX2lu
-aXQpOwotbW9kdWxlX2V4aXQoc2Vuc29yc193ODM3OTJkX2V4aXQpOwotCmRpZmYgLS1naXQgYS9k
-cml2ZXJzL2h3bW9uL3c4Mzc5My5jIGIvZHJpdmVycy9od21vbi93ODM3OTMuYwppbmRleCA4NTRm
-OTExLi43N2RkNDY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3c4Mzc5My5jCisrKyBiL2Ry
-aXZlcnMvaHdtb24vdzgzNzkzLmMKQEAgLTIxMjAsMTkgKzIxMjAsOCBAQCBFTkQ6CiAJcmV0dXJu
-IHJlczsKIH0KIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc193ODM3OTNfaW5pdCh2b2lkKQot
-ewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmdzgzNzkzX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2
-b2lkIF9fZXhpdCBzZW5zb3JzX3c4Mzc5M19leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIo
-Jnc4Mzc5M19kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIodzgzNzkzX2RyaXZlcik7CiAK
-IE1PRFVMRV9BVVRIT1IoIll1YW4gTXUsIFN2ZW4gQW5kZXJzIik7CiBNT0RVTEVfREVTQ1JJUFRJ
-T04oInc4Mzc5MyBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2lu
-aXQoc2Vuc29yc193ODM3OTNfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX3c4Mzc5M19leGl0
-KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vdzgzNzk1LmMgYi9kcml2ZXJzL2h3bW9uL3c4
-Mzc5NS5jCmluZGV4IDg0NTIzMmQuLjI1ZDc0MWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24v
-dzgzNzk1LmMKKysrIGIvZHJpdmVycy9od21vbi93ODM3OTUuYwpAQCAtMjI0NCwxOSArMjI0NCw4
-IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciB3ODM3OTVfZHJpdmVyID0gewogCS5hZGRyZXNz
-X2xpc3QJPSBub3JtYWxfaTJjLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc193ODM3
-OTVfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmdzgzNzk1X2RyaXZlcik7
-Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX3c4Mzc5NV9leGl0KHZvaWQpCi17Ci0J
-aTJjX2RlbF9kcml2ZXIoJnc4Mzc5NV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIodzgz
-Nzk1X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIldlaSBTb25nLCBKZWFuIERlbHZhcmUgPGto
-YWxpQGxpbnV4LWZyLm9yZz4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiVzgzNzk1Ry9BREcgaGFy
-ZHdhcmUgbW9uaXRvcmluZyBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9k
-dWxlX2luaXQoc2Vuc29yc193ODM3OTVfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX3c4Mzc5
-NV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vdzgzbDc4NXRzLmMgYi9kcml2ZXJz
-L2h3bW9uL3c4M2w3ODV0cy5jCmluZGV4IDIwNzgxZGUuLjU3ZjYzOWUgMTAwNjQ0Ci0tLSBhL2Ry
-aXZlcnMvaHdtb24vdzgzbDc4NXRzLmMKKysrIGIvZHJpdmVycy9od21vbi93ODNsNzg1dHMuYwpA
-QCAtMzAyLDE5ICszMDIsOCBAQCBzdGF0aWMgc3RydWN0IHc4M2w3ODV0c19kYXRhICp3ODNsNzg1
-dHNfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAK
-LXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfdzgzbDc4NXRzX2luaXQodm9pZCkKLXsKLQlyZXR1
-cm4gaTJjX2FkZF9kcml2ZXIoJnc4M2w3ODV0c19kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBf
-X2V4aXQgc2Vuc29yc193ODNsNzg1dHNfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZ3
-ODNsNzg1dHNfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKHc4M2w3ODV0c19kcml2ZXIp
-OwogCiBNT0RVTEVfQVVUSE9SKCJKZWFuIERlbHZhcmUgPGtoYWxpQGxpbnV4LWZyLm9yZz4iKTsK
-IE1PRFVMRV9ERVNDUklQVElPTigiVzgzTDc4NVRTLVMgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5T
-RSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfdzgzbDc4NXRzX2luaXQpOwotbW9kdWxl
-X2V4aXQoc2Vuc29yc193ODNsNzg1dHNfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9u
-L3c4M2w3ODZuZy5jIGIvZHJpdmVycy9od21vbi93ODNsNzg2bmcuYwppbmRleCAwMjU0ZTE4Li44
-YjEyMGViIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3c4M2w3ODZuZy5jCisrKyBiL2RyaXZl
-cnMvaHdtb24vdzgzbDc4Nm5nLmMKQEAgLTc2OSwyMSArNzY5LDggQEAgc3RhdGljIHN0cnVjdCB3
-ODNsNzg2bmdfZGF0YSAqdzgzbDc4Nm5nX3VwZGF0ZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2
-KQogCXJldHVybiBkYXRhOwogfQogCi1zdGF0aWMgaW50IF9faW5pdAotc2Vuc29yc193ODNsNzg2
-bmdfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmdzgzbDc4Nm5nX2RyaXZl
-cik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdAotc2Vuc29yc193ODNsNzg2bmdfZXhpdCh2b2lk
-KQotewotCWkyY19kZWxfZHJpdmVyKCZ3ODNsNzg2bmdfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNf
-ZHJpdmVyKHc4M2w3ODZuZ19kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJLZXZpbiBMbyIpOwog
-TU9EVUxFX0RFU0NSSVBUSU9OKCJ3ODNsNzg2bmcgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgi
-R1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfdzgzbDc4Nm5nX2luaXQpOwotbW9kdWxlX2V4
-aXQoc2Vuc29yc193ODNsNzg2bmdfZXhpdCk7Ci0tIAoxLjcuNS40CgoKCgpfX19fX19fX19fX19f
-X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsbS1zZW5zb3JzIG1haWxpbmcgbGlz
-dApsbS1zZW5zb3JzQGxtLXNlbnNvcnMub3JnCmh0dHA6Ly9saXN0cy5sbS1zZW5zb3JzLm9yZy9t
-YWlsbWFuL2xpc3RpbmZvL2xtLXNlbnNvcnM
+This patch converts the drivers in drivers/hwmon/* to use the
+module_i2c_driver() macro which makes the code smaller and a bit
+simpler.
+
+Cc: Corentin Labbe <corentin.labbe@geomatys.fr>
+Cc: Dirk Eibach <eibach@gdsys.de>
+Cc: "Mark M. Hoffman" <mhoffman@lightlink.com>
+Cc: Steve Glendinning <steve.glendinning@smsc.com>
+Cc: Riku Voipio <riku.voipio@iki.fi>
+Cc: Guillaume Ligneul <guillaume.ligneul@gmail.com>
+Cc: David George <david.george@ska.ac.za>
+Cc: "Hans J. Koch" <hjk@hansjkoch.de>
+Cc: Marc Hulsman <m.hulsman@tudelft.nl>
+Cc: Rudolf Marek <r.marek@assembler.cz>
+Signed-off-by: Axel Lin <axel.lin@gmail.com>
+---
+ drivers/hwmon/ad7414.c      |   12 +-----------
+ drivers/hwmon/ad7418.c      |   13 +------------
+ drivers/hwmon/adm1021.c     |   13 +------------
+ drivers/hwmon/adm1025.c     |   13 +------------
+ drivers/hwmon/adm1026.c     |   13 +------------
+ drivers/hwmon/adm1029.c     |   18 +-----------------
+ drivers/hwmon/adm1031.c     |   13 +------------
+ drivers/hwmon/adm9240.c     |   14 +-------------
+ drivers/hwmon/ads1015.c     |   13 +------------
+ drivers/hwmon/adt7411.c     |   12 +-----------
+ drivers/hwmon/adt7462.c     |   13 +------------
+ drivers/hwmon/adt7470.c     |   13 +------------
+ drivers/hwmon/adt7475.c     |   13 +------------
+ drivers/hwmon/amc6821.c     |   15 +--------------
+ drivers/hwmon/asb100.c      |   13 +------------
+ drivers/hwmon/atxp1.c       |   13 +------------
+ drivers/hwmon/ds1621.c      |   14 +-------------
+ drivers/hwmon/ds620.c       |   13 +------------
+ drivers/hwmon/emc1403.c     |   13 +------------
+ drivers/hwmon/emc2103.c     |   13 +------------
+ drivers/hwmon/emc6w201.c    |   12 +-----------
+ drivers/hwmon/f75375s.c     |   13 +------------
+ drivers/hwmon/fschmd.c      |   13 +------------
+ drivers/hwmon/g760a.c       |   15 +--------------
+ drivers/hwmon/gl518sm.c     |   13 +------------
+ drivers/hwmon/gl520sm.c     |   15 +--------------
+ drivers/hwmon/jc42.c        |   13 +------------
+ drivers/hwmon/lineage-pem.c |   13 +------------
+ drivers/hwmon/lm63.c        |   13 +------------
+ drivers/hwmon/lm73.c        |   15 +--------------
+ drivers/hwmon/lm75.c        |   17 +----------------
+ drivers/hwmon/lm77.c        |   13 +------------
+ drivers/hwmon/lm80.c        |   13 +------------
+ drivers/hwmon/lm83.c        |   13 +------------
+ drivers/hwmon/lm85.c        |   14 +-------------
+ drivers/hwmon/lm87.c        |   13 +------------
+ drivers/hwmon/lm90.c        |   13 +------------
+ drivers/hwmon/lm92.c        |   13 +------------
+ drivers/hwmon/lm93.c        |   13 +------------
+ drivers/hwmon/lm95241.c     |   13 +------------
+ drivers/hwmon/lm95245.c     |   13 +------------
+ drivers/hwmon/ltc4151.c     |   13 +------------
+ drivers/hwmon/ltc4215.c     |   13 +------------
+ drivers/hwmon/ltc4245.c     |   13 +------------
+ drivers/hwmon/ltc4261.c     |   13 +------------
+ drivers/hwmon/max16065.c    |   13 +------------
+ drivers/hwmon/max1619.c     |   13 +------------
+ drivers/hwmon/max1668.c     |   13 +------------
+ drivers/hwmon/max6639.c     |   13 +------------
+ drivers/hwmon/max6642.c     |   13 +------------
+ drivers/hwmon/max6650.c     |   13 +------------
+ drivers/hwmon/sht21.c       |   23 +----------------------
+ drivers/hwmon/smm665.c      |   13 +------------
+ drivers/hwmon/smsc47m192.c  |   13 +------------
+ drivers/hwmon/thmc50.c      |   13 +------------
+ drivers/hwmon/tmp102.c      |   12 +-----------
+ drivers/hwmon/tmp401.c      |   13 +------------
+ drivers/hwmon/tmp421.c      |   13 +------------
+ drivers/hwmon/w83791d.c     |   13 +------------
+ drivers/hwmon/w83792d.c     |   16 +---------------
+ drivers/hwmon/w83793.c      |   13 +------------
+ drivers/hwmon/w83795.c      |   13 +------------
+ drivers/hwmon/w83l785ts.c   |   13 +------------
+ drivers/hwmon/w83l786ng.c   |   15 +--------------
+ 64 files changed, 64 insertions(+), 799 deletions(-)
+
+diff --git a/drivers/hwmon/ad7414.c b/drivers/hwmon/ad7414.c
+index df29a7f..22c2420 100644
+--- a/drivers/hwmon/ad7414.c
++++ b/drivers/hwmon/ad7414.c
+@@ -252,17 +252,7 @@ static struct i2c_driver ad7414_driver = {
+ 	.id_table = ad7414_id,
+ };
+ 
+-static int __init ad7414_init(void)
+-{
+-	return i2c_add_driver(&ad7414_driver);
+-}
+-module_init(ad7414_init);
+-
+-static void __exit ad7414_exit(void)
+-{
+-	i2c_del_driver(&ad7414_driver);
+-}
+-module_exit(ad7414_exit);
++module_i2c_driver(ad7414_driver);
+ 
+ MODULE_AUTHOR("Stefan Roese <sr at denx.de>, "
+ 	      "Frank Edelhaeuser <frank.edelhaeuser at spansion.com>");
+diff --git a/drivers/hwmon/ad7418.c b/drivers/hwmon/ad7418.c
+index 8cb718c..367244b 100644
+--- a/drivers/hwmon/ad7418.c
++++ b/drivers/hwmon/ad7418.c
+@@ -289,20 +289,9 @@ static int ad7418_remove(struct i2c_client *client)
+ 	return 0;
+ }
+ 
+-static int __init ad7418_init(void)
+-{
+-	return i2c_add_driver(&ad7418_driver);
+-}
+-
+-static void __exit ad7418_exit(void)
+-{
+-	i2c_del_driver(&ad7418_driver);
+-}
++module_i2c_driver(ad7418_driver);
+ 
+ MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>");
+ MODULE_DESCRIPTION("AD7416/17/18 driver");
+ MODULE_LICENSE("GPL");
+ MODULE_VERSION(DRV_VERSION);
+-
+-module_init(ad7418_init);
+-module_exit(ad7418_exit);
+diff --git a/drivers/hwmon/adm1021.c b/drivers/hwmon/adm1021.c
+index 1ad0a88..5498aee 100644
+--- a/drivers/hwmon/adm1021.c
++++ b/drivers/hwmon/adm1021.c
+@@ -451,15 +451,7 @@ static struct adm1021_data *adm1021_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sensors_adm1021_init(void)
+-{
+-	return i2c_add_driver(&adm1021_driver);
+-}
+-
+-static void __exit sensors_adm1021_exit(void)
+-{
+-	i2c_del_driver(&adm1021_driver);
+-}
++module_i2c_driver(adm1021_driver);
+ 
+ MODULE_AUTHOR ("Frodo Looijaard <frodol@dds.nl> and "
+ 		"Philip Edelbrock <phil@netroedge.com>");
+@@ -468,6 +460,3 @@ MODULE_LICENSE("GPL");
+ 
+ module_param(read_only, bool, 0);
+ MODULE_PARM_DESC(read_only, "Don't set any values, read only mode");
+-
+-module_init(sensors_adm1021_init)
+-module_exit(sensors_adm1021_exit)
+diff --git a/drivers/hwmon/adm1025.c b/drivers/hwmon/adm1025.c
+index 60befc0..f02c38b 100644
+--- a/drivers/hwmon/adm1025.c
++++ b/drivers/hwmon/adm1025.c
+@@ -589,19 +589,8 @@ static struct adm1025_data *adm1025_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sensors_adm1025_init(void)
+-{
+-	return i2c_add_driver(&adm1025_driver);
+-}
+-
+-static void __exit sensors_adm1025_exit(void)
+-{
+-	i2c_del_driver(&adm1025_driver);
+-}
++module_i2c_driver(adm1025_driver);
+ 
+ MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>");
+ MODULE_DESCRIPTION("ADM1025 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_adm1025_init);
+-module_exit(sensors_adm1025_exit);
+diff --git a/drivers/hwmon/adm1026.c b/drivers/hwmon/adm1026.c
+index 0531867..be17083 100644
+--- a/drivers/hwmon/adm1026.c
++++ b/drivers/hwmon/adm1026.c
+@@ -1761,20 +1761,9 @@ static int adm1026_remove(struct i2c_client *client)
+ 	return 0;
+ }
+ 
+-static int __init sm_adm1026_init(void)
+-{
+-	return i2c_add_driver(&adm1026_driver);
+-}
+-
+-static void __exit sm_adm1026_exit(void)
+-{
+-	i2c_del_driver(&adm1026_driver);
+-}
++module_i2c_driver(adm1026_driver);
+ 
+ MODULE_LICENSE("GPL");
+ MODULE_AUTHOR("Philip Pokorny <ppokorny@penguincomputing.com>, "
+ 	      "Justin Thiessen <jthiessen@penguincomputing.com>");
+ MODULE_DESCRIPTION("ADM1026 driver");
+-
+-module_init(sm_adm1026_init);
+-module_exit(sm_adm1026_exit);
+diff --git a/drivers/hwmon/adm1029.c b/drivers/hwmon/adm1029.c
+index 0b8a3b1..8e5adb2 100644
+--- a/drivers/hwmon/adm1029.c
++++ b/drivers/hwmon/adm1029.c
+@@ -446,24 +446,8 @@ static struct adm1029_data *adm1029_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-/*
+-	Common module stuff
+-*/
+-static int __init sensors_adm1029_init(void)
+-{
+-
+-	return i2c_add_driver(&adm1029_driver);
+-}
+-
+-static void __exit sensors_adm1029_exit(void)
+-{
+-
+-	i2c_del_driver(&adm1029_driver);
+-}
++module_i2c_driver(adm1029_driver);
+ 
+ MODULE_AUTHOR("Corentin LABBE <corentin.labbe@geomatys.fr>");
+ MODULE_DESCRIPTION("adm1029 driver");
+ MODULE_LICENSE("GPL v2");
+-
+-module_init(sensors_adm1029_init);
+-module_exit(sensors_adm1029_exit);
+diff --git a/drivers/hwmon/adm1031.c b/drivers/hwmon/adm1031.c
+index 0683e6b..71be42c 100644
+--- a/drivers/hwmon/adm1031.c
++++ b/drivers/hwmon/adm1031.c
+@@ -1078,19 +1078,8 @@ static struct adm1031_data *adm1031_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sensors_adm1031_init(void)
+-{
+-	return i2c_add_driver(&adm1031_driver);
+-}
+-
+-static void __exit sensors_adm1031_exit(void)
+-{
+-	i2c_del_driver(&adm1031_driver);
+-}
++module_i2c_driver(adm1031_driver);
+ 
+ MODULE_AUTHOR("Alexandre d'Alton <alex@alexdalton.org>");
+ MODULE_DESCRIPTION("ADM1031/ADM1030 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_adm1031_init);
+-module_exit(sensors_adm1031_exit);
+diff --git a/drivers/hwmon/adm9240.c b/drivers/hwmon/adm9240.c
+index 9e234b9..5e307ba 100644
+--- a/drivers/hwmon/adm9240.c
++++ b/drivers/hwmon/adm9240.c
+@@ -795,21 +795,9 @@ static struct adm9240_data *adm9240_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sensors_adm9240_init(void)
+-{
+-	return i2c_add_driver(&adm9240_driver);
+-}
+-
+-static void __exit sensors_adm9240_exit(void)
+-{
+-	i2c_del_driver(&adm9240_driver);
+-}
++module_i2c_driver(adm9240_driver);
+ 
+ MODULE_AUTHOR("Michiel Rook <michiel@grendelproject.nl>, "
+ 		"Grant Coady <gcoady.lk@gmail.com> and others");
+ MODULE_DESCRIPTION("ADM9240/DS1780/LM81 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_adm9240_init);
+-module_exit(sensors_adm9240_exit);
+-
+diff --git a/drivers/hwmon/ads1015.c b/drivers/hwmon/ads1015.c
+index eedca3c..60be358 100644
+--- a/drivers/hwmon/ads1015.c
++++ b/drivers/hwmon/ads1015.c
+@@ -306,19 +306,8 @@ static struct i2c_driver ads1015_driver = {
+ 	.id_table = ads1015_id,
+ };
+ 
+-static int __init sensors_ads1015_init(void)
+-{
+-	return i2c_add_driver(&ads1015_driver);
+-}
+-
+-static void __exit sensors_ads1015_exit(void)
+-{
+-	i2c_del_driver(&ads1015_driver);
+-}
++module_i2c_driver(ads1015_driver);
+ 
+ MODULE_AUTHOR("Dirk Eibach <eibach@gdsys.de>");
+ MODULE_DESCRIPTION("ADS1015 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_ads1015_init);
+-module_exit(sensors_ads1015_exit);
+diff --git a/drivers/hwmon/adt7411.c b/drivers/hwmon/adt7411.c
+index 5cc3e37..e4d86ca 100644
+--- a/drivers/hwmon/adt7411.c
++++ b/drivers/hwmon/adt7411.c
+@@ -348,17 +348,7 @@ static struct i2c_driver adt7411_driver = {
+ 	.class = I2C_CLASS_HWMON,
+ };
+ 
+-static int __init sensors_adt7411_init(void)
+-{
+-	return i2c_add_driver(&adt7411_driver);
+-}
+-module_init(sensors_adt7411_init)
+-
+-static void __exit sensors_adt7411_exit(void)
+-{
+-	i2c_del_driver(&adt7411_driver);
+-}
+-module_exit(sensors_adt7411_exit)
++module_i2c_driver(adt7411_driver);
+ 
+ MODULE_AUTHOR("Sascha Hauer <s.hauer@pengutronix.de> and "
+ 	"Wolfram Sang <w.sang@pengutronix.de>");
+diff --git a/drivers/hwmon/adt7462.c b/drivers/hwmon/adt7462.c
+index 2af0c7b..1beb8a9 100644
+--- a/drivers/hwmon/adt7462.c
++++ b/drivers/hwmon/adt7462.c
+@@ -1975,19 +1975,8 @@ static int adt7462_remove(struct i2c_client *client)
+ 	return 0;
+ }
+ 
+-static int __init adt7462_init(void)
+-{
+-	return i2c_add_driver(&adt7462_driver);
+-}
+-
+-static void __exit adt7462_exit(void)
+-{
+-	i2c_del_driver(&adt7462_driver);
+-}
++module_i2c_driver(adt7462_driver);
+ 
+ MODULE_AUTHOR("Darrick J. Wong <djwong@us.ibm.com>");
+ MODULE_DESCRIPTION("ADT7462 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(adt7462_init);
+-module_exit(adt7462_exit);
+diff --git a/drivers/hwmon/adt7470.c b/drivers/hwmon/adt7470.c
+index c6d1ce0..ddca215 100644
+--- a/drivers/hwmon/adt7470.c
++++ b/drivers/hwmon/adt7470.c
+@@ -1317,19 +1317,8 @@ static int adt7470_remove(struct i2c_client *client)
+ 	return 0;
+ }
+ 
+-static int __init adt7470_init(void)
+-{
+-	return i2c_add_driver(&adt7470_driver);
+-}
+-
+-static void __exit adt7470_exit(void)
+-{
+-	i2c_del_driver(&adt7470_driver);
+-}
++module_i2c_driver(adt7470_driver);
+ 
+ MODULE_AUTHOR("Darrick J. Wong <djwong@us.ibm.com>");
+ MODULE_DESCRIPTION("ADT7470 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(adt7470_init);
+-module_exit(adt7470_exit);
+diff --git a/drivers/hwmon/adt7475.c b/drivers/hwmon/adt7475.c
+index b5fcd87..c753548 100644
+--- a/drivers/hwmon/adt7475.c
++++ b/drivers/hwmon/adt7475.c
+@@ -1600,19 +1600,8 @@ static struct adt7475_data *adt7475_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sensors_adt7475_init(void)
+-{
+-	return i2c_add_driver(&adt7475_driver);
+-}
+-
+-static void __exit sensors_adt7475_exit(void)
+-{
+-	i2c_del_driver(&adt7475_driver);
+-}
++module_i2c_driver(adt7475_driver);
+ 
+ MODULE_AUTHOR("Advanced Micro Devices, Inc");
+ MODULE_DESCRIPTION("adt7475 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_adt7475_init);
+-module_exit(sensors_adt7475_exit);
+diff --git a/drivers/hwmon/amc6821.c b/drivers/hwmon/amc6821.c
+index 4033974..da6ca4f 100644
+--- a/drivers/hwmon/amc6821.c
++++ b/drivers/hwmon/amc6821.c
+@@ -1095,20 +1095,7 @@ static struct amc6821_data *amc6821_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-
+-static int __init amc6821_init(void)
+-{
+-	return i2c_add_driver(&amc6821_driver);
+-}
+-
+-static void __exit amc6821_exit(void)
+-{
+-	i2c_del_driver(&amc6821_driver);
+-}
+-
+-module_init(amc6821_init);
+-module_exit(amc6821_exit);
+-
++module_i2c_driver(amc6821_driver);
+ 
+ MODULE_LICENSE("GPL");
+ MODULE_AUTHOR("T. Mertelj <tomaz.mertelj@guest.arnes.si>");
+diff --git a/drivers/hwmon/asb100.c b/drivers/hwmon/asb100.c
+index d7bd1f3..0f300c6 100644
+--- a/drivers/hwmon/asb100.c
++++ b/drivers/hwmon/asb100.c
+@@ -971,19 +971,8 @@ static struct asb100_data *asb100_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init asb100_init(void)
+-{
+-	return i2c_add_driver(&asb100_driver);
+-}
+-
+-static void __exit asb100_exit(void)
+-{
+-	i2c_del_driver(&asb100_driver);
+-}
++module_i2c_driver(asb100_driver);
+ 
+ MODULE_AUTHOR("Mark M. Hoffman <mhoffman@lightlink.com>");
+ MODULE_DESCRIPTION("ASB100 Bach driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(asb100_init);
+-module_exit(asb100_exit);
+diff --git a/drivers/hwmon/atxp1.c b/drivers/hwmon/atxp1.c
+index 33cc143..701bc9d 100644
+--- a/drivers/hwmon/atxp1.c
++++ b/drivers/hwmon/atxp1.c
+@@ -367,15 +367,4 @@ static int atxp1_remove(struct i2c_client *client)
+ 	return 0;
+ };
+ 
+-static int __init atxp1_init(void)
+-{
+-	return i2c_add_driver(&atxp1_driver);
+-};
+-
+-static void __exit atxp1_exit(void)
+-{
+-	i2c_del_driver(&atxp1_driver);
+-};
+-
+-module_init(atxp1_init);
+-module_exit(atxp1_exit);
++module_i2c_driver(atxp1_driver);
+diff --git a/drivers/hwmon/ds1621.c b/drivers/hwmon/ds1621.c
+index ef1ac996..9832ac5 100644
+--- a/drivers/hwmon/ds1621.c
++++ b/drivers/hwmon/ds1621.c
+@@ -305,20 +305,8 @@ static struct i2c_driver ds1621_driver = {
+ 	.address_list	= normal_i2c,
+ };
+ 
+-static int __init ds1621_init(void)
+-{
+-	return i2c_add_driver(&ds1621_driver);
+-}
+-
+-static void __exit ds1621_exit(void)
+-{
+-	i2c_del_driver(&ds1621_driver);
+-}
+-
++module_i2c_driver(ds1621_driver);
+ 
+ MODULE_AUTHOR("Christian W. Zuckschwerdt <zany@triq.net>");
+ MODULE_DESCRIPTION("DS1621 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(ds1621_init);
+-module_exit(ds1621_exit);
+diff --git a/drivers/hwmon/ds620.c b/drivers/hwmon/ds620.c
+index 225ae4f..2e2b430 100644
+--- a/drivers/hwmon/ds620.c
++++ b/drivers/hwmon/ds620.c
+@@ -297,19 +297,8 @@ static struct i2c_driver ds620_driver = {
+ 	.id_table = ds620_id,
+ };
+ 
+-static int __init ds620_init(void)
+-{
+-	return i2c_add_driver(&ds620_driver);
+-}
+-
+-static void __exit ds620_exit(void)
+-{
+-	i2c_del_driver(&ds620_driver);
+-}
++module_i2c_driver(ds620_driver);
+ 
+ MODULE_AUTHOR("Roland Stigge <stigge@antcom.de>");
+ MODULE_DESCRIPTION("DS620 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(ds620_init);
+-module_exit(ds620_exit);
+diff --git a/drivers/hwmon/emc1403.c b/drivers/hwmon/emc1403.c
+index cd2a6e4..223bd3c 100644
+--- a/drivers/hwmon/emc1403.c
++++ b/drivers/hwmon/emc1403.c
+@@ -366,18 +366,7 @@ static struct i2c_driver sensor_emc1403 = {
+ 	.address_list = emc1403_address_list,
+ };
+ 
+-static int __init sensor_emc1403_init(void)
+-{
+-	return i2c_add_driver(&sensor_emc1403);
+-}
+-
+-static void  __exit sensor_emc1403_exit(void)
+-{
+-	i2c_del_driver(&sensor_emc1403);
+-}
+-
+-module_init(sensor_emc1403_init);
+-module_exit(sensor_emc1403_exit);
++module_i2c_driver(sensor_emc1403);
+ 
+ MODULE_AUTHOR("Kalhan Trisal <kalhan.trisal@intel.com");
+ MODULE_DESCRIPTION("emc1403 Thermal Driver");
+diff --git a/drivers/hwmon/emc2103.c b/drivers/hwmon/emc2103.c
+index af914ad9..c251445 100644
+--- a/drivers/hwmon/emc2103.c
++++ b/drivers/hwmon/emc2103.c
+@@ -722,19 +722,8 @@ static struct i2c_driver emc2103_driver = {
+ 	.address_list	= normal_i2c,
+ };
+ 
+-static int __init sensors_emc2103_init(void)
+-{
+-	return i2c_add_driver(&emc2103_driver);
+-}
+-
+-static void __exit sensors_emc2103_exit(void)
+-{
+-	i2c_del_driver(&emc2103_driver);
+-}
++module_i2c_driver(emc2103_driver);
+ 
+ MODULE_AUTHOR("Steve Glendinning <steve.glendinning@smsc.com>");
+ MODULE_DESCRIPTION("SMSC EMC2103 hwmon driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_emc2103_init);
+-module_exit(sensors_emc2103_exit);
+diff --git a/drivers/hwmon/emc6w201.c b/drivers/hwmon/emc6w201.c
+index 0064432..cbef6e1 100644
+--- a/drivers/hwmon/emc6w201.c
++++ b/drivers/hwmon/emc6w201.c
+@@ -552,17 +552,7 @@ static struct i2c_driver emc6w201_driver = {
+ 	.address_list	= normal_i2c,
+ };
+ 
+-static int __init sensors_emc6w201_init(void)
+-{
+-	return i2c_add_driver(&emc6w201_driver);
+-}
+-module_init(sensors_emc6w201_init);
+-
+-static void __exit sensors_emc6w201_exit(void)
+-{
+-	i2c_del_driver(&emc6w201_driver);
+-}
+-module_exit(sensors_emc6w201_exit);
++module_i2c_driver(emc6w201_driver);
+ 
+ MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>");
+ MODULE_DESCRIPTION("SMSC EMC6W201 hardware monitoring driver");
+diff --git a/drivers/hwmon/f75375s.c b/drivers/hwmon/f75375s.c
+index 95cbfb3..8326084 100644
+--- a/drivers/hwmon/f75375s.c
++++ b/drivers/hwmon/f75375s.c
+@@ -699,19 +699,8 @@ static int f75375_detect(struct i2c_client *client,
+ 	return 0;
+ }
+ 
+-static int __init sensors_f75375_init(void)
+-{
+-	return i2c_add_driver(&f75375_driver);
+-}
+-
+-static void __exit sensors_f75375_exit(void)
+-{
+-	i2c_del_driver(&f75375_driver);
+-}
++module_i2c_driver(f75375_driver);
+ 
+ MODULE_AUTHOR("Riku Voipio");
+ MODULE_LICENSE("GPL");
+ MODULE_DESCRIPTION("F75373/F75375 hardware monitoring driver");
+-
+-module_init(sensors_f75375_init);
+-module_exit(sensors_f75375_exit);
+diff --git a/drivers/hwmon/fschmd.c b/drivers/hwmon/fschmd.c
+index aa6d8b6..73ba942 100644
+--- a/drivers/hwmon/fschmd.c
++++ b/drivers/hwmon/fschmd.c
+@@ -1314,20 +1314,9 @@ static struct fschmd_data *fschmd_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init fschmd_init(void)
+-{
+-	return i2c_add_driver(&fschmd_driver);
+-}
+-
+-static void __exit fschmd_exit(void)
+-{
+-	i2c_del_driver(&fschmd_driver);
+-}
++module_i2c_driver(fschmd_driver);
+ 
+ MODULE_AUTHOR("Hans de Goede <hdegoede@redhat.com>");
+ MODULE_DESCRIPTION("FSC Poseidon, Hermes, Scylla, Heracles, Heimdall, Hades "
+ 			"and Syleus driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(fschmd_init);
+-module_exit(fschmd_exit);
+diff --git a/drivers/hwmon/g760a.c b/drivers/hwmon/g760a.c
+index 1d6a6fa..f8cd5a9 100644
+--- a/drivers/hwmon/g760a.c
++++ b/drivers/hwmon/g760a.c
+@@ -250,21 +250,8 @@ static int g760a_remove(struct i2c_client *client)
+ 	return 0;
+ }
+ 
+-/* module management */
+-
+-static int __init g760a_init(void)
+-{
+-	return i2c_add_driver(&g760a_driver);
+-}
+-
+-static void __exit g760a_exit(void)
+-{
+-	i2c_del_driver(&g760a_driver);
+-}
++module_i2c_driver(g760a_driver);
+ 
+ MODULE_AUTHOR("Herbert Valerio Riedel <hvr@gnu.org>");
+ MODULE_DESCRIPTION("GMT G760A driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(g760a_init);
+-module_exit(g760a_exit);
+diff --git a/drivers/hwmon/gl518sm.c b/drivers/hwmon/gl518sm.c
+index a13e2da..89b8c0a 100644
+--- a/drivers/hwmon/gl518sm.c
++++ b/drivers/hwmon/gl518sm.c
+@@ -676,21 +676,10 @@ static struct gl518_data *gl518_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sensors_gl518sm_init(void)
+-{
+-	return i2c_add_driver(&gl518_driver);
+-}
+-
+-static void __exit sensors_gl518sm_exit(void)
+-{
+-	i2c_del_driver(&gl518_driver);
+-}
++module_i2c_driver(gl518_driver);
+ 
+ MODULE_AUTHOR("Frodo Looijaard <frodol@dds.nl>, "
+ 	"Kyosti Malkki <kmalkki@cc.hut.fi> and "
+ 	"Hong-Gunn Chew <hglinux@gunnet.org>");
+ MODULE_DESCRIPTION("GL518SM driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_gl518sm_init);
+-module_exit(sensors_gl518sm_exit);
+diff --git a/drivers/hwmon/gl520sm.c b/drivers/hwmon/gl520sm.c
+index cd6085b..e6dcf66 100644
+--- a/drivers/hwmon/gl520sm.c
++++ b/drivers/hwmon/gl520sm.c
+@@ -910,23 +910,10 @@ static struct gl520_data *gl520_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-
+-static int __init sensors_gl520sm_init(void)
+-{
+-	return i2c_add_driver(&gl520_driver);
+-}
+-
+-static void __exit sensors_gl520sm_exit(void)
+-{
+-	i2c_del_driver(&gl520_driver);
+-}
+-
++module_i2c_driver(gl520_driver);
+ 
+ MODULE_AUTHOR("Frodo Looijaard <frodol@dds.nl>, "
+ 	"Kyösti Mälkki <kmalkki@cc.hut.fi>, "
+ 	"Maarten Deprez <maartendeprez@users.sourceforge.net>");
+ MODULE_DESCRIPTION("GL520SM driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_gl520sm_init);
+-module_exit(sensors_gl520sm_exit);
+diff --git a/drivers/hwmon/jc42.c b/drivers/hwmon/jc42.c
+index 2d3d728..d33c592 100644
+--- a/drivers/hwmon/jc42.c
++++ b/drivers/hwmon/jc42.c
+@@ -588,19 +588,8 @@ abort:
+ 	return ret;
+ }
+ 
+-static int __init sensors_jc42_init(void)
+-{
+-	return i2c_add_driver(&jc42_driver);
+-}
+-
+-static void __exit sensors_jc42_exit(void)
+-{
+-	i2c_del_driver(&jc42_driver);
+-}
++module_i2c_driver(jc42_driver);
+ 
+ MODULE_AUTHOR("Guenter Roeck <guenter.roeck@ericsson.com>");
+ MODULE_DESCRIPTION("JC42 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_jc42_init);
+-module_exit(sensors_jc42_exit);
+diff --git a/drivers/hwmon/lineage-pem.c b/drivers/hwmon/lineage-pem.c
+index 58eded2..5b8c9ae 100644
+--- a/drivers/hwmon/lineage-pem.c
++++ b/drivers/hwmon/lineage-pem.c
+@@ -568,19 +568,8 @@ static struct i2c_driver pem_driver = {
+ 	.id_table = pem_id,
+ };
+ 
+-static int __init pem_init(void)
+-{
+-	return i2c_add_driver(&pem_driver);
+-}
+-
+-static void __exit pem_exit(void)
+-{
+-	i2c_del_driver(&pem_driver);
+-}
++module_i2c_driver(pem_driver);
+ 
+ MODULE_AUTHOR("Guenter Roeck <guenter.roeck@ericsson.com>");
+ MODULE_DESCRIPTION("Lineage CPL PEM hardware monitoring driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(pem_init);
+-module_exit(pem_exit);
+diff --git a/drivers/hwmon/lm63.c b/drivers/hwmon/lm63.c
+index 9642286..2eae1bc 100644
+--- a/drivers/hwmon/lm63.c
++++ b/drivers/hwmon/lm63.c
+@@ -727,19 +727,8 @@ static struct lm63_data *lm63_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sensors_lm63_init(void)
+-{
+-	return i2c_add_driver(&lm63_driver);
+-}
+-
+-static void __exit sensors_lm63_exit(void)
+-{
+-	i2c_del_driver(&lm63_driver);
+-}
++module_i2c_driver(lm63_driver);
+ 
+ MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>");
+ MODULE_DESCRIPTION("LM63 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_lm63_init);
+-module_exit(sensors_lm63_exit);
+diff --git a/drivers/hwmon/lm73.c b/drivers/hwmon/lm73.c
+index 9e64d96..2c63f14 100644
+--- a/drivers/hwmon/lm73.c
++++ b/drivers/hwmon/lm73.c
+@@ -194,21 +194,8 @@ static struct i2c_driver lm73_driver = {
+ 	.address_list	= normal_i2c,
+ };
+ 
+-/* module glue */
+-
+-static int __init sensors_lm73_init(void)
+-{
+-	return i2c_add_driver(&lm73_driver);
+-}
+-
+-static void __exit sensors_lm73_exit(void)
+-{
+-	i2c_del_driver(&lm73_driver);
+-}
++module_i2c_driver(lm73_driver);
+ 
+ MODULE_AUTHOR("Guillaume Ligneul <guillaume.ligneul@gmail.com>");
+ MODULE_DESCRIPTION("LM73 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_lm73_init);
+-module_exit(sensors_lm73_exit);
+diff --git a/drivers/hwmon/lm75.c b/drivers/hwmon/lm75.c
+index 1888dd0..f3aaa30 100644
+--- a/drivers/hwmon/lm75.c
++++ b/drivers/hwmon/lm75.c
+@@ -429,23 +429,8 @@ static struct lm75_data *lm75_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-/*-----------------------------------------------------------------------*/
+-
+-/* module glue */
+-
+-static int __init sensors_lm75_init(void)
+-{
+-	return i2c_add_driver(&lm75_driver);
+-}
+-
+-static void __exit sensors_lm75_exit(void)
+-{
+-	i2c_del_driver(&lm75_driver);
+-}
++module_i2c_driver(lm75_driver);
+ 
+ MODULE_AUTHOR("Frodo Looijaard <frodol@dds.nl>");
+ MODULE_DESCRIPTION("LM75 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_lm75_init);
+-module_exit(sensors_lm75_exit);
+diff --git a/drivers/hwmon/lm77.c b/drivers/hwmon/lm77.c
+index 8dfc678..7cd516f 100644
+--- a/drivers/hwmon/lm77.c
++++ b/drivers/hwmon/lm77.c
+@@ -420,19 +420,8 @@ static struct lm77_data *lm77_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sensors_lm77_init(void)
+-{
+-	return i2c_add_driver(&lm77_driver);
+-}
+-
+-static void __exit sensors_lm77_exit(void)
+-{
+-	i2c_del_driver(&lm77_driver);
+-}
++module_i2c_driver(lm77_driver);
+ 
+ MODULE_AUTHOR("Andras BALI <drewie@freemail.hu>");
+ MODULE_DESCRIPTION("LM77 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_lm77_init);
+-module_exit(sensors_lm77_exit);
+diff --git a/drivers/hwmon/lm80.c b/drivers/hwmon/lm80.c
+index 18a0e6c..dc983ec 100644
+--- a/drivers/hwmon/lm80.c
++++ b/drivers/hwmon/lm80.c
+@@ -595,20 +595,9 @@ static struct lm80_data *lm80_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sensors_lm80_init(void)
+-{
+-	return i2c_add_driver(&lm80_driver);
+-}
+-
+-static void __exit sensors_lm80_exit(void)
+-{
+-	i2c_del_driver(&lm80_driver);
+-}
++module_i2c_driver(lm80_driver);
+ 
+ MODULE_AUTHOR("Frodo Looijaard <frodol@dds.nl> and "
+ 	"Philip Edelbrock <phil@netroedge.com>");
+ MODULE_DESCRIPTION("LM80 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_lm80_init);
+-module_exit(sensors_lm80_exit);
+diff --git a/drivers/hwmon/lm83.c b/drivers/hwmon/lm83.c
+index 8290476..e9a8a06 100644
+--- a/drivers/hwmon/lm83.c
++++ b/drivers/hwmon/lm83.c
+@@ -423,19 +423,8 @@ static struct lm83_data *lm83_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sensors_lm83_init(void)
+-{
+-	return i2c_add_driver(&lm83_driver);
+-}
+-
+-static void __exit sensors_lm83_exit(void)
+-{
+-	i2c_del_driver(&lm83_driver);
+-}
++module_i2c_driver(lm83_driver);
+ 
+ MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>");
+ MODULE_DESCRIPTION("LM83 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_lm83_init);
+-module_exit(sensors_lm83_exit);
+diff --git a/drivers/hwmon/lm85.c b/drivers/hwmon/lm85.c
+index da72dc1..fd26983 100644
+--- a/drivers/hwmon/lm85.c
++++ b/drivers/hwmon/lm85.c
+@@ -1611,22 +1611,10 @@ static struct lm85_data *lm85_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-
+-static int __init sm_lm85_init(void)
+-{
+-	return i2c_add_driver(&lm85_driver);
+-}
+-
+-static void __exit sm_lm85_exit(void)
+-{
+-	i2c_del_driver(&lm85_driver);
+-}
++module_i2c_driver(lm85_driver);
+ 
+ MODULE_LICENSE("GPL");
+ MODULE_AUTHOR("Philip Pokorny <ppokorny@penguincomputing.com>, "
+ 	"Margit Schubert-While <margitsw@t-online.de>, "
+ 	"Justin Thiessen <jthiessen@penguincomputing.com>");
+ MODULE_DESCRIPTION("LM85-B, LM85-C driver");
+-
+-module_init(sm_lm85_init);
+-module_exit(sm_lm85_exit);
+diff --git a/drivers/hwmon/lm87.c b/drivers/hwmon/lm87.c
+index f1e6e75..126d0cc 100644
+--- a/drivers/hwmon/lm87.c
++++ b/drivers/hwmon/lm87.c
+@@ -963,19 +963,8 @@ static struct lm87_data *lm87_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sensors_lm87_init(void)
+-{
+-	return i2c_add_driver(&lm87_driver);
+-}
+-
+-static void __exit sensors_lm87_exit(void)
+-{
+-	i2c_del_driver(&lm87_driver);
+-}
++module_i2c_driver(lm87_driver);
+ 
+ MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org> and others");
+ MODULE_DESCRIPTION("LM87 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_lm87_init);
+-module_exit(sensors_lm87_exit);
+diff --git a/drivers/hwmon/lm90.c b/drivers/hwmon/lm90.c
+index 615bc4f..e70cbb9 100644
+--- a/drivers/hwmon/lm90.c
++++ b/drivers/hwmon/lm90.c
+@@ -1514,19 +1514,8 @@ static struct i2c_driver lm90_driver = {
+ 	.address_list	= normal_i2c,
+ };
+ 
+-static int __init sensors_lm90_init(void)
+-{
+-	return i2c_add_driver(&lm90_driver);
+-}
+-
+-static void __exit sensors_lm90_exit(void)
+-{
+-	i2c_del_driver(&lm90_driver);
+-}
++module_i2c_driver(lm90_driver);
+ 
+ MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>");
+ MODULE_DESCRIPTION("LM90/ADM1032 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_lm90_init);
+-module_exit(sensors_lm90_exit);
+diff --git a/drivers/hwmon/lm92.c b/drivers/hwmon/lm92.c
+index 8fcbd4d4..92f2d46 100644
+--- a/drivers/hwmon/lm92.c
++++ b/drivers/hwmon/lm92.c
+@@ -416,19 +416,8 @@ static struct i2c_driver lm92_driver = {
+ 	.address_list	= normal_i2c,
+ };
+ 
+-static int __init sensors_lm92_init(void)
+-{
+-	return i2c_add_driver(&lm92_driver);
+-}
+-
+-static void __exit sensors_lm92_exit(void)
+-{
+-	i2c_del_driver(&lm92_driver);
+-}
++module_i2c_driver(lm92_driver);
+ 
+ MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>");
+ MODULE_DESCRIPTION("LM92/MAX6635 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_lm92_init);
+-module_exit(sensors_lm92_exit);
+diff --git a/drivers/hwmon/lm93.c b/drivers/hwmon/lm93.c
+index 3b43df4..cb1bf8c 100644
+--- a/drivers/hwmon/lm93.c
++++ b/drivers/hwmon/lm93.c
+@@ -2635,20 +2635,9 @@ static struct i2c_driver lm93_driver = {
+ 	.address_list	= normal_i2c,
+ };
+ 
+-static int __init lm93_init(void)
+-{
+-	return i2c_add_driver(&lm93_driver);
+-}
+-
+-static void __exit lm93_exit(void)
+-{
+-	i2c_del_driver(&lm93_driver);
+-}
++module_i2c_driver(lm93_driver);
+ 
+ MODULE_AUTHOR("Mark M. Hoffman <mhoffman@lightlink.com>, "
+ 		"Hans J. Koch <hjk@hansjkoch.de>");
+ MODULE_DESCRIPTION("LM93 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(lm93_init);
+-module_exit(lm93_exit);
+diff --git a/drivers/hwmon/lm95241.c b/drivers/hwmon/lm95241.c
+index 513901d..6074afd 100644
+--- a/drivers/hwmon/lm95241.c
++++ b/drivers/hwmon/lm95241.c
+@@ -455,19 +455,8 @@ static struct i2c_driver lm95241_driver = {
+ 	.address_list	= normal_i2c,
+ };
+ 
+-static int __init sensors_lm95241_init(void)
+-{
+-	return i2c_add_driver(&lm95241_driver);
+-}
+-
+-static void __exit sensors_lm95241_exit(void)
+-{
+-	i2c_del_driver(&lm95241_driver);
+-}
++module_i2c_driver(lm95241_driver);
+ 
+ MODULE_AUTHOR("Davide Rizzo <elpa.rizzo@gmail.com>");
+ MODULE_DESCRIPTION("LM95241 sensor driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_lm95241_init);
+-module_exit(sensors_lm95241_exit);
+diff --git a/drivers/hwmon/lm95245.c b/drivers/hwmon/lm95245.c
+index dce9e68..87de7de 100644
+--- a/drivers/hwmon/lm95245.c
++++ b/drivers/hwmon/lm95245.c
+@@ -525,19 +525,8 @@ static struct i2c_driver lm95245_driver = {
+ 	.address_list	= normal_i2c,
+ };
+ 
+-static int __init sensors_lm95245_init(void)
+-{
+-	return i2c_add_driver(&lm95245_driver);
+-}
+-
+-static void __exit sensors_lm95245_exit(void)
+-{
+-	i2c_del_driver(&lm95245_driver);
+-}
++module_i2c_driver(lm95245_driver);
+ 
+ MODULE_AUTHOR("Alexander Stein <alexander.stein@systec-electronic.com>");
+ MODULE_DESCRIPTION("LM95245 sensor driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_lm95245_init);
+-module_exit(sensors_lm95245_exit);
+diff --git a/drivers/hwmon/ltc4151.c b/drivers/hwmon/ltc4151.c
+index 4ac06b7..f646b45 100644
+--- a/drivers/hwmon/ltc4151.c
++++ b/drivers/hwmon/ltc4151.c
+@@ -238,19 +238,8 @@ static struct i2c_driver ltc4151_driver = {
+ 	.id_table	= ltc4151_id,
+ };
+ 
+-static int __init ltc4151_init(void)
+-{
+-	return i2c_add_driver(&ltc4151_driver);
+-}
+-
+-static void __exit ltc4151_exit(void)
+-{
+-	i2c_del_driver(&ltc4151_driver);
+-}
++module_i2c_driver(ltc4151_driver);
+ 
+ MODULE_AUTHOR("Per Dalen <per.dalen@appeartv.com>");
+ MODULE_DESCRIPTION("LTC4151 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(ltc4151_init);
+-module_exit(ltc4151_exit);
+diff --git a/drivers/hwmon/ltc4215.c b/drivers/hwmon/ltc4215.c
+index c7e6d8e..0789b63 100644
+--- a/drivers/hwmon/ltc4215.c
++++ b/drivers/hwmon/ltc4215.c
+@@ -309,19 +309,8 @@ static struct i2c_driver ltc4215_driver = {
+ 	.id_table	= ltc4215_id,
+ };
+ 
+-static int __init ltc4215_init(void)
+-{
+-	return i2c_add_driver(&ltc4215_driver);
+-}
+-
+-static void __exit ltc4215_exit(void)
+-{
+-	i2c_del_driver(&ltc4215_driver);
+-}
++module_i2c_driver(ltc4215_driver);
+ 
+ MODULE_AUTHOR("Ira W. Snyder <iws@ovro.caltech.edu>");
+ MODULE_DESCRIPTION("LTC4215 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(ltc4215_init);
+-module_exit(ltc4215_exit);
+diff --git a/drivers/hwmon/ltc4245.c b/drivers/hwmon/ltc4245.c
+index 6593083..693a6bd 100644
+--- a/drivers/hwmon/ltc4245.c
++++ b/drivers/hwmon/ltc4245.c
+@@ -578,19 +578,8 @@ static struct i2c_driver ltc4245_driver = {
+ 	.id_table	= ltc4245_id,
+ };
+ 
+-static int __init ltc4245_init(void)
+-{
+-	return i2c_add_driver(&ltc4245_driver);
+-}
+-
+-static void __exit ltc4245_exit(void)
+-{
+-	i2c_del_driver(&ltc4245_driver);
+-}
++module_i2c_driver(ltc4245_driver);
+ 
+ MODULE_AUTHOR("Ira W. Snyder <iws@ovro.caltech.edu>");
+ MODULE_DESCRIPTION("LTC4245 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(ltc4245_init);
+-module_exit(ltc4245_exit);
+diff --git a/drivers/hwmon/ltc4261.c b/drivers/hwmon/ltc4261.c
+index 4b50601..c78d323 100644
+--- a/drivers/hwmon/ltc4261.c
++++ b/drivers/hwmon/ltc4261.c
+@@ -296,19 +296,8 @@ static struct i2c_driver ltc4261_driver = {
+ 	.id_table = ltc4261_id,
+ };
+ 
+-static int __init ltc4261_init(void)
+-{
+-	return i2c_add_driver(&ltc4261_driver);
+-}
+-
+-static void __exit ltc4261_exit(void)
+-{
+-	i2c_del_driver(&ltc4261_driver);
+-}
++module_i2c_driver(ltc4261_driver);
+ 
+ MODULE_AUTHOR("Guenter Roeck <guenter.roeck@ericsson.com>");
+ MODULE_DESCRIPTION("LTC4261 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(ltc4261_init);
+-module_exit(ltc4261_exit);
+diff --git a/drivers/hwmon/max16065.c b/drivers/hwmon/max16065.c
+index 385886a..ca18f52 100644
+--- a/drivers/hwmon/max16065.c
++++ b/drivers/hwmon/max16065.c
+@@ -699,19 +699,8 @@ static struct i2c_driver max16065_driver = {
+ 	.id_table = max16065_id,
+ };
+ 
+-static int __init max16065_init(void)
+-{
+-	return i2c_add_driver(&max16065_driver);
+-}
+-
+-static void __exit max16065_exit(void)
+-{
+-	i2c_del_driver(&max16065_driver);
+-}
++module_i2c_driver(max16065_driver);
+ 
+ MODULE_AUTHOR("Guenter Roeck <guenter.roeck@ericsson.com>");
+ MODULE_DESCRIPTION("MAX16065 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(max16065_init);
+-module_exit(max16065_exit);
+diff --git a/drivers/hwmon/max1619.c b/drivers/hwmon/max1619.c
+index 022ded0..135822e 100644
+--- a/drivers/hwmon/max1619.c
++++ b/drivers/hwmon/max1619.c
+@@ -353,20 +353,9 @@ static struct max1619_data *max1619_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sensors_max1619_init(void)
+-{
+-	return i2c_add_driver(&max1619_driver);
+-}
+-
+-static void __exit sensors_max1619_exit(void)
+-{
+-	i2c_del_driver(&max1619_driver);
+-}
++module_i2c_driver(max1619_driver);
+ 
+ MODULE_AUTHOR("Alexey Fisher <fishor@mail.ru> and "
+ 	"Jean Delvare <khali@linux-fr.org>");
+ MODULE_DESCRIPTION("MAX1619 sensor driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_max1619_init);
+-module_exit(sensors_max1619_exit);
+diff --git a/drivers/hwmon/max1668.c b/drivers/hwmon/max1668.c
+index 20d1b2d..d5fb117 100644
+--- a/drivers/hwmon/max1668.c
++++ b/drivers/hwmon/max1668.c
+@@ -484,19 +484,8 @@ static struct i2c_driver max1668_driver = {
+ 	.address_list = max1668_addr_list,
+ };
+ 
+-static int __init sensors_max1668_init(void)
+-{
+-	return i2c_add_driver(&max1668_driver);
+-}
+-
+-static void __exit sensors_max1668_exit(void)
+-{
+-	i2c_del_driver(&max1668_driver);
+-}
++module_i2c_driver(max1668_driver);
+ 
+ MODULE_AUTHOR("David George <david.george@ska.ac.za>");
+ MODULE_DESCRIPTION("MAX1668 remote temperature sensor driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_max1668_init)
+-module_exit(sensors_max1668_exit)
+diff --git a/drivers/hwmon/max6639.c b/drivers/hwmon/max6639.c
+index f20d997..64866a9 100644
+--- a/drivers/hwmon/max6639.c
++++ b/drivers/hwmon/max6639.c
+@@ -635,19 +635,8 @@ static struct i2c_driver max6639_driver = {
+ 	.address_list = normal_i2c,
+ };
+ 
+-static int __init max6639_init(void)
+-{
+-	return i2c_add_driver(&max6639_driver);
+-}
+-
+-static void __exit max6639_exit(void)
+-{
+-	i2c_del_driver(&max6639_driver);
+-}
++module_i2c_driver(max6639_driver);
+ 
+ MODULE_AUTHOR("Roland Stigge <stigge@antcom.de>");
+ MODULE_DESCRIPTION("max6639 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(max6639_init);
+-module_exit(max6639_exit);
+diff --git a/drivers/hwmon/max6642.c b/drivers/hwmon/max6642.c
+index e855d3b..66f0dbc 100644
+--- a/drivers/hwmon/max6642.c
++++ b/drivers/hwmon/max6642.c
+@@ -352,19 +352,8 @@ static struct i2c_driver max6642_driver = {
+ 	.address_list	= normal_i2c,
+ };
+ 
+-static int __init max6642_init(void)
+-{
+-	return i2c_add_driver(&max6642_driver);
+-}
+-
+-static void __exit max6642_exit(void)
+-{
+-	i2c_del_driver(&max6642_driver);
+-}
++module_i2c_driver(max6642_driver);
+ 
+ MODULE_AUTHOR("Per Dalen <per.dalen@appeartv.com>");
+ MODULE_DESCRIPTION("MAX6642 sensor driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(max6642_init);
+-module_exit(max6642_exit);
+diff --git a/drivers/hwmon/max6650.c b/drivers/hwmon/max6650.c
+index ece3aaf..7a0cdb0 100644
+--- a/drivers/hwmon/max6650.c
++++ b/drivers/hwmon/max6650.c
+@@ -713,19 +713,8 @@ static struct max6650_data *max6650_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sensors_max6650_init(void)
+-{
+-	return i2c_add_driver(&max6650_driver);
+-}
+-
+-static void __exit sensors_max6650_exit(void)
+-{
+-	i2c_del_driver(&max6650_driver);
+-}
++module_i2c_driver(max6650_driver);
+ 
+ MODULE_AUTHOR("Hans J. Koch");
+ MODULE_DESCRIPTION("MAX6650 sensor driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_max6650_init);
+-module_exit(sensors_max6650_exit);
+diff --git a/drivers/hwmon/sht21.c b/drivers/hwmon/sht21.c
+index 1539878..6c2dede 100644
+--- a/drivers/hwmon/sht21.c
++++ b/drivers/hwmon/sht21.c
+@@ -261,28 +261,7 @@ static struct i2c_driver sht21_driver = {
+ 	.id_table    = sht21_id,
+ };
+ 
+-/**
+- * sht21_init() - initialize driver
+- *
+- * Called when kernel is booted or module is inserted.
+- * Returns 0 on success.
+- */
+-static int __init sht21_init(void)
+-{
+-	return i2c_add_driver(&sht21_driver);
+-}
+-module_init(sht21_init);
+-
+-/**
+- * sht21_init() - clean up driver
+- *
+- * Called when module is removed.
+- */
+-static void __exit sht21_exit(void)
+-{
+-	i2c_del_driver(&sht21_driver);
+-}
+-module_exit(sht21_exit);
++module_i2c_driver(sht21_driver);
+ 
+ MODULE_AUTHOR("Urs Fleisch <urs.fleisch@sensirion.com>");
+ MODULE_DESCRIPTION("Sensirion SHT21 humidity and temperature sensor driver");
+diff --git a/drivers/hwmon/smm665.c b/drivers/hwmon/smm665.c
+index 4116381..0d392d0 100644
+--- a/drivers/hwmon/smm665.c
++++ b/drivers/hwmon/smm665.c
+@@ -718,19 +718,8 @@ static struct i2c_driver smm665_driver = {
+ 	.id_table = smm665_id,
+ };
+ 
+-static int __init smm665_init(void)
+-{
+-	return i2c_add_driver(&smm665_driver);
+-}
+-
+-static void __exit smm665_exit(void)
+-{
+-	i2c_del_driver(&smm665_driver);
+-}
++module_i2c_driver(smm665_driver);
+ 
+ MODULE_AUTHOR("Guenter Roeck");
+ MODULE_DESCRIPTION("SMM665 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(smm665_init);
+-module_exit(smm665_exit);
+diff --git a/drivers/hwmon/smsc47m192.c b/drivers/hwmon/smsc47m192.c
+index 40b2667..8f88908 100644
+--- a/drivers/hwmon/smsc47m192.c
++++ b/drivers/hwmon/smsc47m192.c
+@@ -635,19 +635,8 @@ static struct smsc47m192_data *smsc47m192_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init smsc47m192_init(void)
+-{
+-	return i2c_add_driver(&smsc47m192_driver);
+-}
+-
+-static void __exit smsc47m192_exit(void)
+-{
+-	i2c_del_driver(&smsc47m192_driver);
+-}
++module_i2c_driver(smsc47m192_driver);
+ 
+ MODULE_AUTHOR("Hartmut Rick <linux@rick.claranet.de>");
+ MODULE_DESCRIPTION("SMSC47M192 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(smsc47m192_init);
+-module_exit(smsc47m192_exit);
+diff --git a/drivers/hwmon/thmc50.c b/drivers/hwmon/thmc50.c
+index 7dfb4de..bd83bc0 100644
+--- a/drivers/hwmon/thmc50.c
++++ b/drivers/hwmon/thmc50.c
+@@ -465,18 +465,7 @@ static struct thmc50_data *thmc50_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sm_thmc50_init(void)
+-{
+-	return i2c_add_driver(&thmc50_driver);
+-}
+-
+-static void __exit sm_thmc50_exit(void)
+-{
+-	i2c_del_driver(&thmc50_driver);
+-}
++module_i2c_driver(thmc50_driver);
+ 
+ MODULE_AUTHOR("Krzysztof Helt <krzysztof.h1@wp.pl>");
+ MODULE_DESCRIPTION("THMC50 driver");
+-
+-module_init(sm_thmc50_init);
+-module_exit(sm_thmc50_exit);
+diff --git a/drivers/hwmon/tmp102.c b/drivers/hwmon/tmp102.c
+index 643aa8c..40b742c 100644
+--- a/drivers/hwmon/tmp102.c
++++ b/drivers/hwmon/tmp102.c
+@@ -292,17 +292,7 @@ static struct i2c_driver tmp102_driver = {
+ 	.id_table	= tmp102_id,
+ };
+ 
+-static int __init tmp102_init(void)
+-{
+-	return i2c_add_driver(&tmp102_driver);
+-}
+-module_init(tmp102_init);
+-
+-static void __exit tmp102_exit(void)
+-{
+-	i2c_del_driver(&tmp102_driver);
+-}
+-module_exit(tmp102_exit);
++module_i2c_driver(tmp102_driver);
+ 
+ MODULE_AUTHOR("Steven King <sfking@fdwdc.com>");
+ MODULE_DESCRIPTION("Texas Instruments TMP102 temperature sensor driver");
+diff --git a/drivers/hwmon/tmp401.c b/drivers/hwmon/tmp401.c
+index ad8d535..a32d4dc 100644
+--- a/drivers/hwmon/tmp401.c
++++ b/drivers/hwmon/tmp401.c
+@@ -662,19 +662,8 @@ static struct i2c_driver tmp401_driver = {
+ 	.address_list	= normal_i2c,
+ };
+ 
+-static int __init tmp401_init(void)
+-{
+-	return i2c_add_driver(&tmp401_driver);
+-}
+-
+-static void __exit tmp401_exit(void)
+-{
+-	i2c_del_driver(&tmp401_driver);
+-}
++module_i2c_driver(tmp401_driver);
+ 
+ MODULE_AUTHOR("Hans de Goede <hdegoede@redhat.com>");
+ MODULE_DESCRIPTION("Texas Instruments TMP401 temperature sensor driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(tmp401_init);
+-module_exit(tmp401_exit);
+diff --git a/drivers/hwmon/tmp421.c b/drivers/hwmon/tmp421.c
+index 0517a8f..aa5562d 100644
+--- a/drivers/hwmon/tmp421.c
++++ b/drivers/hwmon/tmp421.c
+@@ -324,20 +324,9 @@ static struct i2c_driver tmp421_driver = {
+ 	.address_list = normal_i2c,
+ };
+ 
+-static int __init tmp421_init(void)
+-{
+-	return i2c_add_driver(&tmp421_driver);
+-}
+-
+-static void __exit tmp421_exit(void)
+-{
+-	i2c_del_driver(&tmp421_driver);
+-}
++module_i2c_driver(tmp421_driver);
+ 
+ MODULE_AUTHOR("Andre Prendel <andre.prendel@gmx.de>");
+ MODULE_DESCRIPTION("Texas Instruments TMP421/422/423 temperature sensor"
+ 		   " driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(tmp421_init);
+-module_exit(tmp421_exit);
+diff --git a/drivers/hwmon/w83791d.c b/drivers/hwmon/w83791d.c
+index 8c2844e..1729f14 100644
+--- a/drivers/hwmon/w83791d.c
++++ b/drivers/hwmon/w83791d.c
+@@ -1625,19 +1625,8 @@ static void w83791d_print_debug(struct w83791d_data *data, struct device *dev)
+ }
+ #endif
+ 
+-static int __init sensors_w83791d_init(void)
+-{
+-	return i2c_add_driver(&w83791d_driver);
+-}
+-
+-static void __exit sensors_w83791d_exit(void)
+-{
+-	i2c_del_driver(&w83791d_driver);
+-}
++module_i2c_driver(w83791d_driver);
+ 
+ MODULE_AUTHOR("Charles Spirakis <bezaur@gmail.com>");
+ MODULE_DESCRIPTION("W83791D driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_w83791d_init);
+-module_exit(sensors_w83791d_exit);
+diff --git a/drivers/hwmon/w83792d.c b/drivers/hwmon/w83792d.c
+index f3e7130..43246e8 100644
+--- a/drivers/hwmon/w83792d.c
++++ b/drivers/hwmon/w83792d.c
+@@ -1641,22 +1641,8 @@ static void w83792d_print_debug(struct w83792d_data *data, struct device *dev)
+ }
+ #endif
+ 
+-static int __init
+-sensors_w83792d_init(void)
+-{
+-	return i2c_add_driver(&w83792d_driver);
+-}
+-
+-static void __exit
+-sensors_w83792d_exit(void)
+-{
+-	i2c_del_driver(&w83792d_driver);
+-}
++module_i2c_driver(w83792d_driver);
+ 
+ MODULE_AUTHOR("Chunhao Huang @ Winbond <DZShen@Winbond.com.tw>");
+ MODULE_DESCRIPTION("W83792AD/D driver for linux-2.6");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_w83792d_init);
+-module_exit(sensors_w83792d_exit);
+-
+diff --git a/drivers/hwmon/w83793.c b/drivers/hwmon/w83793.c
+index 854f911..77dd465 100644
+--- a/drivers/hwmon/w83793.c
++++ b/drivers/hwmon/w83793.c
+@@ -2120,19 +2120,8 @@ END:
+ 	return res;
+ }
+ 
+-static int __init sensors_w83793_init(void)
+-{
+-	return i2c_add_driver(&w83793_driver);
+-}
+-
+-static void __exit sensors_w83793_exit(void)
+-{
+-	i2c_del_driver(&w83793_driver);
+-}
++module_i2c_driver(w83793_driver);
+ 
+ MODULE_AUTHOR("Yuan Mu, Sven Anders");
+ MODULE_DESCRIPTION("w83793 driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_w83793_init);
+-module_exit(sensors_w83793_exit);
+diff --git a/drivers/hwmon/w83795.c b/drivers/hwmon/w83795.c
+index 845232d..25d741d 100644
+--- a/drivers/hwmon/w83795.c
++++ b/drivers/hwmon/w83795.c
+@@ -2244,19 +2244,8 @@ static struct i2c_driver w83795_driver = {
+ 	.address_list	= normal_i2c,
+ };
+ 
+-static int __init sensors_w83795_init(void)
+-{
+-	return i2c_add_driver(&w83795_driver);
+-}
+-
+-static void __exit sensors_w83795_exit(void)
+-{
+-	i2c_del_driver(&w83795_driver);
+-}
++module_i2c_driver(w83795_driver);
+ 
+ MODULE_AUTHOR("Wei Song, Jean Delvare <khali@linux-fr.org>");
+ MODULE_DESCRIPTION("W83795G/ADG hardware monitoring driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_w83795_init);
+-module_exit(sensors_w83795_exit);
+diff --git a/drivers/hwmon/w83l785ts.c b/drivers/hwmon/w83l785ts.c
+index 20781de..57f639e 100644
+--- a/drivers/hwmon/w83l785ts.c
++++ b/drivers/hwmon/w83l785ts.c
+@@ -302,19 +302,8 @@ static struct w83l785ts_data *w83l785ts_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init sensors_w83l785ts_init(void)
+-{
+-	return i2c_add_driver(&w83l785ts_driver);
+-}
+-
+-static void __exit sensors_w83l785ts_exit(void)
+-{
+-	i2c_del_driver(&w83l785ts_driver);
+-}
++module_i2c_driver(w83l785ts_driver);
+ 
+ MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>");
+ MODULE_DESCRIPTION("W83L785TS-S driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_w83l785ts_init);
+-module_exit(sensors_w83l785ts_exit);
+diff --git a/drivers/hwmon/w83l786ng.c b/drivers/hwmon/w83l786ng.c
+index 0254e18..8b120eb 100644
+--- a/drivers/hwmon/w83l786ng.c
++++ b/drivers/hwmon/w83l786ng.c
+@@ -769,21 +769,8 @@ static struct w83l786ng_data *w83l786ng_update_device(struct device *dev)
+ 	return data;
+ }
+ 
+-static int __init
+-sensors_w83l786ng_init(void)
+-{
+-	return i2c_add_driver(&w83l786ng_driver);
+-}
+-
+-static void __exit
+-sensors_w83l786ng_exit(void)
+-{
+-	i2c_del_driver(&w83l786ng_driver);
+-}
++module_i2c_driver(w83l786ng_driver);
+ 
+ MODULE_AUTHOR("Kevin Lo");
+ MODULE_DESCRIPTION("w83l786ng driver");
+ MODULE_LICENSE("GPL");
+-
+-module_init(sensors_w83l786ng_init);
+-module_exit(sensors_w83l786ng_exit);
+-- 
+1.7.5.4
diff --git a/a/content_digest b/N1/content_digest
index 455c49f..31e136b 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -1,6 +1,6 @@
  "From\0Axel Lin <axel.lin@gmail.com>\0"
- "Subject\0[lm-sensors] [PATCH] hwmon: convert drivers/hwmon/* to use\0"
- "Date\0Fri, 25 Nov 2011 07:06:27 +0000\0"
+ "Subject\0[PATCH] hwmon: convert drivers/hwmon/* to use module_i2c_driver()\0"
+ "Date\0Fri, 25 Nov 2011 15:06:27 +0800\0"
  "To\0linux-kernel@vger.kernel.org\0"
  "Cc\0Corentin Labbe <corentin.labbe@geomatys.fr>"
   Dirk Eibach <eibach@gdsys.de>
@@ -17,824 +17,1725 @@
  " lm-sensors@lm-sensors.org\0"
  "\00:1\0"
  "b\0"
- "VGhpcyBwYXRjaCBjb252ZXJ0cyB0aGUgZHJpdmVycyBpbiBkcml2ZXJzL2h3bW9uLyogdG8gdXNl\n"
- "IHRoZQptb2R1bGVfaTJjX2RyaXZlcigpIG1hY3JvIHdoaWNoIG1ha2VzIHRoZSBjb2RlIHNtYWxs\n"
- "ZXIgYW5kIGEgYml0CnNpbXBsZXIuCgpDYzogQ29yZW50aW4gTGFiYmUgPGNvcmVudGluLmxhYmJl\n"
- "QGdlb21hdHlzLmZyPgpDYzogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KQ2M6ICJNYXJr\n"
- "IE0uIEhvZmZtYW4iIDxtaG9mZm1hbkBsaWdodGxpbmsuY29tPgpDYzogU3RldmUgR2xlbmRpbm5p\n"
- "bmcgPHN0ZXZlLmdsZW5kaW5uaW5nQHNtc2MuY29tPgpDYzogUmlrdSBWb2lwaW8gPHJpa3Uudm9p\n"
- "cGlvQGlraS5maT4KQ2M6IEd1aWxsYXVtZSBMaWduZXVsIDxndWlsbGF1bWUubGlnbmV1bEBnbWFp\n"
- "bC5jb20+CkNjOiBEYXZpZCBHZW9yZ2UgPGRhdmlkLmdlb3JnZUBza2EuYWMuemE+CkNjOiAiSGFu\n"
- "cyBKLiBLb2NoIiA8aGprQGhhbnNqa29jaC5kZT4KQ2M6IE1hcmMgSHVsc21hbiA8bS5odWxzbWFu\n"
- "QHR1ZGVsZnQubmw+CkNjOiBSdWRvbGYgTWFyZWsgPHIubWFyZWtAYXNzZW1ibGVyLmN6PgpTaWdu\n"
- "ZWQtb2ZmLWJ5OiBBeGVsIExpbiA8YXhlbC5saW5AZ21haWwuY29tPgotLS0KIGRyaXZlcnMvaHdt\n"
- "b24vYWQ3NDE0LmMgICAgICB8ICAgMTIgKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2FkNzQx\n"
- "OC5jICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWRtMTAyMS5jICAg\n"
- "ICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9hZG0xMDI1LmMgICAgIHwgICAx\n"
- "MyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2FkbTEwMjYuYyAgICAgfCAgIDEzICstLS0t\n"
- "LS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWRtMTAyOS5jICAgICB8ICAgMTggKy0tLS0tLS0tLS0t\n"
- "LS0tLS0tCiBkcml2ZXJzL2h3bW9uL2FkbTEwMzEuYyAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0K\n"
- "IGRyaXZlcnMvaHdtb24vYWRtOTI0MC5jICAgICB8ICAgMTQgKy0tLS0tLS0tLS0tLS0KIGRyaXZl\n"
- "cnMvaHdtb24vYWRzMTAxNS5jICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21v\n"
- "bi9hZHQ3NDExLmMgICAgIHwgICAxMiArLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWR0NzQ2\n"
- "Mi5jICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9hZHQ3NDcwLmMgICAg\n"
- "IHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2FkdDc0NzUuYyAgICAgfCAgIDEz\n"
- "ICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYW1jNjgyMS5jICAgICB8ICAgMTUgKy0tLS0t\n"
- "LS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2FzYjEwMC5jICAgICAgfCAgIDEzICstLS0tLS0tLS0t\n"
- "LS0KIGRyaXZlcnMvaHdtb24vYXR4cDEuYyAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJp\n"
- "dmVycy9od21vbi9kczE2MjEuYyAgICAgIHwgICAxNCArLS0tLS0tLS0tLS0tLQogZHJpdmVycy9o\n"
- "d21vbi9kczYyMC5jICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2Vt\n"
- "YzE0MDMuYyAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vZW1jMjEwMy5j\n"
- "ICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9lbWM2dzIwMS5jICAgIHwg\n"
- "ICAxMiArLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vZjc1Mzc1cy5jICAgICB8ICAgMTMgKy0t\n"
- "LS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9mc2NobWQuYyAgICAgIHwgICAxMyArLS0tLS0tLS0t\n"
- "LS0tCiBkcml2ZXJzL2h3bW9uL2c3NjBhLmMgICAgICAgfCAgIDE1ICstLS0tLS0tLS0tLS0tLQog\n"
- "ZHJpdmVycy9od21vbi9nbDUxOHNtLmMgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJz\n"
- "L2h3bW9uL2dsNTIwc20uYyAgICAgfCAgIDE1ICstLS0tLS0tLS0tLS0tLQogZHJpdmVycy9od21v\n"
- "bi9qYzQyLmMgICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2xpbmVh\n"
- "Z2UtcGVtLmMgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbG02My5jICAgICAg\n"
- "ICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9sbTczLmMgICAgICAgIHwgICAx\n"
- "NSArLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbG03NS5jICAgICAgICB8ICAgMTcgKy0t\n"
- "LS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbG03Ny5jICAgICAgICB8ICAgMTMgKy0tLS0t\n"
- "LS0tLS0tLQogZHJpdmVycy9od21vbi9sbTgwLmMgICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0t\n"
- "CiBkcml2ZXJzL2h3bW9uL2xtODMuYyAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZl\n"
- "cnMvaHdtb24vbG04NS5jICAgICAgICB8ICAgMTQgKy0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdt\n"
- "b24vbG04Ny5jICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9sbTkw\n"
- "LmMgICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2xtOTIuYyAgICAg\n"
- "ICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbG05My5jICAgICAgICB8ICAg\n"
- "MTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9sbTk1MjQxLmMgICAgIHwgICAxMyArLS0t\n"
- "LS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2xtOTUyNDUuYyAgICAgfCAgIDEzICstLS0tLS0tLS0t\n"
- "LS0KIGRyaXZlcnMvaHdtb24vbHRjNDE1MS5jICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJp\n"
- "dmVycy9od21vbi9sdGM0MjE1LmMgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3\n"
- "bW9uL2x0YzQyNDUuYyAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbHRj\n"
- "NDI2MS5jICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9tYXgxNjA2NS5j\n"
- "ICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL21heDE2MTkuYyAgICAgfCAg\n"
- "IDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbWF4MTY2OC5jICAgICB8ICAgMTMgKy0t\n"
- "LS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9tYXg2NjM5LmMgICAgIHwgICAxMyArLS0tLS0tLS0t\n"
- "LS0tCiBkcml2ZXJzL2h3bW9uL21heDY2NDIuYyAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRy\n"
- "aXZlcnMvaHdtb24vbWF4NjY1MC5jICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9o\n"
- "d21vbi9zaHQyMS5jICAgICAgIHwgICAyMyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVy\n"
- "cy9od21vbi9zbW02NjUuYyAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9u\n"
- "L3Ntc2M0N20xOTIuYyAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vdGhtYzUw\n"
- "LmMgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi90bXAxMDIuYyAgICAg\n"
- "IHwgICAxMiArLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vdG1wNDAxLmMgICAgICB8ICAgMTMg\n"
- "Ky0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi90bXA0MjEuYyAgICAgIHwgICAxMyArLS0tLS0t\n"
- "LS0tLS0tCiBkcml2ZXJzL2h3bW9uL3c4Mzc5MWQuYyAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0K\n"
- "IGRyaXZlcnMvaHdtb24vdzgzNzkyZC5jICAgICB8ICAgMTYgKy0tLS0tLS0tLS0tLS0tLQogZHJp\n"
- "dmVycy9od21vbi93ODM3OTMuYyAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3\n"
- "bW9uL3c4Mzc5NS5jICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vdzgz\n"
- "bDc4NXRzLmMgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi93ODNsNzg2bmcu\n"
- "YyAgIHwgICAxNSArLS0tLS0tLS0tLS0tLS0KIDY0IGZpbGVzIGNoYW5nZWQsIDY0IGluc2VydGlv\n"
- "bnMoKyksIDc5OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2FkNzQx\n"
- "NC5jIGIvZHJpdmVycy9od21vbi9hZDc0MTQuYwppbmRleCBkZjI5YTdmLi4yMmMyNDIwIDEwMDY0\n"
- "NAotLS0gYS9kcml2ZXJzL2h3bW9uL2FkNzQxNC5jCisrKyBiL2RyaXZlcnMvaHdtb24vYWQ3NDE0\n"
- "LmMKQEAgLTI1MiwxNyArMjUyLDcgQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGFkNzQxNF9k\n"
- "cml2ZXIgPSB7CiAJLmlkX3RhYmxlID0gYWQ3NDE0X2lkLAogfTsKIAotc3RhdGljIGludCBfX2lu\n"
- "aXQgYWQ3NDE0X2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmFkNzQxNF9k\n"
- "cml2ZXIpOwotfQotbW9kdWxlX2luaXQoYWQ3NDE0X2luaXQpOwotCi1zdGF0aWMgdm9pZCBfX2V4\n"
- "aXQgYWQ3NDE0X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmYWQ3NDE0X2RyaXZlcik7\n"
- "Ci19Ci1tb2R1bGVfZXhpdChhZDc0MTRfZXhpdCk7Cittb2R1bGVfaTJjX2RyaXZlcihhZDc0MTRf\n"
- "ZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiU3RlZmFuIFJvZXNlIDxzciBhdCBkZW54LmRlPiwg\n"
- "IgogCSAgICAgICJGcmFuayBFZGVsaGFldXNlciA8ZnJhbmsuZWRlbGhhZXVzZXIgYXQgc3BhbnNp\n"
- "b24uY29tPiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hZDc0MTguYyBiL2RyaXZlcnMv\n"
- "aHdtb24vYWQ3NDE4LmMKaW5kZXggOGNiNzE4Yy4uMzY3MjQ0YiAxMDA2NDQKLS0tIGEvZHJpdmVy\n"
- "cy9od21vbi9hZDc0MTguYworKysgYi9kcml2ZXJzL2h3bW9uL2FkNzQxOC5jCkBAIC0yODksMjAg\n"
- "KzI4OSw5IEBAIHN0YXRpYyBpbnQgYWQ3NDE4X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp\n"
- "ZW50KQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBhZDc0MThfaW5pdCh2b2lk\n"
- "KQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmYWQ3NDE4X2RyaXZlcik7Ci19Ci0KLXN0YXRp\n"
- "YyB2b2lkIF9fZXhpdCBhZDc0MThfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZhZDc0\n"
- "MThfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGFkNzQxOF9kcml2ZXIpOwogCiBNT0RV\n"
- "TEVfQVVUSE9SKCJBbGVzc2FuZHJvIFp1bW1vIDxhLnp1bW1vQHRvd2VydGVjaC5pdD4iKTsKIE1P\n"
- "RFVMRV9ERVNDUklQVElPTigiQUQ3NDE2LzE3LzE4IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0Uo\n"
- "IkdQTCIpOwogTU9EVUxFX1ZFUlNJT04oRFJWX1ZFUlNJT04pOwotCi1tb2R1bGVfaW5pdChhZDc0\n"
- "MThfaW5pdCk7Ci1tb2R1bGVfZXhpdChhZDc0MThfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJz\n"
- "L2h3bW9uL2FkbTEwMjEuYyBiL2RyaXZlcnMvaHdtb24vYWRtMTAyMS5jCmluZGV4IDFhZDBhODgu\n"
- "LjU0OThhZWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYWRtMTAyMS5jCisrKyBiL2RyaXZl\n"
- "cnMvaHdtb24vYWRtMTAyMS5jCkBAIC00NTEsMTUgKzQ1MSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYWRt\n"
- "MTAyMV9kYXRhICphZG0xMDIxX3VwZGF0ZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJl\n"
- "dHVybiBkYXRhOwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2FkbTEwMjFfaW5pdCh2\n"
- "b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmYWRtMTAyMV9kcml2ZXIpOwotfQotCi1z\n"
- "dGF0aWMgdm9pZCBfX2V4aXQgc2Vuc29yc19hZG0xMDIxX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVs\n"
- "X2RyaXZlcigmYWRtMTAyMV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIoYWRtMTAyMV9k\n"
- "cml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SICgiRnJvZG8gTG9vaWphYXJkIDxmcm9kb2xAZGRzLm5s\n"
- "PiBhbmQgIgogCQkiUGhpbGlwIEVkZWxicm9jayA8cGhpbEBuZXRyb2VkZ2UuY29tPiIpOwpAQCAt\n"
- "NDY4LDYgKzQ2MCwzIEBAIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIAogbW9kdWxlX3BhcmFtKHJl\n"
- "YWRfb25seSwgYm9vbCwgMCk7CiBNT0RVTEVfUEFSTV9ERVNDKHJlYWRfb25seSwgIkRvbid0IHNl\n"
- "dCBhbnkgdmFsdWVzLCByZWFkIG9ubHkgbW9kZSIpOwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2Fk\n"
- "bTEwMjFfaW5pdCkKLW1vZHVsZV9leGl0KHNlbnNvcnNfYWRtMTAyMV9leGl0KQpkaWZmIC0tZ2l0\n"
- "IGEvZHJpdmVycy9od21vbi9hZG0xMDI1LmMgYi9kcml2ZXJzL2h3bW9uL2FkbTEwMjUuYwppbmRl\n"
- "eCA2MGJlZmMwLi5mMDJjMzhiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2FkbTEwMjUuYwor\n"
- "KysgYi9kcml2ZXJzL2h3bW9uL2FkbTEwMjUuYwpAQCAtNTg5LDE5ICs1ODksOCBAQCBzdGF0aWMg\n"
- "c3RydWN0IGFkbTEwMjVfZGF0YSAqYWRtMTAyNV91cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2Ug\n"
- "KmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19hZG0x\n"
- "MDI1X2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmFkbTEwMjVfZHJpdmVy\n"
- "KTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfYWRtMTAyNV9leGl0KHZvaWQpCi17\n"
- "Ci0JaTJjX2RlbF9kcml2ZXIoJmFkbTEwMjVfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVy\n"
- "KGFkbTEwMjVfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiSmVhbiBEZWx2YXJlIDxraGFsaUBs\n"
- "aW51eC1mci5vcmc+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkFETTEwMjUgZHJpdmVyIik7CiBN\n"
- "T0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfYWRtMTAyNV9pbml0\n"
- "KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfYWRtMTAyNV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZl\n"
- "cnMvaHdtb24vYWRtMTAyNi5jIGIvZHJpdmVycy9od21vbi9hZG0xMDI2LmMKaW5kZXggMDUzMTg2\n"
- "Ny4uYmUxNzA4MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hZG0xMDI2LmMKKysrIGIvZHJp\n"
- "dmVycy9od21vbi9hZG0xMDI2LmMKQEAgLTE3NjEsMjAgKzE3NjEsOSBAQCBzdGF0aWMgaW50IGFk\n"
- "bTEwMjZfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCiAJcmV0dXJuIDA7CiB9CiAK\n"
- "LXN0YXRpYyBpbnQgX19pbml0IHNtX2FkbTEwMjZfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNf\n"
- "YWRkX2RyaXZlcigmYWRtMTAyNl9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc21f\n"
- "YWRtMTAyNl9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmFkbTEwMjZfZHJpdmVyKTsK\n"
- "LX0KK21vZHVsZV9pMmNfZHJpdmVyKGFkbTEwMjZfZHJpdmVyKTsKIAogTU9EVUxFX0xJQ0VOU0Uo\n"
- "IkdQTCIpOwogTU9EVUxFX0FVVEhPUigiUGhpbGlwIFBva29ybnkgPHBwb2tvcm55QHBlbmd1aW5j\n"
- "b21wdXRpbmcuY29tPiwgIgogCSAgICAgICJKdXN0aW4gVGhpZXNzZW4gPGp0aGllc3NlbkBwZW5n\n"
- "dWluY29tcHV0aW5nLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiQURNMTAyNiBkcml2ZXIi\n"
- "KTsKLQotbW9kdWxlX2luaXQoc21fYWRtMTAyNl9pbml0KTsKLW1vZHVsZV9leGl0KHNtX2FkbTEw\n"
- "MjZfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2FkbTEwMjkuYyBiL2RyaXZlcnMv\n"
- "aHdtb24vYWRtMTAyOS5jCmluZGV4IDBiOGEzYjEuLjhlNWFkYjIgMTAwNjQ0Ci0tLSBhL2RyaXZl\n"
- "cnMvaHdtb24vYWRtMTAyOS5jCisrKyBiL2RyaXZlcnMvaHdtb24vYWRtMTAyOS5jCkBAIC00NDYs\n"
- "MjQgKzQ0Niw4IEBAIHN0YXRpYyBzdHJ1Y3QgYWRtMTAyOV9kYXRhICphZG0xMDI5X3VwZGF0ZV9k\n"
- "ZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi0vKgotCUNvbW1v\n"
- "biBtb2R1bGUgc3R1ZmYKLSovCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2FkbTEwMjlfaW5p\n"
- "dCh2b2lkKQotewotCi0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhZG0xMDI5X2RyaXZlcik7Ci19\n"
- "Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2FkbTEwMjlfZXhpdCh2b2lkKQotewotCi0J\n"
- "aTJjX2RlbF9kcml2ZXIoJmFkbTEwMjlfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGFk\n"
- "bTEwMjlfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiQ29yZW50aW4gTEFCQkUgPGNvcmVudGlu\n"
- "LmxhYmJlQGdlb21hdHlzLmZyPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJhZG0xMDI5IGRyaXZl\n"
- "ciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2Fk\n"
- "bTEwMjlfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX2FkbTEwMjlfZXhpdCk7CmRpZmYgLS1n\n"
- "aXQgYS9kcml2ZXJzL2h3bW9uL2FkbTEwMzEuYyBiL2RyaXZlcnMvaHdtb24vYWRtMTAzMS5jCmlu\n"
- "ZGV4IDA2ODNlNmIuLjcxYmU0MmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYWRtMTAzMS5j\n"
- "CisrKyBiL2RyaXZlcnMvaHdtb24vYWRtMTAzMS5jCkBAIC0xMDc4LDE5ICsxMDc4LDggQEAgc3Rh\n"
- "dGljIHN0cnVjdCBhZG0xMDMxX2RhdGEgKmFkbTEwMzFfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2\n"
- "aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNf\n"
- "YWRtMTAzMV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhZG0xMDMxX2Ry\n"
- "aXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2FkbTEwMzFfZXhpdCh2b2lk\n"
- "KQotewotCWkyY19kZWxfZHJpdmVyKCZhZG0xMDMxX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2Ry\n"
- "aXZlcihhZG0xMDMxX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkFsZXhhbmRyZSBkJ0FsdG9u\n"
- "IDxhbGV4QGFsZXhkYWx0b24ub3JnPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJBRE0xMDMxL0FE\n"
- "TTEwMzAgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNl\n"
- "bnNvcnNfYWRtMTAzMV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfYWRtMTAzMV9leGl0KTsK\n"
- "ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWRtOTI0MC5jIGIvZHJpdmVycy9od21vbi9hZG05\n"
- "MjQwLmMKaW5kZXggOWUyMzRiOS4uNWUzMDdiYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9h\n"
- "ZG05MjQwLmMKKysrIGIvZHJpdmVycy9od21vbi9hZG05MjQwLmMKQEAgLTc5NSwyMSArNzk1LDkg\n"
- "QEAgc3RhdGljIHN0cnVjdCBhZG05MjQwX2RhdGEgKmFkbTkyNDBfdXBkYXRlX2RldmljZShzdHJ1\n"
- "Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNl\n"
- "bnNvcnNfYWRtOTI0MF9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhZG05\n"
- "MjQwX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2FkbTkyNDBfZXhp\n"
- "dCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZhZG05MjQwX2RyaXZlcik7Ci19Cittb2R1bGVf\n"
- "aTJjX2RyaXZlcihhZG05MjQwX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIk1pY2hpZWwgUm9v\n"
- "ayA8bWljaGllbEBncmVuZGVscHJvamVjdC5ubD4sICIKIAkJIkdyYW50IENvYWR5IDxnY29hZHku\n"
- "bGtAZ21haWwuY29tPiBhbmQgb3RoZXJzIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkFETTkyNDAv\n"
- "RFMxNzgwL0xNODEgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9p\n"
- "bml0KHNlbnNvcnNfYWRtOTI0MF9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfYWRtOTI0MF9l\n"
- "eGl0KTsKLQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hZHMxMDE1LmMgYi9kcml2ZXJzL2h3\n"
- "bW9uL2FkczEwMTUuYwppbmRleCBlZWRjYTNjLi42MGJlMzU4IDEwMDY0NAotLS0gYS9kcml2ZXJz\n"
- "L2h3bW9uL2FkczEwMTUuYworKysgYi9kcml2ZXJzL2h3bW9uL2FkczEwMTUuYwpAQCAtMzA2LDE5\n"
- "ICszMDYsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgYWRzMTAxNV9kcml2ZXIgPSB7CiAJ\n"
- "LmlkX3RhYmxlID0gYWRzMTAxNV9pZCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNf\n"
- "YWRzMTAxNV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhZHMxMDE1X2Ry\n"
- "aXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2FkczEwMTVfZXhpdCh2b2lk\n"
- "KQotewotCWkyY19kZWxfZHJpdmVyKCZhZHMxMDE1X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2Ry\n"
- "aXZlcihhZHMxMDE1X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkRpcmsgRWliYWNoIDxlaWJh\n"
- "Y2hAZ2RzeXMuZGU+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkFEUzEwMTUgZHJpdmVyIik7CiBN\n"
- "T0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfYWRzMTAxNV9pbml0\n"
- "KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfYWRzMTAxNV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZl\n"
- "cnMvaHdtb24vYWR0NzQxMS5jIGIvZHJpdmVycy9od21vbi9hZHQ3NDExLmMKaW5kZXggNWNjM2Uz\n"
- "Ny4uZTRkODZjYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hZHQ3NDExLmMKKysrIGIvZHJp\n"
- "dmVycy9od21vbi9hZHQ3NDExLmMKQEAgLTM0OCwxNyArMzQ4LDcgQEAgc3RhdGljIHN0cnVjdCBp\n"
- "MmNfZHJpdmVyIGFkdDc0MTFfZHJpdmVyID0gewogCS5jbGFzcyA9IEkyQ19DTEFTU19IV01PTiwK\n"
- "IH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfYWR0NzQxMV9pbml0KHZvaWQpCi17Ci0J\n"
- "cmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhZHQ3NDExX2RyaXZlcik7Ci19Ci1tb2R1bGVfaW5pdChz\n"
- "ZW5zb3JzX2FkdDc0MTFfaW5pdCkKLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfYWR0NzQx\n"
- "MV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmFkdDc0MTFfZHJpdmVyKTsKLX0KLW1v\n"
- "ZHVsZV9leGl0KHNlbnNvcnNfYWR0NzQxMV9leGl0KQorbW9kdWxlX2kyY19kcml2ZXIoYWR0NzQx\n"
- "MV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0\n"
- "cm9uaXguZGU+IGFuZCAiCiAJIldvbGZyYW0gU2FuZyA8dy5zYW5nQHBlbmd1dHJvbml4LmRlPiIp\n"
- "OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hZHQ3NDYyLmMgYi9kcml2ZXJzL2h3bW9uL2Fk\n"
- "dDc0NjIuYwppbmRleCAyYWYwYzdiLi4xYmViOGE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9u\n"
- "L2FkdDc0NjIuYworKysgYi9kcml2ZXJzL2h3bW9uL2FkdDc0NjIuYwpAQCAtMTk3NSwxOSArMTk3\n"
- "NSw4IEBAIHN0YXRpYyBpbnQgYWR0NzQ2Ml9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu\n"
- "dCkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBfX2luaXQgYWR0NzQ2Ml9pbml0KHZvaWQp\n"
- "Ci17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhZHQ3NDYyX2RyaXZlcik7Ci19Ci0KLXN0YXRp\n"
- "YyB2b2lkIF9fZXhpdCBhZHQ3NDYyX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmYWR0\n"
- "NzQ2Ml9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIoYWR0NzQ2Ml9kcml2ZXIpOwogCiBN\n"
- "T0RVTEVfQVVUSE9SKCJEYXJyaWNrIEouIFdvbmcgPGRqd29uZ0B1cy5pYm0uY29tPiIpOwogTU9E\n"
- "VUxFX0RFU0NSSVBUSU9OKCJBRFQ3NDYyIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIp\n"
- "OwotCi1tb2R1bGVfaW5pdChhZHQ3NDYyX2luaXQpOwotbW9kdWxlX2V4aXQoYWR0NzQ2Ml9leGl0\n"
- "KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWR0NzQ3MC5jIGIvZHJpdmVycy9od21vbi9h\n"
- "ZHQ3NDcwLmMKaW5kZXggYzZkMWNlMC4uZGRjYTIxNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21v\n"
- "bi9hZHQ3NDcwLmMKKysrIGIvZHJpdmVycy9od21vbi9hZHQ3NDcwLmMKQEAgLTEzMTcsMTkgKzEz\n"
- "MTcsOCBAQCBzdGF0aWMgaW50IGFkdDc0NzBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGll\n"
- "bnQpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IGFkdDc0NzBfaW5pdCh2b2lk\n"
- "KQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmYWR0NzQ3MF9kcml2ZXIpOwotfQotCi1zdGF0\n"
- "aWMgdm9pZCBfX2V4aXQgYWR0NzQ3MF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmFk\n"
- "dDc0NzBfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGFkdDc0NzBfZHJpdmVyKTsKIAog\n"
- "TU9EVUxFX0FVVEhPUigiRGFycmljayBKLiBXb25nIDxkandvbmdAdXMuaWJtLmNvbT4iKTsKIE1P\n"
- "RFVMRV9ERVNDUklQVElPTigiQURUNzQ3MCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwi\n"
- "KTsKLQotbW9kdWxlX2luaXQoYWR0NzQ3MF9pbml0KTsKLW1vZHVsZV9leGl0KGFkdDc0NzBfZXhp\n"
- "dCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2FkdDc0NzUuYyBiL2RyaXZlcnMvaHdtb24v\n"
- "YWR0NzQ3NS5jCmluZGV4IGI1ZmNkODcuLmM3NTM1NDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdt\n"
- "b24vYWR0NzQ3NS5jCisrKyBiL2RyaXZlcnMvaHdtb24vYWR0NzQ3NS5jCkBAIC0xNjAwLDE5ICsx\n"
- "NjAwLDggQEAgc3RhdGljIHN0cnVjdCBhZHQ3NDc1X2RhdGEgKmFkdDc0NzVfdXBkYXRlX2Rldmlj\n"
- "ZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19p\n"
- "bml0IHNlbnNvcnNfYWR0NzQ3NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVy\n"
- "KCZhZHQ3NDc1X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2FkdDc0\n"
- "NzVfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZhZHQ3NDc1X2RyaXZlcik7Ci19Citt\n"
- "b2R1bGVfaTJjX2RyaXZlcihhZHQ3NDc1X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkFkdmFu\n"
- "Y2VkIE1pY3JvIERldmljZXMsIEluYyIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJhZHQ3NDc1IGRy\n"
- "aXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2Fk\n"
- "dDc0NzVfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX2FkdDc0NzVfZXhpdCk7CmRpZmYgLS1n\n"
- "aXQgYS9kcml2ZXJzL2h3bW9uL2FtYzY4MjEuYyBiL2RyaXZlcnMvaHdtb24vYW1jNjgyMS5jCmlu\n"
- "ZGV4IDQwMzM5NzQuLmRhNmNhNGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYW1jNjgyMS5j\n"
- "CisrKyBiL2RyaXZlcnMvaHdtb24vYW1jNjgyMS5jCkBAIC0xMDk1LDIwICsxMDk1LDcgQEAgc3Rh\n"
- "dGljIHN0cnVjdCBhbWM2ODIxX2RhdGEgKmFtYzY4MjFfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2\n"
- "aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLQotc3RhdGljIGludCBfX2luaXQgYW1jNjgy\n"
- "MV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhbWM2ODIxX2RyaXZlcik7\n"
- "Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhbWM2ODIxX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVs\n"
- "X2RyaXZlcigmYW1jNjgyMV9kcml2ZXIpOwotfQotCi1tb2R1bGVfaW5pdChhbWM2ODIxX2luaXQp\n"
- "OwotbW9kdWxlX2V4aXQoYW1jNjgyMV9leGl0KTsKLQorbW9kdWxlX2kyY19kcml2ZXIoYW1jNjgy\n"
- "MV9kcml2ZXIpOwogCiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiBNT0RVTEVfQVVUSE9SKCJULiBN\n"
- "ZXJ0ZWxqIDx0b21hei5tZXJ0ZWxqQGd1ZXN0LmFybmVzLnNpPiIpOwpkaWZmIC0tZ2l0IGEvZHJp\n"
- "dmVycy9od21vbi9hc2IxMDAuYyBiL2RyaXZlcnMvaHdtb24vYXNiMTAwLmMKaW5kZXggZDdiZDFm\n"
- "My4uMGYzMDBjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hc2IxMDAuYworKysgYi9kcml2\n"
- "ZXJzL2h3bW9uL2FzYjEwMC5jCkBAIC05NzEsMTkgKzk3MSw4IEBAIHN0YXRpYyBzdHJ1Y3QgYXNi\n"
- "MTAwX2RhdGEgKmFzYjEwMF91cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1\n"
- "cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgYXNiMTAwX2luaXQodm9pZCkKLXsKLQly\n"
- "ZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmFzYjEwMF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBf\n"
- "X2V4aXQgYXNiMTAwX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmYXNiMTAwX2RyaXZl\n"
- "cik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihhc2IxMDBfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhP\n"
- "UigiTWFyayBNLiBIb2ZmbWFuIDxtaG9mZm1hbkBsaWdodGxpbmsuY29tPiIpOwogTU9EVUxFX0RF\n"
- "U0NSSVBUSU9OKCJBU0IxMDAgQmFjaCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsK\n"
- "LQotbW9kdWxlX2luaXQoYXNiMTAwX2luaXQpOwotbW9kdWxlX2V4aXQoYXNiMTAwX2V4aXQpOwpk\n"
- "aWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hdHhwMS5jIGIvZHJpdmVycy9od21vbi9hdHhwMS5j\n"
- "CmluZGV4IDMzY2MxNDMuLjcwMWJjOWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYXR4cDEu\n"
- "YworKysgYi9kcml2ZXJzL2h3bW9uL2F0eHAxLmMKQEAgLTM2NywxNSArMzY3LDQgQEAgc3RhdGlj\n"
- "IGludCBhdHhwMV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAlyZXR1cm4gMDsK\n"
- "IH07CiAKLXN0YXRpYyBpbnQgX19pbml0IGF0eHAxX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJj\n"
- "X2FkZF9kcml2ZXIoJmF0eHAxX2RyaXZlcik7Ci19OwotCi1zdGF0aWMgdm9pZCBfX2V4aXQgYXR4\n"
- "cDFfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZhdHhwMV9kcml2ZXIpOwotfTsKLQot\n"
- "bW9kdWxlX2luaXQoYXR4cDFfaW5pdCk7Ci1tb2R1bGVfZXhpdChhdHhwMV9leGl0KTsKK21vZHVs\n"
- "ZV9pMmNfZHJpdmVyKGF0eHAxX2RyaXZlcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2Rz\n"
- "MTYyMS5jIGIvZHJpdmVycy9od21vbi9kczE2MjEuYwppbmRleCBlZjFhYzk5Ni4uOTgzMmFjNSAx\n"
- "MDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9kczE2MjEuYworKysgYi9kcml2ZXJzL2h3bW9uL2Rz\n"
- "MTYyMS5jCkBAIC0zMDUsMjAgKzMwNSw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBkczE2\n"
- "MjFfZHJpdmVyID0gewogCS5hZGRyZXNzX2xpc3QJPSBub3JtYWxfaTJjLAogfTsKIAotc3RhdGlj\n"
- "IGludCBfX2luaXQgZHMxNjIxX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIo\n"
- "JmRzMTYyMV9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgZHMxNjIxX2V4aXQodm9p\n"
- "ZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmZHMxNjIxX2RyaXZlcik7Ci19Ci0KK21vZHVsZV9pMmNf\n"
- "ZHJpdmVyKGRzMTYyMV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJDaHJpc3RpYW4gVy4gWnVj\n"
- "a3NjaHdlcmR0IDx6YW55QHRyaXEubmV0PiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJEUzE2MjEg\n"
- "ZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KGRzMTYyMV9p\n"
- "bml0KTsKLW1vZHVsZV9leGl0KGRzMTYyMV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdt\n"
- "b24vZHM2MjAuYyBiL2RyaXZlcnMvaHdtb24vZHM2MjAuYwppbmRleCAyMjVhZTRmLi4yZTJiNDMw\n"
- "IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2RzNjIwLmMKKysrIGIvZHJpdmVycy9od21vbi9k\n"
- "czYyMC5jCkBAIC0yOTcsMTkgKzI5Nyw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBkczYy\n"
- "MF9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlID0gZHM2MjBfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9f\n"
- "aW5pdCBkczYyMF9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZkczYyMF9k\n"
- "cml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgZHM2MjBfZXhpdCh2b2lkKQotewotCWky\n"
- "Y19kZWxfZHJpdmVyKCZkczYyMF9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIoZHM2MjBf\n"
- "ZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiUm9sYW5kIFN0aWdnZSA8c3RpZ2dlQGFudGNvbS5k\n"
- "ZT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiRFM2MjAgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5T\n"
- "RSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KGRzNjIwX2luaXQpOwotbW9kdWxlX2V4aXQoZHM2MjBf\n"
- "ZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2VtYzE0MDMuYyBiL2RyaXZlcnMvaHdt\n"
- "b24vZW1jMTQwMy5jCmluZGV4IGNkMmE2ZTQuLjIyM2JkM2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv\n"
- "aHdtb24vZW1jMTQwMy5jCisrKyBiL2RyaXZlcnMvaHdtb24vZW1jMTQwMy5jCkBAIC0zNjYsMTgg\n"
- "KzM2Niw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBzZW5zb3JfZW1jMTQwMyA9IHsKIAku\n"
- "YWRkcmVzc19saXN0ID0gZW1jMTQwM19hZGRyZXNzX2xpc3QsCiB9OwogCi1zdGF0aWMgaW50IF9f\n"
- "aW5pdCBzZW5zb3JfZW1jMTQwM19pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVy\n"
- "KCZzZW5zb3JfZW1jMTQwMyk7Ci19Ci0KLXN0YXRpYyB2b2lkICBfX2V4aXQgc2Vuc29yX2VtYzE0\n"
- "MDNfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZzZW5zb3JfZW1jMTQwMyk7Ci19Ci0K\n"
- "LW1vZHVsZV9pbml0KHNlbnNvcl9lbWMxNDAzX2luaXQpOwotbW9kdWxlX2V4aXQoc2Vuc29yX2Vt\n"
- "YzE0MDNfZXhpdCk7Cittb2R1bGVfaTJjX2RyaXZlcihzZW5zb3JfZW1jMTQwMyk7CiAKIE1PRFVM\n"
- "RV9BVVRIT1IoIkthbGhhbiBUcmlzYWwgPGthbGhhbi50cmlzYWxAaW50ZWwuY29tIik7CiBNT0RV\n"
- "TEVfREVTQ1JJUFRJT04oImVtYzE0MDMgVGhlcm1hbCBEcml2ZXIiKTsKZGlmZiAtLWdpdCBhL2Ry\n"
- "aXZlcnMvaHdtb24vZW1jMjEwMy5jIGIvZHJpdmVycy9od21vbi9lbWMyMTAzLmMKaW5kZXggYWY5\n"
- "MTRhZDkuLmMyNTE0NDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vZW1jMjEwMy5jCisrKyBi\n"
- "L2RyaXZlcnMvaHdtb24vZW1jMjEwMy5jCkBAIC03MjIsMTkgKzcyMiw4IEBAIHN0YXRpYyBzdHJ1\n"
- "Y3QgaTJjX2RyaXZlciBlbWMyMTAzX2RyaXZlciA9IHsKIAkuYWRkcmVzc19saXN0CT0gbm9ybWFs\n"
- "X2kyYywKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfZW1jMjEwM19pbml0KHZvaWQp\n"
- "Ci17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZlbWMyMTAzX2RyaXZlcik7Ci19Ci0KLXN0YXRp\n"
- "YyB2b2lkIF9fZXhpdCBzZW5zb3JzX2VtYzIxMDNfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJp\n"
- "dmVyKCZlbWMyMTAzX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihlbWMyMTAzX2RyaXZl\n"
- "cik7CiAKIE1PRFVMRV9BVVRIT1IoIlN0ZXZlIEdsZW5kaW5uaW5nIDxzdGV2ZS5nbGVuZGlubmlu\n"
- "Z0BzbXNjLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiU01TQyBFTUMyMTAzIGh3bW9uIGRy\n"
- "aXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2Vt\n"
- "YzIxMDNfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX2VtYzIxMDNfZXhpdCk7CmRpZmYgLS1n\n"
- "aXQgYS9kcml2ZXJzL2h3bW9uL2VtYzZ3MjAxLmMgYi9kcml2ZXJzL2h3bW9uL2VtYzZ3MjAxLmMK\n"
- "aW5kZXggMDA2NDQzMi4uY2JlZjZlMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9lbWM2dzIw\n"
- "MS5jCisrKyBiL2RyaXZlcnMvaHdtb24vZW1jNncyMDEuYwpAQCAtNTUyLDE3ICs1NTIsNyBAQCBz\n"
- "dGF0aWMgc3RydWN0IGkyY19kcml2ZXIgZW1jNncyMDFfZHJpdmVyID0gewogCS5hZGRyZXNzX2xp\n"
- "c3QJPSBub3JtYWxfaTJjLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19lbWM2dzIw\n"
- "MV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZlbWM2dzIwMV9kcml2ZXIp\n"
- "OwotfQotbW9kdWxlX2luaXQoc2Vuc29yc19lbWM2dzIwMV9pbml0KTsKLQotc3RhdGljIHZvaWQg\n"
- "X19leGl0IHNlbnNvcnNfZW1jNncyMDFfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZl\n"
- "bWM2dzIwMV9kcml2ZXIpOwotfQotbW9kdWxlX2V4aXQoc2Vuc29yc19lbWM2dzIwMV9leGl0KTsK\n"
- "K21vZHVsZV9pMmNfZHJpdmVyKGVtYzZ3MjAxX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkpl\n"
- "YW4gRGVsdmFyZSA8a2hhbGlAbGludXgtZnIub3JnPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJT\n"
- "TVNDIEVNQzZXMjAxIGhhcmR3YXJlIG1vbml0b3JpbmcgZHJpdmVyIik7CmRpZmYgLS1naXQgYS9k\n"
- "cml2ZXJzL2h3bW9uL2Y3NTM3NXMuYyBiL2RyaXZlcnMvaHdtb24vZjc1Mzc1cy5jCmluZGV4IDk1\n"
- "Y2JmYjMuLjgzMjYwODQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vZjc1Mzc1cy5jCisrKyBi\n"
- "L2RyaXZlcnMvaHdtb24vZjc1Mzc1cy5jCkBAIC02OTksMTkgKzY5OSw4IEBAIHN0YXRpYyBpbnQg\n"
- "Zjc1Mzc1X2RldGVjdChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAogCXJldHVybiAwOwogfQog\n"
- "Ci1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2Y3NTM3NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJu\n"
- "IGkyY19hZGRfZHJpdmVyKCZmNzUzNzVfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0\n"
- "IHNlbnNvcnNfZjc1Mzc1X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmZjc1Mzc1X2Ry\n"
- "aXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihmNzUzNzVfZHJpdmVyKTsKIAogTU9EVUxFX0FV\n"
- "VEhPUigiUmlrdSBWb2lwaW8iKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIE1PRFVMRV9ERVND\n"
- "UklQVElPTigiRjc1MzczL0Y3NTM3NSBoYXJkd2FyZSBtb25pdG9yaW5nIGRyaXZlciIpOwotCi1t\n"
- "b2R1bGVfaW5pdChzZW5zb3JzX2Y3NTM3NV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfZjc1\n"
- "Mzc1X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9mc2NobWQuYyBiL2RyaXZlcnMv\n"
- "aHdtb24vZnNjaG1kLmMKaW5kZXggYWE2ZDhiNi4uNzNiYTk0MiAxMDA2NDQKLS0tIGEvZHJpdmVy\n"
- "cy9od21vbi9mc2NobWQuYworKysgYi9kcml2ZXJzL2h3bW9uL2ZzY2htZC5jCkBAIC0xMzE0LDIw\n"
- "ICsxMzE0LDkgQEAgc3RhdGljIHN0cnVjdCBmc2NobWRfZGF0YSAqZnNjaG1kX3VwZGF0ZV9kZXZp\n"
- "Y2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi1zdGF0aWMgaW50IF9f\n"
- "aW5pdCBmc2NobWRfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmZnNjaG1k\n"
- "X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBmc2NobWRfZXhpdCh2b2lkKQotewot\n"
- "CWkyY19kZWxfZHJpdmVyKCZmc2NobWRfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGZz\n"
- "Y2htZF9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJIYW5zIGRlIEdvZWRlIDxoZGVnb2VkZUBy\n"
- "ZWRoYXQuY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJGU0MgUG9zZWlkb24sIEhlcm1lcywg\n"
- "U2N5bGxhLCBIZXJhY2xlcywgSGVpbWRhbGwsIEhhZGVzICIKIAkJCSJhbmQgU3lsZXVzIGRyaXZl\n"
- "ciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChmc2NobWRfaW5pdCk7\n"
- "Ci1tb2R1bGVfZXhpdChmc2NobWRfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2c3\n"
- "NjBhLmMgYi9kcml2ZXJzL2h3bW9uL2c3NjBhLmMKaW5kZXggMWQ2YTZmYS4uZjhjZDVhOSAxMDA2\n"
- "NDQKLS0tIGEvZHJpdmVycy9od21vbi9nNzYwYS5jCisrKyBiL2RyaXZlcnMvaHdtb24vZzc2MGEu\n"
- "YwpAQCAtMjUwLDIxICsyNTAsOCBAQCBzdGF0aWMgaW50IGc3NjBhX3JlbW92ZShzdHJ1Y3QgaTJj\n"
- "X2NsaWVudCAqY2xpZW50KQogCXJldHVybiAwOwogfQogCi0vKiBtb2R1bGUgbWFuYWdlbWVudCAq\n"
- "LwotCi1zdGF0aWMgaW50IF9faW5pdCBnNzYwYV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19h\n"
- "ZGRfZHJpdmVyKCZnNzYwYV9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgZzc2MGFf\n"
- "ZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZnNzYwYV9kcml2ZXIpOwotfQorbW9kdWxl\n"
- "X2kyY19kcml2ZXIoZzc2MGFfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiSGVyYmVydCBWYWxl\n"
- "cmlvIFJpZWRlbCA8aHZyQGdudS5vcmc+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkdNVCBHNzYw\n"
- "QSBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQoZzc2MGFf\n"
- "aW5pdCk7Ci1tb2R1bGVfZXhpdChnNzYwYV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdt\n"
- "b24vZ2w1MThzbS5jIGIvZHJpdmVycy9od21vbi9nbDUxOHNtLmMKaW5kZXggYTEzZTJkYS4uODli\n"
- "OGMwYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9nbDUxOHNtLmMKKysrIGIvZHJpdmVycy9o\n"
- "d21vbi9nbDUxOHNtLmMKQEAgLTY3NiwyMSArNjc2LDEwIEBAIHN0YXRpYyBzdHJ1Y3QgZ2w1MThf\n"
- "ZGF0YSAqZ2w1MThfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRh\n"
- "dGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfZ2w1MThzbV9pbml0KHZvaWQpCi17\n"
- "Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZnbDUxOF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9p\n"
- "ZCBfX2V4aXQgc2Vuc29yc19nbDUxOHNtX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigm\n"
- "Z2w1MThfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGdsNTE4X2RyaXZlcik7CiAKIE1P\n"
- "RFVMRV9BVVRIT1IoIkZyb2RvIExvb2lqYWFyZCA8ZnJvZG9sQGRkcy5ubD4sICIKIAkiS3lvc3Rp\n"
- "IE1hbGtraSA8a21hbGtraUBjYy5odXQuZmk+IGFuZCAiCiAJIkhvbmctR3VubiBDaGV3IDxoZ2xp\n"
- "bnV4QGd1bm5ldC5vcmc+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkdMNTE4U00gZHJpdmVyIik7\n"
- "CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfZ2w1MThzbV9p\n"
- "bml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfZ2w1MThzbV9leGl0KTsKZGlmZiAtLWdpdCBhL2Ry\n"
- "aXZlcnMvaHdtb24vZ2w1MjBzbS5jIGIvZHJpdmVycy9od21vbi9nbDUyMHNtLmMKaW5kZXggY2Q2\n"
- "MDg1Yi4uZTZkY2Y2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9nbDUyMHNtLmMKKysrIGIv\n"
- "ZHJpdmVycy9od21vbi9nbDUyMHNtLmMKQEAgLTkxMCwyMyArOTEwLDEwIEBAIHN0YXRpYyBzdHJ1\n"
- "Y3QgZ2w1MjBfZGF0YSAqZ2w1MjBfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJ\n"
- "cmV0dXJuIGRhdGE7CiB9CiAKLQotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19nbDUyMHNtX2lu\n"
- "aXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmdsNTIwX2RyaXZlcik7Ci19Ci0K\n"
- "LXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2dsNTIwc21fZXhpdCh2b2lkKQotewotCWkyY19k\n"
- "ZWxfZHJpdmVyKCZnbDUyMF9kcml2ZXIpOwotfQotCittb2R1bGVfaTJjX2RyaXZlcihnbDUyMF9k\n"
- "cml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+\n"
- "LCAiCiAJIkt5w7ZzdGkgTcOkbGtraSA8a21hbGtraUBjYy5odXQuZmk+LCAiCiAJIk1hYXJ0ZW4g\n"
- "RGVwcmV6IDxtYWFydGVuZGVwcmV6QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4iKTsKIE1PRFVMRV9E\n"
- "RVNDUklQVElPTigiR0w1MjBTTSBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQot\n"
- "bW9kdWxlX2luaXQoc2Vuc29yc19nbDUyMHNtX2luaXQpOwotbW9kdWxlX2V4aXQoc2Vuc29yc19n\n"
- "bDUyMHNtX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9qYzQyLmMgYi9kcml2ZXJz\n"
- "L2h3bW9uL2pjNDIuYwppbmRleCAyZDNkNzI4Li5kMzNjNTkyIDEwMDY0NAotLS0gYS9kcml2ZXJz\n"
- "L2h3bW9uL2pjNDIuYworKysgYi9kcml2ZXJzL2h3bW9uL2pjNDIuYwpAQCAtNTg4LDE5ICs1ODgs\n"
- "OCBAQCBhYm9ydDoKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3Jz\n"
- "X2pjNDJfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmamM0Ml9kcml2ZXIp\n"
- "OwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vuc29yc19qYzQyX2V4aXQodm9pZCkKLXsKLQlp\n"
- "MmNfZGVsX2RyaXZlcigmamM0Ml9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIoamM0Ml9k\n"
- "cml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJHdWVudGVyIFJvZWNrIDxndWVudGVyLnJvZWNrQGVy\n"
- "aWNzc29uLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiSkM0MiBkcml2ZXIiKTsKIE1PRFVM\n"
- "RV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc19qYzQyX2luaXQpOwotbW9k\n"
- "dWxlX2V4aXQoc2Vuc29yc19qYzQyX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9s\n"
- "aW5lYWdlLXBlbS5jIGIvZHJpdmVycy9od21vbi9saW5lYWdlLXBlbS5jCmluZGV4IDU4ZWRlZDIu\n"
- "LjViOGM5YWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbGluZWFnZS1wZW0uYworKysgYi9k\n"
- "cml2ZXJzL2h3bW9uL2xpbmVhZ2UtcGVtLmMKQEAgLTU2OCwxOSArNTY4LDggQEAgc3RhdGljIHN0\n"
- "cnVjdCBpMmNfZHJpdmVyIHBlbV9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlID0gcGVtX2lkLAogfTsK\n"
- "IAotc3RhdGljIGludCBfX2luaXQgcGVtX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9k\n"
- "cml2ZXIoJnBlbV9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgcGVtX2V4aXQodm9p\n"
- "ZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmcGVtX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZl\n"
- "cihwZW1fZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiR3VlbnRlciBSb2VjayA8Z3VlbnRlci5y\n"
- "b2Vja0Blcmljc3Nvbi5jb20+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkxpbmVhZ2UgQ1BMIFBF\n"
- "TSBoYXJkd2FyZSBtb25pdG9yaW5nIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwot\n"
- "Ci1tb2R1bGVfaW5pdChwZW1faW5pdCk7Ci1tb2R1bGVfZXhpdChwZW1fZXhpdCk7CmRpZmYgLS1n\n"
- "aXQgYS9kcml2ZXJzL2h3bW9uL2xtNjMuYyBiL2RyaXZlcnMvaHdtb24vbG02My5jCmluZGV4IDk2\n"
- "NDIyODYuLjJlYWUxYmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbG02My5jCisrKyBiL2Ry\n"
- "aXZlcnMvaHdtb24vbG02My5jCkBAIC03MjcsMTkgKzcyNyw4IEBAIHN0YXRpYyBzdHJ1Y3QgbG02\n"
- "M19kYXRhICpsbTYzX3VwZGF0ZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBk\n"
- "YXRhOwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2xtNjNfaW5pdCh2b2lkKQotewot\n"
- "CXJldHVybiBpMmNfYWRkX2RyaXZlcigmbG02M19kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBf\n"
- "X2V4aXQgc2Vuc29yc19sbTYzX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbG02M19k\n"
- "cml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobG02M19kcml2ZXIpOwogCiBNT0RVTEVfQVVU\n"
- "SE9SKCJKZWFuIERlbHZhcmUgPGtoYWxpQGxpbnV4LWZyLm9yZz4iKTsKIE1PRFVMRV9ERVNDUklQ\n"
- "VElPTigiTE02MyBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2lu\n"
- "aXQoc2Vuc29yc19sbTYzX2luaXQpOwotbW9kdWxlX2V4aXQoc2Vuc29yc19sbTYzX2V4aXQpOwpk\n"
- "aWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9sbTczLmMgYi9kcml2ZXJzL2h3bW9uL2xtNzMuYwpp\n"
- "bmRleCA5ZTY0ZDk2Li4yYzYzZjE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2xtNzMuYwor\n"
- "KysgYi9kcml2ZXJzL2h3bW9uL2xtNzMuYwpAQCAtMTk0LDIxICsxOTQsOCBAQCBzdGF0aWMgc3Ry\n"
- "dWN0IGkyY19kcml2ZXIgbG03M19kcml2ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9p\n"
- "MmMsCiB9OwogCi0vKiBtb2R1bGUgZ2x1ZSAqLwotCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3Jz\n"
- "X2xtNzNfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmbG03M19kcml2ZXIp\n"
- "OwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vuc29yc19sbTczX2V4aXQodm9pZCkKLXsKLQlp\n"
- "MmNfZGVsX2RyaXZlcigmbG03M19kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobG03M19k\n"
- "cml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJHdWlsbGF1bWUgTGlnbmV1bCA8Z3VpbGxhdW1lLmxp\n"
- "Z25ldWxAZ21haWwuY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJMTTczIGRyaXZlciIpOwog\n"
- "TU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2xtNzNfaW5pdCk7\n"
- "Ci1tb2R1bGVfZXhpdChzZW5zb3JzX2xtNzNfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3\n"
- "bW9uL2xtNzUuYyBiL2RyaXZlcnMvaHdtb24vbG03NS5jCmluZGV4IDE4ODhkZDAuLmYzYWFhMzAg\n"
- "MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbG03NS5jCisrKyBiL2RyaXZlcnMvaHdtb24vbG03\n"
- "NS5jCkBAIC00MjksMjMgKzQyOSw4IEBAIHN0YXRpYyBzdHJ1Y3QgbG03NV9kYXRhICpsbTc1X3Vw\n"
- "ZGF0ZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi0vKi0t\n"
- "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t\n"
- "LS0tLS0tLS0tLS0tKi8KLQotLyogbW9kdWxlIGdsdWUgKi8KLQotc3RhdGljIGludCBfX2luaXQg\n"
- "c2Vuc29yc19sbTc1X2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmxtNzVf\n"
- "ZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfbG03NV9leGl0KHZvaWQp\n"
- "Ci17Ci0JaTJjX2RlbF9kcml2ZXIoJmxtNzVfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVy\n"
- "KGxtNzVfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiRnJvZG8gTG9vaWphYXJkIDxmcm9kb2xA\n"
- "ZGRzLm5sPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJMTTc1IGRyaXZlciIpOwogTU9EVUxFX0xJ\n"
- "Q0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2xtNzVfaW5pdCk7Ci1tb2R1bGVf\n"
- "ZXhpdChzZW5zb3JzX2xtNzVfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2xtNzcu\n"
- "YyBiL2RyaXZlcnMvaHdtb24vbG03Ny5jCmluZGV4IDhkZmM2NzguLjdjZDUxNmYgMTAwNjQ0Ci0t\n"
- "LSBhL2RyaXZlcnMvaHdtb24vbG03Ny5jCisrKyBiL2RyaXZlcnMvaHdtb24vbG03Ny5jCkBAIC00\n"
- "MjAsMTkgKzQyMCw4IEBAIHN0YXRpYyBzdHJ1Y3QgbG03N19kYXRhICpsbTc3X3VwZGF0ZV9kZXZp\n"
- "Y2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi1zdGF0aWMgaW50IF9f\n"
- "aW5pdCBzZW5zb3JzX2xtNzdfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigm\n"
- "bG03N19kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vuc29yc19sbTc3X2V4aXQo\n"
- "dm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbG03N19kcml2ZXIpOwotfQorbW9kdWxlX2kyY19k\n"
- "cml2ZXIobG03N19kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJBbmRyYXMgQkFMSSA8ZHJld2ll\n"
- "QGZyZWVtYWlsLmh1PiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJMTTc3IGRyaXZlciIpOwogTU9E\n"
- "VUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2xtNzdfaW5pdCk7Ci1t\n"
- "b2R1bGVfZXhpdChzZW5zb3JzX2xtNzdfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9u\n"
- "L2xtODAuYyBiL2RyaXZlcnMvaHdtb24vbG04MC5jCmluZGV4IDE4YTBlNmMuLmRjOTgzZWMgMTAw\n"
- "NjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbG04MC5jCisrKyBiL2RyaXZlcnMvaHdtb24vbG04MC5j\n"
- "CkBAIC01OTUsMjAgKzU5NSw5IEBAIHN0YXRpYyBzdHJ1Y3QgbG04MF9kYXRhICpsbTgwX3VwZGF0\n"
- "ZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi1zdGF0aWMg\n"
- "aW50IF9faW5pdCBzZW5zb3JzX2xtODBfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2Ry\n"
- "aXZlcigmbG04MF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vuc29yc19sbTgw\n"
- "X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbG04MF9kcml2ZXIpOwotfQorbW9kdWxl\n"
- "X2kyY19kcml2ZXIobG04MF9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJGcm9kbyBMb29pamFh\n"
- "cmQgPGZyb2RvbEBkZHMubmw+IGFuZCAiCiAJIlBoaWxpcCBFZGVsYnJvY2sgPHBoaWxAbmV0cm9l\n"
- "ZGdlLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTE04MCBkcml2ZXIiKTsKIE1PRFVMRV9M\n"
- "SUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc19sbTgwX2luaXQpOwotbW9kdWxl\n"
- "X2V4aXQoc2Vuc29yc19sbTgwX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9sbTgz\n"
- "LmMgYi9kcml2ZXJzL2h3bW9uL2xtODMuYwppbmRleCA4MjkwNDc2Li5lOWE4YTA2IDEwMDY0NAot\n"
- "LS0gYS9kcml2ZXJzL2h3bW9uL2xtODMuYworKysgYi9kcml2ZXJzL2h3bW9uL2xtODMuYwpAQCAt\n"
- "NDIzLDE5ICs0MjMsOCBAQCBzdGF0aWMgc3RydWN0IGxtODNfZGF0YSAqbG04M191cGRhdGVfZGV2\n"
- "aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBf\n"
- "X2luaXQgc2Vuc29yc19sbTgzX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIo\n"
- "JmxtODNfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfbG04M19leGl0\n"
- "KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmxtODNfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNf\n"
- "ZHJpdmVyKGxtODNfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiSmVhbiBEZWx2YXJlIDxraGFs\n"
- "aUBsaW51eC1mci5vcmc+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkxNODMgZHJpdmVyIik7CiBN\n"
- "T0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfbG04M19pbml0KTsK\n"
- "LW1vZHVsZV9leGl0KHNlbnNvcnNfbG04M19leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdt\n"
- "b24vbG04NS5jIGIvZHJpdmVycy9od21vbi9sbTg1LmMKaW5kZXggZGE3MmRjMS4uZmQyNjk4MyAx\n"
- "MDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTg1LmMKKysrIGIvZHJpdmVycy9od21vbi9sbTg1\n"
- "LmMKQEAgLTE2MTEsMjIgKzE2MTEsMTAgQEAgc3RhdGljIHN0cnVjdCBsbTg1X2RhdGEgKmxtODVf\n"
- "dXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLQot\n"
- "c3RhdGljIGludCBfX2luaXQgc21fbG04NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRf\n"
- "ZHJpdmVyKCZsbTg1X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzbV9sbTg1X2V4\n"
- "aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbG04NV9kcml2ZXIpOwotfQorbW9kdWxlX2ky\n"
- "Y19kcml2ZXIobG04NV9kcml2ZXIpOwogCiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiBNT0RVTEVf\n"
- "QVVUSE9SKCJQaGlsaXAgUG9rb3JueSA8cHBva29ybnlAcGVuZ3VpbmNvbXB1dGluZy5jb20+LCAi\n"
- "CiAJIk1hcmdpdCBTY2h1YmVydC1XaGlsZSA8bWFyZ2l0c3dAdC1vbmxpbmUuZGU+LCAiCiAJIkp1\n"
- "c3RpbiBUaGllc3NlbiA8anRoaWVzc2VuQHBlbmd1aW5jb21wdXRpbmcuY29tPiIpOwogTU9EVUxF\n"
- "X0RFU0NSSVBUSU9OKCJMTTg1LUIsIExNODUtQyBkcml2ZXIiKTsKLQotbW9kdWxlX2luaXQoc21f\n"
- "bG04NV9pbml0KTsKLW1vZHVsZV9leGl0KHNtX2xtODVfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2\n"
- "ZXJzL2h3bW9uL2xtODcuYyBiL2RyaXZlcnMvaHdtb24vbG04Ny5jCmluZGV4IGYxZTZlNzUuLjEy\n"
- "NmQwY2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbG04Ny5jCisrKyBiL2RyaXZlcnMvaHdt\n"
- "b24vbG04Ny5jCkBAIC05NjMsMTkgKzk2Myw4IEBAIHN0YXRpYyBzdHJ1Y3QgbG04N19kYXRhICps\n"
- "bTg3X3VwZGF0ZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQog\n"
- "Ci1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2xtODdfaW5pdCh2b2lkKQotewotCXJldHVybiBp\n"
- "MmNfYWRkX2RyaXZlcigmbG04N19kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vu\n"
- "c29yc19sbTg3X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbG04N19kcml2ZXIpOwot\n"
- "fQorbW9kdWxlX2kyY19kcml2ZXIobG04N19kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJKZWFu\n"
- "IERlbHZhcmUgPGtoYWxpQGxpbnV4LWZyLm9yZz4gYW5kIG90aGVycyIpOwogTU9EVUxFX0RFU0NS\n"
- "SVBUSU9OKCJMTTg3IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVf\n"
- "aW5pdChzZW5zb3JzX2xtODdfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX2xtODdfZXhpdCk7\n"
- "CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2xtOTAuYyBiL2RyaXZlcnMvaHdtb24vbG05MC5j\n"
- "CmluZGV4IDYxNWJjNGYuLmU3MGNiYjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbG05MC5j\n"
- "CisrKyBiL2RyaXZlcnMvaHdtb24vbG05MC5jCkBAIC0xNTE0LDE5ICsxNTE0LDggQEAgc3RhdGlj\n"
- "IHN0cnVjdCBpMmNfZHJpdmVyIGxtOTBfZHJpdmVyID0gewogCS5hZGRyZXNzX2xpc3QJPSBub3Jt\n"
- "YWxfaTJjLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19sbTkwX2luaXQodm9pZCkK\n"
- "LXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmxtOTBfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZv\n"
- "aWQgX19leGl0IHNlbnNvcnNfbG05MF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmxt\n"
- "OTBfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGxtOTBfZHJpdmVyKTsKIAogTU9EVUxF\n"
- "X0FVVEhPUigiSmVhbiBEZWx2YXJlIDxraGFsaUBsaW51eC1mci5vcmc+Iik7CiBNT0RVTEVfREVT\n"
- "Q1JJUFRJT04oIkxNOTAvQURNMTAzMiBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsK\n"
- "LQotbW9kdWxlX2luaXQoc2Vuc29yc19sbTkwX2luaXQpOwotbW9kdWxlX2V4aXQoc2Vuc29yc19s\n"
- "bTkwX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9sbTkyLmMgYi9kcml2ZXJzL2h3\n"
- "bW9uL2xtOTIuYwppbmRleCA4ZmNiZDRkNC4uOTJmMmQ0NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9o\n"
- "d21vbi9sbTkyLmMKKysrIGIvZHJpdmVycy9od21vbi9sbTkyLmMKQEAgLTQxNiwxOSArNDE2LDgg\n"
- "QEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGxtOTJfZHJpdmVyID0gewogCS5hZGRyZXNzX2xp\n"
- "c3QJPSBub3JtYWxfaTJjLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19sbTkyX2lu\n"
- "aXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmxtOTJfZHJpdmVyKTsKLX0KLQot\n"
- "c3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfbG05Ml9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9k\n"
- "cml2ZXIoJmxtOTJfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGxtOTJfZHJpdmVyKTsK\n"
- "IAogTU9EVUxFX0FVVEhPUigiSmVhbiBEZWx2YXJlIDxraGFsaUBsaW51eC1mci5vcmc+Iik7CiBN\n"
- "T0RVTEVfREVTQ1JJUFRJT04oIkxNOTIvTUFYNjYzNSBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNF\n"
- "KCJHUEwiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc19sbTkyX2luaXQpOwotbW9kdWxlX2V4aXQo\n"
- "c2Vuc29yc19sbTkyX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9sbTkzLmMgYi9k\n"
- "cml2ZXJzL2h3bW9uL2xtOTMuYwppbmRleCAzYjQzZGY0Li5jYjFiZjhjIDEwMDY0NAotLS0gYS9k\n"
- "cml2ZXJzL2h3bW9uL2xtOTMuYworKysgYi9kcml2ZXJzL2h3bW9uL2xtOTMuYwpAQCAtMjYzNSwy\n"
- "MCArMjYzNSw5IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsbTkzX2RyaXZlciA9IHsKIAku\n"
- "YWRkcmVzc19saXN0CT0gbm9ybWFsX2kyYywKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IGxtOTNf\n"
- "aW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmbG05M19kcml2ZXIpOwotfQot\n"
- "Ci1zdGF0aWMgdm9pZCBfX2V4aXQgbG05M19leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIo\n"
- "JmxtOTNfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGxtOTNfZHJpdmVyKTsKIAogTU9E\n"
- "VUxFX0FVVEhPUigiTWFyayBNLiBIb2ZmbWFuIDxtaG9mZm1hbkBsaWdodGxpbmsuY29tPiwgIgog\n"
- "CQkiSGFucyBKLiBLb2NoIDxoamtAaGFuc2prb2NoLmRlPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9O\n"
- "KCJMTTkzIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChs\n"
- "bTkzX2luaXQpOwotbW9kdWxlX2V4aXQobG05M19leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv\n"
- "aHdtb24vbG05NTI0MS5jIGIvZHJpdmVycy9od21vbi9sbTk1MjQxLmMKaW5kZXggNTEzOTAxZC4u\n"
- "NjA3NGFmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTk1MjQxLmMKKysrIGIvZHJpdmVy\n"
- "cy9od21vbi9sbTk1MjQxLmMKQEAgLTQ1NSwxOSArNDU1LDggQEAgc3RhdGljIHN0cnVjdCBpMmNf\n"
- "ZHJpdmVyIGxtOTUyNDFfZHJpdmVyID0gewogCS5hZGRyZXNzX2xpc3QJPSBub3JtYWxfaTJjLAog\n"
- "fTsKIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19sbTk1MjQxX2luaXQodm9pZCkKLXsKLQly\n"
- "ZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmxtOTUyNDFfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQg\n"
- "X19leGl0IHNlbnNvcnNfbG05NTI0MV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmxt\n"
- "OTUyNDFfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGxtOTUyNDFfZHJpdmVyKTsKIAog\n"
- "TU9EVUxFX0FVVEhPUigiRGF2aWRlIFJpenpvIDxlbHBhLnJpenpvQGdtYWlsLmNvbT4iKTsKIE1P\n"
- "RFVMRV9ERVNDUklQVElPTigiTE05NTI0MSBzZW5zb3IgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5T\n"
- "RSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfbG05NTI0MV9pbml0KTsKLW1vZHVsZV9l\n"
- "eGl0KHNlbnNvcnNfbG05NTI0MV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG05\n"
- "NTI0NS5jIGIvZHJpdmVycy9od21vbi9sbTk1MjQ1LmMKaW5kZXggZGNlOWU2OC4uODdkZTdkZSAx\n"
- "MDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTk1MjQ1LmMKKysrIGIvZHJpdmVycy9od21vbi9s\n"
- "bTk1MjQ1LmMKQEAgLTUyNSwxOSArNTI1LDggQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGxt\n"
- "OTUyNDVfZHJpdmVyID0gewogCS5hZGRyZXNzX2xpc3QJPSBub3JtYWxfaTJjLAogfTsKIAotc3Rh\n"
- "dGljIGludCBfX2luaXQgc2Vuc29yc19sbTk1MjQ1X2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJj\n"
- "X2FkZF9kcml2ZXIoJmxtOTUyNDVfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNl\n"
- "bnNvcnNfbG05NTI0NV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmxtOTUyNDVfZHJp\n"
- "dmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGxtOTUyNDVfZHJpdmVyKTsKIAogTU9EVUxFX0FV\n"
- "VEhPUigiQWxleGFuZGVyIFN0ZWluIDxhbGV4YW5kZXIuc3RlaW5Ac3lzdGVjLWVsZWN0cm9uaWMu\n"
- "Y29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJMTTk1MjQ1IHNlbnNvciBkcml2ZXIiKTsKIE1P\n"
- "RFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc19sbTk1MjQ1X2luaXQp\n"
- "OwotbW9kdWxlX2V4aXQoc2Vuc29yc19sbTk1MjQ1X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVy\n"
- "cy9od21vbi9sdGM0MTUxLmMgYi9kcml2ZXJzL2h3bW9uL2x0YzQxNTEuYwppbmRleCA0YWMwNmI3\n"
- "Li5mNjQ2YjQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2x0YzQxNTEuYworKysgYi9kcml2\n"
- "ZXJzL2h3bW9uL2x0YzQxNTEuYwpAQCAtMjM4LDE5ICsyMzgsOCBAQCBzdGF0aWMgc3RydWN0IGky\n"
- "Y19kcml2ZXIgbHRjNDE1MV9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlCT0gbHRjNDE1MV9pZCwKIH07\n"
- "CiAKLXN0YXRpYyBpbnQgX19pbml0IGx0YzQxNTFfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNf\n"
- "YWRkX2RyaXZlcigmbHRjNDE1MV9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgbHRj\n"
- "NDE1MV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmx0YzQxNTFfZHJpdmVyKTsKLX0K\n"
- "K21vZHVsZV9pMmNfZHJpdmVyKGx0YzQxNTFfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiUGVy\n"
- "IERhbGVuIDxwZXIuZGFsZW5AYXBwZWFydHYuY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJM\n"
- "VEM0MTUxIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChs\n"
- "dGM0MTUxX2luaXQpOwotbW9kdWxlX2V4aXQobHRjNDE1MV9leGl0KTsKZGlmZiAtLWdpdCBhL2Ry\n"
- "aXZlcnMvaHdtb24vbHRjNDIxNS5jIGIvZHJpdmVycy9od21vbi9sdGM0MjE1LmMKaW5kZXggYzdl\n"
- "NmQ4ZS4uMDc4OWI2MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sdGM0MjE1LmMKKysrIGIv\n"
- "ZHJpdmVycy9od21vbi9sdGM0MjE1LmMKQEAgLTMwOSwxOSArMzA5LDggQEAgc3RhdGljIHN0cnVj\n"
- "dCBpMmNfZHJpdmVyIGx0YzQyMTVfZHJpdmVyID0gewogCS5pZF90YWJsZQk9IGx0YzQyMTVfaWQs\n"
- "CiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBsdGM0MjE1X2luaXQodm9pZCkKLXsKLQlyZXR1cm4g\n"
- "aTJjX2FkZF9kcml2ZXIoJmx0YzQyMTVfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0\n"
- "IGx0YzQyMTVfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZsdGM0MjE1X2RyaXZlcik7\n"
- "Ci19Cittb2R1bGVfaTJjX2RyaXZlcihsdGM0MjE1X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1Io\n"
- "IklyYSBXLiBTbnlkZXIgPGl3c0BvdnJvLmNhbHRlY2guZWR1PiIpOwogTU9EVUxFX0RFU0NSSVBU\n"
- "SU9OKCJMVEM0MjE1IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVf\n"
- "aW5pdChsdGM0MjE1X2luaXQpOwotbW9kdWxlX2V4aXQobHRjNDIxNV9leGl0KTsKZGlmZiAtLWdp\n"
- "dCBhL2RyaXZlcnMvaHdtb24vbHRjNDI0NS5jIGIvZHJpdmVycy9od21vbi9sdGM0MjQ1LmMKaW5k\n"
- "ZXggNjU5MzA4My4uNjkzYTZiZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sdGM0MjQ1LmMK\n"
- "KysrIGIvZHJpdmVycy9od21vbi9sdGM0MjQ1LmMKQEAgLTU3OCwxOSArNTc4LDggQEAgc3RhdGlj\n"
- "IHN0cnVjdCBpMmNfZHJpdmVyIGx0YzQyNDVfZHJpdmVyID0gewogCS5pZF90YWJsZQk9IGx0YzQy\n"
- "NDVfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBsdGM0MjQ1X2luaXQodm9pZCkKLXsKLQly\n"
- "ZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmx0YzQyNDVfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQg\n"
- "X19leGl0IGx0YzQyNDVfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZsdGM0MjQ1X2Ry\n"
- "aXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihsdGM0MjQ1X2RyaXZlcik7CiAKIE1PRFVMRV9B\n"
- "VVRIT1IoIklyYSBXLiBTbnlkZXIgPGl3c0BvdnJvLmNhbHRlY2guZWR1PiIpOwogTU9EVUxFX0RF\n"
- "U0NSSVBUSU9OKCJMVEM0MjQ1IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1t\n"
- "b2R1bGVfaW5pdChsdGM0MjQ1X2luaXQpOwotbW9kdWxlX2V4aXQobHRjNDI0NV9leGl0KTsKZGlm\n"
- "ZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbHRjNDI2MS5jIGIvZHJpdmVycy9od21vbi9sdGM0MjYx\n"
- "LmMKaW5kZXggNGI1MDYwMS4uYzc4ZDMyMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sdGM0\n"
- "MjYxLmMKKysrIGIvZHJpdmVycy9od21vbi9sdGM0MjYxLmMKQEAgLTI5NiwxOSArMjk2LDggQEAg\n"
- "c3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGx0YzQyNjFfZHJpdmVyID0gewogCS5pZF90YWJsZSA9\n"
- "IGx0YzQyNjFfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBsdGM0MjYxX2luaXQodm9pZCkK\n"
- "LXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmx0YzQyNjFfZHJpdmVyKTsKLX0KLQotc3RhdGlj\n"
- "IHZvaWQgX19leGl0IGx0YzQyNjFfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZsdGM0\n"
- "MjYxX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihsdGM0MjYxX2RyaXZlcik7CiAKIE1P\n"
- "RFVMRV9BVVRIT1IoIkd1ZW50ZXIgUm9lY2sgPGd1ZW50ZXIucm9lY2tAZXJpY3Nzb24uY29tPiIp\n"
- "OwogTU9EVUxFX0RFU0NSSVBUSU9OKCJMVEM0MjYxIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0Uo\n"
- "IkdQTCIpOwotCi1tb2R1bGVfaW5pdChsdGM0MjYxX2luaXQpOwotbW9kdWxlX2V4aXQobHRjNDI2\n"
- "MV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbWF4MTYwNjUuYyBiL2RyaXZlcnMv\n"
- "aHdtb24vbWF4MTYwNjUuYwppbmRleCAzODU4ODZhLi5jYTE4ZjUyIDEwMDY0NAotLS0gYS9kcml2\n"
- "ZXJzL2h3bW9uL21heDE2MDY1LmMKKysrIGIvZHJpdmVycy9od21vbi9tYXgxNjA2NS5jCkBAIC02\n"
- "OTksMTkgKzY5OSw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBtYXgxNjA2NV9kcml2ZXIg\n"
- "PSB7CiAJLmlkX3RhYmxlID0gbWF4MTYwNjVfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBt\n"
- "YXgxNjA2NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZtYXgxNjA2NV9k\n"
- "cml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgbWF4MTYwNjVfZXhpdCh2b2lkKQotewot\n"
- "CWkyY19kZWxfZHJpdmVyKCZtYXgxNjA2NV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIo\n"
- "bWF4MTYwNjVfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiR3VlbnRlciBSb2VjayA8Z3VlbnRl\n"
- "ci5yb2Vja0Blcmljc3Nvbi5jb20+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIk1BWDE2MDY1IGRy\n"
- "aXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChtYXgxNjA2NV9p\n"
- "bml0KTsKLW1vZHVsZV9leGl0KG1heDE2MDY1X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9o\n"
- "d21vbi9tYXgxNjE5LmMgYi9kcml2ZXJzL2h3bW9uL21heDE2MTkuYwppbmRleCAwMjJkZWQwLi4x\n"
- "MzU4MjJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL21heDE2MTkuYworKysgYi9kcml2ZXJz\n"
- "L2h3bW9uL21heDE2MTkuYwpAQCAtMzUzLDIwICszNTMsOSBAQCBzdGF0aWMgc3RydWN0IG1heDE2\n"
- "MTlfZGF0YSAqbWF4MTYxOV91cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1\n"
- "cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19tYXgxNjE5X2luaXQodm9p\n"
- "ZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJm1heDE2MTlfZHJpdmVyKTsKLX0KLQotc3Rh\n"
- "dGljIHZvaWQgX19leGl0IHNlbnNvcnNfbWF4MTYxOV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9k\n"
- "cml2ZXIoJm1heDE2MTlfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKG1heDE2MTlfZHJp\n"
- "dmVyKTsKIAogTU9EVUxFX0FVVEhPUigiQWxleGV5IEZpc2hlciA8ZmlzaG9yQG1haWwucnU+IGFu\n"
- "ZCAiCiAJIkplYW4gRGVsdmFyZSA8a2hhbGlAbGludXgtZnIub3JnPiIpOwogTU9EVUxFX0RFU0NS\n"
- "SVBUSU9OKCJNQVgxNjE5IHNlbnNvciBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsK\n"
- "LQotbW9kdWxlX2luaXQoc2Vuc29yc19tYXgxNjE5X2luaXQpOwotbW9kdWxlX2V4aXQoc2Vuc29y\n"
- "c19tYXgxNjE5X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9tYXgxNjY4LmMgYi9k\n"
- "cml2ZXJzL2h3bW9uL21heDE2NjguYwppbmRleCAyMGQxYjJkLi5kNWZiMTE3IDEwMDY0NAotLS0g\n"
- "YS9kcml2ZXJzL2h3bW9uL21heDE2NjguYworKysgYi9kcml2ZXJzL2h3bW9uL21heDE2NjguYwpA\n"
- "QCAtNDg0LDE5ICs0ODQsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbWF4MTY2OF9kcml2\n"
- "ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdCA9IG1heDE2NjhfYWRkcl9saXN0LAogfTsKIAotc3RhdGlj\n"
- "IGludCBfX2luaXQgc2Vuc29yc19tYXgxNjY4X2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2Fk\n"
- "ZF9kcml2ZXIoJm1heDE2NjhfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNv\n"
- "cnNfbWF4MTY2OF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJm1heDE2NjhfZHJpdmVy\n"
- "KTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKG1heDE2NjhfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhP\n"
- "UigiRGF2aWQgR2VvcmdlIDxkYXZpZC5nZW9yZ2VAc2thLmFjLnphPiIpOwogTU9EVUxFX0RFU0NS\n"
- "SVBUSU9OKCJNQVgxNjY4IHJlbW90ZSB0ZW1wZXJhdHVyZSBzZW5zb3IgZHJpdmVyIik7CiBNT0RV\n"
- "TEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfbWF4MTY2OF9pbml0KQot\n"
- "bW9kdWxlX2V4aXQoc2Vuc29yc19tYXgxNjY4X2V4aXQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3\n"
- "bW9uL21heDY2MzkuYyBiL2RyaXZlcnMvaHdtb24vbWF4NjYzOS5jCmluZGV4IGYyMGQ5OTcuLjY0\n"
- "ODY2YTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbWF4NjYzOS5jCisrKyBiL2RyaXZlcnMv\n"
- "aHdtb24vbWF4NjYzOS5jCkBAIC02MzUsMTkgKzYzNSw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2Ry\n"
- "aXZlciBtYXg2NjM5X2RyaXZlciA9IHsKIAkuYWRkcmVzc19saXN0ID0gbm9ybWFsX2kyYywKIH07\n"
- "CiAKLXN0YXRpYyBpbnQgX19pbml0IG1heDY2MzlfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNf\n"
- "YWRkX2RyaXZlcigmbWF4NjYzOV9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgbWF4\n"
- "NjYzOV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJm1heDY2MzlfZHJpdmVyKTsKLX0K\n"
- "K21vZHVsZV9pMmNfZHJpdmVyKG1heDY2MzlfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiUm9s\n"
- "YW5kIFN0aWdnZSA8c3RpZ2dlQGFudGNvbS5kZT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigibWF4\n"
- "NjYzOSBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQobWF4\n"
- "NjYzOV9pbml0KTsKLW1vZHVsZV9leGl0KG1heDY2MzlfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2\n"
- "ZXJzL2h3bW9uL21heDY2NDIuYyBiL2RyaXZlcnMvaHdtb24vbWF4NjY0Mi5jCmluZGV4IGU4NTVk\n"
- "M2IuLjY2ZjBkYmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbWF4NjY0Mi5jCisrKyBiL2Ry\n"
- "aXZlcnMvaHdtb24vbWF4NjY0Mi5jCkBAIC0zNTIsMTkgKzM1Miw4IEBAIHN0YXRpYyBzdHJ1Y3Qg\n"
- "aTJjX2RyaXZlciBtYXg2NjQyX2RyaXZlciA9IHsKIAkuYWRkcmVzc19saXN0CT0gbm9ybWFsX2ky\n"
- "YywKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IG1heDY2NDJfaW5pdCh2b2lkKQotewotCXJldHVy\n"
- "biBpMmNfYWRkX2RyaXZlcigmbWF4NjY0Ml9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4\n"
- "aXQgbWF4NjY0Ml9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJm1heDY2NDJfZHJpdmVy\n"
- "KTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKG1heDY2NDJfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhP\n"
- "UigiUGVyIERhbGVuIDxwZXIuZGFsZW5AYXBwZWFydHYuY29tPiIpOwogTU9EVUxFX0RFU0NSSVBU\n"
- "SU9OKCJNQVg2NjQyIHNlbnNvciBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQot\n"
- "bW9kdWxlX2luaXQobWF4NjY0Ml9pbml0KTsKLW1vZHVsZV9leGl0KG1heDY2NDJfZXhpdCk7CmRp\n"
- "ZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL21heDY2NTAuYyBiL2RyaXZlcnMvaHdtb24vbWF4NjY1\n"
- "MC5jCmluZGV4IGVjZTNhYWYuLjdhMGNkYjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbWF4\n"
- "NjY1MC5jCisrKyBiL2RyaXZlcnMvaHdtb24vbWF4NjY1MC5jCkBAIC03MTMsMTkgKzcxMyw4IEBA\n"
- "IHN0YXRpYyBzdHJ1Y3QgbWF4NjY1MF9kYXRhICptYXg2NjUwX3VwZGF0ZV9kZXZpY2Uoc3RydWN0\n"
- "IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5z\n"
- "b3JzX21heDY2NTBfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmbWF4NjY1\n"
- "MF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vuc29yc19tYXg2NjUwX2V4aXQo\n"
- "dm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbWF4NjY1MF9kcml2ZXIpOwotfQorbW9kdWxlX2ky\n"
- "Y19kcml2ZXIobWF4NjY1MF9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJIYW5zIEouIEtvY2gi\n"
- "KTsKIE1PRFVMRV9ERVNDUklQVElPTigiTUFYNjY1MCBzZW5zb3IgZHJpdmVyIik7CiBNT0RVTEVf\n"
- "TElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfbWF4NjY1MF9pbml0KTsKLW1v\n"
- "ZHVsZV9leGl0KHNlbnNvcnNfbWF4NjY1MF9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdt\n"
- "b24vc2h0MjEuYyBiL2RyaXZlcnMvaHdtb24vc2h0MjEuYwppbmRleCAxNTM5ODc4Li42YzJkZWRl\n"
- "IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3NodDIxLmMKKysrIGIvZHJpdmVycy9od21vbi9z\n"
- "aHQyMS5jCkBAIC0yNjEsMjggKzI2MSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBzaHQy\n"
- "MV9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlICAgID0gc2h0MjFfaWQsCiB9OwogCi0vKioKLSAqIHNo\n"
- "dDIxX2luaXQoKSAtIGluaXRpYWxpemUgZHJpdmVyCi0gKgotICogQ2FsbGVkIHdoZW4ga2VybmVs\n"
- "IGlzIGJvb3RlZCBvciBtb2R1bGUgaXMgaW5zZXJ0ZWQuCi0gKiBSZXR1cm5zIDAgb24gc3VjY2Vz\n"
- "cy4KLSAqLwotc3RhdGljIGludCBfX2luaXQgc2h0MjFfaW5pdCh2b2lkKQotewotCXJldHVybiBp\n"
- "MmNfYWRkX2RyaXZlcigmc2h0MjFfZHJpdmVyKTsKLX0KLW1vZHVsZV9pbml0KHNodDIxX2luaXQp\n"
- "OwotCi0vKioKLSAqIHNodDIxX2luaXQoKSAtIGNsZWFuIHVwIGRyaXZlcgotICoKLSAqIENhbGxl\n"
- "ZCB3aGVuIG1vZHVsZSBpcyByZW1vdmVkLgotICovCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2h0MjFf\n"
- "ZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZzaHQyMV9kcml2ZXIpOwotfQotbW9kdWxl\n"
- "X2V4aXQoc2h0MjFfZXhpdCk7Cittb2R1bGVfaTJjX2RyaXZlcihzaHQyMV9kcml2ZXIpOwogCiBN\n"
- "T0RVTEVfQVVUSE9SKCJVcnMgRmxlaXNjaCA8dXJzLmZsZWlzY2hAc2Vuc2lyaW9uLmNvbT4iKTsK\n"
- "IE1PRFVMRV9ERVNDUklQVElPTigiU2Vuc2lyaW9uIFNIVDIxIGh1bWlkaXR5IGFuZCB0ZW1wZXJh\n"
- "dHVyZSBzZW5zb3IgZHJpdmVyIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3NtbTY2NS5j\n"
- "IGIvZHJpdmVycy9od21vbi9zbW02NjUuYwppbmRleCA0MTE2MzgxLi4wZDM5MmQwIDEwMDY0NAot\n"
- "LS0gYS9kcml2ZXJzL2h3bW9uL3NtbTY2NS5jCisrKyBiL2RyaXZlcnMvaHdtb24vc21tNjY1LmMK\n"
- "QEAgLTcxOCwxOSArNzE4LDggQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHNtbTY2NV9kcml2\n"
- "ZXIgPSB7CiAJLmlkX3RhYmxlID0gc21tNjY1X2lkLAogfTsKIAotc3RhdGljIGludCBfX2luaXQg\n"
- "c21tNjY1X2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJnNtbTY2NV9kcml2\n"
- "ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc21tNjY1X2V4aXQodm9pZCkKLXsKLQlpMmNf\n"
- "ZGVsX2RyaXZlcigmc21tNjY1X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihzbW02NjVf\n"
- "ZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiR3VlbnRlciBSb2VjayIpOwogTU9EVUxFX0RFU0NS\n"
- "SVBUSU9OKCJTTU02NjUgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVs\n"
- "ZV9pbml0KHNtbTY2NV9pbml0KTsKLW1vZHVsZV9leGl0KHNtbTY2NV9leGl0KTsKZGlmZiAtLWdp\n"
- "dCBhL2RyaXZlcnMvaHdtb24vc21zYzQ3bTE5Mi5jIGIvZHJpdmVycy9od21vbi9zbXNjNDdtMTky\n"
- "LmMKaW5kZXggNDBiMjY2Ny4uOGY4ODkwOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9zbXNj\n"
- "NDdtMTkyLmMKKysrIGIvZHJpdmVycy9od21vbi9zbXNjNDdtMTkyLmMKQEAgLTYzNSwxOSArNjM1\n"
- "LDggQEAgc3RhdGljIHN0cnVjdCBzbXNjNDdtMTkyX2RhdGEgKnNtc2M0N20xOTJfdXBkYXRlX2Rl\n"
- "dmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQg\n"
- "X19pbml0IHNtc2M0N20xOTJfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigm\n"
- "c21zYzQ3bTE5Ml9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc21zYzQ3bTE5Ml9l\n"
- "eGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnNtc2M0N20xOTJfZHJpdmVyKTsKLX0KK21v\n"
- "ZHVsZV9pMmNfZHJpdmVyKHNtc2M0N20xOTJfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiSGFy\n"
- "dG11dCBSaWNrIDxsaW51eEByaWNrLmNsYXJhbmV0LmRlPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9O\n"
- "KCJTTVNDNDdNMTkyIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVf\n"
- "aW5pdChzbXNjNDdtMTkyX2luaXQpOwotbW9kdWxlX2V4aXQoc21zYzQ3bTE5Ml9leGl0KTsKZGlm\n"
- "ZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vdGhtYzUwLmMgYi9kcml2ZXJzL2h3bW9uL3RobWM1MC5j\n"
- "CmluZGV4IDdkZmI0ZGUuLmJkODNiYzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vdGhtYzUw\n"
- "LmMKKysrIGIvZHJpdmVycy9od21vbi90aG1jNTAuYwpAQCAtNDY1LDE4ICs0NjUsNyBAQCBzdGF0\n"
- "aWMgc3RydWN0IHRobWM1MF9kYXRhICp0aG1jNTBfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNl\n"
- "ICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNtX3RobWM1MF9p\n"
- "bml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZ0aG1jNTBfZHJpdmVyKTsKLX0K\n"
- "LQotc3RhdGljIHZvaWQgX19leGl0IHNtX3RobWM1MF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9k\n"
- "cml2ZXIoJnRobWM1MF9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIodGhtYzUwX2RyaXZl\n"
- "cik7CiAKIE1PRFVMRV9BVVRIT1IoIktyenlzenRvZiBIZWx0IDxrcnp5c3p0b2YuaDFAd3AucGw+\n"
- "Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlRITUM1MCBkcml2ZXIiKTsKLQotbW9kdWxlX2luaXQo\n"
- "c21fdGhtYzUwX2luaXQpOwotbW9kdWxlX2V4aXQoc21fdGhtYzUwX2V4aXQpOwpkaWZmIC0tZ2l0\n"
- "IGEvZHJpdmVycy9od21vbi90bXAxMDIuYyBiL2RyaXZlcnMvaHdtb24vdG1wMTAyLmMKaW5kZXgg\n"
- "NjQzYWE4Yy4uNDBiNzQyYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi90bXAxMDIuYworKysg\n"
- "Yi9kcml2ZXJzL2h3bW9uL3RtcDEwMi5jCkBAIC0yOTIsMTcgKzI5Miw3IEBAIHN0YXRpYyBzdHJ1\n"
- "Y3QgaTJjX2RyaXZlciB0bXAxMDJfZHJpdmVyID0gewogCS5pZF90YWJsZQk9IHRtcDEwMl9pZCwK\n"
- "IH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHRtcDEwMl9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGky\n"
- "Y19hZGRfZHJpdmVyKCZ0bXAxMDJfZHJpdmVyKTsKLX0KLW1vZHVsZV9pbml0KHRtcDEwMl9pbml0\n"
- "KTsKLQotc3RhdGljIHZvaWQgX19leGl0IHRtcDEwMl9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9k\n"
- "cml2ZXIoJnRtcDEwMl9kcml2ZXIpOwotfQotbW9kdWxlX2V4aXQodG1wMTAyX2V4aXQpOworbW9k\n"
- "dWxlX2kyY19kcml2ZXIodG1wMTAyX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlN0ZXZlbiBL\n"
- "aW5nIDxzZmtpbmdAZmR3ZGMuY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJUZXhhcyBJbnN0\n"
- "cnVtZW50cyBUTVAxMDIgdGVtcGVyYXR1cmUgc2Vuc29yIGRyaXZlciIpOwpkaWZmIC0tZ2l0IGEv\n"
- "ZHJpdmVycy9od21vbi90bXA0MDEuYyBiL2RyaXZlcnMvaHdtb24vdG1wNDAxLmMKaW5kZXggYWQ4\n"
- "ZDUzNS4uYTMyZDRkYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi90bXA0MDEuYworKysgYi9k\n"
- "cml2ZXJzL2h3bW9uL3RtcDQwMS5jCkBAIC02NjIsMTkgKzY2Miw4IEBAIHN0YXRpYyBzdHJ1Y3Qg\n"
- "aTJjX2RyaXZlciB0bXA0MDFfZHJpdmVyID0gewogCS5hZGRyZXNzX2xpc3QJPSBub3JtYWxfaTJj\n"
- "LAogfTsKIAotc3RhdGljIGludCBfX2luaXQgdG1wNDAxX2luaXQodm9pZCkKLXsKLQlyZXR1cm4g\n"
- "aTJjX2FkZF9kcml2ZXIoJnRtcDQwMV9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQg\n"
- "dG1wNDAxX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmdG1wNDAxX2RyaXZlcik7Ci19\n"
- "Cittb2R1bGVfaTJjX2RyaXZlcih0bXA0MDFfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiSGFu\n"
- "cyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigi\n"
- "VGV4YXMgSW5zdHJ1bWVudHMgVE1QNDAxIHRlbXBlcmF0dXJlIHNlbnNvciBkcml2ZXIiKTsKIE1P\n"
- "RFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQodG1wNDAxX2luaXQpOwotbW9kdWxl\n"
- "X2V4aXQodG1wNDAxX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi90bXA0MjEuYyBi\n"
- "L2RyaXZlcnMvaHdtb24vdG1wNDIxLmMKaW5kZXggMDUxN2E4Zi4uYWE1NTYyZCAxMDA2NDQKLS0t\n"
- "IGEvZHJpdmVycy9od21vbi90bXA0MjEuYworKysgYi9kcml2ZXJzL2h3bW9uL3RtcDQyMS5jCkBA\n"
- "IC0zMjQsMjAgKzMyNCw5IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciB0bXA0MjFfZHJpdmVy\n"
- "ID0gewogCS5hZGRyZXNzX2xpc3QgPSBub3JtYWxfaTJjLAogfTsKIAotc3RhdGljIGludCBfX2lu\n"
- "aXQgdG1wNDIxX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJnRtcDQyMV9k\n"
- "cml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgdG1wNDIxX2V4aXQodm9pZCkKLXsKLQlp\n"
- "MmNfZGVsX2RyaXZlcigmdG1wNDIxX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcih0bXA0\n"
- "MjFfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiQW5kcmUgUHJlbmRlbCA8YW5kcmUucHJlbmRl\n"
- "bEBnbXguZGU+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlRleGFzIEluc3RydW1lbnRzIFRNUDQy\n"
- "MS80MjIvNDIzIHRlbXBlcmF0dXJlIHNlbnNvciIKIAkJICAgIiBkcml2ZXIiKTsKIE1PRFVMRV9M\n"
- "SUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQodG1wNDIxX2luaXQpOwotbW9kdWxlX2V4aXQo\n"
- "dG1wNDIxX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi93ODM3OTFkLmMgYi9kcml2\n"
- "ZXJzL2h3bW9uL3c4Mzc5MWQuYwppbmRleCA4YzI4NDRlLi4xNzI5ZjE0IDEwMDY0NAotLS0gYS9k\n"
- "cml2ZXJzL2h3bW9uL3c4Mzc5MWQuYworKysgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5MWQuYwpAQCAt\n"
- "MTYyNSwxOSArMTYyNSw4IEBAIHN0YXRpYyB2b2lkIHc4Mzc5MWRfcHJpbnRfZGVidWcoc3RydWN0\n"
- "IHc4Mzc5MWRfZGF0YSAqZGF0YSwgc3RydWN0IGRldmljZSAqZGV2KQogfQogI2VuZGlmCiAKLXN0\n"
- "YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfdzgzNzkxZF9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGky\n"
- "Y19hZGRfZHJpdmVyKCZ3ODM3OTFkX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBz\n"
- "ZW5zb3JzX3c4Mzc5MWRfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZ3ODM3OTFkX2Ry\n"
- "aXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcih3ODM3OTFkX2RyaXZlcik7CiAKIE1PRFVMRV9B\n"
- "VVRIT1IoIkNoYXJsZXMgU3BpcmFraXMgPGJlemF1ckBnbWFpbC5jb20+Iik7CiBNT0RVTEVfREVT\n"
- "Q1JJUFRJT04oIlc4Mzc5MUQgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1v\n"
- "ZHVsZV9pbml0KHNlbnNvcnNfdzgzNzkxZF9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfdzgz\n"
- "NzkxZF9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vdzgzNzkyZC5jIGIvZHJpdmVy\n"
- "cy9od21vbi93ODM3OTJkLmMKaW5kZXggZjNlNzEzMC4uNDMyNDZlOCAxMDA2NDQKLS0tIGEvZHJp\n"
- "dmVycy9od21vbi93ODM3OTJkLmMKKysrIGIvZHJpdmVycy9od21vbi93ODM3OTJkLmMKQEAgLTE2\n"
- "NDEsMjIgKzE2NDEsOCBAQCBzdGF0aWMgdm9pZCB3ODM3OTJkX3ByaW50X2RlYnVnKHN0cnVjdCB3\n"
- "ODM3OTJkX2RhdGEgKmRhdGEsIHN0cnVjdCBkZXZpY2UgKmRldikKIH0KICNlbmRpZgogCi1zdGF0\n"
- "aWMgaW50IF9faW5pdAotc2Vuc29yc193ODM3OTJkX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJj\n"
- "X2FkZF9kcml2ZXIoJnc4Mzc5MmRfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0Ci1z\n"
- "ZW5zb3JzX3c4Mzc5MmRfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZ3ODM3OTJkX2Ry\n"
- "aXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcih3ODM3OTJkX2RyaXZlcik7CiAKIE1PRFVMRV9B\n"
- "VVRIT1IoIkNodW5oYW8gSHVhbmcgQCBXaW5ib25kIDxEWlNoZW5AV2luYm9uZC5jb20udHc+Iik7\n"
- "CiBNT0RVTEVfREVTQ1JJUFRJT04oIlc4Mzc5MkFEL0QgZHJpdmVyIGZvciBsaW51eC0yLjYiKTsK\n"
- "IE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc193ODM3OTJkX2lu\n"
- "aXQpOwotbW9kdWxlX2V4aXQoc2Vuc29yc193ODM3OTJkX2V4aXQpOwotCmRpZmYgLS1naXQgYS9k\n"
- "cml2ZXJzL2h3bW9uL3c4Mzc5My5jIGIvZHJpdmVycy9od21vbi93ODM3OTMuYwppbmRleCA4NTRm\n"
- "OTExLi43N2RkNDY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3c4Mzc5My5jCisrKyBiL2Ry\n"
- "aXZlcnMvaHdtb24vdzgzNzkzLmMKQEAgLTIxMjAsMTkgKzIxMjAsOCBAQCBFTkQ6CiAJcmV0dXJu\n"
- "IHJlczsKIH0KIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc193ODM3OTNfaW5pdCh2b2lkKQot\n"
- "ewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmdzgzNzkzX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2\n"
- "b2lkIF9fZXhpdCBzZW5zb3JzX3c4Mzc5M19leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIo\n"
- "Jnc4Mzc5M19kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIodzgzNzkzX2RyaXZlcik7CiAK\n"
- "IE1PRFVMRV9BVVRIT1IoIll1YW4gTXUsIFN2ZW4gQW5kZXJzIik7CiBNT0RVTEVfREVTQ1JJUFRJ\n"
- "T04oInc4Mzc5MyBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2lu\n"
- "aXQoc2Vuc29yc193ODM3OTNfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX3c4Mzc5M19leGl0\n"
- "KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vdzgzNzk1LmMgYi9kcml2ZXJzL2h3bW9uL3c4\n"
- "Mzc5NS5jCmluZGV4IDg0NTIzMmQuLjI1ZDc0MWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24v\n"
- "dzgzNzk1LmMKKysrIGIvZHJpdmVycy9od21vbi93ODM3OTUuYwpAQCAtMjI0NCwxOSArMjI0NCw4\n"
- "IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciB3ODM3OTVfZHJpdmVyID0gewogCS5hZGRyZXNz\n"
- "X2xpc3QJPSBub3JtYWxfaTJjLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc193ODM3\n"
- "OTVfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmdzgzNzk1X2RyaXZlcik7\n"
- "Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX3c4Mzc5NV9leGl0KHZvaWQpCi17Ci0J\n"
- "aTJjX2RlbF9kcml2ZXIoJnc4Mzc5NV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIodzgz\n"
- "Nzk1X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIldlaSBTb25nLCBKZWFuIERlbHZhcmUgPGto\n"
- "YWxpQGxpbnV4LWZyLm9yZz4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiVzgzNzk1Ry9BREcgaGFy\n"
- "ZHdhcmUgbW9uaXRvcmluZyBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9k\n"
- "dWxlX2luaXQoc2Vuc29yc193ODM3OTVfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX3c4Mzc5\n"
- "NV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vdzgzbDc4NXRzLmMgYi9kcml2ZXJz\n"
- "L2h3bW9uL3c4M2w3ODV0cy5jCmluZGV4IDIwNzgxZGUuLjU3ZjYzOWUgMTAwNjQ0Ci0tLSBhL2Ry\n"
- "aXZlcnMvaHdtb24vdzgzbDc4NXRzLmMKKysrIGIvZHJpdmVycy9od21vbi93ODNsNzg1dHMuYwpA\n"
- "QCAtMzAyLDE5ICszMDIsOCBAQCBzdGF0aWMgc3RydWN0IHc4M2w3ODV0c19kYXRhICp3ODNsNzg1\n"
- "dHNfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAK\n"
- "LXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfdzgzbDc4NXRzX2luaXQodm9pZCkKLXsKLQlyZXR1\n"
- "cm4gaTJjX2FkZF9kcml2ZXIoJnc4M2w3ODV0c19kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBf\n"
- "X2V4aXQgc2Vuc29yc193ODNsNzg1dHNfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZ3\n"
- "ODNsNzg1dHNfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKHc4M2w3ODV0c19kcml2ZXIp\n"
- "OwogCiBNT0RVTEVfQVVUSE9SKCJKZWFuIERlbHZhcmUgPGtoYWxpQGxpbnV4LWZyLm9yZz4iKTsK\n"
- "IE1PRFVMRV9ERVNDUklQVElPTigiVzgzTDc4NVRTLVMgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5T\n"
- "RSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfdzgzbDc4NXRzX2luaXQpOwotbW9kdWxl\n"
- "X2V4aXQoc2Vuc29yc193ODNsNzg1dHNfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9u\n"
- "L3c4M2w3ODZuZy5jIGIvZHJpdmVycy9od21vbi93ODNsNzg2bmcuYwppbmRleCAwMjU0ZTE4Li44\n"
- "YjEyMGViIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3c4M2w3ODZuZy5jCisrKyBiL2RyaXZl\n"
- "cnMvaHdtb24vdzgzbDc4Nm5nLmMKQEAgLTc2OSwyMSArNzY5LDggQEAgc3RhdGljIHN0cnVjdCB3\n"
- "ODNsNzg2bmdfZGF0YSAqdzgzbDc4Nm5nX3VwZGF0ZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2\n"
- "KQogCXJldHVybiBkYXRhOwogfQogCi1zdGF0aWMgaW50IF9faW5pdAotc2Vuc29yc193ODNsNzg2\n"
- "bmdfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmdzgzbDc4Nm5nX2RyaXZl\n"
- "cik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdAotc2Vuc29yc193ODNsNzg2bmdfZXhpdCh2b2lk\n"
- "KQotewotCWkyY19kZWxfZHJpdmVyKCZ3ODNsNzg2bmdfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNf\n"
- "ZHJpdmVyKHc4M2w3ODZuZ19kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJLZXZpbiBMbyIpOwog\n"
- "TU9EVUxFX0RFU0NSSVBUSU9OKCJ3ODNsNzg2bmcgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgi\n"
- "R1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfdzgzbDc4Nm5nX2luaXQpOwotbW9kdWxlX2V4\n"
- "aXQoc2Vuc29yc193ODNsNzg2bmdfZXhpdCk7Ci0tIAoxLjcuNS40CgoKCgpfX19fX19fX19fX19f\n"
- "X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsbS1zZW5zb3JzIG1haWxpbmcgbGlz\n"
- "dApsbS1zZW5zb3JzQGxtLXNlbnNvcnMub3JnCmh0dHA6Ly9saXN0cy5sbS1zZW5zb3JzLm9yZy9t\n"
- YWlsbWFuL2xpc3RpbmZvL2xtLXNlbnNvcnM
+ "This patch converts the drivers in drivers/hwmon/* to use the\n"
+ "module_i2c_driver() macro which makes the code smaller and a bit\n"
+ "simpler.\n"
+ "\n"
+ "Cc: Corentin Labbe <corentin.labbe@geomatys.fr>\n"
+ "Cc: Dirk Eibach <eibach@gdsys.de>\n"
+ "Cc: \"Mark M. Hoffman\" <mhoffman@lightlink.com>\n"
+ "Cc: Steve Glendinning <steve.glendinning@smsc.com>\n"
+ "Cc: Riku Voipio <riku.voipio@iki.fi>\n"
+ "Cc: Guillaume Ligneul <guillaume.ligneul@gmail.com>\n"
+ "Cc: David George <david.george@ska.ac.za>\n"
+ "Cc: \"Hans J. Koch\" <hjk@hansjkoch.de>\n"
+ "Cc: Marc Hulsman <m.hulsman@tudelft.nl>\n"
+ "Cc: Rudolf Marek <r.marek@assembler.cz>\n"
+ "Signed-off-by: Axel Lin <axel.lin@gmail.com>\n"
+ "---\n"
+ " drivers/hwmon/ad7414.c      |   12 +-----------\n"
+ " drivers/hwmon/ad7418.c      |   13 +------------\n"
+ " drivers/hwmon/adm1021.c     |   13 +------------\n"
+ " drivers/hwmon/adm1025.c     |   13 +------------\n"
+ " drivers/hwmon/adm1026.c     |   13 +------------\n"
+ " drivers/hwmon/adm1029.c     |   18 +-----------------\n"
+ " drivers/hwmon/adm1031.c     |   13 +------------\n"
+ " drivers/hwmon/adm9240.c     |   14 +-------------\n"
+ " drivers/hwmon/ads1015.c     |   13 +------------\n"
+ " drivers/hwmon/adt7411.c     |   12 +-----------\n"
+ " drivers/hwmon/adt7462.c     |   13 +------------\n"
+ " drivers/hwmon/adt7470.c     |   13 +------------\n"
+ " drivers/hwmon/adt7475.c     |   13 +------------\n"
+ " drivers/hwmon/amc6821.c     |   15 +--------------\n"
+ " drivers/hwmon/asb100.c      |   13 +------------\n"
+ " drivers/hwmon/atxp1.c       |   13 +------------\n"
+ " drivers/hwmon/ds1621.c      |   14 +-------------\n"
+ " drivers/hwmon/ds620.c       |   13 +------------\n"
+ " drivers/hwmon/emc1403.c     |   13 +------------\n"
+ " drivers/hwmon/emc2103.c     |   13 +------------\n"
+ " drivers/hwmon/emc6w201.c    |   12 +-----------\n"
+ " drivers/hwmon/f75375s.c     |   13 +------------\n"
+ " drivers/hwmon/fschmd.c      |   13 +------------\n"
+ " drivers/hwmon/g760a.c       |   15 +--------------\n"
+ " drivers/hwmon/gl518sm.c     |   13 +------------\n"
+ " drivers/hwmon/gl520sm.c     |   15 +--------------\n"
+ " drivers/hwmon/jc42.c        |   13 +------------\n"
+ " drivers/hwmon/lineage-pem.c |   13 +------------\n"
+ " drivers/hwmon/lm63.c        |   13 +------------\n"
+ " drivers/hwmon/lm73.c        |   15 +--------------\n"
+ " drivers/hwmon/lm75.c        |   17 +----------------\n"
+ " drivers/hwmon/lm77.c        |   13 +------------\n"
+ " drivers/hwmon/lm80.c        |   13 +------------\n"
+ " drivers/hwmon/lm83.c        |   13 +------------\n"
+ " drivers/hwmon/lm85.c        |   14 +-------------\n"
+ " drivers/hwmon/lm87.c        |   13 +------------\n"
+ " drivers/hwmon/lm90.c        |   13 +------------\n"
+ " drivers/hwmon/lm92.c        |   13 +------------\n"
+ " drivers/hwmon/lm93.c        |   13 +------------\n"
+ " drivers/hwmon/lm95241.c     |   13 +------------\n"
+ " drivers/hwmon/lm95245.c     |   13 +------------\n"
+ " drivers/hwmon/ltc4151.c     |   13 +------------\n"
+ " drivers/hwmon/ltc4215.c     |   13 +------------\n"
+ " drivers/hwmon/ltc4245.c     |   13 +------------\n"
+ " drivers/hwmon/ltc4261.c     |   13 +------------\n"
+ " drivers/hwmon/max16065.c    |   13 +------------\n"
+ " drivers/hwmon/max1619.c     |   13 +------------\n"
+ " drivers/hwmon/max1668.c     |   13 +------------\n"
+ " drivers/hwmon/max6639.c     |   13 +------------\n"
+ " drivers/hwmon/max6642.c     |   13 +------------\n"
+ " drivers/hwmon/max6650.c     |   13 +------------\n"
+ " drivers/hwmon/sht21.c       |   23 +----------------------\n"
+ " drivers/hwmon/smm665.c      |   13 +------------\n"
+ " drivers/hwmon/smsc47m192.c  |   13 +------------\n"
+ " drivers/hwmon/thmc50.c      |   13 +------------\n"
+ " drivers/hwmon/tmp102.c      |   12 +-----------\n"
+ " drivers/hwmon/tmp401.c      |   13 +------------\n"
+ " drivers/hwmon/tmp421.c      |   13 +------------\n"
+ " drivers/hwmon/w83791d.c     |   13 +------------\n"
+ " drivers/hwmon/w83792d.c     |   16 +---------------\n"
+ " drivers/hwmon/w83793.c      |   13 +------------\n"
+ " drivers/hwmon/w83795.c      |   13 +------------\n"
+ " drivers/hwmon/w83l785ts.c   |   13 +------------\n"
+ " drivers/hwmon/w83l786ng.c   |   15 +--------------\n"
+ " 64 files changed, 64 insertions(+), 799 deletions(-)\n"
+ "\n"
+ "diff --git a/drivers/hwmon/ad7414.c b/drivers/hwmon/ad7414.c\n"
+ "index df29a7f..22c2420 100644\n"
+ "--- a/drivers/hwmon/ad7414.c\n"
+ "+++ b/drivers/hwmon/ad7414.c\n"
+ "@@ -252,17 +252,7 @@ static struct i2c_driver ad7414_driver = {\n"
+ " \t.id_table = ad7414_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init ad7414_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&ad7414_driver);\n"
+ "-}\n"
+ "-module_init(ad7414_init);\n"
+ "-\n"
+ "-static void __exit ad7414_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&ad7414_driver);\n"
+ "-}\n"
+ "-module_exit(ad7414_exit);\n"
+ "+module_i2c_driver(ad7414_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Stefan Roese <sr at denx.de>, \"\n"
+ " \t      \"Frank Edelhaeuser <frank.edelhaeuser at spansion.com>\");\n"
+ "diff --git a/drivers/hwmon/ad7418.c b/drivers/hwmon/ad7418.c\n"
+ "index 8cb718c..367244b 100644\n"
+ "--- a/drivers/hwmon/ad7418.c\n"
+ "+++ b/drivers/hwmon/ad7418.c\n"
+ "@@ -289,20 +289,9 @@ static int ad7418_remove(struct i2c_client *client)\n"
+ " \treturn 0;\n"
+ " }\n"
+ " \n"
+ "-static int __init ad7418_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&ad7418_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit ad7418_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&ad7418_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(ad7418_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Alessandro Zummo <a.zummo@towertech.it>\");\n"
+ " MODULE_DESCRIPTION(\"AD7416/17/18 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ " MODULE_VERSION(DRV_VERSION);\n"
+ "-\n"
+ "-module_init(ad7418_init);\n"
+ "-module_exit(ad7418_exit);\n"
+ "diff --git a/drivers/hwmon/adm1021.c b/drivers/hwmon/adm1021.c\n"
+ "index 1ad0a88..5498aee 100644\n"
+ "--- a/drivers/hwmon/adm1021.c\n"
+ "+++ b/drivers/hwmon/adm1021.c\n"
+ "@@ -451,15 +451,7 @@ static struct adm1021_data *adm1021_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_adm1021_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&adm1021_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_adm1021_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&adm1021_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(adm1021_driver);\n"
+ " \n"
+ " MODULE_AUTHOR (\"Frodo Looijaard <frodol@dds.nl> and \"\n"
+ " \t\t\"Philip Edelbrock <phil@netroedge.com>\");\n"
+ "@@ -468,6 +460,3 @@ MODULE_LICENSE(\"GPL\");\n"
+ " \n"
+ " module_param(read_only, bool, 0);\n"
+ " MODULE_PARM_DESC(read_only, \"Don't set any values, read only mode\");\n"
+ "-\n"
+ "-module_init(sensors_adm1021_init)\n"
+ "-module_exit(sensors_adm1021_exit)\n"
+ "diff --git a/drivers/hwmon/adm1025.c b/drivers/hwmon/adm1025.c\n"
+ "index 60befc0..f02c38b 100644\n"
+ "--- a/drivers/hwmon/adm1025.c\n"
+ "+++ b/drivers/hwmon/adm1025.c\n"
+ "@@ -589,19 +589,8 @@ static struct adm1025_data *adm1025_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_adm1025_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&adm1025_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_adm1025_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&adm1025_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(adm1025_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Jean Delvare <khali@linux-fr.org>\");\n"
+ " MODULE_DESCRIPTION(\"ADM1025 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_adm1025_init);\n"
+ "-module_exit(sensors_adm1025_exit);\n"
+ "diff --git a/drivers/hwmon/adm1026.c b/drivers/hwmon/adm1026.c\n"
+ "index 0531867..be17083 100644\n"
+ "--- a/drivers/hwmon/adm1026.c\n"
+ "+++ b/drivers/hwmon/adm1026.c\n"
+ "@@ -1761,20 +1761,9 @@ static int adm1026_remove(struct i2c_client *client)\n"
+ " \treturn 0;\n"
+ " }\n"
+ " \n"
+ "-static int __init sm_adm1026_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&adm1026_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sm_adm1026_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&adm1026_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(adm1026_driver);\n"
+ " \n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ " MODULE_AUTHOR(\"Philip Pokorny <ppokorny@penguincomputing.com>, \"\n"
+ " \t      \"Justin Thiessen <jthiessen@penguincomputing.com>\");\n"
+ " MODULE_DESCRIPTION(\"ADM1026 driver\");\n"
+ "-\n"
+ "-module_init(sm_adm1026_init);\n"
+ "-module_exit(sm_adm1026_exit);\n"
+ "diff --git a/drivers/hwmon/adm1029.c b/drivers/hwmon/adm1029.c\n"
+ "index 0b8a3b1..8e5adb2 100644\n"
+ "--- a/drivers/hwmon/adm1029.c\n"
+ "+++ b/drivers/hwmon/adm1029.c\n"
+ "@@ -446,24 +446,8 @@ static struct adm1029_data *adm1029_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-/*\n"
+ "-\tCommon module stuff\n"
+ "-*/\n"
+ "-static int __init sensors_adm1029_init(void)\n"
+ "-{\n"
+ "-\n"
+ "-\treturn i2c_add_driver(&adm1029_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_adm1029_exit(void)\n"
+ "-{\n"
+ "-\n"
+ "-\ti2c_del_driver(&adm1029_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(adm1029_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Corentin LABBE <corentin.labbe@geomatys.fr>\");\n"
+ " MODULE_DESCRIPTION(\"adm1029 driver\");\n"
+ " MODULE_LICENSE(\"GPL v2\");\n"
+ "-\n"
+ "-module_init(sensors_adm1029_init);\n"
+ "-module_exit(sensors_adm1029_exit);\n"
+ "diff --git a/drivers/hwmon/adm1031.c b/drivers/hwmon/adm1031.c\n"
+ "index 0683e6b..71be42c 100644\n"
+ "--- a/drivers/hwmon/adm1031.c\n"
+ "+++ b/drivers/hwmon/adm1031.c\n"
+ "@@ -1078,19 +1078,8 @@ static struct adm1031_data *adm1031_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_adm1031_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&adm1031_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_adm1031_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&adm1031_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(adm1031_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Alexandre d'Alton <alex@alexdalton.org>\");\n"
+ " MODULE_DESCRIPTION(\"ADM1031/ADM1030 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_adm1031_init);\n"
+ "-module_exit(sensors_adm1031_exit);\n"
+ "diff --git a/drivers/hwmon/adm9240.c b/drivers/hwmon/adm9240.c\n"
+ "index 9e234b9..5e307ba 100644\n"
+ "--- a/drivers/hwmon/adm9240.c\n"
+ "+++ b/drivers/hwmon/adm9240.c\n"
+ "@@ -795,21 +795,9 @@ static struct adm9240_data *adm9240_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_adm9240_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&adm9240_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_adm9240_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&adm9240_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(adm9240_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Michiel Rook <michiel@grendelproject.nl>, \"\n"
+ " \t\t\"Grant Coady <gcoady.lk@gmail.com> and others\");\n"
+ " MODULE_DESCRIPTION(\"ADM9240/DS1780/LM81 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_adm9240_init);\n"
+ "-module_exit(sensors_adm9240_exit);\n"
+ "-\n"
+ "diff --git a/drivers/hwmon/ads1015.c b/drivers/hwmon/ads1015.c\n"
+ "index eedca3c..60be358 100644\n"
+ "--- a/drivers/hwmon/ads1015.c\n"
+ "+++ b/drivers/hwmon/ads1015.c\n"
+ "@@ -306,19 +306,8 @@ static struct i2c_driver ads1015_driver = {\n"
+ " \t.id_table = ads1015_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init sensors_ads1015_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&ads1015_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_ads1015_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&ads1015_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(ads1015_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Dirk Eibach <eibach@gdsys.de>\");\n"
+ " MODULE_DESCRIPTION(\"ADS1015 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_ads1015_init);\n"
+ "-module_exit(sensors_ads1015_exit);\n"
+ "diff --git a/drivers/hwmon/adt7411.c b/drivers/hwmon/adt7411.c\n"
+ "index 5cc3e37..e4d86ca 100644\n"
+ "--- a/drivers/hwmon/adt7411.c\n"
+ "+++ b/drivers/hwmon/adt7411.c\n"
+ "@@ -348,17 +348,7 @@ static struct i2c_driver adt7411_driver = {\n"
+ " \t.class = I2C_CLASS_HWMON,\n"
+ " };\n"
+ " \n"
+ "-static int __init sensors_adt7411_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&adt7411_driver);\n"
+ "-}\n"
+ "-module_init(sensors_adt7411_init)\n"
+ "-\n"
+ "-static void __exit sensors_adt7411_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&adt7411_driver);\n"
+ "-}\n"
+ "-module_exit(sensors_adt7411_exit)\n"
+ "+module_i2c_driver(adt7411_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Sascha Hauer <s.hauer@pengutronix.de> and \"\n"
+ " \t\"Wolfram Sang <w.sang@pengutronix.de>\");\n"
+ "diff --git a/drivers/hwmon/adt7462.c b/drivers/hwmon/adt7462.c\n"
+ "index 2af0c7b..1beb8a9 100644\n"
+ "--- a/drivers/hwmon/adt7462.c\n"
+ "+++ b/drivers/hwmon/adt7462.c\n"
+ "@@ -1975,19 +1975,8 @@ static int adt7462_remove(struct i2c_client *client)\n"
+ " \treturn 0;\n"
+ " }\n"
+ " \n"
+ "-static int __init adt7462_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&adt7462_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit adt7462_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&adt7462_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(adt7462_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Darrick J. Wong <djwong@us.ibm.com>\");\n"
+ " MODULE_DESCRIPTION(\"ADT7462 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(adt7462_init);\n"
+ "-module_exit(adt7462_exit);\n"
+ "diff --git a/drivers/hwmon/adt7470.c b/drivers/hwmon/adt7470.c\n"
+ "index c6d1ce0..ddca215 100644\n"
+ "--- a/drivers/hwmon/adt7470.c\n"
+ "+++ b/drivers/hwmon/adt7470.c\n"
+ "@@ -1317,19 +1317,8 @@ static int adt7470_remove(struct i2c_client *client)\n"
+ " \treturn 0;\n"
+ " }\n"
+ " \n"
+ "-static int __init adt7470_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&adt7470_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit adt7470_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&adt7470_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(adt7470_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Darrick J. Wong <djwong@us.ibm.com>\");\n"
+ " MODULE_DESCRIPTION(\"ADT7470 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(adt7470_init);\n"
+ "-module_exit(adt7470_exit);\n"
+ "diff --git a/drivers/hwmon/adt7475.c b/drivers/hwmon/adt7475.c\n"
+ "index b5fcd87..c753548 100644\n"
+ "--- a/drivers/hwmon/adt7475.c\n"
+ "+++ b/drivers/hwmon/adt7475.c\n"
+ "@@ -1600,19 +1600,8 @@ static struct adt7475_data *adt7475_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_adt7475_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&adt7475_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_adt7475_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&adt7475_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(adt7475_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Advanced Micro Devices, Inc\");\n"
+ " MODULE_DESCRIPTION(\"adt7475 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_adt7475_init);\n"
+ "-module_exit(sensors_adt7475_exit);\n"
+ "diff --git a/drivers/hwmon/amc6821.c b/drivers/hwmon/amc6821.c\n"
+ "index 4033974..da6ca4f 100644\n"
+ "--- a/drivers/hwmon/amc6821.c\n"
+ "+++ b/drivers/hwmon/amc6821.c\n"
+ "@@ -1095,20 +1095,7 @@ static struct amc6821_data *amc6821_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-\n"
+ "-static int __init amc6821_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&amc6821_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit amc6821_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&amc6821_driver);\n"
+ "-}\n"
+ "-\n"
+ "-module_init(amc6821_init);\n"
+ "-module_exit(amc6821_exit);\n"
+ "-\n"
+ "+module_i2c_driver(amc6821_driver);\n"
+ " \n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ " MODULE_AUTHOR(\"T. Mertelj <tomaz.mertelj@guest.arnes.si>\");\n"
+ "diff --git a/drivers/hwmon/asb100.c b/drivers/hwmon/asb100.c\n"
+ "index d7bd1f3..0f300c6 100644\n"
+ "--- a/drivers/hwmon/asb100.c\n"
+ "+++ b/drivers/hwmon/asb100.c\n"
+ "@@ -971,19 +971,8 @@ static struct asb100_data *asb100_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init asb100_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&asb100_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit asb100_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&asb100_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(asb100_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Mark M. Hoffman <mhoffman@lightlink.com>\");\n"
+ " MODULE_DESCRIPTION(\"ASB100 Bach driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(asb100_init);\n"
+ "-module_exit(asb100_exit);\n"
+ "diff --git a/drivers/hwmon/atxp1.c b/drivers/hwmon/atxp1.c\n"
+ "index 33cc143..701bc9d 100644\n"
+ "--- a/drivers/hwmon/atxp1.c\n"
+ "+++ b/drivers/hwmon/atxp1.c\n"
+ "@@ -367,15 +367,4 @@ static int atxp1_remove(struct i2c_client *client)\n"
+ " \treturn 0;\n"
+ " };\n"
+ " \n"
+ "-static int __init atxp1_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&atxp1_driver);\n"
+ "-};\n"
+ "-\n"
+ "-static void __exit atxp1_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&atxp1_driver);\n"
+ "-};\n"
+ "-\n"
+ "-module_init(atxp1_init);\n"
+ "-module_exit(atxp1_exit);\n"
+ "+module_i2c_driver(atxp1_driver);\n"
+ "diff --git a/drivers/hwmon/ds1621.c b/drivers/hwmon/ds1621.c\n"
+ "index ef1ac996..9832ac5 100644\n"
+ "--- a/drivers/hwmon/ds1621.c\n"
+ "+++ b/drivers/hwmon/ds1621.c\n"
+ "@@ -305,20 +305,8 @@ static struct i2c_driver ds1621_driver = {\n"
+ " \t.address_list\t= normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-static int __init ds1621_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&ds1621_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit ds1621_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&ds1621_driver);\n"
+ "-}\n"
+ "-\n"
+ "+module_i2c_driver(ds1621_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Christian W. Zuckschwerdt <zany@triq.net>\");\n"
+ " MODULE_DESCRIPTION(\"DS1621 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(ds1621_init);\n"
+ "-module_exit(ds1621_exit);\n"
+ "diff --git a/drivers/hwmon/ds620.c b/drivers/hwmon/ds620.c\n"
+ "index 225ae4f..2e2b430 100644\n"
+ "--- a/drivers/hwmon/ds620.c\n"
+ "+++ b/drivers/hwmon/ds620.c\n"
+ "@@ -297,19 +297,8 @@ static struct i2c_driver ds620_driver = {\n"
+ " \t.id_table = ds620_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init ds620_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&ds620_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit ds620_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&ds620_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(ds620_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Roland Stigge <stigge@antcom.de>\");\n"
+ " MODULE_DESCRIPTION(\"DS620 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(ds620_init);\n"
+ "-module_exit(ds620_exit);\n"
+ "diff --git a/drivers/hwmon/emc1403.c b/drivers/hwmon/emc1403.c\n"
+ "index cd2a6e4..223bd3c 100644\n"
+ "--- a/drivers/hwmon/emc1403.c\n"
+ "+++ b/drivers/hwmon/emc1403.c\n"
+ "@@ -366,18 +366,7 @@ static struct i2c_driver sensor_emc1403 = {\n"
+ " \t.address_list = emc1403_address_list,\n"
+ " };\n"
+ " \n"
+ "-static int __init sensor_emc1403_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&sensor_emc1403);\n"
+ "-}\n"
+ "-\n"
+ "-static void  __exit sensor_emc1403_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&sensor_emc1403);\n"
+ "-}\n"
+ "-\n"
+ "-module_init(sensor_emc1403_init);\n"
+ "-module_exit(sensor_emc1403_exit);\n"
+ "+module_i2c_driver(sensor_emc1403);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Kalhan Trisal <kalhan.trisal@intel.com\");\n"
+ " MODULE_DESCRIPTION(\"emc1403 Thermal Driver\");\n"
+ "diff --git a/drivers/hwmon/emc2103.c b/drivers/hwmon/emc2103.c\n"
+ "index af914ad9..c251445 100644\n"
+ "--- a/drivers/hwmon/emc2103.c\n"
+ "+++ b/drivers/hwmon/emc2103.c\n"
+ "@@ -722,19 +722,8 @@ static struct i2c_driver emc2103_driver = {\n"
+ " \t.address_list\t= normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-static int __init sensors_emc2103_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&emc2103_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_emc2103_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&emc2103_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(emc2103_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Steve Glendinning <steve.glendinning@smsc.com>\");\n"
+ " MODULE_DESCRIPTION(\"SMSC EMC2103 hwmon driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_emc2103_init);\n"
+ "-module_exit(sensors_emc2103_exit);\n"
+ "diff --git a/drivers/hwmon/emc6w201.c b/drivers/hwmon/emc6w201.c\n"
+ "index 0064432..cbef6e1 100644\n"
+ "--- a/drivers/hwmon/emc6w201.c\n"
+ "+++ b/drivers/hwmon/emc6w201.c\n"
+ "@@ -552,17 +552,7 @@ static struct i2c_driver emc6w201_driver = {\n"
+ " \t.address_list\t= normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-static int __init sensors_emc6w201_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&emc6w201_driver);\n"
+ "-}\n"
+ "-module_init(sensors_emc6w201_init);\n"
+ "-\n"
+ "-static void __exit sensors_emc6w201_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&emc6w201_driver);\n"
+ "-}\n"
+ "-module_exit(sensors_emc6w201_exit);\n"
+ "+module_i2c_driver(emc6w201_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Jean Delvare <khali@linux-fr.org>\");\n"
+ " MODULE_DESCRIPTION(\"SMSC EMC6W201 hardware monitoring driver\");\n"
+ "diff --git a/drivers/hwmon/f75375s.c b/drivers/hwmon/f75375s.c\n"
+ "index 95cbfb3..8326084 100644\n"
+ "--- a/drivers/hwmon/f75375s.c\n"
+ "+++ b/drivers/hwmon/f75375s.c\n"
+ "@@ -699,19 +699,8 @@ static int f75375_detect(struct i2c_client *client,\n"
+ " \treturn 0;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_f75375_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&f75375_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_f75375_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&f75375_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(f75375_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Riku Voipio\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ " MODULE_DESCRIPTION(\"F75373/F75375 hardware monitoring driver\");\n"
+ "-\n"
+ "-module_init(sensors_f75375_init);\n"
+ "-module_exit(sensors_f75375_exit);\n"
+ "diff --git a/drivers/hwmon/fschmd.c b/drivers/hwmon/fschmd.c\n"
+ "index aa6d8b6..73ba942 100644\n"
+ "--- a/drivers/hwmon/fschmd.c\n"
+ "+++ b/drivers/hwmon/fschmd.c\n"
+ "@@ -1314,20 +1314,9 @@ static struct fschmd_data *fschmd_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init fschmd_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&fschmd_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit fschmd_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&fschmd_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(fschmd_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Hans de Goede <hdegoede@redhat.com>\");\n"
+ " MODULE_DESCRIPTION(\"FSC Poseidon, Hermes, Scylla, Heracles, Heimdall, Hades \"\n"
+ " \t\t\t\"and Syleus driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(fschmd_init);\n"
+ "-module_exit(fschmd_exit);\n"
+ "diff --git a/drivers/hwmon/g760a.c b/drivers/hwmon/g760a.c\n"
+ "index 1d6a6fa..f8cd5a9 100644\n"
+ "--- a/drivers/hwmon/g760a.c\n"
+ "+++ b/drivers/hwmon/g760a.c\n"
+ "@@ -250,21 +250,8 @@ static int g760a_remove(struct i2c_client *client)\n"
+ " \treturn 0;\n"
+ " }\n"
+ " \n"
+ "-/* module management */\n"
+ "-\n"
+ "-static int __init g760a_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&g760a_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit g760a_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&g760a_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(g760a_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Herbert Valerio Riedel <hvr@gnu.org>\");\n"
+ " MODULE_DESCRIPTION(\"GMT G760A driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(g760a_init);\n"
+ "-module_exit(g760a_exit);\n"
+ "diff --git a/drivers/hwmon/gl518sm.c b/drivers/hwmon/gl518sm.c\n"
+ "index a13e2da..89b8c0a 100644\n"
+ "--- a/drivers/hwmon/gl518sm.c\n"
+ "+++ b/drivers/hwmon/gl518sm.c\n"
+ "@@ -676,21 +676,10 @@ static struct gl518_data *gl518_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_gl518sm_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&gl518_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_gl518sm_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&gl518_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(gl518_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Frodo Looijaard <frodol@dds.nl>, \"\n"
+ " \t\"Kyosti Malkki <kmalkki@cc.hut.fi> and \"\n"
+ " \t\"Hong-Gunn Chew <hglinux@gunnet.org>\");\n"
+ " MODULE_DESCRIPTION(\"GL518SM driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_gl518sm_init);\n"
+ "-module_exit(sensors_gl518sm_exit);\n"
+ "diff --git a/drivers/hwmon/gl520sm.c b/drivers/hwmon/gl520sm.c\n"
+ "index cd6085b..e6dcf66 100644\n"
+ "--- a/drivers/hwmon/gl520sm.c\n"
+ "+++ b/drivers/hwmon/gl520sm.c\n"
+ "@@ -910,23 +910,10 @@ static struct gl520_data *gl520_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-\n"
+ "-static int __init sensors_gl520sm_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&gl520_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_gl520sm_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&gl520_driver);\n"
+ "-}\n"
+ "-\n"
+ "+module_i2c_driver(gl520_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Frodo Looijaard <frodol@dds.nl>, \"\n"
+ " \t\"Ky\303\266sti M\303\244lkki <kmalkki@cc.hut.fi>, \"\n"
+ " \t\"Maarten Deprez <maartendeprez@users.sourceforge.net>\");\n"
+ " MODULE_DESCRIPTION(\"GL520SM driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_gl520sm_init);\n"
+ "-module_exit(sensors_gl520sm_exit);\n"
+ "diff --git a/drivers/hwmon/jc42.c b/drivers/hwmon/jc42.c\n"
+ "index 2d3d728..d33c592 100644\n"
+ "--- a/drivers/hwmon/jc42.c\n"
+ "+++ b/drivers/hwmon/jc42.c\n"
+ "@@ -588,19 +588,8 @@ abort:\n"
+ " \treturn ret;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_jc42_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&jc42_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_jc42_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&jc42_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(jc42_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Guenter Roeck <guenter.roeck@ericsson.com>\");\n"
+ " MODULE_DESCRIPTION(\"JC42 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_jc42_init);\n"
+ "-module_exit(sensors_jc42_exit);\n"
+ "diff --git a/drivers/hwmon/lineage-pem.c b/drivers/hwmon/lineage-pem.c\n"
+ "index 58eded2..5b8c9ae 100644\n"
+ "--- a/drivers/hwmon/lineage-pem.c\n"
+ "+++ b/drivers/hwmon/lineage-pem.c\n"
+ "@@ -568,19 +568,8 @@ static struct i2c_driver pem_driver = {\n"
+ " \t.id_table = pem_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init pem_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&pem_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit pem_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&pem_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(pem_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Guenter Roeck <guenter.roeck@ericsson.com>\");\n"
+ " MODULE_DESCRIPTION(\"Lineage CPL PEM hardware monitoring driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(pem_init);\n"
+ "-module_exit(pem_exit);\n"
+ "diff --git a/drivers/hwmon/lm63.c b/drivers/hwmon/lm63.c\n"
+ "index 9642286..2eae1bc 100644\n"
+ "--- a/drivers/hwmon/lm63.c\n"
+ "+++ b/drivers/hwmon/lm63.c\n"
+ "@@ -727,19 +727,8 @@ static struct lm63_data *lm63_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_lm63_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&lm63_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_lm63_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&lm63_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(lm63_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Jean Delvare <khali@linux-fr.org>\");\n"
+ " MODULE_DESCRIPTION(\"LM63 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_lm63_init);\n"
+ "-module_exit(sensors_lm63_exit);\n"
+ "diff --git a/drivers/hwmon/lm73.c b/drivers/hwmon/lm73.c\n"
+ "index 9e64d96..2c63f14 100644\n"
+ "--- a/drivers/hwmon/lm73.c\n"
+ "+++ b/drivers/hwmon/lm73.c\n"
+ "@@ -194,21 +194,8 @@ static struct i2c_driver lm73_driver = {\n"
+ " \t.address_list\t= normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-/* module glue */\n"
+ "-\n"
+ "-static int __init sensors_lm73_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&lm73_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_lm73_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&lm73_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(lm73_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Guillaume Ligneul <guillaume.ligneul@gmail.com>\");\n"
+ " MODULE_DESCRIPTION(\"LM73 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_lm73_init);\n"
+ "-module_exit(sensors_lm73_exit);\n"
+ "diff --git a/drivers/hwmon/lm75.c b/drivers/hwmon/lm75.c\n"
+ "index 1888dd0..f3aaa30 100644\n"
+ "--- a/drivers/hwmon/lm75.c\n"
+ "+++ b/drivers/hwmon/lm75.c\n"
+ "@@ -429,23 +429,8 @@ static struct lm75_data *lm75_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-/*-----------------------------------------------------------------------*/\n"
+ "-\n"
+ "-/* module glue */\n"
+ "-\n"
+ "-static int __init sensors_lm75_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&lm75_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_lm75_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&lm75_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(lm75_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Frodo Looijaard <frodol@dds.nl>\");\n"
+ " MODULE_DESCRIPTION(\"LM75 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_lm75_init);\n"
+ "-module_exit(sensors_lm75_exit);\n"
+ "diff --git a/drivers/hwmon/lm77.c b/drivers/hwmon/lm77.c\n"
+ "index 8dfc678..7cd516f 100644\n"
+ "--- a/drivers/hwmon/lm77.c\n"
+ "+++ b/drivers/hwmon/lm77.c\n"
+ "@@ -420,19 +420,8 @@ static struct lm77_data *lm77_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_lm77_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&lm77_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_lm77_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&lm77_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(lm77_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Andras BALI <drewie@freemail.hu>\");\n"
+ " MODULE_DESCRIPTION(\"LM77 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_lm77_init);\n"
+ "-module_exit(sensors_lm77_exit);\n"
+ "diff --git a/drivers/hwmon/lm80.c b/drivers/hwmon/lm80.c\n"
+ "index 18a0e6c..dc983ec 100644\n"
+ "--- a/drivers/hwmon/lm80.c\n"
+ "+++ b/drivers/hwmon/lm80.c\n"
+ "@@ -595,20 +595,9 @@ static struct lm80_data *lm80_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_lm80_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&lm80_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_lm80_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&lm80_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(lm80_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Frodo Looijaard <frodol@dds.nl> and \"\n"
+ " \t\"Philip Edelbrock <phil@netroedge.com>\");\n"
+ " MODULE_DESCRIPTION(\"LM80 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_lm80_init);\n"
+ "-module_exit(sensors_lm80_exit);\n"
+ "diff --git a/drivers/hwmon/lm83.c b/drivers/hwmon/lm83.c\n"
+ "index 8290476..e9a8a06 100644\n"
+ "--- a/drivers/hwmon/lm83.c\n"
+ "+++ b/drivers/hwmon/lm83.c\n"
+ "@@ -423,19 +423,8 @@ static struct lm83_data *lm83_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_lm83_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&lm83_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_lm83_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&lm83_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(lm83_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Jean Delvare <khali@linux-fr.org>\");\n"
+ " MODULE_DESCRIPTION(\"LM83 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_lm83_init);\n"
+ "-module_exit(sensors_lm83_exit);\n"
+ "diff --git a/drivers/hwmon/lm85.c b/drivers/hwmon/lm85.c\n"
+ "index da72dc1..fd26983 100644\n"
+ "--- a/drivers/hwmon/lm85.c\n"
+ "+++ b/drivers/hwmon/lm85.c\n"
+ "@@ -1611,22 +1611,10 @@ static struct lm85_data *lm85_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-\n"
+ "-static int __init sm_lm85_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&lm85_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sm_lm85_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&lm85_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(lm85_driver);\n"
+ " \n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ " MODULE_AUTHOR(\"Philip Pokorny <ppokorny@penguincomputing.com>, \"\n"
+ " \t\"Margit Schubert-While <margitsw@t-online.de>, \"\n"
+ " \t\"Justin Thiessen <jthiessen@penguincomputing.com>\");\n"
+ " MODULE_DESCRIPTION(\"LM85-B, LM85-C driver\");\n"
+ "-\n"
+ "-module_init(sm_lm85_init);\n"
+ "-module_exit(sm_lm85_exit);\n"
+ "diff --git a/drivers/hwmon/lm87.c b/drivers/hwmon/lm87.c\n"
+ "index f1e6e75..126d0cc 100644\n"
+ "--- a/drivers/hwmon/lm87.c\n"
+ "+++ b/drivers/hwmon/lm87.c\n"
+ "@@ -963,19 +963,8 @@ static struct lm87_data *lm87_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_lm87_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&lm87_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_lm87_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&lm87_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(lm87_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Jean Delvare <khali@linux-fr.org> and others\");\n"
+ " MODULE_DESCRIPTION(\"LM87 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_lm87_init);\n"
+ "-module_exit(sensors_lm87_exit);\n"
+ "diff --git a/drivers/hwmon/lm90.c b/drivers/hwmon/lm90.c\n"
+ "index 615bc4f..e70cbb9 100644\n"
+ "--- a/drivers/hwmon/lm90.c\n"
+ "+++ b/drivers/hwmon/lm90.c\n"
+ "@@ -1514,19 +1514,8 @@ static struct i2c_driver lm90_driver = {\n"
+ " \t.address_list\t= normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-static int __init sensors_lm90_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&lm90_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_lm90_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&lm90_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(lm90_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Jean Delvare <khali@linux-fr.org>\");\n"
+ " MODULE_DESCRIPTION(\"LM90/ADM1032 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_lm90_init);\n"
+ "-module_exit(sensors_lm90_exit);\n"
+ "diff --git a/drivers/hwmon/lm92.c b/drivers/hwmon/lm92.c\n"
+ "index 8fcbd4d4..92f2d46 100644\n"
+ "--- a/drivers/hwmon/lm92.c\n"
+ "+++ b/drivers/hwmon/lm92.c\n"
+ "@@ -416,19 +416,8 @@ static struct i2c_driver lm92_driver = {\n"
+ " \t.address_list\t= normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-static int __init sensors_lm92_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&lm92_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_lm92_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&lm92_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(lm92_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Jean Delvare <khali@linux-fr.org>\");\n"
+ " MODULE_DESCRIPTION(\"LM92/MAX6635 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_lm92_init);\n"
+ "-module_exit(sensors_lm92_exit);\n"
+ "diff --git a/drivers/hwmon/lm93.c b/drivers/hwmon/lm93.c\n"
+ "index 3b43df4..cb1bf8c 100644\n"
+ "--- a/drivers/hwmon/lm93.c\n"
+ "+++ b/drivers/hwmon/lm93.c\n"
+ "@@ -2635,20 +2635,9 @@ static struct i2c_driver lm93_driver = {\n"
+ " \t.address_list\t= normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-static int __init lm93_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&lm93_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit lm93_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&lm93_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(lm93_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Mark M. Hoffman <mhoffman@lightlink.com>, \"\n"
+ " \t\t\"Hans J. Koch <hjk@hansjkoch.de>\");\n"
+ " MODULE_DESCRIPTION(\"LM93 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(lm93_init);\n"
+ "-module_exit(lm93_exit);\n"
+ "diff --git a/drivers/hwmon/lm95241.c b/drivers/hwmon/lm95241.c\n"
+ "index 513901d..6074afd 100644\n"
+ "--- a/drivers/hwmon/lm95241.c\n"
+ "+++ b/drivers/hwmon/lm95241.c\n"
+ "@@ -455,19 +455,8 @@ static struct i2c_driver lm95241_driver = {\n"
+ " \t.address_list\t= normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-static int __init sensors_lm95241_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&lm95241_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_lm95241_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&lm95241_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(lm95241_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Davide Rizzo <elpa.rizzo@gmail.com>\");\n"
+ " MODULE_DESCRIPTION(\"LM95241 sensor driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_lm95241_init);\n"
+ "-module_exit(sensors_lm95241_exit);\n"
+ "diff --git a/drivers/hwmon/lm95245.c b/drivers/hwmon/lm95245.c\n"
+ "index dce9e68..87de7de 100644\n"
+ "--- a/drivers/hwmon/lm95245.c\n"
+ "+++ b/drivers/hwmon/lm95245.c\n"
+ "@@ -525,19 +525,8 @@ static struct i2c_driver lm95245_driver = {\n"
+ " \t.address_list\t= normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-static int __init sensors_lm95245_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&lm95245_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_lm95245_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&lm95245_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(lm95245_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Alexander Stein <alexander.stein@systec-electronic.com>\");\n"
+ " MODULE_DESCRIPTION(\"LM95245 sensor driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_lm95245_init);\n"
+ "-module_exit(sensors_lm95245_exit);\n"
+ "diff --git a/drivers/hwmon/ltc4151.c b/drivers/hwmon/ltc4151.c\n"
+ "index 4ac06b7..f646b45 100644\n"
+ "--- a/drivers/hwmon/ltc4151.c\n"
+ "+++ b/drivers/hwmon/ltc4151.c\n"
+ "@@ -238,19 +238,8 @@ static struct i2c_driver ltc4151_driver = {\n"
+ " \t.id_table\t= ltc4151_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init ltc4151_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&ltc4151_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit ltc4151_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&ltc4151_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(ltc4151_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Per Dalen <per.dalen@appeartv.com>\");\n"
+ " MODULE_DESCRIPTION(\"LTC4151 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(ltc4151_init);\n"
+ "-module_exit(ltc4151_exit);\n"
+ "diff --git a/drivers/hwmon/ltc4215.c b/drivers/hwmon/ltc4215.c\n"
+ "index c7e6d8e..0789b63 100644\n"
+ "--- a/drivers/hwmon/ltc4215.c\n"
+ "+++ b/drivers/hwmon/ltc4215.c\n"
+ "@@ -309,19 +309,8 @@ static struct i2c_driver ltc4215_driver = {\n"
+ " \t.id_table\t= ltc4215_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init ltc4215_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&ltc4215_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit ltc4215_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&ltc4215_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(ltc4215_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Ira W. Snyder <iws@ovro.caltech.edu>\");\n"
+ " MODULE_DESCRIPTION(\"LTC4215 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(ltc4215_init);\n"
+ "-module_exit(ltc4215_exit);\n"
+ "diff --git a/drivers/hwmon/ltc4245.c b/drivers/hwmon/ltc4245.c\n"
+ "index 6593083..693a6bd 100644\n"
+ "--- a/drivers/hwmon/ltc4245.c\n"
+ "+++ b/drivers/hwmon/ltc4245.c\n"
+ "@@ -578,19 +578,8 @@ static struct i2c_driver ltc4245_driver = {\n"
+ " \t.id_table\t= ltc4245_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init ltc4245_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&ltc4245_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit ltc4245_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&ltc4245_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(ltc4245_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Ira W. Snyder <iws@ovro.caltech.edu>\");\n"
+ " MODULE_DESCRIPTION(\"LTC4245 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(ltc4245_init);\n"
+ "-module_exit(ltc4245_exit);\n"
+ "diff --git a/drivers/hwmon/ltc4261.c b/drivers/hwmon/ltc4261.c\n"
+ "index 4b50601..c78d323 100644\n"
+ "--- a/drivers/hwmon/ltc4261.c\n"
+ "+++ b/drivers/hwmon/ltc4261.c\n"
+ "@@ -296,19 +296,8 @@ static struct i2c_driver ltc4261_driver = {\n"
+ " \t.id_table = ltc4261_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init ltc4261_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&ltc4261_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit ltc4261_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&ltc4261_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(ltc4261_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Guenter Roeck <guenter.roeck@ericsson.com>\");\n"
+ " MODULE_DESCRIPTION(\"LTC4261 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(ltc4261_init);\n"
+ "-module_exit(ltc4261_exit);\n"
+ "diff --git a/drivers/hwmon/max16065.c b/drivers/hwmon/max16065.c\n"
+ "index 385886a..ca18f52 100644\n"
+ "--- a/drivers/hwmon/max16065.c\n"
+ "+++ b/drivers/hwmon/max16065.c\n"
+ "@@ -699,19 +699,8 @@ static struct i2c_driver max16065_driver = {\n"
+ " \t.id_table = max16065_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init max16065_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&max16065_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit max16065_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&max16065_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(max16065_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Guenter Roeck <guenter.roeck@ericsson.com>\");\n"
+ " MODULE_DESCRIPTION(\"MAX16065 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(max16065_init);\n"
+ "-module_exit(max16065_exit);\n"
+ "diff --git a/drivers/hwmon/max1619.c b/drivers/hwmon/max1619.c\n"
+ "index 022ded0..135822e 100644\n"
+ "--- a/drivers/hwmon/max1619.c\n"
+ "+++ b/drivers/hwmon/max1619.c\n"
+ "@@ -353,20 +353,9 @@ static struct max1619_data *max1619_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_max1619_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&max1619_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_max1619_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&max1619_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(max1619_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Alexey Fisher <fishor@mail.ru> and \"\n"
+ " \t\"Jean Delvare <khali@linux-fr.org>\");\n"
+ " MODULE_DESCRIPTION(\"MAX1619 sensor driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_max1619_init);\n"
+ "-module_exit(sensors_max1619_exit);\n"
+ "diff --git a/drivers/hwmon/max1668.c b/drivers/hwmon/max1668.c\n"
+ "index 20d1b2d..d5fb117 100644\n"
+ "--- a/drivers/hwmon/max1668.c\n"
+ "+++ b/drivers/hwmon/max1668.c\n"
+ "@@ -484,19 +484,8 @@ static struct i2c_driver max1668_driver = {\n"
+ " \t.address_list = max1668_addr_list,\n"
+ " };\n"
+ " \n"
+ "-static int __init sensors_max1668_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&max1668_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_max1668_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&max1668_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(max1668_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"David George <david.george@ska.ac.za>\");\n"
+ " MODULE_DESCRIPTION(\"MAX1668 remote temperature sensor driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_max1668_init)\n"
+ "-module_exit(sensors_max1668_exit)\n"
+ "diff --git a/drivers/hwmon/max6639.c b/drivers/hwmon/max6639.c\n"
+ "index f20d997..64866a9 100644\n"
+ "--- a/drivers/hwmon/max6639.c\n"
+ "+++ b/drivers/hwmon/max6639.c\n"
+ "@@ -635,19 +635,8 @@ static struct i2c_driver max6639_driver = {\n"
+ " \t.address_list = normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-static int __init max6639_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&max6639_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit max6639_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&max6639_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(max6639_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Roland Stigge <stigge@antcom.de>\");\n"
+ " MODULE_DESCRIPTION(\"max6639 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(max6639_init);\n"
+ "-module_exit(max6639_exit);\n"
+ "diff --git a/drivers/hwmon/max6642.c b/drivers/hwmon/max6642.c\n"
+ "index e855d3b..66f0dbc 100644\n"
+ "--- a/drivers/hwmon/max6642.c\n"
+ "+++ b/drivers/hwmon/max6642.c\n"
+ "@@ -352,19 +352,8 @@ static struct i2c_driver max6642_driver = {\n"
+ " \t.address_list\t= normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-static int __init max6642_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&max6642_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit max6642_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&max6642_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(max6642_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Per Dalen <per.dalen@appeartv.com>\");\n"
+ " MODULE_DESCRIPTION(\"MAX6642 sensor driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(max6642_init);\n"
+ "-module_exit(max6642_exit);\n"
+ "diff --git a/drivers/hwmon/max6650.c b/drivers/hwmon/max6650.c\n"
+ "index ece3aaf..7a0cdb0 100644\n"
+ "--- a/drivers/hwmon/max6650.c\n"
+ "+++ b/drivers/hwmon/max6650.c\n"
+ "@@ -713,19 +713,8 @@ static struct max6650_data *max6650_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_max6650_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&max6650_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_max6650_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&max6650_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(max6650_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Hans J. Koch\");\n"
+ " MODULE_DESCRIPTION(\"MAX6650 sensor driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_max6650_init);\n"
+ "-module_exit(sensors_max6650_exit);\n"
+ "diff --git a/drivers/hwmon/sht21.c b/drivers/hwmon/sht21.c\n"
+ "index 1539878..6c2dede 100644\n"
+ "--- a/drivers/hwmon/sht21.c\n"
+ "+++ b/drivers/hwmon/sht21.c\n"
+ "@@ -261,28 +261,7 @@ static struct i2c_driver sht21_driver = {\n"
+ " \t.id_table    = sht21_id,\n"
+ " };\n"
+ " \n"
+ "-/**\n"
+ "- * sht21_init() - initialize driver\n"
+ "- *\n"
+ "- * Called when kernel is booted or module is inserted.\n"
+ "- * Returns 0 on success.\n"
+ "- */\n"
+ "-static int __init sht21_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&sht21_driver);\n"
+ "-}\n"
+ "-module_init(sht21_init);\n"
+ "-\n"
+ "-/**\n"
+ "- * sht21_init() - clean up driver\n"
+ "- *\n"
+ "- * Called when module is removed.\n"
+ "- */\n"
+ "-static void __exit sht21_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&sht21_driver);\n"
+ "-}\n"
+ "-module_exit(sht21_exit);\n"
+ "+module_i2c_driver(sht21_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Urs Fleisch <urs.fleisch@sensirion.com>\");\n"
+ " MODULE_DESCRIPTION(\"Sensirion SHT21 humidity and temperature sensor driver\");\n"
+ "diff --git a/drivers/hwmon/smm665.c b/drivers/hwmon/smm665.c\n"
+ "index 4116381..0d392d0 100644\n"
+ "--- a/drivers/hwmon/smm665.c\n"
+ "+++ b/drivers/hwmon/smm665.c\n"
+ "@@ -718,19 +718,8 @@ static struct i2c_driver smm665_driver = {\n"
+ " \t.id_table = smm665_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init smm665_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&smm665_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit smm665_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&smm665_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(smm665_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Guenter Roeck\");\n"
+ " MODULE_DESCRIPTION(\"SMM665 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(smm665_init);\n"
+ "-module_exit(smm665_exit);\n"
+ "diff --git a/drivers/hwmon/smsc47m192.c b/drivers/hwmon/smsc47m192.c\n"
+ "index 40b2667..8f88908 100644\n"
+ "--- a/drivers/hwmon/smsc47m192.c\n"
+ "+++ b/drivers/hwmon/smsc47m192.c\n"
+ "@@ -635,19 +635,8 @@ static struct smsc47m192_data *smsc47m192_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init smsc47m192_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&smsc47m192_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit smsc47m192_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&smsc47m192_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(smsc47m192_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Hartmut Rick <linux@rick.claranet.de>\");\n"
+ " MODULE_DESCRIPTION(\"SMSC47M192 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(smsc47m192_init);\n"
+ "-module_exit(smsc47m192_exit);\n"
+ "diff --git a/drivers/hwmon/thmc50.c b/drivers/hwmon/thmc50.c\n"
+ "index 7dfb4de..bd83bc0 100644\n"
+ "--- a/drivers/hwmon/thmc50.c\n"
+ "+++ b/drivers/hwmon/thmc50.c\n"
+ "@@ -465,18 +465,7 @@ static struct thmc50_data *thmc50_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sm_thmc50_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&thmc50_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sm_thmc50_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&thmc50_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(thmc50_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Krzysztof Helt <krzysztof.h1@wp.pl>\");\n"
+ " MODULE_DESCRIPTION(\"THMC50 driver\");\n"
+ "-\n"
+ "-module_init(sm_thmc50_init);\n"
+ "-module_exit(sm_thmc50_exit);\n"
+ "diff --git a/drivers/hwmon/tmp102.c b/drivers/hwmon/tmp102.c\n"
+ "index 643aa8c..40b742c 100644\n"
+ "--- a/drivers/hwmon/tmp102.c\n"
+ "+++ b/drivers/hwmon/tmp102.c\n"
+ "@@ -292,17 +292,7 @@ static struct i2c_driver tmp102_driver = {\n"
+ " \t.id_table\t= tmp102_id,\n"
+ " };\n"
+ " \n"
+ "-static int __init tmp102_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&tmp102_driver);\n"
+ "-}\n"
+ "-module_init(tmp102_init);\n"
+ "-\n"
+ "-static void __exit tmp102_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&tmp102_driver);\n"
+ "-}\n"
+ "-module_exit(tmp102_exit);\n"
+ "+module_i2c_driver(tmp102_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Steven King <sfking@fdwdc.com>\");\n"
+ " MODULE_DESCRIPTION(\"Texas Instruments TMP102 temperature sensor driver\");\n"
+ "diff --git a/drivers/hwmon/tmp401.c b/drivers/hwmon/tmp401.c\n"
+ "index ad8d535..a32d4dc 100644\n"
+ "--- a/drivers/hwmon/tmp401.c\n"
+ "+++ b/drivers/hwmon/tmp401.c\n"
+ "@@ -662,19 +662,8 @@ static struct i2c_driver tmp401_driver = {\n"
+ " \t.address_list\t= normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-static int __init tmp401_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&tmp401_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit tmp401_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&tmp401_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(tmp401_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Hans de Goede <hdegoede@redhat.com>\");\n"
+ " MODULE_DESCRIPTION(\"Texas Instruments TMP401 temperature sensor driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(tmp401_init);\n"
+ "-module_exit(tmp401_exit);\n"
+ "diff --git a/drivers/hwmon/tmp421.c b/drivers/hwmon/tmp421.c\n"
+ "index 0517a8f..aa5562d 100644\n"
+ "--- a/drivers/hwmon/tmp421.c\n"
+ "+++ b/drivers/hwmon/tmp421.c\n"
+ "@@ -324,20 +324,9 @@ static struct i2c_driver tmp421_driver = {\n"
+ " \t.address_list = normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-static int __init tmp421_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&tmp421_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit tmp421_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&tmp421_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(tmp421_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Andre Prendel <andre.prendel@gmx.de>\");\n"
+ " MODULE_DESCRIPTION(\"Texas Instruments TMP421/422/423 temperature sensor\"\n"
+ " \t\t   \" driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(tmp421_init);\n"
+ "-module_exit(tmp421_exit);\n"
+ "diff --git a/drivers/hwmon/w83791d.c b/drivers/hwmon/w83791d.c\n"
+ "index 8c2844e..1729f14 100644\n"
+ "--- a/drivers/hwmon/w83791d.c\n"
+ "+++ b/drivers/hwmon/w83791d.c\n"
+ "@@ -1625,19 +1625,8 @@ static void w83791d_print_debug(struct w83791d_data *data, struct device *dev)\n"
+ " }\n"
+ " #endif\n"
+ " \n"
+ "-static int __init sensors_w83791d_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&w83791d_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_w83791d_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&w83791d_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(w83791d_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Charles Spirakis <bezaur@gmail.com>\");\n"
+ " MODULE_DESCRIPTION(\"W83791D driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_w83791d_init);\n"
+ "-module_exit(sensors_w83791d_exit);\n"
+ "diff --git a/drivers/hwmon/w83792d.c b/drivers/hwmon/w83792d.c\n"
+ "index f3e7130..43246e8 100644\n"
+ "--- a/drivers/hwmon/w83792d.c\n"
+ "+++ b/drivers/hwmon/w83792d.c\n"
+ "@@ -1641,22 +1641,8 @@ static void w83792d_print_debug(struct w83792d_data *data, struct device *dev)\n"
+ " }\n"
+ " #endif\n"
+ " \n"
+ "-static int __init\n"
+ "-sensors_w83792d_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&w83792d_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit\n"
+ "-sensors_w83792d_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&w83792d_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(w83792d_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Chunhao Huang @ Winbond <DZShen@Winbond.com.tw>\");\n"
+ " MODULE_DESCRIPTION(\"W83792AD/D driver for linux-2.6\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_w83792d_init);\n"
+ "-module_exit(sensors_w83792d_exit);\n"
+ "-\n"
+ "diff --git a/drivers/hwmon/w83793.c b/drivers/hwmon/w83793.c\n"
+ "index 854f911..77dd465 100644\n"
+ "--- a/drivers/hwmon/w83793.c\n"
+ "+++ b/drivers/hwmon/w83793.c\n"
+ "@@ -2120,19 +2120,8 @@ END:\n"
+ " \treturn res;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_w83793_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&w83793_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_w83793_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&w83793_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(w83793_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Yuan Mu, Sven Anders\");\n"
+ " MODULE_DESCRIPTION(\"w83793 driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_w83793_init);\n"
+ "-module_exit(sensors_w83793_exit);\n"
+ "diff --git a/drivers/hwmon/w83795.c b/drivers/hwmon/w83795.c\n"
+ "index 845232d..25d741d 100644\n"
+ "--- a/drivers/hwmon/w83795.c\n"
+ "+++ b/drivers/hwmon/w83795.c\n"
+ "@@ -2244,19 +2244,8 @@ static struct i2c_driver w83795_driver = {\n"
+ " \t.address_list\t= normal_i2c,\n"
+ " };\n"
+ " \n"
+ "-static int __init sensors_w83795_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&w83795_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_w83795_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&w83795_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(w83795_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Wei Song, Jean Delvare <khali@linux-fr.org>\");\n"
+ " MODULE_DESCRIPTION(\"W83795G/ADG hardware monitoring driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_w83795_init);\n"
+ "-module_exit(sensors_w83795_exit);\n"
+ "diff --git a/drivers/hwmon/w83l785ts.c b/drivers/hwmon/w83l785ts.c\n"
+ "index 20781de..57f639e 100644\n"
+ "--- a/drivers/hwmon/w83l785ts.c\n"
+ "+++ b/drivers/hwmon/w83l785ts.c\n"
+ "@@ -302,19 +302,8 @@ static struct w83l785ts_data *w83l785ts_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init sensors_w83l785ts_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&w83l785ts_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit sensors_w83l785ts_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&w83l785ts_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(w83l785ts_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Jean Delvare <khali@linux-fr.org>\");\n"
+ " MODULE_DESCRIPTION(\"W83L785TS-S driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_w83l785ts_init);\n"
+ "-module_exit(sensors_w83l785ts_exit);\n"
+ "diff --git a/drivers/hwmon/w83l786ng.c b/drivers/hwmon/w83l786ng.c\n"
+ "index 0254e18..8b120eb 100644\n"
+ "--- a/drivers/hwmon/w83l786ng.c\n"
+ "+++ b/drivers/hwmon/w83l786ng.c\n"
+ "@@ -769,21 +769,8 @@ static struct w83l786ng_data *w83l786ng_update_device(struct device *dev)\n"
+ " \treturn data;\n"
+ " }\n"
+ " \n"
+ "-static int __init\n"
+ "-sensors_w83l786ng_init(void)\n"
+ "-{\n"
+ "-\treturn i2c_add_driver(&w83l786ng_driver);\n"
+ "-}\n"
+ "-\n"
+ "-static void __exit\n"
+ "-sensors_w83l786ng_exit(void)\n"
+ "-{\n"
+ "-\ti2c_del_driver(&w83l786ng_driver);\n"
+ "-}\n"
+ "+module_i2c_driver(w83l786ng_driver);\n"
+ " \n"
+ " MODULE_AUTHOR(\"Kevin Lo\");\n"
+ " MODULE_DESCRIPTION(\"w83l786ng driver\");\n"
+ " MODULE_LICENSE(\"GPL\");\n"
+ "-\n"
+ "-module_init(sensors_w83l786ng_init);\n"
+ "-module_exit(sensors_w83l786ng_exit);\n"
+ "-- \n"
+ 1.7.5.4
 
-995fc40028f55f8a9eaea5bcdcaa49ba704456ae6f39ef064bb3d3dd33b97482
+685f0fc58fbc7bbad108d79380905e5a8a3688da0281df773d3bf02709c0877c

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.