From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Steve Dickson To: git-commits@fedoraproject.org Subject: [rpms/nfs-utils] rawhide: Updated to the latest RC release: nfs-utils-2-9-2-rc5 Date: Wed, 15 Jul 2026 10:04:40 GMT Message-ID: <178410988062.1.12626737556741986938.rpms-nfs-utils-982931a2d689@fedoraproject.org> List-ID: X-Git-Repo: rpms/nfs-utils X-Git-Branch: rawhide X-Git-Rev: 982931a2d6893aba38abbdc670dbbd69c280c611 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvbmZzLXV0aWxzCiAgICAgICAgICAgIEJyYW5jaCA6IHJhd2hpZGUKICAgICAg ICAgICAgQ29tbWl0IDogOTgyOTMxYTJkNjg5M2FiYTM4YWJiZGM2NzBkYmJkNjljMjgwYzYxMQog ICAgICAgICAgICBBdXRob3IgOiBTdGV2ZSBEaWNrc29uIDxzdGV2ZWRAcmVkaGF0LmNvbT4KICAg ICAgICAgICAgRGF0ZSAgIDogMjAyNi0wNy0xMVQxMjoyMzozNy0wNDowMAogICAgICAgICAgICBT dGF0cyAgOiArMTM1NC8tMTE3OSBpbiA0IGZpbGUocykKICAgICAgICAgICAgVVJMICAgIDogaHR0 cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9uZnMtdXRpbHMvYy85ODI5MzFhMmQ2ODkz YWJhMzhhYmJkYzY3MGRiYmQ2OWMyODBjNjExP2JyYW5jaD1yYXdoaWRlCgogICAgICAgICAgICBM b2c6CiAgICAgICAgICAgIFVwZGF0ZWQgdG8gdGhlIGxhdGVzdCBSQyByZWxlYXNlOiBuZnMtdXRp bHMtMi05LTItcmM1CgpTaWduZWQtb2ZmLWJ5OiBTdGV2ZSBEaWNrc29uIDxzdGV2ZWRAcmVkaGF0 LmNvbT4KCi0tLQpkaWZmIC0tZ2l0IGEvbmZzLXV0aWxzLTIuOS4xLW5mc2QtdGhyZWFkLWNvdW50 LXplcm8ucGF0Y2ggYi9uZnMtdXRpbHMtMi45LjEtbmZzZC10aHJlYWQtY291bnQtemVyby5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTMzYWU2Zi4uMDAwMDAwMAotLS0gYS9u ZnMtdXRpbHMtMi45LjEtbmZzZC10aHJlYWQtY291bnQtemVyby5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDM5ICswLDAgQEAKLWNvbW1pdCBmOTkzZjFjZWI1YzVjYTY4ZDYyY2JkYzFmMDQwZDIy OGQ2ZDlhMDE4Ci1BdXRob3I6IFNjb3R0IE1heWhldyA8c21heWhld0ByZWRoYXQuY29tPgotRGF0 ZTogICBUdWUgSnVuIDE2IDA2OjU3OjIwIDIwMjYgLTA0MDAKLQotICAgIG5mc2Q6IGRvbid0IGFz c3VtZSBzZXJ2aWNlIGlzIHJ1bm5pbmcgd2hlbiBzZXR0aW5nIHRocmVhZCBjb3VudCB0byAwCi0g ICAgCi0gICAgTmV3ZXIga2VybmVscyByZXR1cm4gLUVJTyBpZiB5b3UgdHJ5IHRvIHdyaXRlIHRv IC9wcm9jL2ZzL25mc2QvdGhyZWFkcwotICAgIGFuZCB0aGVyZSBhcmUgbm8gYWN0aXZlIGxpc3Rl bmVycy4KLSAgICAKLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBNYXloZXcgPHNtYXloZXdAcmVk aGF0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGV2ZSBEaWNrc29uIDxzdGV2ZWRAcmVkaGF0 LmNvbT4KLQotZGlmZiAtLWdpdCBhL3V0aWxzL25mc2QvbmZzZC5jIGIvdXRpbHMvbmZzZC9uZnNk LmMKLWluZGV4IDM2NWUxNDVkLi5jOTVkMzJmNCAxMDA2NDQKLS0tLSBhL3V0aWxzL25mc2QvbmZz ZC5jCi0rKysgYi91dGlscy9uZnNkL25mc2QuYwotQEAgLTMxMSwxMiArMzExLDE2IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCQlhcmd2WzBdLCBjb3VudCk7Ci0gCQkJY291bnQg PSAxOwotIAkJfSBlbHNlIGlmIChjb3VudCA9PSAwKSB7Ci0tCQkJLyoKLS0JCQkgKiBkb24ndCBi b3RoZXIgc2V0dGluZyBhbnl0aGluZyBlbHNlIGlmIHRoZSB0aHJlYWRzCi0tCQkJICogYXJlIGNv bWluZyBkb3duIGFueXdheS4KLS0JCQkgKi8KLS0JCQlzb2NrZXRfdXAgPSAxOwotLQkJCWdvdG8g c2V0X3RocmVhZHM7Ci0rCQkJaWYgKG5mc3N2Y19pbnVzZSgpKSB7Ci0rCQkJCS8qCi0rCQkJCSAq IGRvbid0IGJvdGhlciBzZXR0aW5nIGFueXRoaW5nIGVsc2UgaWYgdGhlIHRocmVhZHMKLSsJCQkJ ICogYXJlIGNvbWluZyBkb3duIGFueXdheS4KLSsJCQkJICovCi0rCQkJCXNvY2tldF91cCA9IDE7 Ci0rCQkJCWdvdG8gc2V0X3RocmVhZHM7Ci0rCQkJfSBlbHNlIHsKLSsJCQkJZ290byBvdXQ7Ci0r CQkJfQotIAkJfQotIAl9Ci0gCgpkaWZmIC0tZ2l0IGEvbmZzLXV0aWxzLTIuOS4yLXJjNC5wYXRj aCBiL25mcy11dGlscy0yLjkuMi1yYzQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IGY5ZGNiNTEuLjAwMDAwMDAKLS0tIGEvbmZzLXV0aWxzLTIuOS4yLXJjNC5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDExMzcgKzAsMCBAQAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBi L2NvbmZpZ3VyZS5hYwotaW5kZXggMTE1YzYxMWYuLjhjYTA2ZmQ2IDEwMDY0NAotLS0tIGEvY29u ZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0yNTYsNiArMjU2LDggQEAgUEtHX0NI RUNLX01PRFVMRVMoTElCTkwzLCBsaWJubC0zLjAgPj0gMy4xKQotIFBLR19DSEVDS19NT0RVTEVT KExJQk5MR0VOTDMsIGxpYm5sLWdlbmwtMy4wID49IDMuMSkKLSAKLSBBQ19DSEVDS19IRUFERVJT KGxpbnV4L25mc2RfbmV0bGluay5oKQotK0FDX0RFRklORShbSEFWRV9ORlNEX05FVExJTktdLCAx LAotKwkgIFtEZWZpbmUgdG8gMSBpZiBuZnNkIGdlbmVyaWMgbmV0bGluayBzdXBwb3J0IGlzIGF2 YWlsYWJsZV0pCi0gCi0gIyBlbnN1cmUgd2UgaGF2ZSB0aGUgZXhwa2V5IGF0dHJpYnV0ZXMKLSBB Q19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbI2luY2x1ZGUgPGxpbnV4L25mc2Rf bmV0bGluay5oPl1dLAotZGlmZiAtLWdpdCBhL3N1cHBvcnQvZXhwb3J0L2NhY2hlLmMgYi9zdXBw b3J0L2V4cG9ydC9jYWNoZS5jCi1pbmRleCAyZjEyOGQ3ZC4uNjUwMDhmNTEgMTAwNjQ0Ci0tLS0g YS9zdXBwb3J0L2V4cG9ydC9jYWNoZS5jCi0rKysgYi9zdXBwb3J0L2V4cG9ydC9jYWNoZS5jCi1A QCAtNDAsNyArNDAsNyBAQAotICNpbmNsdWRlIDxuZXRsaW5rL2dlbmwvY3RybC5oPgotICNpbmNs dWRlIDxuZXRsaW5rL21zZy5oPgotICNpbmNsdWRlIDxuZXRsaW5rL2F0dHIuaD4KLS0jaW5jbHVk ZSA8bGludXgvbmV0bGluay5oPgotKyNpbmNsdWRlICJjb21wYXQuaCIKLSAKLSAjaWZkZWYgVVNF X1NZU1RFTV9ORlNEX05FVExJTktfSAotICNpbmNsdWRlIDxsaW51eC9uZnNkX25ldGxpbmsuaD4K LWRpZmYgLS1naXQgYS9zdXBwb3J0L2V4cG9ydC9jYWNoZV9mbHVzaC5jIGIvc3VwcG9ydC9leHBv cnQvY2FjaGVfZmx1c2guYwotaW5kZXggZWQ3Yjk2NGYuLjJhMjRkZWM3IDEwMDY0NAotLS0tIGEv c3VwcG9ydC9leHBvcnQvY2FjaGVfZmx1c2guYwotKysrIGIvc3VwcG9ydC9leHBvcnQvY2FjaGVf Zmx1c2guYwotQEAgLTM4LDYgKzM4LDggQEAgZXh0ZXJuIGludCBub19uZXRsaW5rOwotICNpbmNs dWRlICJzdW5ycGNfbmV0bGluay5oIgotICNlbmRpZgotIAotKyNpbmNsdWRlICJjb21wYXQuaCIK LSsKLSBzdGF0aWMgaW50IG5sX3NlbmRfZmx1c2goc3RydWN0IG5sX3NvY2sgKnNvY2ssIGludCBm YW1pbHksIGludCBjbWQpCi0gewotIAlzdHJ1Y3QgbmxfbXNnICptc2c7Ci1kaWZmIC0tZ2l0IGEv c3VwcG9ydC9leHBvcnQveHRhYi5jIGIvc3VwcG9ydC9leHBvcnQveHRhYi5jCi1pbmRleCAyODJm MTViYy4uMGE5NjYwNTEgMTAwNjQ0Ci0tLS0gYS9zdXBwb3J0L2V4cG9ydC94dGFiLmMKLSsrKyBi L3N1cHBvcnQvZXhwb3J0L3h0YWIuYwotQEAgLTMzLDExICszMyw4IEBAIGludCB2NHJvb3RfbmVl ZGVkOwotIHN0YXRpYyB2b2lkIGNvbmRfcmVuYW1lKGNoYXIgKm5ld2ZpbGUsIGNoYXIgKm9sZGZp bGUpOwotIAotIHN0YXRpYyBpbnQKLS14dGFiX3JlYWQoY2hhciAqeHRhYiwgY2hhciAqbG9ja2Zu LCBpbnQgaXNfZXhwb3J0KQotK3h0YWJfcmVhZChjaGFyICp4dGFiLCBjaGFyICpsb2NrZm4pCi0g ewotLSAgICAvKiBpc19leHBvcnQgPT0gMCAgPT4gcmVhZGluZyAvcHJvYy9mcy9uZnMvZXhwb3J0 cyAtIHdlIGtub3cgdGhlc2UgdGhpbmdzIGFyZSBleHBvcnRlZCB0byBrZXJuZWwKLS0gICAgICog aXNfZXhwb3J0ID09IDEgID0+IHJlYWRpbmcgL3Zhci9saWIvbmZzL2V0YWIgLSB0aGVzZSB0aGlu Z3MgYXJlIGFsbG93ZWQgdG8gYmUgZXhwb3J0ZWQKLS0gICAgICovCi0gCXN0cnVjdCBleHBvcnRl bnQJKnhwOwotIAluZnNfZXhwb3J0CQkqZXhwOwotIAlpbnQJCQlsb2NraWQ7Ci1AQCAtNDUsMTEg KzQyLDEwIEBAIHh0YWJfcmVhZChjaGFyICp4dGFiLCBjaGFyICpsb2NrZm4sIGludCBpc19leHBv cnQpCi0gCWlmICgobG9ja2lkID0geGZsb2NrKGxvY2tmbiwgInIiKSkgPCAwKQotIAkJcmV0dXJu IDA7Ci0gCXNldGV4cG9ydGVudCh4dGFiLCAiciIpOwotLQlpZiAoaXNfZXhwb3J0ID09IDEpCi0t CQl2NHJvb3RfbmVlZGVkID0gMTsKLS0Jd2hpbGUgKCh4cCA9IGdldGV4cG9ydGVudChpc19leHBv cnQ9PTApKSAhPSBOVUxMKSB7Ci0tCQlpZiAoIShleHAgPSBleHBvcnRfbG9va3VwKHhwLT5lX2hv c3RuYW1lLCB4cC0+ZV9wYXRoLCBpc19leHBvcnQgIT0gMSkpICYmCi0tCQkgICAgIShleHAgPSBl eHBvcnRfY3JlYXRlKHhwLCBpc19leHBvcnQhPTEpKSkgewotKwl2NHJvb3RfbmVlZGVkID0gMTsK LSsJd2hpbGUgKCh4cCA9IGdldGV4cG9ydGVudCgwKSkgIT0gTlVMTCkgewotKwkJaWYgKCEoZXhw ID0gZXhwb3J0X2xvb2t1cCh4cC0+ZV9ob3N0bmFtZSwgeHAtPmVfcGF0aCwgMCkpICYmCi0rCQkg ICAgIShleHAgPSBleHBvcnRfY3JlYXRlKHhwLCAwKSkpIHsKLSAgICAgICAgICAgICAgICAgICAg ICAgICBpZih4cC0+ZV9ob3N0bmFtZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm cmVlKHhwLT5lX2hvc3RuYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHAtPmVf aG9zdG5hbWU9TlVMTDsKLUBAIC02MCwxNyArNTYsMTAgQEAgeHRhYl9yZWFkKGNoYXIgKnh0YWIs IGNoYXIgKmxvY2tmbiwgaW50IGlzX2V4cG9ydCkKLSAgICAgICAgICAgICAgICAgICAgICAgICB9 Ci0gCQkJY29udGludWU7Ci0gCQl9Ci0tCQlzd2l0Y2ggKGlzX2V4cG9ydCkgewotLQkJY2FzZSAw OgotLQkJCWV4cC0+bV9leHBvcnRlZCA9IDE7Ci0tCQkJYnJlYWs7Ci0tCQljYXNlIDE6Ci0tCQkJ ZXhwLT5tX3h0YWJlbnQgPSAxOwotLQkJCWV4cC0+bV9tYXlleHBvcnQgPSAxOwotLQkJCWlmICgo eHAtPmVfZmxhZ3MgJiBORlNFWFBfRlNJRCkgJiYgeHAtPmVfZnNpZCA9PSAwKQotLQkJCQl2NHJv b3RfbmVlZGVkID0gMDsKLS0JCQlicmVhazsKLS0JCX0gIAotKwkJZXhwLT5tX3h0YWJlbnQgPSAx OwotKwkJZXhwLT5tX21heWV4cG9ydCA9IDE7Ci0rCQlpZiAoKHhwLT5lX2ZsYWdzICYgTkZTRVhQ X0ZTSUQpICYmIHhwLT5lX2ZzaWQgPT0gMCkKLSsJCQl2NHJvb3RfbmVlZGVkID0gMDsKLSAgICAg ICAgICAgICAgICAgaWYoeHAtPmVfaG9zdG5hbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgIGZy ZWUoeHAtPmVfaG9zdG5hbWUpOwotICAgICAgICAgICAgICAgICAgICAgeHAtPmVfaG9zdG5hbWU9 TlVMTDsKLUBAIC05MCw3ICs3OSw3IEBAIHh0YWJfcmVhZChjaGFyICp4dGFiLCBjaGFyICpsb2Nr Zm4sIGludCBpc19leHBvcnQpCi0gaW50Ci0geHRhYl9leHBvcnRfcmVhZCh2b2lkKQotIHsKLS0J cmV0dXJuIHh0YWJfcmVhZChldGFiLnN0YXRlZm4sIGV0YWIubG9ja2ZuLCAxKTsKLSsJcmV0dXJu IHh0YWJfcmVhZChldGFiLnN0YXRlZm4sIGV0YWIubG9ja2ZuKTsKLSB9Ci0gCi0gLyoKLUBAIC0x MDAsNyArODksNyBAQCB4dGFiX2V4cG9ydF9yZWFkKHZvaWQpCi0gICogZml4IHRoZSBhdXRoX3Jl bG9hZCBsb2dpYyBhcyB3ZWxsLi4uCi0gICovCi0gc3RhdGljIGludAotLXh0YWJfd3JpdGUoY2hh ciAqeHRhYiwgY2hhciAqeHRhYnRtcCwgY2hhciAqbG9ja2ZuLCBpbnQgaXNfZXhwb3J0KQotK3h0 YWJfd3JpdGUoY2hhciAqeHRhYiwgY2hhciAqeHRhYnRtcCwgY2hhciAqbG9ja2ZuKQotIHsKLSAJ c3RydWN0IGV4cG9ydGVudAl4ZTsKLSAJbmZzX2V4cG9ydAkJKmV4cDsKLUBAIC0xMTQsOSArMTAz LDcgQEAgeHRhYl93cml0ZShjaGFyICp4dGFiLCBjaGFyICp4dGFidG1wLCBjaGFyICpsb2NrZm4s IGludCBpc19leHBvcnQpCi0gCi0gCWZvciAoaSA9IDA7IGkgPCBNQ0xfTUFYVFlQRVM7IGkrKykg ewotIAkJZm9yIChleHAgPSBleHBvcnRsaXN0W2ldLnBfaGVhZDsgZXhwOyBleHAgPSBleHAtPm1f bmV4dCkgewotLQkJCWlmIChpc19leHBvcnQgJiYgIWV4cC0+bV94dGFiZW50KQotLQkJCQljb250 aW51ZTsKLS0JCQlpZiAoIWlzX2V4cG9ydCAmJiAhIGV4cC0+bV9leHBvcnRlZCkKLSsJCQlpZiAo IWV4cC0+bV94dGFiZW50KQotIAkJCQljb250aW51ZTsKLSAKLSAJCQkvKiB3cml0ZSBvdXQgdGhl IGV4cG9ydCBlbnRyeSB1c2luZyB0aGUgRlFETiAqLwotQEAgLTEzNyw3ICsxMjQsNyBAQCB4dGFi X3dyaXRlKGNoYXIgKnh0YWIsIGNoYXIgKnh0YWJ0bXAsIGNoYXIgKmxvY2tmbiwgaW50IGlzX2V4 cG9ydCkKLSBpbnQKLSB4dGFiX2V4cG9ydF93cml0ZSh2b2lkKQotIHsKLS0JcmV0dXJuIHh0YWJf d3JpdGUoZXRhYi5zdGF0ZWZuLCBldGFiLnRtcGZuLCBldGFiLmxvY2tmbiwgMSk7Ci0rCXJldHVy biB4dGFiX3dyaXRlKGV0YWIuc3RhdGVmbiwgZXRhYi50bXBmbiwgZXRhYi5sb2NrZm4pOwotIH0K LSAKLSAvKgotZGlmZiAtLWdpdCBhL3N1cHBvcnQvaW5jbHVkZS9jb21wYXQuaCBiL3N1cHBvcnQv aW5jbHVkZS9jb21wYXQuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwLi44 MzIyOWI2NQotLS0tIC9kZXYvbnVsbAotKysrIGIvc3VwcG9ydC9pbmNsdWRlL2NvbXBhdC5oCi1A QCAtMCwwICsxLDEwIEBACi0rI2lmbmRlZiBDT01QQVRfSAotKyNkZWZpbmUgQ09NUEFUX0gKLSsK LSsjaW5jbHVkZSA8bGludXgvbmV0bGluay5oPgotKwotKyNpZm5kZWYgTkVUTElOS19FWFRfQUNL Ci0rI2RlZmluZSBORVRMSU5LX0VYVF9BQ0sgMTEKLSsjZW5kaWYKLSsKLSsjZW5kaWYgLyogQ09N UEFUX0ggKi8KLWRpZmYgLS1naXQgYS9zdXBwb3J0L2luY2x1ZGUvbmZzZF9uZXRsaW5rLmggYi9z dXBwb3J0L2luY2x1ZGUvbmZzZF9uZXRsaW5rLmgKLWluZGV4IDJkNzA4ZDI0Li4zZDA3NmQxNyAx MDA2NDQKLS0tLSBhL3N1cHBvcnQvaW5jbHVkZS9uZnNkX25ldGxpbmsuaAotKysrIGIvc3VwcG9y dC9pbmNsdWRlL25mc2RfbmV0bGluay5oCi1AQCAtMTUxLDE1ICsxNTEsNiBAQCBlbnVtIHsKLSAJ TkZTRF9BX0FVVEhfRkxBVk9SX01BWCA9IChfX05GU0RfQV9BVVRIX0ZMQVZPUl9NQVggLSAxKQot IH07Ci0gCi0tZW51bSB7Ci0tCU5GU0RfQV9TVkNfRVhQT1JUX1JFUV9TRVFOTyA9IDEsCi0tCU5G U0RfQV9TVkNfRVhQT1JUX1JFUV9DTElFTlQsCi0tCU5GU0RfQV9TVkNfRVhQT1JUX1JFUV9QQVRI LAotLQotLQlfX05GU0RfQV9TVkNfRVhQT1JUX1JFUV9NQVgsCi0tCU5GU0RfQV9TVkNfRVhQT1JU X1JFUV9NQVggPSAoX19ORlNEX0FfU1ZDX0VYUE9SVF9SRVFfTUFYIC0gMSkKLS19OwotLQotIGVu dW0gewotIAlORlNEX0FfU1ZDX0VYUE9SVF9TRVFOTyA9IDEsCi0gCU5GU0RfQV9TVkNfRVhQT1JU X0NMSUVOVCwKLUBAIC0yMTMsNiArMjA0LDYxIEBAIGVudW0gewotIAlORlNEX0FfQ0FDSEVfRkxV U0hfTUFYID0gKF9fTkZTRF9BX0NBQ0hFX0ZMVVNIX01BWCAtIDEpCi0gfTsKLSAKLStlbnVtIHsK LSsJTkZTRF9BX1VOTE9DS19JUF9BRERSRVNTID0gMSwKLSsKLSsJX19ORlNEX0FfVU5MT0NLX0lQ X01BWCwKLSsJTkZTRF9BX1VOTE9DS19JUF9NQVggPSAoX19ORlNEX0FfVU5MT0NLX0lQX01BWCAt IDEpCi0rfTsKLSsKLStlbnVtIHsKLSsJTkZTRF9BX1VOTE9DS19GSUxFU1lTVEVNX1BBVEggPSAx LAotKwotKwlfX05GU0RfQV9VTkxPQ0tfRklMRVNZU1RFTV9NQVgsCi0rCU5GU0RfQV9VTkxPQ0tf RklMRVNZU1RFTV9NQVggPSAoX19ORlNEX0FfVU5MT0NLX0ZJTEVTWVNURU1fTUFYIC0gMSkKLSt9 OwotKwotK2VudW0gewotKwlORlNEX0FfVU5MT0NLX0VYUE9SVF9QQVRIID0gMSwKLSsKLSsJX19O RlNEX0FfVU5MT0NLX0VYUE9SVF9NQVgsCi0rCU5GU0RfQV9VTkxPQ0tfRVhQT1JUX01BWCA9IChf X05GU0RfQV9VTkxPQ0tfRVhQT1JUX01BWCAtIDEpCi0rfTsKLSsKLStlbnVtIHsKLSsJTkZTRF9B X1NFUlZFUl9QUk9DX0VOVFJZX09QID0gMSwKLSsJTkZTRF9BX1NFUlZFUl9QUk9DX0VOVFJZX0NP VU5ULAotKwlORlNEX0FfU0VSVkVSX1BST0NfRU5UUllfUEFELAotKwotKwlfX05GU0RfQV9TRVJW RVJfUFJPQ19FTlRSWV9NQVgsCi0rCU5GU0RfQV9TRVJWRVJfUFJPQ19FTlRSWV9NQVggPSAoX19O RlNEX0FfU0VSVkVSX1BST0NfRU5UUllfTUFYIC0gMSkKLSt9OwotKwotK2VudW0gewotKwlORlNE X0FfU0VSVkVSX1NUQVRTX1JDX0hJVFMgPSAxLAotKwlORlNEX0FfU0VSVkVSX1NUQVRTX1JDX01J U1NFUywKLSsJTkZTRF9BX1NFUlZFUl9TVEFUU19SQ19OT0NBQ0hFLAotKwlORlNEX0FfU0VSVkVS X1NUQVRTX1BBRCwKLSsJTkZTRF9BX1NFUlZFUl9TVEFUU19GSF9TVEFMRSwKLSsJTkZTRF9BX1NF UlZFUl9TVEFUU19JT19SRUFELAotKwlORlNEX0FfU0VSVkVSX1NUQVRTX0lPX1dSSVRFLAotKwlO RlNEX0FfU0VSVkVSX1NUQVRTX05FVENOVCwKLSsJTkZTRF9BX1NFUlZFUl9TVEFUU19ORVRVRFBD TlQsCi0rCU5GU0RfQV9TRVJWRVJfU1RBVFNfTkVUVENQQ05ULAotKwlORlNEX0FfU0VSVkVSX1NU QVRTX05FVFRDUENPTk4sCi0rCU5GU0RfQV9TRVJWRVJfU1RBVFNfUlBDQ05ULAotKwlORlNEX0Ff U0VSVkVSX1NUQVRTX1JQQ0JBREZNVCwKLSsJTkZTRF9BX1NFUlZFUl9TVEFUU19SUENCQURBVVRI LAotKwlORlNEX0FfU0VSVkVSX1NUQVRTX1JQQ0JBRENMTlQsCi0rCU5GU0RfQV9TRVJWRVJfU1RB VFNfUFJPQzJfT1BTLAotKwlORlNEX0FfU0VSVkVSX1NUQVRTX1BST0MzX09QUywKLSsJTkZTRF9B X1NFUlZFUl9TVEFUU19QUk9DNF9PUFMsCi0rCU5GU0RfQV9TRVJWRVJfU1RBVFNfUFJPQzRPUFNf T1BTLAotKwotKwlfX05GU0RfQV9TRVJWRVJfU1RBVFNfTUFYLAotKwlORlNEX0FfU0VSVkVSX1NU QVRTX01BWCA9IChfX05GU0RfQV9TRVJWRVJfU1RBVFNfTUFYIC0gMSkKLSt9OwotKwotIGVudW0g ewotIAlORlNEX0NNRF9SUENfU1RBVFVTX0dFVCA9IDEsCi0gCU5GU0RfQ01EX1RIUkVBRFNfU0VU LAotQEAgLTIyOSw2ICsyNzUsMTAgQEAgZW51bSB7Ci0gCU5GU0RfQ01EX0VYUEtFWV9HRVRfUkVR UywKLSAJTkZTRF9DTURfRVhQS0VZX1NFVF9SRVFTLAotIAlORlNEX0NNRF9DQUNIRV9GTFVTSCwK LSsJTkZTRF9DTURfVU5MT0NLX0lQLAotKwlORlNEX0NNRF9VTkxPQ0tfRklMRVNZU1RFTSwKLSsJ TkZTRF9DTURfVU5MT0NLX0VYUE9SVCwKLSsJTkZTRF9DTURfU0VSVkVSX1NUQVRTX0dFVCwKLSAK LSAJX19ORlNEX0NNRF9NQVgsCi0gCU5GU0RfQ01EX01BWCA9IChfX05GU0RfQ01EX01BWCAtIDEp Ci1kaWZmIC0tZ2l0IGEvc3VwcG9ydC9pbmNsdWRlL25mc2RubC5oIGIvc3VwcG9ydC9pbmNsdWRl L25mc2RubC5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAuLjM1MjgwMWU1 Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zdXBwb3J0L2luY2x1ZGUvbmZzZG5sLmgKLUBAIC0wLDAg KzEsMzQgQEAKLSsvKgotKyAqIEhlbHBlciBmb3Igc2VuZGluZyBuZnNkIGdlbmVyaWMgbmV0bGlu ayBjb21tYW5kcy4KLSsgKgotKyAqIFVzZWQgYnkgYm90aCBuZnNkY3RsIGFuZCBleHBvcnRmcy4K LSsgKi8KLSsKLSsjaWZuZGVmIE5GU19VVElMU19ORlNETkxfSAotKyNkZWZpbmUgTkZTX1VUSUxT X05GU0ROTF9ICi0rCi0rI2lmZGVmIEhBVkVfTkZTRF9ORVRMSU5LCi0rCi0rLyoqCi0rICogbmZz ZF9ubF9jbWRfc3RyIC0gc2VuZCBhbiBuZnNkIG5ldGxpbmsgY29tbWFuZCBjYXJyeWluZyBhIHN0 cmluZyBhdHRyaWJ1dGUKLSsgKiBAY21kOiAgIE5GU0RfQ01EXyogY29tbWFuZCBudW1iZXIKLSsg KiBAYXR0cjogIE5GU0RfQV8qIGF0dHJpYnV0ZSBudW1iZXIKLSsgKiBAdmFsdWU6IE5VTC10ZXJt aW5hdGVkIHN0cmluZyB2YWx1ZSBmb3IgdGhlIGF0dHJpYnV0ZQotKyAqCi0rICogT3BlbnMgYSBn ZW5ldGxpbmsgY29ubmVjdGlvbiwgcmVzb2x2ZXMgdGhlICJuZnNkIiBmYW1pbHksIHNlbmRzIGEK LSsgKiBzaW5nbGUgImRvIiBjb21tYW5kIHdpdGggb25lIHN0cmluZyBhdHRyaWJ1dGUsIHdhaXRz IGZvciB0aGUgQUNLLAotKyAqIGFuZCBjbGVhbnMgdXAuCi0rICoKLSsgKiBSZXR1cm5zIDAgb24g c3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuCi0rICovCi0raW50IG5mc2Rf bmxfY21kX3N0cihpbnQgY21kLCBpbnQgYXR0ciwgY29uc3QgY2hhciAqdmFsdWUpOwotKwotKyNl bHNlCi0rCi0rc3RhdGljIGlubGluZSBpbnQgbmZzZF9ubF9jbWRfc3RyKGludCBjbWQsIGludCBh dHRyLCBjb25zdCBjaGFyICp2YWx1ZSkKLSt7Ci0rCXJldHVybiAtRU5PU1lTOwotK30KLSsKLSsj ZW5kaWYgLyogSEFWRV9ORlNEX05FVExJTksgKi8KLSsjZW5kaWYgLyogTkZTX1VUSUxTX05GU0RO TF9IICovCi1kaWZmIC0tZ2l0IGEvc3VwcG9ydC9uZnMvTWFrZWZpbGUuYW0gYi9zdXBwb3J0L25m cy9NYWtlZmlsZS5hbQotaW5kZXggNWJmZDcxYTkuLjY0YWQ1ZDA3IDEwMDY0NAotLS0tIGEvc3Vw cG9ydC9uZnMvTWFrZWZpbGUuYW0KLSsrKyBiL3N1cHBvcnQvbmZzL01ha2VmaWxlLmFtCi1AQCAt MTEsNiArMTEsMTMgQEAgbGlibmZzX2xhX1NPVVJDRVMgPSBleHBvcnRzLmMgcm10YWIuYyB4aW8u YyBycGNtaXNjLmMgcnBjZGlzcGF0Y2guYyBcCi0gbGlibmZzX2xhX0xJQkFERCA9IGxpYm5mc2Nv bmYubGEgLWx1dWlkCi0gbGlibmZzX2xhX0NQUEZMQUdTID0gJChBTV9DUFBGTEFHUykgJChDUFBG TEFHUykgLUkkKHRvcF9zcmNkaXIpL3N1cHBvcnQvcmVleHBvcnQKLSAKLStpZiBDT05GSUdfTkZT RENUTAotK2xpYm5mc19sYV9TT1VSQ0VTICs9IG5mc2RubC5jCi0rbGlibmZzX2xhX0NQUEZMQUdT ICs9ICQoTElCTkwzX0NGTEFHUykgJChMSUJOTEdFTkwzX0NGTEFHUykgXAotKwkJICAgICAgLUkk KHRvcF9zcmNkaXIpL3V0aWxzL25mc2RjdGwKLStsaWJuZnNfbGFfTElCQUREICs9ICQoTElCTkwz X0xJQlMpICQoTElCTkxHRU5MM19MSUJTKQotK2VuZGlmCi0rCi0gbGlibmZzY29uZl9sYV9TT1VS Q0VTID0gY29uZmZpbGUuYyB4bG9nLmMKLSAKLSBNQUlOVEFJTkVSQ0xFQU5GSUxFUyA9IE1ha2Vm aWxlLmluCi1kaWZmIC0tZ2l0IGEvc3VwcG9ydC9uZnMvZmhfa2V5X2ZpbGUuYyBiL3N1cHBvcnQv bmZzL2ZoX2tleV9maWxlLmMKLWluZGV4IDVmNWVhZmMxLi44MWVhMTUwMCAxMDA2NDQKLS0tLSBh L3N1cHBvcnQvbmZzL2ZoX2tleV9maWxlLmMKLSsrKyBiL3N1cHBvcnQvbmZzL2ZoX2tleV9maWxl LmMKLUBAIC0yNiw2ICsyNiw3IEBACi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRl IDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0g I2luY2x1ZGUgPHV1aWQvdXVpZC5oPgotIAotICNpbmNsdWRlICJuZnNsaWIuaCIKLWRpZmYgLS1n aXQgYS9zdXBwb3J0L25mcy9nZXRwb3J0LmMgYi9zdXBwb3J0L25mcy9nZXRwb3J0LmMKLWluZGV4 IDgxM2Y3YmY5Li42MDhlMTg1YiAxMDA2NDQKLS0tLSBhL3N1cHBvcnQvbmZzL2dldHBvcnQuYwot KysrIGIvc3VwcG9ydC9uZnMvZ2V0cG9ydC5jCi1AQCAtNDUyLDExICs0NTIsMTIgQEAgY2hhciAq bmZzX3NvY2thZGRyMnVuaXZlcnNhbChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKnNhcCkKLSAJdWlu dDE2X3QgcG9ydDsKLSAJc2l6ZV90IGNvdW50OwotIAljaGFyICpyZXN1bHQ7Ci0tCWludCBsZW47 Ci0rCWludCBsZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyKTsKLSAKLSAJc3dpdGNoIChzYXAt PnNhX2ZhbWlseSkgewotIAljYXNlIEFGX0xPQ0FMOgotLQkJcmV0dXJuIHN0cm5kdXAoc3VuLT5z dW5fcGF0aCwgc2l6ZW9mKHN1bi0+c3VuX3BhdGgpKTsKLSsJCXNpemVfdCBwYXRoX2xlbiA9IGxl biAtIG9mZnNldG9mKHN0cnVjdCBzb2NrYWRkcl91biwgc3VuX3BhdGgpOwotKwkJcmV0dXJuIHN0 cm5kdXAoc3VuLT5zdW5fcGF0aCwgcGF0aF9sZW4pOwotIAljYXNlIEFGX0lORVQ6Ci0gCQlpZiAo aW5ldF9udG9wKEFGX0lORVQsIChjb25zdCB2b2lkICopJnNpbi0+c2luX2FkZHIuc19hZGRyLAot IAkJCQkJYnVmLCAoc29ja2xlbl90KXNpemVvZihidWYpKSA9PSBOVUxMKQotZGlmZiAtLWdpdCBh L3N1cHBvcnQvbmZzL25mc2RubC5jIGIvc3VwcG9ydC9uZnMvbmZzZG5sLmMKLW5ldyBmaWxlIG1v ZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMC4uZGVkMDM1YjkKLS0tLSAvZGV2L251bGwKLSsrKyBi L3N1cHBvcnQvbmZzL25mc2RubC5jCi1AQCAtMCwwICsxLDEyNSBAQAotKy8qCi0rICogbmZzZG5s LmMgLS0gc2VuZCBuZnNkIGdlbmVyaWMgbmV0bGluayBjb21tYW5kcwotKyAqCi0rICogSGVscGVy IHNoYXJlZCBieSBuZnNkY3RsIGFuZCBleHBvcnRmcy4KLSsgKi8KLSsKLSsjaWZkZWYgSEFWRV9D T05GSUdfSAotKyNpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8ZXJy bm8uaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rCi0rI2luY2x1ZGUgPG5ldGxpbmsvZ2VubC9n ZW5sLmg+Ci0rI2luY2x1ZGUgPG5ldGxpbmsvZ2VubC9jdHJsLmg+Ci0rI2luY2x1ZGUgPG5ldGxp bmsvbXNnLmg+Ci0rI2luY2x1ZGUgPG5ldGxpbmsvYXR0ci5oPgotKwotKyNpbmNsdWRlICJuZnNs aWIuaCIKLSsjaW5jbHVkZSAieGxvZy5oIgotKyNpbmNsdWRlICJuZnNkbmwuaCIKLSsKLSsjaWZk ZWYgVVNFX1NZU1RFTV9ORlNEX05FVExJTktfSAotKyNpbmNsdWRlIDxsaW51eC9uZnNkX25ldGxp bmsuaD4KLSsjZWxzZQotKyNpbmNsdWRlICJuZnNkX25ldGxpbmsuaCIKLSsjZW5kaWYKLSsKLSsj ZGVmaW5lIE5GU0ROTF9CVUZTSVpFCSg0MDk2KQotKwotK3N0YXRpYyBpbnQgZXJyb3JfaGFuZGxl cihzdHJ1Y3Qgc29ja2FkZHJfbmwgKlVOVVNFRChubGEpLCBzdHJ1Y3Qgbmxtc2dlcnIgKmVyciwK LSsJCQkgdm9pZCAqYXJnKQotK3sKLSsJaW50ICpyZXQgPSBhcmc7Ci0rCSpyZXQgPSBlcnItPmVy cm9yOwotKwlyZXR1cm4gTkxfU1RPUDsKLSt9Ci0rCi0rc3RhdGljIGludCBmaW5pc2hfaGFuZGxl cihzdHJ1Y3QgbmxfbXNnICpVTlVTRUQobXNnKSwgdm9pZCAqYXJnKQotK3sKLSsJaW50ICpyZXQg PSBhcmc7Ci0rCSpyZXQgPSAwOwotKwlyZXR1cm4gTkxfU0tJUDsKLSt9Ci0rCi0rc3RhdGljIGlu dCBhY2tfaGFuZGxlcihzdHJ1Y3QgbmxfbXNnICpVTlVTRUQobXNnKSwKLSsJCSAgICAgICB2b2lk ICphcmcpCi0rewotKwlpbnQgKnJldCA9IGFyZzsKLSsJKnJldCA9IDA7Ci0rCXJldHVybiBOTF9T VE9QOwotK30KLSsKLSsvKioKLSsgKiBuZnNkX25sX2NtZF9zdHIgLSBzZW5kIGFuIG5mc2QgbmV0 bGluayBjb21tYW5kIGNhcnJ5aW5nIGEgc3RyaW5nIGF0dHJpYnV0ZQotKyAqIEBjbWQ6ICAgTkZT RF9DTURfKiBjb21tYW5kIG51bWJlcgotKyAqIEBhdHRyOiAgTkZTRF9BXyogYXR0cmlidXRlIG51 bWJlcgotKyAqIEB2YWx1ZTogTlVMLXRlcm1pbmF0ZWQgc3RyaW5nIHZhbHVlIGZvciB0aGUgYXR0 cmlidXRlCi0rICoKLSsgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm5v IG9uIGZhaWx1cmUuCi0rICovCi0raW50IG5mc2RfbmxfY21kX3N0cihpbnQgY21kLCBpbnQgYXR0 ciwgY29uc3QgY2hhciAqdmFsdWUpCi0rewotKwlzdHJ1Y3QgZ2VubG1zZ2hkciAqZ2hkcjsKLSsJ c3RydWN0IG5sX3NvY2sgKnNvY2s7Ci0rCXN0cnVjdCBubF9tc2cgKm1zZzsKLSsJc3RydWN0IG5s X2NiICpjYjsKLSsJaW50IGZhbWlseTsKLSsJaW50IHJldDsKLSsKLSsJc29jayA9IG5sX3NvY2tl dF9hbGxvYygpOwotKwlpZiAoIXNvY2spCi0rCQlyZXR1cm4gLUVOT01FTTsKLSsJaWYgKGdlbmxf Y29ubmVjdChzb2NrKSkgewotKwkJcmV0ID0gLUVDT05OUkVGVVNFRDsKLSsJCWdvdG8gb3V0X3Nv Y2s7Ci0rCX0KLSsJbmxfc29ja2V0X3NldF9idWZmZXJfc2l6ZShzb2NrLCBORlNETkxfQlVGU0la RSwgTkZTRE5MX0JVRlNJWkUpOwotKwotKwlmYW1pbHkgPSBnZW5sX2N0cmxfcmVzb2x2ZShzb2Nr LCBORlNEX0ZBTUlMWV9OQU1FKTsKLSsJaWYgKGZhbWlseSA8IDApIHsKLSsJCXJldCA9IGZhbWls eTsKLSsJCWdvdG8gb3V0X3NvY2s7Ci0rCX0KLSsKLSsJbXNnID0gbmxtc2dfYWxsb2MoKTsKLSsJ aWYgKCFtc2cpIHsKLSsJCXJldCA9IC1FTk9NRU07Ci0rCQlnb3RvIG91dF9zb2NrOwotKwl9Ci0r CWlmICghZ2VubG1zZ19wdXQobXNnLCAwLCAwLCBmYW1pbHksIDAsIDAsIDAsIDApKSB7Ci0rCQly ZXQgPSAtRU5PTUVNOwotKwkJZ290byBvdXRfbXNnOwotKwl9Ci0rCi0rCWdoZHIgPSBubG1zZ19k YXRhKG5sbXNnX2hkcihtc2cpKTsKLSsJZ2hkci0+Y21kID0gKF9fdTgpY21kOwotKwlubGFfcHV0 X3N0cmluZyhtc2csIGF0dHIsIHZhbHVlKTsKLSsKLSsJY2IgPSBubF9jYl9hbGxvYyhOTF9DQl9D VVNUT00pOwotKwlpZiAoIWNiKSB7Ci0rCQlyZXQgPSAtRU5PTUVNOwotKwkJZ290byBvdXRfbXNn OwotKwl9Ci0rCi0rCXJldCA9IG5sX3NlbmRfYXV0byhzb2NrLCBtc2cpOwotKwlpZiAocmV0IDwg MCkKLSsJCWdvdG8gb3V0X2NiOwotKwotKwlyZXQgPSAxOwotKwlubF9jYl9lcnIoY2IsIE5MX0NC X0NVU1RPTSwgZXJyb3JfaGFuZGxlciwgJnJldCk7Ci0rCW5sX2NiX3NldChjYiwgTkxfQ0JfRklO SVNILCBOTF9DQl9DVVNUT00sIGZpbmlzaF9oYW5kbGVyLCAmcmV0KTsKLSsJbmxfY2Jfc2V0KGNi LCBOTF9DQl9BQ0ssIE5MX0NCX0NVU1RPTSwgYWNrX2hhbmRsZXIsICZyZXQpOwotKwotKwl3aGls ZSAocmV0ID4gMCkKLSsJCW5sX3JlY3Ztc2dzKHNvY2ssIGNiKTsKLSsKLStvdXRfY2I6Ci0rCW5s X2NiX3B1dChjYik7Ci0rb3V0X21zZzoKLSsJbmxtc2dfZnJlZShtc2cpOwotK291dF9zb2NrOgot KwlubF9zb2NrZXRfZnJlZShzb2NrKTsKLSsJcmV0dXJuIHJldDsKLSt9Ci1kaWZmIC0tZ2l0IGEv c3VwcG9ydC9uZnNpZG1hcC9saWJuZnNpZG1hcC5jIGIvc3VwcG9ydC9uZnNpZG1hcC9saWJuZnNp ZG1hcC5jCi1pbmRleCBlMTQ3NTg3OS4uNTM3N2EwZWUgMTAwNjQ0Ci0tLS0gYS9zdXBwb3J0L25m c2lkbWFwL2xpYm5mc2lkbWFwLmMKLSsrKyBiL3N1cHBvcnQvbmZzaWRtYXAvbGlibmZzaWRtYXAu YwotQEAgLTQwOSwxNSArNDA5LDE0IEBAIGludCBuZnM0X2luaXRfbmFtZV9tYXBwaW5nKGNoYXIg KmNvbmZmaWxlKQotIAlpZiAoaWRtYXBfdmVyYm9zaXR5ID49IDEpIHsKLSAJCXN0cnVjdCBjb25m X2xpc3Rfbm9kZSAqcjsKLSAJCWNoYXIgKmJ1ZiA9IE5VTEw7Ci0tCQlpbnQgc2l6PTA7Ci0rCQlz aXplX3Qgc2l6ID0gMTsKLSAKLSAJCWlmIChsb2NhbF9yZWFsbXMpIHsKLSAJCQlUQUlMUV9GT1JF QUNIKHIsICZsb2NhbF9yZWFsbXMtPmZpZWxkcywgbGluaykgewotIAkJCQlzaXogKz0gKHN0cmxl bihyLT5maWVsZCkrNCk7Ci0gCQkJfQotLQkJCWJ1ZiA9IG1hbGxvYyhzaXopOwotKwkJCWJ1ZiA9 IGNhbGxvYygxLCBzaXopOwotIAkJCWlmIChidWYpIHsKLS0JCQkJKmJ1ZiA9IDA7Ci0gCQkJCVRB SUxRX0ZPUkVBQ0gociwgJmxvY2FsX3JlYWxtcy0+ZmllbGRzLCBsaW5rKSB7Ci0gCQkJCQlzcHJp bnRmKGJ1ZitzdHJsZW4oYnVmKSwgIiclcycgIiwgci0+ZmllbGQpOwotIAkJCQl9Ci1kaWZmIC0t Z2l0IGEvc3VwcG9ydC9yZWV4cG9ydC9iYWNrZW5kX3NxbGl0ZS5jIGIvc3VwcG9ydC9yZWV4cG9y dC9iYWNrZW5kX3NxbGl0ZS5jCi1pbmRleCAwZWI1ZWEzNy4uYTFlOTgxZTQgMTAwNjQ0Ci0tLS0g YS9zdXBwb3J0L3JlZXhwb3J0L2JhY2tlbmRfc3FsaXRlLmMKLSsrKyBiL3N1cHBvcnQvcmVleHBv cnQvYmFja2VuZF9zcWxpdGUuYwotQEAgLTksNiArOSw4IEBACi0gI2luY2x1ZGUgPHN0cmluZy5o PgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLSsjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KLSsK LSAjaWZkZWYgSEFWRV9HRVRSQU5ET00KLSAjIGluY2x1ZGUgPHN5cy9yYW5kb20uaD4KLSAjIGlm ICFkZWZpbmVkKFNZU19nZXRyYW5kb20pICYmIGRlZmluZWQoX19OUl9nZXRyYW5kb20pCi1kaWZm IC0tZ2l0IGEvdG9vbHMvbmZzLWlvc3RhdC9uZnMtaW9zdGF0LnB5IGIvdG9vbHMvbmZzLWlvc3Rh dC9uZnMtaW9zdGF0LnB5Ci1pbmRleCA2OWQyNGExMS4uYWYwNGFhYzUgMTAwNzU1Ci0tLS0gYS90 b29scy9uZnMtaW9zdGF0L25mcy1pb3N0YXQucHkKLSsrKyBiL3Rvb2xzL25mcy1pb3N0YXQvbmZz LWlvc3RhdC5weQotQEAgLTMyNyw3ICszMjcsNyBAQCBjbGFzcyBEZXZpY2VEYXRhOgotICAgICAg ICAgICAgIHByaW50KCkKLSAgICAgICAgICAgICBwcmludCgnJWQgY29uZ2VzdGlvbiB3YWl0cycg JSBjb25nZXN0aW9ud2FpdHMpCi0gCi0tICAgIGRlZiBfX3ByaW50X3JwY19vcF9zdGF0cyhzZWxm LCBvcCwgc2FtcGxlX3RpbWUpOgotKyAgICBkZWYgX19wcmludF9ycGNfb3Bfc3RhdHMoc2VsZiwg b3AsIHNhbXBsZV90aW1lLCB1c2VfbWI9RmFsc2UpOgotICAgICAgICAgIiIiUHJpbnQgZ2VuZXJp YyBzdGF0cyBmb3Igb25lIFJQQyBvcAotICAgICAgICAgIiIiCi0gICAgICAgICBpZiBvcCBub3Qg aW4gc2VsZi5fX3JwY19kYXRhOgotQEAgLTM0Myw5ICszNDMsMTkgQEAgY2xhc3MgRGV2aWNlRGF0 YToKLSAgICAgICAgIGlmIGxlbihycGNfc3RhdHMpID49IDk6Ci0gICAgICAgICAgICAgZXJycyA9 IGZsb2F0KHJwY19zdGF0c1s4XSkKLSAKLSsgICAgICAgICMgc2NhbGUgdG8gTUIgaWYgcmVxdWVz dGVkCi0rICAgICAgICBpZiB1c2VfbWI6Ci0rICAgICAgICAgICAgdGhyb3VnaHB1dCA9IGtpbG9i eXRlcyAvIDEwMjQuMAotKyAgICAgICAgICAgIHRocm91Z2hwdXRfbGFiZWwgPSAnTUIvcycKLSsg ICAgICAgICAgICBwZXJfb3BfbGFiZWwgPSAnTUIvb3AnCi0rICAgICAgICBlbHNlOgotKyAgICAg ICAgICAgIHRocm91Z2hwdXQgPSBraWxvYnl0ZXMKLSsgICAgICAgICAgICB0aHJvdWdocHV0X2xh YmVsID0gJ2tCL3MnCi0rICAgICAgICAgICAgcGVyX29wX2xhYmVsID0gJ2tCL29wJwotKwotICAg ICAgICAgIyBwcmV2ZW50IGZsb2F0aW5nIHBvaW50IGV4Y2VwdGlvbnMKLSAgICAgICAgIGlmIG9w cyAhPSAwOgotLSAgICAgICAgICAgIGtiX3Blcl9vcCA9IGtpbG9ieXRlcyAvIG9wcwotKyAgICAg ICAgICAgIHVuaXRfcGVyX29wID0gdGhyb3VnaHB1dCAvIG9wcwotICAgICAgICAgICAgIHJldHJh bnNfcGVyY2VudCA9IChyZXRyYW5zICogMTAwKSAvIG9wcwotICAgICAgICAgICAgIHJ0dF9wZXJf b3AgPSBydHQgLyBvcHMKLSAgICAgICAgICAgICBleGVfcGVyX29wID0gZXhlIC8gb3BzCi1AQCAt MzUzLDcgKzM2Myw3IEBAIGNsYXNzIERldmljZURhdGE6Ci0gICAgICAgICAgICAgaWYgbGVuKHJw Y19zdGF0cykgPj0gOToKLSAgICAgICAgICAgICAgICAgZXJyc19wZXJjZW50ID0gKGVycnMgKiAx MDApIC8gb3BzCi0gICAgICAgICBlbHNlOgotLSAgICAgICAgICAgIGtiX3Blcl9vcCA9IDAuMAot KyAgICAgICAgICAgIHVuaXRfcGVyX29wID0gMC4wCi0gICAgICAgICAgICAgcmV0cmFuc19wZXJj ZW50ID0gMC4wCi0gICAgICAgICAgICAgcnR0X3Blcl9vcCA9IDAuMAotICAgICAgICAgICAgIGV4 ZV9wZXJfb3AgPSAwLjAKLUBAIC0zNjQsOCArMzc0LDggQEAgY2xhc3MgRGV2aWNlRGF0YToKLSAg ICAgICAgIG9wICs9ICc6JwotICAgICAgICAgcHJpbnQoZm9ybWF0KG9wLmxvd2VyKCksICc8MTZz JyksIGVuZD0nJykKLSAgICAgICAgIHByaW50KGZvcm1hdCgnb3BzL3MnLCAnPjhzJyksIGVuZD0n JykKLS0gICAgICAgIHByaW50KGZvcm1hdCgna0IvcycsICc+MTZzJyksIGVuZD0nJykKLS0gICAg ICAgIHByaW50KGZvcm1hdCgna0Ivb3AnLCAnPjE2cycpLCBlbmQ9JycpCi0rICAgICAgICBwcmlu dChmb3JtYXQodGhyb3VnaHB1dF9sYWJlbCwgJz4xNnMnKSwgZW5kPScnKQotKyAgICAgICAgcHJp bnQoZm9ybWF0KHBlcl9vcF9sYWJlbCwgJz4xNnMnKSwgZW5kPScnKQotICAgICAgICAgcHJpbnQo Zm9ybWF0KCdyZXRyYW5zJywgJz4xNnMnKSwgZW5kPScnKQotICAgICAgICAgcHJpbnQoZm9ybWF0 KCdhdmcgUlRUIChtcyknLCAnPjE2cycpLCBlbmQ9JycpCi0gICAgICAgICBwcmludChmb3JtYXQo J2F2ZyBleGUgKG1zKScsICc+MTZzJyksIGVuZD0nJykKLUBAIC0zNzUsOCArMzg1LDggQEAgY2xh c3MgRGV2aWNlRGF0YToKLSAgICAgICAgIHByaW50KCkKLSAKLSAgICAgICAgIHByaW50KGZvcm1h dCgob3BzIC8gc2FtcGxlX3RpbWUpLCAnPjI0LjNmJyksIGVuZD0nJykKLS0gICAgICAgIHByaW50 KGZvcm1hdCgoa2lsb2J5dGVzIC8gc2FtcGxlX3RpbWUpLCAnPjE2LjNmJyksIGVuZD0nJykKLS0g ICAgICAgIHByaW50KGZvcm1hdChrYl9wZXJfb3AsICc+MTYuM2YnKSwgZW5kPScnKQotKyAgICAg ICAgcHJpbnQoZm9ybWF0KCh0aHJvdWdocHV0IC8gc2FtcGxlX3RpbWUpLCAnPjE2LjNmJyksIGVu ZD0nJykKLSsgICAgICAgIHByaW50KGZvcm1hdCh1bml0X3Blcl9vcCwgJz4xNi4zZicpLCBlbmQ9 JycpCi0gICAgICAgICByZXRyYW5zbWl0cyA9ICd7MDo+MTAuMGZ9ICh7MTo+My4xZn0lKScuZm9y bWF0KHJldHJhbnMsIHJldHJhbnNfcGVyY2VudCkuc3RyaXAoKQotICAgICAgICAgcHJpbnQoZm9y bWF0KHJldHJhbnNtaXRzLCAnPjE2JyksIGVuZD0nJykKLSAgICAgICAgIHByaW50KGZvcm1hdChy dHRfcGVyX29wLCAnPjE2LjNmJyksIGVuZD0nJykKLUBAIC0zOTUsOSArNDA1LDExIEBAIGNsYXNz IERldmljZURhdGE6Ci0gICAgICAgICAgICAgc2FtcGxlX3RpbWUgPSAxOwotICAgICAgICAgcmV0 dXJuIChzZW5kcyAvIHNhbXBsZV90aW1lKQotIAotLSAgICBkZWYgZGlzcGxheV9pb3N0YXRzKHNl bGYsIHNhbXBsZV90aW1lLCB3aGljaCk6Ci0rICAgIGRlZiBkaXNwbGF5X2lvc3RhdHMoc2VsZiwg c2FtcGxlX3RpbWUsIG9wdGlvbnMpOgotICAgICAgICAgIiIiRGlzcGxheSBORlMgYW5kIFJQQyBz dGF0cyBpbiBhbiBpb3N0YXQtbGlrZSB3YXkKLSAgICAgICAgICIiIgotKyAgICAgICAgd2hpY2gg PSBvcHRpb25zLndoaWNoCi0rICAgICAgICB1c2VfbWIgPSBvcHRpb25zLm1lZ2FieXRlcwotICAg ICAgICAgc2VuZHMgPSBmbG9hdChzZWxmLl9fcnBjX2RhdGFbJ3JwY3NlbmRzJ10pCi0gICAgICAg ICBpZiBzYW1wbGVfdGltZSA9PSAwOgotICAgICAgICAgICAgIHNhbXBsZV90aW1lID0gZmxvYXQo c2VsZi5fX25mc19kYXRhWydhZ2UnXSkKLUBAIC00MjMsMjEgKzQzNSwyMSBAQCBjbGFzcyBEZXZp Y2VEYXRhOgotICAgICAgICAgcHJpbnQoKQotIAotICAgICAgICAgaWYgd2hpY2ggPT0gMDoKLS0g ICAgICAgICAgICBzZWxmLl9fcHJpbnRfcnBjX29wX3N0YXRzKCdSRUFEJywgc2FtcGxlX3RpbWUp Ci0tICAgICAgICAgICAgc2VsZi5fX3ByaW50X3JwY19vcF9zdGF0cygnV1JJVEUnLCBzYW1wbGVf dGltZSkKLSsgICAgICAgICAgICBzZWxmLl9fcHJpbnRfcnBjX29wX3N0YXRzKCdSRUFEJywgc2Ft cGxlX3RpbWUsIHVzZV9tYikKLSsgICAgICAgICAgICBzZWxmLl9fcHJpbnRfcnBjX29wX3N0YXRz KCdXUklURScsIHNhbXBsZV90aW1lLCB1c2VfbWIpCi0gICAgICAgICBlbGlmIHdoaWNoID09IDE6 Ci0tICAgICAgICAgICAgc2VsZi5fX3ByaW50X3JwY19vcF9zdGF0cygnR0VUQVRUUicsIHNhbXBs ZV90aW1lKQotLSAgICAgICAgICAgIHNlbGYuX19wcmludF9ycGNfb3Bfc3RhdHMoJ0FDQ0VTUycs IHNhbXBsZV90aW1lKQotKyAgICAgICAgICAgIHNlbGYuX19wcmludF9ycGNfb3Bfc3RhdHMoJ0dF VEFUVFInLCBzYW1wbGVfdGltZSwgdXNlX21iKQotKyAgICAgICAgICAgIHNlbGYuX19wcmludF9y cGNfb3Bfc3RhdHMoJ0FDQ0VTUycsIHNhbXBsZV90aW1lLCB1c2VfbWIpCi0gICAgICAgICAgICAg c2VsZi5fX3ByaW50X2F0dHJfY2FjaGVfc3RhdHMoc2FtcGxlX3RpbWUpCi0gICAgICAgICBlbGlm IHdoaWNoID09IDI6Ci0tICAgICAgICAgICAgc2VsZi5fX3ByaW50X3JwY19vcF9zdGF0cygnTE9P S1VQJywgc2FtcGxlX3RpbWUpCi0tICAgICAgICAgICAgc2VsZi5fX3ByaW50X3JwY19vcF9zdGF0 cygnUkVBRERJUicsIHNhbXBsZV90aW1lKQotKyAgICAgICAgICAgIHNlbGYuX19wcmludF9ycGNf b3Bfc3RhdHMoJ0xPT0tVUCcsIHNhbXBsZV90aW1lLCB1c2VfbWIpCi0rICAgICAgICAgICAgc2Vs Zi5fX3ByaW50X3JwY19vcF9zdGF0cygnUkVBRERJUicsIHNhbXBsZV90aW1lLCB1c2VfbWIpCi0g ICAgICAgICAgICAgaWYgJ1JFQURESVJQTFVTJyBpbiBzZWxmLl9fcnBjX2RhdGE6Ci0tICAgICAg ICAgICAgICAgIHNlbGYuX19wcmludF9ycGNfb3Bfc3RhdHMoJ1JFQURESVJQTFVTJywgc2FtcGxl X3RpbWUpCi0rICAgICAgICAgICAgICAgIHNlbGYuX19wcmludF9ycGNfb3Bfc3RhdHMoJ1JFQURE SVJQTFVTJywgc2FtcGxlX3RpbWUsIHVzZV9tYikKLSAgICAgICAgICAgICBzZWxmLl9fcHJpbnRf ZGlyX2NhY2hlX3N0YXRzKHNhbXBsZV90aW1lKQotICAgICAgICAgZWxpZiB3aGljaCA9PSAzOgot LSAgICAgICAgICAgIHNlbGYuX19wcmludF9ycGNfb3Bfc3RhdHMoJ1JFQUQnLCBzYW1wbGVfdGlt ZSkKLS0gICAgICAgICAgICBzZWxmLl9fcHJpbnRfcnBjX29wX3N0YXRzKCdXUklURScsIHNhbXBs ZV90aW1lKQotKyAgICAgICAgICAgIHNlbGYuX19wcmludF9ycGNfb3Bfc3RhdHMoJ1JFQUQnLCBz YW1wbGVfdGltZSwgdXNlX21iKQotKyAgICAgICAgICAgIHNlbGYuX19wcmludF9ycGNfb3Bfc3Rh dHMoJ1dSSVRFJywgc2FtcGxlX3RpbWUsIHVzZV9tYikKLSAgICAgICAgICAgICBzZWxmLl9fcHJp bnRfcGFnZV9zdGF0cyhzYW1wbGVfdGltZSkKLSAKLSAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2go KQotQEAgLTUwMCw3ICs1MTIsNyBAQCBkZWYgcHJpbnRfaW9zdGF0X3N1bW1hcnkob2xkLCBuZXcs IGRldmljZXMsIHRpbWUsIG9wdGlvbnMpOgotIAotICAgICBjb3VudCA9IDEKLSAgICAgZm9yIGRl dmljZSBpbiBkZXZpY2VzOgotLSAgICAgICAgZGlzcGxheV9zdGF0c1tkZXZpY2VdLmRpc3BsYXlf aW9zdGF0cyh0aW1lLCBvcHRpb25zLndoaWNoKQotKyAgICAgICAgZGlzcGxheV9zdGF0c1tkZXZp Y2VdLmRpc3BsYXlfaW9zdGF0cyh0aW1lLCBvcHRpb25zKQotIAotICAgICAgICAgY291bnQgKz0g MQotICAgICAgICAgaWYgKGNvdW50ID4gb3B0aW9ucy5saXN0KToKLUBAIC01ODUsNiArNTk3LDEx IEBAIGNsaWVudCBhcmUgbGlzdGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBl PSJpbnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSJsaXN0IiwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ib25seSBwcmludCBzdGF0cyBmb3IgZmlyc3Qg TElTVCBtb3VudCBwb2ludHMiKQotKyAgICBkaXNwbGF5Z3JvdXAuYWRkX29wdGlvbignLW0nLCAn LS1tZWdhYnl0ZXMnLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3Jl X3RydWUiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSJtZWdhYnl0ZXMiLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBoZWxwPSJkaXNwbGF5IHRocm91Z2hwdXQgaW4gbWVnYWJ5dGVzIHBl ciBzZWNvbmQgKE1CL3MpIGluc3RlYWQgb2Yga2lsb2J5dGVzIHBlciBzZWNvbmQgKGtCL3MpIikK LSAgICAgcGFyc2VyLmFkZF9vcHRpb25fZ3JvdXAoZGlzcGxheWdyb3VwKQotIAotICAgICAob3B0 aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncyhzeXMuYXJndikKLWRpZmYgLS1naXQgYS90 b29scy9uZnMtaW9zdGF0L25mc2lvc3RhdC5tYW4gYi90b29scy9uZnMtaW9zdGF0L25mc2lvc3Rh dC5tYW4KLWluZGV4IDEwNGM3YWI0Li40ZjI0MzE4ZCAxMDA2NDQKLS0tLSBhL3Rvb2xzL25mcy1p b3N0YXQvbmZzaW9zdGF0Lm1hbgotKysrIGIvdG9vbHMvbmZzLWlvc3RhdC9uZnNpb3N0YXQubWFu Ci1AQCAtNTYsMTYgKzU2LDE2IEBAIFRoaXMgaXMgdGhlIGxlbmd0aCBvZiB0aGUgYmFja2xvZyBx dWV1ZS4KLSAuUkUKLSAuUkUKLSAuUlMgOAotLS0gXGZCa0Ivc1xmUgotKy0gXGZCa0IvcyAoTUIv cylcZlIKLSAuUlMKLS1UaGlzIGlzIHRoZSBudW1iZXIgb2Yga0Igd3JpdHRlbi9yZWFkIHBlciBz ZWNvbmQuCi0rVGhpcyBpcyB0aGUgbnVtYmVyIG9mIGtCIChvciBNQikgd3JpdHRlbi9yZWFkIHBl ciBzZWNvbmQuCi0gLlJFCi0gLlJFCi0gLlJFCi0gLlJTIDgKLS0tIFxmQmtCL29wXGZSCi0rLSBc ZkJrQi9vcCAoTUIvb3ApXGZSCi0gLlJTCi0tVGhpcyBpcyB0aGUgbnVtYmVyIG9mIGtCIHdyaXR0 ZW4vcmVhZCBwZXIgZWFjaCBvcGVyYXRpb24uCi0rVGhpcyBpcyB0aGUgbnVtYmVyIG9mIGtCIChv ciBNQikgd3JpdHRlbi9yZWFkIHBlciBlYWNoIG9wZXJhdGlvbi4KLSAuUkUKLSAuUkUKLSAuUkUK LUBAIC0xMjIsNiArMTIyLDkgQEAgc2hvd3MgaGVscCBtZXNzYWdlIGFuZCBleGl0Ci0gLkIgXC1s IExJU1Qgb3IgIiBcLVwtbGlzdD1MSVNUIAotIG9ubHkgcHJpbnQgc3RhdHMgZm9yIGZpcnN0IExJ U1QgbW91bnQgcG9pbnRzCi0gLlRQCi0rLkIgXC1tIG9yICIgXC1cLW1lZ2FieXRlcwotK2Rpc3Bs YXkgdGhyb3VnaHB1dCBpbiBtZWdhYnl0ZXMgcGVyIHNlY29uZAotKy5UUAotIC5CIFwtcCAiIG9y ICIgXC1cLXBhZ2UKLSBkaXNwbGF5cyBzdGF0aXN0aWNzIHJlbGF0ZWQgdG8gdGhlIHBhZ2UgY2Fj aGUKLSAuVFAKLWRpZmYgLS1naXQgYS91dGlscy9leHBvcnRmcy9leHBvcnRmcy5jIGIvdXRpbHMv ZXhwb3J0ZnMvZXhwb3J0ZnMuYwotaW5kZXggOTNmMGJjZDcuLjc2OGQyZGI3IDEwMDY0NAotLS0t IGEvdXRpbHMvZXhwb3J0ZnMvZXhwb3J0ZnMuYwotKysrIGIvdXRpbHMvZXhwb3J0ZnMvZXhwb3J0 ZnMuYwotQEAgLTM5LDYgKzM5LDE1IEBACi0gI2luY2x1ZGUgInhsb2cuaCIKLSAjaW5jbHVkZSAi Y29uZmZpbGUuaCIKLSAjaW5jbHVkZSAicmVleHBvcnQuaCIKLSsjaW5jbHVkZSAibmZzZG5sLmgi Ci0rCi0rI2lmZGVmIEhBVkVfTkZTRF9ORVRMSU5LCi0rI2lmZGVmIFVTRV9TWVNURU1fTkZTRF9O RVRMSU5LX0gKLSsjaW5jbHVkZSA8bGludXgvbmZzZF9uZXRsaW5rLmg+Ci0rI2Vsc2UKLSsjaW5j bHVkZSAibmZzZF9uZXRsaW5rLmgiCi0rI2VuZGlmCi0rI2VuZGlmCi0gCi0gI2luY2x1ZGUgPG5l dGxpbmsvZ2VubC9nZW5sLmg+Ci0gI2luY2x1ZGUgPG5ldGxpbmsvZ2VubC9jdHJsLmg+Ci1AQCAt NjMsNiArNzIsNyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlX2xvY2tmaWxlKHZvaWQpOwotIAotIHN0 YXRpYyBjb25zdCBjaGFyICpsb2NrZmlsZSA9IEVYUF9MT0NLRklMRTsKLSBzdGF0aWMgaW50IF9s b2NrZmQgPSAtMTsKLStzdGF0aWMgaW50IGZfdW5leHBvcnRfYWxsOwotIAotIC8qCi0gICogSWYg d2UgYXJlbid0IGNhcmVmdWwsIGNoYW5nZXMgbWFkZSBieSBleHBvcnRmcyBjYW4gYmUgbG9zdAot QEAgLTI0Niw3ICsyNTYsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJICogZG9u J3QgY2FyZSBhYm91dCB3aGF0IHNob3VsZCBiZSBleHBvcnRlZCwgYXMgdGhhdAotIAkgKiBtYXkg cmVxdWlyZSBETlMgbG9va3Vwcy4uCi0gCSAqLwotLQlpZiAoISAoICFmX2V4cG9ydCAmJiBmX2Fs bCkpIHsKLSsJZl91bmV4cG9ydF9hbGwgPSAhZl9leHBvcnQgJiYgZl9hbGw7Ci0rCWlmICghZl91 bmV4cG9ydF9hbGwpIHsKLSAJCS8qIG5vdGU6IHh0YWJfKl9yZWFkIGRvZXMgbm90IHVwZGF0ZSBl bnRyaWVzIGlmIHRoZXkgYWxyZWFkeSBleGlzdCwKLSAJCSAqIHNvIHRoaXMgd2lsbCBub3QgbG9z ZSBuZXcgb3B0aW9ucwotIAkJICovCi1AQCAtMzgwLDYgKzM5MSwyNiBAQCBleHBvcnRmcyhjaGFy ICphcmcsIGNoYXIgKm9wdGlvbnMsIGludCB2ZXJib3NlKQotIAkJeGxvZyhMX0VSUk9SLCAiSW52 YWxpZCBleHBvcnQgc3ludGF4OiAlcyIsIGFyZyk7Ci0gfQotIAotKy8qCi0rICogQ2hlY2sgd2hl dGhlciBhbnkgYWN0aXZlIGV4cG9ydCByZW1haW5zIGZvciB0aGUgZ2l2ZW4gcGF0aCBhY3Jvc3MK LSsgKiBhbGwgY2xpZW50IHR5cGVzLiAgUmV0dXJucyB0cnVlIGlmIGF0IGxlYXN0IG9uZSBleHBv cnQgc3RpbGwgaGFzCi0rICogbV94dGFiZW50IHNldC4KLSsgKi8KLStzdGF0aWMgaW50Ci0rcGF0 aF9zdGlsbF9leHBvcnRlZChjb25zdCBjaGFyICpwYXRoLCBzaXplX3QgbmxlbikKLSt7Ci0rCW5m c19leHBvcnQgKmV4cDsKLSsJaW50IGk7Ci0rCi0rCWZvciAoaSA9IDA7IGkgPCBNQ0xfTUFYVFlQ RVM7IGkrKykKLSsJCWZvciAoZXhwID0gZXhwb3J0bGlzdFtpXS5wX2hlYWQ7IGV4cDsgZXhwID0g ZXhwLT5tX25leHQpCi0rCQkJaWYgKGV4cC0+bV94dGFiZW50ICYmCi0rCQkJICAgIHN0cmxlbihl eHAtPm1fZXhwb3J0LmVfcGF0aCkgPT0gbmxlbiAmJgotKwkJCSAgICBzdHJuY21wKHBhdGgsIGV4 cC0+bV9leHBvcnQuZV9wYXRoLCBubGVuKSA9PSAwKQotKwkJCQlyZXR1cm4gMTsKLSsJcmV0dXJu IDA7Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0gdW5leHBvcnRmc19wYXJzZWQoY2hhciAqaG5hbWUs IGNoYXIgKnBhdGgsIGludCB2ZXJib3NlKQotIHsKLUBAIC00MzQsOSArNDY1LDM5IEBAIHVuZXhw b3J0ZnNfcGFyc2VkKGNoYXIgKmhuYW1lLCBjaGFyICpwYXRoLCBpbnQgdmVyYm9zZSkKLSAJCWV4 cC0+bV9tYXlleHBvcnQgPSAwOwotIAkJc3VjY2VzcyA9IDE7Ci0gCX0KLS0JaWYgKCFzdWNjZXNz KQotKwlpZiAoIXN1Y2Nlc3MpIHsKLSAJCXhsb2coTF9FUlJPUiwgIkNvdWxkIG5vdCBmaW5kICcl czolcycgdG8gdW5leHBvcnQuIiwgaG5hbWUsIHBhdGgpOwotKwkJZ290byBvdXQ7Ci0rCX0KLSAK LSsJLyoKLSsJICogSWYgbm8gZXhwb3J0cyByZW1haW4gZm9yIHRoaXMgcGF0aCwgYXNrIHRoZSBr ZXJuZWwgdG8KLSsJICogcmV2b2tlIGFueSBORlN2NCBzdGF0ZSBhbmQgY2xvc2UgY2FjaGVkIGZp bGUgaGFuZGxlcwotKwkgKiBhc3NvY2lhdGVkIHdpdGggZXhwb3J0cyBvZiB0aGlzIHBhdGguICBU aGlzIGVuYWJsZXMgdGhlCi0rCSAqIHVuZGVybHlpbmcgZmlsZXN5c3RlbSB0byBiZSB1bm1vdW50 ZWQuCi0rCSAqCi0rCSAqIFNraXAgdGhpcyBkdXJpbmcgImV4cG9ydGZzIC11YSIgLS0gdGhhdCBp cyBhIHNodXRkb3duCi0rCSAqIG9wZXJhdGlvbi4gIENsaWVudHMgc2hvdWxkIHdhaXQgZm9yIG5m c2QgdG8gcmVzdGFydCBhbmQKLSsJICogcmVjbGFpbSBzdGF0ZSB0aHJvdWdoIHRoZSBncmFjZSBw ZXJpb2QgcmF0aGVyIHRoYW4KLSsJICogcmVjZWl2aW5nIE5GUzRFUlJfQURNSU5fUkVWT0tFRC4K LSsJICovCi0rI2lmZGVmIEhBVkVfTkZTRF9ORVRMSU5LCi0rCWlmICghZl91bmV4cG9ydF9hbGwg JiYgIXBhdGhfc3RpbGxfZXhwb3J0ZWQocGF0aCwgbmxlbikpIHsKLSsJCWNoYXIgcGF0aGJ1ZltO RlNfTUFYUEFUSExFTiArIDFdOwotKwkJaW50IHJldDsKLSsKLSsJCW1lbWNweShwYXRoYnVmLCBw YXRoLCBubGVuKTsKLSsJCXBhdGhidWZbbmxlbl0gPSAnXDAnOwotKwkJcmV0ID0gbmZzZF9ubF9j bWRfc3RyKE5GU0RfQ01EX1VOTE9DS19FWFBPUlQsCi0rCQkJCSAgICAgIE5GU0RfQV9VTkxPQ0tf RVhQT1JUX1BBVEgsCi0rCQkJCSAgICAgIHBhdGhidWYpOwotKwkJaWYgKHJldCAmJiByZXQgIT0g LUVOT1NZUykKLSsJCQl4bG9nKExfV0FSTklORywKLSsJCQkgICAgICJGYWlsZWQgdG8gcmVsZWFz ZSBzdGF0ZSBmb3IgJXM6ICVzIiwKLSsJCQkgICAgIHBhdGhidWYsIHN0cmVycm9yKC1yZXQpKTsK LSsJfQotKyNlbmRpZgotK291dDoKLSAJbmZzX2ZyZWVhZGRyaW5mbyhhaSk7Ci0gfQotIAotZGlm ZiAtLWdpdCBhL3V0aWxzL2V4cG9ydGZzL2V4cG9ydGZzLm1hbiBiL3V0aWxzL2V4cG9ydGZzL2V4 cG9ydGZzLm1hbgotaW5kZXggMzczN2VlODEuLmI1ZTBjNjNhIDEwMDY0NAotLS0tIGEvdXRpbHMv ZXhwb3J0ZnMvZXhwb3J0ZnMubWFuCi0rKysgYi91dGlscy9leHBvcnRmcy9leHBvcnRmcy5tYW4K LUBAIC0yNTYsNiArMjU2LDIzIEBAIHBhaXIuIFRoaXMgZGVsZXRlcyB0aGUgc3BlY2lmaWVkIGVu dHJ5IGZyb20KLSAuSSAvdmFyL2xpYi9uZnMvZXRhYgotIGFuZCByZW1vdmVzIHRoZSBjb3JyZXNw b25kaW5nIGtlcm5lbCBlbnRyeSAoaWYgYW55KS4KLSAuUFAKLStXaGVuIHRoZSBsYXN0IGNsaWVu dCBmb3IgYSBnaXZlbiBleHBvcnQgcGF0aCBpcyB1bmV4cG9ydGVkLAotKy5CIGV4cG9ydGZzCi0r c2lnbmFscyB0aGUga2VybmVsIHRvIHJldm9rZSBORlN2NCBzdGF0ZSAob3BlbnMsIGxvY2tzLCBh bmQKLStkZWxlZ2F0aW9ucykgYW5kIHJlbGVhc2UgY2FjaGVkIHN0YXRlIGZvciB0aGF0IHBhdGgu Ci0rV2l0aG91dCB0aGlzIHJldm9jYXRpb24sIHJldGFpbmVkIHN0YXRlIHdvdWxkIHByZXZlbnQg dGhlCi0rdW5kZXJseWluZyBmaWxlc3lzdGVtIGZyb20gYmVpbmcgdW5tb3VudGVkLgotK0FmZmVj dGVkIGNsaWVudHMgcmVjZWl2ZQotKy5CIE5GUzRFUlJfQURNSU5fUkVWT0tFRAotK2Vycm9ycyBm b3Igb3BlcmF0aW9ucyB0aGF0IHVzZSByZXZva2VkIHN0YXRlLgotKy5QUAotKy5CICJleHBvcnRm cyBcLXVhIgotK2RvZXMgbm90IHJldm9rZSBORlN2NCBzdGF0ZSwgaG93ZXZlci4KLStJZgotKy5C IG5mc2QKLStpcyB0aGVuIHJlc3RhcnRlZCwgY2xpZW50cyBtYXkgcmVjbGFpbSBzdGF0ZSBkdXJp bmcgdGhlCi0rZ3JhY2UgcGVyaW9kLgotKy5QUAotIC5TUyBEdW1waW5nIHRoZSBFeHBvcnQgVGFi bGUKLSBJbnZva2luZwotIC5CIGV4cG9ydGZzCi1kaWZmIC0tZ2l0IGEvdXRpbHMvbmZzZGN0bC9u ZnNkY3RsLmMgYi91dGlscy9uZnNkY3RsL25mc2RjdGwuYwotaW5kZXggMDE2ZGQyZWIuLmM3MTI2 NzQ4IDEwMDY0NAotLS0tIGEvdXRpbHMvbmZzZGN0bC9uZnNkY3RsLmMKLSsrKyBiL3V0aWxzL25m c2RjdGwvbmZzZGN0bC5jCi1AQCAtMjYsNiArMjYsNyBAQAotICNpbmNsdWRlIDxuZXRsaW5rL21z Zy5oPgotICNpbmNsdWRlIDxuZXRsaW5rL2F0dHIuaD4KLSAjaW5jbHVkZSA8bGludXgvbmV0bGlu ay5oPgotKyNpbmNsdWRlICJjb21wYXQuaCIKLSAKLSAjaW5jbHVkZSA8cmVhZGxpbmUvcmVhZGxp bmUuaD4KLSAjaW5jbHVkZSA8cmVhZGxpbmUvaGlzdG9yeS5oPgotZGlmZiAtLWdpdCBhL3V0aWxz L25mc3N0YXQvTWFrZWZpbGUuYW0gYi91dGlscy9uZnNzdGF0L01ha2VmaWxlLmFtCi1pbmRleCBk MTU1NWE3ZC4uOGIxMjFjNDggMTAwNjQ0Ci0tLS0gYS91dGlscy9uZnNzdGF0L01ha2VmaWxlLmFt Ci0rKysgYi91dGlscy9uZnNzdGF0L01ha2VmaWxlLmFtCi1AQCAtNSw4ICs1LDEwIEBAIEVYVFJB X0RJU1QJPSAkKG1hbjhfTUFOUykKLSAKLSBzYmluX1BST0dSQU1TCT0gbmZzc3RhdAotIG5mc3N0 YXRfU09VUkNFUyA9IG5mc3N0YXQuYwotK25mc3N0YXRfQ0ZMQUdTID0gJChMSUJOTDNfQ0ZMQUdT KSAkKExJQk5MR0VOTDNfQ0ZMQUdTKQotIG5mc3N0YXRfTERBREQgPSAuLi8uLi9zdXBwb3J0L2V4 cG9ydC9saWJleHBvcnQuYSBcCi0gCSAgICAgIAkuLi8uLi9zdXBwb3J0L25mcy9saWJuZnMubGEg XAotLQkJLi4vLi4vc3VwcG9ydC9taXNjL2xpYm1pc2MuYQotKwkJLi4vLi4vc3VwcG9ydC9taXNj L2xpYm1pc2MuYSBcCi0rCQkkKExJQk5MM19MSUJTKSAkKExJQk5MR0VOTDNfTElCUykKLSAKLSBN QUlOVEFJTkVSQ0xFQU5GSUxFUyA9IE1ha2VmaWxlLmluCi1kaWZmIC0tZ2l0IGEvdXRpbHMvbmZz c3RhdC9uZnNzdGF0LmMgYi91dGlscy9uZnNzdGF0L25mc3N0YXQuYwotaW5kZXggY2E4NDUzMjUu LmYwOWUxZDZhIDEwMDY0NAotLS0tIGEvdXRpbHMvbmZzc3RhdC9uZnNzdGF0LmMKLSsrKyBiL3V0 aWxzL25mc3N0YXQvbmZzc3RhdC5jCi1AQCAtMjMsNiArMjMsMTcgQEAKLSAjaW5jbHVkZSA8c2ln bmFsLmg+Ci0gI2luY2x1ZGUgPHRpbWUuaD4KLSAKLSsjaW5jbHVkZSA8bmV0bGluay9nZW5sL2dl bmwuaD4KLSsjaW5jbHVkZSA8bmV0bGluay9nZW5sL2N0cmwuaD4KLSsjaW5jbHVkZSA8bmV0bGlu ay9tc2cuaD4KLSsjaW5jbHVkZSA8bmV0bGluay9hdHRyLmg+Ci0rCi0rI2lmZGVmIFVTRV9TWVNU RU1fTkZTRF9ORVRMSU5LX0gKLSsjaW5jbHVkZSA8bGludXgvbmZzZF9uZXRsaW5rLmg+Ci0rI2Vs c2UKLSsjaW5jbHVkZSAibmZzZF9uZXRsaW5rLmgiCi0rI2VuZGlmCi0rCi0gI2RlZmluZSBNQVhO UlZBTFMJMzIKLSAKLSBlbnVtIHsKLUBAIC0yNzEsNiArMjgyLDcgQEAgc3RhdGljIHN0YXRpbmZv CQkqZ2V0X3N0YXRfaW5mbyhjb25zdCBjaGFyICosIHN0cnVjdCBzdGF0aW5mbyAqKTsKLSAKLSBz dGF0aWMgaW50CQltb3VudHMoY29uc3QgY2hhciAqKTsKLSAKLStzdGF0aWMgaW50CQlnZXRfc3Rh dHNfbmV0bGluayhzdHJ1Y3Qgc3RhdGluZm8gKik7Ci0gc3RhdGljIHZvaWQJCWdldF9zdGF0cyhj b25zdCBjaGFyICosIHN0cnVjdCBzdGF0aW5mbyAqLCBpbnQgKiwgaW50LAotIAkJCQkJaW50KTsK LSBzdGF0aWMgaW50CQloYXNfc3RhdHMoY29uc3QgdW5zaWduZWQgaW50ICosIGludCk7Ci1AQCAt MTA1MSw2ICsxMDYzLDI3MiBAQCBtb3VudHMoY29uc3QgY2hhciAqbmFtZSkKLSAJcmV0dXJuIDE7 Ci0gfQotIAotKy8qCi0rICogTmV0bGluayBoZWxwZXJzIGZvciBmZXRjaGluZyBzZXJ2ZXIgc3Rh dHMgdmlhIEdlbmVyaWMgTmV0bGluay4KLSsgKi8KLStzdGF0aWMgaW50IG5sX2Vycm9yX2hhbmRs ZXIoc3RydWN0IHNvY2thZGRyX25sICpubGEsIHN0cnVjdCBubG1zZ2VyciAqZXJyLAotKwkJCSAg ICB2b2lkICphcmcpCi0rewotKwlpbnQgKnJldCA9IGFyZzsKLSsKLSsJKnJldCA9IGVyci0+ZXJy b3I7Ci0rCXJldHVybiBOTF9TS0lQOwotK30KLSsKLStzdGF0aWMgaW50IG5sX2ZpbmlzaF9oYW5k bGVyKHN0cnVjdCBubF9tc2cgKm1zZywgdm9pZCAqYXJnKQotK3sKLSsJaW50ICpyZXQgPSBhcmc7 Ci0rCi0rCSpyZXQgPSAwOwotKwlyZXR1cm4gTkxfU0tJUDsKLSt9Ci0rCi0rc3RhdGljIGludCBu bF9hY2tfaGFuZGxlcihzdHJ1Y3QgbmxfbXNnICptc2csIHZvaWQgKmFyZykKLSt7Ci0rCWludCAq cmV0ID0gYXJnOwotKwotKwkqcmV0ID0gMDsKLSsJcmV0dXJuIE5MX1NUT1A7Ci0rfQotKwotK3N0 YXRpYyB2b2lkIHBhcnNlX29uZV9wcm9jX2VudHJ5KHN0cnVjdCBubGF0dHIgKm5lc3QsIHVuc2ln bmVkIGludCAqaW5mbywKLSsJCQkJIHVuc2lnbmVkIGludCBtYXhfb3BzKQotK3sKLSsJc3RydWN0 IG5sYXR0ciAqdGJbTkZTRF9BX1NFUlZFUl9QUk9DX0VOVFJZX01BWCArIDFdOwotKwl1bnNpZ25l ZCBpbnQgb3AsIGNvdW50OwotKwotKwlubGFfcGFyc2VfbmVzdGVkKHRiLCBORlNEX0FfU0VSVkVS X1BST0NfRU5UUllfTUFYLCBuZXN0LCBOVUxMKTsKLSsJaWYgKCF0YltORlNEX0FfU0VSVkVSX1BS T0NfRU5UUllfT1BdIHx8Ci0rCSAgICAhdGJbTkZTRF9BX1NFUlZFUl9QUk9DX0VOVFJZX0NPVU5U XSkKLSsJCXJldHVybjsKLSsKLSsJb3AgPSBubGFfZ2V0X3UzMih0YltORlNEX0FfU0VSVkVSX1BS T0NfRU5UUllfT1BdKTsKLSsJY291bnQgPSAodW5zaWduZWQgaW50KW5sYV9nZXRfdTY0KHRiW05G U0RfQV9TRVJWRVJfUFJPQ19FTlRSWV9DT1VOVF0pOwotKwlpZiAob3AgPCBtYXhfb3BzKSB7Ci0r CQlpbmZvWzBdID0gbWF4X29wczsKLSsJCWluZm9bb3AgKyAxXSA9IGNvdW50OwotKwl9Ci0rfQot KwotK3N0YXRpYyBpbnQgc3RhdHNfbmxfaGFuZGxlcihzdHJ1Y3QgbmxfbXNnICptc2csIHZvaWQg KmFyZykKLSt7Ci0rCXN0cnVjdCBzdGF0aW5mbyAqaW5mbyA9IGFyZzsKLSsJc3RydWN0IGdlbmxt c2doZHIgKmdubGggPSBubG1zZ19kYXRhKG5sbXNnX2hkcihtc2cpKTsKLSsJc3RydWN0IG5sYXR0 ciAqYXR0cjsKLSsJc3RhdGluZm8gKnNpOwotKwlpbnQgcmVtOwotKwotKwlubGFfZm9yX2VhY2hf YXR0cihhdHRyLCBnZW5sbXNnX2F0dHJkYXRhKGdubGgsIDApLAotKwkJCSAgZ2VubG1zZ19hdHRy bGVuKGdubGgsIDApLCByZW0pIHsKLSsJCWludCB0eXBlID0gbmxhX3R5cGUoYXR0cik7Ci0rCi0r CQlzd2l0Y2ggKHR5cGUpIHsKLSsJCS8qIFJlcGx5IGNhY2hlICovCi0rCQljYXNlIE5GU0RfQV9T RVJWRVJfU1RBVFNfUkNfSElUUzoKLSsJCQlzaSA9IGdldF9zdGF0X2luZm8oInJjIiwgaW5mbyk7 Ci0rCQkJaWYgKHNpKQotKwkJCQlzaS0+dmFscHRyWzBdID0gbmxhX2dldF91NjQoYXR0cik7Ci0r CQkJYnJlYWs7Ci0rCQljYXNlIE5GU0RfQV9TRVJWRVJfU1RBVFNfUkNfTUlTU0VTOgotKwkJCXNp ID0gZ2V0X3N0YXRfaW5mbygicmMiLCBpbmZvKTsKLSsJCQlpZiAoc2kpCi0rCQkJCXNpLT52YWxw dHJbMV0gPSBubGFfZ2V0X3U2NChhdHRyKTsKLSsJCQlicmVhazsKLSsJCWNhc2UgTkZTRF9BX1NF UlZFUl9TVEFUU19SQ19OT0NBQ0hFOgotKwkJCXNpID0gZ2V0X3N0YXRfaW5mbygicmMiLCBpbmZv KTsKLSsJCQlpZiAoc2kpCi0rCQkJCXNpLT52YWxwdHJbMl0gPSBubGFfZ2V0X3U2NChhdHRyKTsK LSsJCQlicmVhazsKLSsKLSsJCS8qIEZpbGVoYW5kbGUgKi8KLSsJCWNhc2UgTkZTRF9BX1NFUlZF Ul9TVEFUU19GSF9TVEFMRToKLSsJCQlzaSA9IGdldF9zdGF0X2luZm8oImZoIiwgaW5mbyk7Ci0r CQkJaWYgKHNpKQotKwkJCQlzaS0+dmFscHRyWzBdID0gbmxhX2dldF91NjQoYXR0cik7Ci0rCQkJ YnJlYWs7Ci0rCi0rCQkvKiBJTyAqLwotKwkJY2FzZSBORlNEX0FfU0VSVkVSX1NUQVRTX0lPX1JF QUQ6Ci0rCQkJc2kgPSBnZXRfc3RhdF9pbmZvKCJpbyIsIGluZm8pOwotKwkJCWlmIChzaSkKLSsJ CQkJc2ktPnZhbHB0clswXSA9IG5sYV9nZXRfdTY0KGF0dHIpOwotKwkJCWJyZWFrOwotKwkJY2Fz ZSBORlNEX0FfU0VSVkVSX1NUQVRTX0lPX1dSSVRFOgotKwkJCXNpID0gZ2V0X3N0YXRfaW5mbygi aW8iLCBpbmZvKTsKLSsJCQlpZiAoc2kpCi0rCQkJCXNpLT52YWxwdHJbMV0gPSBubGFfZ2V0X3U2 NChhdHRyKTsKLSsJCQlicmVhazsKLSsKLSsJCS8qIE5ldHdvcmsgKi8KLSsJCWNhc2UgTkZTRF9B X1NFUlZFUl9TVEFUU19ORVRDTlQ6Ci0rCQkJc2kgPSBnZXRfc3RhdF9pbmZvKCJuZXQiLCBpbmZv KTsKLSsJCQlpZiAoc2kpCi0rCQkJCXNpLT52YWxwdHJbMF0gPSBubGFfZ2V0X3UzMihhdHRyKTsK LSsJCQlicmVhazsKLSsJCWNhc2UgTkZTRF9BX1NFUlZFUl9TVEFUU19ORVRVRFBDTlQ6Ci0rCQkJ c2kgPSBnZXRfc3RhdF9pbmZvKCJuZXQiLCBpbmZvKTsKLSsJCQlpZiAoc2kpCi0rCQkJCXNpLT52 YWxwdHJbMV0gPSBubGFfZ2V0X3UzMihhdHRyKTsKLSsJCQlicmVhazsKLSsJCWNhc2UgTkZTRF9B X1NFUlZFUl9TVEFUU19ORVRUQ1BDTlQ6Ci0rCQkJc2kgPSBnZXRfc3RhdF9pbmZvKCJuZXQiLCBp bmZvKTsKLSsJCQlpZiAoc2kpCi0rCQkJCXNpLT52YWxwdHJbMl0gPSBubGFfZ2V0X3UzMihhdHRy KTsKLSsJCQlicmVhazsKLSsJCWNhc2UgTkZTRF9BX1NFUlZFUl9TVEFUU19ORVRUQ1BDT05OOgot KwkJCXNpID0gZ2V0X3N0YXRfaW5mbygibmV0IiwgaW5mbyk7Ci0rCQkJaWYgKHNpKQotKwkJCQlz aS0+dmFscHRyWzNdID0gbmxhX2dldF91MzIoYXR0cik7Ci0rCQkJYnJlYWs7Ci0rCi0rCQkvKiBS UEMgKi8KLSsJCWNhc2UgTkZTRF9BX1NFUlZFUl9TVEFUU19SUENDTlQ6Ci0rCQkJc2kgPSBnZXRf c3RhdF9pbmZvKCJycGMiLCBpbmZvKTsKLSsJCQlpZiAoc2kpCi0rCQkJCXNpLT52YWxwdHJbMF0g PSBubGFfZ2V0X3UzMihhdHRyKTsKLSsJCQlicmVhazsKLSsJCWNhc2UgTkZTRF9BX1NFUlZFUl9T VEFUU19SUENCQURGTVQ6Ci0rCQkJc2kgPSBnZXRfc3RhdF9pbmZvKCJycGMiLCBpbmZvKTsKLSsJ CQlpZiAoc2kpCi0rCQkJCXNpLT52YWxwdHJbMl0gPSBubGFfZ2V0X3UzMihhdHRyKTsKLSsJCQli cmVhazsKLSsJCWNhc2UgTkZTRF9BX1NFUlZFUl9TVEFUU19SUENCQURBVVRIOgotKwkJCXNpID0g Z2V0X3N0YXRfaW5mbygicnBjIiwgaW5mbyk7Ci0rCQkJaWYgKHNpKQotKwkJCQlzaS0+dmFscHRy WzNdID0gbmxhX2dldF91MzIoYXR0cik7Ci0rCQkJYnJlYWs7Ci0rCQljYXNlIE5GU0RfQV9TRVJW RVJfU1RBVFNfUlBDQkFEQ0xOVDoKLSsJCQlzaSA9IGdldF9zdGF0X2luZm8oInJwYyIsIGluZm8p OwotKwkJCWlmIChzaSkKLSsJCQkJc2ktPnZhbHB0cls0XSA9IG5sYV9nZXRfdTMyKGF0dHIpOwot KwkJCWJyZWFrOwotKwotKwkJLyogUGVyLXZlcnNpb24gcHJvY2VkdXJlIGNvdW50cyAobXVsdGkt YXR0cikgKi8KLSsJCWNhc2UgTkZTRF9BX1NFUlZFUl9TVEFUU19QUk9DMl9PUFM6Ci0rCQkJc2kg PSBnZXRfc3RhdF9pbmZvKCJwcm9jMiIsIGluZm8pOwotKwkJCWlmIChzaSkKLSsJCQkJcGFyc2Vf b25lX3Byb2NfZW50cnkoYXR0ciwgc2ktPnZhbHB0ciwKLSsJCQkJCQkgICAgIFNSVlBST0MyX1Na KTsKLSsJCQlicmVhazsKLSsJCWNhc2UgTkZTRF9BX1NFUlZFUl9TVEFUU19QUk9DM19PUFM6Ci0r CQkJc2kgPSBnZXRfc3RhdF9pbmZvKCJwcm9jMyIsIGluZm8pOwotKwkJCWlmIChzaSkKLSsJCQkJ cGFyc2Vfb25lX3Byb2NfZW50cnkoYXR0ciwgc2ktPnZhbHB0ciwKLSsJCQkJCQkgICAgIFNSVlBS T0MzX1NaKTsKLSsJCQlicmVhazsKLSsJCWNhc2UgTkZTRF9BX1NFUlZFUl9TVEFUU19QUk9DNF9P UFM6Ci0rCQkJc2kgPSBnZXRfc3RhdF9pbmZvKCJwcm9jNCIsIGluZm8pOwotKwkJCWlmIChzaSkK LSsJCQkJcGFyc2Vfb25lX3Byb2NfZW50cnkoYXR0ciwgc2ktPnZhbHB0ciwKLSsJCQkJCQkgICAg IFNSVlBST0M0X1NaKTsKLSsJCQlicmVhazsKLSsJCWNhc2UgTkZTRF9BX1NFUlZFUl9TVEFUU19Q Uk9DNE9QU19PUFM6Ci0rCQkJc2kgPSBnZXRfc3RhdF9pbmZvKCJwcm9jNG9wcyIsIGluZm8pOwot KwkJCWlmIChzaSkKLSsJCQkJcGFyc2Vfb25lX3Byb2NfZW50cnkoYXR0ciwgc2ktPnZhbHB0ciwK LSsJCQkJCQkgICAgIFNSVlBST0M0T1BTX1NaKTsKLSsJCQlicmVhazsKLSsJCX0KLSsJfQotKwot KwlyZXR1cm4gTkxfT0s7Ci0rfQotKwotKy8qCi0rICogRmV0Y2ggc2VydmVyIHN0YXRzIHZpYSBH ZW5lcmljIE5ldGxpbmsuCi0rICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGZhaWx1cmUu Ci0rICovCi0rc3RhdGljIGludAotK2dldF9zdGF0c19uZXRsaW5rKHN0cnVjdCBzdGF0aW5mbyAq aW5mbykKLSt7Ci0rCXN0cnVjdCBubF9zb2NrICpzb2NrOwotKwlzdHJ1Y3QgbmxfbXNnICptc2c7 Ci0rCXN0cnVjdCBubF9jYiAqY2I7Ci0rCWludCBmYW1pbHksIHJldDsKLSsJc3RhdGluZm8gKnNp OwotKwotKwlzb2NrID0gbmxfc29ja2V0X2FsbG9jKCk7Ci0rCWlmICghc29jaykKLSsJCXJldHVy biAtMTsKLSsKLSsJaWYgKGdlbmxfY29ubmVjdChzb2NrKSkgewotKwkJbmxfc29ja2V0X2ZyZWUo c29jayk7Ci0rCQlyZXR1cm4gLTE7Ci0rCX0KLSsKLSsJZmFtaWx5ID0gZ2VubF9jdHJsX3Jlc29s dmUoc29jaywgTkZTRF9GQU1JTFlfTkFNRSk7Ci0rCWlmIChmYW1pbHkgPCAwKSB7Ci0rCQlubF9z b2NrZXRfZnJlZShzb2NrKTsKLSsJCXJldHVybiAtMTsKLSsJfQotKwotKwltc2cgPSBubG1zZ19h bGxvYygpOwotKwlpZiAoIW1zZykgewotKwkJbmxfc29ja2V0X2ZyZWUoc29jayk7Ci0rCQlyZXR1 cm4gLTE7Ci0rCX0KLSsKLSsJaWYgKCFnZW5sbXNnX3B1dChtc2csIE5MX0FVVE9fUElELCBOTF9B VVRPX1NFUSwgZmFtaWx5LCAwLAotKwkJCSBOTE1fRl9EVU1QLCBORlNEX0NNRF9TRVJWRVJfU1RB VFNfR0VULCAwKSkgewotKwkJbmxtc2dfZnJlZShtc2cpOwotKwkJbmxfc29ja2V0X2ZyZWUoc29j ayk7Ci0rCQlyZXR1cm4gLTE7Ci0rCX0KLSsKLSsJY2IgPSBubF9jYl9hbGxvYyhOTF9DQl9DVVNU T00pOwotKwlpZiAoIWNiKSB7Ci0rCQlubG1zZ19mcmVlKG1zZyk7Ci0rCQlubF9zb2NrZXRfZnJl ZShzb2NrKTsKLSsJCXJldHVybiAtMTsKLSsJfQotKwotKwlyZXQgPSBubF9zZW5kX2F1dG8oc29j aywgbXNnKTsKLSsJaWYgKHJldCA8IDApIHsKLSsJCW5sX2NiX3B1dChjYik7Ci0rCQlubG1zZ19m cmVlKG1zZyk7Ci0rCQlubF9zb2NrZXRfZnJlZShzb2NrKTsKLSsJCXJldHVybiAtMTsKLSsJfQot KwotKwlyZXQgPSAxOwotKwlubF9jYl9lcnIoY2IsIE5MX0NCX0NVU1RPTSwgbmxfZXJyb3JfaGFu ZGxlciwgJnJldCk7Ci0rCW5sX2NiX3NldChjYiwgTkxfQ0JfRklOSVNILCBOTF9DQl9DVVNUT00s IG5sX2ZpbmlzaF9oYW5kbGVyLCAmcmV0KTsKLSsJbmxfY2Jfc2V0KGNiLCBOTF9DQl9BQ0ssIE5M X0NCX0NVU1RPTSwgbmxfYWNrX2hhbmRsZXIsICZyZXQpOwotKwlubF9jYl9zZXQoY2IsIE5MX0NC X1ZBTElELCBOTF9DQl9DVVNUT00sIHN0YXRzX25sX2hhbmRsZXIsIGluZm8pOwotKwotKwl3aGls ZSAocmV0ID4gMCkKLSsJCW5sX3JlY3Ztc2dzKHNvY2ssIGNiKTsKLSsKLSsJbmxfY2JfcHV0KGNi KTsKLSsJbmxtc2dfZnJlZShtc2cpOwotKwlubF9zb2NrZXRfZnJlZShzb2NrKTsKLSsKLSsJaWYg KHJldCA8IDApCi0rCQlyZXR1cm4gLTE7Ci0rCi0rCS8qCi0rCSAqIENvbXB1dGUgZGVyaXZlZCBm aWVsZHMuIFRoZSBwcm9jIGZpbGUgZW1pdHMgInJwYyBycGNjbnQKLSsJICogYmFkY2FsbHMgYmFk Zm10IGJhZGF1dGggYmFkY2xudCIgd2hlcmUgYmFkY2FsbHMgaXMgdGhlIHN1bQotKwkgKiBvZiBi YWRmbXQrYmFkYXV0aCtiYWRjbG50LiBUaGUgbmV0bGluayBpbnRlcmZhY2Ugc2VuZHMgdGhlCi0r CSAqIGNvbXBvbmVudHMgaW5kaXZpZHVhbGx5LCBzbyByZWNvbXB1dGUgdGhlIHN1bSBoZXJlLgot KwkgKi8KLSsJc2kgPSBnZXRfc3RhdF9pbmZvKCJycGMiLCBpbmZvKTsKLSsJaWYgKHNpKQotKwkJ c2ktPnZhbHB0clsxXSA9IHNpLT52YWxwdHJbMl0gKyBzaS0+dmFscHRyWzNdICsgc2ktPnZhbHB0 cls0XTsKLSsKLSsJLyogQ29tcHV0ZSB0b3RhbHMgZm9yIGVhY2ggc3RhdCBjYXRlZ29yeSAqLwot Kwlmb3IgKHNpID0gaW5mbzsgc2ktPnRhZzsgc2krKykgewotKwkJdW5zaWduZWQgaW50IHRvdGFs ID0gMDsKLSsJCWludCBpOwotKwotKwkJZm9yIChpID0gMDsgaSA8IHNpLT5ucnZhbHMgLSAxOyBp KyspCi0rCQkJdG90YWwgKz0gc2ktPnZhbHB0cltpXTsKLSsJCXNpLT52YWxwdHJbc2ktPm5ydmFs cyAtIDFdID0gdG90YWw7Ci0rCX0KLSsKLSsJcmV0dXJuIDA7Ci0rfQotKwotIHN0YXRpYyB2b2lk Ci0gZ2V0X3N0YXRzKGNvbnN0IGNoYXIgKmZpbGUsIHN0cnVjdCBzdGF0aW5mbyAqaW5mbywgaW50 ICpvcHQsIGludCBvdGhlcl9vcHQsCi0gCQlpbnQgaXNfc3J2KQotQEAgLTEwNjAsNiArMTMzOCwx MCBAQCBnZXRfc3RhdHMoY29uc3QgY2hhciAqZmlsZSwgc3RydWN0IHN0YXRpbmZvICppbmZvLCBp bnQgKm9wdCwgaW50IG90aGVyX29wdCwKLSAJaW50IGVyciA9IDE7Ci0gCWNoYXIgKmxhYmVsID0g aXNfc3J2ID8gIlNlcnZlciIgOiAiQ2xpZW50IjsKLSAKLSsJLyogVHJ5IG5ldGxpbmsgZmlyc3Qg Zm9yIHNlcnZlciBzdGF0cyAqLwotKwlpZiAoaXNfc3J2ICYmIGdldF9zdGF0c19uZXRsaW5rKGlu Zm8pID09IDApCi0rCQlyZXR1cm47Ci0rCi0gCS8qIHRyeSB0byBndWVzcyB3aGF0IHR5cGUgb2Yg c3RhdCBmaWxlIHdlJ3JlIGRlYWxpbmcgd2l0aCAqLwotIAlpZiAoKGZwID0gZm9wZW4oZmlsZSwg InIiKSkgPT0gTlVMTCkKLSAJCWdvdG8gb3V0OwoKZGlmZiAtLWdpdCBhL25mcy11dGlscy0yLjku Mi1yYzUucGF0Y2ggYi9uZnMtdXRpbHMtMi45LjItcmM1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjA0NTNiNTMKLS0tIC9kZXYvbnVsbAorKysgYi9uZnMtdXRpbHMt Mi45LjItcmM1LnBhdGNoCkBAIC0wLDAgKzEsMTM0OSBAQAorZGlmZiAtLWdpdCBhL2NvbmZpZ3Vy ZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMTE1YzYxMWYuLjRjYTc2NjZkIDEwMDY0NAorLS0t IGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0yNTYsMTAgKzI1NiwxMiBA QCBQS0dfQ0hFQ0tfTU9EVUxFUyhMSUJOTDMsIGxpYm5sLTMuMCA+PSAzLjEpCisgUEtHX0NIRUNL X01PRFVMRVMoTElCTkxHRU5MMywgbGlibmwtZ2VubC0zLjAgPj0gMy4xKQorIAorIEFDX0NIRUNL X0hFQURFUlMobGludXgvbmZzZF9uZXRsaW5rLmgpCisrQUNfREVGSU5FKFtIQVZFX05GU0RfTkVU TElOS10sIDEsCisrCSAgW0RlZmluZSB0byAxIGlmIG5mc2QgZ2VuZXJpYyBuZXRsaW5rIHN1cHBv cnQgaXMgYXZhaWxhYmxlXSkKKyAKKy0jIGVuc3VyZSB3ZSBoYXZlIHRoZSBleHBrZXkgYXR0cmli dXRlcworKyMgZW5zdXJlIHRoZSBzeXN0ZW0gbmV0bGluayBoZWFkZXJzIGhhdmUgdGhlIGxhdGVz dCBmZWF0dXJlcworIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sjaW5jbHVk ZSA8bGludXgvbmZzZF9uZXRsaW5rLmg+XV0sCistCQkJICAgICAgICAgICAgICAgICAgIFtbaW50 IGZvbyA9IE5GU0RfQV9FWFBLRVlfU0VRTk87XV0pXSwKKysJCQkgICAgICAgICAgICAgICAgICAg W1tpbnQgZm9vID0gTkZTRF9DTURfU0VSVkVSX1NUQVRTX0dFVDtdXSldLAorIAkJCSAgIFtBQ19E RUZJTkUoW1VTRV9TWVNURU1fTkZTRF9ORVRMSU5LX0hdLCAxLAorIAkJCQkgICAgICBbIlVzZSBz eXN0ZW0ncyBsaW51eC9uZnNkX25ldGxpbmsuaCJdKV0pCisgQUNfQ09NUElMRV9JRkVMU0UoW0FD X0xBTkdfUFJPR1JBTShbWyNpbmNsdWRlIDxsaW51eC9sb2NrZF9uZXRsaW5rLmg+XV0sCitkaWZm IC0tZ2l0IGEvbmZzLmNvbmYgYi9uZnMuY29uZgoraW5kZXggODRjYzY1M2YuLmZhMTJjNTkyIDEw MDY0NAorLS0tIGEvbmZzLmNvbmYKKysrKyBiL25mcy5jb25mCitAQCAtNDMsNiArNDMsOCBAQAor ICMgdGhyZWFkcz0xCisgIyBjYWNoZS11c2UtaXBhZGRyPW4KKyAjIHR0bD0xODAwCisrIyBuby1u ZXRsaW5rPTAKKysjCisgW21vdW50ZF0KKyAjIGRlYnVnPSJhbGx8YXV0aHxjYWxsfGdlbmVyYWx8 cGFyc2UiCisgIyBhcHBseS1yb290LWNyZWQ9bgorQEAgLTU1LDYgKzU3LDcgQEAKKyAjIGhhLWNh bGxvdXQ9CisgIyBjYWNoZS11c2UtaXBhZGRyPW4KKyAjIHR0bD0xODAwCisrIyBuby1uZXRsaW5r PTAKKyAjCisgW25mc2RjbGRdCisgIyBkZWJ1Zz0wCitkaWZmIC0tZ2l0IGEvc3VwcG9ydC9leHBv cnQvY2FjaGUuYyBiL3N1cHBvcnQvZXhwb3J0L2NhY2hlLmMKK2luZGV4IDJmMTI4ZDdkLi4wNTlm NDhhNyAxMDA2NDQKKy0tLSBhL3N1cHBvcnQvZXhwb3J0L2NhY2hlLmMKKysrKyBiL3N1cHBvcnQv ZXhwb3J0L2NhY2hlLmMKK0BAIC00MCw3ICs0MCw3IEBACisgI2luY2x1ZGUgPG5ldGxpbmsvZ2Vu bC9jdHJsLmg+CisgI2luY2x1ZGUgPG5ldGxpbmsvbXNnLmg+CisgI2luY2x1ZGUgPG5ldGxpbmsv YXR0ci5oPgorLSNpbmNsdWRlIDxsaW51eC9uZXRsaW5rLmg+CisrI2luY2x1ZGUgImNvbXBhdC5o IgorIAorICNpZmRlZiBVU0VfU1lTVEVNX05GU0RfTkVUTElOS19ICisgI2luY2x1ZGUgPGxpbnV4 L25mc2RfbmV0bGluay5oPgorQEAgLTMwNzIsNiArMzA3Miw4IEBAIHZvaWQgY2FjaGVfb3Blbih2 b2lkKQorIAkJCSAqIHdlcmUgcXVldWVkIGJlZm9yZSB3ZSBvcGVuZWQgdGhlIHNvY2tldC4KKyAJ CQkgKi8KKyAJCQlhdXRoX3JlbG9hZCgpOworKwkJCWlmIChub19uZXRsaW5rKQorKwkJCQlnb3Rv IGZhbGxiYWNrOworIAkJCWNhY2hlX25sX3Byb2Nlc3NfZXhwb3J0KCk7CisgCQkJY2FjaGVfbmxf cHJvY2Vzc19leHBrZXkoKTsKKyAJCQljYWNoZV9ubF9wcm9jZXNzX2lwX21hcCgpOworQEAgLTMw NzksMTEgKzMwODEsMTYgQEAgdm9pZCBjYWNoZV9vcGVuKHZvaWQpCisgCQkJCWNhY2hlX25sX3By b2Nlc3NfdW5peF9naWQoKTsKKyAJCQlyZXR1cm47CisgCQl9CisrZmFsbGJhY2s6CisgCQl4bG9n KExfTk9USUNFLCAic3VucnBjIG5ldGxpbmsgZmFtaWx5IHVuYXZhaWxhYmxlLCBmYWxsaW5nIGJh Y2sgdG8gL3Byb2MiKTsKKyAJCW5sX3NvY2tldF9mcmVlKG5mc2Rfbmxfbm90aWZ5X3NvY2spOwor IAkJbmZzZF9ubF9ub3RpZnlfc29jayA9IE5VTEw7CisgCQlubF9zb2NrZXRfZnJlZShuZnNkX25s X2NtZF9zb2NrKTsKKyAJCW5mc2RfbmxfY21kX3NvY2sgPSBOVUxMOworKwkJbmxfc29ja2V0X2Zy ZWUoc3VucnBjX25sX25vdGlmeV9zb2NrKTsKKysJCXN1bnJwY19ubF9ub3RpZnlfc29jayA9IE5V TEw7CisrCQlubF9zb2NrZXRfZnJlZShzdW5ycGNfbmxfY21kX3NvY2spOworKwkJc3VucnBjX25s X2NtZF9zb2NrID0gTlVMTDsKKyAJfQorIAorIAlmb3IgKGk9MDsgY2FjaGVsaXN0W2ldLmNhY2hl X25hbWU7IGkrKyApIHsKK2RpZmYgLS1naXQgYS9zdXBwb3J0L2V4cG9ydC9jYWNoZV9mbHVzaC5j IGIvc3VwcG9ydC9leHBvcnQvY2FjaGVfZmx1c2guYworaW5kZXggZWQ3Yjk2NGYuLjA0NmU2OTE3 IDEwMDY0NAorLS0tIGEvc3VwcG9ydC9leHBvcnQvY2FjaGVfZmx1c2guYworKysrIGIvc3VwcG9y dC9leHBvcnQvY2FjaGVfZmx1c2guYworQEAgLTM4LDYgKzM4LDggQEAgZXh0ZXJuIGludCBub19u ZXRsaW5rOworICNpbmNsdWRlICJzdW5ycGNfbmV0bGluay5oIgorICNlbmRpZgorIAorKyNpbmNs dWRlICJjb21wYXQuaCIKKysKKyBzdGF0aWMgaW50IG5sX3NlbmRfZmx1c2goc3RydWN0IG5sX3Nv Y2sgKnNvY2ssIGludCBmYW1pbHksIGludCBjbWQpCisgeworIAlzdHJ1Y3QgbmxfbXNnICptc2c7 CitAQCAtMTYyLDUgKzE2NCw2IEBAIGNhY2hlX2ZsdXNoKHZvaWQpCisgCQlyZXR1cm47CisgCX0K KyAJLyogRmFsbGJhY2s6IC9wcm9jIHBhdGggKi8KKysJbm9fbmV0bGluayA9IDE7CisgCWNhY2hl X3Byb2NfZmx1c2goKTsKKyB9CitkaWZmIC0tZ2l0IGEvc3VwcG9ydC9leHBvcnQveHRhYi5jIGIv c3VwcG9ydC9leHBvcnQveHRhYi5jCitpbmRleCAyODJmMTViYy4uMGE5NjYwNTEgMTAwNjQ0Cist LS0gYS9zdXBwb3J0L2V4cG9ydC94dGFiLmMKKysrKyBiL3N1cHBvcnQvZXhwb3J0L3h0YWIuYwor QEAgLTMzLDExICszMyw4IEBAIGludCB2NHJvb3RfbmVlZGVkOworIHN0YXRpYyB2b2lkIGNvbmRf cmVuYW1lKGNoYXIgKm5ld2ZpbGUsIGNoYXIgKm9sZGZpbGUpOworIAorIHN0YXRpYyBpbnQKKy14 dGFiX3JlYWQoY2hhciAqeHRhYiwgY2hhciAqbG9ja2ZuLCBpbnQgaXNfZXhwb3J0KQorK3h0YWJf cmVhZChjaGFyICp4dGFiLCBjaGFyICpsb2NrZm4pCisgeworLSAgICAvKiBpc19leHBvcnQgPT0g MCAgPT4gcmVhZGluZyAvcHJvYy9mcy9uZnMvZXhwb3J0cyAtIHdlIGtub3cgdGhlc2UgdGhpbmdz IGFyZSBleHBvcnRlZCB0byBrZXJuZWwKKy0gICAgICogaXNfZXhwb3J0ID09IDEgID0+IHJlYWRp bmcgL3Zhci9saWIvbmZzL2V0YWIgLSB0aGVzZSB0aGluZ3MgYXJlIGFsbG93ZWQgdG8gYmUgZXhw b3J0ZWQKKy0gICAgICovCisgCXN0cnVjdCBleHBvcnRlbnQJKnhwOworIAluZnNfZXhwb3J0CQkq ZXhwOworIAlpbnQJCQlsb2NraWQ7CitAQCAtNDUsMTEgKzQyLDEwIEBAIHh0YWJfcmVhZChjaGFy ICp4dGFiLCBjaGFyICpsb2NrZm4sIGludCBpc19leHBvcnQpCisgCWlmICgobG9ja2lkID0geGZs b2NrKGxvY2tmbiwgInIiKSkgPCAwKQorIAkJcmV0dXJuIDA7CisgCXNldGV4cG9ydGVudCh4dGFi LCAiciIpOworLQlpZiAoaXNfZXhwb3J0ID09IDEpCistCQl2NHJvb3RfbmVlZGVkID0gMTsKKy0J d2hpbGUgKCh4cCA9IGdldGV4cG9ydGVudChpc19leHBvcnQ9PTApKSAhPSBOVUxMKSB7CistCQlp ZiAoIShleHAgPSBleHBvcnRfbG9va3VwKHhwLT5lX2hvc3RuYW1lLCB4cC0+ZV9wYXRoLCBpc19l eHBvcnQgIT0gMSkpICYmCistCQkgICAgIShleHAgPSBleHBvcnRfY3JlYXRlKHhwLCBpc19leHBv cnQhPTEpKSkgeworKwl2NHJvb3RfbmVlZGVkID0gMTsKKysJd2hpbGUgKCh4cCA9IGdldGV4cG9y dGVudCgwKSkgIT0gTlVMTCkgeworKwkJaWYgKCEoZXhwID0gZXhwb3J0X2xvb2t1cCh4cC0+ZV9o b3N0bmFtZSwgeHAtPmVfcGF0aCwgMCkpICYmCisrCQkgICAgIShleHAgPSBleHBvcnRfY3JlYXRl KHhwLCAwKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZih4cC0+ZV9ob3N0bmFtZSkg eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlKHhwLT5lX2hvc3RuYW1lKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgeHAtPmVfaG9zdG5hbWU9TlVMTDsKK0BAIC02MCwx NyArNTYsMTAgQEAgeHRhYl9yZWFkKGNoYXIgKnh0YWIsIGNoYXIgKmxvY2tmbiwgaW50IGlzX2V4 cG9ydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICB9CisgCQkJY29udGludWU7CisgCQl9Cist CQlzd2l0Y2ggKGlzX2V4cG9ydCkgeworLQkJY2FzZSAwOgorLQkJCWV4cC0+bV9leHBvcnRlZCA9 IDE7CistCQkJYnJlYWs7CistCQljYXNlIDE6CistCQkJZXhwLT5tX3h0YWJlbnQgPSAxOworLQkJ CWV4cC0+bV9tYXlleHBvcnQgPSAxOworLQkJCWlmICgoeHAtPmVfZmxhZ3MgJiBORlNFWFBfRlNJ RCkgJiYgeHAtPmVfZnNpZCA9PSAwKQorLQkJCQl2NHJvb3RfbmVlZGVkID0gMDsKKy0JCQlicmVh azsKKy0JCX0gIAorKwkJZXhwLT5tX3h0YWJlbnQgPSAxOworKwkJZXhwLT5tX21heWV4cG9ydCA9 IDE7CisrCQlpZiAoKHhwLT5lX2ZsYWdzICYgTkZTRVhQX0ZTSUQpICYmIHhwLT5lX2ZzaWQgPT0g MCkKKysJCQl2NHJvb3RfbmVlZGVkID0gMDsKKyAgICAgICAgICAgICAgICAgaWYoeHAtPmVfaG9z dG5hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgIGZyZWUoeHAtPmVfaG9zdG5hbWUpOworICAg ICAgICAgICAgICAgICAgICAgeHAtPmVfaG9zdG5hbWU9TlVMTDsKK0BAIC05MCw3ICs3OSw3IEBA IHh0YWJfcmVhZChjaGFyICp4dGFiLCBjaGFyICpsb2NrZm4sIGludCBpc19leHBvcnQpCisgaW50 CisgeHRhYl9leHBvcnRfcmVhZCh2b2lkKQorIHsKKy0JcmV0dXJuIHh0YWJfcmVhZChldGFiLnN0 YXRlZm4sIGV0YWIubG9ja2ZuLCAxKTsKKysJcmV0dXJuIHh0YWJfcmVhZChldGFiLnN0YXRlZm4s IGV0YWIubG9ja2ZuKTsKKyB9CisgCisgLyoKK0BAIC0xMDAsNyArODksNyBAQCB4dGFiX2V4cG9y dF9yZWFkKHZvaWQpCisgICogZml4IHRoZSBhdXRoX3JlbG9hZCBsb2dpYyBhcyB3ZWxsLi4uCisg ICovCisgc3RhdGljIGludAorLXh0YWJfd3JpdGUoY2hhciAqeHRhYiwgY2hhciAqeHRhYnRtcCwg Y2hhciAqbG9ja2ZuLCBpbnQgaXNfZXhwb3J0KQorK3h0YWJfd3JpdGUoY2hhciAqeHRhYiwgY2hh ciAqeHRhYnRtcCwgY2hhciAqbG9ja2ZuKQorIHsKKyAJc3RydWN0IGV4cG9ydGVudAl4ZTsKKyAJ bmZzX2V4cG9ydAkJKmV4cDsKK0BAIC0xMTQsOSArMTAzLDcgQEAgeHRhYl93cml0ZShjaGFyICp4 dGFiLCBjaGFyICp4dGFidG1wLCBjaGFyICpsb2NrZm4sIGludCBpc19leHBvcnQpCisgCisgCWZv ciAoaSA9IDA7IGkgPCBNQ0xfTUFYVFlQRVM7IGkrKykgeworIAkJZm9yIChleHAgPSBleHBvcnRs aXN0W2ldLnBfaGVhZDsgZXhwOyBleHAgPSBleHAtPm1fbmV4dCkgeworLQkJCWlmIChpc19leHBv cnQgJiYgIWV4cC0+bV94dGFiZW50KQorLQkJCQljb250aW51ZTsKKy0JCQlpZiAoIWlzX2V4cG9y dCAmJiAhIGV4cC0+bV9leHBvcnRlZCkKKysJCQlpZiAoIWV4cC0+bV94dGFiZW50KQorIAkJCQlj b250aW51ZTsKKyAKKyAJCQkvKiB3cml0ZSBvdXQgdGhlIGV4cG9ydCBlbnRyeSB1c2luZyB0aGUg RlFETiAqLworQEAgLTEzNyw3ICsxMjQsNyBAQCB4dGFiX3dyaXRlKGNoYXIgKnh0YWIsIGNoYXIg Knh0YWJ0bXAsIGNoYXIgKmxvY2tmbiwgaW50IGlzX2V4cG9ydCkKKyBpbnQKKyB4dGFiX2V4cG9y dF93cml0ZSh2b2lkKQorIHsKKy0JcmV0dXJuIHh0YWJfd3JpdGUoZXRhYi5zdGF0ZWZuLCBldGFi LnRtcGZuLCBldGFiLmxvY2tmbiwgMSk7CisrCXJldHVybiB4dGFiX3dyaXRlKGV0YWIuc3RhdGVm biwgZXRhYi50bXBmbiwgZXRhYi5sb2NrZm4pOworIH0KKyAKKyAvKgorZGlmZiAtLWdpdCBhL3N1 cHBvcnQvaW5jbHVkZS9jb21wYXQuaCBiL3N1cHBvcnQvaW5jbHVkZS9jb21wYXQuaAorbmV3IGZp bGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwLi44MzIyOWI2NQorLS0tIC9kZXYvbnVsbAor KysrIGIvc3VwcG9ydC9pbmNsdWRlL2NvbXBhdC5oCitAQCAtMCwwICsxLDEwIEBACisrI2lmbmRl ZiBDT01QQVRfSAorKyNkZWZpbmUgQ09NUEFUX0gKKysKKysjaW5jbHVkZSA8bGludXgvbmV0bGlu ay5oPgorKworKyNpZm5kZWYgTkVUTElOS19FWFRfQUNLCisrI2RlZmluZSBORVRMSU5LX0VYVF9B Q0sgMTEKKysjZW5kaWYKKysKKysjZW5kaWYgLyogQ09NUEFUX0ggKi8KK2RpZmYgLS1naXQgYS9z dXBwb3J0L2luY2x1ZGUvbmZzZF9uZXRsaW5rLmggYi9zdXBwb3J0L2luY2x1ZGUvbmZzZF9uZXRs aW5rLmgKK2luZGV4IDJkNzA4ZDI0Li44N2RhMWQwYiAxMDA2NDQKKy0tLSBhL3N1cHBvcnQvaW5j bHVkZS9uZnNkX25ldGxpbmsuaAorKysrIGIvc3VwcG9ydC9pbmNsdWRlL25mc2RfbmV0bGluay5o CitAQCAtMTUxLDE1ICsxNTEsNiBAQCBlbnVtIHsKKyAJTkZTRF9BX0FVVEhfRkxBVk9SX01BWCA9 IChfX05GU0RfQV9BVVRIX0ZMQVZPUl9NQVggLSAxKQorIH07CisgCistZW51bSB7CistCU5GU0Rf QV9TVkNfRVhQT1JUX1JFUV9TRVFOTyA9IDEsCistCU5GU0RfQV9TVkNfRVhQT1JUX1JFUV9DTElF TlQsCistCU5GU0RfQV9TVkNfRVhQT1JUX1JFUV9QQVRILAorLQorLQlfX05GU0RfQV9TVkNfRVhQ T1JUX1JFUV9NQVgsCistCU5GU0RfQV9TVkNfRVhQT1JUX1JFUV9NQVggPSAoX19ORlNEX0FfU1ZD X0VYUE9SVF9SRVFfTUFYIC0gMSkKKy19OworLQorIGVudW0geworIAlORlNEX0FfU1ZDX0VYUE9S VF9TRVFOTyA9IDEsCisgCU5GU0RfQV9TVkNfRVhQT1JUX0NMSUVOVCwKK0BAIC0yMTMsNiArMjA0 LDYyIEBAIGVudW0geworIAlORlNEX0FfQ0FDSEVfRkxVU0hfTUFYID0gKF9fTkZTRF9BX0NBQ0hF X0ZMVVNIX01BWCAtIDEpCisgfTsKKyAKKytlbnVtIHsKKysJTkZTRF9BX1VOTE9DS19JUF9BRERS RVNTID0gMSwKKysKKysJX19ORlNEX0FfVU5MT0NLX0lQX01BWCwKKysJTkZTRF9BX1VOTE9DS19J UF9NQVggPSAoX19ORlNEX0FfVU5MT0NLX0lQX01BWCAtIDEpCisrfTsKKysKKytlbnVtIHsKKysJ TkZTRF9BX1VOTE9DS19GSUxFU1lTVEVNX1BBVEggPSAxLAorKworKwlfX05GU0RfQV9VTkxPQ0tf RklMRVNZU1RFTV9NQVgsCisrCU5GU0RfQV9VTkxPQ0tfRklMRVNZU1RFTV9NQVggPSAoX19ORlNE X0FfVU5MT0NLX0ZJTEVTWVNURU1fTUFYIC0gMSkKKyt9OworKworK2VudW0geworKwlORlNEX0Ff VU5MT0NLX0VYUE9SVF9QQVRIID0gMSwKKysKKysJX19ORlNEX0FfVU5MT0NLX0VYUE9SVF9NQVgs CisrCU5GU0RfQV9VTkxPQ0tfRVhQT1JUX01BWCA9IChfX05GU0RfQV9VTkxPQ0tfRVhQT1JUX01B WCAtIDEpCisrfTsKKysKKytlbnVtIHsKKysJTkZTRF9BX1NFUlZFUl9QUk9DX0VOVFJZX09QID0g MSwKKysJTkZTRF9BX1NFUlZFUl9QUk9DX0VOVFJZX0NPVU5ULAorKwlORlNEX0FfU0VSVkVSX1BS T0NfRU5UUllfUEFELAorKworKwlfX05GU0RfQV9TRVJWRVJfUFJPQ19FTlRSWV9NQVgsCisrCU5G U0RfQV9TRVJWRVJfUFJPQ19FTlRSWV9NQVggPSAoX19ORlNEX0FfU0VSVkVSX1BST0NfRU5UUllf TUFYIC0gMSkKKyt9OworKworK2VudW0geworKwlORlNEX0FfU0VSVkVSX1NUQVRTX1JDX0hJVFMg PSAxLAorKwlORlNEX0FfU0VSVkVSX1NUQVRTX1JDX01JU1NFUywKKysJTkZTRF9BX1NFUlZFUl9T VEFUU19SQ19OT0NBQ0hFLAorKwlORlNEX0FfU0VSVkVSX1NUQVRTX1BBRCwKKysJTkZTRF9BX1NF UlZFUl9TVEFUU19GSF9TVEFMRSwKKysJTkZTRF9BX1NFUlZFUl9TVEFUU19JT19SRUFELAorKwlO RlNEX0FfU0VSVkVSX1NUQVRTX0lPX1dSSVRFLAorKwlORlNEX0FfU0VSVkVSX1NUQVRTX05FVENO VCwKKysJTkZTRF9BX1NFUlZFUl9TVEFUU19ORVRVRFBDTlQsCisrCU5GU0RfQV9TRVJWRVJfU1RB VFNfTkVUVENQQ05ULAorKwlORlNEX0FfU0VSVkVSX1NUQVRTX05FVFRDUENPTk4sCisrCU5GU0Rf QV9TRVJWRVJfU1RBVFNfUlBDQ05ULAorKwlORlNEX0FfU0VSVkVSX1NUQVRTX1JQQ0JBREZNVCwK KysJTkZTRF9BX1NFUlZFUl9TVEFUU19SUENCQURBVVRILAorKwlORlNEX0FfU0VSVkVSX1NUQVRT X1JQQ0JBRENMTlQsCisrCU5GU0RfQV9TRVJWRVJfU1RBVFNfUFJPQzJfT1BTLAorKwlORlNEX0Ff U0VSVkVSX1NUQVRTX1BST0MzX09QUywKKysJTkZTRF9BX1NFUlZFUl9TVEFUU19QUk9DNF9PUFMs CisrCU5GU0RfQV9TRVJWRVJfU1RBVFNfUFJPQzRPUFNfT1BTLAorKwlORlNEX0FfU0VSVkVSX1NU QVRTX1BST0M0Q0JfT1BTLAorKworKwlfX05GU0RfQV9TRVJWRVJfU1RBVFNfTUFYLAorKwlORlNE X0FfU0VSVkVSX1NUQVRTX01BWCA9IChfX05GU0RfQV9TRVJWRVJfU1RBVFNfTUFYIC0gMSkKKyt9 OworKworIGVudW0geworIAlORlNEX0NNRF9SUENfU1RBVFVTX0dFVCA9IDEsCisgCU5GU0RfQ01E X1RIUkVBRFNfU0VULAorQEAgLTIyOSw2ICsyNzYsMTAgQEAgZW51bSB7CisgCU5GU0RfQ01EX0VY UEtFWV9HRVRfUkVRUywKKyAJTkZTRF9DTURfRVhQS0VZX1NFVF9SRVFTLAorIAlORlNEX0NNRF9D QUNIRV9GTFVTSCwKKysJTkZTRF9DTURfVU5MT0NLX0lQLAorKwlORlNEX0NNRF9VTkxPQ0tfRklM RVNZU1RFTSwKKysJTkZTRF9DTURfVU5MT0NLX0VYUE9SVCwKKysJTkZTRF9DTURfU0VSVkVSX1NU QVRTX0dFVCwKKyAKKyAJX19ORlNEX0NNRF9NQVgsCisgCU5GU0RfQ01EX01BWCA9IChfX05GU0Rf Q01EX01BWCAtIDEpCitkaWZmIC0tZ2l0IGEvc3VwcG9ydC9pbmNsdWRlL25mc2RubC5oIGIvc3Vw cG9ydC9pbmNsdWRlL25mc2RubC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAw MDAuLjM1MjgwMWU1CistLS0gL2Rldi9udWxsCisrKysgYi9zdXBwb3J0L2luY2x1ZGUvbmZzZG5s LmgKK0BAIC0wLDAgKzEsMzQgQEAKKysvKgorKyAqIEhlbHBlciBmb3Igc2VuZGluZyBuZnNkIGdl bmVyaWMgbmV0bGluayBjb21tYW5kcy4KKysgKgorKyAqIFVzZWQgYnkgYm90aCBuZnNkY3RsIGFu ZCBleHBvcnRmcy4KKysgKi8KKysKKysjaWZuZGVmIE5GU19VVElMU19ORlNETkxfSAorKyNkZWZp bmUgTkZTX1VUSUxTX05GU0ROTF9ICisrCisrI2lmZGVmIEhBVkVfTkZTRF9ORVRMSU5LCisrCisr LyoqCisrICogbmZzZF9ubF9jbWRfc3RyIC0gc2VuZCBhbiBuZnNkIG5ldGxpbmsgY29tbWFuZCBj YXJyeWluZyBhIHN0cmluZyBhdHRyaWJ1dGUKKysgKiBAY21kOiAgIE5GU0RfQ01EXyogY29tbWFu ZCBudW1iZXIKKysgKiBAYXR0cjogIE5GU0RfQV8qIGF0dHJpYnV0ZSBudW1iZXIKKysgKiBAdmFs dWU6IE5VTC10ZXJtaW5hdGVkIHN0cmluZyB2YWx1ZSBmb3IgdGhlIGF0dHJpYnV0ZQorKyAqCisr ICogT3BlbnMgYSBnZW5ldGxpbmsgY29ubmVjdGlvbiwgcmVzb2x2ZXMgdGhlICJuZnNkIiBmYW1p bHksIHNlbmRzIGEKKysgKiBzaW5nbGUgImRvIiBjb21tYW5kIHdpdGggb25lIHN0cmluZyBhdHRy aWJ1dGUsIHdhaXRzIGZvciB0aGUgQUNLLAorKyAqIGFuZCBjbGVhbnMgdXAuCisrICoKKysgKiBS ZXR1cm5zIDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuCisrICov CisraW50IG5mc2RfbmxfY21kX3N0cihpbnQgY21kLCBpbnQgYXR0ciwgY29uc3QgY2hhciAqdmFs dWUpOworKworKyNlbHNlCisrCisrc3RhdGljIGlubGluZSBpbnQgbmZzZF9ubF9jbWRfc3RyKGlu dCBjbWQsIGludCBhdHRyLCBjb25zdCBjaGFyICp2YWx1ZSkKKyt7CisrCXJldHVybiAtRU5PU1lT OworK30KKysKKysjZW5kaWYgLyogSEFWRV9ORlNEX05FVExJTksgKi8KKysjZW5kaWYgLyogTkZT X1VUSUxTX05GU0ROTF9IICovCitkaWZmIC0tZ2l0IGEvc3VwcG9ydC9uZnMvTWFrZWZpbGUuYW0g Yi9zdXBwb3J0L25mcy9NYWtlZmlsZS5hbQoraW5kZXggNWJmZDcxYTkuLjY0YWQ1ZDA3IDEwMDY0 NAorLS0tIGEvc3VwcG9ydC9uZnMvTWFrZWZpbGUuYW0KKysrKyBiL3N1cHBvcnQvbmZzL01ha2Vm aWxlLmFtCitAQCAtMTEsNiArMTEsMTMgQEAgbGlibmZzX2xhX1NPVVJDRVMgPSBleHBvcnRzLmMg cm10YWIuYyB4aW8uYyBycGNtaXNjLmMgcnBjZGlzcGF0Y2guYyBcCisgbGlibmZzX2xhX0xJQkFE RCA9IGxpYm5mc2NvbmYubGEgLWx1dWlkCisgbGlibmZzX2xhX0NQUEZMQUdTID0gJChBTV9DUFBG TEFHUykgJChDUFBGTEFHUykgLUkkKHRvcF9zcmNkaXIpL3N1cHBvcnQvcmVleHBvcnQKKyAKKytp ZiBDT05GSUdfTkZTRENUTAorK2xpYm5mc19sYV9TT1VSQ0VTICs9IG5mc2RubC5jCisrbGlibmZz X2xhX0NQUEZMQUdTICs9ICQoTElCTkwzX0NGTEFHUykgJChMSUJOTEdFTkwzX0NGTEFHUykgXAor KwkJICAgICAgLUkkKHRvcF9zcmNkaXIpL3V0aWxzL25mc2RjdGwKKytsaWJuZnNfbGFfTElCQURE ICs9ICQoTElCTkwzX0xJQlMpICQoTElCTkxHRU5MM19MSUJTKQorK2VuZGlmCisrCisgbGlibmZz Y29uZl9sYV9TT1VSQ0VTID0gY29uZmZpbGUuYyB4bG9nLmMKKyAKKyBNQUlOVEFJTkVSQ0xFQU5G SUxFUyA9IE1ha2VmaWxlLmluCitkaWZmIC0tZ2l0IGEvc3VwcG9ydC9uZnMvZmhfa2V5X2ZpbGUu YyBiL3N1cHBvcnQvbmZzL2ZoX2tleV9maWxlLmMKK2luZGV4IDVmNWVhZmMxLi44MWVhMTUwMCAx MDA2NDQKKy0tLSBhL3N1cHBvcnQvbmZzL2ZoX2tleV9maWxlLmMKKysrKyBiL3N1cHBvcnQvbmZz L2ZoX2tleV9maWxlLmMKK0BAIC0yNiw2ICsyNiw3IEBACisgI2luY2x1ZGUgPHN5cy90eXBlcy5o PgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKysjaW5jbHVkZSA8 c3RyaW5nLmg+CisgI2luY2x1ZGUgPHV1aWQvdXVpZC5oPgorIAorICNpbmNsdWRlICJuZnNsaWIu aCIKK2RpZmYgLS1naXQgYS9zdXBwb3J0L25mcy9nZXRwb3J0LmMgYi9zdXBwb3J0L25mcy9nZXRw b3J0LmMKK2luZGV4IDgxM2Y3YmY5Li42MDhlMTg1YiAxMDA2NDQKKy0tLSBhL3N1cHBvcnQvbmZz L2dldHBvcnQuYworKysrIGIvc3VwcG9ydC9uZnMvZ2V0cG9ydC5jCitAQCAtNDUyLDExICs0NTIs MTIgQEAgY2hhciAqbmZzX3NvY2thZGRyMnVuaXZlcnNhbChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIg KnNhcCkKKyAJdWludDE2X3QgcG9ydDsKKyAJc2l6ZV90IGNvdW50OworIAljaGFyICpyZXN1bHQ7 CistCWludCBsZW47CisrCWludCBsZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyKTsKKyAKKyAJ c3dpdGNoIChzYXAtPnNhX2ZhbWlseSkgeworIAljYXNlIEFGX0xPQ0FMOgorLQkJcmV0dXJuIHN0 cm5kdXAoc3VuLT5zdW5fcGF0aCwgc2l6ZW9mKHN1bi0+c3VuX3BhdGgpKTsKKysJCXNpemVfdCBw YXRoX2xlbiA9IGxlbiAtIG9mZnNldG9mKHN0cnVjdCBzb2NrYWRkcl91biwgc3VuX3BhdGgpOwor KwkJcmV0dXJuIHN0cm5kdXAoc3VuLT5zdW5fcGF0aCwgcGF0aF9sZW4pOworIAljYXNlIEFGX0lO RVQ6CisgCQlpZiAoaW5ldF9udG9wKEFGX0lORVQsIChjb25zdCB2b2lkICopJnNpbi0+c2luX2Fk ZHIuc19hZGRyLAorIAkJCQkJYnVmLCAoc29ja2xlbl90KXNpemVvZihidWYpKSA9PSBOVUxMKQor ZGlmZiAtLWdpdCBhL3N1cHBvcnQvbmZzL25mc2RubC5jIGIvc3VwcG9ydC9uZnMvbmZzZG5sLmMK K25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uZGVkMDM1YjkKKy0tLSAvZGV2 L251bGwKKysrKyBiL3N1cHBvcnQvbmZzL25mc2RubC5jCitAQCAtMCwwICsxLDEyNSBAQAorKy8q CisrICogbmZzZG5sLmMgLS0gc2VuZCBuZnNkIGdlbmVyaWMgbmV0bGluayBjb21tYW5kcworKyAq CisrICogSGVscGVyIHNoYXJlZCBieSBuZnNkY3RsIGFuZCBleHBvcnRmcy4KKysgKi8KKysKKysj aWZkZWYgSEFWRV9DT05GSUdfSAorKyNpbmNsdWRlIDxjb25maWcuaD4KKysjZW5kaWYKKysKKysj aW5jbHVkZSA8ZXJybm8uaD4KKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrCisrI2luY2x1ZGUgPG5l dGxpbmsvZ2VubC9nZW5sLmg+CisrI2luY2x1ZGUgPG5ldGxpbmsvZ2VubC9jdHJsLmg+CisrI2lu Y2x1ZGUgPG5ldGxpbmsvbXNnLmg+CisrI2luY2x1ZGUgPG5ldGxpbmsvYXR0ci5oPgorKworKyNp bmNsdWRlICJuZnNsaWIuaCIKKysjaW5jbHVkZSAieGxvZy5oIgorKyNpbmNsdWRlICJuZnNkbmwu aCIKKysKKysjaWZkZWYgVVNFX1NZU1RFTV9ORlNEX05FVExJTktfSAorKyNpbmNsdWRlIDxsaW51 eC9uZnNkX25ldGxpbmsuaD4KKysjZWxzZQorKyNpbmNsdWRlICJuZnNkX25ldGxpbmsuaCIKKysj ZW5kaWYKKysKKysjZGVmaW5lIE5GU0ROTF9CVUZTSVpFCSg0MDk2KQorKworK3N0YXRpYyBpbnQg ZXJyb3JfaGFuZGxlcihzdHJ1Y3Qgc29ja2FkZHJfbmwgKlVOVVNFRChubGEpLCBzdHJ1Y3Qgbmxt c2dlcnIgKmVyciwKKysJCQkgdm9pZCAqYXJnKQorK3sKKysJaW50ICpyZXQgPSBhcmc7CisrCSpy ZXQgPSBlcnItPmVycm9yOworKwlyZXR1cm4gTkxfU1RPUDsKKyt9CisrCisrc3RhdGljIGludCBm aW5pc2hfaGFuZGxlcihzdHJ1Y3QgbmxfbXNnICpVTlVTRUQobXNnKSwgdm9pZCAqYXJnKQorK3sK KysJaW50ICpyZXQgPSBhcmc7CisrCSpyZXQgPSAwOworKwlyZXR1cm4gTkxfU0tJUDsKKyt9Cisr Cisrc3RhdGljIGludCBhY2tfaGFuZGxlcihzdHJ1Y3QgbmxfbXNnICpVTlVTRUQobXNnKSwKKysJ CSAgICAgICB2b2lkICphcmcpCisreworKwlpbnQgKnJldCA9IGFyZzsKKysJKnJldCA9IDA7Cisr CXJldHVybiBOTF9TVE9QOworK30KKysKKysvKioKKysgKiBuZnNkX25sX2NtZF9zdHIgLSBzZW5k IGFuIG5mc2QgbmV0bGluayBjb21tYW5kIGNhcnJ5aW5nIGEgc3RyaW5nIGF0dHJpYnV0ZQorKyAq IEBjbWQ6ICAgTkZTRF9DTURfKiBjb21tYW5kIG51bWJlcgorKyAqIEBhdHRyOiAgTkZTRF9BXyog YXR0cmlidXRlIG51bWJlcgorKyAqIEB2YWx1ZTogTlVMLXRlcm1pbmF0ZWQgc3RyaW5nIHZhbHVl IGZvciB0aGUgYXR0cmlidXRlCisrICoKKysgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBhIG5l Z2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuCisrICovCisraW50IG5mc2RfbmxfY21kX3N0cihpbnQg Y21kLCBpbnQgYXR0ciwgY29uc3QgY2hhciAqdmFsdWUpCisreworKwlzdHJ1Y3QgZ2VubG1zZ2hk ciAqZ2hkcjsKKysJc3RydWN0IG5sX3NvY2sgKnNvY2s7CisrCXN0cnVjdCBubF9tc2cgKm1zZzsK KysJc3RydWN0IG5sX2NiICpjYjsKKysJaW50IGZhbWlseTsKKysJaW50IHJldDsKKysKKysJc29j ayA9IG5sX3NvY2tldF9hbGxvYygpOworKwlpZiAoIXNvY2spCisrCQlyZXR1cm4gLUVOT01FTTsK KysJaWYgKGdlbmxfY29ubmVjdChzb2NrKSkgeworKwkJcmV0ID0gLUVDT05OUkVGVVNFRDsKKysJ CWdvdG8gb3V0X3NvY2s7CisrCX0KKysJbmxfc29ja2V0X3NldF9idWZmZXJfc2l6ZShzb2NrLCBO RlNETkxfQlVGU0laRSwgTkZTRE5MX0JVRlNJWkUpOworKworKwlmYW1pbHkgPSBnZW5sX2N0cmxf cmVzb2x2ZShzb2NrLCBORlNEX0ZBTUlMWV9OQU1FKTsKKysJaWYgKGZhbWlseSA8IDApIHsKKysJ CXJldCA9IGZhbWlseTsKKysJCWdvdG8gb3V0X3NvY2s7CisrCX0KKysKKysJbXNnID0gbmxtc2df YWxsb2MoKTsKKysJaWYgKCFtc2cpIHsKKysJCXJldCA9IC1FTk9NRU07CisrCQlnb3RvIG91dF9z b2NrOworKwl9CisrCWlmICghZ2VubG1zZ19wdXQobXNnLCAwLCAwLCBmYW1pbHksIDAsIDAsIDAs IDApKSB7CisrCQlyZXQgPSAtRU5PTUVNOworKwkJZ290byBvdXRfbXNnOworKwl9CisrCisrCWdo ZHIgPSBubG1zZ19kYXRhKG5sbXNnX2hkcihtc2cpKTsKKysJZ2hkci0+Y21kID0gKF9fdTgpY21k OworKwlubGFfcHV0X3N0cmluZyhtc2csIGF0dHIsIHZhbHVlKTsKKysKKysJY2IgPSBubF9jYl9h bGxvYyhOTF9DQl9DVVNUT00pOworKwlpZiAoIWNiKSB7CisrCQlyZXQgPSAtRU5PTUVNOworKwkJ Z290byBvdXRfbXNnOworKwl9CisrCisrCXJldCA9IG5sX3NlbmRfYXV0byhzb2NrLCBtc2cpOwor KwlpZiAocmV0IDwgMCkKKysJCWdvdG8gb3V0X2NiOworKworKwlyZXQgPSAxOworKwlubF9jYl9l cnIoY2IsIE5MX0NCX0NVU1RPTSwgZXJyb3JfaGFuZGxlciwgJnJldCk7CisrCW5sX2NiX3NldChj YiwgTkxfQ0JfRklOSVNILCBOTF9DQl9DVVNUT00sIGZpbmlzaF9oYW5kbGVyLCAmcmV0KTsKKysJ bmxfY2Jfc2V0KGNiLCBOTF9DQl9BQ0ssIE5MX0NCX0NVU1RPTSwgYWNrX2hhbmRsZXIsICZyZXQp OworKworKwl3aGlsZSAocmV0ID4gMCkKKysJCW5sX3JlY3Ztc2dzKHNvY2ssIGNiKTsKKysKKytv dXRfY2I6CisrCW5sX2NiX3B1dChjYik7Cisrb3V0X21zZzoKKysJbmxtc2dfZnJlZShtc2cpOwor K291dF9zb2NrOgorKwlubF9zb2NrZXRfZnJlZShzb2NrKTsKKysJcmV0dXJuIHJldDsKKyt9Citk aWZmIC0tZ2l0IGEvc3VwcG9ydC9uZnNpZG1hcC9saWJuZnNpZG1hcC5jIGIvc3VwcG9ydC9uZnNp ZG1hcC9saWJuZnNpZG1hcC5jCitpbmRleCBlMTQ3NTg3OS4uNTM3N2EwZWUgMTAwNjQ0CistLS0g YS9zdXBwb3J0L25mc2lkbWFwL2xpYm5mc2lkbWFwLmMKKysrKyBiL3N1cHBvcnQvbmZzaWRtYXAv bGlibmZzaWRtYXAuYworQEAgLTQwOSwxNSArNDA5LDE0IEBAIGludCBuZnM0X2luaXRfbmFtZV9t YXBwaW5nKGNoYXIgKmNvbmZmaWxlKQorIAlpZiAoaWRtYXBfdmVyYm9zaXR5ID49IDEpIHsKKyAJ CXN0cnVjdCBjb25mX2xpc3Rfbm9kZSAqcjsKKyAJCWNoYXIgKmJ1ZiA9IE5VTEw7CistCQlpbnQg c2l6PTA7CisrCQlzaXplX3Qgc2l6ID0gMTsKKyAKKyAJCWlmIChsb2NhbF9yZWFsbXMpIHsKKyAJ CQlUQUlMUV9GT1JFQUNIKHIsICZsb2NhbF9yZWFsbXMtPmZpZWxkcywgbGluaykgeworIAkJCQlz aXogKz0gKHN0cmxlbihyLT5maWVsZCkrNCk7CisgCQkJfQorLQkJCWJ1ZiA9IG1hbGxvYyhzaXop OworKwkJCWJ1ZiA9IGNhbGxvYygxLCBzaXopOworIAkJCWlmIChidWYpIHsKKy0JCQkJKmJ1ZiA9 IDA7CisgCQkJCVRBSUxRX0ZPUkVBQ0gociwgJmxvY2FsX3JlYWxtcy0+ZmllbGRzLCBsaW5rKSB7 CisgCQkJCQlzcHJpbnRmKGJ1ZitzdHJsZW4oYnVmKSwgIiclcycgIiwgci0+ZmllbGQpOworIAkJ CQl9CitkaWZmIC0tZ2l0IGEvc3VwcG9ydC9yZWV4cG9ydC9iYWNrZW5kX3NxbGl0ZS5jIGIvc3Vw cG9ydC9yZWV4cG9ydC9iYWNrZW5kX3NxbGl0ZS5jCitpbmRleCAwZWI1ZWEzNy4uYTFlOTgxZTQg MTAwNjQ0CistLS0gYS9zdXBwb3J0L3JlZXhwb3J0L2JhY2tlbmRfc3FsaXRlLmMKKysrKyBiL3N1 cHBvcnQvcmVleHBvcnQvYmFja2VuZF9zcWxpdGUuYworQEAgLTksNiArOSw4IEBACisgI2luY2x1 ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAKKysjaW5jbHVkZSA8c3lzL3N5 c2NhbGwuaD4KKysKKyAjaWZkZWYgSEFWRV9HRVRSQU5ET00KKyAjIGluY2x1ZGUgPHN5cy9yYW5k b20uaD4KKyAjIGlmICFkZWZpbmVkKFNZU19nZXRyYW5kb20pICYmIGRlZmluZWQoX19OUl9nZXRy YW5kb20pCitkaWZmIC0tZ2l0IGEvdG9vbHMvbmZzLWlvc3RhdC9uZnMtaW9zdGF0LnB5IGIvdG9v bHMvbmZzLWlvc3RhdC9uZnMtaW9zdGF0LnB5CitpbmRleCA2OWQyNGExMS4uYWYwNGFhYzUgMTAw NzU1CistLS0gYS90b29scy9uZnMtaW9zdGF0L25mcy1pb3N0YXQucHkKKysrKyBiL3Rvb2xzL25m cy1pb3N0YXQvbmZzLWlvc3RhdC5weQorQEAgLTMyNyw3ICszMjcsNyBAQCBjbGFzcyBEZXZpY2VE YXRhOgorICAgICAgICAgICAgIHByaW50KCkKKyAgICAgICAgICAgICBwcmludCgnJWQgY29uZ2Vz dGlvbiB3YWl0cycgJSBjb25nZXN0aW9ud2FpdHMpCisgCistICAgIGRlZiBfX3ByaW50X3JwY19v cF9zdGF0cyhzZWxmLCBvcCwgc2FtcGxlX3RpbWUpOgorKyAgICBkZWYgX19wcmludF9ycGNfb3Bf c3RhdHMoc2VsZiwgb3AsIHNhbXBsZV90aW1lLCB1c2VfbWI9RmFsc2UpOgorICAgICAgICAgIiIi UHJpbnQgZ2VuZXJpYyBzdGF0cyBmb3Igb25lIFJQQyBvcAorICAgICAgICAgIiIiCisgICAgICAg ICBpZiBvcCBub3QgaW4gc2VsZi5fX3JwY19kYXRhOgorQEAgLTM0Myw5ICszNDMsMTkgQEAgY2xh c3MgRGV2aWNlRGF0YToKKyAgICAgICAgIGlmIGxlbihycGNfc3RhdHMpID49IDk6CisgICAgICAg ICAgICAgZXJycyA9IGZsb2F0KHJwY19zdGF0c1s4XSkKKyAKKysgICAgICAgICMgc2NhbGUgdG8g TUIgaWYgcmVxdWVzdGVkCisrICAgICAgICBpZiB1c2VfbWI6CisrICAgICAgICAgICAgdGhyb3Vn aHB1dCA9IGtpbG9ieXRlcyAvIDEwMjQuMAorKyAgICAgICAgICAgIHRocm91Z2hwdXRfbGFiZWwg PSAnTUIvcycKKysgICAgICAgICAgICBwZXJfb3BfbGFiZWwgPSAnTUIvb3AnCisrICAgICAgICBl bHNlOgorKyAgICAgICAgICAgIHRocm91Z2hwdXQgPSBraWxvYnl0ZXMKKysgICAgICAgICAgICB0 aHJvdWdocHV0X2xhYmVsID0gJ2tCL3MnCisrICAgICAgICAgICAgcGVyX29wX2xhYmVsID0gJ2tC L29wJworKworICAgICAgICAgIyBwcmV2ZW50IGZsb2F0aW5nIHBvaW50IGV4Y2VwdGlvbnMKKyAg ICAgICAgIGlmIG9wcyAhPSAwOgorLSAgICAgICAgICAgIGtiX3Blcl9vcCA9IGtpbG9ieXRlcyAv IG9wcworKyAgICAgICAgICAgIHVuaXRfcGVyX29wID0gdGhyb3VnaHB1dCAvIG9wcworICAgICAg ICAgICAgIHJldHJhbnNfcGVyY2VudCA9IChyZXRyYW5zICogMTAwKSAvIG9wcworICAgICAgICAg ICAgIHJ0dF9wZXJfb3AgPSBydHQgLyBvcHMKKyAgICAgICAgICAgICBleGVfcGVyX29wID0gZXhl IC8gb3BzCitAQCAtMzUzLDcgKzM2Myw3IEBAIGNsYXNzIERldmljZURhdGE6CisgICAgICAgICAg ICAgaWYgbGVuKHJwY19zdGF0cykgPj0gOToKKyAgICAgICAgICAgICAgICAgZXJyc19wZXJjZW50 ID0gKGVycnMgKiAxMDApIC8gb3BzCisgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgIGtiX3Bl cl9vcCA9IDAuMAorKyAgICAgICAgICAgIHVuaXRfcGVyX29wID0gMC4wCisgICAgICAgICAgICAg cmV0cmFuc19wZXJjZW50ID0gMC4wCisgICAgICAgICAgICAgcnR0X3Blcl9vcCA9IDAuMAorICAg ICAgICAgICAgIGV4ZV9wZXJfb3AgPSAwLjAKK0BAIC0zNjQsOCArMzc0LDggQEAgY2xhc3MgRGV2 aWNlRGF0YToKKyAgICAgICAgIG9wICs9ICc6JworICAgICAgICAgcHJpbnQoZm9ybWF0KG9wLmxv d2VyKCksICc8MTZzJyksIGVuZD0nJykKKyAgICAgICAgIHByaW50KGZvcm1hdCgnb3BzL3MnLCAn PjhzJyksIGVuZD0nJykKKy0gICAgICAgIHByaW50KGZvcm1hdCgna0IvcycsICc+MTZzJyksIGVu ZD0nJykKKy0gICAgICAgIHByaW50KGZvcm1hdCgna0Ivb3AnLCAnPjE2cycpLCBlbmQ9JycpCisr ICAgICAgICBwcmludChmb3JtYXQodGhyb3VnaHB1dF9sYWJlbCwgJz4xNnMnKSwgZW5kPScnKQor KyAgICAgICAgcHJpbnQoZm9ybWF0KHBlcl9vcF9sYWJlbCwgJz4xNnMnKSwgZW5kPScnKQorICAg ICAgICAgcHJpbnQoZm9ybWF0KCdyZXRyYW5zJywgJz4xNnMnKSwgZW5kPScnKQorICAgICAgICAg cHJpbnQoZm9ybWF0KCdhdmcgUlRUIChtcyknLCAnPjE2cycpLCBlbmQ9JycpCisgICAgICAgICBw cmludChmb3JtYXQoJ2F2ZyBleGUgKG1zKScsICc+MTZzJyksIGVuZD0nJykKK0BAIC0zNzUsOCAr Mzg1LDggQEAgY2xhc3MgRGV2aWNlRGF0YToKKyAgICAgICAgIHByaW50KCkKKyAKKyAgICAgICAg IHByaW50KGZvcm1hdCgob3BzIC8gc2FtcGxlX3RpbWUpLCAnPjI0LjNmJyksIGVuZD0nJykKKy0g ICAgICAgIHByaW50KGZvcm1hdCgoa2lsb2J5dGVzIC8gc2FtcGxlX3RpbWUpLCAnPjE2LjNmJyks IGVuZD0nJykKKy0gICAgICAgIHByaW50KGZvcm1hdChrYl9wZXJfb3AsICc+MTYuM2YnKSwgZW5k PScnKQorKyAgICAgICAgcHJpbnQoZm9ybWF0KCh0aHJvdWdocHV0IC8gc2FtcGxlX3RpbWUpLCAn PjE2LjNmJyksIGVuZD0nJykKKysgICAgICAgIHByaW50KGZvcm1hdCh1bml0X3Blcl9vcCwgJz4x Ni4zZicpLCBlbmQ9JycpCisgICAgICAgICByZXRyYW5zbWl0cyA9ICd7MDo+MTAuMGZ9ICh7MTo+ My4xZn0lKScuZm9ybWF0KHJldHJhbnMsIHJldHJhbnNfcGVyY2VudCkuc3RyaXAoKQorICAgICAg ICAgcHJpbnQoZm9ybWF0KHJldHJhbnNtaXRzLCAnPjE2JyksIGVuZD0nJykKKyAgICAgICAgIHBy aW50KGZvcm1hdChydHRfcGVyX29wLCAnPjE2LjNmJyksIGVuZD0nJykKK0BAIC0zOTUsOSArNDA1 LDExIEBAIGNsYXNzIERldmljZURhdGE6CisgICAgICAgICAgICAgc2FtcGxlX3RpbWUgPSAxOwor ICAgICAgICAgcmV0dXJuIChzZW5kcyAvIHNhbXBsZV90aW1lKQorIAorLSAgICBkZWYgZGlzcGxh eV9pb3N0YXRzKHNlbGYsIHNhbXBsZV90aW1lLCB3aGljaCk6CisrICAgIGRlZiBkaXNwbGF5X2lv c3RhdHMoc2VsZiwgc2FtcGxlX3RpbWUsIG9wdGlvbnMpOgorICAgICAgICAgIiIiRGlzcGxheSBO RlMgYW5kIFJQQyBzdGF0cyBpbiBhbiBpb3N0YXQtbGlrZSB3YXkKKyAgICAgICAgICIiIgorKyAg ICAgICAgd2hpY2ggPSBvcHRpb25zLndoaWNoCisrICAgICAgICB1c2VfbWIgPSBvcHRpb25zLm1l Z2FieXRlcworICAgICAgICAgc2VuZHMgPSBmbG9hdChzZWxmLl9fcnBjX2RhdGFbJ3JwY3NlbmRz J10pCisgICAgICAgICBpZiBzYW1wbGVfdGltZSA9PSAwOgorICAgICAgICAgICAgIHNhbXBsZV90 aW1lID0gZmxvYXQoc2VsZi5fX25mc19kYXRhWydhZ2UnXSkKK0BAIC00MjMsMjEgKzQzNSwyMSBA QCBjbGFzcyBEZXZpY2VEYXRhOgorICAgICAgICAgcHJpbnQoKQorIAorICAgICAgICAgaWYgd2hp Y2ggPT0gMDoKKy0gICAgICAgICAgICBzZWxmLl9fcHJpbnRfcnBjX29wX3N0YXRzKCdSRUFEJywg c2FtcGxlX3RpbWUpCistICAgICAgICAgICAgc2VsZi5fX3ByaW50X3JwY19vcF9zdGF0cygnV1JJ VEUnLCBzYW1wbGVfdGltZSkKKysgICAgICAgICAgICBzZWxmLl9fcHJpbnRfcnBjX29wX3N0YXRz KCdSRUFEJywgc2FtcGxlX3RpbWUsIHVzZV9tYikKKysgICAgICAgICAgICBzZWxmLl9fcHJpbnRf cnBjX29wX3N0YXRzKCdXUklURScsIHNhbXBsZV90aW1lLCB1c2VfbWIpCisgICAgICAgICBlbGlm IHdoaWNoID09IDE6CistICAgICAgICAgICAgc2VsZi5fX3ByaW50X3JwY19vcF9zdGF0cygnR0VU QVRUUicsIHNhbXBsZV90aW1lKQorLSAgICAgICAgICAgIHNlbGYuX19wcmludF9ycGNfb3Bfc3Rh dHMoJ0FDQ0VTUycsIHNhbXBsZV90aW1lKQorKyAgICAgICAgICAgIHNlbGYuX19wcmludF9ycGNf b3Bfc3RhdHMoJ0dFVEFUVFInLCBzYW1wbGVfdGltZSwgdXNlX21iKQorKyAgICAgICAgICAgIHNl bGYuX19wcmludF9ycGNfb3Bfc3RhdHMoJ0FDQ0VTUycsIHNhbXBsZV90aW1lLCB1c2VfbWIpCisg ICAgICAgICAgICAgc2VsZi5fX3ByaW50X2F0dHJfY2FjaGVfc3RhdHMoc2FtcGxlX3RpbWUpCisg ICAgICAgICBlbGlmIHdoaWNoID09IDI6CistICAgICAgICAgICAgc2VsZi5fX3ByaW50X3JwY19v cF9zdGF0cygnTE9PS1VQJywgc2FtcGxlX3RpbWUpCistICAgICAgICAgICAgc2VsZi5fX3ByaW50 X3JwY19vcF9zdGF0cygnUkVBRERJUicsIHNhbXBsZV90aW1lKQorKyAgICAgICAgICAgIHNlbGYu X19wcmludF9ycGNfb3Bfc3RhdHMoJ0xPT0tVUCcsIHNhbXBsZV90aW1lLCB1c2VfbWIpCisrICAg ICAgICAgICAgc2VsZi5fX3ByaW50X3JwY19vcF9zdGF0cygnUkVBRERJUicsIHNhbXBsZV90aW1l LCB1c2VfbWIpCisgICAgICAgICAgICAgaWYgJ1JFQURESVJQTFVTJyBpbiBzZWxmLl9fcnBjX2Rh dGE6CistICAgICAgICAgICAgICAgIHNlbGYuX19wcmludF9ycGNfb3Bfc3RhdHMoJ1JFQURESVJQ TFVTJywgc2FtcGxlX3RpbWUpCisrICAgICAgICAgICAgICAgIHNlbGYuX19wcmludF9ycGNfb3Bf c3RhdHMoJ1JFQURESVJQTFVTJywgc2FtcGxlX3RpbWUsIHVzZV9tYikKKyAgICAgICAgICAgICBz ZWxmLl9fcHJpbnRfZGlyX2NhY2hlX3N0YXRzKHNhbXBsZV90aW1lKQorICAgICAgICAgZWxpZiB3 aGljaCA9PSAzOgorLSAgICAgICAgICAgIHNlbGYuX19wcmludF9ycGNfb3Bfc3RhdHMoJ1JFQUQn LCBzYW1wbGVfdGltZSkKKy0gICAgICAgICAgICBzZWxmLl9fcHJpbnRfcnBjX29wX3N0YXRzKCdX UklURScsIHNhbXBsZV90aW1lKQorKyAgICAgICAgICAgIHNlbGYuX19wcmludF9ycGNfb3Bfc3Rh dHMoJ1JFQUQnLCBzYW1wbGVfdGltZSwgdXNlX21iKQorKyAgICAgICAgICAgIHNlbGYuX19wcmlu dF9ycGNfb3Bfc3RhdHMoJ1dSSVRFJywgc2FtcGxlX3RpbWUsIHVzZV9tYikKKyAgICAgICAgICAg ICBzZWxmLl9fcHJpbnRfcGFnZV9zdGF0cyhzYW1wbGVfdGltZSkKKyAKKyAgICAgICAgIHN5cy5z dGRvdXQuZmx1c2goKQorQEAgLTUwMCw3ICs1MTIsNyBAQCBkZWYgcHJpbnRfaW9zdGF0X3N1bW1h cnkob2xkLCBuZXcsIGRldmljZXMsIHRpbWUsIG9wdGlvbnMpOgorIAorICAgICBjb3VudCA9IDEK KyAgICAgZm9yIGRldmljZSBpbiBkZXZpY2VzOgorLSAgICAgICAgZGlzcGxheV9zdGF0c1tkZXZp Y2VdLmRpc3BsYXlfaW9zdGF0cyh0aW1lLCBvcHRpb25zLndoaWNoKQorKyAgICAgICAgZGlzcGxh eV9zdGF0c1tkZXZpY2VdLmRpc3BsYXlfaW9zdGF0cyh0aW1lLCBvcHRpb25zKQorIAorICAgICAg ICAgY291bnQgKz0gMQorICAgICAgICAgaWYgKGNvdW50ID4gb3B0aW9ucy5saXN0KToKK0BAIC01 ODUsNiArNTk3LDExIEBAIGNsaWVudCBhcmUgbGlzdGVkLgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0eXBlPSJpbnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSJs aXN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ib25seSBwcmludCBzdGF0 cyBmb3IgZmlyc3QgTElTVCBtb3VudCBwb2ludHMiKQorKyAgICBkaXNwbGF5Z3JvdXAuYWRkX29w dGlvbignLW0nLCAnLS1tZWdhYnl0ZXMnLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBh Y3Rpb249InN0b3JlX3RydWUiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSJt ZWdhYnl0ZXMiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJkaXNwbGF5IHRocm91Z2hwdXQgaW4g bWVnYWJ5dGVzIHBlciBzZWNvbmQgKE1CL3MpIGluc3RlYWQgb2Yga2lsb2J5dGVzIHBlciBzZWNv bmQgKGtCL3MpIikKKyAgICAgcGFyc2VyLmFkZF9vcHRpb25fZ3JvdXAoZGlzcGxheWdyb3VwKQor IAorICAgICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncyhzeXMuYXJndikKK2Rp ZmYgLS1naXQgYS90b29scy9uZnMtaW9zdGF0L25mc2lvc3RhdC5tYW4gYi90b29scy9uZnMtaW9z dGF0L25mc2lvc3RhdC5tYW4KK2luZGV4IDEwNGM3YWI0Li40ZjI0MzE4ZCAxMDA2NDQKKy0tLSBh L3Rvb2xzL25mcy1pb3N0YXQvbmZzaW9zdGF0Lm1hbgorKysrIGIvdG9vbHMvbmZzLWlvc3RhdC9u ZnNpb3N0YXQubWFuCitAQCAtNTYsMTYgKzU2LDE2IEBAIFRoaXMgaXMgdGhlIGxlbmd0aCBvZiB0 aGUgYmFja2xvZyBxdWV1ZS4KKyAuUkUKKyAuUkUKKyAuUlMgOAorLS0gXGZCa0Ivc1xmUgorKy0g XGZCa0IvcyAoTUIvcylcZlIKKyAuUlMKKy1UaGlzIGlzIHRoZSBudW1iZXIgb2Yga0Igd3JpdHRl bi9yZWFkIHBlciBzZWNvbmQuCisrVGhpcyBpcyB0aGUgbnVtYmVyIG9mIGtCIChvciBNQikgd3Jp dHRlbi9yZWFkIHBlciBzZWNvbmQuCisgLlJFCisgLlJFCisgLlJFCisgLlJTIDgKKy0tIFxmQmtC L29wXGZSCisrLSBcZkJrQi9vcCAoTUIvb3ApXGZSCisgLlJTCistVGhpcyBpcyB0aGUgbnVtYmVy IG9mIGtCIHdyaXR0ZW4vcmVhZCBwZXIgZWFjaCBvcGVyYXRpb24uCisrVGhpcyBpcyB0aGUgbnVt YmVyIG9mIGtCIChvciBNQikgd3JpdHRlbi9yZWFkIHBlciBlYWNoIG9wZXJhdGlvbi4KKyAuUkUK KyAuUkUKKyAuUkUKK0BAIC0xMjIsNiArMTIyLDkgQEAgc2hvd3MgaGVscCBtZXNzYWdlIGFuZCBl eGl0CisgLkIgXC1sIExJU1Qgb3IgIiBcLVwtbGlzdD1MSVNUIAorIG9ubHkgcHJpbnQgc3RhdHMg Zm9yIGZpcnN0IExJU1QgbW91bnQgcG9pbnRzCisgLlRQCisrLkIgXC1tIG9yICIgXC1cLW1lZ2Fi eXRlcworK2Rpc3BsYXkgdGhyb3VnaHB1dCBpbiBtZWdhYnl0ZXMgcGVyIHNlY29uZAorKy5UUAor IC5CIFwtcCAiIG9yICIgXC1cLXBhZ2UKKyBkaXNwbGF5cyBzdGF0aXN0aWNzIHJlbGF0ZWQgdG8g dGhlIHBhZ2UgY2FjaGUKKyAuVFAKK2RpZmYgLS1naXQgYS91dGlscy9leHBvcnRmcy9leHBvcnRm cy5jIGIvdXRpbHMvZXhwb3J0ZnMvZXhwb3J0ZnMuYworaW5kZXggOTNmMGJjZDcuLjc2OGQyZGI3 IDEwMDY0NAorLS0tIGEvdXRpbHMvZXhwb3J0ZnMvZXhwb3J0ZnMuYworKysrIGIvdXRpbHMvZXhw b3J0ZnMvZXhwb3J0ZnMuYworQEAgLTM5LDYgKzM5LDE1IEBACisgI2luY2x1ZGUgInhsb2cuaCIK KyAjaW5jbHVkZSAiY29uZmZpbGUuaCIKKyAjaW5jbHVkZSAicmVleHBvcnQuaCIKKysjaW5jbHVk ZSAibmZzZG5sLmgiCisrCisrI2lmZGVmIEhBVkVfTkZTRF9ORVRMSU5LCisrI2lmZGVmIFVTRV9T WVNURU1fTkZTRF9ORVRMSU5LX0gKKysjaW5jbHVkZSA8bGludXgvbmZzZF9uZXRsaW5rLmg+Cisr I2Vsc2UKKysjaW5jbHVkZSAibmZzZF9uZXRsaW5rLmgiCisrI2VuZGlmCisrI2VuZGlmCisgCisg I2luY2x1ZGUgPG5ldGxpbmsvZ2VubC9nZW5sLmg+CisgI2luY2x1ZGUgPG5ldGxpbmsvZ2VubC9j dHJsLmg+CitAQCAtNjMsNiArNzIsNyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlX2xvY2tmaWxlKHZv aWQpOworIAorIHN0YXRpYyBjb25zdCBjaGFyICpsb2NrZmlsZSA9IEVYUF9MT0NLRklMRTsKKyBz dGF0aWMgaW50IF9sb2NrZmQgPSAtMTsKKytzdGF0aWMgaW50IGZfdW5leHBvcnRfYWxsOworIAor IC8qCisgICogSWYgd2UgYXJlbid0IGNhcmVmdWwsIGNoYW5nZXMgbWFkZSBieSBleHBvcnRmcyBj YW4gYmUgbG9zdAorQEAgLTI0Niw3ICsyNTYsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJn dikKKyAJICogZG9uJ3QgY2FyZSBhYm91dCB3aGF0IHNob3VsZCBiZSBleHBvcnRlZCwgYXMgdGhh dAorIAkgKiBtYXkgcmVxdWlyZSBETlMgbG9va3Vwcy4uCisgCSAqLworLQlpZiAoISAoICFmX2V4 cG9ydCAmJiBmX2FsbCkpIHsKKysJZl91bmV4cG9ydF9hbGwgPSAhZl9leHBvcnQgJiYgZl9hbGw7 CisrCWlmICghZl91bmV4cG9ydF9hbGwpIHsKKyAJCS8qIG5vdGU6IHh0YWJfKl9yZWFkIGRvZXMg bm90IHVwZGF0ZSBlbnRyaWVzIGlmIHRoZXkgYWxyZWFkeSBleGlzdCwKKyAJCSAqIHNvIHRoaXMg d2lsbCBub3QgbG9zZSBuZXcgb3B0aW9ucworIAkJICovCitAQCAtMzgwLDYgKzM5MSwyNiBAQCBl eHBvcnRmcyhjaGFyICphcmcsIGNoYXIgKm9wdGlvbnMsIGludCB2ZXJib3NlKQorIAkJeGxvZyhM X0VSUk9SLCAiSW52YWxpZCBleHBvcnQgc3ludGF4OiAlcyIsIGFyZyk7CisgfQorIAorKy8qCisr ICogQ2hlY2sgd2hldGhlciBhbnkgYWN0aXZlIGV4cG9ydCByZW1haW5zIGZvciB0aGUgZ2l2ZW4g cGF0aCBhY3Jvc3MKKysgKiBhbGwgY2xpZW50IHR5cGVzLiAgUmV0dXJucyB0cnVlIGlmIGF0IGxl YXN0IG9uZSBleHBvcnQgc3RpbGwgaGFzCisrICogbV94dGFiZW50IHNldC4KKysgKi8KKytzdGF0 aWMgaW50CisrcGF0aF9zdGlsbF9leHBvcnRlZChjb25zdCBjaGFyICpwYXRoLCBzaXplX3Qgbmxl bikKKyt7CisrCW5mc19leHBvcnQgKmV4cDsKKysJaW50IGk7CisrCisrCWZvciAoaSA9IDA7IGkg PCBNQ0xfTUFYVFlQRVM7IGkrKykKKysJCWZvciAoZXhwID0gZXhwb3J0bGlzdFtpXS5wX2hlYWQ7 IGV4cDsgZXhwID0gZXhwLT5tX25leHQpCisrCQkJaWYgKGV4cC0+bV94dGFiZW50ICYmCisrCQkJ ICAgIHN0cmxlbihleHAtPm1fZXhwb3J0LmVfcGF0aCkgPT0gbmxlbiAmJgorKwkJCSAgICBzdHJu Y21wKHBhdGgsIGV4cC0+bV9leHBvcnQuZV9wYXRoLCBubGVuKSA9PSAwKQorKwkJCQlyZXR1cm4g MTsKKysJcmV0dXJuIDA7CisrfQorKworIHN0YXRpYyB2b2lkCisgdW5leHBvcnRmc19wYXJzZWQo Y2hhciAqaG5hbWUsIGNoYXIgKnBhdGgsIGludCB2ZXJib3NlKQorIHsKK0BAIC00MzQsOSArNDY1 LDM5IEBAIHVuZXhwb3J0ZnNfcGFyc2VkKGNoYXIgKmhuYW1lLCBjaGFyICpwYXRoLCBpbnQgdmVy Ym9zZSkKKyAJCWV4cC0+bV9tYXlleHBvcnQgPSAwOworIAkJc3VjY2VzcyA9IDE7CisgCX0KKy0J aWYgKCFzdWNjZXNzKQorKwlpZiAoIXN1Y2Nlc3MpIHsKKyAJCXhsb2coTF9FUlJPUiwgIkNvdWxk IG5vdCBmaW5kICclczolcycgdG8gdW5leHBvcnQuIiwgaG5hbWUsIHBhdGgpOworKwkJZ290byBv dXQ7CisrCX0KKyAKKysJLyoKKysJICogSWYgbm8gZXhwb3J0cyByZW1haW4gZm9yIHRoaXMgcGF0 aCwgYXNrIHRoZSBrZXJuZWwgdG8KKysJICogcmV2b2tlIGFueSBORlN2NCBzdGF0ZSBhbmQgY2xv c2UgY2FjaGVkIGZpbGUgaGFuZGxlcworKwkgKiBhc3NvY2lhdGVkIHdpdGggZXhwb3J0cyBvZiB0 aGlzIHBhdGguICBUaGlzIGVuYWJsZXMgdGhlCisrCSAqIHVuZGVybHlpbmcgZmlsZXN5c3RlbSB0 byBiZSB1bm1vdW50ZWQuCisrCSAqCisrCSAqIFNraXAgdGhpcyBkdXJpbmcgImV4cG9ydGZzIC11 YSIgLS0gdGhhdCBpcyBhIHNodXRkb3duCisrCSAqIG9wZXJhdGlvbi4gIENsaWVudHMgc2hvdWxk IHdhaXQgZm9yIG5mc2QgdG8gcmVzdGFydCBhbmQKKysJICogcmVjbGFpbSBzdGF0ZSB0aHJvdWdo IHRoZSBncmFjZSBwZXJpb2QgcmF0aGVyIHRoYW4KKysJICogcmVjZWl2aW5nIE5GUzRFUlJfQURN SU5fUkVWT0tFRC4KKysJICovCisrI2lmZGVmIEhBVkVfTkZTRF9ORVRMSU5LCisrCWlmICghZl91 bmV4cG9ydF9hbGwgJiYgIXBhdGhfc3RpbGxfZXhwb3J0ZWQocGF0aCwgbmxlbikpIHsKKysJCWNo YXIgcGF0aGJ1ZltORlNfTUFYUEFUSExFTiArIDFdOworKwkJaW50IHJldDsKKysKKysJCW1lbWNw eShwYXRoYnVmLCBwYXRoLCBubGVuKTsKKysJCXBhdGhidWZbbmxlbl0gPSAnXDAnOworKwkJcmV0 ID0gbmZzZF9ubF9jbWRfc3RyKE5GU0RfQ01EX1VOTE9DS19FWFBPUlQsCisrCQkJCSAgICAgIE5G U0RfQV9VTkxPQ0tfRVhQT1JUX1BBVEgsCisrCQkJCSAgICAgIHBhdGhidWYpOworKwkJaWYgKHJl dCAmJiByZXQgIT0gLUVOT1NZUykKKysJCQl4bG9nKExfV0FSTklORywKKysJCQkgICAgICJGYWls ZWQgdG8gcmVsZWFzZSBzdGF0ZSBmb3IgJXM6ICVzIiwKKysJCQkgICAgIHBhdGhidWYsIHN0cmVy cm9yKC1yZXQpKTsKKysJfQorKyNlbmRpZgorK291dDoKKyAJbmZzX2ZyZWVhZGRyaW5mbyhhaSk7 CisgfQorIAorZGlmZiAtLWdpdCBhL3V0aWxzL2V4cG9ydGZzL2V4cG9ydGZzLm1hbiBiL3V0aWxz L2V4cG9ydGZzL2V4cG9ydGZzLm1hbgoraW5kZXggMzczN2VlODEuLmI1ZTBjNjNhIDEwMDY0NAor LS0tIGEvdXRpbHMvZXhwb3J0ZnMvZXhwb3J0ZnMubWFuCisrKysgYi91dGlscy9leHBvcnRmcy9l eHBvcnRmcy5tYW4KK0BAIC0yNTYsNiArMjU2LDIzIEBAIHBhaXIuIFRoaXMgZGVsZXRlcyB0aGUg c3BlY2lmaWVkIGVudHJ5IGZyb20KKyAuSSAvdmFyL2xpYi9uZnMvZXRhYgorIGFuZCByZW1vdmVz IHRoZSBjb3JyZXNwb25kaW5nIGtlcm5lbCBlbnRyeSAoaWYgYW55KS4KKyAuUFAKKytXaGVuIHRo ZSBsYXN0IGNsaWVudCBmb3IgYSBnaXZlbiBleHBvcnQgcGF0aCBpcyB1bmV4cG9ydGVkLAorKy5C IGV4cG9ydGZzCisrc2lnbmFscyB0aGUga2VybmVsIHRvIHJldm9rZSBORlN2NCBzdGF0ZSAob3Bl bnMsIGxvY2tzLCBhbmQKKytkZWxlZ2F0aW9ucykgYW5kIHJlbGVhc2UgY2FjaGVkIHN0YXRlIGZv ciB0aGF0IHBhdGguCisrV2l0aG91dCB0aGlzIHJldm9jYXRpb24sIHJldGFpbmVkIHN0YXRlIHdv dWxkIHByZXZlbnQgdGhlCisrdW5kZXJseWluZyBmaWxlc3lzdGVtIGZyb20gYmVpbmcgdW5tb3Vu dGVkLgorK0FmZmVjdGVkIGNsaWVudHMgcmVjZWl2ZQorKy5CIE5GUzRFUlJfQURNSU5fUkVWT0tF RAorK2Vycm9ycyBmb3Igb3BlcmF0aW9ucyB0aGF0IHVzZSByZXZva2VkIHN0YXRlLgorKy5QUAor Ky5CICJleHBvcnRmcyBcLXVhIgorK2RvZXMgbm90IHJldm9rZSBORlN2NCBzdGF0ZSwgaG93ZXZl ci4KKytJZgorKy5CIG5mc2QKKytpcyB0aGVuIHJlc3RhcnRlZCwgY2xpZW50cyBtYXkgcmVjbGFp bSBzdGF0ZSBkdXJpbmcgdGhlCisrZ3JhY2UgcGVyaW9kLgorKy5QUAorIC5TUyBEdW1waW5nIHRo ZSBFeHBvcnQgVGFibGUKKyBJbnZva2luZworIC5CIGV4cG9ydGZzCitkaWZmIC0tZ2l0IGEvdXRp bHMvZ3NzZC9nc3NkX3Byb2MuYyBiL3V0aWxzL2dzc2QvZ3NzZF9wcm9jLmMKK2luZGV4IGUwNjBi ZWUzLi5kNTljOGExOSAxMDA2NDQKKy0tLSBhL3V0aWxzL2dzc2QvZ3NzZF9wcm9jLmMKKysrKyBi L3V0aWxzL2dzc2QvZ3NzZF9wcm9jLmMKK0BAIC04OTcsNiArODk3LDkgQEAgb3V0X3NyY2hvc3Q6 CisgCWlmIChpbmZvLT5zcmNob3N0KQorIAkJZnJlZShpbmZvLT5zcmNob3N0KTsKKyBvdXRfaW5m bzoKKysJcHRocmVhZF9tdXRleF9sb2NrKCZjbHBfbG9jayk7CisrCWNscC0+cmVmY291bnQtLTsK KysJcHRocmVhZF9tdXRleF91bmxvY2soJmNscF9sb2NrKTsKKyAJZnJlZShpbmZvKTsKKyAJaW5m byA9IE5VTEw7CisgCWdvdG8gb3V0OworQEAgLTk4MSw2ICs5ODQsNyBAQCBzdGFydF91cGNhbGxf dGhyZWFkKHZvaWQgKCpmdW5jKShzdHJ1Y3QgY2xudF91cGNhbGxfaW5mbyAqKSwgc3RydWN0IGNs bnRfdXBjYWxsXworIAl0aW5mby0+dGltZW91dC50dl9zZWMgKz0gdXBjYWxsX3RpbWVvdXQ7Cisg CVRBSUxRX0lOU0VSVF9UQUlMKCZhY3RpdmVfdGhyZWFkX2xpc3QsIHRpbmZvLCBsaXN0KTsKKyAJ cHRocmVhZF9tdXRleF91bmxvY2soJmFjdGl2ZV90aHJlYWRfbGlzdF9sb2NrKTsKKysJcHRocmVh ZF9hdHRyX2Rlc3Ryb3koJmF0dHIpOworIAorIAlyZXR1cm4gcmV0OworIH0KK2RpZmYgLS1naXQg YS91dGlscy9uZnNkL25mc2QuYyBiL3V0aWxzL25mc2QvbmZzZC5jCitpbmRleCAzNjVlMTQ1ZC4u Yzk1ZDMyZjQgMTAwNjQ0CistLS0gYS91dGlscy9uZnNkL25mc2QuYworKysrIGIvdXRpbHMvbmZz ZC9uZnNkLmMKK0BAIC0zMTEsMTIgKzMxMSwxNiBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJn dikKKyAJCQkJYXJndlswXSwgY291bnQpOworIAkJCWNvdW50ID0gMTsKKyAJCX0gZWxzZSBpZiAo Y291bnQgPT0gMCkgeworLQkJCS8qCistCQkJICogZG9uJ3QgYm90aGVyIHNldHRpbmcgYW55dGhp bmcgZWxzZSBpZiB0aGUgdGhyZWFkcworLQkJCSAqIGFyZSBjb21pbmcgZG93biBhbnl3YXkuCist CQkJICovCistCQkJc29ja2V0X3VwID0gMTsKKy0JCQlnb3RvIHNldF90aHJlYWRzOworKwkJCWlm IChuZnNzdmNfaW51c2UoKSkgeworKwkJCQkvKgorKwkJCQkgKiBkb24ndCBib3RoZXIgc2V0dGlu ZyBhbnl0aGluZyBlbHNlIGlmIHRoZSB0aHJlYWRzCisrCQkJCSAqIGFyZSBjb21pbmcgZG93biBh bnl3YXkuCisrCQkJCSAqLworKwkJCQlzb2NrZXRfdXAgPSAxOworKwkJCQlnb3RvIHNldF90aHJl YWRzOworKwkJCX0gZWxzZSB7CisrCQkJCWdvdG8gb3V0OworKwkJCX0KKyAJCX0KKyAJfQorIAor ZGlmZiAtLWdpdCBhL3V0aWxzL25mc2RjdGwvbmZzZGN0bC5jIGIvdXRpbHMvbmZzZGN0bC9uZnNk Y3RsLmMKK2luZGV4IDAxNmRkMmViLi5jNzEyNjc0OCAxMDA2NDQKKy0tLSBhL3V0aWxzL25mc2Rj dGwvbmZzZGN0bC5jCisrKysgYi91dGlscy9uZnNkY3RsL25mc2RjdGwuYworQEAgLTI2LDYgKzI2 LDcgQEAKKyAjaW5jbHVkZSA8bmV0bGluay9tc2cuaD4KKyAjaW5jbHVkZSA8bmV0bGluay9hdHRy Lmg+CisgI2luY2x1ZGUgPGxpbnV4L25ldGxpbmsuaD4KKysjaW5jbHVkZSAiY29tcGF0LmgiCisg CisgI2luY2x1ZGUgPHJlYWRsaW5lL3JlYWRsaW5lLmg+CisgI2luY2x1ZGUgPHJlYWRsaW5lL2hp c3RvcnkuaD4KK2RpZmYgLS1naXQgYS91dGlscy9uZnNzdGF0L01ha2VmaWxlLmFtIGIvdXRpbHMv bmZzc3RhdC9NYWtlZmlsZS5hbQoraW5kZXggZDE1NTVhN2QuLjhiMTIxYzQ4IDEwMDY0NAorLS0t IGEvdXRpbHMvbmZzc3RhdC9NYWtlZmlsZS5hbQorKysrIGIvdXRpbHMvbmZzc3RhdC9NYWtlZmls ZS5hbQorQEAgLTUsOCArNSwxMCBAQCBFWFRSQV9ESVNUCT0gJChtYW44X01BTlMpCisgCisgc2Jp bl9QUk9HUkFNUwk9IG5mc3N0YXQKKyBuZnNzdGF0X1NPVVJDRVMgPSBuZnNzdGF0LmMKKytuZnNz dGF0X0NGTEFHUyA9ICQoTElCTkwzX0NGTEFHUykgJChMSUJOTEdFTkwzX0NGTEFHUykKKyBuZnNz dGF0X0xEQUREID0gLi4vLi4vc3VwcG9ydC9leHBvcnQvbGliZXhwb3J0LmEgXAorIAkgICAgICAJ Li4vLi4vc3VwcG9ydC9uZnMvbGlibmZzLmxhIFwKKy0JCS4uLy4uL3N1cHBvcnQvbWlzYy9saWJt aXNjLmEKKysJCS4uLy4uL3N1cHBvcnQvbWlzYy9saWJtaXNjLmEgXAorKwkJJChMSUJOTDNfTElC UykgJChMSUJOTEdFTkwzX0xJQlMpCisgCisgTUFJTlRBSU5FUkNMRUFORklMRVMgPSBNYWtlZmls ZS5pbgorZGlmZiAtLWdpdCBhL3V0aWxzL25mc3N0YXQvbmZzc3RhdC5jIGIvdXRpbHMvbmZzc3Rh dC9uZnNzdGF0LmMKK2luZGV4IGNhODQ1MzI1Li42NzE3YmU1MCAxMDA2NDQKKy0tLSBhL3V0aWxz L25mc3N0YXQvbmZzc3RhdC5jCisrKysgYi91dGlscy9uZnNzdGF0L25mc3N0YXQuYworQEAgLTIz LDYgKzIzLDE3IEBACisgI2luY2x1ZGUgPHNpZ25hbC5oPgorICNpbmNsdWRlIDx0aW1lLmg+Cisg CisrI2luY2x1ZGUgPG5ldGxpbmsvZ2VubC9nZW5sLmg+CisrI2luY2x1ZGUgPG5ldGxpbmsvZ2Vu bC9jdHJsLmg+CisrI2luY2x1ZGUgPG5ldGxpbmsvbXNnLmg+CisrI2luY2x1ZGUgPG5ldGxpbmsv YXR0ci5oPgorKworKyNpZmRlZiBVU0VfU1lTVEVNX05GU0RfTkVUTElOS19ICisrI2luY2x1ZGUg PGxpbnV4L25mc2RfbmV0bGluay5oPgorKyNlbHNlCisrI2luY2x1ZGUgIm5mc2RfbmV0bGluay5o IgorKyNlbmRpZgorKworICNkZWZpbmUgTUFYTlJWQUxTCTMyCisgCisgZW51bSB7CitAQCAtMzMs NiArNDQsOCBAQCBlbnVtIHsKKyAJU1JWUFJPQzRfU1ogPSAyLAorIAlDTFRQUk9DNF9TWiA9IDU5 LAorIAlTUlZQUk9DNE9QU19TWiA9IDcxLAorKwlTUlZQUk9DNENCX1NaID0gMTYsCS8qIGluZGV4 ZWQgYnkgY2FsbGJhY2sgb3Bjb2RlOyBPUF9DQl9PRkZMT0FEID09IDE1ICovCisrCVNSVlBST0M0 Q0JfRklSU1QgPSAzLAkvKiBmaXJzdCBhc3NpZ25lZCBjYWxsYmFjayBvcGNvZGUsIE9QX0NCX0dF VEFUVFIgKi8KKyB9OworIAorIHN0YXRpYyB1bnNpZ25lZCBpbnQJc3J2cHJvYzJpbmZvW1NSVlBS T0MyX1NaKzJdLAorQEAgLTQ5LDYgKzYyLDggQEAgc3RhdGljIHVuc2lnbmVkIGludAljbHRwcm9j NGluZm9bQ0xUUFJPQzRfU1orMl0sCisgCQkJY2x0cHJvYzRpbmZvX29sZFtDTFRQUk9DNF9TWisy XTsJLyogTkZTdjQgY2FsbCBjb3VudHMgKFswXSA9PSA0OSkgKi8KKyBzdGF0aWMgdW5zaWduZWQg aW50CXNydnByb2M0b3BzaW5mb1tTUlZQUk9DNE9QU19TWisyXSwKKyAJCQlzcnZwcm9jNG9wc2lu Zm9fb2xkW1NSVlBST0M0T1BTX1NaKzJdOwkvKiBORlN2NCBjYWxsIGNvdW50cyAoWzBdID09IDU5 KSAqLworK3N0YXRpYyB1bnNpZ25lZCBpbnQJc3J2cHJvYzRjYmluZm9bU1JWUFJPQzRDQl9TWisy XSwKKysJCQlzcnZwcm9jNGNiaW5mb19vbGRbU1JWUFJPQzRDQl9TWisyXTsJLyogTkZTdjQgY2Fs bGJhY2sgb3AgY291bnRzIChuZXRsaW5rIG9ubHksIFswXSA9PSAxNikgKi8KKyBzdGF0aWMgdW5z aWduZWQgaW50CXNydm5ldGluZm9bNV0sIHNydm5ldGluZm9fb2xkWzVdOwkvKiAwICAjIG9mIHJl Y2VpdmVkIHBhY2tldHMKKyAJCQkJCQkJCSAqIDEgIFVEUCBwYWNrZXRzCisgCQkJCQkJCQkgKiAy ICBUQ1AgcGFja2V0cworQEAgLTE5Niw2ICsyMTEsMTkgQEAgc3RhdGljIGNvbnN0IGNoYXIgKiAg ICAgbmZzc3J2cHJvYzRvcG5hbWVbU1JWUFJPQzRPUFNfU1pdID0geworIAkid3JpdGVfc2FtZSIs CisgfTsKKyAKKysvKgorKyAqIE5GU3Y0IGNhbGxiYWNrIChiYWNrY2hhbm5lbCkgb3BlcmF0aW9u cywgaW5kZXhlZCBkaXJlY3RseSBieSBSRkMgODg4MQorKyAqIGNhbGxiYWNrIG9wY29kZS4gIE9w Y29kZXMgMC0yIGFyZSBub3QgYXNzaWduZWQsIHNvIHRoZSBmaXJzdCB0aHJlZSBzbG90cworKyAq IGFyZSBwbGFjZWhvbGRlcnMgdG8ga2VlcCB0aGUgYXJyYXkgaW5kZXggYWxpZ25lZCB3aXRoIHRo ZSBvcGNvZGUgdmFsdWU7CisrICogZGlzcGxheSBzdGFydHMgYXQgU1JWUFJPQzRDQl9GSVJTVCBh bmQgbmV2ZXIgcHJpbnRzIHRoZW0uCisrICovCisrc3RhdGljIGNvbnN0IGNoYXIgKgluZnNzcnZw cm9jNGNibmFtZVtTUlZQUk9DNENCX1NaXSA9IHsKKysJIm9wMC11bnVzZWQiLAkib3AxLXVudXNl ZCIsCSJvcDItdW51c2VkIiwJImNiX2dldGF0dHIiLAorKwkiY2JfcmVjYWxsIiwJImNiX2xheW91 dHJlY2FsbCIsICJjYl9ub3RpZnkiLAkiY2JfcHVzaF9kZWxlZyIsCisrCSJjYl9yZWNhbGxfYW55 IiwiY2JfcmVjYWxsX29iaiIsImNiX3JlY2FsbF9zbG90IiwgImNiX3NlcXVlbmNlIiwKKysJImNi X3dhbnRzX2NhbmNlbCIsICJjYl9ub3RpZnlfbG9jayIsICJjYl9ub3RpZnlfZGV2aWQiLCAiY2Jf b2ZmbG9hZCIsCisrfTsKKysKKyAjZGVmaW5lIExBQkVMX3Nydm5ldAkJIlNlcnZlciBwYWNrZXQg c3RhdHM6XG4iCisgI2RlZmluZSBMQUJFTF9zcnZycGMJCSJTZXJ2ZXIgcnBjIHN0YXRzOlxuIgor ICNkZWZpbmUgTEFCRUxfc3J2cmMJCSJTZXJ2ZXIgcmVwbHkgY2FjaGU6XG4iCitAQCAtMjA2LDYg KzIzNCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICogICAgIG5mc3NydnByb2M0b3BuYW1lW1NSVlBS T0M0T1BTX1NaXSA9IHsKKyAjZGVmaW5lIExBQkVMX3NydnByb2MzCQkiU2VydmVyIG5mcyB2Mzpc biIKKyAjZGVmaW5lIExBQkVMX3NydnByb2M0CQkiU2VydmVyIG5mcyB2NDpcbiIKKyAjZGVmaW5l IExBQkVMX3NydnByb2M0b3BzCSJTZXJ2ZXIgbmZzIHY0IG9wZXJhdGlvbnM6XG4iCisrI2RlZmlu ZSBMQUJFTF9zcnZwcm9jNGNiCSJTZXJ2ZXIgbmZzIHY0IGNhbGxiYWNrIG9wZXJhdGlvbnM6XG4i CisgI2RlZmluZSBMQUJFTF9jbHRuZXQJCSJDbGllbnQgcGFja2V0IHN0YXRzOlxuIgorICNkZWZp bmUgTEFCRUxfY2x0cnBjCQkiQ2xpZW50IHJwYyBzdGF0czpcbiIKKyAjZGVmaW5lIExBQkVMX2Ns dHByb2MyCQkiQ2xpZW50IG5mcyB2MjpcbiIKK0BAIC0yMzksNiArMjY4LDcgQEAgdHlwZWRlZiBz dHJ1Y3Qgc3RhdGluZm8geworIAkJCQkJU1JWKHByb2MzLHMpLFwKKyAJCQkJCVNSVihwcm9jNCxz KSwgXAorIAkJCQkJU1JWKHByb2M0b3BzLHMpLFwKKysJCQkJCVNSVihwcm9jNGNiLHMpLFwKKyAJ CQkJCXsgTlVMTCwgTlVMTCwgMCwgTlVMTCB9XAorIAkJCQl9CisgI2RlZmluZSBERUNMQVJFX0NM VChuLCBzLi4uKSAgCXN0YXRpYyBzdGF0aW5mbyBuIyNzW10gPSB7IFwKK0BAIC0yNzEsNiArMzAx LDcgQEAgc3RhdGljIHN0YXRpbmZvCQkqZ2V0X3N0YXRfaW5mbyhjb25zdCBjaGFyICosIHN0cnVj dCBzdGF0aW5mbyAqKTsKKyAKKyBzdGF0aWMgaW50CQltb3VudHMoY29uc3QgY2hhciAqKTsKKyAK KytzdGF0aWMgaW50CQlnZXRfc3RhdHNfbmV0bGluayhzdHJ1Y3Qgc3RhdGluZm8gKik7Cisgc3Rh dGljIHZvaWQJCWdldF9zdGF0cyhjb25zdCBjaGFyICosIHN0cnVjdCBzdGF0aW5mbyAqLCBpbnQg KiwgaW50LAorIAkJCQkJaW50KTsKKyBzdGF0aWMgaW50CQloYXNfc3RhdHMoY29uc3QgdW5zaWdu ZWQgaW50ICosIGludCk7CitAQCAtNjcxLDE0ICs3MDIsMjQgQEAgcHJpbnRfc2VydmVyX3N0YXRz KGludCBvcHRfcHJ0KQorIAkJCQkJbmZzc3J2cHJvYzRuYW1lLCBzcnZwcm9jNGluZm8gKyAxLCAK KyAJCQkJCXNpemVvZihuZnNzcnZwcm9jNG5hbWUpL3NpemVvZihjaGFyICopKTsKKyAJCQkJcHJp bnRfY2FsbHN0YXRzKExBQkVMX3NydnByb2M0b3BzLAorLQkJCQkJbmZzc3J2cHJvYzRvcG5hbWUs IHNydnByb2M0b3BzaW5mbyArIDEsIAorKwkJCQkJbmZzc3J2cHJvYzRvcG5hbWUsIHNydnByb2M0 b3BzaW5mbyArIDEsCisgCQkJCQlzaXplb2YobmZzc3J2cHJvYzRvcG5hbWUpL3NpemVvZihjaGFy ICopKTsKKysJCQkJLyoKKysJCQkJICogQ2FsbGJhY2sgb3AgY291bnRzIGFyZSBvbmx5IGF2YWls YWJsZSB2aWEKKysJCQkJICogbmV0bGluazsgc3J2cHJvYzRjYmluZm9bMF0gaXMgbGVmdCB6ZXJv IHdoZW4KKysJCQkJICogc3RhdHMgY29tZSBmcm9tIC9wcm9jLgorKwkJCQkgKi8KKysJCQkJaWYg KHNydnByb2M0Y2JpbmZvWzBdKQorKwkJCQkJcHJpbnRfY2FsbHN0YXRzKExBQkVMX3NydnByb2M0 Y2IsCisrCQkJCQkJbmZzc3J2cHJvYzRjYm5hbWUgKyBTUlZQUk9DNENCX0ZJUlNULAorKwkJCQkJ CXNydnByb2M0Y2JpbmZvICsgMSArIFNSVlBST0M0Q0JfRklSU1QsCisrCQkJCQkJU1JWUFJPQzRD Ql9TWiAtIFNSVlBST0M0Q0JfRklSU1QpOworIAkJCX0KKyAJCX0KKyAJfQorIH0KKyBzdGF0aWMg dm9pZAorLXByaW50X2NsaWVudF9zdGF0cyhpbnQgb3B0X3BydCkgCisrcHJpbnRfY2xpZW50X3N0 YXRzKGludCBvcHRfcHJ0KQorIHsKKyAJaWYgKG9wdF9wcnQgJiBQUk5UX05FVCkgeworIAkJaWYg KG9wdF9zbGVlcCAmJiAhaGFzX3JwY3N0YXRzKGNsdG5ldGluZm8sIDQpKSB7CitAQCAtNzk0LDgg KzgzNSwxMyBAQCBwcmludF9zZXJ2X2xpc3QoaW50IG9wdF9wcnQpCisgCQkJCQluZnNzcnZwcm9j NG5hbWUsIHNydnByb2M0aW5mbyArIDEsIAorIAkJCQkJc2l6ZW9mKG5mc3NydnByb2M0bmFtZSkv c2l6ZW9mKGNoYXIgKikpOworIAkJCQlwcmludF9jYWxsc3RhdHNfbGlzdCgibmZzIHY0IHNlcnZv cCIsCistCQkJCQluZnNzcnZwcm9jNG9wbmFtZSwgc3J2cHJvYzRvcHNpbmZvICsgMSwgCisrCQkJ CQluZnNzcnZwcm9jNG9wbmFtZSwgc3J2cHJvYzRvcHNpbmZvICsgMSwKKyAJCQkJCXNpemVvZihu ZnNzcnZwcm9jNG9wbmFtZSkvc2l6ZW9mKGNoYXIgKikpOworKwkJCQlpZiAoc3J2cHJvYzRjYmlu Zm9bMF0pCisrCQkJCQlwcmludF9jYWxsc3RhdHNfbGlzdCgibmZzIHY0IGNiYWNrIiwKKysJCQkJ CQluZnNzcnZwcm9jNGNibmFtZSArIFNSVlBST0M0Q0JfRklSU1QsCisrCQkJCQkJc3J2cHJvYzRj YmluZm8gKyAxICsgU1JWUFJPQzRDQl9GSVJTVCwKKysJCQkJCQlTUlZQUk9DNENCX1NaIC0gU1JW UFJPQzRDQl9GSVJTVCk7CisgCQkJfQorIAkJfQorIAl9CitAQCAtMTA1MSw2ICsxMDk3LDI3OCBA QCBtb3VudHMoY29uc3QgY2hhciAqbmFtZSkKKyAJcmV0dXJuIDE7CisgfQorIAorKy8qCisrICog TmV0bGluayBoZWxwZXJzIGZvciBmZXRjaGluZyBzZXJ2ZXIgc3RhdHMgdmlhIEdlbmVyaWMgTmV0 bGluay4KKysgKi8KKytzdGF0aWMgaW50IG5sX2Vycm9yX2hhbmRsZXIoc3RydWN0IHNvY2thZGRy X25sICpubGEsIHN0cnVjdCBubG1zZ2VyciAqZXJyLAorKwkJCSAgICB2b2lkICphcmcpCisrewor KwlpbnQgKnJldCA9IGFyZzsKKysKKysJKnJldCA9IGVyci0+ZXJyb3I7CisrCXJldHVybiBOTF9T S0lQOworK30KKysKKytzdGF0aWMgaW50IG5sX2ZpbmlzaF9oYW5kbGVyKHN0cnVjdCBubF9tc2cg Km1zZywgdm9pZCAqYXJnKQorK3sKKysJaW50ICpyZXQgPSBhcmc7CisrCisrCSpyZXQgPSAwOwor KwlyZXR1cm4gTkxfU0tJUDsKKyt9CisrCisrc3RhdGljIGludCBubF9hY2tfaGFuZGxlcihzdHJ1 Y3QgbmxfbXNnICptc2csIHZvaWQgKmFyZykKKyt7CisrCWludCAqcmV0ID0gYXJnOworKworKwkq cmV0ID0gMDsKKysJcmV0dXJuIE5MX1NUT1A7CisrfQorKworK3N0YXRpYyB2b2lkIHBhcnNlX29u ZV9wcm9jX2VudHJ5KHN0cnVjdCBubGF0dHIgKm5lc3QsIHVuc2lnbmVkIGludCAqaW5mbywKKysJ CQkJIHVuc2lnbmVkIGludCBtYXhfb3BzKQorK3sKKysJc3RydWN0IG5sYXR0ciAqdGJbTkZTRF9B X1NFUlZFUl9QUk9DX0VOVFJZX01BWCArIDFdOworKwl1bnNpZ25lZCBpbnQgb3AsIGNvdW50Owor KworKwlubGFfcGFyc2VfbmVzdGVkKHRiLCBORlNEX0FfU0VSVkVSX1BST0NfRU5UUllfTUFYLCBu ZXN0LCBOVUxMKTsKKysJaWYgKCF0YltORlNEX0FfU0VSVkVSX1BST0NfRU5UUllfT1BdIHx8Cisr CSAgICAhdGJbTkZTRF9BX1NFUlZFUl9QUk9DX0VOVFJZX0NPVU5UXSkKKysJCXJldHVybjsKKysK KysJb3AgPSBubGFfZ2V0X3UzMih0YltORlNEX0FfU0VSVkVSX1BST0NfRU5UUllfT1BdKTsKKysJ Y291bnQgPSAodW5zaWduZWQgaW50KW5sYV9nZXRfdTY0KHRiW05GU0RfQV9TRVJWRVJfUFJPQ19F TlRSWV9DT1VOVF0pOworKwlpZiAob3AgPCBtYXhfb3BzKSB7CisrCQlpbmZvWzBdID0gbWF4X29w czsKKysJCWluZm9bb3AgKyAxXSA9IGNvdW50OworKwl9CisrfQorKworK3N0YXRpYyBpbnQgc3Rh dHNfbmxfaGFuZGxlcihzdHJ1Y3QgbmxfbXNnICptc2csIHZvaWQgKmFyZykKKyt7CisrCXN0cnVj dCBzdGF0aW5mbyAqaW5mbyA9IGFyZzsKKysJc3RydWN0IGdlbmxtc2doZHIgKmdubGggPSBubG1z Z19kYXRhKG5sbXNnX2hkcihtc2cpKTsKKysJc3RydWN0IG5sYXR0ciAqYXR0cjsKKysJc3RhdGlu Zm8gKnNpOworKwlpbnQgcmVtOworKworKwlubGFfZm9yX2VhY2hfYXR0cihhdHRyLCBnZW5sbXNn X2F0dHJkYXRhKGdubGgsIDApLAorKwkJCSAgZ2VubG1zZ19hdHRybGVuKGdubGgsIDApLCByZW0p IHsKKysJCWludCB0eXBlID0gbmxhX3R5cGUoYXR0cik7CisrCisrCQlzd2l0Y2ggKHR5cGUpIHsK KysJCS8qIFJlcGx5IGNhY2hlICovCisrCQljYXNlIE5GU0RfQV9TRVJWRVJfU1RBVFNfUkNfSElU UzoKKysJCQlzaSA9IGdldF9zdGF0X2luZm8oInJjIiwgaW5mbyk7CisrCQkJaWYgKHNpKQorKwkJ CQlzaS0+dmFscHRyWzBdID0gbmxhX2dldF91NjQoYXR0cik7CisrCQkJYnJlYWs7CisrCQljYXNl IE5GU0RfQV9TRVJWRVJfU1RBVFNfUkNfTUlTU0VTOgorKwkJCXNpID0gZ2V0X3N0YXRfaW5mbygi cmMiLCBpbmZvKTsKKysJCQlpZiAoc2kpCisrCQkJCXNpLT52YWxwdHJbMV0gPSBubGFfZ2V0X3U2 NChhdHRyKTsKKysJCQlicmVhazsKKysJCWNhc2UgTkZTRF9BX1NFUlZFUl9TVEFUU19SQ19OT0NB Q0hFOgorKwkJCXNpID0gZ2V0X3N0YXRfaW5mbygicmMiLCBpbmZvKTsKKysJCQlpZiAoc2kpCisr CQkJCXNpLT52YWxwdHJbMl0gPSBubGFfZ2V0X3U2NChhdHRyKTsKKysJCQlicmVhazsKKysKKysJ CS8qIEZpbGVoYW5kbGUgKi8KKysJCWNhc2UgTkZTRF9BX1NFUlZFUl9TVEFUU19GSF9TVEFMRToK KysJCQlzaSA9IGdldF9zdGF0X2luZm8oImZoIiwgaW5mbyk7CisrCQkJaWYgKHNpKQorKwkJCQlz aS0+dmFscHRyWzBdID0gbmxhX2dldF91NjQoYXR0cik7CisrCQkJYnJlYWs7CisrCisrCQkvKiBJ TyAqLworKwkJY2FzZSBORlNEX0FfU0VSVkVSX1NUQVRTX0lPX1JFQUQ6CisrCQkJc2kgPSBnZXRf c3RhdF9pbmZvKCJpbyIsIGluZm8pOworKwkJCWlmIChzaSkKKysJCQkJc2ktPnZhbHB0clswXSA9 IG5sYV9nZXRfdTY0KGF0dHIpOworKwkJCWJyZWFrOworKwkJY2FzZSBORlNEX0FfU0VSVkVSX1NU QVRTX0lPX1dSSVRFOgorKwkJCXNpID0gZ2V0X3N0YXRfaW5mbygiaW8iLCBpbmZvKTsKKysJCQlp ZiAoc2kpCisrCQkJCXNpLT52YWxwdHJbMV0gPSBubGFfZ2V0X3U2NChhdHRyKTsKKysJCQlicmVh azsKKysKKysJCS8qIE5ldHdvcmsgKi8KKysJCWNhc2UgTkZTRF9BX1NFUlZFUl9TVEFUU19ORVRD TlQ6CisrCQkJc2kgPSBnZXRfc3RhdF9pbmZvKCJuZXQiLCBpbmZvKTsKKysJCQlpZiAoc2kpCisr CQkJCXNpLT52YWxwdHJbMF0gPSBubGFfZ2V0X3UzMihhdHRyKTsKKysJCQlicmVhazsKKysJCWNh c2UgTkZTRF9BX1NFUlZFUl9TVEFUU19ORVRVRFBDTlQ6CisrCQkJc2kgPSBnZXRfc3RhdF9pbmZv KCJuZXQiLCBpbmZvKTsKKysJCQlpZiAoc2kpCisrCQkJCXNpLT52YWxwdHJbMV0gPSBubGFfZ2V0 X3UzMihhdHRyKTsKKysJCQlicmVhazsKKysJCWNhc2UgTkZTRF9BX1NFUlZFUl9TVEFUU19ORVRU Q1BDTlQ6CisrCQkJc2kgPSBnZXRfc3RhdF9pbmZvKCJuZXQiLCBpbmZvKTsKKysJCQlpZiAoc2kp CisrCQkJCXNpLT52YWxwdHJbMl0gPSBubGFfZ2V0X3UzMihhdHRyKTsKKysJCQlicmVhazsKKysJ CWNhc2UgTkZTRF9BX1NFUlZFUl9TVEFUU19ORVRUQ1BDT05OOgorKwkJCXNpID0gZ2V0X3N0YXRf aW5mbygibmV0IiwgaW5mbyk7CisrCQkJaWYgKHNpKQorKwkJCQlzaS0+dmFscHRyWzNdID0gbmxh X2dldF91MzIoYXR0cik7CisrCQkJYnJlYWs7CisrCisrCQkvKiBSUEMgKi8KKysJCWNhc2UgTkZT RF9BX1NFUlZFUl9TVEFUU19SUENDTlQ6CisrCQkJc2kgPSBnZXRfc3RhdF9pbmZvKCJycGMiLCBp bmZvKTsKKysJCQlpZiAoc2kpCisrCQkJCXNpLT52YWxwdHJbMF0gPSBubGFfZ2V0X3UzMihhdHRy KTsKKysJCQlicmVhazsKKysJCWNhc2UgTkZTRF9BX1NFUlZFUl9TVEFUU19SUENCQURGTVQ6Cisr CQkJc2kgPSBnZXRfc3RhdF9pbmZvKCJycGMiLCBpbmZvKTsKKysJCQlpZiAoc2kpCisrCQkJCXNp LT52YWxwdHJbMl0gPSBubGFfZ2V0X3UzMihhdHRyKTsKKysJCQlicmVhazsKKysJCWNhc2UgTkZT RF9BX1NFUlZFUl9TVEFUU19SUENCQURBVVRIOgorKwkJCXNpID0gZ2V0X3N0YXRfaW5mbygicnBj IiwgaW5mbyk7CisrCQkJaWYgKHNpKQorKwkJCQlzaS0+dmFscHRyWzNdID0gbmxhX2dldF91MzIo YXR0cik7CisrCQkJYnJlYWs7CisrCQljYXNlIE5GU0RfQV9TRVJWRVJfU1RBVFNfUlBDQkFEQ0xO VDoKKysJCQlzaSA9IGdldF9zdGF0X2luZm8oInJwYyIsIGluZm8pOworKwkJCWlmIChzaSkKKysJ CQkJc2ktPnZhbHB0cls0XSA9IG5sYV9nZXRfdTMyKGF0dHIpOworKwkJCWJyZWFrOworKworKwkJ LyogUGVyLXZlcnNpb24gcHJvY2VkdXJlIGNvdW50cyAobXVsdGktYXR0cikgKi8KKysJCWNhc2Ug TkZTRF9BX1NFUlZFUl9TVEFUU19QUk9DMl9PUFM6CisrCQkJc2kgPSBnZXRfc3RhdF9pbmZvKCJw cm9jMiIsIGluZm8pOworKwkJCWlmIChzaSkKKysJCQkJcGFyc2Vfb25lX3Byb2NfZW50cnkoYXR0 ciwgc2ktPnZhbHB0ciwKKysJCQkJCQkgICAgIFNSVlBST0MyX1NaKTsKKysJCQlicmVhazsKKysJ CWNhc2UgTkZTRF9BX1NFUlZFUl9TVEFUU19QUk9DM19PUFM6CisrCQkJc2kgPSBnZXRfc3RhdF9p bmZvKCJwcm9jMyIsIGluZm8pOworKwkJCWlmIChzaSkKKysJCQkJcGFyc2Vfb25lX3Byb2NfZW50 cnkoYXR0ciwgc2ktPnZhbHB0ciwKKysJCQkJCQkgICAgIFNSVlBST0MzX1NaKTsKKysJCQlicmVh azsKKysJCWNhc2UgTkZTRF9BX1NFUlZFUl9TVEFUU19QUk9DNF9PUFM6CisrCQkJc2kgPSBnZXRf c3RhdF9pbmZvKCJwcm9jNCIsIGluZm8pOworKwkJCWlmIChzaSkKKysJCQkJcGFyc2Vfb25lX3By b2NfZW50cnkoYXR0ciwgc2ktPnZhbHB0ciwKKysJCQkJCQkgICAgIFNSVlBST0M0X1NaKTsKKysJ CQlicmVhazsKKysJCWNhc2UgTkZTRF9BX1NFUlZFUl9TVEFUU19QUk9DNE9QU19PUFM6CisrCQkJ c2kgPSBnZXRfc3RhdF9pbmZvKCJwcm9jNG9wcyIsIGluZm8pOworKwkJCWlmIChzaSkKKysJCQkJ cGFyc2Vfb25lX3Byb2NfZW50cnkoYXR0ciwgc2ktPnZhbHB0ciwKKysJCQkJCQkgICAgIFNSVlBS T0M0T1BTX1NaKTsKKysJCQlicmVhazsKKysJCWNhc2UgTkZTRF9BX1NFUlZFUl9TVEFUU19QUk9D NENCX09QUzoKKysJCQlzaSA9IGdldF9zdGF0X2luZm8oInByb2M0Y2IiLCBpbmZvKTsKKysJCQlp ZiAoc2kpCisrCQkJCXBhcnNlX29uZV9wcm9jX2VudHJ5KGF0dHIsIHNpLT52YWxwdHIsCisrCQkJ CQkJICAgICBTUlZQUk9DNENCX1NaKTsKKysJCQlicmVhazsKKysJCX0KKysJfQorKworKwlyZXR1 cm4gTkxfT0s7CisrfQorKworKy8qCisrICogRmV0Y2ggc2VydmVyIHN0YXRzIHZpYSBHZW5lcmlj IE5ldGxpbmsuCisrICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGZhaWx1cmUuCisrICov Cisrc3RhdGljIGludAorK2dldF9zdGF0c19uZXRsaW5rKHN0cnVjdCBzdGF0aW5mbyAqaW5mbykK Kyt7CisrCXN0cnVjdCBubF9zb2NrICpzb2NrOworKwlzdHJ1Y3QgbmxfbXNnICptc2c7CisrCXN0 cnVjdCBubF9jYiAqY2I7CisrCWludCBmYW1pbHksIHJldDsKKysJc3RhdGluZm8gKnNpOworKwor Kwlzb2NrID0gbmxfc29ja2V0X2FsbG9jKCk7CisrCWlmICghc29jaykKKysJCXJldHVybiAtMTsK KysKKysJaWYgKGdlbmxfY29ubmVjdChzb2NrKSkgeworKwkJbmxfc29ja2V0X2ZyZWUoc29jayk7 CisrCQlyZXR1cm4gLTE7CisrCX0KKysKKysJZmFtaWx5ID0gZ2VubF9jdHJsX3Jlc29sdmUoc29j aywgTkZTRF9GQU1JTFlfTkFNRSk7CisrCWlmIChmYW1pbHkgPCAwKSB7CisrCQlubF9zb2NrZXRf ZnJlZShzb2NrKTsKKysJCXJldHVybiAtMTsKKysJfQorKworKwltc2cgPSBubG1zZ19hbGxvYygp OworKwlpZiAoIW1zZykgeworKwkJbmxfc29ja2V0X2ZyZWUoc29jayk7CisrCQlyZXR1cm4gLTE7 CisrCX0KKysKKysJaWYgKCFnZW5sbXNnX3B1dChtc2csIE5MX0FVVE9fUElELCBOTF9BVVRPX1NF USwgZmFtaWx5LCAwLAorKwkJCSBOTE1fRl9EVU1QLCBORlNEX0NNRF9TRVJWRVJfU1RBVFNfR0VU LCAwKSkgeworKwkJbmxtc2dfZnJlZShtc2cpOworKwkJbmxfc29ja2V0X2ZyZWUoc29jayk7Cisr CQlyZXR1cm4gLTE7CisrCX0KKysKKysJY2IgPSBubF9jYl9hbGxvYyhOTF9DQl9DVVNUT00pOwor KwlpZiAoIWNiKSB7CisrCQlubG1zZ19mcmVlKG1zZyk7CisrCQlubF9zb2NrZXRfZnJlZShzb2Nr KTsKKysJCXJldHVybiAtMTsKKysJfQorKworKwlyZXQgPSBubF9zZW5kX2F1dG8oc29jaywgbXNn KTsKKysJaWYgKHJldCA8IDApIHsKKysJCW5sX2NiX3B1dChjYik7CisrCQlubG1zZ19mcmVlKG1z Zyk7CisrCQlubF9zb2NrZXRfZnJlZShzb2NrKTsKKysJCXJldHVybiAtMTsKKysJfQorKworKwly ZXQgPSAxOworKwlubF9jYl9lcnIoY2IsIE5MX0NCX0NVU1RPTSwgbmxfZXJyb3JfaGFuZGxlciwg JnJldCk7CisrCW5sX2NiX3NldChjYiwgTkxfQ0JfRklOSVNILCBOTF9DQl9DVVNUT00sIG5sX2Zp bmlzaF9oYW5kbGVyLCAmcmV0KTsKKysJbmxfY2Jfc2V0KGNiLCBOTF9DQl9BQ0ssIE5MX0NCX0NV U1RPTSwgbmxfYWNrX2hhbmRsZXIsICZyZXQpOworKwlubF9jYl9zZXQoY2IsIE5MX0NCX1ZBTElE LCBOTF9DQl9DVVNUT00sIHN0YXRzX25sX2hhbmRsZXIsIGluZm8pOworKworKwl3aGlsZSAocmV0 ID4gMCkKKysJCW5sX3JlY3Ztc2dzKHNvY2ssIGNiKTsKKysKKysJbmxfY2JfcHV0KGNiKTsKKysJ bmxtc2dfZnJlZShtc2cpOworKwlubF9zb2NrZXRfZnJlZShzb2NrKTsKKysKKysJaWYgKHJldCA8 IDApCisrCQlyZXR1cm4gLTE7CisrCisrCS8qCisrCSAqIENvbXB1dGUgZGVyaXZlZCBmaWVsZHMu IFRoZSBwcm9jIGZpbGUgZW1pdHMgInJwYyBycGNjbnQKKysJICogYmFkY2FsbHMgYmFkZm10IGJh ZGF1dGggYmFkY2xudCIgd2hlcmUgYmFkY2FsbHMgaXMgdGhlIHN1bQorKwkgKiBvZiBiYWRmbXQr YmFkYXV0aCtiYWRjbG50LiBUaGUgbmV0bGluayBpbnRlcmZhY2Ugc2VuZHMgdGhlCisrCSAqIGNv bXBvbmVudHMgaW5kaXZpZHVhbGx5LCBzbyByZWNvbXB1dGUgdGhlIHN1bSBoZXJlLgorKwkgKi8K KysJc2kgPSBnZXRfc3RhdF9pbmZvKCJycGMiLCBpbmZvKTsKKysJaWYgKHNpKQorKwkJc2ktPnZh bHB0clsxXSA9IHNpLT52YWxwdHJbMl0gKyBzaS0+dmFscHRyWzNdICsgc2ktPnZhbHB0cls0XTsK KysKKysJLyogQ29tcHV0ZSB0b3RhbHMgZm9yIGVhY2ggc3RhdCBjYXRlZ29yeSAqLworKwlmb3Ig KHNpID0gaW5mbzsgc2ktPnRhZzsgc2krKykgeworKwkJdW5zaWduZWQgaW50IHRvdGFsID0gMDsK KysJCWludCBpOworKworKwkJZm9yIChpID0gMDsgaSA8IHNpLT5ucnZhbHMgLSAxOyBpKyspCisr CQkJdG90YWwgKz0gc2ktPnZhbHB0cltpXTsKKysJCXNpLT52YWxwdHJbc2ktPm5ydmFscyAtIDFd ID0gdG90YWw7CisrCX0KKysKKysJcmV0dXJuIDA7CisrfQorKworIHN0YXRpYyB2b2lkCisgZ2V0 X3N0YXRzKGNvbnN0IGNoYXIgKmZpbGUsIHN0cnVjdCBzdGF0aW5mbyAqaW5mbywgaW50ICpvcHQs IGludCBvdGhlcl9vcHQsCisgCQlpbnQgaXNfc3J2KQorQEAgLTEwNjAsNiArMTM3OCwxMCBAQCBn ZXRfc3RhdHMoY29uc3QgY2hhciAqZmlsZSwgc3RydWN0IHN0YXRpbmZvICppbmZvLCBpbnQgKm9w dCwgaW50IG90aGVyX29wdCwKKyAJaW50IGVyciA9IDE7CisgCWNoYXIgKmxhYmVsID0gaXNfc3J2 ID8gIlNlcnZlciIgOiAiQ2xpZW50IjsKKyAKKysJLyogVHJ5IG5ldGxpbmsgZmlyc3QgZm9yIHNl cnZlciBzdGF0cyAqLworKwlpZiAoaXNfc3J2ICYmIGdldF9zdGF0c19uZXRsaW5rKGluZm8pID09 IDApCisrCQlyZXR1cm47CisrCisgCS8qIHRyeSB0byBndWVzcyB3aGF0IHR5cGUgb2Ygc3RhdCBm aWxlIHdlJ3JlIGRlYWxpbmcgd2l0aCAqLworIAlpZiAoKGZwID0gZm9wZW4oZmlsZSwgInIiKSkg PT0gTlVMTCkKKyAJCWdvdG8gb3V0OwoKZGlmZiAtLWdpdCBhL25mcy11dGlscy5zcGVjIGIvbmZz LXV0aWxzLnNwZWMKaW5kZXggNjdlMTdiOS4uZDA3OGNmYSAxMDA2NDQKLS0tIGEvbmZzLXV0aWxz LnNwZWMKKysrIGIvbmZzLXV0aWxzLnNwZWMKQEAgLTIsNyArMiw3IEBAIFN1bW1hcnk6IE5GUyB1 dGlsaXRpZXMgYW5kIHN1cHBvcnRpbmcgY2xpZW50cyBhbmQgZGFlbW9ucyBmb3IgdGhlIGtlcm5l bCBORlMgc2VyCiBOYW1lOiBuZnMtdXRpbHMKIFVSTDogaHR0cDovL2xpbnV4LW5mcy5vcmcvCiBW ZXJzaW9uOiAyLjkuMQotUmVsZWFzZTogNC5yYzQlez9kaXN0fQorUmVsZWFzZTogNC5yYzUlez9k aXN0fQogRXBvY2g6IDEKIAogIyBncm91cCBhbGwgMzJiaXQgcmVsYXRlZCBhcmNocwpAQCAtMTUs OCArMTUsNyBAQCBTb3VyY2UzOiAyNC1uZnMtc2VydmVyLmNvbmYKIFNvdXJjZTQ6IDEwLW5mc3Y0 LmNvbmYKIFNvdXJjZTU6IDEwLW5mc3YzLmNvbmYKIAotUGF0Y2gwMDE6IG5mcy11dGlscy0yLjku Mi1yYzQucGF0Y2gKLVBhdGNoMDAyOiBuZnMtdXRpbHMtMi45LjEtbmZzZC10aHJlYWQtY291bnQt emVyby5wYXRjaAorUGF0Y2gwMDE6IG5mcy11dGlscy0yLjkuMi1yYzUucGF0Y2gKIAogUGF0Y2gx MDA6IG5mcy11dGlscy0xLjIuMS1zdGF0ZHBhdGgtbWFuLnBhdGNoCiBQYXRjaDEwMjogbmZzLXV0 aWxzLTEuMi41LWlkbWFwLWVycm1zZy5wYXRjaApAQCAtNDc3LDYgKzQ3Niw5IEBAIHJtIC1mICV7 X3N5c2NvbmZkaXJ9L25mc21vdW50LmNvbmYuZC8xMC1uZnN2NC5jb25mCiAle19tYW5kaXJ9Lyov cnBjY3RsLjguZ3oKIAogJWNoYW5nZWxvZworKiBTYXQgSnVsIDExIDIwMjYgU3RldmUgRGlja3Nv biA8c3RldmVkQHJlZGhhdC5jb20+IDIuOS4xLTQtcmM1CistIFVwZGF0ZWQgdG8gdGhlIGxhdGVz dCBSQyByZWxlYXNlOiBuZnMtdXRpbHMtMi05LTItcmM1CisKICogVHVlIEp1biAxNiAyMDI2IFN0 ZXZlIERpY2tzb24gPHN0ZXZlZEByZWRoYXQuY29tPiAyLjkuMS00LXJjNAogLSBuZnNkOiBkb24n dCBhc3N1bWUgc2VydmljZSBpcyBydW5uaW5nIHdoZW4gc2V0dGluZyB0aHJlYWQgY291bnQgdG8g MAogCg==