ZGlmZiAtLWdpdCBhL0NIQU5HRUxPRyBiL0NIQU5HRUxPRwppbmRleCAzN2Q0MTU4Li45YWYxMGU4IDEwMDY0NAotLS0gYS9DSEFOR0VMT0cKKysrIGIvQ0hBTkdFTE9HCkBAIC0yLDYgKzIsOCBAQAogQ2hhbmdlcyBzaW5jZSBVLUJvb3QgMS4xLjQ6CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKKyogTWlub3IgY29kZSBjbGVhbnVwCisKICogTWVyZ2UgdGhlIG5ldyBOQU5EIGNvZGUgKHRlc3RpbmctTkFORCBicmFjaCk7IHNlZSBkb2MvUkVBRE1FLm5hbmQKICAgUmV3cml0ZSBvZiBOQU5EIGNvZGUgYmFzZWQgb24gd2hhdCBpcyBpbiAyLjYuMTIgTGludXgga2VybmVsCiAgIFBhdGNoIGJ5IExhZGlzbGF2IE1pY2hsLCAyOSBKdW4gMjAwNQpkaWZmIC0tZ2l0IGEvYm9hcmQvYW1jYy9iYW1ib28vY29uZmlnLm1rIGIvYm9hcmQvYW1jYy9iYW1ib28vY29uZmlnLm1rCmluZGV4IGI2NDk1ZGUuLjQzMzQyOWIgMTAwNjQ0Ci0tLSBhL2JvYXJkL2FtY2MvYmFtYm9vL2NvbmZpZy5taworKysgYi9ib2FyZC9hbWNjL2JhbWJvby9jb25maWcubWsKQEAgLTM1LDQgKzM1LDMgQEAKIAogIyBsZWdhY3kgbmFuZCBzdXBwb3J0CiBCT0FSRExJQlMgPSBkcml2ZXJzL25hbmRfbGVnYWN5L2xpYm5hbmRfbGVnYWN5LmEKLQpkaWZmIC0tZ2l0IGEvYm9hcmQvYm13L2NvbmZpZy5tayBiL2JvYXJkL2Jtdy9jb25maWcubWsKaW5kZXggMTBiN2E5Zi4uZjk5MTU0OSAxMDA2NDQKLS0tIGEvYm9hcmQvYm13L2NvbmZpZy5taworKysgYi9ib2FyZC9ibXcvY29uZmlnLm1rCkBAIC0zMCw0ICszMCwzIEBACiBQTEFURk9STV9DUFBGTEFHUyArPSAtREVNQkVEREVEIC1EQklHX0VORElBTl9IT1NUIC1ESU5DTFVERV81NzAxX0FYX0ZJWD0xXAogCQkgICAgIC1EREJHPTAgLURUM19KVU1CT19SQ1ZfUkNCX0VOVFJZX0NPVU5UPTI1NlwKIAkJICAgICAtRFRFWFRfQkFTRT0kKFRFWFRfQkFTRSkKLQpkaWZmIC0tZ2l0IGEvYm9hcmQvZGF2ZS9QUENoYW1lbGVvbkVWQi9jb25maWcubWsgYi9ib2FyZC9kYXZlL1BQQ2hhbWVsZW9uRVZCL2NvbmZpZy5tawppbmRleCA1ZDNkZjBjLi4xZGM2MzVmIDEwMDY0NAotLS0gYS9ib2FyZC9kYXZlL1BQQ2hhbWVsZW9uRVZCL2NvbmZpZy5taworKysgYi9ib2FyZC9kYXZlL1BQQ2hhbWVsZW9uRVZCL2NvbmZpZy5tawpAQCAtMzIsNCArMzIsMyBAQAogCiAjIENvbXBpbGUgdGhlIGxlZ2FjeSBOQU5EIGNvZGUgKENGR19OQU5EX0xFR0FDWSBtdXN0IGJlIGRlZmluZWQpCiAjQk9BUkRMSUJTID0gZHJpdmVycy9uYW5kX2xlZ2FjeS9saWJuYW5kX2xlZ2FjeS5hCi0KZGlmZiAtLWdpdCBhL2JvYXJkL2RhdmUvUFBDaGFtZWxlb25FVkIvbmFuZC5jIGIvYm9hcmQvZGF2ZS9QUENoYW1lbGVvbkVWQi9uYW5kLmMKaW5kZXggNjFlZGM3OC4uNDBhODI3YyAxMDA2NDQKLS0tIGEvYm9hcmQvZGF2ZS9QUENoYW1lbGVvbkVWQi9uYW5kLmMKKysrIGIvYm9hcmQvZGF2ZS9QUENoYW1lbGVvbkVWQi9uYW5kLmMKQEAgLTgxLDcgKzgxLDcgQEAKIAkJYnJlYWs7CiAJfQogCi0gICAgICAgIGlmIChpbjMyKEdQSU8wX0lSKSAmIHJiX2dwaW9fcGluKQorCWlmIChpbjMyKEdQSU8wX0lSKSAmIHJiX2dwaW9fcGluKQogCQlyZXR1cm4gMTsKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9jb21tb24vYXV0b191cGRhdGUuYyBiL2JvYXJkL2VzZC9jb21tb24vYXV0b191cGRhdGUuYwppbmRleCA1YTcwMTc2Li5jYWQ4MjExIDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvY29tbW9uL2F1dG9fdXBkYXRlLmMKKysrIGIvYm9hcmQvZXNkL2NvbW1vbi9hdXRvX3VwZGF0ZS5jCkBAIC00Miw5ICs0Miw2IEBACiAjZXJyb3IgIm11c3QgZGVmaW5lIENGR19DTURfRkFUIgogI2VuZGlmCiAKLQotCi0KIGV4dGVybiBhdV9pbWFnZV90IGF1X2ltYWdlW107CiBleHRlcm4gaW50IE5fQVVfSU1BR0VTOwogCmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvY29tbW9uL2NtZF9sb2FkcGNpLmMgYi9ib2FyZC9lc2QvY29tbW9uL2NtZF9sb2FkcGNpLmMKaW5kZXggMzQ3OGY4Mi4uYmY3OTZmZiAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL2NvbW1vbi9jbWRfbG9hZHBjaS5jCisrKyBiL2JvYXJkL2VzZC9jb21tb24vY21kX2xvYWRwY2kuYwpAQCAtMTIwLDQgKzEyMCwzIEBACiAJKTsKIAogI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9jcGNpMmRwL2NwY2kyZHAuYyBiL2JvYXJkL2VzZC9jcGNpMmRwL2NwY2kyZHAuYwppbmRleCAyODAwNDIwLi4xYTI3Y2EwIDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvY3BjaTJkcC9jcGNpMmRwLmMKKysrIGIvYm9hcmQvZXNkL2NwY2kyZHAvY3BjaTJkcC5jCkBAIC0zNiw5ICszNiw5IEBACiAJY250cmwwUmVnID0gbWZkY3IoY250cmwwKTsKIAltdGRjcihjbnRybDAsIGNudHJsMFJlZyB8ICgoQ0ZHX0VFUFJPTV9XUCB8IENGR19QQl9MRUQgfCBDRkdfU0VMRl9SU1QgfCBDRkdfSU5UQV9GQUtFKSA8PCA1KSk7CiAKLSAgICAgICAgLyogc2V0IG91dHB1dCBwaW5zIHRvIGhpZ2ggKi8KKwkvKiBzZXQgb3V0cHV0IHBpbnMgdG8gaGlnaCAqLwogCW91dDMyKEdQSU8wX09SLCAgQ0ZHX0VFUFJPTV9XUCk7Ci0gICAgICAgIC8qIHNldHVwIGZvciBvdXRwdXQgKExFRD1vZmYpICovCisJLyogc2V0dXAgZm9yIG91dHB1dCAoTEVEPW9mZikgKi8KIAlvdXQzMihHUElPMF9UQ1IsIENGR19FRVBST01fV1AgfCBDRkdfUEJfTEVEKTsKIAogCS8qCmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvY3BjaTQwNS9jb25maWcubWsgYi9ib2FyZC9lc2QvY3BjaTQwNS9jb25maWcubWsKaW5kZXggMzIwMzQ2Zi4uY2VmZjRjNCAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL2NwY2k0MDUvY29uZmlnLm1rCisrKyBiL2JvYXJkL2VzZC9jcGNpNDA1L2NvbmZpZy5tawpAQCAtNDEsNCArNDEsMyBAQAogCiAjIENvbXBpbGUgdGhlIGxlZ2FjeSBOQU5EIGNvZGUgKENGR19OQU5EX0xFR0FDWSBtdXN0IGJlIGRlZmluZWQpCiBCT0FSRExJQlMgPSBkcml2ZXJzL25hbmRfbGVnYWN5L2xpYm5hbmRfbGVnYWN5LmEKLQpkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL2NwY2k3NTAvY3BjaTc1MC5jIGIvYm9hcmQvZXNkL2NwY2k3NTAvY3BjaTc1MC5jCmluZGV4IGZkMGY5MDQuLmRiZWQ1OTcgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9jcGNpNzUwL2NwY2k3NTAuYworKysgYi9ib2FyZC9lc2QvY3BjaTc1MC9jcGNpNzUwLmMKQEAgLTM3OCw3ICszNzgsNiBAQAogCQkJICAgICAgIENGR19NT05JVE9SX0JBU0UsCiAJCQkgICAgICAgQ0ZHX01PTklUT1JfQkFTRSArIG1vbml0b3JfZmxhc2hfbGVuICAtIDEsCiAJCQkgICAgICAgJmZsYXNoX2luZm9bM10pOwotCQogCX0KIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9jcGNpNzUwL3BjaS5jIGIvYm9hcmQvZXNkL2NwY2k3NTAvcGNpLmMKaW5kZXggMzdjNzE1MC4uYzMzNWViZiAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL2NwY2k3NTAvcGNpLmMKKysrIGIvYm9hcmQvZXNkL2NwY2k3NTAvcGNpLmMKQEAgLTEyLDcgKzEyLDcgQEAKICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlCiAgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogICoKICAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCkBAIC00Niw4ICs0Niw4IEBACiAKICNpZmRlZiBDT05GSUdfVVNFX0NQQ0lEVkkKIHR5cGVkZWYgc3RydWN0IHsKLSAgICAgICAgdW5zaWduZWQgaW50IGJhc2U7Ci0gICAgICAgIHVuc2lnbmVkIGludCBpbml0OworCXVuc2lnbmVkIGludCBiYXNlOworCXVuc2lnbmVkIGludCBpbml0OwogfSBHVF9DUENJRFZJX1JPTV9UOwogCiBzdGF0aWMgR1RfQ1BDSURWSV9ST01fVCBndF9jcGNpZHZpX3JvbSA9IHswLCAwfTsKQEAgLTEzMywyMCArMTMzLDIwIEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBwY2lXcml0ZUNvbmZpZ1JlZyAtIFdyaXRlIHRvIGEgUENJIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIKLSogICAgICAgICAgICAgICAgICAgIC0gTWFrZSBzdXJlIHRoZSBHVCBpcyBjb25maWd1cmVkIGFzIGEgbWFzdGVyIGJlZm9yZSB3cml0aW5nCi0qICAgICAgICAgICAgICAgICAgICAgIHRvIGFub3RoZXIgZGV2aWNlIG9uIHRoZSBQQ0kuCi0qICAgICAgICAgICAgICAgICAgICAtIFRoZSBmdW5jdGlvbiB0YWtlcyBjYXJlIG9mIEJpZy9MaXR0bGUgZW5kaWFuIGNvbnZlcnNpb24uCisqCQkgICAgLSBNYWtlIHN1cmUgdGhlIEdUIGlzIGNvbmZpZ3VyZWQgYXMgYSBtYXN0ZXIgYmVmb3JlIHdyaXRpbmcKKyoJCSAgICAgIHRvIGFub3RoZXIgZGV2aWNlIG9uIHRoZSBQQ0kuCisqCQkgICAgLSBUaGUgZnVuY3Rpb24gdGFrZXMgY2FyZSBvZiBCaWcvTGl0dGxlIGVuZGlhbiBjb252ZXJzaW9uLgogKgogKgogKiBJbnB1dHM6ICAgdW5zaWduZWQgaW50IHJlZ09mZnNldDogVGhlIHJlZ2lzdGVyIG9mZnNldCBhcyBpdCBhcGVhcnMgaW4gdGhlIEdUIHNwZWMKLSogICAgICAgICAgICAgICAgICAgKG9yIGFueSBvdGhlciBQQ0kgZGV2aWNlIHNwZWMpCi0qICAgICAgICAgICBwY2lEZXZOdW06IFRoZSBkZXZpY2UgbnVtYmVyIG5lZWRzIHRvIGJlIGFkZHJlc3NlZC4KKyoJCSAgIChvciBhbnkgb3RoZXIgUENJIGRldmljZSBzcGVjKQorKgkgICAgcGNpRGV2TnVtOiBUaGUgZGV2aWNlIG51bWJlciBuZWVkcyB0byBiZSBhZGRyZXNzZWQuCiAqCiAqICBDb25maWd1cmF0aW9uIEFkZHJlc3MgMHhDRjg6CiAqCi0qICAgICAgIDMxIDMwICAgIDI0IDIzICAxNiAxNSAgMTEgMTAgICAgIDggNyAgICAgIDIgIDAgICAgIDw9Yml0IE51bWJlcgorKgkzMSAzMAkgMjQgMjMJMTYgMTUgIDExIDEwCSA4IDcJICAyICAwCSAgIDw9Yml0IE51bWJlcgogKiAgfGNvbmdpZnxSZXNlcnZlZHwgIEJ1cyB8RGV2aWNlfEZ1bmN0aW9ufFJlZ2lzdGVyfDAwfAotKiAgfEVuYWJsZXwgICAgICAgIHxOdW1iZXJ8TnVtYmVyfCBOdW1iZXIgfCBOdW1iZXIgfCAgfCAgICA8PWZpZWxkIE5hbWUKKyogIHxFbmFibGV8CSAgIHxOdW1iZXJ8TnVtYmVyfCBOdW1iZXIgfCBOdW1iZXIgfCAgfAkgICA8PWZpZWxkIE5hbWUKICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIHZvaWQgcGNpV3JpdGVDb25maWdSZWcgKFBDSV9IT1NUIGhvc3QsIHVuc2lnbmVkIGludCByZWdPZmZzZXQsCkBAIC0xODAsMjAgKzE4MCwyMCBAQAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogcGNpUmVhZENvbmZpZ1JlZyAgLSBSZWFkIGZyb20gYSBQQ0kwIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIKLSogICAgICAgICAgICAgICAgICAgIC0gTWFrZSBzdXJlIHRoZSBHVCBpcyBjb25maWd1cmVkIGFzIGEgbWFzdGVyIGJlZm9yZSByZWFkaW5nCi0qICAgICAgICAgICAgICAgICAgICAgZnJvbSBhbm90aGVyIGRldmljZSBvbiB0aGUgUENJLgotKiAgICAgICAgICAgICAgICAgICAtIFRoZSBmdW5jdGlvbiB0YWtlcyBjYXJlIG9mIEJpZy9MaXR0bGUgZW5kaWFuIGNvbnZlcnNpb24uCisqCQkgICAgLSBNYWtlIHN1cmUgdGhlIEdUIGlzIGNvbmZpZ3VyZWQgYXMgYSBtYXN0ZXIgYmVmb3JlIHJlYWRpbmcKKyoJCSAgICAgIGZyb20gYW5vdGhlciBkZXZpY2Ugb24gdGhlIFBDSS4KKyoJCSAgICAtIFRoZSBmdW5jdGlvbiB0YWtlcyBjYXJlIG9mIEJpZy9MaXR0bGUgZW5kaWFuIGNvbnZlcnNpb24uCiAqIElOUFVUUzogICByZWdPZmZzZXQ6IFRoZSByZWdpc3RlciBvZmZzZXQgYXMgaXQgYXBlYXJzIGluIHRoZSBHVCBzcGVjIChvciBQQ0kKLSogICAgICAgICAgICAgICAgICAgICAgICBzcGVjKQotKiAgICAgICAgICAgcGNpRGV2TnVtOiBUaGUgZGV2aWNlIG51bWJlciBuZWVkcyB0byBiZSBhZGRyZXNzZWQuCisqCQkJc3BlYykKKyoJICAgIHBjaURldk51bTogVGhlIGRldmljZSBudW1iZXIgbmVlZHMgdG8gYmUgYWRkcmVzc2VkLgogKiBSRVRVUk5TOiBkYXRhICwgaWYgdGhlIGRhdGEgPT0gMHhmZmZmZmZmZiBjaGVjayB0aGUgbWFzdGVyIGFib3J0IGJpdCBpbiB0aGUKLSogICAgICAgICAgICAgICAgIGNhdXNlIHJlZ2lzdGVyIHRvIG1ha2Ugc3VyZSB0aGUgZGF0YSBpcyB2YWxpZAorKgkJICBjYXVzZSByZWdpc3RlciB0byBtYWtlIHN1cmUgdGhlIGRhdGEgaXMgdmFsaWQKICoKICogIENvbmZpZ3VyYXRpb24gQWRkcmVzcyAweENGODoKICoKLSogICAgICAgMzEgMzAgICAgMjQgMjMgIDE2IDE1ICAxMSAxMCAgICAgOCA3ICAgICAgMiAgMCAgICAgPD1iaXQgTnVtYmVyCisqCTMxIDMwCSAyNCAyMwkxNiAxNSAgMTEgMTAJIDggNwkgIDIgIDAJICAgPD1iaXQgTnVtYmVyCiAqICB8Y29uZ2lmfFJlc2VydmVkfCAgQnVzIHxEZXZpY2V8RnVuY3Rpb258UmVnaXN0ZXJ8MDB8Ci0qICB8RW5hYmxlfCAgICAgICAgfE51bWJlcnxOdW1iZXJ8IE51bWJlciB8IE51bWJlciB8ICB8ICAgIDw9ZmllbGQgTmFtZQorKiAgfEVuYWJsZXwJICAgfE51bWJlcnxOdW1iZXJ8IE51bWJlciB8IE51bWJlciB8ICB8CSAgIDw9ZmllbGQgTmFtZQogKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogdW5zaWduZWQgaW50IHBjaVJlYWRDb25maWdSZWcgKFBDSV9IT1NUIGhvc3QsIHVuc2lnbmVkIGludCByZWdPZmZzZXQsCkBAIC0yMjgsMjEgKzIyOCwyMSBAQAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogcGNpT3ZlckJyaWRnZVdyaXRlQ29uZmlnUmVnIC0gV3JpdGUgdG8gYSBQQ0kgY29uZmlndXJhdGlvbiByZWdpc3RlciB3aGVyZQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYWdlbnQgaXMgcGxhY2VkIG9uIGFub3RoZXIgQnVzLiBGb3IgbW9yZQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiByZWFkIFAyUCBpbiB0aGUgUENJIHNwZWMuCisqCQkJCXRoZSBhZ2VudCBpcyBwbGFjZWQgb24gYW5vdGhlciBCdXMuIEZvciBtb3JlCisqCQkJCWluZm9ybWF0aW9uIHJlYWQgUDJQIGluIHRoZSBQQ0kgc3BlYy4KICoKICogSW5wdXRzOiAgIHVuc2lnbmVkIGludCByZWdPZmZzZXQgLSBUaGUgcmVnaXN0ZXIgb2Zmc2V0IGFzIGl0IGFwZWFycyBpbiB0aGUKLSogICAgICAgICAgIEdUIHNwZWMgKG9yIGFueSBvdGhlciBQQ0kgZGV2aWNlIHNwZWMpLgotKiAgICAgICAgICAgdW5zaWduZWQgaW50IHBjaURldk51bSAtIFRoZSBkZXZpY2UgbnVtYmVyIG5lZWRzIHRvIGJlIGFkZHJlc3NlZC4KLSogICAgICAgICAgIHVuc2lnbmVkIGludCBidXNOdW0gLSBPbiB3aGljaCBidXMgZG9lcyB0aGUgVGFyZ2V0IGFnZW50IGNvbm5lY3QKLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0by4KLSogICAgICAgICAgIHVuc2lnbmVkIGludCBkYXRhIC0gZGF0YSB0byBiZSB3cml0dGVuLgorKgkgICAgR1Qgc3BlYyAob3IgYW55IG90aGVyIFBDSSBkZXZpY2Ugc3BlYykuCisqCSAgICB1bnNpZ25lZCBpbnQgcGNpRGV2TnVtIC0gVGhlIGRldmljZSBudW1iZXIgbmVlZHMgdG8gYmUgYWRkcmVzc2VkLgorKgkgICAgdW5zaWduZWQgaW50IGJ1c051bSAtIE9uIHdoaWNoIGJ1cyBkb2VzIHRoZSBUYXJnZXQgYWdlbnQgY29ubmVjdAorKgkJCQkgIHRvLgorKgkgICAgdW5zaWduZWQgaW50IGRhdGEgLSBkYXRhIHRvIGJlIHdyaXR0ZW4uCiAqCiAqICBDb25maWd1cmF0aW9uIEFkZHJlc3MgMHhDRjg6CiAqCi0qICAgICAgIDMxIDMwICAgIDI0IDIzICAxNiAxNSAgMTEgMTAgICAgIDggNyAgICAgIDIgIDAgICAgIDw9Yml0IE51bWJlcgorKgkzMSAzMAkgMjQgMjMJMTYgMTUgIDExIDEwCSA4IDcJICAyICAwCSAgIDw9Yml0IE51bWJlcgogKiAgfGNvbmdpZnxSZXNlcnZlZHwgIEJ1cyB8RGV2aWNlfEZ1bmN0aW9ufFJlZ2lzdGVyfDAxfAotKiAgfEVuYWJsZXwgICAgICAgIHxOdW1iZXJ8TnVtYmVyfCBOdW1iZXIgfCBOdW1iZXIgfCAgfCAgICA8PWZpZWxkIE5hbWUKKyogIHxFbmFibGV8CSAgIHxOdW1iZXJ8TnVtYmVyfCBOdW1iZXIgfCBOdW1iZXIgfCAgfAkgICA8PWZpZWxkIE5hbWUKICoKICogIFRoZSBjb25maWd1cmF0aW9uIEFkZHJlc3MgaXMgY29uZmlndXJlIGFzIHR5cGUtSSAoYml0c1sxOjBdID0gJzAxJykgZHVlIHRvCiAqICAgUENJIHNwZWMgcmVmZXJyaW5nIHRvIFAyUC4KQEAgLTI3MywyMyArMjczLDIzIEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBwY2lPdmVyQnJpZGdlUmVhZENvbmZpZ1JlZyAgLSBSZWFkIGZyb20gYSBQQ0luIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgd2hlcmUKLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGFnZW50IHRhcmdldCBsb2NhdGUgb24gYW5vdGhlciBQQ0kgYnVzLgotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBNYWtlIHN1cmUgdGhlIEdUIGlzIGNvbmZpZ3VyZWQgYXMgYSBtYXN0ZXIKLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlIHJlYWRpbmcgZnJvbSBhbm90aGVyIGRldmljZSBvbiB0aGUgUENJLgotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGUgZnVuY3Rpb24gdGFrZXMgY2FyZSBvZiBCaWcvTGl0dGxlIGVuZGlhbgotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJzaW9uLgorKgkJCQl0aGUgYWdlbnQgdGFyZ2V0IGxvY2F0ZSBvbiBhbm90aGVyIFBDSSBidXMuCisqCQkJICAgICAgLSBNYWtlIHN1cmUgdGhlIEdUIGlzIGNvbmZpZ3VyZWQgYXMgYSBtYXN0ZXIKKyoJCQkJYmVmb3JlIHJlYWRpbmcgZnJvbSBhbm90aGVyIGRldmljZSBvbiB0aGUgUENJLgorKgkJCSAgICAgIC0gVGhlIGZ1bmN0aW9uIHRha2VzIGNhcmUgb2YgQmlnL0xpdHRsZSBlbmRpYW4KKyoJCQkJY29udmVyc2lvbi4KICogSU5QVVRTOiAgIHJlZ09mZnNldDogVGhlIHJlZ2lzdGVyIG9mZnNldCBhcyBpdCBhcGVhcnMgaW4gdGhlIEdUIHNwZWMgKG9yIFBDSQotKiAgICAgICAgICAgICAgICAgICAgICAgIHNwZWMpLiAoY29uZmlndXJhdGlvbiByZWdpc3RlciBvZmZzZXQuKQotKiAgICAgICAgICAgcGNpRGV2TnVtOiBUaGUgZGV2aWNlIG51bWJlciBuZWVkcyB0byBiZSBhZGRyZXNzZWQuCi0qICAgICAgICAgICBidXNOdW06IHRoZSBCdXMgbnVtYmVyIHdoZXJlIHRoZSBhZ2VudCBpcyBwbGFjZS4KKyoJCQkgc3BlYykuIChjb25maWd1cmF0aW9uIHJlZ2lzdGVyIG9mZnNldC4pCisqCSAgICBwY2lEZXZOdW06IFRoZSBkZXZpY2UgbnVtYmVyIG5lZWRzIHRvIGJlIGFkZHJlc3NlZC4KKyoJICAgIGJ1c051bTogdGhlIEJ1cyBudW1iZXIgd2hlcmUgdGhlIGFnZW50IGlzIHBsYWNlLgogKiBSRVRVUk5TOiBkYXRhICwgaWYgdGhlIGRhdGEgPT0gMHhmZmZmZmZmZiBjaGVjayB0aGUgbWFzdGVyIGFib3J0IGJpdCBpbiB0aGUKLSogICAgICAgICAgICAgICAgIGNhdXNlIHJlZ2lzdGVyIHRvIG1ha2Ugc3VyZSB0aGUgZGF0YSBpcyB2YWxpZAorKgkJICBjYXVzZSByZWdpc3RlciB0byBtYWtlIHN1cmUgdGhlIGRhdGEgaXMgdmFsaWQKICoKICogIENvbmZpZ3VyYXRpb24gQWRkcmVzcyAweENGODoKICoKLSogICAgICAgMzEgMzAgICAgMjQgMjMgIDE2IDE1ICAxMSAxMCAgICAgOCA3ICAgICAgMiAgMCAgICAgPD1iaXQgTnVtYmVyCisqCTMxIDMwCSAyNCAyMwkxNiAxNSAgMTEgMTAJIDggNwkgIDIgIDAJICAgPD1iaXQgTnVtYmVyCiAqICB8Y29uZ2lmfFJlc2VydmVkfCAgQnVzIHxEZXZpY2V8RnVuY3Rpb258UmVnaXN0ZXJ8MDF8Ci0qICB8RW5hYmxlfCAgICAgICAgfE51bWJlcnxOdW1iZXJ8IE51bWJlciB8IE51bWJlciB8ICB8ICAgIDw9ZmllbGQgTmFtZQorKiAgfEVuYWJsZXwJICAgfE51bWJlcnxOdW1iZXJ8IE51bWJlciB8IE51bWJlciB8ICB8CSAgIDw9ZmllbGQgTmFtZQogKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogdW5zaWduZWQgaW50IHBjaU92ZXJCcmlkZ2VSZWFkQ29uZmlnUmVnIChQQ0lfSE9TVCBob3N0LApAQCAtMzkzLDcgKzM5Myw3IEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBwY2lHZXRCYXNlQWRkcmVzcyAtIEdldHMgdGhlIGJhc2UgYWRkcmVzcyBvZiBhIFBDSS4KLSogICAgICAgICAgIC0gSWYgdGhlIFBDSSBzaXplIGlzIDAgdGhlbiB0aGlzIGJhc2UgYWRkcmVzcyBoYXMgbm8gbWVhbmluZyEhIQorKgkgICAgLSBJZiB0aGUgUENJIHNpemUgaXMgMCB0aGVuIHRoaXMgYmFzZSBhZGRyZXNzIGhhcyBubyBtZWFuaW5nISEhCiAqCiAqCiAqIElOUFVUOiAgIEJ1cywgUmVnaW9uIC0gVGhlIGJ1cyBhbmQgcmVnaW9uIHdlIGFzayBmb3IgaXRzIGJhc2UgYWRkcmVzcy4KQEAgLTUwMSwxMyArNTAxLDEzIEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBwY2lTZXRSZWdpb25GZWF0dXJlcyAtIFRoaXMgZnVuY3Rpb24gbW9kaWZ5cyBvbmUgb2YgdGhlIDggcmVnaW9ucyB3aXRoCi0qICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmUgYml0cyBnaXZlbiBhcyBhbiBpbnB1dC4KLSogICAgICAgICAgICAgICAgICAgICAgIC0gQmUgYWR2aXNlZCB0byBjaGVjayB0aGUgc3BlYyBiZWZvcmUgbW9kaWZ5aW5nIHRoZW0uCisqCQkJICBmZWF0dXJlIGJpdHMgZ2l2ZW4gYXMgYW4gaW5wdXQuCisqCQkJLSBCZSBhZHZpc2VkIHRvIGNoZWNrIHRoZSBzcGVjIGJlZm9yZSBtb2RpZnlpbmcgdGhlbS4KICogSW5wdXRzOiBQQ0lfUFJPVEVDVF9SRUdJT04gcmVnaW9uIC0gb25lIG9mIHRoZSBlaWdodCByZWdpb25zLgotKiAgICAgICAgIHVuc2lnbmVkIGludCBmZWF0dXJlcyAtIFNlZSBmaWxlOiBwY2kuaCB0aGVyZSBhcmUgZGVmaW50aW9uIGZvciB0aG9zZQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbiBmZWF0dXJlcy4KLSogICAgICAgICB1bnNpZ25lZCBpbnQgYmFzZUFkZHJlc3MgLSBUaGUgcmVnaW9uIGJhc2UgQWRkcmVzcy4KLSogICAgICAgICB1bnNpZ25lZCBpbnQgdG9wQWRkcmVzcyAtIFRoZSByZWdpb24gdG9wIEFkZHJlc3MuCisqCSAgdW5zaWduZWQgaW50IGZlYXR1cmVzIC0gU2VlIGZpbGU6IHBjaS5oIHRoZXJlIGFyZSBkZWZpbnRpb24gZm9yIHRob3NlCisqCQkJCSAgcmVnaW9uIGZlYXR1cmVzLgorKgkgIHVuc2lnbmVkIGludCBiYXNlQWRkcmVzcyAtIFRoZSByZWdpb24gYmFzZSBBZGRyZXNzLgorKgkgIHVuc2lnbmVkIGludCB0b3BBZGRyZXNzIC0gVGhlIHJlZ2lvbiB0b3AgQWRkcmVzcy4KICogUmV0dXJuczogZmFsc2UgaWYgb25lIG9mIHRoZSBwYXJhbWV0ZXJzIGlzIGVycm9uZW91cyB0cnVlIG90aGVyd2lzZS4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIGJvb2wgcGNpU2V0UmVnaW9uRmVhdHVyZXMgKFBDSV9IT1NUIGhvc3QsIFBDSV9BQ0NFU1NfUkVHSU9OUyByZWdpb24sCkBAIC01NDEsNyArNTQxLDcgQEAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIHBjaURpc2FibGVBY2Nlc3NSZWdpb24gLSBEaXNhYmxlIFRoZSBnaXZlbiBSZWdpb24gYnkgd3JpdGluZyBNQVggc2l6ZQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGl0cyBsb3cgQWRkcmVzcyBhbmQgTUlOIHNpemUgdG8gaXRzIGhpZ2ggQWRkcmVzcy4KKyoJCQkgICAgdG8gaXRzIGxvdyBBZGRyZXNzIGFuZCBNSU4gc2l6ZSB0byBpdHMgaGlnaCBBZGRyZXNzLgogKgogKiBJbnB1dHM6ICAgUENJX0FDQ0VTU19SRUdJT05TIHJlZ2lvbiAtIFRoZSByZWdpb24gd2UgdG8gYmUgRGlzYWJsZWQuCiAqIFJldHVybnM6ICBOL0EuCkBAIC01ODgsMTIgKzU4OCwxMiBAQAogKiBwY2lTZXRBcmJpdGVyQWdlbnRzUHJpb3JpdHkgLSBQcmlvcml0eSBzZXR1cCBmb3IgdGhlIFBDSSBhZ2VudHMgKEhpIG9yIExvdykKICoKICogSW5wdXRzOiAgIFBDSV9BR0VOVF9QUklPIGludGVybmFsQWdlbnQgLSBwcmlvdGl0eSBmb3IgaW50ZXJuYWwgYWdlbnQuCi0qICAgICAgICAgICBQQ0lfQUdFTlRfUFJJTyBleHRlcm5hbEFnZW50MCAtIHByaW90aXR5IGZvciBleHRlcm5hbCMwIGFnZW50LgotKiAgICAgICAgICAgUENJX0FHRU5UX1BSSU8gZXh0ZXJuYWxBZ2VudDEgLSBwcmlvdGl0eSBmb3IgZXh0ZXJuYWwjMSBhZ2VudC4KLSogICAgICAgICAgIFBDSV9BR0VOVF9QUklPIGV4dGVybmFsQWdlbnQyIC0gcHJpb3RpdHkgZm9yIGV4dGVybmFsIzIgYWdlbnQuCi0qICAgICAgICAgICBQQ0lfQUdFTlRfUFJJTyBleHRlcm5hbEFnZW50MyAtIHByaW90aXR5IGZvciBleHRlcm5hbCMzIGFnZW50LgotKiAgICAgICAgICAgUENJX0FHRU5UX1BSSU8gZXh0ZXJuYWxBZ2VudDQgLSBwcmlvdGl0eSBmb3IgZXh0ZXJuYWwjNCBhZ2VudC4KLSogICAgICAgICAgIFBDSV9BR0VOVF9QUklPIGV4dGVybmFsQWdlbnQ1IC0gcHJpb3RpdHkgZm9yIGV4dGVybmFsIzUgYWdlbnQuCisqCSAgICBQQ0lfQUdFTlRfUFJJTyBleHRlcm5hbEFnZW50MCAtIHByaW90aXR5IGZvciBleHRlcm5hbCMwIGFnZW50LgorKgkgICAgUENJX0FHRU5UX1BSSU8gZXh0ZXJuYWxBZ2VudDEgLSBwcmlvdGl0eSBmb3IgZXh0ZXJuYWwjMSBhZ2VudC4KKyoJICAgIFBDSV9BR0VOVF9QUklPIGV4dGVybmFsQWdlbnQyIC0gcHJpb3RpdHkgZm9yIGV4dGVybmFsIzIgYWdlbnQuCisqCSAgICBQQ0lfQUdFTlRfUFJJTyBleHRlcm5hbEFnZW50MyAtIHByaW90aXR5IGZvciBleHRlcm5hbCMzIGFnZW50LgorKgkgICAgUENJX0FHRU5UX1BSSU8gZXh0ZXJuYWxBZ2VudDQgLSBwcmlvdGl0eSBmb3IgZXh0ZXJuYWwjNCBhZ2VudC4KKyoJICAgIFBDSV9BR0VOVF9QUklPIGV4dGVybmFsQWdlbnQ1IC0gcHJpb3RpdHkgZm9yIGV4dGVybmFsIzUgYWdlbnQuCiAqIFJldHVybnM6ICB0cnVlCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiBib29sIHBjaVNldEFyYml0ZXJBZ2VudHNQcmlvcml0eSAoUENJX0hPU1QgaG9zdCwgUENJX0FHRU5UX1BSSU8gaW50ZXJuYWxBZ2VudCwKQEAgLTYxOSwxNyArNjE5LDE3IEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBwY2lQYXJraW5nRGlzYWJsZSAtIFBhcmsgb24gbGFzdCBvcHRpb24gZGlzYWJsZSwgd2l0aCB0aGlzIGZ1bmN0aW9uIHlvdSBjYW4KLSogICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZSB0aGUgcGFyayBvbiBsYXN0IG1lY2hhbmlzbSBmb3IgZWFjaCBhZ2VudC4KLSogICAgICAgICAgICAgICAgICAgICAgZGlzYWJsaW5nIHRoaXMgb3B0aW9uIGZvciBhbGwgYWdlbnRzIHJlc3VsdHMgcGFya2luZwotKiAgICAgICAgICAgICAgICAgICAgICBvbiB0aGUgaW50ZXJuYWwgbWFzdGVyLgorKgkJICAgICAgIGRpc2FibGUgdGhlIHBhcmsgb24gbGFzdCBtZWNoYW5pc20gZm9yIGVhY2ggYWdlbnQuCisqCQkgICAgICAgZGlzYWJsaW5nIHRoaXMgb3B0aW9uIGZvciBhbGwgYWdlbnRzIHJlc3VsdHMgcGFya2luZworKgkJICAgICAgIG9uIHRoZSBpbnRlcm5hbCBtYXN0ZXIuCiAqCiAqIElucHV0czogUENJX0FHRU5UX1BBUksgaW50ZXJuYWxBZ2VudCAtICBwYXJraW5nIERpc2FibGUgZm9yIGludGVybmFsIGFnZW50LgotKiAgICAgICAgIFBDSV9BR0VOVF9QQVJLIGV4dGVybmFsQWdlbnQwIC0gcGFya2luZyBEaXNhYmxlIGZvciBleHRlcm5hbCMwIGFnZW50LgotKiAgICAgICAgIFBDSV9BR0VOVF9QQVJLIGV4dGVybmFsQWdlbnQxIC0gcGFya2luZyBEaXNhYmxlIGZvciBleHRlcm5hbCMxIGFnZW50LgotKiAgICAgICAgIFBDSV9BR0VOVF9QQVJLIGV4dGVybmFsQWdlbnQyIC0gcGFya2luZyBEaXNhYmxlIGZvciBleHRlcm5hbCMyIGFnZW50LgotKiAgICAgICAgIFBDSV9BR0VOVF9QQVJLIGV4dGVybmFsQWdlbnQzIC0gcGFya2luZyBEaXNhYmxlIGZvciBleHRlcm5hbCMzIGFnZW50LgotKiAgICAgICAgIFBDSV9BR0VOVF9QQVJLIGV4dGVybmFsQWdlbnQ0IC0gcGFya2luZyBEaXNhYmxlIGZvciBleHRlcm5hbCM0IGFnZW50LgotKiAgICAgICAgIFBDSV9BR0VOVF9QQVJLIGV4dGVybmFsQWdlbnQ1IC0gcGFya2luZyBEaXNhYmxlIGZvciBleHRlcm5hbCM1IGFnZW50LgorKgkgIFBDSV9BR0VOVF9QQVJLIGV4dGVybmFsQWdlbnQwIC0gcGFya2luZyBEaXNhYmxlIGZvciBleHRlcm5hbCMwIGFnZW50LgorKgkgIFBDSV9BR0VOVF9QQVJLIGV4dGVybmFsQWdlbnQxIC0gcGFya2luZyBEaXNhYmxlIGZvciBleHRlcm5hbCMxIGFnZW50LgorKgkgIFBDSV9BR0VOVF9QQVJLIGV4dGVybmFsQWdlbnQyIC0gcGFya2luZyBEaXNhYmxlIGZvciBleHRlcm5hbCMyIGFnZW50LgorKgkgIFBDSV9BR0VOVF9QQVJLIGV4dGVybmFsQWdlbnQzIC0gcGFya2luZyBEaXNhYmxlIGZvciBleHRlcm5hbCMzIGFnZW50LgorKgkgIFBDSV9BR0VOVF9QQVJLIGV4dGVybmFsQWdlbnQ0IC0gcGFya2luZyBEaXNhYmxlIGZvciBleHRlcm5hbCM0IGFnZW50LgorKgkgIFBDSV9BR0VOVF9QQVJLIGV4dGVybmFsQWdlbnQ1IC0gcGFya2luZyBEaXNhYmxlIGZvciBleHRlcm5hbCM1IGFnZW50LgogKiBSZXR1cm5zOiAgdHJ1ZQogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogYm9vbCBwY2lQYXJraW5nRGlzYWJsZSAoUENJX0hPU1QgaG9zdCwgUENJX0FHRU5UX1BBUksgaW50ZXJuYWxBZ2VudCwKQEAgLTY1NSwxMSArNjU1LDExIEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBwY2lFbmFibGVCcm9rZW5BZ2VudERldGVjdGlvbiAtIEEgbWFzdGVyIGlzIHNhaWQgdG8gYmUgYnJva2VuIGlmIGl0IGZhaWxzIHRvCi0qICAgICAgICAgICAgICAgICAgICAgICByZXNwb25kIHRvIGdyYW50IGFzc2VydGlvbiB3aXRoaW4gYSB3aW5kb3cgc3BlY2lmaWVkIGluCi0qICAgICAgICAgICAgICAgICAgICAgICB0aGUgaW5wdXQgdmFsdWU6ICdicm9rZW5WYWx1ZScuCisqCQkJcmVzcG9uZCB0byBncmFudCBhc3NlcnRpb24gd2l0aGluIGEgd2luZG93IHNwZWNpZmllZCBpbgorKgkJCXRoZSBpbnB1dCB2YWx1ZTogJ2Jyb2tlblZhbHVlJy4KICoKICogSW5wdXRzOiB1bnNpZ25lZCBjaGFyIGJyb2tlblZhbHVlIC0gIEEgdmFsdWUgd2hpY2ggbGltaXRzIHRoZSBNYXN0ZXIgdG8gaG9sZCB0aGUKLSogICAgICAgICAgICAgICAgICAgICAgIGdyYW50IHdpdGhvdXQgYXNzZXJ0aW5nIGZyYW1lLgorKgkJCWdyYW50IHdpdGhvdXQgYXNzZXJ0aW5nIGZyYW1lLgogKiBSZXR1cm5zOiAgRXJyb3IgZm9yIGlsbGVnYWwgYnJva2VuIHZhbHVlIG90aGVyd2lzZSB0cnVlLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogYm9vbCBwY2lFbmFibGVCcm9rZW5BZ2VudERldGVjdGlvbiAoUENJX0hPU1QgaG9zdCwgdW5zaWduZWQgY2hhciBicm9rZW5WYWx1ZSkKQEAgLTY3OCw5ICs2NzgsOSBAQAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogcGNpRGlzYWJsZUJyb2tlbkFnZW50RGV0ZWN0aW9uIC0gVGhpcyBmdW5jdGlvbiBkaXNhYmxlIHRoZSBCcm9rZW4gYWdlbnQKLSogICAgICAgICAgICAgICAgICAgICAgICAgICBEZXRlY3Rpb24gbWVjaGFuaXNtLgotKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE5PVEU6IFRoaXMgb3BlcmF0aW9uIG1heSBjYXVzZSBhIGRlYWQgbG9jayBvbiB0aGUKLSogICAgICAgICAgICAgICAgICAgICAgICAgICBwY2kwIGFyYml0cmF0aW9uLgorKgkJCSAgICBEZXRlY3Rpb24gbWVjaGFuaXNtLgorKgkJCSAgICBOT1RFOiBUaGlzIG9wZXJhdGlvbiBtYXkgY2F1c2UgYSBkZWFkIGxvY2sgb24gdGhlCisqCQkJICAgIHBjaTAgYXJiaXRyYXRpb24uCiAqCiAqIElucHV0czogICBOL0EKICogUmV0dXJuczogIHRydWUuCkBAIC02OTcsMTUgKzY5NywxNSBAQAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogcGNpUDJQQ29uZmlnIC0gVGhpcyBmdW5jdGlvbiBzZXQgdGhlIFBDSV9uIFAyUCBjb25maWd1cmF0ZS4KLSogICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBQMlAgcmVhZCBQQ0kgc3BlYy4KKyoJCSAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIFAyUCByZWFkIFBDSSBzcGVjLgogKgogKiBJbnB1dHM6ICB1bnNpZ25lZCBpbnQgU2Vjb25kQnVzTG93IC0gU2Vjb25kZXJ5IFBDSSBpbnRlcmZhY2UgQnVzIFJhbmdlIExvd2VyCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb3VuZHJ5LgotKiAgICAgICAgICB1bnNpZ25lZCBpbnQgU2Vjb25kQnVzSGlnaCAtIFNlY29uZHJ5IFBDSSBpbnRlcmZhY2UgQnVzIFJhbmdlIHVwcGVyCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb3VuZHJ5LgotKiAgICAgICAgICB1bnNpZ25lZCBpbnQgYnVzTnVtIC0gVGhlIENQSSBidXMgbnVtYmVyIHRvIHdoaWNoIHRoZSBQQ0kgaW50ZXJmYWNlCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBjb25uZWN0ZWQuCi0qICAgICAgICAgIHVuc2lnbmVkIGludCBkZXZOdW0gLSBUaGUgUENJIGludGVyZmFjZSdzIGRldmljZSBudW1iZXIuCisqCQkJCSAgICAgICBCb3VuZHJ5LgorKgkgICB1bnNpZ25lZCBpbnQgU2Vjb25kQnVzSGlnaCAtIFNlY29uZHJ5IFBDSSBpbnRlcmZhY2UgQnVzIFJhbmdlIHVwcGVyCisqCQkJCSAgICAgICBCb3VuZHJ5LgorKgkgICB1bnNpZ25lZCBpbnQgYnVzTnVtIC0gVGhlIENQSSBidXMgbnVtYmVyIHRvIHdoaWNoIHRoZSBQQ0kgaW50ZXJmYWNlCisqCQkJCSAgICAgICBpcyBjb25uZWN0ZWQuCisqCSAgIHVuc2lnbmVkIGludCBkZXZOdW0gLSBUaGUgUENJIGludGVyZmFjZSdzIGRldmljZSBudW1iZXIuCiAqCiAqIFJldHVybnM6ICB0cnVlLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtNzIzLDE1ICs3MjMsMTUgQEAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIHBjaVNldFJlZ2lvblNub29wTW9kZSAtIFRoaXMgZnVuY3Rpb24gbW9kaWZ5cyBvbmUgb2YgdGhlIDQgcmVnaW9ucyB3aGljaAotKiAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHMgQ2FjaGUgQ29oZXJlbmN5IGluIHRoZSBQQ0lfbiBpbnRlcmZhY2UuCisqCQkJICAgc3VwcG9ydHMgQ2FjaGUgQ29oZXJlbmN5IGluIHRoZSBQQ0lfbiBpbnRlcmZhY2UuCiAqIElucHV0czogcmVnaW9uIC0gT25lIG9mIHRoZSBmb3VyIHJlZ2lvbnMuCi0qICAgICAgICAgc25vb3BUeXBlIC0gVGhlcmUgaXMgZm91ciBvcHRpb25hbCBUeXBlczoKLSogICAgICAgICAgICAgICAgICAgICAgICAxLiBObyBTbm9vcC4KLSogICAgICAgICAgICAgICAgICAgICAgICAyLiBTbm9vcCB0byBXVCByZWdpb24uCi0qICAgICAgICAgICAgICAgICAgICAgICAgMy4gU25vb3AgdG8gV0IgcmVnaW9uLgotKiAgICAgICAgICAgICAgICAgICAgICAgIDQuIFNub29wICYgSW52YWxpZGF0ZSB0byBXQiByZWdpb24uCi0qICAgICAgICAgYmFzZUFkZHJlc3MgLSBCYXNlIEFkZHJlc3Mgb2YgdGhpcyByZWdpb24uCi0qICAgICAgICAgcmVnaW9uTGVuZ3RoIC0gUmVnaW9uIGxlbmd0aC4KKyoJICBzbm9vcFR5cGUgLSBUaGVyZSBpcyBmb3VyIG9wdGlvbmFsIFR5cGVzOgorKgkJCSAxLiBObyBTbm9vcC4KKyoJCQkgMi4gU25vb3AgdG8gV1QgcmVnaW9uLgorKgkJCSAzLiBTbm9vcCB0byBXQiByZWdpb24uCisqCQkJIDQuIFNub29wICYgSW52YWxpZGF0ZSB0byBXQiByZWdpb24uCisqCSAgYmFzZUFkZHJlc3MgLSBCYXNlIEFkZHJlc3Mgb2YgdGhpcyByZWdpb24uCisqCSAgcmVnaW9uTGVuZ3RoIC0gUmVnaW9uIGxlbmd0aC4KICogUmV0dXJuczogZmFsc2UgaWYgb25lIG9mIHRoZSBwYXJhbWV0ZXJzIGlzIHdyb25nIG90aGVyd2lzZSByZXR1cm4gdHJ1ZS4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIGJvb2wgcGNpU2V0UmVnaW9uU25vb3BNb2RlIChQQ0lfSE9TVCBob3N0LCBQQ0lfU05PT1BfUkVHSU9OIHJlZ2lvbiwKQEAgLTc1NCw3ICs3NTQsNyBAQAogCQlHVF9SRUdfV1JJVEUgKHNub29wWHRvcEFkZHJlc3MsIDApOwogCQlyZXR1cm4gdHJ1ZTsKIAl9Ci0JYmFzZUFkZHJlc3MgPSBiYXNlQWRkcmVzcyAmIDB4ZmZmMDAwMDA7CS8qIEdyYW51bGFyaXR5IG9mIDFNQnl0ZSAqLworCWJhc2VBZGRyZXNzID0gYmFzZUFkZHJlc3MgJiAweGZmZjAwMDAwOyAvKiBHcmFudWxhcml0eSBvZiAxTUJ5dGUgKi8KIAlkYXRhID0gKGJhc2VBZGRyZXNzID4+IDIwKSB8IHNub29wVHlwZSA8PCAxMjsKIAlHVF9SRUdfV1JJVEUgKHNub29wWGJhc2VBZGRyZXNzLCBkYXRhKTsKIAlzbm9vcEhpZ2ggPSAoc25vb3BIaWdoICYgMHhmZmYwMDAwMCkgPj4gMjA7CkBAIC04MjcsNyArODI3LDcgQEAKIHN0YXRpYyB2b2lkIGd0X3NldHVwX2NwY2lkdmkgKHN0cnVjdCBwY2lfY29udHJvbGxlciAqaG9zZSwKIAkJCSAgICAgIHBjaV9kZXZfdCBkZXYsIHN0cnVjdCBwY2lfY29uZmlnX3RhYmxlICplbnRyeSkKIHsKLQl1MzIgICAgICAgICAgICAgICBiYXJfdmFsdWUsIHBjaV9yZXNwb25zZTsKKwl1MzIJCSAgYmFyX3ZhbHVlLCBwY2lfcmVzcG9uc2U7CiAKIAlwY2lfaG9zZV9yZWFkX2NvbmZpZ19kd29yZCAoaG9zZSwgZGV2LCBQQ0lfQ09NTUFORCwgJnBjaV9yZXNwb25zZSk7CiAJcGNpX2hvc2Vfd3JpdGVfY29uZmlnX2R3b3JkIChob3NlLCBkZXYsIFBDSV9CQVNFX0FERFJFU1NfMCwgMHhmZmZmZmZmZik7CkBAIC04NDMsMzAgKzg0MywzMCBAQAogCiB1bnNpZ25lZCBjaGFyIGd0X2NwY2lkdmlfaW44KHVuc2lnbmVkIGludCBvZmZzZXQpCiB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgICAgIGRhdGE7CisJdW5zaWduZWQgY2hhcgkgIGRhdGE7CiAKIAlpZiAoZ3RfY3BjaWR2aV9yb20uaW5pdCA9PSAwKSB7Ci0JICAgICAgICByZXR1cm4oMCk7Ci0JICAgICAgICB9Ci0gICAgICAgIGRhdGEgPSBpbjgoKG9mZnNldCAmIDB4MDQpICsgMHgzZjAwMCArIGd0X2NwY2lkdmlfcm9tLmJhc2UpOwotICAgICAgICByZXR1cm4oZGF0YSk7CisJCXJldHVybigwKTsKKwkJfQorCWRhdGEgPSBpbjgoKG9mZnNldCAmIDB4MDQpICsgMHgzZjAwMCArIGd0X2NwY2lkdmlfcm9tLmJhc2UpOworCXJldHVybihkYXRhKTsKIH0KIAogdm9pZCBndF9jcGNpZHZpX291dDgodW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgY2hhciBkYXRhKQogewotICAgICAgICB1bnNpZ25lZCBpbnQgICAgICBvZmY7Ci0JCQorCXVuc2lnbmVkIGludAkgIG9mZjsKKwogCWlmIChndF9jcGNpZHZpX3JvbS5pbml0ID09IDApIHsKLQkgICAgICAgIHJldHVybjsKLQkgICAgICAgIH0KKwkJcmV0dXJuOworCX0KIAlvZmYgPSBkYXRhOwogCW9mZiA9ICgob2ZmIDw8IDMpICYgMHg3ZjgpICsgKG9mZnNldCAmIDB4NCkgKyAweDNlMDAwICsgZ3RfY3BjaWR2aV9yb20uYmFzZTsKLSAgICAgICAgaW44KG9mZik7Ci0gICAgICAgIHJldHVybjsKKwlpbjgob2ZmKTsKKwlyZXR1cm47CiB9CiAjZW5kaWYKIAotLyogVE9ETyBCSlc6IENoYW5nZSB0aGlzIGZvciBEQjY0MzYwLiBUaGlzIHdhcyBwdWxsZWQgZnJvbSB0aGUgRVY2NDI2MCAgKi8KKy8qIFRPRE8gQkpXOiBDaGFuZ2UgdGhpcyBmb3IgREI2NDM2MC4gVGhpcyB3YXMgcHVsbGVkIGZyb20gdGhlIEVWNjQyNjAJKi8KIC8qIGFuZCBpcyBjdXJlbnRseSBub3QgY2FsbGVkICouICovCiAjaWYgMAogc3RhdGljIHZvaWQgZ3RfZml4dXBfaXJxIChzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgKmhvc2UsIHBjaV9kZXZfdCBkZXYpCmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvaGg0MDUvY29uZmlnLm1rIGIvYm9hcmQvZXNkL2hoNDA1L2NvbmZpZy5tawppbmRleCBjYTFmNTc1Li43OThhM2ZhIDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvaGg0MDUvY29uZmlnLm1rCisrKyBiL2JvYXJkL2VzZC9oaDQwNS9jb25maWcubWsKQEAgLTMyLDQgKzMyLDMgQEAKIAogIyBDb21waWxlIHRoZSBsZWdhY3kgTkFORCBjb2RlIChDRkdfTkFORF9MRUdBQ1kgbXVzdCBiZSBkZWZpbmVkKQogQk9BUkRMSUJTID0gZHJpdmVycy9uYW5kX2xlZ2FjeS9saWJuYW5kX2xlZ2FjeS5hCi0KZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9odWI0MDUvY29uZmlnLm1rIGIvYm9hcmQvZXNkL2h1YjQwNS9jb25maWcubWsKaW5kZXggMjJmZjEyMi4uNGM2MGMzNSAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL2h1YjQwNS9jb25maWcubWsKKysrIGIvYm9hcmQvZXNkL2h1YjQwNS9jb25maWcubWsKQEAgLTI5LDQgKzI5LDMgQEAKIAogIyBDb21waWxlIHRoZSBsZWdhY3kgTkFORCBjb2RlIChDRkdfTkFORF9MRUdBQ1kgbXVzdCBiZSBkZWZpbmVkKQogQk9BUkRMSUJTID0gZHJpdmVycy9uYW5kX2xlZ2FjeS9saWJuYW5kX2xlZ2FjeS5hCi0KZGlmZiAtLWdpdCBhL2JvYXJkL21jYzIwMC9tY2MyMDAuYyBiL2JvYXJkL21jYzIwMC9tY2MyMDAuYwppbmRleCBhY2MwZTA2Li5kMWM5OWZkIDEwMDY0NAotLS0gYS9ib2FyZC9tY2MyMDAvbWNjMjAwLmMKKysrIGIvYm9hcmQvbWNjMjAwL21jYzIwMC5jCkBAIC0yOCwxOSArMjgsMTIgQEAKICNpbmNsdWRlIDxtcGM1eHh4Lmg+CiAjaW5jbHVkZSA8cGNpLmg+CiAKLS8vIyMjQ0hEOiBlcyBnaWJ0IGVpZ2VudGxpY2gga2VpbiBERFIgYmVpIHVucyAtPiB3ZWcgZGFtaXQhOyBkdG8uIFBDSSEKLSNpZiBkZWZpbmVkKENPTkZJR19NUEM1MjAwX0REUikKLSNpbmNsdWRlICJtdDQ2djE2bTE2LTc1LmgiCi0jZWxzZQotLy8jaW5jbHVkZSAibXQ0OGxjMTZtMTZhMi03NS5oIgogI2luY2x1ZGUgIm10NDhsYzhtMzJiMi02LTcuaCIKLSNlbmRpZgogCiBleHRlcm4gZmxhc2hfaW5mb190IGZsYXNoX2luZm9bXTsJLyogRkxBU0ggY2hpcHMgaW5mbyAqLwogCiB1bG9uZyBmbGFzaF9nZXRfc2l6ZSAodWxvbmcgYmFzZSwgaW50IGJhbmtudW0pOwogCi0vLyMjI0NIRDogd2VubiBSQU1CT09UIGdlaGVuIHd1ZXJkZSwgLi4uLgogI2lmbmRlZiBDRkdfUkFNQk9PVAogc3RhdGljIHZvaWQgc2RyYW1fc3RhcnQgKGludCBoaV9hZGRyKQogewpAQCAtODgsNyArODEsNiBAQAogICogICAgICAgICAgICBpcyBzb21ldGhpbmcgZWxzZSB0aGFuIDB4MDAwMDAwMDAuCiAgKi8KIAotI2lmIGRlZmluZWQoQ09ORklHX01QQzUyMDApCiBsb25nIGludCBpbml0ZHJhbSAoaW50IGJvYXJkX3R5cGUpCiB7CiAJdWxvbmcgZHJhbXNpemUgPSAwOwpAQCAtMTkwLDU4ICsxODIsNiBAQAogCXJldHVybiBkcmFtc2l6ZSArIGRyYW1zaXplMjsKIH0KIAotLy8jIyNDSEQ6IHNvd2FzIGdpYnQgZXMgYmVpIHVzbiBuaWNodCEKLSNlbGlmIGRlZmluZWQoQ09ORklHX01HVDUxMDApCi0KLWxvbmcgaW50IGluaXRkcmFtIChpbnQgYm9hcmRfdHlwZSkKLXsKLQl1bG9uZyBkcmFtc2l6ZSA9IDA7Ci0jaWZuZGVmIENGR19SQU1CT09UCi0JdWxvbmcgdGVzdDEsIHRlc3QyOwotCi0JLyogc2V0dXAgYW5kIGVuYWJsZSBTRFJBTSBjaGlwIHNlbGVjdHMgKi8KLQkqKHZ1X2xvbmcgKilNUEM1WFhYX1NEUkFNX1NUQVJUID0gMHgwMDAwMDAwMDsKLQkqKHZ1X2xvbmcgKilNUEM1WFhYX1NEUkFNX1NUT1AgPSAweDAwMDBmZmZmOy8qIDJHICovCi0JKih2dV9sb25nICopTVBDNVhYWF9BRERFQ1IgfD0gKDEgPDwgMjIpOyAvKiBFbmFibGUgU0RSQU0gKi8KLQlfX2FzbV9fIHZvbGF0aWxlICgic3luYyIpOwotCi0JLyogc2V0dXAgY29uZmlnIHJlZ2lzdGVycyAqLwotCSoodnVfbG9uZyAqKU1QQzVYWFhfU0RSQU1fQ09ORklHMSA9IFNEUkFNX0NPTkZJRzE7Ci0JKih2dV9sb25nICopTVBDNVhYWF9TRFJBTV9DT05GSUcyID0gU0RSQU1fQ09ORklHMjsKLQotCS8qIGFkZHJlc3Mgc2VsZWN0IHJlZ2lzdGVyICovCi0JKih2dV9sb25nICopTVBDNVhYWF9TRFJBTV9YTEJTRUwgPSBTRFJBTV9BRERSU0VMOwotCV9fYXNtX18gdm9sYXRpbGUgKCJzeW5jIik7Ci0KLQkvKiBmaW5kIFJBTSBzaXplICovCi0Jc2RyYW1fc3RhcnQoMCk7Ci0JdGVzdDEgPSBnZXRfcmFtX3NpemUoKHVsb25nICopQ0ZHX1NEUkFNX0JBU0UsIDB4ODAwMDAwMDApOwotCXNkcmFtX3N0YXJ0KDEpOwotCXRlc3QyID0gZ2V0X3JhbV9zaXplKCh1bG9uZyAqKUNGR19TRFJBTV9CQVNFLCAweDgwMDAwMDAwKTsKLQlpZiAodGVzdDEgPiB0ZXN0MikgewotCQlzZHJhbV9zdGFydCgwKTsKLQkJZHJhbXNpemUgPSB0ZXN0MTsKLQl9IGVsc2UgewotCQlkcmFtc2l6ZSA9IHRlc3QyOwotCX0KLQotCS8qIHNldCBTRFJBTSBlbmQgYWRkcmVzcyBhY2NvcmRpbmcgdG8gc2l6ZSAqLwotCSoodnVfbG9uZyAqKU1QQzVYWFhfU0RSQU1fU1RPUCA9ICgoZHJhbXNpemUgLSAxKSA+PiAxNSk7Ci0KLSNlbHNlIC8qIENGR19SQU1CT09UICovCi0KLQkvKiBSZXRyaWV2ZSBhbW91bnQgb2YgU0RSQU0gYXZhaWxhYmxlICovCi0JZHJhbXNpemUgPSAoKCoodnVfbG9uZyAqKU1QQzVYWFhfU0RSQU1fU1RPUCArIDEpIDw8IDE1KTsKLQotI2VuZGlmIC8qIENGR19SQU1CT09UICovCi0KLQlyZXR1cm4gZHJhbXNpemU7Ci19Ci0KLSNlbHNlCi0jZXJyb3IgTmVpdGhlciBDT05GSUdfTVBDNTIwMCBvciBDT05GSUdfTUdUNTEwMCBkZWZpbmVkCi0jZW5kaWYKLQogaW50IGNoZWNrYm9hcmQgKHZvaWQpCiB7CiAJcHV0cyAoIkJvYXJkOiBNQ0MyMDBcbiIpOwpkaWZmIC0tZ2l0IGEvYm9hcmQvbWNjMjAwL210NDhsYzhtMzJiMi02LTcuaCBiL2JvYXJkL21jYzIwMC9tdDQ4bGM4bTMyYjItNi03LmgKaW5kZXggNmMyYjJiMy4uNzNkY2Q1YyAxMDA2NDQKLS0tIGEvYm9hcmQvbWNjMjAwL210NDhsYzhtMzJiMi02LTcuaAorKysgYi9ib2FyZC9tY2MyMDAvbXQ0OGxjOG0zMmIyLTYtNy5oCkBAIC00LDI3ICs0LDkgQEAKIAogI2RlZmluZSBTRFJBTV9ERFIJMAkJLyogaXMgU0RSICovCiAKLSNpZiBkZWZpbmVkKENPTkZJR19NUEM1MjAwKQogLyogU2V0dGluZ3MgZm9yIFhMQiA9IDEzMiBNSHogKi8KLS8vI2RlZmluZSBTRFJBTV9NT0RFCTB4MDBjYzAwMDAgLy8gQ0wtMyBCVVJTVC04IC0+IE1vZGUgUmVnaXN0ZXKXTUJBUiArIDB4MDEwMAotLy8jZGVmaW5lIFNEUkFNX0NPTlRST0wJMHg1MDFmMDAwMCAvLyBDb250cm9sIFJlZ2lzdGVyl01CQVIgKyAweDAxMDQKLS8vI2RlZmluZSBTRFJBTV9DT05GSUcxCTB4ZTIzMjkwMDAgLy8gRGVsYXlzIGJldHdlZW4gY29tbWFuZHMgLT4gQ29uZmlndXJhdGlvbiBSZWdpc3RlciAxl01CQVIgKyAweDAxMDgKLS8vI2RlZmluZSBTRFJBTV9DT05GSUcyCTB4NDZlNzAwMDAgLy8gRGVsYXlzIGJldHdlZW4gY29tbWFuZHMgLT4gQ29uZmlndXJhdGlvbiBSZWdpc3RlciAyl01CQVIgKyAweDAxMEMKIAotLy9DaHJpc3RpYW4KLS8vI2RlZmluZSBTRFJBTV9NT0RFCTB4MDBjZDAwMDAgLy8gQ0wtMyBCVVJTVC04IC0+IE1vZGUgUmVnaXN0ZXKXTUJBUiArIDB4MDEwMAotLy8jZGVmaW5lIFNEUkFNX0NPTlRST0wJMHg1MDFmMDAwMCAvLyBDb250cm9sIFJlZ2lzdGVyl01CQVIgKyAweDAxMDQKLS8vI2RlZmluZSBTRFJBTV9DT05GSUcxCTB4ZDIzMjI5MDAgLy8gRGVsYXlzIGJldHdlZW4gY29tbWFuZHMgLT4gQ29uZmlndXJhdGlvbiBSZWdpc3RlciAxl01CQVIgKyAweDAxMDgKLS8vI2RlZmluZSBTRFJBTV9DT05GSUcyCTB4OGFkNzAwMDAgLy8gRGVsYXlzIGJldHdlZW4gY29tbWFuZHMgLT4gQ29uZmlndXJhdGlvbiBSZWdpc3RlciAyl01CQVIgKyAweDAxMEMKLQotLy8jIyNDSEQ6IG9yZGVudGxpY2hlIERva3UgZGF6dSEgQ0FTPTIsIGV0Yy4KLS8vU1RlZmFuCiAjZGVmaW5lIFNEUkFNX01PREUJMHgwMDhkMDAwMCAvLyBDTC0zIEJVUlNULTggLT4gTW9kZSBSZWdpc3RlcpdNQkFSICsgMHgwMTAwCiAjZGVmaW5lIFNEUkFNX0NPTlRST0wJMHg1MDRmMDAwMCAvLyBDb250cm9sIFJlZ2lzdGVyl01CQVIgKyAweDAxMDQKICNkZWZpbmUgU0RSQU1fQ09ORklHMQkweGMyMjIyOTAwIC8vIERlbGF5cyBiZXR3ZWVuIGNvbW1hbmRzIC0+IENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgMZdNQkFSICsgMHgwMTA4CiAjZGVmaW5lIFNEUkFNX0NPTkZJRzIJMHg4OGM3MDAwMCAvLyBEZWxheXMgYmV0d2VlbiBjb21tYW5kcyAtPiBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDKXTUJBUiArIDB4MDEwQwotCi0KLSNlbHNlCi0jZXJyb3IgQ09ORklHX01QQzUyMDAgbm90IGRlZmluZWQsIHBsZWFzZSBzZXQgcGFyYW1ldGVycyBmb3IgeW91ciBzZHJhbSBjb250cm9sbGVyIGluIG10NDhsYzhtMzJiMi5oCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2JvYXJkL25ldHN0YXIvY29uZmlnLm1rIGIvYm9hcmQvbmV0c3Rhci9jb25maWcubWsKaW5kZXggMmUzOTIxYi4uNTBkNjQ3YSAxMDA2NDQKLS0tIGEvYm9hcmQvbmV0c3Rhci9jb25maWcubWsKKysrIGIvYm9hcmQvbmV0c3Rhci9jb25maWcubWsKQEAgLTEyLDQgKzEyLDMgQEAKIAogIyBDb21waWxlIHRoZSBuZXcgTkFORCBjb2RlCiBCT0FSRExJQlMgPSBkcml2ZXJzL25hbmQvbGlibmFuZC5hCi0KZGlmZiAtLWdpdCBhL2JvYXJkL25ldHRhMi9jb25maWcubWsgYi9ib2FyZC9uZXR0YTIvY29uZmlnLm1rCmluZGV4IDRiNjM2ZWQuLmRlMTc5YzIgMTAwNjQ0Ci0tLSBhL2JvYXJkL25ldHRhMi9jb25maWcubWsKKysrIGIvYm9hcmQvbmV0dGEyL2NvbmZpZy5tawpAQCAtMjksNCArMjksMyBAQAogCiAjIENvbXBpbGUgdGhlIGxlZ2FjeSBOQU5EIGNvZGUgKENGR19OQU5EX0xFR0FDWSBtdXN0IGJlIGRlZmluZWQpCiBCT0FSRExJQlMgPSBkcml2ZXJzL25hbmRfbGVnYWN5L2xpYm5hbmRfbGVnYWN5LmEKLQpkaWZmIC0tZ2l0IGEvY29tbW9uL2NtZF9uYW5kLmMgYi9jb21tb24vY21kX25hbmQuYwppbmRleCBlNDZlZDFkLi5iYjUxZDkxIDEwMDY0NAotLS0gYS9jb21tb24vY21kX25hbmQuYworKysgYi9jb21tb24vY21kX25hbmQuYwpAQCAtNDQyLDggKzQ0Miw2IEBACiAjZGVmaW5lIE5BTkRSV19KRkZTMgkweDAyCiAjZGVmaW5lIE5BTkRSV19KRkZTMl9TS0lQCTB4MDQKIAotCi0KIC8qCiAgKiBJbXBvcnRzIGZyb20gbmFuZF9sZWdhY3kuYwogICovCmRpZmYgLS1naXQgYS9kb2MvUkVBRE1FLm5hbmQgYi9kb2MvUkVBRE1FLm5hbmQKaW5kZXggY2Q3NjA4Yy4uZjJkNmE1YiAxMDA2NDQKLS0tIGEvZG9jL1JFQURNRS5uYW5kCisrKyBiL2RvYy9SRUFETUUubmFuZApAQCAtMTc5LDcgKzE3OSw2IEBACiAgICAjZGVmaW5lIE5BTkRfTUFYX0NISVBTIDEKIAogCi0KIE5PVEU6CiA9PT09PQogCkBAIC0yMDQsNyArMjAzLDcgQEAKIHRpbWUgdXNlIE5BTkQgaW4gbGVnYWN5IG1vZGUuIFRoZSBicmVha2FnZSB3aWxsIGRpc2FwcGVhciB3aGVuIHRoZQogYm9hcmQtc3BlY2lmaWMgY29kZSBpcyBjaGFuZ2VkIHRvIHRoZSBuZXcgTkFORC4KIAotQXMgbWVudGlvbmVkIGFib3ZlLCB0aGUgbGVnYWN5IGNvZGUgaXMgc3RpbGwgdXNlZCBieSB0aGUgRG9DIHN1YnN5c3RlbS4gCi1UaGUgY29uc2VxdWVuY2Ugb2YgdGhpcyBpcyB0aGF0IHRoZSBsZWdhY3kgTkFORCBjYW4ndCBiZSByZW1vdmVkICBmcm9tIAotdGhlIHRyZWUgdW50aWwgdGhlIERvQyBpcyBwb3J0ZWQgdG8gdXNlIHRoZSBuZXcgTkFORCBzdXBwb3J0IChvciBib2FyZHMgCitBcyBtZW50aW9uZWQgYWJvdmUsIHRoZSBsZWdhY3kgY29kZSBpcyBzdGlsbCB1c2VkIGJ5IHRoZSBEb0Mgc3Vic3lzdGVtLgorVGhlIGNvbnNlcXVlbmNlIG9mIHRoaXMgaXMgdGhhdCB0aGUgbGVnYWN5IE5BTkQgY2FuJ3QgYmUgcmVtb3ZlZCAgZnJvbQordGhlIHRyZWUgdW50aWwgdGhlIERvQyBpcyBwb3J0ZWQgdG8gdXNlIHRoZSBuZXcgTkFORCBzdXBwb3J0IChvciBib2FyZHMKIHdpdGggRG9DIHdpbGwgYnJlYWspLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pODA0Mi5jIGIvZHJpdmVycy9pODA0Mi5jCmluZGV4IDVmMjczYTIuLjIyYzJhNGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTgwNDIuYworKysgYi9kcml2ZXJzL2k4MDQyLmMKQEAgLTEyLDcgKzEyLDcgQEAKICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlCiAgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogICoKICAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCkBAIC0zMyw3ICszMyw3IEBACiBleHRlcm4gdTggIGd0X2NwY2lkdmlfaW44KHUzMiBvZmZzZXQpOwogZXh0ZXJuIHZvaWQgZ3RfY3BjaWR2aV9vdXQ4KHUzMiBvZmZzZXQsIHU4IGRhdGEpOwogCi0jZGVmaW5lIGluOChhKSAgICAgZ3RfY3BjaWR2aV9pbjgoYSkKKyNkZWZpbmUgaW44KGEpCSAgIGd0X2NwY2lkdmlfaW44KGEpCiAjZGVmaW5lIG91dDgoYSwgYikgZ3RfY3BjaWR2aV9vdXQ4KGEsYikKICNlbmRpZgogCkBAIC00OSwxMCArNDksMTAgQEAKIAogLyogbG9jYWxzICovCiAKLXN0YXRpYyBpbnQgIGtiZF9pbnB1dCAgICA9IC0xOyAgICAgICAgICAvKiBubyBpbnB1dCB5ZXQgKi8KLXN0YXRpYyBpbnQgIGtiZF9tYXBwaW5nICA9IEtCRF9VUzsgICAgICAvKiBkZWZhdWx0IFVTIGtleWJvYXJkICovCi1zdGF0aWMgaW50ICBrYmRfZmxhZ3MgICAgPSBOT1JNQUw7ICAgICAgLyogYWZ0ZXIgcmVzZXQgKi8KLXN0YXRpYyBpbnQgIGtiZF9zdGF0ZSAgICA9IDA7ICAgICAgICAgICAvKiB1bnNoaWZ0IGNvZGUgKi8KK3N0YXRpYyBpbnQgIGtiZF9pbnB1dAkgPSAtMTsJCS8qIG5vIGlucHV0IHlldCAqLworc3RhdGljIGludCAga2JkX21hcHBpbmcJID0gS0JEX1VTOwkvKiBkZWZhdWx0IFVTIGtleWJvYXJkICovCitzdGF0aWMgaW50ICBrYmRfZmxhZ3MJID0gTk9STUFMOwkvKiBhZnRlciByZXNldCAqLworc3RhdGljIGludCAga2JkX3N0YXRlCSA9IDA7CQkvKiB1bnNoaWZ0IGNvZGUgKi8KIAogc3RhdGljIHZvaWQga2JkX2NvbnZfY2hhciAodW5zaWduZWQgY2hhciBzY2FuX2NvZGUpOwogc3RhdGljIHZvaWQga2JkX2xlZF9zZXQgKHZvaWQpOwpAQCAtNjgsMjMwICs2OCwyMzAgQEAKIAogc3RhdGljIHVuc2lnbmVkIGNoYXIga2JkX2ZjdF9tYXAgWzE0NF0gPQogICAgIHsgLyoga2JkX2ZjdF9tYXAgdGFibGUgZm9yIHNjYW4gY29kZSAqLwotICAgIDAsICAgQVMsICAgQVMsICAgQVMsICAgQVMsICAgQVMsICAgQVMsICAgQVMsIC8qIHNjYW4gIDAtIDcgKi8KLSAgIEFTLCAgIEFTLCAgIEFTLCAgIEFTLCAgIEFTLCAgIEFTLCAgIEFTLCAgIEFTLCAvKiBzY2FuICA4LSBGICovCi0gICBBUywgICBBUywgICBBUywgICBBUywgICBBUywgICBBUywgICBBUywgICBBUywgLyogc2NhbiAxMC0xNyAqLwotICAgQVMsICAgQVMsICAgQVMsICAgQVMsICAgQVMsICAgQ04sICAgQVMsICAgQVMsIC8qIHNjYW4gMTgtMUYgKi8KLSAgIEFTLCAgIEFTLCAgIEFTLCAgIEFTLCAgIEFTLCAgIEFTLCAgIEFTLCAgIEFTLCAvKiBzY2FuIDIwLTI3ICovCi0gICBBUywgICBBUywgICBTSCwgICBBUywgICBBUywgICBBUywgICBBUywgICBBUywgLyogc2NhbiAyOC0yRiAqLwotICAgQVMsICAgQVMsICAgQVMsICAgQVMsICAgQVMsICAgQVMsICAgU0gsICAgQVMsIC8qIHNjYW4gMzAtMzcgKi8KLSAgIEFTLCAgIEFTLCAgIENQLCAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgICAwLCAvKiBzY2FuIDM4LTNGICovCi0gICAgMCwgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICBOTSwgICBTVCwgICBFUywgLyogc2NhbiA0MC00NyAqLwotICAgRVMsICAgRVMsICAgRVMsICAgRVMsICAgRVMsICAgRVMsICAgRVMsICAgRVMsIC8qIHNjYW4gNDgtNEYgKi8KLSAgIEVTLCAgIEVTLCAgIEVTLCAgIEVTLCAgIDAsICAgIDAsICAgIEFTLCAgICAwLCAvKiBzY2FuIDUwLTU3ICovCi0gICAgMCwgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAgMCwgLyogc2NhbiA1OC01RiAqLwotICAgIDAsICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgIDAsIC8qIHNjYW4gNjAtNjcgKi8KLSAgICAwLCAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgICAwLCAvKiBzY2FuIDY4LTZGICovCi0gICBBUywgICAwLCAgICAwLCAgICBBUywgICAwLCAgICAwLCAgICBBUywgICAgMCwgLyogc2NhbiA3MC03NyAqLwotICAgIDAsICAgQVMsICAgMCwgICAgMCwgICAgMCwgICAgQVMsICAgMCwgICAgIDAsIC8qIHNjYW4gNzgtN0YgKi8KLSAgIEFTLCAgIENOLCAgIEFTLCAgIEFTLCAgIEFLLCAgIFNULCAgIEVYLCAgIEVYLCAvKiBlbmhhbmNlZCAgICovCi0gICBBUywgICBFWCwgICBFWCwgICBBUywgICBFWCwgICBBUywgICBFWCwgICBFWCAgLyogZW5oYW5jZWQgICAqLworICAgIDAsCSBBUywgICBBUywgICBBUywgICBBUywJIEFTLCAgIEFTLCAgIEFTLCAvKiBzY2FuICAwLSA3ICovCisgICBBUywJIEFTLCAgIEFTLCAgIEFTLCAgIEFTLAkgQVMsICAgQVMsICAgQVMsIC8qIHNjYW4gIDgtIEYgKi8KKyAgIEFTLAkgQVMsICAgQVMsICAgQVMsICAgQVMsCSBBUywgICBBUywgICBBUywgLyogc2NhbiAxMC0xNyAqLworICAgQVMsCSBBUywgICBBUywgICBBUywgICBBUywJIENOLCAgIEFTLCAgIEFTLCAvKiBzY2FuIDE4LTFGICovCisgICBBUywJIEFTLCAgIEFTLCAgIEFTLCAgIEFTLAkgQVMsICAgQVMsICAgQVMsIC8qIHNjYW4gMjAtMjcgKi8KKyAgIEFTLAkgQVMsICAgU0gsICAgQVMsICAgQVMsCSBBUywgICBBUywgICBBUywgLyogc2NhbiAyOC0yRiAqLworICAgQVMsCSBBUywgICBBUywgICBBUywgICBBUywJIEFTLCAgIFNILCAgIEFTLCAvKiBzY2FuIDMwLTM3ICovCisgICBBUywJIEFTLCAgIENQLCAgIDAsCSAgIDAsCSAwLCAgICAwLCAgICAgMCwgLyogc2NhbiAzOC0zRiAqLworICAgIDAsCSAwLCAgICAwLCAgICAwLAkgICAwLAkgTk0sICAgU1QsICAgRVMsIC8qIHNjYW4gNDAtNDcgKi8KKyAgIEVTLAkgRVMsICAgRVMsICAgRVMsICAgRVMsCSBFUywgICBFUywgICBFUywgLyogc2NhbiA0OC00RiAqLworICAgRVMsCSBFUywgICBFUywgICBFUywgICAwLAkgMCwgICAgQVMsICAgIDAsIC8qIHNjYW4gNTAtNTcgKi8KKyAgICAwLAkgMCwgICAgMCwgICAgMCwJICAgMCwJIDAsICAgIDAsICAgICAwLCAvKiBzY2FuIDU4LTVGICovCisgICAgMCwJIDAsICAgIDAsICAgIDAsCSAgIDAsCSAwLCAgICAwLCAgICAgMCwgLyogc2NhbiA2MC02NyAqLworICAgIDAsCSAwLCAgICAwLCAgICAwLAkgICAwLAkgMCwgICAgMCwgICAgIDAsIC8qIHNjYW4gNjgtNkYgKi8KKyAgIEFTLAkgMCwgICAgMCwgICAgQVMsICAgMCwJIDAsICAgIEFTLCAgICAwLCAvKiBzY2FuIDcwLTc3ICovCisgICAgMCwJIEFTLCAgIDAsICAgIDAsCSAgIDAsCSBBUywgICAwLCAgICAgMCwgLyogc2NhbiA3OC03RiAqLworICAgQVMsCSBDTiwgICBBUywgICBBUywgICBBSywJIFNULCAgIEVYLCAgIEVYLCAvKiBlbmhhbmNlZCAgICovCisgICBBUywJIEVYLCAgIEVYLCAgIEFTLCAgIEVYLAkgQVMsICAgRVgsICAgRVgJIC8qIGVuaGFuY2VkICAgKi8KICAgICB9OwogCiBzdGF0aWMgdW5zaWduZWQgY2hhciBrYmRfa2V5X21hcCBbMl1bNV1bMTQ0XSA9CiAgICAgewogICAgIHsgLyogVVMga2V5Ym9hcmQgKi8KICAgICB7IC8qIHVuc2hpZnQgY29kZSAqLwotICAgIDAsICAweDFiLCAgICcxJywgICAnMicsICAgJzMnLCAgICc0JywgICAnNScsICAgJzYnLCAgICAvKiBzY2FuICAwLSA3ICovCi0gICc3JywgICAnOCcsICAgJzknLCAgICcwJywgICAnLScsICAgJz0nLCAgMHgwOCwgICdcdCcsICAgIC8qIHNjYW4gIDgtIEYgKi8KLSAgJ3EnLCAgICd3JywgICAnZScsICAgJ3InLCAgICd0JywgICAneScsICAgJ3UnLCAgICdpJywgICAgLyogc2NhbiAxMC0xNyAqLwotICAnbycsICAgJ3AnLCAgICdbJywgICAnXScsICAnXHInLCAgIENOLCAgICAnYScsICAgJ3MnLCAgICAvKiBzY2FuIDE4LTFGICovCi0gICdkJywgICAnZicsICAgJ2cnLCAgICdoJywgICAnaicsICAgJ2snLCAgICdsJywgICAnOycsICAgIC8qIHNjYW4gMjAtMjcgKi8KLSAnXCcnLCAgICdgJywgICBTSCwgICAnXFwnLCAgICd6JywgICAneCcsICAgJ2MnLCAgICd2JywgICAgLyogc2NhbiAyOC0yRiAqLwotICAnYicsICAgJ24nLCAgICdtJywgICAnLCcsICAgJy4nLCAgICcvJywgICBTSCwgICAgJyonLCAgICAvKiBzY2FuIDMwLTM3ICovCi0gICcgJywgICAnICcsICAgQ1AsICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIC8qIHNjYW4gMzgtM0YgKi8KLSAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICBOTSwgICAgU1QsICAgICc3JywgICAgLyogc2NhbiA0MC00NyAqLwotICAnOCcsICAgJzknLCAgICctJywgICAnNCcsICAgJzUnLCAgICc2JywgICAnKycsICAgJzEnLCAgICAvKiBzY2FuIDQ4LTRGICovCi0gICcyJywgICAnMycsICAgJzAnLCAgICcuJywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIC8qIHNjYW4gNTAtNTcgKi8KLSAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgLyogc2NhbiA1OC01RiAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAvKiBzY2FuIDYwLTY3ICovCi0gICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIC8qIHNjYW4gNjgtNkYgKi8KLSAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgLyogc2NhbiA3MC03NyAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAvKiBzY2FuIDc4LTdGICovCi0gICdccicsICAgQ04sICAgJy8nLCAgICcqJywgICAnICcsICAgIFNULCAgICdGJywgICAnQScsICAgIC8qIGV4dGVuZGVkICovCi0gICAgMCwgICAnRCcsICAgJ0MnLCAgICAgMCwgICAnQicsICAgICAwLCAgICAnQCcsICAnUCcgICAgIC8qIGV4dGVuZGVkICovCisgICAgMCwJMHgxYiwJJzEnLCAgICcyJywgICAnMycsICAgJzQnLCAgICc1JywgICAnNicsCSAgIC8qIHNjYW4gIDAtIDcgKi8KKyAgJzcnLAkgJzgnLAknOScsICAgJzAnLCAgICctJywgICAnPScsICAweDA4LCAgJ1x0JywJICAgLyogc2NhbiAgOC0gRiAqLworICAncScsCSAndycsCSdlJywgICAncicsICAgJ3QnLCAgICd5JywgICAndScsICAgJ2knLAkgICAvKiBzY2FuIDEwLTE3ICovCisgICdvJywJICdwJywJJ1snLCAgICddJywgICdccicsICAgQ04sICAgICdhJywgICAncycsCSAgIC8qIHNjYW4gMTgtMUYgKi8KKyAgJ2QnLAkgJ2YnLAknZycsICAgJ2gnLCAgICdqJywgICAnaycsICAgJ2wnLCAgICc7JywJICAgLyogc2NhbiAyMC0yNyAqLworICdcJycsCSAnYCcsCVNILCAgICdcXCcsICAgJ3onLCAgICd4JywgICAnYycsICAgJ3YnLAkgICAvKiBzY2FuIDI4LTJGICovCisgICdiJywJICduJywJJ20nLCAgICcsJywgICAnLicsICAgJy8nLCAgIFNILAkgICAnKicsCSAgIC8qIHNjYW4gMzAtMzcgKi8KKyAgJyAnLAkgJyAnLAlDUCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsCSAgIC8qIHNjYW4gMzgtM0YgKi8KKyAgICAwLAkgICAwLAkgIDAsCSAwLAkwLCAgIE5NLCAgICBTVCwJICAgJzcnLAkgICAvKiBzY2FuIDQwLTQ3ICovCisgICc4JywJICc5JywJJy0nLCAgICc0JywgICAnNScsICAgJzYnLCAgICcrJywgICAnMScsCSAgIC8qIHNjYW4gNDgtNEYgKi8KKyAgJzInLAkgJzMnLAknMCcsICAgJy4nLAkwLCAgICAgMCwgICAgIDAsICAgICAwLAkgICAvKiBzY2FuIDUwLTU3ICovCisgICAgMCwJICAgMCwJICAwLAkgMCwJMCwgICAgIDAsICAgICAwLCAgICAgMCwJICAgLyogc2NhbiA1OC01RiAqLworICAgIDAsCSAgIDAsCSAgMCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsCSAgIC8qIHNjYW4gNjAtNjcgKi8KKyAgICAwLAkgICAwLAkgIDAsCSAwLAkwLCAgICAgMCwgICAgIDAsICAgICAwLAkgICAvKiBzY2FuIDY4LTZGICovCisgICAgMCwJICAgMCwJICAwLAkgMCwJMCwgICAgIDAsICAgICAwLCAgICAgMCwJICAgLyogc2NhbiA3MC03NyAqLworICAgIDAsCSAgIDAsCSAgMCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsCSAgIC8qIHNjYW4gNzgtN0YgKi8KKyAgJ1xyJywJICBDTiwJJy8nLCAgICcqJywgICAnICcsICAgIFNULCAgICdGJywgICAnQScsCSAgIC8qIGV4dGVuZGVkICovCisgICAgMCwJICdEJywJJ0MnLAkgMCwgICAnQicsICAgICAwLCAgICAnQCcsICAnUCcJICAgLyogZXh0ZW5kZWQgKi8KICAgICB9LAogICAgIHsgLyogc2hpZnQgY29kZSAqLwotICAgIDAsICAweDFiLCAgICchJywgICAnQCcsICAgJyMnLCAgICckJywgICAnJScsICAgJ14nLCAgICAvKiBzY2FuICAwLSA3ICovCi0gICcmJywgICAnKicsICAgJygnLCAgICcpJywgICAnXycsICAgJysnLCAgMHgwOCwgICdcdCcsICAgIC8qIHNjYW4gIDgtIEYgKi8KLSAgJ1EnLCAgICdXJywgICAnRScsICAgJ1InLCAgICdUJywgICAnWScsICAgJ1UnLCAgICdJJywgICAgLyogc2NhbiAxMC0xNyAqLwotICAnTycsICAgJ1AnLCAgICd7JywgICAnfScsICAnXHInLCAgIENOLCAgICAnQScsICAgJ1MnLCAgICAvKiBzY2FuIDE4LTFGICovCi0gICdEJywgICAnRicsICAgJ0cnLCAgICdIJywgICAnSicsICAgJ0snLCAgICdMJywgICAnOicsICAgIC8qIHNjYW4gMjAtMjcgKi8KLSAgJyInLCAgICd+JywgICBTSCwgICAgJ3wnLCAgICdaJywgICAnWCcsICAgJ0MnLCAgICdWJywgICAgLyogc2NhbiAyOC0yRiAqLwotICAnQicsICAgJ04nLCAgICdNJywgICAnPCcsICAgJz4nLCAgICc/JywgICBTSCwgICAgJyonLCAgICAvKiBzY2FuIDMwLTM3ICovCi0gICcgJywgICAnICcsICAgQ1AsICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIC8qIHNjYW4gMzgtM0YgKi8KLSAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICBOTSwgICAgU1QsICAgICc3JywgICAgLyogc2NhbiA0MC00NyAqLwotICAnOCcsICAgJzknLCAgICctJywgICAnNCcsICAgJzUnLCAgICc2JywgICAnKycsICAgJzEnLCAgICAvKiBzY2FuIDQ4LTRGICovCi0gICcyJywgICAnMycsICAgJzAnLCAgICcuJywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIC8qIHNjYW4gNTAtNTcgKi8KLSAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgLyogc2NhbiA1OC01RiAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAvKiBzY2FuIDYwLTY3ICovCi0gICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIC8qIHNjYW4gNjgtNkYgKi8KLSAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgLyogc2NhbiA3MC03NyAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAvKiBzY2FuIDc4LTdGICovCi0gICdccicsICAgQ04sICAgJy8nLCAgICcqJywgICAnICcsICAgIFNULCAgICdGJywgICAnQScsICAgIC8qIGV4dGVuZGVkICovCi0gICAgMCwgICAnRCcsICAgJ0MnLCAgICAgMCwgICAnQicsICAgICAwLCAgICdAJywgICAnUCcgICAgIC8qIGV4dGVuZGVkICovCisgICAgMCwJMHgxYiwJJyEnLCAgICdAJywgICAnIycsICAgJyQnLCAgICclJywgICAnXicsCSAgIC8qIHNjYW4gIDAtIDcgKi8KKyAgJyYnLAkgJyonLAknKCcsICAgJyknLCAgICdfJywgICAnKycsICAweDA4LCAgJ1x0JywJICAgLyogc2NhbiAgOC0gRiAqLworICAnUScsCSAnVycsCSdFJywgICAnUicsICAgJ1QnLCAgICdZJywgICAnVScsICAgJ0knLAkgICAvKiBzY2FuIDEwLTE3ICovCisgICdPJywJICdQJywJJ3snLCAgICd9JywgICdccicsICAgQ04sICAgICdBJywgICAnUycsCSAgIC8qIHNjYW4gMTgtMUYgKi8KKyAgJ0QnLAkgJ0YnLAknRycsICAgJ0gnLCAgICdKJywgICAnSycsICAgJ0wnLCAgICc6JywJICAgLyogc2NhbiAyMC0yNyAqLworICAnIicsCSAnficsCVNILCAgICAnfCcsICAgJ1onLCAgICdYJywgICAnQycsICAgJ1YnLAkgICAvKiBzY2FuIDI4LTJGICovCisgICdCJywJICdOJywJJ00nLCAgICc8JywgICAnPicsICAgJz8nLCAgIFNILAkgICAnKicsCSAgIC8qIHNjYW4gMzAtMzcgKi8KKyAgJyAnLAkgJyAnLAlDUCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsCSAgIC8qIHNjYW4gMzgtM0YgKi8KKyAgICAwLAkgICAwLAkgIDAsCSAwLAkwLCAgIE5NLCAgICBTVCwJICAgJzcnLAkgICAvKiBzY2FuIDQwLTQ3ICovCisgICc4JywJICc5JywJJy0nLCAgICc0JywgICAnNScsICAgJzYnLCAgICcrJywgICAnMScsCSAgIC8qIHNjYW4gNDgtNEYgKi8KKyAgJzInLAkgJzMnLAknMCcsICAgJy4nLAkwLCAgICAgMCwgICAgIDAsICAgICAwLAkgICAvKiBzY2FuIDUwLTU3ICovCisgICAgMCwJICAgMCwJICAwLAkgMCwJMCwgICAgIDAsICAgICAwLCAgICAgMCwJICAgLyogc2NhbiA1OC01RiAqLworICAgIDAsCSAgIDAsCSAgMCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsCSAgIC8qIHNjYW4gNjAtNjcgKi8KKyAgICAwLAkgICAwLAkgIDAsCSAwLAkwLCAgICAgMCwgICAgIDAsICAgICAwLAkgICAvKiBzY2FuIDY4LTZGICovCisgICAgMCwJICAgMCwJICAwLAkgMCwJMCwgICAgIDAsICAgICAwLCAgICAgMCwJICAgLyogc2NhbiA3MC03NyAqLworICAgIDAsCSAgIDAsCSAgMCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsCSAgIC8qIHNjYW4gNzgtN0YgKi8KKyAgJ1xyJywJICBDTiwJJy8nLCAgICcqJywgICAnICcsICAgIFNULCAgICdGJywgICAnQScsCSAgIC8qIGV4dGVuZGVkICovCisgICAgMCwJICdEJywJJ0MnLAkgMCwgICAnQicsICAgICAwLCAgICdAJywgICAnUCcJICAgLyogZXh0ZW5kZWQgKi8KICAgICB9LAogICAgIHsgLyogY29udHJvbCBjb2RlICovCi0gMHhmZiwgIDB4MWIsICAweGZmLCAgMHgwMCwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAgIC8qIHNjYW4gIDAtIDcgKi8KLSAweDFlLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHgxZiwgIDB4ZmYsICAweGZmLCAgJ1x0JywgICAgLyogc2NhbiAgOC0gRiAqLwotIDB4MTEsICAweDE3LCAgMHgwNSwgIDB4MTIsICAweDE0LCAgMHgxOSwgIDB4MTUsICAweDA5LCAgICAvKiBzY2FuIDEwLTE3ICovCi0gMHgwZiwgIDB4MTAsICAweDFiLCAgMHgxZCwgICdccicsICAgQ04sICAgMHgwMSwgIDB4MTMsICAgIC8qIHNjYW4gMTgtMUYgKi8KLSAweDA0LCAgMHgwNiwgIDB4MDcsICAweDA4LCAgMHgwYSwgIDB4MGIsICAweDBjLCAgMHhmZiwgICAgLyogc2NhbiAyMC0yNyAqLwotIDB4ZmYsICAweDFjLCAgIFNILCAgIDB4ZmYsICAweDFhLCAgMHgxOCwgIDB4MDMsICAweDE2LCAgICAvKiBzY2FuIDI4LTJGICovCi0gMHgwMiwgIDB4MGUsICAweDBkLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgIFNILCAgIDB4ZmYsICAgIC8qIHNjYW4gMzAtMzcgKi8KLSAweGZmLCAgMHhmZiwgICBDUCwgICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgICAgLyogc2NhbiAzOC0zRiAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgIE5NLCAgICBTVCwgICAweGZmLCAgICAvKiBzY2FuIDQwLTQ3ICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAgIC8qIHNjYW4gNDgtNEYgKi8KLSAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgICAgLyogc2NhbiA1MC01NyAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgICAvKiBzY2FuIDU4LTVGICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAgIC8qIHNjYW4gNjAtNjcgKi8KLSAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgICAgLyogc2NhbiA2OC02RiAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgICAvKiBzY2FuIDcwLTc3ICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAgIC8qIHNjYW4gNzgtN0YgKi8KLSAgJ1xyJywgICBDTiwgICAnLycsICAgJyonLCAgICcgJywgICAgU1QsICAweGZmLCAgMHhmZiwgICAgLyogZXh0ZW5kZWQgKi8KLSAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiAgICAgLyogZXh0ZW5kZWQgKi8KKyAweGZmLAkweDFiLCAgMHhmZiwgIDB4MDAsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLAkgICAvKiBzY2FuICAwLSA3ICovCisgMHgxZSwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHgxZiwgIDB4ZmYsICAweGZmLCAgJ1x0JywJICAgLyogc2NhbiAgOC0gRiAqLworIDB4MTEsCTB4MTcsICAweDA1LCAgMHgxMiwgIDB4MTQsICAweDE5LCAgMHgxNSwgIDB4MDksCSAgIC8qIHNjYW4gMTAtMTcgKi8KKyAweDBmLAkweDEwLCAgMHgxYiwgIDB4MWQsICAnXHInLCAgIENOLCAgIDB4MDEsICAweDEzLAkgICAvKiBzY2FuIDE4LTFGICovCisgMHgwNCwJMHgwNiwgIDB4MDcsICAweDA4LCAgMHgwYSwgIDB4MGIsICAweDBjLCAgMHhmZiwJICAgLyogc2NhbiAyMC0yNyAqLworIDB4ZmYsCTB4MWMsCVNILCAgIDB4ZmYsICAweDFhLCAgMHgxOCwgIDB4MDMsICAweDE2LAkgICAvKiBzY2FuIDI4LTJGICovCisgMHgwMiwJMHgwZSwgIDB4MGQsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAgU0gsCSAgMHhmZiwJICAgLyogc2NhbiAzMC0zNyAqLworIDB4ZmYsCTB4ZmYsCUNQLCAgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLAkgICAvKiBzY2FuIDM4LTNGICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgICBOTSwgICAgU1QsCSAgMHhmZiwJICAgLyogc2NhbiA0MC00NyAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsCSAgIC8qIHNjYW4gNDgtNEYgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLAkgICAvKiBzY2FuIDUwLTU3ICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwJICAgLyogc2NhbiA1OC01RiAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsCSAgIC8qIHNjYW4gNjAtNjcgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLAkgICAvKiBzY2FuIDY4LTZGICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwJICAgLyogc2NhbiA3MC03NyAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsCSAgIC8qIHNjYW4gNzgtN0YgKi8KKyAgJ1xyJywJICBDTiwJJy8nLCAgICcqJywgICAnICcsICAgIFNULCAgMHhmZiwgIDB4ZmYsCSAgIC8qIGV4dGVuZGVkICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZgkgICAvKiBleHRlbmRlZCAqLwogICAgIH0sCiAgICAgeyAvKiBub24gbnVtZXJpYyBjb2RlICovCi0gICAgMCwgIDB4MWIsICAgJzEnLCAgICcyJywgICAnMycsICAgJzQnLCAgICc1JywgICAnNicsICAgIC8qIHNjYW4gIDAtIDcgKi8KLSAgJzcnLCAgICc4JywgICAnOScsICAgJzAnLCAgICctJywgICAnPScsICAweDA4LCAgJ1x0JywgICAgLyogc2NhbiAgOC0gRiAqLwotICAncScsICAgJ3cnLCAgICdlJywgICAncicsICAgJ3QnLCAgICd5JywgICAndScsICAgJ2knLCAgICAvKiBzY2FuIDEwLTE3ICovCi0gICdvJywgICAncCcsICAgJ1snLCAgICddJywgICdccicsICAgQ04sICAgICdhJywgICAncycsICAgIC8qIHNjYW4gMTgtMUYgKi8KLSAgJ2QnLCAgICdmJywgICAnZycsICAgJ2gnLCAgICdqJywgICAnaycsICAgJ2wnLCAgICc7JywgICAgLyogc2NhbiAyMC0yNyAqLwotICdcJycsICAgJ2AnLCAgIFNILCAgICdcXCcsICAgJ3onLCAgICd4JywgICAnYycsICAgJ3YnLCAgICAvKiBzY2FuIDI4LTJGICovCi0gICdiJywgICAnbicsICAgJ20nLCAgICcsJywgICAnLicsICAgJy8nLCAgIFNILCAgICAnKicsICAgIC8qIHNjYW4gMzAtMzcgKi8KLSAgJyAnLCAgICcgJywgICBDUCwgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgLyogc2NhbiAzOC0zRiAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIE5NLCAgICBTVCwgICAgJ3cnLCAgICAvKiBzY2FuIDQwLTQ3ICovCi0gICd4JywgICAneScsICAgJ2wnLCAgICd0JywgICAndScsICAgJ3YnLCAgICdtJywgICAncScsICAgIC8qIHNjYW4gNDgtNEYgKi8KLSAgJ3InLCAgICdzJywgICAncCcsICAgJ24nLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgLyogc2NhbiA1MC01NyAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAvKiBzY2FuIDU4LTVGICovCi0gICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIC8qIHNjYW4gNjAtNjcgKi8KLSAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgLyogc2NhbiA2OC02RiAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAvKiBzY2FuIDcwLTc3ICovCi0gICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIC8qIHNjYW4gNzgtN0YgKi8KLSAgJ1xyJywgICBDTiwgICAnLycsICAgJyonLCAgICcgJywgICAgU1QsICAgJ0YnLCAgICdBJywgICAgLyogZXh0ZW5kZWQgKi8KLSAgICAwLCAgICdEJywgICAnQycsICAgICAwLCAgICdCJywgICAgIDAsICAgICdAJywgICdQJyAgICAgLyogZXh0ZW5kZWQgKi8KKyAgICAwLAkweDFiLAknMScsICAgJzInLCAgICczJywgICAnNCcsICAgJzUnLCAgICc2JywJICAgLyogc2NhbiAgMC0gNyAqLworICAnNycsCSAnOCcsCSc5JywgICAnMCcsICAgJy0nLCAgICc9JywgIDB4MDgsICAnXHQnLAkgICAvKiBzY2FuICA4LSBGICovCisgICdxJywJICd3JywJJ2UnLCAgICdyJywgICAndCcsICAgJ3knLCAgICd1JywgICAnaScsCSAgIC8qIHNjYW4gMTAtMTcgKi8KKyAgJ28nLAkgJ3AnLAknWycsICAgJ10nLCAgJ1xyJywgICBDTiwgICAgJ2EnLCAgICdzJywJICAgLyogc2NhbiAxOC0xRiAqLworICAnZCcsCSAnZicsCSdnJywgICAnaCcsICAgJ2onLCAgICdrJywgICAnbCcsICAgJzsnLAkgICAvKiBzY2FuIDIwLTI3ICovCisgJ1wnJywJICdgJywJU0gsICAgJ1xcJywgICAneicsICAgJ3gnLCAgICdjJywgICAndicsCSAgIC8qIHNjYW4gMjgtMkYgKi8KKyAgJ2InLAkgJ24nLAknbScsICAgJywnLCAgICcuJywgICAnLycsICAgU0gsCSAgICcqJywJICAgLyogc2NhbiAzMC0zNyAqLworICAnICcsCSAnICcsCUNQLAkgMCwJMCwgICAgIDAsICAgICAwLCAgICAgMCwJICAgLyogc2NhbiAzOC0zRiAqLworICAgIDAsCSAgIDAsCSAgMCwJIDAsCTAsICAgTk0sICAgIFNULAkgICAndycsCSAgIC8qIHNjYW4gNDAtNDcgKi8KKyAgJ3gnLAkgJ3knLAknbCcsICAgJ3QnLCAgICd1JywgICAndicsICAgJ20nLCAgICdxJywJICAgLyogc2NhbiA0OC00RiAqLworICAncicsCSAncycsCSdwJywgICAnbicsCTAsICAgICAwLCAgICAgMCwgICAgIDAsCSAgIC8qIHNjYW4gNTAtNTcgKi8KKyAgICAwLAkgICAwLAkgIDAsCSAwLAkwLCAgICAgMCwgICAgIDAsICAgICAwLAkgICAvKiBzY2FuIDU4LTVGICovCisgICAgMCwJICAgMCwJICAwLAkgMCwJMCwgICAgIDAsICAgICAwLCAgICAgMCwJICAgLyogc2NhbiA2MC02NyAqLworICAgIDAsCSAgIDAsCSAgMCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsCSAgIC8qIHNjYW4gNjgtNkYgKi8KKyAgICAwLAkgICAwLAkgIDAsCSAwLAkwLCAgICAgMCwgICAgIDAsICAgICAwLAkgICAvKiBzY2FuIDcwLTc3ICovCisgICAgMCwJICAgMCwJICAwLAkgMCwJMCwgICAgIDAsICAgICAwLCAgICAgMCwJICAgLyogc2NhbiA3OC03RiAqLworICAnXHInLAkgIENOLAknLycsICAgJyonLCAgICcgJywgICAgU1QsICAgJ0YnLCAgICdBJywJICAgLyogZXh0ZW5kZWQgKi8KKyAgICAwLAkgJ0QnLAknQycsCSAwLCAgICdCJywgICAgIDAsICAgICdAJywgICdQJwkgICAvKiBleHRlbmRlZCAqLwogICAgIH0sCiAgICAgeyAvKiByaWdodCBhbHQgbW9kZSAtIG5vdCB1c2VkIGluIFVTIGtleWJvYXJkICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gIDAgLSA3ICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gIDggLSBGICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gMTAgLTE3ICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gMTggLTFGICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gMjAgLTI3ICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gMjggLTJGICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gMzAgLTM3ICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gMzggLTNGICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNDAgLTQ3ICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNDggLTRGICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNTAgLTU3ICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNTggLTVGICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNjAgLTY3ICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNjggLTZGICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNzAgLTc3ICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNzggLTdGICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIGV4dGVuZGVkICAgICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYgIC8qIGV4dGVuZGVkICAgICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbgkgMCAtIDcgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuCSA4IC0gRiAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gMTAgLTE3ICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiAxOCAtMUYgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDIwIC0yNyAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gMjggLTJGICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiAzMCAtMzcgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDM4IC0zRiAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNDAgLTQ3ICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiA0OCAtNEYgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDUwIC01NyAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNTggLTVGICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiA2MCAtNjcgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDY4IC02RiAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNzAgLTc3ICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiA3OCAtN0YgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBleHRlbmRlZCAgICAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYJLyogZXh0ZW5kZWQgICAgKi8KICAgICB9CiAgICAgfSwKICAgICB7IC8qIGdlcm1hbiBrZXlib2FyZCAqLwogICAgIHsgLyogdW5zaGlmdCBjb2RlICovCi0gICAgMCwgIDB4MWIsICAgJzEnLCAgICcyJywgICAnMycsICAgJzQnLCAgICc1JywgICAnNicsIC8qIHNjYW4gIDAtIDcgKi8KLSAgJzcnLCAgICc4JywgICAnOScsICAgJzAnLCAgMHhlMSwgICdcJycsICAweDA4LCAgJ1x0JywgLyogc2NhbiAgOC0gRiAqLwotICAncScsICAgJ3cnLCAgICdlJywgICAncicsICAgJ3QnLCAgICd6JywgICAndScsICAgJ2knLCAvKiBzY2FuIDEwLTE3ICovCi0gICdvJywgICAncCcsICAweDgxLCAgICcrJywgICdccicsICAgQ04sICAgICdhJywgICAncycsIC8qIHNjYW4gMTgtMUYgKi8KLSAgJ2QnLCAgICdmJywgICAnZycsICAgJ2gnLCAgICdqJywgICAnaycsICAgJ2wnLCAgMHg5NCwgLyogc2NhbiAyMC0yNyAqLwotIDB4ODQsICAgJ14nLCAgIFNILCAgICAnIycsICAgJ3knLCAgICd4JywgICAnYycsICAgJ3YnLCAvKiBzY2FuIDI4LTJGICovCi0gICdiJywgICAnbicsICAgJ20nLCAgICcsJywgICAnLicsICAgJy0nLCAgIFNILCAgICAnKicsIC8qIHNjYW4gMzAtMzcgKi8KLSAgJyAnLCAgICcgJywgICBDUCwgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgLyogc2NhbiAzOC0zRiAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIE5NLCAgICBTVCwgICAgJzcnLCAvKiBzY2FuIDQwLTQ3ICovCi0gICc4JywgICAnOScsICAgJy0nLCAgICc0JywgICAnNScsICAgJzYnLCAgICcrJywgICAnMScsIC8qIHNjYW4gNDgtNEYgKi8KLSAgJzInLCAgICczJywgICAnMCcsICAgJywnLCAgICAgMCwgICAgIDAsICAgJzwnLCAgICAgMCwgLyogc2NhbiA1MC01NyAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAvKiBzY2FuIDU4LTVGICovCi0gICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gNjAtNjcgKi8KLSAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgLyogc2NhbiA2OC02RiAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAvKiBzY2FuIDcwLTc3ICovCi0gICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gNzgtN0YgKi8KLSAgJ1xyJywgICBDTiwgICAnLycsICAgJyonLCAgICcgJywgICAgU1QsICAgJ0YnLCAgICdBJywgLyogZXh0ZW5kZWQgKi8KLSAgICAwLCAgICdEJywgICAnQycsICAgICAwLCAgICdCJywgICAgIDAsICAgICdAJywgICdQJyAgLyogZXh0ZW5kZWQgKi8KKyAgICAwLAkweDFiLAknMScsICAgJzInLCAgICczJywgICAnNCcsICAgJzUnLCAgICc2JywgLyogc2NhbgkgMC0gNyAqLworICAnNycsCSAnOCcsCSc5JywgICAnMCcsICAweGUxLCAgJ1wnJywgIDB4MDgsICAnXHQnLCAvKiBzY2FuCSA4LSBGICovCisgICdxJywJICd3JywJJ2UnLCAgICdyJywgICAndCcsICAgJ3onLCAgICd1JywgICAnaScsIC8qIHNjYW4gMTAtMTcgKi8KKyAgJ28nLAkgJ3AnLCAgMHg4MSwgICAnKycsICAnXHInLCAgIENOLCAgICAnYScsICAgJ3MnLCAvKiBzY2FuIDE4LTFGICovCisgICdkJywJICdmJywJJ2cnLCAgICdoJywgICAnaicsICAgJ2snLCAgICdsJywgIDB4OTQsIC8qIHNjYW4gMjAtMjcgKi8KKyAweDg0LAkgJ14nLAlTSCwgICAgJyMnLCAgICd5JywgICAneCcsICAgJ2MnLCAgICd2JywgLyogc2NhbiAyOC0yRiAqLworICAnYicsCSAnbicsCSdtJywgICAnLCcsICAgJy4nLCAgICctJywgICBTSCwJICAgJyonLCAvKiBzY2FuIDMwLTM3ICovCisgICcgJywJICcgJywJQ1AsCSAwLAkwLCAgICAgMCwgICAgIDAsICAgICAwLCAvKiBzY2FuIDM4LTNGICovCisgICAgMCwJICAgMCwJICAwLAkgMCwJMCwgICBOTSwgICAgU1QsCSAgICc3JywgLyogc2NhbiA0MC00NyAqLworICAnOCcsCSAnOScsCSctJywgICAnNCcsICAgJzUnLCAgICc2JywgICAnKycsICAgJzEnLCAvKiBzY2FuIDQ4LTRGICovCisgICcyJywJICczJywJJzAnLCAgICcsJywJMCwgICAgIDAsICAgJzwnLCAgICAgMCwgLyogc2NhbiA1MC01NyAqLworICAgIDAsCSAgIDAsCSAgMCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gNTgtNUYgKi8KKyAgICAwLAkgICAwLAkgIDAsCSAwLAkwLCAgICAgMCwgICAgIDAsICAgICAwLCAvKiBzY2FuIDYwLTY3ICovCisgICAgMCwJICAgMCwJICAwLAkgMCwJMCwgICAgIDAsICAgICAwLCAgICAgMCwgLyogc2NhbiA2OC02RiAqLworICAgIDAsCSAgIDAsCSAgMCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gNzAtNzcgKi8KKyAgICAwLAkgICAwLAkgIDAsCSAwLAkwLCAgICAgMCwgICAgIDAsICAgICAwLCAvKiBzY2FuIDc4LTdGICovCisgICdccicsCSAgQ04sCScvJywgICAnKicsICAgJyAnLCAgICBTVCwgICAnRicsICAgJ0EnLCAvKiBleHRlbmRlZCAqLworICAgIDAsCSAnRCcsCSdDJywJIDAsICAgJ0InLCAgICAgMCwgICAgJ0AnLCAgJ1AnCS8qIGV4dGVuZGVkICovCiAgICAgfSwKICAgICB7IC8qIHNoaWZ0IGNvZGUgKi8KLSAgICAwLCAgMHgxYiwgICAnIScsICAgJyInLCAgMHgxNSwgICAnJCcsICAgJyUnLCAgICcmJywgLyogc2NhbiAgMC0gNyAqLwotICAnLycsICAgJygnLCAgICcpJywgICAnPScsICAgJz8nLCAgICdgJywgIDB4MDgsICAnXHQnLCAvKiBzY2FuICA4LSBGICovCi0gICdRJywgICAnVycsICAgJ0UnLCAgICdSJywgICAnVCcsICAgJ1onLCAgICdVJywgICAnSScsIC8qIHNjYW4gMTAtMTcgKi8KLSAgJ08nLCAgICdQJywgIDB4OWEsICAgJyonLCAgJ1xyJywgICBDTiwgICAgJ0EnLCAgICdTJywgLyogc2NhbiAxOC0xRiAqLwotICAnRCcsICAgJ0YnLCAgICdHJywgICAnSCcsICAgJ0onLCAgICdLJywgICAnTCcsICAweDk5LCAvKiBzY2FuIDIwLTI3ICovCi0gMHg4ZSwgIDB4ZjgsICAgU0gsICAgJ1wnJywgICAnWScsICAgJ1gnLCAgICdDJywgICAnVicsIC8qIHNjYW4gMjgtMkYgKi8KLSAgJ0InLCAgICdOJywgICAnTScsICAgJzsnLCAgICc6JywgICAnXycsICAgU0gsICAgICcqJywgLyogc2NhbiAzMC0zNyAqLwotICAnICcsICAgJyAnLCAgIENQLCAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAvKiBzY2FuIDM4LTNGICovCi0gICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgTk0sICAgIFNULCAgICAnNycsIC8qIHNjYW4gNDAtNDcgKi8KLSAgJzgnLCAgICc5JywgICAnLScsICAgJzQnLCAgICc1JywgICAnNicsICAgJysnLCAgICcxJywgLyogc2NhbiA0OC00RiAqLwotICAnMicsICAgJzMnLCAgICcwJywgICAnLCcsICAgICAwLCAgICAgMCwgICAnPicsICAgICAwLCAvKiBzY2FuIDUwLTU3ICovCi0gICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gNTgtNUYgKi8KLSAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgLyogc2NhbiA2MC02NyAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAvKiBzY2FuIDY4LTZGICovCi0gICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gNzAtNzcgKi8KLSAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgLyogc2NhbiA3OC03RiAqLwotICAnXHInLCAgIENOLCAgICcvJywgICAnKicsICAgJyAnLCAgICBTVCwgICAnRicsICAgJ0EnLCAvKiBleHRlbmRlZCAqLwotICAgIDAsICAgJ0QnLCAgICdDJywgICAgIDAsICAgJ0InLCAgICAgMCwgICAnQCcsICAgJ1AnICAvKiBleHRlbmRlZCAqLworICAgIDAsCTB4MWIsCSchJywgICAnIicsICAweDE1LCAgICckJywgICAnJScsICAgJyYnLCAvKiBzY2FuCSAwLSA3ICovCisgICcvJywJICcoJywJJyknLCAgICc9JywgICAnPycsICAgJ2AnLCAgMHgwOCwgICdcdCcsIC8qIHNjYW4JIDgtIEYgKi8KKyAgJ1EnLAkgJ1cnLAknRScsICAgJ1InLCAgICdUJywgICAnWicsICAgJ1UnLCAgICdJJywgLyogc2NhbiAxMC0xNyAqLworICAnTycsCSAnUCcsICAweDlhLCAgICcqJywgICdccicsICAgQ04sICAgICdBJywgICAnUycsIC8qIHNjYW4gMTgtMUYgKi8KKyAgJ0QnLAkgJ0YnLAknRycsICAgJ0gnLCAgICdKJywgICAnSycsICAgJ0wnLCAgMHg5OSwgLyogc2NhbiAyMC0yNyAqLworIDB4OGUsCTB4ZjgsCVNILCAgICdcJycsICAgJ1knLCAgICdYJywgICAnQycsICAgJ1YnLCAvKiBzY2FuIDI4LTJGICovCisgICdCJywJICdOJywJJ00nLCAgICc7JywgICAnOicsICAgJ18nLCAgIFNILAkgICAnKicsIC8qIHNjYW4gMzAtMzcgKi8KKyAgJyAnLAkgJyAnLAlDUCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gMzgtM0YgKi8KKyAgICAwLAkgICAwLAkgIDAsCSAwLAkwLCAgIE5NLCAgICBTVCwJICAgJzcnLCAvKiBzY2FuIDQwLTQ3ICovCisgICc4JywJICc5JywJJy0nLCAgICc0JywgICAnNScsICAgJzYnLCAgICcrJywgICAnMScsIC8qIHNjYW4gNDgtNEYgKi8KKyAgJzInLAkgJzMnLAknMCcsICAgJywnLAkwLCAgICAgMCwgICAnPicsICAgICAwLCAvKiBzY2FuIDUwLTU3ICovCisgICAgMCwJICAgMCwJICAwLAkgMCwJMCwgICAgIDAsICAgICAwLCAgICAgMCwgLyogc2NhbiA1OC01RiAqLworICAgIDAsCSAgIDAsCSAgMCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gNjAtNjcgKi8KKyAgICAwLAkgICAwLAkgIDAsCSAwLAkwLCAgICAgMCwgICAgIDAsICAgICAwLCAvKiBzY2FuIDY4LTZGICovCisgICAgMCwJICAgMCwJICAwLAkgMCwJMCwgICAgIDAsICAgICAwLCAgICAgMCwgLyogc2NhbiA3MC03NyAqLworICAgIDAsCSAgIDAsCSAgMCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gNzgtN0YgKi8KKyAgJ1xyJywJICBDTiwJJy8nLCAgICcqJywgICAnICcsICAgIFNULCAgICdGJywgICAnQScsIC8qIGV4dGVuZGVkICovCisgICAgMCwJICdEJywJJ0MnLAkgMCwgICAnQicsICAgICAwLCAgICdAJywgICAnUCcJLyogZXh0ZW5kZWQgKi8KICAgICB9LAogICAgIHsgLyogY29udHJvbCBjb2RlICovCi0gMHhmZiwgIDB4MWIsICAweGZmLCAgMHgwMCwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gIDAtIDcgKi8KLSAweDFlLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHgxZiwgIDB4ZmYsICAweGZmLCAgJ1x0JywgLyogc2NhbiAgOC0gRiAqLwotIDB4MTEsICAweDE3LCAgMHgwNSwgIDB4MTIsICAweDE0LCAgMHgxOSwgIDB4MTUsICAweDA5LCAvKiBzY2FuIDEwLTE3ICovCi0gMHgwZiwgIDB4MTAsICAweDFiLCAgMHgxZCwgICdccicsICAgQ04sICAgMHgwMSwgIDB4MTMsIC8qIHNjYW4gMTgtMUYgKi8KLSAweDA0LCAgMHgwNiwgIDB4MDcsICAweDA4LCAgMHgwYSwgIDB4MGIsICAweDBjLCAgMHhmZiwgLyogc2NhbiAyMC0yNyAqLwotIDB4ZmYsICAweDFjLCAgIFNILCAgIDB4ZmYsICAweDFhLCAgMHgxOCwgIDB4MDMsICAweDE2LCAvKiBzY2FuIDI4LTJGICovCi0gMHgwMiwgIDB4MGUsICAweDBkLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgIFNILCAgIDB4ZmYsIC8qIHNjYW4gMzAtMzcgKi8KLSAweGZmLCAgMHhmZiwgICBDUCwgICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiAzOC0zRiAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgIE5NLCAgICBTVCwgICAweGZmLCAvKiBzY2FuIDQwLTQ3ICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNDgtNEYgKi8KLSAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiA1MC01NyAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDU4LTVGICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNjAtNjcgKi8KLSAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiA2OC02RiAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDcwLTc3ICovCi0gMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNzgtN0YgKi8KLSAgJ1xyJywgICBDTiwgICAnLycsICAgJyonLCAgICcgJywgICAgU1QsICAweGZmLCAgMHhmZiwgLyogZXh0ZW5kZWQgKi8KLSAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiAgLyogZXh0ZW5kZWQgKi8KKyAweGZmLAkweDFiLCAgMHhmZiwgIDB4MDAsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuCSAwLSA3ICovCisgMHgxZSwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHgxZiwgIDB4ZmYsICAweGZmLCAgJ1x0JywgLyogc2NhbgkgOC0gRiAqLworIDB4MTEsCTB4MTcsICAweDA1LCAgMHgxMiwgIDB4MTQsICAweDE5LCAgMHgxNSwgIDB4MDksIC8qIHNjYW4gMTAtMTcgKi8KKyAweDBmLAkweDEwLCAgMHgxYiwgIDB4MWQsICAnXHInLCAgIENOLCAgIDB4MDEsICAweDEzLCAvKiBzY2FuIDE4LTFGICovCisgMHgwNCwJMHgwNiwgIDB4MDcsICAweDA4LCAgMHgwYSwgIDB4MGIsICAweDBjLCAgMHhmZiwgLyogc2NhbiAyMC0yNyAqLworIDB4ZmYsCTB4MWMsCVNILCAgIDB4ZmYsICAweDFhLCAgMHgxOCwgIDB4MDMsICAweDE2LCAvKiBzY2FuIDI4LTJGICovCisgMHgwMiwJMHgwZSwgIDB4MGQsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAgU0gsCSAgMHhmZiwgLyogc2NhbiAzMC0zNyAqLworIDB4ZmYsCTB4ZmYsCUNQLCAgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDM4LTNGICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgICBOTSwgICAgU1QsCSAgMHhmZiwgLyogc2NhbiA0MC00NyAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNDgtNEYgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDUwLTU3ICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiA1OC01RiAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNjAtNjcgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDY4LTZGICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiA3MC03NyAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNzgtN0YgKi8KKyAgJ1xyJywJICBDTiwJJy8nLCAgICcqJywgICAnICcsICAgIFNULCAgMHhmZiwgIDB4ZmYsIC8qIGV4dGVuZGVkICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZgkvKiBleHRlbmRlZCAqLwogICAgIH0sCiAgICAgeyAvKiBub24gbnVtZXJpYyBjb2RlICovCi0gICAgMCwgIDB4MWIsICAgJzEnLCAgICcyJywgICAnMycsICAgJzQnLCAgICc1JywgICAnNicsIC8qIHNjYW4gIDAtIDcgKi8KLSAgJzcnLCAgICc4JywgICAnOScsICAgJzAnLCAgMHhlMSwgICdcJycsICAweDA4LCAgJ1x0JywgLyogc2NhbiAgOC0gRiAqLwotICAncScsICAgJ3cnLCAgICdlJywgICAncicsICAgJ3QnLCAgICd6JywgICAndScsICAgJ2knLCAvKiBzY2FuIDEwLTE3ICovCi0gICdvJywgICAncCcsICAweDgxLCAgICcrJywgICdccicsICAgQ04sICAgICdhJywgICAncycsIC8qIHNjYW4gMTgtMUYgKi8KLSAgJ2QnLCAgICdmJywgICAnZycsICAgJ2gnLCAgICdqJywgICAnaycsICAgJ2wnLCAgMHg5NCwgLyogc2NhbiAyMC0yNyAqLwotIDB4ODQsICAgJ14nLCAgIFNILCAgICAgIDAsICAgJ3knLCAgICd4JywgICAnYycsICAgJ3YnLCAvKiBzY2FuIDI4LTJGICovCi0gICdiJywgICAnbicsICAgJ20nLCAgICcsJywgICAnLicsICAgJy0nLCAgIFNILCAgICAnKicsIC8qIHNjYW4gMzAtMzcgKi8KLSAgJyAnLCAgICcgJywgICBDUCwgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgLyogc2NhbiAzOC0zRiAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIE5NLCAgICBTVCwgICAgJ3cnLCAvKiBzY2FuIDQwLTQ3ICovCi0gICd4JywgICAneScsICAgJ2wnLCAgICd0JywgICAndScsICAgJ3YnLCAgICdtJywgICAncScsIC8qIHNjYW4gNDgtNEYgKi8KLSAgJ3InLCAgICdzJywgICAncCcsICAgJ24nLCAgICAgMCwgICAgIDAsICAgJzwnLCAgICAgMCwgLyogc2NhbiA1MC01NyAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAvKiBzY2FuIDU4LTVGICovCi0gICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gNjAtNjcgKi8KLSAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgLyogc2NhbiA2OC02RiAqLwotICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAvKiBzY2FuIDcwLTc3ICovCi0gICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gNzgtN0YgKi8KLSAgJ1xyJywgICBDTiwgICAnLycsICAgJyonLCAgICcgJywgICAgU1QsICAgJ0YnLCAgICdBJywgLyogZXh0ZW5kZWQgKi8KLSAgICAwLCAgICdEJywgICAnQycsICAgICAwLCAgICdCJywgICAgIDAsICAgICdAJywgICdQJyAgLyogZXh0ZW5kZWQgKi8KKyAgICAwLAkweDFiLAknMScsICAgJzInLCAgICczJywgICAnNCcsICAgJzUnLCAgICc2JywgLyogc2NhbgkgMC0gNyAqLworICAnNycsCSAnOCcsCSc5JywgICAnMCcsICAweGUxLCAgJ1wnJywgIDB4MDgsICAnXHQnLCAvKiBzY2FuCSA4LSBGICovCisgICdxJywJICd3JywJJ2UnLCAgICdyJywgICAndCcsICAgJ3onLCAgICd1JywgICAnaScsIC8qIHNjYW4gMTAtMTcgKi8KKyAgJ28nLAkgJ3AnLCAgMHg4MSwgICAnKycsICAnXHInLCAgIENOLCAgICAnYScsICAgJ3MnLCAvKiBzY2FuIDE4LTFGICovCisgICdkJywJICdmJywJJ2cnLCAgICdoJywgICAnaicsICAgJ2snLCAgICdsJywgIDB4OTQsIC8qIHNjYW4gMjAtMjcgKi8KKyAweDg0LAkgJ14nLAlTSCwJIDAsICAgJ3knLCAgICd4JywgICAnYycsICAgJ3YnLCAvKiBzY2FuIDI4LTJGICovCisgICdiJywJICduJywJJ20nLCAgICcsJywgICAnLicsICAgJy0nLCAgIFNILAkgICAnKicsIC8qIHNjYW4gMzAtMzcgKi8KKyAgJyAnLAkgJyAnLAlDUCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gMzgtM0YgKi8KKyAgICAwLAkgICAwLAkgIDAsCSAwLAkwLCAgIE5NLCAgICBTVCwJICAgJ3cnLCAvKiBzY2FuIDQwLTQ3ICovCisgICd4JywJICd5JywJJ2wnLCAgICd0JywgICAndScsICAgJ3YnLCAgICdtJywgICAncScsIC8qIHNjYW4gNDgtNEYgKi8KKyAgJ3InLAkgJ3MnLAkncCcsICAgJ24nLAkwLCAgICAgMCwgICAnPCcsICAgICAwLCAvKiBzY2FuIDUwLTU3ICovCisgICAgMCwJICAgMCwJICAwLAkgMCwJMCwgICAgIDAsICAgICAwLCAgICAgMCwgLyogc2NhbiA1OC01RiAqLworICAgIDAsCSAgIDAsCSAgMCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gNjAtNjcgKi8KKyAgICAwLAkgICAwLAkgIDAsCSAwLAkwLCAgICAgMCwgICAgIDAsICAgICAwLCAvKiBzY2FuIDY4LTZGICovCisgICAgMCwJICAgMCwJICAwLAkgMCwJMCwgICAgIDAsICAgICAwLCAgICAgMCwgLyogc2NhbiA3MC03NyAqLworICAgIDAsCSAgIDAsCSAgMCwJIDAsCTAsICAgICAwLCAgICAgMCwgICAgIDAsIC8qIHNjYW4gNzgtN0YgKi8KKyAgJ1xyJywJICBDTiwJJy8nLCAgICcqJywgICAnICcsICAgIFNULCAgICdGJywgICAnQScsIC8qIGV4dGVuZGVkICovCisgICAgMCwJICdEJywJJ0MnLAkgMCwgICAnQicsICAgICAwLCAgICAnQCcsICAnUCcJLyogZXh0ZW5kZWQgKi8KICAgICB9LAogICAgIHsgLyogUmlnaHQgYWx0IG1vZGUgLSBpcyB1c2VkIGluIEdlcm1hbiBrZXlib2FyZCAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuICAwIC0gNyAqLwotICAneycsICAgJ1snLCAgICddJywgICAnfScsICAnXFwnLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuICA4IC0gRiAqLwotICAnQCcsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDEwIC0xNyAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgICAnficsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDE4IC0xRiAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDIwIC0yNyAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDI4IC0yRiAqLwotIDB4ZmYsICAweGZmLCAgMHhlNiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDMwIC0zNyAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDM4IC0zRiAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDQwIC00NyAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDQ4IC00RiAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgICAnfCcsICAweGZmLCAvKiBzY2FuIDUwIC01NyAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDU4IC01RiAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDYwIC02NyAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDY4IC02RiAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDcwIC03NyAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDc4IC03RiAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBleHRlbmRlZCAgICAqLwotIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmICAvKiBleHRlbmRlZCAgICAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4JIDAgLSA3ICovCisgICd7JywJICdbJywJJ10nLCAgICd9JywgICdcXCcsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4JIDggLSBGICovCisgICdAJywJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiAxMCAtMTcgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgICAnficsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDE4IC0xRiAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gMjAgLTI3ICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiAyOCAtMkYgKi8KKyAweGZmLAkweGZmLCAgMHhlNiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDMwIC0zNyAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gMzggLTNGICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiA0MCAtNDcgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDQ4IC00RiAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgICd8JywgIDB4ZmYsIC8qIHNjYW4gNTAgLTU3ICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiA1OCAtNUYgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDYwIC02NyAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIHNjYW4gNjggLTZGICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgLyogc2NhbiA3MCAtNzcgKi8KKyAweGZmLAkweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAvKiBzY2FuIDc4IC03RiAqLworIDB4ZmYsCTB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsIC8qIGV4dGVuZGVkICAgICovCisgMHhmZiwJMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZiwgIDB4ZmYsICAweGZmLCAgMHhmZgkvKiBleHRlbmRlZCAgICAqLwogICAgIH0KICAgICB9CiAgICAgfTsKQEAgLTMyOCw4ICszMjgsOCBAQAogCiAjaWZkZWYgQ09ORklHX1VTRV9DUENJRFZJCiAgICAgaWYgKChwZW52ID0gZ2V0ZW52ICgiY29uc29sZSIpKSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoc3RybmNtcCAocGVudiwgInNlcmlhbCIsIDcpID09IDApIHsKLQkgICAgICAgICAgICByZXR1cm4gLTE7CisJICAgIGlmIChzdHJuY21wIChwZW52LCAic2VyaWFsIiwgNykgPT0gMCkgeworCQkgICAgcmV0dXJuIC0xOwogCSAgICB9CiAgICAgfQogI2VuZGlmCkBAIC0zNDUsOSArMzQ1LDkgQEAKICAgICB7CiAJaWYgKGtiZF9yZXNldCgpID09IDApCiAJewotCSAgICBrYmRfbWFwcGluZyAgID0ga2V5bWFwOwotCSAgICBrYmRfZmxhZ3MgICAgID0gTk9STUFMOwotCSAgICBrYmRfc3RhdGUgICAgID0gMDsKKwkgICAga2JkX21hcHBpbmcJICA9IGtleW1hcDsKKwkgICAga2JkX2ZsYWdzCSAgPSBOT1JNQUw7CisJICAgIGtiZF9zdGF0ZQkgID0gMDsKIAkgICAga2JkX2xlZF9zZXQoKTsKIAkgICAgcmV0dXJuIDA7CiAJICAgIH0KQEAgLTM1OSw3ICszNTksNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBpODA0Ml90c3RjIC0gdGVzdCBpZiBrZXlib2FyZCBpbnB1dCBpcyBhdmFpbGFibGUKLSAqICAgICAgICAgICAgICBvcHRpb246IGN1cnNvciBibGlua2luZyBpZiBjYWxsZWQgaW4gYSBsb29wCisgKgkJb3B0aW9uOiBjdXJzb3IgYmxpbmtpbmcgaWYgY2FsbGVkIGluIGEgbG9vcAogICovCiBpbnQgaTgwNDJfdHN0YyAodm9pZCkKIHsKQEAgLTM5NSw3ICszOTUsNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBpODA0Ml9nZXRjIC0gd2FpdCB0aWxsIGtleWJvYXJkIGlucHV0IGlzIGF2YWlsYWJsZQotICogICAgICAgICAgICAgIG9wdGlvbjogdHVybiBvbi9vZmYgY3Vyc29yIHdoaWxlIHdhaXRpbmcKKyAqCQlvcHRpb246IHR1cm4gb24vb2ZmIGN1cnNvciB3aGlsZSB3YWl0aW5nCiAgKi8KIGludCBpODA0Ml9nZXRjICh2b2lkKQogewpAQCAtNDQ4LDggKzQ0OCw4IEBACiAgICAgewogCWlmIChzY2FuX2NvZGUgPT0gMHhlMSkKIAl7Ci0JICAgIGtiZF9mbGFncyBePSBCUks7ICAgICAvKiByZXNldCB0aGUgYnJlYWsgZmxhZyAqLwotCSAgICBrYmRfZmxhZ3MgXj0gRTE7ICAgICAgLyogYml0d2lzZSBFWE9SIHdpdGggRTEgZmxhZyAqLworCSAgICBrYmRfZmxhZ3MgXj0gQlJLOwkgIC8qIHJlc2V0IHRoZSBicmVhayBmbGFnICovCisJICAgIGtiZF9mbGFncyBePSBFMTsJICAvKiBiaXR3aXNlIEVYT1Igd2l0aCBFMSBmbGFnICovCiAJfQogCXJldHVybjsKICAgICB9CkBAIC01NjAsNyArNTYwLDcgQEAKICAgICBpZiAoKGtiZF9mbGFncyAmIEJSSykgPT0gTk9STUFMKQogICAgIHsKICAgICAgICBrYmRfZmxhZ3MgXj0gQ0FQUzsKLSAgICAgICBrYmRfbGVkX3NldCAoKTsgICAgICAgICAgICAvKiB1cGRhdGUga2V5Ym9hcmQgTEVEICovCisgICAgICAga2JkX2xlZF9zZXQgKCk7CQkgIC8qIHVwZGF0ZSBrZXlib2FyZCBMRUQgKi8KICAgICB9CiB9CiAKQEAgLTU3Myw3ICs1NzMsNyBAQAogICAgIHsKICAgICAgICBrYmRfZmxhZ3MgXj0gTlVNOwogICAgICAgIGtiZF9zdGF0ZSA9IChrYmRfZmxhZ3MgJiBOVU0pID8gQVMgOiBOTTsKLSAgICAgICBrYmRfbGVkX3NldCAoKTsgICAgICAgICAgICAvKiB1cGRhdGUga2V5Ym9hcmQgTEVEICovCisgICAgICAga2JkX2xlZF9zZXQgKCk7CQkgIC8qIHVwZGF0ZSBrZXlib2FyZCBMRUQgKi8KICAgICB9CiB9CiAKQEAgLTU4NSw3ICs1ODUsNyBAQAogICAgIGlmICgoa2JkX2ZsYWdzICYgQlJLKSA9PSBOT1JNQUwpCiAgICAgewogCWtiZF9mbGFncyBePSBTVFA7Ci0Ja2JkX2xlZF9zZXQgKCk7ICAgICAgICAgICAgLyogdXBkYXRlIGtleWJvYXJkIExFRCAqLworCWtiZF9sZWRfc2V0ICgpOwkJICAgLyogdXBkYXRlIGtleWJvYXJkIExFRCAqLwogCWlmIChrYmRfZmxhZ3MgJiBTVFApCiAJICAgIGtiZF9pbnB1dCA9IDB4MTM7CiAJZWxzZQpAQCAtNjE1LDkgKzYxNSw5IEBACiBzdGF0aWMgdm9pZCBrYmRfbGVkX3NldCAodm9pZCkKIHsKICAgICBrYmRfaW5wdXRfZW1wdHkoKTsKLSAgICBvdXQ4IChJODA0Ml9EQVRBX1JFRywgMHhlZCk7ICAgICAgICAvKiBTRVQgTEVEIGNvbW1hbmQgKi8KKyAgICBvdXQ4IChJODA0Ml9EQVRBX1JFRywgMHhlZCk7CS8qIFNFVCBMRUQgY29tbWFuZCAqLwogICAgIGtiZF9pbnB1dF9lbXB0eSgpOwotICAgIG91dDggKEk4MDQyX0RBVEFfUkVHLCAoa2JkX2ZsYWdzICYgMHg3KSk7ICAgIC8qIExFRCBiaXRzIG9ubHkgKi8KKyAgICBvdXQ4IChJODA0Ml9EQVRBX1JFRywgKGtiZF9mbGFncyAmIDB4NykpOwkgLyogTEVEIGJpdHMgb25seSAqLwogfQogCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9DUENJNzUwLmggYi9pbmNsdWRlL2NvbmZpZ3MvQ1BDSTc1MC5oCmluZGV4IDE2MzJmMzcuLjI0NGU0NWEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9DUENJNzUwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0NQQ0k3NTAuaApAQCAtMTIsNyArMTIsNyBAQAogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4JIFNlZSB0aGUKICAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAgKgogICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKQEAgLTU3LDcgKzU3LDcgQEAKIAogI2RlZmluZSBDT05GSUdfQ1BDSTc1MAkJMQkvKiB0aGlzIGlzIGFuIENQQ0k3NTAgYm9hcmQJKi8KIAotI2RlZmluZSBDT05GSUdfQkFVRFJBVEUJCTk2MDAgCS8qIGNvbnNvbGUgYmF1ZHJhdGUgPSA5NjAwCSovCisjZGVmaW5lIENPTkZJR19CQVVEUkFURQkJOTYwMAkvKiBjb25zb2xlIGJhdWRyYXRlID0gOTYwMAkqLwogCiAjdW5kZWYJQ09ORklHX0VDQwkJCS8qIGVuYWJsZSBFQ0Mgc3VwcG9ydCAqLwogCkBAIC04NCwxOSArODQsMTkgQEAKICAqIGZvciB5b3VyIGNvbnNvbGUgZHJpdmVyLgogICoKICAqIHdoYXQgdG8gZG86Ci0gKiB0byB1c2UgdGhlIERVQVJULCB1bmRlZiBDT05GSUdfTVBTQy4gIElmIHlvdSBoYXZlIGhhY2tlZCBhIHNlcmlhbAorICogdG8gdXNlIHRoZSBEVUFSVCwgdW5kZWYgQ09ORklHX01QU0MuCSBJZiB5b3UgaGF2ZSBoYWNrZWQgYSBzZXJpYWwKICAqIGNhYmxlIG9udG8gdGhlIHNlY29uZCBEVUFSVCBjaGFubmVsLCBjaGFuZ2UgdGhlIENGR19EVUFSVCBwb3J0IGZyb20gMQogICogdG8gMCBiZWxvdy4KICAqCiAgKiB0byB1c2UgdGhlIE1QU0MsICNkZWZpbmUgQ09ORklHX01QU0MuICBJZiB5b3UgaGF2ZSB3aXJlZCB1cCBhbm90aGVyCiAgKiBtcHNjIGNoYW5uZWwsIGNoYW5nZSBDT05GSUdfTVBTQ19QT1JUIHRvIHRoZSBkZXNpcmVkIHZhbHVlLgogICovCi0jZGVmaW5lCUNPTkZJR19NUFNDCisjZGVmaW5lIENPTkZJR19NUFNDCiAjZGVmaW5lIENPTkZJR19NUFNDX1BPUlQJMAogCiAvKiB0byBjaGFuZ2UgdGhlIGRlZmF1bHQgZXRoZXJuZXQgcG9ydCwgdXNlIHRoaXMgZGVmaW5lIChvcHRpb25zOiAwLCAxLCAyKSAqLwogI2RlZmluZSBDT05GSUdfTkVUX01VTFRJCi0jZGVmaW5lIE1WX0VUSF9ERVZTICAgICAgICAgICAgIDEKKyNkZWZpbmUgTVZfRVRIX0RFVlMJCTEKICNkZWZpbmUgQ09ORklHX0VUSEVSX1BPUlQJMAogCiAjdW5kZWYgQ09ORklHX0VUSEVSX1BPUlRfTUlJCS8qIHVzZSBSTUlJICovCkBAIC0xMTgsMzggKzExOCwzOCBAQAogCiAjZGVmaW5lIENPTkZJR19TRVJJQUwJCSJBQTAwMDAwMSIKICNkZWZpbmUgQ09ORklHX1NFUlZFUklQCQkiMTAuMC4wLjc5IgotI2RlZmluZSBDT05GSUdfUk9PVFBBVEgJICAgICAgICAiL2V4cG9ydC9uZnNfY3BjaTc1MC8lcyIKKyNkZWZpbmUgQ09ORklHX1JPT1RQQVRICQkiL2V4cG9ydC9uZnNfY3BjaTc1MC8lcyIKIAogI2RlZmluZSBDT05GSUdfVEVTVERSQU1EQVRBCXkKLSNkZWZpbmUgQ09ORklHX1RFU1REUkFNQUREUkVTUyAgbgorI2RlZmluZSBDT05GSUdfVEVTVERSQU1BRERSRVNTCW4KICNkZWZpbmUgQ09ORklHX1RFU0VURFJBTVdBTEsJbgogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAKLSNkZWZpbmUgQ09ORklHX0xPQURTX0VDSE8JMAkvKiBlY2hvIG9mZiBmb3Igc2VyaWFsIGRvd25sb2FkCSovCi0jZGVmaW5lCUNGR19MT0FEU19CQVVEX0NIQU5HRQkJLyogYWxsb3cgYmF1ZHJhdGUgY2hhbmdlcwkqLworI2RlZmluZSBDT05GSUdfTE9BRFNfRUNITwkwCS8qIGVjaG8gb2ZmIGZvciBzZXJpYWwgZG93bmxvYWQgKi8KKyNkZWZpbmUgQ0ZHX0xPQURTX0JBVURfQ0hBTkdFCQkvKiBhbGxvdyBiYXVkcmF0ZSBjaGFuZ2VzCSovCiAKICN1bmRlZglDT05GSUdfV0FUQ0hET0cJCQkvKiB3YXRjaGRvZyBkaXNhYmxlZAkJKi8KLSN1bmRlZglDT05GSUdfQUxUSVZFQyAgICAgICAgICAgICAgICAgIC8qIHVuZGVmIHRvIGRpc2FibGUgICAgICAgICAgICAgKi8KKyN1bmRlZglDT05GSUdfQUxUSVZFQwkJCS8qIHVuZGVmIHRvIGRpc2FibGUJCSovCiAKICNkZWZpbmUgQ09ORklHX0JPT1RQX01BU0sJKENPTkZJR19CT09UUF9ERUZBVUxUIHwgXAogCQkJCSBDT05GSUdfQk9PVFBfQk9PVEZJTEVTSVpFKQogCiAKLSNkZWZpbmUgQ09ORklHX0NPTU1BTkRTCShDT05GSUdfQ01EX0RGTCAgICBcCisjZGVmaW5lIENPTkZJR19DT01NQU5EUyAoQ09ORklHX0NNRF9ERkwJICAgXAogCQkJIHwgQ0ZHX0NNRF9BU0tFTlYgIFwKLQkJCSB8IENGR19DTURfSTJDICAgICBcCisJCQkgfCBDRkdfQ01EX0kyQwkgICBcCiAJCQkgfCBDRkdfQ01EX0NBQ0hFICAgXAogCQkJIHwgQ0ZHX0NNRF9FRVBST00gIFwKLQkJCSB8IENGR19DTURfUENJICAgICBcCisJCQkgfCBDRkdfQ01EX1BDSQkgICBcCiAJCQkgfCBDRkdfQ01EX0VMRgkgICBcCiAJCQkgfCBDRkdfQ01EX0RBVEUJICAgXAotCQkJIHwgQ0ZHX0NNRF9ORVQgICAgIFwKLQkJCSB8IENGR19DTURfUElORyAgICBcCi0JCQkgfCBDRkdfQ01EX0lERSAgICAgXAotCQkJIHwgQ0ZHX0NNRF9GQVQgICAgIFwKLQkJCSB8IENGR19DTURfRVhUMiAgICBcCisJCQkgfCBDRkdfQ01EX05FVAkgICBcCisJCQkgfCBDRkdfQ01EX1BJTkcJICAgXAorCQkJIHwgQ0ZHX0NNRF9JREUJICAgXAorCQkJIHwgQ0ZHX0NNRF9GQVQJICAgXAorCQkJIHwgQ0ZHX0NNRF9FWFQyCSAgIFwKIAkJCQkJKQogCiAjZGVmaW5lIENPTkZJR19ET1NfUEFSVElUSU9OCkBAIC0xNTksNyArMTU5LDcgQEAKIAogI2RlZmluZSBDT05GSUdfVVNFX0NQQ0lEVkkKIAotI2lmZGVmICBDT05GSUdfVVNFX0NQQ0lEVkkKKyNpZmRlZglDT05GSUdfVVNFX0NQQ0lEVkkKICNkZWZpbmUgQ09ORklHX1ZJREVPCiAjZGVmaW5lIENPTkZJR19WSURFT19DVDY5MDAwCiAjZGVmaW5lIENPTkZJR19DRkJfQ09OU09MRQpAQCAtMTc0LDIzICsxNzQsMjMgQEAKICAqLwogI2RlZmluZSBDRkdfSTJDX0VFUFJPTV9BRERSX0xFTiAyCiAjZGVmaW5lIENGR19JMkNfTVVMVElfRUVQUk9NUwotI2RlZmluZSBDRkdfSTJDX1NQRUVEICAgODAwMDAJCS8qIEkyQyBzcGVlZCBkZWZhdWx0ICovCisjZGVmaW5lIENGR19JMkNfU1BFRUQJODAwMDAJCS8qIEkyQyBzcGVlZCBkZWZhdWx0ICovCiAKICNkZWZpbmUgQ0ZHX0dUX0RVQUxfQ1BVCQkJLyogYWxzbyBmb3IgSlRBRyBldmVuIHdpdGggb25lIGNwdSAqLwotI2RlZmluZQlDRkdfTE9OR0hFTFAJCQkvKiB1bmRlZiB0byBzYXZlIG1lbW9yeQkJKi8KLSNkZWZpbmUJQ0ZHX1BST01QVAkiPT4gIgkJLyogTW9uaXRvciBDb21tYW5kIFByb21wdAkqLworI2RlZmluZSBDRkdfTE9OR0hFTFAJCQkvKiB1bmRlZiB0byBzYXZlIG1lbW9yeQkJKi8KKyNkZWZpbmUgQ0ZHX1BST01QVAkiPT4gIgkJLyogTW9uaXRvciBDb21tYW5kIFByb21wdAkqLwogI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0tHREIpCi0jZGVmaW5lCUNGR19DQlNJWkUJMTAyNAkJLyogQ29uc29sZSBJL08gQnVmZmVyIFNpemUJKi8KKyNkZWZpbmUgQ0ZHX0NCU0laRQkxMDI0CQkvKiBDb25zb2xlIEkvTyBCdWZmZXIgU2l6ZQkqLwogI2Vsc2UKLSNkZWZpbmUJQ0ZHX0NCU0laRQkyNTYJCS8qIENvbnNvbGUgSS9PIEJ1ZmZlciBTaXplCSovCisjZGVmaW5lIENGR19DQlNJWkUJMjU2CQkvKiBDb25zb2xlIEkvTyBCdWZmZXIgU2l6ZQkqLwogI2VuZGlmCi0jZGVmaW5lCUNGR19QQlNJWkUgKENGR19DQlNJWkUrc2l6ZW9mKENGR19QUk9NUFQpKzE2KSAvKiBQcmludCBCdWZmZXIgU2l6ZSAqLwotI2RlZmluZQlDRkdfTUFYQVJHUwkxNgkJLyogbWF4IG51bWJlciBvZiBjb21tYW5kIGFyZ3MJKi8KKyNkZWZpbmUgQ0ZHX1BCU0laRSAoQ0ZHX0NCU0laRStzaXplb2YoQ0ZHX1BST01QVCkrMTYpIC8qIFByaW50IEJ1ZmZlciBTaXplICovCisjZGVmaW5lIENGR19NQVhBUkdTCTE2CQkvKiBtYXggbnVtYmVyIG9mIGNvbW1hbmQgYXJncwkqLwogI2RlZmluZSBDRkdfQkFSR1NJWkUJQ0ZHX0NCU0laRQkvKiBCb290IEFyZ3VtZW50IEJ1ZmZlciBTaXplCSovCiAKIC8qI2RlZmluZSBDRkdfTUVNVEVTVF9TVEFSVAkweDAwNDAwMDAwKi8JLyogbWVtdGVzdCB3b3JrcyBvbgkqLwogLyojZGVmaW5lIENGR19NRU1URVNUX0VORAkJMHgwMEMwMDAwMCovCS8qIDQgLi4uIDEyIE1CIGluIERSQU0JKi8KLS8qI2RlZmluZSBDRkdfTUVNVEVTVF9FTkQJCTB4MDdjMDAwMDAqLwkvKiA0IC4uLiAxMjQgTUIgaW4gRFJBTQkqLworLyojZGVmaW5lIENGR19NRU1URVNUX0VORAkJMHgwN2MwMDAwMCovCS8qIDQgLi4uIDEyNCBNQiBpbiBEUkFNICovCiAKIC8qCiAjZGVmaW5lIENGR19EUkFNX1RFU1QKQEAgLTE5OCwyMSArMTk4LDIxIEBACiAgKiAgIENGR19EUkFNX1RFU1QgLSBlbmFibGVzIHRoZSBmb2xsb3dpbmcgdGVzdHMuCiAgKgogICogICBDRkdfRFJBTV9URVNUX0RBVEEgLSBFbmFibGVzIHRlc3QgZm9yIHNob3J0ZWQgb3Igb3BlbiBkYXRhIGxpbmVzCi0gKiAgICAgICAgICAgICAgICAgICAgICAgIEVudmlyb25tZW50IHZhcmlhYmxlICd0ZXN0X2RyYW1fZGF0YScgbXVzdCBiZQotICogICAgICAgICAgICAgICAgICAgICAgICBzZXQgdG8gJ3knLgorICoJCQkgIEVudmlyb25tZW50IHZhcmlhYmxlICd0ZXN0X2RyYW1fZGF0YScgbXVzdCBiZQorICoJCQkgIHNldCB0byAneScuCiAgKiAgIENGR19EUkFNX1RFU1RfREFUQSAtIEVuYWJsZXMgdGVzdCB0byB2ZXJpZnkgdGhhdCBlYWNoIHdvcmQgaXMgdW5pcXVlbHkKLSAqICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc2FibGUuIEVudmlyb25tZW50IHZhcmlhYmxlCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0X2RyYW1fYWRkcmVzcycgbXVzdCBiZSBzZXQgdG8gJ3knLgorICoJCQkgIGFkZHJlc3NhYmxlLiBFbnZpcm9ubWVudCB2YXJpYWJsZQorICoJCQkgICd0ZXN0X2RyYW1fYWRkcmVzcycgbXVzdCBiZSBzZXQgdG8gJ3knLgogICogICBDRkdfRFJBTV9URVNUX1dBTEsgLSBFbmFibGVzIHRlc3QgYSA2NC1iaXQgd2Fsa2luZyBvbmVzIHBhdHRlcm4gdGVzdC4KLSAqICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0ZXN0IHRha2VzIGFib3V0IDYgbWludXRlcyB0byB0ZXN0IDY0IE1CLgotICogICAgICAgICAgICAgICAgICAgICAgICBFbnZpcm9ubWVudCB2YXJpYWJsZSAndGVzdF9kcmFtX3dhbGsnIG11c3QgYmUKLSAqICAgICAgICAgICAgICAgICAgICAgICAgc2V0IHRvICd5Jy4KKyAqCQkJICBUaGlzIHRlc3QgdGFrZXMgYWJvdXQgNiBtaW51dGVzIHRvIHRlc3QgNjQgTUIuCisgKgkJCSAgRW52aXJvbm1lbnQgdmFyaWFibGUgJ3Rlc3RfZHJhbV93YWxrJyBtdXN0IGJlCisgKgkJCSAgc2V0IHRvICd5Jy4KICAqLwogI2RlZmluZSBDRkdfRFJBTV9URVNUCiAjaWYgZGVmaW5lZChDRkdfRFJBTV9URVNUKQogI2RlZmluZSBDRkdfTUVNVEVTVF9TVEFSVAkJMHgwMDQwMDAwMAkvKiBtZW10ZXN0IHdvcmtzIG9uCSovCiAvKiNkZWZpbmUgQ0ZHX01FTVRFU1RfRU5ECQkweDAwQzAwMDAwKi8JLyogNCAuLi4gMTIgTUIgaW4gRFJBTQkqLwotI2RlZmluZSBDRkdfTUVNVEVTVF9FTkQJCTB4MDdjMDAwMDAJLyogNCAuLi4gMTI0IE1CIGluIERSQU0JKi8KKyNkZWZpbmUgQ0ZHX01FTVRFU1RfRU5ECQkweDA3YzAwMDAwCS8qIDQgLi4uIDEyNCBNQiBpbiBEUkFNICovCiAjZGVmaW5lIENGR19EUkFNX1RFU1RfREFUQQogI2RlZmluZSBDRkdfRFJBTV9URVNUX0FERFJFU1MKICNkZWZpbmUgQ0ZHX0RSQU1fVEVTVF9XQUxLCkBAIC0yMjEsMTAgKzIyMSwxMCBAQAogI2RlZmluZSBDT05GSUdfRElTUExBWV9NRU1NQVAJCS8qIGF0IHRoZSBlbmQgb2YgdGhlIGJvb3Rwcm9jZXNzIHNob3cgdGhlIG1lbW9yeSBtYXAgKi8KICN1bmRlZiBDRkdfRElTUExBWV9ESU1NX1NQRF9DT05URU5UCS8qIHNob3cgU1BEIGNvbnRlbnQgZHVyaW5nIGJvb3QgKi8KIAotI2RlZmluZQlDRkdfTE9BRF9BRERSCQkweDAwMzAwMDAwCS8qIGRlZmF1bHQgbG9hZCBhZGRyZXNzCSovCisjZGVmaW5lIENGR19MT0FEX0FERFIJCTB4MDAzMDAwMDAJLyogZGVmYXVsdCBsb2FkIGFkZHJlc3MgKi8KIAotI2RlZmluZQlDRkdfSFoJCQkxMDAwCQkvKiBkZWNyIGZyZXE6IDFtcyB0aWNrcwkqLwotI2RlZmluZSBDRkdfQlVTX0haCQkxMzMwMDAwMDAJLyogMTMzIE1IeiAoQ1BVID0gNSpCdXMgPSA2NjZNSHopCSAJKi8KKyNkZWZpbmUgQ0ZHX0haCQkJMTAwMAkJLyogZGVjciBmcmVxOiAxbXMgdGlja3MgKi8KKyNkZWZpbmUgQ0ZHX0JVU19IWgkJMTMzMDAwMDAwCS8qIDEzMyBNSHogKENQVSA9IDUqQnVzID0gNjY2TUh6KQkJKi8KICNkZWZpbmUgQ0ZHX0JVU19DTEsJCUNGR19CVVNfSFoKIAogI2RlZmluZSBDRkdfQkFVRFJBVEVfVEFCTEUJeyA5NjAwLCAxOTIwMCwgMzg0MDAsIDU3NjAwLCAxMTUyMDAsIDIzMDQwMCB9CkBAIC0yNTEsNyArMjUxLDcgQEAKICAqIFRvIGFuIHVudXNlZCBtZW1vcnkgcmVnaW9uLiBUaGUgc3RhY2sgd2lsbCByZW1haW4gaW4gY2FjaGUgdW50aWwgUkFNCiAgKiBpcyBpbml0aWFsaXplZAogKi8KLSN1bmRlZiAgICBDRkdfSU5JVF9SQU1fTE9DSworI3VuZGVmCSAgQ0ZHX0lOSVRfUkFNX0xPQ0sKIC8qICNkZWZpbmUgQ0ZHX0lOSVRfUkFNX0FERFIJMHg0MDAwMDAwMCovIC8qIHVudXNlZCBtZW1vcnkgcmVnaW9uICovCiAvKiAjZGVmaW5lIENGR19JTklUX1JBTV9BRERSCTB4ZmJhMDAwMDAqLyAvKiB1bnVzZWQgbWVtb3J5IHJlZ2lvbiAqLwogI2RlZmluZSBDRkdfSU5JVF9SQU1fQUREUgkweGYxMDgwMDAwIC8qIHVudXNlZCBtZW1vcnkgcmVnaW9uICovCkBAIC0yNjEsNyArMjYxLDcgQEAKIAogI2RlZmluZSBSRUxPQ0FURV9JTlRFUk5BTF9SQU1fQUREUgogI2lmZGVmIFJFTE9DQVRFX0lOVEVSTkFMX1JBTV9BRERSCi0vKiNkZWZpbmUgQ0ZHX0lOVEVSTkFMX1JBTV9BRERSCTB4ZmJhMDAwMDAqLworLyojZGVmaW5lIENGR19JTlRFUk5BTF9SQU1fQUREUiAweGZiYTAwMDAwKi8KICNkZWZpbmUgQ0ZHX0lOVEVSTkFMX1JBTV9BRERSCTB4ZjEwODAwMDAKICNlbmRpZgogCkBAIC0yNzAsMTYgKzI3MCwxNiBAQAogICogKFNldCB1cCBieSB0aGUgc3RhcnR1cCBjb2RlKQogICogUGxlYXNlIG5vdGUgdGhhdCBDRkdfU0RSQU1fQkFTRSBfbXVzdF8gc3RhcnQgYXQgMAogICovCi0jZGVmaW5lCUNGR19TRFJBTV9CQVNFCQkweDAwMDAwMDAwCisjZGVmaW5lIENGR19TRFJBTV9CQVNFCQkweDAwMDAwMDAwCiAvKiBEdW1taWVzIGZvciBCQVQgNC03ICovCi0jZGVmaW5lCUNGR19TRFJBTTFfQkFTRQkJMHgxMDAwMDAwMAkvKiBlYWNoIDI1NiBNQnl0ZSAqLwotI2RlZmluZQlDRkdfU0RSQU0yX0JBU0UJCTB4MjAwMDAwMDAKLSNkZWZpbmUJQ0ZHX1NEUkFNM19CQVNFCQkweDMwMDAwMDAwCi0jZGVmaW5lCUNGR19TRFJBTTRfQkFTRQkJMHg0MDAwMDAwMAorI2RlZmluZSBDRkdfU0RSQU0xX0JBU0UJCTB4MTAwMDAwMDAJLyogZWFjaCAyNTYgTUJ5dGUgKi8KKyNkZWZpbmUgQ0ZHX1NEUkFNMl9CQVNFCQkweDIwMDAwMDAwCisjZGVmaW5lIENGR19TRFJBTTNfQkFTRQkJMHgzMDAwMDAwMAorI2RlZmluZSBDRkdfU0RSQU00X0JBU0UJCTB4NDAwMDAwMDAKICNkZWZpbmUgQ0ZHX1JFU0VUX0FERFJFU1MJMHhmZmYwMDEwMAotI2RlZmluZQlDRkdfTU9OSVRPUl9MRU4JCSgyNTYgPDwgMTApCS8qIFJlc2VydmUgMjU2IGtCIGZvciBNb25pdG9yICovCisjZGVmaW5lIENGR19NT05JVE9SX0xFTgkJKDI1NiA8PCAxMCkJLyogUmVzZXJ2ZSAyNTYga0IgZm9yIE1vbml0b3IgKi8KICNkZWZpbmUgQ0ZHX01PTklUT1JfQkFTRQkweGZmZjAwMDAwCi0jZGVmaW5lCUNGR19NQUxMT0NfTEVOCQkoMTI4IDw8IDEwKQkvKiBSZXNlcnZlIDI1NiBrQiBmb3IgbWFsbG9jICovCisjZGVmaW5lIENGR19NQUxMT0NfTEVOCQkoMTI4IDw8IDEwKQkvKiBSZXNlcnZlIDI1NiBrQiBmb3IgbWFsbG9jICovCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIEZMQVNIIHJlbGF0ZWQKQEAgLTI4OSwxNSArMjg5LDE1IEBACiAjZGVmaW5lIENGR19GTEFTSF9DRkkJCTEJICAgLyogRmxhc2ggaXMgQ0ZJIGNvbmZvcm1hbnQJCSovCiAjZGVmaW5lIENGR19GTEFTSF9QUk9URUNUSU9OCTEJICAgLyogdXNlIGhhcmR3YXJlIHByb3RlY3Rpb24JCSovCiAjZGVmaW5lIENGR19GTEFTSF9VU0VfQlVGRkVSX1dSSVRFIDEJICAgLyogdXNlIGJ1ZmZlcmVkIHdyaXRlcyAoMjB4IGZhc3RlcikJKi8KLSNkZWZpbmUgQ0ZHX0ZMQVNIX0JBU0UJCTB4ZmMwMDAwMDAgLyogc3RhcnQgb2YgZmxhc2ggYmFua3MgICAgICAgICAgICAgICovCisjZGVmaW5lIENGR19GTEFTSF9CQVNFCQkweGZjMDAwMDAwIC8qIHN0YXJ0IG9mIGZsYXNoIGJhbmtzCQkqLwogI2RlZmluZSBDRkdfTUFYX0ZMQVNIX0JBTktTCTQJICAgLyogbWF4IG51bWJlciBvZiBtZW1vcnkgYmFua3MJKi8KLSNkZWZpbmUgQ0ZHX0ZMQVNIX0lOQ1JFTUVOVCAgICAgMHgwMTAwMDAwMCAvKiBzaXplIG9mICBmbGFzaCBiYW5rICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgQ0ZHX01BWF9GTEFTSF9TRUNUCTEyOAkgICAvKiBtYXggbnVtYmVyIG9mIHNlY3RvcnMgb24gb25lIGNoaXAJKi8KLSNkZWZpbmUgQ0ZHX0ZMQVNIX0JBTktTX0xJU1QgIHsgQ0ZHX0ZMQVNIX0JBU0UsICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZHX0ZMQVNIX0JBU0UgKyAxKkNGR19GTEFTSF9JTkNSRU1FTlQsICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZHX0ZMQVNIX0JBU0UgKyAyKkNGR19GTEFTSF9JTkNSRU1FTlQsICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZHX0ZMQVNIX0JBU0UgKyAzKkNGR19GTEFTSF9JTkNSRU1FTlQgfQotI2RlZmluZSBDRkdfRkxBU0hfRU1QVFlfSU5GTyAgICAxICAgICAgICAgIC8qIHNob3cgaWYgYmFuayBpcyBlbXB0eSAgICAgICAgICAgICAqLworI2RlZmluZSBDRkdfRkxBU0hfSU5DUkVNRU5UCTB4MDEwMDAwMDAgLyogc2l6ZSBvZiAgZmxhc2ggYmFuawkJKi8KKyNkZWZpbmUgQ0ZHX01BWF9GTEFTSF9TRUNUCTEyOAkgICAvKiBtYXggbnVtYmVyIG9mIHNlY3RvcnMgb24gb25lIGNoaXAgKi8KKyNkZWZpbmUgQ0ZHX0ZMQVNIX0JBTktTX0xJU1QgIHsgQ0ZHX0ZMQVNIX0JBU0UsCQkJCSAgIFwKKwkJCQlDRkdfRkxBU0hfQkFTRSArIDEqQ0ZHX0ZMQVNIX0lOQ1JFTUVOVCwJICAgXAorCQkJCUNGR19GTEFTSF9CQVNFICsgMipDRkdfRkxBU0hfSU5DUkVNRU5ULAkgICBcCisJCQkJQ0ZHX0ZMQVNIX0JBU0UgKyAzKkNGR19GTEFTSF9JTkNSRU1FTlQgfQorI2RlZmluZSBDRkdfRkxBU0hfRU1QVFlfSU5GTwkxCSAgIC8qIHNob3cgaWYgYmFuayBpcyBlbXB0eQkJKi8KIAogLyogYXJlYXMgdG8gbWFwIGRpZmZlcmVudCB0aGluZ3Mgd2l0aCB0aGUgR1QgaW4gcGh5c2ljYWwgc3BhY2UgKi8KICNkZWZpbmUgQ0ZHX0RSQU1fQkFOS1MJCTQKQEAgLTMwOCwyMCArMzA4LDIwIEBACiAvKiBQZXJpcGhlcmFsIERldmljZSBzZWN0aW9uICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyogV2UgaGF2ZSBvbiB0aGUgY3BjaTc1MCBCb2FyZCA6ICAgICAgICAgICAgICAgICAgICAgICovCi0vKiBHVC1DaGlwc2V0IFJlZ2lzdGVyIEFyZWEgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qIEdULUNoaXBzZXQgaW50ZXJuYWwgU1JBTSAyNTZrICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogU1JBTSBvbiBleHRlcm5hbCBkZXZpY2UgbW9kdWxlICAgICAgICAgICAgICAgICAgICAgICovCi0vKiBSZWFsIHRpbWUgY2xvY2sgb24gZXh0ZXJuYWwgZGV2aWNlIG1vZHVsZSAgICAgICAgICAgKi8KLS8qIGRvYmJsZSBVQVJUIG9uIGV4dGVybmFsIGRldmljZSBtb2R1bGUgICAgICAgICAgICAgICAqLwotLyogRGF0YSBmbGFzaCBvbiBleHRlcm5hbCBkZXZpY2UgbW9kdWxlICAgICAgICAgICAgICAgICovCi0vKiBCb290IGZsYXNoIG9uIGV4dGVybmFsIGRldmljZSBtb2R1bGUgICAgICAgICAgICAgICAgKi8KKy8qIFdlIGhhdmUgb24gdGhlIGNwY2k3NTAgQm9hcmQgOgkJICAgICAgICovCisvKiBHVC1DaGlwc2V0IFJlZ2lzdGVyIEFyZWEJCQkgICAgICAgKi8KKy8qIEdULUNoaXBzZXQgaW50ZXJuYWwgU1JBTSAyNTZrCQkgICAgICAgKi8KKy8qIFNSQU0gb24gZXh0ZXJuYWwgZGV2aWNlIG1vZHVsZQkJICAgICAgICovCisvKiBSZWFsIHRpbWUgY2xvY2sgb24gZXh0ZXJuYWwgZGV2aWNlIG1vZHVsZQkgICAgICAgKi8KKy8qIGRvYmJsZSBVQVJUIG9uIGV4dGVybmFsIGRldmljZSBtb2R1bGUJICAgICAgICovCisvKiBEYXRhIGZsYXNoIG9uIGV4dGVybmFsIGRldmljZSBtb2R1bGUJCSAgICAgICAqLworLyogQm9vdCBmbGFzaCBvbiBleHRlcm5hbCBkZXZpY2UgbW9kdWxlCQkgICAgICAgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogI2RlZmluZSBDRkdfREZMX0dUX1JFR1MJCTB4MTQwMDAwMDAJCQkJLyogYm9vdCB0aW1lIEdUX1JFR1MgKi8KLSNkZWZpbmUgIENGR19DUENJNzUwX1JFU0VUX0FERFIJMHgxNDAwMDAwMAkJCQkvKiBBZnRlciBwb3dlciBvbiBSZXNldCB0aGUgQ1BDSTc1MCBpcyBoZXJlICovCisjZGVmaW5lCSBDRkdfQ1BDSTc1MF9SRVNFVF9BRERSIDB4MTQwMDAwMDAJCQkJLyogQWZ0ZXIgcG93ZXIgb24gUmVzZXQgdGhlIENQQ0k3NTAgaXMgaGVyZSAqLwogCi0jdW5kZWYgCU1BUlZFTF9TVEFOREFSRF9DRkcKLSNpZm5kZWYgCU1BUlZFTF9TVEFOREFSRF9DRkcKKyN1bmRlZglNQVJWRUxfU1RBTkRBUkRfQ0ZHCisjaWZuZGVmCQlNQVJWRUxfU1RBTkRBUkRfQ0ZHCiAvKisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysqLwogI2RlZmluZSBDRkdfR1RfUkVHUwkJMHhmMTAwMDAwMAkJCQkvKiBHVCBSZWdpc3RlcnMgd2lsbCBiZSBtYXBwZWQgaGVyZSAqLwogLyojZGVmaW5lIENGR19ERVZfQkFTRQkJMHhmYzAwMDAwMCovCQkJCS8qIEdUIERldmljZXMgQ1Mgc3RhcnQgaGVyZSAqLwpAQCAtMzMzLDExICszMzMsMTEgQEAKICNkZWZpbmUgQ0ZHX0RFVjJfU1BBQ0UJCTB4ZmUwMDAwMDAJCQkJLyogREVWX0NTMiBmbGFzaCAzICAgICAqLwogI2RlZmluZSBDRkdfREVWM19TUEFDRQkJMHhmMDAwMDAwMAkJCQkvKiBERVZfQ1MzIG52cmFtL2NhbiAgICovCiAKLSNkZWZpbmUgQ0ZHX0JPT1RfU0laRQkJXzE2TSAJCQkJCS8qIGNwY2k3NTAgZmxhc2ggMCAgICAgKi8KLSNkZWZpbmUgQ0ZHX0RFVjBfU0laRQkJXzE2TSAJCQkJCS8qIGNwY2k3NTAgZmxhc2ggMSAgICAgKi8KLSNkZWZpbmUgQ0ZHX0RFVjFfU0laRQkJXzE2TSAJCQkJCS8qIGNwY2k3NTAgZmxhc2ggMiAgICAgKi8KLSNkZWZpbmUgQ0ZHX0RFVjJfU0laRQkJXzE2TSAJCQkJCS8qIGNwY2k3NTAgZmxhc2ggMyAgICAgKi8KLSNkZWZpbmUgQ0ZHX0RFVjNfU0laRQkJXzE2TSAJCQkJCS8qIGNwY2k3NTAgbnZyYW0vY2FuICAgKi8KKyNkZWZpbmUgQ0ZHX0JPT1RfU0laRQkJXzE2TQkJCQkJLyogY3BjaTc1MCBmbGFzaCAwICAgICAqLworI2RlZmluZSBDRkdfREVWMF9TSVpFCQlfMTZNCQkJCQkvKiBjcGNpNzUwIGZsYXNoIDEgICAgICovCisjZGVmaW5lIENGR19ERVYxX1NJWkUJCV8xNk0JCQkJCS8qIGNwY2k3NTAgZmxhc2ggMiAgICAgKi8KKyNkZWZpbmUgQ0ZHX0RFVjJfU0laRQkJXzE2TQkJCQkJLyogY3BjaTc1MCBmbGFzaCAzICAgICAqLworI2RlZmluZSBDRkdfREVWM19TSVpFCQlfMTZNCQkJCQkvKiBjcGNpNzUwIG52cmFtL2NhbiAgICovCiAKIC8qKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyovCiAjZW5kaWYKQEAgLTM0NiwyMiArMzQ2LDIyIEBACiAjZGVmaW5lIENGR19ERVYwX1BBUgkJMHg4RkRGRkZGRgkJCQkvKiAxNiBiaXQgZmxhc2ggKi8KICNkZWZpbmUgQ0ZHX0RFVjFfUEFSCQkweDhGREZGRkZGCQkJCS8qIDE2IGJpdCBmbGFzaCAqLwogI2RlZmluZSBDRkdfREVWMl9QQVIJCTB4OEZERkZGRkYJCQkJLyogMTYgYml0IGZsYXNoICovCi0jZGVmaW5lIENGR19ERVYzX1BBUgkJMHg4RkNGRkZGRgkJCQkvKiBudnJhbS9jYW4gICAgKi8KKyNkZWZpbmUgQ0ZHX0RFVjNfUEFSCQkweDhGQ0ZGRkZGCQkJCS8qIG52cmFtL2NhbgkqLwogI2RlZmluZSBDRkdfQk9PVF9QQVIJCTB4OEZERkZGRkYJCQkJLyogMTYgYml0IGZsYXNoICovCiAKLQkvKiAgIGMgICAgNCAgICBhICAgICAgOCAgICAgMiAgICAgNCAgICAxICAgICAgYwkJKi8KLQkvKiAzMyAyMnwyMjIyfDIyIDIyfDExMSAxfDExIDExfDEgMSAgfCAgICB8CQkqLworCS8qICAgYwkgIDQgICAgYSAgICAgIDgJICAgIDIJICA0ICAgIDEgICAgICBjCQkqLworCS8qIDMzIDIyfDIyMjJ8MjIgMjJ8MTExIDF8MTEgMTF8MSAxICB8CSAgfAkJKi8KIAkvKiAxMCA5OHw3NjU0fDMyIDEwfDk4NyA2fDU0IDMyfDEgMDk4fDcgNjU0fDMgMjEwCSovCiAJLyogMTF8MDB8MDEwMHwxMCAxMHwxMDB8MCAwMHwxMCAwfDEwMCAwfDAwMSAxfDEwMAkqLwogCS8qICAzfCAwfC4uLi4gLi58IDJ8IDQgfCAgMCB8ICA0IHwgIDggIHwgIDMgIHwgNAkqLwogCiAKIC8qIE1QUCBDb250cm9sIE1WNjQzNjAgQXBwZW5kaXggUCBQLiA2MzIqLwotI2RlZmluZSBDRkdfTVBQX0NPTlRST0xfMAkweDAwMDAyMjIyCS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBDRkdfTVBQX0NPTlRST0xfMQkweDExMTEwMDAwCS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBDRkdfTVBQX0NPTlRST0xfMgkweDExMTExMTExCS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBDRkdfTVBQX0NPTlRST0xfMwkweDAwMDAxMTExICAgICAJLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAjZGVmaW5lIENGR19TRVJJQUxfUE9SVF9NVVgJMHgwMDAwMDEwMiovCS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBDRkdfTVBQX0NPTlRST0xfMAkweDAwMDAyMjIyCS8qCQkJCSAgICAgKi8KKyNkZWZpbmUgQ0ZHX01QUF9DT05UUk9MXzEJMHgxMTExMDAwMAkvKgkJCQkgICAgICovCisjZGVmaW5lIENGR19NUFBfQ09OVFJPTF8yCTB4MTExMTExMTEJLyoJCQkJICAgICAqLworI2RlZmluZSBDRkdfTVBQX0NPTlRST0xfMwkweDAwMDAxMTExCS8qCQkJCSAgICAgKi8KKy8qICNkZWZpbmUgQ0ZHX1NFUklBTF9QT1JUX01VWAkweDAwMDAwMTAyKi8JLyoJCQkJICAgICAqLwogCiAKICNkZWZpbmUgQ0ZHX0dQUF9MRVZFTF9DT05UUk9MCTB4ZmZmZmZmZmYJLyogMTExMSAxMTExIDExMTEgMTExMSAxMTExIDExMTEgMTExMSAxMTExKi8KQEAgLTM3OCwxMiArMzc4LDEyIEBACiAJCQkJICAgRUNDIGRpc2FibGUKIAkJCQkgICBub24gcmVnaXN0ZXJlZCBEUkFNICovCiAJCQkJLyogMzE6MjYgICAyNToyMiAgMjE6MjAgMTkgMTggMTcgMTYgKi8KLQkJCQkvKiAxMDAwMDEgMDAwMCAgIDAxMCAgIDAgICAwICAgMCAgMCAqLworCQkJCS8qIDEwMDAwMSAwMDAwCSAwMTAgICAwICAgMCAgIDAgIDAgKi8KIAkJCQkvKiByZWZyZXNoX2NvdW50PTB4NDAwCiAJCQkJICAgcGhpc2ljYWwgaW50ZXJsZWF2aW5nIGRpc2FibGUKIAkJCQkgICB2aXJ0dWFsIGludGVybGVhdmluZyBlbmFibGUgKi8KIAkJCQkvKiAxNSAxNCAxMzowICovCi0JCQkJLyogMCAgMSAgMHg0MDAgKi8KKwkJCQkvKiAwICAxCSAweDQwMCAqLwogIyBkZWZpbmUgQ0ZHX1NEUkFNX0NPTkZJRwkweDU4MjAwNDAwCS8qIDB4MTQwMCAgY29waWVkIGZyb20gRGluazMyIGJ6dy4gVnhXb3JrcyovCiAKIApAQCAtMzkyLDE0ICszOTIsMTQgQEAKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogCi0jZGVmaW5lIFBDSV9IT1NUX0FEQVBURVIgMCAgICAgICAgICAgICAgLyogY29uZmlndXJlIGFyIHBjaSBhZGFwdGVyICAgICAqLwotI2RlZmluZSBQQ0lfSE9TVF9GT1JDRSAgMSAgICAgICAgICAgICAgIC8qIGNvbmZpZ3VyZSBhcyBwY2kgaG9zdCAgICAgICAgKi8KLSNkZWZpbmUgUENJX0hPU1RfQVVUTyAgIDIgICAgICAgICAgICAgICAvKiBkZXRlY3RlZCB2aWEgYXJiaXRlciBlbmFibGUgICovCisjZGVmaW5lIFBDSV9IT1NUX0FEQVBURVIgMAkJLyogY29uZmlndXJlIGFyIHBjaSBhZGFwdGVyCSovCisjZGVmaW5lIFBDSV9IT1NUX0ZPUkNFCTEJCS8qIGNvbmZpZ3VyZSBhcyBwY2kgaG9zdAkqLworI2RlZmluZSBQQ0lfSE9TVF9BVVRPCTIJCS8qIGRldGVjdGVkIHZpYSBhcmJpdGVyIGVuYWJsZQkqLwogCi0jZGVmaW5lIENPTkZJR19QQ0kgICAgICAgICAgICAgICAgICAgICAgLyogaW5jbHVkZSBwY2kgc3VwcG9ydCAgICAgICAgICAqLwotI2RlZmluZSBDT05GSUdfUENJX0hPU1QgUENJX0hPU1RfRk9SQ0UgIC8qIHNlbGVjdCBwY2kgaG9zdCBmdW5jdGlvbiAgICAgKi8KLSNkZWZpbmUgQ09ORklHX1BDSV9QTlAgICAgICAgICAgICAgICAgICAvKiBkbyBwY2kgcGx1Zy1hbmQtcGxheSAgICAgICAgICovCi0jZGVmaW5lIENPTkZJR19QQ0lfU0NBTl9TSE9XICAgICAgICAgICAgLyogc2hvdyBkZXZpY2VzIG9uIGJ1cyAgICAgICAgICAqLworI2RlZmluZSBDT05GSUdfUENJCQkJLyogaW5jbHVkZSBwY2kgc3VwcG9ydAkJKi8KKyNkZWZpbmUgQ09ORklHX1BDSV9IT1NUIFBDSV9IT1NUX0ZPUkNFCS8qIHNlbGVjdCBwY2kgaG9zdCBmdW5jdGlvbgkqLworI2RlZmluZSBDT05GSUdfUENJX1BOUAkJCS8qIGRvIHBjaSBwbHVnLWFuZC1wbGF5CQkqLworI2RlZmluZSBDT05GSUdfUENJX1NDQU5fU0hPVwkJLyogc2hvdyBkZXZpY2VzIG9uIGJ1cwkJKi8KIAogLyogUENJIE1FTU9SWSBNQVAgc2VjdGlvbiAqLwogI2RlZmluZSBDRkdfUENJMF9NRU1fQkFTRQkweDgwMDAwMDAwCkBAIC00MzMsMjEgKzQzMywyMSBAQAogICogSURFL0FUQSBzdHVmZgogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCi0jdW5kZWYgIENPTkZJR19JREVfOHh4X0RJUkVDVCAgICAgICAgICAgLyogbm8gcGNtY2lhIGludGVyZmFjZSByZXF1aXJlZCAqLwotI3VuZGVmICBDT05GSUdfSURFX0xFRCAgICAgICAgICAgICAgICAgIC8qIG5vIGxlZCBmb3IgaWRlIHN1cHBvcnRlZCAgICAgKi8KLSNkZWZpbmUgQ09ORklHX0lERV9SRVNFVCAgICAgICAgICAgICAgICAvKiBubyByZXNldCBmb3IgaWRlIHN1cHBvcnRlZCAgICovCi0jZGVmaW5lIENPTkZJR19JREVfUFJFSU5JVCAgICAgICAgICAgICAgLyogY2hlY2sgZm9yIHVuaXRzICAgICAgICAgICAgICAqLworI3VuZGVmCUNPTkZJR19JREVfOHh4X0RJUkVDVAkJLyogbm8gcGNtY2lhIGludGVyZmFjZSByZXF1aXJlZCAqLworI3VuZGVmCUNPTkZJR19JREVfTEVECQkJLyogbm8gbGVkIGZvciBpZGUgc3VwcG9ydGVkCSovCisjZGVmaW5lIENPTkZJR19JREVfUkVTRVQJCS8qIG5vIHJlc2V0IGZvciBpZGUgc3VwcG9ydGVkCSovCisjZGVmaW5lIENPTkZJR19JREVfUFJFSU5JVAkJLyogY2hlY2sgZm9yIHVuaXRzCQkqLwogCi0jZGVmaW5lIENGR19JREVfTUFYQlVTICAgICAgICAgIDIgICAgICAgICAgICAgICAvKiBtYXguIDEgSURFIGJ1c3NlcyAgICAqLwotI2RlZmluZSBDRkdfSURFX01BWERFVklDRSAgICAgICAoQ0ZHX0lERV9NQVhCVVMqMikgLyogbWF4LiAxIGRyaXZlcyBwZXIgSURFIGJ1cyAqLworI2RlZmluZSBDRkdfSURFX01BWEJVUwkJMgkJLyogbWF4LiAxIElERSBidXNzZXMJKi8KKyNkZWZpbmUgQ0ZHX0lERV9NQVhERVZJQ0UJKENGR19JREVfTUFYQlVTKjIpIC8qIG1heC4gMSBkcml2ZXMgcGVyIElERSBidXMgKi8KIAotI2RlZmluZSBDRkdfQVRBX0JBU0VfQUREUiAgICAgICAwCi0jZGVmaW5lIENGR19BVEFfSURFMF9PRkZTRVQgICAgIDAKLSNkZWZpbmUgQ0ZHX0FUQV9JREUxX09GRlNFVCAgICAgMAorI2RlZmluZSBDRkdfQVRBX0JBU0VfQUREUgkwCisjZGVmaW5lIENGR19BVEFfSURFMF9PRkZTRVQJMAorI2RlZmluZSBDRkdfQVRBX0lERTFfT0ZGU0VUCTAKIAotI2RlZmluZSBDRkdfQVRBX0RBVEFfT0ZGU0VUICAgICAweDAwMDAgIC8qIE9mZnNldCBmb3IgZGF0YSBJL08gICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBDRkdfQVRBX1JFR19PRkZTRVQgICAgICAweDAwMDAgIC8qIE9mZnNldCBmb3Igbm9ybWFsIHJlZ2lzdGVyIGFjY2Vzc2VzICAqLwotI2RlZmluZSBDRkdfQVRBX0FMVF9PRkZTRVQgICAgICAweDAwMDAgIC8qIE9mZnNldCBmb3IgYWx0ZXJuYXRlIHJlZ2lzdGVycyAgICAgICAqLworI2RlZmluZSBDRkdfQVRBX0RBVEFfT0ZGU0VUCTB4MDAwMAkvKiBPZmZzZXQgZm9yIGRhdGEgSS9PCQkJKi8KKyNkZWZpbmUgQ0ZHX0FUQV9SRUdfT0ZGU0VUCTB4MDAwMAkvKiBPZmZzZXQgZm9yIG5vcm1hbCByZWdpc3RlciBhY2Nlc3NlcwkqLworI2RlZmluZSBDRkdfQVRBX0FMVF9PRkZTRVQJMHgwMDAwCS8qIE9mZnNldCBmb3IgYWx0ZXJuYXRlIHJlZ2lzdGVycwkqLwogCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTUxLDcgKzU1MSw3IEBACiAgKiBoYXZlIHRvIGJlIGluIHRoZSBmaXJzdCA4IE1CIG9mIG1lbW9yeSwgc2luY2UgdGhpcyBpcwogICogdGhlIG1heGltdW0gbWFwcGVkIGJ5IHRoZSBMaW51eCBrZXJuZWwgZHVyaW5nIGluaXRpYWxpemF0aW9uLgogICovCi0jZGVmaW5lCUNGR19CT09UTUFQU1oJCSg4PDwyMCkJLyogSW5pdGlhbCBNZW1vcnkgbWFwIGZvciBMaW51eCAqLworI2RlZmluZSBDRkdfQk9PVE1BUFNaCQkoODw8MjApIC8qIEluaXRpYWwgTWVtb3J5IG1hcCBmb3IgTGludXggKi8KIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogRkxBU0ggb3JnYW5pemF0aW9uCkBAIC01NjMsMjMgKzU2MywyMyBAQAogI2RlZmluZSBDRkdfRkxBU0hfTE9DS19UT1VUCTUwMAkvKiBUaW1lb3V0IGZvciBGbGFzaCBMb2NrIChpbiBtcykgKi8KIAogI2lmIDAKLSNkZWZpbmUJQ0ZHX0VOVl9JU19JTl9GTEFTSAkwCi0jZGVmaW5lCUNGR19FTlZfU0laRQkJMHgxMDAwCS8qIFRvdGFsIFNpemUgb2YgRW52aXJvbm1lbnQgU2VjdG9yICovCisjZGVmaW5lIENGR19FTlZfSVNfSU5fRkxBU0gJMAorI2RlZmluZSBDRkdfRU5WX1NJWkUJCTB4MTAwMAkvKiBUb3RhbCBTaXplIG9mIEVudmlyb25tZW50IFNlY3RvciAqLwogI2RlZmluZSBDRkdfRU5WX1NFQ1RfU0laRQkweDEwMDAwCiAjZGVmaW5lIENGR19FTlZfQUREUgkJMHhGRkY3ODAwMCAvKiBNYXJ2ZWxsIDgtQml0IEJvb3RmbGFzaCBsYXN0IHNlY3RvciAqLwotLyogI2RlZmluZSBDRkdfRU5WX0FERFIgICAgKENGR19GTEFTSF9CQVNFK0NGR19NT05JVE9SX0xFTi1DRkdfRU5WX1NFQ1RfU0laRSkgKi8KKy8qICNkZWZpbmUgQ0ZHX0VOVl9BRERSCSAgIChDRkdfRkxBU0hfQkFTRStDRkdfTU9OSVRPUl9MRU4tQ0ZHX0VOVl9TRUNUX1NJWkUpICovCiAjZW5kaWYKIAogI2RlZmluZSBDRkdfRU5WX0lTX0lOX0VFUFJPTQkxCS8qIHVzZSBFRVBST00gZm9yIGVudmlyb25tZW50IHZhcnMgKi8KICNkZWZpbmUgQ0ZHX0VFUFJPTV9QQUdFX1dSSVRFX0JJVFMgNQogI2RlZmluZSBDRkdfRUVQUk9NX1BBR0VfV1JJVEVfREVMQVlfTVMgMjAKLSNkZWZpbmUgQ0ZHX0kyQ19FRVBST01fQUREUiAgICAgMHgwNTAKKyNkZWZpbmUgQ0ZHX0kyQ19FRVBST01fQUREUgkweDA1MAogI2RlZmluZSBDRkdfRU5WX09GRlNFVAkJMHgyMDAJLyogZW52aXJvbm1lbnQgc3RhcnRzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIEVFUFJPTSAqLwogI2RlZmluZSBDRkdfRU5WX1NJWkUJCTB4NjAwCS8qIDIwNDggYnl0ZXMgbWF5IGJlIHVzZWQgZm9yIGVudiB2YXJzKi8KIAogI2RlZmluZSBDRkdfTlZSQU1fQkFTRV9BRERSCTB4ZjAwMDAwMDAJCS8qIE5WUkFNIGJhc2UgYWRkcmVzcwkqLwogI2RlZmluZSBDRkdfTlZSQU1fU0laRQkJKDMyKjEwMjQpCQkvKiBOVlJBTSBzaXplCQkqLwotI2RlZmluZSBDRkdfVlhXT1JLU19NQUNfUFRSICAgICAoQ0ZHX05WUkFNX0JBU0VfQUREUitDRkdfTlZSQU1fU0laRS0weDQwKQorI2RlZmluZSBDRkdfVlhXT1JLU19NQUNfUFRSCShDRkdfTlZSQU1fQkFTRV9BRERSK0NGR19OVlJBTV9TSVpFLTB4NDApCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIENhY2hlIENvbmZpZ3VyYXRpb24KQEAgLTYwMSw3ICs2MDEsNyBAQAogI2lmIGRlZmluZWQgKENPTkZJR183NTBDWCkgfHwgZGVmaW5lZCAoQ09ORklHXzc1MEZYKQogI2RlZmluZSBMMl9JTklUIDAKICNlbHNlCi0jZGVmaW5lIEwyX0lOSVQgIAkoTDJDUl9MMlNJWl8yTSB8IEwyQ1JfTDJDTEtfMyB8IEwyQ1JfTDJSQU1fQlVSU1QgfCBcCisjZGVmaW5lIEwyX0lOSVQJCShMMkNSX0wyU0laXzJNIHwgTDJDUl9MMkNMS18zIHwgTDJDUl9MMlJBTV9CVVJTVCB8IFwKIAkJCUwyQ1JfTDJPSF81IHwgTDJDUl9MMkNUTCB8IEwyQ1JfTDJXVCkKICNlbmRpZgogCkBAIC02MTIsOSArNjEyLDkgQEAKICAqCiAgKiBCb290IEZsYWdzCiAgKi8KLSNkZWZpbmUJQk9PVEZMQUdfQ09MRAkweDAxCQkvKiBOb3JtYWwgUG93ZXItT246IEJvb3QgZnJvbSBGTEFTSCAqLworI2RlZmluZSBCT09URkxBR19DT0xECTB4MDEJCS8qIE5vcm1hbCBQb3dlci1PbjogQm9vdCBmcm9tIEZMQVNIICovCiAjZGVmaW5lIEJPT1RGTEFHX1dBUk0JMHgwMgkJLyogU29mdHdhcmUgcmVib290CQkgICAgKi8KIAotI2RlZmluZSBDRkdfQk9BUkRfQVNNX0lOSVQgICAgICAxCisjZGVmaW5lIENGR19CT0FSRF9BU01fSU5JVAkxCiAKICNlbmRpZgkvKiBfX0NPTkZJR19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvUFBDaGFtZWxlb25FVkIuaCBiL2luY2x1ZGUvY29uZmlncy9QUENoYW1lbGVvbkVWQi5oCmluZGV4IDg4ZTZkYjQuLmUxMTU1ZTIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9QUENoYW1lbGVvbkVWQi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9QUENoYW1lbGVvbkVWQi5oCkBAIC0zMDAsOCArMzAwLDYgQEAKICNkZWZpbmUgTkFORF9DaGlwSURfVU5LTk9XTgkweDAwCiAjZGVmaW5lIE5BTkRfTUFYX0ZMT09SUyAxCiAKLQotCiAjaWZkZWYgTkFORF9OT19SQgogLyogY29uc3RhbnQgZGVsYXkgKHNlZSBhbHNvIHRSIGluIHRoZSBkYXRhc2hlZXQpICovCiAjZGVmaW5lIE5BTkRfV0FJVF9SRUFEWShuYW5kKSBkbyB7IFwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9tY2MyMDAuaCBiL2luY2x1ZGUvY29uZmlncy9tY2MyMDAuaAppbmRleCBhNDhjMjFiLi5kNGRlZTNiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvbWNjMjAwLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL21jYzIwMC5oCkBAIC0yMjksOSArMjI5LDggQEAKIC8qCiAgKiBHUElPIGNvbmZpZ3VyYXRpb24KICAqLwotLy8jIyNDSEQ6IE1TQiA9IDEgLT4gNjRNQjogZnVua3Rpb25pZXJ0IG5pY2h0OiBFUlJBVEEgLSBCVUc/Ci0vLyMjI0NIRDogMHgxMDAwMDAwNCA9IDMyTUIgU0RSQU0KLS8vIyMjQ0hEOiAweDkwMDAwMDA0ID0gNjRNQiBTRFJBTQorLyogMHgxMDAwMDAwNCA9IDMyTUIgU0RSQU0gKi8KKy8qIDB4OTAwMDAwMDQgPSA2NE1CIFNEUkFNICovCiAjZGVmaW5lIENGR19HUFNfUE9SVF9DT05GSUcJMHgxMDAwMDAwNAogCiAvKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tdGQvbmFuZC5oIGIvaW5jbHVkZS9saW51eC9tdGQvbmFuZC5oCmluZGV4IGMxMDVlY2MuLmE1MjI3MTggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbXRkL25hbmQuaAorKysgYi9pbmNsdWRlL2xpbnV4L210ZC9uYW5kLmgKQEAgLTY1LDcgKzY1LDYgQEAKIGV4dGVybiBpbnQgbmFuZF9yZWFkX3JhdyAoc3RydWN0IG10ZF9pbmZvICptdGQsIHVpbnQ4X3QgKmJ1ZiwgbG9mZl90IGZyb20sIHNpemVfdCBsZW4sIHNpemVfdCBvb2JsZW4pOwogCiAKLQogLyogVGhpcyBjb25zdGFudCBkZWNsYXJlcyB0aGUgbWF4LiBvb2JzaXplIC8gcGFnZSwgd2hpY2gKICAqIGlzIHN1cHBvcnRlZCBub3cuIElmIHlvdSBhZGQgYSBjaGlwIHdpdGggYmlnZ2VyIG9vYnNpemUvcGFnZQogICogYWRqdXN0IHRoaXMgYWNjb3JkaW5nbHkuCg==