ZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9jcHUvY3B1LmMgYi9hcmNoL2kzODYvY3B1L2NwdS5jCmluZGV4IDIzMzljZDQuLjVjYTBjOTEgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9jcHUvY3B1LmMKKysrIGIvYXJjaC9pMzg2L2NwdS9jcHUuYwpAQCAtMSw2ICsxLDkgQEAKIC8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDgtMjAxMQorICogR3JhZW1lIFJ1c3MsIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CisgKgogICogKEMpIENvcHlyaWdodCAyMDAyCi0gKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgZGFuaWVsQG9taWNyb24uc2UuCisgKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgPGRhbmllbEBvbWljcm9uLnNlPgogICoKICAqIChDKSBDb3B5cmlnaHQgMjAwMgogICogU3lzZ28gUmVhbC1UaW1lIFNvbHV0aW9ucywgR21iSCA8d3d3LmVsaW5vcy5jb20+CkBAIC0yOSwxOCArMzIsMTYgQEAKICAqIE1BIDAyMTExLTEzMDcgVVNBCiAgKi8KIAotLyoKLSAqIENQVSBzcGVjaWZpYyBjb2RlCi0gKi8KLQogI2luY2x1ZGUgPGNvbW1vbi5oPgogI2luY2x1ZGUgPGNvbW1hbmQuaD4KICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci1mbGFncy5oPgogI2luY2x1ZGUgPGFzbS9pbnRlcnJ1cHQuaD4KIAotLyogQ29uc3RydWN0b3IgZm9yIGEgY29udmVudGlvbmFsIHNlZ21lbnQgR0RUIChvciBMRFQpIGVudHJ5ICovCi0vKiBUaGlzIGlzIGEgbWFjcm8gc28gaXQgY2FuIGJlIHVzZWQgaW4gaW5pdGlhbGl6ZXJzICovCisvKgorICogQ29uc3RydWN0b3IgZm9yIGEgY29udmVudGlvbmFsIHNlZ21lbnQgR0RUIChvciBMRFQpIGVudHJ5CisgKiBUaGlzIGlzIGEgbWFjcm8gc28gaXQgY2FuIGJlIHVzZWQgaW4gaW5pdGlhbGlzZXJzCisgKi8KICNkZWZpbmUgR0RUX0VOVFJZKGZsYWdzLCBiYXNlLCBsaW1pdCkJCQlcCiAJKCgoKGJhc2UpICAmIDB4ZmYwMDAwMDBVTEwpIDw8ICg1Ni0yNCkpIHwJXAogCSAoKChmbGFncykgJiAweDAwMDBmMGZmVUxMKSA8PCA0MCkgfAkJXApAQCAtNDgsMTAgKzQ5LDYgQEAKIAkgKCgoYmFzZSkgICYgMHgwMGZmZmZmZlVMTCkgPDwgMTYpIHwJCVwKIAkgKCgobGltaXQpICYgMHgwMDAwZmZmZlVMTCkpKQogCi0vKgotICogU2V0IHVwIHRoZSBHRFQKLSAqLwotCiBzdHJ1Y3QgZ2R0X3B0ciB7CiAJdTE2IGxlbjsKIAl1MzIgcHRyOwpAQCAtNTksOCArNTYsMTAgQEAKIAogc3RhdGljIHZvaWQgcmVsb2FkX2dkdCh2b2lkKQogewotCS8qIFRoZXJlIGFyZSBtYWNoaW5lcyB3aGljaCBhcmUga25vd24gdG8gbm90IGJvb3Qgd2l0aCB0aGUgR0RUCi0JICAgYmVpbmcgOC1ieXRlIHVuYWxpZ25lZC4gIEludGVsIHJlY29tbWVuZHMgMTYgYnl0ZSBhbGlnbm1lbnQuICovCisJLyoKKwkgKiBUaGVyZSBhcmUgbWFjaGluZXMgd2hpY2ggYXJlIGtub3duIHRvIG5vdCBib290IHdpdGggdGhlIEdEVAorCSAqIGJlaW5nIDgtYnl0ZSB1bmFsaWduZWQuICBJbnRlbCByZWNvbW1lbmRzIDE2IGJ5dGUgYWxpZ25tZW50CisJICovCiAJc3RhdGljIGNvbnN0IHU2NCBib290X2dkdFtdIF9fYXR0cmlidXRlX18oKGFsaWduZWQoMTYpKSkgPSB7CiAJCS8qIENTOiBjb2RlLCByZWFkL2V4ZWN1dGUsIDQgR0IsIGJhc2UgMCAqLwogCQlbR0RUX0VOVFJZXzMyQklUX0NTXSA9IEdEVF9FTlRSWSgweGMwOWIsIDAsIDB4ZmZmZmYpLApAQCAtODYsNyArODUsNiBAQAogCQkgICAgIDogOiAibSIgKGdkdCkgOiAiZWN4Iik7CiB9CiAKLQogaW50IHg4Nl9jcHVfaW5pdF9mKHZvaWQpCiB7CiAJY29uc3QgdTMyIGVtX3JzdCA9IH5YODZfQ1IwX0VNOwpAQCAtMTI1LDcgKzEyMyw5IEBACiBpbnQgZG9fcmVzZXQoY21kX3RibF90ICpjbWR0cCwgaW50IGZsYWcsIGludCBhcmdjLCBjaGFyICogY29uc3QgYXJndltdKQogewogCXByaW50ZiAoInJlc2V0dGluZyAuLi5cbiIpOwotCXVkZWxheSg1MDAwMCk7CQkJCS8qIHdhaXQgNTAgbXMgKi8KKworCS8qIHdhaXQgNTAgbXMgKi8KKwl1ZGVsYXkoNTAwMDApOwogCWRpc2FibGVfaW50ZXJydXB0cygpOwogCXJlc2V0X2NwdSgwKTsKIApAQCAtMTM2LDcgKzEzNiw2IEBACiB2b2lkICBmbHVzaF9jYWNoZSAodW5zaWduZWQgbG9uZyBkdW1teTEsIHVuc2lnbmVkIGxvbmcgZHVtbXkyKQogewogCWFzbSgid2JpbnZkXG4iKTsKLQlyZXR1cm47CiB9CiAKIHZvaWQgX19hdHRyaWJ1dGVfXyAoKHJlZ3Bhcm0oMCkpKSBnZW5lcmF0ZV9ncGYodm9pZCk7CmRpZmYgLS1naXQgYS9hcmNoL2kzODYvY3B1L2ludGVycnVwdHMuYyBiL2FyY2gvaTM4Ni9jcHUvaW50ZXJydXB0cy5jCmluZGV4IDFjZWZlMDIuLjYyYmNhZGMgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9jcHUvaW50ZXJydXB0cy5jCisrKyBiL2FyY2gvaTM4Ni9jcHUvaW50ZXJydXB0cy5jCkBAIC0xLDkgKzEsOSBAQAogLyoKLSAqIChDKSBDb3B5cmlnaHQgMjAwOAotICogR3JhZW1lIFJ1c3MsIGdyYWVtZS5ydXNzQGdtYWlsLmNvbS4KKyAqIChDKSBDb3B5cmlnaHQgMjAwOC0yMDExCisgKiBHcmFlbWUgUnVzcywgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KICAqCiAgKiAoQykgQ29weXJpZ2h0IDIwMDIKLSAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCBkYW5pZWxAb21pY3Jvbi5zZS4KKyAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCA8ZGFuaWVsQG9taWNyb24uc2U+CiAgKgogICogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBkZXJpdmVkIGZyb20gdGhlIExpbnV4IGtlcm5lbCBzb3VyY2UKICAqICBDb3B5cmlnaHQgKEMpIDE5OTEsIDE5OTIgIExpbnVzIFRvcnZhbGRzCkBAIC00NSw3ICs0NSw3IEBACiAgKiByZWFkL3dyaXRlIGZ1bmN0aW9ucyBmb3IgdGhlIGNvbnRyb2wgcmVnaXN0ZXJzIGFuZCBtZXNzaW5nIGV2ZXJ5dGhpbmcgdXAuCiAgKiBBIG1lbW9yeSBjbG9iYmVyIHdvdWxkIHNvbHZlIHRoZSBwcm9ibGVtLCBidXQgd291bGQgcHJldmVudCByZW9yZGVyaW5nIG9mCiAgKiBhbGwgbG9hZHMgc3RvcmVzIGFyb3VuZCBpdCwgd2hpY2ggY2FuIGh1cnQgcGVyZm9ybWFuY2UuIFNvbHV0aW9uIGlzIHRvCi0gKiB1c2UgYSB2YXJpYWJsZSBhbmQgbWltaWMgcmVhZHMgYW5kIHdyaXRlcyB0byBpdCB0byBlbmZvcmNlIHNlcmlhbGl6YXRpb24KKyAqIHVzZSBhIHZhcmlhYmxlIGFuZCBtaW1pYyByZWFkcyBhbmQgd3JpdGVzIHRvIGl0IHRvIGVuZm9yY2Ugc2VyaWFsaXNhdGlvbgogICovCiBzdGF0aWMgdW5zaWduZWQgbG9uZyBfX2ZvcmNlX29yZGVyOwogCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvY3B1L3Jlc2V0dmVjLlMgYi9hcmNoL2kzODYvY3B1L3Jlc2V0dmVjLlMKaW5kZXggZDkyMjJkZC4uMjcwMjFiZCAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2NwdS9yZXNldHZlYy5TCisrKyBiL2FyY2gvaTM4Ni9jcHUvcmVzZXR2ZWMuUwpAQCAtMSw3ICsxLDggQEAKIC8qCiAgKiAgVS1ib290IC0gaTM4NiBTdGFydHVwIENvZGUKICAqCi0gKiAgQ29weXJpZ2h0IChjKSAyMDAyCU9taWNyb24gQ2V0aSBBQiwgRGFuaWVsIEVuZ3N0cvZtIDxkZW5haWVsQG9taWNyb24uc2U+CisgKiAoQykgQ29weXJpZ2h0IDIwMDIKKyAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCA8ZGFuaWVsQG9taWNyb24uc2U+CiAgKgogICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICAqIHByb2plY3QuCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvY3B1L3NjNTIwL3NjNTIwLmMgYi9hcmNoL2kzODYvY3B1L3NjNTIwL3NjNTIwLmMKaW5kZXggZDBjMzEzYi4uZWRjMWE1YyAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2NwdS9zYzUyMC9zYzUyMC5jCisrKyBiL2FyY2gvaTM4Ni9jcHUvc2M1MjAvc2M1MjAuYwpAQCAtMSw2ICsxLDkgQEAKIC8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDgtMjAxMQorICogR3JhZW1lIFJ1c3MsIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CisgKgogICogKEMpIENvcHlyaWdodCAyMDAyCi0gKiBEYW5pZWwgRW5nc3Ry77+9bSwgT21pY3JvbiBDZXRpIEFCIDxkYW5pZWxAb21pY3Jvbi5zZT4uCisgKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgPGRhbmllbEBvbWljcm9uLnNlPgogICoKICAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAgKiBwcm9qZWN0LgpAQCAtMjEsOSArMjQsNiBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCi0vKiBzdHVmZiBzcGVjaWZpYyBmb3IgdGhlIHNjNTIwLAotICogYnV0IGlkZXBlbmRlbnQgb2YgaW1wbGVtZW50YXRpb24gKi8KLQogI2luY2x1ZGUgPGNvbW1vbi5oPgogI2luY2x1ZGUgPGFzbS9pby5oPgogI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3ItZmxhZ3MuaD4KZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9jcHUvc2M1MjAvc2M1MjBfY2FyLlMgYi9hcmNoL2kzODYvY3B1L3NjNTIwL3NjNTIwX2Nhci5TCmluZGV4IDIyZjUyMjUuLmEzM2Y5NGYgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9jcHUvc2M1MjAvc2M1MjBfY2FyLlMKKysrIGIvYXJjaC9pMzg2L2NwdS9zYzUyMC9zYzUyMF9jYXIuUwpAQCAtMSw2ICsxLDYgQEAKIC8qCi0gKiAoQykgQ29weXJpZ2h0IDIwMTAKLSAqIEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+LgorICogKEMpIENvcHlyaWdodCAyMDEwLTIwMTEKKyAqIEdyYWVtZSBSdXNzLCA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgogICoKICAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAgKiBwcm9qZWN0LgpAQCAtMjEsNyArMjEsNiBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCi0KICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLWZsYWdzLmg+CiAjaW5jbHVkZSA8YXNtL2ljL3NjNTIwLmg+CmRpZmYgLS1naXQgYS9hcmNoL2kzODYvY3B1L3NjNTIwL3NjNTIwX3BjaS5jIGIvYXJjaC9pMzg2L2NwdS9zYzUyMC9zYzUyMF9wY2kuYwppbmRleCBiOTE3NzM0Li44Y2Q3ZmZlIDEwMDY0NAotLS0gYS9hcmNoL2kzODYvY3B1L3NjNTIwL3NjNTIwX3BjaS5jCisrKyBiL2FyY2gvaTM4Ni9jcHUvc2M1MjAvc2M1MjBfcGNpLmMKQEAgLTEsNiArMSw5IEBACiAvKgorICogKEMpIENvcHlyaWdodCAyMDA4LTIwMTEKKyAqIEdyYWVtZSBSdXNzLCA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgorICoKICAqIChDKSBDb3B5cmlnaHQgMjAwMgotICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIgPGRhbmllbEBvbWljcm9uLnNlPi4KKyAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCA8ZGFuaWVsQG9taWNyb24uc2U+CiAgKgogICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICAqIHByb2plY3QuCkBAIC0yMSw4ICsyNCw2IEBACiAgKiBNQSAwMjExMS0xMzA3IFVTQQogICovCiAKLS8qIHN0dWZmIHNwZWNpZmljIGZvciB0aGUgc2M1MjAsIGJ1dCBpbmRlcGVuZGVudCBvZiBpbXBsZW1lbnRhdGlvbiAqLwotCiAjaW5jbHVkZSA8Y29tbW9uLmg+CiAjaW5jbHVkZSA8cGNpLmg+CiAjaW5jbHVkZSA8YXNtL2lvLmg+CkBAIC01NCw3ICs1NSw2IEBACiAJeyBTQzUyMF9JUlExNSwgMSwgMHg4MCB9CiB9OwogCi0KIC8qIFRoZSBpbnRlcnJ1cHQgdXNlZCBmb3IgUENJIElOVEEtSU5URCAgKi8KIGludCBzYzUyMF9wY2lfaW50c1sxNV0gPSB7CiAJLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLApAQCAtNjgsOSArNjgsOCBAQAogCXU4IHRtcGI7CiAJdTE2IHRtcHc7CiAKLSMgaWYgMQotCXByaW50Zigic2V0X2lycSgpOiBtYXAgSU5UJWMgdG8gSVJRJWRcbiIsIHBjaV9waW4gKyAnQScsIGlycSk7Ci0jZW5kaWYKKwlkZWJ1Zygic2V0X2lycSgpOiBtYXAgSU5UJWMgdG8gSVJRJWRcbiIsIHBjaV9waW4gKyAnQScsIGlycSk7CisKIAlpZiAoaXJxIDwgMCB8fCBpcnEgPiAxNSkgewogCQlyZXR1cm4gLTE7IC8qIGlsbGVnYWwgaXJxICovCiAJfQpAQCAtMTM4LDUgKzEzNyw0IEBACiAJLyogZW5hYmxlIHRhcmdldCBtZW1vcnkgYWNjZXNlcyBvbiBob3N0IGJyaWdlICovCiAJcGNpX3dyaXRlX2NvbmZpZ193b3JkKDAsIFBDSV9DT01NQU5ELAogCQkJICAgICAgUENJX0NPTU1BTkRfTUVNT1JZIHwgUENJX0NPTU1BTkRfTUFTVEVSKTsKLQogfQpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2NwdS9zYzUyMC9zYzUyMF9zZHJhbS5jIGIvYXJjaC9pMzg2L2NwdS9zYzUyMC9zYzUyMF9zZHJhbS5jCmluZGV4IGQ1YWI1NWQuLmYzNjIzZjUgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9jcHUvc2M1MjAvc2M1MjBfc2RyYW0uYworKysgYi9hcmNoL2kzODYvY3B1L3NjNTIwL3NjNTIwX3NkcmFtLmMKQEAgLTEsNiArMSw2IEBACiAvKgotICogKEMpIENvcHlyaWdodCAyMDEwCi0gKiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPi4KKyAqIChDKSBDb3B5cmlnaHQgMjAxMCwyMDExCisgKiBHcmFlbWUgUnVzcywgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KICAqCiAgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwogICogcHJvamVjdC4KZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9jcHUvc2M1MjAvc2M1MjBfc3NpLmMgYi9hcmNoL2kzODYvY3B1L3NjNTIwL3NjNTIwX3NzaS5jCmluZGV4IDZlNWUzNDYuLmFjNThkMjUgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9jcHUvc2M1MjAvc2M1MjBfc3NpLmMKKysrIGIvYXJjaC9pMzg2L2NwdS9zYzUyMC9zYzUyMF9zc2kuYwpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAoQykgQ29weXJpZ2h0IDIwMDIKLSAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCIDxkYW5pZWxAb21pY3Jvbi5zZT4uCisgKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgPGRhbmllbEBvbWljcm9uLnNlPgogICoKICAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAgKiBwcm9qZWN0LgpAQCAtMjEsOCArMjEsNiBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCi0vKiBzdHVmZiBzcGVjaWZpYyBmb3IgdGhlIHNjNTIwLCBidXQgaW5kZXBlbmRlbnQgb2YgaW1wbGVtZW50YXRpb24gKi8KLQogI2luY2x1ZGUgPGNvbW1vbi5oPgogI2luY2x1ZGUgPGFzbS9pby5oPgogI2luY2x1ZGUgPGFzbS9pYy9zc2kuaD4KQEAgLTc3LDcgKzc1LDYgQEAKIAlyZXR1cm4gcmVhZGIoJnNjNTIwX21tY3ItPnNzaXJjdik7CiB9CiAKLQogdm9pZCBzc2lfdHhfYnl0ZSh1OCBkYXRhKQogewogCXdyaXRlYihkYXRhLCAmc2M1MjBfbW1jci0+c3NpeG1pdCk7CmRpZmYgLS1naXQgYS9hcmNoL2kzODYvY3B1L3NjNTIwL3NjNTIwX3RpbWVyLmMgYi9hcmNoL2kzODYvY3B1L3NjNTIwL3NjNTIwX3RpbWVyLmMKaW5kZXggZDU2MTdlOS4uMWJjZmU2NyAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2NwdS9zYzUyMC9zYzUyMF90aW1lci5jCisrKyBiL2FyY2gvaTM4Ni9jcHUvc2M1MjAvc2M1MjBfdGltZXIuYwpAQCAtMSw2ICsxLDkgQEAKIC8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDgtMjAxMQorICogR3JhZW1lIFJ1c3MsIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CisgKgogICogKEMpIENvcHlyaWdodCAyMDAyCi0gKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiA8ZGFuaWVsQG9taWNyb24uc2U+LgorICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIsIDxkYW5pZWxAb21pY3Jvbi5zZT4KICAqCiAgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwogICogcHJvamVjdC4KQEAgLTIxLDggKzI0LDYgQEAKICAqIE1BIDAyMTExLTEzMDcgVVNBCiAgKi8KIAotLyogc3R1ZmYgc3BlY2lmaWMgZm9yIHRoZSBzYzUyMCwgYnV0IGluZGVwZW5kZW50IG9mIGltcGxlbWVudGF0aW9uICovCi0KICNpbmNsdWRlIDxjb21tb24uaD4KICNpbmNsdWRlIDxhc20vaW8uaD4KICNpbmNsdWRlIDxhc20vaW50ZXJydXB0Lmg+CmRpZmYgLS1naXQgYS9hcmNoL2kzODYvY3B1L3N0YXJ0LlMgYi9hcmNoL2kzODYvY3B1L3N0YXJ0LlMKaW5kZXggMDAzMTM4OS4uMjEyNGE0MiAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2NwdS9zdGFydC5TCisrKyBiL2FyY2gvaTM4Ni9jcHUvc3RhcnQuUwpAQCAtMSw3ICsxLDExIEBACiAvKgogICogIFUtYm9vdCAtIGkzODYgU3RhcnR1cCBDb2RlCiAgKgotICogIENvcHlyaWdodCAoYykgMjAwMglPbWljcm9uIENldGkgQUIsIERhbmllbCBFbmdzdHL2bSA8ZGVuYWllbEBvbWljcm9uLnNlPgorICogKEMpIENvcHlyaWdodCAyMDA4LTIwMTEKKyAqIEdyYWVtZSBSdXNzLCA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgorICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMgorICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIsIDxkYW5pZWxAb21pY3Jvbi5zZT4KICAqCiAgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwogICogcHJvamVjdC4KQEAgLTIyLDEzICsyNiwxMSBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCi0KICNpbmNsdWRlIDxjb25maWcuaD4KICNpbmNsdWRlIDx2ZXJzaW9uLmg+CiAjaW5jbHVkZSA8YXNtL2dsb2JhbF9kYXRhLmg+CiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci1mbGFncy5oPgogCi0KIC5zZWN0aW9uIC50ZXh0CiAuY29kZTMyCiAuZ2xvYmwgX3N0YXJ0CkBAIC01Niw4ICs1OCw4IEBACiBfc3RhcnQ6CiAJLyogVGhpcyBpcyB0aGUgMzItYml0IGNvbGQtcmVzZXQgZW50cnkgcG9pbnQgKi8KIAotCW1vdmwJJDB4MTgsICVlYXgJLyogTG9hZCBvdXIgc2VnZW1lbnQgcmVnaXN0ZXMsIHRoZQotCQkJCSAqIGdkdCBoYXZlIGFscmVhZHkgYmVlbiBsb2FkZWQgYnkgc3RhcnQxNi5TICovCisJLyogTG9hZCB0aGUgc2VnZW1lbnQgcmVnaXN0ZXMgdG8gbWF0Y2ggdGhlIGdkdCBsb2FkZWQgaW4gc3RhcnQxNi5TICovCisJbW92bAkkMHgxOCwgJWVheAogCW1vdncJJWF4LCAlZnMKIAltb3Z3CSVheCwgJWRzCiAJbW92dwklYXgsICVncwpAQCAtODIsMjEgKzg0LDEzIEBACiAJICogc3RhcnRpbmcgYXQgQ09ORklHX1NZU19DQVJfQUREUiB0byBiZSB1c2VkIGFzIGEgdGVtcG9yYXJ5IHN0YWNrCiAJICovCiAJbW92bAkkQ09ORklHX1NZU19JTklUX1NQX0FERFIsICVlc3AKLQltb3ZsCSRDT05GSUdfU1lTX0lOSVRfR0RfQUREUiwgJWVicAotCi0JLyogU2V0IEJvb3QgRmxhZ3MgaW4gR2xvYmFsIERhdGEgKi8KLQltb3ZsCSVlYngsIChHRF9GTEFHUyAqIDQpKCVlYnApCi0KLQkvKiBEZXRlcm1pbmUgb3VyIGxvYWQgb2Zmc2V0IChhbmQgcHV0IGluIEdsb2JhbCBEYXRhKSAqLwotCWNhbGwJMWYKLTE6CXBvcGwJJWVjeAotCXN1YmwJJDFiLCAlZWN4Ci0JbW92bAklZWN4LCAoR0RfTE9BRF9PRkYgKiA0KSglZWJwKQogCiAJLyogU2V0IHBhcmFtZXRlciB0byBib2FyZF9pbml0X2YoKSB0byBib290IGZsYWdzICovCi0JbW92bAkoR0RfRkxBR1MgKiA0KSglZWJwKSwgJWVheAorCXhvcmwJJWVheCwgJWVheAorCW1vdncJJWJ4LCAlYXgKIAotCWNhbGwJYm9hcmRfaW5pdF9mCS8qIEVudGVyLCBVLWJvb3QhICovCisJLyogRW50ZXIsIFUtYm9vdCEgKi8KKwljYWxsCWJvYXJkX2luaXRfZgogCiAJLyogaW5kaWNhdGUgKGxhY2sgb2YpIHByb2dyZXNzICovCiAJbW92dwkkMHg4NSwgJWF4CmRpZmYgLS1naXQgYS9hcmNoL2kzODYvY3B1L3N0YXJ0MTYuUyBiL2FyY2gvaTM4Ni9jcHUvc3RhcnQxNi5TCmluZGV4IDdkYzUzNTguLmQyZTVkMTMgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9jcHUvc3RhcnQxNi5TCisrKyBiL2FyY2gvaTM4Ni9jcHUvc3RhcnQxNi5TCkBAIC0xLDcgKzEsMTEgQEAKIC8qCiAgKiAgVS1ib290IC0gaTM4NiBTdGFydHVwIENvZGUKICAqCi0gKiAgQ29weXJpZ2h0IChjKSAyMDAyLCAyMDAzIE9taWNyb24gQ2V0aSBBQiwgRGFuaWVsIEVuZ3N0cvZtIDxkZW5haWVsQG9taWNyb24uc2U+CisgKiAoQykgQ29weXJpZ2h0IDIwMDgtMjAxMQorICogR3JhZW1lIFJ1c3MsIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CisgKgorICogKEMpIENvcHlyaWdodCAyMDAyLDIwMDMKKyAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCA8ZGFuaWVsQG9taWNyb24uc2U+CiAgKgogICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICAqIHByb2plY3QuCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvbGliL2Jpb3MuUyBiL2FyY2gvaTM4Ni9saWIvYmlvcy5TCmluZGV4IDQ4ZjFiODEuLjY2MGEyNDQgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9saWIvYmlvcy5TCisrKyBiL2FyY2gvaTM4Ni9saWIvYmlvcy5TCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIChDKSBDb3B5cmlnaHQgMjAwMgotICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIsIGRhbmllbEBvbWljcm9uLnNlCisgKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgPGRhbmllbEBvbWljcm9uLnNlPgogICoKICAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAgKiBwcm9qZWN0LgpAQCAtNDIsNyArNDIsNiBAQAogICogYSBnZW5lcmFsIHB1cnBvc2UgcmVwbGFjZW1lbnQgZm9yIGEgcmVhbCBCSU9TICEhCiAgKi8KIAotCiAuc2VjdGlvbiAuYmlvcywgImF4IgogLmNvZGUxNgogLm9yZyAwCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvbGliL2Jpb3MuaCBiL2FyY2gvaTM4Ni9saWIvYmlvcy5oCmluZGV4IDQ5MDFmODkuLjNjOGQ2MWEgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9saWIvYmlvcy5oCisrKyBiL2FyY2gvaTM4Ni9saWIvYmlvcy5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIChDKSBDb3B5cmlnaHQgMjAwMgotICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIsIGRhbmllbEBvbWljcm9uLnNlCisgKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgPGRhbmllbEBvbWljcm9uLnNlPgogICoKICAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAgKiBwcm9qZWN0LgpAQCAtNTcsNyArNTcsNyBAQAogI2RlZmluZSBPRkZTX0ZMQUdTICAgNDQgICAgLyogMTZiaXQgKi8KIAogI2RlZmluZSBTRUdNRU5UICAgICAgMHg0MAotI2RlZmluZSBTVEFDSwkgICAgIDB4ODAwCQkJLyogc3RhY2sgYXQgMHg0MDoweDgwMCAtPiAweDgwMCAqLworI2RlZmluZSBTVEFDSwkgICAgIDB4ODAwCS8qIHN0YWNrIGF0IDB4NDA6MHg4MDAgLT4gMHg4MDAgKi8KIAogLyogc2F2ZSBnZW5lcmFsIHJlZ2lzdGVycyAqLwogLyogc2F2ZSBzb21lIHNlZ21lbnRzICAgICAqLwpAQCAtNjcsMjggKzY3LDI2IEBACiAJLyogc2V0dXAgQklPUyBzdGFja3BvaW50ZXIgKi8KIAogI2RlZmluZSBNQUtFX0JJT1NfU1RBQ0sgXAotCXB1c2hhbAkJOyBcCi0JcHVzaHcJJWRzCTsgXAotCXB1c2h3CSVncwk7IFwKLQlwdXNodwklZXMJOyBcCi0JcHVzaHcJJXNzCTsgXAotCXBvcHcJJWdzCTsgXAotCW1vdncJJFNFR01FTlQsJWF4IDsgXAotCW1vdncJJWF4LCVkcwk7IFwKLQltb3Z3CSVheCwlZXMJOyBcCi0JbW92dwklYXgsJXNzCTsgXAotCW1vdncJJXNwLCVicAk7IFwKLQltb3Z3CSRTVEFDSywlc3AKKwlwdXNoYWw7IFwKKwlwdXNodwklZHM7IFwKKwlwdXNodwklZ3M7IFwKKwlwdXNodwklZXM7IFwKKwlwdXNodwklc3M7IFwKKwlwb3B3CSVnczsgXAorCW1vdncJJFNFR01FTlQsICVheDsgXAorCW1vdncJJWF4LCAlZHM7IFwKKwltb3Z3CSVheCwgJWVzOyBcCisJbW92dwklYXgsICVzczsgXAorCW1vdncJJXNwLCAlYnA7IFwKKwltb3Z3CSRTVEFDSywgJXNwCiAKICNkZWZpbmUgUkVTVE9SRV9DQUxMRVJTX1NUQUNLIFwKLQlwdXNodwklZ3MgICAgIDsJCQkvKiByZXN0b3JlIGNhbGxlcnMgc3RhY2sgc2VnbWVudCAqLyBcCi0JcG9wdwklc3MgICAgIDsgXAotCW1vdncJJWJwLCVzcAk7CQkJLyogcmVzdG9yZSBzdGFja3BvaW50ZXIgKi8gXAotCQlcCi0JcG9wdwklZXMJOwkJCS8qIHJlc3RvcmUgc2VnbWVudCBzZWxlY3RvcnMgKi8gXAotCXBvcHcJJWdzICAgICA7IFwKLQlwb3B3CSVkcyAgICAgOyBcCi0JCVwKLQlwb3BhbAkJCQkJLyogcmVzdG9yZSBHUCByZWdpc3RlcnMgKi8KKwlwdXNodwklZ3M7CQkvKiByZXN0b3JlIGNhbGxlcnMgc3RhY2sgc2VnbWVudCAqLyBcCisJcG9wdwklc3M7IFwKKwltb3Z3CSVicCwgJXNwOwkvKiByZXN0b3JlIHN0YWNrcG9pbnRlciAqLyBcCisJcG9wdwklZXM7CQkvKiByZXN0b3JlIHNlZ21lbnQgc2VsZWN0b3JzICovIFwKKwlwb3B3CSVnczsgXAorCXBvcHcJJWRzOyBcCisJcG9wYWwJCQkvKiByZXN0b3JlIEdQIHJlZ2lzdGVycyAqLwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9saWIvYmlvc19zZXR1cC5jIGIvYXJjaC9pMzg2L2xpYi9iaW9zX3NldHVwLmMKaW5kZXggNzU0MDdjMS4uNjk0OWIzNTAgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9saWIvYmlvc19zZXR1cC5jCisrKyBiL2FyY2gvaTM4Ni9saWIvYmlvc19zZXR1cC5jCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIChDKSBDb3B5cmlnaHQgMjAwMgotICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIsIGRhbmllbEBvbWljcm9uLnNlCisgKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgPGRhbmllbEBvbWljcm9uLnNlPgogICoKICAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAgKiBwcm9qZWN0LgpAQCAtMjEsNyArMjEsNiBAQAogICogTUEgMDIxMTEtMTMwNyBVU0EKICAqLwogCi0KIC8qCiAgKiBQYXJ0bHkgYmFzZWQgb24gbXNiaW9zLmMgZnJvbSByb2xvIDEuNjoKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2xpYi9ib2FyZC5jIGIvYXJjaC9pMzg2L2xpYi9ib2FyZC5jCmluZGV4IGUwZjk4MDMuLjZkOTQ3YzYgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9saWIvYm9hcmQuYworKysgYi9hcmNoL2kzODYvbGliL2JvYXJkLmMKQEAgLTEsOSArMSwxMiBAQAogLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwOC0yMDExCisgKiBHcmFlbWUgUnVzcywgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KKyAqCiAgKiAoQykgQ29weXJpZ2h0IDIwMDIKLSAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCBkYW5pZWxAb21pY3Jvbi5zZQorICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIsIDxkYW5pZWxAb21pY3Jvbi5zZT4KICAqCiAgKiAoQykgQ29weXJpZ2h0IDIwMDIKLSAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisgKiBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCA8d2RAZGVueC5kZT4KICAqCiAgKiAoQykgQ29weXJpZ2h0IDIwMDIKICAqIFN5c2dvIFJlYWwtVGltZSBTb2x1dGlvbnMsIEdtYkggPHd3dy5lbGlub3MuY29tPgpAQCAtMTAzLDEzICsxMDYsNiBAQAogCXJldHVybiAoMCk7CiB9CiAKLS8qCi0gKiBXQVJOSU5HOiB0aGlzIGNvZGUgbG9va3MgImNsZWFuZXIiIHRoYW4gdGhlIFBvd2VyUEMgdmVyc2lvbiwgYnV0Ci0gKiBoYXMgdGhlIGRpc2FkdmFudGFnZSB0aGF0IHlvdSBlaXRoZXIgZ2V0IG5vdGhpbmcsIG9yIGV2ZXJ5dGhpbmcuCi0gKiBPbiBQb3dlclBDLCB5b3UgbWlnaHQgc2VlICJEUkFNOiAiIGJlZm9yZSB0aGUgc3lzdGVtIGhhbmdzIC0gd2hpY2gKLSAqIGdpdmVzIGEgc2ltcGxlIHlldCBjbGVhciBpbmRpY2F0aW9uIHdoaWNoIHBhcnQgb2YgdGhlCi0gKiBpbml0aWFsaXphdGlvbiBpZiBmYWlsaW5nLgotICovCiBzdGF0aWMgaW50IGRpc3BsYXlfZHJhbV9jb25maWcgKHZvaWQpCiB7CiAJaW50IGk7CkBAIC0xNDEsNyArMTM3LDYgQEAKICAqIGNhbiByZWxvY2F0ZSB0aGUgbW9uaXRvciBjb2RlIHRvIFJBTS4KICAqLwogCi0KIC8qCiAgKiBBbGwgYXR0ZW1wdHMgdG8gY29tZSB1cCB3aXRoIGEgImNvbW1vbiIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UKICAqIHRoYXQgd29ya3MgZm9yIGFsbCBib2FyZHMgYW5kIGFyY2hpdGVjdHVyZXMgZmFpbGVkOiBzb21lIG9mIHRoZQpAQCAtMjUxLDEzICsyNDYsMTMgQEAKIAlyZXR1cm4gMDsKIH0KIAotLyoKLSAqIExvYWQgVS1Cb290IGludG8gUkFNLCBpbml0aWFsaXplIEJTUywgcGVyZm9ybSByZWxvY2F0aW9uIGFkanVzdG1lbnRzCi0gKi8KKy8qIExvYWQgVS1Cb290IGludG8gUkFNLCBpbml0aWFsaXplIEJTUywgcGVyZm9ybSByZWxvY2F0aW9uIGFkanVzdG1lbnRzICovCiB2b2lkIGJvYXJkX2luaXRfZih1bG9uZyBib290X2ZsYWdzKQogewogCWluaXRfZm5jX3QgKippbml0X2ZuY19wdHI7CiAKKwlnZC0+ZmxhZ3MgPSBib290X2ZsYWdzOworCiAJZm9yIChpbml0X2ZuY19wdHIgPSBpbml0X3NlcXVlbmNlX2Y7ICppbml0X2ZuY19wdHI7ICsraW5pdF9mbmNfcHRyKSB7CiAJCWlmICgoKmluaXRfZm5jX3B0cikoKSAhPSAwKQogCQkJaGFuZygpOwpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2xpYi9ib290bS5jIGIvYXJjaC9pMzg2L2xpYi9ib290bS5jCmluZGV4IGIzNmU1OGQuLmEyMWEyMWYgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9saWIvYm9vdG0uYworKysgYi9hcmNoL2kzODYvbGliL2Jvb3RtLmMKQEAgLTUsMTAgKzUsMTMgQEAKICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDEgIEVyaWsgTW91dyAoSi5BLksuTW91d0BpdHMudHVkZWxmdC5ubCkKICAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCkBAIC0xNyw4ICsyMCw4IEBACiAgKgogICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCi0gKgorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCiAgKi8KIAogI2luY2x1ZGUgPGNvbW1vbi5oPgpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2xpYi9pbnRlcnJ1cHRzLmMgYi9hcmNoL2kzODYvbGliL2ludGVycnVwdHMuYwppbmRleCA1YTI4Mjc4Li5hMmM1OThmIDEwMDY0NAotLS0gYS9hcmNoL2kzODYvbGliL2ludGVycnVwdHMuYworKysgYi9hcmNoL2kzODYvbGliL2ludGVycnVwdHMuYwpAQCAtMSwyMSArMSwyMSBAQAogLyoKICAqIChDKSBDb3B5cmlnaHQgMjAwOQotICogR3JhZW1lIFJ1c3MsIGdyYWVtZS5ydXNzQGdtYWlsLmNvbQorICogR3JhZW1lIFJ1c3MsIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CiAgKgogICogKEMpIENvcHlyaWdodCAyMDA3Ci0gKiBEYW5pZWwgSGVsbHN0cm9tLCBHYWlzbGVyIFJlc2VhcmNoLCBkYW5pZWxAZ2Fpc2xlci5jb20KKyAqIERhbmllbCBIZWxsc3Ryb20sIEdhaXNsZXIgUmVzZWFyY2gsIDxkYW5pZWxAZ2Fpc2xlci5jb20+CiAgKgogICogKEMpIENvcHlyaWdodCAyMDA2Ci0gKiBEZXRsZXYgWnVuZGVsLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCBkenVAZGVueC5kZQorICogRGV0bGV2IFp1bmRlbCwgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgPGR6dUBkZW54LmRlPgogICoKICAqIChDKSBDb3B5cmlnaHQgLTIwMDMKLSAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisgKiBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCA8d2RAZGVueC5kZT4KICAqCiAgKiAoQykgQ29weXJpZ2h0IDIwMDIKLSAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCBkYW5pZWxAb21pY3Jvbi5zZQorICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIsIDxkYW5pZWxAb21pY3Jvbi5zZT4KICAqCiAgKiAoQykgQ29weXJpZ2h0IDIwMDEKLSAqIEpvc2ggSHViZXIgPGh1YmVyQG1jbHguY29tPiwgTWlzc2lvbiBDcml0aWNhbCBMaW51eCwgSW5jLgorICogSm9zaCBIdWJlciwgTWlzc2lvbiBDcml0aWNhbCBMaW51eCwgSW5jLCA8aHViZXJAbWNseC5jb20+CiAgKgogICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICAqIHByb2plY3QuCkBAIC0zOCwxMSArMzgsMTEgQEAKIAogLyoKICAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgaGlnaC1sZXZlbCBBUEkgZm9yIHRoZSBpbnRlcnJ1cHQgc3ViLXN5c3RlbQotICogb2YgdGhlIGkzODYgcG9ydCBvZiBVLUJvb3QuIE1vc3Qgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4KKyAqIG9mIHRoZSB4ODYgcG9ydCBvZiBVLUJvb3QuIE1vc3Qgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4KICAqIHNoYW1lbGVzc2x5IHN0b2xlbiBmcm9tIHRoZSBsZW9uMiAvIGxlb24zIHBvcnRzIG9mIFUtQm9vdC4KICAqIERhbmllbCBIZWxsc3Ryb20sIERldGxldiBadW5kZWwsIFdvbGZnYW5nIERlbmsgYW5kIEpvc2ggSHViZXIgYXJlCiAgKiBjcmVkaXRlZCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgd29yayBvbiB0aG9zZSBwb3J0cy4gVGhlIG9yaWdpbmFsCi0gKiBpbnRlcnJ1cHQgaGFuZGxpbmcgcm91dGluZXMgZm9yIHRoZSBpMzg2IHBvcnQgd2VyZSB3cml0dGVuIGJ5CisgKiBpbnRlcnJ1cHQgaGFuZGxpbmcgcm91dGluZXMgZm9yIHRoZSB4ODYgcG9ydCB3ZXJlIHdyaXR0ZW4gYnkKICAqIERhbmllbCBFbmdzdHL2bQogICovCiAKZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9saWIvcGNhdF9pbnRlcnJ1cHRzLmMgYi9hcmNoL2kzODYvbGliL3BjYXRfaW50ZXJydXB0cy5jCmluZGV4IDY3ZTZlOTcuLjM2NGM0MzUgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9saWIvcGNhdF9pbnRlcnJ1cHRzLmMKKysrIGIvYXJjaC9pMzg2L2xpYi9wY2F0X2ludGVycnVwdHMuYwpAQCAtMSw5ICsxLDkgQEAKIC8qCiAgKiAoQykgQ29weXJpZ2h0IDIwMDkKLSAqIEdyYWVtZSBSdXNzLCBncmFlbWUucnVzc0BnbWFpbC5jb20KKyAqIEdyYWVtZSBSdXNzLCA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgogICoKICAqIChDKSBDb3B5cmlnaHQgMjAwMgotICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIsIGRhbmllbEBvbWljcm9uLnNlLgorICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIsIDxkYW5pZWxAb21pY3Jvbi5zZT4KICAqCiAgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwogICogcHJvamVjdC4KZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9saWIvcGNhdF90aW1lci5jIGIvYXJjaC9pMzg2L2xpYi9wY2F0X3RpbWVyLmMKaW5kZXggMTM3M2ZkMS4uMTkxMWM2YyAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2xpYi9wY2F0X3RpbWVyLmMKKysrIGIvYXJjaC9pMzg2L2xpYi9wY2F0X3RpbWVyLmMKQEAgLTEsNiArMSw2IEBACiAvKgogICogKEMpIENvcHlyaWdodCAyMDAyCi0gKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgZGFuaWVsQG9taWNyb24uc2UuCisgKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgPGRhbmllbEBvbWljcm9uLnNlPgogICoKICAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAgKiBwcm9qZWN0LgpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2xpYi9wY2kuYyBiL2FyY2gvaTM4Ni9saWIvcGNpLmMKaW5kZXggOTAyMGU3Yy4uZTc5MWU4OCAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2xpYi9wY2kuYworKysgYi9hcmNoL2kzODYvbGliL3BjaS5jCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIChDKSBDb3B5cmlnaHQgMjAwMgotICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIsIGRhbmllbEBvbWljcm9uLnNlCisgKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgPGRhbmllbEBvbWljcm9uLnNlPgogICoKICAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAgKiBwcm9qZWN0LgpAQCAtNTQsMTAgKzU0LDkgQEAKIAljbGFzc19jb2RlICY9IDB4ZmZmZmZmMDA7CiAJY2xhc3NfY29kZSA+Pj0gODsKIAotI2lmIDAKLQlwcmludGYoIlBDSSBIZWFkZXIgVmVuZG9yICUwNHggZGV2aWNlICUwNHggY2xhc3MgJTA2eFxuIiwKKwlkZWJ1ZygiUENJIEhlYWRlciBWZW5kb3IgJTA0eCBkZXZpY2UgJTA0eCBjbGFzcyAlMDZ4XG4iLAogCSAgICAgICB2ZW5kb3IsIGRldmljZSwgY2xhc3NfY29kZSk7Ci0jZW5kaWYKKwogCS8qIEVuYWJsZSB0aGUgcm9tIGFkZGVzcyBkZWNvZGVyICovCiAJcGNpX3dyaXRlX2NvbmZpZ19kd29yZChkZXYsIFBDSV9ST01fQUREUkVTUywgKHUzMilQQ0lfUk9NX0FERFJFU1NfTUFTSyk7CiAJcGNpX3JlYWRfY29uZmlnX2R3b3JkKGRldiwgUENJX1JPTV9BRERSRVNTLCAmYWRkcl9yZWcpOwpAQCAtNzAsMTMgKzY5LDEyIEBACiAKIAlzaXplID0gKH4oYWRkcl9yZWcmUENJX1JPTV9BRERSRVNTX01BU0spKSsxOwogCi0jaWYgMAotCXByaW50ZigiUk9NIGlzICVkIGJ5dGVzXG4iLCBzaXplKTsKLSNlbmRpZgorCWRlYnVnKCJST00gaXMgJWQgYnl0ZXNcbiIsIHNpemUpOworCiAJcm9tX2FkZHIgPSBwY2lfZ2V0X3JvbV93aW5kb3coaG9zZSwgc2l6ZSk7Ci0jaWYgMAotCXByaW50ZigiUk9NIG1hcHBlZCBhdCAleCBcbiIsIHJvbV9hZGRyKTsKLSNlbmRpZgorCisJZGVidWcoIlJPTSBtYXBwZWQgYXQgJXhcbiIsIHJvbV9hZGRyKTsKKwogCXBjaV93cml0ZV9jb25maWdfZHdvcmQoZGV2LCBQQ0lfUk9NX0FERFJFU1MsCiAJCQkgICAgICAgcGNpX3BoeXNfdG9fbWVtKGRldiwgcm9tX2FkZHIpCiAJCQkgICAgICAgfFBDSV9ST01fQUREUkVTU19FTkFCTEUpOwpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2xpYi9wY2lfdHlwZTEuYyBiL2FyY2gvaTM4Ni9saWIvcGNpX3R5cGUxLmMKaW5kZXggMjI1YWU0YS4uOGNlNWIzMyAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2xpYi9wY2lfdHlwZTEuYworKysgYi9hcmNoL2kzODYvbGliL3BjaV90eXBlMS5jCkBAIC0xLDE1ICsxLDMwIEBACiAvKgotICogU3VwcG9ydCBmb3IgdHlwZSBQQ0kgY29uZmlndXJhdGlvbiBjeWNsZXMuCi0gKiBiYXNlZCBvbiBwY2lfaW5kaXJlY3QuYworICogKEMpIENvcHlyaWdodCAyMDAyCisgKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgPGRhbmllbEBvbWljcm9uLnNlPgogICoKLSAqIENvcHlyaWdodCAoQykgMjAwMiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgZGFuaWVsQG9taWNyb24uc2UuCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uCi0gKiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCiAgKi8KIAorLyoKKyAqIFN1cHBvcnQgZm9yIHR5cGUgUENJIGNvbmZpZ3VyYXRpb24gY3ljbGVzLgorICogYmFzZWQgb24gcGNpX2luZGlyZWN0LmMKKyAqLwogI2luY2x1ZGUgPGNvbW1vbi5oPgogI2luY2x1ZGUgPGFzbS9pby5oPgogI2luY2x1ZGUgPHBjaS5oPgpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2xpYi9yZWFsbW9kZS5jIGIvYXJjaC9pMzg2L2xpYi9yZWFsbW9kZS5jCmluZGV4IDJkZGE5NWIuLjViZTgyN2MgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9saWIvcmVhbG1vZGUuYworKysgYi9hcmNoL2kzODYvbGliL3JlYWxtb2RlLmMKQEAgLTEsNiArMSw2IEBACiAvKgogICogKEMpIENvcHlyaWdodCAyMDAyCi0gKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgZGFuaWVsQG9taWNyb24uc2UKKyAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCA8ZGFuaWVsQG9taWNyb24uc2U+CiAgKgogICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICAqIHByb2plY3QuCkBAIC0yNiwxMCArMjYsOCBAQAogI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KICNpbmNsdWRlIDxhc20vcmVhbG1vZGUuaD4KIAotCiAjZGVmaW5lIFJFQUxNT0RFX01BSUxCT1ggKChjaGFyKikweGUwMCkKIAotCiBleHRlcm4gdWxvbmcgX19yZWFsbW9kZV9zdGFydDsKIGV4dGVybiB1bG9uZyBfX3JlYWxtb2RlX3NpemU7CiBleHRlcm4gY2hhciByZWFsbW9kZV9lbnRlcjsKQEAgLTU3LDEzICs1NSwxMSBAQAogewogCiAJLyogc2V0dXAgb3V0IHRoaW4gYmlvcyBlbXVsYXRpb24gKi8KLQlpZiAoYmlvc19zZXR1cCgpKSB7CisJaWYgKGJpb3Nfc2V0dXAoKSkKIAkJcmV0dXJuIC0xOwotCX0KIAotCWlmIChyZWFsbW9kZV9zZXR1cCgpKSB7CisJaWYgKHJlYWxtb2RlX3NldHVwKCkpCiAJCXJldHVybiAtMTsKLQl9CiAKIAlpbi0+ZWlwID0gb2ZmOwogCWluLT54Y3MgPSBzZWc7CmRpZmYgLS1naXQgYS9hcmNoL2kzODYvbGliL3JlYWxtb2RlX3N3aXRjaC5TIGIvYXJjaC9pMzg2L2xpYi9yZWFsbW9kZV9zd2l0Y2guUwppbmRleCBkNmM3NGVjLi5mY2U0ZWNjIDEwMDY0NAotLS0gYS9hcmNoL2kzODYvbGliL3JlYWxtb2RlX3N3aXRjaC5TCisrKyBiL2FyY2gvaTM4Ni9saWIvcmVhbG1vZGVfc3dpdGNoLlMKQEAgLTIxLDcgKzIxLDYgQEAKICAqIE1BIDAyMTExLTEzMDcgVVNBCiAgKi8KIAotCiAvKiAzMmJpdCAtPiAxNmJpdCAtPiAzMmJpdCBtb2RlIHN3aXRjaCBjb2RlICovCiAKIC8qCmRpZmYgLS1naXQgYS9hcmNoL2kzODYvbGliL3RpbWVyLmMgYi9hcmNoL2kzODYvbGliL3RpbWVyLmMKaW5kZXggNWNiMWY1NC4uOGZjNjhjZCAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2xpYi90aW1lci5jCisrKyBiL2FyY2gvaTM4Ni9saWIvdGltZXIuYwpAQCAtMSw2ICsxLDkgQEAKIC8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDgsMjAwOQorICogR3JhZW1lIFJ1c3MsIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CisgKgogICogKEMpIENvcHlyaWdodCAyMDAyCi0gKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgZGFuaWVsQG9taWNyb24uc2UuCisgKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgPGRhbmllbEBvbWljcm9uLnNlPgogICoKICAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAgKiBwcm9qZWN0LgpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2xpYi92aWRlby5jIGIvYXJjaC9pMzg2L2xpYi92aWRlby5jCmluZGV4IGM1OGVkMTAuLmIyOTA3NWMgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9saWIvdmlkZW8uYworKysgYi9hcmNoL2kzODYvbGliL3ZpZGVvLmMKQEAgLTEsNiArMSw2IEBACiAvKgogICogKEMpIENvcHlyaWdodCAyMDAyCi0gKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiwgZGFuaWVsQG9taWNyb24uc2UKKyAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCA8ZGFuaWVsQG9taWNyb24uc2U+CiAgKgogICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKICAqIHByb2plY3QuCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSA8YXNtL2lvLmg+CiAjaW5jbHVkZSA8YXNtL3BjaS5oPgogCi0KIC8qIGJhc2ljIHRleHRtb2RlIEkvTyBmcm9tIGxpbnV4IGtlcm5lbCAqLwogc3RhdGljIGNoYXIgKnZpZG1lbSA9IChjaGFyICopMHhiODAwMDsKIHN0YXRpYyBpbnQgdmlkcG9ydDsKQEAgLTQyLDkgKzQxLDkgQEAKIAlpbnQgaTsKIAogCW91dGJfcCgzLCAweDYxKTsKLQlmb3IgKGk9MDtpPDEwKmR1cjtpKyspIHsKKwlmb3IgKGkgPSAwOyBpIDwgMTAqZHVyOyBpKyspCiAJCXVkZWxheSgxMDAwKTsKLQl9CisKIAlvdXRiX3AoMCwgMHg2MSk7CiB9CiAKQEAgLTUyLDggKzUxLDggQEAKIHsKIAlpbnQgaTsKIAotCW1lbWNweSAoIHZpZG1lbSwgdmlkbWVtICsgY29scyAqIDIsICggbGluZXMgLSAxICkgKiBjb2xzICogMiApOwotCWZvciAoIGkgPSAoIGxpbmVzIC0gMSApICogY29scyAqIDI7IGkgPCBsaW5lcyAqIGNvbHMgKiAyOyBpICs9IDIgKQorCW1lbWNweSh2aWRtZW0sIHZpZG1lbSArIGNvbHMgKiAyLCAobGluZXMgLSAxKSAqIGNvbHMgKiAyKTsKKwlmb3IgKGkgPSAobGluZXMgLSAxKSAqIGNvbHMgKiAyOyBpIDwgbGluZXMgKiBjb2xzICogMjsgaSArPSAyKQogCQl2aWRtZW1baV0gPSAnICc7CiB9CiAKQEAgLTYxLDE0ICs2MCwxNCBAQAogewogCWlmIChjID09ICdcbicpIHsKIAkJKCp4KSA9IDA7Ci0JCWlmICggKysoKnkpID49IGxpbmVzICkgeworCQlpZiAoKysoKnkpID49IGxpbmVzKSB7CiAJCQlzY3JvbGwoKTsKIAkJCSgqeSktLTsKIAkJfQogCX0gZWxzZSBpZiAoYyA9PSAnXGInKSB7CiAJCWlmICgoKngpICE9IDApIHsKIAkJCS0tKCp4KTsKLQkJCXZpZG1lbSBbICggKCp4KSArIGNvbHMgKiAoKnkpICkgKiAyIF0gPSAnICc7CisJCQl2aWRtZW1bKCgqeCkgKyBjb2xzICogKCp5KSkgKiAyXSA9ICcgJzsKIAkJfQogCX0gZWxzZSBpZiAoYyA9PSAnXHInKSB7CiAJCSgqeCkgPSAwOwpAQCAtMTA2LDE2ICsxMDUsMTUgQEAKIAkJfQogCX0gZWxzZSBpZiAoYyA9PSAnXGYnKSB7CiAJCWludCBpOwotCQlmb3IgKGk9MDtpPGxpbmVzKmNvbHMqMjtpKz0yKSB7CisJCWZvciAoaSA9IDA7IGkgPCBsaW5lcyAqIGNvbHMgKiAyOyBpICs9IDIpCiAJCQl2aWRtZW1baV0gPSAwOwotCQl9CiAJCSgqeCkgPSAwOwogCQkoKnkpID0gMDsKIAl9IGVsc2UgewotCQl2aWRtZW0gWyAoICgqeCkgKyBjb2xzICogKCp5KSApICogMiBdID0gYzsKLQkJaWYgKCArKygqeCkgPj0gY29scyApIHsKKwkJdmlkbWVtWygoKngpICsgY29scyAqICgqeSkpICogMl0gPSBjOworCQlpZiAoKysoKngpID49IGNvbHMpIHsKIAkJCSgqeCkgPSAwOwotCQkJaWYgKCArKygqeSkgPj0gbGluZXMgKSB7CisJCQlpZiAoKysoKnkpID49IGxpbmVzKSB7CiAJCQkJc2Nyb2xsKCk7CiAJCQkJKCp5KS0tOwogCQkJfQpAQCAtMTUwLDkgKzE0OCw4IEBACiAJeCA9IG9yaWdfeDsKIAl5ID0gb3JpZ195OwogCi0Jd2hpbGUgKCAoIGMgPSAqcysrICkgIT0gJ1wwJyApIHsKKwl3aGlsZSAoKGMgPSAqcysrKSAhPSAnXDAnKQogCQlfX3ZpZGVvX3B1dGMoYywgJngsICZ5KTsKLQl9CiAKIAlvcmlnX3ggPSB4OwogCW9yaWdfeSA9IHk7CkBAIC0xODksMTAgKzE4Niw4IEBACiAjaWYgMAogCXByaW50ZigicG9zICV4ICVkICVkXG4iLCBwb3MsIG9yaWdfeCwgb3JpZ195KTsKICNlbmRpZgotCWlmIChvcmlnX3kgPiBsaW5lcykgeworCWlmIChvcmlnX3kgPiBsaW5lcykKIAkJb3JpZ194ID0gb3JpZ195ID0wOwotCX0KLQogCiAJbWVtc2V0KCZ2Z2FfZGV2LCAwLCBzaXplb2YodmdhX2RldikpOwogCXN0cmNweSh2Z2FfZGV2Lm5hbWUsICJ2Z2EiKTsKQEAgLTIwMywxMyArMTk4LDExIEBACiAJdmdhX2Rldi50c3RjICA9IE5VTEw7ICAgICAgICAgICAgICAvKiAndHN0YycgZnVuY3Rpb24gKi8KIAl2Z2FfZGV2LmdldGMgID0gTlVMTDsgICAgICAgICAgICAgIC8qICdnZXRjJyBmdW5jdGlvbiAqLwogCi0JaWYgKHN0ZGlvX3JlZ2lzdGVyKCZ2Z2FfZGV2KSA9PSAwKSB7Ci0JICAgIHJldHVybiAxOwotCX0KKwlpZiAoc3RkaW9fcmVnaXN0ZXIoJnZnYV9kZXYpID09IDApCisJCXJldHVybiAxOwogCi0JaWYgKGk4MDQyX2tiZF9pbml0KCkpIHsKKwlpZiAoaTgwNDJfa2JkX2luaXQoKSkKIAkJcmV0dXJuIDE7Ci0JfQogCiAJbWVtc2V0KCZrYmRfZGV2LCAwLCBzaXplb2Yoa2JkX2RldikpOwogCXN0cmNweShrYmRfZGV2Lm5hbWUsICJrYmQiKTsKQEAgLTIyMCwxOCArMjEzLDE3IEBACiAJa2JkX2Rldi50c3RjICA9IGk4MDQyX3RzdGM7ICAvKiAndHN0YycgZnVuY3Rpb24gKi8KIAlrYmRfZGV2LmdldGMgID0gaTgwNDJfZ2V0YzsgIC8qICdnZXRjJyBmdW5jdGlvbiAqLwogCi0JaWYgKHN0ZGlvX3JlZ2lzdGVyKCZrYmRfZGV2KSA9PSAwKSB7Ci0JICAgIHJldHVybiAxOwotCX0KKwlpZiAoc3RkaW9fcmVnaXN0ZXIoJmtiZF9kZXYpID09IDApCisJCXJldHVybiAxOworCiAJcmV0dXJuIDA7CiB9CiAKIAogaW50IGRydl92aWRlb19pbml0KHZvaWQpCiB7Ci0JaWYgKHZpZGVvX2Jpb3NfaW5pdCgpKSB7CisJaWYgKHZpZGVvX2Jpb3NfaW5pdCgpKQogCQlyZXR1cm4gMTsKLQl9CiAKIAlyZXR1cm4gdmlkZW9faW5pdCgpOwogfQpkaWZmIC0tZ2l0IGEvYXJjaC9pMzg2L2xpYi92aWRlb19iaW9zLmMgYi9hcmNoL2kzODYvbGliL3ZpZGVvX2Jpb3MuYwppbmRleCBjODA2MGU2Li42YmM0MzM1IDEwMDY0NAotLS0gYS9hcmNoL2kzODYvbGliL3ZpZGVvX2Jpb3MuYworKysgYi9hcmNoL2kzODYvbGliL3ZpZGVvX2Jpb3MuYwpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAoQykgQ29weXJpZ2h0IDIwMDIKLSAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCBkYW5pZWxAb21pY3Jvbi5zZQorICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIsIDxkYW5pZWxAb21pY3Jvbi5zZT4KICAqCiAgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwogICogcHJvamVjdC4KZGlmZiAtLWdpdCBhL2FyY2gvaTM4Ni9saWIvemltYWdlLmMgYi9hcmNoL2kzODYvbGliL3ppbWFnZS5jCmluZGV4IDBjNDIwNzIuLmNjNGI0MGUgMTAwNjQ0Ci0tLSBhL2FyY2gvaTM4Ni9saWIvemltYWdlLmMKKysrIGIvYXJjaC9pMzg2L2xpYi96aW1hZ2UuYwpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAoQykgQ29weXJpZ2h0IDIwMDIKLSAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCBkYW5pZWxAb21pY3Jvbi5zZQorICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIsIDxkYW5pZWxAb21pY3Jvbi5zZT4KICAqCiAgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwogICogcHJvamVjdC4KQEAgLTIyLDcgKzIyLDcgQEAKICAqLwogCiAvKgotICogTGludXggaTM4NiB6SW1hZ2UgYW5kIGJ6SW1hZ2UgbG9hZGluZworICogTGludXggeDg2IHpJbWFnZSBhbmQgYnpJbWFnZSBsb2FkaW5nCiAgKgogICogYmFzZWQgb24gdGhlIHByb2NkdXJlIGRlc2NyaWJlZCBpbgogICogbGludXgvRG9jdW1lbnRhdGlvbi9pMzg2L2Jvb3QudHh0CmRpZmYgLS1naXQgYS9ib2FyZC9lTkVUL2VORVRfcGNpLmMgYi9ib2FyZC9lTkVUL2VORVRfcGNpLmMKaW5kZXggZmVmYjFhNC4uYTAzMDkwZSAxMDA2NDQKLS0tIGEvYm9hcmQvZU5FVC9lTkVUX3BjaS5jCisrKyBiL2JvYXJkL2VORVQvZU5FVF9wY2kuYwpAQCAtMSw5ICsxLDkgQEAKIC8qCi0gKiAoQykgQ29weXJpZ2h0IDIwMDgKLSAqIEdyYWVtZSBSdXNzLCBncmFlbWUucnVzc0BnbWFpbC5jb20uCisgKiAoQykgQ29weXJpZ2h0IDIwMDgsMjAwOQorICogR3JhZW1lIFJ1c3MsIDxncmFlbWUucnVzc0BnbWFpbC5jb20+CiAgKgogICogKEMpIENvcHlyaWdodCAyMDAyCi0gKiBEYW5pZWwgRW5nc3Ry9m0sIE9taWNyb24gQ2V0aSBBQiA8ZGFuaWVsQG9taWNyb24uc2U+LgorICogRGFuaWVsIEVuZ3N0cvZtLCBPbWljcm9uIENldGkgQUIsIDxkYW5pZWxAb21pY3Jvbi5zZT4KICAqCiAgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwogICogcHJvamVjdC4KQEAgLTIzLDYgKzIzLDcgQEAKICAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCiAgKiBNQSAwMjExMS0xMzA3IFVTQQogICovCisKICNpbmNsdWRlIDxjb21tb24uaD4KICNpbmNsdWRlIDxwY2kuaD4KICNpbmNsdWRlIDxhc20vcGNpLmg+Cg==