ZGlmZiAtLWdpdCBhL01BS0VBTEwgYi9NQUtFQUxMCmluZGV4IDQ3ZjIwMzAuLjIzNDAyYTIgMTAwNzU1Ci0tLSBhL01BS0VBTEwKKysrIGIvTUFLRUFMTApAQCAtNzYsMjEgKzc2LDIxIEBACiAKIExJU1RfNHh4PSIJXAogCWFjYWRpYQkJQURDSU9QCQlhbHByCQlBUDEwMDAJCVwKLQlBUjQwNQkJQVNINDA1CQliYW1ib28JCWJ1YmluZ2EJCVwKLQlDQU5CVAkJQ01TNzAwCQlDUENJMkRQCQlDUENJNDA1CQlcCi0JQ1BDSTQwNTIJQ1BDSTQwNUFCCUNQQ0k0MDVEVAlDUENJNDQwCQlcCi0JQ1BDSUlTRVI0CUNSQVlMMQkJY3NiMjcyCQljc2I0NzIJCVwKLQlEQVNBX1NJTQlEUDQwNQkJRFU0MDUJCWVib255CQlcCi0JRVJJQwkJRVhCSVRHRU4JRzIwMDAJCUhINDA1CQlcCi0JSFVCNDA1CQlKU0UJCUtBUkVGCQlrYXRtYWkJCVwKLQlsdWFuCQlNRVRST0JPWAlNSVA0MDUJCU1JUDQwNVQJCVwKLQlNTDIJCW1sMzAwCQlvY290ZWEJCU9DUlRDCQlcCi0JT1JTRwkJcDNwNDQwCQlQQ0k0MDUJCXBjczQ0MGVwCVwKLQlQSVA0MDUJCVBMVTQwNQkJUE1DNDA1CQlQUENoYW1lbGVvbkVWQglcCi0Jc2JjNDA1CQlzYzMJCXNlcXVvaWEJCXNlcXVvaWFfbmFuZAlcCi0JdGFpc2hhbgkJVk9INDA1CQlWT000MDUJCVc3T0xNQwkJXAotCVc3T0xNRwkJd2FsbnV0CQlXVUg0MDUJCVhQRURJVEUxSwlcCi0JeWVsbG93c3RvbmUJeW9zZW1pdGUJeXVjY2EJCQkJXAorCUFSNDA1CQlBU0g0MDUJCWJhbWJvbwkJYmFtYm9vX25hbmQJXAorCWJ1YmluZ2EJCUNBTkJUCQlDTVM3MDAJCUNQQ0kyRFAJCVwKKwlDUENJNDA1CQlDUENJNDA1MglDUENJNDA1QUIJQ1BDSTQwNURUCVwKKwlDUENJNDQwCQlDUENJSVNFUjQJQ1JBWUwxCQljc2IyNzIJCVwKKwljc2I0NzIJCURBU0FfU0lNCURQNDA1CQlEVTQwNQkJXAorCWVib255CQlFUklDCQlFWEJJVEdFTglHMjAwMAkJXAorCUhINDA1CQlIVUI0MDUJCUpTRQkJS0FSRUYJCVwKKwlrYXRtYWkJCWx1YW4JCU1FVFJPQk9YCU1JUDQwNQkJXAorCU1JUDQwNVQJCU1MMgkJbWwzMDAJCW9jb3RlYQkJXAorCU9DUlRDCQlPUlNHCQlwM3A0NDAJCVBDSTQwNQkJXAorCXBjczQ0MGVwCVBJUDQwNQkJUExVNDA1CQlQTUM0MDUJCVwKKwlQUENoYW1lbGVvbkVWQglzYmM0MDUJCXNjMwkJc2VxdW9pYQkJXAorCXNlcXVvaWFfbmFuZAl0YWlzaGFuCQlWT0g0MDUJCVZPTTQwNQkJXAorCVc3T0xNQwkJVzdPTE1HCQl3YWxudXQJCVdVSDQwNQkJXAorCVhQRURJVEUxSwl5ZWxsb3dzdG9uZQl5b3NlbWl0ZQl5dWNjYQkJXAogIgogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCmluZGV4IDhlNTUxZWIuLjk5ZjM4YWYgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlCisrKyBiL01ha2VmaWxlCkBAIC0xMDM1LDYgKzEwMzUsMTYgQEAKIGJhbWJvb19jb25maWc6CXVuY29uZmlnCiAJQCQoTUtDT05GSUcpICQoQDpfY29uZmlnPSkgcHBjIHBwYzR4eCBiYW1ib28gYW1jYwogCitiYW1ib29fbmFuZF9jb25maWc6CXVuY29uZmlnCisJQG1rZGlyIC1wICQob2JqKWluY2x1ZGUKKwlAbWtkaXIgLXAgJChvYmopbmFuZF9zcGwKKwlAbWtkaXIgLXAgJChvYmopYm9hcmQvYW1jYy9iYW1ib28KKwlAZWNobyAiI2RlZmluZSBDT05GSUdfTkFORF9VX0JPT1QiID4gJChvYmopaW5jbHVkZS9jb25maWcuaAorCUBlY2hvICJDb21waWxlIE5BTkQgYm9vdCBpbWFnZSBmb3IgYmFtYm9vIgorCUAkKE1LQ09ORklHKSAtYSBiYW1ib28gcHBjIHBwYzR4eCBiYW1ib28gYW1jYworCUBlY2hvICJURVhUX0JBU0UgPSAweDAxMDAwMDAwIiA+ICQob2JqKWJvYXJkL2FtY2MvYmFtYm9vL2NvbmZpZy50bXAKKwlAZWNobyAiQ09ORklHX05BTkRfVV9CT09UID0geSIgPj4gJChvYmopaW5jbHVkZS9jb25maWcubWsKKwogYnViaW5nYV9jb25maWc6CXVuY29uZmlnCiAJQCQoTUtDT05GSUcpICQoQDpfY29uZmlnPSkgcHBjIHBwYzR4eCBidWJpbmdhIGFtY2MKIApkaWZmIC0tZ2l0IGEvY3B1L3BwYzR4eC9zdGFydC5TIGIvY3B1L3BwYzR4eC9zdGFydC5TCmluZGV4IDNiMTU4NmMuLmZlMTRlY2QgMTAwNjQ0Ci0tLSBhL2NwdS9wcGM0eHgvc3RhcnQuUworKysgYi9jcHUvcHBjNHh4L3N0YXJ0LlMKQEAgLTExMCw2ICsxMTAsMTMgQEAKICMgZW5kaWYKICNlbmRpZiAvKiBDRkdfSU5JVF9EQ0FDSEVfQ1MgKi8KIAorI2RlZmluZSBmdW5jdGlvbl9wcm9sb2coZnVuY19uYW1lKSAgICAgIC50ZXh0OyBcCisJCQkJCS5hbGlnbiAyOyBcCisJCQkJCS5nbG9ibCBmdW5jX25hbWU7IFwKKwkJCQkJZnVuY19uYW1lOgorI2RlZmluZSBmdW5jdGlvbl9lcGlsb2coZnVuY19uYW1lKSAgICAgIC50eXBlIGZ1bmNfbmFtZSxAZnVuY3Rpb247IFwKKwkJCQkJLnNpemUgZnVuY19uYW1lLC4tZnVuY19uYW1lCisKIC8qIFdlIGRvbid0IHdhbnQgdGhlICBNTVUgeWV0LgogKi8KICN1bmRlZglNU1JfS0VSTkVMCkBAIC0zODgsOCArMzk1LDkgQEAKIDI6CiAKICNpZiBkZWZpbmVkKENPTkZJR19OQU5EX1NQTCkKKyNpZiBkZWZpbmVkKENPTkZJR180NDBFUFgpIHx8IGRlZmluZWQoQ09ORklHXzQ0MEdSWCkKIAkvKgotCSAqIEVuYWJsZSBpbnRlcm5hbCBTUkFNCisJICogRW5hYmxlIGludGVybmFsIFNSQU0gKG9ubHkgb24gNDQwRVB4L0dSeCwgNDQwRVAvR1IgaGF2ZSBubyBPQ00pCiAJICovCiAJbGlzCXIyLDB4N2ZmZgogCW9yaQlyMixyMiwweGZmZmYKQEAgLTM5OSw2ICs0MDcsNDUgQEAKIAltZmRjcglyMSxpc3JhbTBfcG1lZwogCWFuZAlyMSxyMSxyMgkJLyogRGlzYWJsZSBwd3IgbWdtdCAqLwogCW10ZGNyCWlzcmFtMF9wbWVnLHIxCisjZW5kaWYKKyNpZiBkZWZpbmVkKENPTkZJR180NDBFUCkKKwkvKgorCSAqIE9uIDQ0MEVQIHdpdGggbm8gaW50ZXJuYWwgU1JBTSwgd2Ugc2V0dXAgU0RSQU0gdmVyeSBlYXJseQorCSAqIGFuZCBjb3B5IHRoZSBOQU5EX1NQTCB0byBTRFJBTSBhbmQganVtcCB0byBpdAorCSAqLworCS8qIENsZWFyIERjYWNoZSB0byB1c2UgYXMgUkFNICovCisJYWRkaXMJcjMscjAsQ0ZHX0lOSVRfUkFNX0FERFJAaAorCW9yaQlyMyxyMyxDRkdfSU5JVF9SQU1fQUREUkBsCisJYWRkaXMJcjQscjAsQ0ZHX0lOSVRfUkFNX0VOREBoCisJb3JpCXI0LHI0LENGR19JTklUX1JBTV9FTkRAbAorCXJsd2lubS4gcjUscjQsMCwyNywzMQorCXJsd2lubQlyNSxyNCwyNyw1LDMxCisJYmVxCS4uZF9yYW4zCisJYWRkaQlyNSxyNSwweDAwMDEKKy4uZF9yYW4zOgorCW10Y3RyCXI1CisuLmRfYWczOgorCWRjYnoJcjAscjMKKwlhZGRpCXIzLHIzLDMyCisJYmRuegkuLmRfYWczCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwkvKiBTZXR1cCB0aGUgc3RhY2sgaW4gaW50ZXJuYWwgU1JBTSAqLworCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisJbGlzCXIxLENGR19JTklUX1JBTV9BRERSQGgKKwlvcmkJcjEscjEsQ0ZHX0lOSVRfU1BfT0ZGU0VUQGwKKwlsaQlyMCwwCisJc3R3dQlyMCwtNChyMSkKKwlzdHd1CXIwLC00KHIxKQkJLyogVGVybWluYXRlIGNhbGwgY2hhaW4gKi8KKworCXN0d3UJcjEsLTgocjEpCQkvKiBTYXZlIGJhY2sgY2hhaW4gYW5kIG1vdmUgU1AgKi8KKwlsaXMJcjAsUkVTRVRfVkVDVE9SQGgJLyogQWRkcmVzcyBvZiByZXNldCB2ZWN0b3IgKi8KKwlvcmkJcjAscjAsIFJFU0VUX1ZFQ1RPUkBsCisJc3R3dQlyMSwtOChyMSkJCS8qIFNhdmUgYmFjayBjaGFpbiBhbmQgbW92ZSBTUCAqLworCXN0dwlyMCwrMTIocjEpCQkvKiBTYXZlIHJldHVybiBhZGRyICh1bmRlcmZsb3cgdmVjdCkgKi8KKwlzeW5jCisJYmwJZWFybHlfc2RyYW1faW5pdAorCXN5bmMKKyNlbmRpZiAvKiBDT05GSUdfNDQwRVAgKi8KIAogCS8qCiAJICogQ29weSBTUEwgZnJvbSBjYWNoZSBpbnRvIGludGVybmFsIFNSQU0KQEAgLTQyOSw3ICs0NzYsNyBAQAogc3RhcnRfcmFtOgogCXN5bmMKIAlpc3luYwotI2VuZGlmCisjZW5kaWYgLyogQ09ORklHX05BTkRfU1BMICovCiAKIAlibAkzZgogCWIJX3N0YXJ0CkBAIC0xMTM3LDcgKzExODQsNiBAQAogCWx3eglyMSxHUFIxKHIxKQogCVNZTkMKIAlyZmNpCi0jZW5kaWYgLyogQ09ORklHX05BTkRfU1BMICovCiAKIC8qIENhY2hlIGZ1bmN0aW9ucy4KICovCkBAIC0xMjU1LDI0ICsxMzAxLDYgQEAKIAlibHIKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0vKiBGdW5jdGlvbjoJIGluOCAqLwotLyogRGVzY3JpcHRpb246CSBJbnB1dCA4IGJpdHMgKi8KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS5nbG9ibAlpbjgKLWluODoKLQlsYnoJcjMsMHgwMDAwKHIzKQotCWJscgotCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8qIEZ1bmN0aW9uOgkgb3V0OCAqLwotLyogRGVzY3JpcHRpb246CSBPdXRwdXQgOCBiaXRzICovCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkuZ2xvYmwJb3V0OAotb3V0ODoKLQlzdGIJcjQsMHgwMDAwKHIzKQotCWJscgotCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIC8qIEZ1bmN0aW9uOgkgb3V0MTYgKi8KIC8qIERlc2NyaXB0aW9uOgkgT3V0cHV0IDE2IGJpdHMgKi8KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtMTI5MSwxNSArMTMxOSw2IEBACiAJYmxyCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLyogRnVuY3Rpb246CSBvdXQzMiAqLwotLyogRGVzY3JpcHRpb246CSBPdXRwdXQgMzIgYml0cyAqLwotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLmdsb2JsCW91dDMyCi1vdXQzMjoKLQlzdHcJcjQsMHgwMDAwKHIzKQotCWJscgotCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIC8qIEZ1bmN0aW9uOgkgb3V0MzJyICovCiAvKiBEZXNjcmlwdGlvbjoJIEJ5dGUgcmV2ZXJzZSBhbmQgb3V0cHV0IDMyIGJpdHMgKi8KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtMTMyNywxNSArMTM0Niw2IEBACiAJYmxyCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLyogRnVuY3Rpb246CSBpbjMyICovCi0vKiBEZXNjcmlwdGlvbjoJIElucHV0IDMyIGJpdHMgKi8KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS5nbG9ibAlpbjMyCi1pbjMyOgotCWx3egkzLDB4MDAwMCgzKQotCWJscgotCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIC8qIEZ1bmN0aW9uOgkgaW4zMnIgKi8KIC8qIERlc2NyaXB0aW9uOgkgSW5wdXQgMzIgYml0cyBhbmQgYnl0ZSByZXZlcnNlICovCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTEzNzcsOSArMTM4Nyw2IEBACiAJc3luYwogCWJscgogCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0KLSNpZm5kZWYgQ09ORklHX05BTkRfU1BMCiAvKgogICogdm9pZCByZWxvY2F0ZV9jb2RlIChhZGRyX3NwLCBnZCwgYWRkcl9tb25pKQogICoKQEAgLTE2NDQsOCArMTY1MSw4OCBAQAogCXN0dwlyMCwgNChyNykKIAogCWJscgorCisjaWYgZGVmaW5lZChDT05GSUdfNDQwKQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBkY2J6X2FyZWEuCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisJZnVuY3Rpb25fcHJvbG9nKGRjYnpfYXJlYSkKKwlybHdpbm0uIHI1LHI0LDAsMjcsMzEKKwlybHdpbm0gIHI1LHI0LDI3LDUsMzEKKwliZXEgICAgIC4uZF9yYTIKKwlhZGRpICAgIHI1LHI1LDB4MDAwMQorLi5kX3JhMjptdGN0ciAgIHI1CisuLmRfYWcyOmRjYnogICAgcjAscjMKKwlhZGRpICAgIHIzLHIzLDMyCisJYmRueiAgICAuLmRfYWcyCisJc3luYworCWJscgorCWZ1bmN0aW9uX2VwaWxvZyhkY2J6X2FyZWEpCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgZGZsdXNoLiAgQXNzdW1lIDMySyBhdCB2ZWN0b3IgYWRkcmVzcyBpcyBjYWNoYWJsZS4KKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwlmdW5jdGlvbl9wcm9sb2coZGZsdXNoKQorCW1mbXNyICAgcjkKKwlybHdpbm0gIHI4LHI5LDAsMTUsMTMKKwlybHdpbm0gIHI4LHI4LDAsMTcsMTUKKwltdG1zciAgIHI4CisJYWRkaSAgICByMyxyMCwweDAwMDAKKwltdHNwciAgIGR2bGltLHIzCisJbWZzcHIgICByMyxpdnByCisJYWRkaSAgICByNCxyMCwxMDI0CisJbXRjdHIgICByNAorLi5kZmx1c2hfbG9vcDoKKwlsd3ogICAgIHI2LDB4MChyMykKKwlhZGRpICAgIHIzLHIzLDMyCisJYmRueiAgICAuLmRmbHVzaF9sb29wCisJYWRkaSAgICByMyxyMywtMzIKKwltdGN0ciAgIHI0CisuLmFnOiAgIGRjYmYgICAgcjAscjMKKwlhZGRpICAgIHIzLHIzLC0zMgorCWJkbnogICAgLi5hZworCXN5bmMKKwltdG1zciAgIHI5CisJYmxyCisJZnVuY3Rpb25fZXBpbG9nKGRmbHVzaCkKKyNlbmRpZiAvKiBDT05GSUdfNDQwICovCiAjZW5kaWYgLyogQ09ORklHX05BTkRfU1BMICovCiAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogRnVuY3Rpb246CSBpbjggKi8KKy8qIERlc2NyaXB0aW9uOgkgSW5wdXQgOCBiaXRzICovCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwkuZ2xvYmwJaW44Citpbjg6CisJbGJ6CXIzLDB4MDAwMChyMykKKwlibHIKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBGdW5jdGlvbjoJIG91dDggKi8KKy8qIERlc2NyaXB0aW9uOgkgT3V0cHV0IDggYml0cyAqLworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisJLmdsb2JsCW91dDgKK291dDg6CisJc3RiCXI0LDB4MDAwMChyMykKKwlibHIKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBGdW5jdGlvbjoJIG91dDMyICovCisvKiBEZXNjcmlwdGlvbjoJIE91dHB1dCAzMiBiaXRzICovCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwkuZ2xvYmwJb3V0MzIKK291dDMyOgorCXN0dwlyNCwweDAwMDAocjMpCisJYmxyCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogRnVuY3Rpb246CSBpbjMyICovCisvKiBEZXNjcmlwdGlvbjoJIElucHV0IDMyIGJpdHMgKi8KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCS5nbG9ibAlpbjMyCitpbjMyOgorCWx3egkzLDB4MDAwMCgzKQorCWJscgogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKiBQUEM0MDVFUCBzcGVjaWZpYyBzdHVmZgkJCQkJCSAgKi8KQEAgLTE4OTIsMTMgKzE5NzksNiBAQAogI2VuZGlmIC8qIENPTkZJR180MDVFUCAqLwogCiAjaWYgZGVmaW5lZChDT05GSUdfNDQwKQotI2RlZmluZSBmdW5jdGlvbl9wcm9sb2coZnVuY19uYW1lKSAgICAgIC50ZXh0OyBcCi0JCQkJCS5hbGlnbiAyOyBcCi0JCQkJCS5nbG9ibCBmdW5jX25hbWU7IFwKLQkJCQkJZnVuY19uYW1lOgotI2RlZmluZSBmdW5jdGlvbl9lcGlsb2coZnVuY19uYW1lKSAgICAgIC50eXBlIGZ1bmNfbmFtZSxAZnVuY3Rpb247IFwKLQkJCQkJLnNpemUgZnVuY19uYW1lLC4tZnVuY19uYW1lCi0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgbXR0bGIzLgogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMTk0Niw0NyArMjAyNiw0IEBACiAJVExCUkUoMywzLDApCiAJYmxyCiAJZnVuY3Rpb25fZXBpbG9nKG1mdGxiMSkKLQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBkY2J6X2FyZWEuCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0JZnVuY3Rpb25fcHJvbG9nKGRjYnpfYXJlYSkKLQlybHdpbm0uIHI1LHI0LDAsMjcsMzEKLQlybHdpbm0gIHI1LHI0LDI3LDUsMzEKLQliZXEgICAgIC4uZF9yYTIKLQlhZGRpICAgIHI1LHI1LDB4MDAwMQotLi5kX3JhMjptdGN0ciAgIHI1Ci0uLmRfYWcyOmRjYnogICAgcjAscjMKLQlhZGRpICAgIHIzLHIzLDMyCi0JYmRueiAgICAuLmRfYWcyCi0Jc3luYwotCWJscgotCWZ1bmN0aW9uX2VwaWxvZyhkY2J6X2FyZWEpCi0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgZGZsdXNoLiAgQXNzdW1lIDMySyBhdCB2ZWN0b3IgYWRkcmVzcyBpcyBjYWNoYWJsZS4KLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLQlmdW5jdGlvbl9wcm9sb2coZGZsdXNoKQotCW1mbXNyICAgcjkKLQlybHdpbm0gIHI4LHI5LDAsMTUsMTMKLQlybHdpbm0gIHI4LHI4LDAsMTcsMTUKLQltdG1zciAgIHI4Ci0JYWRkaSAgICByMyxyMCwweDAwMDAKLQltdHNwciAgIGR2bGltLHIzCi0JbWZzcHIgICByMyxpdnByCi0JYWRkaSAgICByNCxyMCwxMDI0Ci0JbXRjdHIgICByNAotLi5kZmx1c2hfbG9vcDoKLQlsd3ogICAgIHI2LDB4MChyMykKLQlhZGRpICAgIHIzLHIzLDMyCi0JYmRueiAgICAuLmRmbHVzaF9sb29wCi0JYWRkaSAgICByMyxyMywtMzIKLQltdGN0ciAgIHI0Ci0uLmFnOiAgIGRjYmYgICAgcjAscjMKLQlhZGRpICAgIHIzLHIzLC0zMgotCWJkbnogICAgLi5hZwotCXN5bmMKLQltdG1zciAgIHI5Ci0JYmxyCi0JZnVuY3Rpb25fZXBpbG9nKGRmbHVzaCkKICNlbmRpZiAvKiBDT05GSUdfNDQwICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvYmFtYm9vLmggYi9pbmNsdWRlL2NvbmZpZ3MvYmFtYm9vLmgKaW5kZXggZGI1OGE5Zi4uNzYzZDFjNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2JhbWJvby5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9iYW1ib28uaApAQCAtNTAsNyArNTAsNyBAQAogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICNkZWZpbmUgQ0ZHX01PTklUT1JfTEVOCQkoMzg0ICogMTAyNCkJLyogUmVzZXJ2ZSAzODQga0IgZm9yIE1vbml0b3IJKi8KICNkZWZpbmUgQ0ZHX01BTExPQ19MRU4JCSgyNTYgKiAxMDI0KQkvKiBSZXNlcnZlIDI1NiBrQiBmb3IgbWFsbG9jKCkJKi8KLSNkZWZpbmUgQ0ZHX01PTklUT1JfQkFTRQkoLUNGR19NT05JVE9SX0xFTikKKyNkZWZpbmUgQ0ZHX01PTklUT1JfQkFTRQlURVhUX0JBU0UKICNkZWZpbmUgQ0ZHX1NEUkFNX0JBU0UJICAgICAgICAweDAwMDAwMDAwCSAgICAvKiBfbXVzdF8gYmUgMAkqLwogI2RlZmluZSBDRkdfRkxBU0hfQkFTRQkgICAgICAgIDB4ZmZmMDAwMDAJICAgIC8qIHN0YXJ0IG9mIEZMQVNICSovCiAjZGVmaW5lIENGR19QQ0lfTUVNQkFTRQkgICAgICAgIDB4YTAwMDAwMDAJICAgIC8qIG1hcHBlZCBwY2kgbWVtb3J5Ki8KQEAgLTEwNCwxNCArMTA0LDExIEBACiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBFbnZpcm9ubWVudAogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qCi0gKiBEZWZpbmUgaGVyZSB0aGUgbG9jYXRpb24gb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyAoRkxBU0ggb3IgRUVQUk9NKS4KLSAqIE5vdGU6IERFTlggZW5jb3VyYWdlcyB0byB1c2UgcmVkdW5kYW50IGVudmlyb25tZW50IGluIEZMQVNILgotICovCi0jaWYgMQorI2lmICFkZWZpbmVkKENPTkZJR19OQU5EX1VfQk9PVCkgJiYgIWRlZmluZWQoQ09ORklHX05BTkRfU1BMKQogI2RlZmluZSBDRkdfRU5WX0lTX0lOX0ZMQVNIICAgICAxCS8qIHVzZSBGTEFTSCBmb3IgZW52aXJvbm1lbnQgdmFycwkqLwogI2Vsc2UKLSNkZWZpbmUgQ0ZHX0VOVl9JU19JTl9FRVBST00JMQkvKiB1c2UgRUVQUk9NIGZvciBlbnZpcm9ubWVudCB2YXJzCSovCisjZGVmaW5lIENGR19FTlZfSVNfSU5fTkFORAkxCS8qIHVzZSBOQU5EIGZvciBlbnZpcm9ubWVudCB2YXJzCSovCisjZGVmaW5lIENGR19FTlZfSVNfRU1CRURERUQJMQkvKiB1c2UgZW1iZWRkZWQgZW52aXJvbm1lbnQgKi8KICNlbmRpZgogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMzMsNyArMTMwLDcgQEAKIAogI2lmZGVmIENGR19FTlZfSVNfSU5fRkxBU0gKICNkZWZpbmUgQ0ZHX0VOVl9TRUNUX1NJWkUJMHgxMDAwMCAJLyogc2l6ZSBvZiBvbmUgY29tcGxldGUgc2VjdG9yCSovCi0jZGVmaW5lIENGR19FTlZfQUREUgkJKENGR19NT05JVE9SX0JBU0UtQ0ZHX0VOVl9TRUNUX1NJWkUpCisjZGVmaW5lIENGR19FTlZfQUREUgkJKCgtQ0ZHX01PTklUT1JfTEVOKS1DRkdfRU5WX1NFQ1RfU0laRSkKICNkZWZpbmUJQ0ZHX0VOVl9TSVpFCQkweDIwMDAJLyogVG90YWwgU2l6ZSBvZiBFbnZpcm9ubWVudCBTZWN0b3IJKi8KIAogLyogQWRkcmVzcyBhbmQgc2l6ZSBvZiBSZWR1bmRhbnQgRW52aXJvbm1lbnQgU2VjdG9yCSovCkBAIC0xNDEsMjIgKzEzOCw4OSBAQAogI2RlZmluZSBDRkdfRU5WX1NJWkVfUkVEVU5ECShDRkdfRU5WX1NJWkUpCiAjZW5kaWYgLyogQ0ZHX0VOVl9JU19JTl9GTEFTSCAqLwogCisvKgorICogSVBMIChJbml0aWFsIFByb2dyYW0gTG9hZGVyLCBpbnRlZ3JhdGVkIGluc2lkZSBDUFUpCisgKiBXaWxsIGxvYWQgZmlyc3QgNGsgZnJvbSBOQU5EIChTUEwpIGludG8gY2FjaGUgYW5kIGV4ZWN1dGUgaXQgZnJvbSB0aGVyZS4KKyAqCisgKiBTUEwgKFNlY29uZGFyeSBQcm9ncmFtIExvYWRlcikKKyAqIFdpbGwgbG9hZCBzcGVjaWFsIFUtQm9vdCB2ZXJzaW9uIChOVUIpIGZyb20gTkFORCBhbmQgZXhlY3V0ZSBpdC4gVGhpcyBTUEwKKyAqIGhhcyB0byBmaXQgaW50byA0a0J5dGUuIEl0IHNldHMgdXAgdGhlIENQVSBhbmQgY29uZmlndXJlcyB0aGUgU0RSQU0KKyAqIGNvbnRyb2xsZXIgYW5kIHRoZSBOQU5EIGNvbnRyb2xsZXIgc28gdGhhdCB0aGUgc3BlY2lhbCBVLUJvb3QgaW1hZ2UgY2FuIGJlCisgKiBsb2FkZWQgZnJvbSBOQU5EIHRvIFNEUkFNLgorICoKKyAqIE5VQiAoTkFORCBVLUJvb3QpCisgKiBUaGlzIE5BTkQgVS1Cb290IChOVUIpIGlzIGEgc3BlY2lhbCBVLUJvb3QgdmVyc2lvbiB3aGljaCBjYW4gYmUgc3RhcnRlZAorICogZnJvbSBSQU0uIFRoZXJlZm9yZSBpdCBtdXN0bid0IChyZS0pY29uZmlndXJlIHRoZSBTRFJBTSBjb250cm9sbGVyLgorICoKKyAqIE9uIDQ0MEVQeCB0aGUgU1BMIGlzIGNvcGllZCB0byBTRFJBTSBiZWZvcmUgdGhlIE5BTkQgY29udHJvbGxlciBpcworICogc2V0IHVwLiBXaGlsZSBzdGlsbCBydW5uaW5nIGZyb20gY2FjaGUsIEkgZXhwZXJpZW5jZWQgcHJvYmxlbXMgYWNjZXNzaW5nCisgKiB0aGUgTkFORCBjb250cm9sbGVyLglzciAtIDIwMDYtMDgtMjUKKyAqLworI2RlZmluZSBDRkdfTkFORF9CT09UX1NQTF9TUkMJMHhmZmZmZjAwMAkvKiBTUEwgbG9jYXRpb24JCQkqLworI2RlZmluZSBDRkdfTkFORF9CT09UX1NQTF9TSVpFCSg0IDw8IDEwKQkvKiBTUEwgc2l6ZQkJCSovCisjZGVmaW5lIENGR19OQU5EX0JPT1RfU1BMX0RTVAkweDAwODAwMDAwCS8qIENvcHkgU1BMIGhlcmUJCSovCisjZGVmaW5lIENGR19OQU5EX1VfQk9PVF9EU1QJMHgwMTAwMDAwMAkvKiBMb2FkIE5VQiB0byB0aGlzIGFkZHIJKi8KKyNkZWZpbmUgQ0ZHX05BTkRfVV9CT09UX1NUQVJUCUNGR19OQU5EX1VfQk9PVF9EU1QgLyogU3RhcnQgTlVCIGZyb20gdGhpcyBhZGRyCSovCisjZGVmaW5lIENGR19OQU5EX0JPT1RfU1BMX0RFTFRBCShDRkdfTkFORF9CT09UX1NQTF9TUkMgLSBDRkdfTkFORF9CT09UX1NQTF9EU1QpCisKKy8qCisgKiBEZWZpbmUgdGhlIHBhcnRpdGlvbmluZyBvZiB0aGUgTkFORCBjaGlwIChvbmx5IFJBTSBVLUJvb3QgaXMgbmVlZGVkIGhlcmUpCisgKi8KKyNkZWZpbmUgQ0ZHX05BTkRfVV9CT09UX09GRlMJKDE2IDw8IDEwKQkvKiBPZmZzZXQgdG8gUkFNIFUtQm9vdCBpbWFnZQkqLworI2RlZmluZSBDRkdfTkFORF9VX0JPT1RfU0laRQkoMzg0IDw8IDEwKQkvKiBTaXplIG9mIFJBTSBVLUJvb3QgaW1hZ2UJKi8KKworLyoKKyAqIE5vdyB0aGUgTkFORCBjaGlwIGhhcyB0byBiZSBkZWZpbmVkIChubyBhdXRvZGV0ZWN0aW9uIHVzZWQhKQorICovCisjZGVmaW5lIENGR19OQU5EX1BBR0VfU0laRQk1MTIJCS8qIE5BTkQgY2hpcCBwYWdlIHNpemUJCSovCisjZGVmaW5lIENGR19OQU5EX0JMT0NLX1NJWkUJKDE2IDw8IDEwKQkvKiBOQU5EIGNoaXAgYmxvY2sgc2l6ZQkJKi8KKyNkZWZpbmUgQ0ZHX05BTkRfUEFHRV9DT1VOVAkzMgkJLyogTkFORCBjaGlwIHBhZ2UgY291bnQJCSovCisjZGVmaW5lIENGR19OQU5EX0JBRF9CTE9DS19QT1MJNQkJLyogTG9jYXRpb24gb2YgYmFkIGJsb2NrIG1hcmtlcgkqLworI2RlZmluZSBDRkdfTkFORF80X0FERFJfQ1lDTEUJMQkJLyogRm91cnRoIGFkZHIgdXNlZCAoPjMyTUIpCSovCisKKyNkZWZpbmUgQ0ZHX05BTkRfRUNDU0laRQkyNTYKKyNkZWZpbmUgQ0ZHX05BTkRfRUNDQllURVMJMworI2RlZmluZSBDRkdfTkFORF9FQ0NTVEVQUwkoQ0ZHX05BTkRfUEFHRV9TSVpFIC8gQ0ZHX05BTkRfRUNDU0laRSkKKyNkZWZpbmUgQ0ZHX05BTkRfT09CU0laRQkxNgorI2RlZmluZSBDRkdfTkFORF9FQ0NUT1RBTAkoQ0ZHX05BTkRfRUNDQllURVMgKiBDRkdfTkFORF9FQ0NTVEVQUykKKyNkZWZpbmUgQ0ZHX05BTkRfRUNDUE9TCQl7MCwgMSwgMiwgMywgNiwgN30KKworI2lmZGVmIENGR19FTlZfSVNfSU5fTkFORAorLyoKKyAqIEZvciBOQU5EIGJvb3RpbmcgdGhlIGVudmlyb25tZW50IGlzIGVtYmVkZGVkIGluIHRoZSBVLUJvb3QgaW1hZ2UuIFBsZWFzZSB0YWtlCisgKiBsb29rIGF0IHRoZSBmaWxlIGJvYXJkL2FtY2Mvc2VxdW9pYS91LWJvb3QtbmFuZC5sZHMgZm9yIGRldGFpbHMuCisgKi8KKyNkZWZpbmUgQ0ZHX0VOVl9TSVpFCQlDRkdfTkFORF9CTE9DS19TSVpFCisjZGVmaW5lIENGR19FTlZfT0ZGU0VUCQkoQ0ZHX05BTkRfVV9CT09UX09GRlMgKyBDRkdfRU5WX1NJWkUpCisjZGVmaW5lIENGR19FTlZfT0ZGU0VUX1JFRFVORAkoQ0ZHX0VOVl9PRkZTRVQgKyBDRkdfRU5WX1NJWkUpCisjZW5kaWYKKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogTkFORCBGTEFTSAogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLSNkZWZpbmUgQ0ZHX01BWF9OQU5EX0RFVklDRQkxCi0jZGVmaW5lIE5BTkRfTUFYX0NISVBTCQkxCi0jZGVmaW5lIENGR19OQU5EX0NTCQkxCisjZGVmaW5lIENGR19NQVhfTkFORF9ERVZJQ0UJMgorI2RlZmluZSBOQU5EX01BWF9DSElQUwkJQ0ZHX01BWF9OQU5EX0RFVklDRQogI2RlZmluZSBDRkdfTkFORF9CQVNFCQkoQ0ZHX05BTkRfQUREUiArIENGR19OQU5EX0NTKQorI2RlZmluZSBDRkdfTkFORF9CQVNFX0xJU1QJeyBDRkdfTkFORF9CQVNFLCBDRkdfTkFORF9BRERSICsgMiB9CiAjZGVmaW5lIENGR19OQU5EX1NFTEVDVF9ERVZJQ0UgIDEJLyogbmFuZCBkcml2ZXIgc3VwcG9ydHMgbXV0aXBsLiBjaGlwcwkqLwogCisjaWYgIWRlZmluZWQoQ09ORklHX05BTkRfVV9CT09UKSAmJiAhZGVmaW5lZChDT05GSUdfTkFORF9TUEwpCisjZGVmaW5lIENGR19OQU5EX0NTCQkxCisjZWxzZQorI2RlZmluZSBDRkdfTkFORF9DUwkJMAkJLyogTkFORCBjaGlwIGNvbm5lY3RlZCB0byBDU3gJKi8KKy8qIE1lbW9yeSBCYW5rIDAgKE5BTkQtRkxBU0gpIGluaXRpYWxpemF0aW9uCQkJCQkqLworI2RlZmluZSBDRkdfRUJDX1BCMEFQCQkweDAxODAwM2MwCisjZGVmaW5lIENGR19FQkNfUEIwQ1IJCShDRkdfTkFORF9BRERSIHwgMHgxYzAwMCkKKyNlbmRpZgorCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBERFIgU0RSQU0KICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KICNkZWZpbmUgQ09ORklHX1NQRF9FRVBST00gICAgICAgICAgICAgICAvKiBVc2UgU1BEIEVFUFJPTSBmb3Igc2V0dXAgICAgICAgICAgICAgKi8KICN1bmRlZiBDT05GSUdfRERSX0VDQwkJCS8qIGRvbid0IHVzZSBFQ0MJCQkqLwogI2RlZmluZSBDRkdfU0lNVUxBVEVfU1BEX0VFUFJPTQkweGZmCS8qIHNpbXVsYXRlIHNwZCBlZXByb20gb24gdGhpcyBhZGRyZXNzCSovCi0jZGVmaW5lIFNQRF9FRVBST01fQUREUkVTUyAgICAgIHtDRkdfU0lNVUxBVEVfU1BEX0VFUFJPTSwgMHg1MCwgMHg1MX0KKyNkZWZpbmUgU1BEX0VFUFJPTV9BRERSRVNTCXtDRkdfU0lNVUxBVEVfU1BEX0VFUFJPTSwgMHg1MCwgMHg1MX0KKyNkZWZpbmUgQ0ZHX01CWVRFU19TRFJBTQkoNjQpCS8qIDY0TUIgZml4ZWQgc2l6ZSBmb3IgZWFybHktc2RyYW0taW5pdCAqLwogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBJMkMKZGlmZiAtLWdpdCBhL25hbmRfc3BsL2JvYXJkL2FtY2MvYmFtYm9vL01ha2VmaWxlIGIvbmFuZF9zcGwvYm9hcmQvYW1jYy9iYW1ib28vTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRmODZmOQotLS0gL2Rldi9udWxsCisrKyBiL25hbmRfc3BsL2JvYXJkL2FtY2MvYmFtYm9vL01ha2VmaWxlCkBAIC0wLDAgKzEsMTAwIEBACisjCisjIChDKSBDb3B5cmlnaHQgMjAwNworIyBTdGVmYW4gUm9lc2UsIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHNyQGRlbnguZGUuCisjCisjIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisjIHByb2plY3QuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyMgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisjIE1BIDAyMTExLTEzMDcgVVNBCisjCisKK2luY2x1ZGUgJChUT1BESVIpL2NvbmZpZy5taworaW5jbHVkZSAkKFRPUERJUikvbmFuZF9zcGwvYm9hcmQvJChCT0FSRERJUikvY29uZmlnLm1rCisKK0xEU0NSSVBUPSAkKFRPUERJUikvbmFuZF9zcGwvYm9hcmQvJChCT0FSRERJUikvdS1ib290LmxkcworTERGTEFHUwk9IC1Cc3RhdGljIC1UICQoTERTQ1JJUFQpIC1UdGV4dCAkKFRFWFRfQkFTRSkgJChQTEFURk9STV9MREZMQUdTKQorQUZMQUdTCSs9IC1EQ09ORklHX05BTkRfU1BMCitDRkxBR1MJKz0gLURDT05GSUdfTkFORF9TUEwKKworU09CSlMJPSBzdGFydC5vIGluaXQubyByZXNldHZlYy5vCitDT0JKUwk9IG5hbmRfYm9vdC5vIG5hbmRfZWNjLm8gbmRmYy5vIHNkcmFtLm8KKworU1JDUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChTT0JKUzoubz0uUykgJChDT0JKUzoubz0uYykpCitPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKFNPQkpTKSAkKENPQkpTKSkKK19fT0JKUwk6PSAkKFNPQkpTKSAkKENPQkpTKQorTE5ESVIJOj0gJChPQkpUUkVFKS9uYW5kX3NwbC9ib2FyZC8kKEJPQVJERElSKQorCituYW5kb2JqCTo9ICQoT0JKVFJFRSkvbmFuZF9zcGwvCisKK0FMTAk9ICQobmFuZG9iail1LWJvb3Qtc3BsICQobmFuZG9iail1LWJvb3Qtc3BsLmJpbiAkKG5hbmRvYmopdS1ib290LXNwbC0xNmsuYmluCisKK2FsbDoJJChvYmopLmRlcGVuZCAkKEFMTCkKKworJChuYW5kb2JqKXUtYm9vdC1zcGwtMTZrLmJpbjogJChuYW5kb2JqKXUtYm9vdC1zcGwKKwkkKE9CSkNPUFkpICR7T0JKQ0ZMQUdTfSAtLXBhZC10bz0kKFBBRF9UTykgLU8gYmluYXJ5ICQ8ICRACisKKyQobmFuZG9iail1LWJvb3Qtc3BsLmJpbjoJJChuYW5kb2JqKXUtYm9vdC1zcGwKKwkkKE9CSkNPUFkpICR7T0JKQ0ZMQUdTfSAtTyBiaW5hcnkgJDwgJEAKKworJChuYW5kb2JqKXUtYm9vdC1zcGw6CSQoT0JKUykKKwljZCAkKExORElSKSAmJiAkKExEKSAkKExERkxBR1MpICQkVU5ERUZfU1lNICQoX19PQkpTKSBcCisJCS1NYXAgJChuYW5kb2JqKXUtYm9vdC1zcGwubWFwIFwKKwkJLW8gJChuYW5kb2JqKXUtYm9vdC1zcGwKKworIyBjcmVhdGUgc3ltYm9saWMgbGlua3MgZm9yIGNvbW1vbiBmaWxlcworCisjIGZyb20gY3B1IGRpcmVjdG9yeQorJChvYmopbmRmYy5jOgorCUBybSAtZiAkKG9iailuZGZjLmMKKwlsbiAtcyAkKFNSQ1RSRUUpL2NwdS9wcGM0eHgvbmRmYy5jICQob2JqKW5kZmMuYworCiskKG9iailyZXNldHZlYy5TOgorCUBybSAtZiAkKG9iailyZXNldHZlYy5TCisJbG4gLXMgJChTUkNUUkVFKS9jcHUvcHBjNHh4L3Jlc2V0dmVjLlMgJChvYmopcmVzZXR2ZWMuUworCiskKG9iailzdGFydC5TOgorCUBybSAtZiAkKG9iailzdGFydC5TCisJbG4gLXMgJChTUkNUUkVFKS9jcHUvcHBjNHh4L3N0YXJ0LlMgJChvYmopc3RhcnQuUworCisjIGZyb20gYm9hcmQgZGlyZWN0b3J5CiskKG9iailpbml0LlM6CisJQHJtIC1mICQob2JqKWluaXQuUworCWxuIC1zICQoU1JDVFJFRSkvYm9hcmQvYW1jYy9iYW1ib28vaW5pdC5TICQob2JqKWluaXQuUworCisjIGZyb20gbmFuZF9zcGwgZGlyZWN0b3J5CiskKG9iailuYW5kX2Jvb3QuYzoKKwlAcm0gLWYgJChvYmopbmFuZF9ib290LmMKKwlsbiAtcyAkKFNSQ1RSRUUpL25hbmRfc3BsL25hbmRfYm9vdC5jICQob2JqKW5hbmRfYm9vdC5jCisKKyMgZnJvbSBkcml2ZXJzL25hbmQgZGlyZWN0b3J5CiskKG9iailuYW5kX2VjYy5jOgorCUBybSAtZiAkKG9iailuYW5kX2VjYy5jCisJbG4gLXMgJChTUkNUUkVFKS9kcml2ZXJzL25hbmQvbmFuZF9lY2MuYyAkKG9iailuYW5kX2VjYy5jCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworJChvYmopJS5vOgkkKG9iaiklLlMKKwkkKENDKSAkKEFGTEFHUykgLWMgLW8gJEAgJDwKKworJChvYmopJS5vOgkkKG9iaiklLmMKKwkkKENDKSAkKENGTEFHUykgLWMgLW8gJEAgJDwKKworIyBkZWZpbmVzICQob2JqKS5kZXBlbmQgdGFyZ2V0CitpbmNsdWRlICQoU1JDVFJFRSkvcnVsZXMubWsKKworc2luY2x1ZGUgJChvYmopLmRlcGVuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9uYW5kX3NwbC9ib2FyZC9hbWNjL2JhbWJvby9jb25maWcubWsgYi9uYW5kX3NwbC9ib2FyZC9hbWNjL2JhbWJvby9jb25maWcubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdlYzc1MQotLS0gL2Rldi9udWxsCisrKyBiL25hbmRfc3BsL2JvYXJkL2FtY2MvYmFtYm9vL2NvbmZpZy5tawpAQCAtMCwwICsxLDQ5IEBACisjCisjIChDKSBDb3B5cmlnaHQgMjAwNworIyBTdGVmYW4gUm9lc2UsIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHNyQGRlbnguZGUuCisjCisjIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisjIHByb2plY3QuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyMgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisjIE1BIDAyMTExLTEzMDcgVVNBCisjCisjCisjIEFNQ0MgNDQwRVAgUmVmZXJlbmNlIFBsYXRmb3JtIChCYW1ib28pIGJvYXJkCisjCisKKyMKKyMgVEVYVF9CQVNFIGZvciBTUEw6CisjCisjIE9uIDQ0MEVQKHgpIHBsYXRmb3JtcyB0aGUgU1BMIGlzIGxvY2F0ZWQgYXQgMHhmZmZmZjAwMC4uLjB4ZmZmZmZmZmYsCisjIGluIHRoZSBsYXN0IDRrQnl0ZXMgb2YgbWVtb3J5IHNwYWNlIGluIGNhY2hlLgorIyBXZSB3aWxsIGNvcHkgdGhpcyBTUEwgaW50byBpbnN0cnVjdGlvbi1jYWNoZSBpbiBzdGFydC5TLiBTbyB3ZSBzZXQKKyMgVEVYVF9CQVNFIHRvIHN0YXJ0aW5nIGFkZHJlc3MgaW4gaS1jYWNoZSBoZXJlLgorIworVEVYVF9CQVNFID0gMHgwMDgwMDAwMAorCisjIFBBRF9UTyB1c2VkIHRvIGdlbmVyYXRlIGEgMTZrQnl0ZSBiaW5hcnkgbmVlZGVkIGZvciB0aGUgY29tYmluZWQgaW1hZ2UKKyMgLT4gUEFEX1RPID0gVEVYVF9CQVNFICsgMHg0MDAwCitQQURfVE8JPSAweDAwODA0MDAwCisKK1BMQVRGT1JNX0NQUEZMQUdTICs9IC1EQ09ORklHXzQ0MD0xCisKK2lmZXEgKCQoZGVidWcpLDEpCitQTEFURk9STV9DUFBGTEFHUyArPSAtRERFQlVHCitlbmRpZgorCitpZmVxICgkKGRiY3IpLDEpCitQTEFURk9STV9DUFBGTEFHUyArPSAtRENGR19JTklUX0RCQ1I9MHg4Y2ZmMDAwMAorZW5kaWYKZGlmZiAtLWdpdCBhL25hbmRfc3BsL2JvYXJkL2FtY2MvYmFtYm9vL3NkcmFtLmMgYi9uYW5kX3NwbC9ib2FyZC9hbWNjL2JhbWJvby9zZHJhbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmMDkwNzIKLS0tIC9kZXYvbnVsbAorKysgYi9uYW5kX3NwbC9ib2FyZC9hbWNjL2JhbWJvby9zZHJhbS5jCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDcKKyAqIFN0ZWZhbiBSb2VzZSwgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgc3JAZGVueC5kZS4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8cHBjNHh4Lmg+CisjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorCitzdGF0aWMgdm9pZCB3YWl0X2luaXRfY29tcGxldGUodm9pZCkKK3sKKwl1MzIgdmFsOworCisJZG8geworCQltZnNkcmFtKG1lbV9tY3N0cywgdmFsKTsKKwl9IHdoaWxlICghKHZhbCAmIDB4ODAwMDAwMDApKTsKK30KKworLyoKKyAqIGVhcmx5X3NkcmFtX2luaXQoKQorICoKKyAqIEFzIHRoZSBuYW1lIGFscmVhZHkgaW5kaWNhdGVzLCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB2ZXJ5IGVhcmx5CisgKiBmcm9tIHN0YXJ0LlMgYW5kIGNvbmZpZ3VyZXMgdGhlIFNEUkFNIHdpdGggZml4ZWQgdmFsdWVzLiBUaGlzIGlzIG5lZWRlZCwKKyAqIHNpbmNlIHRoZSA0NDBFUCBoYXMgbm8gaW50ZXJuYWwgU1JBTSBhbmQgdGhlIDRrQiBOQU5EX1NQTCBsb2FkZXIgaGFzCisgKiBub3QgZW5vdWdoIGZyZWUgc3BhY2UgdG8gaW1wbGVtZW50IHRoZSBjb21wbGV0ZSBJMkMgU1BEIEREUiBhdXRvZGV0ZWN0aW9uCisgKiByb3V0aW5lcy4gVGhlcmVmb3JlIHRoZSBCYW1ib28gb25seSBzdXBwb3J0cyB0aGUgb25ib2FyZCA2NE1CeXRlcyBvZiBTRFJBTQorICogd2hlbiBib290aW5nIGZyb20gTkFORCBmbGFzaC4KKyAqLwordm9pZCBlYXJseV9zZHJhbV9pbml0KHZvaWQpCit7CisJLyoKKwkgKiBTb2Z0LXJlc2V0IFNEUkFNIGNvbnRyb2xsZXIuCisJICovCisJbXRzZHIoc2RyX3Nyc3QsIFNEUjBfU1JTVF9ETUMpOworCW10c2RyKHNkcl9zcnN0LCAweDAwMDAwMDAwKTsKKworCS8qCisJICogRGlzYWJsZSBtZW1vcnkgY29udHJvbGxlci4KKwkgKi8KKwltdHNkcmFtKG1lbV9jZmcwLCAweDAwMDAwMDAwKTsKKworCS8qCisJICogU2V0dXAgc29tZSBkZWZhdWx0CisJICovCisJbXRzZHJhbShtZW1fdWFiYmEsIDB4MDAwMDAwMDApOyAvKiB1YmJhPTAgKGRlZmF1bHQpCQkqLworCW10c2RyYW0obWVtX3NsaW8sIDB4MDAwMDAwMDApOwkvKiByZHJlPTAgd3JyZT0wIHJhcnc9MAkJKi8KKwltdHNkcmFtKG1lbV9kZXZvcHQsIDB4MDAwMDAwMDApOyAvKiBkbGw9MCBkcz0wIChub3JtYWwpCQkqLworCW10c2RyYW0obWVtX3dkZGN0ciwgMHgwMDAwMDAwMCk7IC8qIHdyY3A9MCBkY2Q9MAkJKi8KKwltdHNkcmFtKG1lbV9jbGt0ciwgMHg0MDAwMDAwMCk7IC8qIGNsa3A9MSAoOTAgZGVnIHdyKSBkY2R0PTAJKi8KKworCS8qCisJICogRm9sbG93aW5nIGZvciBDQVMgTGF0ZW5jeSA9IDIuNSBAIDEzMyBNSHogUExCCisJICovCisJbXRzZHJhbShtZW1fYjBjciwgMHgwMDA4MjAwMSk7CisJbXRzZHJhbShtZW1fdHIwLCAweDQxMDk0MDEyKTsKKwltdHNkcmFtKG1lbV90cjEsIDB4ODA4MDA4M2QpOwkvKiBTUz1UMiBTTD1TVEFHRSAzIENEPTEgQ1Q9MHgwMCovCisJbXRzZHJhbShtZW1fcnRyLCAweDA0MTAwMDAwKTsJLyogSW50ZXJ2YWwgNy44tXMgQCAxMzNNSHogUExCCSovCisJbXRzZHJhbShtZW1fY2ZnMSwgMHgwMDAwMDAwMCk7CS8qIFNlbGYtcmVmcmVzaCBleGl0LCBkaXNhYmxlIFBNKi8KKworCS8qCisJICogRW5hYmxlIHRoZSBjb250cm9sbGVyLCB0aGVuIHdhaXQgZm9yIERDRU4gdG8gY29tcGxldGUKKwkgKi8KKwltdHNkcmFtKG1lbV9jZmcwLCAweDgwMDAwMDAwKTsgLyogRENFTj0xLCBQTVVEPTAqLworCXdhaXRfaW5pdF9jb21wbGV0ZSgpOworfQorCitsb25nIGludCBpbml0ZHJhbShpbnQgYm9hcmRfdHlwZSkKK3sKKwkvKgorCSAqIE5vdGhpbmcgdG8gZG8gaGVyZSwganVzdCByZXR1cm4gc2l6ZSBvZiBmaXhlZCBTRFJBTSBzZXR1cAorCSAqLworCXJldHVybiBDRkdfTUJZVEVTX1NEUkFNIDw8IDIwOworfQpkaWZmIC0tZ2l0IGEvbmFuZF9zcGwvYm9hcmQvYW1jYy9iYW1ib28vdS1ib290LmxkcyBiL25hbmRfc3BsL2JvYXJkL2FtY2MvYmFtYm9vL3UtYm9vdC5sZHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjgyMjhmOAotLS0gL2Rldi9udWxsCisrKyBiL25hbmRfc3BsL2JvYXJkL2FtY2MvYmFtYm9vL3UtYm9vdC5sZHMKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwNworICogU3RlZmFuIFJvZXNlLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCBzckBkZW54LmRlLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKK09VVFBVVF9BUkNIKHBvd2VycGM6Y29tbW9uKQorU0VDVElPTlMKK3sKKyAgLnJlc2V0dmVjIDB4MDA4MDBGRkMgOgorICB7CisgICAgKigucmVzZXR2ZWMpCisgIH0gPSAweGZmZmYKKworICAudGV4dCAgICAgIDoKKyAgeworICAgIHN0YXJ0Lm8JKC50ZXh0KQorICAgIGluaXQubwkoLnRleHQpCisgICAgbmFuZF9ib290Lm8JKC50ZXh0KQorICAgIHNkcmFtLm8JKC50ZXh0KQorICAgIG5kZmMubwkoLnRleHQpCisKKyAgICAqKC50ZXh0KQorICAgICooLmZpeHVwKQorICB9CisgIF9ldGV4dCA9IC47CisKKyAgLmRhdGEgICAgOgorICB7CisgICAgKigucm9kYXRhKikKKyAgICAqKC5kYXRhKikKKyAgICAqKC5zZGF0YSopCisgICAgX19nb3QyX3N0YXJ0ID0gLjsKKyAgICAqKC5nb3QyKQorICAgIF9fZ290Ml9lbmQgPSAuOworICB9CisKKyAgX2VkYXRhICA9ICAuOworCisgIF9fYnNzX3N0YXJ0ID0gLjsKKyAgLmJzcyAgICAgICA6CisgIHsKKyAgICooLnNic3MpCisgICAqKC5ic3MpCisgIH0KKworICBfZW5kID0gLiA7Cit9Cg==