mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2024-10-01 01:35:54 -04:00
1 line
16 KiB
Plaintext
1 line
16 KiB
Plaintext
RnJvbSAyZTA3M2QyMDAxZjM1NDk4MmI3NzdhMzhkOTMxMDAyYTYyMzk1ZGUxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCZW4gU2VyaSA8YmVuQGFybWlzLmNvbT4KRGF0ZTogU2F0LCAwOSBTZXAgMjAxNyAyMzoxNTo1OSArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEJsdWV0b290aDogUHJvcGVybHkgY2hlY2sgTDJDQVAgY29uZmlnIG9wdGlvbiBvdXRwdXQgYnVmZmVyIGxlbmd0aAoKVmFsaWRhdGUgdGhlIG91dHB1dCBidWZmZXIgbGVuZ3RoIGZvciBMMkNBUCBjb25maWcgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcwp0byBhdm9pZCBvdmVyZmxvd2luZyB0aGUgc3RhY2sgYnVmZmVyIHVzZWQgZm9yIGJ1aWxkaW5nIHRoZSBvcHRpb24gYmxvY2tzLgoKQ2hhbmdlLUlkOiBJN2EwZmYwYjlkZDAxNTZjMGU2MzgzMjE0YTljODZlNGVjNGMwZDIzNgpDYzogc3RhYmxlQHZnZXIua2VybmVsLm9yZwpTaWduZWQtb2ZmLWJ5OiBCZW4gU2VyaSA8YmVuQGFybWlzLmNvbT4KU2lnbmVkLW9mZi1ieTogTWFyY2VsIEhvbHRtYW5uIDxtYXJjZWxAaG9sdG1hbm4ub3JnPgpTaWduZWQtb2ZmLWJ5OiBMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGludXgtZm91bmRhdGlvbi5vcmc+CkNWRS0yMDE3LTEwMDAyNTEKU2lnbmVkLW9mZi1ieTogS2V2aW4gRi4gSGFnZ2VydHkgPGhhZ2dlcnRrQGxpbmVhZ2Vvcy5vcmc+Ci0tLQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2JsdWV0b290aC9sMmNhcC5oIGIvaW5jbHVkZS9uZXQvYmx1ZXRvb3RoL2wyY2FwLmgKaW5kZXggZWY1ZTg0OS4uYjg2ODM0MyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvYmx1ZXRvb3RoL2wyY2FwLmgKKysrIGIvaW5jbHVkZS9uZXQvYmx1ZXRvb3RoL2wyY2FwLmgKQEAgLTY2OCw3ICs2NjgsNyBAQAogCiB1OCBsMmNhcF9nZXRfaWRlbnQoc3RydWN0IGwyY2FwX2Nvbm4gKmNvbm4pOwogdm9pZCBsMmNhcF9zZW5kX2NtZChzdHJ1Y3QgbDJjYXBfY29ubiAqY29ubiwgdTggaWRlbnQsIHU4IGNvZGUsIHUxNiBsZW4sIHZvaWQgKmRhdGEpOwotaW50IGwyY2FwX2J1aWxkX2NvbmZfcmVxKHN0cnVjdCBzb2NrICpzaywgdm9pZCAqZGF0YSk7CitpbnQgbDJjYXBfYnVpbGRfY29uZl9yZXEoc3RydWN0IHNvY2sgKnNrLCB2b2lkICpkYXRhLCBzaXplX3QgZGF0YV9zaXplKTsKIGludCBfX2wyY2FwX3dhaXRfYWNrKHN0cnVjdCBzb2NrICpzayk7CiAKIHN0cnVjdCBza19idWZmICpsMmNhcF9jcmVhdGVfY29ubmxlc3NfcGR1KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuKTsKZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgvbDJjYXBfY29yZS5jIGIvbmV0L2JsdWV0b290aC9sMmNhcF9jb3JlLmMKaW5kZXggYWYwZGNiYS4uYTRhYjBmZiAxMDA2NDQKLS0tIGEvbmV0L2JsdWV0b290aC9sMmNhcF9jb3JlLmMKKysrIGIvbmV0L2JsdWV0b290aC9sMmNhcF9jb3JlLmMKQEAgLTkxMCw3ICs5MTAsNyBAQAogCiAJCQlsMmNhcF9waShzayktPmNvbmZfc3RhdGUgfD0gTDJDQVBfQ09ORl9SRVFfU0VOVDsKIAkJCWwyY2FwX3NlbmRfY21kKGNvbm4sIGwyY2FwX2dldF9pZGVudChjb25uKSwgTDJDQVBfQ09ORl9SRVEsCi0JCQkJCQlsMmNhcF9idWlsZF9jb25mX3JlcShzaywgYnVmKSwgYnVmKTsKKwkJCQkJCWwyY2FwX2J1aWxkX2NvbmZfcmVxKHNrLCBidWYsIHNpemVvZihidWYpKSwgYnVmKTsKIAkJCWwyY2FwX3BpKHNrKS0+bnVtX2NvbmZfcmVxKys7CiAJCX0KIApAQCAtMjg5MiwxMSArMjg5MiwxNCBAQAogCXJldHVybiBsZW47CiB9CiAKLXN0YXRpYyB2b2lkIGwyY2FwX2FkZF9jb25mX29wdCh2b2lkICoqcHRyLCB1OCB0eXBlLCB1OCBsZW4sIHVuc2lnbmVkIGxvbmcgdmFsKQorc3RhdGljIHZvaWQgbDJjYXBfYWRkX2NvbmZfb3B0KHZvaWQgKipwdHIsIHU4IHR5cGUsIHU4IGxlbiwgdW5zaWduZWQgbG9uZyB2YWwsIHNpemVfdCBzaXplKQogewogCXN0cnVjdCBsMmNhcF9jb25mX29wdCAqb3B0ID0gKnB0cjsKIAogCUJUX0RCRygidHlwZSAweCUyLjJ4IGxlbiAlZCB2YWwgMHglbHgiLCB0eXBlLCBsZW4sIHZhbCk7CisKKwlpZiAoc2l6ZSA8IEwyQ0FQX0NPTkZfT1BUX1NJWkUgKyBsZW4pCisJCXJldHVybjsKIAogCW9wdC0+dHlwZSA9IHR5cGU7CiAJb3B0LT5sZW4gID0gbGVuOwpAQCAtMzI3NSwxMiArMzI3OCwxMyBAQAogCX0KIH0KIAotaW50IGwyY2FwX2J1aWxkX2NvbmZfcmVxKHN0cnVjdCBzb2NrICpzaywgdm9pZCAqZGF0YSkKK2ludCBsMmNhcF9idWlsZF9jb25mX3JlcShzdHJ1Y3Qgc29jayAqc2ssIHZvaWQgKmRhdGEsIHNpemVfdCBkYXRhX3NpemUpCiB7CiAJc3RydWN0IGwyY2FwX3BpbmZvICpwaSA9IGwyY2FwX3BpKHNrKTsKIAlzdHJ1Y3QgbDJjYXBfY29uZl9yZXEgKnJlcSA9IGRhdGE7CiAJc3RydWN0IGwyY2FwX2NvbmZfcmZjIHJmYyA9IHsgLm1vZGUgPSBwaS0+bW9kZSB9OwogCXZvaWQgKnB0ciA9IHJlcS0+ZGF0YTsKKwl2b2lkICplbmRwdHIgPSBkYXRhICsgZGF0YV9zaXplOwogCiAJQlRfREJHKCJzayAlcCIsIHNrKTsKIApAQCAtMzMwMSw3ICszMzA1LDcgQEAKIAogZG9uZToKIAlpZiAocGktPmltdHUgIT0gTDJDQVBfREVGQVVMVF9NVFUpCi0JCWwyY2FwX2FkZF9jb25mX29wdCgmcHRyLCBMMkNBUF9DT05GX01UVSwgMiwgcGktPmltdHUpOworCQlsMmNhcF9hZGRfY29uZl9vcHQoJnB0ciwgTDJDQVBfQ09ORl9NVFUsIDIsIHBpLT5pbXR1LCBlbmRwdHIgLSBwdHIpOwogCiAJc3dpdGNoIChwaS0+bW9kZSkgewogCWNhc2UgTDJDQVBfTU9ERV9CQVNJQzoKQEAgLTMzMTYsNyArMzMyMCw3IEBACiAJCXJmYy5tYXhfcGR1X3NpemUgICAgPSAwOwogCiAJCWwyY2FwX2FkZF9jb25mX29wdCgmcHRyLCBMMkNBUF9DT05GX1JGQywgc2l6ZW9mKHJmYyksCi0JCQkJCQkJKHVuc2lnbmVkIGxvbmcpICZyZmMpOworCQkJCSAgICh1bnNpZ25lZCBsb25nKSAmcmZjLCBlbmRwdHIgLSBwdHIpOwogCQlicmVhazsKIAogCWNhc2UgTDJDQVBfTU9ERV9FUlRNOgpAQCAtMzMzMywxMiArMzMzNywxMiBAQAogCQkJcmZjLm1heF9wZHVfc2l6ZSA9IGNwdV90b19sZTE2KHBpLT5pbXR1KTsKIAogCQlsMmNhcF9hZGRfY29uZl9vcHQoJnB0ciwgTDJDQVBfQ09ORl9SRkMsIHNpemVvZihyZmMpLAotCQkJCQkJCSh1bnNpZ25lZCBsb25nKSAmcmZjKTsKKwkJCQkgICAodW5zaWduZWQgbG9uZykgJnJmYywgZW5kcHRyIC0gcHRyKTsKIAogCQlpZiAoKHBpLT5jb25uLT5mZWF0X21hc2sgJiBMMkNBUF9GRUFUX0VYVF9XSU5ET1cpICYmCiAJCQlwaS0+ZXh0ZW5kZWRfY29udHJvbCkgewogCQkJbDJjYXBfYWRkX2NvbmZfb3B0KCZwdHIsIEwyQ0FQX0NPTkZfRVhUX1dJTkRPVywgMiwKLQkJCQkJcGktPnR4X3dpbik7CisJCQkJCSAgIHBpLT50eF93aW4sIGVuZHB0ciAtIHB0cik7CiAJCX0KIAogCQlpZiAocGktPmFtcF9pZCkgewpAQCAtMzM0Niw3ICszMzUwLDcgQEAKIAkJCXN0cnVjdCBsMmNhcF9jb25mX2V4dF9mcyBmcyA9IHsxLCAxLCAweEZGRkYsCiAJCQkJCTB4RkZGRkZGRkYsIDB4RkZGRkZGRkYsIDB4RkZGRkZGRkZ9OwogCQkJbDJjYXBfYWRkX2NvbmZfb3B0KCZwdHIsIEwyQ0FQX0NPTkZfRVhUX0ZTLAotCQkJCXNpemVvZihmcyksICh1bnNpZ25lZCBsb25nKSAmZnMpOworCQkJCXNpemVvZihmcyksICh1bnNpZ25lZCBsb25nKSAmZnMsIGVuZHB0ciAtIHB0cik7CiAJCX0KIAogCQlpZiAoIShwaS0+Y29ubi0+ZmVhdF9tYXNrICYgTDJDQVBfRkVBVF9GQ1MpKQpAQCAtMzM1NSw3ICszMzU5LDcgQEAKIAkJaWYgKHBpLT5mY3MgPT0gTDJDQVBfRkNTX05PTkUgfHwKIAkJCQlwaS0+Y29uZl9zdGF0ZSAmIEwyQ0FQX0NPTkZfTk9fRkNTX1JFQ1YpIHsKIAkJCXBpLT5mY3MgPSBMMkNBUF9GQ1NfTk9ORTsKLQkJCWwyY2FwX2FkZF9jb25mX29wdCgmcHRyLCBMMkNBUF9DT05GX0ZDUywgMSwgcGktPmZjcyk7CisJCQlsMmNhcF9hZGRfY29uZl9vcHQoJnB0ciwgTDJDQVBfQ09ORl9GQ1MsIDEsIHBpLT5mY3MsIGVuZHB0ciAtIHB0cik7CiAJCX0KIAkJYnJlYWs7CiAKQEAgLTMzNjksMTEgKzMzNzMsMTEgQEAKIAkJCXJmYy5tYXhfcGR1X3NpemUgPSBjcHVfdG9fbGUxNihwaS0+aW10dSk7CiAKIAkJbDJjYXBfYWRkX2NvbmZfb3B0KCZwdHIsIEwyQ0FQX0NPTkZfUkZDLCBzaXplb2YocmZjKSwKLQkJCQkJCQkodW5zaWduZWQgbG9uZykgJnJmYyk7CisJCQkJICAgKHVuc2lnbmVkIGxvbmcpICZyZmMsIGVuZHB0ciAtIHB0cik7CiAKIAkJaWYgKChwaS0+Y29ubi0+ZmVhdF9tYXNrICYgTDJDQVBfRkVBVF9FWFRfV0lORE9XKSAmJgogCQkJcGktPmV4dGVuZGVkX2NvbnRyb2wpIHsKLQkJCWwyY2FwX2FkZF9jb25mX29wdCgmcHRyLCBMMkNBUF9DT05GX0VYVF9XSU5ET1csIDIsIDApOworCQkJbDJjYXBfYWRkX2NvbmZfb3B0KCZwdHIsIEwyQ0FQX0NPTkZfRVhUX1dJTkRPVywgMiwgMCwgZW5kcHRyIC0gcHRyKTsKIAkJfQogCiAJCWlmICghKHBpLT5jb25uLT5mZWF0X21hc2sgJiBMMkNBUF9GRUFUX0ZDUykpCkBAIC0zMzgyLDcgKzMzODYsNyBAQAogCQlpZiAocGktPmZjcyA9PSBMMkNBUF9GQ1NfTk9ORSB8fAogCQkJCXBpLT5jb25mX3N0YXRlICYgTDJDQVBfQ09ORl9OT19GQ1NfUkVDVikgewogCQkJcGktPmZjcyA9IEwyQ0FQX0ZDU19OT05FOwotCQkJbDJjYXBfYWRkX2NvbmZfb3B0KCZwdHIsIEwyQ0FQX0NPTkZfRkNTLCAxLCBwaS0+ZmNzKTsKKwkJCWwyY2FwX2FkZF9jb25mX29wdCgmcHRyLCBMMkNBUF9DT05GX0ZDUywgMSwgcGktPmZjcywgZW5kcHRyIC0gcHRyKTsKIAkJfQogCQlicmVhazsKIAl9CkBAIC0zMzk0LDEyICszMzk4LDEzIEBACiB9CiAKIAotc3RhdGljIGludCBsMmNhcF9idWlsZF9hbXBfcmVjb25mX3JlcShzdHJ1Y3Qgc29jayAqc2ssIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IGwyY2FwX2J1aWxkX2FtcF9yZWNvbmZfcmVxKHN0cnVjdCBzb2NrICpzaywgdm9pZCAqZGF0YSwgc2l6ZV90IGRhdGFfc2l6ZSkKIHsKIAlzdHJ1Y3QgbDJjYXBfcGluZm8gKnBpID0gbDJjYXBfcGkoc2spOwogCXN0cnVjdCBsMmNhcF9jb25mX3JlcSAqcmVxID0gZGF0YTsKIAlzdHJ1Y3QgbDJjYXBfY29uZl9yZmMgcmZjID0geyAubW9kZSA9IHBpLT5tb2RlIH07CiAJdm9pZCAqcHRyID0gcmVxLT5kYXRhOworCXZvaWQgKmVuZHB0ciA9IGRhdGEgKyBkYXRhX3NpemU7CiAKIAlCVF9EQkcoInNrICVwIiwgc2spOwogCkBAIC0zNDIwLDcgKzM0MjUsNyBAQAogCX0KIAogCWwyY2FwX2FkZF9jb25mX29wdCgmcHRyLCBMMkNBUF9DT05GX1JGQywgc2l6ZW9mKHJmYyksCi0JCQkJCQkodW5zaWduZWQgbG9uZykgJnJmYyk7CisJCQkgICAodW5zaWduZWQgbG9uZykgJnJmYywgZW5kcHRyIC0gcHRyKTsKIAogCWlmIChwaS0+Y29ubi0+ZmVhdF9tYXNrICYgTDJDQVBfRkVBVF9GQ1MpIHsKIAkJLyogVE9ETyBhc3NpZ24gZmNzIGZvciBici9lZHIgYmFzZWQgb24gc29ja2V0IGNvbmZpZyBvcHRpb24gKi8KQEAgLTM0MzEsNyArMzQzNiw3IEBACiAJCWVsc2UKIAkJCXBpLT5sb2NhbF9jb25mLmZjcyA9IEwyQ0FQX0ZDU19DUkMxNjsKIAotCQlsMmNhcF9hZGRfY29uZl9vcHQoJnB0ciwgTDJDQVBfQ09ORl9GQ1MsIDEsIHBpLT5sb2NhbF9jb25mLmZjcyk7CisJCWwyY2FwX2FkZF9jb25mX29wdCgmcHRyLCBMMkNBUF9DT05GX0ZDUywgMSwgcGktPmxvY2FsX2NvbmYuZmNzLCBlbmRwdHIgLSBwdHIpOwogCQlwaS0+ZmNzID0gcGktPmxvY2FsX2NvbmYuZmNzIHwgcGktPnJlbW90ZV9jb25mLmZjczsKIAl9CiAKQEAgLTM0NDEsMTEgKzM0NDYsMTIgQEAKIAlyZXR1cm4gcHRyIC0gZGF0YTsKIH0KIAotc3RhdGljIGludCBsMmNhcF9wYXJzZV9jb25mX3JlcShzdHJ1Y3Qgc29jayAqc2ssIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IGwyY2FwX3BhcnNlX2NvbmZfcmVxKHN0cnVjdCBzb2NrICpzaywgdm9pZCAqZGF0YSwgc2l6ZV90IGRhdGFfc2l6ZSkKIHsKIAlzdHJ1Y3QgbDJjYXBfcGluZm8gKnBpID0gbDJjYXBfcGkoc2spOwogCXN0cnVjdCBsMmNhcF9jb25mX3JzcCAqcnNwID0gZGF0YTsKIAl2b2lkICpwdHIgPSByc3AtPmRhdGE7CisJdm9pZCAqZW5kcHRyID0gZGF0YSArIGRhdGFfc2l6ZTsKIAl2b2lkICpyZXEgPSBwaS0+Y29uZl9yZXE7CiAJaW50IGxlbiA9IHBpLT5jb25mX2xlbjsKIAlpbnQgdHlwZSwgaGludCwgb2xlbjsKQEAgLTM1NjMsNyArMzU2OSw4IEBACiAJCQlyZXR1cm4gLUVDT05OUkVGVVNFRDsKIAogCQlsMmNhcF9hZGRfY29uZl9vcHQoJnB0ciwgTDJDQVBfQ09ORl9SRkMsCi0JCQkJCXNpemVvZihyZmMpLCAodW5zaWduZWQgbG9uZykgJnJmYyk7CisJCQkJICAgc2l6ZW9mKHJmYyksICh1bnNpZ25lZCBsb25nKSAmcmZjLAorCQkJCSAgIGVuZHB0ciAtIHB0cik7CiAJfQogCiAKQEAgLTM1ODMsNyArMzU5MCw3IEBACiAJCQlwaS0+b210dSA9IG10dTsKIAkJCXBpLT5jb25mX3N0YXRlIHw9IEwyQ0FQX0NPTkZfTVRVX0RPTkU7CiAJCX0KLQkJbDJjYXBfYWRkX2NvbmZfb3B0KCZwdHIsIEwyQ0FQX0NPTkZfTVRVLCAyLCBwaS0+b210dSk7CisJCWwyY2FwX2FkZF9jb25mX29wdCgmcHRyLCBMMkNBUF9DT05GX01UVSwgMiwgcGktPm9tdHUsIGVuZHB0ciAtIHB0cik7CiAKIAkJc3dpdGNoIChyZmMubW9kZSkgewogCQljYXNlIEwyQ0FQX01PREVfQkFTSUM6CkBAIC0zNjAxLDExICszNjA4LDExIEBACiAJCQlwaS0+Y29uZl9zdGF0ZSB8PSBMMkNBUF9DT05GX01PREVfRE9ORTsKIAogCQkJbDJjYXBfYWRkX2NvbmZfb3B0KCZwdHIsIEwyQ0FQX0NPTkZfUkZDLAotCQkJCQlzaXplb2YocmZjKSwgKHVuc2lnbmVkIGxvbmcpICZyZmMpOworCQkJCQlzaXplb2YocmZjKSwgKHVuc2lnbmVkIGxvbmcpICZyZmMsIGVuZHB0ciAtIHB0cik7CiAKIAkJCWlmIChwaS0+Y29uZl9zdGF0ZSAmIEwyQ0FQX0NPTkZfTE9DS1NURVApCiAJCQkJbDJjYXBfYWRkX2NvbmZfb3B0KCZwdHIsIEwyQ0FQX0NPTkZfRVhUX0ZTLAotCQkJCQlzaXplb2YoZnMpLCAodW5zaWduZWQgbG9uZykgJmZzKTsKKwkJCQkJc2l6ZW9mKGZzKSwgKHVuc2lnbmVkIGxvbmcpICZmcywgZW5kcHRyIC0gcHRyKTsKIAogCQkJYnJlYWs7CiAKQEAgLTM2MTUsNyArMzYyMiw3IEBACiAJCQlwaS0+Y29uZl9zdGF0ZSB8PSBMMkNBUF9DT05GX01PREVfRE9ORTsKIAogCQkJbDJjYXBfYWRkX2NvbmZfb3B0KCZwdHIsIEwyQ0FQX0NPTkZfUkZDLAotCQkJCQlzaXplb2YocmZjKSwgKHVuc2lnbmVkIGxvbmcpICZyZmMpOworCQkJCQlzaXplb2YocmZjKSwgKHVuc2lnbmVkIGxvbmcpICZyZmMsIGVuZHB0ciAtIHB0cik7CiAKIAkJCWJyZWFrOwogCkBAIC0zNjU5LDExICszNjY2LDEyIEBACiAJcmV0dXJuIHB0ciAtIGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgbDJjYXBfcGFyc2VfYW1wX21vdmVfcmVjb25mX3JlcShzdHJ1Y3Qgc29jayAqc2ssIHZvaWQgKmRhdGEpCitzdGF0aWMgaW50IGwyY2FwX3BhcnNlX2FtcF9tb3ZlX3JlY29uZl9yZXEoc3RydWN0IHNvY2sgKnNrLCB2b2lkICpkYXRhLCBzaXplX3QgZGF0YV9zaXplKQogewogCXN0cnVjdCBsMmNhcF9waW5mbyAqcGkgPSBsMmNhcF9waShzayk7CiAJc3RydWN0IGwyY2FwX2NvbmZfcnNwICpyc3AgPSBkYXRhOwogCXZvaWQgKnB0ciA9IHJzcC0+ZGF0YTsKKwl2b2lkICplbmRwdHIgPSBkYXRhICsgZGF0YV9zaXplOwogCXZvaWQgKnJlcSA9IHBpLT5jb25mX3JlcTsKIAlpbnQgbGVuID0gcGktPmNvbmZfbGVuOwogCWludCB0eXBlLCBoaW50LCBvbGVuOwpAQCAtMzc1MCwxMyArMzc1OCwxMyBAQAogCiAJCUJUX0RCRygibXR1ICVkIG9tdHUgJWQiLCBtdHUsIHBpLT5vbXR1KTsKIAotCQlsMmNhcF9hZGRfY29uZl9vcHQoJnB0ciwgTDJDQVBfQ09ORl9NVFUsIDIsIHBpLT5vbXR1KTsKKwkJbDJjYXBfYWRkX2NvbmZfb3B0KCZwdHIsIEwyQ0FQX0NPTkZfTVRVLCAyLCBwaS0+b210dSwgZW5kcHRyIC0gcHRyKTsKIAogCQkvKiBEb24ndCBhbGxvdyBleHRlbmRlZCB0cmFuc21pdCB3aW5kb3cgdG8gY2hhbmdlLiAqLwogCQlpZiAodHhfd2luICE9IHBpLT5yZW1vdGVfdHhfd2luKSB7CiAJCQlyZXN1bHQgPSBMMkNBUF9DT05GX1VOQUNDRVBUOwogCQkJbDJjYXBfYWRkX2NvbmZfb3B0KCZwdHIsIEwyQ0FQX0NPTkZfRVhUX1dJTkRPVywgMiwKLQkJCQkJcGktPnJlbW90ZV90eF93aW4pOworCQkJCQlwaS0+cmVtb3RlX3R4X3dpbiwgZW5kcHRyIC0gcHRyKTsKIAkJfQogCiAJCXBpLT5yZW1vdGVfbXBzID0gcmZjLm1heF9wZHVfc2l6ZTsKQEAgLTM3NjksNyArMzc3Nyw3IEBACiAJCX0KIAogCQlsMmNhcF9hZGRfY29uZl9vcHQoJnB0ciwgTDJDQVBfQ09ORl9SRkMsCi0JCQkJCXNpemVvZihyZmMpLCAodW5zaWduZWQgbG9uZykgJnJmYyk7CisJCQkJCXNpemVvZihyZmMpLCAodW5zaWduZWQgbG9uZykgJnJmYywgZW5kcHRyIC0gcHRyKTsKIAl9CiAKIAlpZiAocmVzdWx0ICE9IEwyQ0FQX0NPTkZfU1VDQ0VTUykKQEAgLTM3ODgsMTEgKzM3OTYsMTIgQEAKIAlyZXR1cm4gcHRyIC0gZGF0YTsKIH0KIAotc3RhdGljIGludCBsMmNhcF9wYXJzZV9jb25mX3JzcChzdHJ1Y3Qgc29jayAqc2ssIHZvaWQgKnJzcCwgaW50IGxlbiwgdm9pZCAqZGF0YSwgdTE2ICpyZXN1bHQpCitzdGF0aWMgaW50IGwyY2FwX3BhcnNlX2NvbmZfcnNwKHN0cnVjdCBzb2NrICpzaywgdm9pZCAqcnNwLCBpbnQgbGVuLCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgdTE2ICpyZXN1bHQpCiB7CiAJc3RydWN0IGwyY2FwX3BpbmZvICpwaSA9IGwyY2FwX3BpKHNrKTsKIAlzdHJ1Y3QgbDJjYXBfY29uZl9yZXEgKnJlcSA9IGRhdGE7CiAJdm9pZCAqcHRyID0gcmVxLT5kYXRhOworCXZvaWQgKmVuZHB0ciA9IGRhdGEgKyBzaXplOwogCWludCB0eXBlLCBvbGVuOwogCXVuc2lnbmVkIGxvbmcgdmFsOwogCXN0cnVjdCBsMmNhcF9jb25mX3JmYyByZmM7CkBAIC0zODE1LDEzICszODI0LDEzIEBACiAJCQkJcGktPmltdHUgPSBMMkNBUF9ERUZBVUxUX01JTl9NVFU7CiAJCQl9IGVsc2UKIAkJCQlwaS0+aW10dSA9IHZhbDsKLQkJCWwyY2FwX2FkZF9jb25mX29wdCgmcHRyLCBMMkNBUF9DT05GX01UVSwgMiwgcGktPmltdHUpOworCQkJbDJjYXBfYWRkX2NvbmZfb3B0KCZwdHIsIEwyQ0FQX0NPTkZfTVRVLCAyLCBwaS0+aW10dSwgZW5kcHRyIC0gcHRyKTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgTDJDQVBfQ09ORl9GTFVTSF9UTzoKIAkJCXBpLT5mbHVzaF90byA9IHZhbDsKIAkJCWwyY2FwX2FkZF9jb25mX29wdCgmcHRyLCBMMkNBUF9DT05GX0ZMVVNIX1RPLAotCQkJCQkJCTIsIHBpLT5mbHVzaF90byk7CisJCQkJCQkJMiwgcGktPmZsdXNoX3RvLCBlbmRwdHIgLSBwdHIpOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBMMkNBUF9DT05GX1JGQzoKQEAgLTM4MzUsNyArMzg0NCw3IEBACiAJCQlwaS0+ZmNzID0gMDsKIAogCQkJbDJjYXBfYWRkX2NvbmZfb3B0KCZwdHIsIEwyQ0FQX0NPTkZfUkZDLAotCQkJCQlzaXplb2YocmZjKSwgKHVuc2lnbmVkIGxvbmcpICZyZmMpOworCQkJCQlzaXplb2YocmZjKSwgKHVuc2lnbmVkIGxvbmcpICZyZmMsIGVuZHB0ciAtIHB0cik7CiAJCQlicmVhazsKIAogCQljYXNlIEwyQ0FQX0NPTkZfRVhUX1dJTkRPVzoKQEAgLTM4NDUsNyArMzg1NCw3IEBACiAJCQkJcGktPnR4X3dpbiA9IEwyQ0FQX1RYX1dJTl9NQVhfRU5IQU5DRUQ7CiAKIAkJCWwyY2FwX2FkZF9jb25mX29wdCgmcHRyLCBMMkNBUF9DT05GX0VYVF9XSU5ET1csCi0JCQkJCTIsIHBpLT50eF93aW4pOworCQkJCQkyLCBwaS0+dHhfd2luLCBlbmRwdHIgLSBwdHIpOwogCQkJYnJlYWs7CiAKIAkJZGVmYXVsdDoKQEAgLTQyMDQsNyArNDIxMyw3IEBACiAJCXU4IGJ1ZlsxMjhdOwogCQlsMmNhcF9waShzayktPmNvbmZfc3RhdGUgfD0gTDJDQVBfQ09ORl9SRVFfU0VOVDsKIAkJbDJjYXBfc2VuZF9jbWQoY29ubiwgbDJjYXBfZ2V0X2lkZW50KGNvbm4pLCBMMkNBUF9DT05GX1JFUSwKLQkJCQkJbDJjYXBfYnVpbGRfY29uZl9yZXEoc2ssIGJ1ZiksIGJ1Zik7CisJCQkJCWwyY2FwX2J1aWxkX2NvbmZfcmVxKHNrLCBidWYsIHNpemVvZihidWYpKSwgYnVmKTsKIAkJbDJjYXBfcGkoc2spLT5udW1fY29uZl9yZXErKzsKIAl9CiAKQEAgLTQyNTUsNyArNDI2NCw3IEBACiAJCWwyY2FwX3BpKHNrKS0+Y29uZl9zdGF0ZSB8PSBMMkNBUF9DT05GX1JFUV9TRU5UOwogCiAJCWwyY2FwX3NlbmRfY21kKGNvbm4sIGwyY2FwX2dldF9pZGVudChjb25uKSwgTDJDQVBfQ09ORl9SRVEsCi0JCQkJCWwyY2FwX2J1aWxkX2NvbmZfcmVxKHNrLCByZXEpLCByZXEpOworCQkJCQlsMmNhcF9idWlsZF9jb25mX3JlcShzaywgcmVxLCBzaXplb2YocmVxKSksIHJlcSk7CiAJCWwyY2FwX3BpKHNrKS0+bnVtX2NvbmZfcmVxKys7CiAJCWJyZWFrOwogCkBAIC00MzU5LDkgKzQzNjgsOSBAQAogCiAJLyogQ29tcGxldGUgY29uZmlnLiAqLwogCWlmICghYW1wX21vdmVfcmVjb25mKQotCQlsZW4gPSBsMmNhcF9wYXJzZV9jb25mX3JlcShzaywgcnNwYnVmKTsKKwkJbGVuID0gbDJjYXBfcGFyc2VfY29uZl9yZXEoc2ssIHJzcGJ1Ziwgc2l6ZW9mKHJzcGJ1ZikpOwogCWVsc2UKLQkJbGVuID0gbDJjYXBfcGFyc2VfYW1wX21vdmVfcmVjb25mX3JlcShzaywgcnNwYnVmKTsKKwkJbGVuID0gbDJjYXBfcGFyc2VfYW1wX21vdmVfcmVjb25mX3JlcShzaywgcnNwYnVmLCBzaXplb2YocnNwYnVmKSk7CiAKIAlpZiAobGVuIDwgMCkgewogCQlsMmNhcF9zZW5kX2Rpc2Nvbm5fcmVxKGNvbm4sIHNrLCBFQ09OTlJFU0VUKTsKQEAgLTQ0MTAsNyArNDQxOSw3IEBACiAJCXU4IGJ1Zls2NF07CiAJCWwyY2FwX3BpKHNrKS0+Y29uZl9zdGF0ZSB8PSBMMkNBUF9DT05GX1JFUV9TRU5UOwogCQlsMmNhcF9zZW5kX2NtZChjb25uLCBsMmNhcF9nZXRfaWRlbnQoY29ubiksIEwyQ0FQX0NPTkZfUkVRLAotCQkJCQlsMmNhcF9idWlsZF9jb25mX3JlcShzaywgYnVmKSwgYnVmKTsKKwkJCQkJbDJjYXBfYnVpbGRfY29uZl9yZXEoc2ssIGJ1Ziwgc2l6ZW9mKGJ1ZikpLCBidWYpOwogCQlsMmNhcF9waShzayktPm51bV9jb25mX3JlcSsrOwogCX0KIApAQCAtNDUwNiw3ICs0NTE1LDcgQEAKIAkJCS8qIHRocm93IG91dCBhbnkgb2xkIHN0b3JlZCBjb25mIHJlcXVlc3RzICovCiAJCQlyZXN1bHQgPSBMMkNBUF9DT05GX1NVQ0NFU1M7CiAJCQlsZW4gPSBsMmNhcF9wYXJzZV9jb25mX3JzcChzaywgcnNwLT5kYXRhLAotCQkJCQkJCWxlbiwgcmVxLCAmcmVzdWx0KTsKKwkJCQkJCQlsZW4sIHJlcSwgc2l6ZW9mKHJlcSksICZyZXN1bHQpOwogCQkJaWYgKGxlbiA8IDApIHsKIAkJCQlsMmNhcF9zZW5kX2Rpc2Nvbm5fcmVxKGNvbm4sIHNrLCBFQ09OTlJFU0VUKTsKIAkJCQlnb3RvIGRvbmU7CkBAIC01MzA2LDcgKzUzMTUsNyBAQAogCQkJCWwyY2FwX3NlbmRfY21kKHBpLT5jb25uLAogCQkJCQlsMmNhcF9nZXRfaWRlbnQocGktPmNvbm4pLAogCQkJCQlMMkNBUF9DT05GX1JFUSwKLQkJCQkJbDJjYXBfYnVpbGRfY29uZl9yZXEoc2ssIGJ1ZiksIGJ1Zik7CisJCQkJCWwyY2FwX2J1aWxkX2NvbmZfcmVxKHNrLCBidWYsIHNpemVvZihidWYpKSwgYnVmKTsKIAkJCQlsMmNhcF9waShzayktPm51bV9jb25mX3JlcSsrOwogCQkJfQogCQl9IGVsc2UgewpAQCAtNjg3MCw3ICs2ODc5LDcgQEAKIAlwaSA9IGwyY2FwX3BpKHNrKTsKIAogCWwyY2FwX3NlbmRfY21kKHBpLT5jb25uLCBsMmNhcF9nZXRfaWRlbnQocGktPmNvbm4pLCBMMkNBUF9DT05GX1JFUSwKLQkJCQlsMmNhcF9idWlsZF9hbXBfcmVjb25mX3JlcShzaywgYnVmKSwgYnVmKTsKKwkJCQlsMmNhcF9idWlsZF9hbXBfcmVjb25mX3JlcShzaywgYnVmLCBzaXplb2YoYnVmKSksIGJ1Zik7CiAJcmV0dXJuIGVycjsKIH0KIApkaWZmIC0tZ2l0IGEvbmV0L2JsdWV0b290aC9sMmNhcF9zb2NrLmMgYi9uZXQvYmx1ZXRvb3RoL2wyY2FwX3NvY2suYwppbmRleCA2ZTIyOWQxLi5hYTE3OTk5IDEwMDY0NAotLS0gYS9uZXQvYmx1ZXRvb3RoL2wyY2FwX3NvY2suYworKysgYi9uZXQvYmx1ZXRvb3RoL2wyY2FwX3NvY2suYwpAQCAtMTAzMSw3ICsxMDMxLDcgQEAKIAogCQlsMmNhcF9waShzayktPmNvbmZfc3RhdGUgfD0gTDJDQVBfQ09ORl9SRVFfU0VOVDsKIAkJbDJjYXBfc2VuZF9jbWQoY29ubiwgbDJjYXBfZ2V0X2lkZW50KGNvbm4pLCBMMkNBUF9DT05GX1JFUSwKLQkJCQlsMmNhcF9idWlsZF9jb25mX3JlcShzaywgYnVmKSwgYnVmKTsKKwkJCQlsMmNhcF9idWlsZF9jb25mX3JlcShzaywgYnVmLCBzaXplb2YoYnVmKSksIGJ1Zik7CiAJCWwyY2FwX3BpKHNrKS0+bnVtX2NvbmZfcmVxKys7CiAKIAkJcmVsZWFzZV9zb2NrKHNrKTsK |