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(<c4151_driver); +-} +- +-static void __exit ltc4151_exit(void) +-{ +- i2c_del_driver(<c4151_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(<c4215_driver); +-} +- +-static void __exit ltc4215_exit(void) +-{ +- i2c_del_driver(<c4215_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(<c4245_driver); +-} +- +-static void __exit ltc4245_exit(void) +-{ +- i2c_del_driver(<c4245_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(<c4261_driver); +-} +- +-static void __exit ltc4261_exit(void) +-{ +- i2c_del_driver(<c4261_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(<c4151_driver);\n" + "-}\n" + "-\n" + "-static void __exit ltc4151_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(<c4151_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(<c4215_driver);\n" + "-}\n" + "-\n" + "-static void __exit ltc4215_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(<c4215_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(<c4245_driver);\n" + "-}\n" + "-\n" + "-static void __exit ltc4245_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(<c4245_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(<c4261_driver);\n" + "-}\n" + "-\n" + "-static void __exit ltc4261_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(<c4261_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.